Socket
Book a DemoInstallSign in
Socket

await-cache

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

await-cache

A simple to use cache for async-functions

latest
Source
npmnpm
Version
1.0.2
Version published
Maintainers
1
Created
Source

await-cache

A cache for async-functions. It also works for non-async functions. It's even possible to enable a LRU-algorithm.

How to install

npm i await-cache

How to use

Simply surround the async function you want to cache. In this example fetch is a function that loads a file.

const cachify = require('await-cache');

const cachedFetch = cachify(/* function to cache: */fetch, /* cache-time in milliseconds: */ 1000 * 60 * 60)

async function test() {
  try {
    const data1 = await cachedFetch('foo.bar') // will do the real fetch and cache it for an hour
    const data2 = await cachedFetch('foo.bar') // will instantly return the cached value
    const data3 = await cachedFetch('foo2.bar') // will fetch a different result and cache it for an hour
  } catch(e) {
    // fetch throw an error
    console.error(e)
  }
}

Second argument can be the cache-time in milliseconds or an object of options. With setting the maxSize-option you enable the LRU-Cache:

const cachify = require('await-cache');

const cachedFunc = cachify(async (filename) => {
  let data = await fetch(filename)
  return JSON.parse(data)
}, {
  maxAge: 60 * 60 * 1000, // cache for an hour
  maxSize: 2, // enable LRU-cache. Only cache the last 2 used files. The cache will never save more that the result of 2 different arguments. 
  serialize: (args) => JSON.stringify(args) // use a special argument-serialize-function
})

The default serialisation for the arguments uses JSON.stringify. So you will have to write a custom serialisation if you want to use functions or complex objects as arguments.

License

MIT

Keywords

cache

FAQs

Package last updated on 20 Aug 2019

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