aboutsummaryrefslogtreecommitdiff
path: root/node_modules/hullabaloo-config-manager/lib/hashDependencies.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/hullabaloo-config-manager/lib/hashDependencies.js')
-rw-r--r--node_modules/hullabaloo-config-manager/lib/hashDependencies.js44
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