@cachemap/reaper
Version:
The Cachemap reaper module.
3 lines (2 loc) • 872 B
JavaScript
;var t=require("lodash-es");class a{constructor(t){const{deleteCallback:a,interval:e=6e4,metadataCallback:l,start:s=!1}=t;this._deleteCallback=a,this._interval=e,this._metadataCallback=l,s&&this._start()}async cull(t){await this._cull(t)}start(){this._start()}stop(){this._stop()}async _cull(t){if(0!==t.length)try{await Promise.all(t.map((({key:t,tags:a})=>this._deleteCallback(t,a))))}catch{}}_getExpiredMetadata(){return this._metadataCallback().filter((({cacheability:t})=>!t.checkTTL()))}_start(){this._intervalID=setInterval((()=>{this._cull(this._getExpiredMetadata())}),this._interval)}_stop(){this._intervalID&&clearInterval(this._intervalID)}}exports.Reaper=a,exports.init=(e={})=>{if(!t.isPlainObject(e))throw new TypeError("@cachemap/reaper expected options to be a plain object.");return t=>new a({...e,...t})};
//# sourceMappingURL=index.cjs.map