From 05d578a1c1baca0e860ad71db6a5690a5ea82e82 Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Thu, 15 Oct 2020 19:13:40 +0200 Subject: [PATCH] Add module toStringTag to entries and interop namespaces (#3822) * Add __esModule marker to IIFE, add namespaceToStringTag to entry points * Add toStringTag to dynamic entries and interop helpers --- src/Chunk.ts | 3 +- src/finalisers/amd.ts | 24 ++++++--- src/finalisers/cjs.ts | 33 ++++++++---- src/finalisers/iife.ts | 17 ++++++- src/finalisers/index.ts | 3 +- src/finalisers/shared/esModuleExport.ts | 2 - src/finalisers/shared/getExportBlock.ts | 32 +++++++++++- src/finalisers/shared/getInteropBlock.ts | 4 +- src/finalisers/umd.ts | 21 +++++--- src/utils/interopHelpers.ts | 51 +++++++++++++++---- .../dynamic-import-default-mode/_config.js | 10 ++++ .../_expected/amd/foo.js | 7 +++ .../_expected/amd/main.js | 9 ++++ .../_expected/cjs/foo.js | 5 ++ .../_expected/cjs/main.js | 7 +++ .../_expected/es/foo.js | 3 ++ .../_expected/es/main.js | 1 + .../_expected/system/foo.js | 10 ++++ .../_expected/system/main.js | 10 ++++ .../dynamic-import-default-mode/foo.js | 1 + .../dynamic-import-default-mode/main.js | 1 + .../dynamic-import}/_config.js | 2 +- .../_expected/amd/generated-foo.js | 9 ++++ .../dynamic-import/_expected/amd/main.js | 5 ++ .../_expected/cjs/generated-foo.js | 7 +++ .../dynamic-import/_expected/cjs/main.js | 3 ++ .../_expected/es/generated-foo.js | 3 ++ .../dynamic-import/_expected/es/main.js | 1 + .../_expected/system/generated-foo.js | 10 ++++ .../dynamic-import/_expected/system/main.js | 10 ++++ .../namespace-tostring/dynamic-import}/foo.js | 0 .../namespace-tostring/dynamic-import/main.js | 1 + .../samples/format-aliases/_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../assignment-to-exports/_expected/iife.js | 2 + .../compact-named-export/_expected/iife.js | 2 +- .../computed-properties/_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../interop-false-reexport/_expected/iife.js | 2 + .../export-all-before-named/_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../export-all-multiple/_expected/iife.js | 2 + .../export-default-import/_expected/iife.js | 2 + .../samples/export-globals/_expected/iife.js | 2 + .../export-live-bindings/_expected/iife.js | 2 + .../export-namespace-as/_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../samples/extend-exports/_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../external-deshadowing/_expected/iife.js | 2 + .../external-export-tracing/_expected/iife.js | 2 + .../_expected/iife.js | 2 + test/form/samples/freeze/_expected/iife.js | 2 + .../function-mutation/_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../_expected/iife.js | 2 + test/form/samples/mjs/_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../samples/module-name-wat/_expected/iife.js | 2 + .../module-name-with-dashes/_expected/iife.js | 2 + .../multiple-exports/_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../namespace-self-import/_expected/iife.js | 2 + .../entry-default/_config.js | 10 ++++ .../entry-default/_expected/amd.js | 7 +++ .../entry-default/_expected/cjs.js | 5 ++ .../entry-default/_expected/es.js | 3 ++ .../entry-default/_expected/iife.js | 8 +++ .../entry-default/_expected/system.js | 10 ++++ .../entry-default/_expected/umd.js | 11 ++++ .../namespace-tostring/entry-default/main.js | 1 + .../namespace-tostring/entry-named/_config.js | 10 ++++ .../entry-named/_expected/amd.js | 10 ++++ .../entry-named/_expected/cjs.js | 8 +++ .../entry-named/_expected/es.js | 3 ++ .../entry-named/_expected/iife.js | 13 +++++ .../entry-named/_expected/system.js | 10 ++++ .../entry-named}/_expected/umd.js | 15 ++---- .../namespace-tostring/entry-named/main.js | 1 + .../external-namespaces/_config.js | 28 ++++++++++ .../external-namespaces/_expected/amd.js | 46 +++++++++++++++++ .../external-namespaces/_expected/cjs.js | 48 +++++++++++++++++ .../external-namespaces/_expected/es.js | 18 +++++++ .../external-namespaces/_expected/iife.js | 47 +++++++++++++++++ .../external-namespaces/_expected/system.js | 31 +++++++++++ .../external-namespaces/_expected/umd.js | 50 ++++++++++++++++++ .../external-namespaces/main.js | 15 ++++++ .../inlined-namespace/_config.js | 8 +++ .../inlined-namespace/_expected/amd.js | 15 ++++++ .../inlined-namespace/_expected/cjs.js | 13 +++++ .../inlined-namespace/_expected/es.js | 11 ++++ .../inlined-namespace/_expected/iife.js | 16 ++++++ .../inlined-namespace/_expected/system.js | 20 ++++++++ .../inlined-namespace/_expected/umd.js | 18 +++++++ .../inlined-namespace/foo.js | 1 + .../inlined-namespace/main.js | 5 ++ .../samples/namespace-tostringtag/_config.js | 10 ---- .../namespace-tostringtag/_expected/amd.js | 17 ------- .../namespace-tostringtag/_expected/cjs.js | 15 ------ .../namespace-tostringtag/_expected/es.js | 11 ---- .../namespace-tostringtag/_expected/iife.js | 18 ------- .../namespace-tostringtag/_expected/system.js | 18 ------- .../samples/namespace-tostringtag/main.js | 5 -- .../_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../_expected/iife.js | 2 +- .../_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../output-named-library/_expected/iife.js | 2 + .../pattern-assignments/_expected/iife.js | 2 + .../_expected/iife.js | 2 + test/form/samples/promises/_expected/iife.js | 2 + .../protect-cjs-globals/_expected/iife.js | 2 + .../re-export-aliasing/_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../reexport-external-name/_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../side-effects-delete/_expected/iife.js | 2 + .../_expected/amd.js.map | 2 +- .../_expected/umd.js.map | 2 +- .../sourcemaps-external/_expected/amd.js.map | 2 +- .../sourcemaps-external/_expected/umd.js.map | 2 +- .../sourcemaps-hidden/_expected/amd.js.map | 2 +- .../sourcemaps-hidden/_expected/umd.js.map | 2 +- .../sourcemaps-inline/_expected/amd.js | 2 +- .../sourcemaps-inline/_expected/umd.js | 2 +- .../umd-noconflict-extend/_expected/iife.js | 2 + .../_expected/iife.js | 2 + .../samples/umd-noconflict/_expected/iife.js | 2 + .../updating-assignments/_expected/iife.js | 2 + .../deconflicts-interop-boolean/_config.js | 4 +- .../dynamic-import-default-mode/_config.js | 18 +++++++ .../dynamic-import-default-mode/foo.js | 1 + .../dynamic-import-default-mode/main.js | 1 + .../dynamic-import/_config.js | 16 ++++++ .../namespace-tostring/dynamic-import/foo.js | 1 + .../namespace-tostring/dynamic-import/main.js | 1 + .../entry-default/_config.js | 16 ++++++ .../namespace-tostring/entry-default/main.js | 1 + .../namespace-tostring/entry-named/_config.js | 16 ++++++ .../namespace-tostring/entry-named/main.js | 1 + .../external-namespaces/_config.js | 28 ++++++++++ .../external-namespaces/main.js | 15 ++++++ .../inlined-namespace/_config.js | 8 +++ .../inlined-namespace/foo.js | 1 + .../inlined-namespace/main.js | 5 ++ .../samples/namespace-tostring/main.js | 4 -- test/misc/iife.js | 4 +- 161 files changed, 1031 insertions(+), 166 deletions(-) delete mode 100644 src/finalisers/shared/esModuleExport.ts create mode 100644 test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_config.js create mode 100644 test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/amd/foo.js create mode 100644 test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/amd/main.js create mode 100644 test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/cjs/foo.js create mode 100644 test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/cjs/main.js create mode 100644 test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/es/foo.js create mode 100644 test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/es/main.js create mode 100644 test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/system/foo.js create mode 100644 test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/system/main.js create mode 100644 test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/foo.js create mode 100644 test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/main.js rename test/{function/samples/namespace-tostring => chunking-form/samples/namespace-tostring/dynamic-import}/_config.js (54%) create mode 100644 test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/amd/generated-foo.js create mode 100644 test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/amd/main.js create mode 100644 test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/cjs/generated-foo.js create mode 100644 test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/cjs/main.js create mode 100644 test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/es/generated-foo.js create mode 100644 test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/es/main.js create mode 100644 test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/system/generated-foo.js create mode 100644 test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/system/main.js rename test/{function/samples/namespace-tostring => chunking-form/samples/namespace-tostring/dynamic-import}/foo.js (100%) create mode 100644 test/chunking-form/samples/namespace-tostring/dynamic-import/main.js create mode 100644 test/form/samples/namespace-tostring/entry-default/_config.js create mode 100644 test/form/samples/namespace-tostring/entry-default/_expected/amd.js create mode 100644 test/form/samples/namespace-tostring/entry-default/_expected/cjs.js create mode 100644 test/form/samples/namespace-tostring/entry-default/_expected/es.js create mode 100644 test/form/samples/namespace-tostring/entry-default/_expected/iife.js create mode 100644 test/form/samples/namespace-tostring/entry-default/_expected/system.js create mode 100644 test/form/samples/namespace-tostring/entry-default/_expected/umd.js create mode 100644 test/form/samples/namespace-tostring/entry-default/main.js create mode 100644 test/form/samples/namespace-tostring/entry-named/_config.js create mode 100644 test/form/samples/namespace-tostring/entry-named/_expected/amd.js create mode 100644 test/form/samples/namespace-tostring/entry-named/_expected/cjs.js create mode 100644 test/form/samples/namespace-tostring/entry-named/_expected/es.js create mode 100644 test/form/samples/namespace-tostring/entry-named/_expected/iife.js create mode 100644 test/form/samples/namespace-tostring/entry-named/_expected/system.js rename test/form/samples/{namespace-tostringtag => namespace-tostring/entry-named}/_expected/umd.js (62%) create mode 100644 test/form/samples/namespace-tostring/entry-named/main.js create mode 100644 test/form/samples/namespace-tostring/external-namespaces/_config.js create mode 100644 test/form/samples/namespace-tostring/external-namespaces/_expected/amd.js create mode 100644 test/form/samples/namespace-tostring/external-namespaces/_expected/cjs.js create mode 100644 test/form/samples/namespace-tostring/external-namespaces/_expected/es.js create mode 100644 test/form/samples/namespace-tostring/external-namespaces/_expected/iife.js create mode 100644 test/form/samples/namespace-tostring/external-namespaces/_expected/system.js create mode 100644 test/form/samples/namespace-tostring/external-namespaces/_expected/umd.js create mode 100644 test/form/samples/namespace-tostring/external-namespaces/main.js create mode 100644 test/form/samples/namespace-tostring/inlined-namespace/_config.js create mode 100644 test/form/samples/namespace-tostring/inlined-namespace/_expected/amd.js create mode 100644 test/form/samples/namespace-tostring/inlined-namespace/_expected/cjs.js create mode 100644 test/form/samples/namespace-tostring/inlined-namespace/_expected/es.js create mode 100644 test/form/samples/namespace-tostring/inlined-namespace/_expected/iife.js create mode 100644 test/form/samples/namespace-tostring/inlined-namespace/_expected/system.js create mode 100644 test/form/samples/namespace-tostring/inlined-namespace/_expected/umd.js create mode 100644 test/form/samples/namespace-tostring/inlined-namespace/foo.js create mode 100644 test/form/samples/namespace-tostring/inlined-namespace/main.js delete mode 100644 test/form/samples/namespace-tostringtag/_config.js delete mode 100644 test/form/samples/namespace-tostringtag/_expected/amd.js delete mode 100644 test/form/samples/namespace-tostringtag/_expected/cjs.js delete mode 100644 test/form/samples/namespace-tostringtag/_expected/es.js delete mode 100644 test/form/samples/namespace-tostringtag/_expected/iife.js delete mode 100644 test/form/samples/namespace-tostringtag/_expected/system.js delete mode 100644 test/form/samples/namespace-tostringtag/main.js create mode 100644 test/function/samples/namespace-tostring/dynamic-import-default-mode/_config.js create mode 100644 test/function/samples/namespace-tostring/dynamic-import-default-mode/foo.js create mode 100644 test/function/samples/namespace-tostring/dynamic-import-default-mode/main.js create mode 100644 test/function/samples/namespace-tostring/dynamic-import/_config.js create mode 100644 test/function/samples/namespace-tostring/dynamic-import/foo.js create mode 100644 test/function/samples/namespace-tostring/dynamic-import/main.js create mode 100644 test/function/samples/namespace-tostring/entry-default/_config.js create mode 100644 test/function/samples/namespace-tostring/entry-default/main.js create mode 100644 test/function/samples/namespace-tostring/entry-named/_config.js create mode 100644 test/function/samples/namespace-tostring/entry-named/main.js create mode 100644 test/function/samples/namespace-tostring/external-namespaces/_config.js create mode 100644 test/function/samples/namespace-tostring/external-namespaces/main.js create mode 100644 test/function/samples/namespace-tostring/inlined-namespace/_config.js create mode 100644 test/function/samples/namespace-tostring/inlined-namespace/foo.js create mode 100644 test/function/samples/namespace-tostring/inlined-namespace/main.js delete mode 100644 test/function/samples/namespace-tostring/main.js diff --git a/src/Chunk.ts b/src/Chunk.ts index f354792a265..8455846a00b 100644 --- a/src/Chunk.ts +++ b/src/Chunk.ts @@ -716,9 +716,10 @@ export default class Chunk { hasExports, indentString: this.indentString, intro: addons.intro!, - isEntryModuleFacade: + isEntryFacade: this.outputOptions.preserveModules || (this.facadeModule !== null && this.facadeModule.info.isEntry), + isModuleFacade: this.facadeModule !== null, namedExportsMode: this.exportMode !== 'default', outro: addons.outro!, usesTopLevelAwait, diff --git a/src/finalisers/amd.ts b/src/finalisers/amd.ts index 8da339e5cee..879fdfca090 100644 --- a/src/finalisers/amd.ts +++ b/src/finalisers/amd.ts @@ -1,8 +1,7 @@ import { Bundle as MagicStringBundle } from 'magic-string'; import { NormalizedOutputOptions } from '../rollup/types'; import { FinaliserOptions } from './index'; -import { compactEsModuleExport, esModuleExport } from './shared/esModuleExport'; -import getExportBlock from './shared/getExportBlock'; +import { getExportBlock, getNamespaceMarkers } from './shared/getExportBlock'; import getInteropBlock from './shared/getInteropBlock'; import warnOnBuiltins from './shared/warnOnBuiltins'; @@ -25,7 +24,8 @@ export default function amd( hasExports, indentString: t, intro, - isEntryModuleFacade, + isEntryFacade, + isModuleFacade, namedExportsMode, outro, varOrConst, @@ -38,6 +38,7 @@ export default function amd( externalLiveBindings, freeze, interop, + namespaceToStringTag, strict }: NormalizedOutputOptions ) { @@ -74,6 +75,7 @@ export default function amd( interop, externalLiveBindings, freeze, + namespaceToStringTag, accessedGlobals, _, n, @@ -91,11 +93,17 @@ export default function amd( t, externalLiveBindings ); - if (exportBlock) magicString.append(exportBlock); - if (namedExportsMode && hasExports && isEntryModuleFacade && esModule) - magicString.append(`${n}${n}${compact ? compactEsModuleExport : esModuleExport}`); - if (outro) magicString.append(outro); - + let namespaceMarkers = getNamespaceMarkers( + namedExportsMode && hasExports, + isEntryFacade && esModule, + isModuleFacade && namespaceToStringTag, + _, + n + ); + if (namespaceMarkers) { + namespaceMarkers = n + n + namespaceMarkers; + } + magicString.append(`${exportBlock}${namespaceMarkers}${outro}`); return magicString .indent(t) .prepend(`${amdDefine}(${params}function${_}(${args.join(`,${_}`)})${_}{${useStrict}${n}${n}`) diff --git a/src/finalisers/cjs.ts b/src/finalisers/cjs.ts index 6412ff5aca1..9d341426a85 100644 --- a/src/finalisers/cjs.ts +++ b/src/finalisers/cjs.ts @@ -2,8 +2,7 @@ import { Bundle as MagicStringBundle } from 'magic-string'; import { ChunkDependencies } from '../Chunk'; import { NormalizedOutputOptions } from '../rollup/types'; import { FinaliserOptions } from './index'; -import { compactEsModuleExport, esModuleExport } from './shared/esModuleExport'; -import getExportBlock from './shared/getExportBlock'; +import { getExportBlock, getNamespaceMarkers } from './shared/getExportBlock'; import getInteropBlock from './shared/getInteropBlock'; export default function cjs( @@ -15,22 +14,37 @@ export default function cjs( hasExports, indentString: t, intro, - isEntryModuleFacade, + isEntryFacade, + isModuleFacade, namedExportsMode, outro, varOrConst }: FinaliserOptions, - { compact, esModule, externalLiveBindings, freeze, interop, strict }: NormalizedOutputOptions + { + compact, + esModule, + externalLiveBindings, + freeze, + interop, + namespaceToStringTag, + strict + }: NormalizedOutputOptions ) { const n = compact ? '' : '\n'; const s = compact ? '' : ';'; const _ = compact ? '' : ' '; const useStrict = strict ? `'use strict';${n}${n}` : ''; - const esModuleProp = - namedExportsMode && hasExports && isEntryModuleFacade && esModule - ? `${compact ? compactEsModuleExport : esModuleExport}${n}${n}` - : ''; + let namespaceMarkers = getNamespaceMarkers( + namedExportsMode && hasExports, + isEntryFacade && esModule, + isModuleFacade && namespaceToStringTag, + _, + n + ); + if (namespaceMarkers) { + namespaceMarkers += n + n; + } const importBlock = getImportBlock(dependencies, compact, varOrConst, n, _); const interopBlock = getInteropBlock( dependencies, @@ -38,6 +52,7 @@ export default function cjs( interop, externalLiveBindings, freeze, + namespaceToStringTag, accessedGlobals, _, n, @@ -45,7 +60,7 @@ export default function cjs( t ); - magicString.prepend(`${useStrict}${intro}${esModuleProp}${importBlock}${interopBlock}`); + magicString.prepend(`${useStrict}${intro}${namespaceMarkers}${importBlock}${interopBlock}`); const exportBlock = getExportBlock( exports, diff --git a/src/finalisers/iife.ts b/src/finalisers/iife.ts index 3cabca46a46..75910845073 100644 --- a/src/finalisers/iife.ts +++ b/src/finalisers/iife.ts @@ -3,7 +3,7 @@ import { NormalizedOutputOptions } from '../rollup/types'; import { error } from '../utils/error'; import { isLegal } from '../utils/identifierHelpers'; import { FinaliserOptions } from './index'; -import getExportBlock from './shared/getExportBlock'; +import { getExportBlock, getNamespaceMarkers } from './shared/getExportBlock'; import getInteropBlock from './shared/getInteropBlock'; import { keypath } from './shared/sanitize'; import setupNamespace from './shared/setupNamespace'; @@ -28,12 +28,14 @@ export default function iife( }: FinaliserOptions, { compact, + esModule, extend, freeze, externalLiveBindings, globals, interop, name, + namespaceToStringTag, strict }: NormalizedOutputOptions ) { @@ -81,6 +83,7 @@ export default function iife( interop, externalLiveBindings, freeze, + namespaceToStringTag, accessedGlobals, _, n, @@ -115,6 +118,16 @@ export default function iife( t, externalLiveBindings ); - magicString.append(`${exportBlock}${outro}`); + let namespaceMarkers = getNamespaceMarkers( + namedExportsMode && hasExports, + esModule, + namespaceToStringTag, + _, + n + ); + if (namespaceMarkers) { + namespaceMarkers = n + n + namespaceMarkers; + } + magicString.append(`${exportBlock}${namespaceMarkers}${outro}`); return magicString.indent(t).prepend(wrapperIntro).append(wrapperOutro); } diff --git a/src/finalisers/index.ts b/src/finalisers/index.ts index adbae5ea39d..21248f2367e 100644 --- a/src/finalisers/index.ts +++ b/src/finalisers/index.ts @@ -15,7 +15,8 @@ export interface FinaliserOptions { hasExports: boolean; indentString: string; intro: string; - isEntryModuleFacade: boolean; + isEntryFacade: boolean; + isModuleFacade: boolean; namedExportsMode: boolean; outro: string; usesTopLevelAwait: boolean; diff --git a/src/finalisers/shared/esModuleExport.ts b/src/finalisers/shared/esModuleExport.ts deleted file mode 100644 index 6f1d73a90b4..00000000000 --- a/src/finalisers/shared/esModuleExport.ts +++ /dev/null @@ -1,2 +0,0 @@ -export const esModuleExport = `Object.defineProperty(exports, '__esModule', { value: true });`; -export const compactEsModuleExport = `Object.defineProperty(exports,'__esModule',{value:true});`; diff --git a/src/finalisers/shared/getExportBlock.ts b/src/finalisers/shared/getExportBlock.ts index 7a11a80aa91..d1e2ba59937 100644 --- a/src/finalisers/shared/getExportBlock.ts +++ b/src/finalisers/shared/getExportBlock.ts @@ -6,7 +6,7 @@ import { namespaceInteropHelpersByInteropType } from '../../utils/interopHelpers'; -export default function getExportBlock( +export function getExportBlock( exports: ChunkExports, dependencies: ChunkDependencies, namedExportsMode: boolean, @@ -174,3 +174,33 @@ function getReexportedImportName( } return `${moduleVariableName}.${imported}`; } + +function getEsModuleExport(_: string): string { + return `Object.defineProperty(exports,${_}'__esModule',${_}{${_}value:${_}true${_}});`; +} + +function getNamespaceToStringExport(_: string): string { + return `exports[Symbol.toStringTag]${_}=${_}'Module';`; +} + +export function getNamespaceMarkers( + hasNamedExports: boolean, + addEsModule: boolean, + addNamespaceToStringTag: boolean, + _: string, + n: string +): string { + let namespaceMarkers = ''; + if (hasNamedExports) { + if (addEsModule) { + namespaceMarkers += getEsModuleExport(_); + } + if (addNamespaceToStringTag) { + if (namespaceMarkers) { + namespaceMarkers += n; + } + namespaceMarkers += getNamespaceToStringExport(_); + } + } + return namespaceMarkers; +} diff --git a/src/finalisers/shared/getInteropBlock.ts b/src/finalisers/shared/getInteropBlock.ts index 69be14720ec..0231eb1c682 100644 --- a/src/finalisers/shared/getInteropBlock.ts +++ b/src/finalisers/shared/getInteropBlock.ts @@ -13,6 +13,7 @@ export default function getInteropBlock( interop: GetInterop, externalLiveBindings: boolean, freeze: boolean, + namespaceToStringTag: boolean, accessedGlobals: Set, _: string, n: string, @@ -92,6 +93,7 @@ export default function getInteropBlock( s, t, externalLiveBindings, - freeze + freeze, + namespaceToStringTag )}${interopStatements.length > 0 ? `${interopStatements.join(n)}${n}${n}` : ''}`; } diff --git a/src/finalisers/umd.ts b/src/finalisers/umd.ts index f0999a9a209..a6b980b1c1c 100644 --- a/src/finalisers/umd.ts +++ b/src/finalisers/umd.ts @@ -2,8 +2,7 @@ import { Bundle as MagicStringBundle } from 'magic-string'; import { NormalizedOutputOptions } from '../rollup/types'; import { error } from '../utils/error'; import { FinaliserOptions } from './index'; -import { compactEsModuleExport, esModuleExport } from './shared/esModuleExport'; -import getExportBlock from './shared/getExportBlock'; +import { getExportBlock, getNamespaceMarkers } from './shared/getExportBlock'; import getInteropBlock from './shared/getInteropBlock'; import { keypath, property } from './shared/sanitize'; import { assignToDeepVariable } from './shared/setupNamespace'; @@ -45,6 +44,7 @@ export default function umd( freeze, interop, name, + namespaceToStringTag, globals, noConflict, strict @@ -161,6 +161,7 @@ export default function umd( interop, externalLiveBindings, freeze, + namespaceToStringTag, accessedGlobals, _, n, @@ -178,10 +179,16 @@ export default function umd( t, externalLiveBindings ); - if (exportBlock) magicString.append(exportBlock); - if (namedExportsMode && hasExports && esModule) - magicString.append(n + n + (compact ? compactEsModuleExport : esModuleExport)); - if (outro) magicString.append(outro); - + let namespaceMarkers = getNamespaceMarkers( + namedExportsMode && hasExports, + esModule, + namespaceToStringTag, + _, + n + ); + if (namespaceMarkers) { + namespaceMarkers = n + n + namespaceMarkers; + } + magicString.append(`${exportBlock}${namespaceMarkers}${outro}`); return magicString.trim().indent(t).append(wrapperOutro).prepend(wrapperIntro); } diff --git a/src/utils/interopHelpers.ts b/src/utils/interopHelpers.ts index d89986b5614..77aaacba46a 100644 --- a/src/utils/interopHelpers.ts +++ b/src/utils/interopHelpers.ts @@ -48,11 +48,21 @@ export function getHelpersBlock( s: string, t: string, liveBindings: boolean, - freeze: boolean + freeze: boolean, + namespaceToStringTag: boolean ): string { return HELPER_NAMES.map(variable => usedHelpers.has(variable) || accessedGlobals.has(variable) - ? HELPER_GENERATORS[variable](_, n, s, t, liveBindings, freeze, usedHelpers) + ? HELPER_GENERATORS[variable]( + _, + n, + s, + t, + liveBindings, + freeze, + namespaceToStringTag, + usedHelpers + ) : '' ).join(''); } @@ -65,6 +75,7 @@ const HELPER_GENERATORS: { t: string, liveBindings: boolean, freeze: boolean, + namespaceToStringTag: boolean, usedHelpers: Set ) => string; } = { @@ -76,16 +87,25 @@ const HELPER_GENERATORS: { `function ${INTEROP_DEFAULT_LEGACY_VARIABLE}${_}(e)${_}{${_}return ` + `e${_}&&${_}typeof e${_}===${_}'object'${_}&&${_}'default'${_}in e${_}?${_}` + `${liveBindings ? getDefaultLiveBinding(_) : getDefaultStatic(_)}${s}${_}}${n}${n}`, - [INTEROP_NAMESPACE_VARIABLE]: (_, n, s, t, liveBindings, freeze, usedHelpers) => + [INTEROP_NAMESPACE_VARIABLE]: ( + _, + n, + s, + t, + liveBindings, + freeze, + namespaceToStringTag, + usedHelpers + ) => `function ${INTEROP_NAMESPACE_VARIABLE}(e)${_}{${n}` + (usedHelpers.has(INTEROP_NAMESPACE_DEFAULT_VARIABLE) ? `${t}return e${_}&&${_}e.__esModule${_}?${_}e${_}:${_}${INTEROP_NAMESPACE_DEFAULT_VARIABLE}(e)${s}${n}` : `${t}if${_}(e${_}&&${_}e.__esModule)${_}return e;${n}` + - createNamespaceObject(_, n, t, t, liveBindings, freeze)) + + createNamespaceObject(_, n, t, t, liveBindings, freeze, namespaceToStringTag)) + `}${n}${n}`, - [INTEROP_NAMESPACE_DEFAULT_VARIABLE]: (_, n, _s, t, liveBindings, freeze) => + [INTEROP_NAMESPACE_DEFAULT_VARIABLE]: (_, n, _s, t, liveBindings, freeze, namespaceToStringTag) => `function ${INTEROP_NAMESPACE_DEFAULT_VARIABLE}(e)${_}{${n}` + - createNamespaceObject(_, n, t, t, liveBindings, freeze) + + createNamespaceObject(_, n, t, t, liveBindings, freeze, namespaceToStringTag) + `}${n}${n}`, [INTEROP_NAMESPACE_DEFAULT_ONLY_VARIABLE]: ( _: string, @@ -93,10 +113,16 @@ const HELPER_GENERATORS: { _s: string, t: string, _liveBindings: boolean, - freeze: boolean + freeze: boolean, + namespaceToStringTag: boolean ) => `function ${INTEROP_NAMESPACE_DEFAULT_ONLY_VARIABLE}(e)${_}{${n}` + - `${t}return ${getFrozen(`{__proto__: null,${_}'default':${_}e}`, freeze)};${n}` + + `${t}return ${getFrozen( + `{__proto__: null,${ + namespaceToStringTag ? `${_}[Symbol.toStringTag]:${_}'Module',` : '' + }${_}'default':${_}e}`, + freeze + )};${n}` + `}${n}${n}` }; @@ -114,10 +140,15 @@ function createNamespaceObject( t: string, i: string, liveBindings: boolean, - freeze: boolean + freeze: boolean, + namespaceToStringTag: boolean ) { return ( - `${i}var n${_}=${_}Object.create(null);${n}` + + `${i}var n${_}=${_}${ + namespaceToStringTag + ? `{__proto__:${_}null,${_}[Symbol.toStringTag]:${_}'Module'}` + : 'Object.create(null)' + };${n}` + `${i}if${_}(e)${_}{${n}` + `${i}${t}Object.keys(e).forEach(function${_}(k)${_}{${n}` + (liveBindings ? copyPropertyLiveBinding : copyPropertyStatic)(_, n, t, i + t + t) + diff --git a/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_config.js b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_config.js new file mode 100644 index 00000000000..af0e0e6af98 --- /dev/null +++ b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_config.js @@ -0,0 +1,10 @@ +module.exports = { + description: + 'adds Symbol.toStringTag property to dynamic imports of entry chunks with default export mode', + options: { + input: ['main', 'foo'], + output: { + namespaceToStringTag: true + } + } +}; diff --git a/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/amd/foo.js b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/amd/foo.js new file mode 100644 index 00000000000..2bc02b35588 --- /dev/null +++ b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/amd/foo.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + var foo = 42; + + return foo; + +}); diff --git a/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/amd/main.js b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/amd/main.js new file mode 100644 index 00000000000..ef7142ed35c --- /dev/null +++ b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/amd/main.js @@ -0,0 +1,9 @@ +define(['require'], function (require) { 'use strict'; + + function _interopNamespaceDefaultOnly(e) { + return Object.freeze({__proto__: null, [Symbol.toStringTag]: 'Module', 'default': e}); + } + + new Promise(function (resolve, reject) { require(['./foo'], function (m) { resolve(/*#__PURE__*/_interopNamespaceDefaultOnly(m)); }, reject) }).then(console.log); + +}); diff --git a/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/cjs/foo.js b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/cjs/foo.js new file mode 100644 index 00000000000..476c8ac92d3 --- /dev/null +++ b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/cjs/foo.js @@ -0,0 +1,5 @@ +'use strict'; + +var foo = 42; + +module.exports = foo; diff --git a/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/cjs/main.js b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/cjs/main.js new file mode 100644 index 00000000000..fce5a893ce9 --- /dev/null +++ b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/cjs/main.js @@ -0,0 +1,7 @@ +'use strict'; + +function _interopNamespaceDefaultOnly(e) { + return Object.freeze({__proto__: null, [Symbol.toStringTag]: 'Module', 'default': e}); +} + +Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./foo.js')); }).then(console.log); diff --git a/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/es/foo.js b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/es/foo.js new file mode 100644 index 00000000000..8ac2b2169a4 --- /dev/null +++ b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/es/foo.js @@ -0,0 +1,3 @@ +var foo = 42; + +export default foo; diff --git a/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/es/main.js b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/es/main.js new file mode 100644 index 00000000000..1c55d63937e --- /dev/null +++ b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/es/main.js @@ -0,0 +1 @@ +import('./foo.js').then(console.log); diff --git a/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/system/foo.js b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/system/foo.js new file mode 100644 index 00000000000..81b45b772a8 --- /dev/null +++ b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/system/foo.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var foo = exports('default', 42); + + } + }; +}); diff --git a/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/system/main.js b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/system/main.js new file mode 100644 index 00000000000..5635ea11806 --- /dev/null +++ b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/_expected/system/main.js @@ -0,0 +1,10 @@ +System.register([], function (exports, module) { + 'use strict'; + return { + execute: function () { + + module.import('./foo.js').then(console.log); + + } + }; +}); diff --git a/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/foo.js b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/foo.js new file mode 100644 index 00000000000..7a4e8a723a4 --- /dev/null +++ b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/foo.js @@ -0,0 +1 @@ +export default 42; diff --git a/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/main.js b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/main.js new file mode 100644 index 00000000000..999da12561c --- /dev/null +++ b/test/chunking-form/samples/namespace-tostring/dynamic-import-default-mode/main.js @@ -0,0 +1 @@ +import('./foo').then(console.log); diff --git a/test/function/samples/namespace-tostring/_config.js b/test/chunking-form/samples/namespace-tostring/dynamic-import/_config.js similarity index 54% rename from test/function/samples/namespace-tostring/_config.js rename to test/chunking-form/samples/namespace-tostring/dynamic-import/_config.js index 9a2eca563e7..8cb42fbd52a 100644 --- a/test/function/samples/namespace-tostring/_config.js +++ b/test/chunking-form/samples/namespace-tostring/dynamic-import/_config.js @@ -1,5 +1,5 @@ module.exports = { - description: 'creates Symbol.toStringTag property', + description: 'adds Symbol.toStringTag property to dynamic imports', options: { output: { namespaceToStringTag: true diff --git a/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/amd/generated-foo.js b/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/amd/generated-foo.js new file mode 100644 index 00000000000..144e6c7a0fa --- /dev/null +++ b/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/amd/generated-foo.js @@ -0,0 +1,9 @@ +define(['exports'], function (exports) { 'use strict'; + + const bar = 42; + + exports.bar = bar; + + exports[Symbol.toStringTag] = 'Module'; + +}); diff --git a/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/amd/main.js b/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/amd/main.js new file mode 100644 index 00000000000..9809bf12c66 --- /dev/null +++ b/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/amd/main.js @@ -0,0 +1,5 @@ +define(['require'], function (require) { 'use strict'; + + new Promise(function (resolve, reject) { require(['./generated-foo'], resolve, reject) }).then(console.log); + +}); diff --git a/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/cjs/generated-foo.js b/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/cjs/generated-foo.js new file mode 100644 index 00000000000..1dba95c4b6a --- /dev/null +++ b/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/cjs/generated-foo.js @@ -0,0 +1,7 @@ +'use strict'; + +exports[Symbol.toStringTag] = 'Module'; + +const bar = 42; + +exports.bar = bar; diff --git a/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/cjs/main.js b/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/cjs/main.js new file mode 100644 index 00000000000..3fac08fbab8 --- /dev/null +++ b/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/cjs/main.js @@ -0,0 +1,3 @@ +'use strict'; + +Promise.resolve().then(function () { return require('./generated-foo.js'); }).then(console.log); diff --git a/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/es/generated-foo.js b/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/es/generated-foo.js new file mode 100644 index 00000000000..540eb09fbef --- /dev/null +++ b/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/es/generated-foo.js @@ -0,0 +1,3 @@ +const bar = 42; + +export { bar }; diff --git a/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/es/main.js b/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/es/main.js new file mode 100644 index 00000000000..7d43c40039e --- /dev/null +++ b/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/es/main.js @@ -0,0 +1 @@ +import('./generated-foo.js').then(console.log); diff --git a/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/system/generated-foo.js b/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/system/generated-foo.js new file mode 100644 index 00000000000..04fc5e57c91 --- /dev/null +++ b/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/system/generated-foo.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + const bar = exports('bar', 42); + + } + }; +}); diff --git a/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/system/main.js b/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/system/main.js new file mode 100644 index 00000000000..365a5e373e3 --- /dev/null +++ b/test/chunking-form/samples/namespace-tostring/dynamic-import/_expected/system/main.js @@ -0,0 +1,10 @@ +System.register([], function (exports, module) { + 'use strict'; + return { + execute: function () { + + module.import('./generated-foo.js').then(console.log); + + } + }; +}); diff --git a/test/function/samples/namespace-tostring/foo.js b/test/chunking-form/samples/namespace-tostring/dynamic-import/foo.js similarity index 100% rename from test/function/samples/namespace-tostring/foo.js rename to test/chunking-form/samples/namespace-tostring/dynamic-import/foo.js diff --git a/test/chunking-form/samples/namespace-tostring/dynamic-import/main.js b/test/chunking-form/samples/namespace-tostring/dynamic-import/main.js new file mode 100644 index 00000000000..999da12561c --- /dev/null +++ b/test/chunking-form/samples/namespace-tostring/dynamic-import/main.js @@ -0,0 +1 @@ +import('./foo').then(console.log); diff --git a/test/cli/samples/format-aliases/_expected/iife.js b/test/cli/samples/format-aliases/_expected/iife.js index d135ded5dab..5a80cd67764 100644 --- a/test/cli/samples/format-aliases/_expected/iife.js +++ b/test/cli/samples/format-aliases/_expected/iife.js @@ -14,6 +14,8 @@ var bundle = (function (exports, external) { } }); + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, external)); diff --git a/test/form/samples/assignment-to-array-buffer-view/_expected/iife.js b/test/form/samples/assignment-to-array-buffer-view/_expected/iife.js index 382aa202b72..1c822db4d33 100644 --- a/test/form/samples/assignment-to-array-buffer-view/_expected/iife.js +++ b/test/form/samples/assignment-to-array-buffer-view/_expected/iife.js @@ -10,6 +10,8 @@ var bundle = (function (exports) { exports.view8 = view8; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/assignment-to-exports-class-declaration/_expected/iife.js b/test/form/samples/assignment-to-exports-class-declaration/_expected/iife.js index 8976f3efde1..d98dc6a914b 100644 --- a/test/form/samples/assignment-to-exports-class-declaration/_expected/iife.js +++ b/test/form/samples/assignment-to-exports-class-declaration/_expected/iife.js @@ -4,6 +4,8 @@ var myModule = (function (exports) { exports.Foo = class Foo {}; exports.Foo = lol( exports.Foo ); + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/assignment-to-exports/_expected/iife.js b/test/form/samples/assignment-to-exports/_expected/iife.js index 1d7410999bd..6e80662b252 100644 --- a/test/form/samples/assignment-to-exports/_expected/iife.js +++ b/test/form/samples/assignment-to-exports/_expected/iife.js @@ -27,6 +27,8 @@ var bundle = (function (exports) { exports.foo1 = foo1; exports.foo2 = foo2; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/compact-named-export/_expected/iife.js b/test/form/samples/compact-named-export/_expected/iife.js index c14356308af..2cbb80b6609 100644 --- a/test/form/samples/compact-named-export/_expected/iife.js +++ b/test/form/samples/compact-named-export/_expected/iife.js @@ -2,4 +2,4 @@ var foo=(function(exports){'use strict';exports.x = 42; exports.x+=1; exports.x=exports.x+1; exports.x++; -++exports.x;return exports;}({})); \ No newline at end of file +++exports.x;Object.defineProperty(exports,'__esModule',{value:true});return exports;}({})); \ No newline at end of file diff --git a/test/form/samples/computed-properties/_expected/iife.js b/test/form/samples/computed-properties/_expected/iife.js index fa95916dcfd..c6d332db696 100644 --- a/test/form/samples/computed-properties/_expected/iife.js +++ b/test/form/samples/computed-properties/_expected/iife.js @@ -17,6 +17,8 @@ var computedProperties = (function (exports) { exports.X = X; exports.x = x; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/deconflict-format-specific-exports/_expected/iife.js b/test/form/samples/deconflict-format-specific-exports/_expected/iife.js index 0ec8042b07c..5ffcc33e9e0 100644 --- a/test/form/samples/deconflict-format-specific-exports/_expected/iife.js +++ b/test/form/samples/deconflict-format-specific-exports/_expected/iife.js @@ -25,6 +25,8 @@ var bundle = (function (exports) { nestedConflict(); nestedNoConflict(); + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/dedupes-external-imports/_expected/iife.js b/test/form/samples/dedupes-external-imports/_expected/iife.js index d31e4172c18..c075acfa351 100644 --- a/test/form/samples/dedupes-external-imports/_expected/iife.js +++ b/test/form/samples/dedupes-external-imports/_expected/iife.js @@ -30,6 +30,8 @@ var myBundle = (function (exports, external) { exports.baz = baz; exports.foo = foo; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, external)); diff --git a/test/form/samples/deprecated/interop-boolean-per-reexported-dependency/_expected/iife.js b/test/form/samples/deprecated/interop-boolean-per-reexported-dependency/_expected/iife.js index 3155193eb3f..28586702c76 100644 --- a/test/form/samples/deprecated/interop-boolean-per-reexported-dependency/_expected/iife.js +++ b/test/form/samples/deprecated/interop-boolean-per-reexported-dependency/_expected/iife.js @@ -50,6 +50,8 @@ var bundle = (function (exports, externalFalse, externalTrue) { } }); + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, externalfalse, externaltrue)); diff --git a/test/form/samples/deprecated/interop-false-reexport/_expected/iife.js b/test/form/samples/deprecated/interop-false-reexport/_expected/iife.js index 281be0546bb..395bfb7ef37 100644 --- a/test/form/samples/deprecated/interop-false-reexport/_expected/iife.js +++ b/test/form/samples/deprecated/interop-false-reexport/_expected/iife.js @@ -11,6 +11,8 @@ var foo = (function (exports, external) { } }); + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, external)); diff --git a/test/form/samples/export-all-before-named/_expected/iife.js b/test/form/samples/export-all-before-named/_expected/iife.js index 3fc5c91b1e7..bdd2f3acb4e 100644 --- a/test/form/samples/export-all-before-named/_expected/iife.js +++ b/test/form/samples/export-all-before-named/_expected/iife.js @@ -15,6 +15,8 @@ var exposedInternals = (function (exports, external) { }); exports.internalFn = internalFn; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, external)); diff --git a/test/form/samples/export-all-from-internal/_expected/iife.js b/test/form/samples/export-all-from-internal/_expected/iife.js index 9c7ab27586a..eb22ecec63a 100644 --- a/test/form/samples/export-all-from-internal/_expected/iife.js +++ b/test/form/samples/export-all-from-internal/_expected/iife.js @@ -7,6 +7,8 @@ var exposedInternals = (function (exports) { exports.a = a; exports.b = b; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/export-all-multiple/_expected/iife.js b/test/form/samples/export-all-multiple/_expected/iife.js index 6dbd41be5ca..c7c196d7b62 100644 --- a/test/form/samples/export-all-multiple/_expected/iife.js +++ b/test/form/samples/export-all-multiple/_expected/iife.js @@ -28,6 +28,8 @@ var myBundle = (function (exports, foo, bar, baz) { }); }); + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, foo, bar, baz)); diff --git a/test/form/samples/export-default-import/_expected/iife.js b/test/form/samples/export-default-import/_expected/iife.js index 760b307365b..a5fa3cc6fd3 100644 --- a/test/form/samples/export-default-import/_expected/iife.js +++ b/test/form/samples/export-default-import/_expected/iife.js @@ -14,6 +14,8 @@ var myBundle = (function (exports, x) { } }); + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, x)); diff --git a/test/form/samples/export-globals/_expected/iife.js b/test/form/samples/export-globals/_expected/iife.js index b537e08984d..5186540ab8f 100644 --- a/test/form/samples/export-globals/_expected/iife.js +++ b/test/form/samples/export-globals/_expected/iife.js @@ -7,6 +7,8 @@ var myBundle = (function (exports) { exports.isNaN = isNaN$1; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/export-live-bindings/_expected/iife.js b/test/form/samples/export-live-bindings/_expected/iife.js index f36b39195a8..bd29b6ec5c8 100644 --- a/test/form/samples/export-live-bindings/_expected/iife.js +++ b/test/form/samples/export-live-bindings/_expected/iife.js @@ -33,6 +33,8 @@ var iife = (function (exports) { exports.updateBaz = update$2; exports.updateFoo = update; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/export-namespace-as/_expected/iife.js b/test/form/samples/export-namespace-as/_expected/iife.js index 730fcf7096d..47b399d40d1 100644 --- a/test/form/samples/export-namespace-as/_expected/iife.js +++ b/test/form/samples/export-namespace-as/_expected/iife.js @@ -12,6 +12,8 @@ var bundle = (function (exports) { exports.dep = dep; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/exports-at-end-if-possible/_expected/iife.js b/test/form/samples/exports-at-end-if-possible/_expected/iife.js index 644a208771e..e38bd7d01b3 100644 --- a/test/form/samples/exports-at-end-if-possible/_expected/iife.js +++ b/test/form/samples/exports-at-end-if-possible/_expected/iife.js @@ -9,6 +9,8 @@ var myBundle = (function (exports) { exports.FOO = FOO; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/extend-exports/_expected/iife.js b/test/form/samples/extend-exports/_expected/iife.js index bb88f242694..99010aa0213 100644 --- a/test/form/samples/extend-exports/_expected/iife.js +++ b/test/form/samples/extend-exports/_expected/iife.js @@ -5,4 +5,6 @@ exports.answer = answer; + Object.defineProperty(exports, '__esModule', { value: true }); + }(this.foo = this.foo || {})); diff --git a/test/form/samples/extend-namespaced-exports/_expected/iife.js b/test/form/samples/extend-namespaced-exports/_expected/iife.js index 601131e4f22..a32a30b5257 100644 --- a/test/form/samples/extend-namespaced-exports/_expected/iife.js +++ b/test/form/samples/extend-namespaced-exports/_expected/iife.js @@ -7,4 +7,6 @@ this.foo.bar = this.foo.bar || {}; exports.answer = answer; + Object.defineProperty(exports, '__esModule', { value: true }); + }(this.foo.bar.baz = this.foo.bar.baz || {})); diff --git a/test/form/samples/external-deshadowing/_expected/iife.js b/test/form/samples/external-deshadowing/_expected/iife.js index 63e9451c0fd..76f082e94cd 100644 --- a/test/form/samples/external-deshadowing/_expected/iife.js +++ b/test/form/samples/external-deshadowing/_expected/iife.js @@ -16,6 +16,8 @@ var myBundle = (function (exports, a, Test$1) { exports.Test = Test; exports.Test1 = Test1; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, a, b)); diff --git a/test/form/samples/external-export-tracing/_expected/iife.js b/test/form/samples/external-export-tracing/_expected/iife.js index a34a5a2bca0..003e55a49c2 100644 --- a/test/form/samples/external-export-tracing/_expected/iife.js +++ b/test/form/samples/external-export-tracing/_expected/iife.js @@ -10,6 +10,8 @@ var myBundle = (function (exports, external) { } }); + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, external)); diff --git a/test/form/samples/external-namespace-reexport/_expected/iife.js b/test/form/samples/external-namespace-reexport/_expected/iife.js index 836a7b293e8..d0342edfe29 100644 --- a/test/form/samples/external-namespace-reexport/_expected/iife.js +++ b/test/form/samples/external-namespace-reexport/_expected/iife.js @@ -27,6 +27,8 @@ var myBundle = (function (exports, highcharts) { exports.Highcharts = highcharts__namespace; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, highcharts)); diff --git a/test/form/samples/freeze/_expected/iife.js b/test/form/samples/freeze/_expected/iife.js index f42a252dfcb..ab4dcbd0dde 100644 --- a/test/form/samples/freeze/_expected/iife.js +++ b/test/form/samples/freeze/_expected/iife.js @@ -18,6 +18,8 @@ var myBundle = (function (exports) { exports.a = a; exports.b = b; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/function-mutation/_expected/iife.js b/test/form/samples/function-mutation/_expected/iife.js index 2f94be5089a..80540ce3178 100644 --- a/test/form/samples/function-mutation/_expected/iife.js +++ b/test/form/samples/function-mutation/_expected/iife.js @@ -46,6 +46,8 @@ var bundle = (function (exports) { exports.g = g; exports.i = i; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/interop-per-reexported-dependency/_expected/iife.js b/test/form/samples/interop-per-reexported-dependency/_expected/iife.js index a36dd584b1a..1cc677b6cd1 100644 --- a/test/form/samples/interop-per-reexported-dependency/_expected/iife.js +++ b/test/form/samples/interop-per-reexported-dependency/_expected/iife.js @@ -65,6 +65,8 @@ var bundle = (function (exports, externalAuto, externalDefault, externalDefaultO } }); + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, externalauto, externaldefault, externaldefaultOnly, externalesModule)); diff --git a/test/form/samples/logical-expression/mutate-logical-expression/_expected/iife.js b/test/form/samples/logical-expression/mutate-logical-expression/_expected/iife.js index 3054c6077c8..d8c890c7aa0 100644 --- a/test/form/samples/logical-expression/mutate-logical-expression/_expected/iife.js +++ b/test/form/samples/logical-expression/mutate-logical-expression/_expected/iife.js @@ -17,6 +17,8 @@ var bundle = (function (exports) { exports.bExp = bExp; exports.cExp = cExp; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/mjs/_expected/iife.js b/test/form/samples/mjs/_expected/iife.js index af72cd39b2e..5d0f0e32c24 100644 --- a/test/form/samples/mjs/_expected/iife.js +++ b/test/form/samples/mjs/_expected/iife.js @@ -8,6 +8,8 @@ var myBundle = (function (exports) { exports.depJs = dep; exports.depMjs = dep$1; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/module-name-scoped-package/_expected/iife.js b/test/form/samples/module-name-scoped-package/_expected/iife.js index 487880286bc..fc011459c39 100644 --- a/test/form/samples/module-name-scoped-package/_expected/iife.js +++ b/test/form/samples/module-name-scoped-package/_expected/iife.js @@ -5,4 +5,6 @@ exports.foo = foo; + Object.defineProperty(exports, '__esModule', { value: true }); + }(this['@scoped/npm-package'] = this['@scoped/npm-package'] || {})); diff --git a/test/form/samples/module-name-wat/_expected/iife.js b/test/form/samples/module-name-wat/_expected/iife.js index ac64446b1af..d178e0a8e3f 100644 --- a/test/form/samples/module-name-wat/_expected/iife.js +++ b/test/form/samples/module-name-wat/_expected/iife.js @@ -8,6 +8,8 @@ this.foo['@scoped/npm-package'].bar['why-would-you-do-this'] = (function (export exports.foo = foo; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/module-name-with-dashes/_expected/iife.js b/test/form/samples/module-name-with-dashes/_expected/iife.js index 329396135ac..9ee7dad90d3 100644 --- a/test/form/samples/module-name-with-dashes/_expected/iife.js +++ b/test/form/samples/module-name-with-dashes/_expected/iife.js @@ -5,4 +5,6 @@ exports.foo = foo; + Object.defineProperty(exports, '__esModule', { value: true }); + }(this['module-name-with-dashes'] = this['module-name-with-dashes'] || {})); diff --git a/test/form/samples/multiple-exports/_expected/iife.js b/test/form/samples/multiple-exports/_expected/iife.js index 5dcabbb94e2..6d8658e030a 100644 --- a/test/form/samples/multiple-exports/_expected/iife.js +++ b/test/form/samples/multiple-exports/_expected/iife.js @@ -7,6 +7,8 @@ var myBundle = (function (exports) { exports.bar = bar; exports.foo = foo; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/namespace-import-reexport-2/_expected/iife.js b/test/form/samples/namespace-import-reexport-2/_expected/iife.js index a39abd59811..8d119d90a4a 100644 --- a/test/form/samples/namespace-import-reexport-2/_expected/iife.js +++ b/test/form/samples/namespace-import-reexport-2/_expected/iife.js @@ -33,6 +33,8 @@ var iife = (function (exports, external1, external2) { }); exports.ext = external2__namespace; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, external1, external2)); diff --git a/test/form/samples/namespace-import-reexport/_expected/iife.js b/test/form/samples/namespace-import-reexport/_expected/iife.js index 69bebfbd7e5..e7b26c55ec8 100644 --- a/test/form/samples/namespace-import-reexport/_expected/iife.js +++ b/test/form/samples/namespace-import-reexport/_expected/iife.js @@ -27,6 +27,8 @@ var iife = (function (exports, externalPackage) { exports.ext = externalPackage__namespace; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, externalPackage)); diff --git a/test/form/samples/namespace-self-import/_expected/iife.js b/test/form/samples/namespace-self-import/_expected/iife.js index 9eac34fd918..51b9cb63515 100644 --- a/test/form/samples/namespace-self-import/_expected/iife.js +++ b/test/form/samples/namespace-self-import/_expected/iife.js @@ -12,6 +12,8 @@ var iife = (function (exports) { exports.p = p; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/namespace-tostring/entry-default/_config.js b/test/form/samples/namespace-tostring/entry-default/_config.js new file mode 100644 index 00000000000..2b68c154c07 --- /dev/null +++ b/test/form/samples/namespace-tostring/entry-default/_config.js @@ -0,0 +1,10 @@ +module.exports = { + description: 'does not add Symbol.toStringTag property to entry chunks with default export mode', + options: { + output: { + namespaceToStringTag: true, + exports: 'default', + name: 'bundle' + } + } +}; diff --git a/test/form/samples/namespace-tostring/entry-default/_expected/amd.js b/test/form/samples/namespace-tostring/entry-default/_expected/amd.js new file mode 100644 index 00000000000..f7dd1665f27 --- /dev/null +++ b/test/form/samples/namespace-tostring/entry-default/_expected/amd.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + var main = { foo: 42 }; + + return main; + +}); diff --git a/test/form/samples/namespace-tostring/entry-default/_expected/cjs.js b/test/form/samples/namespace-tostring/entry-default/_expected/cjs.js new file mode 100644 index 00000000000..202ac69aeb8 --- /dev/null +++ b/test/form/samples/namespace-tostring/entry-default/_expected/cjs.js @@ -0,0 +1,5 @@ +'use strict'; + +var main = { foo: 42 }; + +module.exports = main; diff --git a/test/form/samples/namespace-tostring/entry-default/_expected/es.js b/test/form/samples/namespace-tostring/entry-default/_expected/es.js new file mode 100644 index 00000000000..96b6f747e58 --- /dev/null +++ b/test/form/samples/namespace-tostring/entry-default/_expected/es.js @@ -0,0 +1,3 @@ +var main = { foo: 42 }; + +export default main; diff --git a/test/form/samples/namespace-tostring/entry-default/_expected/iife.js b/test/form/samples/namespace-tostring/entry-default/_expected/iife.js new file mode 100644 index 00000000000..6a9aa88e4d0 --- /dev/null +++ b/test/form/samples/namespace-tostring/entry-default/_expected/iife.js @@ -0,0 +1,8 @@ +var bundle = (function () { + 'use strict'; + + var main = { foo: 42 }; + + return main; + +}()); diff --git a/test/form/samples/namespace-tostring/entry-default/_expected/system.js b/test/form/samples/namespace-tostring/entry-default/_expected/system.js new file mode 100644 index 00000000000..75f648528ce --- /dev/null +++ b/test/form/samples/namespace-tostring/entry-default/_expected/system.js @@ -0,0 +1,10 @@ +System.register('bundle', [], function (exports) { + 'use strict'; + return { + execute: function () { + + var main = exports('default', { foo: 42 }); + + } + }; +}); diff --git a/test/form/samples/namespace-tostring/entry-default/_expected/umd.js b/test/form/samples/namespace-tostring/entry-default/_expected/umd.js new file mode 100644 index 00000000000..91d6f5073b1 --- /dev/null +++ b/test/form/samples/namespace-tostring/entry-default/_expected/umd.js @@ -0,0 +1,11 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bundle = factory()); +}(this, (function () { 'use strict'; + + var main = { foo: 42 }; + + return main; + +}))); diff --git a/test/form/samples/namespace-tostring/entry-default/main.js b/test/form/samples/namespace-tostring/entry-default/main.js new file mode 100644 index 00000000000..407b3c24eb7 --- /dev/null +++ b/test/form/samples/namespace-tostring/entry-default/main.js @@ -0,0 +1 @@ +export default { foo: 42 }; diff --git a/test/form/samples/namespace-tostring/entry-named/_config.js b/test/form/samples/namespace-tostring/entry-named/_config.js new file mode 100644 index 00000000000..d329caa8833 --- /dev/null +++ b/test/form/samples/namespace-tostring/entry-named/_config.js @@ -0,0 +1,10 @@ +module.exports = { + description: 'adds Symbol.toStringTag property to entry chunks with named exports', + options: { + output: { + namespaceToStringTag: true, + exports: 'named', + name: 'bundle' + } + } +}; diff --git a/test/form/samples/namespace-tostring/entry-named/_expected/amd.js b/test/form/samples/namespace-tostring/entry-named/_expected/amd.js new file mode 100644 index 00000000000..eb6ac0df3d7 --- /dev/null +++ b/test/form/samples/namespace-tostring/entry-named/_expected/amd.js @@ -0,0 +1,10 @@ +define(['exports'], function (exports) { 'use strict'; + + const foo = 42; + + exports.foo = foo; + + Object.defineProperty(exports, '__esModule', { value: true }); + exports[Symbol.toStringTag] = 'Module'; + +}); diff --git a/test/form/samples/namespace-tostring/entry-named/_expected/cjs.js b/test/form/samples/namespace-tostring/entry-named/_expected/cjs.js new file mode 100644 index 00000000000..66fbbf71292 --- /dev/null +++ b/test/form/samples/namespace-tostring/entry-named/_expected/cjs.js @@ -0,0 +1,8 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); +exports[Symbol.toStringTag] = 'Module'; + +const foo = 42; + +exports.foo = foo; diff --git a/test/form/samples/namespace-tostring/entry-named/_expected/es.js b/test/form/samples/namespace-tostring/entry-named/_expected/es.js new file mode 100644 index 00000000000..b72a22eac84 --- /dev/null +++ b/test/form/samples/namespace-tostring/entry-named/_expected/es.js @@ -0,0 +1,3 @@ +const foo = 42; + +export { foo }; diff --git a/test/form/samples/namespace-tostring/entry-named/_expected/iife.js b/test/form/samples/namespace-tostring/entry-named/_expected/iife.js new file mode 100644 index 00000000000..e5372e8d92c --- /dev/null +++ b/test/form/samples/namespace-tostring/entry-named/_expected/iife.js @@ -0,0 +1,13 @@ +var bundle = (function (exports) { + 'use strict'; + + const foo = 42; + + exports.foo = foo; + + Object.defineProperty(exports, '__esModule', { value: true }); + exports[Symbol.toStringTag] = 'Module'; + + return exports; + +}({})); diff --git a/test/form/samples/namespace-tostring/entry-named/_expected/system.js b/test/form/samples/namespace-tostring/entry-named/_expected/system.js new file mode 100644 index 00000000000..f86b5831d03 --- /dev/null +++ b/test/form/samples/namespace-tostring/entry-named/_expected/system.js @@ -0,0 +1,10 @@ +System.register('bundle', [], function (exports) { + 'use strict'; + return { + execute: function () { + + const foo = exports('foo', 42); + + } + }; +}); diff --git a/test/form/samples/namespace-tostringtag/_expected/umd.js b/test/form/samples/namespace-tostring/entry-named/_expected/umd.js similarity index 62% rename from test/form/samples/namespace-tostringtag/_expected/umd.js rename to test/form/samples/namespace-tostring/entry-named/_expected/umd.js index 2d44ffd9c59..1da1dd5513e 100644 --- a/test/form/samples/namespace-tostringtag/_expected/umd.js +++ b/test/form/samples/namespace-tostring/entry-named/_expected/umd.js @@ -1,21 +1,14 @@ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.iife = {})); + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bundle = {})); }(this, (function (exports) { 'use strict'; - var self = /*#__PURE__*/Object.freeze({ - __proto__: null, - [Symbol.toStringTag]: 'Module', - get p () { return p; } - }); + const foo = 42; - console.log(Object.keys(self)); - - var p = 5; - - exports.p = p; + exports.foo = foo; Object.defineProperty(exports, '__esModule', { value: true }); + exports[Symbol.toStringTag] = 'Module'; }))); diff --git a/test/form/samples/namespace-tostring/entry-named/main.js b/test/form/samples/namespace-tostring/entry-named/main.js new file mode 100644 index 00000000000..9d7381d29f6 --- /dev/null +++ b/test/form/samples/namespace-tostring/entry-named/main.js @@ -0,0 +1 @@ +export const foo = 42; diff --git a/test/form/samples/namespace-tostring/external-namespaces/_config.js b/test/form/samples/namespace-tostring/external-namespaces/_config.js new file mode 100644 index 00000000000..a6cacfa987a --- /dev/null +++ b/test/form/samples/namespace-tostring/external-namespaces/_config.js @@ -0,0 +1,28 @@ +module.exports = { + description: 'adds Symbol.toStringTag property to external namespaces', + options: { + external(id) { + return id.startsWith('external'); + }, + output: { + namespaceToStringTag: true, + globals: { + 'external-auto': 'externalAuto', + 'external-default': 'externalDefault', + 'external-defaultOnly': 'externalDefaultOnly' + }, + interop(id) { + switch (id) { + case 'external-auto': + return 'auto'; + case 'external-default': + return 'default'; + case 'external-defaultOnly': + return 'defaultOnly'; + default: + throw new Error(`Unexpected require "${id}"`); + } + } + } + } +}; diff --git a/test/form/samples/namespace-tostring/external-namespaces/_expected/amd.js b/test/form/samples/namespace-tostring/external-namespaces/_expected/amd.js new file mode 100644 index 00000000000..83b5adf45ba --- /dev/null +++ b/test/form/samples/namespace-tostring/external-namespaces/_expected/amd.js @@ -0,0 +1,46 @@ +define(['external-auto', 'external-default', 'external-defaultOnly'], function (externalAuto, externalDefault, externalDefaultOnly) { 'use strict'; + + function _interopNamespace(e) { + return e && e.__esModule ? e : _interopNamespaceDefault(e); + } + + function _interopNamespaceDefault(e) { + var n = {__proto__: null, [Symbol.toStringTag]: 'Module'}; + if (e) { + Object.keys(e).forEach(function (k) { + if (k !== 'default') { + var d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: function () { + return e[k]; + } + }); + } + }); + } + n['default'] = e; + return Object.freeze(n); + } + + function _interopNamespaceDefaultOnly(e) { + return Object.freeze({__proto__: null, [Symbol.toStringTag]: 'Module', 'default': e}); + } + + var externalAuto__namespace = /*#__PURE__*/_interopNamespace(externalAuto); + var externalDefault__namespace = /*#__PURE__*/_interopNamespaceDefault(externalDefault); + var externalDefaultOnly__namespace = /*#__PURE__*/_interopNamespaceDefaultOnly(externalDefaultOnly); + + assert.strictEqual(externalAuto__namespace[Symbol.toStringTag], 'Module'); + assert.strictEqual(Object.prototype.toString.call(externalAuto__namespace), '[object Module]'); + assert.strictEqual(externalAuto.foo, 42); + + assert.strictEqual(externalDefault__namespace[Symbol.toStringTag], 'Module'); + assert.strictEqual(Object.prototype.toString.call(externalDefault__namespace), '[object Module]'); + assert.strictEqual(externalDefault.foo, 42); + + assert.strictEqual(externalDefaultOnly__namespace[Symbol.toStringTag], 'Module'); + assert.strictEqual(Object.prototype.toString.call(externalDefaultOnly__namespace), '[object Module]'); + assert.deepStrictEqual(externalDefaultOnly, { foo: 42 }); + +}); diff --git a/test/form/samples/namespace-tostring/external-namespaces/_expected/cjs.js b/test/form/samples/namespace-tostring/external-namespaces/_expected/cjs.js new file mode 100644 index 00000000000..9edd682a7f1 --- /dev/null +++ b/test/form/samples/namespace-tostring/external-namespaces/_expected/cjs.js @@ -0,0 +1,48 @@ +'use strict'; + +var externalAuto = require('external-auto'); +var externalDefault = require('external-default'); +var externalDefaultOnly = require('external-defaultOnly'); + +function _interopNamespace(e) { + return e && e.__esModule ? e : _interopNamespaceDefault(e); +} + +function _interopNamespaceDefault(e) { + var n = {__proto__: null, [Symbol.toStringTag]: 'Module'}; + if (e) { + Object.keys(e).forEach(function (k) { + if (k !== 'default') { + var d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: function () { + return e[k]; + } + }); + } + }); + } + n['default'] = e; + return Object.freeze(n); +} + +function _interopNamespaceDefaultOnly(e) { + return Object.freeze({__proto__: null, [Symbol.toStringTag]: 'Module', 'default': e}); +} + +var externalAuto__namespace = /*#__PURE__*/_interopNamespace(externalAuto); +var externalDefault__namespace = /*#__PURE__*/_interopNamespaceDefault(externalDefault); +var externalDefaultOnly__namespace = /*#__PURE__*/_interopNamespaceDefaultOnly(externalDefaultOnly); + +assert.strictEqual(externalAuto__namespace[Symbol.toStringTag], 'Module'); +assert.strictEqual(Object.prototype.toString.call(externalAuto__namespace), '[object Module]'); +assert.strictEqual(externalAuto.foo, 42); + +assert.strictEqual(externalDefault__namespace[Symbol.toStringTag], 'Module'); +assert.strictEqual(Object.prototype.toString.call(externalDefault__namespace), '[object Module]'); +assert.strictEqual(externalDefault.foo, 42); + +assert.strictEqual(externalDefaultOnly__namespace[Symbol.toStringTag], 'Module'); +assert.strictEqual(Object.prototype.toString.call(externalDefaultOnly__namespace), '[object Module]'); +assert.deepStrictEqual(externalDefaultOnly, { foo: 42 }); diff --git a/test/form/samples/namespace-tostring/external-namespaces/_expected/es.js b/test/form/samples/namespace-tostring/external-namespaces/_expected/es.js new file mode 100644 index 00000000000..671fa51e9c1 --- /dev/null +++ b/test/form/samples/namespace-tostring/external-namespaces/_expected/es.js @@ -0,0 +1,18 @@ +import * as externalAuto from 'external-auto'; +import { foo } from 'external-auto'; +import * as externalDefault from 'external-default'; +import { foo as foo$1 } from 'external-default'; +import * as externalDefaultOnly from 'external-defaultOnly'; +import externalDefaultOnly__default from 'external-defaultOnly'; + +assert.strictEqual(externalAuto[Symbol.toStringTag], 'Module'); +assert.strictEqual(Object.prototype.toString.call(externalAuto), '[object Module]'); +assert.strictEqual(foo, 42); + +assert.strictEqual(externalDefault[Symbol.toStringTag], 'Module'); +assert.strictEqual(Object.prototype.toString.call(externalDefault), '[object Module]'); +assert.strictEqual(foo$1, 42); + +assert.strictEqual(externalDefaultOnly[Symbol.toStringTag], 'Module'); +assert.strictEqual(Object.prototype.toString.call(externalDefaultOnly), '[object Module]'); +assert.deepStrictEqual(externalDefaultOnly__default, { foo: 42 }); diff --git a/test/form/samples/namespace-tostring/external-namespaces/_expected/iife.js b/test/form/samples/namespace-tostring/external-namespaces/_expected/iife.js new file mode 100644 index 00000000000..982f9db82fd --- /dev/null +++ b/test/form/samples/namespace-tostring/external-namespaces/_expected/iife.js @@ -0,0 +1,47 @@ +(function (externalAuto, externalDefault, externalDefaultOnly) { + 'use strict'; + + function _interopNamespace(e) { + return e && e.__esModule ? e : _interopNamespaceDefault(e); + } + + function _interopNamespaceDefault(e) { + var n = {__proto__: null, [Symbol.toStringTag]: 'Module'}; + if (e) { + Object.keys(e).forEach(function (k) { + if (k !== 'default') { + var d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: function () { + return e[k]; + } + }); + } + }); + } + n['default'] = e; + return Object.freeze(n); + } + + function _interopNamespaceDefaultOnly(e) { + return Object.freeze({__proto__: null, [Symbol.toStringTag]: 'Module', 'default': e}); + } + + var externalAuto__namespace = /*#__PURE__*/_interopNamespace(externalAuto); + var externalDefault__namespace = /*#__PURE__*/_interopNamespaceDefault(externalDefault); + var externalDefaultOnly__namespace = /*#__PURE__*/_interopNamespaceDefaultOnly(externalDefaultOnly); + + assert.strictEqual(externalAuto__namespace[Symbol.toStringTag], 'Module'); + assert.strictEqual(Object.prototype.toString.call(externalAuto__namespace), '[object Module]'); + assert.strictEqual(externalAuto.foo, 42); + + assert.strictEqual(externalDefault__namespace[Symbol.toStringTag], 'Module'); + assert.strictEqual(Object.prototype.toString.call(externalDefault__namespace), '[object Module]'); + assert.strictEqual(externalDefault.foo, 42); + + assert.strictEqual(externalDefaultOnly__namespace[Symbol.toStringTag], 'Module'); + assert.strictEqual(Object.prototype.toString.call(externalDefaultOnly__namespace), '[object Module]'); + assert.deepStrictEqual(externalDefaultOnly, { foo: 42 }); + +}(externalAuto, externalDefault, externalDefaultOnly)); diff --git a/test/form/samples/namespace-tostring/external-namespaces/_expected/system.js b/test/form/samples/namespace-tostring/external-namespaces/_expected/system.js new file mode 100644 index 00000000000..28f5316f021 --- /dev/null +++ b/test/form/samples/namespace-tostring/external-namespaces/_expected/system.js @@ -0,0 +1,31 @@ +System.register(['external-auto', 'external-default', 'external-defaultOnly'], function () { + 'use strict'; + var externalAuto, foo, externalDefault, foo$1, externalDefaultOnly, externalDefaultOnly__default; + return { + setters: [function (module) { + externalAuto = module; + foo = module.foo; + }, function (module) { + externalDefault = module; + foo$1 = module.foo; + }, function (module) { + externalDefaultOnly = module; + externalDefaultOnly__default = module.default; + }], + execute: function () { + + assert.strictEqual(externalAuto[Symbol.toStringTag], 'Module'); + assert.strictEqual(Object.prototype.toString.call(externalAuto), '[object Module]'); + assert.strictEqual(foo, 42); + + assert.strictEqual(externalDefault[Symbol.toStringTag], 'Module'); + assert.strictEqual(Object.prototype.toString.call(externalDefault), '[object Module]'); + assert.strictEqual(foo$1, 42); + + assert.strictEqual(externalDefaultOnly[Symbol.toStringTag], 'Module'); + assert.strictEqual(Object.prototype.toString.call(externalDefaultOnly), '[object Module]'); + assert.deepStrictEqual(externalDefaultOnly__default, { foo: 42 }); + + } + }; +}); diff --git a/test/form/samples/namespace-tostring/external-namespaces/_expected/umd.js b/test/form/samples/namespace-tostring/external-namespaces/_expected/umd.js new file mode 100644 index 00000000000..0c8383bb46c --- /dev/null +++ b/test/form/samples/namespace-tostring/external-namespaces/_expected/umd.js @@ -0,0 +1,50 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('external-auto'), require('external-default'), require('external-defaultOnly')) : + typeof define === 'function' && define.amd ? define(['external-auto', 'external-default', 'external-defaultOnly'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.externalAuto, global.externalDefault, global.externalDefaultOnly)); +}(this, (function (externalAuto, externalDefault, externalDefaultOnly) { 'use strict'; + + function _interopNamespace(e) { + return e && e.__esModule ? e : _interopNamespaceDefault(e); + } + + function _interopNamespaceDefault(e) { + var n = {__proto__: null, [Symbol.toStringTag]: 'Module'}; + if (e) { + Object.keys(e).forEach(function (k) { + if (k !== 'default') { + var d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: function () { + return e[k]; + } + }); + } + }); + } + n['default'] = e; + return Object.freeze(n); + } + + function _interopNamespaceDefaultOnly(e) { + return Object.freeze({__proto__: null, [Symbol.toStringTag]: 'Module', 'default': e}); + } + + var externalAuto__namespace = /*#__PURE__*/_interopNamespace(externalAuto); + var externalDefault__namespace = /*#__PURE__*/_interopNamespaceDefault(externalDefault); + var externalDefaultOnly__namespace = /*#__PURE__*/_interopNamespaceDefaultOnly(externalDefaultOnly); + + assert.strictEqual(externalAuto__namespace[Symbol.toStringTag], 'Module'); + assert.strictEqual(Object.prototype.toString.call(externalAuto__namespace), '[object Module]'); + assert.strictEqual(externalAuto.foo, 42); + + assert.strictEqual(externalDefault__namespace[Symbol.toStringTag], 'Module'); + assert.strictEqual(Object.prototype.toString.call(externalDefault__namespace), '[object Module]'); + assert.strictEqual(externalDefault.foo, 42); + + assert.strictEqual(externalDefaultOnly__namespace[Symbol.toStringTag], 'Module'); + assert.strictEqual(Object.prototype.toString.call(externalDefaultOnly__namespace), '[object Module]'); + assert.deepStrictEqual(externalDefaultOnly, { foo: 42 }); + +}))); diff --git a/test/form/samples/namespace-tostring/external-namespaces/main.js b/test/form/samples/namespace-tostring/external-namespaces/main.js new file mode 100644 index 00000000000..978de6a2cb4 --- /dev/null +++ b/test/form/samples/namespace-tostring/external-namespaces/main.js @@ -0,0 +1,15 @@ +import * as externalAuto from 'external-auto'; +import * as externalDefault from 'external-default'; +import * as externalDefaultOnly from 'external-defaultOnly'; + +assert.strictEqual(externalAuto[Symbol.toStringTag], 'Module'); +assert.strictEqual(Object.prototype.toString.call(externalAuto), '[object Module]'); +assert.strictEqual(externalAuto.foo, 42); + +assert.strictEqual(externalDefault[Symbol.toStringTag], 'Module'); +assert.strictEqual(Object.prototype.toString.call(externalDefault), '[object Module]'); +assert.strictEqual(externalDefault.foo, 42); + +assert.strictEqual(externalDefaultOnly[Symbol.toStringTag], 'Module'); +assert.strictEqual(Object.prototype.toString.call(externalDefaultOnly), '[object Module]'); +assert.deepStrictEqual(externalDefaultOnly.default, { foo: 42 }); diff --git a/test/form/samples/namespace-tostring/inlined-namespace/_config.js b/test/form/samples/namespace-tostring/inlined-namespace/_config.js new file mode 100644 index 00000000000..62ccb9bf2cc --- /dev/null +++ b/test/form/samples/namespace-tostring/inlined-namespace/_config.js @@ -0,0 +1,8 @@ +module.exports = { + description: 'adds Symbol.toStringTag property to inlined namespaces', + options: { + output: { + namespaceToStringTag: true + } + } +}; diff --git a/test/form/samples/namespace-tostring/inlined-namespace/_expected/amd.js b/test/form/samples/namespace-tostring/inlined-namespace/_expected/amd.js new file mode 100644 index 00000000000..98a30ca049a --- /dev/null +++ b/test/form/samples/namespace-tostring/inlined-namespace/_expected/amd.js @@ -0,0 +1,15 @@ +define(function () { 'use strict'; + + const bar = 42; + + var foo = /*#__PURE__*/Object.freeze({ + __proto__: null, + [Symbol.toStringTag]: 'Module', + bar: bar + }); + + assert.strictEqual(foo[Symbol.toStringTag], 'Module'); + assert.strictEqual(Object.prototype.toString.call(foo), '[object Module]'); + assert.strictEqual(bar, 42); + +}); diff --git a/test/form/samples/namespace-tostring/inlined-namespace/_expected/cjs.js b/test/form/samples/namespace-tostring/inlined-namespace/_expected/cjs.js new file mode 100644 index 00000000000..72ea5c72080 --- /dev/null +++ b/test/form/samples/namespace-tostring/inlined-namespace/_expected/cjs.js @@ -0,0 +1,13 @@ +'use strict'; + +const bar = 42; + +var foo = /*#__PURE__*/Object.freeze({ + __proto__: null, + [Symbol.toStringTag]: 'Module', + bar: bar +}); + +assert.strictEqual(foo[Symbol.toStringTag], 'Module'); +assert.strictEqual(Object.prototype.toString.call(foo), '[object Module]'); +assert.strictEqual(bar, 42); diff --git a/test/form/samples/namespace-tostring/inlined-namespace/_expected/es.js b/test/form/samples/namespace-tostring/inlined-namespace/_expected/es.js new file mode 100644 index 00000000000..ae232b6b724 --- /dev/null +++ b/test/form/samples/namespace-tostring/inlined-namespace/_expected/es.js @@ -0,0 +1,11 @@ +const bar = 42; + +var foo = /*#__PURE__*/Object.freeze({ + __proto__: null, + [Symbol.toStringTag]: 'Module', + bar: bar +}); + +assert.strictEqual(foo[Symbol.toStringTag], 'Module'); +assert.strictEqual(Object.prototype.toString.call(foo), '[object Module]'); +assert.strictEqual(bar, 42); diff --git a/test/form/samples/namespace-tostring/inlined-namespace/_expected/iife.js b/test/form/samples/namespace-tostring/inlined-namespace/_expected/iife.js new file mode 100644 index 00000000000..7902a3a3d4b --- /dev/null +++ b/test/form/samples/namespace-tostring/inlined-namespace/_expected/iife.js @@ -0,0 +1,16 @@ +(function () { + 'use strict'; + + const bar = 42; + + var foo = /*#__PURE__*/Object.freeze({ + __proto__: null, + [Symbol.toStringTag]: 'Module', + bar: bar + }); + + assert.strictEqual(foo[Symbol.toStringTag], 'Module'); + assert.strictEqual(Object.prototype.toString.call(foo), '[object Module]'); + assert.strictEqual(bar, 42); + +}()); diff --git a/test/form/samples/namespace-tostring/inlined-namespace/_expected/system.js b/test/form/samples/namespace-tostring/inlined-namespace/_expected/system.js new file mode 100644 index 00000000000..857ef5aea99 --- /dev/null +++ b/test/form/samples/namespace-tostring/inlined-namespace/_expected/system.js @@ -0,0 +1,20 @@ +System.register([], function () { + 'use strict'; + return { + execute: function () { + + const bar = 42; + + var foo = /*#__PURE__*/Object.freeze({ + __proto__: null, + [Symbol.toStringTag]: 'Module', + bar: bar + }); + + assert.strictEqual(foo[Symbol.toStringTag], 'Module'); + assert.strictEqual(Object.prototype.toString.call(foo), '[object Module]'); + assert.strictEqual(bar, 42); + + } + }; +}); diff --git a/test/form/samples/namespace-tostring/inlined-namespace/_expected/umd.js b/test/form/samples/namespace-tostring/inlined-namespace/_expected/umd.js new file mode 100644 index 00000000000..191811d7058 --- /dev/null +++ b/test/form/samples/namespace-tostring/inlined-namespace/_expected/umd.js @@ -0,0 +1,18 @@ +(function (factory) { + typeof define === 'function' && define.amd ? define(factory) : + factory(); +}((function () { 'use strict'; + + const bar = 42; + + var foo = /*#__PURE__*/Object.freeze({ + __proto__: null, + [Symbol.toStringTag]: 'Module', + bar: bar + }); + + assert.strictEqual(foo[Symbol.toStringTag], 'Module'); + assert.strictEqual(Object.prototype.toString.call(foo), '[object Module]'); + assert.strictEqual(bar, 42); + +}))); diff --git a/test/form/samples/namespace-tostring/inlined-namespace/foo.js b/test/form/samples/namespace-tostring/inlined-namespace/foo.js new file mode 100644 index 00000000000..308e102fe9a --- /dev/null +++ b/test/form/samples/namespace-tostring/inlined-namespace/foo.js @@ -0,0 +1 @@ +export const bar = 42; diff --git a/test/form/samples/namespace-tostring/inlined-namespace/main.js b/test/form/samples/namespace-tostring/inlined-namespace/main.js new file mode 100644 index 00000000000..fb6b24345ef --- /dev/null +++ b/test/form/samples/namespace-tostring/inlined-namespace/main.js @@ -0,0 +1,5 @@ +import * as foo from './foo'; + +assert.strictEqual(foo[Symbol.toStringTag], 'Module'); +assert.strictEqual(Object.prototype.toString.call(foo), '[object Module]'); +assert.strictEqual(foo.bar, 42); diff --git a/test/form/samples/namespace-tostringtag/_config.js b/test/form/samples/namespace-tostringtag/_config.js deleted file mode 100644 index 9c5b2cd117a..00000000000 --- a/test/form/samples/namespace-tostringtag/_config.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - description: 'namespace toStringTag support', - expectedWarnings: ['CIRCULAR_DEPENDENCY'], - options: { - output: { - name: 'iife', - namespaceToStringTag: true - } - } -}; diff --git a/test/form/samples/namespace-tostringtag/_expected/amd.js b/test/form/samples/namespace-tostringtag/_expected/amd.js deleted file mode 100644 index 28ab2705d81..00000000000 --- a/test/form/samples/namespace-tostringtag/_expected/amd.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['exports'], function (exports) { 'use strict'; - - var self = /*#__PURE__*/Object.freeze({ - __proto__: null, - [Symbol.toStringTag]: 'Module', - get p () { return p; } - }); - - console.log(Object.keys(self)); - - var p = 5; - - exports.p = p; - - Object.defineProperty(exports, '__esModule', { value: true }); - -}); diff --git a/test/form/samples/namespace-tostringtag/_expected/cjs.js b/test/form/samples/namespace-tostringtag/_expected/cjs.js deleted file mode 100644 index 97f13a09c4c..00000000000 --- a/test/form/samples/namespace-tostringtag/_expected/cjs.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var self = /*#__PURE__*/Object.freeze({ - __proto__: null, - [Symbol.toStringTag]: 'Module', - get p () { return p; } -}); - -console.log(Object.keys(self)); - -var p = 5; - -exports.p = p; diff --git a/test/form/samples/namespace-tostringtag/_expected/es.js b/test/form/samples/namespace-tostringtag/_expected/es.js deleted file mode 100644 index a7cd93962ea..00000000000 --- a/test/form/samples/namespace-tostringtag/_expected/es.js +++ /dev/null @@ -1,11 +0,0 @@ -var self = /*#__PURE__*/Object.freeze({ - __proto__: null, - [Symbol.toStringTag]: 'Module', - get p () { return p; } -}); - -console.log(Object.keys(self)); - -var p = 5; - -export { p }; diff --git a/test/form/samples/namespace-tostringtag/_expected/iife.js b/test/form/samples/namespace-tostringtag/_expected/iife.js deleted file mode 100644 index f96940def5c..00000000000 --- a/test/form/samples/namespace-tostringtag/_expected/iife.js +++ /dev/null @@ -1,18 +0,0 @@ -var iife = (function (exports) { - 'use strict'; - - var self = /*#__PURE__*/Object.freeze({ - __proto__: null, - [Symbol.toStringTag]: 'Module', - get p () { return p; } - }); - - console.log(Object.keys(self)); - - var p = 5; - - exports.p = p; - - return exports; - -}({})); diff --git a/test/form/samples/namespace-tostringtag/_expected/system.js b/test/form/samples/namespace-tostringtag/_expected/system.js deleted file mode 100644 index 5ee50d33a91..00000000000 --- a/test/form/samples/namespace-tostringtag/_expected/system.js +++ /dev/null @@ -1,18 +0,0 @@ -System.register('iife', [], function (exports) { - 'use strict'; - return { - execute: function () { - - var self = /*#__PURE__*/Object.freeze({ - __proto__: null, - [Symbol.toStringTag]: 'Module', - get p () { return p; } - }); - - console.log(Object.keys(self)); - - var p = exports('p', 5); - - } - }; -}); diff --git a/test/form/samples/namespace-tostringtag/main.js b/test/form/samples/namespace-tostringtag/main.js deleted file mode 100644 index 7fe87989c8d..00000000000 --- a/test/form/samples/namespace-tostringtag/main.js +++ /dev/null @@ -1,5 +0,0 @@ -import * as self from './main.js'; - -console.log(Object.keys(self)); - -export var p = 5; \ No newline at end of file diff --git a/test/form/samples/namespaced-named-exports/_expected/iife.js b/test/form/samples/namespaced-named-exports/_expected/iife.js index 5376c55e5d7..5f61e011c49 100644 --- a/test/form/samples/namespaced-named-exports/_expected/iife.js +++ b/test/form/samples/namespaced-named-exports/_expected/iife.js @@ -7,6 +7,8 @@ this.foo.bar.baz = (function (exports) { exports.answer = answer; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/namespaces-have-null-prototype/_expected/iife.js b/test/form/samples/namespaces-have-null-prototype/_expected/iife.js index e31bea3b476..577cfbf55c6 100644 --- a/test/form/samples/namespaces-have-null-prototype/_expected/iife.js +++ b/test/form/samples/namespaces-have-null-prototype/_expected/iife.js @@ -18,6 +18,8 @@ var myBundle = (function (exports) { exports.a = a; exports.b = b; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/no-external-live-bindings-compact/_expected/iife.js b/test/form/samples/no-external-live-bindings-compact/_expected/iife.js index cd8913be2b7..ee7c1ced09e 100644 --- a/test/form/samples/no-external-live-bindings-compact/_expected/iife.js +++ b/test/form/samples/no-external-live-bindings-compact/_expected/iife.js @@ -1 +1 @@ -var bundle=(function(exports,external1,external2){'use strict';const dynamic = import('external3');Object.keys(external2).forEach(function(k){if(k!=='default')exports[k]=external2[k];});exports.external1=external1.external1;exports.dynamic=dynamic;return exports;}({},external1,external2)); \ No newline at end of file +var bundle=(function(exports,external1,external2){'use strict';const dynamic = import('external3');Object.keys(external2).forEach(function(k){if(k!=='default')exports[k]=external2[k];});exports.external1=external1.external1;exports.dynamic=dynamic;Object.defineProperty(exports,'__esModule',{value:true});return exports;}({},external1,external2)); \ No newline at end of file diff --git a/test/form/samples/no-external-live-bindings/_expected/iife.js b/test/form/samples/no-external-live-bindings/_expected/iife.js index 9899e626363..c04023a4d98 100644 --- a/test/form/samples/no-external-live-bindings/_expected/iife.js +++ b/test/form/samples/no-external-live-bindings/_expected/iife.js @@ -9,6 +9,8 @@ var bundle = (function (exports, external1, external2) { exports.external1 = external1.external1; exports.dynamic = dynamic; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, external1, external2)); diff --git a/test/form/samples/ns-external-star-reexport/_expected/iife.js b/test/form/samples/ns-external-star-reexport/_expected/iife.js index fdc8f17ef6b..d1dd7978230 100644 --- a/test/form/samples/ns-external-star-reexport/_expected/iife.js +++ b/test/form/samples/ns-external-star-reexport/_expected/iife.js @@ -40,6 +40,8 @@ var bundle = (function (exports, external1, external2) { exports.external = reexportExternal; exports.externalOverride = reexportExternalsWithOverride$1; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, external1, external2)); diff --git a/test/form/samples/output-named-library/_expected/iife.js b/test/form/samples/output-named-library/_expected/iife.js index f582e3fbc61..27d919720ab 100644 --- a/test/form/samples/output-named-library/_expected/iife.js +++ b/test/form/samples/output-named-library/_expected/iife.js @@ -5,6 +5,8 @@ var libraryName = (function (exports) { exports.valueOnLib = valueOnLib; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/pattern-assignments/_expected/iife.js b/test/form/samples/pattern-assignments/_expected/iife.js index 1eee190542c..ac6e218fa45 100644 --- a/test/form/samples/pattern-assignments/_expected/iife.js +++ b/test/form/samples/pattern-assignments/_expected/iife.js @@ -40,6 +40,8 @@ var bundle = (function (exports) { exports.u = u; exports.v = v; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/preserves-comments-after-imports/_expected/iife.js b/test/form/samples/preserves-comments-after-imports/_expected/iife.js index 2964142947f..8825245def6 100644 --- a/test/form/samples/preserves-comments-after-imports/_expected/iife.js +++ b/test/form/samples/preserves-comments-after-imports/_expected/iife.js @@ -9,6 +9,8 @@ var myBundle = (function (exports) { exports.obj = obj; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/promises/_expected/iife.js b/test/form/samples/promises/_expected/iife.js index 4839c233bed..ffcfdf46a79 100644 --- a/test/form/samples/promises/_expected/iife.js +++ b/test/form/samples/promises/_expected/iife.js @@ -17,6 +17,8 @@ var bundle = (function (exports) { exports.allExported = allExported; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/protect-cjs-globals/_expected/iife.js b/test/form/samples/protect-cjs-globals/_expected/iife.js index a38758661d4..e0e8f336677 100644 --- a/test/form/samples/protect-cjs-globals/_expected/iife.js +++ b/test/form/samples/protect-cjs-globals/_expected/iife.js @@ -13,6 +13,8 @@ var bundle = (function (exports) { exports.module = module; exports.require = require; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/re-export-aliasing/_expected/iife.js b/test/form/samples/re-export-aliasing/_expected/iife.js index 3ae402e487a..a18624c85e4 100644 --- a/test/form/samples/re-export-aliasing/_expected/iife.js +++ b/test/form/samples/re-export-aliasing/_expected/iife.js @@ -10,6 +10,8 @@ var reexportsAliasingExternal = (function (exports, d) { } }); + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, d)); diff --git a/test/form/samples/reassigned-exported-functions-and-classes/_expected/iife.js b/test/form/samples/reassigned-exported-functions-and-classes/_expected/iife.js index 2672ce29508..7c826511a92 100644 --- a/test/form/samples/reassigned-exported-functions-and-classes/_expected/iife.js +++ b/test/form/samples/reassigned-exported-functions-and-classes/_expected/iife.js @@ -10,6 +10,8 @@ var bundle = (function (exports) { exports.bar = bar; exports.foo = foo; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/reexport-external-default-and-name/_expected/iife.js b/test/form/samples/reexport-external-default-and-name/_expected/iife.js index 08cf5472502..0208526b527 100644 --- a/test/form/samples/reexport-external-default-and-name/_expected/iife.js +++ b/test/form/samples/reexport-external-default-and-name/_expected/iife.js @@ -15,6 +15,8 @@ var bundle = (function (exports, external) { }); exports.value = value; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, external)); diff --git a/test/form/samples/reexport-external-default-and-namespace/_expected/iife.js b/test/form/samples/reexport-external-default-and-namespace/_expected/iife.js index d07cc451637..7898bf9307d 100644 --- a/test/form/samples/reexport-external-default-and-namespace/_expected/iife.js +++ b/test/form/samples/reexport-external-default-and-namespace/_expected/iife.js @@ -22,6 +22,8 @@ var bundle = (function (exports, external) { } }); + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, external)); diff --git a/test/form/samples/reexport-external-default-as-name-and-name/_expected/iife.js b/test/form/samples/reexport-external-default-as-name-and-name/_expected/iife.js index 05746b29381..71585cd9ae0 100644 --- a/test/form/samples/reexport-external-default-as-name-and-name/_expected/iife.js +++ b/test/form/samples/reexport-external-default-as-name-and-name/_expected/iife.js @@ -14,6 +14,8 @@ var bundle = (function (exports, external) { } }); + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, external)); diff --git a/test/form/samples/reexport-external-name/_expected/iife.js b/test/form/samples/reexport-external-name/_expected/iife.js index 0a1db335888..eb09e7a0823 100644 --- a/test/form/samples/reexport-external-name/_expected/iife.js +++ b/test/form/samples/reexport-external-name/_expected/iife.js @@ -16,6 +16,8 @@ var bundle = (function (exports, external1, external2) { } }); + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, external1, external2)); diff --git a/test/form/samples/reexport-external-namespace-as/_expected/iife.js b/test/form/samples/reexport-external-namespace-as/_expected/iife.js index 15748a109f2..15e7f8e87da 100644 --- a/test/form/samples/reexport-external-namespace-as/_expected/iife.js +++ b/test/form/samples/reexport-external-namespace-as/_expected/iife.js @@ -28,6 +28,8 @@ var bundle = (function (exports, external) { exports.external = external__namespace; exports.indirect = external__namespace; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, external)); diff --git a/test/form/samples/reexport-external-namespace/_expected/iife.js b/test/form/samples/reexport-external-namespace/_expected/iife.js index e8785f48a07..39643704416 100644 --- a/test/form/samples/reexport-external-namespace/_expected/iife.js +++ b/test/form/samples/reexport-external-namespace/_expected/iife.js @@ -12,6 +12,8 @@ var bundle = (function (exports, external) { }); }); + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, external)); diff --git a/test/form/samples/reexport-used-external-namespace-as/_expected/iife.js b/test/form/samples/reexport-used-external-namespace-as/_expected/iife.js index 763bb105317..510289677b3 100644 --- a/test/form/samples/reexport-used-external-namespace-as/_expected/iife.js +++ b/test/form/samples/reexport-used-external-namespace-as/_expected/iife.js @@ -29,6 +29,8 @@ var bundle = (function (exports, imported1, external2) { exports.external1 = imported1__namespace; exports.external2 = external2__namespace; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, external1, external2)); diff --git a/test/form/samples/render-declaration-semicolons/_expected/iife.js b/test/form/samples/render-declaration-semicolons/_expected/iife.js index dec89312ca8..dc1250b11bf 100644 --- a/test/form/samples/render-declaration-semicolons/_expected/iife.js +++ b/test/form/samples/render-declaration-semicolons/_expected/iife.js @@ -30,6 +30,8 @@ var bundle = (function (exports) { exports.o = o; exports.p = p; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/render-named-export-declarations/_expected/iife.js b/test/form/samples/render-named-export-declarations/_expected/iife.js index 5ed079c97f0..495366e72c2 100644 --- a/test/form/samples/render-named-export-declarations/_expected/iife.js +++ b/test/form/samples/render-named-export-declarations/_expected/iife.js @@ -18,6 +18,8 @@ var bundle = (function (exports) { exports.cFoo = cFoo; exports.dBar = dBar; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/resolve-external-dynamic-imports/_expected/iife.js b/test/form/samples/resolve-external-dynamic-imports/_expected/iife.js index c48a695577f..8c97dd55eec 100644 --- a/test/form/samples/resolve-external-dynamic-imports/_expected/iife.js +++ b/test/form/samples/resolve-external-dynamic-imports/_expected/iife.js @@ -12,6 +12,8 @@ var bundle = (function (exports, myExternal) { exports.someDynamicImport = someDynamicImport; exports.test = test; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({}, myExternal)); diff --git a/test/form/samples/resolve-import-meta-url-export/_expected/iife.js b/test/form/samples/resolve-import-meta-url-export/_expected/iife.js index 01304cbfda8..b71a1ed44c1 100644 --- a/test/form/samples/resolve-import-meta-url-export/_expected/iife.js +++ b/test/form/samples/resolve-import-meta-url-export/_expected/iife.js @@ -7,6 +7,8 @@ var bundle = (function (exports) { exports.meta = meta; exports.url = url; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/side-effects-delete/_expected/iife.js b/test/form/samples/side-effects-delete/_expected/iife.js index a90e0231e0c..239b0edd91f 100644 --- a/test/form/samples/side-effects-delete/_expected/iife.js +++ b/test/form/samples/side-effects-delete/_expected/iife.js @@ -8,6 +8,8 @@ var myBundle = (function (exports) { exports.x = x; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/sourcemaps-excludesources/_expected/amd.js.map b/test/form/samples/sourcemaps-excludesources/_expected/amd.js.map index 20f099e6f4a..82d62c89122 100644 --- a/test/form/samples/sourcemaps-excludesources/_expected/amd.js.map +++ b/test/form/samples/sourcemaps-excludesources/_expected/amd.js.map @@ -1 +1 @@ -{"version":3,"file":"amd.js","sources":["../foo.js","../bar.js","../main.js"],"sourcesContent":null,"names":[],"mappings":";;CAAe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCFe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCCA,OAAO,CAAC,GAAG,EAAE,oBAAoB,EAAE,CAAC;AACpC;CACA,GAAG,EAAE,CAAC;CACN,GAAG,EAAE;;;;"} \ No newline at end of file +{"version":3,"file":"amd.js","sources":["../foo.js","../bar.js","../main.js"],"sourcesContent":null,"names":[],"mappings":";;CAAe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCFe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCCA,OAAO,CAAC,GAAG,EAAE,oBAAoB,EAAE,CAAC;AACpC;CACA,GAAG,EAAE,CAAC;CACN,GAAG,EAAE;;;;;;"} \ No newline at end of file diff --git a/test/form/samples/sourcemaps-excludesources/_expected/umd.js.map b/test/form/samples/sourcemaps-excludesources/_expected/umd.js.map index c259c90d580..d501410fe74 100644 --- a/test/form/samples/sourcemaps-excludesources/_expected/umd.js.map +++ b/test/form/samples/sourcemaps-excludesources/_expected/umd.js.map @@ -1 +1 @@ -{"version":3,"file":"umd.js","sources":["../foo.js","../bar.js","../main.js"],"sourcesContent":null,"names":[],"mappings":";;;;;CAAe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCFe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCCA,OAAO,CAAC,GAAG,EAAE,oBAAoB,EAAE,CAAC;AACpC;CACA,GAAG,EAAE,CAAC;CACN,GAAG,EAAE;;;;"} \ No newline at end of file +{"version":3,"file":"umd.js","sources":["../foo.js","../bar.js","../main.js"],"sourcesContent":null,"names":[],"mappings":";;;;;CAAe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCFe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCCA,OAAO,CAAC,GAAG,EAAE,oBAAoB,EAAE,CAAC;AACpC;CACA,GAAG,EAAE,CAAC;CACN,GAAG,EAAE;;;;;;"} \ No newline at end of file diff --git a/test/form/samples/sourcemaps-external/_expected/amd.js.map b/test/form/samples/sourcemaps-external/_expected/amd.js.map index 81e6574a1f7..a648595809d 100644 --- a/test/form/samples/sourcemaps-external/_expected/amd.js.map +++ b/test/form/samples/sourcemaps-external/_expected/amd.js.map @@ -1 +1 @@ -{"version":3,"file":"amd.js","sources":["../foo.js","../bar.js","../main.js"],"sourcesContent":["export default function foo () {\n\tconsole.log( 'hello from foo.js' );\n}\n","export default function bar () {\n\tconsole.log( 'hello from bar.js' );\n}\n","import foo from './foo';\nimport bar from './bar';\n\nconsole.log( 'hello from main.js' );\n\nfoo();\nbar();\n"],"names":[],"mappings":";;CAAe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCFe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCCA,OAAO,CAAC,GAAG,EAAE,oBAAoB,EAAE,CAAC;AACpC;CACA,GAAG,EAAE,CAAC;CACN,GAAG,EAAE;;;;"} \ No newline at end of file +{"version":3,"file":"amd.js","sources":["../foo.js","../bar.js","../main.js"],"sourcesContent":["export default function foo () {\n\tconsole.log( 'hello from foo.js' );\n}\n","export default function bar () {\n\tconsole.log( 'hello from bar.js' );\n}\n","import foo from './foo';\nimport bar from './bar';\n\nconsole.log( 'hello from main.js' );\n\nfoo();\nbar();\n"],"names":[],"mappings":";;CAAe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCFe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCCA,OAAO,CAAC,GAAG,EAAE,oBAAoB,EAAE,CAAC;AACpC;CACA,GAAG,EAAE,CAAC;CACN,GAAG,EAAE;;;;;;"} \ No newline at end of file diff --git a/test/form/samples/sourcemaps-external/_expected/umd.js.map b/test/form/samples/sourcemaps-external/_expected/umd.js.map index 87d7532191f..fc2be5fdd43 100644 --- a/test/form/samples/sourcemaps-external/_expected/umd.js.map +++ b/test/form/samples/sourcemaps-external/_expected/umd.js.map @@ -1 +1 @@ -{"version":3,"file":"umd.js","sources":["../foo.js","../bar.js","../main.js"],"sourcesContent":["export default function foo () {\n\tconsole.log( 'hello from foo.js' );\n}\n","export default function bar () {\n\tconsole.log( 'hello from bar.js' );\n}\n","import foo from './foo';\nimport bar from './bar';\n\nconsole.log( 'hello from main.js' );\n\nfoo();\nbar();\n"],"names":[],"mappings":";;;;;CAAe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCFe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCCA,OAAO,CAAC,GAAG,EAAE,oBAAoB,EAAE,CAAC;AACpC;CACA,GAAG,EAAE,CAAC;CACN,GAAG,EAAE;;;;"} \ No newline at end of file +{"version":3,"file":"umd.js","sources":["../foo.js","../bar.js","../main.js"],"sourcesContent":["export default function foo () {\n\tconsole.log( 'hello from foo.js' );\n}\n","export default function bar () {\n\tconsole.log( 'hello from bar.js' );\n}\n","import foo from './foo';\nimport bar from './bar';\n\nconsole.log( 'hello from main.js' );\n\nfoo();\nbar();\n"],"names":[],"mappings":";;;;;CAAe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCFe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCCA,OAAO,CAAC,GAAG,EAAE,oBAAoB,EAAE,CAAC;AACpC;CACA,GAAG,EAAE,CAAC;CACN,GAAG,EAAE;;;;;;"} \ No newline at end of file diff --git a/test/form/samples/sourcemaps-hidden/_expected/amd.js.map b/test/form/samples/sourcemaps-hidden/_expected/amd.js.map index 81e6574a1f7..a648595809d 100644 --- a/test/form/samples/sourcemaps-hidden/_expected/amd.js.map +++ b/test/form/samples/sourcemaps-hidden/_expected/amd.js.map @@ -1 +1 @@ -{"version":3,"file":"amd.js","sources":["../foo.js","../bar.js","../main.js"],"sourcesContent":["export default function foo () {\n\tconsole.log( 'hello from foo.js' );\n}\n","export default function bar () {\n\tconsole.log( 'hello from bar.js' );\n}\n","import foo from './foo';\nimport bar from './bar';\n\nconsole.log( 'hello from main.js' );\n\nfoo();\nbar();\n"],"names":[],"mappings":";;CAAe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCFe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCCA,OAAO,CAAC,GAAG,EAAE,oBAAoB,EAAE,CAAC;AACpC;CACA,GAAG,EAAE,CAAC;CACN,GAAG,EAAE;;;;"} \ No newline at end of file +{"version":3,"file":"amd.js","sources":["../foo.js","../bar.js","../main.js"],"sourcesContent":["export default function foo () {\n\tconsole.log( 'hello from foo.js' );\n}\n","export default function bar () {\n\tconsole.log( 'hello from bar.js' );\n}\n","import foo from './foo';\nimport bar from './bar';\n\nconsole.log( 'hello from main.js' );\n\nfoo();\nbar();\n"],"names":[],"mappings":";;CAAe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCFe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCCA,OAAO,CAAC,GAAG,EAAE,oBAAoB,EAAE,CAAC;AACpC;CACA,GAAG,EAAE,CAAC;CACN,GAAG,EAAE;;;;;;"} \ No newline at end of file diff --git a/test/form/samples/sourcemaps-hidden/_expected/umd.js.map b/test/form/samples/sourcemaps-hidden/_expected/umd.js.map index 87d7532191f..fc2be5fdd43 100644 --- a/test/form/samples/sourcemaps-hidden/_expected/umd.js.map +++ b/test/form/samples/sourcemaps-hidden/_expected/umd.js.map @@ -1 +1 @@ -{"version":3,"file":"umd.js","sources":["../foo.js","../bar.js","../main.js"],"sourcesContent":["export default function foo () {\n\tconsole.log( 'hello from foo.js' );\n}\n","export default function bar () {\n\tconsole.log( 'hello from bar.js' );\n}\n","import foo from './foo';\nimport bar from './bar';\n\nconsole.log( 'hello from main.js' );\n\nfoo();\nbar();\n"],"names":[],"mappings":";;;;;CAAe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCFe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCCA,OAAO,CAAC,GAAG,EAAE,oBAAoB,EAAE,CAAC;AACpC;CACA,GAAG,EAAE,CAAC;CACN,GAAG,EAAE;;;;"} \ No newline at end of file +{"version":3,"file":"umd.js","sources":["../foo.js","../bar.js","../main.js"],"sourcesContent":["export default function foo () {\n\tconsole.log( 'hello from foo.js' );\n}\n","export default function bar () {\n\tconsole.log( 'hello from bar.js' );\n}\n","import foo from './foo';\nimport bar from './bar';\n\nconsole.log( 'hello from main.js' );\n\nfoo();\nbar();\n"],"names":[],"mappings":";;;;;CAAe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCFe,SAAS,GAAG,IAAI;CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC;CACpC;;CCCA,OAAO,CAAC,GAAG,EAAE,oBAAoB,EAAE,CAAC;AACpC;CACA,GAAG,EAAE,CAAC;CACN,GAAG,EAAE;;;;;;"} \ No newline at end of file diff --git a/test/form/samples/sourcemaps-inline/_expected/amd.js b/test/form/samples/sourcemaps-inline/_expected/amd.js index 872180f61e7..7f95f5174dd 100644 --- a/test/form/samples/sourcemaps-inline/_expected/amd.js +++ b/test/form/samples/sourcemaps-inline/_expected/amd.js @@ -14,4 +14,4 @@ define(function () { 'use strict'; bar(); }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1kLmpzIiwic291cmNlcyI6WyIuLi9mb28uanMiLCIuLi9iYXIuanMiLCIuLi9tYWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvbyAoKSB7XG5cdGNvbnNvbGUubG9nKCAnaGVsbG8gZnJvbSBmb28uanMnICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBiYXIgKCkge1xuXHRjb25zb2xlLmxvZyggJ2hlbGxvIGZyb20gYmFyLmpzJyApO1xufVxuIiwiaW1wb3J0IGZvbyBmcm9tICcuL2Zvbyc7XG5pbXBvcnQgYmFyIGZyb20gJy4vYmFyJztcblxuY29uc29sZS5sb2coICdoZWxsbyBmcm9tIG1haW4uanMnICk7XG5cbmZvbygpO1xuYmFyKCk7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Q0FBZSxTQUFTLEdBQUcsSUFBSTtDQUMvQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztDQUNwQzs7Q0NGZSxTQUFTLEdBQUcsSUFBSTtDQUMvQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztDQUNwQzs7Q0NDQSxPQUFPLENBQUMsR0FBRyxFQUFFLG9CQUFvQixFQUFFLENBQUM7QUFDcEM7Q0FDQSxHQUFHLEVBQUUsQ0FBQztDQUNOLEdBQUcsRUFBRTs7OzsifQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1kLmpzIiwic291cmNlcyI6WyIuLi9mb28uanMiLCIuLi9iYXIuanMiLCIuLi9tYWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvbyAoKSB7XG5cdGNvbnNvbGUubG9nKCAnaGVsbG8gZnJvbSBmb28uanMnICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBiYXIgKCkge1xuXHRjb25zb2xlLmxvZyggJ2hlbGxvIGZyb20gYmFyLmpzJyApO1xufVxuIiwiaW1wb3J0IGZvbyBmcm9tICcuL2Zvbyc7XG5pbXBvcnQgYmFyIGZyb20gJy4vYmFyJztcblxuY29uc29sZS5sb2coICdoZWxsbyBmcm9tIG1haW4uanMnICk7XG5cbmZvbygpO1xuYmFyKCk7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Q0FBZSxTQUFTLEdBQUcsSUFBSTtDQUMvQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztDQUNwQzs7Q0NGZSxTQUFTLEdBQUcsSUFBSTtDQUMvQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztDQUNwQzs7Q0NDQSxPQUFPLENBQUMsR0FBRyxFQUFFLG9CQUFvQixFQUFFLENBQUM7QUFDcEM7Q0FDQSxHQUFHLEVBQUUsQ0FBQztDQUNOLEdBQUcsRUFBRTs7Ozs7OyJ9 diff --git a/test/form/samples/sourcemaps-inline/_expected/umd.js b/test/form/samples/sourcemaps-inline/_expected/umd.js index ded149ad80a..22a1ef277a1 100644 --- a/test/form/samples/sourcemaps-inline/_expected/umd.js +++ b/test/form/samples/sourcemaps-inline/_expected/umd.js @@ -17,4 +17,4 @@ bar(); }))); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW1kLmpzIiwic291cmNlcyI6WyIuLi9mb28uanMiLCIuLi9iYXIuanMiLCIuLi9tYWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvbyAoKSB7XG5cdGNvbnNvbGUubG9nKCAnaGVsbG8gZnJvbSBmb28uanMnICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBiYXIgKCkge1xuXHRjb25zb2xlLmxvZyggJ2hlbGxvIGZyb20gYmFyLmpzJyApO1xufVxuIiwiaW1wb3J0IGZvbyBmcm9tICcuL2Zvbyc7XG5pbXBvcnQgYmFyIGZyb20gJy4vYmFyJztcblxuY29uc29sZS5sb2coICdoZWxsbyBmcm9tIG1haW4uanMnICk7XG5cbmZvbygpO1xuYmFyKCk7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Q0FBZSxTQUFTLEdBQUcsSUFBSTtDQUMvQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztDQUNwQzs7Q0NGZSxTQUFTLEdBQUcsSUFBSTtDQUMvQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztDQUNwQzs7Q0NDQSxPQUFPLENBQUMsR0FBRyxFQUFFLG9CQUFvQixFQUFFLENBQUM7QUFDcEM7Q0FDQSxHQUFHLEVBQUUsQ0FBQztDQUNOLEdBQUcsRUFBRTs7OzsifQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW1kLmpzIiwic291cmNlcyI6WyIuLi9mb28uanMiLCIuLi9iYXIuanMiLCIuLi9tYWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvbyAoKSB7XG5cdGNvbnNvbGUubG9nKCAnaGVsbG8gZnJvbSBmb28uanMnICk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBiYXIgKCkge1xuXHRjb25zb2xlLmxvZyggJ2hlbGxvIGZyb20gYmFyLmpzJyApO1xufVxuIiwiaW1wb3J0IGZvbyBmcm9tICcuL2Zvbyc7XG5pbXBvcnQgYmFyIGZyb20gJy4vYmFyJztcblxuY29uc29sZS5sb2coICdoZWxsbyBmcm9tIG1haW4uanMnICk7XG5cbmZvbygpO1xuYmFyKCk7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Q0FBZSxTQUFTLEdBQUcsSUFBSTtDQUMvQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztDQUNwQzs7Q0NGZSxTQUFTLEdBQUcsSUFBSTtDQUMvQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztDQUNwQzs7Q0NDQSxPQUFPLENBQUMsR0FBRyxFQUFFLG9CQUFvQixFQUFFLENBQUM7QUFDcEM7Q0FDQSxHQUFHLEVBQUUsQ0FBQztDQUNOLEdBQUcsRUFBRTs7Ozs7OyJ9 diff --git a/test/form/samples/umd-noconflict-extend/_expected/iife.js b/test/form/samples/umd-noconflict-extend/_expected/iife.js index 119a7248a7e..4f2588f8f19 100644 --- a/test/form/samples/umd-noconflict-extend/_expected/iife.js +++ b/test/form/samples/umd-noconflict-extend/_expected/iife.js @@ -13,4 +13,6 @@ exports.number = number; exports.setting = setting; + Object.defineProperty(exports, '__esModule', { value: true }); + }(this.FooBar = this.FooBar || {})); diff --git a/test/form/samples/umd-noconflict-namespaced/_expected/iife.js b/test/form/samples/umd-noconflict-namespaced/_expected/iife.js index 201f2df1900..2d11e13eb7a 100644 --- a/test/form/samples/umd-noconflict-namespaced/_expected/iife.js +++ b/test/form/samples/umd-noconflict-namespaced/_expected/iife.js @@ -16,6 +16,8 @@ this.my.name.spaced.module = (function (exports) { exports.number = number; exports.setting = setting; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/umd-noconflict/_expected/iife.js b/test/form/samples/umd-noconflict/_expected/iife.js index fcc62306366..08612208549 100644 --- a/test/form/samples/umd-noconflict/_expected/iife.js +++ b/test/form/samples/umd-noconflict/_expected/iife.js @@ -13,6 +13,8 @@ var FooBar = (function (exports) { exports.number = number; exports.setting = setting; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/form/samples/updating-assignments/_expected/iife.js b/test/form/samples/updating-assignments/_expected/iife.js index 381fa322c49..c4ad3ef4f28 100644 --- a/test/form/samples/updating-assignments/_expected/iife.js +++ b/test/form/samples/updating-assignments/_expected/iife.js @@ -16,6 +16,8 @@ var bundle = (function (exports) { exports.x ^= 2; exports.x |= 2; + Object.defineProperty(exports, '__esModule', { value: true }); + return exports; }({})); diff --git a/test/function/samples/deprecated/deconflicts-interop-boolean/_config.js b/test/function/samples/deprecated/deconflicts-interop-boolean/_config.js index 6b8d156c427..ae0552e5059 100644 --- a/test/function/samples/deprecated/deconflicts-interop-boolean/_config.js +++ b/test/function/samples/deprecated/deconflicts-interop-boolean/_config.js @@ -6,9 +6,7 @@ module.exports = { return id.startsWith('external'); }, output: { - interop(id) { - return true; - } + interop: true } }, context: { diff --git a/test/function/samples/namespace-tostring/dynamic-import-default-mode/_config.js b/test/function/samples/namespace-tostring/dynamic-import-default-mode/_config.js new file mode 100644 index 00000000000..0b803ae86e3 --- /dev/null +++ b/test/function/samples/namespace-tostring/dynamic-import-default-mode/_config.js @@ -0,0 +1,18 @@ +const assert = require('assert'); + +module.exports = { + description: + 'adds Symbol.toStringTag property to dynamic imports of entry chunks with default export mode', + options: { + input: ['main', 'foo'], + output: { + namespaceToStringTag: true + } + }, + async exports(exports) { + const foo = await exports; + assert.strictEqual(foo[Symbol.toStringTag], 'Module'); + assert.strictEqual(Object.prototype.toString.call(foo), '[object Module]'); + assert.strictEqual(foo.default, 42); + } +}; diff --git a/test/function/samples/namespace-tostring/dynamic-import-default-mode/foo.js b/test/function/samples/namespace-tostring/dynamic-import-default-mode/foo.js new file mode 100644 index 00000000000..7a4e8a723a4 --- /dev/null +++ b/test/function/samples/namespace-tostring/dynamic-import-default-mode/foo.js @@ -0,0 +1 @@ +export default 42; diff --git a/test/function/samples/namespace-tostring/dynamic-import-default-mode/main.js b/test/function/samples/namespace-tostring/dynamic-import-default-mode/main.js new file mode 100644 index 00000000000..88023eaa2a6 --- /dev/null +++ b/test/function/samples/namespace-tostring/dynamic-import-default-mode/main.js @@ -0,0 +1 @@ +export default import('./foo'); diff --git a/test/function/samples/namespace-tostring/dynamic-import/_config.js b/test/function/samples/namespace-tostring/dynamic-import/_config.js new file mode 100644 index 00000000000..90958a0c768 --- /dev/null +++ b/test/function/samples/namespace-tostring/dynamic-import/_config.js @@ -0,0 +1,16 @@ +const assert = require('assert'); + +module.exports = { + description: 'adds Symbol.toStringTag property to dynamic imports', + options: { + output: { + namespaceToStringTag: true + } + }, + async exports(exports) { + const foo = await exports; + assert.strictEqual(foo[Symbol.toStringTag], 'Module'); + assert.strictEqual(Object.prototype.toString.call(foo), '[object Module]'); + assert.strictEqual(foo.bar, 42); + } +}; diff --git a/test/function/samples/namespace-tostring/dynamic-import/foo.js b/test/function/samples/namespace-tostring/dynamic-import/foo.js new file mode 100644 index 00000000000..308e102fe9a --- /dev/null +++ b/test/function/samples/namespace-tostring/dynamic-import/foo.js @@ -0,0 +1 @@ +export const bar = 42; diff --git a/test/function/samples/namespace-tostring/dynamic-import/main.js b/test/function/samples/namespace-tostring/dynamic-import/main.js new file mode 100644 index 00000000000..88023eaa2a6 --- /dev/null +++ b/test/function/samples/namespace-tostring/dynamic-import/main.js @@ -0,0 +1 @@ +export default import('./foo'); diff --git a/test/function/samples/namespace-tostring/entry-default/_config.js b/test/function/samples/namespace-tostring/entry-default/_config.js new file mode 100644 index 00000000000..fd09a408684 --- /dev/null +++ b/test/function/samples/namespace-tostring/entry-default/_config.js @@ -0,0 +1,16 @@ +const assert = require('assert'); + +module.exports = { + description: 'does not add Symbol.toStringTag property to entry chunks with default export mode', + options: { + output: { + namespaceToStringTag: true, + exports: 'default' + } + }, + exports(exports) { + assert.strictEqual(exports[Symbol.toStringTag], undefined); + assert.strictEqual(Object.prototype.toString.call(exports), '[object Object]'); + assert.strictEqual(exports.foo, 42); + } +}; diff --git a/test/function/samples/namespace-tostring/entry-default/main.js b/test/function/samples/namespace-tostring/entry-default/main.js new file mode 100644 index 00000000000..407b3c24eb7 --- /dev/null +++ b/test/function/samples/namespace-tostring/entry-default/main.js @@ -0,0 +1 @@ +export default { foo: 42 }; diff --git a/test/function/samples/namespace-tostring/entry-named/_config.js b/test/function/samples/namespace-tostring/entry-named/_config.js new file mode 100644 index 00000000000..15bdf092827 --- /dev/null +++ b/test/function/samples/namespace-tostring/entry-named/_config.js @@ -0,0 +1,16 @@ +const assert = require('assert'); + +module.exports = { + description: 'adds Symbol.toStringTag property to entry chunks with named exports', + options: { + output: { + namespaceToStringTag: true, + exports: 'named' + } + }, + exports(exports) { + assert.strictEqual(exports[Symbol.toStringTag], 'Module'); + assert.strictEqual(Object.prototype.toString.call(exports), '[object Module]'); + assert.strictEqual(exports.foo, 42); + } +}; diff --git a/test/function/samples/namespace-tostring/entry-named/main.js b/test/function/samples/namespace-tostring/entry-named/main.js new file mode 100644 index 00000000000..9d7381d29f6 --- /dev/null +++ b/test/function/samples/namespace-tostring/entry-named/main.js @@ -0,0 +1 @@ +export const foo = 42; diff --git a/test/function/samples/namespace-tostring/external-namespaces/_config.js b/test/function/samples/namespace-tostring/external-namespaces/_config.js new file mode 100644 index 00000000000..7f3f4eda0fc --- /dev/null +++ b/test/function/samples/namespace-tostring/external-namespaces/_config.js @@ -0,0 +1,28 @@ +module.exports = { + description: 'adds Symbol.toStringTag property to external namespaces', + options: { + external(id) { + return id.startsWith('external'); + }, + output: { + namespaceToStringTag: true, + interop(id) { + switch (id) { + case 'external-auto': + return 'auto'; + case 'external-default': + return 'default'; + case 'external-defaultOnly': + return 'defaultOnly'; + default: + throw new Error(`Unexpected require "${id}"`); + } + } + } + }, + context: { + require(id) { + return { foo: 42 }; + } + } +}; diff --git a/test/function/samples/namespace-tostring/external-namespaces/main.js b/test/function/samples/namespace-tostring/external-namespaces/main.js new file mode 100644 index 00000000000..978de6a2cb4 --- /dev/null +++ b/test/function/samples/namespace-tostring/external-namespaces/main.js @@ -0,0 +1,15 @@ +import * as externalAuto from 'external-auto'; +import * as externalDefault from 'external-default'; +import * as externalDefaultOnly from 'external-defaultOnly'; + +assert.strictEqual(externalAuto[Symbol.toStringTag], 'Module'); +assert.strictEqual(Object.prototype.toString.call(externalAuto), '[object Module]'); +assert.strictEqual(externalAuto.foo, 42); + +assert.strictEqual(externalDefault[Symbol.toStringTag], 'Module'); +assert.strictEqual(Object.prototype.toString.call(externalDefault), '[object Module]'); +assert.strictEqual(externalDefault.foo, 42); + +assert.strictEqual(externalDefaultOnly[Symbol.toStringTag], 'Module'); +assert.strictEqual(Object.prototype.toString.call(externalDefaultOnly), '[object Module]'); +assert.deepStrictEqual(externalDefaultOnly.default, { foo: 42 }); diff --git a/test/function/samples/namespace-tostring/inlined-namespace/_config.js b/test/function/samples/namespace-tostring/inlined-namespace/_config.js new file mode 100644 index 00000000000..62ccb9bf2cc --- /dev/null +++ b/test/function/samples/namespace-tostring/inlined-namespace/_config.js @@ -0,0 +1,8 @@ +module.exports = { + description: 'adds Symbol.toStringTag property to inlined namespaces', + options: { + output: { + namespaceToStringTag: true + } + } +}; diff --git a/test/function/samples/namespace-tostring/inlined-namespace/foo.js b/test/function/samples/namespace-tostring/inlined-namespace/foo.js new file mode 100644 index 00000000000..308e102fe9a --- /dev/null +++ b/test/function/samples/namespace-tostring/inlined-namespace/foo.js @@ -0,0 +1 @@ +export const bar = 42; diff --git a/test/function/samples/namespace-tostring/inlined-namespace/main.js b/test/function/samples/namespace-tostring/inlined-namespace/main.js new file mode 100644 index 00000000000..fb6b24345ef --- /dev/null +++ b/test/function/samples/namespace-tostring/inlined-namespace/main.js @@ -0,0 +1,5 @@ +import * as foo from './foo'; + +assert.strictEqual(foo[Symbol.toStringTag], 'Module'); +assert.strictEqual(Object.prototype.toString.call(foo), '[object Module]'); +assert.strictEqual(foo.bar, 42); diff --git a/test/function/samples/namespace-tostring/main.js b/test/function/samples/namespace-tostring/main.js deleted file mode 100644 index 13e195fd6c1..00000000000 --- a/test/function/samples/namespace-tostring/main.js +++ /dev/null @@ -1,4 +0,0 @@ -import * as foo from './foo'; - -assert.equal(Object.prototype.toString.call(foo), "[object Module]"); -assert.equal(foo.bar, 42); diff --git a/test/misc/iife.js b/test/misc/iife.js index 78f9b186bf9..6184dd6adb5 100644 --- a/test/misc/iife.js +++ b/test/misc/iife.js @@ -128,7 +128,7 @@ describe('The IIFE wrapper with an illegal name', () => { it('does not fail for illegal characters if the extend option is used', () => getIifeCode('export const x = 42;', { name: 'my=name', extend: true }).then(code => - assert.equal( + assert.strictEqual( code, '(function (exports) {\n' + "\t'use strict';\n" + @@ -137,6 +137,8 @@ describe('The IIFE wrapper with an illegal name', () => { '\n' + '\texports.x = x;\n' + '\n' + + "\tObject.defineProperty(exports, '__esModule', { value: true });\n" + + '\n' + "}(this['my=name'] = this['my=name'] || {}));\n" ) ));