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

node-dummy-cache

v0.3.0

Published

A simple in memory cache to use with nodejs or the browser

Readme

node-dummy-cache

A simple in memory cache to use with javascript.

npm Build Status Test Coverage dependencies Status devDependencies Status

Installation

node.js

npm install node-dummy-cache

Import inside your code:

var cacheFactory = require('node-dummy-cache');

HTML

Download lib/dummy-cache.js.

Import inside HTML:

<script type="text/javascript" src="dummy-cache.js"></script>

For old browsers you will also need json2.js.

Usage

Simple key/value

var users = cacheFactory.create(cacheFactory.ONE_HOUR);

users.put(1, { name : 'A' });

var user = users.get(1);

Function style

Before:

function dummy(a, b, c, callback) {
	// Do complex stuff here
	callback(undefined, 'A', 'B');
};

dummy(1, 2, 3, function(err, data1, data2) {
	// You got it
});

Adding cache:

var dummy = cacheFactory.create(cacheFactory.ONE_HOUR, function (a, b, c, callback) {
	// Do complex stuff here
	callback(undefined, 'A', 'B');
});

dummy(1, 2, 3, function(err, data, data2) {
	// You got it
});

Promise style

Before:

function dummy(a, b, c) {
	return new Promise(function(resolve, reject) {
		// Do complex stuff here
		resolve('A');
	});
};

dummy(1, 2, 3).then(function(data) {
	// You got it
});

Adding cache:

var dummy = cacheFactory.create(cacheFactory.PROMISE, cacheFactory.ONE_HOUR, function (a, b, c) {
	return new Promise(function(resolve, reject) {
		// Do complex stuff here
		resolve('A');
	});
});

dummy(1, 2, 3).then(function(data) {
	// You got it
});

Fetch when needed (callback style)

var users = cacheFactory.create(cacheFactory.ONE_HOUR, function (id, callback) {
	// Do complex stuff here
	callback(undefined, user);
});

users.get(1, function(err, user) {
	// You got it
});

Fetch when needed (promise style)

var users = cacheFactory.create(cacheFactory.PROMISE, cacheFactory.ONE_HOUR, function (id) {
	return new Promise(function(resolve, reject) {
		// Do complex stuff here
		resolve(user);
	});
});

users.get(1).then(function(user) {
	// You got it
});

Mixed

var users = cacheFactory.create(cacheFactory.ONE_HOUR, function (id, callback) {
	// Do complex stuff here
	callback(undefined, user);
});

users(1, function(err, user) {
	// You got it
});

users.get(1, function(err, user) {
	// You got it
});

users.getAsPromise(1).then(function(user) {
	// You got it
});

var user = users.get(1); // Returns only if cached

user = users(1); // Returns only if cached

Complex

var users = cacheFactory.create(cacheFactory.ONE_HOUR, function (id1, id2, callback) {
	// Do complex stuff here
	callback(undefined, user, date);
});

users.get(1, 2, function(err, user, date) {
	// You got it
});

var user = users.get(1, 2); // Returns the user only if cached

users.put(1, 2, user); // Adds the user, but no date

API

All arguments passed to the get / put must be JSON serializable.

cacheFactory.create({ type: string, maxAliveTimeMS: number, maxNotAccessedTimeMs: number, onErrorMaxAliveTimeMs: number }, fetcher: function)

Creates a new cache.

This is the base constructor, all the other ones are shortcuts to this.

Params:

  • An object with the cache configuration. The available fields are:
    • type : one of cacheFactory.CALLBACK or cacheFactory.PROMISE. The default is CALLBACK.
    • maxAliveTimeMS : Max time a value will stay in cache starting with its creation. The default is forever.
    • maxNotAccessedTimeMs : Max time a value will stay in cache after its last access. The default is to only consider alive time.
    • onErrorMaxAliveTimeMs : Max time a value will stay in cache when an error is returned. The default is the same as maxAliveTimeMS.
  • fetcher : callback to fetch the data

cacheFactory.create(type: string, maxAliveTimeMS: number, maxNotAccessedTimeMs: number, fetcher: function)

Creates a new cache.

Params:

  • type : one of cacheFactory.CALLBACK or cacheFactory.PROMISE
  • maxAliveTimeMS : Max time a value will stay in cache starting with its creation
  • maxNotAccessedTimeMs : Max time a value will stay in cache after its last access
  • fetcher : callback to fetch the data

cacheFactory.create(maxAliveTimeMS: number, maxNotAccessedTimeMs: number, fetcher: function)

Creates a new cache. Fetcher expects a callback.

Params:

  • maxAliveTimeMS : Max time a value will stay in cache starting with its creation
  • maxNotAccessedTimeMs : Max time a value will stay in cache after its last access
  • fetcher : callback to fetch the data

cacheFactory.create(type: string, maxAliveTimeMS: number, fetcher: function)

Creates a new cache.

Params:

  • type : one of cacheFactory.CALLBACK or cacheFactory.PROMISE
  • maxAliveTimeMS : Max time a value will stay in cache starting with its creation
  • fetcher : callback to fetch the data

cacheFactory.create(maxAliveTimeMS: number, fetcher: function)

Creates a new cache. Fetcher expects a callback.

Params:

  • maxAliveTimeMS : Max time a value will stay in cache starting with its creation
  • fetcher : callback to fetch the data

cacheFactory.create(maxAliveTimeMS: number, maxNotAccessedTimeMs: number)

Creates a new cache. All values must be added to cache using put.

Params:

  • maxAliveTimeMS : Max time a value will stay in cache starting with its creation
  • maxNotAccessedTimeMs : Max time a value will stay in cache after its last access

cacheFactory.create(fetcher: function)

Creates a new cache. Fetcher expects a callback. Values never expires.

Params:

  • fetcher : callback to fetch the data

cacheFactory.create(maxAliveTimeMS: number)

Creates a new cache. All values must be added to cache using put.

Params:

  • maxAliveTimeMS : Max time a value will stay in cache starting with its creation

cacheFactory.create()

Creates a new cache. Values never expires. All values must be added to cache using put.

License

MIT. Check LICENSE file.