UNPKG

tee-mo-core

Version:

227 lines (188 loc) 17 kB
'use strict'; 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;