axios-miniprogram/src/types.ts

445 lines
8.3 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-16 00:23:24 +08:00
* @LastEditTime: 2020-04-15 23:48:48
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-16 00:23:24 +08:00
*
2020-04-14 23:45:21 +08:00
*/
2020-04-16 00:23:24 +08:00
export type AxiosRequest = Omit<WechatMiniprogram.RequestOption, 'method' | 'success' | 'fail' | 'complete'> & {
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-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
*
*/
export declare type AxiosRequestDefault = Omit<AxiosRequest, 'url' | 'header' | 'cancelToken'> & {
/**
*
*/
baseURL?: string;
/**
*
*/
header?: {
/**
*
*/
common?: AnyObject;
/**
* options
*/
options?: AnyObject;
/**
* get
*/
get?: AnyObject;
/**
* head
*/
head?: AnyObject;
/**
* post
*/
post?: AnyObject;
/**
* put
*/
put?: AnyObject;
/**
* delete
*/
delete?: AnyObject;
/**
* trace
*/
trace?: AnyObject;
/**
* connect
*/
connect?: AnyObject;
};
};
/**
*
*/
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>
extends WechatMiniprogram.RequestSuccessCallbackResult {
/**
*
*/
data: T;
/**
*
*/
config: AxiosRequest;
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;
}
/**
*
*/
export declare type Interceptor<T = any> = {
/**
*
*/
resolved: InterceptorResolved<T>;
/**
*
*/
rejected: InterceptorRejected;
};
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
*/
request: InterceptorManager<AxiosRequest>;
/**
* response
*/
response: InterceptorManager<AxiosResponse>;
}
/**
* Axios
*/
export type AxiosMethodConfig = Omit<AxiosRequest, 'url'>;
/**
* Axios
2020-04-14 23:45:21 +08:00
*/
export interface Axios {
/**
2020-04-16 00:23:24 +08:00
*
*/
defaults: AxiosRequestDefault;
/**
* Axios
*/
interceptors: Interceptors;
/**
* 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-16 00:23:24 +08:00
request<T extends ResponseData>(config: AxiosRequest): 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
*/
options<T extends ResponseData>(url: string, params?: Params, config?: AxiosMethodConfig): 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
*/
get<T extends ResponseData>(url: string, params?: Params, config?: AxiosMethodConfig): 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
*/
head<T extends ResponseData>(url: string, params?: Params, config?: AxiosMethodConfig): 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
*/
post<T extends ResponseData>(url: string, data?: Data, config?: AxiosMethodConfig): 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
*/
put<T extends ResponseData>(url: string, data?: Data, config?: AxiosMethodConfig): 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
*/
delete<T extends ResponseData>(url: string, params?: Params, config?: AxiosMethodConfig): 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
*/
trace<T extends ResponseData>(url: string, params?: Data, config?: AxiosMethodConfig): 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
*/
connect<T extends ResponseData>(url: string, params?: Data, config?: AxiosMethodConfig): Promise<AxiosResponse<T>>;
2020-04-14 23:45:21 +08:00
}
2020-04-16 00:23:24 +08:00
/**
* axios
*
* , Axios
*/
2020-04-14 23:45:21 +08:00
export interface AxiosInstance extends Axios {
2020-04-16 00:23:24 +08:00
/**
*
*
* @param config
*/
<T extends ResponseData>(config: AxiosRequest): Promise<AxiosResponse<T>>;
/**
*
*
* @param url
* @param config
*/
<T extends ResponseData>(url: string, config?: AxiosMethodConfig): Promise<AxiosResponse<T>>;
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;
/**
*
*/
config: AxiosRequest;
/**
*
*/
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;
}
/**
* 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;
}