| 466 | } |
| 467 | |
| 468 | public on<TType extends EmittedFrom<TLogic>['type'] | '*'>( |
| 469 | type: TType, |
| 470 | handler: ( |
| 471 | emitted: EmittedFrom<TLogic> & |
| 472 | (TType extends '*' ? unknown : { type: TType }) |
| 473 | ) => void |
| 474 | ): Subscription { |
| 475 | let listeners = this.eventListeners.get(type); |
| 476 | if (!listeners) { |
| 477 | listeners = new Set(); |
| 478 | this.eventListeners.set(type, listeners); |
| 479 | } |
| 480 | const wrappedHandler = handler.bind(undefined); |
| 481 | listeners.add(wrappedHandler); |
| 482 | |
| 483 | return { |
| 484 | unsubscribe: () => { |
| 485 | listeners.delete(wrappedHandler); |
| 486 | } |
| 487 | }; |
| 488 | } |
| 489 | |
| 490 | public select<TSelected>( |
| 491 | selector: (snapshot: SnapshotFrom<TLogic>) => TSelected, |