
Product
Announcing Precomputed Reachability Analysis in Socket
Socket’s precomputed reachability slashes false positives by flagging up to 80% of vulnerabilities as irrelevant, with no setup and instant results.
@bigcommerce/memoize
Advanced tools
A JavaScript library for memoizing the result of a pure function
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.
You can install this library using npm.
npm install --save @bigcommerce/memoize
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,
});
To release:
npm run release
To see other available commands:
npm run
MIT
FAQs
A JavaScript library for memoizing the result of a pure function
We found that @bigcommerce/memoize demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 12 open source maintainers collaborating on the project.
Did you know?
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.
Product
Socket’s precomputed reachability slashes false positives by flagging up to 80% of vulnerabilities as irrelevant, with no setup and instant results.
Product
Socket is launching experimental protection for Chrome extensions, scanning for malware and risky permissions to prevent silent supply chain attacks.
Product
Add secure dependency scanning to Claude Desktop with Socket MCP, a one-click extension that keeps your coding conversations safe from malicious packages.