WU / DOCSMICROFRONTENDS UNIVERSAIS
PT

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.

CONSTRUA O WU CONOSCO

Encontrou um bug? Tem uma ideia?

Sua experiência melhora o WU. Conte o que falhou ou ajude a manter seu desenvolvimento.