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 };
};