node package manager


Fast tree with live iterator


Build Status SemVer License

Fast tree with live iterator. The tree can be modified while iterating over the nodes.

Install with npm

npm install live-tree

Browser compatibility

To use this module in a browser, download the npm package and then use Browserify to create a standalone version.


var Node = require('live-tree').Node;
var n = new Node('root');
n.set('a', 2);
n.set('a.b', 3);
n.set('a.c', 7);
var c, i = n.iterator();
while ((= !== undefined) {

Node API

  • Node(name): Returns a new Node with the given name. The name must be of type string and not empty.
  • name: The name of the node
  • value: The value of the node
  • children: The list of children (see live-list)
  • set(name, value): Sets the value of the named node. If the node does not exist, it is created and added to the children by calling _add(node). The value is changed by calling _value(value).
  • get(name): Returns the value of the named node. If the node does not exist, undefined is returned.
  • remove(name): Removes the named node. If it has children, the value is deleted. Parent nodes in the path with no value and no remaining children will be removed as well.
  • removeAll(): Removes all child nodes
  • node(name): Return the named node or undefined if the node does not exist
  • _add(node): Called by set to add a node to the children. The default implementation does this.children.push(node);.
  • _value(value): Called by set to change the value. The default implementation does this.value = value;.
  • toObject(): Returns a plain object representation of the node and it's children
  • iterator(): Returns a new Iterator

Iterator API

The iterator is derived from min-iterator.

  • Iterator(node): Returns a new Iterator using the given root node
  • next(): Returns the next node in the tree. If there are no items left, undefined is returned.