@cloudcare/rum-uniapp 2.0.1 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -8
- package/cjs/boot/buildEnv.js +1 -1
- package/cjs/boot/rum.entry.js +10 -2
- package/cjs/boot/rum.js +10 -1
- package/cjs/core/baseInfo.js +0 -6
- package/cjs/core/configuration.js +4 -0
- package/cjs/core/errorCollection.js +5 -6
- package/cjs/core/errorFilter.js +47 -0
- package/cjs/core/errorTools.js +2 -1
- package/cjs/core/lifeCycle.js +1 -0
- package/cjs/core/sdk.js +0 -1
- package/cjs/core/sessionManagement.js +45 -0
- package/cjs/core/transport.js +0 -9
- package/cjs/helper/enums.js +11 -6
- package/cjs/helper/limitModification.js +83 -0
- package/cjs/helper/tracekit.js +1 -1
- package/cjs/helper/utils.js +86 -1
- package/cjs/rumEventsCollection/app/appCollection.js +0 -1
- package/cjs/rumEventsCollection/assembly.js +23 -13
- package/cjs/rumEventsCollection/error/errorCollection.js +37 -5
- package/cjs/rumEventsCollection/internalContext.js +34 -0
- package/cjs/rumEventsCollection/page/index.js +1 -0
- package/cjs/rumEventsCollection/resource/resourceCollection.js +0 -1
- package/esm/boot/buildEnv.js +1 -1
- package/esm/boot/rum.entry.js +11 -3
- package/esm/boot/rum.js +8 -1
- package/esm/core/baseInfo.js +0 -5
- package/esm/core/configuration.js +4 -0
- package/esm/core/errorCollection.js +5 -6
- package/esm/core/errorFilter.js +38 -0
- package/esm/core/errorTools.js +2 -1
- package/esm/core/lifeCycle.js +1 -0
- package/esm/core/sdk.js +0 -1
- package/esm/core/sessionManagement.js +20 -0
- package/esm/core/transport.js +0 -9
- package/esm/helper/enums.js +6 -1
- package/esm/helper/limitModification.js +57 -0
- package/esm/helper/tracekit.js +1 -1
- package/esm/helper/utils.js +68 -0
- package/esm/rumEventsCollection/app/appCollection.js +0 -1
- package/esm/rumEventsCollection/assembly.js +22 -14
- package/esm/rumEventsCollection/error/errorCollection.js +36 -5
- package/esm/rumEventsCollection/internalContext.js +27 -0
- package/esm/rumEventsCollection/page/index.js +1 -0
- package/esm/rumEventsCollection/resource/resourceCollection.js +0 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -37,14 +37,17 @@ datafluxRum.init({
|
|
|
37
37
|
|
|
38
38
|
### 初始化参数
|
|
39
39
|
|
|
40
|
-
| 参数
|
|
41
|
-
|
|
|
42
|
-
| `applicationId`
|
|
43
|
-
| `datakitOrigin`
|
|
44
|
-
| `env`
|
|
45
|
-
| `version`
|
|
46
|
-
| `sampleRate`
|
|
47
|
-
| `
|
|
40
|
+
| 参数 | 类型 | 是否必须 | 默认值 | 描述 |
|
|
41
|
+
| ----------------------------------------------- | ------- | -------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
42
|
+
| `applicationId` | String | 是 | | 从 dataflux 创建的应用 ID |
|
|
43
|
+
| `datakitOrigin` | String | 是 | | datakit 数据上报 Origin;`注意:需要在小程序管理后台加上request白名单` |
|
|
44
|
+
| `env` | String | 否 | | 小程序 应用当前环境, 如 prod:线上环境;gray:灰度环境;pre:预发布环境 common:日常环境;local:本地环境; |
|
|
45
|
+
| `version` | String | 否 | | 小程序 应用的版本号 |
|
|
46
|
+
| `sampleRate` | Number | 否 | `100` | 指标数据收集百分比: `100`表示全收集,`0`表示不收集 |
|
|
47
|
+
| `traceType` $\color{#FF0000}{新增}$ | Enum | 否 | `ddtrace` | 与 APM 采集工具连接的请求header类型,目前兼容的类型包括:`ddtrace`、`zipkin`、`skywalking_v3`、`jaeger`、`zipkin_single_header`、`w3c_traceparent`。*注: opentelemetry 支持 `zipkin_single_header`,`w3c_traceparent`,`zipkin`三种类型* |
|
|
48
|
+
| `traceId128Bit` $\color{#FF0000}{新增}$ | Boolean | 否 | `false` | 是否以128位的方式生成 `traceID`,与`traceType` 对应,目前支持类型 `zipkin`、`jaeger` |
|
|
49
|
+
| `allowedTracingOrigins` $\color{#FF0000}{新增}$ | Array | 否 | `[]` | 允许注入 `trace` 采集器所需header头部的所有请求列表。可以是请求的origin,也可以是是正则,origin: `协议(包括://),域名(或IP地址)[和端口号]` 例如:`["https://api.example.com", /https:\/\/.*\.my-api-domain\.com/]` |
|
|
50
|
+
| `trackInteractions` | Boolean | 否 | `false` | 是否开启用户行为采集 |
|
|
48
51
|
|
|
49
52
|
## 注意事项
|
|
50
53
|
|
package/cjs/boot/buildEnv.js
CHANGED
package/cjs/boot/rum.entry.js
CHANGED
|
@@ -16,6 +16,8 @@ var makeRum = function makeRum(startRumImpl) {
|
|
|
16
16
|
var globalContextManager = (0, _utils.createContextManager)();
|
|
17
17
|
var user = {};
|
|
18
18
|
|
|
19
|
+
var _getInternalContext = function getInternalContext() {};
|
|
20
|
+
|
|
19
21
|
function clonedCommonContext() {
|
|
20
22
|
return (0, _utils.extend2Lev)({}, {
|
|
21
23
|
context: globalContextManager.get(),
|
|
@@ -35,14 +37,19 @@ var makeRum = function makeRum(startRumImpl) {
|
|
|
35
37
|
return;
|
|
36
38
|
}
|
|
37
39
|
|
|
38
|
-
startRumImpl(Vue, userConfiguration, function () {
|
|
40
|
+
var _startRumImpl = startRumImpl(Vue, userConfiguration, function () {
|
|
39
41
|
return {
|
|
40
42
|
user: user,
|
|
41
43
|
context: globalContextManager.get()
|
|
42
44
|
};
|
|
43
45
|
});
|
|
46
|
+
|
|
47
|
+
_getInternalContext = _startRumImpl.getInternalContext;
|
|
44
48
|
isAlreadyInitialized = true;
|
|
45
49
|
},
|
|
50
|
+
getInternalContext: function getInternalContext(startTime) {
|
|
51
|
+
return _getInternalContext(startTime);
|
|
52
|
+
},
|
|
46
53
|
addRumGlobalContext: globalContextManager.add,
|
|
47
54
|
removeRumGlobalContext: globalContextManager.remove,
|
|
48
55
|
getRumGlobalContext: globalContextManager.get,
|
|
@@ -111,4 +118,5 @@ var makeRum = function makeRum(startRumImpl) {
|
|
|
111
118
|
|
|
112
119
|
exports.makeRum = makeRum;
|
|
113
120
|
var datafluxRum = makeRum(_rum.startRum);
|
|
114
|
-
exports.datafluxRum = datafluxRum;
|
|
121
|
+
exports.datafluxRum = datafluxRum;
|
|
122
|
+
(0, _utils.defineGlobal)((0, _utils.getGlobalObject)(), 'DATAFLUX_RUM_MIN', datafluxRum);
|
package/cjs/boot/rum.js
CHANGED
|
@@ -33,6 +33,10 @@ var _setDataCollection = require("../rumEventsCollection/setDataCollection");
|
|
|
33
33
|
|
|
34
34
|
var _actionCollection = require("../rumEventsCollection/action/actionCollection");
|
|
35
35
|
|
|
36
|
+
var _sessionManagement = require("../core/sessionManagement");
|
|
37
|
+
|
|
38
|
+
var _internalContext = require("../rumEventsCollection/internalContext");
|
|
39
|
+
|
|
36
40
|
var _sdk = require("../core/sdk");
|
|
37
41
|
|
|
38
42
|
var startRum = function startRum(Vue, userConfiguration, getCommonContext) {
|
|
@@ -40,7 +44,8 @@ var startRum = function startRum(Vue, userConfiguration, getCommonContext) {
|
|
|
40
44
|
var lifeCycle = new _lifeCycle.LifeCycle();
|
|
41
45
|
var parentContexts = (0, _parentContexts.startParentContexts)(lifeCycle);
|
|
42
46
|
var batch = (0, _batch.startRumBatch)(configuration, lifeCycle);
|
|
43
|
-
|
|
47
|
+
var session = new _sessionManagement.sessionManagement(configuration);
|
|
48
|
+
(0, _assembly.startRumAssembly)(userConfiguration.applicationId, configuration, session, lifeCycle, parentContexts, getCommonContext);
|
|
44
49
|
(0, _appCollection.startAppCollection)(lifeCycle, configuration);
|
|
45
50
|
(0, _resourceCollection.startResourceCollection)(lifeCycle, configuration);
|
|
46
51
|
(0, _viewCollection.startViewCollection)(lifeCycle, configuration, Vue);
|
|
@@ -49,6 +54,10 @@ var startRum = function startRum(Vue, userConfiguration, getCommonContext) {
|
|
|
49
54
|
(0, _performanceCollection.startPagePerformanceObservable)(lifeCycle, configuration);
|
|
50
55
|
(0, _setDataCollection.startSetDataColloction)(lifeCycle, Vue);
|
|
51
56
|
(0, _actionCollection.startActionCollection)(lifeCycle, configuration, Vue);
|
|
57
|
+
var internalContext = (0, _internalContext.startInternalContext)(userConfiguration.applicationId, session, parentContexts);
|
|
58
|
+
return {
|
|
59
|
+
getInternalContext: internalContext.get
|
|
60
|
+
};
|
|
52
61
|
};
|
|
53
62
|
|
|
54
63
|
exports.startRum = startRum;
|
package/cjs/core/baseInfo.js
CHANGED
|
@@ -21,7 +21,6 @@ var BaseInfo = /*#__PURE__*/function () {
|
|
|
21
21
|
function BaseInfo() {
|
|
22
22
|
_classCallCheck(this, BaseInfo);
|
|
23
23
|
|
|
24
|
-
this.sessionId = (0, _utils.UUID)();
|
|
25
24
|
this.getDeviceInfo();
|
|
26
25
|
this.getNetWork();
|
|
27
26
|
}
|
|
@@ -88,11 +87,6 @@ var BaseInfo = /*#__PURE__*/function () {
|
|
|
88
87
|
_this.deviceInfo.network = e.networkType ? e.networkType : 'unknown';
|
|
89
88
|
});
|
|
90
89
|
}
|
|
91
|
-
}, {
|
|
92
|
-
key: "getSessionId",
|
|
93
|
-
value: function getSessionId() {
|
|
94
|
-
return this.sessionId;
|
|
95
|
-
}
|
|
96
90
|
}]);
|
|
97
91
|
|
|
98
92
|
return BaseInfo;
|
|
@@ -78,6 +78,10 @@ function commonInit(userConfiguration, buildEnv) {
|
|
|
78
78
|
transportConfiguration.traceType = userConfiguration.traceType;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
+
if ('sampleRate' in userConfiguration) {
|
|
82
|
+
transportConfiguration.sampleRate = userConfiguration.sampleRate;
|
|
83
|
+
}
|
|
84
|
+
|
|
81
85
|
return (0, _utils.extend2Lev)(DEFAULT_CONFIGURATION, transportConfiguration);
|
|
82
86
|
}
|
|
83
87
|
|
|
@@ -106,18 +106,17 @@ function stopRuntimeErrorTracking() {
|
|
|
106
106
|
_tracekit.report.unsubscribe(traceKitReportHandler);
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
var
|
|
109
|
+
var errorObservable;
|
|
110
110
|
|
|
111
111
|
function startAutomaticErrorCollection(configuration) {
|
|
112
|
-
if (!
|
|
113
|
-
|
|
112
|
+
if (!errorObservable) {
|
|
113
|
+
errorObservable = new _observable.Observable();
|
|
114
114
|
trackNetworkError(configuration, errorObservable);
|
|
115
115
|
startConsoleTracking(errorObservable);
|
|
116
|
-
startRuntimeErrorTracking(errorObservable);
|
|
117
|
-
filteredErrorsObservable = filterErrors(configuration, errorObservable);
|
|
116
|
+
startRuntimeErrorTracking(errorObservable); // filteredErrorsObservable = filterErrors(configuration, errorObservable)
|
|
118
117
|
}
|
|
119
118
|
|
|
120
|
-
return
|
|
119
|
+
return errorObservable;
|
|
121
120
|
}
|
|
122
121
|
|
|
123
122
|
function trackNetworkError(configuration, errorObservable) {
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createErrorFilter = createErrorFilter;
|
|
7
|
+
|
|
8
|
+
var _errorTools = require("./errorTools");
|
|
9
|
+
|
|
10
|
+
var _utils = require("../helper/utils");
|
|
11
|
+
|
|
12
|
+
function createErrorFilter(configuration, onLimitReached) {
|
|
13
|
+
var errorCount = 0;
|
|
14
|
+
var allowNextError = false;
|
|
15
|
+
return {
|
|
16
|
+
isLimitReached: function isLimitReached() {
|
|
17
|
+
if (errorCount === 0) {
|
|
18
|
+
setTimeout(function () {
|
|
19
|
+
errorCount = 0;
|
|
20
|
+
}, _utils.ONE_MINUTE);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
errorCount += 1;
|
|
24
|
+
|
|
25
|
+
if (errorCount <= configuration.maxErrorsByMinute || allowNextError) {
|
|
26
|
+
allowNextError = false;
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (errorCount === configuration.maxErrorsByMinute + 1) {
|
|
31
|
+
allowNextError = true;
|
|
32
|
+
|
|
33
|
+
try {
|
|
34
|
+
onLimitReached({
|
|
35
|
+
message: "Reached max number of errors by minute: ".concat(configuration.maxErrorsByMinute),
|
|
36
|
+
source: _errorTools.ErrorSource.AGENT,
|
|
37
|
+
startTime: (0, _utils.now)()
|
|
38
|
+
});
|
|
39
|
+
} finally {
|
|
40
|
+
allowNextError = false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
package/cjs/core/errorTools.js
CHANGED
package/cjs/core/lifeCycle.js
CHANGED
|
@@ -68,6 +68,7 @@ var LifeCycleEventType = {
|
|
|
68
68
|
REQUEST_STARTED: 'REQUEST_STARTED',
|
|
69
69
|
REQUEST_COMPLETED: 'REQUEST_COMPLETED',
|
|
70
70
|
RAW_RUM_EVENT_COLLECTED: 'RAW_RUM_EVENT_COLLECTED',
|
|
71
|
+
RAW_ERROR_COLLECTED: 'RAW_ERROR_COLLECTED',
|
|
71
72
|
RUM_EVENT_COLLECTED: 'RUM_EVENT_COLLECTED'
|
|
72
73
|
};
|
|
73
74
|
exports.LifeCycleEventType = LifeCycleEventType;
|
package/cjs/core/sdk.js
CHANGED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.sessionManagement = exports.SessionType = void 0;
|
|
7
|
+
|
|
8
|
+
var _utils = require("../helper/utils");
|
|
9
|
+
|
|
10
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
11
|
+
|
|
12
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
13
|
+
|
|
14
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
15
|
+
|
|
16
|
+
var SessionType = {
|
|
17
|
+
SYNTHETICS: 'synthetics',
|
|
18
|
+
USER: 'user'
|
|
19
|
+
};
|
|
20
|
+
exports.SessionType = SessionType;
|
|
21
|
+
|
|
22
|
+
var sessionManagement = /*#__PURE__*/function () {
|
|
23
|
+
function sessionManagement(configuration) {
|
|
24
|
+
_classCallCheck(this, sessionManagement);
|
|
25
|
+
|
|
26
|
+
this.sessionId = (0, _utils.UUID)();
|
|
27
|
+
this.isTrack = (0, _utils.performDraw)(configuration.sampleRate);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
_createClass(sessionManagement, [{
|
|
31
|
+
key: "getSessionId",
|
|
32
|
+
value: function getSessionId() {
|
|
33
|
+
return this.sessionId;
|
|
34
|
+
}
|
|
35
|
+
}, {
|
|
36
|
+
key: "isTracked",
|
|
37
|
+
value: function isTracked() {
|
|
38
|
+
return this.isTrack;
|
|
39
|
+
}
|
|
40
|
+
}]);
|
|
41
|
+
|
|
42
|
+
return sessionManagement;
|
|
43
|
+
}();
|
|
44
|
+
|
|
45
|
+
exports.sessionManagement = sessionManagement;
|
package/cjs/core/transport.js
CHANGED
|
@@ -133,15 +133,6 @@ var processedMessageByDataMap = function processedMessageByDataMap(message) {
|
|
|
133
133
|
}
|
|
134
134
|
});
|
|
135
135
|
|
|
136
|
-
if (message.type === _enums.RumEventType.LOGGER) {
|
|
137
|
-
// 这里处理日志类型数据自定义字段
|
|
138
|
-
(0, _utils.each)(message, function (value, key) {
|
|
139
|
-
if (filterFileds.indexOf(key) === -1 && ((0, _utils.isNumber)(value) || (0, _utils.isString)(value) || (0, _utils.isBoolean)(value))) {
|
|
140
|
-
tagsStr.push((0, _utils.escapeRowData)(key) + '=' + (0, _utils.escapeRowData)(value));
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
|
|
145
136
|
if (tagsStr.length) {
|
|
146
137
|
rowStr += tagsStr.join(',');
|
|
147
138
|
}
|
package/cjs/helper/enums.js
CHANGED
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.TraceType = exports.MpHook = exports.ActionType = exports.RequestType = exports.RumEventType = exports.CLIENT_ID_TOKEN = exports.ONE_KILO_BYTE = exports.ONE_HOUR = exports.ONE_MINUTE = exports.ONE_SECOND = void 0;
|
|
6
|
+
exports.ErrorHandling = exports.TraceType = exports.MpHook = exports.ActionType = exports.RequestType = exports.RumEventType = exports.CLIENT_ID_TOKEN = exports.ONE_KILO_BYTE = exports.ONE_HOUR = exports.ONE_MINUTE = exports.ONE_SECOND = void 0;
|
|
7
|
+
|
|
8
|
+
var _RumEventType;
|
|
7
9
|
|
|
8
10
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
9
11
|
|
|
@@ -17,16 +19,14 @@ var ONE_KILO_BYTE = 1024;
|
|
|
17
19
|
exports.ONE_KILO_BYTE = ONE_KILO_BYTE;
|
|
18
20
|
var CLIENT_ID_TOKEN = 'datafluxRum:client:id';
|
|
19
21
|
exports.CLIENT_ID_TOKEN = CLIENT_ID_TOKEN;
|
|
20
|
-
|
|
21
|
-
var RumEventType = _defineProperty({
|
|
22
|
+
var RumEventType = (_RumEventType = {
|
|
22
23
|
ACTION: 'action',
|
|
23
24
|
ERROR: 'error',
|
|
24
25
|
LONG_TASK: 'long_task',
|
|
25
26
|
VIEW: 'view',
|
|
26
27
|
RESOURCE: 'resource',
|
|
27
28
|
APP: 'app'
|
|
28
|
-
}, "ACTION", 'action');
|
|
29
|
-
|
|
29
|
+
}, _defineProperty(_RumEventType, "ACTION", 'action'), _defineProperty(_RumEventType, "LOGGER", 'logger'), _RumEventType);
|
|
30
30
|
exports.RumEventType = RumEventType;
|
|
31
31
|
var RequestType = {
|
|
32
32
|
XHR: 'network',
|
|
@@ -61,4 +61,9 @@ var TraceType = {
|
|
|
61
61
|
SKYWALKING_V3: 'skywalking_v3',
|
|
62
62
|
JAEGER: 'jaeger'
|
|
63
63
|
};
|
|
64
|
-
exports.TraceType = TraceType;
|
|
64
|
+
exports.TraceType = TraceType;
|
|
65
|
+
var ErrorHandling = {
|
|
66
|
+
HANDLED: 'handled',
|
|
67
|
+
UNHANDLED: 'unhandled'
|
|
68
|
+
};
|
|
69
|
+
exports.ErrorHandling = ErrorHandling;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.limitModification = limitModification;
|
|
7
|
+
|
|
8
|
+
var _utils = require("./utils");
|
|
9
|
+
|
|
10
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
11
|
+
|
|
12
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
13
|
+
|
|
14
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
15
|
+
|
|
16
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Current limitations:
|
|
20
|
+
* - field path do not support array, 'a.b.c' only
|
|
21
|
+
* - modifiable fields type must be string
|
|
22
|
+
*/
|
|
23
|
+
function limitModification(object, modifiableFieldPaths, modifier) {
|
|
24
|
+
var clone = (0, _utils.extend2Lev)({}, object);
|
|
25
|
+
var result = modifier(clone);
|
|
26
|
+
(0, _utils.each)(modifiableFieldPaths, function (path) {
|
|
27
|
+
var originalValue = get(object, path);
|
|
28
|
+
var newValue = get(clone, path);
|
|
29
|
+
|
|
30
|
+
if (typeof originalValue === 'string' && typeof newValue === 'string') {
|
|
31
|
+
set(object, path, newValue);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function get(object, path) {
|
|
38
|
+
var current = object;
|
|
39
|
+
|
|
40
|
+
var _iterator = _createForOfIteratorHelper(path.split('.')),
|
|
41
|
+
_step;
|
|
42
|
+
|
|
43
|
+
try {
|
|
44
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
45
|
+
var field = _step.value;
|
|
46
|
+
|
|
47
|
+
if (!isValidObjectContaining(current, field)) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
current = current[field];
|
|
52
|
+
}
|
|
53
|
+
} catch (err) {
|
|
54
|
+
_iterator.e(err);
|
|
55
|
+
} finally {
|
|
56
|
+
_iterator.f();
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return current;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function set(object, path, value) {
|
|
63
|
+
var current = object;
|
|
64
|
+
var fields = path.split('.');
|
|
65
|
+
|
|
66
|
+
for (var i = 0; i < fields.length; i += 1) {
|
|
67
|
+
var field = fields[i];
|
|
68
|
+
|
|
69
|
+
if (!isValidObjectContaining(current, field)) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (i !== fields.length - 1) {
|
|
74
|
+
current = current[field];
|
|
75
|
+
} else {
|
|
76
|
+
current[field] = value;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function isValidObjectContaining(object, field) {
|
|
82
|
+
return _typeof(object) === 'object' && object !== null && field in object;
|
|
83
|
+
}
|
package/cjs/helper/tracekit.js
CHANGED
|
@@ -919,7 +919,7 @@ exports.computeStackTrace = computeStackTrace;
|
|
|
919
919
|
var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;
|
|
920
920
|
|
|
921
921
|
function extractMessage(ex) {
|
|
922
|
-
var message = ex && ex.message;
|
|
922
|
+
var message = ex && ex.message;
|
|
923
923
|
|
|
924
924
|
if (!message) {
|
|
925
925
|
return 'No error message';
|
package/cjs/helper/utils.js
CHANGED
|
@@ -23,7 +23,10 @@ exports.escapeRowData = escapeRowData;
|
|
|
23
23
|
exports.getOrigin = getOrigin;
|
|
24
24
|
exports.createContextManager = createContextManager;
|
|
25
25
|
exports.getActivePage = getActivePage;
|
|
26
|
-
exports.
|
|
26
|
+
exports.findCommaSeparatedValue = findCommaSeparatedValue;
|
|
27
|
+
exports.defineGlobal = defineGlobal;
|
|
28
|
+
exports.getGlobalObject = getGlobalObject;
|
|
29
|
+
exports.ONE_KILO_BYTE = exports.ONE_HOUR = exports.ONE_MINUTE = exports.ONE_SECOND = exports.deepMixObject = exports.defineObject = exports.getOwnObjectKeys = exports.urlParse = exports.throttle = exports.now = exports.safeJSONParse = exports.isJSONString = exports.isEmptyObject = exports.isObject = exports.trim = exports.extend2Lev = exports.extend = exports.getURLSearchParams = exports.getQueryParamsFromUrl = exports.base64Encode = exports.utf8Encode = exports.areInOrder = exports.toArray = exports.isArray = exports.isNumber = exports.isBoolean = exports.isDate = exports.isString = exports.isUndefined = exports.indexOf = exports.keys = exports.values = exports.each = exports.isArguments = void 0;
|
|
27
30
|
|
|
28
31
|
var _enums = require("./enums");
|
|
29
32
|
|
|
@@ -84,6 +87,39 @@ var values = function values(obj) {
|
|
|
84
87
|
|
|
85
88
|
exports.values = values;
|
|
86
89
|
|
|
90
|
+
var keys = function keys(obj) {
|
|
91
|
+
var results = [];
|
|
92
|
+
|
|
93
|
+
if (obj === null) {
|
|
94
|
+
return results;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
each(obj, function (value, key) {
|
|
98
|
+
results[results.length] = key;
|
|
99
|
+
});
|
|
100
|
+
return results;
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
exports.keys = keys;
|
|
104
|
+
|
|
105
|
+
var indexOf = function indexOf(arr, target) {
|
|
106
|
+
var indexOf = arr.indexOf;
|
|
107
|
+
|
|
108
|
+
if (indexOf) {
|
|
109
|
+
return indexOf.call(arr, target);
|
|
110
|
+
} else {
|
|
111
|
+
for (var i = 0; i < arr.length; i++) {
|
|
112
|
+
if (target === arr[i]) {
|
|
113
|
+
return i;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
return -1;
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
exports.indexOf = indexOf;
|
|
122
|
+
|
|
87
123
|
function round(num, decimals) {
|
|
88
124
|
return +num.toFixed(decimals);
|
|
89
125
|
}
|
|
@@ -800,4 +836,53 @@ function getActivePage() {
|
|
|
800
836
|
}
|
|
801
837
|
|
|
802
838
|
return {};
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
function findCommaSeparatedValue(rawString, name) {
|
|
842
|
+
var matches = rawString.match('(?:^|;)\\s*' + name + '\\s*=\\s*([^;]+)');
|
|
843
|
+
return matches ? matches[1] : undefined;
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
var ONE_SECOND = 1000;
|
|
847
|
+
exports.ONE_SECOND = ONE_SECOND;
|
|
848
|
+
var ONE_MINUTE = 60 * ONE_SECOND;
|
|
849
|
+
exports.ONE_MINUTE = ONE_MINUTE;
|
|
850
|
+
var ONE_HOUR = 60 * ONE_MINUTE;
|
|
851
|
+
exports.ONE_HOUR = ONE_HOUR;
|
|
852
|
+
var ONE_KILO_BYTE = 1024;
|
|
853
|
+
exports.ONE_KILO_BYTE = ONE_KILO_BYTE;
|
|
854
|
+
|
|
855
|
+
function defineGlobal(global, name, api) {
|
|
856
|
+
global[name] = api;
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
function getGlobalObject() {
|
|
860
|
+
if ((typeof globalThis === "undefined" ? "undefined" : _typeof(globalThis)) === 'object') {
|
|
861
|
+
return globalThis;
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
Object.defineProperty(Object.prototype, '_dd_temp_', {
|
|
865
|
+
get: function get() {
|
|
866
|
+
return this;
|
|
867
|
+
},
|
|
868
|
+
configurable: true
|
|
869
|
+
}); // @ts-ignore
|
|
870
|
+
|
|
871
|
+
var globalObject = _dd_temp_; // @ts-ignore
|
|
872
|
+
|
|
873
|
+
delete Object.prototype._dd_temp_;
|
|
874
|
+
|
|
875
|
+
if (_typeof(globalObject) !== 'object') {
|
|
876
|
+
// on safari _dd_temp_ is available on window but not globally
|
|
877
|
+
// fallback on other browser globals check
|
|
878
|
+
if ((typeof self === "undefined" ? "undefined" : _typeof(self)) === 'object') {
|
|
879
|
+
globalObject = self;
|
|
880
|
+
} else if ((typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object') {
|
|
881
|
+
globalObject = window;
|
|
882
|
+
} else {
|
|
883
|
+
globalObject = {};
|
|
884
|
+
}
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
return globalObject;
|
|
803
888
|
}
|
|
@@ -13,18 +13,18 @@ var _enums = require("../helper/enums");
|
|
|
13
13
|
|
|
14
14
|
var _baseInfo = _interopRequireDefault(require("../core/baseInfo"));
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
var _sessionManagement = require("../core/sessionManagement");
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
return (0, _utils.performDraw)(configuration.sampleRate);
|
|
20
|
-
}
|
|
18
|
+
var _errorFilter = require("../core/errorFilter");
|
|
21
19
|
|
|
22
|
-
|
|
23
|
-
SYNTHETICS: 'synthetics',
|
|
24
|
-
USER: 'user'
|
|
25
|
-
};
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
26
21
|
|
|
27
|
-
function startRumAssembly(applicationId, configuration, lifeCycle, parentContexts, getCommonContext) {
|
|
22
|
+
function startRumAssembly(applicationId, configuration, session, lifeCycle, parentContexts, getCommonContext) {
|
|
23
|
+
var errorFilter = (0, _errorFilter.createErrorFilter)(configuration, function (error) {
|
|
24
|
+
lifeCycle.notify(_lifeCycle.LifeCycleEventType.RAW_ERROR_COLLECTED, {
|
|
25
|
+
error: error
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
28
|
lifeCycle.subscribe(_lifeCycle.LifeCycleEventType.RAW_RUM_EVENT_COLLECTED, function (data) {
|
|
29
29
|
var startTime = data.startTime;
|
|
30
30
|
var rawRumEvent = data.rawRumEvent;
|
|
@@ -35,7 +35,7 @@ function startRumAssembly(applicationId, configuration, lifeCycle, parentContext
|
|
|
35
35
|
device: _baseInfo["default"].deviceInfo
|
|
36
36
|
};
|
|
37
37
|
|
|
38
|
-
if (isTracked(
|
|
38
|
+
if (session.isTracked() && (viewContext || rawRumEvent.type === _enums.RumEventType.APP)) {
|
|
39
39
|
var actionContext = parentContexts.findAction(startTime);
|
|
40
40
|
var commonContext = savedCommonContext || getCommonContext();
|
|
41
41
|
var rumContext = {
|
|
@@ -52,8 +52,8 @@ function startRumAssembly(applicationId, configuration, lifeCycle, parentContext
|
|
|
52
52
|
device: {},
|
|
53
53
|
date: new Date().getTime(),
|
|
54
54
|
session: {
|
|
55
|
-
id:
|
|
56
|
-
type: SessionType.USER
|
|
55
|
+
id: session.getSessionId(),
|
|
56
|
+
type: _sessionManagement.SessionType.USER
|
|
57
57
|
},
|
|
58
58
|
user: {
|
|
59
59
|
id: configuration.user_id || _baseInfo["default"].getClientID(),
|
|
@@ -76,7 +76,17 @@ function startRumAssembly(applicationId, configuration, lifeCycle, parentContext
|
|
|
76
76
|
}, commonContext.user);
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
|
|
79
|
+
if (shouldSend(serverRumEvent, errorFilter)) {
|
|
80
|
+
lifeCycle.notify(_lifeCycle.LifeCycleEventType.RUM_EVENT_COLLECTED, serverRumEvent);
|
|
81
|
+
}
|
|
80
82
|
}
|
|
81
83
|
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function shouldSend(event, errorFilter) {
|
|
87
|
+
if (event.type === _enums.RumEventType.ERROR) {
|
|
88
|
+
return !errorFilter.isLimitReached();
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return true;
|
|
82
92
|
}
|