UNPKG

falcor

Version:

A JavaScript library for efficient data fetching.

37 lines (34 loc) 1.2 kB
var jsong = require("falcor-json-graph"); var ModelResponse = require("./../response/ModelResponse"); var isPathValue = require("./../support/isPathValue"); module.exports = function setValue(pathArg, valueArg) { var value = isPathValue(pathArg) ? pathArg : jsong.pathValue(pathArg, valueArg); var pathIdx = 0; var path = value.path; var pathLen = path.length; while (++pathIdx < pathLen) { if (typeof path[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.set(value).subscribe(function(data) { var curr = data.json; var depth = -1; var length = path.length; while (curr && ++depth < length) { curr = curr[path[depth]]; } obs.onNext(curr); }, function(err) { obs.onError(err); }, function() { obs.onCompleted(); }); }); };