autotel 6.1.0 → 6.2.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 (411) hide show
  1. package/dist/analysis.cjs +1 -2
  2. package/dist/analysis.d.cts +1 -2
  3. package/dist/analysis.d.ts +1 -2
  4. package/dist/analysis.js +1 -2
  5. package/dist/attribute-redacting-processor-Pk7lAzWd.d.cts +1 -2
  6. package/dist/attribute-redacting-processor-Pk7lAzWd.d.ts +1 -2
  7. package/dist/attribute-redacting-processor.cjs +1 -2
  8. package/dist/attribute-redacting-processor.js +1 -2
  9. package/dist/attributes-B7wix2VG.js +1 -2
  10. package/dist/attributes-aDmJYral.cjs +1 -2
  11. package/dist/auto.cjs +2 -3
  12. package/dist/auto.js +2 -3
  13. package/dist/business-baggage.cjs +1 -2
  14. package/dist/business-baggage.d.cts +1 -2
  15. package/dist/business-baggage.d.ts +1 -2
  16. package/dist/business-baggage.js +1 -2
  17. package/dist/canonical-log-line-processor-B4WgG-VS.d.cts +1 -2
  18. package/dist/canonical-log-line-processor-CL_J7gb5.d.ts +1 -2
  19. package/dist/canonical-log-line-processor-DOjb6Kxy.cjs +1 -2
  20. package/dist/canonical-log-line-processor-mKABvGP0.js +1 -2
  21. package/dist/config.cjs +1 -2
  22. package/dist/config.d.cts +1 -2
  23. package/dist/config.d.ts +1 -2
  24. package/dist/config.js +1 -2
  25. package/dist/correlated-events-Bzh5y-UB.js +1 -2
  26. package/dist/correlated-events-kSwLo3mi.cjs +1 -2
  27. package/dist/correlation-id.cjs +1 -1
  28. package/dist/correlation-id.d.cts +1 -2
  29. package/dist/correlation-id.d.ts +1 -2
  30. package/dist/correlation-id.js +1 -1
  31. package/dist/db.cjs +1 -2
  32. package/dist/db.d.cts +1 -2
  33. package/dist/db.d.ts +1 -2
  34. package/dist/db.js +1 -2
  35. package/dist/decorators.cjs +2 -3
  36. package/dist/decorators.d.cts +1 -2
  37. package/dist/decorators.d.ts +1 -2
  38. package/dist/decorators.js +2 -3
  39. package/dist/define-event-B2z1SBe7.d.ts +1 -2
  40. package/dist/define-event-CGG048HE.d.cts +1 -2
  41. package/dist/diagnostics.cjs +1 -2
  42. package/dist/diagnostics.d.cts +1 -2
  43. package/dist/diagnostics.d.ts +1 -2
  44. package/dist/diagnostics.js +1 -2
  45. package/dist/drain-pipeline.cjs +1 -2
  46. package/dist/drain-pipeline.d.cts +1 -2
  47. package/dist/drain-pipeline.d.ts +1 -2
  48. package/dist/drain-pipeline.js +1 -2
  49. package/dist/enrichers.cjs +1 -2
  50. package/dist/enrichers.d.cts +1 -2
  51. package/dist/enrichers.d.ts +1 -2
  52. package/dist/enrichers.js +1 -2
  53. package/dist/event-subscriber-CWh8sTGh.d.cts +1 -2
  54. package/dist/event-subscriber-CWh8sTGh.d.ts +1 -2
  55. package/dist/event-testing-CA2mIx1E.d.ts +1 -2
  56. package/dist/event-testing-D0qWfqAy.d.cts +1 -2
  57. package/dist/event-testing.cjs +1 -2
  58. package/dist/event-testing.js +1 -2
  59. package/dist/event.cjs +1 -1
  60. package/dist/event.d.cts +1 -2
  61. package/dist/event.d.ts +1 -2
  62. package/dist/event.js +1 -1
  63. package/dist/exporters.d.cts +1 -2
  64. package/dist/exporters.d.ts +1 -2
  65. package/dist/filtering-span-processor-BpDagWNa.d.cts +1 -2
  66. package/dist/filtering-span-processor-BpDagWNa.d.ts +1 -2
  67. package/dist/filtering-span-processor.cjs +1 -2
  68. package/dist/filtering-span-processor.js +1 -2
  69. package/dist/{functional-DcLBuCPz.cjs → functional-D545J0Ba.cjs} +2 -3
  70. package/dist/{functional-BnDUxnSl.js → functional-DYAZiYxr.js} +2 -3
  71. package/dist/functional.cjs +1 -1
  72. package/dist/functional.d.cts +1 -2
  73. package/dist/functional.d.ts +1 -2
  74. package/dist/functional.js +1 -1
  75. package/dist/http.cjs +2 -3
  76. package/dist/http.d.cts +1 -2
  77. package/dist/http.d.ts +1 -2
  78. package/dist/http.js +2 -3
  79. package/dist/index-BPcxVucm.d.cts +1 -2
  80. package/dist/index-DolOVX6F.d.ts +1 -2
  81. package/dist/index.cjs +3 -4
  82. package/dist/index.d.cts +2 -3
  83. package/dist/index.d.ts +2 -3
  84. package/dist/index.js +3 -4
  85. package/dist/{init-D6n2diBy.d.ts → init-BHp-kqLJ.d.ts} +12 -4
  86. package/dist/{init-XzXzrarP.d.cts → init-BoIYyB6Q.d.cts} +12 -4
  87. package/dist/{init-C3RApHKJ.cjs → init-CzNFWUd8.cjs} +38 -5
  88. package/dist/{init-R-gSEXkJ.js → init-DDkh2brw.js} +38 -5
  89. package/dist/instrumentation.cjs +2 -3
  90. package/dist/instrumentation.d.cts +1 -2
  91. package/dist/instrumentation.d.ts +1 -2
  92. package/dist/instrumentation.js +2 -3
  93. package/dist/logger-CN4xpzMd.d.cts +1 -2
  94. package/dist/logger-CN4xpzMd.d.ts +1 -2
  95. package/dist/logger-D3Ej3DII.js +1 -2
  96. package/dist/logger-thMPLpOG.cjs +1 -2
  97. package/dist/messaging-adapters.cjs +1 -2
  98. package/dist/messaging-adapters.d.cts +1 -2
  99. package/dist/messaging-adapters.d.ts +1 -2
  100. package/dist/messaging-adapters.js +1 -2
  101. package/dist/messaging-testing.cjs +1 -2
  102. package/dist/messaging-testing.d.cts +1 -2
  103. package/dist/messaging-testing.d.ts +1 -2
  104. package/dist/messaging-testing.js +1 -2
  105. package/dist/messaging.cjs +2 -3
  106. package/dist/messaging.d.cts +1 -2
  107. package/dist/messaging.d.ts +1 -2
  108. package/dist/messaging.js +2 -3
  109. package/dist/metric-helpers.cjs +1 -2
  110. package/dist/metric-helpers.d.cts +1 -2
  111. package/dist/metric-helpers.d.ts +1 -2
  112. package/dist/metric-helpers.js +1 -2
  113. package/dist/metric-testing-CWm6UhaR.d.ts +1 -2
  114. package/dist/metric-testing-CpvP3ZIa.d.cts +1 -2
  115. package/dist/metric-testing.cjs +1 -2
  116. package/dist/metric-testing.js +1 -2
  117. package/dist/metric.cjs +1 -2
  118. package/dist/metric.d.cts +1 -2
  119. package/dist/metric.d.ts +1 -2
  120. package/dist/metric.js +1 -2
  121. package/dist/node-require-PFqDihze.cjs +1 -2
  122. package/dist/node-require-vROmTeJ8.js +1 -2
  123. package/dist/parse-error.cjs +1 -2
  124. package/dist/parse-error.d.cts +1 -2
  125. package/dist/parse-error.d.ts +1 -2
  126. package/dist/parse-error.js +1 -2
  127. package/dist/pretty-console-exporter-CMzlrRNg.cjs +1 -2
  128. package/dist/pretty-console-exporter-DqKl_q9z.js +1 -2
  129. package/dist/register.cjs +1 -2
  130. package/dist/register.js +1 -2
  131. package/dist/registry-DVSmWg6Y.js +1 -2
  132. package/dist/registry-DYgvb62e.cjs +1 -2
  133. package/dist/sampling-BR9fkSwx.d.cts +1 -2
  134. package/dist/sampling-CP3e7-Yr.d.ts +1 -2
  135. package/dist/sampling.cjs +1 -2
  136. package/dist/sampling.js +1 -2
  137. package/dist/security-schema.cjs +1 -2
  138. package/dist/security-schema.d.cts +1 -2
  139. package/dist/security-schema.d.ts +1 -2
  140. package/dist/security-schema.js +1 -2
  141. package/dist/semantic-conventions-FhSxv-bK.d.cts +1 -2
  142. package/dist/semantic-conventions-FhSxv-bK.d.ts +1 -2
  143. package/dist/semantic-conventions.cjs +1 -2
  144. package/dist/semantic-conventions.js +1 -2
  145. package/dist/semantic-helpers.cjs +2 -3
  146. package/dist/semantic-helpers.d.cts +1 -2
  147. package/dist/semantic-helpers.d.ts +1 -2
  148. package/dist/semantic-helpers.js +2 -3
  149. package/dist/slo.cjs +1 -2
  150. package/dist/slo.d.cts +1 -2
  151. package/dist/slo.d.ts +1 -2
  152. package/dist/slo.js +1 -2
  153. package/dist/span-name-normalizer-CN1-8C76.d.cts +1 -2
  154. package/dist/span-name-normalizer-CN1-8C76.d.ts +1 -2
  155. package/dist/span-name-normalizer.cjs +1 -2
  156. package/dist/span-name-normalizer.js +1 -2
  157. package/dist/stable-hash-CS9BxvVQ.cjs +1 -2
  158. package/dist/stable-hash-ChFBIhNt.js +1 -2
  159. package/dist/structured-error-9--cxBay.js +1 -2
  160. package/dist/structured-error-CHg7DoIQ.cjs +1 -2
  161. package/dist/tail-sampling-processor.cjs +1 -2
  162. package/dist/tail-sampling-processor.d.cts +1 -2
  163. package/dist/tail-sampling-processor.d.ts +1 -2
  164. package/dist/tail-sampling-processor.js +1 -2
  165. package/dist/test-span-collector.cjs +1 -2
  166. package/dist/test-span-collector.d.cts +1 -2
  167. package/dist/test-span-collector.d.ts +1 -2
  168. package/dist/test-span-collector.js +1 -2
  169. package/dist/testing.cjs +1 -2
  170. package/dist/testing.d.cts +1 -2
  171. package/dist/testing.d.ts +1 -2
  172. package/dist/testing.js +1 -2
  173. package/dist/trace-context-IuyoPyNq.d.cts +1 -2
  174. package/dist/trace-context-IuyoPyNq.d.ts +1 -2
  175. package/dist/trace-factory-validation-BjVAinz6.js +1 -2
  176. package/dist/trace-factory-validation-Dc8epn87.cjs +1 -2
  177. package/dist/trace-helpers.cjs +1 -2
  178. package/dist/trace-helpers.d.cts +1 -2
  179. package/dist/trace-helpers.d.ts +1 -2
  180. package/dist/trace-helpers.js +1 -2
  181. package/dist/tracer-provider.cjs +1 -2
  182. package/dist/tracer-provider.d.cts +1 -2
  183. package/dist/tracer-provider.d.ts +1 -2
  184. package/dist/tracer-provider.js +1 -2
  185. package/dist/validate.cjs +1 -2
  186. package/dist/validate.d.cts +1 -2
  187. package/dist/validate.d.ts +1 -2
  188. package/dist/validate.js +1 -2
  189. package/dist/validation-attributes.cjs +1 -2
  190. package/dist/validation-attributes.d.cts +1 -2
  191. package/dist/validation-attributes.d.ts +1 -2
  192. package/dist/validation-attributes.js +1 -2
  193. package/dist/webhook.cjs +2 -3
  194. package/dist/webhook.d.cts +1 -2
  195. package/dist/webhook.d.ts +1 -2
  196. package/dist/webhook.js +2 -3
  197. package/dist/workflow-distributed.cjs +2 -3
  198. package/dist/workflow-distributed.d.cts +1 -2
  199. package/dist/workflow-distributed.d.ts +1 -2
  200. package/dist/workflow-distributed.js +2 -3
  201. package/dist/workflow.cjs +2 -3
  202. package/dist/workflow.d.cts +1 -2
  203. package/dist/workflow.d.ts +1 -2
  204. package/dist/workflow.js +2 -3
  205. package/dist/yaml-config.cjs +1 -2
  206. package/dist/yaml-config.d.cts +4 -5
  207. package/dist/yaml-config.d.ts +4 -5
  208. package/dist/yaml-config.js +1 -2
  209. package/package.json +47 -32
  210. package/dist/analysis.cjs.map +0 -1
  211. package/dist/analysis.d.cts.map +0 -1
  212. package/dist/analysis.d.ts.map +0 -1
  213. package/dist/analysis.js.map +0 -1
  214. package/dist/attribute-redacting-processor-Pk7lAzWd.d.cts.map +0 -1
  215. package/dist/attribute-redacting-processor-Pk7lAzWd.d.ts.map +0 -1
  216. package/dist/attribute-redacting-processor.cjs.map +0 -1
  217. package/dist/attribute-redacting-processor.js.map +0 -1
  218. package/dist/attributes-B7wix2VG.js.map +0 -1
  219. package/dist/attributes-aDmJYral.cjs.map +0 -1
  220. package/dist/auto.cjs.map +0 -1
  221. package/dist/auto.js.map +0 -1
  222. package/dist/business-baggage.cjs.map +0 -1
  223. package/dist/business-baggage.d.cts.map +0 -1
  224. package/dist/business-baggage.d.ts.map +0 -1
  225. package/dist/business-baggage.js.map +0 -1
  226. package/dist/canonical-log-line-processor-B4WgG-VS.d.cts.map +0 -1
  227. package/dist/canonical-log-line-processor-CL_J7gb5.d.ts.map +0 -1
  228. package/dist/canonical-log-line-processor-DOjb6Kxy.cjs.map +0 -1
  229. package/dist/canonical-log-line-processor-mKABvGP0.js.map +0 -1
  230. package/dist/config.cjs.map +0 -1
  231. package/dist/config.d.cts.map +0 -1
  232. package/dist/config.d.ts.map +0 -1
  233. package/dist/config.js.map +0 -1
  234. package/dist/correlated-events-Bzh5y-UB.js.map +0 -1
  235. package/dist/correlated-events-kSwLo3mi.cjs.map +0 -1
  236. package/dist/correlation-id.d.cts.map +0 -1
  237. package/dist/correlation-id.d.ts.map +0 -1
  238. package/dist/db.cjs.map +0 -1
  239. package/dist/db.d.cts.map +0 -1
  240. package/dist/db.d.ts.map +0 -1
  241. package/dist/db.js.map +0 -1
  242. package/dist/decorators.cjs.map +0 -1
  243. package/dist/decorators.d.cts.map +0 -1
  244. package/dist/decorators.d.ts.map +0 -1
  245. package/dist/decorators.js.map +0 -1
  246. package/dist/define-event-B2z1SBe7.d.ts.map +0 -1
  247. package/dist/define-event-CGG048HE.d.cts.map +0 -1
  248. package/dist/diagnostics.cjs.map +0 -1
  249. package/dist/diagnostics.d.cts.map +0 -1
  250. package/dist/diagnostics.d.ts.map +0 -1
  251. package/dist/diagnostics.js.map +0 -1
  252. package/dist/drain-pipeline.cjs.map +0 -1
  253. package/dist/drain-pipeline.d.cts.map +0 -1
  254. package/dist/drain-pipeline.d.ts.map +0 -1
  255. package/dist/drain-pipeline.js.map +0 -1
  256. package/dist/enrichers.cjs.map +0 -1
  257. package/dist/enrichers.d.cts.map +0 -1
  258. package/dist/enrichers.d.ts.map +0 -1
  259. package/dist/enrichers.js.map +0 -1
  260. package/dist/event-subscriber-CWh8sTGh.d.cts.map +0 -1
  261. package/dist/event-subscriber-CWh8sTGh.d.ts.map +0 -1
  262. package/dist/event-testing-CA2mIx1E.d.ts.map +0 -1
  263. package/dist/event-testing-D0qWfqAy.d.cts.map +0 -1
  264. package/dist/event-testing.cjs.map +0 -1
  265. package/dist/event-testing.js.map +0 -1
  266. package/dist/event.d.cts.map +0 -1
  267. package/dist/event.d.ts.map +0 -1
  268. package/dist/exporters.d.cts.map +0 -1
  269. package/dist/exporters.d.ts.map +0 -1
  270. package/dist/filtering-span-processor-BpDagWNa.d.cts.map +0 -1
  271. package/dist/filtering-span-processor-BpDagWNa.d.ts.map +0 -1
  272. package/dist/filtering-span-processor.cjs.map +0 -1
  273. package/dist/filtering-span-processor.js.map +0 -1
  274. package/dist/functional-BnDUxnSl.js.map +0 -1
  275. package/dist/functional-DcLBuCPz.cjs.map +0 -1
  276. package/dist/functional.d.cts.map +0 -1
  277. package/dist/functional.d.ts.map +0 -1
  278. package/dist/http.cjs.map +0 -1
  279. package/dist/http.d.cts.map +0 -1
  280. package/dist/http.d.ts.map +0 -1
  281. package/dist/http.js.map +0 -1
  282. package/dist/index-BPcxVucm.d.cts.map +0 -1
  283. package/dist/index-DolOVX6F.d.ts.map +0 -1
  284. package/dist/index.cjs.map +0 -1
  285. package/dist/index.d.cts.map +0 -1
  286. package/dist/index.d.ts.map +0 -1
  287. package/dist/index.js.map +0 -1
  288. package/dist/init-C3RApHKJ.cjs.map +0 -1
  289. package/dist/init-D6n2diBy.d.ts.map +0 -1
  290. package/dist/init-R-gSEXkJ.js.map +0 -1
  291. package/dist/init-XzXzrarP.d.cts.map +0 -1
  292. package/dist/instrumentation.cjs.map +0 -1
  293. package/dist/instrumentation.d.cts.map +0 -1
  294. package/dist/instrumentation.d.ts.map +0 -1
  295. package/dist/instrumentation.js.map +0 -1
  296. package/dist/logger-CN4xpzMd.d.cts.map +0 -1
  297. package/dist/logger-CN4xpzMd.d.ts.map +0 -1
  298. package/dist/logger-D3Ej3DII.js.map +0 -1
  299. package/dist/logger-thMPLpOG.cjs.map +0 -1
  300. package/dist/messaging-adapters.cjs.map +0 -1
  301. package/dist/messaging-adapters.d.cts.map +0 -1
  302. package/dist/messaging-adapters.d.ts.map +0 -1
  303. package/dist/messaging-adapters.js.map +0 -1
  304. package/dist/messaging-testing.cjs.map +0 -1
  305. package/dist/messaging-testing.d.cts.map +0 -1
  306. package/dist/messaging-testing.d.ts.map +0 -1
  307. package/dist/messaging-testing.js.map +0 -1
  308. package/dist/messaging.cjs.map +0 -1
  309. package/dist/messaging.d.cts.map +0 -1
  310. package/dist/messaging.d.ts.map +0 -1
  311. package/dist/messaging.js.map +0 -1
  312. package/dist/metric-helpers.cjs.map +0 -1
  313. package/dist/metric-helpers.d.cts.map +0 -1
  314. package/dist/metric-helpers.d.ts.map +0 -1
  315. package/dist/metric-helpers.js.map +0 -1
  316. package/dist/metric-testing-CWm6UhaR.d.ts.map +0 -1
  317. package/dist/metric-testing-CpvP3ZIa.d.cts.map +0 -1
  318. package/dist/metric-testing.cjs.map +0 -1
  319. package/dist/metric-testing.js.map +0 -1
  320. package/dist/metric.cjs.map +0 -1
  321. package/dist/metric.d.cts.map +0 -1
  322. package/dist/metric.d.ts.map +0 -1
  323. package/dist/metric.js.map +0 -1
  324. package/dist/node-require-PFqDihze.cjs.map +0 -1
  325. package/dist/node-require-vROmTeJ8.js.map +0 -1
  326. package/dist/parse-error.cjs.map +0 -1
  327. package/dist/parse-error.d.cts.map +0 -1
  328. package/dist/parse-error.d.ts.map +0 -1
  329. package/dist/parse-error.js.map +0 -1
  330. package/dist/pretty-console-exporter-CMzlrRNg.cjs.map +0 -1
  331. package/dist/pretty-console-exporter-DqKl_q9z.js.map +0 -1
  332. package/dist/register.cjs.map +0 -1
  333. package/dist/register.js.map +0 -1
  334. package/dist/registry-DVSmWg6Y.js.map +0 -1
  335. package/dist/registry-DYgvb62e.cjs.map +0 -1
  336. package/dist/sampling-BR9fkSwx.d.cts.map +0 -1
  337. package/dist/sampling-CP3e7-Yr.d.ts.map +0 -1
  338. package/dist/sampling.cjs.map +0 -1
  339. package/dist/sampling.js.map +0 -1
  340. package/dist/security-schema.cjs.map +0 -1
  341. package/dist/security-schema.d.cts.map +0 -1
  342. package/dist/security-schema.d.ts.map +0 -1
  343. package/dist/security-schema.js.map +0 -1
  344. package/dist/semantic-conventions-FhSxv-bK.d.cts.map +0 -1
  345. package/dist/semantic-conventions-FhSxv-bK.d.ts.map +0 -1
  346. package/dist/semantic-conventions.cjs.map +0 -1
  347. package/dist/semantic-conventions.js.map +0 -1
  348. package/dist/semantic-helpers.cjs.map +0 -1
  349. package/dist/semantic-helpers.d.cts.map +0 -1
  350. package/dist/semantic-helpers.d.ts.map +0 -1
  351. package/dist/semantic-helpers.js.map +0 -1
  352. package/dist/slo.cjs.map +0 -1
  353. package/dist/slo.d.cts.map +0 -1
  354. package/dist/slo.d.ts.map +0 -1
  355. package/dist/slo.js.map +0 -1
  356. package/dist/span-name-normalizer-CN1-8C76.d.cts.map +0 -1
  357. package/dist/span-name-normalizer-CN1-8C76.d.ts.map +0 -1
  358. package/dist/span-name-normalizer.cjs.map +0 -1
  359. package/dist/span-name-normalizer.js.map +0 -1
  360. package/dist/stable-hash-CS9BxvVQ.cjs.map +0 -1
  361. package/dist/stable-hash-ChFBIhNt.js.map +0 -1
  362. package/dist/structured-error-9--cxBay.js.map +0 -1
  363. package/dist/structured-error-CHg7DoIQ.cjs.map +0 -1
  364. package/dist/tail-sampling-processor.cjs.map +0 -1
  365. package/dist/tail-sampling-processor.d.cts.map +0 -1
  366. package/dist/tail-sampling-processor.d.ts.map +0 -1
  367. package/dist/tail-sampling-processor.js.map +0 -1
  368. package/dist/test-span-collector.cjs.map +0 -1
  369. package/dist/test-span-collector.d.cts.map +0 -1
  370. package/dist/test-span-collector.d.ts.map +0 -1
  371. package/dist/test-span-collector.js.map +0 -1
  372. package/dist/testing.cjs.map +0 -1
  373. package/dist/testing.d.cts.map +0 -1
  374. package/dist/testing.d.ts.map +0 -1
  375. package/dist/testing.js.map +0 -1
  376. package/dist/trace-context-IuyoPyNq.d.cts.map +0 -1
  377. package/dist/trace-context-IuyoPyNq.d.ts.map +0 -1
  378. package/dist/trace-factory-validation-BjVAinz6.js.map +0 -1
  379. package/dist/trace-factory-validation-Dc8epn87.cjs.map +0 -1
  380. package/dist/trace-helpers.cjs.map +0 -1
  381. package/dist/trace-helpers.d.cts.map +0 -1
  382. package/dist/trace-helpers.d.ts.map +0 -1
  383. package/dist/trace-helpers.js.map +0 -1
  384. package/dist/tracer-provider.cjs.map +0 -1
  385. package/dist/tracer-provider.d.cts.map +0 -1
  386. package/dist/tracer-provider.d.ts.map +0 -1
  387. package/dist/tracer-provider.js.map +0 -1
  388. package/dist/validate.cjs.map +0 -1
  389. package/dist/validate.d.cts.map +0 -1
  390. package/dist/validate.d.ts.map +0 -1
  391. package/dist/validate.js.map +0 -1
  392. package/dist/validation-attributes.cjs.map +0 -1
  393. package/dist/validation-attributes.d.cts.map +0 -1
  394. package/dist/validation-attributes.d.ts.map +0 -1
  395. package/dist/validation-attributes.js.map +0 -1
  396. package/dist/webhook.cjs.map +0 -1
  397. package/dist/webhook.d.cts.map +0 -1
  398. package/dist/webhook.d.ts.map +0 -1
  399. package/dist/webhook.js.map +0 -1
  400. package/dist/workflow-distributed.cjs.map +0 -1
  401. package/dist/workflow-distributed.d.cts.map +0 -1
  402. package/dist/workflow-distributed.d.ts.map +0 -1
  403. package/dist/workflow-distributed.js.map +0 -1
  404. package/dist/workflow.cjs.map +0 -1
  405. package/dist/workflow.d.cts.map +0 -1
  406. package/dist/workflow.d.ts.map +0 -1
  407. package/dist/workflow.js.map +0 -1
  408. package/dist/yaml-config.cjs.map +0 -1
  409. package/dist/yaml-config.d.cts.map +0 -1
  410. package/dist/yaml-config.d.ts.map +0 -1
  411. package/dist/yaml-config.js.map +0 -1
package/dist/http.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"http.js","names":[],"sources":["../src/http.ts"],"sourcesContent":["/**\n * HTTP Instrumentation Helpers\n *\n * Optional import: Not included in main bundle\n * Import from: 'autotel/http'\n *\n * Provides decorators and utilities for HTTP client instrumentation.\n * Works with fetch, axios, and other HTTP clients.\n *\n * @example\n * ```typescript\n * import { HttpInstrumented } from 'autotel/http'\n *\n * @HttpInstrumented()\n * class ApiClient {\n * async getUser(id: string) {\n * return fetch(`/api/users/${id}`)\n * }\n * }\n * ```\n */\n\nimport { SpanStatusCode, context, propagation } from '@opentelemetry/api';\nimport { getConfig } from './config';\nimport { getActiveContextWithBaggage } from './trace-context';\n\nexport interface HttpInstrumentedOptions {\n /** Service name for HTTP calls (default: 'http-client') */\n serviceName?: string;\n /** Extract URL from method arguments (default: first arg) */\n urlExtractor?: (args: unknown[]) => string | undefined;\n /** Extract HTTP method from method name or args */\n methodExtractor?: (methodName: string, args: unknown[]) => string;\n /** Add custom attributes to spans */\n attributesFromArgs?: (args: unknown[]) => Record<string, string | number>;\n /** Slow request threshold in milliseconds (adds warning attribute) - default: 3000ms */\n slowRequestThresholdMs?: number;\n}\n\n/**\n * Decorator for auto-instrumenting HTTP client methods\n *\n * @example Basic usage\n * ```typescript\n * @HttpInstrumented()\n * class ApiClient {\n * async fetchUser(userId: string) {\n * const res = await fetch(`https://api.example.com/users/${userId}`)\n * return res.json()\n * }\n *\n * async createOrder(order: Order) {\n * const res = await fetch('https://api.example.com/orders', {\n * method: 'POST',\n * body: JSON.stringify(order)\n * })\n * return res.json()\n * }\n * }\n * ```\n *\n * @example Advanced usage with custom extractors\n * ```typescript\n * @HttpInstrumented({\n * serviceName: 'payment-gateway',\n * urlExtractor: (args) => {\n * const config = args[0] as RequestConfig\n * return config.url\n * },\n * attributesFromArgs: (args) => ({\n * 'http.request_id': args[0]?.requestId,\n * 'http.retry_count': args[0]?.retryCount || 0\n * })\n * })\n * class PaymentClient {\n * async charge(config: RequestConfig) {\n * return axios(config)\n * }\n * }\n * ```\n */\nexport function HttpInstrumented(options: HttpInstrumentedOptions = {}) {\n const serviceName = options.serviceName || 'http-client';\n const slowRequestThresholdMs = options.slowRequestThresholdMs ?? 3000;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-object-type\n return function <T extends { new (...args: any[]): {} }>(\n target: T,\n _context: ClassDecoratorContext,\n ) {\n return class extends target {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(...args: any[]) {\n super(...args);\n\n const proto = target.prototype;\n const methodNames = Object.getOwnPropertyNames(proto).filter(\n (name) =>\n name !== 'constructor' &&\n typeof proto[name] === 'function' &&\n !name.startsWith('_'),\n );\n\n for (const methodName of methodNames) {\n const originalMethod = proto[methodName];\n\n if (\n originalMethod.constructor.name === 'AsyncFunction' ||\n originalMethod.toString().startsWith('async ')\n ) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const wrappedMethod = async (...args: any[]) => {\n const config = getConfig();\n const tracer = config.tracer;\n\n const url = options.urlExtractor\n ? options.urlExtractor(args)\n : (args[0] as string | undefined);\n\n const method = options.methodExtractor\n ? options.methodExtractor(methodName, args)\n : inferHttpMethod(methodName);\n\n const spanName = url\n ? `HTTP ${method} ${extractPath(url)}`\n : `HTTP ${method}`;\n\n return tracer.startActiveSpan(spanName, async (span) => {\n const startTime = performance.now();\n\n try {\n span.setAttributes({\n 'http.method': method,\n 'http.url': url || 'unknown',\n 'service.name': serviceName,\n 'operation.name': `${serviceName}.${methodName}`,\n });\n\n if (url) {\n const urlObj = parseUrl(url);\n span.setAttributes({\n 'http.scheme': urlObj.protocol,\n 'http.host': urlObj.host,\n 'http.target': urlObj.path,\n });\n }\n\n if (options.attributesFromArgs) {\n span.setAttributes(options.attributesFromArgs(args));\n }\n\n const result = await originalMethod.apply(this, args);\n\n const duration = performance.now() - startTime;\n\n // Extract status code from response\n const statusCode = extractStatusCode(result);\n if (statusCode) {\n span.setAttribute('http.status_code', statusCode);\n\n if (statusCode >= 400) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: `HTTP ${statusCode}`,\n });\n } else {\n span.setStatus({ code: SpanStatusCode.OK });\n }\n } else {\n span.setStatus({ code: SpanStatusCode.OK });\n }\n\n span.setAttributes({\n 'http.duration_ms': duration,\n });\n\n // Mark slow requests for investigation\n if (duration > slowRequestThresholdMs) {\n span.setAttribute('http.slow_request', true);\n span.setAttribute(\n 'http.slow_request_threshold_ms',\n slowRequestThresholdMs,\n );\n }\n\n return result;\n } catch (error) {\n const duration = performance.now() - startTime;\n\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message:\n error instanceof Error ? error.message : 'Unknown error',\n });\n\n span.setAttributes({\n 'http.duration_ms': duration,\n 'error.type':\n error instanceof Error\n ? error.constructor.name\n : 'Unknown',\n 'error.message':\n error instanceof Error ? error.message : 'Unknown error',\n });\n\n throw error;\n } finally {\n span.end();\n }\n });\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this as any)[methodName] = wrappedMethod;\n }\n }\n }\n };\n };\n}\n\n/**\n * Helper: Trace a single HTTP request\n *\n * @example\n * ```typescript\n * import { traceHttpRequest } from 'autotel/http'\n *\n * const data = await traceHttpRequest(\n * 'GET /api/users',\n * () => fetch('https://api.example.com/users')\n * )\n * ```\n */\nexport async function traceHttpRequest<T>(\n spanName: string,\n fn: () => Promise<T>,\n attributes?: Record<string, string | number>,\n): Promise<T> {\n const config = getConfig();\n const tracer = config.tracer;\n\n return tracer.startActiveSpan(spanName, async (span) => {\n try {\n if (attributes) {\n span.setAttributes(attributes);\n }\n\n const result = await fn();\n span.setStatus({ code: SpanStatusCode.OK });\n return result;\n } catch (error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : 'Unknown error',\n });\n throw error;\n } finally {\n span.end();\n }\n });\n}\n\n// Helper functions\n\nfunction inferHttpMethod(methodName: string): string {\n const lower = methodName.toLowerCase();\n if (\n lower.includes('get') ||\n lower.includes('fetch') ||\n lower.includes('list')\n )\n return 'GET';\n if (lower.includes('post') || lower.includes('create')) return 'POST';\n if (lower.includes('put') || lower.includes('update')) return 'PUT';\n if (lower.includes('delete') || lower.includes('remove')) return 'DELETE';\n if (lower.includes('patch')) return 'PATCH';\n return 'GET'; // Default\n}\n\nfunction extractPath(url: string): string {\n try {\n const urlObj = new URL(url);\n return urlObj.pathname;\n } catch {\n // Relative URL or invalid\n return url.split('?')[0] || url;\n }\n}\n\nfunction parseUrl(url: string): {\n protocol: string;\n host: string;\n path: string;\n} {\n try {\n const urlObj = new URL(url);\n return {\n protocol: urlObj.protocol.replace(':', ''),\n host: urlObj.host,\n path: urlObj.pathname + urlObj.search,\n };\n } catch {\n return {\n protocol: 'http',\n host: 'unknown',\n path: url,\n };\n }\n}\n\nfunction extractStatusCode(result: unknown): number | undefined {\n if (result && typeof result === 'object') {\n // Check for Response.status (fetch API)\n if ('status' in result && typeof result.status === 'number') {\n return result.status;\n }\n // Check for statusCode (axios, node http)\n if ('statusCode' in result && typeof result.statusCode === 'number') {\n return result.statusCode;\n }\n }\n return undefined;\n}\n\n/**\n * Inject trace context into HTTP headers (for distributed tracing)\n *\n * This includes W3C Trace Context (traceparent, tracestate) and W3C Baggage headers.\n * Uses OpenTelemetry's propagation system for full compatibility.\n *\n * @example\n * ```typescript\n * import { injectTraceContext } from 'autotel/http'\n *\n * const headers = injectTraceContext({\n * 'Content-Type': 'application/json'\n * })\n *\n * fetch('/api/users', { headers })\n * ```\n *\n * @example With baggage\n * ```typescript\n * import { trace, withTracing, withBaggage, injectTraceContext } from 'autotel'\n *\n * export const createOrder = withTracing({})((ctx) => async (order: Order) => {\n * return await withBaggage({\n * baggage: { 'tenant.id': order.tenantId },\n * fn: async () => {\n * const headers = injectTraceContext();\n * // Headers now include 'baggage' header with tenant.id\n * await fetch('/api/charge', { headers });\n * },\n * });\n * });\n * ```\n */\nexport function injectTraceContext(\n headers: Record<string, string> = {},\n): Record<string, string> {\n // Use getActiveContextWithBaggage to check stored context (from baggage setters)\n // This ensures ctx.setBaggage() changes are included in injected headers\n const currentContext = getActiveContextWithBaggage();\n\n // Use OpenTelemetry's propagation.inject for full W3C support\n // This includes traceparent, tracestate, and baggage headers\n propagation.inject(currentContext, headers);\n\n return headers;\n}\n\n/**\n * Extract trace context from HTTP headers (for distributed tracing)\n *\n * This extracts W3C Trace Context (traceparent, tracestate) and W3C Baggage headers.\n * Uses OpenTelemetry's propagation system for full compatibility.\n *\n * Returns a context that can be used with context.with() to run code\n * with the extracted trace context and baggage.\n *\n * @example\n * ```typescript\n * import { extractTraceContext, trace, withTracing } from 'autotel'\n * import { context } from 'autotel'\n *\n * // In Express middleware\n * app.use((req, res, next) => {\n * const extractedContext = extractTraceContext(req.headers);\n * context.with(extractedContext, () => {\n * next();\n * });\n * });\n * ```\n *\n * @example In a traced function\n * ```typescript\n * export const handleWebhook = withTracing({})((ctx) => async (req: Request) => {\n * const extractedContext = extractTraceContext(req.headers);\n * return await context.with(extractedContext, async () => {\n * // Now ctx.getBaggage() will return baggage from the incoming request\n * const tenantId = ctx.getBaggage('tenant.id');\n * await processWebhook(req.body);\n * });\n * });\n * ```\n */\nexport function extractTraceContext(\n headers: Record<string, string | string[] | undefined>,\n): ReturnType<typeof context.active> {\n const carrier: Record<string, string> = {};\n\n // Convert headers to flat string format expected by propagation\n for (const [key, value] of Object.entries(headers)) {\n if (value !== undefined) {\n carrier[key] = Array.isArray(value) ? (value[0] ?? '') : value;\n }\n }\n\n // Extract context using OpenTelemetry's propagation system\n // Returns a Context that can be used with context.with()\n return propagation.extract(context.active(), carrier);\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-BPcxVucm.d.cts","names":[],"sources":["../src/attributes/types.ts","../src/attributes/builders.ts","../src/attributes/validators.ts","../src/attributes/attachers.ts","../src/attributes/domains.ts","../src/attributes/utils.ts"],"mappings":";;;;UAOiB;EACf;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;;EAEA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;;;;cC/IW;;aAEG,KAAA;;;aACG,QAAA;;;aACD,OAAA;;;aACI,WAAA;;;aACJ,OAAA;;;aACC,QAAA;;;aAEF,OAAA,MAAA,cAAS;;;aAcV,KAAA;;;aACQ,aAAA;;;aAEP,OAAA,MAAA,iBAAY;;;aAUb,KAAA;;;aACU,eAAA;;;aAGG,kBAAA;;;aAGN,YAAA;;;aAEN,OAAA,MAAA,gBAAW;;;;eAeN,SAAA;;;eACQ,iBAAA;;;eAGH,cAAA;;;eAGP,OAAA;;;eACI,WAAA;;;;;eAME,aAAA;;;eAGN,OAAA;;;eACI,WAAA;;;;aAKL,QAAA;;;aACU,kBAAA;;;aAIV,SAAA,MAAA,oBAAe;aAkBf,SAAA,MAAA,oBAAe;;;;eAaZ,SAAA;;;eACG,YAAA;;;eACK,iBAAA;;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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DolOVX6F.d.ts","names":[],"sources":["../src/attributes/types.ts","../src/attributes/builders.ts","../src/attributes/validators.ts","../src/attributes/attachers.ts","../src/attributes/domains.ts","../src/attributes/utils.ts"],"mappings":";;;;UAOiB;EACf;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;;EAEA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;;;;cC/IW;;aAEG,KAAA;;;aACG,QAAA;;;aACD,OAAA;;;aACI,WAAA;;;aACJ,OAAA;;;aACC,QAAA;;;aAEF,OAAA,MAAA,cAAS;;;aAcV,KAAA;;;aACQ,aAAA;;;aAEP,OAAA,MAAA,iBAAY;;;aAUb,KAAA;;;aACU,eAAA;;;aAGG,kBAAA;;;aAGN,YAAA;;;aAEN,OAAA,MAAA,gBAAW;;;;eAeN,SAAA;;;eACQ,iBAAA;;;eAGH,cAAA;;;eAGP,OAAA;;;eACI,WAAA;;;;;eAME,aAAA;;;eAGN,OAAA;;;eACI,WAAA;;;;aAKL,QAAA;;;aACU,kBAAA;;;aAIV,SAAA,MAAA,oBAAe;aAkBf,SAAA,MAAA,oBAAe;;;;eAaZ,SAAA;;;eACG,YAAA;;;eACK,iBAAA;;;eAGL,YAAA;;;eACA,YAAA;;;eACG,eAAA;;;eACH,YAAA;;;eACK,iBAAA;;;eAGF,eAAA;;;eAIT,OAAA,MAAA,YAAO;;;;aA6BR,OAAA;;;aACI,WAAA;;;aACD,UAAA;;;aAEJ,OAAA,MAAA,iBAAY;;;aAYJ,cAAA;;;aAGH,WAAA;;;aACC,YAAA;;;aACG,eAAA;;;aAGG,kBAAA;;;aAIZ,OAAA,MAAA,iBAAY;;;aAiBR,UAAA;;;aACH,OAAA;;;aACS,gBAAA;;;aAIV,OAAA,MAAA,uBAAkB;;;aAaf,SAAA;;;aACF,OAAA;;;aACA,OAAA;;;aACC,QAAA;;;aACG,WAAA;;;aAEL,OAAA,MAAA,aAAQ;;;aAaP,OAAA;;;aACG,UAAA;;;aACG,aAAA;;;aACN,OAAA;;;aAED,OAAA,MAAA,eAAU;;;aAaN,UAAA;;;aACA,UAAA;;;aACG,aAAA;;;aAGN,OAAA;;;aACM,aAAA;;;aAIP,OAAA,MAAA,mBAAc;;;aAgBd,MAAA;;;aACW,iBAAA;;;aAGP,UAAA;;;aACF,QAAA;;;aAEF,OAAA,MAAA,iBAAY;;;aAcb,KAAA;;;aACE,OAAA;;;;;aAIF,KAAA;;;aACE,OAAA;;;aACC,QAAA;;;aACF,MAAA;;;aAEA,OAAA,MAAA,mBAAc;;;aAYV,UAAA;;;aACM,gBAAA;;;aAGC,iBAAA;;;aAGT,QAAA;;;;;aAIG,WAAA;;;aACC,YAAA;;;aACH,SAAA;;;aACU,mBAAA;;;aAGR,WAAA;;;aAEL,OAAA,MAAA,eAAU;;;aAiBT,OAAA;;;aACG,UAAA;;;aACC,WAAA;;;aACC,YAAA;;;aACA,YAAA;;;;;aAIN,MAAA;;;aACK,WAAA;;;aACD,UAAA;;;;;aAID,SAAA;;;aACK,cAAA;;;aAGF,YAAA;;;aAGA,YAAA;;;aACK,iBAAA;;;aAIX,OAAA,MAAA,mBAAc;;;aAoBX,SAAA;;;aACC,UAAA;;;aACD,SAAA;;;aACQ,iBAAA;;;;;aAMN,WAAA;;;aACK,gBAAA;;;aAGA,gBAAA;;;;;aAMF,cAAA;;;aACG,iBAAA;;;aAGJ,aAAA;;;;;aAID,YAAA;;;aACD,WAAA;;;aACA,WAAA;;;aACH,QAAA;;;aACC,SAAA;;;aACA,SAAA;;;aACI,aAAA;;;aACA,aAAA;;;aACF,WAAA;;;;;aAIO,kBAAA;;;aAGT,SAAA;;;aACG,YAAA;;;aACF,UAAA;;;;;;;;;;;UCvgBJ;;EAEf;;EAGA;;EAGA;;EAGA;;EAGA,qBAAqB;;UAGN;EACf,aAAa;;EAEb,qBAAqB;;iBA0CP,kBACd,aACA,gBACA,SAAQ;iBAsIM,yBACd,aACA,SAAQ;iBAqCM,cACd,YAAY,yBACZ,SAAQ,kBACP;iBAUa,qBAAqB;;;iBCnPrB,QACd,eAAe,OAAO,cACtB,MADsB,WAEtB,aADwB;iBAOV,WACd,eAAe,OAAO,cACtB,MADsB,cAEtB,aADwB;iBAOV,UACd,eAAe,OAAO,cACtB,MADsB,aAEtB,aADwB;iBAOV,WACd,eAAe,OAAO,cACtB,MADsB,iBAEtB,aADwB;iBAaV,WACd,eAAe,OAAO,cACtB,MADsB,iBAEtB,aADwB;iBAOV,SACd,eAAe,OAAO,cACtB,MADsB,SAEtB,aADwB;;;;;;;;;;;;;;;;;;;;iBA0BV,qBACd,UAAU,UACV,MADU,eAET;iBAKa,SACd,eAAe,OAAO,cACtB;EACE,OAFoB;EAGpB,UADyB;EAEzB,SAD4B;GAG9B,aAF6B;iBAwBf,QACd,eAAe,OAAO,cACtB,MADsB;EAEpB;GAEF,aAHwB;iBAWV,SACd,eAAe,OAAO,cACtB,MADsB,YAEtB,aADwB;iBAOV,aACd,eAAe,OAAO,cACtB,MADsB,gBAEtB,aADwB;;;;;;;iBCnJV,YACd,eADc,cAEd;EACE,OAFwC;EAGxC,UADyB;EAEzB;EACA;EACA;EACA;GAEF,aAN8B;;;KCG3B;EACH,gBAAgB,OAAO,eAAe;;iBAGxB,cACX,UAAU,MAAM,uCAClB;iBAUa,kBACd,MAAM,iBACN,OAAO,yBACP,SAAS"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","names":["otelTraceApi","autotelTraceFn","hashJson","mergeInto","nodeAsyncHooks","otelTrace","createTraceContext","flattenToAttributes","createStructuredError"],"sources":["../src/trace-hybrid.ts","../src/define-event.ts","../src/request-logger.ts","../src/error-catalog.ts","../src/drain-toolkit.ts","../src/enricher-toolkit.ts"],"sourcesContent":["/**\n * Hybrid `trace` export: callable like autotel's `trace(fn)`, AND exposes the\n * full `@opentelemetry/api` `TraceAPI` surface (`trace.getActiveSpan()`,\n * `trace.getTracer()`, …) so existing OTel code \"just works\" when imported\n * from `autotel`.\n *\n * Implementation: `Object.assign` mutates the autotel `trace` function to\n * attach the OTel TraceAPI methods. Because every reference to `trace` across\n * autotel resolves to the same function instance, this is a one-time, global\n * augmentation.\n */\n\nimport { trace as otelTraceApi } from '@opentelemetry/api';\nimport { trace as autotelTraceFn } from './functional';\n\nconst otelMethods = {\n // Class methods on TraceAPI — bind to the singleton.\n setGlobalTracerProvider:\n otelTraceApi.setGlobalTracerProvider.bind(otelTraceApi),\n getTracerProvider: otelTraceApi.getTracerProvider.bind(otelTraceApi),\n getTracer: otelTraceApi.getTracer.bind(otelTraceApi),\n disable: otelTraceApi.disable.bind(otelTraceApi),\n // Instance fields on TraceAPI — already standalone, copy by reference.\n wrapSpanContext: otelTraceApi.wrapSpanContext,\n isSpanContextValid: otelTraceApi.isSpanContextValid,\n deleteSpan: otelTraceApi.deleteSpan,\n getSpan: otelTraceApi.getSpan,\n getActiveSpan: otelTraceApi.getActiveSpan,\n getSpanContext: otelTraceApi.getSpanContext,\n setSpan: otelTraceApi.setSpan,\n setSpanContext: otelTraceApi.setSpanContext,\n};\n\nexport const trace: typeof autotelTraceFn & typeof otelTraceApi = Object.assign(\n autotelTraceFn,\n otelMethods,\n) as typeof autotelTraceFn & typeof otelTraceApi;\n","import { track } from './track';\nimport { hashJson } from './stable-hash';\nimport type { EventSchemaMetadata } from './event-subscriber';\n\ntype SafeParseResult<T> =\n { success: true; data: T } | { success: false; error: unknown };\n\nexport interface SchemaLike<T> {\n safeParse(input: unknown): SafeParseResult<T>;\n}\n\nexport interface DefineEventOptions<S> {\n toJsonSchema?: (schema: S) => unknown;\n}\n\nexport interface DefinedEvent<Name extends string, Payload> {\n readonly name: Name;\n readonly schemaMetadata?: EventSchemaMetadata;\n track(payload: Payload): void;\n}\n\nexport function defineEvent<\n Name extends string,\n Payload,\n S extends SchemaLike<Payload>,\n>(\n name: Name,\n schema: S,\n options: DefineEventOptions<S> = {},\n): DefinedEvent<Name, Payload> {\n const jsonSchema = options.toJsonSchema?.(schema);\n const schemaMetadata = jsonSchema\n ? {\n source: 'zod' as const,\n jsonSchema,\n hash: hashJson(jsonSchema),\n }\n : undefined;\n\n return {\n name,\n schemaMetadata,\n track(payload: Payload) {\n const parsed = schema.safeParse(payload);\n if (!parsed.success) {\n throw new Error(\n `Invalid payload for event \"${name}\". Schema validation failed.`,\n );\n }\n track(\n name,\n parsed.data,\n schemaMetadata ? { schema: schemaMetadata } : undefined,\n );\n },\n };\n}\n","// namespace import for browser-bundler compat — see node-require.ts\nimport * as nodeAsyncHooks from 'node:async_hooks';\nimport { trace as otelTrace } from '@opentelemetry/api';\nimport type { TraceContext } from './trace-context';\nimport { createTraceContext } from './trace-context';\nimport { recordStructuredError } from './structured-error';\nimport { flattenToAttributes } from './flatten-attributes';\nimport { emitCorrelatedEvent } from './correlated-events';\n\nconst POST_EMIT_FORK_HINT =\n \"For intentional background work tied to this request, use log.fork('label', fn) when available.\";\n\nfunction warnPostEmit(method: string, detail: string): void {\n console.warn(\n `[autotel] ${method} called after the wide event was emitted — ${detail} This data will not appear in observability. ${POST_EMIT_FORK_HINT}`,\n );\n}\n\nfunction mergeInto(\n target: Record<string, unknown>,\n source: Record<string, unknown>,\n): void {\n for (const key in source) {\n const sourceVal = source[key];\n if (sourceVal === undefined) continue;\n const targetVal = target[key];\n if (\n sourceVal !== null &&\n typeof sourceVal === 'object' &&\n !Array.isArray(sourceVal) &&\n targetVal !== null &&\n typeof targetVal === 'object' &&\n !Array.isArray(targetVal)\n ) {\n mergeInto(\n targetVal as Record<string, unknown>,\n sourceVal as Record<string, unknown>,\n );\n } else if (Array.isArray(targetVal) && Array.isArray(sourceVal)) {\n target[key] = [...targetVal, ...sourceVal];\n } else {\n target[key] = sourceVal;\n }\n }\n}\n\nconst requestContextStore =\n new nodeAsyncHooks.AsyncLocalStorage<TraceContext>();\n\nexport function runWithRequestContext<T>(ctx: TraceContext, fn: () => T): T {\n return requestContextStore.run(ctx, fn);\n}\n\nexport interface RequestLogger {\n set(fields: Record<string, unknown>): void;\n /** Set snapshot severity without adding a log event or exception. */\n setLevel(level: RequestLogLevel): void;\n info(message: string, fields?: Record<string, unknown>): void;\n warn(message: string, fields?: Record<string, unknown>): void;\n error(error: Error | string, fields?: Record<string, unknown>): void;\n getContext(): Record<string, unknown>;\n emitNow(overrides?: Record<string, unknown>): RequestLogSnapshot;\n fork(\n label: string,\n fn: () => void | Promise<void>,\n options?: ForkOptions,\n ): void;\n}\n\nexport type RequestLogLevel = 'debug' | 'info' | 'warn' | 'error';\n\nexport interface RequestLogSnapshot {\n timestamp: string;\n traceId: string;\n spanId: string;\n correlationId: string;\n context: Record<string, unknown>;\n}\n\nexport interface RequestLoggerOptions {\n /** Callback invoked by emitNow() for manual fan-out. */\n onEmit?: (snapshot: RequestLogSnapshot) => void | Promise<void>;\n}\n\n/**\n * Optional lifecycle hooks for adapters that need to track child loggers\n * spawned by `log.fork()` (e.g. active logger maps in framework integrations).\n */\nexport interface ForkLifecycle {\n /** Called after the child logger is created, before `fn` runs. */\n onChildEnter?: (child: RequestLogger) => void;\n /** Called after the child has finished (emit + drain), success or failure. */\n onChildExit?: (child: RequestLogger) => void;\n}\n\nexport interface ForkOptions {\n lifecycle?: ForkLifecycle;\n}\n\nfunction resolveContext(ctx?: TraceContext): TraceContext {\n if (ctx) return ctx;\n\n const stored = requestContextStore.getStore();\n if (stored) return stored;\n\n const span = otelTrace.getActiveSpan();\n if (!span) {\n throw new Error(\n '[autotel] getRequestLogger() requires an active span or runWithRequestContext(). Wrap your handler with trace() or use runWithRequestContext().',\n );\n }\n return createTraceContext(span);\n}\n\nexport function getRequestLogger(\n ctx?: TraceContext,\n options?: RequestLoggerOptions,\n): RequestLogger {\n const activeContext = resolveContext(ctx);\n const contextState: Record<string, unknown> = {};\n let emitted = false;\n let lastSnapshot: RequestLogSnapshot | null = null;\n let hasExplicitLevel = false;\n\n const addLogEvent = (\n level: 'info' | 'warn' | 'error',\n message: string,\n fields?: Record<string, unknown>,\n ) => {\n const attrs = fields ? flattenToAttributes(fields) : undefined;\n emitCorrelatedEvent(activeContext, `log.${level}`, {\n message,\n ...attrs,\n });\n };\n\n const sealCheck = (method: string, keys: string[]): void => {\n if (emitted) {\n warnPostEmit(\n method,\n `Keys dropped: ${keys.length > 0 ? keys.join(', ') : '(empty)'}.`,\n );\n }\n };\n\n return {\n set(fields: Record<string, unknown>) {\n sealCheck('log.set()', Object.keys(fields));\n if (emitted) return;\n mergeInto(contextState, fields);\n activeContext.setAttributes(flattenToAttributes(fields));\n },\n\n setLevel(level: RequestLogLevel) {\n sealCheck('log.setLevel()', ['autotel.log.level']);\n if (emitted) return;\n hasExplicitLevel = true;\n activeContext.setAttribute('autotel.log.level', level);\n },\n\n info(message: string, fields?: Record<string, unknown>) {\n const keys = fields\n ? ['message', ...Object.keys(fields).filter((k) => k !== 'requestLogs')]\n : ['message'];\n sealCheck('log.info()', keys);\n if (emitted) return;\n addLogEvent('info', message, fields);\n if (fields) {\n mergeInto(contextState, fields);\n activeContext.setAttributes(flattenToAttributes(fields));\n }\n },\n\n warn(message: string, fields?: Record<string, unknown>) {\n const keys = fields\n ? ['message', ...Object.keys(fields).filter((k) => k !== 'requestLogs')]\n : ['message'];\n sealCheck('log.warn()', keys);\n if (emitted) return;\n addLogEvent('warn', message, fields);\n if (!hasExplicitLevel) {\n activeContext.setAttribute('autotel.log.level', 'warn');\n }\n if (fields) {\n mergeInto(contextState, fields);\n activeContext.setAttributes(flattenToAttributes(fields));\n }\n },\n\n error(error: Error | string, fields?: Record<string, unknown>) {\n const keys = fields ? [...Object.keys(fields), 'error'] : ['error'];\n sealCheck('log.error()', keys);\n if (emitted) return;\n const err = typeof error === 'string' ? new Error(error) : error;\n recordStructuredError(activeContext, err);\n addLogEvent('error', err.message, fields);\n\n if (fields) {\n mergeInto(contextState, fields);\n activeContext.setAttributes(flattenToAttributes(fields));\n }\n if (!hasExplicitLevel) {\n activeContext.setAttribute('autotel.log.level', 'error');\n }\n },\n\n getContext() {\n return { ...contextState };\n },\n\n emitNow(overrides?: Record<string, unknown>): RequestLogSnapshot {\n if (emitted) {\n warnPostEmit('log.emitNow()', 'Ignoring duplicate emit.');\n return lastSnapshot as RequestLogSnapshot;\n }\n\n const mergedContext = {\n ...contextState,\n ...overrides,\n };\n const flattened = flattenToAttributes(mergedContext);\n activeContext.setAttributes(flattened);\n\n const snapshot: RequestLogSnapshot = {\n timestamp: new Date().toISOString(),\n traceId: activeContext.traceId,\n spanId: activeContext.spanId,\n correlationId: activeContext.correlationId,\n context: mergedContext,\n };\n\n emitCorrelatedEvent(activeContext, 'log.emit.manual', {\n ...flattened,\n });\n\n if (options?.onEmit) {\n Promise.resolve(options.onEmit(snapshot)).catch((error) => {\n console.warn('[autotel] request logger onEmit failed:', error);\n });\n }\n\n emitted = true;\n lastSnapshot = snapshot;\n return snapshot;\n },\n\n fork(\n label: string,\n fn: () => void | Promise<void>,\n forkOptions?: ForkOptions,\n ): void {\n const parentRequestId = activeContext.correlationId;\n if (typeof parentRequestId !== 'string' || parentRequestId.length === 0) {\n throw new Error(\n '[autotel] log.fork() requires the parent logger to have a correlationId. ' +\n 'Ensure the request was created by autotel middleware.',\n );\n }\n\n const tracer = otelTrace.getTracer('autotel.request-logger');\n const lifecycle = forkOptions?.lifecycle;\n void tracer.startActiveSpan(`request.fork:${label}`, (childSpan) => {\n const childContext: TraceContext = {\n ...createTraceContext(childSpan),\n correlationId: crypto.randomUUID(),\n };\n\n requestContextStore.run(childContext, () => {\n const childLog = getRequestLogger(childContext);\n childLog.set({\n operation: label,\n _parentCorrelationId: parentRequestId,\n });\n\n lifecycle?.onChildEnter?.(childLog);\n\n void Promise.resolve()\n .then(() => fn())\n .then(() => {\n childLog.emitNow();\n })\n .catch((error_: unknown) => {\n const error =\n error_ instanceof Error ? error_ : new Error(String(error_));\n childLog.error(error);\n childLog.emitNow();\n })\n .finally(() => {\n try {\n lifecycle?.onChildExit?.(childLog);\n } catch (hookError) {\n console.warn(\n '[autotel] fork onChildExit hook threw:',\n hookError,\n );\n }\n childSpan.end();\n });\n });\n });\n },\n };\n}\n\n/**\n * Returns `true` when a request-logger context can be resolved without throwing —\n * i.e. an explicit `ctx` was provided, a `runWithRequestContext()` scope is active,\n * or there is an active OpenTelemetry span.\n *\n * Use this to branch on observability availability instead of wrapping\n * {@link getRequestLogger} in try/catch.\n */\nexport function hasRequestContext(ctx?: TraceContext): boolean {\n if (ctx) return true;\n if (requestContextStore.getStore()) return true;\n return otelTrace.getActiveSpan() != null;\n}\n\n/**\n * Like {@link getRequestLogger}, but returns `null` instead of throwing when no\n * request context is available. Intended for best-effort instrumentation where a\n * missing telemetry context must never crash business logic.\n */\nexport function getRequestLoggerSafe(\n ctx?: TraceContext,\n options?: RequestLoggerOptions,\n): RequestLogger | null {\n if (!hasRequestContext(ctx)) return null;\n return getRequestLogger(ctx, options);\n}\n\n/**\n * A no-op {@link RequestLogger} whose methods do nothing. Used as a fallback by\n * best-effort instrumentation so wrapped handlers can run un-instrumented without\n * branching on logger presence.\n */\nexport function createNoopRequestLogger(): RequestLogger {\n const snapshot = (): RequestLogSnapshot => ({\n timestamp: new Date().toISOString(),\n traceId: '',\n spanId: '',\n correlationId: '',\n context: {},\n });\n\n return {\n set() {},\n setLevel() {},\n info() {},\n warn() {},\n error() {},\n getContext() {\n return {};\n },\n emitNow() {\n return snapshot();\n },\n fork(_label, fn) {\n void Promise.resolve().then(() => fn());\n },\n };\n}\n","/**\n * Typed error and audit catalogs.\n *\n * Group related errors into one catalog and get a refactor-safe builder per\n * code, with autocomplete at every call site and typed message parameters.\n *\n * @example\n * ```typescript\n * import { defineErrorCatalog } from 'autotel';\n *\n * export const billing = defineErrorCatalog('billing', {\n * PAYMENT_DECLINED: {\n * status: 402,\n * message: 'Card declined',\n * why: 'The issuer rejected the charge',\n * fix: 'Try a different payment method',\n * },\n * INSUFFICIENT_FUNDS: {\n * status: 402,\n * message: ({ available, required }: { available: number; required: number }) =>\n * `Insufficient funds: $${available} of $${required}`,\n * },\n * });\n *\n * throw billing.PAYMENT_DECLINED({ cause: stripeError });\n * throw billing.INSUFFICIENT_FUNDS({ available: 5, required: 100 });\n *\n * // In a catch block — refactor-safe, no magic strings:\n * if (billing.PAYMENT_DECLINED.match(err)) { ... }\n * ```\n */\n\nimport {\n createStructuredError,\n type StructuredError,\n} from './structured-error';\n\nconst catalogCodeKey = Symbol.for('autotel.catalog.code');\n\n/** Definition of a single error in a catalog. */\nexport interface ErrorCatalogEntry {\n /**\n * Human-readable message. Use a function to interpolate typed parameters;\n * the parameter type flows through to the call site.\n */\n message: string | ((params: never) => string);\n /** HTTP status to surface to clients. */\n status?: number;\n /** Stable error code. Defaults to `${namespace}.${KEY}`. */\n code?: string | number;\n /** Why it happened. A function receives the same params as `message`. */\n why?: string | ((params: never) => string);\n /** What the caller should do next. */\n fix?: string;\n /** Docs or runbook link. */\n link?: string;\n /** Error name. Defaults to the catalog key. */\n name?: string;\n}\n\n/** Per-call options passed alongside (or instead of) typed params. */\nexport interface ErrorBuildOptions {\n cause?: unknown;\n details?: Record<string, unknown>;\n /** Backend-only context. Never serialized to clients. */\n internal?: Record<string, unknown>;\n}\n\ntype ParamsOf<E> = E extends { message: (params: infer P) => string }\n ? P\n : E extends { why: (params: infer P) => string }\n ? P\n : void;\n\ntype BuilderArgs<E extends ErrorCatalogEntry> =\n ParamsOf<E> extends void\n ? [options?: ErrorBuildOptions]\n : [params: ParamsOf<E>, options?: ErrorBuildOptions];\n\n/** A callable error factory produced by {@link defineErrorCatalog}. */\nexport interface ErrorBuilder<E extends ErrorCatalogEntry> {\n (...args: BuilderArgs<E>): StructuredError;\n /** Stable code assigned to every error from this entry. */\n readonly code: string | number;\n /** True when `error` was produced by this catalog entry. */\n match(error: unknown): boolean;\n}\n\nexport type ErrorCatalog<T extends Record<string, ErrorCatalogEntry>> = {\n readonly [K in keyof T]: ErrorBuilder<T[K]>;\n};\n\nfunction readCatalogCode(error: unknown): string | number | undefined {\n if (error === null || typeof error !== 'object') return undefined;\n return (error as Record<symbol, unknown>)[catalogCodeKey] as\n string | number | undefined;\n}\n\n/** True when `error` was produced by any autotel error catalog. */\nexport function isCatalogError(error: unknown): error is StructuredError {\n return readCatalogCode(error) !== undefined;\n}\n\n/** Returns the catalog code of `error`, or `undefined` if it has none. */\nexport function getCatalogCode(error: unknown): string | number | undefined {\n return readCatalogCode(error);\n}\n\n/**\n * Define a typed error catalog. Returns an object whose keys are error\n * builders. Each builder produces a {@link StructuredError} carrying the\n * entry's message, status, code, why, fix, and link.\n */\nexport function defineErrorCatalog<\n const T extends Record<string, ErrorCatalogEntry>,\n>(namespace: string, entries: T): ErrorCatalog<T> {\n const catalog: Record<string, ErrorBuilder<ErrorCatalogEntry>> = {};\n\n for (const [key, entry] of Object.entries(entries) as [\n string,\n ErrorCatalogEntry,\n ][]) {\n const code = entry.code ?? `${namespace}.${key}`;\n const usesParams =\n typeof entry.message === 'function' || typeof entry.why === 'function';\n\n const builder = ((\n paramsOrOptions?: unknown,\n maybeOptions?: ErrorBuildOptions,\n ): StructuredError => {\n const params = usesParams ? paramsOrOptions : undefined;\n const options = (usesParams ? maybeOptions : paramsOrOptions) as\n ErrorBuildOptions | undefined;\n\n const message =\n typeof entry.message === 'function'\n ? (entry.message as (p: unknown) => string)(params)\n : entry.message;\n const why =\n typeof entry.why === 'function'\n ? (entry.why as (p: unknown) => string)(params)\n : entry.why;\n\n const error = createStructuredError({\n message,\n name: entry.name ?? key,\n code,\n ...(entry.status === undefined ? {} : { status: entry.status }),\n ...(why === undefined ? {} : { why }),\n ...(entry.fix === undefined ? {} : { fix: entry.fix }),\n ...(entry.link === undefined ? {} : { link: entry.link }),\n ...(options?.cause === undefined ? {} : { cause: options.cause }),\n ...(options?.details === undefined ? {} : { details: options.details }),\n ...(options?.internal === undefined\n ? {}\n : { internal: options.internal }),\n });\n\n Object.defineProperty(error, catalogCodeKey, {\n value: code,\n enumerable: false,\n writable: false,\n configurable: true,\n });\n\n return error;\n }) as ErrorBuilder<ErrorCatalogEntry>;\n\n Object.defineProperty(builder, 'code', {\n value: code,\n enumerable: true,\n });\n Object.defineProperty(builder, 'match', {\n value: (error: unknown): boolean => readCatalogCode(error) === code,\n enumerable: false,\n });\n\n catalog[key] = builder;\n }\n\n return Object.freeze(catalog) as ErrorCatalog<T>;\n}\n\n/** Severity of an audit action. */\nexport type AuditSeverity = 'info' | 'warn' | 'critical';\n\n/** Definition of a single action in an audit catalog. */\nexport interface AuditCatalogEntry {\n /** Human-readable description. Use a function for typed params. */\n message?: string | ((params: never) => string);\n /** Stable action name. Defaults to `${namespace}.${KEY}`. */\n action?: string;\n /** Severity of the action. Defaults to `'info'`. */\n severity?: AuditSeverity;\n}\n\n/** A resolved audit action descriptor produced by an audit catalog. */\nexport interface AuditAction {\n readonly action: string;\n readonly severity: AuditSeverity;\n readonly message?: string;\n}\n\ntype AuditDescriptorArgs<E extends AuditCatalogEntry> =\n ParamsOf<E> extends void ? [] : [params: ParamsOf<E>];\n\n/** A callable audit-action descriptor produced by {@link defineAuditCatalog}. */\nexport interface AuditDescriptor<E extends AuditCatalogEntry> {\n (...args: AuditDescriptorArgs<E>): AuditAction;\n readonly action: string;\n readonly severity: AuditSeverity;\n}\n\nexport type AuditCatalog<T extends Record<string, AuditCatalogEntry>> = {\n readonly [K in keyof T]: AuditDescriptor<T[K]>;\n};\n\n/**\n * Define a typed audit catalog. Returns typed action descriptors you can pass\n * to `track()` or audit helpers without scattering magic strings.\n */\nexport function defineAuditCatalog<\n const T extends Record<string, AuditCatalogEntry>,\n>(namespace: string, entries: T): AuditCatalog<T> {\n const catalog: Record<string, AuditDescriptor<AuditCatalogEntry>> = {};\n\n for (const [key, entry] of Object.entries(entries) as [\n string,\n AuditCatalogEntry,\n ][]) {\n const action = entry.action ?? `${namespace}.${key}`;\n const severity: AuditSeverity = entry.severity ?? 'info';\n\n const descriptor = ((params?: unknown): AuditAction => {\n const message =\n typeof entry.message === 'function'\n ? (entry.message as (p: unknown) => string)(params)\n : entry.message;\n return Object.freeze({\n action,\n severity,\n ...(message === undefined ? {} : { message }),\n });\n }) as AuditDescriptor<AuditCatalogEntry>;\n\n Object.defineProperty(descriptor, 'action', {\n value: action,\n enumerable: true,\n });\n Object.defineProperty(descriptor, 'severity', {\n value: severity,\n enumerable: true,\n });\n\n catalog[key] = descriptor;\n }\n\n return Object.freeze(catalog) as AuditCatalog<T>;\n}\n","export interface DrainOptions<TContext, TConfig, TPayload = TContext> {\n /** Stable identifier used in error logs. */\n name: string;\n /** Return null to skip draining (e.g. missing API key in dev). */\n resolve: () => TConfig | null | Promise<TConfig | null>;\n /** Transform contexts into payloads. Defaults to identity. */\n transform?: (contexts: TContext[]) => TPayload[];\n /** Transport implementation. */\n send: (payloads: TPayload[], config: TConfig) => Promise<void>;\n}\n\nexport interface HttpDrainRequest {\n url: string;\n headers: Record<string, string>;\n body: string;\n}\n\nexport interface HttpDrainOptions<\n TContext,\n TConfig,\n TPayload = TContext,\n> extends Omit<DrainOptions<TContext, TConfig, TPayload>, 'send'> {\n encode: (payloads: TPayload[], config: TConfig) => HttpDrainRequest | null;\n timeoutMs?: number;\n retries?: number;\n resolveTimeoutMs?: (config: TConfig) => number | undefined;\n resolveRetries?: (config: TConfig) => number | undefined;\n}\n\nconst DEFAULT_TIMEOUT_MS = 5000;\nconst DEFAULT_RETRIES = 2;\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => {\n const t = setTimeout(resolve, ms);\n t.unref?.();\n });\n}\n\nasync function postWithRetry(options: {\n name: string;\n request: HttpDrainRequest;\n timeoutMs: number;\n retries: number;\n}): Promise<void> {\n const { name, request, timeoutMs, retries } = options;\n const attempts = Math.max(1, retries);\n let lastError: unknown;\n\n for (let attempt = 1; attempt <= attempts; attempt++) {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), timeoutMs);\n timeout.unref?.();\n try {\n const response = await fetch(request.url, {\n method: 'POST',\n headers: request.headers,\n body: request.body,\n signal: controller.signal,\n });\n if (!response.ok) {\n throw new Error(\n `[autotel/${name}] HTTP ${response.status} draining ${request.url}`,\n );\n }\n return;\n } catch (error) {\n lastError = error;\n if (attempt < attempts) {\n await delay(100 * attempt);\n }\n } finally {\n clearTimeout(timeout);\n }\n }\n\n throw lastError;\n}\n\nexport function defineDrain<TContext, TConfig, TPayload = TContext>(\n options: DrainOptions<TContext, TConfig, TPayload>,\n): (ctx: TContext | TContext[]) => Promise<void> {\n return async (ctx: TContext | TContext[]) => {\n const contexts = Array.isArray(ctx) ? ctx : [ctx];\n if (contexts.length === 0) return;\n\n const config = await options.resolve();\n if (!config) return;\n\n const payloads = options.transform\n ? options.transform(contexts)\n : (contexts as unknown as TPayload[]);\n\n if (payloads.length === 0) return;\n\n try {\n await options.send(payloads, config);\n } catch (error) {\n console.error(`[autotel/${options.name}] drain failed:`, error);\n }\n };\n}\n\nexport function defineHttpDrain<TContext, TConfig, TPayload = TContext>(\n options: HttpDrainOptions<TContext, TConfig, TPayload>,\n): (ctx: TContext | TContext[]) => Promise<void> {\n return defineDrain<TContext, TConfig, TPayload>({\n name: options.name,\n resolve: options.resolve,\n transform: options.transform,\n send: async (payloads, config) => {\n const request = options.encode(payloads, config);\n if (!request) return;\n const timeoutMs =\n options.resolveTimeoutMs?.(config) ??\n options.timeoutMs ??\n DEFAULT_TIMEOUT_MS;\n const retries =\n options.resolveRetries?.(config) ?? options.retries ?? DEFAULT_RETRIES;\n\n await postWithRetry({\n name: options.name,\n request,\n timeoutMs,\n retries,\n });\n },\n });\n}\n","export interface EnrichContext<TEvent extends Record<string, unknown>> {\n event: TEvent;\n request?: {\n method?: string;\n path?: string;\n requestId?: string;\n };\n response?: {\n status?: number;\n };\n headers?: Record<string, string>;\n}\n\nexport interface EnricherDefinition<\n TEvent extends Record<string, unknown>,\n TValue extends object,\n> {\n /** Stable identifier used in error logs. */\n name: string;\n /** Top-level field to merge computed values into. */\n field: keyof TEvent & string;\n /** Return undefined to skip enrichment. */\n compute: (ctx: EnrichContext<TEvent>) => TValue | undefined;\n}\n\nexport interface EnricherOptions {\n /** Replace existing field value instead of merge. Default false. */\n overwrite?: boolean;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction mergeInto(\n target: Record<string, unknown>,\n source: Record<string, unknown>,\n): void {\n for (const key in source) {\n const sourceVal = source[key];\n if (sourceVal === undefined) continue;\n const targetVal = target[key];\n if (isPlainObject(sourceVal) && isPlainObject(targetVal)) {\n mergeInto(targetVal, sourceVal);\n } else {\n target[key] = sourceVal;\n }\n }\n}\n\nexport function defineEnricher<\n TEvent extends Record<string, unknown>,\n TValue extends object,\n>(\n def: EnricherDefinition<TEvent, TValue>,\n options: EnricherOptions = {},\n): (ctx: EnrichContext<TEvent>) => void {\n return (ctx: EnrichContext<TEvent>) => {\n let computed: TValue | undefined;\n try {\n computed = def.compute(ctx);\n } catch (error) {\n console.error(`[autotel/${def.name}] enrich failed:`, error);\n return;\n }\n\n if (!computed) return;\n\n if (options.overwrite || !isPlainObject(ctx.event[def.field])) {\n (ctx.event as Record<string, unknown>)[def.field] = computed;\n return;\n }\n\n mergeInto(\n ctx.event[def.field] as unknown as Record<string, unknown>,\n computed as unknown as Record<string, unknown>,\n );\n };\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/baggage-span-processor.ts","../src/trace-hybrid.ts","../src/operation-context.ts","../src/rate-limiter.ts","../src/event-queue.ts","../src/track.ts","../src/shutdown.ts","../src/request-logger.ts","../src/structured-error.ts","../src/error-catalog.ts","../src/flatten-attributes.ts","../src/drain-toolkit.ts","../src/enricher-toolkit.ts","../src/pretty-log-formatter.ts"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/baggage-span-processor.ts","../src/trace-hybrid.ts","../src/operation-context.ts","../src/rate-limiter.ts","../src/event-queue.ts","../src/track.ts","../src/shutdown.ts","../src/request-logger.ts","../src/structured-error.ts","../src/error-catalog.ts","../src/flatten-attributes.ts","../src/drain-toolkit.ts","../src/enricher-toolkit.ts","../src/pretty-log-formatter.ts"],"mappings":"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"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["otelTraceApi","autotelTraceFn","mergeInto","otelTrace"],"sources":["../src/trace-hybrid.ts","../src/define-event.ts","../src/request-logger.ts","../src/error-catalog.ts","../src/drain-toolkit.ts","../src/enricher-toolkit.ts"],"sourcesContent":["/**\n * Hybrid `trace` export: callable like autotel's `trace(fn)`, AND exposes the\n * full `@opentelemetry/api` `TraceAPI` surface (`trace.getActiveSpan()`,\n * `trace.getTracer()`, …) so existing OTel code \"just works\" when imported\n * from `autotel`.\n *\n * Implementation: `Object.assign` mutates the autotel `trace` function to\n * attach the OTel TraceAPI methods. Because every reference to `trace` across\n * autotel resolves to the same function instance, this is a one-time, global\n * augmentation.\n */\n\nimport { trace as otelTraceApi } from '@opentelemetry/api';\nimport { trace as autotelTraceFn } from './functional';\n\nconst otelMethods = {\n // Class methods on TraceAPI — bind to the singleton.\n setGlobalTracerProvider:\n otelTraceApi.setGlobalTracerProvider.bind(otelTraceApi),\n getTracerProvider: otelTraceApi.getTracerProvider.bind(otelTraceApi),\n getTracer: otelTraceApi.getTracer.bind(otelTraceApi),\n disable: otelTraceApi.disable.bind(otelTraceApi),\n // Instance fields on TraceAPI — already standalone, copy by reference.\n wrapSpanContext: otelTraceApi.wrapSpanContext,\n isSpanContextValid: otelTraceApi.isSpanContextValid,\n deleteSpan: otelTraceApi.deleteSpan,\n getSpan: otelTraceApi.getSpan,\n getActiveSpan: otelTraceApi.getActiveSpan,\n getSpanContext: otelTraceApi.getSpanContext,\n setSpan: otelTraceApi.setSpan,\n setSpanContext: otelTraceApi.setSpanContext,\n};\n\nexport const trace: typeof autotelTraceFn & typeof otelTraceApi = Object.assign(\n autotelTraceFn,\n otelMethods,\n) as typeof autotelTraceFn & typeof otelTraceApi;\n","import { track } from './track';\nimport { hashJson } from './stable-hash';\nimport type { EventSchemaMetadata } from './event-subscriber';\n\ntype SafeParseResult<T> =\n { success: true; data: T } | { success: false; error: unknown };\n\nexport interface SchemaLike<T> {\n safeParse(input: unknown): SafeParseResult<T>;\n}\n\nexport interface DefineEventOptions<S> {\n toJsonSchema?: (schema: S) => unknown;\n}\n\nexport interface DefinedEvent<Name extends string, Payload> {\n readonly name: Name;\n readonly schemaMetadata?: EventSchemaMetadata;\n track(payload: Payload): void;\n}\n\nexport function defineEvent<\n Name extends string,\n Payload,\n S extends SchemaLike<Payload>,\n>(\n name: Name,\n schema: S,\n options: DefineEventOptions<S> = {},\n): DefinedEvent<Name, Payload> {\n const jsonSchema = options.toJsonSchema?.(schema);\n const schemaMetadata = jsonSchema\n ? {\n source: 'zod' as const,\n jsonSchema,\n hash: hashJson(jsonSchema),\n }\n : undefined;\n\n return {\n name,\n schemaMetadata,\n track(payload: Payload) {\n const parsed = schema.safeParse(payload);\n if (!parsed.success) {\n throw new Error(\n `Invalid payload for event \"${name}\". Schema validation failed.`,\n );\n }\n track(\n name,\n parsed.data,\n schemaMetadata ? { schema: schemaMetadata } : undefined,\n );\n },\n };\n}\n","// namespace import for browser-bundler compat — see node-require.ts\nimport * as nodeAsyncHooks from 'node:async_hooks';\nimport { trace as otelTrace } from '@opentelemetry/api';\nimport type { TraceContext } from './trace-context';\nimport { createTraceContext } from './trace-context';\nimport { recordStructuredError } from './structured-error';\nimport { flattenToAttributes } from './flatten-attributes';\nimport { emitCorrelatedEvent } from './correlated-events';\n\nconst POST_EMIT_FORK_HINT =\n \"For intentional background work tied to this request, use log.fork('label', fn) when available.\";\n\nfunction warnPostEmit(method: string, detail: string): void {\n console.warn(\n `[autotel] ${method} called after the wide event was emitted — ${detail} This data will not appear in observability. ${POST_EMIT_FORK_HINT}`,\n );\n}\n\nfunction mergeInto(\n target: Record<string, unknown>,\n source: Record<string, unknown>,\n): void {\n for (const key in source) {\n const sourceVal = source[key];\n if (sourceVal === undefined) continue;\n const targetVal = target[key];\n if (\n sourceVal !== null &&\n typeof sourceVal === 'object' &&\n !Array.isArray(sourceVal) &&\n targetVal !== null &&\n typeof targetVal === 'object' &&\n !Array.isArray(targetVal)\n ) {\n mergeInto(\n targetVal as Record<string, unknown>,\n sourceVal as Record<string, unknown>,\n );\n } else if (Array.isArray(targetVal) && Array.isArray(sourceVal)) {\n target[key] = [...targetVal, ...sourceVal];\n } else {\n target[key] = sourceVal;\n }\n }\n}\n\nconst requestContextStore =\n new nodeAsyncHooks.AsyncLocalStorage<TraceContext>();\n\nexport function runWithRequestContext<T>(ctx: TraceContext, fn: () => T): T {\n return requestContextStore.run(ctx, fn);\n}\n\nexport interface RequestLogger {\n set(fields: Record<string, unknown>): void;\n /** Set snapshot severity without adding a log event or exception. */\n setLevel(level: RequestLogLevel): void;\n info(message: string, fields?: Record<string, unknown>): void;\n warn(message: string, fields?: Record<string, unknown>): void;\n error(error: Error | string, fields?: Record<string, unknown>): void;\n getContext(): Record<string, unknown>;\n emitNow(overrides?: Record<string, unknown>): RequestLogSnapshot;\n fork(\n label: string,\n fn: () => void | Promise<void>,\n options?: ForkOptions,\n ): void;\n}\n\nexport type RequestLogLevel = 'debug' | 'info' | 'warn' | 'error';\n\nexport interface RequestLogSnapshot {\n timestamp: string;\n traceId: string;\n spanId: string;\n correlationId: string;\n context: Record<string, unknown>;\n}\n\nexport interface RequestLoggerOptions {\n /** Callback invoked by emitNow() for manual fan-out. */\n onEmit?: (snapshot: RequestLogSnapshot) => void | Promise<void>;\n}\n\n/**\n * Optional lifecycle hooks for adapters that need to track child loggers\n * spawned by `log.fork()` (e.g. active logger maps in framework integrations).\n */\nexport interface ForkLifecycle {\n /** Called after the child logger is created, before `fn` runs. */\n onChildEnter?: (child: RequestLogger) => void;\n /** Called after the child has finished (emit + drain), success or failure. */\n onChildExit?: (child: RequestLogger) => void;\n}\n\nexport interface ForkOptions {\n lifecycle?: ForkLifecycle;\n}\n\nfunction resolveContext(ctx?: TraceContext): TraceContext {\n if (ctx) return ctx;\n\n const stored = requestContextStore.getStore();\n if (stored) return stored;\n\n const span = otelTrace.getActiveSpan();\n if (!span) {\n throw new Error(\n '[autotel] getRequestLogger() requires an active span or runWithRequestContext(). Wrap your handler with trace() or use runWithRequestContext().',\n );\n }\n return createTraceContext(span);\n}\n\nexport function getRequestLogger(\n ctx?: TraceContext,\n options?: RequestLoggerOptions,\n): RequestLogger {\n const activeContext = resolveContext(ctx);\n const contextState: Record<string, unknown> = {};\n let emitted = false;\n let lastSnapshot: RequestLogSnapshot | null = null;\n let hasExplicitLevel = false;\n\n const addLogEvent = (\n level: 'info' | 'warn' | 'error',\n message: string,\n fields?: Record<string, unknown>,\n ) => {\n const attrs = fields ? flattenToAttributes(fields) : undefined;\n emitCorrelatedEvent(activeContext, `log.${level}`, {\n message,\n ...attrs,\n });\n };\n\n const sealCheck = (method: string, keys: string[]): void => {\n if (emitted) {\n warnPostEmit(\n method,\n `Keys dropped: ${keys.length > 0 ? keys.join(', ') : '(empty)'}.`,\n );\n }\n };\n\n return {\n set(fields: Record<string, unknown>) {\n sealCheck('log.set()', Object.keys(fields));\n if (emitted) return;\n mergeInto(contextState, fields);\n activeContext.setAttributes(flattenToAttributes(fields));\n },\n\n setLevel(level: RequestLogLevel) {\n sealCheck('log.setLevel()', ['autotel.log.level']);\n if (emitted) return;\n hasExplicitLevel = true;\n activeContext.setAttribute('autotel.log.level', level);\n },\n\n info(message: string, fields?: Record<string, unknown>) {\n const keys = fields\n ? ['message', ...Object.keys(fields).filter((k) => k !== 'requestLogs')]\n : ['message'];\n sealCheck('log.info()', keys);\n if (emitted) return;\n addLogEvent('info', message, fields);\n if (fields) {\n mergeInto(contextState, fields);\n activeContext.setAttributes(flattenToAttributes(fields));\n }\n },\n\n warn(message: string, fields?: Record<string, unknown>) {\n const keys = fields\n ? ['message', ...Object.keys(fields).filter((k) => k !== 'requestLogs')]\n : ['message'];\n sealCheck('log.warn()', keys);\n if (emitted) return;\n addLogEvent('warn', message, fields);\n if (!hasExplicitLevel) {\n activeContext.setAttribute('autotel.log.level', 'warn');\n }\n if (fields) {\n mergeInto(contextState, fields);\n activeContext.setAttributes(flattenToAttributes(fields));\n }\n },\n\n error(error: Error | string, fields?: Record<string, unknown>) {\n const keys = fields ? [...Object.keys(fields), 'error'] : ['error'];\n sealCheck('log.error()', keys);\n if (emitted) return;\n const err = typeof error === 'string' ? new Error(error) : error;\n recordStructuredError(activeContext, err);\n addLogEvent('error', err.message, fields);\n\n if (fields) {\n mergeInto(contextState, fields);\n activeContext.setAttributes(flattenToAttributes(fields));\n }\n if (!hasExplicitLevel) {\n activeContext.setAttribute('autotel.log.level', 'error');\n }\n },\n\n getContext() {\n return { ...contextState };\n },\n\n emitNow(overrides?: Record<string, unknown>): RequestLogSnapshot {\n if (emitted) {\n warnPostEmit('log.emitNow()', 'Ignoring duplicate emit.');\n return lastSnapshot as RequestLogSnapshot;\n }\n\n const mergedContext = {\n ...contextState,\n ...overrides,\n };\n const flattened = flattenToAttributes(mergedContext);\n activeContext.setAttributes(flattened);\n\n const snapshot: RequestLogSnapshot = {\n timestamp: new Date().toISOString(),\n traceId: activeContext.traceId,\n spanId: activeContext.spanId,\n correlationId: activeContext.correlationId,\n context: mergedContext,\n };\n\n emitCorrelatedEvent(activeContext, 'log.emit.manual', {\n ...flattened,\n });\n\n if (options?.onEmit) {\n Promise.resolve(options.onEmit(snapshot)).catch((error) => {\n console.warn('[autotel] request logger onEmit failed:', error);\n });\n }\n\n emitted = true;\n lastSnapshot = snapshot;\n return snapshot;\n },\n\n fork(\n label: string,\n fn: () => void | Promise<void>,\n forkOptions?: ForkOptions,\n ): void {\n const parentRequestId = activeContext.correlationId;\n if (typeof parentRequestId !== 'string' || parentRequestId.length === 0) {\n throw new Error(\n '[autotel] log.fork() requires the parent logger to have a correlationId. ' +\n 'Ensure the request was created by autotel middleware.',\n );\n }\n\n const tracer = otelTrace.getTracer('autotel.request-logger');\n const lifecycle = forkOptions?.lifecycle;\n void tracer.startActiveSpan(`request.fork:${label}`, (childSpan) => {\n const childContext: TraceContext = {\n ...createTraceContext(childSpan),\n correlationId: crypto.randomUUID(),\n };\n\n requestContextStore.run(childContext, () => {\n const childLog = getRequestLogger(childContext);\n childLog.set({\n operation: label,\n _parentCorrelationId: parentRequestId,\n });\n\n lifecycle?.onChildEnter?.(childLog);\n\n void Promise.resolve()\n .then(() => fn())\n .then(() => {\n childLog.emitNow();\n })\n .catch((error_: unknown) => {\n const error =\n error_ instanceof Error ? error_ : new Error(String(error_));\n childLog.error(error);\n childLog.emitNow();\n })\n .finally(() => {\n try {\n lifecycle?.onChildExit?.(childLog);\n } catch (hookError) {\n console.warn(\n '[autotel] fork onChildExit hook threw:',\n hookError,\n );\n }\n childSpan.end();\n });\n });\n });\n },\n };\n}\n\n/**\n * Returns `true` when a request-logger context can be resolved without throwing —\n * i.e. an explicit `ctx` was provided, a `runWithRequestContext()` scope is active,\n * or there is an active OpenTelemetry span.\n *\n * Use this to branch on observability availability instead of wrapping\n * {@link getRequestLogger} in try/catch.\n */\nexport function hasRequestContext(ctx?: TraceContext): boolean {\n if (ctx) return true;\n if (requestContextStore.getStore()) return true;\n return otelTrace.getActiveSpan() != null;\n}\n\n/**\n * Like {@link getRequestLogger}, but returns `null` instead of throwing when no\n * request context is available. Intended for best-effort instrumentation where a\n * missing telemetry context must never crash business logic.\n */\nexport function getRequestLoggerSafe(\n ctx?: TraceContext,\n options?: RequestLoggerOptions,\n): RequestLogger | null {\n if (!hasRequestContext(ctx)) return null;\n return getRequestLogger(ctx, options);\n}\n\n/**\n * A no-op {@link RequestLogger} whose methods do nothing. Used as a fallback by\n * best-effort instrumentation so wrapped handlers can run un-instrumented without\n * branching on logger presence.\n */\nexport function createNoopRequestLogger(): RequestLogger {\n const snapshot = (): RequestLogSnapshot => ({\n timestamp: new Date().toISOString(),\n traceId: '',\n spanId: '',\n correlationId: '',\n context: {},\n });\n\n return {\n set() {},\n setLevel() {},\n info() {},\n warn() {},\n error() {},\n getContext() {\n return {};\n },\n emitNow() {\n return snapshot();\n },\n fork(_label, fn) {\n void Promise.resolve().then(() => fn());\n },\n };\n}\n","/**\n * Typed error and audit catalogs.\n *\n * Group related errors into one catalog and get a refactor-safe builder per\n * code, with autocomplete at every call site and typed message parameters.\n *\n * @example\n * ```typescript\n * import { defineErrorCatalog } from 'autotel';\n *\n * export const billing = defineErrorCatalog('billing', {\n * PAYMENT_DECLINED: {\n * status: 402,\n * message: 'Card declined',\n * why: 'The issuer rejected the charge',\n * fix: 'Try a different payment method',\n * },\n * INSUFFICIENT_FUNDS: {\n * status: 402,\n * message: ({ available, required }: { available: number; required: number }) =>\n * `Insufficient funds: $${available} of $${required}`,\n * },\n * });\n *\n * throw billing.PAYMENT_DECLINED({ cause: stripeError });\n * throw billing.INSUFFICIENT_FUNDS({ available: 5, required: 100 });\n *\n * // In a catch block — refactor-safe, no magic strings:\n * if (billing.PAYMENT_DECLINED.match(err)) { ... }\n * ```\n */\n\nimport {\n createStructuredError,\n type StructuredError,\n} from './structured-error';\n\nconst catalogCodeKey = Symbol.for('autotel.catalog.code');\n\n/** Definition of a single error in a catalog. */\nexport interface ErrorCatalogEntry {\n /**\n * Human-readable message. Use a function to interpolate typed parameters;\n * the parameter type flows through to the call site.\n */\n message: string | ((params: never) => string);\n /** HTTP status to surface to clients. */\n status?: number;\n /** Stable error code. Defaults to `${namespace}.${KEY}`. */\n code?: string | number;\n /** Why it happened. A function receives the same params as `message`. */\n why?: string | ((params: never) => string);\n /** What the caller should do next. */\n fix?: string;\n /** Docs or runbook link. */\n link?: string;\n /** Error name. Defaults to the catalog key. */\n name?: string;\n}\n\n/** Per-call options passed alongside (or instead of) typed params. */\nexport interface ErrorBuildOptions {\n cause?: unknown;\n details?: Record<string, unknown>;\n /** Backend-only context. Never serialized to clients. */\n internal?: Record<string, unknown>;\n}\n\ntype ParamsOf<E> = E extends { message: (params: infer P) => string }\n ? P\n : E extends { why: (params: infer P) => string }\n ? P\n : void;\n\ntype BuilderArgs<E extends ErrorCatalogEntry> =\n ParamsOf<E> extends void\n ? [options?: ErrorBuildOptions]\n : [params: ParamsOf<E>, options?: ErrorBuildOptions];\n\n/** A callable error factory produced by {@link defineErrorCatalog}. */\nexport interface ErrorBuilder<E extends ErrorCatalogEntry> {\n (...args: BuilderArgs<E>): StructuredError;\n /** Stable code assigned to every error from this entry. */\n readonly code: string | number;\n /** True when `error` was produced by this catalog entry. */\n match(error: unknown): boolean;\n}\n\nexport type ErrorCatalog<T extends Record<string, ErrorCatalogEntry>> = {\n readonly [K in keyof T]: ErrorBuilder<T[K]>;\n};\n\nfunction readCatalogCode(error: unknown): string | number | undefined {\n if (error === null || typeof error !== 'object') return undefined;\n return (error as Record<symbol, unknown>)[catalogCodeKey] as\n string | number | undefined;\n}\n\n/** True when `error` was produced by any autotel error catalog. */\nexport function isCatalogError(error: unknown): error is StructuredError {\n return readCatalogCode(error) !== undefined;\n}\n\n/** Returns the catalog code of `error`, or `undefined` if it has none. */\nexport function getCatalogCode(error: unknown): string | number | undefined {\n return readCatalogCode(error);\n}\n\n/**\n * Define a typed error catalog. Returns an object whose keys are error\n * builders. Each builder produces a {@link StructuredError} carrying the\n * entry's message, status, code, why, fix, and link.\n */\nexport function defineErrorCatalog<\n const T extends Record<string, ErrorCatalogEntry>,\n>(namespace: string, entries: T): ErrorCatalog<T> {\n const catalog: Record<string, ErrorBuilder<ErrorCatalogEntry>> = {};\n\n for (const [key, entry] of Object.entries(entries) as [\n string,\n ErrorCatalogEntry,\n ][]) {\n const code = entry.code ?? `${namespace}.${key}`;\n const usesParams =\n typeof entry.message === 'function' || typeof entry.why === 'function';\n\n const builder = ((\n paramsOrOptions?: unknown,\n maybeOptions?: ErrorBuildOptions,\n ): StructuredError => {\n const params = usesParams ? paramsOrOptions : undefined;\n const options = (usesParams ? maybeOptions : paramsOrOptions) as\n ErrorBuildOptions | undefined;\n\n const message =\n typeof entry.message === 'function'\n ? (entry.message as (p: unknown) => string)(params)\n : entry.message;\n const why =\n typeof entry.why === 'function'\n ? (entry.why as (p: unknown) => string)(params)\n : entry.why;\n\n const error = createStructuredError({\n message,\n name: entry.name ?? key,\n code,\n ...(entry.status === undefined ? {} : { status: entry.status }),\n ...(why === undefined ? {} : { why }),\n ...(entry.fix === undefined ? {} : { fix: entry.fix }),\n ...(entry.link === undefined ? {} : { link: entry.link }),\n ...(options?.cause === undefined ? {} : { cause: options.cause }),\n ...(options?.details === undefined ? {} : { details: options.details }),\n ...(options?.internal === undefined\n ? {}\n : { internal: options.internal }),\n });\n\n Object.defineProperty(error, catalogCodeKey, {\n value: code,\n enumerable: false,\n writable: false,\n configurable: true,\n });\n\n return error;\n }) as ErrorBuilder<ErrorCatalogEntry>;\n\n Object.defineProperty(builder, 'code', {\n value: code,\n enumerable: true,\n });\n Object.defineProperty(builder, 'match', {\n value: (error: unknown): boolean => readCatalogCode(error) === code,\n enumerable: false,\n });\n\n catalog[key] = builder;\n }\n\n return Object.freeze(catalog) as ErrorCatalog<T>;\n}\n\n/** Severity of an audit action. */\nexport type AuditSeverity = 'info' | 'warn' | 'critical';\n\n/** Definition of a single action in an audit catalog. */\nexport interface AuditCatalogEntry {\n /** Human-readable description. Use a function for typed params. */\n message?: string | ((params: never) => string);\n /** Stable action name. Defaults to `${namespace}.${KEY}`. */\n action?: string;\n /** Severity of the action. Defaults to `'info'`. */\n severity?: AuditSeverity;\n}\n\n/** A resolved audit action descriptor produced by an audit catalog. */\nexport interface AuditAction {\n readonly action: string;\n readonly severity: AuditSeverity;\n readonly message?: string;\n}\n\ntype AuditDescriptorArgs<E extends AuditCatalogEntry> =\n ParamsOf<E> extends void ? [] : [params: ParamsOf<E>];\n\n/** A callable audit-action descriptor produced by {@link defineAuditCatalog}. */\nexport interface AuditDescriptor<E extends AuditCatalogEntry> {\n (...args: AuditDescriptorArgs<E>): AuditAction;\n readonly action: string;\n readonly severity: AuditSeverity;\n}\n\nexport type AuditCatalog<T extends Record<string, AuditCatalogEntry>> = {\n readonly [K in keyof T]: AuditDescriptor<T[K]>;\n};\n\n/**\n * Define a typed audit catalog. Returns typed action descriptors you can pass\n * to `track()` or audit helpers without scattering magic strings.\n */\nexport function defineAuditCatalog<\n const T extends Record<string, AuditCatalogEntry>,\n>(namespace: string, entries: T): AuditCatalog<T> {\n const catalog: Record<string, AuditDescriptor<AuditCatalogEntry>> = {};\n\n for (const [key, entry] of Object.entries(entries) as [\n string,\n AuditCatalogEntry,\n ][]) {\n const action = entry.action ?? `${namespace}.${key}`;\n const severity: AuditSeverity = entry.severity ?? 'info';\n\n const descriptor = ((params?: unknown): AuditAction => {\n const message =\n typeof entry.message === 'function'\n ? (entry.message as (p: unknown) => string)(params)\n : entry.message;\n return Object.freeze({\n action,\n severity,\n ...(message === undefined ? {} : { message }),\n });\n }) as AuditDescriptor<AuditCatalogEntry>;\n\n Object.defineProperty(descriptor, 'action', {\n value: action,\n enumerable: true,\n });\n Object.defineProperty(descriptor, 'severity', {\n value: severity,\n enumerable: true,\n });\n\n catalog[key] = descriptor;\n }\n\n return Object.freeze(catalog) as AuditCatalog<T>;\n}\n","export interface DrainOptions<TContext, TConfig, TPayload = TContext> {\n /** Stable identifier used in error logs. */\n name: string;\n /** Return null to skip draining (e.g. missing API key in dev). */\n resolve: () => TConfig | null | Promise<TConfig | null>;\n /** Transform contexts into payloads. Defaults to identity. */\n transform?: (contexts: TContext[]) => TPayload[];\n /** Transport implementation. */\n send: (payloads: TPayload[], config: TConfig) => Promise<void>;\n}\n\nexport interface HttpDrainRequest {\n url: string;\n headers: Record<string, string>;\n body: string;\n}\n\nexport interface HttpDrainOptions<\n TContext,\n TConfig,\n TPayload = TContext,\n> extends Omit<DrainOptions<TContext, TConfig, TPayload>, 'send'> {\n encode: (payloads: TPayload[], config: TConfig) => HttpDrainRequest | null;\n timeoutMs?: number;\n retries?: number;\n resolveTimeoutMs?: (config: TConfig) => number | undefined;\n resolveRetries?: (config: TConfig) => number | undefined;\n}\n\nconst DEFAULT_TIMEOUT_MS = 5000;\nconst DEFAULT_RETRIES = 2;\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => {\n const t = setTimeout(resolve, ms);\n t.unref?.();\n });\n}\n\nasync function postWithRetry(options: {\n name: string;\n request: HttpDrainRequest;\n timeoutMs: number;\n retries: number;\n}): Promise<void> {\n const { name, request, timeoutMs, retries } = options;\n const attempts = Math.max(1, retries);\n let lastError: unknown;\n\n for (let attempt = 1; attempt <= attempts; attempt++) {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), timeoutMs);\n timeout.unref?.();\n try {\n const response = await fetch(request.url, {\n method: 'POST',\n headers: request.headers,\n body: request.body,\n signal: controller.signal,\n });\n if (!response.ok) {\n throw new Error(\n `[autotel/${name}] HTTP ${response.status} draining ${request.url}`,\n );\n }\n return;\n } catch (error) {\n lastError = error;\n if (attempt < attempts) {\n await delay(100 * attempt);\n }\n } finally {\n clearTimeout(timeout);\n }\n }\n\n throw lastError;\n}\n\nexport function defineDrain<TContext, TConfig, TPayload = TContext>(\n options: DrainOptions<TContext, TConfig, TPayload>,\n): (ctx: TContext | TContext[]) => Promise<void> {\n return async (ctx: TContext | TContext[]) => {\n const contexts = Array.isArray(ctx) ? ctx : [ctx];\n if (contexts.length === 0) return;\n\n const config = await options.resolve();\n if (!config) return;\n\n const payloads = options.transform\n ? options.transform(contexts)\n : (contexts as unknown as TPayload[]);\n\n if (payloads.length === 0) return;\n\n try {\n await options.send(payloads, config);\n } catch (error) {\n console.error(`[autotel/${options.name}] drain failed:`, error);\n }\n };\n}\n\nexport function defineHttpDrain<TContext, TConfig, TPayload = TContext>(\n options: HttpDrainOptions<TContext, TConfig, TPayload>,\n): (ctx: TContext | TContext[]) => Promise<void> {\n return defineDrain<TContext, TConfig, TPayload>({\n name: options.name,\n resolve: options.resolve,\n transform: options.transform,\n send: async (payloads, config) => {\n const request = options.encode(payloads, config);\n if (!request) return;\n const timeoutMs =\n options.resolveTimeoutMs?.(config) ??\n options.timeoutMs ??\n DEFAULT_TIMEOUT_MS;\n const retries =\n options.resolveRetries?.(config) ?? options.retries ?? DEFAULT_RETRIES;\n\n await postWithRetry({\n name: options.name,\n request,\n timeoutMs,\n retries,\n });\n },\n });\n}\n","export interface EnrichContext<TEvent extends Record<string, unknown>> {\n event: TEvent;\n request?: {\n method?: string;\n path?: string;\n requestId?: string;\n };\n response?: {\n status?: number;\n };\n headers?: Record<string, string>;\n}\n\nexport interface EnricherDefinition<\n TEvent extends Record<string, unknown>,\n TValue extends object,\n> {\n /** Stable identifier used in error logs. */\n name: string;\n /** Top-level field to merge computed values into. */\n field: keyof TEvent & string;\n /** Return undefined to skip enrichment. */\n compute: (ctx: EnrichContext<TEvent>) => TValue | undefined;\n}\n\nexport interface EnricherOptions {\n /** Replace existing field value instead of merge. Default false. */\n overwrite?: boolean;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction mergeInto(\n target: Record<string, unknown>,\n source: Record<string, unknown>,\n): void {\n for (const key in source) {\n const sourceVal = source[key];\n if (sourceVal === undefined) continue;\n const targetVal = target[key];\n if (isPlainObject(sourceVal) && isPlainObject(targetVal)) {\n mergeInto(targetVal, sourceVal);\n } else {\n target[key] = sourceVal;\n }\n }\n}\n\nexport function defineEnricher<\n TEvent extends Record<string, unknown>,\n TValue extends object,\n>(\n def: EnricherDefinition<TEvent, TValue>,\n options: EnricherOptions = {},\n): (ctx: EnrichContext<TEvent>) => void {\n return (ctx: EnrichContext<TEvent>) => {\n let computed: TValue | undefined;\n try {\n computed = def.compute(ctx);\n } catch (error) {\n console.error(`[autotel/${def.name}] enrich failed:`, error);\n return;\n }\n\n if (!computed) return;\n\n if (options.overwrite || !isPlainObject(ctx.event[def.field])) {\n (ctx.event as Record<string, unknown>)[def.field] = computed;\n return;\n }\n\n mergeInto(\n ctx.event[def.field] as unknown as Record<string, unknown>,\n computed as unknown as Record<string, unknown>,\n );\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,MAAM,cAAc;CAElB,yBACEA,QAAa,wBAAwB,KAAKA,OAAY;CACxD,mBAAmBA,QAAa,kBAAkB,KAAKA,OAAY;CACnE,WAAWA,QAAa,UAAU,KAAKA,OAAY;CACnD,SAASA,QAAa,QAAQ,KAAKA,OAAY;CAE/C,iBAAiBA,QAAa;CAC9B,oBAAoBA,QAAa;CACjC,YAAYA,QAAa;CACzB,SAASA,QAAa;CACtB,eAAeA,QAAa;CAC5B,gBAAgBA,QAAa;CAC7B,SAASA,QAAa;CACtB,gBAAgBA,QAAa;AAC/B;AAEA,MAAa,QAAqD,OAAO,OACvEC,SACA,WACF;;;;ACfA,SAAgB,YAKd,MACA,QACA,UAAiC,CAAC,GACL;CAC7B,MAAM,aAAa,QAAQ,eAAe,MAAM;CAChD,MAAM,iBAAiB,aACnB;EACE,QAAQ;EACR;EACA,MAAM,SAAS,UAAU;CAC3B,IACA;CAEJ,OAAO;EACL;EACA;EACA,MAAM,SAAkB;GACtB,MAAM,SAAS,OAAO,UAAU,OAAO;GACvC,IAAI,CAAC,OAAO,SACV,MAAM,IAAI,MACR,8BAA8B,KAAK,6BACrC;GAEF,MACE,MACA,OAAO,MACP,iBAAiB,EAAE,QAAQ,eAAe,IAAI,MAChD;EACF;CACF;AACF;;;;AC/CA,MAAM,sBACJ;AAEF,SAAS,aAAa,QAAgB,QAAsB;CAC1D,QAAQ,KACN,aAAa,OAAO,6CAA6C,OAAO,+CAA+C,qBACzH;AACF;AAEA,SAASC,YACP,QACA,QACM;CACN,KAAK,MAAM,OAAO,QAAQ;EACxB,MAAM,YAAY,OAAO;EACzB,IAAI,cAAc,QAAW;EAC7B,MAAM,YAAY,OAAO;EACzB,IACE,cAAc,QACd,OAAO,cAAc,YACrB,CAAC,MAAM,QAAQ,SAAS,KACxB,cAAc,QACd,OAAO,cAAc,YACrB,CAAC,MAAM,QAAQ,SAAS,GAExB,YACE,WACA,SACF;OACK,IAAI,MAAM,QAAQ,SAAS,KAAK,MAAM,QAAQ,SAAS,GAC5D,OAAO,OAAO,CAAC,GAAG,WAAW,GAAG,SAAS;OAEzC,OAAO,OAAO;CAElB;AACF;AAEA,MAAM,sBACJ,IAAI,eAAe,kBAAgC;AAErD,SAAgB,sBAAyB,KAAmB,IAAgB;CAC1E,OAAO,oBAAoB,IAAI,KAAK,EAAE;AACxC;AAgDA,SAAS,eAAe,KAAkC;CACxD,IAAI,KAAK,OAAO;CAEhB,MAAM,SAAS,oBAAoB,SAAS;CAC5C,IAAI,QAAQ,OAAO;CAEnB,MAAM,OAAOC,QAAU,cAAc;CACrC,IAAI,CAAC,MACH,MAAM,IAAI,MACR,iJACF;CAEF,OAAO,mBAAmB,IAAI;AAChC;AAEA,SAAgB,iBACd,KACA,SACe;CACf,MAAM,gBAAgB,eAAe,GAAG;CACxC,MAAM,eAAwC,CAAC;CAC/C,IAAI,UAAU;CACd,IAAI,eAA0C;CAC9C,IAAI,mBAAmB;CAEvB,MAAM,eACJ,OACA,SACA,WACG;EACH,MAAM,QAAQ,SAAS,oBAAoB,MAAM,IAAI;EACrD,oBAAoB,eAAe,OAAO,SAAS;GACjD;GACA,GAAG;EACL,CAAC;CACH;CAEA,MAAM,aAAa,QAAgB,SAAyB;EAC1D,IAAI,SACF,aACE,QACA,iBAAiB,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,UAAU,EACjE;CAEJ;CAEA,OAAO;EACL,IAAI,QAAiC;GACnC,UAAU,aAAa,OAAO,KAAK,MAAM,CAAC;GAC1C,IAAI,SAAS;GACb,YAAU,cAAc,MAAM;GAC9B,cAAc,cAAc,oBAAoB,MAAM,CAAC;EACzD;EAEA,SAAS,OAAwB;GAC/B,UAAU,kBAAkB,CAAC,mBAAmB,CAAC;GACjD,IAAI,SAAS;GACb,mBAAmB;GACnB,cAAc,aAAa,qBAAqB,KAAK;EACvD;EAEA,KAAK,SAAiB,QAAkC;GACtD,MAAM,OAAO,SACT,CAAC,WAAW,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,QAAQ,MAAM,MAAM,aAAa,CAAC,IACrE,CAAC,SAAS;GACd,UAAU,cAAc,IAAI;GAC5B,IAAI,SAAS;GACb,YAAY,QAAQ,SAAS,MAAM;GACnC,IAAI,QAAQ;IACV,YAAU,cAAc,MAAM;IAC9B,cAAc,cAAc,oBAAoB,MAAM,CAAC;GACzD;EACF;EAEA,KAAK,SAAiB,QAAkC;GACtD,MAAM,OAAO,SACT,CAAC,WAAW,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,QAAQ,MAAM,MAAM,aAAa,CAAC,IACrE,CAAC,SAAS;GACd,UAAU,cAAc,IAAI;GAC5B,IAAI,SAAS;GACb,YAAY,QAAQ,SAAS,MAAM;GACnC,IAAI,CAAC,kBACH,cAAc,aAAa,qBAAqB,MAAM;GAExD,IAAI,QAAQ;IACV,YAAU,cAAc,MAAM;IAC9B,cAAc,cAAc,oBAAoB,MAAM,CAAC;GACzD;EACF;EAEA,MAAM,OAAuB,QAAkC;GAC7D,MAAM,OAAO,SAAS,CAAC,GAAG,OAAO,KAAK,MAAM,GAAG,OAAO,IAAI,CAAC,OAAO;GAClE,UAAU,eAAe,IAAI;GAC7B,IAAI,SAAS;GACb,MAAM,MAAM,OAAO,UAAU,WAAW,IAAI,MAAM,KAAK,IAAI;GAC3D,sBAAsB,eAAe,GAAG;GACxC,YAAY,SAAS,IAAI,SAAS,MAAM;GAExC,IAAI,QAAQ;IACV,YAAU,cAAc,MAAM;IAC9B,cAAc,cAAc,oBAAoB,MAAM,CAAC;GACzD;GACA,IAAI,CAAC,kBACH,cAAc,aAAa,qBAAqB,OAAO;EAE3D;EAEA,aAAa;GACX,OAAO,EAAE,GAAG,aAAa;EAC3B;EAEA,QAAQ,WAAyD;GAC/D,IAAI,SAAS;IACX,aAAa,iBAAiB,0BAA0B;IACxD,OAAO;GACT;GAEA,MAAM,gBAAgB;IACpB,GAAG;IACH,GAAG;GACL;GACA,MAAM,YAAY,oBAAoB,aAAa;GACnD,cAAc,cAAc,SAAS;GAErC,MAAM,WAA+B;IACnC,4BAAW,IAAI,KAAK,EAAC,CAAC,YAAY;IAClC,SAAS,cAAc;IACvB,QAAQ,cAAc;IACtB,eAAe,cAAc;IAC7B,SAAS;GACX;GAEA,oBAAoB,eAAe,mBAAmB,EACpD,GAAG,UACL,CAAC;GAED,IAAI,SAAS,QACX,QAAQ,QAAQ,QAAQ,OAAO,QAAQ,CAAC,CAAC,CAAC,OAAO,UAAU;IACzD,QAAQ,KAAK,2CAA2C,KAAK;GAC/D,CAAC;GAGH,UAAU;GACV,eAAe;GACf,OAAO;EACT;EAEA,KACE,OACA,IACA,aACM;GACN,MAAM,kBAAkB,cAAc;GACtC,IAAI,OAAO,oBAAoB,YAAY,gBAAgB,WAAW,GACpE,MAAM,IAAI,MACR,gIAEF;GAGF,MAAM,SAASA,QAAU,UAAU,wBAAwB;GAC3D,MAAM,YAAY,aAAa;GAC/B,AAAK,OAAO,gBAAgB,gBAAgB,UAAU,cAAc;IAClE,MAAM,eAA6B;KACjC,GAAG,mBAAmB,SAAS;KAC/B,eAAe,OAAO,WAAW;IACnC;IAEA,oBAAoB,IAAI,oBAAoB;KAC1C,MAAM,WAAW,iBAAiB,YAAY;KAC9C,SAAS,IAAI;MACX,WAAW;MACX,sBAAsB;KACxB,CAAC;KAED,WAAW,eAAe,QAAQ;KAElC,AAAK,QAAQ,QAAQ,CAAC,CACnB,WAAW,GAAG,CAAC,CAAC,CAChB,WAAW;MACV,SAAS,QAAQ;KACnB,CAAC,CAAC,CACD,OAAO,WAAoB;MAC1B,MAAM,QACJ,kBAAkB,QAAQ,SAAS,IAAI,MAAM,OAAO,MAAM,CAAC;MAC7D,SAAS,MAAM,KAAK;MACpB,SAAS,QAAQ;KACnB,CAAC,CAAC,CACD,cAAc;MACb,IAAI;OACF,WAAW,cAAc,QAAQ;MACnC,SAAS,WAAW;OAClB,QAAQ,KACN,0CACA,SACF;MACF;MACA,UAAU,IAAI;KAChB,CAAC;IACL,CAAC;GACH,CAAC;EACH;CACF;AACF;;;;;;;;;AAUA,SAAgB,kBAAkB,KAA6B;CAC7D,IAAI,KAAK,OAAO;CAChB,IAAI,oBAAoB,SAAS,GAAG,OAAO;CAC3C,OAAOA,QAAU,cAAc,KAAK;AACtC;;;;;;AAOA,SAAgB,qBACd,KACA,SACsB;CACtB,IAAI,CAAC,kBAAkB,GAAG,GAAG,OAAO;CACpC,OAAO,iBAAiB,KAAK,OAAO;AACtC;;;;;;AAOA,SAAgB,0BAAyC;CACvD,MAAM,kBAAsC;EAC1C,4BAAW,IAAI,KAAK,EAAC,CAAC,YAAY;EAClC,SAAS;EACT,QAAQ;EACR,eAAe;EACf,SAAS,CAAC;CACZ;CAEA,OAAO;EACL,MAAM,CAAC;EACP,WAAW,CAAC;EACZ,OAAO,CAAC;EACR,OAAO,CAAC;EACR,QAAQ,CAAC;EACT,aAAa;GACX,OAAO,CAAC;EACV;EACA,UAAU;GACR,OAAO,SAAS;EAClB;EACA,KAAK,QAAQ,IAAI;GACf,AAAK,QAAQ,QAAQ,CAAC,CAAC,WAAW,GAAG,CAAC;EACxC;CACF;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpUA,MAAM,iBAAiB,OAAO,IAAI,sBAAsB;AAuDxD,SAAS,gBAAgB,OAA6C;CACpE,IAAI,UAAU,QAAQ,OAAO,UAAU,UAAU,OAAO;CACxD,OAAQ,MAAkC;AAE5C;;AAGA,SAAgB,eAAe,OAA0C;CACvE,OAAO,gBAAgB,KAAK,MAAM;AACpC;;AAGA,SAAgB,eAAe,OAA6C;CAC1E,OAAO,gBAAgB,KAAK;AAC9B;;;;;;AAOA,SAAgB,mBAEd,WAAmB,SAA6B;CAChD,MAAM,UAA2D,CAAC;CAElE,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,OAAO,GAG5C;EACH,MAAM,OAAO,MAAM,QAAQ,GAAG,UAAU,GAAG;EAC3C,MAAM,aACJ,OAAO,MAAM,YAAY,cAAc,OAAO,MAAM,QAAQ;EAE9D,MAAM,YACJ,iBACA,iBACoB;GACpB,MAAM,SAAS,aAAa,kBAAkB;GAC9C,MAAM,UAAW,aAAa,eAAe;GAG7C,MAAM,UACJ,OAAO,MAAM,YAAY,aACpB,MAAM,QAAmC,MAAM,IAChD,MAAM;GACZ,MAAM,MACJ,OAAO,MAAM,QAAQ,aAChB,MAAM,IAA+B,MAAM,IAC5C,MAAM;GAEZ,MAAM,QAAQ,sBAAsB;IAClC;IACA,MAAM,MAAM,QAAQ;IACpB;IACA,GAAI,MAAM,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,MAAM,OAAO;IAC7D,GAAI,QAAQ,SAAY,CAAC,IAAI,EAAE,IAAI;IACnC,GAAI,MAAM,QAAQ,SAAY,CAAC,IAAI,EAAE,KAAK,MAAM,IAAI;IACpD,GAAI,MAAM,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,MAAM,KAAK;IACvD,GAAI,SAAS,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,QAAQ,MAAM;IAC/D,GAAI,SAAS,YAAY,SAAY,CAAC,IAAI,EAAE,SAAS,QAAQ,QAAQ;IACrE,GAAI,SAAS,aAAa,SACtB,CAAC,IACD,EAAE,UAAU,QAAQ,SAAS;GACnC,CAAC;GAED,OAAO,eAAe,OAAO,gBAAgB;IAC3C,OAAO;IACP,YAAY;IACZ,UAAU;IACV,cAAc;GAChB,CAAC;GAED,OAAO;EACT;EAEA,OAAO,eAAe,SAAS,QAAQ;GACrC,OAAO;GACP,YAAY;EACd,CAAC;EACD,OAAO,eAAe,SAAS,SAAS;GACtC,QAAQ,UAA4B,gBAAgB,KAAK,MAAM;GAC/D,YAAY;EACd,CAAC;EAED,QAAQ,OAAO;CACjB;CAEA,OAAO,OAAO,OAAO,OAAO;AAC9B;;;;;AAwCA,SAAgB,mBAEd,WAAmB,SAA6B;CAChD,MAAM,UAA8D,CAAC;CAErE,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,OAAO,GAG5C;EACH,MAAM,SAAS,MAAM,UAAU,GAAG,UAAU,GAAG;EAC/C,MAAM,WAA0B,MAAM,YAAY;EAElD,MAAM,eAAe,WAAkC;GACrD,MAAM,UACJ,OAAO,MAAM,YAAY,aACpB,MAAM,QAAmC,MAAM,IAChD,MAAM;GACZ,OAAO,OAAO,OAAO;IACnB;IACA;IACA,GAAI,YAAY,SAAY,CAAC,IAAI,EAAE,QAAQ;GAC7C,CAAC;EACH;EAEA,OAAO,eAAe,YAAY,UAAU;GAC1C,OAAO;GACP,YAAY;EACd,CAAC;EACD,OAAO,eAAe,YAAY,YAAY;GAC5C,OAAO;GACP,YAAY;EACd,CAAC;EAED,QAAQ,OAAO;CACjB;CAEA,OAAO,OAAO,OAAO,OAAO;AAC9B;;;;ACrOA,MAAM,qBAAqB;AAC3B,MAAM,kBAAkB;AAExB,SAAS,MAAM,IAA2B;CACxC,OAAO,IAAI,SAAS,YAAY;EAE9B,AADU,WAAW,SAAS,EAC9B,CAAC,CAAC,QAAQ;CACZ,CAAC;AACH;AAEA,eAAe,cAAc,SAKX;CAChB,MAAM,EAAE,MAAM,SAAS,WAAW,YAAY;CAC9C,MAAM,WAAW,KAAK,IAAI,GAAG,OAAO;CACpC,IAAI;CAEJ,KAAK,IAAI,UAAU,GAAG,WAAW,UAAU,WAAW;EACpD,MAAM,aAAa,IAAI,gBAAgB;EACvC,MAAM,UAAU,iBAAiB,WAAW,MAAM,GAAG,SAAS;EAC9D,QAAQ,QAAQ;EAChB,IAAI;GACF,MAAM,WAAW,MAAM,MAAM,QAAQ,KAAK;IACxC,QAAQ;IACR,SAAS,QAAQ;IACjB,MAAM,QAAQ;IACd,QAAQ,WAAW;GACrB,CAAC;GACD,IAAI,CAAC,SAAS,IACZ,MAAM,IAAI,MACR,YAAY,KAAK,SAAS,SAAS,OAAO,YAAY,QAAQ,KAChE;GAEF;EACF,SAAS,OAAO;GACd,YAAY;GACZ,IAAI,UAAU,UACZ,MAAM,MAAM,MAAM,OAAO;EAE7B,UAAU;GACR,aAAa,OAAO;EACtB;CACF;CAEA,MAAM;AACR;AAEA,SAAgB,YACd,SAC+C;CAC/C,OAAO,OAAO,QAA+B;EAC3C,MAAM,WAAW,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,GAAG;EAChD,IAAI,SAAS,WAAW,GAAG;EAE3B,MAAM,SAAS,MAAM,QAAQ,QAAQ;EACrC,IAAI,CAAC,QAAQ;EAEb,MAAM,WAAW,QAAQ,YACrB,QAAQ,UAAU,QAAQ,IACzB;EAEL,IAAI,SAAS,WAAW,GAAG;EAE3B,IAAI;GACF,MAAM,QAAQ,KAAK,UAAU,MAAM;EACrC,SAAS,OAAO;GACd,QAAQ,MAAM,YAAY,QAAQ,KAAK,kBAAkB,KAAK;EAChE;CACF;AACF;AAEA,SAAgB,gBACd,SAC+C;CAC/C,OAAO,YAAyC;EAC9C,MAAM,QAAQ;EACd,SAAS,QAAQ;EACjB,WAAW,QAAQ;EACnB,MAAM,OAAO,UAAU,WAAW;GAChC,MAAM,UAAU,QAAQ,OAAO,UAAU,MAAM;GAC/C,IAAI,CAAC,SAAS;GACd,MAAM,YACJ,QAAQ,mBAAmB,MAAM,KACjC,QAAQ,aACR;GACF,MAAM,UACJ,QAAQ,iBAAiB,MAAM,KAAK,QAAQ,WAAW;GAEzD,MAAM,cAAc;IAClB,MAAM,QAAQ;IACd;IACA;IACA;GACF,CAAC;EACH;CACF,CAAC;AACH;;;;AClGA,SAAS,cAAc,OAAkD;CACvE,OAAO,UAAU,QAAQ,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEA,SAAS,UACP,QACA,QACM;CACN,KAAK,MAAM,OAAO,QAAQ;EACxB,MAAM,YAAY,OAAO;EACzB,IAAI,cAAc,QAAW;EAC7B,MAAM,YAAY,OAAO;EACzB,IAAI,cAAc,SAAS,KAAK,cAAc,SAAS,GACrD,UAAU,WAAW,SAAS;OAE9B,OAAO,OAAO;CAElB;AACF;AAEA,SAAgB,eAId,KACA,UAA2B,CAAC,GACU;CACtC,QAAQ,QAA+B;EACrC,IAAI;EACJ,IAAI;GACF,WAAW,IAAI,QAAQ,GAAG;EAC5B,SAAS,OAAO;GACd,QAAQ,MAAM,YAAY,IAAI,KAAK,mBAAmB,KAAK;GAC3D;EACF;EAEA,IAAI,CAAC,UAAU;EAEf,IAAI,QAAQ,aAAa,CAAC,cAAc,IAAI,MAAM,IAAI,MAAM,GAAG;GAC7D,AAAC,IAAI,MAAkC,IAAI,SAAS;GACpD;EACF;EAEA,UACE,IAAI,MAAM,IAAI,QACd,QACF;CACF;AACF"}