UNPKG

redux-and-the-rest

Version:

Declarative, flexible Redux integration with your RESTful API

107 lines (90 loc) 3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _toSingular = _interopRequireDefault(require("../../utils/string/toSingular")); var _createItem = _interopRequireDefault(require("../../actions/RESTful/createItem")); var _updateItem = _interopRequireDefault(require("../../actions/RESTful/updateItem")); var _destroyItem = _interopRequireDefault(require("../../actions/RESTful/destroyItem")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function getForeignKeyName(_ref) { var foreignKey = _ref.foreignKey, as = _ref.as, name = _ref.name; if (foreignKey) { return foreignKey; } else { if (as) { return "".concat((0, _toSingular["default"])(as), "Id"); } else { return "".concat((0, _toSingular["default"])(name), "Id"); } } } function getKeyName(_ref2) { var key = _ref2.key, relationType = _ref2.relationType, associationName = _ref2.associationName; if (key) { return key; } else { if (relationType === 'belongsTo') { return "".concat((0, _toSingular["default"])(associationName), "Id"); } else { return "".concat((0, _toSingular["default"])(associationName), "Ids"); } } } function addAssociationReducer(reducersDict, name, relationType, associationName) { var actions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; var _ref3 = arguments.length > 5 ? arguments[5] : undefined, foreignKey = _ref3.foreignKey, as = _ref3.as, dependent = _ref3.dependent, key = _ref3.key, listParameter = _ref3.listParameter; var foreignKeyName = getForeignKeyName({ foreignKey: foreignKey, as: as, name: name }); var keyName = getKeyName({ key: key, relationType: relationType, associationName: associationName }); var reducerOptions = { name: name, relationType: relationType, foreignKeyName: foreignKeyName, keyName: keyName, dependent: dependent, listParameter: listParameter }; addAssociationReducersTo(reducersDict, { actions: actions, reducerOptions: reducerOptions }); } var associationReducersDict = { createItem: _createItem["default"].hasManyAssociationsReducer, updateItem: _updateItem["default"].hasManyAssociationsReducer, destroyItem: _destroyItem["default"].hasManyAssociationsReducer }; function addAssociationReducersTo(reducersDict, _ref4) { var actions = _ref4.actions, reducerOptions = _ref4.reducerOptions; Object.keys(associationReducersDict).forEach(function (actionKey) { var actionName = actions[actionKey]; if (actionName) { reducersDict[actionName] = { reducer: function reducer(resources, action) { return associationReducersDict[actionKey](resources, action, reducerOptions); } }; } }); } var _default = addAssociationReducer; exports["default"] = _default;