tools-for-js 1.5.0 → 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 +1 -0
- package/lib/index.js +12 -0
- package/lib/utils/object.js +19 -2
- package/lib/utils/string.js +33 -12
- package/lib/utils/test.js +19 -0
- package/lib/utils/time.js +8 -6
- package/package.json +1 -1
package/README.md
CHANGED
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() {
|
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/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
|
}
|