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.