@ivujs/i-utils 2.0.0 → 2.1.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 +40 -42
- package/dist/cjs/ID-card/index.cjs +21 -13
- package/dist/cjs/array/index.cjs +40 -34
- package/dist/cjs/clipboard/index.cjs +14 -10
- package/dist/cjs/color/index.cjs +73 -59
- package/dist/cjs/constants/date.cjs +55 -1
- package/dist/cjs/constants/id-card.cjs +42 -1
- package/dist/cjs/constants/keycode.cjs +117 -2
- package/dist/cjs/constants/lang.cjs +7 -1
- package/dist/cjs/constants/math.cjs +9 -1
- package/dist/cjs/constants/regexp.cjs +33 -10
- package/dist/cjs/constants/sort.cjs +10 -1
- package/dist/cjs/cookie/index.cjs +16 -13
- package/dist/cjs/crypto/base64/base64.cjs +398 -206
- package/dist/cjs/crypto/base64/index.cjs +58 -35
- package/dist/cjs/crypto/md5/index.cjs +33 -8
- package/dist/cjs/crypto/md5/md5.cjs +298 -844
- package/dist/cjs/crypto/sha256/index.cjs +95 -0
- package/dist/cjs/crypto/sha256/sha256.cjs +557 -0
- package/dist/cjs/crypto/sm3/index.cjs +27 -0
- package/dist/cjs/crypto/sm3/sm3.cjs +200 -0
- package/dist/cjs/crypto/sm4/index.cjs +101 -0
- package/dist/cjs/crypto/sm4/sm4.cjs +498 -0
- package/dist/cjs/date/index.cjs +420 -340
- package/dist/cjs/desensitized/index.cjs +21 -18
- package/dist/cjs/device/index.cjs +33 -30
- package/dist/cjs/dom/index.cjs +26 -23
- package/dist/cjs/file/index.cjs +51 -41
- package/dist/cjs/function/index.cjs +22 -19
- package/dist/cjs/id/index.cjs +6 -2
- package/dist/cjs/index.cjs +110 -127
- package/dist/cjs/keycode/index.cjs +9 -12
- package/dist/cjs/math/index.cjs +113 -81
- package/dist/cjs/number/index.cjs +10 -7
- package/dist/cjs/object/index.cjs +77 -30
- package/dist/cjs/pagination/index.cjs +25 -10
- package/dist/cjs/random/index.cjs +8 -5
- package/dist/cjs/regexp/index.cjs +23 -20
- package/dist/cjs/storage/index.cjs +4 -1
- package/dist/cjs/storage/localStorage.cjs +5 -5
- package/dist/cjs/storage/sessionStorage.cjs +6 -6
- package/dist/cjs/string/index.cjs +66 -63
- package/dist/cjs/url/index.cjs +83 -80
- package/dist/cjs/validate/index.cjs +122 -106
- package/dist/es/ID-card/index.d.ts +19 -14
- package/dist/es/ID-card/index.mjs +22 -14
- package/dist/es/array/index.d.ts +56 -50
- package/dist/es/array/index.mjs +40 -34
- package/dist/es/clipboard/index.d.ts +10 -7
- package/dist/es/clipboard/index.mjs +14 -10
- package/dist/es/color/index.d.ts +28 -25
- package/dist/es/color/index.mjs +73 -59
- package/dist/es/constants/date.d.ts +58 -174
- package/dist/es/constants/date.mjs +55 -1
- package/dist/es/constants/id-card.d.ts +45 -43
- package/dist/es/constants/id-card.mjs +42 -1
- package/dist/es/constants/index.d.ts +11 -7
- package/dist/es/constants/keycode.d.ts +119 -103
- package/dist/es/constants/keycode.mjs +117 -2
- package/dist/es/constants/lang.d.ts +10 -4
- package/dist/es/constants/lang.mjs +7 -1
- package/dist/es/constants/math.d.ts +12 -4
- package/dist/es/constants/math.mjs +9 -1
- package/dist/es/constants/regexp.d.ts +27 -24
- package/dist/es/constants/regexp.mjs +33 -10
- package/dist/es/constants/sort.d.ts +13 -5
- package/dist/es/constants/sort.mjs +10 -1
- package/dist/es/cookie/index.d.ts +13 -13
- package/dist/es/cookie/index.mjs +16 -13
- package/dist/es/crypto/base64/base64.d.ts +8 -5
- package/dist/es/crypto/base64/base64.mjs +393 -204
- package/dist/es/crypto/base64/index.d.ts +41 -24
- package/dist/es/crypto/base64/index.mjs +53 -32
- package/dist/es/crypto/index.d.ts +8 -8
- package/dist/es/crypto/md5/index.d.ts +20 -7
- package/dist/es/crypto/md5/index.mjs +32 -9
- package/dist/es/crypto/md5/md5.d.ts +9 -142
- package/dist/es/crypto/md5/md5.mjs +299 -844
- package/dist/es/crypto/sha256/index.d.ts +52 -0
- package/dist/es/crypto/sha256/index.mjs +86 -0
- package/dist/es/crypto/sha256/sha256.d.ts +82 -0
- package/dist/es/crypto/sha256/sha256.mjs +548 -0
- package/dist/es/crypto/sm3/index.d.ts +13 -0
- package/dist/es/crypto/sm3/index.mjs +24 -0
- package/dist/es/crypto/sm3/sm3.d.ts +3 -0
- package/dist/es/crypto/sm3/sm3.mjs +197 -0
- package/dist/es/crypto/sm4/index.d.ts +56 -0
- package/dist/es/crypto/sm4/index.mjs +95 -0
- package/dist/es/crypto/sm4/sm4.d.ts +48 -0
- package/dist/es/crypto/sm4/sm4.mjs +490 -0
- package/dist/es/date/index.d.ts +269 -179
- package/dist/es/date/index.mjs +417 -340
- package/dist/es/desensitized/index.d.ts +26 -23
- package/dist/es/desensitized/index.mjs +21 -18
- package/dist/es/device/index.d.ts +31 -25
- package/dist/es/device/index.mjs +33 -30
- package/dist/es/dom/index.d.ts +32 -29
- package/dist/es/dom/index.mjs +26 -23
- package/dist/es/file/index.d.ts +30 -30
- package/dist/es/file/index.mjs +51 -41
- package/dist/es/function/index.d.ts +10 -7
- package/dist/es/function/index.mjs +22 -19
- package/dist/es/id/index.d.ts +3 -0
- package/dist/es/id/index.mjs +6 -2
- package/dist/es/index.d.ts +24 -25
- package/dist/es/index.mjs +6 -23
- package/dist/es/keycode/index.d.ts +6 -6
- package/dist/es/keycode/index.mjs +9 -12
- package/dist/es/math/index.d.ts +37 -37
- package/dist/es/math/index.mjs +113 -81
- package/dist/es/number/index.d.ts +7 -7
- package/dist/es/number/index.mjs +10 -7
- package/dist/es/object/index.d.ts +20 -19
- package/dist/es/object/index.mjs +77 -30
- package/dist/es/pagination/index.d.ts +39 -6
- package/dist/es/pagination/index.mjs +25 -10
- package/dist/es/random/index.d.ts +10 -7
- package/dist/es/random/index.mjs +8 -5
- package/dist/es/regexp/index.d.ts +30 -30
- package/dist/es/regexp/index.mjs +23 -20
- package/dist/es/storage/index.d.ts +10 -4
- package/dist/es/storage/index.mjs +4 -1
- package/dist/es/storage/localStorage.d.ts +9 -9
- package/dist/es/storage/localStorage.mjs +5 -5
- package/dist/es/storage/sessionStorage.d.ts +9 -9
- package/dist/es/storage/sessionStorage.mjs +6 -6
- package/dist/es/string/index.d.ts +62 -59
- package/dist/es/string/index.mjs +66 -63
- package/dist/es/url/index.d.ts +65 -65
- package/dist/es/url/index.mjs +83 -80
- package/dist/es/validate/index.d.ts +83 -80
- package/dist/es/validate/index.mjs +122 -106
- package/dist/index.d.ts +2643 -2803
- package/dist/lib/index.full.umd.js +3609 -9494
- package/dist/lib/index.full.umd.min.js +2 -64
- package/dist/lib/index.full.umd.min.js.map +1 -1
- package/dist/resolver/auto-imports.cjs +40 -31
- package/dist/resolver/auto-imports.mjs +40 -31
- package/dist/resolver/index.cjs +1 -2
- package/dist/resolver/index.d.ts +1 -1
- package/dist/resolver/index.mjs +1 -2
- package/package.json +96 -90
- package/dist/cjs/crypto/aes/aes.cjs +0 -480
- package/dist/cjs/crypto/aes/index.cjs +0 -27
- package/dist/cjs/crypto/base32/base32.cjs +0 -357
- package/dist/cjs/crypto/base32/index.cjs +0 -41
- package/dist/cjs/crypto/des/des.cjs +0 -257
- package/dist/cjs/crypto/des/index.cjs +0 -28
- package/dist/cjs/crypto/sha/sha1/index.cjs +0 -24
- package/dist/cjs/crypto/sha/sha1/sha1.cjs +0 -529
- package/dist/cjs/crypto/sha/sha256/index.cjs +0 -43
- package/dist/cjs/crypto/sha/sha256/sha256.cjs +0 -595
- package/dist/cjs/crypto/sha/sha3/index.cjs +0 -41
- package/dist/cjs/crypto/sha/sha3/sha3.cjs +0 -624
- package/dist/cjs/crypto/sha/sha512/index.cjs +0 -81
- package/dist/cjs/crypto/sha/sha512/sha512.cjs +0 -950
- package/dist/cjs/crypto/sm/lib/asn1.cjs +0 -149
- package/dist/cjs/crypto/sm/lib/ec.cjs +0 -315
- package/dist/cjs/crypto/sm/lib/jsbn.cjs +0 -1608
- package/dist/cjs/crypto/sm/lib/sm3.cjs +0 -158
- package/dist/cjs/crypto/sm/lib/utils.cjs +0 -170
- package/dist/cjs/crypto/sm/sm2/index.cjs +0 -112
- package/dist/cjs/crypto/sm/sm2/sm2.cjs +0 -231
- package/dist/cjs/crypto/sm/sm3/index.cjs +0 -15
- package/dist/cjs/crypto/sm/sm3/sm3.cjs +0 -93
- package/dist/cjs/crypto/sm/sm4/index.cjs +0 -27
- package/dist/cjs/crypto/sm/sm4/sm4.cjs +0 -327
- package/dist/cjs/crypto/tea/index.cjs +0 -25
- package/dist/cjs/crypto/tea/tea.cjs +0 -187
- package/dist/cjs/weapp/index.cjs +0 -142
- package/dist/es/crypto/aes/aes.d.ts +0 -156
- package/dist/es/crypto/aes/aes.mjs +0 -478
- package/dist/es/crypto/aes/index.d.ts +0 -16
- package/dist/es/crypto/aes/index.mjs +0 -24
- package/dist/es/crypto/base32/base32.d.ts +0 -3
- package/dist/es/crypto/base32/base32.mjs +0 -353
- package/dist/es/crypto/base32/index.d.ts +0 -24
- package/dist/es/crypto/base32/index.mjs +0 -36
- package/dist/es/crypto/des/des.d.ts +0 -52
- package/dist/es/crypto/des/des.mjs +0 -255
- package/dist/es/crypto/des/index.d.ts +0 -14
- package/dist/es/crypto/des/index.mjs +0 -25
- package/dist/es/crypto/sha/index.d.ts +0 -4
- package/dist/es/crypto/sha/sha1/index.d.ts +0 -13
- package/dist/es/crypto/sha/sha1/index.mjs +0 -21
- package/dist/es/crypto/sha/sha1/sha1.d.ts +0 -2
- package/dist/es/crypto/sha/sha1/sha1.mjs +0 -526
- package/dist/es/crypto/sha/sha256/index.d.ts +0 -26
- package/dist/es/crypto/sha/sha256/index.mjs +0 -38
- package/dist/es/crypto/sha/sha256/sha256.d.ts +0 -4
- package/dist/es/crypto/sha/sha256/sha256.mjs +0 -590
- package/dist/es/crypto/sha/sha3/index.d.ts +0 -24
- package/dist/es/crypto/sha/sha3/index.mjs +0 -36
- package/dist/es/crypto/sha/sha3/sha3.d.ts +0 -4
- package/dist/es/crypto/sha/sha3/sha3.mjs +0 -619
- package/dist/es/crypto/sha/sha512/index.d.ts +0 -52
- package/dist/es/crypto/sha/sha512/index.mjs +0 -72
- package/dist/es/crypto/sha/sha512/sha512.d.ts +0 -8
- package/dist/es/crypto/sha/sha512/sha512.mjs +0 -941
- package/dist/es/crypto/sm/index.d.ts +0 -3
- package/dist/es/crypto/sm/lib/asn1.d.ts +0 -12
- package/dist/es/crypto/sm/lib/asn1.mjs +0 -146
- package/dist/es/crypto/sm/lib/ec.d.ts +0 -126
- package/dist/es/crypto/sm/lib/ec.mjs +0 -312
- package/dist/es/crypto/sm/lib/jsbn.d.ts +0 -198
- package/dist/es/crypto/sm/lib/jsbn.mjs +0 -1605
- package/dist/es/crypto/sm/lib/sm3.d.ts +0 -5
- package/dist/es/crypto/sm/lib/sm3.mjs +0 -155
- package/dist/es/crypto/sm/lib/utils.d.ts +0 -53
- package/dist/es/crypto/sm/lib/utils.mjs +0 -158
- package/dist/es/crypto/sm/sm2/index.d.ts +0 -71
- package/dist/es/crypto/sm/sm2/index.mjs +0 -101
- package/dist/es/crypto/sm/sm2/sm2.d.ts +0 -34
- package/dist/es/crypto/sm/sm2/sm2.mjs +0 -220
- package/dist/es/crypto/sm/sm3/index.d.ts +0 -7
- package/dist/es/crypto/sm/sm3/index.mjs +0 -13
- package/dist/es/crypto/sm/sm3/sm3.d.ts +0 -1
- package/dist/es/crypto/sm/sm3/sm3.mjs +0 -91
- package/dist/es/crypto/sm/sm4/index.d.ts +0 -16
- package/dist/es/crypto/sm/sm4/index.mjs +0 -24
- package/dist/es/crypto/sm/sm4/sm4.d.ts +0 -2
- package/dist/es/crypto/sm/sm4/sm4.mjs +0 -324
- package/dist/es/crypto/tea/index.d.ts +0 -14
- package/dist/es/crypto/tea/index.mjs +0 -22
- package/dist/es/crypto/tea/tea.d.ts +0 -69
- package/dist/es/crypto/tea/tea.mjs +0 -185
- package/dist/es/weapp/index.d.ts +0 -57
- package/dist/es/weapp/index.mjs +0 -131
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* @module 校验
|
|
5
|
+
*/
|
|
3
6
|
/**
|
|
4
7
|
* 判断是整数
|
|
5
8
|
* @param {*} value 参数
|
|
6
|
-
* @returns {
|
|
9
|
+
* @returns {boolean} result 返回结果
|
|
7
10
|
*/
|
|
8
11
|
function isInteger(value) {
|
|
9
12
|
return Number.isInteger(value);
|
|
@@ -11,15 +14,15 @@ function isInteger(value) {
|
|
|
11
14
|
/**
|
|
12
15
|
* 判断是小数
|
|
13
16
|
* @param {*} value 参数
|
|
14
|
-
* @returns {
|
|
17
|
+
* @returns {boolean} result 返回结果
|
|
15
18
|
*/
|
|
16
19
|
function isDecimal(value) {
|
|
17
20
|
return /^\d+\.\d+$/.test(value);
|
|
18
21
|
}
|
|
19
22
|
/**
|
|
20
23
|
* 判断类型是数字 Number
|
|
21
|
-
* @param {
|
|
22
|
-
* @returns {
|
|
24
|
+
* @param {*} value 参数
|
|
25
|
+
* @returns {boolean} 返回结果
|
|
23
26
|
*/
|
|
24
27
|
function isNumber(value) {
|
|
25
28
|
return Object.prototype.toString.call(value).slice(8, -1) === "Number";
|
|
@@ -27,7 +30,7 @@ function isNumber(value) {
|
|
|
27
30
|
/**
|
|
28
31
|
* 判断类型是字符串 String
|
|
29
32
|
* @param {*} value 参数
|
|
30
|
-
* @returns {
|
|
33
|
+
* @returns {boolean} 返回结果
|
|
31
34
|
*/
|
|
32
35
|
function isString(value) {
|
|
33
36
|
return Object.prototype.toString.call(value).slice(8, -1) === "String";
|
|
@@ -35,7 +38,7 @@ function isString(value) {
|
|
|
35
38
|
/**
|
|
36
39
|
* 判断类型是数组 Array
|
|
37
40
|
* @param {*} value 参数
|
|
38
|
-
* @returns {
|
|
41
|
+
* @returns {boolean} 返回结果
|
|
39
42
|
*/
|
|
40
43
|
function isArray(value) {
|
|
41
44
|
return Object.prototype.toString.call(value).slice(8, -1) === "Array";
|
|
@@ -43,23 +46,23 @@ function isArray(value) {
|
|
|
43
46
|
/**
|
|
44
47
|
* 判断类型是对象 Object
|
|
45
48
|
* @param {*} value 参数
|
|
46
|
-
* @returns {
|
|
49
|
+
* @returns {boolean} 返回结果
|
|
47
50
|
*/
|
|
48
51
|
function isObject(value) {
|
|
49
52
|
return Object.prototype.toString.call(value).slice(8, -1) === "Object";
|
|
50
53
|
}
|
|
51
54
|
/**
|
|
52
|
-
* 判断类型是布尔
|
|
55
|
+
* 判断类型是布尔 boolean
|
|
53
56
|
* @param {*} value 参数
|
|
54
|
-
* @returns {
|
|
57
|
+
* @returns {boolean} 返回结果
|
|
55
58
|
*/
|
|
56
59
|
function isBoolean(value) {
|
|
57
|
-
return Object.prototype.toString.call(value).slice(8, -1) === "
|
|
60
|
+
return Object.prototype.toString.call(value).slice(8, -1) === "boolean";
|
|
58
61
|
}
|
|
59
62
|
/**
|
|
60
63
|
* 判断类型是日期 Date
|
|
61
64
|
* @param {*} value 参数
|
|
62
|
-
* @returns {
|
|
65
|
+
* @returns {boolean} 返回结果
|
|
63
66
|
*/
|
|
64
67
|
function isDate(value) {
|
|
65
68
|
return Object.prototype.toString.call(value).slice(8, -1) === "Date";
|
|
@@ -67,7 +70,7 @@ function isDate(value) {
|
|
|
67
70
|
/**
|
|
68
71
|
* 判断类型是函数 Function
|
|
69
72
|
* @param {*} value 参数
|
|
70
|
-
* @returns {
|
|
73
|
+
* @returns {boolean} 返回结果
|
|
71
74
|
*/
|
|
72
75
|
function isFunction(value) {
|
|
73
76
|
return Object.prototype.toString.call(value).slice(8, -1) === "Function";
|
|
@@ -76,12 +79,12 @@ function isFunction(value) {
|
|
|
76
79
|
* 判断类型是函数字符串 FunctionString
|
|
77
80
|
* @description 支持普通函数,异步函数,箭头函数
|
|
78
81
|
* @param {*} value 参数
|
|
79
|
-
* @returns {
|
|
82
|
+
* @returns {boolean} 返回结果
|
|
80
83
|
*/
|
|
81
84
|
function isFunctionString(value) {
|
|
82
85
|
if (value) {
|
|
83
86
|
try {
|
|
84
|
-
|
|
87
|
+
const fn = new Function(`return ${value}`)();
|
|
85
88
|
return typeof fn === "function";
|
|
86
89
|
}
|
|
87
90
|
catch (e) {
|
|
@@ -96,7 +99,7 @@ function isFunctionString(value) {
|
|
|
96
99
|
/**
|
|
97
100
|
* 判断类型是异步函数 AsyncFunction
|
|
98
101
|
* @param {*} value 参数
|
|
99
|
-
* @returns {
|
|
102
|
+
* @returns {boolean} 返回结果
|
|
100
103
|
*/
|
|
101
104
|
function isAsyncFunction(value) {
|
|
102
105
|
return Object.prototype.toString.call(value).slice(8, -1) === "AsyncFunction";
|
|
@@ -104,7 +107,7 @@ function isAsyncFunction(value) {
|
|
|
104
107
|
/**
|
|
105
108
|
* 判断类型是 Symbol
|
|
106
109
|
* @param {*} value 参数
|
|
107
|
-
* @returns {
|
|
110
|
+
* @returns {boolean} 返回结果
|
|
108
111
|
*/
|
|
109
112
|
function isSymbol(value) {
|
|
110
113
|
return Object.prototype.toString.call(value).slice(8, -1) === "Symbol";
|
|
@@ -112,7 +115,7 @@ function isSymbol(value) {
|
|
|
112
115
|
/**
|
|
113
116
|
* 判断类型是正则 RegExp
|
|
114
117
|
* @param {*} value 参数
|
|
115
|
-
* @returns {
|
|
118
|
+
* @returns {boolean} 返回结果
|
|
116
119
|
*/
|
|
117
120
|
function isRegExp(value) {
|
|
118
121
|
return Object.prototype.toString.call(value).slice(8, -1) === "RegExp";
|
|
@@ -120,7 +123,7 @@ function isRegExp(value) {
|
|
|
120
123
|
/**
|
|
121
124
|
* 判断类型是错误 Error
|
|
122
125
|
* @param {*} value 参数
|
|
123
|
-
* @returns {
|
|
126
|
+
* @returns {boolean} 返回结果
|
|
124
127
|
*/
|
|
125
128
|
function isError(value) {
|
|
126
129
|
return Object.prototype.toString.call(value).slice(8, -1) === "Error";
|
|
@@ -128,7 +131,7 @@ function isError(value) {
|
|
|
128
131
|
/**
|
|
129
132
|
* 判断类型是 Promise
|
|
130
133
|
* @param {*} value 参数
|
|
131
|
-
* @returns {
|
|
134
|
+
* @returns {boolean} 返回结果
|
|
132
135
|
*/
|
|
133
136
|
function isPromise(value) {
|
|
134
137
|
return Object.prototype.toString.call(value).slice(8, -1) === "Promise";
|
|
@@ -136,7 +139,7 @@ function isPromise(value) {
|
|
|
136
139
|
/**
|
|
137
140
|
*判断类型是 Map
|
|
138
141
|
* @param {*} value 参数
|
|
139
|
-
* @returns {
|
|
142
|
+
* @returns {boolean} 返回结果
|
|
140
143
|
*/
|
|
141
144
|
function isMap(value) {
|
|
142
145
|
return Object.prototype.toString.call(value).slice(8, -1) === "Map";
|
|
@@ -144,7 +147,7 @@ function isMap(value) {
|
|
|
144
147
|
/**
|
|
145
148
|
* 判断类型是 WeakMap
|
|
146
149
|
* @param {*} value 参数
|
|
147
|
-
* @returns {
|
|
150
|
+
* @returns {boolean} 返回结果
|
|
148
151
|
*/
|
|
149
152
|
function isWeakMap(value) {
|
|
150
153
|
return Object.prototype.toString.call(value).slice(8, -1) === "WeakMap";
|
|
@@ -152,7 +155,7 @@ function isWeakMap(value) {
|
|
|
152
155
|
/**
|
|
153
156
|
* 判断类型是 Set
|
|
154
157
|
* @param {*} value 参数
|
|
155
|
-
* @returns {
|
|
158
|
+
* @returns {boolean} 返回结果
|
|
156
159
|
*/
|
|
157
160
|
function isSet(value) {
|
|
158
161
|
return Object.prototype.toString.call(value).slice(8, -1) === "Set";
|
|
@@ -160,7 +163,7 @@ function isSet(value) {
|
|
|
160
163
|
/**
|
|
161
164
|
* 判断类型是 WeakSet
|
|
162
165
|
* @param {*} value 参数
|
|
163
|
-
* @returns {
|
|
166
|
+
* @returns {boolean} 返回结果
|
|
164
167
|
*/
|
|
165
168
|
function isWeakSet(value) {
|
|
166
169
|
return Object.prototype.toString.call(value).slice(8, -1) === "WeakSet";
|
|
@@ -168,7 +171,7 @@ function isWeakSet(value) {
|
|
|
168
171
|
/**
|
|
169
172
|
* 判断类型是 BigInt
|
|
170
173
|
* @param {*} value 参数
|
|
171
|
-
* @returns {
|
|
174
|
+
* @returns {boolean} 返回结果
|
|
172
175
|
*/
|
|
173
176
|
function isBigInt(value) {
|
|
174
177
|
return Object.prototype.toString.call(value).slice(8, -1) === "BigInt";
|
|
@@ -176,7 +179,7 @@ function isBigInt(value) {
|
|
|
176
179
|
/**
|
|
177
180
|
* 判断类型是 Json
|
|
178
181
|
* @param {*} value 参数
|
|
179
|
-
* @returns {
|
|
182
|
+
* @returns {boolean} 返回结果
|
|
180
183
|
*/
|
|
181
184
|
function isJson(value) {
|
|
182
185
|
try {
|
|
@@ -191,7 +194,7 @@ function isJson(value) {
|
|
|
191
194
|
/**
|
|
192
195
|
* 判断值为真
|
|
193
196
|
* @param {*} value 校验的参数
|
|
194
|
-
* @returns {
|
|
197
|
+
* @returns {boolean} 返回结果
|
|
195
198
|
*/
|
|
196
199
|
function isTrue(value) {
|
|
197
200
|
return !isFalse(value);
|
|
@@ -199,7 +202,7 @@ function isTrue(value) {
|
|
|
199
202
|
/**
|
|
200
203
|
* 判断值为假
|
|
201
204
|
* @param {*} value 校验的参数
|
|
202
|
-
* @returns {
|
|
205
|
+
* @returns {boolean} 返回结果
|
|
203
206
|
*/
|
|
204
207
|
function isFalse(value) {
|
|
205
208
|
return (value === undefined ||
|
|
@@ -213,7 +216,7 @@ function isFalse(value) {
|
|
|
213
216
|
/**
|
|
214
217
|
* 判断非数字
|
|
215
218
|
* @param {*} value 参数
|
|
216
|
-
* @returns {
|
|
219
|
+
* @returns {boolean} 返回结果
|
|
217
220
|
*/
|
|
218
221
|
function isNaN(value) {
|
|
219
222
|
// window的isNaN函数是有缺陷的,空数组/数组有一个元素,null,空字符串 都会被认为是数字
|
|
@@ -223,7 +226,7 @@ function isNaN(value) {
|
|
|
223
226
|
* 判断是数字
|
|
224
227
|
* @description 等同于isNumber()
|
|
225
228
|
* @param {*} value 参数
|
|
226
|
-
* @returns {
|
|
229
|
+
* @returns {boolean} 返回结果
|
|
227
230
|
*/
|
|
228
231
|
function isNotNaN(value) {
|
|
229
232
|
return !isNaN(value);
|
|
@@ -232,7 +235,7 @@ function isNotNaN(value) {
|
|
|
232
235
|
* 判断对象为空
|
|
233
236
|
* @description 判断值是否为空,如果对象初始化了值则不为空
|
|
234
237
|
* @param {*} value 校验的参数
|
|
235
|
-
* @returns {
|
|
238
|
+
* @returns {boolean} 返回结果
|
|
236
239
|
*/
|
|
237
240
|
function isNull(value) {
|
|
238
241
|
return value === undefined || value === null || value === "";
|
|
@@ -241,7 +244,7 @@ function isNull(value) {
|
|
|
241
244
|
* 判断对象不为空
|
|
242
245
|
* @description 判断值是否为空,如果对象初始化了值则不为空
|
|
243
246
|
* @param {*} value 校验的参数
|
|
244
|
-
* @returns {
|
|
247
|
+
* @returns {boolean} 返回结果
|
|
245
248
|
*/
|
|
246
249
|
function isNotNull(value) {
|
|
247
250
|
return !isNull(value);
|
|
@@ -250,7 +253,7 @@ function isNotNull(value) {
|
|
|
250
253
|
* 判断值为空
|
|
251
254
|
* @description 判断是否是有意义不为空的值,如果值是{},[]空的数据则为空
|
|
252
255
|
* @param {*} value 校验的参数
|
|
253
|
-
* @returns {
|
|
256
|
+
* @returns {boolean} 返回结果
|
|
254
257
|
*/
|
|
255
258
|
function isEmpty(value) {
|
|
256
259
|
if (isNull(value))
|
|
@@ -273,7 +276,7 @@ function isEmpty(value) {
|
|
|
273
276
|
* 判断值不为空
|
|
274
277
|
* @description 判断是否是有意义不为空的值,如果值是{},[]空的数据则为空
|
|
275
278
|
* @param {*} value 校验的参数
|
|
276
|
-
* @returns {
|
|
279
|
+
* @returns {boolean} 返回结果
|
|
277
280
|
*/
|
|
278
281
|
function isNotEmpty(value) {
|
|
279
282
|
return !isEmpty(value);
|
|
@@ -282,7 +285,7 @@ function isNotEmpty(value) {
|
|
|
282
285
|
* 判断值是空白的
|
|
283
286
|
* @description 同时会校验空值,空对象,以及空白符号
|
|
284
287
|
* @param {*} value 校验的参数
|
|
285
|
-
* @returns {
|
|
288
|
+
* @returns {boolean} 返回结果
|
|
286
289
|
*/
|
|
287
290
|
function isBlank(value) {
|
|
288
291
|
return isEmpty(value) || /^\s*$/.test(value);
|
|
@@ -291,7 +294,7 @@ function isBlank(value) {
|
|
|
291
294
|
* 判断值不是空白的
|
|
292
295
|
* @description 同时会校验空值,空对象,以及空白符号
|
|
293
296
|
* @param {*} value 校验的参数
|
|
294
|
-
* @returns {
|
|
297
|
+
* @returns {boolean} 返回结果
|
|
295
298
|
*/
|
|
296
299
|
function isNotBlank(value) {
|
|
297
300
|
return !isBlank(value);
|
|
@@ -299,7 +302,7 @@ function isNotBlank(value) {
|
|
|
299
302
|
/**
|
|
300
303
|
* 判断值是undefined
|
|
301
304
|
* @param {*} value 校验的参数
|
|
302
|
-
* @returns {
|
|
305
|
+
* @returns {boolean} 返回结果
|
|
303
306
|
*/
|
|
304
307
|
function isUndefined(value) {
|
|
305
308
|
return value === undefined;
|
|
@@ -307,7 +310,7 @@ function isUndefined(value) {
|
|
|
307
310
|
/**
|
|
308
311
|
* 判断值不是undefined
|
|
309
312
|
* @param {*} value 校验的参数
|
|
310
|
-
* @returns {
|
|
313
|
+
* @returns {boolean} 返回结果
|
|
311
314
|
*/
|
|
312
315
|
function isNotUndefined(value) {
|
|
313
316
|
return !isUndefined(value);
|
|
@@ -315,115 +318,128 @@ function isNotUndefined(value) {
|
|
|
315
318
|
/* 数据比较 */
|
|
316
319
|
/**
|
|
317
320
|
* 判断两个值是否相等
|
|
318
|
-
* @param {
|
|
319
|
-
* @param {
|
|
320
|
-
* @returns {
|
|
321
|
+
* @param {*} value1 参数1
|
|
322
|
+
* @param {*} value2 参数2
|
|
323
|
+
* @returns {boolean} 返回结果
|
|
321
324
|
*/
|
|
322
325
|
function equals(value1, value2) {
|
|
323
326
|
return Object.is(value1, value2);
|
|
324
327
|
}
|
|
325
328
|
/**
|
|
326
329
|
* 判断两个值是否相等(忽略大小写)
|
|
327
|
-
* @param {
|
|
328
|
-
* @param {
|
|
329
|
-
* @returns {
|
|
330
|
+
* @param {*} value1 参数1
|
|
331
|
+
* @param {*} value2 参数2
|
|
332
|
+
* @returns {boolean} 返回结果
|
|
330
333
|
*/
|
|
331
334
|
function equalsIgnoreCase(value1, value2) {
|
|
332
335
|
return Object.is(value1.toLowerCase(), value2.toLowerCase());
|
|
333
336
|
}
|
|
334
337
|
/**
|
|
335
338
|
* 深度对比数据
|
|
336
|
-
* @description
|
|
339
|
+
* @description 可以对比任意数据,对象、数组、日期等也可深度对比,对象不区分先后顺序
|
|
337
340
|
* @param {*} x 数据1
|
|
338
|
-
* @param {*}
|
|
339
|
-
* @returns {
|
|
340
|
-
*/
|
|
341
|
-
function deepCompare(x,
|
|
342
|
-
let
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
//
|
|
347
|
-
if (isNaN(
|
|
341
|
+
* @param {*} args 数据2
|
|
342
|
+
* @returns {boolean} 返回对比结果
|
|
343
|
+
*/
|
|
344
|
+
function deepCompare(x, ...args) {
|
|
345
|
+
let leftChain = [];
|
|
346
|
+
let rightChain = [];
|
|
347
|
+
// 核心对比函数(添加严格类型标注)
|
|
348
|
+
const compare2Objects = (xObj, yObj) => {
|
|
349
|
+
// 1. 处理 NaN 特殊场景(NaN === NaN 返回 false,需单独判断)
|
|
350
|
+
if (Number.isNaN(xObj) && Number.isNaN(yObj)) {
|
|
348
351
|
return true;
|
|
349
352
|
}
|
|
350
|
-
//
|
|
351
|
-
|
|
352
|
-
// Especially useful on the step where we compare prototypes
|
|
353
|
-
if (x === y) {
|
|
353
|
+
// 2. 原始类型/引用同一对象 直接对比
|
|
354
|
+
if (xObj === yObj) {
|
|
354
355
|
return true;
|
|
355
356
|
}
|
|
356
|
-
//
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
(
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
357
|
+
// 3. 特殊内置对象对比(函数/日期/正则/包装对象)
|
|
358
|
+
const typeOfX = typeof xObj;
|
|
359
|
+
const typeOfY = typeof yObj;
|
|
360
|
+
// 函数对比:通过 toString 比较内容
|
|
361
|
+
if (typeOfX === "function" && typeOfY === "function") {
|
|
362
|
+
return xObj.toString() === yObj.toString();
|
|
363
|
+
}
|
|
364
|
+
// 日期对象对比:时间戳一致则相等
|
|
365
|
+
if (xObj instanceof Date && yObj instanceof Date) {
|
|
366
|
+
return xObj.getTime() === yObj.getTime();
|
|
365
367
|
}
|
|
366
|
-
//
|
|
367
|
-
if (
|
|
368
|
+
// 正则对象对比:源文本+标志位一致则相等
|
|
369
|
+
if (xObj instanceof RegExp && yObj instanceof RegExp) {
|
|
370
|
+
return xObj.source === yObj.source && xObj.flags === yObj.flags;
|
|
371
|
+
}
|
|
372
|
+
// 字符串/数字包装对象对比
|
|
373
|
+
if ((xObj instanceof String && yObj instanceof String) || (xObj instanceof Number && yObj instanceof Number)) {
|
|
374
|
+
return xObj.toString() === yObj.toString();
|
|
375
|
+
}
|
|
376
|
+
// 4. 非对象类型(排除上述特殊类型后)直接返回 false
|
|
377
|
+
if (!(xObj instanceof Object && yObj instanceof Object)) {
|
|
368
378
|
return false;
|
|
369
379
|
}
|
|
370
|
-
|
|
380
|
+
// 5. 原型链/构造函数校验
|
|
381
|
+
if (xObj.isPrototypeOf(yObj) || yObj.isPrototypeOf(xObj)) {
|
|
371
382
|
return false;
|
|
372
383
|
}
|
|
373
|
-
if (
|
|
384
|
+
if (xObj.constructor !== yObj.constructor) {
|
|
374
385
|
return false;
|
|
375
386
|
}
|
|
376
|
-
if (
|
|
387
|
+
if (xObj.prototype !== yObj.prototype) {
|
|
377
388
|
return false;
|
|
378
389
|
}
|
|
379
|
-
//
|
|
380
|
-
if (leftChain.
|
|
390
|
+
// 6. 循环引用检测(避免无限递归)
|
|
391
|
+
if (leftChain.includes(xObj) || rightChain.includes(yObj)) {
|
|
381
392
|
return false;
|
|
382
393
|
}
|
|
383
|
-
//
|
|
384
|
-
|
|
385
|
-
|
|
394
|
+
// 7. 遍历对象属性,对比键存在性和类型
|
|
395
|
+
const xObjKeys = Object.keys(xObj);
|
|
396
|
+
const yObjKeys = Object.keys(yObj);
|
|
397
|
+
// 先对比属性数量(数量不同直接不相等)
|
|
398
|
+
if (xObjKeys.length !== yObjKeys.length) {
|
|
399
|
+
return false;
|
|
400
|
+
}
|
|
401
|
+
// 遍历所有属性,校验存在性、类型、值
|
|
402
|
+
for (const p of yObjKeys) {
|
|
403
|
+
if (Object.prototype.hasOwnProperty.call(xObj, p) !== Object.prototype.hasOwnProperty.call(yObj, p)) {
|
|
386
404
|
return false;
|
|
387
405
|
}
|
|
388
|
-
|
|
406
|
+
const xProp = xObj[p];
|
|
407
|
+
const yProp = yObj[p];
|
|
408
|
+
if (typeof xProp !== typeof yProp) {
|
|
389
409
|
return false;
|
|
390
410
|
}
|
|
391
411
|
}
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
412
|
+
// 深度对比属性值
|
|
413
|
+
for (const p of xObjKeys) {
|
|
414
|
+
const xProp = xObj[p];
|
|
415
|
+
const yProp = yObj[p];
|
|
416
|
+
if (typeof xProp === "object" || typeof xProp === "function") {
|
|
417
|
+
leftChain.push(xObj);
|
|
418
|
+
rightChain.push(yObj);
|
|
419
|
+
if (!compare2Objects(xProp, yProp)) {
|
|
420
|
+
return false;
|
|
421
|
+
}
|
|
422
|
+
leftChain.pop();
|
|
423
|
+
rightChain.pop();
|
|
398
424
|
}
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
rightChain.push(y);
|
|
404
|
-
if (!compare2Objects(x[p], y[p])) {
|
|
405
|
-
return false;
|
|
406
|
-
}
|
|
407
|
-
leftChain.pop();
|
|
408
|
-
rightChain.pop();
|
|
409
|
-
break;
|
|
410
|
-
default:
|
|
411
|
-
if (x[p] !== y[p]) {
|
|
412
|
-
return false;
|
|
413
|
-
}
|
|
414
|
-
break;
|
|
425
|
+
else {
|
|
426
|
+
if (xProp !== yProp) {
|
|
427
|
+
return false;
|
|
428
|
+
}
|
|
415
429
|
}
|
|
416
430
|
}
|
|
417
431
|
return true;
|
|
432
|
+
};
|
|
433
|
+
// 边界处理:参数数量不足时的兜底
|
|
434
|
+
if (arguments.length < 2) {
|
|
435
|
+
console.warn("deepCompare 需要至少两个对比参数");
|
|
436
|
+
return true;
|
|
418
437
|
}
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
// throw "Need two or more arguments to compare";
|
|
422
|
-
}
|
|
423
|
-
for (i = 1, l = arguments.length; i < l; i++) {
|
|
438
|
+
// 遍历所有传入的参数(支持对比多个值)
|
|
439
|
+
for (const y of args) {
|
|
424
440
|
leftChain = [];
|
|
425
441
|
rightChain = [];
|
|
426
|
-
if (!compare2Objects(
|
|
442
|
+
if (!compare2Objects(x, y)) {
|
|
427
443
|
return false;
|
|
428
444
|
}
|
|
429
445
|
}
|
|
@@ -1,31 +1,36 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 根据身份证号码获取信息
|
|
3
3
|
* @description 能获取到 籍贯,出生日期,年龄,性别
|
|
4
|
-
* @param {
|
|
4
|
+
* @param {string} idCard 身份证号码,支持一代15位和二代18位
|
|
5
5
|
* @returns {Object} 返回身份证信息对象
|
|
6
6
|
*/
|
|
7
|
-
export function getInfoByIDCard(idCard: string):
|
|
7
|
+
export declare function getInfoByIDCard(idCard: string): {
|
|
8
|
+
province: string | undefined;
|
|
9
|
+
birthday: string | undefined;
|
|
10
|
+
age: number | undefined;
|
|
11
|
+
sex: string | undefined;
|
|
12
|
+
} | undefined;
|
|
8
13
|
/**
|
|
9
14
|
* 根据身份证号码获得生日
|
|
10
|
-
* @param {
|
|
11
|
-
* @returns {
|
|
15
|
+
* @param {string} idCard 身份证号码,支持一代15位和二代18位
|
|
16
|
+
* @returns {string} 返回生日
|
|
12
17
|
*/
|
|
13
|
-
export function getBirthdayByIDCard(idCard: string): string;
|
|
18
|
+
export declare function getBirthdayByIDCard(idCard: string): string | undefined;
|
|
14
19
|
/**
|
|
15
20
|
* 根据身份证号码获得年龄
|
|
16
|
-
* @param {
|
|
17
|
-
* @returns {
|
|
21
|
+
* @param {string} idCard 身份证号码,支持一代15位和二代18位
|
|
22
|
+
* @returns {number} 返回年龄
|
|
18
23
|
*/
|
|
19
|
-
export function getAgeByIDCard(idCard: string): number;
|
|
24
|
+
export declare function getAgeByIDCard(idCard: string): number | undefined;
|
|
20
25
|
/**
|
|
21
26
|
* 根据身份证号码获得性别
|
|
22
|
-
* @param {
|
|
23
|
-
* @returns {
|
|
27
|
+
* @param {string} idCard 身份证号码,支持一代15位和二代18位
|
|
28
|
+
* @returns {string} 返回性别
|
|
24
29
|
*/
|
|
25
|
-
export function getSexByIDCard(idCard: string): string;
|
|
30
|
+
export declare function getSexByIDCard(idCard: string): string | undefined;
|
|
26
31
|
/**
|
|
27
32
|
* 根据身份证号码获得省份
|
|
28
|
-
* @param {
|
|
29
|
-
* @returns {
|
|
33
|
+
* @param {string} idCard 身份证号码,支持一代15位和二代18位
|
|
34
|
+
* @returns {string} 返回省份
|
|
30
35
|
*/
|
|
31
|
-
export function getProvinceByIDCard(idCard: string): string;
|
|
36
|
+
export declare function getProvinceByIDCard(idCard: string): string | undefined;
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { isNull } from '../validate/index.mjs';
|
|
2
|
-
import { getAge,
|
|
2
|
+
import { getAge, toDate } from '../date/index.mjs';
|
|
3
3
|
import { ID_CARD } from '../constants/id-card.mjs';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* @module 身份证号码
|
|
7
|
+
*/
|
|
5
8
|
/**
|
|
6
9
|
* 根据身份证号码获取信息
|
|
7
10
|
* @description 能获取到 籍贯,出生日期,年龄,性别
|
|
8
|
-
* @param {
|
|
11
|
+
* @param {string} idCard 身份证号码,支持一代15位和二代18位
|
|
9
12
|
* @returns {Object} 返回身份证信息对象
|
|
10
13
|
*/
|
|
11
14
|
function getInfoByIDCard(idCard) {
|
|
@@ -24,8 +27,8 @@ function getInfoByIDCard(idCard) {
|
|
|
24
27
|
}
|
|
25
28
|
/**
|
|
26
29
|
* 根据身份证号码获得生日
|
|
27
|
-
* @param {
|
|
28
|
-
* @returns {
|
|
30
|
+
* @param {string} idCard 身份证号码,支持一代15位和二代18位
|
|
31
|
+
* @returns {string} 返回生日
|
|
29
32
|
*/
|
|
30
33
|
function getBirthdayByIDCard(idCard) {
|
|
31
34
|
if (isNull(idCard))
|
|
@@ -41,23 +44,25 @@ function getBirthdayByIDCard(idCard) {
|
|
|
41
44
|
}
|
|
42
45
|
/**
|
|
43
46
|
* 根据身份证号码获得年龄
|
|
44
|
-
* @param {
|
|
45
|
-
* @returns {
|
|
47
|
+
* @param {string} idCard 身份证号码,支持一代15位和二代18位
|
|
48
|
+
* @returns {number} 返回年龄
|
|
46
49
|
*/
|
|
47
50
|
function getAgeByIDCard(idCard) {
|
|
48
51
|
if (isNull(idCard))
|
|
49
52
|
return;
|
|
50
|
-
|
|
51
|
-
|
|
53
|
+
const birthday = getBirthdayByIDCard(idCard);
|
|
54
|
+
if (birthday) {
|
|
55
|
+
return getAge(toDate(String(birthday)));
|
|
56
|
+
}
|
|
52
57
|
}
|
|
53
58
|
/**
|
|
54
59
|
* 根据身份证号码获得性别
|
|
55
|
-
* @param {
|
|
56
|
-
* @returns {
|
|
60
|
+
* @param {string} idCard 身份证号码,支持一代15位和二代18位
|
|
61
|
+
* @returns {string} 返回性别
|
|
57
62
|
*/
|
|
58
63
|
function getSexByIDCard(idCard) {
|
|
59
64
|
if (isNull(idCard))
|
|
60
|
-
return;
|
|
65
|
+
return undefined;
|
|
61
66
|
// 15位身份证
|
|
62
67
|
if (idCard.length === 15) {
|
|
63
68
|
return Number(idCard.substring(14)) % 2 === 0 ? ID_CARD.SEX.WOMAN : ID_CARD.SEX.MAN;
|
|
@@ -69,13 +74,16 @@ function getSexByIDCard(idCard) {
|
|
|
69
74
|
}
|
|
70
75
|
/**
|
|
71
76
|
* 根据身份证号码获得省份
|
|
72
|
-
* @param {
|
|
73
|
-
* @returns {
|
|
77
|
+
* @param {string} idCard 身份证号码,支持一代15位和二代18位
|
|
78
|
+
* @returns {string} 返回省份
|
|
74
79
|
*/
|
|
75
80
|
function getProvinceByIDCard(idCard) {
|
|
76
81
|
if (isNull(idCard))
|
|
77
82
|
return;
|
|
78
|
-
|
|
83
|
+
const prefix = idCard.substring(0, 2);
|
|
84
|
+
if (prefix) {
|
|
85
|
+
return ID_CARD.PROVINCE[prefix];
|
|
86
|
+
}
|
|
79
87
|
}
|
|
80
88
|
|
|
81
89
|
export { getAgeByIDCard, getBirthdayByIDCard, getInfoByIDCard, getProvinceByIDCard, getSexByIDCard };
|