@oas-tools/oas-telemetry 0.7.1 → 0.8.0-alpha.1

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 (194) hide show
  1. package/.env.example +17 -3
  2. package/README.md +1 -2
  3. package/dist/cjs/config/bootConfig.cjs +16 -14
  4. package/dist/cjs/config/config.cjs +120 -125
  5. package/dist/cjs/config/config.types.cjs +1 -4
  6. package/dist/cjs/docs/openapi.yaml +158 -4
  7. package/dist/cjs/index.cjs +27 -30
  8. package/dist/cjs/routesManager.cjs +62 -70
  9. package/dist/cjs/telemetry/custom-implementations/exporters/DiskLogExporter.cjs +121 -0
  10. package/dist/cjs/telemetry/custom-implementations/exporters/DiskMetricExporter.cjs +101 -0
  11. package/dist/cjs/telemetry/custom-implementations/exporters/DiskTraceExporter.cjs +103 -0
  12. package/dist/cjs/telemetry/custom-implementations/exporters/InMemoryDbLogExporter.cjs +194 -190
  13. package/dist/cjs/telemetry/custom-implementations/exporters/InMemoryDbMetricExporter.cjs +147 -99
  14. package/dist/cjs/telemetry/custom-implementations/exporters/InMemoryDbSpanExporter.cjs +143 -116
  15. package/dist/cjs/telemetry/custom-implementations/exporters/MultiMetricExporter.cjs +57 -0
  16. package/dist/cjs/telemetry/custom-implementations/instrumentations/logsInstrumentation.cjs +92 -0
  17. package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/Chunk.cjs +159 -0
  18. package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/Series.cjs +168 -0
  19. package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/SeriesRegistry.cjs +392 -0
  20. package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/types.cjs +2 -0
  21. package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/utils.cjs +77 -0
  22. package/dist/cjs/telemetry/custom-implementations/processors/dynamicMultiLogProcessor.cjs +65 -63
  23. package/dist/cjs/telemetry/custom-implementations/processors/dynamicMultiSpanProcessor.cjs +63 -62
  24. package/dist/cjs/telemetry/custom-implementations/utils/circular.cjs +47 -47
  25. package/dist/cjs/telemetry/custom-implementations/wrappers.cjs +209 -138
  26. package/dist/cjs/telemetry/initializeTelemetry.cjs +35 -91
  27. package/dist/cjs/telemetry/persistence/DiskImporter.cjs +85 -0
  28. package/dist/cjs/telemetry/persistence/DiskUtils.cjs +61 -0
  29. package/dist/cjs/telemetry/persistence/DiskWriter.cjs +66 -0
  30. package/dist/cjs/telemetry/telemetryConfigurator.cjs +139 -72
  31. package/dist/cjs/telemetry/telemetryRegistry.cjs +45 -31
  32. package/dist/cjs/tlm-ai/agent.cjs +49 -64
  33. package/dist/cjs/tlm-ai/aiController.cjs +54 -76
  34. package/dist/cjs/tlm-ai/aiRoutes.cjs +17 -20
  35. package/dist/cjs/tlm-ai/aiService.cjs +91 -95
  36. package/dist/cjs/tlm-ai/tools.cjs +177 -174
  37. package/dist/cjs/tlm-auth/authController.cjs +80 -123
  38. package/dist/cjs/tlm-auth/authMiddleware.cjs +25 -30
  39. package/dist/cjs/tlm-auth/authRoutes.cjs +11 -14
  40. package/dist/cjs/tlm-log/logController.cjs +135 -116
  41. package/dist/cjs/tlm-log/logRoutes.cjs +19 -20
  42. package/dist/cjs/tlm-log/logService.cjs +29 -0
  43. package/dist/cjs/tlm-metric/metricsController.cjs +154 -122
  44. package/dist/cjs/tlm-metric/metricsRoutes.cjs +22 -20
  45. package/dist/cjs/tlm-metric/metricsService.cjs +26 -0
  46. package/dist/cjs/tlm-plugin/pluginController.cjs +128 -140
  47. package/dist/cjs/tlm-plugin/pluginProcess.cjs +89 -94
  48. package/dist/cjs/tlm-plugin/pluginRoutes.cjs +11 -14
  49. package/dist/cjs/tlm-plugin/pluginService.cjs +73 -74
  50. package/dist/cjs/tlm-trace/traceController.cjs +140 -123
  51. package/dist/cjs/tlm-trace/traceRoutes.cjs +19 -20
  52. package/dist/cjs/tlm-trace/traceService.cjs +29 -0
  53. package/dist/cjs/tlm-ui/uiRoutes.cjs +63 -32
  54. package/dist/cjs/tlm-util/utilController.cjs +68 -70
  55. package/dist/cjs/tlm-util/utilRoutes.cjs +51 -63
  56. package/dist/cjs/types/index.cjs +2 -5
  57. package/dist/cjs/utils/logger.cjs +38 -43
  58. package/dist/cjs/utils/regexUtils.cjs +22 -22
  59. package/dist/esm/config/bootConfig.js +5 -2
  60. package/dist/esm/config/config.js +9 -2
  61. package/dist/esm/docs/openapi.yaml +158 -4
  62. package/dist/esm/index.js +9 -8
  63. package/dist/esm/routesManager.js +6 -10
  64. package/dist/esm/telemetry/custom-implementations/exporters/DiskLogExporter.js +114 -0
  65. package/dist/esm/telemetry/custom-implementations/exporters/DiskMetricExporter.js +94 -0
  66. package/dist/esm/telemetry/custom-implementations/exporters/DiskTraceExporter.js +96 -0
  67. package/dist/esm/telemetry/custom-implementations/exporters/InMemoryDbLogExporter.js +38 -7
  68. package/dist/esm/telemetry/custom-implementations/exporters/InMemoryDbMetricExporter.js +107 -48
  69. package/dist/esm/telemetry/custom-implementations/exporters/InMemoryDbSpanExporter.js +60 -29
  70. package/dist/esm/telemetry/custom-implementations/exporters/MultiMetricExporter.js +53 -0
  71. package/dist/esm/telemetry/custom-implementations/instrumentations/logsInstrumentation.js +85 -0
  72. package/dist/esm/telemetry/custom-implementations/metrics/tsdb/Chunk.js +155 -0
  73. package/dist/esm/telemetry/custom-implementations/metrics/tsdb/Series.js +164 -0
  74. package/dist/esm/telemetry/custom-implementations/metrics/tsdb/SeriesRegistry.js +385 -0
  75. package/dist/esm/telemetry/custom-implementations/metrics/tsdb/types.js +1 -0
  76. package/dist/esm/telemetry/custom-implementations/metrics/tsdb/utils.js +74 -0
  77. package/dist/esm/telemetry/custom-implementations/processors/dynamicMultiLogProcessor.js +2 -1
  78. package/dist/esm/telemetry/custom-implementations/processors/dynamicMultiSpanProcessor.js +1 -1
  79. package/dist/esm/telemetry/custom-implementations/wrappers.js +77 -6
  80. package/dist/esm/telemetry/initializeTelemetry.js +27 -69
  81. package/dist/esm/telemetry/persistence/DiskImporter.js +78 -0
  82. package/dist/esm/telemetry/persistence/DiskUtils.js +51 -0
  83. package/dist/esm/telemetry/persistence/DiskWriter.js +59 -0
  84. package/dist/esm/telemetry/telemetryConfigurator.js +110 -39
  85. package/dist/esm/telemetry/telemetryRegistry.js +12 -1
  86. package/dist/esm/tlm-ai/agent.js +5 -3
  87. package/dist/esm/tlm-ai/aiController.js +3 -3
  88. package/dist/esm/tlm-ai/aiService.js +6 -2
  89. package/dist/esm/tlm-ai/tools.js +5 -9
  90. package/dist/esm/tlm-auth/authController.js +3 -2
  91. package/dist/esm/tlm-log/logController.js +62 -18
  92. package/dist/esm/tlm-log/logRoutes.js +3 -1
  93. package/dist/esm/tlm-log/logService.js +25 -0
  94. package/dist/esm/tlm-metric/metricsController.js +116 -50
  95. package/dist/esm/tlm-metric/metricsRoutes.js +8 -3
  96. package/dist/esm/tlm-metric/metricsService.js +22 -0
  97. package/dist/esm/tlm-plugin/pluginController.js +6 -11
  98. package/dist/esm/tlm-plugin/pluginService.js +2 -4
  99. package/dist/esm/tlm-trace/traceController.js +87 -36
  100. package/dist/esm/tlm-trace/traceRoutes.js +3 -1
  101. package/dist/esm/tlm-trace/traceService.js +25 -0
  102. package/dist/esm/tlm-ui/uiRoutes.js +5 -5
  103. package/dist/esm/tlm-util/utilController.js +3 -9
  104. package/dist/esm/tlm-util/utilRoutes.js +2 -2
  105. package/dist/types/config/bootConfig.d.ts +3 -0
  106. package/dist/types/config/config.d.ts +48 -7
  107. package/dist/types/config/config.types.d.ts +7 -0
  108. package/dist/types/index.d.ts +2 -3
  109. package/dist/types/telemetry/custom-implementations/exporters/DiskLogExporter.d.ts +24 -0
  110. package/dist/types/telemetry/custom-implementations/exporters/DiskMetricExporter.d.ts +23 -0
  111. package/dist/types/telemetry/custom-implementations/exporters/DiskTraceExporter.d.ts +23 -0
  112. package/dist/types/telemetry/custom-implementations/exporters/InMemoryDbLogExporter.d.ts +3 -1
  113. package/dist/types/telemetry/custom-implementations/exporters/InMemoryDbMetricExporter.d.ts +56 -15
  114. package/dist/types/telemetry/custom-implementations/exporters/InMemoryDbSpanExporter.d.ts +8 -4
  115. package/dist/types/telemetry/custom-implementations/exporters/MultiMetricExporter.d.ts +9 -0
  116. package/dist/types/telemetry/custom-implementations/instrumentations/logsInstrumentation.d.ts +23 -0
  117. package/dist/types/telemetry/custom-implementations/metrics/tsdb/Chunk.d.ts +49 -0
  118. package/dist/types/telemetry/custom-implementations/metrics/tsdb/Series.d.ts +67 -0
  119. package/dist/types/telemetry/custom-implementations/metrics/tsdb/SeriesRegistry.d.ts +69 -0
  120. package/dist/types/telemetry/custom-implementations/metrics/tsdb/types.d.ts +68 -0
  121. package/dist/types/telemetry/custom-implementations/metrics/tsdb/utils.d.ts +21 -0
  122. package/dist/types/telemetry/custom-implementations/processors/dynamicMultiLogProcessor.d.ts +2 -2
  123. package/dist/types/telemetry/custom-implementations/wrappers.d.ts +2 -1
  124. package/dist/types/telemetry/persistence/DiskImporter.d.ts +17 -0
  125. package/dist/types/telemetry/persistence/DiskUtils.d.ts +11 -0
  126. package/dist/types/telemetry/persistence/DiskWriter.d.ts +21 -0
  127. package/dist/types/telemetry/telemetryConfigurator.d.ts +1 -1
  128. package/dist/types/telemetry/telemetryRegistry.d.ts +8 -0
  129. package/dist/types/tlm-ai/agent.d.ts +1 -1
  130. package/dist/types/tlm-ai/aiService.d.ts +1 -1
  131. package/dist/types/tlm-log/logController.d.ts +2 -0
  132. package/dist/types/tlm-log/logService.d.ts +4 -0
  133. package/dist/types/tlm-metric/metricsController.d.ts +11 -2
  134. package/dist/types/tlm-metric/metricsService.d.ts +6 -0
  135. package/dist/types/tlm-trace/traceController.d.ts +9 -7
  136. package/dist/types/tlm-trace/traceService.d.ts +4 -0
  137. package/dist/types/types/index.d.ts +2 -2
  138. package/dist/ui/assets/{ApiDocsPage-C_VVPPHa.js → ApiDocsPage-DTCgVbW2.js} +2 -2
  139. package/dist/ui/assets/CollapsibleCard-lWgfsaAn.js +1 -0
  140. package/dist/ui/assets/DevToolsPage-DEhf8CBy.js +1 -0
  141. package/dist/ui/assets/LandingPage-CfEHCDxY.js +6 -0
  142. package/dist/ui/assets/LogsPage-DFDKRuGH.js +1 -0
  143. package/dist/ui/assets/{NotFoundPage-B3quk3P1.js → NotFoundPage-DCy0DcV7.js} +1 -1
  144. package/dist/ui/assets/PluginCreatePage-BawZ5_-h.js +50 -0
  145. package/dist/ui/assets/PluginPage-D3FmgU7d.js +27 -0
  146. package/dist/ui/assets/TraceSpansPage-D0_L45Rb.js +6 -0
  147. package/dist/ui/assets/VirtualizedListPanel-q605n9He.js +16 -0
  148. package/dist/ui/assets/alert-DBAFshSi.js +1133 -0
  149. package/dist/ui/assets/badge-DGNBtnxU.js +1 -0
  150. package/dist/ui/assets/{chevron-down-CPsvsmqj.js → chevron-down-CFEqYzGC.js} +1 -1
  151. package/dist/ui/assets/{chevron-up-Df9jMo1X.js → chevron-up-lDnFwAJq.js} +1 -1
  152. package/dist/ui/assets/{circle-alert-DOPQPvU8.js → circle-alert-BpYUuRs7.js} +1 -1
  153. package/dist/ui/assets/dialog-1dRyI6SC.js +15 -0
  154. package/dist/ui/assets/index-C7RfU6hR.js +1 -0
  155. package/dist/ui/assets/index-C9dDYIpd.js +305 -0
  156. package/dist/ui/assets/index-D6f1KjWV.css +1 -0
  157. package/dist/ui/assets/info-CuJQWoBU.js +6 -0
  158. package/dist/ui/assets/{input-Dzvg_ZEZ.js → input-BLXaar0X.js} +1 -1
  159. package/dist/ui/assets/label-DfAcltsl.js +1 -0
  160. package/dist/ui/assets/{loader-circle-CrvlRy5o.js → loader-circle-B7oLyPsi.js} +1 -1
  161. package/dist/ui/assets/{loginPage-qa4V-B70.js → loginPage-DswZvOJ-.js} +1 -1
  162. package/dist/ui/assets/metrics-page-BhtXrfUW.js +31 -0
  163. package/dist/ui/assets/metrics-page-D1GxaB_c.css +1 -0
  164. package/dist/ui/assets/popover-IDker85U.js +11 -0
  165. package/dist/ui/assets/select-B8y5IidE.js +6 -0
  166. package/dist/ui/assets/separator-B6EzrxYY.js +6 -0
  167. package/dist/ui/assets/severityOptions-DtCsaAZK.js +11 -0
  168. package/dist/ui/assets/square-pen-D_oecB1x.js +6 -0
  169. package/dist/ui/assets/switch-Dqo0XkRD.js +1 -0
  170. package/dist/ui/assets/trace-DJq1miYa.js +1 -0
  171. package/dist/ui/assets/upload-prIohEdY.js +11 -0
  172. package/dist/ui/assets/{utilService-DNyqzwj0.js → utilService-C8TJKLqs.js} +1 -1
  173. package/dist/ui/assets/wand-sparkles-OgXuzsSx.js +6 -0
  174. package/dist/ui/index.html +2 -2
  175. package/package.json +44 -49
  176. package/dist/ui/assets/CollapsibleCard-B3KR_8mL.js +0 -1
  177. package/dist/ui/assets/DevToolsPage-OyZcDcmw.js +0 -1
  178. package/dist/ui/assets/LandingPage-CppFBA6K.js +0 -6
  179. package/dist/ui/assets/LogsPage-9Fq8GArS.js +0 -26
  180. package/dist/ui/assets/PluginCreatePage-X_aCH4t4.js +0 -50
  181. package/dist/ui/assets/PluginPage-DMDSihrZ.js +0 -27
  182. package/dist/ui/assets/alert-jQ9HCPIf.js +0 -1133
  183. package/dist/ui/assets/badge-CNq0-mH5.js +0 -1
  184. package/dist/ui/assets/card-DFAwwhN3.js +0 -1
  185. package/dist/ui/assets/index-BkD6DijD.js +0 -15
  186. package/dist/ui/assets/index-CERGVYZK.js +0 -292
  187. package/dist/ui/assets/index-CSIPf9qw.css +0 -1
  188. package/dist/ui/assets/label-DuVnkZ4q.js +0 -1
  189. package/dist/ui/assets/select-DhS8YUtJ.js +0 -1
  190. package/dist/ui/assets/separator-isK4chBP.js +0 -6
  191. package/dist/ui/assets/severityOptions-O38dSOfk.js +0 -11
  192. package/dist/ui/assets/switch-Z3mImG9n.js +0 -1
  193. package/dist/ui/assets/tabs-_77MUUQe.js +0 -16
  194. package/dist/ui/assets/upload-C1LT4Gkb.js +0 -16
@@ -1,16 +1,19 @@
1
- import { OasTlmConfig, DeepPartial, UserConfig } from './config.types';
1
+ import { OasTlmConfig, DeepPartial, UserConfig } from './config.types.js';
2
2
  import { BufferConfig, SpanExporter, SpanProcessor } from '@opentelemetry/sdk-trace-node';
3
3
  import { IMetricReader, MetricProducer } from '@opentelemetry/sdk-metrics';
4
4
  import { LogRecordExporter, LogRecordProcessor } from '@opentelemetry/sdk-logs';
5
5
  import { type PluginResource } from '../types/index.js';
6
- import { ViewOptions } from '@opentelemetry/sdk-metrics/build/src/view/View';
6
+ import { type ViewOptions } from '@opentelemetry/sdk-metrics/build/src/view/View.js';
7
7
  export declare const defaultConfig: {
8
8
  general: {
9
- baseUrl: string;
10
9
  specFileName: string | null;
11
10
  spec: string | null;
12
11
  uiPath: string;
13
12
  };
13
+ storage: {
14
+ path: string | null;
15
+ loadFromStart: boolean;
16
+ };
14
17
  auth: {
15
18
  enabled: boolean;
16
19
  password: string;
@@ -61,14 +64,18 @@ export declare const defaultConfig: {
61
64
  enabled: boolean;
62
65
  extraPlugins: PluginResource[];
63
66
  };
67
+ instrumentations: any[];
64
68
  };
65
69
  export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTlmConfig, envConfig?: DeepPartial<OasTlmConfig>) => {
66
70
  general: {
67
- baseUrl: string;
68
71
  specFileName: string | null;
69
72
  spec: string | null;
70
73
  uiPath: string;
71
74
  };
75
+ storage: {
76
+ path: string | null;
77
+ loadFromStart: boolean;
78
+ };
72
79
  auth: {
73
80
  enabled: boolean;
74
81
  password: string;
@@ -119,13 +126,17 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
119
126
  enabled: boolean;
120
127
  extraPlugins: PluginResource[];
121
128
  };
129
+ instrumentations: any[];
122
130
  } & UserConfig & {
123
131
  general?: {
124
- baseUrl?: string | undefined;
125
132
  specFileName?: string | null | undefined;
126
133
  spec?: string | null | undefined;
127
134
  uiPath?: string | undefined;
128
135
  } | undefined;
136
+ storage?: {
137
+ path?: string | null | undefined;
138
+ loadFromStart?: boolean | undefined;
139
+ } | undefined;
129
140
  auth?: {
130
141
  enabled?: boolean | undefined;
131
142
  password?: string | undefined;
@@ -147,6 +158,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
147
158
  extraProcessors?: ({
148
159
  forceFlush?: {} | undefined;
149
160
  onStart?: {} | undefined;
161
+ onEnding?: {} | undefined;
150
162
  onEnd?: {} | undefined;
151
163
  shutdown?: {} | undefined;
152
164
  } | undefined)[] | undefined;
@@ -269,6 +281,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
269
281
  name?: string | undefined;
270
282
  message?: string | undefined;
271
283
  stack?: string | undefined;
284
+ cause?: unknown;
272
285
  } | null | undefined;
273
286
  readonly writableNeedDrain?: boolean | undefined;
274
287
  _write?: {} | undefined;
@@ -289,6 +302,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
289
302
  prependListener?: {} | undefined;
290
303
  prependOnceListener?: {} | undefined;
291
304
  removeListener?: {} | undefined;
305
+ [Symbol.asyncDispose]?: {} | undefined;
292
306
  pipe?: {} | undefined;
293
307
  compose?: {} | undefined;
294
308
  [EventEmitter.captureRejectionSymbol]?: {} | undefined;
@@ -317,6 +331,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
317
331
  name?: string | undefined;
318
332
  message?: string | undefined;
319
333
  stack?: string | undefined;
334
+ cause?: unknown;
320
335
  } | null | undefined;
321
336
  _construct?: {} | undefined;
322
337
  _read?: {} | undefined;
@@ -381,6 +396,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
381
396
  name?: string | undefined;
382
397
  message?: string | undefined;
383
398
  stack?: string | undefined;
399
+ cause?: unknown;
384
400
  } | null | undefined;
385
401
  _construct?: {} | undefined;
386
402
  _read?: {} | undefined;
@@ -430,10 +446,24 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
430
446
  eventNames?: {} | undefined;
431
447
  } | null | undefined;
432
448
  readonly channel?: {
433
- close?: {} | undefined;
434
- hasRef?: {} | undefined;
435
449
  ref?: {} | undefined;
436
450
  unref?: {} | undefined;
451
+ [EventEmitter.captureRejectionSymbol]?: {} | undefined;
452
+ addListener?: {} | undefined;
453
+ on?: {} | undefined;
454
+ once?: {} | undefined;
455
+ removeListener?: {} | undefined;
456
+ off?: {} | undefined;
457
+ removeAllListeners?: {} | undefined;
458
+ setMaxListeners?: {} | undefined;
459
+ getMaxListeners?: {} | undefined;
460
+ listeners?: {} | undefined;
461
+ rawListeners?: {} | undefined;
462
+ emit?: {} | undefined;
463
+ listenerCount?: {} | undefined;
464
+ prependListener?: {} | undefined;
465
+ prependOnceListener?: {} | undefined;
466
+ eventNames?: {} | undefined;
437
467
  } | null | undefined;
438
468
  readonly stdio?: [({
439
469
  readonly writable?: boolean | undefined;
@@ -450,6 +480,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
450
480
  name?: string | undefined;
451
481
  message?: string | undefined;
452
482
  stack?: string | undefined;
483
+ cause?: unknown;
453
484
  } | null | undefined;
454
485
  readonly writableNeedDrain?: boolean | undefined;
455
486
  _write?: {} | undefined;
@@ -470,6 +501,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
470
501
  prependListener?: {} | undefined;
471
502
  prependOnceListener?: {} | undefined;
472
503
  removeListener?: {} | undefined;
504
+ [Symbol.asyncDispose]?: {} | undefined;
473
505
  pipe?: {} | undefined;
474
506
  compose?: {} | undefined;
475
507
  [EventEmitter.captureRejectionSymbol]?: {} | undefined;
@@ -497,6 +529,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
497
529
  name?: string | undefined;
498
530
  message?: string | undefined;
499
531
  stack?: string | undefined;
532
+ cause?: unknown;
500
533
  } | null | undefined;
501
534
  _construct?: {} | undefined;
502
535
  _read?: {} | undefined;
@@ -560,6 +593,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
560
593
  name?: string | undefined;
561
594
  message?: string | undefined;
562
595
  stack?: string | undefined;
596
+ cause?: unknown;
563
597
  } | null | undefined;
564
598
  _construct?: {} | undefined;
565
599
  _read?: {} | undefined;
@@ -622,6 +656,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
622
656
  name?: string | undefined;
623
657
  message?: string | undefined;
624
658
  stack?: string | undefined;
659
+ cause?: unknown;
625
660
  } | null | undefined;
626
661
  readonly writableNeedDrain?: boolean | undefined;
627
662
  _write?: {} | undefined;
@@ -642,6 +677,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
642
677
  prependListener?: {} | undefined;
643
678
  prependOnceListener?: {} | undefined;
644
679
  removeListener?: {} | undefined;
680
+ [Symbol.asyncDispose]?: {} | undefined;
645
681
  pipe?: {} | undefined;
646
682
  compose?: {} | undefined;
647
683
  [EventEmitter.captureRejectionSymbol]?: {} | undefined;
@@ -669,6 +705,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
669
705
  name?: string | undefined;
670
706
  message?: string | undefined;
671
707
  stack?: string | undefined;
708
+ cause?: unknown;
672
709
  } | null | undefined;
673
710
  _construct?: {} | undefined;
674
711
  _read?: {} | undefined;
@@ -731,6 +768,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
731
768
  name?: string | undefined;
732
769
  message?: string | undefined;
733
770
  stack?: string | undefined;
771
+ cause?: unknown;
734
772
  } | null | undefined;
735
773
  readonly writableNeedDrain?: boolean | undefined;
736
774
  _write?: {} | undefined;
@@ -751,6 +789,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
751
789
  prependListener?: {} | undefined;
752
790
  prependOnceListener?: {} | undefined;
753
791
  removeListener?: {} | undefined;
792
+ [Symbol.asyncDispose]?: {} | undefined;
754
793
  pipe?: {} | undefined;
755
794
  compose?: {} | undefined;
756
795
  [EventEmitter.captureRejectionSymbol]?: {} | undefined;
@@ -778,6 +817,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
778
817
  name?: string | undefined;
779
818
  message?: string | undefined;
780
819
  stack?: string | undefined;
820
+ cause?: unknown;
781
821
  } | null | undefined;
782
822
  _construct?: {} | undefined;
783
823
  _read?: {} | undefined;
@@ -858,4 +898,5 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
858
898
  } | undefined;
859
899
  } | undefined)[] | undefined;
860
900
  } | undefined;
901
+ instrumentations?: any[] | undefined;
861
902
  };
@@ -3,12 +3,14 @@ import { IMetricReader } from "@opentelemetry/sdk-metrics";
3
3
  import { SpanExporter, SpanProcessor } from "@opentelemetry/sdk-trace-node";
4
4
  import { defaultConfig } from "./config.js";
5
5
  import { ViewOptions } from "@opentelemetry/sdk-metrics/build/src/view/View.js";
6
+ import { type Instrumentation } from "@opentelemetry/instrumentation";
6
7
  export type DeepPartial<T> = T extends object ? {
7
8
  [P in keyof T]?: DeepPartial<T[P]>;
8
9
  } : T;
9
10
  export type OasTlmConfig = typeof defaultConfig;
10
11
  export type UserConfig = {
11
12
  general?: Partial<OasTlmConfig["general"]>;
13
+ storage?: Partial<OasTlmConfig["storage"]>;
12
14
  auth?: Partial<OasTlmConfig["auth"]>;
13
15
  ai?: {
14
16
  extraContextPrompts?: string[];
@@ -31,4 +33,9 @@ export type UserConfig = {
31
33
  memoryExporter?: Partial<OasTlmConfig["logs"]["memoryExporter"]>;
32
34
  };
33
35
  plugins?: Partial<OasTlmConfig["plugins"]>;
36
+ /**
37
+ * User can register its own instrumentations to be used by oas-telemetry. oas-telemetry will assign the providers to these instrumentations.
38
+ * This is useful when the user wants to use instrumentations that are not included by default in oas-telemetry.
39
+ */
40
+ instrumentations?: Instrumentation[];
34
41
  };
@@ -1,10 +1,9 @@
1
1
  import "./config/bootConfig.js";
2
2
  import './telemetry/initializeTelemetry.js';
3
- import { Router } from 'express';
4
3
  import { UserConfig } from './config/config.types.js';
5
4
  /**
6
5
  * Returns the OAS-Telemetry middleware.
7
6
  * All parameters are optional. However, either `spec` or `specFileName` must be provided to enable endpoint filtering.
8
7
  */
9
- declare function oasTelemetry(oasTlmInputConfig?: UserConfig): Router;
10
- export = oasTelemetry;
8
+ declare function oasTelemetry(oasTlmInputConfig?: UserConfig): any;
9
+ export { oasTelemetry };
@@ -0,0 +1,24 @@
1
+ import { ExportResult } from '@opentelemetry/core';
2
+ import { LogRecordExporter, ReadableLogRecord } from '@opentelemetry/sdk-logs';
3
+ import { Enabler } from '../wrappers.js';
4
+ export type DiskLogExporterOptions = {
5
+ directoryPath: string;
6
+ flushIntervalMs?: number;
7
+ batchSize?: number;
8
+ maxSegmentBytes?: number;
9
+ };
10
+ export declare class DiskLogExporter extends Enabler implements LogRecordExporter {
11
+ private readonly writer;
12
+ private readonly flushIntervalMs;
13
+ private readonly batchSize;
14
+ private queuedLogs;
15
+ private flushTimer;
16
+ private flushing;
17
+ constructor(options: DiskLogExporterOptions);
18
+ export(logs: ReadableLogRecord[], resultCallback: (result: ExportResult) => void): void;
19
+ shutdown(): Promise<void>;
20
+ forceFlush(): Promise<void>;
21
+ private scheduleFlush;
22
+ private flushPending;
23
+ private formatLogRecord;
24
+ }
@@ -0,0 +1,23 @@
1
+ import { ExportResult } from '@opentelemetry/core';
2
+ import { PushMetricExporter, ResourceMetrics } from '@opentelemetry/sdk-metrics';
3
+ import { Enabler } from '../wrappers.js';
4
+ export type DiskMetricExporterOptions = {
5
+ directoryPath: string;
6
+ flushIntervalMs?: number;
7
+ batchSize?: number;
8
+ maxSegmentBytes?: number;
9
+ };
10
+ export declare class DiskMetricExporter extends Enabler implements PushMetricExporter {
11
+ private readonly writer;
12
+ private readonly flushIntervalMs;
13
+ private readonly batchSize;
14
+ private queuedScopeMetrics;
15
+ private flushTimer;
16
+ private flushing;
17
+ constructor(options: DiskMetricExporterOptions);
18
+ export(resourceMetrics: ResourceMetrics, resultCallback: (result: ExportResult) => void): void;
19
+ shutdown(): Promise<void>;
20
+ forceFlush(): Promise<void>;
21
+ private scheduleFlush;
22
+ private flushPending;
23
+ }
@@ -0,0 +1,23 @@
1
+ import { ExportResult } from '@opentelemetry/core';
2
+ import { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base';
3
+ import { Enabler } from '../wrappers.js';
4
+ export type DiskTraceExporterOptions = {
5
+ directoryPath: string;
6
+ flushIntervalMs?: number;
7
+ batchSize?: number;
8
+ maxSegmentBytes?: number;
9
+ };
10
+ export declare class DiskTraceExporter extends Enabler implements SpanExporter {
11
+ private readonly writer;
12
+ private readonly flushIntervalMs;
13
+ private readonly batchSize;
14
+ private queuedSpans;
15
+ private flushTimer;
16
+ private flushing;
17
+ constructor(options: DiskTraceExporterOptions);
18
+ export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void;
19
+ shutdown(): Promise<void>;
20
+ forceFlush(): Promise<void>;
21
+ private scheduleFlush;
22
+ private flushPending;
23
+ }
@@ -5,7 +5,9 @@ export declare class InMemoryDbLogExporter extends Enabler implements LogRecordE
5
5
  private _db;
6
6
  private _miniSearch;
7
7
  private _retentionTimeInSeconds;
8
+ private _initialized;
8
9
  constructor(retentionTimeInSeconds?: number);
10
+ private _ensureInitialized;
9
11
  /**
10
12
  * Export logs.
11
13
  * @param logs
@@ -20,7 +22,7 @@ export declare class InMemoryDbLogExporter extends Enabler implements LogRecordE
20
22
  find(findConfig: {
21
23
  query: any;
22
24
  messageSearch: string | null;
23
- limit: number;
25
+ limit?: number;
24
26
  sortOrder?: any;
25
27
  }): Promise<any[]>;
26
28
  insert(data: any[], callback: (err: any, newDocs: any[]) => void): void;
@@ -1,22 +1,63 @@
1
- import { PushMetricExporter, ResourceMetrics } from '@opentelemetry/sdk-metrics';
1
+ import { PushMetricExporter, ResourceMetrics, ScopeMetrics } from '@opentelemetry/sdk-metrics';
2
2
  import { Enabler } from '../wrappers.js';
3
+ import { Resource } from '@opentelemetry/resources';
4
+ import { FindMetricsRequest } from '../metrics/tsdb/types.js';
5
+ export interface ExporterConfig {
6
+ retentionTimeInSeconds?: number;
7
+ chunkSize?: number;
8
+ maxChunks?: number;
9
+ }
10
+ /**
11
+ * In-Memory TSDB Metric Exporter
12
+ * Series identified by: scope + metricName + attributes
13
+ */
3
14
  export declare class InMemoryDbMetricExporter extends Enabler implements PushMetricExporter {
4
- private _metrics;
5
- private _retentionTimeInSeconds;
6
- constructor(retentionTimeInSeconds?: number);
7
- export(metrics: ResourceMetrics, resultCallback: any): any;
15
+ private static readonly DEFAULT_CONFIG;
16
+ private readonly registry;
17
+ private readonly config;
18
+ private cachedResource;
19
+ private _initialized;
20
+ private _ensureInitialized;
21
+ get rawDataDB(): any[];
22
+ constructor(config?: Partial<ExporterConfig>);
23
+ export(resourceMetrics: ResourceMetrics, resultCallback: any): any;
8
24
  shutdown(): Promise<void>;
9
- forceFlush(): Promise<void>;
10
- find(search: any, callback: any): void;
11
25
  reset(): void;
12
- getFinishedMetrics(): import("@seald-io/nedb").Document<Record<string, any>>[];
13
- /**
14
- * Inserts metrics into the in-memory database.
15
- * @param metrics - The metrics to insert.
16
- * @param callback - The callback to execute after insertion.
17
- */
18
- insert(metrics: any[], callback: (err: any, newDocs: any[]) => void): void;
19
- set retentionTimeInSeconds(retentionTimeInSeconds: number);
26
+ forceFlush(): Promise<void>;
27
+ getCachedResource(): Resource | null;
28
+ set retentionTimeInSeconds(value: number);
20
29
  get retentionTimeInSeconds(): number;
30
+ getStats(): {
31
+ totalMetrics: number;
32
+ totalScopes: number;
33
+ totalSeries: number;
34
+ totalSamples: number;
35
+ memoryUsageBytes: number;
36
+ };
21
37
  private _startCleanupJob;
38
+ /**
39
+ * Find metrics by scope+metric queries with filters
40
+ * Supports both raw and otel formats
41
+ */
42
+ find(request: FindMetricsRequest): {
43
+ results: any[];
44
+ };
45
+ /**
46
+ * Export all metrics as line-delimited JSON (one chunk per line)
47
+ */
48
+ exportToLineDelimitedJson(): string;
49
+ /**
50
+ * Import metrics from line-delimited JSON format
51
+ */
52
+ importFromLineDelimitedJson(lineDelimitedJsonData: string): void;
53
+ /**
54
+ * Insert metrics in OpenTelemetry (OTEL) format directly into the registry
55
+ * @param scopeMetrics Array of ScopeMetrics (OTEL format)
56
+ */
57
+ insertOtel(scopeMetrics: ScopeMetrics[]): void;
58
+ /**
59
+ * Insert metrics in raw format (MetricQueryResult[]), converts to OTEL and delegates to insertOtel
60
+ * @param rawScopeMetrics Array of MetricQueryResult (raw format)
61
+ */
62
+ insertRaw(rawScopeMetrics: any[]): void;
22
63
  }
@@ -3,10 +3,10 @@ import { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base';
3
3
  import { Enabler } from '../wrappers.js';
4
4
  export declare class InMemoryDbSpanExporter extends Enabler implements SpanExporter {
5
5
  private _spans;
6
- private _baseUrl;
7
6
  private _retentionTimeInSeconds;
7
+ private _initialized;
8
8
  constructor(retentionTimeInSeconds?: number);
9
- set baseUrl(baseUrl: string);
9
+ private _ensureInitialized;
10
10
  set retentionTimeInSeconds(retentionTimeInSeconds: number);
11
11
  get retentionTimeInSeconds(): number;
12
12
  export(readableSpans: ReadableSpan[], resultCallback: (arg0: {
@@ -14,12 +14,16 @@ export declare class InMemoryDbSpanExporter extends Enabler implements SpanExpor
14
14
  error?: Error;
15
15
  }) => void): void;
16
16
  shutdown(): Promise<void>;
17
+ reset(): void;
17
18
  /**
18
19
  * Exports any pending spans in the exporter
19
20
  */
20
21
  forceFlush(): Promise<void>;
21
- find(search: any, callback: any): void;
22
- reset(): void;
22
+ find(findConfig: {
23
+ query: any;
24
+ limit?: number;
25
+ sortOrder?: any;
26
+ }): Promise<any[]>;
23
27
  getFinishedSpans(): import("@seald-io/nedb").Document<Record<string, any>>[];
24
28
  /**
25
29
  * Inserts spans into the in-memory database.
@@ -0,0 +1,9 @@
1
+ import { ExportResult } from '@opentelemetry/core';
2
+ import { PushMetricExporter, ResourceMetrics } from '@opentelemetry/sdk-metrics';
3
+ export declare class MultiMetricExporter implements PushMetricExporter {
4
+ private readonly exporters;
5
+ constructor(exporters: PushMetricExporter[]);
6
+ export(resourceMetrics: ResourceMetrics, resultCallback: (result: ExportResult) => void): void;
7
+ shutdown(): Promise<void>;
8
+ forceFlush(): Promise<void>;
9
+ }
@@ -0,0 +1,23 @@
1
+ import { InstrumentationBase } from '@opentelemetry/instrumentation';
2
+ import { LoggerProvider } from '@opentelemetry/api-logs';
3
+ export declare class LogsInstrumentation extends InstrumentationBase {
4
+ private _loggerProvider?;
5
+ private _otelLogger?;
6
+ constructor(config?: any);
7
+ /**
8
+ * No-op: this instrumentation does not patch modules loaded via require().
9
+ */
10
+ init(): never[];
11
+ /**
12
+ * Called by the SDK when the LoggerProvider is available.
13
+ * This is the correct way for an instrumentation to receive a logger provider.
14
+ */
15
+ setLoggerProvider(provider: LoggerProvider): void;
16
+ /**
17
+ * Called by the SDK after all providers have been registered.
18
+ */
19
+ enable(): void;
20
+ disable(): void;
21
+ private _patchConsole;
22
+ private _unpatchConsole;
23
+ }
@@ -0,0 +1,49 @@
1
+ import { HistogramValue } from './types.js';
2
+ export declare class Chunk {
3
+ private readonly maxSamples;
4
+ private readonly startTimes;
5
+ private readonly endTimes;
6
+ private readonly values;
7
+ private readonly histograms;
8
+ private cursor;
9
+ private minEndTime;
10
+ private maxEndTime;
11
+ private readonly isHistogram;
12
+ constructor(maxSamples?: number, isHistogram?: boolean);
13
+ /**
14
+ * Append a sample to the chunk.
15
+ * Returns true if successful or false if the chunk is full.
16
+ */
17
+ append(startTime: number, endTime: number, value: number | HistogramValue): boolean;
18
+ /**
19
+ * Binary search for first index with endTime >= targetTime
20
+ */
21
+ private _binarySearchStart;
22
+ /**
23
+ * Binary search for last index with endTime <= targetTime
24
+ */
25
+ private _binarySearchEnd;
26
+ /**
27
+ * Efficient slicing method for bulk operations.
28
+ * Always returns slices. Values can be either a Float64Array (numeric)
29
+ * or a JS array of HistogramValue objects (histogram series).
30
+ */
31
+ getSlices(startTime?: number, endTime?: number): {
32
+ startTimes: Float64Array;
33
+ endTimes: Float64Array;
34
+ values: Float64Array | (HistogramValue | null)[];
35
+ };
36
+ isFull(): boolean;
37
+ overlaps(startTime: number, endTime: number): boolean;
38
+ getStats(): {
39
+ samples: number;
40
+ maxSamples: number;
41
+ minEndTime: number;
42
+ maxEndTime: number;
43
+ memoryBytes: number;
44
+ };
45
+ getMemoryUsage(): number;
46
+ getMinTime(): number;
47
+ getMaxTime(): number;
48
+ size(): number;
49
+ }
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Series: Time-series storage with metadata and chunks
3
+ * One series per unique metric+labels combination
4
+ */
5
+ import { MetricMetadata, LabelSet, HistogramValue } from './types.js';
6
+ export declare class Series {
7
+ private readonly labelSet;
8
+ private readonly metadata;
9
+ private readonly chunks;
10
+ private readonly maxChunks;
11
+ private readonly chunkSize;
12
+ private readonly isHistogram;
13
+ constructor(labelSet: LabelSet, metadata: MetricMetadata, chunkSize?: number, maxChunks?: number);
14
+ /**
15
+ * Append a sample to the series
16
+ */
17
+ append(startTime: number, endTime: number, value: number | HistogramValue): void;
18
+ /**
19
+ * Query slices with options object. Example:
20
+ * querySlices({ startTime, endTime, includeStartTimes: true })
21
+ * includeStartTimes defaults to false.
22
+ * If both startTime and endTime are undefined, returns all data (no time filtering).
23
+ */
24
+ querySlices(options?: {
25
+ startTime?: number;
26
+ endTime?: number;
27
+ includeStartTimes?: boolean;
28
+ }): {
29
+ startTimes?: Float64Array;
30
+ endTimes: Float64Array;
31
+ values: Float64Array | (HistogramValue | null)[];
32
+ };
33
+ /**
34
+ * Remove chunks older than threshold
35
+ */
36
+ evictOldChunks(thresholdTime: number): number;
37
+ /**
38
+ * Get series metadata
39
+ */
40
+ getMetadata(): MetricMetadata;
41
+ getLabels(): Record<string, any>;
42
+ getOriginalAttributes(): Record<string, any>;
43
+ /**
44
+ * Get label hash
45
+ */
46
+ getLabelHash(): number;
47
+ getStats(): {
48
+ metricName: string;
49
+ labels: import("@opentelemetry/api").Attributes;
50
+ chunks: number;
51
+ samples: number;
52
+ memoryBytes: number;
53
+ oldestTime: number;
54
+ newestTime: number;
55
+ };
56
+ /**
57
+ * Check if series has any samples
58
+ */
59
+ isEmpty(): boolean;
60
+ /**
61
+ * Get time range covered by this series
62
+ */
63
+ getTimeRange(): {
64
+ min: number;
65
+ max: number;
66
+ };
67
+ }
@@ -0,0 +1,69 @@
1
+ import { ScopeMetricQuery, MetricQueryResult } from './types.js';
2
+ import { InstrumentationScope } from '@opentelemetry/core';
3
+ import { MetricDescriptor, ScopeMetrics } from '@opentelemetry/sdk-metrics';
4
+ export declare class SeriesRegistry {
5
+ private readonly series;
6
+ private readonly scopes;
7
+ private readonly metricMetadataMap;
8
+ private readonly metricIdIndex;
9
+ private readonly chunkSize;
10
+ private readonly maxChunks;
11
+ constructor(chunkSize?: number, maxChunks?: number);
12
+ /**
13
+ * Store entire ScopeMetrics array efficiently
14
+ * Replaces addSample - processes all metrics in one batch
15
+ */
16
+ storeScopeMetrics(scopeMetrics: ScopeMetrics[]): void;
17
+ query(scopeMetrics?: ScopeMetricQuery[], startTime?: number, endTime?: number): MetricQueryResult[];
18
+ /**
19
+ * Query single metric with attribute filters
20
+ */
21
+ private _querySingle;
22
+ /**
23
+ * Match series attributes against filters
24
+ * Supports exact match, negation (!), and regex (~)
25
+ */
26
+ private _matchesAttributeFilters;
27
+ evictOldData(retentionTimeNs: number): {
28
+ evictedChunks: number;
29
+ evictedSeries: number;
30
+ };
31
+ getStats(): {
32
+ totalMetrics: number;
33
+ totalScopes: number;
34
+ totalSeries: number;
35
+ totalSamples: number;
36
+ memoryUsageBytes: number;
37
+ };
38
+ reset(): void;
39
+ size(): number;
40
+ /**
41
+ * Serialize registry to line-delimited JSON format (newline-delimited JSON)
42
+ * Each line is a complete record: metadata, scope, metric, or data point
43
+ * Format:
44
+ * {"type":"header","version":1,"timestamp":"...","stats":{...}}
45
+ * {"type":"scope","id":"...","data":{...}}
46
+ * {"type":"metric","id":"...","data":{...}}
47
+ * {"type":"series","id":"...","labelSet":{...},"chunks":[...]}
48
+ */
49
+ serializeToLineDelimitedJson(): string;
50
+ /**
51
+ * Deserialize from line-delimited JSON format - restore from chunk lines
52
+ */
53
+ deserializeFromLineDelimitedJson(lineDelimitedJsonData: string): void;
54
+ /**
55
+ * Save registry to disk as line-delimited JSON (one chunk per line)
56
+ */
57
+ saveToDisk(filePath: string): void;
58
+ /**
59
+ * Load registry from disk (line-delimited JSON format)
60
+ */
61
+ loadFromDisk(filePath: string): void;
62
+ }
63
+ export type MetricInfo = {
64
+ scope: InstrumentationScope;
65
+ metrics: Array<{
66
+ descriptor: MetricDescriptor;
67
+ series: string[];
68
+ }>;
69
+ };