Skip to content

Commit

Permalink
module: use kNodeModulesRE to detect node_modules
Browse files Browse the repository at this point in the history
This is faster and more consistent with other places using the
regular expression to detect node_modules.

PR-URL: nodejs#55243
Backport-PR-URL: nodejs#55217
Reviewed-By: Antoine du Hamel <[email protected]>
Reviewed-By: Jacob Smith <[email protected]>
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Marco Ippolito <[email protected]>
Refs: nodejs#52697
  • Loading branch information
joyeecheung committed Nov 12, 2024
1 parent 4e742c8 commit d20718f
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 15 deletions.
2 changes: 1 addition & 1 deletion lib/internal/modules/cjs/loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ const { pathToFileURL, fileURLToPath, isURL } = require('internal/url');
const {
pendingDeprecate,
emitExperimentalWarning,
isUnderNodeModules,
kEmptyObject,
setOwnProperty,
getLazy,
Expand All @@ -146,7 +147,6 @@ const { safeGetenv } = internalBinding('credentials');
const {
getCjsConditions,
initializeCjsConditions,
isUnderNodeModules,
loadBuiltinModule,
makeRequireFunction,
setHasStartedUserCJSExecution,
Expand Down
8 changes: 4 additions & 4 deletions lib/internal/modules/esm/load.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand All @@ -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 {
Expand Down
9 changes: 0 additions & 9 deletions lib/internal/modules/helpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

const {
ArrayPrototypeForEach,
ArrayPrototypeIncludes,
ObjectDefineProperty,
ObjectFreeze,
ObjectPrototypeHasOwnProperty,
Expand All @@ -11,7 +10,6 @@ const {
StringPrototypeCharCodeAt,
StringPrototypeIncludes,
StringPrototypeSlice,
StringPrototypeSplit,
StringPrototypeStartsWith,
} = primordials;
const {
Expand Down Expand Up @@ -380,12 +378,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
Expand Down Expand Up @@ -486,7 +478,6 @@ module.exports = {
getCjsConditions,
getCompileCacheDir,
initializeCjsConditions,
isUnderNodeModules,
loadBuiltinModule,
makeRequireFunction,
normalizeReferrerURL,
Expand Down
7 changes: 6 additions & 1 deletion lib/internal/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down Expand Up @@ -528,7 +532,7 @@ function isInsideNodeModules() {
) {
continue;
}
return RegExpPrototypeExec(kNodeModulesRE, filename) !== null;
return isUnderNodeModules(filename);
}
}
return false;
Expand Down Expand Up @@ -908,6 +912,7 @@ module.exports = {
guessHandleType,
isError,
isInsideNodeModules,
isUnderNodeModules,
isMacOS,
isWindows,
join,
Expand Down

0 comments on commit d20718f

Please sign in to comment.