axios-wrapper-pro 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +209 -0
- package/dist/index.d.ts +73 -11
- package/dist/index.js +1 -324
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +6 -5
- package/dist/config.d.ts +0 -15
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -36
- package/dist/config.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/types.d.ts +0 -63
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/utils.d.ts +0 -20
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -26
- package/dist/utils.js.map +0 -1
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import * as axios from 'axios';
|
|
2
|
+
import { InternalAxiosRequestConfig, AxiosError, AxiosResponse, AxiosRequestConfig, AxiosInstance } from 'axios';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 扩展 Axios 类型,添加自定义字段
|
|
6
|
+
*/
|
|
7
|
+
declare module "axios" {
|
|
8
|
+
interface InternalAxiosRequestConfig {
|
|
9
|
+
/** 内部使用的请求键(用于在响应拦截器中清理 AbortController) */
|
|
10
|
+
_requestKey?: RequestKey;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/** 请求键类型(字符串或符号) */
|
|
14
|
+
type RequestKey = string | symbol;
|
|
15
|
+
/**
|
|
16
|
+
* 重试配置接口(完整配置)
|
|
17
|
+
*/
|
|
18
|
+
interface RetryConfig {
|
|
19
|
+
/** 重试次数,默认 0 */
|
|
20
|
+
count: number;
|
|
21
|
+
/** 重试延迟(毫秒),默认 1000 */
|
|
22
|
+
delay: number;
|
|
23
|
+
/** 重试条件判断函数 */
|
|
24
|
+
condition: (error: AxiosError) => boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 拦截器配置接口
|
|
28
|
+
*/
|
|
29
|
+
interface InterceptorConfig {
|
|
30
|
+
/** 请求拦截器 */
|
|
31
|
+
request: (config: InternalAxiosRequestConfig) => InternalAxiosRequestConfig | Promise<InternalAxiosRequestConfig>;
|
|
32
|
+
/** 请求错误拦截器 */
|
|
33
|
+
requestError: (error: AxiosError) => Promise<any>;
|
|
34
|
+
/** 响应拦截器 */
|
|
35
|
+
response: (response: AxiosResponse) => AxiosResponse | Promise<AxiosResponse>;
|
|
36
|
+
/** 响应错误拦截器 */
|
|
37
|
+
responseError: (error: AxiosError) => Promise<any>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 请求配置扩展接口
|
|
41
|
+
*/
|
|
42
|
+
interface RequestConfig extends AxiosRequestConfig {
|
|
43
|
+
/** 自定义请求标识(用于去重和取消请求) */
|
|
44
|
+
requestKey?: RequestKey;
|
|
45
|
+
/** 单次请求的重试配置 */
|
|
46
|
+
retry?: Partial<RetryConfig>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* AxiosWrapperPro 构造函数配置选项
|
|
50
|
+
*/
|
|
51
|
+
interface AxiosWrapperProOptions {
|
|
52
|
+
/** 基础 URL */
|
|
53
|
+
baseURL?: string;
|
|
54
|
+
/** 超时时间(毫秒) */
|
|
55
|
+
timeout?: number;
|
|
56
|
+
/** 默认请求头 */
|
|
57
|
+
headers?: Record<string, string>;
|
|
58
|
+
/** 参数序列化函数 */
|
|
59
|
+
paramsSerializer?: (params: any) => string;
|
|
60
|
+
/** 拦截器配置 */
|
|
61
|
+
interceptors?: Partial<InterceptorConfig>;
|
|
62
|
+
/** 重试配置 */
|
|
63
|
+
retry?: Partial<RetryConfig>;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
declare class AxiosWrapperPro {
|
|
67
|
+
/** 中断控制器 */
|
|
68
|
+
private _abortControllers;
|
|
69
|
+
/** 请求拦截器ID */
|
|
70
|
+
private _requestInterceptorId;
|
|
71
|
+
/** 响应拦截器ID */
|
|
72
|
+
private _responseInterceptorId;
|
|
73
|
+
/** 拦截器配置 */
|
|
74
|
+
private _interceptorConfig;
|
|
75
|
+
/** 重试配置(完整配置) */
|
|
76
|
+
private _retryConfig;
|
|
77
|
+
/** 参数序列化函数 */
|
|
78
|
+
private _paramsSerializer;
|
|
79
|
+
/** Axios实例 */
|
|
80
|
+
private _instance;
|
|
81
|
+
constructor(options?: AxiosWrapperProOptions);
|
|
82
|
+
/**
|
|
83
|
+
* 获取拦截器配置,未配置的使用默认值
|
|
84
|
+
* @returns {InterceptorConfig} 完整的拦截器配置
|
|
85
|
+
*/
|
|
86
|
+
_getInterceptors(): InterceptorConfig;
|
|
87
|
+
/**
|
|
88
|
+
* 初始化请求拦截器
|
|
89
|
+
*/
|
|
90
|
+
_initRequestInterceptors(): void;
|
|
91
|
+
/**
|
|
92
|
+
* 初始化响应拦截器
|
|
93
|
+
*/
|
|
94
|
+
_initResponseInterceptors(): void;
|
|
95
|
+
/**
|
|
96
|
+
* 设置请求拦截器,移除旧拦截器,更新拦截器配置,重新初始化拦截器
|
|
97
|
+
* @param {InterceptorConfig["request"]} interceptor 拦截器
|
|
98
|
+
* @param {InterceptorConfig["requestError"]} errorInterceptor 错误拦截器
|
|
99
|
+
*/
|
|
100
|
+
setRequestInterceptor(interceptor: InterceptorConfig["request"], errorInterceptor: InterceptorConfig["requestError"]): void;
|
|
101
|
+
/**
|
|
102
|
+
* 设置响应拦截器,移除旧拦截器,更新拦截器配置,重新初始化拦截器
|
|
103
|
+
* @param {InterceptorConfig["response"]} interceptor 拦截器
|
|
104
|
+
* @param {InterceptorConfig["responseError"]} errorInterceptor 错误拦截器
|
|
105
|
+
*/
|
|
106
|
+
setResponseInterceptor(interceptor: InterceptorConfig["response"], errorInterceptor: InterceptorConfig["responseError"]): void;
|
|
107
|
+
/**
|
|
108
|
+
* 设置取消控制器
|
|
109
|
+
* @param {AxiosRequestConfig} config 请求配置
|
|
110
|
+
* @param {RequestKey} customKey 自定义key
|
|
111
|
+
* @returns {InternalAxiosRequestConfig} 处理后的配置
|
|
112
|
+
*/
|
|
113
|
+
_setupAbortController(config: AxiosRequestConfig, customKey: RequestKey): InternalAxiosRequestConfig;
|
|
114
|
+
/**
|
|
115
|
+
* 生成请求唯一标识
|
|
116
|
+
* @param {AxiosRequestConfig} config 请求配置
|
|
117
|
+
* @returns {string} 请求唯一标识
|
|
118
|
+
*/
|
|
119
|
+
_generateRequestKey(config: AxiosRequestConfig): string;
|
|
120
|
+
/**
|
|
121
|
+
* 稳定的JSON序列化,确保相同内容生成相同字符串
|
|
122
|
+
* @param {any} obj 待序列化对象
|
|
123
|
+
* @returns {string} 序列化后的字符串
|
|
124
|
+
*/
|
|
125
|
+
_stableStringify(obj: any): string;
|
|
126
|
+
/**
|
|
127
|
+
* 取消指定请求
|
|
128
|
+
* @param {RequestKey} key 请求标识
|
|
129
|
+
* @param {string} [reason] 取消原因
|
|
130
|
+
* @returns {boolean} 是否成功取消
|
|
131
|
+
*/
|
|
132
|
+
cancelRequest(key: RequestKey, reason?: string): boolean;
|
|
133
|
+
/**
|
|
134
|
+
* 取消所有请求
|
|
135
|
+
* @param {string} [reason] 取消原因
|
|
136
|
+
* @returns {number} 被取消的请求数量
|
|
137
|
+
*/
|
|
138
|
+
cancelAllRequests(reason?: string): number;
|
|
139
|
+
/**
|
|
140
|
+
* 设置默认请求头
|
|
141
|
+
* @param {string} key 请求头名称
|
|
142
|
+
* @param {string} value 请求头值
|
|
143
|
+
*/
|
|
144
|
+
setHeader(key: string, value: string): void;
|
|
145
|
+
/**
|
|
146
|
+
* 批量设置请求头
|
|
147
|
+
* @param {Record<string, string>} headers 请求头对象
|
|
148
|
+
*/
|
|
149
|
+
setHeaders(headers: Record<string, string>): void;
|
|
150
|
+
/**
|
|
151
|
+
* 移除请求头
|
|
152
|
+
* @param {string} key 请求头名称
|
|
153
|
+
*/
|
|
154
|
+
removeHeader(key: string): void;
|
|
155
|
+
/** 获取基础URL */
|
|
156
|
+
getBaseURL(): string;
|
|
157
|
+
/** 设置基础URL */
|
|
158
|
+
setBaseURL(url: string): void;
|
|
159
|
+
/** 获取 Axios 实例 */
|
|
160
|
+
getInstance(): AxiosInstance;
|
|
161
|
+
/**
|
|
162
|
+
* 通用请求方法
|
|
163
|
+
* @param {string} method 请求方法
|
|
164
|
+
* @param {string} url 请求地址
|
|
165
|
+
* @param {RequestConfig} [config={}] 请求配置
|
|
166
|
+
* @returns {Promise<AxiosResponse>} 响应数据
|
|
167
|
+
*/
|
|
168
|
+
request(method: string, url: string, config?: RequestConfig): Promise<axios.AxiosResponse<any, any, {}>>;
|
|
169
|
+
/**
|
|
170
|
+
* GET请求
|
|
171
|
+
* @param {string} url 请求地址
|
|
172
|
+
* @param {RequestConfig} [options] 请求选项
|
|
173
|
+
* @returns {Promise<AxiosResponse>} 响应数据
|
|
174
|
+
*/
|
|
175
|
+
get(url: string, options?: RequestConfig): Promise<axios.AxiosResponse<any, any, {}>>;
|
|
176
|
+
/**
|
|
177
|
+
* POST请求
|
|
178
|
+
* @param {string} url 请求地址
|
|
179
|
+
* @param {any} [data] 请求数据
|
|
180
|
+
* @param {RequestConfig} [options] 其他选项
|
|
181
|
+
* @returns {Promise<AxiosResponse>} 响应数据
|
|
182
|
+
*/
|
|
183
|
+
post(url: string, data?: any, options?: RequestConfig): Promise<axios.AxiosResponse<any, any, {}>>;
|
|
184
|
+
/**
|
|
185
|
+
* PUT请求
|
|
186
|
+
* @param {string} url 请求地址
|
|
187
|
+
* @param {any} [data] 请求数据
|
|
188
|
+
* @param {RequestConfig} [options] 其他选项
|
|
189
|
+
* @returns {Promise<AxiosResponse>} 响应数据
|
|
190
|
+
*/
|
|
191
|
+
put(url: string, data?: any, options?: RequestConfig): Promise<axios.AxiosResponse<any, any, {}>>;
|
|
192
|
+
/**
|
|
193
|
+
* DELETE请求
|
|
194
|
+
* @param {string} url 请求地址
|
|
195
|
+
* @param {RequestConfig} [options] 请求选项
|
|
196
|
+
* @returns {Promise<AxiosResponse>} 响应数据
|
|
197
|
+
*/
|
|
198
|
+
delete(url: string, options?: RequestConfig): Promise<axios.AxiosResponse<any, any, {}>>;
|
|
199
|
+
/**
|
|
200
|
+
* PATCH请求
|
|
201
|
+
* @param {string} url 请求地址
|
|
202
|
+
* @param {any} [data] 请求数据
|
|
203
|
+
* @param {RequestConfig} [options] 其他选项
|
|
204
|
+
* @returns {Promise<AxiosResponse>} 响应数据
|
|
205
|
+
*/
|
|
206
|
+
patch(url: string, data?: any, options?: RequestConfig): Promise<axios.AxiosResponse<any, any, {}>>;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
export { AxiosWrapperPro, type AxiosWrapperProOptions, type InterceptorConfig, type RequestConfig, type RequestKey, type RetryConfig };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,68 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import * as axios from 'axios';
|
|
2
|
+
import { InternalAxiosRequestConfig, AxiosError, AxiosResponse, AxiosRequestConfig, AxiosInstance } from 'axios';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 扩展 Axios 类型,添加自定义字段
|
|
6
|
+
*/
|
|
7
|
+
declare module "axios" {
|
|
8
|
+
interface InternalAxiosRequestConfig {
|
|
9
|
+
/** 内部使用的请求键(用于在响应拦截器中清理 AbortController) */
|
|
10
|
+
_requestKey?: RequestKey;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/** 请求键类型(字符串或符号) */
|
|
14
|
+
type RequestKey = string | symbol;
|
|
15
|
+
/**
|
|
16
|
+
* 重试配置接口(完整配置)
|
|
17
|
+
*/
|
|
18
|
+
interface RetryConfig {
|
|
19
|
+
/** 重试次数,默认 0 */
|
|
20
|
+
count: number;
|
|
21
|
+
/** 重试延迟(毫秒),默认 1000 */
|
|
22
|
+
delay: number;
|
|
23
|
+
/** 重试条件判断函数 */
|
|
24
|
+
condition: (error: AxiosError) => boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 拦截器配置接口
|
|
28
|
+
*/
|
|
29
|
+
interface InterceptorConfig {
|
|
30
|
+
/** 请求拦截器 */
|
|
31
|
+
request: (config: InternalAxiosRequestConfig) => InternalAxiosRequestConfig | Promise<InternalAxiosRequestConfig>;
|
|
32
|
+
/** 请求错误拦截器 */
|
|
33
|
+
requestError: (error: AxiosError) => Promise<any>;
|
|
34
|
+
/** 响应拦截器 */
|
|
35
|
+
response: (response: AxiosResponse) => AxiosResponse | Promise<AxiosResponse>;
|
|
36
|
+
/** 响应错误拦截器 */
|
|
37
|
+
responseError: (error: AxiosError) => Promise<any>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 请求配置扩展接口
|
|
41
|
+
*/
|
|
42
|
+
interface RequestConfig extends AxiosRequestConfig {
|
|
43
|
+
/** 自定义请求标识(用于去重和取消请求) */
|
|
44
|
+
requestKey?: RequestKey;
|
|
45
|
+
/** 单次请求的重试配置 */
|
|
46
|
+
retry?: Partial<RetryConfig>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* AxiosWrapperPro 构造函数配置选项
|
|
50
|
+
*/
|
|
51
|
+
interface AxiosWrapperProOptions {
|
|
52
|
+
/** 基础 URL */
|
|
53
|
+
baseURL?: string;
|
|
54
|
+
/** 超时时间(毫秒) */
|
|
55
|
+
timeout?: number;
|
|
56
|
+
/** 默认请求头 */
|
|
57
|
+
headers?: Record<string, string>;
|
|
58
|
+
/** 参数序列化函数 */
|
|
59
|
+
paramsSerializer?: (params: any) => string;
|
|
60
|
+
/** 拦截器配置 */
|
|
61
|
+
interceptors?: Partial<InterceptorConfig>;
|
|
62
|
+
/** 重试配置 */
|
|
63
|
+
retry?: Partial<RetryConfig>;
|
|
64
|
+
}
|
|
65
|
+
|
|
3
66
|
declare class AxiosWrapperPro {
|
|
4
67
|
/** 中断控制器 */
|
|
5
68
|
private _abortControllers;
|
|
@@ -102,14 +165,14 @@ declare class AxiosWrapperPro {
|
|
|
102
165
|
* @param {RequestConfig} [config={}] 请求配置
|
|
103
166
|
* @returns {Promise<AxiosResponse>} 响应数据
|
|
104
167
|
*/
|
|
105
|
-
request(method: string, url: string, config?: RequestConfig): Promise<
|
|
168
|
+
request(method: string, url: string, config?: RequestConfig): Promise<axios.AxiosResponse<any, any, {}>>;
|
|
106
169
|
/**
|
|
107
170
|
* GET请求
|
|
108
171
|
* @param {string} url 请求地址
|
|
109
172
|
* @param {RequestConfig} [options] 请求选项
|
|
110
173
|
* @returns {Promise<AxiosResponse>} 响应数据
|
|
111
174
|
*/
|
|
112
|
-
get(url: string, options?: RequestConfig): Promise<
|
|
175
|
+
get(url: string, options?: RequestConfig): Promise<axios.AxiosResponse<any, any, {}>>;
|
|
113
176
|
/**
|
|
114
177
|
* POST请求
|
|
115
178
|
* @param {string} url 请求地址
|
|
@@ -117,7 +180,7 @@ declare class AxiosWrapperPro {
|
|
|
117
180
|
* @param {RequestConfig} [options] 其他选项
|
|
118
181
|
* @returns {Promise<AxiosResponse>} 响应数据
|
|
119
182
|
*/
|
|
120
|
-
post(url: string, data?: any, options?: RequestConfig): Promise<
|
|
183
|
+
post(url: string, data?: any, options?: RequestConfig): Promise<axios.AxiosResponse<any, any, {}>>;
|
|
121
184
|
/**
|
|
122
185
|
* PUT请求
|
|
123
186
|
* @param {string} url 请求地址
|
|
@@ -125,14 +188,14 @@ declare class AxiosWrapperPro {
|
|
|
125
188
|
* @param {RequestConfig} [options] 其他选项
|
|
126
189
|
* @returns {Promise<AxiosResponse>} 响应数据
|
|
127
190
|
*/
|
|
128
|
-
put(url: string, data?: any, options?: RequestConfig): Promise<
|
|
191
|
+
put(url: string, data?: any, options?: RequestConfig): Promise<axios.AxiosResponse<any, any, {}>>;
|
|
129
192
|
/**
|
|
130
193
|
* DELETE请求
|
|
131
194
|
* @param {string} url 请求地址
|
|
132
195
|
* @param {RequestConfig} [options] 请求选项
|
|
133
196
|
* @returns {Promise<AxiosResponse>} 响应数据
|
|
134
197
|
*/
|
|
135
|
-
delete(url: string, options?: RequestConfig): Promise<
|
|
198
|
+
delete(url: string, options?: RequestConfig): Promise<axios.AxiosResponse<any, any, {}>>;
|
|
136
199
|
/**
|
|
137
200
|
* PATCH请求
|
|
138
201
|
* @param {string} url 请求地址
|
|
@@ -140,8 +203,7 @@ declare class AxiosWrapperPro {
|
|
|
140
203
|
* @param {RequestConfig} [options] 其他选项
|
|
141
204
|
* @returns {Promise<AxiosResponse>} 响应数据
|
|
142
205
|
*/
|
|
143
|
-
patch(url: string, data?: any, options?: RequestConfig): Promise<
|
|
206
|
+
patch(url: string, data?: any, options?: RequestConfig): Promise<axios.AxiosResponse<any, any, {}>>;
|
|
144
207
|
}
|
|
145
|
-
|
|
146
|
-
export
|
|
147
|
-
//# sourceMappingURL=index.d.ts.map
|
|
208
|
+
|
|
209
|
+
export { AxiosWrapperPro, type AxiosWrapperProOptions, type InterceptorConfig, type RequestConfig, type RequestKey, type RetryConfig };
|
package/dist/index.js
CHANGED
|
@@ -1,325 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { isFunction, sleep } from "./utils";
|
|
3
|
-
import { DEFAULT_CONFIG, DEFAULT_RETRY_CONFIG, DEFAULT_INTERCEPTOR } from "./config";
|
|
4
|
-
class AxiosWrapperPro {
|
|
5
|
-
constructor(options = {}) {
|
|
6
|
-
this._abortControllers = new Map();
|
|
7
|
-
// 接口重试配置
|
|
8
|
-
this._retryConfig = {
|
|
9
|
-
...DEFAULT_RETRY_CONFIG,
|
|
10
|
-
...((options === null || options === void 0 ? void 0 : options.retry) || {}),
|
|
11
|
-
};
|
|
12
|
-
// 保存参数序列化函数
|
|
13
|
-
this._paramsSerializer = isFunction(options.paramsSerializer) ? options.paramsSerializer : null;
|
|
14
|
-
// 创建axios实例
|
|
15
|
-
const axiosConfig = {
|
|
16
|
-
...DEFAULT_CONFIG,
|
|
17
|
-
...(options.baseURL && { baseURL: options.baseURL }),
|
|
18
|
-
...(options.timeout && { timeout: options.timeout }),
|
|
19
|
-
headers: { ...DEFAULT_CONFIG.headers, ...options.headers },
|
|
20
|
-
};
|
|
21
|
-
if (this._paramsSerializer) {
|
|
22
|
-
axiosConfig.paramsSerializer = this._paramsSerializer;
|
|
23
|
-
}
|
|
24
|
-
this._instance = axios.create(axiosConfig);
|
|
25
|
-
// 保存拦截器配置
|
|
26
|
-
this._interceptorConfig = options.interceptors || {};
|
|
27
|
-
// 初始化拦截器
|
|
28
|
-
this._initRequestInterceptors();
|
|
29
|
-
this._initResponseInterceptors();
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* 获取拦截器配置,未配置的使用默认值
|
|
33
|
-
* @returns {InterceptorConfig} 完整的拦截器配置
|
|
34
|
-
*/
|
|
35
|
-
_getInterceptors() {
|
|
36
|
-
const { request, requestError, response, responseError } = this._interceptorConfig;
|
|
37
|
-
return {
|
|
38
|
-
request: isFunction(request) ? request : DEFAULT_INTERCEPTOR.request,
|
|
39
|
-
requestError: isFunction(requestError) ? requestError : DEFAULT_INTERCEPTOR.requestError,
|
|
40
|
-
response: isFunction(response) ? response : DEFAULT_INTERCEPTOR.response,
|
|
41
|
-
responseError: isFunction(responseError) ? responseError : DEFAULT_INTERCEPTOR.responseError,
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* 初始化请求拦截器
|
|
46
|
-
*/
|
|
47
|
-
_initRequestInterceptors() {
|
|
48
|
-
const { request, requestError } = this._getInterceptors();
|
|
49
|
-
this._requestInterceptorId = this._instance.interceptors.request.use(request, requestError);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* 初始化响应拦截器
|
|
53
|
-
*/
|
|
54
|
-
_initResponseInterceptors() {
|
|
55
|
-
const { response, responseError } = this._getInterceptors();
|
|
56
|
-
// 响应拦截器
|
|
57
|
-
this._responseInterceptorId = this._instance.interceptors.response.use((res) => {
|
|
58
|
-
// 清理AbortController,使用请求时保存的 key 确保一致性
|
|
59
|
-
const key = res.config._requestKey;
|
|
60
|
-
key && this._abortControllers.delete(key);
|
|
61
|
-
// 执行自定义响应拦截器
|
|
62
|
-
return response(res);
|
|
63
|
-
}, (error) => {
|
|
64
|
-
var _a;
|
|
65
|
-
// 清理AbortController,使用请求时保存的 key 确保一致性
|
|
66
|
-
const key = (_a = error.config) === null || _a === void 0 ? void 0 : _a._requestKey;
|
|
67
|
-
key && this._abortControllers.delete(key);
|
|
68
|
-
// 执行自定义响应错误拦截器
|
|
69
|
-
return responseError(error);
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* 设置请求拦截器,移除旧拦截器,更新拦截器配置,重新初始化拦截器
|
|
74
|
-
* @param {InterceptorConfig["request"]} interceptor 拦截器
|
|
75
|
-
* @param {InterceptorConfig["requestError"]} errorInterceptor 错误拦截器
|
|
76
|
-
*/
|
|
77
|
-
setRequestInterceptor(interceptor, errorInterceptor) {
|
|
78
|
-
if (this._requestInterceptorId !== undefined) {
|
|
79
|
-
this._instance.interceptors.request.eject(this._requestInterceptorId);
|
|
80
|
-
}
|
|
81
|
-
this._interceptorConfig.request = interceptor;
|
|
82
|
-
this._interceptorConfig.requestError = errorInterceptor;
|
|
83
|
-
this._initRequestInterceptors();
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* 设置响应拦截器,移除旧拦截器,更新拦截器配置,重新初始化拦截器
|
|
87
|
-
* @param {InterceptorConfig["response"]} interceptor 拦截器
|
|
88
|
-
* @param {InterceptorConfig["responseError"]} errorInterceptor 错误拦截器
|
|
89
|
-
*/
|
|
90
|
-
setResponseInterceptor(interceptor, errorInterceptor) {
|
|
91
|
-
if (this._responseInterceptorId !== undefined) {
|
|
92
|
-
this._instance.interceptors.response.eject(this._responseInterceptorId);
|
|
93
|
-
}
|
|
94
|
-
this._interceptorConfig.response = interceptor;
|
|
95
|
-
this._interceptorConfig.responseError = errorInterceptor;
|
|
96
|
-
this._initResponseInterceptors();
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* 设置取消控制器
|
|
100
|
-
* @param {AxiosRequestConfig} config 请求配置
|
|
101
|
-
* @param {RequestKey} customKey 自定义key
|
|
102
|
-
* @returns {InternalAxiosRequestConfig} 处理后的配置
|
|
103
|
-
*/
|
|
104
|
-
_setupAbortController(config, customKey) {
|
|
105
|
-
const key = customKey !== null && customKey !== void 0 ? customKey : this._generateRequestKey(config);
|
|
106
|
-
// 取消已存在的相同请求
|
|
107
|
-
this.cancelRequest(key);
|
|
108
|
-
// 设置当前请求的AbortController
|
|
109
|
-
const controller = new AbortController();
|
|
110
|
-
this._abortControllers.set(key, controller);
|
|
111
|
-
// 将 key 保存到 config 中,确保响应拦截器使用相同的 key
|
|
112
|
-
return { ...config, signal: controller.signal, _requestKey: key };
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* 生成请求唯一标识
|
|
116
|
-
* @param {AxiosRequestConfig} config 请求配置
|
|
117
|
-
* @returns {string} 请求唯一标识
|
|
118
|
-
*/
|
|
119
|
-
_generateRequestKey(config) {
|
|
120
|
-
const method = (config.method || "GET").toUpperCase();
|
|
121
|
-
const url = config.url || "";
|
|
122
|
-
// 复制params对象,避免修改原始配置
|
|
123
|
-
const params = config.params ? { ...config.params } : null;
|
|
124
|
-
// 删除_t参数,避免影响生成请求唯一标识
|
|
125
|
-
if (params === null || params === void 0 ? void 0 : params._t) {
|
|
126
|
-
delete params._t;
|
|
127
|
-
}
|
|
128
|
-
// 获取序列化函数:优先使用请求级配置,其次使用实例级配置
|
|
129
|
-
const serializer = isFunction(config.paramsSerializer) ? config.paramsSerializer : this._paramsSerializer;
|
|
130
|
-
let paramsStr = "";
|
|
131
|
-
// 所有HTTP方法都可能携带params参数
|
|
132
|
-
if (params) {
|
|
133
|
-
paramsStr = serializer ? serializer(params) : this._stableStringify(params);
|
|
134
|
-
}
|
|
135
|
-
// POST/PUT/PATCH/DELETE 可能同时携带 data
|
|
136
|
-
let dataStr = "";
|
|
137
|
-
if (["POST", "PUT", "PATCH", "DELETE"].includes(method) && config.data) {
|
|
138
|
-
dataStr = typeof config.data === "string" ? config.data : this._stableStringify(config.data);
|
|
139
|
-
}
|
|
140
|
-
return `${method}|${url}|${paramsStr}|${dataStr}`;
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* 稳定的JSON序列化,确保相同内容生成相同字符串
|
|
144
|
-
* @param {any} obj 待序列化对象
|
|
145
|
-
* @returns {string} 序列化后的字符串
|
|
146
|
-
*/
|
|
147
|
-
_stableStringify(obj) {
|
|
148
|
-
if (obj === null || obj === undefined) {
|
|
149
|
-
return "";
|
|
150
|
-
}
|
|
151
|
-
if (Array.isArray(obj)) {
|
|
152
|
-
return "[" + obj.map((item) => this._stableStringify(item)).join(",") + "]";
|
|
153
|
-
}
|
|
154
|
-
if (typeof obj === "object") {
|
|
155
|
-
const sortedKeys = Object.keys(obj).sort();
|
|
156
|
-
const pairs = sortedKeys.map((key) => `"${key}":${this._stableStringify(obj[key])}`);
|
|
157
|
-
return "{" + pairs.join(",") + "}";
|
|
158
|
-
}
|
|
159
|
-
return JSON.stringify(obj);
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* 取消指定请求
|
|
163
|
-
* @param {RequestKey} key 请求标识
|
|
164
|
-
* @param {string} [reason] 取消原因
|
|
165
|
-
* @returns {boolean} 是否成功取消
|
|
166
|
-
*/
|
|
167
|
-
cancelRequest(key, reason) {
|
|
168
|
-
const controller = this._abortControllers.get(key);
|
|
169
|
-
if (controller) {
|
|
170
|
-
controller.abort(reason || "请求已取消");
|
|
171
|
-
this._abortControllers.delete(key);
|
|
172
|
-
return true;
|
|
173
|
-
}
|
|
174
|
-
return false;
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* 取消所有请求
|
|
178
|
-
* @param {string} [reason] 取消原因
|
|
179
|
-
* @returns {number} 被取消的请求数量
|
|
180
|
-
*/
|
|
181
|
-
cancelAllRequests(reason) {
|
|
182
|
-
const count = this._abortControllers.size;
|
|
183
|
-
this._abortControllers.forEach((controller) => {
|
|
184
|
-
controller.abort(reason || "请求已取消");
|
|
185
|
-
});
|
|
186
|
-
this._abortControllers.clear();
|
|
187
|
-
return count;
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* 设置默认请求头
|
|
191
|
-
* @param {string} key 请求头名称
|
|
192
|
-
* @param {string} value 请求头值
|
|
193
|
-
*/
|
|
194
|
-
setHeader(key, value) {
|
|
195
|
-
this._instance.defaults.headers.common[key] = value;
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* 批量设置请求头
|
|
199
|
-
* @param {Record<string, string>} headers 请求头对象
|
|
200
|
-
*/
|
|
201
|
-
setHeaders(headers) {
|
|
202
|
-
Object.entries(headers).forEach(([key, value]) => {
|
|
203
|
-
this._instance.defaults.headers.common[key] = value;
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* 移除请求头
|
|
208
|
-
* @param {string} key 请求头名称
|
|
209
|
-
*/
|
|
210
|
-
removeHeader(key) {
|
|
211
|
-
delete this._instance.defaults.headers.common[key];
|
|
212
|
-
}
|
|
213
|
-
/** 获取基础URL */
|
|
214
|
-
getBaseURL() {
|
|
215
|
-
return this._instance.defaults.baseURL || "";
|
|
216
|
-
}
|
|
217
|
-
/** 设置基础URL */
|
|
218
|
-
setBaseURL(url) {
|
|
219
|
-
this._instance.defaults.baseURL = url;
|
|
220
|
-
}
|
|
221
|
-
/** 获取 Axios 实例 */
|
|
222
|
-
getInstance() {
|
|
223
|
-
return this._instance;
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* 通用请求方法
|
|
227
|
-
* @param {string} method 请求方法
|
|
228
|
-
* @param {string} url 请求地址
|
|
229
|
-
* @param {RequestConfig} [config={}] 请求配置
|
|
230
|
-
* @returns {Promise<AxiosResponse>} 响应数据
|
|
231
|
-
*/
|
|
232
|
-
async request(method, url, config = {}) {
|
|
233
|
-
const { requestKey, retry, ...restConfig } = config;
|
|
234
|
-
// 合并重试配置
|
|
235
|
-
const retryConfig = {
|
|
236
|
-
...this._retryConfig,
|
|
237
|
-
...(retry || {}),
|
|
238
|
-
};
|
|
239
|
-
// 构建请求配置,避免重复的 method 和 url
|
|
240
|
-
const requestConfig = { method, url, ...restConfig };
|
|
241
|
-
let lastError = null;
|
|
242
|
-
const configKey = requestKey !== null && requestKey !== void 0 ? requestKey : this._generateRequestKey(requestConfig);
|
|
243
|
-
// 重试循环
|
|
244
|
-
for (let attempt = 0; attempt <= retryConfig.count; attempt++) {
|
|
245
|
-
try {
|
|
246
|
-
// 重试时清理旧的AbortController
|
|
247
|
-
if (attempt > 0) {
|
|
248
|
-
this._abortControllers.delete(configKey);
|
|
249
|
-
}
|
|
250
|
-
// 设置AbortController
|
|
251
|
-
const finalConfig = this._setupAbortController(requestConfig, configKey);
|
|
252
|
-
// 调用接口
|
|
253
|
-
const result = await this._instance.request(finalConfig);
|
|
254
|
-
return result;
|
|
255
|
-
}
|
|
256
|
-
catch (error) {
|
|
257
|
-
lastError = error;
|
|
258
|
-
// 清理旧的AbortController
|
|
259
|
-
this._abortControllers.delete(configKey);
|
|
260
|
-
// 判断是否继续重试
|
|
261
|
-
const isLast = attempt === retryConfig.count;
|
|
262
|
-
const shouldRetry = retryConfig.condition(error);
|
|
263
|
-
const isCancelled = axios.isCancel(error);
|
|
264
|
-
if (isLast || !shouldRetry || isCancelled) {
|
|
265
|
-
break;
|
|
266
|
-
}
|
|
267
|
-
// 延迟重试
|
|
268
|
-
if (retryConfig.delay > 0) {
|
|
269
|
-
await sleep(retryConfig.delay);
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
return Promise.reject(lastError);
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* GET请求
|
|
277
|
-
* @param {string} url 请求地址
|
|
278
|
-
* @param {RequestConfig} [options] 请求选项
|
|
279
|
-
* @returns {Promise<AxiosResponse>} 响应数据
|
|
280
|
-
*/
|
|
281
|
-
get(url, options = {}) {
|
|
282
|
-
return this.request("GET", url, options);
|
|
283
|
-
}
|
|
284
|
-
/**
|
|
285
|
-
* POST请求
|
|
286
|
-
* @param {string} url 请求地址
|
|
287
|
-
* @param {any} [data] 请求数据
|
|
288
|
-
* @param {RequestConfig} [options] 其他选项
|
|
289
|
-
* @returns {Promise<AxiosResponse>} 响应数据
|
|
290
|
-
*/
|
|
291
|
-
post(url, data = {}, options = {}) {
|
|
292
|
-
return this.request("POST", url, { ...options, data });
|
|
293
|
-
}
|
|
294
|
-
/**
|
|
295
|
-
* PUT请求
|
|
296
|
-
* @param {string} url 请求地址
|
|
297
|
-
* @param {any} [data] 请求数据
|
|
298
|
-
* @param {RequestConfig} [options] 其他选项
|
|
299
|
-
* @returns {Promise<AxiosResponse>} 响应数据
|
|
300
|
-
*/
|
|
301
|
-
put(url, data = {}, options = {}) {
|
|
302
|
-
return this.request("PUT", url, { ...options, data });
|
|
303
|
-
}
|
|
304
|
-
/**
|
|
305
|
-
* DELETE请求
|
|
306
|
-
* @param {string} url 请求地址
|
|
307
|
-
* @param {RequestConfig} [options] 请求选项
|
|
308
|
-
* @returns {Promise<AxiosResponse>} 响应数据
|
|
309
|
-
*/
|
|
310
|
-
delete(url, options = {}) {
|
|
311
|
-
return this.request("DELETE", url, options);
|
|
312
|
-
}
|
|
313
|
-
/**
|
|
314
|
-
* PATCH请求
|
|
315
|
-
* @param {string} url 请求地址
|
|
316
|
-
* @param {any} [data] 请求数据
|
|
317
|
-
* @param {RequestConfig} [options] 其他选项
|
|
318
|
-
* @returns {Promise<AxiosResponse>} 响应数据
|
|
319
|
-
*/
|
|
320
|
-
patch(url, data = {}, options = {}) {
|
|
321
|
-
return this.request("PATCH", url, { ...options, data });
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
export { AxiosWrapperPro };
|
|
1
|
+
'use strict';var y=require('axios');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var y__default=/*#__PURE__*/_interopDefault(y);function a(n){return typeof n=="function"}function q(n){return new Promise(e=>setTimeout(e,n))}function R(n){return y__default.default.isCancel(n)}var g={baseURL:"",timeout:1e4,headers:{"Content-Type":"application/json;charset=utf-8"}},d={count:0,delay:1e3,condition:n=>{var e;return R(n)?false:n!=null&&n.response?((e=n==null?void 0:n.response)==null?void 0:e.status)>=500:true}},p={request:n=>n,requestError:n=>Promise.reject(n),response:n=>n,responseError:n=>Promise.reject(n)};var m=class{constructor(e={}){this._abortControllers=new Map,this._retryConfig={...d,...(e==null?void 0:e.retry)||{}},this._paramsSerializer=a(e.paramsSerializer)?e.paramsSerializer:null;let t={...g,...e.baseURL&&{baseURL:e.baseURL},...e.timeout&&{timeout:e.timeout},headers:{...g.headers,...e.headers}};this._paramsSerializer&&(t.paramsSerializer=this._paramsSerializer),this._instance=y__default.default.create(t),this._interceptorConfig=e.interceptors||{},this._initRequestInterceptors(),this._initResponseInterceptors();}_getInterceptors(){let{request:e,requestError:t,response:r,responseError:s}=this._interceptorConfig;return {request:a(e)?e:p.request,requestError:a(t)?t:p.requestError,response:a(r)?r:p.response,responseError:a(s)?s:p.responseError}}_initRequestInterceptors(){let{request:e,requestError:t}=this._getInterceptors();this._requestInterceptorId=this._instance.interceptors.request.use(e,t);}_initResponseInterceptors(){let{response:e,responseError:t}=this._getInterceptors();this._responseInterceptorId=this._instance.interceptors.response.use(r=>{let s=r.config._requestKey;return s&&this._abortControllers.delete(s),e(r)},r=>{var o;let s=(o=r.config)==null?void 0:o._requestKey;return s&&this._abortControllers.delete(s),t(r)});}setRequestInterceptor(e,t){this._requestInterceptorId!==void 0&&this._instance.interceptors.request.eject(this._requestInterceptorId),this._interceptorConfig.request=e,this._interceptorConfig.requestError=t,this._initRequestInterceptors();}setResponseInterceptor(e,t){this._responseInterceptorId!==void 0&&this._instance.interceptors.response.eject(this._responseInterceptorId),this._interceptorConfig.response=e,this._interceptorConfig.responseError=t,this._initResponseInterceptors();}_setupAbortController(e,t){let r=t!=null?t:this._generateRequestKey(e);this.cancelRequest(r);let s=new AbortController;return this._abortControllers.set(r,s),{...e,signal:s.signal,_requestKey:r}}_generateRequestKey(e){let t=(e.method||"GET").toUpperCase(),r=e.url||"",s=e.params?{...e.params}:null;s!=null&&s._t&&delete s._t;let o=a(e.paramsSerializer)?e.paramsSerializer:this._paramsSerializer,c="";s&&(c=o?o(s):this._stableStringify(s));let i="";return ["POST","PUT","PATCH","DELETE"].includes(t)&&e.data&&(i=typeof e.data=="string"?e.data:this._stableStringify(e.data)),`${t}|${r}|${c}|${i}`}_stableStringify(e){return e==null?"":Array.isArray(e)?"["+e.map(t=>this._stableStringify(t)).join(",")+"]":typeof e=="object"?"{"+Object.keys(e).sort().map(s=>`"${s}":${this._stableStringify(e[s])}`).join(",")+"}":JSON.stringify(e)}cancelRequest(e,t){let r=this._abortControllers.get(e);return r?(r.abort(t||"\u8BF7\u6C42\u5DF2\u53D6\u6D88"),this._abortControllers.delete(e),true):false}cancelAllRequests(e){let t=this._abortControllers.size;return this._abortControllers.forEach(r=>{r.abort(e||"\u8BF7\u6C42\u5DF2\u53D6\u6D88");}),this._abortControllers.clear(),t}setHeader(e,t){this._instance.defaults.headers.common[e]=t;}setHeaders(e){Object.entries(e).forEach(([t,r])=>{this._instance.defaults.headers.common[t]=r;});}removeHeader(e){delete this._instance.defaults.headers.common[e];}getBaseURL(){return this._instance.defaults.baseURL||""}setBaseURL(e){this._instance.defaults.baseURL=e;}getInstance(){return this._instance}async request(e,t,r={}){let{requestKey:s,retry:o,...c}=r,i={...this._retryConfig,...o||{}},C={method:e,url:t,...c},_=null,f=s!=null?s:this._generateRequestKey(C);for(let l=0;l<=i.count;l++)try{l>0&&this._abortControllers.delete(f);let u=this._setupAbortController(C,f);return await this._instance.request(u)}catch(u){_=u,this._abortControllers.delete(f);let h=l===i.count,I=i.condition(u),E=y__default.default.isCancel(u);if(h||!I||E)break;i.delay>0&&await q(i.delay);}return Promise.reject(_)}get(e,t={}){return this.request("GET",e,t)}post(e,t={},r={}){return this.request("POST",e,{...r,data:t})}put(e,t={},r={}){return this.request("PUT",e,{...r,data:t})}delete(e,t={}){return this.request("DELETE",e,t)}patch(e,t={},r={}){return this.request("PATCH",e,{...r,data:t})}};exports.AxiosWrapperPro=m;//# sourceMappingURL=index.js.map
|
|
325
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoF,MAAM,OAAO,CAAC;AACzG,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGrF,MAAM,eAAe;IAsBnB,YAAY,UAAkC,EAAE;QAC9C,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;QAEnC,SAAS;QACT,IAAI,CAAC,YAAY,GAAG;YAClB,GAAG,oBAAoB;YACvB,GAAG,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,KAAI,EAAE,CAAC;SAC1B,CAAC;QAEF,YAAY;QACZ,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;QAEhG,YAAY;QACZ,MAAM,WAAW,GAAuB;YACtC,GAAG,cAAc;YACjB,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YACpD,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YACpD,OAAO,EAAE,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE;SAC3D,CAAC;QACF,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,WAAW,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACxD,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE3C,UAAU;QACV,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;QAErD,SAAS;QACT,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,gBAAgB;QACd,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACnF,OAAO;YACL,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO;YACpE,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,YAAY;YACxF,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ;YACxE,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,aAAa;SAC7F,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,wBAAwB;QACtB,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1D,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9F,CAAC;IAED;;OAEG;IACH,yBAAyB;QACvB,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE5D,QAAQ;QACR,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACpE,CAAC,GAAG,EAAE,EAAE;YACN,uCAAuC;YACvC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;YACnC,GAAG,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAE1C,aAAa;YACb,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;;YACR,uCAAuC;YACvC,MAAM,GAAG,GAAG,MAAA,KAAK,CAAC,MAAM,0CAAE,WAAW,CAAC;YACtC,GAAG,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAE1C,eAAe;YACf,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,qBAAqB,CACnB,WAAyC,EACzC,gBAAmD;QAEnD,IAAI,IAAI,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG,WAAW,CAAC;QAC9C,IAAI,CAAC,kBAAkB,CAAC,YAAY,GAAG,gBAAgB,CAAC;QACxD,IAAI,CAAC,wBAAwB,EAAE,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,sBAAsB,CACpB,WAA0C,EAC1C,gBAAoD;QAEpD,IAAI,IAAI,CAAC,sBAAsB,KAAK,SAAS,EAAE,CAAC;YAC9C,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,WAAW,CAAC;QAC/C,IAAI,CAAC,kBAAkB,CAAC,aAAa,GAAG,gBAAgB,CAAC;QACzD,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACH,qBAAqB,CAAC,MAA0B,EAAE,SAAqB;QACrE,MAAM,GAAG,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAE1D,aAAa;QACb,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAExB,yBAAyB;QACzB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAE5C,sCAAsC;QACtC,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAgC,CAAC;IAClG,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,MAA0B;QAC5C,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;QAE7B,sBAAsB;QACtB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAE3D,sBAAsB;QACtB,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,EAAE,CAAC;YACf,OAAO,MAAM,CAAC,EAAE,CAAC;QACnB,CAAC;QAED,8BAA8B;QAC9B,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAE1G,IAAI,SAAS,GAAG,EAAE,CAAC;QAEnB,wBAAwB;QACxB,IAAI,MAAM,EAAE,CAAC;YACX,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9E,CAAC;QAED,oCAAoC;QACpC,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YACvE,OAAO,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/F,CAAC;QAED,OAAO,GAAG,MAAM,IAAI,GAAG,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,gBAAgB,CAAC,GAAQ;QACvB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAC9E,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAa,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/F,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,GAAe,EAAE,MAAe;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC;YACpC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,MAAe;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAC1C,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YAC5C,UAAU,CAAC,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,GAAW,EAAE,KAAa;QAClC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtD,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,OAA+B;QACxC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC/C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,GAAW;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;IAED,cAAc;IACd,UAAU;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;IAC/C,CAAC;IAED,cAAc;IACd,UAAU,CAAC,GAAW;QACpB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,GAAG,GAAG,CAAC;IACxC,CAAC;IAED,kBAAkB;IAClB,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,GAAW,EAAE,SAAwB,EAAE;QACnE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC;QAEpD,SAAS;QACT,MAAM,WAAW,GAAgB;YAC/B,GAAG,IAAI,CAAC,YAAY;YACpB,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;SACjB,CAAC;QAEF,4BAA4B;QAC5B,MAAM,aAAa,GAAuB,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC;QAEzE,IAAI,SAAS,GAAQ,IAAI,CAAC;QAC1B,MAAM,SAAS,GAAe,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;QAEpF,OAAO;QACP,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;YAC9D,IAAI,CAAC;gBACH,yBAAyB;gBACzB,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;oBAChB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC3C,CAAC;gBAED,oBAAoB;gBACpB,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;gBAEzE,OAAO;gBACP,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACzD,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,SAAS,GAAG,KAAK,CAAC;gBAElB,sBAAsB;gBACtB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAEzC,WAAW;gBACX,MAAM,MAAM,GAAG,OAAO,KAAK,WAAW,CAAC,KAAK,CAAC;gBAC7C,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACjD,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC1C,IAAI,MAAM,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE,CAAC;oBAC1C,MAAM;gBACR,CAAC;gBAED,OAAO;gBACP,IAAI,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;oBAC1B,MAAM,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,GAAW,EAAE,UAAyB,EAAE;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;OAMG;IACH,IAAI,CAAC,GAAW,EAAE,OAAY,EAAE,EAAE,UAAyB,EAAE;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;OAMG;IACH,GAAG,CAAC,GAAW,EAAE,OAAY,EAAE,EAAE,UAAyB,EAAE;QAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,GAAW,EAAE,UAAyB,EAAE;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,GAAW,EAAE,OAAY,EAAE,EAAE,UAAyB,EAAE;QAC5D,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;CACF;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"sources":["../src/utils.ts","../src/config.ts","../src/index.ts"],"names":["isFunction","variable","sleep","ms","resolve","isCancel","error","axios","DEFAULT_CONFIG","DEFAULT_RETRY_CONFIG","_a","DEFAULT_INTERCEPTOR","config","response","AxiosWrapperPro","options","axiosConfig","request","requestError","responseError","res","key","interceptor","errorInterceptor","customKey","controller","method","url","params","serializer","paramsStr","dataStr","obj","item","reason","count","value","headers","requestKey","retry","restConfig","retryConfig","requestConfig","lastError","configKey","attempt","finalConfig","isLast","shouldRetry","isCancelled","data"],"mappings":"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","file":"index.js","sourcesContent":["import axios, { AxiosError } from \"axios\";\n\n/**\n * @description 判断一个变量是否为函数\n * @param {unknown} variable 要判断的变量\n * @returns {boolean} 如果变量是函数则返回true,否则返回false\n */\nexport function isFunction(variable: unknown): variable is Function {\n return typeof variable === \"function\";\n}\n\n/**\n * @description 睡眠函数\n * @param {number} ms 毫秒数\n * @returns {Promise<void>} 睡眠的Promise\n */\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * @description 判断是否为axios取消请求的错误\n * @param {AxiosError} error 错误对象\n * @returns {boolean} 如果是axios取消请求的错误则返回true,否则返回false\n */\nexport function isCancel(error: AxiosError<any>) {\n return axios.isCancel(error);\n}\n","import { AxiosError, AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from \"axios\";\nimport { isCancel } from \"./utils\";\nimport type { InterceptorConfig, RetryConfig } from \"./types\";\n\n/**\n * Axios默认配置\n */\nexport const DEFAULT_CONFIG: AxiosRequestConfig = {\n baseURL: \"\",\n timeout: 10000,\n headers: {\n \"Content-Type\": \"application/json;charset=utf-8\",\n },\n};\n\n/**\n * 接口重试默认配置\n */\nexport const DEFAULT_RETRY_CONFIG: RetryConfig = {\n count: 0,\n delay: 1000,\n condition: (error: AxiosError): boolean => {\n if (isCancel(error)) return false;\n if (!error?.response) return true; // 网络错误\n return error?.response?.status >= 500; // 服务端错误\n },\n};\n\n/**\n * 默认拦截器配置\n */\nexport const DEFAULT_INTERCEPTOR: InterceptorConfig = {\n request: (config: InternalAxiosRequestConfig) => config,\n requestError: (error: AxiosError) => Promise.reject(error),\n response: (response: AxiosResponse) => response,\n responseError: (error: AxiosError) => Promise.reject(error),\n};\n","import axios, { AxiosError, AxiosInstance, AxiosRequestConfig, InternalAxiosRequestConfig } from \"axios\";\nimport { isFunction, sleep } from \"./utils\";\nimport { DEFAULT_CONFIG, DEFAULT_RETRY_CONFIG, DEFAULT_INTERCEPTOR } from \"./config\";\nimport type { AxiosWrapperProOptions, RetryConfig, InterceptorConfig, RequestConfig, RequestKey } from \"./types\";\n\nclass AxiosWrapperPro {\n /** 中断控制器 */\n private _abortControllers: Map<RequestKey, AbortController>;\n\n /** 请求拦截器ID */\n private _requestInterceptorId!: number;\n\n /** 响应拦截器ID */\n private _responseInterceptorId!: number;\n\n /** 拦截器配置 */\n private _interceptorConfig: Partial<InterceptorConfig>;\n\n /** 重试配置(完整配置) */\n private _retryConfig: RetryConfig;\n\n /** 参数序列化函数 */\n private _paramsSerializer: ((params: any) => string) | null;\n\n /** Axios实例 */\n private _instance: AxiosInstance;\n\n constructor(options: AxiosWrapperProOptions = {}) {\n this._abortControllers = new Map();\n\n // 接口重试配置\n this._retryConfig = {\n ...DEFAULT_RETRY_CONFIG,\n ...(options?.retry || {}),\n };\n\n // 保存参数序列化函数\n this._paramsSerializer = isFunction(options.paramsSerializer) ? options.paramsSerializer : null;\n\n // 创建axios实例\n const axiosConfig: AxiosRequestConfig = {\n ...DEFAULT_CONFIG,\n ...(options.baseURL && { baseURL: options.baseURL }),\n ...(options.timeout && { timeout: options.timeout }),\n headers: { ...DEFAULT_CONFIG.headers, ...options.headers },\n };\n if (this._paramsSerializer) {\n axiosConfig.paramsSerializer = this._paramsSerializer;\n }\n this._instance = axios.create(axiosConfig);\n\n // 保存拦截器配置\n this._interceptorConfig = options.interceptors || {};\n\n // 初始化拦截器\n this._initRequestInterceptors();\n this._initResponseInterceptors();\n }\n\n /**\n * 获取拦截器配置,未配置的使用默认值\n * @returns {InterceptorConfig} 完整的拦截器配置\n */\n _getInterceptors(): InterceptorConfig {\n const { request, requestError, response, responseError } = this._interceptorConfig;\n return {\n request: isFunction(request) ? request : DEFAULT_INTERCEPTOR.request,\n requestError: isFunction(requestError) ? requestError : DEFAULT_INTERCEPTOR.requestError,\n response: isFunction(response) ? response : DEFAULT_INTERCEPTOR.response,\n responseError: isFunction(responseError) ? responseError : DEFAULT_INTERCEPTOR.responseError,\n };\n }\n\n /**\n * 初始化请求拦截器\n */\n _initRequestInterceptors() {\n const { request, requestError } = this._getInterceptors();\n this._requestInterceptorId = this._instance.interceptors.request.use(request, requestError);\n }\n\n /**\n * 初始化响应拦截器\n */\n _initResponseInterceptors() {\n const { response, responseError } = this._getInterceptors();\n\n // 响应拦截器\n this._responseInterceptorId = this._instance.interceptors.response.use(\n (res) => {\n // 清理AbortController,使用请求时保存的 key 确保一致性\n const key = res.config._requestKey;\n key && this._abortControllers.delete(key);\n\n // 执行自定义响应拦截器\n return response(res);\n },\n (error) => {\n // 清理AbortController,使用请求时保存的 key 确保一致性\n const key = error.config?._requestKey;\n key && this._abortControllers.delete(key);\n\n // 执行自定义响应错误拦截器\n return responseError(error);\n }\n );\n }\n\n /**\n * 设置请求拦截器,移除旧拦截器,更新拦截器配置,重新初始化拦截器\n * @param {InterceptorConfig[\"request\"]} interceptor 拦截器\n * @param {InterceptorConfig[\"requestError\"]} errorInterceptor 错误拦截器\n */\n setRequestInterceptor(\n interceptor: InterceptorConfig[\"request\"],\n errorInterceptor: InterceptorConfig[\"requestError\"]\n ) {\n if (this._requestInterceptorId !== undefined) {\n this._instance.interceptors.request.eject(this._requestInterceptorId);\n }\n this._interceptorConfig.request = interceptor;\n this._interceptorConfig.requestError = errorInterceptor;\n this._initRequestInterceptors();\n }\n\n /**\n * 设置响应拦截器,移除旧拦截器,更新拦截器配置,重新初始化拦截器\n * @param {InterceptorConfig[\"response\"]} interceptor 拦截器\n * @param {InterceptorConfig[\"responseError\"]} errorInterceptor 错误拦截器\n */\n setResponseInterceptor(\n interceptor: InterceptorConfig[\"response\"],\n errorInterceptor: InterceptorConfig[\"responseError\"]\n ) {\n if (this._responseInterceptorId !== undefined) {\n this._instance.interceptors.response.eject(this._responseInterceptorId);\n }\n this._interceptorConfig.response = interceptor;\n this._interceptorConfig.responseError = errorInterceptor;\n this._initResponseInterceptors();\n }\n\n /**\n * 设置取消控制器\n * @param {AxiosRequestConfig} config 请求配置\n * @param {RequestKey} customKey 自定义key\n * @returns {InternalAxiosRequestConfig} 处理后的配置\n */\n _setupAbortController(config: AxiosRequestConfig, customKey: RequestKey): InternalAxiosRequestConfig {\n const key = customKey ?? this._generateRequestKey(config);\n\n // 取消已存在的相同请求\n this.cancelRequest(key);\n\n // 设置当前请求的AbortController\n const controller = new AbortController();\n this._abortControllers.set(key, controller);\n\n // 将 key 保存到 config 中,确保响应拦截器使用相同的 key\n return { ...config, signal: controller.signal, _requestKey: key } as InternalAxiosRequestConfig;\n }\n\n /**\n * 生成请求唯一标识\n * @param {AxiosRequestConfig} config 请求配置\n * @returns {string} 请求唯一标识\n */\n _generateRequestKey(config: AxiosRequestConfig): string {\n const method = (config.method || \"GET\").toUpperCase();\n const url = config.url || \"\";\n\n // 复制params对象,避免修改原始配置\n const params = config.params ? { ...config.params } : null;\n\n // 删除_t参数,避免影响生成请求唯一标识\n if (params?._t) {\n delete params._t;\n }\n\n // 获取序列化函数:优先使用请求级配置,其次使用实例级配置\n const serializer = isFunction(config.paramsSerializer) ? config.paramsSerializer : this._paramsSerializer;\n\n let paramsStr = \"\";\n\n // 所有HTTP方法都可能携带params参数\n if (params) {\n paramsStr = serializer ? serializer(params) : this._stableStringify(params);\n }\n\n // POST/PUT/PATCH/DELETE 可能同时携带 data\n let dataStr = \"\";\n if ([\"POST\", \"PUT\", \"PATCH\", \"DELETE\"].includes(method) && config.data) {\n dataStr = typeof config.data === \"string\" ? config.data : this._stableStringify(config.data);\n }\n\n return `${method}|${url}|${paramsStr}|${dataStr}`;\n }\n\n /**\n * 稳定的JSON序列化,确保相同内容生成相同字符串\n * @param {any} obj 待序列化对象\n * @returns {string} 序列化后的字符串\n */\n _stableStringify(obj: any): string {\n if (obj === null || obj === undefined) {\n return \"\";\n }\n if (Array.isArray(obj)) {\n return \"[\" + obj.map((item) => this._stableStringify(item)).join(\",\") + \"]\";\n }\n if (typeof obj === \"object\") {\n const sortedKeys = Object.keys(obj).sort();\n const pairs: string[] = sortedKeys.map((key) => `\"${key}\":${this._stableStringify(obj[key])}`);\n return \"{\" + pairs.join(\",\") + \"}\";\n }\n return JSON.stringify(obj);\n }\n\n /**\n * 取消指定请求\n * @param {RequestKey} key 请求标识\n * @param {string} [reason] 取消原因\n * @returns {boolean} 是否成功取消\n */\n cancelRequest(key: RequestKey, reason?: string): boolean {\n const controller = this._abortControllers.get(key);\n if (controller) {\n controller.abort(reason || \"请求已取消\");\n this._abortControllers.delete(key);\n return true;\n }\n return false;\n }\n\n /**\n * 取消所有请求\n * @param {string} [reason] 取消原因\n * @returns {number} 被取消的请求数量\n */\n cancelAllRequests(reason?: string): number {\n const count = this._abortControllers.size;\n this._abortControllers.forEach((controller) => {\n controller.abort(reason || \"请求已取消\");\n });\n this._abortControllers.clear();\n return count;\n }\n\n /**\n * 设置默认请求头\n * @param {string} key 请求头名称\n * @param {string} value 请求头值\n */\n setHeader(key: string, value: string): void {\n this._instance.defaults.headers.common[key] = value;\n }\n\n /**\n * 批量设置请求头\n * @param {Record<string, string>} headers 请求头对象\n */\n setHeaders(headers: Record<string, string>): void {\n Object.entries(headers).forEach(([key, value]) => {\n this._instance.defaults.headers.common[key] = value;\n });\n }\n\n /**\n * 移除请求头\n * @param {string} key 请求头名称\n */\n removeHeader(key: string): void {\n delete this._instance.defaults.headers.common[key];\n }\n\n /** 获取基础URL */\n getBaseURL(): string {\n return this._instance.defaults.baseURL || \"\";\n }\n\n /** 设置基础URL */\n setBaseURL(url: string): void {\n this._instance.defaults.baseURL = url;\n }\n\n /** 获取 Axios 实例 */\n getInstance(): AxiosInstance {\n return this._instance;\n }\n\n /**\n * 通用请求方法\n * @param {string} method 请求方法\n * @param {string} url 请求地址\n * @param {RequestConfig} [config={}] 请求配置\n * @returns {Promise<AxiosResponse>} 响应数据\n */\n async request(method: string, url: string, config: RequestConfig = {}) {\n const { requestKey, retry, ...restConfig } = config;\n\n // 合并重试配置\n const retryConfig: RetryConfig = {\n ...this._retryConfig,\n ...(retry || {}),\n };\n\n // 构建请求配置,避免重复的 method 和 url\n const requestConfig: AxiosRequestConfig = { method, url, ...restConfig };\n\n let lastError: any = null;\n const configKey: RequestKey = requestKey ?? this._generateRequestKey(requestConfig);\n\n // 重试循环\n for (let attempt = 0; attempt <= retryConfig.count; attempt++) {\n try {\n // 重试时清理旧的AbortController\n if (attempt > 0) {\n this._abortControllers.delete(configKey);\n }\n\n // 设置AbortController\n const finalConfig = this._setupAbortController(requestConfig, configKey);\n\n // 调用接口\n const result = await this._instance.request(finalConfig);\n return result;\n } catch (error: any) {\n lastError = error;\n\n // 清理旧的AbortController\n this._abortControllers.delete(configKey);\n\n // 判断是否继续重试\n const isLast = attempt === retryConfig.count;\n const shouldRetry = retryConfig.condition(error);\n const isCancelled = axios.isCancel(error);\n if (isLast || !shouldRetry || isCancelled) {\n break;\n }\n\n // 延迟重试\n if (retryConfig.delay > 0) {\n await sleep(retryConfig.delay);\n }\n }\n }\n\n return Promise.reject(lastError);\n }\n\n /**\n * GET请求\n * @param {string} url 请求地址\n * @param {RequestConfig} [options] 请求选项\n * @returns {Promise<AxiosResponse>} 响应数据\n */\n get(url: string, options: RequestConfig = {}) {\n return this.request(\"GET\", url, options);\n }\n\n /**\n * POST请求\n * @param {string} url 请求地址\n * @param {any} [data] 请求数据\n * @param {RequestConfig} [options] 其他选项\n * @returns {Promise<AxiosResponse>} 响应数据\n */\n post(url: string, data: any = {}, options: RequestConfig = {}) {\n return this.request(\"POST\", url, { ...options, data });\n }\n\n /**\n * PUT请求\n * @param {string} url 请求地址\n * @param {any} [data] 请求数据\n * @param {RequestConfig} [options] 其他选项\n * @returns {Promise<AxiosResponse>} 响应数据\n */\n put(url: string, data: any = {}, options: RequestConfig = {}) {\n return this.request(\"PUT\", url, { ...options, data });\n }\n\n /**\n * DELETE请求\n * @param {string} url 请求地址\n * @param {RequestConfig} [options] 请求选项\n * @returns {Promise<AxiosResponse>} 响应数据\n */\n delete(url: string, options: RequestConfig = {}) {\n return this.request(\"DELETE\", url, options);\n }\n\n /**\n * PATCH请求\n * @param {string} url 请求地址\n * @param {any} [data] 请求数据\n * @param {RequestConfig} [options] 其他选项\n * @returns {Promise<AxiosResponse>} 响应数据\n */\n patch(url: string, data: any = {}, options: RequestConfig = {}) {\n return this.request(\"PATCH\", url, { ...options, data });\n }\n}\n\nexport { AxiosWrapperPro };\nexport type { AxiosWrapperProOptions, RetryConfig, InterceptorConfig, RequestConfig, RequestKey } from \"./types\";\n"]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import y from'axios';function a(n){return typeof n=="function"}function q(n){return new Promise(e=>setTimeout(e,n))}function R(n){return y.isCancel(n)}var g={baseURL:"",timeout:1e4,headers:{"Content-Type":"application/json;charset=utf-8"}},d={count:0,delay:1e3,condition:n=>{var e;return R(n)?false:n!=null&&n.response?((e=n==null?void 0:n.response)==null?void 0:e.status)>=500:true}},p={request:n=>n,requestError:n=>Promise.reject(n),response:n=>n,responseError:n=>Promise.reject(n)};var m=class{constructor(e={}){this._abortControllers=new Map,this._retryConfig={...d,...(e==null?void 0:e.retry)||{}},this._paramsSerializer=a(e.paramsSerializer)?e.paramsSerializer:null;let t={...g,...e.baseURL&&{baseURL:e.baseURL},...e.timeout&&{timeout:e.timeout},headers:{...g.headers,...e.headers}};this._paramsSerializer&&(t.paramsSerializer=this._paramsSerializer),this._instance=y.create(t),this._interceptorConfig=e.interceptors||{},this._initRequestInterceptors(),this._initResponseInterceptors();}_getInterceptors(){let{request:e,requestError:t,response:r,responseError:s}=this._interceptorConfig;return {request:a(e)?e:p.request,requestError:a(t)?t:p.requestError,response:a(r)?r:p.response,responseError:a(s)?s:p.responseError}}_initRequestInterceptors(){let{request:e,requestError:t}=this._getInterceptors();this._requestInterceptorId=this._instance.interceptors.request.use(e,t);}_initResponseInterceptors(){let{response:e,responseError:t}=this._getInterceptors();this._responseInterceptorId=this._instance.interceptors.response.use(r=>{let s=r.config._requestKey;return s&&this._abortControllers.delete(s),e(r)},r=>{var o;let s=(o=r.config)==null?void 0:o._requestKey;return s&&this._abortControllers.delete(s),t(r)});}setRequestInterceptor(e,t){this._requestInterceptorId!==void 0&&this._instance.interceptors.request.eject(this._requestInterceptorId),this._interceptorConfig.request=e,this._interceptorConfig.requestError=t,this._initRequestInterceptors();}setResponseInterceptor(e,t){this._responseInterceptorId!==void 0&&this._instance.interceptors.response.eject(this._responseInterceptorId),this._interceptorConfig.response=e,this._interceptorConfig.responseError=t,this._initResponseInterceptors();}_setupAbortController(e,t){let r=t!=null?t:this._generateRequestKey(e);this.cancelRequest(r);let s=new AbortController;return this._abortControllers.set(r,s),{...e,signal:s.signal,_requestKey:r}}_generateRequestKey(e){let t=(e.method||"GET").toUpperCase(),r=e.url||"",s=e.params?{...e.params}:null;s!=null&&s._t&&delete s._t;let o=a(e.paramsSerializer)?e.paramsSerializer:this._paramsSerializer,c="";s&&(c=o?o(s):this._stableStringify(s));let i="";return ["POST","PUT","PATCH","DELETE"].includes(t)&&e.data&&(i=typeof e.data=="string"?e.data:this._stableStringify(e.data)),`${t}|${r}|${c}|${i}`}_stableStringify(e){return e==null?"":Array.isArray(e)?"["+e.map(t=>this._stableStringify(t)).join(",")+"]":typeof e=="object"?"{"+Object.keys(e).sort().map(s=>`"${s}":${this._stableStringify(e[s])}`).join(",")+"}":JSON.stringify(e)}cancelRequest(e,t){let r=this._abortControllers.get(e);return r?(r.abort(t||"\u8BF7\u6C42\u5DF2\u53D6\u6D88"),this._abortControllers.delete(e),true):false}cancelAllRequests(e){let t=this._abortControllers.size;return this._abortControllers.forEach(r=>{r.abort(e||"\u8BF7\u6C42\u5DF2\u53D6\u6D88");}),this._abortControllers.clear(),t}setHeader(e,t){this._instance.defaults.headers.common[e]=t;}setHeaders(e){Object.entries(e).forEach(([t,r])=>{this._instance.defaults.headers.common[t]=r;});}removeHeader(e){delete this._instance.defaults.headers.common[e];}getBaseURL(){return this._instance.defaults.baseURL||""}setBaseURL(e){this._instance.defaults.baseURL=e;}getInstance(){return this._instance}async request(e,t,r={}){let{requestKey:s,retry:o,...c}=r,i={...this._retryConfig,...o||{}},C={method:e,url:t,...c},_=null,f=s!=null?s:this._generateRequestKey(C);for(let l=0;l<=i.count;l++)try{l>0&&this._abortControllers.delete(f);let u=this._setupAbortController(C,f);return await this._instance.request(u)}catch(u){_=u,this._abortControllers.delete(f);let h=l===i.count,I=i.condition(u),E=y.isCancel(u);if(h||!I||E)break;i.delay>0&&await q(i.delay);}return Promise.reject(_)}get(e,t={}){return this.request("GET",e,t)}post(e,t={},r={}){return this.request("POST",e,{...r,data:t})}put(e,t={},r={}){return this.request("PUT",e,{...r,data:t})}delete(e,t={}){return this.request("DELETE",e,t)}patch(e,t={},r={}){return this.request("PATCH",e,{...r,data:t})}};export{m as AxiosWrapperPro};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils.ts","../src/config.ts","../src/index.ts"],"names":["isFunction","variable","sleep","ms","resolve","isCancel","error","axios","DEFAULT_CONFIG","DEFAULT_RETRY_CONFIG","_a","DEFAULT_INTERCEPTOR","config","response","AxiosWrapperPro","options","axiosConfig","request","requestError","responseError","res","key","interceptor","errorInterceptor","customKey","controller","method","url","params","serializer","paramsStr","dataStr","obj","item","reason","count","value","headers","requestKey","retry","restConfig","retryConfig","requestConfig","lastError","configKey","attempt","finalConfig","isLast","shouldRetry","isCancelled","data"],"mappings":"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","file":"index.mjs","sourcesContent":["import axios, { AxiosError } from \"axios\";\n\n/**\n * @description 判断一个变量是否为函数\n * @param {unknown} variable 要判断的变量\n * @returns {boolean} 如果变量是函数则返回true,否则返回false\n */\nexport function isFunction(variable: unknown): variable is Function {\n return typeof variable === \"function\";\n}\n\n/**\n * @description 睡眠函数\n * @param {number} ms 毫秒数\n * @returns {Promise<void>} 睡眠的Promise\n */\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * @description 判断是否为axios取消请求的错误\n * @param {AxiosError} error 错误对象\n * @returns {boolean} 如果是axios取消请求的错误则返回true,否则返回false\n */\nexport function isCancel(error: AxiosError<any>) {\n return axios.isCancel(error);\n}\n","import { AxiosError, AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from \"axios\";\nimport { isCancel } from \"./utils\";\nimport type { InterceptorConfig, RetryConfig } from \"./types\";\n\n/**\n * Axios默认配置\n */\nexport const DEFAULT_CONFIG: AxiosRequestConfig = {\n baseURL: \"\",\n timeout: 10000,\n headers: {\n \"Content-Type\": \"application/json;charset=utf-8\",\n },\n};\n\n/**\n * 接口重试默认配置\n */\nexport const DEFAULT_RETRY_CONFIG: RetryConfig = {\n count: 0,\n delay: 1000,\n condition: (error: AxiosError): boolean => {\n if (isCancel(error)) return false;\n if (!error?.response) return true; // 网络错误\n return error?.response?.status >= 500; // 服务端错误\n },\n};\n\n/**\n * 默认拦截器配置\n */\nexport const DEFAULT_INTERCEPTOR: InterceptorConfig = {\n request: (config: InternalAxiosRequestConfig) => config,\n requestError: (error: AxiosError) => Promise.reject(error),\n response: (response: AxiosResponse) => response,\n responseError: (error: AxiosError) => Promise.reject(error),\n};\n","import axios, { AxiosError, AxiosInstance, AxiosRequestConfig, InternalAxiosRequestConfig } from \"axios\";\nimport { isFunction, sleep } from \"./utils\";\nimport { DEFAULT_CONFIG, DEFAULT_RETRY_CONFIG, DEFAULT_INTERCEPTOR } from \"./config\";\nimport type { AxiosWrapperProOptions, RetryConfig, InterceptorConfig, RequestConfig, RequestKey } from \"./types\";\n\nclass AxiosWrapperPro {\n /** 中断控制器 */\n private _abortControllers: Map<RequestKey, AbortController>;\n\n /** 请求拦截器ID */\n private _requestInterceptorId!: number;\n\n /** 响应拦截器ID */\n private _responseInterceptorId!: number;\n\n /** 拦截器配置 */\n private _interceptorConfig: Partial<InterceptorConfig>;\n\n /** 重试配置(完整配置) */\n private _retryConfig: RetryConfig;\n\n /** 参数序列化函数 */\n private _paramsSerializer: ((params: any) => string) | null;\n\n /** Axios实例 */\n private _instance: AxiosInstance;\n\n constructor(options: AxiosWrapperProOptions = {}) {\n this._abortControllers = new Map();\n\n // 接口重试配置\n this._retryConfig = {\n ...DEFAULT_RETRY_CONFIG,\n ...(options?.retry || {}),\n };\n\n // 保存参数序列化函数\n this._paramsSerializer = isFunction(options.paramsSerializer) ? options.paramsSerializer : null;\n\n // 创建axios实例\n const axiosConfig: AxiosRequestConfig = {\n ...DEFAULT_CONFIG,\n ...(options.baseURL && { baseURL: options.baseURL }),\n ...(options.timeout && { timeout: options.timeout }),\n headers: { ...DEFAULT_CONFIG.headers, ...options.headers },\n };\n if (this._paramsSerializer) {\n axiosConfig.paramsSerializer = this._paramsSerializer;\n }\n this._instance = axios.create(axiosConfig);\n\n // 保存拦截器配置\n this._interceptorConfig = options.interceptors || {};\n\n // 初始化拦截器\n this._initRequestInterceptors();\n this._initResponseInterceptors();\n }\n\n /**\n * 获取拦截器配置,未配置的使用默认值\n * @returns {InterceptorConfig} 完整的拦截器配置\n */\n _getInterceptors(): InterceptorConfig {\n const { request, requestError, response, responseError } = this._interceptorConfig;\n return {\n request: isFunction(request) ? request : DEFAULT_INTERCEPTOR.request,\n requestError: isFunction(requestError) ? requestError : DEFAULT_INTERCEPTOR.requestError,\n response: isFunction(response) ? response : DEFAULT_INTERCEPTOR.response,\n responseError: isFunction(responseError) ? responseError : DEFAULT_INTERCEPTOR.responseError,\n };\n }\n\n /**\n * 初始化请求拦截器\n */\n _initRequestInterceptors() {\n const { request, requestError } = this._getInterceptors();\n this._requestInterceptorId = this._instance.interceptors.request.use(request, requestError);\n }\n\n /**\n * 初始化响应拦截器\n */\n _initResponseInterceptors() {\n const { response, responseError } = this._getInterceptors();\n\n // 响应拦截器\n this._responseInterceptorId = this._instance.interceptors.response.use(\n (res) => {\n // 清理AbortController,使用请求时保存的 key 确保一致性\n const key = res.config._requestKey;\n key && this._abortControllers.delete(key);\n\n // 执行自定义响应拦截器\n return response(res);\n },\n (error) => {\n // 清理AbortController,使用请求时保存的 key 确保一致性\n const key = error.config?._requestKey;\n key && this._abortControllers.delete(key);\n\n // 执行自定义响应错误拦截器\n return responseError(error);\n }\n );\n }\n\n /**\n * 设置请求拦截器,移除旧拦截器,更新拦截器配置,重新初始化拦截器\n * @param {InterceptorConfig[\"request\"]} interceptor 拦截器\n * @param {InterceptorConfig[\"requestError\"]} errorInterceptor 错误拦截器\n */\n setRequestInterceptor(\n interceptor: InterceptorConfig[\"request\"],\n errorInterceptor: InterceptorConfig[\"requestError\"]\n ) {\n if (this._requestInterceptorId !== undefined) {\n this._instance.interceptors.request.eject(this._requestInterceptorId);\n }\n this._interceptorConfig.request = interceptor;\n this._interceptorConfig.requestError = errorInterceptor;\n this._initRequestInterceptors();\n }\n\n /**\n * 设置响应拦截器,移除旧拦截器,更新拦截器配置,重新初始化拦截器\n * @param {InterceptorConfig[\"response\"]} interceptor 拦截器\n * @param {InterceptorConfig[\"responseError\"]} errorInterceptor 错误拦截器\n */\n setResponseInterceptor(\n interceptor: InterceptorConfig[\"response\"],\n errorInterceptor: InterceptorConfig[\"responseError\"]\n ) {\n if (this._responseInterceptorId !== undefined) {\n this._instance.interceptors.response.eject(this._responseInterceptorId);\n }\n this._interceptorConfig.response = interceptor;\n this._interceptorConfig.responseError = errorInterceptor;\n this._initResponseInterceptors();\n }\n\n /**\n * 设置取消控制器\n * @param {AxiosRequestConfig} config 请求配置\n * @param {RequestKey} customKey 自定义key\n * @returns {InternalAxiosRequestConfig} 处理后的配置\n */\n _setupAbortController(config: AxiosRequestConfig, customKey: RequestKey): InternalAxiosRequestConfig {\n const key = customKey ?? this._generateRequestKey(config);\n\n // 取消已存在的相同请求\n this.cancelRequest(key);\n\n // 设置当前请求的AbortController\n const controller = new AbortController();\n this._abortControllers.set(key, controller);\n\n // 将 key 保存到 config 中,确保响应拦截器使用相同的 key\n return { ...config, signal: controller.signal, _requestKey: key } as InternalAxiosRequestConfig;\n }\n\n /**\n * 生成请求唯一标识\n * @param {AxiosRequestConfig} config 请求配置\n * @returns {string} 请求唯一标识\n */\n _generateRequestKey(config: AxiosRequestConfig): string {\n const method = (config.method || \"GET\").toUpperCase();\n const url = config.url || \"\";\n\n // 复制params对象,避免修改原始配置\n const params = config.params ? { ...config.params } : null;\n\n // 删除_t参数,避免影响生成请求唯一标识\n if (params?._t) {\n delete params._t;\n }\n\n // 获取序列化函数:优先使用请求级配置,其次使用实例级配置\n const serializer = isFunction(config.paramsSerializer) ? config.paramsSerializer : this._paramsSerializer;\n\n let paramsStr = \"\";\n\n // 所有HTTP方法都可能携带params参数\n if (params) {\n paramsStr = serializer ? serializer(params) : this._stableStringify(params);\n }\n\n // POST/PUT/PATCH/DELETE 可能同时携带 data\n let dataStr = \"\";\n if ([\"POST\", \"PUT\", \"PATCH\", \"DELETE\"].includes(method) && config.data) {\n dataStr = typeof config.data === \"string\" ? config.data : this._stableStringify(config.data);\n }\n\n return `${method}|${url}|${paramsStr}|${dataStr}`;\n }\n\n /**\n * 稳定的JSON序列化,确保相同内容生成相同字符串\n * @param {any} obj 待序列化对象\n * @returns {string} 序列化后的字符串\n */\n _stableStringify(obj: any): string {\n if (obj === null || obj === undefined) {\n return \"\";\n }\n if (Array.isArray(obj)) {\n return \"[\" + obj.map((item) => this._stableStringify(item)).join(\",\") + \"]\";\n }\n if (typeof obj === \"object\") {\n const sortedKeys = Object.keys(obj).sort();\n const pairs: string[] = sortedKeys.map((key) => `\"${key}\":${this._stableStringify(obj[key])}`);\n return \"{\" + pairs.join(\",\") + \"}\";\n }\n return JSON.stringify(obj);\n }\n\n /**\n * 取消指定请求\n * @param {RequestKey} key 请求标识\n * @param {string} [reason] 取消原因\n * @returns {boolean} 是否成功取消\n */\n cancelRequest(key: RequestKey, reason?: string): boolean {\n const controller = this._abortControllers.get(key);\n if (controller) {\n controller.abort(reason || \"请求已取消\");\n this._abortControllers.delete(key);\n return true;\n }\n return false;\n }\n\n /**\n * 取消所有请求\n * @param {string} [reason] 取消原因\n * @returns {number} 被取消的请求数量\n */\n cancelAllRequests(reason?: string): number {\n const count = this._abortControllers.size;\n this._abortControllers.forEach((controller) => {\n controller.abort(reason || \"请求已取消\");\n });\n this._abortControllers.clear();\n return count;\n }\n\n /**\n * 设置默认请求头\n * @param {string} key 请求头名称\n * @param {string} value 请求头值\n */\n setHeader(key: string, value: string): void {\n this._instance.defaults.headers.common[key] = value;\n }\n\n /**\n * 批量设置请求头\n * @param {Record<string, string>} headers 请求头对象\n */\n setHeaders(headers: Record<string, string>): void {\n Object.entries(headers).forEach(([key, value]) => {\n this._instance.defaults.headers.common[key] = value;\n });\n }\n\n /**\n * 移除请求头\n * @param {string} key 请求头名称\n */\n removeHeader(key: string): void {\n delete this._instance.defaults.headers.common[key];\n }\n\n /** 获取基础URL */\n getBaseURL(): string {\n return this._instance.defaults.baseURL || \"\";\n }\n\n /** 设置基础URL */\n setBaseURL(url: string): void {\n this._instance.defaults.baseURL = url;\n }\n\n /** 获取 Axios 实例 */\n getInstance(): AxiosInstance {\n return this._instance;\n }\n\n /**\n * 通用请求方法\n * @param {string} method 请求方法\n * @param {string} url 请求地址\n * @param {RequestConfig} [config={}] 请求配置\n * @returns {Promise<AxiosResponse>} 响应数据\n */\n async request(method: string, url: string, config: RequestConfig = {}) {\n const { requestKey, retry, ...restConfig } = config;\n\n // 合并重试配置\n const retryConfig: RetryConfig = {\n ...this._retryConfig,\n ...(retry || {}),\n };\n\n // 构建请求配置,避免重复的 method 和 url\n const requestConfig: AxiosRequestConfig = { method, url, ...restConfig };\n\n let lastError: any = null;\n const configKey: RequestKey = requestKey ?? this._generateRequestKey(requestConfig);\n\n // 重试循环\n for (let attempt = 0; attempt <= retryConfig.count; attempt++) {\n try {\n // 重试时清理旧的AbortController\n if (attempt > 0) {\n this._abortControllers.delete(configKey);\n }\n\n // 设置AbortController\n const finalConfig = this._setupAbortController(requestConfig, configKey);\n\n // 调用接口\n const result = await this._instance.request(finalConfig);\n return result;\n } catch (error: any) {\n lastError = error;\n\n // 清理旧的AbortController\n this._abortControllers.delete(configKey);\n\n // 判断是否继续重试\n const isLast = attempt === retryConfig.count;\n const shouldRetry = retryConfig.condition(error);\n const isCancelled = axios.isCancel(error);\n if (isLast || !shouldRetry || isCancelled) {\n break;\n }\n\n // 延迟重试\n if (retryConfig.delay > 0) {\n await sleep(retryConfig.delay);\n }\n }\n }\n\n return Promise.reject(lastError);\n }\n\n /**\n * GET请求\n * @param {string} url 请求地址\n * @param {RequestConfig} [options] 请求选项\n * @returns {Promise<AxiosResponse>} 响应数据\n */\n get(url: string, options: RequestConfig = {}) {\n return this.request(\"GET\", url, options);\n }\n\n /**\n * POST请求\n * @param {string} url 请求地址\n * @param {any} [data] 请求数据\n * @param {RequestConfig} [options] 其他选项\n * @returns {Promise<AxiosResponse>} 响应数据\n */\n post(url: string, data: any = {}, options: RequestConfig = {}) {\n return this.request(\"POST\", url, { ...options, data });\n }\n\n /**\n * PUT请求\n * @param {string} url 请求地址\n * @param {any} [data] 请求数据\n * @param {RequestConfig} [options] 其他选项\n * @returns {Promise<AxiosResponse>} 响应数据\n */\n put(url: string, data: any = {}, options: RequestConfig = {}) {\n return this.request(\"PUT\", url, { ...options, data });\n }\n\n /**\n * DELETE请求\n * @param {string} url 请求地址\n * @param {RequestConfig} [options] 请求选项\n * @returns {Promise<AxiosResponse>} 响应数据\n */\n delete(url: string, options: RequestConfig = {}) {\n return this.request(\"DELETE\", url, options);\n }\n\n /**\n * PATCH请求\n * @param {string} url 请求地址\n * @param {any} [data] 请求数据\n * @param {RequestConfig} [options] 其他选项\n * @returns {Promise<AxiosResponse>} 响应数据\n */\n patch(url: string, data: any = {}, options: RequestConfig = {}) {\n return this.request(\"PATCH\", url, { ...options, data });\n }\n}\n\nexport { AxiosWrapperPro };\nexport type { AxiosWrapperProOptions, RetryConfig, InterceptorConfig, RequestConfig, RequestKey } from \"./types\";\n"]}
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "axios-wrapper-pro",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"description": "基于 Axios 的增强型 HTTP 客户端,支持请求去重、自动取消、重试机制和可配置拦截器",
|
|
5
5
|
"scripts": {
|
|
6
|
-
"build": "
|
|
7
|
-
"build:watch": "
|
|
6
|
+
"build": "tsup",
|
|
7
|
+
"build:watch": "tsup --watch",
|
|
8
8
|
"release": "npm publish",
|
|
9
9
|
"test": "npm test"
|
|
10
10
|
},
|
|
11
11
|
"main": "dist/index.js",
|
|
12
|
-
"module": "dist/index.
|
|
12
|
+
"module": "dist/index.mjs",
|
|
13
13
|
"types": "dist/index.d.ts",
|
|
14
14
|
"files": [
|
|
15
15
|
"dist/**/*",
|
|
@@ -36,9 +36,10 @@
|
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@types/node": "^22.0.0",
|
|
39
|
-
"typescript": "^5.0.0",
|
|
40
39
|
"axios": "^1.6.0",
|
|
41
40
|
"ts-loader": "^9.5.0",
|
|
41
|
+
"tsup": "^8.5.1",
|
|
42
|
+
"typescript": "^5.0.0",
|
|
42
43
|
"webpack": "^5.90.0",
|
|
43
44
|
"webpack-cli": "^5.1.0"
|
|
44
45
|
}
|
package/dist/config.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { AxiosRequestConfig } from "axios";
|
|
2
|
-
import type { InterceptorConfig, RetryConfig } from "./types";
|
|
3
|
-
/**
|
|
4
|
-
* Axios默认配置
|
|
5
|
-
*/
|
|
6
|
-
export declare const DEFAULT_CONFIG: AxiosRequestConfig;
|
|
7
|
-
/**
|
|
8
|
-
* 接口重试默认配置
|
|
9
|
-
*/
|
|
10
|
-
export declare const DEFAULT_RETRY_CONFIG: RetryConfig;
|
|
11
|
-
/**
|
|
12
|
-
* 默认拦截器配置
|
|
13
|
-
*/
|
|
14
|
-
export declare const DEFAULT_INTERCEPTOR: InterceptorConfig;
|
|
15
|
-
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,kBAAkB,EAA6C,MAAM,OAAO,CAAC;AAElG,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,kBAM5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAQlC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,iBAKjC,CAAC"}
|
package/dist/config.js
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { isCancel } from "./utils";
|
|
2
|
-
/**
|
|
3
|
-
* Axios默认配置
|
|
4
|
-
*/
|
|
5
|
-
export const DEFAULT_CONFIG = {
|
|
6
|
-
baseURL: "",
|
|
7
|
-
timeout: 10000,
|
|
8
|
-
headers: {
|
|
9
|
-
"Content-Type": "application/json;charset=utf-8",
|
|
10
|
-
},
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* 接口重试默认配置
|
|
14
|
-
*/
|
|
15
|
-
export const DEFAULT_RETRY_CONFIG = {
|
|
16
|
-
count: 0,
|
|
17
|
-
delay: 1000,
|
|
18
|
-
condition: (error) => {
|
|
19
|
-
var _a;
|
|
20
|
-
if (isCancel(error))
|
|
21
|
-
return false;
|
|
22
|
-
if (!(error === null || error === void 0 ? void 0 : error.response))
|
|
23
|
-
return true; // 网络错误
|
|
24
|
-
return ((_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.status) >= 500; // 服务端错误
|
|
25
|
-
},
|
|
26
|
-
};
|
|
27
|
-
/**
|
|
28
|
-
* 默认拦截器配置
|
|
29
|
-
*/
|
|
30
|
-
export const DEFAULT_INTERCEPTOR = {
|
|
31
|
-
request: (config) => config,
|
|
32
|
-
requestError: (error) => Promise.reject(error),
|
|
33
|
-
response: (response) => response,
|
|
34
|
-
responseError: (error) => Promise.reject(error),
|
|
35
|
-
};
|
|
36
|
-
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAuB;IAChD,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,KAAK;IACd,OAAO,EAAE;QACP,cAAc,EAAE,gCAAgC;KACjD;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAC/C,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,CAAC,KAAiB,EAAW,EAAE;;QACxC,IAAI,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAClC,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,CAAA;YAAE,OAAO,IAAI,CAAC,CAAC,OAAO;QAC1C,OAAO,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,0CAAE,MAAM,KAAI,GAAG,CAAC,CAAC,QAAQ;IACjD,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,OAAO,EAAE,CAAC,MAAkC,EAAE,EAAE,CAAC,MAAM;IACvD,YAAY,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAC1D,QAAQ,EAAE,CAAC,QAAuB,EAAE,EAAE,CAAC,QAAQ;IAC/C,aAAa,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;CAC5D,CAAC"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { AxiosRequestConfig, AxiosResponse, AxiosError, InternalAxiosRequestConfig } from "axios";
|
|
2
|
-
/**
|
|
3
|
-
* 扩展 Axios 类型,添加自定义字段
|
|
4
|
-
*/
|
|
5
|
-
declare module "axios" {
|
|
6
|
-
interface InternalAxiosRequestConfig {
|
|
7
|
-
/** 内部使用的请求键(用于在响应拦截器中清理 AbortController) */
|
|
8
|
-
_requestKey?: RequestKey;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
/** 请求键类型(字符串或符号) */
|
|
12
|
-
export type RequestKey = string | symbol;
|
|
13
|
-
/**
|
|
14
|
-
* 重试配置接口(完整配置)
|
|
15
|
-
*/
|
|
16
|
-
export interface RetryConfig {
|
|
17
|
-
/** 重试次数,默认 0 */
|
|
18
|
-
count: number;
|
|
19
|
-
/** 重试延迟(毫秒),默认 1000 */
|
|
20
|
-
delay: number;
|
|
21
|
-
/** 重试条件判断函数 */
|
|
22
|
-
condition: (error: AxiosError) => boolean;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* 拦截器配置接口
|
|
26
|
-
*/
|
|
27
|
-
export interface InterceptorConfig {
|
|
28
|
-
/** 请求拦截器 */
|
|
29
|
-
request: (config: InternalAxiosRequestConfig) => InternalAxiosRequestConfig | Promise<InternalAxiosRequestConfig>;
|
|
30
|
-
/** 请求错误拦截器 */
|
|
31
|
-
requestError: (error: AxiosError) => Promise<any>;
|
|
32
|
-
/** 响应拦截器 */
|
|
33
|
-
response: (response: AxiosResponse) => AxiosResponse | Promise<AxiosResponse>;
|
|
34
|
-
/** 响应错误拦截器 */
|
|
35
|
-
responseError: (error: AxiosError) => Promise<any>;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* 请求配置扩展接口
|
|
39
|
-
*/
|
|
40
|
-
export interface RequestConfig extends AxiosRequestConfig {
|
|
41
|
-
/** 自定义请求标识(用于去重和取消请求) */
|
|
42
|
-
requestKey?: RequestKey;
|
|
43
|
-
/** 单次请求的重试配置 */
|
|
44
|
-
retry?: Partial<RetryConfig>;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* AxiosWrapperPro 构造函数配置选项
|
|
48
|
-
*/
|
|
49
|
-
export interface AxiosWrapperProOptions {
|
|
50
|
-
/** 基础 URL */
|
|
51
|
-
baseURL?: string;
|
|
52
|
-
/** 超时时间(毫秒) */
|
|
53
|
-
timeout?: number;
|
|
54
|
-
/** 默认请求头 */
|
|
55
|
-
headers?: Record<string, string>;
|
|
56
|
-
/** 参数序列化函数 */
|
|
57
|
-
paramsSerializer?: (params: any) => string;
|
|
58
|
-
/** 拦截器配置 */
|
|
59
|
-
interceptors?: Partial<InterceptorConfig>;
|
|
60
|
-
/** 重试配置 */
|
|
61
|
-
retry?: Partial<RetryConfig>;
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,OAAO,CAAC;AAElG;;GAEG;AACH,OAAO,QAAQ,OAAO,CAAC;IACrB,UAAiB,0BAA0B;QACzC,4CAA4C;QAC5C,WAAW,CAAC,EAAE,UAAU,CAAC;KAC1B;CACF;AAED,oBAAoB;AACpB,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,gBAAgB;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe;IACf,SAAS,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY;IACZ,OAAO,EAAE,CAAC,MAAM,EAAE,0BAA0B,KAAK,0BAA0B,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAClH,cAAc;IACd,YAAY,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAClD,YAAY;IACZ,QAAQ,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9E,cAAc;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,kBAAkB;IACvD,yBAAyB;IACzB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,gBAAgB;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,aAAa;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,cAAc;IACd,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC;IAC3C,YAAY;IACZ,YAAY,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC1C,WAAW;IACX,KAAK,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC9B"}
|
package/dist/types.js
DELETED
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/utils.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { AxiosError } from "axios";
|
|
2
|
-
/**
|
|
3
|
-
* @description 判断一个变量是否为函数
|
|
4
|
-
* @param {unknown} variable 要判断的变量
|
|
5
|
-
* @returns {boolean} 如果变量是函数则返回true,否则返回false
|
|
6
|
-
*/
|
|
7
|
-
export declare function isFunction(variable: unknown): variable is Function;
|
|
8
|
-
/**
|
|
9
|
-
* @description 睡眠函数
|
|
10
|
-
* @param {number} ms 毫秒数
|
|
11
|
-
* @returns {Promise<void>} 睡眠的Promise
|
|
12
|
-
*/
|
|
13
|
-
export declare function sleep(ms: number): Promise<void>;
|
|
14
|
-
/**
|
|
15
|
-
* @description 判断是否为axios取消请求的错误
|
|
16
|
-
* @param {AxiosError} error 错误对象
|
|
17
|
-
* @returns {boolean} 如果是axios取消请求的错误则返回true,否则返回false
|
|
18
|
-
*/
|
|
19
|
-
export declare function isCancel(error: AxiosError<any>): error is import("axios").CanceledError<any>;
|
|
20
|
-
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,QAAQ,CAElE;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,+CAE9C"}
|
package/dist/utils.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import axios from "axios";
|
|
2
|
-
/**
|
|
3
|
-
* @description 判断一个变量是否为函数
|
|
4
|
-
* @param {unknown} variable 要判断的变量
|
|
5
|
-
* @returns {boolean} 如果变量是函数则返回true,否则返回false
|
|
6
|
-
*/
|
|
7
|
-
export function isFunction(variable) {
|
|
8
|
-
return typeof variable === "function";
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* @description 睡眠函数
|
|
12
|
-
* @param {number} ms 毫秒数
|
|
13
|
-
* @returns {Promise<void>} 睡眠的Promise
|
|
14
|
-
*/
|
|
15
|
-
export function sleep(ms) {
|
|
16
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* @description 判断是否为axios取消请求的错误
|
|
20
|
-
* @param {AxiosError} error 错误对象
|
|
21
|
-
* @returns {boolean} 如果是axios取消请求的错误则返回true,否则返回false
|
|
22
|
-
*/
|
|
23
|
-
export function isCancel(error) {
|
|
24
|
-
return axios.isCancel(error);
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAE1C;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,QAAiB;IAC1C,OAAO,OAAO,QAAQ,KAAK,UAAU,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAsB;IAC7C,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC"}
|