UNPKG

dns-cached

Version:
1 lines 1.3 kB
'use strict';Object.defineProperty(exports,'__esModule',{value:!0}),exports.memoizeDnsMethods=exports.getAllDnsMethods=void 0;var _dns=require('dns'),_dns2=_interopRequireDefault(_dns);function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}var getAllDnsMethods=exports.getAllDnsMethods=function(){return Object.keys(_dns2.default).filter(function(a){return _dns2.default[a].constructor&&_dns2.default[a].call&&_dns2.default[a].apply})},memoize=function(a,b,c){return function(){for(var c=this,d=arguments.length,e=Array(d),f=0;f<d;f++)e[f]=arguments[f];var g=e.pop(),h=`${a}_${JSON.stringify(e)}`;if(this.has(h))process.nextTick(function(){return g(null,...c.get(h))});else if(this.queue[h])this.queue[h].push(g);else{if(this.getSize()>=this.maxSize)return e.push(g),b(...e);this.queue[h]=[g],this.cacheSize+=1;var i=function(a){for(var b=arguments.length,d=Array(1<b?b-1:0),e=1;e<b;e++)d[e-1]=arguments[e];if(a)return c.cacheSize-=1,g(a);c.set(h,d);var f=c.queue[h];delete c.queue[h];for(var k=f.length,l=0;k--;)f[l++].call(null,a,...d)};return e.push(i),b(...e)}}.bind(c)},memoizeDnsMethods=exports.memoizeDnsMethods=function(){var a=0<arguments.length&&arguments[0]!==void 0?arguments[0]:[],b=arguments[1];a.forEach(function(a){_dns2.default[a]=memoize(a,_dns2.default[a],b)})};