tee-mo-core
Version:
227 lines (188 loc) • 17 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getSagas = undefined;
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 _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
var _effects = require('redux-saga/effects');
var _reduxActions = require('redux-actions');
var _util = require('./util');
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function mergerEffects(modelList) {
return modelList.map(function (_ref) {
var namespace = _ref.namespace,
effects = _ref.effects;
return _defineProperty({}, namespace, (0, _util.renamePlainObjectKey)(namespace, effects));
}).reduce(_util.mergePlainObject, {});
}
function getSagas(modelList) {
var effectsModuleMap = mergerEffects(modelList);
return (/*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
var globalTask, cancelAllFork;
return regeneratorRuntime.wrap(function _callee2$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
_context6.next = 2;
return (0, _effects.fork)( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
var _this = this;
var effectModuleKeyList, i, effectModuleKey, effectSagaMap, effectKeyList, _loop, j;
return regeneratorRuntime.wrap(function _callee$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
effectModuleKeyList = (0, _util.mapKeys)(effectsModuleMap);
i = 0;
case 2:
if (!(i < effectModuleKeyList.length)) {
_context4.next = 16;
break;
}
effectModuleKey = effectModuleKeyList[i];
effectSagaMap = effectsModuleMap[effectModuleKey];
effectKeyList = (0, _util.mapKeys)(effectSagaMap);
_loop = /*#__PURE__*/regeneratorRuntime.mark(function _loop(j) {
var effectSagaKey, effectSaga, defaultArgs, watcher;
return regeneratorRuntime.wrap(function _loop$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
effectSagaKey = effectKeyList[j];
effectSaga = effectSagaMap[effectSagaKey];
defaultArgs = {
call: _effects.call, put: _effects.put, select: _effects.select, race: _effects.race, all: _effects.all
};
watcher = /*#__PURE__*/regeneratorRuntime.mark(function watcher() {
var _marked, f;
return regeneratorRuntime.wrap(function watcher$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
f = function f() {
var action,
_effectSagaKey$split,
_effectSagaKey$split2,
namespace,
effectName,
Status,
currStatus,
startStatus,
endStatus,
onChangeStatus,
_args = arguments;
return regeneratorRuntime.wrap(function f$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
action = _args.length <= 1 ? undefined : _args[1];
if (action.autoStatus) {
_context.next = 6;
break;
}
_context.next = 4;
return effectSaga.apply(undefined, _args);
case 4:
_context.next = 20;
break;
case 6:
_effectSagaKey$split = effectSagaKey.split('/'), _effectSagaKey$split2 = _slicedToArray(_effectSagaKey$split, 2), namespace = _effectSagaKey$split2[0], effectName = _effectSagaKey$split2[1];
Status = 'Status';
_context.next = 10;
return (0, _effects.select)(function (state) {
return state[namespace]["@@status"];
});
case 10:
currStatus = _context.sent;
startStatus = _extends({}, currStatus, _defineProperty({}, '' + effectName + Status, true));
endStatus = _extends({}, currStatus, _defineProperty({}, '' + effectName + Status, false));
onChangeStatus = (0, _reduxActions.createAction)(namespace + '/@@mergeState', function (payload) {
return payload;
});
_context.next = 16;
return (0, _effects.put)(onChangeStatus(_defineProperty({}, "@@status", startStatus)));
case 16:
_context.next = 18;
return effectSaga.apply(undefined, _args);
case 18:
_context.next = 20;
return (0, _effects.put)(onChangeStatus(_defineProperty({}, "@@status", endStatus)));
case 20:
case 'end':
return _context.stop();
}
}
}, _marked, this);
};
_marked = /*#__PURE__*/regeneratorRuntime.mark(f);
_context2.next = 4;
return (0, _effects.takeEvery)(effectSagaKey, f, defaultArgs);
case 4:
case 'end':
return _context2.stop();
}
}
}, watcher, this);
});
_context3.next = 6;
return (0, _effects.fork)(watcher);
case 6:
case 'end':
return _context3.stop();
}
}
}, _loop, _this);
});
j = 0;
case 8:
if (!(j < effectKeyList.length)) {
_context4.next = 13;
break;
}
return _context4.delegateYield(_loop(j), 't0', 10);
case 10:
j++;
_context4.next = 8;
break;
case 13:
i++;
_context4.next = 2;
break;
case 16:
case 'end':
return _context4.stop();
}
}
}, _callee, this);
}));
case 2:
globalTask = _context6.sent;
cancelAllFork = /*#__PURE__*/regeneratorRuntime.mark(function cancelAllFork() {
return regeneratorRuntime.wrap(function cancelAllFork$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
_context5.next = 2;
return (0, _effects.take)('@@teeMoCore/cancel');
case 2:
_context5.next = 4;
return (0, _effects.cancel)(globalTask);
case 4:
case 'end':
return _context5.stop();
}
}
}, cancelAllFork, this);
});
_context6.next = 6;
return (0, _effects.fork)(cancelAllFork);
case 6:
case 'end':
return _context6.stop();
}
}
}, _callee2, this);
})
);
}
exports.getSagas = getSagas;
;