From b1cd6a2de47881bcad0cfdd0dac0cffa526c6392 Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Sun, 3 Apr 2022 07:26:36 +0200 Subject: [PATCH] fix(commonjs): Do not change semantics when removing requires in if statements (#1038) --- packages/commonjs/src/generate-imports.js | 4 +- packages/commonjs/src/transform-commonjs.js | 15 +- .../conditional-require-non-strict/_config.js | 4 + .../conditional-require-non-strict/bar.js | 1 + .../conditional-require-non-strict/foo.js | 1 + .../conditional-require-non-strict/main.js | 7 + .../function/dynamic-require-empty/_config.js | 6 + .../function/dynamic-require-empty/main.js | 6 + .../dynamic-require-empty/submodule.js | 0 .../commonjs/test/snapshots/function.js.md | 148 ++++++++++++++++++ .../commonjs/test/snapshots/function.js.snap | Bin 21882 -> 22034 bytes 11 files changed, 187 insertions(+), 5 deletions(-) create mode 100644 packages/commonjs/test/fixtures/function/conditional-require-non-strict/_config.js create mode 100644 packages/commonjs/test/fixtures/function/conditional-require-non-strict/bar.js create mode 100644 packages/commonjs/test/fixtures/function/conditional-require-non-strict/foo.js create mode 100644 packages/commonjs/test/fixtures/function/conditional-require-non-strict/main.js create mode 100755 packages/commonjs/test/fixtures/function/dynamic-require-empty/_config.js create mode 100755 packages/commonjs/test/fixtures/function/dynamic-require-empty/main.js create mode 100755 packages/commonjs/test/fixtures/function/dynamic-require-empty/submodule.js diff --git a/packages/commonjs/src/generate-imports.js b/packages/commonjs/src/generate-imports.js index a9cc478fe..59fdd997d 100644 --- a/packages/commonjs/src/generate-imports.js +++ b/packages/commonjs/src/generate-imports.js @@ -60,7 +60,7 @@ export function getRequireStringArg(node) { export function getRequireHandlers() { const requireExpressions = []; - function addRequireStatement( + function addRequireExpression( sourceId, node, scope, @@ -140,7 +140,7 @@ export function getRequireHandlers() { } return { - addRequireStatement, + addRequireExpression, rewriteRequireExpressionsAndGetImportBlock }; } diff --git a/packages/commonjs/src/transform-commonjs.js b/packages/commonjs/src/transform-commonjs.js index 5287c5f79..88b13b7c5 100644 --- a/packages/commonjs/src/transform-commonjs.js +++ b/packages/commonjs/src/transform-commonjs.js @@ -78,7 +78,7 @@ export default async function transformCommonjs( // unconditional require elsewhere. let currentConditionalNodeEnd = null; const conditionalNodes = new Set(); - const { addRequireStatement, rewriteRequireExpressionsAndGetImportBlock } = getRequireHandlers(); + const { addRequireExpression, rewriteRequireExpressionsAndGetImportBlock } = getRequireHandlers(); // See which names are assigned to. This is necessary to prevent // illegally replacing `var foo = require('foo')` with `import foo from 'foo'`, @@ -233,14 +233,22 @@ export default async function transformCommonjs( const requireStringArg = getRequireStringArg(node); if (!ignoreRequire(requireStringArg)) { const usesReturnValue = parent.type !== 'ExpressionStatement'; - addRequireStatement( + const toBeRemoved = + parent.type === 'ExpressionStatement' && + (!currentConditionalNodeEnd || + // We should completely remove requires directly in a try-catch + // so that Rollup can remove up the try-catch + (currentTryBlockEnd !== null && currentTryBlockEnd < currentConditionalNodeEnd)) + ? parent + : node; + addRequireExpression( requireStringArg, node, scope, usesReturnValue, currentTryBlockEnd !== null, currentConditionalNodeEnd !== null, - parent.type === 'ExpressionStatement' ? parent : node + toBeRemoved ); if (parent.type === 'VariableDeclarator' && parent.id.type === 'Identifier') { for (const name of extractAssignedNames(parent.id)) { @@ -442,6 +450,7 @@ export default async function transformCommonjs( !( shouldWrap || isRequired || + needsRequireWrapper || uses.module || uses.exports || uses.require || diff --git a/packages/commonjs/test/fixtures/function/conditional-require-non-strict/_config.js b/packages/commonjs/test/fixtures/function/conditional-require-non-strict/_config.js new file mode 100644 index 000000000..fc1671434 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/conditional-require-non-strict/_config.js @@ -0,0 +1,4 @@ +module.exports = { + description: 'handles conditional require statements in non-strict mode', + pluginOptions: { strictRequires: false } +}; diff --git a/packages/commonjs/test/fixtures/function/conditional-require-non-strict/bar.js b/packages/commonjs/test/fixtures/function/conditional-require-non-strict/bar.js new file mode 100644 index 000000000..4a625a917 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/conditional-require-non-strict/bar.js @@ -0,0 +1 @@ +global.bar = true; diff --git a/packages/commonjs/test/fixtures/function/conditional-require-non-strict/foo.js b/packages/commonjs/test/fixtures/function/conditional-require-non-strict/foo.js new file mode 100644 index 000000000..a446ce3ad --- /dev/null +++ b/packages/commonjs/test/fixtures/function/conditional-require-non-strict/foo.js @@ -0,0 +1 @@ +global.foo = true; diff --git a/packages/commonjs/test/fixtures/function/conditional-require-non-strict/main.js b/packages/commonjs/test/fixtures/function/conditional-require-non-strict/main.js new file mode 100644 index 000000000..e64d67ec9 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/conditional-require-non-strict/main.js @@ -0,0 +1,7 @@ +if (Math.random() < 2) require('./foo.js'); +if (Math.random() > 2) require('./bar.js'); + +global.main = true; + +t.is(global.foo, true, 'foo'); +t.is(global.main, true, 'main'); diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-empty/_config.js b/packages/commonjs/test/fixtures/function/dynamic-require-empty/_config.js new file mode 100755 index 000000000..a416647cf --- /dev/null +++ b/packages/commonjs/test/fixtures/function/dynamic-require-empty/_config.js @@ -0,0 +1,6 @@ +module.exports = { + description: 'allows dynamically requiring an empty file', + pluginOptions: { + dynamicRequireTargets: ['fixtures/function/dynamic-require-empty/submodule.js'] + } +}; diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-empty/main.js b/packages/commonjs/test/fixtures/function/dynamic-require-empty/main.js new file mode 100755 index 000000000..d1c0f89d7 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/dynamic-require-empty/main.js @@ -0,0 +1,6 @@ +/* eslint-disable import/no-dynamic-require, global-require */ +function takeModule(withName) { + return require(`./${withName}`); +} + +t.deepEqual(takeModule('submodule'), {}); diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-empty/submodule.js b/packages/commonjs/test/fixtures/function/dynamic-require-empty/submodule.js new file mode 100755 index 000000000..e69de29bb diff --git a/packages/commonjs/test/snapshots/function.js.md b/packages/commonjs/test/snapshots/function.js.md index a49552585..8f1eaa57b 100644 --- a/packages/commonjs/test/snapshots/function.js.md +++ b/packages/commonjs/test/snapshots/function.js.md @@ -258,6 +258,30 @@ Generated by [AVA](https://avajs.dev). `, } +## conditional-require-non-strict + +> Snapshot 1 + + { + 'main.js': `'use strict';␊ + ␊ + var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};␊ + ␊ + var main = {};␊ + ␊ + commonjsGlobal.foo = true;␊ + ␊ + commonjsGlobal.bar = true;␊ + ␊ + commonjsGlobal.main = true;␊ + ␊ + t.is(commonjsGlobal.foo, true, 'foo');␊ + t.is(commonjsGlobal.main, true, 'main');␊ + ␊ + module.exports = main;␊ + `, + } + ## custom-options > Snapshot 1 @@ -7565,3 +7589,127 @@ Generated by [AVA](https://avajs.dev). module.exports = main;␊ `, } + +## dynamic-require-empty + +> Snapshot 1 + + { + 'main.js': `'use strict';␊ + ␊ + var submodule = {};␊ + ␊ + var hasRequiredSubmodule;␊ + ␊ + function requireSubmodule () {␊ + if (hasRequiredSubmodule) return submodule;␊ + hasRequiredSubmodule = 1;␊ + ␊ + return submodule;␊ + }␊ + ␊ + var dynamicModules;␊ + ␊ + function getDynamicModules() {␊ + return dynamicModules || (dynamicModules = {␊ + "/fixtures/function/dynamic-require-empty/submodule.js": requireSubmodule␊ + });␊ + }␊ + ␊ + function createCommonjsRequire(originalModuleDir) {␊ + function handleRequire(path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return getDynamicModules()[resolvedPath]();␊ + }␊ + 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.');␊ + }␊ + handleRequire.resolve = function (path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return resolvedPath;␊ + }␊ + return require.resolve(path);␊ + };␊ + return handleRequire;␊ + }␊ + ␊ + function commonjsResolve (path, originalModuleDir) {␊ + var shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ + path = normalize(path);␊ + var relPath;␊ + if (path[0] === '/') {␊ + originalModuleDir = '';␊ + }␊ + var modules = getDynamicModules();␊ + var checkedExtensions = ['', '.js', '.json'];␊ + while (true) {␊ + if (!shouldTryNodeModules) {␊ + relPath = normalize(originalModuleDir + '/' + path);␊ + } else {␊ + relPath = normalize(originalModuleDir + '/node_modules/' + path);␊ + }␊ + ␊ + if (relPath.endsWith('/..')) {␊ + break; // Travelled too far up, avoid infinite loop␊ + }␊ + ␊ + for (var extensionIndex = 0; extensionIndex < checkedExtensions.length; extensionIndex++) {␊ + var resolvedPath = relPath + checkedExtensions[extensionIndex];␊ + if (modules[resolvedPath]) {␊ + return resolvedPath;␊ + }␊ + }␊ + if (!shouldTryNodeModules) break;␊ + var nextDir = normalize(originalModuleDir + '/..');␊ + if (nextDir === originalModuleDir) break;␊ + originalModuleDir = nextDir;␊ + }␊ + return null;␊ + }␊ + ␊ + function isPossibleNodeModulesPath (modulePath) {␊ + var c0 = modulePath[0];␊ + if (c0 === '/' || c0 === '\\\\') return false;␊ + var c1 = modulePath[1], c2 = modulePath[2];␊ + if ((c0 === '.' && (!c1 || c1 === '/' || c1 === '\\\\')) ||␊ + (c0 === '.' && c1 === '.' && (!c2 || c2 === '/' || c2 === '\\\\'))) return false;␊ + if (c1 === ':' && (c2 === '/' || c2 === '\\\\')) return false;␊ + return true;␊ + }␊ + ␊ + function normalize (path) {␊ + path = path.replace(/\\\\/g, '/');␊ + var parts = path.split('/');␊ + var slashed = parts[0] === '';␊ + for (var i = 1; i < parts.length; i++) {␊ + if (parts[i] === '.' || parts[i] === '') {␊ + parts.splice(i--, 1);␊ + }␊ + }␊ + for (var i = 1; i < parts.length; i++) {␊ + if (parts[i] !== '..') continue;␊ + if (i > 0 && parts[i - 1] !== '..' && parts[i - 1] !== '.') {␊ + parts.splice(--i, 2);␊ + i--;␊ + }␊ + }␊ + path = parts.join('/');␊ + if (slashed && path[0] !== '/') path = '/' + path;␊ + else if (path.length === 0) path = '.';␊ + return path;␊ + }␊ + ␊ + var main = {};␊ + ␊ + /* eslint-disable import/no-dynamic-require, global-require */␊ + ␊ + function takeModule(withName) {␊ + return createCommonjsRequire("/fixtures/function/dynamic-require-empty")(`./${withName}`);␊ + }␊ + ␊ + t.deepEqual(takeModule('submodule'), {});␊ + ␊ + module.exports = main;␊ + `, + } diff --git a/packages/commonjs/test/snapshots/function.js.snap b/packages/commonjs/test/snapshots/function.js.snap index ee77041b1edfa02a4e29444f61ba44cce76d0478..c4fac9a4fa226d12ca80434f86677057cb751983 100644 GIT binary patch delta 21623 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 NuZqIS_y!!T{{wQ^h