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
package/.eslintignore ADDED
@@ -0,0 +1 @@
1
+ examples/**/*.js
package/.eslintrc.js ADDED
@@ -0,0 +1,27 @@
1
+ module.exports = {
2
+ extends: ['airbnb-base', 'airbnb-typescript/base'],
3
+ parserOptions: {
4
+ project: './tsconfig.json',
5
+ createDefaultProgram: true,
6
+ },
7
+ ignorePatterns: ['**/examples/**/*', 'lib/**/*'],
8
+ rules: {
9
+ 'import/prefer-default-export': 'off',
10
+ 'import/no-cycle': 'off',
11
+ 'no-restricted-syntax': [
12
+ 'error',
13
+ 'ForInStatement',
14
+ 'LabeledStatement',
15
+ 'WithStatement',
16
+ ],
17
+ 'no-unused-vars': 'off',
18
+ '@typescript-eslint/no-unused-vars': 'off',
19
+ 'arrow-parens': 'off',
20
+ 'import/no-unresolved': 'off',
21
+ 'new-cap': 'off',
22
+ 'class-methods-use-this': 'off',
23
+ 'no-case-declarations': 'off',
24
+ 'no-promise-executor-return': 'off',
25
+ 'no-unsafe-optional-chaining': 'off',
26
+ },
27
+ };
package/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.0.0](https://www.github.com/pragmaticivan/nestjs-otel/compare/v3.0.4...v4.0.0) (2022-08-29)
4
+
5
+
6
+ ### ⚠ BREAKING CHANGES
7
+
8
+ * support latest metric sdk
9
+
10
+ ### Features
11
+
12
+ * **build:** update dependencies ([c2f8b7b](https://www.github.com/pragmaticivan/nestjs-otel/commit/c2f8b7b9fbe116953521fb6b5d7f4648d09d7712))
13
+ * support latest metric sdk ([e8d2e96](https://www.github.com/pragmaticivan/nestjs-otel/commit/e8d2e96da5161cd5c4ee78290244144f5849ec8b))
14
+ * **tracing:** pass options with span decorator ([3424b88](https://www.github.com/pragmaticivan/nestjs-otel/commit/3424b884e949792679dac79f7b3624cc6e67b110))
15
+ * update remaining counters ([d11f6d9](https://www.github.com/pragmaticivan/nestjs-otel/commit/d11f6d98cf25639c01e24c9007a43d3e06c32738))
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * forRootAsync uses the wrong module and empty options breaks the configure method ([c2dc102](https://www.github.com/pragmaticivan/nestjs-otel/commit/c2dc102d41f2ddc1ca3e8a814e7243fc4cc4b773))
21
+
22
+ ### [3.0.4](https://www.github.com/pragmaticivan/nestjs-otel/compare/v3.0.3...v3.0.4) (2022-03-29)
23
+
24
+
25
+ ### Bug Fixes
26
+
27
+ * **metrics:** make sure metadata is kept ([de7ca0f](https://www.github.com/pragmaticivan/nestjs-otel/commit/de7ca0f387dbe44142c58c827ccd777348ae491b))
28
+ * **tracing:** make sure metadata is kept ([c34ae56](https://www.github.com/pragmaticivan/nestjs-otel/commit/c34ae561e73daea879f6871f2f781a565d03a95a))
29
+
30
+ ### [3.0.3](https://www.github.com/pragmaticivan/nestjs-otel/compare/v3.0.2...v3.0.3) (2022-03-25)
31
+
32
+
33
+ ### Bug Fixes
34
+
35
+ * **tracing:** record exception and set correct span status ([616c12b](https://www.github.com/pragmaticivan/nestjs-otel/commit/616c12b157f7736e9fd45cd38bf9a4c21c11e140))
36
+
3
37
  ### [3.0.2](https://www.github.com/pragmaticivan/nestjs-otel/compare/v3.0.1...v3.0.2) (2022-03-24)
4
38
 
5
39
 
package/README.md CHANGED
@@ -118,10 +118,8 @@ bootstrap();
118
118
  const OpenTelemetryModuleConfig = OpenTelemetryModule.forRoot({
119
119
  metrics: {
120
120
  hostMetrics: true, // Includes Host Metrics
121
- defaultMetrics: true, // Includes Default Metrics
122
121
  apiMetrics: {
123
122
  enable: true, // Includes api metrics
124
- timeBuckets: [], // You can change the default time buckets
125
123
  defaultAttributes: {
126
124
  // You can set default labels for api metrics
127
125
  custom: 'label',
@@ -264,18 +262,17 @@ export class AppController {
264
262
 
265
263
  ## API Metrics with Middleware
266
264
 
267
- | Impl | Metric | Description | Labels | Metric Type |
268
- | ---- | ----------------------------- | ----------------------------------------- | -------------------- | ----------- |
269
- | ✅ | http_request_total | Total number of HTTP requests. | method, path | Counter |
270
- | ✅ | http_response_total | Total number of HTTP responses. | method, status, path | Counter |
271
- | ✅ | http_response_success_total | Total number of all successful responses. | - | Counter |
272
- | ✅ | http_response_error_total | Total number of all response errors. | - | Counter |
273
- | ✅ | http_request_duration_seconds | HTTP latency value recorder in seconds. | method, status, path | Histogram |
274
- | ✅ | http_client_error_total | Total number of client error requests. | - | Counter |
275
- | ✅ | http_server_error_total | Total number of server error requests. | - | Counter |
276
- | ✅ | http_server_aborts_total | Total number of data transfers aborted. | - | Counter |
277
- | ✅ | http_request_size_bytes | Current total of incoming bytes. | - | Histogram |
278
- | ✅ | http_response_size_bytes | Current total of outgoing bytes. | - | Histogram |
265
+ | Impl | Otel Metric | Prometheus Metric | Description | Metric Type |
266
+ | ---- | -------------------------------- | --------------------------------------- | ----------------------------------------- | ----------- |
267
+ | ✅ | http.server.request.count | http_server_request_count_total | Total number of HTTP requests. | Counter |
268
+ | ✅ | http.server.response.count | http_server_response_count_total | Total number of HTTP responses. | Counter |
269
+ | ✅ | http.server.abort.count | http_server_abort_count_total | Total number of data transfers aborted. | Counter |
270
+ | ✅ | http.server.duration | http_server_duration | The duration of the inbound HTTP request. | Histogram |
271
+ | ✅ | http.server.request.size | http_server_request_size | Size of incoming bytes. | Histogram |
272
+ | ✅ | http.server.response.size | http_server_response_size | Size of outgoing bytes. | Histogram |
273
+ | ✅ | http.server.response.success.count | http_server_response_success_count_total | Total number of all successful responses. | Counter |
274
+ | ✅ | http.server.response.error.count | http_server_response_error_count_total | Total number of all response errors'. | Counter |
275
+ | ✅ | http.client.request.error.count | http_client_request_error_count_total | Total number of client error requests. | Counter |
279
276
 
280
277
  ## Prometheus Metrics
281
278
 
@@ -320,16 +317,11 @@ export const logger: Logger = Pino(loggerOptions);
320
317
 
321
318
  ## Examples
322
319
 
323
- A full working example can be found in `/examples/nestjs-prom-grafana-tempo`. This includes a nestjs application fully integrated with prometheus, grafana, loki and tempo.
324
-
325
- A dashboard example is also available:
326
-
327
- ![Grafana Dashboard](./examples/nestjs-prom-grafana-tempo/grafana-dashboard.png)
328
-
329
- Logs are automatically associated with tracing (Loki + Tempo):
330
-
331
- ![Loki](./examples/nestjs-prom-grafana-tempo/loki-logs.png)
320
+ A full working examples are available. This includes a nestjs application fully integrated with prometheus, grafana, loki and tempo:
332
321
 
322
+ * [nestjs-otel-prom-grafana-tempo-otel-collector](https://github.com/pragmaticivan/nestjs-otel-prom-grafana-tempo-otel-collector)
323
+ * [nestjs-otel-fastify-prom-grafana-tempo ](https://github.com/pragmaticivan/nestjs-otel-fastify-prom-grafana-tempo )
324
+ * [nestjs-otel-prom-grafana-tempo ](https://github.com/pragmaticivan/nestjs-otel-prom-grafana-tempo )
333
325
  ## Stargazers over time
334
326
 
335
327
  [![Stargazers over time](https://starchart.cc/pragmaticivan/nestjs-otel.svg)](https://starchart.cc/pragmaticivan/nestjs-otel)
package/lib/index.js CHANGED
@@ -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];
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAuC;AACvC,4DAA0C;AAC1C,0DAAwC;AACxC,2DAAyC;AACzC,qDAAmC;AACnC,uDAAqC;AACrC,4DAA0C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,yDAAuC;AACvC,4DAA0C;AAC1C,0DAAwC;AACxC,2DAAyC;AACzC,qDAAmC;AACnC,uDAAqC;AACrC,4DAA0C"}
@@ -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/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oEAAkD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oEAAkD"}
@@ -1,5 +1,5 @@
1
1
  import { ModuleMetadata, Type, Abstract } from '@nestjs/common';
2
- import { Attributes } from '@opentelemetry/api-metrics';
2
+ import { MetricAttributes } from '@opentelemetry/api-metrics';
3
3
  import { RouteInfo } from '@nestjs/common/interfaces';
4
4
  export declare type OpenTelemetryModuleOptions = {
5
5
  metrics?: OpenTelemetryMetrics;
@@ -15,14 +15,10 @@ export interface OpenTelemetryModuleAsyncOptions extends Pick<ModuleMetadata, 'i
15
15
  inject?: (string | symbol | Function | Type<any> | Abstract<any>)[];
16
16
  }
17
17
  export declare type OpenTelemetryMetrics = {
18
- defaultMetrics?: boolean;
19
18
  hostMetrics?: boolean;
20
19
  apiMetrics?: {
21
20
  enable?: boolean;
22
- timeBuckets?: number[];
23
- requestSizeBuckets?: number[];
24
- responseSizeBuckets?: number[];
25
- defaultAttributes?: Attributes;
21
+ defaultAttributes?: MetricAttributes;
26
22
  ignoreRoutes?: (string | RouteInfo)[];
27
23
  ignoreUndefinedRoutes?: boolean;
28
24
  };
@@ -1,5 +1,5 @@
1
1
  import { MetricOptions } from '@opentelemetry/api-metrics';
2
- export declare const OtelInstanceCounter: (options?: MetricOptions) => <T extends new (...args: any[]) => {}>(ctor: T) => {
2
+ export declare const OtelInstanceCounter: (options?: MetricOptions) => <T extends new (...args: any[]) => {}>(originalClass: T) => {
3
3
  new (...args: any[]): {};
4
4
  } & T;
5
5
  export declare const OtelMethodCounter: (options?: MetricOptions) => (target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<(...args: any[]) => any>) => void;
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OtelMethodCounter = exports.OtelInstanceCounter = void 0;
4
+ const opentelemetry_utils_1 = require("../../opentelemetry.utils");
4
5
  const metric_data_1 = require("../metric-data");
5
- const OtelInstanceCounter = (options) => (ctor) => {
6
- const name = `app_${ctor.name}_instances_total`;
7
- const description = `app_${ctor.name} object instances total`;
6
+ const OtelInstanceCounter = (options) => (originalClass) => {
7
+ const name = `app_${originalClass.name}_instances_total`;
8
+ const description = `app_${originalClass.name} object instances total`;
8
9
  let counterMetric;
9
- return class extends ctor {
10
+ const wrappedClass = class extends originalClass {
10
11
  constructor(...args) {
11
12
  if (!counterMetric) {
12
13
  counterMetric = (0, metric_data_1.getOrCreateCounter)(name, { description, ...options });
@@ -15,6 +16,8 @@ const OtelInstanceCounter = (options) => (ctor) => {
15
16
  super(...args);
16
17
  }
17
18
  };
19
+ (0, opentelemetry_utils_1.copyMetadataFromFunctionToFunction)(originalClass, wrappedClass);
20
+ return wrappedClass;
18
21
  };
19
22
  exports.OtelInstanceCounter = OtelInstanceCounter;
20
23
  const OtelMethodCounter = (options) => (target, propertyKey, descriptor) => {
@@ -22,14 +25,16 @@ const OtelMethodCounter = (options) => (target, propertyKey, descriptor) => {
22
25
  const name = `app_${className}_${propertyKey.toString()}_calls_total`;
23
26
  const description = `app_${className}#${propertyKey.toString()} called total`;
24
27
  let counterMetric;
25
- const methodFunc = descriptor.value;
26
- descriptor.value = function (...args) {
28
+ const originalFunction = descriptor.value;
29
+ const wrappedFunction = function PropertyDescriptor(...args) {
27
30
  if (!counterMetric) {
28
31
  counterMetric = (0, metric_data_1.getOrCreateCounter)(name, { description, ...options });
29
32
  }
30
33
  counterMetric.add(1);
31
- return methodFunc.apply(this, args);
34
+ return originalFunction.apply(this, args);
32
35
  };
36
+ descriptor.value = wrappedFunction;
37
+ (0, opentelemetry_utils_1.copyMetadataFromFunctionToFunction)(originalFunction, wrappedFunction);
33
38
  };
34
39
  exports.OtelMethodCounter = OtelMethodCounter;
35
40
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/metrics/decorators/common.ts"],"names":[],"mappings":";;;AACA,gDAAoD;AAO7C,MAAM,mBAAmB,GAAG,CACjC,OAAuB,EACvB,EAAE,CAAC,CAAwC,IAAO,EAAE,EAAE;IACtD,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,kBAAkB,CAAC;IAChD,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,IAAI,yBAAyB,CAAC;IAC9D,IAAI,aAAsB,CAAC;IAE3B,OAAO,KAAM,SAAQ,IAAI;QACvB,YAAY,GAAG,IAAI;YACjB,IAAI,CAAC,aAAa,EAAE;gBAClB,aAAa,GAAG,IAAA,gCAAkB,EAAC,IAAI,EAAE,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;aACvE;YAED,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,mBAAmB,uBAiB9B;AAKK,MAAM,iBAAiB,GAAG,CAC/B,OAAuB,EACvB,EAAE,CAAC,CACH,MAAc,EACd,WAA4B,EAC5B,UACS,EACT,EAAE;IACF,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;IAC1C,MAAM,IAAI,GAAG,OAAO,SAAS,IAAI,WAAW,CAAC,QAAQ,EAAE,cAAc,CAAC;IACtE,MAAM,WAAW,GAAG,OAAO,SAAS,IAAI,WAAW,CAAC,QAAQ,EAAE,eAAe,CAAC;IAC9E,IAAI,aAAsB,CAAC;IAC3B,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;IAEpC,UAAU,CAAC,KAAK,GAAG,UAAU,GAAG,IAAW;QACzC,IAAI,CAAC,aAAa,EAAE;YAClB,aAAa,GAAG,IAAA,gCAAkB,EAAC,IAAI,EAAE,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;SACvE;QACD,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrB,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC,CAAC;AArBW,QAAA,iBAAiB,qBAqB5B"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/metrics/decorators/common.ts"],"names":[],"mappings":";;;AACA,mEAA+E;AAC/E,gDAAoD;AAO7C,MAAM,mBAAmB,GAAG,CAAC,OAAuB,EAAE,EAAE,CAAC,CAG5D,aAAgB,EAChB,EAAE;IACJ,MAAM,IAAI,GAAG,OAAO,aAAa,CAAC,IAAI,kBAAkB,CAAC;IACzD,MAAM,WAAW,GAAG,OAAO,aAAa,CAAC,IAAI,yBAAyB,CAAC;IACvE,IAAI,aAAsB,CAAC;IAE3B,MAAM,YAAY,GAAG,KAAM,SAAQ,aAAa;QAC9C,YAAY,GAAG,IAAI;YACjB,IAAI,CAAC,aAAa,EAAE;gBAClB,aAAa,GAAG,IAAA,gCAAkB,EAAC,IAAI,EAAE,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;aACvE;YAED,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACjB,CAAC;KACF,CAAC;IAEF,IAAA,wDAAkC,EAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAEhE,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAvBW,QAAA,mBAAmB,uBAuB9B;AAKK,MAAM,iBAAiB,GAAG,CAAC,OAAuB,EAAE,EAAE,CAAC,CAC5D,MAAc,EACd,WAA4B,EAC5B,UAA4D,EAC5D,EAAE;IACF,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;IAC1C,MAAM,IAAI,GAAG,OAAO,SAAS,IAAI,WAAW,CAAC,QAAQ,EAAE,cAAc,CAAC;IACtE,MAAM,WAAW,GAAG,OAAO,SAAS,IAAI,WAAW,CAAC,QAAQ,EAAE,eAAe,CAAC;IAC9E,IAAI,aAAsB,CAAC;IAE3B,MAAM,gBAAgB,GAAG,UAAU,CAAC,KAAK,CAAC;IAE1C,MAAM,eAAe,GAAG,SAAS,kBAAkB,CAAC,GAAG,IAAW;QAChE,IAAI,CAAC,aAAa,EAAE;YAClB,aAAa,GAAG,IAAA,gCAAkB,EAAC,IAAI,EAAE,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;SACvE;QACD,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrB,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF,UAAU,CAAC,KAAK,GAAG,eAAe,CAAC;IAEnC,IAAA,wDAAkC,EAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;AACxE,CAAC,CAAC;AAvBW,QAAA,iBAAiB,qBAuB5B"}
@@ -0,0 +1 @@
1
+ import 'reflect-metadata';
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ require("reflect-metadata");
13
+ const common_1 = require("@nestjs/common");
14
+ const common_2 = require("./common");
15
+ const TestDecoratorThatSetsMetadata = () => (0, common_1.SetMetadata)('some-metadata', true);
16
+ let TestClass = class TestClass {
17
+ method() { }
18
+ };
19
+ __decorate([
20
+ TestDecoratorThatSetsMetadata(),
21
+ (0, common_2.OtelMethodCounter)(),
22
+ __metadata("design:type", Function),
23
+ __metadata("design:paramtypes", []),
24
+ __metadata("design:returntype", void 0)
25
+ ], TestClass.prototype, "method", null);
26
+ TestClass = __decorate([
27
+ (0, common_2.OtelInstanceCounter)(),
28
+ TestDecoratorThatSetsMetadata()
29
+ ], TestClass);
30
+ describe('OtelInstanceCounter', () => {
31
+ let instance;
32
+ beforeEach(() => {
33
+ instance = new TestClass();
34
+ });
35
+ it('should maintain reflect metadata', async () => {
36
+ expect(Reflect.getMetadata('some-metadata', instance.constructor)).toEqual(true);
37
+ });
38
+ });
39
+ describe('OtelMethodCounter', () => {
40
+ let instance;
41
+ beforeEach(() => {
42
+ instance = new TestClass();
43
+ });
44
+ it('should maintain reflect metadata', async () => {
45
+ expect(Reflect.getMetadata('some-metadata', instance.method)).toEqual(true);
46
+ });
47
+ });
48
+ //# sourceMappingURL=common.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.spec.js","sourceRoot":"","sources":["../../../src/metrics/decorators/common.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,4BAA0B;AAC1B,2CAA6C;AAC7C,qCAAkE;AAElE,MAAM,6BAA6B,GAAG,GAAG,EAAE,CAAC,IAAA,oBAAW,EAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AAI/E,IAAM,SAAS,GAAf,MAAM,SAAS;IAGb,MAAM,KAAI,CAAC;CACZ,CAAA;AAHC;IAAC,6BAA6B,EAAE;IAC/B,IAAA,0BAAiB,GAAE;;;;uCACT;AAHP,SAAS;IAFd,IAAA,4BAAmB,GAAE;IACrB,6BAA6B,EAAE;GAC1B,SAAS,CAId;AAED,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,QAAmB,CAAC;IAExB,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,QAAmB,CAAC;IAExB,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -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/metrics/decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyB;AACzB,4CAA0B;AAC1B,8CAA4B;AAC5B,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/metrics/decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,4CAA0B;AAC1B,8CAA4B;AAC5B,+CAA6B"}
@@ -1,4 +1,4 @@
1
- import { Counter, MetricOptions, UpDownCounter, Histogram, ObservableGauge, ObservableCounter, ObservableUpDownCounter, ObservableResult } from '@opentelemetry/api-metrics';
1
+ import { Counter, MetricOptions, UpDownCounter, Histogram, ObservableGauge, ObservableCounter, ObservableUpDownCounter } from '@opentelemetry/api-metrics';
2
2
  export declare type GenericMetric = Counter | UpDownCounter | Histogram | ObservableGauge | ObservableCounter | ObservableUpDownCounter;
3
3
  export declare enum MetricType {
4
4
  'Counter' = "Counter",
@@ -12,6 +12,6 @@ export declare const meterData: Map<string, GenericMetric>;
12
12
  export declare function getOrCreateHistogram(name: string, options: MetricOptions): Histogram;
13
13
  export declare function getOrCreateCounter(name: string, options: MetricOptions): Counter;
14
14
  export declare function getOrCreateUpDownCounter(name: string, options: MetricOptions): UpDownCounter;
15
- export declare function getOrCreateObservableGauge(name: string, options: MetricOptions, callback?: (observableResult: ObservableResult) => void): ObservableGauge;
16
- export declare function getOrCreateObservableCounter(name: string, options: MetricOptions, callback?: (observableResult: ObservableResult) => void): ObservableCounter;
17
- export declare function getOrCreateObservableUpDownCounter(name: string, options: MetricOptions, callback?: (observableResult: ObservableResult) => void): ObservableUpDownCounter;
15
+ export declare function getOrCreateObservableGauge(name: string, options: MetricOptions): ObservableGauge;
16
+ export declare function getOrCreateObservableCounter(name: string, options: MetricOptions): ObservableCounter;
17
+ export declare function getOrCreateObservableUpDownCounter(name: string, options: MetricOptions): ObservableUpDownCounter;
@@ -43,32 +43,32 @@ function getOrCreateUpDownCounter(name, options) {
43
43
  return upDownCounter;
44
44
  }
45
45
  exports.getOrCreateUpDownCounter = getOrCreateUpDownCounter;
46
- function getOrCreateObservableGauge(name, options, callback) {
46
+ function getOrCreateObservableGauge(name, options) {
47
47
  if (exports.meterData.has(name)) {
48
48
  return exports.meterData.get(name);
49
49
  }
50
50
  const meter = api_metrics_1.metrics.getMeterProvider().getMeter(opentelemetry_constants_1.OTEL_METER_NAME);
51
- const observableGauge = meter.createObservableGauge(name, options, callback);
51
+ const observableGauge = meter.createObservableGauge(name, options);
52
52
  exports.meterData.set(name, observableGauge);
53
53
  return observableGauge;
54
54
  }
55
55
  exports.getOrCreateObservableGauge = getOrCreateObservableGauge;
56
- function getOrCreateObservableCounter(name, options, callback) {
56
+ function getOrCreateObservableCounter(name, options) {
57
57
  if (exports.meterData.has(name)) {
58
58
  return exports.meterData.get(name);
59
59
  }
60
60
  const meter = api_metrics_1.metrics.getMeterProvider().getMeter(opentelemetry_constants_1.OTEL_METER_NAME);
61
- const observableCounter = meter.createObservableCounter(name, options, callback);
61
+ const observableCounter = meter.createObservableCounter(name, options);
62
62
  exports.meterData.set(name, observableCounter);
63
63
  return observableCounter;
64
64
  }
65
65
  exports.getOrCreateObservableCounter = getOrCreateObservableCounter;
66
- function getOrCreateObservableUpDownCounter(name, options, callback) {
66
+ function getOrCreateObservableUpDownCounter(name, options) {
67
67
  if (exports.meterData.has(name)) {
68
68
  return exports.meterData.get(name);
69
69
  }
70
70
  const meter = api_metrics_1.metrics.getMeterProvider().getMeter(opentelemetry_constants_1.OTEL_METER_NAME);
71
- const observableCounter = meter.createObservableCounter(name, options, callback);
71
+ const observableCounter = meter.createObservableCounter(name, options);
72
72
  exports.meterData.set(name, observableCounter);
73
73
  return observableCounter;
74
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"metric-data.js","sourceRoot":"","sources":["../../src/metrics/metric-data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metric-data.js","sourceRoot":"","sources":["../../src/metrics/metric-data.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { MetricOptions, ObservableResult } from '@opentelemetry/api-metrics';
1
+ import { MetricOptions } from '@opentelemetry/api-metrics';
2
2
  export declare class MetricService {
3
3
  getCounter(name: string, options?: MetricOptions): import("@opentelemetry/api-metrics").Counter;
4
4
  getUpDownCounter(name: string, options?: MetricOptions): import("@opentelemetry/api-metrics").UpDownCounter;
5
5
  getHistogram(name: string, options?: MetricOptions): import("@opentelemetry/api-metrics").Histogram;
6
- getObservableCounter(name: string, options?: MetricOptions, callback?: (observableResult: ObservableResult) => void): import("@opentelemetry/api-metrics").ObservableBase;
7
- getObservableGauge(name: string, options?: MetricOptions, callback?: (observableResult: ObservableResult) => void): import("@opentelemetry/api-metrics").ObservableBase;
8
- getObservableUpDownCounter(name: string, options?: MetricOptions, callback?: (observableResult: ObservableResult) => void): import("@opentelemetry/api-metrics").ObservableBase;
6
+ getObservableCounter(name: string, options?: MetricOptions): import("@opentelemetry/api-metrics").Observable;
7
+ getObservableGauge(name: string, options?: MetricOptions): import("@opentelemetry/api-metrics").Observable;
8
+ getObservableUpDownCounter(name: string, options?: MetricOptions): import("@opentelemetry/api-metrics").Observable;
9
9
  }
@@ -19,14 +19,14 @@ let MetricService = class MetricService {
19
19
  getHistogram(name, options) {
20
20
  return (0, metric_data_1.getOrCreateHistogram)(name, options);
21
21
  }
22
- getObservableCounter(name, options, callback) {
23
- return (0, metric_data_1.getOrCreateObservableCounter)(name, options, callback);
22
+ getObservableCounter(name, options) {
23
+ return (0, metric_data_1.getOrCreateObservableCounter)(name, options);
24
24
  }
25
- getObservableGauge(name, options, callback) {
26
- return (0, metric_data_1.getOrCreateObservableGauge)(name, options, callback);
25
+ getObservableGauge(name, options) {
26
+ return (0, metric_data_1.getOrCreateObservableGauge)(name, options);
27
27
  }
28
- getObservableUpDownCounter(name, options, callback) {
29
- return (0, metric_data_1.getOrCreateObservableUpDownCounter)(name, options, callback);
28
+ getObservableUpDownCounter(name, options) {
29
+ return (0, metric_data_1.getOrCreateObservableUpDownCounter)(name, options);
30
30
  }
31
31
  };
32
32
  MetricService = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"metric.service.js","sourceRoot":"","sources":["../../src/metrics/metric.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAI5C,+CAIuB;AAGvB,IAAa,aAAa,GAA1B,MAAa,aAAa;IACxB,UAAU,CAAC,IAAY,EAAE,OAAuB;QAC9C,OAAO,IAAA,gCAAkB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,gBAAgB,CAAC,IAAY,EAAE,OAAuB;QACpD,OAAO,IAAA,sCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,YAAY,CAAC,IAAY,EAAE,OAAuB;QAChD,OAAO,IAAA,kCAAoB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,oBAAoB,CAClB,IAAY,EACZ,OAAuB,EACvB,QAAuD;QAEvD,OAAO,IAAA,0CAA4B,EAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAED,kBAAkB,CAChB,IAAY,EACZ,OAAuB,EACvB,QAAuD;QAEvD,OAAO,IAAA,wCAA0B,EAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED,0BAA0B,CACxB,IAAY,EACZ,OAAuB,EACvB,QAAuD;QAEvD,OAAO,IAAA,gDAAkC,EAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC;CACF,CAAA;AApCY,aAAa;IADzB,IAAA,mBAAU,GAAE;GACA,aAAa,CAoCzB;AApCY,sCAAa"}
1
+ {"version":3,"file":"metric.service.js","sourceRoot":"","sources":["../../src/metrics/metric.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAI5C,+CAIuB;AAGhB,IAAM,aAAa,GAAnB,MAAM,aAAa;IACxB,UAAU,CAAC,IAAY,EAAE,OAAuB;QAC9C,OAAO,IAAA,gCAAkB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,gBAAgB,CAAC,IAAY,EAAE,OAAuB;QACpD,OAAO,IAAA,sCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,YAAY,CAAC,IAAY,EAAE,OAAuB;QAChD,OAAO,IAAA,kCAAoB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,oBAAoB,CAClB,IAAY,EACZ,OAAuB;QAEvB,OAAO,IAAA,0CAA4B,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,kBAAkB,CAChB,IAAY,EACZ,OAAuB;QAEvB,OAAO,IAAA,wCAA0B,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,0BAA0B,CACxB,IAAY,EACZ,OAAuB;QAEvB,OAAO,IAAA,gDAAkC,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;CACF,CAAA;AAjCY,aAAa;IADzB,IAAA,mBAAU,GAAE;GACA,aAAa,CAiCzB;AAjCY,sCAAa"}
@@ -1,26 +1,19 @@
1
1
  import { NestMiddleware } from '@nestjs/common';
2
2
  import { OpenTelemetryModuleOptions } from '../interfaces';
3
3
  import { MetricService } from '../metrics/metric.service';
4
- export declare const DEFAULT_LONG_RUNNING_REQUEST_BUCKETS: number[];
5
- export declare const DEFAULT_REQUEST_SIZE_BUCKETS: number[];
6
- export declare const DEFAULT_RESPONSE_SIZE_BUCKETS: number[];
7
4
  export declare class ApiMetricsMiddleware implements NestMiddleware {
8
5
  private readonly metricService;
9
6
  private readonly options;
10
- private readonly defaultLongRunningRequestBuckets;
11
- private readonly defaultRequestSizeBuckets;
12
- private readonly defaultResponseSizeBuckets;
13
- private requestTotal;
14
- private responseTotal;
15
- private responseSuccessTotal;
16
- private responseErrorTotal;
17
- private responseClientErrorTotal;
18
- private responseServerErrorTotal;
19
- private serverAbortsTotal;
20
- private requestDuration;
21
- private requestSizeHistogram;
22
- private responseSizeHistogram;
23
- private defaultAttributes;
7
+ private defaultMetricAttributes;
8
+ private httpServerRequestCount;
9
+ private httpServerResponseCount;
10
+ private httpServerDuration;
11
+ private httpServerRequestSize;
12
+ private httpServerResponseSize;
13
+ private httpServerResponseSuccessCount;
14
+ private httpServerResponseErrorCount;
15
+ private httpClientRequestErrorCount;
16
+ private httpServerAbortCount;
24
17
  private readonly ignoreUndefinedRoutes;
25
18
  constructor(metricService: MetricService, options?: OpenTelemetryModuleOptions);
26
19
  use(req: any, res: any, next: any): void;