@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.
Files changed (105) hide show
  1. package/README.md +42 -34
  2. package/cjs/boot/buildEnv.js +3 -4
  3. package/cjs/boot/rum.entry.js +12 -37
  4. package/cjs/boot/rum.js +2 -25
  5. package/cjs/core/baseInfo.js +6 -25
  6. package/cjs/core/boundedBuffer.js +1 -7
  7. package/cjs/core/configuration.js +15 -27
  8. package/cjs/core/contextManager.js +5 -17
  9. package/cjs/core/dataMap.js +5 -10
  10. package/cjs/core/downloadProxy.js +4 -26
  11. package/cjs/core/errorCollection.js +5 -35
  12. package/cjs/core/errorFilter.js +0 -8
  13. package/cjs/core/errorTools.js +2 -10
  14. package/cjs/core/heavyCustomerDataWarning.js +3 -9
  15. package/cjs/core/lifeCycle.js +8 -18
  16. package/cjs/core/observable.js +7 -13
  17. package/cjs/core/sdk.js +4 -13
  18. package/cjs/core/sessionManagement.js +8 -17
  19. package/cjs/core/transport.js +6 -53
  20. package/cjs/core/user.js +2 -7
  21. package/cjs/core/xhrProxy.js +4 -26
  22. package/cjs/helper/byteUtils.js +6 -12
  23. package/cjs/helper/commonContext.js +2 -3
  24. package/cjs/helper/enums.js +17 -28
  25. package/cjs/helper/jsonStringify.js +5 -12
  26. package/cjs/helper/limitModification.js +3 -21
  27. package/cjs/helper/tracekit.js +33 -145
  28. package/cjs/helper/utils.js +92 -306
  29. package/cjs/index.js +0 -1
  30. package/cjs/rumEventsCollection/action/actionCollection.js +0 -9
  31. package/cjs/rumEventsCollection/action/trackActions.js +6 -28
  32. package/cjs/rumEventsCollection/app/appCollection.js +0 -6
  33. package/cjs/rumEventsCollection/app/index.js +14 -26
  34. package/cjs/rumEventsCollection/assembly.js +0 -14
  35. package/cjs/rumEventsCollection/error/errorCollection.js +1 -16
  36. package/cjs/rumEventsCollection/internalContext.js +0 -2
  37. package/cjs/rumEventsCollection/page/index.js +5 -43
  38. package/cjs/rumEventsCollection/page/viewCollection.js +0 -8
  39. package/cjs/rumEventsCollection/parentContexts.js +3 -20
  40. package/cjs/rumEventsCollection/performanceCollection.js +0 -4
  41. package/cjs/rumEventsCollection/requestCollection.js +1 -14
  42. package/cjs/rumEventsCollection/resource/resourceCollection.js +0 -11
  43. package/cjs/rumEventsCollection/resource/resourceUtils.js +50 -46
  44. package/cjs/rumEventsCollection/setDataCollection.js +0 -16
  45. package/cjs/rumEventsCollection/tracing/ddtraceTracer.js +0 -6
  46. package/cjs/rumEventsCollection/tracing/jaegerTracer.js +3 -9
  47. package/cjs/rumEventsCollection/tracing/skywalkingTracer.js +3 -10
  48. package/cjs/rumEventsCollection/tracing/tracer.js +1 -25
  49. package/cjs/rumEventsCollection/tracing/w3cTraceParentTracer.js +1 -6
  50. package/cjs/rumEventsCollection/tracing/zipkinMultiTracer.js +3 -10
  51. package/cjs/rumEventsCollection/tracing/zipkinSingleTracer.js +1 -6
  52. package/cjs/rumEventsCollection/trackEventCounts.js +0 -8
  53. package/cjs/rumEventsCollection/trackPageActiveites.js +10 -33
  54. package/cjs/rumEventsCollection/transport/batch.js +0 -9
  55. package/esm/boot/buildEnv.js +1 -1
  56. package/esm/boot/rum.entry.js +9 -21
  57. package/esm/boot/rum.js +0 -4
  58. package/esm/core/baseInfo.js +0 -11
  59. package/esm/core/boundedBuffer.js +0 -3
  60. package/esm/core/configuration.js +13 -21
  61. package/esm/core/contextManager.js +3 -8
  62. package/esm/core/dataMap.js +2 -2
  63. package/esm/core/downloadProxy.js +2 -17
  64. package/esm/core/errorCollection.js +2 -15
  65. package/esm/core/errorFilter.js +0 -5
  66. package/esm/core/errorTools.js +0 -3
  67. package/esm/core/heavyCustomerDataWarning.js +3 -3
  68. package/esm/core/lifeCycle.js +0 -5
  69. package/esm/core/observable.js +0 -3
  70. package/esm/core/sdk.js +1 -6
  71. package/esm/core/sessionManagement.js +0 -3
  72. package/esm/core/transport.js +4 -38
  73. package/esm/core/user.js +2 -4
  74. package/esm/core/xhrProxy.js +2 -17
  75. package/esm/helper/byteUtils.js +4 -7
  76. package/esm/helper/commonContext.js +2 -2
  77. package/esm/helper/jsonStringify.js +4 -7
  78. package/esm/helper/limitModification.js +1 -11
  79. package/esm/helper/tracekit.js +30 -130
  80. package/esm/helper/utils.js +27 -125
  81. package/esm/rumEventsCollection/action/actionCollection.js +0 -4
  82. package/esm/rumEventsCollection/action/trackActions.js +6 -20
  83. package/esm/rumEventsCollection/app/appCollection.js +0 -1
  84. package/esm/rumEventsCollection/app/index.js +12 -18
  85. package/esm/rumEventsCollection/assembly.js +0 -6
  86. package/esm/rumEventsCollection/error/errorCollection.js +0 -7
  87. package/esm/rumEventsCollection/internalContext.js +0 -1
  88. package/esm/rumEventsCollection/page/index.js +5 -37
  89. package/esm/rumEventsCollection/page/viewCollection.js +0 -3
  90. package/esm/rumEventsCollection/parentContexts.js +0 -10
  91. package/esm/rumEventsCollection/requestCollection.js +0 -4
  92. package/esm/rumEventsCollection/resource/resourceCollection.js +0 -5
  93. package/esm/rumEventsCollection/resource/resourceUtils.js +48 -39
  94. package/esm/rumEventsCollection/setDataCollection.js +0 -13
  95. package/esm/rumEventsCollection/tracing/ddtraceTracer.js +0 -4
  96. package/esm/rumEventsCollection/tracing/jaegerTracer.js +3 -7
  97. package/esm/rumEventsCollection/tracing/skywalkingTracer.js +5 -9
  98. package/esm/rumEventsCollection/tracing/tracer.js +0 -14
  99. package/esm/rumEventsCollection/tracing/w3cTraceParentTracer.js +1 -4
  100. package/esm/rumEventsCollection/tracing/zipkinMultiTracer.js +3 -8
  101. package/esm/rumEventsCollection/tracing/zipkinSingleTracer.js +1 -4
  102. package/esm/rumEventsCollection/trackEventCounts.js +0 -4
  103. package/esm/rumEventsCollection/trackPageActiveites.js +9 -22
  104. package/esm/rumEventsCollection/transport/batch.js +0 -5
  105. package/package.json +6 -3
package/README.md CHANGED
@@ -1,22 +1,27 @@
1
- # 基于uniapp开发框架 兼容各平台小程序 DataFlux RUM 数据采集SDK
2
- 通过引入sdk文件,监控小程序性能指标,错误log,以及资源请求情况数据,上报到DataFlux 平台datakit
1
+ # 基于 uniapp 开发框架 兼容各平台小程序 DataFlux RUM 数据采集 SDK
2
+
3
+ 通过引入 sdk 文件,监控小程序性能指标,错误 log,以及资源请求情况数据,上报到 DataFlux 平台 datakit
3
4
 
4
5
  ## 使用方法
5
- ### 在uniapp项目入口文件`main.js`文件头部位置以如下方式引入代码
6
- ### npm 引入(可参考uniapp官方[npm引入方式](https://uniapp.dcloud.net.cn/frame?id=npm%e6%94%af%e6%8c%81))
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
- datakitOrigin: 'https://datakit.xxx.com/',// 必填,Datakit域名地址 需要在微信小程序管理后台加上域名白名单
13
- applicationId: 'appid_xxxxxxx', // 必填,dataflux 平台生成的应用ID
14
- env: 'testing', // 选填,小程序的环境
15
- version: '1.0.0', // 选填,小程序版本
16
- trackInteractions: true, // 用户行为数据
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
- datakitOrigin: 'https://datakit.xxx.com/',// 必填,Datakit域名地址 需要在微信小程序管理后台加上域名白名单
28
- applicationId: 'appid_xxxxxxx', // 必填,dataflux 平台生成的应用ID
29
- env: 'testing', // 选填,小程序的环境
30
- version: '1.0.0', // 选填,小程序版本
31
- trackInteractions: true, // 用户行为数据
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 | 是 | | 从 dataflux 创建的应用 ID |
43
- | `datakitOrigin` | String | 是 | | datakit 数据上报 Origin;`注意:需要在小程序管理后台加上request白名单` |
44
- | `env` | String | | | 小程序 应用当前环境, prod:线上环境;gray:灰度环境;pre:预发布环境 common:日常环境;local:本地环境; |
45
- | `service` | String | | | 小程序应用 服务名称,可 用于 apm 关联 tag |
46
- | `version` | String | 否 | | 小程序 应用的版本号 |
47
- | `sampleRate` | Number | 否 | `100` | 指标数据收集百分比: `100`表示全收集,`0`表示不收集 |
48
- | `traceType` $\color{#FF0000}{新增}$ | Enum | 否 | `ddtrace` | APM 采集工具连接的请求header类型,目前兼容的类型包括:`ddtrace`、`zipkin`、`skywalking_v3`、`jaeger`、`zipkin_single_header`、`w3c_traceparent`。*注: opentelemetry 支持 `zipkin_single_header`,`w3c_traceparent`,`zipkin`三种类型* |
49
- | `traceId128Bit` $\color{#FF0000}{新增}$ | Boolean | 否 | `false` | 是否以128位的方式生成 `traceID`,与`traceType` 对应,目前支持类型 `zipkin`、`jaeger` |
50
- | `allowedTracingOrigins` $\color{#FF0000}{新增}$ | Array | 否 | `[]` | 允许注入 `trace` 采集器所需header头部的所有请求列表。可以是请求的origin,也可以是是正则,origin: `协议(包括://),域名(或IP地址)[和端口号]` 例如:`["https://api.example.com", /https:\/\/.*\.my-api-domain\.com/]` |
51
- | `trackInteractions` | Boolean | 否 | `false` | 是否开启用户行为采集 |
52
- | `isIntakeUrl` | Function | 否 | `function(url) {return false}` | 自定义方法根据请求资源 url 判断是否需要采集对应资源数据,默认都采集。 返回:`false` 表示要采集,`true` 表示不需要采集 *该参数 方法返回结果必须为 Boolean 类型, 否则认为是无效参数* |
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
- 3. `trackInteractions` 用户行为采集开启后,因为微信小程序的限制,无法采集到控件的内容和结构数据,所以在小程序 SDK 里面我们采取的是声明式编程,通过在 模版 里面设置 data-name 属性,可以给 交互元素 添加名称,方便后续统计是定位操作记录, 例如:
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
- <button bindtap="bindSetData" data-name="setData">setData</button>
69
+ <button bindtap="bindSetData" data-name="setData">
70
+ setData
71
+ </button>
62
72
  ```
63
-
64
-
@@ -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.17',
7
+ var buildEnv = exports.buildEnv = {
8
+ sdkVersion: '2.1.20',
9
9
  sdkName: 'df_uniapp_rum_sdk'
10
- };
11
- exports.buildEnv = buildEnv;
10
+ };
@@ -3,73 +3,53 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.datafluxRum = exports.makeRum = void 0;
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); // var 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({}, extend({
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
- if (!userConfiguration.datakitOrigin) {
141
- console.error('datakitOrigin is not configured, no RUM data will be collected.');
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
+ };
@@ -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 _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); } }
17
-
18
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
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
- function getDatakitUrlUrl(url) {
55
- if (url && url.lastIndexOf('/') === url.length - 1) return trim(url) + 'v1/write/rum';
56
- return trim(url) + '/v1/write/rum';
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: getDatakitUrlUrl(userConfiguration.datakitUrl || userConfiguration.datakitOrigin),
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; // Throttle the bytes computation to minimize the impact on performance.
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;