@dwalter/spider-dev-middleware
Version:
developer middleware for spider-store
2 lines (1 loc) • 1.3 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(e["spider-dev-middleware"]={})}(this,function(e){"use strict";(function e(){return"isNameCrushed"!==e.name})()&&console.error(new Error("using spider-dev-middleware in minified code.")),e.createPersistMiddleware=function(e){var t=(void 0===e?{}:e).throttleMilliseconds,r=void 0===t?1e3:t;return function(e,t){var n=t.dispatch,i=t.wrapReducer;if(sessionStorage)try{var o={},s=sessionStorage.getItem("@@spider-store-state");null!=s&&(o=JSON.parse(s));var a=function(e,t){var r,n=0;function i(t,r){n=Date.now(),e.apply(t,r)}return function(){for(var e=[],o=0;o<arguments.length;o++)e[o]=arguments[o];clearTimeout(r);var s=Date.now(),a=n+t-s;a<=0?i(this,e):r=setTimeout(i,a,this,e)}}(function(){Object.assign(o,function(e){var t={};return e.slices.forEach(function(r,n){t[n.name]=e.peek(r)}),t}(e));try{sessionStorage.setItem("@@spider-store-state",JSON.stringify(o))}catch(e){console.error(e)}},r);return{dispatch:function(e){n(e),a()},wrapReducer:function(t){if(!e.slices.has(t)){var r=i(t);return Object.hasOwnProperty.call(o,t.name)&&r.setState(o[t.name]),r}return i(t)}}}catch(e){console.error(e)}return{}}},Object.defineProperty(e,"__esModule",{value:!0})});