|
@@ -29,14 +29,10 @@ var cowValueModel = exports.cowValueModel = function cowValueModel() {
|
|
|
|
|
|
fillKeys(keyDescriptions);
|
|
fillKeys(keyDescriptions);
|
|
|
|
|
|
- function setField() {
|
|
|
|
- var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
|
|
- var index = arguments[1];
|
|
|
|
- var val = arguments[2];
|
|
|
|
-
|
|
|
|
|
|
+ function setField(x, index, val) {
|
|
if (index >= keys.length) return val;
|
|
if (index >= keys.length) return val;
|
|
var key = keys[index],
|
|
var key = keys[index],
|
|
- value = x[key],
|
|
|
|
|
|
+ value = x == null ? undefined : x[key],
|
|
modified = setField(value, index + 1, val);
|
|
modified = setField(value, index + 1, val);
|
|
return value === modified ? x : copyWith(x, key, modified);
|
|
return value === modified ? x : copyWith(x, key, modified);
|
|
}
|
|
}
|
|
@@ -45,10 +41,8 @@ var cowValueModel = exports.cowValueModel = function cowValueModel() {
|
|
|
|
|
|
return function (obj) {
|
|
return function (obj) {
|
|
var val = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : GET_SENTINEL;
|
|
var val = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : GET_SENTINEL;
|
|
- return val === GET_SENTINEL ? keys.reduce(function () {
|
|
|
|
- var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
|
|
- var key = arguments[1];
|
|
|
|
- return x[key];
|
|
|
|
|
|
+ return val === GET_SENTINEL ? keys.reduce(function (x, key) {
|
|
|
|
+ return x == null ? undefined : x[key];
|
|
}, obj) : setField(obj, 0, val);
|
|
}, obj) : setField(obj, 0, val);
|
|
};
|
|
};
|
|
};
|
|
};
|