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

skewer-db

v1.0.3

Published

A tiny custom JSON document-based db that leverages the structural and schema validation advantages of Mongoose while maintaining the simplicity of MongoDB commands

Readme

skewer-db

skewerdb

CONTRIBUTING | Code of Conduct | CHANGELOG

A lightweight, document-based database for small-scale projects and local development. Leveraging familiar Mongoose/MongoDB paradigms for easy setup and usage. Data is stored locally on disk.

Why SkewerDB?

Need a simple database for a small project or local development? Tired of the overhead and learning curve associated with other document databases? SkewerDB offers a streamlined solution, utilizing the familiar schema validation and command structure of Mongoose and MongoDB. This minimizes setup time and allows developers to get started quickly.

  • Lightweight: Minimal dependencies and overhead.
  • Easy to Learn: Uses Mongoose/MongoDB-like syntax and commands.
  • Local Storage: Data is persisted locally on disk.
  • Fast Setup: Get up and running in minutes.
  • Schema Validation: Ensure data integrity with Mongoose-style schemas.

Installation

Using npm:

$ npm i --save skewer-db

Usage

1. Define Your Schema and Model

import { ISkewerModel, SchemaType, SkewerModel } from "skewer-db";

export interface IUser {
  name: string;
}

export const UserSchema: SchemaType = {
  name: { type: String, required: true },
};

export interface IUserModel extends IUser, ISkewerModel {}

export const UserModel = () => new SkewerModel<IUserModel>('users', UserSchema);

2. Perform Database Operations

import UserModel from './user-model'; // Import your model

const userModel = UserModel();
userModel.initialize();

try {
  const newRecord = userModel.insertOne(record);
  console.log(newRecord);
  // Expected Output:
  // {
  //   userId: 'jd',
  //   name: 'J Doe',
  //   id: 'some-generated-uuid',
  //   createdAt: '2024-12-17T19:42:09.200Z',
  //   updatedAt: '2024-12-17T19:42:09.200Z'
  // }


  const foundUser = userModel.findById(newRecord.id)
  console.log(foundUser)
  // Expected Output: Same as above


  const allUsers = userModel.getAllRecords()
  console.log(allUsers)
  // Expected Output: An array with the user objects
} catch (error) {
  console.error(error.message);
}

Testing

90% of existing test cases have been generated using LLM models

Available methods

| Method | Description | | ----------------------- | ---------------------------------------------------------------------- | | getAllRecords() | Retrieves all records from the collection. | | findById(id) | Retrieves a record by its ID. | | find(searchObject) | Locates all records that match the search parameters (case-sensitive). | | insertOne(record) | Inserts a single record. | | insertMany(records) | Inserts multiple records. | | updateById(id, updates) | Updates a record by its ID. | | insertOrUpdate(record) | Updates an existing record or inserts a new one. | | deleteById(id) | Deletes a record by its ID. | | deleteAll() | Deletes all records from the collection. | | validateSchema(record) | Validates a record against the schema. |