import { AxiosRequestConfig, AxiosInstance, AxiosResponse, CancelTokenStatic, AxiosPromise, } from "axios"; export type CnOptions = { armsTrace?: any; useAxiosClass?: boolean; loginCallback?: Function; turnOffTrace?: boolean; turnOffLog?: boolean; reportResponse?: boolean; cnReportHandler?: CnReportHandler; noGlobal?: boolean; }; export type CnLogOptions = { turnOffTrace?: boolean; turnOffLog?: boolean; reportResponse?: boolean; cnReportHandler?: CnReportHandler; }; export type CnResponseInterceptor = ( response: AxiosResponse, armsTrace: any, options: CnLogOptions ) => void; export type CnRequestInterceptor = ( config: AxiosRequestConfig, armsTrace: any, options: CnLogOptions ) => void; export type CnReportData = { errorCode?: string; errorMsg?: string; extend?: object; reportResponse?: boolean; }; export type CnReportHandler = ( response: AxiosResponse ) => CnReportData | boolean; export interface CnRequestConfig extends AxiosRequestConfig { cnReportHandler?: CnReportHandler; } export type CNRequestInstanceConfig = { cnOptions: CnOptions; axiosConfig: AxiosRequestConfig; reset?: boolean; }; export type CNRequestInstance = { request: AxiosInstance; reInit: (config: CNRequestInstanceConfig) => void; }; export interface CNAxiosInstance extends AxiosInstance { (config: AxiosRequestConfig): AxiosPromise; (url: string, config?: AxiosRequestConfig): AxiosPromise; } /** * 基于axios实现的菜鸟基础request库 * * 使用文档:https://npm.alibaba-inc.com/package/@alife/cn-request * * axios介绍:https://axios-http.com/zh/docs/intro * * @param {axiosConfig} AxiosRequestConfig 初始化axios实例的配置项 * @param {cnOptions} CnOptions 菜鸟业务相关的参数 * @return cnOptions.useAxiosInstance为true返回axios实例,为false返回axios类 */ declare module "cn-request" { const _default: ( axiosConfig: AxiosRequestConfig, cnOptions: CnOptions ) => CNAxiosInstance; export default _default; export const CancelToken: CancelTokenStatic; export const cnResponseInterceptor: CnResponseInterceptor; export const cnRequestInterceptor: CnRequestInterceptor; export const cnRequestInstance: CNRequestInstance; export const request: (options: CnRequestConfig) => AxiosPromise; export const getRequest: () => CNAxiosInstance | null; }