
Security News
npm ‘is’ Package Hijacked in Expanding Supply Chain Attack
The ongoing npm phishing campaign escalates as attackers hijack the popular 'is' package, embedding malware in multiple versions.
@digitalbazaar/lru-memoize
Advanced tools
A Memoized wrapper around the JavaScript
lru-cache
library.
lru-memoize
is used to
to memoize promises
(as opposed to just the results of the operations),
which helps in high-concurrency use cases. (And in turn, it uses
lru-cache
under the hood.)
To install locally (for development):
git clone https://github.com/digitalbazaar/lru-memoize.git
cd lru-memoize
npm install
To import:
import { LruCache } from '@digitalbazaar/lru-memoize';
// or
const { LruCache } = require('@digitalbazaar/lru-memoize');
The memoized LruCache
constructor passes any options given to it through to
the lru-cache
constructor, so see that repo for the full list of cache
management options. Commonly used ones include:
max
(default: 100) - maximum size of the cache.maxAge
(default: 5 sec/5000 ms) - maximum age of an item in ms.updateAgeOnGet
(default: false
) - When using time-expiring entries with
maxAge
, setting this to true will make each entry's effective time update to
the current time whenever it is retrieved from cache, thereby extending the
expiration date of the entry.This library is useful for caching (in a deterministic memoized fashion) expensive or long-running functions, such as API requests, database lookups, and so on.
For example, say you have a function fetchStatus()
that retrieves a result from a web API (here, simulated with a
delay()
wait). To cache the result of this function:
import { LruCache } from '@digitalbazaar/lru-memoize';
// Cache expiration/TTL: 5 seconds
const myCache = new LruCache({ maxAge: 5000 });
async function fetchStatus() {
// simulate an async task
await delay(100);
executedTestFn = true;
return {success: true, timestamp: Date.now()};
}
// Load the cached result if it's present, otherwise, perform the operation
const result = await myCache.memoize({
key: 'myApiResults',
fn: fetchStatus
});
// You can also memoize a particular call to a function, using anonymous arrow functions:
const url = 'https://api.example';
const result = await myCache.memoize({
key: 'myResults',
fn: async () => fetchMyResultsFromWeb({ url })
});
The key
param is used to namespace the caches, in case the same LruCache
instance is being used to cache different
types of operations/functions.
PRs accepted.
If editing the Readme, please conform to the standard-readme specification.
4.0.0 - 2025-05-22
lru-cache@11
. This replaces lru-cache@6
which has a
number of breaking changes that impact any use of this library that
previously accessed the underlying cache interface. The main interface
of this module has only changed in that the options it accepts when
creating the cache need to now conform to v11 of lru-cache
instead of
v6. The v6 maxAge
option, if given, will result in an error being thrown.delete()
method now returns true
if the passed key was
removed from the cache and false
if not, matching the v11 delete()
interface. Previously, undefined
was returned in both cases.FAQs
LRU Memoize
The npm package @digitalbazaar/lru-memoize receives a total of 5,528 weekly downloads. As such, @digitalbazaar/lru-memoize popularity was classified as popular.
We found that @digitalbazaar/lru-memoize demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
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.
Security News
The ongoing npm phishing campaign escalates as attackers hijack the popular 'is' package, embedding malware in multiple versions.
Security News
A critical flaw in the popular npm form-data package could allow HTTP parameter pollution, affecting millions of projects until patched versions are adopted.
Security News
Bun 1.2.19 introduces isolated installs for smoother monorepo workflows, along with performance boosts, new tooling, and key compatibility fixes.