You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

@bigcommerce/memoize

Package Overview
Dependencies
Maintainers
12
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@bigcommerce/memoize

A JavaScript library for memoizing the result of a pure function

1.0.2
latest
Source
npmnpm
Version published
Maintainers
12
Created
Source

@bigcommerce/memoize

CircleCI

This library can be used to memoize the result of a pure function.

Unlike the default memoize function provided by Lodash, it can be applied to functions that accept multiple non-primitive arguments. It can also be configured to expire its cache after certain number of unique calls. By default, it compares object-based arguments shallowly; but it can be configured to compare arguments strictly or deeply depending on your usage requirement.

Install

You can install this library using npm.

npm install --save @bigcommerce/memoize

Usage

To memoize a function:

function fn(a, b) {
    return { a, b };
}

const memoizedFn = memoize(fn);
const result = memoizedFn({ message: 'hello' }, { message: 'world' });
const result2 = memoizedFn({ message: 'hello' }, { message: 'world' });

expect(result).toBe(result2);

To set a limit on the cache size:

function fn(a, b) {
    return { a, b };
}

const memoizedFn = memoize(fn, { maxSize: 1 });
const result = memoizedFn({ message: 'hello' }, { message: 'world' });

// This call will expire the cache of the previous call because it is called with a different set of arguments
const result2 = memoizedFn({ message: 'hello' }, { message: 'foobar' });
const result3 = memoizedFn({ message: 'hello' }, { message: 'world' });

expect(result3).not.toBe(result);

There is a convenience method for setting the cache size to one:

const memoizedFn = memoizeOne(fn);

To use a different argument comparison function:

const memoizedFn = memoize(fn, { 
    isEqual: (a, b) => a === b,
});

Contribution

To release:

npm run release

To see other available commands:

npm run

License

MIT

FAQs

Package last updated on 01 May 2025

Did you know?

Socket

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.

Install

Related posts