export type PubSub = { publish: (data: T) => void; subscribe: (subscriber: (data: T) => void) => () => void; }; const pubsub = (): PubSub => { const subscribers = new Set(); return { publish: (data: unknown) => { subscribers.forEach((subscriber) => { setTimeout(() => subscriber(data), 0); }); }, subscribe: (subscriber: Function) => { subscribers.add(subscriber); return () => subscribers.delete(subscriber); }, }; }; export default pubsub;