@ivujs/i-utils 1.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/LICENSE +21 -0
- package/README.md +149 -0
- package/dist/cjs/ID-card/index.cjs +122 -0
- package/dist/cjs/array/index.cjs +465 -0
- package/dist/cjs/clipboard/index.cjs +135 -0
- package/dist/cjs/color/index.cjs +210 -0
- package/dist/cjs/constants/date.cjs +186 -0
- package/dist/cjs/constants/lang.cjs +13 -0
- package/dist/cjs/constants/math.cjs +13 -0
- package/dist/cjs/constants/regexp.cjs +57 -0
- package/dist/cjs/constants/sort.cjs +15 -0
- package/dist/cjs/cookie/index.cjs +71 -0
- package/dist/cjs/crypto/aes/aes.cjs +533 -0
- package/dist/cjs/crypto/aes/index.cjs +28 -0
- package/dist/cjs/crypto/base32/base32.cjs +385 -0
- package/dist/cjs/crypto/base32/index.cjs +44 -0
- package/dist/cjs/crypto/base64/base64.cjs +433 -0
- package/dist/cjs/crypto/base64/index.cjs +64 -0
- package/dist/cjs/crypto/des/des.cjs +1054 -0
- package/dist/cjs/crypto/des/index.cjs +30 -0
- package/dist/cjs/crypto/md5/index.cjs +25 -0
- package/dist/cjs/crypto/md5/md5.cjs +944 -0
- package/dist/cjs/crypto/sha/sha1/index.cjs +25 -0
- package/dist/cjs/crypto/sha/sha1/sha1.cjs +602 -0
- package/dist/cjs/crypto/sha/sha256/index.cjs +46 -0
- package/dist/cjs/crypto/sha/sha256/sha256.cjs +654 -0
- package/dist/cjs/crypto/sha/sha3/index.cjs +44 -0
- package/dist/cjs/crypto/sha/sha3/sha3.cjs +747 -0
- package/dist/cjs/crypto/sha/sha512/index.cjs +88 -0
- package/dist/cjs/crypto/sha/sha512/sha512.cjs +1186 -0
- package/dist/cjs/crypto/sm/lib/asn1.cjs +167 -0
- package/dist/cjs/crypto/sm/lib/ec.cjs +352 -0
- package/dist/cjs/crypto/sm/lib/jsbn.cjs +1633 -0
- package/dist/cjs/crypto/sm/lib/sm3.cjs +173 -0
- package/dist/cjs/crypto/sm/lib/utils.cjs +198 -0
- package/dist/cjs/crypto/sm/sm2/index.cjs +122 -0
- package/dist/cjs/crypto/sm/sm2/sm2.cjs +269 -0
- package/dist/cjs/crypto/sm/sm3/index.cjs +15 -0
- package/dist/cjs/crypto/sm/sm3/sm3.cjs +103 -0
- package/dist/cjs/crypto/sm/sm4/index.cjs +28 -0
- package/dist/cjs/crypto/sm/sm4/sm4.cjs +362 -0
- package/dist/cjs/crypto/tea/index.cjs +26 -0
- package/dist/cjs/crypto/tea/tea.cjs +215 -0
- package/dist/cjs/date/index.cjs +1349 -0
- package/dist/cjs/desensitized/index.cjs +74 -0
- package/dist/cjs/device/index.cjs +159 -0
- package/dist/cjs/dom/index.cjs +176 -0
- package/dist/cjs/file/index.cjs +339 -0
- package/dist/cjs/function/index.cjs +67 -0
- package/dist/cjs/id/index.cjs +46 -0
- package/dist/cjs/index.cjs +399 -0
- package/dist/cjs/keycode/index.cjs +142 -0
- package/dist/cjs/math/index.cjs +284 -0
- package/dist/cjs/number/index.cjs +14 -0
- package/dist/cjs/object/index.cjs +216 -0
- package/dist/cjs/pagination/index.cjs +140 -0
- package/dist/cjs/random/index.cjs +25 -0
- package/dist/cjs/regexp/index.cjs +109 -0
- package/dist/cjs/storage/index.cjs +11 -0
- package/dist/cjs/storage/localStorage.cjs +40 -0
- package/dist/cjs/storage/sessionStorage.cjs +40 -0
- package/dist/cjs/string/index.cjs +338 -0
- package/dist/cjs/url/index.cjs +279 -0
- package/dist/cjs/validate/index.cjs +487 -0
- package/dist/cjs/weapp/index.cjs +151 -0
- package/dist/es/ID-card/index.mjs +116 -0
- package/dist/es/array/index.mjs +437 -0
- package/dist/es/clipboard/index.mjs +129 -0
- package/dist/es/color/index.mjs +200 -0
- package/dist/es/constants/date.mjs +184 -0
- package/dist/es/constants/lang.mjs +11 -0
- package/dist/es/constants/math.mjs +11 -0
- package/dist/es/constants/regexp.mjs +55 -0
- package/dist/es/constants/sort.mjs +13 -0
- package/dist/es/cookie/index.mjs +65 -0
- package/dist/es/crypto/aes/aes.mjs +529 -0
- package/dist/es/crypto/aes/index.mjs +25 -0
- package/dist/es/crypto/base32/base32.mjs +381 -0
- package/dist/es/crypto/base32/index.mjs +39 -0
- package/dist/es/crypto/base64/base64.mjs +427 -0
- package/dist/es/crypto/base64/index.mjs +57 -0
- package/dist/es/crypto/des/des.mjs +1050 -0
- package/dist/es/crypto/des/index.mjs +27 -0
- package/dist/es/crypto/md5/index.mjs +22 -0
- package/dist/es/crypto/md5/md5.mjs +941 -0
- package/dist/es/crypto/sha/sha1/index.mjs +22 -0
- package/dist/es/crypto/sha/sha1/sha1.mjs +599 -0
- package/dist/es/crypto/sha/sha256/index.mjs +41 -0
- package/dist/es/crypto/sha/sha256/sha256.mjs +649 -0
- package/dist/es/crypto/sha/sha3/index.mjs +39 -0
- package/dist/es/crypto/sha/sha3/sha3.mjs +742 -0
- package/dist/es/crypto/sha/sha512/index.mjs +79 -0
- package/dist/es/crypto/sha/sha512/sha512.mjs +1177 -0
- package/dist/es/crypto/sm/lib/asn1.mjs +164 -0
- package/dist/es/crypto/sm/lib/ec.mjs +349 -0
- package/dist/es/crypto/sm/lib/jsbn.mjs +1630 -0
- package/dist/es/crypto/sm/lib/sm3.mjs +170 -0
- package/dist/es/crypto/sm/lib/utils.mjs +186 -0
- package/dist/es/crypto/sm/sm2/index.mjs +111 -0
- package/dist/es/crypto/sm/sm2/sm2.mjs +258 -0
- package/dist/es/crypto/sm/sm3/index.mjs +13 -0
- package/dist/es/crypto/sm/sm3/sm3.mjs +99 -0
- package/dist/es/crypto/sm/sm4/index.mjs +25 -0
- package/dist/es/crypto/sm/sm4/sm4.mjs +359 -0
- package/dist/es/crypto/tea/index.mjs +23 -0
- package/dist/es/crypto/tea/tea.mjs +211 -0
- package/dist/es/date/index.mjs +1262 -0
- package/dist/es/desensitized/index.mjs +69 -0
- package/dist/es/device/index.mjs +145 -0
- package/dist/es/dom/index.mjs +164 -0
- package/dist/es/file/index.mjs +323 -0
- package/dist/es/function/index.mjs +63 -0
- package/dist/es/id/index.mjs +43 -0
- package/dist/es/index.mjs +59 -0
- package/dist/es/keycode/index.mjs +139 -0
- package/dist/es/math/index.mjs +274 -0
- package/dist/es/number/index.mjs +12 -0
- package/dist/es/object/index.mjs +203 -0
- package/dist/es/pagination/index.mjs +134 -0
- package/dist/es/random/index.mjs +22 -0
- package/dist/es/regexp/index.mjs +98 -0
- package/dist/es/storage/index.mjs +9 -0
- package/dist/es/storage/localStorage.mjs +35 -0
- package/dist/es/storage/sessionStorage.mjs +35 -0
- package/dist/es/string/index.mjs +321 -0
- package/dist/es/url/index.mjs +261 -0
- package/dist/es/validate/index.mjs +451 -0
- package/dist/es/weapp/index.mjs +140 -0
- package/dist/lib/index.full.esm.js +15825 -0
- package/dist/lib/index.full.esm.min.js +58 -0
- package/dist/lib/index.full.umd.js +16179 -0
- package/package.json +54 -0
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* rgb颜色转hex
|
|
5
|
+
* @param {String} rgb rgb颜色字符串
|
|
6
|
+
* @returns {String} 返回生成的hex颜色
|
|
7
|
+
*/
|
|
8
|
+
function rgbToHex(rgb) {
|
|
9
|
+
let arr = rgb.split(",");
|
|
10
|
+
let r = parseInt(arr[0].split("(")[1]);
|
|
11
|
+
let g = parseInt(arr[1]);
|
|
12
|
+
let b = parseInt(arr[2].split(")")[0]);
|
|
13
|
+
return "#" + _hex(r) + _hex(g) + _hex(b);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* rgba颜色转hex
|
|
18
|
+
* @param {String} rgba rgba颜色字符串
|
|
19
|
+
* @returns {String} 返回生成的hex颜色
|
|
20
|
+
*/
|
|
21
|
+
function rgbaToHex(rgba) {
|
|
22
|
+
let arr = rgba.split(",");
|
|
23
|
+
let r = parseInt(arr[0].split("(")[1]);
|
|
24
|
+
let g = parseInt(arr[1]);
|
|
25
|
+
let b = parseInt(arr[2]);
|
|
26
|
+
let a = parseFloat(arr[3].split(")")[0]);
|
|
27
|
+
|
|
28
|
+
return `#${_hex(Math.round(a * 256 - 1))}${_hex(r)}${_hex(g)}${_hex(b)}`;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* rgba颜色转hsl
|
|
33
|
+
* @param {String} rgba rgb颜色字符串
|
|
34
|
+
* @returns {String} 返回生成的hsl颜色
|
|
35
|
+
*/
|
|
36
|
+
function rgbaToHsl(rgba) {
|
|
37
|
+
let arr = rgba.split(",");
|
|
38
|
+
let r = parseInt(arr[0].split("(")[1]) / 255;
|
|
39
|
+
let g = parseInt(arr[1]) / 255;
|
|
40
|
+
let b = parseInt(arr[2]) / 255;
|
|
41
|
+
let a = parseFloat(arr[3] && arr[3].split(")")[0]);
|
|
42
|
+
let max = Math.max(r, g, b),
|
|
43
|
+
min = Math.min(r, g, b);
|
|
44
|
+
let h,
|
|
45
|
+
s,
|
|
46
|
+
l = (max + min) / 2;
|
|
47
|
+
if (max === min) {
|
|
48
|
+
h = s = 0;
|
|
49
|
+
} else {
|
|
50
|
+
let d = max - min;
|
|
51
|
+
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
|
52
|
+
switch (max) {
|
|
53
|
+
case r:
|
|
54
|
+
h = (g - b) / d + (g < b ? 6 : 0);
|
|
55
|
+
break;
|
|
56
|
+
case g:
|
|
57
|
+
h = (b - r) / d + 2;
|
|
58
|
+
break;
|
|
59
|
+
case b:
|
|
60
|
+
h = (r - g) / d + 4;
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
h /= 6;
|
|
64
|
+
}
|
|
65
|
+
if (a) {
|
|
66
|
+
return `hsla(${Math.round(h * 360)},${Math.round(s * 100)}%,${Math.round(l * 100)}%,${a})`;
|
|
67
|
+
}
|
|
68
|
+
return `hsl(${Math.round(h * 360)},${Math.round(s * 100)}%,${Math.round(l * 100)}%)`;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* hex颜色转rgb
|
|
73
|
+
* @param {String} hex hex颜色字符串
|
|
74
|
+
* @returns {String} 返回生成的rgb颜色
|
|
75
|
+
*/
|
|
76
|
+
function hexToRgb(hex) {
|
|
77
|
+
let color = {};
|
|
78
|
+
let rgx = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
|
|
79
|
+
let hexStr = hex.replace(rgx, function (m, r, g, b) {
|
|
80
|
+
return r + r + g + g + b + b;
|
|
81
|
+
});
|
|
82
|
+
let rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hexStr);
|
|
83
|
+
color.r = parseInt(rgb[1], 16);
|
|
84
|
+
color.g = parseInt(rgb[2], 16);
|
|
85
|
+
color.b = parseInt(rgb[3], 16);
|
|
86
|
+
return `rgb(${color.r},${color.g},${color.b})`;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* hex颜色转rgba
|
|
91
|
+
* @param {String} hex hex颜色字符串
|
|
92
|
+
* @param {Number} opacity 透明度
|
|
93
|
+
* @returns {String} 返回生成的rgba颜色
|
|
94
|
+
*/
|
|
95
|
+
function hexToRgba(hex, opacity = 1) {
|
|
96
|
+
let color = {};
|
|
97
|
+
let rgx = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
|
|
98
|
+
let hexStr = hex.replace(rgx, function (m, r, g, b) {
|
|
99
|
+
return r + r + g + g + b + b;
|
|
100
|
+
});
|
|
101
|
+
let rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hexStr);
|
|
102
|
+
color.r = parseInt(rgb[1], 16);
|
|
103
|
+
color.g = parseInt(rgb[2], 16);
|
|
104
|
+
color.b = parseInt(rgb[3], 16);
|
|
105
|
+
color.o = opacity;
|
|
106
|
+
return `rgba(${color.r},${color.g},${color.b},${color.o})`;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* hex颜色转hsl
|
|
111
|
+
* @param {String} hex hex颜色字符串
|
|
112
|
+
* @returns {String} 返回生成的hsl颜色
|
|
113
|
+
*/
|
|
114
|
+
function hexToHsl(hex) {
|
|
115
|
+
// 先解析为rgb
|
|
116
|
+
let rgx = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
|
|
117
|
+
let hexStr = hex.replace(rgx, function (m, r, g, b) {
|
|
118
|
+
return r + r + g + g + b + b;
|
|
119
|
+
});
|
|
120
|
+
let rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hexStr);
|
|
121
|
+
|
|
122
|
+
// 再组装为hsl格式
|
|
123
|
+
let r = parseInt(rgb[1], 16) / 255;
|
|
124
|
+
let g = parseInt(rgb[2], 16) / 255;
|
|
125
|
+
let b = parseInt(rgb[3], 16) / 255;
|
|
126
|
+
let max = Math.max(r, g, b),
|
|
127
|
+
min = Math.min(r, g, b);
|
|
128
|
+
let h,
|
|
129
|
+
s,
|
|
130
|
+
l = (max + min) / 2;
|
|
131
|
+
if (max === min) {
|
|
132
|
+
h = s = 0;
|
|
133
|
+
} else {
|
|
134
|
+
let d = max - min;
|
|
135
|
+
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
|
136
|
+
switch (max) {
|
|
137
|
+
case r:
|
|
138
|
+
h = (g - b) / d + (g < b ? 6 : 0);
|
|
139
|
+
break;
|
|
140
|
+
case g:
|
|
141
|
+
h = (b - r) / d + 2;
|
|
142
|
+
break;
|
|
143
|
+
case b:
|
|
144
|
+
h = (r - g) / d + 4;
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
h /= 6;
|
|
148
|
+
}
|
|
149
|
+
return `hsl(${Math.round(h * 360)},${Math.round(s * 100)}%,${Math.round(l * 100)}%)`;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* 随机生成hex颜色
|
|
154
|
+
* @returns {String} 返回生成的十六进制颜色
|
|
155
|
+
*/
|
|
156
|
+
function getRandomHex() {
|
|
157
|
+
return (
|
|
158
|
+
"#" +
|
|
159
|
+
(function (h) {
|
|
160
|
+
return new Array(7 - h.length).join("0") + h;
|
|
161
|
+
})(((Math.random() * 0x1000000) << 0).toString(16))
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* 随机生成rgb颜色
|
|
167
|
+
* @returns {String} 返回生成的 rgb 颜色
|
|
168
|
+
*/
|
|
169
|
+
function getRandomRgb() {
|
|
170
|
+
let r = Math.floor(Math.random() * 256);
|
|
171
|
+
let g = Math.floor(Math.random() * 256);
|
|
172
|
+
let b = Math.floor(Math.random() * 256);
|
|
173
|
+
return `rgb(${r},${g},${b})`;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* 随机生成rgba颜色
|
|
178
|
+
* @returns {String} 返回生成的 rgba 颜色
|
|
179
|
+
*/
|
|
180
|
+
function getRandomRgba() {
|
|
181
|
+
let r = Math.floor(Math.random() * 256);
|
|
182
|
+
let g = Math.floor(Math.random() * 256);
|
|
183
|
+
let b = Math.floor(Math.random() * 256);
|
|
184
|
+
let a = Number(Math.random()).toFixed(2);
|
|
185
|
+
return `rgba(${r},${g},${b},${a})`;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// 内部函数
|
|
189
|
+
/**
|
|
190
|
+
* 颜色值转换
|
|
191
|
+
* @param {Number} num 转换的值
|
|
192
|
+
* @returns
|
|
193
|
+
*/
|
|
194
|
+
function _hex(num) {
|
|
195
|
+
if (num > 255) {
|
|
196
|
+
throw "'" + num + "'' is greater than 255(0xff);";
|
|
197
|
+
}
|
|
198
|
+
let str = Number(num).toString(16);
|
|
199
|
+
return ("0" + str).slice(-2);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
exports.getRandomHex = getRandomHex;
|
|
203
|
+
exports.getRandomRgb = getRandomRgb;
|
|
204
|
+
exports.getRandomRgba = getRandomRgba;
|
|
205
|
+
exports.hexToHsl = hexToHsl;
|
|
206
|
+
exports.hexToRgb = hexToRgb;
|
|
207
|
+
exports.hexToRgba = hexToRgba;
|
|
208
|
+
exports.rgbToHex = rgbToHex;
|
|
209
|
+
exports.rgbaToHex = rgbaToHex;
|
|
210
|
+
exports.rgbaToHsl = rgbaToHsl;
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 日期常量
|
|
5
|
+
*/
|
|
6
|
+
const DATE = {
|
|
7
|
+
// 上午和下午
|
|
8
|
+
AM_PM: {
|
|
9
|
+
zh: {
|
|
10
|
+
AM: "上午",
|
|
11
|
+
PM: "下午",
|
|
12
|
+
},
|
|
13
|
+
en: {
|
|
14
|
+
AM: "AM",
|
|
15
|
+
PM: "PM",
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
// 周
|
|
19
|
+
WEEK: {
|
|
20
|
+
zh: {
|
|
21
|
+
FULL: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
|
|
22
|
+
SHORT: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"],
|
|
23
|
+
MINI: ["日", "一", "二", "三", "四", "五", "六"],
|
|
24
|
+
},
|
|
25
|
+
en: {
|
|
26
|
+
FULL: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
|
|
27
|
+
SHORT: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
|
|
28
|
+
MINI: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
// 月
|
|
33
|
+
MONTH: {
|
|
34
|
+
zh: {
|
|
35
|
+
FULL: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
|
|
36
|
+
SHORT: ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"],
|
|
37
|
+
},
|
|
38
|
+
en: {
|
|
39
|
+
FULL: [
|
|
40
|
+
"January",
|
|
41
|
+
"February",
|
|
42
|
+
"March",
|
|
43
|
+
"April",
|
|
44
|
+
"May",
|
|
45
|
+
"June",
|
|
46
|
+
"July",
|
|
47
|
+
"August",
|
|
48
|
+
"September",
|
|
49
|
+
"October",
|
|
50
|
+
"November",
|
|
51
|
+
"December",
|
|
52
|
+
],
|
|
53
|
+
SHORT: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
// 季度
|
|
57
|
+
QUARTER: {
|
|
58
|
+
zh: {
|
|
59
|
+
FULL: ["第一季度", "第二季度", "第三季度", "第四季度"],
|
|
60
|
+
SHORT: ["一季度", "二季度", "三季度", "四季度"],
|
|
61
|
+
MINI: ["一", "二", "三", "四"],
|
|
62
|
+
},
|
|
63
|
+
en: {
|
|
64
|
+
FULL: ["quarter 1st", "quarter 2nd", "quarter 3rd", "quarter 4th"],
|
|
65
|
+
SHORT: ["Q1th", "Q2nd", "Q3rd", "Q4th"],
|
|
66
|
+
MINI: ["Q1", "Q2", "Q3", "Q4"],
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
|
|
70
|
+
// 已过日期类型
|
|
71
|
+
OVER_TIME: {
|
|
72
|
+
zh: {
|
|
73
|
+
YEAR: "年",
|
|
74
|
+
MONTH: "月",
|
|
75
|
+
DATE: "日",
|
|
76
|
+
HOUR: "时",
|
|
77
|
+
MINUTE: "分",
|
|
78
|
+
SECOND: "秒",
|
|
79
|
+
MILLISECOND: "毫秒",
|
|
80
|
+
DAY: "天",
|
|
81
|
+
QUARTER: "季度",
|
|
82
|
+
},
|
|
83
|
+
en: {
|
|
84
|
+
YEAR: "year",
|
|
85
|
+
MONTH: "month",
|
|
86
|
+
DATE: "date",
|
|
87
|
+
HOUR: "hour",
|
|
88
|
+
MINUTE: "minute",
|
|
89
|
+
SECOND: "second",
|
|
90
|
+
MILLISECOND: "millisecond",
|
|
91
|
+
DAY: "day",
|
|
92
|
+
QUARTER: "quarter",
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
|
|
96
|
+
// 时间节点
|
|
97
|
+
PASS_TIME: {
|
|
98
|
+
zh: {
|
|
99
|
+
YEAR: "年前",
|
|
100
|
+
MONTH: "个月前",
|
|
101
|
+
DAY: "天前",
|
|
102
|
+
BEFORE_YESTERDAY: "前天",
|
|
103
|
+
YESTERDAY: "昨天",
|
|
104
|
+
TODAY: "今天",
|
|
105
|
+
HOUR: "小时前",
|
|
106
|
+
MINUTE: "分钟前",
|
|
107
|
+
JUST: "刚刚",
|
|
108
|
+
},
|
|
109
|
+
en: {
|
|
110
|
+
YEAR: " year ago",
|
|
111
|
+
MONTH: " month ago",
|
|
112
|
+
DAY: " day ago",
|
|
113
|
+
BEFORE_YESTERDAY: "before yesterday",
|
|
114
|
+
YESTERDAY: " yesterday",
|
|
115
|
+
TODAY: " today",
|
|
116
|
+
HOUR: " hour ago",
|
|
117
|
+
MINUTE: " minute ago",
|
|
118
|
+
JUST: " just",
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
|
|
122
|
+
// 节假日
|
|
123
|
+
HOLIDAY: {
|
|
124
|
+
zh: ["元旦", "春节", "清明节", "劳动节", "端午节", "中秋节", "国庆节"],
|
|
125
|
+
en: [
|
|
126
|
+
"New Year‘s Day",
|
|
127
|
+
"Spring Festival",
|
|
128
|
+
"Tomb Sweeping Day",
|
|
129
|
+
"Labor Day",
|
|
130
|
+
"Dragon Boat Festival",
|
|
131
|
+
"Mid-Autumn Day",
|
|
132
|
+
"National Day",
|
|
133
|
+
],
|
|
134
|
+
},
|
|
135
|
+
|
|
136
|
+
// 星座
|
|
137
|
+
|
|
138
|
+
ZODIAC: {
|
|
139
|
+
zh: [
|
|
140
|
+
"摩羯座",
|
|
141
|
+
"水瓶座",
|
|
142
|
+
"双鱼座",
|
|
143
|
+
"白羊座",
|
|
144
|
+
"金牛座",
|
|
145
|
+
"双子座",
|
|
146
|
+
"巨蟹座",
|
|
147
|
+
"狮子座",
|
|
148
|
+
"处女座",
|
|
149
|
+
"天秤座",
|
|
150
|
+
"天蝎座",
|
|
151
|
+
"射手座",
|
|
152
|
+
],
|
|
153
|
+
en: [
|
|
154
|
+
"Capricorn",
|
|
155
|
+
"Aquarius",
|
|
156
|
+
"Pisces",
|
|
157
|
+
"Aries",
|
|
158
|
+
"Taurus",
|
|
159
|
+
"Gemini",
|
|
160
|
+
"Cancer",
|
|
161
|
+
"Leo",
|
|
162
|
+
"Virgo",
|
|
163
|
+
"Libra",
|
|
164
|
+
"Scorpio",
|
|
165
|
+
"Sagittarius",
|
|
166
|
+
],
|
|
167
|
+
},
|
|
168
|
+
|
|
169
|
+
// 生肖
|
|
170
|
+
CHINESE_ZODIAC: {
|
|
171
|
+
zh: ["鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"],
|
|
172
|
+
en: ["Rat", "Ox", "Tiger", "Rabbit", "Dragon", "Snake", "Horse", "Goat", "Monkey", "Rooster", "Dog", "Pig"],
|
|
173
|
+
},
|
|
174
|
+
|
|
175
|
+
// 天干地支
|
|
176
|
+
HEAVENLY_STEMS: {
|
|
177
|
+
zh: ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"],
|
|
178
|
+
en: ["Jia", "Yi", "Bing", "Ding", "Wu", "Ji", "Geng", "Xin", "Ren", "Gui"],
|
|
179
|
+
},
|
|
180
|
+
EARTHLY_BRANCHES: {
|
|
181
|
+
zh: ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"],
|
|
182
|
+
en: ["Zi", "Chou", "Yin", "Mao", "Chen", "Si", "Wu", "Wei", "Shen", "You", "Xu", "Hai"],
|
|
183
|
+
},
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
exports.DATE = DATE;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 正则常量
|
|
5
|
+
*/
|
|
6
|
+
const REGEXP = {
|
|
7
|
+
// 中文汉字
|
|
8
|
+
CH: /^[\u4E00-\u9FA5]+$/,
|
|
9
|
+
// 英文字母
|
|
10
|
+
EN: /^[a-zA-Z]$/,
|
|
11
|
+
// 小写字母
|
|
12
|
+
LOWER_CASE: /^[a-z]+$/,
|
|
13
|
+
// 大写字母
|
|
14
|
+
UPPER_CASE: /^[A-Z]+$/,
|
|
15
|
+
// 中文姓名,2-16位
|
|
16
|
+
CH_NAME: /^[\u4e00-\u9fa5·]{2,16}$/,
|
|
17
|
+
// 英文姓名,0-20位
|
|
18
|
+
EN_NAME: /(^[a-zA-Z][a-zA-Z\s]{0,20}[a-zA-Z]$)/,
|
|
19
|
+
// 数字,包含正数和负数
|
|
20
|
+
NUMBER: /^([-+])?\d+(\.\d+)?$/,
|
|
21
|
+
// 整数,包含:0,正整数和负整数
|
|
22
|
+
INTEGER: /^(0|[1-9][0-9]*|-[1-9][0-9]*)$/,
|
|
23
|
+
// 小数,包含正小数和负小数
|
|
24
|
+
DECIMAL: /^\d+\.\d+$/,
|
|
25
|
+
// 正整数或者保留两位小数
|
|
26
|
+
INT_OR_FLOAT: /(^[1-9][0-9]*$)|(^[1-9][0-9]*\.[0-9]{1,2}$)|(^0\.[0-9]{1,2}$)|(^0$)/,
|
|
27
|
+
// 手机号码,支持+86
|
|
28
|
+
MOBILE: /^(?:(?:\+|00)86)?1[1-9]\d{9}$/,
|
|
29
|
+
// 固定电话号码,比如:0755-1111111
|
|
30
|
+
PHONE: /^(?:(?:\d{3}-)?\d{8}|^(?:\d{4}-)?\d{7,8})(?:-\d+)?$/,
|
|
31
|
+
// 邮箱
|
|
32
|
+
EMAIL: /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/,
|
|
33
|
+
// 一代15位和二代18位身份证
|
|
34
|
+
ID_CARD:
|
|
35
|
+
/(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0[1-9]|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/,
|
|
36
|
+
// 仅校验一代15位身份证
|
|
37
|
+
ID_CARD15: /(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)/,
|
|
38
|
+
// 仅校验二代18位身份证
|
|
39
|
+
ID_CARD18: /(^\d{6}(18|19|20)\d{2}(0[1-9]|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/,
|
|
40
|
+
// 银行卡号
|
|
41
|
+
BANK_CARD: /^[1-9]\d{9,29}$/,
|
|
42
|
+
// 邮政编码
|
|
43
|
+
POST_CODE: /^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\d{4}$/,
|
|
44
|
+
// url地址,可以获取到主机地址、主机名、端口号、协议、查询参数、hash等信息
|
|
45
|
+
URL: /^(?:(ftp|https?|ftps):\/\/)?((?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+(?:[a-zA-Z]{2,6})?)?(?::(\d+))?(?:\/([^\?#]*))?(?:\?([^#]*))?(?:#(.*))?$/,
|
|
46
|
+
// ip地址
|
|
47
|
+
IP: /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,
|
|
48
|
+
// IPv6地址
|
|
49
|
+
IP6: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,
|
|
50
|
+
// 是外链,http,https,mail,tel电话
|
|
51
|
+
EXTERNAL: /^(http?:|https?:|mailto:|tel:)/,
|
|
52
|
+
// 是函数字符串,包括async异步函数和箭头函数
|
|
53
|
+
FUNCTION_STR:
|
|
54
|
+
/^(function\([\w,\s]*\)\s*{[\s\S]*})|^\(\s*([\w,\s]*)\s*\)\s*=>\s*{[\s\S]*}|^(async\s*function\s*\([\w,\s]*\)\s*{[\s\S]*}\)\s*{[\s\S]*})|^(async\(\s*([\w,\s]*)\s*\)\s*=>\s*{[\s\S]*})$/,
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
exports.REGEXP = REGEXP;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('../validate/index.cjs');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 浏览器是否支持 Cookie
|
|
7
|
+
* @returns {Boolean} 返回true和false
|
|
8
|
+
*/
|
|
9
|
+
function isSupportCookie() {
|
|
10
|
+
return window.navigator.cookieEnabled;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/* cookie存储 */
|
|
14
|
+
/**
|
|
15
|
+
* 通过name获取cookie
|
|
16
|
+
* @param {String} name 参数name
|
|
17
|
+
* @returns {String} 返回获取的值
|
|
18
|
+
*/
|
|
19
|
+
function getCookie(name) {
|
|
20
|
+
if (typeof document == "undefined") return "";
|
|
21
|
+
// cookie中每个分号后面是有个空格的,需要替换掉
|
|
22
|
+
let arr = document.cookie ? document.cookie.replace(/\s/g, "").split(";") : [];
|
|
23
|
+
for (let i in arr) {
|
|
24
|
+
let tempArr = arr[i].split("=");
|
|
25
|
+
if (tempArr[0] === name) {
|
|
26
|
+
return decodeURIComponent(tempArr[1]);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return "";
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* 通过name设置cookie
|
|
34
|
+
* 注:timestamp参数不填,则默认为session级别,浏览器关闭即cookie过期
|
|
35
|
+
* @param {String} name 参数name
|
|
36
|
+
* @param {String} value 设置的value
|
|
37
|
+
* @param {Number} timestamp 过期的时间戳值,默认为一天,设置一天过期则为:24*60*60*1000
|
|
38
|
+
*/
|
|
39
|
+
function setCookie(name, value, timestamp = 24 * 60 * 60 * 1000) {
|
|
40
|
+
if (typeof document == "undefined") return;
|
|
41
|
+
document.cookie = name + "=" + value + ";expires=" + new Date(Date.now() + timestamp);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* 通过name删除cookie
|
|
46
|
+
* @param {String} name 参数name
|
|
47
|
+
*/
|
|
48
|
+
function removeCookie(name) {
|
|
49
|
+
if (index.isEmpty(name)) return;
|
|
50
|
+
setCookie(name, "", -1);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* 清空当前站点域名的cookie
|
|
55
|
+
* @param {String} domain 域名地址,默认是当前站点域名
|
|
56
|
+
*/
|
|
57
|
+
function clearCookie(domain = document.domain) {
|
|
58
|
+
let names = document.cookie.match(/[^ =;]+(?==)/g);
|
|
59
|
+
if (names) {
|
|
60
|
+
for (let i = names.length; i--; ) {
|
|
61
|
+
document.cookie =
|
|
62
|
+
names[i] + "=0;path=/;" + domain ? "domain=" + domain + ";" : "" + "expires=" + new Date(0).toUTCString();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
exports.clearCookie = clearCookie;
|
|
68
|
+
exports.getCookie = getCookie;
|
|
69
|
+
exports.isSupportCookie = isSupportCookie;
|
|
70
|
+
exports.removeCookie = removeCookie;
|
|
71
|
+
exports.setCookie = setCookie;
|