File tree Expand file tree Collapse file tree 3 files changed +13
-6
lines changed Expand file tree Collapse file tree 3 files changed +13
-6
lines changed Original file line number Diff line number Diff line change @@ -11,7 +11,7 @@ import { EventCallback, ListenerKey } from "./types";
11
11
* @typedef {EventsManager }
12
12
*/
13
13
export class EventsManager {
14
- private events : Map < ListenerKey , Set < EventCallback > > = new Map ( ) ;
14
+ private events : Map < ListenerKey , Set < EventCallback < any > > > = new Map ( ) ;
15
15
16
16
/**
17
17
* Just adds a new event listener by passing the event name and the callback function we want
@@ -22,7 +22,7 @@ export class EventsManager {
22
22
* @param {EventCallback } callback
23
23
* @returns {number }
24
24
*/
25
- public addListener ( eventName : ListenerKey , callback : EventCallback ) : number {
25
+ public addListener < T extends ListenerKey > ( eventName : T , callback : EventCallback < T > ) : number {
26
26
if ( ! this . events . has ( eventName ) ) {
27
27
this . events . set ( eventName , new Set ( ) ) ;
28
28
}
@@ -40,7 +40,7 @@ export class EventsManager {
40
40
* @param {ListenerKey } eventName
41
41
* @param {EventCallback } callback
42
42
*/
43
- public removeListener ( eventName : ListenerKey , callback : EventCallback ) : void {
43
+ public removeListener < T extends ListenerKey > ( eventName : T , callback : EventCallback < T > ) : void {
44
44
const callbacks = this . events . get ( eventName ) ;
45
45
46
46
if ( notNil ( callbacks ) ) {
Original file line number Diff line number Diff line change @@ -162,7 +162,7 @@ export default class Agent extends Startable.Controller {
162
162
* @param {ListenerKey } eventName
163
163
* @param {EventCallback } callback
164
164
*/
165
- addListener ( eventName : ListenerKey , callback : EventCallback ) {
165
+ addListener < T extends ListenerKey > ( eventName : T , callback : EventCallback < T > ) {
166
166
return this . events . addListener ( eventName , callback ) ;
167
167
}
168
168
@@ -173,7 +173,7 @@ export default class Agent extends Startable.Controller {
173
173
* @param {ListenerKey } eventName
174
174
* @param {EventCallback } callback
175
175
*/
176
- removeListener ( eventName : ListenerKey , callback : EventCallback ) : void {
176
+ removeListener < T extends ListenerKey > ( eventName : T , callback : EventCallback < T > ) : void {
177
177
return this . events . removeListener ( eventName , callback ) ;
178
178
}
179
179
Original file line number Diff line number Diff line change @@ -54,10 +54,17 @@ export type InvitationType = PrismOnboardingInvitation | OutOfBandInvitation;
54
54
export type MessageEventArg = Message [ ] ;
55
55
export type ConnectionEventArg = DIDPair ;
56
56
export type RevokeEventArg = Credential ;
57
- export type EventCallback = ( arg : MessageEventArg | ConnectionEventArg | RevokeEventArg ) => void ;
58
57
59
58
export enum ListenerKey {
60
59
MESSAGE = "message" ,
61
60
CONNECTION = "connection" ,
62
61
REVOKE = "revoke"
63
62
}
63
+
64
+
65
+ export type EventCallbacks = {
66
+ [ ListenerKey . MESSAGE ] : ( messages : MessageEventArg ) => void ;
67
+ [ ListenerKey . CONNECTION ] : ( connection : ConnectionEventArg ) => void ;
68
+ [ ListenerKey . REVOKE ] : ( revoke : RevokeEventArg ) => void ;
69
+ }
70
+ export type EventCallback < T extends ListenerKey > = EventCallbacks [ T ] ;
You can’t perform that action at this time.
0 commit comments