JSPM

multi-key-cache

1.0.3
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 28
  • Score
    100M100P100Q57872F
  • License MIT

A JavaScript (JS) cache that can have multiple complex values as keys

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.