UNPKG

@benev/slate

Version:
25 lines (24 loc) 627 B
export type PubsubListener<A extends any[]> = (...a: A) => (void | Promise<void>); export interface Pubsub<A extends any[] = []> { (fn: PubsubListener<A>): () => void; publish(...a: A): Promise<void>; once(): Promise<A>; clear(): void; } /** * simple pub-sub mechanism. * * // create pubsub function * const onCount = pubsub<[string, number]>() * * // subscribe * const stop = onCount((a, b) => console.log(a, b)) * * // publish * onWhatever.publish("count", 123) * * // unsubscribe * stop() * */ export declare function pubsub<A extends any[] = []>(): Pubsub<A>;