@kronos-ts/messaging 0.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 (266) hide show
  1. package/dist/command-bus.d.ts +30 -0
  2. package/dist/command-bus.d.ts.map +1 -0
  3. package/dist/command-bus.js +2 -0
  4. package/dist/command-bus.js.map +1 -0
  5. package/dist/command-handler.d.ts +58 -0
  6. package/dist/command-handler.d.ts.map +1 -0
  7. package/dist/command-handler.js +12 -0
  8. package/dist/command-handler.js.map +1 -0
  9. package/dist/command-handling-module.d.ts +53 -0
  10. package/dist/command-handling-module.d.ts.map +1 -0
  11. package/dist/command-handling-module.js +130 -0
  12. package/dist/command-handling-module.js.map +1 -0
  13. package/dist/correlation-data.d.ts +79 -0
  14. package/dist/correlation-data.d.ts.map +1 -0
  15. package/dist/correlation-data.js +133 -0
  16. package/dist/correlation-data.js.map +1 -0
  17. package/dist/dead-letter-queue.d.ts +134 -0
  18. package/dist/dead-letter-queue.d.ts.map +1 -0
  19. package/dist/dead-letter-queue.js +176 -0
  20. package/dist/dead-letter-queue.js.map +1 -0
  21. package/dist/dead-lettering-handler.d.ts +42 -0
  22. package/dist/dead-lettering-handler.d.ts.map +1 -0
  23. package/dist/dead-lettering-handler.js +67 -0
  24. package/dist/dead-lettering-handler.js.map +1 -0
  25. package/dist/descriptor.d.ts +135 -0
  26. package/dist/descriptor.d.ts.map +1 -0
  27. package/dist/descriptor.js +36 -0
  28. package/dist/descriptor.js.map +1 -0
  29. package/dist/emit-update.d.ts +22 -0
  30. package/dist/emit-update.d.ts.map +1 -0
  31. package/dist/emit-update.js +23 -0
  32. package/dist/emit-update.js.map +1 -0
  33. package/dist/event-bus.d.ts +29 -0
  34. package/dist/event-bus.d.ts.map +1 -0
  35. package/dist/event-bus.js +22 -0
  36. package/dist/event-bus.js.map +1 -0
  37. package/dist/event-criteria.d.ts +87 -0
  38. package/dist/event-criteria.d.ts.map +1 -0
  39. package/dist/event-criteria.js +90 -0
  40. package/dist/event-criteria.js.map +1 -0
  41. package/dist/event-gateway.d.ts +19 -0
  42. package/dist/event-gateway.d.ts.map +1 -0
  43. package/dist/event-gateway.js +22 -0
  44. package/dist/event-gateway.js.map +1 -0
  45. package/dist/event-handler.d.ts +30 -0
  46. package/dist/event-handler.d.ts.map +1 -0
  47. package/dist/event-handler.js +18 -0
  48. package/dist/event-handler.js.map +1 -0
  49. package/dist/event-processor-builder.d.ts +148 -0
  50. package/dist/event-processor-builder.d.ts.map +1 -0
  51. package/dist/event-processor-builder.js +175 -0
  52. package/dist/event-processor-builder.js.map +1 -0
  53. package/dist/event-processor.d.ts +10 -0
  54. package/dist/event-processor.d.ts.map +1 -0
  55. package/dist/event-processor.js +2 -0
  56. package/dist/event-processor.js.map +1 -0
  57. package/dist/event-sink.d.ts +23 -0
  58. package/dist/event-sink.d.ts.map +1 -0
  59. package/dist/event-sink.js +2 -0
  60. package/dist/event-sink.js.map +1 -0
  61. package/dist/event-source.d.ts +98 -0
  62. package/dist/event-source.d.ts.map +1 -0
  63. package/dist/event-source.js +191 -0
  64. package/dist/event-source.js.map +1 -0
  65. package/dist/gateway.d.ts +68 -0
  66. package/dist/gateway.d.ts.map +1 -0
  67. package/dist/gateway.js +62 -0
  68. package/dist/gateway.js.map +1 -0
  69. package/dist/handler-enhancer.d.ts +53 -0
  70. package/dist/handler-enhancer.d.ts.map +1 -0
  71. package/dist/handler-enhancer.js +17 -0
  72. package/dist/handler-enhancer.js.map +1 -0
  73. package/dist/handler.d.ts +51 -0
  74. package/dist/handler.d.ts.map +1 -0
  75. package/dist/handler.js +26 -0
  76. package/dist/handler.js.map +1 -0
  77. package/dist/index.d.ts +53 -0
  78. package/dist/index.d.ts.map +1 -0
  79. package/dist/index.js +103 -0
  80. package/dist/index.js.map +1 -0
  81. package/dist/intercepting-command-bus.d.ts +17 -0
  82. package/dist/intercepting-command-bus.d.ts.map +1 -0
  83. package/dist/intercepting-command-bus.js +54 -0
  84. package/dist/intercepting-command-bus.js.map +1 -0
  85. package/dist/intercepting-event-bus.d.ts +8 -0
  86. package/dist/intercepting-event-bus.d.ts.map +1 -0
  87. package/dist/intercepting-event-bus.js +22 -0
  88. package/dist/intercepting-event-bus.js.map +1 -0
  89. package/dist/intercepting-query-bus.d.ts +17 -0
  90. package/dist/intercepting-query-bus.d.ts.map +1 -0
  91. package/dist/intercepting-query-bus.js +68 -0
  92. package/dist/intercepting-query-bus.js.map +1 -0
  93. package/dist/interceptor.d.ts +46 -0
  94. package/dist/interceptor.d.ts.map +1 -0
  95. package/dist/interceptor.js +2 -0
  96. package/dist/interceptor.js.map +1 -0
  97. package/dist/message-monitor-registry.d.ts +28 -0
  98. package/dist/message-monitor-registry.d.ts.map +1 -0
  99. package/dist/message-monitor-registry.js +37 -0
  100. package/dist/message-monitor-registry.js.map +1 -0
  101. package/dist/message-monitor.d.ts +36 -0
  102. package/dist/message-monitor.d.ts.map +1 -0
  103. package/dist/message-monitor.js +39 -0
  104. package/dist/message-monitor.js.map +1 -0
  105. package/dist/message.d.ts +42 -0
  106. package/dist/message.d.ts.map +1 -0
  107. package/dist/message.js +2 -0
  108. package/dist/message.js.map +1 -0
  109. package/dist/processing-state.d.ts +115 -0
  110. package/dist/processing-state.d.ts.map +1 -0
  111. package/dist/processing-state.js +205 -0
  112. package/dist/processing-state.js.map +1 -0
  113. package/dist/processor-configuration.d.ts +51 -0
  114. package/dist/processor-configuration.d.ts.map +1 -0
  115. package/dist/processor-configuration.js +2 -0
  116. package/dist/processor-configuration.js.map +1 -0
  117. package/dist/query-bus.d.ts +51 -0
  118. package/dist/query-bus.d.ts.map +1 -0
  119. package/dist/query-bus.js +2 -0
  120. package/dist/query-bus.js.map +1 -0
  121. package/dist/query-handler.d.ts +35 -0
  122. package/dist/query-handler.d.ts.map +1 -0
  123. package/dist/query-handler.js +19 -0
  124. package/dist/query-handler.js.map +1 -0
  125. package/dist/query-handling-module.d.ts +24 -0
  126. package/dist/query-handling-module.d.ts.map +1 -0
  127. package/dist/query-handling-module.js +32 -0
  128. package/dist/query-handling-module.js.map +1 -0
  129. package/dist/replay-token.d.ts +31 -0
  130. package/dist/replay-token.d.ts.map +1 -0
  131. package/dist/replay-token.js +37 -0
  132. package/dist/replay-token.js.map +1 -0
  133. package/dist/retrying-command-bus.d.ts +32 -0
  134. package/dist/retrying-command-bus.d.ts.map +1 -0
  135. package/dist/retrying-command-bus.js +58 -0
  136. package/dist/retrying-command-bus.js.map +1 -0
  137. package/dist/routing-strategy.d.ts +30 -0
  138. package/dist/routing-strategy.d.ts.map +1 -0
  139. package/dist/routing-strategy.js +37 -0
  140. package/dist/routing-strategy.js.map +1 -0
  141. package/dist/segment.d.ts +72 -0
  142. package/dist/segment.d.ts.map +1 -0
  143. package/dist/segment.js +103 -0
  144. package/dist/segment.js.map +1 -0
  145. package/dist/send.d.ts +28 -0
  146. package/dist/send.d.ts.map +1 -0
  147. package/dist/send.js +36 -0
  148. package/dist/send.js.map +1 -0
  149. package/dist/serializer.d.ts +40 -0
  150. package/dist/serializer.d.ts.map +1 -0
  151. package/dist/serializer.js +90 -0
  152. package/dist/serializer.js.map +1 -0
  153. package/dist/simple-command-bus.d.ts +23 -0
  154. package/dist/simple-command-bus.d.ts.map +1 -0
  155. package/dist/simple-command-bus.js +49 -0
  156. package/dist/simple-command-bus.js.map +1 -0
  157. package/dist/simple-query-bus.d.ts +16 -0
  158. package/dist/simple-query-bus.d.ts.map +1 -0
  159. package/dist/simple-query-bus.js +122 -0
  160. package/dist/simple-query-bus.js.map +1 -0
  161. package/dist/span-factory.d.ts +58 -0
  162. package/dist/span-factory.d.ts.map +1 -0
  163. package/dist/span-factory.js +19 -0
  164. package/dist/span-factory.js.map +1 -0
  165. package/dist/streaming-event-processor.d.ts +65 -0
  166. package/dist/streaming-event-processor.d.ts.map +1 -0
  167. package/dist/streaming-event-processor.js +239 -0
  168. package/dist/streaming-event-processor.js.map +1 -0
  169. package/dist/subscribing-event-processor.d.ts +57 -0
  170. package/dist/subscribing-event-processor.d.ts.map +1 -0
  171. package/dist/subscribing-event-processor.js +100 -0
  172. package/dist/subscribing-event-processor.js.map +1 -0
  173. package/dist/subscription-query.d.ts +63 -0
  174. package/dist/subscription-query.d.ts.map +1 -0
  175. package/dist/subscription-query.js +119 -0
  176. package/dist/subscription-query.js.map +1 -0
  177. package/dist/token-store.d.ts +83 -0
  178. package/dist/token-store.d.ts.map +1 -0
  179. package/dist/token-store.js +112 -0
  180. package/dist/token-store.js.map +1 -0
  181. package/dist/tracing-command-bus.d.ts +16 -0
  182. package/dist/tracing-command-bus.d.ts.map +1 -0
  183. package/dist/tracing-command-bus.js +44 -0
  184. package/dist/tracing-command-bus.js.map +1 -0
  185. package/dist/tracing-handler-enhancer.d.ts +11 -0
  186. package/dist/tracing-handler-enhancer.d.ts.map +1 -0
  187. package/dist/tracing-handler-enhancer.js +27 -0
  188. package/dist/tracing-handler-enhancer.js.map +1 -0
  189. package/dist/tracking-event-processor.d.ts +72 -0
  190. package/dist/tracking-event-processor.d.ts.map +1 -0
  191. package/dist/tracking-event-processor.js +223 -0
  192. package/dist/tracking-event-processor.js.map +1 -0
  193. package/dist/tracking-token.d.ts +120 -0
  194. package/dist/tracking-token.d.ts.map +1 -0
  195. package/dist/tracking-token.js +132 -0
  196. package/dist/tracking-token.js.map +1 -0
  197. package/dist/transaction.d.ts +60 -0
  198. package/dist/transaction.d.ts.map +1 -0
  199. package/dist/transaction.js +74 -0
  200. package/dist/transaction.js.map +1 -0
  201. package/dist/unit-of-work.d.ts +41 -0
  202. package/dist/unit-of-work.d.ts.map +1 -0
  203. package/dist/unit-of-work.js +96 -0
  204. package/dist/unit-of-work.js.map +1 -0
  205. package/dist/upcaster.d.ts +91 -0
  206. package/dist/upcaster.d.ts.map +1 -0
  207. package/dist/upcaster.js +114 -0
  208. package/dist/upcaster.js.map +1 -0
  209. package/dist/with-namespace.d.ts +59 -0
  210. package/dist/with-namespace.d.ts.map +1 -0
  211. package/dist/with-namespace.js +42 -0
  212. package/dist/with-namespace.js.map +1 -0
  213. package/package.json +65 -0
  214. package/src/command-bus.ts +34 -0
  215. package/src/command-handler.ts +116 -0
  216. package/src/command-handling-module.ts +183 -0
  217. package/src/correlation-data.ts +169 -0
  218. package/src/dead-letter-queue.ts +330 -0
  219. package/src/dead-lettering-handler.ts +109 -0
  220. package/src/descriptor.ts +176 -0
  221. package/src/emit-update.ts +35 -0
  222. package/src/event-bus.ts +45 -0
  223. package/src/event-criteria.ts +141 -0
  224. package/src/event-gateway.ts +42 -0
  225. package/src/event-handler.ts +44 -0
  226. package/src/event-processor-builder.ts +246 -0
  227. package/src/event-processor.ts +9 -0
  228. package/src/event-sink.ts +23 -0
  229. package/src/event-source.ts +301 -0
  230. package/src/gateway.ts +144 -0
  231. package/src/handler-enhancer.ts +70 -0
  232. package/src/handler.ts +133 -0
  233. package/src/index.ts +356 -0
  234. package/src/intercepting-command-bus.ts +73 -0
  235. package/src/intercepting-event-bus.ts +29 -0
  236. package/src/intercepting-query-bus.ts +104 -0
  237. package/src/interceptor.ts +48 -0
  238. package/src/message-monitor-registry.ts +64 -0
  239. package/src/message-monitor.ts +68 -0
  240. package/src/message.ts +41 -0
  241. package/src/processing-state.ts +258 -0
  242. package/src/processor-configuration.ts +59 -0
  243. package/src/query-bus.ts +69 -0
  244. package/src/query-handler.ts +49 -0
  245. package/src/query-handling-module.ts +44 -0
  246. package/src/replay-token.ts +53 -0
  247. package/src/retrying-command-bus.ts +80 -0
  248. package/src/routing-strategy.ts +59 -0
  249. package/src/segment.ts +136 -0
  250. package/src/send.ts +44 -0
  251. package/src/serializer.ts +122 -0
  252. package/src/simple-command-bus.ts +59 -0
  253. package/src/simple-query-bus.ts +158 -0
  254. package/src/span-factory.ts +81 -0
  255. package/src/streaming-event-processor.ts +351 -0
  256. package/src/subscribing-event-processor.ts +169 -0
  257. package/src/subscription-query.ts +173 -0
  258. package/src/token-store.ts +211 -0
  259. package/src/tracing-command-bus.ts +52 -0
  260. package/src/tracing-handler-enhancer.ts +34 -0
  261. package/src/tracking-event-processor.ts +336 -0
  262. package/src/tracking-token.ts +231 -0
  263. package/src/transaction.ts +98 -0
  264. package/src/unit-of-work.ts +138 -0
  265. package/src/upcaster.ts +174 -0
  266. package/src/with-namespace.ts +75 -0
@@ -0,0 +1,23 @@
1
+ import { resourceKey, qualifiedNameToString } from "@kronos-ts/common";
2
+ import { requireInvocationPhase } from "./processing-state.js";
3
+ /**
4
+ * Resource key for the query bus component.
5
+ * Written by handling modules + processors at handler-invocation entry (D-44).
6
+ */
7
+ export const QUERY_BUS_KEY = resourceKey("queryBus");
8
+ /**
9
+ * Plan 04-01 (HDL-02 / D-42): module-level emitUpdate.
10
+ *
11
+ * Throws NoActiveUnitOfWork outside a UoW; throws WrongUoWPhase outside
12
+ * INVOCATION phase (D-43 mutator guard). Emits a subscription query update
13
+ * through the active query bus.
14
+ */
15
+ export const emitUpdate = (queryDescriptor, filter, update) => {
16
+ const state = requireInvocationPhase(); // D-43 mutator guard
17
+ const bus = state.resources.get(QUERY_BUS_KEY.symbol);
18
+ if (!bus)
19
+ throw new Error("No query bus configured");
20
+ const queryName = qualifiedNameToString(queryDescriptor.name);
21
+ bus.emitUpdate(queryName, filter, update);
22
+ };
23
+ //# sourceMappingURL=emit-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit-update.js","sourceRoot":"","sources":["../src/emit-update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAoB,MAAM,mBAAmB,CAAA;AACxF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAa9D;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAA0B,WAAW,CAAC,UAAU,CAAC,CAAA;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAuB,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;IAChF,MAAM,KAAK,GAAG,sBAAsB,EAAE,CAAA,CAAC,qBAAqB;IAC5D,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAyB,CAAA;IAC7E,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IACpD,MAAM,SAAS,GAAG,qBAAqB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;IAC7D,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,MAAiC,EAAE,MAAM,CAAC,CAAA;AACtE,CAAC,CAAA"}
@@ -0,0 +1,29 @@
1
+ import type { EventMessage } from "./message.js";
2
+ import type { EventSink } from "./event-sink.js";
3
+ /**
4
+ * Subscribable source of events — push-based delivery.
5
+ */
6
+ export interface SubscribableEventSource {
7
+ /**
8
+ * Subscribe to events as they are published.
9
+ * Returns an unsubscribe function.
10
+ *
11
+ * @param handler Called with each batch of events as they are appended.
12
+ */
13
+ subscribe(handler: (events: ReadonlyArray<EventMessage>) => Promise<void>): () => void;
14
+ }
15
+ /**
16
+ * The event bus — combines event publication (EventSink) with
17
+ * push-based subscription (SubscribableEventSource).
18
+ *
19
+ * In event sourcing setups, the EventStore serves as the EventBus.
20
+ * In non-event-sourcing setups, SimpleEventBus provides in-memory distribution.
21
+ */
22
+ export interface EventBus extends SubscribableEventSource, EventSink {
23
+ }
24
+ /**
25
+ * In-memory event bus for non-event-sourcing scenarios.
26
+ * Publishes events directly to all subscribers.
27
+ */
28
+ export declare function createSimpleEventBus(): EventBus;
29
+ //# sourceMappingURL=event-bus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../src/event-bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,SAAS,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAA;CACvF;AAED;;;;;;GAMG;AACH,MAAM,WAAW,QAAS,SAAQ,uBAAuB,EAAE,SAAS;CAAG;AAEvE;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,QAAQ,CAe/C"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * In-memory event bus for non-event-sourcing scenarios.
3
+ * Publishes events directly to all subscribers.
4
+ */
5
+ export function createSimpleEventBus() {
6
+ const subscribers = new Set();
7
+ return {
8
+ async publish(events) {
9
+ for (const subscriber of subscribers) {
10
+ try {
11
+ await subscriber(events);
12
+ }
13
+ catch { /* ignore subscriber errors */ }
14
+ }
15
+ },
16
+ subscribe(handler) {
17
+ subscribers.add(handler);
18
+ return () => { subscribers.delete(handler); };
19
+ },
20
+ };
21
+ }
22
+ //# sourceMappingURL=event-bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../src/event-bus.ts"],"names":[],"mappings":"AAyBA;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,WAAW,GAAG,IAAI,GAAG,EAA0D,CAAA;IAErF,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,MAAM;YAClB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,IAAI,CAAC;oBAAC,MAAM,UAAU,CAAC,MAAM,CAAC,CAAA;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,8BAA8B,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;QAED,SAAS,CAAC,OAAO;YACf,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACxB,OAAO,GAAG,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA,CAAC,CAAC,CAAA;QAC9C,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,87 @@
1
+ import type { Tag, QualifiedName } from "@kronos-ts/common";
2
+ import type { EventDescriptor } from "./descriptor.js";
3
+ /**
4
+ * Criteria for selecting events from the event store.
5
+ * Used for both sourcing conditions (which events to load) and
6
+ * append conditions (which events define the consistency boundary).
7
+ *
8
+ * Criteria are composable via `or()` and restrictable via `ofTypes()`.
9
+ */
10
+ export type EventCriteria = TagCriteria | TypeRestrictedCriteria | EitherCriteria | AnyTagCriteria;
11
+ export interface TagCriteria {
12
+ readonly kind: "tags";
13
+ readonly tags: ReadonlyArray<Tag>;
14
+ }
15
+ export interface TypeRestrictedCriteria {
16
+ readonly kind: "type-restricted";
17
+ readonly inner: TagCriteria | AnyTagCriteria;
18
+ readonly types: ReadonlyArray<string>;
19
+ }
20
+ export interface EitherCriteria {
21
+ readonly kind: "either";
22
+ readonly criteria: ReadonlyArray<EventCriteria>;
23
+ }
24
+ export interface AnyTagCriteria {
25
+ readonly kind: "any-tag";
26
+ }
27
+ /**
28
+ * A tag or any-tag criteria that allows further restriction by event types.
29
+ */
30
+ export type RestrictableEventCriteria = (TagCriteria | AnyTagCriteria) & {
31
+ /**
32
+ * Restrict matched events to the given types.
33
+ * Accepts event descriptors or qualified name strings.
34
+ */
35
+ ofTypes(...types: Array<EventDescriptor<any> | QualifiedName | string>): EventCriteria;
36
+ };
37
+ export declare const EventCriteria: {
38
+ /**
39
+ * Match events having all the specified tags.
40
+ *
41
+ * Accepts individual Tag objects or a record of key-value pairs:
42
+ * ```typescript
43
+ * EventCriteria.havingTags({ courseId: id.courseId })
44
+ * EventCriteria.havingTags(tag("courseId", id.courseId))
45
+ * ```
46
+ */
47
+ readonly havingTags: (...args: Tag[] | [Record<string, string>]) => RestrictableEventCriteria;
48
+ /**
49
+ * Match events having any tag (i.e., all tagged events).
50
+ */
51
+ readonly havingAnyTag: () => RestrictableEventCriteria;
52
+ /**
53
+ * Match events matching any of the given criteria (logical OR).
54
+ */
55
+ readonly either: (...criteria: EventCriteria[]) => EventCriteria;
56
+ };
57
+ /**
58
+ * Match events having all the specified tags.
59
+ *
60
+ * Shorthand for `EventCriteria.havingTags()`. Supports `.ofTypes()` chaining.
61
+ *
62
+ * ```typescript
63
+ * tags({ courseId: id.courseId })
64
+ * tags({ courseId: id.courseId }).ofTypes(CourseCreated, CourseCapacityChanged)
65
+ * ```
66
+ */
67
+ export declare function tags(...args: Tag[] | [Record<string, string>]): RestrictableEventCriteria;
68
+ /**
69
+ * Match events having any tag.
70
+ *
71
+ * Shorthand for `EventCriteria.havingAnyTag()`. Supports `.ofTypes()` chaining.
72
+ */
73
+ export declare function anyTag(): RestrictableEventCriteria;
74
+ /**
75
+ * Match events matching any of the given criteria (logical OR).
76
+ *
77
+ * Shorthand for `EventCriteria.either()`.
78
+ *
79
+ * ```typescript
80
+ * either(
81
+ * tags({ courseId: id.courseId }),
82
+ * tags({ studentId: id.studentId }).ofTypes(StudentSubscribed),
83
+ * )
84
+ * ```
85
+ */
86
+ export declare function either(...criteria: EventCriteria[]): EventCriteria;
87
+ //# sourceMappingURL=event-criteria.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-criteria.d.ts","sourceRoot":"","sources":["../src/event-criteria.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,sBAAsB,GACtB,cAAc,GACd,cAAc,CAAA;AAElB,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;IAChC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,CAAA;IAC5C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;CAChD;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,WAAW,GAAG,cAAc,CAAC,GAAG;IACvE;;;OAGG;IACH,OAAO,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,aAAa,GAAG,MAAM,CAAC,GAAG,aAAa,CAAA;CACvF,CAAA;AAqBD,eAAO,MAAM,aAAa;IACxB;;;;;;;;OAQG;mCACiB,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAAG,yBAAyB;IAOhF;;OAEG;iCACa,yBAAyB;IAIzC;;OAEG;mCACiB,aAAa,EAAE,KAAG,aAAa;CAG3C,CAAA;AAMV;;;;;;;;;GASG;AACH,wBAAgB,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,yBAAyB,CAEzF;AAED;;;;GAIG;AACH,wBAAgB,MAAM,IAAI,yBAAyB,CAElD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,GAAG,QAAQ,EAAE,aAAa,EAAE,GAAG,aAAa,CAElE"}
@@ -0,0 +1,90 @@
1
+ import { qualifiedNameToString, tagsFromRecord } from "@kronos-ts/common";
2
+ function resolveTypeName(t) {
3
+ if (typeof t === "string")
4
+ return t;
5
+ if ("kind" in t && t.kind === "event")
6
+ return qualifiedNameToString(t.name);
7
+ if ("namespace" in t && "name" in t)
8
+ return qualifiedNameToString(t);
9
+ return String(t);
10
+ }
11
+ function makeRestrictable(criteria) {
12
+ return Object.assign(criteria, {
13
+ ofTypes(...types) {
14
+ return {
15
+ kind: "type-restricted",
16
+ inner: criteria,
17
+ types: types.map(resolveTypeName),
18
+ };
19
+ },
20
+ });
21
+ }
22
+ export const EventCriteria = {
23
+ /**
24
+ * Match events having all the specified tags.
25
+ *
26
+ * Accepts individual Tag objects or a record of key-value pairs:
27
+ * ```typescript
28
+ * EventCriteria.havingTags({ courseId: id.courseId })
29
+ * EventCriteria.havingTags(tag("courseId", id.courseId))
30
+ * ```
31
+ */
32
+ havingTags(...args) {
33
+ if (args.length === 1 && typeof args[0] === "object" && !("key" in args[0])) {
34
+ return makeRestrictable({ kind: "tags", tags: tagsFromRecord(args[0]) });
35
+ }
36
+ return makeRestrictable({ kind: "tags", tags: args });
37
+ },
38
+ /**
39
+ * Match events having any tag (i.e., all tagged events).
40
+ */
41
+ havingAnyTag() {
42
+ return makeRestrictable({ kind: "any-tag" });
43
+ },
44
+ /**
45
+ * Match events matching any of the given criteria (logical OR).
46
+ */
47
+ either(...criteria) {
48
+ return { kind: "either", criteria };
49
+ },
50
+ };
51
+ // ---------------------------------------------------------------------------
52
+ // Standalone shorthand functions
53
+ // ---------------------------------------------------------------------------
54
+ /**
55
+ * Match events having all the specified tags.
56
+ *
57
+ * Shorthand for `EventCriteria.havingTags()`. Supports `.ofTypes()` chaining.
58
+ *
59
+ * ```typescript
60
+ * tags({ courseId: id.courseId })
61
+ * tags({ courseId: id.courseId }).ofTypes(CourseCreated, CourseCapacityChanged)
62
+ * ```
63
+ */
64
+ export function tags(...args) {
65
+ return EventCriteria.havingTags(...args);
66
+ }
67
+ /**
68
+ * Match events having any tag.
69
+ *
70
+ * Shorthand for `EventCriteria.havingAnyTag()`. Supports `.ofTypes()` chaining.
71
+ */
72
+ export function anyTag() {
73
+ return EventCriteria.havingAnyTag();
74
+ }
75
+ /**
76
+ * Match events matching any of the given criteria (logical OR).
77
+ *
78
+ * Shorthand for `EventCriteria.either()`.
79
+ *
80
+ * ```typescript
81
+ * either(
82
+ * tags({ courseId: id.courseId }),
83
+ * tags({ studentId: id.studentId }).ofTypes(StudentSubscribed),
84
+ * )
85
+ * ```
86
+ */
87
+ export function either(...criteria) {
88
+ return EventCriteria.either(...criteria);
89
+ }
90
+ //# sourceMappingURL=event-criteria.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-criteria.js","sourceRoot":"","sources":["../src/event-criteria.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AA+CzE,SAAS,eAAe,CAAC,CAAgD;IACvE,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAA;IACnC,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAC3E,IAAI,WAAW,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,qBAAqB,CAAC,CAAkB,CAAC,CAAA;IACrF,OAAO,MAAM,CAAC,CAAC,CAAC,CAAA;AAClB,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAsC;IAC9D,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;QAC7B,OAAO,CAAC,GAAG,KAA2D;YACpE,OAAO;gBACL,IAAI,EAAE,iBAA0B;gBAChC,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC;aAClC,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B;;;;;;;;OAQG;IACH,UAAU,CAAC,GAAG,IAAsC;QAClD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,OAAO,gBAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAA2B,CAAC,EAAE,CAAC,CAAA;QACpG,CAAC;QACD,OAAO,gBAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAa,EAAE,CAAC,CAAA;IAChE,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,gBAAgB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;IAC9C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAG,QAAyB;QACjC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;IACrC,CAAC;CACO,CAAA;AAEV,8EAA8E;AAC9E,iCAAiC;AACjC,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,MAAM,UAAU,IAAI,CAAC,GAAG,IAAsC;IAC5D,OAAO,aAAa,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAA;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM;IACpB,OAAO,aAAa,CAAC,YAAY,EAAE,CAAA;AACrC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,MAAM,CAAC,GAAG,QAAyB;IACjD,OAAO,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAA;AAC1C,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { EventSink } from "./event-sink.js";
2
+ import type { EventDescriptor } from "./descriptor.js";
3
+ import type { z } from "zod";
4
+ /**
5
+ * User-facing gateway for publishing events directly (without going through
6
+ * command handlers).
7
+ *
8
+ */
9
+ export interface EventGateway {
10
+ /**
11
+ * Publish a single event described by its descriptor.
12
+ */
13
+ publish<P extends z.ZodType>(descriptor: EventDescriptor<P>, payload: z.infer<P>, metadata?: Record<string, unknown>): Promise<void>;
14
+ }
15
+ /**
16
+ * Creates an event gateway backed by an event sink.
17
+ */
18
+ export declare function createEventGateway(eventSink: EventSink): EventGateway;
19
+ //# sourceMappingURL=event-gateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-gateway.d.ts","sourceRoot":"","sources":["../src/event-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAE5B;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EACzB,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,EAC9B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC,CAAA;CACjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,CAgBrE"}
@@ -0,0 +1,22 @@
1
+ import { generateIdentifier } from "@kronos-ts/common";
2
+ /**
3
+ * Creates an event gateway backed by an event sink.
4
+ */
5
+ export function createEventGateway(eventSink) {
6
+ return {
7
+ async publish(descriptor, payload, metadata = {}) {
8
+ const tags = descriptor.tags ? descriptor.tags(payload) : [];
9
+ const event = {
10
+ identifier: generateIdentifier(),
11
+ name: descriptor.name,
12
+ version: descriptor.version,
13
+ payload,
14
+ metadata,
15
+ timestamp: Date.now(),
16
+ tags,
17
+ };
18
+ await eventSink.publish([event]);
19
+ },
20
+ };
21
+ }
22
+ //# sourceMappingURL=event-gateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-gateway.js","sourceRoot":"","sources":["../src/event-gateway.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAmBtD;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAoB;IACrD,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,GAAG,EAAE;YAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YAC5D,MAAM,KAAK,GAAiB;gBAC1B,UAAU,EAAE,kBAAkB,EAAE;gBAChC,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,OAAO;gBACP,QAAQ;gBACR,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,IAAI;aACL,CAAA;YACD,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;QAClC,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { z } from "zod";
2
+ import type { Metadata } from "@kronos-ts/common";
3
+ import type { EventDescriptor } from "./descriptor.js";
4
+ /**
5
+ * A registered singular event handler — pairs an event descriptor with its handler
6
+ * function. Mirrors {@link import("./command-handler.js").CommandHandlerDefinition}
7
+ * structurally so all three handler shapes (command / event / query) share the same
8
+ * pattern.
9
+ */
10
+ export interface EventHandlerDefinition<P extends z.ZodType = z.ZodType> {
11
+ readonly kind: "event-handler";
12
+ readonly descriptor: EventDescriptor<P>;
13
+ readonly handler: (event: z.infer<P>, metadata: Metadata) => Promise<void> | void;
14
+ }
15
+ /**
16
+ * Defines a singular event handler.
17
+ *
18
+ * ```
19
+ * const onCourseCreated = eventHandler(CourseCreated, async (event, metadata) => {
20
+ * await db.courses.insert({ id: event.courseId, name: event.name })
21
+ * })
22
+ * ```
23
+ *
24
+ * Use with `trackingProcessor(...).eventHandlers(onCreated, onCapChanged).build()` or
25
+ * `subscribingProcessor(...).eventHandlers(...).build()`. Symmetric to
26
+ * {@link import("./command-handler.js").commandHandler} and
27
+ * {@link import("./query-handler.js").queryHandler}.
28
+ */
29
+ export declare function eventHandler<P extends z.ZodType>(descriptor: EventDescriptor<P>, handler: (event: z.infer<P>, metadata: Metadata) => Promise<void> | void): EventHandlerDefinition<P>;
30
+ //# sourceMappingURL=event-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-handler.d.ts","sourceRoot":"","sources":["../src/event-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAOtD;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;IACrE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;IAC9B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,CAAA;IACvC,QAAQ,CAAC,OAAO,EAAE,CAChB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EACjB,QAAQ,EAAE,QAAQ,KACf,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAC1B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAC9C,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,EAC9B,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GACvE,sBAAsB,CAAC,CAAC,CAAC,CAE3B"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Defines a singular event handler.
3
+ *
4
+ * ```
5
+ * const onCourseCreated = eventHandler(CourseCreated, async (event, metadata) => {
6
+ * await db.courses.insert({ id: event.courseId, name: event.name })
7
+ * })
8
+ * ```
9
+ *
10
+ * Use with `trackingProcessor(...).eventHandlers(onCreated, onCapChanged).build()` or
11
+ * `subscribingProcessor(...).eventHandlers(...).build()`. Symmetric to
12
+ * {@link import("./command-handler.js").commandHandler} and
13
+ * {@link import("./query-handler.js").queryHandler}.
14
+ */
15
+ export function eventHandler(descriptor, handler) {
16
+ return { kind: "event-handler", descriptor, handler };
17
+ }
18
+ //# sourceMappingURL=event-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-handler.js","sourceRoot":"","sources":["../src/event-handler.ts"],"names":[],"mappings":"AAwBA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,YAAY,CAC1B,UAA8B,EAC9B,OAAwE;IAExE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,OAAO,EAAE,CAAA;AACvD,CAAC"}
@@ -0,0 +1,148 @@
1
+ import type { EventHandlerDefinition } from "./event-handler.js";
2
+ import type { TokenStore } from "./token-store.js";
3
+ import type { UoWRunner } from "./unit-of-work.js";
4
+ import type { EventProcessingErrorHandler } from "./tracking-event-processor.js";
5
+ import type { SequencedDeadLetterQueue } from "./dead-letter-queue.js";
6
+ /**
7
+ * Base configuration shared by all event processor types.
8
+ *
9
+ * Plan 11-02: option types carry a flat `eventHandlers: EventHandlerDefinition[]`
10
+ * array. The processor (not the handler bundle) owns reset semantics — see
11
+ * `TrackingProcessorModule.onReset`.
12
+ */
13
+ interface EventProcessorBase {
14
+ readonly name: string;
15
+ readonly eventHandlers: ReadonlyArray<EventHandlerDefinition>;
16
+ }
17
+ /**
18
+ * Configuration for a tracking event processor (polling-based, with token store).
19
+ */
20
+ export interface TrackingProcessorModule extends EventProcessorBase {
21
+ readonly kind: "tracking";
22
+ readonly batchSize?: number;
23
+ readonly pollingIntervalMs?: number;
24
+ readonly tokenStore?: TokenStore;
25
+ readonly unitOfWorkRunner?: UoWRunner;
26
+ readonly errorHandler?: EventProcessingErrorHandler;
27
+ readonly deadLetterQueue?: SequencedDeadLetterQueue;
28
+ /** Number of segments created on first startup. Default 16 (Axon Framework parity). Always set by builder.build(). */
29
+ readonly initialSegmentCount: number;
30
+ readonly claimExtensionThresholdMs?: number;
31
+ readonly tokenClaimIntervalMs?: number;
32
+ /** Reset callback invoked when the processor is reset. Reset is processor-level (clear token + replay), and the callback that wipes view state belongs alongside it. */
33
+ readonly onReset?: () => Promise<void> | void;
34
+ }
35
+ /**
36
+ * Configuration for a subscribing event processor (push-based, no tracking).
37
+ *
38
+ * Subscribing processors do not support reset — see `supportsReset()` on the
39
+ * runtime instance — so there is no `onReset` field here.
40
+ */
41
+ export interface SubscribingProcessorModule extends EventProcessorBase {
42
+ readonly kind: "subscribing";
43
+ readonly unitOfWorkRunner?: UoWRunner;
44
+ readonly errorHandler?: EventProcessingErrorHandler;
45
+ }
46
+ export type EventProcessorModule = TrackingProcessorModule | SubscribingProcessorModule;
47
+ /**
48
+ * Builder for a tracking event processor.
49
+ *
50
+ * Tracking processors poll the event store for new events, maintain
51
+ * position via a token store, and support replay/reset.
52
+ *
53
+ * ```typescript
54
+ * const onCreated = eventHandler(CourseCreated, async (e) => { ... })
55
+ * const onCapChanged = eventHandler(CourseCapacityChanged, async (e) => { ... })
56
+ *
57
+ * trackingProcessor("course-projection")
58
+ * .eventHandlers(onCreated, onCapChanged)
59
+ * .onReset(async () => courseViews.clear())
60
+ * .batchSize(50)
61
+ * .build()
62
+ * ```
63
+ *
64
+ * NOTE: Pooled streaming processor support is deferred to a follow-up
65
+ * research phase exploring how that model should fit Node/Bun runtime
66
+ * semantics, where worker threads are not reservable the same way as JVM
67
+ * threads.
68
+ */
69
+ export declare function trackingProcessor(name: string): TrackingProcessorBuilder;
70
+ export declare class TrackingProcessorBuilder {
71
+ private readonly _name;
72
+ private readonly _eventHandlers;
73
+ private _onReset?;
74
+ private _batchSize?;
75
+ private _pollingIntervalMs?;
76
+ private _tokenStore?;
77
+ private _unitOfWorkRunner?;
78
+ private _errorHandler?;
79
+ private _deadLetterQueue?;
80
+ private _initialSegmentCount?;
81
+ private _claimExtensionThresholdMs?;
82
+ private _tokenClaimIntervalMs?;
83
+ constructor(name: string);
84
+ /** Register one or more singular event handlers on this processor. */
85
+ eventHandlers(...handlers: EventHandlerDefinition[]): this;
86
+ /** Register a callback fired when the processor is reset (clears view state for replay). */
87
+ onReset(fn: () => Promise<void> | void): this;
88
+ /** Events per batch/transaction. Default: 100. */
89
+ batchSize(size: number): this;
90
+ /** Polling interval in ms. Default: 500. */
91
+ pollingIntervalMs(ms: number): this;
92
+ /** Override the token store for this processor. */
93
+ tokenStore(store: TokenStore): this;
94
+ /**
95
+ * Override the UnitOfWork runner for this processor. Compose with
96
+ * `transactionalUnitOfWorkFactory(runInUoW, txManager)` to attach
97
+ * transactional semantics.
98
+ */
99
+ unitOfWorkRunner(runner: UoWRunner): this;
100
+ /** Override the error handler for this processor. */
101
+ errorHandler(handler: EventProcessingErrorHandler): this;
102
+ /** Set a dead letter queue for this processor. */
103
+ deadLetterQueue(queue: SequencedDeadLetterQueue): this;
104
+ /** Number of segments to create on first startup. Default: 16 (Axon Framework parity). */
105
+ initialSegmentCount(count: number): this;
106
+ /** @internal Build the processor configuration. */
107
+ build(): TrackingProcessorModule;
108
+ }
109
+ /**
110
+ * Builder for a subscribing event processor.
111
+ *
112
+ * Subscribing processors receive events pushed from the event source
113
+ * as they are appended. No token store, no position tracking, no replay.
114
+ *
115
+ * ```typescript
116
+ * const onNotification = eventHandler(NotificationRaised, async (e) => { ... })
117
+ *
118
+ * subscribingProcessor("notifications")
119
+ * .eventHandlers(onNotification)
120
+ * .build()
121
+ * ```
122
+ *
123
+ * Subscribing processors do NOT support reset (`supportsReset() === false`),
124
+ * so there is no `.onReset(fn)` builder method here — that lives on
125
+ * `TrackingProcessorBuilder` only.
126
+ */
127
+ export declare function subscribingProcessor(name: string): SubscribingProcessorBuilder;
128
+ export declare class SubscribingProcessorBuilder {
129
+ private readonly _name;
130
+ private readonly _eventHandlers;
131
+ private _unitOfWorkRunner?;
132
+ private _errorHandler?;
133
+ constructor(name: string);
134
+ /** Register one or more singular event handlers on this processor. */
135
+ eventHandlers(...handlers: EventHandlerDefinition[]): this;
136
+ /**
137
+ * Override the UnitOfWork runner for this processor. Compose with
138
+ * `transactionalUnitOfWorkFactory(runInUoW, txManager)` to attach
139
+ * transactional semantics.
140
+ */
141
+ unitOfWorkRunner(runner: UoWRunner): this;
142
+ /** Override the error handler for this processor. */
143
+ errorHandler(handler: EventProcessingErrorHandler): this;
144
+ /** @internal Build the processor configuration. */
145
+ build(): SubscribingProcessorModule;
146
+ }
147
+ export {};
148
+ //# sourceMappingURL=event-processor-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-processor-builder.d.ts","sourceRoot":"","sources":["../src/event-processor-builder.ts"],"names":[],"mappings":"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"}