instance-memoize
flexible cache wrapper for js object.
Getting Started
Prerequisites
- Node.js v8+
- npm or yarn
Installing
$ npm add instance-memoize
Usage
basic example
instance-memoize
cached results of method invocation on the specified object permanently.
If you want to manage cache purging and lifetime see custom cache example.
; // or const memoize = require('instance-memoize') for commonjs modules const obj = calledCounter: 0 { calledCounter++; return "test value"; }; const wrapped = console // output => "test value"console // output => "1" /* The result of "method" is stored internal cache, From the second call, the result is returned via cache. */console // output(from cache) => "test value" console // output => "1"
with es2015 classes
; // or const memoize = require('instance-memoize') for commonjs modules { thiscalledCounter = 0; } { thiscalledCounter++; return "value"; } const wrapped = console // output => "test value"console // output => "1" console // output(from cache) => "test value" console // output => "1"
with async functions
instance-memoize
also works with async/await or Promise.
; // or const memoize = require('instance-memoize') for commonjs modules { thiscalledCounter = 0; } async { thiscalledCounter++; return "value"; } const wrapped = console // output => "test value"console // output => "1" console // output(from cache) => "test value" console // output => "1"
with custom cache
You can use your customized cache by passing cache instance via options.
cache
instance must implement three methods;
- get(key: string) :Object
- set(key: string, obj: any)
- reset()
This example shows instance-memoize
working with isaacs's node-lru-cache.
; // or const memoize = require('instance-memoize') for commonjs modules { thiscalledCounter = 0; } { thiscalledCounter++; return "value"; } const wrapped =
API
memoize(instance, [...methodNames], options)
arguments
- instance (Object): Source object that wrapped to.
- methodNames (Array): Method name(s) that cached.
- options (Object):
- cache (Object): Custom Cache object
- keygen (function(methodName: string, ...args): string ): cache key generator function
returns
(Object): Wrapped instance that caches the result of specified method invocation.
Authors
- Akito Ito - Initial work - akito0107
License
This project is licensed under the Apache2.0 License - see the LICENSE.md file for details