@cloudcare/browser-core 1.1.3 → 1.2.0
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/cjs/{cookie.js → browser/cookie.js} +6 -37
- package/cjs/browser/fetchObservable.js +91 -0
- package/cjs/browser/xhrObservable.js +118 -0
- package/cjs/configuration/configuration.js +70 -0
- package/cjs/configuration/transportConfiguration.js +64 -0
- package/cjs/console/consoleObservable.js +84 -0
- package/cjs/dataMap.js +26 -21
- package/cjs/error/trackRuntimeError.js +27 -0
- package/cjs/helper/catchUserErrors.js +20 -0
- package/cjs/helper/contextHistory.js +134 -0
- package/cjs/helper/createEventRateLimiter.js +47 -0
- package/cjs/helper/deviceInfo.js +8 -25
- package/cjs/helper/display.js +31 -0
- package/cjs/helper/enums.js +28 -2
- package/cjs/helper/errorTools.js +63 -2
- package/cjs/helper/instrumentMethod.js +93 -0
- package/cjs/helper/lifeCycle.js +5 -3
- package/cjs/helper/observable.js +40 -2
- package/cjs/helper/tools.js +185 -9
- package/cjs/index.js +153 -23
- package/cjs/init.js +17 -27
- package/cjs/report/reportObservable.js +112 -0
- package/cjs/session/sessionConstants.js +13 -0
- package/cjs/session/sessionCookieStore.js +188 -0
- package/cjs/session/sessionManagement.js +96 -0
- package/cjs/session/sessionStore.js +150 -0
- package/cjs/synthetics/syntheticsWorkerValues.js +32 -0
- package/cjs/synthetics/usr.js +32 -0
- package/cjs/tracekit/computeStackTrace.js +73 -563
- package/cjs/tracekit/index.js +3 -15
- package/cjs/tracekit/tracekit.js +113 -0
- package/cjs/transport/batch.js +332 -0
- package/cjs/transport/httpRequest.js +112 -0
- package/cjs/transport/index.js +29 -0
- package/cjs/transport/sendWithRetryStrategy.js +177 -0
- package/cjs/transport/startBatchWithReplica.js +24 -0
- package/esm/{cookie.js → browser/cookie.js} +4 -35
- package/esm/browser/fetchObservable.js +77 -0
- package/esm/browser/xhrObservable.js +106 -0
- package/esm/configuration/configuration.js +55 -0
- package/esm/configuration/transportConfiguration.js +54 -0
- package/esm/console/consoleObservable.js +70 -0
- package/esm/dataMap.js +26 -21
- package/esm/error/trackRuntimeError.js +16 -0
- package/esm/helper/catchUserErrors.js +12 -0
- package/esm/helper/contextHistory.js +106 -0
- package/esm/helper/createEventRateLimiter.js +38 -0
- package/esm/helper/deviceInfo.js +6 -25
- package/esm/helper/display.js +21 -0
- package/esm/helper/enums.js +25 -1
- package/esm/helper/errorTools.js +58 -3
- package/esm/helper/instrumentMethod.js +81 -0
- package/esm/helper/lifeCycle.js +5 -3
- package/esm/helper/observable.js +39 -3
- package/esm/helper/tools.js +147 -1
- package/esm/index.js +17 -7
- package/esm/init.js +17 -22
- package/esm/report/reportObservable.js +98 -0
- package/esm/session/sessionConstants.js +3 -0
- package/esm/session/sessionCookieStore.js +168 -0
- package/esm/session/sessionManagement.js +78 -0
- package/esm/session/sessionStore.js +139 -0
- package/esm/synthetics/syntheticsWorkerValues.js +15 -0
- package/esm/synthetics/usr.js +18 -0
- package/esm/tracekit/computeStackTrace.js +73 -557
- package/esm/tracekit/index.js +1 -1
- package/esm/tracekit/tracekit.js +103 -0
- package/esm/transport/batch.js +316 -0
- package/esm/transport/httpRequest.js +104 -0
- package/esm/transport/index.js +3 -0
- package/esm/transport/sendWithRetryStrategy.js +165 -0
- package/esm/transport/startBatchWithReplica.js +15 -0
- package/package.json +2 -2
- package/src/.DS_Store +0 -0
- package/src/{cookie.js → browser/cookie.js} +6 -34
- package/src/browser/fetchObservable.js +86 -0
- package/src/browser/xhrObservable.js +102 -0
- package/src/configuration/configuration.js +61 -0
- package/src/configuration/transportConfiguration.js +42 -0
- package/src/console/consoleObservable.js +65 -0
- package/src/dataMap.js +26 -21
- package/src/error/trackRuntimeError.js +19 -0
- package/src/helper/catchUserErrors.js +12 -0
- package/src/helper/contextHistory.js +85 -0
- package/src/helper/createEventRateLimiter.js +37 -0
- package/src/helper/deviceInfo.js +5 -51
- package/src/helper/display.js +21 -0
- package/src/helper/enums.js +38 -14
- package/src/helper/errorTools.js +76 -12
- package/src/helper/instrumentMethod.js +97 -0
- package/src/helper/lifeCycle.js +5 -3
- package/src/helper/observable.js +33 -2
- package/src/helper/tools.js +135 -4
- package/src/index.js +18 -7
- package/src/init.js +17 -18
- package/src/report/reportObservable.js +113 -0
- package/src/session/sessionConstants.js +3 -0
- package/src/session/sessionCookieStore.js +159 -0
- package/src/session/sessionManagement.js +89 -0
- package/src/session/sessionStore.js +139 -0
- package/src/synthetics/syntheticsWorkerValues.js +22 -0
- package/src/synthetics/usr.js +18 -0
- package/src/tracekit/computeStackTrace.js +75 -551
- package/src/tracekit/index.js +1 -1
- package/src/tracekit/tracekit.js +100 -0
- package/src/transport/batch.js +289 -0
- package/src/transport/httpRequest.js +109 -0
- package/src/transport/index.js +3 -0
- package/src/transport/sendWithRetryStrategy.js +186 -0
- package/src/transport/startBatchWithReplica.js +26 -0
- package/cjs/configuration.js +0 -193
- package/cjs/errorCollection.js +0 -167
- package/cjs/fetchProxy.js +0 -161
- package/cjs/helper/errorFilter.js +0 -47
- package/cjs/sessionManagement.js +0 -221
- package/cjs/tracekit/report.js +0 -289
- package/cjs/transport.js +0 -373
- package/cjs/xhrProxy.js +0 -122
- package/esm/configuration.js +0 -176
- package/esm/errorCollection.js +0 -141
- package/esm/fetchProxy.js +0 -115
- package/esm/helper/errorFilter.js +0 -38
- package/esm/sessionManagement.js +0 -195
- package/esm/tracekit/report.js +0 -273
- package/esm/transport.js +0 -357
- package/esm/xhrProxy.js +0 -110
- package/src/configuration.js +0 -161
- package/src/errorCollection.js +0 -170
- package/src/fetchProxy.js +0 -108
- package/src/helper/errorFilter.js +0 -38
- package/src/sessionManagement.js +0 -224
- package/src/tracekit/report.js +0 -284
- package/src/transport.js +0 -380
- package/src/xhrProxy.js +0 -106
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.CLEAR_OLD_CONTEXTS_INTERVAL = void 0;
|
|
7
|
+
exports.ContextHistory = ContextHistory;
|
|
8
|
+
|
|
9
|
+
var _tools = require("./tools");
|
|
10
|
+
|
|
11
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
12
|
+
|
|
13
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
14
|
+
|
|
15
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
16
|
+
|
|
17
|
+
var END_OF_TIMES = Infinity;
|
|
18
|
+
var CLEAR_OLD_CONTEXTS_INTERVAL = _tools.ONE_MINUTE;
|
|
19
|
+
exports.CLEAR_OLD_CONTEXTS_INTERVAL = CLEAR_OLD_CONTEXTS_INTERVAL;
|
|
20
|
+
|
|
21
|
+
function ContextHistory(expireDelay) {
|
|
22
|
+
this.expireDelay = expireDelay;
|
|
23
|
+
this.entries = [];
|
|
24
|
+
|
|
25
|
+
var _this = this;
|
|
26
|
+
|
|
27
|
+
this.clearOldContextsInterval = setInterval(function () {
|
|
28
|
+
_this.clearOldContexts();
|
|
29
|
+
}, CLEAR_OLD_CONTEXTS_INTERVAL);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
ContextHistory.prototype.add = function (context, startTime) {
|
|
33
|
+
var _this = this;
|
|
34
|
+
|
|
35
|
+
var entry = {
|
|
36
|
+
context: context,
|
|
37
|
+
startTime: startTime,
|
|
38
|
+
endTime: END_OF_TIMES,
|
|
39
|
+
remove: function remove() {
|
|
40
|
+
var index = _this.entries.indexOf(entry);
|
|
41
|
+
|
|
42
|
+
if (index >= 0) {
|
|
43
|
+
_this.entries.splice(index, 1);
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
close: function close(endTime) {
|
|
47
|
+
entry.endTime = endTime;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
this.entries.unshift(entry);
|
|
51
|
+
return entry;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
ContextHistory.prototype.find = function (startTime) {
|
|
55
|
+
if (typeof startTime === 'undefined') {
|
|
56
|
+
startTime = END_OF_TIMES;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
var _iterator = _createForOfIteratorHelper(this.entries),
|
|
60
|
+
_step;
|
|
61
|
+
|
|
62
|
+
try {
|
|
63
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
64
|
+
var entry = _step.value;
|
|
65
|
+
|
|
66
|
+
if (entry.startTime <= startTime) {
|
|
67
|
+
if (startTime <= entry.endTime) {
|
|
68
|
+
return entry.context;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
} catch (err) {
|
|
75
|
+
_iterator.e(err);
|
|
76
|
+
} finally {
|
|
77
|
+
_iterator.f();
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Helper function to close the currently active context, if any. This method assumes that entries
|
|
82
|
+
* are not overlapping.
|
|
83
|
+
*/
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
ContextHistory.prototype.closeActive = function (endTime) {
|
|
87
|
+
var latestEntry = this.entries[0];
|
|
88
|
+
|
|
89
|
+
if (latestEntry && latestEntry.endTime === END_OF_TIMES) {
|
|
90
|
+
latestEntry.close(endTime);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Return all contexts that were active during `startTime`, or all currently active contexts if no
|
|
95
|
+
* `startTime` is provided.
|
|
96
|
+
*/
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
ContextHistory.prototype.findAll = function (startTime) {
|
|
100
|
+
if (typeof startTime === 'undefined') {
|
|
101
|
+
startTime = END_OF_TIMES;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
var result = (0, _tools.filter)(this.entries, function (entry) {
|
|
105
|
+
return entry.startTime <= startTime && startTime <= entry.endTime;
|
|
106
|
+
});
|
|
107
|
+
return (0, _tools.map)(result, function (entry) {
|
|
108
|
+
return entry.context;
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Remove all entries from this collection.
|
|
113
|
+
*/
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
ContextHistory.prototype.reset = function () {
|
|
117
|
+
this.entries = [];
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Stop internal garbage collection of past entries.
|
|
121
|
+
*/
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
ContextHistory.prototype.stop = function () {
|
|
125
|
+
clearInterval(this.clearOldContextsInterval);
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
ContextHistory.prototype.clearOldContexts = function () {
|
|
129
|
+
var oldTimeThreshold = (0, _tools.relativeNow)() - this.expireDelay;
|
|
130
|
+
|
|
131
|
+
while (this.entries.length > 0 && this.entries[this.entries.length - 1].endTime < oldTimeThreshold) {
|
|
132
|
+
this.entries.pop();
|
|
133
|
+
}
|
|
134
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createEventRateLimiter = createEventRateLimiter;
|
|
7
|
+
|
|
8
|
+
var _errorTools = require("./errorTools");
|
|
9
|
+
|
|
10
|
+
var _tools = require("./tools");
|
|
11
|
+
|
|
12
|
+
function createEventRateLimiter(eventType, limit, onLimitReached) {
|
|
13
|
+
var eventCount = 0;
|
|
14
|
+
var allowNextEvent = false;
|
|
15
|
+
return {
|
|
16
|
+
isLimitReached: function isLimitReached() {
|
|
17
|
+
if (eventCount === 0) {
|
|
18
|
+
setTimeout(function () {
|
|
19
|
+
eventCount = 0;
|
|
20
|
+
}, _tools.ONE_MINUTE);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
eventCount += 1;
|
|
24
|
+
|
|
25
|
+
if (eventCount <= limit || allowNextEvent) {
|
|
26
|
+
allowNextEvent = false;
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (eventCount === limit + 1) {
|
|
31
|
+
allowNextEvent = true;
|
|
32
|
+
|
|
33
|
+
try {
|
|
34
|
+
onLimitReached({
|
|
35
|
+
message: 'Reached max number of ' + eventType + 's by minute: ' + limit,
|
|
36
|
+
source: _errorTools.ErrorSource.AGENT,
|
|
37
|
+
startClocks: (0, _tools.clocksNow)()
|
|
38
|
+
});
|
|
39
|
+
} finally {
|
|
40
|
+
allowNextEvent = false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
package/cjs/helper/deviceInfo.js
CHANGED
|
@@ -4,13 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.deviceInfo = void 0;
|
|
7
|
+
|
|
8
|
+
var _display = require("../helper/display");
|
|
9
|
+
|
|
7
10
|
var VariableLibrary = {
|
|
8
11
|
navigator: typeof window.navigator != 'undefined' ? window.navigator : {},
|
|
9
12
|
// 信息map
|
|
10
13
|
infoMap: {
|
|
11
14
|
engine: ['WebKit', 'Trident', 'Gecko', 'Presto'],
|
|
12
15
|
browser: ['Safari', 'Chrome', 'Edge', 'IE', 'IE 11', 'IE 10', 'IE 9', 'IE 8', 'IE 7', 'Firefox', 'Firefox Focus', 'Chromium', 'Opera', 'Vivaldi', 'Yandex', 'Arora', 'Lunascape', 'QupZilla', 'Coc Coc', 'Kindle', 'Iceweasel', 'Konqueror', 'Iceape', 'SeaMonkey', 'Epiphany', '360', '360SE', '360EE', 'UC', 'QQBrowser', 'QQ', 'Baidu', 'Maxthon', 'Sogou', 'LBBROWSER', '2345Explorer', 'TheWorld', 'XiaoMi', 'Quark', 'Qiyu', 'Wechat',, 'WechatWork', 'Taobao', 'Alipay', 'Weibo', 'Douban', 'Suning', 'iQiYi'],
|
|
13
|
-
os: ['Windows', '
|
|
16
|
+
os: ['Windows', 'Linux', 'Mac OS', 'Android', 'Ubuntu', 'FreeBSD', 'Debian', 'iOS', 'Windows Phone', 'BlackBerry', 'MeeGo', 'Symbian', 'Chrome OS', 'WebOS'],
|
|
14
17
|
device: ['Mobile', 'Tablet', 'iPad']
|
|
15
18
|
}
|
|
16
19
|
}; // 方法库
|
|
@@ -28,12 +31,7 @@ var MethodLibrary = {
|
|
|
28
31
|
Safari: u.indexOf('Safari') > -1,
|
|
29
32
|
Chrome: u.indexOf('Chrome') > -1 || u.indexOf('CriOS') > -1,
|
|
30
33
|
IE: u.indexOf('MSIE') > -1 || u.indexOf('Trident') > -1,
|
|
31
|
-
|
|
32
|
-
'IE 10': u.indexOf('MSIE 10.0') > -1 && u.indexOf('Trident') > -1,
|
|
33
|
-
'IE 9': u.indexOf('MSIE 9.0') > -1 && u.indexOf('Trident') > -1,
|
|
34
|
-
'IE 8': u.indexOf('MSIE 9.0') > -1 && u.indexOf('Trident') > -1,
|
|
35
|
-
'IE 7': u.indexOf('MSIE 7.0') > -1 && u.indexOf('Trident') > -1,
|
|
36
|
-
Edge: u.indexOf('Edg') > -1 || u.indexOf('Edge') > -1,
|
|
34
|
+
Edge: u.indexOf('Edge') > -1,
|
|
37
35
|
Firefox: u.indexOf('Firefox') > -1 || u.indexOf('FxiOS') > -1,
|
|
38
36
|
'Firefox Focus': u.indexOf('Focus') > -1,
|
|
39
37
|
Chromium: u.indexOf('Chromium') > -1,
|
|
@@ -59,14 +57,13 @@ var MethodLibrary = {
|
|
|
59
57
|
Baidu: u.indexOf('Baidu') > -1 || u.indexOf('BIDUBrowser') > -1,
|
|
60
58
|
Maxthon: u.indexOf('Maxthon') > -1,
|
|
61
59
|
Sogou: u.indexOf('MetaSr') > -1 || u.indexOf('Sogou') > -1,
|
|
62
|
-
LBBROWSER: u.indexOf('LBBROWSER') > -1
|
|
60
|
+
LBBROWSER: u.indexOf('LBBROWSER') > -1,
|
|
63
61
|
'2345Explorer': u.indexOf('2345Explorer') > -1,
|
|
64
62
|
TheWorld: u.indexOf('TheWorld') > -1,
|
|
65
63
|
XiaoMi: u.indexOf('MiuiBrowser') > -1,
|
|
66
64
|
Quark: u.indexOf('Quark') > -1,
|
|
67
65
|
Qiyu: u.indexOf('Qiyu') > -1,
|
|
68
66
|
Wechat: u.indexOf('MicroMessenger') > -1,
|
|
69
|
-
WechatWork: u.indexOf('wxwork/') > -1,
|
|
70
67
|
Taobao: u.indexOf('AliApp(TB') > -1,
|
|
71
68
|
Alipay: u.indexOf('AliApp(AP') > -1,
|
|
72
69
|
Weibo: u.indexOf('Weibo') > -1,
|
|
@@ -75,20 +72,6 @@ var MethodLibrary = {
|
|
|
75
72
|
iQiYi: u.indexOf('IqiyiApp') > -1,
|
|
76
73
|
// 系统或平台
|
|
77
74
|
Windows: u.indexOf('Windows') > -1,
|
|
78
|
-
'Windows 2000': u.indexOf('Windows NT 5.0') > -1 || u.indexOf('Windows 2000') > -1,
|
|
79
|
-
'Windows XP': u.indexOf('Windows NT 5.1') > -1 || u.indexOf('Windows XP') > -1,
|
|
80
|
-
'Windows Server 2003': u.indexOf('Windows NT 5.2') > -1,
|
|
81
|
-
'Windows Vista': u.indexOf('Windows NT 6.0') > -1,
|
|
82
|
-
'Windows 7': u.indexOf('Windows 7') > -1 || u.indexOf('Windows NT 6.1') > -1,
|
|
83
|
-
'Windows 8': u.indexOf('Windows 8') > -1 || u.indexOf('Windows NT 6.2') > -1,
|
|
84
|
-
'Windows 8.1': u.indexOf('Windows 8.1') > -1 || u.indexOf('Windows NT 6.3') > -1,
|
|
85
|
-
'Windows ME': u.indexOf('Win 9x 4.90') > -1 || u.indexOf('Windows ME') > -1,
|
|
86
|
-
'Windows 10': u.indexOf('Windows 10.0') > -1 || u.indexOf('Windows NT 10.0') > -1,
|
|
87
|
-
'Windows 98': u.indexOf('Windows 98') > -1 || u.indexOf('Win98') > -1,
|
|
88
|
-
'Windows 95': u.indexOf('Windows 95') > -1 || u.indexOf('Win95') > -1 || u.indexOf('Windows_95') > -1,
|
|
89
|
-
'Windows NT 4.0': u.indexOf('Windows NT 4.0') > -1 || u.indexOf('WinNT4.0') > -1 || u.indexOf('WinNT') > -1,
|
|
90
|
-
'Windows CE': u.indexOf('Windows CE') > -1,
|
|
91
|
-
'Windows 3.11': u.indexOf('Win16') > -1,
|
|
92
75
|
Linux: u.indexOf('Linux') > -1 || u.indexOf('X11') > -1,
|
|
93
76
|
'Mac OS': u.indexOf('Macintosh') > -1,
|
|
94
77
|
Android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1,
|
|
@@ -176,7 +159,7 @@ var MethodLibrary = {
|
|
|
176
159
|
if (osVersion[_this.os]) {
|
|
177
160
|
_this.osVersion = osVersion[_this.os]();
|
|
178
161
|
|
|
179
|
-
if (_this.osVersion
|
|
162
|
+
if (_this.osVersion === u) {
|
|
180
163
|
_this.osVersion = '';
|
|
181
164
|
}
|
|
182
165
|
}
|
|
@@ -543,7 +526,7 @@ var MethodLibrary = {
|
|
|
543
526
|
callback(position);
|
|
544
527
|
}, // 位置获取失败
|
|
545
528
|
function (error) {
|
|
546
|
-
|
|
529
|
+
_display.display.warn(error);
|
|
547
530
|
});
|
|
548
531
|
}
|
|
549
532
|
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.display = exports.ConsoleApiName = void 0;
|
|
7
|
+
var ConsoleApiName = {
|
|
8
|
+
log: 'log',
|
|
9
|
+
debug: 'debug',
|
|
10
|
+
info: 'info',
|
|
11
|
+
warn: 'warn',
|
|
12
|
+
error: 'error'
|
|
13
|
+
};
|
|
14
|
+
exports.ConsoleApiName = ConsoleApiName;
|
|
15
|
+
|
|
16
|
+
var display = function display(api) {
|
|
17
|
+
var args = [].slice.call(arguments, 1);
|
|
18
|
+
|
|
19
|
+
if (!Object.prototype.hasOwnProperty.call(ConsoleApiName, api)) {
|
|
20
|
+
api = ConsoleApiName.log;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
display[api].apply(display, args);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
exports.display = display;
|
|
27
|
+
display.debug = console.debug.bind(console);
|
|
28
|
+
display.log = console.log.bind(console);
|
|
29
|
+
display.info = console.info.bind(console);
|
|
30
|
+
display.warn = console.warn.bind(console);
|
|
31
|
+
display.error = console.error.bind(console);
|
package/cjs/helper/enums.js
CHANGED
|
@@ -3,15 +3,18 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.TraceType = exports.RumEventType = exports.ResourceType = exports.RequestType = exports.ErrorHandling = exports.DOM_EVENT = exports.ActionType = void 0;
|
|
6
|
+
exports.ViewLoadingType = exports.TraceType = exports.RumEventType = exports.ResourceType = exports.RequestType = exports.FrustrationType = exports.ErrorHandling = exports.DOM_EVENT = exports.ActionType = void 0;
|
|
7
7
|
var DOM_EVENT = {
|
|
8
8
|
BEFORE_UNLOAD: 'beforeunload',
|
|
9
9
|
CLICK: 'click',
|
|
10
|
+
DBL_CLICK: 'dblclick',
|
|
10
11
|
KEY_DOWN: 'keydown',
|
|
11
12
|
LOAD: 'load',
|
|
12
13
|
POP_STATE: 'popstate',
|
|
13
14
|
SCROLL: 'scroll',
|
|
14
15
|
TOUCH_START: 'touchstart',
|
|
16
|
+
TOUCH_END: 'touchend',
|
|
17
|
+
TOUCH_MOVE: 'touchmove',
|
|
15
18
|
VISIBILITY_CHANGE: 'visibilitychange',
|
|
16
19
|
DOM_CONTENT_LOADED: 'DOMContentLoaded',
|
|
17
20
|
POINTER_DOWN: 'pointerdown',
|
|
@@ -19,7 +22,19 @@ var DOM_EVENT = {
|
|
|
19
22
|
POINTER_CANCEL: 'pointercancel',
|
|
20
23
|
HASH_CHANGE: 'hashchange',
|
|
21
24
|
PAGE_HIDE: 'pagehide',
|
|
22
|
-
MOUSE_DOWN: 'mousedown'
|
|
25
|
+
MOUSE_DOWN: 'mousedown',
|
|
26
|
+
MOUSE_UP: 'mouseup',
|
|
27
|
+
MOUSE_MOVE: 'mousemove',
|
|
28
|
+
FOCUS: 'focus',
|
|
29
|
+
BLUR: 'blur',
|
|
30
|
+
CONTEXT_MENU: 'contextmenu',
|
|
31
|
+
RESIZE: 'resize',
|
|
32
|
+
CHANGE: 'change',
|
|
33
|
+
INPUT: 'input',
|
|
34
|
+
PLAY: 'play',
|
|
35
|
+
PAUSE: 'pause',
|
|
36
|
+
SECURITY_POLICY_VIOLATION: 'securitypolicyviolation',
|
|
37
|
+
SELECTION_CHANGE: 'selectionchange'
|
|
23
38
|
};
|
|
24
39
|
exports.DOM_EVENT = DOM_EVENT;
|
|
25
40
|
var ResourceType = {
|
|
@@ -40,6 +55,12 @@ var ActionType = {
|
|
|
40
55
|
CUSTOM: 'custom'
|
|
41
56
|
};
|
|
42
57
|
exports.ActionType = ActionType;
|
|
58
|
+
var FrustrationType = {
|
|
59
|
+
RAGE_CLICK: 'rage_click',
|
|
60
|
+
ERROR_CLICK: 'error_click',
|
|
61
|
+
DEAD_CLICK: 'dead_click'
|
|
62
|
+
};
|
|
63
|
+
exports.FrustrationType = FrustrationType;
|
|
43
64
|
var RumEventType = {
|
|
44
65
|
ACTION: 'action',
|
|
45
66
|
ERROR: 'error',
|
|
@@ -49,6 +70,11 @@ var RumEventType = {
|
|
|
49
70
|
LOGGER: 'logger'
|
|
50
71
|
};
|
|
51
72
|
exports.RumEventType = RumEventType;
|
|
73
|
+
var ViewLoadingType = {
|
|
74
|
+
INITIAL_LOAD: 'initial_load',
|
|
75
|
+
ROUTE_CHANGE: 'route_change'
|
|
76
|
+
};
|
|
77
|
+
exports.ViewLoadingType = ViewLoadingType;
|
|
52
78
|
var RequestType = {
|
|
53
79
|
FETCH: ResourceType.FETCH,
|
|
54
80
|
XHR: ResourceType.XHR
|
package/cjs/helper/errorTools.js
CHANGED
|
@@ -4,9 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.ErrorSource = void 0;
|
|
7
|
+
exports.computeRawError = computeRawError;
|
|
7
8
|
exports.createHandlingStack = createHandlingStack;
|
|
9
|
+
exports.flattenErrorCauses = flattenErrorCauses;
|
|
8
10
|
exports.formatErrorMessage = formatErrorMessage;
|
|
9
11
|
exports.formatUnknownError = formatUnknownError;
|
|
12
|
+
exports.getFileFromStackTraceString = getFileFromStackTraceString;
|
|
10
13
|
exports.toStackTraceString = toStackTraceString;
|
|
11
14
|
|
|
12
15
|
var _tools = require("./tools");
|
|
@@ -23,10 +26,45 @@ var ErrorSource = {
|
|
|
23
26
|
};
|
|
24
27
|
exports.ErrorSource = ErrorSource;
|
|
25
28
|
|
|
29
|
+
function computeRawError(data) {
|
|
30
|
+
var stackTrace = data.stackTrace;
|
|
31
|
+
var originalError = data.originalError;
|
|
32
|
+
var handlingStack = data.handlingStack;
|
|
33
|
+
var startClocks = data.startClocks;
|
|
34
|
+
var nonErrorPrefix = data.nonErrorPrefix;
|
|
35
|
+
var source = data.source;
|
|
36
|
+
var handling = data.handling;
|
|
37
|
+
|
|
38
|
+
if (!stackTrace || stackTrace.message === undefined && !(originalError instanceof Error)) {
|
|
39
|
+
return {
|
|
40
|
+
startClocks: startClocks,
|
|
41
|
+
source: source,
|
|
42
|
+
handling: handling,
|
|
43
|
+
originalError: originalError,
|
|
44
|
+
message: nonErrorPrefix + ' ' + (0, _tools.jsonStringify)(originalError),
|
|
45
|
+
stack: 'No stack, consider using an instance of Error',
|
|
46
|
+
handlingStack: handlingStack,
|
|
47
|
+
type: stackTrace && stackTrace.name
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
startClocks: startClocks,
|
|
53
|
+
source: source,
|
|
54
|
+
handling: handling,
|
|
55
|
+
originalError: originalError,
|
|
56
|
+
message: stackTrace.message || 'Empty message',
|
|
57
|
+
stack: toStackTraceString(stackTrace),
|
|
58
|
+
handlingStack: handlingStack,
|
|
59
|
+
type: stackTrace.name,
|
|
60
|
+
causes: flattenErrorCauses(originalError, source)
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
26
64
|
function formatUnknownError(stackTrace, errorObject, nonErrorPrefix, handlingStack) {
|
|
27
65
|
if (!stackTrace || stackTrace.message === undefined && !(errorObject instanceof Error)) {
|
|
28
66
|
return {
|
|
29
|
-
message: nonErrorPrefix + '' +
|
|
67
|
+
message: nonErrorPrefix + '' + (0, _tools.jsonStringify)(errorObject),
|
|
30
68
|
stack: 'No stack, consider using an instance of Error',
|
|
31
69
|
handlingStack: handlingStack,
|
|
32
70
|
type: stackTrace && stackTrace.name
|
|
@@ -75,7 +113,7 @@ function createHandlingStack() {
|
|
|
75
113
|
}
|
|
76
114
|
|
|
77
115
|
function toStackTraceString(stack) {
|
|
78
|
-
var result = stack
|
|
116
|
+
var result = formatErrorMessage(stack);
|
|
79
117
|
(0, _tools.each)(stack.stack, function (frame) {
|
|
80
118
|
var func = frame.func === '?' ? '<anonymous>' : frame.func;
|
|
81
119
|
var args = frame.args && frame.args.length > 0 ? '(' + frame.args.join(', ') + ')' : '';
|
|
@@ -88,4 +126,27 @@ function toStackTraceString(stack) {
|
|
|
88
126
|
|
|
89
127
|
function formatErrorMessage(stack) {
|
|
90
128
|
return (stack.name || 'Error') + ': ' + stack.message;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function getFileFromStackTraceString(stack) {
|
|
132
|
+
var execResult = /@ (.+)/.exec(stack);
|
|
133
|
+
return execResult && execResult[1];
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function flattenErrorCauses(error, parentSource) {
|
|
137
|
+
var currentError = error;
|
|
138
|
+
var causes = [];
|
|
139
|
+
|
|
140
|
+
while (currentError && currentError.cause instanceof Error && causes.length < 10) {
|
|
141
|
+
var stackTrace = (0, _tracekit.computeStackTrace)(currentError.cause);
|
|
142
|
+
causes.push({
|
|
143
|
+
message: currentError.cause.message,
|
|
144
|
+
source: parentSource,
|
|
145
|
+
type: stackTrace && stackTrace.name,
|
|
146
|
+
stack: stackTrace && toStackTraceString(stackTrace)
|
|
147
|
+
});
|
|
148
|
+
currentError = currentError.cause;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
return causes.length ? causes : undefined;
|
|
91
152
|
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.instrumentMethod = instrumentMethod;
|
|
7
|
+
exports.instrumentMethodAndCallOriginal = instrumentMethodAndCallOriginal;
|
|
8
|
+
exports.instrumentSetter = instrumentSetter;
|
|
9
|
+
|
|
10
|
+
var _tools = require("./tools");
|
|
11
|
+
|
|
12
|
+
function instrumentMethod(object, method, instrumentationFactory) {
|
|
13
|
+
var original = object[method];
|
|
14
|
+
var instrumentation = instrumentationFactory(original);
|
|
15
|
+
|
|
16
|
+
var instrumentationWrapper = function instrumentationWrapper() {
|
|
17
|
+
if (typeof instrumentation !== 'function') {
|
|
18
|
+
return undefined;
|
|
19
|
+
} // eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
return instrumentation.apply(this, arguments);
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
object[method] = instrumentationWrapper;
|
|
26
|
+
return {
|
|
27
|
+
stop: function stop() {
|
|
28
|
+
if (object[method] === instrumentationWrapper) {
|
|
29
|
+
object[method] = original;
|
|
30
|
+
} else {
|
|
31
|
+
instrumentation = original;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function instrumentMethodAndCallOriginal(object, method, aliasOption) {
|
|
38
|
+
return instrumentMethod(object, method, function (original) {
|
|
39
|
+
return function () {
|
|
40
|
+
var result;
|
|
41
|
+
|
|
42
|
+
if (aliasOption && aliasOption.before) {
|
|
43
|
+
aliasOption.before.apply(this, arguments);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (typeof original === 'function') {
|
|
47
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
48
|
+
result = original.apply(this, arguments);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (aliasOption && aliasOption.after) {
|
|
52
|
+
aliasOption.after.apply(this, arguments);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return result;
|
|
56
|
+
};
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function instrumentSetter(object, property, after) {
|
|
61
|
+
var originalDescriptor = Object.getOwnPropertyDescriptor(object, property);
|
|
62
|
+
|
|
63
|
+
if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {
|
|
64
|
+
return {
|
|
65
|
+
stop: _tools.noop
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
var instrumentation = function instrumentation(thisObject, value) {
|
|
70
|
+
// put hooked setter into event loop to avoid of set latency
|
|
71
|
+
setTimeout(function () {
|
|
72
|
+
after(thisObject, value);
|
|
73
|
+
}, 0);
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
var instrumentationWrapper = function instrumentationWrapper(value) {
|
|
77
|
+
originalDescriptor.set.call(this, value);
|
|
78
|
+
instrumentation(this, value);
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
Object.defineProperty(object, property, {
|
|
82
|
+
set: instrumentationWrapper
|
|
83
|
+
});
|
|
84
|
+
return {
|
|
85
|
+
stop: function stop() {
|
|
86
|
+
if (Object.getOwnPropertyDescriptor(object, property) && Object.getOwnPropertyDescriptor(object, property).set === instrumentationWrapper) {
|
|
87
|
+
Object.defineProperty(object, property, originalDescriptor);
|
|
88
|
+
} else {
|
|
89
|
+
instrumentation = _tools.noop;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
}
|
package/cjs/helper/lifeCycle.js
CHANGED
|
@@ -9,14 +9,14 @@ exports.LifeCycleEventType = void 0;
|
|
|
9
9
|
var _tools = require("./tools");
|
|
10
10
|
|
|
11
11
|
var LifeCycleEventType = {
|
|
12
|
-
|
|
12
|
+
PERFORMANCE_ENTRIES_COLLECTED: 'PERFORMANCE_ENTRIES_COLLECTED',
|
|
13
13
|
AUTO_ACTION_CREATED: 'AUTO_ACTION_CREATED',
|
|
14
14
|
AUTO_ACTION_COMPLETED: 'AUTO_ACTION_COMPLETED',
|
|
15
|
-
AUTO_ACTION_DISCARDED: 'AUTO_ACTION_DISCARDED',
|
|
16
15
|
VIEW_CREATED: 'VIEW_CREATED',
|
|
17
16
|
VIEW_UPDATED: 'VIEW_UPDATED',
|
|
18
17
|
VIEW_ENDED: 'VIEW_ENDED',
|
|
19
18
|
SESSION_RENEWED: 'SESSION_RENEWED',
|
|
19
|
+
SESSION_EXPIRED: 'SESSION_EXPIRED',
|
|
20
20
|
DOM_MUTATED: 'DOM_MUTATED',
|
|
21
21
|
BEFORE_UNLOAD: 'BEFORE_UNLOAD',
|
|
22
22
|
REQUEST_STARTED: 'REQUEST_STARTED',
|
|
@@ -25,7 +25,9 @@ var LifeCycleEventType = {
|
|
|
25
25
|
RUM_EVENT_COLLECTED: 'RUM_EVENT_COLLECTED',
|
|
26
26
|
RAW_ERROR_COLLECTED: 'RAW_ERROR_COLLECTED',
|
|
27
27
|
RECORD_STARTED: 'RECORD_STARTED',
|
|
28
|
-
RECORD_STOPPED: 'RECORD_STOPPED'
|
|
28
|
+
RECORD_STOPPED: 'RECORD_STOPPED',
|
|
29
|
+
RAW_LOG_COLLECTED: 'RAW_LOG_COLLECTED',
|
|
30
|
+
LOG_COLLECTED: 'LOG_COLLECTED'
|
|
29
31
|
};
|
|
30
32
|
exports.LifeCycleEventType = LifeCycleEventType;
|
|
31
33
|
|
package/cjs/helper/observable.js
CHANGED
|
@@ -4,16 +4,37 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.Observable = void 0;
|
|
7
|
+
exports.mergeObservables = mergeObservables;
|
|
7
8
|
|
|
8
9
|
var _tools = require("./tools");
|
|
9
10
|
|
|
10
|
-
var _Observable = function _Observable() {
|
|
11
|
+
var _Observable = function _Observable(onFirstSubscribe) {
|
|
11
12
|
this.observers = [];
|
|
13
|
+
this.onLastUnsubscribe = undefined;
|
|
14
|
+
this.onFirstSubscribe = onFirstSubscribe;
|
|
12
15
|
};
|
|
13
16
|
|
|
14
17
|
_Observable.prototype = {
|
|
15
18
|
subscribe: function subscribe(f) {
|
|
19
|
+
if (!this.observers.length && this.onFirstSubscribe) {
|
|
20
|
+
this.onLastUnsubscribe = this.onFirstSubscribe() || undefined;
|
|
21
|
+
}
|
|
22
|
+
|
|
16
23
|
this.observers.push(f);
|
|
24
|
+
|
|
25
|
+
var _this = this;
|
|
26
|
+
|
|
27
|
+
return {
|
|
28
|
+
unsubscribe: function unsubscribe() {
|
|
29
|
+
_this.observers = (0, _tools.filter)(_this.observers, function (other) {
|
|
30
|
+
return f !== other;
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
if (!_this.observers.length && _this.onLastUnsubscribe) {
|
|
34
|
+
_this.onLastUnsubscribe();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
17
38
|
},
|
|
18
39
|
notify: function notify(data) {
|
|
19
40
|
(0, _tools.each)(this.observers, function (observer) {
|
|
@@ -22,4 +43,21 @@ _Observable.prototype = {
|
|
|
22
43
|
}
|
|
23
44
|
};
|
|
24
45
|
var Observable = _Observable;
|
|
25
|
-
exports.Observable = Observable;
|
|
46
|
+
exports.Observable = Observable;
|
|
47
|
+
|
|
48
|
+
function mergeObservables() {
|
|
49
|
+
var observables = [].slice.call(arguments);
|
|
50
|
+
var globalObservable = new Observable(function () {
|
|
51
|
+
var subscriptions = (0, _tools.map)(observables, function (observable) {
|
|
52
|
+
return observable.subscribe(function (data) {
|
|
53
|
+
return globalObservable.notify(data);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
return function () {
|
|
57
|
+
return (0, _tools.each)(subscriptions, function (subscription) {
|
|
58
|
+
return subscription.unsubscribe();
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
});
|
|
62
|
+
return globalObservable;
|
|
63
|
+
}
|