Awesome
Introspected
If you'd like to be notified about any possible change that could happen to a JSON compatible model / data / object / array / structure, including the possibility to retrieve the exact full path of the object that changed and eventually walk through it, you've reached your destination.
const data = Introspected(
// any object or JSON compatible structure
// even with nested properties, objects, arrays
JSON.parse('{}'),
(root, path) => {
// the root object that changed
console.log(root);
// the path that just changed
console.log(path);
}
);
// now try the following in console
data.a.b.c.d.e.f.g = 'whatever';
data.array.value = [1, 2, 3];
data.array.value.push(4);
// see all notifications about all changes 🎉
JSON.stringify(data);
// {"a":{"b":{"c":{"d":{"e":{"f":{"g":"whatever"}}}}}},"array":{"value":[1,2,3,4]}}
API
Introspected(objectOrArray[, callback])
create a newIntrospected
object capable of having infinite depth without ever throwing errorsIntrospected.observe(objectOrArray, callback)
crate aIntrospected
with a notifier per each change, or set a notifier per each change to an existentIntrospected
objectIntrospected.pathValue(objectOrArray, path)
walk through an object via a provided path. Apath
is anArray
of properties, it is usually the one received through the notifier whenever aIntrospected
object is observed.
Compatibility
Any spec compliant ES2015 JavaScript engine.
<sup>(that means native WeakMap
, Proxy
and Symbol.toPrimitive
too)</sup>
Working: NodeJS 6+, Chrome, Safari, GNOME Web, Edge, Firefox, Samsung Internet (Chrome 51)
Not there yet: UC Browser (WebKit 534)