@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
@@ -36,7 +36,7 @@ function rewritePage(configuration, lifeCycle, Vue) {
36
36
 
37
37
  if (methodName === 'onShow' || methodName === 'onLoad') {
38
38
  if (typeof currentView === 'undefined') {
39
- var activePage = getActivePage();
39
+ var activePage = (0, _utils.getActivePage)();
40
40
  currentView = newView(lifeCycle, activePage && activePage.route, startTime);
41
41
  }
42
42
  }
@@ -48,6 +48,7 @@ function rewritePage(configuration, lifeCycle, Vue) {
48
48
 
49
49
  if (methodName === 'onUnload' || methodName === 'onHide') {
50
50
  currentView.end();
51
+ currentView = undefined;
51
52
  }
52
53
  }
53
54
 
@@ -231,14 +232,4 @@ function trackSetDataTime(lifeCycle, callback) {
231
232
  return {
232
233
  stop: subscribe.unsubscribe
233
234
  };
234
- }
235
-
236
- function getActivePage() {
237
- var curPages = getCurrentPages();
238
-
239
- if (curPages.length) {
240
- return curPages[curPages.length - 1];
241
- }
242
-
243
- return {};
244
235
  }
@@ -17,10 +17,13 @@ var _utils = require("../helper/utils");
17
17
 
18
18
  var _resourceUtils = require("../rumEventsCollection/resource/resourceUtils");
19
19
 
20
+ var _tracer = require("../rumEventsCollection/tracing/tracer");
21
+
20
22
  var nextRequestIndex = 1;
21
23
 
22
24
  function startRequestCollection(lifeCycle, configuration) {
23
- trackXhr(lifeCycle, configuration);
25
+ var tracer = (0, _tracer.startTracer)(configuration);
26
+ trackXhr(lifeCycle, configuration, tracer);
24
27
  trackDownload(lifeCycle, configuration);
25
28
  }
26
29
 
@@ -43,10 +46,11 @@ function getHeaderString(header) {
43
46
  return headerStr;
44
47
  }
45
48
 
46
- function trackXhr(lifeCycle, configuration) {
49
+ function trackXhr(lifeCycle, configuration, tracer) {
47
50
  var xhrProxy = (0, _xhrProxy.startXhrProxy)();
48
51
  xhrProxy.beforeSend(function (context) {
49
52
  if ((0, _resourceUtils.isAllowedRequestUrl)(configuration, context.url)) {
53
+ tracer.traceXhr(context);
50
54
  context.requestIndex = getNextRequestIndex();
51
55
  lifeCycle.notify(_lifeCycle.LifeCycleEventType.REQUEST_STARTED, {
52
56
  requestIndex: context.requestIndex
@@ -55,6 +59,7 @@ function trackXhr(lifeCycle, configuration) {
55
59
  });
56
60
  xhrProxy.onRequestComplete(function (context) {
57
61
  if ((0, _resourceUtils.isAllowedRequestUrl)(configuration, context.url)) {
62
+ tracer.clearTracingIfCancelled(context);
58
63
  lifeCycle.notify(_lifeCycle.LifeCycleEventType.REQUEST_COMPLETED, {
59
64
  duration: context.duration,
60
65
  method: context.method,
@@ -63,6 +68,8 @@ function trackXhr(lifeCycle, configuration) {
63
68
  response: context.response,
64
69
  startTime: context.startTime,
65
70
  status: context.status,
71
+ traceId: context.traceId,
72
+ spanId: context.spanId,
66
73
  type: context.type,
67
74
  url: context.url
68
75
  });
@@ -23,9 +23,9 @@ function processRequest(request) {
23
23
  var type = request.type;
24
24
  var timing = request.performance;
25
25
  var correspondingTimingOverrides = timing ? computePerformanceEntryMetrics(timing) : undefined;
26
+ var tracingInfo = computeRequestTracingInfo(request);
26
27
  var urlObj = (0, _utils.urlParse)(request.url).getParse();
27
28
  var startTime = request.startTime;
28
- console.log(request, 'request=========');
29
29
  var resourceEvent = (0, _utils.extend2Lev)({
30
30
  date: startTime,
31
31
  resource: {
@@ -41,13 +41,31 @@ function processRequest(request) {
41
41
  urlQuery: (0, _utils.jsonStringify)((0, _utils.getQueryParamsFromUrl)(request.url))
42
42
  },
43
43
  type: _enums.RumEventType.RESOURCE
44
- }, correspondingTimingOverrides);
44
+ }, tracingInfo, correspondingTimingOverrides);
45
45
  return {
46
46
  startTime: startTime,
47
47
  rawRumEvent: resourceEvent
48
48
  };
49
49
  }
50
50
 
51
+ function computeRequestTracingInfo(request) {
52
+ var hasBeenTraced = request.traceId && request.spanId;
53
+
54
+ if (!hasBeenTraced) {
55
+ return undefined;
56
+ }
57
+
58
+ return {
59
+ _dd: {
60
+ spanId: request.spanId,
61
+ traceId: request.traceId
62
+ },
63
+ resource: {
64
+ id: (0, _utils.UUID)()
65
+ }
66
+ };
67
+ }
68
+
51
69
  function computePerformanceEntryMetrics(timing) {
52
70
  return {
53
71
  resource: (0, _utils.extend2Lev)({}, {
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DDtraceTracer = DDtraceTracer;
7
+
8
+ // === Generate a random 64-bit number in fixed-length hex format
9
+ function randomTraceId() {
10
+ var digits = '0123456789abcdef';
11
+ var n = '';
12
+
13
+ for (var i = 0; i < 19; i += 1) {
14
+ var rand = Math.floor(Math.random() * 10);
15
+ n += digits[rand];
16
+ }
17
+
18
+ return n;
19
+ }
20
+ /**
21
+ *
22
+ * @param {*} configuration 配置信息
23
+ */
24
+
25
+
26
+ function DDtraceTracer(configuration) {
27
+ this._spanId = randomTraceId();
28
+ this._traceId = randomTraceId();
29
+ }
30
+
31
+ DDtraceTracer.prototype = {
32
+ isTracingSupported: function isTracingSupported() {
33
+ return true;
34
+ },
35
+ getSpanId: function getSpanId() {
36
+ return this._spanId;
37
+ },
38
+ getTraceId: function getTraceId() {
39
+ return this._traceId;
40
+ },
41
+ makeTracingHeaders: function makeTracingHeaders() {
42
+ return {
43
+ 'x-datadog-origin': 'rum',
44
+ // 'x-datadog-parent-id': spanId.toDecimalString(),
45
+ 'x-datadog-sampled': '1',
46
+ 'x-datadog-sampling-priority': '1',
47
+ 'x-datadog-trace-id': this.getTraceId()
48
+ };
49
+ }
50
+ };
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.JaegerTracer = JaegerTracer;
7
+
8
+ // === Generate a random 64-bit number in fixed-length hex format
9
+ function randomTraceId() {
10
+ var digits = '0123456789abcdef';
11
+ var n = '';
12
+
13
+ for (var i = 0; i < 16; i += 1) {
14
+ var rand = Math.floor(Math.random() * 16);
15
+ n += digits[rand];
16
+ }
17
+
18
+ return n;
19
+ }
20
+ /**
21
+ *
22
+ * @param {*} configuration 配置信息
23
+ */
24
+
25
+
26
+ function JaegerTracer(configuration) {
27
+ var rootSpanId = randomTraceId(); // this._traceId = randomTraceId() + rootSpanId // 默认用128bit,兼容其他配置
28
+
29
+ if (configuration.traceId128Bit) {
30
+ // 128bit生成traceid
31
+ this._traceId = randomTraceId() + rootSpanId;
32
+ } else {
33
+ this._traceId = rootSpanId;
34
+ }
35
+
36
+ this._spanId = rootSpanId;
37
+ }
38
+
39
+ JaegerTracer.prototype = {
40
+ isTracingSupported: function isTracingSupported() {
41
+ return true;
42
+ },
43
+ getSpanId: function getSpanId() {
44
+ return this._spanId;
45
+ },
46
+ getTraceId: function getTraceId() {
47
+ return this._traceId;
48
+ },
49
+ getUberTraceId: function getUberTraceId() {
50
+ //{trace-id}:{span-id}:{parent-span-id}:{flags}
51
+ return this._traceId + ':' + this._spanId + ':' + '0' + ':' + '1';
52
+ },
53
+ makeTracingHeaders: function makeTracingHeaders() {
54
+ return {
55
+ 'uber-trace-id': this.getUberTraceId()
56
+ };
57
+ }
58
+ };
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SkyWalkingTracer = SkyWalkingTracer;
7
+
8
+ var _utils = require("../../helper/utils");
9
+
10
+ // start SkyWalking
11
+ function uuid() {
12
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
13
+ /* tslint:disable */
14
+ var r = Math.random() * 16 | 0;
15
+ /* tslint:disable */
16
+
17
+ var v = c === 'x' ? r : r & 0x3 | 0x8;
18
+ return v.toString(16);
19
+ });
20
+ }
21
+ /**
22
+ *
23
+ * @param {*} configuration 配置信息
24
+ * @param {*} requestUrl 请求的url
25
+ */
26
+
27
+
28
+ function SkyWalkingTracer(configuration, requestUrl) {
29
+ this._spanId = uuid();
30
+ this._traceId = uuid();
31
+ this._applicationId = configuration.applicationId;
32
+ this._env = configuration.env;
33
+ this._version = configuration.version;
34
+ this._urlParse = (0, _utils.urlParse)(requestUrl).getParse();
35
+ }
36
+
37
+ SkyWalkingTracer.prototype = {
38
+ isTracingSupported: function isTracingSupported() {
39
+ if (this._env && this._version && this._urlParse) return true;
40
+ return false;
41
+ },
42
+ getSpanId: function getSpanId() {
43
+ return this._spanId;
44
+ },
45
+ getTraceId: function getTraceId() {
46
+ return this._traceId;
47
+ },
48
+ getSkyWalkingSw8: function getSkyWalkingSw8() {
49
+ try {
50
+ var traceIdStr = String((0, _utils.base64Encode)(this._traceId));
51
+ var segmentId = String((0, _utils.base64Encode)(this._spanId));
52
+ var service = String((0, _utils.base64Encode)(this._applicationId + '_rum_' + this.env));
53
+ var instance = String((0, _utils.base64Encode)(this._version));
54
+ var activePage = (0, _utils.getActivePage)();
55
+ var endpointPage = '';
56
+
57
+ if (activePage && activePage.route) {
58
+ endpointPage = activePage.route;
59
+ }
60
+
61
+ var endpoint = String((0, _utils.base64Encode)(endpointPage));
62
+ var peer = String((0, _utils.base64Encode)(this._urlParse.Host));
63
+ var index = '0'; // var values = `${1}-${traceIdStr}-${segmentId}-${index}-${service}-${instance}-${endpoint}-${peer}`;
64
+
65
+ return '1-' + traceIdStr + '-' + segmentId + '-' + index + '-' + service + '-' + instance + '-' + endpoint + '-' + peer;
66
+ } catch (err) {
67
+ return '';
68
+ }
69
+ },
70
+ makeTracingHeaders: function makeTracingHeaders() {
71
+ return {
72
+ 'sw8': this.getSkyWalkingSw8()
73
+ };
74
+ }
75
+ };
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.clearTracingIfCancelled = clearTracingIfCancelled;
7
+ exports.startTracer = startTracer;
8
+ exports.injectHeadersIfTracingAllowed = injectHeadersIfTracingAllowed;
9
+
10
+ var _utils = require("../../helper/utils");
11
+
12
+ var _enums = require("../../helper/enums");
13
+
14
+ var _ddtraceTracer = require("./ddtraceTracer");
15
+
16
+ var _skywalkingTracer = require("./skywalkingTracer");
17
+
18
+ var _jaegerTracer = require("./jaegerTracer");
19
+
20
+ var _zipkinSingleTracer = require("./zipkinSingleTracer");
21
+
22
+ var _zipkinMultiTracer = require("./zipkinMultiTracer");
23
+
24
+ var _w3cTraceParentTracer = require("./w3cTraceParentTracer");
25
+
26
+ function clearTracingIfCancelled(context) {
27
+ if (context.status === 0) {
28
+ context.traceId = undefined;
29
+ context.spanId = undefined;
30
+ }
31
+ }
32
+
33
+ function startTracer(configuration) {
34
+ return {
35
+ clearTracingIfCancelled: clearTracingIfCancelled,
36
+ traceXhr: function traceXhr(context) {
37
+ return injectHeadersIfTracingAllowed(configuration, context, function (tracingHeaders) {
38
+ context.option = (0, _utils.extend)({}, context.option);
39
+ var header = {};
40
+
41
+ if (context.option.header) {
42
+ (0, _utils.each)(context.option.header, function (value, key) {
43
+ header[key] = value;
44
+ });
45
+ }
46
+
47
+ context.option.header = (0, _utils.extend)(header, tracingHeaders);
48
+ });
49
+ }
50
+ };
51
+ }
52
+
53
+ function isAllowedUrl(configuration, requestUrl) {
54
+ var requestOrigin = (0, _utils.getOrigin)(requestUrl);
55
+ var flag = false;
56
+ (0, _utils.each)(configuration.allowedTracingOrigins, function (allowedOrigin) {
57
+ if (requestOrigin === allowedOrigin || allowedOrigin instanceof RegExp && allowedOrigin.test(requestOrigin)) {
58
+ flag = true;
59
+ return false;
60
+ }
61
+ });
62
+ return flag;
63
+ }
64
+
65
+ function injectHeadersIfTracingAllowed(configuration, context, inject) {
66
+ if (!isAllowedUrl(configuration, context.url) || !configuration.traceType) {
67
+ return;
68
+ }
69
+
70
+ var tracer;
71
+
72
+ switch (configuration.traceType) {
73
+ case _enums.TraceType.DDTRACE:
74
+ tracer = new _ddtraceTracer.DDtraceTracer();
75
+ break;
76
+
77
+ case _enums.TraceType.SKYWALKING_V3:
78
+ tracer = new _skywalkingTracer.SkyWalkingTracer(configuration, context.url);
79
+ break;
80
+
81
+ case _enums.TraceType.ZIPKIN_MULTI_HEADER:
82
+ tracer = new _zipkinMultiTracer.ZipkinMultiTracer(configuration);
83
+ break;
84
+
85
+ case _enums.TraceType.JAEGER:
86
+ tracer = new _jaegerTracer.JaegerTracer(configuration);
87
+ break;
88
+
89
+ case _enums.TraceType.W3C_TRACEPARENT:
90
+ tracer = new _w3cTraceParentTracer.W3cTraceParentTracer(configuration);
91
+ break;
92
+
93
+ case _enums.TraceType.ZIPKIN_SINGLE_HEADER:
94
+ tracer = new _zipkinSingleTracer.ZipkinSingleTracer(configuration);
95
+ break;
96
+
97
+ default:
98
+ break;
99
+ }
100
+
101
+ if (!tracer || !tracer.isTracingSupported()) {
102
+ return;
103
+ }
104
+
105
+ context.traceId = tracer.getTraceId();
106
+ context.spanId = tracer.getSpanId();
107
+ inject(tracer.makeTracingHeaders());
108
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.W3cTraceParentTracer = W3cTraceParentTracer;
7
+
8
+ // === Generate a random 64-bit number in fixed-length hex format
9
+ function randomTraceId() {
10
+ var digits = '0123456789abcdef';
11
+ var n = '';
12
+
13
+ for (var i = 0; i < 16; i += 1) {
14
+ var rand = Math.floor(Math.random() * 16);
15
+ n += digits[rand];
16
+ }
17
+
18
+ return n;
19
+ }
20
+ /**
21
+ *
22
+ * @param {*} configuration 配置信息
23
+ */
24
+
25
+
26
+ function W3cTraceParentTracer(configuration) {
27
+ var rootSpanId = randomTraceId();
28
+ this._traceId = randomTraceId() + rootSpanId;
29
+ this._spanId = rootSpanId;
30
+ }
31
+
32
+ W3cTraceParentTracer.prototype = {
33
+ isTracingSupported: function isTracingSupported() {
34
+ return true;
35
+ },
36
+ getSpanId: function getSpanId() {
37
+ return this._spanId;
38
+ },
39
+ getTraceId: function getTraceId() {
40
+ return this._traceId;
41
+ },
42
+ getTraceParent: function getTraceParent() {
43
+ // '{version}-{traceId}-{spanId}-{sampleDecision}'
44
+ return '00-' + this._traceId + '-' + this._spanId + '-01';
45
+ },
46
+ makeTracingHeaders: function makeTracingHeaders() {
47
+ return {
48
+ 'traceparent': this.getTraceParent()
49
+ };
50
+ }
51
+ };
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ZipkinMultiTracer = ZipkinMultiTracer;
7
+
8
+ // === Generate a random 64-bit number in fixed-length hex format
9
+ function randomTraceId() {
10
+ var digits = '0123456789abcdef';
11
+ var n = '';
12
+
13
+ for (var i = 0; i < 16; i += 1) {
14
+ var rand = Math.floor(Math.random() * 16);
15
+ n += digits[rand];
16
+ }
17
+
18
+ return n;
19
+ }
20
+ /**
21
+ *
22
+ * @param {*} configuration 配置信息
23
+ */
24
+
25
+
26
+ function ZipkinMultiTracer(configuration) {
27
+ var rootSpanId = randomTraceId();
28
+
29
+ if (configuration.traceId128Bit) {
30
+ // 128bit生成traceid
31
+ this._traceId = randomTraceId() + rootSpanId;
32
+ } else {
33
+ this._traceId = rootSpanId;
34
+ }
35
+
36
+ this._spanId = rootSpanId;
37
+ }
38
+
39
+ ZipkinMultiTracer.prototype = {
40
+ isTracingSupported: function isTracingSupported() {
41
+ return true;
42
+ },
43
+ getSpanId: function getSpanId() {
44
+ return this._spanId;
45
+ },
46
+ getTraceId: function getTraceId() {
47
+ return this._traceId;
48
+ },
49
+ makeTracingHeaders: function makeTracingHeaders() {
50
+ return {
51
+ 'X-B3-TraceId': this.getTraceId(),
52
+ 'X-B3-SpanId': this.getSpanId(),
53
+ // 'X-B3-ParentSpanId': '',
54
+ 'X-B3-Sampled': '1' // 'X-B3-Flags': '0'
55
+
56
+ };
57
+ }
58
+ };
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ZipkinSingleTracer = ZipkinSingleTracer;
7
+
8
+ // === Generate a random 64-bit number in fixed-length hex format
9
+ function randomTraceId() {
10
+ var digits = '0123456789abcdef';
11
+ var n = '';
12
+
13
+ for (var i = 0; i < 16; i += 1) {
14
+ var rand = Math.floor(Math.random() * 16);
15
+ n += digits[rand];
16
+ }
17
+
18
+ return n;
19
+ }
20
+ /**
21
+ *
22
+ * @param {*} configuration 配置信息
23
+ */
24
+
25
+
26
+ function ZipkinSingleTracer(configuration) {
27
+ var rootSpanId = randomTraceId();
28
+ this._traceId = randomTraceId() + rootSpanId;
29
+ this._spanId = rootSpanId;
30
+ }
31
+
32
+ ZipkinSingleTracer.prototype = {
33
+ isTracingSupported: function isTracingSupported() {
34
+ return true;
35
+ },
36
+ getSpanId: function getSpanId() {
37
+ return this._spanId;
38
+ },
39
+ getTraceId: function getTraceId() {
40
+ return this._traceId;
41
+ },
42
+ getB3Str: function getB3Str() {
43
+ //{TraceId}-{SpanId}-{SamplingState}-{ParentSpanId}
44
+ return this._traceId + '-' + this._spanId + '-1';
45
+ },
46
+ makeTracingHeaders: function makeTracingHeaders() {
47
+ return {
48
+ 'b3': this.getB3Str()
49
+ };
50
+ }
51
+ };
@@ -1,4 +1,4 @@
1
1
  export var buildEnv = {
2
- sdkVersion: '1.0.2',
2
+ sdkVersion: '2.0.2',
3
3
  sdkName: 'df_uniapp_rum_sdk'
4
4
  };
@@ -1,7 +1,19 @@
1
- import { isPercentage } from '../helper/utils';
1
+ import { isPercentage, extend2Lev, createContextManager, defineGlobal, getGlobalObject } from '../helper/utils';
2
2
  import { startRum } from './rum';
3
3
  export var makeRum = function makeRum(startRumImpl) {
4
4
  var isAlreadyInitialized = false;
5
+ var globalContextManager = createContextManager();
6
+ var user = {};
7
+
8
+ var _getInternalContext = function getInternalContext() {};
9
+
10
+ function clonedCommonContext() {
11
+ return extend2Lev({}, {
12
+ context: globalContextManager.get(),
13
+ user: user
14
+ });
15
+ }
16
+
5
17
  var rumGlobal = {
6
18
  init: function init(Vue, userConfiguration) {
7
19
  if (typeof userConfiguration === 'undefined') {
@@ -14,8 +26,34 @@ export var makeRum = function makeRum(startRumImpl) {
14
26
  return;
15
27
  }
16
28
 
17
- startRumImpl(Vue, userConfiguration);
29
+ var _startRumImpl = startRumImpl(Vue, userConfiguration, function () {
30
+ return {
31
+ user: user,
32
+ context: globalContextManager.get()
33
+ };
34
+ });
35
+
36
+ _getInternalContext = _startRumImpl.getInternalContext;
18
37
  isAlreadyInitialized = true;
38
+ },
39
+ getInternalContext: function getInternalContext(startTime) {
40
+ return _getInternalContext(startTime);
41
+ },
42
+ addRumGlobalContext: globalContextManager.add,
43
+ removeRumGlobalContext: globalContextManager.remove,
44
+ getRumGlobalContext: globalContextManager.get,
45
+ setRumGlobalContext: globalContextManager.set,
46
+ setUser: function setUser(newUser) {
47
+ var sanitizedUser = sanitizeUser(newUser);
48
+
49
+ if (sanitizedUser) {
50
+ user = sanitizedUser;
51
+ } else {
52
+ console.error('Unsupported user:', newUser);
53
+ }
54
+ },
55
+ removeUser: function removeUser() {
56
+ user = {};
19
57
  }
20
58
  };
21
59
  return rumGlobal;
@@ -43,5 +81,28 @@ export var makeRum = function makeRum(startRumImpl) {
43
81
 
44
82
  return true;
45
83
  }
84
+
85
+ function sanitizeUser(newUser) {
86
+ if (typeof newUser !== 'object' || !newUser) {
87
+ return;
88
+ }
89
+
90
+ var result = extend2Lev({}, newUser);
91
+
92
+ if ('id' in result) {
93
+ result.id = String(result.id);
94
+ }
95
+
96
+ if ('name' in result) {
97
+ result.name = String(result.name);
98
+ }
99
+
100
+ if ('email' in result) {
101
+ result.email = String(result.email);
102
+ }
103
+
104
+ return result;
105
+ }
46
106
  };
47
- export var datafluxRum = makeRum(startRum);
107
+ export var datafluxRum = makeRum(startRum);
108
+ defineGlobal(getGlobalObject(), 'DATAFLUX_RUM_MIN', datafluxRum);
package/esm/boot/rum.js CHANGED
@@ -12,13 +12,16 @@ import { startAppCollection } from '../rumEventsCollection/app/appCollection';
12
12
  import { startPagePerformanceObservable } from '../rumEventsCollection/performanceCollection';
13
13
  import { startSetDataColloction } from '../rumEventsCollection/setDataCollection';
14
14
  import { startActionCollection } from '../rumEventsCollection/action/actionCollection';
15
+ import { sessionManagement } from '../core/sessionManagement';
16
+ import { startInternalContext } from '../rumEventsCollection/internalContext';
15
17
  import { sdk } from '../core/sdk';
16
- export var startRum = function startRum(Vue, userConfiguration) {
18
+ export var startRum = function startRum(Vue, userConfiguration, getCommonContext) {
17
19
  var configuration = commonInit(userConfiguration, buildEnv);
18
20
  var lifeCycle = new LifeCycle();
19
21
  var parentContexts = startParentContexts(lifeCycle);
20
22
  var batch = startRumBatch(configuration, lifeCycle);
21
- startRumAssembly(userConfiguration.applicationId, configuration, lifeCycle, parentContexts);
23
+ var session = new sessionManagement(configuration);
24
+ startRumAssembly(userConfiguration.applicationId, configuration, session, lifeCycle, parentContexts, getCommonContext);
22
25
  startAppCollection(lifeCycle, configuration);
23
26
  startResourceCollection(lifeCycle, configuration);
24
27
  startViewCollection(lifeCycle, configuration, Vue);
@@ -27,4 +30,8 @@ export var startRum = function startRum(Vue, userConfiguration) {
27
30
  startPagePerformanceObservable(lifeCycle, configuration);
28
31
  startSetDataColloction(lifeCycle, Vue);
29
32
  startActionCollection(lifeCycle, configuration, Vue);
33
+ var internalContext = startInternalContext(userConfiguration.applicationId, session, parentContexts);
34
+ return {
35
+ getInternalContext: internalContext.get
36
+ };
30
37
  };