diff --git a/.flowconfig b/.flowconfig index 2a6e4bde51..0426bcc684 100644 --- a/.flowconfig +++ b/.flowconfig @@ -10,7 +10,7 @@ packages/*/build/** [options] emoji=true -builtin_lib=core-only +builtin_lib=flowlib-with-lib-dom-d-ts format.bracket_spacing=false munge_underscores=true diff --git a/flow-typed/environment/bom.js b/flow-typed/environment/bom.js deleted file mode 100644 index 17c0a908d2..0000000000 --- a/flow-typed/environment/bom.js +++ /dev/null @@ -1,2803 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @format - * @oncall flow - */ - -// Adapted from https://github.com/flow-typed/flow-typed/blob/main/definitions/environments/bom/flow_v0.261.x-/bom.js - -/* BOM */ - -declare class Screen { - readonly availHeight: number; - readonly availWidth: number; - readonly availLeft: number; - readonly availTop: number; - readonly top: number; - readonly left: number; - readonly colorDepth: number; - readonly pixelDepth: number; - readonly width: number; - readonly height: number; - readonly orientation?: { - lock(): Promise, - unlock(): void, - angle: number, - onchange: () => unknown, - type: - | 'portrait-primary' - | 'portrait-secondary' - | 'landscape-primary' - | 'landscape-secondary', - ... - }; - // deprecated - mozLockOrientation?: (orientation: string | Array) => boolean; - mozUnlockOrientation?: () => void; - mozOrientation?: string; - onmozorientationchange?: (...args: any[]) => unknown; -} - -declare var screen: Screen; - -declare interface Crypto { - // Not using $TypedArray as that would include Float32Array and Float64Array which are not accepted - getRandomValues: < - T: - | Int8Array - | Uint8Array - | Uint8ClampedArray - | Int16Array - | Uint16Array - | Int32Array - | Uint32Array - | BigInt64Array - | BigUint64Array, - >( - typedArray: T, - ) => T; - randomUUID: () => string; -} -declare var crypto: Crypto; - -declare var window: any; - -type GamepadButton = { - pressed: boolean, - value: number, - ... -}; -type GamepadHapticActuator = { - type: 'vibration', - pulse(value: number, duration: number): Promise, - ... -}; -type GamepadPose = { - angularAcceleration: null | Float32Array, - angularVelocity: null | Float32Array, - hasOrientation: boolean, - hasPosition: boolean, - linearAcceleration: null | Float32Array, - linearVelocity: null | Float32Array, - orientation: null | Float32Array, - position: null | Float32Array, - ... -}; -type Gamepad = { - axes: number[], - buttons: GamepadButton[], - connected: boolean, - displayId?: number, - hapticActuators?: GamepadHapticActuator[], - hand?: '' | 'left' | 'right', - id: string, - index: number, - mapping: string, - pose?: null | GamepadPose, - timestamp: number, - ... -}; - -// deprecated -type BatteryManager = { - readonly charging: boolean, - readonly chargingTime: number, - readonly dischargingTime: number, - readonly level: number, - onchargingchange: ?(event: any) => unknown, - onchargingtimechange: ?(event: any) => unknown, - ondischargingtimechange: ?(event: any) => unknown, - onlevelchange: ?(event: any) => unknown, - ... -}; - -// https://wicg.github.io/web-share -type ShareData = { - title?: string, - text?: string, - url?: string, - ... -}; - -type PermissionName = - | 'geolocation' - | 'notifications' - | 'push' - | 'midi' - | 'camera' - | 'microphone' - | 'speaker' - | 'usb' - | 'device-info' - | 'background-sync' - | 'bluetooth' - | 'persistent-storage' - | 'ambient-light-sensor' - | 'accelerometer' - | 'gyroscope' - | 'magnetometer' - | 'clipboard-read' - | 'clipboard-write'; - -type PermissionState = 'granted' | 'denied' | 'prompt'; - -type PermissionDescriptor = {| - name: PermissionName, -|}; - -type DevicePermissionDescriptor = {| - deviceId?: string, - name: 'camera' | 'microphone' | 'speaker', -|}; - -type MidiPermissionDescriptor = {| - name: 'midi', - sysex?: boolean, -|}; - -type PushPermissionDescriptor = {| - name: 'push', - userVisibleOnly?: boolean, -|}; - -type ClipboardPermissionDescriptor = {| - name: 'clipboard-read' | 'clipboard-write', - allowWithoutGesture: boolean, -|}; - -type USBPermissionDescriptor = {| - name: 'usb', - filters: Array, - exclusionFilters: Array, -|}; - -type FileSystemHandlePermissionDescriptor = {| - mode: 'read' | 'readwrite', -|}; - -declare class PermissionStatus extends EventTarget { - onchange: ?(event: any) => unknown; - readonly state: PermissionState; -} - -declare class Permissions { - query( - permissionDesc: - | DevicePermissionDescriptor - | MidiPermissionDescriptor - | PushPermissionDescriptor - | ClipboardPermissionDescriptor - | USBPermissionDescriptor - | PermissionDescriptor, - ): Promise; -} - -type MIDIPortType = 'input' | 'output'; -type MIDIPortDeviceState = 'connected' | 'disconnected'; -type MIDIPortConnectionState = 'open' | 'closed' | 'pending'; - -type MIDIOptions = {| - sysex: boolean, - software: boolean, -|}; - -type MIDIMessageEvent$Init = Event$Init & { - data: Uint8Array, - ... -}; - -declare class MIDIMessageEvent extends Event { - constructor(type: string, eventInitDict: MIDIMessageEvent$Init): void; - readonly data: Uint8Array; -} - -type MIDIConnectionEvent$Init = Event$Init & { - port: MIDIPort, - ... -}; - -declare class MIDIConnectionEvent extends Event { - constructor(type: string, eventInitDict: MIDIConnectionEvent$Init): void; - readonly port: MIDIPort; -} - -declare class MIDIPort extends EventTarget { - readonly id: string; - readonly manufacturer?: string; - readonly name?: string; - readonly type: MIDIPortType; - readonly version?: string; - readonly state: MIDIPortDeviceState; - readonly connection: MIDIPortConnectionState; - onstatechange: ?(ev: MIDIConnectionEvent) => unknown; - open(): Promise; - close(): Promise; -} - -declare class MIDIInput extends MIDIPort { - onmidimessage: ?(ev: MIDIMessageEvent) => unknown; -} - -declare class MIDIOutput extends MIDIPort { - send(data: Iterable, timestamp?: number): void; - clear(): void; -} - -declare class MIDIInputMap extends $ReadOnlyMap {} - -declare class MIDIOutputMap extends $ReadOnlyMap {} - -declare class MIDIAccess extends EventTarget { - readonly inputs: MIDIInputMap; - readonly outputs: MIDIOutputMap; - readonly sysexEnabled: boolean; - onstatechange: ?(ev: MIDIConnectionEvent) => unknown; -} - -declare class NavigatorID { - appName: 'Netscape'; - appCodeName: 'Mozilla'; - product: 'Gecko'; - appVersion: string; - platform: string; - userAgent: string; -} - -declare class NavigatorLanguage { - readonly language: string; - readonly languages: ReadonlyArray; -} - -declare class NavigatorContentUtils { - registerContentHandler(mimeType: string, uri: string, title: string): void; - registerProtocolHandler(protocol: string, uri: string, title: string): void; -} - -declare class NavigatorCookies { - readonly cookieEnabled: boolean; -} - -declare class NavigatorPlugins { - readonly plugins: PluginArray; - readonly mimeTypes: MimeTypeArray; - javaEnabled(): boolean; -} - -declare class NavigatorOnLine { - readonly onLine: boolean; -} - -declare class NavigatorConcurrentHardware { - readonly hardwareConcurrency: number; -} - -declare class NavigatorStorage { - storage?: StorageManager; -} - -declare class StorageManager { - persist: () => Promise; - persisted: () => Promise; - estimate?: () => Promise; - getDirectory: () => Promise; -} - -type StorageManagerRegisteredEndpoint = - | 'caches' - | 'indexedDB' - | 'localStorage' - | 'serviceWorkerRegistrations' - | 'sessionStorage'; - -type StorageManagerUsageDetails = {[StorageManagerRegisteredEndpoint]: number}; - -declare class StorageEstimate { - constructor( - usage: number, - quota: number, - usageDetails?: StorageManagerUsageDetails, - ): void; - readonly usage: number; - readonly quota: number; - - // Not a part of the standard - readonly usageDetails?: StorageManagerUsageDetails; -} - -declare class Navigator - mixins - NavigatorID, - NavigatorLanguage, - NavigatorOnLine, - NavigatorContentUtils, - NavigatorCookies, - NavigatorPlugins, - NavigatorConcurrentHardware, - NavigatorStorage -{ - productSub: '20030107' | '20100101'; - vendor: '' | 'Google Inc.' | 'Apple Computer, Inc'; - vendorSub: ''; - - activeVRDisplays?: VRDisplay[]; - appCodeName: 'Mozilla'; - buildID: string; - doNotTrack: string | null; - geolocation: Geolocation; - mediaDevices?: MediaDevices; - usb?: USB; - maxTouchPoints: number; - permissions: Permissions; - serviceWorker?: ServiceWorkerContainer; - getGamepads?: () => Array; - webkitGetGamepads?: Function; - mozGetGamepads?: Function; - mozGamepads?: any; - gamepads?: any; - webkitGamepads?: any; - getVRDisplays?: () => Promise; - registerContentHandler(mimeType: string, uri: string, title: string): void; - registerProtocolHandler(protocol: string, uri: string, title: string): void; - requestMIDIAccess?: (options?: MIDIOptions) => Promise; - requestMediaKeySystemAccess?: ( - keySystem: string, - supportedConfigurations: any[], - ) => Promise; - sendBeacon?: (url: string, data?: BodyInit) => boolean; - vibrate?: (pattern: number | number[]) => boolean; - mozVibrate?: (pattern: number | number[]) => boolean; - webkitVibrate?: (pattern: number | number[]) => boolean; - canShare?: (shareData?: ShareData) => boolean; - share?: (shareData: ShareData) => Promise; - clipboard: Clipboard; - credentials?: CredMgmtCredentialsContainer; - globalPrivacyControl?: boolean; - - // deprecated - getBattery?: () => Promise; - mozGetBattery?: () => Promise; - - // deprecated - getUserMedia?: Function; - webkitGetUserMedia?: Function; - mozGetUserMedia?: Function; - msGetUserMedia?: Function; - - // Gecko - taintEnabled?: () => false; - oscpu: string; -} - -declare class Clipboard extends EventTarget { - read(): Promise; - readText(): Promise; - write(data: ReadonlyArray): Promise; - writeText(data: string): Promise; -} - -declare var navigator: Navigator; - -declare class MimeType { - type: string; - description: string; - suffixes: string; - enabledPlugin: Plugin; -} - -declare class MimeTypeArray { - length: number; - item(index: number): MimeType; - namedItem(name: string): MimeType; - [key: number | string]: MimeType; -} - -declare class Plugin { - description: string; - filename: string; - name: string; - version?: string; // Gecko only - length: number; - item(index: number): MimeType; - namedItem(name: string): MimeType; - [key: number | string]: MimeType; -} - -declare class PluginArray { - length: number; - item(index: number): Plugin; - namedItem(name: string): Plugin; - refresh(): void; - [key: number | string]: Plugin; -} - -// https://www.w3.org/TR/hr-time-2/#dom-domhighrestimestamp -// https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp -declare type DOMHighResTimeStamp = number; - -// https://www.w3.org/TR/navigation-timing-2/ -declare class PerformanceTiming { - connectEnd: number; - connectStart: number; - domainLookupEnd: number; - domainLookupStart: number; - domComplete: number; - domContentLoadedEventEnd: number; - domContentLoadedEventStart: number; - domInteractive: number; - domLoading: number; - fetchStart: number; - loadEventEnd: number; - loadEventStart: number; - navigationStart: number; - redirectEnd: number; - redirectStart: number; - requestStart: number; - responseEnd: number; - responseStart: number; - secureConnectionStart: number; - unloadEventEnd: number; - unloadEventStart: number; -} - -declare class PerformanceNavigation { - TYPE_NAVIGATE: 0; - TYPE_RELOAD: 1; - TYPE_BACK_FORWARD: 2; - TYPE_RESERVED: 255; - - type: 0 | 1 | 2 | 255; - redirectCount: number; -} - -type PerformanceEntryFilterOptions = { - name: string, - entryType: string, - initiatorType: string, - ... -}; - -// https://www.w3.org/TR/performance-timeline-2/ -declare class PerformanceEntry { - name: string; - entryType: string; - startTime: DOMHighResTimeStamp; - duration: DOMHighResTimeStamp; - toJSON(): string; -} - -// https://w3c.github.io/server-timing/#the-performanceservertiming-interface -declare class PerformanceServerTiming { - description: string; - duration: DOMHighResTimeStamp; - name: string; - toJSON(): string; -} - -// https://www.w3.org/TR/resource-timing-2/#sec-performanceresourcetiming -// https://w3c.github.io/server-timing/#extension-to-the-performanceresourcetiming-interface -declare class PerformanceResourceTiming extends PerformanceEntry { - initiatorType: string; - nextHopProtocol: string; - workerStart: number; - redirectStart: number; - redirectEnd: number; - fetchStart: number; - domainLookupStart: number; - domainLookupEnd: number; - connectStart: number; - connectEnd: number; - secureConnectionStart: number; - requestStart: number; - responseStart: number; - responseEnd: number; - transferSize: string; - encodedBodySize: number; - decodedBodySize: number; - serverTiming: Array; -} - -// https://w3c.github.io/event-timing/#sec-performance-event-timing -declare class PerformanceEventTiming extends PerformanceEntry { - processingStart: number; - processingEnd: number; - cancelable: boolean; - target: ?Node; - interactionId: number; -} - -// https://w3c.github.io/longtasks/#taskattributiontiming -declare class TaskAttributionTiming extends PerformanceEntry { - containerType: string; - containerSrc: string; - containerId: string; - containerName: string; -} - -// https://w3c.github.io/longtasks/#sec-PerformanceLongTaskTiming -declare class PerformanceLongTaskTiming extends PerformanceEntry { - attribution: ReadonlyArray; -} - -// https://www.w3.org/TR/navigation-timing-2/ -declare class PerformanceNavigationTiming extends PerformanceResourceTiming { - unloadEventStart: number; - unloadEventEnd: number; - domInteractive: number; - domContentLoadedEventStart: number; - domContentLoadedEventEnd: number; - domComplete: number; - loadEventStart: number; - loadEventEnd: number; - type: 'navigate' | 'reload' | 'back_forward' | 'prerender'; - redirectCount: number; -} - -// https://www.w3.org/TR/user-timing/#extensions-performance-interface -declare type PerformanceMarkOptions = {| - detail?: unknown, - startTime?: number, -|}; - -declare type PerformanceMeasureOptions = {| - detail?: unknown, - start?: number | string, - end?: number | string, - duration?: number, -|}; - -type EventCountsForEachCallbackType = - | (() => void) - | ((value: number) => void) - | ((value: number, key: string) => void) - | ((value: number, key: string, map: Map) => void); - -// https://www.w3.org/TR/event-timing/#eventcounts -declare interface EventCounts { - size: number; - - entries(): Iterator<[string, number]>; - forEach(callback: EventCountsForEachCallbackType): void; - get(key: string): ?number; - has(key: string): boolean; - keys(): Iterator; - values(): Iterator; -} - -declare class Performance { - eventCounts: EventCounts; - - // deprecated - navigation: PerformanceNavigation; - timing: PerformanceTiming; - - onresourcetimingbufferfull: (ev: any) => unknown; - clearMarks(name?: string): void; - clearMeasures(name?: string): void; - clearResourceTimings(): void; - getEntries(options?: PerformanceEntryFilterOptions): Array; - getEntriesByName(name: string, type?: string): Array; - getEntriesByType(type: string): Array; - mark(name: string, options?: PerformanceMarkOptions): void; - measure( - name: string, - startMarkOrOptions?: string | PerformanceMeasureOptions, - endMark?: string, - ): void; - now(): DOMHighResTimeStamp; - setResourceTimingBufferSize(maxSize: number): void; - toJSON(): string; -} - -declare var performance: Performance; - -type PerformanceEntryList = PerformanceEntry[]; - -declare interface PerformanceObserverEntryList { - getEntries(): PerformanceEntryList; - getEntriesByType(type: string): PerformanceEntryList; - getEntriesByName(name: string, type: ?string): PerformanceEntryList; -} - -type PerformanceObserverInit = { - entryTypes?: string[], - type?: string, - buffered?: boolean, - ... -}; - -declare class PerformanceObserver { - constructor( - callback: ( - entries: PerformanceObserverEntryList, - observer: PerformanceObserver, - ) => unknown, - ): void; - - observe(options: ?PerformanceObserverInit): void; - disconnect(): void; - takeRecords(): PerformanceEntryList; - - static supportedEntryTypes: string[]; -} - -declare class History { - length: number; - scrollRestoration: 'auto' | 'manual'; - state: any; - back(): void; - forward(): void; - go(delta?: number): void; - pushState(statedata: any, title: string, url?: string): void; - replaceState(statedata: any, title: string, url?: string): void; -} - -declare var history: History; - -declare class Location { - ancestorOrigins: string[]; - hash: string; - host: string; - hostname: string; - href: string; - origin: string; - pathname: string; - port: string; - protocol: string; - search: string; - assign(url: string): void; - reload(flag?: boolean): void; - replace(url: string): void; - toString(): string; -} - -declare var location: Location; - -/////////////////////////////////////////////////////////////////////////////// - -declare class DOMParser { - parseFromString(source: string | TrustedHTML, mimeType: string): Document; -} - -type FormDataEntryValue = string | File; - -declare class FormData { - constructor(form?: HTMLFormElement, submitter?: HTMLElement | null): void; - - has(name: string): boolean; - get(name: string): ?FormDataEntryValue; - getAll(name: string): Array; - - set(name: string, value: string): void; - set(name: string, value: Blob, filename?: string): void; - set(name: string, value: File, filename?: string): void; - - append(name: string, value: string): void; - append(name: string, value: Blob, filename?: string): void; - append(name: string, value: File, filename?: string): void; - - delete(name: string): void; - - keys(): Iterator; - values(): Iterator; - entries(): Iterator<[string, FormDataEntryValue]>; -} - -declare class MutationRecord { - type: 'attributes' | 'characterData' | 'childList'; - target: Node; - addedNodes: NodeList; - removedNodes: NodeList; - previousSibling: ?Node; - nextSibling: ?Node; - attributeName: ?string; - attributeNamespace: ?string; - oldValue: ?string; -} - -type MutationObserverInitRequired = - {childList: true, ...} | {attributes: true, ...} | {characterData: true, ...}; - -declare type MutationObserverInit = MutationObserverInitRequired & { - subtree?: boolean, - attributeOldValue?: boolean, - characterDataOldValue?: boolean, - attributeFilter?: Array, - ... -}; - -declare class MutationObserver { - constructor( - callback: ( - arr: Array, - observer: MutationObserver, - ) => unknown, - ): void; - observe(target: Node, options: MutationObserverInit): void; - takeRecords(): Array; - disconnect(): void; -} - -declare class DOMRectReadOnly { - static fromRect(rectangle?: { - x: number, - y: number, - width: number, - height: number, - ... - }): DOMRectReadOnly; - constructor(x: number, y: number, width: number, height: number): void; - readonly bottom: number; - readonly height: number; - readonly left: number; - readonly right: number; - readonly top: number; - readonly width: number; - readonly x: number; - readonly y: number; -} - -declare class DOMRect extends DOMRectReadOnly { - static fromRect(rectangle?: { - x: number, - y: number, - width: number, - height: number, - ... - }): DOMRect; - bottom: number; - height: number; - left: number; - right: number; - top: number; - width: number; - x: number; - y: number; -} - -declare class DOMRectList { - @@iterator(): Iterator; - length: number; - item(index: number): DOMRect; - [index: number]: DOMRect; -} - -declare type IntersectionObserverEntry = { - boundingClientRect: DOMRectReadOnly, - intersectionRatio: number, - intersectionRect: DOMRectReadOnly, - isIntersecting: boolean, - rootBounds: DOMRectReadOnly, - target: Element, - time: DOMHighResTimeStamp, - ... -}; - -declare type IntersectionObserverCallback = ( - entries: Array, - observer: IntersectionObserver, -) => unknown; - -declare type IntersectionObserverOptions = { - root?: Node | null, - rootMargin?: string, - threshold?: number | Array, - ... -}; - -declare class IntersectionObserver { - constructor( - callback: IntersectionObserverCallback, - options?: IntersectionObserverOptions, - ): void; - root: Element | null; - rootMargin: string; - scrollMargin: string; - thresholds: number[]; - observe(target: Element): void; - unobserve(target: Element): void; - takeRecords(): Array; - disconnect(): void; -} - -declare interface ResizeObserverSize { - readonly inlineSize: number; - readonly blockSize: number; -} - -declare interface ResizeObserverEntry { - /** - * The Element whose size has changed. - */ - readonly target: Element; - /** - * Element's content rect when ResizeObserverCallback is invoked. - * - * Legacy, may be deprecated in the future. - */ - readonly contentRect: DOMRectReadOnly; - /** - * An array containing the Element's border box size when - * ResizeObserverCallback is invoked. - */ - readonly borderBoxSize: ReadonlyArray; - /** - * An array containing the Element's content rect size when - * ResizeObserverCallback is invoked. - */ - readonly contentBoxSize: ReadonlyArray; - /** - * An array containing the Element's content rect size in integral device - * pixels when ResizeObserverCallback is invoked. - * - * Not implemented in Firefox or Safari as of July 2021 - */ - readonly devicePixelContentBoxSize?: ReadonlyArray | void; -} - -/** - * ResizeObserver can observe different kinds of CSS sizes: - * - border-box : size of box border area as defined in CSS2. - * - content-box : size of content area as defined in CSS2. - * - device-pixel-content-box : size of content area as defined in CSS2, in device - * pixels, before applying any CSS transforms on the element or its ancestors. - * This size must contain integer values. - */ -type ResizeObserverBoxOptions = - 'border-box' | 'content-box' | 'device-pixel-content-box'; - -declare type ResizeObserverOptions = { - box?: ResizeObserverBoxOptions, - ... -}; - -/** - * The ResizeObserver interface is used to observe changes to Element's size. - */ -declare class ResizeObserver { - constructor( - callback: ( - entries: ResizeObserverEntry[], - observer: ResizeObserver, - ) => unknown, - ): void; - /** - * Adds target to the list of observed elements. - */ - observe(target: Element, options?: ResizeObserverOptions): void; - /** - * Removes target from the list of observed elements. - */ - unobserve(target: Element): void; - disconnect(): void; -} - -declare class CloseEvent extends Event { - code: number; - reason: string; - wasClean: boolean; -} - -declare class WebSocket extends EventTarget { - static CONNECTING: 0; - static OPEN: 1; - static CLOSING: 2; - static CLOSED: 3; - constructor(url: string, protocols?: string | Array): void; - protocol: string; - readyState: number; - bufferedAmount: number; - extensions: string; - onopen: (ev: any) => unknown; - onmessage: (ev: MessageEvent) => unknown; - onclose: (ev: CloseEvent) => unknown; - onerror: (ev: any) => unknown; - binaryType: 'blob' | 'arraybuffer'; - url: string; - close(code?: number, reason?: string): void; - send(data: string): void; - send(data: Blob): void; - send(data: ArrayBuffer): void; - send(data: $ArrayBufferView): void; - CONNECTING: 0; - OPEN: 1; - CLOSING: 2; - CLOSED: 3; -} - -type WorkerOptions = { - type?: WorkerType, - credentials?: CredentialsType, - name?: string, - ... -}; - -declare class Worker extends EventTarget { - constructor( - stringUrl: string | TrustedScriptURL, - workerOptions?: WorkerOptions, - ): void; - onerror: null | ((ev: any) => unknown); - onmessage: null | ((ev: MessageEvent) => unknown); - onmessageerror: null | ((ev: MessageEvent) => unknown); - postMessage(message: any, ports?: any): void; - terminate(): void; -} - -declare class SharedWorker extends EventTarget { - constructor(stringUrl: string | TrustedScriptURL, name?: string): void; - constructor( - stringUrl: string | TrustedScriptURL, - workerOptions?: WorkerOptions, - ): void; - port: MessagePort; - onerror: (ev: any) => unknown; -} - -declare function importScripts(...urls: Array): void; - -declare class WorkerGlobalScope extends EventTarget { - // $FlowFixMe[incompatible-variance] - self: this; - location: WorkerLocation; - navigator: WorkerNavigator; - close(): void; - importScripts(...urls: Array): void; - onerror: (ev: any) => unknown; - onlanguagechange: (ev: any) => unknown; - onoffline: (ev: any) => unknown; - ononline: (ev: any) => unknown; - onrejectionhandled: (ev: PromiseRejectionEvent) => unknown; - onunhandledrejection: (ev: PromiseRejectionEvent) => unknown; -} - -declare class DedicatedWorkerGlobalScope extends WorkerGlobalScope { - onmessage: (ev: MessageEvent) => unknown; - onmessageerror: (ev: MessageEvent) => unknown; - postMessage(message: any, transfer?: Iterable): void; -} - -declare class SharedWorkerGlobalScope extends WorkerGlobalScope { - name: string; - onconnect: (ev: MessageEvent) => unknown; -} - -declare class WorkerLocation { - origin: string; - protocol: string; - host: string; - hostname: string; - port: string; - pathname: string; - search: string; - hash: string; -} - -declare class WorkerNavigator - mixins - NavigatorID, - NavigatorLanguage, - NavigatorOnLine, - NavigatorConcurrentHardware, - NavigatorStorage -{ - permissions: Permissions; -} - -// deprecated -declare class XDomainRequest { - timeout: number; - onerror: () => unknown; - onload: () => unknown; - onprogress: () => unknown; - ontimeout: () => unknown; - readonly responseText: string; - readonly contentType: string; - open(method: 'GET' | 'POST', url: string): void; - abort(): void; - send(data?: string): void; - - statics: {create(): XDomainRequest, ...}; -} - -declare class XMLHttpRequest extends EventTarget { - static LOADING: number; - static DONE: number; - static UNSENT: number; - static OPENED: number; - static HEADERS_RECEIVED: number; - responseBody: any; - status: number; - readyState: number; - responseText: string; - responseXML: any; - responseURL: string; - ontimeout: ProgressEventHandler; - statusText: string; - onreadystatechange: (ev: any) => unknown; - timeout: number; - onload: ProgressEventHandler; - response: any; - withCredentials: boolean; - onprogress: ProgressEventHandler; - onabort: ProgressEventHandler; - responseType: string; - onloadend: ProgressEventHandler; - upload: XMLHttpRequestEventTarget; - onerror: ProgressEventHandler; - onloadstart: ProgressEventHandler; - msCaching: string; - open( - method: string, - url: string, - async?: boolean, - user?: string, - password?: string, - ): void; - send(data?: any): void; - abort(): void; - getAllResponseHeaders(): string; - setRequestHeader(header: string, value: string): void; - getResponseHeader(header: string): string; - msCachingEnabled(): boolean; - overrideMimeType(mime: string): void; - LOADING: number; - DONE: number; - UNSENT: number; - OPENED: number; - HEADERS_RECEIVED: number; - - statics: {create(): XMLHttpRequest, ...}; -} - -declare class XMLHttpRequestEventTarget extends EventTarget { - onprogress: ProgressEventHandler; - onerror: ProgressEventHandler; - onload: ProgressEventHandler; - ontimeout: ProgressEventHandler; - onabort: ProgressEventHandler; - onloadstart: ProgressEventHandler; - onloadend: ProgressEventHandler; -} - -declare class XMLSerializer { - serializeToString(target: Node): string; -} - -declare class Geolocation { - getCurrentPosition( - success: (position: Position) => unknown, - error?: (error: PositionError) => unknown, - options?: PositionOptions, - ): void; - watchPosition( - success: (position: Position) => unknown, - error?: (error: PositionError) => unknown, - options?: PositionOptions, - ): number; - clearWatch(id: number): void; -} - -declare class Position { - coords: Coordinates; - timestamp: number; -} - -declare class Coordinates { - latitude: number; - longitude: number; - altitude?: number; - accuracy: number; - altitudeAccuracy?: number; - heading?: number; - speed?: number; -} - -declare class PositionError { - code: number; - message: string; - PERMISSION_DENIED: 1; - POSITION_UNAVAILABLE: 2; - TIMEOUT: 3; -} - -type PositionOptions = { - enableHighAccuracy?: boolean, - timeout?: number, - maximumAge?: number, - ... -}; - -type AudioContextState = 'suspended' | 'running' | 'closed'; - -// deprecated -type AudioProcessingEvent$Init = Event$Init & { - playbackTime: number, - inputBuffer: AudioBuffer, - outputBuffer: AudioBuffer, - ... -}; - -// deprecated -declare class AudioProcessingEvent extends Event { - constructor(type: string, eventInitDict: AudioProcessingEvent$Init): void; - - readonly playbackTime: number; - readonly inputBuffer: AudioBuffer; - readonly outputBuffer: AudioBuffer; -} - -type OfflineAudioCompletionEvent$Init = Event$Init & { - renderedBuffer: AudioBuffer, - ... -}; - -declare class OfflineAudioCompletionEvent extends Event { - constructor( - type: string, - eventInitDict: OfflineAudioCompletionEvent$Init, - ): void; - - readonly renderedBuffer: AudioBuffer; -} - -declare class BaseAudioContext extends EventTarget { - currentTime: number; - destination: AudioDestinationNode; - listener: AudioListener; - sampleRate: number; - state: AudioContextState; - onstatechange: (ev: any) => unknown; - createBuffer( - numOfChannels: number, - length: number, - sampleRate: number, - ): AudioBuffer; - createBufferSource(myMediaElement?: HTMLMediaElement): AudioBufferSourceNode; - createMediaElementSource( - myMediaElement: HTMLMediaElement, - ): MediaElementAudioSourceNode; - createMediaStreamSource(stream: MediaStream): MediaStreamAudioSourceNode; - createMediaStreamDestination(): MediaStreamAudioDestinationNode; - - // deprecated - createScriptProcessor( - bufferSize: number, - numberOfInputChannels: number, - numberOfOutputChannels: number, - ): ScriptProcessorNode; - - createAnalyser(): AnalyserNode; - createBiquadFilter(): BiquadFilterNode; - createChannelMerger(numberOfInputs?: number): ChannelMergerNode; - createChannelSplitter(numberOfInputs?: number): ChannelSplitterNode; - createConstantSource(): ConstantSourceNode; - createConvolver(): ConvolverNode; - createDelay(maxDelayTime?: number): DelayNode; - createDynamicsCompressor(): DynamicsCompressorNode; - createGain(): GainNode; - createIIRFilter( - feedforward: Float32Array, - feedback: Float32Array, - ): IIRFilterNode; - createOscillator(): OscillatorNode; - createPanner(): PannerNode; - createStereoPanner(): StereoPannerNode; - createPeriodicWave( - real: Float32Array, - img: Float32Array, - options?: {disableNormalization: boolean, ...}, - ): PeriodicWave; - createStereoPanner(): StereoPannerNode; - createWaveShaper(): WaveShaperNode; - decodeAudioData( - arrayBuffer: ArrayBuffer, - decodeSuccessCallback: (decodedData: AudioBuffer) => unknown, - decodeErrorCallback: (err: DOMError) => unknown, - ): void; - decodeAudioData(arrayBuffer: ArrayBuffer): Promise; -} - -declare class AudioTimestamp { - contextTime: number; - performanceTime: number; -} - -declare class AudioContext extends BaseAudioContext { - constructor(options?: {| - latencyHint?: 'balanced' | 'interactive' | 'playback' | number, - sampleRate?: number, - |}): AudioContext; - baseLatency: number; - outputLatency: number; - getOutputTimestamp(): AudioTimestamp; - resume(): Promise; - suspend(): Promise; - close(): Promise; - createMediaElementSource( - myMediaElement: HTMLMediaElement, - ): MediaElementAudioSourceNode; - createMediaStreamSource( - myMediaStream: MediaStream, - ): MediaStreamAudioSourceNode; - createMediaStreamTrackSource( - myMediaStreamTrack: MediaStreamTrack, - ): MediaStreamTrackAudioSourceNode; - createMediaStreamDestination(): MediaStreamAudioDestinationNode; -} - -declare class OfflineAudioContext extends BaseAudioContext { - startRendering(): Promise; - suspend(suspendTime: number): Promise; - length: number; - oncomplete: (ev: OfflineAudioCompletionEvent) => unknown; -} - -declare class AudioNode extends EventTarget { - context: AudioContext; - numberOfInputs: number; - numberOfOutputs: number; - channelCount: number; - channelCountMode: 'max' | 'clamped-max' | 'explicit'; - channelInterpretation: 'speakers' | 'discrete'; - connect(audioNode: AudioNode, output?: number, input?: number): AudioNode; - connect(destination: AudioParam, output?: number): void; - disconnect(destination?: AudioNode, output?: number, input?: number): void; -} - -declare class AudioParam extends AudioNode { - value: number; - defaultValue: number; - setValueAtTime(value: number, startTime: number): this; - linearRampToValueAtTime(value: number, endTime: number): this; - exponentialRampToValueAtTime(value: number, endTime: number): this; - setTargetAtTime( - target: number, - startTime: number, - timeConstant: number, - ): this; - setValueCurveAtTime( - values: Float32Array, - startTime: number, - duration: number, - ): this; - cancelScheduledValues(startTime: number): this; -} - -declare class AudioDestinationNode extends AudioNode { - maxChannelCount: number; -} - -declare class AudioListener extends AudioNode { - positionX: AudioParam; - positionY: AudioParam; - positionZ: AudioParam; - forwardX: AudioParam; - forwardY: AudioParam; - forwardZ: AudioParam; - upX: AudioParam; - upY: AudioParam; - upZ: AudioParam; - setPosition(x: number, y: number, c: number): void; - setOrientation( - x: number, - y: number, - z: number, - xUp: number, - yUp: number, - zUp: number, - ): void; -} - -declare class AudioBuffer { - sampleRate: number; - length: number; - duration: number; - numberOfChannels: number; - getChannelData(channel: number): Float32Array; - copyFromChannel( - destination: Float32Array, - channelNumber: number, - startInChannel?: number, - ): void; - copyToChannel( - source: Float32Array, - channelNumber: number, - startInChannel?: number, - ): void; -} - -declare class AudioBufferSourceNode extends AudioNode { - buffer: AudioBuffer; - detune: AudioParam; - loop: boolean; - loopStart: number; - loopEnd: number; - playbackRate: AudioParam; - onended: (ev: any) => unknown; - start(when?: number, offset?: number, duration?: number): void; - stop(when?: number): void; -} - -declare class CanvasCaptureMediaStream extends MediaStream { - canvas: HTMLCanvasElement; - requestFrame(): void; -} - -type DoubleRange = { - max?: number, - min?: number, - ... -}; - -type LongRange = { - max?: number, - min?: number, - ... -}; - -type ConstrainBooleanParameters = { - exact?: boolean, - ideal?: boolean, - ... -}; - -type ConstrainDOMStringParameters = { - exact?: string | string[], - ideal?: string | string[], - ... -}; - -type ConstrainDoubleRange = { - ...DoubleRange, - exact?: number, - ideal?: number, - ... -}; - -type ConstrainLongRange = { - ...LongRange, - exact?: number, - ideal?: number, - ... -}; - -type MediaTrackSupportedConstraints = {| - width: boolean, - height: boolean, - aspectRatio: boolean, - frameRate: boolean, - facingMode: boolean, - resizeMode: boolean, - volume: boolean, - sampleRate: boolean, - sampleSize: boolean, - echoCancellation: boolean, - autoGainControl: boolean, - noiseSuppression: boolean, - latency: boolean, - channelCount: boolean, - deviceId: boolean, - groupId: boolean, -|}; - -type MediaTrackConstraintSet = { - width?: number | ConstrainLongRange, - height?: number | ConstrainLongRange, - aspectRatio?: number | ConstrainDoubleRange, - frameRate?: number | ConstrainDoubleRange, - facingMode?: string | string[] | ConstrainDOMStringParameters, - resizeMode?: string | string[] | ConstrainDOMStringParameters, - volume?: number | ConstrainDoubleRange, - sampleRate?: number | ConstrainLongRange, - sampleSize?: number | ConstrainLongRange, - echoCancellation?: boolean | ConstrainBooleanParameters, - autoGainControl?: boolean | ConstrainBooleanParameters, - noiseSuppression?: boolean | ConstrainBooleanParameters, - latency?: number | ConstrainDoubleRange, - channelCount?: number | ConstrainLongRange, - deviceId?: string | string[] | ConstrainDOMStringParameters, - groupId?: string | string[] | ConstrainDOMStringParameters, - ... -}; - -type MediaTrackConstraints = { - ...MediaTrackConstraintSet, - advanced?: Array, - ... -}; - -type DisplayMediaStreamConstraints = { - video?: boolean | MediaTrackConstraints, - audio?: boolean | MediaTrackConstraints, - ... -}; - -type MediaStreamConstraints = { - audio?: boolean | MediaTrackConstraints, - video?: boolean | MediaTrackConstraints, - peerIdentity?: string, - ... -}; - -type MediaTrackSettings = { - aspectRatio?: number, - deviceId?: string, - displaySurface?: 'application' | 'browser' | 'monitor' | 'window', - echoCancellation?: boolean, - facingMode?: string, - frameRate?: number, - groupId?: string, - height?: number, - logicalSurface?: boolean, - sampleRate?: number, - sampleSize?: number, - volume?: number, - width?: number, - ... -}; - -type MediaTrackCapabilities = { - aspectRatio?: number | DoubleRange, - deviceId?: string, - echoCancellation?: boolean[], - facingMode?: string, - frameRate?: number | DoubleRange, - groupId?: string, - height?: number | LongRange, - sampleRate?: number | LongRange, - sampleSize?: number | LongRange, - volume?: number | DoubleRange, - width?: number | LongRange, - ... -}; - -declare class MediaDevices extends EventTarget { - ondevicechange: (ev: any) => unknown; - enumerateDevices: () => Promise>; - getSupportedConstraints: () => MediaTrackSupportedConstraints; - getDisplayMedia: ( - constraints?: DisplayMediaStreamConstraints, - ) => Promise; - getUserMedia: (constraints: MediaStreamConstraints) => Promise; -} - -declare class MediaDeviceInfo { - readonly deviceId: string; - readonly groupId: string; - readonly kind: 'videoinput' | 'audioinput' | 'audiooutput'; - readonly label: string; -} - -type MediaRecorderOptions = { - mimeType?: string, - audioBitsPerSecond?: number, - videoBitsPerSecond?: number, - bitsPerSecond?: number, - audioBitrateMode?: 'cbr' | 'vbr', - ... -}; - -declare class MediaRecorder extends EventTarget { - constructor(stream: MediaStream, options?: MediaRecorderOptions): void; - readonly stream: MediaStream; - readonly mimeType: string; - readonly state: 'inactive' | 'recording' | 'paused'; - - onstart: (ev: any) => unknown; - onstop: (ev: any) => unknown; - ondataavailable: (ev: any) => unknown; - onpause: (ev: any) => unknown; - onresume: (ev: any) => unknown; - onerror: (ev: any) => unknown; - - readonly videoBitsPerSecond: number; - readonly audioBitsPerSecond: number; - readonly audioBitrateMode: 'cbr' | 'vbr'; - - start(timeslice?: number): void; - stop(): void; - pause(): void; - resume(): void; - requestData(): void; - - static isTypeSupported(type: string): boolean; -} - -declare class MediaStream extends EventTarget { - active: boolean; - ended: boolean; - id: string; - onactive: (ev: any) => unknown; - oninactive: (ev: any) => unknown; - onended: (ev: any) => unknown; - onaddtrack: (ev: MediaStreamTrackEvent) => unknown; - onremovetrack: (ev: MediaStreamTrackEvent) => unknown; - addTrack(track: MediaStreamTrack): void; - clone(): MediaStream; - getAudioTracks(): MediaStreamTrack[]; - getTrackById(trackid?: string): ?MediaStreamTrack; - getTracks(): MediaStreamTrack[]; - getVideoTracks(): MediaStreamTrack[]; - removeTrack(track: MediaStreamTrack): void; -} - -declare class MediaStreamTrack extends EventTarget { - enabled: boolean; - id: string; - kind: string; - label: string; - muted: boolean; - readonly: boolean; - readyState: 'live' | 'ended'; - remote: boolean; - contentHint?: string; - onstarted: (ev: any) => unknown; - onmute: (ev: any) => unknown; - onunmute: (ev: any) => unknown; - onoverconstrained: (ev: any) => unknown; - onended: (ev: any) => unknown; - getConstraints(): MediaTrackConstraints; - applyConstraints(constraints?: MediaTrackConstraints): Promise; - getSettings(): MediaTrackSettings; - getCapabilities(): MediaTrackCapabilities; - clone(): MediaStreamTrack; - stop(): void; -} - -declare class MediaStreamTrackEvent extends Event { - track: MediaStreamTrack; -} - -declare class MediaElementAudioSourceNode extends AudioNode {} -declare class MediaStreamAudioSourceNode extends AudioNode {} -declare class MediaStreamTrackAudioSourceNode extends AudioNode {} - -declare class MediaStreamAudioDestinationNode extends AudioNode { - stream: MediaStream; -} - -// deprecated -declare class ScriptProcessorNode extends AudioNode { - bufferSize: number; - onaudioprocess: (ev: AudioProcessingEvent) => unknown; -} - -declare class AnalyserNode extends AudioNode { - fftSize: number; - frequencyBinCount: number; - minDecibels: number; - maxDecibels: number; - smoothingTimeConstant: number; - getFloatFrequencyData(array: Float32Array): Float32Array; - getByteFrequencyData(array: Uint8Array): Uint8Array; - getFloatTimeDomainData(array: Float32Array): Float32Array; - getByteTimeDomainData(array: Uint8Array): Uint8Array; -} - -declare class BiquadFilterNode extends AudioNode { - frequency: AudioParam; - detune: AudioParam; - Q: AudioParam; - gain: AudioParam; - type: - | 'lowpass' - | 'highpass' - | 'bandpass' - | 'lowshelf' - | 'highshelf' - | 'peaking' - | 'notch' - | 'allpass'; - getFrequencyResponse( - frequencyHz: Float32Array, - magResponse: Float32Array, - phaseResponse: Float32Array, - ): void; -} - -declare class ChannelMergerNode extends AudioNode {} -declare class ChannelSplitterNode extends AudioNode {} - -type ConstantSourceOptions = {offset?: number, ...}; -declare class ConstantSourceNode extends AudioNode { - constructor(context: BaseAudioContext, options?: ConstantSourceOptions): void; - offset: AudioParam; - onended: (ev: any) => unknown; - start(when?: number): void; - stop(when?: number): void; -} - -declare class ConvolverNode extends AudioNode { - buffer: AudioBuffer; - normalize: boolean; -} - -declare class DelayNode extends AudioNode { - delayTime: number; -} - -declare class DynamicsCompressorNode extends AudioNode { - threshold: AudioParam; - knee: AudioParam; - ratio: AudioParam; - reduction: AudioParam; - attack: AudioParam; - release: AudioParam; -} - -declare class GainNode extends AudioNode { - gain: AudioParam; -} - -declare class IIRFilterNode extends AudioNode { - getFrequencyResponse( - frequencyHz: Float32Array, - magResponse: Float32Array, - phaseResponse: Float32Array, - ): void; -} - -declare class OscillatorNode extends AudioNode { - frequency: AudioParam; - detune: AudioParam; - type: 'sine' | 'square' | 'sawtooth' | 'triangle' | 'custom'; - start(when?: number): void; - stop(when?: number): void; - setPeriodicWave(periodicWave: PeriodicWave): void; - onended: (ev: any) => unknown; -} - -declare class StereoPannerNode extends AudioNode { - pan: AudioParam; -} - -declare class PannerNode extends AudioNode { - panningModel: 'equalpower' | 'HRTF'; - distanceModel: 'linear' | 'inverse' | 'exponential'; - refDistance: number; - maxDistance: number; - rolloffFactor: number; - coneInnerAngle: number; - coneOuterAngle: number; - coneOuterGain: number; - setPosition(x: number, y: number, z: number): void; - setOrientation(x: number, y: number, z: number): void; -} - -declare class PeriodicWave extends AudioNode {} -declare class WaveShaperNode extends AudioNode { - curve: Float32Array; - oversample: 'none' | '2x' | '4x'; -} - -// this part of spec is not finished yet, apparently -// https://stackoverflow.com/questions/35296664/can-fetch-get-object-as-headers -type HeadersInit = - Headers | Array<[string, string]> | {[key: string]: string, ...}; - -// TODO Heades and URLSearchParams are almost the same thing. -// Could it somehow be abstracted away? -declare class Headers { - @@iterator(): Iterator<[string, string]>; - constructor(init?: HeadersInit): void; - append(name: string, value: string): void; - delete(name: string): void; - entries(): Iterator<[string, string]>; - forEach( - callback: ( - this: This, - value: string, - name: string, - headers: Headers, - ) => unknown, - thisArg: This, - ): void; - get(name: string): null | string; - has(name: string): boolean; - keys(): Iterator; - set(name: string, value: string): void; - values(): Iterator; -} - -declare class URLSearchParams { - @@iterator(): Iterator<[string, string]>; - - size: number; - - constructor( - init?: - | string - | URLSearchParams - | Array<[string, string]> - | {[string]: string, ...}, - ): void; - append(name: string, value: string): void; - delete(name: string, value?: string): void; - entries(): Iterator<[string, string]>; - forEach( - callback: ( - this: This, - value: string, - name: string, - params: URLSearchParams, - ) => unknown, - thisArg: This, - ): void; - get(name: string): null | string; - getAll(name: string): Array; - has(name: string, value?: string): boolean; - keys(): Iterator; - set(name: string, value: string): void; - sort(): void; - values(): Iterator; - toString(): string; -} - -type CacheType = - | 'default' - | 'no-store' - | 'reload' - | 'no-cache' - | 'force-cache' - | 'only-if-cached'; -type CredentialsType = 'omit' | 'same-origin' | 'include'; -type ModeType = 'cors' | 'no-cors' | 'same-origin' | 'navigate'; -type RedirectType = 'follow' | 'error' | 'manual'; -type ReferrerPolicyType = - | '' - | 'no-referrer' - | 'no-referrer-when-downgrade' - | 'same-origin' - | 'origin' - | 'strict-origin' - | 'origin-when-cross-origin' - | 'strict-origin-when-cross-origin' - | 'unsafe-url'; - -type ResponseType = - 'basic' | 'cors' | 'default' | 'error' | 'opaque' | 'opaqueredirect'; - -type BodyInit = - | string - | URLSearchParams - | FormData - | Blob - | ArrayBuffer - | $ArrayBufferView - | ReadableStream; - -type RequestInfo = Request | URL | string; - -type RequestOptions = { - body?: ?BodyInit, - cache?: CacheType, - credentials?: CredentialsType, - headers?: HeadersInit, - integrity?: string, - keepalive?: boolean, - method?: string, - mode?: ModeType, - redirect?: RedirectType, - referrer?: string, - referrerPolicy?: ReferrerPolicyType, - signal?: ?AbortSignal, - window?: any, - ... -}; - -type ResponseOptions = { - status?: number, - statusText?: string, - headers?: HeadersInit, - ... -}; - -declare class Response { - constructor(input?: ?BodyInit, init?: ResponseOptions): void; - clone(): Response; - static error(): Response; - static redirect(url: string, status?: number): Response; - - redirected: boolean; - type: ResponseType; - url: string; - ok: boolean; - status: number; - statusText: string; - headers: Headers; - trailer: Promise; - - // Body methods and attributes - bodyUsed: boolean; - body: ?ReadableStream; - - arrayBuffer(): Promise; - blob(): Promise; - formData(): Promise; - json(): Promise; - text(): Promise; -} - -declare class Request { - constructor(input: RequestInfo, init?: RequestOptions): void; - clone(): Request; - - url: string; - - cache: CacheType; - credentials: CredentialsType; - headers: Headers; - integrity: string; - method: string; - mode: ModeType; - redirect: RedirectType; - referrer: string; - referrerPolicy: ReferrerPolicyType; - readonly signal: AbortSignal; - - // Body methods and attributes - bodyUsed: boolean; - - arrayBuffer(): Promise; - blob(): Promise; - formData(): Promise; - json(): Promise; - text(): Promise; -} - -declare class AbortController { - constructor(): void; - readonly signal: AbortSignal; - abort(reason?: any): void; -} - -declare class AbortSignal extends EventTarget { - readonly aborted: boolean; - readonly reason: any; - static abort(reason?: any): AbortSignal; - static any(signals: Iterable): AbortSignal; - onabort: (event: Event) => unknown; - throwIfAborted(): void; - static timeout(time: number): AbortSignal; -} - -declare function fetch( - input: RequestInfo, - init?: RequestOptions, -): Promise; - -type TextEncoder$availableEncodings = - 'utf-8' | 'utf8' | 'unicode-1-1-utf-8' | 'utf-16be' | 'utf-16' | 'utf-16le'; - -declare class TextEncoder { - constructor(encoding?: TextEncoder$availableEncodings): void; - encode(buffer: string, options?: {stream: boolean, ...}): Uint8Array; - encoding: TextEncoder$availableEncodings; -} - -type TextDecoder$availableEncodings = - | '866' - | 'ansi_x3.4-1968' - | 'arabic' - | 'ascii' - | 'asmo-708' - | 'big5-hkscs' - | 'big5' - | 'chinese' - | 'cn-big5' - | 'cp1250' - | 'cp1251' - | 'cp1252' - | 'cp1253' - | 'cp1254' - | 'cp1255' - | 'cp1256' - | 'cp1257' - | 'cp1258' - | 'cp819' - | 'cp866' - | 'csbig5' - | 'cseuckr' - | 'cseucpkdfmtjapanese' - | 'csgb2312' - | 'csibm866' - | 'csiso2022jp' - | 'csiso2022kr' - | 'csiso58gb231280' - | 'csiso88596e' - | 'csiso88596i' - | 'csiso88598e' - | 'csiso88598i' - | 'csisolatin1' - | 'csisolatin2' - | 'csisolatin3' - | 'csisolatin4' - | 'csisolatin5' - | 'csisolatin6' - | 'csisolatin9' - | 'csisolatinarabic' - | 'csisolatincyrillic' - | 'csisolatingreek' - | 'csisolatinhebrew' - | 'cskoi8r' - | 'csksc56011987' - | 'csmacintosh' - | 'csshiftjis' - | 'cyrillic' - | 'dos-874' - | 'ecma-114' - | 'ecma-118' - | 'elot_928' - | 'euc-jp' - | 'euc-kr' - | 'gb_2312-80' - | 'gb_2312' - | 'gb18030' - | 'gb2312' - | 'gbk' - | 'greek' - | 'greek8' - | 'hebrew' - | 'hz-gb-2312' - | 'ibm819' - | 'ibm866' - | 'iso_8859-1:1987' - | 'iso_8859-1' - | 'iso_8859-2:1987' - | 'iso_8859-2' - | 'iso_8859-3:1988' - | 'iso_8859-3' - | 'iso_8859-4:1988' - | 'iso_8859-4' - | 'iso_8859-5:1988' - | 'iso_8859-5' - | 'iso_8859-6:1987' - | 'iso_8859-6' - | 'iso_8859-7:1987' - | 'iso_8859-7' - | 'iso_8859-8:1988' - | 'iso_8859-8' - | 'iso_8859-9:1989' - | 'iso_8859-9' - | 'iso-2022-cn-ext' - | 'iso-2022-cn' - | 'iso-2022-jp' - | 'iso-2022-kr' - | 'iso-8859-1' - | 'iso-8859-10' - | 'iso-8859-11' - | 'iso-8859-13' - | 'iso-8859-14' - | 'iso-8859-15' - | 'iso-8859-16' - | 'iso-8859-2' - | 'iso-8859-3' - | 'iso-8859-4' - | 'iso-8859-5' - | 'iso-8859-6-e' - | 'iso-8859-6-i' - | 'iso-8859-6' - | 'iso-8859-7' - | 'iso-8859-8-e' - | 'iso-8859-8-i' - | 'iso-8859-8' - | 'iso-8859-9' - | 'iso-ir-100' - | 'iso-ir-101' - | 'iso-ir-109' - | 'iso-ir-110' - | 'iso-ir-126' - | 'iso-ir-127' - | 'iso-ir-138' - | 'iso-ir-144' - | 'iso-ir-148' - | 'iso-ir-149' - | 'iso-ir-157' - | 'iso-ir-58' - | 'iso8859-1' - | 'iso8859-10' - | 'iso8859-11' - | 'iso8859-13' - | 'iso8859-14' - | 'iso8859-15' - | 'iso8859-2' - | 'iso8859-3' - | 'iso8859-4' - | 'iso8859-6' - | 'iso8859-7' - | 'iso8859-8' - | 'iso8859-9' - | 'iso88591' - | 'iso885910' - | 'iso885911' - | 'iso885913' - | 'iso885914' - | 'iso885915' - | 'iso88592' - | 'iso88593' - | 'iso88594' - | 'iso88595' - | 'iso88596' - | 'iso88597' - | 'iso88598' - | 'iso88599' - | 'koi' - | 'koi8_r' - | 'koi8-r' - | 'koi8-u' - | 'koi8' - | 'korean' - | 'ks_c_5601-1987' - | 'ks_c_5601-1989' - | 'ksc_5601' - | 'ksc5601' - | 'l1' - | 'l2' - | 'l3' - | 'l4' - | 'l5' - | 'l6' - | 'l9' - | 'latin1' - | 'latin2' - | 'latin3' - | 'latin4' - | 'latin5' - | 'latin6' - | 'latin9' - | 'logical' - | 'mac' - | 'macintosh' - | 'ms_kanji' - | 'shift_jis' - | 'shift-jis' - | 'sjis' - | 'sun_eu_greek' - | 'tis-620' - | 'unicode-1-1-utf-8' - | 'us-ascii' - | 'utf-16' - | 'utf-16be' - | 'utf-16le' - | 'utf-8' - | 'utf8' - | 'visual' - | 'windows-1250' - | 'windows-1251' - | 'windows-1252' - | 'windows-1253' - | 'windows-1254' - | 'windows-1255' - | 'windows-1256' - | 'windows-1257' - | 'windows-1258' - | 'windows-31j' - | 'windows-874' - | 'windows-949' - | 'x-cp1250' - | 'x-cp1251' - | 'x-cp1252' - | 'x-cp1253' - | 'x-cp1254' - | 'x-cp1255' - | 'x-cp1256' - | 'x-cp1257' - | 'x-cp1258' - | 'x-euc-jp' - | 'x-gbk' - | 'x-mac-cyrillic' - | 'x-mac-roman' - | 'x-mac-ukrainian' - | 'x-sjis' - | 'x-user-defined' - | 'x-x-big5'; - -declare class TextDecoder { - constructor( - encoding?: TextDecoder$availableEncodings, - options?: {fatal: boolean, ...}, - ): void; - encoding: TextDecoder$availableEncodings; - fatal: boolean; - ignoreBOM: boolean; - decode( - buffer?: ArrayBuffer | $ArrayBufferView, - options?: {stream: boolean, ...}, - ): string; -} - -declare class TextDecoderStream { - constructor( - encoding?: TextDecoder$availableEncodings, - options?: {fatal?: boolean, ignoreBOM?: boolean, ...}, - ): void; - encoding: TextDecoder$availableEncodings; - fatal: boolean; - ignoreBOM: boolean; - readable: ReadableStream; - writable: WritableStream; -} - -declare class MessagePort extends EventTarget { - postMessage(message: any, transfer?: Iterable): void; - start(): void; - close(): void; - - onmessage: null | ((ev: MessageEvent) => unknown); - onmessageerror: null | ((ev: MessageEvent) => unknown); -} - -declare class MessageChannel { - port1: MessagePort; - port2: MessagePort; -} - -declare class VRDisplay extends EventTarget { - capabilities: VRDisplayCapabilities; - depthFar: number; - depthNear: number; - displayId: number; - displayName: string; - isPresenting: boolean; - stageParameters: null | VRStageParameters; - - cancelAnimationFrame(number): void; - exitPresent(): Promise; - getEyeParameters(VREye): VREyeParameters; - getFrameData(VRFrameData): boolean; - getLayers(): VRLayerInit[]; - requestAnimationFrame(cb: (number) => unknown): number; - requestPresent(VRLayerInit[]): Promise; - submitFrame(): void; -} - -type VRSource = HTMLCanvasElement; - -type VRLayerInit = { - leftBounds?: number[], - rightBounds?: number[], - source?: null | VRSource, - ... -}; - -type VRDisplayCapabilities = { - canPresent: boolean, - hasExternalDisplay: boolean, - hasPosition: boolean, - maxLayers: number, - ... -}; - -type VREye = 'left' | 'right'; - -type VRPose = { - angularAcceleration?: Float32Array, - angularVelocity?: Float32Array, - linearAcceleration?: Float32Array, - linearVelocity?: Float32Array, - orientation?: Float32Array, - position?: Float32Array, - ... -}; - -declare class VRFrameData { - leftProjectionMatrix: Float32Array; - leftViewMatrix: Float32Array; - pose: VRPose; - rightProjectionMatrix: Float32Array; - rightViewMatrix: Float32Array; - timestamp: number; -} - -type VREyeParameters = { - offset: Float32Array, - renderWidth: number, - renderHeight: number, - ... -}; - -type VRStageParameters = { - sittingToStandingTransform: Float32Array, - sizeX: number, - sizeZ: number, - ... -}; - -type VRDisplayEventReason = - 'mounted' | 'navigation' | 'requested' | 'unmounted'; - -type VRDisplayEventInit = { - display: VRDisplay, - reason: VRDisplayEventReason, - ... -}; - -declare class VRDisplayEvent extends Event { - constructor(type: string, eventInitDict: VRDisplayEventInit): void; - display: VRDisplay; - reason?: VRDisplayEventReason; -} - -declare class MediaQueryListEvent { - matches: boolean; - media: string; -} - -declare type MediaQueryListListener = (MediaQueryListEvent) => void; - -declare class MediaQueryList extends EventTarget { - matches: boolean; - media: string; - addListener: MediaQueryListListener => void; - removeListener: MediaQueryListListener => void; - onchange: MediaQueryListListener; -} - -declare var matchMedia: string => MediaQueryList; - -// https://w3c.github.io/webappsec-credential-management/#idl-index -declare type CredMgmtCredentialRequestOptions = { - mediation?: 'silent' | 'optional' | 'required', - signal?: AbortSignal, - ... -}; - -declare type CredMgmtCredentialCreationOptions = {signal: AbortSignal, ...}; - -declare interface CredMgmtCredential { - id: string; - type: string; -} - -declare interface CredMgmtPasswordCredential extends CredMgmtCredential { - password: string; -} - -declare interface CredMgmtCredentialsContainer { - get(option?: CredMgmtCredentialRequestOptions): Promise; - store(credential: CredMgmtCredential): Promise; - create( - creationOption?: CredMgmtCredentialCreationOptions, - ): Promise; - preventSilentAccess(): Promise; -} - -type SpeechSynthesisErrorCode = - | 'canceled' - | 'interrupted' - | 'audio-busy' - | 'audio-hardware' - | 'network' - | 'synthesis-unavailable' - | 'synthesis-failed' - | 'language-unavailable' - | 'voice-unavailable' - | 'text-too-long' - | 'invalid-argument' - | 'not-allowed'; - -declare class SpeechSynthesis extends EventTarget { - readonly pending: boolean; - readonly speaking: boolean; - readonly paused: boolean; - - onvoiceschanged: ?(ev: Event) => unknown; - - speak(utterance: SpeechSynthesisUtterance): void; - cancel(): void; - pause(): void; - resume(): void; - getVoices(): Array; -} - -declare var speechSynthesis: SpeechSynthesis; - -declare class SpeechSynthesisUtterance extends EventTarget { - constructor(text?: string): void; - - text: string; - lang: string; - voice: SpeechSynthesisVoice | null; - volume: number; - rate: number; - pitch: number; - - onstart: ?(ev: SpeechSynthesisEvent) => unknown; - onend: ?(ev: SpeechSynthesisEvent) => unknown; - onerror: ?(ev: SpeechSynthesisErrorEvent) => unknown; - onpause: ?(ev: SpeechSynthesisEvent) => unknown; - onresume: ?(ev: SpeechSynthesisEvent) => unknown; - onmark: ?(ev: SpeechSynthesisEvent) => unknown; - onboundary: ?(ev: SpeechSynthesisEvent) => unknown; -} - -type SpeechSynthesisEvent$Init = Event$Init & { - utterance: SpeechSynthesisUtterance, - charIndex?: number, - charLength?: number, - elapsedTime?: number, - name?: string, - ... -}; - -declare class SpeechSynthesisEvent extends Event { - constructor(type: string, eventInitDict?: SpeechSynthesisEvent$Init): void; - - readonly utterance: SpeechSynthesisUtterance; - charIndex: number; - charLength: number; - elapsedTime: number; - name: string; -} - -type SpeechSynthesisErrorEvent$Init = SpeechSynthesisEvent$Init & { - error: SpeechSynthesisErrorCode, - ... -}; - -declare class SpeechSynthesisErrorEvent extends SpeechSynthesisEvent { - constructor( - type: string, - eventInitDict?: SpeechSynthesisErrorEvent$Init, - ): void; - readonly error: SpeechSynthesisErrorCode; -} - -declare class SpeechSynthesisVoice { - readonly voiceURI: string; - readonly name: string; - readonly lang: string; - readonly localService: boolean; - readonly default: boolean; -} - -type SpeechRecognitionErrorCode = - | 'no-speech' - | 'aborted' - | 'audio-capture' - | 'not-allowed' - | 'service-not-allowed' - | 'bad-grammar' - | 'language-not-supported'; - -declare class SpeechGrammar { - constructor(): void; - - src: string; - weight?: number; -} - -declare class SpeechGrammarList { - readonly length: number; - - item(index: number): SpeechGrammar; - addFromURI(src: string, weight?: number): void; - addFromString(string: string, weight?: number): void; -} - -declare class SpeechRecognitionAlternative { - readonly transcript: string; - readonly confidence: number; -} - -declare class SpeechRecognitionResult { - readonly isFinal: boolean; - readonly length: number; - - item(index: number): SpeechRecognitionAlternative; -} - -declare class SpeechRecognitionResultList { - readonly length: number; - - item(index: number): SpeechRecognitionResult; -} - -type SpeechRecognitionEvent$Init = Event$Init & { - emma: any, - interpretation: any, - resultIndex: number, - results: SpeechRecognitionResultList, - ... -}; - -declare class SpeechRecognitionEvent extends Event { - constructor(type: string, eventInitDict?: SpeechRecognitionEvent$Init): void; - - readonly emma: any; - readonly interpretation: any; - readonly resultIndex: number; - readonly results: SpeechRecognitionResultList; -} - -type SpeechRecognitionErrorEvent$Init = SpeechRecognitionEvent$Init & { - error: SpeechRecognitionErrorCode, - ... -}; - -declare class SpeechRecognitionErrorEvent extends SpeechRecognitionEvent { - constructor( - type: string, - eventInitDict?: SpeechRecognitionErrorEvent$Init, - ): void; - readonly error: SpeechRecognitionErrorCode; - readonly message: string; -} - -declare class SpeechRecognition extends EventTarget { - constructor(): void; - - readonly grammars: SpeechGrammar[]; - readonly lang: string; - readonly continuous: boolean; - readonly interimResults: boolean; - readonly maxAlternatives: number; - readonly serviceURI: string; - - onaudiostart: ?(ev: Event) => unknown; - onaudioend: ?(ev: Event) => unknown; - onend: ?(ev: Event) => unknown; - onerror: ?(ev: Event) => unknown; - onnomatch: ?(ev: Event) => unknown; - onsoundstart: ?(ev: Event) => unknown; - onsoundend: ?(ev: Event) => unknown; - onspeechstart: ?(ev: Event) => unknown; - onspeechend: ?(ev: Event) => unknown; - onstart: ?(ev: Event) => unknown; - - abort(): void; - start(): void; - stop(): void; -} - -/* Trusted Types - * https://w3c.github.io/trusted-types/dist/spec/#trusted-types - */ -declare class TrustedHTML { - toString(): string; - toJSON(): string; -} - -declare class TrustedScript { - toString(): string; - toJSON(): string; -} - -declare class TrustedScriptURL { - toString(): string; - toJSON(): string; -} - -declare class TrustedTypePolicy { - readonly name: string; - createHTML(input: string, ...args: Array): TrustedHTML; - createScript(input: string, ...args: Array): TrustedScript; - createScriptURL(input: string, ...args: Array): TrustedScriptURL; -} - -declare type TrustedTypePolicyOptions = {| - createHTML?: (string, ...args: Array) => string, - createScript?: (string, ...args: Array) => string, - createScriptURL?: (string, ...args: Array) => string, -|}; - -// window.trustedTypes?: TrustedTypePolicyFactory -declare class TrustedTypePolicyFactory { - readonly emptyHTML: TrustedHTML; - readonly emptyScript: TrustedScript; - readonly defaultPolicy: ?TrustedTypePolicy; - readonly isHTML: (value: unknown) => value is TrustedHTML; - readonly isScript: (value: unknown) => value is TrustedScript; - readonly isScriptURL: (value: unknown) => value is TrustedScriptURL; - createPolicy( - policyName: string, - policyOptions?: TrustedTypePolicyOptions, - ): TrustedTypePolicy; - getAttributeType( - tagName: string, - attribute?: string, - elementNS?: string, - attrNS?: string, - ): null | string; - getPropertyType( - tagName: string, - property: string, - elementNS?: string, - ): null | string; -} - -// https://wicg.github.io/webusb/ -// https://developer.mozilla.org/en-US/docs/Web/API/USBDevice -declare class USBDevice { - configuration: USBConfiguration; - configurations: Array; - deviceClass: number; - deviceProtocol: number; - deviceSubclass: number; - deviceVersionMajor: number; - deviceVersionMinor: number; - deviceVersionSubminor: number; - manufacturerName: ?string; - opened: boolean; - productId: number; - productName: ?string; - serialNumber: ?string; - usbVersionMajor: number; - usbVersionMinor: number; - usbVersionSubminor: number; - vendorId: number; - claimInterface(interfaceNumber: number): Promise; - clearHalt(direction: 'in' | 'out', endpointNumber: number): Promise; - close(): Promise; - controlTransferIn( - setup: SetUpOptions, - length: number, - ): Promise; - controlTransferOut( - setup: SetUpOptions, - data: ArrayBuffer, - ): Promise; - forget(): Promise; - isochronousTransferIn( - endpointNumber: number, - packetLengths: Array, - ): Promise; - isochronousTransferOut( - endpointNumber: number, - data: ArrayBuffer, - packetLengths: Array, - ): Promise; - open(): Promise; - releaseInterface(interfaceNumber: number): Promise; - reset(): Promise; - selectAlternateInterface( - interfaceNumber: number, - alternateSetting: number, - ): Promise; - selectConfiguration(configurationValue: number): Promise; - transferIn( - endpointNumber: number, - length: number, - ): Promise; - transferOut( - endpointNumber: number, - data: ArrayBuffer, - ): Promise; -} - -declare class USB extends EventTarget { - getDevices(): Promise>; - requestDevice(options: USBDeviceRequestOptions): Promise; -} - -declare type USBDeviceFilter = {| - vendorId?: number, - productId?: number, - classCode?: number, - subclassCode?: number, - protocolCode?: number, - serialNumber?: string, -|}; - -declare type USBDeviceRequestOptions = {| - filters: Array, - exclusionFilters?: Array, -|}; - -declare class USBConfiguration { - constructor(): void; - configurationName: ?string; - configurationValue: number; - interfaces: ReadonlyArray; -} - -declare class USBInterface { - constructor(): void; - interfaceNumber: number; - alternate: USBAlternateInterface; - alternates: Array; - claimed: boolean; -} - -declare class USBAlternateInterface { - constructor(): void; - alternateSetting: number; - interfaceClass: number; - interfaceSubclass: number; - interfaceProtocol: number; - interfaceName: ?string; - endpoints: Array; -} - -declare class USBEndpoint { - constructor(): void; - endpointNumber: number; - direction: 'in' | 'out'; - type: 'bulk' | 'interrupt' | 'isochronous'; - packetSize: number; -} - -declare class USBOutTransferResult { - constructor(): void; - bytesWritten: number; - status: 'ok' | 'stall'; -} - -declare class USBInTransferResult { - constructor(): void; - data: DataView; - status: 'ok' | 'stall' | 'babble'; -} - -declare class USBIsochronousInTransferResult { - constructor(): void; - data: DataView; - packets: Array; -} - -declare class USBIsochronousInTransferPacket { - constructor(): void; - data: DataView; - status: 'ok' | 'stall' | 'babble'; -} - -declare class USBIsochronousOutTransferResult { - constructor(): void; - packets: Array; -} - -declare class USBIsochronousOutTransferPacket { - constructor(): void; - bytesWritten: number; - status: 'ok' | 'stall'; -} - -type SetUpOptions = { - requestType: string, - recipient: string, - request: number, - value: number, - index: number, - ... -}; - -declare type FileSystemHandleKind = 'file' | 'directory'; - -// https://wicg.github.io/file-system-access/#api-filesystemhandle -declare class FileSystemHandle { - readonly kind: FileSystemHandleKind; - readonly name: string; - - isSameEntry: (other: FileSystemHandle) => Promise; - queryPermission?: ( - descriptor: FileSystemHandlePermissionDescriptor, - ) => Promise; - requestPermission?: ( - descriptor: FileSystemHandlePermissionDescriptor, - ) => Promise; -} - -// https://fs.spec.whatwg.org/#api-filesystemfilehandle -declare class FileSystemFileHandle extends FileSystemHandle { - readonly kind: 'file'; - - constructor(name: string): void; - - getFile(): Promise; - createSyncAccessHandle(): Promise; - createWritable(options?: {| - keepExistingData?: boolean, - |}): Promise; -} - -// https://fs.spec.whatwg.org/#api-filesystemdirectoryhandle -declare class FileSystemDirectoryHandle extends FileSystemHandle { - readonly kind: 'directory'; - - constructor(name: string): void; - - getDirectoryHandle( - name: string, - options?: {|create?: boolean|}, - ): Promise; - getFileHandle( - name: string, - options?: {|create?: boolean|}, - ): Promise; - removeEntry(name: string, options?: {|recursive?: boolean|}): Promise; - resolve(possibleDescendant: FileSystemHandle): Promise | null>; - - // Async iterator functions - @@asyncIterator(): AsyncIterator<[string, FileSystemHandle]>; - entries(): AsyncIterator<[string, FileSystemHandle]>; - keys(): AsyncIterator; - values(): AsyncIterator; -} - -// https://fs.spec.whatwg.org/#api-filesystemsyncaccesshandle -declare class FileSystemSyncAccessHandle { - close(): void; - flush(): void; - getSize(): number; - read(buffer: ArrayBuffer, options?: {|at: number|}): number; - truncate(newSize: number): void; - write(buffer: ArrayBuffer, options?: {|at: number|}): number; -} - -// https://streams.spec.whatwg.org/#default-writer-class -declare class WritableStreamDefaultWriter { - readonly closed: Promise; - readonly desiredSize: number; - readonly ready: Promise; - - constructor(): void; - - abort(reason?: string): Promise; - close(): Promise; - releaseLock(): void; - write(chunk: any): Promise; -} - -// https://streams.spec.whatwg.org/#ws-class -declare class WriteableStream { - readonly locked: boolean; - - constructor(): void; - - abort(reason: string): Promise; - close(): Promise; - getWriter(): WritableStreamDefaultWriter; -} - -// https://fs.spec.whatwg.org/#dictdef-writeparams -declare type FileSystemWriteableFileStreamDataTypes = - ArrayBuffer | $TypedArray | DataView | Blob | string; - -// https://fs.spec.whatwg.org/#dictdef-writeparams -declare type FileSystemWriteableFileStreamData = - | FileSystemWriteableFileStreamDataTypes - | {| - type: 'write', - position?: number, - data: FileSystemWriteableFileStreamDataTypes, - |} - | {| - type: 'seek', - position: number, - data: FileSystemWriteableFileStreamDataTypes, - |} - | {| - type: 'size', - size: number, - |}; - -// https://fs.spec.whatwg.org/#api-filesystemwritablefilestream -declare class FileSystemWritableFileStream extends WriteableStream { - write(data: FileSystemWriteableFileStreamData): Promise; - truncate(size: number): Promise; - seek(position: number): Promise; -} diff --git a/flow-typed/environment/cssom.js b/flow-typed/environment/cssom.js deleted file mode 100644 index 28706f3950..0000000000 --- a/flow-typed/environment/cssom.js +++ /dev/null @@ -1,569 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @format - * @oncall flow - */ - -// Adapted from https://github.com/flow-typed/flow-typed/blob/main/definitions/environments/cssom/flow_v0.261.x-/cssom.js - -declare class StyleSheet { - disabled: boolean; - readonly href: string; - readonly media: MediaList; - readonly ownerNode: Node; - readonly parentStyleSheet: ?StyleSheet; - readonly title: string; - readonly type: string; -} - -declare class StyleSheetList { - @@iterator(): Iterator; - length: number; - [index: number]: StyleSheet; -} - -declare class MediaList { - @@iterator(): Iterator; - appendMedium(newMedium: string): void; - deleteMedium(oldMedium: string): void; - item(index: number): ?string; - length: number; - mediaText: string; - [index: number]: string; -} - -declare class CSSStyleSheet extends StyleSheet { - readonly cssRules: CSSRuleList; - deleteRule(index: number): void; - insertRule(rule: string, index: number): number; - readonly ownerRule: ?CSSRule; - replace(text: string): Promise; - replaceSync(text: string): void; -} - -declare class CSSRule { - static CHARSET_RULE: number; - static COUNTER_STYLE_RULE: number; - cssText: string; - static DOCUMENT_RULE: number; - static FONT_FACE_RULE: number; - static FONT_FEATURE_VALUES_RULE: number; - static IMPORT_RULE: number; - static KEYFRAME_RULE: number; - static KEYFRAMES_RULE: number; - static MEDIA_RULE: number; - static NAMESPACE_RULE: number; - static PAGE_RULE: number; - readonly parentRule: ?CSSRule; - readonly parentStyleSheet: ?CSSStyleSheet; - static REGION_STYLE_RULE: number; - static STYLE_RULE: number; - static SUPPORTS_RULE: number; - readonly type: number; - static UNKNOWN_RULE: number; - static VIEWPORT_RULE: number; -} - -declare class CSSKeyframeRule extends CSSRule { - keyText: string; - readonly style: CSSStyleDeclaration; -} - -declare class CSSKeyframesRule extends CSSRule { - appendRule(rule: string): void; - readonly cssRules: CSSRuleList; - deleteRule(select: string): void; - findRule(select: string): CSSKeyframeRule | null; - name: string; -} - -declare class CSSRuleList { - @@iterator(): Iterator; - item(index: number): ?CSSRule; - length: number; - [index: number]: CSSRule; -} - -declare class CSSStyleDeclaration { - @@iterator(): Iterator; - /* DOM CSS Properties */ - alignContent: string; - alignItems: string; - alignSelf: string; - all: string; - animation: string; - animationDelay: string; - animationDirection: string; - animationDuration: string; - animationFillMode: string; - animationIterationCount: string; - animationName: string; - animationPlayState: string; - animationTimingFunction: string; - backdropFilter: string; - backfaceVisibility: string; - background: string; - backgroundAttachment: string; - backgroundBlendMode: string; - backgroundClip: string; - backgroundColor: string; - backgroundImage: string; - backgroundOrigin: string; - backgroundPosition: string; - backgroundPositionX: string; - backgroundPositionY: string; - backgroundRepeat: string; - backgroundSize: string; - blockSize: string; - border: string; - borderBlockEnd: string; - borderBlockEndColor: string; - borderBlockEndStyle: string; - borderBlockEndWidth: string; - borderBlockStart: string; - borderBlockStartColor: string; - borderBlockStartStyle: string; - borderBlockStartWidth: string; - borderBottom: string; - borderBottomColor: string; - borderBottomLeftRadius: string; - borderBottomRightRadius: string; - borderBottomStyle: string; - borderBottomWidth: string; - borderCollapse: string; - borderColor: string; - borderImage: string; - borderImageOutset: string; - borderImageRepeat: string; - borderImageSlice: string; - borderImageSource: string; - borderImageWidth: string; - borderInlineEnd: string; - borderInlineEndColor: string; - borderInlineEndStyle: string; - borderInlineEndWidth: string; - borderInlineStart: string; - borderInlineStartColor: string; - borderInlineStartStyle: string; - borderInlineStartWidth: string; - borderLeft: string; - borderLeftColor: string; - borderLeftStyle: string; - borderLeftWidth: string; - borderRadius: string; - borderRight: string; - borderRightColor: string; - borderRightStyle: string; - borderRightWidth: string; - borderSpacing: string; - borderStyle: string; - borderTop: string; - borderTopColor: string; - borderTopLeftRadius: string; - borderTopRightRadius: string; - borderTopStyle: string; - borderTopWidth: string; - borderWidth: string; - bottom: string; - boxDecorationBreak: string; - boxShadow: string; - boxSizing: string; - breakAfter: string; - breakBefore: string; - breakInside: string; - captionSide: string; - clear: string; - clip: string; - clipPath: string; - color: string; - columnCount: string; - columnFill: string; - columnGap: string; - columnRule: string; - columnRuleColor: string; - columnRuleStyle: string; - columnRuleWidth: string; - columns: string; - columnSpan: string; - columnWidth: string; - contain: string; - content: string; - counterIncrement: string; - counterReset: string; - cssFloat: string; - cssText: string; - cursor: string; - direction: string; - display: string; - emptyCells: string; - filter: string; - flex: string; - flexBasis: string; - flexDirection: string; - flexFlow: string; - flexGrow: string; - flexShrink: string; - flexWrap: string; - float: string; - font: string; - fontFamily: string; - fontFeatureSettings: string; - fontKerning: string; - fontLanguageOverride: string; - fontSize: string; - fontSizeAdjust: string; - fontStretch: string; - fontStyle: string; - fontSynthesis: string; - fontVariant: string; - fontVariantAlternates: string; - fontVariantCaps: string; - fontVariantEastAsian: string; - fontVariantLigatures: string; - fontVariantNumeric: string; - fontVariantPosition: string; - fontWeight: string; - getPropertyPriority(property: string): string; - getPropertyValue(property: string): string; - grad: string; - grid: string; - gridArea: string; - gridAutoColumns: string; - gridAutoFlow: string; - gridAutoPosition: string; - gridAutoRows: string; - gridColumn: string; - gridColumnEnd: string; - gridColumnStart: string; - gridRow: string; - gridRowEnd: string; - gridRowStart: string; - gridTemplate: string; - gridTemplateAreas: string; - gridTemplateColumns: string; - gridTemplateRows: string; - height: string; - hyphens: string; - imageOrientation: string; - imageRendering: string; - imageResolution: string; - imeMode: string; - inherit: string; - initial: string; - inlineSize: string; - isolation: string; - item(index: number): string; - justifyContent: string; - left: string; - length: number; - letterSpacing: string; - lineBreak: string; - lineHeight: string; - listStyle: string; - listStyleImage: string; - listStylePosition: string; - listStyleType: string; - margin: string; - marginBlockEnd: string; - marginBlockStart: string; - marginBottom: string; - marginInlineEnd: string; - marginInlineStart: string; - marginLeft: string; - marginRight: string; - marginTop: string; - marks: string; - mask: string; - maskType: string; - maxBlockSize: string; - maxHeight: string; - maxInlineSize: string; - maxWidth: string; - minBlockSize: string; - minHeight: string; - minInlineSize: string; - minWidth: string; - mixBlendMode: string; - mozTransform: string; - mozTransformOrigin: string; - mozTransitionDelay: string; - mozTransitionDuration: string; - mozTransitionProperty: string; - mozTransitionTimingFunction: string; - objectFit: string; - objectPosition: string; - offsetBlockEnd: string; - offsetBlockStart: string; - offsetInlineEnd: string; - offsetInlineStart: string; - opacity: string; - order: string; - orphans: string; - outline: string; - outlineColor: string; - outlineOffset: string; - outlineStyle: string; - outlineWidth: string; - overflow: string; - overflowWrap: string; - overflowX: string; - overflowY: string; - padding: string; - paddingBlockEnd: string; - paddingBlockStart: string; - paddingBottom: string; - paddingInlineEnd: string; - paddingInlineStart: string; - paddingLeft: string; - paddingRight: string; - paddingTop: string; - pageBreakAfter: string; - pageBreakBefore: string; - pageBreakInside: string; - parentRule: CSSRule; - perspective: string; - perspectiveOrigin: string; - pointerEvents: string; - position: string; - quotes: string; - rad: string; - removeProperty(property: string): string; - resize: string; - right: string; - rubyAlign: string; - rubyMerge: string; - rubyPosition: string; - scrollBehavior: string; - scrollSnapCoordinate: string; - scrollSnapDestination: string; - scrollSnapPointsX: string; - scrollSnapPointsY: string; - scrollSnapType: string; - setProperty(property: string, value: ?string, priority: ?string): void; - setPropertyPriority(property: string, priority: string): void; - shapeImageThreshold: string; - shapeMargin: string; - shapeOutside: string; - tableLayout: string; - tabSize: string; - textAlign: string; - textAlignLast: string; - textCombineUpright: string; - textDecoration: string; - textDecorationColor: string; - textDecorationLine: string; - textDecorationStyle: string; - textIndent: string; - textOrientation: string; - textOverflow: string; - textRendering: string; - textShadow: string; - textTransform: string; - textUnderlinePosition: string; - top: string; - touchAction: string; - transform: string; - transformOrigin: string; - transformStyle: string; - transition: string; - transitionDelay: string; - transitionDuration: string; - transitionProperty: string; - transitionTimingFunction: string; - turn: string; - unicodeBidi: string; - unicodeRange: string; - userSelect: string; - verticalAlign: string; - visibility: string; - webkitBackdropFilter: string; - webkitOverflowScrolling: string; - webkitTransform: string; - webkitTransformOrigin: string; - webkitTransitionDelay: string; - webkitTransitionDuration: string; - webkitTransitionProperty: string; - - webkitTransitionTimingFunction: string; - whiteSpace: string; - widows: string; - width: string; - willChange: string; - [index: number]: string; - wordBreak: string; - wordSpacing: string; - wordWrap: string; - writingMode: string; - zIndex: string; -} - -declare class TransitionEvent extends Event { - elapsedTime: number; // readonly - propertyName: string; // readonly - pseudoElement: string; // readonly -} - -type AnimationPlayState = 'idle' | 'running' | 'paused' | 'finished'; -type AnimationReplaceState = 'active' | 'removed' | 'persisted'; -type FillMode = 'none' | 'forwards' | 'backwards' | 'both' | 'auto'; -type PlaybackDirection = - 'normal' | 'reverse' | 'alternate' | 'alternate-reverse'; -type IterationCompositeOperation = 'replace' | 'accumulate'; -type CompositeOperation = 'replace' | 'add' | 'accumulate'; -type CompositeOperationOrAuto = CompositeOperation | 'auto'; - -declare class AnimationTimeline { - readonly currentTime: number | null; -} - -type DocumentTimelineOptions = { - originTime?: DOMHighResTimeStamp, - ... -}; - -declare class DocumentTimeline extends AnimationTimeline { - constructor(options?: DocumentTimelineOptions): void; -} - -type EffectTiming = { - delay: number, - direction: PlaybackDirection, - duration: number | string, - easing: string, - endDelay: number, - fill: FillMode, - iterations: number, - iterationStart: number, - ... -}; - -type OptionalEffectTiming = Partial; - -type ComputedEffectTiming = EffectTiming & { - activeDuration: number, - currentIteration: number | null, - endTime: number, - localTime: number | null, - progress: number | null, - ... -}; - -declare class AnimationEffect { - getComputedTiming(): ComputedEffectTiming; - getTiming(): EffectTiming; - updateTiming(timing?: OptionalEffectTiming): void; -} - -type Keyframe = { - composite?: CompositeOperationOrAuto, - easing?: string, - offset?: number | null, - [property: string]: string | number | null | void, - ... -}; - -type ComputedKeyframe = { - composite: CompositeOperationOrAuto, - computedOffset: number, - easing: string, - offset: number | null, - [property: string]: string | number | null | void, - ... -}; - -type PropertyIndexedKeyframes = { - composite?: CompositeOperationOrAuto | CompositeOperationOrAuto[], - easing?: string | string[], - offset?: number | (number | null)[], - [property: string]: - string | string[] | number | null | (number | null)[] | void, - ... -}; - -type KeyframeEffectOptions = Partial & { - composite?: CompositeOperation, - iterationComposite?: IterationCompositeOperation, - ... -}; - -declare class KeyframeEffect extends AnimationEffect { - composite: CompositeOperation; - constructor( - target: Element | null, - keyframes: Keyframe[] | PropertyIndexedKeyframes | null, - options?: number | KeyframeEffectOptions, - ): void; - - constructor(source: KeyframeEffect): void; - getKeyframes(): ComputedKeyframe[]; - iterationComposite: IterationCompositeOperation; - setKeyframes(keyframes: Keyframe[] | PropertyIndexedKeyframes | null): void; - target: Element | null; -} - -declare class Animation extends EventTarget { - cancel(): void; - - commitStyles(): void; - constructor( - effect?: AnimationEffect | null, - timeline?: AnimationTimeline | null, - ): void; - currentTime: number | null; - effect: AnimationEffect | null; - finish(): void; - readonly finished: Promise; - id: string; - oncancel: ?(ev: AnimationPlaybackEvent) => unknown; - onfinish: ?(ev: AnimationPlaybackEvent) => unknown; - onremove: ?(ev: AnimationPlaybackEvent) => unknown; - pause(): void; - readonly pending: boolean; - persist(): void; - play(): void; - playbackRate: number; - readonly playState: AnimationPlayState; - readonly ready: Promise; - readonly replaceState: AnimationReplaceState; - reverse(): void; - startTime: number | null; - timeline: AnimationTimeline | null; - updatePlaybackRate(playbackRate: number): void; -} - -type KeyframeAnimationOptions = KeyframeEffectOptions & { - id?: string, - ... -}; - -type GetAnimationsOptions = { - subtree?: boolean, - ... -}; - -interface Animatable { - animate( - keyframes: Keyframe[] | PropertyIndexedKeyframes | null, - options?: number | KeyframeAnimationOptions, - ): Animation; - getAnimations(options?: GetAnimationsOptions): Animation[]; -} - -type AnimationPlaybackEvent$Init = Event$Init & { - currentTime?: number | null, - timelineTime?: number | null, - ... -}; - -declare class AnimationPlaybackEvent extends Event { - constructor( - type: string, - animationEventInitDict?: AnimationPlaybackEvent$Init, - ): void; - readonly currentTime: number | null; - readonly timelineTime: number | null; -} diff --git a/flow-typed/environment/dom.js b/flow-typed/environment/dom.js deleted file mode 100644 index 400f9dd782..0000000000 --- a/flow-typed/environment/dom.js +++ /dev/null @@ -1,6249 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @format - * @oncall flow - */ - -// Adapted from https://github.com/flow-typed/flow-typed/blob/main/definitions/environments/dom/flow_v0.261.x-/dom.js - -/* Files */ - -declare class Blob { - constructor( - blobParts?: Array, - options?: { - type?: string, - endings?: string, - ... - }, - ): void; - isClosed: boolean; - size: number; - type: string; - close(): void; - slice(start?: number, end?: number, contentType?: string): Blob; - arrayBuffer(): Promise; - text(): Promise; - stream(): ReadableStream; -} - -declare class FileReader extends EventTarget { - readonly EMPTY: 0; - readonly LOADING: 1; - readonly DONE: 2; - readonly error: null | DOMError; - readonly readyState: 0 | 1 | 2; - readonly result: null | string | ArrayBuffer; - abort(): void; - onabort: null | ((ev: ProgressEvent) => any); - onerror: null | ((ev: ProgressEvent) => any); - onload: null | ((ev: ProgressEvent) => any); - onloadend: null | ((ev: ProgressEvent) => any); - onloadstart: null | ((ev: ProgressEvent) => any); - onprogress: null | ((ev: ProgressEvent) => any); - readAsArrayBuffer(blob: Blob): void; - readAsBinaryString(blob: Blob): void; - readAsDataURL(blob: Blob): void; - readAsText(blob: Blob, encoding?: string): void; -} - -declare type FilePropertyBag = { - type?: string, - lastModified?: number, - ... -}; -declare class File extends Blob { - constructor( - fileBits: ReadonlyArray, - filename: string, - options?: FilePropertyBag, - ): void; - lastModified: number; - name: string; -} - -declare class FileList { - @@iterator(): Iterator; - length: number; - item(index: number): File; - [index: number]: File; -} - -/* DataTransfer */ - -declare class DataTransfer { - clearData(format?: string): void; - getData(format: string): string; - setData(format: string, data: string): void; - setDragImage(image: Element, x: number, y: number): void; - dropEffect: string; - effectAllowed: string; - files: FileList; // readonly - items: DataTransferItemList; // readonly - types: Array; // readonly -} - -declare class DataTransferItemList { - @@iterator(): Iterator; - length: number; // readonly - [index: number]: DataTransferItem; - add(data: string, type: string): ?DataTransferItem; - add(data: File): ?DataTransferItem; - remove(index: number): void; - clear(): void; -} - -// https://wicg.github.io/file-system-access/#drag-and-drop -declare class DataTransferItem { - kind: string; // readonly - type: string; // readonly - getAsString(_callback: ?(data: string) => unknown): void; - getAsFile(): ?File; - /* - * This is not supported by all browsers, please have a fallback plan for it. - * For more information, please checkout - * https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem/webkitGetAsEntry - */ - webkitGetAsEntry(): void | (() => any); - /* - * Not supported in all browsers - * For up to date compatibility information, please visit - * https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem/getAsFileSystemHandle - */ - getAsFileSystemHandle?: () => Promise; -} - -/* DOM */ - -declare type DOMStringMap = {[key: string]: string, ...}; - -declare class DOMStringList { - @@iterator(): Iterator; - readonly [key: number]: string; - readonly length: number; - item(number): string | null; - contains(string): boolean; -} - -declare class DOMError { - name: string; -} - -declare type ElementDefinitionOptions = {extends?: string, ...}; - -declare interface CustomElementRegistry { - define( - name: string, - ctor: Class, - options?: ElementDefinitionOptions, - ): void; - get(name: string): any; - whenDefined(name: string): Promise; -} - -declare interface ShadowRoot extends DocumentFragment { - readonly delegatesFocus: boolean; - readonly host: Element; - // flowlint unsafe-getters-setters:off - get innerHTML(): string; - set innerHTML(value: string | TrustedHTML): void; - // flowlint unsafe-getters-setters:error - readonly mode: ShadowRootMode; - - // From DocumentOrShadowRoot Mixin. - readonly styleSheets: StyleSheetList; - adoptedStyleSheets: Array; -} - -declare type ShadowRootMode = 'open' | 'closed'; - -declare type ShadowRootInit = { - delegatesFocus?: boolean, - mode: ShadowRootMode, - ... -}; - -declare type ScrollToOptions = { - top?: number, - left?: number, - behavior?: 'auto' | 'smooth', - ... -}; - -type EventHandler = (event: Event) => unknown; -type EventListener = {handleEvent: EventHandler, ...} | EventHandler; -type MouseEventHandler = (event: MouseEvent) => unknown; -type MouseEventListener = - {handleEvent: MouseEventHandler, ...} | MouseEventHandler; -type FocusEventHandler = (event: FocusEvent) => unknown; -type FocusEventListener = - {handleEvent: FocusEventHandler, ...} | FocusEventHandler; -type KeyboardEventHandler = (event: KeyboardEvent) => unknown; -type KeyboardEventListener = - {handleEvent: KeyboardEventHandler, ...} | KeyboardEventHandler; -type InputEventHandler = (event: InputEvent) => unknown; -type InputEventListener = - {handleEvent: InputEventHandler, ...} | InputEventHandler; -type TouchEventHandler = (event: TouchEvent) => unknown; -type TouchEventListener = - {handleEvent: TouchEventHandler, ...} | TouchEventHandler; -type WheelEventHandler = (event: WheelEvent) => unknown; -type WheelEventListener = - {handleEvent: WheelEventHandler, ...} | WheelEventHandler; -type AbortProgressEventHandler = (event: ProgressEvent) => unknown; -type AbortProgressEventListener = - {handleEvent: AbortProgressEventHandler, ...} | AbortProgressEventHandler; -type ProgressEventHandler = (event: ProgressEvent) => unknown; -type ProgressEventListener = - {handleEvent: ProgressEventHandler, ...} | ProgressEventHandler; -type DragEventHandler = (event: DragEvent) => unknown; -type DragEventListener = - {handleEvent: DragEventHandler, ...} | DragEventHandler; -type PointerEventHandler = (event: PointerEvent) => unknown; -type PointerEventListener = - {handleEvent: PointerEventHandler, ...} | PointerEventHandler; -type AnimationEventHandler = (event: AnimationEvent) => unknown; -type AnimationEventListener = - {handleEvent: AnimationEventHandler, ...} | AnimationEventHandler; -type ClipboardEventHandler = (event: ClipboardEvent) => unknown; -type ClipboardEventListener = - {handleEvent: ClipboardEventHandler, ...} | ClipboardEventHandler; -type TransitionEventHandler = (event: TransitionEvent) => unknown; -type TransitionEventListener = - {handleEvent: TransitionEventHandler, ...} | TransitionEventHandler; -type MessageEventHandler = (event: MessageEvent) => unknown; -type MessageEventListener = - {handleEvent: MessageEventHandler, ...} | MessageEventHandler; -type BeforeUnloadEventHandler = (event: BeforeUnloadEvent) => unknown; -type BeforeUnloadEventListener = - {handleEvent: BeforeUnloadEventHandler, ...} | BeforeUnloadEventHandler; -type StorageEventHandler = (event: StorageEvent) => unknown; -type StorageEventListener = - {handleEvent: StorageEventHandler, ...} | StorageEventHandler; -type SecurityPolicyViolationEventHandler = ( - event: SecurityPolicyViolationEvent, -) => unknown; -type SecurityPolicyViolationEventListener = - | {handleEvent: SecurityPolicyViolationEventHandler, ...} - | SecurityPolicyViolationEventHandler; -type USBConnectionEventHandler = (event: USBConnectionEvent) => unknown; -type USBConnectionEventListener = - {handleEvent: USBConnectionEventHandler, ...} | USBConnectionEventHandler; - -type MediaKeySessionType = 'temporary' | 'persistent-license'; -type MediaKeyStatus = - | 'usable' - | 'expired' - | 'released' - | 'output-restricted' - | 'output-downscaled' - | 'status-pending' - | 'internal-error'; -type MouseEventTypes = - | 'contextmenu' - | 'mousedown' - | 'mouseenter' - | 'mouseleave' - | 'mousemove' - | 'mouseout' - | 'mouseover' - | 'mouseup' - | 'click' - | 'dblclick'; -type FocusEventTypes = 'blur' | 'focus' | 'focusin' | 'focusout'; -type KeyboardEventTypes = 'keydown' | 'keyup' | 'keypress'; -type InputEventTypes = 'input' | 'beforeinput'; -type TouchEventTypes = 'touchstart' | 'touchmove' | 'touchend' | 'touchcancel'; -type WheelEventTypes = 'wheel'; -type AbortProgressEventTypes = 'abort'; -type ProgressEventTypes = - 'abort' | 'error' | 'load' | 'loadend' | 'loadstart' | 'progress' | 'timeout'; -type DragEventTypes = - | 'drag' - | 'dragend' - | 'dragenter' - | 'dragexit' - | 'dragleave' - | 'dragover' - | 'dragstart' - | 'drop'; -type PointerEventTypes = - | 'pointerover' - | 'pointerenter' - | 'pointerdown' - | 'pointermove' - | 'pointerup' - | 'pointercancel' - | 'pointerout' - | 'pointerleave' - | 'gotpointercapture' - | 'lostpointercapture'; -type AnimationEventTypes = - 'animationstart' | 'animationend' | 'animationiteration'; -type ClipboardEventTypes = 'clipboardchange' | 'cut' | 'copy' | 'paste'; -type TransitionEventTypes = - 'transitionrun' | 'transitionstart' | 'transitionend' | 'transitioncancel'; -type MessageEventTypes = string; -type BeforeUnloadEventTypes = 'beforeunload'; -type StorageEventTypes = 'storage'; -type SecurityPolicyViolationEventTypes = 'securitypolicyviolation'; -type USBConnectionEventTypes = 'connect' | 'disconnect'; - -type EventListenerOptionsOrUseCapture = - | boolean - | { - capture?: boolean, - once?: boolean, - passive?: boolean, - signal?: AbortSignal, - ... - }; - -declare class EventTarget { - addEventListener( - type: MouseEventTypes, - listener: MouseEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - addEventListener( - type: FocusEventTypes, - listener: FocusEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - addEventListener( - type: KeyboardEventTypes, - listener: KeyboardEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - addEventListener( - type: InputEventTypes, - listener: InputEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - addEventListener( - type: TouchEventTypes, - listener: TouchEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - addEventListener( - type: WheelEventTypes, - listener: WheelEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - addEventListener( - type: AbortProgressEventTypes, - listener: AbortProgressEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - addEventListener( - type: ProgressEventTypes, - listener: ProgressEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - addEventListener( - type: DragEventTypes, - listener: DragEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - addEventListener( - type: PointerEventTypes, - listener: PointerEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - addEventListener( - type: AnimationEventTypes, - listener: AnimationEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - addEventListener( - type: ClipboardEventTypes, - listener: ClipboardEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - addEventListener( - type: TransitionEventTypes, - listener: TransitionEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - addEventListener( - type: MessageEventTypes, - listener: MessageEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - addEventListener( - type: BeforeUnloadEventTypes, - listener: BeforeUnloadEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - addEventListener( - type: StorageEventTypes, - listener: StorageEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - addEventListener( - type: SecurityPolicyViolationEventTypes, - listener: SecurityPolicyViolationEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - addEventListener( - type: USBConnectionEventTypes, - listener: USBConnectionEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - addEventListener( - type: string, - listener: EventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - - removeEventListener( - type: MouseEventTypes, - listener: MouseEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - removeEventListener( - type: FocusEventTypes, - listener: FocusEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - removeEventListener( - type: KeyboardEventTypes, - listener: KeyboardEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - removeEventListener( - type: InputEventTypes, - listener: InputEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - removeEventListener( - type: TouchEventTypes, - listener: TouchEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - removeEventListener( - type: WheelEventTypes, - listener: WheelEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - removeEventListener( - type: AbortProgressEventTypes, - listener: AbortProgressEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - removeEventListener( - type: ProgressEventTypes, - listener: ProgressEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - removeEventListener( - type: DragEventTypes, - listener: DragEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - removeEventListener( - type: PointerEventTypes, - listener: PointerEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - removeEventListener( - type: AnimationEventTypes, - listener: AnimationEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - removeEventListener( - type: ClipboardEventTypes, - listener: ClipboardEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - removeEventListener( - type: TransitionEventTypes, - listener: TransitionEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - removeEventListener( - type: MessageEventTypes, - listener: MessageEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - removeEventListener( - type: BeforeUnloadEventTypes, - listener: BeforeUnloadEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - removeEventListener( - type: StorageEventTypes, - listener: StorageEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - removeEventListener( - type: SecurityPolicyViolationEventTypes, - listener: SecurityPolicyViolationEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - removeEventListener( - type: USBConnectionEventTypes, - listener: USBConnectionEventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - removeEventListener( - type: string, - listener: EventListener, - optionsOrUseCapture?: EventListenerOptionsOrUseCapture, - ): void; - - attachEvent?: (type: MouseEventTypes, listener: MouseEventListener) => void; - attachEvent?: (type: FocusEventTypes, listener: FocusEventListener) => void; - attachEvent?: ( - type: KeyboardEventTypes, - listener: KeyboardEventListener, - ) => void; - attachEvent?: (type: InputEventTypes, listener: InputEventListener) => void; - attachEvent?: (type: TouchEventTypes, listener: TouchEventListener) => void; - attachEvent?: (type: WheelEventTypes, listener: WheelEventListener) => void; - attachEvent?: ( - type: AbortProgressEventTypes, - listener: AbortProgressEventListener, - ) => void; - attachEvent?: ( - type: ProgressEventTypes, - listener: ProgressEventListener, - ) => void; - attachEvent?: (type: DragEventTypes, listener: DragEventListener) => void; - attachEvent?: ( - type: PointerEventTypes, - listener: PointerEventListener, - ) => void; - attachEvent?: ( - type: AnimationEventTypes, - listener: AnimationEventListener, - ) => void; - attachEvent?: ( - type: ClipboardEventTypes, - listener: ClipboardEventListener, - ) => void; - attachEvent?: ( - type: TransitionEventTypes, - listener: TransitionEventListener, - ) => void; - attachEvent?: ( - type: MessageEventTypes, - listener: MessageEventListener, - ) => void; - attachEvent?: ( - type: BeforeUnloadEventTypes, - listener: BeforeUnloadEventListener, - ) => void; - attachEvent?: ( - type: StorageEventTypes, - listener: StorageEventListener, - ) => void; - attachEvent?: ( - type: USBConnectionEventTypes, - listener: USBConnectionEventListener, - ) => void; - attachEvent?: (type: string, listener: EventListener) => void; - - detachEvent?: (type: MouseEventTypes, listener: MouseEventListener) => void; - detachEvent?: (type: FocusEventTypes, listener: FocusEventListener) => void; - detachEvent?: ( - type: KeyboardEventTypes, - listener: KeyboardEventListener, - ) => void; - detachEvent?: (type: InputEventTypes, listener: InputEventListener) => void; - detachEvent?: (type: TouchEventTypes, listener: TouchEventListener) => void; - detachEvent?: (type: WheelEventTypes, listener: WheelEventListener) => void; - detachEvent?: ( - type: AbortProgressEventTypes, - listener: AbortProgressEventListener, - ) => void; - detachEvent?: ( - type: ProgressEventTypes, - listener: ProgressEventListener, - ) => void; - detachEvent?: (type: DragEventTypes, listener: DragEventListener) => void; - detachEvent?: ( - type: PointerEventTypes, - listener: PointerEventListener, - ) => void; - detachEvent?: ( - type: AnimationEventTypes, - listener: AnimationEventListener, - ) => void; - detachEvent?: ( - type: ClipboardEventTypes, - listener: ClipboardEventListener, - ) => void; - detachEvent?: ( - type: TransitionEventTypes, - listener: TransitionEventListener, - ) => void; - detachEvent?: ( - type: MessageEventTypes, - listener: MessageEventListener, - ) => void; - detachEvent?: ( - type: BeforeUnloadEventTypes, - listener: BeforeUnloadEventListener, - ) => void; - detachEvent?: ( - type: StorageEventTypes, - listener: StorageEventListener, - ) => void; - detachEvent?: ( - type: USBConnectionEventTypes, - listener: USBConnectionEventListener, - ) => void; - detachEvent?: (type: string, listener: EventListener) => void; - - dispatchEvent(evt: Event): boolean; - - // Deprecated - - cancelBubble: boolean; - initEvent( - eventTypeArg: string, - canBubbleArg: boolean, - cancelableArg: boolean, - ): void; -} - -// https://dom.spec.whatwg.org/#dictdef-eventinit -type Event$Init = { - bubbles?: boolean, - cancelable?: boolean, - composed?: boolean, - /** Non-standard. See `composed` instead. */ - scoped?: boolean, - ... -}; - -// https://dom.spec.whatwg.org/#interface-event -declare class Event { - constructor(type: string, eventInitDict?: Event$Init): void; - /** - * Returns the type of event, e.g. "click", "hashchange", or "submit". - */ - readonly type: string; - /** - * Returns the object to which event is dispatched (its target). - */ - readonly target: EventTarget; // TODO: nullable - /** @deprecated */ - readonly srcElement: Element; // TODO: nullable - /** - * Returns the object whose event listener's callback is currently being invoked. - */ - readonly currentTarget: EventTarget; // TODO: nullable - /** - * 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(): Array; - - readonly NONE: number; - readonly AT_TARGET: number; - readonly BUBBLING_PHASE: number; - readonly CAPTURING_PHASE: number; - /** - * Returns the event's phase, which is one of NONE, CAPTURING_PHASE, AT_TARGET, - * and BUBBLING_PHASE. - */ - readonly eventPhase: number; - - /** - * When dispatched in a tree, invoking this method prevents event from reaching - * any objects other than the current object. - */ - stopPropagation(): 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; - - /** - * 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; - /** - * 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; - // returnValue: boolean; // legacy, and some subclasses still define it as a string! - /** - * 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; - /** - * Returns true if preventDefault() was invoked successfully to indicate - * cancelation, and false otherwise. - */ - readonly defaultPrevented: 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 true if event was dispatched by the user agent, and false otherwise. - */ - readonly isTrusted: boolean; - /** - * Returns the event's timestamp as the number of milliseconds measured relative - * to the time origin. - */ - readonly timeStamp: number; - - /** Non-standard. See Event.prototype.composedPath */ - readonly deepPath?: () => EventTarget[]; - /** Non-standard. See Event.prototype.composed */ - readonly scoped: boolean; - - /** - * @deprecated - */ - initEvent(type: string, bubbles: boolean, cancelable: boolean): void; -} - -type CustomEvent$Init = {...Event$Init, detail?: any, ...}; - -declare class CustomEvent extends Event { - constructor(type: string, eventInitDict?: CustomEvent$Init): void; - detail: any; - - // deprecated - initCustomEvent( - type: string, - bubbles: boolean, - cancelable: boolean, - detail: any, - ): CustomEvent; -} - -type UIEvent$Init = {...Event$Init, detail?: number, view?: any, ...}; - -declare class UIEvent extends Event { - constructor(typeArg: string, uiEventInit?: UIEvent$Init): void; - detail: number; - view: any; -} - -declare class CompositionEvent extends UIEvent { - data: string | null; - locale: string; -} - -type MouseEvent$MouseEventInit = { - screenX?: number, - screenY?: number, - clientX?: number, - clientY?: number, - ctrlKey?: boolean, - shiftKey?: boolean, - altKey?: boolean, - metaKey?: boolean, - button?: number, - buttons?: number, - region?: string | null, - relatedTarget?: EventTarget | null, - ... -}; - -declare class MouseEvent extends UIEvent { - constructor( - typeArg: string, - mouseEventInit?: MouseEvent$MouseEventInit, - ): void; - altKey: boolean; - button: number; - buttons: number; - clientX: number; - clientY: number; - ctrlKey: boolean; - metaKey: boolean; - movementX: number; - movementY: number; - offsetX: number; - offsetY: number; - pageX: number; - pageY: number; - region: string | null; - relatedTarget: EventTarget | null; - screenX: number; - screenY: number; - shiftKey: boolean; - x: number; - y: number; - getModifierState(keyArg: string): boolean; -} - -declare class FocusEvent extends UIEvent { - relatedTarget: ?EventTarget; -} - -type WheelEvent$Init = { - ...MouseEvent$MouseEventInit, - deltaX?: number, - deltaY?: number, - deltaZ?: number, - deltaMode?: 0x00 | 0x01 | 0x02, - ... -}; - -declare class WheelEvent extends MouseEvent { - static readonly DOM_DELTA_PIXEL: 0x00; - static readonly DOM_DELTA_LINE: 0x01; - static readonly DOM_DELTA_PAGE: 0x02; - - constructor(type: string, eventInitDict?: WheelEvent$Init): void; - readonly deltaX: number; - readonly deltaY: number; - readonly deltaZ: number; - readonly deltaMode: 0x00 | 0x01 | 0x02; -} - -declare class DragEvent extends MouseEvent { - dataTransfer: ?DataTransfer; // readonly -} - -type PointerEvent$PointerEventInit = MouseEvent$MouseEventInit & { - pointerId?: number, - width?: number, - height?: number, - pressure?: number, - tangentialPressure?: number, - tiltX?: number, - tiltY?: number, - twist?: number, - pointerType?: string, - isPrimary?: boolean, - ... -}; - -declare class PointerEvent extends MouseEvent { - constructor( - typeArg: string, - pointerEventInit?: PointerEvent$PointerEventInit, - ): void; - pointerId: number; - width: number; - height: number; - pressure: number; - tangentialPressure: number; - tiltX: number; - tiltY: number; - twist: number; - pointerType: string; - isPrimary: boolean; -} - -declare class ProgressEvent extends Event { - lengthComputable: boolean; - loaded: number; - total: number; - - // Deprecated - initProgressEvent( - typeArg: string, - canBubbleArg: boolean, - cancelableArg: boolean, - lengthComputableArg: boolean, - loadedArg: number, - totalArg: number, - ): void; -} - -declare class PromiseRejectionEvent extends Event { - promise: Promise; - reason: any; -} - -type PageTransitionEventInit = { - ...Event$Init, - persisted: boolean, - ... -}; - -// https://html.spec.whatwg.org/multipage/browsing-the-web.html#the-pagetransitionevent-interface -declare class PageTransitionEvent extends Event { - constructor(type: string, init?: PageTransitionEventInit): void; - readonly persisted: boolean; -} - -// used for websockets and postMessage, for example. See: -// https://www.w3.org/TR/2011/WD-websockets-20110419/ -// and -// https://www.w3.org/TR/2008/WD-html5-20080610/comms.html -// and -// https://html.spec.whatwg.org/multipage/comms.html#the-messageevent-interfaces -declare class MessageEvent extends Event { - data: unknown; - origin: string; - lastEventId: string; - source: WindowProxy; -} - -// https://www.w3.org/TR/eventsource/ -declare class EventSource extends EventTarget { - constructor( - url: string, - configuration?: {withCredentials: boolean, ...}, - ): void; - readonly CLOSED: 2; - readonly CONNECTING: 0; - readonly OPEN: 1; - readonly readyState: 0 | 1 | 2; - readonly url: string; - readonly withCredentials: boolean; - onerror: () => void; - onmessage: MessageEventListener; - onopen: () => void; - close: () => void; -} - -// https://w3c.github.io/uievents/#idl-keyboardeventinit -type KeyboardEvent$Init = { - ...UIEvent$Init, - /** - * Initializes the `key` attribute of the KeyboardEvent object to the unicode - * character string representing the meaning of a key after taking into - * account all keyboard modifiers (such as shift-state). This value is the - * final effective value of the key. If the key is not a printable character, - * then it should be one of the key values defined in [UIEvents-Key](https://www.w3.org/TR/uievents-key/). - * - * NOTE: not `null`, this results in `evt.key === 'null'`! - */ - key?: string | void, - /** - * Initializes the `code` attribute of the KeyboardEvent object to the unicode - * character string representing the key that was pressed, ignoring any - * keyboard modifications such as keyboard layout. This value should be one - * of the code values defined in [UIEvents-Code](https://www.w3.org/TR/uievents-code/). - * - * NOTE: not `null`, this results in `evt.code === 'null'`! - */ - code?: string | void, - /** - * Initializes the `location` attribute of the KeyboardEvent object to one of - * the following location numerical constants: - * - * DOM_KEY_LOCATION_STANDARD (numerical value 0) - * DOM_KEY_LOCATION_LEFT (numerical value 1) - * DOM_KEY_LOCATION_RIGHT (numerical value 2) - * DOM_KEY_LOCATION_NUMPAD (numerical value 3) - */ - location?: number, - /** - * Initializes the `ctrlKey` attribute of the KeyboardEvent object to true if - * the Control key modifier is to be considered active, false otherwise. - */ - ctrlKey?: boolean, - /** - * Initializes the `shiftKey` attribute of the KeyboardEvent object to true if - * the Shift key modifier is to be considered active, false otherwise. - */ - shiftKey?: boolean, - /** - * Initializes the `altKey` attribute of the KeyboardEvent object to true if - * the Alt (alternative) (or Option) key modifier is to be considered active, - * false otherwise. - */ - altKey?: boolean, - /** - * Initializes the `metaKey` attribute of the KeyboardEvent object to true if - * the Meta key modifier is to be considered active, false otherwise. - */ - metaKey?: boolean, - /** - * Initializes the `repeat` attribute of the KeyboardEvent object. This - * attribute should be set to true if the the current KeyboardEvent is - * considered part of a repeating sequence of similar events caused by the - * long depression of any single key, false otherwise. - */ - repeat?: boolean, - /** - * Initializes the `isComposing` attribute of the KeyboardEvent object. This - * attribute should be set to true if the event being constructed occurs as - * part of a composition sequence, false otherwise. - */ - isComposing?: boolean, - /** - * Initializes the `charCode` attribute of the KeyboardEvent to the Unicode - * code point for the event’s character. - */ - charCode?: number, - /** - * Initializes the `keyCode` attribute of the KeyboardEvent to the system- - * and implementation-dependent numerical code signifying the unmodified - * identifier associated with the key pressed. - */ - keyCode?: number, - /** Initializes the `which` attribute */ - which?: number, - ... -}; - -// https://w3c.github.io/uievents/#idl-keyboardevent -declare class KeyboardEvent extends UIEvent { - constructor(typeArg: string, init?: KeyboardEvent$Init): void; - - /** `true` if the Alt (alternative) (or "Option") key modifier was active. */ - readonly altKey: boolean; - /** - * Holds a string that identifies the physical key being pressed. The value - * is not affected by the current keyboard layout or modifier state, so a - * particular key will always return the same value. - */ - readonly code: string; - /** `true` if the Control (control) key modifier was active. */ - readonly ctrlKey: boolean; - /** - * `true` if the key event occurs as part of a composition session, i.e., - * after a `compositionstart` event and before the corresponding - * `compositionend` event. - */ - readonly isComposing: boolean; - /** - * Holds a [key attribute value](https://www.w3.org/TR/uievents-key/#key-attribute-value) - * corresponding to the key pressed. */ - readonly key: string; - /** An indication of the logical location of the key on the device. */ - readonly location: number; - /** `true` if the meta (Meta) key (or "Command") modifier was active. */ - readonly metaKey: boolean; - /** `true` if the key has been pressed in a sustained manner. */ - readonly repeat: boolean; - /** `true` if the shift (Shift) key modifier was active. */ - readonly shiftKey: boolean; - - /** - * Queries the state of a modifier using a key value. - * - * Returns `true` if it is a modifier key and the modifier is activated, - * `false` otherwise. - */ - getModifierState(keyArg?: string): boolean; - - /** - * Holds a character value, for keypress events which generate character - * input. The value is the Unicode reference number (code point) of that - * character (e.g. event.charCode = event.key.charCodeAt(0) for printable - * characters). For keydown or keyup events, the value of charCode is 0. - * - * @deprecated You should use KeyboardEvent.key instead, if available. - */ - readonly charCode: number; - /** - * Holds a system- and implementation-dependent numerical code signifying - * the unmodified identifier associated with the key pressed. Unlike the - * `key` attribute, the set of possible values are not normatively defined. - * Typically, these value of the keyCode SHOULD represent the decimal - * codepoint in ASCII or Windows 1252, but MAY be drawn from a different - * appropriate character set. Implementations that are unable to identify - * a key use the key value 0. - * - * @deprecated You should use KeyboardEvent.key instead, if available. - */ - readonly keyCode: number; - /** - * Holds a system- and implementation-dependent numerical code signifying - * the unmodified identifier associated with the key pressed. In most cases, - * the value is identical to keyCode. - * - * @deprecated You should use KeyboardEvent.key instead, if available. - */ - readonly which: number; -} - -type InputEvent$Init = { - ...UIEvent$Init, - inputType?: string, - data?: string, - dataTransfer?: DataTransfer, - isComposing?: boolean, - ranges?: Array, // TODO: StaticRange - ... -}; - -declare class InputEvent extends UIEvent { - constructor(typeArg: string, inputEventInit: InputEvent$Init): void; - readonly data: string | null; - readonly dataTransfer: DataTransfer | null; - readonly inputType: string; - readonly isComposing: boolean; - getTargetRanges(): Array; // TODO: StaticRange -} - -declare class AnimationEvent extends Event { - animationName: string; - elapsedTime: number; - pseudoElement: string; - - // deprecated - - initAnimationEvent: ( - type: 'animationstart' | 'animationend' | 'animationiteration', - canBubble: boolean, - cancelable: boolean, - animationName: string, - elapsedTime: number, - ) => void; -} - -// https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface -declare class ErrorEvent extends Event { - constructor( - type: string, - eventInitDict?: { - ...Event$Init, - message?: string, - filename?: string, - lineno?: number, - colno?: number, - error?: any, - ... - }, - ): void; - readonly message: string; - readonly filename: string; - readonly lineno: number; - readonly colno: number; - readonly error: any; -} - -// https://html.spec.whatwg.org/multipage/web-messaging.html#broadcasting-to-other-browsing-contexts -declare class BroadcastChannel extends EventTarget { - name: string; - onmessage: ?(event: MessageEvent) => void; - onmessageerror: ?(event: MessageEvent) => void; - - constructor(name: string): void; - postMessage(msg: unknown): void; - close(): void; -} - -// https://www.w3.org/TR/touch-events/#idl-def-Touch -declare class Touch { - clientX: number; - clientY: number; - identifier: number; - pageX: number; - pageY: number; - screenX: number; - screenY: number; - target: EventTarget; -} - -// https://www.w3.org/TR/touch-events/#idl-def-TouchList -// TouchList#item(index) will return null if n > #length. Should #item's -// return type just been Touch? -declare class TouchList { - @@iterator(): Iterator; - length: number; - item(index: number): null | Touch; - [index: number]: Touch; -} - -// https://www.w3.org/TR/touch-events/#touchevent-interface -declare class TouchEvent extends UIEvent { - altKey: boolean; - changedTouches: TouchList; - ctrlKey: boolean; - metaKey: boolean; - shiftKey: boolean; - targetTouches: TouchList; - touches: TouchList; -} - -// https://www.w3.org/TR/webstorage/#the-storageevent-interface -declare class StorageEvent extends Event { - key: ?string; - oldValue: ?string; - newValue: ?string; - url: string; - storageArea: ?Storage; -} - -// https://www.w3.org/TR/clipboard-apis/#typedefdef-clipboarditemdata -// Raw string | Blob are allowed per https://webidl.spec.whatwg.org/#es-promise -type ClipboardItemData = string | Blob | Promise; - -type PresentationStyle = 'attachment' | 'inline' | 'unspecified'; - -type ClipboardItemOptions = { - presentationStyle?: PresentationStyle, - ... -}; - -declare class ClipboardItem { - readonly types: ReadonlyArray; - getType(type: string): Promise; - constructor( - items: {[type: string]: ClipboardItemData}, - options?: ClipboardItemOptions, - ): void; -} - -// https://w3c.github.io/clipboard-apis/ as of 15 May 2018 -type ClipboardEvent$Init = { - ...Event$Init, - clipboardData: DataTransfer | null, - ... -}; - -declare class ClipboardEvent extends Event { - constructor(type: ClipboardEventTypes, eventInit?: ClipboardEvent$Init): void; - readonly clipboardData: ?DataTransfer; // readonly -} - -// https://www.w3.org/TR/2017/WD-css-transitions-1-20171130/#interface-transitionevent -type TransitionEvent$Init = { - ...Event$Init, - propertyName: string, - elapsedTime: number, - pseudoElement: string, - ... -}; - -// $FlowFixMe[libdef-override] -declare class TransitionEvent extends Event { - constructor( - type: TransitionEventTypes, - eventInit?: TransitionEvent$Init, - ): void; - - readonly propertyName: string; // readonly - readonly elapsedTime: number; // readonly - readonly pseudoElement: string; // readonly -} - -// https://www.w3.org/TR/html50/browsers.html#beforeunloadevent -declare class BeforeUnloadEvent extends Event { - returnValue: string; -} - -declare class SecurityPolicyViolationEvent extends Event { - readonly documentURI: string; - readonly referrer: string; - readonly blockedURI: string; - readonly effectiveDirective: string; - readonly violatedDirective: string; - readonly originalPolicy: string; - readonly sourceFile: string; - readonly sample: string; - readonly disposition: 'enforce' | 'report'; - readonly statusCode: number; - readonly lineNumber: number; - readonly columnNumber: number; -} - -// https://developer.mozilla.org/en-US/docs/Web/API/USBConnectionEvent -declare class USBConnectionEvent extends Event { - device: USBDevice; -} - -// TODO: *Event - -declare class Node extends EventTarget { - baseURI: ?string; - childNodes: NodeList; - firstChild: ?Node; - readonly isConnected: boolean; - lastChild: ?Node; - nextSibling: ?Node; - nodeName: string; - nodeType: number; - nodeValue: string; - ownerDocument: Document; - parentElement: ?Element; - parentNode: ?Node; - previousSibling: ?Node; - rootNode: Node; - textContent: string; - appendChild(newChild: T): T; - cloneNode(deep?: boolean): this; - compareDocumentPosition(other: Node): number; - contains(other: ?Node): boolean; - getRootNode(options?: {composed: boolean, ...}): Node; - hasChildNodes(): boolean; - insertBefore(newChild: T, refChild?: ?Node): T; - isDefaultNamespace(namespaceURI: string): boolean; - isEqualNode(arg: Node): boolean; - isSameNode(other: Node): boolean; - lookupNamespaceURI(prefix: string): string; - lookupPrefix(namespaceURI: string): string; - normalize(): void; - removeChild(oldChild: T): T; - replaceChild(newChild: Node, oldChild: T): T; - replaceChildren(...nodes: ReadonlyArray): void; - static ATTRIBUTE_NODE: number; - static CDATA_SECTION_NODE: number; - static COMMENT_NODE: number; - static DOCUMENT_FRAGMENT_NODE: number; - static DOCUMENT_NODE: number; - static DOCUMENT_POSITION_CONTAINED_BY: number; - static DOCUMENT_POSITION_CONTAINS: number; - static DOCUMENT_POSITION_DISCONNECTED: number; - static DOCUMENT_POSITION_FOLLOWING: number; - static DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; - static DOCUMENT_POSITION_PRECEDING: number; - static DOCUMENT_TYPE_NODE: number; - static ELEMENT_NODE: number; - static ENTITY_NODE: number; - static ENTITY_REFERENCE_NODE: number; - static NOTATION_NODE: number; - static PROCESSING_INSTRUCTION_NODE: number; - static TEXT_NODE: number; - - // Non-standard - innerText?: string; - outerText?: string; -} - -declare class NodeList { - @@iterator(): Iterator; - length: number; - item(index: number): T; - [index: number]: T; - - forEach( - callbackfn: (this: This, value: T, index: number, list: NodeList) => any, - thisArg: This, - ): void; - entries(): Iterator<[number, T]>; - keys(): Iterator; - values(): Iterator; -} - -declare class NamedNodeMap { - @@iterator(): Iterator; - length: number; - removeNamedItemNS(namespaceURI: string, localName: string): Attr; - item(index: number): Attr; - [index: number | string]: Attr; - removeNamedItem(name: string): Attr; - getNamedItem(name: string): Attr; - setNamedItem(arg: Attr): Attr; - getNamedItemNS(namespaceURI: string, localName: string): Attr; - setNamedItemNS(arg: Attr): Attr; -} - -declare class Attr extends Node { - isId: boolean; - specified: boolean; - ownerElement: Element | null; - value: string; - name: string; - namespaceURI: string | null; - prefix: string | null; - localName: string; -} - -declare class HTMLCollection { - @@iterator(): Iterator; - length: number; - item(nameOrIndex?: any, optionalIndex?: any): Elem | null; - namedItem(name: string): Elem | null; - // $FlowFixMe[incompatible-variance] - [index: number | string]: Elem; -} - -// from https://www.w3.org/TR/custom-elements/#extensions-to-document-interface-to-register -// See also https://github.com/w3c/webcomponents/ -type ElementRegistrationOptions = { - readonly prototype?: { - // from https://www.w3.org/TR/custom-elements/#types-of-callbacks - // See also https://github.com/w3c/webcomponents/ - readonly createdCallback?: () => unknown, - readonly attachedCallback?: () => unknown, - readonly detachedCallback?: () => unknown, - readonly attributeChangedCallback?: (( - // attribute is set - attributeLocalName: string, - oldAttributeValue: null, - newAttributeValue: string, - attributeNamespace: string, - ) => unknown) & - // attribute is changed - (( - attributeLocalName: string, - oldAttributeValue: string, - newAttributeValue: string, - attributeNamespace: string, - ) => unknown) & - // attribute is removed - (( - attributeLocalName: string, - oldAttributeValue: string, - newAttributeValue: null, - attributeNamespace: string, - ) => unknown), - ... - }, - readonly extends?: string, - ... -}; - -type ElementCreationOptions = {is: string, ...}; - -declare class Document extends Node { - readonly timeline: DocumentTimeline; - getAnimations(): Array; - readonly URL: string; - adoptNode(source: T): T; - anchors: HTMLCollection; - applets: HTMLCollection; - body: HTMLBodyElement | null; - readonly characterSet: string; - /** - * Legacy alias of `characterSet` - * @deprecated - */ - readonly charset: string; - close(): void; - readonly contentType: string; - cookie: string; - createAttribute(name: string): Attr; - createAttributeNS(namespaceURI: string | null, qualifiedName: string): Attr; - createCDATASection(data: string): Text; - createComment(data: string): Comment; - createDocumentFragment(): DocumentFragment; - createElement( - tagName: 'a', - options?: ElementCreationOptions, - ): HTMLAnchorElement; - createElement( - tagName: 'area', - options?: ElementCreationOptions, - ): HTMLAreaElement; - createElement( - tagName: 'audio', - options?: ElementCreationOptions, - ): HTMLAudioElement; - createElement( - tagName: 'blockquote', - options?: ElementCreationOptions, - ): HTMLQuoteElement; - createElement( - tagName: 'body', - options?: ElementCreationOptions, - ): HTMLBodyElement; - createElement(tagName: 'br', options?: ElementCreationOptions): HTMLBRElement; - createElement( - tagName: 'button', - options?: ElementCreationOptions, - ): HTMLButtonElement; - createElement( - tagName: 'canvas', - options?: ElementCreationOptions, - ): HTMLCanvasElement; - createElement( - tagName: 'col', - options?: ElementCreationOptions, - ): HTMLTableColElement; - createElement( - tagName: 'colgroup', - options?: ElementCreationOptions, - ): HTMLTableColElement; - createElement( - tagName: 'data', - options?: ElementCreationOptions, - ): HTMLDataElement; - createElement( - tagName: 'datalist', - options?: ElementCreationOptions, - ): HTMLDataListElement; - createElement( - tagName: 'del', - options?: ElementCreationOptions, - ): HTMLModElement; - createElement( - tagName: 'details', - options?: ElementCreationOptions, - ): HTMLDetailsElement; - createElement( - tagName: 'dialog', - options?: ElementCreationOptions, - ): HTMLDialogElement; - createElement( - tagName: 'div', - options?: ElementCreationOptions, - ): HTMLDivElement; - createElement( - tagName: 'dl', - options?: ElementCreationOptions, - ): HTMLDListElement; - createElement( - tagName: 'embed', - options?: ElementCreationOptions, - ): HTMLEmbedElement; - createElement( - tagName: 'fieldset', - options?: ElementCreationOptions, - ): HTMLFieldSetElement; - createElement( - tagName: 'form', - options?: ElementCreationOptions, - ): HTMLFormElement; - createElement( - tagName: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6', - options?: ElementCreationOptions, - ): HTMLHeadingElement; - createElement( - tagName: 'head', - options?: ElementCreationOptions, - ): HTMLHeadElement; - createElement(tagName: 'hr', options?: ElementCreationOptions): HTMLHRElement; - createElement( - tagName: 'html', - options?: ElementCreationOptions, - ): HTMLHtmlElement; - createElement( - tagName: 'iframe', - options?: ElementCreationOptions, - ): HTMLIFrameElement; - createElement( - tagName: 'img', - options?: ElementCreationOptions, - ): HTMLImageElement; - createElement( - tagName: 'input', - options?: ElementCreationOptions, - ): HTMLInputElement; - createElement( - tagName: 'ins', - options?: ElementCreationOptions, - ): HTMLModElement; - createElement( - tagName: 'label', - options?: ElementCreationOptions, - ): HTMLLabelElement; - createElement( - tagName: 'legend', - options?: ElementCreationOptions, - ): HTMLLegendElement; - createElement(tagName: 'li', options?: ElementCreationOptions): HTMLLIElement; - createElement( - tagName: 'link', - options?: ElementCreationOptions, - ): HTMLLinkElement; - createElement( - tagName: 'map', - options?: ElementCreationOptions, - ): HTMLMapElement; - createElement( - tagName: 'meta', - options?: ElementCreationOptions, - ): HTMLMetaElement; - createElement( - tagName: 'meter', - options?: ElementCreationOptions, - ): HTMLMeterElement; - createElement( - tagName: 'object', - options?: ElementCreationOptions, - ): HTMLObjectElement; - createElement( - tagName: 'ol', - options?: ElementCreationOptions, - ): HTMLOListElement; - createElement( - tagName: 'optgroup', - options?: ElementCreationOptions, - ): HTMLOptGroupElement; - createElement( - tagName: 'option', - options?: ElementCreationOptions, - ): HTMLOptionElement; - createElement( - tagName: 'p', - options?: ElementCreationOptions, - ): HTMLParagraphElement; - createElement( - tagName: 'param', - options?: ElementCreationOptions, - ): HTMLParamElement; - createElement( - tagName: 'picture', - options?: ElementCreationOptions, - ): HTMLPictureElement; - createElement( - tagName: 'pre', - options?: ElementCreationOptions, - ): HTMLPreElement; - createElement( - tagName: 'progress', - options?: ElementCreationOptions, - ): HTMLProgressElement; - createElement( - tagName: 'q', - options?: ElementCreationOptions, - ): HTMLQuoteElement; - createElement( - tagName: 'script', - options?: ElementCreationOptions, - ): HTMLScriptElement; - createElement( - tagName: 'select', - options?: ElementCreationOptions, - ): HTMLSelectElement; - createElement( - tagName: 'source', - options?: ElementCreationOptions, - ): HTMLSourceElement; - createElement( - tagName: 'span', - options?: ElementCreationOptions, - ): HTMLSpanElement; - createElement( - tagName: 'style', - options?: ElementCreationOptions, - ): HTMLStyleElement; - createElement( - tagName: 'textarea', - options?: ElementCreationOptions, - ): HTMLTextAreaElement; - createElement( - tagName: 'time', - options?: ElementCreationOptions, - ): HTMLTimeElement; - createElement( - tagName: 'title', - options?: ElementCreationOptions, - ): HTMLTitleElement; - createElement( - tagName: 'track', - options?: ElementCreationOptions, - ): HTMLTrackElement; - createElement( - tagName: 'video', - options?: ElementCreationOptions, - ): HTMLVideoElement; - createElement( - tagName: 'table', - options?: ElementCreationOptions, - ): HTMLTableElement; - createElement( - tagName: 'caption', - options?: ElementCreationOptions, - ): HTMLTableCaptionElement; - createElement( - tagName: 'thead' | 'tfoot' | 'tbody', - options?: ElementCreationOptions, - ): HTMLTableSectionElement; - createElement( - tagName: 'tr', - options?: ElementCreationOptions, - ): HTMLTableRowElement; - createElement( - tagName: 'td' | 'th', - options?: ElementCreationOptions, - ): HTMLTableCellElement; - createElement( - tagName: 'template', - options?: ElementCreationOptions, - ): HTMLTemplateElement; - createElement( - tagName: 'ul', - options?: ElementCreationOptions, - ): HTMLUListElement; - createElement(tagName: string, options?: ElementCreationOptions): HTMLElement; - createElementNS( - namespaceURI: string | null, - qualifiedName: string, - options?: ElementCreationOptions, - ): Element; - createTextNode(data: string): Text; - currentScript: HTMLScriptElement | null; - dir: 'rtl' | 'ltr'; - readonly doctype: DocumentType | null; - readonly documentElement: HTMLElement | null; - documentMode: number; - readonly documentURI: string; - domain: string | null; - embeds: HTMLCollection; - exitFullscreen(): Promise; - queryCommandSupported(cmdID: string): boolean; - execCommand(cmdID: string, showUI?: boolean, value?: any): boolean; - forms: HTMLCollection; - fullscreenElement: Element | null; - fullscreenEnabled: boolean; - getElementsByClassName(classNames: string): HTMLCollection; - getElementsByName(elementName: string): HTMLCollection; - getElementsByTagName(name: 'a'): HTMLCollection; - getElementsByTagName(name: 'area'): HTMLCollection; - getElementsByTagName(name: 'audio'): HTMLCollection; - getElementsByTagName(name: 'blockquote'): HTMLCollection; - getElementsByTagName(name: 'body'): HTMLCollection; - getElementsByTagName(name: 'br'): HTMLCollection; - getElementsByTagName(name: 'button'): HTMLCollection; - getElementsByTagName(name: 'canvas'): HTMLCollection; - getElementsByTagName(name: 'col'): HTMLCollection; - getElementsByTagName(name: 'colgroup'): HTMLCollection; - getElementsByTagName(name: 'data'): HTMLCollection; - getElementsByTagName(name: 'datalist'): HTMLCollection; - getElementsByTagName(name: 'del'): HTMLCollection; - getElementsByTagName(name: 'details'): HTMLCollection; - getElementsByTagName(name: 'dialog'): HTMLCollection; - getElementsByTagName(name: 'div'): HTMLCollection; - getElementsByTagName(name: 'dl'): HTMLCollection; - getElementsByTagName(name: 'embed'): HTMLCollection; - getElementsByTagName(name: 'fieldset'): HTMLCollection; - getElementsByTagName(name: 'form'): HTMLCollection; - getElementsByTagName( - name: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6', - ): HTMLCollection; - getElementsByTagName(name: 'head'): HTMLCollection; - getElementsByTagName(name: 'hr'): HTMLCollection; - getElementsByTagName(name: 'html'): HTMLCollection; - getElementsByTagName(name: 'iframe'): HTMLCollection; - getElementsByTagName(name: 'img'): HTMLCollection; - getElementsByTagName(name: 'input'): HTMLCollection; - getElementsByTagName(name: 'ins'): HTMLCollection; - getElementsByTagName(name: 'label'): HTMLCollection; - getElementsByTagName(name: 'legend'): HTMLCollection; - getElementsByTagName(name: 'li'): HTMLCollection; - getElementsByTagName(name: 'link'): HTMLCollection; - getElementsByTagName(name: 'map'): HTMLCollection; - getElementsByTagName(name: 'meta'): HTMLCollection; - getElementsByTagName(name: 'meter'): HTMLCollection; - getElementsByTagName(name: 'object'): HTMLCollection; - getElementsByTagName(name: 'ol'): HTMLCollection; - getElementsByTagName(name: 'option'): HTMLCollection; - getElementsByTagName(name: 'optgroup'): HTMLCollection; - getElementsByTagName(name: 'p'): HTMLCollection; - getElementsByTagName(name: 'param'): HTMLCollection; - getElementsByTagName(name: 'picture'): HTMLCollection; - getElementsByTagName(name: 'pre'): HTMLCollection; - getElementsByTagName(name: 'progress'): HTMLCollection; - getElementsByTagName(name: 'q'): HTMLCollection; - getElementsByTagName(name: 'script'): HTMLCollection; - getElementsByTagName(name: 'select'): HTMLCollection; - getElementsByTagName(name: 'source'): HTMLCollection; - getElementsByTagName(name: 'span'): HTMLCollection; - getElementsByTagName(name: 'style'): HTMLCollection; - getElementsByTagName(name: 'textarea'): HTMLCollection; - getElementsByTagName(name: 'time'): HTMLCollection; - getElementsByTagName(name: 'title'): HTMLCollection; - getElementsByTagName(name: 'track'): HTMLCollection; - getElementsByTagName(name: 'video'): HTMLCollection; - getElementsByTagName(name: 'table'): HTMLCollection; - getElementsByTagName( - name: 'caption', - ): HTMLCollection; - getElementsByTagName( - name: 'thead' | 'tfoot' | 'tbody', - ): HTMLCollection; - getElementsByTagName(name: 'tr'): HTMLCollection; - getElementsByTagName(name: 'td' | 'th'): HTMLCollection; - getElementsByTagName(name: 'template'): HTMLCollection; - getElementsByTagName(name: 'ul'): HTMLCollection; - getElementsByTagName(name: string): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'a', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'area', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'audio', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'blockquote', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'body', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'br', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'button', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'canvas', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'col', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'colgroup', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'data', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'datalist', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'del', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'details', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'dialog', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'div', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'dl', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'embed', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'fieldset', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'form', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'head', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'hr', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'html', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'iframe', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'img', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'input', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'ins', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'label', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'legend', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'li', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'link', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'map', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'meta', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'meter', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'object', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'ol', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'option', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'optgroup', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'p', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'param', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'picture', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'pre', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'progress', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'q', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'script', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'select', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'source', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'span', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'style', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'textarea', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'time', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'title', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'track', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'video', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'table', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'caption', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'thead' | 'tfoot' | 'tbody', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'tr', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'td' | 'th', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'template', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'ul', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: string, - ): HTMLCollection; - head: HTMLHeadElement | null; - images: HTMLCollection; - readonly implementation: DOMImplementation; - importNode(importedNode: T, deep: boolean): T; - /** - * Legacy alias of `characterSet` - * @deprecated - */ - readonly inputEncoding: string; - lastModified: string; - links: HTMLCollection; - media: string; - open(url?: string, name?: string, features?: string, replace?: boolean): any; - readyState: string; - referrer: string; - scripts: HTMLCollection; - scrollingElement: HTMLElement | null; - title: string; - visibilityState: 'visible' | 'hidden' | 'prerender' | 'unloaded'; - write(...content: Array): void; - writeln(...content: Array): void; - xmlEncoding: string; - xmlStandalone: boolean; - xmlVersion: string; - - registerElement(type: string, options?: ElementRegistrationOptions): any; - getSelection(): Selection | null; - - // 6.4.6 Focus management APIs - activeElement: HTMLElement | null; - hasFocus(): boolean; - - // extension - location: Location; - createEvent(eventInterface: 'CustomEvent'): CustomEvent; - createEvent(eventInterface: string): Event; - createRange(): Range; - elementFromPoint(x: number, y: number): HTMLElement | null; - elementsFromPoint(x: number, y: number): Array; - defaultView: any; - readonly compatMode: 'BackCompat' | 'CSS1Compat'; - hidden: boolean; - - // Pointer Lock specification - exitPointerLock(): void; - pointerLockElement: Element | null; - - // from ParentNode interface - childElementCount: number; - children: HTMLCollection; - firstElementChild: ?Element; - lastElementChild: ?Element; - append(...nodes: Array): void; - prepend(...nodes: Array): void; - - querySelector(selector: 'a'): HTMLAnchorElement | null; - querySelector(selector: 'area'): HTMLAreaElement | null; - querySelector(selector: 'audio'): HTMLAudioElement | null; - querySelector(selector: 'blockquote'): HTMLQuoteElement | null; - querySelector(selector: 'body'): HTMLBodyElement | null; - querySelector(selector: 'br'): HTMLBRElement | null; - querySelector(selector: 'button'): HTMLButtonElement | null; - querySelector(selector: 'canvas'): HTMLCanvasElement | null; - querySelector(selector: 'col'): HTMLTableColElement | null; - querySelector(selector: 'colgroup'): HTMLTableColElement | null; - querySelector(selector: 'data'): HTMLDataElement | null; - querySelector(selector: 'datalist'): HTMLDataListElement | null; - querySelector(selector: 'del'): HTMLModElement | null; - querySelector(selector: 'details'): HTMLDetailsElement | null; - querySelector(selector: 'dialog'): HTMLDialogElement | null; - querySelector(selector: 'div'): HTMLDivElement | null; - querySelector(selector: 'dl'): HTMLDListElement | null; - querySelector(selector: 'embed'): HTMLEmbedElement | null; - querySelector(selector: 'fieldset'): HTMLFieldSetElement | null; - querySelector(selector: 'form'): HTMLFormElement | null; - querySelector( - selector: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6', - ): HTMLHeadingElement; - querySelector(selector: 'head'): HTMLHeadElement | null; - querySelector(selector: 'hr'): HTMLHRElement | null; - querySelector(selector: 'html'): HTMLHtmlElement | null; - querySelector(selector: 'iframe'): HTMLIFrameElement | null; - querySelector(selector: 'img'): HTMLImageElement | null; - querySelector(selector: 'ins'): HTMLModElement | null; - querySelector(selector: 'input'): HTMLInputElement | null; - querySelector(selector: 'label'): HTMLLabelElement | null; - querySelector(selector: 'legend'): HTMLLegendElement | null; - querySelector(selector: 'li'): HTMLLIElement | null; - querySelector(selector: 'link'): HTMLLinkElement | null; - querySelector(selector: 'map'): HTMLMapElement | null; - querySelector(selector: 'meta'): HTMLMetaElement | null; - querySelector(selector: 'meter'): HTMLMeterElement | null; - querySelector(selector: 'object'): HTMLObjectElement | null; - querySelector(selector: 'ol'): HTMLOListElement | null; - querySelector(selector: 'option'): HTMLOptionElement | null; - querySelector(selector: 'optgroup'): HTMLOptGroupElement | null; - querySelector(selector: 'p'): HTMLParagraphElement | null; - querySelector(selector: 'param'): HTMLParamElement | null; - querySelector(selector: 'picture'): HTMLPictureElement | null; - querySelector(selector: 'pre'): HTMLPreElement | null; - querySelector(selector: 'progress'): HTMLProgressElement | null; - querySelector(selector: 'q'): HTMLQuoteElement | null; - querySelector(selector: 'script'): HTMLScriptElement | null; - querySelector(selector: 'select'): HTMLSelectElement | null; - querySelector(selector: 'source'): HTMLSourceElement | null; - querySelector(selector: 'span'): HTMLSpanElement | null; - querySelector(selector: 'style'): HTMLStyleElement | null; - querySelector(selector: 'textarea'): HTMLTextAreaElement | null; - querySelector(selector: 'time'): HTMLTimeElement | null; - querySelector(selector: 'title'): HTMLTitleElement | null; - querySelector(selector: 'track'): HTMLTrackElement | null; - querySelector(selector: 'video'): HTMLVideoElement | null; - querySelector(selector: 'table'): HTMLTableElement | null; - querySelector(selector: 'caption'): HTMLTableCaptionElement | null; - querySelector( - selector: 'thead' | 'tfoot' | 'tbody', - ): HTMLTableSectionElement | null; - querySelector(selector: 'tr'): HTMLTableRowElement | null; - querySelector(selector: 'td' | 'th'): HTMLTableCellElement | null; - querySelector(selector: 'template'): HTMLTemplateElement | null; - querySelector(selector: 'ul'): HTMLUListElement | null; - querySelector(selector: string): HTMLElement | null; - - querySelectorAll(selector: 'a'): NodeList; - querySelectorAll(selector: 'area'): NodeList; - querySelectorAll(selector: 'audio'): NodeList; - querySelectorAll(selector: 'blockquote'): NodeList; - querySelectorAll(selector: 'body'): NodeList; - querySelectorAll(selector: 'br'): NodeList; - querySelectorAll(selector: 'button'): NodeList; - querySelectorAll(selector: 'canvas'): NodeList; - querySelectorAll(selector: 'col'): NodeList; - querySelectorAll(selector: 'colgroup'): NodeList; - querySelectorAll(selector: 'data'): NodeList; - querySelectorAll(selector: 'datalist'): NodeList; - querySelectorAll(selector: 'del'): NodeList; - querySelectorAll(selector: 'details'): NodeList; - querySelectorAll(selector: 'dialog'): NodeList; - querySelectorAll(selector: 'div'): NodeList; - querySelectorAll(selector: 'dl'): NodeList; - querySelectorAll(selector: 'embed'): NodeList; - querySelectorAll(selector: 'fieldset'): NodeList; - querySelectorAll(selector: 'form'): NodeList; - querySelectorAll( - selector: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6', - ): NodeList; - querySelectorAll(selector: 'head'): NodeList; - querySelectorAll(selector: 'hr'): NodeList; - querySelectorAll(selector: 'html'): NodeList; - querySelectorAll(selector: 'iframe'): NodeList; - querySelectorAll(selector: 'img'): NodeList; - querySelectorAll(selector: 'input'): NodeList; - querySelectorAll(selector: 'ins'): NodeList; - querySelectorAll(selector: 'label'): NodeList; - querySelectorAll(selector: 'legend'): NodeList; - querySelectorAll(selector: 'li'): NodeList; - querySelectorAll(selector: 'link'): NodeList; - querySelectorAll(selector: 'map'): NodeList; - querySelectorAll(selector: 'meta'): NodeList; - querySelectorAll(selector: 'meter'): NodeList; - querySelectorAll(selector: 'object'): NodeList; - querySelectorAll(selector: 'ol'): NodeList; - querySelectorAll(selector: 'option'): NodeList; - querySelectorAll(selector: 'optgroup'): NodeList; - querySelectorAll(selector: 'p'): NodeList; - querySelectorAll(selector: 'param'): NodeList; - querySelectorAll(selector: 'picture'): NodeList; - querySelectorAll(selector: 'pre'): NodeList; - querySelectorAll(selector: 'progress'): NodeList; - querySelectorAll(selector: 'q'): NodeList; - querySelectorAll(selector: 'script'): NodeList; - querySelectorAll(selector: 'select'): NodeList; - querySelectorAll(selector: 'source'): NodeList; - querySelectorAll(selector: 'span'): NodeList; - querySelectorAll(selector: 'style'): NodeList; - querySelectorAll(selector: 'textarea'): NodeList; - querySelectorAll(selector: 'time'): NodeList; - querySelectorAll(selector: 'title'): NodeList; - querySelectorAll(selector: 'track'): NodeList; - querySelectorAll(selector: 'video'): NodeList; - querySelectorAll(selector: 'table'): NodeList; - querySelectorAll(selector: 'caption'): NodeList; - querySelectorAll( - selector: 'thead' | 'tfoot' | 'tbody', - ): NodeList; - querySelectorAll(selector: 'tr'): NodeList; - querySelectorAll(selector: 'td' | 'th'): NodeList; - querySelectorAll(selector: 'template'): NodeList; - querySelectorAll(selector: 'ul'): NodeList; - querySelectorAll(selector: string): NodeList; - - // Interface DocumentTraversal - // http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113/traversal.html#Traversal-Document - - // Not all combinations of RootNodeT and whatToShow are logically possible. - // The bitmasks NodeFilter.SHOW_CDATA_SECTION, - // NodeFilter.SHOW_ENTITY_REFERENCE, NodeFilter.SHOW_ENTITY, and - // NodeFilter.SHOW_NOTATION are deprecated and do not correspond to types - // that Flow knows about. - - // NodeFilter.SHOW_ATTRIBUTE is also deprecated, but corresponds to the - // type Attr. While there is no reason to prefer it to Node.attributes, - // it does have meaning and can be typed: When (whatToShow & - // NodeFilter.SHOW_ATTRIBUTE === 1), RootNodeT must be Attr, and when - // RootNodeT is Attr, bitmasks other than NodeFilter.SHOW_ATTRIBUTE are - // meaningless. - createNodeIterator( - root: RootNodeT, - whatToShow: 2, - filter?: NodeFilterInterface, - ): NodeIterator; - createTreeWalker( - root: RootNodeT, - whatToShow: 2, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - - // NodeFilter.SHOW_PROCESSING_INSTRUCTION is not implemented because Flow - // does not currently define a ProcessingInstruction class. - - // When (whatToShow & NodeFilter.SHOW_DOCUMENT === 1 || whatToShow & - // NodeFilter.SHOW_DOCUMENT_TYPE === 1), RootNodeT must be Document. - createNodeIterator( - root: RootNodeT, - whatToShow: 256, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 257, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 260, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 261, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 384, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 385, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 388, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 389, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 512, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 513, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 516, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 517, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 640, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 641, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 644, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 645, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 768, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 769, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 772, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 773, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 896, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 897, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 900, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 901, - filter?: NodeFilterInterface, - ): NodeIterator< - RootNodeT, - DocumentType | Document | Element | Text | Comment, - >; - createTreeWalker( - root: RootNodeT, - whatToShow: 256, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 257, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 260, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 261, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 384, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 385, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 388, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 389, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 512, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 513, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 516, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 517, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 640, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 641, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 644, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 645, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 768, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 769, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 772, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 773, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 896, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 897, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 900, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 901, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - - // When (whatToShow & NodeFilter.SHOW_DOCUMENT_FRAGMENT === 1), RootNodeT - // must be a DocumentFragment. - createNodeIterator( - root: RootNodeT, - whatToShow: 1024, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 1025, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 1028, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 1029, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 1152, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 1153, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 1156, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 1157, - filter?: NodeFilterInterface, - ): NodeIterator; - createTreeWalker( - root: RootNodeT, - whatToShow: 1024, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 1025, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 1028, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 1029, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 1152, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 1153, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 1156, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 1157, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - - // In the general case, RootNodeT may be any Node and whatToShow may be - // NodeFilter.SHOW_ALL or any combination of NodeFilter.SHOW_ELEMENT, - // NodeFilter.SHOW_TEXT and/or NodeFilter.SHOW_COMMENT - createNodeIterator( - root: RootNodeT, - whatToShow: 1, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 4, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 5, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 128, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 129, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 132, - filter?: NodeFilterInterface, - ): NodeIterator; - createNodeIterator( - root: RootNodeT, - whatToShow: 133, - filter?: NodeFilterInterface, - ): NodeIterator; - createTreeWalker( - root: RootNodeT, - whatToShow: 1, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 4, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 5, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 128, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 129, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 132, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - createTreeWalker( - root: RootNodeT, - whatToShow: 133, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - - // Catch all for when we don't know the value of `whatToShow` - // And for when whatToShow is not provided, it is assumed to be SHOW_ALL - createNodeIterator( - root: RootNodeT, - whatToShow?: number, - filter?: NodeFilterInterface, - ): NodeIterator; - createTreeWalker( - root: RootNodeT, - whatToShow?: number, - filter?: NodeFilterInterface, - entityReferenceExpansion?: boolean, - ): TreeWalker; - - // From NonElementParentNode Mixin. - getElementById(elementId: string): HTMLElement | null; - - // From DocumentOrShadowRoot Mixin. - readonly styleSheets: StyleSheetList; - adoptedStyleSheets: Array; -} - -declare class DocumentFragment extends Node { - // from ParentNode interface - childElementCount: number; - children: HTMLCollection; - firstElementChild: ?Element; - lastElementChild: ?Element; - append(...nodes: Array): void; - prepend(...nodes: Array): void; - - querySelector(selector: string): HTMLElement | null; - querySelectorAll(selector: string): NodeList; - - // From NonElementParentNode Mixin. - getElementById(elementId: string): HTMLElement | null; -} - -declare class Selection { - anchorNode: Node | null; - anchorOffset: number; - focusNode: Node | null; - focusOffset: number; - isCollapsed: boolean; - rangeCount: number; - type: string; - addRange(range: Range): void; - getRangeAt(index: number): Range; - removeRange(range: Range): void; - removeAllRanges(): void; - collapse(parentNode: Node | null, offset?: number): void; - collapseToStart(): void; - collapseToEnd(): void; - containsNode(aNode: Node, aPartlyContained?: boolean): boolean; - deleteFromDocument(): void; - extend(parentNode: Node, offset?: number): void; - empty(): void; - selectAllChildren(parentNode: Node): void; - setPosition(aNode: Node | null, offset?: number): void; - setBaseAndExtent( - anchorNode: Node, - anchorOffset: number, - focusNode: Node, - focusOffset: number, - ): void; - toString(): string; -} - -declare class Range { - // extension - startOffset: number; - collapsed: boolean; - endOffset: number; - startContainer: Node; - endContainer: Node; - commonAncestorContainer: Node; - setStart(refNode: Node, offset: number): void; - setEndBefore(refNode: Node): void; - setStartBefore(refNode: Node): void; - selectNode(refNode: Node): void; - detach(): void; - getBoundingClientRect(): DOMRect; - toString(): string; - compareBoundaryPoints(how: number, sourceRange: Range): number; - insertNode(newNode: Node): void; - collapse(toStart: boolean): void; - selectNodeContents(refNode: Node): void; - cloneContents(): DocumentFragment; - setEnd(refNode: Node, offset: number): void; - cloneRange(): Range; - getClientRects(): DOMRectList; - surroundContents(newParent: Node): void; - deleteContents(): void; - setStartAfter(refNode: Node): void; - extractContents(): DocumentFragment; - setEndAfter(refNode: Node): void; - createContextualFragment(fragment: string | TrustedHTML): DocumentFragment; - intersectsNode(refNode: Node): boolean; - isPointInRange(refNode: Node, offset: number): boolean; - static END_TO_END: number; - static START_TO_START: number; - static START_TO_END: number; - static END_TO_START: number; -} - -declare var document: Document; - -// TODO: HTMLDocument -type FocusOptions = {preventScroll?: boolean, ...}; - -declare class DOMTokenList { - @@iterator(): Iterator; - length: number; - item(index: number): string; - contains(token: string): boolean; - add(...token: Array): void; - remove(...token: Array): void; - toggle(token: string, force?: boolean): boolean; - replace(oldToken: string, newToken: string): boolean; - - forEach( - callbackfn: (value: string, index: number, list: DOMTokenList) => any, - thisArg?: any, - ): void; - entries(): Iterator<[number, string]>; - keys(): Iterator; - values(): Iterator; - [index: number]: string; -} - -declare class Element extends Node implements Animatable { - animate( - keyframes: Keyframe[] | PropertyIndexedKeyframes | null, - options?: number | KeyframeAnimationOptions, - ): Animation; - getAnimations(options?: GetAnimationsOptions): Animation[]; - assignedSlot: ?HTMLSlotElement; - attachShadow(shadowRootInitDict: ShadowRootInit): ShadowRoot; - attributes: NamedNodeMap; - classList: DOMTokenList; - className: string; - clientHeight: number; - clientLeft: number; - clientTop: number; - clientWidth: number; - id: string; - // flowlint unsafe-getters-setters:off - get innerHTML(): string; - set innerHTML(value: string | TrustedHTML): void; - // flowlint unsafe-getters-setters:error - localName: string; - namespaceURI: ?string; - nextElementSibling: ?Element; - // flowlint unsafe-getters-setters:off - get outerHTML(): string; - set outerHTML(value: string | TrustedHTML): void; - // flowlint unsafe-getters-setters:error - prefix: string | null; - previousElementSibling: ?Element; - scrollHeight: number; - scrollLeft: number; - scrollTop: number; - scrollWidth: number; - readonly tagName: string; - - // TODO: a lot more ARIA properties - ariaHidden: void | 'true' | 'false'; - - closest(selectors: string): ?Element; - - getAttribute(name?: string): ?string; - getAttributeNames(): Array; - getAttributeNS(namespaceURI: string | null, localName: string): string | null; - getAttributeNode(name: string): Attr | null; - getAttributeNodeNS( - namespaceURI: string | null, - localName: string, - ): Attr | null; - getBoundingClientRect(): DOMRect; - getClientRects(): DOMRectList; - getElementsByClassName(names: string): HTMLCollection; - getElementsByTagName(name: 'a'): HTMLCollection; - getElementsByTagName(name: 'audio'): HTMLCollection; - getElementsByTagName(name: 'br'): HTMLCollection; - getElementsByTagName(name: 'button'): HTMLCollection; - getElementsByTagName(name: 'canvas'): HTMLCollection; - getElementsByTagName(name: 'col'): HTMLCollection; - getElementsByTagName(name: 'colgroup'): HTMLCollection; - getElementsByTagName(name: 'data'): HTMLCollection; - getElementsByTagName(name: 'datalist'): HTMLCollection; - getElementsByTagName(name: 'del'): HTMLCollection; - getElementsByTagName(name: 'details'): HTMLCollection; - getElementsByTagName(name: 'dialog'): HTMLCollection; - getElementsByTagName(name: 'div'): HTMLCollection; - getElementsByTagName(name: 'dl'): HTMLCollection; - getElementsByTagName(name: 'fieldset'): HTMLCollection; - getElementsByTagName(name: 'form'): HTMLCollection; - getElementsByTagName( - name: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6', - ): HTMLCollection; - getElementsByTagName(name: 'head'): HTMLCollection; - getElementsByTagName(name: 'hr'): HTMLCollection; - getElementsByTagName(name: 'iframe'): HTMLCollection; - getElementsByTagName(name: 'img'): HTMLCollection; - getElementsByTagName(name: 'input'): HTMLCollection; - getElementsByTagName(name: 'ins'): HTMLCollection; - getElementsByTagName(name: 'label'): HTMLCollection; - getElementsByTagName(name: 'legend'): HTMLCollection; - getElementsByTagName(name: 'li'): HTMLCollection; - getElementsByTagName(name: 'link'): HTMLCollection; - getElementsByTagName(name: 'meta'): HTMLCollection; - getElementsByTagName(name: 'meter'): HTMLCollection; - getElementsByTagName(name: 'object'): HTMLCollection; - getElementsByTagName(name: 'ol'): HTMLCollection; - getElementsByTagName(name: 'option'): HTMLCollection; - getElementsByTagName(name: 'optgroup'): HTMLCollection; - getElementsByTagName(name: 'p'): HTMLCollection; - getElementsByTagName(name: 'param'): HTMLCollection; - getElementsByTagName(name: 'picture'): HTMLCollection; - getElementsByTagName(name: 'pre'): HTMLCollection; - getElementsByTagName(name: 'progress'): HTMLCollection; - getElementsByTagName(name: 'script'): HTMLCollection; - getElementsByTagName(name: 'select'): HTMLCollection; - getElementsByTagName(name: 'source'): HTMLCollection; - getElementsByTagName(name: 'span'): HTMLCollection; - getElementsByTagName(name: 'style'): HTMLCollection; - getElementsByTagName(name: 'textarea'): HTMLCollection; - getElementsByTagName(name: 'video'): HTMLCollection; - getElementsByTagName(name: 'table'): HTMLCollection; - getElementsByTagName(name: 'title'): HTMLCollection; - getElementsByTagName( - name: 'caption', - ): HTMLCollection; - getElementsByTagName( - name: 'thead' | 'tfoot' | 'tbody', - ): HTMLCollection; - getElementsByTagName(name: 'tr'): HTMLCollection; - getElementsByTagName(name: 'td' | 'th'): HTMLCollection; - getElementsByTagName(name: 'template'): HTMLCollection; - getElementsByTagName(name: 'ul'): HTMLCollection; - getElementsByTagName(name: string): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'a', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'audio', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'br', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'button', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'canvas', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'col', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'colgroup', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'data', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'datalist', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'del', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'details', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'dialog', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'div', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'dl', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'fieldset', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'form', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'head', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'hr', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'iframe', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'img', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'input', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'ins', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'label', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'legend', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'li', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'link', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'meta', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'meter', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'object', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'ol', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'option', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'optgroup', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'p', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'param', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'picture', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'pre', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'progress', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'script', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'select', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'source', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'span', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'style', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'textarea', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'video', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'table', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'title', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'caption', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'thead' | 'tfoot' | 'tbody', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'tr', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'td' | 'th', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'template', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: 'ul', - ): HTMLCollection; - getElementsByTagNameNS( - namespaceURI: string | null, - localName: string, - ): HTMLCollection; - hasAttribute(name: string): boolean; - hasAttributeNS(namespaceURI: string | null, localName: string): boolean; - hasAttributes(): boolean; - hasPointerCapture(pointerId: number): boolean; - insertAdjacentElement( - position: 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend', - element: Element, - ): void; - insertAdjacentHTML( - position: 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend', - html: string | TrustedHTML, - ): void; - insertAdjacentText( - position: 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend', - text: string, - ): void; - matches(selector: string): boolean; - releasePointerCapture(pointerId: number): void; - removeAttribute(name?: string): void; - removeAttributeNode(attributeNode: Attr): Attr; - removeAttributeNS(namespaceURI: string | null, localName: string): void; - requestFullscreen(options?: { - navigationUI: 'auto' | 'show' | 'hide', - ... - }): Promise; - requestPointerLock(): void; - scrollIntoView( - arg?: - | boolean - | { - behavior?: 'auto' | 'instant' | 'smooth', - block?: 'start' | 'center' | 'end' | 'nearest', - inline?: 'start' | 'center' | 'end' | 'nearest', - ... - }, - ): void; - scroll(x: number, y: number): void; - scroll(options: ScrollToOptions): void; - scrollTo(x: number, y: number): void; - scrollTo(options: ScrollToOptions): void; - scrollBy(x: number, y: number): void; - scrollBy(options: ScrollToOptions): void; - setAttribute(name?: string, value?: string): void; - toggleAttribute(name?: string, force?: boolean): void; - setAttributeNS( - namespaceURI: string | null, - qualifiedName: string, - value: string, - ): void; - setAttributeNode(newAttr: Attr): Attr | null; - setAttributeNodeNS(newAttr: Attr): Attr | null; - setPointerCapture(pointerId: number): void; - shadowRoot?: ShadowRoot; - slot?: string; - - // from ParentNode interface - childElementCount: number; - children: HTMLCollection; - firstElementChild: ?Element; - lastElementChild: ?Element; - append(...nodes: Array): void; - prepend(...nodes: Array): void; - - querySelector(selector: 'a'): HTMLAnchorElement | null; - querySelector(selector: 'area'): HTMLAreaElement | null; - querySelector(selector: 'audio'): HTMLAudioElement | null; - querySelector(selector: 'blockquote'): HTMLQuoteElement | null; - querySelector(selector: 'body'): HTMLBodyElement | null; - querySelector(selector: 'br'): HTMLBRElement | null; - querySelector(selector: 'button'): HTMLButtonElement | null; - querySelector(selector: 'canvas'): HTMLCanvasElement | null; - querySelector(selector: 'col'): HTMLTableColElement | null; - querySelector(selector: 'colgroup'): HTMLTableColElement | null; - querySelector(selector: 'data'): HTMLDataElement | null; - querySelector(selector: 'datalist'): HTMLDataListElement | null; - querySelector(selector: 'del'): HTMLModElement | null; - querySelector(selector: 'details'): HTMLDetailsElement | null; - querySelector(selector: 'dialog'): HTMLDialogElement | null; - querySelector(selector: 'div'): HTMLDivElement | null; - querySelector(selector: 'dl'): HTMLDListElement | null; - querySelector(selector: 'embed'): HTMLEmbedElement | null; - querySelector(selector: 'fieldset'): HTMLFieldSetElement | null; - querySelector(selector: 'form'): HTMLFormElement | null; - querySelector( - selector: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6', - ): HTMLHeadingElement; - querySelector(selector: 'head'): HTMLHeadElement | null; - querySelector(selector: 'hr'): HTMLHRElement | null; - querySelector(selector: 'html'): HTMLHtmlElement | null; - querySelector(selector: 'iframe'): HTMLIFrameElement | null; - querySelector(selector: 'img'): HTMLImageElement | null; - querySelector(selector: 'ins'): HTMLModElement | null; - querySelector(selector: 'input'): HTMLInputElement | null; - querySelector(selector: 'label'): HTMLLabelElement | null; - querySelector(selector: 'legend'): HTMLLegendElement | null; - querySelector(selector: 'li'): HTMLLIElement | null; - querySelector(selector: 'link'): HTMLLinkElement | null; - querySelector(selector: 'map'): HTMLMapElement | null; - querySelector(selector: 'meta'): HTMLMetaElement | null; - querySelector(selector: 'meter'): HTMLMeterElement | null; - querySelector(selector: 'object'): HTMLObjectElement | null; - querySelector(selector: 'ol'): HTMLOListElement | null; - querySelector(selector: 'option'): HTMLOptionElement | null; - querySelector(selector: 'optgroup'): HTMLOptGroupElement | null; - querySelector(selector: 'p'): HTMLParagraphElement | null; - querySelector(selector: 'param'): HTMLParamElement | null; - querySelector(selector: 'picture'): HTMLPictureElement | null; - querySelector(selector: 'pre'): HTMLPreElement | null; - querySelector(selector: 'progress'): HTMLProgressElement | null; - querySelector(selector: 'q'): HTMLQuoteElement | null; - querySelector(selector: 'script'): HTMLScriptElement | null; - querySelector(selector: 'select'): HTMLSelectElement | null; - querySelector(selector: 'source'): HTMLSourceElement | null; - querySelector(selector: 'span'): HTMLSpanElement | null; - querySelector(selector: 'style'): HTMLStyleElement | null; - querySelector(selector: 'textarea'): HTMLTextAreaElement | null; - querySelector(selector: 'time'): HTMLTimeElement | null; - querySelector(selector: 'title'): HTMLTitleElement | null; - querySelector(selector: 'track'): HTMLTrackElement | null; - querySelector(selector: 'video'): HTMLVideoElement | null; - querySelector(selector: 'table'): HTMLTableElement | null; - querySelector(selector: 'caption'): HTMLTableCaptionElement | null; - querySelector( - selector: 'thead' | 'tfoot' | 'tbody', - ): HTMLTableSectionElement | null; - querySelector(selector: 'tr'): HTMLTableRowElement | null; - querySelector(selector: 'td' | 'th'): HTMLTableCellElement | null; - querySelector(selector: 'template'): HTMLTemplateElement | null; - querySelector(selector: 'ul'): HTMLUListElement | null; - querySelector(selector: string): HTMLElement | null; - - querySelectorAll(selector: 'a'): NodeList; - querySelectorAll(selector: 'area'): NodeList; - querySelectorAll(selector: 'audio'): NodeList; - querySelectorAll(selector: 'blockquote'): NodeList; - querySelectorAll(selector: 'body'): NodeList; - querySelectorAll(selector: 'br'): NodeList; - querySelectorAll(selector: 'button'): NodeList; - querySelectorAll(selector: 'canvas'): NodeList; - querySelectorAll(selector: 'col'): NodeList; - querySelectorAll(selector: 'colgroup'): NodeList; - querySelectorAll(selector: 'data'): NodeList; - querySelectorAll(selector: 'datalist'): NodeList; - querySelectorAll(selector: 'del'): NodeList; - querySelectorAll(selector: 'details'): NodeList; - querySelectorAll(selector: 'dialog'): NodeList; - querySelectorAll(selector: 'div'): NodeList; - querySelectorAll(selector: 'dl'): NodeList; - querySelectorAll(selector: 'embed'): NodeList; - querySelectorAll(selector: 'fieldset'): NodeList; - querySelectorAll(selector: 'form'): NodeList; - querySelectorAll( - selector: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6', - ): NodeList; - querySelectorAll(selector: 'head'): NodeList; - querySelectorAll(selector: 'hr'): NodeList; - querySelectorAll(selector: 'html'): NodeList; - querySelectorAll(selector: 'iframe'): NodeList; - querySelectorAll(selector: 'img'): NodeList; - querySelectorAll(selector: 'input'): NodeList; - querySelectorAll(selector: 'ins'): NodeList; - querySelectorAll(selector: 'label'): NodeList; - querySelectorAll(selector: 'legend'): NodeList; - querySelectorAll(selector: 'li'): NodeList; - querySelectorAll(selector: 'link'): NodeList; - querySelectorAll(selector: 'map'): NodeList; - querySelectorAll(selector: 'meta'): NodeList; - querySelectorAll(selector: 'meter'): NodeList; - querySelectorAll(selector: 'object'): NodeList; - querySelectorAll(selector: 'ol'): NodeList; - querySelectorAll(selector: 'option'): NodeList; - querySelectorAll(selector: 'optgroup'): NodeList; - querySelectorAll(selector: 'p'): NodeList; - querySelectorAll(selector: 'param'): NodeList; - querySelectorAll(selector: 'picture'): NodeList; - querySelectorAll(selector: 'pre'): NodeList; - querySelectorAll(selector: 'progress'): NodeList; - querySelectorAll(selector: 'q'): NodeList; - querySelectorAll(selector: 'script'): NodeList; - querySelectorAll(selector: 'select'): NodeList; - querySelectorAll(selector: 'source'): NodeList; - querySelectorAll(selector: 'span'): NodeList; - querySelectorAll(selector: 'style'): NodeList; - querySelectorAll(selector: 'textarea'): NodeList; - querySelectorAll(selector: 'time'): NodeList; - querySelectorAll(selector: 'title'): NodeList; - querySelectorAll(selector: 'track'): NodeList; - querySelectorAll(selector: 'video'): NodeList; - querySelectorAll(selector: 'table'): NodeList; - querySelectorAll(selector: 'caption'): NodeList; - querySelectorAll( - selector: 'thead' | 'tfoot' | 'tbody', - ): NodeList; - querySelectorAll(selector: 'tr'): NodeList; - querySelectorAll(selector: 'td' | 'th'): NodeList; - querySelectorAll(selector: 'template'): NodeList; - querySelectorAll(selector: 'ul'): NodeList; - querySelectorAll(selector: string): NodeList; - - // from ChildNode interface - after(...nodes: Array): void; - before(...nodes: Array): void; - replaceWith(...nodes: Array): void; - remove(): void; -} - -declare class HTMLElement extends Element { - blur(): void; - click(): void; - focus(options?: FocusOptions): void; - getBoundingClientRect(): DOMRect; - forceSpellcheck(): void; - accessKey: string; - accessKeyLabel: string; - contentEditable: string; - contextMenu: ?HTMLMenuElement; - dataset: DOMStringMap; - dir: 'ltr' | 'rtl' | 'auto'; - draggable: boolean; - dropzone: any; - hidden: boolean; - inert: boolean; - isContentEditable: boolean; - itemProp: any; - itemScope: boolean; - itemType: any; - itemValue: Object; - lang: string; - offsetHeight: number; - offsetLeft: number; - offsetParent: ?Element; - offsetTop: number; - offsetWidth: number; - onabort: ?Function; - onblur: ?Function; - oncancel: ?Function; - oncanplay: ?Function; - oncanplaythrough: ?Function; - onchange: ?Function; - onclick: ?Function; - oncontextmenu: ?Function; - oncuechange: ?Function; - ondblclick: ?Function; - ondurationchange: ?Function; - onemptied: ?Function; - onended: ?Function; - onerror: ?Function; - onfocus: ?Function; - onfullscreenchange: ?Function; - onfullscreenerror: ?Function; - ongotpointercapture: ?Function; - oninput: ?Function; - oninvalid: ?Function; - onkeydown: ?Function; - onkeypress: ?Function; - onkeyup: ?Function; - onload: ?Function; - onloadeddata: ?Function; - onloadedmetadata: ?Function; - onloadstart: ?Function; - onlostpointercapture: ?Function; - onmousedown: ?Function; - onmouseenter: ?Function; - onmouseleave: ?Function; - onmousemove: ?Function; - onmouseout: ?Function; - onmouseover: ?Function; - onmouseup: ?Function; - onmousewheel: ?Function; - onpause: ?Function; - onplay: ?Function; - onplaying: ?Function; - onpointercancel: ?Function; - onpointerdown: ?Function; - onpointerenter: ?Function; - onpointerleave: ?Function; - onpointermove: ?Function; - onpointerout: ?Function; - onpointerover: ?Function; - onpointerup: ?Function; - onprogress: ?Function; - onratechange: ?Function; - onreadystatechange: ?Function; - onreset: ?Function; - onresize: ?Function; - onscroll: ?Function; - onseeked: ?Function; - onseeking: ?Function; - onselect: ?Function; - onshow: ?Function; - onstalled: ?Function; - onsubmit: ?Function; - onsuspend: ?Function; - ontimeupdate: ?Function; - ontoggle: ?Function; - onvolumechange: ?Function; - onwaiting: ?Function; - properties: any; - spellcheck: boolean; - style: CSSStyleDeclaration; - tabIndex: number; - title: string; - translate: boolean; -} - -declare class HTMLSlotElement extends HTMLElement { - name: string; - assignedNodes(options?: {flatten: boolean, ...}): Node[]; -} - -declare class HTMLTableElement extends HTMLElement { - tagName: 'TABLE'; - caption: HTMLTableCaptionElement | null; - tHead: HTMLTableSectionElement | null; - tFoot: HTMLTableSectionElement | null; - readonly tBodies: HTMLCollection; - readonly rows: HTMLCollection; - createTHead(): HTMLTableSectionElement; - deleteTHead(): void; - createTFoot(): HTMLTableSectionElement; - deleteTFoot(): void; - createCaption(): HTMLTableCaptionElement; - deleteCaption(): void; - insertRow(index?: number): HTMLTableRowElement; - deleteRow(index: number): void; -} - -declare class HTMLTableCaptionElement extends HTMLElement { - tagName: 'CAPTION'; -} - -declare class HTMLTableColElement extends HTMLElement { - tagName: 'COL' | 'COLGROUP'; - span: number; -} - -declare class HTMLTableSectionElement extends HTMLElement { - tagName: 'THEAD' | 'TFOOT' | 'TBODY'; - readonly rows: HTMLCollection; - insertRow(index?: number): HTMLTableRowElement; - deleteRow(index: number): void; -} - -declare class HTMLTableCellElement extends HTMLElement { - tagName: 'TD' | 'TH'; - colSpan: number; - rowSpan: number; - readonly cellIndex: number; -} - -declare class HTMLTableRowElement extends HTMLElement { - tagName: 'TR'; - align: 'left' | 'right' | 'center'; - readonly rowIndex: number; - readonly sectionRowIndex: number; - readonly cells: HTMLCollection; - deleteCell(index: number): void; - insertCell(index?: number): HTMLTableCellElement; -} - -declare class HTMLMenuElement extends HTMLElement { - getCompact(): boolean; - setCompact(compact: boolean): void; -} - -declare class HTMLBaseElement extends HTMLElement { - href: string; - target: string; -} - -declare class HTMLTemplateElement extends HTMLElement { - content: DocumentFragment; -} - -declare class CanvasGradient { - addColorStop(offset: number, color: string): void; -} - -declare class CanvasPattern { - setTransform(matrix: SVGMatrix): void; -} - -declare class ImageBitmap { - close(): void; - width: number; - height: number; -} - -type CanvasFillRule = string; - -type CanvasImageSource = - | HTMLImageElement - | HTMLVideoElement - | HTMLCanvasElement - | CanvasRenderingContext2D - | ImageBitmap; - -declare class HitRegionOptions { - path?: Path2D; - fillRule?: CanvasFillRule; - id?: string; - parentID?: string; - cursor?: string; - control?: Element; - label: ?string; - role: ?string; -} - -declare class CanvasDrawingStyles { - lineWidth: number; - lineCap: string; - lineJoin: string; - miterLimit: number; - - // dashed lines - setLineDash(segments: Array): void; - getLineDash(): Array; - lineDashOffset: number; - - // text - font: string; - textAlign: string; - textBaseline: string; - direction: string; -} - -declare class SVGMatrix { - getComponent(index: number): number; - mMultiply(secondMatrix: SVGMatrix): SVGMatrix; - inverse(): SVGMatrix; - mTranslate(x: number, y: number): SVGMatrix; - mScale(scaleFactor: number): SVGMatrix; - mRotate(angle: number): SVGMatrix; -} - -declare class TextMetrics { - // x-direction - width: number; - actualBoundingBoxLeft: number; - actualBoundingBoxRight: number; - - // y-direction - fontBoundingBoxAscent: number; - fontBoundingBoxDescent: number; - actualBoundingBoxAscent: number; - actualBoundingBoxDescent: number; - emHeightAscent: number; - emHeightDescent: number; - hangingBaseline: number; - alphabeticBaseline: number; - ideographicBaseline: number; -} - -declare class Path2D { - constructor(path?: Path2D | string): void; - - addPath(path: Path2D, transformation?: ?SVGMatrix): void; - addPathByStrokingPath( - path: Path2D, - styles: CanvasDrawingStyles, - transformation?: ?SVGMatrix, - ): void; - addText( - text: string, - styles: CanvasDrawingStyles, - transformation: ?SVGMatrix, - x: number, - y: number, - maxWidth?: number, - ): void; - addPathByStrokingText( - text: string, - styles: CanvasDrawingStyles, - transformation: ?SVGMatrix, - x: number, - y: number, - maxWidth?: number, - ): void; - addText( - text: string, - styles: CanvasDrawingStyles, - transformation: ?SVGMatrix, - path: Path2D, - maxWidth?: number, - ): void; - addPathByStrokingText( - text: string, - styles: CanvasDrawingStyles, - transformation: ?SVGMatrix, - path: Path2D, - maxWidth?: number, - ): void; - - // CanvasPathMethods - // shared path API methods - arc( - x: number, - y: number, - radius: number, - startAngle: number, - endAngle: number, - anticlockwise?: boolean, - ): void; - arcTo( - x1: number, - y1: number, - x2: number, - y2: number, - radius: number, - _: void, - _: void, - ): void; - arcTo( - x1: number, - y1: number, - x2: number, - y2: number, - radiusX: number, - radiusY: number, - rotation: number, - ): void; - bezierCurveTo( - cp1x: number, - cp1y: number, - cp2x: number, - cp2y: number, - x: number, - y: number, - ): void; - closePath(): void; - ellipse( - x: number, - y: number, - radiusX: number, - radiusY: number, - rotation: number, - startAngle: number, - endAngle: number, - anticlockwise?: boolean, - ): void; - lineTo(x: number, y: number): void; - moveTo(x: number, y: number): void; - quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; - rect(x: number, y: number, w: number, h: number): void; -} - -declare class ImageData { - width: number; - height: number; - data: Uint8ClampedArray; - - // constructor methods are used in Worker where CanvasRenderingContext2D - // is unavailable. - // https://html.spec.whatwg.org/multipage/scripting.html#dom-imagedata - constructor(data: Uint8ClampedArray, width: number, height: number): void; - constructor(width: number, height: number): void; -} - -interface DOMPointInit { - w?: number; - x?: number; - y?: number; - z?: number; -} - -declare class CanvasRenderingContext2D { - canvas: HTMLCanvasElement; - - // canvas dimensions - width: number; - height: number; - - // for contexts that aren't directly fixed to a specific canvas - commit(): void; - - // state - save(): void; - restore(): void; - - // transformations - currentTransform: SVGMatrix; - scale(x: number, y: number): void; - rotate(angle: number): void; - translate(x: number, y: number): void; - transform( - a: number, - b: number, - c: number, - d: number, - e: number, - f: number, - ): void; - setTransform( - a: number, - b: number, - c: number, - d: number, - e: number, - f: number, - ): void; - resetTransform(): void; - - // compositing - globalAlpha: number; - globalCompositeOperation: string; - - // image smoothing - imageSmoothingEnabled: boolean; - imageSmoothingQuality: 'low' | 'medium' | 'high'; - - // filters - filter: string; - - // colours and styles - strokeStyle: string | CanvasGradient | CanvasPattern; - fillStyle: string | CanvasGradient | CanvasPattern; - createLinearGradient( - x0: number, - y0: number, - x1: number, - y1: number, - ): CanvasGradient; - createRadialGradient( - x0: number, - y0: number, - r0: number, - x1: number, - y1: number, - r1: number, - ): CanvasGradient; - createPattern(image: CanvasImageSource, repetition: ?string): CanvasPattern; - - // shadows - shadowOffsetX: number; - shadowOffsetY: number; - shadowBlur: number; - shadowColor: string; - - // rects - clearRect(x: number, y: number, w: number, h: number): void; - fillRect(x: number, y: number, w: number, h: number): void; - roundRect( - x: number, - y: number, - w: number, - h: number, - radii?: number | DOMPointInit | ReadonlyArray, - ): void; - strokeRect(x: number, y: number, w: number, h: number): void; - - // path API - beginPath(): void; - fill(fillRule?: CanvasFillRule): void; - fill(path: Path2D, fillRule?: CanvasFillRule): void; - stroke(): void; - stroke(path: Path2D): void; - drawFocusIfNeeded(element: Element): void; - drawFocusIfNeeded(path: Path2D, element: Element): void; - scrollPathIntoView(): void; - scrollPathIntoView(path: Path2D): void; - clip(fillRule?: CanvasFillRule): void; - clip(path: Path2D, fillRule?: CanvasFillRule): void; - resetClip(): void; - isPointInPath(x: number, y: number, fillRule?: CanvasFillRule): boolean; - isPointInPath( - path: Path2D, - x: number, - y: number, - fillRule?: CanvasFillRule, - ): boolean; - isPointInStroke(x: number, y: number): boolean; - isPointInStroke(path: Path2D, x: number, y: number): boolean; - - // text (see also the CanvasDrawingStyles interface) - fillText(text: string, x: number, y: number, maxWidth?: number): void; - strokeText(text: string, x: number, y: number, maxWidth?: number): void; - measureText(text: string): TextMetrics; - - // drawing images - drawImage(image: CanvasImageSource, dx: number, dy: number): void; - drawImage( - image: CanvasImageSource, - dx: number, - dy: number, - dw: number, - dh: number, - ): void; - drawImage( - image: CanvasImageSource, - sx: number, - sy: number, - sw: number, - sh: number, - dx: number, - dy: number, - dw: number, - dh: number, - ): void; - - // hit regions - addHitRegion(options?: HitRegionOptions): void; - removeHitRegion(id: string): void; - clearHitRegions(): void; - - // pixel manipulation - createImageData(sw: number, sh: number): ImageData; - createImageData(imagedata: ImageData): ImageData; - getImageData(sx: number, sy: number, sw: number, sh: number): ImageData; - putImageData(imagedata: ImageData, dx: number, dy: number): void; - putImageData( - imagedata: ImageData, - dx: number, - dy: number, - dirtyX: number, - dirtyY: number, - dirtyWidth: number, - dirtyHeight: number, - ): void; - - // CanvasDrawingStyles - // line caps/joins - lineWidth: number; - lineCap: string; - lineJoin: string; - miterLimit: number; - - // dashed lines - setLineDash(segments: Array): void; - getLineDash(): Array; - lineDashOffset: number; - - // text - font: string; - textAlign: string; - textBaseline: string; - direction: string; - - // CanvasPathMethods - // shared path API methods - closePath(): void; - moveTo(x: number, y: number): void; - lineTo(x: number, y: number): void; - quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; - bezierCurveTo( - cp1x: number, - cp1y: number, - cp2x: number, - cp2y: number, - x: number, - y: number, - ): void; - arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void; - arcTo( - x1: number, - y1: number, - x2: number, - y2: number, - radiusX: number, - radiusY: number, - rotation: number, - ): void; - rect(x: number, y: number, w: number, h: number): void; - arc( - x: number, - y: number, - radius: number, - startAngle: number, - endAngle: number, - anticlockwise?: boolean, - ): void; - ellipse( - x: number, - y: number, - radiusX: number, - radiusY: number, - rotation: number, - startAngle: number, - endAngle: number, - anticlockwise?: boolean, - ): void; -} - -// WebGL idl: https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl - -type WebGLContextAttributes = { - alpha: boolean, - depth: boolean, - stencil: boolean, - antialias: boolean, - premultipliedAlpha: boolean, - preserveDrawingBuffer: boolean, - preferLowPowerToHighPerformance: boolean, - failIfMajorPerformanceCaveat: boolean, - ... -}; - -interface WebGLObject {} - -interface WebGLBuffer extends WebGLObject {} - -interface WebGLFramebuffer extends WebGLObject {} - -interface WebGLProgram extends WebGLObject {} - -interface WebGLRenderbuffer extends WebGLObject {} - -interface WebGLShader extends WebGLObject {} - -interface WebGLTexture extends WebGLObject {} - -interface WebGLUniformLocation {} - -interface WebGLActiveInfo { - size: number; - type: number; - name: string; -} - -interface WebGLShaderPrecisionFormat { - rangeMin: number; - rangeMax: number; - precision: number; -} - -type BufferDataSource = ArrayBuffer | $ArrayBufferView; - -type TexImageSource = - | ImageBitmap - | ImageData - | HTMLImageElement - | HTMLCanvasElement - | HTMLVideoElement; - -type VertexAttribFVSource = Float32Array | Array; - -/* flow */ -declare class WebGLRenderingContext { - static DEPTH_BUFFER_BIT: 0x00000100; - DEPTH_BUFFER_BIT: 0x00000100; - static STENCIL_BUFFER_BIT: 0x00000400; - STENCIL_BUFFER_BIT: 0x00000400; - static COLOR_BUFFER_BIT: 0x00004000; - COLOR_BUFFER_BIT: 0x00004000; - static POINTS: 0x0000; - POINTS: 0x0000; - static LINES: 0x0001; - LINES: 0x0001; - static LINE_LOOP: 0x0002; - LINE_LOOP: 0x0002; - static LINE_STRIP: 0x0003; - LINE_STRIP: 0x0003; - static TRIANGLES: 0x0004; - TRIANGLES: 0x0004; - static TRIANGLE_STRIP: 0x0005; - TRIANGLE_STRIP: 0x0005; - static TRIANGLE_FAN: 0x0006; - TRIANGLE_FAN: 0x0006; - static ZERO: 0; - ZERO: 0; - static ONE: 1; - ONE: 1; - static SRC_COLOR: 0x0300; - SRC_COLOR: 0x0300; - static ONE_MINUS_SRC_COLOR: 0x0301; - ONE_MINUS_SRC_COLOR: 0x0301; - static SRC_ALPHA: 0x0302; - SRC_ALPHA: 0x0302; - static ONE_MINUS_SRC_ALPHA: 0x0303; - ONE_MINUS_SRC_ALPHA: 0x0303; - static DST_ALPHA: 0x0304; - DST_ALPHA: 0x0304; - static ONE_MINUS_DST_ALPHA: 0x0305; - ONE_MINUS_DST_ALPHA: 0x0305; - static DST_COLOR: 0x0306; - DST_COLOR: 0x0306; - static ONE_MINUS_DST_COLOR: 0x0307; - ONE_MINUS_DST_COLOR: 0x0307; - static SRC_ALPHA_SATURATE: 0x0308; - SRC_ALPHA_SATURATE: 0x0308; - static FUNC_ADD: 0x8006; - FUNC_ADD: 0x8006; - static BLEND_EQUATION: 0x8009; - BLEND_EQUATION: 0x8009; - static BLEND_EQUATION_RGB: 0x8009; - BLEND_EQUATION_RGB: 0x8009; - static BLEND_EQUATION_ALPHA: 0x883d; - BLEND_EQUATION_ALPHA: 0x883d; - static FUNC_SUBTRACT: 0x800a; - FUNC_SUBTRACT: 0x800a; - static FUNC_REVERSE_SUBTRACT: 0x800b; - FUNC_REVERSE_SUBTRACT: 0x800b; - static BLEND_DST_RGB: 0x80c8; - BLEND_DST_RGB: 0x80c8; - static BLEND_SRC_RGB: 0x80c9; - BLEND_SRC_RGB: 0x80c9; - static BLEND_DST_ALPHA: 0x80ca; - BLEND_DST_ALPHA: 0x80ca; - static BLEND_SRC_ALPHA: 0x80cb; - BLEND_SRC_ALPHA: 0x80cb; - static CONSTANT_COLOR: 0x8001; - CONSTANT_COLOR: 0x8001; - static ONE_MINUS_CONSTANT_COLOR: 0x8002; - ONE_MINUS_CONSTANT_COLOR: 0x8002; - static CONSTANT_ALPHA: 0x8003; - CONSTANT_ALPHA: 0x8003; - static ONE_MINUS_CONSTANT_ALPHA: 0x8004; - ONE_MINUS_CONSTANT_ALPHA: 0x8004; - static BLEND_COLOR: 0x8005; - BLEND_COLOR: 0x8005; - static ARRAY_BUFFER: 0x8892; - ARRAY_BUFFER: 0x8892; - static ELEMENT_ARRAY_BUFFER: 0x8893; - ELEMENT_ARRAY_BUFFER: 0x8893; - static ARRAY_BUFFER_BINDING: 0x8894; - ARRAY_BUFFER_BINDING: 0x8894; - static ELEMENT_ARRAY_BUFFER_BINDING: 0x8895; - ELEMENT_ARRAY_BUFFER_BINDING: 0x8895; - static STREAM_DRAW: 0x88e0; - STREAM_DRAW: 0x88e0; - static STATIC_DRAW: 0x88e4; - STATIC_DRAW: 0x88e4; - static DYNAMIC_DRAW: 0x88e8; - DYNAMIC_DRAW: 0x88e8; - static BUFFER_SIZE: 0x8764; - BUFFER_SIZE: 0x8764; - static BUFFER_USAGE: 0x8765; - BUFFER_USAGE: 0x8765; - static CURRENT_VERTEX_ATTRIB: 0x8626; - CURRENT_VERTEX_ATTRIB: 0x8626; - static FRONT: 0x0404; - FRONT: 0x0404; - static BACK: 0x0405; - BACK: 0x0405; - static FRONT_AND_BACK: 0x0408; - FRONT_AND_BACK: 0x0408; - static CULL_FACE: 0x0b44; - CULL_FACE: 0x0b44; - static BLEND: 0x0be2; - BLEND: 0x0be2; - static DITHER: 0x0bd0; - DITHER: 0x0bd0; - static STENCIL_TEST: 0x0b90; - STENCIL_TEST: 0x0b90; - static DEPTH_TEST: 0x0b71; - DEPTH_TEST: 0x0b71; - static SCISSOR_TEST: 0x0c11; - SCISSOR_TEST: 0x0c11; - static POLYGON_OFFSET_FILL: 0x8037; - POLYGON_OFFSET_FILL: 0x8037; - static SAMPLE_ALPHA_TO_COVERAGE: 0x809e; - SAMPLE_ALPHA_TO_COVERAGE: 0x809e; - static SAMPLE_COVERAGE: 0x80a0; - SAMPLE_COVERAGE: 0x80a0; - static NO_ERROR: 0; - NO_ERROR: 0; - static INVALID_ENUM: 0x0500; - INVALID_ENUM: 0x0500; - static INVALID_VALUE: 0x0501; - INVALID_VALUE: 0x0501; - static INVALID_OPERATION: 0x0502; - INVALID_OPERATION: 0x0502; - static OUT_OF_MEMORY: 0x0505; - OUT_OF_MEMORY: 0x0505; - static CW: 0x0900; - CW: 0x0900; - static CCW: 0x0901; - CCW: 0x0901; - static LINE_WIDTH: 0x0b21; - LINE_WIDTH: 0x0b21; - static ALIASED_POINT_SIZE_RANGE: 0x846d; - ALIASED_POINT_SIZE_RANGE: 0x846d; - static ALIASED_LINE_WIDTH_RANGE: 0x846e; - ALIASED_LINE_WIDTH_RANGE: 0x846e; - static CULL_FACE_MODE: 0x0b45; - CULL_FACE_MODE: 0x0b45; - static FRONT_FACE: 0x0b46; - FRONT_FACE: 0x0b46; - static DEPTH_RANGE: 0x0b70; - DEPTH_RANGE: 0x0b70; - static DEPTH_WRITEMASK: 0x0b72; - DEPTH_WRITEMASK: 0x0b72; - static DEPTH_CLEAR_VALUE: 0x0b73; - DEPTH_CLEAR_VALUE: 0x0b73; - static DEPTH_FUNC: 0x0b74; - DEPTH_FUNC: 0x0b74; - static STENCIL_CLEAR_VALUE: 0x0b91; - STENCIL_CLEAR_VALUE: 0x0b91; - static STENCIL_FUNC: 0x0b92; - STENCIL_FUNC: 0x0b92; - static STENCIL_FAIL: 0x0b94; - STENCIL_FAIL: 0x0b94; - static STENCIL_PASS_DEPTH_FAIL: 0x0b95; - STENCIL_PASS_DEPTH_FAIL: 0x0b95; - static STENCIL_PASS_DEPTH_PASS: 0x0b96; - STENCIL_PASS_DEPTH_PASS: 0x0b96; - static STENCIL_REF: 0x0b97; - STENCIL_REF: 0x0b97; - static STENCIL_VALUE_MASK: 0x0b93; - STENCIL_VALUE_MASK: 0x0b93; - static STENCIL_WRITEMASK: 0x0b98; - STENCIL_WRITEMASK: 0x0b98; - static STENCIL_BACK_FUNC: 0x8800; - STENCIL_BACK_FUNC: 0x8800; - static STENCIL_BACK_FAIL: 0x8801; - STENCIL_BACK_FAIL: 0x8801; - static STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802; - STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802; - static STENCIL_BACK_PASS_DEPTH_PASS: 0x8803; - STENCIL_BACK_PASS_DEPTH_PASS: 0x8803; - static STENCIL_BACK_REF: 0x8ca3; - STENCIL_BACK_REF: 0x8ca3; - static STENCIL_BACK_VALUE_MASK: 0x8ca4; - STENCIL_BACK_VALUE_MASK: 0x8ca4; - static STENCIL_BACK_WRITEMASK: 0x8ca5; - STENCIL_BACK_WRITEMASK: 0x8ca5; - static VIEWPORT: 0x0ba2; - VIEWPORT: 0x0ba2; - static SCISSOR_BOX: 0x0c10; - SCISSOR_BOX: 0x0c10; - static COLOR_CLEAR_VALUE: 0x0c22; - COLOR_CLEAR_VALUE: 0x0c22; - static COLOR_WRITEMASK: 0x0c23; - COLOR_WRITEMASK: 0x0c23; - static UNPACK_ALIGNMENT: 0x0cf5; - UNPACK_ALIGNMENT: 0x0cf5; - static PACK_ALIGNMENT: 0x0d05; - PACK_ALIGNMENT: 0x0d05; - static MAX_TEXTURE_SIZE: 0x0d33; - MAX_TEXTURE_SIZE: 0x0d33; - static MAX_VIEWPORT_DIMS: 0x0d3a; - MAX_VIEWPORT_DIMS: 0x0d3a; - static SUBPIXEL_BITS: 0x0d50; - SUBPIXEL_BITS: 0x0d50; - static RED_BITS: 0x0d52; - RED_BITS: 0x0d52; - static GREEN_BITS: 0x0d53; - GREEN_BITS: 0x0d53; - static BLUE_BITS: 0x0d54; - BLUE_BITS: 0x0d54; - static ALPHA_BITS: 0x0d55; - ALPHA_BITS: 0x0d55; - static DEPTH_BITS: 0x0d56; - DEPTH_BITS: 0x0d56; - static STENCIL_BITS: 0x0d57; - STENCIL_BITS: 0x0d57; - static POLYGON_OFFSET_UNITS: 0x2a00; - POLYGON_OFFSET_UNITS: 0x2a00; - static POLYGON_OFFSET_FACTOR: 0x8038; - POLYGON_OFFSET_FACTOR: 0x8038; - static TEXTURE_BINDING_2D: 0x8069; - TEXTURE_BINDING_2D: 0x8069; - static SAMPLE_BUFFERS: 0x80a8; - SAMPLE_BUFFERS: 0x80a8; - static SAMPLES: 0x80a9; - SAMPLES: 0x80a9; - static SAMPLE_COVERAGE_VALUE: 0x80aa; - SAMPLE_COVERAGE_VALUE: 0x80aa; - static SAMPLE_COVERAGE_INVERT: 0x80ab; - SAMPLE_COVERAGE_INVERT: 0x80ab; - static COMPRESSED_TEXTURE_FORMATS: 0x86a3; - COMPRESSED_TEXTURE_FORMATS: 0x86a3; - static DONT_CARE: 0x1100; - DONT_CARE: 0x1100; - static FASTEST: 0x1101; - FASTEST: 0x1101; - static NICEST: 0x1102; - NICEST: 0x1102; - static GENERATE_MIPMAP_HINT: 0x8192; - GENERATE_MIPMAP_HINT: 0x8192; - static BYTE: 0x1400; - BYTE: 0x1400; - static UNSIGNED_BYTE: 0x1401; - UNSIGNED_BYTE: 0x1401; - static SHORT: 0x1402; - SHORT: 0x1402; - static UNSIGNED_SHORT: 0x1403; - UNSIGNED_SHORT: 0x1403; - static INT: 0x1404; - INT: 0x1404; - static UNSIGNED_INT: 0x1405; - UNSIGNED_INT: 0x1405; - static FLOAT: 0x1406; - FLOAT: 0x1406; - static DEPTH_COMPONENT: 0x1902; - DEPTH_COMPONENT: 0x1902; - static ALPHA: 0x1906; - ALPHA: 0x1906; - static RGB: 0x1907; - RGB: 0x1907; - static RGBA: 0x1908; - RGBA: 0x1908; - static LUMINANCE: 0x1909; - LUMINANCE: 0x1909; - static LUMINANCE_ALPHA: 0x190a; - LUMINANCE_ALPHA: 0x190a; - static UNSIGNED_SHORT_4_4_4_4: 0x8033; - UNSIGNED_SHORT_4_4_4_4: 0x8033; - static UNSIGNED_SHORT_5_5_5_1: 0x8034; - UNSIGNED_SHORT_5_5_5_1: 0x8034; - static UNSIGNED_SHORT_5_6_5: 0x8363; - UNSIGNED_SHORT_5_6_5: 0x8363; - static FRAGMENT_SHADER: 0x8b30; - FRAGMENT_SHADER: 0x8b30; - static VERTEX_SHADER: 0x8b31; - VERTEX_SHADER: 0x8b31; - static MAX_VERTEX_ATTRIBS: 0x8869; - MAX_VERTEX_ATTRIBS: 0x8869; - static MAX_VERTEX_UNIFORM_VECTORS: 0x8dfb; - MAX_VERTEX_UNIFORM_VECTORS: 0x8dfb; - static MAX_VARYING_VECTORS: 0x8dfc; - MAX_VARYING_VECTORS: 0x8dfc; - static MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8b4d; - MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8b4d; - static MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8b4c; - MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8b4c; - static MAX_TEXTURE_IMAGE_UNITS: 0x8872; - MAX_TEXTURE_IMAGE_UNITS: 0x8872; - static MAX_FRAGMENT_UNIFORM_VECTORS: 0x8dfd; - MAX_FRAGMENT_UNIFORM_VECTORS: 0x8dfd; - static SHADER_TYPE: 0x8b4f; - SHADER_TYPE: 0x8b4f; - static DELETE_STATUS: 0x8b80; - DELETE_STATUS: 0x8b80; - static LINK_STATUS: 0x8b82; - LINK_STATUS: 0x8b82; - static VALIDATE_STATUS: 0x8b83; - VALIDATE_STATUS: 0x8b83; - static ATTACHED_SHADERS: 0x8b85; - ATTACHED_SHADERS: 0x8b85; - static ACTIVE_UNIFORMS: 0x8b86; - ACTIVE_UNIFORMS: 0x8b86; - static ACTIVE_ATTRIBUTES: 0x8b89; - ACTIVE_ATTRIBUTES: 0x8b89; - static SHADING_LANGUAGE_VERSION: 0x8b8c; - SHADING_LANGUAGE_VERSION: 0x8b8c; - static CURRENT_PROGRAM: 0x8b8d; - CURRENT_PROGRAM: 0x8b8d; - static NEVER: 0x0200; - NEVER: 0x0200; - static LESS: 0x0201; - LESS: 0x0201; - static EQUAL: 0x0202; - EQUAL: 0x0202; - static LEQUAL: 0x0203; - LEQUAL: 0x0203; - static GREATER: 0x0204; - GREATER: 0x0204; - static NOTEQUAL: 0x0205; - NOTEQUAL: 0x0205; - static GEQUAL: 0x0206; - GEQUAL: 0x0206; - static ALWAYS: 0x0207; - ALWAYS: 0x0207; - static KEEP: 0x1e00; - KEEP: 0x1e00; - static REPLACE: 0x1e01; - REPLACE: 0x1e01; - static INCR: 0x1e02; - INCR: 0x1e02; - static DECR: 0x1e03; - DECR: 0x1e03; - static INVERT: 0x150a; - INVERT: 0x150a; - static INCR_WRAP: 0x8507; - INCR_WRAP: 0x8507; - static DECR_WRAP: 0x8508; - DECR_WRAP: 0x8508; - static VENDOR: 0x1f00; - VENDOR: 0x1f00; - static RENDERER: 0x1f01; - RENDERER: 0x1f01; - static VERSION: 0x1f02; - VERSION: 0x1f02; - static NEAREST: 0x2600; - NEAREST: 0x2600; - static LINEAR: 0x2601; - LINEAR: 0x2601; - static NEAREST_MIPMAP_NEAREST: 0x2700; - NEAREST_MIPMAP_NEAREST: 0x2700; - static LINEAR_MIPMAP_NEAREST: 0x2701; - LINEAR_MIPMAP_NEAREST: 0x2701; - static NEAREST_MIPMAP_LINEAR: 0x2702; - NEAREST_MIPMAP_LINEAR: 0x2702; - static LINEAR_MIPMAP_LINEAR: 0x2703; - LINEAR_MIPMAP_LINEAR: 0x2703; - static TEXTURE_MAG_FILTER: 0x2800; - TEXTURE_MAG_FILTER: 0x2800; - static TEXTURE_MIN_FILTER: 0x2801; - TEXTURE_MIN_FILTER: 0x2801; - static TEXTURE_WRAP_S: 0x2802; - TEXTURE_WRAP_S: 0x2802; - static TEXTURE_WRAP_T: 0x2803; - TEXTURE_WRAP_T: 0x2803; - static TEXTURE_2D: 0x0de1; - TEXTURE_2D: 0x0de1; - static TEXTURE: 0x1702; - TEXTURE: 0x1702; - static TEXTURE_CUBE_MAP: 0x8513; - TEXTURE_CUBE_MAP: 0x8513; - static TEXTURE_BINDING_CUBE_MAP: 0x8514; - TEXTURE_BINDING_CUBE_MAP: 0x8514; - static TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515; - TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515; - static TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516; - TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516; - static TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517; - TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517; - static TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518; - TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518; - static TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519; - TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519; - static TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851a; - TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851a; - static MAX_CUBE_MAP_TEXTURE_SIZE: 0x851c; - MAX_CUBE_MAP_TEXTURE_SIZE: 0x851c; - static TEXTURE0: 0x84c0; - TEXTURE0: 0x84c0; - static TEXTURE1: 0x84c1; - TEXTURE1: 0x84c1; - static TEXTURE2: 0x84c2; - TEXTURE2: 0x84c2; - static TEXTURE3: 0x84c3; - TEXTURE3: 0x84c3; - static TEXTURE4: 0x84c4; - TEXTURE4: 0x84c4; - static TEXTURE5: 0x84c5; - TEXTURE5: 0x84c5; - static TEXTURE6: 0x84c6; - TEXTURE6: 0x84c6; - static TEXTURE7: 0x84c7; - TEXTURE7: 0x84c7; - static TEXTURE8: 0x84c8; - TEXTURE8: 0x84c8; - static TEXTURE9: 0x84c9; - TEXTURE9: 0x84c9; - static TEXTURE10: 0x84ca; - TEXTURE10: 0x84ca; - static TEXTURE11: 0x84cb; - TEXTURE11: 0x84cb; - static TEXTURE12: 0x84cc; - TEXTURE12: 0x84cc; - static TEXTURE13: 0x84cd; - TEXTURE13: 0x84cd; - static TEXTURE14: 0x84ce; - TEXTURE14: 0x84ce; - static TEXTURE15: 0x84cf; - TEXTURE15: 0x84cf; - static TEXTURE16: 0x84d0; - TEXTURE16: 0x84d0; - static TEXTURE17: 0x84d1; - TEXTURE17: 0x84d1; - static TEXTURE18: 0x84d2; - TEXTURE18: 0x84d2; - static TEXTURE19: 0x84d3; - TEXTURE19: 0x84d3; - static TEXTURE20: 0x84d4; - TEXTURE20: 0x84d4; - static TEXTURE21: 0x84d5; - TEXTURE21: 0x84d5; - static TEXTURE22: 0x84d6; - TEXTURE22: 0x84d6; - static TEXTURE23: 0x84d7; - TEXTURE23: 0x84d7; - static TEXTURE24: 0x84d8; - TEXTURE24: 0x84d8; - static TEXTURE25: 0x84d9; - TEXTURE25: 0x84d9; - static TEXTURE26: 0x84da; - TEXTURE26: 0x84da; - static TEXTURE27: 0x84db; - TEXTURE27: 0x84db; - static TEXTURE28: 0x84dc; - TEXTURE28: 0x84dc; - static TEXTURE29: 0x84dd; - TEXTURE29: 0x84dd; - static TEXTURE30: 0x84de; - TEXTURE30: 0x84de; - static TEXTURE31: 0x84df; - TEXTURE31: 0x84df; - static ACTIVE_TEXTURE: 0x84e0; - ACTIVE_TEXTURE: 0x84e0; - static REPEAT: 0x2901; - REPEAT: 0x2901; - static CLAMP_TO_EDGE: 0x812f; - CLAMP_TO_EDGE: 0x812f; - static MIRRORED_REPEAT: 0x8370; - MIRRORED_REPEAT: 0x8370; - static FLOAT_VEC2: 0x8b50; - FLOAT_VEC2: 0x8b50; - static FLOAT_VEC3: 0x8b51; - FLOAT_VEC3: 0x8b51; - static FLOAT_VEC4: 0x8b52; - FLOAT_VEC4: 0x8b52; - static INT_VEC2: 0x8b53; - INT_VEC2: 0x8b53; - static INT_VEC3: 0x8b54; - INT_VEC3: 0x8b54; - static INT_VEC4: 0x8b55; - INT_VEC4: 0x8b55; - static BOOL: 0x8b56; - BOOL: 0x8b56; - static BOOL_VEC2: 0x8b57; - BOOL_VEC2: 0x8b57; - static BOOL_VEC3: 0x8b58; - BOOL_VEC3: 0x8b58; - static BOOL_VEC4: 0x8b59; - BOOL_VEC4: 0x8b59; - static FLOAT_MAT2: 0x8b5a; - FLOAT_MAT2: 0x8b5a; - static FLOAT_MAT3: 0x8b5b; - FLOAT_MAT3: 0x8b5b; - static FLOAT_MAT4: 0x8b5c; - FLOAT_MAT4: 0x8b5c; - static SAMPLER_2D: 0x8b5e; - SAMPLER_2D: 0x8b5e; - static SAMPLER_CUBE: 0x8b60; - SAMPLER_CUBE: 0x8b60; - static VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622; - VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622; - static VERTEX_ATTRIB_ARRAY_SIZE: 0x8623; - VERTEX_ATTRIB_ARRAY_SIZE: 0x8623; - static VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624; - VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624; - static VERTEX_ATTRIB_ARRAY_TYPE: 0x8625; - VERTEX_ATTRIB_ARRAY_TYPE: 0x8625; - static VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886a; - VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886a; - static VERTEX_ATTRIB_ARRAY_POINTER: 0x8645; - VERTEX_ATTRIB_ARRAY_POINTER: 0x8645; - static VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889f; - VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889f; - static IMPLEMENTATION_COLOR_READ_TYPE: 0x8b9a; - IMPLEMENTATION_COLOR_READ_TYPE: 0x8b9a; - static IMPLEMENTATION_COLOR_READ_FORMAT: 0x8b9b; - IMPLEMENTATION_COLOR_READ_FORMAT: 0x8b9b; - static COMPILE_STATUS: 0x8b81; - COMPILE_STATUS: 0x8b81; - static LOW_FLOAT: 0x8df0; - LOW_FLOAT: 0x8df0; - static MEDIUM_FLOAT: 0x8df1; - MEDIUM_FLOAT: 0x8df1; - static HIGH_FLOAT: 0x8df2; - HIGH_FLOAT: 0x8df2; - static LOW_INT: 0x8df3; - LOW_INT: 0x8df3; - static MEDIUM_INT: 0x8df4; - MEDIUM_INT: 0x8df4; - static HIGH_INT: 0x8df5; - HIGH_INT: 0x8df5; - static FRAMEBUFFER: 0x8d40; - FRAMEBUFFER: 0x8d40; - static RENDERBUFFER: 0x8d41; - RENDERBUFFER: 0x8d41; - static RGBA4: 0x8056; - RGBA4: 0x8056; - static RGB5_A1: 0x8057; - RGB5_A1: 0x8057; - static RGB565: 0x8d62; - RGB565: 0x8d62; - static DEPTH_COMPONENT16: 0x81a5; - DEPTH_COMPONENT16: 0x81a5; - static STENCIL_INDEX: 0x1901; - STENCIL_INDEX: 0x1901; - static STENCIL_INDEX8: 0x8d48; - STENCIL_INDEX8: 0x8d48; - static DEPTH_STENCIL: 0x84f9; - DEPTH_STENCIL: 0x84f9; - static RENDERBUFFER_WIDTH: 0x8d42; - RENDERBUFFER_WIDTH: 0x8d42; - static RENDERBUFFER_HEIGHT: 0x8d43; - RENDERBUFFER_HEIGHT: 0x8d43; - static RENDERBUFFER_INTERNAL_FORMAT: 0x8d44; - RENDERBUFFER_INTERNAL_FORMAT: 0x8d44; - static RENDERBUFFER_RED_SIZE: 0x8d50; - RENDERBUFFER_RED_SIZE: 0x8d50; - static RENDERBUFFER_GREEN_SIZE: 0x8d51; - RENDERBUFFER_GREEN_SIZE: 0x8d51; - static RENDERBUFFER_BLUE_SIZE: 0x8d52; - RENDERBUFFER_BLUE_SIZE: 0x8d52; - static RENDERBUFFER_ALPHA_SIZE: 0x8d53; - RENDERBUFFER_ALPHA_SIZE: 0x8d53; - static RENDERBUFFER_DEPTH_SIZE: 0x8d54; - RENDERBUFFER_DEPTH_SIZE: 0x8d54; - static RENDERBUFFER_STENCIL_SIZE: 0x8d55; - RENDERBUFFER_STENCIL_SIZE: 0x8d55; - static FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8cd0; - FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8cd0; - static FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8cd1; - FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8cd1; - static FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8cd2; - FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8cd2; - static FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8cd3; - FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8cd3; - static COLOR_ATTACHMENT0: 0x8ce0; - COLOR_ATTACHMENT0: 0x8ce0; - static DEPTH_ATTACHMENT: 0x8d00; - DEPTH_ATTACHMENT: 0x8d00; - static STENCIL_ATTACHMENT: 0x8d20; - STENCIL_ATTACHMENT: 0x8d20; - static DEPTH_STENCIL_ATTACHMENT: 0x821a; - DEPTH_STENCIL_ATTACHMENT: 0x821a; - static NONE: 0; - NONE: 0; - static FRAMEBUFFER_COMPLETE: 0x8cd5; - FRAMEBUFFER_COMPLETE: 0x8cd5; - static FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8cd6; - FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8cd6; - static FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8cd7; - FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8cd7; - static FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8cd9; - FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8cd9; - static FRAMEBUFFER_UNSUPPORTED: 0x8cdd; - FRAMEBUFFER_UNSUPPORTED: 0x8cdd; - static FRAMEBUFFER_BINDING: 0x8ca6; - FRAMEBUFFER_BINDING: 0x8ca6; - static RENDERBUFFER_BINDING: 0x8ca7; - RENDERBUFFER_BINDING: 0x8ca7; - static MAX_RENDERBUFFER_SIZE: 0x84e8; - MAX_RENDERBUFFER_SIZE: 0x84e8; - static INVALID_FRAMEBUFFER_OPERATION: 0x0506; - INVALID_FRAMEBUFFER_OPERATION: 0x0506; - static UNPACK_FLIP_Y_WEBGL: 0x9240; - UNPACK_FLIP_Y_WEBGL: 0x9240; - static UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241; - UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241; - static CONTEXT_LOST_WEBGL: 0x9242; - CONTEXT_LOST_WEBGL: 0x9242; - static UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243; - UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243; - static BROWSER_DEFAULT_WEBGL: 0x9244; - BROWSER_DEFAULT_WEBGL: 0x9244; - - canvas: HTMLCanvasElement; - drawingBufferWidth: number; - drawingBufferHeight: number; - - getContextAttributes(): ?WebGLContextAttributes; - isContextLost(): boolean; - - getSupportedExtensions(): ?Array; - getExtension(name: string): any; - - activeTexture(texture: number): void; - attachShader(program: WebGLProgram, shader: WebGLShader): void; - bindAttribLocation(program: WebGLProgram, index: number, name: string): void; - bindBuffer(target: number, buffer: ?WebGLBuffer): void; - bindFramebuffer(target: number, framebuffer: ?WebGLFramebuffer): void; - bindRenderbuffer(target: number, renderbuffer: ?WebGLRenderbuffer): void; - bindTexture(target: number, texture: ?WebGLTexture): void; - blendColor(red: number, green: number, blue: number, alpha: number): void; - blendEquation(mode: number): void; - blendEquationSeparate(modeRGB: number, modeAlpha: number): void; - blendFunc(sfactor: number, dfactor: number): void; - blendFuncSeparate( - srcRGB: number, - dstRGB: number, - srcAlpha: number, - dstAlpha: number, - ): void; - - bufferData(target: number, size: number, usage: number): void; - bufferData(target: number, data: ?ArrayBuffer, usage: number): void; - bufferData(target: number, data: $ArrayBufferView, usage: number): void; - bufferSubData(target: number, offset: number, data: BufferDataSource): void; - - checkFramebufferStatus(target: number): number; - clear(mask: number): void; - clearColor(red: number, green: number, blue: number, alpha: number): void; - clearDepth(depth: number): void; - clearStencil(s: number): void; - colorMask(red: boolean, green: boolean, blue: boolean, alpha: boolean): void; - compileShader(shader: WebGLShader): void; - - compressedTexImage2D( - target: number, - level: number, - internalformat: number, - width: number, - height: number, - border: number, - data: $ArrayBufferView, - ): void; - - compressedTexSubImage2D( - target: number, - level: number, - xoffset: number, - yoffset: number, - width: number, - height: number, - format: number, - data: $ArrayBufferView, - ): void; - - copyTexImage2D( - target: number, - level: number, - internalformat: number, - x: number, - y: number, - width: number, - height: number, - border: number, - ): void; - copyTexSubImage2D( - target: number, - level: number, - xoffset: number, - yoffset: number, - x: number, - y: number, - width: number, - height: number, - ): void; - - createBuffer(): ?WebGLBuffer; - createFramebuffer(): ?WebGLFramebuffer; - createProgram(): ?WebGLProgram; - createRenderbuffer(): ?WebGLRenderbuffer; - createShader(type: number): ?WebGLShader; - createTexture(): ?WebGLTexture; - - cullFace(mode: number): void; - - deleteBuffer(buffer: ?WebGLBuffer): void; - deleteFramebuffer(framebuffer: ?WebGLFramebuffer): void; - deleteProgram(program: ?WebGLProgram): void; - deleteRenderbuffer(renderbuffer: ?WebGLRenderbuffer): void; - deleteShader(shader: ?WebGLShader): void; - deleteTexture(texture: ?WebGLTexture): void; - - depthFunc(func: number): void; - depthMask(flag: boolean): void; - depthRange(zNear: number, zFar: number): void; - detachShader(program: WebGLProgram, shader: WebGLShader): void; - disable(cap: number): void; - disableVertexAttribArray(index: number): void; - drawArrays(mode: number, first: number, count: number): void; - drawElements(mode: number, count: number, type: number, offset: number): void; - - enable(cap: number): void; - enableVertexAttribArray(index: number): void; - finish(): void; - flush(): void; - framebufferRenderbuffer( - target: number, - attachment: number, - renderbuffertarget: number, - renderbuffer: ?WebGLRenderbuffer, - ): void; - framebufferTexture2D( - target: number, - attachment: number, - textarget: number, - texture: ?WebGLTexture, - level: number, - ): void; - frontFace(mode: number): void; - - generateMipmap(target: number): void; - - getActiveAttrib(program: WebGLProgram, index: number): ?WebGLActiveInfo; - getActiveUniform(program: WebGLProgram, index: number): ?WebGLActiveInfo; - getAttachedShaders(program: WebGLProgram): ?Array; - - getAttribLocation(program: WebGLProgram, name: string): number; - - getBufferParameter(target: number, pname: number): any; - getParameter(pname: number): any; - - getError(): number; - - getFramebufferAttachmentParameter( - target: number, - attachment: number, - pname: number, - ): any; - getProgramParameter(program: WebGLProgram, pname: number): any; - getProgramInfoLog(program: WebGLProgram): ?string; - getRenderbufferParameter(target: number, pname: number): any; - getShaderParameter(shader: WebGLShader, pname: number): any; - getShaderPrecisionFormat( - shadertype: number, - precisiontype: number, - ): ?WebGLShaderPrecisionFormat; - getShaderInfoLog(shader: WebGLShader): ?string; - - getShaderSource(shader: WebGLShader): ?string; - - getTexParameter(target: number, pname: number): any; - - getUniform(program: WebGLProgram, location: WebGLUniformLocation): any; - - getUniformLocation( - program: WebGLProgram, - name: string, - ): ?WebGLUniformLocation; - - getVertexAttrib(index: number, pname: number): any; - - getVertexAttribOffset(index: number, pname: number): number; - - hint(target: number, mode: number): void; - isBuffer(buffer: ?WebGLBuffer): boolean; - isEnabled(cap: number): boolean; - isFramebuffer(framebuffer: ?WebGLFramebuffer): boolean; - isProgram(program: ?WebGLProgram): boolean; - isRenderbuffer(renderbuffer: ?WebGLRenderbuffer): boolean; - isShader(shader: ?WebGLShader): boolean; - isTexture(texture: ?WebGLTexture): boolean; - lineWidth(width: number): void; - linkProgram(program: WebGLProgram): void; - pixelStorei(pname: number, param: number): void; - polygonOffset(factor: number, units: number): void; - - readPixels( - x: number, - y: number, - width: number, - height: number, - format: number, - type: number, - pixels: ?$ArrayBufferView, - ): void; - - renderbufferStorage( - target: number, - internalformat: number, - width: number, - height: number, - ): void; - sampleCoverage(value: number, invert: boolean): void; - scissor(x: number, y: number, width: number, height: number): void; - - shaderSource(shader: WebGLShader, source: string): void; - - stencilFunc(func: number, ref: number, mask: number): void; - stencilFuncSeparate( - face: number, - func: number, - ref: number, - mask: number, - ): void; - stencilMask(mask: number): void; - stencilMaskSeparate(face: number, mask: number): void; - stencilOp(fail: number, zfail: number, zpass: number): void; - stencilOpSeparate( - face: number, - fail: number, - zfail: number, - zpass: number, - ): void; - - texImage2D( - target: number, - level: number, - internalformat: number, - width: number, - height: number, - border: number, - format: number, - type: number, - pixels: ?$ArrayBufferView, - ): void; - texImage2D( - target: number, - level: number, - internalformat: number, - format: number, - type: number, - source: TexImageSource, - ): void; - - texParameterf(target: number, pname: number, param: number): void; - texParameteri(target: number, pname: number, param: number): void; - - texSubImage2D( - target: number, - level: number, - xoffset: number, - yoffset: number, - width: number, - height: number, - format: number, - type: number, - pixels: ?$ArrayBufferView, - ): void; - texSubImage2D( - target: number, - level: number, - xoffset: number, - yoffset: number, - format: number, - type: number, - source: TexImageSource, - ): void; - - uniform1f(location: ?WebGLUniformLocation, x: number): void; - uniform1fv(location: ?WebGLUniformLocation, v: Float32Array): void; - uniform1fv(location: ?WebGLUniformLocation, v: Array): void; - uniform1fv(location: ?WebGLUniformLocation, v: [number]): void; - uniform1i(location: ?WebGLUniformLocation, x: number): void; - uniform1iv(location: ?WebGLUniformLocation, v: Int32Array): void; - uniform1iv(location: ?WebGLUniformLocation, v: Array): void; - uniform1iv(location: ?WebGLUniformLocation, v: [number]): void; - uniform2f(location: ?WebGLUniformLocation, x: number, y: number): void; - uniform2fv(location: ?WebGLUniformLocation, v: Float32Array): void; - uniform2fv(location: ?WebGLUniformLocation, v: Array): void; - uniform2fv(location: ?WebGLUniformLocation, v: [number, number]): void; - uniform2i(location: ?WebGLUniformLocation, x: number, y: number): void; - uniform2iv(location: ?WebGLUniformLocation, v: Int32Array): void; - uniform2iv(location: ?WebGLUniformLocation, v: Array): void; - uniform2iv(location: ?WebGLUniformLocation, v: [number, number]): void; - uniform3f( - location: ?WebGLUniformLocation, - x: number, - y: number, - z: number, - ): void; - uniform3fv(location: ?WebGLUniformLocation, v: Float32Array): void; - uniform3fv(location: ?WebGLUniformLocation, v: Array): void; - uniform3fv( - location: ?WebGLUniformLocation, - v: [number, number, number], - ): void; - uniform3i( - location: ?WebGLUniformLocation, - x: number, - y: number, - z: number, - ): void; - uniform3iv(location: ?WebGLUniformLocation, v: Int32Array): void; - uniform3iv(location: ?WebGLUniformLocation, v: Array): void; - uniform3iv( - location: ?WebGLUniformLocation, - v: [number, number, number], - ): void; - uniform4f( - location: ?WebGLUniformLocation, - x: number, - y: number, - z: number, - w: number, - ): void; - uniform4fv(location: ?WebGLUniformLocation, v: Float32Array): void; - uniform4fv(location: ?WebGLUniformLocation, v: Array): void; - uniform4fv( - location: ?WebGLUniformLocation, - v: [number, number, number, number], - ): void; - uniform4i( - location: ?WebGLUniformLocation, - x: number, - y: number, - z: number, - w: number, - ): void; - uniform4iv(location: ?WebGLUniformLocation, v: Int32Array): void; - uniform4iv(location: ?WebGLUniformLocation, v: Array): void; - uniform4iv( - location: ?WebGLUniformLocation, - v: [number, number, number, number], - ): void; - - uniformMatrix2fv( - location: ?WebGLUniformLocation, - transpose: boolean, - value: Float32Array, - ): void; - uniformMatrix2fv( - location: ?WebGLUniformLocation, - transpose: boolean, - value: Array, - ): void; - uniformMatrix3fv( - location: ?WebGLUniformLocation, - transpose: boolean, - value: Float32Array, - ): void; - uniformMatrix3fv( - location: ?WebGLUniformLocation, - transpose: boolean, - value: Array, - ): void; - uniformMatrix4fv( - location: ?WebGLUniformLocation, - transpose: boolean, - value: Float32Array, - ): void; - uniformMatrix4fv( - location: ?WebGLUniformLocation, - transpose: boolean, - value: Array, - ): void; - - useProgram(program: ?WebGLProgram): void; - validateProgram(program: WebGLProgram): void; - - vertexAttrib1f(index: number, x: number): void; - vertexAttrib1fv(index: number, values: VertexAttribFVSource): void; - vertexAttrib2f(index: number, x: number, y: number): void; - vertexAttrib2fv(index: number, values: VertexAttribFVSource): void; - vertexAttrib3f(index: number, x: number, y: number, z: number): void; - vertexAttrib3fv(index: number, values: VertexAttribFVSource): void; - vertexAttrib4f( - index: number, - x: number, - y: number, - z: number, - w: number, - ): void; - vertexAttrib4fv(index: number, values: VertexAttribFVSource): void; - vertexAttribPointer( - index: number, - size: number, - type: number, - normalized: boolean, - stride: number, - offset: number, - ): void; - - viewport(x: number, y: number, width: number, height: number): void; -} - -declare class WebGLContextEvent extends Event { - statusMessage: string; -} - -// http://www.w3.org/TR/html5/scripting-1.html#renderingcontext -type RenderingContext = CanvasRenderingContext2D | WebGLRenderingContext; - -// https://www.w3.org/TR/html5/scripting-1.html#htmlcanvaselement -declare class HTMLCanvasElement extends HTMLElement { - tagName: 'CANVAS'; - width: number; - height: number; - getContext(contextId: '2d', ...args: any): CanvasRenderingContext2D; - getContext( - contextId: 'webgl', - contextAttributes?: Partial, - ): ?WebGLRenderingContext; - // IE currently only supports "experimental-webgl" - getContext( - contextId: 'experimental-webgl', - contextAttributes?: Partial, - ): ?WebGLRenderingContext; - getContext(contextId: string, ...args: any): ?RenderingContext; // fallback - toDataURL(type?: string, ...args: any): string; - toBlob(callback: (v: File) => void, type?: string, ...args: any): void; - captureStream(frameRate?: number): CanvasCaptureMediaStream; -} - -// https://html.spec.whatwg.org/multipage/forms.html#the-details-element -declare class HTMLDetailsElement extends HTMLElement { - tagName: 'DETAILS'; - open: boolean; -} - -declare class HTMLFormElement extends HTMLElement { - tagName: 'FORM'; - @@iterator(): Iterator; - [index: number | string]: HTMLElement | null; - acceptCharset: string; - action: string; - elements: HTMLCollection; - encoding: string; - enctype: string; - length: number; - method: string; - name: string; - rel: string; - target: string; - - checkValidity(): boolean; - reportValidity(): boolean; - reset(): void; - submit(): void; -} - -// https://www.w3.org/TR/html5/forms.html#the-fieldset-element -declare class HTMLFieldSetElement extends HTMLElement { - tagName: 'FIELDSET'; - disabled: boolean; - elements: HTMLCollection; // readonly - form: HTMLFormElement | null; // readonly - name: string; - type: string; // readonly - - checkValidity(): boolean; - setCustomValidity(error: string): void; -} - -declare class HTMLLegendElement extends HTMLElement { - tagName: 'LEGEND'; - form: HTMLFormElement | null; // readonly -} - -declare class HTMLIFrameElement extends HTMLElement { - tagName: 'IFRAME'; - allowFullScreen: boolean; - contentDocument: Document; - contentWindow: any; - frameBorder: string; - height: string; - marginHeight: string; - marginWidth: string; - name: string; - scrolling: string; - sandbox: DOMTokenList; - src: string; - // flowlint unsafe-getters-setters:off - get srcdoc(): string; - set srcdoc(value: string | TrustedHTML): void; - // flowlint unsafe-getters-setters:error - width: string; -} - -declare class HTMLImageElement extends HTMLElement { - tagName: 'IMG'; - alt: string; - complete: boolean; // readonly - crossOrigin: ?string; - currentSrc: string; // readonly - height: number; - decode(): Promise; - isMap: boolean; - naturalHeight: number; // readonly - naturalWidth: number; // readonly - sizes: string; - src: string; - srcset: string; - useMap: string; - width: number; -} - -declare class Image extends HTMLImageElement { - constructor(width?: number, height?: number): void; -} - -declare class MediaError { - MEDIA_ERR_ABORTED: number; - MEDIA_ERR_NETWORK: number; - MEDIA_ERR_DECODE: number; - MEDIA_ERR_SRC_NOT_SUPPORTED: number; - code: number; - message: ?string; -} - -declare class TimeRanges { - length: number; - start(index: number): number; - end(index: number): number; -} -declare class Audio extends HTMLAudioElement { - constructor(URLString?: string): void; -} - -declare class AudioTrack { - id: string; - kind: string; - label: string; - language: string; - enabled: boolean; -} - -declare class AudioTrackList extends EventTarget { - length: number; - [index: number]: AudioTrack; - - getTrackById(id: string): ?AudioTrack; - - onchange: (ev: any) => any; - onaddtrack: (ev: any) => any; - onremovetrack: (ev: any) => any; -} - -declare class VideoTrack { - id: string; - kind: string; - label: string; - language: string; - selected: boolean; -} - -declare class VideoTrackList extends EventTarget { - length: number; - [index: number]: VideoTrack; - getTrackById(id: string): ?VideoTrack; - selectedIndex: number; - - onchange: (ev: any) => any; - onaddtrack: (ev: any) => any; - onremovetrack: (ev: any) => any; -} - -declare class TextTrackCue extends EventTarget { - constructor(startTime: number, endTime: number, text: string): void; - - track: TextTrack; - id: string; - startTime: number; - endTime: number; - pauseOnExit: boolean; - vertical: string; - snapToLines: boolean; - lines: number; - position: number; - size: number; - align: string; - text: string; - - getCueAsHTML(): Node; - onenter: (ev: any) => any; - onexit: (ev: any) => any; -} - -declare class TextTrackCueList { - @@iterator(): Iterator; - length: number; - [index: number]: TextTrackCue; - getCueById(id: string): ?TextTrackCue; -} - -declare class TextTrack extends EventTarget { - kind: string; - label: string; - language: string; - - mode: string; - - cues: TextTrackCueList; - activeCues: TextTrackCueList; - - addCue(cue: TextTrackCue): void; - removeCue(cue: TextTrackCue): void; - - oncuechange: (ev: any) => any; -} - -declare class TextTrackList extends EventTarget { - length: number; - [index: number]: TextTrack; - - onaddtrack: (ev: any) => any; - onremovetrack: (ev: any) => any; -} - -declare class MediaKeyStatusMap { - @@iterator(): Iterator<[BufferDataSource, MediaKeyStatus]>; - size: number; - entries(): Iterator<[BufferDataSource, MediaKeyStatus]>; - forEach( - callbackfn: ( - value: MediaKeyStatus, - key: BufferDataSource, - map: MediaKeyStatusMap, - ) => any, - thisArg?: any, - ): void; - get(key: BufferDataSource): MediaKeyStatus; - has(key: BufferDataSource): boolean; - keys(): Iterator; - values(): Iterator; -} - -declare class MediaKeySession extends EventTarget { - sessionId: string; - expiration: number; - closed: Promise; - keyStatuses: MediaKeyStatusMap; - - generateRequest( - initDataType: string, - initData: BufferDataSource, - ): Promise; - load(sessionId: string): Promise; - update(response: BufferDataSource): Promise; - close(): Promise; - remove(): Promise; - - onkeystatuschange: (ev: any) => any; - onmessage: (ev: any) => any; -} - -declare class MediaKeys { - createSession(mediaKeySessionType: MediaKeySessionType): MediaKeySession; - setServerCertificate(serverCertificate: BufferDataSource): Promise; -} - -declare class HTMLMediaElement extends HTMLElement { - // error state - error: ?MediaError; - - // network state - src: string; - srcObject: ?any; - currentSrc: string; - crossOrigin: ?string; - NETWORK_EMPTY: number; - NETWORK_IDLE: number; - NETWORK_LOADING: number; - NETWORK_NO_SOURCE: number; - networkState: number; - preload: string; - buffered: TimeRanges; - load(): void; - canPlayType(type: string): string; - - // ready state - HAVE_NOTHING: number; - HAVE_METADATA: number; - HAVE_CURRENT_DATA: number; - HAVE_FUTURE_DATA: number; - HAVE_ENOUGH_DATA: number; - readyState: number; - seeking: boolean; - - // playback state - currentTime: number; - duration: number; - startDate: Date; - paused: boolean; - defaultPlaybackRate: number; - playbackRate: number; - played: TimeRanges; - seekable: TimeRanges; - ended: boolean; - autoplay: boolean; - loop: boolean; - play(): Promise; - pause(): void; - fastSeek(): void; - captureStream(): MediaStream; - - // media controller - mediaGroup: string; - controller: ?any; - - // controls - controls: boolean; - volume: number; - muted: boolean; - defaultMuted: boolean; - controlsList?: DOMTokenList; - - // tracks - audioTracks: AudioTrackList; - videoTracks: VideoTrackList; - textTracks: TextTrackList; - addTextTrack(kind: string, label?: string, language?: string): TextTrack; - - // media keys - mediaKeys?: ?MediaKeys; - setMediakeys?: (mediakeys: ?MediaKeys) => Promise; -} - -declare class HTMLAudioElement extends HTMLMediaElement { - tagName: 'AUDIO'; -} - -declare class HTMLVideoElement extends HTMLMediaElement { - tagName: 'VIDEO'; - width: number; - height: number; - videoWidth: number; - videoHeight: number; - poster: string; -} - -declare class HTMLSourceElement extends HTMLElement { - tagName: 'SOURCE'; - src: string; - type: string; - - //when used with the picture element - srcset: string; - sizes: string; - media: string; -} - -declare class ValidityState { - badInput: boolean; - customError: boolean; - patternMismatch: boolean; - rangeOverflow: boolean; - rangeUnderflow: boolean; - stepMismatch: boolean; - tooLong: boolean; - tooShort: boolean; - typeMismatch: boolean; - valueMissing: boolean; - valid: boolean; -} - -// https://w3c.github.io/html/sec-forms.html#dom-selectionapielements-setselectionrange -type SelectionDirection = 'backward' | 'forward' | 'none'; -type SelectionMode = 'select' | 'start' | 'end' | 'preserve'; -declare class HTMLInputElement extends HTMLElement { - tagName: 'INPUT'; - accept: string; - align: string; - alt: string; - autocomplete: string; - autofocus: boolean; - border: string; - checked: boolean; - complete: boolean; - defaultChecked: boolean; - defaultValue: string; - dirname: string; - disabled: boolean; - dynsrc: string; - files: FileList; - form: HTMLFormElement | null; - formAction: string; - formEncType: string; - formMethod: string; - formNoValidate: boolean; - formTarget: string; - height: string; - hspace: number; - indeterminate: boolean; - labels: NodeList; - list: HTMLElement | null; - loop: number; - lowsrc: string; - max: string; - maxLength: number; - min: string; - multiple: boolean; - name: string; - pattern: string; - placeholder: string; - readOnly: boolean; - required: boolean; - selectionDirection: SelectionDirection; - selectionEnd: number; - selectionStart: number; - size: number; - src: string; - start: string; - status: boolean; - step: string; - type: string; - useMap: string; - validationMessage: string; - validity: ValidityState; - value: string; - valueAsDate: Date; - valueAsNumber: number; - vrml: string; - vspace: number; - width: string; - willValidate: boolean; - - checkValidity(): boolean; - reportValidity(): boolean; - setCustomValidity(error: string): void; - createTextRange(): TextRange; - select(): void; - setRangeText( - replacement: string, - start?: void, - end?: void, - selectMode?: void, - ): void; - setRangeText( - replacement: string, - start: number, - end: number, - selectMode?: SelectionMode, - ): void; - setSelectionRange( - start: number, - end: number, - direction?: SelectionDirection, - ): void; - showPicker(): void; - stepDown(stepDecrement?: number): void; - stepUp(stepIncrement?: number): void; -} - -declare class HTMLButtonElement extends HTMLElement { - tagName: 'BUTTON'; - autofocus: boolean; - disabled: boolean; - form: HTMLFormElement | null; - labels: NodeList | null; - name: string; - type: string; - validationMessage: string; - validity: ValidityState; - value: string; - willValidate: boolean; - - checkValidity(): boolean; - reportValidity(): boolean; - setCustomValidity(error: string): void; -} - -// https://w3c.github.io/html/sec-forms.html#the-textarea-element -declare class HTMLTextAreaElement extends HTMLElement { - tagName: 'TEXTAREA'; - autofocus: boolean; - cols: number; - dirName: string; - disabled: boolean; - form: HTMLFormElement | null; - maxLength: number; - name: string; - placeholder: string; - readOnly: boolean; - required: boolean; - rows: number; - wrap: string; - - type: string; - defaultValue: string; - value: string; - textLength: number; - - willValidate: boolean; - validity: ValidityState; - validationMessage: string; - checkValidity(): boolean; - setCustomValidity(error: string): void; - - labels: NodeList; - - select(): void; - selectionStart: number; - selectionEnd: number; - selectionDirection: SelectionDirection; - setSelectionRange( - start: number, - end: number, - direction?: SelectionDirection, - ): void; -} - -declare class HTMLSelectElement extends HTMLElement { - tagName: 'SELECT'; - autocomplete: string; - autofocus: boolean; - disabled: boolean; - form: HTMLFormElement | null; - labels: NodeList; - length: number; - multiple: boolean; - name: string; - options: HTMLOptionsCollection; - required: boolean; - selectedIndex: number; - selectedOptions: HTMLCollection; - size: number; - type: string; - validationMessage: string; - validity: ValidityState; - value: string; - willValidate: boolean; - - add(element: HTMLElement, before?: HTMLElement): void; - checkValidity(): boolean; - item(index: number): HTMLOptionElement | null; - namedItem(name: string): HTMLOptionElement | null; - remove(index?: number): void; - setCustomValidity(error: string): void; -} - -declare class HTMLOptionsCollection extends HTMLCollection { - selectedIndex: number; - add( - element: HTMLOptionElement | HTMLOptGroupElement, - before?: HTMLElement | number, - ): void; - remove(index: number): void; -} - -declare class HTMLOptionElement extends HTMLElement { - tagName: 'OPTION'; - defaultSelected: boolean; - disabled: boolean; - form: HTMLFormElement | null; - index: number; - label: string; - selected: boolean; - text: string; - value: string; -} - -declare class HTMLOptGroupElement extends HTMLElement { - tagName: 'OPTGROUP'; - disabled: boolean; - label: string; -} - -declare class HTMLAnchorElement extends HTMLElement { - tagName: 'A'; - charset: string; - coords: string; - download: string; - hash: string; - host: string; - hostname: string; - href: string; - hreflang: string; - media: string; - name: string; - origin: string; - password: string; - pathname: string; - port: string; - protocol: string; - rel: string; - rev: string; - search: string; - shape: string; - target: string; - text: string; - type: string; - username: string; -} - -// https://w3c.github.io/html/sec-forms.html#the-label-element -declare class HTMLLabelElement extends HTMLElement { - tagName: 'LABEL'; - form: HTMLFormElement | null; - htmlFor: string; - control: HTMLElement | null; -} - -declare class HTMLLinkElement extends HTMLElement { - tagName: 'LINK'; - crossOrigin: ?('anonymous' | 'use-credentials'); - href: string; - hreflang: string; - media: string; - rel: string; - sizes: DOMTokenList; - type: string; - as: string; -} - -declare class HTMLScriptElement extends HTMLElement { - tagName: 'SCRIPT'; - async: boolean; - charset: string; - crossOrigin?: string; - defer: boolean; - // flowlint unsafe-getters-setters:off - get src(): string; - set src(value: string | TrustedScriptURL): void; - get text(): string; - set text(value: string | TrustedScript): void; - // flowlint unsafe-getters-setters:error - type: string; -} - -declare class HTMLStyleElement extends HTMLElement { - tagName: 'STYLE'; - disabled: boolean; - media: string; - scoped: boolean; - sheet: ?CSSStyleSheet; - type: string; -} - -declare class HTMLParagraphElement extends HTMLElement { - tagName: 'P'; - align: 'left' | 'center' | 'right' | 'justify'; // deprecated in HTML 4.01 -} - -declare class HTMLHtmlElement extends HTMLElement { - tagName: 'HTML'; -} - -declare class HTMLBodyElement extends HTMLElement { - tagName: 'BODY'; -} - -declare class HTMLHeadElement extends HTMLElement { - tagName: 'HEAD'; -} - -declare class HTMLDivElement extends HTMLElement { - tagName: 'DIV'; -} - -declare class HTMLSpanElement extends HTMLElement { - tagName: 'SPAN'; -} - -declare class HTMLAppletElement extends HTMLElement {} - -declare class HTMLHeadingElement extends HTMLElement { - tagName: 'H1' | 'H2' | 'H3' | 'H4' | 'H5' | 'H6'; -} - -declare class HTMLHRElement extends HTMLElement { - tagName: 'HR'; -} - -declare class HTMLBRElement extends HTMLElement { - tagName: 'BR'; -} - -declare class HTMLDListElement extends HTMLElement { - tagName: 'DL'; -} - -declare class HTMLAreaElement extends HTMLElement { - tagName: 'AREA'; - alt: string; - coords: string; - shape: string; - target: string; - download: string; - ping: string; - rel: string; - relList: DOMTokenList; - referrerPolicy: string; -} - -declare class HTMLDataElement extends HTMLElement { - tagName: 'DATA'; - value: string; -} - -declare class HTMLDataListElement extends HTMLElement { - tagName: 'DATALIST'; - options: HTMLCollection; -} - -declare class HTMLDialogElement extends HTMLElement { - tagName: 'DIALOG'; - open: boolean; - returnValue: string; - show(): void; - showModal(): void; - close(returnValue: ?string): void; -} - -declare class HTMLEmbedElement extends HTMLElement { - tagName: 'EMBED'; - src: string; - type: string; - width: string; - height: string; - getSVGDocument(): ?Document; -} - -declare class HTMLMapElement extends HTMLElement { - tagName: 'MAP'; - areas: HTMLCollection; - images: HTMLCollection; - name: string; -} - -declare class HTMLMeterElement extends HTMLElement { - tagName: 'METER'; - high: number; - low: number; - max: number; - min: number; - optimum: number; - value: number; - labels: NodeList; -} - -declare class HTMLModElement extends HTMLElement { - tagName: 'DEL' | 'INS'; - cite: string; - dateTime: string; -} - -declare class HTMLObjectElement extends HTMLElement { - tagName: 'OBJECT'; - contentDocument: ?Document; - contentWindow: ?WindowProxy; - data: string; - form: ?HTMLFormElement; - height: string; - name: string; - type: string; - typeMustMatch: boolean; - useMap: string; - validationMessage: string; - validity: ValidityState; - width: string; - willValidate: boolean; - checkValidity(): boolean; - getSVGDocument(): ?Document; - reportValidity(): boolean; - setCustomValidity(error: string): void; -} - -declare class HTMLOutputElement extends HTMLElement { - defaultValue: string; - form: ?HTMLFormElement; - htmlFor: DOMTokenList; - labels: NodeList; - name: string; - type: string; - validationMessage: string; - validity: ValidityState; - value: string; - willValidate: boolean; - checkValidity(): boolean; - reportValidity(): boolean; - setCustomValidity(error: string): void; -} - -declare class HTMLParamElement extends HTMLElement { - tagName: 'PARAM'; - name: string; - value: string; -} - -declare class HTMLProgressElement extends HTMLElement { - tagName: 'PROGRESS'; - labels: NodeList; - max: number; - position: number; - value: number; -} - -declare class HTMLPictureElement extends HTMLElement { - tagName: 'PICTURE'; -} - -declare class HTMLTimeElement extends HTMLElement { - tagName: 'TIME'; - dateTime: string; -} - -declare class HTMLTitleElement extends HTMLElement { - tagName: 'TITLE'; - text: string; -} - -declare class HTMLTrackElement extends HTMLElement { - tagName: 'TRACK'; - static NONE: 0; - static LOADING: 1; - static LOADED: 2; - static ERROR: 3; - - default: boolean; - kind: string; - label: string; - readyState: 0 | 1 | 2 | 3; - src: string; - srclang: string; - track: TextTrack; -} - -declare class HTMLQuoteElement extends HTMLElement { - tagName: 'BLOCKQUOTE' | 'Q'; - cite: string; -} - -declare class HTMLOListElement extends HTMLElement { - tagName: 'OL'; - reversed: boolean; - start: number; - type: string; -} - -declare class HTMLUListElement extends HTMLElement { - tagName: 'UL'; -} - -declare class HTMLLIElement extends HTMLElement { - tagName: 'LI'; - value: number; -} - -declare class HTMLPreElement extends HTMLElement { - tagName: 'PRE'; -} - -declare class HTMLMetaElement extends HTMLElement { - tagName: 'META'; - content: string; - httpEquiv: string; - name: string; -} - -declare class HTMLUnknownElement extends HTMLElement {} - -declare class TextRange { - boundingLeft: number; - htmlText: string; - offsetLeft: number; - boundingWidth: number; - boundingHeight: number; - boundingTop: number; - text: string; - offsetTop: number; - moveToPoint(x: number, y: number): void; - queryCommandValue(cmdID: string): any; - getBookmark(): string; - move(unit: string, count?: number): number; - queryCommandIndeterm(cmdID: string): boolean; - scrollIntoView(fStart?: boolean): void; - findText(string: string, count?: number, flags?: number): boolean; - execCommand(cmdID: string, showUI?: boolean, value?: any): boolean; - getBoundingClientRect(): DOMRect; - moveToBookmark(bookmark: string): boolean; - isEqual(range: TextRange): boolean; - duplicate(): TextRange; - collapse(start?: boolean): void; - queryCommandText(cmdID: string): string; - select(): void; - pasteHTML(html: string): void; - inRange(range: TextRange): boolean; - moveEnd(unit: string, count?: number): number; - getClientRects(): DOMRectList; - moveStart(unit: string, count?: number): number; - parentElement(): Element; - queryCommandState(cmdID: string): boolean; - compareEndPoints(how: string, sourceRange: TextRange): number; - execCommandShowHelp(cmdID: string): boolean; - moveToElementText(element: Element): void; - expand(Unit: string): boolean; - queryCommandSupported(cmdID: string): boolean; - setEndPoint(how: string, SourceRange: TextRange): void; - queryCommandEnabled(cmdID: string): boolean; -} - -// These types used to exist as a copy of DOMRect/DOMRectList, which is -// incorrect because there are no ClientRect/ClientRectList globals on the DOM. -// Keep these as type aliases for backwards compatibility. -declare type ClientRect = DOMRect; -declare type ClientRectList = DOMRectList; - -// TODO: HTML*Element - -declare class DOMImplementation { - createDocumentType( - qualifiedName: string, - publicId: string, - systemId: string, - ): DocumentType; - createDocument( - namespaceURI: string | null, - qualifiedName: string, - doctype?: DocumentType | null, - ): Document; - hasFeature(feature: string, version?: string): boolean; - - // non-standard - createHTMLDocument(title?: string): Document; -} - -declare class DocumentType extends Node { - name: string; - notations: NamedNodeMap; - systemId: string; - internalSubset: string; - entities: NamedNodeMap; - publicId: string; - - // from ChildNode interface - after(...nodes: Array): void; - before(...nodes: Array): void; - replaceWith(...nodes: Array): void; - remove(): void; -} - -declare class CharacterData extends Node { - length: number; - data: string; - deleteData(offset: number, count: number): void; - replaceData(offset: number, count: number, arg: string): void; - appendData(arg: string): void; - insertData(offset: number, arg: string): void; - substringData(offset: number, count: number): string; - - // from ChildNode interface - after(...nodes: Array): void; - before(...nodes: Array): void; - replaceWith(...nodes: Array): void; - remove(): void; -} - -declare class Text extends CharacterData { - assignedSlot?: HTMLSlotElement; - wholeText: string; - splitText(offset: number): Text; - replaceWholeText(content: string): Text; -} - -declare class Comment extends CharacterData { - text: string; -} - -declare class URL { - static canParse(url: string, base?: string): boolean; - static createObjectURL(blob: Blob): string; - static createObjectURL(mediaSource: MediaSource): string; - static revokeObjectURL(url: string): void; - constructor(url: string | URL, base?: string | URL): void; - hash: string; - host: string; - hostname: string; - href: string; - readonly origin: string; - password: string; - pathname: string; - port: string; - protocol: string; - search: string; - readonly searchParams: URLSearchParams; - username: string; - toString(): string; - toJSON(): string; -} - -declare interface MediaSourceHandle {} - -declare class MediaSource extends EventTarget { - sourceBuffers: SourceBufferList; - activeSourceBuffers: SourceBufferList; - // https://w3c.github.io/media-source/#dom-readystate - readyState: 'closed' | 'open' | 'ended'; - duration: number; - handle: MediaSourceHandle; - addSourceBuffer(type: string): SourceBuffer; - removeSourceBuffer(sourceBuffer: SourceBuffer): void; - endOfStream(error?: string): void; - static isTypeSupported(type: string): boolean; -} - -declare class SourceBuffer extends EventTarget { - mode: 'segments' | 'sequence'; - updating: boolean; - buffered: TimeRanges; - timestampOffset: number; - audioTracks: AudioTrackList; - videoTracks: VideoTrackList; - textTracks: TextTrackList; - appendWindowStart: number; - appendWindowEnd: number; - - appendBuffer(data: ArrayBuffer | $ArrayBufferView): void; - // TODO: Add ReadableStream - // appendStream(stream: ReadableStream, maxSize?: number): void; - abort(): void; - remove(start: number, end: number): void; - - trackDefaults: TrackDefaultList; -} - -declare class SourceBufferList extends EventTarget { - @@iterator(): Iterator; - [index: number]: SourceBuffer; - length: number; -} - -declare class Storage { - length: number; - getItem(key: string): ?string; - setItem(key: string, data: string): void; - clear(): void; - removeItem(key: string): void; - key(index: number): ?string; - [name: string]: ?string; -} - -declare class TrackDefaultList { - [index: number]: TrackDefault; - length: number; -} - -declare class TrackDefault { - type: 'audio' | 'video' | 'text'; - byteStreamTrackID: string; - language: string; - label: string; - kinds: Array; -} - -// TODO: The use of `typeof` makes this function signature effectively -// (node: Node) => number, but it should be (node: Node) => 1|2|3 -type NodeFilterCallback = ( - node: Node, -) => - | typeof NodeFilter.FILTER_ACCEPT - | typeof NodeFilter.FILTER_REJECT - | typeof NodeFilter.FILTER_SKIP; - -type NodeFilterInterface = - NodeFilterCallback | {acceptNode: NodeFilterCallback, ...}; - -// TODO: window.NodeFilter exists at runtime and behaves as a constructor -// as far as `instanceof` is concerned, but it is not callable. -declare class NodeFilter { - static SHOW_ALL: -1; - static SHOW_ELEMENT: 1; - static SHOW_ATTRIBUTE: 2; // deprecated - static SHOW_TEXT: 4; - static SHOW_CDATA_SECTION: 8; // deprecated - static SHOW_ENTITY_REFERENCE: 16; // deprecated - static SHOW_ENTITY: 32; // deprecated - static SHOW_PROCESSING_INSTRUCTION: 64; - static SHOW_COMMENT: 128; - static SHOW_DOCUMENT: 256; - static SHOW_DOCUMENT_TYPE: 512; - static SHOW_DOCUMENT_FRAGMENT: 1024; - static SHOW_NOTATION: 2048; // deprecated - static FILTER_ACCEPT: 1; - static FILTER_REJECT: 2; - static FILTER_SKIP: 3; - acceptNode: NodeFilterCallback; -} - -// TODO: window.NodeIterator exists at runtime and behaves as a constructor -// as far as `instanceof` is concerned, but it is not callable. -declare class NodeIterator { - root: RootNodeT; - whatToShow: number; - filter: NodeFilter; - expandEntityReferences: boolean; - referenceNode: RootNodeT | WhatToShowT; - pointerBeforeReferenceNode: boolean; - detach(): void; - previousNode(): WhatToShowT | null; - nextNode(): WhatToShowT | null; -} - -// TODO: window.TreeWalker exists at runtime and behaves as a constructor -// as far as `instanceof` is concerned, but it is not callable. -declare class TreeWalker { - root: RootNodeT; - whatToShow: number; - filter: NodeFilter; - expandEntityReferences: boolean; - currentNode: RootNodeT | WhatToShowT; - parentNode(): WhatToShowT | null; - firstChild(): WhatToShowT | null; - lastChild(): WhatToShowT | null; - previousSibling(): WhatToShowT | null; - nextSibling(): WhatToShowT | null; - previousNode(): WhatToShowT | null; - nextNode(): WhatToShowT | null; -} - -/* window */ - -declare type WindowProxy = any; -declare function alert(message?: any): void; -declare function prompt(message?: any, value?: any): string; -declare function close(): void; -declare function confirm(message?: string): boolean; -declare function getComputedStyle( - elt: Element, - pseudoElt?: string, -): CSSStyleDeclaration; -declare opaque type AnimationFrameID; -declare function requestAnimationFrame( - callback: (timestamp: number) => void, -): AnimationFrameID; -declare function cancelAnimationFrame(requestId: AnimationFrameID): void; -declare opaque type IdleCallbackID; -declare function requestIdleCallback( - cb: (deadline: { - didTimeout: boolean, - timeRemaining: () => number, - ... - }) => void, - opts?: {timeout: number, ...}, -): IdleCallbackID; -declare function cancelIdleCallback(id: IdleCallbackID): void; -declare var localStorage: Storage; -declare var devicePixelRatio: number; -declare function focus(): void; -declare function onfocus(ev: Event): any; -declare function onmessage(ev: MessageEvent): any; -declare function open( - url?: string, - target?: string, - features?: string, - replace?: boolean, -): any; -declare var parent: WindowProxy; -declare function print(): void; -declare var self: any; -declare var sessionStorage: Storage; -declare var top: WindowProxy; -declare function getSelection(): Selection | null; -declare var customElements: CustomElementRegistry; -declare function scroll(x: number, y: number): void; -declare function scroll(options: ScrollToOptions): void; -declare function scrollTo(x: number, y: number): void; -declare function scrollTo(options: ScrollToOptions): void; -declare function scrollBy(x: number, y: number): void; -declare function scrollBy(options: ScrollToOptions): void; - -/* Window file picker */ - -type WindowFileSystemPickerFileType = {| - description?: string, - /* - * An Object with the keys set to the MIME type - * and the values an Array of file extensions - * Example: - * accept: { - * "image/*": [".png", ".gif", ".jpeg", ".jpg"], - * }, - */ - accept: { - [string]: Array, - }, -|}; - -type WindowBaseFilePickerOptions = {| - id?: number, - startIn?: - | FileSystemHandle - | 'desktop' - | 'documents' - | 'downloads' - | 'music' - | 'pictures' - | 'videos', -|}; - -type WindowFilePickerOptions = WindowBaseFilePickerOptions & {| - excludeAcceptAllOption?: boolean, - types?: Array, -|}; - -type WindowOpenFilePickerOptions = WindowFilePickerOptions & {| - multiple?: boolean, -|}; - -type WindowSaveFilePickerOptions = WindowFilePickerOptions & {| - suggestedName?: string, -|}; - -type WindowDirectoryFilePickerOptions = WindowBaseFilePickerOptions & {| - mode?: 'read' | 'readwrite', -|}; - -// https://wicg.github.io/file-system-access/#api-showopenfilepicker -declare function showOpenFilePicker( - options?: WindowOpenFilePickerOptions, -): Promise>; - -// https://wicg.github.io/file-system-access/#api-showsavefilepicker -declare function showSaveFilePicker( - options?: WindowSaveFilePickerOptions, -): Promise; - -// https://wicg.github.io/file-system-access/#api-showdirectorypicker -declare function showDirectoryPicker( - options?: WindowDirectoryFilePickerOptions, -): Promise; - -/* Notification */ -type NotificationPermission = 'default' | 'denied' | 'granted'; -type NotificationDirection = 'auto' | 'ltr' | 'rtl'; -type VibratePattern = number | Array; -type NotificationAction = { - action: string, - title: string, - icon?: string, - ... -}; -type NotificationOptions = { - dir?: NotificationDirection, - lang?: string, - body?: string, - tag?: string, - image?: string, - icon?: string, - badge?: string, - sound?: string, - vibrate?: VibratePattern, - timestamp?: number, - renotify?: boolean, - silent?: boolean, - requireInteraction?: boolean, - data?: ?any, - actions?: Array, - ... -}; - -declare class Notification extends EventTarget { - constructor(title: string, options?: NotificationOptions): void; - static readonly permission: NotificationPermission; - static requestPermission( - callback?: (perm: NotificationPermission) => unknown, - ): Promise; - static readonly maxActions: number; - onclick: ?(evt: Event) => unknown; - onclose: ?(evt: Event) => unknown; - onerror: ?(evt: Event) => unknown; - onshow: ?(evt: Event) => unknown; - readonly title: string; - readonly dir: NotificationDirection; - readonly lang: string; - readonly body: string; - readonly tag: string; - readonly image?: string; - readonly icon?: string; - readonly badge?: string; - readonly vibrate?: Array; - readonly timestamp: number; - readonly renotify: boolean; - readonly silent: boolean; - readonly requireInteraction: boolean; - readonly data: any; - readonly actions: Array; - - close(): void; -} diff --git a/flow-typed/environment/node.js b/flow-typed/environment/node.js index 353bf3ff75..e57e32631e 100644 --- a/flow-typed/environment/node.js +++ b/flow-typed/environment/node.js @@ -213,7 +213,7 @@ declare module 'buffer' { declare function isAscii(input: Buffer | ArrayBuffer | $TypedArray): boolean; - declare function resolveObjectURL(id: string): Blob | void; + declare function resolveObjectURL(id: string): globalThis.Blob | void; declare var Buffer: Node$Buffer; declare var Blob: typeof globalThis.Blob; @@ -3756,7 +3756,6 @@ declare class stream$Duplex extends stream$Readable mixins stream$Writable { // with Readable's, which Flow doesn't like. // See https://nodejs.org/api/stream.html#stream_class_stream_duplex_1 - // $FlowFixMe[incompatible-exact] See above // $FlowFixMe[incompatible-type] See above static fromWeb( pair: Readonly<{ diff --git a/flow-typed/environment/serviceworkers.js b/flow-typed/environment/serviceworkers.js deleted file mode 100644 index f713013825..0000000000 --- a/flow-typed/environment/serviceworkers.js +++ /dev/null @@ -1,254 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @format - * @oncall flow - */ - -// https://github.com/flow-typed/flow-typed/blob/main/definitions/environments/serviceworkers/flow_v0.261.x-/serviceworkers.js - -type FrameType = 'auxiliary' | 'top-level' | 'nested' | 'none'; -type VisibilityState = 'hidden' | 'visible' | 'prerender' | 'unloaded'; - -declare class WindowClient extends Client { - visibilityState: VisibilityState; - focused: boolean; - focus(): Promise; - navigate(url: string): Promise; -} - -declare class Client { - id: string; - reserved: boolean; - url: string; - frameType: FrameType; - postMessage(message: any, transfer?: Iterator | Array): void; -} - -declare class ExtendableEvent extends Event { - waitUntil(f: Promise): void; -} - -type NotificationEvent$Init = { - ...Event$Init, - notification: Notification, - action?: string, - ... -}; - -declare class NotificationEvent extends ExtendableEvent { - constructor(type: string, eventInitDict?: NotificationEvent$Init): void; - readonly notification: Notification; - readonly action: string; -} - -type ForeignFetchOptions = { - scopes: Iterator, - origins: Iterator, - ... -}; - -declare class InstallEvent extends ExtendableEvent { - registerForeignFetch(options: ForeignFetchOptions): void; -} - -declare class FetchEvent extends ExtendableEvent { - request: Request; - clientId: string; - isReload: boolean; - respondWith(response: Response | Promise): void; - preloadResponse: Promise; -} - -type ClientType = 'window' | 'worker' | 'sharedworker' | 'all'; -type ClientQueryOptions = { - includeUncontrolled?: boolean, - includeReserved?: boolean, - type?: ClientType, - ... -}; - -declare class Clients { - get(id: string): Promise; - matchAll(options?: ClientQueryOptions): Promise>; - openWindow(url: string): Promise; - claim(): Promise; -} - -type ServiceWorkerState = - 'installing' | 'installed' | 'activating' | 'activated' | 'redundant'; - -declare class ServiceWorker extends EventTarget { - scriptURL: string; - state: ServiceWorkerState; - - postMessage(message: any, transfer?: Iterator): void; - - onstatechange?: EventHandler; -} - -declare class NavigationPreloadState { - enabled: boolean; - headerValue: string; -} - -declare class NavigationPreloadManager { - enable: Promise; - disable: Promise; - setHeaderValue(value: string): Promise; - getState: Promise; -} - -type PushSubscriptionOptions = { - userVisibleOnly?: boolean, - applicationServerKey?: string | ArrayBuffer | $ArrayBufferView, - ... -}; - -declare class PushSubscriptionJSON { - endpoint: string; - expirationTime: number | null; - keys: {[string]: string, ...}; -} - -declare class PushSubscription { - readonly endpoint: string; - readonly expirationTime: number | null; - readonly options: PushSubscriptionOptions; - getKey(name: string): ArrayBuffer | null; - toJSON(): PushSubscriptionJSON; - unsubscribe(): Promise; -} - -declare class PushManager { - readonly supportedContentEncodings: Array; - subscribe(options?: PushSubscriptionOptions): Promise; - getSubscription(): Promise; - permissionState( - options?: PushSubscriptionOptions, - ): Promise<'granted' | 'denied' | 'prompt'>; -} - -type ServiceWorkerUpdateViaCache = 'imports' | 'all' | 'none'; - -type GetNotificationOptions = { - tag?: string, - ... -}; - -declare class ServiceWorkerRegistration extends EventTarget { - readonly installing: ?ServiceWorker; - readonly waiting: ?ServiceWorker; - readonly active: ?ServiceWorker; - readonly navigationPreload: NavigationPreloadManager; - readonly scope: string; - readonly updateViaCache: ServiceWorkerUpdateViaCache; - readonly pushManager: PushManager; - - getNotifications?: ( - filter?: GetNotificationOptions, - ) => Promise>; - showNotification?: ( - title: string, - options?: NotificationOptions, - ) => Promise; - update(): Promise; - unregister(): Promise; - - onupdatefound?: EventHandler; -} - -type WorkerType = 'classic' | 'module'; - -type RegistrationOptions = { - scope?: string, - type?: WorkerType, - updateViaCache?: ServiceWorkerUpdateViaCache, - ... -}; - -declare class ServiceWorkerContainer extends EventTarget { - readonly controller: ?ServiceWorker; - readonly ready: Promise; - - getRegistration( - clientURL?: string, - ): Promise; - getRegistrations(): Promise>; - register( - scriptURL: string | TrustedScriptURL, - options?: RegistrationOptions, - ): Promise; - startMessages(): void; - - oncontrollerchange?: EventHandler; - onmessage?: EventHandler; - onmessageerror?: EventHandler; -} - -/** - * This feature has been removed from the Web standards. - */ -declare class ServiceWorkerMessageEvent extends Event { - data: any; - lastEventId: string; - origin: string; - ports: Array; - source: ?(ServiceWorker | MessagePort); -} - -declare class ExtendableMessageEvent extends ExtendableEvent { - data: any; - lastEventId: string; - origin: string; - ports: Array; - source: ?(ServiceWorker | MessagePort); -} - -type CacheQueryOptions = { - ignoreSearch?: boolean, - ignoreMethod?: boolean, - ignoreVary?: boolean, - cacheName?: string, - ... -}; - -declare class Cache { - match(request: RequestInfo, options?: CacheQueryOptions): Promise; - matchAll( - request: RequestInfo, - options?: CacheQueryOptions, - ): Promise>; - add(request: RequestInfo): Promise; - addAll(requests: Array): Promise; - put(request: RequestInfo, response: Response): Promise; - delete(request: RequestInfo, options?: CacheQueryOptions): Promise; - keys( - request?: RequestInfo, - options?: CacheQueryOptions, - ): Promise>; -} - -declare class CacheStorage { - match(request: RequestInfo, options?: CacheQueryOptions): Promise; - has(cacheName: string): Promise; - open(cacheName: string): Promise; - delete(cacheName: string): Promise; - keys(): Promise>; -} - -// Service worker global scope -// https://www.w3.org/TR/service-workers/#service-worker-global-scope -declare var clients: Clients; -declare var caches: CacheStorage; -declare var registration: ServiceWorkerRegistration; -declare function skipWaiting(): Promise; -declare var onactivate: ?EventHandler; -declare var oninstall: ?EventHandler; -declare var onfetch: ?EventHandler; -declare var onforeignfetch: ?EventHandler; -// $FlowFixMe[libdef-override] -declare var onmessage: ?EventHandler; diff --git a/flow-typed/environment/streams.js b/flow-typed/environment/streams.js deleted file mode 100644 index 208bd2988c..0000000000 --- a/flow-typed/environment/streams.js +++ /dev/null @@ -1,131 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @format - * @oncall flow - */ - -// Adapted from https://github.com/flow-typed/flow-typed/blob/main/definitions/environments/streams/flow_v0.261.x-/streams.js - -type TextEncodeOptions = {options?: boolean, ...}; - -// $FlowFixMe[libdef-override] -declare class TextEncoder { - encode(buffer: string, options?: TextEncodeOptions): Uint8Array; -} - -declare class ReadableStreamController { - close(): void; - - constructor( - stream: ReadableStream, - underlyingSource: UnderlyingSource, - size: number, - highWaterMark: number, - ): void; - - desiredSize: number; - enqueue(chunk: any): void; - error(error: Error): void; -} - -declare class ReadableStreamReader { - cancel(reason: string): void; - - closed: boolean; - - constructor(stream: ReadableStream): void; - read(): Promise<{ - done: boolean, - value: ?any, - ... - }>; - releaseLock(): void; -} - -declare interface UnderlyingSource { - autoAllocateChunkSize?: number; - cancel?: (reason: string) => ?Promise; - - pull?: (controller: ReadableStreamController) => ?Promise; - start?: (controller: ReadableStreamController) => ?Promise; - type?: string; -} - -declare class TransformStream { - readable: ReadableStream; - writable: WritableStream; -} - -interface PipeThroughTransformStream { - readable: ReadableStream; - writable: WritableStream; -} - -type PipeToOptions = { - preventAbort?: boolean, - preventCancel?: boolean, - preventClose?: boolean, - ... -}; - -type QueuingStrategy = { - highWaterMark: number, - size(chunk: ?any): number, - ... -}; - -declare class ReadableStream { - cancel(reason: string): void; - - constructor( - underlyingSource: ?UnderlyingSource, - queuingStrategy: ?QueuingStrategy, - ): void; - - getReader(): ReadableStreamReader; - locked: boolean; - pipeThrough(transform: PipeThroughTransformStream, options: ?any): void; - pipeTo(dest: WritableStream, options: ?PipeToOptions): Promise; - tee(): [ReadableStream, ReadableStream]; -} - -declare interface WritableStreamController { - error(error: Error): void; -} - -declare interface UnderlyingSink { - abort?: (reason: string) => ?Promise; - autoAllocateChunkSize?: number; - - close?: (controller: WritableStreamController) => ?Promise; - start?: (controller: WritableStreamController) => ?Promise; - type?: string; - write?: (chunk: any, controller: WritableStreamController) => ?Promise; -} - -declare interface WritableStreamWriter { - abort(reason: string): ?Promise; - close(): Promise; - closed: Promise; - - desiredSize?: number; - ready: Promise; - releaseLock(): void; - write(chunk: any): Promise; -} - -declare class WritableStream { - abort(reason: string): void; - - constructor( - underlyingSink: ?UnderlyingSink, - queuingStrategy: QueuingStrategy, - ): void; - - getWriter(): WritableStreamWriter; - locked: boolean; -} diff --git a/packages/metro-file-map/src/__tests__/index-test.js b/packages/metro-file-map/src/__tests__/index-test.js index c32d80809f..47a362282d 100644 --- a/packages/metro-file-map/src/__tests__/index-test.js +++ b/packages/metro-file-map/src/__tests__/index-test.js @@ -894,6 +894,7 @@ describe('FileMap', () => { buildNewFileMap( {}, { + // $FlowFixMe[cannot-spread-interface] console: { ...globalThis.console, warn: mockWarn, @@ -901,6 +902,7 @@ describe('FileMap', () => { failValidationOnConflicts: true, }, { + // $FlowFixMe[cannot-spread-interface] console: { ...globalThis.console, warn: mockWarn, @@ -925,7 +927,6 @@ describe('FileMap', () => { ); expect( - // $FlowFixMe[prop-missing] console.warn.mock.calls[0][0].replaceAll('\\', '/'), ).toMatchSnapshot(); }); @@ -1589,7 +1590,6 @@ describe('FileMap', () => { }), ); - // $FlowFixMe[prop-missing] expect(console.warn.mock.calls[0][0]).toMatchSnapshot(); }); @@ -2439,7 +2439,6 @@ describe('FileMap', () => { metadata: MOCK_CHANGE_FILE, }); await new Promise((resolve, reject) => { - // $FlowFixMe[prop-missing] console.error.mockImplementationOnce(() => { reject(new Error('should not print error')); }); diff --git a/packages/metro-runtime/src/modules/__tests__/HMRClient-test.js b/packages/metro-runtime/src/modules/__tests__/HMRClient-test.js index ca1f1446a9..c9cc5c95ac 100644 --- a/packages/metro-runtime/src/modules/__tests__/HMRClient-test.js +++ b/packages/metro-runtime/src/modules/__tests__/HMRClient-test.js @@ -29,7 +29,7 @@ beforeEach(() => { global.globalEvalWithSourceUrl = (code, sourceURL) => { evaledCode += '\n/* ' + sourceURL + ' */\n ' + code; }; - global.WebSocket = jest.fn(() => { + const MockWebSocket = jest.fn(() => { mockSocket = { onerror: jest.fn(), onmessage: jest.fn(), @@ -51,10 +51,11 @@ beforeEach(() => { }; return mockSocket; }); + jest.spyOn(global, 'WebSocket', 'get').mockReturnValue(MockWebSocket); }); afterEach(() => { - delete global.WebSocket; + jest.restoreAllMocks(); delete global.globalEvalWithSourceUrl; }); diff --git a/packages/metro/src/DeltaBundler/__tests__/resolver-test.js b/packages/metro/src/DeltaBundler/__tests__/resolver-test.js index 43d5f012c5..a62d63ccfc 100644 --- a/packages/metro/src/DeltaBundler/__tests__/resolver-test.js +++ b/packages/metro/src/DeltaBundler/__tests__/resolver-test.js @@ -185,6 +185,7 @@ function dep(name: string): TransformResultDependency { ) { return; } + // $FlowFixMe[incompatible-type] originalError(...args); }); }); diff --git a/packages/metro/src/lib/logToConsole.js b/packages/metro/src/lib/logToConsole.js index c4a12d2ab8..5d94f6a775 100644 --- a/packages/metro/src/lib/logToConsole.js +++ b/packages/metro/src/lib/logToConsole.js @@ -19,7 +19,7 @@ const groupStack = []; let collapsedGuardTimer; export default (terminal: Terminal, level: string, ...data: Array) => { - // $FlowFixMe[invalid-computed-prop] + // $FlowFixMe[prop-missing] const logFunction = console[level] && level !== 'trace' ? level : 'log'; const color: ReadonlyArray = level === 'error'