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 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");
@@ -3,7 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.objectToQs = exports.getValByKey = void 0;
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
+ }
@@ -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
+ };
@@ -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 {String|Number} input
60
- * @return {String}
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 (!input) return '';
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
- input = "".concat((0, _random.randomCode)(6), ":").concat(key, ":").concat(input);
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
- return output.split(symbol)[1] || '';
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 {String|Number} text
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(text, crypt, key) {
134
- text = text ? text.toString() : undefined;
135
- return text === decrypt(crypt, key);
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 pattern = /^(?=.*T)(?=.*).*$/;
23
- var patternNum = /^\d*$/;
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 (patternNum.test(date)) {
26
- // 时间戳
27
- date = parseInt(date);
28
- } else if (typeof date === 'string' && !pattern.test(date)) {
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.4.2",
3
+ "version": "1.5.1",
4
4
  "description": "基于babel构建的javascript工具库",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
7
- "start": "sh build/start.sh",
7
+ "start": "nodemon",
8
8
  "build": "sh build/build.sh",
9
9
  "release": "sh build/release.sh"
10
10
  },