@@ -235,7 +235,7 @@ let statCache = null;
235235 * See more {@link Module._load}
236236 * @returns {object }
237237 */
238- function wrapModuleLoad ( request , parent , isMain ) {
238+ function wrapModuleLoad ( request , parent , isMain , options ) {
239239 const logLabel = `[${ parent ?. id || '' } ] [${ request } ]` ;
240240 const traceLabel = `require('${ request } ')` ;
241241 const channel = onRequire ( ) ;
@@ -248,11 +248,11 @@ function wrapModuleLoad(request, parent, isMain) {
248248 __proto__ : null ,
249249 parentFilename : parent ?. filename ,
250250 id : request ,
251- } , Module , request , parent , isMain ) ;
251+ } , Module , request , parent , isMain , options ) ;
252252 }
253253 // No subscribers, skip the wrapping to avoid clobbering stack traces
254254 // and debugging steps.
255- return Module . _load ( request , parent , isMain ) ;
255+ return Module . _load ( request , parent , isMain , options ) ;
256256 } finally {
257257 endTimer ( logLabel , traceLabel ) ;
258258 }
@@ -1041,9 +1041,10 @@ function getExportsForCircularRequire(module) {
10411041 * @param {string } specifier
10421042 * @param {Module|undefined } parent
10431043 * @param {boolean } isMain
1044+ * @param {boolean } shouldSkipModuleHooks
10441045 * @returns {{url?: string, format?: string, parentURL?: string, filename: string} }
10451046 */
1046- function resolveForCJSWithHooks ( specifier , parent , isMain ) {
1047+ function resolveForCJSWithHooks ( specifier , parent , isMain , shouldSkipModuleHooks ) {
10471048 let defaultResolvedURL ;
10481049 let defaultResolvedFilename ;
10491050 let format ;
@@ -1066,7 +1067,7 @@ function resolveForCJSWithHooks(specifier, parent, isMain) {
10661067 }
10671068
10681069 // Fast path: no hooks, just return simple results.
1069- if ( ! resolveHooks . length ) {
1070+ if ( ! resolveHooks . length || shouldSkipModuleHooks ) {
10701071 const filename = defaultResolveImpl ( specifier , parent , isMain ) ;
10711072 return { __proto__ : null , url : defaultResolvedURL , filename, format } ;
10721073 }
@@ -1119,7 +1120,7 @@ function resolveForCJSWithHooks(specifier, parent, isMain) {
11191120 }
11201121
11211122 const result = { __proto__ : null , url, format, filename, parentURL } ;
1122- debug ( 'resolveForCJSWithHooks' , specifier , parent ?. id , '->' , result ) ;
1123+ debug ( 'resolveForCJSWithHooks' , specifier , parent ?. id , isMain , shouldSkipModuleHooks , '->' , result ) ;
11231124 return result ;
11241125}
11251126
@@ -1212,9 +1213,10 @@ function loadBuiltinWithHooks(id, url, format) {
12121213 * @param {string } request Specifier of module to load via `require`
12131214 * @param {Module } parent Absolute path of the module importing the child
12141215 * @param {boolean } isMain Whether the module is the main entry point
1216+ * @param {object|undefined } options Additional options for loading the module
12151217 * @returns {object }
12161218 */
1217- Module . _load = function ( request , parent , isMain ) {
1219+ Module . _load = function ( request , parent , isMain , options = kEmptyObject ) {
12181220 let relResolveCacheIdentifier ;
12191221 if ( parent ) {
12201222 debug ( 'Module._load REQUEST %s parent: %s' , request , parent . id ) ;
@@ -1237,7 +1239,7 @@ Module._load = function(request, parent, isMain) {
12371239 }
12381240 }
12391241
1240- const resolveResult = resolveForCJSWithHooks ( request , parent , isMain ) ;
1242+ const resolveResult = resolveForCJSWithHooks ( request , parent , isMain , options . shouldSkipModuleHooks ) ;
12411243 let { format } = resolveResult ;
12421244 const { url, filename } = resolveResult ;
12431245
0 commit comments