@@ -179,39 +179,38 @@ function nextHookFactory(chain, meta, { validateArgs, validateOutput }) {
179
179
* the main module and everything in its dependency graph.
180
180
*/
181
181
class 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
+ } ;
215
214
216
215
#importMetaInitializer = initializeImportMeta ;
217
216
@@ -305,13 +304,13 @@ class ESMLoader {
305
304
) ;
306
305
307
306
if ( globalPreload ) {
308
- acceptedHooks . globalPreloader = globalPreload ;
307
+ acceptedHooks . globalPreload = globalPreload ;
309
308
}
310
309
if ( resolve ) {
311
- acceptedHooks . resolver = resolve ;
310
+ acceptedHooks . resolve = resolve ;
312
311
}
313
312
if ( load ) {
314
- acceptedHooks . loader = load ;
313
+ acceptedHooks . load = load ;
315
314
}
316
315
317
316
return acceptedHooks ;
@@ -333,34 +332,34 @@ class ESMLoader {
333
332
url,
334
333
} = customLoaders [ i ] ;
335
334
const {
336
- globalPreloader ,
337
- resolver ,
338
- loader ,
335
+ globalPreload ,
336
+ resolve ,
337
+ load ,
339
338
} = ESMLoader . pluckHooks ( exports ) ;
340
339
341
- if ( globalPreloader ) {
340
+ if ( globalPreload ) {
342
341
ArrayPrototypePush (
343
- this . #globalPreloaders ,
342
+ this . #hooks . globalPreload ,
344
343
{
345
- fn : globalPreloader ,
344
+ fn : globalPreload ,
346
345
url,
347
346
} ,
348
347
) ;
349
348
}
350
- if ( resolver ) {
349
+ if ( resolve ) {
351
350
ArrayPrototypePush (
352
- this . #resolvers ,
351
+ this . #hooks . resolve ,
353
352
{
354
- fn : resolver ,
353
+ fn : resolve ,
355
354
url,
356
355
} ,
357
356
) ;
358
357
}
359
- if ( loader ) {
358
+ if ( load ) {
360
359
ArrayPrototypePush (
361
- this . #loaders ,
360
+ this . #hooks . load ,
362
361
{
363
- fn : loader ,
362
+ fn : load ,
364
363
url,
365
364
} ,
366
365
) ;
@@ -411,14 +410,14 @@ class ESMLoader {
411
410
async getModuleJob ( specifier , parentURL , importAssertions ) {
412
411
let importAssertionsForResolve ;
413
412
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 ) {
416
415
// We can skip cloning if there are no user-provided loaders because
417
416
// 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
+ } ;
422
421
}
423
422
424
423
const { format, url } =
@@ -529,11 +528,11 @@ class ESMLoader {
529
528
if ( ! wasArr ) { return namespaces [ 0 ] ; } // We can skip the pairing below
530
529
531
530
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
+ } ;
537
536
}
538
537
539
538
return namespaces ;
@@ -551,7 +550,7 @@ class ESMLoader {
551
550
* @returns {{ format: ModuleFormat, source: ModuleSource } }
552
551
*/
553
552
async load ( url , context = { } ) {
554
- const chain = this . #loaders ;
553
+ const chain = this . #hooks . load ;
555
554
const meta = {
556
555
chainFinished : null ,
557
556
context,
@@ -680,7 +679,7 @@ class ESMLoader {
680
679
}
681
680
682
681
preload ( ) {
683
- for ( let i = this . #globalPreloaders . length - 1 ; i >= 0 ; i -- ) {
682
+ for ( let i = this . #hooks . globalPreload . length - 1 ; i >= 0 ; i -- ) {
684
683
const channel = new MessageChannel ( ) ;
685
684
const {
686
685
port1 : insidePreload ,
@@ -691,19 +690,19 @@ class ESMLoader {
691
690
insideLoader . unref ( ) ;
692
691
693
692
const {
694
- fn : preloader ,
693
+ fn : preload ,
695
694
url : specifier ,
696
- } = this . #globalPreloaders [ i ] ;
695
+ } = this . #hooks . globalPreload [ i ] ;
697
696
698
- const preload = preloader ( {
697
+ const preloaded = preload ( {
699
698
port : insideLoader ,
700
699
} ) ;
701
700
702
- if ( preload == null ) { return ; }
701
+ if ( preloaded == null ) { return ; }
703
702
704
703
const hookErrIdentifier = `${ specifier } globalPreload` ;
705
704
706
- if ( typeof preload !== 'string' ) { // [2]
705
+ if ( typeof preloaded !== 'string' ) { // [2]
707
706
throw new ERR_INVALID_RETURN_VALUE (
708
707
'a string' ,
709
708
hookErrIdentifier ,
@@ -712,7 +711,7 @@ class ESMLoader {
712
711
}
713
712
const { compileFunction } = require ( 'vm' ) ;
714
713
const preloadInit = compileFunction (
715
- preload ,
714
+ preloaded ,
716
715
[ 'getBuiltin' , 'port' , 'setImportMetaCallback' ] ,
717
716
{
718
717
filename : '<preload>' ,
@@ -785,7 +784,7 @@ class ESMLoader {
785
784
async resolve (
786
785
originalSpecifier ,
787
786
parentURL ,
788
- importAssertions = ObjectCreate ( null )
787
+ importAssertions = ObjectCreate ( null ) ,
789
788
) {
790
789
const isMain = parentURL === undefined ;
791
790
@@ -800,7 +799,7 @@ class ESMLoader {
800
799
parentURL ,
801
800
) ;
802
801
}
803
- const chain = this . #resolvers ;
802
+ const chain = this . #hooks . resolve ;
804
803
const context = {
805
804
conditions : DEFAULT_CONDITIONS ,
806
805
importAssertions,
0 commit comments