Subscribe to an event
(event: K, callback: EventCallback<K>)
| 34 | |
| 35 | /** Subscribe to an event */ |
| 36 | on<K extends keyof EventMap>(event: K, callback: EventCallback<K>): () => void { |
| 37 | if (!this.listeners.has(event)) { |
| 38 | this.listeners.set(event, new Set()); |
| 39 | } |
| 40 | this.listeners.get(event)!.add(callback as EventCallback<keyof EventMap>); |
| 41 | |
| 42 | // Return unsubscribe function |
| 43 | return () => { |
| 44 | this.listeners.get(event)?.delete(callback as EventCallback<keyof EventMap>); |
| 45 | }; |
| 46 | } |
| 47 | |
| 48 | /** Subscribe to an event, auto-unsubscribe after first invocation */ |
| 49 | once<K extends keyof EventMap>(event: K, callback: EventCallback<K>): () => void { |
no test coverage detected