@iel/axios-ext
Version:
Extend extra functionality for axios.
49 lines (48 loc) • 1.93 kB
TypeScript
import { AxiosInstance, AxiosRequestConfig } from 'axios';
import { AxiosExtInstance } from './AxiosExt';
/**
* 是否为浅层拷贝实例标志
*/
export declare const SHALLOW_INSTANCE_KEY = "$$isShallowInstance";
/**
* 事件仓储标志
*/
export declare const EVENT_STORE_KEY = "$$AXIOS_EXT_EVENT_STORE";
declare type AxiosRequestFnType = {
(...args: Parameters<AxiosInstance>): ReturnType<AxiosInstance>;
(...args: Parameters<AxiosInstance['request']>): ReturnType<AxiosInstance>;
};
export declare type ShallowAxiosInstance = AxiosInstance & AxiosRequestFnType & {
[SHALLOW_INSTANCE_KEY]: boolean;
[EVENT_STORE_KEY]: Record<string, any>;
};
export declare type ChainShallowAxiosInstance = Partial<ShallowAxiosInstance>;
export declare type OmitChainShallowAxiosInstance<T, K> = Omit<T, K extends keyof T ? K : never> & AxiosRequestFnType;
export declare type EventStoreType = ShallowAxiosInstance[typeof EVENT_STORE_KEY];
/**
* 判断是否为 axios 实例
*/
export declare function isAxiosInstance(context: any): context is AxiosInstance;
/**
* 创建 axios 实例,用于弥补原始 axios 无法自调用触发插件规则
*/
export declare function createAxios(config?: AxiosInstance | AxiosRequestConfig): AxiosInstance & {
$axiosExt: AxiosExtInstance;
};
/**
* 创建浅层拷贝实例
*/
export declare function createShallowAxiosInstance(axiosExt: AxiosExtInstance, thisArg: ChainShallowAxiosInstance): ShallowAxiosInstance;
/**
* 获取接口完整路径
*/
export declare function getFullPath(instance: AxiosInstance, url: string): string;
/**
* 根据请求配置项获取标识
*/
export declare function getKeyByConfig(instance: AxiosInstance, config?: AxiosRequestConfig): string;
/**
* 仅挑取请求配置项常用属性
*/
export declare function pickConfig(config: AxiosRequestConfig): Pick<AxiosRequestConfig, 'method' | 'url' | 'data' | 'params'>;
export {};