import { Observable } from "rxjs" import { filter } from "rxjs/operators" import { MessagingServerConnectionStatusEvent, MessagingServerStatusEvent, MessagingServerStatusEventName, } from "../types" export const ofMessagingServerStatusEvent = (...types: T[]) => (source$: Observable): Observable> => // @ts-expect-error - TypeScript does not handle this generic well source$.pipe(filter((e: MessagingServerStatusEvent): boolean => types.includes(e.type))) export const ofMessagingServerConnectionClosed = (connectionId: string) => (source$: Observable): Observable => source$.pipe( ofMessagingServerStatusEvent(MessagingServerStatusEventName.ConnectionClosed), filter((e: MessagingServerConnectionStatusEvent) => e.connectionId === connectionId), )