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.