1.0.0 • Published 6 years ago
store.js-moretypes-plugin v1.0.0
Store.js moreTypes Plugin
moreTypes is a datatype support plugin for the Store.js library.
It enables Store.js to handle Map
and Set
data with its built-in definitions.
User can also define their own handlers for any other unsupported datatypes.
Installation
npm i store.js-moretypes
var store = require("store")
var moreTypes = require("store.js-moretypes")
store.addPlugin(moreTypes)
Usage
Basic usage example
var map = new Map();
map.set('a', 'ok');
map.set('b', 'ez');
map.set('c', new Set([42, new Map()]));
store.set('moreTypes', map)
console.log(map);
console.log(store.get('moreTypes'))
// Output:
// Map { 'a' => 'ok', 'b' => 'ez', 'c' => Set { 42, Map {} } }
// Map { 'a' => 'ok', 'b' => 'ez', 'c' => Set { 42, Map {} } }
add_types({})
requires a definition as follows:
key
: name got from value.constructor.name
value
: consists of optional replacer
and reviver
replacer
: f(any data) => JSON.stringify() compatible data
reviver
: f(Object from JSON.parse()) => any data
Custom datatype usage example
// A custom datatype
var Person = function(p_names) {
this.first = p_names.first;
this.last = p_names.last;
}
// Add handlers for the datatype
store.add_types({
Person: {
replacer: (obj) => ({first: obj.first, last: obj.last}),
reviver: (val) => new Person(val)
}
})
var person = new Person({first: "Tri", last: "Hoang"})
store.set('tri', person)
console.log(person);
console.log(store.get('tri'));
// Output:
// Person { first: 'Tri', last: 'Hoang' }
// Person { first: 'Tri', last: 'Hoang' }
1.0.0
6 years ago