redux-saga
Version:
Saga middleware for Redux to handle Side Effects
66 lines (49 loc) • 2.48 kB
JavaScript
exports.__esModule = true;
exports.runSaga = runSaga;
var _utils = /*#__PURE__*/require('./utils');
var _proc = /*#__PURE__*/require('./proc');
var _proc2 = /*#__PURE__*/_interopRequireDefault(_proc);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var RUN_SAGA_SIGNATURE = 'runSaga(storeInterface, saga, ...args)';
var NON_GENERATOR_ERR = RUN_SAGA_SIGNATURE + ': saga argument must be a Generator function!';
function runSaga(storeInterface, saga) {
for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
args[_key - 2] = arguments[_key];
}
var iterator = void 0;
if (_utils.is.iterator(storeInterface)) {
if (process.env.NODE_ENV === 'development') {
(0, _utils.log)('warn', 'runSaga(iterator, storeInterface) has been deprecated in favor of ' + RUN_SAGA_SIGNATURE);
}
iterator = storeInterface;
storeInterface = saga;
} else {
(0, _utils.check)(saga, _utils.is.func, NON_GENERATOR_ERR);
iterator = saga.apply(undefined, args);
(0, _utils.check)(iterator, _utils.is.iterator, NON_GENERATOR_ERR);
}
var _storeInterface = storeInterface,
subscribe = _storeInterface.subscribe,
dispatch = _storeInterface.dispatch,
getState = _storeInterface.getState,
context = _storeInterface.context,
sagaMonitor = _storeInterface.sagaMonitor,
logger = _storeInterface.logger,
onError = _storeInterface.onError;
var effectId = (0, _utils.uid)();
if (sagaMonitor) {
// monitors are expected to have a certain interface, let's fill-in any missing ones
sagaMonitor.effectTriggered = sagaMonitor.effectTriggered || _utils.noop;
sagaMonitor.effectResolved = sagaMonitor.effectResolved || _utils.noop;
sagaMonitor.effectRejected = sagaMonitor.effectRejected || _utils.noop;
sagaMonitor.effectCancelled = sagaMonitor.effectCancelled || _utils.noop;
sagaMonitor.actionDispatched = sagaMonitor.actionDispatched || _utils.noop;
sagaMonitor.effectTriggered({ effectId: effectId, root: true, parentEffectId: 0, effect: { root: true, saga: saga, args: args } });
}
var task = (0, _proc2.default)(iterator, subscribe, (0, _utils.wrapSagaDispatch)(dispatch), getState, context, { sagaMonitor: sagaMonitor, logger: logger, onError: onError }, effectId, saga.name);
if (sagaMonitor) {
sagaMonitor.effectResolved(effectId, task);
}
return task;
}
;