UNPKG

5.31 kBJavaScriptView Raw
1"use strict";var reduxApiMiddleware=require("redux-api-middleware"),asyncToGenerator=function(e){return function(){var t=e.apply(this,arguments);return new Promise(function(e,r){return function n(c,a){try{var i=t[c](a),u=i.value}catch(e){return void r(e)}if(!i.done)return Promise.resolve(u).then(function(e){n("next",e)},function(e){n("throw",e)});e(u)}("next")})}},_extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},objectWithoutProperties=function(e,t){var r={};for(var n in e)t.indexOf(n)>=0||Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r},DEFAULT_CONFIG={DEFAULT_INVOKE_OPTIONS:{},DEFAULT_CACHE_STRATEGY:void 0},config=_extends({},DEFAULT_CONFIG),config$1={set DEFAULT_INVOKE_OPTIONS(e){config.DEFAULT_INVOKE_OPTIONS=e},get DEFAULT_INVOKE_OPTIONS(){return config.DEFAULT_INVOKE_OPTIONS},set DEFAULT_CACHE_STRATEGY(e){config.DEFAULT_CACHE_STRATEGY=e},get DEFAULT_CACHE_STRATEGY(){return config.DEFAULT_CACHE_STRATEGY}},NAME="@RCAM",CACHE_TYPES={SIMPLE:"SIMPLE",SIMPLE_SUCCESS:"SIMPLE_SUCCESS",TTL:"TTL",TTL_SUCCESS:"TTL_SUCCESS"},constants=Object.freeze({NAME:NAME,CACHE_TYPES:CACHE_TYPES}),type=CACHE_TYPES.SIMPLE,buildStrategy=function(){return{type:type}},shouldFetch=function(e){var t=e.state;return!t||!t.fetching&&!t.fetched},simple=Object.freeze({type:type,buildStrategy:buildStrategy,shouldFetch:shouldFetch}),type$1=CACHE_TYPES.SIMPLE_SUCCESS,buildStrategy$1=function(){return{type:type$1}},shouldFetch$1=function(e){var t=e.state;if(t){if(t.fetching)return!1;if(t.fetched&&!t.error)return!1}return!0},simpleSuccess=Object.freeze({type:type$1,buildStrategy:buildStrategy$1,shouldFetch:shouldFetch$1}),type$2=CACHE_TYPES.TTL,buildStrategy$2=function(e){var t=e.ttl;return{type:type$2,ttl:t}},shouldFetch$2=function(e){var t=e.state,r=e.strategy;if(t&&r){if(t.fetching)return!1;if(t.fetched)return t.timestamp+r.ttl<=Date.now()}return!0},ttl=Object.freeze({type:type$2,buildStrategy:buildStrategy$2,shouldFetch:shouldFetch$2}),type$3=CACHE_TYPES.TTL_SUCCESS,buildStrategy$3=function(e){var t=e.ttl;return{type:type$3,ttl:t}},shouldFetch$3=function(e){var t=e.state,r=e.strategy;if(t&&r){if(t.fetching)return!1;if(t.fetched&&!t.error)return t.timestamp+r.ttl<=Date.now()}return!0},ttlSuccess=Object.freeze({type:type$3,buildStrategy:buildStrategy$3,shouldFetch:shouldFetch$3}),cacheStrategies={get:function(e){switch(e){case type:return simple;case type$1:return simpleSuccess;case type$2:return ttl;case type$3:return ttlSuccess;default:throw new Error("Invalid cache type - "+e)}}},INVALIDATE_CACHE=NAME+".INVALIDATE_CACHE",CLEAR_CACHE=NAME+".CLEAR_CACHE",FETCH_START=NAME+".FETCH_START",FETCH_SUCCESS=NAME+".FETCH_SUCCESS",FETCH_ERROR=NAME+".FETCH_ERROR",getResult=function(e,t){return e&&e[NAME]?e[NAME][t]:void 0},selectors=Object.freeze({getResult:getResult}),_this=void 0,invalidateCache=function(e){return{type:INVALIDATE_CACHE,payload:e}},clearCache=function(e){return{type:CLEAR_CACHE,payload:e}},invoke=function(e){var t,r=e.cache,n=objectWithoutProperties(e,["cache"]);return t=asyncToGenerator(regeneratorRuntime.mark(function e(t,c){var a,i,u,s;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(i=Object.assign({types:[]},config$1.DEFAULT_INVOKE_OPTIONS,n),!r||!r.key){e.next=12;break}if(u=r.strategy||config$1.DEFAULT_CACHE_STRATEGY,s=getResult(c(),r.key),i.types=[{type:FETCH_START,meta:{cache:r}},{type:FETCH_SUCCESS,meta:{cache:r}},{type:FETCH_ERROR,meta:{cache:r}}],!r.shouldFetch){e.next=10;break}if(r.shouldFetch({state:s})){e.next=8;break}return e.abrupt("return",void 0);case 8:e.next=12;break;case 10:if(!u||cacheStrategies.get(u.type).shouldFetch({state:s,strategy:u})){e.next=12;break}return e.abrupt("return",void 0);case 12:return e.abrupt("return",t(((a={})[reduxApiMiddleware.RSAA]=i,a)));case 13:case"end":return e.stop()}},e,_this)})),function(e,r){return t.apply(this,arguments)}},actions=Object.freeze({invalidateCache:invalidateCache,clearCache:clearCache,invoke:invoke}),DEFAULT_KEY_STATE={fetching:!1,fetched:!1,error:!1,timestamp:null,successPayload:null,errorPayload:null},DEFAULT_STATE={},reducer=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:DEFAULT_STATE,t=arguments[1],r=t.type,n=t.payload,c=t.meta;switch(r){case CLEAR_CACHE:if(n&&e[n]){var a=_extends({},e);return delete a[n],a}return DEFAULT_STATE;case INVALIDATE_CACHE:var i=Object.keys(e).filter(function(t){return e[t].fetching});if(i.length){var u=_extends({},e);return i.forEach(function(e){u[e].fetching=!1}),u}return e;case FETCH_START:var s,o=c.cache.key;return _extends({},e,((s={})[o]=_extends({},e[o]||DEFAULT_KEY_STATE,{fetching:!0}),s));case FETCH_SUCCESS:var E,T=c.cache.key;return T in e?_extends({},e,((E={})[T]=_extends({},e[T],{fetching:!1,fetched:!0,error:!1,timestamp:(new Date).getTime(),successPayload:n}),E)):e;case FETCH_ERROR:var l,C=c.cache.key;return C in e?_extends({},e,((l={})[C]=_extends({},e[C],{fetching:!1,fetched:!0,error:!0,timestamp:(new Date).getTime(),errorPayload:n}),l)):e;default:return e}},index={config:config$1,constants:constants,cache:cacheStrategies,actions:actions,reducer:reducer,selectors:selectors};module.exports=index;
2//# sourceMappingURL=index.js.map