WU / DOCSUNIVERSAL MICROFRONTENDS
ES

Referencia de eventos, RPC y contratos

Historial, consultas, proveedores versionados y límites de comunicación entre aplicaciones.

Utiliza eventos para notificar hechos, RPC para esperar una respuesta y contratos para compartir métodos versionados. Los tres mecanismos operan dentro del runtime: una petición RPC no crea por sí misma transporte HTTP.

Receptores y retorno

El callback de evento recibe WuEvent; un handler RPC recibe el payload y un segundo argumento de correlación, identidad y cancelación. Un contrato entrega un proxy vivo hacia los métodos del proveedor. Consulta comunicación para los primeros ejemplos de emit, on, request, handle, provide y consume.

wu.handle(channel, handler, options) conserva version, allow y replace. Dentro del lifecycle, context.wu.handle añade además la identidad y los grants de la app; utiliza esa facade para handlers de una microapp.

Vida del proveedor

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();

Un proveedor se libera cuando su dueño deja de estar disponible. Rechazar o cancelar la espera no deshace un efecto ya ejecutado; el handler debe cooperar con context.signal. El historial y replay sirven para observación, no para repetir operaciones de negocio.

wu.hasHandler / eventBus.hasHandler

Comprueba si existe un proveedor RPC activo para un canal.

wu.hasHandler(channel: string): boolean

  • Parámetros: channel: nombre exacto del canal.
  • Retorno: Booleano de presencia.
  • Errores: Presencia no garantiza que tu identidad esté autorizada ni que la versión coincida.
  • Permisos: Host; la facade scoped no expone administración global.
  • Limpieza: No instala recursos nuevos.
if (wu.hasHandler('catalog:lookup')) console.log('Proveedor disponible');

Referencia: src/core/wu-event-bus.js.

wu.eventBus.history

Lee el historial de envelopes conservado por el bus.

wu.eventBus.history: WuEvent[]

  • Parámetros: Getter sin argumentos; excluye emisiones history:false.
  • Retorno: Snapshot de eventos; límite por defecto 100.
  • Errores: No incluye necesariamente todo el historial de la sesión.
  • Permisos: Host; la facade scoped no expone administración global.
  • Limpieza: No instala recursos nuevos.
console.table(wu.eventBus.history.map(event => ({ name: event.name, app: event.appName })));

Referencia: src/core/wu-event-bus.js.

wu.eventBus.replay

Entrega al callback eventos históricos coincidentes.

wu.eventBus.replay(pattern, callback): void

  • Parámetros: Patrón y callback de envelope WuEvent.
  • Retorno: void; no vuelve a publicar los eventos en el bus.
  • Errores: No reejecuta handlers RPC ni recupera efectos externos.
  • Permisos: Host; la facade scoped no expone administración global.
  • Limpieza: No deja una suscripción; usa on para recibir eventos futuros.
wu.eventBus.replay('catalog:*', event => console.log(event.data));

Referencia: src/core/wu-event-bus.js.

wu.eventBus.clearHistory

Retira eventos del historial, conservando listeners y proveedores.

wu.eventBus.clearHistory(pattern?): void

  • Parámetros: Patrón opcional; omitirlo vacía todo el historial.
  • Retorno: void.
  • Errores: No borra proyecciones que un consumidor ya guardó.
  • Permisos: Host; la facade scoped no expone administración global.
  • Limpieza: No instala recursos nuevos.
wu.eventBus.clearHistory('catalog:*');

Referencia: src/core/wu-event-bus.js.

wu.eventBus.getStats

Lee métricas de eventos, suscripciones y proveedores del bus.

wu.eventBus.getStats(): object

  • Parámetros: Sin argumentos.
  • Retorno: Objeto de contadores y configuración.
  • Errores: No mide aceptación de negocio de los eventos.
  • Permisos: Host; la facade scoped no expone administración global.
  • Limpieza: No instala recursos nuevos.
console.log(wu.eventBus.getStats());

Referencia: src/core/wu-event-bus.js.

wu.eventBus.matchesWildcard

Comprueba un patrón de evento sin registrar una suscripción.

wu.eventBus.matchesWildcard(eventName, pattern): boolean

  • Parámetros: Nombre del evento primero, patrón después.
  • Retorno: Booleano.
  • Errores: Coincidencia no concede permiso para usar ese recurso.
  • Permisos: Host; la facade scoped no expone administración global.
  • Limpieza: No instala recursos nuevos.
console.log(wu.eventBus.matchesWildcard('catalog:selected', 'catalog:*'));

Referencia: src/core/wu-event-bus.js.

wu.contracts.has

Consulta presencia y compatibilidad semver de un contrato.

wu.contracts.has(name: string, range?: string): boolean

  • Parámetros: Nombre y rango; * por defecto.
  • Retorno: boolean
  • Errores: Comprueba el resultado; no prueba la disponibilidad de servicios externos.
  • Permisos: Host; la facade scoped no expone administración global.
  • Limpieza: No instala recursos nuevos.
console.log(wu.contracts.has('formatters', '^1.0.0'));

Referencia: src/core/wu-contracts.js.

wu.contracts.list

Enumera los proveedores de contratos activos.

wu.contracts.list(): Array<{name,version,app}>

  • Parámetros: Sin argumentos.
  • Retorno: Array<{name,version,app}>
  • Errores: Comprueba el resultado; no prueba la disponibilidad de servicios externos.
  • Permisos: Host; la facade scoped no expone administración global.
  • Limpieza: No instala recursos nuevos.
console.table(wu.contracts.list());

Referencia: src/core/wu-contracts.js.

wu.contracts.revoke

Retira un proveedor por nombre desde el registro host.

wu.contracts.revoke(name: string): boolean

  • Parámetros: Nombre exacto; false cuando no existe.
  • Retorno: boolean
  • Errores: Comprueba el resultado; no prueba la disponibilidad de servicios externos.
  • Permisos: Host; la facade scoped no expone administración global.
  • Limpieza: Invalida el acceso posterior de proxies consumidores.
wu.contracts.revoke('formatters');

Referencia: src/core/wu-contracts.js.

wu.contracts.cleanup

Revoca todos los proveedores de esta instancia de contratos.

wu.contracts.cleanup(): void

  • Parámetros: Sin argumentos.
  • Retorno: void
  • Errores: Comprueba el resultado; no prueba la disponibilidad de servicios externos.
  • Permisos: Host; la facade scoped no expone administración global.
  • Limpieza: Afecta a todos los consumidores del registro.
wu.contracts.cleanup();

Referencia: src/core/wu-contracts.js.

WuEventBus.tap

Observa eventos del bus para instrumentación del host.

bus.tap(callback): () => void

  • Parámetros: Callback de eventos; no es un listener scoped de aplicación.
  • Retorno: Función para cancelar el tap.
  • Errores: Un valor no función produce cleanup vacío.
  • Permisos: La instancia independiente pertenece al host que la crea; no modifica la facade del bus del singleton WU.
  • Limpieza: Conserva y ejecuta el disposer: removeAll no borra taps.
import { WuEventBus } from 'wu-framework';
const bus = new WuEventBus();
const stop = bus.tap(event => console.log(event));
stop();

Estos métodos pertenecen a una instancia independiente de WuEventBus. La facade wu.eventBus no los expone.

Referencia: src/core/wu-event-bus.js.

WuEventBus.configure

Actualiza configuración del bus y recorta el historial si cambia maxHistory.

bus.configure(config): void

  • Parámetros: maxHistory, enableReplay, enableWildcards, logEvents, strictMode y validateOrigin.
  • Retorno: void.
  • Errores: maxHistory debe ser un entero seguro no negativo; lanza RangeError si no lo es.
  • Permisos: La instancia independiente pertenece al host que la crea; no modifica la facade del bus del singleton WU.
  • Limpieza: El propietario del runtime administra los recursos y sus funciones de cleanup.
import { WuEventBus } from 'wu-framework';
const bus = new WuEventBus();
bus.configure({ maxHistory: 100 });

Estos métodos pertenecen a una instancia independiente de WuEventBus. La facade wu.eventBus no los expone.

Referencia: src/core/wu-event-bus.js.

WuEventBus.enableStrictMode

Activa controles estrictos del bus para nuevas operaciones.

bus.enableStrictMode(): void

  • Parámetros: Sin argumentos.
  • Retorno: void.
  • Errores: La llamada solo cambia la configuración; operaciones posteriores pueden fallar por validación.
  • Permisos: La instancia independiente pertenece al host que la crea; no modifica la facade del bus del singleton WU.
  • Limpieza: El propietario del runtime administra los recursos y sus funciones de cleanup.
import { WuEventBus } from 'wu-framework';
const bus = new WuEventBus();
bus.enableStrictMode();

Estos métodos pertenecen a una instancia independiente de WuEventBus. La facade wu.eventBus no los expone.

Referencia: src/core/wu-event-bus.js.

WuEventBus.disableStrictMode

Desactiva el flag strictMode del bus.

bus.disableStrictMode(): void

  • Parámetros: Sin argumentos.
  • Retorno: void.
  • Errores: La llamada no devuelve un diagnóstico de las suscripciones existentes.
  • Permisos: La instancia independiente pertenece al host que la crea; no modifica la facade del bus del singleton WU.
  • Limpieza: El propietario del runtime administra los recursos y sus funciones de cleanup.
import { WuEventBus } from 'wu-framework';
const bus = new WuEventBus();
bus.disableStrictMode();

Estos métodos pertenecen a una instancia independiente de WuEventBus. La facade wu.eventBus no los expone. Es una decisión del host, no un mecanismo para eludir grants de la facade scoped.

Referencia: src/core/wu-event-bus.js.

WuEventBus.removeAll

Retira listeners y handlers RPC y rechaza requests pendientes.

bus.removeAll(): void

  • Parámetros: Sin argumentos.
  • Retorno: void.
  • Errores: Las solicitudes pendientes rechazan con WU_RPC_BUS_CLEARED.
  • Permisos: La instancia independiente pertenece al host que la crea; no modifica la facade del bus del singleton WU.
  • Limpieza: No vacía historial ni taps; usa clearHistory y canceladores de taps por separado.
import { WuEventBus } from 'wu-framework';
const bus = new WuEventBus();
bus.removeAll();

Estos métodos pertenecen a una instancia independiente de WuEventBus. La facade wu.eventBus no los expone.

Referencia: src/core/wu-event-bus.js.

WU SE CONSTRUYE CONTIGO

¿Encontraste un bug? ¿Tienes una idea?

Tu experiencia mejora WU. Cuéntanos qué falla o ayuda a sostener su desarrollo.