diff --git a/pkgs/build-support/node/fetch-yarn-deps/index.js b/pkgs/build-support/node/fetch-yarn-deps/index.js index f3662a543616..b66e1220218d 100755 --- a/pkgs/build-support/node/fetch-yarn-deps/index.js +++ b/pkgs/build-support/node/fetch-yarn-deps/index.js @@ -33,11 +33,11 @@ const urlToName = url => { } } -const downloadFileHttps = (fileName, url, expectedHash) => { +const downloadFileHttps = (fileName, url, expectedHash, hashType = 'sha1') => { return new Promise((resolve, reject) => { https.get(url, (res) => { const file = fs.createWriteStream(fileName) - const hash = crypto.createHash('sha1') + const hash = crypto.createHash(hashType) res.pipe(file) res.pipe(hash).setEncoding('hex') res.on('end', () => { @@ -100,6 +100,10 @@ const downloadPkg = (pkg, verbose) => { } else if (isGitUrl(url)) { return downloadGit(fileName, url.replace(/^git\+/, ''), hash) } else if (url.startsWith('https://')) { + if (typeof pkg.integrity === 'string' || pkg.integrity instanceof String) { + const [ type, checksum ] = pkg.integrity.split('-') + return downloadFileHttps(fileName, url, Buffer.from(checksum, 'base64').toString('hex'), type) + } return downloadFileHttps(fileName, url, hash) } else if (url.startsWith('file:')) { console.warn(`ignoring unsupported file:path url "${url}"`)