UNPKG

falcor

Version:

A JavaScript library for efficient data fetching.

36 lines (32 loc) 1.1 kB
var ModelResponse = require("./../response/ModelResponse"); var pathSyntax = require("falcor-path-syntax"); module.exports = function getValue(path) { var parsedPath = pathSyntax.fromPath(path); var pathIdx = 0; var pathLen = parsedPath.length; while (++pathIdx < pathLen) { if (typeof parsedPath[pathIdx] === "object") { /* eslint-disable no-loop-func */ return new ModelResponse(function(o) { o.onError(new Error("Paths must be simple paths")); }); /* eslint-enable no-loop-func */ } } var self = this; return new ModelResponse(function(obs) { return self.get(parsedPath).subscribe(function(data) { var curr = data.json; var depth = -1; var length = parsedPath.length; while (curr && ++depth < length) { curr = curr[parsedPath[depth]]; } obs.onNext(curr); }, function(err) { obs.onError(err); }, function() { obs.onCompleted(); }); }); };