state-decorator
Version:
React state management library
3 lines (2 loc) • 2.64 kB
JavaScript
import{isSimpleSyncAction as t,globalConfig as e}from"./impl";var o=function(){return o=Object.assign||function(t){for(var e,o=1,i=arguments.length;o<i;o++)for(var n in e=arguments[o])Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t},o.apply(this,arguments)};function i(i){return function(){var n=null,r={history:null,optimisticActions:{},shouldRecordHistory:!1},s=function(t){return(i||e.clone)(t)},c=function(t,e){return"".concat(t.toString(),"_").concat(e)};function f(t,e,o,i){void 0===i&&(i=null);var n=r.shouldRecordHistory,c=r.history;if(n){null===c&&(r.history=[]);var f=s(o);delete f.state,delete f.s,delete f.abortSignal,f.error=o.err,f.err=o.err;var a={effectType:e,actionName:t,promiseId:o.promiseId,ctx:f,beforeEffectState:i?s(i):null};r.history.push(a)}}function a(t,e,o){void 0===o&&(o=void 0);var i=r.optimisticActions,n=r.history,s=c(t,e);if(delete i[s],0===Object.keys(i).length)r.history=null,r.shouldRecordHistory=!1;else{var f=void 0===o?n.findIndex((function(t){return c(t.actionName,t.promiseId)===s})):o;if(0===f){var a=n.slice(1).findIndex((function(t){return null!=t.beforeEffectState}))+1;n.splice(0,a)}else void 0===o&&(n[f].beforeEffectState=null)}}return{init:function(t){n=t},destroy:function(){n=null,r.history=null,r.optimisticActions={},r.shouldRecordHistory=!1},effects:function(e,i,s,l){var u=e.name,p=e.type,d=e.context,m=e.isAsync;if((null!=s&&t(n.actions[u])||"onPropsChange"===u||null!=n.actions[u][p])&&f(u,p,d,null),m){var y=n.actions[u];if(l&&null!=y.optimisticEffects&&"preEffects"===p)return r.shouldRecordHistory=!0,r.optimisticActions[c(u,d.promiseId)]=!0,f(u,"optimisticEffects",d,h=s||i),{loading:!1,state:o(o({},h),y.optimisticEffects(o(o({},d),{state:h,s:h})))};if(null!=y.optimisticEffects&&"effects"===p)return a(u,d.promiseId),{loading:l,state:s};if(null!=y.optimisticEffects&&"errorEffects"===p){var h=function(e,i){for(var s=r.history,c=s.findIndex((function(t){return"optimisticEffects"===t.effectType&&t.actionName===e&&t.promiseId===i})),f=s[c].beforeEffectState,l=c+1;l<s.length;l++){var u=s[l];u.beforeEffectState&&(u.beforeEffectState=f);var p=o(o({},u.ctx),{state:f,s:f});if("onPropsChange"===u.actionName){var d=Array.isArray(n.options.onPropsChange)?n.options.onPropsChange:[n.options.onPropsChange];f=o(o({},f),d[p.index].effects(p))}else f=t(n.actions[u.actionName])?o(o({},f),n.actions[u.actionName](p)):o(o({},f),n.actions[u.actionName][u.effectType](p))}return a(e,i,c),f}(u,d.promiseId);return{state:h,loading:l}}}return null}}}}"function"==typeof SuppressedError&&SuppressedError;export{i as optimisticActions};
//# sourceMappingURL=middlewares.js.map