diff options
Diffstat (limited to 'node_modules/hullabaloo-config-manager/lib/hashDependencies.js')
-rw-r--r-- | node_modules/hullabaloo-config-manager/lib/hashDependencies.js | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/node_modules/hullabaloo-config-manager/lib/hashDependencies.js b/node_modules/hullabaloo-config-manager/lib/hashDependencies.js new file mode 100644 index 000000000..9587cee1e --- /dev/null +++ b/node_modules/hullabaloo-config-manager/lib/hashDependencies.js @@ -0,0 +1,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 |