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.