@event-nest/core 1.0.6 → 1.1.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.
- package/README.md +21 -21
- package/package.json +1 -1
- package/src/index.d.ts +1 -1
- package/src/index.js +1 -1
- package/src/index.js.map +1 -1
- package/src/lib/aggregate-root-aware-event.d.ts +1 -1
- package/src/lib/aggregate-root.js +3 -3
- package/src/lib/aggregate-root.js.map +1 -1
- package/src/lib/domain-event-emitter.js +3 -2
- package/src/lib/domain-event-emitter.js.map +1 -1
- package/src/lib/{registered-event.d.ts → domain-event-registrations.d.ts} +6 -1
- package/src/lib/{registered-event.js → domain-event-registrations.js} +12 -17
- package/src/lib/domain-event-registrations.js.map +1 -0
- package/src/lib/domain-event.d.ts +12 -0
- package/src/lib/domain-event.js +25 -0
- package/src/lib/domain-event.js.map +1 -0
- package/src/lib/storage/abstract-event-store.d.ts +2 -2
- package/src/lib/storage/abstract-event-store.js +3 -3
- package/src/lib/storage/abstract-event-store.js.map +1 -1
- package/src/lib/storage/stored-event.js +2 -2
- package/src/lib/storage/stored-event.js.map +1 -1
- package/src/lib/registered-event.js.map +0 -1
package/README.md
CHANGED
|
@@ -23,9 +23,9 @@ It would also probably help to make some distinctions about what Event Nest is n
|
|
|
23
23
|
- [Why?](#why)
|
|
24
24
|
- [Getting Started](#getting-started)
|
|
25
25
|
- [Concepts](#concepts)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
- [Event](#event)
|
|
27
|
+
- [Aggregate Root](#aggregate-root)
|
|
28
|
+
- [Domain Event Subscription](#domain-event-subscription)
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
## Why?
|
|
@@ -79,7 +79,7 @@ Each event serves three purposes :
|
|
|
79
79
|
|
|
80
80
|
There is no specific requirement for the structure of an event, but it is recommended to keep it simple and immutable. The [class-transformer](https://github.com/typestack/class-transformer) library is utilized under the hood to save and read the events from the database. Therefore, your event classes should adhere to the rules of class-transformer to be properly serialized and deserialized.
|
|
81
81
|
|
|
82
|
-
To register a class as an event, use the `@
|
|
82
|
+
To register a class as an event, use the `@DomainEvent` decorator. The decorator accepts a string parameter which is the unique name of the event.
|
|
83
83
|
|
|
84
84
|
|
|
85
85
|
### Aggregate Root
|
|
@@ -107,24 +107,24 @@ Enough with the theory, let's see an example that includes all of the above.
|
|
|
107
107
|
#### Example
|
|
108
108
|
|
|
109
109
|
```typescript
|
|
110
|
-
import {
|
|
110
|
+
import { DomainEvent } from "@event-nest/core";
|
|
111
111
|
|
|
112
|
-
@
|
|
112
|
+
@DomainEvent("user-created-event")
|
|
113
113
|
export class UserCreatedEvent {
|
|
114
114
|
constructor(public name: string, public email: string) {}
|
|
115
115
|
}
|
|
116
116
|
```
|
|
117
117
|
|
|
118
118
|
```typescript
|
|
119
|
-
import {
|
|
119
|
+
import { DomainEvent } from "@event-nest/core";
|
|
120
120
|
|
|
121
|
-
@
|
|
121
|
+
@DomainEvent("user-updated-event")
|
|
122
122
|
export class UserUpdatedEvent {
|
|
123
123
|
constructor(public newName: string) {}
|
|
124
124
|
}
|
|
125
125
|
```
|
|
126
126
|
|
|
127
|
-
We start this example by defining two simple events for a user: a creation event and an update event. Each one has its own data, and they are identified by a unique name which is set with the `@
|
|
127
|
+
We start this example by defining two simple events for a user: a creation event and an update event. Each one has its own data, and they are identified by a unique name which is set with the `@DomainEvent` decorator.
|
|
128
128
|
|
|
129
129
|
```typescript
|
|
130
130
|
import { AggregateRoot, AggregateRootName, EventProcessor, StoredEvent } from "@event-nest/core";
|
|
@@ -238,10 +238,10 @@ import { AggregateRootAwareEvent, DomainEventSubscription, OnDomainEvent } from
|
|
|
238
238
|
@DomainEventSubscription(UserCreatedEvent, UserUpdatedEvent)
|
|
239
239
|
export class UserEventSubscription implements OnDomainEvent<UserCreatedEvent | UserUpdatedEvent> {
|
|
240
240
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
241
|
+
onDomainEvent(event: AggregateRootAwareEvent<UserCreatedEvent | UserUpdatedEvent>): Promise<unknown> {
|
|
242
|
+
//Here you can create/update your read model based on the event and your custom logic.
|
|
243
|
+
return Promise.resolve(undefined);
|
|
244
|
+
}
|
|
245
245
|
|
|
246
246
|
}
|
|
247
247
|
```
|
|
@@ -254,14 +254,14 @@ and your logic doesn't depend on the order of the events, you can change this se
|
|
|
254
254
|
|
|
255
255
|
```typescript
|
|
256
256
|
@Module({
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
257
|
+
imports: [
|
|
258
|
+
EventNestMongoDbModule.register({
|
|
259
|
+
connectionUri: "mongodb://localhost:27017/example",
|
|
260
|
+
aggregatesCollection: "aggregates-collection",
|
|
261
|
+
eventsCollection: "events-collection",
|
|
262
|
+
runParallelSubscriptions:true
|
|
263
|
+
})
|
|
264
|
+
]
|
|
265
265
|
})
|
|
266
266
|
export class AppModule {}
|
|
267
267
|
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@event-nest/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Nick Tsitlakidis",
|
|
6
6
|
"description": "Event sourcing module for NestJS. It provides a set of decorators and classes to build an application based on event sourcing.",
|
package/src/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export * from "./lib/exceptions/event-name-conflict-exception";
|
|
|
2
2
|
export * from "./lib/exceptions/unknown-event-exception";
|
|
3
3
|
export * from "./lib/exceptions/missing-aggregate-root-name-exception";
|
|
4
4
|
export * from "./lib/event-processor";
|
|
5
|
-
export * from "./lib/
|
|
5
|
+
export * from "./lib/domain-event";
|
|
6
6
|
export * from "./lib/domain-event-subscription";
|
|
7
7
|
export * from "./lib/aggregate-root";
|
|
8
8
|
export * from "./lib/aggregate-root-name";
|
package/src/index.js
CHANGED
|
@@ -5,7 +5,7 @@ tslib_1.__exportStar(require("./lib/exceptions/event-name-conflict-exception"),
|
|
|
5
5
|
tslib_1.__exportStar(require("./lib/exceptions/unknown-event-exception"), exports);
|
|
6
6
|
tslib_1.__exportStar(require("./lib/exceptions/missing-aggregate-root-name-exception"), exports);
|
|
7
7
|
tslib_1.__exportStar(require("./lib/event-processor"), exports);
|
|
8
|
-
tslib_1.__exportStar(require("./lib/
|
|
8
|
+
tslib_1.__exportStar(require("./lib/domain-event"), exports);
|
|
9
9
|
tslib_1.__exportStar(require("./lib/domain-event-subscription"), exports);
|
|
10
10
|
tslib_1.__exportStar(require("./lib/aggregate-root"), exports);
|
|
11
11
|
tslib_1.__exportStar(require("./lib/aggregate-root-name"), exports);
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/core/src/index.ts"],"names":[],"mappings":";;;AAAA,yFAA+D;AAC/D,mFAAyD;AACzD,iGAAuE;AAEvE,gEAAsC;AACtC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/core/src/index.ts"],"names":[],"mappings":";;;AAAA,yFAA+D;AAC/D,mFAAyD;AACzD,iGAAuE;AAEvE,gEAAsC;AACtC,6DAAmC;AACnC,0EAAgD;AAChD,+DAAqC;AACrC,oEAA0C;AAC1C,2EAAiD;AACjD,gEAAsC;AACtC,qEAA2C;AAC3C,oEAA0C;AAE1C,qEAA2C;AAC3C,8EAAoD;AACpD,6EAAmD;AACnD,oEAA0C;AAE1C,iEAAuC"}
|
|
@@ -5,7 +5,7 @@ export interface AggregateRootAwareEvent<T> {
|
|
|
5
5
|
aggregateRootId: string;
|
|
6
6
|
/**
|
|
7
7
|
* The payload of the event. The type of this object depends on the events
|
|
8
|
-
* you register using the {@link
|
|
8
|
+
* you register using the {@link DomainEvent} decorator.
|
|
9
9
|
*/
|
|
10
10
|
payload: T;
|
|
11
11
|
/**
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AggregateRoot = void 0;
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
|
-
const registered_event_1 = require("./registered-event");
|
|
6
5
|
const event_processor_1 = require("./event-processor");
|
|
7
6
|
const unknown_event_exception_1 = require("./exceptions/unknown-event-exception");
|
|
8
7
|
const type_utils_1 = require("./utils/type-utils");
|
|
9
8
|
const unregistered_event_exception_1 = require("./exceptions/unregistered-event-exception");
|
|
9
|
+
const domain_event_registrations_1 = require("./domain-event-registrations");
|
|
10
10
|
class AggregateRoot {
|
|
11
11
|
constructor(_id, logger) {
|
|
12
12
|
this._id = _id;
|
|
@@ -61,7 +61,7 @@ class AggregateRoot {
|
|
|
61
61
|
* @param event The event to be appended
|
|
62
62
|
*/
|
|
63
63
|
append(event) {
|
|
64
|
-
if (!(0,
|
|
64
|
+
if (!(0, domain_event_registrations_1.isRegistered)(event)) {
|
|
65
65
|
this.logger.error(`Event ${event.constructor.name} is not registered.`);
|
|
66
66
|
throw new unregistered_event_exception_1.UnregisteredEventException(event.constructor.name);
|
|
67
67
|
}
|
|
@@ -115,7 +115,7 @@ class AggregateRoot {
|
|
|
115
115
|
const unregistered = [];
|
|
116
116
|
const missingProcessor = [];
|
|
117
117
|
events.forEach((ev) => {
|
|
118
|
-
const eventClass = (0,
|
|
118
|
+
const eventClass = (0, domain_event_registrations_1.getEventClass)(ev.eventName);
|
|
119
119
|
if ((0, type_utils_1.isNil)(eventClass)) {
|
|
120
120
|
unregistered.push(ev.eventName);
|
|
121
121
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate-root.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/aggregate-root.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAExC,
|
|
1
|
+
{"version":3,"file":"aggregate-root.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/aggregate-root.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,11 +47,12 @@ class DomainEventEmitter {
|
|
|
47
47
|
this._logger.warn(`Event ${withAggregate.payload.constructor.name} can't be passed to subscriptions. Make sure you use the @DomainEventSubscription decorator`);
|
|
48
48
|
return Promise.resolve();
|
|
49
49
|
}
|
|
50
|
-
const
|
|
50
|
+
const handlers = this._handlers.get(eventId);
|
|
51
|
+
const promises = handlers.map((handler) => handler.onDomainEvent(withAggregate));
|
|
51
52
|
return Promise.all(promises);
|
|
52
53
|
}
|
|
53
54
|
emitMultiple(withAggregate) {
|
|
54
|
-
if (
|
|
55
|
+
if (this._runParallelSubscriptions) {
|
|
55
56
|
return Promise.all(withAggregate.map((aggregate) => this.emit(aggregate)));
|
|
56
57
|
}
|
|
57
58
|
const deferred = withAggregate.map((w) => (0, rxjs_1.defer)(() => (0, rxjs_1.from)(this.emit(w))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-event-emitter.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/domain-event-emitter.ts"],"names":[],"mappings":";;;AACA,2EAIqC;AAErC,mDAA2C;AAC3C,2CAAyD;AAEzD,+BAAiE;AAEjE,MAAa,kBAAkB;IAI3B,YAA6B,4BAAqC,KAAK;QAA1C,8BAAyB,GAAzB,yBAAyB,CAAiB;QACnE,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAwC,CAAC;QACjE,IAAI,CAAC,OAAO,GAAG,IAAI,eAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,yBAAyB;QACzB,OAAO,IAAI,CAAC,yBAAyB,CAAC;IAC1C,CAAC;IAED,eAAe;QACX,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,iBAAiB,CAAC,eAAoC;QAClD,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC/B,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAClC,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE;oBACtD,OAAO;iBACV;gBAED,IAAI,IAAA,qDAAyB,EAAC,QAAQ,CAAC,QAAkB,CAAC,EAAE;oBACxD,MAAM,MAAM,GAAG,IAAA,gEAAoC,EAAC,QAAQ,CAAC,QAAkC,CAAC,CAAC;oBACjG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;wBACrB,MAAM,OAAO,GAAG,IAAA,sCAAU,EAAC,KAAK,CAAW,CAAC;wBAC5C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;4BAC9B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;yBACnC;wBAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,aAAa,OAAO,EAAE,CAAC,CAAC;wBACzF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"domain-event-emitter.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/domain-event-emitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { ClassConstructor } from "class-transformer";
|
|
2
|
-
|
|
2
|
+
type Registration = {
|
|
3
|
+
eventName: string;
|
|
4
|
+
eventClass: unknown;
|
|
5
|
+
};
|
|
3
6
|
/**
|
|
4
7
|
* Returns the event name that matches the class of the provided object.
|
|
5
8
|
* @param target
|
|
@@ -11,3 +14,5 @@ export declare function getEventName(target: object): string | undefined;
|
|
|
11
14
|
*/
|
|
12
15
|
export declare function getEventClass<T>(name: string): ClassConstructor<T> | undefined;
|
|
13
16
|
export declare function isRegistered(event: object): boolean;
|
|
17
|
+
export declare function registerEvent(newRegistration: Registration): void;
|
|
18
|
+
export {};
|
|
@@ -1,27 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.registerEvent = exports.isRegistered = exports.getEventClass = exports.getEventName = void 0;
|
|
4
4
|
const event_name_conflict_exception_1 = require("./exceptions/event-name-conflict-exception");
|
|
5
5
|
const type_utils_1 = require("./utils/type-utils");
|
|
6
|
-
const
|
|
7
|
-
function RegisteredEvent(eventName) {
|
|
8
|
-
return (target) => {
|
|
9
|
-
if (REGISTRATIONS.some((registration) => registration.eventName === eventName)) {
|
|
10
|
-
throw new event_name_conflict_exception_1.EventNameConflictException(eventName);
|
|
11
|
-
}
|
|
12
|
-
REGISTRATIONS.push({
|
|
13
|
-
eventName: eventName,
|
|
14
|
-
eventClass: target
|
|
15
|
-
});
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
exports.RegisteredEvent = RegisteredEvent;
|
|
6
|
+
const registrations = [];
|
|
19
7
|
/**
|
|
20
8
|
* Returns the event name that matches the class of the provided object.
|
|
21
9
|
* @param target
|
|
22
10
|
*/
|
|
23
11
|
function getEventName(target) {
|
|
24
|
-
const found =
|
|
12
|
+
const found = registrations.find((registration) => registration.eventClass === target.constructor);
|
|
25
13
|
return found ? found.eventName : undefined;
|
|
26
14
|
}
|
|
27
15
|
exports.getEventName = getEventName;
|
|
@@ -30,7 +18,7 @@ exports.getEventName = getEventName;
|
|
|
30
18
|
* @param name The event name to be checked.
|
|
31
19
|
*/
|
|
32
20
|
function getEventClass(name) {
|
|
33
|
-
const found =
|
|
21
|
+
const found = registrations.find((registration) => registration.eventName === name);
|
|
34
22
|
return (0, type_utils_1.isNil)(found) ? undefined : found.eventClass;
|
|
35
23
|
}
|
|
36
24
|
exports.getEventClass = getEventClass;
|
|
@@ -38,4 +26,11 @@ function isRegistered(event) {
|
|
|
38
26
|
return !(0, type_utils_1.isNil)(getEventName(event));
|
|
39
27
|
}
|
|
40
28
|
exports.isRegistered = isRegistered;
|
|
41
|
-
|
|
29
|
+
function registerEvent(newRegistration) {
|
|
30
|
+
if (registrations.some((registration) => registration.eventName === newRegistration.eventName)) {
|
|
31
|
+
throw new event_name_conflict_exception_1.EventNameConflictException(newRegistration.eventName);
|
|
32
|
+
}
|
|
33
|
+
registrations.push(newRegistration);
|
|
34
|
+
}
|
|
35
|
+
exports.registerEvent = registerEvent;
|
|
36
|
+
//# sourceMappingURL=domain-event-registrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-event-registrations.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/domain-event-registrations.ts"],"names":[],"mappings":";;;AAAA,8FAAwF;AAExF,mDAA2C;AAO3C,MAAM,aAAa,GAAwB,EAAE,CAAC;AAE9C;;;GAGG;AACH,SAAgB,YAAY,CAAC,MAAc;IACvC,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,UAAU,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC;IACnG,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/C,CAAC;AAHD,oCAGC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAI,IAAY;IACzC,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;IACpF,OAAO,IAAA,kBAAK,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,KAAK,CAAC,UAAkC,CAAC;AAChF,CAAC;AAHD,sCAGC;AAED,SAAgB,YAAY,CAAC,KAAa;IACtC,OAAO,CAAC,IAAA,kBAAK,EAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,CAAC;AAFD,oCAEC;AAED,SAAgB,aAAa,CAAC,eAA6B;IACvD,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,KAAK,eAAe,CAAC,SAAS,CAAC,EAAE;QAC5F,MAAM,IAAI,0DAA0B,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;KACnE;IAED,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACxC,CAAC;AAND,sCAMC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A decorator to mark a class as a domain event. Objects of this type of classes are persisted in the database and
|
|
3
|
+
* they describe the events which happened in the system.
|
|
4
|
+
*
|
|
5
|
+
* The classes can contain any data required to describe the event with the only limitation being that the object will be
|
|
6
|
+
* converted to JSON using the class-transformer library. That means that class-transformer rules have to be followed to make
|
|
7
|
+
* sure the object can be converted to and from JSON.
|
|
8
|
+
* @param eventName The name of the event. This name will be used to identify the event in the database and it has to be unique.
|
|
9
|
+
* If the name is not unique, an exception will be thrown when the decorator runs for the first time.
|
|
10
|
+
* @constructor
|
|
11
|
+
*/
|
|
12
|
+
export declare function DomainEvent(eventName: string): ClassDecorator;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DomainEvent = void 0;
|
|
4
|
+
const domain_event_registrations_1 = require("./domain-event-registrations");
|
|
5
|
+
/**
|
|
6
|
+
* A decorator to mark a class as a domain event. Objects of this type of classes are persisted in the database and
|
|
7
|
+
* they describe the events which happened in the system.
|
|
8
|
+
*
|
|
9
|
+
* The classes can contain any data required to describe the event with the only limitation being that the object will be
|
|
10
|
+
* converted to JSON using the class-transformer library. That means that class-transformer rules have to be followed to make
|
|
11
|
+
* sure the object can be converted to and from JSON.
|
|
12
|
+
* @param eventName The name of the event. This name will be used to identify the event in the database and it has to be unique.
|
|
13
|
+
* If the name is not unique, an exception will be thrown when the decorator runs for the first time.
|
|
14
|
+
* @constructor
|
|
15
|
+
*/
|
|
16
|
+
function DomainEvent(eventName) {
|
|
17
|
+
return (target) => {
|
|
18
|
+
(0, domain_event_registrations_1.registerEvent)({
|
|
19
|
+
eventName: eventName,
|
|
20
|
+
eventClass: target
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
exports.DomainEvent = DomainEvent;
|
|
25
|
+
//# sourceMappingURL=domain-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-event.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/domain-event.ts"],"names":[],"mappings":";;;AAAA,6EAA6D;AAE7D;;;;;;;;;;GAUG;AACH,SAAgB,WAAW,CAAC,SAAiB;IACzC,OAAO,CAAC,MAAM,EAAE,EAAE;QACd,IAAA,0CAAa,EAAC;YACV,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,MAAM;SACrB,CAAC,CAAC;IACP,CAAC,CAAC;AACN,CAAC;AAPD,kCAOC"}
|
|
@@ -9,8 +9,8 @@ import { DomainEventEmitter } from "../domain-event-emitter";
|
|
|
9
9
|
* of the {@link EventStore:addPublisher} method and this is why this class exists.
|
|
10
10
|
*/
|
|
11
11
|
export declare abstract class AbstractEventStore implements EventStore {
|
|
12
|
-
private
|
|
13
|
-
protected constructor(
|
|
12
|
+
private _eventEmitter;
|
|
13
|
+
protected constructor(_eventEmitter: DomainEventEmitter);
|
|
14
14
|
abstract findByAggregateRootId<T extends AggregateRoot>(aggregateRootClass: AggregateRootClass<T>, id: string): Promise<Array<StoredEvent>>;
|
|
15
15
|
abstract findAggregateRootVersion(id: string): Promise<number>;
|
|
16
16
|
abstract save(events: Array<StoredEvent>, aggregate: StoredAggregateRoot): Promise<Array<StoredEvent>>;
|
|
@@ -14,8 +14,8 @@ const missing_aggregate_root_name_exception_1 = require("../exceptions/missing-a
|
|
|
14
14
|
*/
|
|
15
15
|
class AbstractEventStore {
|
|
16
16
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
17
|
-
constructor(
|
|
18
|
-
this.
|
|
17
|
+
constructor(_eventEmitter) {
|
|
18
|
+
this._eventEmitter = _eventEmitter;
|
|
19
19
|
}
|
|
20
20
|
addPublisher(aggregateRoot) {
|
|
21
21
|
aggregateRoot.publish = async (events) => {
|
|
@@ -36,7 +36,7 @@ class AbstractEventStore {
|
|
|
36
36
|
});
|
|
37
37
|
const toStore = new stored_aggregate_root_1.StoredAggregateRoot(aggregateRoot.id, aggregateRoot.version);
|
|
38
38
|
return this.save(storedEvents, toStore).then((savedEvents) => {
|
|
39
|
-
this.
|
|
39
|
+
this._eventEmitter.emitMultiple(events);
|
|
40
40
|
return Promise.resolve(savedEvents);
|
|
41
41
|
});
|
|
42
42
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-event-store.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/storage/abstract-event-store.ts"],"names":[],"mappings":";;;AACA,iDAA6C;AAE7C,mEAA8D;AAC9D,mFAA8E;AAE9E,oDAA0D;AAE1D,gEAA8D;AAC9D,+GAAwG;AAExG;;;;GAIG;AACH,MAAsB,kBAAkB;IACpC,gEAAgE;IAChE,YAA8B,
|
|
1
|
+
{"version":3,"file":"abstract-event-store.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/storage/abstract-event-store.ts"],"names":[],"mappings":";;;AACA,iDAA6C;AAE7C,mEAA8D;AAC9D,mFAA8E;AAE9E,oDAA0D;AAE1D,gEAA8D;AAC9D,+GAAwG;AAExG;;;;GAIG;AACH,MAAsB,kBAAkB;IACpC,gEAAgE;IAChE,YAA8B,aAAiC;QAAjC,kBAAa,GAAb,aAAa,CAAoB;IAAG,CAAC;IAanE,YAAY,CAA0B,aAAgB;QAClD,aAAa,CAAC,OAAO,GAAG,KAAK,EAAE,MAA8C,EAAE,EAAE;YAC7E,MAAM,iBAAiB,GAAG,IAAA,0CAAoB,EAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YAC1E,IAAI,IAAA,kBAAK,EAAC,iBAAiB,CAAC,EAAE;gBAC1B,MAAM,IAAI,yEAAiC,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAC/E;YAED,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;gBACpB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;aAC9B;YAED,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;YACzE,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,CAAC,IAAA,yBAAY,EAAC,GAAG,CAAC,EAAE;gBACpD,MAAM,IAAI,+CAAqB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;aAC9D;YACD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;gBAC7C,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,EAAG,CAAC;gBACtB,OAAO,0BAAW,CAAC,kBAAkB,CACjC,EAAE,EACF,aAAa,CAAC,EAAE,EAChB,iBAAiB,EACjB,YAAY,CAAC,OAAO,EACpB,YAAY,CAAC,UAAU,CAC1B,CAAC;YACN,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,IAAI,2CAAmB,CAAC,aAAa,CAAC,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;YACjF,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;gBACzD,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACxC,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QACF,OAAO,aAAa,CAAC;IACzB,CAAC;CACJ;AAjDD,gDAiDC"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StoredEvent = void 0;
|
|
4
4
|
const class_transformer_1 = require("class-transformer");
|
|
5
|
-
const registered_event_1 = require("../registered-event");
|
|
6
5
|
const type_utils_1 = require("../utils/type-utils");
|
|
6
|
+
const domain_event_registrations_1 = require("../domain-event-registrations");
|
|
7
7
|
/**
|
|
8
8
|
* Represents an event that will be persisted according to the storage solution that is used.
|
|
9
9
|
* The event is defined by metadata like aggregate root id, version and creation date, and it also includes its payload
|
|
@@ -33,7 +33,7 @@ class StoredEvent {
|
|
|
33
33
|
const newEvent = new StoredEvent(id, aggregateRootId);
|
|
34
34
|
newEvent._createdAt = occurredAt;
|
|
35
35
|
newEvent._aggregateRootName = aggregateRootName;
|
|
36
|
-
const eventName = (0,
|
|
36
|
+
const eventName = (0, domain_event_registrations_1.getEventName)(payload);
|
|
37
37
|
if (!(0, type_utils_1.isNil)(eventName)) {
|
|
38
38
|
newEvent._payload = (0, class_transformer_1.instanceToPlain)(payload);
|
|
39
39
|
newEvent._eventName = eventName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stored-event.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/storage/stored-event.ts"],"names":[],"mappings":";;;AAAA,yDAAoF;AACpF,
|
|
1
|
+
{"version":3,"file":"stored-event.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/storage/stored-event.ts"],"names":[],"mappings":";;;AAAA,yDAAoF;AACpF,oDAA4C;AAC5C,8EAA6D;AAE7D;;;;;;;;;GASG;AACH,MAAa,WAAW;IAUpB,YAAoB,EAAU,EAAE,eAAuB;QACnD,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAClB,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,kBAAkB,CACrB,EAAU,EACV,eAAuB,EACvB,iBAAyB,EACzB,OAAe,EACf,UAAgB;QAEhB,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;QACtD,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;QACjC,QAAQ,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAEhD,MAAM,SAAS,GAAG,IAAA,yCAAY,EAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,IAAA,kBAAK,EAAC,SAAS,CAAC,EAAE;YACnB,QAAQ,CAAC,QAAQ,GAAG,IAAA,mCAAe,EAAC,OAAO,CAAC,CAAC;YAC7C,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC;SACnC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,WAAW,CACd,EAAU,EACV,eAAuB,EACvB,SAAiB,EACjB,SAAe,EACf,oBAA4B,EAC5B,iBAAyB,EACzB,OAAgB;QAEhB,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;QACtD,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC;QAChC,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC;QAChC,QAAQ,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACrD,QAAQ,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAChD,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC;QAC5B,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEM,YAAY,CAAI,YAAiC;QACpD,OAAO,IAAA,gCAAY,EAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAI,EAAE;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IAED,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,iBAAiB;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;CACJ;AAvGD,kCAuGC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registered-event.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/registered-event.ts"],"names":[],"mappings":";;;AACA,8FAAwF;AACxF,mDAA2C;AAO3C,MAAM,aAAa,GAA6B,EAAE,CAAC;AAEnD,SAAgB,eAAe,CAAC,SAAiB;IAC7C,OAAO,CAAC,MAAM,EAAE,EAAE;QACd,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE;YAC5E,MAAM,IAAI,0DAA0B,CAAC,SAAS,CAAC,CAAC;SACnD;QACD,aAAa,CAAC,IAAI,CAAC;YACf,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,MAAM;SACrB,CAAC,CAAC;IACP,CAAC,CAAC;AACN,CAAC;AAVD,0CAUC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,MAAc;IACvC,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,UAAU,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC;IACnG,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/C,CAAC;AAHD,oCAGC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAI,IAAY;IACzC,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;IACpF,OAAO,IAAA,kBAAK,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,KAAK,CAAC,UAAkC,CAAC;AAChF,CAAC;AAHD,sCAGC;AAED,SAAgB,YAAY,CAAC,KAAa;IACtC,OAAO,CAAC,IAAA,kBAAK,EAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,CAAC;AAFD,oCAEC"}
|