@strong-roots-capital/memoize

Higher-order memoization function

Usage no npm install needed!

<script type="module">
  import strongRootsCapitalMemoize from 'https://cdn.skypack.dev/@strong-roots-capital/memoize';
</script>

README

memoize

License NPM Package Build Status semantic-release

Higher-order memoization function

Why?

I couldn't find a simple memoization library that was all of the following

  • stable
  • statically typed
  • control over memory usage
  • used the fastest LRU
  • offered the simplest syntax

Install

npm install @strong-roots-capital/memoize

Use

import { memoize } from '@strong-roots-capital/memoize'

declare function f(parameter: number)

const cacheSize = 100
const memoized = memoize(cacheSize)(f)

// Then use `memoized` in place of `f`
memoized(42)

Note that the underlying LRU is implemented with an es6 map, so cache hits are governed by the rules of Map.prototype.get; for example, objects are compared with strict equality.

As a result, memoize only accepts thunks (functions accepting zero arguments) and unary functions (functions accepting a single argument).

Related

Acknowledgments