import { DuplexStream, TransformStream } from "../streams"; /** * Dispatches a message to a listener */ export interface IBus { /** */ dispatch(message: T): U; } /** * Dispatches a message to a listener */ export interface IStreamableBus extends IBus> { /** */ dispatch(message: T): TransformStream; } export interface IMessageTester { testMessage(message: T): boolean; } export const testBusMessage = (target: any, message: any) => { return !!(target && (>target).testMessage && (>target).testMessage(message)); }