nestjs-otel 3.0.2 → 4.0.0

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 (151) hide show
  1. package/.eslintignore +1 -0
  2. package/.eslintrc.js +27 -0
  3. package/CHANGELOG.md +34 -0
  4. package/README.md +15 -23
  5. package/lib/index.js +5 -1
  6. package/lib/index.js.map +1 -1
  7. package/lib/interfaces/index.js +5 -1
  8. package/lib/interfaces/index.js.map +1 -1
  9. package/lib/interfaces/opentelemetry-options.interface.d.ts +2 -6
  10. package/lib/metrics/decorators/common.d.ts +1 -1
  11. package/lib/metrics/decorators/common.js +12 -7
  12. package/lib/metrics/decorators/common.js.map +1 -1
  13. package/lib/metrics/decorators/common.spec.d.ts +1 -0
  14. package/lib/metrics/decorators/common.spec.js +48 -0
  15. package/lib/metrics/decorators/common.spec.js.map +1 -0
  16. package/lib/metrics/decorators/index.js +5 -1
  17. package/lib/metrics/decorators/index.js.map +1 -1
  18. package/lib/metrics/metric-data.d.ts +4 -4
  19. package/lib/metrics/metric-data.js +6 -6
  20. package/lib/metrics/metric-data.js.map +1 -1
  21. package/lib/metrics/metric.service.d.ts +4 -4
  22. package/lib/metrics/metric.service.js +6 -6
  23. package/lib/metrics/metric.service.js.map +1 -1
  24. package/lib/middleware/api-metrics.middleware.d.ts +10 -17
  25. package/lib/middleware/api-metrics.middleware.js +40 -50
  26. package/lib/middleware/api-metrics.middleware.js.map +1 -1
  27. package/lib/middleware/index.js +5 -1
  28. package/lib/middleware/index.js.map +1 -1
  29. package/lib/opentelemetry-core.module.js +3 -11
  30. package/lib/opentelemetry-core.module.js.map +1 -1
  31. package/lib/opentelemetry.module.js.map +1 -1
  32. package/lib/opentelemetry.utils.d.ts +1 -0
  33. package/lib/opentelemetry.utils.js +10 -0
  34. package/lib/opentelemetry.utils.js.map +1 -0
  35. package/lib/tracing/decorators/span.d.ts +2 -1
  36. package/lib/tracing/decorators/span.js +29 -9
  37. package/lib/tracing/decorators/span.js.map +1 -1
  38. package/lib/tracing/decorators/span.spec.d.ts +1 -1
  39. package/lib/tracing/decorators/span.spec.js +80 -15
  40. package/lib/tracing/decorators/span.spec.js.map +1 -1
  41. package/lib/tracing/trace.service.js.map +1 -1
  42. package/lib/tsconfig.tsbuildinfo +1 -1
  43. package/package.json +31 -30
  44. package/tsconfig.json +16 -0
  45. package/.editorconfig +0 -21
  46. package/.husky/commit-msg +0 -4
  47. package/.husky/pre-commit +0 -5
  48. package/.prettierrc.js +0 -47
  49. package/.vscode/settings.json +0 -8
  50. package/REFERENCE.md +0 -5
  51. package/commitlint.config.js +0 -7
  52. package/examples/nestjs-fastify-prom-grafana-tempo/.dockerignore +0 -5
  53. package/examples/nestjs-fastify-prom-grafana-tempo/Dockerfile +0 -17
  54. package/examples/nestjs-fastify-prom-grafana-tempo/README.md +0 -5
  55. package/examples/nestjs-fastify-prom-grafana-tempo/data/grafana-data/dashboards/nestjs-otel.json +0 -1838
  56. package/examples/nestjs-fastify-prom-grafana-tempo/data/grafana-data/dashboards-provisioning/dashboards.yaml +0 -14
  57. package/examples/nestjs-fastify-prom-grafana-tempo/data/grafana-data/datasources/datasource.yml +0 -60
  58. package/examples/nestjs-fastify-prom-grafana-tempo/docker-compose.yml +0 -86
  59. package/examples/nestjs-fastify-prom-grafana-tempo/etc/loki-local.yaml +0 -64
  60. package/examples/nestjs-fastify-prom-grafana-tempo/etc/prometheus.yaml +0 -27
  61. package/examples/nestjs-fastify-prom-grafana-tempo/etc/promtail-local.yaml +0 -43
  62. package/examples/nestjs-fastify-prom-grafana-tempo/etc/tempo-local.yaml +0 -45
  63. package/examples/nestjs-fastify-prom-grafana-tempo/grafana-dashboard.png +0 -0
  64. package/examples/nestjs-fastify-prom-grafana-tempo/loki-logs.png +0 -0
  65. package/examples/nestjs-fastify-prom-grafana-tempo/nest-cli.json +0 -4
  66. package/examples/nestjs-fastify-prom-grafana-tempo/package.json +0 -85
  67. package/examples/nestjs-fastify-prom-grafana-tempo/src/app.controller.spec.ts +0 -22
  68. package/examples/nestjs-fastify-prom-grafana-tempo/src/app.controller.ts +0 -26
  69. package/examples/nestjs-fastify-prom-grafana-tempo/src/app.module.ts +0 -22
  70. package/examples/nestjs-fastify-prom-grafana-tempo/src/app.service.ts +0 -8
  71. package/examples/nestjs-fastify-prom-grafana-tempo/src/logger/logger.module.ts +0 -17
  72. package/examples/nestjs-fastify-prom-grafana-tempo/src/logger/logger.ts +0 -33
  73. package/examples/nestjs-fastify-prom-grafana-tempo/src/main.ts +0 -20
  74. package/examples/nestjs-fastify-prom-grafana-tempo/src/tracing.ts +0 -48
  75. package/examples/nestjs-fastify-prom-grafana-tempo/test/app.e2e-spec.ts +0 -24
  76. package/examples/nestjs-fastify-prom-grafana-tempo/test/jest-e2e.json +0 -9
  77. package/examples/nestjs-fastify-prom-grafana-tempo/tsconfig.build.json +0 -4
  78. package/examples/nestjs-prom-grafana-tempo/.dockerignore +0 -5
  79. package/examples/nestjs-prom-grafana-tempo/Dockerfile +0 -17
  80. package/examples/nestjs-prom-grafana-tempo/README.md +0 -11
  81. package/examples/nestjs-prom-grafana-tempo/data/grafana-data/dashboards/nestjs-otel.json +0 -1838
  82. package/examples/nestjs-prom-grafana-tempo/data/grafana-data/dashboards-provisioning/dashboards.yaml +0 -14
  83. package/examples/nestjs-prom-grafana-tempo/data/grafana-data/datasources/datasource.yml +0 -60
  84. package/examples/nestjs-prom-grafana-tempo/docker-compose.yml +0 -86
  85. package/examples/nestjs-prom-grafana-tempo/etc/loki-local.yaml +0 -64
  86. package/examples/nestjs-prom-grafana-tempo/etc/prometheus.yaml +0 -27
  87. package/examples/nestjs-prom-grafana-tempo/etc/promtail-local.yaml +0 -43
  88. package/examples/nestjs-prom-grafana-tempo/etc/tempo-local.yaml +0 -45
  89. package/examples/nestjs-prom-grafana-tempo/grafana-dashboard.png +0 -0
  90. package/examples/nestjs-prom-grafana-tempo/loki-logs.png +0 -0
  91. package/examples/nestjs-prom-grafana-tempo/nest-cli.json +0 -4
  92. package/examples/nestjs-prom-grafana-tempo/package.json +0 -89
  93. package/examples/nestjs-prom-grafana-tempo/src/app.controller.spec.ts +0 -22
  94. package/examples/nestjs-prom-grafana-tempo/src/app.controller.ts +0 -26
  95. package/examples/nestjs-prom-grafana-tempo/src/app.module.ts +0 -23
  96. package/examples/nestjs-prom-grafana-tempo/src/app.service.ts +0 -8
  97. package/examples/nestjs-prom-grafana-tempo/src/logger/logger.module.ts +0 -17
  98. package/examples/nestjs-prom-grafana-tempo/src/logger/logger.ts +0 -33
  99. package/examples/nestjs-prom-grafana-tempo/src/main.ts +0 -26
  100. package/examples/nestjs-prom-grafana-tempo/src/team/team.controller.ts +0 -22
  101. package/examples/nestjs-prom-grafana-tempo/src/team/team.entity.ts +0 -18
  102. package/examples/nestjs-prom-grafana-tempo/src/team/team.module.ts +0 -9
  103. package/examples/nestjs-prom-grafana-tempo/src/team/team.service.ts +0 -30
  104. package/examples/nestjs-prom-grafana-tempo/src/tracing.ts +0 -48
  105. package/examples/nestjs-prom-grafana-tempo/test/app.e2e-spec.ts +0 -24
  106. package/examples/nestjs-prom-grafana-tempo/test/jest-e2e.json +0 -9
  107. package/examples/nestjs-prom-grafana-tempo/tsconfig.build.json +0 -4
  108. package/examples/nestjs-prom-grafana-tempo-otel-collector/.dockerignore +0 -5
  109. package/examples/nestjs-prom-grafana-tempo-otel-collector/Dockerfile +0 -17
  110. package/examples/nestjs-prom-grafana-tempo-otel-collector/README.md +0 -5
  111. package/examples/nestjs-prom-grafana-tempo-otel-collector/data/grafana-data/dashboards/nestjs-otel.json +0 -1838
  112. package/examples/nestjs-prom-grafana-tempo-otel-collector/data/grafana-data/dashboards-provisioning/dashboards.yaml +0 -14
  113. package/examples/nestjs-prom-grafana-tempo-otel-collector/data/grafana-data/datasources/datasource.yml +0 -60
  114. package/examples/nestjs-prom-grafana-tempo-otel-collector/docker-compose.yml +0 -101
  115. package/examples/nestjs-prom-grafana-tempo-otel-collector/etc/loki-local.yaml +0 -64
  116. package/examples/nestjs-prom-grafana-tempo-otel-collector/etc/otel-collector-config.yaml +0 -37
  117. package/examples/nestjs-prom-grafana-tempo-otel-collector/etc/prometheus.yaml +0 -28
  118. package/examples/nestjs-prom-grafana-tempo-otel-collector/etc/promtail-local.yaml +0 -43
  119. package/examples/nestjs-prom-grafana-tempo-otel-collector/etc/tempo-local.yaml +0 -45
  120. package/examples/nestjs-prom-grafana-tempo-otel-collector/grafana-dashboard.png +0 -0
  121. package/examples/nestjs-prom-grafana-tempo-otel-collector/loki-logs.png +0 -0
  122. package/examples/nestjs-prom-grafana-tempo-otel-collector/nest-cli.json +0 -4
  123. package/examples/nestjs-prom-grafana-tempo-otel-collector/package.json +0 -86
  124. package/examples/nestjs-prom-grafana-tempo-otel-collector/src/app.controller.spec.ts +0 -22
  125. package/examples/nestjs-prom-grafana-tempo-otel-collector/src/app.controller.ts +0 -26
  126. package/examples/nestjs-prom-grafana-tempo-otel-collector/src/app.module.ts +0 -22
  127. package/examples/nestjs-prom-grafana-tempo-otel-collector/src/app.service.ts +0 -8
  128. package/examples/nestjs-prom-grafana-tempo-otel-collector/src/logger/logger.module.ts +0 -17
  129. package/examples/nestjs-prom-grafana-tempo-otel-collector/src/logger/logger.ts +0 -33
  130. package/examples/nestjs-prom-grafana-tempo-otel-collector/src/main.ts +0 -13
  131. package/examples/nestjs-prom-grafana-tempo-otel-collector/src/tracing.ts +0 -54
  132. package/examples/nestjs-prom-grafana-tempo-otel-collector/test/app.e2e-spec.ts +0 -24
  133. package/examples/nestjs-prom-grafana-tempo-otel-collector/test/jest-e2e.json +0 -9
  134. package/examples/nestjs-prom-grafana-tempo-otel-collector/tsconfig.build.json +0 -4
  135. package/src/interfaces/opentelemetry-options.interface.ts +0 -59
  136. package/src/metrics/decorators/common.ts +0 -52
  137. package/src/metrics/decorators/counter.ts +0 -17
  138. package/src/metrics/decorators/histogram.ts +0 -10
  139. package/src/metrics/decorators/observable.ts +0 -28
  140. package/src/metrics/injector.ts +0 -14
  141. package/src/metrics/metric-data.ts +0 -116
  142. package/src/metrics/metric.service.ts +0 -48
  143. package/src/metrics/utils.spec.ts +0 -9
  144. package/src/metrics/utils.ts +0 -6
  145. package/src/middleware/api-metrics.middleware.ts +0 -174
  146. package/src/opentelemetry-core.module.ts +0 -175
  147. package/src/opentelemetry.constants.ts +0 -2
  148. package/src/opentelemetry.module.ts +0 -34
  149. package/src/tracing/decorators/span.spec.ts +0 -48
  150. package/src/tracing/decorators/span.ts +0 -23
  151. package/src/tracing/trace.service.ts +0 -17
@@ -12,62 +12,52 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.ApiMetricsMiddleware = exports.DEFAULT_RESPONSE_SIZE_BUCKETS = exports.DEFAULT_REQUEST_SIZE_BUCKETS = exports.DEFAULT_LONG_RUNNING_REQUEST_BUCKETS = void 0;
15
+ exports.ApiMetricsMiddleware = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
17
  const responseTime = require("response-time");
18
18
  const urlParser = require("url");
19
19
  const metric_service_1 = require("../metrics/metric.service");
20
20
  const opentelemetry_constants_1 = require("../opentelemetry.constants");
21
- exports.DEFAULT_LONG_RUNNING_REQUEST_BUCKETS = [
22
- 0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10,
23
- 30, 60, 120, 300, 600,
24
- ];
25
- exports.DEFAULT_REQUEST_SIZE_BUCKETS = [5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000, 10000];
26
- exports.DEFAULT_RESPONSE_SIZE_BUCKETS = [
27
- 5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000, 10000,
28
- ];
29
21
  let ApiMetricsMiddleware = class ApiMetricsMiddleware {
30
22
  constructor(metricService, options = {}) {
31
23
  this.metricService = metricService;
32
24
  this.options = options;
33
- this.defaultLongRunningRequestBuckets = exports.DEFAULT_LONG_RUNNING_REQUEST_BUCKETS;
34
- this.defaultRequestSizeBuckets = exports.DEFAULT_REQUEST_SIZE_BUCKETS;
35
- this.defaultResponseSizeBuckets = exports.DEFAULT_RESPONSE_SIZE_BUCKETS;
36
- this.requestTotal = this.metricService.getCounter('http_request_total', {
25
+ const { defaultAttributes = {}, ignoreUndefinedRoutes = false, } = options?.metrics?.apiMetrics;
26
+ this.defaultMetricAttributes = defaultAttributes;
27
+ this.ignoreUndefinedRoutes = ignoreUndefinedRoutes;
28
+ this.httpServerRequestCount = this.metricService.getCounter('http.server.request.count', {
37
29
  description: 'Total number of HTTP requests',
30
+ unit: 'requests',
38
31
  });
39
- this.responseTotal = this.metricService.getCounter('http_response_total', {
32
+ this.httpServerResponseCount = this.metricService.getCounter('http.server.response.count', {
40
33
  description: 'Total number of HTTP responses',
34
+ unit: 'responses',
41
35
  });
42
- this.responseSuccessTotal = this.metricService.getCounter('http_response_success_total', {
43
- description: 'Total number of all successful responses',
36
+ this.httpServerAbortCount = this.metricService.getCounter('http.server.abort.count', {
37
+ description: 'Total number of data transfers aborted',
38
+ unit: 'requests',
44
39
  });
45
- this.responseErrorTotal = this.metricService.getCounter('http_response_error_total', {
46
- description: 'Total number of all response errors',
40
+ this.httpServerDuration = this.metricService.getHistogram('http.server.duration', {
41
+ description: 'The duration of the inbound HTTP request',
42
+ unit: 'ms',
47
43
  });
48
- this.responseClientErrorTotal = this.metricService.getCounter('http_client_error_total', {
49
- description: 'Total number of client error requests',
44
+ this.httpServerRequestSize = this.metricService.getHistogram('http.server.request.size', {
45
+ description: 'Size of incoming bytes',
46
+ unit: 'By',
50
47
  });
51
- this.responseServerErrorTotal = this.metricService.getCounter('http_server_error_total', {
52
- description: 'Total number of server error requests',
48
+ this.httpServerResponseSize = this.metricService.getHistogram('http.server.response.size', {
49
+ description: 'Size of outgoing bytes',
50
+ unit: 'By',
53
51
  });
54
- this.serverAbortsTotal = this.metricService.getCounter('http_server_aborts_total', {
55
- description: 'Total number of data transfers aborted',
56
- });
57
- const { timeBuckets = [], requestSizeBuckets = [], responseSizeBuckets = [], defaultAttributes = {}, ignoreUndefinedRoutes = false, } = options?.metrics?.apiMetrics;
58
- this.defaultAttributes = defaultAttributes;
59
- this.ignoreUndefinedRoutes = ignoreUndefinedRoutes;
60
- this.requestDuration = this.metricService.getHistogram('http_request_duration_seconds', {
61
- boundaries: timeBuckets.length > 0 ? timeBuckets : this.defaultLongRunningRequestBuckets,
62
- description: 'HTTP latency value recorder in seconds',
52
+ this.httpServerResponseSuccessCount = this.metricService.getCounter('http.server.response.success.count', {
53
+ description: 'Total number of all successful responses',
54
+ unit: 'responses',
63
55
  });
64
- this.requestSizeHistogram = this.metricService.getHistogram('http_request_size_bytes', {
65
- boundaries: requestSizeBuckets.length > 0 ? requestSizeBuckets : this.defaultRequestSizeBuckets,
66
- description: 'Current total of incoming bytes',
56
+ this.httpServerResponseErrorCount = this.metricService.getCounter('http.server.response.error.count', {
57
+ description: 'Total number of all response errors',
67
58
  });
68
- this.responseSizeHistogram = this.metricService.getHistogram('http_response_size_bytes', {
69
- boundaries: responseSizeBuckets.length > 0 ? responseSizeBuckets : this.defaultResponseSizeBuckets,
70
- description: 'Current total of outgoing bytes',
59
+ this.httpClientRequestErrorCount = this.metricService.getCounter('http.client.request.error.count', {
60
+ description: 'Total number of client error requests',
71
61
  });
72
62
  }
73
63
  use(req, res, next) {
@@ -83,37 +73,37 @@ let ApiMetricsMiddleware = class ApiMetricsMiddleware {
83
73
  else {
84
74
  path = urlParser.parse(url).pathname;
85
75
  }
86
- this.requestTotal.add(1, { method, path });
76
+ this.httpServerRequestCount.add(1, { method, path });
87
77
  const requestLength = parseInt(req.headers['content-length'], 10) || 0;
88
78
  const responseLength = parseInt(res.getHeader('Content-Length'), 10) || 0;
89
79
  const status = res.statusCode || 500;
90
80
  const attributes = {
91
- method, status, path, ...this.defaultAttributes,
81
+ method, status, path, ...this.defaultMetricAttributes,
92
82
  };
93
- this.requestSizeHistogram.record(requestLength, attributes);
94
- this.responseSizeHistogram.record(responseLength, attributes);
95
- this.responseTotal.add(1, attributes);
96
- this.requestDuration.record(time / 1000, attributes);
83
+ this.httpServerRequestSize.record(requestLength, attributes);
84
+ this.httpServerResponseSize.record(responseLength, attributes);
85
+ this.httpServerResponseCount.add(1, attributes);
86
+ this.httpServerDuration.record(time / 1000, attributes);
97
87
  const codeClass = this.getStatusCodeClass(status);
98
88
  switch (codeClass) {
99
89
  case 'success':
100
- this.responseSuccessTotal.add(1);
90
+ this.httpServerResponseSuccessCount.add(1);
101
91
  break;
102
92
  case 'redirect':
103
- this.responseSuccessTotal.add(1);
93
+ this.httpServerResponseSuccessCount.add(1);
104
94
  break;
105
95
  case 'client_error':
106
- this.responseErrorTotal.add(1);
107
- this.responseClientErrorTotal.add(1);
96
+ this.httpServerResponseErrorCount.add(1);
97
+ this.httpClientRequestErrorCount.add(1);
108
98
  break;
109
99
  case 'server_error':
110
- this.responseErrorTotal.add(1);
111
- this.responseServerErrorTotal.add(1);
100
+ this.httpServerResponseErrorCount.add(1);
101
+ this.httpClientRequestErrorCount.add(1);
112
102
  break;
113
103
  }
114
104
  req.on('end', () => {
115
105
  if (req.aborted === true) {
116
- this.serverAbortsTotal.add(1);
106
+ this.httpServerAbortCount.add(1);
117
107
  }
118
108
  });
119
109
  })(req, res, next);
@@ -1 +1 @@
1
- {"version":3,"file":"api-metrics.middleware.js","sourceRoot":"","sources":["../../src/middleware/api-metrics.middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-metrics.middleware.js","sourceRoot":"","sources":["../../src/middleware/api-metrics.middleware.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2DAAyC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,2DAAyC"}
@@ -21,13 +21,12 @@ const metric_service_1 = require("./metrics/metric.service");
21
21
  const middleware_1 = require("./middleware");
22
22
  const opentelemetry_constants_1 = require("./opentelemetry.constants");
23
23
  const trace_service_1 = require("./tracing/trace.service");
24
- const opentelemetry_module_1 = require("./opentelemetry.module");
25
24
  let OpenTelemetryCoreModule = OpenTelemetryCoreModule_1 = class OpenTelemetryCoreModule {
26
25
  constructor(options = {}) {
27
26
  this.options = options;
28
27
  this.logger = new common_1.Logger('OpenTelemetryModule');
29
28
  }
30
- static forRoot(options = { metrics: {} }) {
29
+ static forRoot(options = {}) {
31
30
  const openTelemetryModuleOptions = {
32
31
  provide: opentelemetry_constants_1.OPENTELEMETRY_MODULE_OPTIONS,
33
32
  useValue: options,
@@ -48,7 +47,7 @@ let OpenTelemetryCoreModule = OpenTelemetryCoreModule_1 = class OpenTelemetryCor
48
47
  static forRootAsync(options) {
49
48
  const asyncProviders = this.createAsyncProviders(options);
50
49
  return {
51
- module: opentelemetry_module_1.OpenTelemetryModule,
50
+ module: OpenTelemetryCoreModule_1,
52
51
  imports: [...(options.imports || [])],
53
52
  providers: [
54
53
  ...asyncProviders,
@@ -62,7 +61,7 @@ let OpenTelemetryCoreModule = OpenTelemetryCoreModule_1 = class OpenTelemetryCor
62
61
  };
63
62
  }
64
63
  configure(consumer) {
65
- const { apiMetrics = { enable: false }, } = this.options?.metrics;
64
+ const { apiMetrics = { enable: false }, } = this.options?.metrics ?? {};
66
65
  if (apiMetrics.enable === true) {
67
66
  if (apiMetrics?.ignoreRoutes && apiMetrics?.ignoreRoutes.length > 0) {
68
67
  consumer.apply(middleware_1.ApiMetricsMiddleware).exclude(...apiMetrics.ignoreRoutes).forRoutes('*');
@@ -73,18 +72,12 @@ let OpenTelemetryCoreModule = OpenTelemetryCoreModule_1 = class OpenTelemetryCor
73
72
  }
74
73
  }
75
74
  async onApplicationBootstrap() {
76
- let defaultMetrics = false;
77
75
  let hostMetrics = false;
78
76
  if (this.options?.metrics) {
79
- defaultMetrics = this.options.metrics.defaultMetrics
80
- !== undefined ? this.options.metrics.defaultMetrics : false;
81
77
  hostMetrics = this.options.metrics.hostMetrics
82
78
  !== undefined ? this.options.metrics.hostMetrics : false;
83
79
  }
84
80
  const meterProvider = api_metrics_1.metrics.getMeterProvider();
85
- if (defaultMetrics) {
86
- require('opentelemetry-node-metrics')(meterProvider);
87
- }
88
81
  if (hostMetrics) {
89
82
  const host = new host_metrics_1.HostMetrics({ meterProvider, name: 'host-metrics' });
90
83
  host.start();
@@ -120,7 +113,6 @@ let OpenTelemetryCoreModule = OpenTelemetryCoreModule_1 = class OpenTelemetryCor
120
113
  {
121
114
  provide: useClass,
122
115
  useClass,
123
- inject: [...(options.inject || [])],
124
116
  },
125
117
  ];
126
118
  }
@@ -1 +1 @@
1
- {"version":3,"file":"opentelemetry-core.module.js","sourceRoot":"","sources":["../src/opentelemetry-core.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opentelemetry-core.module.js","sourceRoot":"","sources":["../src/opentelemetry-core.module.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"opentelemetry.module.js","sourceRoot":"","sources":["../src/opentelemetry.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,2EAAsE;AAStE,IAAa,mBAAmB,2BAAhC,MAAa,mBAAmB;IAK9B,MAAM,CAAC,OAAO,CAAC,OAAoC;QACjD,OAAO;YACL,MAAM,EAAE,qBAAmB;YAC3B,OAAO,EAAE,CAAC,mDAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SACpD,CAAC;IACJ,CAAC;IAOD,MAAM,CAAC,YAAY,CAAC,OAAwC;QAC1D,OAAO;YACL,MAAM,EAAE,qBAAmB;YAC3B,OAAO,EAAE,CAAC,mDAAuB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;SACzD,CAAC;IACJ,CAAC;CACF,CAAA;AAvBY,mBAAmB;IAD/B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,mBAAmB,CAuB/B;AAvBY,kDAAmB"}
1
+ {"version":3,"file":"opentelemetry.module.js","sourceRoot":"","sources":["../src/opentelemetry.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,2EAAsE;AAS/D,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAK9B,MAAM,CAAC,OAAO,CAAC,OAAoC;QACjD,OAAO;YACL,MAAM,EAAE,qBAAmB;YAC3B,OAAO,EAAE,CAAC,mDAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SACpD,CAAC;IACJ,CAAC;IAOD,MAAM,CAAC,YAAY,CAAC,OAAwC;QAC1D,OAAO;YACL,MAAM,EAAE,qBAAmB;YAC3B,OAAO,EAAE,CAAC,mDAAuB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;SACzD,CAAC;IACJ,CAAC;CACF,CAAA;AAvBY,mBAAmB;IAD/B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,mBAAmB,CAuB/B;AAvBY,kDAAmB"}
@@ -0,0 +1 @@
1
+ export declare const copyMetadataFromFunctionToFunction: (originalFunction: Function, newFunction: Function) => void;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.copyMetadataFromFunctionToFunction = void 0;
4
+ const copyMetadataFromFunctionToFunction = (originalFunction, newFunction) => {
5
+ Reflect.getMetadataKeys(originalFunction).forEach(metadataKey => {
6
+ Reflect.defineMetadata(metadataKey, Reflect.getMetadata(metadataKey, originalFunction), newFunction);
7
+ });
8
+ };
9
+ exports.copyMetadataFromFunctionToFunction = copyMetadataFromFunctionToFunction;
10
+ //# sourceMappingURL=opentelemetry.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opentelemetry.utils.js","sourceRoot":"","sources":["../src/opentelemetry.utils.ts"],"names":[],"mappings":";;;AAAO,MAAM,kCAAkC,GAAG,CAChD,gBAA0B,EAC1B,WAAqB,EACf,EAAE;IAIR,OAAO,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;QAC9D,OAAO,CAAC,cAAc,CACpB,WAAW,EACX,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,gBAAgB,CAAC,EAClD,WAAW,CACZ,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAdW,QAAA,kCAAkC,sCAc7C"}
@@ -1 +1,2 @@
1
- export declare function Span(name?: string): (target: any, propertyKey: string, propertyDescriptor: PropertyDescriptor) => void;
1
+ import { SpanOptions } from '@opentelemetry/api';
2
+ export declare function Span(name?: string, options?: SpanOptions): (target: any, propertyKey: string, propertyDescriptor: PropertyDescriptor) => void;
@@ -2,23 +2,43 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Span = void 0;
4
4
  const api_1 = require("@opentelemetry/api");
5
- function Span(name) {
5
+ const opentelemetry_utils_1 = require("../../opentelemetry.utils");
6
+ const recordException = (span, error) => {
7
+ span.recordException(error);
8
+ span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: error.message });
9
+ };
10
+ function Span(name, options = {}) {
6
11
  return (target, propertyKey, propertyDescriptor) => {
7
- const method = propertyDescriptor.value;
8
- propertyDescriptor.value = function PropertyDescriptor(...args) {
12
+ const originalFunction = propertyDescriptor.value;
13
+ const wrappedFunction = function PropertyDescriptor(...args) {
9
14
  const tracer = api_1.trace.getTracer('default');
10
15
  const spanName = name || `${target.constructor.name}.${propertyKey}`;
11
- return tracer.startActiveSpan(spanName, span => {
12
- if (method.constructor.name === 'AsyncFunction') {
13
- return method.apply(this, args).finally(() => {
16
+ return tracer.startActiveSpan(spanName, options, span => {
17
+ if (originalFunction.constructor.name === 'AsyncFunction') {
18
+ return originalFunction
19
+ .apply(this, args)
20
+ .catch(error => {
21
+ recordException(span, error);
22
+ throw error;
23
+ })
24
+ .finally(() => {
14
25
  span.end();
15
26
  });
16
27
  }
17
- const result = method.apply(this, args);
18
- span.end();
19
- return result;
28
+ try {
29
+ return originalFunction.apply(this, args);
30
+ }
31
+ catch (error) {
32
+ recordException(span, error);
33
+ throw error;
34
+ }
35
+ finally {
36
+ span.end();
37
+ }
20
38
  });
21
39
  };
40
+ propertyDescriptor.value = wrappedFunction;
41
+ (0, opentelemetry_utils_1.copyMetadataFromFunctionToFunction)(originalFunction, wrappedFunction);
22
42
  };
23
43
  }
24
44
  exports.Span = Span;
@@ -1 +1 @@
1
- {"version":3,"file":"span.js","sourceRoot":"","sources":["../../../src/tracing/decorators/span.ts"],"names":[],"mappings":";;;AAAA,4CAA2C;AAE3C,SAAgB,IAAI,CAAC,IAAa;IAChC,OAAO,CAAC,MAAW,EAAE,WAAmB,EAAE,kBAAsC,EAAE,EAAE;QAClF,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC;QAExC,kBAAkB,CAAC,KAAK,GAAG,SAAS,kBAAkB,CAAC,GAAG,IAAW;YACnE,MAAM,MAAM,GAAG,WAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,IAAI,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC;YAErE,OAAO,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE;gBAC7C,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,eAAe,EAAE;oBAC/C,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;wBAC3C,IAAI,CAAC,GAAG,EAAE,CAAC;oBACb,CAAC,CAAC,CAAC;iBACJ;gBACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACxC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACX,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AApBD,oBAoBC"}
1
+ {"version":3,"file":"span.js","sourceRoot":"","sources":["../../../src/tracing/decorators/span.ts"],"names":[],"mappings":";;;AAAA,4CAE4B;AAC5B,mEAA+E;AAE/E,MAAM,eAAe,GAAG,CAAC,IAAa,EAAE,KAAU,EAAE,EAAE;IACpD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,oBAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AACzE,CAAC,CAAC;AAEF,SAAgB,IAAI,CAAC,IAAa,EAAE,UAAuB,EAAE;IAC3D,OAAO,CAAC,MAAW,EAAE,WAAmB,EAAE,kBAAsC,EAAE,EAAE;QAClF,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,KAAK,CAAC;QAClD,MAAM,eAAe,GAAG,SAAS,kBAAkB,CAAC,GAAG,IAAW;YAChE,MAAM,MAAM,GAAG,WAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,IAAI,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC;YAErE,OAAO,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;gBACtD,IAAI,gBAAgB,CAAC,WAAW,CAAC,IAAI,KAAK,eAAe,EAAE;oBACzD,OAAO,gBAAgB;yBACpB,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;yBACjB,KAAK,CAAC,KAAK,CAAC,EAAE;wBACb,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBAE7B,MAAM,KAAK,CAAC;oBACd,CAAC,CAAC;yBACD,OAAO,CAAC,GAAG,EAAE;wBACZ,IAAI,CAAC,GAAG,EAAE,CAAC;oBACb,CAAC,CAAC,CAAC;iBACN;gBAED,IAAI;oBACF,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;iBAC3C;gBAAC,OAAO,KAAK,EAAE;oBACd,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBAE7B,MAAM,KAAK,CAAC;iBACb;wBAAS;oBACR,IAAI,CAAC,GAAG,EAAE,CAAC;iBACZ;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,kBAAkB,CAAC,KAAK,GAAG,eAAe,CAAC;QAE3C,IAAA,wDAAkC,EAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;IACxE,CAAC,CAAC;AACJ,CAAC;AArCD,oBAqCC"}
@@ -1 +1 @@
1
- export {};
1
+ import 'reflect-metadata';
@@ -9,16 +9,23 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
+ require("reflect-metadata");
12
13
  const api_1 = require("@opentelemetry/api");
13
14
  const sdk_node_1 = require("@opentelemetry/sdk-node");
15
+ const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
16
+ const common_1 = require("@nestjs/common");
14
17
  const span_1 = require("./span");
18
+ const TestDecoratorThatSetsMetadata = () => (0, common_1.SetMetadata)('some-metadata', true);
15
19
  class TestSpan {
16
- singleSpan() {
17
- return api_1.trace.getSpan(api_1.context.active());
18
- }
20
+ singleSpan() { }
19
21
  doubleSpan() {
20
22
  return this.singleSpan();
21
23
  }
24
+ fooProducerSpan() { }
25
+ error() {
26
+ throw new Error('hello world');
27
+ }
28
+ metadata() { }
22
29
  }
23
30
  __decorate([
24
31
  (0, span_1.Span)(),
@@ -32,27 +39,85 @@ __decorate([
32
39
  __metadata("design:paramtypes", []),
33
40
  __metadata("design:returntype", void 0)
34
41
  ], TestSpan.prototype, "doubleSpan", null);
42
+ __decorate([
43
+ (0, span_1.Span)('foo', { kind: api_1.SpanKind.PRODUCER }),
44
+ __metadata("design:type", Function),
45
+ __metadata("design:paramtypes", []),
46
+ __metadata("design:returntype", void 0)
47
+ ], TestSpan.prototype, "fooProducerSpan", null);
48
+ __decorate([
49
+ (0, span_1.Span)(),
50
+ __metadata("design:type", Function),
51
+ __metadata("design:paramtypes", []),
52
+ __metadata("design:returntype", void 0)
53
+ ], TestSpan.prototype, "error", null);
54
+ __decorate([
55
+ (0, span_1.Span)(),
56
+ TestDecoratorThatSetsMetadata(),
57
+ __metadata("design:type", Function),
58
+ __metadata("design:paramtypes", []),
59
+ __metadata("design:returntype", void 0)
60
+ ], TestSpan.prototype, "metadata", null);
35
61
  describe('Span', () => {
36
62
  let instance;
37
- let otelSdk;
38
- beforeEach(async () => {
63
+ let traceExporter;
64
+ let spanProcessor;
65
+ let provider;
66
+ beforeAll(async () => {
39
67
  instance = new TestSpan();
40
- otelSdk = new sdk_node_1.NodeSDK({
41
- traceExporter: new sdk_node_1.tracing.ConsoleSpanExporter(),
42
- spanProcessor: new sdk_node_1.tracing.NoopSpanProcessor(),
43
- });
44
- await otelSdk.start();
68
+ traceExporter = new sdk_node_1.tracing.InMemorySpanExporter();
69
+ spanProcessor = new sdk_node_1.tracing.SimpleSpanProcessor(traceExporter);
70
+ provider = new sdk_trace_node_1.NodeTracerProvider();
71
+ provider.addSpanProcessor(spanProcessor);
72
+ provider.register();
45
73
  });
46
74
  afterEach(async () => {
47
- await otelSdk.shutdown();
75
+ spanProcessor.forceFlush();
76
+ traceExporter.reset();
77
+ });
78
+ afterAll(async () => {
79
+ await provider.shutdown();
80
+ });
81
+ it('should maintain reflect metadataa', async () => {
82
+ expect(Reflect.getMetadata('some-metadata', instance.metadata)).toEqual(true);
48
83
  });
49
84
  it('should set correct span', async () => {
50
- const response = instance.singleSpan();
51
- expect(response.name).toEqual('TestSpan.singleSpan');
85
+ instance.singleSpan();
86
+ const spans = traceExporter.getFinishedSpans();
87
+ expect(spans).toHaveLength(1);
88
+ expect(spans.map(span => span.name)).toEqual(['TestSpan.singleSpan']);
89
+ });
90
+ it('should set correct span options', async () => {
91
+ instance.fooProducerSpan();
92
+ const spans = traceExporter.getFinishedSpans();
93
+ expect(spans).toHaveLength(1);
94
+ expect(spans.map(span => span.kind)).toEqual([api_1.SpanKind.PRODUCER]);
52
95
  });
53
96
  it('should set correct span even when calling other method with Span decorator', async () => {
54
- const response = instance.doubleSpan();
55
- expect(response.name).toEqual('TestSpan.singleSpan');
97
+ instance.doubleSpan();
98
+ const spans = traceExporter.getFinishedSpans();
99
+ expect(spans).toHaveLength(2);
100
+ expect(spans.map(span => span.name)).toEqual(['TestSpan.singleSpan', 'TestSpan.doubleSpan']);
101
+ });
102
+ it('should propagate errors', () => {
103
+ expect(instance.error).toThrowError('hello world');
104
+ });
105
+ it('should set setStatus to ERROR and message to error message', async () => {
106
+ expect(instance.error).toThrowError('hello world');
107
+ const spans = traceExporter.getFinishedSpans();
108
+ expect(spans).toHaveLength(1);
109
+ expect(spans[0].status).toEqual({ code: api_1.SpanStatusCode.ERROR, message: 'hello world' });
110
+ });
111
+ it('should set recordException with error', () => {
112
+ expect(instance.error).toThrowError('hello world');
113
+ const spans = traceExporter.getFinishedSpans();
114
+ expect(spans).toHaveLength(1);
115
+ expect(spans[0].events).toHaveLength(1);
116
+ expect(spans[0].events[0]).toEqual({
117
+ name: 'exception',
118
+ attributes: expect.anything(),
119
+ time: expect.anything(),
120
+ });
56
121
  });
57
122
  });
58
123
  //# sourceMappingURL=span.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"span.spec.js","sourceRoot":"","sources":["../../../src/tracing/decorators/span.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,4CAAoD;AACpD,sDAA2D;AAC3D,iCAA8B;AAE9B,MAAM,QAAQ;IAEZ,UAAU;QACR,OAAO,WAAK,CAAC,OAAO,CAAC,aAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAGD,UAAU;QACR,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;CACF;AARC;IADC,IAAA,WAAI,GAAE;;;;0CAGN;AAGD;IADC,IAAA,WAAI,GAAE;;;;0CAGN;AAGH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IACpB,IAAI,QAAkB,CAAC;IACvB,IAAI,OAAgB,CAAC;IAErB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAE1B,OAAO,GAAG,IAAI,kBAAO,CAAC;YACpB,aAAa,EAAE,IAAI,kBAAO,CAAC,mBAAmB,EAAE;YAIhD,aAAa,EAAE,IAAI,kBAAO,CAAC,iBAAiB,EAAE;SAC/C,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,CAAE,QAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;QAC1F,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,CAAE,QAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"span.spec.js","sourceRoot":"","sources":["../../../src/tracing/decorators/span.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"trace.service.js","sourceRoot":"","sources":["../../src/tracing/trace.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,4CAA0D;AAC1D,2CAA4C;AAG5C,IAAa,YAAY,GAAzB,MAAa,YAAY;IAChB,SAAS;QACd,OAAO,WAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAEM,OAAO;QACZ,OAAO,WAAK,CAAC,OAAO,CAAC,aAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAEM,SAAS,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF,CAAA;AAZY,YAAY;IADxB,IAAA,mBAAU,GAAE;GACA,YAAY,CAYxB;AAZY,oCAAY"}
1
+ {"version":3,"file":"trace.service.js","sourceRoot":"","sources":["../../src/tracing/trace.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,4CAA0D;AAC1D,2CAA4C;AAGrC,IAAM,YAAY,GAAlB,MAAM,YAAY;IAChB,SAAS;QACd,OAAO,WAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAEM,OAAO;QACZ,OAAO,WAAK,CAAC,OAAO,CAAC,aAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAEM,SAAS,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF,CAAA;AAZY,YAAY;IADxB,IAAA,mBAAU,GAAE;GACA,YAAY,CAYxB;AAZY,oCAAY"}