@cloudcare/rum-uniapp 2.1.17 → 2.1.20
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 +42 -34
- package/cjs/boot/buildEnv.js +3 -4
- package/cjs/boot/rum.entry.js +12 -37
- package/cjs/boot/rum.js +2 -25
- package/cjs/core/baseInfo.js +6 -25
- package/cjs/core/boundedBuffer.js +1 -7
- package/cjs/core/configuration.js +15 -27
- package/cjs/core/contextManager.js +5 -17
- package/cjs/core/dataMap.js +5 -10
- package/cjs/core/downloadProxy.js +4 -26
- package/cjs/core/errorCollection.js +5 -35
- package/cjs/core/errorFilter.js +0 -8
- package/cjs/core/errorTools.js +2 -10
- package/cjs/core/heavyCustomerDataWarning.js +3 -9
- package/cjs/core/lifeCycle.js +8 -18
- package/cjs/core/observable.js +7 -13
- package/cjs/core/sdk.js +4 -13
- package/cjs/core/sessionManagement.js +8 -17
- package/cjs/core/transport.js +6 -53
- package/cjs/core/user.js +2 -7
- package/cjs/core/xhrProxy.js +4 -26
- package/cjs/helper/byteUtils.js +6 -12
- package/cjs/helper/commonContext.js +2 -3
- package/cjs/helper/enums.js +17 -28
- package/cjs/helper/jsonStringify.js +5 -12
- package/cjs/helper/limitModification.js +3 -21
- package/cjs/helper/tracekit.js +33 -145
- package/cjs/helper/utils.js +92 -306
- package/cjs/index.js +0 -1
- package/cjs/rumEventsCollection/action/actionCollection.js +0 -9
- package/cjs/rumEventsCollection/action/trackActions.js +6 -28
- package/cjs/rumEventsCollection/app/appCollection.js +0 -6
- package/cjs/rumEventsCollection/app/index.js +14 -26
- package/cjs/rumEventsCollection/assembly.js +0 -14
- package/cjs/rumEventsCollection/error/errorCollection.js +1 -16
- package/cjs/rumEventsCollection/internalContext.js +0 -2
- package/cjs/rumEventsCollection/page/index.js +5 -43
- package/cjs/rumEventsCollection/page/viewCollection.js +0 -8
- package/cjs/rumEventsCollection/parentContexts.js +3 -20
- package/cjs/rumEventsCollection/performanceCollection.js +0 -4
- package/cjs/rumEventsCollection/requestCollection.js +1 -14
- package/cjs/rumEventsCollection/resource/resourceCollection.js +0 -11
- package/cjs/rumEventsCollection/resource/resourceUtils.js +50 -46
- package/cjs/rumEventsCollection/setDataCollection.js +0 -16
- package/cjs/rumEventsCollection/tracing/ddtraceTracer.js +0 -6
- package/cjs/rumEventsCollection/tracing/jaegerTracer.js +3 -9
- package/cjs/rumEventsCollection/tracing/skywalkingTracer.js +3 -10
- package/cjs/rumEventsCollection/tracing/tracer.js +1 -25
- package/cjs/rumEventsCollection/tracing/w3cTraceParentTracer.js +1 -6
- package/cjs/rumEventsCollection/tracing/zipkinMultiTracer.js +3 -10
- package/cjs/rumEventsCollection/tracing/zipkinSingleTracer.js +1 -6
- package/cjs/rumEventsCollection/trackEventCounts.js +0 -8
- package/cjs/rumEventsCollection/trackPageActiveites.js +10 -33
- package/cjs/rumEventsCollection/transport/batch.js +0 -9
- package/esm/boot/buildEnv.js +1 -1
- package/esm/boot/rum.entry.js +9 -21
- package/esm/boot/rum.js +0 -4
- package/esm/core/baseInfo.js +0 -11
- package/esm/core/boundedBuffer.js +0 -3
- package/esm/core/configuration.js +13 -21
- package/esm/core/contextManager.js +3 -8
- package/esm/core/dataMap.js +2 -2
- package/esm/core/downloadProxy.js +2 -17
- package/esm/core/errorCollection.js +2 -15
- package/esm/core/errorFilter.js +0 -5
- package/esm/core/errorTools.js +0 -3
- package/esm/core/heavyCustomerDataWarning.js +3 -3
- package/esm/core/lifeCycle.js +0 -5
- package/esm/core/observable.js +0 -3
- package/esm/core/sdk.js +1 -6
- package/esm/core/sessionManagement.js +0 -3
- package/esm/core/transport.js +4 -38
- package/esm/core/user.js +2 -4
- package/esm/core/xhrProxy.js +2 -17
- package/esm/helper/byteUtils.js +4 -7
- package/esm/helper/commonContext.js +2 -2
- package/esm/helper/jsonStringify.js +4 -7
- package/esm/helper/limitModification.js +1 -11
- package/esm/helper/tracekit.js +30 -130
- package/esm/helper/utils.js +27 -125
- package/esm/rumEventsCollection/action/actionCollection.js +0 -4
- package/esm/rumEventsCollection/action/trackActions.js +6 -20
- package/esm/rumEventsCollection/app/appCollection.js +0 -1
- package/esm/rumEventsCollection/app/index.js +12 -18
- package/esm/rumEventsCollection/assembly.js +0 -6
- package/esm/rumEventsCollection/error/errorCollection.js +0 -7
- package/esm/rumEventsCollection/internalContext.js +0 -1
- package/esm/rumEventsCollection/page/index.js +5 -37
- package/esm/rumEventsCollection/page/viewCollection.js +0 -3
- package/esm/rumEventsCollection/parentContexts.js +0 -10
- package/esm/rumEventsCollection/requestCollection.js +0 -4
- package/esm/rumEventsCollection/resource/resourceCollection.js +0 -5
- package/esm/rumEventsCollection/resource/resourceUtils.js +48 -39
- package/esm/rumEventsCollection/setDataCollection.js +0 -13
- package/esm/rumEventsCollection/tracing/ddtraceTracer.js +0 -4
- package/esm/rumEventsCollection/tracing/jaegerTracer.js +3 -7
- package/esm/rumEventsCollection/tracing/skywalkingTracer.js +5 -9
- package/esm/rumEventsCollection/tracing/tracer.js +0 -14
- package/esm/rumEventsCollection/tracing/w3cTraceParentTracer.js +1 -4
- package/esm/rumEventsCollection/tracing/zipkinMultiTracer.js +3 -8
- package/esm/rumEventsCollection/tracing/zipkinSingleTracer.js +1 -4
- package/esm/rumEventsCollection/trackEventCounts.js +0 -4
- package/esm/rumEventsCollection/trackPageActiveites.js +9 -22
- package/esm/rumEventsCollection/transport/batch.js +0 -5
- package/package.json +6 -3
package/README.md
CHANGED
|
@@ -1,22 +1,27 @@
|
|
|
1
|
-
# 基于uniapp开发框架 兼容各平台小程序 DataFlux RUM 数据采集SDK
|
|
2
|
-
|
|
1
|
+
# 基于 uniapp 开发框架 兼容各平台小程序 DataFlux RUM 数据采集 SDK
|
|
2
|
+
|
|
3
|
+
通过引入 sdk 文件,监控小程序性能指标,错误 log,以及资源请求情况数据,上报到 DataFlux 平台 datakit
|
|
3
4
|
|
|
4
5
|
## 使用方法
|
|
5
|
-
|
|
6
|
-
###
|
|
6
|
+
|
|
7
|
+
### 在 uniapp 项目入口文件`main.js`文件头部位置以如下方式引入代码
|
|
8
|
+
|
|
9
|
+
### npm 引入(可参考 uniapp 官方[npm 引入方式](https://uniapp.dcloud.net.cn/frame?id=npm%e6%94%af%e6%8c%81))
|
|
10
|
+
|
|
7
11
|
```javascript
|
|
8
12
|
//#ifndef H5 || APP-PLUS || APP-NVUE || APP-PLUS-NVUE
|
|
9
13
|
const { datafluxRum } = require('@cloudcare/rum-uniapp')
|
|
10
14
|
// 初始化 Rum
|
|
11
15
|
datafluxRum.init({
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
datakitOrigin: 'https://datakit.xxx.com/', // 必填,Datakit域名地址 需要在微信小程序管理后台加上域名白名单
|
|
17
|
+
applicationId: 'appid_xxxxxxx', // 必填,dataflux 平台生成的应用ID
|
|
18
|
+
env: 'testing', // 选填,小程序的环境
|
|
19
|
+
version: '1.0.0', // 选填,小程序版本
|
|
20
|
+
trackInteractions: true, // 用户行为数据
|
|
17
21
|
})
|
|
18
22
|
//#endif
|
|
19
23
|
```
|
|
24
|
+
|
|
20
25
|
### CDN 下载文件本地方式引入([下载地址](https://static.dataflux.cn/miniapp-sdk/v1/dataflux-rum-uniapp.js))
|
|
21
26
|
|
|
22
27
|
```javascript
|
|
@@ -24,11 +29,11 @@ datafluxRum.init({
|
|
|
24
29
|
const { datafluxRum } = require('@cloudcare/rum-uniapp')
|
|
25
30
|
// 初始化 Rum
|
|
26
31
|
datafluxRum.init({
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
+
datakitOrigin: 'https://datakit.xxx.com/', // 必填,Datakit域名地址 需要在微信小程序管理后台加上域名白名单
|
|
33
|
+
applicationId: 'appid_xxxxxxx', // 必填,dataflux 平台生成的应用ID
|
|
34
|
+
env: 'testing', // 选填,小程序的环境
|
|
35
|
+
version: '1.0.0', // 选填,小程序版本
|
|
36
|
+
trackInteractions: true, // 用户行为数据
|
|
32
37
|
})
|
|
33
38
|
//#endif
|
|
34
39
|
```
|
|
@@ -37,28 +42,31 @@ datafluxRum.init({
|
|
|
37
42
|
|
|
38
43
|
### 初始化参数
|
|
39
44
|
|
|
40
|
-
| 参数 | 类型 | 是否必须
|
|
41
|
-
| ----------------------------------------------- | -------- |
|
|
42
|
-
| `applicationId` | String | 是
|
|
43
|
-
| `datakitOrigin` | String | 是
|
|
44
|
-
| `
|
|
45
|
-
| `
|
|
46
|
-
| `
|
|
47
|
-
| `
|
|
48
|
-
| `
|
|
49
|
-
| `
|
|
50
|
-
| `
|
|
51
|
-
| `
|
|
52
|
-
| `
|
|
45
|
+
| 参数 | 类型 | 是否必须 | 默认值 | 描述 |
|
|
46
|
+
| ----------------------------------------------- | -------- | -------------------------------- | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
47
|
+
| `applicationId` | String | 是 | | 从 dataflux 创建的应用 ID |
|
|
48
|
+
| `datakitOrigin` | String | 是 | | datakit 数据上报 Origin;`注意:需要在小程序管理后台加上request白名单` |
|
|
49
|
+
| `site` | String | 是(`公网dataway`上报方式 必填) | | (SDK 版本要求 `> 2.1.20` )公网 DataWay 对应站点的域名 注释: `协议(包括://),域名(或IP地址)[和端口号]` 例如:https://www.datakit.com, http://100.20.34.3:8088 |
|
|
50
|
+
| `clientToken` | String | 是 (`公网dataway` 必填) | | (SDK 版本要求 `> 2.1.20` )公网 DataWay 上报所需的客户端 token,在观测云控制台创建应用时生成 |
|
|
51
|
+
| `env` | String | 否 | | 小程序 应用当前环境, 如 prod:线上环境;gray:灰度环境;pre:预发布环境 common:日常环境;local:本地环境; |
|
|
52
|
+
| `service` | String | 否 | | 小程序应用 服务名称,可 用于 apm 关联 tag |
|
|
53
|
+
| `version` | String | 否 | | 小程序 应用的版本号 |
|
|
54
|
+
| `sampleRate` | Number | 否 | `100` | 指标数据收集百分比: `100`表示全收集,`0`表示不收集 |
|
|
55
|
+
| `traceType` $\color{#FF0000}{新增}$ | Enum | 否 | `ddtrace` | 与 APM 采集工具连接的请求 header 类型,目前兼容的类型包括:`ddtrace`、`zipkin`、`skywalking_v3`、`jaeger`、`zipkin_single_header`、`w3c_traceparent`。_注: opentelemetry 支持 `zipkin_single_header`,`w3c_traceparent`,`zipkin`三种类型_ |
|
|
56
|
+
| `traceId128Bit` $\color{#FF0000}{新增}$ | Boolean | 否 | `false` | 是否以 128 位的方式生成 `traceID`,与`traceType` 对应,目前支持类型 `zipkin`、`jaeger` |
|
|
57
|
+
| `allowedTracingOrigins` $\color{#FF0000}{新增}$ | Array | 否 | `[]` | 允许注入 `trace` 采集器所需 header 头部的所有请求列表。可以是请求的 origin,也可以是是正则,origin: `协议(包括://),域名(或IP地址)[和端口号]` 例如:`["https://api.example.com", /https:\/\/.*\.my-api-domain\.com/]` |
|
|
58
|
+
| `trackInteractions` | Boolean | 否 | `false` | 是否开启用户行为采集 |
|
|
59
|
+
| `isIntakeUrl` | Function | 否 | `function(url) {return false}` | 自定义方法根据请求资源 url 判断是否需要采集对应资源数据,默认都采集。 返回:`false` 表示要采集,`true` 表示不需要采集 _该参数 方法返回结果必须为 Boolean 类型, 否则认为是无效参数_ |
|
|
53
60
|
|
|
54
61
|
## 注意事项
|
|
55
62
|
|
|
56
|
-
1. `datakitOrigin` 所对应的datakit域名必须在小程序管理后台加上request白名单
|
|
57
|
-
2. 目前各平台小程序在性能数据api暴露这块,并没有完善统一,所以导致一些性能数据并不能完善收集,比如`小程序启动`、`小程序包下载`、`脚本注入` 等一些数据除微信平台外,都有可能会存在缺失的情况。
|
|
58
|
-
3. 目前各平台小程序请求资源API`uni.request`、`uni.downloadFile`返回数据中`profile`字段目前只有微信小程序ios系统不支持返回,所以会导致收集的资源信息中和timing相关的数据收集不全。目前暂无解决方案,[request](https://developers.weixin.qq.com/miniprogram/dev/api/network/request/wx.request.html), [downloadFile](https://developers.weixin.qq.com/miniprogram/dev/api/network/download/wx.downloadFile.html) ;[API支持情况](https://developers.weixin.qq.com/community/develop/doc/000ecaa8b580c80601cac8e6f56000?highLine=%2520request%2520profile)
|
|
59
|
-
|
|
63
|
+
1. `datakitOrigin` 所对应的 datakit 域名必须在小程序管理后台加上 request 白名单
|
|
64
|
+
2. 目前各平台小程序在性能数据 api 暴露这块,并没有完善统一,所以导致一些性能数据并不能完善收集,比如`小程序启动`、`小程序包下载`、`脚本注入` 等一些数据除微信平台外,都有可能会存在缺失的情况。
|
|
65
|
+
3. 目前各平台小程序请求资源 API`uni.request`、`uni.downloadFile`返回数据中`profile`字段目前只有微信小程序 ios 系统不支持返回,所以会导致收集的资源信息中和 timing 相关的数据收集不全。目前暂无解决方案,[request](https://developers.weixin.qq.com/miniprogram/dev/api/network/request/wx.request.html), [downloadFile](https://developers.weixin.qq.com/miniprogram/dev/api/network/download/wx.downloadFile.html) ;[API 支持情况](https://developers.weixin.qq.com/community/develop/doc/000ecaa8b580c80601cac8e6f56000?highLine=%2520request%2520profile)
|
|
66
|
+
4. `trackInteractions` 用户行为采集开启后,因为微信小程序的限制,无法采集到控件的内容和结构数据,所以在小程序 SDK 里面我们采取的是声明式编程,通过在 模版 里面设置 data-name 属性,可以给 交互元素 添加名称,方便后续统计是定位操作记录, 例如:
|
|
67
|
+
|
|
60
68
|
```js
|
|
61
|
-
|
|
69
|
+
<button bindtap="bindSetData" data-name="setData">
|
|
70
|
+
setData
|
|
71
|
+
</button>
|
|
62
72
|
```
|
|
63
|
-
|
|
64
|
-
|
package/cjs/boot/buildEnv.js
CHANGED
|
@@ -4,8 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.buildEnv = void 0;
|
|
7
|
-
var buildEnv = {
|
|
8
|
-
sdkVersion: '2.1.
|
|
7
|
+
var buildEnv = exports.buildEnv = {
|
|
8
|
+
sdkVersion: '2.1.20',
|
|
9
9
|
sdkName: 'df_uniapp_rum_sdk'
|
|
10
|
-
};
|
|
11
|
-
exports.buildEnv = buildEnv;
|
|
10
|
+
};
|
package/cjs/boot/rum.entry.js
CHANGED
|
@@ -3,73 +3,53 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
7
|
-
|
|
6
|
+
exports.makeRum = exports.datafluxRum = void 0;
|
|
8
7
|
var _utils = require("../helper/utils");
|
|
9
|
-
|
|
10
8
|
var _rum = require("./rum");
|
|
11
|
-
|
|
12
9
|
var _enums = require("../helper/enums");
|
|
13
|
-
|
|
14
10
|
var _commonContext = require("../helper/commonContext");
|
|
15
|
-
|
|
16
11
|
var _boundedBuffer = require("../core/boundedBuffer");
|
|
17
|
-
|
|
18
12
|
var _contextManager = require("../core/contextManager");
|
|
19
|
-
|
|
20
13
|
var _heavyCustomerDataWarning = require("../core/heavyCustomerDataWarning");
|
|
21
|
-
|
|
22
14
|
var _user = require("../core/user");
|
|
23
|
-
|
|
24
15
|
var _sdk = require("../core/sdk");
|
|
25
|
-
|
|
26
|
-
var makeRum = function makeRum(startRumImpl) {
|
|
16
|
+
var makeRum = exports.makeRum = function makeRum(startRumImpl) {
|
|
27
17
|
var isAlreadyInitialized = false;
|
|
28
18
|
var globalContextManager = (0, _contextManager.createContextManager)(_heavyCustomerDataWarning.CustomerDataType.GlobalContext);
|
|
29
|
-
var userContextManager = (0, _contextManager.createContextManager)(_heavyCustomerDataWarning.CustomerDataType.User);
|
|
30
|
-
|
|
19
|
+
var userContextManager = (0, _contextManager.createContextManager)(_heavyCustomerDataWarning.CustomerDataType.User);
|
|
20
|
+
// var user = {}
|
|
31
21
|
var getInternalContextStrategy = function getInternalContextStrategy() {
|
|
32
22
|
return undefined;
|
|
33
23
|
};
|
|
34
|
-
|
|
35
24
|
var bufferApiCalls = new _boundedBuffer.BoundedBuffer();
|
|
36
|
-
|
|
37
25
|
var _addActionStrategy = function addActionStrategy(action, commonContext) {
|
|
38
26
|
if (typeof commonContext == 'undefined') {
|
|
39
27
|
commonContext = (0, _commonContext.buildCommonContext)(globalContextManager, userContextManager);
|
|
40
28
|
}
|
|
41
|
-
|
|
42
29
|
bufferApiCalls.add(function () {
|
|
43
30
|
return _addActionStrategy(action, commonContext);
|
|
44
31
|
});
|
|
45
32
|
};
|
|
46
|
-
|
|
47
33
|
var _addErrorStrategy = function addErrorStrategy(providedError, commonContext) {
|
|
48
34
|
if (typeof commonContext == 'undefined') {
|
|
49
35
|
commonContext = (0, _commonContext.buildCommonContext)(globalContextManager, userContextManager);
|
|
50
36
|
}
|
|
51
|
-
|
|
52
37
|
bufferApiCalls.add(function () {
|
|
53
38
|
return _addErrorStrategy(providedError, commonContext);
|
|
54
39
|
});
|
|
55
40
|
};
|
|
56
|
-
|
|
57
41
|
var rumGlobal = {
|
|
58
42
|
init: function init(Vue, userConfiguration) {
|
|
59
43
|
if (typeof userConfiguration === 'undefined') {
|
|
60
44
|
userConfiguration = {};
|
|
61
45
|
}
|
|
62
|
-
|
|
63
46
|
if (!Vue) return;
|
|
64
|
-
|
|
65
47
|
if (!canInitRum(userConfiguration)) {
|
|
66
48
|
return;
|
|
67
49
|
}
|
|
68
|
-
|
|
69
50
|
var _startRumImpl = startRumImpl(Vue, userConfiguration, function () {
|
|
70
51
|
return (0, _commonContext.buildCommonContext)(globalContextManager, userContextManager);
|
|
71
52
|
});
|
|
72
|
-
|
|
73
53
|
getInternalContextStrategy = _startRumImpl.getInternalContext;
|
|
74
54
|
_addActionStrategy = _startRumImpl.addAction;
|
|
75
55
|
_addErrorStrategy = _startRumImpl.addError;
|
|
@@ -77,7 +57,7 @@ var makeRum = function makeRum(startRumImpl) {
|
|
|
77
57
|
isAlreadyInitialized = true;
|
|
78
58
|
},
|
|
79
59
|
initVue3: function initVue3(userConfiguration) {
|
|
80
|
-
this.init({},
|
|
60
|
+
this.init({}, (0, _utils.extend2Lev)({
|
|
81
61
|
isVue2: false
|
|
82
62
|
}, userConfiguration));
|
|
83
63
|
},
|
|
@@ -120,38 +100,33 @@ var makeRum = function makeRum(startRumImpl) {
|
|
|
120
100
|
removeUser: userContextManager.clearContext
|
|
121
101
|
};
|
|
122
102
|
return rumGlobal;
|
|
123
|
-
|
|
124
103
|
function canInitRum(userConfiguration) {
|
|
125
104
|
if (!_sdk.sdk) {
|
|
126
105
|
console.error('DATAFLUX_RUM unsupport platform, Fail to start.');
|
|
127
106
|
return false;
|
|
128
107
|
}
|
|
129
|
-
|
|
130
108
|
if (isAlreadyInitialized) {
|
|
131
109
|
console.error('DATAFLUX_RUM is already initialized.');
|
|
132
110
|
return false;
|
|
133
111
|
}
|
|
134
|
-
|
|
135
112
|
if (!userConfiguration.applicationId) {
|
|
136
113
|
console.error('Application ID is not configured, no RUM data will be collected.');
|
|
137
114
|
return false;
|
|
138
115
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
116
|
+
if (!userConfiguration.site && !userConfiguration.datakitOrigin && !userConfiguration.datakitUrl) {
|
|
117
|
+
console.error('datakitOrigin or site is not configured, no RUM data will be collected.');
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
if (userConfiguration.site && !userConfiguration.clientToken) {
|
|
121
|
+
console.error('clientToken is not configured, no RUM data will be collected.');
|
|
142
122
|
return false;
|
|
143
123
|
}
|
|
144
|
-
|
|
145
124
|
if (userConfiguration.sampleRate !== undefined && !(0, _utils.isPercentage)(userConfiguration.sampleRate)) {
|
|
146
125
|
console.error('Sample Rate should be a number between 0 and 100');
|
|
147
126
|
return false;
|
|
148
127
|
}
|
|
149
|
-
|
|
150
128
|
return true;
|
|
151
129
|
}
|
|
152
130
|
};
|
|
153
|
-
|
|
154
|
-
exports.makeRum = makeRum;
|
|
155
|
-
var datafluxRum = makeRum(_rum.startRum);
|
|
156
|
-
exports.datafluxRum = datafluxRum;
|
|
131
|
+
var datafluxRum = exports.datafluxRum = makeRum(_rum.startRum);
|
|
157
132
|
(0, _utils.defineGlobal)((0, _utils.getGlobalObject)(), 'DATAFLUX_RUM_MIN', datafluxRum);
|
package/cjs/boot/rum.js
CHANGED
|
@@ -4,40 +4,23 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.startRum = void 0;
|
|
7
|
-
|
|
8
7
|
var _buildEnv = require("./buildEnv");
|
|
9
|
-
|
|
10
8
|
var _lifeCycle = require("../core/lifeCycle");
|
|
11
|
-
|
|
12
9
|
var _configuration = require("../core/configuration");
|
|
13
|
-
|
|
14
10
|
var _errorCollection = require("../rumEventsCollection/error/errorCollection");
|
|
15
|
-
|
|
16
11
|
var _assembly = require("../rumEventsCollection/assembly");
|
|
17
|
-
|
|
18
12
|
var _parentContexts = require("../rumEventsCollection/parentContexts");
|
|
19
|
-
|
|
20
13
|
var _batch = require("../rumEventsCollection/transport/batch");
|
|
21
|
-
|
|
22
14
|
var _viewCollection = require("../rumEventsCollection/page/viewCollection");
|
|
23
|
-
|
|
24
15
|
var _requestCollection = require("../rumEventsCollection/requestCollection");
|
|
25
|
-
|
|
26
16
|
var _resourceCollection = require("../rumEventsCollection/resource/resourceCollection");
|
|
27
|
-
|
|
28
17
|
var _appCollection = require("../rumEventsCollection/app/appCollection");
|
|
29
|
-
|
|
30
18
|
var _performanceCollection = require("../rumEventsCollection/performanceCollection");
|
|
31
|
-
|
|
32
19
|
var _setDataCollection = require("../rumEventsCollection/setDataCollection");
|
|
33
|
-
|
|
34
20
|
var _actionCollection = require("../rumEventsCollection/action/actionCollection");
|
|
35
|
-
|
|
36
21
|
var _sessionManagement = require("../core/sessionManagement");
|
|
37
|
-
|
|
38
22
|
var _internalContext = require("../rumEventsCollection/internalContext");
|
|
39
|
-
|
|
40
|
-
var startRum = function startRum(Vue, userConfiguration, getCommonContext) {
|
|
23
|
+
var startRum = exports.startRum = function startRum(Vue, userConfiguration, getCommonContext) {
|
|
41
24
|
var configuration = (0, _configuration.commonInit)(userConfiguration, _buildEnv.buildEnv);
|
|
42
25
|
var lifeCycle = new _lifeCycle.LifeCycle();
|
|
43
26
|
var parentContexts = (0, _parentContexts.startParentContexts)(lifeCycle);
|
|
@@ -47,21 +30,15 @@ var startRum = function startRum(Vue, userConfiguration, getCommonContext) {
|
|
|
47
30
|
(0, _appCollection.startAppCollection)(lifeCycle, configuration);
|
|
48
31
|
(0, _resourceCollection.startResourceCollection)(lifeCycle, configuration);
|
|
49
32
|
(0, _viewCollection.startViewCollection)(lifeCycle, configuration, Vue);
|
|
50
|
-
|
|
51
33
|
var _startErrorCollection = (0, _errorCollection.startErrorCollection)(lifeCycle, configuration);
|
|
52
|
-
|
|
53
34
|
(0, _requestCollection.startRequestCollection)(lifeCycle, configuration);
|
|
54
35
|
(0, _performanceCollection.startPagePerformanceObservable)(lifeCycle, configuration);
|
|
55
36
|
(0, _setDataCollection.startSetDataColloction)(lifeCycle, Vue);
|
|
56
|
-
|
|
57
37
|
var _startActionCollection = (0, _actionCollection.startActionCollection)(lifeCycle, configuration, Vue);
|
|
58
|
-
|
|
59
38
|
var internalContext = (0, _internalContext.startInternalContext)(userConfiguration.applicationId, session, parentContexts);
|
|
60
39
|
return {
|
|
61
40
|
addAction: _startActionCollection.addAction,
|
|
62
41
|
addError: _startErrorCollection.addError,
|
|
63
42
|
getInternalContext: internalContext.get
|
|
64
43
|
};
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
exports.startRum = startRum;
|
|
44
|
+
};
|
package/cjs/core/baseInfo.js
CHANGED
|
@@ -4,42 +4,33 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports["default"] = void 0;
|
|
7
|
-
|
|
8
7
|
var _sdk = require("../core/sdk");
|
|
9
|
-
|
|
10
8
|
var _utils = require("../helper/utils");
|
|
11
|
-
|
|
12
9
|
var _enums = require("../helper/enums");
|
|
13
|
-
|
|
10
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
14
11
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
15
|
-
|
|
16
|
-
function
|
|
17
|
-
|
|
18
|
-
function
|
|
19
|
-
|
|
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, _toPropertyKey(descriptor.key), descriptor); } }
|
|
13
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
14
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
15
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
20
16
|
var BaseInfo = /*#__PURE__*/function () {
|
|
21
17
|
function BaseInfo() {
|
|
22
18
|
_classCallCheck(this, BaseInfo);
|
|
23
|
-
|
|
24
19
|
this.getDeviceInfo();
|
|
25
20
|
this.getNetWork();
|
|
26
21
|
}
|
|
27
|
-
|
|
28
22
|
_createClass(BaseInfo, [{
|
|
29
23
|
key: "getDeviceInfo",
|
|
30
24
|
value: function getDeviceInfo() {
|
|
31
25
|
try {
|
|
32
26
|
var deviceInfo = _sdk.sdk.getSystemInfoSync();
|
|
33
|
-
|
|
34
27
|
var osInfo = deviceInfo.system.split(' ');
|
|
35
28
|
var osVersion = '';
|
|
36
|
-
|
|
37
29
|
if (osInfo.length > 1) {
|
|
38
30
|
osVersion = osInfo[1];
|
|
39
31
|
} else {
|
|
40
32
|
osVersion = osInfo[0] || '';
|
|
41
33
|
}
|
|
42
|
-
|
|
43
34
|
var osVersionMajor = osVersion && osVersion.split('.').length && osVersion.split('.')[0];
|
|
44
35
|
this.deviceInfo = {
|
|
45
36
|
screenSize: "".concat(deviceInfo.screenWidth, "*").concat(deviceInfo.screenHeight, " "),
|
|
@@ -63,26 +54,21 @@ var BaseInfo = /*#__PURE__*/function () {
|
|
|
63
54
|
key: "getClientID",
|
|
64
55
|
value: function getClientID() {
|
|
65
56
|
var clienetId = _sdk.sdk.getStorageSync(_enums.CLIENT_ID_TOKEN);
|
|
66
|
-
|
|
67
57
|
if (!clienetId) {
|
|
68
58
|
clienetId = (0, _utils.UUID)();
|
|
69
|
-
|
|
70
59
|
_sdk.sdk.setStorageSync(_enums.CLIENT_ID_TOKEN, clienetId);
|
|
71
60
|
}
|
|
72
|
-
|
|
73
61
|
return clienetId;
|
|
74
62
|
}
|
|
75
63
|
}, {
|
|
76
64
|
key: "getNetWork",
|
|
77
65
|
value: function getNetWork() {
|
|
78
66
|
var _this = this;
|
|
79
|
-
|
|
80
67
|
_sdk.sdk.getNetworkType({
|
|
81
68
|
success: function success(e) {
|
|
82
69
|
_this.deviceInfo.network = e.networkType ? e.networkType : 'unknown';
|
|
83
70
|
}
|
|
84
71
|
});
|
|
85
|
-
|
|
86
72
|
_sdk.sdk.onNetworkStatusChange(function (e) {
|
|
87
73
|
_this.deviceInfo.network = e.networkType ? e.networkType : 'unknown';
|
|
88
74
|
});
|
|
@@ -92,7 +78,6 @@ var BaseInfo = /*#__PURE__*/function () {
|
|
|
92
78
|
value: function getLaunchOptions() {
|
|
93
79
|
if (_sdk.sdk.getLaunchOptionsSync) {
|
|
94
80
|
var res = _sdk.sdk.getLaunchOptionsSync();
|
|
95
|
-
|
|
96
81
|
return {
|
|
97
82
|
query: res && res.query || {},
|
|
98
83
|
referrerInfo: res && res.referrerInfo || {}
|
|
@@ -102,10 +87,6 @@ var BaseInfo = /*#__PURE__*/function () {
|
|
|
102
87
|
}
|
|
103
88
|
}
|
|
104
89
|
}]);
|
|
105
|
-
|
|
106
90
|
return BaseInfo;
|
|
107
91
|
}();
|
|
108
|
-
|
|
109
|
-
var _default = new BaseInfo();
|
|
110
|
-
|
|
111
|
-
exports["default"] = _default;
|
|
92
|
+
var _default = exports["default"] = new BaseInfo();
|
|
@@ -4,19 +4,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.BoundedBuffer = void 0;
|
|
7
|
-
|
|
8
7
|
var _utils = require("../helper/utils");
|
|
9
|
-
|
|
10
8
|
var BUFFER_LIMIT = 500;
|
|
11
|
-
|
|
12
9
|
var _BoundedBuffer = function _BoundedBuffer() {
|
|
13
10
|
this.buffer = [];
|
|
14
11
|
};
|
|
15
|
-
|
|
16
12
|
_BoundedBuffer.prototype = {
|
|
17
13
|
add: function add(callback) {
|
|
18
14
|
var length = this.buffer.push(callback);
|
|
19
|
-
|
|
20
15
|
if (length > BUFFER_LIMIT) {
|
|
21
16
|
this.buffer.splice(0, 1);
|
|
22
17
|
}
|
|
@@ -28,5 +23,4 @@ _BoundedBuffer.prototype = {
|
|
|
28
23
|
this.buffer.length = 0;
|
|
29
24
|
}
|
|
30
25
|
};
|
|
31
|
-
var BoundedBuffer = _BoundedBuffer;
|
|
32
|
-
exports.BoundedBuffer = BoundedBuffer;
|
|
26
|
+
var BoundedBuffer = exports.BoundedBuffer = _BoundedBuffer;
|
|
@@ -3,33 +3,27 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.DEFAULT_CONFIGURATION = void 0;
|
|
6
7
|
exports.commonInit = commonInit;
|
|
7
8
|
exports.isIntakeRequest = isIntakeRequest;
|
|
8
|
-
exports.DEFAULT_CONFIGURATION = void 0;
|
|
9
|
-
|
|
10
9
|
var _utils = require("../helper/utils");
|
|
11
|
-
|
|
12
10
|
var _enums = require("../helper/enums");
|
|
13
|
-
|
|
14
11
|
var TRIM_REGIX = /^\s+|\s+$/g;
|
|
15
|
-
var DEFAULT_CONFIGURATION = {
|
|
12
|
+
var DEFAULT_CONFIGURATION = exports.DEFAULT_CONFIGURATION = {
|
|
16
13
|
sampleRate: 100,
|
|
17
14
|
flushTimeout: 30 * _enums.ONE_SECOND,
|
|
18
15
|
maxErrorsByMinute: 3000,
|
|
19
|
-
|
|
20
16
|
/**
|
|
21
17
|
* Logs intake limit
|
|
22
18
|
*/
|
|
23
19
|
maxBatchSize: 50,
|
|
24
20
|
maxMessageSize: 256 * _enums.ONE_KILO_BYTE,
|
|
25
|
-
|
|
26
21
|
/**
|
|
27
22
|
* beacon payload max queue size implementation is 64kb
|
|
28
23
|
* ensure that we leave room for logs, rum and potential other users
|
|
29
24
|
*/
|
|
30
25
|
batchBytesLimit: 16 * _enums.ONE_KILO_BYTE,
|
|
31
26
|
datakitUrl: '',
|
|
32
|
-
|
|
33
27
|
/**
|
|
34
28
|
* arbitrary value, byte precision not needed
|
|
35
29
|
*/
|
|
@@ -43,19 +37,24 @@ var DEFAULT_CONFIGURATION = {
|
|
|
43
37
|
isIntakeUrl: function isIntakeUrl(url) {
|
|
44
38
|
return false;
|
|
45
39
|
} // 自定义方法根据请求资源 url 判断是否需要采集对应资源数据,默认都采集。 返回:false 表示要采集,true 表示不需要采集
|
|
46
|
-
|
|
47
40
|
};
|
|
48
|
-
exports.DEFAULT_CONFIGURATION = DEFAULT_CONFIGURATION;
|
|
49
41
|
|
|
50
42
|
function trim(str) {
|
|
51
43
|
return str.replace(TRIM_REGIX, '');
|
|
52
44
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
45
|
+
function getDatakitEndPoint(configuration) {
|
|
46
|
+
var url = configuration.datakitOrigin || configuration.datakitUrl || configuration.site;
|
|
47
|
+
var endpoint = url;
|
|
48
|
+
if (url && url.lastIndexOf('/') === url.length - 1) {
|
|
49
|
+
endpoint = trim(url) + 'v1/write/rum';
|
|
50
|
+
} else {
|
|
51
|
+
endpoint = trim(url) + '/v1/write/rum';
|
|
52
|
+
}
|
|
53
|
+
if (configuration.site && configuration.clientToken) {
|
|
54
|
+
endpoint = endpoint + '?token=' + configuration.clientToken + '&to_headless=true';
|
|
55
|
+
}
|
|
56
|
+
return endpoint;
|
|
57
57
|
}
|
|
58
|
-
|
|
59
58
|
function commonInit(userConfiguration, buildEnv) {
|
|
60
59
|
var transportConfiguration = {
|
|
61
60
|
applicationId: userConfiguration.applicationId,
|
|
@@ -64,52 +63,41 @@ function commonInit(userConfiguration, buildEnv) {
|
|
|
64
63
|
service: userConfiguration.service || 'miniapp',
|
|
65
64
|
sdkVersion: buildEnv.sdkVersion,
|
|
66
65
|
sdkName: buildEnv.sdkName,
|
|
67
|
-
datakitUrl:
|
|
66
|
+
datakitUrl: getDatakitEndPoint(userConfiguration),
|
|
68
67
|
tags: userConfiguration.tags || []
|
|
69
68
|
};
|
|
70
|
-
|
|
71
69
|
if ('trackInteractions' in userConfiguration) {
|
|
72
70
|
transportConfiguration.trackInteractions = !!userConfiguration.trackInteractions;
|
|
73
71
|
}
|
|
74
|
-
|
|
75
72
|
if ('allowedTracingOrigins' in userConfiguration) {
|
|
76
73
|
transportConfiguration.allowedTracingOrigins = userConfiguration.allowedTracingOrigins;
|
|
77
74
|
}
|
|
78
|
-
|
|
79
75
|
if ('traceId128Bit' in userConfiguration) {
|
|
80
76
|
transportConfiguration.traceId128Bit = !!userConfiguration.traceId128Bit;
|
|
81
77
|
}
|
|
82
|
-
|
|
83
78
|
if ('traceType' in userConfiguration && hasTraceType(userConfiguration.traceType)) {
|
|
84
79
|
transportConfiguration.traceType = userConfiguration.traceType;
|
|
85
80
|
}
|
|
86
|
-
|
|
87
81
|
if ('sampleRate' in userConfiguration) {
|
|
88
82
|
transportConfiguration.sampleRate = userConfiguration.sampleRate;
|
|
89
83
|
}
|
|
90
|
-
|
|
91
84
|
if ('isVue2' in userConfiguration) {
|
|
92
85
|
transportConfiguration.isVue2 = userConfiguration.isVue2;
|
|
93
86
|
}
|
|
94
|
-
|
|
95
87
|
if ('isIntakeUrl' in userConfiguration && (0, _utils.isFunction)(userConfiguration.isIntakeUrl) && (0, _utils.isBoolean)(userConfiguration.isIntakeUrl())) {
|
|
96
88
|
transportConfiguration.isIntakeUrl = userConfiguration.isIntakeUrl;
|
|
97
89
|
}
|
|
98
|
-
|
|
99
90
|
return (0, _utils.extend2Lev)(DEFAULT_CONFIGURATION, transportConfiguration);
|
|
100
91
|
}
|
|
101
|
-
|
|
102
92
|
function hasTraceType(traceType) {
|
|
103
93
|
if (traceType && (0, _utils.values)(_enums.TraceType).indexOf(traceType) > -1) return true;
|
|
104
94
|
return false;
|
|
105
95
|
}
|
|
106
|
-
|
|
107
96
|
var haveSameOrigin = function haveSameOrigin(url1, url2) {
|
|
108
97
|
var parseUrl1 = (0, _utils.urlParse)(url1).getParse();
|
|
109
98
|
var parseUrl2 = (0, _utils.urlParse)(url2).getParse();
|
|
110
99
|
return parseUrl1.Origin === parseUrl2.Origin;
|
|
111
100
|
};
|
|
112
|
-
|
|
113
101
|
function isIntakeRequest(url, configuration) {
|
|
114
102
|
// return haveSameOrigin(url, configuration.datakitUrl)
|
|
115
103
|
return url.indexOf(configuration.datakitUrl) === 0 || configuration.isIntakeUrl(url);
|
|
@@ -3,33 +3,25 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.createContextManager = createContextManager;
|
|
7
6
|
exports.BYTES_COMPUTATION_THROTTLING_DELAY = void 0;
|
|
8
|
-
|
|
7
|
+
exports.createContextManager = createContextManager;
|
|
9
8
|
var _byteUtils = require("../helper/byteUtils");
|
|
10
|
-
|
|
11
9
|
var _utils = require("../helper/utils");
|
|
12
|
-
|
|
13
10
|
var _jsonStringify = require("../helper/jsonStringify");
|
|
14
|
-
|
|
15
11
|
var _heavyCustomerDataWarning = require("./heavyCustomerDataWarning");
|
|
16
|
-
|
|
17
|
-
var BYTES_COMPUTATION_THROTTLING_DELAY = 200;
|
|
18
|
-
exports.BYTES_COMPUTATION_THROTTLING_DELAY = BYTES_COMPUTATION_THROTTLING_DELAY;
|
|
19
|
-
|
|
12
|
+
var BYTES_COMPUTATION_THROTTLING_DELAY = exports.BYTES_COMPUTATION_THROTTLING_DELAY = 200;
|
|
20
13
|
function createContextManager(customerDataType, computeBytesCountImpl) {
|
|
21
14
|
if (typeof computeBytesCountImpl === 'undefined') {
|
|
22
15
|
computeBytesCountImpl = _byteUtils.computeBytesCount;
|
|
23
16
|
}
|
|
24
|
-
|
|
25
17
|
var context = {};
|
|
26
18
|
var bytesCountCache;
|
|
27
|
-
var alreadyWarned = false;
|
|
28
|
-
// Especially useful if the user call context APIs synchronously multiple times in a row
|
|
19
|
+
var alreadyWarned = false;
|
|
29
20
|
|
|
21
|
+
// Throttle the bytes computation to minimize the impact on performance.
|
|
22
|
+
// Especially useful if the user call context APIs synchronously multiple times in a row
|
|
30
23
|
var computeBytesCountThrottled = (0, _utils.throttle)(function (context) {
|
|
31
24
|
bytesCountCache = computeBytesCountImpl((0, _jsonStringify.jsonStringify)(context));
|
|
32
|
-
|
|
33
25
|
if (!alreadyWarned) {
|
|
34
26
|
alreadyWarned = (0, _heavyCustomerDataWarning.warnIfCustomerDataLimitReached)(bytesCountCache, customerDataType);
|
|
35
27
|
}
|
|
@@ -38,24 +30,20 @@ function createContextManager(customerDataType, computeBytesCountImpl) {
|
|
|
38
30
|
getBytesCount: function getBytesCount() {
|
|
39
31
|
return bytesCountCache;
|
|
40
32
|
},
|
|
41
|
-
|
|
42
33
|
/** @deprecated use getContext instead */
|
|
43
34
|
get: function get() {
|
|
44
35
|
return context;
|
|
45
36
|
},
|
|
46
|
-
|
|
47
37
|
/** @deprecated use setContextProperty instead */
|
|
48
38
|
add: function add(key, value) {
|
|
49
39
|
context[key] = value;
|
|
50
40
|
computeBytesCountThrottled(context);
|
|
51
41
|
},
|
|
52
|
-
|
|
53
42
|
/** @deprecated renamed to removeContextProperty */
|
|
54
43
|
remove: function remove(key) {
|
|
55
44
|
delete context[key];
|
|
56
45
|
computeBytesCountThrottled(context);
|
|
57
46
|
},
|
|
58
|
-
|
|
59
47
|
/** @deprecated use setContext instead */
|
|
60
48
|
set: function set(newContext) {
|
|
61
49
|
context = newContext;
|