From d3a49ecfbf6d80de2774d8152fb301315e8954ff Mon Sep 17 00:00:00 2001 From: mbuesing Date: Thu, 19 Mar 2015 21:33:44 +0100 Subject: [PATCH] Add definitions for axios --- axios/axios-tests.ts | 23 ++++++ axios/axios.d.ts | 163 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 186 insertions(+) create mode 100644 axios/axios-tests.ts create mode 100644 axios/axios.d.ts diff --git a/axios/axios-tests.ts b/axios/axios-tests.ts new file mode 100644 index 0000000000..a11421e19e --- /dev/null +++ b/axios/axios-tests.ts @@ -0,0 +1,23 @@ +/// + +interface InputBody { + random: number; +} + +interface Repository { + id: number; + name: string; +} + +function convenientGet () { + axios.get("https://api.github.com/repos/mzabriskie/axios") + .then(r => console.log(r.config.data.random)); +} + +function get() { + axios({ + url: "https://api.github.com/repos/mzabriskie/axios", + method: Axios.HTTPMethod.GET, + headers: {}, + }).then(r => console.log("ID:" + r.data.id + " Name: " + r.data.name)); +} \ No newline at end of file diff --git a/axios/axios.d.ts b/axios/axios.d.ts new file mode 100644 index 0000000000..5455ba167d --- /dev/null +++ b/axios/axios.d.ts @@ -0,0 +1,163 @@ +// Type definitions for axios 0.5.2 +// Project: https://github.com/mzabriskie/axios +// Definitions by: Marcel Buesing +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module Axios { + export enum HTTPMethod { GET, PUT, POST, DELETE, CONNECT, HEAD, OPTIONS, TRACE, PATCH } + export enum ResponseType { arraybuffer, blob, document, json, text } + + /** + * - request body data type + */ + interface AxiosXHRConfigBase { + + /** + * Change the request data before it is sent to the server. + * This is only applicable for request methods 'PUT', 'POST', and 'PATCH' + * The last function in the array must return a string or an ArrayBuffer + */ + transformRequest?: (data:T) => U; + + /** + * change the response data to be made before it is passed to then/catch + */ + transformResponse?: (data:T) => U; + + /** + * custom headers to be sent + */ + headers?: Object; + + /** + * URL parameters to be sent with the request + */ + params?: Object; + + /** + * indicates whether or not cross-site Access-Control requests + * should be made using credentials + */ + withCredentials?: boolean; + + /** + * indicates the type of data that the server will respond with + * options are 'arraybuffer', 'blob', 'document', 'json', 'text' + */ + responseType?: Axios.ResponseType; + + /** + * name of the cookie to use as a value for xsrf token + */ + xsrfCookieName?: string; + + /** + * name of the http header that carries the xsrf token value + */ + xsrfHeaderName?: string; + + } + + /** + * - request body data type + */ + interface AxiosXHRConfig extends AxiosXHRConfigBase { + /** + * server URL that will be used for the request + */ + url: string; + + /** + * request method to be used when making the request + */ + method?: Axios.HTTPMethod; + + /** + * data to be sent as the request body + * Only applicable for request methods 'PUT', 'POST', and 'PATCH' + * When no `transformRequest` is set, must be a string, an ArrayBuffer or a hash + */ + data?: T; + } + + /** + * - expected response type, + * - request body data type + */ + interface AxiosXHR { + /** + * Response that was provided by the server + */ + data: T; + + /** + * HTTP status code from the server response + */ + status: number; + + /** + * HTTP status message from the server response + */ + statusText: string; + + /** + * headers that the server responded with + */ + headers: Object; + + /** + * config that was provided to `axios` for the request + */ + config: AxiosXHRConfig; + } + + /** + * - expected response type, + * - request body data type + */ + interface AxiosStatic { + + (config: AxiosXHRConfig): Promise>; + + new (config: AxiosXHRConfig): Promise>; + + /** + * convenience alias, method = GET + */ + get(url: string, config?: AxiosXHRConfigBase): Promise>; + + + /** + * convenience alias, method = DELETE + */ + delete(url: string, config?: AxiosXHRConfigBase): Promise>; + + /** + * convenience alias, method = HEAD + */ + head(url: string, config?: AxiosXHRConfigBase): Promise>; + + /** + * convenience alias, method = POST + */ + post(url: string, data?: any, config?: AxiosXHRConfigBase): Promise>; + + /** + * convenience alias, method = PUT + */ + put(url: string, data?: any, config?: AxiosXHRConfigBase): Promise>; + + /** + * convenience alias, method = PATCH + */ + patch(url: string, data?: any, config?: AxiosXHRConfigBase): Promise>; + } +} + +declare var axios: Axios.AxiosStatic; + +declare module "axios" { + export = axios; +}