UNPKG

redux-and-the-rest

Version:

Declarative, flexible Redux integration with your RESTful API

184 lines (138 loc) 8.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _buildActions = _interopRequireDefault(require("./action-objects/buildActions")); var _buildReducersDictionary = _interopRequireDefault(require("./reducers/buildReducersDictionary")); var _buildActionCreators = _interopRequireDefault(require("./action-creators/buildActionCreators")); var _objectFrom = _interopRequireDefault(require("./utils/object/objectFrom")); var _getNewItem = _interopRequireDefault(require("./public-helpers/getNewItem")); var _getList2 = _interopRequireDefault(require("./utils/getList")); var _configuration = require("./configuration"); var _InitialResourceStateBuilder = _interopRequireDefault(require("./initialisation/InitialResourceStateBuilder")); var _resolveOptions = _interopRequireDefault(require("./action-creators/helpers/resolveOptions")); var _getItem = _interopRequireDefault(require("./utils/getItem")); var _getNewOrExistingItem = _interopRequireDefault(require("./utils/getNewOrExistingItem")); var _getItemKey = _interopRequireDefault(require("./action-creators/helpers/getItemKey")); var _getOrFetch = _interopRequireDefault(require("./utils/getOrFetch")); var _getListKey = _interopRequireDefault(require("./action-creators/helpers/getListKey")); var _warn = _interopRequireDefault(require("./utils/dev/warn")); var _without = _interopRequireDefault(require("./utils/list/without")); var _EmptyKey = _interopRequireDefault(require("./constants/EmptyKey")); var _hasKey = _interopRequireDefault(require("./utils/object/hasKey")); var _applyReducers = _interopRequireDefault(require("./reducers/helpers/applyReducers")); var _ResourceRegistry = _interopRequireDefault(require("./utils/ResourceRegistry")); var _DataStructures = require("./constants/DataStructures"); var _getOrInitializeNewItem = _interopRequireDefault(require("./utils/getOrInitializeNewItem")); var _saveItem = _interopRequireDefault(require("./utils/saveItem")); var _arrayFrom = _interopRequireDefault(require("./utils/array/arrayFrom")); var _mergeWithLatestGlobalConfig = _interopRequireDefault(require("./mergeWithLatestGlobalConfig")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(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 resources(resourceOptions) { var actionOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var name = resourceOptions.name, singular = resourceOptions.singular, keyBy = resourceOptions.keyBy, localOnly = resourceOptions.localOnly; var _actionOptions = (0, _objectFrom["default"])(actionOptions, {}); if (singular && _actionOptions.fetchList) { (0, _warn["default"])('resource does not support the fetchList action. Ignoring.'); _actionOptions = (0, _without["default"])(actionOptions, 'fetchList'); } var actions = (0, _buildActions["default"])(name, resourceOptions, _actionOptions); var reducersDictionary = (0, _buildReducersDictionary["default"])(resourceOptions, actions, _actionOptions); var actionCreators = (0, _buildActionCreators["default"])(resourceOptions, actions, _actionOptions); function getItem(resourcesState) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _EmptyKey["default"]; return (0, _getItem["default"])(resourcesState, (0, _getItemKey["default"])(params, resourceOptions)); } function getNewOrExistingItem(resourcesState) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _EmptyKey["default"]; return (0, _getNewOrExistingItem["default"])(resourcesState, (0, _getItemKey["default"])(params, resourceOptions)); } var resourceDefinition = { actions: actions, actionCreators: actionCreators, reducers: function reducers(currentState, action) { return (0, _applyReducers["default"])(reducersDictionary, currentState || _DataStructures.RESOURCES, action); }, getNewItem: singular ? getItem : _getNewItem["default"], getItem: getItem, getNewOrExistingItem: getNewOrExistingItem, getList: function getList(currentState, params) { return (0, _getList2["default"])(currentState, (0, _getListKey["default"])(params, (0, _mergeWithLatestGlobalConfig["default"])(resourceOptions))); }, buildInitialState: function buildInitialState() { var itemOrItems = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var options = (0, _resolveOptions["default"])((0, _configuration.getConfiguration)(), resourceOptions, ['keyBy']); return new _InitialResourceStateBuilder["default"](options, (0, _arrayFrom["default"])(itemOrItems)); }, __isResourcesDefinition: true }; Object.keys(actionCreators).forEach(function (key) { var actionCreator = actionCreators[key]; resourceDefinition[key] = function (arg1, arg2, arg3) { var _getConfiguration = (0, _configuration.getConfiguration)(), store = _getConfiguration.store; return store.dispatch(actionCreator(arg1, arg2, arg3)); }; }); if ((0, _hasKey["default"])(actions, 'fetchItem')) { resourceDefinition.getOrFetchItem = function (resourcesState, params, actionCreatorOptions) { return (0, _getOrFetch["default"])({ typeKey: 'items', fallbackActionName: 'fetchItem', getFunction: getItem, fetchFunction: resourceDefinition.fetchItem, action: actions.fetchItem, localOnly: localOnly, keyFunction: function keyFunction(_params) { return (0, _getItemKey["default"])(_params, { keyBy: resourceOptions.keyBy, singular: singular }); } }, resourcesState, params, actionCreatorOptions); }; } if ((0, _hasKey["default"])(actions, 'newItem')) { resourceDefinition.getOrInitializeNewItem = function (resourcesState, paramsOrValues, valuesOrActionCreatorOptions, optionalActionCreatorOptions) { return (0, _getOrInitializeNewItem["default"])({ action: actions.newItem, newItem: resourceDefinition.newItem }, resourcesState, paramsOrValues, valuesOrActionCreatorOptions, optionalActionCreatorOptions); }; } if ((0, _hasKey["default"])(actions, 'createItem') && (0, _hasKey["default"])(actions, 'updateItem')) { resourceDefinition.saveItem = function (resourcesState, paramsOrValues, valuesOrActionCreatorOptions, optionalActionCreatorOptions) { return (0, _saveItem["default"])({ createItem: resourceDefinition.createItem, updateItem: resourceDefinition.updateItem, keyBy: keyBy, singular: singular }, resourcesState, paramsOrValues, valuesOrActionCreatorOptions, optionalActionCreatorOptions); }; } if ((0, _hasKey["default"])(actions, 'fetchList')) { resourceDefinition.getOrFetchList = function (resourcesState, params, actionCreatorOptions) { return (0, _getOrFetch["default"])({ typeKey: 'lists', getFunction: _getList2["default"], fetchFunction: resourceDefinition.fetchList, action: actions.fetchList, localOnly: localOnly, keyFunction: function keyFunction(_params) { return (0, _getListKey["default"])(_params, (0, _mergeWithLatestGlobalConfig["default"])(_objectSpread(_objectSpread({}, resourceOptions), actionCreatorOptions))); } }, resourcesState, params, actionCreatorOptions); }; } _ResourceRegistry["default"].getRegistry().addResource(resourceOptions, resourceDefinition, reducersDictionary); return resourceDefinition; } var _default = resources; exports["default"] = _default;