redux-saga
Version:
Saga middleware for Redux to handle Side Effects
56 lines (45 loc) • 1.28 kB
JavaScript
exports.__esModule = true;
exports.qEnd = undefined;
exports.safeName = safeName;
exports.default = fsmIterator;
var _utils = /*#__PURE__*/require('../utils');
var done = { done: true, value: undefined };
var qEnd = exports.qEnd = {};
function safeName(patternOrChannel) {
if (_utils.is.channel(patternOrChannel)) {
return 'channel';
} else if (Array.isArray(patternOrChannel)) {
return String(patternOrChannel.map(function (entry) {
return String(entry);
}));
} else {
return String(patternOrChannel);
}
}
function fsmIterator(fsm, q0) {
var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'iterator';
var updateState = void 0,
qNext = q0;
function next(arg, error) {
if (qNext === qEnd) {
return done;
}
if (error) {
qNext = qEnd;
throw error;
} else {
updateState && updateState(arg);
var _fsm$qNext = fsm[qNext](),
q = _fsm$qNext[0],
output = _fsm$qNext[1],
_updateState = _fsm$qNext[2];
qNext = q;
updateState = _updateState;
return qNext === qEnd ? done : output;
}
}
return (0, _utils.makeIterator)(next, function (error) {
return next(null, error);
}, name, true);
}
;