From 923b19e483c638d5e370795ba65b0897cdc79581 Mon Sep 17 00:00:00 2001 From: CharlieHelps Date: Mon, 13 Oct 2025 01:40:48 +0000 Subject: [PATCH 1/2] fix(commonjs): avoid hoisting dynamically required node: builtins under strictRequires - Treat external node: builtins as wrapped requires only when the parent module is wrapped (strictRequires or dynamic require), so requires are left lazy via a __require helper and resolved with createRequire instead of top-level ESM imports. - Add getExternalBuiltinRequireProxy to emit a proxy that exports a lazy __require for builtins. - Keep non-strict behavior unchanged to preserve existing unresolved-import warnings (e.g., require("path")). - Add test: strict-requires-external-node-builtin. --- packages/commonjs/src/index.js | 7 ++++- packages/commonjs/src/proxies.js | 13 ++++++++ .../commonjs/src/resolve-require-sources.js | 16 +++++++++- .../_config.js | 9 ++++++ .../main.js | 4 +++ .../commonjs/test/snapshots/function.js.md | 28 ++++++++++++++++++ .../commonjs/test/snapshots/function.js.snap | Bin 22533 -> 22581 bytes 7 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 packages/commonjs/test/fixtures/function/strict-requires-external-node-builtin/_config.js create mode 100644 packages/commonjs/test/fixtures/function/strict-requires-external-node-builtin/main.js diff --git a/packages/commonjs/src/index.js b/packages/commonjs/src/index.js index ed321dc1b..6abcd19e2 100644 --- a/packages/commonjs/src/index.js +++ b/packages/commonjs/src/index.js @@ -25,7 +25,8 @@ import { getEntryProxy, getEsImportProxy, getStaticRequireProxy, - getUnknownRequireProxy + getUnknownRequireProxy, + getExternalBuiltinRequireProxy } from './proxies'; import getResolveId from './resolve-id'; import { getRequireResolver } from './resolve-require-sources'; @@ -262,6 +263,10 @@ export default function commonjs(options = {}) { if (isWrappedId(id, EXTERNAL_SUFFIX)) { const actualId = unwrapId(id, EXTERNAL_SUFFIX); + const isNodeBuiltin = actualId.startsWith('node:'); + if (isNodeBuiltin) { + return getExternalBuiltinRequireProxy(actualId); + } return getUnknownRequireProxy( actualId, isEsmExternal(actualId) ? getRequireReturnsDefault(actualId) : true diff --git a/packages/commonjs/src/proxies.js b/packages/commonjs/src/proxies.js index 2e8d9f270..72aae3640 100644 --- a/packages/commonjs/src/proxies.js +++ b/packages/commonjs/src/proxies.js @@ -85,3 +85,16 @@ export function getEsImportProxy(id, defaultIsModuleExports, moduleSideEffects) syntheticNamedExports: '__moduleExports' }; } + +// For external Node built-ins required from wrapped CommonJS modules, we must not +// hoist an ESM import of the built-in (which would eagerly load it). Instead, +// expose a lazy `__require()` that resolves the built-in at runtime via +// `createRequire(import.meta.url)`. +export function getExternalBuiltinRequireProxy(id) { + const stringifiedId = JSON.stringify(id); + return ( + `import { createRequire } from 'node:module';\n` + + `const require = createRequire(import.meta.url);\n` + + `export function __require() { return require(${stringifiedId}); }` + ); +} diff --git a/packages/commonjs/src/resolve-require-sources.js b/packages/commonjs/src/resolve-require-sources.js index 84b42fa66..6756a06c3 100644 --- a/packages/commonjs/src/resolve-require-sources.js +++ b/packages/commonjs/src/resolve-require-sources.js @@ -5,6 +5,7 @@ import { isWrappedId, PROXY_SUFFIX, wrapId, + unwrapId, WRAPPED_SUFFIX } from './helpers'; import { resolveExtensions } from './resolve-id'; @@ -190,8 +191,21 @@ export function getRequireResolver(extensions, detectCyclesAndConditional, curre fullyAnalyzedModules[parentId] = true; return requireTargets.map(({ id: dependencyId, allowProxy }, index) => { // eslint-disable-next-line no-multi-assign - const isCommonJS = (parentMeta.isRequiredCommonJS[dependencyId] = + let isCommonJS = (parentMeta.isRequiredCommonJS[dependencyId] = getTypeForFullyAnalyzedModule(dependencyId)); + // Special-case external Node built-ins to be handled via a lazy __require + // helper instead of hoisted ESM imports when strict wrapping is used. + if ( + parentMeta.initialCommonJSType === IS_WRAPPED_COMMONJS && + !allowProxy && + isWrappedId(dependencyId, EXTERNAL_SUFFIX) + ) { + const actualId = unwrapId(dependencyId, EXTERNAL_SUFFIX); + const isNodeBuiltin = actualId.startsWith('node:'); + if (isNodeBuiltin) { + isCommonJS = IS_WRAPPED_COMMONJS; + } + } const isWrappedCommonJS = isCommonJS === IS_WRAPPED_COMMONJS; fullyAnalyzedModules[dependencyId] = true; return { diff --git a/packages/commonjs/test/fixtures/function/strict-requires-external-node-builtin/_config.js b/packages/commonjs/test/fixtures/function/strict-requires-external-node-builtin/_config.js new file mode 100644 index 000000000..f56002724 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-external-node-builtin/_config.js @@ -0,0 +1,9 @@ +module.exports = { + description: "does not hoist external node built-in requires when strictRequires is true", + pluginOptions: { + strictRequires: true + }, + exports: (exports, t) => { + t.is(exports, 42); + } +}; diff --git a/packages/commonjs/test/fixtures/function/strict-requires-external-node-builtin/main.js b/packages/commonjs/test/fixtures/function/strict-requires-external-node-builtin/main.js new file mode 100644 index 000000000..347fad0c2 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/strict-requires-external-node-builtin/main.js @@ -0,0 +1,4 @@ +if (false) { + require('node:sqlite'); +} +module.exports = 42; diff --git a/packages/commonjs/test/snapshots/function.js.md b/packages/commonjs/test/snapshots/function.js.md index e36cd7414..1c251e72d 100644 --- a/packages/commonjs/test/snapshots/function.js.md +++ b/packages/commonjs/test/snapshots/function.js.md @@ -9194,6 +9194,34 @@ Generated by [AVA](https://avajs.dev). `, } +## strict-requires-external-node-builtin + +> Snapshot 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 hasRequiredMain;␊ + ␊ + function requireMain () {␊ + if (hasRequiredMain) return main$1;␊ + hasRequiredMain = 1;␊ + main$1 = 42;␊ + return main$1;␊ + }␊ + ␊ + var mainExports = requireMain();␊ + var main = /*@__PURE__*/getDefaultExportFromCjs(mainExports);␊ + ␊ + module.exports = main;␊ + `, + } + ## strict-requires-file-without-module-type > Snapshot 1 diff --git a/packages/commonjs/test/snapshots/function.js.snap b/packages/commonjs/test/snapshots/function.js.snap index f044562433139f85ed59ba10edaf6a6e8f2452a1..2f11e8c91a219e01ee0b8f430ac2fe2bf6fb9133 100644 GIT binary patch delta 22217 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
a& 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 Date: Mon, 13 Oct 2025 02:05:19 +0000 Subject: [PATCH 2/2] style(commonjs): inline node: builtin check per review (no single-use var) --- packages/commonjs/src/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/commonjs/src/index.js b/packages/commonjs/src/index.js index 6abcd19e2..33dcda93e 100644 --- a/packages/commonjs/src/index.js +++ b/packages/commonjs/src/index.js @@ -263,8 +263,7 @@ export default function commonjs(options = {}) { if (isWrappedId(id, EXTERNAL_SUFFIX)) { const actualId = unwrapId(id, EXTERNAL_SUFFIX); - const isNodeBuiltin = actualId.startsWith('node:'); - if (isNodeBuiltin) { + if (actualId.startsWith('node:')) { return getExternalBuiltinRequireProxy(actualId); } return getUnknownRequireProxy(