autotel 3.5.0 → 3.7.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 (591) hide show
  1. package/dist/attribute-redacting-processor-DtTS9xxh.d.cts +175 -0
  2. package/dist/attribute-redacting-processor-DtTS9xxh.d.cts.map +1 -0
  3. package/dist/attribute-redacting-processor-DtTS9xxh.d.ts +175 -0
  4. package/dist/attribute-redacting-processor-DtTS9xxh.d.ts.map +1 -0
  5. package/dist/attribute-redacting-processor.cjs +374 -33
  6. package/dist/attribute-redacting-processor.cjs.map +1 -1
  7. package/dist/attribute-redacting-processor.d.cts +2 -207
  8. package/dist/attribute-redacting-processor.d.ts +2 -207
  9. package/dist/attribute-redacting-processor.js +368 -2
  10. package/dist/attribute-redacting-processor.js.map +1 -1
  11. package/dist/attributes-D3etyRVc.cjs +713 -0
  12. package/dist/attributes-D3etyRVc.cjs.map +1 -0
  13. package/dist/attributes-ksn4HVbd.js +600 -0
  14. package/dist/attributes-ksn4HVbd.js.map +1 -0
  15. package/dist/attributes.cjs +21 -85
  16. package/dist/attributes.d.cts +2 -20
  17. package/dist/attributes.d.ts +2 -20
  18. package/dist/attributes.js +3 -5
  19. package/dist/auto.cjs +50 -28
  20. package/dist/auto.cjs.map +1 -1
  21. package/dist/auto.d.cts +1 -2
  22. package/dist/auto.d.ts +1 -2
  23. package/dist/auto.js +49 -23
  24. package/dist/auto.js.map +1 -1
  25. package/dist/business-baggage.cjs +357 -13
  26. package/dist/business-baggage.cjs.map +1 -1
  27. package/dist/business-baggage.d.cts +106 -139
  28. package/dist/business-baggage.d.cts.map +1 -0
  29. package/dist/business-baggage.d.ts +106 -139
  30. package/dist/business-baggage.d.ts.map +1 -0
  31. package/dist/business-baggage.js +357 -2
  32. package/dist/business-baggage.js.map +1 -1
  33. package/dist/canonical-log-line-processor--RlFDHhm.cjs +377 -0
  34. package/dist/canonical-log-line-processor--RlFDHhm.cjs.map +1 -0
  35. package/dist/canonical-log-line-processor-BcRuAdRk.d.ts +147 -0
  36. package/dist/canonical-log-line-processor-BcRuAdRk.d.ts.map +1 -0
  37. package/dist/canonical-log-line-processor-DbBQT5vY.js +366 -0
  38. package/dist/canonical-log-line-processor-DbBQT5vY.js.map +1 -0
  39. package/dist/canonical-log-line-processor-xvjMgtpF.d.cts +147 -0
  40. package/dist/canonical-log-line-processor-xvjMgtpF.d.cts.map +1 -0
  41. package/dist/config.cjs +118 -22
  42. package/dist/config.cjs.map +1 -1
  43. package/dist/config.d.cts +33 -45
  44. package/dist/config.d.cts.map +1 -0
  45. package/dist/config.d.ts +33 -45
  46. package/dist/config.d.ts.map +1 -0
  47. package/dist/config.js +116 -3
  48. package/dist/config.js.map +1 -1
  49. package/dist/correlated-events-Bzh5y-UB.js +28 -0
  50. package/dist/correlated-events-Bzh5y-UB.js.map +1 -0
  51. package/dist/correlated-events-kSwLo3mi.cjs +34 -0
  52. package/dist/correlated-events-kSwLo3mi.cjs.map +1 -0
  53. package/dist/correlation-id.cjs +11 -53
  54. package/dist/correlation-id.d.cts +6 -5
  55. package/dist/correlation-id.d.cts.map +1 -0
  56. package/dist/correlation-id.d.ts +6 -5
  57. package/dist/correlation-id.d.ts.map +1 -0
  58. package/dist/correlation-id.js +3 -16
  59. package/dist/db.cjs +244 -209
  60. package/dist/db.cjs.map +1 -1
  61. package/dist/db.d.cts +28 -26
  62. package/dist/db.d.cts.map +1 -0
  63. package/dist/db.d.ts +28 -26
  64. package/dist/db.d.ts.map +1 -0
  65. package/dist/db.js +243 -207
  66. package/dist/db.js.map +1 -1
  67. package/dist/decorators.cjs +39 -65
  68. package/dist/decorators.cjs.map +1 -1
  69. package/dist/decorators.d.cts +10 -37
  70. package/dist/decorators.d.cts.map +1 -0
  71. package/dist/decorators.d.ts +10 -37
  72. package/dist/decorators.d.ts.map +1 -0
  73. package/dist/decorators.js +38 -63
  74. package/dist/decorators.js.map +1 -1
  75. package/dist/define-event-CreknLm3.d.ts +25 -0
  76. package/dist/define-event-CreknLm3.d.ts.map +1 -0
  77. package/dist/define-event-HZRizPwz.d.cts +25 -0
  78. package/dist/define-event-HZRizPwz.d.cts.map +1 -0
  79. package/dist/drain-pipeline.cjs +111 -9
  80. package/dist/drain-pipeline.cjs.map +1 -1
  81. package/dist/drain-pipeline.d.cts +27 -32
  82. package/dist/drain-pipeline.d.cts.map +1 -0
  83. package/dist/drain-pipeline.d.ts +27 -32
  84. package/dist/drain-pipeline.d.ts.map +1 -0
  85. package/dist/drain-pipeline.js +111 -2
  86. package/dist/drain-pipeline.js.map +1 -1
  87. package/dist/enrichers.cjs +59 -66
  88. package/dist/enrichers.cjs.map +1 -1
  89. package/dist/enrichers.d.cts +15 -13
  90. package/dist/enrichers.d.cts.map +1 -0
  91. package/dist/enrichers.d.ts +15 -13
  92. package/dist/enrichers.d.ts.map +1 -0
  93. package/dist/enrichers.js +58 -65
  94. package/dist/enrichers.js.map +1 -1
  95. package/dist/event-Dlqr4ZNL.cjs +778 -0
  96. package/dist/event-Dlqr4ZNL.cjs.map +1 -0
  97. package/dist/event-_58ryBjh.js +761 -0
  98. package/dist/event-_58ryBjh.js.map +1 -0
  99. package/dist/event-subscriber-D1XLkPzi.d.cts +223 -0
  100. package/dist/event-subscriber-D1XLkPzi.d.cts.map +1 -0
  101. package/dist/event-subscriber-D1XLkPzi.d.ts +223 -0
  102. package/dist/event-subscriber-D1XLkPzi.d.ts.map +1 -0
  103. package/dist/event-subscriber.cjs +0 -6
  104. package/dist/event-subscriber.d.cts +2 -221
  105. package/dist/event-subscriber.d.ts +2 -221
  106. package/dist/event-subscriber.js +1 -3
  107. package/dist/event-testing-BqRnI0z4.d.cts +106 -0
  108. package/dist/event-testing-BqRnI0z4.d.cts.map +1 -0
  109. package/dist/event-testing-CfFs3to2.d.ts +106 -0
  110. package/dist/event-testing-CfFs3to2.d.ts.map +1 -0
  111. package/dist/event-testing.cjs +93 -17
  112. package/dist/event-testing.cjs.map +1 -1
  113. package/dist/event-testing.d.cts +2 -110
  114. package/dist/event-testing.d.ts +2 -110
  115. package/dist/event-testing.js +91 -2
  116. package/dist/event-testing.js.map +1 -1
  117. package/dist/event.cjs +5 -36
  118. package/dist/event.d.cts +295 -340
  119. package/dist/event.d.cts.map +1 -0
  120. package/dist/event.d.ts +295 -340
  121. package/dist/event.d.ts.map +1 -0
  122. package/dist/event.js +3 -20
  123. package/dist/exporters.cjs +12 -16
  124. package/dist/exporters.d.cts +86 -111
  125. package/dist/exporters.d.cts.map +1 -0
  126. package/dist/exporters.d.ts +86 -111
  127. package/dist/exporters.d.ts.map +1 -0
  128. package/dist/exporters.js +4 -4
  129. package/dist/filtering-span-processor-B8R8B7Uk.d.cts +59 -0
  130. package/dist/filtering-span-processor-B8R8B7Uk.d.cts.map +1 -0
  131. package/dist/filtering-span-processor-B8R8B7Uk.d.ts +59 -0
  132. package/dist/filtering-span-processor-B8R8B7Uk.d.ts.map +1 -0
  133. package/dist/filtering-span-processor.cjs +49 -9
  134. package/dist/filtering-span-processor.cjs.map +1 -1
  135. package/dist/filtering-span-processor.d.cts +2 -80
  136. package/dist/filtering-span-processor.d.ts +2 -80
  137. package/dist/filtering-span-processor.js +49 -2
  138. package/dist/filtering-span-processor.js.map +1 -1
  139. package/dist/functional-BGkT8J-h.js +1265 -0
  140. package/dist/functional-BGkT8J-h.js.map +1 -0
  141. package/dist/functional-C4CzoVrX.cjs +1312 -0
  142. package/dist/functional-C4CzoVrX.cjs.map +1 -0
  143. package/dist/functional.cjs +11 -56
  144. package/dist/functional.d.cts +96 -97
  145. package/dist/functional.d.cts.map +1 -0
  146. package/dist/functional.d.ts +96 -97
  147. package/dist/functional.d.ts.map +1 -0
  148. package/dist/functional.js +3 -19
  149. package/dist/http.cjs +276 -175
  150. package/dist/http.cjs.map +1 -1
  151. package/dist/http.d.cts +17 -37
  152. package/dist/http.d.cts.map +1 -0
  153. package/dist/http.d.ts +17 -37
  154. package/dist/http.d.ts.map +1 -0
  155. package/dist/http.js +275 -173
  156. package/dist/http.js.map +1 -1
  157. package/dist/index-CX0aG1Uh.d.ts +708 -0
  158. package/dist/index-CX0aG1Uh.d.ts.map +1 -0
  159. package/dist/index-DIWZFKUS.d.cts +708 -0
  160. package/dist/index-DIWZFKUS.d.cts.map +1 -0
  161. package/dist/index.cjs +1050 -1184
  162. package/dist/index.cjs.map +1 -1
  163. package/dist/index.d.cts +401 -570
  164. package/dist/index.d.cts.map +1 -0
  165. package/dist/index.d.ts +401 -570
  166. package/dist/index.d.ts.map +1 -0
  167. package/dist/index.js +913 -725
  168. package/dist/index.js.map +1 -1
  169. package/dist/init-CNp-ee80.d.cts +1157 -0
  170. package/dist/init-CNp-ee80.d.cts.map +1 -0
  171. package/dist/init-Ch6t7MNI.js +1015 -0
  172. package/dist/init-Ch6t7MNI.js.map +1 -0
  173. package/dist/init-DJQOdVlN.d.ts +1157 -0
  174. package/dist/init-DJQOdVlN.d.ts.map +1 -0
  175. package/dist/init-DvapOXCc.cjs +1092 -0
  176. package/dist/init-DvapOXCc.cjs.map +1 -0
  177. package/dist/instrumentation.cjs +159 -185
  178. package/dist/instrumentation.cjs.map +1 -1
  179. package/dist/instrumentation.d.cts +42 -40
  180. package/dist/instrumentation.d.cts.map +1 -0
  181. package/dist/instrumentation.d.ts +42 -40
  182. package/dist/instrumentation.d.ts.map +1 -0
  183. package/dist/instrumentation.js +158 -183
  184. package/dist/instrumentation.js.map +1 -1
  185. package/dist/logger-BauSUhUv.d.cts +313 -0
  186. package/dist/logger-BauSUhUv.d.cts.map +1 -0
  187. package/dist/logger-BauSUhUv.d.ts +313 -0
  188. package/dist/logger-BauSUhUv.d.ts.map +1 -0
  189. package/dist/logger.cjs +225 -25
  190. package/dist/logger.cjs.map +1 -1
  191. package/dist/logger.d.cts +2 -348
  192. package/dist/logger.d.ts +2 -348
  193. package/dist/logger.js +204 -4
  194. package/dist/logger.js.map +1 -1
  195. package/dist/messaging-adapters.cjs +292 -187
  196. package/dist/messaging-adapters.cjs.map +1 -1
  197. package/dist/messaging-adapters.d.cts +28 -66
  198. package/dist/messaging-adapters.d.cts.map +1 -0
  199. package/dist/messaging-adapters.d.ts +28 -66
  200. package/dist/messaging-adapters.d.ts.map +1 -0
  201. package/dist/messaging-adapters.js +291 -185
  202. package/dist/messaging-adapters.js.map +1 -1
  203. package/dist/messaging-testing.cjs +306 -372
  204. package/dist/messaging-testing.cjs.map +1 -1
  205. package/dist/messaging-testing.d.cts +194 -223
  206. package/dist/messaging-testing.d.cts.map +1 -0
  207. package/dist/messaging-testing.d.ts +194 -223
  208. package/dist/messaging-testing.d.ts.map +1 -0
  209. package/dist/messaging-testing.js +305 -371
  210. package/dist/messaging-testing.js.map +1 -1
  211. package/dist/messaging.cjs +757 -35
  212. package/dist/messaging.cjs.map +1 -1
  213. package/dist/messaging.d.cts +603 -644
  214. package/dist/messaging.d.cts.map +1 -0
  215. package/dist/messaging.d.ts +603 -644
  216. package/dist/messaging.d.ts.map +1 -0
  217. package/dist/messaging.js +756 -20
  218. package/dist/messaging.js.map +1 -1
  219. package/dist/metric-helpers.cjs +27 -27
  220. package/dist/metric-helpers.cjs.map +1 -1
  221. package/dist/metric-helpers.d.cts +4 -2
  222. package/dist/metric-helpers.d.cts.map +1 -0
  223. package/dist/metric-helpers.d.ts +4 -2
  224. package/dist/metric-helpers.d.ts.map +1 -0
  225. package/dist/metric-helpers.js +24 -4
  226. package/dist/metric-helpers.js.map +1 -1
  227. package/dist/metric-testing-DXdK3-Q3.d.ts +106 -0
  228. package/dist/metric-testing-DXdK3-Q3.d.ts.map +1 -0
  229. package/dist/metric-testing-MxvzChDp.d.cts +106 -0
  230. package/dist/metric-testing-MxvzChDp.d.cts.map +1 -0
  231. package/dist/metric-testing.cjs +93 -17
  232. package/dist/metric-testing.cjs.map +1 -1
  233. package/dist/metric-testing.d.cts +2 -110
  234. package/dist/metric-testing.d.ts +2 -110
  235. package/dist/metric-testing.js +91 -2
  236. package/dist/metric-testing.js.map +1 -1
  237. package/dist/metric.cjs +306 -22
  238. package/dist/metric.cjs.map +1 -1
  239. package/dist/metric.d.cts +170 -198
  240. package/dist/metric.d.cts.map +1 -0
  241. package/dist/metric.d.ts +170 -198
  242. package/dist/metric.d.ts.map +1 -0
  243. package/dist/metric.js +277 -7
  244. package/dist/metric.js.map +1 -1
  245. package/dist/node-require-DF5QBX6z.cjs +99 -0
  246. package/dist/node-require-DF5QBX6z.cjs.map +1 -0
  247. package/dist/node-require-Db1oDpLj.js +88 -0
  248. package/dist/node-require-Db1oDpLj.js.map +1 -0
  249. package/dist/operation-context-C-2hmmtP.js +59 -0
  250. package/dist/operation-context-C-2hmmtP.js.map +1 -0
  251. package/dist/operation-context-n4_obUwq.cjs +70 -0
  252. package/dist/operation-context-n4_obUwq.cjs.map +1 -0
  253. package/dist/parse-error.cjs +55 -9
  254. package/dist/parse-error.cjs.map +1 -1
  255. package/dist/parse-error.d.cts +12 -10
  256. package/dist/parse-error.d.cts.map +1 -0
  257. package/dist/parse-error.d.ts +12 -10
  258. package/dist/parse-error.d.ts.map +1 -0
  259. package/dist/parse-error.js +55 -2
  260. package/dist/parse-error.js.map +1 -1
  261. package/dist/pretty-console-exporter-CMzlrRNg.cjs +232 -0
  262. package/dist/pretty-console-exporter-CMzlrRNg.cjs.map +1 -0
  263. package/dist/pretty-console-exporter-DqKl_q9z.js +227 -0
  264. package/dist/pretty-console-exporter-DqKl_q9z.js.map +1 -0
  265. package/dist/processors.cjs +13 -17
  266. package/dist/processors.d.cts +3 -171
  267. package/dist/processors.d.ts +3 -171
  268. package/dist/processors.js +4 -4
  269. package/dist/register.cjs +35 -6
  270. package/dist/register.cjs.map +1 -1
  271. package/dist/register.d.cts +1 -2
  272. package/dist/register.d.ts +1 -2
  273. package/dist/register.js +36 -3
  274. package/dist/register.js.map +1 -1
  275. package/dist/registry-DfXA3R1L.js +184 -0
  276. package/dist/registry-DfXA3R1L.js.map +1 -0
  277. package/dist/registry-JZg2J3RZ.cjs +334 -0
  278. package/dist/registry-JZg2J3RZ.cjs.map +1 -0
  279. package/dist/sampling-CR0Va1VB.d.ts +351 -0
  280. package/dist/sampling-CR0Va1VB.d.ts.map +1 -0
  281. package/dist/sampling-DfYhDJij.d.cts +351 -0
  282. package/dist/sampling-DfYhDJij.d.cts.map +1 -0
  283. package/dist/sampling.cjs +452 -60
  284. package/dist/sampling.cjs.map +1 -1
  285. package/dist/sampling.d.cts +2 -379
  286. package/dist/sampling.d.ts +2 -379
  287. package/dist/sampling.js +441 -5
  288. package/dist/sampling.js.map +1 -1
  289. package/dist/security-schema.cjs +65 -46
  290. package/dist/security-schema.cjs.map +1 -1
  291. package/dist/security-schema.d.cts +23 -26
  292. package/dist/security-schema.d.cts.map +1 -0
  293. package/dist/security-schema.d.ts +23 -26
  294. package/dist/security-schema.d.ts.map +1 -0
  295. package/dist/security-schema.js +64 -45
  296. package/dist/security-schema.js.map +1 -1
  297. package/dist/semantic-conventions-FhSxv-bK.d.cts +32 -0
  298. package/dist/semantic-conventions-FhSxv-bK.d.cts.map +1 -0
  299. package/dist/semantic-conventions-FhSxv-bK.d.ts +32 -0
  300. package/dist/semantic-conventions-FhSxv-bK.d.ts.map +1 -0
  301. package/dist/semantic-conventions.cjs +15 -26
  302. package/dist/semantic-conventions.cjs.map +1 -1
  303. package/dist/semantic-conventions.d.cts +2 -29
  304. package/dist/semantic-conventions.d.ts +2 -29
  305. package/dist/semantic-conventions.js +12 -3
  306. package/dist/semantic-conventions.js.map +1 -1
  307. package/dist/semantic-helpers.cjs +440 -38
  308. package/dist/semantic-helpers.cjs.map +1 -1
  309. package/dist/semantic-helpers.d.cts +38 -45
  310. package/dist/semantic-helpers.d.cts.map +1 -0
  311. package/dist/semantic-helpers.d.ts +38 -45
  312. package/dist/semantic-helpers.d.ts.map +1 -0
  313. package/dist/semantic-helpers.js +438 -19
  314. package/dist/semantic-helpers.js.map +1 -1
  315. package/dist/span-name-normalizer-8ZOGJuwv.d.cts +70 -0
  316. package/dist/span-name-normalizer-8ZOGJuwv.d.cts.map +1 -0
  317. package/dist/span-name-normalizer-8ZOGJuwv.d.ts +70 -0
  318. package/dist/span-name-normalizer-8ZOGJuwv.d.ts.map +1 -0
  319. package/dist/span-name-normalizer.cjs +95 -17
  320. package/dist/span-name-normalizer.cjs.map +1 -1
  321. package/dist/span-name-normalizer.d.cts +2 -94
  322. package/dist/span-name-normalizer.d.ts +2 -94
  323. package/dist/span-name-normalizer.js +93 -2
  324. package/dist/span-name-normalizer.js.map +1 -1
  325. package/dist/stable-hash-BNTMrmdB.cjs +28 -0
  326. package/dist/stable-hash-BNTMrmdB.cjs.map +1 -0
  327. package/dist/stable-hash-Cg5cT34Q.js +23 -0
  328. package/dist/stable-hash-Cg5cT34Q.js.map +1 -0
  329. package/dist/structured-error-9--cxBay.js +143 -0
  330. package/dist/structured-error-9--cxBay.js.map +1 -0
  331. package/dist/structured-error-CHg7DoIQ.cjs +178 -0
  332. package/dist/structured-error-CHg7DoIQ.cjs.map +1 -0
  333. package/dist/tail-sampling-processor.cjs +26 -13
  334. package/dist/tail-sampling-processor.cjs.map +1 -1
  335. package/dist/tail-sampling-processor.d.cts +11 -23
  336. package/dist/tail-sampling-processor.d.cts.map +1 -0
  337. package/dist/tail-sampling-processor.d.ts +11 -23
  338. package/dist/tail-sampling-processor.d.ts.map +1 -0
  339. package/dist/tail-sampling-processor.js +27 -6
  340. package/dist/tail-sampling-processor.js.map +1 -1
  341. package/dist/test-span-collector.cjs +70 -72
  342. package/dist/test-span-collector.cjs.map +1 -1
  343. package/dist/test-span-collector.d.cts +25 -43
  344. package/dist/test-span-collector.d.cts.map +1 -0
  345. package/dist/test-span-collector.d.ts +25 -43
  346. package/dist/test-span-collector.d.ts.map +1 -0
  347. package/dist/test-span-collector.js +69 -70
  348. package/dist/test-span-collector.js.map +1 -1
  349. package/dist/testing.cjs +389 -278
  350. package/dist/testing.cjs.map +1 -1
  351. package/dist/testing.d.cts +39 -62
  352. package/dist/testing.d.cts.map +1 -0
  353. package/dist/testing.d.ts +39 -62
  354. package/dist/testing.d.ts.map +1 -0
  355. package/dist/testing.js +386 -265
  356. package/dist/testing.js.map +1 -1
  357. package/dist/trace-context-Cijqoi6e.d.cts +212 -0
  358. package/dist/trace-context-Cijqoi6e.d.cts.map +1 -0
  359. package/dist/trace-context-Cijqoi6e.d.ts +212 -0
  360. package/dist/trace-context-Cijqoi6e.d.ts.map +1 -0
  361. package/dist/trace-helpers.cjs +634 -54
  362. package/dist/trace-helpers.cjs.map +1 -1
  363. package/dist/trace-helpers.d.cts +17 -49
  364. package/dist/trace-helpers.d.cts.map +1 -0
  365. package/dist/trace-helpers.d.ts +17 -49
  366. package/dist/trace-helpers.d.ts.map +1 -0
  367. package/dist/trace-helpers.js +624 -3
  368. package/dist/trace-helpers.js.map +1 -1
  369. package/dist/tracer-provider.cjs +227 -16
  370. package/dist/tracer-provider.cjs.map +1 -1
  371. package/dist/tracer-provider.d.cts +5 -4
  372. package/dist/tracer-provider.d.cts.map +1 -0
  373. package/dist/tracer-provider.d.ts +5 -4
  374. package/dist/tracer-provider.d.ts.map +1 -0
  375. package/dist/tracer-provider.js +227 -2
  376. package/dist/tracer-provider.js.map +1 -1
  377. package/dist/track-3HY4NGV-.cjs +1212 -0
  378. package/dist/track-3HY4NGV-.cjs.map +1 -0
  379. package/dist/track-nsKVy-pj.js +1111 -0
  380. package/dist/track-nsKVy-pj.js.map +1 -0
  381. package/dist/validate.cjs +201 -0
  382. package/dist/validate.cjs.map +1 -0
  383. package/dist/validate.d.cts +105 -0
  384. package/dist/validate.d.cts.map +1 -0
  385. package/dist/validate.d.ts +105 -0
  386. package/dist/validate.d.ts.map +1 -0
  387. package/dist/validate.js +197 -0
  388. package/dist/validate.js.map +1 -0
  389. package/dist/validation-attributes.cjs +45 -0
  390. package/dist/validation-attributes.cjs.map +1 -0
  391. package/dist/validation-attributes.d.cts +33 -0
  392. package/dist/validation-attributes.d.cts.map +1 -0
  393. package/dist/validation-attributes.d.ts +33 -0
  394. package/dist/validation-attributes.d.ts.map +1 -0
  395. package/dist/validation-attributes.js +41 -0
  396. package/dist/validation-attributes.js.map +1 -0
  397. package/dist/webhook.cjs +286 -255
  398. package/dist/webhook.cjs.map +1 -1
  399. package/dist/webhook.d.cts +157 -192
  400. package/dist/webhook.d.cts.map +1 -0
  401. package/dist/webhook.d.ts +157 -192
  402. package/dist/webhook.d.ts.map +1 -0
  403. package/dist/webhook.js +285 -253
  404. package/dist/webhook.js.map +1 -1
  405. package/dist/workflow-distributed.cjs +498 -411
  406. package/dist/workflow-distributed.cjs.map +1 -1
  407. package/dist/workflow-distributed.d.cts +163 -173
  408. package/dist/workflow-distributed.d.cts.map +1 -0
  409. package/dist/workflow-distributed.d.ts +163 -173
  410. package/dist/workflow-distributed.d.ts.map +1 -0
  411. package/dist/workflow-distributed.js +497 -409
  412. package/dist/workflow-distributed.js.map +1 -1
  413. package/dist/workflow.cjs +405 -39
  414. package/dist/workflow.cjs.map +1 -1
  415. package/dist/workflow.d.cts +78 -131
  416. package/dist/workflow.d.cts.map +1 -0
  417. package/dist/workflow.d.ts +78 -131
  418. package/dist/workflow.d.ts.map +1 -0
  419. package/dist/workflow.js +403 -20
  420. package/dist/workflow.js.map +1 -1
  421. package/dist/yaml-config-B3dQ82GR.cjs +272 -0
  422. package/dist/yaml-config-B3dQ82GR.cjs.map +1 -0
  423. package/dist/yaml-config.cjs +5 -24
  424. package/dist/yaml-config.d.cts +30 -64
  425. package/dist/yaml-config.d.cts.map +1 -0
  426. package/dist/yaml-config.d.ts +30 -64
  427. package/dist/yaml-config.d.ts.map +1 -0
  428. package/dist/yaml-config.js +226 -7
  429. package/dist/yaml-config.js.map +1 -1
  430. package/package.json +14 -4
  431. package/src/define-event.ts +2 -21
  432. package/src/index.ts +3 -0
  433. package/src/request-logger.test.ts +53 -1
  434. package/src/request-logger.ts +58 -0
  435. package/src/stable-hash.ts +27 -0
  436. package/src/validate.test.ts +287 -0
  437. package/src/validate.ts +307 -0
  438. package/src/validation-attributes.ts +43 -0
  439. package/dist/attributes.cjs.map +0 -1
  440. package/dist/attributes.js.map +0 -1
  441. package/dist/chunk-2ZKEORFN.cjs +0 -14
  442. package/dist/chunk-2ZKEORFN.cjs.map +0 -1
  443. package/dist/chunk-3QXBFGKP.js +0 -344
  444. package/dist/chunk-3QXBFGKP.js.map +0 -1
  445. package/dist/chunk-454CH4OV.js +0 -744
  446. package/dist/chunk-454CH4OV.js.map +0 -1
  447. package/dist/chunk-4A53YIAX.js +0 -180
  448. package/dist/chunk-4A53YIAX.js.map +0 -1
  449. package/dist/chunk-4IFSYQVX.js +0 -337
  450. package/dist/chunk-4IFSYQVX.js.map +0 -1
  451. package/dist/chunk-4P6ZOARG.cjs +0 -33
  452. package/dist/chunk-4P6ZOARG.cjs.map +0 -1
  453. package/dist/chunk-55ER2KD5.js +0 -228
  454. package/dist/chunk-55ER2KD5.js.map +0 -1
  455. package/dist/chunk-5ZN622AO.js +0 -73
  456. package/dist/chunk-5ZN622AO.js.map +0 -1
  457. package/dist/chunk-6S5RUKU3.cjs +0 -347
  458. package/dist/chunk-6S5RUKU3.cjs.map +0 -1
  459. package/dist/chunk-6UQRVUN3.js +0 -222
  460. package/dist/chunk-6UQRVUN3.js.map +0 -1
  461. package/dist/chunk-7552UTQW.js +0 -11
  462. package/dist/chunk-7552UTQW.js.map +0 -1
  463. package/dist/chunk-7EQ4G4SI.cjs +0 -146
  464. package/dist/chunk-7EQ4G4SI.cjs.map +0 -1
  465. package/dist/chunk-7SAWIN74.js +0 -285
  466. package/dist/chunk-7SAWIN74.js.map +0 -1
  467. package/dist/chunk-A4E5AQFK.js +0 -30
  468. package/dist/chunk-A4E5AQFK.js.map +0 -1
  469. package/dist/chunk-AC5GNZKB.cjs +0 -344
  470. package/dist/chunk-AC5GNZKB.cjs.map +0 -1
  471. package/dist/chunk-ALPYR2GC.js +0 -1061
  472. package/dist/chunk-ALPYR2GC.js.map +0 -1
  473. package/dist/chunk-BZHG5IZ4.js +0 -73
  474. package/dist/chunk-BZHG5IZ4.js.map +0 -1
  475. package/dist/chunk-CEAQK2QY.cjs +0 -32
  476. package/dist/chunk-CEAQK2QY.cjs.map +0 -1
  477. package/dist/chunk-CMHVQR6P.js +0 -170
  478. package/dist/chunk-CMHVQR6P.js.map +0 -1
  479. package/dist/chunk-CU6IDACR.cjs +0 -224
  480. package/dist/chunk-CU6IDACR.cjs.map +0 -1
  481. package/dist/chunk-DPSA4QLA.js +0 -344
  482. package/dist/chunk-DPSA4QLA.js.map +0 -1
  483. package/dist/chunk-DQEHQNQE.js +0 -795
  484. package/dist/chunk-DQEHQNQE.js.map +0 -1
  485. package/dist/chunk-ESLWRGAG.cjs +0 -92
  486. package/dist/chunk-ESLWRGAG.cjs.map +0 -1
  487. package/dist/chunk-ESMHTKLJ.cjs +0 -206
  488. package/dist/chunk-ESMHTKLJ.cjs.map +0 -1
  489. package/dist/chunk-FGNDN2FD.cjs +0 -1242
  490. package/dist/chunk-FGNDN2FD.cjs.map +0 -1
  491. package/dist/chunk-FU6R566Y.cjs +0 -236
  492. package/dist/chunk-FU6R566Y.cjs.map +0 -1
  493. package/dist/chunk-GBFTC7Q7.cjs +0 -837
  494. package/dist/chunk-GBFTC7Q7.cjs.map +0 -1
  495. package/dist/chunk-GYR5K654.js +0 -91
  496. package/dist/chunk-GYR5K654.js.map +0 -1
  497. package/dist/chunk-HA2WBOGQ.js +0 -57
  498. package/dist/chunk-HA2WBOGQ.js.map +0 -1
  499. package/dist/chunk-HT5JQKN2.js +0 -118
  500. package/dist/chunk-HT5JQKN2.js.map +0 -1
  501. package/dist/chunk-INJD3G4K.cjs +0 -340
  502. package/dist/chunk-INJD3G4K.cjs.map +0 -1
  503. package/dist/chunk-IOYFAFHJ.cjs +0 -95
  504. package/dist/chunk-IOYFAFHJ.cjs.map +0 -1
  505. package/dist/chunk-J5QENANM.js +0 -87
  506. package/dist/chunk-J5QENANM.js.map +0 -1
  507. package/dist/chunk-J7VGRIAJ.js +0 -64
  508. package/dist/chunk-J7VGRIAJ.js.map +0 -1
  509. package/dist/chunk-KFOHQK7X.js +0 -144
  510. package/dist/chunk-KFOHQK7X.js.map +0 -1
  511. package/dist/chunk-KIL5CUN6.js +0 -31
  512. package/dist/chunk-KIL5CUN6.js.map +0 -1
  513. package/dist/chunk-LITNXTTT.js +0 -3
  514. package/dist/chunk-LITNXTTT.js.map +0 -1
  515. package/dist/chunk-M3LFHHTN.cjs +0 -764
  516. package/dist/chunk-M3LFHHTN.cjs.map +0 -1
  517. package/dist/chunk-NEIB3TLD.cjs +0 -360
  518. package/dist/chunk-NEIB3TLD.cjs.map +0 -1
  519. package/dist/chunk-NVAI5CCN.cjs +0 -39
  520. package/dist/chunk-NVAI5CCN.cjs.map +0 -1
  521. package/dist/chunk-NVGPMGI4.js +0 -95
  522. package/dist/chunk-NVGPMGI4.js.map +0 -1
  523. package/dist/chunk-NZ72VDNY.cjs +0 -4
  524. package/dist/chunk-NZ72VDNY.cjs.map +0 -1
  525. package/dist/chunk-O4JZUCUE.js +0 -1174
  526. package/dist/chunk-O4JZUCUE.js.map +0 -1
  527. package/dist/chunk-O7JOKRN2.js +0 -833
  528. package/dist/chunk-O7JOKRN2.js.map +0 -1
  529. package/dist/chunk-OPPXYVEZ.cjs +0 -131
  530. package/dist/chunk-OPPXYVEZ.cjs.map +0 -1
  531. package/dist/chunk-Q4EULJQY.js +0 -35
  532. package/dist/chunk-Q4EULJQY.js.map +0 -1
  533. package/dist/chunk-QWW3E3JM.cjs +0 -178
  534. package/dist/chunk-QWW3E3JM.cjs.map +0 -1
  535. package/dist/chunk-R7QYGZUP.cjs +0 -1075
  536. package/dist/chunk-R7QYGZUP.cjs.map +0 -1
  537. package/dist/chunk-RUPKBKUF.js +0 -352
  538. package/dist/chunk-RUPKBKUF.js.map +0 -1
  539. package/dist/chunk-SEO6NAQT.js +0 -14
  540. package/dist/chunk-SEO6NAQT.js.map +0 -1
  541. package/dist/chunk-T4B5LB6E.cjs +0 -66
  542. package/dist/chunk-T4B5LB6E.cjs.map +0 -1
  543. package/dist/chunk-TC5ZPWM4.cjs +0 -289
  544. package/dist/chunk-TC5ZPWM4.cjs.map +0 -1
  545. package/dist/chunk-TQ5UWA7S.js +0 -26
  546. package/dist/chunk-TQ5UWA7S.js.map +0 -1
  547. package/dist/chunk-URHPSJW2.js +0 -339
  548. package/dist/chunk-URHPSJW2.js.map +0 -1
  549. package/dist/chunk-UY3UYPBZ.cjs +0 -77
  550. package/dist/chunk-UY3UYPBZ.cjs.map +0 -1
  551. package/dist/chunk-VG2ABKJX.cjs +0 -100
  552. package/dist/chunk-VG2ABKJX.cjs.map +0 -1
  553. package/dist/chunk-VH77IPJN.cjs +0 -358
  554. package/dist/chunk-VH77IPJN.cjs.map +0 -1
  555. package/dist/chunk-VQTCQKHQ.cjs +0 -17
  556. package/dist/chunk-VQTCQKHQ.cjs.map +0 -1
  557. package/dist/chunk-WGWSHJ2N.js +0 -38
  558. package/dist/chunk-WGWSHJ2N.js.map +0 -1
  559. package/dist/chunk-WJH6IYU2.cjs +0 -32
  560. package/dist/chunk-WJH6IYU2.cjs.map +0 -1
  561. package/dist/chunk-YREV3LGG.cjs +0 -61
  562. package/dist/chunk-YREV3LGG.cjs.map +0 -1
  563. package/dist/chunk-YTXEZ4SD.cjs +0 -77
  564. package/dist/chunk-YTXEZ4SD.cjs.map +0 -1
  565. package/dist/chunk-YWCESU4Y.js +0 -1233
  566. package/dist/chunk-YWCESU4Y.js.map +0 -1
  567. package/dist/chunk-Z6HRSM2Y.cjs +0 -799
  568. package/dist/chunk-Z6HRSM2Y.cjs.map +0 -1
  569. package/dist/chunk-Z7PW3KHL.cjs +0 -1198
  570. package/dist/chunk-Z7PW3KHL.cjs.map +0 -1
  571. package/dist/chunk-ZNMBW67B.cjs +0 -40
  572. package/dist/chunk-ZNMBW67B.cjs.map +0 -1
  573. package/dist/correlation-id.cjs.map +0 -1
  574. package/dist/correlation-id.js.map +0 -1
  575. package/dist/event-subscriber.cjs.map +0 -1
  576. package/dist/event-subscriber.js.map +0 -1
  577. package/dist/event.cjs.map +0 -1
  578. package/dist/event.js.map +0 -1
  579. package/dist/exporters.cjs.map +0 -1
  580. package/dist/exporters.js.map +0 -1
  581. package/dist/functional.cjs.map +0 -1
  582. package/dist/functional.js.map +0 -1
  583. package/dist/init-DIowiiCh.d.ts +0 -1167
  584. package/dist/init-j-A1zI16.d.cts +0 -1167
  585. package/dist/processors.cjs.map +0 -1
  586. package/dist/processors.js.map +0 -1
  587. package/dist/trace-context-DbGKd1Rn.d.cts +0 -213
  588. package/dist/trace-context-DbGKd1Rn.d.ts +0 -213
  589. package/dist/utils-BahBCFtJ.d.cts +0 -712
  590. package/dist/utils-CLKwaUlG.d.ts +0 -712
  591. package/dist/yaml-config.cjs.map +0 -1
@@ -0,0 +1,1092 @@
1
+ const require_yaml_config = require('./yaml-config-B3dQ82GR.cjs');
2
+ const require_sampling = require('./sampling.cjs');
3
+ const require_node_require = require('./node-require-DF5QBX6z.cjs');
4
+ const require_tail_sampling_processor = require('./tail-sampling-processor.cjs');
5
+ const require_filtering_span_processor = require('./filtering-span-processor.cjs');
6
+ const require_span_name_normalizer = require('./span-name-normalizer.cjs');
7
+ const require_attribute_redacting_processor = require('./attribute-redacting-processor.cjs');
8
+ const require_pretty_console_exporter = require('./pretty-console-exporter-CMzlrRNg.cjs');
9
+ const require_canonical_log_line_processor = require('./canonical-log-line-processor--RlFDHhm.cjs');
10
+ let _opentelemetry_sdk_node = require("@opentelemetry/sdk-node");
11
+ let _opentelemetry_sdk_trace_base = require("@opentelemetry/sdk-trace-base");
12
+ let _opentelemetry_resources = require("@opentelemetry/resources");
13
+ let _opentelemetry_semantic_conventions = require("@opentelemetry/semantic-conventions");
14
+ let _opentelemetry_api = require("@opentelemetry/api");
15
+ let _opentelemetry_sdk_metrics = require("@opentelemetry/sdk-metrics");
16
+ let _opentelemetry_exporter_metrics_otlp_http = require("@opentelemetry/exporter-metrics-otlp-http");
17
+ let _opentelemetry_exporter_trace_otlp_http = require("@opentelemetry/exporter-trace-otlp-http");
18
+ let _opentelemetry_exporter_logs_otlp_http = require("@opentelemetry/exporter-logs-otlp-http");
19
+ let _opentelemetry_sdk_logs = require("@opentelemetry/sdk-logs");
20
+
21
+ //#region src/posthog-logs.ts
22
+ var RedactingLogRecordProcessor = class {
23
+ wrapped;
24
+ redact;
25
+ constructor(wrapped, redact) {
26
+ this.wrapped = wrapped;
27
+ this.redact = redact;
28
+ }
29
+ onEmit(logRecord, context) {
30
+ if (logRecord.body && typeof logRecord.body === "string") logRecord.body = this.redact(logRecord.body);
31
+ if (logRecord.attributes) {
32
+ for (const [key, value] of Object.entries(logRecord.attributes)) if (typeof value === "string") logRecord.attributes[key] = this.redact(value);
33
+ else if (Array.isArray(value)) logRecord.attributes[key] = value.map((item) => typeof item === "string" ? this.redact(item) : item);
34
+ }
35
+ this.wrapped.onEmit(logRecord, context);
36
+ }
37
+ shutdown() {
38
+ return this.wrapped.shutdown();
39
+ }
40
+ forceFlush() {
41
+ return this.wrapped.forceFlush();
42
+ }
43
+ };
44
+ /**
45
+ * Build log record processors for PostHog OTLP logs integration.
46
+ *
47
+ * Resolution order:
48
+ * 1. config.url if provided
49
+ * 2. POSTHOG_LOGS_URL env var
50
+ * 3. Empty array (disabled)
51
+ */
52
+ function buildPostHogLogProcessors(config, stringRedactor) {
53
+ const url = config?.url || process.env.POSTHOG_LOGS_URL;
54
+ if (!url) return [];
55
+ const sdkLogs = require_node_require.safeRequire("@opentelemetry/sdk-logs");
56
+ const exporterModule = require_node_require.safeRequire("@opentelemetry/exporter-logs-otlp-http");
57
+ if (!sdkLogs || !exporterModule) return [];
58
+ const exporter = new exporterModule.OTLPLogExporter({ url });
59
+ let processor = new sdkLogs.BatchLogRecordProcessor(exporter);
60
+ if (stringRedactor) processor = new RedactingLogRecordProcessor(processor, stringRedactor);
61
+ return [processor];
62
+ }
63
+
64
+ //#endregion
65
+ //#region src/baggage-span-processor.ts
66
+ /**
67
+ * Span processor that automatically copies baggage entries to span attributes
68
+ *
69
+ * This makes baggage visible in trace UIs (Jaeger, Grafana, DataDog, etc.)
70
+ * without manually calling ctx.setAttribute() for each baggage entry.
71
+ *
72
+ * @example Enable in init()
73
+ * ```typescript
74
+ * init({
75
+ * service: 'my-app',
76
+ * baggage: true // Uses default 'baggage.' prefix
77
+ * });
78
+ *
79
+ * // Now baggage automatically appears as span attributes
80
+ * await withBaggage({
81
+ * baggage: { 'tenant.id': 't1', 'user.id': 'u1' },
82
+ * fn: async () => {
83
+ * // Span has baggage.tenant.id and baggage.user.id attributes!
84
+ * }
85
+ * });
86
+ * ```
87
+ *
88
+ * @example Custom prefix
89
+ * ```typescript
90
+ * init({
91
+ * service: 'my-app',
92
+ * baggage: 'ctx' // Uses 'ctx.' prefix
93
+ * });
94
+ * // Creates attributes: ctx.tenant.id, ctx.user.id
95
+ * ```
96
+ */
97
+ var BaggageSpanProcessor = class {
98
+ prefix;
99
+ constructor(options = {}) {
100
+ this.prefix = options.prefix ?? "baggage.";
101
+ }
102
+ onStart(span, parentContext) {
103
+ let baggage = _opentelemetry_api.propagation.getBaggage(parentContext);
104
+ if (!baggage) baggage = _opentelemetry_api.propagation.getBaggage(_opentelemetry_api.context.active());
105
+ if (!baggage) try {
106
+ const { getActiveContextWithBaggage } = require_node_require.requireModule("./trace-context");
107
+ const storedContext = getActiveContextWithBaggage();
108
+ baggage = _opentelemetry_api.propagation.getBaggage(storedContext);
109
+ } catch {}
110
+ if (!baggage) return;
111
+ for (const [key, entry] of baggage.getAllEntries()) span.setAttribute(`${this.prefix}${key}`, entry.value);
112
+ }
113
+ onEnd(_span) {}
114
+ async shutdown() {}
115
+ async forceFlush() {}
116
+ };
117
+
118
+ //#endregion
119
+ //#region src/redact-values.ts
120
+ /** Standalone string redaction for use outside the span processor pipeline. */
121
+ function createStringRedactor(config) {
122
+ const resolved = typeof config === "string" ? require_attribute_redacting_processor.REDACTOR_PRESETS[config] : config;
123
+ const valuePatterns = resolved.valuePatterns ?? [];
124
+ const defaultReplacement = resolved.replacement ?? "[REDACTED]";
125
+ return (value) => {
126
+ let result = value;
127
+ for (const { pattern, replacement, mask } of valuePatterns) {
128
+ pattern.lastIndex = 0;
129
+ if (mask) result = result.replaceAll(pattern, (match) => mask(match));
130
+ else result = result.replaceAll(pattern, replacement ?? defaultReplacement);
131
+ }
132
+ return result;
133
+ };
134
+ }
135
+
136
+ //#endregion
137
+ //#region src/env-config.ts
138
+ /**
139
+ * Validate URL format
140
+ */
141
+ function isValidUrl(urlString) {
142
+ try {
143
+ const url = new URL(urlString);
144
+ return url.protocol === "http:" || url.protocol === "https:";
145
+ } catch {
146
+ return false;
147
+ }
148
+ }
149
+ /**
150
+ * Resolve OpenTelemetry environment variables from process.env
151
+ */
152
+ function resolveOtelEnv() {
153
+ const env = {};
154
+ if (process.env.OTEL_SERVICE_NAME) {
155
+ const value = process.env.OTEL_SERVICE_NAME.trim();
156
+ if (value) env.OTEL_SERVICE_NAME = value;
157
+ }
158
+ if (process.env.OTEL_EXPORTER_OTLP_ENDPOINT) {
159
+ const value = process.env.OTEL_EXPORTER_OTLP_ENDPOINT.trim();
160
+ if (value && isValidUrl(value)) env.OTEL_EXPORTER_OTLP_ENDPOINT = value;
161
+ }
162
+ if (process.env.OTEL_EXPORTER_OTLP_HEADERS) {
163
+ const value = process.env.OTEL_EXPORTER_OTLP_HEADERS.trim();
164
+ if (value) env.OTEL_EXPORTER_OTLP_HEADERS = value;
165
+ }
166
+ if (process.env.OTEL_RESOURCE_ATTRIBUTES) {
167
+ const value = process.env.OTEL_RESOURCE_ATTRIBUTES.trim();
168
+ if (value) env.OTEL_RESOURCE_ATTRIBUTES = value;
169
+ }
170
+ if (process.env.OTEL_EXPORTER_OTLP_PROTOCOL) {
171
+ const value = process.env.OTEL_EXPORTER_OTLP_PROTOCOL.trim().toLowerCase();
172
+ if (value === "http" || value === "grpc") env.OTEL_EXPORTER_OTLP_PROTOCOL = value;
173
+ }
174
+ if (process.env.OTEL_TRACES_SAMPLER) {
175
+ const value = process.env.OTEL_TRACES_SAMPLER.trim();
176
+ if (value) env.OTEL_TRACES_SAMPLER = value;
177
+ }
178
+ if (process.env.OTEL_TRACES_SAMPLER_ARG) {
179
+ const value = process.env.OTEL_TRACES_SAMPLER_ARG.trim();
180
+ if (value) env.OTEL_TRACES_SAMPLER_ARG = value;
181
+ }
182
+ return env;
183
+ }
184
+ function parseRatioSamplerArg(samplerName, samplerArg) {
185
+ if (samplerArg === void 0) return 1;
186
+ const ratio = Number(samplerArg);
187
+ if (!Number.isFinite(ratio) || ratio < 0 || ratio > 1) {
188
+ console.error(`[autotel] Invalid OTEL_TRACES_SAMPLER_ARG="${samplerArg}" for ${samplerName}. Expected a number in [0..1]. Falling back to 1.0.`);
189
+ return 1;
190
+ }
191
+ return ratio;
192
+ }
193
+ function warnOnUnusedSamplerArg(samplerName, samplerArg) {
194
+ if (samplerArg !== void 0) console.error(`[autotel] OTEL_TRACES_SAMPLER_ARG is not used by OTEL_TRACES_SAMPLER="${samplerName}". Ignoring value "${samplerArg}".`);
195
+ }
196
+ function createSamplerFromEnv(env) {
197
+ const samplerName = env.OTEL_TRACES_SAMPLER;
198
+ if (!samplerName) return;
199
+ switch (samplerName) {
200
+ case "always_on":
201
+ warnOnUnusedSamplerArg(samplerName, env.OTEL_TRACES_SAMPLER_ARG);
202
+ return new _opentelemetry_sdk_trace_base.AlwaysOnSampler();
203
+ case "always_off":
204
+ warnOnUnusedSamplerArg(samplerName, env.OTEL_TRACES_SAMPLER_ARG);
205
+ return new _opentelemetry_sdk_trace_base.AlwaysOffSampler();
206
+ case "traceidratio": return new _opentelemetry_sdk_trace_base.TraceIdRatioBasedSampler(parseRatioSamplerArg(samplerName, env.OTEL_TRACES_SAMPLER_ARG));
207
+ case "parentbased_always_on":
208
+ warnOnUnusedSamplerArg(samplerName, env.OTEL_TRACES_SAMPLER_ARG);
209
+ return new _opentelemetry_sdk_trace_base.ParentBasedSampler({ root: new _opentelemetry_sdk_trace_base.AlwaysOnSampler() });
210
+ case "parentbased_always_off":
211
+ warnOnUnusedSamplerArg(samplerName, env.OTEL_TRACES_SAMPLER_ARG);
212
+ return new _opentelemetry_sdk_trace_base.ParentBasedSampler({ root: new _opentelemetry_sdk_trace_base.AlwaysOffSampler() });
213
+ case "parentbased_traceidratio": return new _opentelemetry_sdk_trace_base.ParentBasedSampler({ root: new _opentelemetry_sdk_trace_base.TraceIdRatioBasedSampler(parseRatioSamplerArg(samplerName, env.OTEL_TRACES_SAMPLER_ARG)) });
214
+ case "jaeger_remote":
215
+ case "parentbased_jaeger_remote":
216
+ case "xray":
217
+ console.error(`[autotel] OTEL_TRACES_SAMPLER="${samplerName}" is not supported yet by autotel. Falling back to the next sampler source.`);
218
+ return;
219
+ default:
220
+ console.error(`[autotel] Unknown OTEL_TRACES_SAMPLER="${samplerName}". Falling back to the next sampler source.`);
221
+ return;
222
+ }
223
+ }
224
+ /**
225
+ * Parse OTEL_RESOURCE_ATTRIBUTES from comma-separated key=value pairs
226
+ * Example: "service.version=1.0.0,deployment.environment=production"
227
+ */
228
+ function parseResourceAttributes(input) {
229
+ if (!input || input.trim() === "") return {};
230
+ const attributes = {};
231
+ const pairs = input.split(",");
232
+ for (const pair of pairs) {
233
+ const trimmedPair = pair.trim();
234
+ if (!trimmedPair) continue;
235
+ const equalIndex = trimmedPair.indexOf("=");
236
+ if (equalIndex === -1) continue;
237
+ const key = trimmedPair.slice(0, equalIndex).trim();
238
+ const value = trimmedPair.slice(equalIndex + 1).trim();
239
+ if (key && value) attributes[key] = value;
240
+ }
241
+ return attributes;
242
+ }
243
+ /**
244
+ * Parse OTEL_EXPORTER_OTLP_HEADERS from comma-separated key=value pairs
245
+ * Example: "api-key=secret123,x-custom-header=value"
246
+ */
247
+ function parseOtlpHeaders(input) {
248
+ if (!input || input.trim() === "") return {};
249
+ const headers = {};
250
+ const pairs = input.split(",");
251
+ for (const pair of pairs) {
252
+ const trimmedPair = pair.trim();
253
+ if (!trimmedPair) continue;
254
+ const equalIndex = trimmedPair.indexOf("=");
255
+ if (equalIndex === -1) continue;
256
+ const key = trimmedPair.slice(0, equalIndex).trim();
257
+ const value = trimmedPair.slice(equalIndex + 1).trim();
258
+ if (key && value) headers[key] = value;
259
+ }
260
+ return headers;
261
+ }
262
+ /**
263
+ * Convert resolved environment variables to config
264
+ */
265
+ function envToConfig(env) {
266
+ const config = {};
267
+ if (env.OTEL_SERVICE_NAME) config.service = env.OTEL_SERVICE_NAME;
268
+ if (env.OTEL_EXPORTER_OTLP_ENDPOINT) config.endpoint = env.OTEL_EXPORTER_OTLP_ENDPOINT;
269
+ if (env.OTEL_EXPORTER_OTLP_PROTOCOL) config.protocol = env.OTEL_EXPORTER_OTLP_PROTOCOL;
270
+ if (env.OTEL_EXPORTER_OTLP_HEADERS) config.headers = parseOtlpHeaders(env.OTEL_EXPORTER_OTLP_HEADERS);
271
+ const resourceAttrs = parseResourceAttributes(env.OTEL_RESOURCE_ATTRIBUTES);
272
+ if (Object.keys(resourceAttrs).length > 0) config.resourceAttributes = resourceAttrs;
273
+ const sampler = createSamplerFromEnv(env);
274
+ if (sampler) config.otelSampler = sampler;
275
+ return config;
276
+ }
277
+ /**
278
+ * Main function to resolve config from environment variables
279
+ */
280
+ function resolveConfigFromEnv() {
281
+ return envToConfig(resolveOtelEnv());
282
+ }
283
+
284
+ //#endregion
285
+ //#region src/devtools.ts
286
+ const defaultHost = "127.0.0.1";
287
+ const defaultPort = 4318;
288
+ function resolveDevtoolsConfig(config) {
289
+ if (!config) return {
290
+ enabled: false,
291
+ endpoint: void 0,
292
+ embedded: false,
293
+ host: defaultHost,
294
+ port: defaultPort,
295
+ verbose: false
296
+ };
297
+ if (config === true) return {
298
+ enabled: true,
299
+ endpoint: `http://${defaultHost}:${defaultPort}`,
300
+ embedded: false,
301
+ host: defaultHost,
302
+ port: defaultPort,
303
+ verbose: false
304
+ };
305
+ const enabled = config.enabled ?? true;
306
+ const host = config.host ?? defaultHost;
307
+ const port = config.port ?? defaultPort;
308
+ const endpoint = config.endpoint ?? `http://${host}:${port}`;
309
+ return {
310
+ enabled,
311
+ endpoint: enabled ? endpoint : void 0,
312
+ embedded: enabled && (config.embedded ?? false),
313
+ host,
314
+ port,
315
+ verbose: config.verbose ?? false
316
+ };
317
+ }
318
+
319
+ //#endregion
320
+ //#region src/init.ts
321
+ /**
322
+ * Simplified initialization for autotel
323
+ *
324
+ * Single init() function with sensible defaults.
325
+ * Replaces initInstrumentation() and separate events config.
326
+ */
327
+ /**
328
+ * Silent logger (no-op) - used as default when user doesn't provide one.
329
+ * Internal autotel logs are silent by default to avoid spam.
330
+ * Users can import { autotelLogger } from 'autotel/logger' to create their own.
331
+ */
332
+ const silentLogger = {
333
+ info: () => {},
334
+ warn: () => {},
335
+ error: () => {},
336
+ debug: () => {}
337
+ };
338
+ /**
339
+ * Adapts an Autotel Sampler to the OTel SDK Sampler interface.
340
+ */
341
+ function toOtelSampler(sampler) {
342
+ return {
343
+ shouldSample(_context, _traceId, spanName, _spanKind, _attributes, links) {
344
+ return { decision: sampler.shouldSample({
345
+ operationName: spanName,
346
+ args: [],
347
+ links
348
+ }) ? _opentelemetry_sdk_trace_base.SamplingDecision.RECORD_AND_SAMPLED : _opentelemetry_sdk_trace_base.SamplingDecision.NOT_RECORD };
349
+ },
350
+ toString() {
351
+ return `AutotelSamplerAdapter`;
352
+ }
353
+ };
354
+ }
355
+ let OTLPTraceExporterGRPC;
356
+ let OTLPMetricExporterGRPC;
357
+ let OTLPLogExporterGRPC;
358
+ /**
359
+ * Helper: Lazy-load gRPC trace exporter
360
+ */
361
+ function loadGRPCTraceExporter() {
362
+ if (OTLPTraceExporterGRPC) return OTLPTraceExporterGRPC;
363
+ try {
364
+ OTLPTraceExporterGRPC = require_node_require.requireModule("@opentelemetry/exporter-trace-otlp-grpc").OTLPTraceExporter;
365
+ return OTLPTraceExporterGRPC;
366
+ } catch {
367
+ throw new Error("gRPC trace exporter not found. Install @opentelemetry/exporter-trace-otlp-grpc");
368
+ }
369
+ }
370
+ /**
371
+ * Helper: Lazy-load gRPC metric exporter
372
+ */
373
+ function loadGRPCMetricExporter() {
374
+ if (OTLPMetricExporterGRPC) return OTLPMetricExporterGRPC;
375
+ try {
376
+ OTLPMetricExporterGRPC = require_node_require.requireModule("@opentelemetry/exporter-metrics-otlp-grpc").OTLPMetricExporter;
377
+ return OTLPMetricExporterGRPC;
378
+ } catch {
379
+ throw new Error("gRPC metric exporter not found. Install @opentelemetry/exporter-metrics-otlp-grpc");
380
+ }
381
+ }
382
+ /**
383
+ * Helper: Create trace exporter based on protocol
384
+ */
385
+ function createTraceExporter(protocol, config) {
386
+ if (protocol === "grpc") return new (loadGRPCTraceExporter())(config);
387
+ return new _opentelemetry_exporter_trace_otlp_http.OTLPTraceExporter(config);
388
+ }
389
+ /**
390
+ * Helper: Create metric exporter based on protocol
391
+ */
392
+ function createMetricExporter(protocol, config) {
393
+ if (protocol === "grpc") return new (loadGRPCMetricExporter())(config);
394
+ return new _opentelemetry_exporter_metrics_otlp_http.OTLPMetricExporter(config);
395
+ }
396
+ /**
397
+ * Helper: Lazy-load gRPC log exporter
398
+ */
399
+ function loadGRPCLogExporter() {
400
+ if (OTLPLogExporterGRPC) return OTLPLogExporterGRPC;
401
+ try {
402
+ OTLPLogExporterGRPC = require_node_require.requireModule("@opentelemetry/exporter-logs-otlp-grpc").OTLPLogExporter;
403
+ return OTLPLogExporterGRPC;
404
+ } catch {
405
+ throw new Error("gRPC log exporter not found. Install @opentelemetry/exporter-logs-otlp-grpc");
406
+ }
407
+ }
408
+ /**
409
+ * Helper: Create log exporter based on protocol
410
+ */
411
+ function createLogExporter(protocol, config) {
412
+ if (protocol === "grpc") return new (loadGRPCLogExporter())(config);
413
+ return new _opentelemetry_exporter_logs_otlp_http.OTLPLogExporter(config);
414
+ }
415
+ /**
416
+ * Helper: Resolve protocol from config and environment
417
+ */
418
+ function resolveProtocol(configProtocol) {
419
+ if (configProtocol === "grpc" || configProtocol === "http") return configProtocol;
420
+ const envProtocol = process.env.OTEL_EXPORTER_OTLP_PROTOCOL;
421
+ if (envProtocol === "grpc") return "grpc";
422
+ if (envProtocol === "http/protobuf" || envProtocol === "http") return "http";
423
+ return "http";
424
+ }
425
+ /**
426
+ * Helper: Adjust endpoint URL for protocol
427
+ * gRPC exporters don't need the /v1/traces or /v1/metrics path
428
+ * HTTP exporters need the full path
429
+ */
430
+ function formatEndpointUrl(endpoint, signal, protocol) {
431
+ if (protocol === "grpc") return endpoint.replace(/\/(v1\/)?(traces|metrics|logs)$/, "");
432
+ if (!endpoint.endsWith(`/v1/${signal}`)) return `${endpoint}/v1/${signal}`;
433
+ return endpoint;
434
+ }
435
+ let initialized = false;
436
+ let locked = false;
437
+ let config = null;
438
+ let sdk = null;
439
+ let warnedOnce = false;
440
+ let logger = silentLogger;
441
+ let validationConfig = null;
442
+ let eventsConfig = null;
443
+ let _stringRedactor = null;
444
+ let _optionalRequire = require_node_require.safeRequire;
445
+ let _devtoolsClose = null;
446
+ const LOG_LEVELS = {
447
+ debug: 0,
448
+ info: 1,
449
+ warn: 2,
450
+ error: 3
451
+ };
452
+ /**
453
+ * Lock the logger to prevent further `init()` calls.
454
+ * Use this when framework plugins set up instrumentation and you want
455
+ * to prevent accidental re-initialization from user code.
456
+ */
457
+ function lockLogger() {
458
+ locked = true;
459
+ }
460
+ /**
461
+ * Check if the logger has been locked.
462
+ */
463
+ function isLoggerLocked() {
464
+ return locked;
465
+ }
466
+ function createSilentLogger() {
467
+ return {
468
+ info: () => {},
469
+ warn: () => {},
470
+ error: () => {},
471
+ debug: () => {}
472
+ };
473
+ }
474
+ function wrapLogger(base, silent, minLevel) {
475
+ if (silent) return createSilentLogger();
476
+ const threshold = LOG_LEVELS[minLevel];
477
+ const wrap = (fn, level) => {
478
+ if (LOG_LEVELS[level] < threshold) return (() => {});
479
+ return ((...args) => fn(...args));
480
+ };
481
+ return {
482
+ debug: wrap(base.debug, "debug"),
483
+ info: wrap(base.info, "info"),
484
+ warn: wrap(base.warn, "warn"),
485
+ error: wrap(base.error, "error")
486
+ };
487
+ }
488
+ /**
489
+ * Resolve the effective attribute redactor. Explicit config wins (`false`
490
+ * disables). Otherwise the `AUTOTEL_REDACT_PII` env var controls it, and as a
491
+ * final default PII redaction is auto-enabled in production.
492
+ */
493
+ function resolveAttributeRedactor(explicit, environment) {
494
+ if (explicit === false) return void 0;
495
+ if (explicit !== void 0) return explicit;
496
+ const flag = process.env.AUTOTEL_REDACT_PII?.trim().toLowerCase();
497
+ if (flag) {
498
+ if ([
499
+ "off",
500
+ "false",
501
+ "0",
502
+ "none",
503
+ "disabled"
504
+ ].includes(flag)) return;
505
+ if (flag === "default" || flag === "strict" || flag === "pci-dss") return flag;
506
+ if ([
507
+ "on",
508
+ "true",
509
+ "1",
510
+ "enabled"
511
+ ].includes(flag)) return "default";
512
+ }
513
+ return environment === "production" ? "default" : void 0;
514
+ }
515
+ function detectEnvironmentAttributes() {
516
+ const attrs = {};
517
+ const commitSha = process.env.COMMIT_SHA || process.env.GITHUB_SHA || process.env.VERCEL_GIT_COMMIT_SHA || process.env.CF_PAGES_COMMIT_SHA || process.env.AWS_CODEPIPELINE_EXECUTION_ID;
518
+ if (commitSha) attrs["service.commit.sha"] = commitSha;
519
+ const region = process.env.VERCEL_REGION || process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION || process.env.FLY_REGION || process.env.CF_REGION || process.env.GOOGLE_CLOUD_REGION;
520
+ if (region) attrs["service.region"] = region;
521
+ const version = process.env.APP_VERSION || process.env.HEROKU_RELEASE_VERSION || process.env.VERCEL_GIT_COMMIT_REF;
522
+ if (version) attrs["service.deploy.version"] = version;
523
+ return attrs;
524
+ }
525
+ /**
526
+ * Resolve metrics flag with env var override support
527
+ */
528
+ function resolveMetricsFlag(configFlag = "auto") {
529
+ const envFlag = process.env.AUTOTEL_METRICS;
530
+ if (envFlag === "on" || envFlag === "true") return true;
531
+ if (envFlag === "off" || envFlag === "false") return false;
532
+ if (configFlag === true) return true;
533
+ if (configFlag === false) return false;
534
+ return true;
535
+ }
536
+ /**
537
+ * Resolve logs flag with env var override support.
538
+ * Defaults to disabled (opt-in only) to avoid unexpected log export
539
+ * and to preserve the upstream SDK's OTEL_LOGS_EXPORTER handling.
540
+ */
541
+ function resolveLogsFlag(configFlag = "auto") {
542
+ const envFlag = process.env.AUTOTEL_LOGS;
543
+ if (envFlag === "on" || envFlag === "true") return true;
544
+ if (envFlag === "off" || envFlag === "false") return false;
545
+ if (configFlag === true) return true;
546
+ if (configFlag === false) return false;
547
+ return false;
548
+ }
549
+ /**
550
+ * Resolve debug flag with env var override support
551
+ *
552
+ * Supports:
553
+ * - `'pretty'`: Colorized, hierarchical output (PrettyConsoleExporter)
554
+ * - `true` / `'true'` / `'1'`: Raw JSON output (ConsoleSpanExporter)
555
+ * - `false` / `'false'` / `'0'`: Disabled
556
+ */
557
+ function resolveDebugFlag(configFlag) {
558
+ const envFlag = process.env.AUTOTEL_DEBUG;
559
+ if (envFlag === "pretty") return "pretty";
560
+ if (envFlag === "true" || envFlag === "1") return true;
561
+ if (envFlag === "false" || envFlag === "0") return false;
562
+ return configFlag ?? false;
563
+ }
564
+ function normalizeOtlpHeaders(headers) {
565
+ if (!headers) return void 0;
566
+ if (typeof headers !== "string") return headers;
567
+ const parsed = {};
568
+ for (const pair of headers.split(",")) {
569
+ const [key, ...valueParts] = pair.split("=");
570
+ if (!key || valueParts.length === 0) continue;
571
+ parsed[key.trim()] = valueParts.join("=").trim();
572
+ }
573
+ return parsed;
574
+ }
575
+ /**
576
+ * Initialize autotel - Write Once, Observe Everywhere
577
+ *
578
+ * Follows OpenTelemetry standards: opinionated defaults with full flexibility
579
+ * Idempotent: multiple calls are safe, last one wins
580
+ *
581
+ * @example Minimal setup (OTLP default)
582
+ * ```typescript
583
+ * init({ service: 'my-app' })
584
+ * ```
585
+ *
586
+ * @example With events (observe in PostHog, Mixpanel, etc.)
587
+ * ```typescript
588
+ * import { PostHogSubscriber } from 'autotel-subscribers/posthog';
589
+ *
590
+ * init({
591
+ * service: 'my-app',
592
+ * subscribers: [new PostHogSubscriber({ apiKey: '...' })]
593
+ * })
594
+ * ```
595
+ *
596
+ * @example Observe in Jaeger
597
+ * ```typescript
598
+ * import { JaegerExporter } from '@opentelemetry/exporter-jaeger'
599
+ *
600
+ * init({
601
+ * service: 'my-app',
602
+ * spanExporter: new JaegerExporter({ endpoint: 'http://localhost:14268/api/traces' })
603
+ * })
604
+ * ```
605
+ *
606
+ * @example Observe in Zipkin
607
+ * ```typescript
608
+ * import { ZipkinExporter } from '@opentelemetry/exporter-zipkin'
609
+ *
610
+ * init({
611
+ * service: 'my-app',
612
+ * spanExporter: new ZipkinExporter({ url: 'http://localhost:9411/api/v2/spans' })
613
+ * })
614
+ * ```
615
+ *
616
+ * @example Observe in Datadog
617
+ * ```typescript
618
+ * import { DatadogSpanProcessor } from '@opentelemetry/exporter-datadog'
619
+ *
620
+ * init({
621
+ * service: 'my-app',
622
+ * spanProcessor: new DatadogSpanProcessor({ ... })
623
+ * })
624
+ * ```
625
+ *
626
+ * @example Console output (dev)
627
+ * ```typescript
628
+ * import { ConsoleSpanExporter, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base'
629
+ *
630
+ * init({
631
+ * service: 'my-app',
632
+ * spanProcessor: new SimpleSpanProcessor(new ConsoleSpanExporter())
633
+ * })
634
+ * ```
635
+ */
636
+ function init(cfg) {
637
+ if (locked) return;
638
+ const envConfig = resolveConfigFromEnv();
639
+ const yamlConfig = require_yaml_config.loadYamlConfig() ?? {};
640
+ const mergedConfig = {
641
+ ...envConfig,
642
+ ...yamlConfig,
643
+ ...cfg,
644
+ resourceAttributes: {
645
+ ...envConfig.resourceAttributes,
646
+ ...yamlConfig.resourceAttributes,
647
+ ...detectEnvironmentAttributes(),
648
+ ...cfg.resourceAttributes
649
+ },
650
+ headers: cfg.headers ?? yamlConfig.headers ?? envConfig.headers
651
+ };
652
+ const resolvedRedactor = resolveAttributeRedactor(mergedConfig.attributeRedactor, mergedConfig.environment || process.env.NODE_ENV || "development");
653
+ if (resolvedRedactor === void 0) mergedConfig.attributeRedactor = void 0;
654
+ else {
655
+ const normalizedRedactor = require_attribute_redacting_processor.normalizeAttributeRedactorConfig(resolvedRedactor);
656
+ if (!normalizedRedactor) throw new Error("Invalid attributeRedactor config");
657
+ mergedConfig.attributeRedactor = normalizedRedactor;
658
+ }
659
+ const devtoolsConfig = resolveDevtoolsConfig(mergedConfig.devtools);
660
+ if (devtoolsConfig.enabled && mergedConfig.logs === void 0) mergedConfig.logs = true;
661
+ const silent = mergedConfig.silent ?? false;
662
+ const minLevel = mergedConfig.minLevel ?? "info";
663
+ logger = wrapLogger(mergedConfig.logger || silentLogger, silent, minLevel);
664
+ if (initialized) logger.warn({}, "[autotel] init() called again - last config wins. This may cause unexpected behavior.");
665
+ config = mergedConfig;
666
+ validationConfig = mergedConfig.validation || null;
667
+ eventsConfig = mergedConfig.events || null;
668
+ let endpoint = mergedConfig.endpoint ?? devtoolsConfig.endpoint;
669
+ const otlpHeaders = normalizeOtlpHeaders(mergedConfig.headers);
670
+ const version = mergedConfig.version || detectVersion();
671
+ const environment = mergedConfig.environment || process.env.NODE_ENV || "development";
672
+ const metricsEnabled = resolveMetricsFlag(mergedConfig.metrics);
673
+ const logsEnabled = resolveLogsFlag(mergedConfig.logs);
674
+ if (devtoolsConfig.enabled && devtoolsConfig.embedded) {
675
+ const devtoolsModule = _optionalRequire("autotel-devtools");
676
+ if (devtoolsModule?.createDevtools) {
677
+ const devtoolsInstance = devtoolsModule.createDevtools({
678
+ port: devtoolsConfig.port,
679
+ host: devtoolsConfig.host,
680
+ verbose: devtoolsConfig.verbose
681
+ });
682
+ _devtoolsClose = devtoolsInstance.close;
683
+ endpoint = `http://${devtoolsConfig.host}:${devtoolsInstance.port}`;
684
+ logger.info({}, `[autotel] autotel-devtools embedded server started at ${endpoint}`);
685
+ } else logger.warn({}, "[autotel] devtools.embedded requested but autotel-devtools is not installed. Falling back to endpoint-only mode.");
686
+ }
687
+ const hostname = detectHostname();
688
+ let resource = (0, _opentelemetry_resources.resourceFromAttributes)({
689
+ [_opentelemetry_semantic_conventions.ATTR_SERVICE_NAME]: mergedConfig.service,
690
+ [_opentelemetry_semantic_conventions.ATTR_SERVICE_VERSION]: version,
691
+ "deployment.environment": environment,
692
+ "deployment.environment.name": environment
693
+ });
694
+ if (hostname) resource = resource.merge((0, _opentelemetry_resources.resourceFromAttributes)({
695
+ "host.name": hostname,
696
+ "datadog.host.name": hostname
697
+ }));
698
+ if (mergedConfig.resource) resource = resource.merge(mergedConfig.resource);
699
+ if (mergedConfig.resourceAttributes) resource = resource.merge((0, _opentelemetry_resources.resourceFromAttributes)(mergedConfig.resourceAttributes));
700
+ const protocol = resolveProtocol(mergedConfig.protocol);
701
+ const configuredSpanProcessors = mergedConfig.spanProcessors && mergedConfig.spanProcessors.length > 0 ? mergedConfig.spanProcessors : mergedConfig.spanProcessor ? [mergedConfig.spanProcessor] : void 0;
702
+ const configuredSpanExporters = mergedConfig.spanExporters && mergedConfig.spanExporters.length > 0 ? mergedConfig.spanExporters : mergedConfig.spanExporter ? [mergedConfig.spanExporter] : void 0;
703
+ const configuredMetricReaders = mergedConfig.metricReaders && mergedConfig.metricReaders.length > 0 ? mergedConfig.metricReaders : mergedConfig.metricReader ? [mergedConfig.metricReader] : void 0;
704
+ const configuredLogRecordProcessors = mergedConfig.logRecordProcessors && mergedConfig.logRecordProcessors.length > 0 ? mergedConfig.logRecordProcessors : mergedConfig.logRecordProcessor ? [mergedConfig.logRecordProcessor] : void 0;
705
+ let spanProcessors = [];
706
+ if (configuredSpanProcessors && configuredSpanProcessors.length > 0) spanProcessors.push(...configuredSpanProcessors);
707
+ else if (configuredSpanExporters && configuredSpanExporters.length > 0) for (const exporter of configuredSpanExporters) spanProcessors.push(new require_tail_sampling_processor.TailSamplingSpanProcessor(new _opentelemetry_sdk_trace_base.BatchSpanProcessor(exporter)));
708
+ else if (endpoint) {
709
+ const traceExporter = createTraceExporter(protocol, {
710
+ url: formatEndpointUrl(endpoint, "traces", protocol),
711
+ headers: otlpHeaders
712
+ });
713
+ spanProcessors.push(new require_tail_sampling_processor.TailSamplingSpanProcessor(new _opentelemetry_sdk_trace_base.BatchSpanProcessor(traceExporter)));
714
+ }
715
+ if (mergedConfig.baggage) {
716
+ const prefix = typeof mergedConfig.baggage === "string" ? mergedConfig.baggage ? `${mergedConfig.baggage}.` : "" : "baggage.";
717
+ spanProcessors.push(new BaggageSpanProcessor({ prefix }));
718
+ }
719
+ const debugMode = resolveDebugFlag(mergedConfig.debug);
720
+ if (debugMode === "pretty") spanProcessors.push(new _opentelemetry_sdk_trace_base.SimpleSpanProcessor(new require_pretty_console_exporter.PrettyConsoleExporter()));
721
+ else if (debugMode === true) spanProcessors.push(new _opentelemetry_sdk_trace_base.SimpleSpanProcessor(new _opentelemetry_sdk_trace_base.ConsoleSpanExporter()));
722
+ if (mergedConfig.canonicalLogLines?.enabled) {
723
+ const canonicalOptions = {
724
+ logger: mergedConfig.canonicalLogLines.logger || mergedConfig.logger,
725
+ rootSpansOnly: mergedConfig.canonicalLogLines.rootSpansOnly,
726
+ minLevel: mergedConfig.canonicalLogLines.minLevel,
727
+ messageFormat: mergedConfig.canonicalLogLines.messageFormat,
728
+ includeResourceAttributes: mergedConfig.canonicalLogLines.includeResourceAttributes,
729
+ shouldEmit: mergedConfig.canonicalLogLines.shouldEmit,
730
+ keep: mergedConfig.canonicalLogLines.keep,
731
+ drain: mergedConfig.canonicalLogLines.drain,
732
+ onDrainError: mergedConfig.canonicalLogLines.onDrainError,
733
+ pretty: mergedConfig.canonicalLogLines.pretty
734
+ };
735
+ spanProcessors.push(new require_canonical_log_line_processor.CanonicalLogLineProcessor(canonicalOptions));
736
+ }
737
+ if (mergedConfig.attributeRedactor && spanProcessors.length > 0) {
738
+ const redactor = mergedConfig.attributeRedactor;
739
+ spanProcessors = spanProcessors.map((processor) => new require_attribute_redacting_processor.AttributeRedactingProcessor(processor, { redactor }));
740
+ }
741
+ if (mergedConfig.attributeRedactor) _stringRedactor = createStringRedactor(mergedConfig.attributeRedactor);
742
+ if (_stringRedactor && mergedConfig.subscribers) {
743
+ for (const subscriber of mergedConfig.subscribers) if ("setStringRedactor" in subscriber && typeof subscriber.setStringRedactor === "function") subscriber.setStringRedactor(_stringRedactor);
744
+ }
745
+ if (mergedConfig.spanNameNormalizer && spanProcessors.length > 0) spanProcessors = spanProcessors.map((processor) => new require_span_name_normalizer.SpanNameNormalizingProcessor(processor, { normalizer: mergedConfig.spanNameNormalizer }));
746
+ if (mergedConfig.spanFilter && spanProcessors.length > 0) spanProcessors = spanProcessors.map((processor) => new require_filtering_span_processor.FilteringSpanProcessor(processor, { filter: mergedConfig.spanFilter }));
747
+ const metricReaders = [];
748
+ if (configuredMetricReaders && configuredMetricReaders.length > 0) metricReaders.push(...configuredMetricReaders);
749
+ else if (metricsEnabled && endpoint) {
750
+ const metricExporter = createMetricExporter(protocol, {
751
+ url: formatEndpointUrl(endpoint, "metrics", protocol),
752
+ headers: otlpHeaders
753
+ });
754
+ metricReaders.push(new _opentelemetry_sdk_metrics.PeriodicExportingMetricReader({ exporter: metricExporter }));
755
+ }
756
+ let logRecordProcessors;
757
+ if (configuredLogRecordProcessors && configuredLogRecordProcessors.length > 0) logRecordProcessors = [...configuredLogRecordProcessors];
758
+ if (logsEnabled && endpoint) {
759
+ let processor = new _opentelemetry_sdk_logs.BatchLogRecordProcessor(createLogExporter(protocol, {
760
+ url: formatEndpointUrl(endpoint, "logs", protocol),
761
+ headers: otlpHeaders
762
+ }));
763
+ if (_stringRedactor) processor = new RedactingLogRecordProcessor(processor, _stringRedactor);
764
+ if (!logRecordProcessors) logRecordProcessors = [];
765
+ logRecordProcessors.push(processor);
766
+ logger.info({}, "[autotel] OTLP log exporter configured");
767
+ }
768
+ const posthogProcessors = buildPostHogLogProcessors(mergedConfig.posthog, _stringRedactor);
769
+ if (posthogProcessors.length > 0) {
770
+ if (!logRecordProcessors) logRecordProcessors = [];
771
+ logRecordProcessors.push(...posthogProcessors);
772
+ logger.info({}, "[autotel] PostHog OTLP logs configured");
773
+ }
774
+ let finalInstrumentations = mergedConfig.instrumentations ? [...mergedConfig.instrumentations] : [];
775
+ if (mergedConfig.autoInstrumentations !== void 0 && mergedConfig.autoInstrumentations !== false) {
776
+ if (isESMMode()) logger.info({}, "[autotel] ESM mode detected. For auto-instrumentation to work:\n 1. Install @opentelemetry/auto-instrumentations-node as a direct dependency\n 2. Import autotel/register FIRST in your instrumentation file\n 3. Use getNodeAutoInstrumentations() directly instead of autoInstrumentations\n See: https://github.com/jagreehal/autotel#esm-setup");
777
+ try {
778
+ const manualInstrumentationNames = getInstrumentationNames(mergedConfig.instrumentations ?? []);
779
+ if (manualInstrumentationNames.size > 0) {
780
+ const manualNames = [...manualInstrumentationNames].join(", ");
781
+ logger.info({}, `[autotel] Detected manual instrumentations (${manualNames}). These will take precedence over auto-instrumentations. Tip: Set autoInstrumentations:false if you want full manual control, or remove manual configs to use auto-instrumentations.`);
782
+ }
783
+ const autoInstrumentations = getAutoInstrumentations(mergedConfig.autoInstrumentations, manualInstrumentationNames);
784
+ if (autoInstrumentations && autoInstrumentations.length > 0) finalInstrumentations = [...finalInstrumentations, ...autoInstrumentations];
785
+ } catch (error) {
786
+ logger.warn({}, `[autotel] Failed to configure auto-instrumentations: ${error instanceof Error ? error.message : String(error)}`);
787
+ }
788
+ }
789
+ const autotelSampler = mergedConfig.sampler ?? (mergedConfig.sampling ? require_sampling.resolveSamplingPreset(mergedConfig.sampling) : void 0);
790
+ if (autotelSampler) mergedConfig.sampler = autotelSampler;
791
+ const sampler = autotelSampler ? toOtelSampler(autotelSampler) : envConfig.otelSampler ?? toOtelSampler(require_sampling.samplingPresets.production());
792
+ const sdkOptions = {
793
+ resource,
794
+ sampler,
795
+ instrumentations: finalInstrumentations
796
+ };
797
+ if (spanProcessors.length > 0) sdkOptions.spanProcessors = spanProcessors;
798
+ if (metricReaders.length > 0) sdkOptions.metricReaders = metricReaders;
799
+ if (logRecordProcessors && logRecordProcessors.length > 0) sdkOptions.logRecordProcessors = logRecordProcessors;
800
+ sdk = mergedConfig.sdkFactory ? mergedConfig.sdkFactory(sdkOptions) : new _opentelemetry_sdk_node.NodeSDK(sdkOptions);
801
+ if (!sdk) throw new Error("[autotel] sdkFactory must return a NodeSDK instance");
802
+ sdk.start();
803
+ if (mergedConfig.openllmetry?.enabled) {
804
+ const traceloop = _optionalRequire("@traceloop/node-server-sdk");
805
+ if (traceloop) {
806
+ const initOptions = { ...mergedConfig.openllmetry.options };
807
+ try {
808
+ initOptions.tracerProvider = sdk.getTracerProvider();
809
+ } catch {}
810
+ if (configuredSpanExporters?.[0]) initOptions.exporter = configuredSpanExporters[0];
811
+ if (typeof traceloop.initialize === "function") {
812
+ traceloop.initialize(initOptions);
813
+ logger.info({}, "[autotel] OpenLLMetry initialized successfully");
814
+ } else logger.warn({}, "[autotel] OpenLLMetry initialize function not found. Check @traceloop/node-server-sdk version.");
815
+ } else logger.warn({}, "[autotel] OpenLLMetry enabled but @traceloop/node-server-sdk is not installed. Install it as a peer dependency to use OpenLLMetry integration.");
816
+ }
817
+ initialized = true;
818
+ }
819
+ /**
820
+ * Extract instrumentation class names from instrumentation instances
821
+ * Used to detect duplicates between manual and auto instrumentations
822
+ */
823
+ function getInstrumentationNames(instrumentations) {
824
+ const names = /* @__PURE__ */ new Set();
825
+ if (!instrumentations) return names;
826
+ for (const instrumentation of instrumentations) if (instrumentation && typeof instrumentation === "object") names.add(instrumentation.constructor.name);
827
+ return names;
828
+ }
829
+ /**
830
+ * Map common instrumentation class names to their package names
831
+ * Used to disable auto-instrumentations when user provides manual configs
832
+ */
833
+ const INSTRUMENTATION_CLASS_TO_PACKAGE = {
834
+ HttpInstrumentation: "@opentelemetry/instrumentation-http",
835
+ HttpsInstrumentation: "@opentelemetry/instrumentation-http",
836
+ ExpressInstrumentation: "@opentelemetry/instrumentation-express",
837
+ FastifyInstrumentation: "@opentelemetry/instrumentation-fastify",
838
+ MongoDBInstrumentation: "@opentelemetry/instrumentation-mongodb",
839
+ MongooseInstrumentation: "@opentelemetry/instrumentation-mongoose",
840
+ PrismaInstrumentation: "@opentelemetry/instrumentation-prisma",
841
+ PinoInstrumentation: "@opentelemetry/instrumentation-pino",
842
+ WinstonInstrumentation: "@opentelemetry/instrumentation-winston",
843
+ RedisInstrumentation: "@opentelemetry/instrumentation-redis",
844
+ GraphQLInstrumentation: "@opentelemetry/instrumentation-graphql",
845
+ GrpcInstrumentation: "@opentelemetry/instrumentation-grpc",
846
+ IORedisInstrumentation: "@opentelemetry/instrumentation-ioredis",
847
+ KnexInstrumentation: "@opentelemetry/instrumentation-knex",
848
+ NestJsInstrumentation: "@opentelemetry/instrumentation-nestjs-core",
849
+ PgInstrumentation: "@opentelemetry/instrumentation-pg",
850
+ MySQLInstrumentation: "@opentelemetry/instrumentation-mysql",
851
+ MySQL2Instrumentation: "@opentelemetry/instrumentation-mysql2"
852
+ };
853
+ /**
854
+ * Detect if we're running in ESM mode
855
+ */
856
+ function isESMMode() {
857
+ try {
858
+ const fs = require_node_require.requireModule("node:fs");
859
+ try {
860
+ return JSON.parse(fs.readFileSync(`${process.cwd()}/package.json`, "utf8")).type === "module";
861
+ } catch {
862
+ return false;
863
+ }
864
+ } catch {
865
+ return false;
866
+ }
867
+ }
868
+ /**
869
+ * Lazy-load auto-instrumentations (optional peer dependency)
870
+ * Only loads when integrations config is truthy, avoiding ~40+ package imports at startup.
871
+ */
872
+ function loadNodeAutoInstrumentations() {
873
+ try {
874
+ return require_node_require.requireModule("@opentelemetry/auto-instrumentations-node").getNodeAutoInstrumentations;
875
+ } catch {
876
+ const isESM = isESMMode();
877
+ const baseMessage = "@opentelemetry/auto-instrumentations-node not found.";
878
+ if (isESM) throw new Error(`${baseMessage}\n\nESM Setup Required:
879
+ 1. Install as a direct dependency: pnpm add @opentelemetry/auto-instrumentations-node
880
+ 2. Create instrumentation.mjs with:
881
+ import 'autotel/register'; // MUST be first!
882
+ import { init } from 'autotel';
883
+ import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
884
+ init({ service: "my-app", instrumentations: getNodeAutoInstrumentations() });
885
+ 3. Run with: tsx --import ./instrumentation.mjs src/index.ts
886
+
887
+ See: https://github.com/jagreehal/autotel#esm-setup`);
888
+ throw new Error(`${baseMessage} Install it: pnpm add @opentelemetry/auto-instrumentations-node`);
889
+ }
890
+ }
891
+ /**
892
+ * Injectable loader for testing. Set to override the default loader.
893
+ * @internal
894
+ */
895
+ let _autoInstrumentationsLoader = null;
896
+ /**
897
+ * Get auto-instrumentations based on simple integration names
898
+ * Excludes instrumentations that are manually provided to avoid conflicts
899
+ */
900
+ function getAutoInstrumentations(integrations, manualInstrumentationNames = /* @__PURE__ */ new Set()) {
901
+ if (integrations === false) return [];
902
+ const getNodeAutoInstrumentations = _autoInstrumentationsLoader ? _autoInstrumentationsLoader() : loadNodeAutoInstrumentations();
903
+ const exclusionConfig = {};
904
+ for (const className of manualInstrumentationNames) {
905
+ const packageName = INSTRUMENTATION_CLASS_TO_PACKAGE[className];
906
+ if (packageName) exclusionConfig[packageName] = { enabled: false };
907
+ }
908
+ if (integrations === true) {
909
+ if (Object.keys(exclusionConfig).length > 0) return getNodeAutoInstrumentations(exclusionConfig);
910
+ return getNodeAutoInstrumentations();
911
+ }
912
+ if (Array.isArray(integrations)) {
913
+ const config = { ...exclusionConfig };
914
+ for (const name of integrations) {
915
+ const packageName = `@opentelemetry/instrumentation-${name}`;
916
+ if (!exclusionConfig[packageName]) config[packageName] = { enabled: true };
917
+ }
918
+ return getNodeAutoInstrumentations(config);
919
+ }
920
+ const config = {
921
+ ...exclusionConfig,
922
+ ...integrations
923
+ };
924
+ for (const packageName of Object.keys(exclusionConfig)) if (Object.keys(integrations).find((key) => packageName.includes(key))) config[packageName] = { enabled: false };
925
+ return getNodeAutoInstrumentations(config);
926
+ }
927
+ /**
928
+ * Check if autotel has been initialized
929
+ */
930
+ function isInitialized() {
931
+ return initialized;
932
+ }
933
+ /**
934
+ * Get current config (internal use)
935
+ */
936
+ function getConfig() {
937
+ return config;
938
+ }
939
+ /**
940
+ * Get current logger (internal use)
941
+ */
942
+ function getLogger() {
943
+ return logger;
944
+ }
945
+ /**
946
+ * Get validation config (internal use)
947
+ */
948
+ function getValidationConfig() {
949
+ return validationConfig;
950
+ }
951
+ /**
952
+ * Get events config (internal use)
953
+ */
954
+ function getEventsConfig() {
955
+ return eventsConfig;
956
+ }
957
+ /**
958
+ * Warn once if not initialized (same behavior in all environments)
959
+ */
960
+ function warnIfNotInitialized(context) {
961
+ if (!initialized && !warnedOnce) {
962
+ logger.warn({}, `[autotel] ${context} used before init() called. Call init({ service: "..." }) first. See: https://docs.autotel.dev/quickstart`);
963
+ warnedOnce = true;
964
+ }
965
+ }
966
+ /**
967
+ * Auto-detect version from package.json
968
+ */
969
+ function detectVersion() {
970
+ try {
971
+ const fs = require_node_require.requireModule("node:fs");
972
+ return JSON.parse(fs.readFileSync(`${process.cwd()}/package.json`, "utf8")).version || "1.0.0";
973
+ } catch {
974
+ return "1.0.0";
975
+ }
976
+ }
977
+ /**
978
+ * Detect hostname for resource attributes.
979
+ * Supports Datadog conventions (DD_HOSTNAME) and falls back to system hostname.
980
+ *
981
+ * Priority order:
982
+ * 1. DD_HOSTNAME environment variable (Datadog convention)
983
+ * 2. HOSTNAME environment variable (common Unix convention)
984
+ * 3. os.hostname() (system hostname)
985
+ *
986
+ * @returns hostname string or undefined if detection fails
987
+ */
988
+ function detectHostname() {
989
+ if (process.env.DD_HOSTNAME) return process.env.DD_HOSTNAME;
990
+ if (process.env.HOSTNAME) return process.env.HOSTNAME;
991
+ try {
992
+ return require_node_require.requireModule("node:os").hostname();
993
+ } catch {
994
+ return;
995
+ }
996
+ }
997
+ /**
998
+ * @internal Close embedded devtools if running.
999
+ */
1000
+ async function _closeEmbeddedDevtools() {
1001
+ if (_devtoolsClose) {
1002
+ await _devtoolsClose();
1003
+ _devtoolsClose = null;
1004
+ }
1005
+ }
1006
+ /**
1007
+ * Get SDK instance (for shutdown)
1008
+ */
1009
+ function getSdk() {
1010
+ return sdk;
1011
+ }
1012
+
1013
+ //#endregion
1014
+ Object.defineProperty(exports, 'BaggageSpanProcessor', {
1015
+ enumerable: true,
1016
+ get: function () {
1017
+ return BaggageSpanProcessor;
1018
+ }
1019
+ });
1020
+ Object.defineProperty(exports, '_closeEmbeddedDevtools', {
1021
+ enumerable: true,
1022
+ get: function () {
1023
+ return _closeEmbeddedDevtools;
1024
+ }
1025
+ });
1026
+ Object.defineProperty(exports, 'createStringRedactor', {
1027
+ enumerable: true,
1028
+ get: function () {
1029
+ return createStringRedactor;
1030
+ }
1031
+ });
1032
+ Object.defineProperty(exports, 'getConfig', {
1033
+ enumerable: true,
1034
+ get: function () {
1035
+ return getConfig;
1036
+ }
1037
+ });
1038
+ Object.defineProperty(exports, 'getEventsConfig', {
1039
+ enumerable: true,
1040
+ get: function () {
1041
+ return getEventsConfig;
1042
+ }
1043
+ });
1044
+ Object.defineProperty(exports, 'getLogger', {
1045
+ enumerable: true,
1046
+ get: function () {
1047
+ return getLogger;
1048
+ }
1049
+ });
1050
+ Object.defineProperty(exports, 'getSdk', {
1051
+ enumerable: true,
1052
+ get: function () {
1053
+ return getSdk;
1054
+ }
1055
+ });
1056
+ Object.defineProperty(exports, 'getValidationConfig', {
1057
+ enumerable: true,
1058
+ get: function () {
1059
+ return getValidationConfig;
1060
+ }
1061
+ });
1062
+ Object.defineProperty(exports, 'init', {
1063
+ enumerable: true,
1064
+ get: function () {
1065
+ return init;
1066
+ }
1067
+ });
1068
+ Object.defineProperty(exports, 'isInitialized', {
1069
+ enumerable: true,
1070
+ get: function () {
1071
+ return isInitialized;
1072
+ }
1073
+ });
1074
+ Object.defineProperty(exports, 'isLoggerLocked', {
1075
+ enumerable: true,
1076
+ get: function () {
1077
+ return isLoggerLocked;
1078
+ }
1079
+ });
1080
+ Object.defineProperty(exports, 'lockLogger', {
1081
+ enumerable: true,
1082
+ get: function () {
1083
+ return lockLogger;
1084
+ }
1085
+ });
1086
+ Object.defineProperty(exports, 'warnIfNotInitialized', {
1087
+ enumerable: true,
1088
+ get: function () {
1089
+ return warnIfNotInitialized;
1090
+ }
1091
+ });
1092
+ //# sourceMappingURL=init-DvapOXCc.cjs.map