diff --git a/packages/commonjs/CHANGELOG.md b/packages/commonjs/CHANGELOG.md index 26909f198..e5a16d3fc 100644 --- a/packages/commonjs/CHANGELOG.md +++ b/packages/commonjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @rollup/plugin-commonjs ChangeLog +## v26.0.2 + +_2024-09-23_ + +### Bugfixes + +- fix: replace top-level this with exports name (#1618) + ## v26.0.1 _2024-06-05_ diff --git a/packages/commonjs/package.json b/packages/commonjs/package.json index eaf3fdef3..5daff7280 100644 --- a/packages/commonjs/package.json +++ b/packages/commonjs/package.json @@ -1,6 +1,6 @@ { "name": "@rollup/plugin-commonjs", - "version": "26.0.1", + "version": "26.0.2", "publishConfig": { "access": "public" }, diff --git a/packages/commonjs/src/transform-commonjs.js b/packages/commonjs/src/transform-commonjs.js index 4601094e9..ba348dedf 100644 --- a/packages/commonjs/src/transform-commonjs.js +++ b/packages/commonjs/src/transform-commonjs.js @@ -102,6 +102,7 @@ export default async function transformCommonjs( const topLevelAssignments = new Set(); const topLevelDefineCompiledEsmExpressions = []; const replacedGlobal = []; + const replacedThis = []; const replacedDynamicRequires = []; const importedVariables = new Set(); const indentExclusionRanges = []; @@ -369,7 +370,7 @@ export default async function transformCommonjs( if (lexicalDepth === 0 && !classBodyDepth) { uses.global = true; if (!ignoreGlobal) { - replacedGlobal.push(node); + replacedThis.push(node); } } return; @@ -444,6 +445,11 @@ export default async function transformCommonjs( storeName: true }); } + for (const node of replacedThis) { + magicString.overwrite(node.start, node.end, exportsName, { + storeName: true + }); + } for (const node of replacedDynamicRequires) { magicString.overwrite( node.start, diff --git a/packages/commonjs/test/fixtures/function/this/main.js b/packages/commonjs/test/fixtures/function/this/main.js index d0c275253..c0be15432 100644 --- a/packages/commonjs/test/fixtures/function/this/main.js +++ b/packages/commonjs/test/fixtures/function/this/main.js @@ -1,10 +1,11 @@ -const { augmentThis, classThis } = require('./foo'); +const { augmentThis, classThis, y } = require('./foo'); const obj = {}; augmentThis.call(obj); t.is(obj.x, 'x'); -t.is(this.y, 'y'); +t.is(this.y, undefined); +t.is(y, 'y'); const instance = new classThis(); diff --git a/packages/commonjs/test/snapshots/function.js.md b/packages/commonjs/test/snapshots/function.js.md index 2c31aab43..c6e8d6b30 100644 --- a/packages/commonjs/test/snapshots/function.js.md +++ b/packages/commonjs/test/snapshots/function.js.md @@ -7286,8 +7286,6 @@ Generated by [AVA](https://avajs.dev). { 'main.js': `'use strict';␊ ␊ - var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};␊ - ␊ var main = {};␊ ␊ var foo = {};␊ @@ -7296,7 +7294,7 @@ Generated by [AVA](https://avajs.dev). this.x = 'x';␊ };␊ ␊ - commonjsGlobal.y = 'y';␊ + foo.y = 'y';␊ ␊ foo.classThis = class classThis {␊ constructor(){␊ @@ -7310,13 +7308,14 @@ Generated by [AVA](https://avajs.dev). yy = this.y␊ };␊ ␊ - const { augmentThis, classThis } = foo;␊ + const { augmentThis, classThis, y } = foo;␊ ␊ const obj = {};␊ augmentThis.call(obj);␊ ␊ t.is(obj.x, 'x');␊ - t.is(commonjsGlobal.y, 'y');␊ + t.is(main.y, undefined);␊ + t.is(y, 'y');␊ ␊ const instance = new classThis();␊ ␊ diff --git a/packages/commonjs/test/snapshots/function.js.snap b/packages/commonjs/test/snapshots/function.js.snap index 97a1e03b0..726565e0d 100644 Binary files a/packages/commonjs/test/snapshots/function.js.snap and b/packages/commonjs/test/snapshots/function.js.snap differ