@kronos-ts/messaging 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/command-bus.d.ts +30 -0
- package/dist/command-bus.d.ts.map +1 -0
- package/dist/command-bus.js +2 -0
- package/dist/command-bus.js.map +1 -0
- package/dist/command-handler.d.ts +58 -0
- package/dist/command-handler.d.ts.map +1 -0
- package/dist/command-handler.js +12 -0
- package/dist/command-handler.js.map +1 -0
- package/dist/command-handling-module.d.ts +53 -0
- package/dist/command-handling-module.d.ts.map +1 -0
- package/dist/command-handling-module.js +130 -0
- package/dist/command-handling-module.js.map +1 -0
- package/dist/correlation-data.d.ts +79 -0
- package/dist/correlation-data.d.ts.map +1 -0
- package/dist/correlation-data.js +133 -0
- package/dist/correlation-data.js.map +1 -0
- package/dist/dead-letter-queue.d.ts +134 -0
- package/dist/dead-letter-queue.d.ts.map +1 -0
- package/dist/dead-letter-queue.js +176 -0
- package/dist/dead-letter-queue.js.map +1 -0
- package/dist/dead-lettering-handler.d.ts +42 -0
- package/dist/dead-lettering-handler.d.ts.map +1 -0
- package/dist/dead-lettering-handler.js +67 -0
- package/dist/dead-lettering-handler.js.map +1 -0
- package/dist/descriptor.d.ts +135 -0
- package/dist/descriptor.d.ts.map +1 -0
- package/dist/descriptor.js +36 -0
- package/dist/descriptor.js.map +1 -0
- package/dist/emit-update.d.ts +22 -0
- package/dist/emit-update.d.ts.map +1 -0
- package/dist/emit-update.js +23 -0
- package/dist/emit-update.js.map +1 -0
- package/dist/event-bus.d.ts +29 -0
- package/dist/event-bus.d.ts.map +1 -0
- package/dist/event-bus.js +22 -0
- package/dist/event-bus.js.map +1 -0
- package/dist/event-criteria.d.ts +87 -0
- package/dist/event-criteria.d.ts.map +1 -0
- package/dist/event-criteria.js +90 -0
- package/dist/event-criteria.js.map +1 -0
- package/dist/event-gateway.d.ts +19 -0
- package/dist/event-gateway.d.ts.map +1 -0
- package/dist/event-gateway.js +22 -0
- package/dist/event-gateway.js.map +1 -0
- package/dist/event-handler.d.ts +30 -0
- package/dist/event-handler.d.ts.map +1 -0
- package/dist/event-handler.js +18 -0
- package/dist/event-handler.js.map +1 -0
- package/dist/event-processor-builder.d.ts +148 -0
- package/dist/event-processor-builder.d.ts.map +1 -0
- package/dist/event-processor-builder.js +175 -0
- package/dist/event-processor-builder.js.map +1 -0
- package/dist/event-processor.d.ts +10 -0
- package/dist/event-processor.d.ts.map +1 -0
- package/dist/event-processor.js +2 -0
- package/dist/event-processor.js.map +1 -0
- package/dist/event-sink.d.ts +23 -0
- package/dist/event-sink.d.ts.map +1 -0
- package/dist/event-sink.js +2 -0
- package/dist/event-sink.js.map +1 -0
- package/dist/event-source.d.ts +98 -0
- package/dist/event-source.d.ts.map +1 -0
- package/dist/event-source.js +191 -0
- package/dist/event-source.js.map +1 -0
- package/dist/gateway.d.ts +68 -0
- package/dist/gateway.d.ts.map +1 -0
- package/dist/gateway.js +62 -0
- package/dist/gateway.js.map +1 -0
- package/dist/handler-enhancer.d.ts +53 -0
- package/dist/handler-enhancer.d.ts.map +1 -0
- package/dist/handler-enhancer.js +17 -0
- package/dist/handler-enhancer.js.map +1 -0
- package/dist/handler.d.ts +51 -0
- package/dist/handler.d.ts.map +1 -0
- package/dist/handler.js +26 -0
- package/dist/handler.js.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +103 -0
- package/dist/index.js.map +1 -0
- package/dist/intercepting-command-bus.d.ts +17 -0
- package/dist/intercepting-command-bus.d.ts.map +1 -0
- package/dist/intercepting-command-bus.js +54 -0
- package/dist/intercepting-command-bus.js.map +1 -0
- package/dist/intercepting-event-bus.d.ts +8 -0
- package/dist/intercepting-event-bus.d.ts.map +1 -0
- package/dist/intercepting-event-bus.js +22 -0
- package/dist/intercepting-event-bus.js.map +1 -0
- package/dist/intercepting-query-bus.d.ts +17 -0
- package/dist/intercepting-query-bus.d.ts.map +1 -0
- package/dist/intercepting-query-bus.js +68 -0
- package/dist/intercepting-query-bus.js.map +1 -0
- package/dist/interceptor.d.ts +46 -0
- package/dist/interceptor.d.ts.map +1 -0
- package/dist/interceptor.js +2 -0
- package/dist/interceptor.js.map +1 -0
- package/dist/message-monitor-registry.d.ts +28 -0
- package/dist/message-monitor-registry.d.ts.map +1 -0
- package/dist/message-monitor-registry.js +37 -0
- package/dist/message-monitor-registry.js.map +1 -0
- package/dist/message-monitor.d.ts +36 -0
- package/dist/message-monitor.d.ts.map +1 -0
- package/dist/message-monitor.js +39 -0
- package/dist/message-monitor.js.map +1 -0
- package/dist/message.d.ts +42 -0
- package/dist/message.d.ts.map +1 -0
- package/dist/message.js +2 -0
- package/dist/message.js.map +1 -0
- package/dist/processing-state.d.ts +115 -0
- package/dist/processing-state.d.ts.map +1 -0
- package/dist/processing-state.js +205 -0
- package/dist/processing-state.js.map +1 -0
- package/dist/processor-configuration.d.ts +51 -0
- package/dist/processor-configuration.d.ts.map +1 -0
- package/dist/processor-configuration.js +2 -0
- package/dist/processor-configuration.js.map +1 -0
- package/dist/query-bus.d.ts +51 -0
- package/dist/query-bus.d.ts.map +1 -0
- package/dist/query-bus.js +2 -0
- package/dist/query-bus.js.map +1 -0
- package/dist/query-handler.d.ts +35 -0
- package/dist/query-handler.d.ts.map +1 -0
- package/dist/query-handler.js +19 -0
- package/dist/query-handler.js.map +1 -0
- package/dist/query-handling-module.d.ts +24 -0
- package/dist/query-handling-module.d.ts.map +1 -0
- package/dist/query-handling-module.js +32 -0
- package/dist/query-handling-module.js.map +1 -0
- package/dist/replay-token.d.ts +31 -0
- package/dist/replay-token.d.ts.map +1 -0
- package/dist/replay-token.js +37 -0
- package/dist/replay-token.js.map +1 -0
- package/dist/retrying-command-bus.d.ts +32 -0
- package/dist/retrying-command-bus.d.ts.map +1 -0
- package/dist/retrying-command-bus.js +58 -0
- package/dist/retrying-command-bus.js.map +1 -0
- package/dist/routing-strategy.d.ts +30 -0
- package/dist/routing-strategy.d.ts.map +1 -0
- package/dist/routing-strategy.js +37 -0
- package/dist/routing-strategy.js.map +1 -0
- package/dist/segment.d.ts +72 -0
- package/dist/segment.d.ts.map +1 -0
- package/dist/segment.js +103 -0
- package/dist/segment.js.map +1 -0
- package/dist/send.d.ts +28 -0
- package/dist/send.d.ts.map +1 -0
- package/dist/send.js +36 -0
- package/dist/send.js.map +1 -0
- package/dist/serializer.d.ts +40 -0
- package/dist/serializer.d.ts.map +1 -0
- package/dist/serializer.js +90 -0
- package/dist/serializer.js.map +1 -0
- package/dist/simple-command-bus.d.ts +23 -0
- package/dist/simple-command-bus.d.ts.map +1 -0
- package/dist/simple-command-bus.js +49 -0
- package/dist/simple-command-bus.js.map +1 -0
- package/dist/simple-query-bus.d.ts +16 -0
- package/dist/simple-query-bus.d.ts.map +1 -0
- package/dist/simple-query-bus.js +122 -0
- package/dist/simple-query-bus.js.map +1 -0
- package/dist/span-factory.d.ts +58 -0
- package/dist/span-factory.d.ts.map +1 -0
- package/dist/span-factory.js +19 -0
- package/dist/span-factory.js.map +1 -0
- package/dist/streaming-event-processor.d.ts +65 -0
- package/dist/streaming-event-processor.d.ts.map +1 -0
- package/dist/streaming-event-processor.js +239 -0
- package/dist/streaming-event-processor.js.map +1 -0
- package/dist/subscribing-event-processor.d.ts +57 -0
- package/dist/subscribing-event-processor.d.ts.map +1 -0
- package/dist/subscribing-event-processor.js +100 -0
- package/dist/subscribing-event-processor.js.map +1 -0
- package/dist/subscription-query.d.ts +63 -0
- package/dist/subscription-query.d.ts.map +1 -0
- package/dist/subscription-query.js +119 -0
- package/dist/subscription-query.js.map +1 -0
- package/dist/token-store.d.ts +83 -0
- package/dist/token-store.d.ts.map +1 -0
- package/dist/token-store.js +112 -0
- package/dist/token-store.js.map +1 -0
- package/dist/tracing-command-bus.d.ts +16 -0
- package/dist/tracing-command-bus.d.ts.map +1 -0
- package/dist/tracing-command-bus.js +44 -0
- package/dist/tracing-command-bus.js.map +1 -0
- package/dist/tracing-handler-enhancer.d.ts +11 -0
- package/dist/tracing-handler-enhancer.d.ts.map +1 -0
- package/dist/tracing-handler-enhancer.js +27 -0
- package/dist/tracing-handler-enhancer.js.map +1 -0
- package/dist/tracking-event-processor.d.ts +72 -0
- package/dist/tracking-event-processor.d.ts.map +1 -0
- package/dist/tracking-event-processor.js +223 -0
- package/dist/tracking-event-processor.js.map +1 -0
- package/dist/tracking-token.d.ts +120 -0
- package/dist/tracking-token.d.ts.map +1 -0
- package/dist/tracking-token.js +132 -0
- package/dist/tracking-token.js.map +1 -0
- package/dist/transaction.d.ts +60 -0
- package/dist/transaction.d.ts.map +1 -0
- package/dist/transaction.js +74 -0
- package/dist/transaction.js.map +1 -0
- package/dist/unit-of-work.d.ts +41 -0
- package/dist/unit-of-work.d.ts.map +1 -0
- package/dist/unit-of-work.js +96 -0
- package/dist/unit-of-work.js.map +1 -0
- package/dist/upcaster.d.ts +91 -0
- package/dist/upcaster.d.ts.map +1 -0
- package/dist/upcaster.js +114 -0
- package/dist/upcaster.js.map +1 -0
- package/dist/with-namespace.d.ts +59 -0
- package/dist/with-namespace.d.ts.map +1 -0
- package/dist/with-namespace.js +42 -0
- package/dist/with-namespace.js.map +1 -0
- package/package.json +65 -0
- package/src/command-bus.ts +34 -0
- package/src/command-handler.ts +116 -0
- package/src/command-handling-module.ts +183 -0
- package/src/correlation-data.ts +169 -0
- package/src/dead-letter-queue.ts +330 -0
- package/src/dead-lettering-handler.ts +109 -0
- package/src/descriptor.ts +176 -0
- package/src/emit-update.ts +35 -0
- package/src/event-bus.ts +45 -0
- package/src/event-criteria.ts +141 -0
- package/src/event-gateway.ts +42 -0
- package/src/event-handler.ts +44 -0
- package/src/event-processor-builder.ts +246 -0
- package/src/event-processor.ts +9 -0
- package/src/event-sink.ts +23 -0
- package/src/event-source.ts +301 -0
- package/src/gateway.ts +144 -0
- package/src/handler-enhancer.ts +70 -0
- package/src/handler.ts +133 -0
- package/src/index.ts +356 -0
- package/src/intercepting-command-bus.ts +73 -0
- package/src/intercepting-event-bus.ts +29 -0
- package/src/intercepting-query-bus.ts +104 -0
- package/src/interceptor.ts +48 -0
- package/src/message-monitor-registry.ts +64 -0
- package/src/message-monitor.ts +68 -0
- package/src/message.ts +41 -0
- package/src/processing-state.ts +258 -0
- package/src/processor-configuration.ts +59 -0
- package/src/query-bus.ts +69 -0
- package/src/query-handler.ts +49 -0
- package/src/query-handling-module.ts +44 -0
- package/src/replay-token.ts +53 -0
- package/src/retrying-command-bus.ts +80 -0
- package/src/routing-strategy.ts +59 -0
- package/src/segment.ts +136 -0
- package/src/send.ts +44 -0
- package/src/serializer.ts +122 -0
- package/src/simple-command-bus.ts +59 -0
- package/src/simple-query-bus.ts +158 -0
- package/src/span-factory.ts +81 -0
- package/src/streaming-event-processor.ts +351 -0
- package/src/subscribing-event-processor.ts +169 -0
- package/src/subscription-query.ts +173 -0
- package/src/token-store.ts +211 -0
- package/src/tracing-command-bus.ts +52 -0
- package/src/tracing-handler-enhancer.ts +34 -0
- package/src/tracking-event-processor.ts +336 -0
- package/src/tracking-token.ts +231 -0
- package/src/transaction.ts +98 -0
- package/src/unit-of-work.ts +138 -0
- package/src/upcaster.ts +174 -0
- package/src/with-namespace.ts +75 -0
package/dist/gateway.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { generateIdentifier, emptyMetadata, } from "@kronos-ts/common";
|
|
2
|
+
import { runInNewUoW } from "./unit-of-work.js";
|
|
3
|
+
/**
|
|
4
|
+
* Creates a command gateway backed by a command bus.
|
|
5
|
+
*
|
|
6
|
+
* Plan 03-04 (CTX-04 / D-34): the optional `unitOfWorkRunner` lets the
|
|
7
|
+
* configurer inject a transactional wrapper (`transactionalUnitOfWorkFactory`)
|
|
8
|
+
* around the dispatch boundary. Defaults to `runInNewUoW` — preserves the
|
|
9
|
+
* Plan 03-01 contract that every gateway call starts a fresh UoW.
|
|
10
|
+
*/
|
|
11
|
+
export function createCommandGateway(bus, unitOfWorkRunner = runInNewUoW) {
|
|
12
|
+
return {
|
|
13
|
+
async send(descriptor, payload, metadata) {
|
|
14
|
+
const resolvedMetadata = metadata ?? emptyMetadata();
|
|
15
|
+
// Plan 03-01 (D-32) / Plan 03-03 (CTX-01): gateways always start a new
|
|
16
|
+
// UoW. The bus.dispatch call below will detect the ALS state we just
|
|
17
|
+
// established (via runInUoW in simple-command-bus) and reuse it — so
|
|
18
|
+
// this is the single UoW boundary for the dispatch chain. No
|
|
19
|
+
// ProcessingContext parameter is threaded.
|
|
20
|
+
return unitOfWorkRunner(resolvedMetadata, () => bus.dispatch({
|
|
21
|
+
identifier: generateIdentifier(),
|
|
22
|
+
name: descriptor.name,
|
|
23
|
+
payload,
|
|
24
|
+
metadata: resolvedMetadata,
|
|
25
|
+
timestamp: Date.now(),
|
|
26
|
+
}));
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Creates a query gateway backed by a query bus.
|
|
32
|
+
*
|
|
33
|
+
* See `createCommandGateway` for the `unitOfWorkRunner` injection contract.
|
|
34
|
+
*/
|
|
35
|
+
export function createQueryGateway(bus, unitOfWorkRunner = runInNewUoW) {
|
|
36
|
+
return {
|
|
37
|
+
async query(descriptor, payload, metadata) {
|
|
38
|
+
const resolvedMetadata = metadata ?? emptyMetadata();
|
|
39
|
+
// Plan 03-01 (D-32) / Plan 03-03 (CTX-01): gateway always starts a new
|
|
40
|
+
// UoW; bus.query auto-nests via runInUoW in simple-query-bus.
|
|
41
|
+
// subscriptionQuery below stays as-is — its initialResult goes through
|
|
42
|
+
// bus.query, which handles its own UoW.
|
|
43
|
+
return unitOfWorkRunner(resolvedMetadata, () => bus.query({
|
|
44
|
+
identifier: generateIdentifier(),
|
|
45
|
+
name: descriptor.name,
|
|
46
|
+
payload,
|
|
47
|
+
metadata: resolvedMetadata,
|
|
48
|
+
timestamp: Date.now(),
|
|
49
|
+
}));
|
|
50
|
+
},
|
|
51
|
+
subscriptionQuery(descriptor, payload, metadata) {
|
|
52
|
+
return bus.subscriptionQuery({
|
|
53
|
+
identifier: generateIdentifier(),
|
|
54
|
+
name: descriptor.name,
|
|
55
|
+
payload,
|
|
56
|
+
metadata: metadata ?? emptyMetadata(),
|
|
57
|
+
timestamp: Date.now(),
|
|
58
|
+
});
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=gateway.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,aAAa,GAEd,MAAM,mBAAmB,CAAA;AAK1B,OAAO,EAAE,WAAW,EAAkB,MAAM,mBAAmB,CAAA;AAgE/D;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAClC,GAAe,EACf,mBAA8B,WAAW;IAEzC,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ;YACtC,MAAM,gBAAgB,GAAG,QAAQ,IAAI,aAAa,EAAE,CAAA;YACpD,uEAAuE;YACvE,qEAAqE;YACrE,qEAAqE;YACrE,6DAA6D;YAC7D,2CAA2C;YAC3C,OAAO,gBAAgB,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAC7C,GAAG,CAAC,QAAQ,CAAC;gBACX,UAAU,EAAE,kBAAkB,EAAE;gBAChC,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,OAAO;gBACP,QAAQ,EAAE,gBAAgB;gBAC1B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAiB,CACZ,CAAA;QACV,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,GAAa,EACb,mBAA8B,WAAW;IAEzC,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ;YACvC,MAAM,gBAAgB,GAAG,QAAQ,IAAI,aAAa,EAAE,CAAA;YACpD,uEAAuE;YACvE,8DAA8D;YAC9D,uEAAuE;YACvE,wCAAwC;YACxC,OAAO,gBAAgB,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAC7C,GAAG,CAAC,KAAK,CAAC;gBACR,UAAU,EAAE,kBAAkB,EAAE;gBAChC,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,OAAO;gBACP,QAAQ,EAAE,gBAAgB;gBAC1B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAiB,CACZ,CAAA;QACV,CAAC;QAED,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ;YAC7C,OAAO,GAAG,CAAC,iBAAiB,CAAC;gBAC3B,UAAU,EAAE,kBAAkB,EAAE;gBAChC,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,OAAO;gBACP,QAAQ,EAAE,QAAQ,IAAI,aAAa,EAAE;gBACrC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metadata about a handler being enhanced. Allows enhancers to
|
|
3
|
+
* selectively wrap based on handler type, message name, etc.
|
|
4
|
+
*/
|
|
5
|
+
export interface HandlerMetadata {
|
|
6
|
+
/** The type of message this handler processes. */
|
|
7
|
+
readonly messageType: "command" | "event" | "query";
|
|
8
|
+
/** The qualified name of the message (e.g., "university.courses.CreateCourse"). */
|
|
9
|
+
readonly messageName: string;
|
|
10
|
+
/** The name of the handler group or module (e.g., "course-commands"). */
|
|
11
|
+
readonly handlerGroup: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Wraps message handler functions at registration time to add cross-cutting
|
|
15
|
+
* concerns. Different from interceptors — interceptors wrap dispatch,
|
|
16
|
+
* enhancers wrap the handler itself.
|
|
17
|
+
*
|
|
18
|
+
* Applied once at handler discovery/registration time, not per-invocation.
|
|
19
|
+
* This makes enhancers ideal for:
|
|
20
|
+
* - Tracing spans per-handler
|
|
21
|
+
* - Security checks
|
|
22
|
+
* - Timeout enforcement
|
|
23
|
+
* - Caching
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* const timingEnhancer: HandlerEnhancerDefinition = {
|
|
28
|
+
* wrapHandler(handler, metadata) {
|
|
29
|
+
* return async (...args) => {
|
|
30
|
+
* const start = performance.now()
|
|
31
|
+
* try {
|
|
32
|
+
* return await handler(...args)
|
|
33
|
+
* } finally {
|
|
34
|
+
* console.log(`${metadata.messageName} took ${performance.now() - start}ms`)
|
|
35
|
+
* }
|
|
36
|
+
* }
|
|
37
|
+
* },
|
|
38
|
+
* }
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export interface HandlerEnhancerDefinition {
|
|
42
|
+
/**
|
|
43
|
+
* Wrap a handler function. Return the original handler to skip enhancement.
|
|
44
|
+
* The returned function must have the same signature as the input.
|
|
45
|
+
*/
|
|
46
|
+
wrapHandler<T extends (...args: any[]) => any>(handler: T, metadata: HandlerMetadata): T;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Combines multiple handler enhancer definitions into a single one.
|
|
50
|
+
* Enhancers are applied in order — the first enhancer wraps outermost.
|
|
51
|
+
*/
|
|
52
|
+
export declare function multiHandlerEnhancerDefinition(enhancers: ReadonlyArray<HandlerEnhancerDefinition>): HandlerEnhancerDefinition;
|
|
53
|
+
//# sourceMappingURL=handler-enhancer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler-enhancer.d.ts","sourceRoot":"","sources":["../src/handler-enhancer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,QAAQ,CAAC,WAAW,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,CAAA;IACnD,mFAAmF;IACnF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,yEAAyE;IACzE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,WAAW,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAC3C,OAAO,EAAE,CAAC,EACV,QAAQ,EAAE,eAAe,GACxB,CAAC,CAAA;CACL;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,aAAa,CAAC,yBAAyB,CAAC,GAClD,yBAAyB,CAW3B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Combines multiple handler enhancer definitions into a single one.
|
|
3
|
+
* Enhancers are applied in order — the first enhancer wraps outermost.
|
|
4
|
+
*/
|
|
5
|
+
export function multiHandlerEnhancerDefinition(enhancers) {
|
|
6
|
+
return {
|
|
7
|
+
wrapHandler(handler, metadata) {
|
|
8
|
+
let wrapped = handler;
|
|
9
|
+
// Apply in reverse order so first enhancer is outermost
|
|
10
|
+
for (let i = enhancers.length - 1; i >= 0; i--) {
|
|
11
|
+
wrapped = enhancers[i].wrapHandler(wrapped, metadata);
|
|
12
|
+
}
|
|
13
|
+
return wrapped;
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=handler-enhancer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler-enhancer.js","sourceRoot":"","sources":["../src/handler-enhancer.ts"],"names":[],"mappings":"AAoDA;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAC5C,SAAmD;IAEnD,OAAO;QACL,WAAW,CAAoC,OAAU,EAAE,QAAyB;YAClF,IAAI,OAAO,GAAG,OAAO,CAAA;YACrB,wDAAwD;YACxD,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/C,OAAO,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;YACxD,CAAC;YACD,OAAO,OAAO,CAAA;QAChB,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { z } from "zod";
|
|
2
|
+
import type { Metadata } from "@kronos-ts/common";
|
|
3
|
+
import type { EventDescriptor, QueryDescriptor } from "./descriptor.js";
|
|
4
|
+
/** A paired event descriptor + handler function, used in handler arrays. */
|
|
5
|
+
export interface EventHandlerRegistration<P extends z.ZodType = z.ZodType> {
|
|
6
|
+
readonly kind: "event-handler";
|
|
7
|
+
readonly descriptor: EventDescriptor<P>;
|
|
8
|
+
readonly handler: (event: z.infer<P>, metadata: Metadata) => Promise<void> | void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* A paired event descriptor + evolver function, used in entity evolve arrays.
|
|
12
|
+
*
|
|
13
|
+
* Evolvers can be sync or async. Async evolvers don't block the event loop
|
|
14
|
+
* during state reconstruction.
|
|
15
|
+
*/
|
|
16
|
+
export interface EvolverRegistration<S = unknown, P extends z.ZodType = z.ZodType> {
|
|
17
|
+
readonly kind: "evolver";
|
|
18
|
+
readonly descriptor: EventDescriptor<P>;
|
|
19
|
+
readonly evolve: (state: S, event: z.infer<P>, id: unknown) => S | Promise<S>;
|
|
20
|
+
}
|
|
21
|
+
/** A paired query descriptor + handler function, with result type on the handler. */
|
|
22
|
+
export interface QueryHandlerRegistration<Q extends z.ZodType = z.ZodType, R = unknown> {
|
|
23
|
+
readonly kind: "query-handler";
|
|
24
|
+
readonly descriptor: QueryDescriptor<Q>;
|
|
25
|
+
readonly handler: (query: z.infer<Q>, metadata: Metadata) => Promise<R> | R;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Universal registration function.
|
|
29
|
+
* Pairs a descriptor with its handler for use in handler/evolve arrays.
|
|
30
|
+
*
|
|
31
|
+
* Usage:
|
|
32
|
+
* - Event handlers: `on(CourseCreated, async (event, ctx) => { ... })`
|
|
33
|
+
* - Query handlers: `on(GetCourse, async (query, ctx) => { return { ... } })`
|
|
34
|
+
* - Evolvers: `on(CourseCreated, (state, event) => ({ ...state, name: event.name }))`
|
|
35
|
+
*
|
|
36
|
+
* The overload is resolved by the descriptor kind and how many arguments
|
|
37
|
+
* the callback declares. Evolvers receive `(state, event)` or `(state, event, id)`,
|
|
38
|
+
* while event handlers receive `(event, context)`.
|
|
39
|
+
*
|
|
40
|
+
* In practice the distinction is enforced by the array type:
|
|
41
|
+
* - `evolve: [on(...)]` expects `EvolverRegistration`
|
|
42
|
+
* - `handlers: [on(...)]` expects `EventHandlerRegistration`
|
|
43
|
+
*/
|
|
44
|
+
export declare function on<S, P extends z.ZodType>(descriptor: EventDescriptor<P>, evolve: (state: S, event: z.infer<P>, id: unknown) => S | Promise<S>): EvolverRegistration<S, P>;
|
|
45
|
+
export declare function on<P extends z.ZodType>(descriptor: EventDescriptor<P>, handler: (event: z.infer<P>, metadata: Metadata) => Promise<void> | void): EventHandlerRegistration<P>;
|
|
46
|
+
export declare function on<Q extends z.ZodType, R>(descriptor: QueryDescriptor<Q>, handler: (query: z.infer<Q>, metadata: Metadata) => Promise<R> | R): QueryHandlerRegistration<Q, R>;
|
|
47
|
+
/**
|
|
48
|
+
* @deprecated Use `on()` instead. `onEvent` is kept for backward compatibility.
|
|
49
|
+
*/
|
|
50
|
+
export declare function onEvent<S, P extends z.ZodType>(descriptor: EventDescriptor<P>, evolve: (state: S, event: z.infer<P>, id: unknown) => S | Promise<S>): EvolverRegistration<S, P>;
|
|
51
|
+
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"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"}
|
package/dist/handler.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export function on(descriptor, handler) {
|
|
2
|
+
if (descriptor.kind === "event") {
|
|
3
|
+
// For event descriptors, the same `on()` call is used for both event handlers
|
|
4
|
+
// and evolvers. We return an object that satisfies both interfaces — the
|
|
5
|
+
// consumer's array type (evolve: EvolverRegistration[] vs handlers: EventHandlerRegistration[])
|
|
6
|
+
// enforces correct usage at compile time.
|
|
7
|
+
return {
|
|
8
|
+
kind: "event-handler",
|
|
9
|
+
descriptor: descriptor,
|
|
10
|
+
handler,
|
|
11
|
+
evolve: handler,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
kind: "query-handler",
|
|
16
|
+
descriptor: descriptor,
|
|
17
|
+
handler,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* @deprecated Use `on()` instead. `onEvent` is kept for backward compatibility.
|
|
22
|
+
*/
|
|
23
|
+
export function onEvent(descriptor, evolve) {
|
|
24
|
+
return { kind: "evolver", descriptor, evolve };
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"AAqGA,MAAM,UAAU,EAAE,CAChB,UAA6C,EAC7C,OAAgC;IAEhC,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAChC,8EAA8E;QAC9E,yEAAyE;QACzE,gGAAgG;QAChG,0CAA0C;QAC1C,OAAO;YACL,IAAI,EAAE,eAAsB;YAC5B,UAAU,EAAE,UAA6B;YACzC,OAAO;YACP,MAAM,EAAE,OAAO;SAChB,CAAA;IACH,CAAC;IACD,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,UAAU,EAAE,UAA6B;QACzC,OAAO;KACR,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CACrB,UAA8B,EAC9B,MAAoE;IAEpE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;AAChD,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export { type Message, type CommandMessage, type CommandResultMessage, type EventMessage, type QueryMessage, } from "./message.js";
|
|
2
|
+
export { type CommandDescriptor, type EventDescriptor, type QueryDescriptor, type MessageDescriptor, command, event, query, } from "./descriptor.js";
|
|
3
|
+
export { type TagCriteria, type TypeRestrictedCriteria, type EitherCriteria, type AnyTagCriteria, type RestrictableEventCriteria, EventCriteria, tags, anyTag, either, } from "./event-criteria.js";
|
|
4
|
+
export { Phase, type PhaseValue, on as onPhase, onPrepareCommit, onCommit, onAfterCommit, onError, whenComplete, NoActiveUnitOfWork, WrongUoWPhase, } from "./processing-state.js";
|
|
5
|
+
export { type UoWRunner, runInUoW, runInNewUoW, } from "./unit-of-work.js";
|
|
6
|
+
export { type EventHandlerRegistration, type EvolverRegistration, type QueryHandlerRegistration, on, onEvent, } from "./handler.js";
|
|
7
|
+
export { type CommandHandlerDefinition, commandHandler, } from "./command-handler.js";
|
|
8
|
+
export { type EventHandlerDefinition, eventHandler, } from "./event-handler.js";
|
|
9
|
+
export { type QueryHandlerDefinition, queryHandler, } from "./query-handler.js";
|
|
10
|
+
export { type DispatchInterceptor, type HandlerInterceptor, } from "./interceptor.js";
|
|
11
|
+
export { type RoutingStrategy, metadataRoutingStrategy, payloadFieldRoutingStrategy, } from "./routing-strategy.js";
|
|
12
|
+
export { type HandlerEnhancerDefinition, type HandlerMetadata, multiHandlerEnhancerDefinition, } from "./handler-enhancer.js";
|
|
13
|
+
export { type CorrelationDataProvider, CORRELATION_DATA_KEY, getActiveCorrelationData, messageOriginProvider, simpleCorrelationDataProvider, correlationDataHandlerInterceptor, correlationDataDispatchInterceptor, } from "./correlation-data.js";
|
|
14
|
+
export { type CommandBus } from "./command-bus.js";
|
|
15
|
+
export { type QueryBus } from "./query-bus.js";
|
|
16
|
+
export { createSimpleCommandBus } from "./simple-command-bus.js";
|
|
17
|
+
export { createSimpleQueryBus } from "./simple-query-bus.js";
|
|
18
|
+
export { createInterceptingCommandBus } from "./intercepting-command-bus.js";
|
|
19
|
+
export { createInterceptingQueryBus } from "./intercepting-query-bus.js";
|
|
20
|
+
export { createTracingCommandBus } from "./tracing-command-bus.js";
|
|
21
|
+
export { type CommandGateway, type QueryGateway, createCommandGateway, createQueryGateway, } from "./gateway.js";
|
|
22
|
+
export { type SubscriptionQueryResult, type UpdateHandler, createUpdateHandler, runAfterCommitOrImmediately, } from "./subscription-query.js";
|
|
23
|
+
export { type EventSink } from "./event-sink.js";
|
|
24
|
+
export { type SubscribableEventSource, type EventBus, createSimpleEventBus, } from "./event-bus.js";
|
|
25
|
+
export { createInterceptingEventBus } from "./intercepting-event-bus.js";
|
|
26
|
+
export { type EventGateway, createEventGateway, } from "./event-gateway.js";
|
|
27
|
+
export { type EventProcessor } from "./event-processor.js";
|
|
28
|
+
export { type SequencedEvent, type StreamableEventSource, type StreamingCondition, type MessageStream, createMessageStream, emptyMessageStream, failedMessageStream, } from "./event-source.js";
|
|
29
|
+
export { type TrackingEventProcessor, type TrackingEventProcessorOptions, type EventProcessingErrorHandler, loggingErrorHandler, propagatingErrorHandler, createTrackingEventProcessor, } from "./tracking-event-processor.js";
|
|
30
|
+
export { type Segment, ROOT_SEGMENT, segment, segmentMatches, splitSegment, mergeSegments, isMergeable, segmentCount, hashOf, createSegments, } from "./segment.js";
|
|
31
|
+
export { type TokenStore, UnableToClaimTokenError, createInMemoryTokenStore, } from "./token-store.js";
|
|
32
|
+
export { type TrackingToken, type GlobalSequenceToken, type ReplayToken, globalSequenceToken, FIRST_TOKEN, LATEST_TOKEN, replayToken, isReplayToken, isGlobalSequenceToken, advanceToken, isReplaying, unwrapToken, wasProcessedBeforeReset, } from "./tracking-token.js";
|
|
33
|
+
export { isReplay, REPLAY_STATE_KEY, } from "./replay-token.js";
|
|
34
|
+
export { type TransactionManager, noTransactionManager, getActiveTransaction, transactionalUnitOfWorkFactory, TRANSACTION_KEY, } from "./transaction.js";
|
|
35
|
+
export { type RetryPolicy, exponentialBackoffRetryPolicy, createRetryingCommandBus, } from "./retrying-command-bus.js";
|
|
36
|
+
export { send, COMMAND_BUS_KEY } from "./send.js";
|
|
37
|
+
export { emitUpdate, QUERY_BUS_KEY } from "./emit-update.js";
|
|
38
|
+
export { registerCommandHandlersNatively, createCommandInvocation, type MinimalConfiguration, } from "./command-handling-module.js";
|
|
39
|
+
export { registerQueryHandlersNatively } from "./query-handling-module.js";
|
|
40
|
+
export { type SubscribingEventProcessor, type SubscribingEventProcessorOptions, createSubscribingEventProcessor, } from "./subscribing-event-processor.js";
|
|
41
|
+
export { type StreamingEventProcessor, type StreamingEventProcessorOptions, type EventProcessorStatus, createStreamingEventProcessor, } from "./streaming-event-processor.js";
|
|
42
|
+
export { type DeadLetter, type EnqueueDecision, type EnqueuePolicy, type SequencedDeadLetterQueue, alwaysEnqueuePolicy, createDeadLetter, createInMemoryDeadLetterQueue, DeadLetterQueueOverflowError, } from "./dead-letter-queue.js";
|
|
43
|
+
export { type DeadLetteringOptions, createDeadLetteringDelivery, } from "./dead-lettering-handler.js";
|
|
44
|
+
export { type IntermediateEventRepresentation, type EventUpcaster, singleEventUpcaster, upcasterChain, upcastingSerializer, } from "./upcaster.js";
|
|
45
|
+
export { type SchemaRegistry, jsonSerializer, zodValidatingSerializer, createEventSchemaRegistry, createCommandSchemaRegistry, createQuerySchemaRegistry, } from "./serializer.js";
|
|
46
|
+
export { type MessageMonitor, type MonitorCallback, noOpMessageMonitor, multiMessageMonitor, } from "./message-monitor.js";
|
|
47
|
+
export { type MessageMonitorRegistry, createMessageMonitorRegistry, } from "./message-monitor-registry.js";
|
|
48
|
+
export { type Span, type SpanFactory, type SpanAttributesProvider, noOpSpanFactory, } from "./span-factory.js";
|
|
49
|
+
export { tracingHandlerEnhancerDefinition, } from "./tracing-handler-enhancer.js";
|
|
50
|
+
export { type ProcessorConfiguration } from "./processor-configuration.js";
|
|
51
|
+
export { type EventProcessorModule, type TrackingProcessorModule, type SubscribingProcessorModule, TrackingProcessorBuilder, SubscribingProcessorBuilder, trackingProcessor, subscribingProcessor, } from "./event-processor-builder.js";
|
|
52
|
+
export { withNamespace } from "./with-namespace.js";
|
|
53
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// Messages
|
|
2
|
+
export {} from "./message.js";
|
|
3
|
+
// Descriptors
|
|
4
|
+
export { command, event, query, } from "./descriptor.js";
|
|
5
|
+
// Event criteria
|
|
6
|
+
export { EventCriteria, tags, anyTag, either, } from "./event-criteria.js";
|
|
7
|
+
// Lifecycle phases (Plan 03-04: relocated from processing-context.ts)
|
|
8
|
+
export { Phase,
|
|
9
|
+
// Module-level lifecycle accessors (CTX-03 / D-30)
|
|
10
|
+
on as onPhase, onPrepareCommit, onCommit, onAfterCommit, onError, whenComplete, NoActiveUnitOfWork, WrongUoWPhase, } from "./processing-state.js";
|
|
11
|
+
// Unit of Work runners (Plan 03-04: replaces UnitOfWorkFactory shape)
|
|
12
|
+
export { runInUoW, runInNewUoW, } from "./unit-of-work.js";
|
|
13
|
+
// Handler registration
|
|
14
|
+
// Note: Handler context wrapper types deleted (Plan 04-02 / D-41).
|
|
15
|
+
// Helper function types deleted.
|
|
16
|
+
// Consumers import load/append from @kronos-ts/eventsourcing and send/dispatch/emitUpdate from here directly.
|
|
17
|
+
export { on, onEvent, } from "./handler.js";
|
|
18
|
+
// Command handlers
|
|
19
|
+
export { commandHandler, } from "./command-handler.js";
|
|
20
|
+
// Event handlers
|
|
21
|
+
export { eventHandler, } from "./event-handler.js";
|
|
22
|
+
// Query handlers
|
|
23
|
+
export { queryHandler, } from "./query-handler.js";
|
|
24
|
+
// Interceptors
|
|
25
|
+
export {} from "./interceptor.js";
|
|
26
|
+
// Routing strategies
|
|
27
|
+
export { metadataRoutingStrategy, payloadFieldRoutingStrategy, } from "./routing-strategy.js";
|
|
28
|
+
// Handler enhancers
|
|
29
|
+
export { multiHandlerEnhancerDefinition, } from "./handler-enhancer.js";
|
|
30
|
+
// Correlation data
|
|
31
|
+
export { CORRELATION_DATA_KEY, getActiveCorrelationData, messageOriginProvider, simpleCorrelationDataProvider, correlationDataHandlerInterceptor, correlationDataDispatchInterceptor, } from "./correlation-data.js";
|
|
32
|
+
// Bus interfaces
|
|
33
|
+
export {} from "./command-bus.js";
|
|
34
|
+
export {} from "./query-bus.js";
|
|
35
|
+
// Bus implementations
|
|
36
|
+
export { createSimpleCommandBus } from "./simple-command-bus.js";
|
|
37
|
+
export { createSimpleQueryBus } from "./simple-query-bus.js";
|
|
38
|
+
// Intercepting bus decorators
|
|
39
|
+
export { createInterceptingCommandBus } from "./intercepting-command-bus.js";
|
|
40
|
+
export { createInterceptingQueryBus } from "./intercepting-query-bus.js";
|
|
41
|
+
// Tracing bus decorators
|
|
42
|
+
export { createTracingCommandBus } from "./tracing-command-bus.js";
|
|
43
|
+
// Gateways
|
|
44
|
+
export { createCommandGateway, createQueryGateway, } from "./gateway.js";
|
|
45
|
+
// Subscription queries
|
|
46
|
+
export { createUpdateHandler, runAfterCommitOrImmediately, } from "./subscription-query.js";
|
|
47
|
+
// Event sink (publish-only)
|
|
48
|
+
export {} from "./event-sink.js";
|
|
49
|
+
// Event bus (publish + subscribe)
|
|
50
|
+
export { createSimpleEventBus, } from "./event-bus.js";
|
|
51
|
+
// Intercepting event bus decorator
|
|
52
|
+
export { createInterceptingEventBus } from "./intercepting-event-bus.js";
|
|
53
|
+
// Event gateway
|
|
54
|
+
export { createEventGateway, } from "./event-gateway.js";
|
|
55
|
+
// Event processor common interface
|
|
56
|
+
export {} from "./event-processor.js";
|
|
57
|
+
// Event source (for processors)
|
|
58
|
+
export { createMessageStream, emptyMessageStream, failedMessageStream, } from "./event-source.js";
|
|
59
|
+
// Event processor
|
|
60
|
+
export { loggingErrorHandler, propagatingErrorHandler, createTrackingEventProcessor, } from "./tracking-event-processor.js";
|
|
61
|
+
// Segments
|
|
62
|
+
export { ROOT_SEGMENT, segment, segmentMatches, splitSegment, mergeSegments, isMergeable, segmentCount, hashOf, createSegments, } from "./segment.js";
|
|
63
|
+
// Token store
|
|
64
|
+
export { UnableToClaimTokenError, createInMemoryTokenStore, } from "./token-store.js";
|
|
65
|
+
// Tracking tokens
|
|
66
|
+
export { globalSequenceToken, FIRST_TOKEN, LATEST_TOKEN, replayToken, isReplayToken, isGlobalSequenceToken, advanceToken, isReplaying, unwrapToken, wasProcessedBeforeReset, } from "./tracking-token.js";
|
|
67
|
+
// Replay detection (ProcessingContext helper)
|
|
68
|
+
export { isReplay, REPLAY_STATE_KEY, } from "./replay-token.js";
|
|
69
|
+
// Transaction management
|
|
70
|
+
export { noTransactionManager, getActiveTransaction, transactionalUnitOfWorkFactory, TRANSACTION_KEY, } from "./transaction.js";
|
|
71
|
+
// Retrying command bus
|
|
72
|
+
export { exponentialBackoffRetryPolicy, createRetryingCommandBus, } from "./retrying-command-bus.js";
|
|
73
|
+
// Module-level handler helpers (Plan 04-01 / HDL-02 / D-42)
|
|
74
|
+
export { send, COMMAND_BUS_KEY } from "./send.js";
|
|
75
|
+
export { emitUpdate, QUERY_BUS_KEY } from "./emit-update.js";
|
|
76
|
+
// Modules — Plan 08-03a (D-82): function-style helpers replace Module-shape factories
|
|
77
|
+
export { registerCommandHandlersNatively, createCommandInvocation, } from "./command-handling-module.js";
|
|
78
|
+
export { registerQueryHandlersNatively } from "./query-handling-module.js";
|
|
79
|
+
// Subscribing event processor
|
|
80
|
+
export { createSubscribingEventProcessor, } from "./subscribing-event-processor.js";
|
|
81
|
+
// Streaming event processor
|
|
82
|
+
export { createStreamingEventProcessor, } from "./streaming-event-processor.js";
|
|
83
|
+
// Dead letter queue
|
|
84
|
+
export { alwaysEnqueuePolicy, createDeadLetter, createInMemoryDeadLetterQueue, DeadLetterQueueOverflowError, } from "./dead-letter-queue.js";
|
|
85
|
+
// Dead-lettering event delivery
|
|
86
|
+
export { createDeadLetteringDelivery, } from "./dead-lettering-handler.js";
|
|
87
|
+
// Upcasting
|
|
88
|
+
export { singleEventUpcaster, upcasterChain, upcastingSerializer, } from "./upcaster.js";
|
|
89
|
+
// Serialization
|
|
90
|
+
export { jsonSerializer, zodValidatingSerializer, createEventSchemaRegistry, createCommandSchemaRegistry, createQuerySchemaRegistry, } from "./serializer.js";
|
|
91
|
+
// Message monitors
|
|
92
|
+
export { noOpMessageMonitor, multiMessageMonitor, } from "./message-monitor.js";
|
|
93
|
+
export { createMessageMonitorRegistry, } from "./message-monitor-registry.js";
|
|
94
|
+
// Tracing (core abstractions)
|
|
95
|
+
export { noOpSpanFactory, } from "./span-factory.js";
|
|
96
|
+
export { tracingHandlerEnhancerDefinition, } from "./tracing-handler-enhancer.js";
|
|
97
|
+
// Processor configuration (legacy)
|
|
98
|
+
export {} from "./processor-configuration.js";
|
|
99
|
+
// Event processor builders
|
|
100
|
+
export { TrackingProcessorBuilder, SubscribingProcessorBuilder, trackingProcessor, subscribingProcessor, } from "./event-processor-builder.js";
|
|
101
|
+
// Namespace factory
|
|
102
|
+
export { withNamespace } from "./with-namespace.js";
|
|
103
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { CommandBus } from "./command-bus.js";
|
|
2
|
+
import type { CommandMessage } from "./message.js";
|
|
3
|
+
import type { DispatchInterceptor, HandlerInterceptor } from "./interceptor.js";
|
|
4
|
+
/**
|
|
5
|
+
* A command bus decorator that adds dispatch and handler interceptor chains
|
|
6
|
+
* to any {@link CommandBus} implementation.
|
|
7
|
+
*
|
|
8
|
+
* {@link createSimpleCommandBus} handles dispatch + subscribe only;
|
|
9
|
+
* this decorator layers interceptor support on top.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createInterceptingCommandBus(delegate: CommandBus): CommandBus & {
|
|
12
|
+
/** Register a dispatch interceptor. Returns an unsubscribe function. */
|
|
13
|
+
registerDispatchInterceptor(interceptor: DispatchInterceptor<CommandMessage>): () => void;
|
|
14
|
+
/** Register a handler interceptor. Returns an unsubscribe function. */
|
|
15
|
+
registerHandlerInterceptor(interceptor: HandlerInterceptor): () => void;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=intercepting-command-bus.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A command bus decorator that adds dispatch and handler interceptor chains
|
|
3
|
+
* to any {@link CommandBus} implementation.
|
|
4
|
+
*
|
|
5
|
+
* {@link createSimpleCommandBus} handles dispatch + subscribe only;
|
|
6
|
+
* this decorator layers interceptor support on top.
|
|
7
|
+
*/
|
|
8
|
+
export function createInterceptingCommandBus(delegate) {
|
|
9
|
+
const dispatchInterceptors = [];
|
|
10
|
+
const handlerInterceptors = [];
|
|
11
|
+
return {
|
|
12
|
+
async dispatch(message) {
|
|
13
|
+
// Run dispatch interceptors (can transform or reject)
|
|
14
|
+
let interceptedMessage = message;
|
|
15
|
+
for (const interceptor of dispatchInterceptors) {
|
|
16
|
+
interceptedMessage = await interceptor(interceptedMessage);
|
|
17
|
+
}
|
|
18
|
+
return delegate.dispatch(interceptedMessage);
|
|
19
|
+
},
|
|
20
|
+
subscribe(commandName, handler) {
|
|
21
|
+
// Wrap the handler with handler interceptors
|
|
22
|
+
const wrappedHandler = (message) => {
|
|
23
|
+
if (handlerInterceptors.length === 0) {
|
|
24
|
+
return handler(message);
|
|
25
|
+
}
|
|
26
|
+
let chain = () => handler(message);
|
|
27
|
+
for (let i = handlerInterceptors.length - 1; i >= 0; i--) {
|
|
28
|
+
const interceptor = handlerInterceptors[i];
|
|
29
|
+
const next = chain;
|
|
30
|
+
chain = () => interceptor(message, next);
|
|
31
|
+
}
|
|
32
|
+
return chain();
|
|
33
|
+
};
|
|
34
|
+
delegate.subscribe(commandName, wrappedHandler);
|
|
35
|
+
},
|
|
36
|
+
registerDispatchInterceptor(interceptor) {
|
|
37
|
+
dispatchInterceptors.push(interceptor);
|
|
38
|
+
return () => {
|
|
39
|
+
const idx = dispatchInterceptors.indexOf(interceptor);
|
|
40
|
+
if (idx >= 0)
|
|
41
|
+
dispatchInterceptors.splice(idx, 1);
|
|
42
|
+
};
|
|
43
|
+
},
|
|
44
|
+
registerHandlerInterceptor(interceptor) {
|
|
45
|
+
handlerInterceptors.push(interceptor);
|
|
46
|
+
return () => {
|
|
47
|
+
const idx = handlerInterceptors.indexOf(interceptor);
|
|
48
|
+
if (idx >= 0)
|
|
49
|
+
handlerInterceptors.splice(idx, 1);
|
|
50
|
+
};
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=intercepting-command-bus.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { EventBus } from "./event-bus.js";
|
|
2
|
+
import type { EventMessage } from "./message.js";
|
|
3
|
+
import type { DispatchInterceptor } from "./interceptor.js";
|
|
4
|
+
/**
|
|
5
|
+
* Wraps an EventBus with dispatch interceptors for event publishing.
|
|
6
|
+
*/
|
|
7
|
+
export declare function createInterceptingEventBus(delegate: EventBus, dispatchInterceptors: ReadonlyArray<DispatchInterceptor<EventMessage>>): EventBus;
|
|
8
|
+
//# sourceMappingURL=intercepting-event-bus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intercepting-event-bus.d.ts","sourceRoot":"","sources":["../src/intercepting-event-bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAE3D;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,QAAQ,EAClB,oBAAoB,EAAE,aAAa,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,GACrE,QAAQ,CAkBV"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wraps an EventBus with dispatch interceptors for event publishing.
|
|
3
|
+
*/
|
|
4
|
+
export function createInterceptingEventBus(delegate, dispatchInterceptors) {
|
|
5
|
+
return {
|
|
6
|
+
async publish(events) {
|
|
7
|
+
const intercepted = [];
|
|
8
|
+
for (const event of events) {
|
|
9
|
+
let msg = event;
|
|
10
|
+
for (const interceptor of dispatchInterceptors) {
|
|
11
|
+
msg = await interceptor(msg);
|
|
12
|
+
}
|
|
13
|
+
intercepted.push(msg);
|
|
14
|
+
}
|
|
15
|
+
await delegate.publish(intercepted);
|
|
16
|
+
},
|
|
17
|
+
subscribe(handler) {
|
|
18
|
+
return delegate.subscribe(handler);
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=intercepting-event-bus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intercepting-event-bus.js","sourceRoot":"","sources":["../src/intercepting-event-bus.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACxC,QAAkB,EAClB,oBAAsE;IAEtE,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,MAAM;YAClB,MAAM,WAAW,GAAmB,EAAE,CAAA;YACtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,GAAG,GAAG,KAAK,CAAA;gBACf,KAAK,MAAM,WAAW,IAAI,oBAAoB,EAAE,CAAC;oBAC/C,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,CAAiB,CAAA;gBAC9C,CAAC;gBACD,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACvB,CAAC;YACD,MAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QACrC,CAAC;QAED,SAAS,CAAC,OAAO;YACf,OAAO,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QACpC,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { QueryBus } from "./query-bus.js";
|
|
2
|
+
import type { QueryMessage } from "./message.js";
|
|
3
|
+
import type { DispatchInterceptor, HandlerInterceptor } from "./interceptor.js";
|
|
4
|
+
/**
|
|
5
|
+
* A query bus decorator that adds dispatch and handler interceptor chains
|
|
6
|
+
* to any {@link QueryBus} implementation.
|
|
7
|
+
*
|
|
8
|
+
* {@link createSimpleQueryBus} handles dispatch + subscribe only;
|
|
9
|
+
* this decorator layers interceptor support on top.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createInterceptingQueryBus(delegate: QueryBus): QueryBus & {
|
|
12
|
+
/** Register a dispatch interceptor. Returns an unsubscribe function. */
|
|
13
|
+
registerDispatchInterceptor(interceptor: DispatchInterceptor<QueryMessage>): () => void;
|
|
14
|
+
/** Register a handler interceptor. Returns an unsubscribe function. */
|
|
15
|
+
registerHandlerInterceptor(interceptor: HandlerInterceptor): () => void;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=intercepting-query-bus.d.ts.map
|
|
@@ -0,0 +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"}
|