Referência de eventos, RPC e contratos
Histórico, consultas, provedores versionados e limites de comunicação entre aplicações.
Use eventos para notificar fatos, RPC para aguardar uma resposta e contratos para compartilhar métodos versionados. Os três mecanismos operam dentro do runtime: uma solicitação RPC não cria transporte HTTP por si só.
Receptores e retorno
O callback de evento recebe WuEvent; um handler RPC recebe o payload e um segundo argumento de correlação, identidade e cancelamento. Um contrato entrega um proxy vivo para os métodos do provedor. Consulte comunicação para os primeiros exemplos de emit, on, request, handle, provide e consume.
wu.handle(channel, handler, options) preserva version, allow e replace. Dentro do lifecycle, context.wu.handle também adiciona a identidade e os grants da app; use essa facade para handlers de uma microapp.
Vida do provedor
const release = wu.eventBus.handle('catalog:lookup', ({ productId }) => {
return { productId, available: true };
}, { version: '1.0.0' });
const product = await wu.request('catalog:lookup', { productId: 'p-42' }, {
version: '^1.0.0', timeout: 2500,
});
console.log(product.available);
release();
Um provedor é liberado quando seu proprietário deixa de estar disponível. Rejeitar ou cancelar a espera não desfaz um efeito já executado; o handler deve cooperar com context.signal. O histórico e o replay servem para observação, não para repetir operações de negócio.
wu.hasHandler / eventBus.hasHandler
Verifica se existe um provedor RPC ativo para um canal.
wu.hasHandler(channel: string): boolean
- Parâmetros: channel: nome exato do canal.
- Retorno: Booleano de presença.
- Erros: A presença não garante que sua identidade esteja autorizada nem que a versão corresponda.
- Permissões: Host; a fachada com escopo não expõe administração global.
- Limpeza: Não instala novos recursos.
if (wu.hasHandler('catalog:lookup')) console.log('Proveedor disponible');
Referência: src/core/wu-event-bus.js.
wu.eventBus.history
Lê o histórico de envelopes mantido pelo barramento.
wu.eventBus.history: WuEvent[]
- Parâmetros: Getter sem argumentos; exclui emissões history:false.
- Retorno: Snapshot de eventos; limite padrão de 100.
- Erros: Não inclui necessariamente todo o histórico da sessão.
- Permissões: Host; a fachada com escopo não expõe administração global.
- Limpeza: Não instala novos recursos.
console.table(wu.eventBus.history.map(event => ({ name: event.name, app: event.appName })));
Referência: src/core/wu-event-bus.js.
wu.eventBus.replay
Entrega ao callback os eventos históricos correspondentes.
wu.eventBus.replay(pattern, callback): void
- Parâmetros: Padrão e callback de envelope WuEvent.
- Retorno: void; não publica os eventos novamente no barramento.
- Erros: Não executa handlers RPC novamente nem recupera efeitos externos.
- Permissões: Host; a fachada com escopo não expõe administração global.
- Limpeza: Não deixa uma inscrição; use on para receber eventos futuros.
wu.eventBus.replay('catalog:*', event => console.log(event.data));
Referência: src/core/wu-event-bus.js.
wu.eventBus.clearHistory
Remove eventos do histórico, mantendo listeners e provedores.
wu.eventBus.clearHistory(pattern?): void
- Parâmetros: Padrão opcional; omiti-lo esvazia todo o histórico.
- Retorno: void.
- Erros: Não apaga projeções que um consumidor já salvou.
- Permissões: Host; a fachada com escopo não expõe administração global.
- Limpeza: Não instala novos recursos.
wu.eventBus.clearHistory('catalog:*');
Referência: src/core/wu-event-bus.js.
wu.eventBus.getStats
Lê métricas de eventos, inscrições e provedores do barramento.
wu.eventBus.getStats(): object
- Parâmetros: Sem argumentos.
- Retorno: Objeto de contadores e configuração.
- Erros: Não mede a aceitação dos eventos pelo negócio.
- Permissões: Host; a fachada com escopo não expõe administração global.
- Limpeza: Não instala novos recursos.
console.log(wu.eventBus.getStats());
Referência: src/core/wu-event-bus.js.
wu.eventBus.matchesWildcard
Verifica um padrão de evento sem registrar uma inscrição.
wu.eventBus.matchesWildcard(eventName, pattern): boolean
- Parâmetros: Nome do evento primeiro, padrão depois.
- Retorno: Booleano.
- Erros: Uma correspondência não concede permissão para usar esse recurso.
- Permissões: Host; a fachada com escopo não expõe administração global.
- Limpeza: Não instala novos recursos.
console.log(wu.eventBus.matchesWildcard('catalog:selected', 'catalog:*'));
Referência: src/core/wu-event-bus.js.
wu.contracts.has
Consulta a presença e a compatibilidade semver de um contrato.
wu.contracts.has(name: string, range?: string): boolean
- Parâmetros: Nome e intervalo; * por padrão.
- Retorno: boolean
- Erros: Verifique o resultado; não comprova a disponibilidade de serviços externos.
- Permissões: Host; a fachada com escopo não expõe administração global.
- Limpeza: Não instala novos recursos.
console.log(wu.contracts.has('formatters', '^1.0.0'));
Referência: src/core/wu-contracts.js.
wu.contracts.list
Lista os provedores de contratos ativos.
wu.contracts.list(): Array<{name,version,app}>
- Parâmetros: Sem argumentos.
- Retorno: Array<{name,version,app}>
- Erros: Verifique o resultado; não comprova a disponibilidade de serviços externos.
- Permissões: Host; a fachada com escopo não expõe administração global.
- Limpeza: Não instala novos recursos.
console.table(wu.contracts.list());
Referência: src/core/wu-contracts.js.
wu.contracts.revoke
Remove um provedor por nome do registro do host.
wu.contracts.revoke(name: string): boolean
- Parâmetros: Nome exato; false quando não existe.
- Retorno: boolean
- Erros: Verifique o resultado; não comprova a disponibilidade de serviços externos.
- Permissões: Host; a fachada com escopo não expõe administração global.
- Limpeza: Invalida o acesso posterior dos proxies consumidores.
wu.contracts.revoke('formatters');
Referência: src/core/wu-contracts.js.
wu.contracts.cleanup
Revoga todos os provedores desta instância de contratos.
wu.contracts.cleanup(): void
- Parâmetros: Sem argumentos.
- Retorno: void
- Erros: Verifique o resultado; não comprova a disponibilidade de serviços externos.
- Permissões: Host; a fachada com escopo não expõe administração global.
- Limpeza: Afeta todos os consumidores do registro.
wu.contracts.cleanup();
Referência: src/core/wu-contracts.js.
WuEventBus.tap
Observa eventos do barramento para instrumentação do host.
bus.tap(callback): () => void
- Parâmetros: Callback de eventos; não é um listener de aplicação com escopo.
- Retorno: Função para cancelar o tap.
- Erros: Um valor que não seja função produz uma limpeza vazia.
- Permissões: A instância independente pertence ao host que a cria; não modifica a fachada do barramento do singleton WU.
- Limpeza: Mantenha e execute o disposer: removeAll não apaga taps.
import { WuEventBus } from 'wu-framework';
const bus = new WuEventBus();
const stop = bus.tap(event => console.log(event));
stop();
Estes métodos pertencem a uma instância independente de WuEventBus. A fachada wu.eventBus não os expõe.
Referência: src/core/wu-event-bus.js.
WuEventBus.configure
Atualiza a configuração do barramento e reduz o histórico se maxHistory mudar.
bus.configure(config): void
- Parâmetros: maxHistory, enableReplay, enableWildcards, logEvents, strictMode e validateOrigin.
- Retorno: void.
- Erros: maxHistory deve ser um inteiro seguro não negativo; lança RangeError caso contrário.
- Permissões: A instância independente pertence ao host que a cria; não modifica a fachada do barramento do singleton WU.
- Limpeza: O proprietário do runtime administra os recursos e suas funções de limpeza.
import { WuEventBus } from 'wu-framework';
const bus = new WuEventBus();
bus.configure({ maxHistory: 100 });
Estes métodos pertencem a uma instância independente de WuEventBus. A fachada wu.eventBus não os expõe.
Referência: src/core/wu-event-bus.js.
WuEventBus.enableStrictMode
Ativa controles estritos do barramento para novas operações.
bus.enableStrictMode(): void
- Parâmetros: Sem argumentos.
- Retorno: void.
- Erros: A chamada altera apenas a configuração; operações posteriores podem falhar na validação.
- Permissões: A instância independente pertence ao host que a cria; não modifica a fachada do barramento do singleton WU.
- Limpeza: O proprietário do runtime administra os recursos e suas funções de limpeza.
import { WuEventBus } from 'wu-framework';
const bus = new WuEventBus();
bus.enableStrictMode();
Estes métodos pertencem a uma instância independente de WuEventBus. A fachada wu.eventBus não os expõe.
Referência: src/core/wu-event-bus.js.
WuEventBus.disableStrictMode
Desativa a flag strictMode do barramento.
bus.disableStrictMode(): void
- Parâmetros: Sem argumentos.
- Retorno: void.
- Erros: A chamada não retorna um diagnóstico das inscrições existentes.
- Permissões: A instância independente pertence ao host que a cria; não modifica a fachada do barramento do singleton WU.
- Limpeza: O proprietário do runtime administra os recursos e suas funções de limpeza.
import { WuEventBus } from 'wu-framework';
const bus = new WuEventBus();
bus.disableStrictMode();
Estes métodos pertencem a uma instância independente de WuEventBus. A fachada wu.eventBus não os expõe. É uma decisão do host, não um mecanismo para contornar as concessões da fachada com escopo.
Referência: src/core/wu-event-bus.js.
WuEventBus.removeAll
Remove listeners e handlers RPC e rejeita solicitações pendentes.
bus.removeAll(): void
- Parâmetros: Sem argumentos.
- Retorno: void.
- Erros: As solicitações pendentes são rejeitadas com WU_RPC_BUS_CLEARED.
- Permissões: A instância independente pertence ao host que a cria; não modifica a fachada do barramento do singleton WU.
- Limpeza: Não esvazia o histórico nem os taps; use clearHistory e os canceladores de taps separadamente.
import { WuEventBus } from 'wu-framework';
const bus = new WuEventBus();
bus.removeAll();
Estes métodos pertencem a uma instância independente de WuEventBus. A fachada wu.eventBus não os expõe.
Referência: src/core/wu-event-bus.js.