diff --git a/isomorphic-fetch/isomorphic-fetch-tests.ts b/isomorphic-fetch/isomorphic-fetch-tests.ts new file mode 100644 index 000000000..3235912ac --- /dev/null +++ b/isomorphic-fetch/isomorphic-fetch-tests.ts @@ -0,0 +1,53 @@ +/// + +function test_isomorphicFetchTestCases() { + expectSuccess(fetch('http://localhost:3000/good'), 'Good response'); + + fetch('http://localhost:3000/bad') + .then((response: IResponse) => { + return response.text(); + }) + .catch((err) => { + }); +} + +function test_whatwgTestCases() { + var headers = new Headers(); + headers.append("Content-Type", "application/json"); + var requestOptions: RequestInit = { + method: "POST", + headers: headers, + mode: 'same-origin', + credentials: 'omit', + cache: 'default' + }; + + expectSuccess(fetch('http://localhost:3000/poster', requestOptions), 'Post response:'); + + var requestOptions: RequestInit = { + method: "POST", + headers: { + 'Content-Type': 'application/json' + } + }; + + expectSuccess(fetch('http://localhost:3000/poster', requestOptions), 'Post response:'); + + var requestOptions: RequestInit = { + method: "POST", + headers: { + 'Content-Type': 'application/json' + } + }; + var request: Request = new Request('http://localhost:3000/poster', requestOptions); + + expectSuccess(fetch(request), 'Post response:'); +} + +function expectSuccess(promise: Promise, responseText: string) { + promise.then((response: IResponse) => { + return response.text(); + }) + .then((text: string) => { + }); +} diff --git a/isomorphic-fetch/isomorphic-fetch-tests.ts.tscparams b/isomorphic-fetch/isomorphic-fetch-tests.ts.tscparams new file mode 100644 index 000000000..f5c1d1215 --- /dev/null +++ b/isomorphic-fetch/isomorphic-fetch-tests.ts.tscparams @@ -0,0 +1 @@ +--target es6 --noImplicitAny \ No newline at end of file diff --git a/isomorphic-fetch/isomorphic-fetch.d.ts b/isomorphic-fetch/isomorphic-fetch.d.ts new file mode 100644 index 000000000..84e4c4b01 --- /dev/null +++ b/isomorphic-fetch/isomorphic-fetch.d.ts @@ -0,0 +1,119 @@ +// Type definitions for isomorphic-fetch +// Project: https://github.com/matthew-andrews/isomorphic-fetch +// Definitions by: Todd Lucas +// Definitions: https://github.com/borisyankov/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" } + +declare type HeaderInit = Headers | Array; +declare type BodyInit = Blob | FormData | string; +declare type RequestInfo = Request | string; + +interface RequestInit { + method?: string; + headers?: HeaderInit | { [index: string]: string }; + body?: BodyInit; + mode?: string | RequestMode; + credentials?: string | RequestCredentials; + cache?: string | RequestCache; +} + +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; + get(name: string): string; + getAll(name: string): Array; + has(name: string): boolean; + set(name: string, value: string): void; +} + +interface IBody { + bodyUsed: boolean; + arrayBuffer(): Promise; + blob(): Promise; + formData(): Promise; + json(): Promise; + json(): Promise; + text(): Promise; +} + +declare class Body implements IBody { + bodyUsed: boolean; + arrayBuffer(): Promise; + blob(): Promise; + formData(): Promise; + json(): Promise; + json(): Promise; + text(): Promise; +} + +interface IRequest extends IBody { + method: string; + url: string; + headers: Headers; + context: string | RequestContext; + referrer: string; + mode: string | RequestMode; + credentials: string | RequestCredentials; + cache: string | RequestCache; +} + +declare class Request extends Body implements IRequest { + constructor(input: string | Request, init?: RequestInit); + method: string; + url: string; + headers: Headers; + context: string | RequestContext; + referrer: string; + mode: string | RequestMode; + credentials: string | RequestCredentials; + cache: string | RequestCache; +} + +interface IResponse extends IBody { + url: string; + status: number; + statusText: string; + ok: boolean; + headers: IHeaders; + type: string | ResponseType; + size: number; + timeout: number; + redirect(url: string, status: number): IResponse; + error(): IResponse; + clone(): IResponse; +} + +interface IFetchStatic { + Promise: any; + Headers: IHeaders + Request: IRequest; + Response: IResponse; + (url: string | IRequest, init?: RequestInit): Promise; +} + +declare module "isomorphic-fetch" { + export default IFetchStatic; +} + +declare var fetch: IFetchStatic;