UNPKG

happy-dom

Version:

Happy DOM is a JavaScript implementation of a web browser without its graphical user interface. It includes many web standards from WHATWG DOM and HTML.

78 lines (71 loc) 1.61 kB
import BrowserWindow from '../window/BrowserWindow.js'; import { URL } from 'url'; import IModule from './IModule.js'; /** * CSS module. */ export default class UnresolvedModule implements IModule { public readonly url: URL; readonly #window: BrowserWindow; #hooks: { resolve: (value: unknown) => void; reject: (error: Error) => void }[] = []; #error: Error | null = null; /** * Constructor. * * @param window Window. * @param url Module URL. */ constructor(window: BrowserWindow, url: URL) { this.#window = window; this.url = url; } /** * Compiles and evaluates the module. * * @returns Module exports. */ public async evaluate(): Promise<null> { throw new this.#window.TypeError('Unresolved module. We should never end up here.'); } /** * Compiles and preloads the module and its imports. * * @returns Promise. */ public async preload(): Promise<void> { throw new this.#window.TypeError('Unresolved module. We should never end up here.'); } /** * Add a hook to be called when the module is resolved. * * @param resolve Resolve. * @param reject Reject. */ public addResolveListener( resolve: (value: unknown) => void, reject: (error: Error) => void ): void { if (this.#error) { reject(this.#error); return; } this.#hooks.push({ resolve, reject }); } /** * Resolves the module. * * @param [error] Error. */ public resolve(error?: Error): void { if (error) { this.#error = error; } for (const hook of this.#hooks) { if (error) { hook.reject(error); } else { hook.resolve(null); } } } }