redux-codi
Version:
Redux middleware with dependency injection and async control flow
43 lines (34 loc) • 1.4 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 _co = require('co');
var _co2 = _interopRequireDefault(_co);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var mergeResults = function mergeResults() {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return function (result, fn) {
return _extends({}, result, fn.apply(undefined, args));
};
};
exports.default = function () {
for (var _len2 = arguments.length, injectors = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
injectors[_key2] = arguments[_key2];
}
return function (_ref) {
var dispatch = _ref.dispatch;
var getState = _ref.getState;
return function (next) {
return function (action) {
if (typeof action === 'function') {
var defaultProps = { dispatch: dispatch, getState: getState };
return (0, _co2.default)(action, injectors.reduce(mergeResults(defaultProps), defaultProps));
}
return next(action);
};
};
};
};