A lightweight TypeScript library for file-based JSON database operations with querying capabilities.
npm install @neabyte/jsonary
Jsonary 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.