rxtutils 1.1.4-beta.1 → 1.1.4-beta.11
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/cjs/_utils/deepAssign.cjs +25 -0
- package/cjs/hooks/useCombineControlValue.cjs +19 -8
- package/cjs/hooks/useCombineControlValue.d.ts +13 -10
- package/cjs/index.cjs +2 -0
- package/cjs/index.d.ts +1 -0
- package/cjs/request/index.cjs +145 -96
- package/cjs/request/index.d.ts +8 -0
- package/cjs/validator/validator.cjs +2 -2
- package/es/_utils/deepAssign.mjs +23 -0
- package/es/hooks/useCombineControlValue.d.ts +13 -10
- package/es/hooks/useCombineControlValue.mjs +19 -8
- package/es/index.d.ts +1 -0
- package/es/index.mjs +1 -0
- package/es/request/index.d.ts +8 -0
- package/es/request/index.mjs +145 -96
- package/es/validator/validator.mjs +2 -2
- package/package.json +2 -2
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function deepAssign(target) {
|
|
4
|
+
var sources = [];
|
|
5
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
6
|
+
sources[_i - 1] = arguments[_i];
|
|
7
|
+
}
|
|
8
|
+
for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) {
|
|
9
|
+
var source = sources_1[_a];
|
|
10
|
+
for (var key in source) {
|
|
11
|
+
var val = source[key];
|
|
12
|
+
if (val &&
|
|
13
|
+
typeof val === 'object' &&
|
|
14
|
+
!Array.isArray(val)) {
|
|
15
|
+
target[key] = deepAssign(target[key] || {}, val);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
target[key] = val;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return target;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
exports.deepAssign = deepAssign;
|
|
@@ -5,19 +5,30 @@ var react = require('react');
|
|
|
5
5
|
/**
|
|
6
6
|
* @param param props 组件属性
|
|
7
7
|
* @param param valueKey 组件值的key,默认value, undefined 被认为是有值,只有当 key 不存在时,转换为非受控模式
|
|
8
|
-
* @param param defaultValue
|
|
8
|
+
* @param param defaultValue 默认值,当 value 和 defaultValue 同时存在时,以 value 为默认值
|
|
9
9
|
* @param param onChange 值改变时的回调
|
|
10
10
|
* @returns value: 组件应该采用的值,onChange:值改变时的回调,处理非受控值与向父组件传递值的逻辑
|
|
11
11
|
*/
|
|
12
|
-
|
|
12
|
+
function useCombineControlValue(_a, resolveFn) {
|
|
13
13
|
var props = _a.props, _b = _a.valueKey, valueKey = _b === void 0 ? 'value' : _b, defaultValue = _a.defaultValue, onChange = _a.onChange;
|
|
14
14
|
var _c = props, _d = valueKey, value = _c[_d];
|
|
15
|
-
var hasValue =
|
|
15
|
+
var hasValue = Object.prototype.hasOwnProperty.call(props, valueKey);
|
|
16
16
|
var _e = react.useState(value !== null && value !== void 0 ? value : defaultValue), internalValue = _e[0], setInternalValue = _e[1];
|
|
17
|
-
var handleChange = react.useCallback(function (
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
var handleChange = react.useCallback(function () {
|
|
18
|
+
var params = [];
|
|
19
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
20
|
+
params[_i] = arguments[_i];
|
|
21
|
+
}
|
|
22
|
+
var realNextVal;
|
|
23
|
+
if (typeof resolveFn === 'function') {
|
|
24
|
+
realNextVal = resolveFn.apply(void 0, params);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
realNextVal = params[0];
|
|
28
|
+
}
|
|
29
|
+
setInternalValue(realNextVal);
|
|
30
|
+
onChange === null || onChange === void 0 ? void 0 : onChange.apply(void 0, params);
|
|
31
|
+
}, [onChange, resolveFn]);
|
|
21
32
|
var finalValue = react.useMemo(function () {
|
|
22
33
|
if (hasValue)
|
|
23
34
|
return value;
|
|
@@ -27,6 +38,6 @@ var useCombineControlValue = function (_a) {
|
|
|
27
38
|
value: finalValue,
|
|
28
39
|
onChange: handleChange
|
|
29
40
|
};
|
|
30
|
-
}
|
|
41
|
+
}
|
|
31
42
|
|
|
32
43
|
exports.useCombineControlValue = useCombineControlValue;
|
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
* @param param props 组件属性
|
|
3
|
-
* @param param valueKey 组件值的key,默认value, undefined 被认为是有值,只有当 key 不存在时,转换为非受控模式
|
|
4
|
-
* @param param defaultValue 默认值
|
|
5
|
-
* @param param onChange 值改变时的回调
|
|
6
|
-
* @returns value: 组件应该采用的值,onChange:值改变时的回调,处理非受控值与向父组件传递值的逻辑
|
|
7
|
-
*/
|
|
8
|
-
declare const useCombineControlValue: <V>({ props, valueKey, defaultValue, onChange }: {
|
|
1
|
+
type UseCombineControlValueOptions<V> = {
|
|
9
2
|
props: Record<string, any>;
|
|
10
3
|
valueKey?: string;
|
|
11
4
|
defaultValue?: V;
|
|
12
5
|
onChange?: (val: V) => void;
|
|
13
|
-
}
|
|
14
|
-
|
|
6
|
+
};
|
|
7
|
+
type UseCombineControlValueEasyResult<V> = {
|
|
8
|
+
value: V;
|
|
15
9
|
onChange: (nextVal: V) => void;
|
|
16
10
|
};
|
|
11
|
+
type UseCombineControlValueResolveResult<V, R extends (...args: any[]) => any> = {
|
|
12
|
+
value: V;
|
|
13
|
+
onChange: (...args: Parameters<R>) => void;
|
|
14
|
+
};
|
|
15
|
+
declare function useCombineControlValue<V>(options: UseCombineControlValueOptions<V>): UseCombineControlValueEasyResult<V>;
|
|
16
|
+
declare function useCombineControlValue<V, R extends (...args: any[]) => any>(options: Omit<UseCombineControlValueOptions<V>, 'onChange'> & {
|
|
17
|
+
onChange?: (...args: Parameters<R>) => void;
|
|
18
|
+
}, resolveFn: (...args: Parameters<R>) => V): UseCombineControlValueResolveResult<V, R>;
|
|
17
19
|
|
|
18
20
|
export { useCombineControlValue };
|
|
21
|
+
export type { UseCombineControlValueEasyResult, UseCombineControlValueOptions, UseCombineControlValueResolveResult };
|
package/cjs/index.cjs
CHANGED
|
@@ -6,6 +6,7 @@ var index$3 = require('./store/createGetter/index.cjs');
|
|
|
6
6
|
var index$2 = require('./store/createStateStore/index.cjs');
|
|
7
7
|
var validator = require('./validator/validator.cjs');
|
|
8
8
|
var decorators = require('./validator/decorators.cjs');
|
|
9
|
+
var useCombineControlValue = require('./hooks/useCombineControlValue.cjs');
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
|
|
@@ -26,3 +27,4 @@ exports.VNumber = decorators.VNumber;
|
|
|
26
27
|
exports.VPattern = decorators.VPattern;
|
|
27
28
|
exports.VRequired = decorators.VRequired;
|
|
28
29
|
exports.VString = decorators.VString;
|
|
30
|
+
exports.useCombineControlValue = useCombineControlValue.useCombineControlValue;
|
package/cjs/index.d.ts
CHANGED
|
@@ -4,4 +4,5 @@ export { createStoreGetter, createStoreGetterMemo } from './store/createGetter/i
|
|
|
4
4
|
export { IHookStateInitAction, IHookStateInitialSetter, IHookStateResolvable, IHookStateSetAction, IHookStateSetter, default as createStateStore } from './store/createStateStore/index.js';
|
|
5
5
|
export { BaseValidator } from './validator/validator.js';
|
|
6
6
|
export { VArray, VBoolean, VEmail, VMax, VMaxLength, VMin, VMinLength, VNumber, VPattern, VRequired, VString } from './validator/decorators.js';
|
|
7
|
+
export { useCombineControlValue } from './hooks/useCombineControlValue.js';
|
|
7
8
|
export { default as RequestError, RequestErrorType } from './request/error.js';
|
package/cjs/request/index.cjs
CHANGED
|
@@ -7,6 +7,7 @@ var defaultHandlers = require('./defaultHandlers.cjs');
|
|
|
7
7
|
var defaultEquals = require('../_utils/defaultEquals.cjs');
|
|
8
8
|
var index = require('../cache/index.cjs');
|
|
9
9
|
var error = require('./error.cjs');
|
|
10
|
+
var deepAssign = require('../_utils/deepAssign.cjs');
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* 创建基础请求实例
|
|
@@ -33,112 +34,160 @@ function createBaseRequest(baseOptions) {
|
|
|
33
34
|
var _b = tslib.__assign(tslib.__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;
|
|
34
35
|
var cache = new index.default(cacheDataInStorage, cacheDataKey, cacheTime, indexDBName, cacheKeyEquals);
|
|
35
36
|
function request(requestParam, options) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
requestDataOrParams = data;
|
|
41
|
-
}
|
|
42
|
-
var _d = tslib.__assign(tslib.__assign(tslib.__assign({}, baseOptions), createOptions), options).defaultMessageShower, defaultMessageShower = _d === void 0 ? console.error : _d;
|
|
43
|
-
var _e = tslib.__assign(tslib.__assign(tslib.__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 ? defaultHandlers._defaultErrorCodeHandler.bind(null, defaultMessageShower) : _h, _j = _e.defaultHttpErrorCodeHandler, defaultHttpErrorCodeHandler = _j === void 0 ? defaultHandlers._defaultHttpErrorCodeHandler.bind(null, defaultMessageShower) : _j, _k = _e.otherErrorHandler, otherErrorHandler = _k === void 0 ? defaultHandlers._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;
|
|
44
|
-
if (enableCache) {
|
|
45
|
-
var cacheItem = cache.getCache(requestDataOrParams);
|
|
46
|
-
if (cacheItem) {
|
|
47
|
-
return Promise.resolve(cacheItem);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return instance
|
|
51
|
-
.request(tslib.__assign({ method: method, url: url, data: data, params: params }, axiosOptions))
|
|
52
|
-
.then(function (res) { return tslib.__awaiter(_this, void 0, void 0, function () {
|
|
53
|
-
var errorCode, _a, _b, _c, customHandler, err, _d, _e, replaceResData, _f, handlerThrowError, _g;
|
|
54
|
-
return tslib.__generator(this, function (_h) {
|
|
55
|
-
switch (_h.label) {
|
|
56
|
-
case 0:
|
|
57
|
-
errorCode = String(at(res.data, errorCodePath));
|
|
58
|
-
if (successCodes.includes(errorCode)) {
|
|
59
|
-
if (cacheData) {
|
|
60
|
-
cache.setCache(requestDataOrParams, res.data, { cacheTime: cacheTime });
|
|
61
|
-
}
|
|
62
|
-
return [2 /*return*/, res.data];
|
|
63
|
-
}
|
|
64
|
-
_a = errorCodeMap, _b = errorCode, _c = _a[_b], customHandler = _c === void 0 ? defaultErrorCodeHandler : _c;
|
|
65
|
-
err = new error("服务端错误", "server", res);
|
|
66
|
-
if (!(typeof customHandler === "string")) return [3 /*break*/, 1];
|
|
67
|
-
defaultMessageShower(customHandler);
|
|
68
|
-
return [3 /*break*/, 3];
|
|
69
|
-
case 1:
|
|
70
|
-
_g = Object;
|
|
71
|
-
return [4 /*yield*/, customHandler(errorCode, res.data, res, tslib.__assign(tslib.__assign({}, requestOptions), requestParam))];
|
|
72
|
-
case 2:
|
|
73
|
-
_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;
|
|
74
|
-
res.data = replaceResData;
|
|
75
|
-
switch (handlerThrowError) {
|
|
76
|
-
case true:
|
|
77
|
-
throw err;
|
|
78
|
-
case false:
|
|
79
|
-
return [2 /*return*/, res.data];
|
|
80
|
-
}
|
|
81
|
-
_h.label = 3;
|
|
82
|
-
case 3:
|
|
83
|
-
if (throwError) {
|
|
84
|
-
throw err;
|
|
85
|
-
}
|
|
86
|
-
return [2 /*return*/, res.data];
|
|
37
|
+
return tslib.__awaiter(this, void 0, void 0, function () {
|
|
38
|
+
function retry() {
|
|
39
|
+
if (retryTimes > 0) {
|
|
40
|
+
return request(requestParam, tslib.__assign(tslib.__assign({}, options), { retryTimes: retryTimes - 1 }));
|
|
87
41
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
var
|
|
91
|
-
|
|
92
|
-
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
var _a, _b, requestMiddlewares, _c, finalAxiosOptions, finalRequestOptions, _i, requestMiddlewares_1, middleware, _d, nextAxiosOptions, nextRequestOptions, method, url, _e, data, _f, params, requestDataOrParams, _g, defaultMessageShower, _h, _j, enableCache, _k, cacheData, _l, defaultErrorCodeHandler, _m, defaultHttpErrorCodeHandler, _o, otherErrorHandler, _p, errorCodePath, _q, cacheTime, _r, errorCodeMap, _s, successCodes, _t, httpErrorCodeMap, _u,
|
|
45
|
+
// axiosOptions = {},
|
|
46
|
+
throwError, _v, retryTimes, cacheItem;
|
|
47
|
+
var _this = this;
|
|
48
|
+
return tslib.__generator(this, function (_w) {
|
|
49
|
+
switch (_w.label) {
|
|
93
50
|
case 0:
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
if (!(typeof customHandler === "string")) return [3 /*break*/, 1];
|
|
99
|
-
defaultMessageShower(customHandler);
|
|
100
|
-
return [3 /*break*/, 3];
|
|
51
|
+
_a = tslib.__assign(tslib.__assign(tslib.__assign({}, baseOptions), createOptions), options), _b = _a.requestMiddlewares, requestMiddlewares = _b === void 0 ? [] : _b, _c = _a.axiosOptions, finalAxiosOptions = _c === void 0 ? {} : _c;
|
|
52
|
+
finalRequestOptions = tslib.__assign(tslib.__assign({}, requestOptions), requestParam);
|
|
53
|
+
_i = 0, requestMiddlewares_1 = requestMiddlewares;
|
|
54
|
+
_w.label = 1;
|
|
101
55
|
case 1:
|
|
102
|
-
|
|
103
|
-
|
|
56
|
+
if (!(_i < requestMiddlewares_1.length)) return [3 /*break*/, 4];
|
|
57
|
+
middleware = requestMiddlewares_1[_i];
|
|
58
|
+
return [4 /*yield*/, middleware(finalAxiosOptions, finalRequestOptions)];
|
|
104
59
|
case 2:
|
|
105
|
-
_d =
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
throw err;
|
|
110
|
-
case false:
|
|
111
|
-
return [2 /*return*/, resData];
|
|
112
|
-
}
|
|
113
|
-
_m.label = 3;
|
|
60
|
+
_d = _w.sent(), nextAxiosOptions = _d.axiosOptions, nextRequestOptions = _d.requestOptions;
|
|
61
|
+
deepAssign.deepAssign({}, finalAxiosOptions, nextAxiosOptions);
|
|
62
|
+
deepAssign.deepAssign({}, finalRequestOptions, nextRequestOptions);
|
|
63
|
+
_w.label = 3;
|
|
114
64
|
case 3:
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
return [2 /*return*/, resData];
|
|
65
|
+
_i++;
|
|
66
|
+
return [3 /*break*/, 1];
|
|
119
67
|
case 4:
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
_l = Object;
|
|
125
|
-
return [4 /*yield*/, otherErrorHandler(error$1)];
|
|
126
|
-
case 5:
|
|
127
|
-
_h = (_l.apply(void 0, [(_m.sent())])), _j = _h.replaceResData, replaceResData = _j === void 0 ? error$1 : _j, _k = _h.throwError, handlerThrowError = _k === void 0 ? "default" : _k;
|
|
128
|
-
resData = replaceResData;
|
|
129
|
-
switch (handlerThrowError) {
|
|
130
|
-
case true:
|
|
131
|
-
throw err;
|
|
132
|
-
case false:
|
|
133
|
-
return [2 /*return*/, resData];
|
|
68
|
+
method = finalRequestOptions.method, url = finalRequestOptions.url, _e = finalRequestOptions.data, data = _e === void 0 ? {} : _e, _f = finalRequestOptions.params, params = _f === void 0 ? {} : _f;
|
|
69
|
+
requestDataOrParams = params;
|
|
70
|
+
if (method.toLowerCase() === "post") {
|
|
71
|
+
requestDataOrParams = data;
|
|
134
72
|
}
|
|
135
|
-
|
|
136
|
-
|
|
73
|
+
_g = tslib.__assign(tslib.__assign(tslib.__assign({}, baseOptions), createOptions), options).defaultMessageShower, defaultMessageShower = _g === void 0 ? console.error : _g;
|
|
74
|
+
_h = tslib.__assign(tslib.__assign(tslib.__assign({}, baseOptions), createOptions), options), _j = _h.enableCache, enableCache = _j === void 0 ? false : _j, _k = _h.cacheData, cacheData = _k === void 0 ? false : _k, _l = _h.defaultErrorCodeHandler, defaultErrorCodeHandler = _l === void 0 ? defaultHandlers._defaultErrorCodeHandler.bind(null, defaultMessageShower) : _l, _m = _h.defaultHttpErrorCodeHandler, defaultHttpErrorCodeHandler = _m === void 0 ? defaultHandlers._defaultHttpErrorCodeHandler.bind(null, defaultMessageShower) : _m, _o = _h.otherErrorHandler, otherErrorHandler = _o === void 0 ? defaultHandlers._defaultOtherErrorCodeHandler.bind(null, defaultMessageShower) : _o, _p = _h.errorCodePath, errorCodePath = _p === void 0 ? "code" : _p, _q = _h.cacheTime, cacheTime = _q === void 0 ? 60 : _q, _r = _h.errorCodeMap, errorCodeMap = _r === void 0 ? {} : _r, _s = _h.successCodes, successCodes = _s === void 0 ? ["0", "200"] : _s, _t = _h.httpErrorCodeMap, httpErrorCodeMap = _t === void 0 ? {} : _t, _u = _h.throwError, throwError = _u === void 0 ? true : _u, _v = _h.retryTimes, retryTimes = _v === void 0 ? 0 : _v;
|
|
75
|
+
if (enableCache) {
|
|
76
|
+
cacheItem = cache.getCache(requestDataOrParams);
|
|
77
|
+
if (cacheItem) {
|
|
78
|
+
return [2 /*return*/, Promise.resolve(cacheItem)];
|
|
79
|
+
}
|
|
137
80
|
}
|
|
138
|
-
return [2 /*return*/,
|
|
81
|
+
return [2 /*return*/, instance
|
|
82
|
+
.request(tslib.__assign({ method: method, url: url, data: data, params: params }, finalAxiosOptions))
|
|
83
|
+
.then(function (res) { return tslib.__awaiter(_this, void 0, void 0, function () {
|
|
84
|
+
var errorCode, _a, _b, _c, customHandler, err, retryTask, _d, _e, replaceResData, _f, handlerThrowError, _g, retryTask;
|
|
85
|
+
return tslib.__generator(this, function (_h) {
|
|
86
|
+
switch (_h.label) {
|
|
87
|
+
case 0:
|
|
88
|
+
errorCode = String(at(res.data, errorCodePath));
|
|
89
|
+
if (successCodes.includes(errorCode)) {
|
|
90
|
+
if (cacheData) {
|
|
91
|
+
cache.setCache(requestDataOrParams, res.data, { cacheTime: cacheTime });
|
|
92
|
+
}
|
|
93
|
+
return [2 /*return*/, res.data];
|
|
94
|
+
}
|
|
95
|
+
_a = errorCodeMap, _b = errorCode, _c = _a[_b], customHandler = _c === void 0 ? defaultErrorCodeHandler : _c;
|
|
96
|
+
err = new error("服务端错误", "server", res);
|
|
97
|
+
if (!(typeof customHandler === "string")) return [3 /*break*/, 1];
|
|
98
|
+
defaultMessageShower(customHandler);
|
|
99
|
+
retryTask = retry();
|
|
100
|
+
if (retryTask)
|
|
101
|
+
return [2 /*return*/, retryTask];
|
|
102
|
+
return [3 /*break*/, 3];
|
|
103
|
+
case 1:
|
|
104
|
+
_g = Object;
|
|
105
|
+
return [4 /*yield*/, customHandler(errorCode, res.data, res, tslib.__assign(tslib.__assign({}, requestOptions), requestParam))];
|
|
106
|
+
case 2:
|
|
107
|
+
_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;
|
|
108
|
+
retryTask = retry();
|
|
109
|
+
if (retryTask)
|
|
110
|
+
return [2 /*return*/, retryTask];
|
|
111
|
+
res.data = replaceResData;
|
|
112
|
+
switch (handlerThrowError) {
|
|
113
|
+
case true:
|
|
114
|
+
throw err;
|
|
115
|
+
case false:
|
|
116
|
+
return [2 /*return*/, res.data];
|
|
117
|
+
}
|
|
118
|
+
_h.label = 3;
|
|
119
|
+
case 3:
|
|
120
|
+
if (throwError) {
|
|
121
|
+
throw err;
|
|
122
|
+
}
|
|
123
|
+
return [2 /*return*/, res.data];
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}); }, function (error$1) { return tslib.__awaiter(_this, void 0, void 0, function () {
|
|
127
|
+
var resData, _a, _b, _c, customHandler, err, retryTask, _d, _e, replaceResData, _f, handlerThrowError, _g, retryTask, resData, err, _h, _j, replaceResData, _k, handlerThrowError, _l, retryTask;
|
|
128
|
+
return tslib.__generator(this, function (_m) {
|
|
129
|
+
switch (_m.label) {
|
|
130
|
+
case 0:
|
|
131
|
+
if (!error$1.response) return [3 /*break*/, 4];
|
|
132
|
+
resData = error$1;
|
|
133
|
+
_a = httpErrorCodeMap, _b = error$1.response.status, _c = _a[_b], customHandler = _c === void 0 ? defaultHttpErrorCodeHandler : _c;
|
|
134
|
+
err = new error("服务端错误", "http", error$1);
|
|
135
|
+
if (!(typeof customHandler === "string")) return [3 /*break*/, 1];
|
|
136
|
+
defaultMessageShower(customHandler);
|
|
137
|
+
retryTask = retry();
|
|
138
|
+
if (retryTask)
|
|
139
|
+
return [2 /*return*/, retryTask];
|
|
140
|
+
return [3 /*break*/, 3];
|
|
141
|
+
case 1:
|
|
142
|
+
_g = Object;
|
|
143
|
+
return [4 /*yield*/, customHandler(error$1.response.status, error$1, tslib.__assign(tslib.__assign({}, requestOptions), requestParam))];
|
|
144
|
+
case 2:
|
|
145
|
+
_d = _g.apply(void 0, [(_m.sent())]), _e = _d.replaceResData, replaceResData = _e === void 0 ? error$1 : _e, _f = _d.throwError, handlerThrowError = _f === void 0 ? "default" : _f;
|
|
146
|
+
retryTask = retry();
|
|
147
|
+
if (retryTask)
|
|
148
|
+
return [2 /*return*/, retryTask];
|
|
149
|
+
resData = replaceResData;
|
|
150
|
+
switch (handlerThrowError) {
|
|
151
|
+
case true:
|
|
152
|
+
throw err;
|
|
153
|
+
case false:
|
|
154
|
+
return [2 /*return*/, resData];
|
|
155
|
+
}
|
|
156
|
+
_m.label = 3;
|
|
157
|
+
case 3:
|
|
158
|
+
if (throwError) {
|
|
159
|
+
throw err;
|
|
160
|
+
}
|
|
161
|
+
return [2 /*return*/, resData];
|
|
162
|
+
case 4:
|
|
163
|
+
resData = error$1;
|
|
164
|
+
err = new error("服务端错误", "http", error$1);
|
|
165
|
+
err.type = "http";
|
|
166
|
+
err.data = error$1;
|
|
167
|
+
_l = Object;
|
|
168
|
+
return [4 /*yield*/, otherErrorHandler(error$1)];
|
|
169
|
+
case 5:
|
|
170
|
+
_h = (_l.apply(void 0, [(_m.sent())])), _j = _h.replaceResData, replaceResData = _j === void 0 ? error$1 : _j, _k = _h.throwError, handlerThrowError = _k === void 0 ? "default" : _k;
|
|
171
|
+
retryTask = retry();
|
|
172
|
+
if (retryTask)
|
|
173
|
+
return [2 /*return*/, retryTask];
|
|
174
|
+
resData = replaceResData;
|
|
175
|
+
switch (handlerThrowError) {
|
|
176
|
+
case true:
|
|
177
|
+
throw err;
|
|
178
|
+
case false:
|
|
179
|
+
return [2 /*return*/, resData];
|
|
180
|
+
}
|
|
181
|
+
if (throwError) {
|
|
182
|
+
throw err;
|
|
183
|
+
}
|
|
184
|
+
return [2 /*return*/, resData];
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
}); })];
|
|
139
188
|
}
|
|
140
189
|
});
|
|
141
|
-
});
|
|
190
|
+
});
|
|
142
191
|
}
|
|
143
192
|
request.clearCache = function () {
|
|
144
193
|
cache.clear();
|
package/cjs/request/index.d.ts
CHANGED
|
@@ -111,6 +111,14 @@ interface Options<Params = any, Data = any> {
|
|
|
111
111
|
*/
|
|
112
112
|
otherErrorHandler?: (error: any) => Promise<ErrorHandlerReturnType<Data> | void>;
|
|
113
113
|
axiosOptions?: Omit<AxiosRequestConfig<Params>, "method" | "url" | "params" | "data">;
|
|
114
|
+
requestMiddlewares?: ((options: Options<Params, Data>, requestOptions: RequestOptions<Params>) => Promise<{
|
|
115
|
+
axiosOptions?: Options<Params, Data>["axiosOptions"];
|
|
116
|
+
requestOptions?: RequestOptions<Params>;
|
|
117
|
+
}> | {
|
|
118
|
+
axiosOptions: Options<Params, Data>["axiosOptions"];
|
|
119
|
+
requestOptions?: RequestOptions<Params>;
|
|
120
|
+
})[];
|
|
121
|
+
retryTimes?: number;
|
|
114
122
|
}
|
|
115
123
|
/**
|
|
116
124
|
* 请求参数接口
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var tslib = require('tslib');
|
|
4
4
|
|
|
5
|
+
var KEY_SYMBOL = Symbol("key-description");
|
|
5
6
|
/**
|
|
6
7
|
* 基础验证器类
|
|
7
8
|
* 提供字段验证功能,可通过装饰器为类属性添加验证规则
|
|
@@ -13,8 +14,7 @@ var BaseValidator = /** @class */ (function () {
|
|
|
13
14
|
*/
|
|
14
15
|
function BaseValidator() {
|
|
15
16
|
/** 用于存储验证器映射的私有符号 */
|
|
16
|
-
this.__keySymbol =
|
|
17
|
-
this.__keySymbol = Symbol("key-description");
|
|
17
|
+
this.__keySymbol = KEY_SYMBOL;
|
|
18
18
|
this[this.__keySymbol] = {};
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
function deepAssign(target) {
|
|
2
|
+
var sources = [];
|
|
3
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
4
|
+
sources[_i - 1] = arguments[_i];
|
|
5
|
+
}
|
|
6
|
+
for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) {
|
|
7
|
+
var source = sources_1[_a];
|
|
8
|
+
for (var key in source) {
|
|
9
|
+
var val = source[key];
|
|
10
|
+
if (val &&
|
|
11
|
+
typeof val === 'object' &&
|
|
12
|
+
!Array.isArray(val)) {
|
|
13
|
+
target[key] = deepAssign(target[key] || {}, val);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
target[key] = val;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return target;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export { deepAssign };
|
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
* @param param props 组件属性
|
|
3
|
-
* @param param valueKey 组件值的key,默认value, undefined 被认为是有值,只有当 key 不存在时,转换为非受控模式
|
|
4
|
-
* @param param defaultValue 默认值
|
|
5
|
-
* @param param onChange 值改变时的回调
|
|
6
|
-
* @returns value: 组件应该采用的值,onChange:值改变时的回调,处理非受控值与向父组件传递值的逻辑
|
|
7
|
-
*/
|
|
8
|
-
declare const useCombineControlValue: <V>({ props, valueKey, defaultValue, onChange }: {
|
|
1
|
+
type UseCombineControlValueOptions<V> = {
|
|
9
2
|
props: Record<string, any>;
|
|
10
3
|
valueKey?: string;
|
|
11
4
|
defaultValue?: V;
|
|
12
5
|
onChange?: (val: V) => void;
|
|
13
|
-
}
|
|
14
|
-
|
|
6
|
+
};
|
|
7
|
+
type UseCombineControlValueEasyResult<V> = {
|
|
8
|
+
value: V;
|
|
15
9
|
onChange: (nextVal: V) => void;
|
|
16
10
|
};
|
|
11
|
+
type UseCombineControlValueResolveResult<V, R extends (...args: any[]) => any> = {
|
|
12
|
+
value: V;
|
|
13
|
+
onChange: (...args: Parameters<R>) => void;
|
|
14
|
+
};
|
|
15
|
+
declare function useCombineControlValue<V>(options: UseCombineControlValueOptions<V>): UseCombineControlValueEasyResult<V>;
|
|
16
|
+
declare function useCombineControlValue<V, R extends (...args: any[]) => any>(options: Omit<UseCombineControlValueOptions<V>, 'onChange'> & {
|
|
17
|
+
onChange?: (...args: Parameters<R>) => void;
|
|
18
|
+
}, resolveFn: (...args: Parameters<R>) => V): UseCombineControlValueResolveResult<V, R>;
|
|
17
19
|
|
|
18
20
|
export { useCombineControlValue };
|
|
21
|
+
export type { UseCombineControlValueEasyResult, UseCombineControlValueOptions, UseCombineControlValueResolveResult };
|
|
@@ -3,19 +3,30 @@ import { useState, useCallback, useMemo } from 'react';
|
|
|
3
3
|
/**
|
|
4
4
|
* @param param props 组件属性
|
|
5
5
|
* @param param valueKey 组件值的key,默认value, undefined 被认为是有值,只有当 key 不存在时,转换为非受控模式
|
|
6
|
-
* @param param defaultValue
|
|
6
|
+
* @param param defaultValue 默认值,当 value 和 defaultValue 同时存在时,以 value 为默认值
|
|
7
7
|
* @param param onChange 值改变时的回调
|
|
8
8
|
* @returns value: 组件应该采用的值,onChange:值改变时的回调,处理非受控值与向父组件传递值的逻辑
|
|
9
9
|
*/
|
|
10
|
-
|
|
10
|
+
function useCombineControlValue(_a, resolveFn) {
|
|
11
11
|
var props = _a.props, _b = _a.valueKey, valueKey = _b === void 0 ? 'value' : _b, defaultValue = _a.defaultValue, onChange = _a.onChange;
|
|
12
12
|
var _c = props, _d = valueKey, value = _c[_d];
|
|
13
|
-
var hasValue =
|
|
13
|
+
var hasValue = Object.prototype.hasOwnProperty.call(props, valueKey);
|
|
14
14
|
var _e = useState(value !== null && value !== void 0 ? value : defaultValue), internalValue = _e[0], setInternalValue = _e[1];
|
|
15
|
-
var handleChange = useCallback(function (
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
var handleChange = useCallback(function () {
|
|
16
|
+
var params = [];
|
|
17
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
18
|
+
params[_i] = arguments[_i];
|
|
19
|
+
}
|
|
20
|
+
var realNextVal;
|
|
21
|
+
if (typeof resolveFn === 'function') {
|
|
22
|
+
realNextVal = resolveFn.apply(void 0, params);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
realNextVal = params[0];
|
|
26
|
+
}
|
|
27
|
+
setInternalValue(realNextVal);
|
|
28
|
+
onChange === null || onChange === void 0 ? void 0 : onChange.apply(void 0, params);
|
|
29
|
+
}, [onChange, resolveFn]);
|
|
19
30
|
var finalValue = useMemo(function () {
|
|
20
31
|
if (hasValue)
|
|
21
32
|
return value;
|
|
@@ -25,6 +36,6 @@ var useCombineControlValue = function (_a) {
|
|
|
25
36
|
value: finalValue,
|
|
26
37
|
onChange: handleChange
|
|
27
38
|
};
|
|
28
|
-
}
|
|
39
|
+
}
|
|
29
40
|
|
|
30
41
|
export { useCombineControlValue };
|
package/es/index.d.ts
CHANGED
|
@@ -4,4 +4,5 @@ export { createStoreGetter, createStoreGetterMemo } from './store/createGetter/i
|
|
|
4
4
|
export { IHookStateInitAction, IHookStateInitialSetter, IHookStateResolvable, IHookStateSetAction, IHookStateSetter, default as createStateStore } from './store/createStateStore/index.js';
|
|
5
5
|
export { BaseValidator } from './validator/validator.js';
|
|
6
6
|
export { VArray, VBoolean, VEmail, VMax, VMaxLength, VMin, VMinLength, VNumber, VPattern, VRequired, VString } from './validator/decorators.js';
|
|
7
|
+
export { useCombineControlValue } from './hooks/useCombineControlValue.js';
|
|
7
8
|
export { default as RequestError, RequestErrorType } from './request/error.js';
|
package/es/index.mjs
CHANGED
|
@@ -4,3 +4,4 @@ export { createStoreGetter, createStoreGetterMemo } from './store/createGetter/i
|
|
|
4
4
|
export { default as createStateStore } from './store/createStateStore/index.mjs';
|
|
5
5
|
export { BaseValidator } from './validator/validator.mjs';
|
|
6
6
|
export { VArray, VBoolean, VEmail, VMax, VMaxLength, VMin, VMinLength, VNumber, VPattern, VRequired, VString } from './validator/decorators.mjs';
|
|
7
|
+
export { useCombineControlValue } from './hooks/useCombineControlValue.mjs';
|
package/es/request/index.d.ts
CHANGED
|
@@ -111,6 +111,14 @@ interface Options<Params = any, Data = any> {
|
|
|
111
111
|
*/
|
|
112
112
|
otherErrorHandler?: (error: any) => Promise<ErrorHandlerReturnType<Data> | void>;
|
|
113
113
|
axiosOptions?: Omit<AxiosRequestConfig<Params>, "method" | "url" | "params" | "data">;
|
|
114
|
+
requestMiddlewares?: ((options: Options<Params, Data>, requestOptions: RequestOptions<Params>) => Promise<{
|
|
115
|
+
axiosOptions?: Options<Params, Data>["axiosOptions"];
|
|
116
|
+
requestOptions?: RequestOptions<Params>;
|
|
117
|
+
}> | {
|
|
118
|
+
axiosOptions: Options<Params, Data>["axiosOptions"];
|
|
119
|
+
requestOptions?: RequestOptions<Params>;
|
|
120
|
+
})[];
|
|
121
|
+
retryTimes?: number;
|
|
114
122
|
}
|
|
115
123
|
/**
|
|
116
124
|
* 请求参数接口
|
package/es/request/index.mjs
CHANGED
|
@@ -5,6 +5,7 @@ import { _defaultErrorCodeHandler, _defaultHttpErrorCodeHandler, _defaultOtherEr
|
|
|
5
5
|
import defaultEquals from '../_utils/defaultEquals.mjs';
|
|
6
6
|
import Cache from '../cache/index.mjs';
|
|
7
7
|
import RequestError from './error.mjs';
|
|
8
|
+
import { deepAssign } from '../_utils/deepAssign.mjs';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* 创建基础请求实例
|
|
@@ -31,112 +32,160 @@ function createBaseRequest(baseOptions) {
|
|
|
31
32
|
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
33
|
var cache = new Cache(cacheDataInStorage, cacheDataKey, cacheTime, indexDBName, cacheKeyEquals);
|
|
33
34
|
function request(requestParam, options) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
requestDataOrParams = data;
|
|
39
|
-
}
|
|
40
|
-
var _d = __assign(__assign(__assign({}, baseOptions), createOptions), options).defaultMessageShower, defaultMessageShower = _d === void 0 ? console.error : _d;
|
|
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;
|
|
42
|
-
if (enableCache) {
|
|
43
|
-
var cacheItem = cache.getCache(requestDataOrParams);
|
|
44
|
-
if (cacheItem) {
|
|
45
|
-
return Promise.resolve(cacheItem);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
return instance
|
|
49
|
-
.request(__assign({ method: method, url: url, data: data, params: params }, axiosOptions))
|
|
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) {
|
|
82
|
-
throw err;
|
|
83
|
-
}
|
|
84
|
-
return [2 /*return*/, res.data];
|
|
35
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
36
|
+
function retry() {
|
|
37
|
+
if (retryTimes > 0) {
|
|
38
|
+
return request(requestParam, __assign(__assign({}, options), { retryTimes: retryTimes - 1 }));
|
|
85
39
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
var
|
|
89
|
-
|
|
90
|
-
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
var _a, _b, requestMiddlewares, _c, finalAxiosOptions, finalRequestOptions, _i, requestMiddlewares_1, middleware, _d, nextAxiosOptions, nextRequestOptions, method, url, _e, data, _f, params, requestDataOrParams, _g, defaultMessageShower, _h, _j, enableCache, _k, cacheData, _l, defaultErrorCodeHandler, _m, defaultHttpErrorCodeHandler, _o, otherErrorHandler, _p, errorCodePath, _q, cacheTime, _r, errorCodeMap, _s, successCodes, _t, httpErrorCodeMap, _u,
|
|
43
|
+
// axiosOptions = {},
|
|
44
|
+
throwError, _v, retryTimes, cacheItem;
|
|
45
|
+
var _this = this;
|
|
46
|
+
return __generator(this, function (_w) {
|
|
47
|
+
switch (_w.label) {
|
|
91
48
|
case 0:
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
if (!(typeof customHandler === "string")) return [3 /*break*/, 1];
|
|
97
|
-
defaultMessageShower(customHandler);
|
|
98
|
-
return [3 /*break*/, 3];
|
|
49
|
+
_a = __assign(__assign(__assign({}, baseOptions), createOptions), options), _b = _a.requestMiddlewares, requestMiddlewares = _b === void 0 ? [] : _b, _c = _a.axiosOptions, finalAxiosOptions = _c === void 0 ? {} : _c;
|
|
50
|
+
finalRequestOptions = __assign(__assign({}, requestOptions), requestParam);
|
|
51
|
+
_i = 0, requestMiddlewares_1 = requestMiddlewares;
|
|
52
|
+
_w.label = 1;
|
|
99
53
|
case 1:
|
|
100
|
-
|
|
101
|
-
|
|
54
|
+
if (!(_i < requestMiddlewares_1.length)) return [3 /*break*/, 4];
|
|
55
|
+
middleware = requestMiddlewares_1[_i];
|
|
56
|
+
return [4 /*yield*/, middleware(finalAxiosOptions, finalRequestOptions)];
|
|
102
57
|
case 2:
|
|
103
|
-
_d =
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
throw err;
|
|
108
|
-
case false:
|
|
109
|
-
return [2 /*return*/, resData];
|
|
110
|
-
}
|
|
111
|
-
_m.label = 3;
|
|
58
|
+
_d = _w.sent(), nextAxiosOptions = _d.axiosOptions, nextRequestOptions = _d.requestOptions;
|
|
59
|
+
deepAssign({}, finalAxiosOptions, nextAxiosOptions);
|
|
60
|
+
deepAssign({}, finalRequestOptions, nextRequestOptions);
|
|
61
|
+
_w.label = 3;
|
|
112
62
|
case 3:
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}
|
|
116
|
-
return [2 /*return*/, resData];
|
|
63
|
+
_i++;
|
|
64
|
+
return [3 /*break*/, 1];
|
|
117
65
|
case 4:
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
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];
|
|
66
|
+
method = finalRequestOptions.method, url = finalRequestOptions.url, _e = finalRequestOptions.data, data = _e === void 0 ? {} : _e, _f = finalRequestOptions.params, params = _f === void 0 ? {} : _f;
|
|
67
|
+
requestDataOrParams = params;
|
|
68
|
+
if (method.toLowerCase() === "post") {
|
|
69
|
+
requestDataOrParams = data;
|
|
132
70
|
}
|
|
133
|
-
|
|
134
|
-
|
|
71
|
+
_g = __assign(__assign(__assign({}, baseOptions), createOptions), options).defaultMessageShower, defaultMessageShower = _g === void 0 ? console.error : _g;
|
|
72
|
+
_h = __assign(__assign(__assign({}, baseOptions), createOptions), options), _j = _h.enableCache, enableCache = _j === void 0 ? false : _j, _k = _h.cacheData, cacheData = _k === void 0 ? false : _k, _l = _h.defaultErrorCodeHandler, defaultErrorCodeHandler = _l === void 0 ? _defaultErrorCodeHandler.bind(null, defaultMessageShower) : _l, _m = _h.defaultHttpErrorCodeHandler, defaultHttpErrorCodeHandler = _m === void 0 ? _defaultHttpErrorCodeHandler.bind(null, defaultMessageShower) : _m, _o = _h.otherErrorHandler, otherErrorHandler = _o === void 0 ? _defaultOtherErrorCodeHandler.bind(null, defaultMessageShower) : _o, _p = _h.errorCodePath, errorCodePath = _p === void 0 ? "code" : _p, _q = _h.cacheTime, cacheTime = _q === void 0 ? 60 : _q, _r = _h.errorCodeMap, errorCodeMap = _r === void 0 ? {} : _r, _s = _h.successCodes, successCodes = _s === void 0 ? ["0", "200"] : _s, _t = _h.httpErrorCodeMap, httpErrorCodeMap = _t === void 0 ? {} : _t, _u = _h.throwError, throwError = _u === void 0 ? true : _u, _v = _h.retryTimes, retryTimes = _v === void 0 ? 0 : _v;
|
|
73
|
+
if (enableCache) {
|
|
74
|
+
cacheItem = cache.getCache(requestDataOrParams);
|
|
75
|
+
if (cacheItem) {
|
|
76
|
+
return [2 /*return*/, Promise.resolve(cacheItem)];
|
|
77
|
+
}
|
|
135
78
|
}
|
|
136
|
-
return [2 /*return*/,
|
|
79
|
+
return [2 /*return*/, instance
|
|
80
|
+
.request(__assign({ method: method, url: url, data: data, params: params }, finalAxiosOptions))
|
|
81
|
+
.then(function (res) { return __awaiter(_this, void 0, void 0, function () {
|
|
82
|
+
var errorCode, _a, _b, _c, customHandler, err, retryTask, _d, _e, replaceResData, _f, handlerThrowError, _g, retryTask;
|
|
83
|
+
return __generator(this, function (_h) {
|
|
84
|
+
switch (_h.label) {
|
|
85
|
+
case 0:
|
|
86
|
+
errorCode = String(at(res.data, errorCodePath));
|
|
87
|
+
if (successCodes.includes(errorCode)) {
|
|
88
|
+
if (cacheData) {
|
|
89
|
+
cache.setCache(requestDataOrParams, res.data, { cacheTime: cacheTime });
|
|
90
|
+
}
|
|
91
|
+
return [2 /*return*/, res.data];
|
|
92
|
+
}
|
|
93
|
+
_a = errorCodeMap, _b = errorCode, _c = _a[_b], customHandler = _c === void 0 ? defaultErrorCodeHandler : _c;
|
|
94
|
+
err = new RequestError("服务端错误", "server", res);
|
|
95
|
+
if (!(typeof customHandler === "string")) return [3 /*break*/, 1];
|
|
96
|
+
defaultMessageShower(customHandler);
|
|
97
|
+
retryTask = retry();
|
|
98
|
+
if (retryTask)
|
|
99
|
+
return [2 /*return*/, retryTask];
|
|
100
|
+
return [3 /*break*/, 3];
|
|
101
|
+
case 1:
|
|
102
|
+
_g = Object;
|
|
103
|
+
return [4 /*yield*/, customHandler(errorCode, res.data, res, __assign(__assign({}, requestOptions), requestParam))];
|
|
104
|
+
case 2:
|
|
105
|
+
_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;
|
|
106
|
+
retryTask = retry();
|
|
107
|
+
if (retryTask)
|
|
108
|
+
return [2 /*return*/, retryTask];
|
|
109
|
+
res.data = replaceResData;
|
|
110
|
+
switch (handlerThrowError) {
|
|
111
|
+
case true:
|
|
112
|
+
throw err;
|
|
113
|
+
case false:
|
|
114
|
+
return [2 /*return*/, res.data];
|
|
115
|
+
}
|
|
116
|
+
_h.label = 3;
|
|
117
|
+
case 3:
|
|
118
|
+
if (throwError) {
|
|
119
|
+
throw err;
|
|
120
|
+
}
|
|
121
|
+
return [2 /*return*/, res.data];
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
}); }, function (error) { return __awaiter(_this, void 0, void 0, function () {
|
|
125
|
+
var resData, _a, _b, _c, customHandler, err, retryTask, _d, _e, replaceResData, _f, handlerThrowError, _g, retryTask, resData, err, _h, _j, replaceResData, _k, handlerThrowError, _l, retryTask;
|
|
126
|
+
return __generator(this, function (_m) {
|
|
127
|
+
switch (_m.label) {
|
|
128
|
+
case 0:
|
|
129
|
+
if (!error.response) return [3 /*break*/, 4];
|
|
130
|
+
resData = error;
|
|
131
|
+
_a = httpErrorCodeMap, _b = error.response.status, _c = _a[_b], customHandler = _c === void 0 ? defaultHttpErrorCodeHandler : _c;
|
|
132
|
+
err = new RequestError("服务端错误", "http", error);
|
|
133
|
+
if (!(typeof customHandler === "string")) return [3 /*break*/, 1];
|
|
134
|
+
defaultMessageShower(customHandler);
|
|
135
|
+
retryTask = retry();
|
|
136
|
+
if (retryTask)
|
|
137
|
+
return [2 /*return*/, retryTask];
|
|
138
|
+
return [3 /*break*/, 3];
|
|
139
|
+
case 1:
|
|
140
|
+
_g = Object;
|
|
141
|
+
return [4 /*yield*/, customHandler(error.response.status, error, __assign(__assign({}, requestOptions), requestParam))];
|
|
142
|
+
case 2:
|
|
143
|
+
_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;
|
|
144
|
+
retryTask = retry();
|
|
145
|
+
if (retryTask)
|
|
146
|
+
return [2 /*return*/, retryTask];
|
|
147
|
+
resData = replaceResData;
|
|
148
|
+
switch (handlerThrowError) {
|
|
149
|
+
case true:
|
|
150
|
+
throw err;
|
|
151
|
+
case false:
|
|
152
|
+
return [2 /*return*/, resData];
|
|
153
|
+
}
|
|
154
|
+
_m.label = 3;
|
|
155
|
+
case 3:
|
|
156
|
+
if (throwError) {
|
|
157
|
+
throw err;
|
|
158
|
+
}
|
|
159
|
+
return [2 /*return*/, resData];
|
|
160
|
+
case 4:
|
|
161
|
+
resData = error;
|
|
162
|
+
err = new RequestError("服务端错误", "http", error);
|
|
163
|
+
err.type = "http";
|
|
164
|
+
err.data = error;
|
|
165
|
+
_l = Object;
|
|
166
|
+
return [4 /*yield*/, otherErrorHandler(error)];
|
|
167
|
+
case 5:
|
|
168
|
+
_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;
|
|
169
|
+
retryTask = retry();
|
|
170
|
+
if (retryTask)
|
|
171
|
+
return [2 /*return*/, retryTask];
|
|
172
|
+
resData = replaceResData;
|
|
173
|
+
switch (handlerThrowError) {
|
|
174
|
+
case true:
|
|
175
|
+
throw err;
|
|
176
|
+
case false:
|
|
177
|
+
return [2 /*return*/, resData];
|
|
178
|
+
}
|
|
179
|
+
if (throwError) {
|
|
180
|
+
throw err;
|
|
181
|
+
}
|
|
182
|
+
return [2 /*return*/, resData];
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
}); })];
|
|
137
186
|
}
|
|
138
187
|
});
|
|
139
|
-
});
|
|
188
|
+
});
|
|
140
189
|
}
|
|
141
190
|
request.clearCache = function () {
|
|
142
191
|
cache.clear();
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { __spreadArray } from 'tslib';
|
|
2
2
|
|
|
3
|
+
var KEY_SYMBOL = Symbol("key-description");
|
|
3
4
|
/**
|
|
4
5
|
* 基础验证器类
|
|
5
6
|
* 提供字段验证功能,可通过装饰器为类属性添加验证规则
|
|
@@ -11,8 +12,7 @@ var BaseValidator = /** @class */ (function () {
|
|
|
11
12
|
*/
|
|
12
13
|
function BaseValidator() {
|
|
13
14
|
/** 用于存储验证器映射的私有符号 */
|
|
14
|
-
this.__keySymbol =
|
|
15
|
-
this.__keySymbol = Symbol("key-description");
|
|
15
|
+
this.__keySymbol = KEY_SYMBOL;
|
|
16
16
|
this[this.__keySymbol] = {};
|
|
17
17
|
}
|
|
18
18
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rxtutils",
|
|
3
|
-
"version": "1.1.4-beta.
|
|
3
|
+
"version": "1.1.4-beta.11",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "cjs/index.cjs",
|
|
6
6
|
"module": "es/index.mjs",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"build": "pnpm clean && rollup -c",
|
|
14
14
|
"clean": "rm -rf es cjs",
|
|
15
15
|
"publishNpm": "npm publish --registry https://registry.npmjs.org",
|
|
16
|
-
"
|
|
16
|
+
"loginNpm": "npm login --registry https://registry.npmjs.org"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@rollup/plugin-typescript": "^12.1.2",
|