@haluo/util 2.0.22 → 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.
@@ -1,40 +1,43 @@
1
- import track from '../utils/tracker';
2
- export function injectJsError(data = {}) {
3
- window.addEventListener('error', (e) => {
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.injectJsError = void 0;
18
+ var tracker_1 = __importDefault(require("../utils/tracker"));
19
+ function injectJsError(data) {
20
+ if (data === void 0) { data = {}; }
21
+ window.addEventListener('error', function (e) {
4
22
  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
- });
23
+ tracker_1.default.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
24
+ // selector: lastEvent ? get
25
+ ));
15
26
  return;
16
27
  }
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
- });
28
+ tracker_1.default.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
29
+ // selector: lastEvent ? get
30
+ ));
28
31
  }, true);
29
- window.addEventListener('unhandledrejection', (e) => {
30
- let message, filename, line, column, stack;
31
- const reason = e.reason;
32
+ window.addEventListener('unhandledrejection', function (e) {
33
+ var message, filename, line, column, stack;
34
+ var reason = e.reason;
32
35
  if (typeof reason === 'string') {
33
36
  message = reason;
34
37
  }
35
38
  else if (typeof reason === 'object') {
36
39
  if (reason.stack) {
37
- const matchResult = reason.stack.match(/at\s+(.+):(\d+):(\d+)/);
40
+ var matchResult = reason.stack.match(/at\s+(.+):(\d+):(\d+)/);
38
41
  filename = matchResult[1];
39
42
  line = matchResult[2];
40
43
  column = matchResult[3];
@@ -42,16 +45,9 @@ export function injectJsError(data = {}) {
42
45
  message = reason.message;
43
46
  stack = reason.stack;
44
47
  }
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
- });
48
+ tracker_1.default.send(__assign({ kind: 'stability', type: 'error', title: 'promiseError', message: message, filename: filename, position: "".concat(line, ":").concat(column), reason: stack }, data
49
+ // selector: lastEvent ? get
50
+ ));
56
51
  });
57
52
  }
53
+ exports.injectJsError = injectJsError;
@@ -1,42 +1,45 @@
1
- import onload from '../utils/onload';
2
- import tracker from '../utils/tracker';
3
- export default function timing() {
4
- let FMP, LCP;
5
- new PerformanceObserver((entryList, observer) => {
6
- const perfEntries = entryList.getEntries();
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var onload_1 = __importDefault(require("../utils/onload"));
7
+ var tracker_1 = __importDefault(require("../utils/tracker"));
8
+ function timing() {
9
+ var FMP, LCP;
10
+ new PerformanceObserver(function (entryList, observer) {
11
+ var perfEntries = entryList.getEntries();
7
12
  FMP = perfEntries[0];
8
13
  observer.disconnect(); // 不再观察
9
14
  }).observe({ entryTypes: ['element'] }); // 观察页面中有意义的元素
10
- new PerformanceObserver((entryList, observer) => {
11
- const perfEntries = entryList.getEntries();
15
+ new PerformanceObserver(function (entryList, observer) {
16
+ var perfEntries = entryList.getEntries();
12
17
  LCP = perfEntries[0];
13
18
  observer.disconnect(); // 不再观察
14
19
  }).observe({ entryTypes: ['largest-contentful-paint'] }); // 观察页面中最大的元素
15
- new PerformanceObserver((entryList, observer) => {
16
- const firstInput = entryList.getEntries();
20
+ new PerformanceObserver(function (entryList, observer) {
21
+ var firstInput = entryList.getEntries();
17
22
  console.log('FID', firstInput);
18
23
  if (firstInput) {
19
- let inputDelay = firstInput.processingStart - firstInput.startTime;
20
- const duration = firstInput.duration;
24
+ var inputDelay = firstInput.processingStart - firstInput.startTime;
25
+ var duration = firstInput.duration;
21
26
  if (inputDelay > 0 || duration > 0) {
22
- tracker.send({
27
+ tracker_1.default.send({
23
28
  kind: 'experience',
24
29
  type: 'firstInputDelay',
25
- inputDelay,
26
- duration,
30
+ inputDelay: inputDelay,
31
+ duration: duration,
27
32
  startTime: firstInput.startTime
28
33
  });
29
34
  }
30
35
  }
31
36
  observer.disconnect(); // 不再观察
32
37
  }).observe({ type: 'first-input', buffered: true }); // 观察页面中最大的元素
33
- onload(function () {
34
- setTimeout(() => {
38
+ (0, onload_1.default)(function () {
39
+ setTimeout(function () {
35
40
  console.dir(window.performance);
36
- const { fetchStart, connectStart, connectEnd, requestStart, responseStart, responseEnd, domInteractive, domContentLoadedEventStart, domContentLoadedEventEnd, loadEventStart,
37
- // loadEventEnd
38
- } = performance.getEntriesByType('navigation')[0];
39
- tracker.send({
41
+ 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;
42
+ tracker_1.default.send({
40
43
  kind: 'experience',
41
44
  type: 'timing',
42
45
  connectTime: connectEnd - connectStart,
@@ -46,13 +49,13 @@ export default function timing() {
46
49
  timeToInteractive: domInteractive - fetchStart,
47
50
  loadTime: loadEventStart - fetchStart // 完整的页面加载时间
48
51
  });
49
- let FP = performance.getEntriesByName('first-paint')[0];
50
- let FCP = performance.getEntriesByName('first-contentful-paint')[0];
52
+ var FP = performance.getEntriesByName('first-paint')[0];
53
+ var FCP = performance.getEntriesByName('first-contentful-paint')[0];
51
54
  console.log('FP', FP);
52
55
  console.log('FCP', FCP);
53
56
  console.log('FMP', FMP);
54
57
  console.log('LCP', LCP);
55
- tracker.send({
58
+ tracker_1.default.send({
56
59
  kind: 'experience',
57
60
  type: 'paint',
58
61
  FP: FP.startTime,
@@ -63,3 +66,4 @@ export default function timing() {
63
66
  }, 3000);
64
67
  });
65
68
  }
69
+ exports.default = timing;
@@ -1,37 +1,43 @@
1
- import tracker from "../utils/tracker";
2
- export default function injectXHR(data = {}) {
3
- let XMLHttpRequest = window.XMLHttpRequest;
4
- let oldOpen = XMLHttpRequest.prototype.open;
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ var tracker_1 = __importDefault(require("../utils/tracker"));
18
+ function injectXHR(data) {
19
+ if (data === void 0) { data = {}; }
20
+ var XMLHttpRequest = window.XMLHttpRequest;
21
+ var oldOpen = XMLHttpRequest.prototype.open;
5
22
  XMLHttpRequest.prototype.open = function (method, url, async) {
6
- this.logData = { method, url, async };
23
+ this.logData = { method: method, url: url, async: async };
7
24
  return oldOpen.apply(this, arguments);
8
25
  };
9
- let oldSend = XMLHttpRequest.prototype.send;
26
+ var oldSend = XMLHttpRequest.prototype.send;
10
27
  XMLHttpRequest.prototype.send = function (body) {
28
+ var _this = this;
11
29
  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)
30
+ var startTime_1 = Date.now();
31
+ var handler = function (type) { return function (event) {
32
+ if (_this.logData.url.indexOf('app/collect/original/info/report/v2') > -1)
15
33
  return;
16
34
  if (type !== 'error')
17
35
  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
- };
36
+ var duration = Date.now() - startTime_1;
37
+ var status = _this.status;
38
+ var statusText = _this.statusText;
39
+ tracker_1.default.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));
40
+ }; };
35
41
  this.addEventListener('load', handler('load'), false);
36
42
  this.addEventListener('error', handler('error'), false);
37
43
  this.addEventListener('abort', handler('abort'), false);
@@ -39,3 +45,4 @@ export default function injectXHR(data = {}) {
39
45
  return oldSend.apply(this, arguments);
40
46
  };
41
47
  }
48
+ exports.default = injectXHR;
@@ -1,4 +1,6 @@
1
- export default function onload(cb) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function onload(cb) {
2
4
  if (document.readyState) {
3
5
  cb();
4
6
  }
@@ -6,3 +8,4 @@ export default function onload(cb) {
6
8
  window.addEventListener('load', cb);
7
9
  }
8
10
  }
11
+ exports.default = onload;
@@ -1,19 +1,32 @@
1
- import { v4 as uuidv4 } from 'uuid';
2
- // import Parser from 'ua-parser-js';
3
- class SendTracker {
4
- url;
5
- constructor() {
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ var uuidv4 = require('uuid').v4;
15
+ // const Parser = require('ua-parser-js');
16
+ var SendTracker = /** @class */ (function () {
17
+ function SendTracker() {
6
18
  this.url = '';
7
19
  }
8
- send(data = {}) {
9
- const host = window.location.host;
20
+ SendTracker.prototype.send = function (data) {
21
+ if (data === void 0) { data = {}; }
22
+ var host = window.location.host;
10
23
  if (host.indexOf('localhost') > -1)
11
24
  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;
25
+ 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
26
  if (reg.test(host))
14
27
  return;
15
- const log = { ...getExtraData(), ...data };
16
- let formBody = [];
28
+ var log = __assign(__assign({}, getExtraData()), data);
29
+ var formBody = [];
17
30
  for (var property in log) {
18
31
  var encodedKey = encodeURIComponent(property);
19
32
  var encodedValue = encodeURIComponent(log[property]);
@@ -31,8 +44,9 @@ class SendTracker {
31
44
  // }).catch((e) => {
32
45
  // console.log(e)
33
46
  // })
34
- }
35
- }
47
+ };
48
+ return SendTracker;
49
+ }());
36
50
  function getExtraData() {
37
51
  return {
38
52
  deviceId: uuidv4(),
@@ -46,4 +60,4 @@ function getExtraData() {
46
60
  // userAgent: new Parser().getResult()
47
61
  };
48
62
  }
49
- export default new SendTracker();
63
+ exports.default = new SendTracker();
@@ -4,31 +4,34 @@
4
4
  * @createBy: @2020.05.26
5
5
  */
6
6
  'use strict';
7
- class NumberClass {
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ var NumberClass = /** @class */ (function () {
9
+ function NumberClass() {
10
+ }
8
11
  /**
9
12
  * 个位数前面补0
10
13
  * @param {Number} num 需要格式化的数字
11
14
  * @return {String} '01'
12
15
  */
13
- formatNumber(num) {
14
- const res = num.toString();
16
+ NumberClass.prototype.formatNumber = function (num) {
17
+ var res = num.toString();
15
18
  return res[1] ? res : '0' + res;
16
- }
19
+ };
17
20
  /**
18
21
  * 将手机号中间部分替换为星号
19
22
  * @param {String} phone 手机号码
20
23
  * @return {String} 131****1111
21
24
  */
22
- formatPhone(phone) {
25
+ NumberClass.prototype.formatPhone = function (phone) {
23
26
  return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
24
- }
27
+ };
25
28
  /**
26
29
  * 格式化数字 万
27
30
  * @param {Number} num
28
31
  * @return {String} 12.3万
29
32
  */
30
- convertToWan(num) {
31
- let result = '';
33
+ NumberClass.prototype.convertToWan = function (num) {
34
+ var result = '';
32
35
  if (num < 10000) {
33
36
  result = num;
34
37
  }
@@ -36,14 +39,14 @@ class NumberClass {
36
39
  result = (num / 10000).toFixed(1) + '万';
37
40
  }
38
41
  return result;
39
- }
42
+ };
40
43
  /**
41
44
  * 格式化数字 k
42
45
  * @param {Number} num
43
46
  * @return {String} 1.2k
44
47
  */
45
- convertToThousand(num) {
46
- let result = '';
48
+ NumberClass.prototype.convertToThousand = function (num) {
49
+ var result = '';
47
50
  if (num < 1000) {
48
51
  result = num;
49
52
  }
@@ -51,28 +54,28 @@ class NumberClass {
51
54
  result = (num / 1000).toFixed(1) + 'k';
52
55
  }
53
56
  return result;
54
- }
57
+ };
55
58
  /**
56
59
  * 随机数,指定范围
57
60
  * @param {Number} min 开始
58
61
  * @param {Number} max 结束
59
62
  * @return {Number|Object}
60
63
  */
61
- random(min, max) {
64
+ NumberClass.prototype.random = function (min, max) {
62
65
  if (arguments.length === 2) {
63
66
  return Math.floor(min + Math.random() * ((max + 1) - min));
64
67
  }
65
68
  else {
66
69
  return null;
67
70
  }
68
- }
71
+ };
69
72
  /**
70
73
  * 格式化金额
71
74
  * @param {Number} num
72
75
  * @return {String} 123,456
73
76
  */
74
- formatMoney(money, signal) {
75
- let result = '';
77
+ NumberClass.prototype.formatMoney = function (money, signal) {
78
+ var result = '';
76
79
  if (money === '') {
77
80
  return result;
78
81
  }
@@ -86,29 +89,30 @@ class NumberClass {
86
89
  return result = money;
87
90
  }
88
91
  signal = signal === '' ? '' : ',';
89
- let price = money.split('.')[0] + '';
90
- const pricePoint = money.split('.')[1];
92
+ var price = money.split('.')[0] + '';
93
+ var pricePoint = money.split('.')[1];
91
94
  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)}`
95
+ "".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
96
  :
94
- `${price.substring(0, price.length - 3)}${signal}${price.substring(price.length - 3, price.length)}`;
95
- result = pricePoint ? `${result}${signal}${pricePoint}` : result;
97
+ "".concat(price.substring(0, price.length - 3)).concat(signal).concat(price.substring(price.length - 3, price.length));
98
+ result = pricePoint ? "".concat(result).concat(signal).concat(pricePoint) : result;
96
99
  return result;
97
- }
100
+ };
98
101
  /**
99
102
  * 格式化手机号
100
103
  * @param {string} number 手机号
101
104
  * @returns {string} 格式化后的手机号 12345678901 -> 123 4567 8901
102
105
  */
103
- formatPhoneNumber(number) {
104
- const numStr = String(number).replace(/\s/g, '');
106
+ NumberClass.prototype.formatPhoneNumber = function (number) {
107
+ var numStr = String(number).replace(/\s/g, '');
105
108
  if (numStr.length < 11) {
106
109
  return numStr;
107
110
  }
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
- }
114
- export default new NumberClass();
111
+ var firstPart = numStr.slice(0, 3);
112
+ var secondPart = numStr.slice(3, 7);
113
+ var thirdPart = numStr.slice(7, 11);
114
+ return "".concat(firstPart, " ").concat(secondPart, " ").concat(thirdPart);
115
+ };
116
+ return NumberClass;
117
+ }());
118
+ exports.default = new NumberClass();