ph-utils 0.2.14 → 0.2.16
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/lib/validator.d.ts +2 -6
- package/lib/validator.js +8 -51
- package/lib/validator_m.d.ts +2 -6
- package/lib/validator_m.js +8 -50
- package/package.json +1 -1
package/lib/validator.d.ts
CHANGED
@@ -23,9 +23,6 @@ declare class Validator {
|
|
23
23
|
rules: {
|
24
24
|
[index: string]: RuleItem[];
|
25
25
|
};
|
26
|
-
types: {
|
27
|
-
[index: string]: string | ((v: any) => void);
|
28
|
-
};
|
29
26
|
/**
|
30
27
|
* 构造数据验证转换器
|
31
28
|
* @param schemas 配置验证转换规则
|
@@ -36,14 +33,13 @@ declare class Validator {
|
|
36
33
|
* @param data 待验证的数据
|
37
34
|
* @returns
|
38
35
|
*/
|
39
|
-
validate
|
36
|
+
validate(data: any): Promise<boolean>;
|
40
37
|
/**
|
41
38
|
* 只验证指定 key 的数据格式
|
42
39
|
* @param key 指定待验证的 key
|
43
40
|
* @param value 待验证的数据
|
44
41
|
*/
|
45
|
-
validateKey(key: string, value: any): Promise<
|
46
|
-
private _conversionType;
|
42
|
+
validateKey(key: string, value: any): Promise<boolean>;
|
47
43
|
private _validateRule;
|
48
44
|
private _parseStringRule;
|
49
45
|
}
|
package/lib/validator.js
CHANGED
@@ -10,8 +10,6 @@ const defaultMsgs = {
|
|
10
10
|
required: '%s为必填字段',
|
11
11
|
};
|
12
12
|
const defaultMsg = '请输入正确的数据';
|
13
|
-
// 允许的内置 type
|
14
|
-
const validTypes = new Set(['string', 'boolean', 'number', 'float', 'int']);
|
15
13
|
// 一些常用的验证正则
|
16
14
|
const ruleRegexs = {
|
17
15
|
/** 验证跟其余数据相等的正则,一般用于验证再次输入密码 */
|
@@ -35,23 +33,6 @@ const ruleFns = {
|
|
35
33
|
return regex.test(String(val));
|
36
34
|
},
|
37
35
|
};
|
38
|
-
const typeFns = {
|
39
|
-
string(v) {
|
40
|
-
return String(v);
|
41
|
-
},
|
42
|
-
boolean(v) {
|
43
|
-
return Boolean(v);
|
44
|
-
},
|
45
|
-
number(v) {
|
46
|
-
return Number(v);
|
47
|
-
},
|
48
|
-
int(v) {
|
49
|
-
return parseInt(v, 10);
|
50
|
-
},
|
51
|
-
floag(v) {
|
52
|
-
return parseFloat(v);
|
53
|
-
},
|
54
|
-
};
|
55
36
|
class ValidateError extends Error {
|
56
37
|
name;
|
57
38
|
key;
|
@@ -66,24 +47,13 @@ class ValidateError extends Error {
|
|
66
47
|
*/
|
67
48
|
class Validator {
|
68
49
|
rules;
|
69
|
-
types;
|
70
50
|
/**
|
71
51
|
* 构造数据验证转换器
|
72
52
|
* @param schemas 配置验证转换规则
|
73
53
|
*/
|
74
54
|
constructor(schemas) {
|
75
55
|
let parsedRules = {};
|
76
|
-
let types = {};
|
77
56
|
for (let schema of schemas) {
|
78
|
-
// 解析 types 用于进行数据类型转换
|
79
|
-
if (typeof schema.type === 'function') {
|
80
|
-
types[schema.key] = schema.type;
|
81
|
-
}
|
82
|
-
else {
|
83
|
-
types[schema.key] = validTypes.has(schema.type || '')
|
84
|
-
? schema.type
|
85
|
-
: 'string';
|
86
|
-
}
|
87
57
|
// 解析规则
|
88
58
|
let rules = [];
|
89
59
|
if (schema.required === true) {
|
@@ -120,7 +90,6 @@ class Validator {
|
|
120
90
|
}
|
121
91
|
parsedRules[schema.key] = rules;
|
122
92
|
}
|
123
|
-
this.types = types;
|
124
93
|
this.rules = parsedRules;
|
125
94
|
}
|
126
95
|
/**
|
@@ -132,14 +101,10 @@ class Validator {
|
|
132
101
|
return new Promise((resolve, reject) => {
|
133
102
|
let errMsg = '';
|
134
103
|
let errKey = '';
|
135
|
-
let resData = {};
|
136
104
|
for (let key in this.rules) {
|
137
105
|
if ({}.hasOwnProperty.call(this.rules, key)) {
|
138
106
|
errMsg = this._validateRule(this.rules[key], data[key], data);
|
139
|
-
if (errMsg
|
140
|
-
resData[key] = this._conversionType(this.types[key], data[key]);
|
141
|
-
}
|
142
|
-
else {
|
107
|
+
if (errMsg !== '') {
|
143
108
|
errKey = key;
|
144
109
|
errMsg = errMsg.replace('%s', key);
|
145
110
|
break;
|
@@ -147,7 +112,7 @@ class Validator {
|
|
147
112
|
}
|
148
113
|
}
|
149
114
|
if (errMsg === '') {
|
150
|
-
resolve(
|
115
|
+
resolve(true);
|
151
116
|
}
|
152
117
|
else {
|
153
118
|
reject(new ValidateError(errKey, errMsg));
|
@@ -163,23 +128,15 @@ class Validator {
|
|
163
128
|
return new Promise((resolve, reject) => {
|
164
129
|
let keyRules = this.rules[key];
|
165
130
|
let errMsg = this._validateRule(keyRules, value, null);
|
166
|
-
if (errMsg
|
167
|
-
resolve(this._conversionType(this.types[key], value));
|
168
|
-
}
|
169
|
-
else {
|
131
|
+
if (errMsg !== '') {
|
170
132
|
errMsg = errMsg.replace('%s', key);
|
171
133
|
reject(new ValidateError(key, errMsg));
|
172
134
|
}
|
135
|
+
else {
|
136
|
+
resolve(true);
|
137
|
+
}
|
173
138
|
});
|
174
139
|
}
|
175
|
-
_conversionType(type, v) {
|
176
|
-
if (typeof type === 'function') {
|
177
|
-
return type(v);
|
178
|
-
}
|
179
|
-
else {
|
180
|
-
return typeFns[type](v);
|
181
|
-
}
|
182
|
-
}
|
183
140
|
_validateRule(rules, value, data) {
|
184
141
|
let errMsg = '';
|
185
142
|
for (let rule of rules) {
|
@@ -203,12 +160,12 @@ class Validator {
|
|
203
160
|
}
|
204
161
|
}
|
205
162
|
else if (rule.rule === 'required') {
|
206
|
-
if (!ruleFns.pattern(ruleRegexs.required, value)) {
|
163
|
+
if (!ruleFns.pattern(ruleRegexs.required, String(value))) {
|
207
164
|
errMsg = rule.message;
|
208
165
|
}
|
209
166
|
}
|
210
167
|
else {
|
211
|
-
if (!ruleFns.pattern(rule.rule, value)) {
|
168
|
+
if (!ruleFns.pattern(rule.rule, String(value))) {
|
212
169
|
errMsg = rule.message;
|
213
170
|
}
|
214
171
|
}
|
package/lib/validator_m.d.ts
CHANGED
@@ -23,9 +23,6 @@ declare class Validator {
|
|
23
23
|
rules: {
|
24
24
|
[index: string]: RuleItem[];
|
25
25
|
};
|
26
|
-
types: {
|
27
|
-
[index: string]: string | ((v: any) => void);
|
28
|
-
};
|
29
26
|
/**
|
30
27
|
* 构造数据验证转换器
|
31
28
|
* @param schemas 配置验证转换规则
|
@@ -36,14 +33,13 @@ declare class Validator {
|
|
36
33
|
* @param data 待验证的数据
|
37
34
|
* @returns
|
38
35
|
*/
|
39
|
-
validate
|
36
|
+
validate(data: any): Promise<boolean>;
|
40
37
|
/**
|
41
38
|
* 只验证指定 key 的数据格式
|
42
39
|
* @param key 指定待验证的 key
|
43
40
|
* @param value 待验证的数据
|
44
41
|
*/
|
45
|
-
validateKey(key: string, value: any): Promise<
|
46
|
-
private _conversionType;
|
42
|
+
validateKey(key: string, value: any): Promise<boolean>;
|
47
43
|
private _validateRule;
|
48
44
|
private _parseStringRule;
|
49
45
|
}
|
package/lib/validator_m.js
CHANGED
@@ -9,8 +9,6 @@ const defaultMsgs = {
|
|
9
9
|
required: '%s为必填字段',
|
10
10
|
};
|
11
11
|
const defaultMsg = '请输入正确的数据';
|
12
|
-
// 允许的内置 type
|
13
|
-
const validTypes = new Set(['string', 'boolean', 'number', 'float', 'int']);
|
14
12
|
// 一些常用的验证正则
|
15
13
|
const ruleRegexs = {
|
16
14
|
/** 验证跟其余数据相等的正则,一般用于验证再次输入密码 */
|
@@ -34,23 +32,6 @@ const ruleFns = {
|
|
34
32
|
return regex.test(String(val));
|
35
33
|
},
|
36
34
|
};
|
37
|
-
const typeFns = {
|
38
|
-
string(v) {
|
39
|
-
return String(v);
|
40
|
-
},
|
41
|
-
boolean(v) {
|
42
|
-
return Boolean(v);
|
43
|
-
},
|
44
|
-
number(v) {
|
45
|
-
return Number(v);
|
46
|
-
},
|
47
|
-
int(v) {
|
48
|
-
return parseInt(v, 10);
|
49
|
-
},
|
50
|
-
floag(v) {
|
51
|
-
return parseFloat(v);
|
52
|
-
},
|
53
|
-
};
|
54
35
|
class ValidateError extends Error {
|
55
36
|
constructor(key, msg) {
|
56
37
|
super(msg);
|
@@ -68,17 +49,7 @@ class Validator {
|
|
68
49
|
*/
|
69
50
|
constructor(schemas) {
|
70
51
|
let parsedRules = {};
|
71
|
-
let types = {};
|
72
52
|
for (let schema of schemas) {
|
73
|
-
// 解析 types 用于进行数据类型转换
|
74
|
-
if (typeof schema.type === 'function') {
|
75
|
-
types[schema.key] = schema.type;
|
76
|
-
}
|
77
|
-
else {
|
78
|
-
types[schema.key] = validTypes.has(schema.type || '')
|
79
|
-
? schema.type
|
80
|
-
: 'string';
|
81
|
-
}
|
82
53
|
// 解析规则
|
83
54
|
let rules = [];
|
84
55
|
if (schema.required === true) {
|
@@ -115,7 +86,6 @@ class Validator {
|
|
115
86
|
}
|
116
87
|
parsedRules[schema.key] = rules;
|
117
88
|
}
|
118
|
-
this.types = types;
|
119
89
|
this.rules = parsedRules;
|
120
90
|
}
|
121
91
|
/**
|
@@ -127,14 +97,10 @@ class Validator {
|
|
127
97
|
return new Promise((resolve, reject) => {
|
128
98
|
let errMsg = '';
|
129
99
|
let errKey = '';
|
130
|
-
let resData = {};
|
131
100
|
for (let key in this.rules) {
|
132
101
|
if ({}.hasOwnProperty.call(this.rules, key)) {
|
133
102
|
errMsg = this._validateRule(this.rules[key], data[key], data);
|
134
|
-
if (errMsg
|
135
|
-
resData[key] = this._conversionType(this.types[key], data[key]);
|
136
|
-
}
|
137
|
-
else {
|
103
|
+
if (errMsg !== '') {
|
138
104
|
errKey = key;
|
139
105
|
errMsg = errMsg.replace('%s', key);
|
140
106
|
break;
|
@@ -142,7 +108,7 @@ class Validator {
|
|
142
108
|
}
|
143
109
|
}
|
144
110
|
if (errMsg === '') {
|
145
|
-
resolve(
|
111
|
+
resolve(true);
|
146
112
|
}
|
147
113
|
else {
|
148
114
|
reject(new ValidateError(errKey, errMsg));
|
@@ -158,23 +124,15 @@ class Validator {
|
|
158
124
|
return new Promise((resolve, reject) => {
|
159
125
|
let keyRules = this.rules[key];
|
160
126
|
let errMsg = this._validateRule(keyRules, value, null);
|
161
|
-
if (errMsg
|
162
|
-
resolve(this._conversionType(this.types[key], value));
|
163
|
-
}
|
164
|
-
else {
|
127
|
+
if (errMsg !== '') {
|
165
128
|
errMsg = errMsg.replace('%s', key);
|
166
129
|
reject(new ValidateError(key, errMsg));
|
167
130
|
}
|
131
|
+
else {
|
132
|
+
resolve(true);
|
133
|
+
}
|
168
134
|
});
|
169
135
|
}
|
170
|
-
_conversionType(type, v) {
|
171
|
-
if (typeof type === 'function') {
|
172
|
-
return type(v);
|
173
|
-
}
|
174
|
-
else {
|
175
|
-
return typeFns[type](v);
|
176
|
-
}
|
177
|
-
}
|
178
136
|
_validateRule(rules, value, data) {
|
179
137
|
let errMsg = '';
|
180
138
|
for (let rule of rules) {
|
@@ -198,12 +156,12 @@ class Validator {
|
|
198
156
|
}
|
199
157
|
}
|
200
158
|
else if (rule.rule === 'required') {
|
201
|
-
if (!ruleFns.pattern(ruleRegexs.required, value)) {
|
159
|
+
if (!ruleFns.pattern(ruleRegexs.required, String(value))) {
|
202
160
|
errMsg = rule.message;
|
203
161
|
}
|
204
162
|
}
|
205
163
|
else {
|
206
|
-
if (!ruleFns.pattern(rule.rule, value)) {
|
164
|
+
if (!ruleFns.pattern(rule.rule, String(value))) {
|
207
165
|
errMsg = rule.message;
|
208
166
|
}
|
209
167
|
}
|