Socket
Socket
Sign inDemoInstall

redux-saga

Package Overview
Dependencies
Maintainers
1
Versions
74
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

redux-saga - npm Package Compare versions

Comparing version 0.11.1 to 0.12.0

2

dist/redux-saga.min.js

@@ -1,1 +0,1 @@

!function(n,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ReduxSaga=e():n.ReduxSaga=e()}(this,function(){return function(n){function e(r){if(t[r])return t[r].exports;var u=t[r]={exports:{},id:r,loaded:!1};return n[r].call(u.exports,u,u.exports,e),u.loaded=!0,u.exports}var t={};return e.m=n,e.c=t,e.p="",e(0)}([function(n,e,t){"use strict";function r(n){if(n&&n.__esModule)return n;var e={};if(null!=n)for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e.default=n,e}function u(n){return n&&n.__esModule?n:{"default":n}}Object.defineProperty(e,"__esModule",{value:!0}),e.utils=e.effects=e.CANCEL=e.delay=e.takeLatest=e.takeEvery=e.buffers=e.channel=e.eventChannel=e.END=e.runSaga=void 0;var o=t(9);Object.defineProperty(e,"runSaga",{enumerable:!0,get:function(){return o.runSaga}});var a=t(2);Object.defineProperty(e,"END",{enumerable:!0,get:function(){return a.END}}),Object.defineProperty(e,"eventChannel",{enumerable:!0,get:function(){return a.eventChannel}}),Object.defineProperty(e,"channel",{enumerable:!0,get:function(){return a.channel}});var i=t(4);Object.defineProperty(e,"buffers",{enumerable:!0,get:function(){return i.buffers}});var c=t(10);Object.defineProperty(e,"takeEvery",{enumerable:!0,get:function(){return c.takeEvery}}),Object.defineProperty(e,"takeLatest",{enumerable:!0,get:function(){return c.takeLatest}});var f=t(1);Object.defineProperty(e,"delay",{enumerable:!0,get:function(){return f.delay}}),Object.defineProperty(e,"CANCEL",{enumerable:!0,get:function(){return f.CANCEL}});var l=t(8),s=u(l),d=t(6),v=r(d),p=t(11),g=r(p);e.default=s.default,e.effects=v,e.utils=g},function(n,e){"use strict";function t(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function r(n,e,t){if(!e(n))throw s("error","uncaught at check",t),new Error(t)}function u(n,e){var t=n.indexOf(e);t>=0&&n.splice(t,1)}function o(){var n=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=d({},n),t=new Promise(function(n,t){e.resolve=n,e.reject=t});return e.promise=t,e}function a(n){for(var e=[],t=0;n>t;t++)e.push(o());return e}function i(n){var e=arguments.length<=1||void 0===arguments[1]?!0:arguments[1],t=void 0,r=new Promise(function(r){t=setTimeout(function(){return r(e)},n)});return r[h]=function(){return clearTimeout(t)},r}function c(){var n,e=!0,r=void 0,u=void 0;return n={},t(n,g,!0),t(n,"isRunning",function(){return e}),t(n,"result",function(){return r}),t(n,"error",function(){return u}),t(n,"setRunning",function(n){return e=n}),t(n,"setResult",function(n){return r=n}),t(n,"setError",function(n){return u=n}),n}function f(){var n=arguments.length<=0||void 0===arguments[0]?0:arguments[0];return function(){return++n}}function l(n){var e=arguments.length<=1||void 0===arguments[1]?m:arguments[1],t=arguments.length<=2||void 0===arguments[2]?"":arguments[2],r={name:t,next:n,"throw":e,"return":k};return"undefined"!=typeof Symbol&&(r[Symbol.iterator]=function(){return r}),r}function s(n,e,t){"undefined"==typeof window?console.log("redux-saga "+n+": "+e+"\n"+(t&&t.stack||t)):console[n].call(console,e,t)}Object.defineProperty(e,"__esModule",{value:!0});var d=Object.assign||function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r])}return n},v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol?"symbol":typeof n};e.check=r,e.remove=u,e.deferred=o,e.arrayOfDeffered=a,e.delay=i,e.createMockTask=c,e.autoInc=f,e.makeIterator=l,e.log=s;var p=e.sym=function(n){return"@@redux-saga/"+n},g=e.TASK=p("TASK"),h=(e.MATCH=p("MATCH"),e.CANCEL=p("cancelPromise")),y=e.konst=function(n){return function(){return n}},b=(e.kTrue=y(!0),e.kFalse=y(!1),e.noop=function(){},e.ident=function(n){return n},e.is={undef:function(n){return null===n||void 0===n},notUndef:function(n){return null!==n&&void 0!==n},func:function(n){return"function"==typeof n},number:function(n){return"number"==typeof n},array:Array.isArray,promise:function(n){return n&&b.func(n.then)},iterator:function(n){return n&&b.func(n.next)&&b.func(n.throw)},task:function(n){return n&&n[g]},take:function(n){return n&&b.func(n.take)},put:function(n){return n&&b.func(n.put)},observable:function(n){return n&&b.func(n.subscribe)},buffer:function(n){return n&&b.func(n.isEmpty)&&b.func(n.take)&&b.func(n.put)},pattern:function(n){return n&&("string"==typeof n||"symbol"===("undefined"==typeof n?"undefined":v(n))||b.func(n)||b.array(n))}}),m=function(n){throw n},k=function(n){return{value:n,done:!0}};e.internalErr=function(n){return new Error("\n redux-saga: Error checking hooks detected an inconsisten state. This is likely a bug\n in redux-saga code and not yours. Thanks for reporting this in the project's github repo.\n Error: "+n+"\n")}},function(n,e,t){"use strict";function r(){function n(n){return t.push(n),function(){return(0,a.remove)(t,n)}}function e(n){for(var e=t.slice(),r=0,u=e.length;u>r;r++)e[r](n)}var t=[];return{subscribe:n,emit:e}}function u(n){function e(){if(o&&c.length)throw(0,a.internalErr)("Cannot have a closed channel with pending takers");if(c.length&&!n.isEmpty())throw(0,a.internalErr)("Cannot have pending takers with non empty buffer")}function t(t){if(e(),(0,a.check)(t,a.is.notUndef,d),!o)if(c.length)for(var r=0;r<c.length;r++){var u=c[r];if(!u[a.MATCH]||u[a.MATCH](t))return c.splice(r,1),u(t)}else n.put(t)}function r(t,r){e(),(0,a.check)(t,a.is.func,"channel.take's callback must be a function"),arguments.length>1&&((0,a.check)(r,a.is.func,"channel.take's matcher argument must be a function"),t[a.MATCH]=r),o&&n.isEmpty()?t(f):n.isEmpty()?(c.push(t),t.cancel=function(){return(0,a.remove)(c,t)}):t(n.take())}function u(){if(e(),!o&&(o=!0,c.length)){var n=c;c=[];for(var t=0,r=n.length;r>t;t++)n[t](f);c=[]}}var o=!1,c=[];return arguments.length>0?(0,a.check)(n,a.is.buffer,s):n=i.buffers.fixed(),{take:r,put:t,close:u,get __takers__(){return c},get __closed__(){return o}}}function o(n){var e=arguments.length<=1||void 0===arguments[1]?i.buffers.none():arguments[1],t=arguments[2];arguments.length>2&&(0,a.check)(t,a.is.func,"Invalid match function passed to eventChannel");var r=u(e),o=n(function(n){l(n)?r.close():t&&!t(n)||r.put(n)});if(!a.is.func(o))throw new Error("in eventChannel: subscribe should return a function to unsubscribe");return{take:r.take,close:function(){r.__closed__||(r.close(),o())}}}Object.defineProperty(e,"__esModule",{value:!0}),e.UNDEFINED_INPUT_ERROR=e.INVALID_BUFFER=e.isEnd=e.END=void 0,e.emitter=r,e.channel=u,e.eventChannel=o;var a=t(1),i=t(4),c="@@redux-saga/CHANNEL_END",f=e.END={type:c},l=e.isEnd=function(n){return n&&n.type===c},s=e.INVALID_BUFFER="invalid buffer passed to channel factory function",d=e.UNDEFINED_INPUT_ERROR="Saga was provided with an undefined action"},function(n,e,t){"use strict";function r(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function u(n,e){if(arguments.length>=2)(0,k.check)(n,k.is.notUndef,"take(channel, pattern): channel is undefined"),(0,k.check)(n,k.is.take,"take(channel, pattern): argument "+String(n)+" is not a valid channel (channel argument must have a take method)"),(0,k.check)(e,k.is.notUndef,"take(channel, pattern): pattern is undefined"),(0,k.check)(e,k.is.pattern,"take(channel, pattern): argument "+String(e)+" is not a valid pattern (pattern must be String | Function: a => boolean | Array<String>)");else if(1===arguments.length)if((0,k.check)(n,k.is.notUndef,"take(patternOrChannel): undefined argument"),k.is.take(n))e="*";else{if(!k.is.pattern(n))throw new Error("take(patternOrChannel): argument "+String(n)+" is not valid channel or a valid pattern");e=n,n=null}else e="*";return U(_,{channel:n,pattern:e})}function o(){var n=u.apply(void 0,arguments);return n[_].maybe=!0,n}function a(n,e){return arguments.length>1?((0,k.check)(n,k.is.notUndef,"put(channel, action): argument channel is undefined"),(0,k.check)(n,k.is.put,"put(channel, action): argument "+n+" is not a valid channel (channel argument must have a put method)"),(0,k.check)(e,k.is.notUndef,"put(channel, action): argument action is undefined")):((0,k.check)(n,k.is.notUndef,"put(action): argument action is undefined"),e=n,n=null),U(j,{channel:n,action:e})}function i(n){return U(O,n)}function c(n,e,t){(0,k.check)(e,k.is.notUndef,n+": argument fn is undefined");var r=null;if(k.is.array(e)){var u=e,o=m(u,2);r=o[0],e=o[1]}else if(e.fn){var a=e;r=a.context,e=a.fn}return(0,k.check)(e,k.is.func,n+": argument "+e+" is not a function"),{context:r,fn:e,args:t}}function f(n){for(var e=arguments.length,t=Array(e>1?e-1:0),r=1;e>r;r++)t[r-1]=arguments[r];return U(A,c("call",n,t))}function l(n,e){var t=arguments.length<=2||void 0===arguments[2]?[]:arguments[2];return U(A,c("apply",{context:n,fn:e},t))}function s(n){for(var e=arguments.length,t=Array(e>1?e-1:0),r=1;e>r;r++)t[r-1]=arguments[r];return U(C,c("cps",n,t))}function d(n){for(var e=arguments.length,t=Array(e>1?e-1:0),r=1;e>r;r++)t[r-1]=arguments[r];return U(w,c("fork",n,t))}function v(n){for(var e=arguments.length,t=Array(e>1?e-1:0),r=1;e>r;r++)t[r-1]=arguments[r];var u=d.apply(void 0,[n].concat(t));return u[w].detached=!0,u}function p(n){if((0,k.check)(n,k.is.notUndef,"join(task): argument task is undefined"),!x(n))throw new Error("join(task): argument "+n+" is not a valid Task object \n(HINT: if you are getting this errors in tests, consider using createMockTask from redux-saga/utils)");return U(P,n)}function g(n){if((0,k.check)(n,k.is.notUndef,"cancel(task): argument task is undefined"),!x(n))throw new Error("cancel(task): argument "+n+" is not a valid Task object \n(HINT: if you are getting this errors in tests, consider using createMockTask from redux-saga/utils)");return U(S,n)}function h(n){for(var e=arguments.length,t=Array(e>1?e-1:0),r=1;e>r;r++)t[r-1]=arguments[r];return 0===arguments.length?n=k.ident:((0,k.check)(h,k.is.notUndef,"select(selector,[...]): argument selector is undefined"),(0,k.check)(n,k.is.func,"select(selector,[...]): argument "+n+" is not a function")),U(T,{selector:n,args:t})}function y(n,e){return(0,k.check)(n,k.is.notUndef,"actionChannel(pattern,...): argument pattern is undefined"),arguments.length>1&&((0,k.check)(e,k.is.notUndef,"actionChannel(pattern, buffer): argument buffer is undefined"),(0,k.check)(e,k.is.notUndef,"actionChannel(pattern, buffer): argument "+e+" is not a valid buffer")),U(N,{pattern:n,buffer:e})}function b(){return U(R,{})}Object.defineProperty(e,"__esModule",{value:!0}),e.asEffect=void 0;var m=function(){function n(n,e){var t=[],r=!0,u=!1,o=void 0;try{for(var a,i=n[Symbol.iterator]();!(r=(a=i.next()).done)&&(t.push(a.value),!e||t.length!==e);r=!0);}catch(c){u=!0,o=c}finally{try{!r&&i.return&&i.return()}finally{if(u)throw o}}return t}return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return n(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();e.take=u,e.takem=o,e.put=a,e.race=i,e.call=f,e.apply=l,e.cps=s,e.fork=d,e.spawn=v,e.join=p,e.cancel=g,e.select=h,e.actionChannel=y,e.cancelled=b;var k=t(1),E=(0,k.sym)("IO"),_="TAKE",j="PUT",O="RACE",A="CALL",C="CPS",w="FORK",P="JOIN",S="CANCEL",T="SELECT",N="ACTION_CHANNEL",R="CANCELLED",U=function(n,e){var t;return t={},r(t,E,!0),r(t,n,e),t};a.sync=function(){var n=a.apply(void 0,arguments);return n[j].sync=!0,n};var x=function(n){return n[k.TASK]};e.asEffect={take:function(n){return n&&n[E]&&n[_]},put:function(n){return n&&n[E]&&n[j]},race:function(n){return n&&n[E]&&n[O]},call:function(n){return n&&n[E]&&n[A]},cps:function(n){return n&&n[E]&&n[C]},fork:function(n){return n&&n[E]&&n[w]},join:function(n){return n&&n[E]&&n[P]},cancel:function(n){return n&&n[E]&&n[S]},select:function(n){return n&&n[E]&&n[T]},actionChannel:function(n){return n&&n[E]&&n[N]},cancelled:function(n){return n&&n[E]&&n[R]}}},function(n,e,t){"use strict";function r(){var n=arguments.length<=0||void 0===arguments[0]?10:arguments[0],e=arguments[1],t=new Array(n),r=0,u=0,i=0;return{isEmpty:function(){return 0==r},put:function(f){if(n>r)t[u]=f,u=(u+1)%n,r++;else switch(e){case a:throw new Error(o);case c:t[u]=f,u=(u+1)%n,i=u}},take:function(){if(0!=r){var e=t[i];return t[i]=null,r--,i=(i+1)%n,e}}}}Object.defineProperty(e,"__esModule",{value:!0}),e.buffers=e.BUFFER_OVERFLOW=void 0;var u=t(1),o=e.BUFFER_OVERFLOW="Channel's Buffer overflow!",a=1,i=2,c=3,f={isEmpty:u.kTrue,put:u.noop,take:u.noop};e.buffers={none:function(){return f},fixed:function(n){return r(n,a)},dropping:function(n){return r(n,i)},sliding:function(n){return r(n,c)}}},function(n,e,t){"use strict";function r(n){return n&&n.__esModule?n:{"default":n}}function u(n,e){for(var t in e){var r=e[t];r.configurable=r.enumerable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,t,r)}return n}function o(n){if(Array.isArray(n)){for(var e=0,t=Array(n.length);e<n.length;e++)t[e]=n[e];return t}return Array.from(n)}function a(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function i(n){return("*"===n?E.wildcard:l.is.array(n)?E.array:l.is.func(n)?E.predicate:E.default)(n)}function c(n,e,t){function r(n){o(),t(n,!0)}function u(n){a.push(n),n.cont=function(u,o){c||((0,l.remove)(a,n),n.cont=l.noop,o?r(u):(n===e&&(i=u),a.length||(c=!0,t(i))))}}function o(){c||(c=!0,a.forEach(function(n){n.cont=l.noop,n.cancel()}),a=[])}var a=[],i=void 0,c=!1;return u(e),{addTask:u,cancelAll:o,abort:r,getTasks:function(){return a},taskNames:function(){return a.map(function(n){return n.name})}}}function f(n){function e(){Q.isRunning&&!Q.isCancelled&&(Q.isCancelled=!0,r(k))}function t(){n._isRunning&&!n._isCancelled&&(n._isCancelled=!0,X.cancelAll(),s(k))}function r(e,t){if(!Q.isRunning)throw new Error("Trying to resume an already finished generator");try{var u=void 0;t?u=n.throw(e):e===k?(Q.isCancelled=!0,r.cancel(),u=l.is.func(n.return)?n.return(k):{done:!0,value:k}):u=e===m?l.is.func(n.return)?n.return():{done:!0}:n.next(e),u.done?(Q.isMainRunning=!1,Q.cont&&Q.cont(u.value)):E(u.value,H,"",r)}catch(o){Q.isCancelled&&W("error","uncaught at "+K,o.message),Q.isMainRunning=!1,Q.cont(o,!0)}}function s(e,t){n._isRunning=!1,J.close(),t?(e instanceof Error&&(e.sagaStack="at "+K+" \n "+(e.sagaStack||e.stack)),z.cont||W("error","uncaught",e.sagaStack||e.stack),n._error=e,n._isAborted=!0,n._deferredEnd&&n._deferredEnd.reject(e)):(e===k&&h&&W("info",K+" has been cancelled",""),n._result=e,n._deferredEnd&&n._deferredEnd.resolve(e)),z.cont&&z.cont(e,t),z.joiners.forEach(function(n){return n.cb(e,t)}),z.joiners=null}function E(n,e){function t(n,e){a||(a=!0,u.cancel=l.noop,V&&(e?V.effectRejected(o,n):V.effectResolved(o,n)),u(n,e))}var r=arguments.length<=2||void 0===arguments[2]?"":arguments[2],u=arguments[3],o=b();V&&V.effectTriggered({effectId:o,parentEffectId:e,label:r,effect:n});var a=void 0;t.cancel=l.noop,u.cancel=function(){if(!a){a=!0;try{t.cancel()}catch(n){W("error","uncaught at "+K,n.message)}t.cancel=l.noop,V&&V.effectCancelled(o)}};var i=void 0;return l.is.promise(n)?_(n,t):l.is.iterator(n)?j(n,o,K,t):l.is.array(n)?N(n,o,t):l.is.notUndef(i=v.asEffect.take(n))?O(i,t):l.is.notUndef(i=v.asEffect.put(n))?A(i,t):l.is.notUndef(i=v.asEffect.race(n))?R(i,o,t):l.is.notUndef(i=v.asEffect.call(n))?C(i,o,t):l.is.notUndef(i=v.asEffect.cps(n))?w(i,t):l.is.notUndef(i=v.asEffect.fork(n))?P(i,o,t):l.is.notUndef(i=v.asEffect.join(n))?S(i,t):l.is.notUndef(i=v.asEffect.cancel(n))?T(i,t):l.is.notUndef(i=v.asEffect.select(n))?U(i,t):l.is.notUndef(i=v.asEffect.actionChannel(n))?x(i,t):l.is.notUndef(i=v.asEffect.cancelled(n))?M(i,t):t(n)}function _(n,e){var t=n[l.CANCEL];"function"==typeof t&&(e.cancel=t),n.then(e,function(n){return e(n,!0)})}function j(n,e,t,r){f(n,I,D,F,q,e,t,r)}function O(n,e){var t=n.channel,r=n.pattern,u=n.maybe;t=t||J;var o=function(n){return n instanceof Error?e(n,!0):e((0,p.isEnd)(n)&&!u?m:n)};try{t.take(o,i(r))}catch(a){return e(a,!0)}e.cancel=o.cancel}function A(n,e){var t=n.channel,r=n.action,u=n.sync;(0,d.default)(function(){var n=void 0;try{n=(t?t.put:D)(r)}catch(o){return e(o,!0)}return u&&l.is.promise(n)?void _(n,e):e(n)})}function C(n,e,t){var r=n.context,u=n.fn,o=n.args,a=void 0;try{a=u.apply(r,o)}catch(i){return t(i,!0)}return l.is.promise(a)?_(a,t):l.is.iterator(a)?j(a,e,u.name,t):t(a)}function w(n,e){var t=n.context,r=n.fn,u=n.args;try{r.apply(t,u.concat(function(n,t){return l.is.undef(n)?e(t):e(n,!0)}))}catch(o){return e(o,!0)}}function P(n,e,t){var r=n.context,u=n.fn,o=n.args,a=n.detached,i=void 0,c=void 0,s=void 0;try{i=u.apply(r,o)}catch(v){c=v}s=l.is.iterator(i)?i:c?(0,l.makeIterator)(function(){throw c}):(0,l.makeIterator)(function(){var n=void 0,e={done:!1,value:i},t=function(n){return{done:!0,value:n}};return function(r){return n?t(r):(n=!0,e)}}()),d.default.suspend();var p=f(s,I,D,F,q,e,u.name,a?null:l.noop);a?t(p):s._isRunning?(X.addTask(p),t(p)):s._error?X.abort(s._error):t(p),d.default.flush()}function S(n,e){n.isRunning()?!function(){var t={task:z,cb:e};e.cancel=function(){return(0,l.remove)(n.joiners,t)},n.joiners.push(t)}():n.isAborted()?e(n.error(),!0):e(n.result())}function T(n,e){n.isRunning()&&n.cancel(),e()}function N(n,e,t){function r(){u===a.length&&(o=!0,t(a))}if(!n.length)return t([]);var u=0,o=void 0,a=Array(n.length),i=n.map(function(n,e){var i=function(n,i){o||(i||(0,p.isEnd)(n)||n===m||n===k?(t.cancel(),t(n,i)):(a[e]=n,u++,r()))};return i.cancel=l.noop,i});t.cancel=function(){o||(o=!0,i.forEach(function(n){return n.cancel()}))},n.forEach(function(n,t){return E(n,e,t,i[t])})}function R(n,e,t){var r=void 0,u=Object.keys(n),o={};u.forEach(function(n){var e=function(e,u){r||(u?(t.cancel(),t(e,!0)):(0,p.isEnd)(e)||e===m||e===k||(t.cancel(),r=!0,t(a({},n,e))))};e.cancel=l.noop,o[n]=e}),t.cancel=function(){r||(r=!0,u.forEach(function(n){return o[n].cancel()}))},u.forEach(function(t){return E(n[t],e,t,o[t])})}function U(n,e){var t=n.selector,r=n.args;try{var u=t.apply(void 0,[F()].concat(o(r)));e(u)}catch(a){e(a,!0)}}function x(n,e){var t=n.pattern,r=n.buffer,u=i(t);u.pattern=t,e((0,p.eventChannel)(I,r||g.buffers.fixed(),u))}function M(n,e){e(!!Q.isCancelled)}function L(n,e,r,o){var i,c,f;return r._deferredEnd=null,c={},a(c,l.TASK,!0),a(c,"id",n),a(c,"name",e),i="done",f={},f[i]=f[i]||{},f[i].get=function(){if(r._deferredEnd)return r._deferredEnd.promise;var n=(0,l.deferred)();return r._deferredEnd=n,r._isRunning||(r._error?n.reject(r._error):n.resolve(r._result)),n.promise},a(c,"cont",o),a(c,"joiners",[]),a(c,"cancel",t),a(c,"isRunning",function(){return r._isRunning}),a(c,"isCancelled",function(){return r._isCancelled}),a(c,"isAborted",function(){return r._isAborted}),a(c,"result",function(){return r._result}),a(c,"error",function(){return r._error}),u(c,f),c}var I=arguments.length<=1||void 0===arguments[1]?function(){return l.noop}:arguments[1],D=arguments.length<=2||void 0===arguments[2]?l.noop:arguments[2],F=arguments.length<=3||void 0===arguments[3]?l.noop:arguments[3],q=arguments.length<=4||void 0===arguments[4]?{}:arguments[4],H=arguments.length<=5||void 0===arguments[5]?0:arguments[5],K=arguments.length<=6||void 0===arguments[6]?"anonymous":arguments[6],B=arguments[7];(0,l.check)(n,l.is.iterator,y);var V=q.sagaMonitor,G=q.logger,W=G||l.log,J=(0,p.eventChannel)(I);r.cancel=l.noop;var z=L(H,K,n,B),Q={name:K,cancel:e,isRunning:!0},X=c(K,Q,s);return B&&(B.cancel=t),n._isRunning=!0,r(),z}Object.defineProperty(e,"__esModule",{value:!0}),e.TASK_CANCEL=e.CHANNEL_END=e.NOT_ITERATOR_ERROR=void 0,e.default=f;var l=t(1),s=t(7),d=r(s),v=t(3),p=t(2),g=t(4),h=!1,y=e.NOT_ITERATOR_ERROR="proc first argument (Saga function result) must be an iterator",b=(0,l.autoInc)(),m=e.CHANNEL_END={toString:function(){return"@@redux-saga/CHANNEL_END"}},k=e.TASK_CANCEL={toString:function(){return"@@redux-saga/TASK_CANCEL"}},E={wildcard:function(){return l.kTrue},"default":function(n){return function(e){return e.type===n}},array:function(n){return function(e){return n.some(function(n){return n===e.type})}},predicate:function(n){return function(e){return n(e)}}}},function(n,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=t(3);Object.defineProperty(e,"take",{enumerable:!0,get:function(){return r.take}}),Object.defineProperty(e,"takem",{enumerable:!0,get:function(){return r.takem}}),Object.defineProperty(e,"put",{enumerable:!0,get:function(){return r.put}}),Object.defineProperty(e,"race",{enumerable:!0,get:function(){return r.race}}),Object.defineProperty(e,"call",{enumerable:!0,get:function(){return r.call}}),Object.defineProperty(e,"apply",{enumerable:!0,get:function(){return r.apply}}),Object.defineProperty(e,"cps",{enumerable:!0,get:function(){return r.cps}}),Object.defineProperty(e,"fork",{enumerable:!0,get:function(){return r.fork}}),Object.defineProperty(e,"spawn",{enumerable:!0,get:function(){return r.spawn}}),Object.defineProperty(e,"join",{enumerable:!0,get:function(){return r.join}}),Object.defineProperty(e,"cancel",{enumerable:!0,get:function(){return r.cancel}}),Object.defineProperty(e,"select",{enumerable:!0,get:function(){return r.select}}),Object.defineProperty(e,"actionChannel",{enumerable:!0,get:function(){return r.actionChannel}}),Object.defineProperty(e,"cancelled",{enumerable:!0,get:function(){return r.cancelled}})},function(n,e){"use strict";function t(n){u?r.push(n):(u=!0,r.push(n),t.flush())}Object.defineProperty(e,"__esModule",{value:!0}),e.default=t;var r=[],u=!1;t.suspend=function(){return u=!0},t.flush=function(){for(var n=void 0;n=r.shift();)n();u=!1}},function(n,e,t){"use strict";function r(n){return n&&n.__esModule?n:{"default":n}}function u(){function n(n){function r(n){for(var t=arguments.length,r=Array(t>1?t-1:0),c=1;t>c;c++)r[c-1]=arguments[c];return(0,i.default)(n.apply(void 0,r),a.subscribe,o,u,e,0,n.name)}var u=n.getState,o=n.dispatch;t=r;var a=(0,c.emitter)();return function(n){return function(e){var t=n(e);return a.emit(e),t}}}var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],t=void 0;if(o.is.func(e))throw new Error("Saga middleware no longer accept Generator functions. Use sagaMiddleware.run instead");if(e.logger&&!o.is.func(e.logger))throw new Error("`options.logger` passed to the Saga middleware is not a function!");return n.run=function(n){for(var e=arguments.length,r=Array(e>1?e-1:0),u=1;e>u;u++)r[u-1]=arguments[u];return(0,o.check)(t,o.is.notUndef,"Before running a Saga, you must mount the Saga middleware on the Store using applyMiddleware"),(0,o.check)(n,o.is.func,"sagaMiddleware.run(saga, ...args): saga argument must be a Generator function!"),t.apply(void 0,[n].concat(r))},n}Object.defineProperty(e,"__esModule",{value:!0}),e.default=u;var o=t(1),a=t(5),i=r(a),c=t(2)},function(n,e,t){"use strict";function r(n){return n&&n.__esModule?n:{"default":n}}function u(n,e){var t=e.subscribe,r=e.dispatch,u=e.getState,a=e.sagaMonitor,c=e.logger;return(0,o.check)(n,o.is.iterator,"runSaga must be called on an iterator"),(0,i.default)(n,t,r,u,{sagaMonitor:a,logger:c})}Object.defineProperty(e,"__esModule",{value:!0}),e.runSaga=u;var o=t(1),a=t(5),i=r(a)},function(n,e,t){"use strict";function r(n,e){function t(e,t){if(o===d)return s;if(t)throw o=d,t;u&&u(e);var r=n[o](),a=i(r,3),c=a[0],f=a[1],l=a[2];return o=c,u=l,o===d?s:f}var r=arguments.length<=2||void 0===arguments[2]?"iterator":arguments[2],u=void 0,o=e;return(0,f.makeIterator)(t,function(n){return t(null,n)},r)}function u(n){return Array.isArray(n)?String(n.map(function(n){return String(n)})):String(n)}function o(n,e){for(var t=arguments.length,o=Array(t>2?t-2:0),a=2;t>a;a++)o[a-2]=arguments[a];var i={done:!1,value:(0,l.take)(n)},f=function(n){return{done:!1,value:l.fork.apply(void 0,[e].concat(o,[n]))}},s=void 0,v=function(n){return s=n};return r({q1:function(){return["q2",i,v]},q2:function(){return s===c.END?[d]:["q1",f(s)]}},"q1","takeEvery("+u(n)+", "+e.name+")")}function a(n,e){for(var t=arguments.length,o=Array(t>2?t-2:0),a=2;t>a;a++)o[a-2]=arguments[a];var i={done:!1,value:(0,l.take)(n)},f=function(n){return{done:!1,value:l.fork.apply(void 0,[e].concat(o,[n]))}},s=function(n){return{done:!1,value:(0,l.cancel)(n)}},v=void 0,p=void 0,g=function(n){return v=n},h=function(n){return p=n};return r({q1:function(){return["q2",i,h]},q2:function(){return p===c.END?[d]:v?["q3",s(v)]:["q1",f(p),g]},q3:function(){return["q1",f(p),g]}},"q1","takeLatest("+u(n)+", "+e.name+")")}Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function n(n,e){var t=[],r=!0,u=!1,o=void 0;try{for(var a,i=n[Symbol.iterator]();!(r=(a=i.next()).done)&&(t.push(a.value),!e||t.length!==e);r=!0);}catch(c){u=!0,o=c}finally{try{!r&&i.return&&i.return()}finally{if(u)throw o}}return t}return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return n(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();e.takeEvery=o,e.takeLatest=a;var c=t(2),f=t(1),l=t(3),s={done:!0,value:void 0},d={}},function(n,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=t(1);Object.defineProperty(e,"TASK",{enumerable:!0,get:function(){return r.TASK}}),Object.defineProperty(e,"noop",{enumerable:!0,get:function(){return r.noop}}),Object.defineProperty(e,"is",{enumerable:!0,get:function(){return r.is}}),Object.defineProperty(e,"deferred",{enumerable:!0,get:function(){return r.deferred}}),Object.defineProperty(e,"arrayOfDeffered",{enumerable:!0,get:function(){return r.arrayOfDeffered}}),Object.defineProperty(e,"createMockTask",{enumerable:!0,get:function(){return r.createMockTask}});var u=t(3);Object.defineProperty(e,"asEffect",{enumerable:!0,get:function(){return u.asEffect}})}])});
!function(n,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ReduxSaga=e():n.ReduxSaga=e()}(this,function(){return function(n){function e(r){if(t[r])return t[r].exports;var o=t[r]={exports:{},id:r,loaded:!1};return n[r].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var t={};return e.m=n,e.c=t,e.p="",e(0)}([function(n,e,t){"use strict";function r(n){if(n&&n.__esModule)return n;var e={};if(null!=n)for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e.default=n,e}function o(n){return n&&n.__esModule?n:{"default":n}}Object.defineProperty(e,"__esModule",{value:!0}),e.utils=e.effects=e.CANCEL=e.delay=e.throttle=e.takeLatest=e.takeEvery=e.buffers=e.channel=e.eventChannel=e.END=e.runSaga=void 0;var u=t(9);Object.defineProperty(e,"runSaga",{enumerable:!0,get:function(){return u.runSaga}});var i=t(3);Object.defineProperty(e,"END",{enumerable:!0,get:function(){return i.END}}),Object.defineProperty(e,"eventChannel",{enumerable:!0,get:function(){return i.eventChannel}}),Object.defineProperty(e,"channel",{enumerable:!0,get:function(){return i.channel}});var a=t(2);Object.defineProperty(e,"buffers",{enumerable:!0,get:function(){return a.buffers}});var c=t(10);Object.defineProperty(e,"takeEvery",{enumerable:!0,get:function(){return c.takeEvery}}),Object.defineProperty(e,"takeLatest",{enumerable:!0,get:function(){return c.takeLatest}}),Object.defineProperty(e,"throttle",{enumerable:!0,get:function(){return c.throttle}});var f=t(1);Object.defineProperty(e,"delay",{enumerable:!0,get:function(){return f.delay}}),Object.defineProperty(e,"CANCEL",{enumerable:!0,get:function(){return f.CANCEL}});var l=t(8),s=o(l),d=t(6),v=r(d),h=t(11),p=r(h);e.default=s.default,e.effects=v,e.utils=p},function(n,e){"use strict";function t(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function r(n,e,t){if(!e(n))throw s("error","uncaught at check",t),new Error(t)}function o(n,e){var t=n.indexOf(e);t>=0&&n.splice(t,1)}function u(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=d({},n),t=new Promise(function(n,t){e.resolve=n,e.reject=t});return e.promise=t,e}function i(n){for(var e=[],t=0;t<n;t++)e.push(u());return e}function a(n){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],t=void 0,r=new Promise(function(r){t=setTimeout(function(){return r(e)},n)});return r[y]=function(){return clearTimeout(t)},r}function c(){var n,e=!0,r=void 0,o=void 0;return n={},t(n,p,!0),t(n,"isRunning",function(){return e}),t(n,"result",function(){return r}),t(n,"error",function(){return o}),t(n,"setRunning",function(n){return e=n}),t(n,"setResult",function(n){return r=n}),t(n,"setError",function(n){return o=n}),n}function f(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return function(){return++n}}function l(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:E,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=arguments[3],o={name:t,next:n,"throw":e,"return":k};return r&&(o[g]=!0),"undefined"!=typeof Symbol&&(o[Symbol.iterator]=function(){return o}),o}function s(n,e,t){"undefined"==typeof window?console.log("redux-saga "+n+": "+e+"\n"+(t&&t.stack||t)):console[n](e,t)}Object.defineProperty(e,"__esModule",{value:!0});var d=Object.assign||function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r])}return n},v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n};e.check=r,e.remove=o,e.deferred=u,e.arrayOfDeffered=i,e.delay=a,e.createMockTask=c,e.autoInc=f,e.makeIterator=l,e.log=s;var h=e.sym=function(n){return"@@redux-saga/"+n},p=e.TASK=h("TASK"),g=e.HELPER=h("HELPER"),y=(e.MATCH=h("MATCH"),e.CANCEL=h("cancelPromise")),b=e.konst=function(n){return function(){return n}},m=(e.kTrue=b(!0),e.kFalse=b(!1),e.noop=function(){},e.ident=function(n){return n},e.is={undef:function(n){return null===n||void 0===n},notUndef:function(n){return null!==n&&void 0!==n},func:function(n){return"function"==typeof n},number:function(n){return"number"==typeof n},array:Array.isArray,promise:function(n){return n&&m.func(n.then)},iterator:function(n){return n&&m.func(n.next)&&m.func(n.throw)},task:function(n){return n&&n[p]},observable:function(n){return n&&m.func(n.subscribe)},buffer:function(n){return n&&m.func(n.isEmpty)&&m.func(n.take)&&m.func(n.put)},pattern:function(n){return n&&("string"==typeof n||"symbol"===("undefined"==typeof n?"undefined":v(n))||m.func(n)||m.array(n))},channel:function(n){return n&&m.func(n.take)&&m.func(n.close)},helper:function(n){return n&&n[g]}}),E=function(n){throw n},k=function(n){return{value:n,done:!0}};e.internalErr=function(n){return new Error("\n redux-saga: Error checking hooks detected an inconsistent state. This is likely a bug\n in redux-saga code and not yours. Thanks for reporting this in the project's github repo.\n Error: "+n+"\n")}},function(n,e,t){"use strict";function r(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,e=arguments[1],t=new Array(n),r=0,o=0,a=0,l=function(e){t[o]=e,o=(o+1)%n,r++},s=function(){if(0!=r){var e=t[a];return t[a]=null,r--,a=(a+1)%n,e}},d=function(){for(var n=[];r;)n.push(s());return n};return{isEmpty:function(){return 0==r},put:function(s){if(r<n)l(s);else{var v=void 0;switch(e){case i:throw new Error(u);case c:t[o]=s,o=(o+1)%n,a=o;break;case f:v=2*n,t=d(),r=t.length,o=t.length,a=0,t.length=v,n=v,l(s)}}},take:s,flush:d}}Object.defineProperty(e,"__esModule",{value:!0}),e.buffers=e.BUFFER_OVERFLOW=void 0;var o=t(1),u=e.BUFFER_OVERFLOW="Channel's Buffer overflow!",i=1,a=2,c=3,f=4,l={isEmpty:o.kTrue,put:o.noop,take:o.noop};e.buffers={none:function(){return l},fixed:function(n){return r(n,i)},dropping:function(n){return r(n,a)},sliding:function(n){return r(n,c)},expanding:function(n){return r(n,f)}}},function(n,e,t){"use strict";function r(){function n(n){return t.push(n),function(){return(0,c.remove)(t,n)}}function e(n){for(var e=t.slice(),r=0,o=e.length;r<o;r++)e[r](n)}var t=[];return{subscribe:n,emit:e}}function o(){function n(){if(i&&a.length)throw(0,c.internalErr)("Cannot have a closed channel with pending takers");if(a.length&&!u.isEmpty())throw(0,c.internalErr)("Cannot have pending takers with non empty buffer")}function e(e){if(n(),(0,c.check)(e,c.is.notUndef,h),!i){if(!a.length)return u.put(e);for(var t=0;t<a.length;t++){var r=a[t];if(!r[c.MATCH]||r[c.MATCH](e))return a.splice(t,1),r(e)}}}function t(e){n(),(0,c.check)(e,c.is.func,"channel.take's callback must be a function"),i&&u.isEmpty()?e(s):u.isEmpty()?(a.push(e),e.cancel=function(){return(0,c.remove)(a,e)}):e(u.take())}function r(e){return n(),(0,c.check)(e,c.is.func,"channel.flush' callback must be a function"),i&&u.isEmpty()?void e(s):void e(u.flush())}function o(){if(n(),!i&&(i=!0,a.length)){var e=a;a=[];for(var t=0,r=e.length;t<r;t++)e[t](s)}}var u=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f.buffers.fixed(),i=!1,a=[];return(0,c.check)(u,c.is.buffer,v),{take:t,put:e,flush:r,close:o,get __takers__(){return a},get __closed__(){return i}}}function u(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:f.buffers.none(),t=arguments[2];arguments.length>2&&(0,c.check)(t,c.is.func,"Invalid match function passed to eventChannel");var r=o(e),u=n(function(n){d(n)?r.close():t&&!t(n)||r.put(n)});if(!c.is.func(u))throw new Error("in eventChannel: subscribe should return a function to unsubscribe");return{take:r.take,flush:r.flush,close:function(){r.__closed__||(r.close(),u())}}}function i(n){var e=u(n);return a({},e,{take:function(n,t){arguments.length>1&&((0,c.check)(t,c.is.func,"channel.take's matcher argument must be a function"),n[c.MATCH]=t),e.take(n)}})}Object.defineProperty(e,"__esModule",{value:!0}),e.UNDEFINED_INPUT_ERROR=e.INVALID_BUFFER=e.isEnd=e.END=void 0;var a=Object.assign||function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r])}return n};e.emitter=r,e.channel=o,e.eventChannel=u,e.stdChannel=i;var c=t(1),f=t(2),l="@@redux-saga/CHANNEL_END",s=e.END={type:l},d=e.isEnd=function(n){return n&&n.type===l},v=e.INVALID_BUFFER="invalid buffer passed to channel factory function",h=e.UNDEFINED_INPUT_ERROR="Saga was provided with an undefined action"},function(n,e,t){"use strict";function r(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function o(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"*";if(arguments.length&&(0,k.check)(arguments[0],k.is.notUndef,"take(patternOrChannel): patternOrChannel is undefined"),k.is.pattern(n))return M(O,{pattern:n});if(k.is.channel(n))return M(O,{channel:n});throw new Error("take(patternOrChannel): argument "+String(n)+" is not valid channel or a valid pattern")}function u(){var n=o.apply(void 0,arguments);return n[O].maybe=!0,n}function i(n,e){return arguments.length>1?((0,k.check)(n,k.is.notUndef,"put(channel, action): argument channel is undefined"),(0,k.check)(n,k.is.channel,"put(channel, action): argument "+n+" is not a valid channel"),(0,k.check)(e,k.is.notUndef,"put(channel, action): argument action is undefined")):((0,k.check)(n,k.is.notUndef,"put(action): argument action is undefined"),e=n,n=null),M(j,{channel:n,action:e})}function a(n){return M(C,n)}function c(n,e,t){(0,k.check)(e,k.is.notUndef,n+": argument fn is undefined");var r=null;if(k.is.array(e)){var o=e,u=E(o,2);r=u[0],e=u[1]}else if(e.fn){var i=e;r=i.context,e=i.fn}return(0,k.check)(e,k.is.func,n+": argument "+e+" is not a function"),{context:r,fn:e,args:t}}function f(n){for(var e=arguments.length,t=Array(e>1?e-1:0),r=1;r<e;r++)t[r-1]=arguments[r];return M(A,c("call",n,t))}function l(n,e){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return M(A,c("apply",{context:n,fn:e},t))}function s(n){for(var e=arguments.length,t=Array(e>1?e-1:0),r=1;r<e;r++)t[r-1]=arguments[r];return M(w,c("cps",n,t))}function d(n){for(var e=arguments.length,t=Array(e>1?e-1:0),r=1;r<e;r++)t[r-1]=arguments[r];return M(P,c("fork",n,t))}function v(n){for(var e=arguments.length,t=Array(e>1?e-1:0),r=1;r<e;r++)t[r-1]=arguments[r];var o=d.apply(void 0,[n].concat(t));return o[P].detached=!0,o}function h(n){if((0,k.check)(n,k.is.notUndef,"join(task): argument task is undefined"),!L(n))throw new Error("join(task): argument "+n+" is not a valid Task object \n(HINT: if you are getting this errors in tests, consider using createMockTask from redux-saga/utils)");return M(S,n)}function p(n){if((0,k.check)(n,k.is.notUndef,"cancel(task): argument task is undefined"),!L(n))throw new Error("cancel(task): argument "+n+" is not a valid Task object \n(HINT: if you are getting this errors in tests, consider using createMockTask from redux-saga/utils)");return M(T,n)}function g(n){for(var e=arguments.length,t=Array(e>1?e-1:0),r=1;r<e;r++)t[r-1]=arguments[r];return 0===arguments.length?n=k.ident:((0,k.check)(n,k.is.notUndef,"select(selector,[...]): argument selector is undefined"),(0,k.check)(n,k.is.func,"select(selector,[...]): argument "+n+" is not a function")),M(N,{selector:n,args:t})}function y(n,e){return(0,k.check)(n,k.is.notUndef,"actionChannel(pattern,...): argument pattern is undefined"),arguments.length>1&&((0,k.check)(e,k.is.notUndef,"actionChannel(pattern, buffer): argument buffer is undefined"),(0,k.check)(e,k.is.notUndef,"actionChannel(pattern, buffer): argument "+e+" is not a valid buffer")),M(R,{pattern:n,buffer:e})}function b(){return M(x,{})}function m(n){return(0,k.check)(n,k.is.channel,"flush(channel): argument "+n+" is not valid channel"),M(U,n)}Object.defineProperty(e,"__esModule",{value:!0}),e.asEffect=void 0;var E=function(){function n(n,e){var t=[],r=!0,o=!1,u=void 0;try{for(var i,a=n[Symbol.iterator]();!(r=(i=a.next()).done)&&(t.push(i.value),!e||t.length!==e);r=!0);}catch(c){o=!0,u=c}finally{try{!r&&a.return&&a.return()}finally{if(o)throw u}}return t}return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return n(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();e.take=o,e.takem=u,e.put=i,e.race=a,e.call=f,e.apply=l,e.cps=s,e.fork=d,e.spawn=v,e.join=h,e.cancel=p,e.select=g,e.actionChannel=y,e.cancelled=b,e.flush=m;var k=t(1),_=(0,k.sym)("IO"),O="TAKE",j="PUT",C="RACE",A="CALL",w="CPS",P="FORK",S="JOIN",T="CANCEL",N="SELECT",R="ACTION_CHANNEL",x="CANCELLED",U="FLUSH",M=function(n,e){var t;return t={},r(t,_,!0),r(t,n,e),t};i.sync=function(){var n=i.apply(void 0,arguments);return n[j].sync=!0,n};var L=function(n){return n[k.TASK]};e.asEffect={take:function(n){return n&&n[_]&&n[O]},put:function(n){return n&&n[_]&&n[j]},race:function(n){return n&&n[_]&&n[C]},call:function(n){return n&&n[_]&&n[A]},cps:function(n){return n&&n[_]&&n[w]},fork:function(n){return n&&n[_]&&n[P]},join:function(n){return n&&n[_]&&n[S]},cancel:function(n){return n&&n[_]&&n[T]},select:function(n){return n&&n[_]&&n[N]},actionChannel:function(n){return n&&n[_]&&n[R]},cancelled:function(n){return n&&n[_]&&n[x]},flush:function(n){return n&&n[_]&&n[U]}}},function(n,e,t){"use strict";function r(n){return n&&n.__esModule?n:{"default":n}}function o(n,e){for(var t in e){var r=e[t];r.configurable=r.enumerable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,t,r)}return n}function u(n){if(Array.isArray(n)){for(var e=0,t=Array(n.length);e<n.length;e++)t[e]=n[e];return t}return Array.from(n)}function i(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function a(n){return("*"===n?O.wildcard:d.is.array(n)?O.array:d.is.func(n)?O.predicate:O.default)(n)}function c(n,e,t){function r(n){u(),t(n,!0)}function o(n){i.push(n),n.cont=function(o,u){c||((0,d.remove)(i,n),n.cont=d.noop,u?r(o):(n===e&&(a=o),i.length||(c=!0,t(a))))}}function u(){c||(c=!0,i.forEach(function(n){n.cont=d.noop,n.cancel()}),i=[])}var i=[],a=void 0,c=!1;return o(e),{addTask:o,cancelAll:u,abort:r,getTasks:function(){return i},taskNames:function(){return i.map(function(n){return n.name})}}}function f(n){var e=n.context,t=n.fn,r=n.args;if(d.is.iterator(t))return t;var o=void 0,u=void 0;try{o=t.apply(e,r)}catch(i){u=i}return d.is.iterator(o)?o:u?(0,d.makeIterator)(function(){throw u}):(0,d.makeIterator)(function(){var n=void 0,e={done:!1,value:o},t=function(n){return{done:!0,value:n}};return function(r){return n?t(r):(n=!0,e)}}())}function l(n){return{fn:n}}function s(n){function e(){$.isRunning&&!$.isCancelled&&($.isCancelled=!0,r(_))}function t(){n._isRunning&&!n._isCancelled&&(n._isCancelled=!0,nn.cancelAll(),v(_))}function r(e,t){if(!$.isRunning)throw new Error("Trying to resume an already finished generator");try{var o=void 0;t?o=n.throw(e):e===_?($.isCancelled=!0,r.cancel(),o=d.is.func(n.return)?n.return(_):{done:!0,value:_}):o=e===k?d.is.func(n.return)?n.return():{done:!0}:n.next(e),o.done?($.isMainRunning=!1,$.cont&&$.cont(o.value)):O(o.value,V,"",r)}catch(u){$.isCancelled&&X("error","uncaught at "+G,u.message),$.isMainRunning=!1,$.cont(u,!0)}}function v(e,t){n._isRunning=!1,Y.close(),t?(e instanceof Error&&(e.sagaStack="at "+G+" \n "+(e.sagaStack||e.stack)),Z.cont||(X("error","uncaught",e.sagaStack||e.stack),e instanceof Error&&Q&&Q(e)),n._error=e,n._isAborted=!0,n._deferredEnd&&n._deferredEnd.reject(e)):(e===_&&b&&X("info",G+" has been cancelled",""),n._result=e,n._deferredEnd&&n._deferredEnd.resolve(e)),Z.cont&&Z.cont(e,t),Z.joiners.forEach(function(n){return n.cb(e,t)}),Z.joiners=null}function O(n,e){function t(n,e){i||(i=!0,o.cancel=d.noop,J&&(e?J.effectRejected(u,n):J.effectResolved(u,n)),o(n,e))}var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",o=arguments[3],u=E();J&&J.effectTriggered({effectId:u,parentEffectId:e,label:r,effect:n});var i=void 0;t.cancel=d.noop,o.cancel=function(){if(!i){i=!0;try{t.cancel()}catch(n){X("error","uncaught at "+G,n.message)}t.cancel=d.noop,J&&J.effectCancelled(u)}};var a=void 0;return d.is.promise(n)?j(n,t):d.is.helper(n)?T(l(n),u,t):d.is.iterator(n)?C(n,u,G,t):d.is.array(n)?x(n,u,t):d.is.notUndef(a=p.asEffect.take(n))?A(a,t):d.is.notUndef(a=p.asEffect.put(n))?w(a,t):d.is.notUndef(a=p.asEffect.race(n))?U(a,u,t):d.is.notUndef(a=p.asEffect.call(n))?P(a,u,t):d.is.notUndef(a=p.asEffect.cps(n))?S(a,t):d.is.notUndef(a=p.asEffect.fork(n))?T(a,u,t):d.is.notUndef(a=p.asEffect.join(n))?N(a,t):d.is.notUndef(a=p.asEffect.cancel(n))?R(a,t):d.is.notUndef(a=p.asEffect.select(n))?M(a,t):d.is.notUndef(a=p.asEffect.actionChannel(n))?L(a,t):d.is.notUndef(a=p.asEffect.flush(n))?q(a,t):d.is.notUndef(a=p.asEffect.cancelled(n))?I(a,t):t(n)}function j(n,e){var t=n[d.CANCEL];"function"==typeof t&&(e.cancel=t),n.then(e,function(n){return e(n,!0)})}function C(n,e,t,r){s(n,F,H,K,B,e,t,r)}function A(n,e){var t=n.channel,r=n.pattern,o=n.maybe;t=t||Y;var u=function(n){return n instanceof Error?e(n,!0):e((0,g.isEnd)(n)&&!o?k:n)};try{t.take(u,a(r))}catch(i){return e(i,!0)}e.cancel=u.cancel}function w(n,e){var t=n.channel,r=n.action,o=n.sync;(0,h.default)(function(){var n=void 0;try{n=(t?t.put:H)(r)}catch(u){return e(u,!0)}return o&&d.is.promise(n)?void j(n,e):e(n)})}function P(n,e,t){var r=n.context,o=n.fn,u=n.args,i=void 0;try{i=o.apply(r,u)}catch(a){return t(a,!0)}return d.is.promise(i)?j(i,t):d.is.iterator(i)?C(i,e,o.name,t):t(i)}function S(n,e){var t=n.context,r=n.fn,o=n.args;try{r.apply(t,o.concat(function(n,t){return d.is.undef(n)?e(t):e(n,!0)}))}catch(u){return e(u,!0)}}function T(n,e,t){var r=n.context,o=n.fn,u=n.args,i=n.detached,a=f({context:r,fn:o,args:u});h.default.suspend();var c=s(a,F,H,K,B,e,o.name,i?null:d.noop);i?t(c):a._isRunning?(nn.addTask(c),t(c)):a._error?nn.abort(a._error):t(c),h.default.flush()}function N(n,e){n.isRunning()?!function(){var t={task:Z,cb:e};e.cancel=function(){return(0,d.remove)(n.joiners,t)},n.joiners.push(t)}():n.isAborted()?e(n.error(),!0):e(n.result())}function R(n,e){n.isRunning()&&n.cancel(),e()}function x(n,e,t){function r(){o===i.length&&(u=!0,t(i))}if(!n.length)return t([]);var o=0,u=void 0,i=Array(n.length),a=n.map(function(n,e){var a=function(n,a){u||(a||(0,g.isEnd)(n)||n===k||n===_?(t.cancel(),t(n,a)):(i[e]=n,o++,r()))};return a.cancel=d.noop,a});t.cancel=function(){u||(u=!0,a.forEach(function(n){return n.cancel()}))},n.forEach(function(n,t){return O(n,e,t,a[t])})}function U(n,e,t){var r=void 0,o=Object.keys(n),u={};o.forEach(function(n){var e=function(e,o){r||(o?(t.cancel(),t(e,!0)):(0,g.isEnd)(e)||e===k||e===_||(t.cancel(),r=!0,t(i({},n,e))))};e.cancel=d.noop,u[n]=e}),t.cancel=function(){r||(r=!0,o.forEach(function(n){return u[n].cancel()}))},o.forEach(function(t){return O(n[t],e,t,u[t])})}function M(n,e){var t=n.selector,r=n.args;try{var o=t.apply(void 0,[K()].concat(u(r)));e(o)}catch(i){e(i,!0)}}function L(n,e){var t=n.pattern,r=n.buffer,o=a(t);o.pattern=t,e((0,g.eventChannel)(F,r||y.buffers.fixed(),o))}function I(n,e){e(!!$.isCancelled)}function q(n,e){n.flush(e)}function D(n,e,r,u){var a,c,f;return r._deferredEnd=null,c={},i(c,d.TASK,!0),i(c,"id",n),i(c,"name",e),a="done",f={},f[a]=f[a]||{},f[a].get=function(){if(r._deferredEnd)return r._deferredEnd.promise;var n=(0,d.deferred)();return r._deferredEnd=n,r._isRunning||(r._error?n.reject(r._error):n.resolve(r._result)),n.promise},i(c,"cont",u),i(c,"joiners",[]),i(c,"cancel",t),i(c,"isRunning",function(){return r._isRunning}),i(c,"isCancelled",function(){return r._isCancelled}),i(c,"isAborted",function(){return r._isAborted}),i(c,"result",function(){return r._result}),i(c,"error",function(){return r._error}),o(c,f),c}var F=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){return d.noop},H=arguments.length>2&&void 0!==arguments[2]?arguments[2]:d.noop,K=arguments.length>3&&void 0!==arguments[3]?arguments[3]:d.noop,B=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},V=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,G=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"anonymous",W=arguments[7];(0,d.check)(n,d.is.iterator,m);var J=B.sagaMonitor,z=B.logger,Q=B.onError,X=z||d.log,Y=(0,g.stdChannel)(F);r.cancel=d.noop;var Z=D(V,G,n,W),$={name:G,cancel:e,isRunning:!0},nn=c(G,$,v);return W&&(W.cancel=t),n._isRunning=!0,r(),Z}Object.defineProperty(e,"__esModule",{value:!0}),e.TASK_CANCEL=e.CHANNEL_END=e.NOT_ITERATOR_ERROR=void 0,e.default=s;var d=t(1),v=t(7),h=r(v),p=t(4),g=t(3),y=t(2),b=!1,m=e.NOT_ITERATOR_ERROR="proc first argument (Saga function result) must be an iterator",E=(0,d.autoInc)(),k=e.CHANNEL_END={toString:function(){return"@@redux-saga/CHANNEL_END"}},_=e.TASK_CANCEL={toString:function(){return"@@redux-saga/TASK_CANCEL"}},O={wildcard:function(){return d.kTrue},"default":function(n){return function(e){return e.type===n}},array:function(n){return function(e){return n.some(function(n){return n===e.type})}},predicate:function(n){return function(e){return n(e)}}}},function(n,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=t(4);Object.defineProperty(e,"take",{enumerable:!0,get:function(){return r.take}}),Object.defineProperty(e,"takem",{enumerable:!0,get:function(){return r.takem}}),Object.defineProperty(e,"put",{enumerable:!0,get:function(){return r.put}}),Object.defineProperty(e,"race",{enumerable:!0,get:function(){return r.race}}),Object.defineProperty(e,"call",{enumerable:!0,get:function(){return r.call}}),Object.defineProperty(e,"apply",{enumerable:!0,get:function(){return r.apply}}),Object.defineProperty(e,"cps",{enumerable:!0,get:function(){return r.cps}}),Object.defineProperty(e,"fork",{enumerable:!0,get:function(){return r.fork}}),Object.defineProperty(e,"spawn",{enumerable:!0,get:function(){return r.spawn}}),Object.defineProperty(e,"join",{enumerable:!0,get:function(){return r.join}}),Object.defineProperty(e,"cancel",{enumerable:!0,get:function(){return r.cancel}}),Object.defineProperty(e,"select",{enumerable:!0,get:function(){return r.select}}),Object.defineProperty(e,"actionChannel",{enumerable:!0,get:function(){return r.actionChannel}}),Object.defineProperty(e,"cancelled",{enumerable:!0,get:function(){return r.cancelled}}),Object.defineProperty(e,"flush",{enumerable:!0,get:function(){return r.flush}})},function(n,e){"use strict";function t(n){o?r.push(n):(o=!0,r.push(n),t.flush())}Object.defineProperty(e,"__esModule",{value:!0}),e.default=t;var r=[],o=!1;t.suspend=function(){return o=!0},t.flush=function(){for(var n=void 0;n=r.shift();)n();o=!1}},function(n,e,t){"use strict";function r(n){return n&&n.__esModule?n:{"default":n}}function o(){function n(n){function r(n){for(var t=arguments.length,r=Array(t>1?t-1:0),c=1;c<t;c++)r[c-1]=arguments[c];return(0,a.default)(n.apply(void 0,r),i.subscribe,u,o,e,0,n.name)}var o=n.getState,u=n.dispatch;t=r;var i=(0,c.emitter)();return function(n){return function(e){var t=n(e);return i.emit(e),t}}}var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=void 0;if(u.is.func(e))throw new Error("Saga middleware no longer accept Generator functions. Use sagaMiddleware.run instead");if(e.logger&&!u.is.func(e.logger))throw new Error("`options.logger` passed to the Saga middleware is not a function!");if(e.onerror&&!u.is.func(e.onerror))throw new Error("`options.onerror` passed to the Saga middleware is not a function!");return n.run=function(n){for(var e=arguments.length,r=Array(e>1?e-1:0),o=1;o<e;o++)r[o-1]=arguments[o];return(0,u.check)(t,u.is.notUndef,"Before running a Saga, you must mount the Saga middleware on the Store using applyMiddleware"),(0,u.check)(n,u.is.func,"sagaMiddleware.run(saga, ...args): saga argument must be a Generator function!"),t.apply(void 0,[n].concat(r))},n}Object.defineProperty(e,"__esModule",{value:!0}),e.default=o;var u=t(1),i=t(5),a=r(i),c=t(3)},function(n,e,t){"use strict";function r(n){return n&&n.__esModule?n:{"default":n}}function o(n,e){var t=e.subscribe,r=e.dispatch,o=e.getState,i=e.sagaMonitor,c=e.logger;return(0,u.check)(n,u.is.iterator,"runSaga must be called on an iterator"),(0,a.default)(n,t,r,o,{sagaMonitor:i,logger:c})}Object.defineProperty(e,"__esModule",{value:!0}),e.runSaga=o;var u=t(1),i=t(5),a=r(i)},function(n,e,t){"use strict";function r(n,e){function t(e,t){if(u===h)return v;if(t)throw u=h,t;o&&o(e);var r=n[u](),i=c(r,3),a=i[0],f=i[1],l=i[2];return u=a,o=l,u===h?v:f}var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"iterator",o=void 0,u=e;return(0,l.makeIterator)(t,function(n){return t(null,n)},r,!0)}function o(n){return Array.isArray(n)?String(n.map(function(n){return String(n)})):String(n)}function u(n,e){for(var t=arguments.length,u=Array(t>2?t-2:0),i=2;i<t;i++)u[i-2]=arguments[i];var a={done:!1,value:(0,s.take)(n)},c=function(n){return{done:!1,value:s.fork.apply(void 0,[e].concat(u,[n]))}},l=void 0,d=function(n){return l=n};return r({q1:function(){return["q2",a,d]},q2:function(){return l===f.END?[h]:["q1",c(l)]}},"q1","takeEvery("+o(n)+", "+e.name+")")}function i(n,e){for(var t=arguments.length,u=Array(t>2?t-2:0),i=2;i<t;i++)u[i-2]=arguments[i];var a={done:!1,value:(0,s.take)(n)},c=function(n){return{done:!1,value:s.fork.apply(void 0,[e].concat(u,[n]))}},l=function(n){return{done:!1,value:(0,s.cancel)(n)}},d=void 0,v=void 0,p=function(n){return d=n},g=function(n){return v=n};return r({q1:function(){return["q2",a,g]},q2:function(){return v===f.END?[h]:d?["q3",l(d)]:["q1",c(v),p]},q3:function(){return["q1",c(v),p]}},"q1","takeLatest("+o(n)+", "+e.name+")")}function a(n,e,t){for(var u=arguments.length,i=Array(u>3?u-3:0),a=3;a<u;a++)i[a-3]=arguments[a];var c=void 0,v=void 0,p={done:!1,value:(0,s.actionChannel)(e,d.buffers.sliding(1))},g=function(){return{done:!1,value:(0,s.take)(v,e)}},y=function(n){return{done:!1,value:s.fork.apply(void 0,[t].concat(i,[n]))}},b={done:!1,value:(0,s.call)(l.delay,n)},m=function(n){return c=n},E=function(n){return v=n};return r({q1:function(){return["q2",p,E]},q2:function(){return["q3",g(),m]},q3:function(){return c===f.END?[h]:["q4",y(c)]},q4:function(){return["q2",b]}},"q1","throttle("+o(e)+", "+t.name+")")}Object.defineProperty(e,"__esModule",{value:!0});var c=function(){function n(n,e){var t=[],r=!0,o=!1,u=void 0;try{for(var i,a=n[Symbol.iterator]();!(r=(i=a.next()).done)&&(t.push(i.value),!e||t.length!==e);r=!0);}catch(c){o=!0,u=c}finally{try{!r&&a.return&&a.return()}finally{if(o)throw u}}return t}return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return n(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();e.takeEvery=u,e.takeLatest=i,e.throttle=a;var f=t(3),l=t(1),s=t(4),d=t(2),v={done:!0,value:void 0},h={}},function(n,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=t(1);Object.defineProperty(e,"TASK",{enumerable:!0,get:function(){return r.TASK}}),Object.defineProperty(e,"noop",{enumerable:!0,get:function(){return r.noop}}),Object.defineProperty(e,"is",{enumerable:!0,get:function(){return r.is}}),Object.defineProperty(e,"deferred",{enumerable:!0,get:function(){return r.deferred}}),Object.defineProperty(e,"arrayOfDeffered",{enumerable:!0,get:function(){return r.arrayOfDeffered}}),Object.defineProperty(e,"createMockTask",{enumerable:!0,get:function(){return r.createMockTask}});var o=t(4);Object.defineProperty(e,"asEffect",{enumerable:!0,get:function(){return o.asEffect}})}])});

@@ -36,3 +36,3 @@ import {Action} from "redux";

export function put<T extends Action>(action: T): PutEffect<T>;
export function put<T extends Action>(channel: Channel<T>, action: T): PutEffect<T>;
export function put<T>(channel: Channel<T>, action: T): PutEffect<T>;

@@ -39,0 +39,0 @@

@@ -1,1 +0,1 @@

export { take, takem, put, race, call, apply, cps, fork, spawn, join, cancel, select, actionChannel, cancelled } from './internal/io';
export { take, takem, put, race, call, apply, cps, fork, spawn, join, cancel, select, actionChannel, cancelled, flush } from './internal/io';

@@ -7,3 +7,3 @@ import middleware from './internal/middleware';

export { buffers } from './internal/buffers';
export { takeEvery, takeLatest } from './internal/sagaHelpers';
export { takeEvery, takeLatest, throttle } from './internal/sagaHelpers';
export { delay, CANCEL } from './internal/utils';

@@ -10,0 +10,0 @@

@@ -8,2 +8,3 @@ import { kTrue, noop } from './utils';

var ON_OVERFLOW_SLIDE = 3;
var ON_OVERFLOW_EXPAND = 4;

@@ -13,3 +14,3 @@ var zeroBuffer = { isEmpty: kTrue, put: noop, take: noop };

function ringBuffer() {
var limit = arguments.length <= 0 || arguments[0] === undefined ? 10 : arguments[0];
var limit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;
var overflowAction = arguments[1];

@@ -21,2 +22,27 @@

var popIndex = 0;
var push = function push(it) {
arr[pushIndex] = it;
pushIndex = (pushIndex + 1) % limit;
length++;
};
var take = function take() {
if (length != 0) {
var it = arr[popIndex];
arr[popIndex] = null;
length--;
popIndex = (popIndex + 1) % limit;
return it;
}
};
var flush = function flush() {
var items = [];
while (length) {
items.push(take());
}
return items;
};
return {

@@ -28,6 +54,5 @@ isEmpty: function isEmpty() {

if (length < limit) {
arr[pushIndex] = it;
pushIndex = (pushIndex + 1) % limit;
length++;
push(it);
} else {
var doubledLimit = void 0;
switch (overflowAction) {

@@ -41,2 +66,16 @@ case ON_OVERFLOW_THROW:

break;
case ON_OVERFLOW_EXPAND:
doubledLimit = 2 * limit;
arr = flush();
length = arr.length;
pushIndex = arr.length;
popIndex = 0;
arr.length = doubledLimit;
limit = doubledLimit;
push(it);
break;
default:

@@ -47,11 +86,3 @@ // DROP

},
take: function take() {
if (length != 0) {
var it = arr[popIndex];
arr[popIndex] = null;
length--;
popIndex = (popIndex + 1) % limit;
return it;
}
}
take: take, flush: flush
};

@@ -72,3 +103,6 @@ }

return ringBuffer(limit, ON_OVERFLOW_SLIDE);
},
expanding: function expanding(limit) {
return ringBuffer(limit, ON_OVERFLOW_EXPAND);
}
};

@@ -0,1 +1,3 @@

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; };
import { is, check, remove, MATCH, internalErr } from './utils';

@@ -40,11 +42,9 @@ import { buffers } from './buffers';

export function channel(buffer) {
export function channel() {
var buffer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : buffers.fixed();
var closed = false;
var takers = [];
if (arguments.length > 0) {
check(buffer, is.buffer, INVALID_BUFFER);
} else {
buffer = buffers.fixed();
}
check(buffer, is.buffer, INVALID_BUFFER);

@@ -63,13 +63,13 @@ function checkForbiddenStates() {

check(input, is.notUndef, UNDEFINED_INPUT_ERROR);
if (!closed) {
if (takers.length) {
for (var i = 0; i < takers.length; i++) {
var cb = takers[i];
if (!cb[MATCH] || cb[MATCH](input)) {
takers.splice(i, 1);
return cb(input);
}
}
} else {
buffer.put(input);
if (closed) {
return;
}
if (!takers.length) {
return buffer.put(input);
}
for (var i = 0; i < takers.length; i++) {
var cb = takers[i];
if (!cb[MATCH] || cb[MATCH](input)) {
takers.splice(i, 1);
return cb(input);
}

@@ -79,9 +79,6 @@ }

function take(cb, matcher) {
function take(cb) {
checkForbiddenStates();
check(cb, is.func, 'channel.take\'s callback must be a function');
if (arguments.length > 1) {
check(matcher, is.func, 'channel.take\'s matcher argument must be a function');
cb[MATCH] = matcher;
}
if (closed && buffer.isEmpty()) {

@@ -99,2 +96,12 @@ cb(END);

function flush(cb) {
checkForbiddenStates(); // TODO: check if some new state should be forbidden now
check(cb, is.func, 'channel.flush\' callback must be a function');
if (closed && buffer.isEmpty()) {
cb(END);
return;
}
cb(buffer.flush());
}
function close() {

@@ -110,3 +117,2 @@ checkForbiddenStates();

}
takers = [];
}

@@ -116,3 +122,3 @@ }

return { take: take, put: put, close: close,
return { take: take, put: put, flush: flush, close: close,
get __takers__() {

@@ -128,3 +134,3 @@ return takers;

export function eventChannel(subscribe) {
var buffer = arguments.length <= 1 || arguments[1] === undefined ? buffers.none() : arguments[1];
var buffer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : buffers.none();
var matcher = arguments[2];

@@ -155,2 +161,3 @@

take: chan.take,
flush: chan.flush,
close: function close() {

@@ -163,2 +170,16 @@ if (!chan.__closed__) {

};
}
export function stdChannel(subscribe) {
var chan = eventChannel(subscribe);
return _extends({}, chan, {
take: function take(cb, matcher) {
if (arguments.length > 1) {
check(matcher, is.func, 'channel.take\'s matcher argument must be a function');
cb[MATCH] = matcher;
}
chan.take(cb);
}
});
}

@@ -19,2 +19,3 @@ 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 CANCELLED = 'CANCELLED';
var FLUSH = 'FLUSH';

@@ -27,25 +28,15 @@ var effect = function effect(type, payload) {

export function take(channel, pattern) {
if (arguments.length >= 2) {
check(channel, is.notUndef, 'take(channel, pattern): channel is undefined');
check(channel, is.take, 'take(channel, pattern): argument ' + String(channel) + ' is not a valid channel (channel argument must have a take method)');
check(pattern, is.notUndef, 'take(channel, pattern): pattern is undefined');
check(pattern, is.pattern, 'take(channel, pattern): argument ' + String(pattern) + ' is not a valid pattern (pattern must be String | Function: a => boolean | Array<String>)');
} else if (arguments.length === 1) {
check(channel, is.notUndef, 'take(patternOrChannel): undefined argument');
if (!is.take(channel)) {
if (is.pattern(channel)) {
pattern = channel;
channel = null;
} else {
throw new Error('take(patternOrChannel): argument ' + String(channel) + ' is not valid channel or a valid pattern');
}
} else {
pattern = '*';
}
} else {
pattern = '*';
export function take() {
var patternOrChannel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '*';
if (arguments.length) {
check(arguments[0], is.notUndef, 'take(patternOrChannel): patternOrChannel is undefined');
}
return effect(TAKE, { channel: channel, pattern: pattern });
if (is.pattern(patternOrChannel)) {
return effect(TAKE, { pattern: patternOrChannel });
}
if (is.channel(patternOrChannel)) {
return effect(TAKE, { channel: patternOrChannel });
}
throw new Error('take(patternOrChannel): argument ' + String(patternOrChannel) + ' is not valid channel or a valid pattern');
}

@@ -62,3 +53,3 @@

check(channel, is.notUndef, 'put(channel, action): argument channel is undefined');
check(channel, is.put, 'put(channel, action): argument ' + channel + ' is not a valid channel (channel argument must have a put method)');
check(channel, is.channel, 'put(channel, action): argument ' + channel + ' is not a valid channel');
check(action, is.notUndef, 'put(channel, action): argument action is undefined');

@@ -113,3 +104,3 @@ } else {

export function apply(context, fn) {
var args = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];
var args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];

@@ -175,3 +166,3 @@ return effect(CALL, getFnCallDesc('apply', { context: context, fn: fn }, args));

} else {
check(select, is.notUndef, 'select(selector,[...]): argument selector is undefined');
check(selector, is.notUndef, 'select(selector,[...]): argument selector is undefined');
check(selector, is.func, 'select(selector,[...]): argument ' + selector + ' is not a function');

@@ -198,2 +189,7 @@ }

export function flush(channel) {
check(channel, is.channel, 'flush(channel): argument ' + channel + ' is not valid channel');
return effect(FLUSH, channel);
}
export var asEffect = {

@@ -232,3 +228,6 @@ take: function take(effect) {

return effect && effect[IO] && effect[CANCELLED];
},
flush: function flush(effect) {
return effect && effect[IO] && effect[FLUSH];
}
};

@@ -6,3 +6,3 @@ import { is, check } from './utils';

export default function sagaMiddlewareFactory() {
var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

@@ -23,2 +23,6 @@ var runSagaDynamically = void 0;

if (options.onerror && !is.func(options.onerror)) {
throw new Error('`options.onerror` passed to the Saga middleware is not a function!');
}
function sagaMiddleware(_ref) {

@@ -25,0 +29,0 @@ var getState = _ref.getState;

@@ -10,3 +10,3 @@ function _defineEnumerableProperties(obj, descs) { for (var key in descs) { var desc = descs[key]; desc.configurable = desc.enumerable = true; if ("value" in desc) desc.writable = true; Object.defineProperty(obj, key, desc); } return obj; }

import { asEffect } from './io';
import { eventChannel, isEnd } from './channel';
import { stdChannel as _stdChannel, eventChannel, isEnd } from './channel';
import { buffers } from './buffers';

@@ -134,11 +134,61 @@

function createTaskIterator(_ref) {
var context = _ref.context;
var fn = _ref.fn;
var args = _ref.args;
if (is.iterator(fn)) {
return fn;
}
// catch synchronous failures; see #152 and #441
var result = void 0,
error = void 0;
try {
result = fn.apply(context, args);
} catch (err) {
error = err;
}
// i.e. a generator function returns an iterator
if (is.iterator(result)) {
return result;
}
// do not bubble up synchronous failures for detached forks
// instead create a failed task. See #152 and #441
return error ? makeIterator(function () {
throw error;
}) : makeIterator(function () {
var pc = void 0;
var eff = { done: false, value: result };
var ret = function ret(value) {
return { done: true, value: value };
};
return function (arg) {
if (!pc) {
pc = true;
return eff;
} else {
return ret(arg);
}
};
}());
}
function wrapHelper(helper) {
return {
fn: helper
};
}
export default function proc(iterator) {
var subscribe = arguments.length <= 1 || arguments[1] === undefined ? function () {
var subscribe = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {
return noop;
} : arguments[1];
var dispatch = arguments.length <= 2 || arguments[2] === undefined ? noop : arguments[2];
var getState = arguments.length <= 3 || arguments[3] === undefined ? noop : arguments[3];
var options = arguments.length <= 4 || arguments[4] === undefined ? {} : arguments[4];
var parentEffectId = arguments.length <= 5 || arguments[5] === undefined ? 0 : arguments[5];
var name = arguments.length <= 6 || arguments[6] === undefined ? 'anonymous' : arguments[6];
};
var dispatch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : noop;
var getState = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : noop;
var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
var parentEffectId = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;
var name = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 'anonymous';
var cont = arguments[7];

@@ -150,5 +200,6 @@

var logger = options.logger;
var onError = options.onError;
var log = logger || _log;
var stdChannel = eventChannel(subscribe);
var stdChannel = _stdChannel(subscribe);
/**

@@ -287,2 +338,5 @@ Tracks the current effect cancellation

log('error', 'uncaught', result.sagaStack || result.stack);
if (result instanceof Error && onError) {
onError(result);
}
}

@@ -301,3 +355,3 @@ iterator._error = result;

function runEffect(effect, parentEffectId) {
var label = arguments.length <= 2 || arguments[2] === undefined ? '' : arguments[2];
var label = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
var cb = arguments[3];

@@ -370,6 +424,6 @@

// Non declarative effect
is.promise(effect) ? resolvePromise(effect, currCb) : is.iterator(effect) ? resolveIterator(effect, effectId, name, currCb)
is.promise(effect) ? resolvePromise(effect, currCb) : is.helper(effect) ? runForkEffect(wrapHelper(effect), effectId, currCb) : is.iterator(effect) ? resolveIterator(effect, effectId, name, currCb)
// declarative effects
: is.array(effect) ? runParallelEffect(effect, effectId, currCb) : is.notUndef(data = asEffect.take(effect)) ? runTakeEffect(data, currCb) : is.notUndef(data = asEffect.put(effect)) ? runPutEffect(data, currCb) : is.notUndef(data = asEffect.race(effect)) ? runRaceEffect(data, effectId, currCb) : is.notUndef(data = asEffect.call(effect)) ? runCallEffect(data, effectId, currCb) : is.notUndef(data = asEffect.cps(effect)) ? runCPSEffect(data, currCb) : is.notUndef(data = asEffect.fork(effect)) ? runForkEffect(data, effectId, currCb) : is.notUndef(data = asEffect.join(effect)) ? runJoinEffect(data, currCb) : is.notUndef(data = asEffect.cancel(effect)) ? runCancelEffect(data, currCb) : is.notUndef(data = asEffect.select(effect)) ? runSelectEffect(data, currCb) : is.notUndef(data = asEffect.actionChannel(effect)) ? runChannelEffect(data, currCb) : is.notUndef(data = asEffect.cancelled(effect)) ? runCancelledEffect(data, currCb) : /* anything else returned as is */currCb(effect)
: is.array(effect) ? runParallelEffect(effect, effectId, currCb) : is.notUndef(data = asEffect.take(effect)) ? runTakeEffect(data, currCb) : is.notUndef(data = asEffect.put(effect)) ? runPutEffect(data, currCb) : is.notUndef(data = asEffect.race(effect)) ? runRaceEffect(data, effectId, currCb) : is.notUndef(data = asEffect.call(effect)) ? runCallEffect(data, effectId, currCb) : is.notUndef(data = asEffect.cps(effect)) ? runCPSEffect(data, currCb) : is.notUndef(data = asEffect.fork(effect)) ? runForkEffect(data, effectId, currCb) : is.notUndef(data = asEffect.join(effect)) ? runJoinEffect(data, currCb) : is.notUndef(data = asEffect.cancel(effect)) ? runCancelEffect(data, currCb) : is.notUndef(data = asEffect.select(effect)) ? runSelectEffect(data, currCb) : is.notUndef(data = asEffect.actionChannel(effect)) ? runChannelEffect(data, currCb) : is.notUndef(data = asEffect.flush(effect)) ? runFlushEffect(data, currCb) : is.notUndef(data = asEffect.cancelled(effect)) ? runCancelledEffect(data, currCb) : /* anything else returned as is */currCb(effect)
);

@@ -392,6 +446,6 @@ }

function runTakeEffect(_ref, cb) {
var channel = _ref.channel;
var pattern = _ref.pattern;
var maybe = _ref.maybe;
function runTakeEffect(_ref2, cb) {
var channel = _ref2.channel;
var pattern = _ref2.pattern;
var maybe = _ref2.maybe;

@@ -410,6 +464,6 @@ channel = channel || stdChannel;

function runPutEffect(_ref2, cb) {
var channel = _ref2.channel;
var action = _ref2.action;
var sync = _ref2.sync;
function runPutEffect(_ref3, cb) {
var channel = _ref3.channel;
var action = _ref3.action;
var sync = _ref3.sync;

@@ -439,6 +493,6 @@ /*

function runCallEffect(_ref3, effectId, cb) {
var context = _ref3.context;
var fn = _ref3.fn;
var args = _ref3.args;
function runCallEffect(_ref4, effectId, cb) {
var context = _ref4.context;
var fn = _ref4.fn;
var args = _ref4.args;

@@ -455,6 +509,6 @@ var result = void 0;

function runCPSEffect(_ref4, cb) {
var context = _ref4.context;
var fn = _ref4.fn;
var args = _ref4.args;
function runCPSEffect(_ref5, cb) {
var context = _ref5.context;
var fn = _ref5.fn;
var args = _ref5.args;

@@ -474,59 +528,21 @@ // CPS (ie node style functions) can define their own cancellation logic

function runForkEffect(_ref5, effectId, cb) {
var context = _ref5.context;
var fn = _ref5.fn;
var args = _ref5.args;
var detached = _ref5.detached;
function runForkEffect(_ref6, effectId, cb) {
var context = _ref6.context;
var fn = _ref6.fn;
var args = _ref6.args;
var detached = _ref6.detached;
var result = void 0,
error = void 0,
_iterator = void 0;
var taskIterator = createTaskIterator({ context: context, fn: fn, args: args });
// we run the function, next we'll check if this is a generator function
// (generator is a function that returns an iterator)
asap.suspend();
var task = proc(taskIterator, subscribe, dispatch, getState, options, effectId, fn.name, detached ? null : noop);
// catch synchronous failures; see #152 and #441
try {
result = fn.apply(context, args);
} catch (err) {
error = err;
}
// A generator function: i.e. returns an iterator
if (is.iterator(result)) {
_iterator = result;
}
// do not bubble up synchronous failures for detached forks
// instead create a failed task. See #152 and #441
else {
_iterator = error ? makeIterator(function () {
throw error;
}) : makeIterator(function () {
var pc = void 0;
var eff = { done: false, value: result };
var ret = function ret(value) {
return { done: true, value: value };
};
return function (arg) {
if (!pc) {
pc = true;
return eff;
} else {
return ret(arg);
}
};
}());
}
asap.suspend();
var task = proc(_iterator, subscribe, dispatch, getState, options, effectId, fn.name, detached ? null : noop);
if (detached) {
cb(task);
} else {
if (_iterator._isRunning) {
if (taskIterator._isRunning) {
taskQueue.addTask(task);
cb(task);
} else if (_iterator._error) {
taskQueue.abort(_iterator._error);
} else if (taskIterator._error) {
taskQueue.abort(taskIterator._error);
} else {

@@ -649,5 +665,5 @@ cb(task);

function runSelectEffect(_ref6, cb) {
var selector = _ref6.selector;
var args = _ref6.args;
function runSelectEffect(_ref7, cb) {
var selector = _ref7.selector;
var args = _ref7.args;

@@ -662,5 +678,5 @@ try {

function runChannelEffect(_ref7, cb) {
var pattern = _ref7.pattern;
var buffer = _ref7.buffer;
function runChannelEffect(_ref8, cb) {
var pattern = _ref8.pattern;
var buffer = _ref8.buffer;

@@ -676,7 +692,11 @@ var match = matcher(pattern);

function runFlushEffect(channel, cb) {
channel.flush(cb);
}
function newTask(id, name, iterator, cont) {
var _done, _ref8, _mutatorMap;
var _done, _ref9, _mutatorMap;
iterator._deferredEnd = null;
return _ref8 = {}, _defineProperty(_ref8, TASK, true), _defineProperty(_ref8, 'id', id), _defineProperty(_ref8, 'name', name), _done = 'done', _mutatorMap = {}, _mutatorMap[_done] = _mutatorMap[_done] || {}, _mutatorMap[_done].get = function () {
return _ref9 = {}, _defineProperty(_ref9, TASK, true), _defineProperty(_ref9, 'id', id), _defineProperty(_ref9, 'name', name), _done = 'done', _mutatorMap = {}, _mutatorMap[_done] = _mutatorMap[_done] || {}, _mutatorMap[_done].get = function () {
if (iterator._deferredEnd) {

@@ -692,14 +712,14 @@ return iterator._deferredEnd.promise;

}
}, _defineProperty(_ref8, 'cont', cont), _defineProperty(_ref8, 'joiners', []), _defineProperty(_ref8, 'cancel', cancel), _defineProperty(_ref8, 'isRunning', function isRunning() {
}, _defineProperty(_ref9, 'cont', cont), _defineProperty(_ref9, 'joiners', []), _defineProperty(_ref9, 'cancel', cancel), _defineProperty(_ref9, 'isRunning', function isRunning() {
return iterator._isRunning;
}), _defineProperty(_ref8, 'isCancelled', function isCancelled() {
}), _defineProperty(_ref9, 'isCancelled', function isCancelled() {
return iterator._isCancelled;
}), _defineProperty(_ref8, 'isAborted', function isAborted() {
}), _defineProperty(_ref9, 'isAborted', function isAborted() {
return iterator._isAborted;
}), _defineProperty(_ref8, 'result', function result() {
}), _defineProperty(_ref9, 'result', function result() {
return iterator._result;
}), _defineProperty(_ref8, 'error', function error() {
}), _defineProperty(_ref9, 'error', function error() {
return iterator._error;
}), _defineEnumerableProperties(_ref8, _mutatorMap), _ref8;
}), _defineEnumerableProperties(_ref9, _mutatorMap), _ref9;
}
}
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"); } }; }();
import { END } from './channel';
import { makeIterator } from './utils';
import { take, fork, cancel } from './io';
import { makeIterator, delay } from './utils';
import { take, fork, cancel, actionChannel, call } from './io';
import { buffers } from './buffers';

@@ -11,3 +12,3 @@ var done = { done: true, value: undefined };

function fsmIterator(fsm, q0) {
var name = arguments.length <= 2 || arguments[2] === undefined ? 'iterator' : arguments[2];
var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'iterator';

@@ -44,3 +45,3 @@ var updateState = void 0,

return next(null, error);
}, name);
}, name, true);
}

@@ -116,2 +117,42 @@

}, 'q1', 'takeLatest(' + safeName(pattern) + ', ' + worker.name + ')');
}
export function throttle(delayLength, pattern, worker) {
for (var _len3 = arguments.length, args = Array(_len3 > 3 ? _len3 - 3 : 0), _key3 = 3; _key3 < _len3; _key3++) {
args[_key3 - 3] = arguments[_key3];
}
var action = void 0,
channel = void 0;
var yActionChannel = { done: false, value: actionChannel(pattern, buffers.sliding(1)) };
var yTake = function yTake() {
return { done: false, value: take(channel, pattern) };
};
var yFork = function yFork(ac) {
return { done: false, value: fork.apply(undefined, [worker].concat(args, [ac])) };
};
var yDelay = { done: false, value: call(delay, delayLength) };
var setAction = function setAction(ac) {
return action = ac;
};
var setChannel = function setChannel(ch) {
return channel = ch;
};
return fsmIterator({
q1: function q1() {
return ['q2', yActionChannel, setChannel];
},
q2: function q2() {
return ['q3', yTake(), setAction];
},
q3: function q3() {
return action === END ? [qEnd] : ['q4', yFork(action)];
},
q4: function q4() {
return ['q2', yDelay];
}
}, 'q1', 'throttle(' + safeName(pattern) + ', ' + worker.name + ')');
}
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 _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

@@ -11,2 +11,3 @@ 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; }

export var TASK = sym('TASK');
export var HELPER = sym('HELPER');
export var MATCH = sym('MATCH');

@@ -56,8 +57,2 @@ export var CANCEL = sym('cancelPromise');

},
take: function take(ch) {
return ch && is.func(ch.take);
},
put: function put(ch) {
return ch && is.func(ch.put);
},
observable: function observable(ob) {

@@ -71,2 +66,8 @@ return ob && is.func(ob.subscribe);

return pat && (typeof pat === 'string' || (typeof pat === 'undefined' ? 'undefined' : _typeof(pat)) === 'symbol' || is.func(pat) || is.array(pat));
},
channel: function channel(ch) {
return ch && is.func(ch.take) && is.func(ch.close);
},
helper: function helper(it) {
return it && it[HELPER];
}

@@ -83,3 +84,3 @@ };

export function deferred() {
var props = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

@@ -104,3 +105,3 @@ var def = _extends({}, props);

export function delay(ms) {
var val = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];
var val = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;

@@ -144,3 +145,3 @@ var timeoutId = void 0;

export function autoInc() {
var seed = arguments.length <= 0 || arguments[0] === undefined ? 0 : arguments[0];
var seed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;

@@ -159,6 +160,11 @@ return function () {

export function makeIterator(next) {
var thro = arguments.length <= 1 || arguments[1] === undefined ? kThrow : arguments[1];
var name = arguments.length <= 2 || arguments[2] === undefined ? '' : arguments[2];
var thro = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : kThrow;
var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
var isHelper = arguments[3];
var iterator = { name: name, next: next, throw: thro, return: kReturn };
if (isHelper) {
iterator[HELPER] = true;
}
if (typeof Symbol !== 'undefined') {

@@ -182,3 +188,3 @@ iterator[Symbol.iterator] = function () {

} else {
console[level].call(console, message, error);
console[level](message, error);
}

@@ -188,3 +194,3 @@ }

export var internalErr = function internalErr(err) {
return new Error('\n redux-saga: Error checking hooks detected an inconsisten state. This is likely a bug\n in redux-saga code and not yours. Thanks for reporting this in the project\'s github repo.\n Error: ' + err + '\n');
return new Error('\n redux-saga: Error checking hooks detected an inconsistent state. This is likely a bug\n in redux-saga code and not yours. Thanks for reporting this in the project\'s github repo.\n Error: ' + err + '\n');
};

@@ -92,2 +92,8 @@ 'use strict';

}
});
Object.defineProperty(exports, 'flush', {
enumerable: true,
get: function get() {
return _io.flush;
}
});

@@ -6,3 +6,3 @@ 'use strict';

});
exports.utils = exports.effects = exports.CANCEL = exports.delay = exports.takeLatest = exports.takeEvery = exports.buffers = exports.channel = exports.eventChannel = exports.END = exports.runSaga = undefined;
exports.utils = exports.effects = exports.CANCEL = exports.delay = exports.throttle = exports.takeLatest = exports.takeEvery = exports.buffers = exports.channel = exports.eventChannel = exports.END = exports.runSaga = undefined;

@@ -62,2 +62,8 @@ var _runSaga = require('./internal/runSaga');

});
Object.defineProperty(exports, 'throttle', {
enumerable: true,
get: function get() {
return _sagaHelpers.throttle;
}
});

@@ -64,0 +70,0 @@ var _utils = require('./internal/utils');

@@ -15,2 +15,3 @@ 'use strict';

var ON_OVERFLOW_SLIDE = 3;
var ON_OVERFLOW_EXPAND = 4;

@@ -20,3 +21,3 @@ var zeroBuffer = { isEmpty: _utils.kTrue, put: _utils.noop, take: _utils.noop };

function ringBuffer() {
var limit = arguments.length <= 0 || arguments[0] === undefined ? 10 : arguments[0];
var limit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;
var overflowAction = arguments[1];

@@ -28,2 +29,27 @@

var popIndex = 0;
var push = function push(it) {
arr[pushIndex] = it;
pushIndex = (pushIndex + 1) % limit;
length++;
};
var take = function take() {
if (length != 0) {
var it = arr[popIndex];
arr[popIndex] = null;
length--;
popIndex = (popIndex + 1) % limit;
return it;
}
};
var flush = function flush() {
var items = [];
while (length) {
items.push(take());
}
return items;
};
return {

@@ -35,6 +61,5 @@ isEmpty: function isEmpty() {

if (length < limit) {
arr[pushIndex] = it;
pushIndex = (pushIndex + 1) % limit;
length++;
push(it);
} else {
var doubledLimit = void 0;
switch (overflowAction) {

@@ -48,2 +73,16 @@ case ON_OVERFLOW_THROW:

break;
case ON_OVERFLOW_EXPAND:
doubledLimit = 2 * limit;
arr = flush();
length = arr.length;
pushIndex = arr.length;
popIndex = 0;
arr.length = doubledLimit;
limit = doubledLimit;
push(it);
break;
default:

@@ -54,11 +93,3 @@ // DROP

},
take: function take() {
if (length != 0) {
var it = arr[popIndex];
arr[popIndex] = null;
length--;
popIndex = (popIndex + 1) % limit;
return it;
}
}
take: take, flush: flush
};

@@ -79,3 +110,6 @@ }

return ringBuffer(limit, ON_OVERFLOW_SLIDE);
},
expanding: function expanding(limit) {
return ringBuffer(limit, ON_OVERFLOW_EXPAND);
}
};

@@ -7,5 +7,9 @@ 'use strict';

exports.UNDEFINED_INPUT_ERROR = exports.INVALID_BUFFER = exports.isEnd = exports.END = 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; };
exports.emitter = emitter;
exports.channel = channel;
exports.eventChannel = eventChannel;
exports.stdChannel = stdChannel;

@@ -52,11 +56,9 @@ var _utils = require('./utils');

function channel(buffer) {
function channel() {
var buffer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _buffers.buffers.fixed();
var closed = false;
var takers = [];
if (arguments.length > 0) {
(0, _utils.check)(buffer, _utils.is.buffer, INVALID_BUFFER);
} else {
buffer = _buffers.buffers.fixed();
}
(0, _utils.check)(buffer, _utils.is.buffer, INVALID_BUFFER);

@@ -75,13 +77,13 @@ function checkForbiddenStates() {

(0, _utils.check)(input, _utils.is.notUndef, UNDEFINED_INPUT_ERROR);
if (!closed) {
if (takers.length) {
for (var i = 0; i < takers.length; i++) {
var cb = takers[i];
if (!cb[_utils.MATCH] || cb[_utils.MATCH](input)) {
takers.splice(i, 1);
return cb(input);
}
}
} else {
buffer.put(input);
if (closed) {
return;
}
if (!takers.length) {
return buffer.put(input);
}
for (var i = 0; i < takers.length; i++) {
var cb = takers[i];
if (!cb[_utils.MATCH] || cb[_utils.MATCH](input)) {
takers.splice(i, 1);
return cb(input);
}

@@ -91,9 +93,6 @@ }

function take(cb, matcher) {
function take(cb) {
checkForbiddenStates();
(0, _utils.check)(cb, _utils.is.func, 'channel.take\'s callback must be a function');
if (arguments.length > 1) {
(0, _utils.check)(matcher, _utils.is.func, 'channel.take\'s matcher argument must be a function');
cb[_utils.MATCH] = matcher;
}
if (closed && buffer.isEmpty()) {

@@ -111,2 +110,12 @@ cb(END);

function flush(cb) {
checkForbiddenStates(); // TODO: check if some new state should be forbidden now
(0, _utils.check)(cb, _utils.is.func, 'channel.flush\' callback must be a function');
if (closed && buffer.isEmpty()) {
cb(END);
return;
}
cb(buffer.flush());
}
function close() {

@@ -122,3 +131,2 @@ checkForbiddenStates();

}
takers = [];
}

@@ -128,3 +136,3 @@ }

return { take: take, put: put, close: close,
return { take: take, put: put, flush: flush, close: close,
get __takers__() {

@@ -140,3 +148,3 @@ return takers;

function eventChannel(subscribe) {
var buffer = arguments.length <= 1 || arguments[1] === undefined ? _buffers.buffers.none() : arguments[1];
var buffer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _buffers.buffers.none();
var matcher = arguments[2];

@@ -167,2 +175,3 @@

take: chan.take,
flush: chan.flush,
close: function close() {

@@ -175,2 +184,16 @@ if (!chan.__closed__) {

};
}
function stdChannel(subscribe) {
var chan = eventChannel(subscribe);
return _extends({}, chan, {
take: function take(cb, matcher) {
if (arguments.length > 1) {
(0, _utils.check)(matcher, _utils.is.func, 'channel.take\'s matcher argument must be a function');
cb[_utils.MATCH] = matcher;
}
chan.take(cb);
}
});
}

@@ -24,2 +24,3 @@ 'use strict';

exports.cancelled = cancelled;
exports.flush = flush;

@@ -42,2 +43,3 @@ var _utils = require('./utils');

var CANCELLED = 'CANCELLED';
var FLUSH = 'FLUSH';

@@ -50,25 +52,15 @@ var effect = function effect(type, payload) {

function take(channel, pattern) {
if (arguments.length >= 2) {
(0, _utils.check)(channel, _utils.is.notUndef, 'take(channel, pattern): channel is undefined');
(0, _utils.check)(channel, _utils.is.take, 'take(channel, pattern): argument ' + String(channel) + ' is not a valid channel (channel argument must have a take method)');
(0, _utils.check)(pattern, _utils.is.notUndef, 'take(channel, pattern): pattern is undefined');
(0, _utils.check)(pattern, _utils.is.pattern, 'take(channel, pattern): argument ' + String(pattern) + ' is not a valid pattern (pattern must be String | Function: a => boolean | Array<String>)');
} else if (arguments.length === 1) {
(0, _utils.check)(channel, _utils.is.notUndef, 'take(patternOrChannel): undefined argument');
if (!_utils.is.take(channel)) {
if (_utils.is.pattern(channel)) {
pattern = channel;
channel = null;
} else {
throw new Error('take(patternOrChannel): argument ' + String(channel) + ' is not valid channel or a valid pattern');
}
} else {
pattern = '*';
}
} else {
pattern = '*';
function take() {
var patternOrChannel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '*';
if (arguments.length) {
(0, _utils.check)(arguments[0], _utils.is.notUndef, 'take(patternOrChannel): patternOrChannel is undefined');
}
return effect(TAKE, { channel: channel, pattern: pattern });
if (_utils.is.pattern(patternOrChannel)) {
return effect(TAKE, { pattern: patternOrChannel });
}
if (_utils.is.channel(patternOrChannel)) {
return effect(TAKE, { channel: patternOrChannel });
}
throw new Error('take(patternOrChannel): argument ' + String(patternOrChannel) + ' is not valid channel or a valid pattern');
}

@@ -85,3 +77,3 @@

(0, _utils.check)(channel, _utils.is.notUndef, 'put(channel, action): argument channel is undefined');
(0, _utils.check)(channel, _utils.is.put, 'put(channel, action): argument ' + channel + ' is not a valid channel (channel argument must have a put method)');
(0, _utils.check)(channel, _utils.is.channel, 'put(channel, action): argument ' + channel + ' is not a valid channel');
(0, _utils.check)(action, _utils.is.notUndef, 'put(channel, action): argument action is undefined');

@@ -136,3 +128,3 @@ } else {

function apply(context, fn) {
var args = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];
var args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];

@@ -198,3 +190,3 @@ return effect(CALL, getFnCallDesc('apply', { context: context, fn: fn }, args));

} else {
(0, _utils.check)(select, _utils.is.notUndef, 'select(selector,[...]): argument selector is undefined');
(0, _utils.check)(selector, _utils.is.notUndef, 'select(selector,[...]): argument selector is undefined');
(0, _utils.check)(selector, _utils.is.func, 'select(selector,[...]): argument ' + selector + ' is not a function');

@@ -221,2 +213,7 @@ }

function flush(channel) {
(0, _utils.check)(channel, _utils.is.channel, 'flush(channel): argument ' + channel + ' is not valid channel');
return effect(FLUSH, channel);
}
var asEffect = exports.asEffect = {

@@ -255,3 +252,6 @@ take: function take(effect) {

return effect && effect[IO] && effect[CANCELLED];
},
flush: function flush(effect) {
return effect && effect[IO] && effect[FLUSH];
}
};

@@ -19,3 +19,3 @@ 'use strict';

function sagaMiddlewareFactory() {
var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

@@ -36,2 +36,6 @@ var runSagaDynamically = void 0;

if (options.onerror && !_utils.is.func(options.onerror)) {
throw new Error('`options.onerror` passed to the Saga middleware is not a function!');
}
function sagaMiddleware(_ref) {

@@ -38,0 +42,0 @@ var getState = _ref.getState;

@@ -149,11 +149,61 @@ 'use strict';

function createTaskIterator(_ref) {
var context = _ref.context;
var fn = _ref.fn;
var args = _ref.args;
if (_utils.is.iterator(fn)) {
return fn;
}
// catch synchronous failures; see #152 and #441
var result = void 0,
error = void 0;
try {
result = fn.apply(context, args);
} catch (err) {
error = err;
}
// i.e. a generator function returns an iterator
if (_utils.is.iterator(result)) {
return result;
}
// do not bubble up synchronous failures for detached forks
// instead create a failed task. See #152 and #441
return error ? (0, _utils.makeIterator)(function () {
throw error;
}) : (0, _utils.makeIterator)(function () {
var pc = void 0;
var eff = { done: false, value: result };
var ret = function ret(value) {
return { done: true, value: value };
};
return function (arg) {
if (!pc) {
pc = true;
return eff;
} else {
return ret(arg);
}
};
}());
}
function wrapHelper(helper) {
return {
fn: helper
};
}
function proc(iterator) {
var subscribe = arguments.length <= 1 || arguments[1] === undefined ? function () {
var subscribe = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {
return _utils.noop;
} : arguments[1];
var dispatch = arguments.length <= 2 || arguments[2] === undefined ? _utils.noop : arguments[2];
var getState = arguments.length <= 3 || arguments[3] === undefined ? _utils.noop : arguments[3];
var options = arguments.length <= 4 || arguments[4] === undefined ? {} : arguments[4];
var parentEffectId = arguments.length <= 5 || arguments[5] === undefined ? 0 : arguments[5];
var name = arguments.length <= 6 || arguments[6] === undefined ? 'anonymous' : arguments[6];
};
var dispatch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _utils.noop;
var getState = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _utils.noop;
var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
var parentEffectId = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;
var name = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 'anonymous';
var cont = arguments[7];

@@ -165,5 +215,6 @@

var logger = options.logger;
var onError = options.onError;
var log = logger || _utils.log;
var stdChannel = (0, _channel.eventChannel)(subscribe);
var stdChannel = (0, _channel.stdChannel)(subscribe);
/**

@@ -302,2 +353,5 @@ Tracks the current effect cancellation

log('error', 'uncaught', result.sagaStack || result.stack);
if (result instanceof Error && onError) {
onError(result);
}
}

@@ -316,3 +370,3 @@ iterator._error = result;

function runEffect(effect, parentEffectId) {
var label = arguments.length <= 2 || arguments[2] === undefined ? '' : arguments[2];
var label = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
var cb = arguments[3];

@@ -385,6 +439,6 @@

// Non declarative effect
_utils.is.promise(effect) ? resolvePromise(effect, currCb) : _utils.is.iterator(effect) ? resolveIterator(effect, effectId, name, currCb)
_utils.is.promise(effect) ? resolvePromise(effect, currCb) : _utils.is.helper(effect) ? runForkEffect(wrapHelper(effect), effectId, currCb) : _utils.is.iterator(effect) ? resolveIterator(effect, effectId, name, currCb)
// declarative effects
: _utils.is.array(effect) ? runParallelEffect(effect, effectId, currCb) : _utils.is.notUndef(data = _io.asEffect.take(effect)) ? runTakeEffect(data, currCb) : _utils.is.notUndef(data = _io.asEffect.put(effect)) ? runPutEffect(data, currCb) : _utils.is.notUndef(data = _io.asEffect.race(effect)) ? runRaceEffect(data, effectId, currCb) : _utils.is.notUndef(data = _io.asEffect.call(effect)) ? runCallEffect(data, effectId, currCb) : _utils.is.notUndef(data = _io.asEffect.cps(effect)) ? runCPSEffect(data, currCb) : _utils.is.notUndef(data = _io.asEffect.fork(effect)) ? runForkEffect(data, effectId, currCb) : _utils.is.notUndef(data = _io.asEffect.join(effect)) ? runJoinEffect(data, currCb) : _utils.is.notUndef(data = _io.asEffect.cancel(effect)) ? runCancelEffect(data, currCb) : _utils.is.notUndef(data = _io.asEffect.select(effect)) ? runSelectEffect(data, currCb) : _utils.is.notUndef(data = _io.asEffect.actionChannel(effect)) ? runChannelEffect(data, currCb) : _utils.is.notUndef(data = _io.asEffect.cancelled(effect)) ? runCancelledEffect(data, currCb) : /* anything else returned as is */currCb(effect)
: _utils.is.array(effect) ? runParallelEffect(effect, effectId, currCb) : _utils.is.notUndef(data = _io.asEffect.take(effect)) ? runTakeEffect(data, currCb) : _utils.is.notUndef(data = _io.asEffect.put(effect)) ? runPutEffect(data, currCb) : _utils.is.notUndef(data = _io.asEffect.race(effect)) ? runRaceEffect(data, effectId, currCb) : _utils.is.notUndef(data = _io.asEffect.call(effect)) ? runCallEffect(data, effectId, currCb) : _utils.is.notUndef(data = _io.asEffect.cps(effect)) ? runCPSEffect(data, currCb) : _utils.is.notUndef(data = _io.asEffect.fork(effect)) ? runForkEffect(data, effectId, currCb) : _utils.is.notUndef(data = _io.asEffect.join(effect)) ? runJoinEffect(data, currCb) : _utils.is.notUndef(data = _io.asEffect.cancel(effect)) ? runCancelEffect(data, currCb) : _utils.is.notUndef(data = _io.asEffect.select(effect)) ? runSelectEffect(data, currCb) : _utils.is.notUndef(data = _io.asEffect.actionChannel(effect)) ? runChannelEffect(data, currCb) : _utils.is.notUndef(data = _io.asEffect.flush(effect)) ? runFlushEffect(data, currCb) : _utils.is.notUndef(data = _io.asEffect.cancelled(effect)) ? runCancelledEffect(data, currCb) : /* anything else returned as is */currCb(effect)
);

@@ -407,6 +461,6 @@ }

function runTakeEffect(_ref, cb) {
var channel = _ref.channel;
var pattern = _ref.pattern;
var maybe = _ref.maybe;
function runTakeEffect(_ref2, cb) {
var channel = _ref2.channel;
var pattern = _ref2.pattern;
var maybe = _ref2.maybe;

@@ -425,6 +479,6 @@ channel = channel || stdChannel;

function runPutEffect(_ref2, cb) {
var channel = _ref2.channel;
var action = _ref2.action;
var sync = _ref2.sync;
function runPutEffect(_ref3, cb) {
var channel = _ref3.channel;
var action = _ref3.action;
var sync = _ref3.sync;

@@ -454,6 +508,6 @@ /*

function runCallEffect(_ref3, effectId, cb) {
var context = _ref3.context;
var fn = _ref3.fn;
var args = _ref3.args;
function runCallEffect(_ref4, effectId, cb) {
var context = _ref4.context;
var fn = _ref4.fn;
var args = _ref4.args;

@@ -470,6 +524,6 @@ var result = void 0;

function runCPSEffect(_ref4, cb) {
var context = _ref4.context;
var fn = _ref4.fn;
var args = _ref4.args;
function runCPSEffect(_ref5, cb) {
var context = _ref5.context;
var fn = _ref5.fn;
var args = _ref5.args;

@@ -489,59 +543,21 @@ // CPS (ie node style functions) can define their own cancellation logic

function runForkEffect(_ref5, effectId, cb) {
var context = _ref5.context;
var fn = _ref5.fn;
var args = _ref5.args;
var detached = _ref5.detached;
function runForkEffect(_ref6, effectId, cb) {
var context = _ref6.context;
var fn = _ref6.fn;
var args = _ref6.args;
var detached = _ref6.detached;
var result = void 0,
error = void 0,
_iterator = void 0;
var taskIterator = createTaskIterator({ context: context, fn: fn, args: args });
// we run the function, next we'll check if this is a generator function
// (generator is a function that returns an iterator)
_asap2.default.suspend();
var task = proc(taskIterator, subscribe, dispatch, getState, options, effectId, fn.name, detached ? null : _utils.noop);
// catch synchronous failures; see #152 and #441
try {
result = fn.apply(context, args);
} catch (err) {
error = err;
}
// A generator function: i.e. returns an iterator
if (_utils.is.iterator(result)) {
_iterator = result;
}
// do not bubble up synchronous failures for detached forks
// instead create a failed task. See #152 and #441
else {
_iterator = error ? (0, _utils.makeIterator)(function () {
throw error;
}) : (0, _utils.makeIterator)(function () {
var pc = void 0;
var eff = { done: false, value: result };
var ret = function ret(value) {
return { done: true, value: value };
};
return function (arg) {
if (!pc) {
pc = true;
return eff;
} else {
return ret(arg);
}
};
}());
}
_asap2.default.suspend();
var task = proc(_iterator, subscribe, dispatch, getState, options, effectId, fn.name, detached ? null : _utils.noop);
if (detached) {
cb(task);
} else {
if (_iterator._isRunning) {
if (taskIterator._isRunning) {
taskQueue.addTask(task);
cb(task);
} else if (_iterator._error) {
taskQueue.abort(_iterator._error);
} else if (taskIterator._error) {
taskQueue.abort(taskIterator._error);
} else {

@@ -664,5 +680,5 @@ cb(task);

function runSelectEffect(_ref6, cb) {
var selector = _ref6.selector;
var args = _ref6.args;
function runSelectEffect(_ref7, cb) {
var selector = _ref7.selector;
var args = _ref7.args;

@@ -677,5 +693,5 @@ try {

function runChannelEffect(_ref7, cb) {
var pattern = _ref7.pattern;
var buffer = _ref7.buffer;
function runChannelEffect(_ref8, cb) {
var pattern = _ref8.pattern;
var buffer = _ref8.buffer;

@@ -691,7 +707,11 @@ var match = matcher(pattern);

function runFlushEffect(channel, cb) {
channel.flush(cb);
}
function newTask(id, name, iterator, cont) {
var _done, _ref8, _mutatorMap;
var _done, _ref9, _mutatorMap;
iterator._deferredEnd = null;
return _ref8 = {}, _defineProperty(_ref8, _utils.TASK, true), _defineProperty(_ref8, 'id', id), _defineProperty(_ref8, 'name', name), _done = 'done', _mutatorMap = {}, _mutatorMap[_done] = _mutatorMap[_done] || {}, _mutatorMap[_done].get = function () {
return _ref9 = {}, _defineProperty(_ref9, _utils.TASK, true), _defineProperty(_ref9, 'id', id), _defineProperty(_ref9, 'name', name), _done = 'done', _mutatorMap = {}, _mutatorMap[_done] = _mutatorMap[_done] || {}, _mutatorMap[_done].get = function () {
if (iterator._deferredEnd) {

@@ -707,14 +727,14 @@ return iterator._deferredEnd.promise;

}
}, _defineProperty(_ref8, 'cont', cont), _defineProperty(_ref8, 'joiners', []), _defineProperty(_ref8, 'cancel', cancel), _defineProperty(_ref8, 'isRunning', function isRunning() {
}, _defineProperty(_ref9, 'cont', cont), _defineProperty(_ref9, 'joiners', []), _defineProperty(_ref9, 'cancel', cancel), _defineProperty(_ref9, 'isRunning', function isRunning() {
return iterator._isRunning;
}), _defineProperty(_ref8, 'isCancelled', function isCancelled() {
}), _defineProperty(_ref9, 'isCancelled', function isCancelled() {
return iterator._isCancelled;
}), _defineProperty(_ref8, 'isAborted', function isAborted() {
}), _defineProperty(_ref9, 'isAborted', function isAborted() {
return iterator._isAborted;
}), _defineProperty(_ref8, 'result', function result() {
}), _defineProperty(_ref9, 'result', function result() {
return iterator._result;
}), _defineProperty(_ref8, 'error', function error() {
}), _defineProperty(_ref9, 'error', function error() {
return iterator._error;
}), _defineEnumerableProperties(_ref8, _mutatorMap), _ref8;
}), _defineEnumerableProperties(_ref9, _mutatorMap), _ref9;
}
}

@@ -11,2 +11,3 @@ 'use strict';

exports.takeLatest = takeLatest;
exports.throttle = throttle;

@@ -19,2 +20,4 @@ var _channel = require('./channel');

var _buffers = require('./buffers');
var done = { done: true, value: undefined };

@@ -24,3 +27,3 @@ var qEnd = {};

function fsmIterator(fsm, q0) {
var name = arguments.length <= 2 || arguments[2] === undefined ? 'iterator' : arguments[2];
var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'iterator';

@@ -57,3 +60,3 @@ var updateState = void 0,

return next(null, error);
}, name);
}, name, true);
}

@@ -129,2 +132,42 @@

}, 'q1', 'takeLatest(' + safeName(pattern) + ', ' + worker.name + ')');
}
function throttle(delayLength, pattern, worker) {
for (var _len3 = arguments.length, args = Array(_len3 > 3 ? _len3 - 3 : 0), _key3 = 3; _key3 < _len3; _key3++) {
args[_key3 - 3] = arguments[_key3];
}
var action = void 0,
channel = void 0;
var yActionChannel = { done: false, value: (0, _io.actionChannel)(pattern, _buffers.buffers.sliding(1)) };
var yTake = function yTake() {
return { done: false, value: (0, _io.take)(channel, pattern) };
};
var yFork = function yFork(ac) {
return { done: false, value: _io.fork.apply(undefined, [worker].concat(args, [ac])) };
};
var yDelay = { done: false, value: (0, _io.call)(_utils.delay, delayLength) };
var setAction = function setAction(ac) {
return action = ac;
};
var setChannel = function setChannel(ch) {
return channel = ch;
};
return fsmIterator({
q1: function q1() {
return ['q2', yActionChannel, setChannel];
},
q2: function q2() {
return ['q3', yTake(), setAction];
},
q3: function q3() {
return action === _channel.END ? [qEnd] : ['q4', yFork(action)];
},
q4: function q4() {
return ['q2', yDelay];
}
}, 'q1', 'throttle(' + safeName(pattern) + ', ' + worker.name + ')');
}

@@ -9,3 +9,3 @@ 'use strict';

var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

@@ -28,2 +28,3 @@ exports.check = check;

var TASK = exports.TASK = sym('TASK');
var HELPER = exports.HELPER = sym('HELPER');
var MATCH = exports.MATCH = sym('MATCH');

@@ -73,8 +74,2 @@ var CANCEL = exports.CANCEL = sym('cancelPromise');

},
take: function take(ch) {
return ch && is.func(ch.take);
},
put: function put(ch) {
return ch && is.func(ch.put);
},
observable: function observable(ob) {

@@ -88,2 +83,8 @@ return ob && is.func(ob.subscribe);

return pat && (typeof pat === 'string' || (typeof pat === 'undefined' ? 'undefined' : _typeof(pat)) === 'symbol' || is.func(pat) || is.array(pat));
},
channel: function channel(ch) {
return ch && is.func(ch.take) && is.func(ch.close);
},
helper: function helper(it) {
return it && it[HELPER];
}

@@ -100,3 +101,3 @@ };

function deferred() {
var props = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

@@ -121,3 +122,3 @@ var def = _extends({}, props);

function delay(ms) {
var val = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];
var val = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;

@@ -161,3 +162,3 @@ var timeoutId = void 0;

function autoInc() {
var seed = arguments.length <= 0 || arguments[0] === undefined ? 0 : arguments[0];
var seed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;

@@ -176,6 +177,11 @@ return function () {

function makeIterator(next) {
var thro = arguments.length <= 1 || arguments[1] === undefined ? kThrow : arguments[1];
var name = arguments.length <= 2 || arguments[2] === undefined ? '' : arguments[2];
var thro = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : kThrow;
var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
var isHelper = arguments[3];
var iterator = { name: name, next: next, throw: thro, return: kReturn };
if (isHelper) {
iterator[HELPER] = true;
}
if (typeof Symbol !== 'undefined') {

@@ -199,3 +205,3 @@ iterator[Symbol.iterator] = function () {

} else {
console[level].call(console, message, error);
console[level](message, error);
}

@@ -205,3 +211,3 @@ }

var internalErr = exports.internalErr = function internalErr(err) {
return new Error('\n redux-saga: Error checking hooks detected an inconsisten state. This is likely a bug\n in redux-saga code and not yours. Thanks for reporting this in the project\'s github repo.\n Error: ' + err + '\n');
return new Error('\n redux-saga: Error checking hooks detected an inconsistent state. This is likely a bug\n in redux-saga code and not yours. Thanks for reporting this in the project\'s github repo.\n Error: ' + err + '\n');
};
{
"name": "redux-saga",
"version": "0.11.1",
"version": "0.12.0",
"description": "Saga middleware for Redux to handle Side Effects",

@@ -5,0 +5,0 @@ "main": "lib/index.js",

@@ -135,8 +135,8 @@ # redux-saga

umd バージョンは webpack や browserify を使わない場合には便利です。[npmcdn](npmcdn.com) から直接利用できます。
umd バージョンは webpack や browserify を使わない場合には便利です。[unpkg](unpkg.com) から直接利用できます。
以下のビルドが利用可能です:
- [https://npmcdn.com/redux-saga/dist/redux-saga.js](https://npmcdn.com/redux-saga/dist/redux-saga.js)
- [https://npmcdn.com/redux-saga/dist/redux-saga.min.js](https://npmcdn.com/redux-saga/dist/redux-saga.min.js)
- [https://unpkg.com/redux-saga/dist/redux-saga.js](https://unpkg.com/redux-saga/dist/redux-saga.js)
- [https://unpkg.com/redux-saga/dist/redux-saga.min.js](https://unpkg.com/redux-saga/dist/redux-saga.min.js)

@@ -143,0 +143,0 @@ **重要!** ターゲットのブラウザが *ES2015 の Generator* をサポートしていない場合、[*babel*](https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.25/browser-polyfill.min.js) のような有効な polyfill

@@ -705,7 +705,7 @@ # redux-saga

在`dist/`目录,`redux-saga`有一个可用的 **umd** 构建。使用umd构建,`redux-saga` 可以作为`ReduxSaga`在window对象中使用。如果你不使用webpack或者browserify,umd版本非常有用,你可以通过[npmcdn](npmcdn.com)直接使用。
在`dist/`目录,`redux-saga`有一个可用的 **umd** 构建。使用umd构建,`redux-saga` 可以作为`ReduxSaga`在window对象中使用。如果你不使用webpack或者browserify,umd版本非常有用,你可以通过[unpkg](unpkg.com)直接使用。
下面是可用的构建:
[https://npmcdn.com/redux-saga/dist/redux-saga.js](https://npmcdn.com/redux-saga/dist/redux-saga.js)
[https://npmcdn.com/redux-saga/dist/redux-saga.min.js](https://npmcdn.com/redux-saga/dist/redux-saga.min.js)
[https://unpkg.com/redux-saga/dist/redux-saga.js](https://unpkg.com/redux-saga/dist/redux-saga.js)
[https://unpkg.com/redux-saga/dist/redux-saga.min.js](https://unpkg.com/redux-saga/dist/redux-saga.min.js)
**重要提示!** 如果目标浏览器不支持 _es2015 generators_ 你必须使用好的转换库,如 *babel*: [browser-polyfill.min.js](https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.25/browser-polyfill.min.js). 这个库必须在 **redux-saga** 前被加载.

@@ -688,7 +688,7 @@ # redux-saga

`redux-saga` 有 **umd** 組建位於 `dist/` 目錄之下。使用 `redux-saga` 的 umd 組建可以從 window 物件下的 `ReduxSaga` 取得。當你沒有使用 webpack 或 browserify 時,umd 版本是非常有用的,你可以直接從 [npmcdn](npmcdn.com) 取得。包含下列組建:
`redux-saga` 有 **umd** 組建位於 `dist/` 目錄之下。使用 `redux-saga` 的 umd 組建可以從 window 物件下的 `ReduxSaga` 取得。當你沒有使用 webpack 或 browserify 時,umd 版本是非常有用的,你可以直接從 [unpkg](unpkg.com) 取得。包含下列組建:
- [https://npmcdn.com/redux-saga/dist/redux-saga.js](https://npmcdn.com/redux-saga/dist/redux-saga.js)
- [https://npmcdn.com/redux-saga/dist/redux-saga.min.js](https://npmcdn.com/redux-saga/dist/redux-saga.min.js)
- [https://unpkg.com/redux-saga/dist/redux-saga.js](https://unpkg.com/redux-saga/dist/redux-saga.js)
- [https://unpkg.com/redux-saga/dist/redux-saga.min.js](https://unpkg.com/redux-saga/dist/redux-saga.min.js)
**重要!** 如果你的目標瀏覽器不支援 _es2015 generators_,你需要提供合適的 polyfill,例如,*babel* 所提供的:[browser-polyfill.min.js](https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.25/browser-polyfill.min.js)。這個 polyfill 必須在 **redux-saga** 之前載入。

@@ -115,7 +115,7 @@ # redux-saga

There is also a [chinese version of the docs website](https://github.com/superRaytin/redux-saga-in-chinese)
thanks @superRaytin (You may check the referenced version of redux-saga)
# Translation
- [Chinese](https://github.com/superRaytin/redux-saga-in-chinese)
- [Chinese Traditional](https://github.com/neighborhood999/redux-saga)
# Using umd build in the browser

@@ -125,8 +125,8 @@

The umd version is useful if you don't use Webpack or Browserify. You can access it directly from [npmcdn](npmcdn.com).
The umd version is useful if you don't use Webpack or Browserify. You can access it directly from [unpkg](unpkg.com).
The following builds are available:
- [https://npmcdn.com/redux-saga/dist/redux-saga.js](https://npmcdn.com/redux-saga/dist/redux-saga.js)
- [https://npmcdn.com/redux-saga/dist/redux-saga.min.js](https://npmcdn.com/redux-saga/dist/redux-saga.min.js)
- [https://unpkg.com/redux-saga/dist/redux-saga.js](https://unpkg.com/redux-saga/dist/redux-saga.js)
- [https://unpkg.com/redux-saga/dist/redux-saga.min.js](https://unpkg.com/redux-saga/dist/redux-saga.min.js)

@@ -133,0 +133,0 @@ **Important!** If the browser you are targeting doesn't support *ES2015 generators*, you must provide a valid polyfill, such as [the one provided by `babel`](https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.25/browser-polyfill.min.js). The polyfill must be imported before **redux-saga**:

@@ -1,1 +0,1 @@

export { take, takem, put, race, call, apply, cps, fork, spawn, join, cancel, select, actionChannel, cancelled } from './internal/io'
export { take, takem, put, race, call, apply, cps, fork, spawn, join, cancel, select, actionChannel, cancelled, flush } from './internal/io'

@@ -7,3 +7,3 @@ import middleware from './internal/middleware'

export { buffers } from './internal/buffers'
export { takeEvery, takeLatest } from './internal/sagaHelpers'
export { takeEvery, takeLatest, throttle } from './internal/sagaHelpers'
export { delay, CANCEL } from './internal/utils'

@@ -10,0 +10,0 @@

@@ -8,2 +8,3 @@ import { kTrue, noop } from './utils'

const ON_OVERFLOW_SLIDE = 3
const ON_OVERFLOW_EXPAND = 4

@@ -13,6 +14,31 @@ const zeroBuffer = {isEmpty: kTrue, put: noop, take: noop}

function ringBuffer(limit = 10, overflowAction) {
const arr = new Array(limit)
let arr = new Array(limit)
let length = 0
let pushIndex = 0
let popIndex = 0
const push = (it) => {
arr[pushIndex] = it
pushIndex = (pushIndex + 1) % limit
length++
}
const take = () => {
if (length != 0) {
let it = arr[popIndex]
arr[popIndex] = null
length--
popIndex = (popIndex + 1) % limit
return it
}
}
const flush = () => {
let items = []
while (length) {
items.push(take())
}
return items
}
return {

@@ -22,6 +48,5 @@ isEmpty: () => length == 0,

if(length < limit) {
arr[pushIndex] = it
pushIndex = (pushIndex + 1) % limit
length++
push(it)
} else {
let doubledLimit
switch(overflowAction) {

@@ -35,2 +60,16 @@ case ON_OVERFLOW_THROW:

break
case ON_OVERFLOW_EXPAND:
doubledLimit = 2 * limit
arr = flush()
length = arr.length
pushIndex = arr.length
popIndex = 0
arr.length = doubledLimit
limit = doubledLimit
push(it)
break
default:

@@ -41,11 +80,3 @@ // DROP

},
take: () => {
if(length != 0) {
let it = arr[popIndex]
arr[popIndex] = null
length--
popIndex = (popIndex + 1) % limit
return it
}
}
take, flush
}

@@ -58,3 +89,4 @@ }

dropping: limit => ringBuffer(limit, ON_OVERFLOW_DROP),
sliding: limit => ringBuffer(limit, ON_OVERFLOW_SLIDE)
sliding: limit => ringBuffer(limit, ON_OVERFLOW_SLIDE),
expanding: limit => ringBuffer(limit, ON_OVERFLOW_EXPAND)
}

@@ -1,2 +0,2 @@

import { is, check, remove , MATCH, internalErr} from './utils'
import { is, check, remove, MATCH, internalErr} from './utils'
import {buffers} from './buffers'

@@ -39,11 +39,7 @@

export function channel(buffer) {
export function channel(buffer = buffers.fixed()) {
let closed = false
let takers = []
if(arguments.length > 0) {
check(buffer, is.buffer, INVALID_BUFFER)
} else {
buffer = buffers.fixed()
}
check(buffer, is.buffer, INVALID_BUFFER)

@@ -62,13 +58,13 @@ function checkForbiddenStates() {

check(input, is.notUndef, UNDEFINED_INPUT_ERROR)
if(!closed) {
if(takers.length) {
for (var i = 0; i < takers.length; i++) {
const cb = takers[i]
if(!cb[MATCH] || cb[MATCH](input)) {
takers.splice(i, 1)
return cb(input)
}
}
} else {
buffer.put(input)
if (closed) {
return
}
if (!takers.length) {
return buffer.put(input)
}
for (var i = 0; i < takers.length; i++) {
const cb = takers[i]
if(!cb[MATCH] || cb[MATCH](input)) {
takers.splice(i, 1)
return cb(input)
}

@@ -78,9 +74,6 @@ }

function take(cb, matcher) {
function take(cb) {
checkForbiddenStates()
check(cb, is.func, 'channel.take\'s callback must be a function')
if(arguments.length > 1) {
check(matcher, is.func, 'channel.take\'s matcher argument must be a function')
cb[MATCH] = matcher
}
if(closed && buffer.isEmpty()) {

@@ -96,2 +89,12 @@ cb(END)

function flush(cb) {
checkForbiddenStates() // TODO: check if some new state should be forbidden now
check(cb, is.func, 'channel.flush\' callback must be a function')
if (closed && buffer.isEmpty()) {
cb(END)
return
}
cb(buffer.flush())
}
function close() {

@@ -104,6 +107,5 @@ checkForbiddenStates()

takers = []
for (var i = 0, len = arr.length; i < len; i++) {
for (let i = 0, len = arr.length; i < len; i++) {
arr[i](END)
}
takers = []
}

@@ -113,3 +115,3 @@ }

return {take, put, close,
return {take, put, flush, close,
get __takers__() { return takers },

@@ -144,2 +146,3 @@ get __closed__() { return closed }

take: chan.take,
flush: chan.flush,
close: () => {

@@ -153,1 +156,16 @@ if(!chan.__closed__) {

}
export function stdChannel(subscribe) {
const chan = eventChannel(subscribe)
return {
...chan,
take(cb, matcher) {
if(arguments.length > 1) {
check(matcher, is.func, 'channel.take\'s matcher argument must be a function')
cb[MATCH] = matcher
}
chan.take(cb)
}
}
}

@@ -15,28 +15,17 @@ import { sym, is, ident, check, TASK } from './utils'

const CANCELLED = 'CANCELLED'
const FLUSH = 'FLUSH'
const effect = (type, payload) => ({[IO]: true, [type]: payload})
export function take(channel, pattern) {
if(arguments.length >= 2) {
check(channel, is.notUndef, 'take(channel, pattern): channel is undefined')
check(channel, is.take, `take(channel, pattern): argument ${String(channel)} is not a valid channel (channel argument must have a take method)`)
check(pattern, is.notUndef, 'take(channel, pattern): pattern is undefined')
check(pattern, is.pattern, `take(channel, pattern): argument ${String(pattern)} is not a valid pattern (pattern must be String | Function: a => boolean | Array<String>)`)
} else if(arguments.length === 1) {
check(channel, is.notUndef, 'take(patternOrChannel): undefined argument')
if(!is.take(channel)) {
if(is.pattern(channel)) {
pattern = channel
channel = null
} else {
throw new Error(`take(patternOrChannel): argument ${String(channel)} is not valid channel or a valid pattern`)
}
} else {
pattern = '*'
}
} else {
pattern = '*'
export function take(patternOrChannel = '*') {
if (arguments.length) {
check(arguments[0], is.notUndef, 'take(patternOrChannel): patternOrChannel is undefined')
}
return effect(TAKE, {channel, pattern})
if (is.pattern(patternOrChannel)) {
return effect(TAKE, { pattern: patternOrChannel })
}
if (is.channel(patternOrChannel)) {
return effect(TAKE, { channel: patternOrChannel })
}
throw new Error(`take(patternOrChannel): argument ${String(patternOrChannel)} is not valid channel or a valid pattern`)
}

@@ -53,3 +42,3 @@

check(channel, is.notUndef, 'put(channel, action): argument channel is undefined')
check(channel, is.put, `put(channel, action): argument ${channel} is not a valid channel (channel argument must have a put method)`)
check(channel, is.channel, `put(channel, action): argument ${channel} is not a valid channel`)
check(action, is.notUndef, 'put(channel, action): argument action is undefined')

@@ -134,3 +123,3 @@ } else {

} else {
check(select, is.notUndef, 'select(selector,[...]): argument selector is undefined')
check(selector, is.notUndef, 'select(selector,[...]): argument selector is undefined')
check(selector, is.func, `select(selector,[...]): argument ${selector} is not a function`)

@@ -157,2 +146,7 @@ }

export function flush(channel) {
check(channel, is.channel, `flush(channel): argument ${channel} is not valid channel`)
return effect(FLUSH, channel)
}
export const asEffect = {

@@ -169,3 +163,4 @@ take : effect => effect && effect[IO] && effect[TAKE],

actionChannel : effect => effect && effect[IO] && effect[ACTION_CHANNEL],
cancelled : effect => effect && effect[IO] && effect[CANCELLED]
cancelled : effect => effect && effect[IO] && effect[CANCELLED],
flush : effect => effect && effect[IO] && effect[FLUSH]
}

@@ -33,2 +33,6 @@ import { is, check } from './utils'

if(options.onerror && !is.func(options.onerror)) {
throw new Error('`options.onerror` passed to the Saga middleware is not a function!')
}
function sagaMiddleware({getState, dispatch}) {

@@ -35,0 +39,0 @@ runSagaDynamically = runSaga

import { noop, kTrue, is, log as _log, check, deferred, autoInc, remove, TASK, CANCEL, makeIterator } from './utils'
import asap from './asap'
import { asEffect } from './io'
import { eventChannel, isEnd } from './channel'
import { stdChannel as _stdChannel, eventChannel, isEnd } from './channel'
import { buffers } from './buffers'

@@ -100,2 +100,45 @@

function createTaskIterator({context, fn, args}) {
if (is.iterator(fn)) {
return fn
}
// catch synchronous failures; see #152 and #441
let result, error
try {
result = fn.apply(context, args)
} catch(err) {
error = err
}
// i.e. a generator function returns an iterator
if (is.iterator(result)) {
return result
}
// do not bubble up synchronous failures for detached forks
// instead create a failed task. See #152 and #441
return error
? makeIterator(() => { throw error })
: makeIterator((function() {
let pc
const eff = {done: false, value: result}
const ret = value => ({done: true, value})
return arg => {
if(!pc) {
pc = true
return eff
} else {
return ret(arg)
}
}
})())
}
function wrapHelper(helper) {
return {
fn: helper
}
}
export default function proc(

@@ -106,3 +149,3 @@ iterator,

getState = noop,
options={},
options = {},
parentEffectId = 0,

@@ -114,5 +157,5 @@ name = 'anonymous',

const {sagaMonitor, logger} = options
const {sagaMonitor, logger, onError} = options
const log = logger || _log
const stdChannel = eventChannel(subscribe)
const stdChannel = _stdChannel(subscribe)
/**

@@ -254,2 +297,5 @@ Tracks the current effect cancellation

log('error', `uncaught`, result.sagaStack || result.stack)
if((result instanceof Error) && onError) {
onError(result)
}
}

@@ -336,19 +382,22 @@ iterator._error = result

// Non declarative effect
is.promise(effect) ? resolvePromise(effect, currCb)
: is.iterator(effect) ? resolveIterator(effect, effectId, name, currCb)
is.promise(effect) ? resolvePromise(effect, currCb)
: is.helper(effect) ? runForkEffect(wrapHelper(effect), effectId, currCb)
: is.iterator(effect) ? resolveIterator(effect, effectId, name, currCb)
// declarative effects
: is.array(effect) ? runParallelEffect(effect, effectId, currCb)
: (is.notUndef(data = asEffect.take(effect))) ? runTakeEffect(data, currCb)
: (is.notUndef(data = asEffect.put(effect))) ? runPutEffect(data, currCb)
: (is.notUndef(data = asEffect.race(effect))) ? runRaceEffect(data, effectId, currCb)
: (is.notUndef(data = asEffect.call(effect))) ? runCallEffect(data, effectId, currCb)
: (is.notUndef(data = asEffect.cps(effect))) ? runCPSEffect(data, currCb)
: (is.notUndef(data = asEffect.fork(effect))) ? runForkEffect(data, effectId, currCb)
: (is.notUndef(data = asEffect.join(effect))) ? runJoinEffect(data, currCb)
: (is.notUndef(data = asEffect.cancel(effect))) ? runCancelEffect(data, currCb)
: (is.notUndef(data = asEffect.select(effect))) ? runSelectEffect(data, currCb)
: is.array(effect) ? runParallelEffect(effect, effectId, currCb)
: (is.notUndef(data = asEffect.take(effect))) ? runTakeEffect(data, currCb)
: (is.notUndef(data = asEffect.put(effect))) ? runPutEffect(data, currCb)
: (is.notUndef(data = asEffect.race(effect))) ? runRaceEffect(data, effectId, currCb)
: (is.notUndef(data = asEffect.call(effect))) ? runCallEffect(data, effectId, currCb)
: (is.notUndef(data = asEffect.cps(effect))) ? runCPSEffect(data, currCb)
: (is.notUndef(data = asEffect.fork(effect))) ? runForkEffect(data, effectId, currCb)
: (is.notUndef(data = asEffect.join(effect))) ? runJoinEffect(data, currCb)
: (is.notUndef(data = asEffect.cancel(effect))) ? runCancelEffect(data, currCb)
: (is.notUndef(data = asEffect.select(effect))) ? runSelectEffect(data, currCb)
: (is.notUndef(data = asEffect.actionChannel(effect))) ? runChannelEffect(data, currCb)
: (is.notUndef(data = asEffect.cancelled(effect))) ? runCancelledEffect(data, currCb)
: /* anything else returned as is */ currCb(effect)
: (is.notUndef(data = asEffect.flush(effect))) ? runFlushEffect(data, currCb)
: (is.notUndef(data = asEffect.cancelled(effect))) ? runCancelledEffect(data, currCb)
: /* anything else returned as is */ currCb(effect)
)

@@ -441,50 +490,15 @@ }

function runForkEffect({context, fn, args, detached}, effectId, cb) {
let result, error, _iterator
const taskIterator = createTaskIterator({context, fn, args})
// we run the function, next we'll check if this is a generator function
// (generator is a function that returns an iterator)
asap.suspend()
const task = proc(taskIterator, subscribe, dispatch, getState, options, effectId, fn.name, (detached ? null : noop))
// catch synchronous failures; see #152 and #441
try {
result = fn.apply(context, args)
} catch(err) {
error = err
}
// A generator function: i.e. returns an iterator
if(is.iterator(result)) {
_iterator = result
}
// do not bubble up synchronous failures for detached forks
// instead create a failed task. See #152 and #441
else {
_iterator = (error ?
makeIterator(() => { throw error })
: makeIterator((function() {
let pc
const eff = {done: false, value: result}
const ret = value => ({done: true, value})
return arg => {
if(!pc) {
pc = true
return eff
} else {
return ret(arg)
}
}
})())
)
}
asap.suspend()
let task = proc(_iterator, subscribe, dispatch, getState, options, effectId, fn.name, (detached ? null : noop))
if(detached) {
cb(task)
} else {
if(_iterator._isRunning) {
if(taskIterator._isRunning) {
taskQueue.addTask(task)
cb(task)
} else if(_iterator._error) {
taskQueue.abort(_iterator._error)
} else if(taskIterator._error) {
taskQueue.abort(taskIterator._error)
} else {

@@ -614,2 +628,6 @@ cb(task)

function runFlushEffect(channel, cb) {
channel.flush(cb)
}
function newTask(id, name, iterator, cont) {

@@ -616,0 +634,0 @@ iterator._deferredEnd = null

import { END } from './channel'
import { makeIterator } from './utils'
import { take, fork, cancel } from './io'
import { makeIterator, delay } from './utils'
import { take, fork, cancel, actionChannel, call } from './io'
import { buffers } from './buffers'

@@ -31,3 +32,4 @@ const done = {done: true, value: undefined}

error => next(null, error),
name
name,
true,
)

@@ -77,1 +79,20 @@ }

}
export function throttle(delayLength, pattern, worker, ...args) {
let action, channel
const yActionChannel = {done: false, value: actionChannel(pattern, buffers.sliding(1))}
const yTake = () => ({done: false, value: take(channel, pattern)})
const yFork = ac => ({done: false, value: fork(worker, ...args, ac)})
const yDelay = {done: false, value: call(delay, delayLength)}
const setAction = ac => action = ac
const setChannel = ch => channel = ch
return fsmIterator({
q1() { return ['q2', yActionChannel, setChannel] },
q2() { return ['q3', yTake(), setAction] },
q3() { return action === END ? [qEnd] : ['q4', yFork(action)] },
q4() { return ['q2', yDelay] }
}, 'q1', `throttle(${safeName(pattern)}, ${worker.name})`)
}
export const sym = id => `@@redux-saga/${id}`
export const TASK = sym('TASK')
export const HELPER = sym('HELPER')
export const MATCH = sym('MATCH')

@@ -27,7 +28,7 @@ export const CANCEL = sym('cancelPromise')

task : t => t && t[TASK],
take : ch => ch && is.func(ch.take),
put : ch => ch && is.func(ch.put),
observable: ob => ob && is.func(ob.subscribe),
buffer : buf => buf && is.func(buf.isEmpty) && is.func(buf.take) && is.func(buf.put),
pattern : pat => pat && ((typeof pat === 'string') || (typeof pat === 'symbol') || is.func(pat) || is.array(pat))
pattern : pat => pat && ((typeof pat === 'string') || (typeof pat === 'symbol') || is.func(pat) || is.array(pat)),
channel : ch => ch && is.func(ch.take) && is.func(ch.close),
helper : it => it && it[HELPER]
}

@@ -93,4 +94,8 @@

const kReturn = value => ({value, done: true})
export function makeIterator(next, thro = kThrow, name = '') {
export function makeIterator(next, thro = kThrow, name = '', isHelper) {
const iterator = {name, next, throw: thro, return: kReturn}
if (isHelper) {
iterator[HELPER] = true
}
if(typeof Symbol !== 'undefined') {

@@ -112,3 +117,3 @@ iterator[Symbol.iterator] = () => iterator

} else {
console[level].call(console, message, error)
console[level](message, error)
}

@@ -118,5 +123,5 @@ }

export const internalErr = err => new Error(`
redux-saga: Error checking hooks detected an inconsisten state. This is likely a bug
redux-saga: Error checking hooks detected an inconsistent state. This is likely a bug
in redux-saga code and not yours. Thanks for reporting this in the project's github repo.
Error: ${err}
`)

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc