@koalarx/nest 1.13.2 → 1.14.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.
@@ -1,5 +1,8 @@
1
+ import { Type } from '@nestjs/common';
1
2
  import { EventClass } from './event-class';
2
- export declare abstract class EventHandlerBase<TEvent extends EventClass<any>> {
3
+ export declare abstract class EventHandlerBase {
4
+ readonly event: Type<EventClass>;
5
+ constructor(event: Type<EventClass>);
3
6
  setupSubscriptions(): void;
4
- abstract handleEvent(event: TEvent): Promise<void>;
7
+ abstract handleEvent(event: typeof this.event): Promise<void>;
5
8
  }
@@ -3,8 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EventHandlerBase = void 0;
4
4
  const event_queue_1 = require("./event-queue");
5
5
  class EventHandlerBase {
6
+ event;
7
+ constructor(event) {
8
+ this.event = event;
9
+ }
6
10
  setupSubscriptions() {
7
- event_queue_1.EventQueue.register(this.handleEvent.bind(this), this.constructor.name);
11
+ event_queue_1.EventQueue.register(this.handleEvent.bind(this), this.constructor.name, this.event.name);
8
12
  }
9
13
  }
10
14
  exports.EventHandlerBase = EventHandlerBase;
@@ -6,7 +6,7 @@ export declare abstract class EventJob<TEntity> {
6
6
  _id: `${string}-${string}-${string}-${string}-${string}`;
7
7
  private _eventQueue;
8
8
  constructor();
9
- abstract defineHandlers(): Array<Type<EventHandlerBase<any>>>;
9
+ abstract defineHandlers(): Array<Type<EventHandlerBase>>;
10
10
  get eventQueue(): EventQueue[];
11
11
  clearQueue(): void;
12
12
  addEvent(event: EventClass<TEntity>): void;
@@ -6,7 +6,7 @@ export declare class EventQueue {
6
6
  private static markedAggregates;
7
7
  static markAggregateForDispatch(aggregate: EventJob<any>): void;
8
8
  static dispatchEventsForAggregate(id: IComparableId): void;
9
- static register(callback: EventJobCallback, eventClassName: string): void;
9
+ static register(callback: EventJobCallback, handlerClassName: string, eventClassName: string): void;
10
10
  static clearHandlers(): void;
11
11
  static clearMarkedAggregates(): void;
12
12
  private static dispatchAggregateEvents;
@@ -18,12 +18,15 @@ class EventQueue {
18
18
  this.removeAggregateFromMarkedDispatchList(aggregate);
19
19
  }
20
20
  }
21
- static register(callback, eventClassName) {
22
- const wasEventRegisteredBefore = eventClassName in this.handlersMap;
21
+ static register(callback, handlerClassName, eventClassName) {
22
+ const wasEventRegisteredBefore = handlerClassName in this.handlersMap;
23
23
  if (!wasEventRegisteredBefore) {
24
- this.handlersMap[eventClassName] = [];
24
+ this.handlersMap[handlerClassName] = [];
25
25
  }
26
- this.handlersMap[eventClassName].push(callback);
26
+ this.handlersMap[handlerClassName].push({
27
+ eventClassName,
28
+ callback,
29
+ });
27
30
  }
28
31
  static clearHandlers() {
29
32
  this.handlersMap = {};
@@ -50,7 +53,9 @@ class EventQueue {
50
53
  if (isEventRegistered) {
51
54
  const handlers = this.handlersMap[eventHandler];
52
55
  for (const handler of handlers) {
53
- handler(event);
56
+ if (event.constructor.name === handler.eventClassName) {
57
+ handler.callback(event);
58
+ }
54
59
  }
55
60
  }
56
61
  }
@@ -219,7 +219,7 @@ class RepositoryBase {
219
219
  Object.keys(entity)
220
220
  .filter((key) => key === 'id' || key.includes('Id'))
221
221
  .forEach((key) => (where[key] = entity[key]));
222
- return client[(0, KlString_1.toCamelCase)(entity.constructor.name)].remove({ where });
222
+ return client[(0, KlString_1.toCamelCase)(entity.constructor.name)].delete({ where });
223
223
  }
224
224
  getIdPropName() {
225
225
  return Reflect.getMetadata('entity:id', this._modelName.prototype) ?? 'id';
@@ -28,7 +28,7 @@ interface ApiDocConfig {
28
28
  authorizations?: boolean | ApiDocAuthorizationConfig[];
29
29
  }
30
30
  type CronJobClass = string | symbol | Function | Type<CronJobHandlerBase>;
31
- type EventJobClass = string | symbol | Function | Type<EventHandlerBase<any>>;
31
+ type EventJobClass = string | symbol | Function | Type<EventHandlerBase>;
32
32
  export declare class KoalaApp {
33
33
  private readonly app;
34
34
  private _globalExceptionFilter;
@@ -9,7 +9,7 @@ interface KoalaNestModuleConfig {
9
9
  controllers?: Type<any>[];
10
10
  healthCheck?: Type<any>;
11
11
  cronJobs?: Type<CronJobHandlerBase>[];
12
- eventJobs?: Type<EventHandlerBase<any>>[];
12
+ eventJobs?: Type<EventHandlerBase>[];
13
13
  }
14
14
  export declare class KoalaNestModule {
15
15
  static register(config?: KoalaNestModuleConfig): DynamicModule;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koalarx/nest",
3
- "version": "1.13.2",
3
+ "version": "1.14.0",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",