wallet-core/node_modules/hullabaloo-config-manager/lib/hashDependencies.js
2017-05-28 00:40:43 +02:00

45 lines
1.2 KiB
JavaScript

'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