• Stars
    star
    317
  • Rank 132,216 (Top 3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 9 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A utility to provide LRU memoization for any js function

lru-memoize

NPM Version NPM Downloads Build Status

lru-memoize is a utility to provide simple memoization for any pure javascript function, using an LRU cache that prioritizes the most recently accessed values, and discards the "least recently used" (LRU) items when the size limit is reached. If your function has side effects or relies on some external state to generate its result, it should not be memoized.

Installation

npm install --save lru-memoize

Usage

Let's look at an example where we want to memoize a function that multiplies three numbers together, and we want to keep the last ten arguments -> value mappings in memory.

ES5

var memoize = require('lru-memoize');

var multiply = function(a, b, c) {
  return a * b * c;
}

multiply = memoize(10)(multiply);

module.exports = multiply;

ES6

import memoize from 'lru-memoize';

let multiply = (a, b, c) => a * b * c;

multiply = memoize(10)(multiply);

export default multiply;

API

memoize(limit:Integer?, equals:Function?, deepObjects:Boolean?)

Returns (Function) => Function.

-limit : Integer [optional]

The number of arguments -> value mappings to keep in memory. Defaults to 1.

-equals : Function [optional]

A function to compare two values for equality. Defaults to ===.

-deepObjects : Boolean [optional]

Whether or not to perform a deep equals on Object values. Defaults to false.

More Repositories

1

react-redux-universal-hot-example

A starter boilerplate for a universal webapp using express, react, redux, webpack, and react-transform
JavaScript
12,008
star
2

ducks-modular-redux

A proposal for bundling reducers, action types and actions when using Redux
JavaScript
9,586
star
3

redux-form-material-ui

A set of wrapper components to facilitate using Material UI with Redux Form
JavaScript
831
star
4

multireducer

A utility to wrap many copies of a single Redux reducer into a single key-based reducer.
JavaScript
423
star
5

styled-components-theme

Defines themes via flexible color selectors for use with styled-components
JavaScript
306
star
6

react-native-listener

A utility component to allow easy access to browser native events
JavaScript
136
star
7

remix-conf-2022

XState on the backend!
CSS
107
star
8

react-pdfjs

A React component to wrap PDF.js
JavaScript
81
star
9

react-redux-promise-listener

A React component and Redux middleware that allows actions to be converted into Promises
JavaScript
71
star
10

audiocard

⏯️ AudioCard - Opinionated, responsive, audio player compatible with Twitter Cards
TypeScript
66
star
11

map-props

A higher order React component and allows mapping prop values passed in to other prop values expected by the wrapped component
JavaScript
45
star
12

react-lazy-cache

A utility to lazily calculate and cache values in a react component based on props
JavaScript
45
star
13

redux-promise-listener

A Redux middleware that allows actions to be converted into Promises
JavaScript
44
star
14

reactalicante2018

Code from my talk at React Alicante 2018
CSS
29
star
15

redux-spy

A higher order component decorator to read from a Redux store without subscribing to all its changes
JavaScript
29
star
16

reactalicante2017

Code used during my Redux Form talk at React Alicante 2017
CSS
26
star
17

react-callbag-listener

👂 A React render-prop component that listens to values emitted by callbags
JavaScript
21
star
18

tic-tac-toe-finite-state-machine

An exercise to build a tic-tac-toe finite state machine in typescript and xstate
TypeScript
17
star
19

callbag-pausable

⏯️ Callbag Pausable is a callbag that will convert any callbag stream into one that can be paused and resumed via data or talkback events.
JavaScript
10
star
20

react-thug

Silly React "Thug Life" meme image
10
star
21

postmessage-client-server

A simple promise-based client and server to communicate between pages and iframes with postmessage.
JavaScript
9
star
22

happyhourfm

Happy Hour with Dennis and Erik
TypeScript
6
star
23

expect-predicate

An extension for expect that lets you test values against arbitrary predicates
JavaScript
6
star
24

reactathon2020

Modern Forms in React workshop for Reactathon 2020
JavaScript
5
star
25

potionocean

TypeScript
5
star
26

javascript-flickr-badge

Javascript Flickr Badge
4
star
27

lemoncoders-20180502

Material de una clase he dado para Lemon Coders
JavaScript
4
star
28

seekjusticefm

Seek Justice Podcast
TypeScript
4
star
29

primatrix

If x is prime, is x + 30n prime?
TypeScript
3
star
30

callbag-types

Types for 👜 Callbags
JavaScript
3
star
31

reactfinland2020

JavaScript
2
star
32

typescript-react-apollo-example

Just demonstrating a problem... move along...
1
star
33

datocms-virtual-event-starter-kit-demo-8411

TypeScript
1
star
34

react-hot-loader-problem

A demonstration of a problem (bug?) in react-hot-loader
JavaScript
1
star
35

rescript-gentype-bug

Reproduction of a problem with Rescript's genType
TypeScript
1
star