@@ -55,7 +55,6 @@ const {
55
55
StringPrototypeCharAt,
56
56
StringPrototypeCharCodeAt,
57
57
StringPrototypeEndsWith,
58
- StringPrototypeLastIndexOf,
59
58
StringPrototypeIndexOf,
60
59
StringPrototypeRepeat,
61
60
StringPrototypeSlice,
@@ -68,7 +67,7 @@ const cjsParseCache = new SafeWeakMap();
68
67
69
68
// Set first due to cycle with ESM loader functions.
70
69
module . exports = {
71
- wrapSafe, Module, readPackageScope , cjsParseCache,
70
+ wrapSafe, Module, cjsParseCache,
72
71
get hasLoadedAnyUserCJSModule ( ) { return hasLoadedAnyUserCJSModule ; } ,
73
72
initializeCJS,
74
73
} ;
@@ -89,7 +88,6 @@ const { internalCompileFunction } = require('internal/vm');
89
88
const assert = require ( 'internal/assert' ) ;
90
89
const fs = require ( 'fs' ) ;
91
90
const path = require ( 'path' ) ;
92
- const { sep } = path ;
93
91
const { internalModuleStat } = internalBinding ( 'fs' ) ;
94
92
const { safeGetenv } = internalBinding ( 'credentials' ) ;
95
93
const {
@@ -403,15 +401,7 @@ function initializeCJS() {
403
401
// -> a.<ext>
404
402
// -> a/index.<ext>
405
403
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 ;
415
405
ObjectDefineProperty ( Module , '_readPackage' , {
416
406
__proto__ : null ,
417
407
get ( ) { return _readPackage ; } ,
@@ -423,37 +413,6 @@ ObjectDefineProperty(Module, '_readPackage', {
423
413
configurable : true ,
424
414
} ) ;
425
415
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
-
457
416
/**
458
417
* Try to load a specifier as a package.
459
418
* @param {string } requestPath The path to what we are trying to load
@@ -574,7 +533,7 @@ function trySelfParentPath(parent) {
574
533
function trySelf ( parentPath , request ) {
575
534
if ( ! parentPath ) { return false ; }
576
535
577
- const { data : pkg , path : pkgPath } = readPackageScope ( parentPath ) ;
536
+ const { data : pkg , path : pkgPath } = packageJsonReader . readPackageScope ( parentPath ) ;
578
537
if ( ! pkg || pkg . exports == null || pkg . name === undefined ) {
579
538
return false ;
580
539
}
@@ -1134,7 +1093,7 @@ Module._resolveFilename = function(request, parent, isMain, options) {
1134
1093
1135
1094
if ( request [ 0 ] === '#' && ( parent ?. filename || parent ?. id === '<repl>' ) ) {
1136
1095
const parentPath = parent ?. filename ?? process . cwd ( ) + path . sep ;
1137
- const pkg = readPackageScope ( parentPath ) || { __proto__ : null } ;
1096
+ const pkg = packageJsonReader . readPackageScope ( parentPath ) || { __proto__ : null } ;
1138
1097
if ( pkg . data ?. imports != null ) {
1139
1098
try {
1140
1099
const { packageImportsResolve } = require ( 'internal/modules/esm/resolve' ) ;
@@ -1431,7 +1390,7 @@ Module._extensions['.js'] = function(module, filename) {
1431
1390
content = fs . readFileSync ( filename , 'utf8' ) ;
1432
1391
}
1433
1392
if ( StringPrototypeEndsWith ( filename , '.js' ) ) {
1434
- const pkg = readPackageScope ( filename ) || { __proto__ : null } ;
1393
+ const pkg = packageJsonReader . readPackageScope ( filename ) || { __proto__ : null } ;
1435
1394
// Function require shouldn't be used in ES modules.
1436
1395
if ( pkg . data ?. type === 'module' ) {
1437
1396
const parent = moduleParentCache . get ( module ) ;
0 commit comments