@kronos-ts/messaging 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/emit-update.d.ts +2 -1
  2. package/dist/emit-update.d.ts.map +1 -1
  3. package/dist/emit-update.js.map +1 -1
  4. package/dist/event-scheduler.d.ts +95 -0
  5. package/dist/event-scheduler.d.ts.map +1 -0
  6. package/dist/event-scheduler.js +47 -0
  7. package/dist/event-scheduler.js.map +1 -0
  8. package/dist/in-memory-event-scheduler.d.ts +45 -0
  9. package/dist/in-memory-event-scheduler.d.ts.map +1 -0
  10. package/dist/in-memory-event-scheduler.js +112 -0
  11. package/dist/in-memory-event-scheduler.js.map +1 -0
  12. package/dist/index.d.ts +4 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +5 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/intercepting-query-bus.d.ts.map +1 -1
  17. package/dist/intercepting-query-bus.js.map +1 -1
  18. package/dist/query-bus.d.ts +8 -3
  19. package/dist/query-bus.d.ts.map +1 -1
  20. package/dist/simple-query-bus.d.ts.map +1 -1
  21. package/dist/simple-query-bus.js +4 -3
  22. package/dist/simple-query-bus.js.map +1 -1
  23. package/dist/subscription-filter.d.ts +43 -0
  24. package/dist/subscription-filter.d.ts.map +1 -0
  25. package/dist/subscription-filter.js +71 -0
  26. package/dist/subscription-filter.js.map +1 -0
  27. package/dist/transaction.d.ts +31 -0
  28. package/dist/transaction.d.ts.map +1 -1
  29. package/dist/transaction.js +80 -0
  30. package/dist/transaction.js.map +1 -1
  31. package/package.json +1 -1
  32. package/src/emit-update.ts +3 -2
  33. package/src/event-scheduler.ts +96 -0
  34. package/src/in-memory-event-scheduler.ts +150 -0
  35. package/src/index.ts +22 -0
  36. package/src/intercepting-query-bus.ts +4 -3
  37. package/src/query-bus.ts +8 -3
  38. package/src/simple-query-bus.ts +8 -6
  39. package/src/subscription-filter.ts +85 -0
  40. package/src/transaction.ts +84 -0
@@ -2,9 +2,10 @@ import type { z } from "zod";
2
2
  import { type ResourceKey } from "@kronos-ts/common";
3
3
  import type { QueryBus } from "./query-bus.js";
4
4
  import type { QueryDescriptor } from "./descriptor.js";
5
+ import type { SubscriptionFilter } from "./subscription-filter.js";
5
6
  /** Emit a subscription-query update from within the current processing context. */
6
7
  export interface EmitUpdateFunction {
7
- <Q extends z.ZodType>(query: QueryDescriptor<Q>, filter: (query: z.infer<Q>) => boolean, update: unknown): void;
8
+ <Q extends z.ZodType>(query: QueryDescriptor<Q>, filter: SubscriptionFilter<z.infer<Q>>, update: unknown): void;
8
9
  }
9
10
  /**
10
11
  * Resource key for the query bus component.
@@ -1 +1 @@
1
- {"version":3,"file":"emit-update.d.ts","sourceRoot":"","sources":["../src/emit-update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,EAAsC,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAExF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,mFAAmF;AACnF,MAAM,WAAW,kBAAkB;IACjC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAClB,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,EACzB,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,EACtC,MAAM,EAAE,OAAO,GACd,IAAI,CAAA;CACR;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,QAAQ,CAA2B,CAAA;AAE3E;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,kBAMxB,CAAA"}
1
+ {"version":3,"file":"emit-update.d.ts","sourceRoot":"","sources":["../src/emit-update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,EAAsC,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAExF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAElE,mFAAmF;AACnF,MAAM,WAAW,kBAAkB;IACjC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAClB,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,EACzB,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACtC,MAAM,EAAE,OAAO,GACd,IAAI,CAAA;CACR;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,QAAQ,CAA2B,CAAA;AAE3E;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,kBAMxB,CAAA"}
@@ -1 +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"}
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;AAc9D;;;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,MAA4B,EAAE,MAAM,CAAC,CAAA;AACjE,CAAC,CAAA"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * EventScheduler — schedule an event to be appended to the event store at
3
+ * a future time, with the option to cancel before the fire-time.
4
+ *
5
+ * # Semantics
6
+ *
7
+ * - `schedule(event, at)` MUST be called from inside a UnitOfWork (i.e.,
8
+ * from a command/event/query handler, or any code that opened a UoW
9
+ * via `runInNewUoW`). The scheduled record participates in the active
10
+ * UoW transaction: if the UoW rolls back, the schedule is not persisted;
11
+ * if the UoW commits, the schedule is durably stored.
12
+ *
13
+ * - Once the schedule is committed, the implementation guarantees that the
14
+ * event WILL be appended to the event store at or after `at`, unless
15
+ * {@link EventScheduler.cancel} is called and succeeds before the
16
+ * fire-time. "At or after" because workers poll on an interval — fire
17
+ * times are not real-time deadlines.
18
+ *
19
+ * - `cancel(token)` returns a {@link CancelResult} discriminated union so
20
+ * callers can branch on three distinct outcomes: the schedule was
21
+ * cancelled before firing, the event had already been appended (too
22
+ * late), or no such schedule exists (already-cancelled, never-existed,
23
+ * or token from a different deployment).
24
+ *
25
+ * - Cancel is also UoW-aware: when called inside a UoW, it participates
26
+ * in the active tx so a handler that cancels and then throws does NOT
27
+ * leave the schedule cancelled. When called outside any UoW (rare —
28
+ * typically an ops/admin path), it commits standalone.
29
+ *
30
+ * # Calling from handlers
31
+ *
32
+ * Implementations resolve themselves from the active UoW's resources
33
+ * (similar to {@link send} and {@link emitUpdate}), so handler code uses
34
+ * the scheduler the framework configured for it. The interface itself
35
+ * is transport-agnostic — postgres and in-memory implementations live
36
+ * in their respective packages.
37
+ *
38
+ * # NOT what this is
39
+ *
40
+ * - This is NOT a command scheduler. AF5 schedules events, not commands;
41
+ * if you want a command to run later, schedule an event and run an
42
+ * automation processor that turns the event into a command on receipt.
43
+ * - This is NOT a cron / recurring scheduler. Each `schedule()` produces
44
+ * a single one-shot fire.
45
+ */
46
+ import type { EventMessage } from "./message.js";
47
+ /**
48
+ * Opaque handle returned by {@link EventScheduler.schedule}. Pass back to
49
+ * {@link EventScheduler.cancel} to attempt cancellation. Tokens are
50
+ * implementation-specific (postgres uses the row PK; in-memory uses a
51
+ * UUID) but always carry a stable `id`.
52
+ */
53
+ export interface ScheduleToken {
54
+ readonly id: string;
55
+ }
56
+ /**
57
+ * Outcome of {@link EventScheduler.cancel}.
58
+ *
59
+ * - `cancelled` — the schedule existed in `pending` state and was
60
+ * successfully marked `cancelled`. Event will NOT
61
+ * be appended.
62
+ * - `already-appended` — a worker already fired this schedule; the event
63
+ * is in the event store. Caller decides whether
64
+ * compensation is needed.
65
+ * - `not-found` — no row matches the token. Could mean: already
66
+ * cancelled, never existed, or wrong store. Caller
67
+ * usually treats this as a no-op.
68
+ */
69
+ export type CancelResult = {
70
+ readonly kind: "cancelled";
71
+ } | {
72
+ readonly kind: "already-appended";
73
+ } | {
74
+ readonly kind: "not-found";
75
+ };
76
+ export interface EventScheduler {
77
+ /**
78
+ * Schedule {@link event} for append at {@link at}. Must be called inside
79
+ * a UoW; throws otherwise. The schedule participates in the active UoW
80
+ * tx and is only durable once the UoW commits.
81
+ *
82
+ * `at` is the wall-clock fire-time. Past dates are valid — they cause
83
+ * the worker to fire the schedule on its next poll.
84
+ */
85
+ schedule(event: EventMessage, at: Date): Promise<ScheduleToken>;
86
+ /**
87
+ * Attempt to cancel a pending schedule. See {@link CancelResult} for
88
+ * the three possible outcomes.
89
+ *
90
+ * Safe to call from inside a UoW (joins the active tx) or outside
91
+ * (commits standalone).
92
+ */
93
+ cancel(token: ScheduleToken): Promise<CancelResult>;
94
+ }
95
+ //# sourceMappingURL=event-scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-scheduler.d.ts","sourceRoot":"","sources":["../src/event-scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,GACrC;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAAA;AAElC,MAAM,WAAW,cAAc;IAC7B;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IAE/D;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;CACpD"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * EventScheduler — schedule an event to be appended to the event store at
3
+ * a future time, with the option to cancel before the fire-time.
4
+ *
5
+ * # Semantics
6
+ *
7
+ * - `schedule(event, at)` MUST be called from inside a UnitOfWork (i.e.,
8
+ * from a command/event/query handler, or any code that opened a UoW
9
+ * via `runInNewUoW`). The scheduled record participates in the active
10
+ * UoW transaction: if the UoW rolls back, the schedule is not persisted;
11
+ * if the UoW commits, the schedule is durably stored.
12
+ *
13
+ * - Once the schedule is committed, the implementation guarantees that the
14
+ * event WILL be appended to the event store at or after `at`, unless
15
+ * {@link EventScheduler.cancel} is called and succeeds before the
16
+ * fire-time. "At or after" because workers poll on an interval — fire
17
+ * times are not real-time deadlines.
18
+ *
19
+ * - `cancel(token)` returns a {@link CancelResult} discriminated union so
20
+ * callers can branch on three distinct outcomes: the schedule was
21
+ * cancelled before firing, the event had already been appended (too
22
+ * late), or no such schedule exists (already-cancelled, never-existed,
23
+ * or token from a different deployment).
24
+ *
25
+ * - Cancel is also UoW-aware: when called inside a UoW, it participates
26
+ * in the active tx so a handler that cancels and then throws does NOT
27
+ * leave the schedule cancelled. When called outside any UoW (rare —
28
+ * typically an ops/admin path), it commits standalone.
29
+ *
30
+ * # Calling from handlers
31
+ *
32
+ * Implementations resolve themselves from the active UoW's resources
33
+ * (similar to {@link send} and {@link emitUpdate}), so handler code uses
34
+ * the scheduler the framework configured for it. The interface itself
35
+ * is transport-agnostic — postgres and in-memory implementations live
36
+ * in their respective packages.
37
+ *
38
+ * # NOT what this is
39
+ *
40
+ * - This is NOT a command scheduler. AF5 schedules events, not commands;
41
+ * if you want a command to run later, schedule an event and run an
42
+ * automation processor that turns the event into a command on receipt.
43
+ * - This is NOT a cron / recurring scheduler. Each `schedule()` produces
44
+ * a single one-shot fire.
45
+ */
46
+ export {};
47
+ //# sourceMappingURL=event-scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-scheduler.js","sourceRoot":"","sources":["../src/event-scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG"}
@@ -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
@@ -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":"AACA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,OAAO,EACP,KAAK,EACL,KAAK,GACN,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC9B,aAAa,EACb,IAAI,EACJ,MAAM,EACN,MAAM,GACP,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EACL,KAAK,EACL,KAAK,UAAU,EAEf,EAAE,IAAI,OAAO,EACb,eAAe,EACf,QAAQ,EACR,aAAa,EACb,OAAO,EACP,YAAY,EACZ,kBAAkB,EAClB,aAAa,GACd,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EACL,KAAK,SAAS,EACd,QAAQ,EACR,WAAW,GACZ,MAAM,mBAAmB,CAAA;AAM1B,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,EAAE,EACF,OAAO,GACR,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,KAAK,wBAAwB,EAC7B,cAAc,GACf,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EACL,KAAK,sBAAsB,EAC3B,YAAY,GACb,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EACL,KAAK,sBAAsB,EAC3B,YAAY,GACb,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,KAAK,eAAe,EACpB,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACpB,8BAA8B,GAC/B,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EACL,KAAK,uBAAuB,EAC5B,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,6BAA6B,EAC7B,iCAAiC,EACjC,kCAAkC,GACnC,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAG9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAG5D,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAA;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AAGxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAGlE,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EAClB,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,KAAK,kBAAkB,EACvB,aAAa,EACb,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGhD,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,QAAQ,EACb,oBAAoB,GACrB,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AAGxE,OAAO,EACL,KAAK,YAAY,EACjB,kBAAkB,GACnB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAG1D,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,mBAAmB,EACnB,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,+BAA+B,CAAA;AAGtC,OAAO,EACL,KAAK,OAAO,EACZ,YAAY,EACZ,OAAO,EACP,cAAc,EACd,YAAY,EACZ,aAAa,EACb,WAAW,EACX,YAAY,EACZ,MAAM,EACN,cAAc,GACf,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,KAAK,UAAU,EACf,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,WAAW,EACX,WAAW,EACX,uBAAuB,GACxB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EACL,QAAQ,EACR,gBAAgB,GACjB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACL,KAAK,kBAAkB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,2BAA2B,EAC3B,8BAA8B,EAC9B,kCAAkC,EAClC,eAAe,GAChB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,KAAK,WAAW,EAChB,6BAA6B,EAC7B,wBAAwB,GACzB,MAAM,2BAA2B,CAAA;AAGlC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAG5D,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,EAClC,4BAA4B,GAC7B,MAAM,gCAAgC,CAAA;AAGvC,OAAO,EACL,+BAA+B,EAC/B,uBAAuB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAA;AAG1E,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,gCAAgC,EACrC,+BAA+B,GAChC,MAAM,kCAAkC,CAAA;AAGzC,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,8BAA8B,EACnC,KAAK,oBAAoB,EACzB,6BAA6B,GAC9B,MAAM,gCAAgC,CAAA;AAGvC,OAAO,EACL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,mBAAmB,EACnB,gBAAgB,EAChB,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EACL,KAAK,oBAAoB,EACzB,2BAA2B,GAC5B,MAAM,6BAA6B,CAAA;AAGpC,OAAO,EACL,KAAK,+BAA+B,EACpC,KAAK,aAAa,EAClB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,GACpB,MAAM,eAAe,CAAA;AAGtB,OAAO,EACL,KAAK,cAAc,EACnB,cAAc,EACd,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EACL,KAAK,sBAAsB,EAC3B,4BAA4B,GAC7B,MAAM,+BAA+B,CAAA;AAGtC,OAAO,EACL,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,eAAe,GAChB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EACL,gCAAgC,GACjC,MAAM,+BAA+B,CAAA;AAGtC,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AAG1E,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,wBAAwB,EACxB,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,8BAA8B,CAAA;AAGrC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA"}
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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"}
@@ -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,GAAG,MAAM,IAAI,CAAA;CACxE,CAoFA"}
@@ -1 +1 @@
1
- {"version":3,"file":"intercepting-query-bus.js","sourceRoot":"","sources":["../src/intercepting-query-bus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"intercepting-query-bus.js","sourceRoot":"","sources":["../src/intercepting-query-bus.ts"],"names":[],"mappings":"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"}
@@ -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 +1 @@
1
- {"version":3,"file":"simple-query-bus.d.ts","sourceRoot":"","sources":["../src/simple-query-bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAO9C;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,IAAI,QAAQ,CAyI/C"}
1
+ {"version":3,"file":"simple-query-bus.d.ts","sourceRoot":"","sources":["../src/simple-query-bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAS9C;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,IAAI,QAAQ,CAyI/C"}
@@ -1,4 +1,5 @@
1
1
  import { createUpdateHandler, runAfterCommitOrImmediately } from "./subscription-query.js";
2
+ import { applySubscriptionFilter } from "./subscription-filter.js";
2
3
  import { runInUoW } from "./unit-of-work.js";
3
4
  import { qualifiedNameToString } from "@kronos-ts/common";
4
5
  /**
@@ -80,7 +81,7 @@ export function createSimpleQueryBus() {
80
81
  const handlerQueryName = qualifiedNameToString(handler.query.name);
81
82
  if (handlerQueryName !== queryName)
82
83
  continue;
83
- if (!filter(handler.query.payload))
84
+ if (!applySubscriptionFilter(filter, handler.query.payload))
84
85
  continue;
85
86
  const accepted = handler.offer(update);
86
87
  if (!accepted) {
@@ -96,7 +97,7 @@ export function createSimpleQueryBus() {
96
97
  const handlerQueryName = qualifiedNameToString(handler.query.name);
97
98
  if (handlerQueryName !== queryName)
98
99
  continue;
99
- if (filter && !filter(handler.query.payload))
100
+ if (filter && !applySubscriptionFilter(filter, handler.query.payload))
100
101
  continue;
101
102
  handler.complete();
102
103
  subscriptions.delete(id);
@@ -109,7 +110,7 @@ export function createSimpleQueryBus() {
109
110
  const handlerQueryName = qualifiedNameToString(handler.query.name);
110
111
  if (handlerQueryName !== queryName)
111
112
  continue;
112
- if (filter && !filter(handler.query.payload))
113
+ if (filter && !applySubscriptionFilter(filter, handler.query.payload))
113
114
  continue;
114
115
  handler.completeExceptionally(error);
115
116
  subscriptions.delete(id);
@@ -1 +1 @@
1
- {"version":3,"file":"simple-query-bus.js","sourceRoot":"","sources":["../src/simple-query-bus.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAA;AAC1F,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAEzD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAuD,CAAA;IAE/E,gEAAgE;IAChE,MAAM,aAAa,GAAG,IAAI,GAAG,EAAyB,CAAA;IAEtD,MAAM,GAAG,GAAa;QACpB,KAAK,CAAC,KAAK,CAAC,OAAqB;YAC/B,MAAM,GAAG,GAAG,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAC/C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACjC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,GAAG,CAAC,CAAA;YAC7D,CAAC;YAED,mDAAmD;YACnD,mEAAmE;YACnE,qBAAqB;YACrB,OAAO,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;QAC3D,CAAC;QAED,SAAS,CACP,SAAiB,EACjB,OAAoD;YAEpD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACxC,IAAI,QAAQ,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CACb,wDAAwD,SAAS,KAAK;oBACtE,wDAAwD,CACzD,CAAA;YACH,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QAClC,CAAC;QAED,iBAAiB,CAAC,OAAqB,EAAE,UAAmB;YAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAA;YAElC,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,yDAAyD,OAAO,GAAG,CAAC,CAAA;YACtF,CAAC;YAED,MAAM,aAAa,GAAG,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;YAC9D,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;YAEzC,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAExC,OAAO;gBACL,aAAa;gBACb,OAAO,EAAE,aAAa,CAAC,QAAQ;gBAC/B,KAAK,EAAE,GAAG,EAAE;oBACV,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;oBAC7B,aAAa,CAAC,QAAQ,EAAE,CAAA;gBAC1B,CAAC;aACF,CAAA;QACH,CAAC;QAED,kBAAkB,CAAC,OAAqB,EAAE,UAAmB;YAC3D,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAA;YAElC,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,yDAAyD,OAAO,GAAG,CAAC,CAAA;YACtF,CAAC;YAED,MAAM,aAAa,GAAG,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;YAC9D,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;YAEzC,OAAO;gBACL,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;gBAC5E,KAAK,EAAE,GAAG,EAAE;oBACV,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;oBAC7B,aAAa,CAAC,QAAQ,EAAE,CAAA;gBAC1B,CAAC;aACF,CAAA;QACH,CAAC;QAED,KAAK,CAAC,UAAU,CACd,SAAiB,EACjB,MAA0C,EAC1C,MAAe;YAEf,2BAA2B,CAAC,GAAG,EAAE;gBAC/B,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,aAAa,EAAE,CAAC;oBAC1C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;wBACpB,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;wBACxB,SAAQ;oBACV,CAAC;oBAED,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;oBAClE,IAAI,gBAAgB,KAAK,SAAS;wBAAE,SAAQ;oBAC5C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;wBAAE,SAAQ;oBAE5C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;oBACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,OAAO,CAAC,qBAAqB,CAC3B,IAAI,KAAK,CAAC,2CAA2C,CAAC,CACvD,CAAA;wBACD,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;oBAC1B,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,KAAK,CAAC,oBAAoB,CACxB,SAAiB,EACjB,MAA2C;YAE3C,2BAA2B,CAAC,GAAG,EAAE;gBAC/B,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,aAAa,EAAE,CAAC;oBAC1C,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;oBAClE,IAAI,gBAAgB,KAAK,SAAS;wBAAE,SAAQ;oBAC5C,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;wBAAE,SAAQ;oBAEtD,OAAO,CAAC,QAAQ,EAAE,CAAA;oBAClB,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;gBAC1B,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,KAAK,CAAC,iCAAiC,CACrC,SAAiB,EACjB,KAAY,EACZ,MAA2C;YAE3C,2BAA2B,CAAC,GAAG,EAAE;gBAC/B,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,aAAa,EAAE,CAAC;oBAC1C,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;oBAClE,IAAI,gBAAgB,KAAK,SAAS;wBAAE,SAAQ;oBAC5C,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;wBAAE,SAAQ;oBAEtD,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAA;oBACpC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;gBAC1B,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;IAED,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"simple-query-bus.js","sourceRoot":"","sources":["../src/simple-query-bus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * A predicate over a query payload, used by `emitUpdate` to decide which
3
+ * subscribers should receive an update.
4
+ *
5
+ * Two forms are supported:
6
+ *
7
+ * 1. **Function** — `(payload) => boolean`. Easy to write but cannot cross a
8
+ * network boundary because functions are not serializable. Use for
9
+ * in-process / single-segment query buses.
10
+ *
11
+ * 2. **Structured `payloadEquals`** — `{ payloadEquals: Partial<P> }`. Every
12
+ * key in the partial must deep-equal the same key in the subscriber's
13
+ * query payload. Serializable, so it ships across distributed query bus
14
+ * transports (e.g. RabbitMQ broadcasts).
15
+ *
16
+ * Both forms work locally; only the structured form crosses processes when a
17
+ * distributed query bus is in use.
18
+ */
19
+ export type SubscriptionFilter<P = unknown> = ((payload: P) => boolean) | {
20
+ readonly payloadEquals: Partial<P>;
21
+ };
22
+ /**
23
+ * Helper that builds a structured filter from a partial payload.
24
+ *
25
+ * ```ts
26
+ * emitUpdate(GetCourseView, payloadEquals({ courseId: e.courseId }), view)
27
+ * ```
28
+ *
29
+ * Prefer this over a function filter when you want updates to fan out across
30
+ * a distributed query bus.
31
+ */
32
+ export declare function payloadEquals<P>(partial: Partial<P>): {
33
+ payloadEquals: Partial<P>;
34
+ };
35
+ /** Evaluate a {@link SubscriptionFilter} against a payload. */
36
+ export declare function applySubscriptionFilter<P>(filter: SubscriptionFilter<P>, payload: P): boolean;
37
+ /** Extract the structured form, if any, for serialization across a transport. */
38
+ export declare function extractStructuredFilter<P>(filter: SubscriptionFilter<P> | undefined): {
39
+ payloadEquals: Partial<P>;
40
+ } | undefined;
41
+ /** Deep equality on the keys defined in `expected`. */
42
+ export declare function matchesPayloadEquals<P>(payload: P, expected: Partial<P>): boolean;
43
+ //# sourceMappingURL=subscription-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription-filter.d.ts","sourceRoot":"","sources":["../src/subscription-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,GAAG,OAAO,IACtC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC,GACzB;IAAE,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CAAE,CAAA;AAE1C;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;IAAE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CAAE,CAEnF;AAED,+DAA+D;AAC/D,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAG7F;AAED,iFAAiF;AACjF,wBAAgB,uBAAuB,CAAC,CAAC,EACvC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,SAAS,GACxC;IAAE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CAAE,GAAG,SAAS,CAI3C;AAED,uDAAuD;AACvD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAQjF"}