@@ -76,7 +76,11 @@ const {
76
76
maybeCacheSourceMap,
77
77
} = require ( 'internal/source_map/source_map_cache' ) ;
78
78
const { pathToFileURL, fileURLToPath, isURLInstance } = require ( 'internal/url' ) ;
79
- const { deprecate, filterOwnProperties, setOwnProperty } = require ( 'internal/util' ) ;
79
+ const {
80
+ deprecate,
81
+ filterOwnProperties,
82
+ setOwnProperty,
83
+ } = require ( 'internal/util' ) ;
80
84
const vm = require ( 'vm' ) ;
81
85
const assert = require ( 'internal/assert' ) ;
82
86
const fs = require ( 'fs' ) ;
@@ -86,6 +90,9 @@ const { sep } = path;
86
90
const { internalModuleStat } = internalBinding ( 'fs' ) ;
87
91
const packageJsonReader = require ( 'internal/modules/package_json_reader' ) ;
88
92
const { safeGetenv } = internalBinding ( 'credentials' ) ;
93
+ const {
94
+ require_private_symbol,
95
+ } = internalBinding ( 'util' ) ;
89
96
const {
90
97
makeRequireFunction,
91
98
normalizeReferrerURL,
@@ -143,6 +150,20 @@ let requireDepth = 0;
143
150
let statCache = null ;
144
151
let isPreloading = false ;
145
152
153
+ function internalRequire ( module , id ) {
154
+ validateString ( id , 'id' ) ;
155
+ if ( id === '' ) {
156
+ throw new ERR_INVALID_ARG_VALUE ( 'id' , id ,
157
+ 'must be a non-empty string' ) ;
158
+ }
159
+ requireDepth ++ ;
160
+ try {
161
+ return Module . _load ( id , module , /* isMain */ false ) ;
162
+ } finally {
163
+ requireDepth -- ;
164
+ }
165
+ }
166
+
146
167
function stat ( filename ) {
147
168
filename = path . toNamespacedPath ( filename ) ;
148
169
if ( statCache !== null ) {
@@ -169,6 +190,15 @@ function Module(id = '', parent) {
169
190
this . filename = null ;
170
191
this . loaded = false ;
171
192
this . children = [ ] ;
193
+ let redirects ;
194
+ if ( policy ?. manifest ) {
195
+ const moduleURL = pathToFileURL ( id ) ;
196
+ redirects = policy . manifest . getDependencyMapper ( moduleURL ) ;
197
+ }
198
+ setOwnProperty ( this , 'require' , makeRequireFunction ( this , redirects ) ) ;
199
+ // Loads a module at the given file path. Returns that module's
200
+ // `exports` property.
201
+ this [ require_private_symbol ] = internalRequire ;
172
202
}
173
203
174
204
const builtinModules = [ ] ;
@@ -776,6 +806,7 @@ Module._load = function(request, parent, isMain) {
776
806
777
807
if ( isMain ) {
778
808
process . mainModule = module ;
809
+ setOwnProperty ( module . require , 'main' , process . mainModule ) ;
779
810
module . id = '.' ;
780
811
}
781
812
@@ -959,24 +990,6 @@ Module.prototype.load = function(filename) {
959
990
ESMLoader . cjsCache . set ( this , exports ) ;
960
991
} ;
961
992
962
-
963
- // Loads a module at the given file path. Returns that module's
964
- // `exports` property.
965
- Module . prototype . require = function ( id ) {
966
- validateString ( id , 'id' ) ;
967
- if ( id === '' ) {
968
- throw new ERR_INVALID_ARG_VALUE ( 'id' , id ,
969
- 'must be a non-empty string' ) ;
970
- }
971
- requireDepth ++ ;
972
- try {
973
- return Module . _load ( id , this , /* isMain */ false ) ;
974
- } finally {
975
- requireDepth -- ;
976
- }
977
- } ;
978
-
979
-
980
993
// Resolved path to process.argv[1] will be lazily placed here
981
994
// (needed for setting breakpoint when called with --inspect-brk)
982
995
let resolvedArgv ;
@@ -1037,10 +1050,9 @@ function wrapSafe(filename, content, cjsModuleInstance) {
1037
1050
// Returns exception, if any.
1038
1051
Module . prototype . _compile = function ( content , filename ) {
1039
1052
let moduleURL ;
1040
- let redirects ;
1041
1053
if ( policy ?. manifest ) {
1042
1054
moduleURL = pathToFileURL ( filename ) ;
1043
- redirects = policy . manifest . getDependencyMapper ( moduleURL ) ;
1055
+ policy . manifest . getDependencyMapper ( moduleURL ) ;
1044
1056
policy . manifest . assertIntegrity ( moduleURL , content ) ;
1045
1057
}
1046
1058
@@ -1071,18 +1083,17 @@ Module.prototype._compile = function(content, filename) {
1071
1083
}
1072
1084
}
1073
1085
const dirname = path . dirname ( filename ) ;
1074
- const require = makeRequireFunction ( this , redirects ) ;
1075
1086
let result ;
1076
1087
const exports = this . exports ;
1077
1088
const thisValue = exports ;
1078
1089
const module = this ;
1079
1090
if ( requireDepth === 0 ) statCache = new SafeMap ( ) ;
1080
1091
if ( inspectorWrapper ) {
1081
1092
result = inspectorWrapper ( compiledWrapper , thisValue , exports ,
1082
- require , module , filename , dirname ) ;
1093
+ module . require , module , filename , dirname ) ;
1083
1094
} else {
1084
1095
result = ReflectApply ( compiledWrapper , thisValue ,
1085
- [ exports , require , module , filename , dirname ] ) ;
1096
+ [ exports , module . require , module , filename , dirname ] ) ;
1086
1097
}
1087
1098
hasLoadedAnyUserCJSModule = true ;
1088
1099
if ( requireDepth === 0 ) statCache = null ;
@@ -1240,7 +1251,7 @@ Module._preloadModules = function(requests) {
1240
1251
}
1241
1252
}
1242
1253
for ( let n = 0 ; n < requests . length ; n ++ )
1243
- parent . require ( requests [ n ] ) ;
1254
+ internalRequire ( parent , requests [ n ] ) ;
1244
1255
isPreloading = false ;
1245
1256
} ;
1246
1257
0 commit comments