1.0.1 • Published 8 months ago

@chriscdn/memoize v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

@chriscdn/memoize

Memoize a synchronous or asynchronous function.

Installing

Using npm:

npm install @chriscdn/memoize

Using yarn:

yarn add @chriscdn/memoize

Usage

The package comes with two functions: Memoize and MemoizeAsync.

import { Memoize, MemoizeAsync } from "@chriscdn/memoize";

The Memoize function can be used to memoize a synchronous function. The MemoizeAsync function can be used to memoize an asynchronous function. The cache is based quick-lru.

Each call to Memoize or MemoizeAsync will create a new cache instance.

The MemoizeAsync function prevents duplicate evaluations by ensuring multiple calls with an identical cache key is only processed once.

By default, the cache key is generated by calling JSON.stringify() on the function arguments. This can be customized (see below).

Example (synchronous)

To memoize a function:

const _add = (x: number, y: number) => x + y;

const add = Memoize(_add);

The add function has the same interface as _add:

const result = add(5, 7);
// 12

Example (asynchronous)

The asynchronous case is similar:

const _add = async (x: number, y: number) => x + y;

const add = MemoizeAsync(_add);

const result = await add(5, 7);
// 12

Options

The Memoize and MemoizeAsync functions accept an Options parameter to control the behaviour of the cache.

const add = MemoizeAsync(_add, options);

The available options are as follows, with their defaults:

const options = {
  // maximum number of items in the cache
  maxSize: 1000,

  // maximum number of milliseconds an item is to remain in the cache, undefined implies forever
  maxAge: undefined,

  // a synchronous function for generating a cache key (must return a String)
  resolver: (...args) => JSON.stringify(args),
};

Tests

yarn test

License

MIT

1.0.1

8 months ago

1.0.0

8 months ago