@hg-ts/events 0.5.40 → 0.7.3
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/dist/event-handling/event-listener-manager.d.ts +4 -3
- package/dist/event-handling/event-listener-manager.d.ts.map +1 -1
- package/dist/event-handling/event-listener-manager.js +16 -2
- package/dist/event-handling/event-listener-manager.js.map +1 -1
- package/dist/events.module.d.ts +3 -0
- package/dist/events.module.d.ts.map +1 -0
- package/dist/events.module.js +14 -0
- package/dist/events.module.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +11 -5
- package/src/event-handling/event-listener-manager.ts +13 -3
- package/src/events.module.ts +14 -0
- package/src/index.ts +2 -0
- package/dist/tests/event-listener-manager.test.d.ts +0 -8
- package/dist/tests/event-listener-manager.test.d.ts.map +0 -1
- package/dist/tests/event-listener-manager.test.js +0 -79
- package/dist/tests/event-listener-manager.test.js.map +0 -1
- package/src/tests/event-listener-manager.test.ts +0 -76
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
|
-
import
|
|
3
|
-
export declare class EventListenerManager {
|
|
2
|
+
import { OnModuleInit } from '@nestjs/common';
|
|
3
|
+
export declare class EventListenerManager implements OnModuleInit {
|
|
4
4
|
private readonly eventPublisher;
|
|
5
|
-
|
|
5
|
+
private readonly discoveryService;
|
|
6
|
+
onModuleInit(): Promise<void>;
|
|
6
7
|
addListener(instance: unknown): void;
|
|
7
8
|
}
|
|
8
9
|
//# sourceMappingURL=event-listener-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-listener-manager.d.ts","sourceRoot":"","sources":["../../src/event-handling/event-listener-manager.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"event-listener-manager.d.ts","sourceRoot":"","sources":["../../src/event-handling/event-listener-manager.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAEN,YAAY,EACZ,MAAM,gBAAgB,CAAC;AAYxB,qBAAa,oBAAqB,YAAW,YAAY;IAExD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAEhD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IAEvC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAMnC,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;CAkB3C"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
1
2
|
import 'reflect-metadata';
|
|
3
|
+
import { Inject, } from '@nestjs/common';
|
|
4
|
+
import { DiscoveryService } from '@nestjs/core';
|
|
2
5
|
import { getEventsToHandle, getListenMethods, isEventListener, } from '../decorators/index.js';
|
|
3
6
|
export class EventListenerManager {
|
|
4
7
|
eventPublisher;
|
|
5
|
-
|
|
6
|
-
|
|
8
|
+
discoveryService;
|
|
9
|
+
async onModuleInit() {
|
|
10
|
+
this.discoveryService.getProviders()
|
|
11
|
+
.filter(provider => !!provider.instance)
|
|
12
|
+
.forEach(provider => this.addListener(provider.instance));
|
|
7
13
|
}
|
|
8
14
|
addListener(instance) {
|
|
9
15
|
const proto = Object.getPrototypeOf(instance);
|
|
@@ -21,4 +27,12 @@ export class EventListenerManager {
|
|
|
21
27
|
});
|
|
22
28
|
}
|
|
23
29
|
}
|
|
30
|
+
__decorate([
|
|
31
|
+
Inject(),
|
|
32
|
+
__metadata("design:type", Function)
|
|
33
|
+
], EventListenerManager.prototype, "eventPublisher", void 0);
|
|
34
|
+
__decorate([
|
|
35
|
+
Inject(),
|
|
36
|
+
__metadata("design:type", DiscoveryService)
|
|
37
|
+
], EventListenerManager.prototype, "discoveryService", void 0);
|
|
24
38
|
//# sourceMappingURL=event-listener-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-listener-manager.js","sourceRoot":"","sources":["../../src/event-handling/event-listener-manager.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"event-listener-manager.js","sourceRoot":"","sources":["../../src/event-handling/event-listener-manager.ts"],"names":[],"mappings":";AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EACN,MAAM,GAEN,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAEN,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,GACf,MAAM,wBAAwB,CAAC;AAIhC,MAAM,OAAO,oBAAoB;IAEf,cAAc,CAAiB;IAE/B,gBAAgB,CAAmB;IAE7C,KAAK,CAAC,YAAY;QACxB,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;aAClC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;aACvC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5D,CAAC;IAEM,WAAW,CAAC,QAAiB;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YACvC,OAAO;QACR,CAAC;QAED,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAiC,QAAe,CAAC;QAE/D,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAiB,CAAC;YACnE,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YAE5D,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBAClC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;CACD;AA5BiB;IADhB,MAAM,EAAE;;4DACuC;AAE/B;IADhB,MAAM,EAAE;8BAC0B,gBAAgB;8DAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.module.d.ts","sourceRoot":"","sources":["../src/events.module.ts"],"names":[],"mappings":"AASA,qBAIa,YAAY;CAAG"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Module } from '@nestjs/common';
|
|
3
|
+
import { DiscoveryModule } from '@nestjs/core';
|
|
4
|
+
import { EventEmitter, EventListenerManager, EventPublisher, } from './event-handling/index.js';
|
|
5
|
+
let EventsModule = class EventsModule {
|
|
6
|
+
};
|
|
7
|
+
EventsModule = __decorate([
|
|
8
|
+
Module({
|
|
9
|
+
imports: [DiscoveryModule],
|
|
10
|
+
providers: [EventPublisher, EventEmitter, EventListenerManager],
|
|
11
|
+
})
|
|
12
|
+
], EventsModule);
|
|
13
|
+
export { EventsModule };
|
|
14
|
+
//# sourceMappingURL=events.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.module.js","sourceRoot":"","sources":["../src/events.module.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EACN,YAAY,EACZ,oBAAoB,EACpB,cAAc,GACd,MAAM,2BAA2B,CAAC;AAM5B,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,YAAY;IAJxB,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,eAAe,CAAC;QAC1B,SAAS,EAAE,CAAC,cAAc,EAAE,YAAY,EAAE,oBAAoB,CAAC;KAC/D,CAAC;GACW,YAAY,CAAG"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,oBAAoB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hg-ts/events",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.3",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -18,14 +18,17 @@
|
|
|
18
18
|
"test:dev": "vitest watch"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"@hg-ts-config/typescript": "0.
|
|
22
|
-
"@hg-ts/linter": "0.
|
|
23
|
-
"@hg-ts/tests": "0.
|
|
24
|
-
"@hg-ts/types": "0.
|
|
21
|
+
"@hg-ts-config/typescript": "0.7.3",
|
|
22
|
+
"@hg-ts/linter": "0.7.3",
|
|
23
|
+
"@hg-ts/tests": "0.7.3",
|
|
24
|
+
"@hg-ts/types": "0.7.3",
|
|
25
|
+
"@nestjs/common": "11.1.0",
|
|
26
|
+
"@nestjs/core": "11.1.0",
|
|
25
27
|
"@types/node": "22.19.1",
|
|
26
28
|
"@vitest/coverage-v8": "4.0.14",
|
|
27
29
|
"eslint": "9.18.0",
|
|
28
30
|
"reflect-metadata": "0.2.2",
|
|
31
|
+
"rxjs": "7.8.1",
|
|
29
32
|
"ts-node": "10.9.2",
|
|
30
33
|
"tsc-watch": "6.3.0",
|
|
31
34
|
"tslib": "2.8.1",
|
|
@@ -33,7 +36,10 @@
|
|
|
33
36
|
"vitest": "4.0.14"
|
|
34
37
|
},
|
|
35
38
|
"peerDependencies": {
|
|
39
|
+
"@nestjs/common": "*",
|
|
40
|
+
"@nestjs/core": "*",
|
|
36
41
|
"reflect-metadata": "*",
|
|
42
|
+
"rxjs": "*",
|
|
37
43
|
"tslib": "*",
|
|
38
44
|
"vitest": "*"
|
|
39
45
|
}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
|
+
import {
|
|
3
|
+
Inject,
|
|
4
|
+
OnModuleInit,
|
|
5
|
+
} from '@nestjs/common';
|
|
6
|
+
import { DiscoveryService } from '@nestjs/core';
|
|
2
7
|
|
|
3
8
|
import {
|
|
4
9
|
EventHandler,
|
|
@@ -9,11 +14,16 @@ import {
|
|
|
9
14
|
|
|
10
15
|
import type { EventPublisher } from './event-publisher.js';
|
|
11
16
|
|
|
12
|
-
export class EventListenerManager {
|
|
17
|
+
export class EventListenerManager implements OnModuleInit {
|
|
18
|
+
@Inject()
|
|
13
19
|
private readonly eventPublisher: EventPublisher;
|
|
20
|
+
@Inject()
|
|
21
|
+
private readonly discoveryService: DiscoveryService;
|
|
14
22
|
|
|
15
|
-
public
|
|
16
|
-
this.
|
|
23
|
+
public async onModuleInit(): Promise<void> {
|
|
24
|
+
this.discoveryService.getProviders()
|
|
25
|
+
.filter(provider => !!provider.instance)
|
|
26
|
+
.forEach(provider => this.addListener(provider.instance));
|
|
17
27
|
}
|
|
18
28
|
|
|
19
29
|
public addListener(instance: unknown): void {
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Module } from '@nestjs/common';
|
|
2
|
+
import { DiscoveryModule } from '@nestjs/core';
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
EventEmitter,
|
|
6
|
+
EventListenerManager,
|
|
7
|
+
EventPublisher,
|
|
8
|
+
} from './event-handling/index.js';
|
|
9
|
+
|
|
10
|
+
@Module({
|
|
11
|
+
imports: [DiscoveryModule],
|
|
12
|
+
providers: [EventPublisher, EventEmitter, EventListenerManager],
|
|
13
|
+
})
|
|
14
|
+
export class EventsModule {}
|
package/src/index.ts
CHANGED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Suite } from '@hg-ts/tests';
|
|
2
|
-
export declare class EventPublisherTestSuite extends Suite {
|
|
3
|
-
private publisher;
|
|
4
|
-
private eventListenerManager;
|
|
5
|
-
addListener(): Promise<void>;
|
|
6
|
-
beforeEach(): Promise<void>;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=event-listener-manager.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event-listener-manager.test.d.ts","sourceRoot":"","sources":["../../src/tests/event-listener-manager.test.ts"],"names":[],"mappings":"AACA,OAAO,EAGN,KAAK,EAEL,MAAM,cAAc,CAAC;AAWtB,qBACa,uBAAwB,SAAQ,KAAK;IACjD,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,oBAAoB,CAAuB;IAGtC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAgDnB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAIjD"}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { Describe, expect, Suite, Test, } from '@hg-ts/tests';
|
|
3
|
-
import { BaseEvent } from '../base.event.js';
|
|
4
|
-
import { Listen } from '../decorators/index.js';
|
|
5
|
-
import { EmptyEvent } from '../empty.event.js';
|
|
6
|
-
import { EventListenerManager, EventPublisher, } from '../event-handling/index.js';
|
|
7
|
-
let EventPublisherTestSuite = class EventPublisherTestSuite extends Suite {
|
|
8
|
-
publisher;
|
|
9
|
-
eventListenerManager;
|
|
10
|
-
async addListener() {
|
|
11
|
-
class TestEvent extends BaseEvent {
|
|
12
|
-
constructor() {
|
|
13
|
-
super({ body: {} });
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
class ExtendedEvent extends TestEvent {
|
|
17
|
-
}
|
|
18
|
-
class Listener {
|
|
19
|
-
called = new Map();
|
|
20
|
-
async empty(event) {
|
|
21
|
-
this.check(event, EmptyEvent);
|
|
22
|
-
}
|
|
23
|
-
async test(event) {
|
|
24
|
-
this.check(event, TestEvent);
|
|
25
|
-
}
|
|
26
|
-
async extended(event) {
|
|
27
|
-
this.check(event, ExtendedEvent);
|
|
28
|
-
}
|
|
29
|
-
check(event, ctor) {
|
|
30
|
-
let count = this.called.get(ctor) ?? 0;
|
|
31
|
-
expect(event).toBeInstanceOf(ctor);
|
|
32
|
-
count++;
|
|
33
|
-
this.called.set(ctor, count);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
__decorate([
|
|
37
|
-
Listen(EmptyEvent),
|
|
38
|
-
__metadata("design:type", Function),
|
|
39
|
-
__metadata("design:paramtypes", [EmptyEvent]),
|
|
40
|
-
__metadata("design:returntype", Promise)
|
|
41
|
-
], Listener.prototype, "empty", null);
|
|
42
|
-
__decorate([
|
|
43
|
-
Listen(TestEvent),
|
|
44
|
-
__metadata("design:type", Function),
|
|
45
|
-
__metadata("design:paramtypes", [TestEvent]),
|
|
46
|
-
__metadata("design:returntype", Promise)
|
|
47
|
-
], Listener.prototype, "test", null);
|
|
48
|
-
__decorate([
|
|
49
|
-
Listen(ExtendedEvent),
|
|
50
|
-
__metadata("design:type", Function),
|
|
51
|
-
__metadata("design:paramtypes", [ExtendedEvent]),
|
|
52
|
-
__metadata("design:returntype", Promise)
|
|
53
|
-
], Listener.prototype, "extended", null);
|
|
54
|
-
const listener = new Listener();
|
|
55
|
-
this.eventListenerManager.addListener(listener);
|
|
56
|
-
await this.publisher.publish(new EmptyEvent());
|
|
57
|
-
await this.publisher.publish(new TestEvent());
|
|
58
|
-
await this.publisher.publish(new ExtendedEvent());
|
|
59
|
-
expect(listener.called.get(EmptyEvent)).toBe(1);
|
|
60
|
-
expect(listener.called.get(TestEvent)).toBe(2);
|
|
61
|
-
expect(listener.called.get(ExtendedEvent)).toBe(1);
|
|
62
|
-
expect.assertions(7);
|
|
63
|
-
}
|
|
64
|
-
async beforeEach() {
|
|
65
|
-
this.publisher = new EventPublisher();
|
|
66
|
-
this.eventListenerManager = new EventListenerManager(this.publisher);
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
__decorate([
|
|
70
|
-
Test(),
|
|
71
|
-
__metadata("design:type", Function),
|
|
72
|
-
__metadata("design:paramtypes", []),
|
|
73
|
-
__metadata("design:returntype", Promise)
|
|
74
|
-
], EventPublisherTestSuite.prototype, "addListener", null);
|
|
75
|
-
EventPublisherTestSuite = __decorate([
|
|
76
|
-
Describe()
|
|
77
|
-
], EventPublisherTestSuite);
|
|
78
|
-
export { EventPublisherTestSuite };
|
|
79
|
-
//# sourceMappingURL=event-listener-manager.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event-listener-manager.test.js","sourceRoot":"","sources":["../../src/tests/event-listener-manager.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
// eslint-disable-next-line max-classes-per-file
|
|
2
|
-
import {
|
|
3
|
-
Describe,
|
|
4
|
-
expect,
|
|
5
|
-
Suite,
|
|
6
|
-
Test,
|
|
7
|
-
} from '@hg-ts/tests';
|
|
8
|
-
|
|
9
|
-
import { BaseEvent } from '../base.event.js';
|
|
10
|
-
import { Listen } from '../decorators/index.js';
|
|
11
|
-
import { EmptyEvent } from '../empty.event.js';
|
|
12
|
-
|
|
13
|
-
import {
|
|
14
|
-
EventListenerManager,
|
|
15
|
-
EventPublisher,
|
|
16
|
-
} from '../event-handling/index.js';
|
|
17
|
-
|
|
18
|
-
@Describe()
|
|
19
|
-
export class EventPublisherTestSuite extends Suite {
|
|
20
|
-
private publisher: EventPublisher;
|
|
21
|
-
private eventListenerManager: EventListenerManager;
|
|
22
|
-
|
|
23
|
-
@Test()
|
|
24
|
-
public async addListener(): Promise<void> {
|
|
25
|
-
class TestEvent extends BaseEvent<{}> {
|
|
26
|
-
public constructor() {
|
|
27
|
-
super({ body: {} });
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
class ExtendedEvent extends TestEvent {}
|
|
31
|
-
class Listener {
|
|
32
|
-
public called = new Map<Class<BaseEvent>, number>();
|
|
33
|
-
|
|
34
|
-
@Listen(EmptyEvent)
|
|
35
|
-
public async empty(event: EmptyEvent): Promise<void> {
|
|
36
|
-
this.check(event, EmptyEvent);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
@Listen(TestEvent)
|
|
40
|
-
public async test(event: TestEvent): Promise<void> {
|
|
41
|
-
this.check(event, TestEvent);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
@Listen(ExtendedEvent)
|
|
45
|
-
public async extended(event: ExtendedEvent): Promise<void> {
|
|
46
|
-
this.check(event, ExtendedEvent);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
private check(event: BaseEvent, ctor: Class<BaseEvent, any[]>): void {
|
|
50
|
-
let count = this.called.get(ctor) ?? 0;
|
|
51
|
-
|
|
52
|
-
expect(event).toBeInstanceOf(ctor);
|
|
53
|
-
count++;
|
|
54
|
-
|
|
55
|
-
this.called.set(ctor, count);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
const listener = new Listener();
|
|
59
|
-
|
|
60
|
-
this.eventListenerManager.addListener(listener);
|
|
61
|
-
|
|
62
|
-
await this.publisher.publish(new EmptyEvent());
|
|
63
|
-
await this.publisher.publish(new TestEvent());
|
|
64
|
-
await this.publisher.publish(new ExtendedEvent());
|
|
65
|
-
|
|
66
|
-
expect(listener.called.get(EmptyEvent)).toBe(1);
|
|
67
|
-
expect(listener.called.get(TestEvent)).toBe(2);
|
|
68
|
-
expect(listener.called.get(ExtendedEvent)).toBe(1);
|
|
69
|
-
|
|
70
|
-
expect.assertions(7);
|
|
71
|
-
}
|
|
72
|
-
public override async beforeEach(): Promise<void> {
|
|
73
|
-
this.publisher = new EventPublisher();
|
|
74
|
-
this.eventListenerManager = new EventListenerManager(this.publisher);
|
|
75
|
-
}
|
|
76
|
-
}
|