blob: 9587cee1e32586ac1da9ce6b9eaf662144bdbc1f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
'use strict'
const packageHash = require('package-hash')
const md5Hex = require('md5-hex')
const errors = require('./errors')
const readSafe = require('./readSafe')
function hashFile (filename, cache) {
return readSafe(filename, cache)
.then(contents => {
if (!contents) throw new errors.BadDependencyError(filename)
return md5Hex(contents)
})
}
function hashPackage (filename, fromPackage) {
return packageHash(`${fromPackage}/package.json`)
.catch(err => {
throw new errors.BadDependencyError(filename, err)
})
}
function hashDependency (filename, fromPackage, cache) {
if (cache && cache.dependencyHashes && cache.dependencyHashes.has(filename)) {
return cache.dependencyHashes.get(filename)
}
const promise = fromPackage
? hashPackage(filename, fromPackage)
: hashFile(filename, cache)
if (cache && cache.dependencyHashes) {
cache.dependencyHashes.set(filename, promise)
}
return promise
}
function hashDependencies (dependencies, cache) {
const promises = dependencies.map(item => hashDependency(item.filename, item.fromPackage, cache))
return Promise.all(promises)
}
module.exports = hashDependencies
|