ph-utils 0.2.13 → 0.2.14
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/validator.d.ts +2 -1
- package/lib/validator.js +40 -13
- package/lib/validator_m.d.ts +2 -1
- package/lib/validator_m.js +41 -14
- package/package.json +1 -1
package/lib/validator.d.ts
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* 数据验证器
|
3
3
|
*/
|
4
4
|
interface RuleItem {
|
5
|
-
rule: RegExp | ((v: any) => boolean);
|
5
|
+
rule: RegExp | ((v: any) => boolean) | 'required';
|
6
6
|
message: string;
|
7
7
|
sameKey?: string;
|
8
8
|
}
|
@@ -12,6 +12,7 @@ export declare type RuleType = string | RegExp | ((v: any) => boolean) | (RegExp
|
|
12
12
|
});
|
13
13
|
export interface SchemaType {
|
14
14
|
key: string;
|
15
|
+
required?: boolean;
|
15
16
|
type?: string | ((v: any) => void);
|
16
17
|
rules: RuleType[];
|
17
18
|
}
|
package/lib/validator.js
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
"use strict";
|
2
|
+
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
2
3
|
/**
|
3
4
|
* 数据验证器
|
4
5
|
*/
|
@@ -79,10 +80,15 @@ class Validator {
|
|
79
80
|
types[schema.key] = schema.type;
|
80
81
|
}
|
81
82
|
else {
|
82
|
-
types[schema.key] = validTypes.has(schema.type || '')
|
83
|
+
types[schema.key] = validTypes.has(schema.type || '')
|
84
|
+
? schema.type
|
85
|
+
: 'string';
|
83
86
|
}
|
84
87
|
// 解析规则
|
85
88
|
let rules = [];
|
89
|
+
if (schema.required === true) {
|
90
|
+
rules.push(this._parseStringRule('required'));
|
91
|
+
}
|
86
92
|
let rule = schema.rules;
|
87
93
|
if (typeof rule === 'string') {
|
88
94
|
rules = rules.concat(this._parseStringRule(rule));
|
@@ -92,7 +98,8 @@ class Validator {
|
|
92
98
|
if (typeof ruleItem === 'string') {
|
93
99
|
rules = rules.concat(this._parseStringRule(ruleItem));
|
94
100
|
}
|
95
|
-
else if (ruleItem instanceof RegExp ||
|
101
|
+
else if (ruleItem instanceof RegExp ||
|
102
|
+
typeof ruleItem === 'function') {
|
96
103
|
rules.push({ rule: ruleItem, message: defaultMsg });
|
97
104
|
}
|
98
105
|
else {
|
@@ -100,7 +107,10 @@ class Validator {
|
|
100
107
|
rules = rules.concat(this._parseStringRule(ruleItem.rule, ruleItem.message));
|
101
108
|
}
|
102
109
|
else {
|
103
|
-
rules.push({
|
110
|
+
rules.push({
|
111
|
+
rule: ruleItem.rule,
|
112
|
+
message: ruleItem.message || defaultMsg,
|
113
|
+
});
|
104
114
|
}
|
105
115
|
}
|
106
116
|
}
|
@@ -173,21 +183,34 @@ class Validator {
|
|
173
183
|
_validateRule(rules, value, data) {
|
174
184
|
let errMsg = '';
|
175
185
|
for (let rule of rules) {
|
176
|
-
|
177
|
-
|
186
|
+
// 如果数据为空,则判断是否是必填
|
187
|
+
if (value == null || !ruleFns.pattern(ruleRegexs.required, value)) {
|
188
|
+
if (rule.rule === 'required') {
|
178
189
|
errMsg = rule.message;
|
179
190
|
}
|
180
191
|
}
|
181
|
-
else
|
182
|
-
if (
|
183
|
-
if (!
|
192
|
+
else {
|
193
|
+
if (typeof rule.rule === 'function') {
|
194
|
+
if (!rule.rule(value)) {
|
184
195
|
errMsg = rule.message;
|
185
196
|
}
|
186
197
|
}
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
198
|
+
else if (rule.sameKey != null) {
|
199
|
+
if (data != null) {
|
200
|
+
if (!ruleFns.same(value, data[rule.sameKey])) {
|
201
|
+
errMsg = rule.message;
|
202
|
+
}
|
203
|
+
}
|
204
|
+
}
|
205
|
+
else if (rule.rule === 'required') {
|
206
|
+
if (!ruleFns.pattern(ruleRegexs.required, value)) {
|
207
|
+
errMsg = rule.message;
|
208
|
+
}
|
209
|
+
}
|
210
|
+
else {
|
211
|
+
if (!ruleFns.pattern(rule.rule, value)) {
|
212
|
+
errMsg = rule.message;
|
213
|
+
}
|
191
214
|
}
|
192
215
|
}
|
193
216
|
if (errMsg !== '') {
|
@@ -211,7 +234,11 @@ class Validator {
|
|
211
234
|
message = defaultMsgs['same'];
|
212
235
|
}
|
213
236
|
}
|
214
|
-
else if (
|
237
|
+
else if (rule === 'required') {
|
238
|
+
rrule = 'required';
|
239
|
+
message = defaultMsgs.required;
|
240
|
+
}
|
241
|
+
else if (Object.prototype.hasOwnProperty.call(ruleRegexs, r)) {
|
215
242
|
rrule = ruleRegexs[r];
|
216
243
|
message = defaultMsgs[r] || defaultMsg;
|
217
244
|
}
|
package/lib/validator_m.d.ts
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* 数据验证器
|
3
3
|
*/
|
4
4
|
interface RuleItem {
|
5
|
-
rule: RegExp | ((v: any) => boolean);
|
5
|
+
rule: RegExp | ((v: any) => boolean) | 'required';
|
6
6
|
message: string;
|
7
7
|
sameKey?: string;
|
8
8
|
}
|
@@ -12,6 +12,7 @@ export declare type RuleType = string | RegExp | ((v: any) => boolean) | (RegExp
|
|
12
12
|
});
|
13
13
|
export interface SchemaType {
|
14
14
|
key: string;
|
15
|
+
required?: boolean;
|
15
16
|
type?: string | ((v: any) => void);
|
16
17
|
rules: RuleType[];
|
17
18
|
}
|
package/lib/validator_m.js
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
1
2
|
/**
|
2
3
|
* 数据验证器
|
3
4
|
*/
|
@@ -74,10 +75,15 @@ class Validator {
|
|
74
75
|
types[schema.key] = schema.type;
|
75
76
|
}
|
76
77
|
else {
|
77
|
-
types[schema.key] = validTypes.has(schema.type || '')
|
78
|
+
types[schema.key] = validTypes.has(schema.type || '')
|
79
|
+
? schema.type
|
80
|
+
: 'string';
|
78
81
|
}
|
79
82
|
// 解析规则
|
80
83
|
let rules = [];
|
84
|
+
if (schema.required === true) {
|
85
|
+
rules.push(this._parseStringRule('required'));
|
86
|
+
}
|
81
87
|
let rule = schema.rules;
|
82
88
|
if (typeof rule === 'string') {
|
83
89
|
rules = rules.concat(this._parseStringRule(rule));
|
@@ -87,7 +93,8 @@ class Validator {
|
|
87
93
|
if (typeof ruleItem === 'string') {
|
88
94
|
rules = rules.concat(this._parseStringRule(ruleItem));
|
89
95
|
}
|
90
|
-
else if (ruleItem instanceof RegExp ||
|
96
|
+
else if (ruleItem instanceof RegExp ||
|
97
|
+
typeof ruleItem === 'function') {
|
91
98
|
rules.push({ rule: ruleItem, message: defaultMsg });
|
92
99
|
}
|
93
100
|
else {
|
@@ -95,7 +102,10 @@ class Validator {
|
|
95
102
|
rules = rules.concat(this._parseStringRule(ruleItem.rule, ruleItem.message));
|
96
103
|
}
|
97
104
|
else {
|
98
|
-
rules.push({
|
105
|
+
rules.push({
|
106
|
+
rule: ruleItem.rule,
|
107
|
+
message: ruleItem.message || defaultMsg,
|
108
|
+
});
|
99
109
|
}
|
100
110
|
}
|
101
111
|
}
|
@@ -168,21 +178,34 @@ class Validator {
|
|
168
178
|
_validateRule(rules, value, data) {
|
169
179
|
let errMsg = '';
|
170
180
|
for (let rule of rules) {
|
171
|
-
|
172
|
-
|
181
|
+
// 如果数据为空,则判断是否是必填
|
182
|
+
if (value == null || !ruleFns.pattern(ruleRegexs.required, value)) {
|
183
|
+
if (rule.rule === 'required') {
|
173
184
|
errMsg = rule.message;
|
174
185
|
}
|
175
186
|
}
|
176
|
-
else
|
177
|
-
if (
|
178
|
-
if (!
|
187
|
+
else {
|
188
|
+
if (typeof rule.rule === 'function') {
|
189
|
+
if (!rule.rule(value)) {
|
179
190
|
errMsg = rule.message;
|
180
191
|
}
|
181
192
|
}
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
193
|
+
else if (rule.sameKey != null) {
|
194
|
+
if (data != null) {
|
195
|
+
if (!ruleFns.same(value, data[rule.sameKey])) {
|
196
|
+
errMsg = rule.message;
|
197
|
+
}
|
198
|
+
}
|
199
|
+
}
|
200
|
+
else if (rule.rule === 'required') {
|
201
|
+
if (!ruleFns.pattern(ruleRegexs.required, value)) {
|
202
|
+
errMsg = rule.message;
|
203
|
+
}
|
204
|
+
}
|
205
|
+
else {
|
206
|
+
if (!ruleFns.pattern(rule.rule, value)) {
|
207
|
+
errMsg = rule.message;
|
208
|
+
}
|
186
209
|
}
|
187
210
|
}
|
188
211
|
if (errMsg !== '') {
|
@@ -206,7 +229,11 @@ class Validator {
|
|
206
229
|
message = defaultMsgs['same'];
|
207
230
|
}
|
208
231
|
}
|
209
|
-
else if (
|
232
|
+
else if (rule === 'required') {
|
233
|
+
rrule = 'required';
|
234
|
+
message = defaultMsgs.required;
|
235
|
+
}
|
236
|
+
else if (Object.prototype.hasOwnProperty.call(ruleRegexs, r)) {
|
210
237
|
rrule = ruleRegexs[r];
|
211
238
|
message = defaultMsgs[r] || defaultMsg;
|
212
239
|
}
|
@@ -216,5 +243,5 @@ class Validator {
|
|
216
243
|
return rules;
|
217
244
|
}
|
218
245
|
}
|
219
|
-
// @ts-ignore
|
246
|
+
// @ts-ignore: Unreachable code error
|
220
247
|
export default Validator;
|