@cloudcare/rum-uniapp 1.0.3 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +11 -8
  2. package/cjs/boot/buildEnv.js +1 -1
  3. package/cjs/boot/rum.entry.js +73 -2
  4. package/cjs/boot/rum.js +15 -3
  5. package/cjs/core/baseInfo.js +0 -6
  6. package/cjs/core/boundedBuffer.js +28 -0
  7. package/cjs/core/configuration.js +26 -1
  8. package/cjs/core/dataMap.js +5 -1
  9. package/cjs/core/errorCollection.js +5 -6
  10. package/cjs/core/errorFilter.js +47 -0
  11. package/cjs/core/errorTools.js +2 -1
  12. package/cjs/core/lifeCycle.js +1 -0
  13. package/cjs/core/sdk.js +0 -1
  14. package/cjs/core/sessionManagement.js +45 -0
  15. package/cjs/core/transport.js +114 -69
  16. package/cjs/core/xhrProxy.js +3 -2
  17. package/cjs/helper/enums.js +22 -7
  18. package/cjs/helper/limitModification.js +83 -0
  19. package/cjs/helper/tracekit.js +1 -1
  20. package/cjs/helper/utils.js +248 -6
  21. package/cjs/rumEventsCollection/action/actionCollection.js +19 -1
  22. package/cjs/rumEventsCollection/app/appCollection.js +0 -1
  23. package/cjs/rumEventsCollection/assembly.js +41 -14
  24. package/cjs/rumEventsCollection/error/errorCollection.js +37 -5
  25. package/cjs/rumEventsCollection/internalContext.js +34 -0
  26. package/cjs/rumEventsCollection/page/index.js +2 -11
  27. package/cjs/rumEventsCollection/requestCollection.js +9 -2
  28. package/cjs/rumEventsCollection/resource/resourceCollection.js +20 -2
  29. package/cjs/rumEventsCollection/tracing/ddtraceTracer.js +50 -0
  30. package/cjs/rumEventsCollection/tracing/jaegerTracer.js +58 -0
  31. package/cjs/rumEventsCollection/tracing/skywalkingTracer.js +75 -0
  32. package/cjs/rumEventsCollection/tracing/tracer.js +108 -0
  33. package/cjs/rumEventsCollection/tracing/w3cTraceParentTracer.js +51 -0
  34. package/cjs/rumEventsCollection/tracing/zipkinMultiTracer.js +58 -0
  35. package/cjs/rumEventsCollection/tracing/zipkinSingleTracer.js +51 -0
  36. package/esm/boot/buildEnv.js +1 -1
  37. package/esm/boot/rum.entry.js +71 -3
  38. package/esm/boot/rum.js +13 -3
  39. package/esm/core/baseInfo.js +0 -5
  40. package/esm/core/boundedBuffer.js +20 -0
  41. package/esm/core/configuration.js +28 -3
  42. package/esm/core/dataMap.js +5 -1
  43. package/esm/core/errorCollection.js +5 -6
  44. package/esm/core/errorFilter.js +38 -0
  45. package/esm/core/errorTools.js +2 -1
  46. package/esm/core/lifeCycle.js +1 -0
  47. package/esm/core/sdk.js +0 -1
  48. package/esm/core/sessionManagement.js +20 -0
  49. package/esm/core/transport.js +111 -70
  50. package/esm/core/xhrProxy.js +3 -2
  51. package/esm/helper/enums.js +16 -2
  52. package/esm/helper/limitModification.js +57 -0
  53. package/esm/helper/tracekit.js +1 -1
  54. package/esm/helper/utils.js +213 -5
  55. package/esm/rumEventsCollection/action/actionCollection.js +20 -2
  56. package/esm/rumEventsCollection/app/appCollection.js +0 -1
  57. package/esm/rumEventsCollection/assembly.js +40 -15
  58. package/esm/rumEventsCollection/error/errorCollection.js +36 -5
  59. package/esm/rumEventsCollection/internalContext.js +27 -0
  60. package/esm/rumEventsCollection/page/index.js +2 -11
  61. package/esm/rumEventsCollection/requestCollection.js +8 -2
  62. package/esm/rumEventsCollection/resource/resourceCollection.js +21 -3
  63. package/esm/rumEventsCollection/tracing/ddtraceTracer.js +42 -0
  64. package/esm/rumEventsCollection/tracing/jaegerTracer.js +50 -0
  65. package/esm/rumEventsCollection/tracing/skywalkingTracer.js +66 -0
  66. package/esm/rumEventsCollection/tracing/tracer.js +90 -0
  67. package/esm/rumEventsCollection/tracing/w3cTraceParentTracer.js +43 -0
  68. package/esm/rumEventsCollection/tracing/zipkinMultiTracer.js +50 -0
  69. package/esm/rumEventsCollection/tracing/zipkinSingleTracer.js +43 -0
  70. package/package.json +1 -1
@@ -3,7 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- 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 = {
@@ -52,4 +53,18 @@ var MpHook = {
52
53
  onHide: 1,
53
54
  onUnload: 1
54
55
  };
55
- exports.MpHook = MpHook;
56
+ exports.MpHook = MpHook;
57
+ var TraceType = {
58
+ DDTRACE: 'ddtrace',
59
+ ZIPKIN_MULTI_HEADER: 'zipkin',
60
+ ZIPKIN_SINGLE_HEADER: 'zipkin_single_header',
61
+ W3C_TRACEPARENT: 'w3c_traceparent',
62
+ SKYWALKING_V3: 'skywalking_v3',
63
+ JAEGER: 'jaeger'
64
+ };
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';
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.round = round;
7
+ exports.toServerDuration = toServerDuration;
7
8
  exports.msToNs = msToNs;
8
9
  exports.UUID = UUID;
9
10
  exports.jsonStringify = jsonStringify;
@@ -19,7 +20,13 @@ exports.withSnakeCaseKeys = withSnakeCaseKeys;
19
20
  exports.deepSnakeCase = deepSnakeCase;
20
21
  exports.toSnakeCase = toSnakeCase;
21
22
  exports.escapeRowData = escapeRowData;
22
- 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.areInOrder = exports.toArray = exports.isNumber = exports.isBoolean = exports.isDate = exports.isString = exports.isUndefined = exports.values = exports.each = exports.isArguments = void 0;
23
+ exports.getOrigin = getOrigin;
24
+ exports.createContextManager = createContextManager;
25
+ exports.getActivePage = getActivePage;
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;
23
30
 
24
31
  var _enums = require("./enums");
25
32
 
@@ -32,6 +39,7 @@ var hasOwnProperty = ObjProto.hasOwnProperty;
32
39
  var slice = ArrayProto.slice;
33
40
  var toString = ObjProto.toString;
34
41
  var nativeForEach = ArrayProto.forEach;
42
+ var nativeIsArray = Array.isArray;
35
43
  var breaker = false;
36
44
 
37
45
  var isArguments = function isArguments(obj) {
@@ -79,10 +87,51 @@ var values = function values(obj) {
79
87
 
80
88
  exports.values = values;
81
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
+
82
123
  function round(num, decimals) {
83
124
  return +num.toFixed(decimals);
84
125
  }
85
126
 
127
+ function toServerDuration(duration) {
128
+ if (!isNumber(duration)) {
129
+ return duration;
130
+ }
131
+
132
+ return round(duration * 1e6, 0);
133
+ }
134
+
86
135
  function msToNs(duration) {
87
136
  if (typeof duration !== 'number') {
88
137
  return duration;
@@ -121,6 +170,12 @@ var isNumber = function isNumber(obj) {
121
170
 
122
171
  exports.isNumber = isNumber;
123
172
 
173
+ var isArray = nativeIsArray || function (obj) {
174
+ return toString.call(obj) === '[object Array]';
175
+ };
176
+
177
+ exports.isArray = isArray;
178
+
124
179
  var toArray = function toArray(iterable) {
125
180
  if (!iterable) return [];
126
181
 
@@ -210,6 +265,98 @@ function jsonStringify(value, replacer, space) {
210
265
  return result;
211
266
  }
212
267
 
268
+ var utf8Encode = function utf8Encode(string) {
269
+ string = (string + '').replace(/\r\n/g, '\n').replace(/\r/g, '\n');
270
+ var utftext = '',
271
+ start,
272
+ end;
273
+ var stringl = 0,
274
+ n;
275
+ start = end = 0;
276
+ stringl = string.length;
277
+
278
+ for (n = 0; n < stringl; n++) {
279
+ var c1 = string.charCodeAt(n);
280
+ var enc = null;
281
+
282
+ if (c1 < 128) {
283
+ end++;
284
+ } else if (c1 > 127 && c1 < 2048) {
285
+ enc = String.fromCharCode(c1 >> 6 | 192, c1 & 63 | 128);
286
+ } else {
287
+ enc = String.fromCharCode(c1 >> 12 | 224, c1 >> 6 & 63 | 128, c1 & 63 | 128);
288
+ }
289
+
290
+ if (enc !== null) {
291
+ if (end > start) {
292
+ utftext += string.substring(start, end);
293
+ }
294
+
295
+ utftext += enc;
296
+ start = end = n + 1;
297
+ }
298
+ }
299
+
300
+ if (end > start) {
301
+ utftext += string.substring(start, string.length);
302
+ }
303
+
304
+ return utftext;
305
+ };
306
+
307
+ exports.utf8Encode = utf8Encode;
308
+
309
+ var base64Encode = function base64Encode(data) {
310
+ data = String(data);
311
+ var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
312
+ var o1,
313
+ o2,
314
+ o3,
315
+ h1,
316
+ h2,
317
+ h3,
318
+ h4,
319
+ bits,
320
+ i = 0,
321
+ ac = 0,
322
+ enc = '',
323
+ tmp_arr = [];
324
+
325
+ if (!data) {
326
+ return data;
327
+ }
328
+
329
+ data = utf8Encode(data);
330
+
331
+ do {
332
+ o1 = data.charCodeAt(i++);
333
+ o2 = data.charCodeAt(i++);
334
+ o3 = data.charCodeAt(i++);
335
+ bits = o1 << 16 | o2 << 8 | o3;
336
+ h1 = bits >> 18 & 0x3f;
337
+ h2 = bits >> 12 & 0x3f;
338
+ h3 = bits >> 6 & 0x3f;
339
+ h4 = bits & 0x3f;
340
+ tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
341
+ } while (i < data.length);
342
+
343
+ enc = tmp_arr.join('');
344
+
345
+ switch (data.length % 3) {
346
+ case 1:
347
+ enc = enc.slice(0, -2) + '==';
348
+ break;
349
+
350
+ case 2:
351
+ enc = enc.slice(0, -1) + '=';
352
+ break;
353
+ }
354
+
355
+ return enc;
356
+ };
357
+
358
+ exports.base64Encode = base64Encode;
359
+
213
360
  function hasToJSON(value) {
214
361
  return _typeof(value) === 'object' && value !== null && value.hasOwnProperty('toJSON');
215
362
  }
@@ -482,7 +629,12 @@ function toSnakeCase(word) {
482
629
  }
483
630
 
484
631
  function escapeRowData(str) {
485
- if (!isString(str)) return str;
632
+ if (_typeof(str) === 'object' && str) {
633
+ str = jsonStringify(str);
634
+ } else if (!isString(str)) {
635
+ return str;
636
+ }
637
+
486
638
  var reg = /[\s=,"]/g;
487
639
  return String(str).replace(reg, function (word) {
488
640
  return '\\' + word;
@@ -553,8 +705,8 @@ var urlParse = function urlParse(para) {
553
705
 
554
706
  URLParser.prototype.getUrl = function () {
555
707
  var url = '';
556
- url += this._values.Origin;
557
- url += this._values.Port ? ':' + this._values.Port : '';
708
+ url += this._values.Origin; // url += this._values.Port ? ':' + this._values.Port : ''
709
+
558
710
  url += this._values.Path;
559
711
  url += this._values.QueryString ? '?' + this._values.QueryString : '';
560
712
  return url;
@@ -575,8 +727,9 @@ var urlParse = function urlParse(para) {
575
727
  }
576
728
  }
577
729
 
730
+ this._values['Path'] = this._values['Path'] || '/';
578
731
  this._values['Hostname'] = this._values['Host'].replace(/:\d+$/, '');
579
- this._values['Origin'] = this._values['Protocol'] + '://' + this._values['Hostname'];
732
+ this._values['Origin'] = this._values['Protocol'] + '://' + this._values['Hostname'] + (this._values.Port ? ':' + this._values.Port : '');
580
733
  };
581
734
 
582
735
  return new URLParser(para);
@@ -643,4 +796,93 @@ var deepMixObject = function deepMixObject(targetObj) {
643
796
  return targetObj;
644
797
  };
645
798
 
646
- exports.deepMixObject = deepMixObject;
799
+ exports.deepMixObject = deepMixObject;
800
+
801
+ function getOrigin(url) {
802
+ return urlParse(url).getParse().Origin;
803
+ }
804
+
805
+ function createContextManager() {
806
+ var context = {};
807
+ return {
808
+ get: function get() {
809
+ return context;
810
+ },
811
+ add: function add(key, value) {
812
+ if (isString(key)) {
813
+ context[key] = value;
814
+ } else {
815
+ console.error('key 需要传递字符串类型');
816
+ }
817
+ },
818
+ remove: function remove(key) {
819
+ delete context[key];
820
+ },
821
+ set: function set(newContext) {
822
+ if (isObject(newContext)) {
823
+ context = newContext;
824
+ } else {
825
+ console.error('content 需要传递对象类型数据');
826
+ }
827
+ }
828
+ };
829
+ }
830
+
831
+ function getActivePage() {
832
+ var curPages = typeof getCurrentPages === 'function' ? getCurrentPages() : [];
833
+
834
+ if (curPages.length) {
835
+ return curPages[curPages.length - 1];
836
+ }
837
+
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;
888
+ }
@@ -21,10 +21,18 @@ function startActionCollection(lifeCycle, configuration, Vue) {
21
21
  if (configuration.trackInteractions) {
22
22
  (0, _trackActions.trackActions)(lifeCycle, Vue);
23
23
  }
24
+
25
+ return {
26
+ addAction: function addAction(action, savedCommonContext) {
27
+ lifeCycle.notify(_lifeCycle.LifeCycleEventType.RAW_RUM_EVENT_COLLECTED, (0, _utils.extend2Lev)({
28
+ savedCommonContext: savedCommonContext
29
+ }, processAction(action)));
30
+ }
31
+ };
24
32
  }
25
33
 
26
34
  function processAction(action) {
27
- var autoActionProperties = {
35
+ var autoActionProperties = isAutoAction(action) ? {
28
36
  action: {
29
37
  error: {
30
38
  count: action.counts.errorCount
@@ -38,7 +46,12 @@ function processAction(action) {
38
46
  count: action.counts.resourceCount
39
47
  }
40
48
  }
49
+ } : {
50
+ action: {
51
+ loadingTime: 0
52
+ }
41
53
  };
54
+ var customerContext = !isAutoAction(action) ? action.context : undefined;
42
55
  var actionEvent = (0, _utils.extend2Lev)({
43
56
  action: {
44
57
  target: {
@@ -50,7 +63,12 @@ function processAction(action) {
50
63
  type: _enums.RumEventType.ACTION
51
64
  }, autoActionProperties);
52
65
  return {
66
+ customerContext: customerContext,
53
67
  rawRumEvent: actionEvent,
54
68
  startTime: action.startClocks
55
69
  };
70
+ }
71
+
72
+ function isAutoAction(action) {
73
+ return action.type !== _enums.ActionType.custom;
56
74
  }
@@ -31,7 +31,6 @@ function processAppUpdate(appinfo) {
31
31
  duration: (0, _utils.msToNs)(appinfo.duration)
32
32
  }
33
33
  };
34
- console.log(appEvent, 'appEvent====');
35
34
  return {
36
35
  rawRumEvent: appEvent,
37
36
  startTime: appinfo.startTime
@@ -13,28 +13,31 @@ var _enums = require("../helper/enums");
13
13
 
14
14
  var _baseInfo = _interopRequireDefault(require("../core/baseInfo"));
15
15
 
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
16
+ var _sessionManagement = require("../core/sessionManagement");
17
17
 
18
- function isTracked(configuration) {
19
- return (0, _utils.performDraw)(configuration.sampleRate);
20
- }
18
+ var _errorFilter = require("../core/errorFilter");
21
19
 
22
- var SessionType = {
23
- SYNTHETICS: 'synthetics',
24
- USER: 'user'
25
- };
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
26
21
 
27
- function startRumAssembly(applicationId, configuration, lifeCycle, parentContexts) {
22
+ function startRumAssembly(applicationId, configuration, session, lifeCycle, parentContexts, getCommonContext) {
23
+ var errorFilter = (0, _errorFilter.createErrorFilter)(configuration, function (error) {
24
+ lifeCycle.notify(_lifeCycle.LifeCycleEventType.RAW_ERROR_COLLECTED, {
25
+ error: error
26
+ });
27
+ });
28
28
  lifeCycle.subscribe(_lifeCycle.LifeCycleEventType.RAW_RUM_EVENT_COLLECTED, function (data) {
29
29
  var startTime = data.startTime;
30
30
  var rawRumEvent = data.rawRumEvent;
31
31
  var viewContext = parentContexts.findView(startTime);
32
+ var savedCommonContext = data.savedCommonContext;
33
+ var customerContext = data.customerContext;
32
34
  var deviceContext = {
33
35
  device: _baseInfo["default"].deviceInfo
34
36
  };
35
37
 
36
- if (isTracked(configuration) && (viewContext || rawRumEvent.type === _enums.RumEventType.APP)) {
38
+ if (session.isTracked() && (viewContext || rawRumEvent.type === _enums.RumEventType.APP)) {
37
39
  var actionContext = parentContexts.findAction(startTime);
40
+ var commonContext = savedCommonContext || getCommonContext();
38
41
  var rumContext = {
39
42
  _dd: {
40
43
  sdkName: configuration.sdkName,
@@ -49,17 +52,41 @@ function startRumAssembly(applicationId, configuration, lifeCycle, parentContext
49
52
  device: {},
50
53
  date: new Date().getTime(),
51
54
  session: {
52
- id: _baseInfo["default"].getSessionId(),
53
- type: SessionType.USER
55
+ id: session.getSessionId(),
56
+ type: _sessionManagement.SessionType.USER
54
57
  },
55
58
  user: {
56
- user_id: configuration.user_id || _baseInfo["default"].getClientID(),
59
+ id: configuration.user_id || _baseInfo["default"].getClientID(),
57
60
  is_signin: configuration.user_id ? 'T' : 'F'
58
61
  }
59
62
  };
60
63
  var rumEvent = (0, _utils.extend2Lev)(rumContext, deviceContext, viewContext, actionContext, rawRumEvent);
61
64
  var serverRumEvent = (0, _utils.withSnakeCaseKeys)(rumEvent);
62
- lifeCycle.notify(_lifeCycle.LifeCycleEventType.RUM_EVENT_COLLECTED, serverRumEvent);
65
+ var context = (0, _utils.extend2Lev)({}, commonContext.context, customerContext);
66
+
67
+ if (!(0, _utils.isEmptyObject)(context)) {
68
+ serverRumEvent.tags = context;
69
+ }
70
+
71
+ if (!(0, _utils.isEmptyObject)(commonContext.user)) {
72
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
73
+ serverRumEvent.user = (0, _utils.extend2Lev)({
74
+ id: _baseInfo["default"].getClientID(),
75
+ is_signin: 'T'
76
+ }, commonContext.user);
77
+ }
78
+
79
+ if (shouldSend(serverRumEvent, errorFilter)) {
80
+ lifeCycle.notify(_lifeCycle.LifeCycleEventType.RUM_EVENT_COLLECTED, serverRumEvent);
81
+ }
63
82
  }
64
83
  });
84
+ }
85
+
86
+ function shouldSend(event, errorFilter) {
87
+ if (event.type === _enums.RumEventType.ERROR) {
88
+ return !errorFilter.isLimitReached();
89
+ }
90
+
91
+ return true;
65
92
  }
@@ -15,14 +15,46 @@ var _lifeCycle = require("../../core/lifeCycle");
15
15
  var _utils = require("../../helper/utils");
16
16
 
17
17
  function startErrorCollection(lifeCycle, configuration) {
18
- return doStartErrorCollection(lifeCycle, configuration, (0, _errorCollection.startAutomaticErrorCollection)(configuration));
18
+ // return doStartErrorCollection(
19
+ // lifeCycle,
20
+ // configuration,
21
+ // startAutomaticErrorCollection(configuration),
22
+ // )
23
+ (0, _errorCollection.startAutomaticErrorCollection)(configuration).subscribe(function (error) {
24
+ lifeCycle.notify(_lifeCycle.LifeCycleEventType.RAW_ERROR_COLLECTED, {
25
+ error: error
26
+ });
27
+ });
28
+ return doStartErrorCollection(lifeCycle);
19
29
  }
20
30
 
21
- function doStartErrorCollection(lifeCycle, configuration, observable) {
22
- observable.subscribe(function (error) {
23
- lifeCycle.notify(_lifeCycle.LifeCycleEventType.RAW_RUM_EVENT_COLLECTED, processError(error));
31
+ function doStartErrorCollection(lifeCycle) {
32
+ lifeCycle.subscribe(_lifeCycle.LifeCycleEventType.RAW_ERROR_COLLECTED, function (error) {
33
+ lifeCycle.notify(_lifeCycle.LifeCycleEventType.RAW_RUM_EVENT_COLLECTED, processError(error.error));
24
34
  });
25
- }
35
+ return {
36
+ addError: function addError(customError, savedCommonContext) {// var rawError = computeRawError(
37
+ // customError.error,
38
+ // customError.startTime,
39
+ // customError.source
40
+ // )
41
+ // lifeCycle.notify(LifeCycleEventType.RAW_ERROR_COLLECTED, {
42
+ // customerContext: customError.context,
43
+ // savedCommonContext: savedCommonContext,
44
+ // error: rawError
45
+ // })
46
+ }
47
+ };
48
+ } // function computeRawError(error, handlingStack, startClocks) {
49
+ // const stackTrace = error instanceof Error ? computeStackTrace(error) : undefined
50
+ // return extend({
51
+ // startClocks,
52
+ // source: ErrorSource.CUSTOM,
53
+ // originalError: error,
54
+ // handling: ErrorHandling.HANDLED
55
+ // }, formatUnknownError(stackTrace, error, 'Provided', handlingStack) )
56
+ // }
57
+
26
58
 
27
59
  function processError(error) {
28
60
  var resource = error.resource;