@tsed/event-emitter 7.28.0 → 7.29.1

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsed/event-emitter",
3
- "version": "7.28.0",
3
+ "version": "7.29.1",
4
4
  "description": "EventEmitter package for Ts.ED framework",
5
5
  "source": "./src/index.ts",
6
6
  "main": "./lib/cjs/index.js",
@@ -25,11 +25,11 @@
25
25
  },
26
26
  "private": false,
27
27
  "devDependencies": {
28
- "@tsed/common": "7.28.0",
29
- "@tsed/core": "7.28.0",
30
- "@tsed/di": "7.28.0",
31
- "@tsed/eslint": "7.28.0",
32
- "@tsed/typescript": "7.28.0",
28
+ "@tsed/common": "7.29.1",
29
+ "@tsed/core": "7.29.1",
30
+ "@tsed/di": "7.29.1",
31
+ "@tsed/eslint": "7.29.1",
32
+ "@tsed/typescript": "7.29.1",
33
33
  "eslint": "^8.12.0",
34
34
  "eventemitter2": "^6.4.4"
35
35
  },
@@ -7,7 +7,7 @@ import {EventEmitterService} from "./services/EventEmitterFactory";
7
7
  @Module()
8
8
  export class EventEmitterModule {
9
9
  @Constant("eventEmitter.disableSummary", false)
10
- disableSummary: boolean;
10
+ private disableSummary: boolean;
11
11
 
12
12
  @Inject()
13
13
  protected logger: Logger;
@@ -21,10 +21,15 @@ export class EventEmitterModule {
21
21
  @Constant("eventEmitter.enabled", false)
22
22
  private loadEventEmitter: boolean;
23
23
 
24
- async $afterListen(): Promise<any> {
24
+ $onInit() {
25
+ if (this.loadEventEmitter) {
26
+ const providers = this.injector.getProviders();
27
+ providers.forEach((provider) => this.bindEventListeners(provider));
28
+ }
29
+ }
30
+
31
+ $onReady() {
25
32
  if (this.loadEventEmitter) {
26
- const providers = this.getProviders();
27
- providers.forEach((provider) => this.addEventListenerForProvider(provider));
28
33
  if (!this.disableSummary) {
29
34
  this.printEvents();
30
35
  }
@@ -37,6 +42,7 @@ export class EventEmitterModule {
37
42
  public printEvents() {
38
43
  const list = this.eventEmitter.eventNames().map((eventName) => {
39
44
  const listenerCount = this.eventEmitter.listenerCount(eventName).toString();
45
+
40
46
  return {
41
47
  eventName,
42
48
  listenerCount
@@ -56,28 +62,33 @@ export class EventEmitterModule {
56
62
  this.logger.info("\n" + str.trim());
57
63
  }
58
64
 
59
- protected getProviders(): Provider<any>[] {
60
- return Array.from(this.injector.getProviders());
65
+ private bindEventListeners(provider: Provider<any>) {
66
+ this.bindOn(provider);
67
+ this.bindOnAny(provider);
61
68
  }
62
69
 
63
- private addEventListenerForProvider(provider: Provider<any>) {
64
- const store = provider.store.get<EventEmitterStore | undefined>("eventEmitter");
70
+ private getListener(provider: Provider<any>, propertyKey: string) {
71
+ const instance = this.injector.get(provider.token);
72
+ return instance[propertyKey].bind(instance) as ListenerFn;
73
+ }
65
74
 
66
- const eventListenerDefinitions = Object.entries(store?.onEvent || {});
75
+ private bindOn(provider: Provider) {
76
+ const store = provider.store.get<EventEmitterStore | undefined>("eventEmitter");
67
77
 
68
- for (const [propertyKey, {event, options}] of eventListenerDefinitions) {
69
- const instance = this.injector.get(provider.token);
78
+ Object.entries(store?.onEvent || {}).forEach(([propertyKey, {event, options}]) => {
79
+ const listenerFn = this.getListener(provider, propertyKey);
70
80
 
71
- const listenerFn: ListenerFn = instance[propertyKey].bind(instance) as ListenerFn;
72
81
  this.eventEmitter.on(event, listenerFn, options);
73
- }
82
+ });
83
+ }
74
84
 
75
- const anyEventListenerDefinitions = Object.keys(store?.onAny || {});
76
- for (const propertyKey of anyEventListenerDefinitions) {
77
- const instance = this.injector.get(provider.token);
85
+ private bindOnAny(provider: Provider) {
86
+ const store = provider.store.get<EventEmitterStore | undefined>("eventEmitter");
87
+
88
+ Object.keys(store?.onAny || {}).forEach((propertyKey) => {
89
+ const listenerFn = this.getListener(provider, propertyKey);
78
90
 
79
- const listenerFn: ListenerFn = instance[propertyKey].bind(instance) as ListenerFn;
80
91
  this.eventEmitter.onAny(listenerFn);
81
- }
92
+ });
82
93
  }
83
94
  }