object-cache-graph-thing

0.1.1 • Public • Published

object-cache-graph-thing Build Status npm version

A thing for making object traversals quicker

Object traversals are slow, recursion is not fun, and waiting 10s for a page to load because you have to parse a JSON blob 17 times is terrible. This tries to fix some of that.

Instead of trying ot recursively search an object to find all children that match a pattern, let's only search it once, construct a graph of all instances of the thing we care about, and manipulate that graph.

Example:

import ObjectCache from 'object-cache-graph-thing';
 
const objectThatICareAbout = {
    a: [
        { foo: true },
        { foo: false, c: { foo: true } }
    ]
    b: { foo: true }
}
 
// Find all objects that have a property `foo`
// The predicate function returns what to store for a given path in the object
// If a falsy value is returned, then that path is ignored and not cached.
const predicate = (testObj) => _.isObject(testObj) && _.has(testObj, 'foo') && foo
 
const cache = new ObjectCache(objectThatICareAbout, predicate);
 
 
// Get all the paths where `foo` is a prop
cache.getPaths(); // [ ['a', 0], ['a', 1], ['a', 1, 'c'], ['b'] ]
 
// Get a sub-graph relative to child
// same as new `ObjectCache(objectThatICareAbout.a, predicate)`, without the overhead of parsing again
cache.getCacheForPath(['a']);
 

API

import ObjectCache from 'object-cache-graph-thing';

ObjectCache instances

Methods

ObjectCache.prototype.constructor(seedObject : Object, predicate : Function)

Constructs a new ObjectCache instance

ObjectCache.prototype.getCacheForValue(val : Any)

Create a new ObjectCache instance for the given value

ObjectCache.prototype.getCacheForPath(path: Array)

Create a new ObjectCache instance for the given subtree

ObjectCache.prototype.getPaths()

Get all the current paths in the tree

ObjectCache.prototype.getValues()

Get all the current values in the tree

Dependencies (2)

Dev Dependencies (14)

Package Sidebar

Install

npm i object-cache-graph-thing

Weekly Downloads

0

Version

0.1.1

License

Beerware

Unpacked Size

16.6 kB

Total Files

7

Last publish

Collaborators

  • adierkens