Skip to content
Snippets Groups Projects
Select Git revision
  • 8687cdb481c2c63f8e430ba2be53918cf7537d1e
  • master default protected
  • v1.11.0
  • v1.10.0
  • v1.9.0
  • v1.8.0
  • v1.7.0
  • v1.6.0
  • v1.5.0
  • v1.4.0
  • v1.3.1
  • v1.3.0
  • v1.2.1
  • v1.2.0
  • v1.1.0
  • v1.0.0
16 results

go.mod

Blame
  • This project manages its dependencies using Go Modules. Learn more
    queue.ts 784 B
    import URL from 'url';
    import PQueue from 'p-queue';
    import { getRequestLimit } from './host-rules';
    
    const hostQueues = new Map<string | null, PQueue | null>();
    
    function getUrlHost(url: string): string | null {
      try {
        return URL.parse(url).host;
      } catch (e) {
        return null;
      }
    }
    
    export function getQueue(url: string): PQueue | null {
      const host = getUrlHost(url);
      if (!host) {
        return null;
      }
    
      let queue = hostQueues.get(host);
      if (queue === undefined) {
        queue = null; // null represents "no queue", as opposed to undefined
        const concurrency = getRequestLimit(url);
        if (concurrency) {
          queue = new PQueue({ concurrency });
        }
      }
      hostQueues.set(host, queue);
    
      return queue;
    }
    
    export function clear(): void {
      hostQueues.clear();
    }