@@ -14,7 +14,8 @@ const { |
14 | 14 | hardenRegExp, |
15 | 15 | } = primordials; |
16 | 16 |
|
17 | | - |
| 17 | +const { LoadCache, ResolveCache } = require('internal/modules/esm/module_map'); |
| 18 | +const { ModuleJob, ModuleJobSync } = require('internal/modules/esm/module_job'); |
18 | 19 | // This is needed to avoid cycles in esm/resolve <-> cjs/loader |
19 | 20 | const { |
20 | 21 | kIsExecuting, |
@@ -81,24 +82,6 @@ const { isPromise } = require('internal/util/types'); |
81 | 82 | * @typedef {import('url').URL} URL |
82 | 83 | */ |
83 | 84 |
|
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 | | - |
102 | 85 | const { translators } = require('internal/modules/esm/translators'); |
103 | 86 | const { defaultResolve } = require('internal/modules/esm/resolve'); |
104 | 87 | const { defaultLoadSync, throwUnknownModuleFormat } = require('internal/modules/esm/load'); |
@@ -157,12 +140,12 @@ class ModuleLoader { |
157 | 140 | /** |
158 | 141 | * Registry of resolved specifiers |
159 | 142 | */ |
160 | | - #resolveCache = newResolveCache(); |
| 143 | + #resolveCache = new ResolveCache(); |
161 | 144 |
|
162 | 145 | /** |
163 | 146 | * Registry of loaded modules, akin to `require.cache` |
164 | 147 | */ |
165 | | - loadCache = newLoadCache(); |
| 148 | + loadCache = new LoadCache(); |
166 | 149 |
|
167 | 150 | /** |
168 | 151 | * @see {AsyncLoaderHooks.isForAsyncLoaderHookWorker} |
@@ -235,7 +218,6 @@ class ModuleLoader { |
235 | 218 | * @returns {Promise<object>} The module object. |
236 | 219 | */ |
237 | 220 | async executeModuleJob(url, wrap, isEntryPoint = false) { |
238 | | - const { ModuleJob } = require('internal/modules/esm/module_job'); |
239 | 221 | const module = await onImport.tracePromise(async () => { |
240 | 222 | const job = new ModuleJob(this, url, undefined, wrap, kEvaluationPhase, false, false, kImportInImportedESM); |
241 | 223 | this.loadCache.set(url, undefined, job); |
@@ -354,7 +336,6 @@ class ModuleLoader { |
354 | 336 | const wrap = compileSourceTextModule(url, source, this); |
355 | 337 | const inspectBrk = (isMain && getOptionValue('--inspect-brk')); |
356 | 338 |
|
357 | | - const { ModuleJobSync } = require('internal/modules/esm/module_job'); |
358 | 339 | job = new ModuleJobSync(this, url, kEmptyObject, wrap, kEvaluationPhase, isMain, inspectBrk, |
359 | 340 | kImportInRequiredESM); |
360 | 341 | this.loadCache.set(url, kImplicitTypeAttribute, job); |
@@ -584,7 +565,6 @@ class ModuleLoader { |
584 | 565 | assert(moduleOrModulePromise instanceof ModuleWrap, `Expected ModuleWrap for loading ${url}`); |
585 | 566 | } |
586 | 567 |
|
587 | | - const { ModuleJob, ModuleJobSync } = require('internal/modules/esm/module_job'); |
588 | 568 | // TODO(joyeecheung): use ModuleJobSync for kRequireInImportedCJS too. |
589 | 569 | const ModuleJobCtor = (requestType === kImportInRequiredESM ? ModuleJobSync : ModuleJob); |
590 | 570 | const isMain = (parentURL === undefined); |
|