redux-modules-middleware
Version:
A collection of common redux-module action middleware.
84 lines (66 loc) • 2.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: 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 _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
var defaultFormatter = function defaultFormatter(type, err) {
return 'Warning: \'' + type + '\' failed payload typecheck: ' + err;
};
function propCheck(payloadTypes) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return function (_ref) {
var payload = _ref.payload,
type = _ref.type,
action = _objectWithoutProperties(_ref, ['payload', 'type']);
var _params$logFunction = params.logFunction,
logFunction = _params$logFunction === undefined ? console.warn : _params$logFunction,
_params$formatter = params.formatter,
formatter = _params$formatter === undefined ? defaultFormatter : _params$formatter;
if (process.env.NODE_ENV === 'production') {
return _extends({
payload: payload,
type: type
}, action);
}
if (!payloadTypes) {
return _extends({
payload: payload,
type: type
}, action);
}
if (typeof _propTypes2.default.checkPropTypes === 'function') {
// new api
_propTypes2.default.checkPropTypes(payloadTypes, payload, 'prop', type);
} else if (typeof payloadTypes === 'function') {
// If payloadTypes is a propcheck function
var result = payloadTypes({ payload: payload }, 'payload', type, 'prop') || {};
var message = result.message;
if (message) {
logFunction(formatter(type, message));
}
} else {
// If payloadTypes is an object (old API)
var keys = Object.keys(payloadTypes);
for (var i = 0; i < keys.length; i += 1) {
var key = keys[i];
var propChecker = payloadTypes[key];
if (typeof propChecker !== 'undefined') {
var _ref2 = propChecker(payload, key, type, 'prop') || {},
_message = _ref2.message;
if (_message) {
logFunction(formatter(type, _message));
}
}
}
}
return _extends({
payload: payload,
type: type
}, action);
};
}
exports.default = propCheck;