CoolFace
Datasetpublic

basant307/AI_Governance_Project

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes48downloads
index.js57 linesDownload Raw Back to lib
1'use strict'2 3const { LRUCache } = require('lru-cache')4const { normalizeOptions, cacheOptions } = require('./options')5const { getProxy, proxyCache } = require('./proxy.js')6const dns = require('./dns.js')7const Agent = require('./agents.js')8 9const agentCache = new LRUCache({ max: 20 })10 11const getAgent = (url, { agent, proxy, noProxy, ...options } = {}) => {12  // false has meaning so this can't be a simple truthiness check13  if (agent != null) {14    return agent15  }16 17  url = new URL(url)18 19  const proxyForUrl = getProxy(url, { proxy, noProxy })20  const normalizedOptions = {21    ...normalizeOptions(options),22    proxy: proxyForUrl,23  }24 25  const cacheKey = cacheOptions({26    ...normalizedOptions,27    secureEndpoint: url.protocol === 'https:',28  })29 30  if (agentCache.has(cacheKey)) {31    return agentCache.get(cacheKey)32  }33 34  const newAgent = new Agent(normalizedOptions)35  agentCache.set(cacheKey, newAgent)36 37  return newAgent38}39 40module.exports = {41  getAgent,42  Agent,43  // these are exported for backwards compatability44  HttpAgent: Agent,45  HttpsAgent: Agent,46  cache: {47    proxy: proxyCache,48    agent: agentCache,49    dns: dns.cache,50    clear: () => {51      proxyCache.clear()52      agentCache.clear()53      dns.cache.clear()54    },55  },56}57 
basant307/AI_Governance_Project · CoolFace