import * as _axios from 'axios'; import _axios__default, { InternalAxiosRequestConfig, AxiosResponse, AxiosRequestConfig } from 'axios'; export { default as axiosDef } from 'axios'; import Cookies from 'js-cookie'; /** * 缓存对象 */ interface CacheItem { key: string; /** 过期时间戳 */ expires?: number; /** 缓存的 promise */ promise?: Promise; /** 缓存的 axios config 配置 */ config?: InternalAxiosRequestConfig; resolve: (d: any) => void; reject: (err: any) => void; } declare const TOKEN = "token"; declare const axios: _axios.AxiosInstance; interface AxiosRequestConfigWithCache extends InternalAxiosRequestConfig { cache?: CacheItem; } type AxiosResponseCus = AxiosResponse & { config: AxiosRequestConfigWithCache; }; /** * setToken 选项接口 */ interface SetTokenOptions { /** 是否同时设置 cookie */ hasCookie?: boolean; /** cookie 属性配置 */ cookieAttrs?: Cookies.CookieAttributes; } /** * getToken 选项接口 */ interface GetTokenOptions { /** 是否从 cookie 获取 */ hasCookie?: boolean; } /** * 处理错误回调函数的选项接口 */ interface HandleErrCbOptions { /** 直接替换回调函数 */ replaceErrCb?: boolean; /** 日志前缀 */ logPrefix?: string; } /** * 设置 token * @param token token 值 * @param opt 选项 */ declare function setToken(token?: string, opt?: SetTokenOptions): void; /** * 获取 token * @param opt 选项 * @returns token 值 */ declare function getToken(opt?: GetTokenOptions): string; declare const temp: { axiosList: _axios.AxiosInstance[]; }; /** * 设置 axios 列表,用于批量设置 axios 相关配置 * @param axiosList axios 实例列表 * @returns 更新后的 axios 实例列表 */ declare function setAxios(axiosList: (typeof axios | typeof _axios__default)[]): _axios.AxiosInstance[]; /** * axios 请求拦截器 * @param cb 成功回调 * @param errCb 错误回调 * @param opt 选项 */ declare function setAxRequest(cb: (config: InternalAxiosRequestConfig) => InternalAxiosRequestConfig | Promise, errCb?: (error: any) => Promise, opt?: HandleErrCbOptions): void; /** * 响应拦截器 * @param cb 成功回调 * @param errCb 错误回调 * @param opt 选项 */ declare function setAxResponse(cb: (response: AxiosResponse) => AxiosResponse | Promise, errCb?: (error: any) => Promise, opt?: HandleErrCbOptions): void; /** * 处理错误回调函数 * @param errCb 错误回调 * @param opt 选项 * @returns 处理后的错误回调 */ declare function handleErrCb(errCb?: (error: any) => Promise, opt?: HandleErrCbOptions): (error: any) => Promise; /** * 设置 axios.defaults * @param key 配置键 * @param val 配置值 */ declare function setAxDefaults(key: string, val: any): void; /** * 设置 headers * @param key header 键 * @param val header 值 */ declare function setAxHeaders(key: string, val: any): void; /** * 设置 timeout * @param timeout 超时时间 */ declare function setAxTimeout(timeout?: number): void; /** * 设置 Authorization token * @param token token 值 */ declare function setAxAuthorization(token: string): void; /** * 设置 baseUrl * @param url 基础 URL */ declare function setAxBaseUrl(url: string): void; /** * 获取 axios.CancelToken.source,用于取消请求 * @returns CancelToken source */ declare function getCancelTokenSource(): _axios.CancelTokenSource; /** * 检查是否是 cancel 的结果 * @param res * @returns */ declare function isCancel(res: any): res is _axios.CanceledError; /** * 设置默认的 axios * @param ax axios 实例 */ declare function setDefaultAxios(ax: any): void; /** * 设置默认的错误提示文案 * @param msg 错误提示文案 */ declare function setDefaultErrMsg(msg: string): void; /** * 设置默认的网络异常提示文案 * @param msg 网络异常提示文案 */ declare function setNetworkErrMsg(msg: string): void; /** * 检测网络状态 * @returns 网络是否可用 */ declare function checkNetwork(): boolean; /** * 对象转 FormData 格式 * @param data 对象数据 * @returns FormData 对象 */ declare function objToFormData(data: Record): FormData; /** * FormData 转对象 * @param formData FormData 对象 * @returns 普通对象 */ declare function formDataToObj(formData: FormData | any): Record; /** * 通用 JSON 对象类型 */ type JSONObject = Record; /** * 查询参数类型 */ type QueryParams = JSONObject; /** * 请求数据类型 */ type RequestData = JSONObject; /** * 响应数据类型 */ interface ResponseData> extends AxiosResponse { data: ResData; } /** * 接口返回数据格式 */ interface ResData> { code: number; data: T; msg: string; } /** * Axios 配置类型 */ type AxiosConfig = AxiosRequestConfig; /** * 数据映射函数类型 * @template T - 输入类型 * @template R - 输出类型(默认为 T) */ type MapFunction = (data: T) => R; /** * 带原始参数的映射函数类型(用于请求前处理) * @template T - 处理后的参数类型 * @template P - 原始参数类型 */ type RequestMapFunction = (params: T, originalParams?: P) => T; /** * 列表请求返回结果接口 * @template T - 列表项数据类型 */ interface GetListResult { /** 列表数据 */ list: T[]; /** 分页信息 */ pagination: { current?: number; total: number; pageSize?: number; }; /** 其他扩展字段 */ [key: string]: any; } /** * 自定义列表请求函数类型 * @template T - 列表项数据类型 */ type GetListFunc = (query: QueryParams) => Promise>; /** * 响应处理函数类型 */ type HandleResponseFunc = (response: AxiosResponse) => ResponseData; /** * API 错误接口 */ interface ApiError extends Error { /** 错误码 */ code?: number | string; /** 响应对象 */ response?: AxiosResponse; /** 错误消息(带下划线前缀) */ _msg?: string; /** 错误消息(带下划线前缀) */ _message?: string; /** 原始错误数据 */ data?: any; } /** * 网络链接信息接口(非标准 API) */ interface NetworkConnection { type?: string; downlink?: number; effectiveType?: string; } /** * 扩展 Navigator 接口(包含非标准连接属性) */ interface ExtendedNavigator extends Navigator { connection?: NetworkConnection; mozConnection?: NetworkConnection; webkitConnection?: NetworkConnection; } /** * DataModel 构造函数参数接口 */ interface DataModelOptions { /** 请求 url 替换的额外参数 */ ctx?: Record; /** GET 请求的参数 */ query?: QueryParams; /** POST 接口地址 */ createApi?: string; /** POST 接口提交前的数据处理回调 */ createMap?: MapFunction; /** GET 详情 接口地址 */ getApi?: string; /** GET 详情 接口返回后的数据处理回调 */ getMap?: MapFunction; /** GET 列表 接口地址 */ getListApi?: string; /** GET 列表 接口返回后的数据处理回调 */ getListMap?: MapFunction; /** GET 列表 接口回调,用于自定义列表请求接口 */ getListFunc?: GetListFunc; /** PUT 接口地址 */ updateApi?: string; /** PUT 接口提交前的数据处理回调 */ updateMap?: MapFunction; /** PATCH 接口地址 */ patchApi?: string; /** PATCH 接口提交前的数据处理回调 */ patchMap?: MapFunction; /** DELETE 接口地址 */ deleteApi?: string; /** DELETE 批量删除 接口地址 */ multipleDeleteApi?: string; /** GET 列表 接口请求前数据处理回调 */ getListReqMap?: RequestMapFunction; /** GET 列表 接口请求结果数据处理回调 */ getListResMap?: MapFunction; /** GET 详情 接口请求前数据处理回调 */ getReqMap?: RequestMapFunction; /** GET 详情 接口请求结果数据处理回调 */ getResMap?: MapFunction; /** POST 接口请求前数据处理回调 */ createReqMap?: RequestMapFunction; /** POST 接口请求结果数据处理回调 */ createResMap?: MapFunction; /** PUT 接口请求前数据处理回调 */ updateReqMap?: RequestMapFunction; /** PUT 接口请求结果数据处理回调 */ updateResMap?: MapFunction; /** PATCH 接口请求前数据处理回调 */ patchReqMap?: RequestMapFunction; /** PATCH 接口请求结果数据处理回调 */ patchResMap?: MapFunction; /** DELETE 接口请求前数据处理回调 */ deleteReqMap?: RequestMapFunction; /** DELETE 接口请求结果数据处理回调 */ deleteResMap?: MapFunction; /** DELETE 批量删除 接口请求前数据处理回调 */ multipleDeleteReqMap?: RequestMapFunction; /** DELETE 批量删除 接口请求结果数据处理回调 */ multipleDeleteResMap?: MapFunction; /** 统一 response 回调,用于处理定制 response 格式 */ handleResponse?: HandleResponseFunc; /** 请求的 axios 实例 */ axios?: typeof axios; /** axios 配置 */ axiosConf?: AxiosConfig; /** GET 列表接口 axios 配置 */ getListAxiosConf?: AxiosConfig; /** GET 详情接口 axios 配置 */ getAxiosConf?: AxiosConfig; /** POST 接口 axios 配置 */ createAxiosConf?: AxiosConfig; /** PUT 接口 axios 配置 */ updateAxiosConf?: AxiosConfig; /** PATCH 接口 axios 配置 */ patchAxiosConf?: AxiosConfig; /** DELETE 接口 axios 配置 */ deleteAxiosConf?: AxiosConfig; /** DELETE 批量删除接口 axios 配置 */ multipleDeleteAxiosConf?: AxiosConfig; /** 是否返回完整的接口数据(response.data) */ isResponseData?: boolean; /** 是否直接返回 response */ isResponse?: boolean; } /** * 删除请求配置接口 */ interface DeleteConfig { /** axios delete url 参数 */ params?: JSONObject; /** axios delete data 参数 */ data?: JSONObject; /** 其他 axios delete 配置 */ [key: string]: any; } /** * 获取 API 地址的选项接口 */ interface GetApiUrlOptions { /** 请求来源标识 */ from?: string; [key: string]: any; } /** * 错误处理选项接口 */ interface HandleMsgOptions { /** 是否使用 response.statusText 作为兜底 msg */ useStatusText?: boolean; } /** * DataModel 类 * 用于封装常用的 CRUD 请求方法 */ declare class DataModel> { /** 是否返回完整的接口数据(response.data) */ isResponseData: boolean; /** 是否直接返回 response */ isResponse: boolean; /** 统一 response 回调,用于处理定制 response 格式 */ handleResponse?: HandleResponseFunc; /** 请求 url 替换的额外参数 */ ctx: Record; /** GET 请求的参数 */ query: QueryParams; /** POST 接口地址 */ createApi?: string; /** POST 接口提交前的数据处理回调 */ createMap?: MapFunction; /** GET 详情 接口地址 */ getApi?: string; /** GET 详情 接口返回后的数据处理回调 */ getMap?: MapFunction; /** GET 列表 接口地址 */ getListApi?: string; /** GET 列表 接口返回后的数据处理回调 */ getListMap?: MapFunction; /** GET 列表 接口回调,用于自定义列表请求接口 */ getListFunc?: GetListFunc; /** PUT 接口地址 */ updateApi?: string; /** PUT 接口提交前的数据处理回调 */ updateMap?: MapFunction; /** PATCH 接口地址 */ patchApi?: string; /** PATCH 接口提交前的数据处理回调 */ patchMap?: MapFunction; /** DELETE 接口地址 */ deleteApi?: string; /** DELETE 批量删除 接口地址 */ multipleDeleteApi?: string; /** GET 列表 接口请求前数据处理回调 */ getListReqMap?: RequestMapFunction; /** GET 列表 接口请求结果数据处理回调 */ getListResMap?: MapFunction; /** GET 详情 接口请求前数据处理回调 */ getReqMap?: RequestMapFunction; /** GET 详情 接口请求结果数据处理回调 */ getResMap?: MapFunction; /** POST 接口请求前数据处理回调 */ createReqMap?: RequestMapFunction; /** POST 接口请求结果数据处理回调 */ createResMap?: MapFunction; /** PUT 接口请求前数据处理回调 */ updateReqMap?: RequestMapFunction; /** PUT 接口请求结果数据处理回调 */ updateResMap?: MapFunction; /** PATCH 接口请求前数据处理回调 */ patchReqMap?: RequestMapFunction; /** PATCH 接口请求结果数据处理回调 */ patchResMap?: MapFunction; /** DELETE 接口请求前数据处理回调 */ deleteReqMap?: RequestMapFunction; /** DELETE 接口请求结果数据处理回调 */ deleteResMap?: MapFunction; /** DELETE 批量删除 接口请求前数据处理回调 */ multipleDeleteReqMap?: RequestMapFunction; /** DELETE 批量删除 接口请求结果数据处理回调 */ multipleDeleteResMap?: MapFunction; /** 请求的 axios 实例 */ axios: typeof axios; /** axios 配置 */ axiosConf: AxiosConfig; /** GET 列表接口 axios 配置 */ getListAxiosConf?: AxiosConfig; /** GET 详情接口 axios 配置 */ getAxiosConf?: AxiosConfig; /** POST 接口 axios 配置 */ createAxiosConf?: AxiosConfig; /** PUT 接口 axios 配置 */ updateAxiosConf?: AxiosConfig; /** PATCH 接口 axios 配置 */ patchAxiosConf?: AxiosConfig; /** DELETE 接口 axios 配置 */ deleteAxiosConf?: AxiosConfig; /** DELETE 批量删除接口 axios 配置 */ multipleDeleteAxiosConf?: AxiosConfig; constructor(params: DataModelOptions); /** * 获取请求 url 地址 * @param api 接口地址 https://a.com/test/:oId/:uId * @param record 替换参数 { uId: 81 } * @param ctx url 替换的额外参数 * @param opt 选项 * @returns 处理后的 api 地址 */ getApiUrl(api: string | undefined, record?: JSONObject, ctx?: JSONObject, opt?: GetApiUrlOptions): string; /** * GET 详情请求 * @param q query 参数 * @param ctx url 替换的额外参数 * @param axiosConf axios 配置 * @returns Promise */ get(q?: QueryParams, ctx?: JSONObject, axiosConf?: AxiosConfig): Promise; /** * GET 列表请求 * @param q query 参数 * @param ctx url 替换的额外参数 * @param axiosConf axios 配置 * @returns Promise> */ getList(q?: QueryParams, ctx?: JSONObject, axiosConf?: AxiosConfig): Promise>; /** * POST 请求 * @param params 参数 * @param ctx url 替换的额外参数 * @param axiosConf axios 配置 * @returns Promise */ create(params?: RequestData | FormData, ctx?: JSONObject, axiosConf?: AxiosConfig): Promise; /** * PUT 请求 * @param params 参数 * @param ctx url 替换的额外参数 * @param axiosConf axios 配置 * @returns Promise */ update(params?: RequestData | FormData, ctx?: JSONObject, axiosConf?: AxiosConfig): Promise; /** * PATCH 请求 * @param params 参数 * @param ctx url 替换的额外参数 * @param axiosConf axios 配置 * @returns Promise */ patch(params?: RequestData | FormData, ctx?: JSONObject, axiosConf?: AxiosConfig): Promise; /** * 删除接口 * @param config axios.delete config 参数 * @param config.params axios.delete url 参数 * @param config.data axios.delete data 参数 * @param ctx url 替换的额外参数 * @returns Promise */ delete(config?: DeleteConfig, ctx?: JSONObject): Promise; /** * 批量删除接口 * @param config axios.delete config 参数 * @param config.params axios.delete url 参数 * @param config.data axios.delete data 参数 * @param ctx url 替换的额外参数 * @returns Promise */ multipleDelete(config?: DeleteConfig, ctx?: JSONObject): Promise; /** * 处理响应结果 * @param response axios 响应对象 * @param resolve 成功回调 * @param reject 失败回调 */ handleRes(response: ResponseData, resolve: (res: any) => void, reject: (err: ApiError) => void): void; /** * 错误处理器 * @param err 错误对象 * @param reject Promise reject 回调 */ errorHandler(err: any, reject: (err: ApiError) => void): void; /** * 处理错误消息 * @param response 响应对象 * @param opt 选项 * @returns 错误消息 */ handleMsg(response: any, opt?: HandleMsgOptions): string; /** * 获取网络错误消息 * @param httpCode HTTP 状态码 * @returns 错误消息 */ getNetworkErrMsg(httpCode: string): string; } /** * useDataModel 选项接口 */ interface UseDataModelOptions { /** 动态数据监听的目标 */ effectTargets?: any[]; /** 动态的 params 数据,包含了 query */ effectParams?: Partial>; /** 动态的 query 数据 */ effectQuery?: DataModelOptions["query"]; } /** * 解决 hooks 重复实例化导致 query 丢失的问题 * @param {Object} initParams 初始参数 * @param {Object} opt * @param {Object} opt.effectTargets 动态数据监听的目标 * @param {Object} opt.effectParams 动态的 params 数据,包含了 query * @param {Object} opt.effectQuery 动态的 query 数据 * @returns DataModel 实例 */ declare const useDataModel: (initParams?: DataModelOptions, opt?: UseDataModelOptions) => DataModel>; export { type ApiError, type AxiosConfig, type AxiosRequestConfigWithCache, type AxiosResponseCus, DataModel, type DataModelOptions, type DeleteConfig, type ExtendedNavigator, type GetApiUrlOptions, type GetListFunc, type GetListResult, type GetTokenOptions, type HandleErrCbOptions, type HandleMsgOptions, type HandleResponseFunc, type JSONObject, type MapFunction, type NetworkConnection, type QueryParams, type RequestData, type RequestMapFunction, type ResData, type ResponseData, type SetTokenOptions, TOKEN, type UseDataModelOptions, axios, checkNetwork, DataModel as default, formDataToObj, getCancelTokenSource, getToken, handleErrCb, isCancel, objToFormData, setAxAuthorization, setAxBaseUrl, setAxDefaults, setAxHeaders, setAxRequest, setAxResponse, setAxTimeout, setAxios, setDefaultAxios, setDefaultErrMsg, setNetworkErrMsg, setToken, temp, useDataModel };