// Copyright 2018-2025 the Deno authors. MIT license. // deno-lint-ignore-file no-explicit-any no-var /// /// /** @category Platform */ interface DOMException extends Error { readonly name: string; readonly message: string; /** @deprecated */ readonly code: number; readonly INDEX_SIZE_ERR: 1; readonly DOMSTRING_SIZE_ERR: 2; readonly HIERARCHY_REQUEST_ERR: 3; readonly WRONG_DOCUMENT_ERR: 4; readonly INVALID_CHARACTER_ERR: 5; readonly NO_DATA_ALLOWED_ERR: 6; readonly NO_MODIFICATION_ALLOWED_ERR: 7; readonly NOT_FOUND_ERR: 8; readonly NOT_SUPPORTED_ERR: 9; readonly INUSE_ATTRIBUTE_ERR: 10; readonly INVALID_STATE_ERR: 11; readonly SYNTAX_ERR: 12; readonly INVALID_MODIFICATION_ERR: 13; readonly NAMESPACE_ERR: 14; readonly INVALID_ACCESS_ERR: 15; readonly VALIDATION_ERR: 16; readonly TYPE_MISMATCH_ERR: 17; readonly SECURITY_ERR: 18; readonly NETWORK_ERR: 19; readonly ABORT_ERR: 20; readonly URL_MISMATCH_ERR: 21; readonly QUOTA_EXCEEDED_ERR: 22; readonly TIMEOUT_ERR: 23; readonly INVALID_NODE_TYPE_ERR: 24; readonly DATA_CLONE_ERR: 25; } /** @category Platform */ declare var DOMException: { readonly prototype: DOMException; new (message?: string, name?: string): DOMException; readonly INDEX_SIZE_ERR: 1; readonly DOMSTRING_SIZE_ERR: 2; readonly HIERARCHY_REQUEST_ERR: 3; readonly WRONG_DOCUMENT_ERR: 4; readonly INVALID_CHARACTER_ERR: 5; readonly NO_DATA_ALLOWED_ERR: 6; readonly NO_MODIFICATION_ALLOWED_ERR: 7; readonly NOT_FOUND_ERR: 8; readonly NOT_SUPPORTED_ERR: 9; readonly INUSE_ATTRIBUTE_ERR: 10; readonly INVALID_STATE_ERR: 11; readonly SYNTAX_ERR: 12; readonly INVALID_MODIFICATION_ERR: 13; readonly NAMESPACE_ERR: 14; readonly INVALID_ACCESS_ERR: 15; readonly VALIDATION_ERR: 16; readonly TYPE_MISMATCH_ERR: 17; readonly SECURITY_ERR: 18; readonly NETWORK_ERR: 19; readonly ABORT_ERR: 20; readonly URL_MISMATCH_ERR: 21; readonly QUOTA_EXCEEDED_ERR: 22; readonly TIMEOUT_ERR: 23; readonly INVALID_NODE_TYPE_ERR: 24; readonly DATA_CLONE_ERR: 25; }; /** @category Events */ interface EventInit { bubbles?: boolean; cancelable?: boolean; composed?: boolean; } /** An event which takes place in the DOM. * * @category Events */ interface Event { /** Returns true or false depending on how event was initialized. True if * event goes through its target's ancestors in reverse tree order, and * false otherwise. */ readonly bubbles: boolean; /** @deprecated */ cancelBubble: boolean; /** Returns true or false depending on how event was initialized. Its return * value does not always carry meaning, but true can indicate that part of the * operation during which event was dispatched, can be canceled by invoking * the preventDefault() method. */ readonly cancelable: boolean; /** Returns true or false depending on how event was initialized. True if * event invokes listeners past a ShadowRoot node that is the root of its * target, and false otherwise. */ readonly composed: boolean; /** Returns the object whose event listener's callback is currently being * invoked. */ readonly currentTarget: EventTarget | null; /** Returns true if preventDefault() was invoked successfully to indicate * cancellation, and false otherwise. */ readonly defaultPrevented: boolean; /** Returns the event's phase, which is one of NONE, CAPTURING_PHASE, * AT_TARGET, and BUBBLING_PHASE. */ readonly eventPhase: number; /** Returns true if event was dispatched by the user agent, and false * otherwise. */ readonly isTrusted: boolean; /** @deprecated */ returnValue: boolean; /** @deprecated */ readonly srcElement: EventTarget | null; /** Returns the object to which event is dispatched (its target). */ readonly target: EventTarget | null; /** Returns the event's timestamp as the number of milliseconds measured * relative to the time origin. */ readonly timeStamp: number; /** Returns the type of event, e.g. "click", "hashchange", or "submit". */ readonly type: string; /** Returns the invocation target objects of event's path (objects on which * listeners will be invoked), except for any nodes in shadow trees of which * the shadow root's mode is "closed" that are not reachable from event's * currentTarget. */ composedPath(): EventTarget[]; /** @deprecated */ initEvent(type: string, bubbles?: boolean, cancelable?: boolean): void; /** If invoked when the cancelable attribute value is true, and while * executing a listener for the event with passive set to false, signals to * the operation that caused event to be dispatched that it needs to be * canceled. */ preventDefault(): void; /** Invoking this method prevents event from reaching any registered event * listeners after the current one finishes running and, when dispatched in a * tree, also prevents event from reaching any other objects. */ stopImmediatePropagation(): void; /** When dispatched in a tree, invoking this method prevents event from * reaching any objects other than the current object. */ stopPropagation(): void; readonly NONE: 0; readonly CAPTURING_PHASE: 1; readonly AT_TARGET: 2; readonly BUBBLING_PHASE: 3; } /** An event which takes place in the DOM. * * @category Events */ declare var Event: { readonly prototype: Event; new (type: string, eventInitDict?: EventInit): Event; readonly NONE: 0; readonly CAPTURING_PHASE: 1; readonly AT_TARGET: 2; readonly BUBBLING_PHASE: 3; }; /** * EventTarget is a DOM interface implemented by objects that can receive events * and may have listeners for them. * * @category Events */ interface EventTarget { /** Appends an event listener for events whose type attribute value is type. * The callback argument sets the callback that will be invoked when the event * is dispatched. * * The options argument sets listener-specific options. For compatibility this * can be a boolean, in which case the method behaves exactly as if the value * was specified as options's capture. * * When set to true, options's capture prevents callback from being invoked * when the event's eventPhase attribute value is BUBBLING_PHASE. When false * (or not present), callback will not be invoked when event's eventPhase * attribute value is CAPTURING_PHASE. Either way, callback will be invoked if * event's eventPhase attribute value is AT_TARGET. * * When set to true, options's passive indicates that the callback will not * cancel the event by invoking preventDefault(). This is used to enable * performance optimizations described in ยง 2.8 Observing event listeners. * * When set to true, options's once indicates that the callback will only be * invoked once after which the event listener will be removed. * * The event listener is appended to target's event listener list and is not * appended if it has the same type, callback, and capture. */ addEventListener( type: string, listener: EventListenerOrEventListenerObject | null, options?: boolean | AddEventListenerOptions, ): void; /** Dispatches a synthetic event to event target and returns true if either * event's cancelable attribute value is false or its preventDefault() method * was not invoked, and false otherwise. */ dispatchEvent(event: Event): boolean; /** Removes the event listener in target's event listener list with the same * type, callback, and options. */ removeEventListener( type: string, callback: EventListenerOrEventListenerObject | null, options?: EventListenerOptions | boolean, ): void; } /** * EventTarget is a DOM interface implemented by objects that can receive events * and may have listeners for them. * * @category Events */ declare var EventTarget: { readonly prototype: EventTarget; new (): EventTarget; }; /** @category Events */ interface EventListener { /** * The `EventListener` interface represents a callback function to be called * whenever an event of a specific type occurs on a target object. * * This is a basic event listener, represented by a simple function * that receives an Event object as its only parameter. * * @example * ```ts * // Create an event listener function * const handleEvent = (event: Event) => { * console.log(`Event of type "${event.type}" occurred`); * console.log(`Event phase: ${event.eventPhase}`); * * // Access event properties * if (event.cancelable) { * event.preventDefault(); * } * }; * * // Attach the event listener to a target * const target = new EventTarget(); * target.addEventListener('custom', handleEvent); * * // Or create a listener inline * target.addEventListener('message', (event) => { * console.log('Message received:', event); * }); * ``` * * @category Events */ (evt: Event): void; } /** * The `EventListenerObject` interface represents an object that can handle events * dispatched by an `EventTarget` object. * * This interface provides an alternative to using a function as an event listener. * When implementing an object with this interface, the `handleEvent()` method * will be called when the event is triggered. * * @example * ```ts * // Creating an object that implements `EventListenerObject` * const myEventListener = { * handleEvent(event) { * console.log(`Event of type ${event.type} occurred`); * * // You can use 'this' to access other methods or properties * this.additionalProcessing(event); * }, * * additionalProcessing(event) { * // Additional event handling logic * console.log('Additional processing for:', event); * } * }; * * // Using with any EventTarget (server or client contexts) * const target = new EventTarget(); * target.addEventListener('message', myEventListener); * * // Later, to remove it: * target.removeEventListener('message', myEventListener); * ``` * * @category Events */ interface EventListenerObject { handleEvent(evt: Event): void; } /** @category Events */ type EventListenerOrEventListenerObject = | EventListener | EventListenerObject; /** * Options for configuring an event listener via `addEventListener`. * * This interface extends `EventListenerOptions` and provides additional configuration * options to control event listener behavior. * * @example * ```ts * eventTarget.addEventListener('message', handler, { * once: true, * passive: true, * signal: controller.signal * }); * ``` * * @category Events */ interface AddEventListenerOptions extends EventListenerOptions { /** * When set to true, the listener will automatically be removed after it has been invoked once. */ once?: boolean; /** * When set to true, indicates that the listener will never call `preventDefault()`. * This provides a performance optimization opportunity for event processing. * If a passive listener attempts to call `preventDefault()`, the call will be ignored * and a warning may be generated. */ passive?: boolean; /** * An `AbortSignal` that can be used to remove the event listener when aborted. * * @example * ```ts * const controller = new AbortController(); * eventTarget.addEventListener('message', handler, { signal: controller.signal }); * * // Later, to remove the listener: * controller.abort(); * ``` */ signal?: AbortSignal; } /** @category Events */ interface EventListenerOptions { capture?: boolean; } /** @category Events */ interface ProgressEventInit extends EventInit { lengthComputable?: boolean; loaded?: number; total?: number; } /** Events measuring progress of an underlying process, like an HTTP request * (for an XMLHttpRequest, or the loading of the underlying resource of an * ,