| // based on https://github.com/Ethan-Arrowood/undici-fetch/blob/249269714db874351589d2d364a0645d5160ae71/index.d.ts (MIT license) |
| // and https://github.com/node-fetch/node-fetch/blob/914ce6be5ec67a8bab63d68510aabf07cb818b6d/index.d.ts (MIT license) |
| /// <reference types="node" /> |
| |
| import { Blob } from 'buffer' |
| import { URL, URLSearchParams } from 'url' |
| import { ReadableStream } from 'stream/web' |
| import { FormData } from './formdata' |
| |
| import Dispatcher from './dispatcher' |
| |
| export type RequestInfo = string | URL | Request |
| |
| export declare function fetch ( |
| input: RequestInfo, |
| init?: RequestInit |
| ): Promise<Response> |
| |
| export type BodyInit = |
| | ArrayBuffer |
| | AsyncIterable<Uint8Array> |
| | Blob |
| | FormData |
| | Iterable<Uint8Array> |
| | NodeJS.ArrayBufferView |
| | URLSearchParams |
| | null |
| | string |
| |
| export interface BodyMixin { |
| readonly body: ReadableStream | null |
| readonly bodyUsed: boolean |
| |
| readonly arrayBuffer: () => Promise<ArrayBuffer> |
| readonly blob: () => Promise<Blob> |
| readonly formData: () => Promise<FormData> |
| readonly json: () => Promise<unknown> |
| readonly text: () => Promise<string> |
| } |
| |
| export interface SpecIterator<T, TReturn = any, TNext = undefined> { |
| next(...args: [] | [TNext]): IteratorResult<T, TReturn>; |
| } |
| |
| export interface SpecIterableIterator<T> extends SpecIterator<T> { |
| [Symbol.iterator](): SpecIterableIterator<T>; |
| } |
| |
| export interface SpecIterable<T> { |
| [Symbol.iterator](): SpecIterator<T>; |
| } |
| |
| export type HeadersInit = string[][] | Record<string, string | ReadonlyArray<string>> | Headers |
| |
| export declare class Headers implements SpecIterable<[string, string]> { |
| constructor (init?: HeadersInit) |
| readonly append: (name: string, value: string) => void |
| readonly delete: (name: string) => void |
| readonly get: (name: string) => string | null |
| readonly has: (name: string) => boolean |
| readonly set: (name: string, value: string) => void |
| readonly getSetCookie: () => string[] |
| readonly forEach: ( |
| callbackfn: (value: string, key: string, iterable: Headers) => void, |
| thisArg?: unknown |
| ) => void |
| |
| readonly keys: () => SpecIterableIterator<string> |
| readonly values: () => SpecIterableIterator<string> |
| readonly entries: () => SpecIterableIterator<[string, string]> |
| readonly [Symbol.iterator]: () => SpecIterator<[string, string]> |
| } |
| |
| export type RequestCache = |
| | 'default' |
| | 'force-cache' |
| | 'no-cache' |
| | 'no-store' |
| | 'only-if-cached' |
| | 'reload' |
| |
| export type RequestCredentials = 'omit' | 'include' | 'same-origin' |
| |
| type RequestDestination = |
| | '' |
| | 'audio' |
| | 'audioworklet' |
| | 'document' |
| | 'embed' |
| | 'font' |
| | 'image' |
| | 'manifest' |
| | 'object' |
| | 'paintworklet' |
| | 'report' |
| | 'script' |
| | 'sharedworker' |
| | 'style' |
| | 'track' |
| | 'video' |
| | 'worker' |
| | 'xslt' |
| |
| export interface RequestInit { |
| method?: string |
| keepalive?: boolean |
| headers?: HeadersInit |
| body?: BodyInit |
| redirect?: RequestRedirect |
| integrity?: string |
| signal?: AbortSignal | null |
| credentials?: RequestCredentials |
| mode?: RequestMode |
| referrer?: string |
| referrerPolicy?: ReferrerPolicy |
| window?: null |
| dispatcher?: Dispatcher |
| duplex?: RequestDuplex |
| } |
| |
| export type ReferrerPolicy = |
| | '' |
| | 'no-referrer' |
| | 'no-referrer-when-downgrade' |
| | 'origin' |
| | 'origin-when-cross-origin' |
| | 'same-origin' |
| | 'strict-origin' |
| | 'strict-origin-when-cross-origin' |
| | 'unsafe-url'; |
| |
| export type RequestMode = 'cors' | 'navigate' | 'no-cors' | 'same-origin' |
| |
| export type RequestRedirect = 'error' | 'follow' | 'manual' |
| |
| export type RequestDuplex = 'half' |
| |
| export declare class Request implements BodyMixin { |
| constructor (input: RequestInfo, init?: RequestInit) |
| |
| readonly cache: RequestCache |
| readonly credentials: RequestCredentials |
| readonly destination: RequestDestination |
| readonly headers: Headers |
| readonly integrity: string |
| readonly method: string |
| readonly mode: RequestMode |
| readonly redirect: RequestRedirect |
| readonly referrerPolicy: string |
| readonly url: string |
| |
| readonly keepalive: boolean |
| readonly signal: AbortSignal |
| readonly duplex: RequestDuplex |
| |
| readonly body: ReadableStream | null |
| readonly bodyUsed: boolean |
| |
| readonly arrayBuffer: () => Promise<ArrayBuffer> |
| readonly blob: () => Promise<Blob> |
| readonly formData: () => Promise<FormData> |
| readonly json: () => Promise<unknown> |
| readonly text: () => Promise<string> |
| |
| readonly clone: () => Request |
| } |
| |
| export interface ResponseInit { |
| readonly status?: number |
| readonly statusText?: string |
| readonly headers?: HeadersInit |
| } |
| |
| export type ResponseType = |
| | 'basic' |
| | 'cors' |
| | 'default' |
| | 'error' |
| | 'opaque' |
| | 'opaqueredirect' |
| |
| export type ResponseRedirectStatus = 301 | 302 | 303 | 307 | 308 |
| |
| export declare class Response implements BodyMixin { |
| constructor (body?: BodyInit, init?: ResponseInit) |
| |
| readonly headers: Headers |
| readonly ok: boolean |
| readonly status: number |
| readonly statusText: string |
| readonly type: ResponseType |
| readonly url: string |
| readonly redirected: boolean |
| |
| readonly body: ReadableStream | null |
| readonly bodyUsed: boolean |
| |
| readonly arrayBuffer: () => Promise<ArrayBuffer> |
| readonly blob: () => Promise<Blob> |
| readonly formData: () => Promise<FormData> |
| readonly json: () => Promise<unknown> |
| readonly text: () => Promise<string> |
| |
| readonly clone: () => Response |
| |
| static error (): Response |
| static json(data: any, init?: ResponseInit): Response |
| static redirect (url: string | URL, status: ResponseRedirectStatus): Response |
| } |