react-blips
Version:
Official React bindings for Blips
38 lines (28 loc) • 1.79 kB
JavaScript
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
import { isNil } from './isNil';
import { when } from './when';
import { isEmpty } from './isEmpty';
import { omit } from './omit';
import { removeEmptyOrNilProps } from './removeEmptyOrNilProps';
import { mergeErrors } from './mergeErrors';
export function computeNextState(list, _ref) {
var dataKey = _ref.dataKey,
queriesKey = _ref.queriesKey,
mutationsKey = _ref.mutationsKey;
var base = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var errorsObject = {};
var update = list.reduce(function (acc, _ref2) {
var _extends2;
var errors = _ref2.errors,
data = _ref2.data,
res = _objectWithoutProperties(_ref2, ['errors', 'data']);
errors && (errorsObject = mergeErrors(errors)(errorsObject));
return _extends({}, acc, (_extends2 = {}, _extends2[dataKey] = _extends({}, acc[dataKey] || {}, when(isNil, {}, data)), _extends2[mutationsKey] = _extends({}, acc[mutationsKey] || {}, when(isNil, {}, res[mutationsKey])), _extends2[queriesKey] = _extends({}, acc[queriesKey] || {}, when(isNil, {}, res[queriesKey])), _extends2));
}, base);
if (!isEmpty(errorsObject)) {
update[dataKey] = omit(Object.keys(errorsObject), update[dataKey]);
update[dataKey]['errors'] = errorsObject;
}
return removeEmptyOrNilProps(update);
}