rxtutils 1.1.2-beta.9 → 1.1.4-beta.1
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/README.md +2 -2
- package/{dist/cjs → cjs}/cache/index.cjs +28 -15
- package/{dist/types → cjs}/cache/index.d.ts +13 -7
- package/cjs/hooks/index.cjs +7 -0
- package/cjs/hooks/index.d.ts +1 -0
- package/cjs/hooks/useCombineControlValue.cjs +32 -0
- package/cjs/hooks/useCombineControlValue.d.ts +18 -0
- package/{dist/cjs → cjs}/request/index.cjs +3 -3
- package/{dist/types → cjs}/request/index.d.ts +1 -0
- package/cjs/store/index.cjs +10 -0
- package/cjs/store/index.d.ts +2 -0
- package/cjs/validator/index.cjs +19 -0
- package/cjs/validator/index.d.ts +2 -0
- package/{dist/cjs → cjs}/validator/validator.cjs +19 -14
- package/{dist/types → cjs}/validator/validator.d.ts +5 -10
- package/es/cache/index.d.ts +141 -0
- package/{dist/es → es}/cache/index.mjs +28 -15
- package/es/cache/indexDB.d.ts +52 -0
- package/es/hooks/index.d.ts +1 -0
- package/es/hooks/index.mjs +1 -0
- package/es/hooks/useCombineControlValue.d.ts +18 -0
- package/es/hooks/useCombineControlValue.mjs +30 -0
- package/es/index.d.ts +7 -0
- package/es/request/error.d.ts +31 -0
- package/es/request/index.d.ts +140 -0
- package/{dist/es → es}/request/index.mjs +2 -2
- package/es/store/createGetter/index.d.ts +30 -0
- package/es/store/createStateStore/index.d.ts +42 -0
- package/es/store/index.d.ts +2 -0
- package/es/store/index.mjs +2 -0
- package/es/validator/decorators.d.ts +159 -0
- package/es/validator/index.d.ts +2 -0
- package/es/validator/index.mjs +2 -0
- package/es/validator/validator.d.ts +84 -0
- package/{dist/es → es}/validator/validator.mjs +19 -14
- package/package.json +12 -9
- /package/{dist/cjs → cjs/_utils}/defaultEquals.cjs +0 -0
- /package/{dist/cjs → cjs}/cache/indexDB.cjs +0 -0
- /package/{dist/types → cjs}/cache/indexDB.d.ts +0 -0
- /package/{dist/cjs → cjs}/index.cjs +0 -0
- /package/{dist/types → cjs}/index.d.ts +0 -0
- /package/{dist/cjs → cjs}/request/defaultHandlers.cjs +0 -0
- /package/{dist/cjs → cjs}/request/error.cjs +0 -0
- /package/{dist/types → cjs}/request/error.d.ts +0 -0
- /package/{dist/cjs → cjs}/store/createGetter/index.cjs +0 -0
- /package/{dist/types → cjs}/store/createGetter/index.d.ts +0 -0
- /package/{dist/cjs → cjs}/store/createStateStore/index.cjs +0 -0
- /package/{dist/types → cjs}/store/createStateStore/index.d.ts +0 -0
- /package/{dist/cjs → cjs}/validator/decorators.cjs +0 -0
- /package/{dist/types → cjs}/validator/decorators.d.ts +0 -0
- /package/{dist/es → es/_utils}/defaultEquals.mjs +0 -0
- /package/{dist/es → es}/cache/indexDB.mjs +0 -0
- /package/{dist/es → es}/index.mjs +0 -0
- /package/{dist/es → es}/request/defaultHandlers.mjs +0 -0
- /package/{dist/es → es}/request/error.mjs +0 -0
- /package/{dist/es → es}/store/createGetter/index.mjs +0 -0
- /package/{dist/es → es}/store/createStateStore/index.mjs +0 -0
- /package/{dist/es → es}/validator/decorators.mjs +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 验证器函数类型,接收任意值并返回验证结果
|
|
3
|
+
* @param val 需要验证的值
|
|
4
|
+
* @returns 包含验证状态和可选错误消息的对象
|
|
5
|
+
*/
|
|
6
|
+
type Validator = (val: any) => {
|
|
7
|
+
name: string;
|
|
8
|
+
status: boolean;
|
|
9
|
+
message?: string;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* 验证器映射类型,用于存储字段名到验证器数组的映射
|
|
13
|
+
*/
|
|
14
|
+
type ValidatorMap = {
|
|
15
|
+
[key: string]: Validator[];
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* 基础验证器类
|
|
19
|
+
* 提供字段验证功能,可通过装饰器为类属性添加验证规则
|
|
20
|
+
*/
|
|
21
|
+
declare class BaseValidator {
|
|
22
|
+
/** 用于存储验证器映射的私有符号 */
|
|
23
|
+
private __keySymbol;
|
|
24
|
+
/** 用于存储验证器映射的索引签名 */
|
|
25
|
+
[key: symbol]: ValidatorMap;
|
|
26
|
+
/** 用于存储类属性的索引签名 */
|
|
27
|
+
[key: string]: any;
|
|
28
|
+
/**
|
|
29
|
+
* 构造函数
|
|
30
|
+
* 初始化验证器映射存储
|
|
31
|
+
*/
|
|
32
|
+
constructor();
|
|
33
|
+
/**
|
|
34
|
+
* 验证单个字段
|
|
35
|
+
* @param itemAll 是否验证所有规则,为true时会验证该字段的所有规则,为false时遇到第一个失败的规则就停止
|
|
36
|
+
* @param itemKey 要验证的字段名
|
|
37
|
+
* @returns 验证错误数组,如果没有错误则返回null
|
|
38
|
+
*/
|
|
39
|
+
validate(itemKey: string, itemAll?: boolean): string[] | null;
|
|
40
|
+
/**
|
|
41
|
+
* 验证多个或所有字段
|
|
42
|
+
* @param order 验证字段的顺序,可以指定验证的字段名数组及其顺序
|
|
43
|
+
* @param itemAll 是否验证每个字段的所有规则,为true时会验证字段的所有规则,为false时遇到第一个失败的规则就停止
|
|
44
|
+
* @param everyItem 是否验证所有字段,为true时会验证所有字段,为false时遇到第一个失败的字段就停止
|
|
45
|
+
* @returns 验证错误数组,如果没有错误则返回null
|
|
46
|
+
*/
|
|
47
|
+
validateAll(order?: string[], itemAll?: boolean, everyItem?: boolean): Record<string, string[]> | null;
|
|
48
|
+
/**
|
|
49
|
+
* 装饰器创建器
|
|
50
|
+
* 用于创建属性验证装饰器的工厂函数
|
|
51
|
+
*
|
|
52
|
+
* @param func 验证函数,接收属性值并返回布尔值表示验证结果
|
|
53
|
+
* @returns 返回一个接收错误消息的函数,该函数再返回实际的装饰器
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* // 创建一个验证字符串的装饰器
|
|
57
|
+
* const VString = BaseValidator.decoratorCreator(
|
|
58
|
+
* (val) => typeof val === 'string' || val === undefined
|
|
59
|
+
* );
|
|
60
|
+
*
|
|
61
|
+
* // 创建一个验证必填项的装饰器
|
|
62
|
+
* const VRequired = BaseValidator.decoratorCreator(
|
|
63
|
+
* (val) => val !== undefined && val !== null && val !== ''
|
|
64
|
+
* );
|
|
65
|
+
*
|
|
66
|
+
* // 在类中使用这些装饰器
|
|
67
|
+
* class User extends BaseValidator {
|
|
68
|
+
* @VString('名称必须为字符串')
|
|
69
|
+
* @(VRequired()('名称必须填写'))
|
|
70
|
+
* name?: string;
|
|
71
|
+
*
|
|
72
|
+
* // 验证使用
|
|
73
|
+
* validateName() {
|
|
74
|
+
* return this.validate('name');
|
|
75
|
+
* }
|
|
76
|
+
* }
|
|
77
|
+
*
|
|
78
|
+
* const user = new User();
|
|
79
|
+
* console.log(user.validateName()); // 显示错误信息:名称必须填写
|
|
80
|
+
*/
|
|
81
|
+
static decoratorCreator: (func: (val: any, value: undefined, context: ClassFieldDecoratorContext<BaseValidator>) => boolean) => (message?: ((val: any, value: undefined, context: ClassFieldDecoratorContext<BaseValidator>) => string) | string) => (value: undefined, context: ClassFieldDecoratorContext<BaseValidator>) => void;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export { BaseValidator };
|
|
@@ -11,14 +11,14 @@ var BaseValidator = /** @class */ (function () {
|
|
|
11
11
|
*/
|
|
12
12
|
function BaseValidator() {
|
|
13
13
|
/** 用于存储验证器映射的私有符号 */
|
|
14
|
-
this.__keySymbol = Symbol(
|
|
15
|
-
this.__keySymbol = Symbol(
|
|
14
|
+
this.__keySymbol = Symbol("key-description");
|
|
15
|
+
this.__keySymbol = Symbol("key-description");
|
|
16
16
|
this[this.__keySymbol] = {};
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
19
|
* 验证单个字段
|
|
20
|
-
* @param itemKey 要验证的字段名
|
|
21
20
|
* @param itemAll 是否验证所有规则,为true时会验证该字段的所有规则,为false时遇到第一个失败的规则就停止
|
|
21
|
+
* @param itemKey 要验证的字段名
|
|
22
22
|
* @returns 验证错误数组,如果没有错误则返回null
|
|
23
23
|
*/
|
|
24
24
|
BaseValidator.prototype.validate = function (itemKey, itemAll) {
|
|
@@ -28,13 +28,13 @@ var BaseValidator = /** @class */ (function () {
|
|
|
28
28
|
// 校验每个 key
|
|
29
29
|
var validators = validatorMap[itemKey];
|
|
30
30
|
if (!validators) {
|
|
31
|
-
return
|
|
31
|
+
return null;
|
|
32
32
|
}
|
|
33
33
|
for (var _i = 0, validators_1 = validators; _i < validators_1.length; _i++) {
|
|
34
34
|
var validator = validators_1[_i];
|
|
35
35
|
var res = validator(this[itemKey]);
|
|
36
36
|
if (!res.status) {
|
|
37
|
-
errors.push(res);
|
|
37
|
+
errors.push(res.message);
|
|
38
38
|
if (!itemAll)
|
|
39
39
|
break;
|
|
40
40
|
}
|
|
@@ -46,16 +46,16 @@ var BaseValidator = /** @class */ (function () {
|
|
|
46
46
|
};
|
|
47
47
|
/**
|
|
48
48
|
* 验证多个或所有字段
|
|
49
|
+
* @param order 验证字段的顺序,可以指定验证的字段名数组及其顺序
|
|
49
50
|
* @param itemAll 是否验证每个字段的所有规则,为true时会验证字段的所有规则,为false时遇到第一个失败的规则就停止
|
|
50
51
|
* @param everyItem 是否验证所有字段,为true时会验证所有字段,为false时遇到第一个失败的字段就停止
|
|
51
|
-
* @param order 验证字段的顺序,可以指定验证的字段名数组及其顺序
|
|
52
52
|
* @returns 验证错误数组,如果没有错误则返回null
|
|
53
53
|
*/
|
|
54
|
-
BaseValidator.prototype.validateAll = function (itemAll, everyItem
|
|
54
|
+
BaseValidator.prototype.validateAll = function (order, itemAll, everyItem) {
|
|
55
55
|
if (itemAll === void 0) { itemAll = false; }
|
|
56
56
|
if (everyItem === void 0) { everyItem = false; }
|
|
57
57
|
var validatorMap = this[this.__keySymbol];
|
|
58
|
-
var errors =
|
|
58
|
+
var errors = {};
|
|
59
59
|
// 校验每个 key
|
|
60
60
|
var keys = order || Object.keys(validatorMap);
|
|
61
61
|
for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
|
|
@@ -67,7 +67,12 @@ var BaseValidator = /** @class */ (function () {
|
|
|
67
67
|
var fn = fns_1[_a];
|
|
68
68
|
var res = fn(value);
|
|
69
69
|
if (!res.status) {
|
|
70
|
-
|
|
70
|
+
if (Array.isArray(errors[res.name])) {
|
|
71
|
+
errors[res.name].push(res.message);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
errors[res.name] = [res.message];
|
|
75
|
+
}
|
|
71
76
|
if (!itemAll)
|
|
72
77
|
break;
|
|
73
78
|
}
|
|
@@ -76,7 +81,7 @@ var BaseValidator = /** @class */ (function () {
|
|
|
76
81
|
break;
|
|
77
82
|
}
|
|
78
83
|
}
|
|
79
|
-
if (errors.length) {
|
|
84
|
+
if (Object.keys(errors).length) {
|
|
80
85
|
return errors;
|
|
81
86
|
}
|
|
82
87
|
return null;
|
|
@@ -128,17 +133,17 @@ var BaseValidator = /** @class */ (function () {
|
|
|
128
133
|
var validator = function (val) {
|
|
129
134
|
var validateStatus = func(val, value, context);
|
|
130
135
|
if (validateStatus) {
|
|
131
|
-
return { status: true };
|
|
136
|
+
return { name: name, status: true };
|
|
132
137
|
}
|
|
133
138
|
else {
|
|
134
|
-
var msg =
|
|
135
|
-
if (typeof message ===
|
|
139
|
+
var msg = "";
|
|
140
|
+
if (typeof message === "function") {
|
|
136
141
|
msg = message(val, value, context);
|
|
137
142
|
}
|
|
138
143
|
else {
|
|
139
144
|
msg = message;
|
|
140
145
|
}
|
|
141
|
-
return { status: false, message: msg };
|
|
146
|
+
return { name: name, status: false, message: msg };
|
|
142
147
|
}
|
|
143
148
|
};
|
|
144
149
|
if (validators[name]) {
|
package/package.json
CHANGED
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rxtutils",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4-beta.1",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"main": "
|
|
6
|
-
"module": "
|
|
7
|
-
"types": "
|
|
5
|
+
"main": "cjs/index.cjs",
|
|
6
|
+
"module": "es/index.mjs",
|
|
7
|
+
"types": "es/index.d.ts",
|
|
8
8
|
"files": [
|
|
9
|
-
"
|
|
9
|
+
"es",
|
|
10
|
+
"cjs"
|
|
10
11
|
],
|
|
11
12
|
"scripts": {
|
|
12
|
-
"build": "rollup -c",
|
|
13
|
-
"clean": "rm -rf
|
|
13
|
+
"build": "pnpm clean && rollup -c",
|
|
14
|
+
"clean": "rm -rf es cjs",
|
|
15
|
+
"publishNpm": "npm publish --registry https://registry.npmjs.org",
|
|
16
|
+
"login": "npm login --registry https://registry.npmjs.org"
|
|
14
17
|
},
|
|
15
18
|
"devDependencies": {
|
|
16
19
|
"@rollup/plugin-typescript": "^12.1.2",
|
|
17
|
-
"@types/lodash": "^4.17.
|
|
20
|
+
"@types/lodash-es": "^4.17.12",
|
|
18
21
|
"@types/node": "^22.15.29",
|
|
19
22
|
"@types/react": "^19.1.12",
|
|
20
23
|
"rollup": "^4.41.1",
|
|
@@ -27,7 +30,7 @@
|
|
|
27
30
|
},
|
|
28
31
|
"dependencies": {
|
|
29
32
|
"axios": "^1.9.0",
|
|
30
|
-
"lodash": "^4.17.21",
|
|
33
|
+
"lodash-es": "^4.17.21",
|
|
31
34
|
"moment": "^2.30.1",
|
|
32
35
|
"tslib": "^2.8.1"
|
|
33
36
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|