Merge pull request #10899 from toddlucas/isomorphic-fetch-update

Isomorphic fetch update
This commit is contained in:
Ryan Cavanaugh
2016-08-30 20:22:57 -07:00
committed by GitHub
2 changed files with 123 additions and 57 deletions

View File

@@ -1,4 +1,5 @@
/// <reference path="isomorphic-fetch.d.ts"/>
/// <reference path="../bluebird/bluebird-2.0.d.ts" />
import fetchImportedViaCommonJS = require('isomorphic-fetch');
import * as fetchImportedViaES6Module from 'isomorphic-fetch';

View File

@@ -3,48 +3,53 @@
// Definitions by: Todd Lucas <https://github.com/toddlucas>
// 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<string>;
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<string>;
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<string>;
has(name: string): boolean;
set(name: string, value: string): void;
// TODO: iterable<string, string>;
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<string>;
// values(): IterableIterator<string>;
}
type HeadersInit = Headers | Array<string> | { [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<string>;
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<IHeaders>;
clone(): IResponse;
}
interface IFetchStatic {
Promise: any;
Headers: IHeaders
Request: IRequest;
Response: IResponse;
(url: string | IRequest, init?: RequestInit): Promise<IResponse>;
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<IHeaders>;
clone(): IResponse;
}
interface Window {
fetch(url: RequestInfo, init?: RequestInit): Promise<IResponse>;
}
declare var fetch: typeof window.fetch;
declare module "isomorphic-fetch" {
export = fetch;