diff --git a/packages/commonjs/src/helpers.js b/packages/commonjs/src/helpers.js index e75841556..be25fbbd5 100644 --- a/packages/commonjs/src/helpers.js +++ b/packages/commonjs/src/helpers.js @@ -35,6 +35,7 @@ export function getDefaultExportFromNamespaceIfNotNamed (n) { } export function getAugmentedNamespace(n) { + if (n.__esModule) return n; var f = n.default; if (typeof f == "function") { var a = function a () { diff --git a/packages/commonjs/test/snapshots/function.js.md b/packages/commonjs/test/snapshots/function.js.md index e01a4cfeb..f3d4c2c0f 100644 --- a/packages/commonjs/test/snapshots/function.js.md +++ b/packages/commonjs/test/snapshots/function.js.md @@ -3491,6 +3491,7 @@ Generated by [AVA](https://avajs.dev). var externalEsmDefault__namespace = /*#__PURE__*/_interopNamespaceCompat(externalEsmDefault);␊ ␊ function getAugmentedNamespace(n) {␊ + if (n.__esModule) return n;␊ var f = n.default;␊ if (typeof f == "function") {␊ var a = function a () {␊ @@ -3577,6 +3578,7 @@ Generated by [AVA](https://avajs.dev). var externalEsmDefault__namespace = /*#__PURE__*/_interopNamespaceCompat(externalEsmDefault);␊ ␊ function getAugmentedNamespace(n) {␊ + if (n.__esModule) return n;␊ var f = n.default;␊ if (typeof f == "function") {␊ var a = function a () {␊ @@ -3657,6 +3659,7 @@ Generated by [AVA](https://avajs.dev). var externalEsmDefault__namespace = /*#__PURE__*/_interopNamespaceCompat(externalEsmDefault);␊ ␊ function getAugmentedNamespace(n) {␊ + if (n.__esModule) return n;␊ var f = n.default;␊ if (typeof f == "function") {␊ var a = function a () {␊ @@ -3750,6 +3753,7 @@ Generated by [AVA](https://avajs.dev). 'main.js': `'use strict';␊ ␊ function getAugmentedNamespace(n) {␊ + if (n.__esModule) return n;␊ var f = n.default;␊ if (typeof f == "function") {␊ var a = function a () {␊ @@ -3957,6 +3961,7 @@ Generated by [AVA](https://avajs.dev). 'main.js': `'use strict';␊ ␊ function getAugmentedNamespace(n) {␊ + if (n.__esModule) return n;␊ var f = n.default;␊ if (typeof f == "function") {␊ var a = function a () {␊ @@ -4187,6 +4192,7 @@ Generated by [AVA](https://avajs.dev). var externalEsmDefault__namespace = /*#__PURE__*/_interopNamespaceCompat(externalEsmDefault);␊ ␊ function getAugmentedNamespace(n) {␊ + if (n.__esModule) return n;␊ var f = n.default;␊ if (typeof f == "function") {␊ var a = function a () {␊ @@ -4289,6 +4295,7 @@ Generated by [AVA](https://avajs.dev). 'main.js': `'use strict';␊ ␊ function getAugmentedNamespace(n) {␊ + if (n.__esModule) return n;␊ var f = n.default;␊ if (typeof f == "function") {␊ var a = function a () {␊ @@ -4482,6 +4489,7 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ function getAugmentedNamespace(n) {␊ + if (n.__esModule) return n;␊ var f = n.default;␊ if (typeof f == "function") {␊ var a = function a () {␊ @@ -4760,6 +4768,7 @@ Generated by [AVA](https://avajs.dev). var externalEsmDefault__namespace = /*#__PURE__*/_interopNamespaceCompat(externalEsmDefault);␊ ␊ function getAugmentedNamespace(n) {␊ + if (n.__esModule) return n;␊ var f = n.default;␊ if (typeof f == "function") {␊ var a = function a () {␊ @@ -4854,6 +4863,7 @@ Generated by [AVA](https://avajs.dev). 'main.js': `'use strict';␊ ␊ function getAugmentedNamespace(n) {␊ + if (n.__esModule) return n;␊ var f = n.default;␊ if (typeof f == "function") {␊ var a = function a () {␊ @@ -6163,6 +6173,7 @@ Generated by [AVA](https://avajs.dev). 'main.js': `'use strict';␊ ␊ function getAugmentedNamespace(n) {␊ + if (n.__esModule) return n;␊ var f = n.default;␊ if (typeof f == "function") {␊ var a = function a () {␊ @@ -6214,6 +6225,7 @@ Generated by [AVA](https://avajs.dev). 'main.js': `'use strict';␊ ␊ function getAugmentedNamespace(n) {␊ + if (n.__esModule) return n;␊ var f = n.default;␊ if (typeof f == "function") {␊ var a = function a () {␊ @@ -7167,6 +7179,7 @@ Generated by [AVA](https://avajs.dev). 'main.js': `'use strict';␊ ␊ function getAugmentedNamespace(n) {␊ + if (n.__esModule) return n;␊ var f = n.default;␊ if (typeof f == "function") {␊ var a = function a () {␊ diff --git a/packages/commonjs/test/snapshots/function.js.snap b/packages/commonjs/test/snapshots/function.js.snap index c004e1f6b..afa7ef9d8 100644 Binary files a/packages/commonjs/test/snapshots/function.js.snap and b/packages/commonjs/test/snapshots/function.js.snap differ diff --git a/packages/commonjs/test/snapshots/test.js.md b/packages/commonjs/test/snapshots/test.js.md index 706386cd0..0dab2cd1b 100644 --- a/packages/commonjs/test/snapshots/test.js.md +++ b/packages/commonjs/test/snapshots/test.js.md @@ -42,6 +42,7 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ function getAugmentedNamespace(n) {␊ + if (n.__esModule) return n;␊ var f = n.default;␊ if (typeof f == "function") {␊ var a = function a () {␊ @@ -199,6 +200,7 @@ Generated by [AVA](https://avajs.dev). `'use strict';␊ ␊ function getAugmentedNamespace(n) {␊ + if (n.__esModule) return n;␊ var f = n.default;␊ if (typeof f == "function") {␊ var a = function a () {␊ @@ -279,6 +281,7 @@ Generated by [AVA](https://avajs.dev). `'use strict';␊ ␊ function getAugmentedNamespace(n) {␊ + if (n.__esModule) return n;␊ var f = n.default;␊ if (typeof f == "function") {␊ var a = function a () {␊ diff --git a/packages/commonjs/test/snapshots/test.js.snap b/packages/commonjs/test/snapshots/test.js.snap index 850d912ad..c7ff770ef 100644 Binary files a/packages/commonjs/test/snapshots/test.js.snap and b/packages/commonjs/test/snapshots/test.js.snap differ diff --git a/packages/commonjs/test/test.js b/packages/commonjs/test/test.js index 44234545b..d09573739 100644 --- a/packages/commonjs/test/test.js +++ b/packages/commonjs/test/test.js @@ -2,6 +2,7 @@ const os = require('os'); const path = require('path'); +const vm = require('vm'); const { nodeResolve } = require('@rollup/plugin-node-resolve'); const test = require('ava'); @@ -598,6 +599,33 @@ test('produces optimized code when importing esm without a default export', asyn t.snapshot(await getCodeFromBundle(bundle)); }); +test('produces working code when importing esm with __esModule property set', async (t) => { + const bundle = await rollup({ + input: 'main.js', + plugins: [ + commonjs(), + loader({ + 'main.js': 'const {y} = require("withEsModule.js"); module.exports = y + 1;', + 'withEsModule.js': 'export const y = 1; export const __esModule=true;' + }) + ] + }); + const name = 'bundleExecutionResult'; + const code = await getCodeFromBundle(bundle, { + format: 'iife', + name + }); + + const context = {}; + vm.createContext(context); + vm.runInContext(code, context); + t.is( + context[name], + 2, + `Expected to get 2, but got ${context[name]} after running bundled code: \n${code}` + ); +}); + test('handles array destructuring assignment', async (t) => { const bundle = await rollup({ input: 'fixtures/samples/array-destructuring-assignment/main.js',