UNPKG

@kineticdata/react

Version:
128 lines (126 loc) 5.26 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports.sagaMiddleware = exports.runSaga = exports.regSaga = exports.commitSagas = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray")); var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/regeneratorRuntime")); var _reduxSaga = _interopRequireDefault(require("redux-saga")); var effects = _interopRequireWildcard(require("redux-saga/effects")); var _symbols = require("@redux-saga/symbols"); // The list of saga effects that we support using as a single argument to the // regSaga function. var supportedEffects = [effects.takeEvery('NOOP', /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee() { return (0, _regeneratorRuntime2["default"])().wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: case "end": return _context.stop(); } }, _callee); })).payload.fn, effects.takeLatest('NOOP', /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee2() { return (0, _regeneratorRuntime2["default"])().wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: case "end": return _context2.stop(); } }, _callee2); })).payload.fn, effects.takeLeading('NOOP', /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee3() { return (0, _regeneratorRuntime2["default"])().wrap(function _callee3$(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: case "end": return _context3.stop(); } }, _callee3); })).payload.fn, effects.throttle(0, 'NOOP', /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee4() { return (0, _regeneratorRuntime2["default"])().wrap(function _callee4$(_context4) { while (1) switch (_context4.prev = _context4.next) { case 0: case "end": return _context4.stop(); } }, _callee4); })).payload.fn, effects.debounce(0, 'NOOP', /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee5() { return (0, _regeneratorRuntime2["default"])().wrap(function _callee5$(_context5) { while (1) switch (_context5.prev = _context5.next) { case 0: case "end": return _context5.stop(); } }, _callee5); })).payload.fn]; var parseSagaEffect = function parseSagaEffect(sagaEffect) { if (sagaEffect[_symbols.IO]) { if (supportedEffects.includes(sagaEffect.payload.fn)) { var args = sagaEffect.payload.args; var name = typeof args[0] === 'number' ? args[1] : args[0]; var genFn = typeof args[0] === 'number' ? args[2] : args[1]; if (typeof name === 'string') { return { name: name, genFn: genFn }; } else { throw new Error('regSaga called with saga effect that had non-string pattern'); } } else { throw new Error('regSaga called with an unsupported saga effect, must be one of takeEvery, takeLatest, takeLeading, throttle, debounce'); } } else { throw new Error('regSaga called with single value that is not not a saga effect'); } }; var sagaMiddleware = exports.sagaMiddleware = (0, _reduxSaga["default"])(); var generatorFns = {}; var runningTasks = {}; var pendingTasks = {}; /** * Takes either a single argument which should be a saga effect that we can * extract from which we can extract the name automatically. Or a pair of * arguments, the name and the saga generator function. */ var regSaga = exports.regSaga = function regSaga(arg0, arg1) { if (arg1) { pendingTasks[arg0] = arg1; generatorFns[arg0] = arg1; } else { var _parseSagaEffect = parseSagaEffect(arg0), name = _parseSagaEffect.name, genFn = _parseSagaEffect.genFn; pendingTasks[name] = /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee6() { return (0, _regeneratorRuntime2["default"])().wrap(function _callee6$(_context6) { while (1) switch (_context6.prev = _context6.next) { case 0: _context6.next = 2; return arg0; case 2: case "end": return _context6.stop(); } }, _callee6); }); generatorFns[name] = genFn; } }; var commitSagas = exports.commitSagas = function commitSagas() { Object.entries(pendingTasks).forEach(function (_ref) { var _ref2 = (0, _slicedToArray2["default"])(_ref, 2), name = _ref2[0], saga = _ref2[1]; if (runningTasks[name] && runningTasks[name].isRunning()) { runningTasks[name].cancel(); } runningTasks[name] = sagaMiddleware.run(saga); delete pendingTasks[name]; }); }; var runSaga = exports.runSaga = function runSaga(name) { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } return generatorFns[name].apply(generatorFns, args); };