rxtutils 1.1.2-beta.3 → 1.1.2-beta.5

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.
@@ -1,4 +1,4 @@
1
- import { __assign } from 'tslib';
1
+ import { __assign, __awaiter, __generator } from 'tslib';
2
2
  import axios from 'axios';
3
3
  import { at } from 'lodash';
4
4
  import { _defaultErrorCodeHandler, _defaultHttpErrorCodeHandler, _defaultOtherErrorCodeHandler } from './defaultHandlers.mjs';
@@ -28,16 +28,17 @@ function createBaseRequest(baseOptions) {
28
28
  */
29
29
  return function createRequest(requestOptions, createOptions) {
30
30
  var _a = __assign({}, requestOptions), method = _a.method, url = _a.url;
31
- var _b = __assign(__assign({}, baseOptions), createOptions), baseURL = _b.baseURL, _c = _b.cacheDataKey, cacheDataKey = _c === void 0 ? "".concat(method, ":").concat(baseURL).concat(url) : _c, cacheDataInStorage = _b.cacheDataInStorage, _d = _b.cacheKeyEquals, cacheKeyEquals = _d === void 0 ? defaultEquals : _d, cacheTime = _b.cacheTime, _e = _b.indexDBName, indexDBName = _e === void 0 ? '__apiCacheDatabase__' : _e;
31
+ var _b = __assign(__assign({}, baseOptions), createOptions), baseURL = _b.baseURL, _c = _b.cacheDataKey, cacheDataKey = _c === void 0 ? "".concat(method, ":").concat(baseURL).concat(url) : _c, cacheDataInStorage = _b.cacheDataInStorage, _d = _b.cacheKeyEquals, cacheKeyEquals = _d === void 0 ? defaultEquals : _d, cacheTime = _b.cacheTime, _e = _b.indexDBName, indexDBName = _e === void 0 ? "__apiCacheDatabase__" : _e;
32
32
  var cache = new Cache(cacheDataInStorage, cacheDataKey, cacheTime, indexDBName, cacheKeyEquals);
33
33
  function request(requestParam, options) {
34
+ var _this = this;
34
35
  var _a = __assign(__assign({}, requestOptions), requestParam), method = _a.method, url = _a.url, _b = _a.data, data = _b === void 0 ? {} : _b, _c = _a.params, params = _c === void 0 ? {} : _c;
35
36
  var requestDataOrParams = params;
36
- if (method.toLowerCase() === 'post') {
37
+ if (method.toLowerCase() === "post") {
37
38
  requestDataOrParams = data;
38
39
  }
39
40
  var _d = __assign(__assign(__assign({}, baseOptions), createOptions), options).defaultMessageShower, defaultMessageShower = _d === void 0 ? console.error : _d;
40
- var _e = __assign(__assign(__assign({}, baseOptions), createOptions), options), _f = _e.enableCache, enableCache = _f === void 0 ? false : _f, _g = _e.cacheData, cacheData = _g === void 0 ? false : _g, _h = _e.defaultErrorCodeHandler, defaultErrorCodeHandler = _h === void 0 ? _defaultErrorCodeHandler.bind(null, defaultMessageShower) : _h, _j = _e.defaultHttpErrorCodeHandler, defaultHttpErrorCodeHandler = _j === void 0 ? _defaultHttpErrorCodeHandler.bind(null, defaultMessageShower) : _j, _k = _e.otherErrorHandler, otherErrorHandler = _k === void 0 ? _defaultOtherErrorCodeHandler.bind(null, defaultMessageShower) : _k, _l = _e.errorCodePath, errorCodePath = _l === void 0 ? 'code' : _l, _m = _e.cacheTime, cacheTime = _m === void 0 ? 60 : _m, _o = _e.errorCodeMap, errorCodeMap = _o === void 0 ? {} : _o, _p = _e.successCodes, successCodes = _p === void 0 ? ['0', '200'] : _p, _q = _e.httpErrorCodeMap, httpErrorCodeMap = _q === void 0 ? {} : _q, _r = _e.axiosOptions, axiosOptions = _r === void 0 ? {} : _r, _s = _e.throwError, throwError = _s === void 0 ? true : _s;
41
+ var _e = __assign(__assign(__assign({}, baseOptions), createOptions), options), _f = _e.enableCache, enableCache = _f === void 0 ? false : _f, _g = _e.cacheData, cacheData = _g === void 0 ? false : _g, _h = _e.defaultErrorCodeHandler, defaultErrorCodeHandler = _h === void 0 ? _defaultErrorCodeHandler.bind(null, defaultMessageShower) : _h, _j = _e.defaultHttpErrorCodeHandler, defaultHttpErrorCodeHandler = _j === void 0 ? _defaultHttpErrorCodeHandler.bind(null, defaultMessageShower) : _j, _k = _e.otherErrorHandler, otherErrorHandler = _k === void 0 ? _defaultOtherErrorCodeHandler.bind(null, defaultMessageShower) : _k, _l = _e.errorCodePath, errorCodePath = _l === void 0 ? "code" : _l, _m = _e.cacheTime, cacheTime = _m === void 0 ? 60 : _m, _o = _e.errorCodeMap, errorCodeMap = _o === void 0 ? {} : _o, _p = _e.successCodes, successCodes = _p === void 0 ? ["0", "200"] : _p, _q = _e.httpErrorCodeMap, httpErrorCodeMap = _q === void 0 ? {} : _q, _r = _e.axiosOptions, axiosOptions = _r === void 0 ? {} : _r, _s = _e.throwError, throwError = _s === void 0 ? true : _s;
41
42
  if (enableCache) {
42
43
  var cacheItem = cache.getCache(requestDataOrParams);
43
44
  if (cacheItem) {
@@ -46,76 +47,96 @@ function createBaseRequest(baseOptions) {
46
47
  }
47
48
  return instance
48
49
  .request(__assign({ method: method, url: url, data: data, params: params }, axiosOptions))
49
- .then(function (res) {
50
- var errorCode = String(at(res.data, errorCodePath));
51
- if (successCodes.includes(errorCode)) {
52
- if (cacheData) {
53
- cache.setCache(requestDataOrParams, res.data, { cacheTime: cacheTime });
54
- }
55
- return res.data;
56
- }
57
- var _a = errorCodeMap, _b = errorCode, _c = _a[_b], customHandler = _c === void 0 ? defaultErrorCodeHandler : _c;
58
- var err = new RequestError('服务端错误', 'server', res);
59
- if (typeof customHandler === 'string') {
60
- defaultMessageShower(customHandler);
61
- }
62
- else {
63
- var _d = (Object(customHandler(errorCode, res.data, res, __assign(__assign({}, requestOptions), requestParam)))), _e = _d.replaceResData, replaceResData = _e === void 0 ? res.data : _e, _f = _d.throwError, handlerThrowError = _f === void 0 ? 'default' : _f;
64
- res.data = replaceResData;
65
- switch (handlerThrowError) {
66
- case true:
67
- throw err;
68
- case false:
69
- return res.data;
70
- }
71
- }
72
- if (throwError) {
73
- throw err;
74
- }
75
- return res.data;
76
- }, function (error) {
77
- if (error.response) {
78
- // 请求成功发出且服务器也响应了状态码,但状态代码超出了 2xx 的范围
79
- var resData = error;
80
- var _a = httpErrorCodeMap, _b = error.response.status, _c = _a[_b], customHandler = _c === void 0 ? defaultHttpErrorCodeHandler : _c;
81
- var err = new RequestError('服务端错误', 'http', error);
82
- if (typeof customHandler === 'string') {
83
- defaultMessageShower(customHandler);
84
- }
85
- else {
86
- var _d = (Object(customHandler(error.response.status, error, __assign(__assign({}, requestOptions), requestParam)))), _e = _d.replaceResData, replaceResData = _e === void 0 ? error : _e, _f = _d.throwError, handlerThrowError = _f === void 0 ? 'default' : _f;
87
- resData = replaceResData;
88
- switch (handlerThrowError) {
89
- case true:
50
+ .then(function (res) { return __awaiter(_this, void 0, void 0, function () {
51
+ var errorCode, _a, _b, _c, customHandler, err, _d, _e, replaceResData, _f, handlerThrowError, _g;
52
+ return __generator(this, function (_h) {
53
+ switch (_h.label) {
54
+ case 0:
55
+ errorCode = String(at(res.data, errorCodePath));
56
+ if (successCodes.includes(errorCode)) {
57
+ if (cacheData) {
58
+ cache.setCache(requestDataOrParams, res.data, { cacheTime: cacheTime });
59
+ }
60
+ return [2 /*return*/, res.data];
61
+ }
62
+ _a = errorCodeMap, _b = errorCode, _c = _a[_b], customHandler = _c === void 0 ? defaultErrorCodeHandler : _c;
63
+ err = new RequestError("服务端错误", "server", res);
64
+ if (!(typeof customHandler === "string")) return [3 /*break*/, 1];
65
+ defaultMessageShower(customHandler);
66
+ return [3 /*break*/, 3];
67
+ case 1:
68
+ _g = Object;
69
+ return [4 /*yield*/, customHandler(errorCode, res.data, res, __assign(__assign({}, requestOptions), requestParam))];
70
+ case 2:
71
+ _d = (_g.apply(void 0, [(_h.sent())])), _e = _d.replaceResData, replaceResData = _e === void 0 ? res.data : _e, _f = _d.throwError, handlerThrowError = _f === void 0 ? "default" : _f;
72
+ res.data = replaceResData;
73
+ switch (handlerThrowError) {
74
+ case true:
75
+ throw err;
76
+ case false:
77
+ return [2 /*return*/, res.data];
78
+ }
79
+ _h.label = 3;
80
+ case 3:
81
+ if (throwError) {
90
82
  throw err;
91
- case false:
92
- return resData;
93
- }
83
+ }
84
+ return [2 /*return*/, res.data];
94
85
  }
95
- if (throwError) {
96
- throw err;
97
- }
98
- return resData;
99
- }
100
- else {
101
- var resData = error;
102
- var err = new RequestError('服务端错误', 'http', error);
103
- err.type = 'http';
104
- err.data = error;
105
- var _g = (Object(otherErrorHandler(error))), _h = _g.replaceResData, replaceResData = _h === void 0 ? error : _h, _j = _g.throwError, handlerThrowError = _j === void 0 ? 'default' : _j;
106
- resData = replaceResData;
107
- switch (handlerThrowError) {
108
- case true:
109
- throw err;
110
- case false:
111
- return resData;
112
- }
113
- if (throwError) {
114
- throw err;
86
+ });
87
+ }); }, function (error) { return __awaiter(_this, void 0, void 0, function () {
88
+ var resData, _a, _b, _c, customHandler, err, _d, _e, replaceResData, _f, handlerThrowError, _g, resData, err, _h, _j, replaceResData, _k, handlerThrowError, _l;
89
+ return __generator(this, function (_m) {
90
+ switch (_m.label) {
91
+ case 0:
92
+ if (!error.response) return [3 /*break*/, 4];
93
+ resData = error;
94
+ _a = httpErrorCodeMap, _b = error.response.status, _c = _a[_b], customHandler = _c === void 0 ? defaultHttpErrorCodeHandler : _c;
95
+ err = new RequestError("服务端错误", "http", error);
96
+ if (!(typeof customHandler === "string")) return [3 /*break*/, 1];
97
+ defaultMessageShower(customHandler);
98
+ return [3 /*break*/, 3];
99
+ case 1:
100
+ _g = Object;
101
+ return [4 /*yield*/, customHandler(error.response.status, error, __assign(__assign({}, requestOptions), requestParam))];
102
+ case 2:
103
+ _d = (_g.apply(void 0, [(_m.sent())])), _e = _d.replaceResData, replaceResData = _e === void 0 ? error : _e, _f = _d.throwError, handlerThrowError = _f === void 0 ? "default" : _f;
104
+ resData = replaceResData;
105
+ switch (handlerThrowError) {
106
+ case true:
107
+ throw err;
108
+ case false:
109
+ return [2 /*return*/, resData];
110
+ }
111
+ _m.label = 3;
112
+ case 3:
113
+ if (throwError) {
114
+ throw err;
115
+ }
116
+ return [2 /*return*/, resData];
117
+ case 4:
118
+ resData = error;
119
+ err = new RequestError("服务端错误", "http", error);
120
+ err.type = "http";
121
+ err.data = error;
122
+ _l = Object;
123
+ return [4 /*yield*/, otherErrorHandler(error)];
124
+ case 5:
125
+ _h = (_l.apply(void 0, [(_m.sent())])), _j = _h.replaceResData, replaceResData = _j === void 0 ? error : _j, _k = _h.throwError, handlerThrowError = _k === void 0 ? "default" : _k;
126
+ resData = replaceResData;
127
+ switch (handlerThrowError) {
128
+ case true:
129
+ throw err;
130
+ case false:
131
+ return [2 /*return*/, resData];
132
+ }
133
+ if (throwError) {
134
+ throw err;
135
+ }
136
+ return [2 /*return*/, resData];
115
137
  }
116
- return resData;
117
- }
118
- });
138
+ });
139
+ }); });
119
140
  }
120
141
  request.clearCache = function () {
121
142
  cache.clear();
@@ -1,5 +1,23 @@
1
1
  import { BaseValidator } from './validator.mjs';
2
2
 
3
+ /**
4
+ * 验证器装饰器模块
5
+ * 提供一系列用于数据验证的装饰器,可用于类属性的验证规则定义
6
+ * 这些装饰器基于 BaseValidator 的 decoratorCreator 方法创建
7
+ */
8
+ /**
9
+ * 必填项验证装饰器
10
+ * 验证值是否存在且不在指定的无效值列表中
11
+ *
12
+ * @param noneVals 被视为无效的值数组,默认为 [undefined]
13
+ * @returns 装饰器工厂函数,可接收自定义错误消息
14
+ *
15
+ * @example
16
+ * class User extends BaseValidator {
17
+ * @(VRequired()('用户名不能为空'))
18
+ * username?: string;
19
+ * }
20
+ */
3
21
  function VRequired(noneVals) {
4
22
  if (noneVals === void 0) { noneVals = [undefined]; }
5
23
  return BaseValidator.decoratorCreator(function (val) {
@@ -9,31 +27,91 @@ function VRequired(noneVals) {
9
27
  return true;
10
28
  });
11
29
  }
30
+ /**
31
+ * 字符串类型验证装饰器
32
+ * 验证值是否为字符串类型
33
+ *
34
+ * @returns 装饰器工厂函数,可接收自定义错误消息
35
+ *
36
+ * @example
37
+ * class User extends BaseValidator {
38
+ * @VString('用户名必须为字符串')
39
+ * username?: string;
40
+ * }
41
+ */
12
42
  var VString = BaseValidator.decoratorCreator(function (val) {
13
43
  if (typeof val !== 'string') {
14
44
  return false;
15
45
  }
16
46
  return true;
17
47
  });
48
+ /**
49
+ * 数字类型验证装饰器
50
+ * 验证值是否为数字类型
51
+ *
52
+ * @returns 装饰器工厂函数,可接收自定义错误消息
53
+ *
54
+ * @example
55
+ * class User extends BaseValidator {
56
+ * @VNumber('年龄必须为数字')
57
+ * age?: number;
58
+ * }
59
+ */
18
60
  var VNumber = BaseValidator.decoratorCreator(function (val) {
19
61
  if (typeof val !== 'number') {
20
62
  return false;
21
63
  }
22
64
  return true;
23
65
  });
66
+ /**
67
+ * 数组类型验证装饰器
68
+ * 验证值是否为数组类型
69
+ *
70
+ * @returns 装饰器工厂函数,可接收自定义错误消息
71
+ *
72
+ * @example
73
+ * class User extends BaseValidator {
74
+ * @VArray('标签必须为数组')
75
+ * tags?: string[];
76
+ * }
77
+ */
24
78
  var VArray = BaseValidator.decoratorCreator(function (val) {
25
79
  if (!Array.isArray(val)) {
26
80
  return false;
27
81
  }
28
82
  return true;
29
83
  });
30
- // 常用校验装饰器
84
+ /**
85
+ * 布尔类型验证装饰器
86
+ * 验证值是否为布尔类型
87
+ *
88
+ * @returns 装饰器工厂函数,可接收自定义错误消息
89
+ *
90
+ * @example
91
+ * class User extends BaseValidator {
92
+ * @VBoolean('状态必须为布尔值')
93
+ * active?: boolean;
94
+ * }
95
+ */
31
96
  var VBoolean = BaseValidator.decoratorCreator(function (val) {
32
97
  if (typeof val !== 'boolean') {
33
98
  return false;
34
99
  }
35
100
  return true;
36
101
  });
102
+ /**
103
+ * 最小值验证装饰器
104
+ * 验证数字是否大于或等于指定的最小值
105
+ *
106
+ * @param min 最小值
107
+ * @returns 装饰器工厂函数,可接收自定义错误消息
108
+ *
109
+ * @example
110
+ * class User extends BaseValidator {
111
+ * @(VMin(18)('年龄必须大于或等于18岁'))
112
+ * age?: number;
113
+ * }
114
+ */
37
115
  var VMin = function (min) {
38
116
  return BaseValidator.decoratorCreator(function (val) {
39
117
  if (typeof val !== 'number' || val < min) {
@@ -42,6 +120,19 @@ var VMin = function (min) {
42
120
  return true;
43
121
  });
44
122
  };
123
+ /**
124
+ * 最大值验证装饰器
125
+ * 验证数字是否小于或等于指定的最大值
126
+ *
127
+ * @param max 最大值
128
+ * @returns 装饰器工厂函数,可接收自定义错误消息
129
+ *
130
+ * @example
131
+ * class User extends BaseValidator {
132
+ * @(VMax(120)('年龄必须小于或等于120岁'))
133
+ * age?: number;
134
+ * }
135
+ */
45
136
  var VMax = function (max) {
46
137
  return BaseValidator.decoratorCreator(function (val) {
47
138
  if (typeof val !== 'number' || val > max) {
@@ -50,6 +141,19 @@ var VMax = function (max) {
50
141
  return true;
51
142
  });
52
143
  };
144
+ /**
145
+ * 最小长度验证装饰器
146
+ * 验证字符串或数组的长度是否大于或等于指定的最小长度
147
+ *
148
+ * @param minLen 最小长度
149
+ * @returns 装饰器工厂函数,可接收自定义错误消息
150
+ *
151
+ * @example
152
+ * class User extends BaseValidator {
153
+ * @(VMinLength(6)('密码长度不能少于6位'))
154
+ * password?: string;
155
+ * }
156
+ */
53
157
  var VMinLength = function (minLen) {
54
158
  return BaseValidator.decoratorCreator(function (val) {
55
159
  if (typeof val !== 'string' && !Array.isArray(val)) {
@@ -61,6 +165,19 @@ var VMinLength = function (minLen) {
61
165
  return true;
62
166
  });
63
167
  };
168
+ /**
169
+ * 最大长度验证装饰器
170
+ * 验证字符串或数组的长度是否小于或等于指定的最大长度
171
+ *
172
+ * @param maxLen 最大长度
173
+ * @returns 装饰器工厂函数,可接收自定义错误消息
174
+ *
175
+ * @example
176
+ * class User extends BaseValidator {
177
+ * @(VMaxLength(20)('用户名长度不能超过20位'))
178
+ * username?: string;
179
+ * }
180
+ */
64
181
  var VMaxLength = function (maxLen) {
65
182
  return BaseValidator.decoratorCreator(function (val) {
66
183
  if (typeof val !== 'string' && !Array.isArray(val)) {
@@ -72,6 +189,18 @@ var VMaxLength = function (maxLen) {
72
189
  return true;
73
190
  });
74
191
  };
192
+ /**
193
+ * 邮箱格式验证装饰器
194
+ * 验证字符串是否符合邮箱格式
195
+ *
196
+ * @returns 装饰器工厂函数,可接收自定义错误消息
197
+ *
198
+ * @example
199
+ * class User extends BaseValidator {
200
+ * @VEmail('邮箱格式不正确')
201
+ * email?: string;
202
+ * }
203
+ */
75
204
  var VEmail = BaseValidator.decoratorCreator(function (val) {
76
205
  if (typeof val !== 'string') {
77
206
  return false;
@@ -80,6 +209,19 @@ var VEmail = BaseValidator.decoratorCreator(function (val) {
80
209
  var emailReg = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
81
210
  return emailReg.test(val);
82
211
  });
212
+ /**
213
+ * 正则表达式验证装饰器
214
+ * 验证字符串是否匹配指定的正则表达式模式
215
+ *
216
+ * @param pattern 正则表达式
217
+ * @returns 装饰器工厂函数,可接收自定义错误消息
218
+ *
219
+ * @example
220
+ * class User extends BaseValidator {
221
+ * @(VPattern(/^1[3-9]\d{9}$/)('手机号格式不正确'))
222
+ * phone?: string;
223
+ * }
224
+ */
83
225
  var VPattern = function (pattern) {
84
226
  return BaseValidator.decoratorCreator(function (val) {
85
227
  if (typeof val !== 'string') {
@@ -1,11 +1,26 @@
1
1
  import { __spreadArray } from 'tslib';
2
2
 
3
+ /**
4
+ * 基础验证器类
5
+ * 提供字段验证功能,可通过装饰器为类属性添加验证规则
6
+ */
3
7
  var BaseValidator = /** @class */ (function () {
8
+ /**
9
+ * 构造函数
10
+ * 初始化验证器映射存储
11
+ */
4
12
  function BaseValidator() {
13
+ /** 用于存储验证器映射的私有符号 */
5
14
  this.__keySymbol = Symbol('key-description');
6
15
  this.__keySymbol = Symbol('key-description');
7
16
  this[this.__keySymbol] = {};
8
17
  }
18
+ /**
19
+ * 验证单个字段
20
+ * @param itemKey 要验证的字段名
21
+ * @param itemAll 是否验证所有规则,为true时会验证该字段的所有规则,为false时遇到第一个失败的规则就停止
22
+ * @returns 验证错误数组,如果没有错误则返回null
23
+ */
9
24
  BaseValidator.prototype.validate = function (itemKey, itemAll) {
10
25
  if (itemAll === void 0) { itemAll = false; }
11
26
  var validatorMap = this[this.__keySymbol];
@@ -29,6 +44,13 @@ var BaseValidator = /** @class */ (function () {
29
44
  }
30
45
  return null;
31
46
  };
47
+ /**
48
+ * 验证多个或所有字段
49
+ * @param itemAll 是否验证每个字段的所有规则,为true时会验证字段的所有规则,为false时遇到第一个失败的规则就停止
50
+ * @param everyItem 是否验证所有字段,为true时会验证所有字段,为false时遇到第一个失败的字段就停止
51
+ * @param order 验证字段的顺序,可以指定验证的字段名数组及其顺序
52
+ * @returns 验证错误数组,如果没有错误则返回null
53
+ */
32
54
  BaseValidator.prototype.validateAll = function (itemAll, everyItem, order) {
33
55
  if (itemAll === void 0) { itemAll = false; }
34
56
  if (everyItem === void 0) { everyItem = false; }
@@ -59,6 +81,39 @@ var BaseValidator = /** @class */ (function () {
59
81
  }
60
82
  return null;
61
83
  };
84
+ /**
85
+ * 装饰器创建器
86
+ * 用于创建属性验证装饰器的工厂函数
87
+ *
88
+ * @param func 验证函数,接收属性值并返回布尔值表示验证结果
89
+ * @returns 返回一个接收错误消息的函数,该函数再返回实际的装饰器
90
+ *
91
+ * @example
92
+ * // 创建一个验证字符串的装饰器
93
+ * const VString = BaseValidator.decoratorCreator(
94
+ * (val) => typeof val === 'string' || val === undefined
95
+ * );
96
+ *
97
+ * // 创建一个验证必填项的装饰器
98
+ * const VRequired = BaseValidator.decoratorCreator(
99
+ * (val) => val !== undefined && val !== null && val !== ''
100
+ * );
101
+ *
102
+ * // 在类中使用这些装饰器
103
+ * class User extends BaseValidator {
104
+ * @VString('名称必须为字符串')
105
+ * @(VRequired()('名称必须填写'))
106
+ * name?: string;
107
+ *
108
+ * // 验证使用
109
+ * validateName() {
110
+ * return this.validate('name');
111
+ * }
112
+ * }
113
+ *
114
+ * const user = new User();
115
+ * console.log(user.validateName()); // 显示错误信息:名称必须填写
116
+ */
62
117
  BaseValidator.decoratorCreator = function (func) {
63
118
  return function (message) {
64
119
  if (message === void 0) { message = function (val, value, context) { return "".concat(String(context.name), "\u683C\u5F0F\u9519\u8BEF"); }; }
@@ -14,7 +14,7 @@ type ErrorHandlerReturnType<D> = {
14
14
  * - false: 不抛出错误
15
15
  * - 'default': 使用默认错误处理逻辑
16
16
  */
17
- throwError?: boolean | 'default';
17
+ throwError?: boolean | "default";
18
18
  };
19
19
  /**
20
20
  * 请求配置选项接口
@@ -53,13 +53,7 @@ interface Options<Params = any, Data = any> {
53
53
  * 缓存时间(秒)
54
54
  * @default 60
55
55
  */
56
- cacheTime?: number; /**
57
- * 缓存数据的存储类型
58
- * - localStorage: 使用浏览器本地存储,数据永久保存
59
- * - sessionStorage: 使用会话存储,关闭浏览器后清除
60
- * - indexedDB: 使用 IndexedDB 数据库存储
61
- * - 不填则仅在内存中缓存,页面刷新后清除
62
- */
56
+ cacheTime?: number;
63
57
  cacheDataInStorage?: StorageType;
64
58
  /**
65
59
  * 缓存数据的键名
@@ -75,20 +69,13 @@ interface Options<Params = any, Data = any> {
75
69
  * 错误码在响应数据中的路径
76
70
  * @default 'code'
77
71
  */
78
- errorCodePath?: string; /**
79
- * 错误码映射表
80
- * 可以配置错误码对应的错误信息或处理函数
81
- * @default {} 空对象,使用默认处理函数
82
- */
72
+ errorCodePath?: string;
83
73
  errorCodeMap?: Record<string, string | ((code: string, data: Data, res: AxiosResponse<Data>, requestParam: RequestOptions<Params>) => ErrorHandlerReturnType<Data> | void)>;
84
74
  /**
85
75
  * 默认错误码处理函数
86
76
  * 当错误码不在 errorCodeMap 中时调用
87
77
  */
88
- defaultErrorCodeHandler?: (code: string, data: Data, res: AxiosResponse<Data>) => ErrorHandlerReturnType<Data> | void; /**
89
- * 成功状态的错误码列表
90
- * @default ['0', '200']
91
- */
78
+ defaultErrorCodeHandler?: (code: string, data: Data, res: AxiosResponse<Data>) => Promise<ErrorHandlerReturnType<Data> | void>;
92
79
  successCodes?: string[];
93
80
  /**
94
81
  * HTTP 错误码映射表
@@ -100,13 +87,13 @@ interface Options<Params = any, Data = any> {
100
87
  * 默认 HTTP 错误码处理函数
101
88
  * 当 HTTP 状态码不在 httpErrorCodeMap 中时调用
102
89
  */
103
- defaultHttpErrorCodeHandler?: (code: number, error: any) => ErrorHandlerReturnType<Data> | void;
90
+ defaultHttpErrorCodeHandler?: (code: number, error: any) => Promise<ErrorHandlerReturnType<Data> | void>;
104
91
  /**
105
92
  * 其他错误处理函数
106
93
  * 处理非 HTTP 错误和非业务错误码的错误
107
94
  */
108
- otherErrorHandler?: (error: any) => ErrorHandlerReturnType<Data> | void;
109
- axiosOptions?: Omit<AxiosRequestConfig<Params>, 'method' | 'url' | 'params' | 'data'>;
95
+ otherErrorHandler?: (error: any) => Promise<ErrorHandlerReturnType<Data> | void>;
96
+ axiosOptions?: Omit<AxiosRequestConfig<Params>, "method" | "url" | "params" | "data">;
110
97
  }
111
98
  /**
112
99
  * 请求参数接口