A lightweight TypeScript library for file-based JSON database operations with querying capabilities.
# npm
npm install @neabyte/jsonary
# deno
deno add jsr:@neabyte/jsonaryJsonary supports both ESM and CommonJS:
import Jsonary from '@neabyte/jsonary'const Jsonary = require('@neabyte/jsonary')import Jsonary from '@neabyte/jsonary'
const db = new Jsonary({ path: './data.json' })// Single record
db.insert({ name: 'John', age: 30 })
// Multiple records
db.insertMany([
{ name: 'Jane', age: 25 },
{ name: 'Bob', age: 35 }
])// Get all records
const all = db.get()
// String-based conditions
const adults = db.where('age >= 18').get()
const john = db.where('name = John').first()
// Query nested properties
const admins = db.where('profile.role = admin').get()
const activeUsers = db.where('profile.active = true').get()
const darkThemeUsers = db.where('profile.settings.theme = dark').get()
// Function-based filtering
const filtered = db.where(item => item.age > 25).get()// Update specific records
db.updateWhere('age > 30', { status: 'senior' })
// Update nested properties
db.updateWhere('name = John', { 'profile.active': true })// Delete by condition
const deleted = db.deleteWhere('age < 18')
// Clear all data
db.clear()db.where('age > 25')
.where('name contains "John"')
.update({ verified: true })
const count = db.where('status = active').count()
// Chained operations with nested properties
db.where('profile.active = true')
.where('profile.role = admin')
.update({ 'profile.verified': true })
const adminCount = db.where('profile.role = admin').where('profile.verified = true').count()=- Equal!=- Not equal>- Greater than<- Less than>=- Greater than or equal<=- Less than or equalcontains- String containsstartsWith- String starts withendsWith- String ends with
constructor(options: { path: string })- Initialize databaseinsert(item: Record<string, unknown>)- Insert single recordinsertMany(items: Record<string, unknown>[])- Insert multiple recordswhere(condition: string | Function)- Create query builderupdateWhere(condition: string | Function, data: Record<string, unknown>)- Update records (returns count)deleteWhere(condition: string | Function)- Delete records (returns count)get()- Get all recordsreload()- Reload data from fileclear()- Clear all data
where().get()- Get filtered recordswhere().first()- Get first filtered recordwhere().count()- Get count of filtered recordswhere().update(data)- Update filtered recordswhere().delete()- Delete filtered records (returns count)
This project is licensed under the MIT license. See the LICENSE file for more info.