/// import FormData = require("form-data"); import { RequestOptions } from "http"; import { URL, URLSearchParams } from "url"; import { AbortSignal } from "./externals"; declare class Request extends Body { constructor(input: RequestInfo, init?: RequestInit); clone(): Request; context: RequestContext; headers: Headers; method: string; redirect: RequestRedirect; referrer: string; url: string; // node-fetch extensions to the whatwg/fetch spec agent?: RequestOptions["agent"] | ((parsedUrl: URL) => RequestOptions["agent"]); compress: boolean; counter: number; follow: number; hostname: string; port?: number | undefined; protocol: string; size: number; timeout: number; } interface RequestInit { // whatwg/fetch standard options body?: BodyInit | undefined; headers?: HeadersInit | undefined; method?: string | undefined; redirect?: RequestRedirect | undefined; signal?: AbortSignal | null | undefined; // node-fetch extensions agent?: RequestOptions["agent"] | ((parsedUrl: URL) => RequestOptions["agent"]); // =null http.Agent instance, allows custom proxy, certificate etc. compress?: boolean | undefined; // =true support gzip/deflate content encoding. false to disable follow?: number | undefined; // =20 maximum redirect count. 0 to not follow redirect size?: number | undefined; // =0 maximum response body size in bytes. 0 to disable timeout?: number | undefined; // =0 req/res timeout in ms, it resets on redirect. 0 to disable (OS limit applies) // node-fetch does not support mode, cache or credentials options } type RequestContext = | "audio" | "beacon" | "cspreport" | "download" | "embed" | "eventsource" | "favicon" | "fetch" | "font" | "form" | "frame" | "hyperlink" | "iframe" | "image" | "imageset" | "import" | "internal" | "location" | "manifest" | "object" | "ping" | "plugin" | "prefetch" | "script" | "serviceworker" | "sharedworker" | "style" | "subresource" | "track" | "video" | "worker" | "xmlhttprequest" | "xslt"; type RequestMode = "cors" | "no-cors" | "same-origin"; type RequestRedirect = "error" | "follow" | "manual"; type RequestCredentials = "omit" | "include" | "same-origin"; type RequestCache = | "default" | "force-cache" | "no-cache" | "no-store" | "only-if-cached" | "reload"; declare class Headers implements Iterable<[string, string]> { constructor(init?: HeadersInit); forEach(callback: (value: string, name: string) => void): void; append(name: string, value: string): void; delete(name: string): void; get(name: string): string | null; has(name: string): boolean; raw(): { [k: string]: string[] }; set(name: string, value: string): void; // Iterable methods entries(): IterableIterator<[string, string]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.iterator](): Iterator<[string, string]>; } type BlobPart = ArrayBuffer | ArrayBufferView | Blob | string; interface BlobOptions { type?: string | undefined; endings?: "transparent" | "native" | undefined; } declare class Blob { constructor(blobParts?: BlobPart[], options?: BlobOptions); readonly type: string; readonly size: number; slice(start?: number, end?: number): Blob; text(): Promise; arrayBuffer(): Promise; } declare class Body { constructor(body?: any, opts?: { size?: number | undefined; timeout?: number | undefined }); arrayBuffer(): Promise; blob(): Promise; body: NodeJS.ReadableStream; bodyUsed: boolean; buffer(): Promise; json(): Promise; size: number; text(): Promise; textConverted(): Promise; timeout: number; } interface SystemError extends Error { code?: string | undefined; } declare class AbortError extends Error { readonly name: "AbortError"; constructor(message: string); readonly type: "aborted"; } declare class FetchError extends Error { name: "FetchError"; constructor(message: string, type: string, systemError?: SystemError); type: string; code?: string | undefined; errno?: string | undefined; } declare class Response extends Body { constructor(body?: BodyInit, init?: ResponseInit); static error(): Response; static redirect(url: string, status: number): Response; clone(): Response; headers: Headers; ok: boolean; redirected: boolean; status: number; statusText: string; type: ResponseType; url: string; } type ResponseType = | "basic" | "cors" | "default" | "error" | "opaque" | "opaqueredirect"; interface ResponseInit { headers?: HeadersInit | undefined; size?: number | undefined; status?: number | undefined; statusText?: string | undefined; timeout?: number | undefined; url?: string | undefined; counter?: number | undefined; } interface URLLike { href: string; } type HeadersInit = Headers | string[][] | { [key: string]: string | string[] }; type BodyInit = | ArrayBuffer | ArrayBufferView | NodeJS.ReadableStream | string | URLSearchParams | FormData; type RequestInfo = string | URLLike | Request; declare function fetch( url: RequestInfo, init?: RequestInit, ): Promise; declare namespace fetch { export { AbortError, Blob, Body, BodyInit, FetchError, Headers, HeadersInit, // HeaderInit is exported to support backwards compatibility. See PR #34382 HeadersInit as HeaderInit, Request, RequestCache, RequestContext, RequestCredentials, RequestInfo, RequestInit, RequestMode, RequestRedirect, Response, ResponseInit, ResponseType, }; export function isRedirect(code: number): boolean; import _default = fetch; export { _default as default }; } export = fetch;