@haluo/util 2.0.21 → 2.0.23
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/dist/index.d.ts +1 -3
- package/dist/index.js +61 -33
- package/dist/modules/cookie/index.js +24 -18
- package/dist/modules/date/index.js +56 -49
- package/dist/modules/dom/index.js +23 -16
- package/dist/modules/filter/index.js +25 -15
- package/dist/modules/format/index.js +12 -6
- package/dist/modules/match/index.js +10 -6
- package/dist/modules/monitor/index.js +14 -7
- package/dist/modules/monitor/lib/jsError.js +35 -39
- package/dist/modules/monitor/lib/timing.js +28 -24
- package/dist/modules/monitor/lib/xhr.js +33 -26
- package/dist/modules/monitor/utils/onload.js +4 -1
- package/dist/modules/monitor/utils/tracker.js +27 -13
- package/dist/modules/number/index.js +35 -31
- package/dist/modules/open-app/index.js +61 -66
- package/dist/modules/sentry/index.js +27 -19
- package/dist/modules/tools/index.d.ts +1 -1
- package/dist/modules/tools/index.js +169 -158
- package/dist/modules/upload/aliOss copy.d.ts +321 -0
- package/dist/modules/upload/aliOss copy.js +734 -0
- package/dist/modules/upload/aliOss.d.ts +51 -28
- package/dist/modules/upload/aliOss.js +163 -73
- package/dist/modules/upload/backup-aliOss.d.ts +321 -0
- package/dist/modules/upload/backup-aliOss.js +734 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/index.js +2 -1
- package/package.json +3 -16
|
@@ -3,19 +3,98 @@
|
|
|
3
3
|
* @Author: wanghui
|
|
4
4
|
*/
|
|
5
5
|
'use strict';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
var previous = 0;
|
|
8
|
+
var timeout = null;
|
|
9
|
+
var ToolsClass = /** @class */ (function () {
|
|
10
|
+
function ToolsClass() {
|
|
11
|
+
var _this = this;
|
|
12
|
+
/**
|
|
13
|
+
* 蒙层显示后,html禁止滚动操作
|
|
14
|
+
* @param {String} className
|
|
15
|
+
* @return {Void}
|
|
16
|
+
*/
|
|
17
|
+
this.stopScroll = function (className) {
|
|
18
|
+
if (!(window && window.document)) {
|
|
19
|
+
return new Error('仅支持浏览器');
|
|
20
|
+
}
|
|
21
|
+
var html = document.documentElement;
|
|
22
|
+
html.style.overflow = 'hidden';
|
|
23
|
+
html.style.height = '100%';
|
|
24
|
+
var body = document.body;
|
|
25
|
+
body.style.overflow = 'hidden';
|
|
26
|
+
body.style.height = '100%';
|
|
27
|
+
if (className) {
|
|
28
|
+
var dom = document.querySelector(".".concat(className));
|
|
29
|
+
dom && dom.addEventListener('touchmove', _this.__setDefault__);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* 蒙层隐藏后,html开启滚动操作
|
|
34
|
+
* @param {String} className
|
|
35
|
+
* @return {Void}
|
|
36
|
+
*/
|
|
37
|
+
this.startScroll = function (className) {
|
|
38
|
+
if (!(window && window.document)) {
|
|
39
|
+
return new Error('仅支持浏览器');
|
|
40
|
+
}
|
|
41
|
+
var html = document.documentElement;
|
|
42
|
+
html.style.overflow = 'visible';
|
|
43
|
+
html.style.height = 'auto';
|
|
44
|
+
var body = document.body;
|
|
45
|
+
body.style.overflow = 'visible';
|
|
46
|
+
body.style.height = 'auto';
|
|
47
|
+
if (className) {
|
|
48
|
+
var dom = document.querySelector(".".concat(className));
|
|
49
|
+
dom && dom.removeEventListener('touchmove', _this.__setDefault__);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* object 对象转 array 数组
|
|
54
|
+
* demo:
|
|
55
|
+
* objectToArray({a:1,b:2}) 输出:["a=1", "b=2"]
|
|
56
|
+
* @param {Object} obj
|
|
57
|
+
* @returns {Array} arr
|
|
58
|
+
*/
|
|
59
|
+
this.objectToArray = function (obj) {
|
|
60
|
+
var arr = [];
|
|
61
|
+
if (typeof obj === 'object') {
|
|
62
|
+
for (var key in obj) {
|
|
63
|
+
if (obj.hasOwnProperty(key)) {
|
|
64
|
+
arr.push([key, obj[key]].join('='));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return arr;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* convertEnum
|
|
72
|
+
* 枚举键值互换
|
|
73
|
+
* @param {Object} obj
|
|
74
|
+
* convertKeyValueEnum({a: 1, b: 2}) // {1: "a", 2: "b"}
|
|
75
|
+
* @returns {Object} result
|
|
76
|
+
*/
|
|
77
|
+
this.convertKeyValueEnum = function (obj) {
|
|
78
|
+
var result = {};
|
|
79
|
+
if (typeof obj === 'object') {
|
|
80
|
+
for (var key in obj) {
|
|
81
|
+
if (obj.hasOwnProperty(key)) {
|
|
82
|
+
result[obj[key]] = key;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return result;
|
|
87
|
+
};
|
|
88
|
+
this.isDefined = function (val) {
|
|
89
|
+
return val !== undefined && val !== null;
|
|
90
|
+
};
|
|
12
91
|
this.__loaded__ = {}; // 已加载的资源
|
|
13
92
|
/**
|
|
14
93
|
* 阻止事件传递
|
|
15
94
|
* @param {Event} e
|
|
16
95
|
* @return {Void}
|
|
17
96
|
*/
|
|
18
|
-
this.__setDefault__ = (e)
|
|
97
|
+
this.__setDefault__ = function (e) {
|
|
19
98
|
e && e.preventDefault();
|
|
20
99
|
};
|
|
21
100
|
}
|
|
@@ -25,31 +104,32 @@ class ToolsClass {
|
|
|
25
104
|
* @param {String} data
|
|
26
105
|
* @return {Object}
|
|
27
106
|
*/
|
|
28
|
-
deepCopy(data) {
|
|
107
|
+
ToolsClass.prototype.deepCopy = function (data) {
|
|
29
108
|
return JSON.parse(JSON.stringify(data));
|
|
30
|
-
}
|
|
109
|
+
};
|
|
31
110
|
/**
|
|
32
111
|
* 深拷贝 Object|Array
|
|
33
112
|
* 支持 普通对象、数组和函数的深复制,但是未解决循环引用、Date、RegExp
|
|
34
113
|
* @param {Object|Array} data
|
|
35
114
|
* @return {Object}
|
|
36
115
|
*/
|
|
37
|
-
deepCopy2(obj) {
|
|
38
|
-
|
|
39
|
-
for (
|
|
116
|
+
ToolsClass.prototype.deepCopy2 = function (obj) {
|
|
117
|
+
var _obj = Array.isArray(obj) ? [] : {};
|
|
118
|
+
for (var i in obj) {
|
|
40
119
|
_obj[i] = typeof obj[i] === 'object' ? this.deepCopy2(obj[i]) : obj[i];
|
|
41
120
|
}
|
|
42
121
|
return _obj;
|
|
43
|
-
}
|
|
122
|
+
};
|
|
44
123
|
/**
|
|
45
124
|
* 深拷贝 Object|Array
|
|
46
125
|
* 注意:需要 yarn add lodash
|
|
47
126
|
* @param {Object|Array} data
|
|
48
127
|
* @return {Object}
|
|
49
128
|
*/
|
|
50
|
-
deepCopy3(obj) {
|
|
51
|
-
|
|
52
|
-
|
|
129
|
+
ToolsClass.prototype.deepCopy3 = function (obj) {
|
|
130
|
+
var deepcopy = require('lodash/cloneDeep');
|
|
131
|
+
return deepcopy(obj);
|
|
132
|
+
};
|
|
53
133
|
/**
|
|
54
134
|
* 防抖
|
|
55
135
|
* demo:debounce(func, 300)(args)
|
|
@@ -57,17 +137,17 @@ class ToolsClass {
|
|
|
57
137
|
* @param {Number} wait 节流时间,毫秒
|
|
58
138
|
* @return {Function} delay
|
|
59
139
|
*/
|
|
60
|
-
debounce(func, wait) {
|
|
61
|
-
|
|
62
|
-
|
|
140
|
+
ToolsClass.prototype.debounce = function (func, wait) {
|
|
141
|
+
var delay = function () {
|
|
142
|
+
var args = arguments;
|
|
63
143
|
if (timeout)
|
|
64
144
|
clearTimeout(timeout);
|
|
65
|
-
timeout = setTimeout(()
|
|
145
|
+
timeout = setTimeout(function () {
|
|
66
146
|
func.apply(delay, args);
|
|
67
147
|
}, wait);
|
|
68
148
|
};
|
|
69
149
|
return delay;
|
|
70
|
-
}
|
|
150
|
+
};
|
|
71
151
|
/**
|
|
72
152
|
* 节流
|
|
73
153
|
* demo:throttle(func, 300)(args)
|
|
@@ -75,124 +155,86 @@ class ToolsClass {
|
|
|
75
155
|
* @param {Number} wait 节流时间,毫秒
|
|
76
156
|
* @return {Function} delay
|
|
77
157
|
*/
|
|
78
|
-
throttle(func, wait) {
|
|
79
|
-
|
|
80
|
-
|
|
158
|
+
ToolsClass.prototype.throttle = function (func, wait) {
|
|
159
|
+
var delay = function () {
|
|
160
|
+
var now = Date.now();
|
|
81
161
|
if (now - previous > wait) {
|
|
82
162
|
func.apply(delay, arguments);
|
|
83
163
|
previous = now;
|
|
84
164
|
}
|
|
85
165
|
};
|
|
86
166
|
return delay;
|
|
87
|
-
}
|
|
167
|
+
};
|
|
88
168
|
/**
|
|
89
169
|
* 获取路径中文件名称
|
|
90
170
|
* @param {String} url
|
|
91
171
|
* @return {String}
|
|
92
172
|
*/
|
|
93
|
-
getUrlName(url) {
|
|
173
|
+
ToolsClass.prototype.getUrlName = function (url) {
|
|
94
174
|
return (url && url.split('?')[0].split('/').reverse()[0]);
|
|
95
|
-
}
|
|
175
|
+
};
|
|
96
176
|
/**
|
|
97
177
|
* 动态加载脚本
|
|
98
178
|
* tip:按需加载时用(多次调用,js不会重复加载)
|
|
99
179
|
* @param {String} url
|
|
100
180
|
* @return {Promise}
|
|
101
181
|
*/
|
|
102
|
-
loadJs(url) {
|
|
182
|
+
ToolsClass.prototype.loadJs = function (url) {
|
|
183
|
+
var _this = this;
|
|
103
184
|
if (!(window && window.document)) {
|
|
104
185
|
return new Error('仅支持浏览器');
|
|
105
186
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
return new Promise((resolve, reject)
|
|
109
|
-
if (
|
|
187
|
+
var name = this.getUrlName(url);
|
|
188
|
+
var id = 'js_' + name;
|
|
189
|
+
return new Promise(function (resolve, reject) {
|
|
190
|
+
if (_this.__loaded__[id]) {
|
|
110
191
|
return resolve();
|
|
111
192
|
}
|
|
112
|
-
|
|
193
|
+
var script = document.createElement('script');
|
|
113
194
|
script.type = 'text/javascript';
|
|
114
195
|
script.async = true;
|
|
115
196
|
script.src = url;
|
|
116
197
|
script.id = id;
|
|
117
|
-
script.onload = ()
|
|
118
|
-
|
|
198
|
+
script.onload = function () {
|
|
199
|
+
_this.__loaded__[id] = true;
|
|
119
200
|
resolve();
|
|
120
201
|
};
|
|
121
|
-
script.onerror = (e)
|
|
202
|
+
script.onerror = function (e) {
|
|
122
203
|
reject(e);
|
|
123
204
|
};
|
|
124
205
|
document.body.appendChild(script);
|
|
125
206
|
});
|
|
126
|
-
}
|
|
207
|
+
};
|
|
127
208
|
/**
|
|
128
209
|
* 动态加载样式
|
|
129
210
|
* @param {String} url
|
|
130
211
|
* @return {Promise}
|
|
131
212
|
*/
|
|
132
|
-
loadCss(url) {
|
|
213
|
+
ToolsClass.prototype.loadCss = function (url) {
|
|
214
|
+
var _this = this;
|
|
133
215
|
if (!(window && window.document)) {
|
|
134
216
|
return new Error('仅支持浏览器');
|
|
135
217
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
return new Promise((resolve, reject)
|
|
139
|
-
if (
|
|
218
|
+
var name = this.getUrlName(url);
|
|
219
|
+
var id = 'css_' + name;
|
|
220
|
+
return new Promise(function (resolve, reject) {
|
|
221
|
+
if (_this.__loaded__[id]) {
|
|
140
222
|
return resolve();
|
|
141
223
|
}
|
|
142
|
-
|
|
224
|
+
var link = document.createElement('link');
|
|
143
225
|
link.type = 'text/css';
|
|
144
226
|
link.rel = 'stylesheet';
|
|
145
227
|
link.href = url;
|
|
146
228
|
link.id = id;
|
|
147
|
-
link.onload = ()
|
|
148
|
-
|
|
229
|
+
link.onload = function () {
|
|
230
|
+
_this.__loaded__[id] = true;
|
|
149
231
|
resolve();
|
|
150
232
|
};
|
|
151
|
-
link.onerror = (e)
|
|
233
|
+
link.onerror = function (e) {
|
|
152
234
|
reject(e);
|
|
153
235
|
};
|
|
154
236
|
document.head.appendChild(link);
|
|
155
237
|
});
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* 蒙层显示后,html禁止滚动操作
|
|
159
|
-
* @param {String} className
|
|
160
|
-
* @return {Void}
|
|
161
|
-
*/
|
|
162
|
-
stopScroll = (className) => {
|
|
163
|
-
if (!(window && window.document)) {
|
|
164
|
-
return new Error('仅支持浏览器');
|
|
165
|
-
}
|
|
166
|
-
const html = document.documentElement;
|
|
167
|
-
html.style.overflow = 'hidden';
|
|
168
|
-
html.style.height = '100%';
|
|
169
|
-
const body = document.body;
|
|
170
|
-
body.style.overflow = 'hidden';
|
|
171
|
-
body.style.height = '100%';
|
|
172
|
-
if (className) {
|
|
173
|
-
const dom = document.querySelector(`.${className}`);
|
|
174
|
-
dom && dom.addEventListener('touchmove', this.__setDefault__);
|
|
175
|
-
}
|
|
176
|
-
};
|
|
177
|
-
/**
|
|
178
|
-
* 蒙层隐藏后,html开启滚动操作
|
|
179
|
-
* @param {String} className
|
|
180
|
-
* @return {Void}
|
|
181
|
-
*/
|
|
182
|
-
startScroll = (className) => {
|
|
183
|
-
if (!(window && window.document)) {
|
|
184
|
-
return new Error('仅支持浏览器');
|
|
185
|
-
}
|
|
186
|
-
const html = document.documentElement;
|
|
187
|
-
html.style.overflow = 'visible';
|
|
188
|
-
html.style.height = 'auto';
|
|
189
|
-
const body = document.body;
|
|
190
|
-
body.style.overflow = 'visible';
|
|
191
|
-
body.style.height = 'auto';
|
|
192
|
-
if (className) {
|
|
193
|
-
const dom = document.querySelector(`.${className}`);
|
|
194
|
-
dom && dom.removeEventListener('touchmove', this.__setDefault__);
|
|
195
|
-
}
|
|
196
238
|
};
|
|
197
239
|
/**
|
|
198
240
|
* 字符串复制到剪贴板
|
|
@@ -200,91 +242,59 @@ class ToolsClass {
|
|
|
200
242
|
* @param {String} str
|
|
201
243
|
* @return {String}
|
|
202
244
|
*/
|
|
203
|
-
clipboard(str) {
|
|
245
|
+
ToolsClass.prototype.clipboard = function (str) {
|
|
204
246
|
if (!(window && window.document)) {
|
|
205
247
|
return new Error('仅支持浏览器');
|
|
206
248
|
}
|
|
249
|
+
var copy = require('clipboard-copy');
|
|
207
250
|
return copy(str);
|
|
208
|
-
}
|
|
251
|
+
};
|
|
209
252
|
/**
|
|
210
253
|
* 首字母大写
|
|
211
254
|
* @param {String} str
|
|
212
255
|
* @return {String}
|
|
213
256
|
*/
|
|
214
|
-
firstUpperCase(str) {
|
|
257
|
+
ToolsClass.prototype.firstUpperCase = function (str) {
|
|
215
258
|
return str.charAt(0).toUpperCase() + str.toString().slice(1);
|
|
216
|
-
}
|
|
259
|
+
};
|
|
217
260
|
/**
|
|
218
261
|
* 截取数组或字符串,示例:slice('1234', 3)
|
|
219
262
|
* @param {Array|String} target 数组或字符串
|
|
220
263
|
* @param {Number} length 截取长度,从0开始
|
|
221
264
|
* @return {any}
|
|
222
265
|
*/
|
|
223
|
-
slice
|
|
266
|
+
ToolsClass.prototype.slice = function (target, length) {
|
|
267
|
+
if (target === void 0) { target = ''; }
|
|
268
|
+
if (length === void 0) { length = 0; }
|
|
224
269
|
return target.slice(0, length);
|
|
225
|
-
}
|
|
270
|
+
};
|
|
226
271
|
/**
|
|
227
272
|
* 获取guid
|
|
228
273
|
* @return {String}
|
|
229
274
|
*/
|
|
230
|
-
guid() {
|
|
275
|
+
ToolsClass.prototype.guid = function () {
|
|
231
276
|
function S4() {
|
|
232
277
|
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
|
|
233
278
|
}
|
|
234
279
|
return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
|
|
235
|
-
}
|
|
280
|
+
};
|
|
236
281
|
/**
|
|
237
282
|
* 获取文本字节数(含中文)
|
|
238
283
|
* @param {String} str
|
|
239
284
|
* @return {String}
|
|
240
285
|
*/
|
|
241
|
-
getBytesOfText
|
|
286
|
+
ToolsClass.prototype.getBytesOfText = function (str) {
|
|
287
|
+
if (str === void 0) { str = ''; }
|
|
242
288
|
return str.replace(/[^\u0000-\u00ff]/g, "aa").length;
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* object 对象转 array 数组
|
|
246
|
-
* demo:
|
|
247
|
-
* objectToArray({a:1,b:2}) 输出:["a=1", "b=2"]
|
|
248
|
-
* @param {Object} obj
|
|
249
|
-
* @returns {Array} arr
|
|
250
|
-
*/
|
|
251
|
-
objectToArray = (obj) => {
|
|
252
|
-
var arr = [];
|
|
253
|
-
if (typeof obj === 'object') {
|
|
254
|
-
for (var key in obj) {
|
|
255
|
-
if (obj.hasOwnProperty(key)) {
|
|
256
|
-
arr.push([key, obj[key]].join('='));
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
return arr;
|
|
261
|
-
};
|
|
262
|
-
/**
|
|
263
|
-
* convertEnum
|
|
264
|
-
* 枚举键值互换
|
|
265
|
-
* @param {Object} obj
|
|
266
|
-
* convertKeyValueEnum({a: 1, b: 2}) // {1: "a", 2: "b"}
|
|
267
|
-
* @returns {Object} result
|
|
268
|
-
*/
|
|
269
|
-
convertKeyValueEnum = (obj) => {
|
|
270
|
-
const result = {};
|
|
271
|
-
if (typeof obj === 'object') {
|
|
272
|
-
for (const key in obj) {
|
|
273
|
-
if (obj.hasOwnProperty(key)) {
|
|
274
|
-
result[obj[key]] = key;
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
return result;
|
|
279
289
|
};
|
|
280
290
|
/**
|
|
281
291
|
* 数组去重
|
|
282
292
|
* @param {Array} arr
|
|
283
293
|
* @returns {Array}
|
|
284
294
|
*/
|
|
285
|
-
uniqueArr(arr) {
|
|
295
|
+
ToolsClass.prototype.uniqueArr = function (arr) {
|
|
286
296
|
return Array.from(new Set(arr));
|
|
287
|
-
}
|
|
297
|
+
};
|
|
288
298
|
/**
|
|
289
299
|
* 数组元素交换位置
|
|
290
300
|
* index1和index2分别是两个数组的索引值,即是两个要交换元素位置的索引值,如1,5就是数组中下标为1和5的两个元素交换位置
|
|
@@ -294,37 +304,38 @@ class ToolsClass {
|
|
|
294
304
|
* swapArray([1, 2, 3, 4], 2, 3) // [1, 2, 4, 3]
|
|
295
305
|
* @returns {Array<string | number>} array
|
|
296
306
|
*/
|
|
297
|
-
swapArray(array, index1, index2) {
|
|
298
|
-
|
|
307
|
+
ToolsClass.prototype.swapArray = function (array, index1, index2) {
|
|
308
|
+
var _a;
|
|
309
|
+
_a = [array[index2], array[index1]], array[index1] = _a[0], array[index2] = _a[1];
|
|
299
310
|
return array;
|
|
300
|
-
}
|
|
311
|
+
};
|
|
301
312
|
/**
|
|
302
313
|
* 过滤表情符号
|
|
303
314
|
* @param {String} str
|
|
304
315
|
* @return {String}
|
|
305
316
|
*/
|
|
306
|
-
filterEmoji(str) {
|
|
317
|
+
ToolsClass.prototype.filterEmoji = function (str) {
|
|
307
318
|
return str.replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/mg, '');
|
|
308
|
-
}
|
|
319
|
+
};
|
|
309
320
|
/**
|
|
310
321
|
* 是否包含表情
|
|
311
322
|
* @param {String} str
|
|
312
323
|
* @return {boolean}
|
|
313
324
|
*/
|
|
314
|
-
containsEmoji(str) {
|
|
315
|
-
|
|
325
|
+
ToolsClass.prototype.containsEmoji = function (str) {
|
|
326
|
+
var reg = /\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/mg;
|
|
316
327
|
return reg.test(str);
|
|
317
|
-
}
|
|
328
|
+
};
|
|
318
329
|
/**
|
|
319
330
|
* 是否包含表汉字
|
|
320
331
|
* @param {String} str
|
|
321
332
|
* @return {boolean}
|
|
322
333
|
*/
|
|
323
|
-
containsHanZi(str) {
|
|
324
|
-
|
|
334
|
+
ToolsClass.prototype.containsHanZi = function (str) {
|
|
335
|
+
var reg = /[\u4e00-\u9fa5]/mg;
|
|
325
336
|
return reg.test(str);
|
|
326
|
-
}
|
|
327
|
-
isEmpty(val) {
|
|
337
|
+
};
|
|
338
|
+
ToolsClass.prototype.isEmpty = function (val) {
|
|
328
339
|
// null or undefined
|
|
329
340
|
if (val == null)
|
|
330
341
|
return true;
|
|
@@ -351,11 +362,8 @@ class ToolsClass {
|
|
|
351
362
|
}
|
|
352
363
|
}
|
|
353
364
|
return false;
|
|
354
|
-
}
|
|
355
|
-
;
|
|
356
|
-
isDefined = (val) => {
|
|
357
|
-
return val !== undefined && val !== null;
|
|
358
365
|
};
|
|
366
|
+
;
|
|
359
367
|
/**
|
|
360
368
|
* 字段脱敏处理
|
|
361
369
|
* @param {String} field 未脱敏字段
|
|
@@ -363,20 +371,23 @@ class ToolsClass {
|
|
|
363
371
|
* @param {Int} after 结尾未脱敏字符数
|
|
364
372
|
* @return {String} 已脱敏字段
|
|
365
373
|
*/
|
|
366
|
-
sensitiveField(field, before
|
|
374
|
+
ToolsClass.prototype.sensitiveField = function (field, before, after) {
|
|
375
|
+
if (before === void 0) { before = 3; }
|
|
376
|
+
if (after === void 0) { after = 4; }
|
|
367
377
|
if (!field) {
|
|
368
378
|
return '';
|
|
369
379
|
}
|
|
370
380
|
field = String(field);
|
|
371
|
-
|
|
381
|
+
var sensitiveLen = field.length - before - after;
|
|
372
382
|
if (sensitiveLen < 0) {
|
|
373
383
|
sensitiveLen = 0;
|
|
374
384
|
}
|
|
375
385
|
// 匹配中文、英文、数字
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
return field.replace(reg,
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
|
|
386
|
+
var regItem = '[\u4e00-\u9fa5a-zA-Z0-9]';
|
|
387
|
+
var regExp = "(".concat(regItem, "{").concat(before, "})").concat(regItem, "*(").concat(regItem, "{").concat(after, "})");
|
|
388
|
+
var reg = new RegExp(regExp);
|
|
389
|
+
return field.replace(reg, "$1".concat("*".repeat(sensitiveLen), "$2"));
|
|
390
|
+
};
|
|
391
|
+
return ToolsClass;
|
|
392
|
+
}());
|
|
393
|
+
exports.default = new ToolsClass();
|