Something went wrong on our end
Select Git revision
-
Volker Schukai authoredVolker Schukai authored
jsdom.mjs 3.37 KiB
'use strict';
import {extend} from "../../source/data/extend.mjs";
import {getGlobal} from "../../source/types/global.mjs";
export const isBrowser = new Function("try {return this===window;}catch(e){ return false;}");
export const isNode = new Function("try {return this===global;}catch(e){return false;}");
let JSDOMExport = null;
/**
* this helper function creates the dom stack in the node environment
*
* @return {Promise<unknown>|Promise<void>}
*/
function initJSDOM(options) {
if (typeof window === "object" && window['DOMParser']) return Promise.resolve();
const g = getGlobal();
options = extend({}, {
pretendToBeVisual: true,
contentType: "text/html",
includeNodeLocations: true,
storageQuota: 10000000,
runScripts: "dangerously",
resources: "usable"
}, options || {})
return import("jsdom").then(({JSDOM}) => {
JSDOMExport = JSDOM;
const {window} = new JSDOM(`<!DOCTYPE html><html lang="en"><head><title>Test</title></head><body><div id="mocks"></div></body></html>`, options);
g['window'] = window;
return new Promise((resolve, reject) =>
window.addEventListener("load", () => {
[
'Blob',
'CSSStyleSheet',
'customElements',
'CustomEvent',
'document',
'Document',
'DocumentFragment',
'DOMParser',
'Element',
'ElementInternals',
'Event',
'EventTarget',
'getComputedStyle',
'HTMLButtonElement',
'HTMLCollection',
'HTMLDivElement',
'HTMLDocument',
'HTMLElement',
'HTMLFormElement',
'HTMLInputElement',
'HTMLScriptElement',
'requestAnimationFrame',
'HTMLSelectElement',
'HTMLTemplateElement',
'HTMLTextAreaElement',
'InputEvent',
'KeyboardEvent',
'MutationObserver',
'navigator',
'Node',
'NodeFilter',