tools-for-js 1.5.0 → 1.5.2

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
@@ -69,4 +69,5 @@ import { API } from 'tools-for-js'
69
69
  | 验证手机号 | checkMobile |
70
70
  | 验证邮箱 | checkEmail |
71
71
  | 验证运动账号 | checkSports |
72
+ | 判断是否为 json 字符串 | isJSONString |
72
73
  | 待更新 | function |
package/lib/index.js CHANGED
@@ -177,6 +177,12 @@ Object.defineProperty(exports, "getTimeDistance", {
177
177
  return _time.getTimeDistance;
178
178
  }
179
179
  });
180
+ Object.defineProperty(exports, "getValByKey", {
181
+ enumerable: true,
182
+ get: function get() {
183
+ return _object.getValByKey;
184
+ }
185
+ });
180
186
  Object.defineProperty(exports, "getValueFromArray", {
181
187
  enumerable: true,
182
188
  get: function get() {
@@ -207,6 +213,12 @@ Object.defineProperty(exports, "isExpires", {
207
213
  return _time.isExpires;
208
214
  }
209
215
  });
216
+ Object.defineProperty(exports, "isJSONString", {
217
+ enumerable: true,
218
+ get: function get() {
219
+ return _object.isJSONString;
220
+ }
221
+ });
210
222
  Object.defineProperty(exports, "lowercaseKeys", {
211
223
  enumerable: true,
212
224
  get: function get() {
@@ -90,18 +90,20 @@ var isEmpty = exports.isEmpty = function isEmpty(params) {
90
90
  var isEqual = exports.isEqual = function isEqual(a, b) {
91
91
  // 类型为基本类型时,如果相等,则返回true
92
92
  if (a === b) return true;
93
- if (IsType('Object', a) && IsType('Object', b) && Object.keys(a).length === Object.keys(b).length) {
94
- // 若两个参数都为对象,先判断对象长度是否相同==>遍历对象内元素是否相同
95
- for (var key in a) {
96
- if (a.hasOwnProperty(key)) {
97
- if (!isEqual(a[key], b[key])) {
93
+ if (IsType('Object', a) && IsType('Object', b)) {
94
+ // 若两个参数都为对象,先判断对象长度是否相同,再遍历对象内元素是否相同
95
+ if (Object.keys(a).length !== Object.keys(b).length) return false;
96
+ for (var k in a) {
97
+ if (a.hasOwnProperty(k)) {
98
+ if (!isEqual(a[k], b[k])) {
98
99
  // 对象中具有不相同属性 返回false
99
100
  return false;
100
101
  }
101
102
  }
102
103
  }
103
- } else if (IsType('Array', a) && IsType('Array', b) && a.length === b.length) {
104
- // 若两个参数都为数组,则先判断数组长度是否相同==>遍历数组元素是否相同
104
+ } else if (IsType('Array', a) && IsType('Array', b)) {
105
+ // 若两个参数都为数组,则先判断数组长度是否相同,遍历数组元素是否相同
106
+ if (a.length !== b.length) return false;
105
107
  for (var i = 0, length = a.length; i < length; i++) {
106
108
  if (!isEqual(a[i], b[i])) {
107
109
  // 如果数组元素中具有不相同元素,返回false
@@ -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
+ }
@@ -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,6 +1,6 @@
1
1
  {
2
2
  "name": "tools-for-js",
3
- "version": "1.5.0",
3
+ "version": "1.5.2",
4
4
  "description": "基于babel构建的javascript工具库",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {