Sha256: c6b476b255c0f6c4e4af3dd4aa2a948b675de71d1e0eaa6dd8504fcb8301a184
Contents?: true
Size: 1.15 KB
Versions: 44
Compression:
Stored size: 1.15 KB
Contents
/** * utilities for hashing config objects. * basically iteratively updates hash with a JSON-like format */ "use strict" exports.__esModule = true const createHash = require('crypto').createHash const stringify = JSON.stringify function hashify(value, hash) { if (!hash) hash = createHash('sha256') if (value instanceof Array) { hashArray(value, hash) } else if (value instanceof Object) { hashObject(value, hash) } else { hash.update(stringify(value) || 'undefined') } return hash } exports.default = hashify function hashArray(array, hash) { if (!hash) hash = createHash('sha256') hash.update('[') for (let i = 0; i < array.length; i++) { hashify(array[i], hash) hash.update(',') } hash.update(']') return hash } hashify.array = hashArray exports.hashArray = hashArray function hashObject(object, hash) { if (!hash) hash = createHash('sha256') hash.update("{") Object.keys(object).sort().forEach(key => { hash.update(stringify(key)) hash.update(':') hashify(object[key], hash) hash.update(",") }) hash.update('}') return hash } hashify.object = hashObject exports.hashObject = hashObject
Version data entries
44 entries across 44 versions & 2 rubygems