From af03df33c18ba85eb6004a670d293b2ea49581bc Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Fri, 4 Oct 2024 19:29:34 +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. PR-URL: https://github.com/nodejs/node/pull/55243 Reviewed-By: Antoine du Hamel Reviewed-By: Jacob Smith Reviewed-By: Richard Lau Reviewed-By: Marco Ippolito --- lib/internal/modules/cjs/loader.js | 1 - lib/internal/modules/esm/load.js | 8 ++++---- lib/internal/modules/helpers.js | 10 ---------- lib/internal/util.js | 7 ++++++- 4 files changed, 10 insertions(+), 16 deletions(-) diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js index 9d3818603f4e2b..2450b86c921e83 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js @@ -146,7 +146,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 084887c5fa6cae..362d49ee5f2f0a 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'); -} - /** * Enable on-disk compiled cache for all user modules being complied in the current Node.js instance * after this method is called. @@ -493,7 +484,6 @@ module.exports = { getCjsConditions, getCompileCacheDir, initializeCjsConditions, - isUnderNodeModules, loadBuiltinModule, makeRequireFunction, normalizeReferrerURL, diff --git a/lib/internal/util.js b/lib/internal/util.js index 0973d4efdf2257..8cba1c90ab8189 100644 --- a/lib/internal/util.js +++ b/lib/internal/util.js @@ -481,6 +481,10 @@ function spliceOne(list, index) { const kNodeModulesRE = /^(?:.*)[\\/]node_modules[\\/]/; +function isUnderNodeModules(filename) { + return filename && (RegExpPrototypeExec(kNodeModulesRE, filename) !== null); +} + let getStructuredStackImpl; function lazyGetStructuredStack() { @@ -528,7 +532,7 @@ function isInsideNodeModules() { ) { continue; } - return RegExpPrototypeExec(kNodeModulesRE, filename) !== null; + return isUnderNodeModules(filename); } } return false; @@ -908,6 +912,7 @@ module.exports = { guessHandleType, isError, isInsideNodeModules, + isUnderNodeModules, isMacOS, isWindows, join,