create-pubsub
Version:
A tiny Event Emitter and Observable Store.
24 lines (19 loc) • 887 B
TypeScript
import { Draft } from 'immer';
type SubscriptionHandler<T = void> = (data: T, previousData: T) => void;
type PublishFunction<T = void> = (data: T) => void;
type UnsubscribeFunction = () => void;
type GetFunction<T> = () => T;
type SubscribeFunction<T> = (handler: SubscriptionHandler<T>) => UnsubscribeFunction;
type DraftFunction<T> = (draft: Draft<T>) => void;
type PublishImmerFunction<T> = (draftFunction: DraftFunction<T>) => void;
declare function usePubSub<T>([publish, subscribe, get]: [
publish: PublishFunction<T>,
subscribe: SubscribeFunction<T>,
getStoredData: GetFunction<T>
]): [data: T, publish: PublishFunction<T>];
declare function usePubSub<T>([publish, subscribe, get]: [
publish: PublishImmerFunction<T>,
subscribe: SubscribeFunction<T>,
getStoredData: GetFunction<T>
]): [data: T, publish: PublishImmerFunction<T>];
export { usePubSub };