UNPKG

redux-store-templates

Version:

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

91 lines (73 loc) 3.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createSelector = exports.createReducer = void 0; var _internals = require("../.internals"); 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; } var createReducer = function createReducer() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, startOn = _ref.startOn, successOn = _ref.successOn, errorOn = _ref.errorOn; var defaultState = { isPending: false, error: "" }; var handleAction = Object.create(null); if (startOn) { (0, _internals.readAsArray)(startOn).forEach(function (opt) { handleAction[opt.type] = function (state) { return _objectSpread({}, state, { isPending: true, error: defaultState.error }); }; }); } if (successOn) { (0, _internals.readAsArray)(successOn).forEach(function (opt) { handleAction[opt.type] = function (state) { return _objectSpread({}, state, { isPending: false, error: defaultState.error }); }; }); } if (errorOn) { (0, _internals.readAsArray)(errorOn).forEach(function (opt) { var readActionPayload = (0, _internals.createPathReader)(opt.payloadPath); handleAction[opt.type] = function (state, action) { var error = readActionPayload(action); if (!error) { (0, _internals.warn)("task-simple: errorOn: action ".concat(opt.type, " should have ").concat(opt.payloadPath, ":string property")); } return _objectSpread({}, state, { isPending: false, error: error }); }; }); } return function () { var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; var action = arguments.length > 1 ? arguments[1] : undefined; return handleAction[action.type] ? handleAction[action.type](state, action) : state; }; }; exports.createReducer = createReducer; var createSelector = function createSelector(_ref2) { var selector = _ref2.selector, fields = _ref2.fields; // TODO - performance return function (state) { var selectedTask = selector(state); if (!selectedTask) { throw new Error('Could not find state for TaskSimple.selector'); } return (0, _internals.pick)(selectedTask, fields); }; }; exports.createSelector = createSelector;