@cloudcare/rum-uniapp 1.0.2 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +11 -8
  2. package/cjs/boot/buildEnv.js +1 -1
  3. package/cjs/boot/rum.entry.js +65 -2
  4. package/cjs/boot/rum.js +11 -2
  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 +20 -6
  18. package/cjs/helper/limitModification.js +83 -0
  19. package/cjs/helper/tracekit.js +1 -1
  20. package/cjs/helper/utils.js +274 -6
  21. package/cjs/rumEventsCollection/app/appCollection.js +0 -1
  22. package/cjs/rumEventsCollection/assembly.js +41 -14
  23. package/cjs/rumEventsCollection/error/errorCollection.js +37 -5
  24. package/cjs/rumEventsCollection/internalContext.js +34 -0
  25. package/cjs/rumEventsCollection/page/index.js +2 -11
  26. package/cjs/rumEventsCollection/requestCollection.js +9 -2
  27. package/cjs/rumEventsCollection/resource/resourceCollection.js +20 -2
  28. package/cjs/rumEventsCollection/tracing/ddtraceTracer.js +50 -0
  29. package/cjs/rumEventsCollection/tracing/jaegerTracer.js +58 -0
  30. package/cjs/rumEventsCollection/tracing/skywalkingTracer.js +75 -0
  31. package/cjs/rumEventsCollection/tracing/tracer.js +108 -0
  32. package/cjs/rumEventsCollection/tracing/w3cTraceParentTracer.js +51 -0
  33. package/cjs/rumEventsCollection/tracing/zipkinMultiTracer.js +58 -0
  34. package/cjs/rumEventsCollection/tracing/zipkinSingleTracer.js +51 -0
  35. package/esm/boot/buildEnv.js +1 -1
  36. package/esm/boot/rum.entry.js +64 -3
  37. package/esm/boot/rum.js +9 -2
  38. package/esm/core/baseInfo.js +0 -5
  39. package/esm/core/boundedBuffer.js +20 -0
  40. package/esm/core/configuration.js +28 -3
  41. package/esm/core/dataMap.js +5 -1
  42. package/esm/core/errorCollection.js +5 -6
  43. package/esm/core/errorFilter.js +38 -0
  44. package/esm/core/errorTools.js +2 -1
  45. package/esm/core/lifeCycle.js +1 -0
  46. package/esm/core/sdk.js +0 -1
  47. package/esm/core/sessionManagement.js +20 -0
  48. package/esm/core/transport.js +111 -70
  49. package/esm/core/xhrProxy.js +3 -2
  50. package/esm/helper/enums.js +14 -1
  51. package/esm/helper/limitModification.js +57 -0
  52. package/esm/helper/tracekit.js +1 -1
  53. package/esm/helper/utils.js +236 -5
  54. package/esm/rumEventsCollection/app/appCollection.js +0 -1
  55. package/esm/rumEventsCollection/assembly.js +40 -15
  56. package/esm/rumEventsCollection/error/errorCollection.js +36 -5
  57. package/esm/rumEventsCollection/internalContext.js +27 -0
  58. package/esm/rumEventsCollection/page/index.js +2 -11
  59. package/esm/rumEventsCollection/requestCollection.js +8 -2
  60. package/esm/rumEventsCollection/resource/resourceCollection.js +21 -3
  61. package/esm/rumEventsCollection/tracing/ddtraceTracer.js +42 -0
  62. package/esm/rumEventsCollection/tracing/jaegerTracer.js +50 -0
  63. package/esm/rumEventsCollection/tracing/skywalkingTracer.js +66 -0
  64. package/esm/rumEventsCollection/tracing/tracer.js +90 -0
  65. package/esm/rumEventsCollection/tracing/w3cTraceParentTracer.js +43 -0
  66. package/esm/rumEventsCollection/tracing/zipkinMultiTracer.js +50 -0
  67. package/esm/rumEventsCollection/tracing/zipkinSingleTracer.js +43 -0
  68. package/package.json +5 -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',
@@ -52,4 +52,18 @@ var MpHook = {
52
52
  onHide: 1,
53
53
  onUnload: 1
54
54
  };
55
- exports.MpHook = MpHook;
55
+ exports.MpHook = MpHook;
56
+ var TraceType = {
57
+ DDTRACE: 'ddtrace',
58
+ ZIPKIN_MULTI_HEADER: 'zipkin',
59
+ ZIPKIN_SINGLE_HEADER: 'zipkin_single_header',
60
+ W3C_TRACEPARENT: 'w3c_traceparent',
61
+ SKYWALKING_V3: 'skywalking_v3',
62
+ JAEGER: 'jaeger'
63
+ };
64
+ exports.TraceType = TraceType;
65
+ var ErrorHandling = {
66
+ HANDLED: 'handled',
67
+ UNHANDLED: 'unhandled'
68
+ };
69
+ exports.ErrorHandling = ErrorHandling;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.limitModification = limitModification;
7
+
8
+ var _utils = require("./utils");
9
+
10
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
11
+
12
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
13
+
14
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
15
+
16
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
17
+
18
+ /**
19
+ * Current limitations:
20
+ * - field path do not support array, 'a.b.c' only
21
+ * - modifiable fields type must be string
22
+ */
23
+ function limitModification(object, modifiableFieldPaths, modifier) {
24
+ var clone = (0, _utils.extend2Lev)({}, object);
25
+ var result = modifier(clone);
26
+ (0, _utils.each)(modifiableFieldPaths, function (path) {
27
+ var originalValue = get(object, path);
28
+ var newValue = get(clone, path);
29
+
30
+ if (typeof originalValue === 'string' && typeof newValue === 'string') {
31
+ set(object, path, newValue);
32
+ }
33
+ });
34
+ return result;
35
+ }
36
+
37
+ function get(object, path) {
38
+ var current = object;
39
+
40
+ var _iterator = _createForOfIteratorHelper(path.split('.')),
41
+ _step;
42
+
43
+ try {
44
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
45
+ var field = _step.value;
46
+
47
+ if (!isValidObjectContaining(current, field)) {
48
+ return;
49
+ }
50
+
51
+ current = current[field];
52
+ }
53
+ } catch (err) {
54
+ _iterator.e(err);
55
+ } finally {
56
+ _iterator.f();
57
+ }
58
+
59
+ return current;
60
+ }
61
+
62
+ function set(object, path, value) {
63
+ var current = object;
64
+ var fields = path.split('.');
65
+
66
+ for (var i = 0; i < fields.length; i += 1) {
67
+ var field = fields[i];
68
+
69
+ if (!isValidObjectContaining(current, field)) {
70
+ return;
71
+ }
72
+
73
+ if (i !== fields.length - 1) {
74
+ current = current[field];
75
+ } else {
76
+ current[field] = value;
77
+ }
78
+ }
79
+ }
80
+
81
+ function isValidObjectContaining(object, field) {
82
+ return _typeof(object) === 'object' && object !== null && field in object;
83
+ }
@@ -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.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
  }
@@ -258,6 +405,32 @@ var getQueryParamsFromUrl = function getQueryParamsFromUrl(url) {
258
405
 
259
406
  exports.getQueryParamsFromUrl = getQueryParamsFromUrl;
260
407
 
408
+ var getURLSearchParams = function getURLSearchParams(queryString) {
409
+ queryString = queryString || '';
410
+
411
+ var decodeParam = function decodeParam(str) {
412
+ return decodeURIComponent(str);
413
+ };
414
+
415
+ var args = {};
416
+ var query = queryString.substring(1);
417
+ var pairs = query.split('&');
418
+
419
+ for (var i = 0; i < pairs.length; i++) {
420
+ var pos = pairs[i].indexOf('=');
421
+ if (pos === -1) continue;
422
+ var name = pairs[i].substring(0, pos);
423
+ var value = pairs[i].substring(pos + 1);
424
+ name = decodeParam(name);
425
+ value = decodeParam(value);
426
+ args[name] = value;
427
+ }
428
+
429
+ return args;
430
+ };
431
+
432
+ exports.getURLSearchParams = getURLSearchParams;
433
+
261
434
  function isPercentage(value) {
262
435
  return isNumber(value) && value >= 0 && value <= 100;
263
436
  }
@@ -456,7 +629,12 @@ function toSnakeCase(word) {
456
629
  }
457
630
 
458
631
  function escapeRowData(str) {
459
- 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
+
460
638
  var reg = /[\s=,"]/g;
461
639
  return String(str).replace(reg, function (word) {
462
640
  return '\\' + word;
@@ -527,8 +705,8 @@ var urlParse = function urlParse(para) {
527
705
 
528
706
  URLParser.prototype.getUrl = function () {
529
707
  var url = '';
530
- url += this._values.Origin;
531
- url += this._values.Port ? ':' + this._values.Port : '';
708
+ url += this._values.Origin; // url += this._values.Port ? ':' + this._values.Port : ''
709
+
532
710
  url += this._values.Path;
533
711
  url += this._values.QueryString ? '?' + this._values.QueryString : '';
534
712
  return url;
@@ -549,8 +727,9 @@ var urlParse = function urlParse(para) {
549
727
  }
550
728
  }
551
729
 
730
+ this._values['Path'] = this._values['Path'] || '/';
552
731
  this._values['Hostname'] = this._values['Host'].replace(/:\d+$/, '');
553
- 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 : '');
554
733
  };
555
734
 
556
735
  return new URLParser(para);
@@ -617,4 +796,93 @@ var deepMixObject = function deepMixObject(targetObj) {
617
796
  return targetObj;
618
797
  };
619
798
 
620
- 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
+ }
@@ -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.savedGlobalContext;
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;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.startInternalContext = startInternalContext;
7
+
8
+ /**
9
+ * Internal context keep returning v1 format
10
+ * to not break compatibility with logs data format
11
+ */
12
+ function startInternalContext(applicationId, session, parentContexts) {
13
+ return {
14
+ get: function get(startTime) {
15
+ var viewContext = parentContexts.findView(startTime);
16
+
17
+ if (session.isTracked() && viewContext) {
18
+ var actionContext = parentContexts.findAction(startTime);
19
+ return {
20
+ application: {
21
+ id: applicationId
22
+ },
23
+ session: {
24
+ id: session.getSessionId()
25
+ },
26
+ userAction: actionContext ? {
27
+ id: actionContext.userAction.id
28
+ } : undefined,
29
+ page: viewContext.page
30
+ };
31
+ }
32
+ }
33
+ };
34
+ }