redux-resource-action-creators
Version:
Action creators for creating Redux Resource actions.
51 lines (38 loc) • 3 kB
JavaScript
;
exports.__esModule = true;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _reduxResource = require('redux-resource');
var _warning = require('./utils/warning');
var _warning2 = _interopRequireDefault(_warning);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const _createAction = function (actionProperties = {}, actionDefaults = {}, type) {
if (process.env.NODE_ENV !== 'production') {
if (actionProperties.type || actionDefaults.type) {
(0, _warning2.default)('It looks like you provided a `type` property for an action created using redux-resource-' + 'action-creators. This library sets the `type` for you; your value has been ignored. ' + 'For more, refer to the documentation: ' + 'https://redux-resource.js.org/docs/extras/redux-resource-action-creators.html');
}
}
return _extends({}, actionDefaults, actionProperties, {
type
});
};
const createActionCreators = (crudType, actionDefaults = {}) => {
const { resourceName, resourceType } = actionDefaults;
const typeToUse = resourceType || resourceName;
const uppercaseCrud = typeof crudType === 'string' ? crudType.toUpperCase() : '';
const isValidCrudType = uppercaseCrud === 'UPDATE' || uppercaseCrud === 'DELETE' || uppercaseCrud === 'READ' || uppercaseCrud === 'CREATE';
if (process.env.NODE_ENV !== 'production') {
if (!isValidCrudType) {
(0, _warning2.default)(`You supplied an invalid crudType of ${crudType} to createActionCreators.` + `Please verify you've supplied one of: ['read', 'update', 'delete', 'create'].` + 'For more, refer to the documentation: ' + 'https://redux-resource.js.org/docs/extras/redux-resource-action-creators.html');
}
if (typeof typeToUse !== 'string') {
(0, _warning2.default)(`The value of "resourceType" that you passed to createActionCreators was ` + `not a string. The resourceType must be a string. You should check ` + `your redux-resource-action-creators configuration.` + 'For more, refer to the documentation: ' + 'https://redux-resource.js.org/docs/extras/redux-resource-action-creators.html');
}
}
return {
pending: actionProperties => _createAction(actionProperties, actionDefaults, _reduxResource.actionTypes[`${uppercaseCrud}_RESOURCES_PENDING`]),
idle: actionProperties => _createAction(actionProperties, actionDefaults, _reduxResource.actionTypes[`${uppercaseCrud}_RESOURCES_IDLE`]),
succeeded: actionProperties => _createAction(actionProperties, actionDefaults, _reduxResource.actionTypes[`${uppercaseCrud}_RESOURCES_SUCCEEDED`]),
failed: actionProperties => _createAction(actionProperties, actionDefaults, _reduxResource.actionTypes[`${uppercaseCrud}_RESOURCES_FAILED`])
};
};
exports.default = createActionCreators;