UNPKG

falcor

Version:

A JavaScript library for efficient data fetching.

45 lines (34 loc) 1.15 kB
var getValueSync = require("./../get/getValueSync"); var InvalidModelError = require("./../errors/InvalidModelError"); module.exports = function getBoundValue(model, pathArg, materialized) { var path = pathArg; var boundPath = pathArg; var boxed, treatErrorsAsValues, value, shorted, found; boxed = model._boxed; materialized = model._materialized; treatErrorsAsValues = model._treatErrorsAsValues; model._boxed = true; model._materialized = materialized === undefined || materialized; model._treatErrorsAsValues = true; value = getValueSync(model, path.concat(null), true); model._boxed = boxed; model._materialized = materialized; model._treatErrorsAsValues = treatErrorsAsValues; path = value.optimizedPath; shorted = value.shorted; found = value.found; value = value.value; while (path.length && path[path.length - 1] === null) { path.pop(); } if (found && shorted) { throw new InvalidModelError(boundPath, path); } return { path: path, value: value, shorted: shorted, found: found }; };