@@ -55,7 +55,6 @@ const {
5555 StringPrototypeCharAt,
5656 StringPrototypeCharCodeAt,
5757 StringPrototypeEndsWith,
58- StringPrototypeLastIndexOf,
5958 StringPrototypeIndexOf,
6059 StringPrototypeRepeat,
6160 StringPrototypeSlice,
@@ -68,7 +67,7 @@ const cjsParseCache = new SafeWeakMap();
6867
6968// Set first due to cycle with ESM loader functions.
7069module . exports = {
71- wrapSafe, Module, toRealPath , readPackageScope , cjsParseCache,
70+ wrapSafe, Module, cjsParseCache,
7271 get hasLoadedAnyUserCJSModule ( ) { return hasLoadedAnyUserCJSModule ; } ,
7372 initializeCJS,
7473} ;
@@ -88,9 +87,7 @@ const {
8887const { internalCompileFunction } = require ( 'internal/vm' ) ;
8988const assert = require ( 'internal/assert' ) ;
9089const fs = require ( 'fs' ) ;
91- const internalFS = require ( 'internal/fs/utils' ) ;
9290const path = require ( 'path' ) ;
93- const { sep } = path ;
9491const { internalModuleStat } = internalBinding ( 'fs' ) ;
9592const { safeGetenv } = internalBinding ( 'credentials' ) ;
9693const {
@@ -106,6 +103,7 @@ const {
106103 makeRequireFunction,
107104 normalizeReferrerURL,
108105 stripBOM,
106+ toRealPath,
109107} = require ( 'internal/modules/helpers' ) ;
110108const packageJsonReader = require ( 'internal/modules/package_json_reader' ) ;
111109const { getOptionValue, getEmbedderOptions } = require ( 'internal/options' ) ;
@@ -403,15 +401,7 @@ function initializeCJS() {
403401// -> a.<ext>
404402// -> a/index.<ext>
405403
406- /**
407- * @param {string } requestPath
408- * @return {PackageConfig }
409- */
410- function readPackage ( requestPath ) {
411- return packageJsonReader . read ( path . resolve ( requestPath , 'package.json' ) ) ;
412- }
413-
414- let _readPackage = readPackage ;
404+ let _readPackage = packageJsonReader . readPackage ;
415405ObjectDefineProperty ( Module , '_readPackage' , {
416406 __proto__ : null ,
417407 get ( ) { return _readPackage ; } ,
@@ -423,37 +413,6 @@ ObjectDefineProperty(Module, '_readPackage', {
423413 configurable : true ,
424414} ) ;
425415
426- /**
427- * Get the nearest parent package.json file from a given path.
428- * Return the package.json data and the path to the package.json file, or false.
429- * @param {string } checkPath The path to start searching from.
430- */
431- function readPackageScope ( checkPath ) {
432- const rootSeparatorIndex = StringPrototypeIndexOf ( checkPath , sep ) ;
433- let separatorIndex ;
434- const enabledPermission = permission . isEnabled ( ) ;
435- do {
436- separatorIndex = StringPrototypeLastIndexOf ( checkPath , sep ) ;
437- checkPath = StringPrototypeSlice ( checkPath , 0 , separatorIndex ) ;
438- // Stop the search when the process doesn't have permissions
439- // to walk upwards
440- if ( enabledPermission && ! permission . has ( 'fs.read' , checkPath + sep ) ) {
441- return false ;
442- }
443- if ( StringPrototypeEndsWith ( checkPath , sep + 'node_modules' ) ) {
444- return false ;
445- }
446- const pjson = _readPackage ( checkPath + sep ) ;
447- if ( pjson . exists ) {
448- return {
449- data : pjson ,
450- path : checkPath ,
451- } ;
452- }
453- } while ( separatorIndex > rootSeparatorIndex ) ;
454- return false ;
455- }
456-
457416/**
458417 * Try to load a specifier as a package.
459418 * @param {string } requestPath The path to what we are trying to load
@@ -498,14 +457,6 @@ function tryPackage(requestPath, exts, isMain, originalPath) {
498457 return actual ;
499458}
500459
501- /**
502- * Cache for storing resolved real paths of modules.
503- * In order to minimize unnecessary lstat() calls, this cache is a list of known-real paths.
504- * Set to an empty Map to reset.
505- * @type {Map<string, string> }
506- */
507- const realpathCache = new SafeMap ( ) ;
508-
509460/**
510461 * Check if the file exists and is not a directory if using `--preserve-symlinks` and `isMain` is false, keep symlinks
511462 * intact, otherwise resolve to the absolute realpath.
@@ -521,17 +472,6 @@ function tryFile(requestPath, isMain) {
521472 return toRealPath ( requestPath ) ;
522473}
523474
524-
525- /**
526- * Resolves the path of a given `require` specifier, following symlinks.
527- * @param {string } requestPath The `require` specifier
528- */
529- function toRealPath ( requestPath ) {
530- return fs . realpathSync ( requestPath , {
531- [ internalFS . realpathCacheKey ] : realpathCache ,
532- } ) ;
533- }
534-
535475/**
536476 * Given a path, check if the file exists with any of the set extensions.
537477 * @param {string } basePath The path and filename without extension
@@ -593,7 +533,7 @@ function trySelfParentPath(parent) {
593533function trySelf ( parentPath , request ) {
594534 if ( ! parentPath ) { return false ; }
595535
596- const { data : pkg , path : pkgPath } = readPackageScope ( parentPath ) ;
536+ const { data : pkg , path : pkgPath } = packageJsonReader . readPackageScope ( parentPath ) ;
597537 if ( ! pkg || pkg . exports == null || pkg . name === undefined ) {
598538 return false ;
599539 }
@@ -1153,7 +1093,7 @@ Module._resolveFilename = function(request, parent, isMain, options) {
11531093
11541094 if ( request [ 0 ] === '#' && ( parent ?. filename || parent ?. id === '<repl>' ) ) {
11551095 const parentPath = parent ?. filename ?? process . cwd ( ) + path . sep ;
1156- const pkg = readPackageScope ( parentPath ) || { __proto__ : null } ;
1096+ const pkg = packageJsonReader . readPackageScope ( parentPath ) || { __proto__ : null } ;
11571097 if ( pkg . data ?. imports != null ) {
11581098 try {
11591099 const { packageImportsResolve } = require ( 'internal/modules/esm/resolve' ) ;
@@ -1450,7 +1390,7 @@ Module._extensions['.js'] = function(module, filename) {
14501390 content = fs . readFileSync ( filename , 'utf8' ) ;
14511391 }
14521392 if ( StringPrototypeEndsWith ( filename , '.js' ) ) {
1453- const pkg = readPackageScope ( filename ) || { __proto__ : null } ;
1393+ const pkg = packageJsonReader . readPackageScope ( filename ) || { __proto__ : null } ;
14541394 // Function require shouldn't be used in ES modules.
14551395 if ( pkg . data ?. type === 'module' ) {
14561396 const parent = moduleParentCache . get ( module ) ;
0 commit comments