WU / DOCSMICROFRONTENDS UNIVERSAIS
PT

Referência de store e sincronização

Operações de estado, snapshots, notificações, histórico e sessões de sincronização com limpeza explícita.

O store opera com caminhos de dados e snapshots separados. Sua fachada de aplicação expõe get, getSnapshot, set, update, on e batch; as operações de administração, histórico e sincronização pertencem ao host.

Escolher a operação

Use set para substituir um dado, update para calculá-lo de forma síncrona e batch para validar várias escritas antes de realizar a primeira. on entrega notificações em microtasks; tap observa cada commit de forma síncrona. hydrate substitui a raiz sem criar entradas no buffer circular nem passar pelos taps.

Os valores aceitam dados simples, arrays densos e escalares do codec. Objetos de renderizador, funções, Date, Map, ciclos e promises não são valores de estado compartilhado. Um bigint escalar aceito no store não significa que seja serializável pelo sync.

Uma sessão com proprietário

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

Apenas as escritas posteriores à ativação são registradas pelo sync. A ordem Last Writer Wins é aplicada por caminho; escritas concorrentes sobre pai e filho não oferecem a mesma convergência que escritas no mesmo caminho. Mantenha uma granularidade consistente e autentique o transporte quando necessário.

new WuStore

Cria um store independente com histórico circular.

new WuStore(bufferSize?: number): WuStore

  • Parâmetros: bufferSize 256 por padrão; escolhe a capacidade do histórico, não um limite de bytes do estado.
  • Retorno: Instância; tamanho do buffer arredondado para uma potência de dois.
  • Erros: Os valores escritos depois são validados com o codec do store.
  • Permissões: Host; não está disponível na facade da aplicação.
  • Limpeza: state.dispose() remove sync, listeners e taps.
import { WuStore } from 'wu-framework';
const state = new WuStore(512);

Referência: src/core/wu-store.js.

wu.store.tap

Observa cada commit de forma síncrona, antes das notificações on.

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

  • Parâmetros: callback(sequence,path,value); serve para diário ou transporte.
  • Retorno: Limpeza; um argumento que não seja função produz uma limpeza vazia.
  • Erros: Não realiza filtros por caminho nem entrega um snapshot inicial.
  • Permissões: Host; não está disponível na facade da aplicação.
  • Limpeza: stop() remove o tap.
const stop = wu.store.tap((sequence, path, value) => {
  console.log(sequence, path, value);
});

Referência: src/core/wu-store.js.

wu.store.hydrate

Substitui o estado completo e notifica os caminhos selecionados.

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

  • Parâmetros: state: objeto simples; notifyPaths usa por padrão as chaves superiores do novo estado.
  • Retorno: void; não adiciona entradas ao buffer circular nem dispara taps.
  • Erros: WU_STORE_INVALID_VALUE ou WU_STORE_INVALID_PATH antes de substituir o estado.
  • Permissões: Host; não está disponível na facade da aplicação.
  • Limpeza: Não cria recursos que precisem ser liberados.
wu.store.hydrate({ cart: { count: 2 } }, { notifyPaths: ['cart.count'] });

Referência: src/core/wu-store.js.

wu.store.getMetrics

Lê contagens de leituras, escritas, notificações, histórico e listeners.

wu.store.getMetrics(): object

  • Parâmetros: Sem argumentos.
  • Retorno: Snapshot de métricas.
  • Erros: Não mede rede nem renderização.
  • Permissões: Host; não está disponível na facade da aplicação.
  • Limpeza: Não cria recursos que precisem ser liberados.
console.log(wu.store.getMetrics().listenerCount);

Referência: src/core/wu-store.js.

wu.store.getRecentEvents

Consulta escritas recentes com sequência, caminho, valor e timestamp.

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

  • Parâmetros: count finito positivo, 10 por padrão e limitado pelo buffer.
  • Retorno: Lista com os mais recentes primeiro; valores separados do estado interno.
  • Erros: Valores não positivos ou não finitos retornam [].
  • Permissões: Host; não está disponível na facade da aplicação.
  • Limpeza: Não cria recursos que precisem ser liberados.
console.table(wu.store.getRecentEvents(10));

Método do runtime não listado na declaração WuStore.

Referência: src/core/wu-store.js.

wu.store.reset

Esvazia estado e histórico e mantém inscrições e taps.

wu.store.reset(): void

  • Parâmetros: Sem argumentos.
  • Retorno: void.
  • Erros: Não constitui exclusão persistente fora desta instância.
  • Permissões: Host; não está disponível na facade da aplicação.
  • Limpeza: Não notifica automaticamente um valor inicial vazio; sync continua ativo.
wu.store.reset();

Referência: src/core/wu-store.js.

wu.store.dispose

Interrompe sync e remove estado, listeners e taps.

wu.store.dispose(): void

  • Parâmetros: Sem argumentos.
  • Retorno: void.
  • Erros: Não constitui exclusão persistente fora desta instância.
  • Permissões: Host; não está disponível na facade da aplicação.
  • Limpeza: Use ao remover um store que você administra; não no store compartilhado por outro consumidor.
wu.store.dispose();

Referência: src/core/wu-store.js.

wu.store.clear

Executa a mesma liberação completa de dispose.

wu.store.clear(): void

  • Parâmetros: Sem argumentos.
  • Retorno: void.
  • Erros: Não constitui exclusão persistente fora desta instância.
  • Permissões: Host; não está disponível na facade da aplicação.
  • Limpeza: Também remove inscrições; não é apenas uma operação sobre valores.
wu.store.clear();

Referência: src/core/wu-store.js.

WuSyncHandle.ready

Aguarda o carregamento do módulo e o início do transporte.

sync.ready(): Promise<unknown>

  • Parâmetros: Handle retornado por wu.store.sync(options).
  • Retorno: Promise
  • Erros: ready pode rejeitar; status.error expõe carregamento/autorização/transporte.
  • Permissões: Sessão do host; o relay deve autenticar os pares se WebSocket for usado.
  • Limpeza: stop() cancela a sessão quando seu proprietário terminar.
await sync.ready();

Referência: src/core/wu-store.js.

WuSyncHandle.status

Consulta conexão, relógios, pares e contadores de sincronização.

sync.status(): WuSyncStatus

  • Parâmetros: Handle retornado por wu.store.sync(options).
  • Retorno: WuSyncStatus
  • Erros: ready pode rejeitar; status.error expõe carregamento/autorização/transporte.
  • Permissões: Sessão do host; o relay deve autenticar os pares se WebSocket for usado.
  • Limpeza: Leitura sem recursos adicionais.
console.log(sync.status());

Referência: src/core/wu-store.js.

WuSyncHandle.stop

Interrompe a troca de mensagens e a observação de escritas.

sync.stop(): void

  • Parâmetros: Handle retornado por wu.store.sync(options).
  • Retorno: void
  • Erros: ready pode rejeitar; status.error expõe carregamento/autorização/transporte.
  • Permissões: Sessão do host; o relay deve autenticar os pares se WebSocket for usado.
  • Limpeza: Remove o tap e fecha o transporte desta sessão.
sync.stop();

Referência: src/core/wu-store.js.

WuSyncHandle.connected

Consulta se o transporte da sessão está conectado.

sync.connected: boolean

  • Parâmetros: Handle retornado por wu.store.sync(options).
  • Retorno: boolean
  • Erros: ready pode rejeitar; status.error expõe carregamento/autorização/transporte.
  • Permissões: Sessão do host; o relay deve autenticar os pares se WebSocket for usado.
  • Limpeza: Leitura de estado; a sessão é liberada com stop.
console.log(sync.connected);

Referência: src/core/wu-store.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.