fluorine-lib
Version:
Reactive state and side effect management for React using a single stream of actions
46 lines (32 loc) • 1.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createThunkMiddleware = createThunkMiddleware;
var _map = require('rxjs/operator/map');
var map = _map.map;
var _isObservable = require('../util/isObservable');
var isObservable = _interopRequireDefault(_isObservable).default;
var _isPromise = require('../util/isPromise');
var isPromise = _interopRequireDefault(_isPromise).default;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function createThunkMiddleware() {
for (var _len = arguments.length, extraArgs = Array(_len), _key = 0; _key < _len; _key++) {
extraArgs[_key] = arguments[_key];
}
return function (dispatcher) {
return function (agenda) {
return map.call(agenda, function (thunkish) {
if (typeof thunkish === 'function') {
var res = thunkish.apply(undefined, [dispatcher.next.bind(dispatcher), dispatcher.reduce.bind(dispatcher)].concat(extraArgs));
if (isObservable(res) || isPromise(res)) {
dispatcher.next(res);
}
return null;
}
return thunkish;
});
};
};
}
exports.default = createThunkMiddleware();