ddan-js 2.9.3 → 2.9.5
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/bin/ddan-js.browser.js +1 -1
- package/bin/ddan-js.esm.js +1 -1
- package/bin/ddan-js.js +1 -1
- package/bin/types/browser.d.ts +3 -3
- package/bin/types/index.d.ts +4 -3
- package/bin/types/modules/fetch.d.ts +1 -1
- package/bin/types/modules/node/index.d.ts +2 -0
- package/package.json +18 -13
- package/bin/lib/browser.js +0 -111
- package/bin/lib/class/event.js +0 -104
- package/bin/lib/class/getset.js +0 -12
- package/bin/lib/class/icon.js +0 -94
- package/bin/lib/class/joker.js +0 -121
- package/bin/lib/class/kvalue.js +0 -29
- package/bin/lib/class/mapping.js +0 -82
- package/bin/lib/class/persist.js +0 -65
- package/bin/lib/class/pipeTask.js +0 -42
- package/bin/lib/class/pipeparallel.js +0 -24
- package/bin/lib/class/store.js +0 -87
- package/bin/lib/class/tracker.js +0 -125
- package/bin/lib/class/watermark.js +0 -63
- package/bin/lib/common/_Symbol.js +0 -5
- package/bin/lib/common/_freeGlobal.js +0 -5
- package/bin/lib/common/_object.js +0 -40
- package/bin/lib/common/_root.js +0 -10
- package/bin/lib/common/internal/asciiToArray.js +0 -13
- package/bin/lib/common/internal/castSlice.js +0 -18
- package/bin/lib/common/internal/createCaseFirst.js +0 -30
- package/bin/lib/common/internal/hasUnicode.js +0 -26
- package/bin/lib/common/internal/nodeTypes.js +0 -26
- package/bin/lib/common/internal/slice.js +0 -46
- package/bin/lib/common/internal/stringToArray.js +0 -18
- package/bin/lib/common/internal/unicodeToArray.js +0 -40
- package/bin/lib/common/internal/unicodeWords.js +0 -67
- package/bin/lib/index.js +0 -114
- package/bin/lib/modules/browser/ecdh.js +0 -124
- package/bin/lib/modules/browser/index.js +0 -4
- package/bin/lib/modules/cdn.js +0 -62
- package/bin/lib/modules/convert/base.js +0 -125
- package/bin/lib/modules/convert/base64.js +0 -114
- package/bin/lib/modules/convert/index.js +0 -99
- package/bin/lib/modules/convert/md5.js +0 -222
- package/bin/lib/modules/convert/pkcs.js +0 -16
- package/bin/lib/modules/convert/utf8.js +0 -106
- package/bin/lib/modules/crypto/base64.js +0 -14
- package/bin/lib/modules/crypto/const.js +0 -7
- package/bin/lib/modules/crypto/index.js +0 -30
- package/bin/lib/modules/crypto/rsa.js +0 -143
- package/bin/lib/modules/crypto/tea.js +0 -79
- package/bin/lib/modules/crypto/uuid.js +0 -34
- package/bin/lib/modules/css.js +0 -137
- package/bin/lib/modules/decorator.js +0 -14
- package/bin/lib/modules/fetch.js +0 -82
- package/bin/lib/modules/gbk.js +0 -46
- package/bin/lib/modules/hook/base.js +0 -60
- package/bin/lib/modules/hook/hooker.js +0 -39
- package/bin/lib/modules/hook/index.js +0 -49
- package/bin/lib/modules/hook/log.js +0 -54
- package/bin/lib/modules/hook/modules/bezier.js +0 -121
- package/bin/lib/modules/hook/modules/debounce.js +0 -127
- package/bin/lib/modules/hook/modules/mutex.js +0 -22
- package/bin/lib/modules/hook/modules/pipeline.js +0 -59
- package/bin/lib/modules/hook/modules/polling.js +0 -20
- package/bin/lib/modules/hook/modules/safeTask.js +0 -25
- package/bin/lib/modules/hook/modules/throttle.js +0 -30
- package/bin/lib/modules/html.js +0 -293
- package/bin/lib/modules/http/index.js +0 -171
- package/bin/lib/modules/http/interceptor.js +0 -22
- package/bin/lib/modules/list/base.js +0 -37
- package/bin/lib/modules/list/index.js +0 -90
- package/bin/lib/modules/logger.js +0 -55
- package/bin/lib/modules/math/index.js +0 -118
- package/bin/lib/modules/mini/diff.js +0 -97
- package/bin/lib/modules/mini/http/index.js +0 -155
- package/bin/lib/modules/mini/index.js +0 -71
- package/bin/lib/modules/node/aliyun.js +0 -156
- package/bin/lib/modules/node/brotli.js +0 -46
- package/bin/lib/modules/node/child.js +0 -18
- package/bin/lib/modules/node/ecdh-web.js +0 -11
- package/bin/lib/modules/node/ecdh.js +0 -115
- package/bin/lib/modules/node/file.js +0 -25
- package/bin/lib/modules/node/index.js +0 -11
- package/bin/lib/modules/node/proxy.js +0 -147
- package/bin/lib/modules/node/rsa-web.js +0 -19
- package/bin/lib/modules/node/socks5.js +0 -424
- package/bin/lib/modules/obj/index.js +0 -184
- package/bin/lib/modules/qs/base.js +0 -5
- package/bin/lib/modules/qs/decode.js +0 -45
- package/bin/lib/modules/qs/encode.js +0 -53
- package/bin/lib/modules/qs/index.js +0 -114
- package/bin/lib/modules/regex.js +0 -16
- package/bin/lib/modules/rsa.js +0 -18
- package/bin/lib/modules/rule/async-validator/index.js +0 -306
- package/bin/lib/modules/rule/async-validator/interface.js +0 -2
- package/bin/lib/modules/rule/async-validator/messages.js +0 -59
- package/bin/lib/modules/rule/async-validator/rule/enum.js +0 -13
- package/bin/lib/modules/rule/async-validator/rule/index.js +0 -16
- package/bin/lib/modules/rule/async-validator/rule/pattern.js +0 -27
- package/bin/lib/modules/rule/async-validator/rule/range.js +0 -54
- package/bin/lib/modules/rule/async-validator/rule/required.js +0 -12
- package/bin/lib/modules/rule/async-validator/rule/type.js +0 -98
- package/bin/lib/modules/rule/async-validator/rule/url.js +0 -55
- package/bin/lib/modules/rule/async-validator/rule/whitespace.js +0 -20
- package/bin/lib/modules/rule/async-validator/util.js +0 -255
- package/bin/lib/modules/rule/async-validator/validator/any.js +0 -16
- package/bin/lib/modules/rule/async-validator/validator/array.js +0 -19
- package/bin/lib/modules/rule/async-validator/validator/boolean.js +0 -20
- package/bin/lib/modules/rule/async-validator/validator/date.js +0 -31
- package/bin/lib/modules/rule/async-validator/validator/enum.js +0 -20
- package/bin/lib/modules/rule/async-validator/validator/float.js +0 -20
- package/bin/lib/modules/rule/async-validator/validator/index.js +0 -36
- package/bin/lib/modules/rule/async-validator/validator/integer.js +0 -20
- package/bin/lib/modules/rule/async-validator/validator/method.js +0 -19
- package/bin/lib/modules/rule/async-validator/validator/number.js +0 -23
- package/bin/lib/modules/rule/async-validator/validator/object.js +0 -19
- package/bin/lib/modules/rule/async-validator/validator/pattern.js +0 -19
- package/bin/lib/modules/rule/async-validator/validator/regexp.js +0 -19
- package/bin/lib/modules/rule/async-validator/validator/required.js +0 -10
- package/bin/lib/modules/rule/async-validator/validator/string.js +0 -24
- package/bin/lib/modules/rule/async-validator/validator/type.js +0 -20
- package/bin/lib/modules/rule/index.js +0 -67
- package/bin/lib/modules/string/index.js +0 -121
- package/bin/lib/modules/string/words.js +0 -33
- package/bin/lib/modules/time/const.js +0 -11
- package/bin/lib/modules/time/dtime.js +0 -132
- package/bin/lib/modules/time/frame.js +0 -49
- package/bin/lib/modules/time/index.js +0 -84
- package/bin/lib/typings/index.js +0 -2
- package/bin/lib/util/function.js +0 -33
- package/bin/lib/util/includes.js +0 -96
- package/bin/lib/util/index.js +0 -26
- package/bin/lib/util/is.js +0 -148
- package/bin/lib/util/to.js +0 -47
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const util_1 = require("../util");
|
|
4
|
-
const required = (rule, value, source, errors, options, type) => {
|
|
5
|
-
if (rule.required &&
|
|
6
|
-
(!source.hasOwnProperty(rule.field || "") ||
|
|
7
|
-
(0, util_1.isEmptyValue)(value, type || rule.type))) {
|
|
8
|
-
//@ts-ignore
|
|
9
|
-
errors.push((0, util_1.format)(options.messages.required, rule.fullField));
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
exports.default = required;
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const util_1 = require("../util");
|
|
4
|
-
const required_1 = require("./required");
|
|
5
|
-
const url_1 = require("./url");
|
|
6
|
-
/* eslint max-len:0 */
|
|
7
|
-
const pattern = {
|
|
8
|
-
// http://emailregex.com/
|
|
9
|
-
email: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,
|
|
10
|
-
// url: new RegExp(
|
|
11
|
-
// '^(?!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]*)?$',
|
|
12
|
-
// 'i',
|
|
13
|
-
// ),
|
|
14
|
-
hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i,
|
|
15
|
-
};
|
|
16
|
-
const types = {
|
|
17
|
-
integer(value) {
|
|
18
|
-
return types.number(value) && parseInt(value, 10) === value;
|
|
19
|
-
},
|
|
20
|
-
float(value) {
|
|
21
|
-
return types.number(value) && !types.integer(value);
|
|
22
|
-
},
|
|
23
|
-
array(value) {
|
|
24
|
-
return Array.isArray(value);
|
|
25
|
-
},
|
|
26
|
-
regexp(value) {
|
|
27
|
-
if (value instanceof RegExp) {
|
|
28
|
-
return true;
|
|
29
|
-
}
|
|
30
|
-
try {
|
|
31
|
-
return !!new RegExp(value);
|
|
32
|
-
}
|
|
33
|
-
catch (e) {
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
date(value) {
|
|
38
|
-
return (typeof value.getTime === 'function' &&
|
|
39
|
-
typeof value.getMonth === 'function' &&
|
|
40
|
-
typeof value.getYear === 'function' &&
|
|
41
|
-
!isNaN(value.getTime()));
|
|
42
|
-
},
|
|
43
|
-
number(value) {
|
|
44
|
-
if (isNaN(value)) {
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
return typeof value === 'number';
|
|
48
|
-
},
|
|
49
|
-
object(value) {
|
|
50
|
-
return typeof value === 'object' && !types.array(value);
|
|
51
|
-
},
|
|
52
|
-
method(value) {
|
|
53
|
-
return typeof value === 'function';
|
|
54
|
-
},
|
|
55
|
-
email(value) {
|
|
56
|
-
return (typeof value === 'string' &&
|
|
57
|
-
value.length <= 320 &&
|
|
58
|
-
!!value.match(pattern.email));
|
|
59
|
-
},
|
|
60
|
-
url(value) {
|
|
61
|
-
return (typeof value === 'string' &&
|
|
62
|
-
value.length <= 2048 &&
|
|
63
|
-
!!value.match((0, url_1.default)()));
|
|
64
|
-
},
|
|
65
|
-
hex(value) {
|
|
66
|
-
return typeof value === 'string' && !!value.match(pattern.hex);
|
|
67
|
-
},
|
|
68
|
-
};
|
|
69
|
-
const type = (rule, value, source, errors, options) => {
|
|
70
|
-
if (rule.required && value === undefined) {
|
|
71
|
-
(0, required_1.default)(rule, value, source, errors, options);
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
const custom = [
|
|
75
|
-
'integer',
|
|
76
|
-
'float',
|
|
77
|
-
'array',
|
|
78
|
-
'regexp',
|
|
79
|
-
'object',
|
|
80
|
-
'method',
|
|
81
|
-
'email',
|
|
82
|
-
'number',
|
|
83
|
-
'date',
|
|
84
|
-
'url',
|
|
85
|
-
'hex',
|
|
86
|
-
];
|
|
87
|
-
const ruleType = rule.type;
|
|
88
|
-
if (custom.indexOf(ruleType) > -1) {
|
|
89
|
-
if (!types[ruleType](value)) {
|
|
90
|
-
errors.push((0, util_1.format)(options.messages.types[ruleType], rule.fullField, rule.type));
|
|
91
|
-
}
|
|
92
|
-
// straight typeof check
|
|
93
|
-
}
|
|
94
|
-
else if (ruleType && typeof value !== rule.type) {
|
|
95
|
-
errors.push((0, util_1.format)(options.messages.types[ruleType], rule.fullField, rule.type));
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
exports.default = type;
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
// https://github.com/kevva/url-regex/blob/master/index.js
|
|
4
|
-
let urlReg;
|
|
5
|
-
exports.default = () => {
|
|
6
|
-
if (urlReg) {
|
|
7
|
-
return urlReg;
|
|
8
|
-
}
|
|
9
|
-
const word = '[a-fA-F\\d:]';
|
|
10
|
-
const b = options => options && options.includeBoundaries
|
|
11
|
-
? `(?:(?<=\\s|^)(?=${word})|(?<=${word})(?=\\s|$))`
|
|
12
|
-
: '';
|
|
13
|
-
const v4 = '(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}';
|
|
14
|
-
const v6seg = '[a-fA-F\\d]{1,4}';
|
|
15
|
-
const v6 = `
|
|
16
|
-
(?:
|
|
17
|
-
(?:${v6seg}:){7}(?:${v6seg}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8
|
|
18
|
-
(?:${v6seg}:){6}(?:${v4}|:${v6seg}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4
|
|
19
|
-
(?:${v6seg}:){5}(?::${v4}|(?::${v6seg}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4
|
|
20
|
-
(?:${v6seg}:){4}(?:(?::${v6seg}){0,1}:${v4}|(?::${v6seg}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4
|
|
21
|
-
(?:${v6seg}:){3}(?:(?::${v6seg}){0,2}:${v4}|(?::${v6seg}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4
|
|
22
|
-
(?:${v6seg}:){2}(?:(?::${v6seg}){0,3}:${v4}|(?::${v6seg}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4
|
|
23
|
-
(?:${v6seg}:){1}(?:(?::${v6seg}){0,4}:${v4}|(?::${v6seg}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4
|
|
24
|
-
(?::(?:(?::${v6seg}){0,5}:${v4}|(?::${v6seg}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4
|
|
25
|
-
)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1
|
|
26
|
-
`
|
|
27
|
-
.replace(/\s*\/\/.*$/gm, '')
|
|
28
|
-
.replace(/\n/g, '')
|
|
29
|
-
.trim();
|
|
30
|
-
// Pre-compile only the exact regexes because adding a global flag make regexes stateful
|
|
31
|
-
const v46Exact = new RegExp(`(?:^${v4}$)|(?:^${v6}$)`);
|
|
32
|
-
const v4exact = new RegExp(`^${v4}$`);
|
|
33
|
-
const v6exact = new RegExp(`^${v6}$`);
|
|
34
|
-
const ip = options => options && options.exact
|
|
35
|
-
? v46Exact
|
|
36
|
-
: new RegExp(`(?:${b(options)}${v4}${b(options)})|(?:${b(options)}${v6}${b(options)})`, 'g');
|
|
37
|
-
ip.v4 = (options) => options && options.exact
|
|
38
|
-
? v4exact
|
|
39
|
-
: new RegExp(`${b(options)}${v4}${b(options)}`, 'g');
|
|
40
|
-
ip.v6 = (options) => options && options.exact
|
|
41
|
-
? v6exact
|
|
42
|
-
: new RegExp(`${b(options)}${v6}${b(options)}`, 'g');
|
|
43
|
-
const protocol = `(?:(?:[a-z]+:)?//)`;
|
|
44
|
-
const auth = '(?:\\S+(?::\\S*)?@)?';
|
|
45
|
-
const ipv4 = ip.v4().source;
|
|
46
|
-
const ipv6 = ip.v6().source;
|
|
47
|
-
const host = '(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)';
|
|
48
|
-
const domain = '(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*';
|
|
49
|
-
const tld = `(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))`;
|
|
50
|
-
const port = '(?::\\d{2,5})?';
|
|
51
|
-
const path = '(?:[/?#][^\\s"]*)?';
|
|
52
|
-
const regex = `(?:${protocol}|www\\.)${auth}(?:localhost|${ipv4}|${ipv6}|${host}${domain}${tld})${port}${path}`;
|
|
53
|
-
urlReg = new RegExp(`(?:^${regex}$)`, 'i');
|
|
54
|
-
return urlReg;
|
|
55
|
-
};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const util_1 = require("../util");
|
|
4
|
-
/**
|
|
5
|
-
* Rule for validating whitespace.
|
|
6
|
-
*
|
|
7
|
-
* @param rule The validation rule.
|
|
8
|
-
* @param value The value of the field on the source object.
|
|
9
|
-
* @param source The source object being validated.
|
|
10
|
-
* @param errors An array of errors that this rule may add
|
|
11
|
-
* validation errors to.
|
|
12
|
-
* @param options The validation options.
|
|
13
|
-
* @param options.messages The validation messages.
|
|
14
|
-
*/
|
|
15
|
-
const whitespace = (rule, value, source, errors, options) => {
|
|
16
|
-
if (/^\s+$/.test(value) || value === '') {
|
|
17
|
-
errors.push((0, util_1.format)(options.messages.whitespace, rule.fullField));
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
exports.default = whitespace;
|
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/* eslint no-console:0 */
|
|
3
|
-
//@ts-nocheck
|
|
4
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.deepMerge = exports.complementError = exports.asyncMap = exports.AsyncValidationError = exports.isEmptyObject = exports.isEmptyValue = exports.format = exports.convertFieldsError = exports.warning = void 0;
|
|
6
|
-
const formatRegExp = /%[sdj%]/g;
|
|
7
|
-
let warning = () => { };
|
|
8
|
-
exports.warning = warning;
|
|
9
|
-
// don't print warning message when in production env or node runtime
|
|
10
|
-
if (typeof process !== 'undefined' &&
|
|
11
|
-
process.env &&
|
|
12
|
-
process.env.NODE_ENV !== 'production' &&
|
|
13
|
-
typeof window !== 'undefined' &&
|
|
14
|
-
typeof document !== 'undefined') {
|
|
15
|
-
exports.warning = (type, errors) => {
|
|
16
|
-
if (typeof console !== 'undefined' &&
|
|
17
|
-
console.warn &&
|
|
18
|
-
typeof ASYNC_VALIDATOR_NO_WARNING === 'undefined') {
|
|
19
|
-
if (errors.every(e => typeof e === 'string')) {
|
|
20
|
-
console.warn(type, errors);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
function convertFieldsError(errors) {
|
|
26
|
-
if (!errors || !errors.length)
|
|
27
|
-
return null;
|
|
28
|
-
const fields = {};
|
|
29
|
-
errors.forEach(error => {
|
|
30
|
-
const field = error.field;
|
|
31
|
-
fields[field] = fields[field] || [];
|
|
32
|
-
fields[field].push(error);
|
|
33
|
-
});
|
|
34
|
-
return fields;
|
|
35
|
-
}
|
|
36
|
-
exports.convertFieldsError = convertFieldsError;
|
|
37
|
-
function format(template, ...args) {
|
|
38
|
-
let i = 0;
|
|
39
|
-
const len = args.length;
|
|
40
|
-
if (typeof template === 'function') {
|
|
41
|
-
return template.apply(null, args);
|
|
42
|
-
}
|
|
43
|
-
if (typeof template === 'string') {
|
|
44
|
-
let str = template.replace(formatRegExp, x => {
|
|
45
|
-
if (x === '%%') {
|
|
46
|
-
return '%';
|
|
47
|
-
}
|
|
48
|
-
if (i >= len) {
|
|
49
|
-
return x;
|
|
50
|
-
}
|
|
51
|
-
switch (x) {
|
|
52
|
-
case '%s':
|
|
53
|
-
return String(args[i++]);
|
|
54
|
-
case '%d':
|
|
55
|
-
return Number(args[i++]);
|
|
56
|
-
case '%j':
|
|
57
|
-
try {
|
|
58
|
-
return JSON.stringify(args[i++]);
|
|
59
|
-
}
|
|
60
|
-
catch (_) {
|
|
61
|
-
return '[Circular]';
|
|
62
|
-
}
|
|
63
|
-
break;
|
|
64
|
-
default:
|
|
65
|
-
return x;
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
return str;
|
|
69
|
-
}
|
|
70
|
-
return template;
|
|
71
|
-
}
|
|
72
|
-
exports.format = format;
|
|
73
|
-
function isNativeStringType(type) {
|
|
74
|
-
return (type === 'string' ||
|
|
75
|
-
type === 'url' ||
|
|
76
|
-
type === 'hex' ||
|
|
77
|
-
type === 'email' ||
|
|
78
|
-
type === 'date' ||
|
|
79
|
-
type === 'pattern');
|
|
80
|
-
}
|
|
81
|
-
function isEmptyValue(value, type) {
|
|
82
|
-
if (value === undefined || value === null) {
|
|
83
|
-
return true;
|
|
84
|
-
}
|
|
85
|
-
if (type === 'array' && Array.isArray(value) && !value.length) {
|
|
86
|
-
return true;
|
|
87
|
-
}
|
|
88
|
-
if (isNativeStringType(type) && typeof value === 'string' && !value) {
|
|
89
|
-
return true;
|
|
90
|
-
}
|
|
91
|
-
return false;
|
|
92
|
-
}
|
|
93
|
-
exports.isEmptyValue = isEmptyValue;
|
|
94
|
-
function isEmptyObject(obj) {
|
|
95
|
-
return Object.keys(obj).length === 0;
|
|
96
|
-
}
|
|
97
|
-
exports.isEmptyObject = isEmptyObject;
|
|
98
|
-
function asyncParallelArray(arr, func, callback) {
|
|
99
|
-
const results = [];
|
|
100
|
-
let total = 0;
|
|
101
|
-
const arrLength = arr.length;
|
|
102
|
-
function count(errors) {
|
|
103
|
-
results.push(...(errors || []));
|
|
104
|
-
total++;
|
|
105
|
-
if (total === arrLength) {
|
|
106
|
-
callback(results);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
arr.forEach(a => {
|
|
110
|
-
func(a, count);
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
function asyncSerialArray(arr, func, callback) {
|
|
114
|
-
let index = 0;
|
|
115
|
-
const arrLength = arr.length;
|
|
116
|
-
function next(errors) {
|
|
117
|
-
if (errors && errors.length) {
|
|
118
|
-
callback(errors);
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
const original = index;
|
|
122
|
-
index = index + 1;
|
|
123
|
-
if (original < arrLength) {
|
|
124
|
-
func(arr[original], next);
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
callback([]);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
next([]);
|
|
131
|
-
}
|
|
132
|
-
function flattenObjArr(objArr) {
|
|
133
|
-
const ret = [];
|
|
134
|
-
Object.keys(objArr).forEach(k => {
|
|
135
|
-
ret.push(...(objArr[k] || []));
|
|
136
|
-
});
|
|
137
|
-
return ret;
|
|
138
|
-
}
|
|
139
|
-
class AsyncValidationError extends Error {
|
|
140
|
-
errors;
|
|
141
|
-
fields;
|
|
142
|
-
constructor(errors, fields) {
|
|
143
|
-
super('Async Validation Error');
|
|
144
|
-
this.errors = errors;
|
|
145
|
-
this.fields = fields;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
exports.AsyncValidationError = AsyncValidationError;
|
|
149
|
-
function asyncMap(objArr, option, func, callback, source) {
|
|
150
|
-
if (option.first) {
|
|
151
|
-
const pending = new Promise((resolve, reject) => {
|
|
152
|
-
const next = (errors) => {
|
|
153
|
-
callback(errors);
|
|
154
|
-
return errors.length
|
|
155
|
-
? reject(new AsyncValidationError(errors, convertFieldsError(errors)))
|
|
156
|
-
: resolve(source);
|
|
157
|
-
};
|
|
158
|
-
const flattenArr = flattenObjArr(objArr);
|
|
159
|
-
asyncSerialArray(flattenArr, func, next);
|
|
160
|
-
});
|
|
161
|
-
pending.catch(e => e);
|
|
162
|
-
return pending;
|
|
163
|
-
}
|
|
164
|
-
const firstFields = option.firstFields === true
|
|
165
|
-
? Object.keys(objArr)
|
|
166
|
-
: option.firstFields || [];
|
|
167
|
-
const objArrKeys = Object.keys(objArr);
|
|
168
|
-
const objArrLength = objArrKeys.length;
|
|
169
|
-
let total = 0;
|
|
170
|
-
const results = [];
|
|
171
|
-
const pending = new Promise((resolve, reject) => {
|
|
172
|
-
const next = (errors) => {
|
|
173
|
-
results.push.apply(results, errors);
|
|
174
|
-
total++;
|
|
175
|
-
if (total === objArrLength) {
|
|
176
|
-
callback(results);
|
|
177
|
-
return results.length
|
|
178
|
-
? reject(new AsyncValidationError(results, convertFieldsError(results)))
|
|
179
|
-
: resolve(source);
|
|
180
|
-
}
|
|
181
|
-
};
|
|
182
|
-
if (!objArrKeys.length) {
|
|
183
|
-
callback(results);
|
|
184
|
-
resolve(source);
|
|
185
|
-
}
|
|
186
|
-
objArrKeys.forEach(key => {
|
|
187
|
-
const arr = objArr[key];
|
|
188
|
-
if (firstFields.indexOf(key) !== -1) {
|
|
189
|
-
asyncSerialArray(arr, func, next);
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
asyncParallelArray(arr, func, next);
|
|
193
|
-
}
|
|
194
|
-
});
|
|
195
|
-
});
|
|
196
|
-
pending.catch(e => e);
|
|
197
|
-
return pending;
|
|
198
|
-
}
|
|
199
|
-
exports.asyncMap = asyncMap;
|
|
200
|
-
function isErrorObj(obj) {
|
|
201
|
-
return !!(obj && obj.message !== undefined);
|
|
202
|
-
}
|
|
203
|
-
function getValue(value, path) {
|
|
204
|
-
let v = value;
|
|
205
|
-
for (let i = 0; i < path.length; i++) {
|
|
206
|
-
if (v == undefined) {
|
|
207
|
-
return v;
|
|
208
|
-
}
|
|
209
|
-
v = v[path[i]];
|
|
210
|
-
}
|
|
211
|
-
return v;
|
|
212
|
-
}
|
|
213
|
-
function complementError(rule, source) {
|
|
214
|
-
return (oe) => {
|
|
215
|
-
let fieldValue;
|
|
216
|
-
if (rule.fullFields) {
|
|
217
|
-
fieldValue = getValue(source, rule.fullFields);
|
|
218
|
-
}
|
|
219
|
-
else {
|
|
220
|
-
fieldValue = source[oe.field || rule.fullField];
|
|
221
|
-
}
|
|
222
|
-
if (isErrorObj(oe)) {
|
|
223
|
-
oe.field = oe.field || rule.fullField;
|
|
224
|
-
oe.fieldValue = fieldValue;
|
|
225
|
-
return oe;
|
|
226
|
-
}
|
|
227
|
-
return {
|
|
228
|
-
message: typeof oe === 'function' ? oe() : oe,
|
|
229
|
-
fieldValue,
|
|
230
|
-
field: oe.field || rule.fullField,
|
|
231
|
-
};
|
|
232
|
-
};
|
|
233
|
-
}
|
|
234
|
-
exports.complementError = complementError;
|
|
235
|
-
function deepMerge(target, source) {
|
|
236
|
-
if (source) {
|
|
237
|
-
for (const s in source) {
|
|
238
|
-
if (source.hasOwnProperty(s)) {
|
|
239
|
-
const value = source[s];
|
|
240
|
-
if (typeof value === 'object' && typeof target[s] === 'object') {
|
|
241
|
-
target[s] = {
|
|
242
|
-
...target[s],
|
|
243
|
-
...value,
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
else {
|
|
247
|
-
//@ts-ignore
|
|
248
|
-
target[s] = value;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
return target;
|
|
254
|
-
}
|
|
255
|
-
exports.deepMerge = deepMerge;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const rule_1 = require("../rule");
|
|
4
|
-
const util_1 = require("../util");
|
|
5
|
-
const any = (rule, value, callback, source, options) => {
|
|
6
|
-
const errors = [];
|
|
7
|
-
const validate = rule.required || (!rule.required && source.hasOwnProperty(rule.field));
|
|
8
|
-
if (validate) {
|
|
9
|
-
if ((0, util_1.isEmptyValue)(value) && !rule.required) {
|
|
10
|
-
return callback();
|
|
11
|
-
}
|
|
12
|
-
rule_1.default.required(rule, value, source, errors, options);
|
|
13
|
-
}
|
|
14
|
-
callback(errors);
|
|
15
|
-
};
|
|
16
|
-
exports.default = any;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const index_1 = require("../rule/index");
|
|
4
|
-
const array = (rule, value, callback, source, options) => {
|
|
5
|
-
const errors = [];
|
|
6
|
-
const validate = rule.required || (!rule.required && source.hasOwnProperty(rule.field));
|
|
7
|
-
if (validate) {
|
|
8
|
-
if ((value === undefined || value === null) && !rule.required) {
|
|
9
|
-
return callback();
|
|
10
|
-
}
|
|
11
|
-
index_1.default.required(rule, value, source, errors, options, 'array');
|
|
12
|
-
if (value !== undefined && value !== null) {
|
|
13
|
-
index_1.default.type(rule, value, source, errors, options);
|
|
14
|
-
index_1.default.range(rule, value, source, errors, options);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
callback(errors);
|
|
18
|
-
};
|
|
19
|
-
exports.default = array;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//@ts-nocheck
|
|
4
|
-
const util_1 = require("../util");
|
|
5
|
-
const rule_1 = require("../rule");
|
|
6
|
-
const boolean = (rule, value, callback, source, options) => {
|
|
7
|
-
const errors = [];
|
|
8
|
-
const validate = rule.required || (!rule.required && source.hasOwnProperty(rule.field));
|
|
9
|
-
if (validate) {
|
|
10
|
-
if ((0, util_1.isEmptyValue)(value) && !rule.required) {
|
|
11
|
-
return callback();
|
|
12
|
-
}
|
|
13
|
-
rule_1.default.required(rule, value, source, errors, options);
|
|
14
|
-
if (value !== undefined) {
|
|
15
|
-
rule_1.default.type(rule, value, source, errors, options);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
callback(errors);
|
|
19
|
-
};
|
|
20
|
-
exports.default = boolean;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const rule_1 = require("../rule");
|
|
4
|
-
const util_1 = require("../util");
|
|
5
|
-
const date = (rule, value, callback, source, options) => {
|
|
6
|
-
// console.log('integer rule called %j', rule);
|
|
7
|
-
const errors = [];
|
|
8
|
-
const validate = rule.required || (!rule.required && source.hasOwnProperty(rule.field));
|
|
9
|
-
// console.log('validate on %s value', value);
|
|
10
|
-
if (validate) {
|
|
11
|
-
if ((0, util_1.isEmptyValue)(value, 'date') && !rule.required) {
|
|
12
|
-
return callback();
|
|
13
|
-
}
|
|
14
|
-
rule_1.default.required(rule, value, source, errors, options);
|
|
15
|
-
if (!(0, util_1.isEmptyValue)(value, 'date')) {
|
|
16
|
-
let dateObject;
|
|
17
|
-
if (value instanceof Date) {
|
|
18
|
-
dateObject = value;
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
dateObject = new Date(value);
|
|
22
|
-
}
|
|
23
|
-
rule_1.default.type(rule, dateObject, source, errors, options);
|
|
24
|
-
if (dateObject) {
|
|
25
|
-
rule_1.default.range(rule, dateObject.getTime(), source, errors, options);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
callback(errors);
|
|
30
|
-
};
|
|
31
|
-
exports.default = date;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const rule_1 = require("../rule");
|
|
4
|
-
const util_1 = require("../util");
|
|
5
|
-
const ENUM = 'enum';
|
|
6
|
-
const enumerable = (rule, value, callback, source, options) => {
|
|
7
|
-
const errors = [];
|
|
8
|
-
const validate = rule.required || (!rule.required && source.hasOwnProperty(rule.field));
|
|
9
|
-
if (validate) {
|
|
10
|
-
if ((0, util_1.isEmptyValue)(value) && !rule.required) {
|
|
11
|
-
return callback();
|
|
12
|
-
}
|
|
13
|
-
rule_1.default.required(rule, value, source, errors, options);
|
|
14
|
-
if (value !== undefined) {
|
|
15
|
-
rule_1.default[ENUM](rule, value, source, errors, options);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
callback(errors);
|
|
19
|
-
};
|
|
20
|
-
exports.default = enumerable;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const rule_1 = require("../rule");
|
|
4
|
-
const util_1 = require("../util");
|
|
5
|
-
const floatFn = (rule, value, callback, source, options) => {
|
|
6
|
-
const errors = [];
|
|
7
|
-
const validate = rule.required || (!rule.required && source.hasOwnProperty(rule.field));
|
|
8
|
-
if (validate) {
|
|
9
|
-
if ((0, util_1.isEmptyValue)(value) && !rule.required) {
|
|
10
|
-
return callback();
|
|
11
|
-
}
|
|
12
|
-
rule_1.default.required(rule, value, source, errors, options);
|
|
13
|
-
if (value !== undefined) {
|
|
14
|
-
rule_1.default.type(rule, value, source, errors, options);
|
|
15
|
-
rule_1.default.range(rule, value, source, errors, options);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
callback(errors);
|
|
19
|
-
};
|
|
20
|
-
exports.default = floatFn;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const string_1 = require("./string");
|
|
4
|
-
const method_1 = require("./method");
|
|
5
|
-
const number_1 = require("./number");
|
|
6
|
-
const boolean_1 = require("./boolean");
|
|
7
|
-
const regexp_1 = require("./regexp");
|
|
8
|
-
const integer_1 = require("./integer");
|
|
9
|
-
const float_1 = require("./float");
|
|
10
|
-
const array_1 = require("./array");
|
|
11
|
-
const object_1 = require("./object");
|
|
12
|
-
const enum_1 = require("./enum");
|
|
13
|
-
const pattern_1 = require("./pattern");
|
|
14
|
-
const date_1 = require("./date");
|
|
15
|
-
const required_1 = require("./required");
|
|
16
|
-
const type_1 = require("./type");
|
|
17
|
-
const any_1 = require("./any");
|
|
18
|
-
exports.default = {
|
|
19
|
-
string: string_1.default,
|
|
20
|
-
method: method_1.default,
|
|
21
|
-
number: number_1.default,
|
|
22
|
-
boolean: boolean_1.default,
|
|
23
|
-
regexp: regexp_1.default,
|
|
24
|
-
integer: integer_1.default,
|
|
25
|
-
float: float_1.default,
|
|
26
|
-
array: array_1.default,
|
|
27
|
-
object: object_1.default,
|
|
28
|
-
enum: enum_1.default,
|
|
29
|
-
pattern: pattern_1.default,
|
|
30
|
-
date: date_1.default,
|
|
31
|
-
url: type_1.default,
|
|
32
|
-
hex: type_1.default,
|
|
33
|
-
email: type_1.default,
|
|
34
|
-
required: required_1.default,
|
|
35
|
-
any: any_1.default,
|
|
36
|
-
};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const rule_1 = require("../rule");
|
|
4
|
-
const util_1 = require("../util");
|
|
5
|
-
const integer = (rule, value, callback, source, options) => {
|
|
6
|
-
const errors = [];
|
|
7
|
-
const validate = rule.required || (!rule.required && source.hasOwnProperty(rule.field));
|
|
8
|
-
if (validate) {
|
|
9
|
-
if ((0, util_1.isEmptyValue)(value) && !rule.required) {
|
|
10
|
-
return callback();
|
|
11
|
-
}
|
|
12
|
-
rule_1.default.required(rule, value, source, errors, options);
|
|
13
|
-
if (value !== undefined) {
|
|
14
|
-
rule_1.default.type(rule, value, source, errors, options);
|
|
15
|
-
rule_1.default.range(rule, value, source, errors, options);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
callback(errors);
|
|
19
|
-
};
|
|
20
|
-
exports.default = integer;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const rule_1 = require("../rule");
|
|
4
|
-
const util_1 = require("../util");
|
|
5
|
-
const method = (rule, value, callback, source, options) => {
|
|
6
|
-
const errors = [];
|
|
7
|
-
const validate = rule.required || (!rule.required && source.hasOwnProperty(rule.field));
|
|
8
|
-
if (validate) {
|
|
9
|
-
if ((0, util_1.isEmptyValue)(value) && !rule.required) {
|
|
10
|
-
return callback();
|
|
11
|
-
}
|
|
12
|
-
rule_1.default.required(rule, value, source, errors, options);
|
|
13
|
-
if (value !== undefined) {
|
|
14
|
-
rule_1.default.type(rule, value, source, errors, options);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
callback(errors);
|
|
18
|
-
};
|
|
19
|
-
exports.default = method;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const rule_1 = require("../rule");
|
|
4
|
-
const util_1 = require("../util");
|
|
5
|
-
const number = (rule, value, callback, source, options) => {
|
|
6
|
-
const errors = [];
|
|
7
|
-
const validate = rule.required || (!rule.required && source.hasOwnProperty(rule.field));
|
|
8
|
-
if (validate) {
|
|
9
|
-
if (value === '') {
|
|
10
|
-
value = undefined;
|
|
11
|
-
}
|
|
12
|
-
if ((0, util_1.isEmptyValue)(value) && !rule.required) {
|
|
13
|
-
return callback();
|
|
14
|
-
}
|
|
15
|
-
rule_1.default.required(rule, value, source, errors, options);
|
|
16
|
-
if (value !== undefined) {
|
|
17
|
-
rule_1.default.type(rule, value, source, errors, options);
|
|
18
|
-
rule_1.default.range(rule, value, source, errors, options);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
callback(errors);
|
|
22
|
-
};
|
|
23
|
-
exports.default = number;
|