@event-nest/core 3.4.1 → 4.0.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/package.json +5 -5
- package/src/lib/aggregate-root/aggregate-root.d.ts +8 -4
- package/src/lib/aggregate-root/aggregate-root.js +20 -14
- package/src/lib/aggregate-root/aggregate-root.js.map +1 -1
- package/src/lib/aggregate-root/apply-event.decorator.d.ts +1 -0
- package/src/lib/aggregate-root/apply-event.decorator.js +6 -0
- package/src/lib/aggregate-root/apply-event.decorator.js.map +1 -1
- package/src/lib/domain-event-emitter.js +2 -2
- package/src/lib/domain-event-emitter.js.map +1 -1
- package/src/lib/domain-event-registrations.js +3 -3
- package/src/lib/domain-event-registrations.js.map +1 -1
- package/src/lib/domain-event-subscription.js +5 -6
- package/src/lib/domain-event-subscription.js.map +1 -1
- package/src/lib/exceptions/missing-event-class-exception.d.ts +7 -0
- package/src/lib/exceptions/missing-event-class-exception.js +14 -0
- package/src/lib/exceptions/missing-event-class-exception.js.map +1 -0
- package/src/lib/storage/abstract-event-store.js +3 -2
- 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/utils/type-utils.d.ts +0 -1
- package/src/lib/utils/type-utils.js +2 -5
- package/src/lib/utils/type-utils.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@event-nest/core",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.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.",
|
|
@@ -18,19 +18,19 @@
|
|
|
18
18
|
"url": "https://github.com/NickTsitlakidis/event-nest.git"
|
|
19
19
|
},
|
|
20
20
|
"engines": {
|
|
21
|
-
"node": ">=
|
|
21
|
+
"node": ">= 20"
|
|
22
22
|
},
|
|
23
23
|
"type": "commonjs",
|
|
24
24
|
"peerDependencies": {
|
|
25
|
-
"@nestjs/common": "
|
|
26
|
-
"@nestjs/core": "^
|
|
25
|
+
"@nestjs/common": "^^10.0.0 || ^11.0.0",
|
|
26
|
+
"@nestjs/core": "^10.0.0 || ^11.0.0",
|
|
27
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
|
+
"es-toolkit": "^1.32.0"
|
|
34
34
|
},
|
|
35
35
|
"types": "./src/index.d.ts",
|
|
36
36
|
"main": "./src/index.js"
|
|
@@ -3,16 +3,20 @@ import { StoredEvent } from "../storage/stored-event";
|
|
|
3
3
|
import { AggregateRootEvent } from "./aggregate-root-event";
|
|
4
4
|
export declare abstract class AggregateRoot {
|
|
5
5
|
private readonly _id;
|
|
6
|
-
private _appendedEvents;
|
|
7
6
|
private readonly _logger;
|
|
7
|
+
private _uncommittedEvents;
|
|
8
8
|
private _version;
|
|
9
9
|
protected constructor(_id: string, logger?: Logger);
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
11
|
+
* @deprecated Use {@link uncommittedEvents} instead. It will be removed in version 5.x
|
|
12
12
|
*/
|
|
13
13
|
get appendedEvents(): Array<AggregateRootEvent<object>>;
|
|
14
14
|
get id(): string;
|
|
15
15
|
get logger(): Logger;
|
|
16
|
+
/**
|
|
17
|
+
* Returns a clone array of all the currently uncommitted events of the entity.
|
|
18
|
+
*/
|
|
19
|
+
get uncommittedEvents(): Array<AggregateRootEvent<object>>;
|
|
16
20
|
/**
|
|
17
21
|
* Defines the current version of the aggregate root. The version is increased
|
|
18
22
|
* each time an event is persisted.
|
|
@@ -27,12 +31,12 @@ export declare abstract class AggregateRoot {
|
|
|
27
31
|
append(event: object): void;
|
|
28
32
|
/**
|
|
29
33
|
* All the events that have been previously appended will be committed once this method runs. After publishing,
|
|
30
|
-
* the
|
|
34
|
+
* the uncommitted events will be deleted so that the next commit publishes newer events.
|
|
31
35
|
* During publishing, the events will be saved and after the successful save, all the application event
|
|
32
36
|
* handlers will be called to take care of async updates.
|
|
33
37
|
* Call this once all the events you want, have been appended.
|
|
34
38
|
*/
|
|
35
|
-
commit(): Promise<
|
|
39
|
+
commit(): Promise<this>;
|
|
36
40
|
/**
|
|
37
41
|
* Publishes all the provided events using a connected event publisher. To connect a publisher, use the
|
|
38
42
|
* {@link EventStore}. Normally this should never be called by application logic. Instead, after you append the
|
|
@@ -2,24 +2,24 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AggregateRoot = void 0;
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
|
+
const es_toolkit_1 = require("es-toolkit");
|
|
5
6
|
const domain_event_registrations_1 = require("../domain-event-registrations");
|
|
6
7
|
const subscription_exception_1 = require("../exceptions/subscription-exception");
|
|
7
8
|
const unknown_event_exception_1 = require("../exceptions/unknown-event-exception");
|
|
8
9
|
const unregistered_event_exception_1 = require("../exceptions/unregistered-event-exception");
|
|
9
|
-
const type_utils_1 = require("../utils/type-utils");
|
|
10
10
|
const reflection_1 = require("./reflection");
|
|
11
11
|
class AggregateRoot {
|
|
12
12
|
constructor(_id, logger) {
|
|
13
13
|
this._id = _id;
|
|
14
|
-
this.
|
|
14
|
+
this._uncommittedEvents = [];
|
|
15
15
|
this._version = 0;
|
|
16
|
-
this._logger = (0,
|
|
16
|
+
this._logger = (0, es_toolkit_1.isNil)(logger) ? new common_1.Logger(AggregateRoot.name) : logger;
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
19
|
+
* @deprecated Use {@link uncommittedEvents} instead. It will be removed in version 5.x
|
|
20
20
|
*/
|
|
21
21
|
get appendedEvents() {
|
|
22
|
-
return [...this.
|
|
22
|
+
return [...this._uncommittedEvents];
|
|
23
23
|
}
|
|
24
24
|
get id() {
|
|
25
25
|
return this._id;
|
|
@@ -27,6 +27,12 @@ class AggregateRoot {
|
|
|
27
27
|
get logger() {
|
|
28
28
|
return this._logger;
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Returns a clone array of all the currently uncommitted events of the entity.
|
|
32
|
+
*/
|
|
33
|
+
get uncommittedEvents() {
|
|
34
|
+
return [...this._uncommittedEvents];
|
|
35
|
+
}
|
|
30
36
|
/**
|
|
31
37
|
* Defines the current version of the aggregate root. The version is increased
|
|
32
38
|
* each time an event is persisted.
|
|
@@ -45,7 +51,7 @@ class AggregateRoot {
|
|
|
45
51
|
this.logger.error(`Event ${event.constructor.name} is not registered.`);
|
|
46
52
|
throw new unregistered_event_exception_1.UnregisteredEventException(event.constructor.name);
|
|
47
53
|
}
|
|
48
|
-
this.
|
|
54
|
+
this._uncommittedEvents.push({
|
|
49
55
|
aggregateRootId: this.id,
|
|
50
56
|
occurredAt: new Date(Date.now()),
|
|
51
57
|
payload: event
|
|
@@ -53,24 +59,24 @@ class AggregateRoot {
|
|
|
53
59
|
}
|
|
54
60
|
/**
|
|
55
61
|
* All the events that have been previously appended will be committed once this method runs. After publishing,
|
|
56
|
-
* the
|
|
62
|
+
* the uncommitted events will be deleted so that the next commit publishes newer events.
|
|
57
63
|
* During publishing, the events will be saved and after the successful save, all the application event
|
|
58
64
|
* handlers will be called to take care of async updates.
|
|
59
65
|
* Call this once all the events you want, have been appended.
|
|
60
66
|
*/
|
|
61
67
|
async commit() {
|
|
62
|
-
const toPublish = [...this.
|
|
68
|
+
const toPublish = [...this._uncommittedEvents];
|
|
63
69
|
if (toPublish.length === 0) {
|
|
64
70
|
return this;
|
|
65
71
|
}
|
|
66
72
|
try {
|
|
67
73
|
await this.publish(toPublish);
|
|
68
|
-
this.
|
|
74
|
+
this._uncommittedEvents = [];
|
|
69
75
|
return this;
|
|
70
76
|
}
|
|
71
77
|
catch (error) {
|
|
72
78
|
if (error instanceof subscription_exception_1.SubscriptionException) {
|
|
73
|
-
this.
|
|
79
|
+
this._uncommittedEvents = [];
|
|
74
80
|
}
|
|
75
81
|
throw error;
|
|
76
82
|
}
|
|
@@ -99,7 +105,7 @@ class AggregateRoot {
|
|
|
99
105
|
if (events.length > 0) {
|
|
100
106
|
const [unregistered, missingProcessor, known] = this.splitEvents(this.sortEvents(events));
|
|
101
107
|
if (unregistered.length > 0 || missingProcessor.length > 0) {
|
|
102
|
-
const throwable = new unknown_event_exception_1.UnknownEventException(unregistered, missingProcessor, this.id);
|
|
108
|
+
const throwable = new unknown_event_exception_1.UnknownEventException((0, es_toolkit_1.uniq)(unregistered), (0, es_toolkit_1.uniq)(missingProcessor), this.id);
|
|
103
109
|
this.logger.error(throwable.message);
|
|
104
110
|
throw throwable;
|
|
105
111
|
}
|
|
@@ -120,7 +126,7 @@ class AggregateRoot {
|
|
|
120
126
|
resolveVersion(events) {
|
|
121
127
|
const sorted = events.sort((event1, event2) => event1.aggregateRootVersion - event2.aggregateRootVersion);
|
|
122
128
|
const lastElement = sorted.at(-1);
|
|
123
|
-
this._version = (0,
|
|
129
|
+
this._version = (0, es_toolkit_1.isNil)(lastElement) ? 0 : lastElement.aggregateRootVersion;
|
|
124
130
|
}
|
|
125
131
|
sortEvents(events) {
|
|
126
132
|
return events.sort((event1, event2) => event1.aggregateRootVersion - event2.aggregateRootVersion);
|
|
@@ -131,12 +137,12 @@ class AggregateRoot {
|
|
|
131
137
|
const missingProcessor = [];
|
|
132
138
|
for (const storedEvent of events) {
|
|
133
139
|
const eventClass = (0, domain_event_registrations_1.getEventClass)(storedEvent.eventName);
|
|
134
|
-
if ((0,
|
|
140
|
+
if ((0, es_toolkit_1.isNil)(eventClass)) {
|
|
135
141
|
unregistered.push(storedEvent.eventName);
|
|
136
142
|
}
|
|
137
143
|
else {
|
|
138
144
|
const processorKey = (0, reflection_1.getDecoratedPropertyKey)(this, eventClass);
|
|
139
|
-
if ((0,
|
|
145
|
+
if ((0, es_toolkit_1.isNil)(processorKey)) {
|
|
140
146
|
missingProcessor.push(storedEvent.eventName);
|
|
141
147
|
}
|
|
142
148
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate-root.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/aggregate-root/aggregate-root.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;
|
|
1
|
+
{"version":3,"file":"aggregate-root.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/aggregate-root/aggregate-root.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import { Class } from "type-fest";
|
|
|
6
6
|
* are called to process the events.
|
|
7
7
|
*
|
|
8
8
|
* @param eventClass The class of the event to be applied.
|
|
9
|
+
* @throws {MissingEventClassException} When the event class is undefined or null.
|
|
9
10
|
* @constructor
|
|
10
11
|
*/
|
|
11
12
|
export declare function ApplyEvent(eventClass: Class<unknown>): PropertyDecorator;
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ApplyEvent = ApplyEvent;
|
|
4
4
|
require("reflect-metadata");
|
|
5
|
+
const es_toolkit_1 = require("es-toolkit");
|
|
6
|
+
const missing_event_class_exception_1 = require("../exceptions/missing-event-class-exception");
|
|
5
7
|
const metadata_keys_1 = require("../metadata-keys");
|
|
6
8
|
/**
|
|
7
9
|
* A decorator to mark that a method is used to apply a specific event to an aggregate root.
|
|
@@ -9,9 +11,13 @@ const metadata_keys_1 = require("../metadata-keys");
|
|
|
9
11
|
* are called to process the events.
|
|
10
12
|
*
|
|
11
13
|
* @param eventClass The class of the event to be applied.
|
|
14
|
+
* @throws {MissingEventClassException} When the event class is undefined or null.
|
|
12
15
|
* @constructor
|
|
13
16
|
*/
|
|
14
17
|
function ApplyEvent(eventClass) {
|
|
18
|
+
if ((0, es_toolkit_1.isNil)(eventClass)) {
|
|
19
|
+
throw new missing_event_class_exception_1.MissingEventClassException();
|
|
20
|
+
}
|
|
15
21
|
return (propertyParent, propertyKey) => {
|
|
16
22
|
Reflect.defineMetadata(metadata_keys_1.APPLY_EVENT_DECORATOR_KEY + "-" + propertyKey.toString(), { eventClass: eventClass, key: propertyKey }, propertyParent);
|
|
17
23
|
};
|
|
@@ -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":";;AAgBA,gCAWC;AA3BD,4BAA0B;AAC1B,2CAAmC;AAGnC,+FAAyF;AACzF,oDAA6D;AAE7D;;;;;;;;GAQG;AACH,SAAgB,UAAU,CAAC,UAA0B;IACjD,IAAI,IAAA,kBAAK,EAAC,UAAU,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,0DAA0B,EAAE,CAAC;IAC3C,CAAC;IACD,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"}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DomainEventEmitter = void 0;
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
|
+
const es_toolkit_1 = require("es-toolkit");
|
|
5
6
|
const rxjs_1 = require("rxjs");
|
|
6
7
|
const domain_event_subscription_1 = require("./domain-event-subscription");
|
|
7
8
|
const subscription_exception_1 = require("./exceptions/subscription-exception");
|
|
8
|
-
const type_utils_1 = require("./utils/type-utils");
|
|
9
9
|
class DomainEventEmitter {
|
|
10
10
|
constructor(_concurrentSubscriptions = false) {
|
|
11
11
|
this._concurrentSubscriptions = _concurrentSubscriptions;
|
|
@@ -130,7 +130,7 @@ class DomainEventEmitter {
|
|
|
130
130
|
splitEventsBySubscriptionType(publishedEvents) {
|
|
131
131
|
const withValidMetadata = publishedEvents.filter((event) => {
|
|
132
132
|
const eventId = (0, domain_event_subscription_1.getEventId)(event.payload.constructor);
|
|
133
|
-
return !(0,
|
|
133
|
+
return !(0, es_toolkit_1.isNil)(eventId);
|
|
134
134
|
});
|
|
135
135
|
const eventsWithSyncSubscriptions = withValidMetadata.filter((event) => {
|
|
136
136
|
const eventId = (0, domain_event_subscription_1.getEventId)(event.payload.constructor);
|
|
@@ -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,2EAKqC;AACrC,gFAA4E;
|
|
1
|
+
{"version":3,"file":"domain-event-emitter.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/domain-event-emitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,8 @@ exports.getEventClass = getEventClass;
|
|
|
4
4
|
exports.getEventName = getEventName;
|
|
5
5
|
exports.isRegistered = isRegistered;
|
|
6
6
|
exports.registerEvent = registerEvent;
|
|
7
|
+
const es_toolkit_1 = require("es-toolkit");
|
|
7
8
|
const event_name_conflict_exception_1 = require("./exceptions/event-name-conflict-exception");
|
|
8
|
-
const type_utils_1 = require("./utils/type-utils");
|
|
9
9
|
const registrations = [];
|
|
10
10
|
/**
|
|
11
11
|
* Returns the class that matches the provided name. Or undefined.
|
|
@@ -13,7 +13,7 @@ const registrations = [];
|
|
|
13
13
|
*/
|
|
14
14
|
function getEventClass(name) {
|
|
15
15
|
const found = registrations.find((registration) => registration.eventName === name);
|
|
16
|
-
return (0,
|
|
16
|
+
return (0, es_toolkit_1.isNil)(found) ? undefined : found.eventClass;
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
19
|
* Returns the event name that matches the class of the provided object.
|
|
@@ -24,7 +24,7 @@ function getEventName(target) {
|
|
|
24
24
|
return found ? found.eventName : undefined;
|
|
25
25
|
}
|
|
26
26
|
function isRegistered(event) {
|
|
27
|
-
return !(0,
|
|
27
|
+
return !(0, es_toolkit_1.isNil)(getEventName(event));
|
|
28
28
|
}
|
|
29
29
|
function registerEvent(newRegistration) {
|
|
30
30
|
if (registrations.some((registration) => registration.eventName === newRegistration.eventName)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-event-registrations.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/domain-event-registrations.ts"],"names":[],"mappings":";;AAgBA,sCAGC;AAMD,oCAGC;AAED,oCAEC;AAED,sCAMC;
|
|
1
|
+
{"version":3,"file":"domain-event-registrations.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/domain-event-registrations.ts"],"names":[],"mappings":";;AAgBA,sCAGC;AAMD,oCAGC;AAED,oCAEC;AAED,sCAMC;AAxCD,2CAAmC;AAGnC,8FAAwF;AAOxF,MAAM,aAAa,GAAwB,EAAE,CAAC;AAE9C;;;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;;;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,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"}
|
|
@@ -5,16 +5,15 @@ exports.getEventId = getEventId;
|
|
|
5
5
|
exports.getEventsFromDomainEventSubscription = getEventsFromDomainEventSubscription;
|
|
6
6
|
exports.getSubscriptionAsyncType = getSubscriptionAsyncType;
|
|
7
7
|
exports.isDomainEventSubscription = isDomainEventSubscription;
|
|
8
|
+
const es_toolkit_1 = require("es-toolkit");
|
|
8
9
|
const node_crypto_1 = require("node:crypto");
|
|
9
|
-
const radash_1 = require("radash");
|
|
10
10
|
const metadata_keys_1 = require("./metadata-keys");
|
|
11
|
-
const type_utils_1 = require("./utils/type-utils");
|
|
12
11
|
function DomainEventSubscription(configOrEventClass, ...eventClasses) {
|
|
13
|
-
const actualEventClasses = (0,
|
|
12
|
+
const actualEventClasses = (0, es_toolkit_1.isPlainObject)(configOrEventClass)
|
|
14
13
|
? configOrEventClass.eventClasses
|
|
15
14
|
: [configOrEventClass, ...eventClasses];
|
|
16
15
|
let isAsync = true;
|
|
17
|
-
if ((0,
|
|
16
|
+
if ((0, es_toolkit_1.isPlainObject)(configOrEventClass)) {
|
|
18
17
|
isAsync = configOrEventClass.isAsync ?? true;
|
|
19
18
|
}
|
|
20
19
|
return (target) => {
|
|
@@ -32,11 +31,11 @@ function getEventId(eventConstructor) {
|
|
|
32
31
|
}
|
|
33
32
|
function getEventsFromDomainEventSubscription(subscriptionInstance) {
|
|
34
33
|
const metadata = Reflect.getMetadata(metadata_keys_1.DOMAIN_EVENT_SUBSCRIPTION_KEY, subscriptionInstance.constructor);
|
|
35
|
-
return (0,
|
|
34
|
+
return (0, es_toolkit_1.isNil)(metadata) ? [] : metadata.events;
|
|
36
35
|
}
|
|
37
36
|
function getSubscriptionAsyncType(subscriptionInstance) {
|
|
38
37
|
const metadata = Reflect.getMetadata(metadata_keys_1.DOMAIN_EVENT_SUBSCRIPTION_KEY, subscriptionInstance.constructor);
|
|
39
|
-
return (0,
|
|
38
|
+
return (0, es_toolkit_1.isNil)(metadata) ? true : metadata.isAsync;
|
|
40
39
|
}
|
|
41
40
|
function isDomainEventSubscription(targetInstance) {
|
|
42
41
|
const hasMetadata = Reflect.hasOwnMetadata(metadata_keys_1.DOMAIN_EVENT_SUBSCRIPTION_KEY, targetInstance.constructor);
|
|
@@ -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":";;AAqBA,0DA0BC;AAGD,gCAEC;AAED,oFAGC;AAED,4DAGC;AAED,8DAGC;AAnED,2CAAkD;AAClD,6CAAyC;AAGzC,mDAAkF;AAiBlF,SAAgB,uBAAuB,CACnC,kBAA8D,EAC9D,GAAG,YAA8B;IAEjC,MAAM,kBAAkB,GAAG,IAAA,0BAAa,EAAC,kBAAkB,CAAC;QACxD,CAAC,CAAE,kBAAgD,CAAC,YAAY;QAChE,CAAC,CAAC,CAAC,kBAAkB,EAAE,GAAG,YAAY,CAAC,CAAC;IAE5C,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,IAAA,0BAAa,EAAC,kBAAkB,CAAC,EAAE,CAAC;QACpC,OAAO,GAAI,kBAAgD,CAAC,OAAO,IAAI,IAAI,CAAC;IAChF,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,EAAE;QACtB,KAAK,MAAM,KAAK,IAAI,kBAAkB,EAAE,CAAC;YACrC,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,wBAAU,GAAE,EAAE,EAAE,EACxD,KAAK,CACR,CAAC;YACN,CAAC;QACL,CAAC;QAED,OAAO,CAAC,cAAc,CAAC,6CAA6B,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;IAC3G,CAAC,CAAC;AACN,CAAC;AAED,sEAAsE;AACtE,SAAgB,UAAU,CAAC,gBAA0B;IACjD,OAAO,OAAO,CAAC,WAAW,CAAC,gCAAgB,EAAE,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;AACxF,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,SAAgB,wBAAwB,CAAC,oBAA4C;IACjF,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,6CAA6B,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACtG,OAAO,IAAA,kBAAK,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACrD,CAAC;AAED,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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MissingEventClassException = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Thrown during the initialization of the application at the point where the @ApplyEvent decorators are processed if the
|
|
6
|
+
* provided event class is null or undefined.
|
|
7
|
+
*/
|
|
8
|
+
class MissingEventClassException extends Error {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(`@ApplyEvent decorator was used with a null or undefined event class. This may be a problem with your imports.`);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.MissingEventClassException = MissingEventClassException;
|
|
14
|
+
//# sourceMappingURL=missing-event-class-exception.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"missing-event-class-exception.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/exceptions/missing-event-class-exception.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,MAAa,0BAA2B,SAAQ,KAAK;IACjD;QACI,KAAK,CACD,+GAA+G,CAClH,CAAC;IACN,CAAC;CACJ;AAND,gEAMC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AbstractEventStore = void 0;
|
|
4
|
+
const es_toolkit_1 = require("es-toolkit");
|
|
4
5
|
const aggregate_root_name_1 = require("../aggregate-root/aggregate-root-name");
|
|
5
6
|
const id_generation_exception_1 = require("../exceptions/id-generation-exception");
|
|
6
7
|
const missing_aggregate_root_name_exception_1 = require("../exceptions/missing-aggregate-root-name-exception");
|
|
@@ -20,7 +21,7 @@ class AbstractEventStore {
|
|
|
20
21
|
addPublisher(aggregateRoot) {
|
|
21
22
|
aggregateRoot.publish = async (events) => {
|
|
22
23
|
const aggregateRootName = (0, aggregate_root_name_1.getAggregateRootName)(aggregateRoot.constructor);
|
|
23
|
-
if ((0,
|
|
24
|
+
if ((0, es_toolkit_1.isNil)(aggregateRootName)) {
|
|
24
25
|
throw new missing_aggregate_root_name_exception_1.MissingAggregateRootNameException(aggregateRoot.constructor.name);
|
|
25
26
|
}
|
|
26
27
|
if (events.length === 0) {
|
|
@@ -45,7 +46,7 @@ class AbstractEventStore {
|
|
|
45
46
|
const saved = await this.save(storedEvents, toStore);
|
|
46
47
|
for (const publishedEvent of published) {
|
|
47
48
|
const found = saved.find((s) => s.id === publishedEvent.eventId);
|
|
48
|
-
if ((0,
|
|
49
|
+
if ((0, es_toolkit_1.isNil)(found)) {
|
|
49
50
|
throw new unknown_event_version_exception_1.UnknownEventVersionException(publishedEvent.eventId, publishedEvent.aggregateRootId);
|
|
50
51
|
}
|
|
51
52
|
publishedEvent.version = found.aggregateRootVersion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-event-store.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/storage/abstract-event-store.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"abstract-event-store.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/storage/abstract-event-store.ts"],"names":[],"mappings":";;;AAAA,2CAAmC;AAInC,+EAA6E;AAE7E,mFAA8E;AAC9E,+GAAwG;AACxG,mGAA6F;AAE7F,oDAAmD;AAEnD,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,KAAK,CAAC,EAAE,CAAC;gBACtB,OAAO,EAAE,CAAC;YACd,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,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBACzB,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;YAED,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,KAAK,MAAM,cAAc,IAAI,SAAS,EAAE,CAAC;gBACrC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,OAAO,CAAC,CAAC;gBACjE,IAAI,IAAA,kBAAK,EAAC,KAAK,CAAC,EAAE,CAAC;oBACf,MAAM,IAAI,8DAA4B,CAAC,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;gBACnG,CAAC;gBAED,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC,oBAAoB,CAAC;YACxD,CAAC;YAED,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACjD,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC;QACF,OAAO,aAAa,CAAC;IACzB,CAAC;CAiBJ;AAxED,gDAwEC"}
|
|
@@ -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 es_toolkit_1 = require("es-toolkit");
|
|
5
6
|
const domain_event_registrations_1 = require("../domain-event-registrations");
|
|
6
|
-
const type_utils_1 = require("../utils/type-utils");
|
|
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
|
|
@@ -34,7 +34,7 @@ class StoredEvent {
|
|
|
34
34
|
newEvent._createdAt = occurredAt;
|
|
35
35
|
newEvent._aggregateRootName = aggregateRootName;
|
|
36
36
|
const eventName = (0, domain_event_registrations_1.getEventName)(payload);
|
|
37
|
-
if (!(0,
|
|
37
|
+
if (!(0, es_toolkit_1.isNil)(eventName)) {
|
|
38
38
|
newEvent._payload = (0, class_transformer_1.instanceToPlain)(payload);
|
|
39
39
|
newEvent._eventName = eventName;
|
|
40
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stored-event.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/storage/stored-event.ts"],"names":[],"mappings":";;;AAAA,yDAAkE;
|
|
1
|
+
{"version":3,"file":"stored-event.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/storage/stored-event.ts"],"names":[],"mappings":";;;AAAA,yDAAkE;AAClE,2CAAmC;AAGnC,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,CAAC;YACpB,QAAQ,CAAC,QAAQ,GAAG,IAAA,mCAAe,EAAC,OAAO,CAAC,CAAC;YAC7C,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC;QACpC,CAAC;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;IAED,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED,IAAI,iBAAiB;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,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,EAAE;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAEM,YAAY,CAAI,YAAsB;QACzC,OAAO,IAAA,gCAAY,EAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;CACJ;AAvGD,kCAuGC"}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.hasAllValues = hasAllValues;
|
|
4
|
-
|
|
4
|
+
const es_toolkit_1 = require("es-toolkit");
|
|
5
5
|
function hasAllValues(toCheck) {
|
|
6
|
-
return toCheck.every((item) => !isNil(item));
|
|
7
|
-
}
|
|
8
|
-
function isNil(toCheck) {
|
|
9
|
-
return toCheck === null || toCheck === undefined;
|
|
6
|
+
return toCheck.every((item) => !(0, es_toolkit_1.isNil)(item));
|
|
10
7
|
}
|
|
11
8
|
//# 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":";;AAEA,oCAEC;AAJD,2CAAmC;AAEnC,SAAgB,YAAY,CAAI,OAAoC;IAChE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAA,kBAAK,EAAC,IAAI,CAAC,CAAC,CAAC;AACjD,CAAC"}
|