domain-map
domain-map provides domain prefixed ES6 Maps, and can be used as registry for other components.
Installation
Using npm:
$ npm install --save domain-map
How to use?
Normal usage with ES2015 modules:
import DomainMap from 'domain-map'
let registry = new DomainMap();
registry.set('myDomain', 'someKey', 'value1');
registry.set('myDomain', 'otherKey', 'value2');
registry.get('myDomain', 'someKey');
registry.get('myDomain', 'randomKey', false);
registry.getDomainKeysList('myDomain');
let items = registry.getDomain('myDomain');
items.forEach((key, value) => {
});
registry.clearDomain('myDomain');
registry.set('properties', 'objectAsValue', {abc: false});
registry.set('properties', 'exampleFunction', (value) => { return value + 1; });
In some cases you want to store data for key which is actually an object.
Normal ES6 Map object will return value for object only if key is exactly the same object you used when storing data:
let map = new Map();
let myObjectKey = {entityId: 1};
let mySecondKey = {entityId: 1};
map.set(myObjectKey, {name: "Alice"});
map.get(myObjectKey);
map.get(mySecondKey);
Domain map allows you to use "deep object key comparison". Two objects are same if their values equals:
import DomainMap from 'domain-map'
let registry = new DomainMap({strictKeyMode: false});
let myObjectKey = {entityId: 1};
let mySecondKey = {entityId: 1};
registry.set('myDomain', myObjectKey, {name: 'Alice'});
registry.get('myDomain', mySecondKey, false);
If you need just Map object with deep object key comparison, you can have one with static createCollection() method:
let collection = DomainMap.createCollection({strictKeyMode: false});
Test
Run tests using npm:
$ npm run test