From 539275e014d044de1a0016272ba33036ea9d78ba Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Thu, 18 Oct 2018 11:30:43 +0200
Subject: [PATCH] feat(packagist): fetch files in parallel

---
 lib/datasource/packagist.js | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/lib/datasource/packagist.js b/lib/datasource/packagist.js
index 66f9ff16e5..09f3fb2a73 100644
--- a/lib/datasource/packagist.js
+++ b/lib/datasource/packagist.js
@@ -3,6 +3,7 @@ const URL = require('url');
 const delay = require('delay');
 const got = require('got');
 const parse = require('github-url-from-git');
+const pAll = require('p-all');
 const { isVersion, sortVersions } = require('../versioning')('semverComposer');
 const hostRules = require('../util/host-rules');
 
@@ -132,10 +133,10 @@ async function getAllPackages(regUrl) {
   }
   const { packages, providersUrl, files, includesFiles } = registryMeta;
   const providerPackages = {};
-  // TODO: refactor the following to be in parallel
   if (files) {
-    for (const file of files) {
-      const res = await getPackagistFile(regUrl, file);
+    const queue = files.map(file => () => getPackagistFile(regUrl, file));
+    const resolvedFiles = await pAll(queue, { concurrency: 5 });
+    for (const res of resolvedFiles) {
       for (const [name, val] of Object.entries(res.providers)) {
         providerPackages[name] = val.sha256;
       }
-- 
GitLab