axios-miniprogram/src/types.ts

551 lines
10 KiB
TypeScript
Raw Normal View History

2020-04-14 23:45:21 +08:00
/*
* @Author: early-autumn
* @Date: 2020-04-13 15:23:53
* @LastEditors: early-autumn
2020-04-17 00:18:59 +08:00
* @LastEditTime: 2020-04-17 00:06:34
2020-04-14 23:45:21 +08:00
*/
import 'miniprogram-api-typings';
2020-04-16 00:23:24 +08:00
/**
*
*/
2020-04-14 23:45:21 +08:00
export declare type AnyObject = Record<string, any>;
2020-04-16 00:23:24 +08:00
/**
*
*/
export declare type MethodType = WechatMiniprogram.RequestOption['method'];
2020-04-14 23:45:21 +08:00
2020-04-16 00:23:24 +08:00
/**
* Axios
*/
export declare type Method = 'options' | 'get' | 'head' | 'post' | 'put' | 'delete' | 'trace' | 'connect' | MethodType;
/**
* Axios
*/
export declare type Params = AnyObject;
2020-04-14 23:45:21 +08:00
/**
2020-04-16 00:23:24 +08:00
* Axios
2020-04-14 23:45:21 +08:00
*/
2020-04-16 00:23:24 +08:00
export declare type Data = WechatMiniprogram.RequestOption['data'];
2020-04-14 23:45:21 +08:00
2020-04-17 00:18:59 +08:00
/**
* Axios
*/
export interface Headers {
/**
*
*/
common?: Record<string, string>;
/**
* options
*/
options?: Record<string, string>;
/**
* get
*/
get?: Record<string, string>;
/**
* head
*/
head?: Record<string, string>;
/**
* post
*/
post?: Record<string, string>;
/**
* put
*/
put?: Record<string, string>;
/**
* delete
*/
delete?: Record<string, string>;
/**
* trace
*/
trace?: Record<string, string>;
/**
* connect
*/
connect?: Record<string, string>;
/**
*
*/
[x: string]: string | Record<string, string> | undefined;
}
export interface TransformData {
(data: Data, headers?: Headers): Data;
}
2020-04-14 23:45:21 +08:00
/**
2020-04-16 00:23:24 +08:00
*
2020-04-14 23:45:21 +08:00
*/
2020-04-17 00:18:59 +08:00
export declare interface AxiosRequestConfig
extends Pick<WechatMiniprogram.RequestOption, 'dataType' | 'responseType' | 'timeout'> {
/**
*
*/
baseURL?: string;
/**
*
*/
url?: string;
2020-04-14 23:45:21 +08:00
/** HTTP
*
*
* - 'options': HTTP OPTIONS;
2020-04-16 00:23:24 +08:00
* - 'get': HTTP GET;
* - 'head': HTTP HEAD;
* - 'post': HTTP POST;
* - 'put': HTTP PUT;
* - 'delete': HTTP DELETE;
* - 'trace': HTTP TRACE;
2020-04-14 23:45:21 +08:00
* - 'connect': HTTP CONNECT;
2020-04-16 00:23:24 +08:00
* - 'OPTIONS': HTTP OPTIONS;
* - 'GET': HTTP GET;
* - 'HEAD': HTTP HEAD;
* - 'POST': HTTP POST;
* - 'PUT': HTTP PUT;
* - 'DELETE': HTTP DELETE;
* - 'TRACE': HTTP TRACE;
2020-04-14 23:45:21 +08:00
* - 'CONNECT': HTTP CONNECT;
*/
method?: Method;
2020-04-16 00:23:24 +08:00
2020-04-14 23:45:21 +08:00
/**
2020-04-16 00:23:24 +08:00
*
2020-04-14 23:45:21 +08:00
*/
params?: Params;
2020-04-16 00:23:24 +08:00
/**
*
*/
data?: Data;
2020-04-17 00:18:59 +08:00
/**
*
*/
headers?: Headers;
/**
*
*/
transformRequest?: TransformData | TransformData[];
/**
*
*/
transformResponse?: TransformData | TransformData[];
2020-04-14 23:45:21 +08:00
/**
* http2
*/
enableHttp2?: boolean;
2020-04-16 00:23:24 +08:00
2020-04-14 23:45:21 +08:00
/**
* quic
*/
enableQuic?: boolean;
2020-04-16 00:23:24 +08:00
2020-04-14 23:45:21 +08:00
/**
* cache
*/
enableCache?: boolean;
2020-04-16 00:23:24 +08:00
2020-04-14 23:45:21 +08:00
/**
*
*/
cancelToken?: CancelToken;
2020-04-16 00:23:24 +08:00
/**
2020-04-17 00:18:59 +08:00
*
2020-04-16 00:23:24 +08:00
*/
2020-04-17 00:18:59 +08:00
validateStatus?: (status: number) => boolean;
2020-04-16 00:23:24 +08:00
/**
2020-04-17 00:18:59 +08:00
*
*/
paramsSerializer?: (params: AnyObject) => string;
}
2020-04-16 00:23:24 +08:00
/**
*
*/
export declare type ResponseData = WechatMiniprogram.RequestSuccessCallbackResult['data'];
/**
*
2020-04-14 23:45:21 +08:00
*/
2020-04-16 00:23:24 +08:00
export interface AxiosResponse<T extends ResponseData = ResponseData>
2020-04-17 00:18:59 +08:00
extends Omit<WechatMiniprogram.RequestSuccessCallbackResult, 'header'> {
2020-04-16 00:23:24 +08:00
/**
*
*/
data: T;
2020-04-17 00:18:59 +08:00
/**
* HTTP Response Headers
*/
headers: Headers;
2020-04-16 00:23:24 +08:00
/**
*
*/
2020-04-17 00:18:59 +08:00
config: AxiosRequestConfig;
2020-04-14 23:45:21 +08:00
}
2020-04-16 00:23:24 +08:00
/**
*
*/
export interface InterceptorResolved<T = any> {
(value: T): Promise<T>;
}
2020-04-14 23:45:21 +08:00
2020-04-16 00:23:24 +08:00
/**
*
*/
export interface InterceptorRejected {
(err: any): any;
}
/**
*
*/
2020-04-17 00:18:59 +08:00
export interface Interceptor<T = any> {
2020-04-16 00:23:24 +08:00
/**
*
*/
resolved: InterceptorResolved<T>;
/**
*
*/
rejected: InterceptorRejected;
2020-04-17 00:18:59 +08:00
}
2020-04-14 23:45:21 +08:00
/**
2020-04-16 00:23:24 +08:00
*
*/
export interface InterceptorExecutor<T = any> {
(interceptor: Interceptor<T>): void;
}
/**
*
*/
export interface InterceptorManager<T = any> {
/**
*
*
* @param resolved
* @param rejected
*/
use(resolved: InterceptorResolved<T>, rejected?: InterceptorRejected): number;
/**
*
*
* @param id id
*/
eject(id: number): void;
/**
*
*
* @param executor
* @param reverse
*/
forEach(executor: InterceptorExecutor<T>, reverse?: 'reverse'): void;
}
/**
* Axios
*/
export interface Interceptors {
/**
* request
*/
2020-04-17 00:18:59 +08:00
request: InterceptorManager<AxiosRequestConfig>;
2020-04-16 00:23:24 +08:00
/**
* response
*/
response: InterceptorManager<AxiosResponse>;
}
/**
* Axios
2020-04-14 23:45:21 +08:00
*/
export interface Axios {
/**
2020-04-16 00:23:24 +08:00
*
*/
2020-04-17 00:18:59 +08:00
defaults: AxiosRequestConfig;
2020-04-16 00:23:24 +08:00
/**
* Axios
*/
interceptors: Interceptors;
2020-04-17 00:18:59 +08:00
/**
* baseURL + url + params
*
* @param config
*/
getUri(config: AxiosRequestConfig): string;
2020-04-16 00:23:24 +08:00
/**
* HTTP
2020-04-14 23:45:21 +08:00
*
2020-04-16 00:23:24 +08:00
* @param config
2020-04-14 23:45:21 +08:00
*/
2020-04-17 00:18:59 +08:00
request<T extends ResponseData>(config: AxiosRequestConfig): Promise<AxiosResponse<T>>;
2020-04-14 23:45:21 +08:00
2020-04-16 00:23:24 +08:00
/**
* HTTP OPTIONS
*
* @param url
* @param params
* @param config
*/
2020-04-17 00:18:59 +08:00
options<T extends ResponseData>(url: string, params?: Params, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
2020-04-14 23:45:21 +08:00
2020-04-16 00:23:24 +08:00
/**
* HTTP GET
*
* @param url
* @param params
* @param config
*/
2020-04-17 00:18:59 +08:00
get<T extends ResponseData>(url: string, params?: Params, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
2020-04-14 23:45:21 +08:00
2020-04-16 00:23:24 +08:00
/**
* HTTP HEAD
*
* @param url
* @param params
* @param config
*/
2020-04-17 00:18:59 +08:00
head<T extends ResponseData>(url: string, params?: Params, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
2020-04-14 23:45:21 +08:00
2020-04-16 00:23:24 +08:00
/**
* HTTP POST
*
* @param url
* @param data
* @param config
*/
2020-04-17 00:18:59 +08:00
post<T extends ResponseData>(url: string, data?: Data, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
2020-04-14 23:45:21 +08:00
2020-04-16 00:23:24 +08:00
/**
* HTTP PUT
*
* @param url
* @param data
* @param config
*/
2020-04-17 00:18:59 +08:00
put<T extends ResponseData>(url: string, data?: Data, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
2020-04-14 23:45:21 +08:00
2020-04-16 00:23:24 +08:00
/**
* HTTP DELETE
*
* @param url
* @param params
* @param config
*/
2020-04-17 00:18:59 +08:00
delete<T extends ResponseData>(url: string, params?: Params, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
2020-04-14 23:45:21 +08:00
2020-04-16 00:23:24 +08:00
/**
* HTTP TRACE
*
* @param url
* @param params
* @param config
*/
2020-04-17 00:18:59 +08:00
trace<T extends ResponseData>(url: string, params?: Data, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
2020-04-14 23:45:21 +08:00
2020-04-16 00:23:24 +08:00
/**
* HTTP CONNECT
*
* @param url
* @param params
* @param config
*/
2020-04-17 00:18:59 +08:00
connect<T extends ResponseData>(url: string, params?: Data, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
2020-04-14 23:45:21 +08:00
}
2020-04-16 00:23:24 +08:00
/**
2020-04-17 00:18:59 +08:00
* Axios
2020-04-16 00:23:24 +08:00
*/
2020-04-17 00:18:59 +08:00
export interface AxiosConstructor {
new (config: AxiosRequestConfig): Axios;
2020-04-14 23:45:21 +08:00
}
2020-04-16 00:23:24 +08:00
/**
* AxiosError Error
*/
export interface AxiosError extends Error {
/**
* Axios
*/
isAxiosError: boolean;
/**
*
*/
2020-04-17 00:18:59 +08:00
config: AxiosRequestConfig;
2020-04-16 00:23:24 +08:00
/**
*
*/
response?: AxiosResponse;
}
2020-04-14 23:45:21 +08:00
/**
*
*/
export interface Cancel {
/**
2020-04-16 00:23:24 +08:00
*
2020-04-14 23:45:21 +08:00
*/
message?: string;
2020-04-16 00:23:24 +08:00
2020-04-14 23:45:21 +08:00
/**
*
*/
toString(): string;
}
/**
*
*/
export interface CancelAction {
(message?: string): void;
}
/**
*
*/
export interface CancelExecutor {
(cancel: CancelAction): void;
}
/**
*
*/
export interface CancelToken {
/**
*
*/
reason?: Cancel;
2020-04-16 00:23:24 +08:00
2020-04-14 23:45:21 +08:00
/**
2020-04-16 00:23:24 +08:00
*
2020-04-14 23:45:21 +08:00
*/
listener: Promise<Cancel>;
2020-04-16 00:23:24 +08:00
2020-04-14 23:45:21 +08:00
/**
2020-04-16 00:23:24 +08:00
* ,
2020-04-14 23:45:21 +08:00
*/
throwIfRequested(): void;
}
2020-04-17 00:18:59 +08:00
/**
*
*/
export interface CancelTokenConstructor {
new (executor: CancelExecutor): CancelToken;
/**
* CancelTokenSource
*
* CancelTokenSource.token CancelToken
*
* CancelTokenSource.cancel CancelAction
*
* CancelTokenSource.cancel('这里可以填写您的错误信息')
*
* CancelTokenSource.token
*/
source(): CancelTokenSource;
}
2020-04-14 23:45:21 +08:00
/**
* source
*/
export interface CancelTokenSource {
2020-04-16 00:23:24 +08:00
/**
*
*/
2020-04-14 23:45:21 +08:00
token: CancelToken;
2020-04-16 00:23:24 +08:00
/**
*
*/
2020-04-14 23:45:21 +08:00
cancel: CancelAction;
}
2020-04-17 00:18:59 +08:00
/**
* axios
*
* , Axios
*/
export interface AxiosInstance extends Axios {
/**
*
*
* @param config
*/
<T extends ResponseData>(config: AxiosRequestConfig): Promise<AxiosResponse<T>>;
/**
*
*
* @param url
* @param config
*/
<T extends ResponseData>(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
/**
* Axios
*/
Axios: AxiosConstructor;
/**
* Axios
*
* @param config
*/
create(config: AxiosRequestConfig): Axios;
/**
* Cancel
*/
Cancel: Cancel;
/**
* CancelToken
*/
CancelToken: CancelTokenConstructor;
/**
*
*
* @param value
*/
isCancel: (value: any) => boolean;
}