Skip to content

Commit

Permalink
chore: [#320] Continues on implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
capricorn86 committed Jan 28, 2025
1 parent a70e27a commit 35483cf
Showing 1 changed file with 13 additions and 28 deletions.
41 changes: 13 additions & 28 deletions packages/happy-dom/src/module/ECMAScriptModule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import * as PropertySymbol from '../PropertySymbol.js';
import Location from '../location/Location.js';
import WindowBrowserContext from '../window/WindowBrowserContext.js';
import IECMAScriptModuleCompiledResult from './IECMAScriptModuleCompiledResult.js';
import BrowserErrorCaptureEnum from '../browser/enums/BrowserErrorCaptureEnum.js';
import ModuleFactory from './ModuleFactory.js';

/**
Expand Down Expand Up @@ -46,12 +45,14 @@ export default class ECMAScriptModule implements IModule {
const modulePromises: Promise<IModule>[] = [];
const window = this[PropertySymbol.window];
const browserFrame = new WindowBrowserContext(window).getBrowserFrame();
const browserSettings = new WindowBrowserContext(window).getSettings();

if (!browserFrame) {
return {};
}

const asyncTaskManager = browserFrame[PropertySymbol.asyncTaskManager];
const taskID = asyncTaskManager.startTask();

for (const moduleImport of compiled.imports) {
modulePromises.push(
ModuleFactory.getModule(window, this.url, moduleImport.url, {
Expand All @@ -60,42 +61,25 @@ export default class ECMAScriptModule implements IModule {
);
}

const asyncTaskManager = browserFrame[PropertySymbol.asyncTaskManager];
const taskID = asyncTaskManager.startTask();
const modules = await Promise.all(modulePromises);
const imports = new Map<string, { [key: string]: any }>();

for (const module of modules) {
imports.set(module.url.href, await module.evaluate());
}

asyncTaskManager.endTask(taskID);

const exports = {};

if (
browserSettings.disableErrorCapturing ||
browserSettings.errorCapture !== BrowserErrorCaptureEnum.tryAndCatch
) {
compiled.execute.call(window, {
dynamicImport: this.#import.bind(this),
imports,
exports
});
} else {
try {
compiled.execute.call(window, {
dynamicImport: this.#import.bind(this),
imports,
exports
});
} catch (error) {
window[PropertySymbol.dispatchError](error);
}
}
compiled.execute.call(window, {
dynamicImport: this.#import.bind(this),
imports,
exports
});

this.#exports = exports;

asyncTaskManager.endTask(taskID);

return exports;
}

Expand All @@ -114,6 +98,9 @@ export default class ECMAScriptModule implements IModule {
return;
}

const asyncTaskManager = browserFrame[PropertySymbol.asyncTaskManager];
const taskID = asyncTaskManager?.startTask();

for (const moduleImport of compiled.imports) {
modulePromises.push(
ModuleFactory.getModule(window, this.url, moduleImport.url, {
Expand All @@ -122,8 +109,6 @@ export default class ECMAScriptModule implements IModule {
);
}

const asyncTaskManager = browserFrame[PropertySymbol.asyncTaskManager];
const taskID = asyncTaskManager?.startTask();
const modules = await Promise.all(modulePromises);

const promises: Promise<void>[] = [];
Expand Down

0 comments on commit 35483cf

Please sign in to comment.