/*! **************************************************************************** Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT. See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. *******************************************************************************/ export type HeadersInit = Headers | string[][] | Record; export type URLSearchParamsInit = string | string[][] | Record; type BodyInit = | Blob | BufferSource | FormData | URLSearchParams | ReadableStream | string; export type RequestInfo = Request | string; type ReferrerPolicy = | "" | "no-referrer" | "no-referrer-when-downgrade" | "origin-only" | "origin-when-cross-origin" | "unsafe-url"; export type BlobPart = BufferSource | Blob | string; type FormDataEntryValue = File | string; export type EventListenerOrEventListenerObject = | EventListener | EventListenerObject; interface Element { // TODO } export interface HTMLFormElement { // TODO } type EndingType = "tranparent" | "native"; export interface BlobPropertyBag { type?: string; ending?: EndingType; } interface AbortSignalEventMap { abort: ProgressEvent; } interface EventTarget { addEventListener( type: string, listener: EventListenerOrEventListenerObject | null, options?: boolean | AddEventListenerOptions ): void; dispatchEvent(evt: Event): boolean; removeEventListener( type: string, listener?: EventListenerOrEventListenerObject | null, options?: EventListenerOptions | boolean ): void; } export interface ProgressEventInit extends EventInit { lengthComputable?: boolean; loaded?: number; total?: number; } export interface URLSearchParams { /** * Appends a specified key/value pair as a new search parameter. */ append(name: string, value: string): void; /** * Deletes the given search parameter, and its associated value, * from the list of all search parameters. */ delete(name: string): void; /** * Returns the first value associated to the given search parameter. */ get(name: string): string | null; /** * Returns all the values association with a given search parameter. */ getAll(name: string): string[]; /** * Returns a Boolean indicating if such a search parameter exists. */ has(name: string): boolean; /** * Sets the value associated to a given search parameter to the given value. * If there were several values, delete the others. */ set(name: string, value: string): void; /** * Sort all key/value pairs contained in this object in place * and return undefined. The sort order is according to Unicode * code points of the keys. */ sort(): void; /** * Returns a query string suitable for use in a URL. */ toString(): string; /** * Iterates over each name-value pair in the query * and invokes the given function. */ forEach( callbackfn: (value: string, key: string, parent: URLSearchParams) => void, // tslint:disable-next-line:no-any thisArg?: any ): void; } interface EventListener { (evt: Event): void; } interface EventInit { bubbles?: boolean; cancelable?: boolean; composed?: boolean; } interface Event { readonly bubbles: boolean; cancelBubble: boolean; readonly cancelable: boolean; readonly composed: boolean; readonly currentTarget: EventTarget | null; readonly defaultPrevented: boolean; readonly eventPhase: number; readonly isTrusted: boolean; returnValue: boolean; readonly srcElement: Element | null; readonly target: EventTarget | null; readonly timeStamp: number; readonly type: string; deepPath(): EventTarget[]; initEvent(type: string, bubbles?: boolean, cancelable?: boolean): void; preventDefault(): void; stopImmediatePropagation(): void; stopPropagation(): void; readonly AT_TARGET: number; readonly BUBBLING_PHASE: number; readonly CAPTURING_PHASE: number; readonly NONE: number; } interface File extends Blob { readonly lastModified: number; readonly name: string; } export interface FilePropertyBag extends BlobPropertyBag { lastModified?: number; } interface ProgressEvent extends Event { readonly lengthComputable: boolean; readonly loaded: number; readonly total: number; } interface EventListenerOptions { capture?: boolean; } interface AddEventListenerOptions extends EventListenerOptions { once?: boolean; passive?: boolean; } interface AbortSignal extends EventTarget { readonly aborted: boolean; // tslint:disable-next-line:no-any onabort: ((this: AbortSignal, ev: ProgressEvent) => any) | null; addEventListener( type: K, // tslint:disable-next-line:no-any listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any, options?: boolean | AddEventListenerOptions ): void; addEventListener( type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions ): void; removeEventListener( type: K, // tslint:disable-next-line:no-any listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any, options?: boolean | EventListenerOptions ): void; removeEventListener( type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions ): void; } interface ReadableStream { readonly locked: boolean; cancel(): Promise; getReader(): ReadableStreamReader; } interface EventListenerObject { handleEvent(evt: Event): void; } interface ReadableStreamReader { cancel(): Promise; // tslint:disable-next-line:no-any read(): Promise; releaseLock(): void; } export interface FormData { append(name: string, value: string | Blob, fileName?: string): void; delete(name: string): void; get(name: string): FormDataEntryValue | null; getAll(name: string): FormDataEntryValue[]; has(name: string): boolean; set(name: string, value: string | Blob, fileName?: string): void; forEach( callbackfn: ( value: FormDataEntryValue, key: string, parent: FormData ) => void, // tslint:disable-next-line:no-any thisArg?: any ): void; } export interface Blob { readonly size: number; readonly type: string; slice(start?: number, end?: number, contentType?: string): Blob; } interface Body { readonly body: ReadableStream | null; readonly bodyUsed: boolean; arrayBuffer(): Promise; blob(): Promise; formData(): Promise; // tslint:disable-next-line:no-any json(): Promise; text(): Promise; } export interface Headers { append(name: string, value: string): void; delete(name: string): void; get(name: string): string | null; has(name: string): boolean; set(name: string, value: string): void; forEach( callbackfn: (value: string, key: string, parent: Headers) => void, // tslint:disable-next-line:no-any thisArg?: any ): void; } type RequestCache = | "default" | "no-store" | "reload" | "no-cache" | "force-cache" | "only-if-cached"; type RequestCredentials = "omit" | "same-origin" | "include"; type RequestDestination = | "" | "audio" | "audioworklet" | "document" | "embed" | "font" | "image" | "manifest" | "object" | "paintworklet" | "report" | "script" | "sharedworker" | "style" | "track" | "video" | "worker" | "xslt"; type RequestMode = "navigate" | "same-origin" | "no-cors" | "cors"; type RequestRedirect = "follow" | "error" | "manual"; type ResponseType = | "basic" | "cors" | "default" | "error" | "opaque" | "opaqueredirect"; export interface RequestInit { body?: BodyInit | null; cache?: RequestCache; credentials?: RequestCredentials; headers?: HeadersInit; integrity?: string; keepalive?: boolean; method?: string; mode?: RequestMode; redirect?: RequestRedirect; referrer?: string; referrerPolicy?: ReferrerPolicy; signal?: AbortSignal | null; // tslint:disable-next-line:no-any window?: any; } export interface ResponseInit { headers?: HeadersInit; status?: number; statusText?: string; } export interface Request extends Body { /** * Returns the cache mode associated with request, * which is a string indicating how the the request will interact * with the browser's cache when fetching. */ readonly cache: RequestCache; /** * Returns the credentials mode associated with request, which is a string * indicating whether credentials will be sent with the request always, never, * or only when sent to a same-origin URL. */ readonly credentials: RequestCredentials; /** * Returns the kind of resource requested by request, e.g., "document" or * "script". */ readonly destination: RequestDestination; /** * Returns a Headers object consisting of the headers associated with request. * Note that headers added in the network layer by the user agent * will not be accounted for in this object, e.g., the "Host" header. */ readonly headers: Headers; /** * Returns request's subresource integrity metadata, * which is a cryptographic hash of the resource being fetched. * Its value consists of multiple hashes separated by whitespace. [SRI] */ readonly integrity: string; /** * Returns a boolean indicating whether or not request is for a history * navigation (a.k.a. back-foward navigation). */ readonly isHistoryNavigation: boolean; /** * Returns a boolean indicating whether or not requestis for a * reload navigation. */ readonly isReloadNavigation: boolean; /** * Returns a boolean indicating whether or not request can outlive * the global in which it was created. */ readonly keepalive: boolean; /** * Returns request's HTTP method, which is "GET" by default. */ readonly method: string; /** * Returns the mode associated with request, which is a string * indicating whether the request will use CORS, or will be * restricted to same-origin URLs. */ readonly mode: RequestMode; /** * Returns the redirect mode associated with request, which is a string * indicating how redirects for the request will be handled during fetching. * A request will follow redirects by default. */ readonly redirect: RequestRedirect; /** * Returns the referrer of request. Its value can be a same-origin URL if * explicitly set in init, the empty string to indicate no referrer, and * "about:client" when defaulting to the global's default. * This is used during fetching to determine the value of the `Referer` * header of the request being made. */ readonly referrer: string; /** * Returns the referrer policy associated with request. This is used during * fetching to compute the value of the request's referrer. */ readonly referrerPolicy: ReferrerPolicy; /** * Returns the signal associated with request, which is an AbortSignal * object indicating whether or not request has been aborted, * and its abort event handler. */ readonly signal: AbortSignal; /** * Returns the URL of request as a string. */ readonly url: string; clone(): Request; } export interface Response extends Body { readonly headers: Headers; readonly ok: boolean; readonly redirected: boolean; readonly status: number; readonly statusText: string; readonly trailer: Promise; readonly type: ResponseType; readonly url: string; clone(): Response; }