@haluo/util 2.1.5 → 2.1.8

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.
Files changed (32) hide show
  1. package/dist/index.js +20 -19
  2. package/dist/modules/app-call/configs.js +14 -6
  3. package/dist/modules/app-call/core.d.ts +1 -1
  4. package/dist/modules/app-call/core.js +59 -49
  5. package/dist/modules/app-call/extensions.d.ts +1 -1
  6. package/dist/modules/app-call/extensions.js +324 -257
  7. package/dist/modules/app-call/index.js +9 -9
  8. package/dist/modules/app-call/offline.js +42 -34
  9. package/dist/modules/cookie/index.js +22 -17
  10. package/dist/modules/date/index.js +54 -48
  11. package/dist/modules/dom/index.js +21 -15
  12. package/dist/modules/filter/index.js +14 -8
  13. package/dist/modules/format/index.js +9 -5
  14. package/dist/modules/match/index.js +8 -5
  15. package/dist/modules/monitor/lib/jsError.js +27 -38
  16. package/dist/modules/monitor/lib/timing.js +15 -17
  17. package/dist/modules/monitor/lib/xhr.js +26 -25
  18. package/dist/modules/monitor/utils/tracker.js +22 -10
  19. package/dist/modules/number/index.js +33 -30
  20. package/dist/modules/open-app/index.d.ts +1 -0
  21. package/dist/modules/open-app/index.js +55 -64
  22. package/dist/modules/sentry/index.js +16 -12
  23. package/dist/modules/tools/index.d.ts +1 -1
  24. package/dist/modules/tools/index.js +164 -154
  25. package/dist/modules/track/index.js +149 -96
  26. package/dist/modules/upload/aliOss.d.ts +36 -4
  27. package/dist/modules/upload/aliOss.js +569 -396
  28. package/dist/modules/upload/index.js +32 -29
  29. package/dist/tsconfig.tsbuildinfo +1 -1
  30. package/package.json +1 -1
  31. package/dist/modules/app-call/partner-bridge.d.ts +0 -5
  32. package/dist/modules/app-call/partner-bridge.js +0 -68
@@ -3,7 +3,9 @@
3
3
  * @Author: wanghui
4
4
  */
5
5
  'use strict';
6
- class MatchClass {
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
- const regexp = {
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
- window.addEventListener('error', (e) => {
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
- kind: 'stability',
7
- type: 'error',
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
- kind: 'stability',
19
- type: 'error',
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
- let message, filename, line, column, stack;
31
- const reason = e.reason;
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
- const matchResult = reason.stack.match(/at\s+(.+):(\d+):(\d+)/);
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
- kind: 'stability',
47
- type: 'error',
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
- let FMP, LCP;
5
- new PerformanceObserver((entryList, observer) => {
6
- const perfEntries = entryList.getEntries();
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
- const perfEntries = entryList.getEntries();
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
- const firstInput = entryList.getEntries();
15
+ new PerformanceObserver(function (entryList, observer) {
16
+ var firstInput = entryList.getEntries();
17
17
  console.log('FID', firstInput);
18
18
  if (firstInput) {
19
- let inputDelay = firstInput.processingStart - firstInput.startTime;
20
- const duration = firstInput.duration;
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
- const { fetchStart, connectStart, connectEnd, requestStart, responseStart, responseEnd, domInteractive, domContentLoadedEventStart, domContentLoadedEventEnd, loadEventStart,
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
- let FP = performance.getEntriesByName('first-paint')[0];
50
- let FCP = performance.getEntriesByName('first-contentful-paint')[0];
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
- let XMLHttpRequest = window.XMLHttpRequest;
4
- let oldOpen = XMLHttpRequest.prototype.open;
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
- let oldSend = XMLHttpRequest.prototype.send;
21
+ var oldSend = XMLHttpRequest.prototype.send;
10
22
  XMLHttpRequest.prototype.send = function (body) {
23
+ var _this = this;
11
24
  if (this.logData) {
12
- const startTime = Date.now();
13
- const handler = (type) => (event) => {
14
- if (this.logData.url.indexOf('app/collect/original/info/report/v2') > -1)
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
- let duration = Date.now() - startTime;
19
- let status = this.status;
20
- let statusText = this.statusText;
21
- tracker.send({
22
- kind: 'stability',
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
- class SendTracker {
4
- url;
5
- constructor() {
14
+ var SendTracker = /** @class */ (function () {
15
+ function SendTracker() {
6
16
  this.url = '';
7
17
  }
8
- send(data = {}) {
9
- const host = window.location.host;
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
- const 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;
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
- const log = { ...getExtraData(), ...data };
16
- let formBody = [];
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
- class NumberClass {
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
- const res = num.toString();
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
- let result = '';
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
- let result = '';
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
- let result = '';
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
- let price = money.split('.')[0] + '';
90
- const pricePoint = money.split('.')[1];
91
+ var price = money.split('.')[0] + '';
92
+ var pricePoint = money.split('.')[1];
91
93
  result = price.length > 6 ?
92
- `${price.substring(0, price.length - 6)}${signal}${price.substring(price.length - 6, price.length - 3)},${price.substring(price.length - 3, price.length)}`
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
- `${price.substring(0, price.length - 3)}${signal}${price.substring(price.length - 3, price.length)}`;
95
- result = pricePoint ? `${result}${signal}${pricePoint}` : result;
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
- const numStr = String(number).replace(/\s/g, '');
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
- const firstPart = numStr.slice(0, 3);
109
- const secondPart = numStr.slice(3, 7);
110
- const thirdPart = numStr.slice(7, 11);
111
- return `${firstPart} ${secondPart} ${thirdPart}`;
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();
@@ -54,6 +54,7 @@ declare class OpenAppClass {
54
54
  private appUrl?;
55
55
  private appStoreUrl?;
56
56
  private underway;
57
+ private isBrowser;
57
58
  /**
58
59
  * @param {Object} env - 环境配置,必须
59
60
  * @param {Function} postJddTrack - 埋点方法,必须