
Security News
Vite+ Joins the Push to Consolidate JavaScript Tooling
Evan You announces Vite+, a commercial, Rust-powered toolchain built on the Vite ecosystem to unify JavaScript development and fund open source.
@bigcommerce/memoize
Advanced tools
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.
Security News
Evan You announces Vite+, a commercial, Rust-powered toolchain built on the Vite ecosystem to unify JavaScript development and fund open source.
Security News
Ruby Central’s incident report on the RubyGems.org access dispute sparks backlash from former maintainers and renewed debate over project governance.
Research
/Security News
Socket researchers uncover how threat actors weaponize Discord across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.