@tsed/event-emitter 7.27.2 → 7.29.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/jest.config.js +1 -1
- package/lib/cjs/EventEmitterModule.js +24 -16
- package/lib/cjs/EventEmitterModule.js.map +1 -1
- package/lib/esm/EventEmitterModule.js +24 -16
- package/lib/esm/EventEmitterModule.js.map +1 -1
- package/lib/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types/EventEmitterModule.d.ts +8 -5
- package/package.json +6 -6
- package/src/EventEmitterModule.ts +29 -18
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tsed/event-emitter",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.29.0",
|
|
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.
|
|
29
|
-
"@tsed/core": "7.
|
|
30
|
-
"@tsed/di": "7.
|
|
31
|
-
"@tsed/eslint": "7.
|
|
32
|
-
"@tsed/typescript": "7.
|
|
28
|
+
"@tsed/common": "7.29.0",
|
|
29
|
+
"@tsed/core": "7.29.0",
|
|
30
|
+
"@tsed/di": "7.29.0",
|
|
31
|
+
"@tsed/eslint": "7.29.0",
|
|
32
|
+
"@tsed/typescript": "7.29.0",
|
|
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
|
-
|
|
24
|
+
$onInit() {
|
|
25
|
+
if (this.loadEventEmitter) {
|
|
26
|
+
const providers = this.injector.getProviders();
|
|
27
|
+
providers.forEach((provider) => this.bindEventListeners(provider));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
async $onReady(): Promise<any> {
|
|
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
|
-
|
|
60
|
-
|
|
65
|
+
private bindEventListeners(provider: Provider<any>) {
|
|
66
|
+
this.bindOn(provider);
|
|
67
|
+
this.bindOnAny(provider);
|
|
61
68
|
}
|
|
62
69
|
|
|
63
|
-
private
|
|
64
|
-
const
|
|
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
|
-
|
|
75
|
+
private bindOn(provider: Provider) {
|
|
76
|
+
const store = provider.store.get<EventEmitterStore | undefined>("eventEmitter");
|
|
67
77
|
|
|
68
|
-
|
|
69
|
-
const
|
|
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
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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
|
}
|