@woltz/rich-domain 1.6.0 → 1.7.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/cjs/base-entity.d.ts.map +1 -1
- package/dist/cjs/base-entity.js +3 -0
- package/dist/cjs/base-entity.js.map +1 -1
- package/dist/cjs/change-tracker.d.ts +1 -3
- package/dist/cjs/change-tracker.d.ts.map +1 -1
- package/dist/cjs/change-tracker.js +24 -24
- package/dist/cjs/change-tracker.js.map +1 -1
- package/dist/cjs/entity-schema-registry.d.ts.map +1 -1
- package/dist/cjs/entity-schema-registry.js +12 -10
- package/dist/cjs/entity-schema-registry.js.map +1 -1
- package/dist/cjs/exceptions.d.ts.map +1 -1
- package/dist/cjs/exceptions.js +0 -25
- package/dist/cjs/exceptions.js.map +1 -1
- package/dist/cjs/id.d.ts +17 -10
- package/dist/cjs/id.d.ts.map +1 -1
- package/dist/cjs/id.js +15 -3
- package/dist/cjs/id.js.map +1 -1
- package/dist/cjs/paginated-result.d.ts +4 -12
- package/dist/cjs/paginated-result.d.ts.map +1 -1
- package/dist/cjs/paginated-result.js +4 -1
- package/dist/cjs/paginated-result.js.map +1 -1
- package/dist/cjs/types/domain.d.ts +3 -4
- package/dist/cjs/types/domain.d.ts.map +1 -1
- package/dist/cjs/types/utils.d.ts +8 -7
- package/dist/cjs/types/utils.d.ts.map +1 -1
- package/dist/cjs/value-object.d.ts +7 -54
- package/dist/cjs/value-object.d.ts.map +1 -1
- package/dist/cjs/value-object.js +12 -75
- package/dist/cjs/value-object.js.map +1 -1
- package/dist/esm/base-entity.d.ts.map +1 -1
- package/dist/esm/base-entity.js +3 -0
- package/dist/esm/base-entity.js.map +1 -1
- package/dist/esm/change-tracker.d.ts +1 -3
- package/dist/esm/change-tracker.d.ts.map +1 -1
- package/dist/esm/change-tracker.js +24 -24
- package/dist/esm/change-tracker.js.map +1 -1
- package/dist/esm/entity-schema-registry.d.ts.map +1 -1
- package/dist/esm/entity-schema-registry.js +12 -10
- package/dist/esm/entity-schema-registry.js.map +1 -1
- package/dist/esm/exceptions.d.ts.map +1 -1
- package/dist/esm/exceptions.js +0 -25
- package/dist/esm/exceptions.js.map +1 -1
- package/dist/esm/id.d.ts +17 -10
- package/dist/esm/id.d.ts.map +1 -1
- package/dist/esm/id.js +15 -3
- package/dist/esm/id.js.map +1 -1
- package/dist/esm/paginated-result.d.ts +4 -12
- package/dist/esm/paginated-result.d.ts.map +1 -1
- package/dist/esm/paginated-result.js +4 -1
- package/dist/esm/paginated-result.js.map +1 -1
- package/dist/esm/types/domain.d.ts +3 -4
- package/dist/esm/types/domain.d.ts.map +1 -1
- package/dist/esm/types/utils.d.ts +8 -7
- package/dist/esm/types/utils.d.ts.map +1 -1
- package/dist/esm/value-object.d.ts +7 -54
- package/dist/esm/value-object.d.ts.map +1 -1
- package/dist/esm/value-object.js +12 -75
- package/dist/esm/value-object.js.map +1 -1
- package/dist/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.types.tsbuildinfo +1 -1
- package/dist/types/base-entity.d.ts.map +1 -1
- package/dist/types/change-tracker.d.ts +1 -3
- package/dist/types/change-tracker.d.ts.map +1 -1
- package/dist/types/entity-schema-registry.d.ts.map +1 -1
- package/dist/types/exceptions.d.ts.map +1 -1
- package/dist/types/id.d.ts +17 -10
- package/dist/types/id.d.ts.map +1 -1
- package/dist/types/paginated-result.d.ts +4 -12
- package/dist/types/paginated-result.d.ts.map +1 -1
- package/dist/types/types/domain.d.ts +3 -4
- package/dist/types/types/domain.d.ts.map +1 -1
- package/dist/types/types/utils.d.ts +8 -7
- package/dist/types/types/utils.d.ts.map +1 -1
- package/dist/types/value-object.d.ts +7 -54
- package/dist/types/value-object.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/domain-event-bus.d.ts +0 -56
- package/dist/cjs/domain-event-bus.d.ts.map +0 -1
- package/dist/cjs/domain-event-bus.js +0 -108
- package/dist/cjs/domain-event-bus.js.map +0 -1
- package/dist/esm/domain-event-bus.d.ts +0 -56
- package/dist/esm/domain-event-bus.d.ts.map +0 -1
- package/dist/esm/domain-event-bus.js +0 -104
- package/dist/esm/domain-event-bus.js.map +0 -1
- package/dist/types/domain-event-bus.d.ts +0 -56
- package/dist/types/domain-event-bus.d.ts.map +0 -1
|
@@ -1,38 +1,16 @@
|
|
|
1
1
|
import { ValidationError } from "./validation-error.js";
|
|
2
2
|
import { IDomainEvent } from ".";
|
|
3
|
-
import { VOHooks, EntityValidation } from "./types/index.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*/
|
|
7
|
-
export type IdentityKeyDefinition<T> = (keyof T)[] | keyof T;
|
|
8
|
-
export declare abstract class ValueObject<T> {
|
|
9
|
-
protected readonly props: T;
|
|
3
|
+
import { VOHooks, EntityValidation, Primitive } from "./types/index.js";
|
|
4
|
+
export declare abstract class ValueObject<T extends Primitive> {
|
|
5
|
+
readonly value: T;
|
|
10
6
|
private validationConfig;
|
|
11
7
|
private domainHooks?;
|
|
12
8
|
private domainSchema?;
|
|
13
9
|
private domainEvents;
|
|
14
10
|
protected static validation?: EntityValidation<any>;
|
|
15
11
|
protected static hooks?: VOHooks<any, any>;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
* Used by ChangeTracker to track changes in arrays of Value Objects.
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```typescript
|
|
22
|
-
* // Simple key
|
|
23
|
-
* class TagReference extends ValueObject<{ tagId: string }> {
|
|
24
|
-
* static readonly identityKey = 'tagId';
|
|
25
|
-
* }
|
|
26
|
-
*
|
|
27
|
-
* // Composite key
|
|
28
|
-
* class Like extends ValueObject<{ postId: string; userId: string }> {
|
|
29
|
-
* static readonly identityKey = ['postId', 'userId'];
|
|
30
|
-
* }
|
|
31
|
-
* ```
|
|
32
|
-
*/
|
|
33
|
-
protected static identityKey?: IdentityKeyDefinition<any>;
|
|
34
|
-
constructor(props: T);
|
|
35
|
-
private validateProps;
|
|
12
|
+
constructor(value: T);
|
|
13
|
+
private validateValue;
|
|
36
14
|
private extractPathKey;
|
|
37
15
|
/**
|
|
38
16
|
* Returns true if the value object has validation errors (when throwOnError is false).
|
|
@@ -46,30 +24,6 @@ export declare abstract class ValueObject<T> {
|
|
|
46
24
|
* Compare this ValueObject with another for equality based on their properties.
|
|
47
25
|
*/
|
|
48
26
|
equals(other: ValueObject<T>): boolean;
|
|
49
|
-
/**
|
|
50
|
-
* Returns the identity key for this Value Object.
|
|
51
|
-
* Used for identification in collections when identityKey is set.
|
|
52
|
-
*
|
|
53
|
-
* @returns String with the identity key or null if not defined
|
|
54
|
-
*
|
|
55
|
-
* @example
|
|
56
|
-
* ```typescript
|
|
57
|
-
* const like = new Like({ postId: 'p1', userId: 'u1' });
|
|
58
|
-
* like.getIdentityKey(); // 'p1:u1'
|
|
59
|
-
*
|
|
60
|
-
* const tag = new TagReference({ tagId: 'tag-123' });
|
|
61
|
-
* tag.getIdentityKey(); // 'tag-123'
|
|
62
|
-
* ```
|
|
63
|
-
*/
|
|
64
|
-
getIdentityKey(): string | null;
|
|
65
|
-
/**
|
|
66
|
-
* Returns true if this Value Object has an identity key defined.
|
|
67
|
-
*/
|
|
68
|
-
hasIdentityKey(): boolean;
|
|
69
|
-
/**
|
|
70
|
-
* Returns the identity key definition (if any).
|
|
71
|
-
*/
|
|
72
|
-
static getIdentityKeyDefinition<P>(): IdentityKeyDefinition<P> | undefined;
|
|
73
27
|
/**
|
|
74
28
|
* Adds a domain event to this value object.
|
|
75
29
|
*/
|
|
@@ -86,11 +40,10 @@ export declare abstract class ValueObject<T> {
|
|
|
86
40
|
* Returns true if the value object has uncommitted events.
|
|
87
41
|
*/
|
|
88
42
|
hasUncommittedEvents(): boolean;
|
|
89
|
-
toJSON(): T;
|
|
90
43
|
/**
|
|
91
|
-
* Creates a new ValueObject with updated
|
|
44
|
+
* Creates a new ValueObject with updated value.
|
|
92
45
|
* ValueObjects are immutable, so this returns a new instance.
|
|
93
46
|
*/
|
|
94
|
-
protected clone(
|
|
47
|
+
protected clone(value: T): this;
|
|
95
48
|
}
|
|
96
49
|
//# sourceMappingURL=value-object.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value-object.d.ts","sourceRoot":"","sources":["../../src/value-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC;AACjC,OAAO,EACL,OAAO,EAGP,gBAAgB,
|
|
1
|
+
{"version":3,"file":"value-object.d.ts","sourceRoot":"","sources":["../../src/value-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC;AACjC,OAAO,EACL,OAAO,EAGP,gBAAgB,EAChB,SAAS,EACV,MAAM,kBAAkB,CAAC;AAW1B,8BAAsB,WAAW,CAAC,CAAC,SAAS,SAAS;IACnD,SAAgB,KAAK,EAAG,CAAC,CAAC;IAC1B,OAAO,CAAC,gBAAgB,CAA6B;IAErD,OAAO,CAAC,WAAW,CAAC,CAAkB;IACtC,OAAO,CAAC,YAAY,CAAC,CAAoB;IACzC,OAAO,CAAC,YAAY,CAAsB;IAE1C,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACpD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAE/B,KAAK,EAAE,CAAC;IAmCpB,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,eAAe,GAAG,SAAS,CAElD;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO;IAKtC;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAInD;;OAEG;IACH,oBAAoB,IAAI,YAAY,EAAE;IAItC;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;;OAGG;IACH,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;CAIhC"}
|
package/package.json
CHANGED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { IDomainEvent, DomainEventHandler, IDomainEventHandler } from ".";
|
|
2
|
-
type EventConstructor<T extends IDomainEvent = IDomainEvent> = new (...args: any[]) => T;
|
|
3
|
-
/**
|
|
4
|
-
* Domain Event Bus - Singleton pattern for event pub/sub
|
|
5
|
-
*/
|
|
6
|
-
export declare class DomainEventBus {
|
|
7
|
-
private static instance;
|
|
8
|
-
private handlers;
|
|
9
|
-
private wildcardHandlers;
|
|
10
|
-
private constructor();
|
|
11
|
-
/**
|
|
12
|
-
* Get the singleton instance
|
|
13
|
-
*/
|
|
14
|
-
static getInstance(): DomainEventBus;
|
|
15
|
-
/**
|
|
16
|
-
* Subscribe to a specific event type
|
|
17
|
-
*/
|
|
18
|
-
subscribe<T extends IDomainEvent>(props: {
|
|
19
|
-
event: EventConstructor<T> | string;
|
|
20
|
-
handler: DomainEventHandler<T> | IDomainEventHandler<T>;
|
|
21
|
-
}): void;
|
|
22
|
-
/**
|
|
23
|
-
* Subscribe to all events (wildcard)
|
|
24
|
-
*/
|
|
25
|
-
subscribeAll(handler: DomainEventHandler<IDomainEvent> | IDomainEventHandler<IDomainEvent>): void;
|
|
26
|
-
/**
|
|
27
|
-
* Unsubscribe from a specific event type
|
|
28
|
-
*/
|
|
29
|
-
unsubscribe<T extends IDomainEvent>(eventType: EventConstructor<T> | string, handler: DomainEventHandler<T> | IDomainEventHandler<T>): void;
|
|
30
|
-
/**
|
|
31
|
-
* Unsubscribe from all events
|
|
32
|
-
*/
|
|
33
|
-
unsubscribeAll(handler: DomainEventHandler<IDomainEvent> | IDomainEventHandler<IDomainEvent>): void;
|
|
34
|
-
/**
|
|
35
|
-
* Publish a single event
|
|
36
|
-
*/
|
|
37
|
-
publish<T extends IDomainEvent>(event: T): Promise<void>;
|
|
38
|
-
/**
|
|
39
|
-
* Publish multiple events
|
|
40
|
-
*/
|
|
41
|
-
publishAll(events: IDomainEvent[]): Promise<void>;
|
|
42
|
-
/**
|
|
43
|
-
* Clear all handlers (useful for testing)
|
|
44
|
-
*/
|
|
45
|
-
clearAllHandlers(): void;
|
|
46
|
-
/**
|
|
47
|
-
* Get count of handlers for an event type
|
|
48
|
-
*/
|
|
49
|
-
getHandlerCount(eventType: EventConstructor | string): number;
|
|
50
|
-
/**
|
|
51
|
-
* Execute a handler (function or class)
|
|
52
|
-
*/
|
|
53
|
-
private executeHandler;
|
|
54
|
-
}
|
|
55
|
-
export {};
|
|
56
|
-
//# sourceMappingURL=domain-event-bus.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"domain-event-bus.d.ts","sourceRoot":"","sources":["../../src/domain-event-bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,GAAG,CAAC;AAE1E,KAAK,gBAAgB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,KAC7D,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,CAAC,CAAC;AAEP;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAGF;IACd,OAAO,CAAC,gBAAgB,CAEV;IAEd,OAAO;IAEP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,cAAc;IAOpC;;OAEG;IACH,SAAS,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE;QACvC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QACpC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;KACzD,GAAG,IAAI;IAWR;;OAEG;IACH,YAAY,CACV,OAAO,EACH,kBAAkB,CAAC,YAAY,CAAC,GAChC,mBAAmB,CAAC,YAAY,CAAC,GACpC,IAAI;IAIP;;OAEG;IACH,WAAW,CAAC,CAAC,SAAS,YAAY,EAChC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,MAAM,EACvC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,GACtD,IAAI;IAaP;;OAEG;IACH,cAAc,CACZ,OAAO,EACH,kBAAkB,CAAC,YAAY,CAAC,GAChC,mBAAmB,CAAC,YAAY,CAAC,GACpC,IAAI;IAIP;;OAEG;IACG,OAAO,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB9D;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAKxB;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,GAAG,MAAM;IAM7D;;OAEG;YACW,cAAc;CAe7B"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DomainEventBus = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Domain Event Bus - Singleton pattern for event pub/sub
|
|
6
|
-
*/
|
|
7
|
-
class DomainEventBus {
|
|
8
|
-
static instance;
|
|
9
|
-
handlers = new Map();
|
|
10
|
-
wildcardHandlers = new Set();
|
|
11
|
-
constructor() { }
|
|
12
|
-
/**
|
|
13
|
-
* Get the singleton instance
|
|
14
|
-
*/
|
|
15
|
-
static getInstance() {
|
|
16
|
-
if (!DomainEventBus.instance) {
|
|
17
|
-
DomainEventBus.instance = new DomainEventBus();
|
|
18
|
-
}
|
|
19
|
-
return DomainEventBus.instance;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Subscribe to a specific event type
|
|
23
|
-
*/
|
|
24
|
-
subscribe(props) {
|
|
25
|
-
const { event, handler } = props;
|
|
26
|
-
const eventName = typeof event === "string" ? event : event.name;
|
|
27
|
-
if (!this.handlers.has(eventName)) {
|
|
28
|
-
this.handlers.set(eventName, new Set());
|
|
29
|
-
}
|
|
30
|
-
this.handlers.get(eventName).add(handler);
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Subscribe to all events (wildcard)
|
|
34
|
-
*/
|
|
35
|
-
subscribeAll(handler) {
|
|
36
|
-
this.wildcardHandlers.add(handler);
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Unsubscribe from a specific event type
|
|
40
|
-
*/
|
|
41
|
-
unsubscribe(eventType, handler) {
|
|
42
|
-
const eventName = typeof eventType === "string" ? eventType : eventType.name;
|
|
43
|
-
const handlers = this.handlers.get(eventName);
|
|
44
|
-
if (handlers) {
|
|
45
|
-
handlers.delete(handler);
|
|
46
|
-
if (handlers.size === 0) {
|
|
47
|
-
this.handlers.delete(eventName);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Unsubscribe from all events
|
|
53
|
-
*/
|
|
54
|
-
unsubscribeAll(handler) {
|
|
55
|
-
this.wildcardHandlers.delete(handler);
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Publish a single event
|
|
59
|
-
*/
|
|
60
|
-
async publish(event) {
|
|
61
|
-
const eventName = event.eventName;
|
|
62
|
-
const handlers = this.handlers.get(eventName) || new Set();
|
|
63
|
-
// Execute specific handlers
|
|
64
|
-
const specificPromises = Array.from(handlers).map((handler) => this.executeHandler(handler, event));
|
|
65
|
-
// Execute wildcard handlers
|
|
66
|
-
const wildcardPromises = Array.from(this.wildcardHandlers).map((handler) => this.executeHandler(handler, event));
|
|
67
|
-
await Promise.all([...specificPromises, ...wildcardPromises]);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Publish multiple events
|
|
71
|
-
*/
|
|
72
|
-
async publishAll(events) {
|
|
73
|
-
await Promise.all(events.map((event) => this.publish(event)));
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Clear all handlers (useful for testing)
|
|
77
|
-
*/
|
|
78
|
-
clearAllHandlers() {
|
|
79
|
-
this.handlers.clear();
|
|
80
|
-
this.wildcardHandlers.clear();
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Get count of handlers for an event type
|
|
84
|
-
*/
|
|
85
|
-
getHandlerCount(eventType) {
|
|
86
|
-
const eventName = typeof eventType === "string" ? eventType : eventType.name;
|
|
87
|
-
return this.handlers.get(eventName)?.size || 0;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Execute a handler (function or class)
|
|
91
|
-
*/
|
|
92
|
-
async executeHandler(handler, event) {
|
|
93
|
-
try {
|
|
94
|
-
if (typeof handler === "function") {
|
|
95
|
-
await handler(event);
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
await handler.handle(event);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
catch (error) {
|
|
102
|
-
console.error(`Error handling event ${event.eventName}:`, error);
|
|
103
|
-
// Don't throw - we don't want one handler failure to break others
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
exports.DomainEventBus = DomainEventBus;
|
|
108
|
-
//# sourceMappingURL=domain-event-bus.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"domain-event-bus.js","sourceRoot":"","sources":["../../src/domain-event-bus.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { IDomainEvent, DomainEventHandler, IDomainEventHandler } from ".";
|
|
2
|
-
type EventConstructor<T extends IDomainEvent = IDomainEvent> = new (...args: any[]) => T;
|
|
3
|
-
/**
|
|
4
|
-
* Domain Event Bus - Singleton pattern for event pub/sub
|
|
5
|
-
*/
|
|
6
|
-
export declare class DomainEventBus {
|
|
7
|
-
private static instance;
|
|
8
|
-
private handlers;
|
|
9
|
-
private wildcardHandlers;
|
|
10
|
-
private constructor();
|
|
11
|
-
/**
|
|
12
|
-
* Get the singleton instance
|
|
13
|
-
*/
|
|
14
|
-
static getInstance(): DomainEventBus;
|
|
15
|
-
/**
|
|
16
|
-
* Subscribe to a specific event type
|
|
17
|
-
*/
|
|
18
|
-
subscribe<T extends IDomainEvent>(props: {
|
|
19
|
-
event: EventConstructor<T> | string;
|
|
20
|
-
handler: DomainEventHandler<T> | IDomainEventHandler<T>;
|
|
21
|
-
}): void;
|
|
22
|
-
/**
|
|
23
|
-
* Subscribe to all events (wildcard)
|
|
24
|
-
*/
|
|
25
|
-
subscribeAll(handler: DomainEventHandler<IDomainEvent> | IDomainEventHandler<IDomainEvent>): void;
|
|
26
|
-
/**
|
|
27
|
-
* Unsubscribe from a specific event type
|
|
28
|
-
*/
|
|
29
|
-
unsubscribe<T extends IDomainEvent>(eventType: EventConstructor<T> | string, handler: DomainEventHandler<T> | IDomainEventHandler<T>): void;
|
|
30
|
-
/**
|
|
31
|
-
* Unsubscribe from all events
|
|
32
|
-
*/
|
|
33
|
-
unsubscribeAll(handler: DomainEventHandler<IDomainEvent> | IDomainEventHandler<IDomainEvent>): void;
|
|
34
|
-
/**
|
|
35
|
-
* Publish a single event
|
|
36
|
-
*/
|
|
37
|
-
publish<T extends IDomainEvent>(event: T): Promise<void>;
|
|
38
|
-
/**
|
|
39
|
-
* Publish multiple events
|
|
40
|
-
*/
|
|
41
|
-
publishAll(events: IDomainEvent[]): Promise<void>;
|
|
42
|
-
/**
|
|
43
|
-
* Clear all handlers (useful for testing)
|
|
44
|
-
*/
|
|
45
|
-
clearAllHandlers(): void;
|
|
46
|
-
/**
|
|
47
|
-
* Get count of handlers for an event type
|
|
48
|
-
*/
|
|
49
|
-
getHandlerCount(eventType: EventConstructor | string): number;
|
|
50
|
-
/**
|
|
51
|
-
* Execute a handler (function or class)
|
|
52
|
-
*/
|
|
53
|
-
private executeHandler;
|
|
54
|
-
}
|
|
55
|
-
export {};
|
|
56
|
-
//# sourceMappingURL=domain-event-bus.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"domain-event-bus.d.ts","sourceRoot":"","sources":["../../src/domain-event-bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,GAAG,CAAC;AAE1E,KAAK,gBAAgB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,KAC7D,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,CAAC,CAAC;AAEP;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAGF;IACd,OAAO,CAAC,gBAAgB,CAEV;IAEd,OAAO;IAEP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,cAAc;IAOpC;;OAEG;IACH,SAAS,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE;QACvC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QACpC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;KACzD,GAAG,IAAI;IAWR;;OAEG;IACH,YAAY,CACV,OAAO,EACH,kBAAkB,CAAC,YAAY,CAAC,GAChC,mBAAmB,CAAC,YAAY,CAAC,GACpC,IAAI;IAIP;;OAEG;IACH,WAAW,CAAC,CAAC,SAAS,YAAY,EAChC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,MAAM,EACvC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,GACtD,IAAI;IAaP;;OAEG;IACH,cAAc,CACZ,OAAO,EACH,kBAAkB,CAAC,YAAY,CAAC,GAChC,mBAAmB,CAAC,YAAY,CAAC,GACpC,IAAI;IAIP;;OAEG;IACG,OAAO,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB9D;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAKxB;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,GAAG,MAAM;IAM7D;;OAEG;YACW,cAAc;CAe7B"}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Domain Event Bus - Singleton pattern for event pub/sub
|
|
3
|
-
*/
|
|
4
|
-
export class DomainEventBus {
|
|
5
|
-
static instance;
|
|
6
|
-
handlers = new Map();
|
|
7
|
-
wildcardHandlers = new Set();
|
|
8
|
-
constructor() { }
|
|
9
|
-
/**
|
|
10
|
-
* Get the singleton instance
|
|
11
|
-
*/
|
|
12
|
-
static getInstance() {
|
|
13
|
-
if (!DomainEventBus.instance) {
|
|
14
|
-
DomainEventBus.instance = new DomainEventBus();
|
|
15
|
-
}
|
|
16
|
-
return DomainEventBus.instance;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Subscribe to a specific event type
|
|
20
|
-
*/
|
|
21
|
-
subscribe(props) {
|
|
22
|
-
const { event, handler } = props;
|
|
23
|
-
const eventName = typeof event === "string" ? event : event.name;
|
|
24
|
-
if (!this.handlers.has(eventName)) {
|
|
25
|
-
this.handlers.set(eventName, new Set());
|
|
26
|
-
}
|
|
27
|
-
this.handlers.get(eventName).add(handler);
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Subscribe to all events (wildcard)
|
|
31
|
-
*/
|
|
32
|
-
subscribeAll(handler) {
|
|
33
|
-
this.wildcardHandlers.add(handler);
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Unsubscribe from a specific event type
|
|
37
|
-
*/
|
|
38
|
-
unsubscribe(eventType, handler) {
|
|
39
|
-
const eventName = typeof eventType === "string" ? eventType : eventType.name;
|
|
40
|
-
const handlers = this.handlers.get(eventName);
|
|
41
|
-
if (handlers) {
|
|
42
|
-
handlers.delete(handler);
|
|
43
|
-
if (handlers.size === 0) {
|
|
44
|
-
this.handlers.delete(eventName);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Unsubscribe from all events
|
|
50
|
-
*/
|
|
51
|
-
unsubscribeAll(handler) {
|
|
52
|
-
this.wildcardHandlers.delete(handler);
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Publish a single event
|
|
56
|
-
*/
|
|
57
|
-
async publish(event) {
|
|
58
|
-
const eventName = event.eventName;
|
|
59
|
-
const handlers = this.handlers.get(eventName) || new Set();
|
|
60
|
-
// Execute specific handlers
|
|
61
|
-
const specificPromises = Array.from(handlers).map((handler) => this.executeHandler(handler, event));
|
|
62
|
-
// Execute wildcard handlers
|
|
63
|
-
const wildcardPromises = Array.from(this.wildcardHandlers).map((handler) => this.executeHandler(handler, event));
|
|
64
|
-
await Promise.all([...specificPromises, ...wildcardPromises]);
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Publish multiple events
|
|
68
|
-
*/
|
|
69
|
-
async publishAll(events) {
|
|
70
|
-
await Promise.all(events.map((event) => this.publish(event)));
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Clear all handlers (useful for testing)
|
|
74
|
-
*/
|
|
75
|
-
clearAllHandlers() {
|
|
76
|
-
this.handlers.clear();
|
|
77
|
-
this.wildcardHandlers.clear();
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Get count of handlers for an event type
|
|
81
|
-
*/
|
|
82
|
-
getHandlerCount(eventType) {
|
|
83
|
-
const eventName = typeof eventType === "string" ? eventType : eventType.name;
|
|
84
|
-
return this.handlers.get(eventName)?.size || 0;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Execute a handler (function or class)
|
|
88
|
-
*/
|
|
89
|
-
async executeHandler(handler, event) {
|
|
90
|
-
try {
|
|
91
|
-
if (typeof handler === "function") {
|
|
92
|
-
await handler(event);
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
await handler.handle(event);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
catch (error) {
|
|
99
|
-
console.error(`Error handling event ${event.eventName}:`, error);
|
|
100
|
-
// Don't throw - we don't want one handler failure to break others
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
//# sourceMappingURL=domain-event-bus.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"domain-event-bus.js","sourceRoot":"","sources":["../../src/domain-event-bus.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { IDomainEvent, DomainEventHandler, IDomainEventHandler } from ".";
|
|
2
|
-
type EventConstructor<T extends IDomainEvent = IDomainEvent> = new (...args: any[]) => T;
|
|
3
|
-
/**
|
|
4
|
-
* Domain Event Bus - Singleton pattern for event pub/sub
|
|
5
|
-
*/
|
|
6
|
-
export declare class DomainEventBus {
|
|
7
|
-
private static instance;
|
|
8
|
-
private handlers;
|
|
9
|
-
private wildcardHandlers;
|
|
10
|
-
private constructor();
|
|
11
|
-
/**
|
|
12
|
-
* Get the singleton instance
|
|
13
|
-
*/
|
|
14
|
-
static getInstance(): DomainEventBus;
|
|
15
|
-
/**
|
|
16
|
-
* Subscribe to a specific event type
|
|
17
|
-
*/
|
|
18
|
-
subscribe<T extends IDomainEvent>(props: {
|
|
19
|
-
event: EventConstructor<T> | string;
|
|
20
|
-
handler: DomainEventHandler<T> | IDomainEventHandler<T>;
|
|
21
|
-
}): void;
|
|
22
|
-
/**
|
|
23
|
-
* Subscribe to all events (wildcard)
|
|
24
|
-
*/
|
|
25
|
-
subscribeAll(handler: DomainEventHandler<IDomainEvent> | IDomainEventHandler<IDomainEvent>): void;
|
|
26
|
-
/**
|
|
27
|
-
* Unsubscribe from a specific event type
|
|
28
|
-
*/
|
|
29
|
-
unsubscribe<T extends IDomainEvent>(eventType: EventConstructor<T> | string, handler: DomainEventHandler<T> | IDomainEventHandler<T>): void;
|
|
30
|
-
/**
|
|
31
|
-
* Unsubscribe from all events
|
|
32
|
-
*/
|
|
33
|
-
unsubscribeAll(handler: DomainEventHandler<IDomainEvent> | IDomainEventHandler<IDomainEvent>): void;
|
|
34
|
-
/**
|
|
35
|
-
* Publish a single event
|
|
36
|
-
*/
|
|
37
|
-
publish<T extends IDomainEvent>(event: T): Promise<void>;
|
|
38
|
-
/**
|
|
39
|
-
* Publish multiple events
|
|
40
|
-
*/
|
|
41
|
-
publishAll(events: IDomainEvent[]): Promise<void>;
|
|
42
|
-
/**
|
|
43
|
-
* Clear all handlers (useful for testing)
|
|
44
|
-
*/
|
|
45
|
-
clearAllHandlers(): void;
|
|
46
|
-
/**
|
|
47
|
-
* Get count of handlers for an event type
|
|
48
|
-
*/
|
|
49
|
-
getHandlerCount(eventType: EventConstructor | string): number;
|
|
50
|
-
/**
|
|
51
|
-
* Execute a handler (function or class)
|
|
52
|
-
*/
|
|
53
|
-
private executeHandler;
|
|
54
|
-
}
|
|
55
|
-
export {};
|
|
56
|
-
//# sourceMappingURL=domain-event-bus.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"domain-event-bus.d.ts","sourceRoot":"","sources":["../../src/domain-event-bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,GAAG,CAAC;AAE1E,KAAK,gBAAgB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,KAC7D,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,CAAC,CAAC;AAEP;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAGF;IACd,OAAO,CAAC,gBAAgB,CAEV;IAEd,OAAO;IAEP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,cAAc;IAOpC;;OAEG;IACH,SAAS,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE;QACvC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QACpC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;KACzD,GAAG,IAAI;IAWR;;OAEG;IACH,YAAY,CACV,OAAO,EACH,kBAAkB,CAAC,YAAY,CAAC,GAChC,mBAAmB,CAAC,YAAY,CAAC,GACpC,IAAI;IAIP;;OAEG;IACH,WAAW,CAAC,CAAC,SAAS,YAAY,EAChC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,MAAM,EACvC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,GACtD,IAAI;IAaP;;OAEG;IACH,cAAc,CACZ,OAAO,EACH,kBAAkB,CAAC,YAAY,CAAC,GAChC,mBAAmB,CAAC,YAAY,CAAC,GACpC,IAAI;IAIP;;OAEG;IACG,OAAO,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB9D;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAKxB;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,GAAG,MAAM;IAM7D;;OAEG;YACW,cAAc;CAe7B"}
|