Socket
Book a DemoInstallSign in
Socket

joltdb

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

joltdb

Jolt is a simple in-memory JSON database written in TypeScript. It provides basic CRUD (Create, Read, Update, Delete) operations along with additional features like sorting and pagination.

1.0.7
latest
npmnpm
Version published
Maintainers
1
Created
Source

Jolt

Jolt is a simple in-memory JSON database written in TypeScript. It provides basic CRUD (Create, Read, Update, Delete) operations along with additional features like sorting and pagination.

Installation

You can install Jolt using npm:

npm install joltdb

Usage

Here's how you can use Jolt in your TypeScript project:

import { Jolt, Options } from 'joltdb';

// Define options
const dbOptions: Options = {
    filePath: 'data.json',
    errorHandler: (error: Error) => {
        console.error(error);
    },
    cacheEnabled: true
};

// Initialize Jolt
const db = new Jolt(dbOptions);

// Create a new document
const newItem = { _id: '1', name: 'Alice', age: 30 };
db.create(newItem);

// Read documents
const filteredData = db.read(doc => doc.age > 25);

// Update a document
db.update(doc => doc._id === '1', { age: 31 });

// Delete documents
db.delete(doc => doc.age < 30);

Features

  • Simple API: Provides easy-to-use methods for database operations.
  • Persistence: Data is persisted to a JSON file.
  • Caching: Optionally caches data in memory for improved performance.
  • Data Validation: Supports validation of incoming data against JSON schema.
  • Additional Operations: Includes methods for sorting, pagination, and more.

API Reference

Constructor

new Jolt(options: Options)

Initializes a new instance of Jolt with the provided options.

Methods

  • create(newItem: Document): void: Adds a new document to the database.
  • read(filter: (doc: Document) => boolean): Document[]: Retrieves documents from the database based on a filter function.
  • update(filter: (doc: Document) => boolean, updates: Partial<Document>): void: Updates documents in the database based on a filter function.
  • delete(filter: (doc: Document) => boolean): void: Deletes documents from the database based on a filter function.
  • sort(key: keyof Document, order: 'asc' | 'desc'): void: Sorts documents in the database by a specified key.
  • paginate(page: number, pageSize: number): Document[]: Retrieves a paginated subset of documents from the database.
  • count(): number: Returns the total number of documents in the database.
  • sum(field: keyof Document): number: Calculates the sum of a numeric field across all documents.
  • average(field: keyof Document): number: Calculates the average value of a numeric field across all documents.
  • min(field: keyof Document): number: Finds the minimum value of a numeric field across all documents.
  • max(field: keyof Document): number: Finds the maximum value of a numeric field across all documents.
  • distinct(field: keyof Document): any[]: Retrieves unique values of a specified field across all documents.
  • search(query: string, fields: (keyof Document)[]): Document[]: Searches for documents containing a specified query string in one or more fields.

Additional Methods

  • saveDataAtPath(path: string, data: any): void: Saves data at a specified path in the document.
  • readAtPath(path: string): any: Retrieves data from a specified path in the document.
  • removeAtPath(path: string): void: Removes data from a specified path in the document.

License

This project is licensed under the MIT License - see the LICENSE file for details.

FAQs

Package last updated on 26 Mar 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.