@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
@@ -0,0 +1,66 @@
1
+ import { base64Encode, urlParse, getActivePage } from '../../helper/utils'; // start SkyWalking
2
+
3
+ function uuid() {
4
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
5
+ /* tslint:disable */
6
+ var r = Math.random() * 16 | 0;
7
+ /* tslint:disable */
8
+
9
+ var v = c === 'x' ? r : r & 0x3 | 0x8;
10
+ return v.toString(16);
11
+ });
12
+ }
13
+ /**
14
+ *
15
+ * @param {*} configuration 配置信息
16
+ * @param {*} requestUrl 请求的url
17
+ */
18
+
19
+
20
+ export function SkyWalkingTracer(configuration, requestUrl) {
21
+ this._spanId = uuid();
22
+ this._traceId = uuid();
23
+ this._applicationId = configuration.applicationId;
24
+ this._env = configuration.env;
25
+ this._version = configuration.version;
26
+ this._urlParse = urlParse(requestUrl).getParse();
27
+ }
28
+ SkyWalkingTracer.prototype = {
29
+ isTracingSupported: function isTracingSupported() {
30
+ if (this._env && this._version && this._urlParse) return true;
31
+ return false;
32
+ },
33
+ getSpanId: function getSpanId() {
34
+ return this._spanId;
35
+ },
36
+ getTraceId: function getTraceId() {
37
+ return this._traceId;
38
+ },
39
+ getSkyWalkingSw8: function getSkyWalkingSw8() {
40
+ try {
41
+ var traceIdStr = String(base64Encode(this._traceId));
42
+ var segmentId = String(base64Encode(this._spanId));
43
+ var service = String(base64Encode(this._applicationId + '_rum_' + this.env));
44
+ var instance = String(base64Encode(this._version));
45
+ var activePage = getActivePage();
46
+ var endpointPage = '';
47
+
48
+ if (activePage && activePage.route) {
49
+ endpointPage = activePage.route;
50
+ }
51
+
52
+ var endpoint = String(base64Encode(endpointPage));
53
+ var peer = String(base64Encode(this._urlParse.Host));
54
+ var index = '0'; // var values = `${1}-${traceIdStr}-${segmentId}-${index}-${service}-${instance}-${endpoint}-${peer}`;
55
+
56
+ return '1-' + traceIdStr + '-' + segmentId + '-' + index + '-' + service + '-' + instance + '-' + endpoint + '-' + peer;
57
+ } catch (err) {
58
+ return '';
59
+ }
60
+ },
61
+ makeTracingHeaders: function makeTracingHeaders() {
62
+ return {
63
+ 'sw8': this.getSkyWalkingSw8()
64
+ };
65
+ }
66
+ };
@@ -0,0 +1,90 @@
1
+ import { each, extend, getOrigin } from '../../helper/utils';
2
+ import { TraceType } from '../../helper/enums';
3
+ import { DDtraceTracer } from './ddtraceTracer';
4
+ import { SkyWalkingTracer } from './skywalkingTracer';
5
+ import { JaegerTracer } from './jaegerTracer';
6
+ import { ZipkinSingleTracer } from './zipkinSingleTracer';
7
+ import { ZipkinMultiTracer } from './zipkinMultiTracer';
8
+ import { W3cTraceParentTracer } from './w3cTraceParentTracer';
9
+ export function clearTracingIfCancelled(context) {
10
+ if (context.status === 0) {
11
+ context.traceId = undefined;
12
+ context.spanId = undefined;
13
+ }
14
+ }
15
+ export function startTracer(configuration) {
16
+ return {
17
+ clearTracingIfCancelled: clearTracingIfCancelled,
18
+ traceXhr: function traceXhr(context) {
19
+ return injectHeadersIfTracingAllowed(configuration, context, function (tracingHeaders) {
20
+ context.option = extend({}, context.option);
21
+ var header = {};
22
+
23
+ if (context.option.header) {
24
+ each(context.option.header, function (value, key) {
25
+ header[key] = value;
26
+ });
27
+ }
28
+
29
+ context.option.header = extend(header, tracingHeaders);
30
+ });
31
+ }
32
+ };
33
+ }
34
+
35
+ function isAllowedUrl(configuration, requestUrl) {
36
+ var requestOrigin = getOrigin(requestUrl);
37
+ var flag = false;
38
+ each(configuration.allowedTracingOrigins, function (allowedOrigin) {
39
+ if (requestOrigin === allowedOrigin || allowedOrigin instanceof RegExp && allowedOrigin.test(requestOrigin)) {
40
+ flag = true;
41
+ return false;
42
+ }
43
+ });
44
+ return flag;
45
+ }
46
+
47
+ export function injectHeadersIfTracingAllowed(configuration, context, inject) {
48
+ if (!isAllowedUrl(configuration, context.url) || !configuration.traceType) {
49
+ return;
50
+ }
51
+
52
+ var tracer;
53
+
54
+ switch (configuration.traceType) {
55
+ case TraceType.DDTRACE:
56
+ tracer = new DDtraceTracer();
57
+ break;
58
+
59
+ case TraceType.SKYWALKING_V3:
60
+ tracer = new SkyWalkingTracer(configuration, context.url);
61
+ break;
62
+
63
+ case TraceType.ZIPKIN_MULTI_HEADER:
64
+ tracer = new ZipkinMultiTracer(configuration);
65
+ break;
66
+
67
+ case TraceType.JAEGER:
68
+ tracer = new JaegerTracer(configuration);
69
+ break;
70
+
71
+ case TraceType.W3C_TRACEPARENT:
72
+ tracer = new W3cTraceParentTracer(configuration);
73
+ break;
74
+
75
+ case TraceType.ZIPKIN_SINGLE_HEADER:
76
+ tracer = new ZipkinSingleTracer(configuration);
77
+ break;
78
+
79
+ default:
80
+ break;
81
+ }
82
+
83
+ if (!tracer || !tracer.isTracingSupported()) {
84
+ return;
85
+ }
86
+
87
+ context.traceId = tracer.getTraceId();
88
+ context.spanId = tracer.getSpanId();
89
+ inject(tracer.makeTracingHeaders());
90
+ }
@@ -0,0 +1,43 @@
1
+ // === Generate a random 64-bit number in fixed-length hex format
2
+ function randomTraceId() {
3
+ var digits = '0123456789abcdef';
4
+ var n = '';
5
+
6
+ for (var i = 0; i < 16; i += 1) {
7
+ var rand = Math.floor(Math.random() * 16);
8
+ n += digits[rand];
9
+ }
10
+
11
+ return n;
12
+ }
13
+ /**
14
+ *
15
+ * @param {*} configuration 配置信息
16
+ */
17
+
18
+
19
+ export function W3cTraceParentTracer(configuration) {
20
+ var rootSpanId = randomTraceId();
21
+ this._traceId = randomTraceId() + rootSpanId;
22
+ this._spanId = rootSpanId;
23
+ }
24
+ W3cTraceParentTracer.prototype = {
25
+ isTracingSupported: function isTracingSupported() {
26
+ return true;
27
+ },
28
+ getSpanId: function getSpanId() {
29
+ return this._spanId;
30
+ },
31
+ getTraceId: function getTraceId() {
32
+ return this._traceId;
33
+ },
34
+ getTraceParent: function getTraceParent() {
35
+ // '{version}-{traceId}-{spanId}-{sampleDecision}'
36
+ return '00-' + this._traceId + '-' + this._spanId + '-01';
37
+ },
38
+ makeTracingHeaders: function makeTracingHeaders() {
39
+ return {
40
+ 'traceparent': this.getTraceParent()
41
+ };
42
+ }
43
+ };
@@ -0,0 +1,50 @@
1
+ // === Generate a random 64-bit number in fixed-length hex format
2
+ function randomTraceId() {
3
+ var digits = '0123456789abcdef';
4
+ var n = '';
5
+
6
+ for (var i = 0; i < 16; i += 1) {
7
+ var rand = Math.floor(Math.random() * 16);
8
+ n += digits[rand];
9
+ }
10
+
11
+ return n;
12
+ }
13
+ /**
14
+ *
15
+ * @param {*} configuration 配置信息
16
+ */
17
+
18
+
19
+ export function ZipkinMultiTracer(configuration) {
20
+ var rootSpanId = randomTraceId();
21
+
22
+ if (configuration.traceId128Bit) {
23
+ // 128bit生成traceid
24
+ this._traceId = randomTraceId() + rootSpanId;
25
+ } else {
26
+ this._traceId = rootSpanId;
27
+ }
28
+
29
+ this._spanId = rootSpanId;
30
+ }
31
+ ZipkinMultiTracer.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-B3-TraceId': this.getTraceId(),
44
+ 'X-B3-SpanId': this.getSpanId(),
45
+ // 'X-B3-ParentSpanId': '',
46
+ 'X-B3-Sampled': '1' // 'X-B3-Flags': '0'
47
+
48
+ };
49
+ }
50
+ };
@@ -0,0 +1,43 @@
1
+ // === Generate a random 64-bit number in fixed-length hex format
2
+ function randomTraceId() {
3
+ var digits = '0123456789abcdef';
4
+ var n = '';
5
+
6
+ for (var i = 0; i < 16; i += 1) {
7
+ var rand = Math.floor(Math.random() * 16);
8
+ n += digits[rand];
9
+ }
10
+
11
+ return n;
12
+ }
13
+ /**
14
+ *
15
+ * @param {*} configuration 配置信息
16
+ */
17
+
18
+
19
+ export function ZipkinSingleTracer(configuration) {
20
+ var rootSpanId = randomTraceId();
21
+ this._traceId = randomTraceId() + rootSpanId;
22
+ this._spanId = rootSpanId;
23
+ }
24
+ ZipkinSingleTracer.prototype = {
25
+ isTracingSupported: function isTracingSupported() {
26
+ return true;
27
+ },
28
+ getSpanId: function getSpanId() {
29
+ return this._spanId;
30
+ },
31
+ getTraceId: function getTraceId() {
32
+ return this._traceId;
33
+ },
34
+ getB3Str: function getB3Str() {
35
+ //{TraceId}-{SpanId}-{SamplingState}-{ParentSpanId}
36
+ return this._traceId + '-' + this._spanId + '-1';
37
+ },
38
+ makeTracingHeaders: function makeTracingHeaders() {
39
+ return {
40
+ 'b3': this.getB3Str()
41
+ };
42
+ }
43
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudcare/rum-uniapp",
3
- "version": "1.0.2",
3
+ "version": "2.0.2",
4
4
  "main": "cjs/index.js",
5
5
  "module": "esm/index.js",
6
6
  "miniprogram": "cjs",
@@ -35,6 +35,10 @@
35
35
  ],
36
36
  "author": "dataflux",
37
37
  "license": "MIT",
38
+ "repository": {
39
+ "url": "https://github.com/DataFlux-cn/datakit-miniprogram-uniapp",
40
+ "type": "git"
41
+ },
38
42
  "description": "DataFlux RUM 小程序 端数据指标监控",
39
43
  "dependencies": {}
40
44
  }