axios-wrapper-pro 1.0.5 → 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.js CHANGED
@@ -1,374 +1,2 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
-
30
- // src/index.ts
31
- var index_exports = {};
32
- __export(index_exports, {
33
- AxiosWrapperPro: () => AxiosWrapperPro
34
- });
35
- module.exports = __toCommonJS(index_exports);
36
- var import_axios2 = __toESM(require("axios"));
37
-
38
- // src/utils.ts
39
- var import_axios = __toESM(require("axios"));
40
- function isFunction(variable) {
41
- return typeof variable === "function";
42
- }
43
- function sleep(ms) {
44
- return new Promise((resolve) => setTimeout(resolve, ms));
45
- }
46
- function isCancel(error) {
47
- return import_axios.default.isCancel(error);
48
- }
49
-
50
- // src/config.ts
51
- var DEFAULT_CONFIG = {
52
- baseURL: "",
53
- timeout: 1e4,
54
- headers: {
55
- "Content-Type": "application/json;charset=utf-8"
56
- }
57
- };
58
- var DEFAULT_RETRY_CONFIG = {
59
- count: 0,
60
- delay: 1e3,
61
- condition: (error) => {
62
- var _a;
63
- if (isCancel(error)) return false;
64
- if (!(error == null ? void 0 : error.response)) return true;
65
- return ((_a = error == null ? void 0 : error.response) == null ? void 0 : _a.status) >= 500;
66
- }
67
- };
68
- var DEFAULT_INTERCEPTOR = {
69
- request: (config) => config,
70
- requestError: (error) => Promise.reject(error),
71
- response: (response) => response,
72
- responseError: (error) => Promise.reject(error)
73
- };
74
-
75
- // src/index.ts
76
- var AxiosWrapperPro = class {
77
- constructor(options = {}) {
78
- this._abortControllers = /* @__PURE__ */ new Map();
79
- this._retryConfig = {
80
- ...DEFAULT_RETRY_CONFIG,
81
- ...(options == null ? void 0 : options.retry) || {}
82
- };
83
- this._paramsSerializer = isFunction(options.paramsSerializer) ? options.paramsSerializer : null;
84
- const axiosConfig = {
85
- ...DEFAULT_CONFIG,
86
- ...options.baseURL && { baseURL: options.baseURL },
87
- ...options.timeout && { timeout: options.timeout },
88
- headers: { ...DEFAULT_CONFIG.headers, ...options.headers }
89
- };
90
- if (this._paramsSerializer) {
91
- axiosConfig.paramsSerializer = this._paramsSerializer;
92
- }
93
- this._instance = import_axios2.default.create(axiosConfig);
94
- this._interceptorConfig = options.interceptors || {};
95
- this._initRequestInterceptors();
96
- this._initResponseInterceptors();
97
- }
98
- /**
99
- * 获取拦截器配置,未配置的使用默认值
100
- * @returns {InterceptorConfig} 完整的拦截器配置
101
- */
102
- _getInterceptors() {
103
- const { request, requestError, response, responseError } = this._interceptorConfig;
104
- return {
105
- request: isFunction(request) ? request : DEFAULT_INTERCEPTOR.request,
106
- requestError: isFunction(requestError) ? requestError : DEFAULT_INTERCEPTOR.requestError,
107
- response: isFunction(response) ? response : DEFAULT_INTERCEPTOR.response,
108
- responseError: isFunction(responseError) ? responseError : DEFAULT_INTERCEPTOR.responseError
109
- };
110
- }
111
- /**
112
- * 初始化请求拦截器
113
- */
114
- _initRequestInterceptors() {
115
- const { request, requestError } = this._getInterceptors();
116
- this._requestInterceptorId = this._instance.interceptors.request.use(request, requestError);
117
- }
118
- /**
119
- * 初始化响应拦截器
120
- */
121
- _initResponseInterceptors() {
122
- const { response, responseError } = this._getInterceptors();
123
- this._responseInterceptorId = this._instance.interceptors.response.use(
124
- (res) => {
125
- const key = res.config._requestKey;
126
- key && this._abortControllers.delete(key);
127
- return response(res);
128
- },
129
- (error) => {
130
- var _a;
131
- const key = (_a = error.config) == null ? void 0 : _a._requestKey;
132
- key && this._abortControllers.delete(key);
133
- return responseError(error);
134
- }
135
- );
136
- }
137
- /**
138
- * 设置请求拦截器,移除旧拦截器,更新拦截器配置,重新初始化拦截器
139
- * @param {InterceptorConfig["request"]} interceptor 拦截器
140
- * @param {InterceptorConfig["requestError"]} errorInterceptor 错误拦截器
141
- */
142
- setRequestInterceptor(interceptor, errorInterceptor) {
143
- if (this._requestInterceptorId !== void 0) {
144
- this._instance.interceptors.request.eject(this._requestInterceptorId);
145
- }
146
- this._interceptorConfig.request = interceptor;
147
- this._interceptorConfig.requestError = errorInterceptor;
148
- this._initRequestInterceptors();
149
- }
150
- /**
151
- * 设置响应拦截器,移除旧拦截器,更新拦截器配置,重新初始化拦截器
152
- * @param {InterceptorConfig["response"]} interceptor 拦截器
153
- * @param {InterceptorConfig["responseError"]} errorInterceptor 错误拦截器
154
- */
155
- setResponseInterceptor(interceptor, errorInterceptor) {
156
- if (this._responseInterceptorId !== void 0) {
157
- this._instance.interceptors.response.eject(this._responseInterceptorId);
158
- }
159
- this._interceptorConfig.response = interceptor;
160
- this._interceptorConfig.responseError = errorInterceptor;
161
- this._initResponseInterceptors();
162
- }
163
- /**
164
- * 设置取消控制器
165
- * @param {AxiosRequestConfig} config 请求配置
166
- * @param {RequestKey} customKey 自定义key
167
- * @returns {InternalAxiosRequestConfig} 处理后的配置
168
- */
169
- _setupAbortController(config, customKey) {
170
- const key = customKey != null ? customKey : this._generateRequestKey(config);
171
- this.cancelRequest(key);
172
- const controller = new AbortController();
173
- this._abortControllers.set(key, controller);
174
- return { ...config, signal: controller.signal, _requestKey: key };
175
- }
176
- /**
177
- * 生成请求唯一标识
178
- * @param {AxiosRequestConfig} config 请求配置
179
- * @returns {string} 请求唯一标识
180
- */
181
- _generateRequestKey(config) {
182
- const method = (config.method || "GET").toUpperCase();
183
- const url = config.url || "";
184
- const params = config.params ? { ...config.params } : null;
185
- if (params == null ? void 0 : params._t) {
186
- delete params._t;
187
- }
188
- const serializer = isFunction(config.paramsSerializer) ? config.paramsSerializer : this._paramsSerializer;
189
- let paramsStr = "";
190
- if (params) {
191
- paramsStr = serializer ? serializer(params) : this._stableStringify(params);
192
- }
193
- let dataStr = "";
194
- if (["POST", "PUT", "PATCH", "DELETE"].includes(method) && config.data) {
195
- dataStr = typeof config.data === "string" ? config.data : this._stableStringify(config.data);
196
- }
197
- return `${method}|${url}|${paramsStr}|${dataStr}`;
198
- }
199
- /**
200
- * 稳定的JSON序列化,确保相同内容生成相同字符串
201
- * @param {any} obj 待序列化对象
202
- * @returns {string} 序列化后的字符串
203
- */
204
- _stableStringify(obj) {
205
- if (obj === null || obj === void 0) {
206
- return "";
207
- }
208
- if (Array.isArray(obj)) {
209
- return "[" + obj.map((item) => this._stableStringify(item)).join(",") + "]";
210
- }
211
- if (typeof obj === "object") {
212
- const sortedKeys = Object.keys(obj).sort();
213
- const pairs = sortedKeys.map((key) => `"${key}":${this._stableStringify(obj[key])}`);
214
- return "{" + pairs.join(",") + "}";
215
- }
216
- return JSON.stringify(obj);
217
- }
218
- /**
219
- * 取消指定请求
220
- * @param {RequestKey} key 请求标识
221
- * @param {string} [reason] 取消原因
222
- * @returns {boolean} 是否成功取消
223
- */
224
- cancelRequest(key, reason) {
225
- const controller = this._abortControllers.get(key);
226
- if (controller) {
227
- controller.abort(reason || "\u8BF7\u6C42\u5DF2\u53D6\u6D88");
228
- this._abortControllers.delete(key);
229
- return true;
230
- }
231
- return false;
232
- }
233
- /**
234
- * 取消所有请求
235
- * @param {string} [reason] 取消原因
236
- * @returns {number} 被取消的请求数量
237
- */
238
- cancelAllRequests(reason) {
239
- const count = this._abortControllers.size;
240
- this._abortControllers.forEach((controller) => {
241
- controller.abort(reason || "\u8BF7\u6C42\u5DF2\u53D6\u6D88");
242
- });
243
- this._abortControllers.clear();
244
- return count;
245
- }
246
- /**
247
- * 设置默认请求头
248
- * @param {string} key 请求头名称
249
- * @param {string} value 请求头值
250
- */
251
- setHeader(key, value) {
252
- this._instance.defaults.headers.common[key] = value;
253
- }
254
- /**
255
- * 批量设置请求头
256
- * @param {Record<string, string>} headers 请求头对象
257
- */
258
- setHeaders(headers) {
259
- Object.entries(headers).forEach(([key, value]) => {
260
- this._instance.defaults.headers.common[key] = value;
261
- });
262
- }
263
- /**
264
- * 移除请求头
265
- * @param {string} key 请求头名称
266
- */
267
- removeHeader(key) {
268
- delete this._instance.defaults.headers.common[key];
269
- }
270
- /** 获取基础URL */
271
- getBaseURL() {
272
- return this._instance.defaults.baseURL || "";
273
- }
274
- /** 设置基础URL */
275
- setBaseURL(url) {
276
- this._instance.defaults.baseURL = url;
277
- }
278
- /** 获取 Axios 实例 */
279
- getInstance() {
280
- return this._instance;
281
- }
282
- /**
283
- * 通用请求方法
284
- * @param {string} method 请求方法
285
- * @param {string} url 请求地址
286
- * @param {RequestConfig} [config={}] 请求配置
287
- * @returns {Promise<AxiosResponse>} 响应数据
288
- */
289
- async request(method, url, config = {}) {
290
- const { requestKey, retry, ...restConfig } = config;
291
- const retryConfig = {
292
- ...this._retryConfig,
293
- ...retry || {}
294
- };
295
- const requestConfig = { method, url, ...restConfig };
296
- let lastError = null;
297
- const configKey = requestKey != null ? requestKey : this._generateRequestKey(requestConfig);
298
- for (let attempt = 0; attempt <= retryConfig.count; attempt++) {
299
- try {
300
- if (attempt > 0) {
301
- this._abortControllers.delete(configKey);
302
- }
303
- const finalConfig = this._setupAbortController(requestConfig, configKey);
304
- const result = await this._instance.request(finalConfig);
305
- return result;
306
- } catch (error) {
307
- lastError = error;
308
- this._abortControllers.delete(configKey);
309
- const isLast = attempt === retryConfig.count;
310
- const shouldRetry = retryConfig.condition(error);
311
- const isCancelled = import_axios2.default.isCancel(error);
312
- if (isLast || !shouldRetry || isCancelled) {
313
- break;
314
- }
315
- if (retryConfig.delay > 0) {
316
- await sleep(retryConfig.delay);
317
- }
318
- }
319
- }
320
- return Promise.reject(lastError);
321
- }
322
- /**
323
- * GET请求
324
- * @param {string} url 请求地址
325
- * @param {RequestConfig} [options] 请求选项
326
- * @returns {Promise<AxiosResponse>} 响应数据
327
- */
328
- get(url, options = {}) {
329
- return this.request("GET", url, options);
330
- }
331
- /**
332
- * POST请求
333
- * @param {string} url 请求地址
334
- * @param {any} [data] 请求数据
335
- * @param {RequestConfig} [options] 其他选项
336
- * @returns {Promise<AxiosResponse>} 响应数据
337
- */
338
- post(url, data = {}, options = {}) {
339
- return this.request("POST", url, { ...options, data });
340
- }
341
- /**
342
- * PUT请求
343
- * @param {string} url 请求地址
344
- * @param {any} [data] 请求数据
345
- * @param {RequestConfig} [options] 其他选项
346
- * @returns {Promise<AxiosResponse>} 响应数据
347
- */
348
- put(url, data = {}, options = {}) {
349
- return this.request("PUT", url, { ...options, data });
350
- }
351
- /**
352
- * DELETE请求
353
- * @param {string} url 请求地址
354
- * @param {RequestConfig} [options] 请求选项
355
- * @returns {Promise<AxiosResponse>} 响应数据
356
- */
357
- delete(url, options = {}) {
358
- return this.request("DELETE", url, options);
359
- }
360
- /**
361
- * PATCH请求
362
- * @param {string} url 请求地址
363
- * @param {any} [data] 请求数据
364
- * @param {RequestConfig} [options] 其他选项
365
- * @returns {Promise<AxiosResponse>} 响应数据
366
- */
367
- patch(url, data = {}, options = {}) {
368
- return this.request("PATCH", url, { ...options, data });
369
- }
370
- };
371
- // Annotate the CommonJS export names for ESM import in node:
372
- 0 && (module.exports = {
373
- AxiosWrapperPro
374
- });
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
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":"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"}
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 CHANGED
@@ -1,339 +1,2 @@
1
- // src/index.ts
2
- import axios2 from "axios";
3
-
4
- // src/utils.ts
5
- import axios from "axios";
6
- function isFunction(variable) {
7
- return typeof variable === "function";
8
- }
9
- function sleep(ms) {
10
- return new Promise((resolve) => setTimeout(resolve, ms));
11
- }
12
- function isCancel(error) {
13
- return axios.isCancel(error);
14
- }
15
-
16
- // src/config.ts
17
- var DEFAULT_CONFIG = {
18
- baseURL: "",
19
- timeout: 1e4,
20
- headers: {
21
- "Content-Type": "application/json;charset=utf-8"
22
- }
23
- };
24
- var DEFAULT_RETRY_CONFIG = {
25
- count: 0,
26
- delay: 1e3,
27
- condition: (error) => {
28
- var _a;
29
- if (isCancel(error)) return false;
30
- if (!(error == null ? void 0 : error.response)) return true;
31
- return ((_a = error == null ? void 0 : error.response) == null ? void 0 : _a.status) >= 500;
32
- }
33
- };
34
- var DEFAULT_INTERCEPTOR = {
35
- request: (config) => config,
36
- requestError: (error) => Promise.reject(error),
37
- response: (response) => response,
38
- responseError: (error) => Promise.reject(error)
39
- };
40
-
41
- // src/index.ts
42
- var AxiosWrapperPro = class {
43
- constructor(options = {}) {
44
- this._abortControllers = /* @__PURE__ */ new Map();
45
- this._retryConfig = {
46
- ...DEFAULT_RETRY_CONFIG,
47
- ...(options == null ? void 0 : options.retry) || {}
48
- };
49
- this._paramsSerializer = isFunction(options.paramsSerializer) ? options.paramsSerializer : null;
50
- const axiosConfig = {
51
- ...DEFAULT_CONFIG,
52
- ...options.baseURL && { baseURL: options.baseURL },
53
- ...options.timeout && { timeout: options.timeout },
54
- headers: { ...DEFAULT_CONFIG.headers, ...options.headers }
55
- };
56
- if (this._paramsSerializer) {
57
- axiosConfig.paramsSerializer = this._paramsSerializer;
58
- }
59
- this._instance = axios2.create(axiosConfig);
60
- this._interceptorConfig = options.interceptors || {};
61
- this._initRequestInterceptors();
62
- this._initResponseInterceptors();
63
- }
64
- /**
65
- * 获取拦截器配置,未配置的使用默认值
66
- * @returns {InterceptorConfig} 完整的拦截器配置
67
- */
68
- _getInterceptors() {
69
- const { request, requestError, response, responseError } = this._interceptorConfig;
70
- return {
71
- request: isFunction(request) ? request : DEFAULT_INTERCEPTOR.request,
72
- requestError: isFunction(requestError) ? requestError : DEFAULT_INTERCEPTOR.requestError,
73
- response: isFunction(response) ? response : DEFAULT_INTERCEPTOR.response,
74
- responseError: isFunction(responseError) ? responseError : DEFAULT_INTERCEPTOR.responseError
75
- };
76
- }
77
- /**
78
- * 初始化请求拦截器
79
- */
80
- _initRequestInterceptors() {
81
- const { request, requestError } = this._getInterceptors();
82
- this._requestInterceptorId = this._instance.interceptors.request.use(request, requestError);
83
- }
84
- /**
85
- * 初始化响应拦截器
86
- */
87
- _initResponseInterceptors() {
88
- const { response, responseError } = this._getInterceptors();
89
- this._responseInterceptorId = this._instance.interceptors.response.use(
90
- (res) => {
91
- const key = res.config._requestKey;
92
- key && this._abortControllers.delete(key);
93
- return response(res);
94
- },
95
- (error) => {
96
- var _a;
97
- const key = (_a = error.config) == null ? void 0 : _a._requestKey;
98
- key && this._abortControllers.delete(key);
99
- return responseError(error);
100
- }
101
- );
102
- }
103
- /**
104
- * 设置请求拦截器,移除旧拦截器,更新拦截器配置,重新初始化拦截器
105
- * @param {InterceptorConfig["request"]} interceptor 拦截器
106
- * @param {InterceptorConfig["requestError"]} errorInterceptor 错误拦截器
107
- */
108
- setRequestInterceptor(interceptor, errorInterceptor) {
109
- if (this._requestInterceptorId !== void 0) {
110
- this._instance.interceptors.request.eject(this._requestInterceptorId);
111
- }
112
- this._interceptorConfig.request = interceptor;
113
- this._interceptorConfig.requestError = errorInterceptor;
114
- this._initRequestInterceptors();
115
- }
116
- /**
117
- * 设置响应拦截器,移除旧拦截器,更新拦截器配置,重新初始化拦截器
118
- * @param {InterceptorConfig["response"]} interceptor 拦截器
119
- * @param {InterceptorConfig["responseError"]} errorInterceptor 错误拦截器
120
- */
121
- setResponseInterceptor(interceptor, errorInterceptor) {
122
- if (this._responseInterceptorId !== void 0) {
123
- this._instance.interceptors.response.eject(this._responseInterceptorId);
124
- }
125
- this._interceptorConfig.response = interceptor;
126
- this._interceptorConfig.responseError = errorInterceptor;
127
- this._initResponseInterceptors();
128
- }
129
- /**
130
- * 设置取消控制器
131
- * @param {AxiosRequestConfig} config 请求配置
132
- * @param {RequestKey} customKey 自定义key
133
- * @returns {InternalAxiosRequestConfig} 处理后的配置
134
- */
135
- _setupAbortController(config, customKey) {
136
- const key = customKey != null ? customKey : this._generateRequestKey(config);
137
- this.cancelRequest(key);
138
- const controller = new AbortController();
139
- this._abortControllers.set(key, controller);
140
- return { ...config, signal: controller.signal, _requestKey: key };
141
- }
142
- /**
143
- * 生成请求唯一标识
144
- * @param {AxiosRequestConfig} config 请求配置
145
- * @returns {string} 请求唯一标识
146
- */
147
- _generateRequestKey(config) {
148
- const method = (config.method || "GET").toUpperCase();
149
- const url = config.url || "";
150
- const params = config.params ? { ...config.params } : null;
151
- if (params == null ? void 0 : params._t) {
152
- delete params._t;
153
- }
154
- const serializer = isFunction(config.paramsSerializer) ? config.paramsSerializer : this._paramsSerializer;
155
- let paramsStr = "";
156
- if (params) {
157
- paramsStr = serializer ? serializer(params) : this._stableStringify(params);
158
- }
159
- let dataStr = "";
160
- if (["POST", "PUT", "PATCH", "DELETE"].includes(method) && config.data) {
161
- dataStr = typeof config.data === "string" ? config.data : this._stableStringify(config.data);
162
- }
163
- return `${method}|${url}|${paramsStr}|${dataStr}`;
164
- }
165
- /**
166
- * 稳定的JSON序列化,确保相同内容生成相同字符串
167
- * @param {any} obj 待序列化对象
168
- * @returns {string} 序列化后的字符串
169
- */
170
- _stableStringify(obj) {
171
- if (obj === null || obj === void 0) {
172
- return "";
173
- }
174
- if (Array.isArray(obj)) {
175
- return "[" + obj.map((item) => this._stableStringify(item)).join(",") + "]";
176
- }
177
- if (typeof obj === "object") {
178
- const sortedKeys = Object.keys(obj).sort();
179
- const pairs = sortedKeys.map((key) => `"${key}":${this._stableStringify(obj[key])}`);
180
- return "{" + pairs.join(",") + "}";
181
- }
182
- return JSON.stringify(obj);
183
- }
184
- /**
185
- * 取消指定请求
186
- * @param {RequestKey} key 请求标识
187
- * @param {string} [reason] 取消原因
188
- * @returns {boolean} 是否成功取消
189
- */
190
- cancelRequest(key, reason) {
191
- const controller = this._abortControllers.get(key);
192
- if (controller) {
193
- controller.abort(reason || "\u8BF7\u6C42\u5DF2\u53D6\u6D88");
194
- this._abortControllers.delete(key);
195
- return true;
196
- }
197
- return false;
198
- }
199
- /**
200
- * 取消所有请求
201
- * @param {string} [reason] 取消原因
202
- * @returns {number} 被取消的请求数量
203
- */
204
- cancelAllRequests(reason) {
205
- const count = this._abortControllers.size;
206
- this._abortControllers.forEach((controller) => {
207
- controller.abort(reason || "\u8BF7\u6C42\u5DF2\u53D6\u6D88");
208
- });
209
- this._abortControllers.clear();
210
- return count;
211
- }
212
- /**
213
- * 设置默认请求头
214
- * @param {string} key 请求头名称
215
- * @param {string} value 请求头值
216
- */
217
- setHeader(key, value) {
218
- this._instance.defaults.headers.common[key] = value;
219
- }
220
- /**
221
- * 批量设置请求头
222
- * @param {Record<string, string>} headers 请求头对象
223
- */
224
- setHeaders(headers) {
225
- Object.entries(headers).forEach(([key, value]) => {
226
- this._instance.defaults.headers.common[key] = value;
227
- });
228
- }
229
- /**
230
- * 移除请求头
231
- * @param {string} key 请求头名称
232
- */
233
- removeHeader(key) {
234
- delete this._instance.defaults.headers.common[key];
235
- }
236
- /** 获取基础URL */
237
- getBaseURL() {
238
- return this._instance.defaults.baseURL || "";
239
- }
240
- /** 设置基础URL */
241
- setBaseURL(url) {
242
- this._instance.defaults.baseURL = url;
243
- }
244
- /** 获取 Axios 实例 */
245
- getInstance() {
246
- return this._instance;
247
- }
248
- /**
249
- * 通用请求方法
250
- * @param {string} method 请求方法
251
- * @param {string} url 请求地址
252
- * @param {RequestConfig} [config={}] 请求配置
253
- * @returns {Promise<AxiosResponse>} 响应数据
254
- */
255
- async request(method, url, config = {}) {
256
- const { requestKey, retry, ...restConfig } = config;
257
- const retryConfig = {
258
- ...this._retryConfig,
259
- ...retry || {}
260
- };
261
- const requestConfig = { method, url, ...restConfig };
262
- let lastError = null;
263
- const configKey = requestKey != null ? requestKey : this._generateRequestKey(requestConfig);
264
- for (let attempt = 0; attempt <= retryConfig.count; attempt++) {
265
- try {
266
- if (attempt > 0) {
267
- this._abortControllers.delete(configKey);
268
- }
269
- const finalConfig = this._setupAbortController(requestConfig, configKey);
270
- const result = await this._instance.request(finalConfig);
271
- return result;
272
- } catch (error) {
273
- lastError = error;
274
- this._abortControllers.delete(configKey);
275
- const isLast = attempt === retryConfig.count;
276
- const shouldRetry = retryConfig.condition(error);
277
- const isCancelled = axios2.isCancel(error);
278
- if (isLast || !shouldRetry || isCancelled) {
279
- break;
280
- }
281
- if (retryConfig.delay > 0) {
282
- await sleep(retryConfig.delay);
283
- }
284
- }
285
- }
286
- return Promise.reject(lastError);
287
- }
288
- /**
289
- * GET请求
290
- * @param {string} url 请求地址
291
- * @param {RequestConfig} [options] 请求选项
292
- * @returns {Promise<AxiosResponse>} 响应数据
293
- */
294
- get(url, options = {}) {
295
- return this.request("GET", url, options);
296
- }
297
- /**
298
- * POST请求
299
- * @param {string} url 请求地址
300
- * @param {any} [data] 请求数据
301
- * @param {RequestConfig} [options] 其他选项
302
- * @returns {Promise<AxiosResponse>} 响应数据
303
- */
304
- post(url, data = {}, options = {}) {
305
- return this.request("POST", url, { ...options, data });
306
- }
307
- /**
308
- * PUT请求
309
- * @param {string} url 请求地址
310
- * @param {any} [data] 请求数据
311
- * @param {RequestConfig} [options] 其他选项
312
- * @returns {Promise<AxiosResponse>} 响应数据
313
- */
314
- put(url, data = {}, options = {}) {
315
- return this.request("PUT", url, { ...options, data });
316
- }
317
- /**
318
- * DELETE请求
319
- * @param {string} url 请求地址
320
- * @param {RequestConfig} [options] 请求选项
321
- * @returns {Promise<AxiosResponse>} 响应数据
322
- */
323
- delete(url, options = {}) {
324
- return this.request("DELETE", url, options);
325
- }
326
- /**
327
- * PATCH请求
328
- * @param {string} url 请求地址
329
- * @param {any} [data] 请求数据
330
- * @param {RequestConfig} [options] 其他选项
331
- * @returns {Promise<AxiosResponse>} 响应数据
332
- */
333
- patch(url, data = {}, options = {}) {
334
- return this.request("PATCH", url, { ...options, data });
335
- }
336
- };
337
- export {
338
- AxiosWrapperPro
339
- };
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.5",
3
+ "version": "1.0.6",
4
4
  "description": "基于 Axios 的增强型 HTTP 客户端,支持请求去重、自动取消、重试机制和可配置拦截器",
5
5
  "scripts": {
6
- "build": "tsup src/index.ts --format cjs,esm --dts",
7
- "build:watch": "tsup src/index.ts --format cjs,esm --dts --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.esm.js",
12
+ "module": "dist/index.mjs",
13
13
  "types": "dist/index.d.ts",
14
14
  "files": [
15
15
  "dist/**/*",
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
@@ -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
@@ -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"}
@@ -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
@@ -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
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
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>): boolean;
20
- //# sourceMappingURL=utils.d.ts.map
@@ -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,WAE9C"}
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"}