1.0.0 • Published 6 years ago

store.js-moretypes-plugin v1.0.0

Weekly downloads
3
License
MIT
Repository
github
Last release
6 years ago

Store.js moreTypes Plugin

npm version

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' }