redux-and-the-rest
Version:
Declarative, flexible Redux integration with your RESTful API
184 lines (138 loc) • 8.77 kB
JavaScript
;
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;