dns-cached
Version:
DNS Cache for Node.js
1 lines • 1.47 kB
JavaScript
'use strict';Object.defineProperty(exports,'__esModule',{value:!0});var _events=require('events'),_events2=_interopRequireDefault(_events),_utils=require('../utils');function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}class CacheStore extends _events2.default{constructor(a,b){super(),this.ttl=1e3*(60*((0,_utils.isNumeric)(a)?parseFloat(a):1)),this.cache=Object.create(null),this.queue=Object.create(null),this.timeoutIds=Object.create(null),this.maxSize=(0,_utils.pick)(b,['maxSize'])?Math.floor(b.maxSize)||1e3:1e3,this.cacheSize=0,this.flush=!1}has(a){return a in this.cache}get(a){return this.cache[a]}set(a,b){var c=this;this.cache[a]=b,this.timeoutIds[a]=setTimeout(function(){delete c.cache[a],delete c.timeoutIds[a],c.cacheSize-=1},this.ttl)}getSize(){return this.cacheSize}getQueueSize(){return Object.keys(this.queue).length}flushCache(){var a=this;if(this.flush&&this.getQueueSize())return setImmediate(function(){return a.flushCache()});for(var b=Object.keys(this.timeoutIds),c=b.length,d=0;c--;)clearTimeout(this.timeoutIds[b[d++]]);var e=this.cacheSize;delete this.cache,delete this.queue,delete this.timeoutIds,this.cache=Object.create(null),this.queue=Object.create(null),this.timeoutIds=Object.create(null),this.cacheSize=0,this.flush=!1,this.emit('flush-complete',{status:!0,nTimeouts:d,nKeys:e})}}var createCacheStore=function(a,b){return new CacheStore(a,b)};exports.default=createCacheStore,module.exports=exports['default'];