From 200832eaebfdc87eb4569d361ae83cf37ed4ad75 Mon Sep 17 00:00:00 2001 From: ItsRenji Date: Sat, 7 Nov 2026 04:06:06 +0000 Subject: [PATCH 1/2] fix(commonjs): initialize replaced module.exports to {} for circular requires When a module's only export is a top-level `module.exports = ...` assignment and it is wrapped in a require function, its exports variable was declared without a value. A circular require (or a top-level `this`) that ran before the assignment then saw `undefined` instead of the initial `{}` exports object that Node provides. Co-Authored-By: Claude Opus 5.5 --- packages/commonjs/src/transform-commonjs.js | 4 +- .../fixtures/form/async-function/output.js | 2 +- .../output.js | 2 +- .../output.js | 2 +- .../output.js | 2 +- .../output.js | 2 +- .../output.js | 2 +- .../output.js | 2 +- .../multi-entry-module-exports/output1.js | 2 +- .../multi-entry-module-exports/output2.js | 2 +- .../form/no-toplevel-return/output.js | 2 +- .../output.js | 2 +- .../output.js | 2 +- .../optimised-default-export-iife/output.js | 2 +- .../form/optimised-default-export/output.js | 2 +- .../_config.js | 7 + .../strict-requires-circular-replace/a.js | 3 + .../strict-requires-circular-replace/b.js | 3 + .../strict-requires-circular-replace/main.js | 1 + .../_config.js | 6 + .../main.js | 1 + .../other.js | 3 + .../commonjs/test/snapshots/function.js.snap | 290 ++++++++++++------ packages/commonjs/test/snapshots/test.js.snap | 16 +- 24 files changed, 239 insertions(+), 123 deletions(-) create mode 100644 packages/commonjs/test/fixtures/function/strict-requires-circular-replace/_config.js create mode 100644 packages/commonjs/test/fixtures/function/strict-requires-circular-replace/a.js create mode 100644 packages/commonjs/test/fixtures/function/strict-requires-circular-replace/b.js create mode 100644 packages/commonjs/test/fixtures/function/strict-requires-circular-replace/main.js create mode 100644 packages/commonjs/test/fixtures/function/strict-requires-this-before-replace/_config.js create mode 100644 packages/commonjs/test/fixtures/function/strict-requires-this-before-replace/main.js create mode 100644 packages/commonjs/test/fixtures/function/strict-requires-this-before-replace/other.js diff --git a/packages/commonjs/src/transform-commonjs.js b/packages/commonjs/src/transform-commonjs.js index 2bc22ae88..5b6974b32 100644 --- a/packages/commonjs/src/transform-commonjs.js +++ b/packages/commonjs/src/transform-commonjs.js @@ -579,7 +579,9 @@ function ${requireName} () { \treturn ${exported}; }`); if (exportMode === 'replace') { - magicString.prepend(`var ${exportsName};\n`); + // Start from an empty object like Node does, so that a circular require + // or a top-level `this` before the `module.exports =` assignment sees `{}`. + magicString.prepend(`var ${exportsName} = {};\n`); } } diff --git a/packages/commonjs/test/fixtures/form/async-function/output.js b/packages/commonjs/test/fixtures/form/async-function/output.js index 1783fa95c..32965e0dc 100644 --- a/packages/commonjs/test/fixtures/form/async-function/output.js +++ b/packages/commonjs/test/fixtures/form/async-function/output.js @@ -1,6 +1,6 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input; +var input = {}; var hasRequiredInput; function requireInput () { diff --git a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-auto-reassign-exports-__esModule/output.js b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-auto-reassign-exports-__esModule/output.js index f5f6303f8..a0e170835 100644 --- a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-auto-reassign-exports-__esModule/output.js +++ b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-auto-reassign-exports-__esModule/output.js @@ -1,6 +1,6 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input; +var input = {}; var hasRequiredInput; function requireInput () { diff --git a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-auto-reassign-exports-no-__esModule/output.js b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-auto-reassign-exports-no-__esModule/output.js index 50bf81c14..1f9c20dfb 100644 --- a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-auto-reassign-exports-no-__esModule/output.js +++ b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-auto-reassign-exports-no-__esModule/output.js @@ -1,6 +1,6 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input; +var input = {}; var hasRequiredInput; function requireInput () { diff --git a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-false-reassign-exports-__esModule/output.js b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-false-reassign-exports-__esModule/output.js index b1afbb32e..9dc749c6a 100644 --- a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-false-reassign-exports-__esModule/output.js +++ b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-false-reassign-exports-__esModule/output.js @@ -1,6 +1,6 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input; +var input = {}; var hasRequiredInput; function requireInput () { diff --git a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-false-reassign-exports-no-__esModule/output.js b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-false-reassign-exports-no-__esModule/output.js index f9f9877a7..ddbf63743 100644 --- a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-false-reassign-exports-no-__esModule/output.js +++ b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-false-reassign-exports-no-__esModule/output.js @@ -1,6 +1,6 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input; +var input = {}; var hasRequiredInput; function requireInput () { diff --git a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-true-reassign-exports-__esModule/output.js b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-true-reassign-exports-__esModule/output.js index b1afbb32e..9dc749c6a 100644 --- a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-true-reassign-exports-__esModule/output.js +++ b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-true-reassign-exports-__esModule/output.js @@ -1,6 +1,6 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input; +var input = {}; var hasRequiredInput; function requireInput () { diff --git a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-true-reassign-exports-no-__esModule/output.js b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-true-reassign-exports-no-__esModule/output.js index f9f9877a7..ddbf63743 100644 --- a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-true-reassign-exports-no-__esModule/output.js +++ b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-true-reassign-exports-no-__esModule/output.js @@ -1,6 +1,6 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input; +var input = {}; var hasRequiredInput; function requireInput () { diff --git a/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output1.js b/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output1.js index 72c4422cb..631669411 100644 --- a/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output1.js +++ b/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output1.js @@ -1,7 +1,7 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; import require$$0 from "\u0000CWD/fixtures/form/multi-entry-module-exports/input2.js?commonjs-proxy"; -var input1; +var input1 = {}; var hasRequiredInput1; function requireInput1 () { diff --git a/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output2.js b/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output2.js index 3fc1db442..748bcf700 100644 --- a/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output2.js +++ b/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output2.js @@ -1,6 +1,6 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input2; +var input2 = {}; var hasRequiredInput2; function requireInput2 () { diff --git a/packages/commonjs/test/fixtures/form/no-toplevel-return/output.js b/packages/commonjs/test/fixtures/form/no-toplevel-return/output.js index 4753e1899..f33b6fbf6 100644 --- a/packages/commonjs/test/fixtures/form/no-toplevel-return/output.js +++ b/packages/commonjs/test/fixtures/form/no-toplevel-return/output.js @@ -1,6 +1,6 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input; +var input = {}; var hasRequiredInput; function requireInput () { diff --git a/packages/commonjs/test/fixtures/form/optimised-default-export-function-double-assign/output.js b/packages/commonjs/test/fixtures/form/optimised-default-export-function-double-assign/output.js index bde947186..9c8b2f4ce 100644 --- a/packages/commonjs/test/fixtures/form/optimised-default-export-function-double-assign/output.js +++ b/packages/commonjs/test/fixtures/form/optimised-default-export-function-double-assign/output.js @@ -1,6 +1,6 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input; +var input = {}; var hasRequiredInput; function requireInput () { diff --git a/packages/commonjs/test/fixtures/form/optimised-default-export-function/output.js b/packages/commonjs/test/fixtures/form/optimised-default-export-function/output.js index 227278be2..5b3677dd3 100644 --- a/packages/commonjs/test/fixtures/form/optimised-default-export-function/output.js +++ b/packages/commonjs/test/fixtures/form/optimised-default-export-function/output.js @@ -1,6 +1,6 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input; +var input = {}; var hasRequiredInput; function requireInput () { diff --git a/packages/commonjs/test/fixtures/form/optimised-default-export-iife/output.js b/packages/commonjs/test/fixtures/form/optimised-default-export-iife/output.js index 024f75ea3..c8eec73a6 100644 --- a/packages/commonjs/test/fixtures/form/optimised-default-export-iife/output.js +++ b/packages/commonjs/test/fixtures/form/optimised-default-export-iife/output.js @@ -1,6 +1,6 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input; +var input = {}; var hasRequiredInput; function requireInput () { diff --git a/packages/commonjs/test/fixtures/form/optimised-default-export/output.js b/packages/commonjs/test/fixtures/form/optimised-default-export/output.js index ec717ec7b..c84381012 100644 --- a/packages/commonjs/test/fixtures/form/optimised-default-export/output.js +++ b/packages/commonjs/test/fixtures/form/optimised-default-export/output.js @@ -1,6 +1,6 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input; +var input = {}; var hasRequiredInput; function requireInput () { diff --git a/packages/commonjs/test/fixtures/function/strict-requires-circular-replace/_config.js b/packages/commonjs/test/fixtures/function/strict-requires-circular-replace/_config.js new file mode 100644 index 000000000..616317cb9 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-circular-replace/_config.js @@ -0,0 +1,7 @@ +module.exports = { + description: + 'provides the initial exports object to a circular require before module.exports is replaced', + pluginOptions: { + strictRequires: true + } +}; diff --git a/packages/commonjs/test/fixtures/function/strict-requires-circular-replace/a.js b/packages/commonjs/test/fixtures/function/strict-requires-circular-replace/a.js new file mode 100644 index 000000000..3accdbf8f --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-circular-replace/a.js @@ -0,0 +1,3 @@ +const b = require('./b.js'); + +module.exports = { seenByB: b.seen }; diff --git a/packages/commonjs/test/fixtures/function/strict-requires-circular-replace/b.js b/packages/commonjs/test/fixtures/function/strict-requires-circular-replace/b.js new file mode 100644 index 000000000..2a23c395c --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-circular-replace/b.js @@ -0,0 +1,3 @@ +const a = require('./a.js'); + +module.exports = { seen: typeof a }; diff --git a/packages/commonjs/test/fixtures/function/strict-requires-circular-replace/main.js b/packages/commonjs/test/fixtures/function/strict-requires-circular-replace/main.js new file mode 100644 index 000000000..cefffe332 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-circular-replace/main.js @@ -0,0 +1 @@ +t.deepEqual(require('./a.js'), { seenByB: 'object' }); diff --git a/packages/commonjs/test/fixtures/function/strict-requires-this-before-replace/_config.js b/packages/commonjs/test/fixtures/function/strict-requires-this-before-replace/_config.js new file mode 100644 index 000000000..a7e75a73d --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-this-before-replace/_config.js @@ -0,0 +1,6 @@ +module.exports = { + description: 'allows top-level this before module.exports is replaced', + pluginOptions: { + strictRequires: true + } +}; diff --git a/packages/commonjs/test/fixtures/function/strict-requires-this-before-replace/main.js b/packages/commonjs/test/fixtures/function/strict-requires-this-before-replace/main.js new file mode 100644 index 000000000..a81e423d3 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-this-before-replace/main.js @@ -0,0 +1 @@ +t.deepEqual(require('./other.js'), { y: 2 }); diff --git a/packages/commonjs/test/fixtures/function/strict-requires-this-before-replace/other.js b/packages/commonjs/test/fixtures/function/strict-requires-this-before-replace/other.js new file mode 100644 index 000000000..a503a681d --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-this-before-replace/other.js @@ -0,0 +1,3 @@ +this.x = 1; + +module.exports = { y: 2 }; diff --git a/packages/commonjs/test/snapshots/function.js.snap b/packages/commonjs/test/snapshots/function.js.snap index 1ecce0bb1..b2feda66d 100644 --- a/packages/commonjs/test/snapshots/function.js.snap +++ b/packages/commonjs/test/snapshots/function.js.snap @@ -138,7 +138,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var foo; +var foo = {}; var hasRequiredFoo; function requireFoo () { @@ -148,7 +148,7 @@ function requireFoo () { return foo; } -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -189,7 +189,7 @@ function requirePlatform () { return platform; } -var browser; +var browser = {}; var hasRequiredBrowser; function requireBrowser () { @@ -314,7 +314,7 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var _export; +var _export = {}; var hasRequired_export; function require_export () { @@ -496,7 +496,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var dashName; +var dashName = {}; var hasRequiredDashName; function requireDashName () { @@ -559,7 +559,7 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var foo_bar; +var foo_bar = {}; var hasRequiredFoo_bar; function requireFoo_bar () { @@ -647,7 +647,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var dep$1; +var dep$1 = {}; var hasRequiredDep; function requireDep () { @@ -774,7 +774,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var submodule; +var submodule = {}; var hasRequiredSubmodule; function requireSubmodule () { @@ -920,7 +920,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var submodule; +var submodule = {}; var hasRequiredSubmodule; function requireSubmodule () { @@ -1068,7 +1068,7 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var direct; +var direct = {}; var hasRequiredDirect; function requireDirect () { @@ -1078,7 +1078,7 @@ function requireDirect () { return direct; } -var nested; +var nested = {}; var hasRequiredNested; function requireNested () { @@ -1088,7 +1088,7 @@ function requireNested () { return nested; } -var parent; +var parent = {}; var hasRequiredParent; function requireParent () { @@ -1248,7 +1248,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var stub; +var stub = {}; var hasRequiredStub; function requireStub () { @@ -1412,7 +1412,7 @@ requireLib1(); ", "main2.js": "'use strict'; -var target1; +var target1 = {}; var hasRequiredTarget1; function requireTarget1 () { @@ -1422,7 +1422,7 @@ function requireTarget1 () { return target1; } -var target2; +var target2 = {}; var hasRequiredTarget2; function requireTarget2 () { @@ -1558,7 +1558,7 @@ exports[`dynamic-require-different-loader 1`] = ` { "main.js": "'use strict'; -var submodule2; +var submodule2 = {}; var hasRequiredSubmodule2; function requireSubmodule2 () { @@ -1723,7 +1723,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var submodule; +var submodule = {}; var hasRequiredSubmodule; function requireSubmodule () { @@ -1827,7 +1827,7 @@ function normalize (path) { /* eslint-disable import/no-dynamic-require, global-require */ -var importer; +var importer = {}; var hasRequiredImporter; function requireImporter () { @@ -1858,7 +1858,7 @@ exports[`dynamic-require-es-mixed-helpers 1`] = ` var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; -var submodule; +var submodule = {}; var hasRequiredSubmodule; function requireSubmodule () { @@ -1890,7 +1890,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var submodule; +var submodule = {}; var hasRequiredSubmodule; function requireSubmodule () { @@ -2067,7 +2067,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var submodule$1; +var submodule$1 = {}; var hasRequiredSubmodule; function requireSubmodule () { @@ -2093,7 +2093,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var submodule1; +var submodule1 = {}; var hasRequiredSubmodule1; function requireSubmodule1 () { @@ -2103,7 +2103,7 @@ function requireSubmodule1 () { return submodule1; } -var submodule2; +var submodule2 = {}; var hasRequiredSubmodule2; function requireSubmodule2 () { @@ -2113,7 +2113,7 @@ function requireSubmodule2 () { return submodule2; } -var extramodule1; +var extramodule1 = {}; var hasRequiredExtramodule1; function requireExtramodule1 () { @@ -2256,7 +2256,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var direct; +var direct = {}; var hasRequiredDirect; function requireDirect () { @@ -2266,7 +2266,7 @@ function requireDirect () { return direct; } -var main$2; +var main$2 = {}; var hasRequiredMain$1; function requireMain$1 () { @@ -2581,7 +2581,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var entry$2; +var entry$2 = {}; var hasRequiredEntry$2; function requireEntry$2 () { @@ -2591,7 +2591,7 @@ function requireEntry$2 () { return entry$2; } -var entry$1; +var entry$1 = {}; var hasRequiredEntry$1; function requireEntry$1 () { @@ -2601,7 +2601,7 @@ function requireEntry$1 () { return entry$1; } -var entry; +var entry = {}; var hasRequiredEntry; function requireEntry () { @@ -2712,7 +2712,7 @@ var main$1 = {}; /* eslint-disable import/no-dynamic-require, global-require */ -var sub; +var sub = {}; var hasRequiredSub; function requireSub () { @@ -2769,7 +2769,7 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var entry; +var entry = {}; var hasRequiredEntry; function requireEntry () { @@ -2804,7 +2804,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var submodule; +var submodule = {}; var hasRequiredSubmodule; function requireSubmodule () { @@ -2814,7 +2814,7 @@ function requireSubmodule () { return submodule; } -var subsubmodule; +var subsubmodule = {}; var hasRequiredSubsubmodule; function requireSubsubmodule () { @@ -2953,7 +2953,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var dynamicRequireResolveIndex; +var dynamicRequireResolveIndex = {}; var hasRequiredDynamicRequireResolveIndex; function requireDynamicRequireResolveIndex () { @@ -2963,7 +2963,7 @@ function requireDynamicRequireResolveIndex () { return dynamicRequireResolveIndex; } -var sub$1; +var sub$1 = {}; var hasRequiredSub$1; function requireSub$1 () { @@ -2973,7 +2973,7 @@ function requireSub$1 () { return sub$1; } -var customModule; +var customModule = {}; var hasRequiredCustomModule; function requireCustomModule () { @@ -3084,7 +3084,7 @@ var main$1 = {}; /* eslint-disable import/no-dynamic-require, global-require */ -var sub; +var sub = {}; var hasRequiredSub; function requireSub () { @@ -3141,7 +3141,7 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var customModule2; +var customModule2 = {}; var hasRequiredCustomModule2; function requireCustomModule2 () { @@ -3246,7 +3246,7 @@ function normalize (path) { return path; } -var customModule; +var customModule = {}; var hasRequiredCustomModule; function requireCustomModule () { @@ -3288,7 +3288,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var submodule; +var submodule = {}; var hasRequiredSubmodule; function requireSubmodule () { @@ -3509,7 +3509,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var dynamicRequireSlashAccess; +var dynamicRequireSlashAccess = {}; var hasRequiredDynamicRequireSlashAccess; function requireDynamicRequireSlashAccess () { @@ -3519,7 +3519,7 @@ function requireDynamicRequireSlashAccess () { return dynamicRequireSlashAccess; } -var sub$2; +var sub$2 = {}; var hasRequiredSub$2; function requireSub$2 () { @@ -3529,7 +3529,7 @@ function requireSub$2 () { return sub$2; } -var sub$1; +var sub$1 = {}; var hasRequiredSub$1; function requireSub$1 () { @@ -3539,7 +3539,7 @@ function requireSub$1 () { return sub$1; } -var customModule; +var customModule = {}; var hasRequiredCustomModule; function requireCustomModule () { @@ -3651,7 +3651,7 @@ var main$1 = {}; /* eslint-disable import/no-dynamic-require, global-require */ -var sub; +var sub = {}; var hasRequiredSub; function requireSub () { @@ -3709,7 +3709,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var dep1; +var dep1 = {}; var hasRequiredDep1; function requireDep1 () { @@ -3846,7 +3846,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var dep1; +var dep1 = {}; var hasRequiredDep1; function requireDep1 () { @@ -4717,7 +4717,7 @@ function requireFoo () { return foo; } -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -4786,20 +4786,20 @@ exports[`expose-file-type-detection 1`] = ` { "main.js": "'use strict'; -var other = require('./other-UXsUMMAz.js'); +var other = require('./other-6XkLAs04.js'); var otherExports = other.requireOther(); var foo = /*@__PURE__*/other.getDefaultExportFromCjs(otherExports); t.is(foo, 'foo'); ", - "other-UXsUMMAz.js": "'use strict'; + "other-6XkLAs04.js": "'use strict'; function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var other; +var other = {}; var hasRequiredOther; function requireOther () { @@ -4814,7 +4814,7 @@ exports.requireOther = requireOther; ", "other.js": "'use strict'; -var other$1 = require('./other-UXsUMMAz.js'); +var other$1 = require('./other-6XkLAs04.js'); var otherExports = other$1.requireOther(); var other = /*@__PURE__*/other$1.getDefaultExportFromCjs(otherExports); @@ -4838,7 +4838,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -4982,7 +4982,7 @@ function getDefaultExportFromCjs (x) { /* eslint-disable */ -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -6071,7 +6071,7 @@ string return dep; } -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -6106,7 +6106,7 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var foo; +var foo = {}; var hasRequiredFoo; function requireFoo () { @@ -6143,7 +6143,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var foo; +var foo = {}; var hasRequiredFoo; function requireFoo () { @@ -6153,7 +6153,7 @@ function requireFoo () { return foo; } -var multiply; +var multiply = {}; var hasRequiredMultiply; function requireMultiply () { @@ -6167,7 +6167,7 @@ function requireMultiply () { /* eslint-disable global-require */ -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -6323,7 +6323,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var other; +var other = {}; var hasRequiredOther; function requireOther () { @@ -6351,7 +6351,7 @@ function getDefaultExportFromCjs (x) { * This comment could be really important and should not be removed */ -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -6483,7 +6483,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var foo; +var foo = {}; var hasRequiredFoo; function requireFoo () { @@ -6493,7 +6493,7 @@ function requireFoo () { return foo; } -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -6566,7 +6566,7 @@ function getDefaultExportFromCjs (x) { node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.src || new URL('main.js', document.baseURI).href))); -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -6595,7 +6595,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -6895,7 +6895,7 @@ function require_export () { return _export; } -var reexport; +var reexport = {}; var hasRequiredReexport; function requireReexport () { @@ -7111,7 +7111,7 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var dep; +var dep = {}; var hasRequiredDep; function requireDep () { @@ -7249,7 +7249,7 @@ var main$1 = {}; var foo = {}; -var shared; +var shared = {}; var hasRequiredShared; function requireShared () { @@ -7273,7 +7273,7 @@ function requireFoo () { return foo; } -var bar; +var bar = {}; var hasRequiredBar; function requireBar () { @@ -7324,7 +7324,7 @@ function getDefaultExportFromCjs (x) { var requiring = {}; -var fooRequired; +var fooRequired = {}; var hasRequiredFooRequired; function requireFooRequired () { @@ -7370,7 +7370,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var dep; +var dep = {}; var hasRequiredDep; function requireDep () { @@ -7381,7 +7381,7 @@ function requireDep () { return dep; } -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -7491,7 +7491,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -7850,7 +7850,7 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var foo_1; +var foo_1 = {}; var hasRequiredFoo; function requireFoo () { @@ -8091,7 +8091,7 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var dep; +var dep = {}; var hasRequiredDep; function requireDep () { @@ -8268,7 +8268,7 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var foo; +var foo = {}; var hasRequiredFoo; function requireFoo () { @@ -8353,7 +8353,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -8389,7 +8389,7 @@ function commonjsRequire(path) { throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); } -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -8425,7 +8425,7 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var b; +var b = {}; var hasRequiredB; function requireB () { @@ -8599,6 +8599,57 @@ module.exports = main; } `; +exports[`strict-requires-circular-replace 1`] = ` +{ + "main.js": "'use strict'; + +function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} + +var main$1 = {}; + +var b = {}; +var hasRequiredB; + +function requireB () { + if (hasRequiredB) return b; + hasRequiredB = 1; + const a = requireA(); + + b = { seen: typeof a }; + return b; +} + +var a = {}; +var hasRequiredA; + +function requireA () { + if (hasRequiredA) return a; + hasRequiredA = 1; + const b = requireB(); + + a = { seenByB: b.seen }; + return a; +} + +var hasRequiredMain; + +function requireMain () { + if (hasRequiredMain) return main$1; + hasRequiredMain = 1; + t.deepEqual(requireA(), { seenByB: 'object' }); + return main$1; +} + +var mainExports = requireMain(); +var main = /*@__PURE__*/getDefaultExportFromCjs(mainExports); + +module.exports = main; +", +} +`; + exports[`strict-requires-cycle-detection 1`] = ` { "main.js": "'use strict'; @@ -8746,7 +8797,7 @@ function requireThrows () { throw new Error('This should never be executed or imported'); } -var hoisted; +var hoisted = {}; var hasRequiredHoisted; function requireHoisted () { @@ -8998,7 +9049,7 @@ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof win var main = {}; -var replaceModuleExports; +var replaceModuleExports = {}; var hasRequiredReplaceModuleExports; function requireReplaceModuleExports () { @@ -9061,7 +9112,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -9087,7 +9138,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -9255,6 +9306,45 @@ module.exports = other; } `; +exports[`strict-requires-this-before-replace 1`] = ` +{ + "main.js": "'use strict'; + +function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} + +var main$1 = {}; + +var other = {}; +var hasRequiredOther; + +function requireOther () { + if (hasRequiredOther) return other; + hasRequiredOther = 1; + other.x = 1; + + other = { y: 2 }; + return other; +} + +var hasRequiredMain; + +function requireMain () { + if (hasRequiredMain) return main$1; + hasRequiredMain = 1; + t.deepEqual(requireOther(), { y: 2 }); + return main$1; +} + +var mainExports = requireMain(); +var main = /*@__PURE__*/getDefaultExportFromCjs(mainExports); + +module.exports = main; +", +} +`; + exports[`this 1`] = ` { "main.js": "'use strict'; @@ -9331,7 +9421,7 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var dep1; +var dep1 = {}; var hasRequiredDep1; function requireDep1 () { @@ -9344,7 +9434,7 @@ function requireDep1 () { return dep1; } -var dep2; +var dep2 = {}; var hasRequiredDep2; function requireDep2 () { @@ -9357,7 +9447,7 @@ function requireDep2 () { return dep2; } -var dep3; +var dep3 = {}; var hasRequiredDep3; function requireDep3 () { @@ -9370,7 +9460,7 @@ function requireDep3 () { return dep3; } -var dep4; +var dep4 = {}; var hasRequiredDep4; function requireDep4 () { @@ -9418,7 +9508,7 @@ function getDefaultExportFromCjs (x) { /* eslint-disable */ -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -9447,7 +9537,7 @@ function getDefaultExportFromCjs (x) { var foo = {exports: {}}; -var bar; +var bar = {}; var hasRequiredBar; function requireBar () { @@ -9476,7 +9566,7 @@ function requireFoo () { return foo.exports; } -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -9506,7 +9596,7 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var foo; +var foo = {}; var hasRequiredFoo; function requireFoo () { @@ -9568,7 +9658,7 @@ function getAugmentedNamespace(n) { return a; } -var other$1; +var other$1 = {}; var hasRequiredOther; function requireOther () { @@ -10279,7 +10369,7 @@ function requireDep () { return dep$1; } -var proxy; +var proxy = {}; var hasRequiredProxy; function requireProxy () { @@ -10332,7 +10422,7 @@ function requireEntry () { return entry$1; } -var proxy$1; +var proxy$1 = {}; var hasRequiredProxy; function requireProxy () { @@ -10391,7 +10481,7 @@ function requireEntry () { return entry$1; } -var proxy$1; +var proxy$1 = {}; var hasRequiredProxy; function requireProxy () { @@ -10449,7 +10539,7 @@ function requireEntry () { return entry$1; } -var proxy$1; +var proxy$1 = {}; var hasRequiredProxy; function requireProxy () { @@ -10498,7 +10588,7 @@ function requireDep () { return dep$1; } -var proxy; +var proxy = {}; var hasRequiredProxy; function requireProxy () { @@ -10533,7 +10623,7 @@ function requireDep () { return dep; } -var proxy; +var proxy = {}; var hasRequiredProxy; function requireProxy () { @@ -10945,7 +11035,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var foo; +var foo = {}; var hasRequiredFoo; function requireFoo () { @@ -10955,7 +11045,7 @@ function requireFoo () { return foo; } -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { diff --git a/packages/commonjs/test/snapshots/test.js.snap b/packages/commonjs/test/snapshots/test.js.snap index 8de93c253..02f7b5c04 100644 --- a/packages/commonjs/test/snapshots/test.js.snap +++ b/packages/commonjs/test/snapshots/test.js.snap @@ -7,7 +7,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -32,7 +32,7 @@ module.exports = main; `; exports[`does not transform typeof exports for mixed modules 1`] = ` -"var foo$1; +"var foo$1 = {}; var hasRequiredFoo; function requireFoo () { @@ -106,7 +106,7 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var second$1; +var second$1 = {}; var hasRequiredSecond; function requireSecond () { @@ -170,7 +170,7 @@ var dep$1 = /*#__PURE__*/Object.freeze({ var require$$0 = /*@__PURE__*/getAugmentedNamespace(dep$1); -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -205,7 +205,7 @@ function requireDep () { return dep; } -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -240,7 +240,7 @@ function requireDep () { return dep; } -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -406,7 +406,7 @@ function getDefaultExportFromCjs (x) { var require$$0 = "default"; -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { @@ -468,7 +468,7 @@ var esm = /*#__PURE__*/Object.freeze({ var require$$0 = /*@__PURE__*/getAugmentedNamespace(esm); -var main$1; +var main$1 = {}; var hasRequiredMain; function requireMain () { From 9044fa8f42763dfbd3c08b810747994a3dbcaef8 Mon Sep 17 00:00:00 2001 From: ItsRenji Date: Sat, 7 Nov 2026 04:36:08 +0000 Subject: [PATCH 2/2] fix(commonjs): set replaced exports on first require and before top-level this Address review feedback: - With a require wrapper, assign `{}` when the first require starts instead of initializing the variable at module level. In a mixed ES/CommonJS cycle a re-entrant require can complete the module before its body resumes, and the module-level initializer then overwrote the completed exports. - Without a require wrapper (`strictRequires: false`, or `'auto'`/`'debug'` for modules outside a cycle), declare `var exports = {}` before the module body when it uses top-level `this`, which is rewritten to that variable and can run before the `module.exports =` assignment. Co-Authored-By: Claude Opus 5.5 --- packages/commonjs/src/generate-exports.js | 17 +- packages/commonjs/src/transform-commonjs.js | 14 +- .../fixtures/form/async-function/output.js | 3 +- .../output.js | 3 +- .../output.js | 3 +- .../output.js | 3 +- .../output.js | 3 +- .../output.js | 3 +- .../output.js | 3 +- .../multi-entry-module-exports/output1.js | 3 +- .../multi-entry-module-exports/output2.js | 3 +- .../form/no-toplevel-return/output.js | 3 +- .../output.js | 3 +- .../output.js | 3 +- .../optimised-default-export-iife/output.js | 3 +- .../form/optimised-default-export/output.js | 3 +- .../_config.js | 14 + .../a.js | 3 + .../b.js | 3 + .../c.js | 1 + .../main.js | 2 + .../this-before-replace-auto/_config.js | 7 + .../function/this-before-replace-auto/main.js | 1 + .../this-before-replace-auto/other.js | 3 + .../this-before-replace-unwrapped/_config.js | 6 + .../this-before-replace-unwrapped/main.js | 1 + .../this-before-replace-unwrapped/other.js | 3 + .../commonjs/test/snapshots/function.js.snap | 394 +++++++++++++----- packages/commonjs/test/snapshots/test.js.snap | 24 +- 29 files changed, 401 insertions(+), 134 deletions(-) create mode 100644 packages/commonjs/test/fixtures/function/strict-requires-circular-replace-mixed/_config.js create mode 100644 packages/commonjs/test/fixtures/function/strict-requires-circular-replace-mixed/a.js create mode 100644 packages/commonjs/test/fixtures/function/strict-requires-circular-replace-mixed/b.js create mode 100644 packages/commonjs/test/fixtures/function/strict-requires-circular-replace-mixed/c.js create mode 100644 packages/commonjs/test/fixtures/function/strict-requires-circular-replace-mixed/main.js create mode 100644 packages/commonjs/test/fixtures/function/this-before-replace-auto/_config.js create mode 100644 packages/commonjs/test/fixtures/function/this-before-replace-auto/main.js create mode 100644 packages/commonjs/test/fixtures/function/this-before-replace-auto/other.js create mode 100644 packages/commonjs/test/fixtures/function/this-before-replace-unwrapped/_config.js create mode 100644 packages/commonjs/test/fixtures/function/this-before-replace-unwrapped/main.js create mode 100644 packages/commonjs/test/fixtures/function/this-before-replace-unwrapped/other.js diff --git a/packages/commonjs/src/generate-exports.js b/packages/commonjs/src/generate-exports.js index f386facac..598ac0c17 100644 --- a/packages/commonjs/src/generate-exports.js +++ b/packages/commonjs/src/generate-exports.js @@ -35,7 +35,8 @@ export function rewriteExportsAndGetExportsBlock( exportMode, defaultIsModuleExports, usesRequireWrapper, - requireName + requireName, + usesTopLevelThis ) { const exports = []; const exportDeclarations = []; @@ -62,7 +63,8 @@ export function rewriteExportsAndGetExportsBlock( firstTopLevelModuleExportsAssignment, exportsName, defaultIsModuleExports, - HELPERS_NAME + HELPERS_NAME, + usesTopLevelThis ); } else { if (exportMode === 'module') { @@ -149,12 +151,19 @@ function getExportsForReplacedModuleExports( firstTopLevelModuleExportsAssignment, exportsName, defaultIsModuleExports, - HELPERS_NAME + HELPERS_NAME, + usesTopLevelThis ) { for (const { left } of moduleExportsAssignments) { magicString.overwrite(left.start, left.end, exportsName); } - magicString.prependRight(firstTopLevelModuleExportsAssignment.left.start, 'var '); + if (usesTopLevelThis) { + // Top-level `this` is rewritten to exportsName and may run before the + // assignment, so the variable must already hold Node's initial `{}`. + magicString.prepend(`var ${exportsName} = {};\n`); + } else { + magicString.prependRight(firstTopLevelModuleExportsAssignment.left.start, 'var '); + } exports.push(`${exportsName} as __moduleExports`); exportDeclarations.push( getDefaultExportDeclaration(exportsName, defaultIsModuleExports, HELPERS_NAME) diff --git a/packages/commonjs/src/transform-commonjs.js b/packages/commonjs/src/transform-commonjs.js index 5b6974b32..b2d09c616 100644 --- a/packages/commonjs/src/transform-commonjs.js +++ b/packages/commonjs/src/transform-commonjs.js @@ -556,7 +556,8 @@ export default async function transformCommonjs( exportMode, defaultIsModuleExports, usesRequireWrapper, - requireName + requireName, + replacedThis.length > 0 ); if (shouldWrap) { @@ -568,20 +569,23 @@ export default async function transformCommonjs( exclude: indentExclusionRanges }); const exported = exportMode === 'module' ? `${moduleName}.exports` : exportsName; + // A replaced module.exports starts from an empty object like it does in Node, + // so that a circular require or a top-level `this` before the + // `module.exports =` assignment sees `{}`. It is set when the first require + // starts, so a value that a re-entrant require already completed is kept. + const initialExports = exportMode === 'replace' ? `\t${exportsName} = {};\n` : ''; magicString.prepend( `var ${isRequiredName}; function ${requireName} () { \tif (${isRequiredName}) return ${exported}; \t${isRequiredName} = 1; -` +${initialExports}` ).append(` \treturn ${exported}; }`); if (exportMode === 'replace') { - // Start from an empty object like Node does, so that a circular require - // or a top-level `this` before the `module.exports =` assignment sees `{}`. - magicString.prepend(`var ${exportsName} = {};\n`); + magicString.prepend(`var ${exportsName};\n`); } } diff --git a/packages/commonjs/test/fixtures/form/async-function/output.js b/packages/commonjs/test/fixtures/form/async-function/output.js index 32965e0dc..2c936b5dc 100644 --- a/packages/commonjs/test/fixtures/form/async-function/output.js +++ b/packages/commonjs/test/fixtures/form/async-function/output.js @@ -1,11 +1,12 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input = {}; +var input; var hasRequiredInput; function requireInput () { if (hasRequiredInput) return input; hasRequiredInput = 1; + input = {}; input = async function () { // TODO }; diff --git a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-auto-reassign-exports-__esModule/output.js b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-auto-reassign-exports-__esModule/output.js index a0e170835..c1c04a59b 100644 --- a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-auto-reassign-exports-__esModule/output.js +++ b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-auto-reassign-exports-__esModule/output.js @@ -1,11 +1,12 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input = {}; +var input; var hasRequiredInput; function requireInput () { if (hasRequiredInput) return input; hasRequiredInput = 1; + input = {}; input = { __esModule: true, default: { foo: 'bar' }} return input; } diff --git a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-auto-reassign-exports-no-__esModule/output.js b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-auto-reassign-exports-no-__esModule/output.js index 1f9c20dfb..79df6566b 100644 --- a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-auto-reassign-exports-no-__esModule/output.js +++ b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-auto-reassign-exports-no-__esModule/output.js @@ -1,11 +1,12 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input = {}; +var input; var hasRequiredInput; function requireInput () { if (hasRequiredInput) return input; hasRequiredInput = 1; + input = {}; input = { default: { foo: 'bar' }} return input; } diff --git a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-false-reassign-exports-__esModule/output.js b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-false-reassign-exports-__esModule/output.js index 9dc749c6a..dbf2912f8 100644 --- a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-false-reassign-exports-__esModule/output.js +++ b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-false-reassign-exports-__esModule/output.js @@ -1,11 +1,12 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input = {}; +var input; var hasRequiredInput; function requireInput () { if (hasRequiredInput) return input; hasRequiredInput = 1; + input = {}; input = { __esModule: true, default: { foo: 'bar' }}; return input; } diff --git a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-false-reassign-exports-no-__esModule/output.js b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-false-reassign-exports-no-__esModule/output.js index ddbf63743..2871a5f11 100644 --- a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-false-reassign-exports-no-__esModule/output.js +++ b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-false-reassign-exports-no-__esModule/output.js @@ -1,11 +1,12 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input = {}; +var input; var hasRequiredInput; function requireInput () { if (hasRequiredInput) return input; hasRequiredInput = 1; + input = {}; input = { default: { foo: 'bar' }}; return input; } diff --git a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-true-reassign-exports-__esModule/output.js b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-true-reassign-exports-__esModule/output.js index 9dc749c6a..dbf2912f8 100644 --- a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-true-reassign-exports-__esModule/output.js +++ b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-true-reassign-exports-__esModule/output.js @@ -1,11 +1,12 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input = {}; +var input; var hasRequiredInput; function requireInput () { if (hasRequiredInput) return input; hasRequiredInput = 1; + input = {}; input = { __esModule: true, default: { foo: 'bar' }}; return input; } diff --git a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-true-reassign-exports-no-__esModule/output.js b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-true-reassign-exports-no-__esModule/output.js index ddbf63743..2871a5f11 100644 --- a/packages/commonjs/test/fixtures/form/defaultIsModuleExports-true-reassign-exports-no-__esModule/output.js +++ b/packages/commonjs/test/fixtures/form/defaultIsModuleExports-true-reassign-exports-no-__esModule/output.js @@ -1,11 +1,12 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input = {}; +var input; var hasRequiredInput; function requireInput () { if (hasRequiredInput) return input; hasRequiredInput = 1; + input = {}; input = { default: { foo: 'bar' }}; return input; } diff --git a/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output1.js b/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output1.js index 631669411..970b87f70 100644 --- a/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output1.js +++ b/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output1.js @@ -1,12 +1,13 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; import require$$0 from "\u0000CWD/fixtures/form/multi-entry-module-exports/input2.js?commonjs-proxy"; -var input1 = {}; +var input1; var hasRequiredInput1; function requireInput1 () { if (hasRequiredInput1) return input1; hasRequiredInput1 = 1; + input1 = {}; const t2 = require$$0; console.log(t2); diff --git a/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output2.js b/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output2.js index 748bcf700..6d72f09f2 100644 --- a/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output2.js +++ b/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output2.js @@ -1,11 +1,12 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input2 = {}; +var input2; var hasRequiredInput2; function requireInput2 () { if (hasRequiredInput2) return input2; hasRequiredInput2 = 1; + input2 = {}; input2 = { a: 2 }; diff --git a/packages/commonjs/test/fixtures/form/no-toplevel-return/output.js b/packages/commonjs/test/fixtures/form/no-toplevel-return/output.js index f33b6fbf6..b6bab2b9a 100644 --- a/packages/commonjs/test/fixtures/form/no-toplevel-return/output.js +++ b/packages/commonjs/test/fixtures/form/no-toplevel-return/output.js @@ -1,11 +1,12 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input = {}; +var input; var hasRequiredInput; function requireInput () { if (hasRequiredInput) return input; hasRequiredInput = 1; + input = {}; var foo = function () { return; }; diff --git a/packages/commonjs/test/fixtures/form/optimised-default-export-function-double-assign/output.js b/packages/commonjs/test/fixtures/form/optimised-default-export-function-double-assign/output.js index 9c8b2f4ce..29c9b7721 100644 --- a/packages/commonjs/test/fixtures/form/optimised-default-export-function-double-assign/output.js +++ b/packages/commonjs/test/fixtures/form/optimised-default-export-function-double-assign/output.js @@ -1,11 +1,12 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input = {}; +var input; var hasRequiredInput; function requireInput () { if (hasRequiredInput) return input; hasRequiredInput = 1; + input = {}; var bar; input = bar = function foo () {}; return input; diff --git a/packages/commonjs/test/fixtures/form/optimised-default-export-function/output.js b/packages/commonjs/test/fixtures/form/optimised-default-export-function/output.js index 5b3677dd3..a580be629 100644 --- a/packages/commonjs/test/fixtures/form/optimised-default-export-function/output.js +++ b/packages/commonjs/test/fixtures/form/optimised-default-export-function/output.js @@ -1,11 +1,12 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input = {}; +var input; var hasRequiredInput; function requireInput () { if (hasRequiredInput) return input; hasRequiredInput = 1; + input = {}; input = function foo () {}; return input; } diff --git a/packages/commonjs/test/fixtures/form/optimised-default-export-iife/output.js b/packages/commonjs/test/fixtures/form/optimised-default-export-iife/output.js index c8eec73a6..c2b891732 100644 --- a/packages/commonjs/test/fixtures/form/optimised-default-export-iife/output.js +++ b/packages/commonjs/test/fixtures/form/optimised-default-export-iife/output.js @@ -1,11 +1,12 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input = {}; +var input; var hasRequiredInput; function requireInput () { if (hasRequiredInput) return input; hasRequiredInput = 1; + input = {}; input = (function foo () { return function fooChild() {}; }()); diff --git a/packages/commonjs/test/fixtures/form/optimised-default-export/output.js b/packages/commonjs/test/fixtures/form/optimised-default-export/output.js index c84381012..114ab0e17 100644 --- a/packages/commonjs/test/fixtures/form/optimised-default-export/output.js +++ b/packages/commonjs/test/fixtures/form/optimised-default-export/output.js @@ -1,11 +1,12 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -var input = {}; +var input; var hasRequiredInput; function requireInput () { if (hasRequiredInput) return input; hasRequiredInput = 1; + input = {}; input = 42; return input; } diff --git a/packages/commonjs/test/fixtures/function/strict-requires-circular-replace-mixed/_config.js b/packages/commonjs/test/fixtures/function/strict-requires-circular-replace-mixed/_config.js new file mode 100644 index 000000000..7f56e07cc --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-circular-replace-mixed/_config.js @@ -0,0 +1,14 @@ +module.exports = { + description: + 'keeps a replaced module.exports that a re-entrant require completed through an ES module', + options: { + onwarn(warning) { + if (warning.code !== 'CIRCULAR_DEPENDENCY') { + throw new Error(warning.message); + } + } + }, + pluginOptions: { + strictRequires: true + } +}; diff --git a/packages/commonjs/test/fixtures/function/strict-requires-circular-replace-mixed/a.js b/packages/commonjs/test/fixtures/function/strict-requires-circular-replace-mixed/a.js new file mode 100644 index 000000000..8cc8d080d --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-circular-replace-mixed/a.js @@ -0,0 +1,3 @@ +require('./b.js'); + +module.exports = 42; diff --git a/packages/commonjs/test/fixtures/function/strict-requires-circular-replace-mixed/b.js b/packages/commonjs/test/fixtures/function/strict-requires-circular-replace-mixed/b.js new file mode 100644 index 000000000..39d321f9e --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-circular-replace-mixed/b.js @@ -0,0 +1,3 @@ +import c from './c.js'; + +export default c; diff --git a/packages/commonjs/test/fixtures/function/strict-requires-circular-replace-mixed/c.js b/packages/commonjs/test/fixtures/function/strict-requires-circular-replace-mixed/c.js new file mode 100644 index 000000000..8ebb6485a --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-circular-replace-mixed/c.js @@ -0,0 +1 @@ +module.exports = require('./a.js'); diff --git a/packages/commonjs/test/fixtures/function/strict-requires-circular-replace-mixed/main.js b/packages/commonjs/test/fixtures/function/strict-requires-circular-replace-mixed/main.js new file mode 100644 index 000000000..2c28a8cfa --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-circular-replace-mixed/main.js @@ -0,0 +1,2 @@ +t.is(require('./a.js'), 42); +t.is(require('./a.js'), 42); diff --git a/packages/commonjs/test/fixtures/function/this-before-replace-auto/_config.js b/packages/commonjs/test/fixtures/function/this-before-replace-auto/_config.js new file mode 100644 index 000000000..16d3bbfca --- /dev/null +++ b/packages/commonjs/test/fixtures/function/this-before-replace-auto/_config.js @@ -0,0 +1,7 @@ +module.exports = { + description: + 'allows top-level this before module.exports is replaced when strictRequires is auto', + pluginOptions: { + strictRequires: 'auto' + } +}; diff --git a/packages/commonjs/test/fixtures/function/this-before-replace-auto/main.js b/packages/commonjs/test/fixtures/function/this-before-replace-auto/main.js new file mode 100644 index 000000000..a81e423d3 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/this-before-replace-auto/main.js @@ -0,0 +1 @@ +t.deepEqual(require('./other.js'), { y: 2 }); diff --git a/packages/commonjs/test/fixtures/function/this-before-replace-auto/other.js b/packages/commonjs/test/fixtures/function/this-before-replace-auto/other.js new file mode 100644 index 000000000..a503a681d --- /dev/null +++ b/packages/commonjs/test/fixtures/function/this-before-replace-auto/other.js @@ -0,0 +1,3 @@ +this.x = 1; + +module.exports = { y: 2 }; diff --git a/packages/commonjs/test/fixtures/function/this-before-replace-unwrapped/_config.js b/packages/commonjs/test/fixtures/function/this-before-replace-unwrapped/_config.js new file mode 100644 index 000000000..4333c7189 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/this-before-replace-unwrapped/_config.js @@ -0,0 +1,6 @@ +module.exports = { + description: 'allows top-level this before module.exports is replaced in an unwrapped module', + pluginOptions: { + strictRequires: false + } +}; diff --git a/packages/commonjs/test/fixtures/function/this-before-replace-unwrapped/main.js b/packages/commonjs/test/fixtures/function/this-before-replace-unwrapped/main.js new file mode 100644 index 000000000..a81e423d3 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/this-before-replace-unwrapped/main.js @@ -0,0 +1 @@ +t.deepEqual(require('./other.js'), { y: 2 }); diff --git a/packages/commonjs/test/fixtures/function/this-before-replace-unwrapped/other.js b/packages/commonjs/test/fixtures/function/this-before-replace-unwrapped/other.js new file mode 100644 index 000000000..a503a681d --- /dev/null +++ b/packages/commonjs/test/fixtures/function/this-before-replace-unwrapped/other.js @@ -0,0 +1,3 @@ +this.x = 1; + +module.exports = { y: 2 }; diff --git a/packages/commonjs/test/snapshots/function.js.snap b/packages/commonjs/test/snapshots/function.js.snap index b2feda66d..33e59bd64 100644 --- a/packages/commonjs/test/snapshots/function.js.snap +++ b/packages/commonjs/test/snapshots/function.js.snap @@ -138,22 +138,24 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var foo = {}; +var foo; var hasRequiredFoo; function requireFoo () { if (hasRequiredFoo) return foo; hasRequiredFoo = 1; + foo = {}; foo = 21; return foo; } -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; const foo = requireFoo(); main$1 = foo * 2; @@ -189,12 +191,13 @@ function requirePlatform () { return platform; } -var browser = {}; +var browser; var hasRequiredBrowser; function requireBrowser () { if (hasRequiredBrowser) return browser; hasRequiredBrowser = 1; + browser = {}; browser = 'browser'; return browser; } @@ -314,12 +317,13 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var _export = {}; +var _export; var hasRequired_export; function require_export () { if (hasRequired_export) return _export; hasRequired_export = 1; + _export = {}; _export = { test: 42 }; @@ -496,12 +500,13 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var dashName = {}; +var dashName; var hasRequiredDashName; function requireDashName () { if (hasRequiredDashName) return dashName; hasRequiredDashName = 1; + dashName = {}; dashName = true; return dashName; } @@ -559,12 +564,13 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var foo_bar = {}; +var foo_bar; var hasRequiredFoo_bar; function requireFoo_bar () { if (hasRequiredFoo_bar) return foo_bar; hasRequiredFoo_bar = 1; + foo_bar = {}; foo_bar = 'fubar'; return foo_bar; } @@ -647,12 +653,13 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var dep$1 = {}; +var dep$1; var hasRequiredDep; function requireDep () { if (hasRequiredDep) return dep$1; hasRequiredDep = 1; + dep$1 = {}; dep$1 = 'first'; dep$1 = 'second'; return dep$1; @@ -774,12 +781,13 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var submodule = {}; +var submodule; var hasRequiredSubmodule; function requireSubmodule () { if (hasRequiredSubmodule) return submodule; hasRequiredSubmodule = 1; + submodule = {}; submodule = function () { return 'Hello there'; }; @@ -920,12 +928,13 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var submodule = {}; +var submodule; var hasRequiredSubmodule; function requireSubmodule () { if (hasRequiredSubmodule) return submodule; hasRequiredSubmodule = 1; + submodule = {}; submodule = function () { return 'Hello there'; }; @@ -1068,32 +1077,35 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var direct = {}; +var direct; var hasRequiredDirect; function requireDirect () { if (hasRequiredDirect) return direct; hasRequiredDirect = 1; + direct = {}; direct = 'direct'; return direct; } -var nested = {}; +var nested; var hasRequiredNested; function requireNested () { if (hasRequiredNested) return nested; hasRequiredNested = 1; + nested = {}; nested = 'nested'; return nested; } -var parent = {}; +var parent; var hasRequiredParent; function requireParent () { if (hasRequiredParent) return parent; hasRequiredParent = 1; + parent = {}; parent = 'parent'; return parent; } @@ -1248,12 +1260,13 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var stub = {}; +var stub; var hasRequiredStub; function requireStub () { if (hasRequiredStub) return stub; hasRequiredStub = 1; + stub = {}; stub = function () { return 'Hello there'; }; @@ -1412,22 +1425,24 @@ requireLib1(); ", "main2.js": "'use strict'; -var target1 = {}; +var target1; var hasRequiredTarget1; function requireTarget1 () { if (hasRequiredTarget1) return target1; hasRequiredTarget1 = 1; + target1 = {}; target1 = '1'; return target1; } -var target2 = {}; +var target2; var hasRequiredTarget2; function requireTarget2 () { if (hasRequiredTarget2) return target2; hasRequiredTarget2 = 1; + target2 = {}; target2 = '2'; return target2; } @@ -1558,12 +1573,13 @@ exports[`dynamic-require-different-loader 1`] = ` { "main.js": "'use strict'; -var submodule2 = {}; +var submodule2; var hasRequiredSubmodule2; function requireSubmodule2 () { if (hasRequiredSubmodule2) return submodule2; hasRequiredSubmodule2 = 1; + submodule2 = {}; submodule2 = function () { return 'Hello there'; }; @@ -1723,12 +1739,13 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var submodule = {}; +var submodule; var hasRequiredSubmodule; function requireSubmodule () { if (hasRequiredSubmodule) return submodule; hasRequiredSubmodule = 1; + submodule = {}; submodule = 'submodule'; return submodule; } @@ -1827,12 +1844,13 @@ function normalize (path) { /* eslint-disable import/no-dynamic-require, global-require */ -var importer = {}; +var importer; var hasRequiredImporter; function requireImporter () { if (hasRequiredImporter) return importer; hasRequiredImporter = 1; + importer = {}; function takeModule(withName) { return createCommonjsRequire("/fixtures/function/dynamic-require-es-entry")(\`./\${withName}\`); } @@ -1858,12 +1876,13 @@ exports[`dynamic-require-es-mixed-helpers 1`] = ` var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; -var submodule = {}; +var submodule; var hasRequiredSubmodule; function requireSubmodule () { if (hasRequiredSubmodule) return submodule; hasRequiredSubmodule = 1; + submodule = {}; commonjsGlobal.hasSubmoduleRun = true; submodule = 'submodule'; return submodule; @@ -1890,12 +1909,13 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var submodule = {}; +var submodule; var hasRequiredSubmodule; function requireSubmodule () { if (hasRequiredSubmodule) return submodule; hasRequiredSubmodule = 1; + submodule = {}; submodule = { name: 'submodule', value: null }; return submodule; } @@ -2067,12 +2087,13 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var submodule$1 = {}; +var submodule$1; var hasRequiredSubmodule; function requireSubmodule () { if (hasRequiredSubmodule) return submodule$1; hasRequiredSubmodule = 1; + submodule$1 = {}; submodule$1 = 'submodule'; return submodule$1; } @@ -2093,32 +2114,35 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var submodule1 = {}; +var submodule1; var hasRequiredSubmodule1; function requireSubmodule1 () { if (hasRequiredSubmodule1) return submodule1; hasRequiredSubmodule1 = 1; + submodule1 = {}; submodule1 = 'submodule1'; return submodule1; } -var submodule2 = {}; +var submodule2; var hasRequiredSubmodule2; function requireSubmodule2 () { if (hasRequiredSubmodule2) return submodule2; hasRequiredSubmodule2 = 1; + submodule2 = {}; submodule2 = 'submodule2'; return submodule2; } -var extramodule1 = {}; +var extramodule1; var hasRequiredExtramodule1; function requireExtramodule1 () { if (hasRequiredExtramodule1) return extramodule1; hasRequiredExtramodule1 = 1; + extramodule1 = {}; extramodule1 = 'extramodule1'; return extramodule1; } @@ -2256,22 +2280,24 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var direct = {}; +var direct; var hasRequiredDirect; function requireDirect () { if (hasRequiredDirect) return direct; hasRequiredDirect = 1; + direct = {}; direct = { name: 'direct', value: null }; return direct; } -var main$2 = {}; +var main$2; var hasRequiredMain$1; function requireMain$1 () { if (hasRequiredMain$1) return main$2; hasRequiredMain$1 = 1; + main$2 = {}; main$2 = { name: 'package', value: null }; return main$2; } @@ -2581,32 +2607,35 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var entry$2 = {}; +var entry$2; var hasRequiredEntry$2; function requireEntry$2 () { if (hasRequiredEntry$2) return entry$2; hasRequiredEntry$2 = 1; + entry$2 = {}; entry$2 = 'same-directory'; return entry$2; } -var entry$1 = {}; +var entry$1; var hasRequiredEntry$1; function requireEntry$1 () { if (hasRequiredEntry$1) return entry$1; hasRequiredEntry$1 = 1; + entry$1 = {}; entry$1 = 'sub'; return entry$1; } -var entry = {}; +var entry; var hasRequiredEntry; function requireEntry () { if (hasRequiredEntry) return entry; hasRequiredEntry = 1; + entry = {}; entry = 'custom-module'; return entry; } @@ -2712,12 +2741,13 @@ var main$1 = {}; /* eslint-disable import/no-dynamic-require, global-require */ -var sub = {}; +var sub; var hasRequiredSub; function requireSub () { if (hasRequiredSub) return sub; hasRequiredSub = 1; + sub = {}; function takeModule(name) { return createCommonjsRequire("/fixtures/function/dynamic-require-package/sub")(name); } @@ -2769,12 +2799,13 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var entry = {}; +var entry; var hasRequiredEntry; function requireEntry () { if (hasRequiredEntry) return entry; hasRequiredEntry = 1; + entry = {}; entry = 'custom-module'; return entry; } @@ -2804,22 +2835,24 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var submodule = {}; +var submodule; var hasRequiredSubmodule; function requireSubmodule () { if (hasRequiredSubmodule) return submodule; hasRequiredSubmodule = 1; + submodule = {}; submodule = 'submodule'; return submodule; } -var subsubmodule = {}; +var subsubmodule; var hasRequiredSubsubmodule; function requireSubsubmodule () { if (hasRequiredSubsubmodule) return subsubmodule; hasRequiredSubsubmodule = 1; + subsubmodule = {}; subsubmodule = 'subsubmodule'; return subsubmodule; } @@ -2953,32 +2986,35 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var dynamicRequireResolveIndex = {}; +var dynamicRequireResolveIndex; var hasRequiredDynamicRequireResolveIndex; function requireDynamicRequireResolveIndex () { if (hasRequiredDynamicRequireResolveIndex) return dynamicRequireResolveIndex; hasRequiredDynamicRequireResolveIndex = 1; + dynamicRequireResolveIndex = {}; dynamicRequireResolveIndex = 'same-directory'; return dynamicRequireResolveIndex; } -var sub$1 = {}; +var sub$1; var hasRequiredSub$1; function requireSub$1 () { if (hasRequiredSub$1) return sub$1; hasRequiredSub$1 = 1; + sub$1 = {}; sub$1 = 'sub'; return sub$1; } -var customModule = {}; +var customModule; var hasRequiredCustomModule; function requireCustomModule () { if (hasRequiredCustomModule) return customModule; hasRequiredCustomModule = 1; + customModule = {}; customModule = 'custom-module'; return customModule; } @@ -3084,12 +3120,13 @@ var main$1 = {}; /* eslint-disable import/no-dynamic-require, global-require */ -var sub = {}; +var sub; var hasRequiredSub; function requireSub () { if (hasRequiredSub) return sub; hasRequiredSub = 1; + sub = {}; function takeModule(name) { return createCommonjsRequire("/fixtures/function/dynamic-require-resolve-index/sub")(name); } @@ -3141,12 +3178,13 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var customModule2 = {}; +var customModule2; var hasRequiredCustomModule2; function requireCustomModule2 () { if (hasRequiredCustomModule2) return customModule2; hasRequiredCustomModule2 = 1; + customModule2 = {}; customModule2 = () => createCommonjsRequire("/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module2").resolve('custom-module'); return customModule2; } @@ -3246,12 +3284,13 @@ function normalize (path) { return path; } -var customModule = {}; +var customModule; var hasRequiredCustomModule; function requireCustomModule () { if (hasRequiredCustomModule) return customModule; hasRequiredCustomModule = 1; + customModule = {}; customModule = () => createCommonjsRequire("/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module").resolve('custom-module2'); return customModule; } @@ -3288,12 +3327,13 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var submodule = {}; +var submodule; var hasRequiredSubmodule; function requireSubmodule () { if (hasRequiredSubmodule) return submodule; hasRequiredSubmodule = 1; + submodule = {}; submodule = function () { return 'Hello there'; }; @@ -3509,42 +3549,46 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var dynamicRequireSlashAccess = {}; +var dynamicRequireSlashAccess; var hasRequiredDynamicRequireSlashAccess; function requireDynamicRequireSlashAccess () { if (hasRequiredDynamicRequireSlashAccess) return dynamicRequireSlashAccess; hasRequiredDynamicRequireSlashAccess = 1; + dynamicRequireSlashAccess = {}; dynamicRequireSlashAccess = 'same-directory'; return dynamicRequireSlashAccess; } -var sub$2 = {}; +var sub$2; var hasRequiredSub$2; function requireSub$2 () { if (hasRequiredSub$2) return sub$2; hasRequiredSub$2 = 1; + sub$2 = {}; sub$2 = 'sub'; return sub$2; } -var sub$1 = {}; +var sub$1; var hasRequiredSub$1; function requireSub$1 () { if (hasRequiredSub$1) return sub$1; hasRequiredSub$1 = 1; + sub$1 = {}; sub$1 = 'sub'; return sub$1; } -var customModule = {}; +var customModule; var hasRequiredCustomModule; function requireCustomModule () { if (hasRequiredCustomModule) return customModule; hasRequiredCustomModule = 1; + customModule = {}; customModule = 'custom-module' + ' + ' + requireSub$1(); return customModule; } @@ -3651,12 +3695,13 @@ var main$1 = {}; /* eslint-disable import/no-dynamic-require, global-require */ -var sub = {}; +var sub; var hasRequiredSub; function requireSub () { if (hasRequiredSub) return sub; hasRequiredSub = 1; + sub = {}; function takeModule(name) { return createCommonjsRequire("/fixtures/function/dynamic-require-slash-access/sub")(name); } @@ -3709,12 +3754,13 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var dep1 = {}; +var dep1; var hasRequiredDep1; function requireDep1 () { if (hasRequiredDep1) return dep1; hasRequiredDep1 = 1; + dep1 = {}; dep1 = 'dep'; return dep1; } @@ -3846,12 +3892,13 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var dep1 = {}; +var dep1; var hasRequiredDep1; function requireDep1 () { if (hasRequiredDep1) return dep1; hasRequiredDep1 = 1; + dep1 = {}; dep1 = 'dep'; return dep1; } @@ -4717,12 +4764,13 @@ function requireFoo () { return foo; } -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; const { bar } = requireFoo(); const { baz } = requireFoo(); @@ -4786,25 +4834,26 @@ exports[`expose-file-type-detection 1`] = ` { "main.js": "'use strict'; -var other = require('./other-6XkLAs04.js'); +var other = require('./other-vhhLh6sA.js'); var otherExports = other.requireOther(); var foo = /*@__PURE__*/other.getDefaultExportFromCjs(otherExports); t.is(foo, 'foo'); ", - "other-6XkLAs04.js": "'use strict'; + "other-vhhLh6sA.js": "'use strict'; function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var other = {}; +var other; var hasRequiredOther; function requireOther () { if (hasRequiredOther) return other; hasRequiredOther = 1; + other = {}; other = 'foo'; return other; } @@ -4814,7 +4863,7 @@ exports.requireOther = requireOther; ", "other.js": "'use strict'; -var other$1 = require('./other-6XkLAs04.js'); +var other$1 = require('./other-vhhLh6sA.js'); var otherExports = other$1.requireOther(); var other = /*@__PURE__*/other$1.getDefaultExportFromCjs(otherExports); @@ -4838,12 +4887,13 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; const foo = require$$0__default.default; main$1 = foo; @@ -4982,12 +5032,13 @@ function getDefaultExportFromCjs (x) { /* eslint-disable */ -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; function foo() { const global = {}; global.modified = true; @@ -6071,12 +6122,13 @@ string return dep; } -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; requireDep(); main$1 = \` @@ -6106,12 +6158,13 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var foo = {}; +var foo; var hasRequiredFoo; function requireFoo () { if (hasRequiredFoo) return foo; hasRequiredFoo = 1; + foo = {}; foo = 42; return foo; } @@ -6143,22 +6196,24 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var foo = {}; +var foo; var hasRequiredFoo; function requireFoo () { if (hasRequiredFoo) return foo; hasRequiredFoo = 1; + foo = {}; foo = 1; return foo; } -var multiply = {}; +var multiply; var hasRequiredMultiply; function requireMultiply () { if (hasRequiredMultiply) return multiply; hasRequiredMultiply = 1; + multiply = {}; multiply = function (a, b) { return a * b; }; @@ -6167,12 +6222,13 @@ function requireMultiply () { /* eslint-disable global-require */ -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; main$1 = function () { return requireMultiply()(2, requireFoo()); }; @@ -6323,12 +6379,13 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var other = {}; +var other; var hasRequiredOther; function requireOther () { if (hasRequiredOther) return other; hasRequiredOther = 1; + other = {}; other = 'foo'; return other; } @@ -6351,12 +6408,13 @@ function getDefaultExportFromCjs (x) { * This comment could be really important and should not be removed */ -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; main$1 = 'bar'; return main$1; @@ -6483,22 +6541,24 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var foo = {}; +var foo; var hasRequiredFoo; function requireFoo () { if (hasRequiredFoo) return foo; hasRequiredFoo = 1; + foo = {}; foo = 21; return foo; } -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; const foo = requireFoo(); main$1 = foo * 2; @@ -6566,12 +6626,13 @@ function getDefaultExportFromCjs (x) { node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.src || new URL('main.js', document.baseURI).href))); -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; main$1 = 1; return main$1; @@ -6595,12 +6656,13 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; main$1 = 1; return main$1; @@ -6895,12 +6957,13 @@ function require_export () { return _export; } -var reexport = {}; +var reexport; var hasRequiredReexport; function requireReexport () { if (hasRequiredReexport) return reexport; hasRequiredReexport = 1; + reexport = {}; reexport = require_export(); return reexport; } @@ -7111,12 +7174,13 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var dep = {}; +var dep; var hasRequiredDep; function requireDep () { if (hasRequiredDep) return dep; hasRequiredDep = 1; + dep = {}; dep = 42; return dep; } @@ -7249,12 +7313,13 @@ var main$1 = {}; var foo = {}; -var shared = {}; +var shared; var hasRequiredShared; function requireShared () { if (hasRequiredShared) return shared; hasRequiredShared = 1; + shared = {}; shared = { fooLoaded: false }; @@ -7273,12 +7338,13 @@ function requireFoo () { return foo; } -var bar = {}; +var bar; var hasRequiredBar; function requireBar () { if (hasRequiredBar) return bar; hasRequiredBar = 1; + bar = {}; const shared = requireShared(); bar = shared.fooLoaded; @@ -7324,12 +7390,13 @@ function getDefaultExportFromCjs (x) { var requiring = {}; -var fooRequired = {}; +var fooRequired; var hasRequiredFooRequired; function requireFooRequired () { if (hasRequiredFooRequired) return fooRequired; hasRequiredFooRequired = 1; + fooRequired = {}; fooRequired = 'required'; return fooRequired; } @@ -7370,23 +7437,25 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var dep = {}; +var dep; var hasRequiredDep; function requireDep () { if (hasRequiredDep) return dep; hasRequiredDep = 1; + dep = {}; t.is(commonjsGlobal.entryDetected, true); dep = 'dep'; return dep; } -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; t.is(commonjsGlobal.entryDetected, true); main$1 = requireDep(); return main$1; @@ -7491,12 +7560,13 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; commonjsGlobal.main = 'main'; console.log('main'); @@ -7850,12 +7920,13 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var foo_1 = {}; +var foo_1; var hasRequiredFoo; function requireFoo () { if (hasRequiredFoo) return foo_1; hasRequiredFoo = 1; + foo_1 = {}; function foo() {} foo.something = false; @@ -8091,12 +8162,13 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var dep = {}; +var dep; var hasRequiredDep; function requireDep () { if (hasRequiredDep) return dep; hasRequiredDep = 1; + dep = {}; dep = { foo: 'foo', update: () => (dep = { foo: 'bar' }) @@ -8268,12 +8340,13 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var foo = {}; +var foo; var hasRequiredFoo; function requireFoo () { if (hasRequiredFoo) return foo; hasRequiredFoo = 1; + foo = {}; foo = 'foo'; return foo; } @@ -8353,12 +8426,13 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; const HOST = { global: commonjsGlobal }; @@ -8389,12 +8463,13 @@ function commonjsRequire(path) { throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); } -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; const HOST = { require: commonjsRequire }; @@ -8425,12 +8500,13 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var b = {}; +var b; var hasRequiredB; function requireB () { if (hasRequiredB) return b; hasRequiredB = 1; + b = {}; commonjsGlobal.b = 2; b = 'b'; return b; @@ -8609,24 +8685,26 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var b = {}; +var b; var hasRequiredB; function requireB () { if (hasRequiredB) return b; hasRequiredB = 1; + b = {}; const a = requireA(); b = { seen: typeof a }; return b; } -var a = {}; +var a; var hasRequiredA; function requireA () { if (hasRequiredA) return a; hasRequiredA = 1; + a = {}; const b = requireB(); a = { seenByB: b.seen }; @@ -8650,6 +8728,58 @@ module.exports = main; } `; +exports[`strict-requires-circular-replace-mixed 1`] = ` +{ + "main.js": "'use strict'; + +function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} + +var main$1 = {}; + +var c; +var hasRequiredC; + +function requireC () { + if (hasRequiredC) return c; + hasRequiredC = 1; + c = {}; + c = requireA(); + return c; +} + +requireC(); + +var a; +var hasRequiredA; + +function requireA () { + if (hasRequiredA) return a; + hasRequiredA = 1; + a = {}; + a = 42; + return a; +} + +var hasRequiredMain; + +function requireMain () { + if (hasRequiredMain) return main$1; + hasRequiredMain = 1; + t.is(requireA(), 42); + t.is(requireA(), 42); + return main$1; +} + +var mainExports = requireMain(); +var main = /*@__PURE__*/getDefaultExportFromCjs(mainExports); + +module.exports = main; +", +} +`; + exports[`strict-requires-cycle-detection 1`] = ` { "main.js": "'use strict'; @@ -8797,12 +8927,13 @@ function requireThrows () { throw new Error('This should never be executed or imported'); } -var hoisted = {}; +var hoisted; var hasRequiredHoisted; function requireHoisted () { if (hasRequiredHoisted) return hoisted; hasRequiredHoisted = 1; + hoisted = {}; hoisted = 'this should be top-level'; return hoisted; } @@ -9049,12 +9180,13 @@ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof win var main = {}; -var replaceModuleExports = {}; +var replaceModuleExports; var hasRequiredReplaceModuleExports; function requireReplaceModuleExports () { if (hasRequiredReplaceModuleExports) return replaceModuleExports; hasRequiredReplaceModuleExports = 1; + replaceModuleExports = {}; replaceModuleExports = { foo: 'foo' }; commonjsGlobal.hasReplaceModuleExportsRun = true; return replaceModuleExports; @@ -9112,12 +9244,13 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; main$1 = 42; return main$1; } @@ -9138,12 +9271,13 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; main$1 = 42; return main$1; } @@ -9316,12 +9450,13 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var other = {}; +var other; var hasRequiredOther; function requireOther () { if (hasRequiredOther) return other; hasRequiredOther = 1; + other = {}; other.x = 1; other = { y: 2 }; @@ -9411,6 +9546,42 @@ module.exports = main; } `; +exports[`this-before-replace-auto 1`] = ` +{ + "main.js": "'use strict'; + +var main = {}; + +var other = {}; +other.x = 1; + +other = { y: 2 }; + +t.deepEqual(other, { y: 2 }); + +module.exports = main; +", +} +`; + +exports[`this-before-replace-unwrapped 1`] = ` +{ + "main.js": "'use strict'; + +var main = {}; + +var other = {}; +other.x = 1; + +other = { y: 2 }; + +t.deepEqual(other, { y: 2 }); + +module.exports = main; +", +} +`; + exports[`top-level-and-nested-module-exports-reassignment 1`] = ` { "main.js": "'use strict'; @@ -9421,12 +9592,13 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var dep1 = {}; +var dep1; var hasRequiredDep1; function requireDep1 () { if (hasRequiredDep1) return dep1; hasRequiredDep1 = 1; + dep1 = {}; dep1 = 'original'; if (reassignFirstModuleExports) { dep1 = 'reassigned'; @@ -9434,12 +9606,13 @@ function requireDep1 () { return dep1; } -var dep2 = {}; +var dep2; var hasRequiredDep2; function requireDep2 () { if (hasRequiredDep2) return dep2; hasRequiredDep2 = 1; + dep2 = {}; dep2 = 'original'; if (reassignSecondModuleExports) { dep2 = 'reassigned'; @@ -9447,12 +9620,13 @@ function requireDep2 () { return dep2; } -var dep3 = {}; +var dep3; var hasRequiredDep3; function requireDep3 () { if (hasRequiredDep3) return dep3; hasRequiredDep3 = 1; + dep3 = {}; if (reassignFirstModuleExports) { dep3 = 'reassigned'; } @@ -9460,12 +9634,13 @@ function requireDep3 () { return dep3; } -var dep4 = {}; +var dep4; var hasRequiredDep4; function requireDep4 () { if (hasRequiredDep4) return dep4; hasRequiredDep4 = 1; + dep4 = {}; if (reassignSecondModuleExports) { dep4 = 'reassigned'; } @@ -9508,12 +9683,13 @@ function getDefaultExportFromCjs (x) { /* eslint-disable */ -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; main$1 = 'foo'; return main$1; @@ -9537,12 +9713,13 @@ function getDefaultExportFromCjs (x) { var foo = {exports: {}}; -var bar = {}; +var bar; var hasRequiredBar; function requireBar () { if (hasRequiredBar) return bar; hasRequiredBar = 1; + bar = {}; bar = function () { return true; }; @@ -9566,12 +9743,13 @@ function requireFoo () { return foo.exports; } -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; const foo = requireFoo(); main$1 = foo; @@ -9596,12 +9774,13 @@ function getDefaultExportFromCjs (x) { var main$1 = {}; -var foo = {}; +var foo; var hasRequiredFoo; function requireFoo () { if (hasRequiredFoo) return foo; hasRequiredFoo = 1; + foo = {}; foo = 42; return foo; } @@ -9658,12 +9837,13 @@ function getAugmentedNamespace(n) { return a; } -var other$1 = {}; +var other$1; var hasRequiredOther; function requireOther () { if (hasRequiredOther) return other$1; hasRequiredOther = 1; + other$1 = {}; other$1 = 'other'; return other$1; } @@ -10369,12 +10549,13 @@ function requireDep () { return dep$1; } -var proxy = {}; +var proxy; var hasRequiredProxy; function requireProxy () { if (hasRequiredProxy) return proxy; hasRequiredProxy = 1; + proxy = {}; proxy = requireDep(); return proxy; } @@ -10422,12 +10603,13 @@ function requireEntry () { return entry$1; } -var proxy$1 = {}; +var proxy$1; var hasRequiredProxy; function requireProxy () { if (hasRequiredProxy) return proxy$1; hasRequiredProxy = 1; + proxy$1 = {}; proxy$1 = requireEntry(); return proxy$1; } @@ -10481,12 +10663,13 @@ function requireEntry () { return entry$1; } -var proxy$1 = {}; +var proxy$1; var hasRequiredProxy; function requireProxy () { if (hasRequiredProxy) return proxy$1; hasRequiredProxy = 1; + proxy$1 = {}; proxy$1 = requireEntry(); return proxy$1; } @@ -10539,12 +10722,13 @@ function requireEntry () { return entry$1; } -var proxy$1 = {}; +var proxy$1; var hasRequiredProxy; function requireProxy () { if (hasRequiredProxy) return proxy$1; hasRequiredProxy = 1; + proxy$1 = {}; proxy$1 = requireEntry(); return proxy$1; } @@ -10588,12 +10772,13 @@ function requireDep () { return dep$1; } -var proxy = {}; +var proxy; var hasRequiredProxy; function requireProxy () { if (hasRequiredProxy) return proxy; hasRequiredProxy = 1; + proxy = {}; proxy = requireDep(); return proxy; } @@ -10623,12 +10808,13 @@ function requireDep () { return dep; } -var proxy = {}; +var proxy; var hasRequiredProxy; function requireProxy () { if (hasRequiredProxy) return proxy; hasRequiredProxy = 1; + proxy = {}; proxy = requireDep(); return proxy; } @@ -11035,22 +11221,24 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var foo = {}; +var foo; var hasRequiredFoo; function requireFoo () { if (hasRequiredFoo) return foo; hasRequiredFoo = 1; + foo = {}; foo = 21; return foo; } -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; const foo = requireFoo(); main$1 = foo * 2; diff --git a/packages/commonjs/test/snapshots/test.js.snap b/packages/commonjs/test/snapshots/test.js.snap index 02f7b5c04..91b81dceb 100644 --- a/packages/commonjs/test/snapshots/test.js.snap +++ b/packages/commonjs/test/snapshots/test.js.snap @@ -7,12 +7,13 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; const obj = { a: 'b', b: 'c' @@ -32,12 +33,13 @@ module.exports = main; `; exports[`does not transform typeof exports for mixed modules 1`] = ` -"var foo$1 = {}; +"var foo$1; var hasRequiredFoo; function requireFoo () { if (hasRequiredFoo) return foo$1; hasRequiredFoo = 1; + foo$1 = {}; foo$1 = 21; return foo$1; } @@ -106,12 +108,13 @@ function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } -var second$1 = {}; +var second$1; var hasRequiredSecond; function requireSecond () { if (hasRequiredSecond) return second$1; hasRequiredSecond = 1; + second$1 = {}; second$1 = require$$0.second; return second$1; } @@ -170,12 +173,13 @@ var dep$1 = /*#__PURE__*/Object.freeze({ var require$$0 = /*@__PURE__*/getAugmentedNamespace(dep$1); -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; main$1 = require$$0.dep; return main$1; } @@ -205,12 +209,13 @@ function requireDep () { return dep; } -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; main$1 = requireDep().dep; return main$1; } @@ -240,12 +245,13 @@ function requireDep () { return dep; } -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; main$1 = requireDep().dep; return main$1; } @@ -406,12 +412,13 @@ function getDefaultExportFromCjs (x) { var require$$0 = "default"; -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; main$1 = require$$0; return main$1; } @@ -468,12 +475,13 @@ var esm = /*#__PURE__*/Object.freeze({ var require$$0 = /*@__PURE__*/getAugmentedNamespace(esm); -var main$1 = {}; +var main$1; var hasRequiredMain; function requireMain () { if (hasRequiredMain) return main$1; hasRequiredMain = 1; + main$1 = {}; main$1 = require$$0; return main$1; }