type Listener = (data: any) => void; const listeners: Record = {}; export const trigger = (key: string, data: any) => { if (listeners[key]) { listeners[key].forEach((item) => item(data)); } }; export const subscribe = (key: string, listener: Listener) => { if (!listeners[key]) { listeners[key] = []; } listeners[key].push(listener); return function unsubscribe() { const index = listeners[key].indexOf(listener); listeners[key].splice(index, 1); }; };