@cloudcare/rum-uniapp 2.0.1 → 2.1.3

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 (48) hide show
  1. package/README.md +11 -8
  2. package/cjs/boot/buildEnv.js +1 -1
  3. package/cjs/boot/rum.entry.js +24 -8
  4. package/cjs/boot/rum.js +14 -2
  5. package/cjs/core/baseInfo.js +0 -6
  6. package/cjs/core/configuration.js +4 -0
  7. package/cjs/core/errorCollection.js +5 -6
  8. package/cjs/core/errorFilter.js +47 -0
  9. package/cjs/core/errorTools.js +16 -8
  10. package/cjs/core/lifeCycle.js +1 -0
  11. package/cjs/core/sdk.js +0 -1
  12. package/cjs/core/sessionManagement.js +45 -0
  13. package/cjs/core/transport.js +0 -9
  14. package/cjs/helper/enums.js +13 -7
  15. package/cjs/helper/limitModification.js +83 -0
  16. package/cjs/helper/tracekit.js +1 -1
  17. package/cjs/helper/utils.js +86 -1
  18. package/cjs/rumEventsCollection/action/actionCollection.js +19 -1
  19. package/cjs/rumEventsCollection/app/appCollection.js +0 -1
  20. package/cjs/rumEventsCollection/assembly.js +25 -15
  21. package/cjs/rumEventsCollection/error/errorCollection.js +37 -5
  22. package/cjs/rumEventsCollection/internalContext.js +34 -0
  23. package/cjs/rumEventsCollection/page/index.js +1 -0
  24. package/cjs/rumEventsCollection/resource/resourceCollection.js +0 -1
  25. package/esm/boot/buildEnv.js +1 -1
  26. package/esm/boot/rum.entry.js +24 -9
  27. package/esm/boot/rum.js +12 -2
  28. package/esm/core/baseInfo.js +0 -5
  29. package/esm/core/configuration.js +4 -0
  30. package/esm/core/errorCollection.js +5 -6
  31. package/esm/core/errorFilter.js +38 -0
  32. package/esm/core/errorTools.js +14 -8
  33. package/esm/core/lifeCycle.js +1 -0
  34. package/esm/core/sdk.js +0 -1
  35. package/esm/core/sessionManagement.js +20 -0
  36. package/esm/core/transport.js +0 -9
  37. package/esm/helper/enums.js +8 -2
  38. package/esm/helper/limitModification.js +57 -0
  39. package/esm/helper/tracekit.js +1 -1
  40. package/esm/helper/utils.js +68 -0
  41. package/esm/rumEventsCollection/action/actionCollection.js +20 -2
  42. package/esm/rumEventsCollection/app/appCollection.js +0 -1
  43. package/esm/rumEventsCollection/assembly.js +24 -16
  44. package/esm/rumEventsCollection/error/errorCollection.js +36 -5
  45. package/esm/rumEventsCollection/internalContext.js +27 -0
  46. package/esm/rumEventsCollection/page/index.js +1 -0
  47. package/esm/rumEventsCollection/resource/resourceCollection.js +0 -1
  48. 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` | 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
- | `trackInteractions` | Boolean | 否 | `false` | 是否开启用户行为采集 |
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
 
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.buildEnv = void 0;
7
7
  var buildEnv = {
8
- sdkVersion: '2.0.1',
8
+ sdkVersion: '2.1.3',
9
9
  sdkName: 'df_uniapp_rum_sdk'
10
10
  };
11
11
  exports.buildEnv = buildEnv;
@@ -9,6 +9,8 @@ var _utils = require("../helper/utils");
9
9
 
10
10
  var _rum = require("./rum");
11
11
 
12
+ var _enums = require("../helper/enums");
13
+
12
14
  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); }
13
15
 
14
16
  var makeRum = function makeRum(startRumImpl) {
@@ -16,12 +18,9 @@ var makeRum = function makeRum(startRumImpl) {
16
18
  var globalContextManager = (0, _utils.createContextManager)();
17
19
  var user = {};
18
20
 
19
- function clonedCommonContext() {
20
- return (0, _utils.extend2Lev)({}, {
21
- context: globalContextManager.get(),
22
- user: user
23
- });
24
- }
21
+ var _getInternalContext = function getInternalContext() {};
22
+
23
+ var addActionStrategy = function addActionStrategy() {};
25
24
 
26
25
  var rumGlobal = {
27
26
  init: function init(Vue, userConfiguration) {
@@ -35,18 +34,34 @@ var makeRum = function makeRum(startRumImpl) {
35
34
  return;
36
35
  }
37
36
 
38
- startRumImpl(Vue, userConfiguration, function () {
37
+ var _startRumImpl = startRumImpl(Vue, userConfiguration, function () {
39
38
  return {
40
39
  user: user,
41
40
  context: globalContextManager.get()
42
41
  };
43
42
  });
43
+
44
+ _getInternalContext = _startRumImpl.getInternalContext;
45
+ addActionStrategy = _startRumImpl.addAction;
44
46
  isAlreadyInitialized = true;
45
47
  },
48
+ getInternalContext: function getInternalContext(startTime) {
49
+ return _getInternalContext(startTime);
50
+ },
46
51
  addRumGlobalContext: globalContextManager.add,
47
52
  removeRumGlobalContext: globalContextManager.remove,
48
53
  getRumGlobalContext: globalContextManager.get,
49
54
  setRumGlobalContext: globalContextManager.set,
55
+ addAction: function addAction(name, context) {
56
+ if ((0, _utils.isObject)(context) && (0, _utils.isString)(name)) {
57
+ addActionStrategy({
58
+ name: name,
59
+ context: (0, _utils.extend2Lev)({}, context),
60
+ startClocks: (0, _utils.now)(),
61
+ type: _enums.ActionType.custom
62
+ });
63
+ }
64
+ },
50
65
  setUser: function setUser(newUser) {
51
66
  var sanitizedUser = sanitizeUser(newUser);
52
67
 
@@ -111,4 +126,5 @@ var makeRum = function makeRum(startRumImpl) {
111
126
 
112
127
  exports.makeRum = makeRum;
113
128
  var datafluxRum = makeRum(_rum.startRum);
114
- exports.datafluxRum = datafluxRum;
129
+ exports.datafluxRum = datafluxRum;
130
+ (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
- (0, _assembly.startRumAssembly)(userConfiguration.applicationId, configuration, lifeCycle, parentContexts, getCommonContext);
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);
@@ -48,7 +53,14 @@ var startRum = function startRum(Vue, userConfiguration, getCommonContext) {
48
53
  (0, _requestCollection.startRequestCollection)(lifeCycle, configuration);
49
54
  (0, _performanceCollection.startPagePerformanceObservable)(lifeCycle, configuration);
50
55
  (0, _setDataCollection.startSetDataColloction)(lifeCycle, Vue);
51
- (0, _actionCollection.startActionCollection)(lifeCycle, configuration, Vue);
56
+
57
+ var _startActionCollection = (0, _actionCollection.startActionCollection)(lifeCycle, configuration, Vue);
58
+
59
+ var internalContext = (0, _internalContext.startInternalContext)(userConfiguration.applicationId, session, parentContexts);
60
+ return {
61
+ addAction: _startActionCollection.addAction,
62
+ getInternalContext: internalContext.get
63
+ };
52
64
  };
53
65
 
54
66
  exports.startRum = startRum;
@@ -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 filteredErrorsObservable;
109
+ var errorObservable;
110
110
 
111
111
  function startAutomaticErrorCollection(configuration) {
112
- if (!filteredErrorsObservable) {
113
- var errorObservable = new _observable.Observable();
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 filteredErrorsObservable;
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
+ }
@@ -6,12 +6,16 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.formatUnknownError = formatUnknownError;
7
7
  exports.toStackTraceString = toStackTraceString;
8
8
  exports.ErrorSource = void 0;
9
+
10
+ var _utils = require("../helper/utils");
11
+
9
12
  var ErrorSource = {
10
13
  AGENT: 'agent',
11
14
  CONSOLE: 'console',
12
15
  NETWORK: 'network',
13
16
  SOURCE: 'source',
14
- LOGGER: 'logger'
17
+ LOGGER: 'logger',
18
+ CUSTOM: 'custom'
15
19
  };
16
20
  exports.ErrorSource = ErrorSource;
17
21
 
@@ -33,12 +37,16 @@ function formatUnknownError(stackTrace, errorObject, nonErrorPrefix) {
33
37
 
34
38
  function toStackTraceString(stack) {
35
39
  var result = stack.name || 'Error' + ': ' + stack.message;
36
- stack.stack.forEach(function (frame) {
37
- var func = frame.func === '?' ? '<anonymous>' : frame.func;
38
- var args = frame.args && frame.args.length > 0 ? '(' + frame.args.join(', ') + ')' : '';
39
- var line = frame.line ? ':' + frame.line : '';
40
- var column = frame.line && frame.column ? ':' + frame.column : '';
41
- result += '\n at ' + func + args + ' @ ' + frame.url + line + column;
42
- });
40
+
41
+ if ((0, _utils.isArray)(stack.stack)) {
42
+ stack.stack.forEach(function (frame) {
43
+ var func = frame.func === '?' ? '<anonymous>' : frame.func;
44
+ var args = frame.args && frame.args.length > 0 ? '(' + frame.args.join(', ') + ')' : '';
45
+ var line = frame.line ? ':' + frame.line : '';
46
+ var column = frame.line && frame.column ? ':' + frame.column : '';
47
+ result += '\n at ' + func + args + ' @ ' + frame.url + line + column;
48
+ });
49
+ }
50
+
43
51
  return result;
44
52
  }
@@ -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
@@ -43,7 +43,6 @@ function getSDK() {
43
43
  console.warn('unsupport platform, Fail to start');
44
44
  }
45
45
 
46
- console.log('------get SDK-------');
47
46
  return {
48
47
  sdk: sdk,
49
48
  tracker: tracker
@@ -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;
@@ -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
  }
@@ -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',
@@ -36,7 +36,8 @@ exports.RequestType = RequestType;
36
36
  var ActionType = {
37
37
  tap: 'tap',
38
38
  longpress: 'longpress',
39
- longtap: 'longtap'
39
+ longtap: 'longtap',
40
+ custom: 'custom'
40
41
  };
41
42
  exports.ActionType = ActionType;
42
43
  var MpHook = {
@@ -61,4 +62,9 @@ var TraceType = {
61
62
  SKYWALKING_V3: 'skywalking_v3',
62
63
  JAEGER: 'jaeger'
63
64
  };
64
- exports.TraceType = TraceType;
65
+ exports.TraceType = TraceType;
66
+ var ErrorHandling = {
67
+ HANDLED: 'handled',
68
+ UNHANDLED: 'unhandled'
69
+ };
70
+ 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
+ }
@@ -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; // console.log('message',message)
922
+ var message = ex && ex.message;
923
923
 
924
924
  if (!message) {
925
925
  return 'No error message';
@@ -23,7 +23,10 @@ exports.escapeRowData = escapeRowData;
23
23
  exports.getOrigin = getOrigin;
24
24
  exports.createContextManager = createContextManager;
25
25
  exports.getActivePage = getActivePage;
26
- 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.values = exports.each = exports.isArguments = void 0;
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
  }