Re-use registry HTTP agent for package info requests

This commit is contained in:
Michael Jackson
2018-07-14 17:41:58 -07:00
parent 4360fbf7d6
commit 5f0fa21063
8 changed files with 90 additions and 46 deletions

View File

@ -0,0 +1,35 @@
const url = require("url");
const https = require("https");
const gunzip = require("gunzip-maybe");
const tar = require("tar-stream");
const agent = require("./registryAgent");
function fetchNpmPackage(packageConfig) {
return new Promise((resolve, reject) => {
const tarballURL = packageConfig.dist.tarball;
console.log(
`info: Fetching package for ${packageConfig.name} from ${tarballURL}`
);
const { hostname, pathname } = url.parse(tarballURL);
const options = {
agent: agent,
hostname: hostname,
path: pathname
};
https
.get(options, res => {
if (res.statusCode === 200) {
resolve(res.pipe(gunzip()).pipe(tar.extract()));
} else {
reject(res);
}
})
.on("error", reject);
});
}
module.exports = fetchNpmPackage;