Skip to Content
PortuguêsDocumentação JumentixPacotes@jumentix/canaGuia de usoReferência de API

Referência de API

Mapa compacto da superfície pública do Cana usada pelo guia.

Ciclo de vida do client

APIPropósito
createClient(options)Criar um client de banco no navegador.
client.open()Abrir ou atualizar o banco.
client.close()Fechar a conexão aberta.
client.backendLer o backend de storage ativo depois de open() para diagnóstico.
client.storageState()Inspecionar disponibilidade de storage e sinal de cota.
client.durabilityAssessment()Inspecionar confiança de persistência.

Tabelas

APIPropósito
client.table<TRecord>(name)Criar um handle tipado de tabela.
table.get(key)Ler um registro por chave primária.
table.add(record, key)Inserir somente quando a chave está livre.
table.put(record, key)Inserir ou substituir.
table.update(key, changes)Mesclar campos em um registro existente.
table.delete(key)Apagar um registro.
table.clear()Apagar todos os registros da store.
table.bulkAdd(records)Inserir lote em uma transação.
table.bulkPut(records)Fazer upsert de lote em uma transação.
table.bulkDelete(keys)Apagar lote em uma transação.
table.query(query)Ler registros com índice, direção, offset e limit opcionais.
table.count(query)Contar registros sem materializá-los em JavaScript.
table.explain(query)Retornar registros mais o plano de query usado pelo Cana.

Transações e eventos

APIPropósito
client.transaction(mode, stores, body)Executar uma fronteira de commit multi-store.
client.subscribe(listener)Ouvir entradas CanaChangeEvent commitadas.
client.subscribe(listener, { sinceCursor })Reexecutar eventos retidos mais novos que o cursor.
client.resolveWrite(correlationId, attemptedAt)Resolver escrita com outcome incerto quando operationLedger está ligado.

APIs de worker

APIPropósito
createWorkerHost(options)Servir um client Cana real atrás de Worker ou MessagePort.
createRouter(options)Correlacionar requisições e respostas no lado da página.
createWorkerClient(router)Facade tipada para operações request/response através da fronteira.

Factory adapter

Use o factory adapter quando o restante de uma aplicação Jumentix espera handles de store parecidos com repositórios em vez de chamar client.table() direto.

Adapter de factory

Use createCanaDatabaseClient com stores Category e Task.

const adapter = cana.createCanaDatabaseClient({
  name: dbName,
  schema: {
  version: 1,
  stores: [
    { name: 'categories', keyPath: 'id', indexes: [{ name: 'byName', keyPath: 'name', unique: true }] },
    {
      name: 'tasks',
      keyPath: 'id',
      indexes: [
        { name: 'byCategory', keyPath: 'categoryId' },
        { name: 'byCompleted', keyPath: 'completed' },
        { name: 'byUpdatedAt', keyPath: 'updatedAt' }
      ]
    }
  ]
}
});
await adapter.connect();
await adapter.stores.categories.add({ id: 'docs', name: 'Docs', color: '#0f766e' });
await adapter.stores.tasks.add({
  id: 'docs-1',
  title: 'Created through the adapter',
  categoryId: 'docs',
  completed: false,
  priority: 'medium',
  createdAt: 1,
  updatedAt: 1
});
const task = await adapter.stores.tasks.get('docs-1');
await adapter.disconnect();
return {
  backend: adapter.cana.backend,
  stores: Object.keys(adapter.stores),
  task
};

Glossário

TermoSignificado
BackendImplementação de storage ativa por trás do client.
CursorNúmero monotônico anexado a eventos de mudança commitados.
Fonte durável da verdadeCamada de dados que sobrevive a reloads. O Cana ocupa esse papel para dados offline no navegador.
Replay de eventosEntrega de eventos retidos depois que um subscriber reconecta com sinceCursor.
Operation ledgerStore opcional que permite ao Cana resolver outcome incerto de escrita.
Plano de queryDescrição de uso de índice, key range, count request ou scan.
Structured cloneSerialização do navegador usada por mensagens de Worker; rejeita funções e instâncias de classe com estado privado.