UNPKG

reactotron-redux-saga

Version:
2 lines (1 loc) 5.55 kB
'use strict';require("reactotron-core-client");var is=require("@redux-saga/is"),effects=require("redux-saga/effects");function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,c.key,c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),a}function _defineProperty(a,b,c){return b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _objectSpread(a){for(var b=1;b<arguments.length;b++){var c=null==arguments[b]?{}:arguments[b],d=Object.keys(c);"function"==typeof Object.getOwnPropertySymbols&&(d=d.concat(Object.getOwnPropertySymbols(c).filter(function(a){return Object.getOwnPropertyDescriptor(c,a).enumerable}))),d.forEach(function(b){_defineProperty(a,b,c[b])})}return a}var TAKE=effects.effectTypes.TAKE,PUT=effects.effectTypes.PUT,ALL=effects.effectTypes.ALL,RACE=effects.effectTypes.RACE,CALL=effects.effectTypes.CALL,CPS=effects.effectTypes.CPS,FORK=effects.effectTypes.FORK,JOIN=effects.effectTypes.JOIN,CANCEL=effects.effectTypes.CANCEL,SELECT=effects.effectTypes.SELECT,ACTION_CHANNEL=effects.effectTypes.ACTION_CHANNEL,CANCELLED=effects.effectTypes.CANCELLED,FLUSH=effects.effectTypes.FLUSH,GET_CONTEXT=effects.effectTypes.GET_CONTEXT,SET_CONTEXT=effects.effectTypes.SET_CONTEXT,PARALLEL="PARALLEL",ITERATOR="ITERATOR",PROMISE="PROMISE",UNKNOWN="UNKNOWN",PENDING="PENDING",RESOLVED="RESOLVED",REJECTED="REJECTED",EffectManager=function(){function a(){_classCallCheck(this,a),this.rootIds=[],this.map={},this.childIdsMap={}}return _createClass(a,[{key:"get",value:function(a){return this.map[a]}},{key:"set",value:function(a,b){this.map[a]=b,this.childIdsMap[b.parentEffectId]||(this.childIdsMap[b.parentEffectId]=[]),this.childIdsMap[b.parentEffectId].push(a)}},{key:"setRootEffect",value:function(a,b){this.rootIds.push(a),this.set(a,_objectSpread({},b,{root:!0}))}},{key:"getRootIds",value:function(){return this.rootIds}},{key:"getChildIds",value:function(a){return this.childIdsMap[a]||[]}}]),a}();function getEffectName(a){return is.array(a)?PARALLEL:is.iterator(a)?ITERATOR:is.promise(a)?PROMISE:is.effect(a)?a.type:UNKNOWN}function getEffectDescription(a){if(!a)return UNKNOWN;if(a.root)return a.saga.name;if(is.iterator(a))return a.name||UNKNOWN;if(is.array(a))return null;if(is.promise(a)){var b;return b=a.name?"".concat(PROMISE,"(").concat(a.name,")"):a.constructor instanceof Promise.constructor?PROMISE:"".concat(PROMISE,"(").concat(a.constructor.name,")"),b}if(is.effect(a)){var c=a,d=c.type,e=c.payload;if(d===TAKE)return e.pattern||"channel";if(d===PUT)return e.channel?e.action:e.action.type;if(d===ALL)return null;if(d===RACE)return null;if(d===CALL)return e.fn.name&&""!==e.fn.name.trim()?e.fn.name:"(anonymous)";if(d===CPS)return e.fn.name;if(d===FORK)return e.fn.name;if(d===JOIN)return e.name;if(d===CANCEL)return e.name;if(d===SELECT)return e.selector.name;if(d===ACTION_CHANNEL)return null==e.buffer?e.pattern:e;if(d===CANCELLED)return null;if(d===FLUSH)return e;if(d===GET_CONTEXT)return e;if(d===SET_CONTEXT)return e}return UNKNOWN}var isRaceEffect=function(a){return is.effect(a)&&a.type===RACE},_createSagaMonitor=function(a){var i=Math.round;function b(a){var b=m();a.end=b,a.duration=b-a.start}function c(a,b,d){var e=k.get(b);if(e){var f=null;if(e.name)switch(e.name){case CALL:f=e.effect.payload.args;break;case PUT:f=e.effect.payload.action;break;case RACE:break;default:f=(e.effect||{}).payload;}d.push({depth:a,effectId:e.effectId,parentEffectId:e.parentEffectId||null,name:e.name||null,description:e.description||null,duration:i(e.duration),status:e.status||null,winner:e.winner||null,result:e.result||null,extra:f||null}),k.getChildIds(b).forEach(function(b){return c(a+1,b,d)})}}function d(d){var e=k.get(d);if(b(e),!(-1<l.indexOf(e.description))){var f,g,h=[],j=k.get(e.parentEffectId);if(e.name&&e.name===FORK){var m=e.effect.payload.args,n=0<m.length?m[m.length-1]:null;g=n&&n.type,j?j.name&&j.name===ITERATOR&&(f=j.description):(f="(root)",g="".concat(e.description,"()")),k.getChildIds(d).forEach(function(a){return c(0,a,h)})}a.send("saga.task.complete",{triggerType:g||e.description,description:f,duration:i(e.duration),children:h})}}function e(a,b){var c=Object.keys(b)[0];k.getChildIds(a).forEach(function(a){var b=k.get(a);b.label===c&&(b.winner=!0)})}function f(a,c){var d=k.get(a);b(d),d.status=REJECTED,d.error=c,isRaceEffect(d.effect)&&e(a,c)}function g(a){var c=k.get(a);b(c),c.status=CANCELLED}function h(c,i){var j=k.get(c);is.task(i)?i.toPromise().then(function(a){i.isCancelled()?g(c):(h(c,a),d(c))},function(b){f(c,b),b.reactotronWasHere||a.reportError(b),b.reactotronWasHere=!0}):(b(j),j.status=RESOLVED,j.result=i,isRaceEffect(j.effect)&&e(c,i))}var j=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},k=new EffectManager,l=j.except||[],m=a.startTimer();return{rootSagaStarted:function(a){k.setRootEffect(a.effectId,_objectSpread({},a,{status:PENDING,start:m()}))},effectTriggered:function(a){k.set(a.effectId,_objectSpread({},a,{status:PENDING,start:m(),name:getEffectName(a.effect),description:getEffectDescription(a.effect)}))},effectResolved:h,effectRejected:f,effectCancelled:g,actionDispatched:function(){}}},index=function(a){return function(b){return{features:{createSagaMonitor:function(){return _createSagaMonitor(b,a)}}}}};module.exports=index;