angular-caching
Version:
Lightweight library for data caching
2 lines • 1.25 kB
JavaScript
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("rxjs"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("angular-caching/inmemory-cache",["exports","rxjs","rxjs/operators"],r):r(((e=e||self)["angular-caching"]=e["angular-caching"]||{},e["angular-caching"]["inmemory-cache"]={}),e.rxjs,e.rxjs.operators)}(this,(function(e,r,t){"use strict";e.InMemoryCache=function(e){var n;void 0===e&&(e={});var o=e.cacheSize||1,i=e.ttl,a=new Map,s=new Map;return function(c,u,f){n=f.value,f.value=function(){for(var c=[],u=0;u<arguments.length;u++)c[u]=arguments[u];if(!c.length&&o>1)throw new Error("If you don't provide arguments, cache size could not be bigger then 1");var f=JSON.stringify(c),l=a.size,p=a.get(f);if(!p&&((p=n.apply(this,c))instanceof r.Observable&&(p=p.pipe(t.publishReplay(1),t.refCount(),t.take(1))),l>=o&&(s.has(a.keys()[0])&&(clearTimeout(s.get(a.keys()[0])),s.delete(a.keys()[0])),a.delete(a.keys()[0])),e.sync?a.set(f,p):Promise.resolve().then((function(){a.set(f,p)})),i||0===i)){var h=setTimeout((function(){a.delete(f),s.delete(f)}),i);s.set(f,h)}return p}}},Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=angular-caching-inmemory-cache.umd.min.js.map