(topic: E, cb: Events[E])
| 20 | } |
| 21 | |
| 22 | override on<E extends keyof Events>(topic: E, cb: Events[E]): () => void { |
| 23 | const listener = (e: MessageEvent) => { |
| 24 | if (!e.data || e.data.source !== this.destination || !e.data.topic) { |
| 25 | return; |
| 26 | } |
| 27 | if (e.data.topic === topic) { |
| 28 | (cb as () => void).apply(null, e.data.args); |
| 29 | } |
| 30 | }; |
| 31 | window.addEventListener('message', listener); |
| 32 | this.listeners.push(listener); |
| 33 | return () => { |
| 34 | this.listeners.splice(this.listeners.indexOf(listener), 1); |
| 35 | window.removeEventListener('message', listener); |
| 36 | }; |
| 37 | } |
| 38 | |
| 39 | override once<E extends keyof Events>(topic: E, cb: Events[E]): void { |
| 40 | const listener = (e: MessageEvent) => { |
no test coverage detected