@zudojs/cqrs 0.0.1

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 (110) hide show
  1. package/README.md +41 -0
  2. package/dist/command/command.core.d.ts +47 -0
  3. package/dist/command/command.core.d.ts.map +1 -0
  4. package/dist/command/command.core.js +58 -0
  5. package/dist/command/command.core.js.map +1 -0
  6. package/dist/command/commandBus.core.d.ts +91 -0
  7. package/dist/command/commandBus.core.d.ts.map +1 -0
  8. package/dist/command/commandBus.core.js +177 -0
  9. package/dist/command/commandBus.core.js.map +1 -0
  10. package/dist/command/commandHandler.core.d.ts +43 -0
  11. package/dist/command/commandHandler.core.d.ts.map +1 -0
  12. package/dist/command/commandHandler.core.js +57 -0
  13. package/dist/command/commandHandler.core.js.map +1 -0
  14. package/dist/command/commandResult.type.d.ts +57 -0
  15. package/dist/command/commandResult.type.d.ts.map +1 -0
  16. package/dist/command/commandResult.type.js +86 -0
  17. package/dist/command/commandResult.type.js.map +1 -0
  18. package/dist/command/index.d.ts +10 -0
  19. package/dist/command/index.d.ts.map +1 -0
  20. package/dist/command/index.js +10 -0
  21. package/dist/command/index.js.map +1 -0
  22. package/dist/cqrsContext/cqrsContext.core.d.ts +97 -0
  23. package/dist/cqrsContext/cqrsContext.core.d.ts.map +1 -0
  24. package/dist/cqrsContext/cqrsContext.core.js +171 -0
  25. package/dist/cqrsContext/cqrsContext.core.js.map +1 -0
  26. package/dist/cqrsContext/index.d.ts +7 -0
  27. package/dist/cqrsContext/index.d.ts.map +1 -0
  28. package/dist/cqrsContext/index.js +7 -0
  29. package/dist/cqrsContext/index.js.map +1 -0
  30. package/dist/cqrsDecorators/cqrsDecorators.core.d.ts +108 -0
  31. package/dist/cqrsDecorators/cqrsDecorators.core.d.ts.map +1 -0
  32. package/dist/cqrsDecorators/cqrsDecorators.core.js +181 -0
  33. package/dist/cqrsDecorators/cqrsDecorators.core.js.map +1 -0
  34. package/dist/cqrsDecorators/index.d.ts +7 -0
  35. package/dist/cqrsDecorators/index.d.ts.map +1 -0
  36. package/dist/cqrsDecorators/index.js +7 -0
  37. package/dist/cqrsDecorators/index.js.map +1 -0
  38. package/dist/cqrsErrors/cqrsError.base.d.ts +85 -0
  39. package/dist/cqrsErrors/cqrsError.base.d.ts.map +1 -0
  40. package/dist/cqrsErrors/cqrsError.base.js +221 -0
  41. package/dist/cqrsErrors/cqrsError.base.js.map +1 -0
  42. package/dist/cqrsErrors/index.d.ts +7 -0
  43. package/dist/cqrsErrors/index.d.ts.map +1 -0
  44. package/dist/cqrsErrors/index.js +7 -0
  45. package/dist/cqrsErrors/index.js.map +1 -0
  46. package/dist/cqrsEvents/cqrsEventBus.core.d.ts +9 -0
  47. package/dist/cqrsEvents/cqrsEventBus.core.d.ts.map +1 -0
  48. package/dist/cqrsEvents/cqrsEventBus.core.js +9 -0
  49. package/dist/cqrsEvents/cqrsEventBus.core.js.map +1 -0
  50. package/dist/cqrsEvents/cqrsEventResult.type.d.ts +81 -0
  51. package/dist/cqrsEvents/cqrsEventResult.type.d.ts.map +1 -0
  52. package/dist/cqrsEvents/cqrsEventResult.type.js +159 -0
  53. package/dist/cqrsEvents/cqrsEventResult.type.js.map +1 -0
  54. package/dist/cqrsEvents/cqrsEvents.type.d.ts +102 -0
  55. package/dist/cqrsEvents/cqrsEvents.type.d.ts.map +1 -0
  56. package/dist/cqrsEvents/cqrsEvents.type.js +103 -0
  57. package/dist/cqrsEvents/cqrsEvents.type.js.map +1 -0
  58. package/dist/cqrsEvents/index.d.ts +12 -0
  59. package/dist/cqrsEvents/index.d.ts.map +1 -0
  60. package/dist/cqrsEvents/index.js +12 -0
  61. package/dist/cqrsEvents/index.js.map +1 -0
  62. package/dist/cqrsMiddleware/cqrsMiddleware.core.d.ts +65 -0
  63. package/dist/cqrsMiddleware/cqrsMiddleware.core.d.ts.map +1 -0
  64. package/dist/cqrsMiddleware/cqrsMiddleware.core.js +185 -0
  65. package/dist/cqrsMiddleware/cqrsMiddleware.core.js.map +1 -0
  66. package/dist/cqrsMiddleware/index.d.ts +7 -0
  67. package/dist/cqrsMiddleware/index.d.ts.map +1 -0
  68. package/dist/cqrsMiddleware/index.js +7 -0
  69. package/dist/cqrsMiddleware/index.js.map +1 -0
  70. package/dist/cqrsTypes/cqrsTypes.type.d.ts +158 -0
  71. package/dist/cqrsTypes/cqrsTypes.type.d.ts.map +1 -0
  72. package/dist/cqrsTypes/cqrsTypes.type.js +34 -0
  73. package/dist/cqrsTypes/cqrsTypes.type.js.map +1 -0
  74. package/dist/cqrsTypes/index.d.ts +7 -0
  75. package/dist/cqrsTypes/index.d.ts.map +1 -0
  76. package/dist/cqrsTypes/index.js +7 -0
  77. package/dist/cqrsTypes/index.js.map +1 -0
  78. package/dist/handlerRegistry/handlerRegistry.core.d.ts +135 -0
  79. package/dist/handlerRegistry/handlerRegistry.core.d.ts.map +1 -0
  80. package/dist/handlerRegistry/handlerRegistry.core.js +209 -0
  81. package/dist/handlerRegistry/handlerRegistry.core.js.map +1 -0
  82. package/dist/handlerRegistry/index.d.ts +7 -0
  83. package/dist/handlerRegistry/index.d.ts.map +1 -0
  84. package/dist/handlerRegistry/index.js +7 -0
  85. package/dist/handlerRegistry/index.js.map +1 -0
  86. package/dist/index.d.ts +17 -0
  87. package/dist/index.d.ts.map +1 -0
  88. package/dist/index.js +26 -0
  89. package/dist/index.js.map +1 -0
  90. package/dist/query/index.d.ts +10 -0
  91. package/dist/query/index.d.ts.map +1 -0
  92. package/dist/query/index.js +10 -0
  93. package/dist/query/index.js.map +1 -0
  94. package/dist/query/query.core.d.ts +50 -0
  95. package/dist/query/query.core.d.ts.map +1 -0
  96. package/dist/query/query.core.js +61 -0
  97. package/dist/query/query.core.js.map +1 -0
  98. package/dist/query/queryBus.core.d.ts +91 -0
  99. package/dist/query/queryBus.core.d.ts.map +1 -0
  100. package/dist/query/queryBus.core.js +177 -0
  101. package/dist/query/queryBus.core.js.map +1 -0
  102. package/dist/query/queryHandler.core.d.ts +43 -0
  103. package/dist/query/queryHandler.core.d.ts.map +1 -0
  104. package/dist/query/queryHandler.core.js +57 -0
  105. package/dist/query/queryHandler.core.js.map +1 -0
  106. package/dist/query/queryResult.type.d.ts +56 -0
  107. package/dist/query/queryResult.type.d.ts.map +1 -0
  108. package/dist/query/queryResult.type.js +86 -0
  109. package/dist/query/queryResult.type.js.map +1 -0
  110. package/package.json +52 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cqrsEventResult.type.d.ts","sourceRoot":"","sources":["../../src/cqrsEvents/cqrsEventResult.type.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Creates an event publication result.
3
+ */
4
+ export function createEventResult(options) {
5
+ validateEvent(options.event);
6
+ validateHandlerCounts(options.handlerCount, options.successfulHandlers ?? 0, options.failedHandlers ?? 0);
7
+ const successfulHandlers = options.successfulHandlers ?? 0;
8
+ const failedHandlers = options.failedHandlers ?? 0;
9
+ const status = resolveStatus(options.handlerCount, successfulHandlers, failedHandlers);
10
+ const result = {
11
+ status,
12
+ eventType: options.event.type,
13
+ eventId: options.event.id,
14
+ handlerCount: options.handlerCount,
15
+ successfulHandlers,
16
+ failedHandlers,
17
+ publishedAt: options.publishedAt ?? new Date(),
18
+ durationMs: options.durationMs,
19
+ errors: options.errors && options.errors.length > 0
20
+ ? Object.freeze([...options.errors])
21
+ : undefined,
22
+ metadata: options.metadata
23
+ ? Object.freeze({
24
+ ...options.metadata,
25
+ })
26
+ : undefined,
27
+ };
28
+ return Object.freeze(result);
29
+ }
30
+ /**
31
+ * Creates a result for a completely successful publication.
32
+ */
33
+ export function createSuccessfulEventResult(event, handlerCount, options = {}) {
34
+ return createEventResult({
35
+ ...options,
36
+ event,
37
+ handlerCount,
38
+ successfulHandlers: handlerCount,
39
+ failedHandlers: 0,
40
+ });
41
+ }
42
+ /**
43
+ * Creates a result for a partially successful publication.
44
+ */
45
+ export function createPartialEventResult(event, handlerCount, successfulHandlers, failedHandlers, options = {}) {
46
+ return createEventResult({
47
+ ...options,
48
+ event,
49
+ handlerCount,
50
+ successfulHandlers,
51
+ failedHandlers,
52
+ });
53
+ }
54
+ /**
55
+ * Creates a result for a completely failed publication.
56
+ */
57
+ export function createFailedEventResult(event, handlerCount, errors = [], options = {}) {
58
+ return createEventResult({
59
+ ...options,
60
+ event,
61
+ handlerCount,
62
+ successfulHandlers: 0,
63
+ failedHandlers: handlerCount,
64
+ errors,
65
+ });
66
+ }
67
+ /**
68
+ * Determines whether an event was published successfully.
69
+ */
70
+ export function isEventPublished(result) {
71
+ return result.status === "published";
72
+ }
73
+ /**
74
+ * Determines whether event publication partially succeeded.
75
+ */
76
+ export function isEventPartiallyPublished(result) {
77
+ return result.status === "partial";
78
+ }
79
+ /**
80
+ * Determines whether event publication failed.
81
+ */
82
+ export function isEventFailed(result) {
83
+ return result.status === "failed";
84
+ }
85
+ /**
86
+ * Determines whether any event handlers failed.
87
+ */
88
+ export function hasEventHandlerFailures(result) {
89
+ return result.failedHandlers > 0;
90
+ }
91
+ /**
92
+ * Determines whether every registered handler succeeded.
93
+ */
94
+ export function allEventHandlersSucceeded(result) {
95
+ return (result.failedHandlers === 0 &&
96
+ result.successfulHandlers === result.handlerCount);
97
+ }
98
+ /**
99
+ * Returns the errors captured during publication.
100
+ */
101
+ export function getEventErrors(result) {
102
+ return result.errors ?? [];
103
+ }
104
+ /**
105
+ * Adds metadata to an event result.
106
+ */
107
+ export function withEventResultMetadata(result, metadata) {
108
+ return Object.freeze({
109
+ ...result,
110
+ metadata: Object.freeze({
111
+ ...(result.metadata ?? {}),
112
+ ...metadata,
113
+ }),
114
+ });
115
+ }
116
+ /**
117
+ * Resolves the result status from handler execution counts.
118
+ */
119
+ function resolveStatus(handlerCount, successfulHandlers, failedHandlers) {
120
+ if (failedHandlers === 0 && successfulHandlers === handlerCount) {
121
+ return "published";
122
+ }
123
+ if (successfulHandlers > 0 && failedHandlers > 0) {
124
+ return "partial";
125
+ }
126
+ return "failed";
127
+ }
128
+ /**
129
+ * Validates event handler execution counts.
130
+ */
131
+ function validateHandlerCounts(handlerCount, successfulHandlers, failedHandlers) {
132
+ if (!Number.isInteger(handlerCount) || handlerCount < 0) {
133
+ throw new TypeError("Event handler count must be a non-negative integer.");
134
+ }
135
+ if (!Number.isInteger(successfulHandlers) || successfulHandlers < 0) {
136
+ throw new TypeError("Successful handler count must be a non-negative integer.");
137
+ }
138
+ if (!Number.isInteger(failedHandlers) || failedHandlers < 0) {
139
+ throw new TypeError("Failed handler count must be a non-negative integer.");
140
+ }
141
+ if (successfulHandlers + failedHandlers !== handlerCount) {
142
+ throw new RangeError("Successful and failed handler counts must equal the total handler count.");
143
+ }
144
+ }
145
+ /**
146
+ * Validates the event attached to a result.
147
+ */
148
+ function validateEvent(event) {
149
+ if (!event || typeof event !== "object") {
150
+ throw new TypeError("A valid event is required.");
151
+ }
152
+ if (typeof event.type !== "string" || event.type.trim().length === 0) {
153
+ throw new TypeError("Event type is required.");
154
+ }
155
+ if (typeof event.id !== "string" || event.id.length === 0) {
156
+ throw new TypeError("Event ID is required.");
157
+ }
158
+ }
159
+ //# sourceMappingURL=cqrsEventResult.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cqrsEventResult.type.js","sourceRoot":"","sources":["../../src/cqrsEvents/cqrsEventResult.type.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ import type { Event, EventId, EventType, EventCorrelationId } from "@zudojs/events";
2
+ /**
3
+ * CQRS-specific event extensions.
4
+ *
5
+ * Adds aggregate identity and versioning on top of the base
6
+ * Zudojs Event contract.
7
+ */
8
+ export interface CqrsEventExtensions {
9
+ readonly aggregateId?: string;
10
+ readonly aggregateType?: string;
11
+ readonly version?: number;
12
+ }
13
+ /**
14
+ * CQRS event contract.
15
+ *
16
+ * Extends the base Zudojs Event with aggregate identity and
17
+ * versioning fields used in event-sourced aggregates.
18
+ */
19
+ export type CqrsEvent<TPayload extends Record<string, unknown> = Record<string, unknown>> = Event<TPayload> & CqrsEventExtensions;
20
+ /**
21
+ * Input used to create a CQRS event.
22
+ */
23
+ export interface CreateCqrsEventInput<TPayload extends Record<string, unknown> = Record<string, unknown>> {
24
+ readonly type: EventType;
25
+ readonly payload: TPayload;
26
+ readonly id?: EventId;
27
+ readonly timestamp?: Date | number;
28
+ readonly source?: string;
29
+ readonly correlationId?: EventCorrelationId;
30
+ readonly causationId?: EventCorrelationId;
31
+ readonly metadata?: Readonly<Record<string, unknown>>;
32
+ readonly aggregateId?: string;
33
+ readonly aggregateType?: string;
34
+ readonly version?: number;
35
+ }
36
+ /**
37
+ * Handler for a single CQRS event type.
38
+ *
39
+ * CQRS handlers receive only the event, unlike the base Zudojs
40
+ * EventHandler which also receives a context object. The CQRS
41
+ * bus handles context propagation internally.
42
+ */
43
+ export type CqrsEventHandler<TEvent extends CqrsEvent = CqrsEvent> = (event: TEvent) => void | Promise<void>;
44
+ /**
45
+ * CQRS event handler registration.
46
+ */
47
+ export interface CqrsEventHandlerRegistration<TEvent extends CqrsEvent = CqrsEvent> {
48
+ readonly eventType: TEvent["type"];
49
+ readonly handler: CqrsEventHandler<TEvent>;
50
+ }
51
+ /**
52
+ * Creates a unique CQRS event identifier.
53
+ *
54
+ * Delegates to the base Zudojs event ID generator.
55
+ */
56
+ export declare function createEventId(): string;
57
+ /**
58
+ * Creates an immutable CQRS event.
59
+ *
60
+ * Extends the base Zudojs event with aggregate fields.
61
+ */
62
+ export declare function createCqrsEvent<TPayload extends Record<string, unknown>>(input: CreateCqrsEventInput<TPayload>): CqrsEvent<TPayload>;
63
+ /**
64
+ * Returns the type discriminator of an event.
65
+ */
66
+ export declare function getEventType(event: CqrsEvent): string;
67
+ /**
68
+ * Returns the aggregate identity when available.
69
+ */
70
+ export declare function getAggregateId(event: CqrsEvent): string | undefined;
71
+ /**
72
+ * Determines whether an unknown value has the basic CQRS event shape.
73
+ */
74
+ export declare function isCqrsEvent(value: unknown): value is CqrsEvent;
75
+ /**
76
+ * Determines whether an event belongs to an aggregate.
77
+ */
78
+ export declare function isAggregateEvent(event: CqrsEvent): event is CqrsEvent & {
79
+ readonly aggregateId: string;
80
+ readonly aggregateType: string;
81
+ };
82
+ /**
83
+ * Creates a CQRS event handler registration.
84
+ */
85
+ export declare function createCqrsEventHandler<TEvent extends CqrsEvent>(eventType: TEvent["type"], handler: CqrsEventHandler<TEvent>): CqrsEventHandlerRegistration<TEvent>;
86
+ /**
87
+ * @deprecated Use createCqrsEvent instead.
88
+ */
89
+ export declare const createEvent: typeof createCqrsEvent;
90
+ /**
91
+ * @deprecated Use CqrsEventHandler type instead.
92
+ */
93
+ export type EventHandler<TEvent extends CqrsEvent = CqrsEvent> = CqrsEventHandler<TEvent>;
94
+ /**
95
+ * @deprecated Use CqrsEventHandlerRegistration type instead.
96
+ */
97
+ export type EventHandlerRegistration<TEvent extends CqrsEvent = CqrsEvent> = CqrsEventHandlerRegistration<TEvent>;
98
+ /**
99
+ * @deprecated Use createCqrsEventHandler instead.
100
+ */
101
+ export declare const createEventHandler: typeof createCqrsEventHandler;
102
+ //# sourceMappingURL=cqrsEvents.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cqrsEvents.type.d.ts","sourceRoot":"","sources":["../../src/cqrsEvents/cqrsEvents.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,OAAO,EACP,SAAS,EACT,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAQxB;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,MAAM,MAAM,SAAS,CACnB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAChE,KAAK,CAAC,QAAQ,CAAC,GAAG,mBAAmB,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,oBAAoB,CACnC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAElE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,CAAC,EAAE,kBAAkB,CAAC;IAC5C,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,CAAC,MAAM,SAAS,SAAS,GAAG,SAAS,IAAI,CACnE,KAAK,EAAE,MAAM,KACV,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,4BAA4B,CAC3C,MAAM,SAAS,SAAS,GAAG,SAAS;IAEpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;CAC5C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtE,KAAK,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GACpC,SAAS,CAAC,QAAQ,CAAC,CAgCrB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAEnE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAiB9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,IAAI,SAAS,GAAG;IACvE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC,CAOA;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,SAAS,SAAS,EAC7D,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EACzB,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAChC,4BAA4B,CAAC,MAAM,CAAC,CAatC;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,wBAAkB,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,MAAM,SAAS,SAAS,GAAG,SAAS,IAC3D,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAE3B;;GAEG;AACH,MAAM,MAAM,wBAAwB,CAAC,MAAM,SAAS,SAAS,GAAG,SAAS,IACvE,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,kBAAkB,+BAAyB,CAAC"}
@@ -0,0 +1,103 @@
1
+ import { createEvent as baseCreateEvent, createEventId as baseCreateEventId, isEvent as baseIsEvent, } from "@zudojs/events";
2
+ /**
3
+ * Creates a unique CQRS event identifier.
4
+ *
5
+ * Delegates to the base Zudojs event ID generator.
6
+ */
7
+ export function createEventId() {
8
+ return baseCreateEventId();
9
+ }
10
+ /**
11
+ * Creates an immutable CQRS event.
12
+ *
13
+ * Extends the base Zudojs event with aggregate fields.
14
+ */
15
+ export function createCqrsEvent(input) {
16
+ if (typeof input.type !== "string" || input.type.trim().length === 0) {
17
+ throw new TypeError("Event type cannot be empty.");
18
+ }
19
+ if (!input.payload ||
20
+ typeof input.payload !== "object" ||
21
+ Array.isArray(input.payload)) {
22
+ throw new TypeError("Event payload must be an object.");
23
+ }
24
+ const base = baseCreateEvent({
25
+ type: input.type,
26
+ payload: input.payload,
27
+ id: input.id,
28
+ timestamp: input.timestamp,
29
+ source: input.source,
30
+ correlationId: input.correlationId,
31
+ causationId: input.causationId,
32
+ metadata: input.metadata,
33
+ });
34
+ const event = {
35
+ ...base,
36
+ aggregateId: input.aggregateId,
37
+ aggregateType: input.aggregateType,
38
+ version: input.version,
39
+ };
40
+ return Object.freeze(event);
41
+ }
42
+ /**
43
+ * Returns the type discriminator of an event.
44
+ */
45
+ export function getEventType(event) {
46
+ return event.type;
47
+ }
48
+ /**
49
+ * Returns the aggregate identity when available.
50
+ */
51
+ export function getAggregateId(event) {
52
+ return event.aggregateId;
53
+ }
54
+ /**
55
+ * Determines whether an unknown value has the basic CQRS event shape.
56
+ */
57
+ export function isCqrsEvent(value) {
58
+ if (!baseIsEvent(value)) {
59
+ return false;
60
+ }
61
+ const candidate = value;
62
+ return (typeof candidate.type === "string" &&
63
+ candidate.type.length > 0 &&
64
+ typeof candidate.payload === "object" &&
65
+ candidate.payload !== null &&
66
+ !Array.isArray(candidate.payload) &&
67
+ typeof candidate.id === "string" &&
68
+ candidate.id.length > 0 &&
69
+ candidate.timestamp instanceof Date);
70
+ }
71
+ /**
72
+ * Determines whether an event belongs to an aggregate.
73
+ */
74
+ export function isAggregateEvent(event) {
75
+ return (typeof event.aggregateId === "string" &&
76
+ event.aggregateId.length > 0 &&
77
+ typeof event.aggregateType === "string" &&
78
+ event.aggregateType.length > 0);
79
+ }
80
+ /**
81
+ * Creates a CQRS event handler registration.
82
+ */
83
+ export function createCqrsEventHandler(eventType, handler) {
84
+ if (typeof eventType !== "string" || eventType.trim().length === 0) {
85
+ throw new TypeError("Event type cannot be empty.");
86
+ }
87
+ if (typeof handler !== "function") {
88
+ throw new TypeError("Event handler must be a function.");
89
+ }
90
+ return Object.freeze({
91
+ eventType,
92
+ handler,
93
+ });
94
+ }
95
+ /**
96
+ * @deprecated Use createCqrsEvent instead.
97
+ */
98
+ export const createEvent = createCqrsEvent;
99
+ /**
100
+ * @deprecated Use createCqrsEventHandler instead.
101
+ */
102
+ export const createEventHandler = createCqrsEventHandler;
103
+ //# sourceMappingURL=cqrsEvents.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cqrsEvents.type.js","sourceRoot":"","sources":["../../src/cqrsEvents/cqrsEvents.type.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @zudojs/cqrs/cqrsEvents
3
+ *
4
+ * CQRS event types, event bus, and event result types.
5
+ *
6
+ * Re-uses the base Zudojs EventBus and Event types,
7
+ * extending them with aggregate-specific fields.
8
+ */
9
+ export { type CqrsEvent, type CqrsEventExtensions, type CreateCqrsEventInput, type CqrsEventHandler, type CqrsEventHandlerRegistration, createEventId, createCqrsEvent, getEventType, getAggregateId, isCqrsEvent, isAggregateEvent, createCqrsEventHandler, createEvent, type EventHandler, type EventHandlerRegistration, createEventHandler, } from "./cqrsEvents.type.js";
10
+ export { EventBus, type EventBusOptions, type EventPublishResult, createEventBus, createStartedEventBus, type PublishOptions, EventBusState, type EventBusEvent, type EventBusListener, } from "./cqrsEventBus.core.js";
11
+ export { type EventResultStatus, type EventResult, type CreateEventResultOptions, createEventResult, createSuccessfulEventResult, createPartialEventResult, createFailedEventResult, isEventPublished, isEventPartiallyPublished, isEventFailed, hasEventHandlerFailures, allEventHandlersSucceeded, getEventErrors, withEventResultMetadata, } from "./cqrsEventResult.type.js";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cqrsEvents/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,4BAA4B,EACjC,aAAa,EACb,eAAe,EACf,YAAY,EACZ,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,WAAW,EACX,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,QAAQ,EACR,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,cAAc,EACd,qBAAqB,EACrB,KAAK,cAAc,EACnB,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,wBAAwB,EAC7B,iBAAiB,EACjB,2BAA2B,EAC3B,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,EAChB,yBAAyB,EACzB,aAAa,EACb,uBAAuB,EACvB,yBAAyB,EACzB,cAAc,EACd,uBAAuB,GACxB,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @zudojs/cqrs/cqrsEvents
3
+ *
4
+ * CQRS event types, event bus, and event result types.
5
+ *
6
+ * Re-uses the base Zudojs EventBus and Event types,
7
+ * extending them with aggregate-specific fields.
8
+ */
9
+ export { createEventId, createCqrsEvent, getEventType, getAggregateId, isCqrsEvent, isAggregateEvent, createCqrsEventHandler, createEvent, createEventHandler, } from "./cqrsEvents.type.js";
10
+ export { EventBus, createEventBus, createStartedEventBus, EventBusState, } from "./cqrsEventBus.core.js";
11
+ export { createEventResult, createSuccessfulEventResult, createPartialEventResult, createFailedEventResult, isEventPublished, isEventPartiallyPublished, isEventFailed, hasEventHandlerFailures, allEventHandlersSucceeded, getEventErrors, withEventResultMetadata, } from "./cqrsEventResult.type.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cqrsEvents/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAML,aAAa,EACb,eAAe,EACf,YAAY,EACZ,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,WAAW,EAGX,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,QAAQ,EAGR,cAAc,EACd,qBAAqB,EAErB,aAAa,GAGd,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAIL,iBAAiB,EACjB,2BAA2B,EAC3B,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,EAChB,yBAAyB,EACzB,aAAa,EACb,uBAAuB,EACvB,yBAAyB,EACzB,cAAc,EACd,uBAAuB,GACxB,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,65 @@
1
+ import type { Command, Query, CqrsContext, CqrsMiddleware, CommandMiddleware, QueryMiddleware } from "../cqrsTypes/cqrsTypes.type.js";
2
+ /**
3
+ * Next function used by middleware.
4
+ */
5
+ export type CqrsNext = <TRequest extends Command | Query>(request: TRequest, context?: CqrsContext) => Promise<unknown>;
6
+ /**
7
+ * Configuration for middleware execution.
8
+ */
9
+ export interface MiddlewareOptions {
10
+ readonly name?: string;
11
+ readonly enabled?: boolean;
12
+ }
13
+ /**
14
+ * Middleware that measures command or query execution time.
15
+ */
16
+ export declare function timingMiddleware(options?: MiddlewareOptions): CqrsMiddleware;
17
+ /**
18
+ * Middleware that catches unknown exceptions and normalizes them
19
+ * into BaseError instances.
20
+ */
21
+ export declare function errorMiddleware(options?: MiddlewareOptions): CqrsMiddleware;
22
+ /**
23
+ * Middleware that validates the basic CQRS request structure.
24
+ */
25
+ export declare function validationMiddleware(options?: MiddlewareOptions): CqrsMiddleware;
26
+ /**
27
+ * Middleware that adds execution metadata to the CQRS context.
28
+ */
29
+ export declare function contextMiddleware(options?: MiddlewareOptions): CqrsMiddleware;
30
+ /**
31
+ * Middleware that prevents concurrent execution of the same request type
32
+ * when used with a shared lock implementation.
33
+ */
34
+ export interface CqrsLock {
35
+ acquire(key: string): (() => void) | Promise<() => void>;
36
+ }
37
+ /**
38
+ * Creates locking middleware.
39
+ */
40
+ export declare function lockMiddleware(lock: CqrsLock, options?: MiddlewareOptions): CqrsMiddleware;
41
+ /**
42
+ * Adapts command-specific middleware to generic CQRS middleware.
43
+ */
44
+ export declare function commandMiddleware(middleware: CommandMiddleware): CqrsMiddleware;
45
+ /**
46
+ * Adapts query-specific middleware to generic CQRS middleware.
47
+ */
48
+ export declare function queryMiddleware(middleware: QueryMiddleware): CqrsMiddleware;
49
+ /**
50
+ * Combines multiple middleware functions into a single middleware.
51
+ */
52
+ export declare function composeMiddleware(middleware: readonly CqrsMiddleware[]): CqrsMiddleware;
53
+ /**
54
+ * Creates a middleware that runs a callback before execution.
55
+ */
56
+ export declare function beforeMiddleware(callback: (request: Command | Query, context?: CqrsContext) => void | Promise<void>): CqrsMiddleware;
57
+ /**
58
+ * Creates a middleware that runs a callback after successful execution.
59
+ */
60
+ export declare function afterMiddleware(callback: (request: Command | Query, result: unknown, context?: CqrsContext) => void | Promise<void>): CqrsMiddleware;
61
+ /**
62
+ * Creates a middleware that runs a callback when execution fails.
63
+ */
64
+ export declare function onErrorMiddleware(callback: (request: Command | Query, error: unknown, context?: CqrsContext) => void | Promise<void>): CqrsMiddleware;
65
+ //# sourceMappingURL=cqrsMiddleware.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cqrsMiddleware.core.d.ts","sourceRoot":"","sources":["../../src/cqrsMiddleware/cqrsMiddleware.core.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,OAAO,EACP,KAAK,EACL,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,eAAe,EAChB,MAAM,gCAAgC,CAAC;AAExC;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,QAAQ,SAAS,OAAO,GAAG,KAAK,EACtD,OAAO,EAAE,QAAQ,EACjB,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE,iBAAsB,GAC9B,cAAc,CAmBhB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,GAAE,iBAAsB,GAC9B,cAAc,CA8BhB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,iBAAsB,GAC9B,cAAc,CAwBhB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,iBAAsB,GAC9B,cAAc,CAgBhB;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;CAC1D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,QAAQ,EACd,OAAO,GAAE,iBAAsB,GAC9B,cAAc,CAkBhB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,iBAAiB,GAC5B,cAAc,CAQhB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,eAAe,GAAG,cAAc,CAM3E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,SAAS,cAAc,EAAE,GACpC,cAAc,CAiChB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,CACR,OAAO,EAAE,OAAO,GAAG,KAAK,EACxB,OAAO,CAAC,EAAE,WAAW,KAClB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACxB,cAAc,CAMhB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,CACR,OAAO,EAAE,OAAO,GAAG,KAAK,EACxB,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,WAAW,KAClB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACxB,cAAc,CAQhB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,CACR,OAAO,EAAE,OAAO,GAAG,KAAK,EACxB,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,WAAW,KAClB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACxB,cAAc,CAUhB"}