@haluo/util 2.0.0 → 2.0.2-0.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 +12 -1
- package/dist/index.d.ts +39 -0
- package/dist/index.js +74 -33
- package/dist/modules/cookie/index.d.ts +27 -0
- package/dist/modules/cookie/index.js +55 -54
- package/dist/modules/date/index.d.ts +52 -0
- package/dist/modules/date/index.js +192 -192
- package/dist/modules/dom/index.d.ts +28 -0
- package/dist/modules/dom/index.js +62 -62
- package/dist/modules/filter/index.d.ts +24 -0
- package/dist/modules/filter/index.js +48 -44
- package/dist/modules/format/index.d.ts +15 -0
- package/dist/modules/format/index.js +22 -21
- package/dist/modules/match/index.d.ts +12 -0
- package/dist/modules/match/index.js +31 -31
- package/dist/modules/monitor/index.d.ts +3 -0
- package/dist/modules/monitor/index.js +17 -17
- package/dist/modules/monitor/lib/jsError.d.ts +1 -0
- package/dist/modules/monitor/lib/jsError.js +53 -53
- package/dist/modules/monitor/lib/timing.d.ts +1 -0
- package/dist/modules/monitor/lib/timing.js +69 -69
- package/dist/modules/monitor/lib/xhr.d.ts +1 -0
- package/dist/modules/monitor/lib/xhr.js +48 -48
- package/dist/modules/monitor/utils/onload.d.ts +1 -0
- package/dist/modules/monitor/utils/onload.js +11 -11
- package/dist/modules/monitor/utils/tracker.d.ts +7 -0
- package/dist/modules/monitor/utils/tracker.js +63 -63
- package/dist/modules/number/index.d.ts +47 -0
- package/dist/modules/number/index.js +118 -102
- package/dist/modules/open-app/index.d.ts +84 -0
- package/dist/modules/open-app/index.js +239 -0
- package/dist/modules/sentry/index.d.ts +15 -0
- package/dist/modules/sentry/index.js +81 -81
- package/dist/modules/tools/index.d.ts +166 -0
- package/dist/modules/tools/index.js +393 -393
- package/dist/modules/upload/ALIOSS_EXAMPLE.d.ts +12 -0
- package/dist/modules/upload/ALIOSS_EXAMPLE.js +320 -0
- package/dist/modules/upload/aliOss.d.ts +324 -0
- package/dist/modules/upload/aliOss.js +838 -0
- package/dist/modules/upload/index.d.ts +51 -0
- package/dist/modules/upload/index.js +55 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.js +2 -0
- package/dist/types/modules/cookie/index.d.ts +27 -0
- package/dist/types/modules/date/index.d.ts +52 -0
- package/dist/types/modules/dom/index.d.ts +28 -0
- package/dist/types/modules/filter/index.d.ts +24 -0
- package/dist/types/modules/format/index.d.ts +15 -0
- package/dist/types/modules/match/index.d.ts +12 -0
- package/dist/types/modules/monitor/index.d.ts +3 -0
- package/dist/types/modules/monitor/lib/jsError.d.ts +1 -0
- package/dist/types/modules/monitor/lib/timing.d.ts +1 -0
- package/dist/types/modules/monitor/lib/xhr.d.ts +1 -0
- package/dist/types/modules/monitor/utils/onload.d.ts +1 -0
- package/dist/types/modules/monitor/utils/tracker.d.ts +7 -0
- package/dist/types/modules/number/index.d.ts +41 -0
- package/dist/types/modules/sentry/index.d.ts +15 -0
- package/dist/types/modules/tools/index.d.ts +166 -0
- package/dist/types/types/index.d.ts +3 -0
- package/package.json +18 -13
- package/.babelrc +0 -21
- package/.eslintrc.js +0 -216
- package/__tests__/unit/date/date.spec.js +0 -14
- package/__tests__/unit/jest.conf.js +0 -25
- package/__tests__/unit/specs/date.test.js +0 -11
- package/global.d.ts +0 -0
- package/publish.sh +0 -11
- package/specification/CSS.md +0 -25
- package/specification/JS.md +0 -9
- package/specification/VUE.md +0 -1
- package/src/consts/httpCode.js +0 -10
- package/src/index.ts +0 -51
- package/src/modules/cookie/index.ts +0 -69
- package/src/modules/date/index.ts +0 -196
- package/src/modules/dom/index.ts +0 -78
- package/src/modules/filter/index.ts +0 -43
- package/src/modules/format/index.ts +0 -19
- package/src/modules/match/index.ts +0 -31
- package/src/modules/monitor/index.ts +0 -13
- package/src/modules/monitor/lib/jsError.ts +0 -57
- package/src/modules/monitor/lib/timing.ts +0 -75
- package/src/modules/monitor/lib/xhr.ts +0 -40
- package/src/modules/monitor/utils/onload.ts +0 -8
- package/src/modules/monitor/utils/tracker.ts +0 -47
- package/src/modules/number/index.ts +0 -108
- package/src/modules/sentry/index.ts +0 -82
- package/src/modules/tools/index.ts +0 -427
- package/tsconfig.json +0 -34
|
@@ -1,44 +1,48 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file 过滤器
|
|
3
|
-
* @Author: wanghui
|
|
4
|
-
* @createBy: @2020.05.28
|
|
5
|
-
*/
|
|
6
|
-
'use strict';
|
|
7
|
-
var
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @file 过滤器
|
|
3
|
+
* @Author: wanghui
|
|
4
|
+
* @createBy: @2020.05.28
|
|
5
|
+
*/
|
|
6
|
+
'use strict';
|
|
7
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
+
};
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
var date_1 = __importDefault(require("../date"));
|
|
12
|
+
var number_1 = __importDefault(require("../number"));
|
|
13
|
+
var tools_1 = __importDefault(require("../tools"));
|
|
14
|
+
var FilterClass = /** @class */ (function () {
|
|
15
|
+
function FilterClass() {
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 格式化时间,示例:1586840260500 | format('YYYY-MM-DD HH:mm:ss')
|
|
19
|
+
* @param {String|Number} date
|
|
20
|
+
* @param {String} fmt 'YYYY-MM-DD HH:mm:ss'
|
|
21
|
+
* @return {String} 'YYYY-MM-DD HH:mm:ss'
|
|
22
|
+
*/
|
|
23
|
+
FilterClass.prototype.format = function (date, fmt) {
|
|
24
|
+
if (fmt === void 0) { fmt = 'YYYY-MM-DD HH:mm:ss'; }
|
|
25
|
+
return date_1.default.format(date, fmt);
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* 格式化金额,示例:123456 | formatMoney
|
|
29
|
+
* @param {Number} num
|
|
30
|
+
* @return {String} 123,456
|
|
31
|
+
*/
|
|
32
|
+
FilterClass.prototype.formatMoney = function (money) {
|
|
33
|
+
return number_1.default.formatMoney(money);
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* 截取数组或字符串,示例:'1234' | slice(3)
|
|
37
|
+
* @param {Array|String} target 数组或字符串
|
|
38
|
+
* @param {Number} length 截取长度,从0开始
|
|
39
|
+
* @return {any}
|
|
40
|
+
*/
|
|
41
|
+
FilterClass.prototype.slice = function (target, length) {
|
|
42
|
+
if (target === void 0) { target = ''; }
|
|
43
|
+
if (length === void 0) { length = 0; }
|
|
44
|
+
return tools_1.default.slice(target, length);
|
|
45
|
+
};
|
|
46
|
+
return FilterClass;
|
|
47
|
+
}());
|
|
48
|
+
exports.default = new FilterClass();
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface Obj {
|
|
2
|
+
[prop: string]: any;
|
|
3
|
+
}
|
|
4
|
+
declare class Format {
|
|
5
|
+
/**
|
|
6
|
+
* @desc 对于对象非数字与布尔值的value,当其为falsy时,转换成separator
|
|
7
|
+
* @param {object} obj 传入的对象
|
|
8
|
+
* @param {string} separator 替换后的值
|
|
9
|
+
* transformObjectNullVal({ a: null, b: 0}, '23') // {a: "23", b: 0}
|
|
10
|
+
* @return {object}
|
|
11
|
+
*/
|
|
12
|
+
transformObjectNullVal<T extends Obj>(obj: T, separator?: string): T;
|
|
13
|
+
}
|
|
14
|
+
declare const _default: Format;
|
|
15
|
+
export default _default;
|
|
@@ -1,21 +1,22 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
* @
|
|
8
|
-
* @param {
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var Format = /** @class */ (function () {
|
|
4
|
+
function Format() {
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* @desc 对于对象非数字与布尔值的value,当其为falsy时,转换成separator
|
|
8
|
+
* @param {object} obj 传入的对象
|
|
9
|
+
* @param {string} separator 替换后的值
|
|
10
|
+
* transformObjectNullVal({ a: null, b: 0}, '23') // {a: "23", b: 0}
|
|
11
|
+
* @return {object}
|
|
12
|
+
*/
|
|
13
|
+
Format.prototype.transformObjectNullVal = function (obj, separator) {
|
|
14
|
+
if (separator === void 0) { separator = '-'; }
|
|
15
|
+
return Object.keys(obj).reduce(function (cur, key) {
|
|
16
|
+
cur[key] = obj[key] || ((obj[key] === 0 || obj[key] === false) ? obj[key] : separator);
|
|
17
|
+
return cur;
|
|
18
|
+
}, {});
|
|
19
|
+
};
|
|
20
|
+
return Format;
|
|
21
|
+
}());
|
|
22
|
+
exports.default = new Format();
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
declare class MatchClass {
|
|
2
|
+
/**
|
|
3
|
+
* 根据类型返回正则
|
|
4
|
+
* @param {String} str 检测的内容
|
|
5
|
+
* @param {String} type 检测类型
|
|
6
|
+
* checkType('10.120.33.11', 'ip') // true
|
|
7
|
+
* @return {Boolean} true or false
|
|
8
|
+
*/
|
|
9
|
+
checkType(str: string, type: string): boolean;
|
|
10
|
+
}
|
|
11
|
+
declare const _default: MatchClass;
|
|
12
|
+
export default _default;
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file: tools 常用的工具函数
|
|
3
|
-
* @Author: wanghui
|
|
4
|
-
*/
|
|
5
|
-
'use strict';
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
var MatchClass = /** @class */ (function () {
|
|
8
|
-
function MatchClass() {
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* 根据类型返回正则
|
|
12
|
-
* @param {String} str 检测的内容
|
|
13
|
-
* @param {String} type 检测类型
|
|
14
|
-
* checkType('10.120.33.11', 'ip') // true
|
|
15
|
-
* @return {Boolean} true or false
|
|
16
|
-
*/
|
|
17
|
-
MatchClass.prototype.checkType = function (str, type) {
|
|
18
|
-
var regexp = {
|
|
19
|
-
'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),
|
|
20
|
-
'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),
|
|
21
|
-
'phone': /^1[3|4|5|6|7|8][0-9]{9}$/.test(str),
|
|
22
|
-
'number': /^[0-9]+$/.test(str),
|
|
23
|
-
'email': /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(str),
|
|
24
|
-
'IDCard': /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/.test(str),
|
|
25
|
-
'url': /[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/i.test(str)
|
|
26
|
-
};
|
|
27
|
-
return regexp[type];
|
|
28
|
-
};
|
|
29
|
-
return MatchClass;
|
|
30
|
-
}());
|
|
31
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @file: tools 常用的工具函数
|
|
3
|
+
* @Author: wanghui
|
|
4
|
+
*/
|
|
5
|
+
'use strict';
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
var MatchClass = /** @class */ (function () {
|
|
8
|
+
function MatchClass() {
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 根据类型返回正则
|
|
12
|
+
* @param {String} str 检测的内容
|
|
13
|
+
* @param {String} type 检测类型
|
|
14
|
+
* checkType('10.120.33.11', 'ip') // true
|
|
15
|
+
* @return {Boolean} true or false
|
|
16
|
+
*/
|
|
17
|
+
MatchClass.prototype.checkType = function (str, type) {
|
|
18
|
+
var regexp = {
|
|
19
|
+
'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),
|
|
20
|
+
'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),
|
|
21
|
+
'phone': /^1[3|4|5|6|7|8][0-9]{9}$/.test(str),
|
|
22
|
+
'number': /^[0-9]+$/.test(str),
|
|
23
|
+
'email': /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(str),
|
|
24
|
+
'IDCard': /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/.test(str),
|
|
25
|
+
'url': /[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/i.test(str)
|
|
26
|
+
};
|
|
27
|
+
return regexp[type];
|
|
28
|
+
};
|
|
29
|
+
return MatchClass;
|
|
30
|
+
}());
|
|
31
|
+
exports.default = new MatchClass();
|
|
@@ -1,17 +1,17 @@
|
|
|
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
|
-
exports.Tracker = void 0;
|
|
7
|
-
var jsError_1 = require("./lib/jsError");
|
|
8
|
-
var xhr_1 = __importDefault(require("./lib/xhr"));
|
|
9
|
-
var tracker_1 = __importDefault(require("./utils/tracker"));
|
|
10
|
-
exports.Tracker = tracker_1.default;
|
|
11
|
-
// import timing from './lib/timing'
|
|
12
|
-
function setup(data) {
|
|
13
|
-
(0, jsError_1.injectJsError)(data);
|
|
14
|
-
(0, xhr_1.default)(data);
|
|
15
|
-
}
|
|
16
|
-
exports.default = setup;
|
|
17
|
-
// timing()
|
|
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
|
+
exports.Tracker = void 0;
|
|
7
|
+
var jsError_1 = require("./lib/jsError");
|
|
8
|
+
var xhr_1 = __importDefault(require("./lib/xhr"));
|
|
9
|
+
var tracker_1 = __importDefault(require("./utils/tracker"));
|
|
10
|
+
exports.Tracker = tracker_1.default;
|
|
11
|
+
// import timing from './lib/timing'
|
|
12
|
+
function setup(data) {
|
|
13
|
+
(0, jsError_1.injectJsError)(data);
|
|
14
|
+
(0, xhr_1.default)(data);
|
|
15
|
+
}
|
|
16
|
+
exports.default = setup;
|
|
17
|
+
// timing()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function injectJsError(data?: any): void;
|
|
@@ -1,53 +1,53 @@
|
|
|
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) {
|
|
22
|
-
if (e.target && (e.target.src || e.target.href)) {
|
|
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
|
-
));
|
|
26
|
-
return;
|
|
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
|
-
));
|
|
31
|
-
}, true);
|
|
32
|
-
window.addEventListener('unhandledrejection', function (e) {
|
|
33
|
-
var message, filename, line, column, stack;
|
|
34
|
-
var reason = e.reason;
|
|
35
|
-
if (typeof reason === 'string') {
|
|
36
|
-
message = reason;
|
|
37
|
-
}
|
|
38
|
-
else if (typeof reason === 'object') {
|
|
39
|
-
if (reason.stack) {
|
|
40
|
-
var matchResult = reason.stack.match(/at\s+(.+):(\d+):(\d+)/);
|
|
41
|
-
filename = matchResult[1];
|
|
42
|
-
line = matchResult[2];
|
|
43
|
-
column = matchResult[3];
|
|
44
|
-
}
|
|
45
|
-
message = reason.message;
|
|
46
|
-
stack = reason.stack;
|
|
47
|
-
}
|
|
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
|
-
));
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
exports.injectJsError = injectJsError;
|
|
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) {
|
|
22
|
+
if (e.target && (e.target.src || e.target.href)) {
|
|
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
|
+
));
|
|
26
|
+
return;
|
|
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
|
+
));
|
|
31
|
+
}, true);
|
|
32
|
+
window.addEventListener('unhandledrejection', function (e) {
|
|
33
|
+
var message, filename, line, column, stack;
|
|
34
|
+
var reason = e.reason;
|
|
35
|
+
if (typeof reason === 'string') {
|
|
36
|
+
message = reason;
|
|
37
|
+
}
|
|
38
|
+
else if (typeof reason === 'object') {
|
|
39
|
+
if (reason.stack) {
|
|
40
|
+
var matchResult = reason.stack.match(/at\s+(.+):(\d+):(\d+)/);
|
|
41
|
+
filename = matchResult[1];
|
|
42
|
+
line = matchResult[2];
|
|
43
|
+
column = matchResult[3];
|
|
44
|
+
}
|
|
45
|
+
message = reason.message;
|
|
46
|
+
stack = reason.stack;
|
|
47
|
+
}
|
|
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
|
+
));
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
exports.injectJsError = injectJsError;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function timing(): void;
|
|
@@ -1,69 +1,69 @@
|
|
|
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();
|
|
12
|
-
FMP = perfEntries[0];
|
|
13
|
-
observer.disconnect(); // 不再观察
|
|
14
|
-
}).observe({ entryTypes: ['element'] }); // 观察页面中有意义的元素
|
|
15
|
-
new PerformanceObserver(function (entryList, observer) {
|
|
16
|
-
var perfEntries = entryList.getEntries();
|
|
17
|
-
LCP = perfEntries[0];
|
|
18
|
-
observer.disconnect(); // 不再观察
|
|
19
|
-
}).observe({ entryTypes: ['largest-contentful-paint'] }); // 观察页面中最大的元素
|
|
20
|
-
new PerformanceObserver(function (entryList, observer) {
|
|
21
|
-
var firstInput = entryList.getEntries();
|
|
22
|
-
console.log('FID', firstInput);
|
|
23
|
-
if (firstInput) {
|
|
24
|
-
var inputDelay = firstInput.processingStart - firstInput.startTime;
|
|
25
|
-
var duration = firstInput.duration;
|
|
26
|
-
if (inputDelay > 0 || duration > 0) {
|
|
27
|
-
tracker_1.default.send({
|
|
28
|
-
kind: 'experience',
|
|
29
|
-
type: 'firstInputDelay',
|
|
30
|
-
inputDelay: inputDelay,
|
|
31
|
-
duration: duration,
|
|
32
|
-
startTime: firstInput.startTime
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
observer.disconnect(); // 不再观察
|
|
37
|
-
}).observe({ type: 'first-input', buffered: true }); // 观察页面中最大的元素
|
|
38
|
-
(0, onload_1.default)(function () {
|
|
39
|
-
setTimeout(function () {
|
|
40
|
-
console.dir(window.performance);
|
|
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({
|
|
43
|
-
kind: 'experience',
|
|
44
|
-
type: 'timing',
|
|
45
|
-
connectTime: connectEnd - connectStart,
|
|
46
|
-
ttfbTime: responseStart - requestStart,
|
|
47
|
-
responseTime: responseEnd - responseStart,
|
|
48
|
-
domContentLoadedTime: domContentLoadedEventEnd - domContentLoadedEventStart,
|
|
49
|
-
timeToInteractive: domInteractive - fetchStart,
|
|
50
|
-
loadTime: loadEventStart - fetchStart // 完整的页面加载时间
|
|
51
|
-
});
|
|
52
|
-
var FP = performance.getEntriesByName('first-paint')[0];
|
|
53
|
-
var FCP = performance.getEntriesByName('first-contentful-paint')[0];
|
|
54
|
-
console.log('FP', FP);
|
|
55
|
-
console.log('FCP', FCP);
|
|
56
|
-
console.log('FMP', FMP);
|
|
57
|
-
console.log('LCP', LCP);
|
|
58
|
-
tracker_1.default.send({
|
|
59
|
-
kind: 'experience',
|
|
60
|
-
type: 'paint',
|
|
61
|
-
FP: FP.startTime,
|
|
62
|
-
FCP: FCP.startTime,
|
|
63
|
-
FMP: FMP.startTime,
|
|
64
|
-
LCP: LCP.startTime,
|
|
65
|
-
});
|
|
66
|
-
}, 3000);
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
exports.default = timing;
|
|
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();
|
|
12
|
+
FMP = perfEntries[0];
|
|
13
|
+
observer.disconnect(); // 不再观察
|
|
14
|
+
}).observe({ entryTypes: ['element'] }); // 观察页面中有意义的元素
|
|
15
|
+
new PerformanceObserver(function (entryList, observer) {
|
|
16
|
+
var perfEntries = entryList.getEntries();
|
|
17
|
+
LCP = perfEntries[0];
|
|
18
|
+
observer.disconnect(); // 不再观察
|
|
19
|
+
}).observe({ entryTypes: ['largest-contentful-paint'] }); // 观察页面中最大的元素
|
|
20
|
+
new PerformanceObserver(function (entryList, observer) {
|
|
21
|
+
var firstInput = entryList.getEntries();
|
|
22
|
+
console.log('FID', firstInput);
|
|
23
|
+
if (firstInput) {
|
|
24
|
+
var inputDelay = firstInput.processingStart - firstInput.startTime;
|
|
25
|
+
var duration = firstInput.duration;
|
|
26
|
+
if (inputDelay > 0 || duration > 0) {
|
|
27
|
+
tracker_1.default.send({
|
|
28
|
+
kind: 'experience',
|
|
29
|
+
type: 'firstInputDelay',
|
|
30
|
+
inputDelay: inputDelay,
|
|
31
|
+
duration: duration,
|
|
32
|
+
startTime: firstInput.startTime
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
observer.disconnect(); // 不再观察
|
|
37
|
+
}).observe({ type: 'first-input', buffered: true }); // 观察页面中最大的元素
|
|
38
|
+
(0, onload_1.default)(function () {
|
|
39
|
+
setTimeout(function () {
|
|
40
|
+
console.dir(window.performance);
|
|
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({
|
|
43
|
+
kind: 'experience',
|
|
44
|
+
type: 'timing',
|
|
45
|
+
connectTime: connectEnd - connectStart,
|
|
46
|
+
ttfbTime: responseStart - requestStart,
|
|
47
|
+
responseTime: responseEnd - responseStart,
|
|
48
|
+
domContentLoadedTime: domContentLoadedEventEnd - domContentLoadedEventStart,
|
|
49
|
+
timeToInteractive: domInteractive - fetchStart,
|
|
50
|
+
loadTime: loadEventStart - fetchStart // 完整的页面加载时间
|
|
51
|
+
});
|
|
52
|
+
var FP = performance.getEntriesByName('first-paint')[0];
|
|
53
|
+
var FCP = performance.getEntriesByName('first-contentful-paint')[0];
|
|
54
|
+
console.log('FP', FP);
|
|
55
|
+
console.log('FCP', FCP);
|
|
56
|
+
console.log('FMP', FMP);
|
|
57
|
+
console.log('LCP', LCP);
|
|
58
|
+
tracker_1.default.send({
|
|
59
|
+
kind: 'experience',
|
|
60
|
+
type: 'paint',
|
|
61
|
+
FP: FP.startTime,
|
|
62
|
+
FCP: FCP.startTime,
|
|
63
|
+
FMP: FMP.startTime,
|
|
64
|
+
LCP: LCP.startTime,
|
|
65
|
+
});
|
|
66
|
+
}, 3000);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
exports.default = timing;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function injectXHR(data?: any): void;
|
|
@@ -1,48 +1,48 @@
|
|
|
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;
|
|
22
|
-
XMLHttpRequest.prototype.open = function (method, url, async) {
|
|
23
|
-
this.logData = { method: method, url: url, async: async };
|
|
24
|
-
return oldOpen.apply(this, arguments);
|
|
25
|
-
};
|
|
26
|
-
var oldSend = XMLHttpRequest.prototype.send;
|
|
27
|
-
XMLHttpRequest.prototype.send = function (body) {
|
|
28
|
-
var _this = this;
|
|
29
|
-
if (this.logData) {
|
|
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)
|
|
33
|
-
return;
|
|
34
|
-
if (type !== 'error')
|
|
35
|
-
return;
|
|
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
|
-
}; };
|
|
41
|
-
this.addEventListener('load', handler('load'), false);
|
|
42
|
-
this.addEventListener('error', handler('error'), false);
|
|
43
|
-
this.addEventListener('abort', handler('abort'), false);
|
|
44
|
-
}
|
|
45
|
-
return oldSend.apply(this, arguments);
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
exports.default = injectXHR;
|
|
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;
|
|
22
|
+
XMLHttpRequest.prototype.open = function (method, url, async) {
|
|
23
|
+
this.logData = { method: method, url: url, async: async };
|
|
24
|
+
return oldOpen.apply(this, arguments);
|
|
25
|
+
};
|
|
26
|
+
var oldSend = XMLHttpRequest.prototype.send;
|
|
27
|
+
XMLHttpRequest.prototype.send = function (body) {
|
|
28
|
+
var _this = this;
|
|
29
|
+
if (this.logData) {
|
|
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)
|
|
33
|
+
return;
|
|
34
|
+
if (type !== 'error')
|
|
35
|
+
return;
|
|
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
|
+
}; };
|
|
41
|
+
this.addEventListener('load', handler('load'), false);
|
|
42
|
+
this.addEventListener('error', handler('error'), false);
|
|
43
|
+
this.addEventListener('abort', handler('abort'), false);
|
|
44
|
+
}
|
|
45
|
+
return oldSend.apply(this, arguments);
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
exports.default = injectXHR;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function onload(cb: any): void;
|