@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
package/cjs/transport/batch.js
CHANGED
|
@@ -4,26 +4,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.processedMessageByDataMap = exports.Batch = void 0;
|
|
7
|
-
|
|
8
7
|
var _display = require("../helper/display");
|
|
9
|
-
|
|
10
8
|
var _tools = require("../helper/tools");
|
|
11
|
-
|
|
12
9
|
var _rowData = require("../helper/serialisation/rowData");
|
|
13
|
-
|
|
14
10
|
var _dataMap = require("../dataMap");
|
|
15
|
-
|
|
16
11
|
var _enums = require("../helper/enums");
|
|
17
|
-
|
|
18
12
|
var _byteUtils = require("../helper/byteUtils");
|
|
19
|
-
|
|
20
13
|
var _pageExitObservable = require("../browser/pageExitObservable");
|
|
21
|
-
|
|
22
14
|
// https://en.wikipedia.org/wiki/UTF-8
|
|
23
15
|
// eslint-disable-next-line no-control-regex
|
|
24
16
|
var HAS_MULTI_BYTES_CHARACTERS = /[^\u0000-\u007F]/;
|
|
25
17
|
var CUSTOM_KEYS = 'custom_keys';
|
|
26
|
-
|
|
27
18
|
var processedMessageByDataMap = function processedMessageByDataMap(message) {
|
|
28
19
|
if (!message || !message.type) return {
|
|
29
20
|
rowStr: '',
|
|
@@ -42,12 +33,9 @@ var processedMessageByDataMap = function processedMessageByDataMap(message) {
|
|
|
42
33
|
var tagsStr = [];
|
|
43
34
|
var tags = (0, _tools.extend)({}, _dataMap.commonTags, value.tags);
|
|
44
35
|
var filterFileds = ['date', 'type', CUSTOM_KEYS]; // 已经在datamap中定义过的fields和tags
|
|
45
|
-
|
|
46
36
|
(0, _tools.each)(tags, function (value_path, _key) {
|
|
47
37
|
var _value = (0, _tools.findByPath)(message, value_path);
|
|
48
|
-
|
|
49
38
|
filterFileds.push(_key);
|
|
50
|
-
|
|
51
39
|
if (_value || (0, _tools.isNumber)(_value)) {
|
|
52
40
|
rowData.tags[_key] = (0, _rowData.escapeJsonValue)(_value);
|
|
53
41
|
tagsStr.push((0, _rowData.escapeRowData)(_key) + '=' + (0, _rowData.escapeRowData)(_value));
|
|
@@ -58,119 +46,94 @@ var processedMessageByDataMap = function processedMessageByDataMap(message) {
|
|
|
58
46
|
(0, _tools.each)(fields, function (_value, _key) {
|
|
59
47
|
if ((0, _tools.isArray)(_value) && _value.length === 2) {
|
|
60
48
|
var value_path = _value[1];
|
|
61
|
-
|
|
62
49
|
var _valueData = (0, _tools.findByPath)(message, value_path);
|
|
63
|
-
|
|
64
50
|
filterFileds.push(_key);
|
|
65
|
-
|
|
66
51
|
if (_valueData !== undefined && _valueData !== null) {
|
|
67
52
|
rowData.fields[_key] = _valueData; // 这里不需要转译
|
|
68
|
-
|
|
69
53
|
fieldsStr.push((0, _rowData.escapeRowData)(_key) + '=' + (0, _rowData.escapeRowField)(_valueData));
|
|
70
54
|
}
|
|
71
55
|
} else if ((0, _tools.isString)(_value)) {
|
|
72
56
|
var _valueData = (0, _tools.findByPath)(message, _value);
|
|
73
|
-
|
|
74
57
|
filterFileds.push(_key);
|
|
75
|
-
|
|
76
58
|
if (_valueData !== undefined && _valueData !== null) {
|
|
77
59
|
rowData.fields[_key] = _valueData; // 这里不需要转译
|
|
78
|
-
|
|
79
60
|
fieldsStr.push((0, _rowData.escapeRowData)(_key) + '=' + (0, _rowData.escapeRowField)(_valueData));
|
|
80
61
|
}
|
|
81
62
|
}
|
|
82
63
|
});
|
|
83
|
-
|
|
84
|
-
if (message.tags && (0, _tools.isObject)(message.tags) && !(0, _tools.isEmptyObject)(message.tags)) {
|
|
64
|
+
if (message.context && (0, _tools.isObject)(message.context) && !(0, _tools.isEmptyObject)(message.context)) {
|
|
85
65
|
// 自定义tag, 存储成field
|
|
86
66
|
var _tagKeys = [];
|
|
87
|
-
(0, _tools.each)(message.
|
|
67
|
+
(0, _tools.each)(message.context, function (_value, _key) {
|
|
88
68
|
// 如果和之前tag重名,则舍弃
|
|
89
69
|
if (filterFileds.indexOf(_key) > -1) return;
|
|
90
70
|
filterFileds.push(_key);
|
|
91
|
-
|
|
92
71
|
if (_value !== undefined && _value !== null) {
|
|
93
72
|
_tagKeys.push(_key);
|
|
94
|
-
|
|
95
73
|
rowData.fields[_key] = _value; // 这里不需要转译
|
|
96
|
-
|
|
97
74
|
fieldsStr.push((0, _rowData.escapeRowData)(_key) + '=' + (0, _rowData.escapeRowField)(_value));
|
|
98
75
|
}
|
|
99
76
|
});
|
|
100
|
-
|
|
101
77
|
if (_tagKeys.length) {
|
|
102
78
|
rowData.fields[CUSTOM_KEYS] = (0, _rowData.escapeRowField)(_tagKeys);
|
|
103
79
|
fieldsStr.push((0, _rowData.escapeRowData)(CUSTOM_KEYS) + '=' + (0, _rowData.escapeRowField)(_tagKeys));
|
|
104
80
|
}
|
|
105
81
|
}
|
|
106
|
-
|
|
107
82
|
if (message.type === _enums.RumEventType.LOGGER) {
|
|
108
83
|
// 这里处理日志类型数据自定义字段
|
|
109
84
|
(0, _tools.each)(message, function (value, key) {
|
|
110
85
|
if (filterFileds.indexOf(key) === -1 && value !== undefined && value !== null) {
|
|
111
86
|
rowData.fields[key] = value; // 这里不需要转译
|
|
112
|
-
|
|
113
87
|
fieldsStr.push((0, _rowData.escapeRowData)(key) + '=' + (0, _rowData.escapeRowField)(value));
|
|
114
88
|
}
|
|
115
89
|
});
|
|
116
90
|
}
|
|
117
|
-
|
|
118
91
|
if (tagsStr.length) {
|
|
119
92
|
rowStr += tagsStr.join(',');
|
|
120
93
|
}
|
|
121
|
-
|
|
122
94
|
if (fieldsStr.length) {
|
|
123
95
|
rowStr += ' ';
|
|
124
96
|
rowStr += fieldsStr.join(',');
|
|
125
97
|
hasFileds = true;
|
|
126
98
|
}
|
|
127
|
-
|
|
128
99
|
rowStr = rowStr + ' ' + message.date;
|
|
129
100
|
rowData.time = (0, _tools.toServerDuration)(message.date); // 这里不需要转译
|
|
130
101
|
}
|
|
131
102
|
});
|
|
103
|
+
|
|
132
104
|
return {
|
|
133
105
|
rowStr: hasFileds ? rowStr : '',
|
|
134
106
|
rowData: hasFileds ? rowData : undefined
|
|
135
107
|
};
|
|
136
108
|
};
|
|
137
|
-
|
|
138
109
|
exports.processedMessageByDataMap = processedMessageByDataMap;
|
|
139
|
-
|
|
140
110
|
var batch = function batch(request, flushController, messageBytesLimit) {
|
|
141
111
|
this.pushOnlyBuffer = [];
|
|
142
112
|
this.upsertBuffer = {};
|
|
143
113
|
this.request = request;
|
|
144
114
|
this.flushController = flushController;
|
|
145
115
|
this.messageBytesLimit = messageBytesLimit;
|
|
146
|
-
|
|
147
116
|
var _this = this;
|
|
148
|
-
|
|
149
117
|
this.flushController.flushObservable.subscribe(function (event) {
|
|
150
118
|
_this.flush(event);
|
|
151
119
|
});
|
|
152
120
|
};
|
|
153
|
-
|
|
154
121
|
batch.prototype.add = function (message) {
|
|
155
122
|
this.addOrUpdate(message);
|
|
156
123
|
};
|
|
157
|
-
|
|
158
124
|
batch.prototype.upsert = function (message, key) {
|
|
159
125
|
this.addOrUpdate(message, key);
|
|
160
126
|
};
|
|
161
|
-
|
|
162
127
|
batch.prototype.flush = function (event) {
|
|
163
128
|
var messages = this.pushOnlyBuffer.concat((0, _tools.values)(this.upsertBuffer));
|
|
164
129
|
this.pushOnlyBuffer = [];
|
|
165
130
|
this.upsertBuffer = {};
|
|
166
|
-
|
|
167
131
|
if (messages.length > 0) {
|
|
168
132
|
var payload = {
|
|
169
133
|
data: messages.join('\n'),
|
|
170
134
|
bytesCount: event.bytesCount,
|
|
171
135
|
flushReason: event.reason
|
|
172
136
|
};
|
|
173
|
-
|
|
174
137
|
if ((0, _pageExitObservable.isPageExitReason)(event.reason)) {
|
|
175
138
|
this.request.sendOnExit(payload);
|
|
176
139
|
} else {
|
|
@@ -178,26 +141,19 @@ batch.prototype.flush = function (event) {
|
|
|
178
141
|
}
|
|
179
142
|
}
|
|
180
143
|
};
|
|
181
|
-
|
|
182
144
|
batch.prototype.addOrUpdate = function (message, key) {
|
|
183
145
|
var _process = this.process(message);
|
|
184
|
-
|
|
185
146
|
var processedMessage = _process.processedMessage;
|
|
186
147
|
var messageBytesCount = _process.messageBytesCount;
|
|
187
|
-
|
|
188
148
|
if (messageBytesCount >= this.messageBytesLimit) {
|
|
189
149
|
_display.display.warn('Discarded a message whose size was bigger than the maximum allowed size ' + this.messageBytesLimit + 'KB.');
|
|
190
|
-
|
|
191
150
|
return;
|
|
192
151
|
}
|
|
193
|
-
|
|
194
152
|
if (this.hasMessageFor(key)) {
|
|
195
153
|
this.remove(key);
|
|
196
154
|
}
|
|
197
|
-
|
|
198
155
|
this.push(processedMessage, messageBytesCount, key);
|
|
199
156
|
};
|
|
200
|
-
|
|
201
157
|
batch.prototype.process = function (message) {
|
|
202
158
|
var processedMessage = processedMessageByDataMap(message).rowStr;
|
|
203
159
|
var messageBytesCount = (0, _byteUtils.computeBytesCount)(processedMessage);
|
|
@@ -206,32 +162,27 @@ batch.prototype.process = function (message) {
|
|
|
206
162
|
messageBytesCount: messageBytesCount
|
|
207
163
|
};
|
|
208
164
|
};
|
|
209
|
-
|
|
210
165
|
batch.prototype.push = function (processedMessage, messageBytesCount, key) {
|
|
211
166
|
var separatorBytesCount = this.flushController.getMessagesCount() > 0 ? 1 : 0;
|
|
212
167
|
this.flushController.notifyBeforeAddMessage(messageBytesCount + separatorBytesCount);
|
|
213
|
-
|
|
214
168
|
if (key !== undefined) {
|
|
215
169
|
this.upsertBuffer[key] = processedMessage;
|
|
216
170
|
} else {
|
|
217
171
|
this.pushOnlyBuffer.push(processedMessage);
|
|
218
172
|
}
|
|
219
|
-
|
|
220
173
|
this.flushController.notifyAfterAddMessage();
|
|
221
174
|
};
|
|
222
|
-
|
|
223
175
|
batch.prototype.remove = function (key) {
|
|
224
176
|
var removedMessage = this.upsertBuffer[key];
|
|
225
177
|
delete this.upsertBuffer[key];
|
|
226
|
-
var messageBytesCount = (0, _byteUtils.computeBytesCount)(removedMessage);
|
|
227
|
-
|
|
178
|
+
var messageBytesCount = (0, _byteUtils.computeBytesCount)(removedMessage);
|
|
179
|
+
// If there are other messages, a '\n' will be added at serialization
|
|
228
180
|
var separatorBytesCount = this.flushController.getMessagesCount() > 1 ? 1 : 0;
|
|
229
181
|
this.flushController.notifyAfterRemoveMessage(messageBytesCount + separatorBytesCount);
|
|
230
182
|
};
|
|
231
|
-
|
|
232
183
|
batch.prototype.hasMessageFor = function (key) {
|
|
233
184
|
return key !== undefined && this.upsertBuffer[key] !== undefined;
|
|
234
185
|
};
|
|
235
|
-
|
|
236
186
|
var Batch = batch;
|
|
237
|
-
exports.Batch = Batch;
|
|
187
|
+
exports.Batch = Batch;
|
|
188
|
+
//# sourceMappingURL=batch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.js","names":["_display","require","_tools","_rowData","_dataMap","_enums","_byteUtils","_pageExitObservable","HAS_MULTI_BYTES_CHARACTERS","CUSTOM_KEYS","processedMessageByDataMap","message","type","rowStr","rowData","undefined","tags","fields","hasFileds","each","dataMap","value","key","measurement","tagsStr","extend","commonTags","filterFileds","value_path","_key","_value","findByPath","push","isNumber","escapeJsonValue","escapeRowData","fieldsStr","commonFields","isArray","length","_valueData","escapeRowField","isString","context","isObject","isEmptyObject","_tagKeys","indexOf","RumEventType","LOGGER","join","date","time","toServerDuration","exports","batch","request","flushController","messageBytesLimit","pushOnlyBuffer","upsertBuffer","_this","flushObservable","subscribe","event","flush","prototype","add","addOrUpdate","upsert","messages","concat","values","payload","data","bytesCount","flushReason","reason","isPageExitReason","sendOnExit","send","_process","process","processedMessage","messageBytesCount","display","warn","hasMessageFor","remove","computeBytesCount","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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"}
|
|
@@ -5,20 +5,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.canUseEventBridge = canUseEventBridge;
|
|
7
7
|
exports.getEventBridge = getEventBridge;
|
|
8
|
-
|
|
9
8
|
var _init = require("../init");
|
|
10
|
-
|
|
11
9
|
function getEventBridgeGlobal() {
|
|
12
10
|
return (0, _init.getGlobalObject)().FTWebViewJavascriptBridge;
|
|
13
11
|
}
|
|
14
|
-
|
|
15
12
|
function getEventBridge() {
|
|
16
13
|
var eventBridgeGlobal = getEventBridgeGlobal();
|
|
17
|
-
|
|
18
14
|
if (!eventBridgeGlobal) {
|
|
19
15
|
return;
|
|
20
16
|
}
|
|
21
|
-
|
|
22
17
|
return {
|
|
23
18
|
send: function send(eventType, event) {
|
|
24
19
|
eventBridgeGlobal.sendEvent(JSON.stringify({
|
|
@@ -28,8 +23,8 @@ function getEventBridge() {
|
|
|
28
23
|
}
|
|
29
24
|
};
|
|
30
25
|
}
|
|
31
|
-
|
|
32
26
|
function canUseEventBridge() {
|
|
33
27
|
var bridge = getEventBridge();
|
|
34
28
|
return !!bridge;
|
|
35
|
-
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=eventBridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventBridge.js","names":["_init","require","getEventBridgeGlobal","getGlobalObject","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,IAAAA,KAAA,GAAAC,OAAA;AAEA,SAASC,oBAAoBA,CAAA,EAAG;EAC9B,OAAO,IAAAC,qBAAe,EAAC,CAAC,CAACC,yBAAyB;AACpD;AACO,SAASC,cAAcA,CAAA,EAAG;EAC/B,IAAIC,iBAAiB,GAAGJ,oBAAoB,CAAC,CAAC;EAE9C,IAAI,CAACI,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;AACO,SAASM,iBAAiBA,CAAA,EAAG;EAClC,IAAIC,MAAM,GAAGX,cAAc,CAAC,CAAC;EAC7B,OAAO,CAAC,CAACW,MAAM;AACjB"}
|
|
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createFlushController = createFlushController;
|
|
7
|
-
|
|
8
7
|
var _observable = require("../helper/observable");
|
|
9
|
-
|
|
10
8
|
var _timer = require("../helper/timer");
|
|
11
|
-
|
|
12
9
|
// type FlushReason = PageExitReason | 'duration_limit' | 'bytes_limit' | 'messages_limit' | 'session_expire'
|
|
13
10
|
|
|
14
11
|
/**
|
|
@@ -18,10 +15,10 @@ var _timer = require("../helper/timer");
|
|
|
18
15
|
*/
|
|
19
16
|
function createFlushController(_ref) {
|
|
20
17
|
var messagesLimit = _ref.messagesLimit,
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
18
|
+
bytesLimit = _ref.bytesLimit,
|
|
19
|
+
durationLimit = _ref.durationLimit,
|
|
20
|
+
pageExitObservable = _ref.pageExitObservable,
|
|
21
|
+
sessionExpireObservable = _ref.sessionExpireObservable;
|
|
25
22
|
var flushObservable = new _observable.Observable();
|
|
26
23
|
pageExitObservable.subscribe(function (event) {
|
|
27
24
|
return flush(event.reason);
|
|
@@ -31,12 +28,10 @@ function createFlushController(_ref) {
|
|
|
31
28
|
});
|
|
32
29
|
var currentBytesCount = 0;
|
|
33
30
|
var currentMessagesCount = 0;
|
|
34
|
-
|
|
35
31
|
function flush(flushReason) {
|
|
36
32
|
if (currentMessagesCount === 0) {
|
|
37
33
|
return;
|
|
38
34
|
}
|
|
39
|
-
|
|
40
35
|
var messagesCount = currentMessagesCount;
|
|
41
36
|
var bytesCount = currentBytesCount;
|
|
42
37
|
currentMessagesCount = 0;
|
|
@@ -48,9 +43,7 @@ function createFlushController(_ref) {
|
|
|
48
43
|
bytesCount: bytesCount
|
|
49
44
|
});
|
|
50
45
|
}
|
|
51
|
-
|
|
52
46
|
var durationLimitTimeoutId;
|
|
53
|
-
|
|
54
47
|
function scheduleDurationLimitTimeout() {
|
|
55
48
|
if (durationLimitTimeoutId === undefined) {
|
|
56
49
|
durationLimitTimeoutId = (0, _timer.setTimeout)(function () {
|
|
@@ -58,18 +51,15 @@ function createFlushController(_ref) {
|
|
|
58
51
|
}, durationLimit);
|
|
59
52
|
}
|
|
60
53
|
}
|
|
61
|
-
|
|
62
54
|
function cancelDurationLimitTimeout() {
|
|
63
55
|
(0, _timer.clearTimeout)(durationLimitTimeoutId);
|
|
64
56
|
durationLimitTimeoutId = undefined;
|
|
65
57
|
}
|
|
66
|
-
|
|
67
58
|
return {
|
|
68
59
|
flushObservable: flushObservable,
|
|
69
60
|
getMessagesCount: function getMessagesCount() {
|
|
70
61
|
return currentMessagesCount;
|
|
71
62
|
},
|
|
72
|
-
|
|
73
63
|
/**
|
|
74
64
|
* Notifies that a message will be added to a pool of pending messages waiting to be flushed.
|
|
75
65
|
*
|
|
@@ -79,16 +69,14 @@ function createFlushController(_ref) {
|
|
|
79
69
|
notifyBeforeAddMessage: function notifyBeforeAddMessage(messageBytesCount) {
|
|
80
70
|
if (currentBytesCount + messageBytesCount >= bytesLimit) {
|
|
81
71
|
flush('bytes_limit');
|
|
82
|
-
}
|
|
72
|
+
}
|
|
73
|
+
// Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no
|
|
83
74
|
// message was added yet and `notifyAfterAddMessage` is called asynchronously, we still want
|
|
84
75
|
// to notify when a flush is needed (for example on page exit).
|
|
85
|
-
|
|
86
|
-
|
|
87
76
|
currentMessagesCount += 1;
|
|
88
77
|
currentBytesCount += messageBytesCount;
|
|
89
78
|
scheduleDurationLimitTimeout();
|
|
90
79
|
},
|
|
91
|
-
|
|
92
80
|
/**
|
|
93
81
|
* Notifies that a message *was* added to a pool of pending messages waiting to be flushed.
|
|
94
82
|
*
|
|
@@ -102,7 +90,6 @@ function createFlushController(_ref) {
|
|
|
102
90
|
flush('bytes_limit');
|
|
103
91
|
}
|
|
104
92
|
},
|
|
105
|
-
|
|
106
93
|
/**
|
|
107
94
|
* Notifies that a message was removed from a pool of pending messages waiting to be flushed.
|
|
108
95
|
*
|
|
@@ -112,10 +99,10 @@ function createFlushController(_ref) {
|
|
|
112
99
|
notifyAfterRemoveMessage: function notifyAfterRemoveMessage(messageBytesCount) {
|
|
113
100
|
currentBytesCount -= messageBytesCount;
|
|
114
101
|
currentMessagesCount -= 1;
|
|
115
|
-
|
|
116
102
|
if (currentMessagesCount === 0) {
|
|
117
103
|
cancelDurationLimitTimeout();
|
|
118
104
|
}
|
|
119
105
|
}
|
|
120
106
|
};
|
|
121
|
-
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=flushController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flushController.js","names":["_observable","require","_timer","createFlushController","_ref","messagesLimit","bytesLimit","durationLimit","pageExitObservable","sessionExpireObservable","flushObservable","Observable","subscribe","event","flush","reason","currentBytesCount","currentMessagesCount","flushReason","messagesCount","bytesCount","cancelDurationLimitTimeout","notify","durationLimitTimeoutId","scheduleDurationLimitTimeout","undefined","setTimeout","clearTimeout","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,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASE,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,IAAIC,sBAAU,CAAC,CAAC;EAEtCH,kBAAkB,CAACI,SAAS,CAAC,UAAUC,KAAK,EAAE;IAC5C,OAAOC,KAAK,CAACD,KAAK,CAACE,MAAM,CAAC;EAC5B,CAAC,CAAC;EACFN,uBAAuB,CAACG,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;IAE5BX,eAAe,CAACY,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,GAAG,IAAAG,iBAAU,EAAC,YAAY;QAC9CZ,KAAK,CAAC,gBAAgB,CAAC;MACzB,CAAC,EAAEP,aAAa,CAAC;IACnB;EACF;EAEA,SAASc,0BAA0BA,CAAA,EAAG;IACpC,IAAAM,mBAAY,EAACJ,sBAAsB,CAAC;IACpCA,sBAAsB,GAAGE,SAAS;EACpC;EAEA,OAAO;IACLf,eAAe,EAAEA,eAAe;IAChCkB,gBAAgB,EAAE,SAAAA,iBAAA,EAAY;MAC5B,OAAOX,oBAAoB;IAC7B,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACIY,sBAAsB,EAAE,SAAAA,uBAAUC,iBAAiB,EAAE;MACnD,IAAId,iBAAiB,GAAGc,iBAAiB,IAAIxB,UAAU,EAAE;QACvDQ,KAAK,CAAC,aAAa,CAAC;MACtB;MACA;MACA;MACA;MACAG,oBAAoB,IAAI,CAAC;MACzBD,iBAAiB,IAAIc,iBAAiB;MACtCN,4BAA4B,CAAC,CAAC;IAChC,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACIO,qBAAqB,EAAE,SAAAA,sBAAA,EAAY;MACjC,IAAId,oBAAoB,IAAIZ,aAAa,EAAE;QACzCS,KAAK,CAAC,gBAAgB,CAAC;MACzB,CAAC,MAAM,IAAIE,iBAAiB,IAAIV,UAAU,EAAE;QAC1CQ,KAAK,CAAC,aAAa,CAAC;MACtB;IACF,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACIkB,wBAAwB,EAAE,SAAAA,yBAAUF,iBAAiB,EAAE;MACrDd,iBAAiB,IAAIc,iBAAiB;MACtCb,oBAAoB,IAAI,CAAC;MACzB,IAAIA,oBAAoB,KAAK,CAAC,EAAE;QAC9BI,0BAA0B,CAAC,CAAC;MAC9B;IACF;EACF,CAAC;AACH"}
|
|
@@ -5,11 +5,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.createHttpRequest = createHttpRequest;
|
|
7
7
|
exports.fetchKeepAliveStrategy = fetchKeepAliveStrategy;
|
|
8
|
-
|
|
9
8
|
var _sendWithRetryStrategy = require("./sendWithRetryStrategy");
|
|
10
|
-
|
|
11
9
|
var _addEventListener = require("../browser/addEventListener");
|
|
12
|
-
|
|
10
|
+
var _monitor = require("../helper/monitor");
|
|
13
11
|
/**
|
|
14
12
|
* Use POST request without content type to:
|
|
15
13
|
* - avoid CORS preflight requests
|
|
@@ -22,19 +20,15 @@ function addBatchPrecision(url) {
|
|
|
22
20
|
if (!url) return url;
|
|
23
21
|
return url + (url.indexOf('?') === -1 ? '?' : '&') + 'precision=ms';
|
|
24
22
|
}
|
|
25
|
-
|
|
26
23
|
function createHttpRequest(endpointUrl, bytesLimit, reportError) {
|
|
27
24
|
var retryState = (0, _sendWithRetryStrategy.newRetryState)();
|
|
28
|
-
|
|
29
25
|
var sendStrategyForRetry = function sendStrategyForRetry(payload, onResponse) {
|
|
30
26
|
return fetchKeepAliveStrategy(endpointUrl, bytesLimit, payload, onResponse);
|
|
31
27
|
};
|
|
32
|
-
|
|
33
28
|
return {
|
|
34
29
|
send: function send(payload) {
|
|
35
30
|
(0, _sendWithRetryStrategy.sendWithRetryStrategy)(payload, retryState, sendStrategyForRetry, endpointUrl, reportError);
|
|
36
31
|
},
|
|
37
|
-
|
|
38
32
|
/**
|
|
39
33
|
* Since fetch keepalive behaves like regular fetch on Firefox,
|
|
40
34
|
* keep using sendBeaconStrategy on exit
|
|
@@ -44,55 +38,49 @@ function createHttpRequest(endpointUrl, bytesLimit, reportError) {
|
|
|
44
38
|
}
|
|
45
39
|
};
|
|
46
40
|
}
|
|
47
|
-
|
|
48
41
|
function sendBeaconStrategy(endpointUrl, bytesLimit, payload) {
|
|
49
42
|
var data = payload.data;
|
|
50
43
|
var bytesCount = payload.bytesCount;
|
|
51
44
|
var url = addBatchPrecision(endpointUrl);
|
|
52
45
|
var canUseBeacon = !!navigator.sendBeacon && bytesCount < bytesLimit;
|
|
53
|
-
|
|
54
46
|
if (canUseBeacon) {
|
|
55
47
|
try {
|
|
56
48
|
var isQueued = navigator.sendBeacon(url, data);
|
|
57
|
-
|
|
58
49
|
if (isQueued) {
|
|
59
50
|
return;
|
|
60
51
|
}
|
|
61
|
-
} catch (e) {
|
|
52
|
+
} catch (e) {
|
|
53
|
+
// reportBeaconError(e)
|
|
62
54
|
}
|
|
63
55
|
}
|
|
64
|
-
|
|
65
56
|
sendXHR(url, data);
|
|
66
57
|
}
|
|
67
|
-
|
|
68
58
|
function fetchKeepAliveStrategy(endpointUrl, bytesLimit, payload, onResponse) {
|
|
69
59
|
var data = payload.data;
|
|
70
60
|
var bytesCount = payload.bytesCount;
|
|
71
61
|
var url = addBatchPrecision(endpointUrl);
|
|
72
62
|
var canUseKeepAlive = isKeepAliveSupported() && bytesCount < bytesLimit;
|
|
73
|
-
|
|
74
63
|
if (canUseKeepAlive) {
|
|
75
64
|
fetch(url, {
|
|
76
65
|
method: 'POST',
|
|
77
66
|
body: data,
|
|
78
67
|
keepalive: true,
|
|
79
68
|
mode: 'cors'
|
|
80
|
-
}).then(function (response) {
|
|
69
|
+
}).then((0, _monitor.monitor)(function (response) {
|
|
81
70
|
if (typeof onResponse === 'function') {
|
|
82
71
|
onResponse({
|
|
83
72
|
status: response.status,
|
|
84
73
|
type: response.type
|
|
85
74
|
});
|
|
86
75
|
}
|
|
87
|
-
}, function () {
|
|
76
|
+
}), (0, _monitor.monitor)(function () {
|
|
88
77
|
// failed to queue the request
|
|
89
78
|
sendXHR(url, data, onResponse);
|
|
90
|
-
});
|
|
79
|
+
}));
|
|
91
80
|
} else {
|
|
92
81
|
sendXHR(url, data, onResponse);
|
|
93
82
|
}
|
|
94
83
|
}
|
|
95
|
-
|
|
96
84
|
function isKeepAliveSupported() {
|
|
97
85
|
// Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors
|
|
98
86
|
try {
|
|
@@ -101,7 +89,6 @@ function isKeepAliveSupported() {
|
|
|
101
89
|
return false;
|
|
102
90
|
}
|
|
103
91
|
}
|
|
104
|
-
|
|
105
92
|
function sendXHR(url, data, onResponse) {
|
|
106
93
|
var request = new XMLHttpRequest();
|
|
107
94
|
request.open('POST', url, true);
|
|
@@ -115,4 +102,5 @@ function sendXHR(url, data, onResponse) {
|
|
|
115
102
|
once: true
|
|
116
103
|
});
|
|
117
104
|
request.send(data);
|
|
118
|
-
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=httpRequest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpRequest.js","names":["_sendWithRetryStrategy","require","_addEventListener","_monitor","addBatchPrecision","url","indexOf","createHttpRequest","endpointUrl","bytesLimit","reportError","retryState","newRetryState","sendStrategyForRetry","payload","onResponse","fetchKeepAliveStrategy","send","sendWithRetryStrategy","sendOnExit","sendBeaconStrategy","data","bytesCount","canUseBeacon","navigator","sendBeacon","isQueued","e","sendXHR","canUseKeepAlive","isKeepAliveSupported","fetch","method","body","keepalive","mode","then","monitor","response","status","type","window","Request","_unused","request","XMLHttpRequest","open","addEventListener","once"],"sources":["../../src/transport/httpRequest.js"],"sourcesContent":["import { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy'\nimport { addEventListener } from '../browser/addEventListener'\nimport { monitor } from '../helper/monitor'\n/**\n * Use POST request without content type to:\n * - avoid CORS preflight requests\n * - allow usage of sendBeacon\n *\n * multiple elements are sent separated by \\n in order\n * to be parsed correctly without content type header\n */\nfunction addBatchPrecision(url) {\n if (!url) return url\n return url + (url.indexOf('?') === -1 ? '?' : '&') + 'precision=ms'\n}\nexport function createHttpRequest(endpointUrl, bytesLimit, reportError) {\n var retryState = newRetryState()\n var sendStrategyForRetry = function (payload, onResponse) {\n return fetchKeepAliveStrategy(endpointUrl, bytesLimit, payload, onResponse)\n }\n\n return {\n send: function (payload) {\n sendWithRetryStrategy(\n payload,\n retryState,\n sendStrategyForRetry,\n endpointUrl,\n reportError\n )\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: function (payload) {\n sendBeaconStrategy(endpointUrl, bytesLimit, payload)\n }\n }\n}\n\nfunction sendBeaconStrategy(endpointUrl, bytesLimit, payload) {\n var data = payload.data\n var bytesCount = payload.bytesCount\n var url = addBatchPrecision(endpointUrl)\n var canUseBeacon = !!navigator.sendBeacon && bytesCount < bytesLimit\n if (canUseBeacon) {\n try {\n var isQueued = navigator.sendBeacon(url, data)\n\n if (isQueued) {\n return\n }\n } catch (e) {\n // reportBeaconError(e)\n }\n }\n sendXHR(url, data)\n}\n\nexport function fetchKeepAliveStrategy(\n endpointUrl,\n bytesLimit,\n payload,\n onResponse\n) {\n var data = payload.data\n var bytesCount = payload.bytesCount\n var url = addBatchPrecision(endpointUrl)\n var canUseKeepAlive = isKeepAliveSupported() && bytesCount < bytesLimit\n if (canUseKeepAlive) {\n fetch(url, {\n method: 'POST',\n body: data,\n keepalive: true,\n mode: 'cors'\n }).then(\n monitor(function (response) {\n if (typeof onResponse === 'function') {\n onResponse({ status: response.status, type: response.type })\n }\n }),\n monitor(function () {\n // failed to queue the request\n sendXHR(url, data, onResponse)\n })\n )\n } else {\n sendXHR(url, data, onResponse)\n }\n}\n\nfunction isKeepAliveSupported() {\n // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n try {\n return window.Request && 'keepalive' in new Request('http://a')\n } catch {\n return false\n }\n}\n\nfunction sendXHR(url, data, onResponse) {\n const request = new XMLHttpRequest()\n request.open('POST', url, true)\n addEventListener(\n request,\n 'loadend',\n function () {\n if (typeof onResponse === 'function') {\n onResponse({ status: request.status })\n }\n },\n {\n once: true\n }\n )\n request.send(data)\n}\n"],"mappings":"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"}
|
package/cjs/transport/index.js
CHANGED
|
@@ -45,13 +45,9 @@ Object.defineProperty(exports, "startBatchWithReplica", {
|
|
|
45
45
|
return _startBatchWithReplica.startBatchWithReplica;
|
|
46
46
|
}
|
|
47
47
|
});
|
|
48
|
-
|
|
49
48
|
var _httpRequest = require("./httpRequest");
|
|
50
|
-
|
|
51
49
|
var _batch = require("./batch");
|
|
52
|
-
|
|
53
50
|
var _startBatchWithReplica = require("./startBatchWithReplica");
|
|
54
|
-
|
|
55
51
|
var _flushController = require("./flushController");
|
|
56
|
-
|
|
57
|
-
|
|
52
|
+
var _eventBridge = require("./eventBridge");
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_httpRequest","require","_batch","_startBatchWithReplica","_flushController","_eventBridge"],"sources":["../../src/transport/index.js"],"sourcesContent":["export { createHttpRequest } from './httpRequest'\nexport { Batch, processedMessageByDataMap } from './batch'\nexport { startBatchWithReplica } from './startBatchWithReplica'\nexport { createFlushController } from './flushController'\nexport { getEventBridge, canUseEventBridge } from './eventBridge'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AACA,IAAAG,gBAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA"}
|