node package manager
Easy sharing. Manage teams and permissions with one click. Create a free org ยป

keypath-observer

keypath-observer

Keypaths

A keypath is a non-empty array consisting of strings and integers. A single element in this array is called a segment.

Wildcards are supported; when supplying a keypath to observe, use ? to match any value for the current segment, or * to match all keypaths from this point, regardless of length.

Wildcard Examples

['a', 'b', '?'] matches ['a', 'b', 'c'], ['a', 'b', 'a'], but not ['a', 'b', 'c', 'd'].

['a', '*'] matches ['a', 'b'], ['a', 'b', 'b'], and so-on.

Events

Events are designated by strings and may be namespaced with :. Events propagate through the namespace hierarchy, so for example, firing the event change:update:add would fire listeners registers for change:update:add, change:update and change.

API

var tree = require('keypath-observer')()

Create a new keypath observer instance.

tree.observe(keypath, cb, [ctx])

Register callback cb, optionally bound to context ctx, to be fired whenever any event is emitted on keypath.

Returns a function that can be called to remove the callback registration.

tree.observe(keypath, evt, cb, [ctx])

Register callback cb, optionally bound to context ctx, to be fired whenever event evt is emitted on keypath.

Returns a function that can be called to remove the callback registration.

tree.emit(keypath, evt, [args...])

Emit event evt on keypath.