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.

55 lines (47 loc) 1.17 kB
import BrowserWindow from '../window/BrowserWindow.js'; import { URL } from 'url'; import IModule from './IModule.js'; import CSSStyleSheet from '../css/CSSStyleSheet.js'; /** * CSS module. */ export default class CSSModule implements IModule { public readonly url: URL; readonly #window: BrowserWindow; readonly #source: string; #exports: { default: CSSStyleSheet } | null = null; /** * Constructor. * * @param window Window. * @param url Module URL. * @param source Source code. */ constructor(window: BrowserWindow, url: URL, source: string) { this.#window = window; this.url = url; this.#source = source; } /** * Compiles and evaluates the module. * * @returns Module exports. */ public async evaluate(): Promise<{ default: CSSStyleSheet }> { if (this.#exports) { return this.#exports; } const styleSheet = new this.#window.CSSStyleSheet(); styleSheet.replaceSync(this.#source); this.#exports = { default: styleSheet }; return this.#exports; } /** * Compiles and preloads the module and its imports. * * @returns Promise. */ public async preload(): Promise<void> { await this.evaluate(); } }