redux-resource-action-creators
Version:
Action creators for creating Redux Resource actions.
90 lines (74 loc) • 3.86 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('redux-resource')) :
typeof define === 'function' && define.amd ? define(['redux-resource'], factory) :
(global.ReduxResourceActionCreators = factory(global.ReduxResource));
}(this, (function (reduxResource) { 'use strict';
function warning(message) {
if (typeof console !== 'undefined' && typeof console.error === 'function') {
console.error(message);
}
try {
// This error was thrown as a convenience so that if you enable
// "break on all exceptions" in your console,
// it would pause the execution at this line.
throw new Error(message);
} catch (e) {
// Intentionally blank
}
}
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 _createAction = function _createAction() {
var actionProperties = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var actionDefaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var type = arguments[2];
{
if (actionProperties.type || actionDefaults.type) {
warning('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: type
});
};
var createActionCreators = function createActionCreators(crudType) {
var actionDefaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var resourceName = actionDefaults.resourceName,
resourceType = actionDefaults.resourceType;
var typeToUse = resourceType || resourceName;
var uppercaseCrud = typeof crudType === 'string' ? crudType.toUpperCase() : '';
var isValidCrudType = uppercaseCrud === 'UPDATE' || uppercaseCrud === 'DELETE' || uppercaseCrud === 'READ' || uppercaseCrud === 'CREATE';
{
if (!isValidCrudType) {
warning('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') {
warning('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: function pending(actionProperties) {
return _createAction(actionProperties, actionDefaults, reduxResource.actionTypes[uppercaseCrud + '_RESOURCES_PENDING']);
},
idle: function idle(actionProperties) {
return _createAction(actionProperties, actionDefaults, reduxResource.actionTypes[uppercaseCrud + '_RESOURCES_IDLE']);
},
succeeded: function succeeded(actionProperties) {
return _createAction(actionProperties, actionDefaults, reduxResource.actionTypes[uppercaseCrud + '_RESOURCES_SUCCEEDED']);
},
failed: function failed(actionProperties) {
return _createAction(actionProperties, actionDefaults, reduxResource.actionTypes[uppercaseCrud + '_RESOURCES_FAILED']);
}
};
};
return createActionCreators;
})));