MCPcopy Index your code
hub / github.com/aurijs/jason

github.com/aurijs/jason @1.5.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.5.3 ↗ · + Follow
85 symbols 199 edges 23 files 22 documented · 26% updated 2mo ago1.5.3 · 2025-02-19★ 1791 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

jason db 📦

image with logo and name of package

License: MIT PRs Welcome Maintenance Made with Bun Node Current TypeScript npm bundle size NPM Downloads GitHub Repo stars

🚀 A simple, lightweight, and embeddable JSON database built with Bun

jason is the perfect solution when you need a fast and easy-to-use JSON database in your Bun projects. With features like schema validation, concurrency control, and built-in caching, it provides everything you need in a simple package.

✨ Highlights

  • 📝 Simple API - CRUD and query JSON documents with just a few lines of code
  • 🪶 Lightweight & Embeddable - Easy integration without adding bloat to your project
  • Schema Validation - Ensure your data integrity
  • 🔒 Concurrency Control - Prevent update conflicts
  • 📚 Versioning Support - Track document changes
  • Built-in Caching - Improve read performance
  • 🔍 Query System - Find documents with custom criteria

🚀 Installation

bun add -D jason

# or

npm install -D jason

💻 Quick Example

import JasonDB from "jason";

// Define your interfaces
interface User {
  name: string;
  email: string;
}

interface Database {
  users: User[];
}

// Initialize the database
const db = new JasonDB<Database>("my-db");

// Create a collection
const users = await db.collection("users", {
  schema: (user) => user.name && user.email.includes("@"),
});

// Use the simple API
await users.create({
  name: "John Smith",
  email: "john@example.com",
});

🛠️ Core API

📦 JasonDB

// Create an instance
const db = new JasonDB("my-database");

// Access collections
const myCollection = db.collection("name");

// List collections
const collections = await db.listCollections();

📑 Collections

// Create
const doc = await collection.create({ ... });

// Read
const item = await collection.read("id");

// Update
await collection.update("id", { field: "new value" });

// Delete
await collection.delete("id");

// Query
const results = await collection.query(doc => doc.age > 18);

🤝 Contributing

Contributions are welcome!

  1. 🍴 Fork the project
  2. 🔧 Create your feature branch (git checkout -b feature/AmazingFeature)
  3. 📝 Commit your changes (git commit -m 'Add: amazing feature')
  4. 📤 Push to the branch (git push origin feature/AmazingFeature)
  5. 🔍 Open a Pull Request

🛠 Development

# Clone the repo
git clone https://github.com/realfakenerd/jason

# Install dependencies 
bun install

# Run tests
bun test

# Build project
bun run build

📄 License

Distributed under the MIT License. See LICENSE for more information.


⭐ If this project helped you, consider giving it a star!

📫 Questions? Open an issue or get in touch!

Extension points exported contracts — how you extend this code

TestUser (Interface)
(no doc)
test/types.ts
BaseCollections (Interface)
(no doc)
src/types/collection.ts
CacheEntry (Interface)
(no doc)
src/data/cache.ts
FileState (Interface)
(no doc)
src/io/writer.ts
TestPost (Interface)
(no doc)
test/types.ts
CollectionOptions (Interface)
(no doc)
src/types/collection.ts
Product (Interface)
(no doc)
test/types.ts
CollectionMetadata (Interface)
(no doc)
src/types/metadata.ts

Core symbols most depended-on inside this repo

create
called by 58
src/data/collection.ts
collection
called by 45
src/core/main.ts
query
called by 16
src/data/collection.ts
read
called by 15
src/data/collection.ts
delete
called by 13
src/data/cache.ts
readAll
called by 9
src/data/collection.ts
update
called by 7
src/data/cache.ts
get
called by 5
src/data/cache.ts

Shape

Method 44
Class 20
Interface 16
Function 5

Languages

TypeScript100%

Modules by API surface

src/data/metadata.ts13 symbols
src/data/collection.ts12 symbols
src/data/cache.ts12 symbols
src/core/errors.ts12 symbols
src/io/writer.ts10 symbols
test/types.ts8 symbols
src/core/main.ts6 symbols
src/utils/mutex.ts4 symbols
src/types/metadata.ts2 symbols
src/types/collection.ts2 symbols
test/read.test.ts1 symbols
src/utils/utils.ts1 symbols

For agents

$ claude mcp add jason \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact