From 676184d7a543eabaff5e1b47f9a9032ccaad7cdf Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Wed, 2 Oct 2024 19:16:39 +0200 Subject: [PATCH] module: use kNodeModulesRE to detect node_modules This is faster and more consistent with other places using the regular expression to detect node_modules. --- lib/internal/modules/cjs/loader.js | 2 +- lib/internal/modules/esm/load.js | 8 ++++---- lib/internal/modules/helpers.js | 10 ---------- lib/internal/util.js | 7 ++++++- 4 files changed, 11 insertions(+), 16 deletions(-) diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js index a51fd177b195bb..52671a72e1cf0a 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js @@ -124,6 +124,7 @@ const { pathToFileURL, fileURLToPath, isURL } = require('internal/url'); const { pendingDeprecate, emitExperimentalWarning, + isUnderNodeModules, kEmptyObject, setOwnProperty, getLazy, @@ -146,7 +147,6 @@ const { safeGetenv } = internalBinding('credentials'); const { getCjsConditions, initializeCjsConditions, - isUnderNodeModules, loadBuiltinModule, makeRequireFunction, setHasStartedUserCJSExecution, diff --git a/lib/internal/modules/esm/load.js b/lib/internal/modules/esm/load.js index 1932dd3c9ca369..d56dae3f001b1c 100644 --- a/lib/internal/modules/esm/load.js +++ b/lib/internal/modules/esm/load.js @@ -3,7 +3,10 @@ const { RegExpPrototypeExec, } = primordials; -const { kEmptyObject } = require('internal/util'); +const { + isUnderNodeModules, + kEmptyObject, +} = require('internal/util'); const { defaultGetFormat } = require('internal/modules/esm/get_format'); const { validateAttributes, emitImportAssertionWarning } = require('internal/modules/esm/assert'); @@ -14,9 +17,6 @@ const defaultType = getOptionValue('--experimental-default-type'); const { Buffer: { from: BufferFrom } } = require('buffer'); -const { - isUnderNodeModules, -} = require('internal/modules/helpers'); const { URL } = require('internal/url'); const { diff --git a/lib/internal/modules/helpers.js b/lib/internal/modules/helpers.js index 643f24ebc87814..ef28151da79741 100644 --- a/lib/internal/modules/helpers.js +++ b/lib/internal/modules/helpers.js @@ -2,7 +2,6 @@ const { ArrayPrototypeForEach, - ArrayPrototypeIncludes, ObjectDefineProperty, ObjectFreeze, ObjectPrototypeHasOwnProperty, @@ -11,7 +10,6 @@ const { StringPrototypeCharCodeAt, StringPrototypeIncludes, StringPrototypeSlice, - StringPrototypeSplit, StringPrototypeStartsWith, } = primordials; const { @@ -387,13 +385,6 @@ function stripTypeScriptTypes(source, filename) { return `${code}\n\n//# sourceURL=${filename}`; } -function isUnderNodeModules(filename) { - const resolvedPath = path.resolve(filename); - const normalizedPath = path.normalize(resolvedPath); - const splitPath = StringPrototypeSplit(normalizedPath, path.sep); - return ArrayPrototypeIncludes(splitPath, 'node_modules'); -} - /** @type {import('internal/util/types')} */ let _TYPES = null; /** @@ -494,7 +485,6 @@ module.exports = { getCjsConditions, getCompileCacheDir, initializeCjsConditions, - isUnderNodeModules, loadBuiltinModule, makeRequireFunction, normalizeReferrerURL, diff --git a/lib/internal/util.js b/lib/internal/util.js index f1f79c7ddc8c26..bf1622aa5305ce 100644 --- a/lib/internal/util.js +++ b/lib/internal/util.js @@ -484,6 +484,10 @@ function spliceOne(list, index) { const kNodeModulesRE = /^(?:.*)[\\/]node_modules[\\/]/; +function isUnderNodeModules(filename) { + return filename && (RegExpPrototypeExec(kNodeModulesRE, filename) !== null); +} + let getStructuredStackImpl; function lazyGetStructuredStack() { @@ -531,7 +535,7 @@ function isInsideNodeModules() { ) { continue; } - return RegExpPrototypeExec(kNodeModulesRE, filename) !== null; + return isUnderNodeModules(filename); } } return false; @@ -911,6 +915,7 @@ module.exports = { guessHandleType, isError, isInsideNodeModules, + isUnderNodeModules, isMacOS, isWindows, join,