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 🙏

© 2024 – Pkg Stats / Ryan Hefner

@openfinance/cache

v1.0.1

Published

A simple, in-memory cache for javascript projects

Downloads

1

Readme

Openfinance Cache Library

NOTE: This library is now hosted on github packages at https://github.com/openfinanceio/ts-cache. For the latest updates, please use the package @openfinanceio/ts-cache and point npm to github package repo (github guide).

This is a very small library that implements a simple in-memory cache. It can be segmented (i.e., you can instantiate multiple independent caches with different settings), you can set global and local TTLs, and you can set a max key count to prevent the cache from growing too large.

The interface is very basic:

  • To get and cache a value, call Cache::get with a key, a function (optionally async) that returns the value you want to store, and an optional TTL for that key.
  • To get a value directly from the cache, call Cache::get without the function or TTL and expect to handle undefined as a return type.
  • To clear a specific key from the cache, call Cache::clear(key).
  • To clear all keys from the cache, call Cache::clear().

Examples

// Set up a new cache with a global TTL of 600 seconds and at most 10,000 keys
const cache = new Cache({ ttlSec: 600, maxLength: 10000 });

// Get a value from an API through the cache, but give it a shorter TTL
const val = await cache.get(
  "myRemoteVal",
  async () => {
    return await api.getResult();
  }, 
  30
);

// Use the result
if (val === 1) {
  console.log("Remote value is 1");
}

// Get it again for something else
const sameVal = cache.get("myRemoteVal");
if (typeof sameVal !== "undefined") {
  console.log(`Remote val was cached as ${sameVal}`);
}

// Oops! We know something changed that invalidated our cache. Bust it.
cache.clear("myRemoteVal");

// Oh no, lots of uncertainty, what's going on?? Let's just clear the whole cache to be safe....
cache.clear();