flow-typed/environments/bom.js JAVASCRIPT 2,721 lines View on github.com → Search inside
File is large — showing lines 1–2,000 of 2,721.
1// flow-typed signature: 09630545c584c3b212588a2390c257d02// flow-typed version: baae4b8bcc/bom/flow_>=v0.261.x34/* BOM */56declare class Screen {7  +availHeight: number;8  +availWidth: number;9  +availLeft: number;10  +availTop: number;11  +top: number;12  +left: number;13  +colorDepth: number;14  +pixelDepth: number;15  +width: number;16  +height: number;17  +orientation?: {18    lock(): Promise<void>,19    unlock(): void,20    angle: number,21    onchange: () => mixed,22    type:23      | 'portrait-primary'24      | 'portrait-secondary'25      | 'landscape-primary'26      | 'landscape-secondary',27    ...28  };29  // deprecated30  mozLockOrientation?: (orientation: string | Array<string>) => boolean;31  mozUnlockOrientation?: () => void;32  mozOrientation?: string;33  onmozorientationchange?: (...args: any[]) => mixed;34}3536declare var screen: Screen;3738declare interface Crypto {39  // Not using $TypedArray as that would include Float32Array and Float64Array which are not accepted40  getRandomValues: <41    T:42      | Int8Array43      | Uint8Array44      | Uint8ClampedArray45      | Int16Array46      | Uint16Array47      | Int32Array48      | Uint32Array49      | BigInt64Array50      | BigUint64Array,51  >(52    typedArray: T53  ) => T;54  randomUUID: () => string;55}56declare var crypto: Crypto;5758declare var window: any;5960type GamepadButton = {61  pressed: boolean,62  value: number,63  ...64};65type GamepadHapticActuator = {66  type: 'vibration',67  pulse(value: number, duration: number): Promise<boolean>,68  ...69};70type GamepadPose = {71  angularAcceleration: null | Float32Array,72  angularVelocity: null | Float32Array,73  hasOrientation: boolean,74  hasPosition: boolean,75  linearAcceleration: null | Float32Array,76  linearVelocity: null | Float32Array,77  orientation: null | Float32Array,78  position: null | Float32Array,79  ...80};81type Gamepad = {82  axes: number[],83  buttons: GamepadButton[],84  connected: boolean,85  displayId?: number,86  hapticActuators?: GamepadHapticActuator[],87  hand?: '' | 'left' | 'right',88  id: string,89  index: number,90  mapping: string,91  pose?: null | GamepadPose,92  timestamp: number,93  ...94};9596// deprecated97type BatteryManager = {98  +charging: boolean,99  +chargingTime: number,100  +dischargingTime: number,101  +level: number,102  onchargingchange: ?(event: any) => mixed,103  onchargingtimechange: ?(event: any) => mixed,104  ondischargingtimechange: ?(event: any) => mixed,105  onlevelchange: ?(event: any) => mixed,106  ...107};108109// https://wicg.github.io/web-share110type ShareData = {111  title?: string,112  text?: string,113  url?: string,114  ...115};116117type PermissionName =118  | 'geolocation'119  | 'notifications'120  | 'push'121  | 'midi'122  | 'camera'123  | 'microphone'124  | 'speaker'125  | 'usb'126  | 'device-info'127  | 'background-sync'128  | 'bluetooth'129  | 'persistent-storage'130  | 'ambient-light-sensor'131  | 'accelerometer'132  | 'gyroscope'133  | 'magnetometer'134  | 'clipboard-read'135  | 'clipboard-write';136137type PermissionState = 'granted' | 'denied' | 'prompt';138139type PermissionDescriptor = {|140  name: PermissionName,141|};142143type DevicePermissionDescriptor = {|144  deviceId?: string,145  name: 'camera' | 'microphone' | 'speaker',146|};147148type MidiPermissionDescriptor = {|149  name: 'midi',150  sysex?: boolean,151|};152153type PushPermissionDescriptor = {|154  name: 'push',155  userVisibleOnly?: boolean,156|};157158type ClipboardPermissionDescriptor = {|159  name: 'clipboard-read' | 'clipboard-write',160  allowWithoutGesture: boolean,161|};162163type USBPermissionDescriptor = {|164  name: 'usb',165  filters: Array<USBDeviceFilter>,166  exclusionFilters: Array<USBDeviceFilter>,167|};168169type FileSystemHandlePermissionDescriptor = {|170  mode: 'read' | 'readwrite',171|};172173declare class PermissionStatus extends EventTarget {174  onchange: ?(event: any) => mixed;175  +state: PermissionState;176}177178declare class Permissions {179  query(180    permissionDesc:181      | DevicePermissionDescriptor182      | MidiPermissionDescriptor183      | PushPermissionDescriptor184      | ClipboardPermissionDescriptor185      | USBPermissionDescriptor186      | PermissionDescriptor187  ): Promise<PermissionStatus>;188}189190type MIDIPortType = 'input' | 'output';191type MIDIPortDeviceState = 'connected' | 'disconnected';192type MIDIPortConnectionState = 'open' | 'closed' | 'pending';193194type MIDIOptions = {|195  sysex: boolean,196  software: boolean,197|};198199type MIDIMessageEvent$Init = Event$Init & {200  data: Uint8Array,201  ...202};203204declare class MIDIMessageEvent extends Event {205  constructor(type: string, eventInitDict: MIDIMessageEvent$Init): void;206  +data: Uint8Array;207}208209type MIDIConnectionEvent$Init = Event$Init & {210  port: MIDIPort,211  ...212};213214declare class MIDIConnectionEvent extends Event {215  constructor(type: string, eventInitDict: MIDIConnectionEvent$Init): void;216  +port: MIDIPort;217}218219declare class MIDIPort extends EventTarget {220  +id: string;221  +manufacturer?: string;222  +name?: string;223  +type: MIDIPortType;224  +version?: string;225  +state: MIDIPortDeviceState;226  +connection: MIDIPortConnectionState;227  onstatechange: ?(ev: MIDIConnectionEvent) => mixed;228  open(): Promise<MIDIPort>;229  close(): Promise<MIDIPort>;230}231232declare class MIDIInput extends MIDIPort {233  onmidimessage: ?(ev: MIDIMessageEvent) => mixed;234}235236declare class MIDIOutput extends MIDIPort {237  send(data: Iterable<number>, timestamp?: number): void;238  clear(): void;239}240241declare class MIDIInputMap extends $ReadOnlyMap<string, MIDIInput> {}242243declare class MIDIOutputMap extends $ReadOnlyMap<string, MIDIOutput> {}244245declare class MIDIAccess extends EventTarget {246  +inputs: MIDIInputMap;247  +outputs: MIDIOutputMap;248  +sysexEnabled: boolean;249  onstatechange: ?(ev: MIDIConnectionEvent) => mixed;250}251252declare class NavigatorID {253  appName: 'Netscape';254  appCodeName: 'Mozilla';255  product: 'Gecko';256  appVersion: string;257  platform: string;258  userAgent: string;259}260261declare class NavigatorLanguage {262  +language: string;263  +languages: $ReadOnlyArray<string>;264}265266declare class NavigatorContentUtils {267  registerContentHandler(mimeType: string, uri: string, title: string): void;268  registerProtocolHandler(protocol: string, uri: string, title: string): void;269}270271declare class NavigatorCookies {272  +cookieEnabled: boolean;273}274275declare class NavigatorPlugins {276  +plugins: PluginArray;277  +mimeTypes: MimeTypeArray;278  javaEnabled(): boolean;279}280281declare class NavigatorOnLine {282  +onLine: boolean;283}284285declare class NavigatorConcurrentHardware {286  +hardwareConcurrency: number;287}288289declare class NavigatorStorage {290  storage?: StorageManager;291}292293declare class StorageManager {294  persist: () => Promise<boolean>;295  persisted: () => Promise<boolean>;296  estimate?: () => Promise<StorageEstimate>;297  getDirectory: () => Promise<FileSystemDirectoryHandle>;298}299300type StorageManagerRegisteredEndpoint =301  | 'caches'302  | 'indexedDB'303  | 'localStorage'304  | 'serviceWorkerRegistrations'305  | 'sessionStorage';306307type StorageManagerUsageDetails = {[StorageManagerRegisteredEndpoint]: number};308309declare class StorageEstimate {310  constructor(311    usage: number,312    quota: number,313    usageDetails?: StorageManagerUsageDetails314  ): void;315  +usage: number;316  +quota: number;317318  // Not a part of the standard319  +usageDetails?: StorageManagerUsageDetails;320}321322declare class Navigator323  mixins324    NavigatorID,325    NavigatorLanguage,326    NavigatorOnLine,327    NavigatorContentUtils,328    NavigatorCookies,329    NavigatorPlugins,330    NavigatorConcurrentHardware,331    NavigatorStorage332{333  productSub: '20030107' | '20100101';334  vendor: '' | 'Google Inc.' | 'Apple Computer, Inc';335  vendorSub: '';336337  activeVRDisplays?: VRDisplay[];338  appCodeName: 'Mozilla';339  buildID: string;340  doNotTrack: string | null;341  geolocation: Geolocation;342  mediaDevices?: MediaDevices;343  usb?: USB;344  maxTouchPoints: number;345  permissions: Permissions;346  serviceWorker?: ServiceWorkerContainer;347  getGamepads?: () => Array<Gamepad | null>;348  webkitGetGamepads?: Function;349  mozGetGamepads?: Function;350  mozGamepads?: any;351  gamepads?: any;352  webkitGamepads?: any;353  getVRDisplays?: () => Promise<VRDisplay[]>;354  registerContentHandler(mimeType: string, uri: string, title: string): void;355  registerProtocolHandler(protocol: string, uri: string, title: string): void;356  requestMIDIAccess?: (options?: MIDIOptions) => Promise<MIDIAccess>;357  requestMediaKeySystemAccess?: (358    keySystem: string,359    supportedConfigurations: any[]360  ) => Promise<any>;361  sendBeacon?: (url: string, data?: BodyInit) => boolean;362  vibrate?: (pattern: number | number[]) => boolean;363  mozVibrate?: (pattern: number | number[]) => boolean;364  webkitVibrate?: (pattern: number | number[]) => boolean;365  canShare?: (shareData?: ShareData) => boolean;366  share?: (shareData: ShareData) => Promise<void>;367  clipboard: Clipboard;368  credentials?: CredMgmtCredentialsContainer;369  globalPrivacyControl?: boolean;370371  // deprecated372  getBattery?: () => Promise<BatteryManager>;373  mozGetBattery?: () => Promise<BatteryManager>;374375  // deprecated376  getUserMedia?: Function;377  webkitGetUserMedia?: Function;378  mozGetUserMedia?: Function;379  msGetUserMedia?: Function;380381  // Gecko382  taintEnabled?: () => false;383  oscpu: string;384}385386declare class Clipboard extends EventTarget {387  read(): Promise<DataTransfer>;388  readText(): Promise<string>;389  write(data: $ReadOnlyArray<ClipboardItem>): Promise<void>;390  writeText(data: string): Promise<void>;391}392393declare var navigator: Navigator;394395declare class MimeType {396  type: string;397  description: string;398  suffixes: string;399  enabledPlugin: Plugin;400}401402declare class MimeTypeArray {403  length: number;404  item(index: number): MimeType;405  namedItem(name: string): MimeType;406  [key: number | string]: MimeType;407}408409declare class Plugin {410  description: string;411  filename: string;412  name: string;413  version?: string; // Gecko only414  length: number;415  item(index: number): MimeType;416  namedItem(name: string): MimeType;417  [key: number | string]: MimeType;418}419420declare class PluginArray {421  length: number;422  item(index: number): Plugin;423  namedItem(name: string): Plugin;424  refresh(): void;425  [key: number | string]: Plugin;426}427428// https://www.w3.org/TR/hr-time-2/#dom-domhighrestimestamp429// https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp430declare type DOMHighResTimeStamp = number;431432// https://www.w3.org/TR/navigation-timing-2/433declare class PerformanceTiming {434  connectEnd: number;435  connectStart: number;436  domainLookupEnd: number;437  domainLookupStart: number;438  domComplete: number;439  domContentLoadedEventEnd: number;440  domContentLoadedEventStart: number;441  domInteractive: number;442  domLoading: number;443  fetchStart: number;444  loadEventEnd: number;445  loadEventStart: number;446  navigationStart: number;447  redirectEnd: number;448  redirectStart: number;449  requestStart: number;450  responseEnd: number;451  responseStart: number;452  secureConnectionStart: number;453  unloadEventEnd: number;454  unloadEventStart: number;455}456457declare class PerformanceNavigation {458  TYPE_NAVIGATE: 0;459  TYPE_RELOAD: 1;460  TYPE_BACK_FORWARD: 2;461  TYPE_RESERVED: 255;462463  type: 0 | 1 | 2 | 255;464  redirectCount: number;465}466467type PerformanceEntryFilterOptions = {468  name: string,469  entryType: string,470  initiatorType: string,471  ...472};473474// https://www.w3.org/TR/performance-timeline-2/475declare class PerformanceEntry {476  name: string;477  entryType: string;478  startTime: DOMHighResTimeStamp;479  duration: DOMHighResTimeStamp;480  toJSON(): string;481}482483// https://w3c.github.io/server-timing/#the-performanceservertiming-interface484declare class PerformanceServerTiming {485  description: string;486  duration: DOMHighResTimeStamp;487  name: string;488  toJSON(): string;489}490491// https://www.w3.org/TR/resource-timing-2/#sec-performanceresourcetiming492// https://w3c.github.io/server-timing/#extension-to-the-performanceresourcetiming-interface493declare class PerformanceResourceTiming extends PerformanceEntry {494  initiatorType: string;495  nextHopProtocol: string;496  workerStart: number;497  redirectStart: number;498  redirectEnd: number;499  fetchStart: number;500  domainLookupStart: number;501  domainLookupEnd: number;502  connectStart: number;503  connectEnd: number;504  secureConnectionStart: number;505  requestStart: number;506  responseStart: number;507  responseEnd: number;508  transferSize: string;509  encodedBodySize: number;510  decodedBodySize: number;511  serverTiming: Array<PerformanceServerTiming>;512}513514// https://w3c.github.io/event-timing/#sec-performance-event-timing515declare class PerformanceEventTiming extends PerformanceEntry {516  processingStart: number;517  processingEnd: number;518  cancelable: boolean;519  target: ?Node;520  interactionId: number;521}522523// https://w3c.github.io/longtasks/#taskattributiontiming524declare class TaskAttributionTiming extends PerformanceEntry {525  containerType: string;526  containerSrc: string;527  containerId: string;528  containerName: string;529}530531// https://w3c.github.io/longtasks/#sec-PerformanceLongTaskTiming532declare class PerformanceLongTaskTiming extends PerformanceEntry {533  attribution: $ReadOnlyArray<TaskAttributionTiming>;534}535536// https://www.w3.org/TR/navigation-timing-2/537declare class PerformanceNavigationTiming extends PerformanceResourceTiming {538  unloadEventStart: number;539  unloadEventEnd: number;540  domInteractive: number;541  domContentLoadedEventStart: number;542  domContentLoadedEventEnd: number;543  domComplete: number;544  loadEventStart: number;545  loadEventEnd: number;546  type: 'navigate' | 'reload' | 'back_forward' | 'prerender';547  redirectCount: number;548}549550// https://www.w3.org/TR/user-timing/#extensions-performance-interface551declare type PerformanceMarkOptions = {|552  detail?: mixed,553  startTime?: number,554|};555556declare type PerformanceMeasureOptions = {|557  detail?: mixed,558  start?: number | string,559  end?: number | string,560  duration?: number,561|};562563type EventCountsForEachCallbackType =564  | (() => void)565  | ((value: number) => void)566  | ((value: number, key: string) => void)567  | ((value: number, key: string, map: Map<string, number>) => void);568569// https://www.w3.org/TR/event-timing/#eventcounts570declare interface EventCounts {571  size: number;572573  entries(): Iterator<[string, number]>;574  forEach(callback: EventCountsForEachCallbackType): void;575  get(key: string): ?number;576  has(key: string): boolean;577  keys(): Iterator<string>;578  values(): Iterator<number>;579}580581declare class Performance {582  eventCounts: EventCounts;583584  // deprecated585  navigation: PerformanceNavigation;586  timing: PerformanceTiming;587588  onresourcetimingbufferfull: (ev: any) => mixed;589  clearMarks(name?: string): void;590  clearMeasures(name?: string): void;591  clearResourceTimings(): void;592  getEntries(options?: PerformanceEntryFilterOptions): Array<PerformanceEntry>;593  getEntriesByName(name: string, type?: string): Array<PerformanceEntry>;594  getEntriesByType(type: string): Array<PerformanceEntry>;595  mark(name: string, options?: PerformanceMarkOptions): void;596  measure(597    name: string,598    startMarkOrOptions?: string | PerformanceMeasureOptions,599    endMark?: string600  ): void;601  now(): DOMHighResTimeStamp;602  setResourceTimingBufferSize(maxSize: number): void;603  toJSON(): string;604}605606declare var performance: Performance;607608type PerformanceEntryList = PerformanceEntry[];609610declare interface PerformanceObserverEntryList {611  getEntries(): PerformanceEntryList;612  getEntriesByType(type: string): PerformanceEntryList;613  getEntriesByName(name: string, type: ?string): PerformanceEntryList;614}615616type PerformanceObserverInit = {617  entryTypes?: string[],618  type?: string,619  buffered?: boolean,620  ...621};622623declare class PerformanceObserver {624  constructor(625    callback: (626      entries: PerformanceObserverEntryList,627      observer: PerformanceObserver628    ) => mixed629  ): void;630631  observe(options: ?PerformanceObserverInit): void;632  disconnect(): void;633  takeRecords(): PerformanceEntryList;634635  static supportedEntryTypes: string[];636}637638declare class History {639  length: number;640  scrollRestoration: 'auto' | 'manual';641  state: any;642  back(): void;643  forward(): void;644  go(delta?: number): void;645  pushState(statedata: any, title: string, url?: string): void;646  replaceState(statedata: any, title: string, url?: string): void;647}648649declare var history: History;650651declare class Location {652  ancestorOrigins: string[];653  hash: string;654  host: string;655  hostname: string;656  href: string;657  origin: string;658  pathname: string;659  port: string;660  protocol: string;661  search: string;662  assign(url: string): void;663  reload(flag?: boolean): void;664  replace(url: string): void;665  toString(): string;666}667668declare var location: Location;669670///////////////////////////////////////////////////////////////////////////////671672declare class DOMParser {673  parseFromString(source: string | TrustedHTML, mimeType: string): Document;674}675676type FormDataEntryValue = string | File;677678declare class FormData {679  constructor(form?: HTMLFormElement, submitter?: HTMLElement | null): void;680681  has(name: string): boolean;682  get(name: string): ?FormDataEntryValue;683  getAll(name: string): Array<FormDataEntryValue>;684685  set(name: string, value: FormDataEntryValue): void;686  set(name: string, value: Blob, filename?: string): void;687  set(name: string, value: File, filename?: string): void;688689  append(name: string, value: FormDataEntryValue): void;690  append(name: string, value: Blob, filename?: string): void;691  append(name: string, value: File, filename?: string): void;692693  delete(name: string): void;694695  keys(): Iterator<string>;696  values(): Iterator<FormDataEntryValue>;697  entries(): Iterator<[string, FormDataEntryValue]>;698}699700declare type IntersectionObserverEntry = {701  boundingClientRect: DOMRectReadOnly,702  intersectionRatio: number,703  intersectionRect: DOMRectReadOnly,704  isIntersecting: boolean,705  rootBounds: DOMRectReadOnly,706  target: Element,707  time: DOMHighResTimeStamp,708  ...709};710711declare type IntersectionObserverCallback = (712  entries: Array<IntersectionObserverEntry>,713  observer: IntersectionObserver714) => mixed;715716declare type IntersectionObserverOptions = {717  root?: Node | null,718  rootMargin?: string,719  threshold?: number | Array<number>,720  ...721};722723declare class IntersectionObserver {724  constructor(725    callback: IntersectionObserverCallback,726    options?: IntersectionObserverOptions727  ): void;728  root: Element | null;729  rootMargin: string;730  scrollMargin: string;731  thresholds: number[];732  observe(target: Element): void;733  unobserve(target: Element): void;734  takeRecords(): Array<IntersectionObserverEntry>;735  disconnect(): void;736}737738declare interface ResizeObserverSize {739  +inlineSize: number;740  +blockSize: number;741}742743declare interface ResizeObserverEntry {744  /**745   * The Element whose size has changed.746   */747  +target: Element;748  /**749   * Element's content rect when ResizeObserverCallback is invoked.750   *751   * Legacy, may be deprecated in the future.752   */753  +contentRect: DOMRectReadOnly;754  /**755   * An array containing the Element's border box size when756   * ResizeObserverCallback is invoked.757   */758  +borderBoxSize: $ReadOnlyArray<ResizeObserverSize>;759  /**760   * An array containing the Element's content rect size when761   * ResizeObserverCallback is invoked.762   */763  +contentBoxSize: $ReadOnlyArray<ResizeObserverSize>;764  /**765   * An array containing the Element's content rect size in integral device766   * pixels when ResizeObserverCallback is invoked.767   *768   * Not implemented in Firefox or Safari as of July 2021769   */770  +devicePixelContentBoxSize?: $ReadOnlyArray<ResizeObserverSize> | void;771}772773/**774 * ResizeObserver can observe different kinds of CSS sizes:775 * - border-box : size of box border area as defined in CSS2.776 * - content-box : size of content area as defined in CSS2.777 * - device-pixel-content-box : size of content area as defined in CSS2, in device778 *     pixels, before applying any CSS transforms on the element or its ancestors.779 *     This size must contain integer values.780 */781type ResizeObserverBoxOptions =782  | 'border-box'783  | 'content-box'784  | 'device-pixel-content-box';785786declare type ResizeObserverOptions = {787  box?: ResizeObserverBoxOptions,788  ...789};790791/**792 * The ResizeObserver interface is used to observe changes to Element's size.793 */794declare class ResizeObserver {795  constructor(796    callback: (797      entries: ResizeObserverEntry[],798      observer: ResizeObserver799    ) => mixed800  ): void;801  /**802   * Adds target to the list of observed elements.803   */804  observe(target: Element, options?: ResizeObserverOptions): void;805  /**806   * Removes target from the list of observed elements.807   */808  unobserve(target: Element): void;809  disconnect(): void;810}811812declare class CloseEvent extends Event {813  code: number;814  reason: string;815  wasClean: boolean;816}817818declare class WebSocket extends EventTarget {819  static CONNECTING: 0;820  static OPEN: 1;821  static CLOSING: 2;822  static CLOSED: 3;823  constructor(url: string, protocols?: string | Array<string>): void;824  protocol: string;825  readyState: number;826  bufferedAmount: number;827  extensions: string;828  onopen: (ev: any) => mixed;829  onmessage: (ev: MessageEvent<>) => mixed;830  onclose: (ev: CloseEvent) => mixed;831  onerror: (ev: any) => mixed;832  binaryType: 'blob' | 'arraybuffer';833  url: string;834  close(code?: number, reason?: string): void;835  send(data: string): void;836  send(data: Blob): void;837  send(data: ArrayBuffer): void;838  send(data: $ArrayBufferView): void;839  CONNECTING: 0;840  OPEN: 1;841  CLOSING: 2;842  CLOSED: 3;843}844845type WorkerOptions = {846  type?: WorkerType,847  credentials?: CredentialsType,848  name?: string,849  ...850};851852declare class Worker extends EventTarget {853  constructor(854    stringUrl: string | TrustedScriptURL,855    workerOptions?: WorkerOptions856  ): void;857  onerror: null | ((ev: any) => mixed);858  onmessage: null | ((ev: MessageEvent<>) => mixed);859  onmessageerror: null | ((ev: MessageEvent<>) => mixed);860  postMessage(message: any, ports?: any): void;861  terminate(): void;862}863864declare class SharedWorker extends EventTarget {865  constructor(stringUrl: string | TrustedScriptURL, name?: string): void;866  constructor(867    stringUrl: string | TrustedScriptURL,868    workerOptions?: WorkerOptions869  ): void;870  port: MessagePort;871  onerror: (ev: any) => mixed;872}873874declare function importScripts(...urls: Array<string | TrustedScriptURL>): void;875876declare class WorkerGlobalScope extends EventTarget {877  // $FlowFixMe[incompatible-variance]878  self: this;879  location: WorkerLocation;880  navigator: WorkerNavigator;881  close(): void;882  importScripts(...urls: Array<string | TrustedScriptURL>): void;883  onerror: (ev: any) => mixed;884  onlanguagechange: (ev: any) => mixed;885  onoffline: (ev: any) => mixed;886  ononline: (ev: any) => mixed;887  onrejectionhandled: (ev: PromiseRejectionEvent) => mixed;888  onunhandledrejection: (ev: PromiseRejectionEvent) => mixed;889}890891declare class DedicatedWorkerGlobalScope extends WorkerGlobalScope {892  onmessage: (ev: MessageEvent<>) => mixed;893  onmessageerror: (ev: MessageEvent<>) => mixed;894  postMessage(message: any, transfer?: Iterable<any>): void;895}896897declare class SharedWorkerGlobalScope extends WorkerGlobalScope {898  name: string;899  onconnect: (ev: MessageEvent<>) => mixed;900}901902declare class WorkerLocation {903  origin: string;904  protocol: string;905  host: string;906  hostname: string;907  port: string;908  pathname: string;909  search: string;910  hash: string;911}912913declare class WorkerNavigator914  mixins915    NavigatorID,916    NavigatorLanguage,917    NavigatorOnLine,918    NavigatorConcurrentHardware,919    NavigatorStorage920{921  permissions: Permissions;922}923924// deprecated925declare class XDomainRequest {926  timeout: number;927  onerror: () => mixed;928  onload: () => mixed;929  onprogress: () => mixed;930  ontimeout: () => mixed;931  +responseText: string;932  +contentType: string;933  open(method: 'GET' | 'POST', url: string): void;934  abort(): void;935  send(data?: string): void;936937  statics: {create(): XDomainRequest, ...};938}939940declare class XMLHttpRequest extends EventTarget {941  static LOADING: number;942  static DONE: number;943  static UNSENT: number;944  static OPENED: number;945  static HEADERS_RECEIVED: number;946  responseBody: any;947  status: number;948  readyState: number;949  responseText: string;950  responseXML: any;951  responseURL: string;952  ontimeout: ProgressEventHandler;953  statusText: string;954  onreadystatechange: (ev: any) => mixed;955  timeout: number;956  onload: ProgressEventHandler;957  response: any;958  withCredentials: boolean;959  onprogress: ProgressEventHandler;960  onabort: ProgressEventHandler;961  responseType: string;962  onloadend: ProgressEventHandler;963  upload: XMLHttpRequestEventTarget;964  onerror: ProgressEventHandler;965  onloadstart: ProgressEventHandler;966  msCaching: string;967  open(968    method: string,969    url: string,970    async?: boolean,971    user?: string,972    password?: string973  ): void;974  send(data?: any): void;975  abort(): void;976  getAllResponseHeaders(): string;977  setRequestHeader(header: string, value: string): void;978  getResponseHeader(header: string): string;979  msCachingEnabled(): boolean;980  overrideMimeType(mime: string): void;981  LOADING: number;982  DONE: number;983  UNSENT: number;984  OPENED: number;985  HEADERS_RECEIVED: number;986987  statics: {create(): XMLHttpRequest, ...};988}989990declare class XMLHttpRequestEventTarget extends EventTarget {991  onprogress: ProgressEventHandler;992  onerror: ProgressEventHandler;993  onload: ProgressEventHandler;994  ontimeout: ProgressEventHandler;995  onabort: ProgressEventHandler;996  onloadstart: ProgressEventHandler;997  onloadend: ProgressEventHandler;998}9991000declare class XMLSerializer {1001  serializeToString(target: Node): string;1002}10031004declare class Geolocation {1005  getCurrentPosition(1006    success: (position: Position) => mixed,1007    error?: (error: PositionError) => mixed,1008    options?: PositionOptions1009  ): void;1010  watchPosition(1011    success: (position: Position) => mixed,1012    error?: (error: PositionError) => mixed,1013    options?: PositionOptions1014  ): number;1015  clearWatch(id: number): void;1016}10171018declare class Position {1019  coords: Coordinates;1020  timestamp: number;1021}10221023declare class Coordinates {1024  latitude: number;1025  longitude: number;1026  altitude?: number;1027  accuracy: number;1028  altitudeAccuracy?: number;1029  heading?: number;1030  speed?: number;1031}10321033declare class PositionError {1034  code: number;1035  message: string;1036  PERMISSION_DENIED: 1;1037  POSITION_UNAVAILABLE: 2;1038  TIMEOUT: 3;1039}10401041type PositionOptions = {1042  enableHighAccuracy?: boolean,1043  timeout?: number,1044  maximumAge?: number,1045  ...1046};10471048type AudioContextState = 'suspended' | 'running' | 'closed';10491050// deprecated1051type AudioProcessingEvent$Init = Event$Init & {1052  playbackTime: number,1053  inputBuffer: AudioBuffer,1054  outputBuffer: AudioBuffer,1055  ...1056};10571058// deprecated1059declare class AudioProcessingEvent extends Event {1060  constructor(type: string, eventInitDict: AudioProcessingEvent$Init): void;10611062  +playbackTime: number;1063  +inputBuffer: AudioBuffer;1064  +outputBuffer: AudioBuffer;1065}10661067type OfflineAudioCompletionEvent$Init = Event$Init & {1068  renderedBuffer: AudioBuffer,1069  ...1070};10711072declare class OfflineAudioCompletionEvent extends Event {1073  constructor(1074    type: string,1075    eventInitDict: OfflineAudioCompletionEvent$Init1076  ): void;10771078  +renderedBuffer: AudioBuffer;1079}10801081declare class BaseAudioContext extends EventTarget {1082  currentTime: number;1083  destination: AudioDestinationNode;1084  listener: AudioListener;1085  sampleRate: number;1086  state: AudioContextState;1087  onstatechange: (ev: any) => mixed;1088  createBuffer(1089    numOfChannels: number,1090    length: number,1091    sampleRate: number1092  ): AudioBuffer;1093  createBufferSource(myMediaElement?: HTMLMediaElement): AudioBufferSourceNode;1094  createMediaElementSource(1095    myMediaElement: HTMLMediaElement1096  ): MediaElementAudioSourceNode;1097  createMediaStreamSource(stream: MediaStream): MediaStreamAudioSourceNode;1098  createMediaStreamDestination(): MediaStreamAudioDestinationNode;10991100  // deprecated1101  createScriptProcessor(1102    bufferSize: number,1103    numberOfInputChannels: number,1104    numberOfOutputChannels: number1105  ): ScriptProcessorNode;11061107  createAnalyser(): AnalyserNode;1108  createBiquadFilter(): BiquadFilterNode;1109  createChannelMerger(numberOfInputs?: number): ChannelMergerNode;1110  createChannelSplitter(numberOfInputs?: number): ChannelSplitterNode;1111  createConstantSource(): ConstantSourceNode;1112  createConvolver(): ConvolverNode;1113  createDelay(maxDelayTime?: number): DelayNode;1114  createDynamicsCompressor(): DynamicsCompressorNode;1115  createGain(): GainNode;1116  createIIRFilter(1117    feedforward: Float32Array,1118    feedback: Float32Array1119  ): IIRFilterNode;1120  createOscillator(): OscillatorNode;1121  createPanner(): PannerNode;1122  createStereoPanner(): StereoPannerNode;1123  createPeriodicWave(1124    real: Float32Array,1125    img: Float32Array,1126    options?: {disableNormalization: boolean, ...}1127  ): PeriodicWave;1128  createStereoPanner(): StereoPannerNode;1129  createWaveShaper(): WaveShaperNode;1130  decodeAudioData(1131    arrayBuffer: ArrayBuffer,1132    decodeSuccessCallback: (decodedData: AudioBuffer) => mixed,1133    decodeErrorCallback: (err: DOMError) => mixed1134  ): void;1135  decodeAudioData(arrayBuffer: ArrayBuffer): Promise<AudioBuffer>;1136}11371138declare class AudioTimestamp {1139  contextTime: number;1140  performanceTime: number;1141}11421143declare class AudioContext extends BaseAudioContext {1144  constructor(options?: {|1145    latencyHint?: 'balanced' | 'interactive' | 'playback' | number,1146    sampleRate?: number,1147  |}): AudioContext;1148  baseLatency: number;1149  outputLatency: number;1150  getOutputTimestamp(): AudioTimestamp;1151  resume(): Promise<void>;1152  suspend(): Promise<void>;1153  close(): Promise<void>;1154  createMediaElementSource(1155    myMediaElement: HTMLMediaElement1156  ): MediaElementAudioSourceNode;1157  createMediaStreamSource(1158    myMediaStream: MediaStream1159  ): MediaStreamAudioSourceNode;1160  createMediaStreamTrackSource(1161    myMediaStreamTrack: MediaStreamTrack1162  ): MediaStreamTrackAudioSourceNode;1163  createMediaStreamDestination(): MediaStreamAudioDestinationNode;1164}11651166declare class OfflineAudioContext extends BaseAudioContext {1167  startRendering(): Promise<AudioBuffer>;1168  suspend(suspendTime: number): Promise<void>;1169  length: number;1170  oncomplete: (ev: OfflineAudioCompletionEvent) => mixed;1171}11721173declare class AudioNode extends EventTarget {1174  context: AudioContext;1175  numberOfInputs: number;1176  numberOfOutputs: number;1177  channelCount: number;1178  channelCountMode: 'max' | 'clamped-max' | 'explicit';1179  channelInterpretation: 'speakers' | 'discrete';1180  connect(audioNode: AudioNode, output?: number, input?: number): AudioNode;1181  connect(destination: AudioParam, output?: number): void;1182  disconnect(destination?: AudioNode, output?: number, input?: number): void;1183}11841185declare class AudioParam extends AudioNode {1186  value: number;1187  defaultValue: number;1188  setValueAtTime(value: number, startTime: number): this;1189  linearRampToValueAtTime(value: number, endTime: number): this;1190  exponentialRampToValueAtTime(value: number, endTime: number): this;1191  setTargetAtTime(1192    target: number,1193    startTime: number,1194    timeConstant: number1195  ): this;1196  setValueCurveAtTime(1197    values: Float32Array,1198    startTime: number,1199    duration: number1200  ): this;1201  cancelScheduledValues(startTime: number): this;1202}12031204declare class AudioDestinationNode extends AudioNode {1205  maxChannelCount: number;1206}12071208declare class AudioListener extends AudioNode {1209  positionX: AudioParam;1210  positionY: AudioParam;1211  positionZ: AudioParam;1212  forwardX: AudioParam;1213  forwardY: AudioParam;1214  forwardZ: AudioParam;1215  upX: AudioParam;1216  upY: AudioParam;1217  upZ: AudioParam;1218  setPosition(x: number, y: number, c: number): void;1219  setOrientation(1220    x: number,1221    y: number,1222    z: number,1223    xUp: number,1224    yUp: number,1225    zUp: number1226  ): void;1227}12281229declare class AudioBuffer {1230  sampleRate: number;1231  length: number;1232  duration: number;1233  numberOfChannels: number;1234  getChannelData(channel: number): Float32Array;1235  copyFromChannel(1236    destination: Float32Array,1237    channelNumber: number,1238    startInChannel?: number1239  ): void;1240  copyToChannel(1241    source: Float32Array,1242    channelNumber: number,1243    startInChannel?: number1244  ): void;1245}12461247declare class AudioBufferSourceNode extends AudioNode {1248  buffer: AudioBuffer;1249  detune: AudioParam;1250  loop: boolean;1251  loopStart: number;1252  loopEnd: number;1253  playbackRate: AudioParam;1254  onended: (ev: any) => mixed;1255  start(when?: number, offset?: number, duration?: number): void;1256  stop(when?: number): void;1257}12581259declare class CanvasCaptureMediaStream extends MediaStream {1260  canvas: HTMLCanvasElement;1261  requestFrame(): void;1262}12631264type DoubleRange = {1265  max?: number,1266  min?: number,1267  ...1268};12691270type LongRange = {1271  max?: number,1272  min?: number,1273  ...1274};12751276type ConstrainBooleanParameters = {1277  exact?: boolean,1278  ideal?: boolean,1279  ...1280};12811282type ConstrainDOMStringParameters = {1283  exact?: string | string[],1284  ideal?: string | string[],1285  ...1286};12871288type ConstrainDoubleRange = {1289  ...DoubleRange,1290  exact?: number,1291  ideal?: number,1292  ...1293};12941295type ConstrainLongRange = {1296  ...LongRange,1297  exact?: number,1298  ideal?: number,1299  ...1300};13011302type MediaTrackSupportedConstraints = {|1303  width: boolean,1304  height: boolean,1305  aspectRatio: boolean,1306  frameRate: boolean,1307  facingMode: boolean,1308  resizeMode: boolean,1309  volume: boolean,1310  sampleRate: boolean,1311  sampleSize: boolean,1312  echoCancellation: boolean,1313  autoGainControl: boolean,1314  noiseSuppression: boolean,1315  latency: boolean,1316  channelCount: boolean,1317  deviceId: boolean,1318  groupId: boolean,1319|};13201321type MediaTrackConstraintSet = {1322  width?: number | ConstrainLongRange,1323  height?: number | ConstrainLongRange,1324  aspectRatio?: number | ConstrainDoubleRange,1325  frameRate?: number | ConstrainDoubleRange,1326  facingMode?: string | string[] | ConstrainDOMStringParameters,1327  resizeMode?: string | string[] | ConstrainDOMStringParameters,1328  volume?: number | ConstrainDoubleRange,1329  sampleRate?: number | ConstrainLongRange,1330  sampleSize?: number | ConstrainLongRange,1331  echoCancellation?: boolean | ConstrainBooleanParameters,1332  autoGainControl?: boolean | ConstrainBooleanParameters,1333  noiseSuppression?: boolean | ConstrainBooleanParameters,1334  latency?: number | ConstrainDoubleRange,1335  channelCount?: number | ConstrainLongRange,1336  deviceId?: string | string[] | ConstrainDOMStringParameters,1337  groupId?: string | string[] | ConstrainDOMStringParameters,1338  ...1339};13401341type MediaTrackConstraints = {1342  ...MediaTrackConstraintSet,1343  advanced?: Array<MediaTrackConstraintSet>,1344  ...1345};13461347type DisplayMediaStreamConstraints = {1348  video?: boolean | MediaTrackConstraints,1349  audio?: boolean | MediaTrackConstraints,1350  ...1351};13521353type MediaStreamConstraints = {1354  audio?: boolean | MediaTrackConstraints,1355  video?: boolean | MediaTrackConstraints,1356  peerIdentity?: string,1357  ...1358};13591360type MediaTrackSettings = {1361  aspectRatio?: number,1362  deviceId?: string,1363  displaySurface?: 'application' | 'browser' | 'monitor' | 'window',1364  echoCancellation?: boolean,1365  facingMode?: string,1366  frameRate?: number,1367  groupId?: string,1368  height?: number,1369  logicalSurface?: boolean,1370  sampleRate?: number,1371  sampleSize?: number,1372  volume?: number,1373  width?: number,1374  ...1375};13761377type MediaTrackCapabilities = {1378  aspectRatio?: number | DoubleRange,1379  deviceId?: string,1380  echoCancellation?: boolean[],1381  facingMode?: string,1382  frameRate?: number | DoubleRange,1383  groupId?: string,1384  height?: number | LongRange,1385  sampleRate?: number | LongRange,1386  sampleSize?: number | LongRange,1387  volume?: number | DoubleRange,1388  width?: number | LongRange,1389  ...1390};13911392declare class MediaDevices extends EventTarget {1393  ondevicechange: (ev: any) => mixed;1394  enumerateDevices: () => Promise<Array<MediaDeviceInfo>>;1395  getSupportedConstraints: () => MediaTrackSupportedConstraints;1396  getDisplayMedia: (1397    constraints?: DisplayMediaStreamConstraints1398  ) => Promise<MediaStream>;1399  getUserMedia: (constraints: MediaStreamConstraints) => Promise<MediaStream>;1400}14011402declare class MediaDeviceInfo {1403  +deviceId: string;1404  +groupId: string;1405  +kind: 'videoinput' | 'audioinput' | 'audiooutput';1406  +label: string;1407}14081409type MediaRecorderOptions = {1410  mimeType?: string,1411  audioBitsPerSecond?: number,1412  videoBitsPerSecond?: number,1413  bitsPerSecond?: number,1414  audioBitrateMode?: 'cbr' | 'vbr',1415  ...1416};14171418declare class MediaRecorder extends EventTarget {1419  constructor(stream: MediaStream, options?: MediaRecorderOptions): void;1420  +stream: MediaStream;1421  +mimeType: string;1422  +state: 'inactive' | 'recording' | 'paused';14231424  onstart: (ev: any) => mixed;1425  onstop: (ev: any) => mixed;1426  ondataavailable: (ev: any) => mixed;1427  onpause: (ev: any) => mixed;1428  onresume: (ev: any) => mixed;1429  onerror: (ev: any) => mixed;14301431  +videoBitsPerSecond: number;1432  +audioBitsPerSecond: number;1433  +audioBitrateMode: 'cbr' | 'vbr';14341435  start(timeslice?: number): void;1436  stop(): void;1437  pause(): void;1438  resume(): void;1439  requestData(): void;14401441  static isTypeSupported(type: string): boolean;1442}14431444declare class MediaStream extends EventTarget {1445  active: boolean;1446  ended: boolean;1447  id: string;1448  onactive: (ev: any) => mixed;1449  oninactive: (ev: any) => mixed;1450  onended: (ev: any) => mixed;1451  onaddtrack: (ev: MediaStreamTrackEvent) => mixed;1452  onremovetrack: (ev: MediaStreamTrackEvent) => mixed;1453  addTrack(track: MediaStreamTrack): void;1454  clone(): MediaStream;1455  getAudioTracks(): MediaStreamTrack[];1456  getTrackById(trackid?: string): ?MediaStreamTrack;1457  getTracks(): MediaStreamTrack[];1458  getVideoTracks(): MediaStreamTrack[];1459  removeTrack(track: MediaStreamTrack): void;1460}14611462declare class MediaStreamTrack extends EventTarget {1463  enabled: boolean;1464  id: string;1465  kind: string;1466  label: string;1467  muted: boolean;1468  readonly: boolean;1469  readyState: 'live' | 'ended';1470  remote: boolean;1471  contentHint?: string;1472  onstarted: (ev: any) => mixed;1473  onmute: (ev: any) => mixed;1474  onunmute: (ev: any) => mixed;1475  onoverconstrained: (ev: any) => mixed;1476  onended: (ev: any) => mixed;1477  getConstraints(): MediaTrackConstraints;1478  applyConstraints(constraints?: MediaTrackConstraints): Promise<void>;1479  getSettings(): MediaTrackSettings;1480  getCapabilities(): MediaTrackCapabilities;1481  clone(): MediaStreamTrack;1482  stop(): void;1483}14841485declare class MediaStreamTrackEvent extends Event {1486  track: MediaStreamTrack;1487}14881489declare class MediaElementAudioSourceNode extends AudioNode {}1490declare class MediaStreamAudioSourceNode extends AudioNode {}1491declare class MediaStreamTrackAudioSourceNode extends AudioNode {}14921493declare class MediaStreamAudioDestinationNode extends AudioNode {1494  stream: MediaStream;1495}14961497// deprecated1498declare class ScriptProcessorNode extends AudioNode {1499  bufferSize: number;1500  onaudioprocess: (ev: AudioProcessingEvent) => mixed;1501}15021503declare class AnalyserNode extends AudioNode {1504  fftSize: number;1505  frequencyBinCount: number;1506  minDecibels: number;1507  maxDecibels: number;1508  smoothingTimeConstant: number;1509  getFloatFrequencyData(array: Float32Array): Float32Array;1510  getByteFrequencyData(array: Uint8Array): Uint8Array;1511  getFloatTimeDomainData(array: Float32Array): Float32Array;1512  getByteTimeDomainData(array: Uint8Array): Uint8Array;1513}15141515declare class BiquadFilterNode extends AudioNode {1516  frequency: AudioParam;1517  detune: AudioParam;1518  Q: AudioParam;1519  gain: AudioParam;1520  type:1521    | 'lowpass'1522    | 'highpass'1523    | 'bandpass'1524    | 'lowshelf'1525    | 'highshelf'1526    | 'peaking'1527    | 'notch'1528    | 'allpass';1529  getFrequencyResponse(1530    frequencyHz: Float32Array,1531    magResponse: Float32Array,1532    phaseResponse: Float32Array1533  ): void;1534}15351536declare class ChannelMergerNode extends AudioNode {}1537declare class ChannelSplitterNode extends AudioNode {}15381539type ConstantSourceOptions = {offset?: number, ...};1540declare class ConstantSourceNode extends AudioNode {1541  constructor(context: BaseAudioContext, options?: ConstantSourceOptions): void;1542  offset: AudioParam;1543  onended: (ev: any) => mixed;1544  start(when?: number): void;1545  stop(when?: number): void;1546}15471548declare class ConvolverNode extends AudioNode {1549  buffer: AudioBuffer;1550  normalize: boolean;1551}15521553declare class DelayNode extends AudioNode {1554  delayTime: number;1555}15561557declare class DynamicsCompressorNode extends AudioNode {1558  threshold: AudioParam;1559  knee: AudioParam;1560  ratio: AudioParam;1561  reduction: AudioParam;1562  attack: AudioParam;1563  release: AudioParam;1564}15651566declare class GainNode extends AudioNode {1567  gain: AudioParam;1568}15691570declare class IIRFilterNode extends AudioNode {1571  getFrequencyResponse(1572    frequencyHz: Float32Array,1573    magResponse: Float32Array,1574    phaseResponse: Float32Array1575  ): void;1576}15771578declare class OscillatorNode extends AudioNode {1579  frequency: AudioParam;1580  detune: AudioParam;1581  type: 'sine' | 'square' | 'sawtooth' | 'triangle' | 'custom';1582  start(when?: number): void;1583  stop(when?: number): void;1584  setPeriodicWave(periodicWave: PeriodicWave): void;1585  onended: (ev: any) => mixed;1586}15871588declare class StereoPannerNode extends AudioNode {1589  pan: AudioParam;1590}15911592declare class PannerNode extends AudioNode {1593  panningModel: 'equalpower' | 'HRTF';1594  distanceModel: 'linear' | 'inverse' | 'exponential';1595  refDistance: number;1596  maxDistance: number;1597  rolloffFactor: number;1598  coneInnerAngle: number;1599  coneOuterAngle: number;1600  coneOuterGain: number;1601  setPosition(x: number, y: number, z: number): void;1602  setOrientation(x: number, y: number, z: number): void;1603}16041605declare class PeriodicWave extends AudioNode {}1606declare class WaveShaperNode extends AudioNode {1607  curve: Float32Array;1608  oversample: 'none' | '2x' | '4x';1609}16101611// this part of spec is not finished yet, apparently1612// https://stackoverflow.com/questions/35296664/can-fetch-get-object-as-headers1613type HeadersInit =1614  | Headers1615  | Array<[string, string]>1616  | {[key: string]: string, ...};16171618// TODO Heades and URLSearchParams are almost the same thing.1619// Could it somehow be abstracted away?1620declare class Headers {1621  @@iterator(): Iterator<[string, string]>;1622  constructor(init?: HeadersInit): void;1623  append(name: string, value: string): void;1624  delete(name: string): void;1625  entries(): Iterator<[string, string]>;1626  forEach<This>(1627    callback: (1628      this: This,1629      value: string,1630      name: string,1631      headers: Headers1632    ) => mixed,1633    thisArg: This1634  ): void;1635  get(name: string): null | string;1636  has(name: string): boolean;1637  keys(): Iterator<string>;1638  set(name: string, value: string): void;1639  values(): Iterator<string>;1640}16411642declare class URLSearchParams {1643  @@iterator(): Iterator<[string, string]>;16441645  size: number;16461647  constructor(1648    init?:1649      | string1650      | URLSearchParams1651      | Array<[string, string]>1652      | {[string]: string, ...}1653  ): void;1654  append(name: string, value: string): void;1655  delete(name: string, value?: string): void;1656  entries(): Iterator<[string, string]>;1657  forEach<This>(1658    callback: (1659      this: This,1660      value: string,1661      name: string,1662      params: URLSearchParams1663    ) => mixed,1664    thisArg: This1665  ): void;1666  get(name: string): null | string;1667  getAll(name: string): Array<string>;1668  has(name: string, value?: string): boolean;1669  keys(): Iterator<string>;1670  set(name: string, value: string): void;1671  sort(): void;1672  values(): Iterator<string>;1673  toString(): string;1674}16751676type CacheType =1677  | 'default'1678  | 'no-store'1679  | 'reload'1680  | 'no-cache'1681  | 'force-cache'1682  | 'only-if-cached';1683type CredentialsType = 'omit' | 'same-origin' | 'include';1684type ModeType = 'cors' | 'no-cors' | 'same-origin' | 'navigate';1685type RedirectType = 'follow' | 'error' | 'manual';1686type ReferrerPolicyType =1687  | ''1688  | 'no-referrer'1689  | 'no-referrer-when-downgrade'1690  | 'same-origin'1691  | 'origin'1692  | 'strict-origin'1693  | 'origin-when-cross-origin'1694  | 'strict-origin-when-cross-origin'1695  | 'unsafe-url';16961697type ResponseType =1698  | 'basic'1699  | 'cors'1700  | 'default'1701  | 'error'1702  | 'opaque'1703  | 'opaqueredirect';17041705type BodyInit =1706  | string1707  | URLSearchParams1708  | FormData1709  | Blob1710  | ArrayBuffer1711  | $ArrayBufferView1712  | ReadableStream;17131714type RequestInfo = Request | URL | string;17151716type RequestOptions = {1717  body?: ?BodyInit,1718  cache?: CacheType,1719  credentials?: CredentialsType,1720  headers?: HeadersInit,1721  integrity?: string,1722  keepalive?: boolean,1723  method?: string,1724  mode?: ModeType,1725  redirect?: RedirectType,1726  referrer?: string,1727  referrerPolicy?: ReferrerPolicyType,1728  signal?: ?AbortSignal,1729  window?: any,1730  ...1731};17321733type ResponseOptions = {1734  status?: number,1735  statusText?: string,1736  headers?: HeadersInit,1737  ...1738};17391740declare class Response {1741  constructor(input?: ?BodyInit, init?: ResponseOptions): void;1742  clone(): Response;1743  static error(): Response;1744  static redirect(url: string, status?: number): Response;17451746  redirected: boolean;1747  type: ResponseType;1748  url: string;1749  ok: boolean;1750  status: number;1751  statusText: string;1752  headers: Headers;1753  trailer: Promise<Headers>;17541755  // Body methods and attributes1756  bodyUsed: boolean;1757  body: ?ReadableStream;17581759  arrayBuffer(): Promise<ArrayBuffer>;1760  blob(): Promise<Blob>;1761  formData(): Promise<FormData>;1762  json(): Promise<any>;1763  text(): Promise<string>;1764}17651766declare class Request {1767  constructor(input: RequestInfo, init?: RequestOptions): void;1768  clone(): Request;17691770  url: string;17711772  cache: CacheType;1773  credentials: CredentialsType;1774  headers: Headers;1775  integrity: string;1776  method: string;1777  mode: ModeType;1778  redirect: RedirectType;1779  referrer: string;1780  referrerPolicy: ReferrerPolicyType;1781  +signal: AbortSignal;17821783  // Body methods and attributes1784  bodyUsed: boolean;17851786  arrayBuffer(): Promise<ArrayBuffer>;1787  blob(): Promise<Blob>;1788  formData(): Promise<FormData>;1789  json(): Promise<any>;1790  text(): Promise<string>;1791}17921793declare function fetch(1794  input: RequestInfo,1795  init?: RequestOptions1796): Promise<Response>;17971798type TextEncoder$availableEncodings =1799  | 'utf-8'1800  | 'utf8'1801  | 'unicode-1-1-utf-8'1802  | 'utf-16be'1803  | 'utf-16'1804  | 'utf-16le';18051806declare class TextEncoder {1807  constructor(encoding?: TextEncoder$availableEncodings): void;1808  encode(buffer: string, options?: {stream: boolean, ...}): Uint8Array;1809  encoding: TextEncoder$availableEncodings;1810}18111812type TextDecoder$availableEncodings =1813  | '866'1814  | 'ansi_x3.4-1968'1815  | 'arabic'1816  | 'ascii'1817  | 'asmo-708'1818  | 'big5-hkscs'1819  | 'big5'1820  | 'chinese'1821  | 'cn-big5'1822  | 'cp1250'1823  | 'cp1251'1824  | 'cp1252'1825  | 'cp1253'1826  | 'cp1254'1827  | 'cp1255'1828  | 'cp1256'1829  | 'cp1257'1830  | 'cp1258'1831  | 'cp819'1832  | 'cp866'1833  | 'csbig5'1834  | 'cseuckr'1835  | 'cseucpkdfmtjapanese'1836  | 'csgb2312'1837  | 'csibm866'1838  | 'csiso2022jp'1839  | 'csiso2022kr'1840  | 'csiso58gb231280'1841  | 'csiso88596e'1842  | 'csiso88596i'1843  | 'csiso88598e'1844  | 'csiso88598i'1845  | 'csisolatin1'1846  | 'csisolatin2'1847  | 'csisolatin3'1848  | 'csisolatin4'1849  | 'csisolatin5'1850  | 'csisolatin6'1851  | 'csisolatin9'1852  | 'csisolatinarabic'1853  | 'csisolatincyrillic'1854  | 'csisolatingreek'1855  | 'csisolatinhebrew'1856  | 'cskoi8r'1857  | 'csksc56011987'1858  | 'csmacintosh'1859  | 'csshiftjis'1860  | 'cyrillic'1861  | 'dos-874'1862  | 'ecma-114'1863  | 'ecma-118'1864  | 'elot_928'1865  | 'euc-jp'1866  | 'euc-kr'1867  | 'gb_2312-80'1868  | 'gb_2312'1869  | 'gb18030'1870  | 'gb2312'1871  | 'gbk'1872  | 'greek'1873  | 'greek8'1874  | 'hebrew'1875  | 'hz-gb-2312'1876  | 'ibm819'1877  | 'ibm866'1878  | 'iso_8859-1:1987'1879  | 'iso_8859-1'1880  | 'iso_8859-2:1987'1881  | 'iso_8859-2'1882  | 'iso_8859-3:1988'1883  | 'iso_8859-3'1884  | 'iso_8859-4:1988'1885  | 'iso_8859-4'1886  | 'iso_8859-5:1988'1887  | 'iso_8859-5'1888  | 'iso_8859-6:1987'1889  | 'iso_8859-6'1890  | 'iso_8859-7:1987'1891  | 'iso_8859-7'1892  | 'iso_8859-8:1988'1893  | 'iso_8859-8'1894  | 'iso_8859-9:1989'1895  | 'iso_8859-9'1896  | 'iso-2022-cn-ext'1897  | 'iso-2022-cn'1898  | 'iso-2022-jp'1899  | 'iso-2022-kr'1900  | 'iso-8859-1'1901  | 'iso-8859-10'1902  | 'iso-8859-11'1903  | 'iso-8859-13'1904  | 'iso-8859-14'1905  | 'iso-8859-15'1906  | 'iso-8859-16'1907  | 'iso-8859-2'1908  | 'iso-8859-3'1909  | 'iso-8859-4'1910  | 'iso-8859-5'1911  | 'iso-8859-6-e'1912  | 'iso-8859-6-i'1913  | 'iso-8859-6'1914  | 'iso-8859-7'1915  | 'iso-8859-8-e'1916  | 'iso-8859-8-i'1917  | 'iso-8859-8'1918  | 'iso-8859-9'1919  | 'iso-ir-100'1920  | 'iso-ir-101'1921  | 'iso-ir-109'1922  | 'iso-ir-110'1923  | 'iso-ir-126'1924  | 'iso-ir-127'1925  | 'iso-ir-138'1926  | 'iso-ir-144'1927  | 'iso-ir-148'1928  | 'iso-ir-149'1929  | 'iso-ir-157'1930  | 'iso-ir-58'1931  | 'iso8859-1'1932  | 'iso8859-10'1933  | 'iso8859-11'1934  | 'iso8859-13'1935  | 'iso8859-14'1936  | 'iso8859-15'1937  | 'iso8859-2'1938  | 'iso8859-3'1939  | 'iso8859-4'1940  | 'iso8859-6'1941  | 'iso8859-7'1942  | 'iso8859-8'1943  | 'iso8859-9'1944  | 'iso88591'1945  | 'iso885910'1946  | 'iso885911'1947  | 'iso885913'1948  | 'iso885914'1949  | 'iso885915'1950  | 'iso88592'1951  | 'iso88593'1952  | 'iso88594'1953  | 'iso88595'1954  | 'iso88596'1955  | 'iso88597'1956  | 'iso88598'1957  | 'iso88599'1958  | 'koi'1959  | 'koi8_r'1960  | 'koi8-r'1961  | 'koi8-u'1962  | 'koi8'1963  | 'korean'1964  | 'ks_c_5601-1987'1965  | 'ks_c_5601-1989'1966  | 'ksc_5601'1967  | 'ksc5601'1968  | 'l1'1969  | 'l2'1970  | 'l3'1971  | 'l4'1972  | 'l5'1973  | 'l6'1974  | 'l9'1975  | 'latin1'1976  | 'latin2'1977  | 'latin3'1978  | 'latin4'1979  | 'latin5'1980  | 'latin6'1981  | 'latin9'1982  | 'logical'1983  | 'mac'1984  | 'macintosh'1985  | 'ms_kanji'1986  | 'shift_jis'1987  | 'shift-jis'1988  | 'sjis'1989  | 'sun_eu_greek'1990  | 'tis-620'1991  | 'unicode-1-1-utf-8'1992  | 'us-ascii'1993  | 'utf-16'1994  | 'utf-16be'1995  | 'utf-16le'1996  | 'utf-8'1997  | 'utf8'1998  | 'visual'1999  | 'windows-1250'2000  | 'windows-1251'

Code quality findings 15

Use let or const to avoid scope issues and hoisting
info correctness var-declaration
declare var screen: Screen;
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
declare var crypto: Crypto;
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
declare var window: any;
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
declare var navigator: Navigator;
Ensure try blocks have corresponding catch or finally blocks
info correctness try-without-catch
declare class PerformanceEntry {
Ensure try blocks have corresponding catch or finally blocks
info correctness try-without-catch
declare class PerformanceResourceTiming extends PerformanceEntry {
Ensure try blocks have corresponding catch or finally blocks
info correctness try-without-catch
declare class PerformanceEventTiming extends PerformanceEntry {
Ensure try blocks have corresponding catch or finally blocks
info correctness try-without-catch
declare class TaskAttributionTiming extends PerformanceEntry {
Ensure try blocks have corresponding catch or finally blocks
info correctness try-without-catch
declare class PerformanceLongTaskTiming extends PerformanceEntry {
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
declare var performance: Performance;
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
declare var history: History;
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
declare var location: Location;
Ensure try blocks have corresponding catch or finally blocks
info correctness try-without-catch
declare interface ResizeObserverEntry {
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
declare var matchMedia: string => MediaQueryList;
Use let or const to avoid scope issues and hoisting
info correctness var-declaration
declare var speechSynthesis: SpeechSynthesis;

Get this view in your editor

Same data, no extra tab — call code_get_file + code_get_findings over MCP from Claude/Cursor/Copilot.