@tsed/event-emitter 6.88.0 → 6.91.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/lib/{EventEmitterModule.d.ts → cjs/EventEmitterModule.d.ts} +0 -0
- package/lib/{EventEmitterModule.js → cjs/EventEmitterModule.js} +17 -17
- package/lib/cjs/EventEmitterModule.js.map +1 -0
- package/lib/{decorators → cjs/decorators}/index.d.ts +0 -0
- package/lib/cjs/decorators/index.js +6 -0
- package/lib/cjs/decorators/index.js.map +1 -0
- package/lib/{decorators → cjs/decorators}/onAny.d.ts +0 -0
- package/lib/{decorators → cjs/decorators}/onAny.js +0 -0
- package/lib/cjs/decorators/onAny.js.map +1 -0
- package/lib/{decorators → cjs/decorators}/onEvent.d.ts +0 -0
- package/lib/{decorators → cjs/decorators}/onEvent.js +0 -0
- package/lib/cjs/decorators/onEvent.js.map +1 -0
- package/lib/{index.d.ts → cjs/index.d.ts} +0 -0
- package/lib/cjs/index.js +7 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/{interfaces → cjs/interfaces}/EventEmitterStore.d.ts +0 -0
- package/lib/{interfaces → cjs/interfaces}/EventEmitterStore.js +0 -0
- package/lib/cjs/interfaces/EventEmitterStore.js.map +1 -0
- package/lib/{services → cjs/services}/EventEmitterFactory.d.ts +0 -0
- package/lib/{services → cjs/services}/EventEmitterFactory.js +1 -1
- package/lib/cjs/services/EventEmitterFactory.js.map +1 -0
- package/lib/esm/EventEmitterModule.js +80 -0
- package/lib/esm/EventEmitterModule.js.map +1 -0
- package/lib/esm/decorators/index.js +3 -0
- package/lib/esm/decorators/index.js.map +1 -0
- package/lib/esm/decorators/onAny.js +12 -0
- package/lib/esm/decorators/onAny.js.map +1 -0
- package/lib/esm/decorators/onEvent.js +12 -0
- package/lib/esm/decorators/onEvent.js.map +1 -0
- package/lib/esm/index.js +4 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/interfaces/EventEmitterStore.js +2 -0
- package/lib/esm/interfaces/EventEmitterStore.js.map +1 -0
- package/lib/esm/services/EventEmitterFactory.js +12 -0
- package/lib/esm/services/EventEmitterFactory.js.map +1 -0
- package/lib/types/EventEmitterModule.d.ts +14 -0
- package/lib/types/decorators/index.d.ts +2 -0
- package/lib/types/decorators/onAny.d.ts +1 -0
- package/lib/types/decorators/onEvent.d.ts +2 -0
- package/lib/types/index.d.ts +20 -0
- package/lib/types/interfaces/EventEmitterStore.d.ts +12 -0
- package/lib/types/services/EventEmitterFactory.d.ts +3 -0
- package/package.json +16 -7
- package/tsconfig.compile.esm.json +23 -0
- package/lib/EventEmitterModule.js.map +0 -1
- package/lib/decorators/index.js +0 -6
- package/lib/decorators/index.js.map +0 -1
- package/lib/decorators/onAny.js.map +0 -1
- package/lib/decorators/onEvent.js.map +0 -1
- package/lib/index.js +0 -7
- package/lib/index.js.map +0 -1
- package/lib/interfaces/EventEmitterStore.js.map +0 -1
- package/lib/services/EventEmitterFactory.js.map +0 -1
|
File without changes
|
|
@@ -56,28 +56,28 @@ let EventEmitterModule = class EventEmitterModule {
|
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
};
|
|
59
|
-
tslib_1.__decorate([
|
|
60
|
-
di_1.Constant("eventEmitter.disableSummary", false),
|
|
61
|
-
tslib_1.__metadata("design:type", Boolean)
|
|
59
|
+
(0, tslib_1.__decorate)([
|
|
60
|
+
(0, di_1.Constant)("eventEmitter.disableSummary", false),
|
|
61
|
+
(0, tslib_1.__metadata)("design:type", Boolean)
|
|
62
62
|
], EventEmitterModule.prototype, "disableSummary", void 0);
|
|
63
|
-
tslib_1.__decorate([
|
|
64
|
-
di_1.Inject(),
|
|
65
|
-
tslib_1.__metadata("design:type", common_1.Logger)
|
|
63
|
+
(0, tslib_1.__decorate)([
|
|
64
|
+
(0, di_1.Inject)(),
|
|
65
|
+
(0, tslib_1.__metadata)("design:type", common_1.Logger)
|
|
66
66
|
], EventEmitterModule.prototype, "logger", void 0);
|
|
67
|
-
tslib_1.__decorate([
|
|
68
|
-
di_1.Inject(),
|
|
69
|
-
tslib_1.__metadata("design:type", di_1.InjectorService)
|
|
67
|
+
(0, tslib_1.__decorate)([
|
|
68
|
+
(0, di_1.Inject)(),
|
|
69
|
+
(0, tslib_1.__metadata)("design:type", di_1.InjectorService)
|
|
70
70
|
], EventEmitterModule.prototype, "injector", void 0);
|
|
71
|
-
tslib_1.__decorate([
|
|
72
|
-
di_1.Inject(),
|
|
73
|
-
tslib_1.__metadata("design:type", EventEmitterFactory_1.EventEmitterService)
|
|
71
|
+
(0, tslib_1.__decorate)([
|
|
72
|
+
(0, di_1.Inject)(),
|
|
73
|
+
(0, tslib_1.__metadata)("design:type", EventEmitterFactory_1.EventEmitterService)
|
|
74
74
|
], EventEmitterModule.prototype, "eventEmitter", void 0);
|
|
75
|
-
tslib_1.__decorate([
|
|
76
|
-
di_1.Constant("eventEmitter.enabled", false),
|
|
77
|
-
tslib_1.__metadata("design:type", Boolean)
|
|
75
|
+
(0, tslib_1.__decorate)([
|
|
76
|
+
(0, di_1.Constant)("eventEmitter.enabled", false),
|
|
77
|
+
(0, tslib_1.__metadata)("design:type", Boolean)
|
|
78
78
|
], EventEmitterModule.prototype, "loadEventEmitter", void 0);
|
|
79
|
-
EventEmitterModule = tslib_1.__decorate([
|
|
80
|
-
di_1.Module()
|
|
79
|
+
EventEmitterModule = (0, tslib_1.__decorate)([
|
|
80
|
+
(0, di_1.Module)()
|
|
81
81
|
], EventEmitterModule);
|
|
82
82
|
exports.EventEmitterModule = EventEmitterModule;
|
|
83
83
|
//# sourceMappingURL=EventEmitterModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventEmitterModule.js","sourceRoot":"","sources":["../../src/EventEmitterModule.ts"],"names":[],"mappings":"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","sourcesContent":["import {$log, AfterListen, Logger} from \"@tsed/common\";\nimport {Constant, Inject, InjectorService, Module, Provider} from \"@tsed/di\";\nimport {ListenerFn} from \"eventemitter2\";\nimport {EventEmitterStore} from \"./interfaces/EventEmitterStore\";\nimport {EventEmitterService} from \"./services/EventEmitterFactory\";\n\n@Module()\nexport class EventEmitterModule implements AfterListen {\n @Constant(\"eventEmitter.disableSummary\", false)\n disableSummary: boolean;\n\n @Inject()\n protected logger: Logger;\n\n @Inject()\n protected injector: InjectorService;\n\n @Inject()\n protected eventEmitter: EventEmitterService;\n\n @Constant(\"eventEmitter.enabled\", false)\n private loadEventEmitter: boolean;\n\n async $afterListen(): Promise<any> {\n if (this.loadEventEmitter) {\n const providers = this.getProviders();\n providers.forEach((provider) => this.addEventListenerForProvider(provider));\n if (!this.disableSummary) {\n this.printEvents();\n }\n this.logger.info(\"EventEmitter listening...\");\n } else {\n this.logger.info(\"EventEmitter disabled...\");\n }\n }\n\n public printEvents() {\n const list = this.eventEmitter.eventNames().map((eventName) => {\n const listenerCount = this.eventEmitter.listenerCount(eventName).toString();\n return {\n eventName,\n listenerCount\n };\n });\n\n this.injector.logger.info(\"EventEmitter events mounted:\");\n\n const str = $log.drawTable(list, {\n padding: 1,\n header: {\n eventName: \"Event name\",\n listenerCount: \"Number of listener\"\n }\n });\n\n this.injector.logger.info(\"\\n\" + str.trim());\n }\n\n protected getProviders(): Provider<any>[] {\n return Array.from(this.injector.getProviders());\n }\n\n private addEventListenerForProvider(provider: Provider<any>) {\n const store = provider.store.get<EventEmitterStore | undefined>(\"eventEmitter\");\n\n const eventListenerDefinitions = Object.entries(store?.onEvent || {});\n\n for (const [propertyKey, {event, options}] of eventListenerDefinitions) {\n const instance = this.injector.get(provider.token);\n\n const listenerFn: ListenerFn = instance[propertyKey].bind(instance) as ListenerFn;\n this.eventEmitter.on(event, listenerFn, options);\n }\n\n const anyEventListenerDefinitions = Object.keys(store?.onAny || {});\n for (const propertyKey of anyEventListenerDefinitions) {\n const instance = this.injector.get(provider.token);\n\n const listenerFn: ListenerFn = instance[propertyKey].bind(instance) as ListenerFn;\n this.eventEmitter.onAny(listenerFn);\n }\n }\n}\n"]}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorators/index.ts"],"names":[],"mappings":";;;AAAA,yDAA0B;AAC1B,uDAAwB","sourcesContent":["export * from \"./onEvent\";\nexport * from \"./onAny\";\n"]}
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onAny.js","sourceRoot":"","sources":["../../../src/decorators/onAny.ts"],"names":[],"mappings":";;;AAAA,qCAAiC;AAGjC,SAAgB,KAAK;IACnB,OAAO,CAAC,MAAW,EAAE,WAAmB,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAsB;YAC/B,KAAK,EAAE;gBACL,CAAC,WAAW,CAAC,EAAE,EAAE;aAClB;SACF,CAAC;QAEF,YAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC;AACJ,CAAC;AAVD,sBAUC","sourcesContent":["import {Store} from \"@tsed/core\";\nimport {EventEmitterStore} from \"../interfaces/EventEmitterStore\";\n\nexport function OnAny(): MethodDecorator {\n return (target: any, propertyKey: string) => {\n const store: EventEmitterStore = {\n onAny: {\n [propertyKey]: {}\n }\n };\n\n Store.from(target).merge(\"eventEmitter\", store);\n };\n}\n"]}
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onEvent.js","sourceRoot":"","sources":["../../../src/decorators/onEvent.ts"],"names":[],"mappings":";;;AAAA,qCAAiC;AAIjC,SAAgB,OAAO,CAAC,KAAsB,EAAE,OAA6B;IAC3E,OAAO,CAAC,MAAW,EAAE,WAAmB,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAsB;YAC/B,OAAO,EAAE;gBACP,CAAC,WAAW,CAAC,EAAE,EAAC,KAAK,EAAE,OAAO,EAAC;aAChC;SACF,CAAC;QAEF,YAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC;AACJ,CAAC;AAVD,0BAUC","sourcesContent":["import {Store} from \"@tsed/core\";\nimport {event, eventNS, OnOptions} from \"eventemitter2\";\nimport {EventEmitterStore} from \"../interfaces/EventEmitterStore\";\n\nexport function OnEvent(event: event | eventNS, options?: boolean | OnOptions): MethodDecorator {\n return (target: any, propertyKey: string) => {\n const store: EventEmitterStore = {\n onEvent: {\n [propertyKey]: {event, options}\n }\n };\n\n Store.from(target).merge(\"eventEmitter\", store);\n };\n}\n"]}
|
|
File without changes
|
package/lib/cjs/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
(0, tslib_1.__exportStar)(require("./EventEmitterModule"), exports);
|
|
5
|
+
(0, tslib_1.__exportStar)(require("./services/EventEmitterFactory"), exports);
|
|
6
|
+
(0, tslib_1.__exportStar)(require("./decorators"), exports);
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAmBA,oEAAqC;AACrC,8EAA+C;AAC/C,4DAA6B","sourcesContent":["import {ConstructorOptions} from \"eventemitter2\";\n\ndeclare global {\n namespace TsED {\n interface Configuration {\n eventEmitter?: {\n /**\n * Enable Event Emitter. Default `false`.\n */\n enabled?: boolean;\n /**\n * Disable event table displayed in the logger. Default `false`.\n */\n disableSummary?: boolean;\n } & ConstructorOptions;\n }\n }\n}\n\nexport * from \"./EventEmitterModule\";\nexport * from \"./services/EventEmitterFactory\";\nexport * from \"./decorators\";\n"]}
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventEmitterStore.js","sourceRoot":"","sources":["../../../src/interfaces/EventEmitterStore.ts"],"names":[],"mappings":"","sourcesContent":["import {event, eventNS, OnOptions} from \"eventemitter2\";\n\nexport interface EventEmitterStore {\n onEvent?: {[propertyKey: string]: {event: event | eventNS; options?: boolean | OnOptions}};\n onAny?: {[propertyKey: string]: {}};\n}\n"]}
|
|
File without changes
|
|
@@ -4,7 +4,7 @@ exports.EventEmitterService = void 0;
|
|
|
4
4
|
const di_1 = require("@tsed/di");
|
|
5
5
|
const eventemitter2_1 = require("eventemitter2");
|
|
6
6
|
exports.EventEmitterService = eventemitter2_1.EventEmitter2;
|
|
7
|
-
di_1.registerProvider({
|
|
7
|
+
(0, di_1.registerProvider)({
|
|
8
8
|
provide: eventemitter2_1.EventEmitter2,
|
|
9
9
|
deps: [di_1.Configuration],
|
|
10
10
|
useFactory(settings) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventEmitterFactory.js","sourceRoot":"","sources":["../../../src/services/EventEmitterFactory.ts"],"names":[],"mappings":";;;AAAA,iCAAyD;AACzD,iDAAgE;AAEnD,QAAA,mBAAmB,GAAG,6BAAa,CAAC;AAGjD,IAAA,qBAAgB,EAAC;IACf,OAAO,EAAE,6BAAa;IACtB,IAAI,EAAE,CAAC,kBAAa,CAAC;IACrB,UAAU,CAAC,QAAuB;QAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAA0C,cAAc,EAAE,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;QACrG,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,6BAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,CAAC;CACF,CAAC,CAAC","sourcesContent":["import {Configuration, registerProvider} from \"@tsed/di\";\nimport {ConstructorOptions, EventEmitter2} from \"eventemitter2\";\n\nexport const EventEmitterService = EventEmitter2;\nexport type EventEmitterService = EventEmitter2;\n\nregisterProvider({\n provide: EventEmitter2,\n deps: [Configuration],\n useFactory(settings: Configuration) {\n const opts = settings.get<ConstructorOptions & {enabled: boolean}>(\"eventEmitter\", {enabled: false});\n return opts.enabled ? new EventEmitter2(opts) : {};\n }\n});\n"]}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { $log, Logger } from "@tsed/common";
|
|
3
|
+
import { Constant, Inject, InjectorService, Module } from "@tsed/di";
|
|
4
|
+
import { EventEmitterService } from "./services/EventEmitterFactory";
|
|
5
|
+
let EventEmitterModule = class EventEmitterModule {
|
|
6
|
+
async $afterListen() {
|
|
7
|
+
if (this.loadEventEmitter) {
|
|
8
|
+
const providers = this.getProviders();
|
|
9
|
+
providers.forEach((provider) => this.addEventListenerForProvider(provider));
|
|
10
|
+
if (!this.disableSummary) {
|
|
11
|
+
this.printEvents();
|
|
12
|
+
}
|
|
13
|
+
this.logger.info("EventEmitter listening...");
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
this.logger.info("EventEmitter disabled...");
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
printEvents() {
|
|
20
|
+
const list = this.eventEmitter.eventNames().map((eventName) => {
|
|
21
|
+
const listenerCount = this.eventEmitter.listenerCount(eventName).toString();
|
|
22
|
+
return {
|
|
23
|
+
eventName,
|
|
24
|
+
listenerCount
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
this.injector.logger.info("EventEmitter events mounted:");
|
|
28
|
+
const str = $log.drawTable(list, {
|
|
29
|
+
padding: 1,
|
|
30
|
+
header: {
|
|
31
|
+
eventName: "Event name",
|
|
32
|
+
listenerCount: "Number of listener"
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
this.injector.logger.info("\n" + str.trim());
|
|
36
|
+
}
|
|
37
|
+
getProviders() {
|
|
38
|
+
return Array.from(this.injector.getProviders());
|
|
39
|
+
}
|
|
40
|
+
addEventListenerForProvider(provider) {
|
|
41
|
+
const store = provider.store.get("eventEmitter");
|
|
42
|
+
const eventListenerDefinitions = Object.entries((store === null || store === void 0 ? void 0 : store.onEvent) || {});
|
|
43
|
+
for (const [propertyKey, { event, options }] of eventListenerDefinitions) {
|
|
44
|
+
const instance = this.injector.get(provider.token);
|
|
45
|
+
const listenerFn = instance[propertyKey].bind(instance);
|
|
46
|
+
this.eventEmitter.on(event, listenerFn, options);
|
|
47
|
+
}
|
|
48
|
+
const anyEventListenerDefinitions = Object.keys((store === null || store === void 0 ? void 0 : store.onAny) || {});
|
|
49
|
+
for (const propertyKey of anyEventListenerDefinitions) {
|
|
50
|
+
const instance = this.injector.get(provider.token);
|
|
51
|
+
const listenerFn = instance[propertyKey].bind(instance);
|
|
52
|
+
this.eventEmitter.onAny(listenerFn);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
__decorate([
|
|
57
|
+
Constant("eventEmitter.disableSummary", false),
|
|
58
|
+
__metadata("design:type", Boolean)
|
|
59
|
+
], EventEmitterModule.prototype, "disableSummary", void 0);
|
|
60
|
+
__decorate([
|
|
61
|
+
Inject(),
|
|
62
|
+
__metadata("design:type", Logger)
|
|
63
|
+
], EventEmitterModule.prototype, "logger", void 0);
|
|
64
|
+
__decorate([
|
|
65
|
+
Inject(),
|
|
66
|
+
__metadata("design:type", InjectorService)
|
|
67
|
+
], EventEmitterModule.prototype, "injector", void 0);
|
|
68
|
+
__decorate([
|
|
69
|
+
Inject(),
|
|
70
|
+
__metadata("design:type", EventEmitterService)
|
|
71
|
+
], EventEmitterModule.prototype, "eventEmitter", void 0);
|
|
72
|
+
__decorate([
|
|
73
|
+
Constant("eventEmitter.enabled", false),
|
|
74
|
+
__metadata("design:type", Boolean)
|
|
75
|
+
], EventEmitterModule.prototype, "loadEventEmitter", void 0);
|
|
76
|
+
EventEmitterModule = __decorate([
|
|
77
|
+
Module()
|
|
78
|
+
], EventEmitterModule);
|
|
79
|
+
export { EventEmitterModule };
|
|
80
|
+
//# sourceMappingURL=EventEmitterModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventEmitterModule.js","sourceRoot":"","sources":["../../src/EventEmitterModule.ts"],"names":[],"mappings":"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","sourcesContent":["import {$log, AfterListen, Logger} from \"@tsed/common\";\nimport {Constant, Inject, InjectorService, Module, Provider} from \"@tsed/di\";\nimport {ListenerFn} from \"eventemitter2\";\nimport {EventEmitterStore} from \"./interfaces/EventEmitterStore\";\nimport {EventEmitterService} from \"./services/EventEmitterFactory\";\n\n@Module()\nexport class EventEmitterModule implements AfterListen {\n @Constant(\"eventEmitter.disableSummary\", false)\n disableSummary: boolean;\n\n @Inject()\n protected logger: Logger;\n\n @Inject()\n protected injector: InjectorService;\n\n @Inject()\n protected eventEmitter: EventEmitterService;\n\n @Constant(\"eventEmitter.enabled\", false)\n private loadEventEmitter: boolean;\n\n async $afterListen(): Promise<any> {\n if (this.loadEventEmitter) {\n const providers = this.getProviders();\n providers.forEach((provider) => this.addEventListenerForProvider(provider));\n if (!this.disableSummary) {\n this.printEvents();\n }\n this.logger.info(\"EventEmitter listening...\");\n } else {\n this.logger.info(\"EventEmitter disabled...\");\n }\n }\n\n public printEvents() {\n const list = this.eventEmitter.eventNames().map((eventName) => {\n const listenerCount = this.eventEmitter.listenerCount(eventName).toString();\n return {\n eventName,\n listenerCount\n };\n });\n\n this.injector.logger.info(\"EventEmitter events mounted:\");\n\n const str = $log.drawTable(list, {\n padding: 1,\n header: {\n eventName: \"Event name\",\n listenerCount: \"Number of listener\"\n }\n });\n\n this.injector.logger.info(\"\\n\" + str.trim());\n }\n\n protected getProviders(): Provider<any>[] {\n return Array.from(this.injector.getProviders());\n }\n\n private addEventListenerForProvider(provider: Provider<any>) {\n const store = provider.store.get<EventEmitterStore | undefined>(\"eventEmitter\");\n\n const eventListenerDefinitions = Object.entries(store?.onEvent || {});\n\n for (const [propertyKey, {event, options}] of eventListenerDefinitions) {\n const instance = this.injector.get(provider.token);\n\n const listenerFn: ListenerFn = instance[propertyKey].bind(instance) as ListenerFn;\n this.eventEmitter.on(event, listenerFn, options);\n }\n\n const anyEventListenerDefinitions = Object.keys(store?.onAny || {});\n for (const propertyKey of anyEventListenerDefinitions) {\n const instance = this.injector.get(provider.token);\n\n const listenerFn: ListenerFn = instance[propertyKey].bind(instance) as ListenerFn;\n this.eventEmitter.onAny(listenerFn);\n }\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC","sourcesContent":["export * from \"./onEvent\";\nexport * from \"./onAny\";\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onAny.js","sourceRoot":"","sources":["../../../src/decorators/onAny.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAGjC,MAAM,UAAU,KAAK;IACnB,OAAO,CAAC,MAAW,EAAE,WAAmB,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAsB;YAC/B,KAAK,EAAE;gBACL,CAAC,WAAW,CAAC,EAAE,EAAE;aAClB;SACF,CAAC;QAEF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import {Store} from \"@tsed/core\";\nimport {EventEmitterStore} from \"../interfaces/EventEmitterStore\";\n\nexport function OnAny(): MethodDecorator {\n return (target: any, propertyKey: string) => {\n const store: EventEmitterStore = {\n onAny: {\n [propertyKey]: {}\n }\n };\n\n Store.from(target).merge(\"eventEmitter\", store);\n };\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Store } from "@tsed/core";
|
|
2
|
+
export function OnEvent(event, options) {
|
|
3
|
+
return (target, propertyKey) => {
|
|
4
|
+
const store = {
|
|
5
|
+
onEvent: {
|
|
6
|
+
[propertyKey]: { event, options }
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
Store.from(target).merge("eventEmitter", store);
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=onEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onEvent.js","sourceRoot":"","sources":["../../../src/decorators/onEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAIjC,MAAM,UAAU,OAAO,CAAC,KAAsB,EAAE,OAA6B;IAC3E,OAAO,CAAC,MAAW,EAAE,WAAmB,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAsB;YAC/B,OAAO,EAAE;gBACP,CAAC,WAAW,CAAC,EAAE,EAAC,KAAK,EAAE,OAAO,EAAC;aAChC;SACF,CAAC;QAEF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import {Store} from \"@tsed/core\";\nimport {event, eventNS, OnOptions} from \"eventemitter2\";\nimport {EventEmitterStore} from \"../interfaces/EventEmitterStore\";\n\nexport function OnEvent(event: event | eventNS, options?: boolean | OnOptions): MethodDecorator {\n return (target: any, propertyKey: string) => {\n const store: EventEmitterStore = {\n onEvent: {\n [propertyKey]: {event, options}\n }\n };\n\n Store.from(target).merge(\"eventEmitter\", store);\n };\n}\n"]}
|
package/lib/esm/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAmBA,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,cAAc,CAAC","sourcesContent":["import {ConstructorOptions} from \"eventemitter2\";\n\ndeclare global {\n namespace TsED {\n interface Configuration {\n eventEmitter?: {\n /**\n * Enable Event Emitter. Default `false`.\n */\n enabled?: boolean;\n /**\n * Disable event table displayed in the logger. Default `false`.\n */\n disableSummary?: boolean;\n } & ConstructorOptions;\n }\n }\n}\n\nexport * from \"./EventEmitterModule\";\nexport * from \"./services/EventEmitterFactory\";\nexport * from \"./decorators\";\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventEmitterStore.js","sourceRoot":"","sources":["../../../src/interfaces/EventEmitterStore.ts"],"names":[],"mappings":"","sourcesContent":["import {event, eventNS, OnOptions} from \"eventemitter2\";\n\nexport interface EventEmitterStore {\n onEvent?: {[propertyKey: string]: {event: event | eventNS; options?: boolean | OnOptions}};\n onAny?: {[propertyKey: string]: {}};\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Configuration, registerProvider } from "@tsed/di";
|
|
2
|
+
import { EventEmitter2 } from "eventemitter2";
|
|
3
|
+
export const EventEmitterService = EventEmitter2;
|
|
4
|
+
registerProvider({
|
|
5
|
+
provide: EventEmitter2,
|
|
6
|
+
deps: [Configuration],
|
|
7
|
+
useFactory(settings) {
|
|
8
|
+
const opts = settings.get("eventEmitter", { enabled: false });
|
|
9
|
+
return opts.enabled ? new EventEmitter2(opts) : {};
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=EventEmitterFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventEmitterFactory.js","sourceRoot":"","sources":["../../../src/services/EventEmitterFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,gBAAgB,EAAC,MAAM,UAAU,CAAC;AACzD,OAAO,EAAqB,aAAa,EAAC,MAAM,eAAe,CAAC;AAEhE,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC;AAGjD,gBAAgB,CAAC;IACf,OAAO,EAAE,aAAa;IACtB,IAAI,EAAE,CAAC,aAAa,CAAC;IACrB,UAAU,CAAC,QAAuB;QAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAA0C,cAAc,EAAE,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;QACrG,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,CAAC;CACF,CAAC,CAAC","sourcesContent":["import {Configuration, registerProvider} from \"@tsed/di\";\nimport {ConstructorOptions, EventEmitter2} from \"eventemitter2\";\n\nexport const EventEmitterService = EventEmitter2;\nexport type EventEmitterService = EventEmitter2;\n\nregisterProvider({\n provide: EventEmitter2,\n deps: [Configuration],\n useFactory(settings: Configuration) {\n const opts = settings.get<ConstructorOptions & {enabled: boolean}>(\"eventEmitter\", {enabled: false});\n return opts.enabled ? new EventEmitter2(opts) : {};\n }\n});\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AfterListen, Logger } from "@tsed/common";
|
|
2
|
+
import { InjectorService, Provider } from "@tsed/di";
|
|
3
|
+
import { EventEmitterService } from "./services/EventEmitterFactory";
|
|
4
|
+
export declare class EventEmitterModule implements AfterListen {
|
|
5
|
+
disableSummary: boolean;
|
|
6
|
+
protected logger: Logger;
|
|
7
|
+
protected injector: InjectorService;
|
|
8
|
+
protected eventEmitter: EventEmitterService;
|
|
9
|
+
private loadEventEmitter;
|
|
10
|
+
$afterListen(): Promise<any>;
|
|
11
|
+
printEvents(): void;
|
|
12
|
+
protected getProviders(): Provider<any>[];
|
|
13
|
+
private addEventListenerForProvider;
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function OnAny(): MethodDecorator;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ConstructorOptions } from "eventemitter2";
|
|
2
|
+
declare global {
|
|
3
|
+
namespace TsED {
|
|
4
|
+
interface Configuration {
|
|
5
|
+
eventEmitter?: {
|
|
6
|
+
/**
|
|
7
|
+
* Enable Event Emitter. Default `false`.
|
|
8
|
+
*/
|
|
9
|
+
enabled?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Disable event table displayed in the logger. Default `false`.
|
|
12
|
+
*/
|
|
13
|
+
disableSummary?: boolean;
|
|
14
|
+
} & ConstructorOptions;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export * from "./EventEmitterModule";
|
|
19
|
+
export * from "./services/EventEmitterFactory";
|
|
20
|
+
export * from "./decorators";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { event, eventNS, OnOptions } from "eventemitter2";
|
|
2
|
+
export interface EventEmitterStore {
|
|
3
|
+
onEvent?: {
|
|
4
|
+
[propertyKey: string]: {
|
|
5
|
+
event: event | eventNS;
|
|
6
|
+
options?: boolean | OnOptions;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
onAny?: {
|
|
10
|
+
[propertyKey: string]: {};
|
|
11
|
+
};
|
|
12
|
+
}
|
package/package.json
CHANGED
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tsed/event-emitter",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.91.0",
|
|
4
4
|
"description": "EventEmitter package for Ts.ED framework",
|
|
5
|
-
"
|
|
6
|
-
"
|
|
5
|
+
"source": "./src/index.ts",
|
|
6
|
+
"main": "./lib/cjs/index.js",
|
|
7
|
+
"typings": "./lib/types/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
"types": "./lib/types/index.d.ts",
|
|
10
|
+
"import": "./lib/esm/index.js",
|
|
11
|
+
"require": "./lib/cjs/index.js",
|
|
12
|
+
"default": "./lib/esm/index.js"
|
|
13
|
+
},
|
|
7
14
|
"scripts": {
|
|
8
|
-
"build": "
|
|
15
|
+
"build": "yarn run build:esm && yarn run build:cjs",
|
|
16
|
+
"build:cjs": "tsc --build tsconfig.compile.json",
|
|
17
|
+
"build:esm": "tsc --build tsconfig.compile.esm.json",
|
|
9
18
|
"test": "cross-env NODE_ENV=test nyc mocha"
|
|
10
19
|
},
|
|
11
20
|
"dependencies": {
|
|
@@ -13,9 +22,9 @@
|
|
|
13
22
|
},
|
|
14
23
|
"private": false,
|
|
15
24
|
"devDependencies": {
|
|
16
|
-
"@tsed/common": "6.
|
|
17
|
-
"@tsed/core": "6.
|
|
18
|
-
"@tsed/di": "6.
|
|
25
|
+
"@tsed/common": "6.91.0",
|
|
26
|
+
"@tsed/core": "6.91.0",
|
|
27
|
+
"@tsed/di": "6.91.0",
|
|
19
28
|
"eventemitter2": "^6.4.4"
|
|
20
29
|
},
|
|
21
30
|
"peerDependencies": {
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "./tsconfig.compile.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"baseUrl": ".",
|
|
5
|
+
"module": "ES2020",
|
|
6
|
+
"rootDir": "src",
|
|
7
|
+
"outDir": "./lib/esm",
|
|
8
|
+
"declaration": true,
|
|
9
|
+
"declarationDir": "./lib/types"
|
|
10
|
+
},
|
|
11
|
+
"exclude": [
|
|
12
|
+
"node_modules",
|
|
13
|
+
"test",
|
|
14
|
+
"lib",
|
|
15
|
+
"benchmark",
|
|
16
|
+
"coverage",
|
|
17
|
+
"spec",
|
|
18
|
+
"**/*.benchmark.ts",
|
|
19
|
+
"**/*.spec.ts",
|
|
20
|
+
"keys",
|
|
21
|
+
"jest.config.js"
|
|
22
|
+
]
|
|
23
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EventEmitterModule.js","sourceRoot":"","sources":["../src/EventEmitterModule.ts"],"names":[],"mappings":"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","sourcesContent":["import {$log, AfterListen, Logger} from \"@tsed/common\";\nimport {Constant, Inject, InjectorService, Module, Provider} from \"@tsed/di\";\nimport {ListenerFn} from \"eventemitter2\";\nimport {EventEmitterStore} from \"./interfaces/EventEmitterStore\";\nimport {EventEmitterService} from \"./services/EventEmitterFactory\";\n\n@Module()\nexport class EventEmitterModule implements AfterListen {\n @Constant(\"eventEmitter.disableSummary\", false)\n disableSummary: boolean;\n\n @Inject()\n protected logger: Logger;\n\n @Inject()\n protected injector: InjectorService;\n\n @Inject()\n protected eventEmitter: EventEmitterService;\n\n @Constant(\"eventEmitter.enabled\", false)\n private loadEventEmitter: boolean;\n\n async $afterListen(): Promise<any> {\n if (this.loadEventEmitter) {\n const providers = this.getProviders();\n providers.forEach((provider) => this.addEventListenerForProvider(provider));\n if (!this.disableSummary) {\n this.printEvents();\n }\n this.logger.info(\"EventEmitter listening...\");\n } else {\n this.logger.info(\"EventEmitter disabled...\");\n }\n }\n\n public printEvents() {\n const list = this.eventEmitter.eventNames().map((eventName) => {\n const listenerCount = this.eventEmitter.listenerCount(eventName).toString();\n return {\n eventName,\n listenerCount\n };\n });\n\n this.injector.logger.info(\"EventEmitter events mounted:\");\n\n const str = $log.drawTable(list, {\n padding: 1,\n header: {\n eventName: \"Event name\",\n listenerCount: \"Number of listener\"\n }\n });\n\n this.injector.logger.info(\"\\n\" + str.trim());\n }\n\n protected getProviders(): Provider<any>[] {\n return Array.from(this.injector.getProviders());\n }\n\n private addEventListenerForProvider(provider: Provider<any>) {\n const store = provider.store.get<EventEmitterStore | undefined>(\"eventEmitter\");\n\n const eventListenerDefinitions = Object.entries(store?.onEvent || {});\n\n for (const [propertyKey, {event, options}] of eventListenerDefinitions) {\n const instance = this.injector.get(provider.token);\n\n const listenerFn: ListenerFn = instance[propertyKey].bind(instance) as ListenerFn;\n this.eventEmitter.on(event, listenerFn, options);\n }\n\n const anyEventListenerDefinitions = Object.keys(store?.onAny || {});\n for (const propertyKey of anyEventListenerDefinitions) {\n const instance = this.injector.get(provider.token);\n\n const listenerFn: ListenerFn = instance[propertyKey].bind(instance) as ListenerFn;\n this.eventEmitter.onAny(listenerFn);\n }\n }\n}\n"]}
|
package/lib/decorators/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":";;;AAAA,oDAA0B;AAC1B,kDAAwB","sourcesContent":["export * from \"./onEvent\";\nexport * from \"./onAny\";\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"onAny.js","sourceRoot":"","sources":["../../src/decorators/onAny.ts"],"names":[],"mappings":";;;AAAA,qCAAiC;AAGjC,SAAgB,KAAK;IACnB,OAAO,CAAC,MAAW,EAAE,WAAmB,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAsB;YAC/B,KAAK,EAAE;gBACL,CAAC,WAAW,CAAC,EAAE,EAAE;aAClB;SACF,CAAC;QAEF,YAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC;AACJ,CAAC;AAVD,sBAUC","sourcesContent":["import {Store} from \"@tsed/core\";\nimport {EventEmitterStore} from \"../interfaces/EventEmitterStore\";\n\nexport function OnAny(): MethodDecorator {\n return (target: any, propertyKey: string) => {\n const store: EventEmitterStore = {\n onAny: {\n [propertyKey]: {}\n }\n };\n\n Store.from(target).merge(\"eventEmitter\", store);\n };\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"onEvent.js","sourceRoot":"","sources":["../../src/decorators/onEvent.ts"],"names":[],"mappings":";;;AAAA,qCAAiC;AAIjC,SAAgB,OAAO,CAAC,KAAsB,EAAE,OAA6B;IAC3E,OAAO,CAAC,MAAW,EAAE,WAAmB,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAsB;YAC/B,OAAO,EAAE;gBACP,CAAC,WAAW,CAAC,EAAE,EAAC,KAAK,EAAE,OAAO,EAAC;aAChC;SACF,CAAC;QAEF,YAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC;AACJ,CAAC;AAVD,0BAUC","sourcesContent":["import {Store} from \"@tsed/core\";\nimport {event, eventNS, OnOptions} from \"eventemitter2\";\nimport {EventEmitterStore} from \"../interfaces/EventEmitterStore\";\n\nexport function OnEvent(event: event | eventNS, options?: boolean | OnOptions): MethodDecorator {\n return (target: any, propertyKey: string) => {\n const store: EventEmitterStore = {\n onEvent: {\n [propertyKey]: {event, options}\n }\n };\n\n Store.from(target).merge(\"eventEmitter\", store);\n };\n}\n"]}
|
package/lib/index.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
tslib_1.__exportStar(require("./EventEmitterModule"), exports);
|
|
5
|
-
tslib_1.__exportStar(require("./services/EventEmitterFactory"), exports);
|
|
6
|
-
tslib_1.__exportStar(require("./decorators"), exports);
|
|
7
|
-
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAmBA,+DAAqC;AACrC,yEAA+C;AAC/C,uDAA6B","sourcesContent":["import {ConstructorOptions} from \"eventemitter2\";\n\ndeclare global {\n namespace TsED {\n interface Configuration {\n eventEmitter?: {\n /**\n * Enable Event Emitter. Default `false`.\n */\n enabled?: boolean;\n /**\n * Disable event table displayed in the logger. Default `false`.\n */\n disableSummary?: boolean;\n } & ConstructorOptions;\n }\n }\n}\n\nexport * from \"./EventEmitterModule\";\nexport * from \"./services/EventEmitterFactory\";\nexport * from \"./decorators\";\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EventEmitterStore.js","sourceRoot":"","sources":["../../src/interfaces/EventEmitterStore.ts"],"names":[],"mappings":"","sourcesContent":["import {event, eventNS, OnOptions} from \"eventemitter2\";\n\nexport interface EventEmitterStore {\n onEvent?: {[propertyKey: string]: {event: event | eventNS; options?: boolean | OnOptions}};\n onAny?: {[propertyKey: string]: {}};\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EventEmitterFactory.js","sourceRoot":"","sources":["../../src/services/EventEmitterFactory.ts"],"names":[],"mappings":";;;AAAA,iCAAyD;AACzD,iDAAgE;AAEnD,QAAA,mBAAmB,GAAG,6BAAa,CAAC;AAGjD,qBAAgB,CAAC;IACf,OAAO,EAAE,6BAAa;IACtB,IAAI,EAAE,CAAC,kBAAa,CAAC;IACrB,UAAU,CAAC,QAAuB;QAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAA0C,cAAc,EAAE,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;QACrG,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,6BAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,CAAC;CACF,CAAC,CAAC","sourcesContent":["import {Configuration, registerProvider} from \"@tsed/di\";\nimport {ConstructorOptions, EventEmitter2} from \"eventemitter2\";\n\nexport const EventEmitterService = EventEmitter2;\nexport type EventEmitterService = EventEmitter2;\n\nregisterProvider({\n provide: EventEmitter2,\n deps: [Configuration],\n useFactory(settings: Configuration) {\n const opts = settings.get<ConstructorOptions & {enabled: boolean}>(\"eventEmitter\", {enabled: false});\n return opts.enabled ? new EventEmitter2(opts) : {};\n }\n});\n"]}
|