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

twin-db

v1.2.0

Published

A usefully local database.

Readme

Before All

Make sure you're using "type": "module" in package.json. Make sure to pass just values that JSON accepts, if not, the values will be changed to null.

How to Use?

To create a new database make the following step:

import TwinDB from 'twin-db';
const database = new TwinDB('db');

And your database is done.

You can make various databases too:

import TwinDB from 'twin-db';
const database = new TwinDB('db');
const coolDatabase = new TwinDB('cool');

Database Methods

Now we going to explain you the database methods. Imagine the following data from a random database:

{
  "name": "Daniel",
  "surname": "Costa",
  "age": 60,
  "cool": false,
  "hobbies": ["cs", "pizza"],
  "address": {
    "city": "I dont",
    "state": "ES",
    "country": "Brazil"
  }
}

1. Set Method

This one changes the value of a path to the value you passed.

database.set('name', 'De'); // now the name is "De".
database.set('age', 50); // now the age is 50.
  • To go through the object, make sure to use ".", like address.city.

2. Get Method

Get a value from a given path.

database.get('surname'); // returns "Costa".

3. Delete Method

Deletes a value from data.

database.delete('cool') // now the cool value no longer exists.
database.delete('address.country') // now the country no longer exists too.

4. Sum Method

Sum the current value of the given path with the given value.

database.sum('age', 30); // now the age is 80.

5. Sub Method

Subtract the current value of the given path with the given value.

database.sub('age', 10); // now the age is 70.

6. Concat Method

Concatenate the current value of the given path with the given value.

database.concat('address.city', ' know'); // now the city is "I dont know".

7. Push Method

Push the given values into the current value array.

database.push('hobbies', 'sleep', 'valorant'); // now the hobbies is ["cs", "pizza", "sleep", "valorant"].

8. Pull Method

database.pull('hobbies', 'cs', 'sleep') // now the hobbies is ["pizza", "valorant"].

Now the data object will looks like that:

{
  "name": "De",
  "surname": "Costa",
  "age": 70,
  "hobbies": ["pizza", "valorant"],
  "address": {
    "city": "I dont know",
    "state": "ES"
  }
}

Updates

MM/DD/YYYY 04/09/2026 - 1.1.*

  • Now sum, sub and push sets the value to the value you passed in execution when the path does not exists.

05/03/2026 - 1.2.*

  • Now package doesn't uses eval anymore, providing better security.