@event-nest/core 3.0.1 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/package.json +4 -3
- package/src/index.d.ts +9 -9
- package/src/index.js +9 -9
- package/src/index.js.map +1 -1
- package/src/lib/aggregate-root/aggregate-root-name.d.ts +1 -0
- package/src/lib/aggregate-root/aggregate-root-name.js +3 -2
- package/src/lib/aggregate-root/aggregate-root-name.js.map +1 -1
- package/src/lib/aggregate-root/aggregate-root.d.ts +10 -10
- package/src/lib/aggregate-root/aggregate-root.js +10 -11
- package/src/lib/aggregate-root/aggregate-root.js.map +1 -1
- package/src/lib/aggregate-root/apply-event.decorator.js +1 -2
- package/src/lib/aggregate-root/apply-event.decorator.js.map +1 -1
- package/src/lib/aggregate-root/reflection.js +1 -2
- package/src/lib/aggregate-root/reflection.js.map +1 -1
- package/src/lib/domain-event-emitter.js +0 -1
- package/src/lib/domain-event-emitter.js.map +1 -1
- package/src/lib/domain-event-registrations.js +4 -5
- package/src/lib/domain-event-registrations.js.map +1 -1
- package/src/lib/domain-event-subscription.js +4 -4
- package/src/lib/domain-event-subscription.js.map +1 -1
- package/src/lib/domain-event.js +1 -2
- package/src/lib/domain-event.js.map +1 -1
- package/src/lib/storage/abstract-event-store.d.ts +1 -0
- package/src/lib/storage/abstract-event-store.js +0 -1
- package/src/lib/storage/abstract-event-store.js.map +1 -1
- package/src/lib/storage/event-store.d.ts +11 -2
- package/src/lib/utils/type-utils.js +2 -3
- package/src/lib/utils/type-utils.js.map +1 -1
package/README.md
CHANGED
|
@@ -58,7 +58,7 @@ import { Module } from "@nestjs/common";
|
|
|
58
58
|
|
|
59
59
|
@Module({
|
|
60
60
|
imports: [
|
|
61
|
-
EventNestMongoDbModule.
|
|
61
|
+
EventNestMongoDbModule.forRoot({
|
|
62
62
|
connectionUri: "mongodb://localhost:27017/example",
|
|
63
63
|
aggregatesCollection: "aggregates-collection",
|
|
64
64
|
eventsCollection: "events-collection"
|
|
@@ -83,7 +83,7 @@ import { Module } from "@nestjs/common";
|
|
|
83
83
|
|
|
84
84
|
@Module({
|
|
85
85
|
imports: [
|
|
86
|
-
EventNestPostgreSQLModule.
|
|
86
|
+
EventNestPostgreSQLModule.forRoot({
|
|
87
87
|
aggregatesTableName: "aggregates",
|
|
88
88
|
connectionUri: "postgresql://postgres:password@localhost:5432/event_nest",
|
|
89
89
|
eventsTableName: "events",
|
|
@@ -287,10 +287,10 @@ import { PublishedDomainEvent, DomainEventSubscription, OnDomainEvent } from "@e
|
|
|
287
287
|
@DomainEventSubscription(UserCreatedEvent, UserUpdatedEvent)
|
|
288
288
|
export class UserEventSubscription implements OnDomainEvent<UserCreatedEvent | UserUpdatedEvent> {
|
|
289
289
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
290
|
+
onDomainEvent(event: PublishedDomainEvent<UserCreatedEvent | UserUpdatedEvent>): Promise<unknown> {
|
|
291
|
+
//Here you can create/update your read model based on the event and your custom logic.
|
|
292
|
+
return Promise.resolve(undefined);
|
|
293
|
+
}
|
|
294
294
|
|
|
295
295
|
}
|
|
296
296
|
```
|
|
@@ -304,7 +304,7 @@ and your logic doesn't depend on the order of the events, you can change this se
|
|
|
304
304
|
```typescript
|
|
305
305
|
@Module({
|
|
306
306
|
imports: [
|
|
307
|
-
EventNestMongoDbModule.
|
|
307
|
+
EventNestMongoDbModule.forRoot({
|
|
308
308
|
connectionUri: "mongodb://localhost:27017/example",
|
|
309
309
|
aggregatesCollection: "aggregates-collection",
|
|
310
310
|
eventsCollection: "events-collection",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@event-nest/core",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.2.0",
|
|
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.",
|
|
@@ -24,12 +24,13 @@
|
|
|
24
24
|
"peerDependencies": {
|
|
25
25
|
"@nestjs/common": "^9.0.0 || ^10.0.0",
|
|
26
26
|
"@nestjs/core": "^9.0.0 || ^10.0.0",
|
|
27
|
-
"reflect-metadata": "0.1.
|
|
27
|
+
"reflect-metadata": "^0.1.12 || ^0.2.0",
|
|
28
28
|
"rxjs": "^7.2.0",
|
|
29
29
|
"tslib": "^2.3.0"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"class-transformer": "^0.5.1"
|
|
33
33
|
},
|
|
34
|
-
"main": "./src/index.js"
|
|
34
|
+
"main": "./src/index.js",
|
|
35
|
+
"types": "./src/index.d.ts"
|
|
35
36
|
}
|
package/src/index.d.ts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
export * from "./lib/aggregate-root/aggregate-root";
|
|
2
2
|
export * from "./lib/aggregate-root/aggregate-root-name";
|
|
3
3
|
export * from "./lib/aggregate-root/apply-event.decorator";
|
|
4
|
-
export * from "./lib/
|
|
5
|
-
export * from "./lib/exceptions/unknown-event-exception";
|
|
6
|
-
export * from "./lib/exceptions/missing-aggregate-root-name-exception";
|
|
7
|
-
export * from "./lib/exceptions/event-concurrency-exception";
|
|
4
|
+
export * from "./lib/core-module-options";
|
|
8
5
|
export * from "./lib/domain-event";
|
|
9
|
-
export * from "./lib/
|
|
6
|
+
export * from "./lib/domain-event-emitter";
|
|
10
7
|
export * from "./lib/domain-event-subscription";
|
|
8
|
+
export * from "./lib/exceptions/event-concurrency-exception";
|
|
9
|
+
export * from "./lib/exceptions/event-name-conflict-exception";
|
|
10
|
+
export * from "./lib/exceptions/missing-aggregate-root-name-exception";
|
|
11
|
+
export * from "./lib/exceptions/unknown-event-exception";
|
|
11
12
|
export * from "./lib/on-domain-event";
|
|
12
|
-
export * from "./lib/domain-event
|
|
13
|
-
export * from "./lib/core-module-options";
|
|
14
|
-
export * from "./lib/storage/stored-event";
|
|
15
|
-
export * from "./lib/storage/stored-aggregate-root";
|
|
13
|
+
export * from "./lib/published-domain-event";
|
|
16
14
|
export * from "./lib/storage/abstract-event-store";
|
|
17
15
|
export * from "./lib/storage/event-store";
|
|
16
|
+
export * from "./lib/storage/stored-aggregate-root";
|
|
17
|
+
export * from "./lib/storage/stored-event";
|
|
18
18
|
export * from "./lib/utils/type-utils";
|
package/src/index.js
CHANGED
|
@@ -4,19 +4,19 @@ const tslib_1 = require("tslib");
|
|
|
4
4
|
tslib_1.__exportStar(require("./lib/aggregate-root/aggregate-root"), exports);
|
|
5
5
|
tslib_1.__exportStar(require("./lib/aggregate-root/aggregate-root-name"), exports);
|
|
6
6
|
tslib_1.__exportStar(require("./lib/aggregate-root/apply-event.decorator"), exports);
|
|
7
|
-
tslib_1.__exportStar(require("./lib/
|
|
8
|
-
tslib_1.__exportStar(require("./lib/exceptions/unknown-event-exception"), exports);
|
|
9
|
-
tslib_1.__exportStar(require("./lib/exceptions/missing-aggregate-root-name-exception"), exports);
|
|
10
|
-
tslib_1.__exportStar(require("./lib/exceptions/event-concurrency-exception"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./lib/core-module-options"), exports);
|
|
11
8
|
tslib_1.__exportStar(require("./lib/domain-event"), exports);
|
|
12
|
-
tslib_1.__exportStar(require("./lib/
|
|
9
|
+
tslib_1.__exportStar(require("./lib/domain-event-emitter"), exports);
|
|
13
10
|
tslib_1.__exportStar(require("./lib/domain-event-subscription"), exports);
|
|
11
|
+
tslib_1.__exportStar(require("./lib/exceptions/event-concurrency-exception"), exports);
|
|
12
|
+
tslib_1.__exportStar(require("./lib/exceptions/event-name-conflict-exception"), exports);
|
|
13
|
+
tslib_1.__exportStar(require("./lib/exceptions/missing-aggregate-root-name-exception"), exports);
|
|
14
|
+
tslib_1.__exportStar(require("./lib/exceptions/unknown-event-exception"), exports);
|
|
14
15
|
tslib_1.__exportStar(require("./lib/on-domain-event"), exports);
|
|
15
|
-
tslib_1.__exportStar(require("./lib/domain-event
|
|
16
|
-
tslib_1.__exportStar(require("./lib/core-module-options"), exports);
|
|
17
|
-
tslib_1.__exportStar(require("./lib/storage/stored-event"), exports);
|
|
18
|
-
tslib_1.__exportStar(require("./lib/storage/stored-aggregate-root"), exports);
|
|
16
|
+
tslib_1.__exportStar(require("./lib/published-domain-event"), exports);
|
|
19
17
|
tslib_1.__exportStar(require("./lib/storage/abstract-event-store"), exports);
|
|
20
18
|
tslib_1.__exportStar(require("./lib/storage/event-store"), exports);
|
|
19
|
+
tslib_1.__exportStar(require("./lib/storage/stored-aggregate-root"), exports);
|
|
20
|
+
tslib_1.__exportStar(require("./lib/storage/stored-event"), exports);
|
|
21
21
|
tslib_1.__exportStar(require("./lib/utils/type-utils"), exports);
|
|
22
22
|
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/core/src/index.ts"],"names":[],"mappings":";;;AAAA,8EAAoD;AACpD,mFAAyD;AACzD,qFAA2D;AAE3D,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/core/src/index.ts"],"names":[],"mappings":";;;AAAA,8EAAoD;AACpD,mFAAyD;AACzD,qFAA2D;AAE3D,oEAA0C;AAC1C,6DAAmC;AACnC,qEAA2C;AAC3C,0EAAgD;AAEhD,uFAA6D;AAC7D,yFAA+D;AAC/D,iGAAuE;AAEvE,mFAAyD;AACzD,gEAAsC;AACtC,uEAA6C;AAE7C,6EAAmD;AACnD,oEAA0C;AAC1C,8EAAoD;AACpD,qEAA2C;AAE3C,iEAAuC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.AggregateRootName = void 0;
|
|
4
|
+
exports.getAggregateRootName = getAggregateRootName;
|
|
5
|
+
require("reflect-metadata");
|
|
4
6
|
const metadata_keys_1 = require("../metadata-keys");
|
|
5
7
|
/**
|
|
6
8
|
* A decorator to mark an aggregate root class with a unique name. The name will
|
|
@@ -21,5 +23,4 @@ exports.AggregateRootName = AggregateRootName;
|
|
|
21
23
|
function getAggregateRootName(targetClass) {
|
|
22
24
|
return Reflect.getMetadata(metadata_keys_1.AGGREGATE_ROOT_NAME_KEY, targetClass)?.aggregateRootName;
|
|
23
25
|
}
|
|
24
|
-
exports.getAggregateRootName = getAggregateRootName;
|
|
25
26
|
//# sourceMappingURL=aggregate-root-name.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate-root-name.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/aggregate-root/aggregate-root-name.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"aggregate-root-name.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/aggregate-root/aggregate-root-name.ts"],"names":[],"mappings":";;;AAoBA,oDAEC;AAtBD,4BAA0B;AAE1B,oDAA2D;AAE3D;;;;;;;;GAQG;AACI,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAkB,EAAE;IAC9D,OAAO,CAAC,MAAc,EAAE,EAAE;QACtB,OAAO,CAAC,cAAc,CAAC,uCAAuB,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;IACzF,CAAC,CAAC;AACN,CAAC,CAAC;AAJW,QAAA,iBAAiB,qBAI5B;AAEF,wDAAwD;AACxD,SAAgB,oBAAoB,CAAC,WAAqB;IACtD,OAAO,OAAO,CAAC,WAAW,CAAC,uCAAuB,EAAE,WAAW,CAAC,EAAE,iBAAiB,CAAC;AACxF,CAAC"}
|
|
@@ -13,14 +13,6 @@ export declare abstract class AggregateRoot {
|
|
|
13
13
|
get appendedEvents(): Array<AggregateRootEvent<object>>;
|
|
14
14
|
get id(): string;
|
|
15
15
|
get logger(): Logger;
|
|
16
|
-
/**
|
|
17
|
-
* Publishes all the provided events using a connected event publisher. To connect a publisher, use the
|
|
18
|
-
* {@link EventStore}. Normally this should never be called by application logic. Instead, after you append the
|
|
19
|
-
* events, you should call the commit method which will end up calling this method.
|
|
20
|
-
*
|
|
21
|
-
* If a publisher is not connected, the method will return a rejected promise.
|
|
22
|
-
* @param events The events to be published
|
|
23
|
-
*/
|
|
24
16
|
/**
|
|
25
17
|
* Defines the current version of the aggregate root. The version is increased
|
|
26
18
|
* each time an event is persisted.
|
|
@@ -40,12 +32,20 @@ export declare abstract class AggregateRoot {
|
|
|
40
32
|
* Call this once all the events you want, have been appended.
|
|
41
33
|
*/
|
|
42
34
|
commit(): Promise<AggregateRoot>;
|
|
35
|
+
/**
|
|
36
|
+
* Publishes all the provided events using a connected event publisher. To connect a publisher, use the
|
|
37
|
+
* {@link EventStore}. Normally this should never be called by application logic. Instead, after you append the
|
|
38
|
+
* events, you should call the commit method which will end up calling this method.
|
|
39
|
+
*
|
|
40
|
+
* If a publisher is not connected, the method will return a rejected promise.
|
|
41
|
+
* @param events The events to be published
|
|
42
|
+
*/
|
|
43
43
|
publish(events: Array<AggregateRootEvent<object>>): Promise<Array<StoredEvent>>;
|
|
44
44
|
/**
|
|
45
45
|
* Used when a set of events have been retrieved from the database. These events can be passed to the method and the
|
|
46
|
-
* method will trigger all the matching {@link
|
|
46
|
+
* method will trigger all the matching {@link ApplyEvent} functions of the entity to populate the object based on
|
|
47
47
|
* application logic.
|
|
48
|
-
* @param events The events that will be sent to
|
|
48
|
+
* @param events The events that will be sent to {@link ApplyEvent} functions
|
|
49
49
|
*/
|
|
50
50
|
reconstitute(events: Array<StoredEvent>): void;
|
|
51
51
|
resolveVersion(events: Array<StoredEvent>): void;
|
|
@@ -26,14 +26,6 @@ class AggregateRoot {
|
|
|
26
26
|
get logger() {
|
|
27
27
|
return this._logger;
|
|
28
28
|
}
|
|
29
|
-
/**
|
|
30
|
-
* Publishes all the provided events using a connected event publisher. To connect a publisher, use the
|
|
31
|
-
* {@link EventStore}. Normally this should never be called by application logic. Instead, after you append the
|
|
32
|
-
* events, you should call the commit method which will end up calling this method.
|
|
33
|
-
*
|
|
34
|
-
* If a publisher is not connected, the method will return a rejected promise.
|
|
35
|
-
* @param events The events to be published
|
|
36
|
-
*/
|
|
37
29
|
/**
|
|
38
30
|
* Defines the current version of the aggregate root. The version is increased
|
|
39
31
|
* each time an event is persisted.
|
|
@@ -73,16 +65,23 @@ class AggregateRoot {
|
|
|
73
65
|
}
|
|
74
66
|
return this;
|
|
75
67
|
}
|
|
76
|
-
|
|
68
|
+
/**
|
|
69
|
+
* Publishes all the provided events using a connected event publisher. To connect a publisher, use the
|
|
70
|
+
* {@link EventStore}. Normally this should never be called by application logic. Instead, after you append the
|
|
71
|
+
* events, you should call the commit method which will end up calling this method.
|
|
72
|
+
*
|
|
73
|
+
* If a publisher is not connected, the method will return a rejected promise.
|
|
74
|
+
* @param events The events to be published
|
|
75
|
+
*/
|
|
77
76
|
publish(events) {
|
|
78
77
|
this.logger.error("There is no event publisher assigned");
|
|
79
78
|
return Promise.reject("There is no event publisher assigned");
|
|
80
79
|
}
|
|
81
80
|
/**
|
|
82
81
|
* Used when a set of events have been retrieved from the database. These events can be passed to the method and the
|
|
83
|
-
* method will trigger all the matching {@link
|
|
82
|
+
* method will trigger all the matching {@link ApplyEvent} functions of the entity to populate the object based on
|
|
84
83
|
* application logic.
|
|
85
|
-
* @param events The events that will be sent to
|
|
84
|
+
* @param events The events that will be sent to {@link ApplyEvent} functions
|
|
86
85
|
*/
|
|
87
86
|
reconstitute(events) {
|
|
88
87
|
if (events.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate-root.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/aggregate-root/aggregate-root.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAExC,8EAA4E;AAC5E,mFAA8E;AAC9E,6FAAwF;AAExF,oDAA4C;AAE5C,6CAAuD;AAOvD,MAAsB,aAAa;IAK/B,YACqB,GAAW,EAC5B,MAAe;QADE,QAAG,GAAH,GAAG,CAAQ;QAG5B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,IAAA,kBAAK,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,eAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,EAAE;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"aggregate-root.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/aggregate-root/aggregate-root.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAExC,8EAA4E;AAC5E,mFAA8E;AAC9E,6FAAwF;AAExF,oDAA4C;AAE5C,6CAAuD;AAOvD,MAAsB,aAAa;IAK/B,YACqB,GAAW,EAC5B,MAAe;QADE,QAAG,GAAH,GAAG,CAAQ;QAG5B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,IAAA,kBAAK,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,eAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,EAAE;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAa;QAChB,IAAI,CAAC,IAAA,yCAAY,EAAC,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,WAAW,CAAC,IAAI,qBAAqB,CAAC,CAAC;YACxE,MAAM,IAAI,yDAA0B,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YACtB,eAAe,EAAE,IAAI,CAAC,EAAE;YACxB,UAAU,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAChC,OAAO,EAAE,KAAK;SACjB,CAAC,CAAC;IACP,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,MAAM;QACR,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC9B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,MAAyC;QAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,OAAO,OAAO,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC;IAClE,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,MAA0B;QACnC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,YAAY,EAAE,gBAAgB,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YAE1F,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzD,MAAM,CAAC,GAAG,IAAI,+CAAqB,CAAC,YAAY,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC7E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC7B,MAAM,CAAC,CAAC;YACZ,CAAC;YAED,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACpB,IAAI,CAAC;oBACA,IAAY,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACrD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sEAAsE,KAAK,EAAE,CAAC,CAAC;oBACjG,MAAM,KAAK,CAAC;gBAChB,CAAC;YACL,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,MAA0B;QACrC,MAAM,MAAM,GAAuB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,oBAAoB,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC;QAC9G,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;IAC7D,CAAC;IAES,UAAU,CAAC,MAA0B;QAC3C,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,oBAAoB,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC;IACtF,CAAC;IAEO,WAAW,CAAC,MAA0B;QAC1C,MAAM,KAAK,GAAsB,EAAE,CAAC;QACpC,MAAM,YAAY,GAAkB,EAAE,CAAC;QACvC,MAAM,gBAAgB,GAAkB,EAAE,CAAC;QAE3C,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAClB,MAAM,UAAU,GAAG,IAAA,0CAAa,EAAC,EAAE,CAAC,SAAS,CAAC,CAAC;YAC/C,IAAI,IAAA,kBAAK,EAAC,UAAU,CAAC,EAAE,CAAC;gBACpB,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACJ,MAAM,YAAY,GAAG,IAAA,oCAAuB,EAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAC/D,IAAI,IAAA,kBAAK,EAAC,YAAY,CAAC,EAAE,CAAC;oBACtB,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;gBACxC,CAAC;qBAAM,CAAC;oBACJ,KAAK,CAAC,IAAI,CAAC;wBACP,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC;wBACpC,YAAY;qBACf,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,YAAY,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;CACJ;AAlJD,sCAkJC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ApplyEvent =
|
|
3
|
+
exports.ApplyEvent = ApplyEvent;
|
|
4
4
|
require("reflect-metadata");
|
|
5
5
|
const metadata_keys_1 = require("../metadata-keys");
|
|
6
6
|
/**
|
|
@@ -16,5 +16,4 @@ function ApplyEvent(eventClass) {
|
|
|
16
16
|
Reflect.defineMetadata(metadata_keys_1.APPLY_EVENT_DECORATOR_KEY + "-" + propertyKey.toString(), { eventClass: eventClass, key: propertyKey }, propertyParent);
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
|
-
exports.ApplyEvent = ApplyEvent;
|
|
20
19
|
//# sourceMappingURL=apply-event.decorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-event.decorator.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/aggregate-root/apply-event.decorator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"apply-event.decorator.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/aggregate-root/apply-event.decorator.ts"],"names":[],"mappings":";;AAaA,gCAQC;AArBD,4BAA0B;AAG1B,oDAA6D;AAE7D;;;;;;;GAOG;AACH,SAAgB,UAAU,CAAC,UAA0B;IACjD,OAAO,CAAC,cAAc,EAAE,WAAW,EAAE,EAAE;QACnC,OAAO,CAAC,cAAc,CAClB,yCAAyB,GAAG,GAAG,GAAG,WAAW,CAAC,QAAQ,EAAE,EACxD,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,EAC5C,cAAc,CACjB,CAAC;IACN,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getDecoratedPropertyKey =
|
|
3
|
+
exports.getDecoratedPropertyKey = getDecoratedPropertyKey;
|
|
4
4
|
require("reflect-metadata");
|
|
5
5
|
function getDecoratedPropertyKey(entity, eventClass) {
|
|
6
6
|
const metadataKeys = Reflect.getMetadataKeys(entity);
|
|
@@ -16,5 +16,4 @@ function getDecoratedPropertyKey(entity, eventClass) {
|
|
|
16
16
|
}
|
|
17
17
|
return Reflect.getMetadata(matchingKey, entity).key;
|
|
18
18
|
}
|
|
19
|
-
exports.getDecoratedPropertyKey = getDecoratedPropertyKey;
|
|
20
19
|
//# sourceMappingURL=reflection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reflection.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/aggregate-root/reflection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reflection.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/aggregate-root/reflection.ts"],"names":[],"mappings":";;AAKA,0DAgBC;AArBD,4BAA0B;AAK1B,SAAgB,uBAAuB,CAAC,MAAqB,EAAE,UAA0B;IACrF,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC5C,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;QAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC1D,OAAO,QAAQ,CAAC,UAAU,KAAK,UAAU,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC;AACxD,CAAC"}
|
|
@@ -47,7 +47,6 @@ class DomainEventEmitter {
|
|
|
47
47
|
const handlers = this._handlers.get(eventId);
|
|
48
48
|
const withErrorHandling = handlers.map((handler) => {
|
|
49
49
|
return async () => {
|
|
50
|
-
// eslint-disable-next-line no-useless-catch
|
|
51
50
|
try {
|
|
52
51
|
return await handler.onDomainEvent(withAggregate);
|
|
53
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-event-emitter.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/domain-event-emitter.ts"],"names":[],"mappings":";;;AAAA,2CAAyD;AAEzD,+BAA+D;AAE/D,2EAIqC;AAGrC,mDAA2C;AAE3C,MAAa,kBAAkB;IAI3B,YAA6B,2BAA2B,KAAK;QAAhC,6BAAwB,GAAxB,wBAAwB,CAAQ;QACzD,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,uBAAuB;QACvB,OAAO,IAAI,CAAC,wBAAwB,CAAC;IACzC,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,CAAC;oBACvD,OAAO;gBACX,CAAC;gBAED,IAAI,IAAA,qDAAyB,EAAC,QAAQ,CAAC,QAAkB,CAAC,EAAE,CAAC;oBACzD,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,CAAC;4BAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;wBACpC,CAAC;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,QAAiC,CAAC,CAAC;oBAClF,CAAC,CAAC,CAAC;gBACP,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,IAAI,CAAC,aAA2C;QAC5C,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,CACb,SAAS,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,6FAA6F,CAC/I,CAAC;YACF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QACD,MAAM,OAAO,GAAG,IAAA,sCAAU,EAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAI,IAAA,kBAAK,EAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,OAAO,CAAC,IAAI,CACb,SAAS,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,6FAA6F,CAC/I,CAAC;YACF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAiC,CAAC;QAC7E,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YAC/C,OAAO,KAAK,IAAI,EAAE;gBACd,
|
|
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,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getEventName = getEventName;
|
|
4
|
+
exports.getEventClass = getEventClass;
|
|
5
|
+
exports.isRegistered = isRegistered;
|
|
6
|
+
exports.registerEvent = registerEvent;
|
|
4
7
|
const event_name_conflict_exception_1 = require("./exceptions/event-name-conflict-exception");
|
|
5
8
|
const type_utils_1 = require("./utils/type-utils");
|
|
6
9
|
const registrations = [];
|
|
@@ -12,7 +15,6 @@ function getEventName(target) {
|
|
|
12
15
|
const found = registrations.find((registration) => registration.eventClass === target.constructor);
|
|
13
16
|
return found ? found.eventName : undefined;
|
|
14
17
|
}
|
|
15
|
-
exports.getEventName = getEventName;
|
|
16
18
|
/**
|
|
17
19
|
* Returns the class that matches the provided name. Or undefined.
|
|
18
20
|
* @param name The event name to be checked.
|
|
@@ -21,16 +23,13 @@ function getEventClass(name) {
|
|
|
21
23
|
const found = registrations.find((registration) => registration.eventName === name);
|
|
22
24
|
return (0, type_utils_1.isNil)(found) ? undefined : found.eventClass;
|
|
23
25
|
}
|
|
24
|
-
exports.getEventClass = getEventClass;
|
|
25
26
|
function isRegistered(event) {
|
|
26
27
|
return !(0, type_utils_1.isNil)(getEventName(event));
|
|
27
28
|
}
|
|
28
|
-
exports.isRegistered = isRegistered;
|
|
29
29
|
function registerEvent(newRegistration) {
|
|
30
30
|
if (registrations.some((registration) => registration.eventName === newRegistration.eventName)) {
|
|
31
31
|
throw new event_name_conflict_exception_1.EventNameConflictException(newRegistration.eventName);
|
|
32
32
|
}
|
|
33
33
|
registrations.push(newRegistration);
|
|
34
34
|
}
|
|
35
|
-
exports.registerEvent = registerEvent;
|
|
36
35
|
//# sourceMappingURL=domain-event-registrations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-event-registrations.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/domain-event-registrations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"domain-event-registrations.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/domain-event-registrations.ts"],"names":[],"mappings":";;AAgBA,oCAGC;AAMD,sCAGC;AAED,oCAEC;AAED,sCAMC;AAtCD,8FAAwF;AACxF,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;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,UAAuB,CAAC;AACrE,CAAC;AAED,SAAgB,YAAY,CAAC,KAAa;IACtC,OAAO,CAAC,IAAA,kBAAK,EAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,CAAC;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,CAAC;QAC7F,MAAM,IAAI,0DAA0B,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IACpE,CAAC;IAED,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.DomainEventSubscription = void 0;
|
|
4
|
+
exports.isDomainEventSubscription = isDomainEventSubscription;
|
|
5
|
+
exports.getEventsFromDomainEventSubscription = getEventsFromDomainEventSubscription;
|
|
6
|
+
exports.getEventId = getEventId;
|
|
4
7
|
const crypto_1 = require("crypto");
|
|
5
8
|
const metadata_keys_1 = require("./metadata-keys");
|
|
6
9
|
const type_utils_1 = require("./utils/type-utils");
|
|
@@ -19,15 +22,12 @@ function isDomainEventSubscription(targetInstance) {
|
|
|
19
22
|
const hasMetadata = Reflect.hasOwnMetadata(metadata_keys_1.DOMAIN_EVENT_SUBSCRIPTION_KEY, targetInstance.constructor);
|
|
20
23
|
return hasMetadata && typeof targetInstance.onDomainEvent === "function";
|
|
21
24
|
}
|
|
22
|
-
exports.isDomainEventSubscription = isDomainEventSubscription;
|
|
23
25
|
function getEventsFromDomainEventSubscription(subscriptionInstance) {
|
|
24
26
|
const metadata = Reflect.getMetadata(metadata_keys_1.DOMAIN_EVENT_SUBSCRIPTION_KEY, subscriptionInstance.constructor);
|
|
25
27
|
return (0, type_utils_1.isNil)(metadata) ? [] : metadata.events;
|
|
26
28
|
}
|
|
27
|
-
exports.getEventsFromDomainEventSubscription = getEventsFromDomainEventSubscription;
|
|
28
29
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
29
30
|
function getEventId(eventConstructor) {
|
|
30
31
|
return Reflect.getMetadata(metadata_keys_1.DOMAIN_EVENT_KEY, eventConstructor)?.eventSubscriptionId;
|
|
31
32
|
}
|
|
32
|
-
exports.getEventId = getEventId;
|
|
33
33
|
//# sourceMappingURL=domain-event-subscription.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-event-subscription.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/domain-event-subscription.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"domain-event-subscription.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/domain-event-subscription.ts"],"names":[],"mappings":";;;AAuBA,8DAGC;AAED,oFAGC;AAGD,gCAEC;AApCD,mCAAoC;AAGpC,mDAAkF;AAElF,mDAA2C;AAEpC,MAAM,uBAAuB,GAAG,CAAC,GAAG,YAA8B,EAAkB,EAAE;IACzF,OAAO,CAAC,MAAc,EAAE,EAAE;QACtB,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3B,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,gCAAgB,EAAE,KAAK,CAAC,EAAE,CAAC;gBACnD,OAAO,CAAC,cAAc,CAClB,gCAAgB,EAChB,EAAE,mBAAmB,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,IAAA,mBAAU,GAAE,EAAE,EAAE,EACxD,KAAK,CACR,CAAC;YACN,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,cAAc,CAAC,6CAA6B,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5F,CAAC,CAAC;AACN,CAAC,CAAC;AAdW,QAAA,uBAAuB,2BAclC;AAEF,SAAgB,yBAAyB,CAAC,cAAsB;IAC5D,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,6CAA6B,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IACtG,OAAO,WAAW,IAAI,OAAQ,cAAyC,CAAC,aAAa,KAAK,UAAU,CAAC;AACzG,CAAC;AAED,SAAgB,oCAAoC,CAAC,oBAA4C;IAC7F,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,6CAA6B,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACtG,OAAO,IAAA,kBAAK,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAClD,CAAC;AAED,wDAAwD;AACxD,SAAgB,UAAU,CAAC,gBAA0B;IACjD,OAAO,OAAO,CAAC,WAAW,CAAC,gCAAgB,EAAE,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;AACxF,CAAC"}
|
package/src/lib/domain-event.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DomainEvent =
|
|
3
|
+
exports.DomainEvent = DomainEvent;
|
|
4
4
|
const domain_event_registrations_1 = require("./domain-event-registrations");
|
|
5
5
|
/**
|
|
6
6
|
* A decorator to mark a class as a domain event. Objects of this type of classes are persisted in the database and
|
|
@@ -21,5 +21,4 @@ function DomainEvent(eventName) {
|
|
|
21
21
|
});
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
exports.DomainEvent = DomainEvent;
|
|
25
24
|
//# sourceMappingURL=domain-event.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-event.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/domain-event.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"domain-event.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/domain-event.ts"],"names":[],"mappings":";;AAaA,kCAOC;AApBD,6EAA6D;AAE7D;;;;;;;;;;GAUG;AACH,SAAgB,WAAW,CAAC,SAAiB;IACzC,OAAO,CAAC,MAAM,EAAE,EAAE;QACd,IAAA,0CAAa,EAAC;YACV,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,SAAS;SACvB,CAAC,CAAC;IACP,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -14,6 +14,7 @@ export declare abstract class AbstractEventStore implements EventStore {
|
|
|
14
14
|
addPublisher<T extends AggregateRoot>(aggregateRoot: T): T;
|
|
15
15
|
abstract findAggregateRootVersion(id: string): Promise<number>;
|
|
16
16
|
abstract findByAggregateRootId<T extends AggregateRoot>(aggregateRootClass: AggregateRootClass<T>, id: string): Promise<Array<StoredEvent>>;
|
|
17
|
+
abstract findByAggregateRootIds<T extends AggregateRoot>(aggregateRootClass: AggregateRootClass<T>, ids: string[]): Promise<Record<string, Array<StoredEvent>>>;
|
|
17
18
|
abstract generateEntityId(): Promise<string>;
|
|
18
19
|
abstract save(events: Array<StoredEvent>, aggregate: StoredAggregateRoot): Promise<Array<StoredEvent>>;
|
|
19
20
|
}
|
|
@@ -14,7 +14,6 @@ const stored_event_1 = require("./stored-event");
|
|
|
14
14
|
* of the {@link EventStore:addPublisher} method and this is why this class exists.
|
|
15
15
|
*/
|
|
16
16
|
class AbstractEventStore {
|
|
17
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
18
17
|
constructor(_eventEmitter) {
|
|
19
18
|
this._eventEmitter = _eventEmitter;
|
|
20
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-event-store.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/storage/abstract-event-store.ts"],"names":[],"mappings":";;;AAEA,+EAA6E;AAE7E,mFAA8E;AAC9E,+GAAwG;AACxG,mGAA6F;AAE7F,oDAA0D;AAE1D,mEAA8D;AAC9D,iDAA6C;AAE7C;;;;GAIG;AACH,MAAsB,kBAAkB;IACpC,
|
|
1
|
+
{"version":3,"file":"abstract-event-store.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/storage/abstract-event-store.ts"],"names":[],"mappings":";;;AAEA,+EAA6E;AAE7E,mFAA8E;AAC9E,+GAAwG;AACxG,mGAA6F;AAE7F,oDAA0D;AAE1D,mEAA8D;AAC9D,iDAA6C;AAE7C;;;;GAIG;AACH,MAAsB,kBAAkB;IACpC,YAA8B,aAAiC;QAAjC,kBAAa,GAAb,aAAa,CAAoB;IAAG,CAAC;IAEnE,YAAY,CAA0B,aAAgB;QAClD,aAAa,CAAC,OAAO,GAAG,KAAK,EAAE,MAAyC,EAAE,EAAE;YACxE,MAAM,iBAAiB,GAAG,IAAA,0CAAoB,EAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YAC1E,IAAI,IAAA,kBAAK,EAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,yEAAiC,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAChF,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACrB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC/B,CAAC;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,CAAC;gBACrD,MAAM,IAAI,+CAAqB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM,SAAS,GAAwC,EAAE,CAAC;YAC1D,MAAM,YAAY,GAAuB,EAAE,CAAC;YAE5C,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACrB,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,EAAY,CAAC;gBAC/B,YAAY,CAAC,IAAI,CACb,0BAAW,CAAC,kBAAkB,CAC1B,EAAE,EACF,aAAa,CAAC,EAAE,EAChB,iBAAiB,EACjB,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,UAAU,CACnB,CACJ,CAAC;gBACF,SAAS,CAAC,IAAI,CAAC;oBACX,GAAG,KAAK;oBACR,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE,aAAa,CAAC,OAAO;iBACjC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,IAAI,2CAAmB,CAAC,aAAa,CAAC,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;YACjF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACrD,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC;gBACxD,IAAI,IAAA,kBAAK,EAAC,KAAK,CAAC,EAAE,CAAC;oBACf,MAAM,IAAI,8DAA4B,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;gBACjF,CAAC;gBAED,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,oBAAoB,CAAC;YAC/C,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC3C,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACpC,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC;QACF,OAAO,aAAa,CAAC;IACzB,CAAC;CAiBJ;AAxED,gDAwEC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { AggregateRoot } from "../aggregate-root/aggregate-root";
|
|
2
2
|
import { StoredAggregateRoot } from "./stored-aggregate-root";
|
|
3
3
|
import { StoredEvent } from "./stored-event";
|
|
4
|
-
export type AggregateRootClass<T> =
|
|
4
|
+
export type AggregateRootClass<T> = {
|
|
5
5
|
prototype: T;
|
|
6
|
-
};
|
|
6
|
+
} & Function;
|
|
7
7
|
export declare const EVENT_STORE: unique symbol;
|
|
8
8
|
/**
|
|
9
9
|
* Defines the main EventStore interface that can be used to retrieve and save events. Each implementation of this interface
|
|
@@ -30,8 +30,17 @@ export interface EventStore {
|
|
|
30
30
|
* is resolved from the aggregate root class. These events can later be used to recreate an aggregate root object.
|
|
31
31
|
* @param aggregateRootClass The class of the aggregate root for which the store will search for events
|
|
32
32
|
* @param id The unique id of the aggregate root object
|
|
33
|
+
* @returns An array of events that are associated with the provided id
|
|
33
34
|
*/
|
|
34
35
|
findByAggregateRootId<T extends AggregateRoot>(aggregateRootClass: AggregateRootClass<T>, id: string): Promise<Array<StoredEvent>>;
|
|
36
|
+
/**
|
|
37
|
+
* Finds all events that are associated with the provided aggregate root ids and match the aggregate root name which
|
|
38
|
+
* is resolved from the aggregate root class. These events can later be used to recreate an aggregate root object.
|
|
39
|
+
* @param aggregateRootClass The class of the aggregate root for which the store will search for events
|
|
40
|
+
* @param ids The unique ids of the aggregate root objects
|
|
41
|
+
* @returns A map where the key is the aggregate root id and the value is an array of events that are associated with that id
|
|
42
|
+
*/
|
|
43
|
+
findByAggregateRootIds<T extends AggregateRoot>(aggregateRootClass: AggregateRootClass<T>, ids: string[]): Promise<Record<string, Array<StoredEvent>>>;
|
|
35
44
|
/**
|
|
36
45
|
* Each storage solution has its own way of dealing with unique ids. This method's implementation should reflect
|
|
37
46
|
* the way the storage solution generates unique ids. For example, in a MongoDB database this would usually return
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.isNil = isNil;
|
|
4
|
+
exports.hasAllValues = hasAllValues;
|
|
4
5
|
function isNil(toCheck) {
|
|
5
6
|
return toCheck === null || toCheck === undefined;
|
|
6
7
|
}
|
|
7
|
-
exports.isNil = isNil;
|
|
8
8
|
function hasAllValues(toCheck) {
|
|
9
9
|
return toCheck.every((item) => !isNil(item));
|
|
10
10
|
}
|
|
11
|
-
exports.hasAllValues = hasAllValues;
|
|
12
11
|
//# sourceMappingURL=type-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-utils.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/utils/type-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"type-utils.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/utils/type-utils.ts"],"names":[],"mappings":";;AAAA,sBAEC;AAED,oCAEC;AAND,SAAgB,KAAK,CAAC,OAAgB;IAClC,OAAO,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,CAAC;AACrD,CAAC;AAED,SAAgB,YAAY,CAAI,OAAoC;IAChE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,CAAC"}
|