Skip to content

Decorator to memoize the results of async functions via lru-cache.

Notifications You must be signed in to change notification settings

transitive-bullshit/p-cache

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

p-cache

Decorator to memoize the results of async functions via lru-cache.

NPM Build Status JavaScript Style Guide

Features

  • Uses lru-cache for caching impl
  • Uses object-hash for implicit cache key derivation from function args
  • Thoroughly tested in production

Install

npm install --save p-cache

Usage

const request = require('request-promise-native')

const pCache = require('p-cache')({
  label: 'test-service',
  // pass args to lru-cache here
  max: 1000
})

// returns an async function which gets the given url, with the results being 
// cached via lru-cache up to 1000 urls
module.exports = pCache(async (url) => {
  return request(url)
})

API

function pCache(opts)

Returns a function decorator that will wrap calls to the target function in an lru-cache instance defined by these opts.

  • opts - object, optional
  • opts.label - string, optional label to use for displaying cache hits and misses
  • opts.log - function, optional function to use for displaying cache hits and misses (default: console.log)

Note all unrecognized options are passed onto lru-cache

  • opts.max - number, optional passed onto lru-cache
  • opts.maxAge - number, optional passed onto lru-cache
  • opts.length - function, optional passed onto lru-cache
  • opts.dispose - function, optional passed onto lru-cache
  • opts.stale - boolean, optional passed onto lru-cache
  • opts.noDisposeOnSet - boolean, optional passed onto lru-cache

pCache(opts) => Function<Promise>(async function(...args))

License

MIT © Travis Fischer

Support my OSS work by following me on twitter twitter

About

Decorator to memoize the results of async functions via lru-cache.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published