@tsed/event-emitter 8.11.1 → 8.11.2-rc.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/lib/esm/EventEmitterModule.js +0 -1
- package/lib/esm/decorators/onAny.js +0 -1
- package/lib/esm/decorators/onEvent.js +0 -1
- package/lib/esm/index.js +0 -1
- package/lib/esm/interfaces/EventEmitterStore.js +0 -1
- package/lib/esm/interfaces/interfaces.js +0 -1
- package/lib/esm/services/EventEmitterFactory.js +0 -1
- package/package.json +13 -11
- package/lib/browser/EventEmitterModule.js +0 -76
- package/lib/browser/EventEmitterModule.js.map +0 -1
- package/lib/browser/decorators/onAny.js +0 -15
- package/lib/browser/decorators/onAny.js.map +0 -1
- package/lib/browser/decorators/onEvent.js +0 -15
- package/lib/browser/decorators/onEvent.js.map +0 -1
- package/lib/browser/index.js +0 -11
- package/lib/browser/index.js.map +0 -1
- package/lib/browser/services/EventEmitterFactory.js +0 -15
- package/lib/browser/services/EventEmitterFactory.js.map +0 -1
- package/lib/esm/EventEmitterModule.js.map +0 -1
- package/lib/esm/decorators/onAny.js.map +0 -1
- package/lib/esm/decorators/onEvent.js.map +0 -1
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/interfaces/EventEmitterStore.js.map +0 -1
- package/lib/esm/interfaces/interfaces.js.map +0 -1
- package/lib/esm/services/EventEmitterFactory.js.map +0 -1
- package/src/EventEmitterModule.ts +0 -94
- package/src/decorators/onAny.spec.ts +0 -22
- package/src/decorators/onAny.ts +0 -15
- package/src/decorators/onEvent.spec.ts +0 -36
- package/src/decorators/onEvent.ts +0 -16
- package/src/index.ts +0 -9
- package/src/interfaces/EventEmitterStore.ts +0 -6
- package/src/interfaces/interfaces.ts +0 -18
- package/src/services/EventEmitterFactory.ts +0 -15
- package/vite.config.mts +0 -45
- package/vitest.config.mts +0 -21
package/lib/esm/index.js
CHANGED
package/package.json
CHANGED
|
@@ -2,24 +2,23 @@
|
|
|
2
2
|
"name": "@tsed/event-emitter",
|
|
3
3
|
"description": "EventEmitter package for Ts.ED framework",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "8.11.1",
|
|
5
|
+
"version": "8.11.2-rc.1",
|
|
6
6
|
"source": "./src/index.ts",
|
|
7
7
|
"main": "./lib/esm/index.js",
|
|
8
8
|
"module": "./lib/esm/index.js",
|
|
9
9
|
"typings": "./lib/types/index.d.ts",
|
|
10
|
-
"browser": "./lib/
|
|
10
|
+
"browser": "./lib/esm/index.js",
|
|
11
11
|
"exports": {
|
|
12
12
|
".": {
|
|
13
13
|
"tsed-source": "./src/index.ts",
|
|
14
14
|
"types": "./lib/types/index.d.ts",
|
|
15
|
-
"browser": "./lib/
|
|
15
|
+
"browser": "./lib/esm/index.js",
|
|
16
16
|
"import": "./lib/esm/index.js",
|
|
17
17
|
"default": "./lib/esm/index.js"
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
20
|
"scripts": {
|
|
21
|
-
"build": "yarn barrels && yarn build:ts
|
|
22
|
-
"build:browser": "vite build",
|
|
21
|
+
"build": "yarn barrels && yarn build:ts",
|
|
23
22
|
"barrels": "barrels",
|
|
24
23
|
"test": "vitest run",
|
|
25
24
|
"build:ts": "tsc --build tsconfig.esm.json",
|
|
@@ -29,11 +28,11 @@
|
|
|
29
28
|
"tslib": "2.7.0"
|
|
30
29
|
},
|
|
31
30
|
"devDependencies": {
|
|
32
|
-
"@tsed/barrels": "8.11.1",
|
|
33
|
-
"@tsed/core": "8.11.1",
|
|
34
|
-
"@tsed/di": "8.11.1",
|
|
35
|
-
"@tsed/platform-http": "8.11.1",
|
|
36
|
-
"@tsed/typescript": "8.11.1",
|
|
31
|
+
"@tsed/barrels": "8.11.2-rc.1",
|
|
32
|
+
"@tsed/core": "8.11.2-rc.1",
|
|
33
|
+
"@tsed/di": "8.11.2-rc.1",
|
|
34
|
+
"@tsed/platform-http": "8.11.2-rc.1",
|
|
35
|
+
"@tsed/typescript": "8.11.2-rc.1",
|
|
37
36
|
"eslint": "9.12.0",
|
|
38
37
|
"eventemitter2": "^6.4.9",
|
|
39
38
|
"typescript": "5.4.5",
|
|
@@ -49,5 +48,8 @@
|
|
|
49
48
|
},
|
|
50
49
|
"homepage": "https://github.com/tsedio/tsed/tree/production/packages/third-parties/event-emitter",
|
|
51
50
|
"author": "Romain Lenzotti",
|
|
52
|
-
"license": "MIT"
|
|
51
|
+
"license": "MIT",
|
|
52
|
+
"publishConfig": {
|
|
53
|
+
"tag": "rc"
|
|
54
|
+
}
|
|
53
55
|
}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { Inject as m, LOGGER as a, Constant as v, Module as h } from "@tsed/di";
|
|
2
|
-
var c = Object.defineProperty, d = Object.getOwnPropertyDescriptor, o = (e, t, n, i) => {
|
|
3
|
-
for (var r = i > 1 ? void 0 : i ? d(t, n) : t, l = e.length - 1, E; l >= 0; l--)
|
|
4
|
-
(E = e[l]) && (r = (i ? E(t, n, r) : E(r)) || r);
|
|
5
|
-
return i && r && c(t, n, r), r;
|
|
6
|
-
};
|
|
7
|
-
let s = class {
|
|
8
|
-
$onInit() {
|
|
9
|
-
this.loadEventEmitter && this.injector.getProviders().forEach((t) => this.bindEventListeners(t));
|
|
10
|
-
}
|
|
11
|
-
$onReady() {
|
|
12
|
-
this.loadEventEmitter ? (this.disableSummary || this.printEvents(), this.logger.info("EventEmitter listening...")) : this.logger.info("EventEmitter disabled...");
|
|
13
|
-
}
|
|
14
|
-
printEvents() {
|
|
15
|
-
const e = this.eventEmitter.eventNames().map((n) => {
|
|
16
|
-
const i = this.eventEmitter.listenerCount(n).toString();
|
|
17
|
-
return {
|
|
18
|
-
eventName: n,
|
|
19
|
-
listenerCount: i
|
|
20
|
-
};
|
|
21
|
-
});
|
|
22
|
-
this.logger.info("EventEmitter events mounted:");
|
|
23
|
-
const t = this.logger.drawTable(e, {
|
|
24
|
-
padding: 1,
|
|
25
|
-
header: {
|
|
26
|
-
eventName: "Event name",
|
|
27
|
-
listenerCount: "Number of listener"
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
this.logger.info(`
|
|
31
|
-
` + t.trim());
|
|
32
|
-
}
|
|
33
|
-
bindEventListeners(e) {
|
|
34
|
-
this.bindOn(e), this.bindOnAny(e);
|
|
35
|
-
}
|
|
36
|
-
getListener(e, t) {
|
|
37
|
-
const n = this.injector.get(e.token);
|
|
38
|
-
return n[t].bind(n);
|
|
39
|
-
}
|
|
40
|
-
bindOn(e) {
|
|
41
|
-
const t = e.store.get("eventEmitter");
|
|
42
|
-
Object.entries((t == null ? void 0 : t.onEvent) || {}).forEach(([n, { event: i, options: r }]) => {
|
|
43
|
-
const l = this.getListener(e, n);
|
|
44
|
-
this.eventEmitter.on(i, l, r);
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
bindOnAny(e) {
|
|
48
|
-
const t = e.store.get("eventEmitter");
|
|
49
|
-
Object.keys((t == null ? void 0 : t.onAny) || {}).forEach((n) => {
|
|
50
|
-
const i = this.getListener(e, n);
|
|
51
|
-
this.eventEmitter.onAny(i);
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
o([
|
|
56
|
-
m(a)
|
|
57
|
-
], s.prototype, "logger", 2);
|
|
58
|
-
o([
|
|
59
|
-
m()
|
|
60
|
-
], s.prototype, "injector", 2);
|
|
61
|
-
o([
|
|
62
|
-
m()
|
|
63
|
-
], s.prototype, "eventEmitter", 2);
|
|
64
|
-
o([
|
|
65
|
-
v("eventEmitter.disableSummary", !1)
|
|
66
|
-
], s.prototype, "disableSummary", 2);
|
|
67
|
-
o([
|
|
68
|
-
v("eventEmitter.enabled", !1)
|
|
69
|
-
], s.prototype, "loadEventEmitter", 2);
|
|
70
|
-
s = o([
|
|
71
|
-
h()
|
|
72
|
-
], s);
|
|
73
|
-
export {
|
|
74
|
-
s as EventEmitterModule
|
|
75
|
-
};
|
|
76
|
-
//# sourceMappingURL=EventEmitterModule.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EventEmitterModule.js","sources":["../../src/EventEmitterModule.ts"],"sourcesContent":["import {Constant, Inject, InjectorService, LOGGER, Module, Provider} from \"@tsed/di\";\nimport type {ListenerFn} from \"eventemitter2\";\n\nimport {EventEmitterStore} from \"./interfaces/EventEmitterStore.js\";\nimport {EventEmitterService} from \"./services/EventEmitterFactory.js\";\n\n@Module()\nexport class EventEmitterModule {\n @Inject(LOGGER)\n protected logger: LOGGER;\n\n @Inject()\n protected injector: InjectorService;\n\n @Inject()\n protected eventEmitter: EventEmitterService;\n\n @Constant(\"eventEmitter.disableSummary\", false)\n private disableSummary: boolean;\n\n @Constant(\"eventEmitter.enabled\", false)\n private loadEventEmitter: boolean;\n\n $onInit() {\n if (this.loadEventEmitter) {\n const providers = this.injector.getProviders();\n providers.forEach((provider) => this.bindEventListeners(provider));\n }\n }\n\n $onReady() {\n if (this.loadEventEmitter) {\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\n return {\n eventName,\n listenerCount\n };\n });\n\n this.logger.info(\"EventEmitter events mounted:\");\n\n const str = this.logger.drawTable(list, {\n padding: 1,\n header: {\n eventName: \"Event name\",\n listenerCount: \"Number of listener\"\n }\n });\n\n this.logger.info(\"\\n\" + str.trim());\n }\n\n private bindEventListeners(provider: Provider<any>) {\n this.bindOn(provider);\n this.bindOnAny(provider);\n }\n\n private getListener(provider: Provider<any>, propertyKey: string) {\n const instance = this.injector.get(provider.token);\n return instance[propertyKey].bind(instance) as ListenerFn;\n }\n\n private bindOn(provider: Provider) {\n const store = provider.store.get<EventEmitterStore | undefined>(\"eventEmitter\");\n\n Object.entries(store?.onEvent || {}).forEach(([propertyKey, {event, options}]) => {\n const listenerFn = this.getListener(provider, propertyKey);\n\n this.eventEmitter.on(event, listenerFn, options);\n });\n }\n\n private bindOnAny(provider: Provider) {\n const store = provider.store.get<EventEmitterStore | undefined>(\"eventEmitter\");\n\n Object.keys(store?.onAny || {}).forEach((propertyKey) => {\n const listenerFn = this.getListener(provider, propertyKey);\n\n this.eventEmitter.onAny(listenerFn);\n });\n }\n}\n"],"names":["EventEmitterModule","provider","list","eventName","listenerCount","str","propertyKey","instance","store","event","options","listenerFn","__decorateClass","Inject","LOGGER","Constant","Module"],"mappings":";;;;;;AAOO,IAAMA,IAAN,MAAyB;AAAA,EAgB9B,UAAU;AACR,IAAI,KAAK,oBACW,KAAK,SAAS,aAAa,EACnC,QAAQ,CAACC,MAAa,KAAK,mBAAmBA,CAAQ,CAAC;AAAA,EACnE;AAAA,EAGF,WAAW;AACT,IAAI,KAAK,oBACF,KAAK,kBACR,KAAK,YAAY,GAEd,KAAA,OAAO,KAAK,2BAA2B,KAEvC,KAAA,OAAO,KAAK,0BAA0B;AAAA,EAC7C;AAAA,EAGK,cAAc;AACnB,UAAMC,IAAO,KAAK,aAAa,aAAa,IAAI,CAACC,MAAc;AAC7D,YAAMC,IAAgB,KAAK,aAAa,cAAcD,CAAS,EAAE,SAAS;AAEnE,aAAA;AAAA,QACL,WAAAA;AAAA,QACA,eAAAC;AAAA,MACF;AAAA,IAAA,CACD;AAEI,SAAA,OAAO,KAAK,8BAA8B;AAE/C,UAAMC,IAAM,KAAK,OAAO,UAAUH,GAAM;AAAA,MACtC,SAAS;AAAA,MACT,QAAQ;AAAA,QACN,WAAW;AAAA,QACX,eAAe;AAAA,MAAA;AAAA,IACjB,CACD;AAED,SAAK,OAAO,KAAK;AAAA,IAAOG,EAAI,MAAM;AAAA,EAAA;AAAA,EAG5B,mBAAmBJ,GAAyB;AAClD,SAAK,OAAOA,CAAQ,GACpB,KAAK,UAAUA,CAAQ;AAAA,EAAA;AAAA,EAGjB,YAAYA,GAAyBK,GAAqB;AAChE,UAAMC,IAAW,KAAK,SAAS,IAAIN,EAAS,KAAK;AACjD,WAAOM,EAASD,CAAW,EAAE,KAAKC,CAAQ;AAAA,EAAA;AAAA,EAGpC,OAAON,GAAoB;AACjC,UAAMO,IAAQP,EAAS,MAAM,IAAmC,cAAc;AAE9E,WAAO,SAAQO,KAAA,gBAAAA,EAAO,YAAW,CAAA,CAAE,EAAE,QAAQ,CAAC,CAACF,GAAa,EAAC,OAAAG,GAAO,SAAAC,EAAQ,CAAA,MAAM;AAChF,YAAMC,IAAa,KAAK,YAAYV,GAAUK,CAAW;AAEzD,WAAK,aAAa,GAAGG,GAAOE,GAAYD,CAAO;AAAA,IAAA,CAChD;AAAA,EAAA;AAAA,EAGK,UAAUT,GAAoB;AACpC,UAAMO,IAAQP,EAAS,MAAM,IAAmC,cAAc;AAEvE,WAAA,MAAKO,KAAA,gBAAAA,EAAO,UAAS,CAAA,CAAE,EAAE,QAAQ,CAACF,MAAgB;AACvD,YAAMK,IAAa,KAAK,YAAYV,GAAUK,CAAW;AAEpD,WAAA,aAAa,MAAMK,CAAU;AAAA,IAAA,CACnC;AAAA,EAAA;AAEL;AApFYC,EAAA;AAAA,EADTC,EAAOC,CAAM;AAAA,GADHd,EAED,WAAA,UAAA,CAAA;AAGAY,EAAA;AAAA,EADTC,EAAO;AAAA,GAJGb,EAKD,WAAA,YAAA,CAAA;AAGAY,EAAA;AAAA,EADTC,EAAO;AAAA,GAPGb,EAQD,WAAA,gBAAA,CAAA;AAGFY,EAAA;AAAA,EADPG,EAAS,+BAA+B,EAAK;AAAA,GAVnCf,EAWH,WAAA,kBAAA,CAAA;AAGAY,EAAA;AAAA,EADPG,EAAS,wBAAwB,EAAK;AAAA,GAb5Bf,EAcH,WAAA,oBAAA,CAAA;AAdGA,IAANY,EAAA;AAAA,EADNI,EAAO;AAAA,GACKhB,CAAA;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"onAny.js","sources":["../../../src/decorators/onAny.ts"],"sourcesContent":["import {Store} from \"@tsed/core\";\n\nimport {EventEmitterStore} from \"../interfaces/EventEmitterStore.js\";\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"],"names":["OnAny","target","propertyKey","store","Store"],"mappings":";AAIO,SAASA,IAAyB;AAChC,SAAA,CAACC,GAAaC,MAAwB;AAC3C,UAAMC,IAA2B;AAAA,MAC/B,OAAO;AAAA,QACL,CAACD,CAAW,GAAG,CAAA;AAAA,MAAC;AAAA,IAEpB;AAEA,IAAAE,EAAM,KAAKH,CAAM,EAAE,MAAM,gBAAgBE,CAAK;AAAA,EAChD;AACF;"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Store as m } from "@tsed/core";
|
|
2
|
-
function f(e, t) {
|
|
3
|
-
return (n, r) => {
|
|
4
|
-
const o = {
|
|
5
|
-
onEvent: {
|
|
6
|
-
[r]: { event: e, options: t }
|
|
7
|
-
}
|
|
8
|
-
};
|
|
9
|
-
m.from(n).merge("eventEmitter", o);
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
export {
|
|
13
|
-
f as OnEvent
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=onEvent.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"onEvent.js","sources":["../../../src/decorators/onEvent.ts"],"sourcesContent":["import {Store} from \"@tsed/core\";\nimport {event, eventNS, OnOptions} from \"eventemitter2\";\n\nimport {EventEmitterStore} from \"../interfaces/EventEmitterStore.js\";\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"],"names":["OnEvent","event","options","target","propertyKey","store","Store"],"mappings":";AAKgB,SAAAA,EAAQC,GAAwBC,GAAgD;AACvF,SAAA,CAACC,GAAaC,MAAwB;AAC3C,UAAMC,IAA2B;AAAA,MAC/B,SAAS;AAAA,QACP,CAACD,CAAW,GAAG,EAAC,OAAAH,GAAO,SAAAC,EAAO;AAAA,MAAA;AAAA,IAElC;AAEA,IAAAI,EAAM,KAAKH,CAAM,EAAE,MAAM,gBAAgBE,CAAK;AAAA,EAChD;AACF;"}
|
package/lib/browser/index.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { OnAny as t } from "./decorators/onAny.js";
|
|
2
|
-
import { OnEvent as m } from "./decorators/onEvent.js";
|
|
3
|
-
import { EventEmitterModule as E } from "./EventEmitterModule.js";
|
|
4
|
-
import { EventEmitterService as p } from "./services/EventEmitterFactory.js";
|
|
5
|
-
export {
|
|
6
|
-
E as EventEmitterModule,
|
|
7
|
-
p as EventEmitterService,
|
|
8
|
-
t as OnAny,
|
|
9
|
-
m as OnEvent
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=index.js.map
|
package/lib/browser/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { registerProvider as n, Configuration as i } from "@tsed/di";
|
|
2
|
-
import e from "/home/runner/work/tsed/tsed/node_modules/eventemitter2/lib/eventemitter2.js";
|
|
3
|
-
const E = e.EventEmitter2;
|
|
4
|
-
n({
|
|
5
|
-
token: e.EventEmitter2,
|
|
6
|
-
deps: [i],
|
|
7
|
-
useFactory(r) {
|
|
8
|
-
const t = r.get("eventEmitter", { enabled: !1 });
|
|
9
|
-
return t.enabled ? new e.EventEmitter2(t) : {};
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
export {
|
|
13
|
-
E as EventEmitterService
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=EventEmitterFactory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EventEmitterFactory.js","sources":["../../../src/services/EventEmitterFactory.ts"],"sourcesContent":["import {Configuration, registerProvider} from \"@tsed/di\";\nimport type {ConstructorOptions} from \"eventemitter2\";\nimport eventEmitter2 from \"eventemitter2\";\n\nexport const EventEmitterService = eventEmitter2.EventEmitter2;\nexport type EventEmitterService = eventEmitter2.EventEmitter2;\n\nregisterProvider({\n token: eventEmitter2.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.EventEmitter2(opts) : {};\n }\n});\n"],"names":["EventEmitterService","eventEmitter2","registerProvider","Configuration","settings","opts"],"mappings":";;AAIO,MAAMA,IAAsBC,EAAc;AAGjDC,EAAiB;AAAA,EACf,OAAOD,EAAc;AAAA,EACrB,MAAM,CAACE,CAAa;AAAA,EACpB,WAAWC,GAAyB;AAClC,UAAMC,IAAOD,EAAS,IAA6C,gBAAgB,EAAC,SAAS,IAAM;AACnG,WAAOC,EAAK,UAAU,IAAIJ,EAAc,cAAcI,CAAI,IAAI,CAAC;AAAA,EAAA;AAEnE,CAAC;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EventEmitterModule.js","sourceRoot":"","sources":["../../src/EventEmitterModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"onAny.js","sourceRoot":"","sources":["../../../src/decorators/onAny.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAIjC,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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"onEvent.js","sourceRoot":"","sources":["../../../src/decorators/onEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAKjC,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"}
|
package/lib/esm/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EventEmitterStore.js","sourceRoot":"","sources":["../../../src/interfaces/EventEmitterStore.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/interfaces/interfaces.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EventEmitterFactory.js","sourceRoot":"","sources":["../../../src/services/EventEmitterFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAEzD,OAAO,aAAa,MAAM,eAAe,CAAC;AAE1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC,aAAa,CAAC;AAG/D,gBAAgB,CAAC;IACf,KAAK,EAAE,aAAa,CAAC,aAAa;IAClC,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,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import {Constant, Inject, InjectorService, LOGGER, Module, Provider} from "@tsed/di";
|
|
2
|
-
import type {ListenerFn} from "eventemitter2";
|
|
3
|
-
|
|
4
|
-
import {EventEmitterStore} from "./interfaces/EventEmitterStore.js";
|
|
5
|
-
import {EventEmitterService} from "./services/EventEmitterFactory.js";
|
|
6
|
-
|
|
7
|
-
@Module()
|
|
8
|
-
export class EventEmitterModule {
|
|
9
|
-
@Inject(LOGGER)
|
|
10
|
-
protected logger: LOGGER;
|
|
11
|
-
|
|
12
|
-
@Inject()
|
|
13
|
-
protected injector: InjectorService;
|
|
14
|
-
|
|
15
|
-
@Inject()
|
|
16
|
-
protected eventEmitter: EventEmitterService;
|
|
17
|
-
|
|
18
|
-
@Constant("eventEmitter.disableSummary", false)
|
|
19
|
-
private disableSummary: boolean;
|
|
20
|
-
|
|
21
|
-
@Constant("eventEmitter.enabled", false)
|
|
22
|
-
private loadEventEmitter: boolean;
|
|
23
|
-
|
|
24
|
-
$onInit() {
|
|
25
|
-
if (this.loadEventEmitter) {
|
|
26
|
-
const providers = this.injector.getProviders();
|
|
27
|
-
providers.forEach((provider) => this.bindEventListeners(provider));
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
$onReady() {
|
|
32
|
-
if (this.loadEventEmitter) {
|
|
33
|
-
if (!this.disableSummary) {
|
|
34
|
-
this.printEvents();
|
|
35
|
-
}
|
|
36
|
-
this.logger.info("EventEmitter listening...");
|
|
37
|
-
} else {
|
|
38
|
-
this.logger.info("EventEmitter disabled...");
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
public printEvents() {
|
|
43
|
-
const list = this.eventEmitter.eventNames().map((eventName) => {
|
|
44
|
-
const listenerCount = this.eventEmitter.listenerCount(eventName).toString();
|
|
45
|
-
|
|
46
|
-
return {
|
|
47
|
-
eventName,
|
|
48
|
-
listenerCount
|
|
49
|
-
};
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
this.logger.info("EventEmitter events mounted:");
|
|
53
|
-
|
|
54
|
-
const str = this.logger.drawTable(list, {
|
|
55
|
-
padding: 1,
|
|
56
|
-
header: {
|
|
57
|
-
eventName: "Event name",
|
|
58
|
-
listenerCount: "Number of listener"
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
this.logger.info("\n" + str.trim());
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
private bindEventListeners(provider: Provider<any>) {
|
|
66
|
-
this.bindOn(provider);
|
|
67
|
-
this.bindOnAny(provider);
|
|
68
|
-
}
|
|
69
|
-
|
|
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
|
-
}
|
|
74
|
-
|
|
75
|
-
private bindOn(provider: Provider) {
|
|
76
|
-
const store = provider.store.get<EventEmitterStore | undefined>("eventEmitter");
|
|
77
|
-
|
|
78
|
-
Object.entries(store?.onEvent || {}).forEach(([propertyKey, {event, options}]) => {
|
|
79
|
-
const listenerFn = this.getListener(provider, propertyKey);
|
|
80
|
-
|
|
81
|
-
this.eventEmitter.on(event, listenerFn, options);
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
|
|
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);
|
|
90
|
-
|
|
91
|
-
this.eventEmitter.onAny(listenerFn);
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import {Store} from "@tsed/core";
|
|
2
|
-
|
|
3
|
-
import {OnAny} from "./onAny.js";
|
|
4
|
-
|
|
5
|
-
describe("@OnAny()", () => {
|
|
6
|
-
it("should set metadata", () => {
|
|
7
|
-
class Test {
|
|
8
|
-
@OnAny()
|
|
9
|
-
testAnyEventListener() {
|
|
10
|
-
// test
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const store = Store.from(Test);
|
|
15
|
-
|
|
16
|
-
expect(store.get("eventEmitter")).toEqual({
|
|
17
|
-
onAny: {
|
|
18
|
-
testAnyEventListener: {}
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
});
|
package/src/decorators/onAny.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import {Store} from "@tsed/core";
|
|
2
|
-
|
|
3
|
-
import {EventEmitterStore} from "../interfaces/EventEmitterStore.js";
|
|
4
|
-
|
|
5
|
-
export function OnAny(): MethodDecorator {
|
|
6
|
-
return (target: any, propertyKey: string) => {
|
|
7
|
-
const store: EventEmitterStore = {
|
|
8
|
-
onAny: {
|
|
9
|
-
[propertyKey]: {}
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
Store.from(target).merge("eventEmitter", store);
|
|
14
|
-
};
|
|
15
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import {Store} from "@tsed/core";
|
|
2
|
-
|
|
3
|
-
import {OnEvent} from "../decorators/onEvent.js";
|
|
4
|
-
|
|
5
|
-
describe("@OnEvent()", () => {
|
|
6
|
-
it("should set metadata", () => {
|
|
7
|
-
class Test {
|
|
8
|
-
@OnEvent("testEvent")
|
|
9
|
-
testEventListener1() {
|
|
10
|
-
// test
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
@OnEvent("testEvent2", {async: true})
|
|
14
|
-
async testEventListener2() {
|
|
15
|
-
// test
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const store = Store.from(Test);
|
|
20
|
-
|
|
21
|
-
expect(store.get("eventEmitter")).toEqual({
|
|
22
|
-
onEvent: {
|
|
23
|
-
testEventListener1: {
|
|
24
|
-
event: "testEvent",
|
|
25
|
-
options: undefined
|
|
26
|
-
},
|
|
27
|
-
testEventListener2: {
|
|
28
|
-
event: "testEvent2",
|
|
29
|
-
options: {
|
|
30
|
-
async: true
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
});
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import {Store} from "@tsed/core";
|
|
2
|
-
import {event, eventNS, OnOptions} from "eventemitter2";
|
|
3
|
-
|
|
4
|
-
import {EventEmitterStore} from "../interfaces/EventEmitterStore.js";
|
|
5
|
-
|
|
6
|
-
export function OnEvent(event: event | eventNS, options?: boolean | OnOptions): MethodDecorator {
|
|
7
|
-
return (target: any, propertyKey: string) => {
|
|
8
|
-
const store: EventEmitterStore = {
|
|
9
|
-
onEvent: {
|
|
10
|
-
[propertyKey]: {event, options}
|
|
11
|
-
}
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
Store.from(target).merge("eventEmitter", store);
|
|
15
|
-
};
|
|
16
|
-
}
|
package/src/index.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file Automatically generated by @tsed/barrels.
|
|
3
|
-
*/
|
|
4
|
-
export * from "./decorators/onAny.js";
|
|
5
|
-
export * from "./decorators/onEvent.js";
|
|
6
|
-
export * from "./EventEmitterModule.js";
|
|
7
|
-
export * from "./interfaces/EventEmitterStore.js";
|
|
8
|
-
export * from "./interfaces/interfaces.js";
|
|
9
|
-
export * from "./services/EventEmitterFactory.js";
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import {ConstructorOptions} from "eventemitter2";
|
|
2
|
-
|
|
3
|
-
declare global {
|
|
4
|
-
namespace TsED {
|
|
5
|
-
interface Configuration {
|
|
6
|
-
eventEmitter?: {
|
|
7
|
-
/**
|
|
8
|
-
* Enable Event Emitter. Default `false`.
|
|
9
|
-
*/
|
|
10
|
-
enabled?: boolean;
|
|
11
|
-
/**
|
|
12
|
-
* Disable event table displayed in the logger. Default `false`.
|
|
13
|
-
*/
|
|
14
|
-
disableSummary?: boolean;
|
|
15
|
-
} & ConstructorOptions;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import {Configuration, registerProvider} from "@tsed/di";
|
|
2
|
-
import type {ConstructorOptions} from "eventemitter2";
|
|
3
|
-
import eventEmitter2 from "eventemitter2";
|
|
4
|
-
|
|
5
|
-
export const EventEmitterService = eventEmitter2.EventEmitter2;
|
|
6
|
-
export type EventEmitterService = eventEmitter2.EventEmitter2;
|
|
7
|
-
|
|
8
|
-
registerProvider({
|
|
9
|
-
token: eventEmitter2.EventEmitter2,
|
|
10
|
-
deps: [Configuration],
|
|
11
|
-
useFactory(settings: Configuration) {
|
|
12
|
-
const opts = settings.get<ConstructorOptions & {enabled: boolean}>("eventEmitter", {enabled: false});
|
|
13
|
-
return opts.enabled ? new eventEmitter2.EventEmitter2(opts) : {};
|
|
14
|
-
}
|
|
15
|
-
});
|
package/vite.config.mts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import {defineConfig} from "vite";
|
|
2
|
-
import {join} from "node:path";
|
|
3
|
-
import {extname, relative} from "path";
|
|
4
|
-
import {fileURLToPath} from "node:url";
|
|
5
|
-
import {globbySync} from "globby";
|
|
6
|
-
|
|
7
|
-
// https://vitejs.dev/config/
|
|
8
|
-
export default defineConfig({
|
|
9
|
-
plugins: [],
|
|
10
|
-
build: {
|
|
11
|
-
assetsInlineLimit: 0,
|
|
12
|
-
sourcemap: true,
|
|
13
|
-
outDir: "lib/browser",
|
|
14
|
-
lib: {
|
|
15
|
-
entry: join(import.meta.dirname, "src/index.ts"),
|
|
16
|
-
formats: ["es"]
|
|
17
|
-
},
|
|
18
|
-
rollupOptions: {
|
|
19
|
-
external: [/node_modules\/(.*)/, /^@tsed\//],
|
|
20
|
-
input: Object.fromEntries(
|
|
21
|
-
globbySync("src/**/*.ts", {
|
|
22
|
-
ignore: [
|
|
23
|
-
"**/*.spec.{ts,tsx}",
|
|
24
|
-
"**/*.stories.{ts,tsx}",
|
|
25
|
-
"**/__mocks__/**",
|
|
26
|
-
"**/__mock__/**",
|
|
27
|
-
"**/interfaces/**"
|
|
28
|
-
]
|
|
29
|
-
}).map((file) => [
|
|
30
|
-
// The name of the entry point
|
|
31
|
-
// lib/nested/foo.ts becomes nested/foo
|
|
32
|
-
relative("src", file.slice(0, file.length - extname(file).length)),
|
|
33
|
-
// The absolute path to the entry file
|
|
34
|
-
// lib/nested/foo.ts becomes /project/lib/nested/foo.ts
|
|
35
|
-
fileURLToPath(new URL(file, import.meta.url))
|
|
36
|
-
])
|
|
37
|
-
),
|
|
38
|
-
output: {
|
|
39
|
-
assetFileNames: "assets/[name][extname]",
|
|
40
|
-
chunkFileNames: "chunks/[name].js",
|
|
41
|
-
entryFileNames: "[name].js"
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
});
|
package/vitest.config.mts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
// @ts-ignore
|
|
2
|
-
import {presets} from "@tsed/vitest/presets";
|
|
3
|
-
import {defineConfig} from "vitest/config";
|
|
4
|
-
|
|
5
|
-
export default defineConfig(
|
|
6
|
-
{
|
|
7
|
-
...presets,
|
|
8
|
-
test: {
|
|
9
|
-
...presets.test,
|
|
10
|
-
coverage: {
|
|
11
|
-
...presets.test.coverage,
|
|
12
|
-
thresholds: {
|
|
13
|
-
statements: 0,
|
|
14
|
-
branches: 0,
|
|
15
|
-
functions: 0,
|
|
16
|
-
lines: 0
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
);
|