UNPKG

js-vue-cache

Version:

Cache dispatched actions and prevent repeated requests and heavy actions.

3 lines (2 loc) 2.68 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).VuexCache={})}(this,(function(e){"use strict";var t,n=function(e){return!!e&&"object"==typeof e},r=new Error("Can't generate key from parameters."),a=function(e){try{var t=function(e){return n(e[0])?[e[0].type,e[0],e[1]]:e}(e),a=t[0],c=t[1];return a+":"+(n(o=c)?JSON.stringify(o):String(o))}catch(e){return r}var o},c=function(e){return n(e)&&"number"==typeof e.timeout},o=function(e,t){var n="string"==typeof e[0]?e[2]:e[0];return c(n)?n.timeout:c(t)?t.timeout:0},i=function(e){return!!e&&Date.now()>e},u=new Map,f=function(e,t){var c={dispatch:function(){for(var n=[],c=arguments.length;c--;)n[c]=arguments[c];var f=a(n);if(f===r)return e.dispatch.apply(e,n);var p=u.get(f)||{},l=p.value,s=p.expiresIn;if(l&&!i(s))return l;var h=o(n,t),v={expiresIn:h?Date.now()+h:void 0,value:e.dispatch.apply(e,n)};return u.set(f,v),v.value.catch((function(e){return u.delete(f),Promise.reject(e)}))},has:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var c=a(e);if(c===r)return!1;var o=u.get(c);return n(o)&&!i(o.expiresIn)},clear:function(){return u.clear()},delete:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=a(e);return n!==r&&u.delete(n)}};for(var f in Object.defineProperty(e,"cache",{value:c,writable:!1,enumerable:!0,configurable:!1}),e._modulesNamespaceMap){var l=p(e,"mapCacheActions",f);Object.defineProperty(l.context,"cache",{value:c,writable:!1,enumerable:!0,configurable:!1})}},p=function(e,t,n){return e._modulesNamespaceMap[n]},l=(t=function(e,t){var n,r={};return(n=t,Array.isArray(n)?n.map((function(e){return{key:e,val:e}})):Object.keys(n).map((function(e){return{key:e,val:n[e]}}))).forEach((function(t){var n=t.key,a=t.val;r[n]=function(){for(var t=this,n=[],r=arguments.length;r--;)n[r]=arguments[r];var c=this.$store.cache.dispatch;if(e){var o=p(this.$store,"mapCacheActions",e);if(!o)return;c="function"==typeof a?function(n){for(var r,a=[],c=arguments.length-1;c-- >0;)a[c]=arguments[c+1];(r=o.context.cache.dispatch).call.apply(r,[t.$store.cache,""+e+n].concat(a))}:o.context.cache.dispatch}return"function"==typeof a?a.call.apply(a,[this,c].concat(n)):c.call.apply(c,[this.$store.cache,""+e+a].concat(n))}})),r},function(e,n){return"string"!=typeof e?(n=e,e=""):"/"!==e.charAt(e.length-1)&&(e+="/"),t(e,n)});e.cacheAction=function(e,t){return function(n,r){return f(n,t),e.call(this,n,r)}},e.default=function(e){return function(t){return f(t,e)}},e.mapCacheActions=l,Object.defineProperty(e,"__esModule",{value:!0})})); //# sourceMappingURL=vuex-cache.umd.min.js.map