Sobre o projeto

lowdb é um banco de dados JSON local pequeno e minimalista para JavaScript e TypeScript. Sua ideia central é que, se você conhece JavaScript, já sabe como usá-lo: os dados ficam em um objeto simples em db.data, e você consulta ou modifica com operações nativas de Array e de objetos, em vez de uma linguagem de consulta personalizada. O uso típico lê ou cria um arquivo JSON e depois o atualiza em duas etapas (modificar db.data e então await db.write()) ou em uma única chamada via db.update(fn). O db.json resultante é JSON comum. Usuários de TypeScript podem declarar um tipo Data para que db.data seja verificado quanto a tipos, capturando erros como inserir um número em um array de strings. O pacote é ESM puro e é instalado com npm install lowdb. Ele fornece quatro presets para casos comuns: JSONFilePreset, JSONFileSyncPreset, LocalStoragePreset e SessionStoragePreset. Para mais controle, expõe as classes Low e LowSync, além de adaptadores. Os adaptadores integrados incluem JSONFile e JSONFileSync para arquivos JSON, Memory e MemorySync para uso rápido em memória durante testes, e LocalStorage e SessionStorage para navegadores. Adaptadores utilitários TextFile, TextFileSync, DataFile e DataFileSync ajudam a criar adaptadores personalizados, por exemplo, para suportar YAML ou adicionar criptografia ou compressão fornecendo funções parse e stringify. Os adaptadores são classes simples que expõem métodos read e write, então os usuários podem direcionar para armazenamento remoto ou outros formatos. O README também mostra como estender Low com Lodash para consultas encadeadas. Limitações documentadas: lowdb não suporta o módulo cluster do Node, e gravar objetos grandes (aproximadamente 10-100MB) pode ser lento porque cada db.write serializa todo o db.data com JSON.stringify. Operações em lote e gravar apenas quando necessário podem mitigar isso, e para maior escala o README recomenda PostgreSQL ou MongoDB.