Package Exports
- multi-key-cache
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (multi-key-cache) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Multi Key Cache
A JavaScript (JS) cache that can have multiple complex values as keys. Keys can be objects, arrays, arrays-within-objects, objects-within-arrays, maps, sets, anything. Highly performant. Made for the browser and nodejs.
Install
npm install multi-key-cache --save
Use
Supports the following methods:
set(keys, val) : Sets a value to a set of keys. Keys can be an array of values, an arguments structure, or any object with a `length` property and numerical property names.
get(keys) : Returns the value of a set of keys.
has(keys) : Returns true if the set of keys have a value, otherwise false.
delete(keys) : Deletes the value of a set of keys.
values() : Returns array of all values.
keyNodes() : Returns array of all individual key nodes (not sets of keys).
Examples:
var MultiKeyCache = require('multi-key-cache');
var multiKeyCache = new MultiKeyCache();
multiKeyCache.set(['a', 'b', 'c'], 'my value'); // sets 'my value' to keys a b c
multiKeyCache.set(['a', 'b', 'd'], 'another value'); // sets 'another value' to keys a b d
multiKeyCache.get(['a', 'b', 'c']); // returns 'my value'
multiKeyCache.get(['a', 'b', 'd']); // returns 'another value'
multiKeyCache.get(['a', 'b', 'x']); // returns undefined
multiKeyCache.has(['a', 'b', 'c']); // returns true
multiKeyCache.delete(['a', 'b', 'c']); // deletes 'my value'
multiKeyCache.has(['a', 'b', 'c']); // returns false
multiKeyCache.get(['a', 'b', 'c']); // returns undefined
Complex objects as keys:
var MultiKeyCache = require('multi-key-cache'),
multiKeyCache = new MultiKeyCache(),
arg1 = { a: 1 },
arg2 = [{ b: 2 }],
arg3 = { c: [{ d: 3 }] };
multiKeyCache.set([arg1, arg2, arg3], 'my value'); // sets 'my value' to complex keys
multiKeyCache.set([arg3, arg2, arg1], 'another value'); // sets 'another value' to completely unrelated set of complex keys
multiKeyCache.get([arg1, arg2, arg3]); // returns 'my value'
multiKeyCache.get({ 0: arg3, 1: arg2, 2: arg1, length: 3}); // returns 'another value', keys container doesn't have to be an array
multiKeyCache.delete({ 0: arg1, 1: arg2, 2: arg3, length: 3}); // deletes 'my value' and associated empty keys
multiKeyCache.has([arg1, arg2, arg3]); // returns false
multiKeyCache.get([arg1, arg2, arg3]); // returns undefined
Test
npm run test
License
Released under an MIT license.