const listeners = new Map(); export function on(event, fn) { const arr = listeners.get(event) || []; arr.push(fn); listeners.set(event, arr); return () => off(event, fn); } export function off(event, fn) { const arr = listeners.get(event) || []; listeners.set(event, arr.filter(x => x !== fn)); } export function emit(event, payload) { (listeners.get(event) || []).forEach(fn => fn(payload)); }