diff --git a/types/jsdom/.eslintrc.json b/types/jsdom/.eslintrc.json
deleted file mode 100644
index e6397a882232d2..00000000000000
--- a/types/jsdom/.eslintrc.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "rules": {
- "@definitelytyped/no-single-declare-module": "off"
- }
-}
diff --git a/types/jsdom/base.d.ts b/types/jsdom/base.d.ts
deleted file mode 100644
index c2ac5fc638deab..00000000000000
--- a/types/jsdom/base.d.ts
+++ /dev/null
@@ -1,458 +0,0 @@
-///
-///
-///
-
-import { EventEmitter } from "events";
-import { Token } from "parse5";
-import * as tough from "tough-cookie";
-import { Dispatcher } from "undici-types";
-import { Context } from "vm";
-
-// Needed to allow adding properties to `DOMWindow` that are only supported
-// in newer TypeScript versions:
-// eslint-disable-next-line @definitelytyped/no-declare-current-package
-declare module "jsdom" {
- const toughCookie: typeof tough;
- class CookieJar extends tough.CookieJar {}
-
- interface AbortablePromise extends Promise {
- abort(): void;
- }
-
- class JSDOM {
- constructor(html?: string | Buffer | BinaryData, options?: ConstructorOptions);
-
- static fromURL(url: string, options?: BaseOptions): Promise;
- static fromFile(url: string, options?: FileOptions): Promise;
- static fragment(html: string): DocumentFragment;
-
- readonly window: DOMWindow;
- readonly virtualConsole: VirtualConsole;
- readonly cookieJar: CookieJar;
-
- /**
- * The serialize() method will return the HTML serialization of the document, including the doctype.
- */
- serialize(): string;
-
- /**
- * The nodeLocation() method will find where a DOM node is within the source document,
- * returning the parse5 location info for the node.
- *
- * @throws {Error} If the JSDOM was not created with `includeNodeLocations`
- */
- nodeLocation(node: Node): Token.Location | null | undefined;
-
- /**
- * The built-in `vm` module of Node.js is what underpins JSDOM's script-running magic.
- * Some advanced use cases, like pre-compiling a script and then running it multiple
- * times, benefit from using the `vm` module directly with a jsdom-created `Window`.
- *
- * @throws {TypeError} If the `JSDOM` instance was created without `runScripts` set, or if you are using JSDOM in a web browser.
- */
- getInternalVMContext(): Context;
-
- /**
- * The reconfigure method allows changing the `window.top` and url from the outside.
- */
- reconfigure(settings: ReconfigureSettings): void;
- }
-
- class VirtualConsole extends EventEmitter {
- on(method: K, callback: Console[K]): this;
- on(event: "jsdomError", callback: (e: Error) => void): this;
-
- forwardTo(console: Console, options?: VirtualConsoleForwardToOptions): this;
- }
-
- type BinaryData = ArrayBufferLike | NodeJS.ArrayBufferView;
- interface BaseOptions {
- /**
- * referrer just affects the value read from document.referrer.
- * It defaults to no referrer (which reflects as the empty string).
- */
- referrer?: string | undefined;
-
- /**
- * `includeNodeLocations` preserves the location info produced by the HTML parser,
- * allowing you to retrieve it with the nodeLocation() method (described below).
- *
- * It defaults to false to give the best performance,
- * and cannot be used with an XML content type since our XML parser does not support location info.
- *
- * @default false
- */
- includeNodeLocations?: boolean | undefined;
- runScripts?: "dangerously" | "outside-only" | undefined;
- resources?: "usable" | ResourcesOptions | undefined;
- virtualConsole?: VirtualConsole | undefined;
- cookieJar?: CookieJar | undefined;
-
- /**
- * jsdom does not have the capability to render visual content, and will act like a headless browser by default.
- * It provides hints to web pages through APIs such as document.hidden that their content is not visible.
- *
- * When the `pretendToBeVisual` option is set to `true`, jsdom will pretend that it is rendering and displaying
- * content.
- *
- * @default false
- */
- pretendToBeVisual?: boolean | undefined;
- beforeParse?(window: DOMWindow): void;
- }
-
- interface FileOptions extends BaseOptions {
- /**
- * url sets the value returned by window.location, document.URL, and document.documentURI,
- * and affects things like resolution of relative URLs within the document
- * and the same-origin restrictions and referrer used while fetching subresources.
- * It will default to a file URL corresponding to the given filename, instead of to "about:blank".
- */
- url?: string | undefined;
-
- /**
- * contentType affects the value read from document.contentType, and how the document is parsed: as HTML or as XML.
- * Values that are not "text/html" or an XML mime type will throw. It will default to "application/xhtml+xml" if
- * the given filename ends in .xhtml or .xml; otherwise it will continue to default to "text/html".
- */
- contentType?: string | undefined;
- }
-
- interface ConstructorOptions extends BaseOptions {
- /**
- * url sets the value returned by window.location, document.URL, and document.documentURI,
- * and affects things like resolution of relative URLs within the document
- * and the same-origin restrictions and referrer used while fetching subresources.
- * It defaults to "about:blank".
- */
- url?: string | undefined;
-
- /**
- * contentType affects the value read from document.contentType, and how the document is parsed: as HTML or as XML.
- * Values that are not "text/html" or an XML mime type will throw. It defaults to "text/html".
- */
- contentType?: string | undefined;
-
- /**
- * The maximum size in code units for the separate storage areas used by localStorage and sessionStorage.
- * Attempts to store data larger than this limit will cause a DOMException to be thrown. By default, it is set
- * to 5,000,000 code units per origin, as inspired by the HTML specification.
- *
- * @default 5_000_000
- */
- storageQuota?: number | undefined;
- }
-
- interface RequestInterceptorContext {
- element: HTMLElement | null;
- }
- type RequestInterceptorCallback = (
- request: Request,
- context: RequestInterceptorContext,
- // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
- ) => void | undefined | Response | Promise;
- function requestInterceptor(fn: RequestInterceptorCallback): Dispatcher.DispatchInterceptor;
-
- type SupportedContentTypes =
- | "text/html"
- | "application/xhtml+xml"
- | "application/xml"
- | "text/xml"
- | "image/svg+xml";
-
- type JSDOMError =
- | "css-parsing"
- | "not-implemented"
- | "resource-loading"
- | "unhandled-exception";
-
- interface VirtualConsoleForwardToOptions {
- jsdomErrors?: JSDOMError[] | "none" | undefined;
- }
-
- interface ReconfigureSettings {
- windowTop?: DOMWindow | undefined;
- url?: string | undefined;
- }
-
- interface ResourcesOptions {
- /**
- * userAgent affects the value read from navigator.userAgent, as well as the User-Agent header sent while fetching subresources.
- *
- * @default
- * `Mozilla/5.0 (${process.platform}) AppleWebKit/537.36 (KHTML, like Gecko) jsdom/${jsdomVersion}`
- */
- userAgent?: string | undefined;
- dispatcher?: Dispatcher | undefined;
- interceptors?: Dispatcher.DispatcherComposeInterceptor[] | undefined;
- }
-
- interface DOMWindow extends Omit {
- [key: string]: any;
-
- /* node_modules/jsdom/browser/Window.js */
- Window: typeof Window;
- readonly top: DOMWindow;
- readonly self: DOMWindow;
- readonly window: DOMWindow;
-
- /* ECMAScript Globals */
- globalThis: DOMWindow;
- readonly ["Infinity"]: number;
- readonly ["NaN"]: number;
- readonly undefined: undefined;
-
- eval(script: string): unknown;
- parseInt(s: string, radix?: number): number;
- parseFloat(string: string): number;
- isNaN(number: number): boolean;
- isFinite(number: number): boolean;
- decodeURI(encodedURI: string): string;
- decodeURIComponent(encodedURIComponent: string): string;
- encodeURI(uri: string): string;
- encodeURIComponent(uriComponent: string | number | boolean): string;
- escape(string: string): string;
- unescape(string: string): string;
-
- Array: typeof Array;
- ArrayBuffer: typeof ArrayBuffer;
- Atomics: typeof Atomics;
- BigInt: typeof BigInt;
- BigInt64Array: typeof BigInt64Array;
- BigUint64Array: typeof BigUint64Array;
- Boolean: typeof Boolean;
- DataView: typeof DataView;
- Date: typeof Date;
- Error: typeof Error;
- EvalError: typeof EvalError;
- Float32Array: typeof Float32Array;
- Float64Array: typeof Float64Array;
- Function: typeof Function;
- Int16Array: typeof Int16Array;
- Int32Array: typeof Int32Array;
- Int8Array: typeof Int8Array;
- Intl: typeof Intl;
- JSON: typeof JSON;
- Map: typeof Map;
- Math: typeof Math;
- Number: typeof Number;
- Object: typeof Object;
- Promise: typeof Promise;
- Proxy: typeof Proxy;
- RangeError: typeof RangeError;
- ReferenceError: typeof ReferenceError;
- Reflect: typeof Reflect;
- RegExp: typeof RegExp;
- Set: typeof Set;
- SharedArrayBuffer: typeof SharedArrayBuffer;
- String: typeof String;
- Symbol: typeof Symbol;
- SyntaxError: typeof SyntaxError;
- TypeError: typeof TypeError;
- URIError: typeof URIError;
- Uint16Array: typeof Uint16Array;
- Uint32Array: typeof Uint32Array;
- Uint8Array: typeof Uint8Array;
- Uint8ClampedArray: typeof Uint8ClampedArray;
- WeakMap: typeof WeakMap;
- WeakSet: typeof WeakSet;
- WebAssembly: typeof WebAssembly;
-
- /* node_modules/jsdom/living/interfaces.js */
- DOMException: typeof DOMException;
-
- URL: typeof URL;
- URLSearchParams: typeof URLSearchParams;
-
- EventTarget: typeof EventTarget;
-
- NamedNodeMap: typeof NamedNodeMap;
- Node: typeof Node;
- Attr: typeof Attr;
- Element: typeof Element;
- DocumentFragment: typeof DocumentFragment;
- DOMImplementation: typeof DOMImplementation;
- Document: typeof Document;
- HTMLDocument: typeof HTMLDocument;
- XMLDocument: typeof XMLDocument;
- CharacterData: typeof CharacterData;
- Text: typeof Text;
- CDATASection: typeof CDATASection;
- ProcessingInstruction: typeof ProcessingInstruction;
- Comment: typeof Comment;
- DocumentType: typeof DocumentType;
- NodeList: typeof NodeList;
- HTMLCollection: typeof HTMLCollection;
- HTMLOptionsCollection: typeof HTMLOptionsCollection;
- DOMStringMap: typeof DOMStringMap;
- DOMTokenList: typeof DOMTokenList;
-
- StyleSheetList: typeof StyleSheetList;
-
- HTMLElement: typeof HTMLElement;
- HTMLHeadElement: typeof HTMLHeadElement;
- HTMLTitleElement: typeof HTMLTitleElement;
- HTMLBaseElement: typeof HTMLBaseElement;
- HTMLLinkElement: typeof HTMLLinkElement;
- HTMLMetaElement: typeof HTMLMetaElement;
- HTMLStyleElement: typeof HTMLStyleElement;
- HTMLBodyElement: typeof HTMLBodyElement;
- HTMLHeadingElement: typeof HTMLHeadingElement;
- HTMLParagraphElement: typeof HTMLParagraphElement;
- HTMLHRElement: typeof HTMLHRElement;
- HTMLPreElement: typeof HTMLPreElement;
- HTMLUListElement: typeof HTMLUListElement;
- HTMLOListElement: typeof HTMLOListElement;
- HTMLLIElement: typeof HTMLLIElement;
- HTMLMenuElement: typeof HTMLMenuElement;
- HTMLDListElement: typeof HTMLDListElement;
- HTMLDivElement: typeof HTMLDivElement;
- HTMLAnchorElement: typeof HTMLAnchorElement;
- HTMLAreaElement: typeof HTMLAreaElement;
- HTMLBRElement: typeof HTMLBRElement;
- HTMLButtonElement: typeof HTMLButtonElement;
- HTMLCanvasElement: typeof HTMLCanvasElement;
- HTMLDataElement: typeof HTMLDataElement;
- HTMLDataListElement: typeof HTMLDataListElement;
- HTMLDetailsElement: typeof HTMLDetailsElement;
- HTMLDialogElement: {
- new(): HTMLDialogElement;
- readonly prototype: HTMLDialogElement;
- };
- HTMLDirectoryElement: typeof HTMLDirectoryElement;
- HTMLFieldSetElement: typeof HTMLFieldSetElement;
- HTMLFontElement: typeof HTMLFontElement;
- HTMLFormElement: typeof HTMLFormElement;
- HTMLHtmlElement: typeof HTMLHtmlElement;
- HTMLImageElement: typeof HTMLImageElement;
- HTMLInputElement: typeof HTMLInputElement;
- HTMLLabelElement: typeof HTMLLabelElement;
- HTMLLegendElement: typeof HTMLLegendElement;
- HTMLMapElement: typeof HTMLMapElement;
- HTMLMarqueeElement: typeof HTMLMarqueeElement;
- HTMLMediaElement: typeof HTMLMediaElement;
- HTMLMeterElement: typeof HTMLMeterElement;
- HTMLModElement: typeof HTMLModElement;
- HTMLOptGroupElement: typeof HTMLOptGroupElement;
- HTMLOptionElement: typeof HTMLOptionElement;
- HTMLOutputElement: typeof HTMLOutputElement;
- HTMLPictureElement: typeof HTMLPictureElement;
- HTMLProgressElement: typeof HTMLProgressElement;
- HTMLQuoteElement: typeof HTMLQuoteElement;
- HTMLScriptElement: typeof HTMLScriptElement;
- HTMLSelectElement: typeof HTMLSelectElement;
- HTMLSlotElement: typeof HTMLSlotElement;
- HTMLSourceElement: typeof HTMLSourceElement;
- HTMLSpanElement: typeof HTMLSpanElement;
- HTMLTableCaptionElement: typeof HTMLTableCaptionElement;
- HTMLTableCellElement: typeof HTMLTableCellElement;
- HTMLTableColElement: typeof HTMLTableColElement;
- HTMLTableElement: typeof HTMLTableElement;
- HTMLTimeElement: typeof HTMLTimeElement;
- HTMLTableRowElement: typeof HTMLTableRowElement;
- HTMLTableSectionElement: typeof HTMLTableSectionElement;
- HTMLTemplateElement: typeof HTMLTemplateElement;
- HTMLTextAreaElement: typeof HTMLTextAreaElement;
- HTMLUnknownElement: typeof HTMLUnknownElement;
- HTMLFrameElement: typeof HTMLFrameElement;
- HTMLFrameSetElement: typeof HTMLFrameSetElement;
- HTMLIFrameElement: typeof HTMLIFrameElement;
- HTMLEmbedElement: typeof HTMLEmbedElement;
- HTMLObjectElement: typeof HTMLObjectElement;
- HTMLParamElement: typeof HTMLParamElement;
- HTMLVideoElement: typeof HTMLVideoElement;
- HTMLAudioElement: typeof HTMLAudioElement;
- HTMLTrackElement: typeof HTMLTrackElement;
-
- SVGElement: typeof SVGElement;
- SVGGraphicsElement: typeof SVGGraphicsElement;
- SVGSVGElement: typeof SVGSVGElement;
- SVGTitleElement: typeof SVGTitleElement;
- SVGAnimatedString: typeof SVGAnimatedString;
- SVGNumber: typeof SVGNumber;
- SVGStringList: typeof SVGStringList;
-
- Event: typeof Event;
- CloseEvent: typeof CloseEvent;
- CustomEvent: typeof CustomEvent;
- MessageEvent: typeof MessageEvent;
- ErrorEvent: typeof ErrorEvent;
- HashChangeEvent: typeof HashChangeEvent;
- PopStateEvent: typeof PopStateEvent;
- StorageEvent: typeof StorageEvent;
- ProgressEvent: typeof ProgressEvent;
- PageTransitionEvent: typeof PageTransitionEvent;
-
- UIEvent: typeof UIEvent;
- FocusEvent: typeof FocusEvent;
- MouseEvent: typeof MouseEvent;
- KeyboardEvent: typeof KeyboardEvent;
- TouchEvent: typeof TouchEvent;
- CompositionEvent: typeof CompositionEvent;
- WheelEvent: typeof WheelEvent;
-
- BarProp: typeof BarProp;
- Location: typeof Location;
- History: typeof History;
- Screen: typeof Screen;
- Performance: typeof Performance;
- Navigator: typeof Navigator;
-
- PluginArray: typeof PluginArray;
- MimeTypeArray: typeof MimeTypeArray;
- Plugin: typeof Plugin;
- MimeType: typeof MimeType;
-
- FileReader: typeof FileReader;
- Blob: typeof Blob;
- File: typeof File;
- FileList: typeof FileList;
- ValidityState: typeof ValidityState;
-
- DOMParser: typeof DOMParser;
- XMLSerializer: typeof XMLSerializer;
-
- FormData: typeof FormData;
- XMLHttpRequestEventTarget: typeof XMLHttpRequestEventTarget;
- XMLHttpRequestUpload: typeof XMLHttpRequestUpload;
- XMLHttpRequest: typeof XMLHttpRequest;
- WebSocket: typeof WebSocket;
-
- NodeFilter: typeof NodeFilter;
- NodeIterator: typeof NodeIterator;
- TreeWalker: typeof TreeWalker;
-
- AbstractRange: typeof AbstractRange;
- Range: typeof Range;
- StaticRange: typeof StaticRange;
- Selection: typeof Selection;
-
- Storage: typeof Storage;
-
- CustomElementRegistry: typeof CustomElementRegistry;
- ShadowRoot: typeof ShadowRoot;
-
- MutationObserver: typeof MutationObserver;
- MutationRecord: typeof MutationRecord;
-
- Headers: typeof Headers;
- AbortController: typeof AbortController;
- AbortSignal: typeof AbortSignal;
-
- /* node_modules/jsdom/level2/style.js */
- StyleSheet: typeof StyleSheet;
- MediaList: typeof MediaList;
- CSSStyleSheet: typeof CSSStyleSheet;
- CSSRule: typeof CSSRule;
- CSSStyleRule: typeof CSSStyleRule;
- CSSMediaRule: typeof CSSMediaRule;
- CSSImportRule: typeof CSSImportRule;
- CSSStyleDeclaration: typeof CSSStyleDeclaration;
-
- /* node_modules/jsdom/level3/xpath.js */
- // XPathException: typeof XPathException;
- XPathExpression: typeof XPathExpression;
- XPathResult: typeof XPathResult;
- XPathEvaluator: typeof XPathEvaluator;
- }
-}
diff --git a/types/jsdom/index.d.ts b/types/jsdom/index.d.ts
index 9c93042dbb3f5a..81f2649affc245 100644
--- a/types/jsdom/index.d.ts
+++ b/types/jsdom/index.d.ts
@@ -1,18 +1,470 @@
-///
+///
+///
+///
-// eslint-disable-next-line @definitelytyped/no-declare-current-package
-declare module "jsdom" {
- interface DOMWindow {
- FinalizationRegistry: FinalizationRegistryConstructor;
- WeakRef: WeakRefConstructor;
- InputEvent: typeof InputEvent;
- External: typeof External;
- }
+import { EventEmitter } from "events";
+import { Token } from "parse5";
+import * as tough from "tough-cookie";
+import { Dispatcher } from "undici-types";
+import { Context } from "vm";
+
+export const toughCookie: typeof tough;
+export class CookieJar extends tough.CookieJar {}
+
+export interface AbortablePromise extends Promise {
+ abort(): void;
+}
+
+export class JSDOM {
+ constructor(html?: string | Buffer | BinaryData, options?: ConstructorOptions);
+
+ static fromURL(url: string, options?: BaseOptions): Promise;
+ static fromFile(url: string, options?: FileOptions): Promise;
+ static fragment(html: string): DocumentFragment;
+
+ readonly window: DOMWindow;
+ readonly virtualConsole: VirtualConsole;
+ readonly cookieJar: CookieJar;
+
+ /**
+ * The serialize() method will return the HTML serialization of the document, including the doctype.
+ */
+ serialize(): string;
+
+ /**
+ * The nodeLocation() method will find where a DOM node is within the source document,
+ * returning the parse5 location info for the node.
+ *
+ * @throws {Error} If the JSDOM was not created with `includeNodeLocations`
+ */
+ nodeLocation(node: Node): Token.Location | null | undefined;
+
+ /**
+ * The built-in `vm` module of Node.js is what underpins JSDOM's script-running magic.
+ * Some advanced use cases, like pre-compiling a script and then running it multiple
+ * times, benefit from using the `vm` module directly with a jsdom-created `Window`.
+ *
+ * @throws {TypeError} If the `JSDOM` instance was created without `runScripts` set, or if you are using JSDOM in a web browser.
+ */
+ getInternalVMContext(): Context;
+
+ /**
+ * The reconfigure method allows changing the `window.top` and url from the outside.
+ */
+ reconfigure(settings: ReconfigureSettings): void;
+}
+
+export class VirtualConsole extends EventEmitter {
+ on(method: K, callback: Console[K]): this;
+ on(event: "jsdomError", callback: (e: Error) => void): this;
+
+ forwardTo(console: Console, options?: VirtualConsoleForwardToOptions): this;
+}
+
+export type BinaryData = ArrayBufferLike | NodeJS.ArrayBufferView;
+
+export interface BaseOptions {
+ /**
+ * referrer just affects the value read from document.referrer.
+ * It defaults to no referrer (which reflects as the empty string).
+ */
+ referrer?: string | undefined;
+
+ /**
+ * `includeNodeLocations` preserves the location info produced by the HTML parser,
+ * allowing you to retrieve it with the nodeLocation() method (described below).
+ *
+ * It defaults to false to give the best performance,
+ * and cannot be used with an XML content type since our XML parser does not support location info.
+ *
+ * @default false
+ */
+ includeNodeLocations?: boolean | undefined;
+ runScripts?: "dangerously" | "outside-only" | undefined;
+ resources?: "usable" | ResourcesOptions | undefined;
+ virtualConsole?: VirtualConsole | undefined;
+ cookieJar?: CookieJar | undefined;
+
+ /**
+ * jsdom does not have the capability to render visual content, and will act like a headless browser by default.
+ * It provides hints to web pages through APIs such as document.hidden that their content is not visible.
+ *
+ * When the `pretendToBeVisual` option is set to `true`, jsdom will pretend that it is rendering and displaying
+ * content.
+ *
+ * @default false
+ */
+ pretendToBeVisual?: boolean | undefined;
+ beforeParse?(window: DOMWindow): void;
+}
+
+export interface FileOptions extends BaseOptions {
+ /**
+ * url sets the value returned by window.location, document.URL, and document.documentURI,
+ * and affects things like resolution of relative URLs within the document
+ * and the same-origin restrictions and referrer used while fetching subresources.
+ * It will default to a file URL corresponding to the given filename, instead of to "about:blank".
+ */
+ url?: string | undefined;
+
+ /**
+ * contentType affects the value read from document.contentType, and how the document is parsed: as HTML or as XML.
+ * Values that are not "text/html" or an XML mime type will throw. It will default to "application/xhtml+xml" if
+ * the given filename ends in .xhtml or .xml; otherwise it will continue to default to "text/html".
+ */
+ contentType?: string | undefined;
+}
+
+export interface ConstructorOptions extends BaseOptions {
+ /**
+ * url sets the value returned by window.location, document.URL, and document.documentURI,
+ * and affects things like resolution of relative URLs within the document
+ * and the same-origin restrictions and referrer used while fetching subresources.
+ * It defaults to "about:blank".
+ */
+ url?: string | undefined;
+
+ /**
+ * contentType affects the value read from document.contentType, and how the document is parsed: as HTML or as XML.
+ * Values that are not "text/html" or an XML mime type will throw. It defaults to "text/html".
+ */
+ contentType?: string | undefined;
+
+ /**
+ * The maximum size in code units for the separate storage areas used by localStorage and sessionStorage.
+ * Attempts to store data larger than this limit will cause a DOMException to be thrown. By default, it is set
+ * to 5,000,000 code units per origin, as inspired by the HTML specification.
+ *
+ * @default 5_000_000
+ */
+ storageQuota?: number | undefined;
+}
+
+export interface RequestInterceptorContext {
+ element: HTMLElement | null;
+}
+
+export type RequestInterceptorCallback = (
+ request: Request,
+ context: RequestInterceptorContext,
+ // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
+) => void | undefined | Response | Promise;
+
+export function requestInterceptor(fn: RequestInterceptorCallback): Dispatcher.DispatchInterceptor;
+
+export type SupportedContentTypes =
+ | "text/html"
+ | "application/xhtml+xml"
+ | "application/xml"
+ | "text/xml"
+ | "image/svg+xml";
+
+export type JSDOMError =
+ | "css-parsing"
+ | "not-implemented"
+ | "resource-loading"
+ | "unhandled-exception";
+
+export interface VirtualConsoleForwardToOptions {
+ jsdomErrors?: JSDOMError[] | "none" | undefined;
+}
+
+export interface ReconfigureSettings {
+ windowTop?: DOMWindow | undefined;
+ url?: string | undefined;
+}
+
+export interface ResourcesOptions {
+ /**
+ * userAgent affects the value read from navigator.userAgent, as well as the User-Agent header sent while fetching subresources.
+ *
+ * @default
+ * `Mozilla/5.0 (${process.platform}) AppleWebKit/537.36 (KHTML, like Gecko) jsdom/${jsdomVersion}`
+ */
+ userAgent?: string | undefined;
+ dispatcher?: Dispatcher | undefined;
+ interceptors?: Dispatcher.DispatcherComposeInterceptor[] | undefined;
+}
+
+export interface DOMWindow extends Omit {
+ [key: string]: any;
+ [index: number]: any;
+
+ /* node_modules/jsdom/browser/Window.js */
+ Window: typeof Window;
+ readonly top: DOMWindow;
+ readonly self: DOMWindow;
+ readonly window: DOMWindow;
+
+ /* ECMAScript Globals */
+ globalThis: DOMWindow;
+ readonly ["Infinity"]: number;
+ readonly ["NaN"]: number;
+ readonly undefined: undefined;
+
+ eval(script: string): unknown;
+ parseInt(s: string, radix?: number): number;
+ parseFloat(string: string): number;
+ isNaN(number: number): boolean;
+ isFinite(number: number): boolean;
+ decodeURI(encodedURI: string): string;
+ decodeURIComponent(encodedURIComponent: string): string;
+ encodeURI(uri: string): string;
+ encodeURIComponent(uriComponent: string | number | boolean): string;
+ escape(string: string): string;
+ unescape(string: string): string;
+
+ Array: typeof Array;
+ ArrayBuffer: typeof ArrayBuffer;
+ Atomics: typeof Atomics;
+ BigInt: typeof BigInt;
+ BigInt64Array: typeof BigInt64Array;
+ BigUint64Array: typeof BigUint64Array;
+ Boolean: typeof Boolean;
+ DataView: typeof DataView;
+ Date: typeof Date;
+ Error: typeof Error;
+ EvalError: typeof EvalError;
+ FinalizationRegistry: FinalizationRegistryConstructor;
+ Float32Array: typeof Float32Array;
+ Float64Array: typeof Float64Array;
+ Function: typeof Function;
+ Int16Array: typeof Int16Array;
+ Int32Array: typeof Int32Array;
+ Int8Array: typeof Int8Array;
+ Intl: typeof Intl;
+ JSON: typeof JSON;
+ Map: typeof Map;
+ Math: typeof Math;
+ Number: typeof Number;
+ Object: typeof Object;
+ Promise: typeof Promise;
+ Proxy: typeof Proxy;
+ RangeError: typeof RangeError;
+ ReferenceError: typeof ReferenceError;
+ Reflect: typeof Reflect;
+ RegExp: typeof RegExp;
+ Set: typeof Set;
+ SharedArrayBuffer: typeof SharedArrayBuffer;
+ String: typeof String;
+ Symbol: typeof Symbol;
+ SyntaxError: typeof SyntaxError;
+ TypeError: typeof TypeError;
+ URIError: typeof URIError;
+ Uint16Array: typeof Uint16Array;
+ Uint32Array: typeof Uint32Array;
+ Uint8Array: typeof Uint8Array;
+ Uint8ClampedArray: typeof Uint8ClampedArray;
+ WeakMap: typeof WeakMap;
+ WeakRef: WeakRefConstructor;
+ WeakSet: typeof WeakSet;
+ WebAssembly: typeof WebAssembly;
+
+ /* node_modules/jsdom/living/interfaces.js */
+ DOMException: typeof DOMException;
+
+ URL: typeof URL;
+ URLSearchParams: typeof URLSearchParams;
+
+ EventTarget: typeof EventTarget;
+
+ NamedNodeMap: typeof NamedNodeMap;
+ Node: typeof Node;
+ Attr: typeof Attr;
+ Element: typeof Element;
+ DocumentFragment: typeof DocumentFragment;
+ DOMImplementation: typeof DOMImplementation;
+ Document: typeof Document;
+ HTMLDocument: typeof HTMLDocument;
+ XMLDocument: typeof XMLDocument;
+ CharacterData: typeof CharacterData;
+ Text: typeof Text;
+ CDATASection: typeof CDATASection;
+ ProcessingInstruction: typeof ProcessingInstruction;
+ Comment: typeof Comment;
+ DocumentType: typeof DocumentType;
+ NodeList: typeof NodeList;
+ HTMLCollection: typeof HTMLCollection;
+ HTMLOptionsCollection: typeof HTMLOptionsCollection;
+ DOMStringMap: typeof DOMStringMap;
+ DOMTokenList: typeof DOMTokenList;
+
+ StyleSheetList: typeof StyleSheetList;
+
+ HTMLElement: typeof HTMLElement;
+ HTMLHeadElement: typeof HTMLHeadElement;
+ HTMLTitleElement: typeof HTMLTitleElement;
+ HTMLBaseElement: typeof HTMLBaseElement;
+ HTMLLinkElement: typeof HTMLLinkElement;
+ HTMLMetaElement: typeof HTMLMetaElement;
+ HTMLStyleElement: typeof HTMLStyleElement;
+ HTMLBodyElement: typeof HTMLBodyElement;
+ HTMLHeadingElement: typeof HTMLHeadingElement;
+ HTMLParagraphElement: typeof HTMLParagraphElement;
+ HTMLHRElement: typeof HTMLHRElement;
+ HTMLPreElement: typeof HTMLPreElement;
+ HTMLUListElement: typeof HTMLUListElement;
+ HTMLOListElement: typeof HTMLOListElement;
+ HTMLLIElement: typeof HTMLLIElement;
+ HTMLMenuElement: typeof HTMLMenuElement;
+ HTMLDListElement: typeof HTMLDListElement;
+ HTMLDivElement: typeof HTMLDivElement;
+ HTMLAnchorElement: typeof HTMLAnchorElement;
+ HTMLAreaElement: typeof HTMLAreaElement;
+ HTMLBRElement: typeof HTMLBRElement;
+ HTMLButtonElement: typeof HTMLButtonElement;
+ HTMLCanvasElement: typeof HTMLCanvasElement;
+ HTMLDataElement: typeof HTMLDataElement;
+ HTMLDataListElement: typeof HTMLDataListElement;
+ HTMLDetailsElement: typeof HTMLDetailsElement;
+ HTMLDialogElement: {
+ new(): HTMLDialogElement;
+ readonly prototype: HTMLDialogElement;
+ };
+ HTMLDirectoryElement: typeof HTMLDirectoryElement;
+ HTMLFieldSetElement: typeof HTMLFieldSetElement;
+ HTMLFontElement: typeof HTMLFontElement;
+ HTMLFormElement: typeof HTMLFormElement;
+ HTMLHtmlElement: typeof HTMLHtmlElement;
+ HTMLImageElement: typeof HTMLImageElement;
+ HTMLInputElement: typeof HTMLInputElement;
+ InputEvent: typeof InputEvent;
+ HTMLLabelElement: typeof HTMLLabelElement;
+ HTMLLegendElement: typeof HTMLLegendElement;
+ HTMLMapElement: typeof HTMLMapElement;
+ HTMLMarqueeElement: typeof HTMLMarqueeElement;
+ HTMLMediaElement: typeof HTMLMediaElement;
+ HTMLMeterElement: typeof HTMLMeterElement;
+ HTMLModElement: typeof HTMLModElement;
+ HTMLOptGroupElement: typeof HTMLOptGroupElement;
+ HTMLOptionElement: typeof HTMLOptionElement;
+ HTMLOutputElement: typeof HTMLOutputElement;
+ HTMLPictureElement: typeof HTMLPictureElement;
+ HTMLProgressElement: typeof HTMLProgressElement;
+ HTMLQuoteElement: typeof HTMLQuoteElement;
+ HTMLScriptElement: typeof HTMLScriptElement;
+ HTMLSelectElement: typeof HTMLSelectElement;
+ HTMLSlotElement: typeof HTMLSlotElement;
+ HTMLSourceElement: typeof HTMLSourceElement;
+ HTMLSpanElement: typeof HTMLSpanElement;
+ HTMLTableCaptionElement: typeof HTMLTableCaptionElement;
+ HTMLTableCellElement: typeof HTMLTableCellElement;
+ HTMLTableColElement: typeof HTMLTableColElement;
+ HTMLTableElement: typeof HTMLTableElement;
+ HTMLTimeElement: typeof HTMLTimeElement;
+ HTMLTableRowElement: typeof HTMLTableRowElement;
+ HTMLTableSectionElement: typeof HTMLTableSectionElement;
+ HTMLTemplateElement: typeof HTMLTemplateElement;
+ HTMLTextAreaElement: typeof HTMLTextAreaElement;
+ HTMLUnknownElement: typeof HTMLUnknownElement;
+ HTMLFrameElement: typeof HTMLFrameElement;
+ HTMLFrameSetElement: typeof HTMLFrameSetElement;
+ HTMLIFrameElement: typeof HTMLIFrameElement;
+ HTMLEmbedElement: typeof HTMLEmbedElement;
+ HTMLObjectElement: typeof HTMLObjectElement;
+ HTMLParamElement: typeof HTMLParamElement;
+ HTMLVideoElement: typeof HTMLVideoElement;
+ HTMLAudioElement: typeof HTMLAudioElement;
+ HTMLTrackElement: typeof HTMLTrackElement;
+
+ SVGElement: typeof SVGElement;
+ SVGGraphicsElement: typeof SVGGraphicsElement;
+ SVGSVGElement: typeof SVGSVGElement;
+ SVGTitleElement: typeof SVGTitleElement;
+ SVGAnimatedString: typeof SVGAnimatedString;
+ SVGNumber: typeof SVGNumber;
+ SVGStringList: typeof SVGStringList;
+
+ Event: typeof Event;
+ CloseEvent: typeof CloseEvent;
+ CustomEvent: typeof CustomEvent;
+ MessageEvent: typeof MessageEvent;
+ ErrorEvent: typeof ErrorEvent;
+ HashChangeEvent: typeof HashChangeEvent;
+ PopStateEvent: typeof PopStateEvent;
+ StorageEvent: typeof StorageEvent;
+ ProgressEvent: typeof ProgressEvent;
+ PageTransitionEvent: typeof PageTransitionEvent;
+
+ UIEvent: typeof UIEvent;
+ FocusEvent: typeof FocusEvent;
+ MouseEvent: typeof MouseEvent;
+ KeyboardEvent: typeof KeyboardEvent;
+ TouchEvent: typeof TouchEvent;
+ CompositionEvent: typeof CompositionEvent;
+ WheelEvent: typeof WheelEvent;
+
+ BarProp: typeof BarProp;
+ External: typeof External;
+ Location: typeof Location;
+ History: typeof History;
+ Screen: typeof Screen;
+ Performance: typeof Performance;
+ Navigator: typeof Navigator;
+
+ PluginArray: typeof PluginArray;
+ MimeTypeArray: typeof MimeTypeArray;
+ Plugin: typeof Plugin;
+ MimeType: typeof MimeType;
+
+ FileReader: typeof FileReader;
+ Blob: typeof Blob;
+ File: typeof File;
+ FileList: typeof FileList;
+ ValidityState: typeof ValidityState;
+
+ DOMParser: typeof DOMParser;
+ XMLSerializer: typeof XMLSerializer;
+
+ FormData: typeof FormData;
+ XMLHttpRequestEventTarget: typeof XMLHttpRequestEventTarget;
+ XMLHttpRequestUpload: typeof XMLHttpRequestUpload;
+ XMLHttpRequest: typeof XMLHttpRequest;
+ WebSocket: typeof WebSocket;
+
+ NodeFilter: typeof NodeFilter;
+ NodeIterator: typeof NodeIterator;
+ TreeWalker: typeof TreeWalker;
+
+ AbstractRange: typeof AbstractRange;
+ Range: typeof Range;
+ StaticRange: typeof StaticRange;
+ Selection: typeof Selection;
+
+ Storage: typeof Storage;
+
+ CustomElementRegistry: typeof CustomElementRegistry;
+ ShadowRoot: typeof ShadowRoot;
+
+ MutationObserver: typeof MutationObserver;
+ MutationRecord: typeof MutationRecord;
+
+ Headers: typeof Headers;
+ AbortController: typeof AbortController;
+ AbortSignal: typeof AbortSignal;
+
+ /* node_modules/jsdom/level2/style.js */
+ StyleSheet: typeof StyleSheet;
+ MediaList: typeof MediaList;
+ CSSStyleSheet: typeof CSSStyleSheet;
+ CSSRule: typeof CSSRule;
+ CSSStyleRule: typeof CSSStyleRule;
+ CSSMediaRule: typeof CSSMediaRule;
+ CSSImportRule: typeof CSSImportRule;
+ CSSStyleDeclaration: typeof CSSStyleDeclaration;
+
+ /* node_modules/jsdom/level3/xpath.js */
+ // XPathException: typeof XPathException;
+ XPathExpression: typeof XPathExpression;
+ XPathResult: typeof XPathResult;
+ XPathEvaluator: typeof XPathEvaluator;
}
// Necessary to avoid breaking dependents because of the dependency
// on the `ESNext.WeakRef` lib:
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
-interface FinalizationRegistryConstructor {}
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
-interface WeakRefConstructor {}
+declare global {
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
+ interface FinalizationRegistryConstructor {}
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
+ interface WeakRefConstructor {}
+}