Um sistema de eventos tipado para o seu front-end.
Fox Events é um pub/sub leve baseado em CustomEvent. Emita e escute eventos com histórico, persistência opcional via IndexedDB e bridge para React Native WebView.
Instalação
npm install fox-events
yarn
yarn add fox-events
Quickstart
ts
import { Fox } from "fox-events";
const userLogin = Fox.channel<{ userId: string }>("user:login");
userLogin.on((payload) => {
console.log("Login:", payload.userId);
});
userLogin.emit({ userId: "u-1" });
const first = await userLogin.once();
console.log("First login:", first.userId);
Tudo que você precisa, nada que você não precisa.
Uma API pequena, com ergonomia e tipagem, pensada para apps, micro-frontends e integrações.
Canais tipados
Use Fox.channel<T>() para tipar emit/on/once com segurança.
Sync e async
emit() instantâneo ou emitAsync() aguardando persistência quando necessário.
Trail (histórico)
Inspecione published/received/unsubscribed e exporte texto para debugar.
Persistência opcional
Persistência com IndexedDB via fox-events/storage (autoPersist + hydrate).
Scopes
Isolamento por escopo com Fox.forScope() — ótimo para micro-frontends.
Bridge RN <-> WebView
Eventos fluindo entre React Native e WebView via postMessage, com filtro e direção.
Documentação (por módulo)
Começando
Instalação, canais, emit, on, once, trail
Publishers e listeners
Modelo mental: quem publica, quem escuta, canal, on vs once, timeout, boas práticas
Trail (Histórico)
Histórico de eventos, published/received/unsubscribed, toText, maxHistory, trail global
Storage
Persistência IndexedDB, hydrate, keyPrefix
Bridge React Native
Mensagens RN ↔ WebView
Gerenciando bridge e adapter
Formas de gerenciar o bridge (web) e createFoxRNAdapter (RN): global, dispose, Provider, useFox
Middleware
useMiddleware, hooks onEmit
Canais com Escopo
Fox.forScope, registros isolados
EventMap
API estática tipada emit/on/once
Centralizar eventos (foxes.ts)
Boas práticas para um único mapa de eventos e canais
Casos de uso
Micro-frontends, wizards, dashboards, jogos, e-commerce, plugins e mais