Skip to content

Commit d6cf65c

Browse files
committed
fix defineModule
1 parent 1fde9e4 commit d6cf65c

1 file changed

Lines changed: 10 additions & 5 deletions

File tree

src/devtools/262_worker.mjs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,16 @@ function recreateAgent(features, signal) {
5858
signal.addEventListener('abort', () => inspector.detachAgent(agent), { once: true });
5959

6060
if (features.includes('virtual-module-loader')) {
61-
const virtualModuleCache = new Map();
61+
const virtualModuleSourceCache = new Map();
62+
const moduleCache = new Map();
6263
agent.hostDefinedOptions.loadImportedModule = (referrer, specifier, attributes, hostDefined, finish) => {
6364
const importerRealm = referrer instanceof Realm ? referrer : referrer.Realm;
64-
if (importerRealm instanceof ManagedRealm && virtualModuleCache.has(specifier)) {
65-
finish(importerRealm.compileModule(virtualModuleCache.get(specifier), { specifier }));
65+
if (importerRealm instanceof ManagedRealm && virtualModuleSourceCache.has(specifier)) {
66+
if (!moduleCache.has(specifier)) {
67+
const module = importerRealm.compileModule(virtualModuleSourceCache.get(specifier), { specifier });
68+
moduleCache.set(specifier, module);
69+
}
70+
finish(moduleCache.get(specifier));
6671
return;
6772
}
6873
finish(Throw.SyntaxError('Could not resolve module $1', specifier));
@@ -78,10 +83,10 @@ function recreateAgent(features, signal) {
7883
if (surroundingAgent.debugger_cannotPreview) {
7984
return surroundingAgent.debugger_cannotPreview;
8085
}
81-
virtualModuleCache.set(specifier.stringValue(), source.stringValue());
86+
virtualModuleSourceCache.set(specifier.stringValue(), source.stringValue());
8287
return Value.undefined;
8388
}, 2, 'defineModule', ['SourceText']);
84-
/** @type {import('../../lib/engine262.mjs').ECMAScriptFunctionObject} */ (/** @type {any} */ (defineModule)).SourceText = 'function defineModule(specifier, source) { [native code] }\n/** @example defineModule("lib", "export default 1;"); import("lib") */';
89+
/** @type {import('../../lib/engine262.mjs').ECMAScriptFunctionObject} */ (/** @type {any} */ (defineModule)).SourceText = 'function defineModule(specifier, source) { [native code] }';
8590
CreateNonEnumerableDataPropertyOrThrow(realm.GlobalObject, Value('defineModule'), defineModule);
8691
});
8792
}

0 commit comments

Comments
 (0)