autotel 3.6.0 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (602) hide show
  1. package/dist/attribute-redacting-processor-DtTS9xxh.d.cts +175 -0
  2. package/dist/attribute-redacting-processor-DtTS9xxh.d.cts.map +1 -0
  3. package/dist/attribute-redacting-processor-DtTS9xxh.d.ts +175 -0
  4. package/dist/attribute-redacting-processor-DtTS9xxh.d.ts.map +1 -0
  5. package/dist/attribute-redacting-processor.cjs +374 -33
  6. package/dist/attribute-redacting-processor.cjs.map +1 -1
  7. package/dist/attribute-redacting-processor.d.cts +2 -207
  8. package/dist/attribute-redacting-processor.d.ts +2 -207
  9. package/dist/attribute-redacting-processor.js +368 -2
  10. package/dist/attribute-redacting-processor.js.map +1 -1
  11. package/dist/attributes-D3etyRVc.cjs +713 -0
  12. package/dist/attributes-D3etyRVc.cjs.map +1 -0
  13. package/dist/attributes-ksn4HVbd.js +600 -0
  14. package/dist/attributes-ksn4HVbd.js.map +1 -0
  15. package/dist/attributes.cjs +21 -85
  16. package/dist/attributes.d.cts +2 -20
  17. package/dist/attributes.d.ts +2 -20
  18. package/dist/attributes.js +3 -5
  19. package/dist/auto.cjs +50 -28
  20. package/dist/auto.cjs.map +1 -1
  21. package/dist/auto.d.cts +1 -2
  22. package/dist/auto.d.ts +1 -2
  23. package/dist/auto.js +49 -23
  24. package/dist/auto.js.map +1 -1
  25. package/dist/business-baggage.cjs +357 -13
  26. package/dist/business-baggage.cjs.map +1 -1
  27. package/dist/business-baggage.d.cts +106 -139
  28. package/dist/business-baggage.d.cts.map +1 -0
  29. package/dist/business-baggage.d.ts +106 -139
  30. package/dist/business-baggage.d.ts.map +1 -0
  31. package/dist/business-baggage.js +357 -2
  32. package/dist/business-baggage.js.map +1 -1
  33. package/dist/canonical-log-line-processor--RlFDHhm.cjs +377 -0
  34. package/dist/canonical-log-line-processor--RlFDHhm.cjs.map +1 -0
  35. package/dist/canonical-log-line-processor-BcRuAdRk.d.ts +147 -0
  36. package/dist/canonical-log-line-processor-BcRuAdRk.d.ts.map +1 -0
  37. package/dist/canonical-log-line-processor-DbBQT5vY.js +366 -0
  38. package/dist/canonical-log-line-processor-DbBQT5vY.js.map +1 -0
  39. package/dist/canonical-log-line-processor-xvjMgtpF.d.cts +147 -0
  40. package/dist/canonical-log-line-processor-xvjMgtpF.d.cts.map +1 -0
  41. package/dist/config.cjs +118 -22
  42. package/dist/config.cjs.map +1 -1
  43. package/dist/config.d.cts +33 -45
  44. package/dist/config.d.cts.map +1 -0
  45. package/dist/config.d.ts +33 -45
  46. package/dist/config.d.ts.map +1 -0
  47. package/dist/config.js +116 -3
  48. package/dist/config.js.map +1 -1
  49. package/dist/correlated-events-Bzh5y-UB.js +28 -0
  50. package/dist/correlated-events-Bzh5y-UB.js.map +1 -0
  51. package/dist/correlated-events-kSwLo3mi.cjs +34 -0
  52. package/dist/correlated-events-kSwLo3mi.cjs.map +1 -0
  53. package/dist/correlation-id.cjs +11 -54
  54. package/dist/correlation-id.d.cts +6 -5
  55. package/dist/correlation-id.d.cts.map +1 -0
  56. package/dist/correlation-id.d.ts +6 -5
  57. package/dist/correlation-id.d.ts.map +1 -0
  58. package/dist/correlation-id.js +3 -17
  59. package/dist/db.cjs +244 -209
  60. package/dist/db.cjs.map +1 -1
  61. package/dist/db.d.cts +28 -26
  62. package/dist/db.d.cts.map +1 -0
  63. package/dist/db.d.ts +28 -26
  64. package/dist/db.d.ts.map +1 -0
  65. package/dist/db.js +243 -207
  66. package/dist/db.js.map +1 -1
  67. package/dist/decorators.cjs +39 -66
  68. package/dist/decorators.cjs.map +1 -1
  69. package/dist/decorators.d.cts +10 -37
  70. package/dist/decorators.d.cts.map +1 -0
  71. package/dist/decorators.d.ts +10 -37
  72. package/dist/decorators.d.ts.map +1 -0
  73. package/dist/decorators.js +38 -64
  74. package/dist/decorators.js.map +1 -1
  75. package/dist/define-event-CreknLm3.d.ts +25 -0
  76. package/dist/define-event-CreknLm3.d.ts.map +1 -0
  77. package/dist/define-event-HZRizPwz.d.cts +25 -0
  78. package/dist/define-event-HZRizPwz.d.cts.map +1 -0
  79. package/dist/drain-pipeline.cjs +111 -9
  80. package/dist/drain-pipeline.cjs.map +1 -1
  81. package/dist/drain-pipeline.d.cts +27 -32
  82. package/dist/drain-pipeline.d.cts.map +1 -0
  83. package/dist/drain-pipeline.d.ts +27 -32
  84. package/dist/drain-pipeline.d.ts.map +1 -0
  85. package/dist/drain-pipeline.js +111 -2
  86. package/dist/drain-pipeline.js.map +1 -1
  87. package/dist/enrichers.cjs +59 -66
  88. package/dist/enrichers.cjs.map +1 -1
  89. package/dist/enrichers.d.cts +15 -13
  90. package/dist/enrichers.d.cts.map +1 -0
  91. package/dist/enrichers.d.ts +15 -13
  92. package/dist/enrichers.d.ts.map +1 -0
  93. package/dist/enrichers.js +58 -65
  94. package/dist/enrichers.js.map +1 -1
  95. package/dist/event-Dlqr4ZNL.cjs +778 -0
  96. package/dist/event-Dlqr4ZNL.cjs.map +1 -0
  97. package/dist/event-_58ryBjh.js +761 -0
  98. package/dist/event-_58ryBjh.js.map +1 -0
  99. package/dist/event-subscriber-D1XLkPzi.d.cts +223 -0
  100. package/dist/event-subscriber-D1XLkPzi.d.cts.map +1 -0
  101. package/dist/event-subscriber-D1XLkPzi.d.ts +223 -0
  102. package/dist/event-subscriber-D1XLkPzi.d.ts.map +1 -0
  103. package/dist/event-subscriber.cjs +0 -6
  104. package/dist/event-subscriber.d.cts +2 -221
  105. package/dist/event-subscriber.d.ts +2 -221
  106. package/dist/event-subscriber.js +1 -3
  107. package/dist/event-testing-BqRnI0z4.d.cts +106 -0
  108. package/dist/event-testing-BqRnI0z4.d.cts.map +1 -0
  109. package/dist/event-testing-CfFs3to2.d.ts +106 -0
  110. package/dist/event-testing-CfFs3to2.d.ts.map +1 -0
  111. package/dist/event-testing.cjs +93 -17
  112. package/dist/event-testing.cjs.map +1 -1
  113. package/dist/event-testing.d.cts +2 -110
  114. package/dist/event-testing.d.ts +2 -110
  115. package/dist/event-testing.js +91 -2
  116. package/dist/event-testing.js.map +1 -1
  117. package/dist/event.cjs +5 -37
  118. package/dist/event.d.cts +295 -340
  119. package/dist/event.d.cts.map +1 -0
  120. package/dist/event.d.ts +295 -340
  121. package/dist/event.d.ts.map +1 -0
  122. package/dist/event.js +3 -21
  123. package/dist/exporters.cjs +12 -16
  124. package/dist/exporters.d.cts +86 -111
  125. package/dist/exporters.d.cts.map +1 -0
  126. package/dist/exporters.d.ts +86 -111
  127. package/dist/exporters.d.ts.map +1 -0
  128. package/dist/exporters.js +4 -4
  129. package/dist/filtering-span-processor-B8R8B7Uk.d.cts +59 -0
  130. package/dist/filtering-span-processor-B8R8B7Uk.d.cts.map +1 -0
  131. package/dist/filtering-span-processor-B8R8B7Uk.d.ts +59 -0
  132. package/dist/filtering-span-processor-B8R8B7Uk.d.ts.map +1 -0
  133. package/dist/filtering-span-processor.cjs +49 -9
  134. package/dist/filtering-span-processor.cjs.map +1 -1
  135. package/dist/filtering-span-processor.d.cts +2 -80
  136. package/dist/filtering-span-processor.d.ts +2 -80
  137. package/dist/filtering-span-processor.js +49 -2
  138. package/dist/filtering-span-processor.js.map +1 -1
  139. package/dist/functional-BGkT8J-h.js +1265 -0
  140. package/dist/functional-BGkT8J-h.js.map +1 -0
  141. package/dist/functional-C4CzoVrX.cjs +1312 -0
  142. package/dist/functional-C4CzoVrX.cjs.map +1 -0
  143. package/dist/functional.cjs +11 -57
  144. package/dist/functional.d.cts +96 -97
  145. package/dist/functional.d.cts.map +1 -0
  146. package/dist/functional.d.ts +96 -97
  147. package/dist/functional.d.ts.map +1 -0
  148. package/dist/functional.js +3 -20
  149. package/dist/http.cjs +276 -176
  150. package/dist/http.cjs.map +1 -1
  151. package/dist/http.d.cts +17 -37
  152. package/dist/http.d.cts.map +1 -0
  153. package/dist/http.d.ts +17 -37
  154. package/dist/http.d.ts.map +1 -0
  155. package/dist/http.js +275 -174
  156. package/dist/http.js.map +1 -1
  157. package/dist/index-CX0aG1Uh.d.ts +708 -0
  158. package/dist/index-CX0aG1Uh.d.ts.map +1 -0
  159. package/dist/index-DIWZFKUS.d.cts +708 -0
  160. package/dist/index-DIWZFKUS.d.cts.map +1 -0
  161. package/dist/index.cjs +1049 -1172
  162. package/dist/index.cjs.map +1 -1
  163. package/dist/index.d.cts +401 -551
  164. package/dist/index.d.cts.map +1 -0
  165. package/dist/index.d.ts +401 -551
  166. package/dist/index.d.ts.map +1 -0
  167. package/dist/index.js +912 -714
  168. package/dist/index.js.map +1 -1
  169. package/dist/init-CNp-ee80.d.cts +1157 -0
  170. package/dist/init-CNp-ee80.d.cts.map +1 -0
  171. package/dist/init-Ch6t7MNI.js +1015 -0
  172. package/dist/init-Ch6t7MNI.js.map +1 -0
  173. package/dist/init-DJQOdVlN.d.ts +1157 -0
  174. package/dist/init-DJQOdVlN.d.ts.map +1 -0
  175. package/dist/init-DvapOXCc.cjs +1092 -0
  176. package/dist/init-DvapOXCc.cjs.map +1 -0
  177. package/dist/instrumentation.cjs +159 -185
  178. package/dist/instrumentation.cjs.map +1 -1
  179. package/dist/instrumentation.d.cts +42 -40
  180. package/dist/instrumentation.d.cts.map +1 -0
  181. package/dist/instrumentation.d.ts +42 -40
  182. package/dist/instrumentation.d.ts.map +1 -0
  183. package/dist/instrumentation.js +158 -183
  184. package/dist/instrumentation.js.map +1 -1
  185. package/dist/logger-BauSUhUv.d.cts +313 -0
  186. package/dist/logger-BauSUhUv.d.cts.map +1 -0
  187. package/dist/logger-BauSUhUv.d.ts +313 -0
  188. package/dist/logger-BauSUhUv.d.ts.map +1 -0
  189. package/dist/logger.cjs +225 -25
  190. package/dist/logger.cjs.map +1 -1
  191. package/dist/logger.d.cts +2 -348
  192. package/dist/logger.d.ts +2 -348
  193. package/dist/logger.js +204 -4
  194. package/dist/logger.js.map +1 -1
  195. package/dist/messaging-adapters.cjs +292 -187
  196. package/dist/messaging-adapters.cjs.map +1 -1
  197. package/dist/messaging-adapters.d.cts +28 -66
  198. package/dist/messaging-adapters.d.cts.map +1 -0
  199. package/dist/messaging-adapters.d.ts +28 -66
  200. package/dist/messaging-adapters.d.ts.map +1 -0
  201. package/dist/messaging-adapters.js +291 -185
  202. package/dist/messaging-adapters.js.map +1 -1
  203. package/dist/messaging-testing.cjs +306 -372
  204. package/dist/messaging-testing.cjs.map +1 -1
  205. package/dist/messaging-testing.d.cts +194 -223
  206. package/dist/messaging-testing.d.cts.map +1 -0
  207. package/dist/messaging-testing.d.ts +194 -223
  208. package/dist/messaging-testing.d.ts.map +1 -0
  209. package/dist/messaging-testing.js +305 -371
  210. package/dist/messaging-testing.js.map +1 -1
  211. package/dist/messaging.cjs +757 -36
  212. package/dist/messaging.cjs.map +1 -1
  213. package/dist/messaging.d.cts +603 -644
  214. package/dist/messaging.d.cts.map +1 -0
  215. package/dist/messaging.d.ts +603 -644
  216. package/dist/messaging.d.ts.map +1 -0
  217. package/dist/messaging.js +756 -21
  218. package/dist/messaging.js.map +1 -1
  219. package/dist/metric-helpers.cjs +27 -27
  220. package/dist/metric-helpers.cjs.map +1 -1
  221. package/dist/metric-helpers.d.cts +4 -2
  222. package/dist/metric-helpers.d.cts.map +1 -0
  223. package/dist/metric-helpers.d.ts +4 -2
  224. package/dist/metric-helpers.d.ts.map +1 -0
  225. package/dist/metric-helpers.js +24 -4
  226. package/dist/metric-helpers.js.map +1 -1
  227. package/dist/metric-testing-DXdK3-Q3.d.ts +106 -0
  228. package/dist/metric-testing-DXdK3-Q3.d.ts.map +1 -0
  229. package/dist/metric-testing-MxvzChDp.d.cts +106 -0
  230. package/dist/metric-testing-MxvzChDp.d.cts.map +1 -0
  231. package/dist/metric-testing.cjs +93 -17
  232. package/dist/metric-testing.cjs.map +1 -1
  233. package/dist/metric-testing.d.cts +2 -110
  234. package/dist/metric-testing.d.ts +2 -110
  235. package/dist/metric-testing.js +91 -2
  236. package/dist/metric-testing.js.map +1 -1
  237. package/dist/metric.cjs +306 -22
  238. package/dist/metric.cjs.map +1 -1
  239. package/dist/metric.d.cts +170 -198
  240. package/dist/metric.d.cts.map +1 -0
  241. package/dist/metric.d.ts +170 -198
  242. package/dist/metric.d.ts.map +1 -0
  243. package/dist/metric.js +277 -7
  244. package/dist/metric.js.map +1 -1
  245. package/dist/node-require-DF5QBX6z.cjs +99 -0
  246. package/dist/node-require-DF5QBX6z.cjs.map +1 -0
  247. package/dist/node-require-Db1oDpLj.js +88 -0
  248. package/dist/node-require-Db1oDpLj.js.map +1 -0
  249. package/dist/operation-context-C-2hmmtP.js +59 -0
  250. package/dist/operation-context-C-2hmmtP.js.map +1 -0
  251. package/dist/operation-context-n4_obUwq.cjs +70 -0
  252. package/dist/operation-context-n4_obUwq.cjs.map +1 -0
  253. package/dist/parse-error.cjs +55 -9
  254. package/dist/parse-error.cjs.map +1 -1
  255. package/dist/parse-error.d.cts +12 -10
  256. package/dist/parse-error.d.cts.map +1 -0
  257. package/dist/parse-error.d.ts +12 -10
  258. package/dist/parse-error.d.ts.map +1 -0
  259. package/dist/parse-error.js +55 -2
  260. package/dist/parse-error.js.map +1 -1
  261. package/dist/pretty-console-exporter-CMzlrRNg.cjs +232 -0
  262. package/dist/pretty-console-exporter-CMzlrRNg.cjs.map +1 -0
  263. package/dist/pretty-console-exporter-DqKl_q9z.js +227 -0
  264. package/dist/pretty-console-exporter-DqKl_q9z.js.map +1 -0
  265. package/dist/processors.cjs +13 -17
  266. package/dist/processors.d.cts +3 -171
  267. package/dist/processors.d.ts +3 -171
  268. package/dist/processors.js +4 -4
  269. package/dist/register.cjs +35 -6
  270. package/dist/register.cjs.map +1 -1
  271. package/dist/register.d.cts +1 -2
  272. package/dist/register.d.ts +1 -2
  273. package/dist/register.js +36 -3
  274. package/dist/register.js.map +1 -1
  275. package/dist/registry-DfXA3R1L.js +184 -0
  276. package/dist/registry-DfXA3R1L.js.map +1 -0
  277. package/dist/registry-JZg2J3RZ.cjs +334 -0
  278. package/dist/registry-JZg2J3RZ.cjs.map +1 -0
  279. package/dist/sampling-CR0Va1VB.d.ts +351 -0
  280. package/dist/sampling-CR0Va1VB.d.ts.map +1 -0
  281. package/dist/sampling-DfYhDJij.d.cts +351 -0
  282. package/dist/sampling-DfYhDJij.d.cts.map +1 -0
  283. package/dist/sampling.cjs +452 -60
  284. package/dist/sampling.cjs.map +1 -1
  285. package/dist/sampling.d.cts +2 -379
  286. package/dist/sampling.d.ts +2 -379
  287. package/dist/sampling.js +441 -5
  288. package/dist/sampling.js.map +1 -1
  289. package/dist/security-schema.cjs +65 -46
  290. package/dist/security-schema.cjs.map +1 -1
  291. package/dist/security-schema.d.cts +23 -26
  292. package/dist/security-schema.d.cts.map +1 -0
  293. package/dist/security-schema.d.ts +23 -26
  294. package/dist/security-schema.d.ts.map +1 -0
  295. package/dist/security-schema.js +64 -45
  296. package/dist/security-schema.js.map +1 -1
  297. package/dist/semantic-conventions-FhSxv-bK.d.cts +32 -0
  298. package/dist/semantic-conventions-FhSxv-bK.d.cts.map +1 -0
  299. package/dist/semantic-conventions-FhSxv-bK.d.ts +32 -0
  300. package/dist/semantic-conventions-FhSxv-bK.d.ts.map +1 -0
  301. package/dist/semantic-conventions.cjs +15 -26
  302. package/dist/semantic-conventions.cjs.map +1 -1
  303. package/dist/semantic-conventions.d.cts +2 -29
  304. package/dist/semantic-conventions.d.ts +2 -29
  305. package/dist/semantic-conventions.js +12 -3
  306. package/dist/semantic-conventions.js.map +1 -1
  307. package/dist/semantic-helpers.cjs +440 -39
  308. package/dist/semantic-helpers.cjs.map +1 -1
  309. package/dist/semantic-helpers.d.cts +38 -45
  310. package/dist/semantic-helpers.d.cts.map +1 -0
  311. package/dist/semantic-helpers.d.ts +38 -45
  312. package/dist/semantic-helpers.d.ts.map +1 -0
  313. package/dist/semantic-helpers.js +438 -20
  314. package/dist/semantic-helpers.js.map +1 -1
  315. package/dist/span-name-normalizer-8ZOGJuwv.d.cts +70 -0
  316. package/dist/span-name-normalizer-8ZOGJuwv.d.cts.map +1 -0
  317. package/dist/span-name-normalizer-8ZOGJuwv.d.ts +70 -0
  318. package/dist/span-name-normalizer-8ZOGJuwv.d.ts.map +1 -0
  319. package/dist/span-name-normalizer.cjs +95 -17
  320. package/dist/span-name-normalizer.cjs.map +1 -1
  321. package/dist/span-name-normalizer.d.cts +2 -94
  322. package/dist/span-name-normalizer.d.ts +2 -94
  323. package/dist/span-name-normalizer.js +93 -2
  324. package/dist/span-name-normalizer.js.map +1 -1
  325. package/dist/stable-hash-BNTMrmdB.cjs +28 -0
  326. package/dist/stable-hash-BNTMrmdB.cjs.map +1 -0
  327. package/dist/stable-hash-Cg5cT34Q.js +23 -0
  328. package/dist/stable-hash-Cg5cT34Q.js.map +1 -0
  329. package/dist/structured-error-9--cxBay.js +143 -0
  330. package/dist/structured-error-9--cxBay.js.map +1 -0
  331. package/dist/structured-error-CHg7DoIQ.cjs +178 -0
  332. package/dist/structured-error-CHg7DoIQ.cjs.map +1 -0
  333. package/dist/tail-sampling-processor.cjs +26 -13
  334. package/dist/tail-sampling-processor.cjs.map +1 -1
  335. package/dist/tail-sampling-processor.d.cts +11 -23
  336. package/dist/tail-sampling-processor.d.cts.map +1 -0
  337. package/dist/tail-sampling-processor.d.ts +11 -23
  338. package/dist/tail-sampling-processor.d.ts.map +1 -0
  339. package/dist/tail-sampling-processor.js +27 -6
  340. package/dist/tail-sampling-processor.js.map +1 -1
  341. package/dist/test-span-collector.cjs +70 -72
  342. package/dist/test-span-collector.cjs.map +1 -1
  343. package/dist/test-span-collector.d.cts +25 -43
  344. package/dist/test-span-collector.d.cts.map +1 -0
  345. package/dist/test-span-collector.d.ts +25 -43
  346. package/dist/test-span-collector.d.ts.map +1 -0
  347. package/dist/test-span-collector.js +69 -70
  348. package/dist/test-span-collector.js.map +1 -1
  349. package/dist/testing.cjs +389 -278
  350. package/dist/testing.cjs.map +1 -1
  351. package/dist/testing.d.cts +39 -62
  352. package/dist/testing.d.cts.map +1 -0
  353. package/dist/testing.d.ts +39 -62
  354. package/dist/testing.d.ts.map +1 -0
  355. package/dist/testing.js +386 -265
  356. package/dist/testing.js.map +1 -1
  357. package/dist/trace-context-Cijqoi6e.d.cts +212 -0
  358. package/dist/trace-context-Cijqoi6e.d.cts.map +1 -0
  359. package/dist/trace-context-Cijqoi6e.d.ts +212 -0
  360. package/dist/trace-context-Cijqoi6e.d.ts.map +1 -0
  361. package/dist/trace-helpers.cjs +634 -54
  362. package/dist/trace-helpers.cjs.map +1 -1
  363. package/dist/trace-helpers.d.cts +17 -49
  364. package/dist/trace-helpers.d.cts.map +1 -0
  365. package/dist/trace-helpers.d.ts +17 -49
  366. package/dist/trace-helpers.d.ts.map +1 -0
  367. package/dist/trace-helpers.js +624 -3
  368. package/dist/trace-helpers.js.map +1 -1
  369. package/dist/tracer-provider.cjs +227 -16
  370. package/dist/tracer-provider.cjs.map +1 -1
  371. package/dist/tracer-provider.d.cts +5 -4
  372. package/dist/tracer-provider.d.cts.map +1 -0
  373. package/dist/tracer-provider.d.ts +5 -4
  374. package/dist/tracer-provider.d.ts.map +1 -0
  375. package/dist/tracer-provider.js +227 -2
  376. package/dist/tracer-provider.js.map +1 -1
  377. package/dist/track-3HY4NGV-.cjs +1212 -0
  378. package/dist/track-3HY4NGV-.cjs.map +1 -0
  379. package/dist/track-nsKVy-pj.js +1111 -0
  380. package/dist/track-nsKVy-pj.js.map +1 -0
  381. package/dist/validate.cjs +178 -115
  382. package/dist/validate.cjs.map +1 -1
  383. package/dist/validate.d.cts +40 -64
  384. package/dist/validate.d.cts.map +1 -0
  385. package/dist/validate.d.ts +40 -64
  386. package/dist/validate.d.ts.map +1 -0
  387. package/dist/validate.js +177 -113
  388. package/dist/validate.js.map +1 -1
  389. package/dist/validation-attributes.cjs +42 -17
  390. package/dist/validation-attributes.cjs.map +1 -1
  391. package/dist/validation-attributes.d.cts +13 -20
  392. package/dist/validation-attributes.d.cts.map +1 -0
  393. package/dist/validation-attributes.d.ts +13 -20
  394. package/dist/validation-attributes.d.ts.map +1 -0
  395. package/dist/validation-attributes.js +40 -2
  396. package/dist/validation-attributes.js.map +1 -1
  397. package/dist/webhook.cjs +286 -256
  398. package/dist/webhook.cjs.map +1 -1
  399. package/dist/webhook.d.cts +157 -192
  400. package/dist/webhook.d.cts.map +1 -0
  401. package/dist/webhook.d.ts +157 -192
  402. package/dist/webhook.d.ts.map +1 -0
  403. package/dist/webhook.js +285 -254
  404. package/dist/webhook.js.map +1 -1
  405. package/dist/workflow-distributed.cjs +498 -412
  406. package/dist/workflow-distributed.cjs.map +1 -1
  407. package/dist/workflow-distributed.d.cts +163 -173
  408. package/dist/workflow-distributed.d.cts.map +1 -0
  409. package/dist/workflow-distributed.d.ts +163 -173
  410. package/dist/workflow-distributed.d.ts.map +1 -0
  411. package/dist/workflow-distributed.js +497 -410
  412. package/dist/workflow-distributed.js.map +1 -1
  413. package/dist/workflow.cjs +405 -40
  414. package/dist/workflow.cjs.map +1 -1
  415. package/dist/workflow.d.cts +78 -131
  416. package/dist/workflow.d.cts.map +1 -0
  417. package/dist/workflow.d.ts +78 -131
  418. package/dist/workflow.d.ts.map +1 -0
  419. package/dist/workflow.js +403 -21
  420. package/dist/workflow.js.map +1 -1
  421. package/dist/yaml-config-B3dQ82GR.cjs +272 -0
  422. package/dist/yaml-config-B3dQ82GR.cjs.map +1 -0
  423. package/dist/yaml-config.cjs +5 -24
  424. package/dist/yaml-config.d.cts +30 -64
  425. package/dist/yaml-config.d.cts.map +1 -0
  426. package/dist/yaml-config.d.ts +30 -64
  427. package/dist/yaml-config.d.ts.map +1 -0
  428. package/dist/yaml-config.js +226 -7
  429. package/dist/yaml-config.js.map +1 -1
  430. package/package.json +4 -4
  431. package/src/index.ts +3 -0
  432. package/src/request-logger.test.ts +53 -1
  433. package/src/request-logger.ts +58 -0
  434. package/src/validate.test.ts +3 -1
  435. package/src/validate.ts +9 -3
  436. package/dist/attributes.cjs.map +0 -1
  437. package/dist/attributes.js.map +0 -1
  438. package/dist/chunk-2ZKEORFN.cjs +0 -14
  439. package/dist/chunk-2ZKEORFN.cjs.map +0 -1
  440. package/dist/chunk-3QXBFGKP.js +0 -344
  441. package/dist/chunk-3QXBFGKP.js.map +0 -1
  442. package/dist/chunk-454CH4OV.js +0 -744
  443. package/dist/chunk-454CH4OV.js.map +0 -1
  444. package/dist/chunk-4A53YIAX.js +0 -180
  445. package/dist/chunk-4A53YIAX.js.map +0 -1
  446. package/dist/chunk-4IFSYQVX.js +0 -337
  447. package/dist/chunk-4IFSYQVX.js.map +0 -1
  448. package/dist/chunk-4P6ZOARG.cjs +0 -33
  449. package/dist/chunk-4P6ZOARG.cjs.map +0 -1
  450. package/dist/chunk-55ER2KD5.js +0 -228
  451. package/dist/chunk-55ER2KD5.js.map +0 -1
  452. package/dist/chunk-5ZN622AO.js +0 -73
  453. package/dist/chunk-5ZN622AO.js.map +0 -1
  454. package/dist/chunk-66YJ66GG.js +0 -1021
  455. package/dist/chunk-66YJ66GG.js.map +0 -1
  456. package/dist/chunk-6S5RUKU3.cjs +0 -347
  457. package/dist/chunk-6S5RUKU3.cjs.map +0 -1
  458. package/dist/chunk-6UQRVUN3.js +0 -222
  459. package/dist/chunk-6UQRVUN3.js.map +0 -1
  460. package/dist/chunk-7552UTQW.js +0 -11
  461. package/dist/chunk-7552UTQW.js.map +0 -1
  462. package/dist/chunk-7EQ4G4SI.cjs +0 -146
  463. package/dist/chunk-7EQ4G4SI.cjs.map +0 -1
  464. package/dist/chunk-7SAWIN74.js +0 -285
  465. package/dist/chunk-7SAWIN74.js.map +0 -1
  466. package/dist/chunk-A4E5AQFK.js +0 -30
  467. package/dist/chunk-A4E5AQFK.js.map +0 -1
  468. package/dist/chunk-ALPYR2GC.js +0 -1061
  469. package/dist/chunk-ALPYR2GC.js.map +0 -1
  470. package/dist/chunk-B7SWBE4P.cjs +0 -799
  471. package/dist/chunk-B7SWBE4P.cjs.map +0 -1
  472. package/dist/chunk-BZHG5IZ4.js +0 -73
  473. package/dist/chunk-BZHG5IZ4.js.map +0 -1
  474. package/dist/chunk-CEAQK2QY.cjs +0 -32
  475. package/dist/chunk-CEAQK2QY.cjs.map +0 -1
  476. package/dist/chunk-CMHVQR6P.js +0 -170
  477. package/dist/chunk-CMHVQR6P.js.map +0 -1
  478. package/dist/chunk-CU6IDACR.cjs +0 -224
  479. package/dist/chunk-CU6IDACR.cjs.map +0 -1
  480. package/dist/chunk-D4TM63S3.js +0 -795
  481. package/dist/chunk-D4TM63S3.js.map +0 -1
  482. package/dist/chunk-DCEDJQGG.js +0 -28
  483. package/dist/chunk-DCEDJQGG.js.map +0 -1
  484. package/dist/chunk-DPSA4QLA.js +0 -344
  485. package/dist/chunk-DPSA4QLA.js.map +0 -1
  486. package/dist/chunk-E6TERL5O.cjs +0 -23
  487. package/dist/chunk-E6TERL5O.cjs.map +0 -1
  488. package/dist/chunk-EE6CPXKH.cjs +0 -164
  489. package/dist/chunk-EE6CPXKH.cjs.map +0 -1
  490. package/dist/chunk-EOFB7XCL.cjs +0 -837
  491. package/dist/chunk-EOFB7XCL.cjs.map +0 -1
  492. package/dist/chunk-ESLWRGAG.cjs +0 -92
  493. package/dist/chunk-ESLWRGAG.cjs.map +0 -1
  494. package/dist/chunk-ESMHTKLJ.cjs +0 -206
  495. package/dist/chunk-ESMHTKLJ.cjs.map +0 -1
  496. package/dist/chunk-FMTHVSYY.cjs +0 -1039
  497. package/dist/chunk-FMTHVSYY.cjs.map +0 -1
  498. package/dist/chunk-FU6R566Y.cjs +0 -236
  499. package/dist/chunk-FU6R566Y.cjs.map +0 -1
  500. package/dist/chunk-GYR5K654.js +0 -91
  501. package/dist/chunk-GYR5K654.js.map +0 -1
  502. package/dist/chunk-HA2WBOGQ.js +0 -57
  503. package/dist/chunk-HA2WBOGQ.js.map +0 -1
  504. package/dist/chunk-HT5JQKN2.js +0 -118
  505. package/dist/chunk-HT5JQKN2.js.map +0 -1
  506. package/dist/chunk-INJD3G4K.cjs +0 -340
  507. package/dist/chunk-INJD3G4K.cjs.map +0 -1
  508. package/dist/chunk-IOYFAFHJ.cjs +0 -95
  509. package/dist/chunk-IOYFAFHJ.cjs.map +0 -1
  510. package/dist/chunk-J5QENANM.js +0 -87
  511. package/dist/chunk-J5QENANM.js.map +0 -1
  512. package/dist/chunk-J7VGRIAJ.js +0 -64
  513. package/dist/chunk-J7VGRIAJ.js.map +0 -1
  514. package/dist/chunk-KFOHQK7X.js +0 -144
  515. package/dist/chunk-KFOHQK7X.js.map +0 -1
  516. package/dist/chunk-KIL5CUN6.js +0 -31
  517. package/dist/chunk-KIL5CUN6.js.map +0 -1
  518. package/dist/chunk-KYXZS3EA.cjs +0 -100
  519. package/dist/chunk-KYXZS3EA.cjs.map +0 -1
  520. package/dist/chunk-LITNXTTT.js +0 -3
  521. package/dist/chunk-LITNXTTT.js.map +0 -1
  522. package/dist/chunk-LVIPBYFE.js +0 -157
  523. package/dist/chunk-LVIPBYFE.js.map +0 -1
  524. package/dist/chunk-M3LFHHTN.cjs +0 -764
  525. package/dist/chunk-M3LFHHTN.cjs.map +0 -1
  526. package/dist/chunk-N25JDZSC.js +0 -95
  527. package/dist/chunk-N25JDZSC.js.map +0 -1
  528. package/dist/chunk-NEIB3TLD.cjs +0 -360
  529. package/dist/chunk-NEIB3TLD.cjs.map +0 -1
  530. package/dist/chunk-NENU7E6V.cjs +0 -344
  531. package/dist/chunk-NENU7E6V.cjs.map +0 -1
  532. package/dist/chunk-NVAI5CCN.cjs +0 -39
  533. package/dist/chunk-NVAI5CCN.cjs.map +0 -1
  534. package/dist/chunk-NZ72VDNY.cjs +0 -4
  535. package/dist/chunk-NZ72VDNY.cjs.map +0 -1
  536. package/dist/chunk-OPPXYVEZ.cjs +0 -131
  537. package/dist/chunk-OPPXYVEZ.cjs.map +0 -1
  538. package/dist/chunk-Q4EULJQY.js +0 -35
  539. package/dist/chunk-Q4EULJQY.js.map +0 -1
  540. package/dist/chunk-QF7ARNUM.js +0 -339
  541. package/dist/chunk-QF7ARNUM.js.map +0 -1
  542. package/dist/chunk-QWW3E3JM.cjs +0 -178
  543. package/dist/chunk-QWW3E3JM.cjs.map +0 -1
  544. package/dist/chunk-R7QYGZUP.cjs +0 -1075
  545. package/dist/chunk-R7QYGZUP.cjs.map +0 -1
  546. package/dist/chunk-RUPKBKUF.js +0 -352
  547. package/dist/chunk-RUPKBKUF.js.map +0 -1
  548. package/dist/chunk-SEO6NAQT.js +0 -14
  549. package/dist/chunk-SEO6NAQT.js.map +0 -1
  550. package/dist/chunk-T4B5LB6E.cjs +0 -66
  551. package/dist/chunk-T4B5LB6E.cjs.map +0 -1
  552. package/dist/chunk-T5WRA76K.cjs +0 -32
  553. package/dist/chunk-T5WRA76K.cjs.map +0 -1
  554. package/dist/chunk-T7JO2TCP.js +0 -1233
  555. package/dist/chunk-T7JO2TCP.js.map +0 -1
  556. package/dist/chunk-TC5ZPWM4.cjs +0 -289
  557. package/dist/chunk-TC5ZPWM4.cjs.map +0 -1
  558. package/dist/chunk-TQ5UWA7S.js +0 -26
  559. package/dist/chunk-TQ5UWA7S.js.map +0 -1
  560. package/dist/chunk-UIKYE2QZ.js +0 -833
  561. package/dist/chunk-UIKYE2QZ.js.map +0 -1
  562. package/dist/chunk-UNPLAVE7.js +0 -21
  563. package/dist/chunk-UNPLAVE7.js.map +0 -1
  564. package/dist/chunk-UY3UYPBZ.cjs +0 -77
  565. package/dist/chunk-UY3UYPBZ.cjs.map +0 -1
  566. package/dist/chunk-V7UBMJAB.cjs +0 -1242
  567. package/dist/chunk-V7UBMJAB.cjs.map +0 -1
  568. package/dist/chunk-VH77IPJN.cjs +0 -358
  569. package/dist/chunk-VH77IPJN.cjs.map +0 -1
  570. package/dist/chunk-VQTCQKHQ.cjs +0 -17
  571. package/dist/chunk-VQTCQKHQ.cjs.map +0 -1
  572. package/dist/chunk-WGWSHJ2N.js +0 -38
  573. package/dist/chunk-WGWSHJ2N.js.map +0 -1
  574. package/dist/chunk-WJH6IYU2.cjs +0 -32
  575. package/dist/chunk-WJH6IYU2.cjs.map +0 -1
  576. package/dist/chunk-YREV3LGG.cjs +0 -61
  577. package/dist/chunk-YREV3LGG.cjs.map +0 -1
  578. package/dist/chunk-YTXEZ4SD.cjs +0 -77
  579. package/dist/chunk-YTXEZ4SD.cjs.map +0 -1
  580. package/dist/chunk-ZNMBW67B.cjs +0 -40
  581. package/dist/chunk-ZNMBW67B.cjs.map +0 -1
  582. package/dist/correlation-id.cjs.map +0 -1
  583. package/dist/correlation-id.js.map +0 -1
  584. package/dist/define-event-BL6Li7CM.d.ts +0 -23
  585. package/dist/define-event-ClP3T1Jx.d.cts +0 -23
  586. package/dist/event-subscriber.cjs.map +0 -1
  587. package/dist/event-subscriber.js.map +0 -1
  588. package/dist/event.cjs.map +0 -1
  589. package/dist/event.js.map +0 -1
  590. package/dist/exporters.cjs.map +0 -1
  591. package/dist/exporters.js.map +0 -1
  592. package/dist/functional.cjs.map +0 -1
  593. package/dist/functional.js.map +0 -1
  594. package/dist/init-DIowiiCh.d.ts +0 -1167
  595. package/dist/init-j-A1zI16.d.cts +0 -1167
  596. package/dist/processors.cjs.map +0 -1
  597. package/dist/processors.js.map +0 -1
  598. package/dist/trace-context-DbGKd1Rn.d.cts +0 -213
  599. package/dist/trace-context-DbGKd1Rn.d.ts +0 -213
  600. package/dist/utils-BahBCFtJ.d.cts +0 -712
  601. package/dist/utils-CLKwaUlG.d.ts +0 -712
  602. package/dist/yaml-config.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"metric.js"}
1
+ {"version":3,"file":"metric.js","names":[],"sources":["../src/metric.ts"],"sourcesContent":["/**\n * Metrics API for OpenTelemetry\n *\n * Track business metrics for OpenTelemetry (Prometheus/Grafana).\n * For business people who think in metrics.\n *\n * @example Track business metrics\n * ```typescript\n * const metrics = new Metric('checkout')\n *\n * // Track events as metrics\n * metrics.trackEvent('order.completed', {\n * amount: 99.99,\n * currency: 'USD'\n * })\n *\n * // Track conversion funnels\n * metrics.trackFunnelStep('checkout', 'started', { cartValue: 99.99 })\n * metrics.trackFunnelStep('checkout', 'completed', { cartValue: 99.99 })\n *\n * // Track outcomes\n * metrics.trackOutcome('payment.process', 'success', { amount: 99.99 })\n * metrics.trackOutcome('payment.process', 'failure', { error: 'insufficient_funds' })\n *\n * // Track values\n * metrics.trackValue('revenue', 149.99, { currency: 'USD' })\n * ```\n */\n\nimport {\n type Counter,\n type Histogram,\n type Attributes,\n} from '@opentelemetry/api';\nimport { getConfig } from './config';\nimport { type Logger } from './logger';\nimport {\n type EventAttributes,\n type FunnelStatus,\n type OutcomeStatus,\n} from './event-subscriber';\nimport { type MetricsCollector } from './metric-testing';\n\n// Re-export types for convenience\nexport type {\n EventAttributes,\n FunnelStatus,\n OutcomeStatus,\n} from './event-subscriber';\n\n/**\n * Metrics class for tracking business metrics in OpenTelemetry\n *\n * Track critical business indicators such as:\n * - User events (signups, purchases, feature usage) as metrics\n * - Conversion funnels (signup → activation → purchase)\n * - Business outcomes (success/failure rates)\n * - Value metrics (revenue, counts, etc.)\n *\n * All metrics are sent to OpenTelemetry (OTLP/Prometheus/Grafana).\n */\n/**\n * Metric configuration for customizing metric names and descriptions\n */\nexport interface MetricConfig {\n /** Metric name (e.g., 'metrics.events' or 'custom.events') */\n name?: string;\n /** Metric description */\n description?: string;\n /** Metric unit (default: '1') */\n unit?: string;\n}\n\n/**\n * Metrics options\n */\nexport interface MetricsOptions {\n /** Optional logger for audit trail */\n logger?: Logger;\n /** Optional collector for testing (captures metrics in memory) */\n collector?: MetricsCollector;\n\n /**\n * Namespace for metrics (default: 'metrics')\n * Results in metrics like: {serviceName}.{namespace}.events\n */\n namespace?: string;\n\n /**\n * Custom metric configurations\n * Override metric names, descriptions, and units\n */\n metrics?: {\n events?: MetricConfig;\n funnel?: MetricConfig;\n outcomes?: MetricConfig;\n value?: MetricConfig;\n };\n}\n\nexport class Metric {\n private serviceName: string;\n private eventCounter: Counter;\n private funnelCounter: Counter;\n private outcomeCounter: Counter;\n private valueHistogram: Histogram;\n private logger?: Logger;\n private collector?: MetricsCollector;\n\n /**\n * Create a new Metrics instance\n *\n * @param serviceName - Service name for metric namespacing\n * @param options - Optional configuration (logger, collector, namespace, metrics)\n *\n * @example Basic usage (default 'metrics' namespace)\n * ```typescript\n * const metrics = new Metric('checkout');\n * // Creates: checkout.metrics.events, checkout.metrics.funnel, etc.\n * ```\n *\n * @example Custom namespace\n * ```typescript\n * const metrics = new Metric('api', { namespace: 'business' });\n * // Creates: api.business.events, api.business.funnel, etc.\n * ```\n *\n * @example Custom metric names and descriptions\n * ```typescript\n * const metrics = new Metric('payments', {\n * metrics: {\n * outcomes: {\n * name: 'payments.transactions',\n * description: 'Payment transaction outcomes',\n * unit: 'transactions'\n * },\n * value: {\n * name: 'payments.revenue',\n * description: 'Payment revenue in USD',\n * unit: 'USD'\n * }\n * }\n * });\n * ```\n */\n constructor(serviceName: string, options: MetricsOptions = {}) {\n this.serviceName = serviceName;\n this.logger = options.logger;\n this.collector = options.collector;\n\n const config = getConfig();\n const meter = config.meter;\n\n // Default namespace and metric configurations\n const namespace = options.namespace || 'metrics';\n const metricsConfig = options.metrics || {};\n\n // Event counter configuration\n const eventsConfig = metricsConfig.events || {};\n this.eventCounter = meter.createCounter(\n eventsConfig.name || `${serviceName}.${namespace}.events`,\n {\n description: eventsConfig.description || 'Count of business events',\n unit: eventsConfig.unit || '1',\n },\n );\n\n // Funnel counter configuration\n const funnelConfig = metricsConfig.funnel || {};\n this.funnelCounter = meter.createCounter(\n funnelConfig.name || `${serviceName}.${namespace}.funnel`,\n {\n description: funnelConfig.description || 'Conversion funnel tracking',\n unit: funnelConfig.unit || '1',\n },\n );\n\n // Outcome counter configuration\n const outcomesConfig = metricsConfig.outcomes || {};\n this.outcomeCounter = meter.createCounter(\n outcomesConfig.name || `${serviceName}.${namespace}.outcomes`,\n {\n description:\n outcomesConfig.description || 'Outcome tracking (success/failure)',\n unit: outcomesConfig.unit || '1',\n },\n );\n\n // Value histogram configuration\n const valueConfig = metricsConfig.value || {};\n this.valueHistogram = meter.createHistogram(\n valueConfig.name || `${serviceName}.${namespace}.value`,\n {\n description:\n valueConfig.description || 'Value metrics (revenue, counts, etc.)',\n unit: valueConfig.unit || '1',\n },\n );\n }\n\n /**\n * Track a business event as a metric\n *\n * Use this for tracking user actions, business events, product usage as metrics:\n * - \"user.signup\"\n * - \"order.completed\"\n * - \"feature.used\"\n *\n * @example\n * ```typescript\n * // Track user signup as metric\n * metrics.trackEvent('user.signup', {\n * userId: '123',\n * plan: 'pro'\n * })\n *\n * // Track order as metric\n * metrics.trackEvent('order.completed', {\n * orderId: 'ord_123',\n * amount: 99.99\n * })\n * ```\n */\n trackEvent(eventName: string, attributes?: EventAttributes): void {\n const attrs: Attributes = {\n service: this.serviceName,\n event: eventName,\n ...attributes,\n };\n\n this.eventCounter.add(1, attrs);\n\n this.logger?.info(\n {\n event: eventName,\n attributes,\n },\n 'Metric event tracked',\n );\n\n // Record for testing\n this.collector?.recordEvent({\n event: eventName,\n attributes,\n service: this.serviceName,\n timestamp: Date.now(),\n });\n }\n\n /**\n * Track conversion funnel steps as metrics\n *\n * Monitor where users drop off in multi-step processes.\n *\n * @example\n * ```typescript\n * // Track signup funnel\n * metrics.trackFunnelStep('signup', 'started', { userId: '123' })\n * metrics.trackFunnelStep('signup', 'email_verified', { userId: '123' })\n * metrics.trackFunnelStep('signup', 'completed', { userId: '123' })\n *\n * // Track checkout flow\n * metrics.trackFunnelStep('checkout', 'started', { cartValue: 99.99 })\n * metrics.trackFunnelStep('checkout', 'payment_info', { cartValue: 99.99 })\n * metrics.trackFunnelStep('checkout', 'completed', { cartValue: 99.99 })\n * ```\n */\n trackFunnelStep(\n funnelName: string,\n status: FunnelStatus,\n attributes?: EventAttributes,\n ): void {\n const attrs: Attributes = {\n service: this.serviceName,\n funnel: funnelName,\n status,\n ...attributes,\n };\n\n this.funnelCounter.add(1, attrs);\n\n this.logger?.info(\n {\n funnel: funnelName,\n status,\n attributes,\n },\n 'Funnel step tracked',\n );\n\n // Record for testing\n this.collector?.recordFunnelStep({\n funnel: funnelName,\n status,\n attributes,\n service: this.serviceName,\n timestamp: Date.now(),\n });\n }\n\n /**\n * Track outcomes (success/failure/partial) as metrics\n *\n * Monitor success rates of critical operations.\n *\n * @example\n * ```typescript\n * // Track email delivery\n * metrics.trackOutcome('email.delivery', 'success', {\n * recipientType: 'user',\n * emailType: 'welcome'\n * })\n *\n * metrics.trackOutcome('email.delivery', 'failure', {\n * recipientType: 'user',\n * errorCode: 'invalid_email'\n * })\n *\n * // Track payment processing\n * metrics.trackOutcome('payment.process', 'success', { amount: 99.99 })\n * metrics.trackOutcome('payment.process', 'failure', { error: 'insufficient_funds' })\n * ```\n */\n trackOutcome(\n operationName: string,\n status: OutcomeStatus,\n attributes?: EventAttributes,\n ): void {\n const attrs: Attributes = {\n service: this.serviceName,\n operation: operationName,\n status,\n ...attributes,\n };\n\n this.outcomeCounter.add(1, attrs);\n\n this.logger?.info(\n {\n operation: operationName,\n status,\n attributes,\n },\n 'Outcome tracked',\n );\n\n // Record for testing\n this.collector?.recordOutcome({\n operation: operationName,\n status,\n attributes,\n service: this.serviceName,\n timestamp: Date.now(),\n });\n }\n\n /**\n * Track value metrics\n *\n * Record numerical values like revenue, transaction amounts,\n * item counts, processing times, engagement scores, etc.\n *\n * @example\n * ```typescript\n * // Track revenue\n * metrics.trackValue('order.revenue', 149.99, {\n * currency: 'USD',\n * productCategory: 'electronics'\n * })\n *\n * // Track items per cart\n * metrics.trackValue('cart.item_count', 5, {\n * userId: '123'\n * })\n *\n * // Track processing time\n * metrics.trackValue('api.response_time', 250, {\n * unit: 'ms',\n * endpoint: '/api/checkout'\n * })\n * ```\n */\n trackValue(\n metricName: string,\n value: number,\n attributes?: EventAttributes,\n ): void {\n const attrs: Attributes = {\n service: this.serviceName,\n metric: metricName,\n ...attributes,\n };\n\n this.valueHistogram.record(value, attrs);\n\n this.logger?.debug(\n {\n metric: metricName,\n value,\n attributes,\n },\n 'Value metric tracked',\n );\n\n // Record for testing\n this.collector?.recordValue({\n metric: metricName,\n value,\n attributes,\n service: this.serviceName,\n timestamp: Date.now(),\n });\n }\n}\n\n/**\n * Global metrics instances (singleton pattern)\n */\nconst metricsInstances = new Map<string, Metric>();\n\n/**\n * Get or create a Metrics instance for a service\n *\n * @param serviceName - Service name for metric namespacing\n * @param logger - Optional logger\n * @returns Metrics instance\n *\n * @example\n * ```typescript\n * const metrics = getMetrics('checkout')\n * metrics.trackEvent('order.completed', { orderId: '123' })\n * ```\n */\nexport function getMetrics(serviceName: string, logger?: Logger): Metric {\n if (!metricsInstances.has(serviceName)) {\n metricsInstances.set(serviceName, new Metric(serviceName, { logger }));\n }\n return metricsInstances.get(serviceName)!;\n}\n\n/**\n * Reset all metrics instances (mainly for testing)\n */\nexport function resetMetrics(): void {\n metricsInstances.clear();\n}\n"],"mappings":";;;;AAoGA,IAAa,SAAb,MAAoB;CAClB,AAAQ;CACR,AAAQ;CACR,AAAQ;CACR,AAAQ;CACR,AAAQ;CACR,AAAQ;CACR,AAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCR,YAAY,aAAqB,UAA0B,CAAC,GAAG;EAC7D,KAAK,cAAc;EACnB,KAAK,SAAS,QAAQ;EACtB,KAAK,YAAY,QAAQ;EAGzB,MAAM,QADS,UACI,CAAC,CAAC;EAGrB,MAAM,YAAY,QAAQ,aAAa;EACvC,MAAM,gBAAgB,QAAQ,WAAW,CAAC;EAG1C,MAAM,eAAe,cAAc,UAAU,CAAC;EAC9C,KAAK,eAAe,MAAM,cACxB,aAAa,QAAQ,GAAG,YAAY,GAAG,UAAU,UACjD;GACE,aAAa,aAAa,eAAe;GACzC,MAAM,aAAa,QAAQ;EAC7B,CACF;EAGA,MAAM,eAAe,cAAc,UAAU,CAAC;EAC9C,KAAK,gBAAgB,MAAM,cACzB,aAAa,QAAQ,GAAG,YAAY,GAAG,UAAU,UACjD;GACE,aAAa,aAAa,eAAe;GACzC,MAAM,aAAa,QAAQ;EAC7B,CACF;EAGA,MAAM,iBAAiB,cAAc,YAAY,CAAC;EAClD,KAAK,iBAAiB,MAAM,cAC1B,eAAe,QAAQ,GAAG,YAAY,GAAG,UAAU,YACnD;GACE,aACE,eAAe,eAAe;GAChC,MAAM,eAAe,QAAQ;EAC/B,CACF;EAGA,MAAM,cAAc,cAAc,SAAS,CAAC;EAC5C,KAAK,iBAAiB,MAAM,gBAC1B,YAAY,QAAQ,GAAG,YAAY,GAAG,UAAU,SAChD;GACE,aACE,YAAY,eAAe;GAC7B,MAAM,YAAY,QAAQ;EAC5B,CACF;CACF;;;;;;;;;;;;;;;;;;;;;;;;CAyBA,WAAW,WAAmB,YAAoC;EAChE,MAAM,QAAoB;GACxB,SAAS,KAAK;GACd,OAAO;GACP,GAAG;EACL;EAEA,KAAK,aAAa,IAAI,GAAG,KAAK;EAE9B,KAAK,QAAQ,KACX;GACE,OAAO;GACP;EACF,GACA,sBACF;EAGA,KAAK,WAAW,YAAY;GAC1B,OAAO;GACP;GACA,SAAS,KAAK;GACd,WAAW,KAAK,IAAI;EACtB,CAAC;CACH;;;;;;;;;;;;;;;;;;;CAoBA,gBACE,YACA,QACA,YACM;EACN,MAAM,QAAoB;GACxB,SAAS,KAAK;GACd,QAAQ;GACR;GACA,GAAG;EACL;EAEA,KAAK,cAAc,IAAI,GAAG,KAAK;EAE/B,KAAK,QAAQ,KACX;GACE,QAAQ;GACR;GACA;EACF,GACA,qBACF;EAGA,KAAK,WAAW,iBAAiB;GAC/B,QAAQ;GACR;GACA;GACA,SAAS,KAAK;GACd,WAAW,KAAK,IAAI;EACtB,CAAC;CACH;;;;;;;;;;;;;;;;;;;;;;;;CAyBA,aACE,eACA,QACA,YACM;EACN,MAAM,QAAoB;GACxB,SAAS,KAAK;GACd,WAAW;GACX;GACA,GAAG;EACL;EAEA,KAAK,eAAe,IAAI,GAAG,KAAK;EAEhC,KAAK,QAAQ,KACX;GACE,WAAW;GACX;GACA;EACF,GACA,iBACF;EAGA,KAAK,WAAW,cAAc;GAC5B,WAAW;GACX;GACA;GACA,SAAS,KAAK;GACd,WAAW,KAAK,IAAI;EACtB,CAAC;CACH;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BA,WACE,YACA,OACA,YACM;EACN,MAAM,QAAoB;GACxB,SAAS,KAAK;GACd,QAAQ;GACR,GAAG;EACL;EAEA,KAAK,eAAe,OAAO,OAAO,KAAK;EAEvC,KAAK,QAAQ,MACX;GACE,QAAQ;GACR;GACA;EACF,GACA,sBACF;EAGA,KAAK,WAAW,YAAY;GAC1B,QAAQ;GACR;GACA;GACA,SAAS,KAAK;GACd,WAAW,KAAK,IAAI;EACtB,CAAC;CACH;AACF;;;;AAKA,MAAM,mCAAmB,IAAI,IAAoB;;;;;;;;;;;;;;AAejD,SAAgB,WAAW,aAAqB,QAAyB;CACvE,IAAI,CAAC,iBAAiB,IAAI,WAAW,GACnC,iBAAiB,IAAI,aAAa,IAAI,OAAO,aAAa,EAAE,OAAO,CAAC,CAAC;CAEvE,OAAO,iBAAiB,IAAI,WAAW;AACzC;;;;AAKA,SAAgB,eAAqB;CACnC,iBAAiB,MAAM;AACzB"}
@@ -0,0 +1,99 @@
1
+ let node_module = require("node:module");
2
+
3
+ //#region src/node-require.ts
4
+ /**
5
+ * Cross-format require() helper for CJS and ESM compatibility
6
+ *
7
+ * Provides a synchronous `require()` function that works in both:
8
+ * - CJS builds: Uses native `require`
9
+ * - ESM builds: Uses `createRequire(import.meta.url)`
10
+ *
11
+ * This allows optional peer dependencies and dynamic module loading
12
+ * to work synchronously in both module formats.
13
+ */
14
+ let cachedRequire;
15
+ function getNodeRequire() {
16
+ if (cachedRequire) return cachedRequire;
17
+ const base = typeof __filename === "string" ? __filename : require("url").pathToFileURL(__filename).href;
18
+ if (!base) throw Object.assign(/* @__PURE__ */ new Error("node require() is unavailable in this runtime"), { code: "MODULE_NOT_FOUND" });
19
+ cachedRequire = (0, node_module.createRequire)(base);
20
+ return cachedRequire;
21
+ }
22
+ /**
23
+ * Synchronously require a module (works in both CJS and ESM)
24
+ *
25
+ * @param id - Module ID to require
26
+ * @returns The required module
27
+ * @throws Error if module cannot be loaded
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * import { safeRequire } from './node-require';
32
+ *
33
+ * const traceloop = safeRequire('@traceloop/node-server-sdk');
34
+ * if (traceloop) {
35
+ * traceloop.initialize({ ... });
36
+ * }
37
+ * ```
38
+ */
39
+ function safeRequire(id) {
40
+ try {
41
+ return getNodeRequire()(id);
42
+ } catch (error) {
43
+ if (error && error.code === "MODULE_NOT_FOUND") return;
44
+ throw error;
45
+ }
46
+ }
47
+ /**
48
+ * Synchronously require a module (throws if not found)
49
+ *
50
+ * Use this when the module is required (not optional).
51
+ *
52
+ * @param id - Module ID to require
53
+ * @returns The required module
54
+ * @throws Error if module cannot be loaded
55
+ *
56
+ * @example
57
+ * ```typescript
58
+ * import { requireModule } from './node-require';
59
+ *
60
+ * const fs = requireModule<typeof import('node:fs')>('node:fs');
61
+ * const content = fs.readFileSync('file.txt', 'utf8');
62
+ * ```
63
+ */
64
+ function requireModule(id) {
65
+ return getNodeRequire()(id);
66
+ }
67
+ /**
68
+ * Direct access to the nodeRequire function (for advanced use cases).
69
+ *
70
+ * Lazily resolves the underlying Node `require` on first call, so importing
71
+ * this binding never triggers `createRequire` in runtimes that lack a module
72
+ * path (e.g. Cloudflare Workers).
73
+ *
74
+ * Only the call signature and `resolve` (including `resolve.paths`) are
75
+ * forwarded. The live, mutable members of a real `require` — `.cache`,
76
+ * `.main`, `.extensions` — are intentionally NOT exposed: a lazy wrapper
77
+ * can't mirror that shared state without resolving eagerly, which would
78
+ * reintroduce the workerd crash. Use `createRequire` directly if you need
79
+ * them.
80
+ */
81
+ const nodeRequire = ((id) => getNodeRequire()(id));
82
+ const lazyResolve = ((id, options) => getNodeRequire().resolve(id, options));
83
+ lazyResolve.paths = (request) => getNodeRequire().resolve.paths(request);
84
+ nodeRequire.resolve = lazyResolve;
85
+
86
+ //#endregion
87
+ Object.defineProperty(exports, 'requireModule', {
88
+ enumerable: true,
89
+ get: function () {
90
+ return requireModule;
91
+ }
92
+ });
93
+ Object.defineProperty(exports, 'safeRequire', {
94
+ enumerable: true,
95
+ get: function () {
96
+ return safeRequire;
97
+ }
98
+ });
99
+ //# sourceMappingURL=node-require-DF5QBX6z.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-require-DF5QBX6z.cjs","names":[],"sources":["../src/node-require.ts"],"sourcesContent":["/**\n * Cross-format require() helper for CJS and ESM compatibility\n *\n * Provides a synchronous `require()` function that works in both:\n * - CJS builds: Uses native `require`\n * - ESM builds: Uses `createRequire(import.meta.url)`\n *\n * This allows optional peer dependencies and dynamic module loading\n * to work synchronously in both module formats.\n */\n\nimport { createRequire } from 'node:module';\n\n// `__filename` is provided by CJS and by esbuild's CJS output wrapper, but\n// is undefined under pure ESM. `import.meta.url` is provided by ESM. Pick\n// whichever is available so the helper works in:\n// - native CJS (autotel's published `.cjs`)\n// - native ESM (autotel's published `.js`)\n// - ESM-bundled-into-CJS by a downstream consumer (e.g. CDK's\n// `aws-lambda-nodejs` → esbuild with `format: cjs`). esbuild rewrites\n// `import.meta` to `{}` in this case, so `createRequire(import.meta.url)`\n// alone collapses to `createRequire(undefined)` and crashes at load.\n// `typeof __filename` does NOT throw when the identifier is undeclared, so\n// the ESM build evaluates the conditional safely.\ndeclare const __filename: string | undefined;\n\n// Build the Node `require` lazily on first use. Calling `createRequire`\n// eagerly at module load crashes in runtimes where neither `__filename` nor\n// `import.meta.url` resolves to a path — e.g. Cloudflare Workers / workerd,\n// where the bundle has no module path and `createRequire(undefined)` throws\n// synchronously at import. Deferring the call keeps merely importing this\n// module (and therefore anything that re-exports it, such as `track`)\n// side-effect-free; Node/CJS/ESM still get a real `require` on first call.\nlet cachedRequire: NodeRequire | undefined;\n\nfunction getNodeRequire(): NodeRequire {\n if (cachedRequire) return cachedRequire;\n const base = typeof __filename === 'string' ? __filename : import.meta.url;\n if (!base) {\n // No module path in this runtime. Surface as a missing-module error so\n // optional lookups via `safeRequire()` degrade gracefully to `undefined`.\n throw Object.assign(\n new Error('node require() is unavailable in this runtime'),\n { code: 'MODULE_NOT_FOUND' },\n );\n }\n cachedRequire = createRequire(base);\n return cachedRequire;\n}\n\n/**\n * Synchronously require a module (works in both CJS and ESM)\n *\n * @param id - Module ID to require\n * @returns The required module\n * @throws Error if module cannot be loaded\n *\n * @example\n * ```typescript\n * import { safeRequire } from './node-require';\n *\n * const traceloop = safeRequire('@traceloop/node-server-sdk');\n * if (traceloop) {\n * traceloop.initialize({ ... });\n * }\n * ```\n */\nexport function safeRequire<T = unknown>(id: string): T | undefined {\n try {\n return getNodeRequire()(id) as T;\n } catch (error) {\n if (error && (error as NodeJS.ErrnoException).code === 'MODULE_NOT_FOUND') {\n // Optional dependency missing – return undefined\n return undefined;\n }\n // Any other error is a real bug: rethrow\n throw error;\n }\n}\n\n/**\n * Synchronously require a module (throws if not found)\n *\n * Use this when the module is required (not optional).\n *\n * @param id - Module ID to require\n * @returns The required module\n * @throws Error if module cannot be loaded\n *\n * @example\n * ```typescript\n * import { requireModule } from './node-require';\n *\n * const fs = requireModule<typeof import('node:fs')>('node:fs');\n * const content = fs.readFileSync('file.txt', 'utf8');\n * ```\n */\nexport function requireModule<T = unknown>(id: string): T {\n return getNodeRequire()(id) as T;\n}\n\n/**\n * Direct access to the nodeRequire function (for advanced use cases).\n *\n * Lazily resolves the underlying Node `require` on first call, so importing\n * this binding never triggers `createRequire` in runtimes that lack a module\n * path (e.g. Cloudflare Workers).\n *\n * Only the call signature and `resolve` (including `resolve.paths`) are\n * forwarded. The live, mutable members of a real `require` — `.cache`,\n * `.main`, `.extensions` — are intentionally NOT exposed: a lazy wrapper\n * can't mirror that shared state without resolving eagerly, which would\n * reintroduce the workerd crash. Use `createRequire` directly if you need\n * them.\n */\nconst nodeRequire = ((id: string) => getNodeRequire()(id)) as NodeRequire;\nconst lazyResolve = ((id: string, options?: { paths?: string[] }) =>\n getNodeRequire().resolve(id, options)) as NodeRequire['resolve'];\nlazyResolve.paths = (request: string) =>\n getNodeRequire().resolve.paths(request);\nnodeRequire.resolve = lazyResolve;\n\nexport { nodeRequire };\n"],"mappings":";;;;;;;;;;;;;AAiCA,IAAI;AAEJ,SAAS,iBAA8B;CACrC,IAAI,eAAe,OAAO;CAC1B,MAAM,OAAO,OAAO,eAAe,WAAW;CAC9C,IAAI,CAAC,MAGH,MAAM,OAAO,uBACX,IAAI,MAAM,+CAA+C,GACzD,EAAE,MAAM,mBAAmB,CAC7B;CAEF,+CAA8B,IAAI;CAClC,OAAO;AACT;;;;;;;;;;;;;;;;;;AAmBA,SAAgB,YAAyB,IAA2B;CAClE,IAAI;EACF,OAAO,eAAe,CAAC,CAAC,EAAE;CAC5B,SAAS,OAAO;EACd,IAAI,SAAU,MAAgC,SAAS,oBAErD;EAGF,MAAM;CACR;AACF;;;;;;;;;;;;;;;;;;AAmBA,SAAgB,cAA2B,IAAe;CACxD,OAAO,eAAe,CAAC,CAAC,EAAE;AAC5B;;;;;;;;;;;;;;;AAgBA,MAAM,gBAAgB,OAAe,eAAe,CAAC,CAAC,EAAE;AACxD,MAAM,gBAAgB,IAAY,YAChC,eAAe,CAAC,CAAC,QAAQ,IAAI,OAAO;AACtC,YAAY,SAAS,YACnB,eAAe,CAAC,CAAC,QAAQ,MAAM,OAAO;AACxC,YAAY,UAAU"}
@@ -0,0 +1,88 @@
1
+ import { createRequire } from "node:module";
2
+
3
+ //#region src/node-require.ts
4
+ /**
5
+ * Cross-format require() helper for CJS and ESM compatibility
6
+ *
7
+ * Provides a synchronous `require()` function that works in both:
8
+ * - CJS builds: Uses native `require`
9
+ * - ESM builds: Uses `createRequire(import.meta.url)`
10
+ *
11
+ * This allows optional peer dependencies and dynamic module loading
12
+ * to work synchronously in both module formats.
13
+ */
14
+ let cachedRequire;
15
+ function getNodeRequire() {
16
+ if (cachedRequire) return cachedRequire;
17
+ const base = typeof __filename === "string" ? __filename : import.meta.url;
18
+ if (!base) throw Object.assign(/* @__PURE__ */ new Error("node require() is unavailable in this runtime"), { code: "MODULE_NOT_FOUND" });
19
+ cachedRequire = createRequire(base);
20
+ return cachedRequire;
21
+ }
22
+ /**
23
+ * Synchronously require a module (works in both CJS and ESM)
24
+ *
25
+ * @param id - Module ID to require
26
+ * @returns The required module
27
+ * @throws Error if module cannot be loaded
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * import { safeRequire } from './node-require';
32
+ *
33
+ * const traceloop = safeRequire('@traceloop/node-server-sdk');
34
+ * if (traceloop) {
35
+ * traceloop.initialize({ ... });
36
+ * }
37
+ * ```
38
+ */
39
+ function safeRequire(id) {
40
+ try {
41
+ return getNodeRequire()(id);
42
+ } catch (error) {
43
+ if (error && error.code === "MODULE_NOT_FOUND") return;
44
+ throw error;
45
+ }
46
+ }
47
+ /**
48
+ * Synchronously require a module (throws if not found)
49
+ *
50
+ * Use this when the module is required (not optional).
51
+ *
52
+ * @param id - Module ID to require
53
+ * @returns The required module
54
+ * @throws Error if module cannot be loaded
55
+ *
56
+ * @example
57
+ * ```typescript
58
+ * import { requireModule } from './node-require';
59
+ *
60
+ * const fs = requireModule<typeof import('node:fs')>('node:fs');
61
+ * const content = fs.readFileSync('file.txt', 'utf8');
62
+ * ```
63
+ */
64
+ function requireModule(id) {
65
+ return getNodeRequire()(id);
66
+ }
67
+ /**
68
+ * Direct access to the nodeRequire function (for advanced use cases).
69
+ *
70
+ * Lazily resolves the underlying Node `require` on first call, so importing
71
+ * this binding never triggers `createRequire` in runtimes that lack a module
72
+ * path (e.g. Cloudflare Workers).
73
+ *
74
+ * Only the call signature and `resolve` (including `resolve.paths`) are
75
+ * forwarded. The live, mutable members of a real `require` — `.cache`,
76
+ * `.main`, `.extensions` — are intentionally NOT exposed: a lazy wrapper
77
+ * can't mirror that shared state without resolving eagerly, which would
78
+ * reintroduce the workerd crash. Use `createRequire` directly if you need
79
+ * them.
80
+ */
81
+ const nodeRequire = ((id) => getNodeRequire()(id));
82
+ const lazyResolve = ((id, options) => getNodeRequire().resolve(id, options));
83
+ lazyResolve.paths = (request) => getNodeRequire().resolve.paths(request);
84
+ nodeRequire.resolve = lazyResolve;
85
+
86
+ //#endregion
87
+ export { safeRequire as n, requireModule as t };
88
+ //# sourceMappingURL=node-require-Db1oDpLj.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-require-Db1oDpLj.js","names":[],"sources":["../src/node-require.ts"],"sourcesContent":["/**\n * Cross-format require() helper for CJS and ESM compatibility\n *\n * Provides a synchronous `require()` function that works in both:\n * - CJS builds: Uses native `require`\n * - ESM builds: Uses `createRequire(import.meta.url)`\n *\n * This allows optional peer dependencies and dynamic module loading\n * to work synchronously in both module formats.\n */\n\nimport { createRequire } from 'node:module';\n\n// `__filename` is provided by CJS and by esbuild's CJS output wrapper, but\n// is undefined under pure ESM. `import.meta.url` is provided by ESM. Pick\n// whichever is available so the helper works in:\n// - native CJS (autotel's published `.cjs`)\n// - native ESM (autotel's published `.js`)\n// - ESM-bundled-into-CJS by a downstream consumer (e.g. CDK's\n// `aws-lambda-nodejs` → esbuild with `format: cjs`). esbuild rewrites\n// `import.meta` to `{}` in this case, so `createRequire(import.meta.url)`\n// alone collapses to `createRequire(undefined)` and crashes at load.\n// `typeof __filename` does NOT throw when the identifier is undeclared, so\n// the ESM build evaluates the conditional safely.\ndeclare const __filename: string | undefined;\n\n// Build the Node `require` lazily on first use. Calling `createRequire`\n// eagerly at module load crashes in runtimes where neither `__filename` nor\n// `import.meta.url` resolves to a path — e.g. Cloudflare Workers / workerd,\n// where the bundle has no module path and `createRequire(undefined)` throws\n// synchronously at import. Deferring the call keeps merely importing this\n// module (and therefore anything that re-exports it, such as `track`)\n// side-effect-free; Node/CJS/ESM still get a real `require` on first call.\nlet cachedRequire: NodeRequire | undefined;\n\nfunction getNodeRequire(): NodeRequire {\n if (cachedRequire) return cachedRequire;\n const base = typeof __filename === 'string' ? __filename : import.meta.url;\n if (!base) {\n // No module path in this runtime. Surface as a missing-module error so\n // optional lookups via `safeRequire()` degrade gracefully to `undefined`.\n throw Object.assign(\n new Error('node require() is unavailable in this runtime'),\n { code: 'MODULE_NOT_FOUND' },\n );\n }\n cachedRequire = createRequire(base);\n return cachedRequire;\n}\n\n/**\n * Synchronously require a module (works in both CJS and ESM)\n *\n * @param id - Module ID to require\n * @returns The required module\n * @throws Error if module cannot be loaded\n *\n * @example\n * ```typescript\n * import { safeRequire } from './node-require';\n *\n * const traceloop = safeRequire('@traceloop/node-server-sdk');\n * if (traceloop) {\n * traceloop.initialize({ ... });\n * }\n * ```\n */\nexport function safeRequire<T = unknown>(id: string): T | undefined {\n try {\n return getNodeRequire()(id) as T;\n } catch (error) {\n if (error && (error as NodeJS.ErrnoException).code === 'MODULE_NOT_FOUND') {\n // Optional dependency missing – return undefined\n return undefined;\n }\n // Any other error is a real bug: rethrow\n throw error;\n }\n}\n\n/**\n * Synchronously require a module (throws if not found)\n *\n * Use this when the module is required (not optional).\n *\n * @param id - Module ID to require\n * @returns The required module\n * @throws Error if module cannot be loaded\n *\n * @example\n * ```typescript\n * import { requireModule } from './node-require';\n *\n * const fs = requireModule<typeof import('node:fs')>('node:fs');\n * const content = fs.readFileSync('file.txt', 'utf8');\n * ```\n */\nexport function requireModule<T = unknown>(id: string): T {\n return getNodeRequire()(id) as T;\n}\n\n/**\n * Direct access to the nodeRequire function (for advanced use cases).\n *\n * Lazily resolves the underlying Node `require` on first call, so importing\n * this binding never triggers `createRequire` in runtimes that lack a module\n * path (e.g. Cloudflare Workers).\n *\n * Only the call signature and `resolve` (including `resolve.paths`) are\n * forwarded. The live, mutable members of a real `require` — `.cache`,\n * `.main`, `.extensions` — are intentionally NOT exposed: a lazy wrapper\n * can't mirror that shared state without resolving eagerly, which would\n * reintroduce the workerd crash. Use `createRequire` directly if you need\n * them.\n */\nconst nodeRequire = ((id: string) => getNodeRequire()(id)) as NodeRequire;\nconst lazyResolve = ((id: string, options?: { paths?: string[] }) =>\n getNodeRequire().resolve(id, options)) as NodeRequire['resolve'];\nlazyResolve.paths = (request: string) =>\n getNodeRequire().resolve.paths(request);\nnodeRequire.resolve = lazyResolve;\n\nexport { nodeRequire };\n"],"mappings":";;;;;;;;;;;;;AAiCA,IAAI;AAEJ,SAAS,iBAA8B;CACrC,IAAI,eAAe,OAAO;CAC1B,MAAM,OAAO,OAAO,eAAe,WAAW,aAAa,OAAO,KAAK;CACvE,IAAI,CAAC,MAGH,MAAM,OAAO,uBACX,IAAI,MAAM,+CAA+C,GACzD,EAAE,MAAM,mBAAmB,CAC7B;CAEF,gBAAgB,cAAc,IAAI;CAClC,OAAO;AACT;;;;;;;;;;;;;;;;;;AAmBA,SAAgB,YAAyB,IAA2B;CAClE,IAAI;EACF,OAAO,eAAe,CAAC,CAAC,EAAE;CAC5B,SAAS,OAAO;EACd,IAAI,SAAU,MAAgC,SAAS,oBAErD;EAGF,MAAM;CACR;AACF;;;;;;;;;;;;;;;;;;AAmBA,SAAgB,cAA2B,IAAe;CACxD,OAAO,eAAe,CAAC,CAAC,EAAE;AAC5B;;;;;;;;;;;;;;;AAgBA,MAAM,gBAAgB,OAAe,eAAe,CAAC,CAAC,EAAE;AACxD,MAAM,gBAAgB,IAAY,YAChC,eAAe,CAAC,CAAC,QAAQ,IAAI,OAAO;AACtC,YAAY,SAAS,YACnB,eAAe,CAAC,CAAC,QAAQ,MAAM,OAAO;AACxC,YAAY,UAAU"}
@@ -0,0 +1,59 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+
3
+ //#region src/operation-context.ts
4
+ /**
5
+ * Operation context tracking using AsyncLocalStorage
6
+ *
7
+ * This module provides a way to track operation names across async boundaries
8
+ * so they can be automatically captured in events events.
9
+ *
10
+ * We cannot read span attributes from OpenTelemetry's API (it's write-only),
11
+ * so we maintain our own async context storage.
12
+ */
13
+ /**
14
+ * AsyncLocalStorage instance for tracking operation context
15
+ */
16
+ const operationStorage = new AsyncLocalStorage();
17
+ /**
18
+ * Get the current operation context (if any)
19
+ *
20
+ * @returns The current operation context, or undefined if not in an operation
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const ctx = getOperationContext();
25
+ * if (ctx) {
26
+ * console.log('Current operation:', ctx.name);
27
+ * }
28
+ * ```
29
+ */
30
+ function getOperationContext() {
31
+ return operationStorage.getStore();
32
+ }
33
+ /**
34
+ * Run a function within an operation context
35
+ *
36
+ * This sets the operation name for the duration of the function execution,
37
+ * including all async operations spawned from it.
38
+ *
39
+ * @param name - The operation name to set
40
+ * @param fn - The function to execute within the context
41
+ * @returns The result of the function
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * const result = await runInOperationContext('user.create', async () => {
46
+ * // Any events.trackEvent() calls here will automatically capture
47
+ * // 'operation.name': 'user.create'
48
+ * await createUser();
49
+ * return 'success';
50
+ * });
51
+ * ```
52
+ */
53
+ function runInOperationContext(name, fn) {
54
+ return operationStorage.run({ name }, fn);
55
+ }
56
+
57
+ //#endregion
58
+ export { runInOperationContext as n, getOperationContext as t };
59
+ //# sourceMappingURL=operation-context-C-2hmmtP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation-context-C-2hmmtP.js","names":[],"sources":["../src/operation-context.ts"],"sourcesContent":["/**\n * Operation context tracking using AsyncLocalStorage\n *\n * This module provides a way to track operation names across async boundaries\n * so they can be automatically captured in events events.\n *\n * We cannot read span attributes from OpenTelemetry's API (it's write-only),\n * so we maintain our own async context storage.\n */\n\nimport { AsyncLocalStorage } from 'node:async_hooks';\n\n/**\n * Operation context that flows through async operations\n */\nexport interface OperationContext {\n /**\n * The name of the current operation\n * This is set by trace() or span() and can be read by events\n */\n name: string;\n}\n\n/**\n * AsyncLocalStorage instance for tracking operation context\n */\nconst operationStorage = new AsyncLocalStorage<OperationContext>();\n\n/**\n * Get the current operation context (if any)\n *\n * @returns The current operation context, or undefined if not in an operation\n *\n * @example\n * ```typescript\n * const ctx = getOperationContext();\n * if (ctx) {\n * console.log('Current operation:', ctx.name);\n * }\n * ```\n */\nexport function getOperationContext(): OperationContext | undefined {\n return operationStorage.getStore();\n}\n\n/**\n * Run a function within an operation context\n *\n * This sets the operation name for the duration of the function execution,\n * including all async operations spawned from it.\n *\n * @param name - The operation name to set\n * @param fn - The function to execute within the context\n * @returns The result of the function\n *\n * @example\n * ```typescript\n * const result = await runInOperationContext('user.create', async () => {\n * // Any events.trackEvent() calls here will automatically capture\n * // 'operation.name': 'user.create'\n * await createUser();\n * return 'success';\n * });\n * ```\n */\nexport function runInOperationContext<T>(name: string, fn: () => T): T {\n return operationStorage.run({ name }, fn);\n}\n\n/**\n * Update the operation name in the current context\n *\n * This is useful when you want to change the operation name within\n * an already-established context (e.g., when entering a nested span).\n *\n * @param name - The new operation name\n *\n * @example\n * ```typescript\n * runInOperationContext('parent.operation', () => {\n * // operation.name is 'parent.operation'\n *\n * updateOperationName('nested.operation');\n * // operation.name is now 'nested.operation'\n * });\n * ```\n */\nexport function updateOperationName(name: string): void {\n const store = operationStorage.getStore();\n if (store) {\n store.name = name;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AA0BA,MAAM,mBAAmB,IAAI,kBAAoC;;;;;;;;;;;;;;AAejE,SAAgB,sBAAoD;CAClE,OAAO,iBAAiB,SAAS;AACnC;;;;;;;;;;;;;;;;;;;;;AAsBA,SAAgB,sBAAyB,MAAc,IAAgB;CACrE,OAAO,iBAAiB,IAAI,EAAE,KAAK,GAAG,EAAE;AAC1C"}
@@ -0,0 +1,70 @@
1
+ let node_async_hooks = require("node:async_hooks");
2
+
3
+ //#region src/operation-context.ts
4
+ /**
5
+ * Operation context tracking using AsyncLocalStorage
6
+ *
7
+ * This module provides a way to track operation names across async boundaries
8
+ * so they can be automatically captured in events events.
9
+ *
10
+ * We cannot read span attributes from OpenTelemetry's API (it's write-only),
11
+ * so we maintain our own async context storage.
12
+ */
13
+ /**
14
+ * AsyncLocalStorage instance for tracking operation context
15
+ */
16
+ const operationStorage = new node_async_hooks.AsyncLocalStorage();
17
+ /**
18
+ * Get the current operation context (if any)
19
+ *
20
+ * @returns The current operation context, or undefined if not in an operation
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const ctx = getOperationContext();
25
+ * if (ctx) {
26
+ * console.log('Current operation:', ctx.name);
27
+ * }
28
+ * ```
29
+ */
30
+ function getOperationContext() {
31
+ return operationStorage.getStore();
32
+ }
33
+ /**
34
+ * Run a function within an operation context
35
+ *
36
+ * This sets the operation name for the duration of the function execution,
37
+ * including all async operations spawned from it.
38
+ *
39
+ * @param name - The operation name to set
40
+ * @param fn - The function to execute within the context
41
+ * @returns The result of the function
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * const result = await runInOperationContext('user.create', async () => {
46
+ * // Any events.trackEvent() calls here will automatically capture
47
+ * // 'operation.name': 'user.create'
48
+ * await createUser();
49
+ * return 'success';
50
+ * });
51
+ * ```
52
+ */
53
+ function runInOperationContext(name, fn) {
54
+ return operationStorage.run({ name }, fn);
55
+ }
56
+
57
+ //#endregion
58
+ Object.defineProperty(exports, 'getOperationContext', {
59
+ enumerable: true,
60
+ get: function () {
61
+ return getOperationContext;
62
+ }
63
+ });
64
+ Object.defineProperty(exports, 'runInOperationContext', {
65
+ enumerable: true,
66
+ get: function () {
67
+ return runInOperationContext;
68
+ }
69
+ });
70
+ //# sourceMappingURL=operation-context-n4_obUwq.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation-context-n4_obUwq.cjs","names":["AsyncLocalStorage"],"sources":["../src/operation-context.ts"],"sourcesContent":["/**\n * Operation context tracking using AsyncLocalStorage\n *\n * This module provides a way to track operation names across async boundaries\n * so they can be automatically captured in events events.\n *\n * We cannot read span attributes from OpenTelemetry's API (it's write-only),\n * so we maintain our own async context storage.\n */\n\nimport { AsyncLocalStorage } from 'node:async_hooks';\n\n/**\n * Operation context that flows through async operations\n */\nexport interface OperationContext {\n /**\n * The name of the current operation\n * This is set by trace() or span() and can be read by events\n */\n name: string;\n}\n\n/**\n * AsyncLocalStorage instance for tracking operation context\n */\nconst operationStorage = new AsyncLocalStorage<OperationContext>();\n\n/**\n * Get the current operation context (if any)\n *\n * @returns The current operation context, or undefined if not in an operation\n *\n * @example\n * ```typescript\n * const ctx = getOperationContext();\n * if (ctx) {\n * console.log('Current operation:', ctx.name);\n * }\n * ```\n */\nexport function getOperationContext(): OperationContext | undefined {\n return operationStorage.getStore();\n}\n\n/**\n * Run a function within an operation context\n *\n * This sets the operation name for the duration of the function execution,\n * including all async operations spawned from it.\n *\n * @param name - The operation name to set\n * @param fn - The function to execute within the context\n * @returns The result of the function\n *\n * @example\n * ```typescript\n * const result = await runInOperationContext('user.create', async () => {\n * // Any events.trackEvent() calls here will automatically capture\n * // 'operation.name': 'user.create'\n * await createUser();\n * return 'success';\n * });\n * ```\n */\nexport function runInOperationContext<T>(name: string, fn: () => T): T {\n return operationStorage.run({ name }, fn);\n}\n\n/**\n * Update the operation name in the current context\n *\n * This is useful when you want to change the operation name within\n * an already-established context (e.g., when entering a nested span).\n *\n * @param name - The new operation name\n *\n * @example\n * ```typescript\n * runInOperationContext('parent.operation', () => {\n * // operation.name is 'parent.operation'\n *\n * updateOperationName('nested.operation');\n * // operation.name is now 'nested.operation'\n * });\n * ```\n */\nexport function updateOperationName(name: string): void {\n const store = operationStorage.getStore();\n if (store) {\n store.name = name;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AA0BA,MAAM,mBAAmB,IAAIA,mCAAoC;;;;;;;;;;;;;;AAejE,SAAgB,sBAAoD;CAClE,OAAO,iBAAiB,SAAS;AACnC;;;;;;;;;;;;;;;;;;;;;AAsBA,SAAgB,sBAAyB,MAAc,IAAgB;CACrE,OAAO,iBAAiB,IAAI,EAAE,KAAK,GAAG,EAAE;AAC1C"}
@@ -1,12 +1,58 @@
1
- 'use strict';
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
- var chunkT4B5LB6E_cjs = require('./chunk-T4B5LB6E.cjs');
3
+ //#region src/parse-error.ts
4
+ function toStatus(value) {
5
+ if (typeof value === "number" && Number.isFinite(value)) return value;
6
+ if (typeof value === "string") {
7
+ const n = Number(value);
8
+ if (Number.isFinite(n)) return n;
9
+ }
10
+ }
11
+ function pickString(value) {
12
+ return typeof value === "string" && value.length > 0 ? value : void 0;
13
+ }
14
+ function pickCode(value) {
15
+ if (typeof value === "string" || typeof value === "number") return value;
16
+ }
17
+ function pickDetails(value) {
18
+ if (value && typeof value === "object" && value.constructor === Object) return value;
19
+ }
20
+ function parseError(error) {
21
+ if (error instanceof Error) {
22
+ const structured = error;
23
+ return {
24
+ message: error.message || "An error occurred",
25
+ status: toStatus(structured.status) ?? 500,
26
+ why: pickString(structured.why),
27
+ fix: pickString(structured.fix),
28
+ link: pickString(structured.link),
29
+ code: pickCode(structured.code),
30
+ details: pickDetails(structured.details),
31
+ raw: error
32
+ };
33
+ }
34
+ if (error && typeof error === "object") {
35
+ const err = error;
36
+ const data = err.data && typeof err.data === "object" ? err.data : void 0;
37
+ const payload = (data?.data && typeof data.data === "object" ? data.data : void 0) ?? data;
38
+ return {
39
+ message: pickString(data?.statusText) || pickString(data?.statusMessage) || pickString(data?.message) || pickString(payload?.statusText) || pickString(payload?.statusMessage) || pickString(payload?.message) || pickString(err.message) || "An error occurred",
40
+ status: toStatus(payload?.status) || toStatus(payload?.statusCode) || toStatus(err.status) || toStatus(err.statusCode) || 500,
41
+ why: pickString(payload?.why) || pickString(err.why),
42
+ fix: pickString(payload?.fix) || pickString(err.fix),
43
+ link: pickString(payload?.link) || pickString(err.link),
44
+ code: pickCode(payload?.code) || pickCode(err.code),
45
+ details: pickDetails(payload?.details) || pickDetails(err.details),
46
+ raw: error
47
+ };
48
+ }
49
+ return {
50
+ message: String(error),
51
+ status: 500,
52
+ raw: error
53
+ };
54
+ }
4
55
 
5
-
6
-
7
- Object.defineProperty(exports, "parseError", {
8
- enumerable: true,
9
- get: function () { return chunkT4B5LB6E_cjs.parseError; }
10
- });
11
- //# sourceMappingURL=parse-error.cjs.map
56
+ //#endregion
57
+ exports.parseError = parseError;
12
58
  //# sourceMappingURL=parse-error.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"parse-error.cjs"}
1
+ {"version":3,"file":"parse-error.cjs","names":[],"sources":["../src/parse-error.ts"],"sourcesContent":["import type { StructuredError } from './structured-error';\n\nexport interface ParsedError {\n message: string;\n status: number;\n why?: string;\n fix?: string;\n link?: string;\n code?: string | number;\n details?: Record<string, unknown>;\n raw: unknown;\n}\n\ntype ErrorLike = {\n message?: unknown;\n status?: unknown;\n statusCode?: unknown;\n data?: unknown;\n code?: unknown;\n why?: unknown;\n fix?: unknown;\n link?: unknown;\n details?: unknown;\n};\n\nfunction toStatus(value: unknown): number | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) return value;\n if (typeof value === 'string') {\n const n = Number(value);\n if (Number.isFinite(n)) return n;\n }\n return undefined;\n}\n\nfunction pickString(value: unknown): string | undefined {\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n}\n\nfunction pickCode(value: unknown): string | number | undefined {\n if (typeof value === 'string' || typeof value === 'number') return value;\n return undefined;\n}\n\nfunction pickDetails(value: unknown): Record<string, unknown> | undefined {\n if (value && typeof value === 'object' && value.constructor === Object) {\n return value as Record<string, unknown>;\n }\n return undefined;\n}\n\nexport function parseError(error: unknown): ParsedError {\n if (error instanceof Error) {\n const structured = error as StructuredError;\n return {\n message: error.message || 'An error occurred',\n status: toStatus(structured.status) ?? 500,\n why: pickString(structured.why),\n fix: pickString(structured.fix),\n link: pickString(structured.link),\n code: pickCode(structured.code),\n details: pickDetails(structured.details),\n raw: error,\n };\n }\n\n if (error && typeof error === 'object') {\n const err = error as ErrorLike;\n const data =\n err.data && typeof err.data === 'object'\n ? (err.data as Record<string, unknown>)\n : undefined;\n const nested =\n data?.data && typeof data.data === 'object'\n ? (data.data as Record<string, unknown>)\n : undefined;\n const payload = nested ?? data;\n\n const message =\n pickString(data?.statusText) ||\n pickString(data?.statusMessage) ||\n pickString(data?.message) ||\n pickString(payload?.statusText) ||\n pickString(payload?.statusMessage) ||\n pickString(payload?.message) ||\n pickString(err.message) ||\n 'An error occurred';\n\n const status =\n toStatus(payload?.status) ||\n toStatus(payload?.statusCode) ||\n toStatus(err.status) ||\n toStatus(err.statusCode) ||\n 500;\n\n return {\n message,\n status,\n why: pickString(payload?.why) || pickString(err.why),\n fix: pickString(payload?.fix) || pickString(err.fix),\n link: pickString(payload?.link) || pickString(err.link),\n code: pickCode(payload?.code) || pickCode(err.code),\n details: pickDetails(payload?.details) || pickDetails(err.details),\n raw: error,\n };\n }\n\n return {\n message: String(error),\n status: 500,\n raw: error,\n };\n}\n"],"mappings":";;;AAyBA,SAAS,SAAS,OAAoC;CACpD,IAAI,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,GAAG,OAAO;CAChE,IAAI,OAAO,UAAU,UAAU;EAC7B,MAAM,IAAI,OAAO,KAAK;EACtB,IAAI,OAAO,SAAS,CAAC,GAAG,OAAO;CACjC;AAEF;AAEA,SAAS,WAAW,OAAoC;CACtD,OAAO,OAAO,UAAU,YAAY,MAAM,SAAS,IAAI,QAAQ;AACjE;AAEA,SAAS,SAAS,OAA6C;CAC7D,IAAI,OAAO,UAAU,YAAY,OAAO,UAAU,UAAU,OAAO;AAErE;AAEA,SAAS,YAAY,OAAqD;CACxE,IAAI,SAAS,OAAO,UAAU,YAAY,MAAM,gBAAgB,QAC9D,OAAO;AAGX;AAEA,SAAgB,WAAW,OAA6B;CACtD,IAAI,iBAAiB,OAAO;EAC1B,MAAM,aAAa;EACnB,OAAO;GACL,SAAS,MAAM,WAAW;GAC1B,QAAQ,SAAS,WAAW,MAAM,KAAK;GACvC,KAAK,WAAW,WAAW,GAAG;GAC9B,KAAK,WAAW,WAAW,GAAG;GAC9B,MAAM,WAAW,WAAW,IAAI;GAChC,MAAM,SAAS,WAAW,IAAI;GAC9B,SAAS,YAAY,WAAW,OAAO;GACvC,KAAK;EACP;CACF;CAEA,IAAI,SAAS,OAAO,UAAU,UAAU;EACtC,MAAM,MAAM;EACZ,MAAM,OACJ,IAAI,QAAQ,OAAO,IAAI,SAAS,WAC3B,IAAI,OACL;EAKN,MAAM,WAHJ,MAAM,QAAQ,OAAO,KAAK,SAAS,WAC9B,KAAK,OACN,WACoB;EAmB1B,OAAO;GACL,SAjBA,WAAW,MAAM,UAAU,KAC3B,WAAW,MAAM,aAAa,KAC9B,WAAW,MAAM,OAAO,KACxB,WAAW,SAAS,UAAU,KAC9B,WAAW,SAAS,aAAa,KACjC,WAAW,SAAS,OAAO,KAC3B,WAAW,IAAI,OAAO,KACtB;GAWA,QARA,SAAS,SAAS,MAAM,KACxB,SAAS,SAAS,UAAU,KAC5B,SAAS,IAAI,MAAM,KACnB,SAAS,IAAI,UAAU,KACvB;GAKA,KAAK,WAAW,SAAS,GAAG,KAAK,WAAW,IAAI,GAAG;GACnD,KAAK,WAAW,SAAS,GAAG,KAAK,WAAW,IAAI,GAAG;GACnD,MAAM,WAAW,SAAS,IAAI,KAAK,WAAW,IAAI,IAAI;GACtD,MAAM,SAAS,SAAS,IAAI,KAAK,SAAS,IAAI,IAAI;GAClD,SAAS,YAAY,SAAS,OAAO,KAAK,YAAY,IAAI,OAAO;GACjE,KAAK;EACP;CACF;CAEA,OAAO;EACL,SAAS,OAAO,KAAK;EACrB,QAAQ;EACR,KAAK;CACP;AACF"}
@@ -1,13 +1,15 @@
1
+ //#region src/parse-error.d.ts
1
2
  interface ParsedError {
2
- message: string;
3
- status: number;
4
- why?: string;
5
- fix?: string;
6
- link?: string;
7
- code?: string | number;
8
- details?: Record<string, unknown>;
9
- raw: unknown;
3
+ message: string;
4
+ status: number;
5
+ why?: string;
6
+ fix?: string;
7
+ link?: string;
8
+ code?: string | number;
9
+ details?: Record<string, unknown>;
10
+ raw: unknown;
10
11
  }
11
12
  declare function parseError(error: unknown): ParsedError;
12
-
13
- export { type ParsedError, parseError };
13
+ //#endregion
14
+ export { ParsedError, parseError };
15
+ //# sourceMappingURL=parse-error.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-error.d.cts","names":[],"sources":["../src/parse-error.ts"],"mappings":";UAEiB,WAAA;EACf,OAAA;EACA,MAAA;EACA,GAAA;EACA,GAAA;EACA,IAAA;EACA,IAAA;EACA,OAAA,GAAU,MAAM;EAChB,GAAA;AAAA;AAAA,iBAwCc,UAAA,CAAW,KAAA,YAAiB,WAAW"}
@@ -1,13 +1,15 @@
1
+ //#region src/parse-error.d.ts
1
2
  interface ParsedError {
2
- message: string;
3
- status: number;
4
- why?: string;
5
- fix?: string;
6
- link?: string;
7
- code?: string | number;
8
- details?: Record<string, unknown>;
9
- raw: unknown;
3
+ message: string;
4
+ status: number;
5
+ why?: string;
6
+ fix?: string;
7
+ link?: string;
8
+ code?: string | number;
9
+ details?: Record<string, unknown>;
10
+ raw: unknown;
10
11
  }
11
12
  declare function parseError(error: unknown): ParsedError;
12
-
13
- export { type ParsedError, parseError };
13
+ //#endregion
14
+ export { ParsedError, parseError };
15
+ //# sourceMappingURL=parse-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-error.d.ts","names":[],"sources":["../src/parse-error.ts"],"mappings":";UAEiB,WAAA;EACf,OAAA;EACA,MAAA;EACA,GAAA;EACA,GAAA;EACA,IAAA;EACA,IAAA;EACA,OAAA,GAAU,MAAM;EAChB,GAAA;AAAA;AAAA,iBAwCc,UAAA,CAAW,KAAA,YAAiB,WAAW"}
@@ -1,3 +1,56 @@
1
- export { parseError } from './chunk-J7VGRIAJ.js';
2
- //# sourceMappingURL=parse-error.js.map
1
+ //#region src/parse-error.ts
2
+ function toStatus(value) {
3
+ if (typeof value === "number" && Number.isFinite(value)) return value;
4
+ if (typeof value === "string") {
5
+ const n = Number(value);
6
+ if (Number.isFinite(n)) return n;
7
+ }
8
+ }
9
+ function pickString(value) {
10
+ return typeof value === "string" && value.length > 0 ? value : void 0;
11
+ }
12
+ function pickCode(value) {
13
+ if (typeof value === "string" || typeof value === "number") return value;
14
+ }
15
+ function pickDetails(value) {
16
+ if (value && typeof value === "object" && value.constructor === Object) return value;
17
+ }
18
+ function parseError(error) {
19
+ if (error instanceof Error) {
20
+ const structured = error;
21
+ return {
22
+ message: error.message || "An error occurred",
23
+ status: toStatus(structured.status) ?? 500,
24
+ why: pickString(structured.why),
25
+ fix: pickString(structured.fix),
26
+ link: pickString(structured.link),
27
+ code: pickCode(structured.code),
28
+ details: pickDetails(structured.details),
29
+ raw: error
30
+ };
31
+ }
32
+ if (error && typeof error === "object") {
33
+ const err = error;
34
+ const data = err.data && typeof err.data === "object" ? err.data : void 0;
35
+ const payload = (data?.data && typeof data.data === "object" ? data.data : void 0) ?? data;
36
+ return {
37
+ message: pickString(data?.statusText) || pickString(data?.statusMessage) || pickString(data?.message) || pickString(payload?.statusText) || pickString(payload?.statusMessage) || pickString(payload?.message) || pickString(err.message) || "An error occurred",
38
+ status: toStatus(payload?.status) || toStatus(payload?.statusCode) || toStatus(err.status) || toStatus(err.statusCode) || 500,
39
+ why: pickString(payload?.why) || pickString(err.why),
40
+ fix: pickString(payload?.fix) || pickString(err.fix),
41
+ link: pickString(payload?.link) || pickString(err.link),
42
+ code: pickCode(payload?.code) || pickCode(err.code),
43
+ details: pickDetails(payload?.details) || pickDetails(err.details),
44
+ raw: error
45
+ };
46
+ }
47
+ return {
48
+ message: String(error),
49
+ status: 500,
50
+ raw: error
51
+ };
52
+ }
53
+
54
+ //#endregion
55
+ export { parseError };
3
56
  //# sourceMappingURL=parse-error.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"parse-error.js"}
1
+ {"version":3,"file":"parse-error.js","names":[],"sources":["../src/parse-error.ts"],"sourcesContent":["import type { StructuredError } from './structured-error';\n\nexport interface ParsedError {\n message: string;\n status: number;\n why?: string;\n fix?: string;\n link?: string;\n code?: string | number;\n details?: Record<string, unknown>;\n raw: unknown;\n}\n\ntype ErrorLike = {\n message?: unknown;\n status?: unknown;\n statusCode?: unknown;\n data?: unknown;\n code?: unknown;\n why?: unknown;\n fix?: unknown;\n link?: unknown;\n details?: unknown;\n};\n\nfunction toStatus(value: unknown): number | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) return value;\n if (typeof value === 'string') {\n const n = Number(value);\n if (Number.isFinite(n)) return n;\n }\n return undefined;\n}\n\nfunction pickString(value: unknown): string | undefined {\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n}\n\nfunction pickCode(value: unknown): string | number | undefined {\n if (typeof value === 'string' || typeof value === 'number') return value;\n return undefined;\n}\n\nfunction pickDetails(value: unknown): Record<string, unknown> | undefined {\n if (value && typeof value === 'object' && value.constructor === Object) {\n return value as Record<string, unknown>;\n }\n return undefined;\n}\n\nexport function parseError(error: unknown): ParsedError {\n if (error instanceof Error) {\n const structured = error as StructuredError;\n return {\n message: error.message || 'An error occurred',\n status: toStatus(structured.status) ?? 500,\n why: pickString(structured.why),\n fix: pickString(structured.fix),\n link: pickString(structured.link),\n code: pickCode(structured.code),\n details: pickDetails(structured.details),\n raw: error,\n };\n }\n\n if (error && typeof error === 'object') {\n const err = error as ErrorLike;\n const data =\n err.data && typeof err.data === 'object'\n ? (err.data as Record<string, unknown>)\n : undefined;\n const nested =\n data?.data && typeof data.data === 'object'\n ? (data.data as Record<string, unknown>)\n : undefined;\n const payload = nested ?? data;\n\n const message =\n pickString(data?.statusText) ||\n pickString(data?.statusMessage) ||\n pickString(data?.message) ||\n pickString(payload?.statusText) ||\n pickString(payload?.statusMessage) ||\n pickString(payload?.message) ||\n pickString(err.message) ||\n 'An error occurred';\n\n const status =\n toStatus(payload?.status) ||\n toStatus(payload?.statusCode) ||\n toStatus(err.status) ||\n toStatus(err.statusCode) ||\n 500;\n\n return {\n message,\n status,\n why: pickString(payload?.why) || pickString(err.why),\n fix: pickString(payload?.fix) || pickString(err.fix),\n link: pickString(payload?.link) || pickString(err.link),\n code: pickCode(payload?.code) || pickCode(err.code),\n details: pickDetails(payload?.details) || pickDetails(err.details),\n raw: error,\n };\n }\n\n return {\n message: String(error),\n status: 500,\n raw: error,\n };\n}\n"],"mappings":";AAyBA,SAAS,SAAS,OAAoC;CACpD,IAAI,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,GAAG,OAAO;CAChE,IAAI,OAAO,UAAU,UAAU;EAC7B,MAAM,IAAI,OAAO,KAAK;EACtB,IAAI,OAAO,SAAS,CAAC,GAAG,OAAO;CACjC;AAEF;AAEA,SAAS,WAAW,OAAoC;CACtD,OAAO,OAAO,UAAU,YAAY,MAAM,SAAS,IAAI,QAAQ;AACjE;AAEA,SAAS,SAAS,OAA6C;CAC7D,IAAI,OAAO,UAAU,YAAY,OAAO,UAAU,UAAU,OAAO;AAErE;AAEA,SAAS,YAAY,OAAqD;CACxE,IAAI,SAAS,OAAO,UAAU,YAAY,MAAM,gBAAgB,QAC9D,OAAO;AAGX;AAEA,SAAgB,WAAW,OAA6B;CACtD,IAAI,iBAAiB,OAAO;EAC1B,MAAM,aAAa;EACnB,OAAO;GACL,SAAS,MAAM,WAAW;GAC1B,QAAQ,SAAS,WAAW,MAAM,KAAK;GACvC,KAAK,WAAW,WAAW,GAAG;GAC9B,KAAK,WAAW,WAAW,GAAG;GAC9B,MAAM,WAAW,WAAW,IAAI;GAChC,MAAM,SAAS,WAAW,IAAI;GAC9B,SAAS,YAAY,WAAW,OAAO;GACvC,KAAK;EACP;CACF;CAEA,IAAI,SAAS,OAAO,UAAU,UAAU;EACtC,MAAM,MAAM;EACZ,MAAM,OACJ,IAAI,QAAQ,OAAO,IAAI,SAAS,WAC3B,IAAI,OACL;EAKN,MAAM,WAHJ,MAAM,QAAQ,OAAO,KAAK,SAAS,WAC9B,KAAK,OACN,WACoB;EAmB1B,OAAO;GACL,SAjBA,WAAW,MAAM,UAAU,KAC3B,WAAW,MAAM,aAAa,KAC9B,WAAW,MAAM,OAAO,KACxB,WAAW,SAAS,UAAU,KAC9B,WAAW,SAAS,aAAa,KACjC,WAAW,SAAS,OAAO,KAC3B,WAAW,IAAI,OAAO,KACtB;GAWA,QARA,SAAS,SAAS,MAAM,KACxB,SAAS,SAAS,UAAU,KAC5B,SAAS,IAAI,MAAM,KACnB,SAAS,IAAI,UAAU,KACvB;GAKA,KAAK,WAAW,SAAS,GAAG,KAAK,WAAW,IAAI,GAAG;GACnD,KAAK,WAAW,SAAS,GAAG,KAAK,WAAW,IAAI,GAAG;GACnD,MAAM,WAAW,SAAS,IAAI,KAAK,WAAW,IAAI,IAAI;GACtD,MAAM,SAAS,SAAS,IAAI,KAAK,SAAS,IAAI,IAAI;GAClD,SAAS,YAAY,SAAS,OAAO,KAAK,YAAY,IAAI,OAAO;GACjE,KAAK;EACP;CACF;CAEA,OAAO;EACL,SAAS,OAAO,KAAK;EACrB,QAAQ;EACR,KAAK;CACP;AACF"}