autotel 3.6.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (617) 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-CmYpdqCN.js +591 -0
  12. package/dist/attributes-CmYpdqCN.js.map +1 -0
  13. package/dist/attributes-PZ5doLgw.cjs +704 -0
  14. package/dist/attributes-PZ5doLgw.cjs.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 -54
  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 -17
  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 -66
  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 -64
  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 -37
  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 -21
  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 -57
  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 -20
  149. package/dist/http.cjs +276 -176
  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 -174
  156. package/dist/http.js.map +1 -1
  157. package/dist/index-Ck06vlW2.d.ts +678 -0
  158. package/dist/index-Ck06vlW2.d.ts.map +1 -0
  159. package/dist/index-eKuioqT1.d.cts +678 -0
  160. package/dist/index-eKuioqT1.d.cts.map +1 -0
  161. package/dist/index.cjs +751 -1218
  162. package/dist/index.cjs.map +1 -1
  163. package/dist/index.d.cts +341 -659
  164. package/dist/index.d.cts.map +1 -0
  165. package/dist/index.d.ts +341 -659
  166. package/dist/index.d.ts.map +1 -0
  167. package/dist/index.js +606 -737
  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 -36
  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 -21
  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-DVSmWg6Y.js +175 -0
  276. package/dist/registry-DVSmWg6Y.js.map +1 -0
  277. package/dist/registry-DYgvb62e.cjs +319 -0
  278. package/dist/registry-DYgvb62e.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 +327 -39
  308. package/dist/semantic-helpers.cjs.map +1 -1
  309. package/dist/semantic-helpers.d.cts +30 -150
  310. package/dist/semantic-helpers.d.cts.map +1 -0
  311. package/dist/semantic-helpers.d.ts +30 -150
  312. package/dist/semantic-helpers.d.ts.map +1 -0
  313. package/dist/semantic-helpers.js +326 -20
  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 +178 -115
  382. package/dist/validate.cjs.map +1 -1
  383. package/dist/validate.d.cts +40 -64
  384. package/dist/validate.d.cts.map +1 -0
  385. package/dist/validate.d.ts +40 -64
  386. package/dist/validate.d.ts.map +1 -0
  387. package/dist/validate.js +177 -113
  388. package/dist/validate.js.map +1 -1
  389. package/dist/validation-attributes.cjs +42 -17
  390. package/dist/validation-attributes.cjs.map +1 -1
  391. package/dist/validation-attributes.d.cts +13 -20
  392. package/dist/validation-attributes.d.cts.map +1 -0
  393. package/dist/validation-attributes.d.ts +13 -20
  394. package/dist/validation-attributes.d.ts.map +1 -0
  395. package/dist/validation-attributes.js +40 -2
  396. package/dist/validation-attributes.js.map +1 -1
  397. package/dist/webhook.cjs +286 -256
  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 -254
  404. package/dist/webhook.js.map +1 -1
  405. package/dist/workflow-distributed.cjs +498 -412
  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 -410
  412. package/dist/workflow-distributed.js.map +1 -1
  413. package/dist/workflow.cjs +405 -40
  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 -21
  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 +4 -4
  431. package/skills/analyze-traces/SKILL.md +14 -12
  432. package/skills/review-otel-patterns/SKILL.md +4 -2
  433. package/skills/tune-sampling/SKILL.md +8 -3
  434. package/src/attributes/builders.ts +2 -20
  435. package/src/attributes/index.ts +0 -1
  436. package/src/attributes/registry.ts +2 -9
  437. package/src/attributes/types.ts +0 -8
  438. package/src/index.ts +7 -41
  439. package/src/request-logger.test.ts +53 -1
  440. package/src/request-logger.ts +58 -0
  441. package/src/semantic-helpers.test.ts +2 -87
  442. package/src/semantic-helpers.ts +0 -146
  443. package/src/validate.test.ts +3 -1
  444. package/src/validate.ts +9 -3
  445. package/dist/attributes.cjs.map +0 -1
  446. package/dist/attributes.js.map +0 -1
  447. package/dist/chunk-2ZKEORFN.cjs +0 -14
  448. package/dist/chunk-2ZKEORFN.cjs.map +0 -1
  449. package/dist/chunk-3QXBFGKP.js +0 -344
  450. package/dist/chunk-3QXBFGKP.js.map +0 -1
  451. package/dist/chunk-454CH4OV.js +0 -744
  452. package/dist/chunk-454CH4OV.js.map +0 -1
  453. package/dist/chunk-4A53YIAX.js +0 -180
  454. package/dist/chunk-4A53YIAX.js.map +0 -1
  455. package/dist/chunk-4IFSYQVX.js +0 -337
  456. package/dist/chunk-4IFSYQVX.js.map +0 -1
  457. package/dist/chunk-4P6ZOARG.cjs +0 -33
  458. package/dist/chunk-4P6ZOARG.cjs.map +0 -1
  459. package/dist/chunk-55ER2KD5.js +0 -228
  460. package/dist/chunk-55ER2KD5.js.map +0 -1
  461. package/dist/chunk-5ZN622AO.js +0 -73
  462. package/dist/chunk-5ZN622AO.js.map +0 -1
  463. package/dist/chunk-66YJ66GG.js +0 -1021
  464. package/dist/chunk-66YJ66GG.js.map +0 -1
  465. package/dist/chunk-6S5RUKU3.cjs +0 -347
  466. package/dist/chunk-6S5RUKU3.cjs.map +0 -1
  467. package/dist/chunk-6UQRVUN3.js +0 -222
  468. package/dist/chunk-6UQRVUN3.js.map +0 -1
  469. package/dist/chunk-7552UTQW.js +0 -11
  470. package/dist/chunk-7552UTQW.js.map +0 -1
  471. package/dist/chunk-7EQ4G4SI.cjs +0 -146
  472. package/dist/chunk-7EQ4G4SI.cjs.map +0 -1
  473. package/dist/chunk-7SAWIN74.js +0 -285
  474. package/dist/chunk-7SAWIN74.js.map +0 -1
  475. package/dist/chunk-A4E5AQFK.js +0 -30
  476. package/dist/chunk-A4E5AQFK.js.map +0 -1
  477. package/dist/chunk-ALPYR2GC.js +0 -1061
  478. package/dist/chunk-ALPYR2GC.js.map +0 -1
  479. package/dist/chunk-B7SWBE4P.cjs +0 -799
  480. package/dist/chunk-B7SWBE4P.cjs.map +0 -1
  481. package/dist/chunk-BZHG5IZ4.js +0 -73
  482. package/dist/chunk-BZHG5IZ4.js.map +0 -1
  483. package/dist/chunk-CEAQK2QY.cjs +0 -32
  484. package/dist/chunk-CEAQK2QY.cjs.map +0 -1
  485. package/dist/chunk-CMHVQR6P.js +0 -170
  486. package/dist/chunk-CMHVQR6P.js.map +0 -1
  487. package/dist/chunk-CU6IDACR.cjs +0 -224
  488. package/dist/chunk-CU6IDACR.cjs.map +0 -1
  489. package/dist/chunk-D4TM63S3.js +0 -795
  490. package/dist/chunk-D4TM63S3.js.map +0 -1
  491. package/dist/chunk-DCEDJQGG.js +0 -28
  492. package/dist/chunk-DCEDJQGG.js.map +0 -1
  493. package/dist/chunk-DPSA4QLA.js +0 -344
  494. package/dist/chunk-DPSA4QLA.js.map +0 -1
  495. package/dist/chunk-E6TERL5O.cjs +0 -23
  496. package/dist/chunk-E6TERL5O.cjs.map +0 -1
  497. package/dist/chunk-EE6CPXKH.cjs +0 -164
  498. package/dist/chunk-EE6CPXKH.cjs.map +0 -1
  499. package/dist/chunk-EOFB7XCL.cjs +0 -837
  500. package/dist/chunk-EOFB7XCL.cjs.map +0 -1
  501. package/dist/chunk-ESLWRGAG.cjs +0 -92
  502. package/dist/chunk-ESLWRGAG.cjs.map +0 -1
  503. package/dist/chunk-ESMHTKLJ.cjs +0 -206
  504. package/dist/chunk-ESMHTKLJ.cjs.map +0 -1
  505. package/dist/chunk-FMTHVSYY.cjs +0 -1039
  506. package/dist/chunk-FMTHVSYY.cjs.map +0 -1
  507. package/dist/chunk-FU6R566Y.cjs +0 -236
  508. package/dist/chunk-FU6R566Y.cjs.map +0 -1
  509. package/dist/chunk-GYR5K654.js +0 -91
  510. package/dist/chunk-GYR5K654.js.map +0 -1
  511. package/dist/chunk-HA2WBOGQ.js +0 -57
  512. package/dist/chunk-HA2WBOGQ.js.map +0 -1
  513. package/dist/chunk-HT5JQKN2.js +0 -118
  514. package/dist/chunk-HT5JQKN2.js.map +0 -1
  515. package/dist/chunk-INJD3G4K.cjs +0 -340
  516. package/dist/chunk-INJD3G4K.cjs.map +0 -1
  517. package/dist/chunk-IOYFAFHJ.cjs +0 -95
  518. package/dist/chunk-IOYFAFHJ.cjs.map +0 -1
  519. package/dist/chunk-J5QENANM.js +0 -87
  520. package/dist/chunk-J5QENANM.js.map +0 -1
  521. package/dist/chunk-J7VGRIAJ.js +0 -64
  522. package/dist/chunk-J7VGRIAJ.js.map +0 -1
  523. package/dist/chunk-KFOHQK7X.js +0 -144
  524. package/dist/chunk-KFOHQK7X.js.map +0 -1
  525. package/dist/chunk-KIL5CUN6.js +0 -31
  526. package/dist/chunk-KIL5CUN6.js.map +0 -1
  527. package/dist/chunk-KYXZS3EA.cjs +0 -100
  528. package/dist/chunk-KYXZS3EA.cjs.map +0 -1
  529. package/dist/chunk-LITNXTTT.js +0 -3
  530. package/dist/chunk-LITNXTTT.js.map +0 -1
  531. package/dist/chunk-LVIPBYFE.js +0 -157
  532. package/dist/chunk-LVIPBYFE.js.map +0 -1
  533. package/dist/chunk-M3LFHHTN.cjs +0 -764
  534. package/dist/chunk-M3LFHHTN.cjs.map +0 -1
  535. package/dist/chunk-N25JDZSC.js +0 -95
  536. package/dist/chunk-N25JDZSC.js.map +0 -1
  537. package/dist/chunk-NEIB3TLD.cjs +0 -360
  538. package/dist/chunk-NEIB3TLD.cjs.map +0 -1
  539. package/dist/chunk-NENU7E6V.cjs +0 -344
  540. package/dist/chunk-NENU7E6V.cjs.map +0 -1
  541. package/dist/chunk-NVAI5CCN.cjs +0 -39
  542. package/dist/chunk-NVAI5CCN.cjs.map +0 -1
  543. package/dist/chunk-NZ72VDNY.cjs +0 -4
  544. package/dist/chunk-NZ72VDNY.cjs.map +0 -1
  545. package/dist/chunk-OPPXYVEZ.cjs +0 -131
  546. package/dist/chunk-OPPXYVEZ.cjs.map +0 -1
  547. package/dist/chunk-Q4EULJQY.js +0 -35
  548. package/dist/chunk-Q4EULJQY.js.map +0 -1
  549. package/dist/chunk-QF7ARNUM.js +0 -339
  550. package/dist/chunk-QF7ARNUM.js.map +0 -1
  551. package/dist/chunk-QWW3E3JM.cjs +0 -178
  552. package/dist/chunk-QWW3E3JM.cjs.map +0 -1
  553. package/dist/chunk-R7QYGZUP.cjs +0 -1075
  554. package/dist/chunk-R7QYGZUP.cjs.map +0 -1
  555. package/dist/chunk-RUPKBKUF.js +0 -352
  556. package/dist/chunk-RUPKBKUF.js.map +0 -1
  557. package/dist/chunk-SEO6NAQT.js +0 -14
  558. package/dist/chunk-SEO6NAQT.js.map +0 -1
  559. package/dist/chunk-T4B5LB6E.cjs +0 -66
  560. package/dist/chunk-T4B5LB6E.cjs.map +0 -1
  561. package/dist/chunk-T5WRA76K.cjs +0 -32
  562. package/dist/chunk-T5WRA76K.cjs.map +0 -1
  563. package/dist/chunk-T7JO2TCP.js +0 -1233
  564. package/dist/chunk-T7JO2TCP.js.map +0 -1
  565. package/dist/chunk-TC5ZPWM4.cjs +0 -289
  566. package/dist/chunk-TC5ZPWM4.cjs.map +0 -1
  567. package/dist/chunk-TQ5UWA7S.js +0 -26
  568. package/dist/chunk-TQ5UWA7S.js.map +0 -1
  569. package/dist/chunk-UIKYE2QZ.js +0 -833
  570. package/dist/chunk-UIKYE2QZ.js.map +0 -1
  571. package/dist/chunk-UNPLAVE7.js +0 -21
  572. package/dist/chunk-UNPLAVE7.js.map +0 -1
  573. package/dist/chunk-UY3UYPBZ.cjs +0 -77
  574. package/dist/chunk-UY3UYPBZ.cjs.map +0 -1
  575. package/dist/chunk-V7UBMJAB.cjs +0 -1242
  576. package/dist/chunk-V7UBMJAB.cjs.map +0 -1
  577. package/dist/chunk-VH77IPJN.cjs +0 -358
  578. package/dist/chunk-VH77IPJN.cjs.map +0 -1
  579. package/dist/chunk-VQTCQKHQ.cjs +0 -17
  580. package/dist/chunk-VQTCQKHQ.cjs.map +0 -1
  581. package/dist/chunk-WGWSHJ2N.js +0 -38
  582. package/dist/chunk-WGWSHJ2N.js.map +0 -1
  583. package/dist/chunk-WJH6IYU2.cjs +0 -32
  584. package/dist/chunk-WJH6IYU2.cjs.map +0 -1
  585. package/dist/chunk-YREV3LGG.cjs +0 -61
  586. package/dist/chunk-YREV3LGG.cjs.map +0 -1
  587. package/dist/chunk-YTXEZ4SD.cjs +0 -77
  588. package/dist/chunk-YTXEZ4SD.cjs.map +0 -1
  589. package/dist/chunk-ZNMBW67B.cjs +0 -40
  590. package/dist/chunk-ZNMBW67B.cjs.map +0 -1
  591. package/dist/correlation-id.cjs.map +0 -1
  592. package/dist/correlation-id.js.map +0 -1
  593. package/dist/define-event-BL6Li7CM.d.ts +0 -23
  594. package/dist/define-event-ClP3T1Jx.d.cts +0 -23
  595. package/dist/event-subscriber.cjs.map +0 -1
  596. package/dist/event-subscriber.js.map +0 -1
  597. package/dist/event.cjs.map +0 -1
  598. package/dist/event.js.map +0 -1
  599. package/dist/exporters.cjs.map +0 -1
  600. package/dist/exporters.js.map +0 -1
  601. package/dist/functional.cjs.map +0 -1
  602. package/dist/functional.js.map +0 -1
  603. package/dist/init-DIowiiCh.d.ts +0 -1167
  604. package/dist/init-j-A1zI16.d.cts +0 -1167
  605. package/dist/processors.cjs.map +0 -1
  606. package/dist/processors.js.map +0 -1
  607. package/dist/trace-context-DbGKd1Rn.d.cts +0 -213
  608. package/dist/trace-context-DbGKd1Rn.d.ts +0 -213
  609. package/dist/utils-BahBCFtJ.d.cts +0 -712
  610. package/dist/utils-CLKwaUlG.d.ts +0 -712
  611. package/dist/yaml-config.cjs.map +0 -1
  612. package/src/gen-ai-cost.test.ts +0 -81
  613. package/src/gen-ai-cost.ts +0 -145
  614. package/src/gen-ai-events.test.ts +0 -135
  615. package/src/gen-ai-events.ts +0 -208
  616. package/src/gen-ai-metrics.test.ts +0 -96
  617. package/src/gen-ai-metrics.ts +0 -128
@@ -1,31 +1,7 @@
1
- import { T as TraceContext } from './trace-context-DbGKd1Rn.js';
2
- import { Attributes } from '@opentelemetry/api';
1
+ import { n as TraceContext } from "./trace-context-Cijqoi6e.js";
2
+ import { Attributes } from "@opentelemetry/api";
3
3
 
4
- /**
5
- * Semantic convention helpers for OpenTelemetry
6
- *
7
- * Pre-configured trace helpers that follow OpenTelemetry semantic conventions
8
- * for common operation types. Reduces boilerplate and ensures consistency.
9
- *
10
- * Based on: https://opentelemetry.io/docs/specs/semconv/
11
- */
12
-
13
- /**
14
- * Configuration for LLM (Large Language Model) operations
15
- *
16
- * Follows Gen AI semantic conventions:
17
- * https://opentelemetry.io/docs/specs/semconv/gen-ai/
18
- */
19
- interface LLMConfig {
20
- /** Model name (e.g., 'gpt-4', 'claude-3-opus') */
21
- model: string;
22
- /** Operation type */
23
- operation?: 'chat' | 'completion' | 'embedding';
24
- /** Model provider (e.g., 'openai', 'anthropic', 'cohere') - maps to gen.ai.system */
25
- provider?: string;
26
- /** Additional attributes to add to the span */
27
- attributes?: Attributes;
28
- }
4
+ //#region src/semantic-helpers.d.ts
29
5
  /**
30
6
  * Configuration for database operations
31
7
  *
@@ -33,16 +9,16 @@ interface LLMConfig {
33
9
  * https://opentelemetry.io/docs/specs/semconv/database/
34
10
  */
35
11
  interface DBConfig {
36
- /** Database system (e.g., 'postgresql', 'mongodb', 'redis') */
37
- system: string;
38
- /** Operation type (e.g., 'SELECT', 'INSERT', 'find', 'get') */
39
- operation?: string;
40
- /** Database name */
41
- database?: string;
42
- /** Collection/table name */
43
- collection?: string;
44
- /** Additional attributes to add to the span */
45
- attributes?: Attributes;
12
+ /** Database system (e.g., 'postgresql', 'mongodb', 'redis') */
13
+ system: string;
14
+ /** Operation type (e.g., 'SELECT', 'INSERT', 'find', 'get') */
15
+ operation?: string;
16
+ /** Database name */
17
+ database?: string;
18
+ /** Collection/table name */
19
+ collection?: string;
20
+ /** Additional attributes to add to the span */
21
+ attributes?: Attributes;
46
22
  }
47
23
  /**
48
24
  * Configuration for HTTP client operations
@@ -51,12 +27,12 @@ interface DBConfig {
51
27
  * https://opentelemetry.io/docs/specs/semconv/http/
52
28
  */
53
29
  interface HTTPConfig {
54
- /** HTTP method (e.g., 'GET', 'POST') */
55
- method?: string;
56
- /** Target URL or URL template */
57
- url?: string;
58
- /** Additional attributes to add to the span */
59
- attributes?: Attributes;
30
+ /** HTTP method (e.g., 'GET', 'POST') */
31
+ method?: string;
32
+ /** Target URL or URL template */
33
+ url?: string;
34
+ /** Additional attributes to add to the span */
35
+ attributes?: Attributes;
60
36
  }
61
37
  /**
62
38
  * Configuration for messaging operations
@@ -65,112 +41,15 @@ interface HTTPConfig {
65
41
  * https://opentelemetry.io/docs/specs/semconv/messaging/
66
42
  */
67
43
  interface MessagingConfig {
68
- /** Messaging system (e.g., 'kafka', 'rabbitmq', 'sqs') */
69
- system: string;
70
- /** Operation type */
71
- operation?: 'publish' | 'receive' | 'process';
72
- /** Destination name (queue/topic) */
73
- destination?: string;
74
- /** Additional attributes to add to the span */
75
- attributes?: Attributes;
44
+ /** Messaging system (e.g., 'kafka', 'rabbitmq', 'sqs') */
45
+ system: string;
46
+ /** Operation type */
47
+ operation?: 'publish' | 'receive' | 'process';
48
+ /** Destination name (queue/topic) */
49
+ destination?: string;
50
+ /** Additional attributes to add to the span */
51
+ attributes?: Attributes;
76
52
  }
77
- /**
78
- * Trace LLM operations with Gen AI semantic conventions
79
- *
80
- * Automatically adds standard attributes for LLM operations:
81
- * - gen.ai.request.model
82
- * - gen.ai.operation.name
83
- * - gen.ai.system
84
- *
85
- * **Use Cases:**
86
- * - Chat completions
87
- * - Text generation
88
- * - Embeddings
89
- * - Multi-step LLM workflows
90
- *
91
- * @param config - LLM operation configuration
92
- * @returns Traced function factory with Gen AI attributes
93
- *
94
- * @example Chat completion with OpenAI
95
- * ```typescript
96
- * import { traceLLM } from 'autotel/semantic-helpers'
97
- * import OpenAI from 'openai'
98
- *
99
- * const openai = new OpenAI()
100
- *
101
- * export const generateResponse = traceLLM({
102
- * model: 'gpt-4-turbo',
103
- * operation: 'chat',
104
- * provider: 'openai'
105
- * })(ctx => async (prompt: string) => {
106
- * const response = await openai.chat.completions.create({
107
- * model: 'gpt-4-turbo',
108
- * messages: [{ role: 'user', content: prompt }]
109
- * })
110
- *
111
- * // Add usage metrics to span
112
- * ctx.setAttribute('gen.ai.usage.completion_tokens', response.usage?.completion_tokens)
113
- * ctx.setAttribute('gen.ai.usage.prompt_tokens', response.usage?.prompt_tokens)
114
- *
115
- * return response.choices[0].message.content
116
- * })
117
- * ```
118
- *
119
- * @example Anthropic Claude with streaming
120
- * ```typescript
121
- * import { traceLLM } from 'autotel/semantic-helpers'
122
- * import Anthropic from '@anthropic-ai/sdk'
123
- *
124
- * const anthropic = new Anthropic()
125
- *
126
- * export const streamResponse = traceLLM({
127
- * model: 'claude-3-opus-20240229',
128
- * operation: 'chat',
129
- * provider: 'anthropic'
130
- * })(ctx => async function* (prompt: string) {
131
- * const stream = await anthropic.messages.create({
132
- * model: 'claude-3-opus-20240229',
133
- * messages: [{ role: 'user', content: prompt }],
134
- * stream: true,
135
- * max_tokens: 1024
136
- * })
137
- *
138
- * let totalTokens = 0
139
- * for await (const event of stream) {
140
- * if (event.type === 'content_block_delta') {
141
- * yield event.delta.text
142
- * }
143
- * if (event.type === 'message_stop') {
144
- * ctx.setAttribute('gen.ai.usage.completion_tokens', event.message.usage.output_tokens)
145
- * totalTokens = event.message.usage.output_tokens
146
- * }
147
- * }
148
- *
149
- * return totalTokens
150
- * })
151
- * ```
152
- *
153
- * @example Embeddings
154
- * ```typescript
155
- * import { traceLLM } from 'autotel/semantic-helpers'
156
- * import { OpenAIEmbeddings } from '@langchain/openai'
157
- *
158
- * const embeddings = new OpenAIEmbeddings()
159
- *
160
- * export const embed = traceLLM({
161
- * model: 'text-embedding-3-small',
162
- * operation: 'embedding',
163
- * provider: 'openai'
164
- * })(ctx => async (text: string) => {
165
- * const result = await embeddings.embedQuery(text)
166
- * ctx.setAttribute('gen.ai.response.embedding_length', result.length)
167
- * return result
168
- * })
169
- * ```
170
- *
171
- * @public
172
- */
173
- declare function traceLLM<TArgs extends unknown[], TReturn>(config: LLMConfig): (fnFactory: (ctx: TraceContext) => (...args: TArgs) => Promise<TReturn>) => ((...args: TArgs) => Promise<TReturn>);
174
53
  /**
175
54
  * Trace database operations with DB semantic conventions
176
55
  *
@@ -438,5 +317,6 @@ declare function traceHTTP<TArgs extends unknown[], TReturn>(config: HTTPConfig)
438
317
  * @public
439
318
  */
440
319
  declare function traceMessaging<TArgs extends unknown[], TReturn>(config: MessagingConfig): (fnFactory: (ctx: TraceContext) => (...args: TArgs) => Promise<TReturn>) => ((...args: TArgs) => Promise<TReturn>);
441
-
442
- export { type DBConfig, type HTTPConfig, type LLMConfig, type MessagingConfig, traceDB, traceHTTP, traceLLM, traceMessaging };
320
+ //#endregion
321
+ export { DBConfig, HTTPConfig, MessagingConfig, traceDB, traceHTTP, traceMessaging };
322
+ //# sourceMappingURL=semantic-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-helpers.d.ts","names":[],"sources":["../src/semantic-helpers.ts"],"mappings":";;;;;;;;;AA6ByB;UAVR,QAAA;EAmBU;EAjBzB,MAAA;EAuBuB;EArBvB,SAAA;EAmBA;EAjBA,QAAA;EAmBa;EAjBb,UAAA;EAiBuB;EAfvB,UAAA,GAAa,UAAU;AAAA;;;;;;;UASR,UAAA;EAuBQ;EArBvB,MAAA;EA2Hc;EAzHd,GAAA;EAyHqB;EAvHrB,UAAA,GAAa,UAAU;AAAA;;;;;;;UASR,eAAA;EAiHgB;EA/G/B,MAAA;EA4G+C;EA1G/C,SAAA;EA0GwD;EAxGxD,WAAA;EA0Gc;EAxGd,UAAA,GAAa,UAAU;AAAA;;;;;;;;;AAyGgB;AAuGzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKyC;AAgIzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKyC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBApPzB,OAAA,mCAA0C,MAAA,EAAQ,QAAA,IAE9D,SAAA,GAAY,GAAA,EAAK,YAAA,SAAqB,IAAA,EAAM,KAAA,KAAU,OAAA,CAAQ,OAAA,WACxD,IAAA,EAAM,KAAA,KAAU,OAAA,CAAQ,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuGlB,SAAA,mCACd,MAAA,EAAQ,UAAA,IAGN,SAAA,GAAY,GAAA,EAAK,YAAA,SAAqB,IAAA,EAAM,KAAA,KAAU,OAAA,CAAQ,OAAA,WACxD,IAAA,EAAM,KAAA,KAAU,OAAA,CAAQ,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgIlB,cAAA,mCACd,MAAA,EAAQ,eAAA,IAGN,SAAA,GAAY,GAAA,EAAK,YAAA,SAAqB,IAAA,EAAM,KAAA,KAAU,OAAA,CAAQ,OAAA,WACxD,IAAA,EAAM,KAAA,KAAU,OAAA,CAAQ,OAAA"}
@@ -1,21 +1,327 @@
1
- export { traceDB, traceHTTP, traceLLM, traceMessaging } from './chunk-N25JDZSC.js';
2
- import './chunk-T7JO2TCP.js';
3
- import './chunk-HT5JQKN2.js';
4
- import './chunk-SEO6NAQT.js';
5
- import './chunk-66YJ66GG.js';
6
- import './chunk-LVIPBYFE.js';
7
- import './chunk-ALPYR2GC.js';
8
- import './chunk-CMHVQR6P.js';
9
- import './chunk-A4E5AQFK.js';
10
- import './chunk-WGWSHJ2N.js';
11
- import './chunk-GYR5K654.js';
12
- import './chunk-RUPKBKUF.js';
13
- import './chunk-6UQRVUN3.js';
14
- import './chunk-3QXBFGKP.js';
15
- import './chunk-Q4EULJQY.js';
16
- import './chunk-DPSA4QLA.js';
17
- import './chunk-55ER2KD5.js';
18
- import './chunk-J5QENANM.js';
19
- import './chunk-HA2WBOGQ.js';
20
- //# sourceMappingURL=semantic-helpers.js.map
1
+ import { a as trace } from "./functional-BGkT8J-h.js";
2
+
3
+ //#region src/semantic-helpers.ts
4
+ /**
5
+ * Semantic convention helpers for OpenTelemetry
6
+ *
7
+ * Pre-configured trace helpers that follow OpenTelemetry semantic conventions
8
+ * for common operation types. Reduces boilerplate and ensures consistency.
9
+ *
10
+ * Based on: https://opentelemetry.io/docs/specs/semconv/
11
+ */
12
+ /**
13
+ * Trace database operations with DB semantic conventions
14
+ *
15
+ * Automatically adds standard attributes for database operations:
16
+ * - db.system
17
+ * - db.operation
18
+ * - db.name
19
+ * - db.collection.name (for NoSQL)
20
+ *
21
+ * **Use Cases:**
22
+ * - SQL queries (PostgreSQL, MySQL, SQLite)
23
+ * - NoSQL operations (MongoDB, DynamoDB, Redis)
24
+ * - ORM queries (Prisma, TypeORM, Drizzle)
25
+ *
26
+ * @param config - Database operation configuration
27
+ * @returns Traced function factory with DB attributes
28
+ *
29
+ * @example PostgreSQL query
30
+ * ```typescript
31
+ * import { traceDB } from 'autotel/semantic-helpers'
32
+ * import { pool } from './db'
33
+ *
34
+ * export const getUser = traceDB({
35
+ * system: 'postgresql',
36
+ * operation: 'SELECT',
37
+ * database: 'app_db',
38
+ * collection: 'users'
39
+ * })(ctx => async (userId: string) => {
40
+ * const query = 'SELECT * FROM users WHERE id = $1'
41
+ * ctx.setAttribute('db.statement', query)
42
+ *
43
+ * const result = await pool.query(query, [userId])
44
+ * ctx.setAttribute('db.rows_affected', result.rowCount)
45
+ *
46
+ * return result.rows[0]
47
+ * })
48
+ * ```
49
+ *
50
+ * @example MongoDB with Mongoose
51
+ * ```typescript
52
+ * import { traceDB } from 'autotel/semantic-helpers'
53
+ * import { User } from './models/User'
54
+ *
55
+ * export const findUsers = traceDB({
56
+ * system: 'mongodb',
57
+ * operation: 'find',
58
+ * database: 'app_db',
59
+ * collection: 'users'
60
+ * })(ctx => async (filter: object) => {
61
+ * ctx.setAttribute('db.mongodb.filter', JSON.stringify(filter))
62
+ *
63
+ * const users = await User.find(filter).limit(100)
64
+ * ctx.setAttribute('db.response.count', users.length)
65
+ *
66
+ * return users
67
+ * })
68
+ * ```
69
+ *
70
+ * @example Redis operations
71
+ * ```typescript
72
+ * import { traceDB } from 'autotel/semantic-helpers'
73
+ * import { redis } from './redis'
74
+ *
75
+ * export const cacheGet = traceDB({
76
+ * system: 'redis',
77
+ * operation: 'GET'
78
+ * })(ctx => async (key: string) => {
79
+ * ctx.setAttribute('db.redis.key', key)
80
+ *
81
+ * const value = await redis.get(key)
82
+ * ctx.setAttribute('db.response.cache_hit', value !== null)
83
+ *
84
+ * return value
85
+ * })
86
+ * ```
87
+ *
88
+ * @example Prisma with detailed query info
89
+ * ```typescript
90
+ * import { traceDB } from 'autotel/semantic-helpers'
91
+ * import { prisma } from './prisma'
92
+ *
93
+ * export const createPost = traceDB({
94
+ * system: 'postgresql',
95
+ * operation: 'INSERT',
96
+ * database: 'app_db',
97
+ * collection: 'posts'
98
+ * })(ctx => async (data: { title: string; content: string; authorId: string }) => {
99
+ * ctx.setAttribute('db.prisma.model', 'Post')
100
+ * ctx.setAttribute('db.prisma.action', 'create')
101
+ *
102
+ * const post = await prisma.post.create({ data })
103
+ *
104
+ * ctx.setAttribute('db.response.id', post.id)
105
+ * return post
106
+ * })
107
+ * ```
108
+ *
109
+ * @public
110
+ */
111
+ function traceDB(config) {
112
+ return (fnFactory) => {
113
+ return trace((ctx) => {
114
+ ctx.setAttribute("db.system", config.system);
115
+ if (config.operation) ctx.setAttribute("db.operation", config.operation);
116
+ if (config.database) ctx.setAttribute("db.name", config.database);
117
+ if (config.collection) ctx.setAttribute("db.collection.name", config.collection);
118
+ if (config.attributes) {
119
+ for (const [key, value] of Object.entries(config.attributes)) if (value !== void 0 && value !== null) {
120
+ const attrValue = typeof value === "string" || typeof value === "number" || typeof value === "boolean" ? value : JSON.stringify(value);
121
+ ctx.setAttribute(key, attrValue);
122
+ }
123
+ }
124
+ return fnFactory(ctx);
125
+ });
126
+ };
127
+ }
128
+ /**
129
+ * Trace HTTP client operations with HTTP semantic conventions
130
+ *
131
+ * Automatically adds standard attributes for HTTP requests:
132
+ * - http.request.method
133
+ * - url.full
134
+ *
135
+ * **Use Cases:**
136
+ * - External API calls
137
+ * - Microservice communication
138
+ * - Third-party integrations
139
+ *
140
+ * @param config - HTTP operation configuration
141
+ * @returns Traced function factory with HTTP attributes
142
+ *
143
+ * @example Fetch API
144
+ * ```typescript
145
+ * import { traceHTTP } from 'autotel/semantic-helpers'
146
+ *
147
+ * export const fetchUser = traceHTTP({
148
+ * method: 'GET',
149
+ * url: 'https://api.example.com/users/:id'
150
+ * })(ctx => async (userId: string) => {
151
+ * const url = `https://api.example.com/users/${userId}`
152
+ * ctx.setAttribute('url.full', url)
153
+ *
154
+ * const response = await fetch(url)
155
+ * ctx.setAttribute('http.response.status_code', response.status)
156
+ *
157
+ * if (!response.ok) {
158
+ * ctx.setAttribute('error', true)
159
+ * throw new Error(`HTTP ${response.status}: ${response.statusText}`)
160
+ * }
161
+ *
162
+ * return response.json()
163
+ * })
164
+ * ```
165
+ *
166
+ * @example Axios with retry logic
167
+ * ```typescript
168
+ * import { traceHTTP } from 'autotel/semantic-helpers'
169
+ * import axios from 'axios'
170
+ *
171
+ * export const sendWebhook = traceHTTP({
172
+ * method: 'POST',
173
+ * url: 'https://webhook.example.com/events'
174
+ * })(ctx => async (payload: object) => {
175
+ * let attempts = 0
176
+ * const maxAttempts = 3
177
+ *
178
+ * while (attempts < maxAttempts) {
179
+ * try {
180
+ * attempts++
181
+ * ctx.setAttribute('http.request.resend_count', attempts - 1)
182
+ *
183
+ * const response = await axios.post('https://webhook.example.com/events', payload)
184
+ * ctx.setAttribute('http.response.status_code', response.status)
185
+ * return response.data
186
+ * } catch (error) {
187
+ * if (attempts >= maxAttempts) throw error
188
+ * await new Promise(resolve => setTimeout(resolve, 1000 * attempts))
189
+ * }
190
+ * }
191
+ * })
192
+ * ```
193
+ *
194
+ * @public
195
+ */
196
+ function traceHTTP(config) {
197
+ return (fnFactory) => {
198
+ return trace((ctx) => {
199
+ if (config.method) ctx.setAttribute("http.request.method", config.method);
200
+ if (config.url) ctx.setAttribute("url.full", config.url);
201
+ if (config.attributes) {
202
+ for (const [key, value] of Object.entries(config.attributes)) if (value !== void 0 && value !== null) {
203
+ const attrValue = typeof value === "string" || typeof value === "number" || typeof value === "boolean" ? value : JSON.stringify(value);
204
+ ctx.setAttribute(key, attrValue);
205
+ }
206
+ }
207
+ return fnFactory(ctx);
208
+ });
209
+ };
210
+ }
211
+ /**
212
+ * Trace messaging operations with Messaging semantic conventions
213
+ *
214
+ * Automatically adds standard attributes for messaging:
215
+ * - messaging.system
216
+ * - messaging.operation
217
+ * - messaging.destination.name
218
+ *
219
+ * **Use Cases:**
220
+ * - Publishing messages to queues/topics
221
+ * - Consuming messages from queues/topics
222
+ * - Event-driven architectures
223
+ *
224
+ * @param config - Messaging operation configuration
225
+ * @returns Traced function factory with Messaging attributes
226
+ *
227
+ * @example Publishing to Kafka
228
+ * ```typescript
229
+ * import { traceMessaging } from 'autotel/semantic-helpers'
230
+ * import { kafka } from './kafka'
231
+ *
232
+ * const producer = kafka.producer()
233
+ *
234
+ * export const publishEvent = traceMessaging({
235
+ * system: 'kafka',
236
+ * operation: 'publish',
237
+ * destination: 'user-events'
238
+ * })(ctx => async (event: { type: string; userId: string; data: object }) => {
239
+ * ctx.setAttribute('messaging.message.type', event.type)
240
+ * ctx.setAttribute('messaging.kafka.partition', 0)
241
+ *
242
+ * await producer.send({
243
+ * topic: 'user-events',
244
+ * messages: [
245
+ * {
246
+ * key: event.userId,
247
+ * value: JSON.stringify(event.data)
248
+ * }
249
+ * ]
250
+ * })
251
+ *
252
+ * ctx.setAttribute('messaging.message.id', event.userId)
253
+ * })
254
+ * ```
255
+ *
256
+ * @example Consuming from RabbitMQ
257
+ * ```typescript
258
+ * import { traceMessaging } from 'autotel/semantic-helpers'
259
+ * import { channel } from './rabbitmq'
260
+ *
261
+ * export const processOrder = traceMessaging({
262
+ * system: 'rabbitmq',
263
+ * operation: 'process',
264
+ * destination: 'orders'
265
+ * })(ctx => async (message: { orderId: string; items: object[] }) => {
266
+ * ctx.setAttribute('messaging.message.id', message.orderId)
267
+ * ctx.setAttribute('messaging.message.body.size', JSON.stringify(message).length)
268
+ *
269
+ * // Process order logic
270
+ * const result = await processOrderInternal(message)
271
+ *
272
+ * ctx.setAttribute('messaging.operation.result', 'success')
273
+ * return result
274
+ * })
275
+ * ```
276
+ *
277
+ * @example AWS SQS with batch processing
278
+ * ```typescript
279
+ * import { traceMessaging } from 'autotel/semantic-helpers'
280
+ * import { SQS } from '@aws-sdk/client-sqs'
281
+ *
282
+ * const sqs = new SQS()
283
+ *
284
+ * export const sendBatch = traceMessaging({
285
+ * system: 'aws_sqs',
286
+ * operation: 'publish',
287
+ * destination: 'notifications-queue'
288
+ * })(ctx => async (messages: Array<{ id: string; body: object }>) => {
289
+ * ctx.setAttribute('messaging.batch.message_count', messages.length)
290
+ *
291
+ * const result = await sqs.sendMessageBatch({
292
+ * QueueUrl: process.env.QUEUE_URL,
293
+ * Entries: messages.map(msg => ({
294
+ * Id: msg.id,
295
+ * MessageBody: JSON.stringify(msg.body)
296
+ * }))
297
+ * })
298
+ *
299
+ * ctx.setAttribute('messaging.operation.success_count', result.Successful?.length || 0)
300
+ * ctx.setAttribute('messaging.operation.failed_count', result.Failed?.length || 0)
301
+ *
302
+ * return result
303
+ * })
304
+ * ```
305
+ *
306
+ * @public
307
+ */
308
+ function traceMessaging(config) {
309
+ return (fnFactory) => {
310
+ return trace((ctx) => {
311
+ ctx.setAttribute("messaging.system", config.system);
312
+ if (config.operation) ctx.setAttribute("messaging.operation", config.operation);
313
+ if (config.destination) ctx.setAttribute("messaging.destination.name", config.destination);
314
+ if (config.attributes) {
315
+ for (const [key, value] of Object.entries(config.attributes)) if (value !== void 0 && value !== null) {
316
+ const attrValue = typeof value === "string" || typeof value === "number" || typeof value === "boolean" ? value : JSON.stringify(value);
317
+ ctx.setAttribute(key, attrValue);
318
+ }
319
+ }
320
+ return fnFactory(ctx);
321
+ });
322
+ };
323
+ }
324
+
325
+ //#endregion
326
+ export { traceDB, traceHTTP, traceMessaging };
21
327
  //# sourceMappingURL=semantic-helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"semantic-helpers.js"}
1
+ {"version":3,"file":"semantic-helpers.js","names":[],"sources":["../src/semantic-helpers.ts"],"sourcesContent":["/**\n * Semantic convention helpers for OpenTelemetry\n *\n * Pre-configured trace helpers that follow OpenTelemetry semantic conventions\n * for common operation types. Reduces boilerplate and ensures consistency.\n *\n * Based on: https://opentelemetry.io/docs/specs/semconv/\n */\n\nimport { trace } from './functional';\nimport type { TraceContext } from './trace-context';\nimport type { Attributes } from '@opentelemetry/api';\n\n/**\n * Configuration for database operations\n *\n * Follows DB semantic conventions:\n * https://opentelemetry.io/docs/specs/semconv/database/\n */\nexport interface DBConfig {\n /** Database system (e.g., 'postgresql', 'mongodb', 'redis') */\n system: string;\n /** Operation type (e.g., 'SELECT', 'INSERT', 'find', 'get') */\n operation?: string;\n /** Database name */\n database?: string;\n /** Collection/table name */\n collection?: string;\n /** Additional attributes to add to the span */\n attributes?: Attributes;\n}\n\n/**\n * Configuration for HTTP client operations\n *\n * Follows HTTP semantic conventions:\n * https://opentelemetry.io/docs/specs/semconv/http/\n */\nexport interface HTTPConfig {\n /** HTTP method (e.g., 'GET', 'POST') */\n method?: string;\n /** Target URL or URL template */\n url?: string;\n /** Additional attributes to add to the span */\n attributes?: Attributes;\n}\n\n/**\n * Configuration for messaging operations\n *\n * Follows Messaging semantic conventions:\n * https://opentelemetry.io/docs/specs/semconv/messaging/\n */\nexport interface MessagingConfig {\n /** Messaging system (e.g., 'kafka', 'rabbitmq', 'sqs') */\n system: string;\n /** Operation type */\n operation?: 'publish' | 'receive' | 'process';\n /** Destination name (queue/topic) */\n destination?: string;\n /** Additional attributes to add to the span */\n attributes?: Attributes;\n}\n\n/**\n * Trace database operations with DB semantic conventions\n *\n * Automatically adds standard attributes for database operations:\n * - db.system\n * - db.operation\n * - db.name\n * - db.collection.name (for NoSQL)\n *\n * **Use Cases:**\n * - SQL queries (PostgreSQL, MySQL, SQLite)\n * - NoSQL operations (MongoDB, DynamoDB, Redis)\n * - ORM queries (Prisma, TypeORM, Drizzle)\n *\n * @param config - Database operation configuration\n * @returns Traced function factory with DB attributes\n *\n * @example PostgreSQL query\n * ```typescript\n * import { traceDB } from 'autotel/semantic-helpers'\n * import { pool } from './db'\n *\n * export const getUser = traceDB({\n * system: 'postgresql',\n * operation: 'SELECT',\n * database: 'app_db',\n * collection: 'users'\n * })(ctx => async (userId: string) => {\n * const query = 'SELECT * FROM users WHERE id = $1'\n * ctx.setAttribute('db.statement', query)\n *\n * const result = await pool.query(query, [userId])\n * ctx.setAttribute('db.rows_affected', result.rowCount)\n *\n * return result.rows[0]\n * })\n * ```\n *\n * @example MongoDB with Mongoose\n * ```typescript\n * import { traceDB } from 'autotel/semantic-helpers'\n * import { User } from './models/User'\n *\n * export const findUsers = traceDB({\n * system: 'mongodb',\n * operation: 'find',\n * database: 'app_db',\n * collection: 'users'\n * })(ctx => async (filter: object) => {\n * ctx.setAttribute('db.mongodb.filter', JSON.stringify(filter))\n *\n * const users = await User.find(filter).limit(100)\n * ctx.setAttribute('db.response.count', users.length)\n *\n * return users\n * })\n * ```\n *\n * @example Redis operations\n * ```typescript\n * import { traceDB } from 'autotel/semantic-helpers'\n * import { redis } from './redis'\n *\n * export const cacheGet = traceDB({\n * system: 'redis',\n * operation: 'GET'\n * })(ctx => async (key: string) => {\n * ctx.setAttribute('db.redis.key', key)\n *\n * const value = await redis.get(key)\n * ctx.setAttribute('db.response.cache_hit', value !== null)\n *\n * return value\n * })\n * ```\n *\n * @example Prisma with detailed query info\n * ```typescript\n * import { traceDB } from 'autotel/semantic-helpers'\n * import { prisma } from './prisma'\n *\n * export const createPost = traceDB({\n * system: 'postgresql',\n * operation: 'INSERT',\n * database: 'app_db',\n * collection: 'posts'\n * })(ctx => async (data: { title: string; content: string; authorId: string }) => {\n * ctx.setAttribute('db.prisma.model', 'Post')\n * ctx.setAttribute('db.prisma.action', 'create')\n *\n * const post = await prisma.post.create({ data })\n *\n * ctx.setAttribute('db.response.id', post.id)\n * return post\n * })\n * ```\n *\n * @public\n */\nexport function traceDB<TArgs extends unknown[], TReturn>(config: DBConfig) {\n return (\n fnFactory: (ctx: TraceContext) => (...args: TArgs) => Promise<TReturn>,\n ): ((...args: TArgs) => Promise<TReturn>) => {\n return trace<TArgs, TReturn>((ctx) => {\n // Set semantic convention attributes\n ctx.setAttribute('db.system', config.system);\n if (config.operation) {\n ctx.setAttribute('db.operation', config.operation);\n }\n if (config.database) {\n ctx.setAttribute('db.name', config.database);\n }\n if (config.collection) {\n ctx.setAttribute('db.collection.name', config.collection);\n }\n if (config.attributes) {\n for (const [key, value] of Object.entries(config.attributes)) {\n if (value !== undefined && value !== null) {\n // setAttribute only accepts primitives (string | number | boolean)\n // Arrays and objects should be serialized\n const attrValue =\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n ? value\n : JSON.stringify(value);\n ctx.setAttribute(key, attrValue);\n }\n }\n }\n\n // Call the user's factory to get their function and return it\n return fnFactory(ctx);\n });\n };\n}\n\n/**\n * Trace HTTP client operations with HTTP semantic conventions\n *\n * Automatically adds standard attributes for HTTP requests:\n * - http.request.method\n * - url.full\n *\n * **Use Cases:**\n * - External API calls\n * - Microservice communication\n * - Third-party integrations\n *\n * @param config - HTTP operation configuration\n * @returns Traced function factory with HTTP attributes\n *\n * @example Fetch API\n * ```typescript\n * import { traceHTTP } from 'autotel/semantic-helpers'\n *\n * export const fetchUser = traceHTTP({\n * method: 'GET',\n * url: 'https://api.example.com/users/:id'\n * })(ctx => async (userId: string) => {\n * const url = `https://api.example.com/users/${userId}`\n * ctx.setAttribute('url.full', url)\n *\n * const response = await fetch(url)\n * ctx.setAttribute('http.response.status_code', response.status)\n *\n * if (!response.ok) {\n * ctx.setAttribute('error', true)\n * throw new Error(`HTTP ${response.status}: ${response.statusText}`)\n * }\n *\n * return response.json()\n * })\n * ```\n *\n * @example Axios with retry logic\n * ```typescript\n * import { traceHTTP } from 'autotel/semantic-helpers'\n * import axios from 'axios'\n *\n * export const sendWebhook = traceHTTP({\n * method: 'POST',\n * url: 'https://webhook.example.com/events'\n * })(ctx => async (payload: object) => {\n * let attempts = 0\n * const maxAttempts = 3\n *\n * while (attempts < maxAttempts) {\n * try {\n * attempts++\n * ctx.setAttribute('http.request.resend_count', attempts - 1)\n *\n * const response = await axios.post('https://webhook.example.com/events', payload)\n * ctx.setAttribute('http.response.status_code', response.status)\n * return response.data\n * } catch (error) {\n * if (attempts >= maxAttempts) throw error\n * await new Promise(resolve => setTimeout(resolve, 1000 * attempts))\n * }\n * }\n * })\n * ```\n *\n * @public\n */\nexport function traceHTTP<TArgs extends unknown[], TReturn>(\n config: HTTPConfig,\n) {\n return (\n fnFactory: (ctx: TraceContext) => (...args: TArgs) => Promise<TReturn>,\n ): ((...args: TArgs) => Promise<TReturn>) => {\n return trace<TArgs, TReturn>((ctx) => {\n // Set semantic convention attributes\n if (config.method) {\n ctx.setAttribute('http.request.method', config.method);\n }\n if (config.url) {\n ctx.setAttribute('url.full', config.url);\n }\n if (config.attributes) {\n for (const [key, value] of Object.entries(config.attributes)) {\n if (value !== undefined && value !== null) {\n // setAttribute only accepts primitives (string | number | boolean)\n // Arrays and objects should be serialized\n const attrValue =\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n ? value\n : JSON.stringify(value);\n ctx.setAttribute(key, attrValue);\n }\n }\n }\n\n // Call the user's factory to get their function and return it\n return fnFactory(ctx);\n });\n };\n}\n\n/**\n * Trace messaging operations with Messaging semantic conventions\n *\n * Automatically adds standard attributes for messaging:\n * - messaging.system\n * - messaging.operation\n * - messaging.destination.name\n *\n * **Use Cases:**\n * - Publishing messages to queues/topics\n * - Consuming messages from queues/topics\n * - Event-driven architectures\n *\n * @param config - Messaging operation configuration\n * @returns Traced function factory with Messaging attributes\n *\n * @example Publishing to Kafka\n * ```typescript\n * import { traceMessaging } from 'autotel/semantic-helpers'\n * import { kafka } from './kafka'\n *\n * const producer = kafka.producer()\n *\n * export const publishEvent = traceMessaging({\n * system: 'kafka',\n * operation: 'publish',\n * destination: 'user-events'\n * })(ctx => async (event: { type: string; userId: string; data: object }) => {\n * ctx.setAttribute('messaging.message.type', event.type)\n * ctx.setAttribute('messaging.kafka.partition', 0)\n *\n * await producer.send({\n * topic: 'user-events',\n * messages: [\n * {\n * key: event.userId,\n * value: JSON.stringify(event.data)\n * }\n * ]\n * })\n *\n * ctx.setAttribute('messaging.message.id', event.userId)\n * })\n * ```\n *\n * @example Consuming from RabbitMQ\n * ```typescript\n * import { traceMessaging } from 'autotel/semantic-helpers'\n * import { channel } from './rabbitmq'\n *\n * export const processOrder = traceMessaging({\n * system: 'rabbitmq',\n * operation: 'process',\n * destination: 'orders'\n * })(ctx => async (message: { orderId: string; items: object[] }) => {\n * ctx.setAttribute('messaging.message.id', message.orderId)\n * ctx.setAttribute('messaging.message.body.size', JSON.stringify(message).length)\n *\n * // Process order logic\n * const result = await processOrderInternal(message)\n *\n * ctx.setAttribute('messaging.operation.result', 'success')\n * return result\n * })\n * ```\n *\n * @example AWS SQS with batch processing\n * ```typescript\n * import { traceMessaging } from 'autotel/semantic-helpers'\n * import { SQS } from '@aws-sdk/client-sqs'\n *\n * const sqs = new SQS()\n *\n * export const sendBatch = traceMessaging({\n * system: 'aws_sqs',\n * operation: 'publish',\n * destination: 'notifications-queue'\n * })(ctx => async (messages: Array<{ id: string; body: object }>) => {\n * ctx.setAttribute('messaging.batch.message_count', messages.length)\n *\n * const result = await sqs.sendMessageBatch({\n * QueueUrl: process.env.QUEUE_URL,\n * Entries: messages.map(msg => ({\n * Id: msg.id,\n * MessageBody: JSON.stringify(msg.body)\n * }))\n * })\n *\n * ctx.setAttribute('messaging.operation.success_count', result.Successful?.length || 0)\n * ctx.setAttribute('messaging.operation.failed_count', result.Failed?.length || 0)\n *\n * return result\n * })\n * ```\n *\n * @public\n */\nexport function traceMessaging<TArgs extends unknown[], TReturn>(\n config: MessagingConfig,\n) {\n return (\n fnFactory: (ctx: TraceContext) => (...args: TArgs) => Promise<TReturn>,\n ): ((...args: TArgs) => Promise<TReturn>) => {\n return trace<TArgs, TReturn>((ctx) => {\n // Set semantic convention attributes\n ctx.setAttribute('messaging.system', config.system);\n if (config.operation) {\n ctx.setAttribute('messaging.operation', config.operation);\n }\n if (config.destination) {\n ctx.setAttribute('messaging.destination.name', config.destination);\n }\n if (config.attributes) {\n for (const [key, value] of Object.entries(config.attributes)) {\n if (value !== undefined && value !== null) {\n // setAttribute only accepts primitives (string | number | boolean)\n // Arrays and objects should be serialized\n const attrValue =\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n ? value\n : JSON.stringify(value);\n ctx.setAttribute(key, attrValue);\n }\n }\n }\n\n // Call the user's factory to get their function and return it\n return fnFactory(ctx);\n });\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmKA,SAAgB,QAA0C,QAAkB;CAC1E,QACE,cAC2C;EAC3C,OAAO,OAAuB,QAAQ;GAEpC,IAAI,aAAa,aAAa,OAAO,MAAM;GAC3C,IAAI,OAAO,WACT,IAAI,aAAa,gBAAgB,OAAO,SAAS;GAEnD,IAAI,OAAO,UACT,IAAI,aAAa,WAAW,OAAO,QAAQ;GAE7C,IAAI,OAAO,YACT,IAAI,aAAa,sBAAsB,OAAO,UAAU;GAE1D,IAAI,OAAO,YACT;SAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,OAAO,UAAU,GACzD,IAAI,UAAU,UAAa,UAAU,MAAM;KAGzC,MAAM,YACJ,OAAO,UAAU,YACjB,OAAO,UAAU,YACjB,OAAO,UAAU,YACb,QACA,KAAK,UAAU,KAAK;KAC1B,IAAI,aAAa,KAAK,SAAS;IACjC;GACF;GAIF,OAAO,UAAU,GAAG;EACtB,CAAC;CACH;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsEA,SAAgB,UACd,QACA;CACA,QACE,cAC2C;EAC3C,OAAO,OAAuB,QAAQ;GAEpC,IAAI,OAAO,QACT,IAAI,aAAa,uBAAuB,OAAO,MAAM;GAEvD,IAAI,OAAO,KACT,IAAI,aAAa,YAAY,OAAO,GAAG;GAEzC,IAAI,OAAO,YACT;SAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,OAAO,UAAU,GACzD,IAAI,UAAU,UAAa,UAAU,MAAM;KAGzC,MAAM,YACJ,OAAO,UAAU,YACjB,OAAO,UAAU,YACjB,OAAO,UAAU,YACb,QACA,KAAK,UAAU,KAAK;KAC1B,IAAI,aAAa,KAAK,SAAS;IACjC;GACF;GAIF,OAAO,UAAU,GAAG;EACtB,CAAC;CACH;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmGA,SAAgB,eACd,QACA;CACA,QACE,cAC2C;EAC3C,OAAO,OAAuB,QAAQ;GAEpC,IAAI,aAAa,oBAAoB,OAAO,MAAM;GAClD,IAAI,OAAO,WACT,IAAI,aAAa,uBAAuB,OAAO,SAAS;GAE1D,IAAI,OAAO,aACT,IAAI,aAAa,8BAA8B,OAAO,WAAW;GAEnE,IAAI,OAAO,YACT;SAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,OAAO,UAAU,GACzD,IAAI,UAAU,UAAa,UAAU,MAAM;KAGzC,MAAM,YACJ,OAAO,UAAU,YACjB,OAAO,UAAU,YACjB,OAAO,UAAU,YACb,QACA,KAAK,UAAU,KAAK;KAC1B,IAAI,aAAa,KAAK,SAAS;IACjC;GACF;GAIF,OAAO,UAAU,GAAG;EACtB,CAAC;CACH;AACF"}
@@ -0,0 +1,70 @@
1
+ import { ReadableSpan, Span, SpanProcessor } from "@opentelemetry/sdk-trace-base";
2
+ import { Context } from "@opentelemetry/api";
3
+
4
+ //#region src/span-name-normalizer.d.ts
5
+ /**
6
+ * Function to normalize a span name
7
+ * @param name - The original span name
8
+ * @returns The normalized span name
9
+ */
10
+ type SpanNameNormalizerFn = (name: string) => string;
11
+ /**
12
+ * Built-in normalizer preset names
13
+ */
14
+ type SpanNameNormalizerPreset = 'rest-api' | 'graphql' | 'minimal';
15
+ /**
16
+ * Normalizer config - either a function or a preset name
17
+ */
18
+ type SpanNameNormalizerConfig = SpanNameNormalizerFn | SpanNameNormalizerPreset;
19
+ interface SpanNameNormalizingProcessorOptions {
20
+ /**
21
+ * Normalizer function or preset name
22
+ */
23
+ normalizer: SpanNameNormalizerConfig;
24
+ }
25
+ /**
26
+ * Built-in normalizer patterns
27
+ */
28
+ declare const NORMALIZER_PATTERNS: {
29
+ readonly numericId: RegExp;
30
+ readonly uuid: RegExp;
31
+ readonly shortUuid: RegExp;
32
+ readonly objectId: RegExp;
33
+ readonly hash: RegExp;
34
+ readonly isoDate: RegExp;
35
+ readonly timestamp: RegExp;
36
+ readonly email: RegExp;
37
+ };
38
+ /**
39
+ * Built-in normalizer presets
40
+ */
41
+ declare const NORMALIZER_PRESETS: Record<SpanNameNormalizerPreset, SpanNameNormalizerFn>;
42
+ /**
43
+ * Span processor that normalizes span names to reduce cardinality.
44
+ *
45
+ * Normalization happens in onStart() when we have access to the mutable Span.
46
+ * This allows us to call span.updateName() before the span is finalized.
47
+ *
48
+ * Common use cases:
49
+ * - REST APIs: /users/123/posts/456 → /users/:id/posts/:id
50
+ * - UUIDs: /items/550e8400-e29b-41d4-a716-446655440000 → /items/:uuid
51
+ * - Dates: /logs/2024-01-15 → /logs/:date
52
+ */
53
+ declare class SpanNameNormalizingProcessor implements SpanProcessor {
54
+ private readonly wrappedProcessor;
55
+ private readonly normalizer;
56
+ constructor(wrappedProcessor: SpanProcessor, options: SpanNameNormalizingProcessorOptions);
57
+ /**
58
+ * Normalize span name on start (when Span is mutable)
59
+ */
60
+ onStart(span: Span, parentContext: Context): void;
61
+ /**
62
+ * Pass through onEnd unchanged
63
+ */
64
+ onEnd(span: ReadableSpan): void;
65
+ forceFlush(): Promise<void>;
66
+ shutdown(): Promise<void>;
67
+ }
68
+ //#endregion
69
+ export { SpanNameNormalizerPreset as a, SpanNameNormalizerFn as i, NORMALIZER_PRESETS as n, SpanNameNormalizingProcessor as o, SpanNameNormalizerConfig as r, SpanNameNormalizingProcessorOptions as s, NORMALIZER_PATTERNS as t };
70
+ //# sourceMappingURL=span-name-normalizer-8ZOGJuwv.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"span-name-normalizer-8ZOGJuwv.d.cts","names":[],"sources":["../src/span-name-normalizer.ts"],"mappings":";;;;;;;;;KAsCY,oBAAA,IAAwB,IAAY;;;;KAKpC,wBAAA;;;;KAKA,wBAAA,GACR,oBAAA,GACA,wBAAwB;AAAA,UAEX,mCAAA;;;;EAIf,UAAA,EAAY,wBAAwB;AAAA;;;;cAMhC,mBAAA;EAAA;;;;;;;;;;;;cA6BA,kBAAA,EAAoB,MAAA,CACxB,wBAAA,EACA,oBAAA;;;AAAoB;AAsEtB;;;;;;;;cAAa,4BAAA,YAAwC,aAAA;EAAA,iBAClC,gBAAA;EAAA,iBACA,UAAA;cAGf,gBAAA,EAAkB,aAAA,EAClB,OAAA,EAAS,mCAAA;EANqD;;;EAehE,OAAA,CAAQ,IAAA,EAAM,IAAA,EAAM,aAAA,EAAe,OAAA;;;;EAkBnC,KAAA,CAAM,IAAA,EAAM,YAAA;EAIZ,UAAA,IAAc,OAAA;EAId,QAAA,IAAY,OAAA;AAAA"}