npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@neabyte/jsonary

v1.0.1

Published

A lightweight TypeScript library for file-based JSON database operations with querying capabilities.

Readme

Jsonary JSR Node.js CI

A lightweight TypeScript library for file-based JSON database operations with querying capabilities.

📦 Installation

# npm
npm install @neabyte/jsonary

# deno
deno add jsr:@neabyte/jsonary

🔧 Module Support

Jsonary supports both ESM and CommonJS:

📥 ESM (ES Modules)

import Jsonary from '@neabyte/jsonary'

📦 CommonJS

const Jsonary = require('@neabyte/jsonary')

🚀 Usage

⚙️ Basic Setup

import Jsonary from '@neabyte/jsonary'

const db = new Jsonary({ path: './data.json' })

➕ Insert Data

// Single record
db.insert({ name: 'John', age: 30 })

// Multiple records
db.insertMany([
  { name: 'Jane', age: 25 },
  { name: 'Bob', age: 35 }
])

🔍 Query Data

// 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 Data

// Update specific records
db.updateWhere('age > 30', { status: 'senior' })

// Update nested properties
db.updateWhere('name = John', { 'profile.active': true })

🗑️ Delete Data

// Delete by condition
const deleted = db.deleteWhere('age < 18')

// Clear all data
db.clear()

🔗 Chained Operations

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()

🔎 Query Operators

  • = - Equal
  • != - Not equal
  • > - Greater than
  • < - Less than
  • >= - Greater than or equal
  • <= - Less than or equal
  • contains - String contains
  • startsWith - String starts with
  • endsWith - String ends with

📚 API Reference

  • constructor(options: { path: string }) - Initialize database
  • insert(item: Record<string, unknown>) - Insert single record
  • insertMany(items: Record<string, unknown>[]) - Insert multiple records
  • where(condition: string | Function) - Create query builder
  • updateWhere(condition: string | Function, data: Record<string, unknown>) - Update records (returns count)
  • deleteWhere(condition: string | Function) - Delete records (returns count)
  • get() - Get all records
  • reload() - Reload data from file
  • clear() - Clear all data

Query Methods (via where())

  • where().get() - Get filtered records
  • where().first() - Get first filtered record
  • where().count() - Get count of filtered records
  • where().update(data) - Update filtered records
  • where().delete() - Delete filtered records (returns count)

📄 License

This project is licensed under the MIT license. See the LICENSE file for more info.