almighty-tool 0.0.35 → 0.0.37
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,20 +1,8 @@
|
|
|
1
1
|
export declare const DEFAULT_LOCALE: string;
|
|
2
2
|
export declare type DATETIME_TYPE = 'long' | 'date' | 'shortDate' | 'shortTime' | 'time';
|
|
3
3
|
export declare type DATETIME_LANG = 'en-US' | 'zh-CN';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
url: RegExp;
|
|
7
|
-
/** 邮箱 */
|
|
8
|
-
email: RegExp;
|
|
9
|
-
/** 身份证15位 */
|
|
10
|
-
cnIdCard15: RegExp;
|
|
11
|
-
/** 身份证18位 */
|
|
12
|
-
cnIdCard18: RegExp;
|
|
13
|
-
/** 国内手机号码正则 */
|
|
14
|
-
cnMobilePhone: RegExp;
|
|
15
|
-
/** 中文正则: 含中文 */
|
|
16
|
-
cnWords: RegExp;
|
|
17
|
-
};
|
|
4
|
+
/** 常用的正则表达式 */
|
|
5
|
+
export declare const regExps: Record<string, RegExp>;
|
|
18
6
|
declare const _default: {
|
|
19
7
|
/** 判断是否是手机号码 */
|
|
20
8
|
isMobileNumber(mobileNumber: string, locale?: string): boolean;
|
package/lib/utils/format.util.js
CHANGED
|
@@ -4,19 +4,40 @@ exports.regExps = exports.DEFAULT_LOCALE = void 0;
|
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var lodash_1 = (0, tslib_1.__importDefault)(require("lodash"));
|
|
6
6
|
exports.DEFAULT_LOCALE = process.env.DEFAULT_LOCALE || 'zh-CN';
|
|
7
|
+
/** 常用的正则表达式 */
|
|
7
8
|
exports.regExps = {
|
|
8
|
-
/**
|
|
9
|
+
/** 网址 */
|
|
9
10
|
url: /^(?!mailto:)(?:(?:http|https|ftp):\/\/|\/\/)(?:\S+(?::\S*)?@)?(?:(?:(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[0-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]+-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]+-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))|localhost)(?::\d{2,5})?(?:(\/|\?|#)[^\s]*)?$/i,
|
|
11
|
+
/** 空字符串 */
|
|
12
|
+
'blank-string': /^(?![\s\u3000]+$).+$/,
|
|
10
13
|
/** 邮箱 */
|
|
11
|
-
email: /^[a-zA-Z0-9
|
|
14
|
+
email: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,
|
|
15
|
+
/** 手机号 */
|
|
16
|
+
'mobile-number-china': /^1[3456789]\d{9}$/,
|
|
17
|
+
/** 身份证 */
|
|
18
|
+
'id-card-china': /[1-9]\d{5}(((1[89]|20)\d{2}(((0[13578]|1[0-2])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((((1[89]|20)(0[48]|[2468][048]|[13579][26]))|((19|20)00))0229))\d{3}(\d|X|x)/,
|
|
12
19
|
/** 身份证15位 */
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
|
|
20
|
+
'id-card-15-china': /^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}[0-9Xx]$/,
|
|
21
|
+
/** 纯数字 */
|
|
22
|
+
'pure-number': /^[0-9]+$/,
|
|
23
|
+
/** 中文 */
|
|
24
|
+
'words-chinese': /[\u4e00-\u9fff\u3400-\u4dbf\uF900-\uFAFF]/,
|
|
25
|
+
/** ipv4地址 */
|
|
26
|
+
'ipv4-address': /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,
|
|
27
|
+
/** ipv6地址 */
|
|
28
|
+
'ipv6-address': /^(?:[A-Fa-f0-9]{1,4}:){7}[A-Fa-f0-9]{1,4}$/,
|
|
29
|
+
/** mac地址 */
|
|
30
|
+
'mac-address': /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/,
|
|
31
|
+
/** ip地址 */
|
|
32
|
+
'ip-address': /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$|^(?:[A-Fa-f0-9]{1,4}:){7}[A-Fa-f0-9]{1,4}$|^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/,
|
|
33
|
+
/** 域名 */
|
|
34
|
+
'domain-name': /^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z]{2,})+$/,
|
|
35
|
+
/** 日期 */
|
|
36
|
+
'date-format': /^\d{4}-\d{1,2}-\d{1,2}$/,
|
|
37
|
+
/** 时间 */
|
|
38
|
+
'time-format': /^\d{2}:\d{2}:\d{2}$/,
|
|
39
|
+
/** 日期时间 */
|
|
40
|
+
'date-time-format': /^\d{4}-\d{1,2}-\d{1,2} \d{2}:\d{2}:\d{2}$/,
|
|
20
41
|
};
|
|
21
42
|
exports.default = {
|
|
22
43
|
/** 判断是否是手机号码 */
|
|
@@ -46,10 +67,10 @@ exports.default = {
|
|
|
46
67
|
isChinaIDCard: function (str, type) {
|
|
47
68
|
if (type === void 0) { type = 18; }
|
|
48
69
|
if (type === 15 && str.length === 15) {
|
|
49
|
-
return exports.regExps.
|
|
70
|
+
return exports.regExps['id-card-15-china'].test(str);
|
|
50
71
|
}
|
|
51
72
|
if (type === 18 && str.length === 18) {
|
|
52
|
-
return exports.regExps.
|
|
73
|
+
return exports.regExps['id-card-china'].test(str);
|
|
53
74
|
}
|
|
54
75
|
return false;
|
|
55
76
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.util.js","sourceRoot":"","sources":["../../src/utils/format.util.ts"],"names":[],"mappings":";;;;AAAA,+DAAuB;AACV,QAAA,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"format.util.js","sourceRoot":"","sources":["../../src/utils/format.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,14 @@ export interface ValidateOption extends OriginalValidateOption {
|
|
|
3
3
|
/** 模型 */
|
|
4
4
|
model?: string;
|
|
5
5
|
}
|
|
6
|
+
export interface GetRuleOptions extends ValidateRuleItem {
|
|
7
|
+
/** 正则表达式 */
|
|
8
|
+
regexp?: RegExp;
|
|
9
|
+
/** 正则表达式的key */
|
|
10
|
+
regexpKey?: string;
|
|
11
|
+
/** 相反 */
|
|
12
|
+
regexpReversed?: boolean;
|
|
13
|
+
}
|
|
6
14
|
export interface GetErrorsOptions {
|
|
7
15
|
/** 模型 */
|
|
8
16
|
model?: string;
|
|
@@ -51,5 +59,7 @@ declare const validateUtil: {
|
|
|
51
59
|
* @returns 校验结果
|
|
52
60
|
*/
|
|
53
61
|
validate: (rules: ValidateRules | ValidateSchema, data: ValidateValues, options?: ValidateOption | undefined, callback?: ValidateCallback | undefined) => Promise<ValidateResponse>;
|
|
62
|
+
/** 获取规则 */
|
|
63
|
+
getRule(options: GetRuleOptions): ValidateRuleItem;
|
|
54
64
|
};
|
|
55
65
|
export default validateUtil;
|
|
@@ -5,6 +5,7 @@ var tslib_1 = require("tslib");
|
|
|
5
5
|
var async_validator_1 = (0, tslib_1.__importDefault)(require("async-validator"));
|
|
6
6
|
exports.ValidateSchema = async_validator_1.default;
|
|
7
7
|
var lodash_1 = (0, tslib_1.__importDefault)(require("lodash"));
|
|
8
|
+
var format_util_1 = require("./format.util");
|
|
8
9
|
/** 校验工具 */
|
|
9
10
|
var validateUtil = {
|
|
10
11
|
/**
|
|
@@ -88,6 +89,42 @@ var validateUtil = {
|
|
|
88
89
|
}
|
|
89
90
|
});
|
|
90
91
|
}); },
|
|
92
|
+
/** 获取规则 */
|
|
93
|
+
getRule: function (options) {
|
|
94
|
+
var _this = this;
|
|
95
|
+
var _a, _b, _c;
|
|
96
|
+
var regexpKey = options === null || options === void 0 ? void 0 : options.regexpKey;
|
|
97
|
+
var type = (_a = options === null || options === void 0 ? void 0 : options.type) !== null && _a !== void 0 ? _a : 'string';
|
|
98
|
+
var message = (_b = options === null || options === void 0 ? void 0 : options.message) !== null && _b !== void 0 ? _b : "".concat(options.regexpReversed ? 'InvalidReversed' : 'Invalid', ":").concat(options.regexpKey);
|
|
99
|
+
var regexpReversed = (_c = options === null || options === void 0 ? void 0 : options.regexpReversed) !== null && _c !== void 0 ? _c : false;
|
|
100
|
+
var asyncValidator = function (rule, value, callback, source, option) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
|
|
101
|
+
var regexp;
|
|
102
|
+
var _a;
|
|
103
|
+
return (0, tslib_1.__generator)(this, function (_b) {
|
|
104
|
+
switch (_b.label) {
|
|
105
|
+
case 0:
|
|
106
|
+
regexp = (_a = options === null || options === void 0 ? void 0 : options.regexp) !== null && _a !== void 0 ? _a : (regexpKey ? format_util_1.regExps[regexpKey] : undefined);
|
|
107
|
+
if (regexp) {
|
|
108
|
+
if (regexpReversed) {
|
|
109
|
+
if (regexp.test(value)) {
|
|
110
|
+
return [2 /*return*/, Promise.reject(message)];
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
if (!regexp.test(value)) {
|
|
115
|
+
return [2 /*return*/, Promise.reject(message)];
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (!(typeof options.asyncValidator === 'function')) return [3 /*break*/, 2];
|
|
120
|
+
return [4 /*yield*/, options.asyncValidator(rule, value, callback, source, option)];
|
|
121
|
+
case 1: return [2 /*return*/, _b.sent()];
|
|
122
|
+
case 2: return [2 /*return*/, Promise.resolve()];
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}); };
|
|
126
|
+
return (0, tslib_1.__assign)((0, tslib_1.__assign)({}, options), { type: type, message: message, asyncValidator: asyncValidator });
|
|
127
|
+
},
|
|
91
128
|
};
|
|
92
129
|
exports.default = validateUtil;
|
|
93
130
|
//# sourceMappingURL=validate.util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.util.js","sourceRoot":"","sources":["../../src/utils/validate.util.ts"],"names":[],"mappings":";;;;AAAA,iFAkByB;
|
|
1
|
+
{"version":3,"file":"validate.util.js","sourceRoot":"","sources":["../../src/utils/validate.util.ts"],"names":[],"mappings":"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"}
|