@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.
Files changed (36) hide show
  1. package/lib/esm/EventEmitterModule.js +0 -1
  2. package/lib/esm/decorators/onAny.js +0 -1
  3. package/lib/esm/decorators/onEvent.js +0 -1
  4. package/lib/esm/index.js +0 -1
  5. package/lib/esm/interfaces/EventEmitterStore.js +0 -1
  6. package/lib/esm/interfaces/interfaces.js +0 -1
  7. package/lib/esm/services/EventEmitterFactory.js +0 -1
  8. package/package.json +13 -11
  9. package/lib/browser/EventEmitterModule.js +0 -76
  10. package/lib/browser/EventEmitterModule.js.map +0 -1
  11. package/lib/browser/decorators/onAny.js +0 -15
  12. package/lib/browser/decorators/onAny.js.map +0 -1
  13. package/lib/browser/decorators/onEvent.js +0 -15
  14. package/lib/browser/decorators/onEvent.js.map +0 -1
  15. package/lib/browser/index.js +0 -11
  16. package/lib/browser/index.js.map +0 -1
  17. package/lib/browser/services/EventEmitterFactory.js +0 -15
  18. package/lib/browser/services/EventEmitterFactory.js.map +0 -1
  19. package/lib/esm/EventEmitterModule.js.map +0 -1
  20. package/lib/esm/decorators/onAny.js.map +0 -1
  21. package/lib/esm/decorators/onEvent.js.map +0 -1
  22. package/lib/esm/index.js.map +0 -1
  23. package/lib/esm/interfaces/EventEmitterStore.js.map +0 -1
  24. package/lib/esm/interfaces/interfaces.js.map +0 -1
  25. package/lib/esm/services/EventEmitterFactory.js.map +0 -1
  26. package/src/EventEmitterModule.ts +0 -94
  27. package/src/decorators/onAny.spec.ts +0 -22
  28. package/src/decorators/onAny.ts +0 -15
  29. package/src/decorators/onEvent.spec.ts +0 -36
  30. package/src/decorators/onEvent.ts +0 -16
  31. package/src/index.ts +0 -9
  32. package/src/interfaces/EventEmitterStore.ts +0 -6
  33. package/src/interfaces/interfaces.ts +0 -18
  34. package/src/services/EventEmitterFactory.ts +0 -15
  35. package/vite.config.mts +0 -45
  36. package/vitest.config.mts +0 -21
@@ -84,4 +84,3 @@ EventEmitterModule = __decorate([
84
84
  Module()
85
85
  ], EventEmitterModule);
86
86
  export { EventEmitterModule };
87
- //# sourceMappingURL=EventEmitterModule.js.map
@@ -9,4 +9,3 @@ export function OnAny() {
9
9
  Store.from(target).merge("eventEmitter", store);
10
10
  };
11
11
  }
12
- //# sourceMappingURL=onAny.js.map
@@ -9,4 +9,3 @@ export function OnEvent(event, options) {
9
9
  Store.from(target).merge("eventEmitter", store);
10
10
  };
11
11
  }
12
- //# sourceMappingURL=onEvent.js.map
package/lib/esm/index.js CHANGED
@@ -7,4 +7,3 @@ export * from "./EventEmitterModule.js";
7
7
  export * from "./interfaces/EventEmitterStore.js";
8
8
  export * from "./interfaces/interfaces.js";
9
9
  export * from "./services/EventEmitterFactory.js";
10
- //# sourceMappingURL=index.js.map
@@ -1,2 +1 @@
1
1
  export {};
2
- //# sourceMappingURL=EventEmitterStore.js.map
@@ -1,2 +1 @@
1
1
  export {};
2
- //# sourceMappingURL=interfaces.js.map
@@ -9,4 +9,3 @@ registerProvider({
9
9
  return opts.enabled ? new eventEmitter2.EventEmitter2(opts) : {};
10
10
  }
11
11
  });
12
- //# sourceMappingURL=EventEmitterFactory.js.map
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/browser/index.cjs",
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/browser/index.cjs",
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 && yarn run build:browser",
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,15 +0,0 @@
1
- import { Store as n } from "@tsed/core";
2
- function m() {
3
- return (r, t) => {
4
- const e = {
5
- onAny: {
6
- [t]: {}
7
- }
8
- };
9
- n.from(r).merge("eventEmitter", e);
10
- };
11
- }
12
- export {
13
- m as OnAny
14
- };
15
- //# sourceMappingURL=onAny.js.map
@@ -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;"}
@@ -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
@@ -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"}
@@ -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
- });
@@ -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,6 +0,0 @@
1
- import type {event, eventNS, OnOptions} from "eventemitter2";
2
-
3
- export interface EventEmitterStore {
4
- onEvent?: {[propertyKey: string]: {event: event | eventNS; options?: boolean | OnOptions}};
5
- onAny?: {[propertyKey: string]: {}};
6
- }
@@ -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
- );