@kronos-ts/messaging 0.1.1 → 0.3.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 (102) hide show
  1. package/dist/command-handler.d.ts +15 -15
  2. package/dist/command-handler.d.ts.map +1 -1
  3. package/dist/command-handler.js.map +1 -1
  4. package/dist/command-handling-module.js +2 -2
  5. package/dist/command-handling-module.js.map +1 -1
  6. package/dist/dead-lettering-handler.js +1 -1
  7. package/dist/dead-lettering-handler.js.map +1 -1
  8. package/dist/emit-update.d.ts +2 -1
  9. package/dist/emit-update.d.ts.map +1 -1
  10. package/dist/emit-update.js.map +1 -1
  11. package/dist/event-handler.d.ts +5 -5
  12. package/dist/event-handler.d.ts.map +1 -1
  13. package/dist/event-handler.js +2 -2
  14. package/dist/event-handler.js.map +1 -1
  15. package/dist/event-processor-builder.d.ts +3 -3
  16. package/dist/event-processor-builder.js +3 -3
  17. package/dist/event-scheduler.d.ts +95 -0
  18. package/dist/event-scheduler.d.ts.map +1 -0
  19. package/dist/event-scheduler.js +47 -0
  20. package/dist/event-scheduler.js.map +1 -0
  21. package/dist/gateway.d.ts +7 -5
  22. package/dist/gateway.d.ts.map +1 -1
  23. package/dist/gateway.js +9 -12
  24. package/dist/gateway.js.map +1 -1
  25. package/dist/handler.d.ts +13 -13
  26. package/dist/handler.d.ts.map +1 -1
  27. package/dist/handler.js.map +1 -1
  28. package/dist/in-memory-event-scheduler.d.ts +45 -0
  29. package/dist/in-memory-event-scheduler.d.ts.map +1 -0
  30. package/dist/in-memory-event-scheduler.js +112 -0
  31. package/dist/in-memory-event-scheduler.js.map +1 -0
  32. package/dist/index.d.ts +5 -2
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +5 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/intercepting-command-bus.d.ts +1 -1
  37. package/dist/intercepting-command-bus.d.ts.map +1 -1
  38. package/dist/intercepting-command-bus.js +3 -4
  39. package/dist/intercepting-command-bus.js.map +1 -1
  40. package/dist/intercepting-query-bus.d.ts +1 -1
  41. package/dist/intercepting-query-bus.d.ts.map +1 -1
  42. package/dist/intercepting-query-bus.js +3 -4
  43. package/dist/intercepting-query-bus.js.map +1 -1
  44. package/dist/interceptor.d.ts +18 -3
  45. package/dist/interceptor.d.ts.map +1 -1
  46. package/dist/message.d.ts +4 -0
  47. package/dist/message.d.ts.map +1 -1
  48. package/dist/query-bus.d.ts +8 -3
  49. package/dist/query-bus.d.ts.map +1 -1
  50. package/dist/query-handler.d.ts +5 -5
  51. package/dist/query-handler.d.ts.map +1 -1
  52. package/dist/query-handler.js +2 -2
  53. package/dist/query-handler.js.map +1 -1
  54. package/dist/query-handling-module.js +1 -1
  55. package/dist/query-handling-module.js.map +1 -1
  56. package/dist/simple-command-bus.d.ts +11 -4
  57. package/dist/simple-command-bus.d.ts.map +1 -1
  58. package/dist/simple-command-bus.js +16 -10
  59. package/dist/simple-command-bus.js.map +1 -1
  60. package/dist/simple-query-bus.d.ts.map +1 -1
  61. package/dist/simple-query-bus.js +4 -3
  62. package/dist/simple-query-bus.js.map +1 -1
  63. package/dist/streaming-event-processor.js +1 -1
  64. package/dist/streaming-event-processor.js.map +1 -1
  65. package/dist/subscribing-event-processor.js +1 -1
  66. package/dist/subscribing-event-processor.js.map +1 -1
  67. package/dist/subscription-filter.d.ts +43 -0
  68. package/dist/subscription-filter.d.ts.map +1 -0
  69. package/dist/subscription-filter.js +71 -0
  70. package/dist/subscription-filter.js.map +1 -0
  71. package/dist/tracking-event-processor.js +1 -1
  72. package/dist/tracking-event-processor.js.map +1 -1
  73. package/dist/transaction.d.ts +31 -0
  74. package/dist/transaction.d.ts.map +1 -1
  75. package/dist/transaction.js +80 -0
  76. package/dist/transaction.js.map +1 -1
  77. package/package.json +1 -1
  78. package/src/command-handler.ts +15 -28
  79. package/src/command-handling-module.ts +2 -2
  80. package/src/dead-lettering-handler.ts +1 -1
  81. package/src/emit-update.ts +3 -2
  82. package/src/event-handler.ts +5 -8
  83. package/src/event-processor-builder.ts +3 -3
  84. package/src/event-scheduler.ts +96 -0
  85. package/src/gateway.ts +14 -22
  86. package/src/handler.ts +13 -22
  87. package/src/in-memory-event-scheduler.ts +150 -0
  88. package/src/index.ts +23 -1
  89. package/src/intercepting-command-bus.ts +7 -6
  90. package/src/intercepting-query-bus.ts +11 -9
  91. package/src/interceptor.ts +21 -4
  92. package/src/message.ts +5 -0
  93. package/src/query-bus.ts +8 -3
  94. package/src/query-handler.ts +5 -5
  95. package/src/query-handling-module.ts +1 -1
  96. package/src/simple-command-bus.ts +17 -11
  97. package/src/simple-query-bus.ts +8 -6
  98. package/src/streaming-event-processor.ts +1 -1
  99. package/src/subscribing-event-processor.ts +1 -1
  100. package/src/subscription-filter.ts +85 -0
  101. package/src/tracking-event-processor.ts +1 -1
  102. package/src/transaction.ts +84 -0
@@ -0,0 +1,45 @@
1
+ /**
2
+ * In-memory {@link EventScheduler} — intended for tests only.
3
+ *
4
+ * Backed by a `Map<scheduleId, record>` and `setTimeout`. Publishes fired
5
+ * events through a supplied {@link EventSink} (typically the in-memory
6
+ * event bus or a test spy).
7
+ *
8
+ * # UoW semantics (best-effort, test-grade)
9
+ *
10
+ * - `schedule()` must be called inside a UoW (INVOCATION phase). The
11
+ * record is staged immediately so cancel() inside the SAME UoW sees it,
12
+ * but the `setTimeout` arming is deferred to AFTER_COMMIT — so if the
13
+ * UoW rolls back the schedule never fires. `onError` cleans the staged
14
+ * record so callers see `not-found` on the rolled-back token.
15
+ *
16
+ * - `cancel()` may be called inside or outside a UoW. State change is
17
+ * applied immediately for caller-visibility; this means a UoW that
18
+ * cancels and then rolls back does NOT restore the schedule. This
19
+ * differs from the postgres implementation (which is true
20
+ * transactional) and is acceptable for the in-memory's test-only
21
+ * remit. Document this when writing tests that depend on cancel
22
+ * rollback semantics — use the postgres scheduler for that.
23
+ *
24
+ * # NOT production
25
+ *
26
+ * No persistence, no recovery on restart, no at-least-once. A test-only
27
+ * spy with a real-enough surface to exercise framework wiring.
28
+ */
29
+ import type { EventSink } from "./event-sink.js";
30
+ import type { EventScheduler } from "./event-scheduler.js";
31
+ export interface InMemoryEventSchedulerOptions {
32
+ readonly eventSink: EventSink;
33
+ /** Override `Date.now` for deterministic tests. Defaults to `Date.now`. */
34
+ readonly now?: () => number;
35
+ }
36
+ export interface InMemoryEventScheduler extends EventScheduler {
37
+ /**
38
+ * Cancel any armed timers and drop all internal state. Tests call this
39
+ * in `afterEach` to ensure schedulers from one test do not fire into
40
+ * another. Not part of the public {@link EventScheduler} contract.
41
+ */
42
+ stop(): Promise<void>;
43
+ }
44
+ export declare function createInMemoryEventScheduler(options: InMemoryEventSchedulerOptions): InMemoryEventScheduler;
45
+ //# sourceMappingURL=in-memory-event-scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-event-scheduler.d.ts","sourceRoot":"","sources":["../src/in-memory-event-scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,EAAE,cAAc,EAA+B,MAAM,sBAAsB,CAAA;AAkBvF,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC5D;;;;OAIG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,6BAA6B,GACrC,sBAAsB,CAmFxB"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * In-memory {@link EventScheduler} — intended for tests only.
3
+ *
4
+ * Backed by a `Map<scheduleId, record>` and `setTimeout`. Publishes fired
5
+ * events through a supplied {@link EventSink} (typically the in-memory
6
+ * event bus or a test spy).
7
+ *
8
+ * # UoW semantics (best-effort, test-grade)
9
+ *
10
+ * - `schedule()` must be called inside a UoW (INVOCATION phase). The
11
+ * record is staged immediately so cancel() inside the SAME UoW sees it,
12
+ * but the `setTimeout` arming is deferred to AFTER_COMMIT — so if the
13
+ * UoW rolls back the schedule never fires. `onError` cleans the staged
14
+ * record so callers see `not-found` on the rolled-back token.
15
+ *
16
+ * - `cancel()` may be called inside or outside a UoW. State change is
17
+ * applied immediately for caller-visibility; this means a UoW that
18
+ * cancels and then rolls back does NOT restore the schedule. This
19
+ * differs from the postgres implementation (which is true
20
+ * transactional) and is acceptable for the in-memory's test-only
21
+ * remit. Document this when writing tests that depend on cancel
22
+ * rollback semantics — use the postgres scheduler for that.
23
+ *
24
+ * # NOT production
25
+ *
26
+ * No persistence, no recovery on restart, no at-least-once. A test-only
27
+ * spy with a real-enough surface to exercise framework wiring.
28
+ */
29
+ import { requireInvocationPhase, onAfterCommit, onError, processingStateStorage, } from "./processing-state.js";
30
+ import { generateIdentifier } from "@kronos-ts/common";
31
+ export function createInMemoryEventScheduler(options) {
32
+ const { eventSink } = options;
33
+ const now = options.now ?? Date.now;
34
+ const records = new Map();
35
+ function armTimer(id, record) {
36
+ const delay = Math.max(0, record.fireAt - now());
37
+ record.timer = setTimeout(() => {
38
+ const rec = records.get(id);
39
+ if (!rec || rec.status !== "pending")
40
+ return;
41
+ rec.status = "appended";
42
+ rec.timer = undefined;
43
+ eventSink.publish([rec.event]).catch((err) => {
44
+ // Test-only: surface but do not crash the process. Real
45
+ // implementations need an at-least-once retry; not modelled here.
46
+ console.warn("inMemoryEventScheduler: publish failed:", err);
47
+ });
48
+ }, delay);
49
+ }
50
+ return {
51
+ async schedule(event, at) {
52
+ requireInvocationPhase();
53
+ const id = generateIdentifier();
54
+ const record = {
55
+ status: "pending",
56
+ event,
57
+ fireAt: at.getTime(),
58
+ };
59
+ records.set(id, record);
60
+ onAfterCommit(() => {
61
+ const rec = records.get(id);
62
+ if (!rec || rec.status !== "pending")
63
+ return;
64
+ armTimer(id, rec);
65
+ });
66
+ onError(() => {
67
+ // Roll back the staged record so post-rollback cancel() sees
68
+ // `not-found` rather than `cancelled`.
69
+ const rec = records.get(id);
70
+ if (rec && rec.status === "pending")
71
+ records.delete(id);
72
+ });
73
+ return { id };
74
+ },
75
+ async cancel(token) {
76
+ const rec = records.get(token.id);
77
+ if (!rec)
78
+ return { kind: "not-found" };
79
+ if (rec.status === "appended")
80
+ return { kind: "already-appended" };
81
+ if (rec.status === "cancelled")
82
+ return { kind: "not-found" };
83
+ rec.status = "cancelled";
84
+ if (rec.timer !== undefined) {
85
+ clearTimeout(rec.timer);
86
+ rec.timer = undefined;
87
+ }
88
+ // Best-effort UoW participation: if we're inside a UoW that later
89
+ // errors, revert the cancel so the schedule's pending state
90
+ // re-materialises. The original timer (if it was armed) has already
91
+ // been cleared — the AFTER_COMMIT re-arm cycle is not re-driven
92
+ // here, which means a cancel + rollback inside a post-commit window
93
+ // would not re-fire. Acceptable for the in-memory's test-only remit.
94
+ if (processingStateStorage.getStore() !== undefined) {
95
+ onError(() => {
96
+ const r = records.get(token.id);
97
+ if (r && r.status === "cancelled")
98
+ r.status = "pending";
99
+ });
100
+ }
101
+ return { kind: "cancelled" };
102
+ },
103
+ async stop() {
104
+ for (const rec of records.values()) {
105
+ if (rec.timer !== undefined)
106
+ clearTimeout(rec.timer);
107
+ }
108
+ records.clear();
109
+ },
110
+ };
111
+ }
112
+ //# sourceMappingURL=in-memory-event-scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-event-scheduler.js","sourceRoot":"","sources":["../src/in-memory-event-scheduler.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { type Message, type CommandMessage, type CommandResultMessage, type EventMessage, type QueryMessage, } from "./message.js";
1
+ export { type Message, type CommandMessage, type CommandResultMessage, type EventMessage, type SequencedEventMessage, type QueryMessage, } from "./message.js";
2
2
  export { type CommandDescriptor, type EventDescriptor, type QueryDescriptor, type MessageDescriptor, command, event, query, } from "./descriptor.js";
3
3
  export { type TagCriteria, type TypeRestrictedCriteria, type EitherCriteria, type AnyTagCriteria, type RestrictableEventCriteria, EventCriteria, tags, anyTag, either, } from "./event-criteria.js";
4
4
  export { Phase, type PhaseValue, on as onPhase, onPrepareCommit, onCommit, onAfterCommit, onError, whenComplete, NoActiveUnitOfWork, WrongUoWPhase, } from "./processing-state.js";
@@ -20,6 +20,7 @@ export { createInterceptingQueryBus } from "./intercepting-query-bus.js";
20
20
  export { createTracingCommandBus } from "./tracing-command-bus.js";
21
21
  export { type CommandGateway, type QueryGateway, createCommandGateway, createQueryGateway, } from "./gateway.js";
22
22
  export { type SubscriptionQueryResult, type UpdateHandler, createUpdateHandler, runAfterCommitOrImmediately, } from "./subscription-query.js";
23
+ export { type SubscriptionFilter, payloadEquals, applySubscriptionFilter, extractStructuredFilter, matchesPayloadEquals, } from "./subscription-filter.js";
23
24
  export { type EventSink } from "./event-sink.js";
24
25
  export { type SubscribableEventSource, type EventBus, createSimpleEventBus, } from "./event-bus.js";
25
26
  export { createInterceptingEventBus } from "./intercepting-event-bus.js";
@@ -31,10 +32,12 @@ export { type Segment, ROOT_SEGMENT, segment, segmentMatches, splitSegment, merg
31
32
  export { type TokenStore, UnableToClaimTokenError, createInMemoryTokenStore, } from "./token-store.js";
32
33
  export { type TrackingToken, type GlobalSequenceToken, type ReplayToken, globalSequenceToken, FIRST_TOKEN, LATEST_TOKEN, replayToken, isReplayToken, isGlobalSequenceToken, advanceToken, isReplaying, unwrapToken, wasProcessedBeforeReset, } from "./tracking-token.js";
33
34
  export { isReplay, REPLAY_STATE_KEY, } from "./replay-token.js";
34
- export { type TransactionManager, noTransactionManager, getActiveTransaction, transactionalUnitOfWorkFactory, TRANSACTION_KEY, } from "./transaction.js";
35
+ export { type TransactionManager, noTransactionManager, getActiveTransaction, getOrBeginActiveTransaction, transactionalUnitOfWorkFactory, lazyTransactionalUnitOfWorkFactory, TRANSACTION_KEY, } from "./transaction.js";
35
36
  export { type RetryPolicy, exponentialBackoffRetryPolicy, createRetryingCommandBus, } from "./retrying-command-bus.js";
36
37
  export { send, COMMAND_BUS_KEY } from "./send.js";
37
38
  export { emitUpdate, QUERY_BUS_KEY } from "./emit-update.js";
39
+ export { type EventScheduler, type ScheduleToken, type CancelResult, } from "./event-scheduler.js";
40
+ export { type InMemoryEventScheduler, type InMemoryEventSchedulerOptions, createInMemoryEventScheduler, } from "./in-memory-event-scheduler.js";
38
41
  export { registerCommandHandlersNatively, createCommandInvocation, type MinimalConfiguration, } from "./command-handling-module.js";
39
42
  export { registerQueryHandlersNatively } from "./query-handling-module.js";
40
43
  export { type SubscribingEventProcessor, type SubscribingEventProcessorOptions, createSubscribingEventProcessor, } from "./subscribing-event-processor.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -44,6 +44,7 @@ export { createTracingCommandBus } from "./tracing-command-bus.js";
44
44
  export { createCommandGateway, createQueryGateway, } from "./gateway.js";
45
45
  // Subscription queries
46
46
  export { createUpdateHandler, runAfterCommitOrImmediately, } from "./subscription-query.js";
47
+ export { payloadEquals, applySubscriptionFilter, extractStructuredFilter, matchesPayloadEquals, } from "./subscription-filter.js";
47
48
  // Event sink (publish-only)
48
49
  export {} from "./event-sink.js";
49
50
  // Event bus (publish + subscribe)
@@ -67,12 +68,15 @@ export { globalSequenceToken, FIRST_TOKEN, LATEST_TOKEN, replayToken, isReplayTo
67
68
  // Replay detection (ProcessingContext helper)
68
69
  export { isReplay, REPLAY_STATE_KEY, } from "./replay-token.js";
69
70
  // Transaction management
70
- export { noTransactionManager, getActiveTransaction, transactionalUnitOfWorkFactory, TRANSACTION_KEY, } from "./transaction.js";
71
+ export { noTransactionManager, getActiveTransaction, getOrBeginActiveTransaction, transactionalUnitOfWorkFactory, lazyTransactionalUnitOfWorkFactory, TRANSACTION_KEY, } from "./transaction.js";
71
72
  // Retrying command bus
72
73
  export { exponentialBackoffRetryPolicy, createRetryingCommandBus, } from "./retrying-command-bus.js";
73
74
  // Module-level handler helpers (Plan 04-01 / HDL-02 / D-42)
74
75
  export { send, COMMAND_BUS_KEY } from "./send.js";
75
76
  export { emitUpdate, QUERY_BUS_KEY } from "./emit-update.js";
77
+ // Event scheduling
78
+ export {} from "./event-scheduler.js";
79
+ export { createInMemoryEventScheduler, } from "./in-memory-event-scheduler.js";
76
80
  // Modules — Plan 08-03a (D-82): function-style helpers replace Module-shape factories
77
81
  export { registerCommandHandlersNatively, createCommandInvocation, } from "./command-handling-module.js";
78
82
  export { registerQueryHandlersNatively } from "./query-handling-module.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,6 @@ export declare function createInterceptingCommandBus(delegate: CommandBus): Comm
12
12
  /** Register a dispatch interceptor. Returns an unsubscribe function. */
13
13
  registerDispatchInterceptor(interceptor: DispatchInterceptor<CommandMessage>): () => void;
14
14
  /** Register a handler interceptor. Returns an unsubscribe function. */
15
- registerHandlerInterceptor(interceptor: HandlerInterceptor): () => void;
15
+ registerHandlerInterceptor(interceptor: HandlerInterceptor<CommandMessage>): () => void;
16
16
  };
17
17
  //# sourceMappingURL=intercepting-command-bus.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"intercepting-command-bus.d.ts","sourceRoot":"","sources":["../src/intercepting-command-bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE/E;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,UAAU,GACnB,UAAU,GAAG;IACd,wEAAwE;IACxE,2BAA2B,CAAC,WAAW,EAAE,mBAAmB,CAAC,cAAc,CAAC,GAAG,MAAM,IAAI,CAAA;IACzF,uEAAuE;IACvE,0BAA0B,CAAC,WAAW,EAAE,kBAAkB,GAAG,MAAM,IAAI,CAAA;CACxE,CAsDA"}
1
+ {"version":3,"file":"intercepting-command-bus.d.ts","sourceRoot":"","sources":["../src/intercepting-command-bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE/E;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,UAAU,GACnB,UAAU,GAAG;IACd,wEAAwE;IACxE,2BAA2B,CAAC,WAAW,EAAE,mBAAmB,CAAC,cAAc,CAAC,GAAG,MAAM,IAAI,CAAA;IACzF,uEAAuE;IACvE,0BAA0B,CAAC,WAAW,EAAE,kBAAkB,CAAC,cAAc,CAAC,GAAG,MAAM,IAAI,CAAA;CACxF,CAuDA"}
@@ -18,18 +18,17 @@ export function createInterceptingCommandBus(delegate) {
18
18
  return delegate.dispatch(interceptedMessage);
19
19
  },
20
20
  subscribe(commandName, handler) {
21
- // Wrap the handler with handler interceptors
22
21
  const wrappedHandler = (message) => {
23
22
  if (handlerInterceptors.length === 0) {
24
23
  return handler(message);
25
24
  }
26
- let chain = () => handler(message);
25
+ let chain = (currentMessage) => handler(currentMessage);
27
26
  for (let i = handlerInterceptors.length - 1; i >= 0; i--) {
28
27
  const interceptor = handlerInterceptors[i];
29
28
  const next = chain;
30
- chain = () => interceptor(message, next);
29
+ chain = (currentMessage) => interceptor(currentMessage, (replacementMessage) => next(replacementMessage ?? currentMessage));
31
30
  }
32
- return chain();
31
+ return chain(message);
33
32
  };
34
33
  delegate.subscribe(commandName, wrappedHandler);
35
34
  },
@@ -1 +1 @@
1
- {"version":3,"file":"intercepting-command-bus.js","sourceRoot":"","sources":["../src/intercepting-command-bus.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAC1C,QAAoB;IAOpB,MAAM,oBAAoB,GAA+C,EAAE,CAAA;IAC3E,MAAM,mBAAmB,GAA8B,EAAE,CAAA;IAEzD,OAAO;QACL,KAAK,CAAC,QAAQ,CAAC,OAAuB;YACpC,sDAAsD;YACtD,IAAI,kBAAkB,GAAG,OAAO,CAAA;YAChC,KAAK,MAAM,WAAW,IAAI,oBAAoB,EAAE,CAAC;gBAC/C,kBAAkB,GAAG,MAAM,WAAW,CAAC,kBAAkB,CAAC,CAAA;YAC5D,CAAC;YAED,OAAO,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;QAC9C,CAAC;QAED,SAAS,CACP,WAAmB,EACnB,OAAsD;YAEtD,6CAA6C;YAC7C,MAAM,cAAc,GAAG,CAAC,OAAuB,EAAE,EAAE;gBACjD,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAA;gBACzB,CAAC;gBAED,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBAClC,KAAK,IAAI,CAAC,GAAG,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBACzD,MAAM,WAAW,GAAG,mBAAmB,CAAC,CAAC,CAAE,CAAA;oBAC3C,MAAM,IAAI,GAAG,KAAK,CAAA;oBAClB,KAAK,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gBAC1C,CAAC;gBAED,OAAO,KAAK,EAAE,CAAA;YAChB,CAAC,CAAA;YAED,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,cAAc,CAAC,CAAA;QACjD,CAAC;QAED,2BAA2B,CAAC,WAAW;YACrC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACtC,OAAO,GAAG,EAAE;gBACV,MAAM,GAAG,GAAG,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;gBACrD,IAAI,GAAG,IAAI,CAAC;oBAAE,oBAAoB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YACnD,CAAC,CAAA;QACH,CAAC;QAED,0BAA0B,CAAC,WAAW;YACpC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACrC,OAAO,GAAG,EAAE;gBACV,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;gBACpD,IAAI,GAAG,IAAI,CAAC;oBAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YAClD,CAAC,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"intercepting-command-bus.js","sourceRoot":"","sources":["../src/intercepting-command-bus.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAC1C,QAAoB;IAOpB,MAAM,oBAAoB,GAA+C,EAAE,CAAA;IAC3E,MAAM,mBAAmB,GAA8C,EAAE,CAAA;IAEzE,OAAO;QACL,KAAK,CAAC,QAAQ,CAAC,OAAuB;YACpC,sDAAsD;YACtD,IAAI,kBAAkB,GAAG,OAAO,CAAA;YAChC,KAAK,MAAM,WAAW,IAAI,oBAAoB,EAAE,CAAC;gBAC/C,kBAAkB,GAAG,MAAM,WAAW,CAAC,kBAAkB,CAAC,CAAA;YAC5D,CAAC;YAED,OAAO,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;QAC9C,CAAC;QAED,SAAS,CACP,WAAmB,EACnB,OAAsD;YAEtD,MAAM,cAAc,GAAG,CAAC,OAAuB,EAAE,EAAE;gBACjD,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAA;gBACzB,CAAC;gBAED,IAAI,KAAK,GAAG,CAAC,cAA8B,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;gBACvE,KAAK,IAAI,CAAC,GAAG,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBACzD,MAAM,WAAW,GAAG,mBAAmB,CAAC,CAAC,CAAE,CAAA;oBAC3C,MAAM,IAAI,GAAG,KAAK,CAAA;oBAClB,KAAK,GAAG,CAAC,cAA8B,EAAE,EAAE,CACzC,WAAW,CAAC,cAAc,EAAE,CAAC,kBAAkB,EAAE,EAAE,CACjD,IAAI,CAAC,kBAAkB,IAAI,cAAc,CAAC,CAAC,CAAA;gBACjD,CAAC;gBAED,OAAO,KAAK,CAAC,OAAO,CAAC,CAAA;YACvB,CAAC,CAAA;YAED,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,cAAc,CAAC,CAAA;QACjD,CAAC;QAED,2BAA2B,CAAC,WAAW;YACrC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACtC,OAAO,GAAG,EAAE;gBACV,MAAM,GAAG,GAAG,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;gBACrD,IAAI,GAAG,IAAI,CAAC;oBAAE,oBAAoB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YACnD,CAAC,CAAA;QACH,CAAC;QAED,0BAA0B,CAAC,WAAW;YACpC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACrC,OAAO,GAAG,EAAE;gBACV,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;gBACpD,IAAI,GAAG,IAAI,CAAC;oBAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YAClD,CAAC,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -12,6 +12,6 @@ export declare function createInterceptingQueryBus(delegate: QueryBus): QueryBus
12
12
  /** Register a dispatch interceptor. Returns an unsubscribe function. */
13
13
  registerDispatchInterceptor(interceptor: DispatchInterceptor<QueryMessage>): () => void;
14
14
  /** Register a handler interceptor. Returns an unsubscribe function. */
15
- registerHandlerInterceptor(interceptor: HandlerInterceptor): () => void;
15
+ registerHandlerInterceptor(interceptor: HandlerInterceptor<QueryMessage>): () => void;
16
16
  };
17
17
  //# sourceMappingURL=intercepting-query-bus.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"intercepting-query-bus.d.ts","sourceRoot":"","sources":["../src/intercepting-query-bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE/E;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,QAAQ,GACjB,QAAQ,GAAG;IACZ,wEAAwE;IACxE,2BAA2B,CAAC,WAAW,EAAE,mBAAmB,CAAC,YAAY,CAAC,GAAG,MAAM,IAAI,CAAA;IACvF,uEAAuE;IACvE,0BAA0B,CAAC,WAAW,EAAE,kBAAkB,GAAG,MAAM,IAAI,CAAA;CACxE,CAoFA"}
1
+ {"version":3,"file":"intercepting-query-bus.d.ts","sourceRoot":"","sources":["../src/intercepting-query-bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAGhD,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE/E;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,QAAQ,GACjB,QAAQ,GAAG;IACZ,wEAAwE;IACxE,2BAA2B,CAAC,WAAW,EAAE,mBAAmB,CAAC,YAAY,CAAC,GAAG,MAAM,IAAI,CAAA;IACvF,uEAAuE;IACvE,0BAA0B,CAAC,WAAW,EAAE,kBAAkB,CAAC,YAAY,CAAC,GAAG,MAAM,IAAI,CAAA;CACtF,CAqFA"}
@@ -17,18 +17,17 @@ export function createInterceptingQueryBus(delegate) {
17
17
  return delegate.query(interceptedMessage);
18
18
  },
19
19
  subscribe(queryName, handler) {
20
- // Wrap the handler with handler interceptors
21
20
  const wrappedHandler = (message) => {
22
21
  if (handlerInterceptors.length === 0) {
23
22
  return handler(message);
24
23
  }
25
- let chain = () => handler(message);
24
+ let chain = (currentMessage) => handler(currentMessage);
26
25
  for (let i = handlerInterceptors.length - 1; i >= 0; i--) {
27
26
  const interceptor = handlerInterceptors[i];
28
27
  const next = chain;
29
- chain = () => interceptor(message, next);
28
+ chain = (currentMessage) => interceptor(currentMessage, (replacementMessage) => next(replacementMessage ?? currentMessage));
30
29
  }
31
- return chain();
30
+ return chain(message);
32
31
  };
33
32
  delegate.subscribe(queryName, wrappedHandler);
34
33
  },
@@ -1 +1 @@
1
- {"version":3,"file":"intercepting-query-bus.js","sourceRoot":"","sources":["../src/intercepting-query-bus.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CACxC,QAAkB;IAOlB,MAAM,oBAAoB,GAA6C,EAAE,CAAA;IACzE,MAAM,mBAAmB,GAA8B,EAAE,CAAA;IAEzD,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,OAAqB;YAC/B,IAAI,kBAAkB,GAAG,OAAO,CAAA;YAChC,KAAK,MAAM,WAAW,IAAI,oBAAoB,EAAE,CAAC;gBAC/C,kBAAkB,GAAG,MAAM,WAAW,CAAC,kBAAkB,CAAC,CAAA;YAC5D,CAAC;YAED,OAAO,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;QAC3C,CAAC;QAED,SAAS,CACP,SAAiB,EACjB,OAAoD;YAEpD,6CAA6C;YAC7C,MAAM,cAAc,GAAG,CAAC,OAAqB,EAAE,EAAE;gBAC/C,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAA;gBACzB,CAAC;gBAED,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBAClC,KAAK,IAAI,CAAC,GAAG,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBACzD,MAAM,WAAW,GAAG,mBAAmB,CAAC,CAAC,CAAE,CAAA;oBAC3C,MAAM,IAAI,GAAG,KAAK,CAAA;oBAClB,KAAK,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gBAC1C,CAAC;gBAED,OAAO,KAAK,EAAE,CAAA;YAChB,CAAC,CAAA;YAED,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;QAC/C,CAAC;QAED,iBAAiB,CAAC,OAAqB,EAAE,UAAmB;YAC1D,OAAO,QAAQ,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;QACxD,CAAC;QAED,kBAAkB,CAAC,OAAqB,EAAE,UAAmB;YAC3D,OAAO,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;QACzD,CAAC;QAED,UAAU,CACR,SAAiB,EACjB,MAA0C,EAC1C,MAAe;YAEf,OAAO,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QACvD,CAAC;QAED,oBAAoB,CAClB,SAAiB,EACjB,MAA2C;YAE3C,OAAO,QAAQ,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACzD,CAAC;QAED,iCAAiC,CAC/B,SAAiB,EACjB,KAAY,EACZ,MAA2C;YAE3C,OAAO,QAAQ,CAAC,iCAAiC,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;QAC7E,CAAC;QAED,2BAA2B,CAAC,WAAW;YACrC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACtC,OAAO,GAAG,EAAE;gBACV,MAAM,GAAG,GAAG,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;gBACrD,IAAI,GAAG,IAAI,CAAC;oBAAE,oBAAoB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YACnD,CAAC,CAAA;QACH,CAAC;QAED,0BAA0B,CAAC,WAAW;YACpC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACrC,OAAO,GAAG,EAAE;gBACV,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;gBACpD,IAAI,GAAG,IAAI,CAAC;oBAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YAClD,CAAC,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"intercepting-query-bus.js","sourceRoot":"","sources":["../src/intercepting-query-bus.ts"],"names":[],"mappings":"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"}
@@ -35,12 +35,27 @@ export interface DispatchInterceptor<M extends Message = Message> {
35
35
  * accessors (`getResource` / `setResource`) — no `ProcessingContext`
36
36
  * parameter is threaded.
37
37
  *
38
+ * The first argument is the full message object. Prefer keeping it as
39
+ * `message` when transforming or inspecting broad message details:
40
+ *
41
+ * ```
42
+ * app.handlerInterceptor(async (message, next) => {
43
+ * const { payload, metadata, timestamp } = message
44
+ * return next({
45
+ * ...message,
46
+ * metadata: { ...metadata, tenantId: "tenant-1" },
47
+ * })
48
+ * })
49
+ * ```
50
+ *
38
51
  * The `next` function calls the next interceptor in the chain, or the
39
- * actual handler if this is the last interceptor.
52
+ * actual handler if this is the last interceptor. Call `next()` to proceed
53
+ * with the current message, or `next(replacementMessage)` to proceed with a
54
+ * transformed message.
40
55
  *
41
56
  * To skip handling entirely, don't call `next()` and return a result directly.
42
57
  */
43
- export interface HandlerInterceptor<R = unknown> {
44
- (message: Message, next: () => Promise<R>): Promise<R>;
58
+ export interface HandlerInterceptor<M extends Message = Message, R = unknown> {
59
+ (message: M, next: (message?: M) => Promise<R>): Promise<R>;
45
60
  }
46
61
  //# sourceMappingURL=interceptor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../src/interceptor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO;IAC9D,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CAC7B;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO;IAC7C,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACvD"}
1
+ {"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../src/interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO;IAC9D,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,WAAW,kBAAkB,CACjC,CAAC,SAAS,OAAO,GAAG,OAAO,EAC3B,CAAC,GAAG,OAAO;IAEX,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CAC5D"}
package/dist/message.d.ts CHANGED
@@ -34,6 +34,10 @@ export interface EventMessage<P = unknown> extends Message<P> {
34
34
  readonly value: string;
35
35
  }>;
36
36
  }
37
+ export interface SequencedEventMessage<P = unknown> extends EventMessage<P> {
38
+ /** Stream position when the source has one; absent for push-only delivery. */
39
+ readonly sequence?: bigint;
40
+ }
37
41
  /**
38
42
  * A query message — dispatched to handler(s) that can answer it.
39
43
  */
@@ -1 +1 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEhE;;;GAGG;AACH,MAAM,WAAW,OAAO,CAAC,CAAC,GAAG,OAAO;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;CAAG;AAElE;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,GAAG,OAAO;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,CAAA;IAC/B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC/E;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;CAAG"}
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEhE;;;GAGG;AACH,MAAM,WAAW,OAAO,CAAC,CAAC,GAAG,OAAO;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;CAAG;AAElE;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,GAAG,OAAO;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,CAAA;IAC/B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC/E;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,YAAY,CAAC,CAAC,CAAC;IACzE,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;CAAG"}
@@ -1,5 +1,6 @@
1
1
  import type { QueryMessage } from "./message.js";
2
2
  import type { SubscriptionQueryResult } from "./subscription-query.js";
3
+ import type { SubscriptionFilter } from "./subscription-filter.js";
3
4
  /**
4
5
  * The query bus — low-level infrastructure for dispatching query messages.
5
6
  *
@@ -37,15 +38,19 @@ export interface QueryBus {
37
38
  * Emit an update to all active subscription queries matching the filter.
38
39
  * When called within an active UnitOfWork (detected via ALS), the update is
39
40
  * deferred to AFTER_COMMIT.
41
+ *
42
+ * The filter can be either a function (local-only when a distributed bus is
43
+ * in use) or a structured `payloadEquals` predicate (crosses transports).
44
+ * See {@link SubscriptionFilter}.
40
45
  */
41
- emitUpdate(queryName: string, filter: (queryPayload: unknown) => boolean, update: unknown): Promise<void>;
46
+ emitUpdate(queryName: string, filter: SubscriptionFilter, update: unknown): Promise<void>;
42
47
  /**
43
48
  * Complete all subscription queries matching the filter.
44
49
  */
45
- completeSubscription(queryName: string, filter?: (queryPayload: unknown) => boolean): Promise<void>;
50
+ completeSubscription(queryName: string, filter?: SubscriptionFilter): Promise<void>;
46
51
  /**
47
52
  * Complete all subscription queries matching the filter with an error.
48
53
  */
49
- completeSubscriptionExceptionally(queryName: string, error: Error, filter?: (queryPayload: unknown) => boolean): Promise<void>;
54
+ completeSubscriptionExceptionally(queryName: string, error: Error, filter?: SubscriptionFilter): Promise<void>;
50
55
  }
51
56
  //# sourceMappingURL=query-bus.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-bus.d.ts","sourceRoot":"","sources":["../src/query-bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AAEtE;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAE9C;;;;;OAKG;IACH,SAAS,CACP,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,GACnD,IAAI,CAAA;IAEP;;;OAGG;IACH,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,uBAAuB,CAAA;IAEtF;;;;OAIG;IACH,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG;QAAE,KAAK,IAAI,IAAI,CAAA;KAAE,CAAA;IAE1G;;;;OAIG;IACH,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,OAAO,EAC1C,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhB;;OAEG;IACH,oBAAoB,CAClB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,OAAO,GAC1C,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhB;;OAEG;IACH,iCAAiC,CAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,KAAK,EACZ,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,OAAO,GAC1C,OAAO,CAAC,IAAI,CAAC,CAAA;CACjB"}
1
+ {"version":3,"file":"query-bus.d.ts","sourceRoot":"","sources":["../src/query-bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAElE;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAE9C;;;;;OAKG;IACH,SAAS,CACP,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,GACnD,IAAI,CAAA;IAEP;;;OAGG;IACH,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,uBAAuB,CAAA;IAEtF;;;;OAIG;IACH,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG;QAAE,KAAK,IAAI,IAAI,CAAA;KAAE,CAAA;IAE1G;;;;;;;;OAQG;IACH,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhB;;OAEG;IACH,oBAAoB,CAClB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhB;;OAEG;IACH,iCAAiC,CAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,KAAK,EACZ,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;CACjB"}
@@ -1,6 +1,6 @@
1
1
  import type { z } from "zod";
2
- import type { Metadata } from "@kronos-ts/common";
3
2
  import type { QueryDescriptor } from "./descriptor.js";
3
+ import type { QueryMessage } from "./message.js";
4
4
  /**
5
5
  * A registered singular query handler — pairs a query descriptor with its handler
6
6
  * function. Mirrors {@link import("./command-handler.js").CommandHandlerDefinition}
@@ -14,14 +14,14 @@ import type { QueryDescriptor } from "./descriptor.js";
14
14
  export interface QueryHandlerDefinition<Q extends z.ZodType = z.ZodType, R = unknown> {
15
15
  readonly kind: "query-handler";
16
16
  readonly descriptor: QueryDescriptor<Q, z.ZodType | undefined>;
17
- readonly handler: (query: z.infer<Q>, metadata: Metadata) => Promise<R> | R;
17
+ readonly handler: (message: QueryMessage<z.infer<Q>>) => Promise<R> | R;
18
18
  }
19
19
  /**
20
20
  * Defines a singular query handler.
21
21
  *
22
22
  * ```
23
- * const getCourseView = queryHandler(GetCourseView, async (q, metadata) => {
24
- * const view = courseViews.get(q.courseId)
23
+ * const getCourseView = queryHandler(GetCourseView, async ({ payload, metadata }) => {
24
+ * const view = courseViews.get(payload.courseId)
25
25
  * if (!view) throw new Error("not found")
26
26
  * return view
27
27
  * })
@@ -31,5 +31,5 @@ export interface QueryHandlerDefinition<Q extends z.ZodType = z.ZodType, R = unk
31
31
  * {@link import("./command-handler.js").commandHandler} and
32
32
  * {@link import("./event-handler.js").eventHandler}.
33
33
  */
34
- export declare function queryHandler<Q extends z.ZodType, R>(descriptor: QueryDescriptor<Q, z.ZodType | undefined>, handler: (query: z.infer<Q>, metadata: Metadata) => Promise<R> | R): QueryHandlerDefinition<Q, R>;
34
+ export declare function queryHandler<Q extends z.ZodType, R>(descriptor: QueryDescriptor<Q, z.ZodType | undefined>, handler: (message: QueryMessage<z.infer<Q>>) => Promise<R> | R): QueryHandlerDefinition<Q, R>;
35
35
  //# sourceMappingURL=query-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-handler.d.ts","sourceRoot":"","sources":["../src/query-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;;;;;;;;;GASG;AACH,MAAM,WAAW,sBAAsB,CACrC,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,EAC/B,CAAC,GAAG,OAAO;IAEX,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;IAC9B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IAC9D,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;CAC5E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,EACjD,UAAU,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,EACrD,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GACjE,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAE9B"}
1
+ {"version":3,"file":"query-handler.d.ts","sourceRoot":"","sources":["../src/query-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAOhD;;;;;;;;;GASG;AACH,MAAM,WAAW,sBAAsB,CACrC,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,EAC/B,CAAC,GAAG,OAAO;IAEX,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;IAC9B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IAC9D,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;CACxE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,EACjD,UAAU,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,EACrD,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC7D,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAE9B"}
@@ -2,8 +2,8 @@
2
2
  * Defines a singular query handler.
3
3
  *
4
4
  * ```
5
- * const getCourseView = queryHandler(GetCourseView, async (q, metadata) => {
6
- * const view = courseViews.get(q.courseId)
5
+ * const getCourseView = queryHandler(GetCourseView, async ({ payload, metadata }) => {
6
+ * const view = courseViews.get(payload.courseId)
7
7
  * if (!view) throw new Error("not found")
8
8
  * return view
9
9
  * })
@@ -1 +1 @@
1
- {"version":3,"file":"query-handler.js","sourceRoot":"","sources":["../src/query-handler.ts"],"names":[],"mappings":"AA4BA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAC1B,UAAqD,EACrD,OAAkE;IAElE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,OAAO,EAAE,CAAA;AACvD,CAAC"}
1
+ {"version":3,"file":"query-handler.js","sourceRoot":"","sources":["../src/query-handler.ts"],"names":[],"mappings":"AA4BA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAC1B,UAAqD,EACrD,OAA8D;IAE9D,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,OAAO,EAAE,CAAA;AACvD,CAAC"}
@@ -18,7 +18,7 @@ export function registerQueryHandlersNatively(handlers, deps) {
18
18
  const moduleName = deps.moduleName ?? "queries";
19
19
  for (const reg of handlers) {
20
20
  const queryName = qualifiedNameToString(reg.descriptor.name);
21
- let invocation = async (message) => reg.handler(message.payload, message.metadata);
21
+ let invocation = async (message) => reg.handler(message);
22
22
  if (deps.handlerEnhancer) {
23
23
  invocation = deps.handlerEnhancer.wrapHandler(invocation, {
24
24
  messageType: "query",
@@ -1 +1 @@
1
- {"version":3,"file":"query-handling-module.js","sourceRoot":"","sources":["../src/query-handling-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAMzD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,6BAA6B,CAC3C,QAA+C,EAC/C,IAIC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,CAAA;IAC/C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAC5D,IAAI,UAAU,GAAG,KAAK,EAAE,OAAqB,EAAE,EAAE,CAC/C,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;QAChD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,UAAU,EAAE;gBACxD,WAAW,EAAE,OAAO;gBACpB,WAAW,EAAE,SAAS;gBACtB,YAAY,EAAE,UAAU;aACzB,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IAChD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"query-handling-module.js","sourceRoot":"","sources":["../src/query-handling-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAMzD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,6BAA6B,CAC3C,QAA+C,EAC/C,IAIC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,CAAA;IAC/C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAC5D,IAAI,UAAU,GAAG,KAAK,EAAE,OAAqB,EAAE,EAAE,CAC/C,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACtB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,UAAU,EAAE;gBACxD,WAAW,EAAE,OAAO;gBACpB,WAAW,EAAE,SAAS;gBACtB,YAAY,EAAE,UAAU;aACzB,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IAChD,CAAC;AACH,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { CommandBus } from "./command-bus.js";
2
+ import { type UoWRunner } from "./unit-of-work.js";
2
3
  /**
3
4
  * Simple in-process command bus.
4
5
  *
@@ -12,12 +13,18 @@ import type { CommandBus } from "./command-bus.js";
12
13
  * by sharing a transaction. DCB read-set / append-condition merging
13
14
  * happens only WITHIN a single handler's UnitOfWork.
14
15
  *
15
- * Transactional wiring composes at the runner level via
16
- * `transactionalUnitOfWorkFactory(runInNewUoW, txManager)` and is consumed
17
- * by extensions / processors directly, not by the bus.
16
+ * The handler runs through `unitOfWorkRunner` by default `runInNewUoW`, but
17
+ * the configurer injects the resolved `unitOfWorkFactory` slot (e.g. a
18
+ * transactional runner from a storage extension) so the per-command UoW
19
+ * carries whatever transaction that backend provides. This mirrors the
20
+ * distributed command buses (kronosdb / axon-server), which already run
21
+ * handlers through the configured runner. The runner is always built on
22
+ * `runInNewUoW`, so a command — primary OR nested via `send()` — still gets
23
+ * its own fresh UoW (and its own independent transaction); composition does
24
+ * not change AF5 isolation, only whether that fresh UoW has a transaction.
18
25
  *
19
26
  * Interceptor support is provided by wrapping with
20
27
  * {@link createInterceptingCommandBus}.
21
28
  */
22
- export declare function createSimpleCommandBus(): CommandBus;
29
+ export declare function createSimpleCommandBus(unitOfWorkRunner?: UoWRunner): CommandBus;
23
30
  //# sourceMappingURL=simple-command-bus.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"simple-command-bus.d.ts","sourceRoot":"","sources":["../src/simple-command-bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAKlD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,IAAI,UAAU,CAiCnD"}
1
+ {"version":3,"file":"simple-command-bus.d.ts","sourceRoot":"","sources":["../src/simple-command-bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAG/D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,sBAAsB,CAAC,gBAAgB,GAAE,SAAuB,GAAG,UAAU,CAiC5F"}