@nestjs/cqrs 8.0.1 → 8.0.2

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.
@@ -2,5 +2,6 @@ export declare const COMMAND_METADATA = "__command__";
2
2
  export declare const COMMAND_HANDLER_METADATA = "__commandHandler__";
3
3
  export declare const QUERY_METADATA = "__query__";
4
4
  export declare const QUERY_HANDLER_METADATA = "__queryHandler__";
5
+ export declare const EVENT_METADATA = "__event__";
5
6
  export declare const EVENTS_HANDLER_METADATA = "__eventsHandler__";
6
7
  export declare const SAGA_METADATA = "__saga__";
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SAGA_METADATA = exports.EVENTS_HANDLER_METADATA = exports.QUERY_HANDLER_METADATA = exports.QUERY_METADATA = exports.COMMAND_HANDLER_METADATA = exports.COMMAND_METADATA = void 0;
3
+ exports.SAGA_METADATA = exports.EVENTS_HANDLER_METADATA = exports.EVENT_METADATA = exports.QUERY_HANDLER_METADATA = exports.QUERY_METADATA = exports.COMMAND_HANDLER_METADATA = exports.COMMAND_METADATA = void 0;
4
4
  exports.COMMAND_METADATA = '__command__';
5
5
  exports.COMMAND_HANDLER_METADATA = '__commandHandler__';
6
6
  exports.QUERY_METADATA = '__query__';
7
7
  exports.QUERY_HANDLER_METADATA = '__queryHandler__';
8
+ exports.EVENT_METADATA = '__event__';
8
9
  exports.EVENTS_HANDLER_METADATA = '__eventsHandler__';
9
10
  exports.SAGA_METADATA = '__saga__';
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EventsHandler = void 0;
4
4
  require("reflect-metadata");
5
5
  const constants_1 = require("./constants");
6
+ const uuid_1 = require("uuid");
6
7
  /**
7
8
  * Decorator that marks a class as a Nest event handler. An event handler
8
9
  * handles events executed by your application code.
@@ -15,6 +16,11 @@ const constants_1 = require("./constants");
15
16
  */
16
17
  const EventsHandler = (...events) => {
17
18
  return (target) => {
19
+ events.forEach((event) => {
20
+ if (!Reflect.hasMetadata(constants_1.EVENT_METADATA, event)) {
21
+ Reflect.defineMetadata(constants_1.EVENT_METADATA, { id: (0, uuid_1.v4)() }, event);
22
+ }
23
+ });
18
24
  Reflect.defineMetadata(constants_1.EVENTS_HANDLER_METADATA, events, target);
19
25
  };
20
26
  };
@@ -8,7 +8,7 @@ export declare type EventHandlerType<EventBase extends IEvent = IEvent> = Type<I
8
8
  export declare class EventBus<EventBase extends IEvent = IEvent> extends ObservableBus<EventBase> implements IEventBus<EventBase>, OnModuleDestroy {
9
9
  private readonly commandBus;
10
10
  private readonly moduleRef;
11
- protected getEventName: (event: EventBase) => string;
11
+ protected getEventId: (event: EventBase) => string;
12
12
  protected readonly subscriptions: Subscription[];
13
13
  private _publisher;
14
14
  constructor(commandBus: CommandBus, moduleRef: ModuleRef);
@@ -17,12 +17,12 @@ export declare class EventBus<EventBase extends IEvent = IEvent> extends Observa
17
17
  onModuleDestroy(): void;
18
18
  publish<T extends EventBase>(event: T): any;
19
19
  publishAll<T extends EventBase>(events: T[]): any;
20
- bind(handler: IEventHandler<EventBase>, name: string): void;
20
+ bind(handler: IEventHandler<EventBase>, id: string): void;
21
21
  registerSagas(types?: Type<unknown>[]): void;
22
22
  register(handlers?: EventHandlerType<EventBase>[]): void;
23
23
  protected registerHandler(handler: EventHandlerType<EventBase>): void;
24
- protected ofEventName(name: string): Observable<EventBase>;
24
+ protected ofEventId(name: string): Observable<EventBase>;
25
25
  protected registerSaga(saga: ISaga<EventBase>): void;
26
- private reflectEventsNames;
26
+ private reflectEvents;
27
27
  private useDefaultPublisher;
28
28
  }
package/dist/event-bus.js CHANGED
@@ -18,7 +18,7 @@ const util_1 = require("util");
18
18
  const command_bus_1 = require("./command-bus");
19
19
  const constants_1 = require("./decorators/constants");
20
20
  const exceptions_1 = require("./exceptions");
21
- const default_get_event_name_1 = require("./helpers/default-get-event-name");
21
+ const default_get_event_id_1 = require("./helpers/default-get-event-id");
22
22
  const default_pubsub_1 = require("./helpers/default-pubsub");
23
23
  const utils_1 = require("./utils");
24
24
  let EventBus = class EventBus extends utils_1.ObservableBus {
@@ -27,7 +27,7 @@ let EventBus = class EventBus extends utils_1.ObservableBus {
27
27
  this.commandBus = commandBus;
28
28
  this.moduleRef = moduleRef;
29
29
  this.subscriptions = [];
30
- this.getEventName = default_get_event_name_1.defaultGetEventName;
30
+ this.getEventId = default_get_event_id_1.defaultGetEventId;
31
31
  this.useDefaultPublisher();
32
32
  }
33
33
  get publisher() {
@@ -48,8 +48,8 @@ let EventBus = class EventBus extends utils_1.ObservableBus {
48
48
  }
49
49
  return (events || []).map((event) => this._publisher.publish(event));
50
50
  }
51
- bind(handler, name) {
52
- const stream$ = name ? this.ofEventName(name) : this.subject$;
51
+ bind(handler, id) {
52
+ const stream$ = id ? this.ofEventId(id) : this.subject$;
53
53
  const subscription = stream$.subscribe((event) => handler.handle(event));
54
54
  this.subscriptions.push(subscription);
55
55
  }
@@ -74,11 +74,11 @@ let EventBus = class EventBus extends utils_1.ObservableBus {
74
74
  if (!instance) {
75
75
  return;
76
76
  }
77
- const eventsNames = this.reflectEventsNames(handler);
78
- eventsNames.map((event) => this.bind(instance, event.name));
77
+ const events = this.reflectEvents(handler);
78
+ events.map((event) => this.bind(instance, (0, default_get_event_id_1.defaultReflectEventId)(event)));
79
79
  }
80
- ofEventName(name) {
81
- return this.subject$.pipe((0, operators_1.filter)((event) => this.getEventName(event) === name));
80
+ ofEventId(name) {
81
+ return this.subject$.pipe((0, operators_1.filter)((event) => this.getEventId(event) === name));
82
82
  }
83
83
  registerSaga(saga) {
84
84
  if (!(0, util_1.isFunction)(saga)) {
@@ -93,7 +93,7 @@ let EventBus = class EventBus extends utils_1.ObservableBus {
93
93
  .subscribe((command) => this.commandBus.execute(command));
94
94
  this.subscriptions.push(subscription);
95
95
  }
96
- reflectEventsNames(handler) {
96
+ reflectEvents(handler) {
97
97
  return Reflect.getMetadata(constants_1.EVENTS_HANDLER_METADATA, handler);
98
98
  }
99
99
  useDefaultPublisher() {
@@ -0,0 +1,4 @@
1
+ import { IEvent } from '../interfaces';
2
+ import { Type } from '@nestjs/common';
3
+ export declare const defaultGetEventId: <EventBase extends IEvent = IEvent>(event: EventBase) => string;
4
+ export declare const defaultReflectEventId: <EventBase extends Type<IEvent> = Type<IEvent>>(event: EventBase) => string;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultReflectEventId = exports.defaultGetEventId = void 0;
4
+ const constants_1 = require("../decorators/constants");
5
+ const defaultGetEventId = (event) => {
6
+ const { constructor } = Object.getPrototypeOf(event);
7
+ return Reflect.getMetadata(constants_1.EVENT_METADATA, constructor).id;
8
+ };
9
+ exports.defaultGetEventId = defaultGetEventId;
10
+ const defaultReflectEventId = (event) => {
11
+ return Reflect.getMetadata(constants_1.EVENT_METADATA, event).id;
12
+ };
13
+ exports.defaultReflectEventId = defaultReflectEventId;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nestjs/cqrs",
3
- "version": "8.0.1",
3
+ "version": "8.0.2",
4
4
  "description": "A lightweight CQRS module for Nest framework (node.js)",
5
5
  "license": "MIT",
6
6
  "url": "https://github.com/nestjs/cqrs#readme",
@@ -20,26 +20,26 @@
20
20
  "uuid": "8.3.2"
21
21
  },
22
22
  "devDependencies": {
23
- "@commitlint/cli": "15.0.0",
24
- "@commitlint/config-angular": "15.0.0",
25
- "@nestjs/common": "8.2.3",
26
- "@nestjs/core": "8.2.3",
27
- "@types/node": "16.11.12",
28
- "@types/jest": "27.0.3",
29
- "@typescript-eslint/eslint-plugin": "5.6.0",
30
- "@typescript-eslint/parser": "5.6.0",
31
- "eslint": "8.4.1",
23
+ "@commitlint/cli": "16.2.1",
24
+ "@commitlint/config-angular": "16.2.1",
25
+ "@nestjs/common": "8.3.0",
26
+ "@nestjs/core": "8.3.0",
27
+ "@types/node": "16.11.24",
28
+ "@types/jest": "27.4.0",
29
+ "@typescript-eslint/eslint-plugin": "5.11.0",
30
+ "@typescript-eslint/parser": "5.11.0",
31
+ "eslint": "8.9.0",
32
32
  "eslint-config-prettier": "8.3.0",
33
- "eslint-plugin-import": "2.25.3",
33
+ "eslint-plugin-import": "2.25.4",
34
34
  "husky": "7.0.4",
35
- "jest": "27.4.3",
36
- "lint-staged": "12.1.2",
35
+ "jest": "27.5.1",
36
+ "lint-staged": "12.3.4",
37
37
  "prettier": "2.5.1",
38
38
  "reflect-metadata": "0.1.13",
39
- "release-it": "14.11.8",
40
- "rxjs": "7.4.0",
41
- "ts-jest": "27.1.1",
42
- "typescript": "4.5.2"
39
+ "release-it": "14.12.4",
40
+ "rxjs": "7.5.4",
41
+ "ts-jest": "27.1.3",
42
+ "typescript": "4.5.5"
43
43
  },
44
44
  "peerDependencies": {
45
45
  "@nestjs/common": "^8.0.0",