export const createPubSub = () => { type CB = (data: DT) => void; const bus = new Map(); const pub = (data: DT): void => { bus.forEach((cb: CB) => cb(data)); }; const sub = (id: ID, cb: CB): (() => void) => { bus.set(id, cb); return (): void => { bus.delete(id); }; }; return { pub, sub }; };