@cloudcare/browser-core 3.0.23 → 3.1.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/browser/addEventListener.js +11 -14
- package/cjs/browser/addEventListener.js.map +1 -0
- package/cjs/browser/cookie.js +3 -14
- package/cjs/browser/cookie.js.map +1 -0
- package/cjs/browser/fetchObservable.js +8 -23
- package/cjs/browser/fetchObservable.js.map +1 -0
- package/cjs/browser/htmlDomUtils.js +3 -9
- package/cjs/browser/htmlDomUtils.js.map +1 -0
- package/cjs/browser/pageExitObservable.js +3 -9
- package/cjs/browser/pageExitObservable.js.map +1 -0
- package/cjs/browser/runOnReadyState.js +2 -4
- package/cjs/browser/runOnReadyState.js.map +1 -0
- package/cjs/browser/scroll.js +32 -0
- package/cjs/browser/scroll.js.map +1 -0
- package/cjs/browser/xhrObservable.js +2 -21
- package/cjs/browser/xhrObservable.js.map +1 -0
- package/cjs/configuration/configuration.js +9 -20
- package/cjs/configuration/configuration.js.map +1 -0
- package/cjs/configuration/transportConfiguration.js +6 -20
- package/cjs/configuration/transportConfiguration.js.map +1 -0
- package/cjs/console/consoleObservable.js +7 -21
- package/cjs/console/consoleObservable.js.map +1 -0
- package/cjs/dataMap.js +24 -10
- package/cjs/dataMap.js.map +1 -0
- package/cjs/error/trackRuntimeError.js +3 -7
- package/cjs/error/trackRuntimeError.js.map +1 -0
- package/cjs/helper/boundedBuffer.js +2 -6
- package/cjs/helper/boundedBuffer.js.map +1 -0
- package/cjs/helper/byteUtils.js +6 -16
- package/cjs/helper/byteUtils.js.map +1 -0
- package/cjs/helper/catchUserErrors.js +2 -4
- package/cjs/helper/catchUserErrors.js.map +1 -0
- package/cjs/helper/contextHistory.js +21 -37
- package/cjs/helper/contextHistory.js.map +1 -0
- package/cjs/helper/createEventRateLimiter.js +2 -10
- package/cjs/helper/createEventRateLimiter.js.map +1 -0
- package/cjs/helper/deviceInfo.js +10 -64
- package/cjs/helper/deviceInfo.js.map +1 -0
- package/cjs/helper/display.js +2 -5
- package/cjs/helper/display.js.map +1 -0
- package/cjs/helper/enums.js +8 -2
- package/cjs/helper/enums.js.map +1 -0
- package/cjs/helper/errorTools.js +38 -40
- package/cjs/helper/errorTools.js.map +1 -0
- package/cjs/helper/eventEmitter.js +2 -6
- package/cjs/helper/eventEmitter.js.map +1 -0
- package/cjs/helper/getZoneJsOriginalValue.js +2 -5
- package/cjs/helper/getZoneJsOriginalValue.js.map +1 -0
- package/cjs/helper/instrumentMethod.js +11 -21
- package/cjs/helper/instrumentMethod.js.map +1 -0
- package/cjs/helper/lifeCycle.js +2 -9
- package/cjs/helper/lifeCycle.js.map +1 -0
- package/cjs/helper/limitModification.js +4 -22
- package/cjs/helper/limitModification.js.map +1 -0
- package/cjs/helper/mobileUtil.js +2 -20
- package/cjs/helper/mobileUtil.js.map +1 -0
- package/cjs/helper/monitor.js +50 -0
- package/cjs/helper/monitor.js.map +1 -0
- package/cjs/helper/observable.js +2 -9
- package/cjs/helper/observable.js.map +1 -0
- package/cjs/helper/readBytesFromStream.js +8 -16
- package/cjs/helper/readBytesFromStream.js.map +1 -0
- package/cjs/helper/sanitize.js +38 -61
- package/cjs/helper/sanitize.js.map +1 -0
- package/cjs/helper/serialisation/contextManager.js +5 -15
- package/cjs/helper/serialisation/contextManager.js.map +1 -0
- package/cjs/helper/serialisation/heavyCustomerDataWarning.js +2 -7
- package/cjs/helper/serialisation/heavyCustomerDataWarning.js.map +1 -0
- package/cjs/helper/serialisation/jsonStringify.js +6 -12
- package/cjs/helper/serialisation/jsonStringify.js.map +1 -0
- package/cjs/helper/serialisation/rowData.js +3 -10
- package/cjs/helper/serialisation/rowData.js.map +1 -0
- package/cjs/helper/timer.js +5 -9
- package/cjs/helper/timer.js.map +1 -0
- package/cjs/helper/tools.js +58 -463
- package/cjs/helper/tools.js.map +1 -0
- package/cjs/helper/urlPolyfill.js +5 -18
- package/cjs/helper/urlPolyfill.js.map +1 -0
- package/cjs/index.js +35 -93
- package/cjs/index.js.map +1 -0
- package/cjs/init.js +24 -36
- package/cjs/init.js.map +1 -0
- package/cjs/report/reportObservable.js +8 -26
- package/cjs/report/reportObservable.js.map +1 -0
- package/cjs/session/sessionConstants.js +2 -3
- package/cjs/session/sessionConstants.js.map +1 -0
- package/cjs/session/sessionCookieStore.js +11 -46
- package/cjs/session/sessionCookieStore.js.map +1 -0
- package/cjs/session/sessionManagement.js +2 -19
- package/cjs/session/sessionManagement.js.map +1 -0
- package/cjs/session/sessionStore.js +3 -28
- package/cjs/session/sessionStore.js.map +1 -0
- package/cjs/synthetics/syntheticsWorkerValues.js +2 -6
- package/cjs/synthetics/syntheticsWorkerValues.js.map +1 -0
- package/cjs/synthetics/usr.js +2 -8
- package/cjs/synthetics/usr.js.map +1 -0
- package/cjs/telemetry/telemetry.js +125 -0
- package/cjs/telemetry/telemetry.js.map +1 -0
- package/cjs/telemetry/types.js +17 -0
- package/cjs/telemetry/types.js.map +1 -0
- package/cjs/tracekit/computeStackTrace.js +4 -34
- package/cjs/tracekit/computeStackTrace.js.map +1 -0
- package/cjs/tracekit/index.js +2 -3
- package/cjs/tracekit/index.js.map +1 -0
- package/cjs/tracekit/tracekit.js +3 -18
- package/cjs/tracekit/tracekit.js.map +1 -0
- package/cjs/transport/batch.js +7 -56
- package/cjs/transport/batch.js.map +1 -0
- package/cjs/transport/eventBridge.js +2 -7
- package/cjs/transport/eventBridge.js.map +1 -0
- package/cjs/transport/flushController.js +8 -21
- package/cjs/transport/flushController.js.map +1 -0
- package/cjs/transport/httpRequest.js +8 -20
- package/cjs/transport/httpRequest.js.map +1 -0
- package/cjs/transport/index.js +2 -6
- package/cjs/transport/index.js.map +1 -0
- package/cjs/transport/sendWithRetryStrategy.js +4 -23
- package/cjs/transport/sendWithRetryStrategy.js.map +1 -0
- package/cjs/transport/startBatchWithReplica.js +2 -7
- package/cjs/transport/startBatchWithReplica.js.map +1 -0
- package/cjs/user/index.js +2 -3
- package/cjs/user/index.js.map +1 -0
- package/cjs/user/user.js +3 -8
- package/cjs/user/user.js.map +1 -0
- package/cjs/worker.js +2 -2
- package/cjs/worker.js.map +1 -0
- package/esm/browser/addEventListener.js +11 -10
- package/esm/browser/addEventListener.js.map +1 -0
- package/esm/browser/cookie.js +3 -6
- package/esm/browser/cookie.js.map +1 -0
- package/esm/browser/fetchObservable.js +8 -17
- package/esm/browser/fetchObservable.js.map +1 -0
- package/esm/browser/htmlDomUtils.js +3 -2
- package/esm/browser/htmlDomUtils.js.map +1 -0
- package/esm/browser/pageExitObservable.js +3 -2
- package/esm/browser/pageExitObservable.js.map +1 -0
- package/esm/browser/runOnReadyState.js +2 -1
- package/esm/browser/runOnReadyState.js.map +1 -0
- package/esm/browser/scroll.js +25 -0
- package/esm/browser/scroll.js.map +1 -0
- package/esm/browser/xhrObservable.js +2 -14
- package/esm/browser/xhrObservable.js.map +1 -0
- package/esm/configuration/configuration.js +9 -9
- package/esm/configuration/configuration.js.map +1 -0
- package/esm/configuration/transportConfiguration.js +6 -17
- package/esm/configuration/transportConfiguration.js.map +1 -0
- package/esm/console/consoleObservable.js +7 -12
- package/esm/console/consoleObservable.js.map +1 -0
- package/esm/dataMap.js +24 -8
- package/esm/dataMap.js.map +1 -0
- package/esm/error/trackRuntimeError.js +4 -3
- package/esm/error/trackRuntimeError.js.map +1 -0
- package/esm/helper/boundedBuffer.js +2 -4
- package/esm/helper/boundedBuffer.js.map +1 -0
- package/esm/helper/byteUtils.js +6 -13
- package/esm/helper/byteUtils.js.map +1 -0
- package/esm/helper/catchUserErrors.js +2 -2
- package/esm/helper/catchUserErrors.js.map +1 -0
- package/esm/helper/contextHistory.js +21 -33
- package/esm/helper/contextHistory.js.map +1 -0
- package/esm/helper/createEventRateLimiter.js +2 -6
- package/esm/helper/createEventRateLimiter.js.map +1 -0
- package/esm/helper/deviceInfo.js +10 -62
- package/esm/helper/deviceInfo.js.map +1 -0
- package/esm/helper/display.js +2 -3
- package/esm/helper/display.js.map +1 -0
- package/esm/helper/enums.js +6 -1
- package/esm/helper/enums.js.map +1 -0
- package/esm/helper/errorTools.js +36 -28
- package/esm/helper/errorTools.js.map +1 -0
- package/esm/helper/eventEmitter.js +2 -5
- package/esm/helper/eventEmitter.js.map +1 -0
- package/esm/helper/getZoneJsOriginalValue.js +2 -4
- package/esm/helper/getZoneJsOriginalValue.js.map +1 -0
- package/esm/helper/instrumentMethod.js +11 -16
- package/esm/helper/instrumentMethod.js.map +1 -0
- package/esm/helper/lifeCycle.js +2 -5
- package/esm/helper/lifeCycle.js.map +1 -0
- package/esm/helper/limitModification.js +5 -20
- package/esm/helper/limitModification.js.map +1 -0
- package/esm/helper/mobileUtil.js +2 -16
- package/esm/helper/mobileUtil.js.map +1 -0
- package/esm/helper/monitor.js +39 -0
- package/esm/helper/monitor.js.map +1 -0
- package/esm/helper/observable.js +2 -7
- package/esm/helper/observable.js.map +1 -0
- package/esm/helper/readBytesFromStream.js +8 -15
- package/esm/helper/readBytesFromStream.js.map +1 -0
- package/esm/helper/sanitize.js +40 -57
- package/esm/helper/sanitize.js.map +1 -0
- package/esm/helper/serialisation/contextManager.js +5 -9
- package/esm/helper/serialisation/contextManager.js.map +1 -0
- package/esm/helper/serialisation/heavyCustomerDataWarning.js +5 -4
- package/esm/helper/serialisation/heavyCustomerDataWarning.js.map +1 -0
- package/esm/helper/serialisation/jsonStringify.js +7 -10
- package/esm/helper/serialisation/jsonStringify.js.map +1 -0
- package/esm/helper/serialisation/rowData.js +3 -4
- package/esm/helper/serialisation/rowData.js.map +1 -0
- package/esm/helper/timer.js +5 -3
- package/esm/helper/timer.js.map +1 -0
- package/esm/helper/tools.js +58 -273
- package/esm/helper/tools.js.map +1 -0
- package/esm/helper/urlPolyfill.js +5 -9
- package/esm/helper/urlPolyfill.js.map +1 -0
- package/esm/index.js +5 -1
- package/esm/index.js.map +1 -0
- package/esm/init.js +25 -31
- package/esm/init.js.map +1 -0
- package/esm/report/reportObservable.js +8 -19
- package/esm/report/reportObservable.js.map +1 -0
- package/esm/session/sessionConstants.js +2 -1
- package/esm/session/sessionConstants.js.map +1 -0
- package/esm/session/sessionCookieStore.js +11 -38
- package/esm/session/sessionCookieStore.js.map +1 -0
- package/esm/session/sessionManagement.js +2 -8
- package/esm/session/sessionManagement.js.map +1 -0
- package/esm/session/sessionStore.js +4 -22
- package/esm/session/sessionStore.js.map +1 -0
- package/esm/synthetics/syntheticsWorkerValues.js +2 -1
- package/esm/synthetics/syntheticsWorkerValues.js.map +1 -0
- package/esm/synthetics/usr.js +2 -3
- package/esm/synthetics/usr.js.map +1 -0
- package/esm/telemetry/telemetry.js +111 -0
- package/esm/telemetry/telemetry.js.map +1 -0
- package/esm/telemetry/types.js +9 -0
- package/esm/telemetry/types.js.map +1 -0
- package/esm/tracekit/computeStackTrace.js +4 -31
- package/esm/tracekit/computeStackTrace.js.map +1 -0
- package/esm/tracekit/index.js +2 -1
- package/esm/tracekit/index.js.map +1 -0
- package/esm/tracekit/tracekit.js +5 -14
- package/esm/tracekit/tracekit.js.map +1 -0
- package/esm/transport/batch.js +9 -47
- package/esm/transport/batch.js.map +1 -0
- package/esm/transport/eventBridge.js +2 -5
- package/esm/transport/eventBridge.js.map +1 -0
- package/esm/transport/flushController.js +11 -20
- package/esm/transport/flushController.js.map +1 -0
- package/esm/transport/httpRequest.js +8 -18
- package/esm/transport/httpRequest.js.map +1 -0
- package/esm/transport/index.js +2 -1
- package/esm/transport/index.js.map +1 -0
- package/esm/transport/sendWithRetryStrategy.js +4 -17
- package/esm/transport/sendWithRetryStrategy.js.map +1 -0
- package/esm/transport/startBatchWithReplica.js +2 -3
- package/esm/transport/startBatchWithReplica.js.map +1 -0
- package/esm/user/index.js.map +1 -0
- package/esm/user/user.js +4 -5
- package/esm/user/user.js.map +1 -0
- package/esm/worker.js.map +1 -0
- package/package.json +2 -2
- package/src/browser/addEventListener.js +8 -7
- package/src/browser/fetchObservable.js +12 -3
- package/src/browser/scroll.js +25 -0
- package/src/configuration/configuration.js +16 -0
- package/src/configuration/transportConfiguration.js +2 -2
- package/src/console/consoleObservable.js +4 -2
- package/src/dataMap.js +17 -3
- package/src/error/trackRuntimeError.js +2 -2
- package/src/helper/contextHistory.js +3 -3
- package/src/helper/enums.js +4 -0
- package/src/helper/errorTools.js +55 -24
- package/src/helper/instrumentMethod.js +5 -2
- package/src/helper/monitor.js +44 -0
- package/src/helper/observable.js +10 -8
- package/src/helper/readBytesFromStream.js +5 -5
- package/src/helper/timer.js +3 -3
- package/src/helper/tools.js +2 -17
- package/src/index.js +4 -0
- package/src/init.js +19 -21
- package/src/report/reportObservable.js +6 -5
- package/src/telemetry/telemetry.js +164 -0
- package/src/telemetry/types.js +9 -0
- package/src/transport/batch.js +4 -4
- package/src/transport/httpRequest.js +5 -4
|
@@ -1,29 +1,24 @@
|
|
|
1
|
-
function _typeof(obj) { "@babel/helpers - typeof";
|
|
2
|
-
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
3
2
|
import { each } from '../helper/tools';
|
|
4
3
|
var UNKNOWN_FUNCTION = '?';
|
|
4
|
+
|
|
5
5
|
/**
|
|
6
6
|
* Computes a stack trace for an exception.
|
|
7
7
|
*/
|
|
8
|
-
|
|
9
8
|
export function computeStackTrace(ex) {
|
|
10
9
|
var stack = [];
|
|
11
10
|
var stackProperty = tryToGetString(ex, 'stack');
|
|
12
|
-
|
|
13
11
|
if (stackProperty) {
|
|
14
12
|
each(stackProperty.split('\n'), function (line) {
|
|
15
13
|
var stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);
|
|
16
|
-
|
|
17
14
|
if (stackFrame) {
|
|
18
15
|
if (!stackFrame.func && stackFrame.line) {
|
|
19
16
|
stackFrame.func = UNKNOWN_FUNCTION;
|
|
20
17
|
}
|
|
21
|
-
|
|
22
18
|
stack.push(stackFrame);
|
|
23
19
|
}
|
|
24
20
|
});
|
|
25
21
|
}
|
|
26
|
-
|
|
27
22
|
return {
|
|
28
23
|
message: tryToGetString(ex, 'message'),
|
|
29
24
|
name: tryToGetString(ex, 'name'),
|
|
@@ -34,26 +29,18 @@ var fileUrl = '((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonym
|
|
|
34
29
|
var filePosition = '(?::(\\d+))';
|
|
35
30
|
var CHROME_LINE_RE = new RegExp('^\\s*at (.*?) ?\\(' + fileUrl + filePosition + '?' + filePosition + '?\\)?\\s*$', 'i');
|
|
36
31
|
var CHROME_EVAL_RE = new RegExp('\\((\\S*)' + filePosition + filePosition + '\\)');
|
|
37
|
-
|
|
38
32
|
function parseChromeLine(line) {
|
|
39
33
|
var parts = CHROME_LINE_RE.exec(line);
|
|
40
|
-
|
|
41
34
|
if (!parts) {
|
|
42
35
|
return;
|
|
43
36
|
}
|
|
44
|
-
|
|
45
37
|
var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line
|
|
46
|
-
|
|
47
38
|
var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line
|
|
48
|
-
|
|
49
39
|
var submatch = CHROME_EVAL_RE.exec(parts[2]);
|
|
50
|
-
|
|
51
40
|
if (isEval && submatch) {
|
|
52
41
|
// throw out eval line/column and use top-most line/column number
|
|
53
42
|
parts[2] = submatch[1]; // url
|
|
54
|
-
|
|
55
43
|
parts[3] = submatch[2]; // line
|
|
56
|
-
|
|
57
44
|
parts[4] = submatch[3]; // column
|
|
58
45
|
}
|
|
59
46
|
|
|
@@ -65,16 +52,12 @@ function parseChromeLine(line) {
|
|
|
65
52
|
url: !isNative ? parts[2] : undefined
|
|
66
53
|
};
|
|
67
54
|
}
|
|
68
|
-
|
|
69
55
|
var CHROME_ANONYMOUS_FUNCTION_RE = new RegExp('^\\s*at ?' + fileUrl + filePosition + '?' + filePosition + '??\\s*$', 'i');
|
|
70
|
-
|
|
71
56
|
function parseChromeAnonymousLine(line) {
|
|
72
57
|
var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line);
|
|
73
|
-
|
|
74
58
|
if (!parts) {
|
|
75
59
|
return;
|
|
76
60
|
}
|
|
77
|
-
|
|
78
61
|
return {
|
|
79
62
|
args: [],
|
|
80
63
|
column: parts[3] ? +parts[3] : undefined,
|
|
@@ -83,16 +66,12 @@ function parseChromeAnonymousLine(line) {
|
|
|
83
66
|
url: parts[1]
|
|
84
67
|
};
|
|
85
68
|
}
|
|
86
|
-
|
|
87
69
|
var WINJS_LINE_RE = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i;
|
|
88
|
-
|
|
89
70
|
function parseWinLine(line) {
|
|
90
71
|
var parts = WINJS_LINE_RE.exec(line);
|
|
91
|
-
|
|
92
72
|
if (!parts) {
|
|
93
73
|
return;
|
|
94
74
|
}
|
|
95
|
-
|
|
96
75
|
return {
|
|
97
76
|
args: [],
|
|
98
77
|
column: parts[4] ? +parts[4] : undefined,
|
|
@@ -101,20 +80,15 @@ function parseWinLine(line) {
|
|
|
101
80
|
url: parts[2]
|
|
102
81
|
};
|
|
103
82
|
}
|
|
104
|
-
|
|
105
83
|
var GECKO_LINE_RE = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i;
|
|
106
84
|
var GECKO_EVAL_RE = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i;
|
|
107
|
-
|
|
108
85
|
function parseGeckoLine(line) {
|
|
109
86
|
var parts = GECKO_LINE_RE.exec(line);
|
|
110
|
-
|
|
111
87
|
if (!parts) {
|
|
112
88
|
return;
|
|
113
89
|
}
|
|
114
|
-
|
|
115
90
|
var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;
|
|
116
91
|
var submatch = GECKO_EVAL_RE.exec(parts[3]);
|
|
117
|
-
|
|
118
92
|
if (isEval && submatch) {
|
|
119
93
|
// throw out eval line/column and use top-most line number
|
|
120
94
|
parts[3] = submatch[1];
|
|
@@ -130,12 +104,11 @@ function parseGeckoLine(line) {
|
|
|
130
104
|
url: parts[3]
|
|
131
105
|
};
|
|
132
106
|
}
|
|
133
|
-
|
|
134
107
|
function tryToGetString(candidate, property) {
|
|
135
108
|
if (_typeof(candidate) !== 'object' || !candidate || !(property in candidate)) {
|
|
136
109
|
return undefined;
|
|
137
110
|
}
|
|
138
|
-
|
|
139
111
|
var value = candidate[property];
|
|
140
112
|
return typeof value === 'string' ? value : undefined;
|
|
141
|
-
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=computeStackTrace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computeStackTrace.js","names":["each","UNKNOWN_FUNCTION","computeStackTrace","ex","stack","stackProperty","tryToGetString","split","line","stackFrame","parseChromeLine","parseChromeAnonymousLine","parseWinLine","parseGeckoLine","func","push","message","name","fileUrl","filePosition","CHROME_LINE_RE","RegExp","CHROME_EVAL_RE","parts","exec","isNative","indexOf","isEval","submatch","args","column","undefined","url","CHROME_ANONYMOUS_FUNCTION_RE","WINJS_LINE_RE","GECKO_LINE_RE","GECKO_EVAL_RE","candidate","property","_typeof","value"],"sources":["../../src/tracekit/computeStackTrace.js"],"sourcesContent":["import { each } from '../helper/tools'\nvar UNKNOWN_FUNCTION = '?'\n\n/**\n * Computes a stack trace for an exception.\n */\nexport function computeStackTrace(ex) {\n var stack = []\n\n var stackProperty = tryToGetString(ex, 'stack')\n if (stackProperty) {\n each(stackProperty.split('\\n'), function(line) {\n var stackFrame =\n parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line)\n if (stackFrame) {\n if (!stackFrame.func && stackFrame.line) {\n stackFrame.func = UNKNOWN_FUNCTION\n }\n stack.push(stackFrame)\n }\n })\n }\n\n return {\n message: tryToGetString(ex, 'message'),\n name: tryToGetString(ex, 'name'),\n stack: stack,\n }\n}\nvar fileUrl = '((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\\\w+\\\\.|\\\\/).*?)'\nvar filePosition = '(?::(\\\\d+))'\nvar CHROME_LINE_RE = new RegExp('^\\\\s*at (.*?) ?\\\\('+ fileUrl + filePosition + '?' + filePosition + '?\\\\)?\\\\s*$', 'i')\nvar CHROME_EVAL_RE = new RegExp('\\\\((\\\\S*)' + filePosition + filePosition + '\\\\)')\n\nfunction parseChromeLine(line){\n var parts = CHROME_LINE_RE.exec(line)\n\n if (!parts) {\n return\n }\n\n var isNative = parts[2] && parts[2].indexOf('native') === 0 // start of line\n var isEval = parts[2] && parts[2].indexOf('eval') === 0 // start of line\n var submatch = CHROME_EVAL_RE.exec(parts[2])\n\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1] // url\n parts[3] = submatch[2] // line\n parts[4] = submatch[3] // column\n }\n\n return {\n args: isNative ? [parts[2]] : [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[3] ? +parts[3] : undefined,\n url: !isNative ? parts[2] : undefined,\n }\n}\n\nvar CHROME_ANONYMOUS_FUNCTION_RE = new RegExp('^\\\\s*at ?' + fileUrl + filePosition + '?' + filePosition + '??\\\\s*$', 'i')\n\nfunction parseChromeAnonymousLine(line){\n var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line)\n\n if (!parts) {\n return\n }\n\n return {\n args: [],\n column: parts[3] ? +parts[3] : undefined,\n func: UNKNOWN_FUNCTION,\n line: parts[2] ? +parts[2] : undefined,\n url: parts[1],\n }\n}\n\nvar WINJS_LINE_RE =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i\n\nfunction parseWinLine(line) {\n var parts = WINJS_LINE_RE.exec(line)\n if (!parts) {\n return\n }\n\n return {\n args: [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: +parts[3],\n url: parts[2],\n }\n}\n\nvar GECKO_LINE_RE =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i\nvar GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i\n\nfunction parseGeckoLine(line) {\n var parts = GECKO_LINE_RE.exec(line)\n if (!parts) {\n return\n }\n\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1\n var submatch = GECKO_EVAL_RE.exec(parts[3])\n\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1]\n parts[4] = submatch[2]\n parts[5] = undefined // no column when eval\n }\n\n return {\n args: parts[2] ? parts[2].split(',') : [],\n column: parts[5] ? +parts[5] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[4] ? +parts[4] : undefined,\n url: parts[3],\n }\n}\n\nfunction tryToGetString(candidate, property) {\n if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n return undefined\n }\n var value = candidate[property]\n return typeof value === 'string' ? value : undefined\n}\n"],"mappings":";AAAA,SAASA,IAAI,QAAQ,iBAAiB;AACtC,IAAIC,gBAAgB,GAAG,GAAG;;AAE1B;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAACC,EAAE,EAAE;EACpC,IAAIC,KAAK,GAAG,EAAE;EAEd,IAAIC,aAAa,GAAGC,cAAc,CAACH,EAAE,EAAE,OAAO,CAAC;EAC/C,IAAIE,aAAa,EAAE;IACjBL,IAAI,CAACK,aAAa,CAACE,KAAK,CAAC,IAAI,CAAC,EAAE,UAASC,IAAI,EAAE;MAC7C,IAAIC,UAAU,GACZC,eAAe,CAACF,IAAI,CAAC,IAAIG,wBAAwB,CAACH,IAAI,CAAC,IAAII,YAAY,CAACJ,IAAI,CAAC,IAAIK,cAAc,CAACL,IAAI,CAAC;MACvG,IAAIC,UAAU,EAAE;QACd,IAAI,CAACA,UAAU,CAACK,IAAI,IAAIL,UAAU,CAACD,IAAI,EAAE;UACvCC,UAAU,CAACK,IAAI,GAAGb,gBAAgB;QACpC;QACAG,KAAK,CAACW,IAAI,CAACN,UAAU,CAAC;MACxB;IACF,CAAC,CAAC;EACJ;EAEA,OAAO;IACLO,OAAO,EAAEV,cAAc,CAACH,EAAE,EAAE,SAAS,CAAC;IACtCc,IAAI,EAAEX,cAAc,CAACH,EAAE,EAAE,MAAM,CAAC;IAChCC,KAAK,EAAEA;EACT,CAAC;AACH;AACA,IAAIc,OAAO,GAAG,wFAAwF;AACtG,IAAIC,YAAY,GAAG,aAAa;AAChC,IAAIC,cAAc,GAAG,IAAIC,MAAM,CAAC,oBAAoB,GAAEH,OAAO,GAAGC,YAAY,GAAG,GAAG,GAAGA,YAAY,GAAG,YAAY,EAAE,GAAG,CAAC;AACtH,IAAIG,cAAc,GAAG,IAAID,MAAM,CAAC,WAAW,GAAGF,YAAY,GAAGA,YAAY,GAAG,KAAK,CAAC;AAElF,SAAST,eAAeA,CAACF,IAAI,EAAC;EAC5B,IAAIe,KAAK,GAAGH,cAAc,CAACI,IAAI,CAAChB,IAAI,CAAC;EAErC,IAAI,CAACe,KAAK,EAAE;IACV;EACF;EAEA,IAAIE,QAAQ,GAAGF,KAAK,CAAC,CAAC,CAAC,IAAIA,KAAK,CAAC,CAAC,CAAC,CAACG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAC;EAC5D,IAAIC,MAAM,GAAGJ,KAAK,CAAC,CAAC,CAAC,IAAIA,KAAK,CAAC,CAAC,CAAC,CAACG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC;EACxD,IAAIE,QAAQ,GAAGN,cAAc,CAACE,IAAI,CAACD,KAAK,CAAC,CAAC,CAAC,CAAC;EAE5C,IAAII,MAAM,IAAIC,QAAQ,EAAE;IACtB;IACAL,KAAK,CAAC,CAAC,CAAC,GAAGK,QAAQ,CAAC,CAAC,CAAC,EAAC;IACvBL,KAAK,CAAC,CAAC,CAAC,GAAGK,QAAQ,CAAC,CAAC,CAAC,EAAC;IACvBL,KAAK,CAAC,CAAC,CAAC,GAAGK,QAAQ,CAAC,CAAC,CAAC,EAAC;EACzB;;EAEA,OAAO;IACLC,IAAI,EAAEJ,QAAQ,GAAG,CAACF,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;IAChCO,MAAM,EAAEP,KAAK,CAAC,CAAC,CAAC,GAAG,CAACA,KAAK,CAAC,CAAC,CAAC,GAAGQ,SAAS;IACxCjB,IAAI,EAAES,KAAK,CAAC,CAAC,CAAC,IAAItB,gBAAgB;IAClCO,IAAI,EAAEe,KAAK,CAAC,CAAC,CAAC,GAAG,CAACA,KAAK,CAAC,CAAC,CAAC,GAAGQ,SAAS;IACtCC,GAAG,EAAE,CAACP,QAAQ,GAAGF,KAAK,CAAC,CAAC,CAAC,GAAGQ;EAC9B,CAAC;AACH;AAEA,IAAIE,4BAA4B,GAAG,IAAIZ,MAAM,CAAC,WAAW,GAAGH,OAAO,GAAGC,YAAY,GAAG,GAAG,GAAGA,YAAY,GAAG,SAAS,EAAE,GAAG,CAAC;AAEzH,SAASR,wBAAwBA,CAACH,IAAI,EAAC;EACrC,IAAIe,KAAK,GAAGU,4BAA4B,CAACT,IAAI,CAAChB,IAAI,CAAC;EAEnD,IAAI,CAACe,KAAK,EAAE;IACV;EACF;EAEA,OAAO;IACLM,IAAI,EAAE,EAAE;IACRC,MAAM,EAAEP,KAAK,CAAC,CAAC,CAAC,GAAG,CAACA,KAAK,CAAC,CAAC,CAAC,GAAGQ,SAAS;IACxCjB,IAAI,EAAEb,gBAAgB;IACtBO,IAAI,EAAEe,KAAK,CAAC,CAAC,CAAC,GAAG,CAACA,KAAK,CAAC,CAAC,CAAC,GAAGQ,SAAS;IACtCC,GAAG,EAAET,KAAK,CAAC,CAAC;EACd,CAAC;AACH;AAEA,IAAIW,aAAa,GACf,+GAA+G;AAEjH,SAAStB,YAAYA,CAACJ,IAAI,EAAE;EAC1B,IAAIe,KAAK,GAAGW,aAAa,CAACV,IAAI,CAAChB,IAAI,CAAC;EACpC,IAAI,CAACe,KAAK,EAAE;IACV;EACF;EAEA,OAAO;IACLM,IAAI,EAAE,EAAE;IACRC,MAAM,EAAEP,KAAK,CAAC,CAAC,CAAC,GAAG,CAACA,KAAK,CAAC,CAAC,CAAC,GAAGQ,SAAS;IACxCjB,IAAI,EAAES,KAAK,CAAC,CAAC,CAAC,IAAItB,gBAAgB;IAClCO,IAAI,EAAE,CAACe,KAAK,CAAC,CAAC,CAAC;IACfS,GAAG,EAAET,KAAK,CAAC,CAAC;EACd,CAAC;AACH;AAEA,IAAIY,aAAa,GACf,2IAA2I;AAC7I,IAAIC,aAAa,GAAG,+CAA+C;AAEnE,SAASvB,cAAcA,CAACL,IAAI,EAAE;EAC5B,IAAIe,KAAK,GAAGY,aAAa,CAACX,IAAI,CAAChB,IAAI,CAAC;EACpC,IAAI,CAACe,KAAK,EAAE;IACV;EACF;EAEA,IAAII,MAAM,GAAGJ,KAAK,CAAC,CAAC,CAAC,IAAIA,KAAK,CAAC,CAAC,CAAC,CAACG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;EACzD,IAAIE,QAAQ,GAAGQ,aAAa,CAACZ,IAAI,CAACD,KAAK,CAAC,CAAC,CAAC,CAAC;EAE3C,IAAII,MAAM,IAAIC,QAAQ,EAAE;IACtB;IACAL,KAAK,CAAC,CAAC,CAAC,GAAGK,QAAQ,CAAC,CAAC,CAAC;IACtBL,KAAK,CAAC,CAAC,CAAC,GAAGK,QAAQ,CAAC,CAAC,CAAC;IACtBL,KAAK,CAAC,CAAC,CAAC,GAAGQ,SAAS,EAAC;EACvB;;EAEA,OAAO;IACLF,IAAI,EAAEN,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC,CAAChB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;IACzCuB,MAAM,EAAEP,KAAK,CAAC,CAAC,CAAC,GAAG,CAACA,KAAK,CAAC,CAAC,CAAC,GAAGQ,SAAS;IACxCjB,IAAI,EAAES,KAAK,CAAC,CAAC,CAAC,IAAItB,gBAAgB;IAClCO,IAAI,EAAEe,KAAK,CAAC,CAAC,CAAC,GAAG,CAACA,KAAK,CAAC,CAAC,CAAC,GAAGQ,SAAS;IACtCC,GAAG,EAAET,KAAK,CAAC,CAAC;EACd,CAAC;AACH;AAEA,SAASjB,cAAcA,CAAC+B,SAAS,EAAEC,QAAQ,EAAE;EAC3C,IAAIC,OAAA,CAAOF,SAAS,MAAK,QAAQ,IAAI,CAACA,SAAS,IAAI,EAAEC,QAAQ,IAAID,SAAS,CAAC,EAAE;IAC3E,OAAON,SAAS;EAClB;EACA,IAAIS,KAAK,GAAGH,SAAS,CAACC,QAAQ,CAAC;EAC/B,OAAO,OAAOE,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGT,SAAS;AACtD"}
|
package/esm/tracekit/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["computeStackTrace","startUnhandledErrorCollection"],"sources":["../../src/tracekit/index.js"],"sourcesContent":["export { computeStackTrace } from './computeStackTrace'\nexport { startUnhandledErrorCollection } from './tracekit'\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,6BAA6B,QAAQ,YAAY"}
|
package/esm/tracekit/tracekit.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { instrumentMethodAndCallOriginal } from '../helper/instrumentMethod';
|
|
2
2
|
import { isNullUndefinedDefaultValue } from '../helper/tools';
|
|
3
|
-
import { computeStackTrace } from './computeStackTrace';
|
|
3
|
+
import { computeStackTrace } from './computeStackTrace';
|
|
4
4
|
|
|
5
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types
|
|
5
6
|
var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\s\S]*)$/;
|
|
6
7
|
/**
|
|
7
8
|
* Cross-browser collection of unhandled errors
|
|
@@ -37,26 +38,22 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran
|
|
|
37
38
|
|
|
38
39
|
export function startUnhandledErrorCollection(callback) {
|
|
39
40
|
var _instrumentOnError = instrumentOnError(callback);
|
|
40
|
-
|
|
41
41
|
var _instrumentUnhandledRejection = instrumentUnhandledRejection(callback);
|
|
42
|
-
|
|
43
42
|
return {
|
|
44
43
|
stop: function stop() {
|
|
45
44
|
_instrumentOnError.stop();
|
|
46
|
-
|
|
47
45
|
_instrumentUnhandledRejection.stop();
|
|
48
46
|
}
|
|
49
47
|
};
|
|
50
48
|
}
|
|
49
|
+
|
|
51
50
|
/**
|
|
52
51
|
* Install a global onerror handler
|
|
53
52
|
*/
|
|
54
|
-
|
|
55
53
|
function instrumentOnError(callback) {
|
|
56
54
|
return instrumentMethodAndCallOriginal(window, 'onerror', {
|
|
57
55
|
before: function before(messageObj, url, line, column, errorObj) {
|
|
58
56
|
var stackTrace;
|
|
59
|
-
|
|
60
57
|
if (errorObj instanceof Error) {
|
|
61
58
|
stackTrace = computeStackTrace(errorObj);
|
|
62
59
|
} else {
|
|
@@ -72,25 +69,20 @@ function instrumentOnError(callback) {
|
|
|
72
69
|
stack: [location]
|
|
73
70
|
};
|
|
74
71
|
}
|
|
75
|
-
|
|
76
72
|
callback(stackTrace, isNullUndefinedDefaultValue(errorObj, messageObj));
|
|
77
73
|
}
|
|
78
74
|
});
|
|
79
75
|
}
|
|
80
|
-
|
|
81
76
|
function tryToParseMessage(messageObj) {
|
|
82
77
|
var name;
|
|
83
78
|
var message;
|
|
84
|
-
|
|
85
79
|
if ({}.toString.call(messageObj) === '[object String]') {
|
|
86
80
|
var groups = ERROR_TYPES_RE.exec(messageObj);
|
|
87
|
-
|
|
88
81
|
if (groups) {
|
|
89
82
|
name = groups[1];
|
|
90
83
|
message = groups[2];
|
|
91
84
|
}
|
|
92
85
|
}
|
|
93
|
-
|
|
94
86
|
return {
|
|
95
87
|
name: name,
|
|
96
88
|
message: message
|
|
@@ -99,8 +91,6 @@ function tryToParseMessage(messageObj) {
|
|
|
99
91
|
/**
|
|
100
92
|
* Install a global onunhandledrejection handler
|
|
101
93
|
*/
|
|
102
|
-
|
|
103
|
-
|
|
104
94
|
function instrumentUnhandledRejection(callback) {
|
|
105
95
|
return instrumentMethodAndCallOriginal(window, 'onunhandledrejection', {
|
|
106
96
|
before: function before(e) {
|
|
@@ -109,4 +99,5 @@ function instrumentUnhandledRejection(callback) {
|
|
|
109
99
|
callback(stack, reason);
|
|
110
100
|
}
|
|
111
101
|
});
|
|
112
|
-
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=tracekit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracekit.js","names":["instrumentMethodAndCallOriginal","isNullUndefinedDefaultValue","computeStackTrace","ERROR_TYPES_RE","startUnhandledErrorCollection","callback","_instrumentOnError","instrumentOnError","_instrumentUnhandledRejection","instrumentUnhandledRejection","stop","window","before","messageObj","url","line","column","errorObj","stackTrace","Error","location","parse","tryToParseMessage","name","message","stack","toString","call","groups","exec","e","reason"],"sources":["../../src/tracekit/tracekit.js"],"sourcesContent":["import { instrumentMethodAndCallOriginal } from '../helper/instrumentMethod'\nimport { isNullUndefinedDefaultValue } from '../helper/tools'\nimport { computeStackTrace } from './computeStackTrace'\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nvar ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\\s\\S]*)$/\n/**\n * Cross-browser collection of unhandled errors\n *\n * Supports:\n * - Firefox: full stack trace with line numbers, plus column number\n * on top frame; column number is not guaranteed\n * - Opera: full stack trace with line and column numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n * - IE: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n *\n * In theory, TraceKit should work on all of the following versions:\n * - IE5.5+ (only 8.0 tested)\n * - Firefox 0.9+ (only 3.5+ tested)\n * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require\n * Exceptions Have Stacktrace to be enabled in opera:config)\n * - Safari 3+ (only 4+ tested)\n * - Chrome 1+ (only 5+ tested)\n * - Konqueror 3.5+ (untested)\n *\n * Tries to catch all unhandled errors and report them to the\n * callback.\n *\n * Callbacks receive a StackTrace object as described in the\n * computeStackTrace docs.\n *\n * @memberof TraceKit\n * @namespace\n */\n\nexport function startUnhandledErrorCollection(callback) {\n var _instrumentOnError = instrumentOnError(callback)\n var _instrumentUnhandledRejection = instrumentUnhandledRejection(callback)\n return {\n stop: function () {\n _instrumentOnError.stop()\n _instrumentUnhandledRejection.stop()\n }\n }\n}\n\n/**\n * Install a global onerror handler\n */\nfunction instrumentOnError(callback) {\n return instrumentMethodAndCallOriginal(window, 'onerror', {\n before: function (messageObj, url, line, column, errorObj) {\n var stackTrace\n if (errorObj instanceof Error) {\n stackTrace = computeStackTrace(errorObj)\n } else {\n var location = {\n url: url,\n column: column,\n line: line\n }\n var parse = tryToParseMessage(messageObj)\n\n stackTrace = {\n name: parse.name,\n message: parse.message,\n stack: [location]\n }\n }\n callback(stackTrace, isNullUndefinedDefaultValue(errorObj, messageObj))\n }\n })\n}\nfunction tryToParseMessage(messageObj) {\n let name\n let message\n if ({}.toString.call(messageObj) === '[object String]') {\n var groups = ERROR_TYPES_RE.exec(messageObj)\n if (groups) {\n name = groups[1]\n message = groups[2]\n }\n }\n return { name: name, message: message }\n}\n/**\n * Install a global onunhandledrejection handler\n */\nfunction instrumentUnhandledRejection(callback) {\n return instrumentMethodAndCallOriginal(window, 'onunhandledrejection', {\n before: function (e) {\n var reason = e.reason || 'Empty reason'\n var stack = computeStackTrace(reason)\n callback(stack, reason)\n }\n })\n}\n"],"mappings":"AAAA,SAASA,+BAA+B,QAAQ,4BAA4B;AAC5E,SAASC,2BAA2B,QAAQ,iBAAiB;AAC7D,SAASC,iBAAiB,QAAQ,qBAAqB;;AAEvD;AACA,IAAIC,cAAc,GAChB,8GAA8G;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,SAASC,6BAA6BA,CAACC,QAAQ,EAAE;EACtD,IAAIC,kBAAkB,GAAGC,iBAAiB,CAACF,QAAQ,CAAC;EACpD,IAAIG,6BAA6B,GAAGC,4BAA4B,CAACJ,QAAQ,CAAC;EAC1E,OAAO;IACLK,IAAI,EAAE,SAAAA,KAAA,EAAY;MAChBJ,kBAAkB,CAACI,IAAI,CAAC,CAAC;MACzBF,6BAA6B,CAACE,IAAI,CAAC,CAAC;IACtC;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACA,SAASH,iBAAiBA,CAACF,QAAQ,EAAE;EACnC,OAAOL,+BAA+B,CAACW,MAAM,EAAE,SAAS,EAAE;IACxDC,MAAM,EAAE,SAAAA,OAAUC,UAAU,EAAEC,GAAG,EAAEC,IAAI,EAAEC,MAAM,EAAEC,QAAQ,EAAE;MACzD,IAAIC,UAAU;MACd,IAAID,QAAQ,YAAYE,KAAK,EAAE;QAC7BD,UAAU,GAAGhB,iBAAiB,CAACe,QAAQ,CAAC;MAC1C,CAAC,MAAM;QACL,IAAIG,QAAQ,GAAG;UACbN,GAAG,EAAEA,GAAG;UACRE,MAAM,EAAEA,MAAM;UACdD,IAAI,EAAEA;QACR,CAAC;QACD,IAAIM,KAAK,GAAGC,iBAAiB,CAACT,UAAU,CAAC;QAEzCK,UAAU,GAAG;UACXK,IAAI,EAAEF,KAAK,CAACE,IAAI;UAChBC,OAAO,EAAEH,KAAK,CAACG,OAAO;UACtBC,KAAK,EAAE,CAACL,QAAQ;QAClB,CAAC;MACH;MACAf,QAAQ,CAACa,UAAU,EAAEjB,2BAA2B,CAACgB,QAAQ,EAAEJ,UAAU,CAAC,CAAC;IACzE;EACF,CAAC,CAAC;AACJ;AACA,SAASS,iBAAiBA,CAACT,UAAU,EAAE;EACrC,IAAIU,IAAI;EACR,IAAIC,OAAO;EACX,IAAI,CAAC,CAAC,CAACE,QAAQ,CAACC,IAAI,CAACd,UAAU,CAAC,KAAK,iBAAiB,EAAE;IACtD,IAAIe,MAAM,GAAGzB,cAAc,CAAC0B,IAAI,CAAChB,UAAU,CAAC;IAC5C,IAAIe,MAAM,EAAE;MACVL,IAAI,GAAGK,MAAM,CAAC,CAAC,CAAC;MAChBJ,OAAO,GAAGI,MAAM,CAAC,CAAC,CAAC;IACrB;EACF;EACA,OAAO;IAAEL,IAAI,EAAEA,IAAI;IAAEC,OAAO,EAAEA;EAAQ,CAAC;AACzC;AACA;AACA;AACA;AACA,SAASf,4BAA4BA,CAACJ,QAAQ,EAAE;EAC9C,OAAOL,+BAA+B,CAACW,MAAM,EAAE,sBAAsB,EAAE;IACrEC,MAAM,EAAE,SAAAA,OAAUkB,CAAC,EAAE;MACnB,IAAIC,MAAM,GAAGD,CAAC,CAACC,MAAM,IAAI,cAAc;MACvC,IAAIN,KAAK,GAAGvB,iBAAiB,CAAC6B,MAAM,CAAC;MACrC1B,QAAQ,CAACoB,KAAK,EAAEM,MAAM,CAAC;IACzB;EACF,CAAC,CAAC;AACJ"}
|
package/esm/transport/batch.js
CHANGED
|
@@ -4,9 +4,9 @@ import { escapeJsonValue, escapeRowField, escapeRowData } from '../helper/serial
|
|
|
4
4
|
import { commonTags, dataMap, commonFields } from '../dataMap';
|
|
5
5
|
import { RumEventType } from '../helper/enums';
|
|
6
6
|
import { computeBytesCount } from '../helper/byteUtils';
|
|
7
|
-
import { isPageExitReason } from '../browser/pageExitObservable';
|
|
7
|
+
import { isPageExitReason } from '../browser/pageExitObservable';
|
|
8
|
+
// https://en.wikipedia.org/wiki/UTF-8
|
|
8
9
|
// eslint-disable-next-line no-control-regex
|
|
9
|
-
|
|
10
10
|
var HAS_MULTI_BYTES_CHARACTERS = /[^\u0000-\u007F]/;
|
|
11
11
|
var CUSTOM_KEYS = 'custom_keys';
|
|
12
12
|
export var processedMessageByDataMap = function processedMessageByDataMap(message) {
|
|
@@ -27,12 +27,9 @@ export var processedMessageByDataMap = function processedMessageByDataMap(messag
|
|
|
27
27
|
var tagsStr = [];
|
|
28
28
|
var tags = extend({}, commonTags, value.tags);
|
|
29
29
|
var filterFileds = ['date', 'type', CUSTOM_KEYS]; // 已经在datamap中定义过的fields和tags
|
|
30
|
-
|
|
31
30
|
each(tags, function (value_path, _key) {
|
|
32
31
|
var _value = findByPath(message, value_path);
|
|
33
|
-
|
|
34
32
|
filterFileds.push(_key);
|
|
35
|
-
|
|
36
33
|
if (_value || isNumber(_value)) {
|
|
37
34
|
rowData.tags[_key] = escapeJsonValue(_value);
|
|
38
35
|
tagsStr.push(escapeRowData(_key) + '=' + escapeRowData(_value));
|
|
@@ -43,117 +40,93 @@ export var processedMessageByDataMap = function processedMessageByDataMap(messag
|
|
|
43
40
|
each(fields, function (_value, _key) {
|
|
44
41
|
if (isArray(_value) && _value.length === 2) {
|
|
45
42
|
var value_path = _value[1];
|
|
46
|
-
|
|
47
43
|
var _valueData = findByPath(message, value_path);
|
|
48
|
-
|
|
49
44
|
filterFileds.push(_key);
|
|
50
|
-
|
|
51
45
|
if (_valueData !== undefined && _valueData !== null) {
|
|
52
46
|
rowData.fields[_key] = _valueData; // 这里不需要转译
|
|
53
|
-
|
|
54
47
|
fieldsStr.push(escapeRowData(_key) + '=' + escapeRowField(_valueData));
|
|
55
48
|
}
|
|
56
49
|
} else if (isString(_value)) {
|
|
57
50
|
var _valueData = findByPath(message, _value);
|
|
58
|
-
|
|
59
51
|
filterFileds.push(_key);
|
|
60
|
-
|
|
61
52
|
if (_valueData !== undefined && _valueData !== null) {
|
|
62
53
|
rowData.fields[_key] = _valueData; // 这里不需要转译
|
|
63
|
-
|
|
64
54
|
fieldsStr.push(escapeRowData(_key) + '=' + escapeRowField(_valueData));
|
|
65
55
|
}
|
|
66
56
|
}
|
|
67
57
|
});
|
|
68
|
-
|
|
69
|
-
if (message.tags && isObject(message.tags) && !isEmptyObject(message.tags)) {
|
|
58
|
+
if (message.context && isObject(message.context) && !isEmptyObject(message.context)) {
|
|
70
59
|
// 自定义tag, 存储成field
|
|
71
60
|
var _tagKeys = [];
|
|
72
|
-
each(message.
|
|
61
|
+
each(message.context, function (_value, _key) {
|
|
73
62
|
// 如果和之前tag重名,则舍弃
|
|
74
63
|
if (filterFileds.indexOf(_key) > -1) return;
|
|
75
64
|
filterFileds.push(_key);
|
|
76
|
-
|
|
77
65
|
if (_value !== undefined && _value !== null) {
|
|
78
66
|
_tagKeys.push(_key);
|
|
79
|
-
|
|
80
67
|
rowData.fields[_key] = _value; // 这里不需要转译
|
|
81
|
-
|
|
82
68
|
fieldsStr.push(escapeRowData(_key) + '=' + escapeRowField(_value));
|
|
83
69
|
}
|
|
84
70
|
});
|
|
85
|
-
|
|
86
71
|
if (_tagKeys.length) {
|
|
87
72
|
rowData.fields[CUSTOM_KEYS] = escapeRowField(_tagKeys);
|
|
88
73
|
fieldsStr.push(escapeRowData(CUSTOM_KEYS) + '=' + escapeRowField(_tagKeys));
|
|
89
74
|
}
|
|
90
75
|
}
|
|
91
|
-
|
|
92
76
|
if (message.type === RumEventType.LOGGER) {
|
|
93
77
|
// 这里处理日志类型数据自定义字段
|
|
94
78
|
each(message, function (value, key) {
|
|
95
79
|
if (filterFileds.indexOf(key) === -1 && value !== undefined && value !== null) {
|
|
96
80
|
rowData.fields[key] = value; // 这里不需要转译
|
|
97
|
-
|
|
98
81
|
fieldsStr.push(escapeRowData(key) + '=' + escapeRowField(value));
|
|
99
82
|
}
|
|
100
83
|
});
|
|
101
84
|
}
|
|
102
|
-
|
|
103
85
|
if (tagsStr.length) {
|
|
104
86
|
rowStr += tagsStr.join(',');
|
|
105
87
|
}
|
|
106
|
-
|
|
107
88
|
if (fieldsStr.length) {
|
|
108
89
|
rowStr += ' ';
|
|
109
90
|
rowStr += fieldsStr.join(',');
|
|
110
91
|
hasFileds = true;
|
|
111
92
|
}
|
|
112
|
-
|
|
113
93
|
rowStr = rowStr + ' ' + message.date;
|
|
114
94
|
rowData.time = toServerDuration(message.date); // 这里不需要转译
|
|
115
95
|
}
|
|
116
96
|
});
|
|
97
|
+
|
|
117
98
|
return {
|
|
118
99
|
rowStr: hasFileds ? rowStr : '',
|
|
119
100
|
rowData: hasFileds ? rowData : undefined
|
|
120
101
|
};
|
|
121
102
|
};
|
|
122
|
-
|
|
123
103
|
var batch = function batch(request, flushController, messageBytesLimit) {
|
|
124
104
|
this.pushOnlyBuffer = [];
|
|
125
105
|
this.upsertBuffer = {};
|
|
126
106
|
this.request = request;
|
|
127
107
|
this.flushController = flushController;
|
|
128
108
|
this.messageBytesLimit = messageBytesLimit;
|
|
129
|
-
|
|
130
109
|
var _this = this;
|
|
131
|
-
|
|
132
110
|
this.flushController.flushObservable.subscribe(function (event) {
|
|
133
111
|
_this.flush(event);
|
|
134
112
|
});
|
|
135
113
|
};
|
|
136
|
-
|
|
137
114
|
batch.prototype.add = function (message) {
|
|
138
115
|
this.addOrUpdate(message);
|
|
139
116
|
};
|
|
140
|
-
|
|
141
117
|
batch.prototype.upsert = function (message, key) {
|
|
142
118
|
this.addOrUpdate(message, key);
|
|
143
119
|
};
|
|
144
|
-
|
|
145
120
|
batch.prototype.flush = function (event) {
|
|
146
121
|
var messages = this.pushOnlyBuffer.concat(values(this.upsertBuffer));
|
|
147
122
|
this.pushOnlyBuffer = [];
|
|
148
123
|
this.upsertBuffer = {};
|
|
149
|
-
|
|
150
124
|
if (messages.length > 0) {
|
|
151
125
|
var payload = {
|
|
152
126
|
data: messages.join('\n'),
|
|
153
127
|
bytesCount: event.bytesCount,
|
|
154
128
|
flushReason: event.reason
|
|
155
129
|
};
|
|
156
|
-
|
|
157
130
|
if (isPageExitReason(event.reason)) {
|
|
158
131
|
this.request.sendOnExit(payload);
|
|
159
132
|
} else {
|
|
@@ -161,25 +134,19 @@ batch.prototype.flush = function (event) {
|
|
|
161
134
|
}
|
|
162
135
|
}
|
|
163
136
|
};
|
|
164
|
-
|
|
165
137
|
batch.prototype.addOrUpdate = function (message, key) {
|
|
166
138
|
var _process = this.process(message);
|
|
167
|
-
|
|
168
139
|
var processedMessage = _process.processedMessage;
|
|
169
140
|
var messageBytesCount = _process.messageBytesCount;
|
|
170
|
-
|
|
171
141
|
if (messageBytesCount >= this.messageBytesLimit) {
|
|
172
142
|
display.warn('Discarded a message whose size was bigger than the maximum allowed size ' + this.messageBytesLimit + 'KB.');
|
|
173
143
|
return;
|
|
174
144
|
}
|
|
175
|
-
|
|
176
145
|
if (this.hasMessageFor(key)) {
|
|
177
146
|
this.remove(key);
|
|
178
147
|
}
|
|
179
|
-
|
|
180
148
|
this.push(processedMessage, messageBytesCount, key);
|
|
181
149
|
};
|
|
182
|
-
|
|
183
150
|
batch.prototype.process = function (message) {
|
|
184
151
|
var processedMessage = processedMessageByDataMap(message).rowStr;
|
|
185
152
|
var messageBytesCount = computeBytesCount(processedMessage);
|
|
@@ -188,31 +155,26 @@ batch.prototype.process = function (message) {
|
|
|
188
155
|
messageBytesCount: messageBytesCount
|
|
189
156
|
};
|
|
190
157
|
};
|
|
191
|
-
|
|
192
158
|
batch.prototype.push = function (processedMessage, messageBytesCount, key) {
|
|
193
159
|
var separatorBytesCount = this.flushController.getMessagesCount() > 0 ? 1 : 0;
|
|
194
160
|
this.flushController.notifyBeforeAddMessage(messageBytesCount + separatorBytesCount);
|
|
195
|
-
|
|
196
161
|
if (key !== undefined) {
|
|
197
162
|
this.upsertBuffer[key] = processedMessage;
|
|
198
163
|
} else {
|
|
199
164
|
this.pushOnlyBuffer.push(processedMessage);
|
|
200
165
|
}
|
|
201
|
-
|
|
202
166
|
this.flushController.notifyAfterAddMessage();
|
|
203
167
|
};
|
|
204
|
-
|
|
205
168
|
batch.prototype.remove = function (key) {
|
|
206
169
|
var removedMessage = this.upsertBuffer[key];
|
|
207
170
|
delete this.upsertBuffer[key];
|
|
208
|
-
var messageBytesCount = computeBytesCount(removedMessage);
|
|
209
|
-
|
|
171
|
+
var messageBytesCount = computeBytesCount(removedMessage);
|
|
172
|
+
// If there are other messages, a '\n' will be added at serialization
|
|
210
173
|
var separatorBytesCount = this.flushController.getMessagesCount() > 1 ? 1 : 0;
|
|
211
174
|
this.flushController.notifyAfterRemoveMessage(messageBytesCount + separatorBytesCount);
|
|
212
175
|
};
|
|
213
|
-
|
|
214
176
|
batch.prototype.hasMessageFor = function (key) {
|
|
215
177
|
return key !== undefined && this.upsertBuffer[key] !== undefined;
|
|
216
178
|
};
|
|
217
|
-
|
|
218
|
-
|
|
179
|
+
export var Batch = batch;
|
|
180
|
+
//# sourceMappingURL=batch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.js","names":["display","values","findByPath","each","isNumber","isArray","extend","isString","toServerDuration","isBoolean","isEmptyObject","isObject","escapeJsonValue","escapeRowField","escapeRowData","commonTags","dataMap","commonFields","RumEventType","computeBytesCount","isPageExitReason","HAS_MULTI_BYTES_CHARACTERS","CUSTOM_KEYS","processedMessageByDataMap","message","type","rowStr","rowData","undefined","tags","fields","hasFileds","value","key","measurement","tagsStr","filterFileds","value_path","_key","_value","push","fieldsStr","length","_valueData","context","_tagKeys","indexOf","LOGGER","join","date","time","batch","request","flushController","messageBytesLimit","pushOnlyBuffer","upsertBuffer","_this","flushObservable","subscribe","event","flush","prototype","add","addOrUpdate","upsert","messages","concat","payload","data","bytesCount","flushReason","reason","sendOnExit","send","_process","process","processedMessage","messageBytesCount","warn","hasMessageFor","remove","separatorBytesCount","getMessagesCount","notifyBeforeAddMessage","notifyAfterAddMessage","removedMessage","notifyAfterRemoveMessage","Batch"],"sources":["../../src/transport/batch.js"],"sourcesContent":["import { display } from '../helper/display'\nimport {\n values,\n findByPath,\n each,\n isNumber,\n isArray,\n extend,\n isString,\n toServerDuration,\n isBoolean,\n isEmptyObject,\n isObject\n} from '../helper/tools'\nimport {\n escapeJsonValue,\n escapeRowField,\n escapeRowData\n} from '../helper/serialisation/rowData'\nimport { commonTags, dataMap, commonFields } from '../dataMap'\nimport { RumEventType } from '../helper/enums'\nimport { computeBytesCount } from '../helper/byteUtils'\nimport { isPageExitReason } from '../browser/pageExitObservable'\n// https://en.wikipedia.org/wiki/UTF-8\n// eslint-disable-next-line no-control-regex\nvar HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/\nvar CUSTOM_KEYS = 'custom_keys'\nexport var processedMessageByDataMap = function (message) {\n if (!message || !message.type)\n return {\n rowStr: '',\n rowData: undefined\n }\n\n var rowData = { tags: {}, fields: {} }\n var hasFileds = false\n var rowStr = ''\n each(dataMap, function (value, key) {\n if (value.type === message.type) {\n rowStr += key + ','\n rowData.measurement = key\n var tagsStr = []\n var tags = extend({}, commonTags, value.tags)\n var filterFileds = ['date', 'type', CUSTOM_KEYS] // 已经在datamap中定义过的fields和tags\n each(tags, function (value_path, _key) {\n var _value = findByPath(message, value_path)\n filterFileds.push(_key)\n if (_value || isNumber(_value)) {\n rowData.tags[_key] = escapeJsonValue(_value)\n tagsStr.push(escapeRowData(_key) + '=' + escapeRowData(_value))\n }\n })\n\n var fieldsStr = []\n var fields = extend({}, commonFields, value.fields)\n each(fields, function (_value, _key) {\n if (isArray(_value) && _value.length === 2) {\n var value_path = _value[1]\n var _valueData = findByPath(message, value_path)\n filterFileds.push(_key)\n if (_valueData !== undefined && _valueData !== null) {\n rowData.fields[_key] = _valueData // 这里不需要转译\n fieldsStr.push(\n escapeRowData(_key) + '=' + escapeRowField(_valueData)\n )\n }\n } else if (isString(_value)) {\n var _valueData = findByPath(message, _value)\n filterFileds.push(_key)\n if (_valueData !== undefined && _valueData !== null) {\n rowData.fields[_key] = _valueData // 这里不需要转译\n fieldsStr.push(\n escapeRowData(_key) + '=' + escapeRowField(_valueData)\n )\n }\n }\n })\n if (\n message.context &&\n isObject(message.context) &&\n !isEmptyObject(message.context)\n ) {\n // 自定义tag, 存储成field\n var _tagKeys = []\n each(message.context, function (_value, _key) {\n // 如果和之前tag重名,则舍弃\n if (filterFileds.indexOf(_key) > -1) return\n filterFileds.push(_key)\n if (_value !== undefined && _value !== null) {\n _tagKeys.push(_key)\n rowData.fields[_key] = _value // 这里不需要转译\n fieldsStr.push(escapeRowData(_key) + '=' + escapeRowField(_value))\n }\n })\n if (_tagKeys.length) {\n rowData.fields[CUSTOM_KEYS] = escapeRowField(_tagKeys)\n fieldsStr.push(\n escapeRowData(CUSTOM_KEYS) + '=' + escapeRowField(_tagKeys)\n )\n }\n }\n if (message.type === RumEventType.LOGGER) {\n // 这里处理日志类型数据自定义字段\n each(message, function (value, key) {\n if (\n filterFileds.indexOf(key) === -1 &&\n value !== undefined &&\n value !== null\n ) {\n rowData.fields[key] = value // 这里不需要转译\n fieldsStr.push(escapeRowData(key) + '=' + escapeRowField(value))\n }\n })\n }\n if (tagsStr.length) {\n rowStr += tagsStr.join(',')\n }\n if (fieldsStr.length) {\n rowStr += ' '\n rowStr += fieldsStr.join(',')\n hasFileds = true\n }\n rowStr = rowStr + ' ' + message.date\n rowData.time = toServerDuration(message.date) // 这里不需要转译\n }\n })\n return {\n rowStr: hasFileds ? rowStr : '',\n rowData: hasFileds ? rowData : undefined\n }\n}\nvar batch = function (request, flushController, messageBytesLimit) {\n this.pushOnlyBuffer = []\n this.upsertBuffer = {}\n this.request = request\n this.flushController = flushController\n this.messageBytesLimit = messageBytesLimit\n var _this = this\n this.flushController.flushObservable.subscribe(function (event) {\n _this.flush(event)\n })\n}\nbatch.prototype.add = function (message) {\n this.addOrUpdate(message)\n}\nbatch.prototype.upsert = function (message, key) {\n this.addOrUpdate(message, key)\n}\nbatch.prototype.flush = function (event) {\n var messages = this.pushOnlyBuffer.concat(values(this.upsertBuffer))\n this.pushOnlyBuffer = []\n this.upsertBuffer = {}\n if (messages.length > 0) {\n var payload = {\n data: messages.join('\\n'),\n bytesCount: event.bytesCount,\n flushReason: event.reason\n }\n if (isPageExitReason(event.reason)) {\n this.request.sendOnExit(payload)\n } else {\n this.request.send(payload)\n }\n }\n}\n\nbatch.prototype.addOrUpdate = function (message, key) {\n var _process = this.process(message)\n var processedMessage = _process.processedMessage\n var messageBytesCount = _process.messageBytesCount\n if (messageBytesCount >= this.messageBytesLimit) {\n display.warn(\n 'Discarded a message whose size was bigger than the maximum allowed size ' +\n this.messageBytesLimit +\n 'KB.'\n )\n return\n }\n if (this.hasMessageFor(key)) {\n this.remove(key)\n }\n this.push(processedMessage, messageBytesCount, key)\n}\nbatch.prototype.process = function (message) {\n var processedMessage = processedMessageByDataMap(message).rowStr\n var messageBytesCount = computeBytesCount(processedMessage)\n return {\n processedMessage: processedMessage,\n messageBytesCount: messageBytesCount\n }\n}\n\nbatch.prototype.push = function (processedMessage, messageBytesCount, key) {\n var separatorBytesCount = this.flushController.getMessagesCount() > 0 ? 1 : 0\n this.flushController.notifyBeforeAddMessage(\n messageBytesCount + separatorBytesCount\n )\n if (key !== undefined) {\n this.upsertBuffer[key] = processedMessage\n } else {\n this.pushOnlyBuffer.push(processedMessage)\n }\n this.flushController.notifyAfterAddMessage()\n}\n\nbatch.prototype.remove = function (key) {\n var removedMessage = this.upsertBuffer[key]\n delete this.upsertBuffer[key]\n var messageBytesCount = computeBytesCount(removedMessage)\n // If there are other messages, a '\\n' will be added at serialization\n var separatorBytesCount = this.flushController.getMessagesCount() > 1 ? 1 : 0\n this.flushController.notifyAfterRemoveMessage(\n messageBytesCount + separatorBytesCount\n )\n}\n\nbatch.prototype.hasMessageFor = function (key) {\n return key !== undefined && this.upsertBuffer[key] !== undefined\n}\nexport var Batch = batch\n"],"mappings":"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"}
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
import { getGlobalObject } from '../init';
|
|
2
|
-
|
|
3
2
|
function getEventBridgeGlobal() {
|
|
4
3
|
return getGlobalObject().FTWebViewJavascriptBridge;
|
|
5
4
|
}
|
|
6
|
-
|
|
7
5
|
export function getEventBridge() {
|
|
8
6
|
var eventBridgeGlobal = getEventBridgeGlobal();
|
|
9
|
-
|
|
10
7
|
if (!eventBridgeGlobal) {
|
|
11
8
|
return;
|
|
12
9
|
}
|
|
13
|
-
|
|
14
10
|
return {
|
|
15
11
|
send: function send(eventType, event) {
|
|
16
12
|
eventBridgeGlobal.sendEvent(JSON.stringify({
|
|
@@ -23,4 +19,5 @@ export function getEventBridge() {
|
|
|
23
19
|
export function canUseEventBridge() {
|
|
24
20
|
var bridge = getEventBridge();
|
|
25
21
|
return !!bridge;
|
|
26
|
-
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=eventBridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventBridge.js","names":["getGlobalObject","getEventBridgeGlobal","FTWebViewJavascriptBridge","getEventBridge","eventBridgeGlobal","send","eventType","event","sendEvent","JSON","stringify","name","data","canUseEventBridge","bridge"],"sources":["../../src/transport/eventBridge.js"],"sourcesContent":["import { getGlobalObject } from '../init'\n\nfunction getEventBridgeGlobal() {\n return getGlobalObject().FTWebViewJavascriptBridge\n}\nexport function getEventBridge() {\n var eventBridgeGlobal = getEventBridgeGlobal()\n\n if (!eventBridgeGlobal) {\n return\n }\n\n return {\n send(eventType, event) {\n eventBridgeGlobal.sendEvent(\n JSON.stringify({ name: eventType, data: event })\n )\n }\n }\n}\nexport function canUseEventBridge() {\n var bridge = getEventBridge()\n return !!bridge\n}\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,SAAS;AAEzC,SAASC,oBAAoBA,CAAA,EAAG;EAC9B,OAAOD,eAAe,CAAC,CAAC,CAACE,yBAAyB;AACpD;AACA,OAAO,SAASC,cAAcA,CAAA,EAAG;EAC/B,IAAIC,iBAAiB,GAAGH,oBAAoB,CAAC,CAAC;EAE9C,IAAI,CAACG,iBAAiB,EAAE;IACtB;EACF;EAEA,OAAO;IACLC,IAAI,WAAAA,KAACC,SAAS,EAAEC,KAAK,EAAE;MACrBH,iBAAiB,CAACI,SAAS,CACzBC,IAAI,CAACC,SAAS,CAAC;QAAEC,IAAI,EAAEL,SAAS;QAAEM,IAAI,EAAEL;MAAM,CAAC,CACjD,CAAC;IACH;EACF,CAAC;AACH;AACA,OAAO,SAASM,iBAAiBA,CAAA,EAAG;EAClC,IAAIC,MAAM,GAAGX,cAAc,CAAC,CAAC;EAC7B,OAAO,CAAC,CAACW,MAAM;AACjB"}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import { Observable } from '../helper/observable';
|
|
2
|
-
import { clearTimeout, setTimeout } from '../helper/timer';
|
|
2
|
+
import { clearTimeout, setTimeout } from '../helper/timer';
|
|
3
|
+
|
|
4
|
+
// type FlushReason = PageExitReason | 'duration_limit' | 'bytes_limit' | 'messages_limit' | 'session_expire'
|
|
3
5
|
|
|
4
6
|
/**
|
|
5
7
|
* Returns a "flush controller", responsible of notifying when flushing a pool of pending data needs
|
|
6
8
|
* to happen. The implementation is designed to support both synchronous and asynchronous usages,
|
|
7
9
|
* but relies on invariants described in each method documentation to keep a coherent state.
|
|
8
10
|
*/
|
|
9
|
-
|
|
10
11
|
export function createFlushController(_ref) {
|
|
11
12
|
var messagesLimit = _ref.messagesLimit,
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
bytesLimit = _ref.bytesLimit,
|
|
14
|
+
durationLimit = _ref.durationLimit,
|
|
15
|
+
pageExitObservable = _ref.pageExitObservable,
|
|
16
|
+
sessionExpireObservable = _ref.sessionExpireObservable;
|
|
16
17
|
var flushObservable = new Observable();
|
|
17
18
|
pageExitObservable.subscribe(function (event) {
|
|
18
19
|
return flush(event.reason);
|
|
@@ -22,12 +23,10 @@ export function createFlushController(_ref) {
|
|
|
22
23
|
});
|
|
23
24
|
var currentBytesCount = 0;
|
|
24
25
|
var currentMessagesCount = 0;
|
|
25
|
-
|
|
26
26
|
function flush(flushReason) {
|
|
27
27
|
if (currentMessagesCount === 0) {
|
|
28
28
|
return;
|
|
29
29
|
}
|
|
30
|
-
|
|
31
30
|
var messagesCount = currentMessagesCount;
|
|
32
31
|
var bytesCount = currentBytesCount;
|
|
33
32
|
currentMessagesCount = 0;
|
|
@@ -39,9 +38,7 @@ export function createFlushController(_ref) {
|
|
|
39
38
|
bytesCount: bytesCount
|
|
40
39
|
});
|
|
41
40
|
}
|
|
42
|
-
|
|
43
41
|
var durationLimitTimeoutId;
|
|
44
|
-
|
|
45
42
|
function scheduleDurationLimitTimeout() {
|
|
46
43
|
if (durationLimitTimeoutId === undefined) {
|
|
47
44
|
durationLimitTimeoutId = setTimeout(function () {
|
|
@@ -49,18 +46,15 @@ export function createFlushController(_ref) {
|
|
|
49
46
|
}, durationLimit);
|
|
50
47
|
}
|
|
51
48
|
}
|
|
52
|
-
|
|
53
49
|
function cancelDurationLimitTimeout() {
|
|
54
50
|
clearTimeout(durationLimitTimeoutId);
|
|
55
51
|
durationLimitTimeoutId = undefined;
|
|
56
52
|
}
|
|
57
|
-
|
|
58
53
|
return {
|
|
59
54
|
flushObservable: flushObservable,
|
|
60
55
|
getMessagesCount: function getMessagesCount() {
|
|
61
56
|
return currentMessagesCount;
|
|
62
57
|
},
|
|
63
|
-
|
|
64
58
|
/**
|
|
65
59
|
* Notifies that a message will be added to a pool of pending messages waiting to be flushed.
|
|
66
60
|
*
|
|
@@ -70,16 +64,14 @@ export function createFlushController(_ref) {
|
|
|
70
64
|
notifyBeforeAddMessage: function notifyBeforeAddMessage(messageBytesCount) {
|
|
71
65
|
if (currentBytesCount + messageBytesCount >= bytesLimit) {
|
|
72
66
|
flush('bytes_limit');
|
|
73
|
-
}
|
|
67
|
+
}
|
|
68
|
+
// Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no
|
|
74
69
|
// message was added yet and `notifyAfterAddMessage` is called asynchronously, we still want
|
|
75
70
|
// to notify when a flush is needed (for example on page exit).
|
|
76
|
-
|
|
77
|
-
|
|
78
71
|
currentMessagesCount += 1;
|
|
79
72
|
currentBytesCount += messageBytesCount;
|
|
80
73
|
scheduleDurationLimitTimeout();
|
|
81
74
|
},
|
|
82
|
-
|
|
83
75
|
/**
|
|
84
76
|
* Notifies that a message *was* added to a pool of pending messages waiting to be flushed.
|
|
85
77
|
*
|
|
@@ -93,7 +85,6 @@ export function createFlushController(_ref) {
|
|
|
93
85
|
flush('bytes_limit');
|
|
94
86
|
}
|
|
95
87
|
},
|
|
96
|
-
|
|
97
88
|
/**
|
|
98
89
|
* Notifies that a message was removed from a pool of pending messages waiting to be flushed.
|
|
99
90
|
*
|
|
@@ -103,10 +94,10 @@ export function createFlushController(_ref) {
|
|
|
103
94
|
notifyAfterRemoveMessage: function notifyAfterRemoveMessage(messageBytesCount) {
|
|
104
95
|
currentBytesCount -= messageBytesCount;
|
|
105
96
|
currentMessagesCount -= 1;
|
|
106
|
-
|
|
107
97
|
if (currentMessagesCount === 0) {
|
|
108
98
|
cancelDurationLimitTimeout();
|
|
109
99
|
}
|
|
110
100
|
}
|
|
111
101
|
};
|
|
112
|
-
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=flushController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flushController.js","names":["Observable","clearTimeout","setTimeout","createFlushController","_ref","messagesLimit","bytesLimit","durationLimit","pageExitObservable","sessionExpireObservable","flushObservable","subscribe","event","flush","reason","currentBytesCount","currentMessagesCount","flushReason","messagesCount","bytesCount","cancelDurationLimitTimeout","notify","durationLimitTimeoutId","scheduleDurationLimitTimeout","undefined","getMessagesCount","notifyBeforeAddMessage","messageBytesCount","notifyAfterAddMessage","notifyAfterRemoveMessage"],"sources":["../../src/transport/flushController.js"],"sourcesContent":["import { Observable } from '../helper/observable'\nimport { clearTimeout, setTimeout } from '../helper/timer'\n\n// type FlushReason = PageExitReason | 'duration_limit' | 'bytes_limit' | 'messages_limit' | 'session_expire'\n\n/**\n * Returns a \"flush controller\", responsible of notifying when flushing a pool of pending data needs\n * to happen. The implementation is designed to support both synchronous and asynchronous usages,\n * but relies on invariants described in each method documentation to keep a coherent state.\n */\nexport function createFlushController({\n messagesLimit,\n bytesLimit,\n durationLimit,\n pageExitObservable,\n sessionExpireObservable\n}) {\n var flushObservable = new Observable()\n\n pageExitObservable.subscribe(function (event) {\n return flush(event.reason)\n })\n sessionExpireObservable.subscribe(function () {\n return flush('session_expire')\n })\n\n var currentBytesCount = 0\n var currentMessagesCount = 0\n\n function flush(flushReason) {\n if (currentMessagesCount === 0) {\n return\n }\n\n var messagesCount = currentMessagesCount\n var bytesCount = currentBytesCount\n\n currentMessagesCount = 0\n currentBytesCount = 0\n cancelDurationLimitTimeout()\n\n flushObservable.notify({\n reason: flushReason,\n messagesCount: messagesCount,\n bytesCount: bytesCount\n })\n }\n\n var durationLimitTimeoutId\n function scheduleDurationLimitTimeout() {\n if (durationLimitTimeoutId === undefined) {\n durationLimitTimeoutId = setTimeout(function () {\n flush('duration_limit')\n }, durationLimit)\n }\n }\n\n function cancelDurationLimitTimeout() {\n clearTimeout(durationLimitTimeoutId)\n durationLimitTimeoutId = undefined\n }\n\n return {\n flushObservable: flushObservable,\n getMessagesCount: function () {\n return currentMessagesCount\n },\n\n /**\n * Notifies that a message will be added to a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right before adding the message, so no flush\n * event can happen after `notifyBeforeAddMessage` and before adding the message.\n */\n notifyBeforeAddMessage: function (messageBytesCount) {\n if (currentBytesCount + messageBytesCount >= bytesLimit) {\n flush('bytes_limit')\n }\n // Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no\n // message was added yet and `notifyAfterAddMessage` is called asynchronously, we still want\n // to notify when a flush is needed (for example on page exit).\n currentMessagesCount += 1\n currentBytesCount += messageBytesCount\n scheduleDurationLimitTimeout()\n },\n\n /**\n * Notifies that a message *was* added to a pool of pending messages waiting to be flushed.\n *\n * This function can be called asynchronously after the message was added, but in this case it\n * should not be called if a flush event occurred in between.\n */\n notifyAfterAddMessage: function () {\n if (currentMessagesCount >= messagesLimit) {\n flush('messages_limit')\n } else if (currentBytesCount >= bytesLimit) {\n flush('bytes_limit')\n }\n },\n\n /**\n * Notifies that a message was removed from a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right after removing the message, so no flush\n * event can happen after removing the message and before `notifyAfterRemoveMessage`.\n */\n notifyAfterRemoveMessage: function (messageBytesCount) {\n currentBytesCount -= messageBytesCount\n currentMessagesCount -= 1\n if (currentMessagesCount === 0) {\n cancelDurationLimitTimeout()\n }\n }\n }\n}\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,sBAAsB;AACjD,SAASC,YAAY,EAAEC,UAAU,QAAQ,iBAAiB;;AAE1D;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CAAAC,IAAA,EAMlC;EAAA,IALDC,aAAa,GAAAD,IAAA,CAAbC,aAAa;IACbC,UAAU,GAAAF,IAAA,CAAVE,UAAU;IACVC,aAAa,GAAAH,IAAA,CAAbG,aAAa;IACbC,kBAAkB,GAAAJ,IAAA,CAAlBI,kBAAkB;IAClBC,uBAAuB,GAAAL,IAAA,CAAvBK,uBAAuB;EAEvB,IAAIC,eAAe,GAAG,IAAIV,UAAU,CAAC,CAAC;EAEtCQ,kBAAkB,CAACG,SAAS,CAAC,UAAUC,KAAK,EAAE;IAC5C,OAAOC,KAAK,CAACD,KAAK,CAACE,MAAM,CAAC;EAC5B,CAAC,CAAC;EACFL,uBAAuB,CAACE,SAAS,CAAC,YAAY;IAC5C,OAAOE,KAAK,CAAC,gBAAgB,CAAC;EAChC,CAAC,CAAC;EAEF,IAAIE,iBAAiB,GAAG,CAAC;EACzB,IAAIC,oBAAoB,GAAG,CAAC;EAE5B,SAASH,KAAKA,CAACI,WAAW,EAAE;IAC1B,IAAID,oBAAoB,KAAK,CAAC,EAAE;MAC9B;IACF;IAEA,IAAIE,aAAa,GAAGF,oBAAoB;IACxC,IAAIG,UAAU,GAAGJ,iBAAiB;IAElCC,oBAAoB,GAAG,CAAC;IACxBD,iBAAiB,GAAG,CAAC;IACrBK,0BAA0B,CAAC,CAAC;IAE5BV,eAAe,CAACW,MAAM,CAAC;MACrBP,MAAM,EAAEG,WAAW;MACnBC,aAAa,EAAEA,aAAa;MAC5BC,UAAU,EAAEA;IACd,CAAC,CAAC;EACJ;EAEA,IAAIG,sBAAsB;EAC1B,SAASC,4BAA4BA,CAAA,EAAG;IACtC,IAAID,sBAAsB,KAAKE,SAAS,EAAE;MACxCF,sBAAsB,GAAGpB,UAAU,CAAC,YAAY;QAC9CW,KAAK,CAAC,gBAAgB,CAAC;MACzB,CAAC,EAAEN,aAAa,CAAC;IACnB;EACF;EAEA,SAASa,0BAA0BA,CAAA,EAAG;IACpCnB,YAAY,CAACqB,sBAAsB,CAAC;IACpCA,sBAAsB,GAAGE,SAAS;EACpC;EAEA,OAAO;IACLd,eAAe,EAAEA,eAAe;IAChCe,gBAAgB,EAAE,SAAAA,iBAAA,EAAY;MAC5B,OAAOT,oBAAoB;IAC7B,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACIU,sBAAsB,EAAE,SAAAA,uBAAUC,iBAAiB,EAAE;MACnD,IAAIZ,iBAAiB,GAAGY,iBAAiB,IAAIrB,UAAU,EAAE;QACvDO,KAAK,CAAC,aAAa,CAAC;MACtB;MACA;MACA;MACA;MACAG,oBAAoB,IAAI,CAAC;MACzBD,iBAAiB,IAAIY,iBAAiB;MACtCJ,4BAA4B,CAAC,CAAC;IAChC,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACIK,qBAAqB,EAAE,SAAAA,sBAAA,EAAY;MACjC,IAAIZ,oBAAoB,IAAIX,aAAa,EAAE;QACzCQ,KAAK,CAAC,gBAAgB,CAAC;MACzB,CAAC,MAAM,IAAIE,iBAAiB,IAAIT,UAAU,EAAE;QAC1CO,KAAK,CAAC,aAAa,CAAC;MACtB;IACF,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACIgB,wBAAwB,EAAE,SAAAA,yBAAUF,iBAAiB,EAAE;MACrDZ,iBAAiB,IAAIY,iBAAiB;MACtCX,oBAAoB,IAAI,CAAC;MACzB,IAAIA,oBAAoB,KAAK,CAAC,EAAE;QAC9BI,0BAA0B,CAAC,CAAC;MAC9B;IACF;EACF,CAAC;AACH"}
|