@@ -14,7 +14,8 @@ const {
1414 hardenRegExp,
1515} = primordials ;
1616
17-
17+ const { LoadCache, ResolveCache } = require ( 'internal/modules/esm/module_map' ) ;
18+ const { ModuleJob, ModuleJobSync } = require ( 'internal/modules/esm/module_job' ) ;
1819// This is needed to avoid cycles in esm/resolve <-> cjs/loader
1920const {
2021 kIsExecuting,
@@ -81,24 +82,6 @@ const { isPromise } = require('internal/util/types');
8182 * @typedef {import('url').URL } URL
8283 */
8384
84- /**
85- * Lazy loads the module_map module and returns a new instance of ResolveCache.
86- * @returns {import('./module_map.js').ResolveCache }
87- */
88- function newResolveCache ( ) {
89- const { ResolveCache } = require ( 'internal/modules/esm/module_map' ) ;
90- return new ResolveCache ( ) ;
91- }
92-
93- /**
94- * Generate a load cache (to store the final result of a load-chain for a particular module).
95- * @returns {import('./module_map.js').LoadCache }
96- */
97- function newLoadCache ( ) {
98- const { LoadCache } = require ( 'internal/modules/esm/module_map' ) ;
99- return new LoadCache ( ) ;
100- }
101-
10285const { translators } = require ( 'internal/modules/esm/translators' ) ;
10386const { defaultResolve } = require ( 'internal/modules/esm/resolve' ) ;
10487const { defaultLoadSync, throwUnknownModuleFormat } = require ( 'internal/modules/esm/load' ) ;
@@ -157,12 +140,12 @@ class ModuleLoader {
157140 /**
158141 * Registry of resolved specifiers
159142 */
160- #resolveCache = newResolveCache ( ) ;
143+ #resolveCache = new ResolveCache ( ) ;
161144
162145 /**
163146 * Registry of loaded modules, akin to `require.cache`
164147 */
165- loadCache = newLoadCache ( ) ;
148+ loadCache = new LoadCache ( ) ;
166149
167150 /**
168151 * @see {AsyncLoaderHooks.isForAsyncLoaderHookWorker}
@@ -235,7 +218,6 @@ class ModuleLoader {
235218 * @returns {Promise<object> } The module object.
236219 */
237220 async executeModuleJob ( url , wrap , isEntryPoint = false ) {
238- const { ModuleJob } = require ( 'internal/modules/esm/module_job' ) ;
239221 const module = await onImport . tracePromise ( async ( ) => {
240222 const job = new ModuleJob ( this , url , undefined , wrap , kEvaluationPhase , false , false , kImportInImportedESM ) ;
241223 this . loadCache . set ( url , undefined , job ) ;
@@ -354,7 +336,6 @@ class ModuleLoader {
354336 const wrap = compileSourceTextModule ( url , source , this ) ;
355337 const inspectBrk = ( isMain && getOptionValue ( '--inspect-brk' ) ) ;
356338
357- const { ModuleJobSync } = require ( 'internal/modules/esm/module_job' ) ;
358339 job = new ModuleJobSync ( this , url , kEmptyObject , wrap , kEvaluationPhase , isMain , inspectBrk ,
359340 kImportInRequiredESM ) ;
360341 this . loadCache . set ( url , kImplicitTypeAttribute , job ) ;
@@ -584,7 +565,6 @@ class ModuleLoader {
584565 assert ( moduleOrModulePromise instanceof ModuleWrap , `Expected ModuleWrap for loading ${ url } ` ) ;
585566 }
586567
587- const { ModuleJob, ModuleJobSync } = require ( 'internal/modules/esm/module_job' ) ;
588568 // TODO(joyeecheung): use ModuleJobSync for kRequireInImportedCJS too.
589569 const ModuleJobCtor = ( requestType === kImportInRequiredESM ? ModuleJobSync : ModuleJob ) ;
590570 const isMain = ( parentURL === undefined ) ;
0 commit comments