@@ -194,10 +194,9 @@ function Module(id = '', parent) {
194
194
if ( policy ?. manifest ) {
195
195
const moduleURL = pathToFileURL ( id ) ;
196
196
redirects = policy . manifest . getDependencyMapper ( moduleURL ) ;
197
+ // TODO(rafaelgss): remove the necessity of this branch
198
+ setOwnProperty ( this , 'require' , makeRequireFunction ( this , redirects ) ) ;
197
199
}
198
- setOwnProperty ( this , 'require' , makeRequireFunction ( this , redirects ) ) ;
199
- // Loads a module at the given file path. Returns that module's
200
- // `exports` property.
201
200
this [ require_private_symbol ] = internalRequire ;
202
201
}
203
202
@@ -990,6 +989,23 @@ Module.prototype.load = function(filename) {
990
989
ESMLoader . cjsCache . set ( this , exports ) ;
991
990
} ;
992
991
992
+ // Loads a module at the given file path. Returns that module's
993
+ // `exports` property.
994
+ // When using the experimental policy mechanism this function is overridden
995
+ Module . prototype . require = function ( id ) {
996
+ validateString ( id , 'id' ) ;
997
+ if ( id === '' ) {
998
+ throw new ERR_INVALID_ARG_VALUE ( 'id' , id ,
999
+ 'must be a non-empty string' ) ;
1000
+ }
1001
+ requireDepth ++ ;
1002
+ try {
1003
+ return Module . _load ( id , this , /* isMain */ false ) ;
1004
+ } finally {
1005
+ requireDepth -- ;
1006
+ }
1007
+ } ;
1008
+
993
1009
// Resolved path to process.argv[1] will be lazily placed here
994
1010
// (needed for setting breakpoint when called with --inspect-brk)
995
1011
let resolvedArgv ;
@@ -1050,10 +1066,12 @@ function wrapSafe(filename, content, cjsModuleInstance) {
1050
1066
// Returns exception, if any.
1051
1067
Module . prototype . _compile = function ( content , filename ) {
1052
1068
let moduleURL ;
1053
- if ( policy ?. manifest ) {
1069
+ let redirects ;
1070
+ const manifest = policy ?. manifest ;
1071
+ if ( manifest ) {
1054
1072
moduleURL = pathToFileURL ( filename ) ;
1055
- policy . manifest . getDependencyMapper ( moduleURL ) ;
1056
- policy . manifest . assertIntegrity ( moduleURL , content ) ;
1073
+ redirects = manifest . getDependencyMapper ( moduleURL ) ;
1074
+ manifest . assertIntegrity ( moduleURL , content ) ;
1057
1075
}
1058
1076
1059
1077
maybeCacheSourceMap ( filename , content , this ) ;
@@ -1083,17 +1101,18 @@ Module.prototype._compile = function(content, filename) {
1083
1101
}
1084
1102
}
1085
1103
const dirname = path . dirname ( filename ) ;
1104
+ const require = makeRequireFunction ( this , redirects ) ;
1086
1105
let result ;
1087
1106
const exports = this . exports ;
1088
1107
const thisValue = exports ;
1089
1108
const module = this ;
1090
1109
if ( requireDepth === 0 ) statCache = new SafeMap ( ) ;
1091
1110
if ( inspectorWrapper ) {
1092
1111
result = inspectorWrapper ( compiledWrapper , thisValue , exports ,
1093
- module . require , module , filename , dirname ) ;
1112
+ require , module , filename , dirname ) ;
1094
1113
} else {
1095
1114
result = ReflectApply ( compiledWrapper , thisValue ,
1096
- [ exports , module . require , module , filename , dirname ] ) ;
1115
+ [ exports , require , module , filename , dirname ] ) ;
1097
1116
}
1098
1117
hasLoadedAnyUserCJSModule = true ;
1099
1118
if ( requireDepth === 0 ) statCache = null ;
0 commit comments