genji-core
Version:
The core lightweight library for genji, based on redux and redux-saga.
50 lines (38 loc) • 1.21 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = createAsyncMiddleware;
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _invariant = _interopRequireDefault(require("invariant"));
var _utils = require("./utils");
function createAsyncMiddleware() {
var actions;
function run(models) {
actions = {};
for (var key in models) {
var model = models[key];
for (var name in model) {
var action = model[name];
(0, _invariant.default)((0, _utils.isFunction)(action), "[model.actions] action should be function, but got ".concat((0, _typeof2.default)(action)));
actions[name] = action;
}
}
}
var asyncMiddleware = function asyncMiddleware(argv) {
return function (next) {
return function (action) {
var type = action.type;
var handler = actions[type];
if (handler) {
return handler(action, argv);
} else {
return next(action);
}
};
};
};
asyncMiddleware.run = run;
return asyncMiddleware;
}