@haluo/util 2.0.33 → 2.0.35
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 +3 -0
- package/dist/index.js +23 -19
- package/dist/modules/app-call/configs.d.ts +9 -0
- package/dist/modules/app-call/configs.js +44 -0
- package/dist/modules/app-call/core.d.ts +53 -0
- package/dist/modules/app-call/core.js +175 -0
- package/dist/modules/app-call/extensions.d.ts +187 -0
- package/dist/modules/app-call/extensions.js +1297 -0
- package/dist/modules/app-call/index.d.ts +16 -0
- package/dist/modules/app-call/index.js +84 -0
- package/dist/modules/app-call/offline.d.ts +12 -0
- package/dist/modules/app-call/offline.js +191 -0
- package/dist/modules/app-call/types.d.ts +67 -0
- package/dist/modules/app-call/types.js +4 -0
- package/dist/modules/cookie/index.js +22 -17
- package/dist/modules/date/index.js +54 -48
- package/dist/modules/dom/index.js +21 -15
- package/dist/modules/filter/index.js +14 -8
- package/dist/modules/format/index.js +9 -5
- package/dist/modules/match/index.js +8 -5
- package/dist/modules/monitor/lib/jsError.js +27 -38
- package/dist/modules/monitor/lib/timing.js +15 -17
- package/dist/modules/monitor/lib/xhr.js +26 -25
- package/dist/modules/monitor/utils/tracker.js +22 -10
- package/dist/modules/number/index.js +33 -30
- package/dist/modules/open-app/index.d.ts +3 -7
- package/dist/modules/open-app/index.js +55 -63
- package/dist/modules/sentry/index.js +16 -12
- package/dist/modules/tools/index.js +164 -154
- package/dist/modules/track/index.d.ts +122 -0
- package/dist/modules/track/index.js +421 -0
- package/dist/modules/track/types.d.ts +108 -0
- package/dist/modules/track/types.js +4 -0
- package/dist/modules/upload/aliOss.d.ts +52 -5
- package/dist/modules/upload/aliOss.js +589 -378
- package/dist/modules/upload/index.js +32 -29
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +27 -2
|
@@ -4,52 +4,58 @@
|
|
|
4
4
|
* @createBy: @2021.08.17
|
|
5
5
|
*/
|
|
6
6
|
'use strict';
|
|
7
|
-
|
|
7
|
+
var DomClass = /** @class */ (function () {
|
|
8
|
+
function DomClass() {
|
|
9
|
+
}
|
|
8
10
|
/**
|
|
9
11
|
* 创建一个子元素并添加至父节点
|
|
10
12
|
* @param {Object} { name = 'div', innerHTML = '', style = {}, parent, }
|
|
11
13
|
* @return {String}
|
|
12
14
|
*/
|
|
13
|
-
createElement
|
|
15
|
+
DomClass.prototype.createElement = function (_a) {
|
|
16
|
+
var _b = _a.name, name = _b === void 0 ? 'div' : _b, _c = _a.innerHTML, innerHTML = _c === void 0 ? '' : _c, _d = _a.style, style = _d === void 0 ? {} : _d, parent = _a.parent;
|
|
14
17
|
if (!(window && window.document)) {
|
|
15
18
|
return new Error('仅支持浏览器');
|
|
16
19
|
}
|
|
17
|
-
|
|
20
|
+
var element = document.createElement(name);
|
|
18
21
|
element.innerHTML = innerHTML;
|
|
19
|
-
Object.keys(style).map((_)
|
|
22
|
+
Object.keys(style).map(function (_) { return element.style[_] = style[_]; });
|
|
20
23
|
if (parent) {
|
|
21
|
-
|
|
24
|
+
var body = document.querySelector(parent);
|
|
22
25
|
body && body.append(element);
|
|
23
26
|
}
|
|
24
27
|
return element;
|
|
25
|
-
}
|
|
28
|
+
};
|
|
26
29
|
/**
|
|
27
30
|
* 获取文本中的url并用a标签包裹
|
|
28
31
|
* @param {Object} ICookie
|
|
29
32
|
*/
|
|
30
|
-
wrapperA(text) {
|
|
33
|
+
DomClass.prototype.wrapperA = function (text) {
|
|
31
34
|
if (!(window && window.document)) {
|
|
32
35
|
return new Error('仅支持浏览器');
|
|
33
36
|
}
|
|
34
37
|
return text.replace(/((https|http|ftp|file):\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|])/g, '<a href="$1">$1</a>');
|
|
35
|
-
}
|
|
38
|
+
};
|
|
36
39
|
/**
|
|
37
40
|
* 对象转化为formdata
|
|
38
41
|
* getFormData({a: 1, b: 2})
|
|
39
42
|
* @param {Object} object
|
|
40
43
|
*/
|
|
41
|
-
getFormData(object) {
|
|
42
|
-
|
|
43
|
-
Object.keys(object).forEach(key
|
|
44
|
-
|
|
44
|
+
DomClass.prototype.getFormData = function (object) {
|
|
45
|
+
var formData = new FormData();
|
|
46
|
+
Object.keys(object).forEach(function (key) {
|
|
47
|
+
var value = object[key];
|
|
45
48
|
if (Array.isArray(value)) {
|
|
46
|
-
value.forEach((subValue, i)
|
|
49
|
+
value.forEach(function (subValue, i) {
|
|
50
|
+
return formData.append(key + "[".concat(i, "]"), subValue);
|
|
51
|
+
});
|
|
47
52
|
}
|
|
48
53
|
else {
|
|
49
54
|
formData.append(key, object[key]);
|
|
50
55
|
}
|
|
51
56
|
});
|
|
52
57
|
return formData;
|
|
53
|
-
}
|
|
54
|
-
|
|
58
|
+
};
|
|
59
|
+
return DomClass;
|
|
60
|
+
}());
|
|
55
61
|
export default new DomClass();
|
|
@@ -7,32 +7,38 @@
|
|
|
7
7
|
import dateClass from '../date';
|
|
8
8
|
import numberClass from '../number';
|
|
9
9
|
import toolsClass from '../tools';
|
|
10
|
-
|
|
10
|
+
var FilterClass = /** @class */ (function () {
|
|
11
|
+
function FilterClass() {
|
|
12
|
+
}
|
|
11
13
|
/**
|
|
12
14
|
* 格式化时间,示例:1586840260500 | format('YYYY-MM-DD HH:mm:ss')
|
|
13
15
|
* @param {String|Number} date
|
|
14
16
|
* @param {String} fmt 'YYYY-MM-DD HH:mm:ss'
|
|
15
17
|
* @return {String} 'YYYY-MM-DD HH:mm:ss'
|
|
16
18
|
*/
|
|
17
|
-
format(date, fmt
|
|
19
|
+
FilterClass.prototype.format = function (date, fmt) {
|
|
20
|
+
if (fmt === void 0) { fmt = 'YYYY-MM-DD HH:mm:ss'; }
|
|
18
21
|
return dateClass.format(date, fmt);
|
|
19
|
-
}
|
|
22
|
+
};
|
|
20
23
|
/**
|
|
21
24
|
* 格式化金额,示例:123456 | formatMoney
|
|
22
25
|
* @param {Number} num
|
|
23
26
|
* @return {String} 123,456
|
|
24
27
|
*/
|
|
25
|
-
formatMoney(money) {
|
|
28
|
+
FilterClass.prototype.formatMoney = function (money) {
|
|
26
29
|
return numberClass.formatMoney(money);
|
|
27
|
-
}
|
|
30
|
+
};
|
|
28
31
|
/**
|
|
29
32
|
* 截取数组或字符串,示例:'1234' | slice(3)
|
|
30
33
|
* @param {Array|String} target 数组或字符串
|
|
31
34
|
* @param {Number} length 截取长度,从0开始
|
|
32
35
|
* @return {any}
|
|
33
36
|
*/
|
|
34
|
-
slice
|
|
37
|
+
FilterClass.prototype.slice = function (target, length) {
|
|
38
|
+
if (target === void 0) { target = ''; }
|
|
39
|
+
if (length === void 0) { length = 0; }
|
|
35
40
|
return toolsClass.slice(target, length);
|
|
36
|
-
}
|
|
37
|
-
|
|
41
|
+
};
|
|
42
|
+
return FilterClass;
|
|
43
|
+
}());
|
|
38
44
|
export default new FilterClass();
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
var Format = /** @class */ (function () {
|
|
2
|
+
function Format() {
|
|
3
|
+
}
|
|
2
4
|
/**
|
|
3
5
|
* @desc 对于对象非数字与布尔值的value,当其为falsy时,转换成separator
|
|
4
6
|
* @param {object} obj 传入的对象
|
|
@@ -6,11 +8,13 @@ class Format {
|
|
|
6
8
|
* transformObjectNullVal({ a: null, b: 0}, '23') // {a: "23", b: 0}
|
|
7
9
|
* @return {object}
|
|
8
10
|
*/
|
|
9
|
-
transformObjectNullVal(obj, separator
|
|
10
|
-
|
|
11
|
+
Format.prototype.transformObjectNullVal = function (obj, separator) {
|
|
12
|
+
if (separator === void 0) { separator = '-'; }
|
|
13
|
+
return Object.keys(obj).reduce(function (cur, key) {
|
|
11
14
|
cur[key] = obj[key] || ((obj[key] === 0 || obj[key] === false) ? obj[key] : separator);
|
|
12
15
|
return cur;
|
|
13
16
|
}, {});
|
|
14
|
-
}
|
|
15
|
-
|
|
17
|
+
};
|
|
18
|
+
return Format;
|
|
19
|
+
}());
|
|
16
20
|
export default new Format();
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
* @Author: wanghui
|
|
4
4
|
*/
|
|
5
5
|
'use strict';
|
|
6
|
-
|
|
6
|
+
var MatchClass = /** @class */ (function () {
|
|
7
|
+
function MatchClass() {
|
|
8
|
+
}
|
|
7
9
|
/**
|
|
8
10
|
* 根据类型返回正则
|
|
9
11
|
* @param {String} str 检测的内容
|
|
@@ -11,8 +13,8 @@ class MatchClass {
|
|
|
11
13
|
* checkType('10.120.33.11', 'ip') // true
|
|
12
14
|
* @return {Boolean} true or false
|
|
13
15
|
*/
|
|
14
|
-
checkType(str, type) {
|
|
15
|
-
|
|
16
|
+
MatchClass.prototype.checkType = function (str, type) {
|
|
17
|
+
var regexp = {
|
|
16
18
|
'ip': /((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}/.test(str),
|
|
17
19
|
'port': /^(\d|[1-5]\d{4}|6[1-4]\d{3}|65[1-4]\d{2}|655[1-2]\d|6553[1-5])$/.test(str),
|
|
18
20
|
'phone': /^1[3|4|5|6|7|8][0-9]{9}$/.test(str),
|
|
@@ -22,6 +24,7 @@ class MatchClass {
|
|
|
22
24
|
'url': /[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/i.test(str)
|
|
23
25
|
};
|
|
24
26
|
return regexp[type];
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
+
};
|
|
28
|
+
return MatchClass;
|
|
29
|
+
}());
|
|
27
30
|
export default new MatchClass();
|
|
@@ -1,40 +1,37 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
1
12
|
import track from '../utils/tracker';
|
|
2
|
-
export function injectJsError(data
|
|
3
|
-
|
|
13
|
+
export function injectJsError(data) {
|
|
14
|
+
if (data === void 0) { data = {}; }
|
|
15
|
+
window.addEventListener('error', function (e) {
|
|
4
16
|
if (e.target && (e.target.src || e.target.href)) {
|
|
5
|
-
track.send({
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
title: 'resourceError',
|
|
9
|
-
filename: e.target.src || e.target.href,
|
|
10
|
-
tagName: e.target.tagName,
|
|
11
|
-
reason: e.target.src || e.target.href,
|
|
12
|
-
...data
|
|
13
|
-
// selector: lastEvent ? get
|
|
14
|
-
});
|
|
17
|
+
track.send(__assign({ kind: 'stability', type: 'error', title: 'resourceError', filename: e.target.src || e.target.href, tagName: e.target.tagName, reason: e.target.src || e.target.href }, data
|
|
18
|
+
// selector: lastEvent ? get
|
|
19
|
+
));
|
|
15
20
|
return;
|
|
16
21
|
}
|
|
17
|
-
track.send({
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
title: 'jsError',
|
|
21
|
-
message: e.message,
|
|
22
|
-
filename: e.filename,
|
|
23
|
-
position: `${e.lineno}:${e.colno}`,
|
|
24
|
-
reason: e.error.stack,
|
|
25
|
-
...data
|
|
26
|
-
// selector: lastEvent ? get
|
|
27
|
-
});
|
|
22
|
+
track.send(__assign({ kind: 'stability', type: 'error', title: 'jsError', message: e.message, filename: e.filename, position: "".concat(e.lineno, ":").concat(e.colno), reason: e.error.stack }, data
|
|
23
|
+
// selector: lastEvent ? get
|
|
24
|
+
));
|
|
28
25
|
}, true);
|
|
29
|
-
window.addEventListener('unhandledrejection', (e)
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
window.addEventListener('unhandledrejection', function (e) {
|
|
27
|
+
var message, filename, line, column, stack;
|
|
28
|
+
var reason = e.reason;
|
|
32
29
|
if (typeof reason === 'string') {
|
|
33
30
|
message = reason;
|
|
34
31
|
}
|
|
35
32
|
else if (typeof reason === 'object') {
|
|
36
33
|
if (reason.stack) {
|
|
37
|
-
|
|
34
|
+
var matchResult = reason.stack.match(/at\s+(.+):(\d+):(\d+)/);
|
|
38
35
|
filename = matchResult[1];
|
|
39
36
|
line = matchResult[2];
|
|
40
37
|
column = matchResult[3];
|
|
@@ -42,16 +39,8 @@ export function injectJsError(data = {}) {
|
|
|
42
39
|
message = reason.message;
|
|
43
40
|
stack = reason.stack;
|
|
44
41
|
}
|
|
45
|
-
track.send({
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
title: 'promiseError',
|
|
49
|
-
message,
|
|
50
|
-
filename,
|
|
51
|
-
position: `${line}:${column}`,
|
|
52
|
-
reason: stack,
|
|
53
|
-
...data
|
|
54
|
-
// selector: lastEvent ? get
|
|
55
|
-
});
|
|
42
|
+
track.send(__assign({ kind: 'stability', type: 'error', title: 'promiseError', message: message, filename: filename, position: "".concat(line, ":").concat(column), reason: stack }, data
|
|
43
|
+
// selector: lastEvent ? get
|
|
44
|
+
));
|
|
56
45
|
});
|
|
57
46
|
}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import onload from '../utils/onload';
|
|
2
2
|
import tracker from '../utils/tracker';
|
|
3
3
|
export default function timing() {
|
|
4
|
-
|
|
5
|
-
new PerformanceObserver((entryList, observer)
|
|
6
|
-
|
|
4
|
+
var FMP, LCP;
|
|
5
|
+
new PerformanceObserver(function (entryList, observer) {
|
|
6
|
+
var perfEntries = entryList.getEntries();
|
|
7
7
|
FMP = perfEntries[0];
|
|
8
8
|
observer.disconnect(); // 不再观察
|
|
9
9
|
}).observe({ entryTypes: ['element'] }); // 观察页面中有意义的元素
|
|
10
|
-
new PerformanceObserver((entryList, observer)
|
|
11
|
-
|
|
10
|
+
new PerformanceObserver(function (entryList, observer) {
|
|
11
|
+
var perfEntries = entryList.getEntries();
|
|
12
12
|
LCP = perfEntries[0];
|
|
13
13
|
observer.disconnect(); // 不再观察
|
|
14
14
|
}).observe({ entryTypes: ['largest-contentful-paint'] }); // 观察页面中最大的元素
|
|
15
|
-
new PerformanceObserver((entryList, observer)
|
|
16
|
-
|
|
15
|
+
new PerformanceObserver(function (entryList, observer) {
|
|
16
|
+
var firstInput = entryList.getEntries();
|
|
17
17
|
console.log('FID', firstInput);
|
|
18
18
|
if (firstInput) {
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
var inputDelay = firstInput.processingStart - firstInput.startTime;
|
|
20
|
+
var duration = firstInput.duration;
|
|
21
21
|
if (inputDelay > 0 || duration > 0) {
|
|
22
22
|
tracker.send({
|
|
23
23
|
kind: 'experience',
|
|
24
24
|
type: 'firstInputDelay',
|
|
25
|
-
inputDelay,
|
|
26
|
-
duration,
|
|
25
|
+
inputDelay: inputDelay,
|
|
26
|
+
duration: duration,
|
|
27
27
|
startTime: firstInput.startTime
|
|
28
28
|
});
|
|
29
29
|
}
|
|
@@ -31,11 +31,9 @@ export default function timing() {
|
|
|
31
31
|
observer.disconnect(); // 不再观察
|
|
32
32
|
}).observe({ type: 'first-input', buffered: true }); // 观察页面中最大的元素
|
|
33
33
|
onload(function () {
|
|
34
|
-
setTimeout(()
|
|
34
|
+
setTimeout(function () {
|
|
35
35
|
console.dir(window.performance);
|
|
36
|
-
|
|
37
|
-
// loadEventEnd
|
|
38
|
-
} = performance.getEntriesByType('navigation')[0];
|
|
36
|
+
var _a = performance.getEntriesByType('navigation')[0], fetchStart = _a.fetchStart, connectStart = _a.connectStart, connectEnd = _a.connectEnd, requestStart = _a.requestStart, responseStart = _a.responseStart, responseEnd = _a.responseEnd, domInteractive = _a.domInteractive, domContentLoadedEventStart = _a.domContentLoadedEventStart, domContentLoadedEventEnd = _a.domContentLoadedEventEnd, loadEventStart = _a.loadEventStart;
|
|
39
37
|
tracker.send({
|
|
40
38
|
kind: 'experience',
|
|
41
39
|
type: 'timing',
|
|
@@ -46,8 +44,8 @@ export default function timing() {
|
|
|
46
44
|
timeToInteractive: domInteractive - fetchStart,
|
|
47
45
|
loadTime: loadEventStart - fetchStart // 完整的页面加载时间
|
|
48
46
|
});
|
|
49
|
-
|
|
50
|
-
|
|
47
|
+
var FP = performance.getEntriesByName('first-paint')[0];
|
|
48
|
+
var FCP = performance.getEntriesByName('first-contentful-paint')[0];
|
|
51
49
|
console.log('FP', FP);
|
|
52
50
|
console.log('FCP', FCP);
|
|
53
51
|
console.log('FMP', FMP);
|
|
@@ -1,37 +1,38 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
1
12
|
import tracker from "../utils/tracker";
|
|
2
|
-
export default function injectXHR(data
|
|
3
|
-
|
|
4
|
-
|
|
13
|
+
export default function injectXHR(data) {
|
|
14
|
+
if (data === void 0) { data = {}; }
|
|
15
|
+
var XMLHttpRequest = window.XMLHttpRequest;
|
|
16
|
+
var oldOpen = XMLHttpRequest.prototype.open;
|
|
5
17
|
XMLHttpRequest.prototype.open = function (method, url, async) {
|
|
6
|
-
this.logData = { method, url, async };
|
|
18
|
+
this.logData = { method: method, url: url, async: async };
|
|
7
19
|
return oldOpen.apply(this, arguments);
|
|
8
20
|
};
|
|
9
|
-
|
|
21
|
+
var oldSend = XMLHttpRequest.prototype.send;
|
|
10
22
|
XMLHttpRequest.prototype.send = function (body) {
|
|
23
|
+
var _this = this;
|
|
11
24
|
if (this.logData) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
if (
|
|
25
|
+
var startTime_1 = Date.now();
|
|
26
|
+
var handler = function (type) { return function (event) {
|
|
27
|
+
if (_this.logData.url.indexOf('app/collect/original/info/report/v2') > -1)
|
|
15
28
|
return;
|
|
16
29
|
if (type !== 'error')
|
|
17
30
|
return;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
tracker.send({
|
|
22
|
-
|
|
23
|
-
type: 'xhr',
|
|
24
|
-
eventType: event.type,
|
|
25
|
-
pathname: this.logData.url,
|
|
26
|
-
status: status + '-' + statusText,
|
|
27
|
-
duration,
|
|
28
|
-
response: this.response ? JSON.stringify(this.response) : '',
|
|
29
|
-
params: body || '',
|
|
30
|
-
title: 'xhr',
|
|
31
|
-
reason: status + '-' + statusText + ` ${this.logData.url} ${this.response ? JSON.stringify(this.response) : ''}`,
|
|
32
|
-
...data
|
|
33
|
-
});
|
|
34
|
-
};
|
|
31
|
+
var duration = Date.now() - startTime_1;
|
|
32
|
+
var status = _this.status;
|
|
33
|
+
var statusText = _this.statusText;
|
|
34
|
+
tracker.send(__assign({ kind: 'stability', type: 'xhr', eventType: event.type, pathname: _this.logData.url, status: status + '-' + statusText, duration: duration, response: _this.response ? JSON.stringify(_this.response) : '', params: body || '', title: 'xhr', reason: status + '-' + statusText + " ".concat(_this.logData.url, " ").concat(_this.response ? JSON.stringify(_this.response) : '') }, data));
|
|
35
|
+
}; };
|
|
35
36
|
this.addEventListener('load', handler('load'), false);
|
|
36
37
|
this.addEventListener('error', handler('error'), false);
|
|
37
38
|
this.addEventListener('abort', handler('abort'), false);
|
|
@@ -1,19 +1,30 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
1
12
|
import { v4 as uuidv4 } from 'uuid';
|
|
2
13
|
// import Parser from 'ua-parser-js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
constructor() {
|
|
14
|
+
var SendTracker = /** @class */ (function () {
|
|
15
|
+
function SendTracker() {
|
|
6
16
|
this.url = '';
|
|
7
17
|
}
|
|
8
|
-
send
|
|
9
|
-
|
|
18
|
+
SendTracker.prototype.send = function (data) {
|
|
19
|
+
if (data === void 0) { data = {}; }
|
|
20
|
+
var host = window.location.host;
|
|
10
21
|
if (host.indexOf('localhost') > -1)
|
|
11
22
|
return;
|
|
12
|
-
|
|
23
|
+
var reg = /((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}/g;
|
|
13
24
|
if (reg.test(host))
|
|
14
25
|
return;
|
|
15
|
-
|
|
16
|
-
|
|
26
|
+
var log = __assign(__assign({}, getExtraData()), data);
|
|
27
|
+
var formBody = [];
|
|
17
28
|
for (var property in log) {
|
|
18
29
|
var encodedKey = encodeURIComponent(property);
|
|
19
30
|
var encodedValue = encodeURIComponent(log[property]);
|
|
@@ -31,8 +42,9 @@ class SendTracker {
|
|
|
31
42
|
// }).catch((e) => {
|
|
32
43
|
// console.log(e)
|
|
33
44
|
// })
|
|
34
|
-
}
|
|
35
|
-
|
|
45
|
+
};
|
|
46
|
+
return SendTracker;
|
|
47
|
+
}());
|
|
36
48
|
function getExtraData() {
|
|
37
49
|
return {
|
|
38
50
|
deviceId: uuidv4(),
|
|
@@ -4,31 +4,33 @@
|
|
|
4
4
|
* @createBy: @2020.05.26
|
|
5
5
|
*/
|
|
6
6
|
'use strict';
|
|
7
|
-
|
|
7
|
+
var NumberClass = /** @class */ (function () {
|
|
8
|
+
function NumberClass() {
|
|
9
|
+
}
|
|
8
10
|
/**
|
|
9
11
|
* 个位数前面补0
|
|
10
12
|
* @param {Number} num 需要格式化的数字
|
|
11
13
|
* @return {String} '01'
|
|
12
14
|
*/
|
|
13
|
-
formatNumber(num) {
|
|
14
|
-
|
|
15
|
+
NumberClass.prototype.formatNumber = function (num) {
|
|
16
|
+
var res = num.toString();
|
|
15
17
|
return res[1] ? res : '0' + res;
|
|
16
|
-
}
|
|
18
|
+
};
|
|
17
19
|
/**
|
|
18
20
|
* 将手机号中间部分替换为星号
|
|
19
21
|
* @param {String} phone 手机号码
|
|
20
22
|
* @return {String} 131****1111
|
|
21
23
|
*/
|
|
22
|
-
formatPhone(phone) {
|
|
24
|
+
NumberClass.prototype.formatPhone = function (phone) {
|
|
23
25
|
return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
|
|
24
|
-
}
|
|
26
|
+
};
|
|
25
27
|
/**
|
|
26
28
|
* 格式化数字 万
|
|
27
29
|
* @param {Number} num
|
|
28
30
|
* @return {String} 12.3万
|
|
29
31
|
*/
|
|
30
|
-
convertToWan(num) {
|
|
31
|
-
|
|
32
|
+
NumberClass.prototype.convertToWan = function (num) {
|
|
33
|
+
var result = '';
|
|
32
34
|
if (num < 10000) {
|
|
33
35
|
result = num;
|
|
34
36
|
}
|
|
@@ -36,14 +38,14 @@ class NumberClass {
|
|
|
36
38
|
result = (num / 10000).toFixed(1) + '万';
|
|
37
39
|
}
|
|
38
40
|
return result;
|
|
39
|
-
}
|
|
41
|
+
};
|
|
40
42
|
/**
|
|
41
43
|
* 格式化数字 k
|
|
42
44
|
* @param {Number} num
|
|
43
45
|
* @return {String} 1.2k
|
|
44
46
|
*/
|
|
45
|
-
convertToThousand(num) {
|
|
46
|
-
|
|
47
|
+
NumberClass.prototype.convertToThousand = function (num) {
|
|
48
|
+
var result = '';
|
|
47
49
|
if (num < 1000) {
|
|
48
50
|
result = num;
|
|
49
51
|
}
|
|
@@ -51,28 +53,28 @@ class NumberClass {
|
|
|
51
53
|
result = (num / 1000).toFixed(1) + 'k';
|
|
52
54
|
}
|
|
53
55
|
return result;
|
|
54
|
-
}
|
|
56
|
+
};
|
|
55
57
|
/**
|
|
56
58
|
* 随机数,指定范围
|
|
57
59
|
* @param {Number} min 开始
|
|
58
60
|
* @param {Number} max 结束
|
|
59
61
|
* @return {Number|Object}
|
|
60
62
|
*/
|
|
61
|
-
random(min, max) {
|
|
63
|
+
NumberClass.prototype.random = function (min, max) {
|
|
62
64
|
if (arguments.length === 2) {
|
|
63
65
|
return Math.floor(min + Math.random() * ((max + 1) - min));
|
|
64
66
|
}
|
|
65
67
|
else {
|
|
66
68
|
return null;
|
|
67
69
|
}
|
|
68
|
-
}
|
|
70
|
+
};
|
|
69
71
|
/**
|
|
70
72
|
* 格式化金额
|
|
71
73
|
* @param {Number} num
|
|
72
74
|
* @return {String} 123,456
|
|
73
75
|
*/
|
|
74
|
-
formatMoney(money, signal) {
|
|
75
|
-
|
|
76
|
+
NumberClass.prototype.formatMoney = function (money, signal) {
|
|
77
|
+
var result = '';
|
|
76
78
|
if (money === '') {
|
|
77
79
|
return result;
|
|
78
80
|
}
|
|
@@ -86,29 +88,30 @@ class NumberClass {
|
|
|
86
88
|
return result = money;
|
|
87
89
|
}
|
|
88
90
|
signal = signal === '' ? '' : ',';
|
|
89
|
-
|
|
90
|
-
|
|
91
|
+
var price = money.split('.')[0] + '';
|
|
92
|
+
var pricePoint = money.split('.')[1];
|
|
91
93
|
result = price.length > 6 ?
|
|
92
|
-
|
|
94
|
+
"".concat(price.substring(0, price.length - 6)).concat(signal).concat(price.substring(price.length - 6, price.length - 3), ",").concat(price.substring(price.length - 3, price.length))
|
|
93
95
|
:
|
|
94
|
-
|
|
95
|
-
result = pricePoint ?
|
|
96
|
+
"".concat(price.substring(0, price.length - 3)).concat(signal).concat(price.substring(price.length - 3, price.length));
|
|
97
|
+
result = pricePoint ? "".concat(result).concat(signal).concat(pricePoint) : result;
|
|
96
98
|
return result;
|
|
97
|
-
}
|
|
99
|
+
};
|
|
98
100
|
/**
|
|
99
101
|
* 格式化手机号
|
|
100
102
|
* @param {string} number 手机号
|
|
101
103
|
* @returns {string} 格式化后的手机号 12345678901 -> 123 4567 8901
|
|
102
104
|
*/
|
|
103
|
-
formatPhoneNumber(number) {
|
|
104
|
-
|
|
105
|
+
NumberClass.prototype.formatPhoneNumber = function (number) {
|
|
106
|
+
var numStr = String(number).replace(/\s/g, '');
|
|
105
107
|
if (numStr.length < 11) {
|
|
106
108
|
return numStr;
|
|
107
109
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
return
|
|
112
|
-
}
|
|
113
|
-
|
|
110
|
+
var firstPart = numStr.slice(0, 3);
|
|
111
|
+
var secondPart = numStr.slice(3, 7);
|
|
112
|
+
var thirdPart = numStr.slice(7, 11);
|
|
113
|
+
return "".concat(firstPart, " ").concat(secondPart, " ").concat(thirdPart);
|
|
114
|
+
};
|
|
115
|
+
return NumberClass;
|
|
116
|
+
}());
|
|
114
117
|
export default new NumberClass();
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
+
import type { AppCallInstance } from '../app-call/types';
|
|
1
2
|
declare global {
|
|
2
3
|
interface Window {
|
|
3
|
-
AppCall?:
|
|
4
|
-
has: (method: string) => boolean;
|
|
5
|
-
openOtherAppUrlRouter: (params: {
|
|
6
|
-
appUrlRouter: string;
|
|
7
|
-
}) => void;
|
|
8
|
-
};
|
|
4
|
+
AppCall?: AppCallInstance;
|
|
9
5
|
}
|
|
10
6
|
}
|
|
11
7
|
interface EnvConfig {
|
|
@@ -74,7 +70,7 @@ declare class OpenAppClass {
|
|
|
74
70
|
/**
|
|
75
71
|
* 打开APP主流程
|
|
76
72
|
*/
|
|
77
|
-
invoke():
|
|
73
|
+
invoke(): any;
|
|
78
74
|
getUrl(): string | undefined;
|
|
79
75
|
/**
|
|
80
76
|
* 获取打开 app sechma url
|