/** * devanshj/rxjs-from-emitter#4 - typed-emitter compatibility * * @see https://github.com/devanshj/rxjs-from-emitter/issues/4#issuecomment-665104646 */ /* eslint-disable no-use-before-define */ import { fromEvent as rxFromEvent, Observable, } from 'rxjs' import type { default as BaseTypedEmitter, EventMap } from '../index' type ObservedValue = A['length'] extends 0 ? void : A['length'] extends 1 ? A[0] : A interface FromTypedEvent { < Emitter extends TypedEmitter , EventName extends keyof Events , Events = Emitter extends TypedEmitter ? T : never >(emitter: Emitter, event: EventName): Observable any ? A : never>> } export type FromEvent = FromTypedEvent & typeof rxFromEvent interface TypedEmitter extends BaseTypedEmitter { /** * required by `FromEvent` * @see https://github.com/devanshj/rxjs-from-emitter/issues/4#issuecomment-665104646 */ __events: Events } export default TypedEmitter