tools-for-js 1.4.2 → 1.5.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 +4 -0
- package/lib/index.js +32 -1
- package/lib/utils/object.js +19 -2
- package/lib/utils/random.js +26 -1
- package/lib/utils/regexp.js +34 -0
- package/lib/utils/string.js +33 -12
- package/lib/utils/test.js +19 -0
- package/lib/utils/time.js +8 -6
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -66,4 +66,8 @@ import { API } from 'tools-for-js'
|
|
|
66
66
|
| 随机数组中的值 | randomEnum |
|
|
67
67
|
| 随机数组中的 n 个值 | randomNumEnum |
|
|
68
68
|
| 随机指定范围的整数 | randomIntRange |
|
|
69
|
+
| 验证手机号 | checkMobile |
|
|
70
|
+
| 验证邮箱 | checkEmail |
|
|
71
|
+
| 验证运动账号 | checkSports |
|
|
72
|
+
| 判断是否为 json 字符串 | isJSONString |
|
|
69
73
|
| 待更新 | function |
|
package/lib/index.js
CHANGED
|
@@ -39,18 +39,36 @@ Object.defineProperty(exports, "checkCrypt", {
|
|
|
39
39
|
return _string.checkCrypt;
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
|
+
Object.defineProperty(exports, "checkEmail", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function get() {
|
|
45
|
+
return _regexp.checkEmail;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
42
48
|
Object.defineProperty(exports, "checkKeyEmpty", {
|
|
43
49
|
enumerable: true,
|
|
44
50
|
get: function get() {
|
|
45
51
|
return _array.checkKeyEmpty;
|
|
46
52
|
}
|
|
47
53
|
});
|
|
54
|
+
Object.defineProperty(exports, "checkMobile", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function get() {
|
|
57
|
+
return _regexp.checkMobile;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
48
60
|
Object.defineProperty(exports, "checkPwdStrength", {
|
|
49
61
|
enumerable: true,
|
|
50
62
|
get: function get() {
|
|
51
63
|
return _string.checkPwdStrength;
|
|
52
64
|
}
|
|
53
65
|
});
|
|
66
|
+
Object.defineProperty(exports, "checkSports", {
|
|
67
|
+
enumerable: true,
|
|
68
|
+
get: function get() {
|
|
69
|
+
return _regexp.checkSports;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
54
72
|
Object.defineProperty(exports, "convertSmallHump", {
|
|
55
73
|
enumerable: true,
|
|
56
74
|
get: function get() {
|
|
@@ -159,6 +177,12 @@ Object.defineProperty(exports, "getTimeDistance", {
|
|
|
159
177
|
return _time.getTimeDistance;
|
|
160
178
|
}
|
|
161
179
|
});
|
|
180
|
+
Object.defineProperty(exports, "getValByKey", {
|
|
181
|
+
enumerable: true,
|
|
182
|
+
get: function get() {
|
|
183
|
+
return _object.getValByKey;
|
|
184
|
+
}
|
|
185
|
+
});
|
|
162
186
|
Object.defineProperty(exports, "getValueFromArray", {
|
|
163
187
|
enumerable: true,
|
|
164
188
|
get: function get() {
|
|
@@ -189,6 +213,12 @@ Object.defineProperty(exports, "isExpires", {
|
|
|
189
213
|
return _time.isExpires;
|
|
190
214
|
}
|
|
191
215
|
});
|
|
216
|
+
Object.defineProperty(exports, "isJSONString", {
|
|
217
|
+
enumerable: true,
|
|
218
|
+
get: function get() {
|
|
219
|
+
return _object.isJSONString;
|
|
220
|
+
}
|
|
221
|
+
});
|
|
192
222
|
Object.defineProperty(exports, "lowercaseKeys", {
|
|
193
223
|
enumerable: true,
|
|
194
224
|
get: function get() {
|
|
@@ -340,4 +370,5 @@ var _calculate = require("./utils/calculate");
|
|
|
340
370
|
var _common = require("./utils/common");
|
|
341
371
|
var _string = require("./utils/string");
|
|
342
372
|
var _random = require("./utils/random");
|
|
343
|
-
var _object = require("./utils/object");
|
|
373
|
+
var _object = require("./utils/object");
|
|
374
|
+
var _regexp = require("./utils/regexp");
|
package/lib/utils/object.js
CHANGED
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.getValByKey = void 0;
|
|
7
|
+
exports.isJSONString = isJSONString;
|
|
8
|
+
exports.objectToQs = void 0;
|
|
7
9
|
/*******
|
|
8
10
|
* @description: 将对象转换为查询字符串
|
|
9
11
|
* @author: 琴时
|
|
@@ -32,4 +34,19 @@ var getValByKey = exports.getValByKey = function getValByKey(obj, key) {
|
|
|
32
34
|
value = value[keys[i]];
|
|
33
35
|
}
|
|
34
36
|
return value;
|
|
35
|
-
};
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/*******
|
|
40
|
+
* @description: 判断是否为json字符串
|
|
41
|
+
* @author: 琴时
|
|
42
|
+
* @param {String} str
|
|
43
|
+
* @return {Object|Boolean}
|
|
44
|
+
*/
|
|
45
|
+
function isJSONString(str) {
|
|
46
|
+
try {
|
|
47
|
+
var res = JSON.parse(str);
|
|
48
|
+
return res;
|
|
49
|
+
} catch (e) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
package/lib/utils/random.js
CHANGED
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.randomCode = exports.createUUID = void 0;
|
|
7
7
|
exports.randomColor = randomColor;
|
|
8
|
-
exports.randomNumEnum = exports.randomNum = exports.randomMac = exports.randomIntRange = exports.randomIndex = exports.randomEnum = void 0;
|
|
8
|
+
exports.randomUserAgent = exports.randomNumEnum = exports.randomNum = exports.randomMac = exports.randomIp = exports.randomIntRange = exports.randomIndex = exports.randomEnum = void 0;
|
|
9
9
|
/*******
|
|
10
10
|
* @description: 随机索引
|
|
11
11
|
* @author: 琴时
|
|
@@ -152,4 +152,29 @@ var randomNumEnum = exports.randomNumEnum = function randomNumEnum(array, num) {
|
|
|
152
152
|
*/
|
|
153
153
|
var randomIntRange = exports.randomIntRange = function randomIntRange(min, max) {
|
|
154
154
|
return randomIndex(max - min + 1) + min;
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
/*******
|
|
158
|
+
* @description: 随机浏览器请求头
|
|
159
|
+
* @author: 琴时
|
|
160
|
+
* @param {*} platform
|
|
161
|
+
* @return {*}
|
|
162
|
+
*/
|
|
163
|
+
var randomUserAgent = exports.randomUserAgent = function randomUserAgent() {
|
|
164
|
+
var platform = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'pc';
|
|
165
|
+
//浏览器库
|
|
166
|
+
var userAgents = ['Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070731 Ubuntu/dapper-security Firefox/1.5.0.12', 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0) ,Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/1.2.9', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.0.3698.400)', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b13pre) Gecko/20110307 Firefox/4.0b13pre', 'Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070731 Ubuntu/dapper-security Firefox/1.5.0.12', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; LBBROWSER)', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6', 'Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.0.3698.400)', 'Opera/9.25 (Windows NT 5.1; U; en), Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/1.2.9', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'];
|
|
167
|
+
// 移动端设备
|
|
168
|
+
var mobileUserAgents = ['MiFit6.6.2 (Mi 10; Android 11; Density/2.75)', 'MiFit6.6.2 (MI 9 Transparent Edition; Android 9; Density/2.5687501)'];
|
|
169
|
+
var UserAgents = platform === 'pc' ? userAgents : mobileUserAgents;
|
|
170
|
+
return UserAgents[Math.floor(Math.random() * (0 - UserAgents.length) + UserAgents.length)];
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
/*******
|
|
174
|
+
* @description: 随机ip
|
|
175
|
+
* @author: 琴时
|
|
176
|
+
* @return {*}
|
|
177
|
+
*/
|
|
178
|
+
var randomIp = exports.randomIp = function randomIp() {
|
|
179
|
+
return Math.floor(Math.random() * (10 - 255) + 255) + '.' + Math.floor(Math.random() * (10 - 255) + 255) + '.' + Math.floor(Math.random() * (10 - 255) + 255) + '.' + Math.floor(Math.random() * (10 - 255) + 255);
|
|
155
180
|
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.checkSports = exports.checkMobile = exports.checkEmail = void 0;
|
|
7
|
+
/*******
|
|
8
|
+
* @description: 验证手机号
|
|
9
|
+
* @author: 琴时
|
|
10
|
+
* @return {*}
|
|
11
|
+
*/
|
|
12
|
+
var checkMobile = exports.checkMobile = function checkMobile(value) {
|
|
13
|
+
var pattern = /^\d{11}$/;
|
|
14
|
+
return pattern.test(value);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
/*******
|
|
18
|
+
* @description: 验证邮箱
|
|
19
|
+
* @author: 琴时
|
|
20
|
+
* @return {*}
|
|
21
|
+
*/
|
|
22
|
+
var checkEmail = exports.checkEmail = function checkEmail(value) {
|
|
23
|
+
var pattern = /^\s*\w+(?:\.{0,1}[\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\.[a-zA-Z]+\s*$/;
|
|
24
|
+
return pattern.test(value);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
/*******
|
|
28
|
+
* @description: 验证运动账号
|
|
29
|
+
* @author: 琴时
|
|
30
|
+
* @return {*}
|
|
31
|
+
*/
|
|
32
|
+
var checkSports = exports.checkSports = function checkSports(value) {
|
|
33
|
+
return checkMobile(value) || checkEmail(value);
|
|
34
|
+
};
|
package/lib/utils/string.js
CHANGED
|
@@ -9,6 +9,7 @@ exports.splitString = splitString;
|
|
|
9
9
|
exports.splitToFileName = splitToFileName;
|
|
10
10
|
exports.toCode = void 0;
|
|
11
11
|
var _random = require("./random");
|
|
12
|
+
var _common = require("./common");
|
|
12
13
|
var _utf8_encode = function _utf8_encode(string) {
|
|
13
14
|
string = string ? string.toString() : '';
|
|
14
15
|
string = string.replace(/\r\n/g, '\n');
|
|
@@ -56,18 +57,28 @@ var _utf8_decode = function _utf8_decode(utf_text) {
|
|
|
56
57
|
/*******
|
|
57
58
|
* @description: 字符加密
|
|
58
59
|
* @author: 琴时
|
|
59
|
-
* @param {
|
|
60
|
-
* @
|
|
60
|
+
* @param {*} input
|
|
61
|
+
* @param {String} key [盐值]
|
|
62
|
+
* @param {Number} expires [有效期/毫秒|不传则永久有效]
|
|
63
|
+
* @return {String} [''|null|undefined==>'']
|
|
61
64
|
*/
|
|
62
|
-
var encrypt = exports.encrypt = function encrypt(input, key) {
|
|
63
|
-
if (
|
|
65
|
+
var encrypt = exports.encrypt = function encrypt(input, key, expires) {
|
|
66
|
+
if ((0, _common.IsType)('Object', input) || (0, _common.IsType)('Array', input) || (0, _common.IsType)('Number', input)) {
|
|
67
|
+
input = JSON.stringify(input);
|
|
68
|
+
} else if (!input) return '';
|
|
64
69
|
// 取65位字符
|
|
65
70
|
var _keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
|
66
71
|
var output = '';
|
|
67
72
|
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
|
|
68
73
|
var i = 0;
|
|
69
74
|
input = _utf8_encode(input);
|
|
70
|
-
|
|
75
|
+
key = key || '';
|
|
76
|
+
if (expires) {
|
|
77
|
+
var et = Date.now() + Number(expires);
|
|
78
|
+
input = "".concat(et, ":").concat(key, ":").concat(input);
|
|
79
|
+
} else {
|
|
80
|
+
input = "".concat((0, _random.randomCode)(6), ":").concat(key, ":").concat(input);
|
|
81
|
+
}
|
|
71
82
|
while (i < input.length) {
|
|
72
83
|
chr1 = input.charCodeAt(i++);
|
|
73
84
|
chr2 = input.charCodeAt(i++);
|
|
@@ -90,6 +101,7 @@ var encrypt = exports.encrypt = function encrypt(input, key) {
|
|
|
90
101
|
* @description: 字符解密
|
|
91
102
|
* @author: 琴时
|
|
92
103
|
* @param {String} input
|
|
104
|
+
* @param {String} key [盐值]
|
|
93
105
|
* @return {String}
|
|
94
106
|
*/
|
|
95
107
|
var decrypt = exports.decrypt = function decrypt(input, key) {
|
|
@@ -118,21 +130,30 @@ var decrypt = exports.decrypt = function decrypt(input, key) {
|
|
|
118
130
|
}
|
|
119
131
|
}
|
|
120
132
|
output = _utf8_decode(output);
|
|
133
|
+
key = key || ''; // 盐值
|
|
121
134
|
var symbol = ":".concat(key, ":"); // 盐字段切割符号
|
|
122
|
-
|
|
135
|
+
output = output.split(symbol);
|
|
136
|
+
if (output.length === 1) return '';
|
|
137
|
+
if (output[0] > 6 && /^\d+$/.test(output[0])) {
|
|
138
|
+
var nt = Date.now();
|
|
139
|
+
if (nt > output[0]) return '';
|
|
140
|
+
}
|
|
141
|
+
return output[1] || '';
|
|
123
142
|
};
|
|
124
143
|
|
|
125
144
|
/*******
|
|
126
145
|
* @description: 校验加密字符
|
|
127
146
|
* @author: 琴时
|
|
128
|
-
* @param {
|
|
129
|
-
* @param {String} crypt
|
|
130
|
-
* @param {*} key
|
|
147
|
+
* @param {*} input [明文]
|
|
148
|
+
* @param {String} crypt [密文]
|
|
149
|
+
* @param {*} key [盐值]
|
|
131
150
|
* @return {Boolean}
|
|
132
151
|
*/
|
|
133
|
-
var checkCrypt = exports.checkCrypt = function checkCrypt(
|
|
134
|
-
|
|
135
|
-
|
|
152
|
+
var checkCrypt = exports.checkCrypt = function checkCrypt(input, crypt, key) {
|
|
153
|
+
if ((0, _common.IsType)('Object', input) || (0, _common.IsType)('Array', input) || (0, _common.IsType)('Number', input)) {
|
|
154
|
+
input = JSON.stringify(input);
|
|
155
|
+
}
|
|
156
|
+
return input === decrypt(crypt, key);
|
|
136
157
|
};
|
|
137
158
|
|
|
138
159
|
/*******
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/* 新API */
|
|
4
|
+
// 1. 深克隆测试
|
|
5
|
+
var objectDeepClone = function objectDeepClone() {
|
|
6
|
+
var obj = {
|
|
7
|
+
id: 1,
|
|
8
|
+
name: '张三',
|
|
9
|
+
sex: '男',
|
|
10
|
+
age: 30,
|
|
11
|
+
child: {
|
|
12
|
+
name: '李四',
|
|
13
|
+
sex: '男',
|
|
14
|
+
age: 18
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
var cloneObj = structuredClone(obj);
|
|
18
|
+
cloneObj.child.name = '王五';
|
|
19
|
+
};
|
package/lib/utils/time.js
CHANGED
|
@@ -19,13 +19,15 @@ _dayjs["default"].locale('zh-cn'); // 全局使用
|
|
|
19
19
|
* @return {Date}
|
|
20
20
|
*/
|
|
21
21
|
var createDate = exports.createDate = function createDate(date) {
|
|
22
|
-
var
|
|
23
|
-
var
|
|
22
|
+
var regexS = /^\d*$/; // 判断是否为时间戳
|
|
23
|
+
var regexT = /^(?=.*T)(?=.*).*$/; // 判断是否为时间字符串==>2021-05-19T16:00:00.000Z
|
|
24
|
+
var regexC = /[\u4e00-\u9fa5]/; // 判断是否存在中文 ==> Thu May 20 2021 00:00:00 GMT+0800 (中国标准时间)
|
|
24
25
|
if (!date) return new Date(); // 不传参数
|
|
25
|
-
if (
|
|
26
|
-
// 时间戳
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
if (regexS.test(date)) {
|
|
27
|
+
date = parseInt(date); // 时间戳
|
|
28
|
+
} else if (regexC.test(date)) {
|
|
29
|
+
date = Date.parse(date);
|
|
30
|
+
} else if (typeof date === 'string' && !regexT.test(date)) {
|
|
29
31
|
//兼容ios: 将时间字符串中的'-'替换成'/' 2021-05-20 00:00:00=>2021/05/20 00:00:00
|
|
30
32
|
date = "".concat(date).replace(/-/g, '/');
|
|
31
33
|
}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tools-for-js",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.1",
|
|
4
4
|
"description": "基于babel构建的javascript工具库",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
7
|
-
"start": "
|
|
7
|
+
"start": "nodemon",
|
|
8
8
|
"build": "sh build/build.sh",
|
|
9
9
|
"release": "sh build/release.sh"
|
|
10
10
|
},
|