|
- /// <reference types="node" />
- /// <reference types="node" />
- /// <reference types="node" />
- /// <reference types="node" />
- import CustomElementRegistry from '../custom-element/CustomElementRegistry';
- import Document from '../nodes/document/Document';
- import HTMLDocument from '../nodes/html-document/HTMLDocument';
- import XMLDocument from '../nodes/xml-document/XMLDocument';
- import SVGDocument from '../nodes/svg-document/SVGDocument';
- import Node from '../nodes/node/Node';
- import Text from '../nodes/text/Text';
- import Comment from '../nodes/comment/Comment';
- import ShadowRoot from '../nodes/shadow-root/ShadowRoot';
- import Element from '../nodes/element/Element';
- import HTMLTemplateElement from '../nodes/html-template-element/HTMLTemplateElement';
- import HTMLFormElement from '../nodes/html-form-element/HTMLFormElement';
- import HTMLElement from '../nodes/html-element/HTMLElement';
- import HTMLUnknownElement from '../nodes/html-unknown-element/HTMLUnknownElement';
- import HTMLInputElement from '../nodes/html-input-element/HTMLInputElement';
- import HTMLSelectElement from '../nodes/html-select-element/HTMLSelectElement';
- import HTMLTextAreaElement from '../nodes/html-text-area-element/HTMLTextAreaElement';
- import HTMLLinkElement from '../nodes/html-link-element/HTMLLinkElement';
- import HTMLStyleElement from '../nodes/html-style-element/HTMLStyleElement';
- import HTMLSlotElement from '../nodes/html-slot-element/HTMLSlotElement';
- import HTMLLabelElement from '../nodes/html-label-element/HTMLLabelElement';
- import HTMLMetaElement from '../nodes/html-meta-element/HTMLMetaElement';
- import HTMLMediaElement from '../nodes/html-media-element/HTMLMediaElement';
- import HTMLAudioElement from '../nodes/html-audio-element/HTMLAudioElement';
- import HTMLVideoElement from '../nodes/html-video-element/HTMLVideoElement';
- import HTMLBaseElement from '../nodes/html-base-element/HTMLBaseElement';
- import HTMLIFrameElement from '../nodes/html-iframe-element/HTMLIFrameElement';
- import HTMLDialogElement from '../nodes/html-dialog-element/HTMLDialogElement';
- import SVGSVGElement from '../nodes/svg-element/SVGSVGElement';
- import SVGElement from '../nodes/svg-element/SVGElement';
- import SVGGraphicsElement from '../nodes/svg-element/SVGGraphicsElement';
- import HTMLScriptElement from '../nodes/html-script-element/HTMLScriptElement';
- import HTMLImageElement from '../nodes/html-image-element/HTMLImageElement';
- import DocumentFragment from '../nodes/document-fragment/DocumentFragment';
- import CharacterData from '../nodes/character-data/CharacterData';
- import TreeWalker from '../tree-walker/TreeWalker';
- import Event from '../event/Event';
- import CustomEvent from '../event/events/CustomEvent';
- import AnimationEvent from '../event/events/AnimationEvent';
- import KeyboardEvent from '../event/events/KeyboardEvent';
- import MessageEvent from '../event/events/MessageEvent';
- import ProgressEvent from '../event/events/ProgressEvent';
- import MediaQueryListEvent from '../event/events/MediaQueryListEvent';
- import EventTarget from '../event/EventTarget';
- import MessagePort from '../event/MessagePort';
- import { URL, URLSearchParams } from 'url';
- import Location from '../location/Location';
- import MutationObserver from '../mutation-observer/MutationObserver';
- import XMLSerializer from '../xml-serializer/XMLSerializer';
- import ResizeObserver from '../resize-observer/ResizeObserver';
- import Blob from '../file/Blob';
- import File from '../file/File';
- import DOMException from '../exception/DOMException';
- import History from '../history/History';
- import CSSStyleSheet from '../css/CSSStyleSheet';
- import CSSStyleDeclaration from '../css/declaration/CSSStyleDeclaration';
- import CSS from '../css/CSS';
- import CSSUnitValue from '../css/CSSUnitValue';
- import CSSRule from '../css/CSSRule';
- import CSSContainerRule from '../css/rules/CSSContainerRule';
- import CSSFontFaceRule from '../css/rules/CSSFontFaceRule';
- import CSSKeyframeRule from '../css/rules/CSSKeyframeRule';
- import CSSKeyframesRule from '../css/rules/CSSKeyframesRule';
- import CSSMediaRule from '../css/rules/CSSMediaRule';
- import CSSStyleRule from '../css/rules/CSSStyleRule';
- import MouseEvent from '../event/events/MouseEvent';
- import PointerEvent from '../event/events/PointerEvent';
- import FocusEvent from '../event/events/FocusEvent';
- import WheelEvent from '../event/events/WheelEvent';
- import DataTransfer from '../event/DataTransfer';
- import DataTransferItem from '../event/DataTransferItem';
- import DataTransferItemList from '../event/DataTransferItemList';
- import InputEvent from '../event/events/InputEvent';
- import UIEvent from '../event/UIEvent';
- import ErrorEvent from '../event/events/ErrorEvent';
- import StorageEvent from '../event/events/StorageEvent';
- import Screen from '../screen/Screen';
- import AsyncTaskManager from '../async-task-manager/AsyncTaskManager';
- import IResponse from '../fetch/IResponse';
- import IResponseInit from '../fetch/IResponseInit';
- import IRequest from '../fetch/IRequest';
- import IRequestInit from '../fetch/IRequestInit';
- import IHeaders from '../fetch/IHeaders';
- import IHeadersInit from '../fetch/IHeadersInit';
- import Storage from '../storage/Storage';
- import IWindow from './IWindow';
- import HTMLCollection from '../nodes/element/HTMLCollection';
- import NodeList from '../nodes/node/NodeList';
- import MediaQueryList from '../match-media/MediaQueryList';
- import Selection from '../selection/Selection';
- import Navigator from '../navigator/Navigator';
- import MimeType from '../navigator/MimeType';
- import MimeTypeArray from '../navigator/MimeTypeArray';
- import Plugin from '../navigator/Plugin';
- import PluginArray from '../navigator/PluginArray';
- import DOMRect from '../nodes/element/DOMRect';
- import * as PerfHooks from 'perf_hooks';
- import XMLHttpRequestUpload from '../xml-http-request/XMLHttpRequestUpload';
- import XMLHttpRequestEventTarget from '../xml-http-request/XMLHttpRequestEventTarget';
- import Attr from '../nodes/attr/Attr';
- import NamedNodeMap from '../named-node-map/NamedNodeMap';
- import IElement from '../nodes/element/IElement';
- import ProcessingInstruction from '../nodes/processing-instruction/ProcessingInstruction';
- import RequestInfo from '../fetch/RequestInfo';
- import FileList from '../nodes/html-input-element/FileList';
- import IHappyDOMOptions from './IHappyDOMOptions';
- /**
- * Browser window.
- *
- * Reference:
- * https://developer.mozilla.org/en-US/docs/Web/API/Window.
- */
- export default class Window extends EventTarget implements IWindow {
- readonly happyDOM: {
- whenAsyncComplete: () => Promise<void>;
- cancelAsync: () => void;
- asyncTaskManager: AsyncTaskManager;
- setInnerWidth: (width: number) => void;
- setInnerHeight: (height: number) => void;
- setURL: (url: string) => void;
- settings: {
- disableJavaScriptEvaluation: boolean;
- disableJavaScriptFileLoading: boolean;
- disableCSSFileLoading: boolean;
- disableIframePageLoading: boolean;
- enableFileSystemHttpRequests: boolean;
- };
- };
- readonly Node: typeof Node;
- readonly HTMLElement: typeof HTMLElement;
- readonly HTMLUnknownElement: typeof HTMLUnknownElement;
- readonly HTMLTemplateElement: typeof HTMLTemplateElement;
- readonly HTMLFormElement: typeof HTMLFormElement;
- readonly HTMLInputElement: typeof HTMLInputElement;
- readonly HTMLSelectElement: typeof HTMLSelectElement;
- readonly HTMLTextAreaElement: typeof HTMLTextAreaElement;
- readonly HTMLImageElement: typeof HTMLImageElement;
- readonly HTMLScriptElement: typeof HTMLScriptElement;
- readonly HTMLLinkElement: typeof HTMLLinkElement;
- readonly HTMLStyleElement: typeof HTMLStyleElement;
- readonly HTMLLabelElement: typeof HTMLLabelElement;
- readonly HTMLSlotElement: typeof HTMLSlotElement;
- readonly HTMLMetaElement: typeof HTMLMetaElement;
- readonly HTMLMediaElement: typeof HTMLMediaElement;
- readonly HTMLAudioElement: typeof HTMLAudioElement;
- readonly HTMLVideoElement: typeof HTMLVideoElement;
- readonly HTMLBaseElement: typeof HTMLBaseElement;
- readonly HTMLIFrameElement: typeof HTMLIFrameElement;
- readonly HTMLDialogElement: typeof HTMLDialogElement;
- readonly Attr: typeof Attr;
- readonly NamedNodeMap: typeof NamedNodeMap;
- readonly SVGSVGElement: typeof SVGSVGElement;
- readonly SVGElement: typeof SVGElement;
- readonly SVGGraphicsElement: typeof SVGGraphicsElement;
- readonly Text: typeof Text;
- readonly Comment: typeof Comment;
- readonly ShadowRoot: typeof ShadowRoot;
- readonly ProcessingInstruction: typeof ProcessingInstruction;
- readonly Element: typeof Element;
- readonly DocumentFragment: typeof DocumentFragment;
- readonly CharacterData: typeof CharacterData;
- readonly NodeFilter: {
- FILTER_ACCEPT: number;
- FILTER_REJECT: number;
- FILTER_SKIP: number;
- SHOW_ALL: number;
- SHOW_ELEMENT: number;
- SHOW_ATTRIBUTE: number;
- SHOW_TEXT: number;
- SHOW_CDATA_SECTION: number;
- SHOW_ENTITY_REFERENCE: number;
- SHOW_ENTITY: number;
- SHOW_PROCESSING_INSTRUCTION: number;
- SHOW_COMMENT: number;
- SHOW_DOCUMENT: number;
- SHOW_DOCUMENT_TYPE: number;
- SHOW_DOCUMENT_FRAGMENT: number;
- SHOW_NOTATION: number;
- };
- readonly TreeWalker: typeof TreeWalker;
- readonly MutationObserver: typeof MutationObserver;
- readonly Document: typeof Document;
- readonly HTMLDocument: typeof HTMLDocument;
- readonly XMLDocument: typeof XMLDocument;
- readonly SVGDocument: typeof SVGDocument;
- readonly Event: typeof Event;
- readonly UIEvent: typeof UIEvent;
- readonly CustomEvent: typeof CustomEvent;
- readonly AnimationEvent: typeof AnimationEvent;
- readonly KeyboardEvent: typeof KeyboardEvent;
- readonly MessageEvent: typeof MessageEvent;
- readonly MouseEvent: typeof MouseEvent;
- readonly PointerEvent: typeof PointerEvent;
- readonly FocusEvent: typeof FocusEvent;
- readonly WheelEvent: typeof WheelEvent;
- readonly InputEvent: typeof InputEvent;
- readonly ErrorEvent: typeof ErrorEvent;
- readonly StorageEvent: typeof StorageEvent;
- readonly ProgressEvent: typeof ProgressEvent;
- readonly MediaQueryListEvent: typeof MediaQueryListEvent;
- readonly EventTarget: typeof EventTarget;
- readonly MessagePort: typeof MessagePort;
- readonly DataTransfer: typeof DataTransfer;
- readonly DataTransferItem: typeof DataTransferItem;
- readonly DataTransferItemList: typeof DataTransferItemList;
- readonly URL: typeof URL;
- readonly Location: typeof Location;
- readonly CustomElementRegistry: typeof CustomElementRegistry;
- readonly Window: typeof Window;
- readonly XMLSerializer: typeof XMLSerializer;
- readonly ResizeObserver: typeof ResizeObserver;
- readonly CSSStyleSheet: typeof CSSStyleSheet;
- readonly Blob: typeof Blob;
- readonly File: typeof File;
- readonly DOMException: typeof DOMException;
- readonly History: typeof History;
- readonly Screen: typeof Screen;
- readonly Storage: typeof Storage;
- readonly URLSearchParams: typeof URLSearchParams;
- readonly HTMLCollection: typeof HTMLCollection;
- readonly NodeList: typeof NodeList;
- readonly CSSUnitValue: typeof CSSUnitValue;
- readonly CSSRule: typeof CSSRule;
- readonly CSSContainerRule: typeof CSSContainerRule;
- readonly CSSFontFaceRule: typeof CSSFontFaceRule;
- readonly CSSKeyframeRule: typeof CSSKeyframeRule;
- readonly CSSKeyframesRule: typeof CSSKeyframesRule;
- readonly CSSMediaRule: typeof CSSMediaRule;
- readonly CSSStyleRule: typeof CSSStyleRule;
- readonly Selection: typeof Selection;
- readonly Navigator: typeof Navigator;
- readonly MimeType: typeof MimeType;
- readonly MimeTypeArray: typeof MimeTypeArray;
- readonly Plugin: typeof Plugin;
- readonly PluginArray: typeof PluginArray;
- readonly FileList: typeof FileList;
- readonly Headers: {
- new (init?: IHeadersInit): IHeaders;
- };
- readonly DOMRect: typeof DOMRect;
- readonly Request: {
- new (input: string | {
- href: string;
- } | IRequest, init?: IRequestInit): IRequest;
- };
- readonly Response: {
- new (body?: NodeJS.ReadableStream | null, init?: IResponseInit): IResponse;
- };
- readonly XMLHttpRequestUpload: typeof XMLHttpRequestUpload;
- readonly XMLHttpRequestEventTarget: typeof XMLHttpRequestEventTarget;
- readonly XMLHttpRequest: any;
- readonly DOMParser: any;
- readonly Range: any;
- readonly FileReader: any;
- readonly Image: any;
- readonly Audio: any;
- onload: (event: Event) => void;
- onerror: (event: ErrorEvent) => void;
- readonly document: Document;
- readonly customElements: CustomElementRegistry;
- readonly location: Location;
- readonly history: History;
- readonly navigator: Navigator;
- readonly console: Console;
- readonly self: this;
- readonly top: this;
- readonly parent: this;
- readonly window: this;
- readonly globalThis: this;
- readonly screen: Screen;
- readonly devicePixelRatio = 1;
- readonly sessionStorage: Storage;
- readonly localStorage: Storage;
- readonly performance: PerfHooks.Performance;
- readonly innerWidth: number;
- readonly innerHeight: number;
- ArrayBuffer: any;
- Boolean: any;
- Buffer: typeof globalThis.Buffer;
- DataView: any;
- Date: any;
- Error: any;
- EvalError: any;
- Float32Array: any;
- Float64Array: any;
- GLOBAL: any;
- Infinity: any;
- Int16Array: any;
- Int32Array: any;
- Int8Array: any;
- Intl: any;
- JSON: any;
- Map: any;
- Math: any;
- NaN: any;
- Number: any;
- Promise: any;
- RangeError: any;
- ReferenceError: any;
- RegExp: any;
- Reflect: any;
- Set: any;
- Symbol: any;
- SyntaxError: any;
- String: any;
- TypeError: any;
- URIError: any;
- Uint16Array: any;
- Uint32Array: any;
- Uint8Array: any;
- Uint8ClampedArray: any;
- WeakMap: any;
- WeakSet: any;
- clearImmediate: any;
- decodeURI: any;
- decodeURIComponent: any;
- encodeURI: any;
- encodeURIComponent: any;
- escape: any;
- global: any;
- isFinite: any;
- isNaN: any;
- parseFloat: any;
- parseInt: any;
- process: any;
- root: any;
- setImmediate: any;
- queueMicrotask: any;
- undefined: any;
- unescape: any;
- gc: any;
- v8debug: any;
- AbortController: any;
- AbortSignal: any;
- Array: any;
- Object: any;
- Function: any;
- private _setTimeout;
- private _clearTimeout;
- private _setInterval;
- private _clearInterval;
- /**
- * Constructor.
- *
- * @param [options] Options.
- * @param [options.innerWidth] Inner width. Defaults to "1024".
- * @param [options.innerHeight] Inner height. Defaults to "768".
- * @param [options.url] URL.
- * @param [options.settings] Settings.
- */
- constructor(options?: IHappyDOMOptions);
- /**
- * The number of pixels that the document is currently scrolled horizontally
- *
- * @returns number
- */
- get scrollX(): number;
- /**
- * The read-only Window property pageXOffset is an alias for scrollX.
- *
- * @returns number
- */
- get pageXOffset(): number;
- /**
- * The number of pixels that the document is currently scrolled vertically
- *
- * @returns number
- */
- get scrollY(): number;
- /**
- * The read-only Window property pageYOffset is an alias for scrollY.
- *
- * @returns number
- */
- get pageYOffset(): number;
- /**
- * The CSS interface holds useful CSS-related methods.
- *
- * @returns CSS interface.
- */
- get CSS(): CSS;
- /**
- * Evaluates code.
- *
- * @override
- * @param code Code.
- * @returns Result.
- */
- eval(code: string): unknown;
- /**
- * Returns an object containing the values of all CSS properties of an element.
- *
- * @param element Element.
- * @returns CSS style declaration.
- */
- getComputedStyle(element: IElement): CSSStyleDeclaration;
- /**
- * Returns selection.
- *
- * @returns Selection.
- */
- getSelection(): Selection;
- /**
- * Scrolls to a particular set of coordinates.
- *
- * @param x X position or options object.
- * @param y Y position.
- */
- scroll(x: {
- top?: number;
- left?: number;
- behavior?: string;
- } | number, y?: number): void;
- /**
- * Scrolls to a particular set of coordinates.
- *
- * @param x X position or options object.
- * @param y Y position.
- */
- scrollTo(x: {
- top?: number;
- left?: number;
- behavior?: string;
- } | number, y?: number): void;
- /**
- * Returns a new MediaQueryList object that can then be used to determine if the document matches the media query string.
- *
- * @param mediaQueryString A string specifying the media query to parse into a MediaQueryList.
- * @returns A new MediaQueryList.
- */
- matchMedia(mediaQueryString: string): MediaQueryList;
- /**
- * Sets a timer which executes a function once the timer expires.
- *
- * @override
- * @param callback Function to be executed.
- * @param [delay=0] Delay in ms.
- * @param args Arguments passed to the callback function.
- * @returns Timeout ID.
- */
- setTimeout(callback: Function, delay?: number, ...args: unknown[]): NodeJS.Timeout;
- /**
- * Cancels a timeout previously established by calling setTimeout().
- *
- * @override
- * @param id ID of the timeout.
- */
- clearTimeout(id: NodeJS.Timeout): void;
- /**
- * Calls a function with a fixed time delay between each call.
- *
- * @override
- * @param callback Function to be executed.
- * @param [delay=0] Delay in ms.
- * @param args Arguments passed to the callback function.
- * @returns Interval ID.
- */
- setInterval(callback: Function, delay?: number, ...args: unknown[]): NodeJS.Timeout;
- /**
- * Cancels a timed repeating action which was previously established by a call to setInterval().
- *
- * @override
- * @param id ID of the interval.
- */
- clearInterval(id: NodeJS.Timeout): void;
- /**
- * Mock animation frames with timeouts.
- *
- * @override
- * @param callback Callback.
- * @returns Timeout ID.
- */
- requestAnimationFrame(callback: (timestamp: number) => void): NodeJS.Timeout;
- /**
- * Mock animation frames with timeouts.
- *
- * @override
- * @param id Timeout ID.
- */
- cancelAnimationFrame(id: NodeJS.Timeout): void;
- /**
- * This method provides an easy, logical way to fetch resources asynchronously across the network.
- *
- * @override
- * @param url URL.
- * @param [init] Init.
- * @returns Promise.
- */
- fetch(url: RequestInfo, init?: IRequestInit): Promise<IResponse>;
- /**
- * Creates a Base64-encoded ASCII string from a binary string (i.e., a string in which each character in the string is treated as a byte of binary data).
- *
- * @see https://developer.mozilla.org/en-US/docs/Web/API/btoa
- * @param data Binay data.
- * @returns Base64-encoded string.
- */
- btoa(data: unknown): string;
- /**
- * Decodes a string of data which has been encoded using Base64 encoding.
- *
- * @see https://developer.mozilla.org/en-US/docs/Web/API/atob
- * @see https://infra.spec.whatwg.org/#forgiving-base64-encode.
- * @see Https://html.spec.whatwg.org/multipage/webappapis.html#btoa.
- * @param data Binay string.
- * @returns An ASCII string containing decoded data from encodedData.
- */
- atob(data: unknown): string;
- /**
- * Safely enables cross-origin communication between Window objects; e.g., between a page and a pop-up that it spawned, or between a page and an iframe embedded within it.
- *
- * @param message Message.
- * @param [targetOrigin=*] Target origin.
- * @param _transfer Transfer. Not implemented.
- */
- postMessage(message: unknown, targetOrigin?: string, _transfer?: unknown[]): void;
- /**
- * Setup of VM context.
- */
- protected _setupVMContext(): void;
- }
|