An easy way to store/retrieve/manipulate data associated with a path.
npm install datatree``javascript
/ flow-include type DataTreeList = {[key: string]: any} /
/ flow-include type DataTreeJS = {data?: any, children: {[key: string]: DataTreeJS}} /
// require datatree module
var DataTree = require('datatree');
// static variables
DataTree.concat(thisData/: Array?
// static methods
DataTree.fromJS(inputJS/: JS/)/: DataTree/
DataTree.fromList(list/: List/)/: DataTree/
// create DataTree instance
var dataTree = new DataTree();
// prototype methods
dataTree.getDataIn(keys/: Array
dataTree.setData(data)/: void/
dataTree.setDataIn(keys/: Array
dataTree.deleteData()/: void/
dataTree.deleteDataIn(keys/: Array
dataTree.hasData()/: boolean/
dataTree.hasDataIn(keys/: Array
dataTree.getChildren()/: void/
dataTree.getChildrenIn(keys/: Array
dataTree.hasChildren()/: boolean/
dataTree.hasChildrenIn(keys/: Array
dataTree.merge(thatDataTree/: DataTree/, mergeFunc/: function/)/: void/
dataTree.mergeIn(keys/: Array
dataTree.hasChild(childName/: string/)/: boolean/
dataTree.hasChildIn(keys/: Array
dataTree.getChild(childName/: string/)/: ?DataTree/
dataTree.getChildIn(keys/: Array
dataTree.setChild(childName/: string/, childDataTree/: DataTree/)/: void/
dataTree.setChildIn(keys/: Array
dataTree.createChild(childName/: string/)/: void/
dataTree.createChildIn(keys/: Array
dataTree.deleteChild(childName/: string/)/: void/
dataTree.deleteChildIn(keys/: Array
dataTree.toList()/: List/
dataTree.toJS()/: JS/
``