json-obj-manager
v3.6.0
Published
Agnostic JSON data manager for Node.js and the browser.
Downloads
22
Maintainers
Readme
JsonObjManager
A lightweight, agnostic, and powerful JSON data manager for Node.js, Bun, and the browser.
📖 Documentation Directory
- 🚀 Getting Started - Start here to get up and running
- 🛠️ API Reference - Complete documentation of classes and methods
- 🔌 Storage Adapters - Learn about LocalStorage, IndexedDB, File, and Bun adapters
- 🔔 Event System - How to subscribe to data changes and errors
- 🔄 Migration Guide - Upgrading from older versions or other libraries
✨ Features
- Universal: Works in Node.js, Bun, and all modern browsers.
- Agnostic: Pluggable storage adapters (In-Memory, LocalStorage, IndexedDB, Filesystem).
- Type-Safe: Written in TypeScript with full type support and optional Zod validation.
- Reactive: Built-in event emitter for tracking changes in real-time.
- Powerful Utilities: Recursive path access (
a.b[0].c), functional updates, and deep merging. - Fluent API: Use the Builder Pattern for clean configuration.
🚀 Quick Start
Installation
# Using npm
npm install json-obj-manager
# Using bun
bun add json-obj-managerBasic Usage
import { JsonManager, FileAdapter } from "json-obj-manager/node";
// Initialize with an adapter
const manager = new JsonManager({
adapter: new FileAdapter("storage.json"),
defaults: { settings: { theme: "dark" } },
});
// Basic CRUD
await manager.set("user:1", { name: "Alice", active: true });
const user = await manager.get("user:1");
// Path access
await manager.setPath("user:1", "profile.email", "[email protected]");
const email = await manager.getPath("user:1", "profile.email");
// Functional updates
await manager.update("counter", (val) => (val || 0) + 1);🏗️ Architecture
JsonObjManager is built on a modular architecture:
- Core: The Manager handles logic, middleware, and events.
- Adapters: Specialized Adapters handle the actual persistence.
- Utils: Helper classes like the Emitter for reactivity.
🤝 Contributing
Contributions are welcome! Please check our GitHub Issues for planned features and bug reports.
📄 License
GPL-3.0 License. See LICENSE for details.
