UNPKG

redux-store-templates

Version:

Set of helpers to create useful and commonly used redux store patterns

109 lines (86 loc) 4.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createAddIds = exports.createRemoveById = exports.createAddById = exports.applyRemoveIds = exports.createUpdateById = exports.applyAddIds = void 0; var _utils = require("./utils"); function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } var applyAddIds = function applyAddIds() { var ids = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var addIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var idsToAdd = (0, _utils.readAsArray)(addIds); return _toConsumableArray(ids.filter(function (id) { return !idsToAdd.includes(id); })).concat(_toConsumableArray(idsToAdd)); }; exports.applyAddIds = applyAddIds; var createUpdateById = function createUpdateById(idName) { return function () { var byId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var updates = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var itemsUpdates = (0, _utils.readAsArray)(updates); // return byId with updated items return itemsUpdates.reduce(function (acc, curr) { var idOfItemToBeUpdated = curr[idName]; var itemToBeUpdated = byId[idOfItemToBeUpdated]; if (!idOfItemToBeUpdated || !itemToBeUpdated) { // don't do anything if update has no corresponding existing item return acc; } return _objectSpread({}, acc, _defineProperty({}, idOfItemToBeUpdated, _objectSpread({}, itemToBeUpdated, curr))); }, byId); }; }; exports.createUpdateById = createUpdateById; var applyRemoveIds = function applyRemoveIds() { var ids = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var removeIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var idsToRemove = (0, _utils.readAsArray)(removeIds); return ids.filter(function (id) { return !idsToRemove.includes(id); }); }; exports.applyRemoveIds = applyRemoveIds; var createAddById = function createAddById(keyName) { return function () { var byId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var items = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var itemsToAdd = (0, _utils.readAsArray)(items); var add = itemsToAdd.reduce(function (acc, curr) { return _objectSpread({}, acc, _defineProperty({}, curr[keyName], curr)); }, {}); return _objectSpread({}, byId, add); }; }; exports.createAddById = createAddById; var createRemoveById = function createRemoveById(keyName) { return function () { var byId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var removeIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var idsToRemove = (0, _utils.readAsArray)(removeIds); return Object.keys(byId).filter(function (key) { return !idsToRemove.includes(key); }).map(function (key) { return byId[key]; }).reduce(function (acc, curr) { return _objectSpread({}, acc, _defineProperty({}, curr[keyName], curr)); }, {}); }; }; exports.createRemoveById = createRemoveById; var createAddIds = function createAddIds(keyName) { return function () { var ids = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var items = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var itemsToAdd = (0, _utils.readAsArray)(items); var addIds = itemsToAdd.map(function (item) { return item[keyName]; }); return applyAddIds(ids, addIds); }; }; exports.createAddIds = createAddIds;