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.