WU / DOCSUNIVERSAL MICROFRONTENDS
ES

Referencia de store y sincronización

Operaciones de estado, snapshots, notificaciones, historial y sesiones de sincronización con limpieza explícita.

El store opera con paths de datos y snapshots separados. Su facade de aplicación expone get, getSnapshot, set, update, on y batch; las operaciones de administración, historial y sincronización pertenecen al host.

Elegir la operación

Usa set para sustituir un dato, update para calcularlo de forma síncrona y batch para validar varias escrituras antes de realizar la primera. on entrega notificaciones en microtasks; tap observa cada commit de forma síncrona. hydrate reemplaza la raíz sin crear entradas en el ring buffer ni pasar por taps.

Los valores aceptan datos planos, arrays densos y escalares del codec. Objetos de renderer, funciones, Date, Map, ciclos y promesas no son valores de estado compartido. Un bigint escalar admitido en el store no implica que sea serializable por sync.

Una sesión con dueño

import { wu } from 'wu-framework';

const sync = wu.store.sync({ transport: 'broadcast', room: 'catalog' });
await sync.ready();
wu.store.set('catalog.selectedId', 'p-42');
console.log(sync.status());
// Al terminar la sesión:
sync.stop();

Solo las escrituras posteriores a la activación quedan registradas por sync. El orden Last Writer Wins se aplica por path; las escrituras concurrentes sobre padre e hijo no ofrecen la misma convergencia que escrituras al mismo path. Mantén una granularidad consistente y autentica el transporte cuando corresponda.

new WuStore

Crea un store independiente con historial circular.

new WuStore(bufferSize?: number): WuStore

  • Parámetros: bufferSize por defecto 256; elige capacidad del historial, no un límite de bytes del estado.
  • Retorno: Instancia; tamaño de buffer redondeado a potencia de dos.
  • Errores: Valores escritos después se validan con el codec del store.
  • Permisos: Host; no está disponible en la facade de aplicación.
  • Limpieza: state.dispose() retira sync, listeners y taps.
import { WuStore } from 'wu-framework';
const state = new WuStore(512);

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

wu.store.tap

Observa cada commit síncronamente, antes de las notificaciones on.

wu.store.tap(callback): () => void

  • Parámetros: callback(sequence,path,value); sirve para journal o transporte.
  • Retorno: Cleanup; un argumento no función produce un cleanup vacío.
  • Errores: No realiza filtros por path ni entrega snapshot inicial.
  • Permisos: Host; no está disponible en la facade de aplicación.
  • Limpieza: stop() retira el tap.
const stop = wu.store.tap((sequence, path, value) => {
  console.log(sequence, path, value);
});

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

wu.store.hydrate

Sustituye el estado completo y notifica paths seleccionados.

wu.store.hydrate(state, { notifyPaths? }?): void

  • Parámetros: state: objeto plano; notifyPaths por defecto claves superiores del nuevo estado.
  • Retorno: void; no añade entradas al ring buffer ni dispara taps.
  • Errores: WU_STORE_INVALID_VALUE o WU_STORE_INVALID_PATH antes de sustituir el estado.
  • Permisos: Host; no está disponible en la facade de aplicación.
  • Limpieza: No crea recursos que deban liberarse.
wu.store.hydrate({ cart: { count: 2 } }, { notifyPaths: ['cart.count'] });

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

wu.store.getMetrics

Lee conteos de lecturas, escrituras, notificaciones, historial y listeners.

wu.store.getMetrics(): object

  • Parámetros: Sin argumentos.
  • Retorno: Snapshot de métricas.
  • Errores: No mide red ni renderizado.
  • Permisos: Host; no está disponible en la facade de aplicación.
  • Limpieza: No crea recursos que deban liberarse.
console.log(wu.store.getMetrics().listenerCount);

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

wu.store.getRecentEvents

Consulta escrituras recientes con secuencia, path, valor y timestamp.

wu.store.getRecentEvents(count?: number): object[]

  • Parámetros: count finito positivo, por defecto 10 y limitado por el buffer.
  • Retorno: Lista reciente primero; valores separados del estado interno.
  • Errores: Valores no positivos o no finitos devuelven [].
  • Permisos: Host; no está disponible en la facade de aplicación.
  • Limpieza: No crea recursos que deban liberarse.
console.table(wu.store.getRecentEvents(10));

Método runtime no enumerado en la declaración WuStore.

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

wu.store.reset

Vacía estado e historial y conserva suscripciones y taps.

wu.store.reset(): void

  • Parámetros: Sin argumentos.
  • Retorno: void.
  • Errores: No constituye borrado persistente fuera de esta instancia.
  • Permisos: Host; no está disponible en la facade de aplicación.
  • Limpieza: No notifica automáticamente un valor inicial vacío; sync sigue activo.
wu.store.reset();

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

wu.store.dispose

Detiene sync y retira estado, listeners y taps.

wu.store.dispose(): void

  • Parámetros: Sin argumentos.
  • Retorno: void.
  • Errores: No constituye borrado persistente fuera de esta instancia.
  • Permisos: Host; no está disponible en la facade de aplicación.
  • Limpieza: Úsalo al retirar un store que administras; no sobre el store compartido por otro consumidor.
wu.store.dispose();

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

wu.store.clear

Ejecuta la misma liberación completa que dispose.

wu.store.clear(): void

  • Parámetros: Sin argumentos.
  • Retorno: void.
  • Errores: No constituye borrado persistente fuera de esta instancia.
  • Permisos: Host; no está disponible en la facade de aplicación.
  • Limpieza: También elimina suscripciones; no es solo una operación sobre valores.
wu.store.clear();

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

WuSyncHandle.ready

Espera la carga del módulo y el inicio del transporte.

sync.ready(): Promise<unknown>

  • Parámetros: Handle devuelto por wu.store.sync(options).
  • Retorno: Promise
  • Errores: ready puede rechazar; status.error expone carga/autorización/transporte.
  • Permisos: Sesión de host; el relay debe autenticar pares si se usa WebSocket.
  • Limpieza: stop() cancela la sesión cuando termine su propietario.
await sync.ready();

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

WuSyncHandle.status

Consulta conexión, relojes, pares y contadores de sincronización.

sync.status(): WuSyncStatus

  • Parámetros: Handle devuelto por wu.store.sync(options).
  • Retorno: WuSyncStatus
  • Errores: ready puede rechazar; status.error expone carga/autorización/transporte.
  • Permisos: Sesión de host; el relay debe autenticar pares si se usa WebSocket.
  • Limpieza: Lectura sin recursos adicionales.
console.log(sync.status());

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

WuSyncHandle.stop

Detiene intercambio de mensajes y observación de escrituras.

sync.stop(): void

  • Parámetros: Handle devuelto por wu.store.sync(options).
  • Retorno: void
  • Errores: ready puede rechazar; status.error expone carga/autorización/transporte.
  • Permisos: Sesión de host; el relay debe autenticar pares si se usa WebSocket.
  • Limpieza: Retira tap y cierra el transporte de esta sesión.
sync.stop();

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

WuSyncHandle.connected

Consulta si el transporte de la sesión está conectado.

sync.connected: boolean

  • Parámetros: Handle devuelto por wu.store.sync(options).
  • Retorno: boolean
  • Errores: ready puede rechazar; status.error expone carga/autorización/transporte.
  • Permisos: Sesión de host; el relay debe autenticar pares si se usa WebSocket.
  • Limpieza: Lectura de estado; la sesión se libera con stop.
console.log(sync.connected);

Referencia: src/core/wu-store.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.