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.
880 lines (879 loc) • 76.3 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const buffer_1 = require("buffer");
const crypto_1 = require("crypto");
const util_1 = require("util");
const stream_1 = __importDefault(require("stream"));
const web_1 = require("stream/web");
const url_1 = require("url");
const vm_1 = __importDefault(require("vm"));
const PropertySymbol = __importStar(require("../PropertySymbol.cjs"));
const Base64_js_1 = __importDefault(require("../base64/Base64.cjs"));
const BrowserErrorCaptureEnum_js_1 = __importDefault(require("../browser/enums/BrowserErrorCaptureEnum.cjs"));
const Clipboard_js_1 = __importDefault(require("../clipboard/Clipboard.cjs"));
const CSS_js_1 = __importDefault(require("../css/CSS.cjs"));
const CSSRule_js_1 = __importDefault(require("../css/CSSRule.cjs"));
const CSSStyleDeclaration_js_1 = __importDefault(require("../css/declaration/CSSStyleDeclaration.cjs"));
const CSSContainerRule_js_1 = __importDefault(require("../css/rules/CSSContainerRule.cjs"));
const CSSFontFaceRule_js_1 = __importDefault(require("../css/rules/CSSFontFaceRule.cjs"));
const CSSKeyframeRule_js_1 = __importDefault(require("../css/rules/CSSKeyframeRule.cjs"));
const CSSKeyframesRule_js_1 = __importDefault(require("../css/rules/CSSKeyframesRule.cjs"));
const CSSMediaRule_js_1 = __importDefault(require("../css/rules/CSSMediaRule.cjs"));
const CSSStyleRule_js_1 = __importDefault(require("../css/rules/CSSStyleRule.cjs"));
const CSSSupportsRule_js_1 = __importDefault(require("../css/rules/CSSSupportsRule.cjs"));
const CustomElementRegistry_js_1 = __importDefault(require("../custom-element/CustomElementRegistry.cjs"));
const Event_js_1 = __importDefault(require("../event/Event.cjs"));
const EventTarget_js_1 = __importDefault(require("../event/EventTarget.cjs"));
const Touch_js_1 = __importDefault(require("../event/Touch.cjs"));
const UIEvent_js_1 = __importDefault(require("../event/UIEvent.cjs"));
const AnimationEvent_js_1 = __importDefault(require("../event/events/AnimationEvent.cjs"));
const ClipboardEvent_js_1 = __importDefault(require("../event/events/ClipboardEvent.cjs"));
const CustomEvent_js_1 = __importDefault(require("../event/events/CustomEvent.cjs"));
const ErrorEvent_js_1 = __importDefault(require("../event/events/ErrorEvent.cjs"));
const FocusEvent_js_1 = __importDefault(require("../event/events/FocusEvent.cjs"));
const HashChangeEvent_js_1 = __importDefault(require("../event/events/HashChangeEvent.cjs"));
const InputEvent_js_1 = __importDefault(require("../event/events/InputEvent.cjs"));
const KeyboardEvent_js_1 = __importDefault(require("../event/events/KeyboardEvent.cjs"));
const MediaQueryListEvent_js_1 = __importDefault(require("../event/events/MediaQueryListEvent.cjs"));
const MessageEvent_js_1 = __importDefault(require("../event/events/MessageEvent.cjs"));
const MouseEvent_js_1 = __importDefault(require("../event/events/MouseEvent.cjs"));
const PointerEvent_js_1 = __importDefault(require("../event/events/PointerEvent.cjs"));
const ProgressEvent_js_1 = __importDefault(require("../event/events/ProgressEvent.cjs"));
const StorageEvent_js_1 = __importDefault(require("../event/events/StorageEvent.cjs"));
const SubmitEvent_js_1 = __importDefault(require("../event/events/SubmitEvent.cjs"));
const TouchEvent_js_1 = __importDefault(require("../event/events/TouchEvent.cjs"));
const WheelEvent_js_1 = __importDefault(require("../event/events/WheelEvent.cjs"));
const DOMExceptionNameEnum_js_1 = __importDefault(require("../exception/DOMExceptionNameEnum.cjs"));
const Fetch_js_1 = __importDefault(require("../fetch/Fetch.cjs"));
const Blob_js_1 = __importDefault(require("../file/Blob.cjs"));
const File_js_1 = __importDefault(require("../file/File.cjs"));
const History_js_1 = __importDefault(require("../history/History.cjs"));
const IntersectionObserver_js_1 = __importDefault(require("../intersection-observer/IntersectionObserver.cjs"));
const IntersectionObserverEntry_js_1 = __importDefault(require("../intersection-observer/IntersectionObserverEntry.cjs"));
const Location_js_1 = __importDefault(require("../location/Location.cjs"));
const MediaQueryList_js_1 = __importDefault(require("../match-media/MediaQueryList.cjs"));
const MutationRecord_js_1 = __importDefault(require("../mutation-observer/MutationRecord.cjs"));
const MimeType_js_1 = __importDefault(require("../navigator/MimeType.cjs"));
const MimeTypeArray_js_1 = __importDefault(require("../navigator/MimeTypeArray.cjs"));
const Navigator_js_1 = __importDefault(require("../navigator/Navigator.cjs"));
const Plugin_js_1 = __importDefault(require("../navigator/Plugin.cjs"));
const PluginArray_js_1 = __importDefault(require("../navigator/PluginArray.cjs"));
const Attr_js_1 = __importDefault(require("../nodes/attr/Attr.cjs"));
const CharacterData_js_1 = __importDefault(require("../nodes/character-data/CharacterData.cjs"));
const DocumentType_js_1 = __importDefault(require("../nodes/document-type/DocumentType.cjs"));
const DocumentReadyStateEnum_js_1 = __importDefault(require("../nodes/document/DocumentReadyStateEnum.cjs"));
const DocumentReadyStateManager_js_1 = __importDefault(require("../nodes/document/DocumentReadyStateManager.cjs"));
const DOMRect_js_1 = __importDefault(require("../dom/DOMRect.cjs"));
const DOMRectReadOnly_js_1 = __importDefault(require("../dom/DOMRectReadOnly.cjs"));
const Element_js_1 = __importDefault(require("../nodes/element/Element.cjs"));
const HTMLCollection_js_1 = __importDefault(require("../nodes/element/HTMLCollection.cjs"));
const HTMLAnchorElement_js_1 = __importDefault(require("../nodes/html-anchor-element/HTMLAnchorElement.cjs"));
const HTMLAreaElement_js_1 = __importDefault(require("../nodes/html-area-element/HTMLAreaElement.cjs"));
const HTMLAudioElement_js_1 = __importDefault(require("../nodes/html-audio-element/HTMLAudioElement.cjs"));
const HTMLBaseElement_js_1 = __importDefault(require("../nodes/html-base-element/HTMLBaseElement.cjs"));
const HTMLBodyElement_js_1 = __importDefault(require("../nodes/html-body-element/HTMLBodyElement.cjs"));
const HTMLBRElement_js_1 = __importDefault(require("../nodes/html-br-element/HTMLBRElement.cjs"));
const HTMLButtonElement_js_1 = __importDefault(require("../nodes/html-button-element/HTMLButtonElement.cjs"));
const HTMLCanvasElement_js_1 = __importDefault(require("../nodes/html-canvas-element/HTMLCanvasElement.cjs"));
const HTMLDListElement_js_1 = __importDefault(require("../nodes/html-d-list-element/HTMLDListElement.cjs"));
const HTMLDataElement_js_1 = __importDefault(require("../nodes/html-data-element/HTMLDataElement.cjs"));
const HTMLDataListElement_js_1 = __importDefault(require("../nodes/html-data-list-element/HTMLDataListElement.cjs"));
const HTMLDetailsElement_js_1 = __importDefault(require("../nodes/html-details-element/HTMLDetailsElement.cjs"));
const HTMLDialogElement_js_1 = __importDefault(require("../nodes/html-dialog-element/HTMLDialogElement.cjs"));
const HTMLDivElement_js_1 = __importDefault(require("../nodes/html-div-element/HTMLDivElement.cjs"));
const HTMLElement_js_1 = __importDefault(require("../nodes/html-element/HTMLElement.cjs"));
const HTMLEmbedElement_js_1 = __importDefault(require("../nodes/html-embed-element/HTMLEmbedElement.cjs"));
const HTMLFieldSetElement_js_1 = __importDefault(require("../nodes/html-field-set-element/HTMLFieldSetElement.cjs"));
const HTMLFormControlsCollection_js_1 = __importDefault(require("../nodes/html-form-element/HTMLFormControlsCollection.cjs"));
const HTMLFormElement_js_1 = __importDefault(require("../nodes/html-form-element/HTMLFormElement.cjs"));
const RadioNodeList_js_1 = __importDefault(require("../nodes/html-form-element/RadioNodeList.cjs"));
const HTMLHeadElement_js_1 = __importDefault(require("../nodes/html-head-element/HTMLHeadElement.cjs"));
const HTMLHeadingElement_js_1 = __importDefault(require("../nodes/html-heading-element/HTMLHeadingElement.cjs"));
const HTMLHRElement_js_1 = __importDefault(require("../nodes/html-hr-element/HTMLHRElement.cjs"));
const HTMLHtmlElement_js_1 = __importDefault(require("../nodes/html-html-element/HTMLHtmlElement.cjs"));
const HTMLIFrameElement_js_1 = __importDefault(require("../nodes/html-iframe-element/HTMLIFrameElement.cjs"));
const HTMLImageElement_js_1 = __importDefault(require("../nodes/html-image-element/HTMLImageElement.cjs"));
const FileList_js_1 = __importDefault(require("../nodes/html-input-element/FileList.cjs"));
const HTMLInputElement_js_1 = __importDefault(require("../nodes/html-input-element/HTMLInputElement.cjs"));
const HTMLLabelElement_js_1 = __importDefault(require("../nodes/html-label-element/HTMLLabelElement.cjs"));
const HTMLLegendElement_js_1 = __importDefault(require("../nodes/html-legend-element/HTMLLegendElement.cjs"));
const HTMLLIElement_js_1 = __importDefault(require("../nodes/html-li-element/HTMLLIElement.cjs"));
const HTMLLinkElement_js_1 = __importDefault(require("../nodes/html-link-element/HTMLLinkElement.cjs"));
const HTMLMapElement_js_1 = __importDefault(require("../nodes/html-map-element/HTMLMapElement.cjs"));
const HTMLMediaElement_js_1 = __importDefault(require("../nodes/html-media-element/HTMLMediaElement.cjs"));
const TextTrackCueList_js_1 = __importDefault(require("../nodes/html-media-element/TextTrackCueList.cjs"));
const TimeRanges_js_1 = __importDefault(require("../nodes/html-media-element/TimeRanges.cjs"));
const HTMLMenuElement_js_1 = __importDefault(require("../nodes/html-menu-element/HTMLMenuElement.cjs"));
const HTMLMetaElement_js_1 = __importDefault(require("../nodes/html-meta-element/HTMLMetaElement.cjs"));
const HTMLMeterElement_js_1 = __importDefault(require("../nodes/html-meter-element/HTMLMeterElement.cjs"));
const HTMLModElement_js_1 = __importDefault(require("../nodes/html-mod-element/HTMLModElement.cjs"));
const HTMLOListElement_js_1 = __importDefault(require("../nodes/html-o-list-element/HTMLOListElement.cjs"));
const HTMLObjectElement_js_1 = __importDefault(require("../nodes/html-object-element/HTMLObjectElement.cjs"));
const HTMLOptGroupElement_js_1 = __importDefault(require("../nodes/html-opt-group-element/HTMLOptGroupElement.cjs"));
const HTMLOptionElement_js_1 = __importDefault(require("../nodes/html-option-element/HTMLOptionElement.cjs"));
const HTMLOutputElement_js_1 = __importDefault(require("../nodes/html-output-element/HTMLOutputElement.cjs"));
const HTMLParagraphElement_js_1 = __importDefault(require("../nodes/html-paragraph-element/HTMLParagraphElement.cjs"));
const HTMLParamElement_js_1 = __importDefault(require("../nodes/html-param-element/HTMLParamElement.cjs"));
const HTMLPictureElement_js_1 = __importDefault(require("../nodes/html-picture-element/HTMLPictureElement.cjs"));
const HTMLPreElement_js_1 = __importDefault(require("../nodes/html-pre-element/HTMLPreElement.cjs"));
const HTMLProgressElement_js_1 = __importDefault(require("../nodes/html-progress-element/HTMLProgressElement.cjs"));
const HTMLQuoteElement_js_1 = __importDefault(require("../nodes/html-quote-element/HTMLQuoteElement.cjs"));
const HTMLScriptElement_js_1 = __importDefault(require("../nodes/html-script-element/HTMLScriptElement.cjs"));
const HTMLSelectElement_js_1 = __importDefault(require("../nodes/html-select-element/HTMLSelectElement.cjs"));
const HTMLSlotElement_js_1 = __importDefault(require("../nodes/html-slot-element/HTMLSlotElement.cjs"));
const HTMLSourceElement_js_1 = __importDefault(require("../nodes/html-source-element/HTMLSourceElement.cjs"));
const HTMLSpanElement_js_1 = __importDefault(require("../nodes/html-span-element/HTMLSpanElement.cjs"));
const HTMLStyleElement_js_1 = __importDefault(require("../nodes/html-style-element/HTMLStyleElement.cjs"));
const HTMLTableCaptionElement_js_1 = __importDefault(require("../nodes/html-table-caption-element/HTMLTableCaptionElement.cjs"));
const HTMLTableCellElement_js_1 = __importDefault(require("../nodes/html-table-cell-element/HTMLTableCellElement.cjs"));
const HTMLTableColElement_js_1 = __importDefault(require("../nodes/html-table-col-element/HTMLTableColElement.cjs"));
const HTMLTableElement_js_1 = __importDefault(require("../nodes/html-table-element/HTMLTableElement.cjs"));
const HTMLTableRowElement_js_1 = __importDefault(require("../nodes/html-table-row-element/HTMLTableRowElement.cjs"));
const HTMLTableSectionElement_js_1 = __importDefault(require("../nodes/html-table-section-element/HTMLTableSectionElement.cjs"));
const HTMLTemplateElement_js_1 = __importDefault(require("../nodes/html-template-element/HTMLTemplateElement.cjs"));
const HTMLTextAreaElement_js_1 = __importDefault(require("../nodes/html-text-area-element/HTMLTextAreaElement.cjs"));
const HTMLTimeElement_js_1 = __importDefault(require("../nodes/html-time-element/HTMLTimeElement.cjs"));
const HTMLTitleElement_js_1 = __importDefault(require("../nodes/html-title-element/HTMLTitleElement.cjs"));
const HTMLTrackElement_js_1 = __importDefault(require("../nodes/html-track-element/HTMLTrackElement.cjs"));
const HTMLUListElement_js_1 = __importDefault(require("../nodes/html-u-list-element/HTMLUListElement.cjs"));
const HTMLUnknownElement_js_1 = __importDefault(require("../nodes/html-unknown-element/HTMLUnknownElement.cjs"));
const HTMLVideoElement_js_1 = __importDefault(require("../nodes/html-video-element/HTMLVideoElement.cjs"));
const Node_js_1 = __importDefault(require("../nodes/node/Node.cjs"));
const NodeList_js_1 = __importDefault(require("../nodes/node/NodeList.cjs"));
const ProcessingInstruction_js_1 = __importDefault(require("../nodes/processing-instruction/ProcessingInstruction.cjs"));
const ShadowRoot_js_1 = __importDefault(require("../nodes/shadow-root/ShadowRoot.cjs"));
const SVGElement_js_1 = __importDefault(require("../nodes/svg-element/SVGElement.cjs"));
const Permissions_js_1 = __importDefault(require("../permissions/Permissions.cjs"));
const ResizeObserver_js_1 = __importDefault(require("../resize-observer/ResizeObserver.cjs"));
const Screen_js_1 = __importDefault(require("../screen/Screen.cjs"));
const Storage_js_1 = __importDefault(require("../storage/Storage.cjs"));
const NodeFilter_js_1 = __importDefault(require("../tree-walker/NodeFilter.cjs"));
const URL_js_1 = __importDefault(require("../url/URL.cjs"));
const ValidityState_js_1 = __importDefault(require("../validity-state/ValidityState.cjs"));
const VMGlobalPropertyScript_js_1 = __importDefault(require("./VMGlobalPropertyScript.cjs"));
const WindowPageOpenUtility_js_1 = __importDefault(require("./WindowPageOpenUtility.cjs"));
const node_perf_hooks_1 = require("node:perf_hooks");
const EventPhaseEnum_js_1 = __importDefault(require("../event/EventPhaseEnum.cjs"));
const HTMLOptionsCollection_js_1 = __importDefault(require("../nodes/html-select-element/HTMLOptionsCollection.cjs"));
const WindowContextClassExtender_js_1 = __importDefault(require("./WindowContextClassExtender.cjs"));
const WindowBrowserContext_js_1 = __importDefault(require("./WindowBrowserContext.cjs"));
const SVGSVGElement_js_1 = __importDefault(require("../nodes/svg-svg-element/SVGSVGElement.cjs"));
const SVGGraphicsElement_js_1 = __importDefault(require("../nodes/svg-graphics-element/SVGGraphicsElement.cjs"));
const SVGAnimateElement_js_1 = __importDefault(require("../nodes/svg-animate-element/SVGAnimateElement.cjs"));
const SVGAnimateMotionElement_js_1 = __importDefault(require("../nodes/svg-animate-motion-element/SVGAnimateMotionElement.cjs"));
const SVGAnimateTransformElement_js_1 = __importDefault(require("../nodes/svg-animate-transform-element/SVGAnimateTransformElement.cjs"));
const SVGCircleElement_js_1 = __importDefault(require("../nodes/svg-circle-element/SVGCircleElement.cjs"));
const SVGClipPathElement_js_1 = __importDefault(require("../nodes/svg-clip-path-element/SVGClipPathElement.cjs"));
const SVGDefsElement_js_1 = __importDefault(require("../nodes/svg-defs-element/SVGDefsElement.cjs"));
const SVGDescElement_js_1 = __importDefault(require("../nodes/svg-desc-element/SVGDescElement.cjs"));
const SVGEllipseElement_js_1 = __importDefault(require("../nodes/svg-ellipse-element/SVGEllipseElement.cjs"));
const SVGFEBlendElement_js_1 = __importDefault(require("../nodes/svg-fe-blend-element/SVGFEBlendElement.cjs"));
const SVGFEColorMatrixElement_js_1 = __importDefault(require("../nodes/svg-fe-color-matrix-element/SVGFEColorMatrixElement.cjs"));
const SVGFEComponentTransferElement_js_1 = __importDefault(require("../nodes/svg-fe-component-transfer-element/SVGFEComponentTransferElement.cjs"));
const SVGFECompositeElement_js_1 = __importDefault(require("../nodes/svg-fe-composite-element/SVGFECompositeElement.cjs"));
const SVGFEConvolveMatrixElement_js_1 = __importDefault(require("../nodes/svg-fe-convolve-matrix-element/SVGFEConvolveMatrixElement.cjs"));
const SVGFEDiffuseLightingElement_js_1 = __importDefault(require("../nodes/svg-fe-diffuse-lighting-element/SVGFEDiffuseLightingElement.cjs"));
const SVGFEDisplacementMapElement_js_1 = __importDefault(require("../nodes/svg-fe-displacement-map-element/SVGFEDisplacementMapElement.cjs"));
const SVGFEDistantLightElement_js_1 = __importDefault(require("../nodes/svg-fe-distant-light-element/SVGFEDistantLightElement.cjs"));
const SVGFEDropShadowElement_js_1 = __importDefault(require("../nodes/svg-fe-drop-shadow-element/SVGFEDropShadowElement.cjs"));
const SVGFEFloodElement_js_1 = __importDefault(require("../nodes/svg-fe-flood-element/SVGFEFloodElement.cjs"));
const SVGFEFuncAElement_js_1 = __importDefault(require("../nodes/svg-fe-func-a-element/SVGFEFuncAElement.cjs"));
const SVGFEFuncBElement_js_1 = __importDefault(require("../nodes/svg-fe-func-b-element/SVGFEFuncBElement.cjs"));
const SVGFEFuncGElement_js_1 = __importDefault(require("../nodes/svg-fe-func-g-element/SVGFEFuncGElement.cjs"));
const SVGFEFuncRElement_js_1 = __importDefault(require("../nodes/svg-fe-func-r-element/SVGFEFuncRElement.cjs"));
const SVGFEGaussianBlurElement_js_1 = __importDefault(require("../nodes/svg-fe-gaussian-blur-element/SVGFEGaussianBlurElement.cjs"));
const SVGFEImageElement_js_1 = __importDefault(require("../nodes/svg-fe-image-element/SVGFEImageElement.cjs"));
const SVGFEMergeElement_js_1 = __importDefault(require("../nodes/svg-fe-merge-element/SVGFEMergeElement.cjs"));
const SVGFEMergeNodeElement_js_1 = __importDefault(require("../nodes/svg-fe-merge-node-element/SVGFEMergeNodeElement.cjs"));
const SVGFEMorphologyElement_js_1 = __importDefault(require("../nodes/svg-fe-morphology-element/SVGFEMorphologyElement.cjs"));
const SVGFEOffsetElement_js_1 = __importDefault(require("../nodes/svg-fe-offset-element/SVGFEOffsetElement.cjs"));
const SVGFEPointLightElement_js_1 = __importDefault(require("../nodes/svg-fe-point-light-element/SVGFEPointLightElement.cjs"));
const SVGFESpecularLightingElement_js_1 = __importDefault(require("../nodes/svg-fe-specular-lighting-element/SVGFESpecularLightingElement.cjs"));
const SVGFESpotLightElement_js_1 = __importDefault(require("../nodes/svg-fe-spot-light-element/SVGFESpotLightElement.cjs"));
const SVGFETileElement_js_1 = __importDefault(require("../nodes/svg-fe-tile-element/SVGFETileElement.cjs"));
const SVGFETurbulenceElement_js_1 = __importDefault(require("../nodes/svg-fe-turbulence-element/SVGFETurbulenceElement.cjs"));
const SVGFilterElement_js_1 = __importDefault(require("../nodes/svg-filter-element/SVGFilterElement.cjs"));
const SVGForeignObjectElement_js_1 = __importDefault(require("../nodes/svg-foreign-object-element/SVGForeignObjectElement.cjs"));
const SVGGElement_js_1 = __importDefault(require("../nodes/svg-g-element/SVGGElement.cjs"));
const SVGImageElement_js_1 = __importDefault(require("../nodes/svg-image-element/SVGImageElement.cjs"));
const SVGLineElement_js_1 = __importDefault(require("../nodes/svg-line-element/SVGLineElement.cjs"));
const SVGLinearGradientElement_js_1 = __importDefault(require("../nodes/svg-linear-gradient-element/SVGLinearGradientElement.cjs"));
const SVGMarkerElement_js_1 = __importDefault(require("../nodes/svg-marker-element/SVGMarkerElement.cjs"));
const SVGMaskElement_js_1 = __importDefault(require("../nodes/svg-mask-element/SVGMaskElement.cjs"));
const SVGMetadataElement_js_1 = __importDefault(require("../nodes/svg-metadata-element/SVGMetadataElement.cjs"));
const SVGMPathElement_js_1 = __importDefault(require("../nodes/svg-m-path-element/SVGMPathElement.cjs"));
const SVGPathElement_js_1 = __importDefault(require("../nodes/svg-path-element/SVGPathElement.cjs"));
const SVGPatternElement_js_1 = __importDefault(require("../nodes/svg-pattern-element/SVGPatternElement.cjs"));
const SVGPolygonElement_js_1 = __importDefault(require("../nodes/svg-polygon-element/SVGPolygonElement.cjs"));
const SVGPolylineElement_js_1 = __importDefault(require("../nodes/svg-polyline-element/SVGPolylineElement.cjs"));
const SVGRadialGradientElement_js_1 = __importDefault(require("../nodes/svg-radial-gradient-element/SVGRadialGradientElement.cjs"));
const SVGRectElement_js_1 = __importDefault(require("../nodes/svg-rect-element/SVGRectElement.cjs"));
const SVGScriptElement_js_1 = __importDefault(require("../nodes/svg-script-element/SVGScriptElement.cjs"));
const SVGSetElement_js_1 = __importDefault(require("../nodes/svg-set-element/SVGSetElement.cjs"));
const SVGStopElement_js_1 = __importDefault(require("../nodes/svg-stop-element/SVGStopElement.cjs"));
const SVGStyleElement_js_1 = __importDefault(require("../nodes/svg-style-element/SVGStyleElement.cjs"));
const SVGSwitchElement_js_1 = __importDefault(require("../nodes/svg-switch-element/SVGSwitchElement.cjs"));
const SVGSymbolElement_js_1 = __importDefault(require("../nodes/svg-symbol-element/SVGSymbolElement.cjs"));
const SVGTextElement_js_1 = __importDefault(require("../nodes/svg-text-element/SVGTextElement.cjs"));
const SVGTextPathElement_js_1 = __importDefault(require("../nodes/svg-text-path-element/SVGTextPathElement.cjs"));
const SVGTitleElement_js_1 = __importDefault(require("../nodes/svg-title-element/SVGTitleElement.cjs"));
const SVGTSpanElement_js_1 = __importDefault(require("../nodes/svg-t-span-element/SVGTSpanElement.cjs"));
const SVGUseElement_js_1 = __importDefault(require("../nodes/svg-use-element/SVGUseElement.cjs"));
const SVGViewElement_js_1 = __importDefault(require("../nodes/svg-view-element/SVGViewElement.cjs"));
const SVGAnimationElement_js_1 = __importDefault(require("../nodes/svg-animation-element/SVGAnimationElement.cjs"));
const SVGComponentTransferFunctionElement_js_1 = __importDefault(require("../nodes/svg-component-transfer-function-element/SVGComponentTransferFunctionElement.cjs"));
const SVGGeometryElement_js_1 = __importDefault(require("../nodes/svg-geometry-element/SVGGeometryElement.cjs"));
const SVGGradientElement_js_1 = __importDefault(require("../nodes/svg-gradient-element/SVGGradientElement.cjs"));
const SVGTextPositioningElement_js_1 = __importDefault(require("../nodes/svg-text-positioning-element/SVGTextPositioningElement.cjs"));
const DOMMatrixReadOnly_js_1 = __importDefault(require("../dom/dom-matrix/DOMMatrixReadOnly.cjs"));
const DOMMatrix_js_1 = __importDefault(require("../dom/dom-matrix/DOMMatrix.cjs"));
const SVGAngle_js_1 = __importDefault(require("../svg/SVGAngle.cjs"));
const SVGAnimatedAngle_js_1 = __importDefault(require("../svg/SVGAnimatedAngle.cjs"));
const SVGAnimatedBoolean_js_1 = __importDefault(require("../svg/SVGAnimatedBoolean.cjs"));
const SVGAnimatedEnumeration_js_1 = __importDefault(require("../svg/SVGAnimatedEnumeration.cjs"));
const SVGAnimatedInteger_js_1 = __importDefault(require("../svg/SVGAnimatedInteger.cjs"));
const SVGAnimatedLength_js_1 = __importDefault(require("../svg/SVGAnimatedLength.cjs"));
const SVGLength_js_1 = __importDefault(require("../svg/SVGLength.cjs"));
const SVGAnimatedNumber_js_1 = __importDefault(require("../svg/SVGAnimatedNumber.cjs"));
const SVGAnimatedNumberList_js_1 = __importDefault(require("../svg/SVGAnimatedNumberList.cjs"));
const SVGAnimatedPreserveAspectRatio_js_1 = __importDefault(require("../svg/SVGAnimatedPreserveAspectRatio.cjs"));
const SVGAnimatedRect_js_1 = __importDefault(require("../svg/SVGAnimatedRect.cjs"));
const SVGAnimatedString_js_1 = __importDefault(require("../svg/SVGAnimatedString.cjs"));
const SVGAnimatedTransformList_js_1 = __importDefault(require("../svg/SVGAnimatedTransformList.cjs"));
const SVGLengthList_js_1 = __importDefault(require("../svg/SVGLengthList.cjs"));
const SVGMatrix_js_1 = __importDefault(require("../svg/SVGMatrix.cjs"));
const SVGNumber_js_1 = __importDefault(require("../svg/SVGNumber.cjs"));
const SVGNumberList_js_1 = __importDefault(require("../svg/SVGNumberList.cjs"));
const SVGPoint_js_1 = __importDefault(require("../svg/SVGPoint.cjs"));
const SVGPointList_js_1 = __importDefault(require("../svg/SVGPointList.cjs"));
const SVGPreserveAspectRatio_js_1 = __importDefault(require("../svg/SVGPreserveAspectRatio.cjs"));
const SVGRect_js_1 = __importDefault(require("../svg/SVGRect.cjs"));
const SVGStringList_js_1 = __importDefault(require("../svg/SVGStringList.cjs"));
const SVGTransform_js_1 = __importDefault(require("../svg/SVGTransform.cjs"));
const SVGTransformList_js_1 = __importDefault(require("../svg/SVGTransformList.cjs"));
const SVGUnitTypes_js_1 = __importDefault(require("../svg/SVGUnitTypes.cjs"));
const DOMPoint_js_1 = __importDefault(require("../dom/DOMPoint.cjs"));
const SVGAnimatedLengthList_js_1 = __importDefault(require("../svg/SVGAnimatedLengthList.cjs"));
const CustomElementReactionStack_js_1 = __importDefault(require("../custom-element/CustomElementReactionStack.cjs"));
const TIMER = {
setTimeout: globalThis.setTimeout.bind(globalThis),
clearTimeout: globalThis.clearTimeout.bind(globalThis),
setInterval: globalThis.setInterval.bind(globalThis),
clearInterval: globalThis.clearInterval.bind(globalThis),
queueMicrotask: globalThis.queueMicrotask.bind(globalThis),
setImmediate: globalThis.setImmediate.bind(globalThis),
clearImmediate: globalThis.clearImmediate.bind(globalThis)
};
const IS_NODE_JS_TIMEOUT_ENVIRONMENT = setTimeout.toString().includes('new Timeout');
/**
* Class for PerformanceObserverEntryList as it is only available as an interface from Node.js.
*/
class PerformanceObserverEntryList {
/**
* Constructor.
*/
constructor() {
throw new TypeError('Illegal constructor');
}
}
/**
* Zero Timeout.
*/
class Timeout {
callback;
/**
* Constructor.
* @param callback Callback.
*/
constructor(callback) {
this.callback = callback;
}
}
/**
* Browser window.
*
* Reference:
* https://developer.mozilla.org/en-US/docs/Web/API/Window.
*/
class BrowserWindow extends EventTarget_js_1.default {
// Nodes
Node = Node_js_1.default;
Attr = Attr_js_1.default;
ShadowRoot = ShadowRoot_js_1.default;
ProcessingInstruction = ProcessingInstruction_js_1.default;
Element = Element_js_1.default;
CharacterData = CharacterData_js_1.default;
DocumentType = DocumentType_js_1.default;
// HTML Element classes
HTMLAnchorElement = HTMLAnchorElement_js_1.default;
HTMLButtonElement = HTMLButtonElement_js_1.default;
HTMLOptGroupElement = HTMLOptGroupElement_js_1.default;
HTMLOptionElement = HTMLOptionElement_js_1.default;
HTMLElement = HTMLElement_js_1.default;
HTMLUnknownElement = HTMLUnknownElement_js_1.default;
HTMLTemplateElement = HTMLTemplateElement_js_1.default;
HTMLInputElement = HTMLInputElement_js_1.default;
HTMLSelectElement = HTMLSelectElement_js_1.default;
HTMLTextAreaElement = HTMLTextAreaElement_js_1.default;
HTMLImageElement = HTMLImageElement_js_1.default;
HTMLStyleElement = HTMLStyleElement_js_1.default;
HTMLLabelElement = HTMLLabelElement_js_1.default;
HTMLSlotElement = HTMLSlotElement_js_1.default;
HTMLMetaElement = HTMLMetaElement_js_1.default;
HTMLMediaElement = HTMLMediaElement_js_1.default;
HTMLAudioElement = HTMLAudioElement_js_1.default;
HTMLVideoElement = HTMLVideoElement_js_1.default;
HTMLBaseElement = HTMLBaseElement_js_1.default;
HTMLDialogElement = HTMLDialogElement_js_1.default;
HTMLScriptElement = HTMLScriptElement_js_1.default;
HTMLLinkElement = HTMLLinkElement_js_1.default;
HTMLIFrameElement = HTMLIFrameElement_js_1.default;
HTMLFormElement = HTMLFormElement_js_1.default;
HTMLUListElement = HTMLUListElement_js_1.default;
HTMLTrackElement = HTMLTrackElement_js_1.default;
HTMLTableRowElement = HTMLTableRowElement_js_1.default;
HTMLTitleElement = HTMLTitleElement_js_1.default;
HTMLTimeElement = HTMLTimeElement_js_1.default;
HTMLTableSectionElement = HTMLTableSectionElement_js_1.default;
HTMLTableCellElement = HTMLTableCellElement_js_1.default;
HTMLTableElement = HTMLTableElement_js_1.default;
HTMLSpanElement = HTMLSpanElement_js_1.default;
HTMLSourceElement = HTMLSourceElement_js_1.default;
HTMLQuoteElement = HTMLQuoteElement_js_1.default;
HTMLProgressElement = HTMLProgressElement_js_1.default;
HTMLPreElement = HTMLPreElement_js_1.default;
HTMLPictureElement = HTMLPictureElement_js_1.default;
HTMLParamElement = HTMLParamElement_js_1.default;
HTMLParagraphElement = HTMLParagraphElement_js_1.default;
HTMLOutputElement = HTMLOutputElement_js_1.default;
HTMLOListElement = HTMLOListElement_js_1.default;
HTMLObjectElement = HTMLObjectElement_js_1.default;
HTMLMeterElement = HTMLMeterElement_js_1.default;
HTMLMenuElement = HTMLMenuElement_js_1.default;
HTMLMapElement = HTMLMapElement_js_1.default;
HTMLLIElement = HTMLLIElement_js_1.default;
HTMLLegendElement = HTMLLegendElement_js_1.default;
HTMLModElement = HTMLModElement_js_1.default;
HTMLHtmlElement = HTMLHtmlElement_js_1.default;
HTMLHRElement = HTMLHRElement_js_1.default;
HTMLHeadElement = HTMLHeadElement_js_1.default;
HTMLHeadingElement = HTMLHeadingElement_js_1.default;
HTMLFieldSetElement = HTMLFieldSetElement_js_1.default;
HTMLEmbedElement = HTMLEmbedElement_js_1.default;
HTMLDListElement = HTMLDListElement_js_1.default;
HTMLDivElement = HTMLDivElement_js_1.default;
HTMLDetailsElement = HTMLDetailsElement_js_1.default;
HTMLDataListElement = HTMLDataListElement_js_1.default;
HTMLDataElement = HTMLDataElement_js_1.default;
HTMLTableColElement = HTMLTableColElement_js_1.default;
HTMLTableCaptionElement = HTMLTableCaptionElement_js_1.default;
HTMLCanvasElement = HTMLCanvasElement_js_1.default;
HTMLBRElement = HTMLBRElement_js_1.default;
HTMLBodyElement = HTMLBodyElement_js_1.default;
HTMLAreaElement = HTMLAreaElement_js_1.default;
// SVG Element classes
SVGSVGElement = SVGSVGElement_js_1.default;
SVGAnimateElement = SVGAnimateElement_js_1.default;
SVGAnimateMotionElement = SVGAnimateMotionElement_js_1.default;
SVGAnimateTransformElement = SVGAnimateTransformElement_js_1.default;
SVGCircleElement = SVGCircleElement_js_1.default;
SVGClipPathElement = SVGClipPathElement_js_1.default;
SVGDefsElement = SVGDefsElement_js_1.default;
SVGDescElement = SVGDescElement_js_1.default;
SVGEllipseElement = SVGEllipseElement_js_1.default;
SVGFEBlendElement = SVGFEBlendElement_js_1.default;
SVGFEColorMatrixElement = SVGFEColorMatrixElement_js_1.default;
SVGFEComponentTransferElement = SVGFEComponentTransferElement_js_1.default;
SVGFECompositeElement = SVGFECompositeElement_js_1.default;
SVGFEConvolveMatrixElement = SVGFEConvolveMatrixElement_js_1.default;
SVGFEDiffuseLightingElement = SVGFEDiffuseLightingElement_js_1.default;
SVGFEDisplacementMapElement = SVGFEDisplacementMapElement_js_1.default;
SVGFEDistantLightElement = SVGFEDistantLightElement_js_1.default;
SVGFEDropShadowElement = SVGFEDropShadowElement_js_1.default;
SVGFEFloodElement = SVGFEFloodElement_js_1.default;
SVGFEFuncAElement = SVGFEFuncAElement_js_1.default;
SVGFEFuncBElement = SVGFEFuncBElement_js_1.default;
SVGFEFuncGElement = SVGFEFuncGElement_js_1.default;
SVGFEFuncRElement = SVGFEFuncRElement_js_1.default;
SVGFEGaussianBlurElement = SVGFEGaussianBlurElement_js_1.default;
SVGFEImageElement = SVGFEImageElement_js_1.default;
SVGFEMergeElement = SVGFEMergeElement_js_1.default;
SVGFEMergeNodeElement = SVGFEMergeNodeElement_js_1.default;
SVGFEMorphologyElement = SVGFEMorphologyElement_js_1.default;
SVGFEOffsetElement = SVGFEOffsetElement_js_1.default;
SVGFEPointLightElement = SVGFEPointLightElement_js_1.default;
SVGFESpecularLightingElement = SVGFESpecularLightingElement_js_1.default;
SVGFESpotLightElement = SVGFESpotLightElement_js_1.default;
SVGFETileElement = SVGFETileElement_js_1.default;
SVGFETurbulenceElement = SVGFETurbulenceElement_js_1.default;
SVGFilterElement = SVGFilterElement_js_1.default;
SVGForeignObjectElement = SVGForeignObjectElement_js_1.default;
SVGGElement = SVGGElement_js_1.default;
SVGImageElement = SVGImageElement_js_1.default;
SVGLineElement = SVGLineElement_js_1.default;
SVGLinearGradientElement = SVGLinearGradientElement_js_1.default;
SVGMarkerElement = SVGMarkerElement_js_1.default;
SVGMaskElement = SVGMaskElement_js_1.default;
SVGMetadataElement = SVGMetadataElement_js_1.default;
SVGMPathElement = SVGMPathElement_js_1.default;
SVGPathElement = SVGPathElement_js_1.default;
SVGPatternElement = SVGPatternElement_js_1.default;
SVGPolygonElement = SVGPolygonElement_js_1.default;
SVGPolylineElement = SVGPolylineElement_js_1.default;
SVGRadialGradientElement = SVGRadialGradientElement_js_1.default;
SVGRectElement = SVGRectElement_js_1.default;
SVGScriptElement = SVGScriptElement_js_1.default;
SVGSetElement = SVGSetElement_js_1.default;
SVGStopElement = SVGStopElement_js_1.default;
SVGStyleElement = SVGStyleElement_js_1.default;
SVGSwitchElement = SVGSwitchElement_js_1.default;
SVGSymbolElement = SVGSymbolElement_js_1.default;
SVGTextElement = SVGTextElement_js_1.default;
SVGTextPathElement = SVGTextPathElement_js_1.default;
SVGTitleElement = SVGTitleElement_js_1.default;
SVGTSpanElement = SVGTSpanElement_js_1.default;
SVGUseElement = SVGUseElement_js_1.default;
SVGViewElement = SVGViewElement_js_1.default;
// Abstract SVG Element classes
SVGElement = SVGElement_js_1.default;
SVGAnimationElement = SVGAnimationElement_js_1.default;
SVGComponentTransferFunctionElement = SVGComponentTransferFunctionElement_js_1.default;
SVGGeometryElement = SVGGeometryElement_js_1.default;
SVGGradientElement = SVGGradientElement_js_1.default;
SVGTextPositioningElement = SVGTextPositioningElement_js_1.default;
SVGGraphicsElement = SVGGraphicsElement_js_1.default;
// Event classes
Event = Event_js_1.default;
UIEvent = UIEvent_js_1.default;
CustomEvent = CustomEvent_js_1.default;
AnimationEvent = AnimationEvent_js_1.default;
KeyboardEvent = KeyboardEvent_js_1.default;
MessageEvent = MessageEvent_js_1.default;
MouseEvent = MouseEvent_js_1.default;
PointerEvent = PointerEvent_js_1.default;
FocusEvent = FocusEvent_js_1.default;
WheelEvent = WheelEvent_js_1.default;
InputEvent = InputEvent_js_1.default;
ErrorEvent = ErrorEvent_js_1.default;
StorageEvent = StorageEvent_js_1.default;
SubmitEvent = SubmitEvent_js_1.default;
ProgressEvent = ProgressEvent_js_1.default;
MediaQueryListEvent = MediaQueryListEvent_js_1.default;
HashChangeEvent = HashChangeEvent_js_1.default;
ClipboardEvent = ClipboardEvent_js_1.default;
TouchEvent = TouchEvent_js_1.default;
Touch = Touch_js_1.default;
// Non-implemented event classes
AudioProcessingEvent = Event_js_1.default;
BeforeInputEvent = Event_js_1.default;
BeforeUnloadEvent = Event_js_1.default;
BlobEvent = Event_js_1.default;
CloseEvent = Event_js_1.default;
CompositionEvent = Event_js_1.default;
CSSFontFaceLoadEvent = Event_js_1.default;
DeviceLightEvent = Event_js_1.default;
DeviceMotionEvent = Event_js_1.default;
DeviceOrientationEvent = Event_js_1.default;
DeviceProximityEvent = Event_js_1.default;
DOMTransactionEvent = Event_js_1.default;
DragEvent = Event_js_1.default;
EditingBeforeInputEvent = Event_js_1.default;
FetchEvent = Event_js_1.default;
GamepadEvent = Event_js_1.default;
IDBVersionChangeEvent = Event_js_1.default;
MediaStreamEvent = Event_js_1.default;
MutationEvent = Event_js_1.default;
OfflineAudioCompletionEvent = Event_js_1.default;
OverconstrainedError = Event_js_1.default;
PageTransitionEvent = Event_js_1.default;
PaymentRequestUpdateEvent = Event_js_1.default;
PopStateEvent = Event_js_1.default;
RelatedEvent = Event_js_1.default;
RTCDataChannelEvent = Event_js_1.default;
RTCIdentityErrorEvent = Event_js_1.default;
RTCIdentityEvent = Event_js_1.default;
RTCPeerConnectionIceEvent = Event_js_1.default;
SensorEvent = Event_js_1.default;
SVGEvent = Event_js_1.default;
SVGZoomEvent = Event_js_1.default;
TimeEvent = Event_js_1.default;
TrackEvent = Event_js_1.default;
TransitionEvent = Event_js_1.default;
UserProximityEvent = Event_js_1.default;
WebGLContextEvent = Event_js_1.default;
TextEvent = Event_js_1.default;
// Other classes that don't have to be bound to the Window context
Permissions = Permissions_js_1.default;
History = History_js_1.default;
Navigator = Navigator_js_1.default;
Clipboard = Clipboard_js_1.default;
TimeRanges = TimeRanges_js_1.default;
TextTrackCueList = TextTrackCueList_js_1.default;
ValidityState = ValidityState_js_1.default;
MutationRecord = MutationRecord_js_1.default;
IntersectionObserver = IntersectionObserver_js_1.default;
IntersectionObserverEntry = IntersectionObserverEntry_js_1.default;
CSSStyleDeclaration = CSSStyleDeclaration_js_1.default;
CSSRule = CSSRule_js_1.default;
CSSContainerRule = CSSContainerRule_js_1.default;
CSSFontFaceRule = CSSFontFaceRule_js_1.default;
CSSKeyframeRule = CSSKeyframeRule_js_1.default;
CSSKeyframesRule = CSSKeyframesRule_js_1.default;
CSSMediaRule = CSSMediaRule_js_1.default;
CSSStyleRule = CSSStyleRule_js_1.default;
CSSSupportsRule = CSSSupportsRule_js_1.default;
DOMRect = DOMRect_js_1.default;
DOMRectReadOnly = DOMRectReadOnly_js_1.default;
Plugin = Plugin_js_1.default;
PluginArray = PluginArray_js_1.default;
Location = Location_js_1.default;
CustomElementRegistry = CustomElementRegistry_js_1.default;
ResizeObserver = ResizeObserver_js_1.default;
URL = URL_js_1.default;
Blob = Blob_js_1.default;
File = File_js_1.default;
Storage = Storage_js_1.default;
MimeType = MimeType_js_1.default;
MimeTypeArray = MimeTypeArray_js_1.default;
NodeFilter = NodeFilter_js_1.default;
HTMLCollection = HTMLCollection_js_1.default;
HTMLFormControlCollection = HTMLFormControlsCollection_js_1.default;
HTMLOptionsCollection = HTMLOptionsCollection_js_1.default;
NodeList = NodeList_js_1.default;
RadioNodeList = RadioNodeList_js_1.default;
FileList = FileList_js_1.default;
Screen = Screen_js_1.default;
DOMMatrixReadOnly = DOMMatrixReadOnly_js_1.default;
DOMMatrix = DOMMatrix_js_1.default;
SVGAngle = SVGAngle_js_1.default;
SVGAnimatedAngle = SVGAnimatedAngle_js_1.default;
SVGAnimatedBoolean = SVGAnimatedBoolean_js_1.default;
SVGAnimatedEnumeration = SVGAnimatedEnumeration_js_1.default;
SVGAnimatedInteger = SVGAnimatedInteger_js_1.default;
SVGAnimatedLength = SVGAnimatedLength_js_1.default;
SVGAnimatedNumber = SVGAnimatedNumber_js_1.default;
SVGAnimatedNumberList = SVGAnimatedNumberList_js_1.default;
SVGAnimatedPreserveAspectRatio = SVGAnimatedPreserveAspectRatio_js_1.default;
SVGAnimatedRect = SVGAnimatedRect_js_1.default;
SVGAnimatedString = SVGAnimatedString_js_1.default;
SVGAnimatedTransformList = SVGAnimatedTransformList_js_1.default;
SVGLength = SVGLength_js_1.default;
SVGLengthList = SVGLengthList_js_1.default;
SVGMatrix = SVGMatrix_js_1.default;
SVGNumber = SVGNumber_js_1.default;
SVGNumberList = SVGNumberList_js_1.default;
SVGPoint = SVGPoint_js_1.default;
SVGPointList = SVGPointList_js_1.default;
SVGPreserveAspectRatio = SVGPreserveAspectRatio_js_1.default;
SVGRect = SVGRect_js_1.default;
SVGStringList = SVGStringList_js_1.default;
SVGTransform = SVGTransform_js_1.default;
SVGTransformList = SVGTransformList_js_1.default;
SVGAnimatedLengthList = SVGAnimatedLengthList_js_1.default;
SVGUnitTypes = SVGUnitTypes_js_1.default;
DOMPoint = DOMPoint_js_1.default;
Window = this.constructor;
// Node.js Classes
URLSearchParams = url_1.URLSearchParams;
WritableStream = stream_1.default.Writable;
ReadableStream = web_1.ReadableStream;
TransformStream = stream_1.default.Transform;
PerformanceObserver = node_perf_hooks_1.PerformanceObserver;
PerformanceEntry = node_perf_hooks_1.PerformanceEntry;
PerformanceObserverEntryList = PerformanceObserverEntryList;
// Events
onload = null;
onerror = null;
// Public properties.
document;
customElements = new CustomElementRegistry_js_1.default(this);
window = this;
globalThis = this;
performance = performance;
screenLeft = 0;
screenTop = 0;
screenX = 0;
screenY = 0;
crypto = crypto_1.webcrypto;
TextEncoder = util_1.TextEncoder;
TextDecoder = util_1.TextDecoder;
closed = false;
console;
name = '';
Buffer = buffer_1.Buffer;
// Public internal properties
// Used for tracking capture event listeners to improve performance when they are not used.
// See EventTarget class.
[PropertySymbol.mutationObservers] = [];
[PropertySymbol.readyStateManager] = new DocumentReadyStateManager_js_1.default(this);
[PropertySymbol.location];
[PropertySymbol.history];
[PropertySymbol.navigator];
[PropertySymbol.screen];
[PropertySymbol.sessionStorage];
[PropertySymbol.localStorage];
[PropertySymbol.self] = this;
[PropertySymbol.top] = this;
[PropertySymbol.parent] = this;
[PropertySymbol.window] = this;
[PropertySymbol.internalId] = -1;
[PropertySymbol.customElementReactionStack] = new CustomElementReactionStack_js_1.default(this);
[PropertySymbol.modules] = {
json: new Map(),
css: new Map(),
esm: new Map()
};
[PropertySymbol.moduleImportMap] = null;
// Private properties
#browserFrame;
#innerWidth = null;
#innerHeight = null;
#outerWidth = null;
#outerHeight = null;
#devicePixelRatio = null;
#zeroDelayTimeout = { timeouts: null };
#timerLoopStacks = [];
/**
* Constructor.
*
* @param browserFrame Browser frame.
* @param [options] Options.
* @param [options.url] URL.
*/
constructor(browserFrame, options) {
super();
this.#browserFrame = browserFrame;
this.console = browserFrame.page.console;
this[PropertySymbol.navigator] = new Navigator_js_1.default(this);
this[PropertySymbol.screen] = new Screen_js_1.default();
this[PropertySymbol.sessionStorage] = new Storage_js_1.default();
this[PropertySymbol.localStorage] = new Storage_js_1.default();
this[PropertySymbol.location] = new Location_js_1.default(this.#browserFrame, options?.url ?? 'about:blank');
this[PropertySymbol.history] = new History_js_1.default(this.#browserFrame, this);
WindowBrowserContext_js_1.default.setWindowBrowserFrameRelation(this, this.#browserFrame);
this[PropertySymbol.setupVMContext]();
WindowContextClassExtender_js_1.default.extendClasses(this);
// Document
this.document = new this.HTMLDocument();
this.document[PropertySymbol.defaultView] = this;
// Ready state manager
this[PropertySymbol.readyStateManager].waitUntilComplete().then(() => {
this.document[PropertySymbol.readyState] = DocumentReadyStateEnum_js_1.default.complete;
this.document.dispatchEvent(new Event_js_1.default('readystatechange'));
// Not sure why target is set to document here, but this is how it works in the browser
const loadEvent = new Event_js_1.default('load');
loadEvent[PropertySymbol.currentTarget] = this;
loadEvent[PropertySymbol.target] = this.document;
loadEvent[PropertySymbol.eventPhase] = EventPhaseEnum_js_1.default.atTarget;
this.dispatchEvent(loadEvent);
loadEvent[PropertySymbol.currentTarget] = null;
loadEvent[PropertySymbol.eventPhase] = EventPhaseEnum_js_1.default.none;
loadEvent[PropertySymbol.dispatching] = false;
});
this[PropertySymbol.bindMethods]();
}
/**
* Returns self.
*
* @returns Self.
*/
get self() {
return this[PropertySymbol.self];
}
/**
* Returns self.
*
* @param self Self.
*/
set self(self) {
this[PropertySymbol.self] = self;
}
/**
* Returns top.
*
* @returns Top.
*/
get top() {
return this[PropertySymbol.top];
}
/**
* Returns parent.
*
* @returns Parent.
*/
get parent() {
return this[PropertySymbol.parent];
}
/**
* Returns parent.
*
* @param parent Parent.
*/
set parent(parent) {
this[PropertySymbol.parent] = parent;
}
/**
* Returns location.
*/
get location() {
return this[PropertySymbol.location];
}
/**
* Returns location.
*
* @param href Href.
*/
set location(href) {
this[PropertySymbol.location].href = href;
}
/**
* Returns history.
*/
get history() {
return this[PropertySymbol.history];
}
/**
* Returns navigator.
*/
get navigator() {
return this[PropertySymbol.navigator];
}
/**
* Returns screen.
*/
get screen() {
return this[PropertySymbol.screen];
}
/**
* Returns session storage.
*/
get sessionStorage() {
return this[PropertySymbol.sessionStorage];
}
/**
* Returns local storage.
*/
get localStorage() {
return this[PropertySymbol.localStorage];
}
/**
* Returns opener.
*
* @returns Opener.
*/
get opener() {
return this.#browserFrame[PropertySymbol.openerWindow];
}
/**
* The number of pixels that the document is currently scrolled horizontally.
*
* @returns Scroll X.
*/
get scrollX() {
return this.document?.documentElement?.scrollLeft ?? 0;
}
/**
* The read-only Window property pageXOffset is an alias for scrollX.
*
* @returns Scroll X.
*/
get pageXOffset() {
return this.scrollX;
}
/**
* The number of pixels that the document is currently scrolled vertically.
*
* @returns Scroll Y.
*/
get scrollY() {
return this.document?.documentElement?.scrollTop ?? 0;
}
/**
* The read-only Window property pageYOffset is an alias for scrollY.
*
* @returns Scroll Y.
*/
get pageYOffset() {
return this.scrollY;
}
/**
* The CSS interface holds useful CSS-related methods.
*
* @returns CSS interface.
*/
get CSS() {
return new CSS_js_1.default();
}
/**
* Returns inner width.
*
* @returns Inner width.
*/
get innerWidth() {
if (this.#innerWidth === null) {
return this.#browserFrame.page.viewport.width;
}
return this.#innerWidth;
}
/**
* Sets inner width.
*
* @param value Inner width.
*/
set innerWidth(value) {
this.#innerWidth = value;
}
/**
* Returns inner height.
*
* @returns Inner height.
*/
get innerHeight() {
// It seems like this value can be defined according to spec, but changing it has no effect on the actual viewport.
if (this.#innerHeight === null) {
return this.#browserFrame.page.viewport.height;
}
return this.#innerHeight;
}
/**
* Sets inner height.
*
* @param value Inner height.
*/
set innerHeight(value) {