diff --git a/isomorphic-fetch/isomorphic-fetch-tests.ts b/isomorphic-fetch/isomorphic-fetch-tests.ts
index ddf11f84fe..fefabf2080 100644
--- a/isomorphic-fetch/isomorphic-fetch-tests.ts
+++ b/isomorphic-fetch/isomorphic-fetch-tests.ts
@@ -1,4 +1,5 @@
///
+///
import fetchImportedViaCommonJS = require('isomorphic-fetch');
import * as fetchImportedViaES6Module from 'isomorphic-fetch';
diff --git a/isomorphic-fetch/isomorphic-fetch.d.ts b/isomorphic-fetch/isomorphic-fetch.d.ts
index 19754db0f1..41b63970b3 100644
--- a/isomorphic-fetch/isomorphic-fetch.d.ts
+++ b/isomorphic-fetch/isomorphic-fetch.d.ts
@@ -3,48 +3,53 @@
// Definitions by: Todd Lucas
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
-declare enum 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", "subresource", "style", "track", "video", "worker",
- "xmlhttprequest", "xslt"
-}
-declare enum RequestMode { "same-origin", "no-cors", "cors" }
-declare enum RequestCredentials { "omit", "same-origin", "include" }
-declare enum RequestCache {
- "default", "no-store", "reload", "no-cache", "force-cache",
- "only-if-cached"
-}
-declare enum ResponseType { "basic", "cors", "default", "error", "opaque" }
+type RequestType = "" | "audio" | "font" | "image" | "script" | "style" |
+ "track" | "video";
+type RequestDestination = "" | "document" | "embed" | "font" | "image" |
+ "manifest" | "media" | "object" | "report" | "script" | "serviceworker" |
+ "sharedworker" | "style" | "worker" | "xslt";
+type RequestMode = "navigate" | "same-origin" | "no-cors" | "cors";
+type RequestCredentials = "omit" | "same-origin" | "include";
+type RequestCache =
+ "default" | "no-store" | "reload" | "no-cache" | "force-cache" |
+ "only-if-cached";
+type RequestRedirect = "follow" | "error" | "manual";
-declare type HeaderInit = Headers | Array;
-declare type BodyInit = ArrayBuffer | ArrayBufferView | Blob | FormData | string;
-declare type RequestInfo = Request | string;
+type ResponseType = "basic" | "cors" | "default" | "error" | "opaque" |
+ "opaqueredirect";
-interface RequestInit {
- method?: string;
- headers?: HeaderInit | { [index: string]: string };
- body?: BodyInit;
- mode?: string | RequestMode;
- credentials?: string | RequestCredentials;
- cache?: string | RequestCache;
-}
+type ReferrerPolicy = "" | "no-referrer" | "no-referrer-when-downgrade" |
+ "same-origin" | "origin" | "strict-origin" | "origin-when-cross-origin" |
+ "strict-origin-when-cross-origin" | "unsafe-url";
interface IHeaders {
- get(name: string): string;
- getAll(name: string): Array;
- has(name: string): boolean;
-}
-
-declare class Headers implements IHeaders {
append(name: string, value: string): void;
- delete(name: string):void;
+ delete(name: string): void;
get(name: string): string;
getAll(name: string): Array;
has(name: string): boolean;
set(name: string, value: string): void;
+
+ // TODO: iterable;
+ forEach(callback: (value: string, index: number, headers: IHeaders) => void, thisArg?: any): void;
+ // NOTE: The following are supported by whatwg-fetch but not node-fetch.
+ // entries(): IterableIterator<[string, string]>;
+ // keys(): IterableIterator;
+ // values(): IterableIterator;
+}
+
+type HeadersInit = Headers | Array | { [index: string]: string };
+
+declare class Headers implements IHeaders {
+ constructor(init?: HeadersInit);
+ append(name: string, value: string): void;
+ delete(name: string): void;
+ get(name: string): string;
+ getAll(name: string): Array;
+ has(name: string): boolean;
+ set(name: string, value: string): void;
+
+ forEach(callback: (value: string, index: number, headers: IHeaders) => void, thisArg?: any): void;
}
interface IBody {
@@ -70,49 +75,109 @@ declare class Body implements IBody {
interface IRequest extends IBody {
method: string;
url: string;
- headers: Headers;
- context: string | RequestContext;
- referrer: string;
- mode: string | RequestMode;
- credentials: string | RequestCredentials;
- cache: string | RequestCache;
+ headers: IHeaders;
+
+ type: RequestType;
+ destination: RequestDestination;
+ referrer?: string;
+ referrerPolicy?: ReferrerPolicy;
+ mode: RequestMode;
+ credentials: RequestCredentials;
+ cache: RequestCache;
+ redirect?: RequestRedirect;
+ integrity?: string;
+
+ clone(): IRequest;
}
+type BodyInit = Blob | ArrayBufferView | ArrayBuffer | FormData /* | URLSearchParams */ | string;
+
+interface RequestInit {
+ method?: string;
+ headers?: HeadersInit;
+ body?: BodyInit;
+ referrer?: string;
+ referrerPolicy?: ReferrerPolicy;
+ mode?: RequestMode;
+ credentials?: RequestCredentials;
+ cache?: RequestCache;
+ redirect?: RequestRedirect;
+ integrity?: string;
+ window?: any; // can only be set to null
+}
+
+type RequestInfo = IRequest | string;
+
declare class Request extends Body implements IRequest {
- constructor(input: string | Request, init?: RequestInit);
+ constructor(input: RequestInfo, init?: RequestInit);
+
method: string;
url: string;
- headers: Headers;
- context: string | RequestContext;
+ headers: IHeaders;
+
+ type: RequestType
+ destination: RequestDestination;
referrer: string;
- mode: string | RequestMode;
- credentials: string | RequestCredentials;
- cache: string | RequestCache;
+ referrerPolicy: ReferrerPolicy;
+ mode: RequestMode;
+ credentials: RequestCredentials;
+ cache: RequestCache;
+ redirect: RequestRedirect;
+ integrity: string;
+
+ clone(): IRequest;
}
interface IResponse extends IBody {
+ type: ResponseType;
+
url: string;
+ redirected: boolean;
status: number;
statusText: string;
ok: boolean;
headers: IHeaders;
- type: string | ResponseType;
- size: number;
- timeout: number;
- redirect(url: string, status: number): IResponse;
- error(): IResponse;
+ // size: number;
+ // timeout: number;
+ body: any;
+ trailer: Promise;
+
clone(): IResponse;
}
-interface IFetchStatic {
- Promise: any;
- Headers: IHeaders
- Request: IRequest;
- Response: IResponse;
- (url: string | IRequest, init?: RequestInit): Promise;
+type ResponseBodyInit = BodyInit;
+
+interface ResponseInit {
+ status?: number;
+ statusText?: string;
+ headers?: HeadersInit;
}
-declare var fetch: IFetchStatic;
+declare class Response extends Body implements IResponse {
+ constructor(body?: ResponseBodyInit, init?: ResponseInit);
+
+ static redirect(url: string, status?: number): IResponse;
+ static error(): IResponse;
+
+ type: ResponseType
+
+ url: string;
+ redirected: boolean;
+ status: number;
+ statusText: string;
+ ok: boolean;
+ headers: IHeaders;
+ body: any;
+ trailer: Promise;
+
+ clone(): IResponse;
+}
+
+interface Window {
+ fetch(url: RequestInfo, init?: RequestInit): Promise;
+}
+
+declare var fetch: typeof window.fetch;
declare module "isomorphic-fetch" {
export = fetch;