@@ -179,39 +179,38 @@ function nextHookFactory(chain, meta, { validateArgs, validateOutput }) {
179179 * the main module and everything in its dependency graph.
180180 */
181181class ESMLoader {
182- /**
183- * Prior to ESM loading. These are called once before any modules are started.
184- * @private
185- * @property {KeyedHook[] } globalPreloaders Last-in-first-out
186- * list of preload hooks.
187- */
188- #globalPreloaders = [ ] ;
189-
190- /**
191- * Phase 2 of 2 in ESM loading.
192- * @private
193- * @property {KeyedHook[] } loaders Last-in-first-out
194- * collection of loader hooks.
195- */
196- #loaders = [
197- {
198- fn : defaultLoad ,
199- url : 'node:internal/modules/esm/load' ,
200- } ,
201- ] ;
202-
203- /**
204- * Phase 1 of 2 in ESM loading.
205- * @private
206- * @property {KeyedHook[] } resolvers Last-in-first-out
207- * collection of resolver hooks.
208- */
209- #resolvers = [
210- {
211- fn : defaultResolve ,
212- url : 'node:internal/modules/esm/resolve' ,
213- } ,
214- ] ;
182+ #hooks = {
183+ /**
184+ * Prior to ESM loading. These are called once before any modules are started.
185+ * @private
186+ * @property {KeyedHook[] } globalPreload Last-in-first-out list of preload hooks.
187+ */
188+ globalPreload : [ ] ,
189+
190+ /**
191+ * Phase 2 of 2 in ESM loading (phase 1 is below).
192+ * @private
193+ * @property {KeyedHook[] } load Last-in-first-out collection of loader hooks.
194+ */
195+ load : [
196+ {
197+ fn : defaultLoad ,
198+ url : 'node:internal/modules/esm/load' ,
199+ } ,
200+ ] ,
201+
202+ /**
203+ * Phase 1 of 2 in ESM loading.
204+ * @private
205+ * @property {KeyedHook[] } resolve Last-in-first-out collection of resolve hooks.
206+ */
207+ resolve : [
208+ {
209+ fn : defaultResolve ,
210+ url : 'node:internal/modules/esm/resolve' ,
211+ } ,
212+ ] ,
213+ } ;
215214
216215 #importMetaInitializer = initializeImportMeta ;
217216
@@ -305,13 +304,13 @@ class ESMLoader {
305304 ) ;
306305
307306 if ( globalPreload ) {
308- acceptedHooks . globalPreloader = globalPreload ;
307+ acceptedHooks . globalPreload = globalPreload ;
309308 }
310309 if ( resolve ) {
311- acceptedHooks . resolver = resolve ;
310+ acceptedHooks . resolve = resolve ;
312311 }
313312 if ( load ) {
314- acceptedHooks . loader = load ;
313+ acceptedHooks . load = load ;
315314 }
316315
317316 return acceptedHooks ;
@@ -333,34 +332,34 @@ class ESMLoader {
333332 url,
334333 } = customLoaders [ i ] ;
335334 const {
336- globalPreloader ,
337- resolver ,
338- loader ,
335+ globalPreload ,
336+ resolve ,
337+ load ,
339338 } = ESMLoader . pluckHooks ( exports ) ;
340339
341- if ( globalPreloader ) {
340+ if ( globalPreload ) {
342341 ArrayPrototypePush (
343- this . #globalPreloaders ,
342+ this . #hooks . globalPreload ,
344343 {
345- fn : globalPreloader ,
344+ fn : globalPreload ,
346345 url,
347346 } ,
348347 ) ;
349348 }
350- if ( resolver ) {
349+ if ( resolve ) {
351350 ArrayPrototypePush (
352- this . #resolvers ,
351+ this . #hooks . resolve ,
353352 {
354- fn : resolver ,
353+ fn : resolve ,
355354 url,
356355 } ,
357356 ) ;
358357 }
359- if ( loader ) {
358+ if ( load ) {
360359 ArrayPrototypePush (
361- this . #loaders ,
360+ this . #hooks . load ,
362361 {
363- fn : loader ,
362+ fn : load ,
364363 url,
365364 } ,
366365 ) ;
@@ -411,14 +410,14 @@ class ESMLoader {
411410 async getModuleJob ( specifier , parentURL , importAssertions ) {
412411 let importAssertionsForResolve ;
413412
414- // By default, `this.#loaders ` contains just the Node default load hook
415- if ( this . #loaders . length !== 1 ) {
413+ // By default, `this.#hooks.load ` contains just the Node default load hook
414+ if ( this . #hooks . load . length !== 1 ) {
416415 // We can skip cloning if there are no user-provided loaders because
417416 // the Node.js default resolve hook does not use import assertions.
418- importAssertionsForResolve = ObjectAssign (
419- ObjectCreate ( null ) ,
420- importAssertions ,
421- ) ;
417+ importAssertionsForResolve = {
418+ __proto__ : null ,
419+ ... importAssertions ,
420+ } ;
422421 }
423422
424423 const { format, url } =
@@ -529,11 +528,11 @@ class ESMLoader {
529528 if ( ! wasArr ) { return namespaces [ 0 ] ; } // We can skip the pairing below
530529
531530 for ( let i = 0 ; i < count ; i ++ ) {
532- const namespace = ObjectCreate ( null ) ;
533- namespace . url = specifiers [ i ] ;
534- namespace . exports = namespaces [ i ] ;
535-
536- namespaces [ i ] = namespace ;
531+ namespaces [ i ] = {
532+ __proto__ : null ,
533+ url : specifiers [ i ] ,
534+ exports : namespaces [ i ] ,
535+ } ;
537536 }
538537
539538 return namespaces ;
@@ -551,7 +550,7 @@ class ESMLoader {
551550 * @returns {{ format: ModuleFormat, source: ModuleSource } }
552551 */
553552 async load ( url , context = { } ) {
554- const chain = this . #loaders ;
553+ const chain = this . #hooks . load ;
555554 const meta = {
556555 chainFinished : null ,
557556 context,
@@ -680,7 +679,7 @@ class ESMLoader {
680679 }
681680
682681 preload ( ) {
683- for ( let i = this . #globalPreloaders . length - 1 ; i >= 0 ; i -- ) {
682+ for ( let i = this . #hooks . globalPreload . length - 1 ; i >= 0 ; i -- ) {
684683 const channel = new MessageChannel ( ) ;
685684 const {
686685 port1 : insidePreload ,
@@ -691,19 +690,19 @@ class ESMLoader {
691690 insideLoader . unref ( ) ;
692691
693692 const {
694- fn : preloader ,
693+ fn : preload ,
695694 url : specifier ,
696- } = this . #globalPreloaders [ i ] ;
695+ } = this . #hooks . globalPreload [ i ] ;
697696
698- const preload = preloader ( {
697+ const preloaded = preload ( {
699698 port : insideLoader ,
700699 } ) ;
701700
702- if ( preload == null ) { return ; }
701+ if ( preloaded == null ) { return ; }
703702
704703 const hookErrIdentifier = `${ specifier } globalPreload` ;
705704
706- if ( typeof preload !== 'string' ) { // [2]
705+ if ( typeof preloaded !== 'string' ) { // [2]
707706 throw new ERR_INVALID_RETURN_VALUE (
708707 'a string' ,
709708 hookErrIdentifier ,
@@ -712,7 +711,7 @@ class ESMLoader {
712711 }
713712 const { compileFunction } = require ( 'vm' ) ;
714713 const preloadInit = compileFunction (
715- preload ,
714+ preloaded ,
716715 [ 'getBuiltin' , 'port' , 'setImportMetaCallback' ] ,
717716 {
718717 filename : '<preload>' ,
@@ -785,7 +784,7 @@ class ESMLoader {
785784 async resolve (
786785 originalSpecifier ,
787786 parentURL ,
788- importAssertions = ObjectCreate ( null )
787+ importAssertions = ObjectCreate ( null ) ,
789788 ) {
790789 const isMain = parentURL === undefined ;
791790
@@ -800,7 +799,7 @@ class ESMLoader {
800799 parentURL ,
801800 ) ;
802801 }
803- const chain = this . #resolvers ;
802+ const chain = this . #hooks . resolve ;
804803 const context = {
805804 conditions : DEFAULT_CONDITIONS ,
806805 importAssertions,
0 commit comments