JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 23920
  • Score
    100M100P100Q146401F
  • License MIT

A memoization algorithm in which each function argument represents a new key, creating a trie of caches as defined by the array in your first argument.

Package Exports

  • trie-memoize

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (trie-memoize) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme


trie-memoize

Bundlephobia Types Code coverage Build status NPM Version MIT License

npm i trie-memoize

A memoization algorithm in which each function argument represents a new key in a mapping, creating a trie of caches - the depth of which defined by your setup. It is very quick with its O(n arguments) lookup performance and is memory-efficient, particularly when WeakMaps are used.

This memoization function only works for functions where the exact number of arguments is known and constant.

Quick Start

const m1 = memoize([{}], v => v.toUpperCase())
m1('foo') // FOO uncached
m1('foo') // FOO cached
const m2 = memoize([{}, Map], (v1, v2) => `${v1}-${v2}`)
m2('foo', 'bar') // foo-bar, uncached
m2('foo', 'bar') // foo-bar, cached

const m3 = memoize(
  [WeakMap, Map, WeakMap],
  (v1, v2, v3) =>
    `${JSON.stringify(v1)}-${JSON.stringify(v1)}-${JSON.stringify(v3)}`
)
let v1 = {},
  v2 = 'foo',
  v3 = {}
m3(v1, v2, v3) // {}-"foo"-{} uncached
m3(v1, v2, v3) // {}-"foo"-{} cached

API

memoize(caches: (MapLike | Record<any, any>)[], fn: (...args: any[]) => any)

Argument Type Description
caches MapLike[] An array of plain objects or map-like constructors (Map, WeakMap, some custom map w/ get + set methods) used for caching each level of the tree. The first array element will be the cache for the first argument of the function, call, and so on. Therefore, the length of this array must be the same as the length of arguments your memoized function accepts, or at least as deep as you'd like to cache.
fn Function The function you'd like to memoize

LICENSE

MIT