autotel 2.1.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 (272) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1946 -0
  3. package/dist/chunk-2LNRY4QK.js +273 -0
  4. package/dist/chunk-2LNRY4QK.js.map +1 -0
  5. package/dist/chunk-3HENGDW2.js +587 -0
  6. package/dist/chunk-3HENGDW2.js.map +1 -0
  7. package/dist/chunk-4OAT42CA.cjs +73 -0
  8. package/dist/chunk-4OAT42CA.cjs.map +1 -0
  9. package/dist/chunk-5GWX5LFW.js +70 -0
  10. package/dist/chunk-5GWX5LFW.js.map +1 -0
  11. package/dist/chunk-5R2M36QB.js +195 -0
  12. package/dist/chunk-5R2M36QB.js.map +1 -0
  13. package/dist/chunk-5ZN622AO.js +73 -0
  14. package/dist/chunk-5ZN622AO.js.map +1 -0
  15. package/dist/chunk-77MSMAUQ.cjs +498 -0
  16. package/dist/chunk-77MSMAUQ.cjs.map +1 -0
  17. package/dist/chunk-ABPEQ6RK.cjs +596 -0
  18. package/dist/chunk-ABPEQ6RK.cjs.map +1 -0
  19. package/dist/chunk-BWYGJKRB.js +95 -0
  20. package/dist/chunk-BWYGJKRB.js.map +1 -0
  21. package/dist/chunk-BZHG5IZ4.js +73 -0
  22. package/dist/chunk-BZHG5IZ4.js.map +1 -0
  23. package/dist/chunk-G7VZBCD6.cjs +35 -0
  24. package/dist/chunk-G7VZBCD6.cjs.map +1 -0
  25. package/dist/chunk-GVLK7YUU.cjs +30 -0
  26. package/dist/chunk-GVLK7YUU.cjs.map +1 -0
  27. package/dist/chunk-HCCXC7XG.js +205 -0
  28. package/dist/chunk-HCCXC7XG.js.map +1 -0
  29. package/dist/chunk-HE6T6FIX.cjs +203 -0
  30. package/dist/chunk-HE6T6FIX.cjs.map +1 -0
  31. package/dist/chunk-KIXWPOCO.cjs +100 -0
  32. package/dist/chunk-KIXWPOCO.cjs.map +1 -0
  33. package/dist/chunk-KVGNW3FC.js +87 -0
  34. package/dist/chunk-KVGNW3FC.js.map +1 -0
  35. package/dist/chunk-LITNXTTT.js +3 -0
  36. package/dist/chunk-LITNXTTT.js.map +1 -0
  37. package/dist/chunk-M4ANN7RL.js +114 -0
  38. package/dist/chunk-M4ANN7RL.js.map +1 -0
  39. package/dist/chunk-NC52UBR2.cjs +32 -0
  40. package/dist/chunk-NC52UBR2.cjs.map +1 -0
  41. package/dist/chunk-NHCNRQD3.cjs +212 -0
  42. package/dist/chunk-NHCNRQD3.cjs.map +1 -0
  43. package/dist/chunk-NZ72VDNY.cjs +4 -0
  44. package/dist/chunk-NZ72VDNY.cjs.map +1 -0
  45. package/dist/chunk-P6JUDYNO.js +57 -0
  46. package/dist/chunk-P6JUDYNO.js.map +1 -0
  47. package/dist/chunk-RJYY7BWX.js +1349 -0
  48. package/dist/chunk-RJYY7BWX.js.map +1 -0
  49. package/dist/chunk-TRI4V5BF.cjs +126 -0
  50. package/dist/chunk-TRI4V5BF.cjs.map +1 -0
  51. package/dist/chunk-UL33I6IS.js +139 -0
  52. package/dist/chunk-UL33I6IS.js.map +1 -0
  53. package/dist/chunk-URRW6M2C.cjs +61 -0
  54. package/dist/chunk-URRW6M2C.cjs.map +1 -0
  55. package/dist/chunk-UY3UYPBZ.cjs +77 -0
  56. package/dist/chunk-UY3UYPBZ.cjs.map +1 -0
  57. package/dist/chunk-W3253FGB.cjs +277 -0
  58. package/dist/chunk-W3253FGB.cjs.map +1 -0
  59. package/dist/chunk-W7LHZVQF.js +26 -0
  60. package/dist/chunk-W7LHZVQF.js.map +1 -0
  61. package/dist/chunk-WBWNM6LB.cjs +1360 -0
  62. package/dist/chunk-WBWNM6LB.cjs.map +1 -0
  63. package/dist/chunk-WFJ7L2RV.js +494 -0
  64. package/dist/chunk-WFJ7L2RV.js.map +1 -0
  65. package/dist/chunk-X4RMFFMR.js +28 -0
  66. package/dist/chunk-X4RMFFMR.js.map +1 -0
  67. package/dist/chunk-Y4Y2S7BM.cjs +92 -0
  68. package/dist/chunk-Y4Y2S7BM.cjs.map +1 -0
  69. package/dist/chunk-YLPNXZFI.cjs +143 -0
  70. package/dist/chunk-YLPNXZFI.cjs.map +1 -0
  71. package/dist/chunk-YTXEZ4SD.cjs +77 -0
  72. package/dist/chunk-YTXEZ4SD.cjs.map +1 -0
  73. package/dist/chunk-Z6ZWNWWR.js +30 -0
  74. package/dist/chunk-Z6ZWNWWR.js.map +1 -0
  75. package/dist/config.cjs +26 -0
  76. package/dist/config.cjs.map +1 -0
  77. package/dist/config.d.cts +75 -0
  78. package/dist/config.d.ts +75 -0
  79. package/dist/config.js +5 -0
  80. package/dist/config.js.map +1 -0
  81. package/dist/db.cjs +233 -0
  82. package/dist/db.cjs.map +1 -0
  83. package/dist/db.d.cts +123 -0
  84. package/dist/db.d.ts +123 -0
  85. package/dist/db.js +228 -0
  86. package/dist/db.js.map +1 -0
  87. package/dist/decorators.cjs +67 -0
  88. package/dist/decorators.cjs.map +1 -0
  89. package/dist/decorators.d.cts +91 -0
  90. package/dist/decorators.d.ts +91 -0
  91. package/dist/decorators.js +65 -0
  92. package/dist/decorators.js.map +1 -0
  93. package/dist/event-subscriber.cjs +6 -0
  94. package/dist/event-subscriber.cjs.map +1 -0
  95. package/dist/event-subscriber.d.cts +116 -0
  96. package/dist/event-subscriber.d.ts +116 -0
  97. package/dist/event-subscriber.js +3 -0
  98. package/dist/event-subscriber.js.map +1 -0
  99. package/dist/event-testing.cjs +21 -0
  100. package/dist/event-testing.cjs.map +1 -0
  101. package/dist/event-testing.d.cts +110 -0
  102. package/dist/event-testing.d.ts +110 -0
  103. package/dist/event-testing.js +4 -0
  104. package/dist/event-testing.js.map +1 -0
  105. package/dist/event.cjs +30 -0
  106. package/dist/event.cjs.map +1 -0
  107. package/dist/event.d.cts +282 -0
  108. package/dist/event.d.ts +282 -0
  109. package/dist/event.js +13 -0
  110. package/dist/event.js.map +1 -0
  111. package/dist/exporters.cjs +17 -0
  112. package/dist/exporters.cjs.map +1 -0
  113. package/dist/exporters.d.cts +1 -0
  114. package/dist/exporters.d.ts +1 -0
  115. package/dist/exporters.js +4 -0
  116. package/dist/exporters.js.map +1 -0
  117. package/dist/functional.cjs +46 -0
  118. package/dist/functional.cjs.map +1 -0
  119. package/dist/functional.d.cts +478 -0
  120. package/dist/functional.d.ts +478 -0
  121. package/dist/functional.js +13 -0
  122. package/dist/functional.js.map +1 -0
  123. package/dist/http.cjs +189 -0
  124. package/dist/http.cjs.map +1 -0
  125. package/dist/http.d.cts +169 -0
  126. package/dist/http.d.ts +169 -0
  127. package/dist/http.js +184 -0
  128. package/dist/http.js.map +1 -0
  129. package/dist/index.cjs +333 -0
  130. package/dist/index.cjs.map +1 -0
  131. package/dist/index.d.cts +758 -0
  132. package/dist/index.d.ts +758 -0
  133. package/dist/index.js +143 -0
  134. package/dist/index.js.map +1 -0
  135. package/dist/instrumentation.cjs +182 -0
  136. package/dist/instrumentation.cjs.map +1 -0
  137. package/dist/instrumentation.d.cts +49 -0
  138. package/dist/instrumentation.d.ts +49 -0
  139. package/dist/instrumentation.js +179 -0
  140. package/dist/instrumentation.js.map +1 -0
  141. package/dist/logger.cjs +19 -0
  142. package/dist/logger.cjs.map +1 -0
  143. package/dist/logger.d.cts +146 -0
  144. package/dist/logger.d.ts +146 -0
  145. package/dist/logger.js +6 -0
  146. package/dist/logger.js.map +1 -0
  147. package/dist/metric-helpers.cjs +31 -0
  148. package/dist/metric-helpers.cjs.map +1 -0
  149. package/dist/metric-helpers.d.cts +13 -0
  150. package/dist/metric-helpers.d.ts +13 -0
  151. package/dist/metric-helpers.js +6 -0
  152. package/dist/metric-helpers.js.map +1 -0
  153. package/dist/metric-testing.cjs +21 -0
  154. package/dist/metric-testing.cjs.map +1 -0
  155. package/dist/metric-testing.d.cts +110 -0
  156. package/dist/metric-testing.d.ts +110 -0
  157. package/dist/metric-testing.js +4 -0
  158. package/dist/metric-testing.js.map +1 -0
  159. package/dist/metric.cjs +26 -0
  160. package/dist/metric.cjs.map +1 -0
  161. package/dist/metric.d.cts +240 -0
  162. package/dist/metric.d.ts +240 -0
  163. package/dist/metric.js +9 -0
  164. package/dist/metric.js.map +1 -0
  165. package/dist/processors.cjs +17 -0
  166. package/dist/processors.cjs.map +1 -0
  167. package/dist/processors.d.cts +1 -0
  168. package/dist/processors.d.ts +1 -0
  169. package/dist/processors.js +4 -0
  170. package/dist/processors.js.map +1 -0
  171. package/dist/sampling.cjs +40 -0
  172. package/dist/sampling.cjs.map +1 -0
  173. package/dist/sampling.d.cts +260 -0
  174. package/dist/sampling.d.ts +260 -0
  175. package/dist/sampling.js +7 -0
  176. package/dist/sampling.js.map +1 -0
  177. package/dist/semantic-helpers.cjs +35 -0
  178. package/dist/semantic-helpers.cjs.map +1 -0
  179. package/dist/semantic-helpers.d.cts +442 -0
  180. package/dist/semantic-helpers.d.ts +442 -0
  181. package/dist/semantic-helpers.js +14 -0
  182. package/dist/semantic-helpers.js.map +1 -0
  183. package/dist/tail-sampling-processor.cjs +13 -0
  184. package/dist/tail-sampling-processor.cjs.map +1 -0
  185. package/dist/tail-sampling-processor.d.cts +27 -0
  186. package/dist/tail-sampling-processor.d.ts +27 -0
  187. package/dist/tail-sampling-processor.js +4 -0
  188. package/dist/tail-sampling-processor.js.map +1 -0
  189. package/dist/testing.cjs +286 -0
  190. package/dist/testing.cjs.map +1 -0
  191. package/dist/testing.d.cts +291 -0
  192. package/dist/testing.d.ts +291 -0
  193. package/dist/testing.js +263 -0
  194. package/dist/testing.js.map +1 -0
  195. package/dist/trace-context-DRZdUvVY.d.cts +181 -0
  196. package/dist/trace-context-DRZdUvVY.d.ts +181 -0
  197. package/dist/trace-helpers.cjs +54 -0
  198. package/dist/trace-helpers.cjs.map +1 -0
  199. package/dist/trace-helpers.d.cts +524 -0
  200. package/dist/trace-helpers.d.ts +524 -0
  201. package/dist/trace-helpers.js +5 -0
  202. package/dist/trace-helpers.js.map +1 -0
  203. package/dist/tracer-provider.cjs +21 -0
  204. package/dist/tracer-provider.cjs.map +1 -0
  205. package/dist/tracer-provider.d.cts +169 -0
  206. package/dist/tracer-provider.d.ts +169 -0
  207. package/dist/tracer-provider.js +4 -0
  208. package/dist/tracer-provider.js.map +1 -0
  209. package/package.json +280 -0
  210. package/src/baggage-span-processor.test.ts +202 -0
  211. package/src/baggage-span-processor.ts +98 -0
  212. package/src/circuit-breaker.test.ts +341 -0
  213. package/src/circuit-breaker.ts +184 -0
  214. package/src/config.test.ts +94 -0
  215. package/src/config.ts +169 -0
  216. package/src/db.test.ts +252 -0
  217. package/src/db.ts +447 -0
  218. package/src/decorators.test.ts +203 -0
  219. package/src/decorators.ts +188 -0
  220. package/src/env-config.test.ts +246 -0
  221. package/src/env-config.ts +158 -0
  222. package/src/event-queue.test.ts +222 -0
  223. package/src/event-queue.ts +203 -0
  224. package/src/event-subscriber.ts +136 -0
  225. package/src/event-testing.ts +197 -0
  226. package/src/event.test.ts +718 -0
  227. package/src/event.ts +556 -0
  228. package/src/exporters.ts +96 -0
  229. package/src/functional.test.ts +1059 -0
  230. package/src/functional.ts +2295 -0
  231. package/src/http.test.ts +487 -0
  232. package/src/http.ts +424 -0
  233. package/src/index.ts +158 -0
  234. package/src/init.customization.test.ts +210 -0
  235. package/src/init.integrations.test.ts +366 -0
  236. package/src/init.openllmetry.test.ts +282 -0
  237. package/src/init.protocol.test.ts +215 -0
  238. package/src/init.ts +1426 -0
  239. package/src/instrumentation.test.ts +108 -0
  240. package/src/instrumentation.ts +308 -0
  241. package/src/logger.test.ts +117 -0
  242. package/src/logger.ts +246 -0
  243. package/src/metric-helpers.ts +47 -0
  244. package/src/metric-testing.ts +197 -0
  245. package/src/metric.ts +434 -0
  246. package/src/metrics.test.ts +205 -0
  247. package/src/operation-context.ts +93 -0
  248. package/src/processors.ts +106 -0
  249. package/src/rate-limiter.test.ts +199 -0
  250. package/src/rate-limiter.ts +98 -0
  251. package/src/sampling.test.ts +513 -0
  252. package/src/sampling.ts +428 -0
  253. package/src/semantic-helpers.test.ts +311 -0
  254. package/src/semantic-helpers.ts +584 -0
  255. package/src/shutdown.test.ts +311 -0
  256. package/src/shutdown.ts +222 -0
  257. package/src/stub.integration.test.ts +361 -0
  258. package/src/tail-sampling-processor.test.ts +226 -0
  259. package/src/tail-sampling-processor.ts +51 -0
  260. package/src/testing.ts +670 -0
  261. package/src/trace-context.ts +470 -0
  262. package/src/trace-helpers.new.test.ts +278 -0
  263. package/src/trace-helpers.test.ts +242 -0
  264. package/src/trace-helpers.ts +690 -0
  265. package/src/tracer-provider.test.ts +183 -0
  266. package/src/tracer-provider.ts +266 -0
  267. package/src/track.test.ts +153 -0
  268. package/src/track.ts +120 -0
  269. package/src/validation.test.ts +306 -0
  270. package/src/validation.ts +239 -0
  271. package/src/variable-name-inference.test.ts +178 -0
  272. package/src/variable-name-inference.ts +242 -0
@@ -0,0 +1,169 @@
1
+ import * as _opentelemetry_api from '@opentelemetry/api';
2
+ import { TracerProvider } from '@opentelemetry/api';
3
+
4
+ /**
5
+ * Sets an isolated TracerProvider for Autotel tracing operations.
6
+ *
7
+ * This allows Autotel to use its own TracerProvider instance, separate from
8
+ * the global OpenTelemetry TracerProvider. This is useful for avoiding conflicts
9
+ * with other OpenTelemetry instrumentation in the application.
10
+ *
11
+ * **Limitation: Span Context Sharing**
12
+ *
13
+ * While this function isolates span processing and export, it does NOT provide
14
+ * complete trace isolation. OpenTelemetry context (trace IDs, parent spans) is
15
+ * still shared between the global and isolated providers. This means:
16
+ *
17
+ * - Spans created with the isolated provider inherit trace IDs from global spans
18
+ * - Spans created with the isolated provider inherit parent relationships from global spans
19
+ * - This can result in spans from different providers being part of the same logical trace
20
+ *
21
+ * **Why this happens:**
22
+ * OpenTelemetry uses a global context propagation mechanism that operates at the
23
+ * JavaScript runtime level, independent of individual TracerProvider instances.
24
+ * The context (containing trace ID, span ID) flows through async boundaries and
25
+ * is inherited by all spans created within that context, regardless of which
26
+ * TracerProvider creates them.
27
+ *
28
+ * **When to use this:**
29
+ * - Library code that ships with embedded Autotel
30
+ * - SDKs that want observability without requiring users to set up OpenTelemetry
31
+ * - Applications that need separate span processing for different subsystems
32
+ * - Testing scenarios where you want to isolate trace collection
33
+ *
34
+ * @param provider - The TracerProvider instance to use, or null to clear the isolated provider
35
+ *
36
+ * @example Library with embedded Autotel
37
+ * ```typescript
38
+ * import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'
39
+ * import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base'
40
+ * import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'
41
+ * import { setAutolem
42
+
43
+ etryTracerProvider } from 'autotel/tracer-provider'
44
+ *
45
+ * // Create provider with span processors in constructor
46
+ * const exporter = new OTLPTraceExporter({
47
+ * url: 'https://your-backend.com/v1/traces'
48
+ * })
49
+ *
50
+ * const provider = new NodeTracerProvider()
51
+ * provider.addSpanProcessor(new BatchSpanProcessor(exporter))
52
+ *
53
+ * // Set as Autotel's isolated provider (doesn't call provider.register())
54
+ * setAutotelTracerProvider(provider)
55
+ *
56
+ * // Now all Autotel trace() calls use this provider
57
+ * // But won't interfere with the application's global OpenTelemetry setup
58
+ * ```
59
+ *
60
+ * @example Testing with isolated provider
61
+ * ```typescript
62
+ * import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'
63
+ * import { InMemorySpanExporter } from '@opentelemetry/sdk-trace-base'
64
+ * import { setAutotelTracerProvider } from 'autotel/tracer-provider'
65
+ *
66
+ * // Test setup
67
+ * const exporter = new InMemorySpanExporter()
68
+ * const provider = new NodeTracerProvider()
69
+ * provider.addSpanProcessor(new SimpleSpanProcessor(exporter))
70
+ *
71
+ * setAutotelTracerProvider(provider)
72
+ *
73
+ * // Run tests...
74
+ * const spans = exporter.getFinishedSpans()
75
+ *
76
+ * // Cleanup
77
+ * setAutotelTracerProvider(null)
78
+ * ```
79
+ *
80
+ * @example Multiple subsystems with different exporters
81
+ * ```typescript
82
+ * import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'
83
+ * import { setAutotelTracerProvider } from 'autotel/tracer-provider'
84
+ *
85
+ * // Payment subsystem - send to payment team's backend
86
+ * const paymentProvider = new NodeTracerProvider()
87
+ * paymentProvider.addSpanProcessor(new BatchSpanProcessor(
88
+ * new OTLPTraceExporter({ url: 'https://payment-team-backend.com/v1/traces' })
89
+ * ))
90
+ *
91
+ * // In payment module initialization
92
+ * setAutotelTracerProvider(paymentProvider)
93
+ * ```
94
+ *
95
+ * @public
96
+ */
97
+ declare function setAutotelTracerProvider(provider: TracerProvider | null): void;
98
+ /**
99
+ * Gets the TracerProvider for Autotel tracing operations.
100
+ *
101
+ * Returns the isolated TracerProvider if one has been set via setAutotelTracerProvider(),
102
+ * otherwise falls back to the global OpenTelemetry TracerProvider.
103
+ *
104
+ * This function is used internally by Autotel's trace functions. Most users
105
+ * will not need to call this directly.
106
+ *
107
+ * @returns The TracerProvider instance to use for Autotel tracing
108
+ *
109
+ * @example Getting the current provider
110
+ * ```typescript
111
+ * import { getAutotelTracerProvider } from 'autotel/tracer-provider'
112
+ *
113
+ * const provider = getAutotelTracerProvider()
114
+ * const tracer = provider.getTracer('my-service', '1.0.0')
115
+ * ```
116
+ *
117
+ * @example Checking if isolated provider is active
118
+ * ```typescript
119
+ * import { getAutotelTracerProvider, setAutotelTracerProvider } from 'autotel/tracer-provider'
120
+ * import { trace } from '@opentelemetry/api'
121
+ *
122
+ * const currentProvider = getAutotelTracerProvider()
123
+ * const globalProvider = trace.getTracerProvider()
124
+ *
125
+ * if (currentProvider === globalProvider) {
126
+ * console.log('Using global provider')
127
+ * } else {
128
+ * console.log('Using isolated provider')
129
+ * }
130
+ * ```
131
+ *
132
+ * @public
133
+ */
134
+ declare function getAutotelTracerProvider(): TracerProvider;
135
+ /**
136
+ * Gets the OpenTelemetry tracer instance for Autotel.
137
+ *
138
+ * This function returns a tracer specifically configured for Autotel
139
+ * with the correct tracer name and version. Used internally by all
140
+ * Autotel tracing functions to ensure consistent trace creation.
141
+ *
142
+ * Uses the isolated provider if set, otherwise uses the global provider.
143
+ *
144
+ * @param name - Tracer name (default: 'autotel')
145
+ * @param version - Optional version string
146
+ * @returns The Autotel OpenTelemetry tracer instance
147
+ *
148
+ * @example Basic usage
149
+ * ```typescript
150
+ * import { getAutotelTracer } from 'autotel/tracer-provider'
151
+ *
152
+ * const tracer = getAutotelTracer()
153
+ * const span = tracer.startSpan('my-operation')
154
+ * // ... use span
155
+ * span.end()
156
+ * ```
157
+ *
158
+ * @example Custom tracer name
159
+ * ```typescript
160
+ * import { getAutotelTracer } from 'autotel/tracer-provider'
161
+ *
162
+ * const tracer = getAutotelTracer('my-library', '2.1.0')
163
+ * ```
164
+ *
165
+ * @public
166
+ */
167
+ declare function getAutotelTracer(name?: string, version?: string): _opentelemetry_api.Tracer;
168
+
169
+ export { getAutotelTracer, getAutotelTracerProvider, setAutotelTracerProvider };
@@ -0,0 +1,169 @@
1
+ import * as _opentelemetry_api from '@opentelemetry/api';
2
+ import { TracerProvider } from '@opentelemetry/api';
3
+
4
+ /**
5
+ * Sets an isolated TracerProvider for Autotel tracing operations.
6
+ *
7
+ * This allows Autotel to use its own TracerProvider instance, separate from
8
+ * the global OpenTelemetry TracerProvider. This is useful for avoiding conflicts
9
+ * with other OpenTelemetry instrumentation in the application.
10
+ *
11
+ * **Limitation: Span Context Sharing**
12
+ *
13
+ * While this function isolates span processing and export, it does NOT provide
14
+ * complete trace isolation. OpenTelemetry context (trace IDs, parent spans) is
15
+ * still shared between the global and isolated providers. This means:
16
+ *
17
+ * - Spans created with the isolated provider inherit trace IDs from global spans
18
+ * - Spans created with the isolated provider inherit parent relationships from global spans
19
+ * - This can result in spans from different providers being part of the same logical trace
20
+ *
21
+ * **Why this happens:**
22
+ * OpenTelemetry uses a global context propagation mechanism that operates at the
23
+ * JavaScript runtime level, independent of individual TracerProvider instances.
24
+ * The context (containing trace ID, span ID) flows through async boundaries and
25
+ * is inherited by all spans created within that context, regardless of which
26
+ * TracerProvider creates them.
27
+ *
28
+ * **When to use this:**
29
+ * - Library code that ships with embedded Autotel
30
+ * - SDKs that want observability without requiring users to set up OpenTelemetry
31
+ * - Applications that need separate span processing for different subsystems
32
+ * - Testing scenarios where you want to isolate trace collection
33
+ *
34
+ * @param provider - The TracerProvider instance to use, or null to clear the isolated provider
35
+ *
36
+ * @example Library with embedded Autotel
37
+ * ```typescript
38
+ * import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'
39
+ * import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base'
40
+ * import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'
41
+ * import { setAutolem
42
+
43
+ etryTracerProvider } from 'autotel/tracer-provider'
44
+ *
45
+ * // Create provider with span processors in constructor
46
+ * const exporter = new OTLPTraceExporter({
47
+ * url: 'https://your-backend.com/v1/traces'
48
+ * })
49
+ *
50
+ * const provider = new NodeTracerProvider()
51
+ * provider.addSpanProcessor(new BatchSpanProcessor(exporter))
52
+ *
53
+ * // Set as Autotel's isolated provider (doesn't call provider.register())
54
+ * setAutotelTracerProvider(provider)
55
+ *
56
+ * // Now all Autotel trace() calls use this provider
57
+ * // But won't interfere with the application's global OpenTelemetry setup
58
+ * ```
59
+ *
60
+ * @example Testing with isolated provider
61
+ * ```typescript
62
+ * import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'
63
+ * import { InMemorySpanExporter } from '@opentelemetry/sdk-trace-base'
64
+ * import { setAutotelTracerProvider } from 'autotel/tracer-provider'
65
+ *
66
+ * // Test setup
67
+ * const exporter = new InMemorySpanExporter()
68
+ * const provider = new NodeTracerProvider()
69
+ * provider.addSpanProcessor(new SimpleSpanProcessor(exporter))
70
+ *
71
+ * setAutotelTracerProvider(provider)
72
+ *
73
+ * // Run tests...
74
+ * const spans = exporter.getFinishedSpans()
75
+ *
76
+ * // Cleanup
77
+ * setAutotelTracerProvider(null)
78
+ * ```
79
+ *
80
+ * @example Multiple subsystems with different exporters
81
+ * ```typescript
82
+ * import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'
83
+ * import { setAutotelTracerProvider } from 'autotel/tracer-provider'
84
+ *
85
+ * // Payment subsystem - send to payment team's backend
86
+ * const paymentProvider = new NodeTracerProvider()
87
+ * paymentProvider.addSpanProcessor(new BatchSpanProcessor(
88
+ * new OTLPTraceExporter({ url: 'https://payment-team-backend.com/v1/traces' })
89
+ * ))
90
+ *
91
+ * // In payment module initialization
92
+ * setAutotelTracerProvider(paymentProvider)
93
+ * ```
94
+ *
95
+ * @public
96
+ */
97
+ declare function setAutotelTracerProvider(provider: TracerProvider | null): void;
98
+ /**
99
+ * Gets the TracerProvider for Autotel tracing operations.
100
+ *
101
+ * Returns the isolated TracerProvider if one has been set via setAutotelTracerProvider(),
102
+ * otherwise falls back to the global OpenTelemetry TracerProvider.
103
+ *
104
+ * This function is used internally by Autotel's trace functions. Most users
105
+ * will not need to call this directly.
106
+ *
107
+ * @returns The TracerProvider instance to use for Autotel tracing
108
+ *
109
+ * @example Getting the current provider
110
+ * ```typescript
111
+ * import { getAutotelTracerProvider } from 'autotel/tracer-provider'
112
+ *
113
+ * const provider = getAutotelTracerProvider()
114
+ * const tracer = provider.getTracer('my-service', '1.0.0')
115
+ * ```
116
+ *
117
+ * @example Checking if isolated provider is active
118
+ * ```typescript
119
+ * import { getAutotelTracerProvider, setAutotelTracerProvider } from 'autotel/tracer-provider'
120
+ * import { trace } from '@opentelemetry/api'
121
+ *
122
+ * const currentProvider = getAutotelTracerProvider()
123
+ * const globalProvider = trace.getTracerProvider()
124
+ *
125
+ * if (currentProvider === globalProvider) {
126
+ * console.log('Using global provider')
127
+ * } else {
128
+ * console.log('Using isolated provider')
129
+ * }
130
+ * ```
131
+ *
132
+ * @public
133
+ */
134
+ declare function getAutotelTracerProvider(): TracerProvider;
135
+ /**
136
+ * Gets the OpenTelemetry tracer instance for Autotel.
137
+ *
138
+ * This function returns a tracer specifically configured for Autotel
139
+ * with the correct tracer name and version. Used internally by all
140
+ * Autotel tracing functions to ensure consistent trace creation.
141
+ *
142
+ * Uses the isolated provider if set, otherwise uses the global provider.
143
+ *
144
+ * @param name - Tracer name (default: 'autotel')
145
+ * @param version - Optional version string
146
+ * @returns The Autotel OpenTelemetry tracer instance
147
+ *
148
+ * @example Basic usage
149
+ * ```typescript
150
+ * import { getAutotelTracer } from 'autotel/tracer-provider'
151
+ *
152
+ * const tracer = getAutotelTracer()
153
+ * const span = tracer.startSpan('my-operation')
154
+ * // ... use span
155
+ * span.end()
156
+ * ```
157
+ *
158
+ * @example Custom tracer name
159
+ * ```typescript
160
+ * import { getAutotelTracer } from 'autotel/tracer-provider'
161
+ *
162
+ * const tracer = getAutotelTracer('my-library', '2.1.0')
163
+ * ```
164
+ *
165
+ * @public
166
+ */
167
+ declare function getAutotelTracer(name?: string, version?: string): _opentelemetry_api.Tracer;
168
+
169
+ export { getAutotelTracer, getAutotelTracerProvider, setAutotelTracerProvider };
@@ -0,0 +1,4 @@
1
+ export { getAutotelTracer, getAutotelTracerProvider, setAutotelTracerProvider } from './chunk-P6JUDYNO.js';
2
+ import './chunk-Z6ZWNWWR.js';
3
+ //# sourceMappingURL=tracer-provider.js.map
4
+ //# sourceMappingURL=tracer-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"tracer-provider.js"}
package/package.json ADDED
@@ -0,0 +1,280 @@
1
+ {
2
+ "name": "autotel",
3
+ "version": "2.1.0",
4
+ "description": "Write Once, Observe Anywhere",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "type": "module",
8
+ "sideEffects": false,
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "require": "./dist/index.cjs"
14
+ },
15
+ "./instrumentation": {
16
+ "types": "./dist/instrumentation.d.ts",
17
+ "import": "./dist/instrumentation.js",
18
+ "require": "./dist/instrumentation.cjs"
19
+ },
20
+ "./logger": {
21
+ "types": "./dist/logger.d.ts",
22
+ "import": "./dist/logger.js",
23
+ "require": "./dist/logger.cjs"
24
+ },
25
+ "./sampling": {
26
+ "types": "./dist/sampling.d.ts",
27
+ "import": "./dist/sampling.js",
28
+ "require": "./dist/sampling.cjs"
29
+ },
30
+ "./event": {
31
+ "types": "./dist/event.d.ts",
32
+ "import": "./dist/event.js",
33
+ "require": "./dist/event.cjs"
34
+ },
35
+ "./event-subscriber": {
36
+ "types": "./dist/event-subscriber.d.ts",
37
+ "import": "./dist/event-subscriber.js",
38
+ "require": "./dist/event-subscriber.cjs"
39
+ },
40
+ "./event-testing": {
41
+ "types": "./dist/event-testing.d.ts",
42
+ "import": "./dist/event-testing.js",
43
+ "require": "./dist/event-testing.cjs"
44
+ },
45
+ "./metric": {
46
+ "types": "./dist/metric.d.ts",
47
+ "import": "./dist/metric.js",
48
+ "require": "./dist/metric.cjs"
49
+ },
50
+ "./metric-testing": {
51
+ "types": "./dist/metric-testing.d.ts",
52
+ "import": "./dist/metric-testing.js",
53
+ "require": "./dist/metric-testing.cjs"
54
+ },
55
+ "./metric-helpers": {
56
+ "types": "./dist/metric-helpers.d.ts",
57
+ "import": "./dist/metric-helpers.js",
58
+ "require": "./dist/metric-helpers.cjs"
59
+ },
60
+ "./testing": {
61
+ "types": "./dist/testing.d.ts",
62
+ "import": "./dist/testing.js",
63
+ "require": "./dist/testing.cjs"
64
+ },
65
+ "./exporters": {
66
+ "types": "./dist/exporters.d.ts",
67
+ "import": "./dist/exporters.js",
68
+ "require": "./dist/exporters.cjs"
69
+ },
70
+ "./processors": {
71
+ "types": "./dist/processors.d.ts",
72
+ "import": "./dist/processors.js",
73
+ "require": "./dist/processors.cjs"
74
+ },
75
+ "./config": {
76
+ "types": "./dist/config.d.ts",
77
+ "import": "./dist/config.js",
78
+ "require": "./dist/config.cjs"
79
+ },
80
+ "./tail-sampling-processor": {
81
+ "types": "./dist/tail-sampling-processor.d.ts",
82
+ "import": "./dist/tail-sampling-processor.js",
83
+ "require": "./dist/tail-sampling-processor.cjs"
84
+ },
85
+ "./functional": {
86
+ "types": "./dist/functional.d.ts",
87
+ "import": "./dist/functional.js",
88
+ "require": "./dist/functional.cjs"
89
+ },
90
+ "./http": {
91
+ "types": "./dist/http.d.ts",
92
+ "import": "./dist/http.js",
93
+ "require": "./dist/http.cjs"
94
+ },
95
+ "./db": {
96
+ "types": "./dist/db.d.ts",
97
+ "import": "./dist/db.js",
98
+ "require": "./dist/db.cjs"
99
+ },
100
+ "./trace-helpers": {
101
+ "types": "./dist/trace-helpers.d.ts",
102
+ "import": "./dist/trace-helpers.js",
103
+ "require": "./dist/trace-helpers.cjs"
104
+ },
105
+ "./tracer-provider": {
106
+ "types": "./dist/tracer-provider.d.ts",
107
+ "import": "./dist/tracer-provider.js",
108
+ "require": "./dist/tracer-provider.cjs"
109
+ },
110
+ "./semantic-helpers": {
111
+ "types": "./dist/semantic-helpers.d.ts",
112
+ "import": "./dist/semantic-helpers.js",
113
+ "require": "./dist/semantic-helpers.cjs"
114
+ },
115
+ "./decorators": {
116
+ "types": "./dist/decorators.d.ts",
117
+ "import": "./dist/decorators.js",
118
+ "require": "./dist/decorators.cjs"
119
+ }
120
+ },
121
+ "files": [
122
+ "dist",
123
+ "src",
124
+ "README.md"
125
+ ],
126
+ "keywords": [
127
+ "opentelemetry",
128
+ "otel",
129
+ "typescript",
130
+ "observability",
131
+ "tracing",
132
+ "logging",
133
+ "instrumentation",
134
+ "apm",
135
+ "functional",
136
+ "analytics",
137
+ "metrics",
138
+ "business-metrics",
139
+ "product-analytics",
140
+ "telemetry",
141
+ "monitoring"
142
+ ],
143
+ "author": "Jag Reehal<jag@jagreehal.com> (https://jagreehal.com)",
144
+ "license": "MIT",
145
+ "dependencies": {
146
+ "@opentelemetry/api": "^1.9.0",
147
+ "@opentelemetry/api-logs": "^0.208.0",
148
+ "@opentelemetry/auto-instrumentations-node": "^0.67.0",
149
+ "@opentelemetry/exporter-metrics-otlp-http": "^0.208.0",
150
+ "@opentelemetry/exporter-trace-otlp-http": "^0.208.0",
151
+ "@opentelemetry/instrumentation-pino": "^0.55.0",
152
+ "@opentelemetry/instrumentation-winston": "^0.53.0",
153
+ "@opentelemetry/resources": "^2.2.0",
154
+ "@opentelemetry/sdk-metrics": "^2.2.0",
155
+ "@opentelemetry/sdk-node": "^0.208.0",
156
+ "@opentelemetry/sdk-trace-base": "^2.2.0",
157
+ "@opentelemetry/semantic-conventions": "^1.38.0",
158
+ "node-env-resolver": "^6.1.0"
159
+ },
160
+ "peerDependencies": {
161
+ "@opentelemetry/exporter-logs-otlp-grpc": "^0.208.0",
162
+ "@opentelemetry/exporter-logs-otlp-http": "^0.208.0",
163
+ "@opentelemetry/exporter-metrics-otlp-grpc": "^0.208.0",
164
+ "@opentelemetry/exporter-trace-otlp-grpc": "^0.208.0",
165
+ "@opentelemetry/resource-detector-aws": "^2.8.0",
166
+ "@opentelemetry/resource-detector-container": "^0.7.11",
167
+ "@opentelemetry/resource-detector-gcp": "^0.43.0",
168
+ "@opentelemetry/sdk-logs": "^0.208.0",
169
+ "@opentelemetry/sdk-trace-node": "^2.2.0",
170
+ "@traceloop/node-server-sdk": "^0.20.1",
171
+ "pino": "^10.1.0",
172
+ "pino-pretty": "^13.1.2"
173
+ },
174
+ "peerDependenciesMeta": {
175
+ "@opentelemetry/exporter-logs-otlp-grpc": {
176
+ "optional": true
177
+ },
178
+ "@opentelemetry/exporter-logs-otlp-http": {
179
+ "optional": true
180
+ },
181
+ "@opentelemetry/exporter-metrics-otlp-grpc": {
182
+ "optional": true
183
+ },
184
+ "@opentelemetry/exporter-trace-otlp-grpc": {
185
+ "optional": true
186
+ },
187
+ "@opentelemetry/sdk-logs": {
188
+ "optional": true
189
+ },
190
+ "@opentelemetry/sdk-trace-node": {
191
+ "optional": true
192
+ },
193
+ "@opentelemetry/resource-detector-aws": {
194
+ "optional": true
195
+ },
196
+ "@opentelemetry/resource-detector-gcp": {
197
+ "optional": true
198
+ },
199
+ "@opentelemetry/resource-detector-container": {
200
+ "optional": true
201
+ },
202
+ "@traceloop/node-server-sdk": {
203
+ "optional": true
204
+ },
205
+ "pino": {
206
+ "optional": true
207
+ },
208
+ "pino-pretty": {
209
+ "optional": true
210
+ }
211
+ },
212
+ "devDependencies": {
213
+ "@arethetypeswrong/cli": "^0.18.2",
214
+ "@edge-runtime/vm": "^5.0.0",
215
+ "@opentelemetry/api": "^1.9.0",
216
+ "@opentelemetry/context-async-hooks": "^2.2.0",
217
+ "@opentelemetry/auto-instrumentations-node": "^0.67.0",
218
+ "@opentelemetry/exporter-logs-otlp-grpc": "^0.208.0",
219
+ "@opentelemetry/exporter-logs-otlp-http": "^0.208.0",
220
+ "@opentelemetry/exporter-metrics-otlp-grpc": "^0.208.0",
221
+ "@opentelemetry/exporter-metrics-otlp-http": "^0.208.0",
222
+ "@opentelemetry/exporter-trace-otlp-grpc": "^0.208.0",
223
+ "@opentelemetry/exporter-trace-otlp-http": "^0.208.0",
224
+ "@opentelemetry/resource-detector-aws": "^2.8.0",
225
+ "@opentelemetry/resource-detector-container": "^0.7.11",
226
+ "@opentelemetry/resource-detector-gcp": "^0.43.0",
227
+ "@opentelemetry/resources": "^2.2.0",
228
+ "@opentelemetry/sdk-logs": "^0.208.0",
229
+ "@opentelemetry/sdk-metrics": "^2.2.0",
230
+ "@opentelemetry/sdk-node": "^0.208.0",
231
+ "@opentelemetry/sdk-trace-node": "^2.2.0",
232
+ "@opentelemetry/semantic-conventions": "^1.38.0",
233
+ "@total-typescript/ts-reset": "^0.6.1",
234
+ "@total-typescript/tsconfig": "^1.0.4",
235
+ "@types/eslint-config-prettier": "^6.11.3",
236
+ "@types/node": "^24.10.1",
237
+ "@typescript-eslint/eslint-plugin": "^8.47.0",
238
+ "@typescript-eslint/parser": "^8.47.0",
239
+ "eslint-config-prettier": "^10.1.8",
240
+ "eslint-plugin-unicorn": "^62.0.0",
241
+ "pino": "^10.1.0",
242
+ "prettier": "^3.6.2",
243
+ "rimraf": "^6.1.2",
244
+ "tsup": "^8.5.1",
245
+ "tsx": "^4.20.6",
246
+ "typescript": "^5.9.3",
247
+ "typescript-eslint": "^8.47.0",
248
+ "vite-tsconfig-paths": "^5.1.4",
249
+ "vitest": "^4.0.13",
250
+ "vitest-mock-extended": "^3.1.0",
251
+ "winston": "^3.18.3"
252
+ },
253
+ "repository": {
254
+ "type": "git",
255
+ "url": "https://github.com/jagreehal/autotel"
256
+ },
257
+ "bugs": {
258
+ "url": "https://github.com/jagreehal/autotel/issues"
259
+ },
260
+ "homepage": "https://github.com/jagreehal/autotel#readme",
261
+ "scripts": {
262
+ "build": "tsup",
263
+ "ci": "npm run build && npm run check-format && npm run check-exports && npm run lint && npm run test",
264
+ "dev": "tsup --watch",
265
+ "lint": "npx eslint src/**/*.ts",
266
+ "lint:fix": "npx eslint src/**/*.ts --fix",
267
+ "format": "prettier --write .",
268
+ "format:check": "prettier --check src/**/*.ts",
269
+ "type-check": "tsc --noEmit",
270
+ "test": "vitest run --config vitest.unit.config.ts",
271
+ "test:watch": "vitest --config vitest.unit.config.ts",
272
+ "test:integration": "vitest run --config vitest.integration.config.ts",
273
+ "test:integration:watch": "vitest --config vitest.integration.config.ts",
274
+ "test:all": "pnpm test && pnpm test:integration",
275
+ "check-format": "prettier --check ./src",
276
+ "check-exports": "attw --pack . --ignore-rules false-esm no-resolution cjs-resolves-to-esm",
277
+ "clean": "rimraf dist",
278
+ "quality": "pnpm type-check && pnpm test && pnpm lint && pnpm format:check && pnpm build && pnpm check-exports"
279
+ }
280
+ }