falcor
Version:
A JavaScript library for efficient data fetching.
45 lines (34 loc) • 1.15 kB
JavaScript
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
};
};