@event-nest/core 1.1.1 → 1.3.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.
Files changed (36) hide show
  1. package/README.md +5 -4
  2. package/package.json +1 -1
  3. package/src/index.d.ts +4 -4
  4. package/src/index.js +4 -4
  5. package/src/index.js.map +1 -1
  6. package/src/lib/{aggregate-root-aware-event.d.ts → aggregate-root/aggregate-root-event.d.ts} +1 -1
  7. package/src/lib/{aggregate-root-aware-event.js → aggregate-root/aggregate-root-event.js} +1 -1
  8. package/src/lib/aggregate-root/aggregate-root-event.js.map +1 -0
  9. package/src/lib/{aggregate-root-name.js → aggregate-root/aggregate-root-name.js} +1 -1
  10. package/src/lib/aggregate-root/aggregate-root-name.js.map +1 -0
  11. package/src/lib/{aggregate-root.d.ts → aggregate-root/aggregate-root.d.ts} +4 -4
  12. package/src/lib/{aggregate-root.js → aggregate-root/aggregate-root.js} +4 -4
  13. package/src/lib/aggregate-root/aggregate-root.js.map +1 -0
  14. package/src/lib/{event-processor.js → aggregate-root/event-processor.js} +1 -1
  15. package/src/lib/aggregate-root/event-processor.js.map +1 -0
  16. package/src/lib/core-module-options.d.ts +1 -1
  17. package/src/lib/domain-event-emitter.d.ts +6 -6
  18. package/src/lib/domain-event-emitter.js +22 -9
  19. package/src/lib/domain-event-emitter.js.map +1 -1
  20. package/src/lib/exceptions/unknown-event-version-exception.d.ts +3 -0
  21. package/src/lib/exceptions/unknown-event-version-exception.js +10 -0
  22. package/src/lib/exceptions/unknown-event-version-exception.js.map +1 -0
  23. package/src/lib/on-domain-event.d.ts +3 -3
  24. package/src/lib/published-domain-event.d.ts +11 -0
  25. package/src/lib/published-domain-event.js +3 -0
  26. package/src/lib/published-domain-event.js.map +1 -0
  27. package/src/lib/storage/abstract-event-store.d.ts +1 -1
  28. package/src/lib/storage/abstract-event-store.js +20 -6
  29. package/src/lib/storage/abstract-event-store.js.map +1 -1
  30. package/src/lib/storage/event-store.d.ts +1 -1
  31. package/src/lib/aggregate-root-aware-event.js.map +0 -1
  32. package/src/lib/aggregate-root-name.js.map +0 -1
  33. package/src/lib/aggregate-root.js.map +0 -1
  34. package/src/lib/event-processor.js.map +0 -1
  35. /package/src/lib/{aggregate-root-name.d.ts → aggregate-root/aggregate-root-name.d.ts} +0 -0
  36. /package/src/lib/{event-processor.d.ts → aggregate-root/event-processor.d.ts} +0 -0
package/README.md CHANGED
@@ -231,14 +231,15 @@ To achieve this, you can implement a service decorated with the `@DomainEventSub
231
231
  To ensure that the method is implemented correctly, you can use the `OnDomainEvent` interface.
232
232
 
233
233
  #### Example
234
+
234
235
  ```typescript
235
- import { AggregateRootAwareEvent, DomainEventSubscription, OnDomainEvent } from "@event-nest/core";
236
+ import { PublishedDomainEvent, DomainEventSubscription, OnDomainEvent } from "@event-nest/core";
236
237
 
237
238
  @Injectable()
238
239
  @DomainEventSubscription(UserCreatedEvent, UserUpdatedEvent)
239
240
  export class UserEventSubscription implements OnDomainEvent<UserCreatedEvent | UserUpdatedEvent> {
240
241
 
241
- onDomainEvent(event: AggregateRootAwareEvent<UserCreatedEvent | UserUpdatedEvent>): Promise<unknown> {
242
+ onDomainEvent(event: PublishedDomainEvent<UserCreatedEvent | UserUpdatedEvent>): Promise<unknown> {
242
243
  //Here you can create/update your read model based on the event and your custom logic.
243
244
  return Promise.resolve(undefined);
244
245
  }
@@ -246,7 +247,7 @@ export class UserEventSubscription implements OnDomainEvent<UserCreatedEvent | U
246
247
  }
247
248
  ```
248
249
 
249
- If there are multiple subscription services for the same event, they will be executed in parallel.
250
+ If there are multiple subscription services for the same event, they will be executed concurrently.
250
251
  However, if there are multiple events that the service is subscribed to, they will be executed sequentially based on the order they were emitted.
251
252
 
252
253
  This is the default behaviour because there are cases where the logic may depend on the completion of the previous event. If you want better performance
@@ -259,7 +260,7 @@ and your logic doesn't depend on the order of the events, you can change this se
259
260
  connectionUri: "mongodb://localhost:27017/example",
260
261
  aggregatesCollection: "aggregates-collection",
261
262
  eventsCollection: "events-collection",
262
- runParallelSubscriptions:true
263
+ concurrentSubscriptions:true
263
264
  })
264
265
  ]
265
266
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@event-nest/core",
3
- "version": "1.1.1",
3
+ "version": "1.3.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.",
package/src/index.d.ts CHANGED
@@ -1,12 +1,12 @@
1
+ export * from "./lib/aggregate-root/aggregate-root";
2
+ export * from "./lib/aggregate-root/aggregate-root-name";
3
+ export * from "./lib/aggregate-root/event-processor";
1
4
  export * from "./lib/exceptions/event-name-conflict-exception";
2
5
  export * from "./lib/exceptions/unknown-event-exception";
3
6
  export * from "./lib/exceptions/missing-aggregate-root-name-exception";
4
- export * from "./lib/event-processor";
5
7
  export * from "./lib/domain-event";
8
+ export * from "./lib/published-domain-event";
6
9
  export * from "./lib/domain-event-subscription";
7
- export * from "./lib/aggregate-root";
8
- export * from "./lib/aggregate-root-name";
9
- export * from "./lib/aggregate-root-aware-event";
10
10
  export * from "./lib/on-domain-event";
11
11
  export * from "./lib/domain-event-emitter";
12
12
  export * from "./lib/core-module-options";
package/src/index.js CHANGED
@@ -1,15 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./lib/aggregate-root/aggregate-root"), exports);
5
+ tslib_1.__exportStar(require("./lib/aggregate-root/aggregate-root-name"), exports);
6
+ tslib_1.__exportStar(require("./lib/aggregate-root/event-processor"), exports);
4
7
  tslib_1.__exportStar(require("./lib/exceptions/event-name-conflict-exception"), exports);
5
8
  tslib_1.__exportStar(require("./lib/exceptions/unknown-event-exception"), exports);
6
9
  tslib_1.__exportStar(require("./lib/exceptions/missing-aggregate-root-name-exception"), exports);
7
- tslib_1.__exportStar(require("./lib/event-processor"), exports);
8
10
  tslib_1.__exportStar(require("./lib/domain-event"), exports);
11
+ tslib_1.__exportStar(require("./lib/published-domain-event"), exports);
9
12
  tslib_1.__exportStar(require("./lib/domain-event-subscription"), exports);
10
- tslib_1.__exportStar(require("./lib/aggregate-root"), exports);
11
- tslib_1.__exportStar(require("./lib/aggregate-root-name"), exports);
12
- tslib_1.__exportStar(require("./lib/aggregate-root-aware-event"), exports);
13
13
  tslib_1.__exportStar(require("./lib/on-domain-event"), exports);
14
14
  tslib_1.__exportStar(require("./lib/domain-event-emitter"), exports);
15
15
  tslib_1.__exportStar(require("./lib/core-module-options"), 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,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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/core/src/index.ts"],"names":[],"mappings":";;;AAAA,8EAAoD;AACpD,mFAAyD;AACzD,+EAAqD;AAErD,yFAA+D;AAC/D,mFAAyD;AACzD,iGAAuE;AAEvE,6DAAmC;AACnC,uEAA6C;AAC7C,0EAAgD;AAEhD,gEAAsC;AACtC,qEAA2C;AAC3C,oEAA0C;AAE1C,qEAA2C;AAC3C,8EAAoD;AACpD,6EAAmD;AACnD,oEAA0C;AAE1C,iEAAuC"}
@@ -1,4 +1,4 @@
1
- export interface AggregateRootAwareEvent<T> {
1
+ export interface AggregateRootEvent<T> {
2
2
  /**
3
3
  * The unique id of the aggregate root that published the event
4
4
  */
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=aggregate-root-aware-event.js.map
3
+ //# sourceMappingURL=aggregate-root-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate-root-event.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/aggregate-root/aggregate-root-event.ts"],"names":[],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getAggregateRootName = exports.AggregateRootName = void 0;
4
- const metadata_keys_1 = require("./metadata-keys");
4
+ const metadata_keys_1 = require("../metadata-keys");
5
5
  /**
6
6
  * A decorator to mark an aggregate root class with a unique name. The name will
7
7
  * be saved with each event in the database.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate-root-name.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/aggregate-root/aggregate-root-name.ts"],"names":[],"mappings":";;;AAAA,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;AAFD,oDAEC"}
@@ -1,6 +1,6 @@
1
1
  import { Logger } from "@nestjs/common";
2
- import { StoredEvent } from "./storage/stored-event";
3
- import { AggregateRootAwareEvent } from "./aggregate-root-aware-event";
2
+ import { StoredEvent } from "../storage/stored-event";
3
+ import { AggregateRootEvent } from "./aggregate-root-event";
4
4
  export declare abstract class AggregateRoot {
5
5
  private readonly _id;
6
6
  private _appendedEvents;
@@ -22,7 +22,7 @@ export declare abstract class AggregateRoot {
22
22
  * If a publisher is not connected, the method will return a rejected promise.
23
23
  * @param events The events to be published
24
24
  */
25
- publish(events: Array<AggregateRootAwareEvent<object>>): Promise<Array<StoredEvent>>;
25
+ publish(events: Array<AggregateRootEvent<object>>): Promise<Array<StoredEvent>>;
26
26
  /**
27
27
  * All the events that have been previously appended will be committed once this method runs. After publishing,
28
28
  * the appended events will be deleted so that the next commit publishes newer events.
@@ -40,7 +40,7 @@ export declare abstract class AggregateRoot {
40
40
  /**
41
41
  * Returns a clone array of all the currently appended events of the entity.
42
42
  */
43
- get appendedEvents(): Array<AggregateRootAwareEvent<object>>;
43
+ get appendedEvents(): Array<AggregateRootEvent<object>>;
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
46
  * method will trigger all the matching {@link EventProcessor} functions of the entity to populate the object based on
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AggregateRoot = void 0;
4
4
  const common_1 = require("@nestjs/common");
5
5
  const event_processor_1 = require("./event-processor");
6
- const unknown_event_exception_1 = require("./exceptions/unknown-event-exception");
7
- const type_utils_1 = require("./utils/type-utils");
8
- const unregistered_event_exception_1 = require("./exceptions/unregistered-event-exception");
9
- const domain_event_registrations_1 = require("./domain-event-registrations");
6
+ const unknown_event_exception_1 = require("../exceptions/unknown-event-exception");
7
+ const type_utils_1 = require("../utils/type-utils");
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;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate-root.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/aggregate-root/aggregate-root.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EventProcessor = exports.getDecoratedPropertyKey = void 0;
4
4
  require("reflect-metadata");
5
- const metadata_keys_1 = require("./metadata-keys");
5
+ const metadata_keys_1 = require("../metadata-keys");
6
6
  function getDecoratedPropertyKey(entity, eventClass) {
7
7
  const metadataKeys = Reflect.getMetadataKeys(entity);
8
8
  if (!metadataKeys || metadataKeys.length == 0) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-processor.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/aggregate-root/event-processor.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAG1B,oDAAuD;AAEvD,SAAgB,uBAAuB,CACnC,MAAqB,EACrB,UAAqC;IAErC,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE;QAC3C,OAAO,SAAS,CAAC;KACpB;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;QACd,OAAO,SAAS,CAAC;KACpB;IAED,OAAO,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC;AACxD,CAAC;AAnBD,0DAmBC;AAED;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,UAAqC;IAChE,OAAO,CAAC,cAAc,EAAE,WAAW,EAAE,EAAE;QACnC,OAAO,CAAC,cAAc,CAClB,mCAAmB,GAAG,GAAG,GAAG,WAAW,CAAC,QAAQ,EAAE,EAClD,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,EAC5C,cAAc,CACjB,CAAC;IACN,CAAC,CAAC;AACN,CAAC;AARD,wCAQC"}
@@ -7,5 +7,5 @@ export interface CoreModuleOptions {
7
7
  * you can set this to true.
8
8
  *
9
9
  */
10
- runParallelSubscriptions?: boolean;
10
+ concurrentSubscriptions?: boolean;
11
11
  }
@@ -1,14 +1,14 @@
1
1
  import { Module } from "@nestjs/core/injector/module";
2
- import { AggregateRootAwareEvent } from "./aggregate-root-aware-event";
3
2
  import { OnModuleDestroy } from "@nestjs/common";
3
+ import { PublishedDomainEvent } from "./published-domain-event";
4
4
  export declare class DomainEventEmitter implements OnModuleDestroy {
5
- private readonly _runParallelSubscriptions;
5
+ private readonly _concurrentSubscriptions;
6
6
  private readonly _handlers;
7
7
  private readonly _logger;
8
- constructor(_runParallelSubscriptions?: boolean);
9
- get runsParallelSubscriptions(): boolean;
8
+ constructor(_concurrentSubscriptions?: boolean);
9
+ get executesConcurrentSubscriptions(): boolean;
10
10
  onModuleDestroy(): void;
11
11
  bindSubscriptions(injectorModules: Map<string, Module>): void;
12
- emit(withAggregate: AggregateRootAwareEvent<object>): Promise<unknown>;
13
- emitMultiple(withAggregate: AggregateRootAwareEvent<object>[]): Promise<unknown>;
12
+ emit(withAggregate: PublishedDomainEvent<object>): Promise<unknown>;
13
+ emitMultiple(withAggregate: PublishedDomainEvent<object>[]): Promise<unknown>;
14
14
  }
@@ -6,13 +6,13 @@ const type_utils_1 = require("./utils/type-utils");
6
6
  const common_1 = require("@nestjs/common");
7
7
  const rxjs_1 = require("rxjs");
8
8
  class DomainEventEmitter {
9
- constructor(_runParallelSubscriptions = false) {
10
- this._runParallelSubscriptions = _runParallelSubscriptions;
9
+ constructor(_concurrentSubscriptions = false) {
10
+ this._concurrentSubscriptions = _concurrentSubscriptions;
11
11
  this._handlers = new Map();
12
12
  this._logger = new common_1.Logger(DomainEventEmitter.name);
13
13
  }
14
- get runsParallelSubscriptions() {
15
- return this._runParallelSubscriptions;
14
+ get executesConcurrentSubscriptions() {
15
+ return this._concurrentSubscriptions;
16
16
  }
17
17
  onModuleDestroy() {
18
18
  this._handlers.clear();
@@ -48,15 +48,28 @@ class DomainEventEmitter {
48
48
  return Promise.resolve();
49
49
  }
50
50
  const handlers = this._handlers.get(eventId);
51
- const promises = handlers.map((handler) => handler.onDomainEvent(withAggregate));
52
- return Promise.all(promises);
51
+ const withErrorHandling = handlers.map((handler) => {
52
+ return async () => {
53
+ // eslint-disable-next-line no-useless-catch
54
+ try {
55
+ const result = await handler.onDomainEvent(withAggregate);
56
+ return result;
57
+ }
58
+ catch (error) {
59
+ this._logger.error(`Error while emitting event ${withAggregate.payload.constructor.name} : ${error.message}`);
60
+ throw error;
61
+ }
62
+ };
63
+ });
64
+ return Promise.all(withErrorHandling.map((f) => f()));
53
65
  }
54
66
  emitMultiple(withAggregate) {
55
- if (this._runParallelSubscriptions) {
67
+ if (this._concurrentSubscriptions) {
56
68
  return Promise.all(withAggregate.map((aggregate) => this.emit(aggregate)));
57
69
  }
58
- const deferred = withAggregate.map((w) => (0, rxjs_1.defer)(() => (0, rxjs_1.from)(this.emit(w))));
59
- return (0, rxjs_1.firstValueFrom)((0, rxjs_1.concat)(...deferred).pipe((0, rxjs_1.last)()));
70
+ return (0, rxjs_1.lastValueFrom)((0, rxjs_1.from)(withAggregate).pipe((0, rxjs_1.concatMap)((event) => (0, rxjs_1.from)(this.emit(event))), (0, rxjs_1.toArray)())).catch((error) => {
71
+ this._logger.debug(`Error while emitting events sequentially: ${error.message}`);
72
+ });
60
73
  }
61
74
  }
62
75
  exports.DomainEventEmitter = DomainEventEmitter;
@@ -1 +1 @@
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
+ {"version":3,"file":"domain-event-emitter.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/domain-event-emitter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare class UnknownEventVersionException extends Error {
2
+ constructor(eventId: string, aggregateRootId: string);
3
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UnknownEventVersionException = void 0;
4
+ class UnknownEventVersionException extends Error {
5
+ constructor(eventId, aggregateRootId) {
6
+ super(`Unable to set version of event ${eventId} for aggregate root with id ${aggregateRootId}`);
7
+ }
8
+ }
9
+ exports.UnknownEventVersionException = UnknownEventVersionException;
10
+ //# sourceMappingURL=unknown-event-version-exception.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unknown-event-version-exception.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/exceptions/unknown-event-version-exception.ts"],"names":[],"mappings":";;;AAAA,MAAa,4BAA6B,SAAQ,KAAK;IACnD,YAAY,OAAe,EAAE,eAAuB;QAChD,KAAK,CAAC,kCAAkC,OAAO,+BAA+B,eAAe,EAAE,CAAC,CAAC;IACrG,CAAC;CACJ;AAJD,oEAIC"}
@@ -1,4 +1,4 @@
1
- import { AggregateRootAwareEvent } from "./aggregate-root-aware-event";
1
+ import { PublishedDomainEvent } from "./published-domain-event";
2
2
  /**
3
3
  * A basic interface that can be implemented by nest.js services to make sure
4
4
  * that they can be called by the {@link DomainEventEmitter} when a domain event is emitted.
@@ -7,7 +7,7 @@ import { AggregateRootAwareEvent } from "./aggregate-root-aware-event";
7
7
  export interface OnDomainEvent<T> {
8
8
  /**
9
9
  * Called by the {@link DomainEventEmitter} when a domain event is emitted.
10
- * @param event The domain event that was emitted along with the id of the aggregate root that emitted it.
10
+ * @param event The domain event that was emitted along with information about the aggregate root that emitted it.
11
11
  */
12
- onDomainEvent(event: AggregateRootAwareEvent<T>): Promise<unknown>;
12
+ onDomainEvent(event: PublishedDomainEvent<T>): Promise<unknown>;
13
13
  }
@@ -0,0 +1,11 @@
1
+ import { AggregateRootEvent } from "./aggregate-root/aggregate-root-event";
2
+ export interface PublishedDomainEvent<T> extends AggregateRootEvent<T> {
3
+ /**
4
+ * The unique id of the event
5
+ */
6
+ eventId: string;
7
+ /**
8
+ * The version of the aggregate root that published the event
9
+ */
10
+ version: number;
11
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=published-domain-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"published-domain-event.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/published-domain-event.ts"],"names":[],"mappings":""}
@@ -1,6 +1,6 @@
1
1
  import { AggregateRootClass, EventStore } from "./event-store";
2
2
  import { StoredEvent } from "./stored-event";
3
- import { AggregateRoot } from "../aggregate-root";
3
+ import { AggregateRoot } from "../aggregate-root/aggregate-root";
4
4
  import { StoredAggregateRoot } from "./stored-aggregate-root";
5
5
  import { DomainEventEmitter } from "../domain-event-emitter";
6
6
  /**
@@ -5,8 +5,9 @@ const stored_event_1 = require("./stored-event");
5
5
  const stored_aggregate_root_1 = require("./stored-aggregate-root");
6
6
  const id_generation_exception_1 = require("../exceptions/id-generation-exception");
7
7
  const type_utils_1 = require("../utils/type-utils");
8
- const aggregate_root_name_1 = require("../aggregate-root-name");
8
+ const aggregate_root_name_1 = require("../aggregate-root/aggregate-root-name");
9
9
  const missing_aggregate_root_name_exception_1 = require("../exceptions/missing-aggregate-root-name-exception");
10
+ const unknown_event_version_exception_1 = require("../exceptions/unknown-event-version-exception");
10
11
  /**
11
12
  * An abstract implementation of the {@link EventStore} interface.
12
13
  * Regardless of the database technology, all subclasses should have a common implementation
@@ -30,15 +31,28 @@ class AbstractEventStore {
30
31
  if (ids.length !== events.length || !(0, type_utils_1.hasAllValues)(ids)) {
31
32
  throw new id_generation_exception_1.IdGenerationException(ids.length, events.length);
32
33
  }
33
- const storedEvents = events.map((arAwareEvent) => {
34
+ const published = [];
35
+ const storedEvents = [];
36
+ events.forEach((event) => {
34
37
  const id = ids.pop();
35
- return stored_event_1.StoredEvent.fromPublishedEvent(id, aggregateRoot.id, aggregateRootName, arAwareEvent.payload, arAwareEvent.occurredAt);
38
+ storedEvents.push(stored_event_1.StoredEvent.fromPublishedEvent(id, aggregateRoot.id, aggregateRootName, event.payload, event.occurredAt));
39
+ published.push({
40
+ ...event,
41
+ eventId: id,
42
+ version: aggregateRoot.version
43
+ });
36
44
  });
37
45
  const toStore = new stored_aggregate_root_1.StoredAggregateRoot(aggregateRoot.id, aggregateRoot.version);
38
- return this.save(storedEvents, toStore).then((savedEvents) => {
39
- this._eventEmitter.emitMultiple(events);
40
- return Promise.resolve(savedEvents);
46
+ const saved = await this.save(storedEvents, toStore);
47
+ published.forEach((event) => {
48
+ const found = saved.find((s) => s.id === event.eventId);
49
+ if ((0, type_utils_1.isNil)(found)) {
50
+ throw new unknown_event_version_exception_1.UnknownEventVersionException(event.eventId, event.aggregateRootId);
51
+ }
52
+ event.version = found.aggregateRootVersion;
41
53
  });
54
+ this._eventEmitter.emitMultiple(published);
55
+ return saved;
42
56
  };
43
57
  return aggregateRoot;
44
58
  }
@@ -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,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"}
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,+EAA6E;AAC7E,+GAAwG;AAExG,mGAA6F;AAE7F;;;;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,MAAyC,EAAE,EAAE;YACxE,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,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;oBACd,MAAM,IAAI,8DAA4B,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;iBAChF;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,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC;QACF,OAAO,aAAa,CAAC;IACzB,CAAC;CACJ;AAnED,gDAmEC"}
@@ -1,6 +1,6 @@
1
1
  import { StoredEvent } from "./stored-event";
2
2
  import { StoredAggregateRoot } from "./stored-aggregate-root";
3
- import { AggregateRoot } from "../aggregate-root";
3
+ import { AggregateRoot } from "../aggregate-root/aggregate-root";
4
4
  export type AggregateRootClass<T> = Function & {
5
5
  prototype: T;
6
6
  };
@@ -1 +0,0 @@
1
- {"version":3,"file":"aggregate-root-aware-event.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/aggregate-root-aware-event.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"aggregate-root-name.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/aggregate-root-name.ts"],"names":[],"mappings":";;;AAAA,mDAA0D;AAE1D;;;;;;;;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;AAFD,oDAEC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"aggregate-root.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/aggregate-root.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-processor.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/event-processor.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAG1B,mDAAsD;AAEtD,SAAgB,uBAAuB,CACnC,MAAqB,EACrB,UAAqC;IAErC,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE;QAC3C,OAAO,SAAS,CAAC;KACpB;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;QACd,OAAO,SAAS,CAAC;KACpB;IAED,OAAO,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC;AACxD,CAAC;AAnBD,0DAmBC;AAED;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,UAAqC;IAChE,OAAO,CAAC,cAAc,EAAE,WAAW,EAAE,EAAE;QACnC,OAAO,CAAC,cAAc,CAClB,mCAAmB,GAAG,GAAG,GAAG,WAAW,CAAC,QAAQ,EAAE,EAClD,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,EAC5C,cAAc,CACjB,CAAC;IACN,CAAC,CAAC;AACN,CAAC;AARD,wCAQC"}