autotel 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1946 -0
  3. package/dist/chunk-2LNRY4QK.js +273 -0
  4. package/dist/chunk-2LNRY4QK.js.map +1 -0
  5. package/dist/chunk-3HENGDW2.js +587 -0
  6. package/dist/chunk-3HENGDW2.js.map +1 -0
  7. package/dist/chunk-4OAT42CA.cjs +73 -0
  8. package/dist/chunk-4OAT42CA.cjs.map +1 -0
  9. package/dist/chunk-5GWX5LFW.js +70 -0
  10. package/dist/chunk-5GWX5LFW.js.map +1 -0
  11. package/dist/chunk-5R2M36QB.js +195 -0
  12. package/dist/chunk-5R2M36QB.js.map +1 -0
  13. package/dist/chunk-5ZN622AO.js +73 -0
  14. package/dist/chunk-5ZN622AO.js.map +1 -0
  15. package/dist/chunk-77MSMAUQ.cjs +498 -0
  16. package/dist/chunk-77MSMAUQ.cjs.map +1 -0
  17. package/dist/chunk-ABPEQ6RK.cjs +596 -0
  18. package/dist/chunk-ABPEQ6RK.cjs.map +1 -0
  19. package/dist/chunk-BWYGJKRB.js +95 -0
  20. package/dist/chunk-BWYGJKRB.js.map +1 -0
  21. package/dist/chunk-BZHG5IZ4.js +73 -0
  22. package/dist/chunk-BZHG5IZ4.js.map +1 -0
  23. package/dist/chunk-G7VZBCD6.cjs +35 -0
  24. package/dist/chunk-G7VZBCD6.cjs.map +1 -0
  25. package/dist/chunk-GVLK7YUU.cjs +30 -0
  26. package/dist/chunk-GVLK7YUU.cjs.map +1 -0
  27. package/dist/chunk-HCCXC7XG.js +205 -0
  28. package/dist/chunk-HCCXC7XG.js.map +1 -0
  29. package/dist/chunk-HE6T6FIX.cjs +203 -0
  30. package/dist/chunk-HE6T6FIX.cjs.map +1 -0
  31. package/dist/chunk-KIXWPOCO.cjs +100 -0
  32. package/dist/chunk-KIXWPOCO.cjs.map +1 -0
  33. package/dist/chunk-KVGNW3FC.js +87 -0
  34. package/dist/chunk-KVGNW3FC.js.map +1 -0
  35. package/dist/chunk-LITNXTTT.js +3 -0
  36. package/dist/chunk-LITNXTTT.js.map +1 -0
  37. package/dist/chunk-M4ANN7RL.js +114 -0
  38. package/dist/chunk-M4ANN7RL.js.map +1 -0
  39. package/dist/chunk-NC52UBR2.cjs +32 -0
  40. package/dist/chunk-NC52UBR2.cjs.map +1 -0
  41. package/dist/chunk-NHCNRQD3.cjs +212 -0
  42. package/dist/chunk-NHCNRQD3.cjs.map +1 -0
  43. package/dist/chunk-NZ72VDNY.cjs +4 -0
  44. package/dist/chunk-NZ72VDNY.cjs.map +1 -0
  45. package/dist/chunk-P6JUDYNO.js +57 -0
  46. package/dist/chunk-P6JUDYNO.js.map +1 -0
  47. package/dist/chunk-RJYY7BWX.js +1349 -0
  48. package/dist/chunk-RJYY7BWX.js.map +1 -0
  49. package/dist/chunk-TRI4V5BF.cjs +126 -0
  50. package/dist/chunk-TRI4V5BF.cjs.map +1 -0
  51. package/dist/chunk-UL33I6IS.js +139 -0
  52. package/dist/chunk-UL33I6IS.js.map +1 -0
  53. package/dist/chunk-URRW6M2C.cjs +61 -0
  54. package/dist/chunk-URRW6M2C.cjs.map +1 -0
  55. package/dist/chunk-UY3UYPBZ.cjs +77 -0
  56. package/dist/chunk-UY3UYPBZ.cjs.map +1 -0
  57. package/dist/chunk-W3253FGB.cjs +277 -0
  58. package/dist/chunk-W3253FGB.cjs.map +1 -0
  59. package/dist/chunk-W7LHZVQF.js +26 -0
  60. package/dist/chunk-W7LHZVQF.js.map +1 -0
  61. package/dist/chunk-WBWNM6LB.cjs +1360 -0
  62. package/dist/chunk-WBWNM6LB.cjs.map +1 -0
  63. package/dist/chunk-WFJ7L2RV.js +494 -0
  64. package/dist/chunk-WFJ7L2RV.js.map +1 -0
  65. package/dist/chunk-X4RMFFMR.js +28 -0
  66. package/dist/chunk-X4RMFFMR.js.map +1 -0
  67. package/dist/chunk-Y4Y2S7BM.cjs +92 -0
  68. package/dist/chunk-Y4Y2S7BM.cjs.map +1 -0
  69. package/dist/chunk-YLPNXZFI.cjs +143 -0
  70. package/dist/chunk-YLPNXZFI.cjs.map +1 -0
  71. package/dist/chunk-YTXEZ4SD.cjs +77 -0
  72. package/dist/chunk-YTXEZ4SD.cjs.map +1 -0
  73. package/dist/chunk-Z6ZWNWWR.js +30 -0
  74. package/dist/chunk-Z6ZWNWWR.js.map +1 -0
  75. package/dist/config.cjs +26 -0
  76. package/dist/config.cjs.map +1 -0
  77. package/dist/config.d.cts +75 -0
  78. package/dist/config.d.ts +75 -0
  79. package/dist/config.js +5 -0
  80. package/dist/config.js.map +1 -0
  81. package/dist/db.cjs +233 -0
  82. package/dist/db.cjs.map +1 -0
  83. package/dist/db.d.cts +123 -0
  84. package/dist/db.d.ts +123 -0
  85. package/dist/db.js +228 -0
  86. package/dist/db.js.map +1 -0
  87. package/dist/decorators.cjs +67 -0
  88. package/dist/decorators.cjs.map +1 -0
  89. package/dist/decorators.d.cts +91 -0
  90. package/dist/decorators.d.ts +91 -0
  91. package/dist/decorators.js +65 -0
  92. package/dist/decorators.js.map +1 -0
  93. package/dist/event-subscriber.cjs +6 -0
  94. package/dist/event-subscriber.cjs.map +1 -0
  95. package/dist/event-subscriber.d.cts +116 -0
  96. package/dist/event-subscriber.d.ts +116 -0
  97. package/dist/event-subscriber.js +3 -0
  98. package/dist/event-subscriber.js.map +1 -0
  99. package/dist/event-testing.cjs +21 -0
  100. package/dist/event-testing.cjs.map +1 -0
  101. package/dist/event-testing.d.cts +110 -0
  102. package/dist/event-testing.d.ts +110 -0
  103. package/dist/event-testing.js +4 -0
  104. package/dist/event-testing.js.map +1 -0
  105. package/dist/event.cjs +30 -0
  106. package/dist/event.cjs.map +1 -0
  107. package/dist/event.d.cts +282 -0
  108. package/dist/event.d.ts +282 -0
  109. package/dist/event.js +13 -0
  110. package/dist/event.js.map +1 -0
  111. package/dist/exporters.cjs +17 -0
  112. package/dist/exporters.cjs.map +1 -0
  113. package/dist/exporters.d.cts +1 -0
  114. package/dist/exporters.d.ts +1 -0
  115. package/dist/exporters.js +4 -0
  116. package/dist/exporters.js.map +1 -0
  117. package/dist/functional.cjs +46 -0
  118. package/dist/functional.cjs.map +1 -0
  119. package/dist/functional.d.cts +478 -0
  120. package/dist/functional.d.ts +478 -0
  121. package/dist/functional.js +13 -0
  122. package/dist/functional.js.map +1 -0
  123. package/dist/http.cjs +189 -0
  124. package/dist/http.cjs.map +1 -0
  125. package/dist/http.d.cts +169 -0
  126. package/dist/http.d.ts +169 -0
  127. package/dist/http.js +184 -0
  128. package/dist/http.js.map +1 -0
  129. package/dist/index.cjs +333 -0
  130. package/dist/index.cjs.map +1 -0
  131. package/dist/index.d.cts +758 -0
  132. package/dist/index.d.ts +758 -0
  133. package/dist/index.js +143 -0
  134. package/dist/index.js.map +1 -0
  135. package/dist/instrumentation.cjs +182 -0
  136. package/dist/instrumentation.cjs.map +1 -0
  137. package/dist/instrumentation.d.cts +49 -0
  138. package/dist/instrumentation.d.ts +49 -0
  139. package/dist/instrumentation.js +179 -0
  140. package/dist/instrumentation.js.map +1 -0
  141. package/dist/logger.cjs +19 -0
  142. package/dist/logger.cjs.map +1 -0
  143. package/dist/logger.d.cts +146 -0
  144. package/dist/logger.d.ts +146 -0
  145. package/dist/logger.js +6 -0
  146. package/dist/logger.js.map +1 -0
  147. package/dist/metric-helpers.cjs +31 -0
  148. package/dist/metric-helpers.cjs.map +1 -0
  149. package/dist/metric-helpers.d.cts +13 -0
  150. package/dist/metric-helpers.d.ts +13 -0
  151. package/dist/metric-helpers.js +6 -0
  152. package/dist/metric-helpers.js.map +1 -0
  153. package/dist/metric-testing.cjs +21 -0
  154. package/dist/metric-testing.cjs.map +1 -0
  155. package/dist/metric-testing.d.cts +110 -0
  156. package/dist/metric-testing.d.ts +110 -0
  157. package/dist/metric-testing.js +4 -0
  158. package/dist/metric-testing.js.map +1 -0
  159. package/dist/metric.cjs +26 -0
  160. package/dist/metric.cjs.map +1 -0
  161. package/dist/metric.d.cts +240 -0
  162. package/dist/metric.d.ts +240 -0
  163. package/dist/metric.js +9 -0
  164. package/dist/metric.js.map +1 -0
  165. package/dist/processors.cjs +17 -0
  166. package/dist/processors.cjs.map +1 -0
  167. package/dist/processors.d.cts +1 -0
  168. package/dist/processors.d.ts +1 -0
  169. package/dist/processors.js +4 -0
  170. package/dist/processors.js.map +1 -0
  171. package/dist/sampling.cjs +40 -0
  172. package/dist/sampling.cjs.map +1 -0
  173. package/dist/sampling.d.cts +260 -0
  174. package/dist/sampling.d.ts +260 -0
  175. package/dist/sampling.js +7 -0
  176. package/dist/sampling.js.map +1 -0
  177. package/dist/semantic-helpers.cjs +35 -0
  178. package/dist/semantic-helpers.cjs.map +1 -0
  179. package/dist/semantic-helpers.d.cts +442 -0
  180. package/dist/semantic-helpers.d.ts +442 -0
  181. package/dist/semantic-helpers.js +14 -0
  182. package/dist/semantic-helpers.js.map +1 -0
  183. package/dist/tail-sampling-processor.cjs +13 -0
  184. package/dist/tail-sampling-processor.cjs.map +1 -0
  185. package/dist/tail-sampling-processor.d.cts +27 -0
  186. package/dist/tail-sampling-processor.d.ts +27 -0
  187. package/dist/tail-sampling-processor.js +4 -0
  188. package/dist/tail-sampling-processor.js.map +1 -0
  189. package/dist/testing.cjs +286 -0
  190. package/dist/testing.cjs.map +1 -0
  191. package/dist/testing.d.cts +291 -0
  192. package/dist/testing.d.ts +291 -0
  193. package/dist/testing.js +263 -0
  194. package/dist/testing.js.map +1 -0
  195. package/dist/trace-context-DRZdUvVY.d.cts +181 -0
  196. package/dist/trace-context-DRZdUvVY.d.ts +181 -0
  197. package/dist/trace-helpers.cjs +54 -0
  198. package/dist/trace-helpers.cjs.map +1 -0
  199. package/dist/trace-helpers.d.cts +524 -0
  200. package/dist/trace-helpers.d.ts +524 -0
  201. package/dist/trace-helpers.js +5 -0
  202. package/dist/trace-helpers.js.map +1 -0
  203. package/dist/tracer-provider.cjs +21 -0
  204. package/dist/tracer-provider.cjs.map +1 -0
  205. package/dist/tracer-provider.d.cts +169 -0
  206. package/dist/tracer-provider.d.ts +169 -0
  207. package/dist/tracer-provider.js +4 -0
  208. package/dist/tracer-provider.js.map +1 -0
  209. package/package.json +280 -0
  210. package/src/baggage-span-processor.test.ts +202 -0
  211. package/src/baggage-span-processor.ts +98 -0
  212. package/src/circuit-breaker.test.ts +341 -0
  213. package/src/circuit-breaker.ts +184 -0
  214. package/src/config.test.ts +94 -0
  215. package/src/config.ts +169 -0
  216. package/src/db.test.ts +252 -0
  217. package/src/db.ts +447 -0
  218. package/src/decorators.test.ts +203 -0
  219. package/src/decorators.ts +188 -0
  220. package/src/env-config.test.ts +246 -0
  221. package/src/env-config.ts +158 -0
  222. package/src/event-queue.test.ts +222 -0
  223. package/src/event-queue.ts +203 -0
  224. package/src/event-subscriber.ts +136 -0
  225. package/src/event-testing.ts +197 -0
  226. package/src/event.test.ts +718 -0
  227. package/src/event.ts +556 -0
  228. package/src/exporters.ts +96 -0
  229. package/src/functional.test.ts +1059 -0
  230. package/src/functional.ts +2295 -0
  231. package/src/http.test.ts +487 -0
  232. package/src/http.ts +424 -0
  233. package/src/index.ts +158 -0
  234. package/src/init.customization.test.ts +210 -0
  235. package/src/init.integrations.test.ts +366 -0
  236. package/src/init.openllmetry.test.ts +282 -0
  237. package/src/init.protocol.test.ts +215 -0
  238. package/src/init.ts +1426 -0
  239. package/src/instrumentation.test.ts +108 -0
  240. package/src/instrumentation.ts +308 -0
  241. package/src/logger.test.ts +117 -0
  242. package/src/logger.ts +246 -0
  243. package/src/metric-helpers.ts +47 -0
  244. package/src/metric-testing.ts +197 -0
  245. package/src/metric.ts +434 -0
  246. package/src/metrics.test.ts +205 -0
  247. package/src/operation-context.ts +93 -0
  248. package/src/processors.ts +106 -0
  249. package/src/rate-limiter.test.ts +199 -0
  250. package/src/rate-limiter.ts +98 -0
  251. package/src/sampling.test.ts +513 -0
  252. package/src/sampling.ts +428 -0
  253. package/src/semantic-helpers.test.ts +311 -0
  254. package/src/semantic-helpers.ts +584 -0
  255. package/src/shutdown.test.ts +311 -0
  256. package/src/shutdown.ts +222 -0
  257. package/src/stub.integration.test.ts +361 -0
  258. package/src/tail-sampling-processor.test.ts +226 -0
  259. package/src/tail-sampling-processor.ts +51 -0
  260. package/src/testing.ts +670 -0
  261. package/src/trace-context.ts +470 -0
  262. package/src/trace-helpers.new.test.ts +278 -0
  263. package/src/trace-helpers.test.ts +242 -0
  264. package/src/trace-helpers.ts +690 -0
  265. package/src/tracer-provider.test.ts +183 -0
  266. package/src/tracer-provider.ts +266 -0
  267. package/src/track.test.ts +153 -0
  268. package/src/track.ts +120 -0
  269. package/src/validation.test.ts +306 -0
  270. package/src/validation.ts +239 -0
  271. package/src/variable-name-inference.test.ts +178 -0
  272. package/src/variable-name-inference.ts +242 -0
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Event Subscriber Interface (Type-only)
3
+ *
4
+ * Import this interface to create custom subscribers without importing implementations.
5
+ * Keeps core package focused on OpenTelemetry with zero extra dependencies.
6
+ *
7
+ * For ready-made subscribers (PostHog, Mixpanel, Amplitude, Segment),
8
+ * see the separate `autotel-subscribers` package.
9
+ *
10
+ * @example Custom subscriber
11
+ * ```typescript
12
+ * import { EventSubscriber } from 'autotel/event-subscriber';
13
+ *
14
+ * class MyCustomSubscriber implements EventSubscriber {
15
+ * trackEvent(name: string, attributes?: Record<string, any>): void {
16
+ * // Send to your events platform
17
+ * }
18
+ * // ... implement other methods
19
+ * }
20
+ * ```
21
+ *
22
+ * @example Use pre-built subscribers
23
+ * ```typescript
24
+ * import { Events } from 'autotel/events';
25
+ * import { PostHogSubscriber } from 'autotel-subscribers/posthog';
26
+ * import { MixpanelSubscriber } from 'autotel-subscribers/mixpanel';
27
+ *
28
+ * const event =new Event('checkout', {
29
+ * subscribers: [
30
+ * new PostHogSubscriber({ apiKey: 'phc_...' }),
31
+ * new MixpanelSubscriber({ token: '...' })
32
+ * ]
33
+ * });
34
+ * ```
35
+ */
36
+ /**
37
+ * Event attributes (supports any JSON-serializable values)
38
+ */
39
+ type EventAttributes = Record<string, string | number | boolean>;
40
+ /**
41
+ * Funnel step status
42
+ */
43
+ type FunnelStatus = 'started' | 'completed' | 'abandoned' | 'failed';
44
+ /**
45
+ * Outcome status
46
+ */
47
+ type OutcomeStatus = 'success' | 'failure' | 'partial';
48
+ /**
49
+ * Event subscriber interface
50
+ *
51
+ * Implement this to send events to any platform.
52
+ * Zero runtime dependencies - just types.
53
+ *
54
+ * All tracking methods are async to support:
55
+ * - Backpressure signaling (buffer full)
56
+ * - Streaming platforms (Kafka, Kinesis, Pub/Sub)
57
+ * - Await delivery confirmation
58
+ * - Proper error propagation
59
+ */
60
+ interface EventSubscriber {
61
+ /**
62
+ * Track an event (e.g., "user.registered", "order.created")
63
+ *
64
+ * @returns Promise that resolves when event is sent (or buffered)
65
+ */
66
+ trackEvent(name: string, attributes?: EventAttributes): Promise<void>;
67
+ /**
68
+ * Track a funnel step (e.g., checkout: started → completed)
69
+ *
70
+ * @returns Promise that resolves when event is sent (or buffered)
71
+ */
72
+ trackFunnelStep(funnelName: string, step: FunnelStatus, attributes?: EventAttributes): Promise<void>;
73
+ /**
74
+ * Track an outcome (e.g., "payment.processing" → success/failure)
75
+ *
76
+ * @returns Promise that resolves when event is sent (or buffered)
77
+ */
78
+ trackOutcome(operationName: string, outcome: OutcomeStatus, attributes?: EventAttributes): Promise<void>;
79
+ /**
80
+ * Track a value/metric (e.g., revenue, cart value)
81
+ *
82
+ * @returns Promise that resolves when event is sent (or buffered)
83
+ */
84
+ trackValue(name: string, value: number, attributes?: EventAttributes): Promise<void>;
85
+ /**
86
+ * Optional: Flush pending events and clean up resources
87
+ *
88
+ * Implement this if your subscriber buffers events, maintains connections,
89
+ * or needs cleanup before shutdown. Called during graceful shutdown.
90
+ *
91
+ * @example
92
+ * ```typescript
93
+ * class MySubscriber implements EventSubscriber {
94
+ * async shutdown(): Promise<void> {
95
+ * await this.flushBuffer();
96
+ * await this.closeConnections();
97
+ * }
98
+ * }
99
+ * ```
100
+ */
101
+ shutdown?(): Promise<void>;
102
+ /**
103
+ * Optional: Subscriber name for debugging and error reporting
104
+ *
105
+ * @example "PostHogSubscriber", "SnowflakeSubscriber", "CustomWebhookSubscriber"
106
+ */
107
+ readonly name?: string;
108
+ /**
109
+ * Optional: Subscriber version for debugging
110
+ *
111
+ * @example "1.0.0"
112
+ */
113
+ readonly version?: string;
114
+ }
115
+
116
+ export type { EventAttributes, EventSubscriber, FunnelStatus, OutcomeStatus };
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Event Subscriber Interface (Type-only)
3
+ *
4
+ * Import this interface to create custom subscribers without importing implementations.
5
+ * Keeps core package focused on OpenTelemetry with zero extra dependencies.
6
+ *
7
+ * For ready-made subscribers (PostHog, Mixpanel, Amplitude, Segment),
8
+ * see the separate `autotel-subscribers` package.
9
+ *
10
+ * @example Custom subscriber
11
+ * ```typescript
12
+ * import { EventSubscriber } from 'autotel/event-subscriber';
13
+ *
14
+ * class MyCustomSubscriber implements EventSubscriber {
15
+ * trackEvent(name: string, attributes?: Record<string, any>): void {
16
+ * // Send to your events platform
17
+ * }
18
+ * // ... implement other methods
19
+ * }
20
+ * ```
21
+ *
22
+ * @example Use pre-built subscribers
23
+ * ```typescript
24
+ * import { Events } from 'autotel/events';
25
+ * import { PostHogSubscriber } from 'autotel-subscribers/posthog';
26
+ * import { MixpanelSubscriber } from 'autotel-subscribers/mixpanel';
27
+ *
28
+ * const event =new Event('checkout', {
29
+ * subscribers: [
30
+ * new PostHogSubscriber({ apiKey: 'phc_...' }),
31
+ * new MixpanelSubscriber({ token: '...' })
32
+ * ]
33
+ * });
34
+ * ```
35
+ */
36
+ /**
37
+ * Event attributes (supports any JSON-serializable values)
38
+ */
39
+ type EventAttributes = Record<string, string | number | boolean>;
40
+ /**
41
+ * Funnel step status
42
+ */
43
+ type FunnelStatus = 'started' | 'completed' | 'abandoned' | 'failed';
44
+ /**
45
+ * Outcome status
46
+ */
47
+ type OutcomeStatus = 'success' | 'failure' | 'partial';
48
+ /**
49
+ * Event subscriber interface
50
+ *
51
+ * Implement this to send events to any platform.
52
+ * Zero runtime dependencies - just types.
53
+ *
54
+ * All tracking methods are async to support:
55
+ * - Backpressure signaling (buffer full)
56
+ * - Streaming platforms (Kafka, Kinesis, Pub/Sub)
57
+ * - Await delivery confirmation
58
+ * - Proper error propagation
59
+ */
60
+ interface EventSubscriber {
61
+ /**
62
+ * Track an event (e.g., "user.registered", "order.created")
63
+ *
64
+ * @returns Promise that resolves when event is sent (or buffered)
65
+ */
66
+ trackEvent(name: string, attributes?: EventAttributes): Promise<void>;
67
+ /**
68
+ * Track a funnel step (e.g., checkout: started → completed)
69
+ *
70
+ * @returns Promise that resolves when event is sent (or buffered)
71
+ */
72
+ trackFunnelStep(funnelName: string, step: FunnelStatus, attributes?: EventAttributes): Promise<void>;
73
+ /**
74
+ * Track an outcome (e.g., "payment.processing" → success/failure)
75
+ *
76
+ * @returns Promise that resolves when event is sent (or buffered)
77
+ */
78
+ trackOutcome(operationName: string, outcome: OutcomeStatus, attributes?: EventAttributes): Promise<void>;
79
+ /**
80
+ * Track a value/metric (e.g., revenue, cart value)
81
+ *
82
+ * @returns Promise that resolves when event is sent (or buffered)
83
+ */
84
+ trackValue(name: string, value: number, attributes?: EventAttributes): Promise<void>;
85
+ /**
86
+ * Optional: Flush pending events and clean up resources
87
+ *
88
+ * Implement this if your subscriber buffers events, maintains connections,
89
+ * or needs cleanup before shutdown. Called during graceful shutdown.
90
+ *
91
+ * @example
92
+ * ```typescript
93
+ * class MySubscriber implements EventSubscriber {
94
+ * async shutdown(): Promise<void> {
95
+ * await this.flushBuffer();
96
+ * await this.closeConnections();
97
+ * }
98
+ * }
99
+ * ```
100
+ */
101
+ shutdown?(): Promise<void>;
102
+ /**
103
+ * Optional: Subscriber name for debugging and error reporting
104
+ *
105
+ * @example "PostHogSubscriber", "SnowflakeSubscriber", "CustomWebhookSubscriber"
106
+ */
107
+ readonly name?: string;
108
+ /**
109
+ * Optional: Subscriber version for debugging
110
+ *
111
+ * @example "1.0.0"
112
+ */
113
+ readonly version?: string;
114
+ }
115
+
116
+ export type { EventAttributes, EventSubscriber, FunnelStatus, OutcomeStatus };
@@ -0,0 +1,3 @@
1
+ import './chunk-LITNXTTT.js';
2
+ //# sourceMappingURL=event-subscriber.js.map
3
+ //# sourceMappingURL=event-subscriber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"event-subscriber.js"}
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ var chunkUY3UYPBZ_cjs = require('./chunk-UY3UYPBZ.cjs');
4
+ require('./chunk-G7VZBCD6.cjs');
5
+
6
+
7
+
8
+ Object.defineProperty(exports, "assertEventTracked", {
9
+ enumerable: true,
10
+ get: function () { return chunkUY3UYPBZ_cjs.assertEventTracked; }
11
+ });
12
+ Object.defineProperty(exports, "assertOutcomeTracked", {
13
+ enumerable: true,
14
+ get: function () { return chunkUY3UYPBZ_cjs.assertOutcomeTracked; }
15
+ });
16
+ Object.defineProperty(exports, "createEventCollector", {
17
+ enumerable: true,
18
+ get: function () { return chunkUY3UYPBZ_cjs.createEventCollector; }
19
+ });
20
+ //# sourceMappingURL=event-testing.cjs.map
21
+ //# sourceMappingURL=event-testing.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"event-testing.cjs"}
@@ -0,0 +1,110 @@
1
+ import { EventAttributes, FunnelStatus, OutcomeStatus } from './event-subscriber.cjs';
2
+
3
+ /**
4
+ * Testing utilities for Events
5
+ *
6
+ * Provides in-memory collection of events for testing purposes.
7
+ */
8
+
9
+ interface EventData {
10
+ event: string;
11
+ attributes?: EventAttributes;
12
+ service: string;
13
+ timestamp: number;
14
+ }
15
+ interface EventsFunnelStep {
16
+ funnel: string;
17
+ status: FunnelStatus;
18
+ attributes?: EventAttributes;
19
+ service: string;
20
+ timestamp: number;
21
+ }
22
+ interface EventsOutcome {
23
+ operation: string;
24
+ status: OutcomeStatus;
25
+ attributes?: EventAttributes;
26
+ service: string;
27
+ timestamp: number;
28
+ }
29
+ interface EventsValue {
30
+ metric: string;
31
+ value: number;
32
+ attributes?: EventAttributes;
33
+ service: string;
34
+ timestamp: number;
35
+ }
36
+ /**
37
+ * In-memory events collector for testing
38
+ */
39
+ interface EventCollector {
40
+ /** Get all collected events */
41
+ getEvents(): EventData[];
42
+ /** Get all collected funnel steps */
43
+ getFunnelSteps(): EventsFunnelStep[];
44
+ /** Get all collected outcomes */
45
+ getOutcomes(): EventsOutcome[];
46
+ /** Get all collected values */
47
+ getValues(): EventsValue[];
48
+ /** Clear all collected events */
49
+ clear(): void;
50
+ /** Record an event (internal use) */
51
+ recordEvent(event: EventData): void;
52
+ /** Record a funnel step (internal use) */
53
+ recordFunnelStep(step: EventsFunnelStep): void;
54
+ /** Record an outcome (internal use) */
55
+ recordOutcome(outcome: EventsOutcome): void;
56
+ /** Record a value (internal use) */
57
+ recordValue(value: EventsValue): void;
58
+ }
59
+ /**
60
+ * Create an in-memory events collector for testing
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * const collector = createEventCollector()
65
+ *
66
+ * const events = new Event('test-service', { collector })
67
+ * events.trackEvent('application.submitted', { jobId: '123' })
68
+ *
69
+ * const event =collector.getEvents()
70
+ * expect(events).toHaveLength(1)
71
+ * expect(events[0].event).toBe('application.submitted')
72
+ * ```
73
+ */
74
+ declare function createEventCollector(): EventCollector;
75
+ /**
76
+ * Assert that an events event was tracked
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * assertEventTracked({
81
+ * collector,
82
+ * eventName: 'application.submitted',
83
+ * attributes: { jobId: '123' }
84
+ * })
85
+ * ```
86
+ */
87
+ declare function assertEventTracked(options: {
88
+ collector: EventCollector;
89
+ eventName: string;
90
+ attributes?: Record<string, unknown>;
91
+ }): void;
92
+ /**
93
+ * Assert that an outcome was tracked
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * assertOutcomeTracked({
98
+ * collector,
99
+ * operation: 'email.delivery',
100
+ * status: 'success'
101
+ * })
102
+ * ```
103
+ */
104
+ declare function assertOutcomeTracked(options: {
105
+ collector: EventCollector;
106
+ operation: string;
107
+ status: 'success' | 'failure' | 'partial';
108
+ }): void;
109
+
110
+ export { type EventCollector, type EventData, type EventsFunnelStep, type EventsOutcome, type EventsValue, assertEventTracked, assertOutcomeTracked, createEventCollector };
@@ -0,0 +1,110 @@
1
+ import { EventAttributes, FunnelStatus, OutcomeStatus } from './event-subscriber.js';
2
+
3
+ /**
4
+ * Testing utilities for Events
5
+ *
6
+ * Provides in-memory collection of events for testing purposes.
7
+ */
8
+
9
+ interface EventData {
10
+ event: string;
11
+ attributes?: EventAttributes;
12
+ service: string;
13
+ timestamp: number;
14
+ }
15
+ interface EventsFunnelStep {
16
+ funnel: string;
17
+ status: FunnelStatus;
18
+ attributes?: EventAttributes;
19
+ service: string;
20
+ timestamp: number;
21
+ }
22
+ interface EventsOutcome {
23
+ operation: string;
24
+ status: OutcomeStatus;
25
+ attributes?: EventAttributes;
26
+ service: string;
27
+ timestamp: number;
28
+ }
29
+ interface EventsValue {
30
+ metric: string;
31
+ value: number;
32
+ attributes?: EventAttributes;
33
+ service: string;
34
+ timestamp: number;
35
+ }
36
+ /**
37
+ * In-memory events collector for testing
38
+ */
39
+ interface EventCollector {
40
+ /** Get all collected events */
41
+ getEvents(): EventData[];
42
+ /** Get all collected funnel steps */
43
+ getFunnelSteps(): EventsFunnelStep[];
44
+ /** Get all collected outcomes */
45
+ getOutcomes(): EventsOutcome[];
46
+ /** Get all collected values */
47
+ getValues(): EventsValue[];
48
+ /** Clear all collected events */
49
+ clear(): void;
50
+ /** Record an event (internal use) */
51
+ recordEvent(event: EventData): void;
52
+ /** Record a funnel step (internal use) */
53
+ recordFunnelStep(step: EventsFunnelStep): void;
54
+ /** Record an outcome (internal use) */
55
+ recordOutcome(outcome: EventsOutcome): void;
56
+ /** Record a value (internal use) */
57
+ recordValue(value: EventsValue): void;
58
+ }
59
+ /**
60
+ * Create an in-memory events collector for testing
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * const collector = createEventCollector()
65
+ *
66
+ * const events = new Event('test-service', { collector })
67
+ * events.trackEvent('application.submitted', { jobId: '123' })
68
+ *
69
+ * const event =collector.getEvents()
70
+ * expect(events).toHaveLength(1)
71
+ * expect(events[0].event).toBe('application.submitted')
72
+ * ```
73
+ */
74
+ declare function createEventCollector(): EventCollector;
75
+ /**
76
+ * Assert that an events event was tracked
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * assertEventTracked({
81
+ * collector,
82
+ * eventName: 'application.submitted',
83
+ * attributes: { jobId: '123' }
84
+ * })
85
+ * ```
86
+ */
87
+ declare function assertEventTracked(options: {
88
+ collector: EventCollector;
89
+ eventName: string;
90
+ attributes?: Record<string, unknown>;
91
+ }): void;
92
+ /**
93
+ * Assert that an outcome was tracked
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * assertOutcomeTracked({
98
+ * collector,
99
+ * operation: 'email.delivery',
100
+ * status: 'success'
101
+ * })
102
+ * ```
103
+ */
104
+ declare function assertOutcomeTracked(options: {
105
+ collector: EventCollector;
106
+ operation: string;
107
+ status: 'success' | 'failure' | 'partial';
108
+ }): void;
109
+
110
+ export { type EventCollector, type EventData, type EventsFunnelStep, type EventsOutcome, type EventsValue, assertEventTracked, assertOutcomeTracked, createEventCollector };
@@ -0,0 +1,4 @@
1
+ export { assertEventTracked, assertOutcomeTracked, createEventCollector } from './chunk-BZHG5IZ4.js';
2
+ import './chunk-Z6ZWNWWR.js';
3
+ //# sourceMappingURL=event-testing.js.map
4
+ //# sourceMappingURL=event-testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"event-testing.js"}
package/dist/event.cjs ADDED
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ var chunk77MSMAUQ_cjs = require('./chunk-77MSMAUQ.cjs');
4
+ require('./chunk-NZ72VDNY.cjs');
5
+ require('./chunk-UY3UYPBZ.cjs');
6
+ require('./chunk-YLPNXZFI.cjs');
7
+ require('./chunk-ABPEQ6RK.cjs');
8
+ require('./chunk-GVLK7YUU.cjs');
9
+ require('./chunk-HE6T6FIX.cjs');
10
+ require('./chunk-4OAT42CA.cjs');
11
+ require('./chunk-Y4Y2S7BM.cjs');
12
+ require('./chunk-URRW6M2C.cjs');
13
+ require('./chunk-G7VZBCD6.cjs');
14
+
15
+
16
+
17
+ Object.defineProperty(exports, "Event", {
18
+ enumerable: true,
19
+ get: function () { return chunk77MSMAUQ_cjs.Event; }
20
+ });
21
+ Object.defineProperty(exports, "getEvents", {
22
+ enumerable: true,
23
+ get: function () { return chunk77MSMAUQ_cjs.getEvents; }
24
+ });
25
+ Object.defineProperty(exports, "resetEvents", {
26
+ enumerable: true,
27
+ get: function () { return chunk77MSMAUQ_cjs.resetEvents; }
28
+ });
29
+ //# sourceMappingURL=event.cjs.map
30
+ //# sourceMappingURL=event.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"event.cjs"}