tiny-object-hash
v1.0.1
Published
Tiny lib sorts keys and generates hash for JSON serializable objects so they can be compared across a network without having to send them back and forth. ~500 bytes. No dependencies.
Downloads
2,114
Readme
tiny-object-hash
Tiny lib sorts keys and generates hash for JSON serializable objects so they can be compared across a network without having to send them back and forth. ~500 bytes. No dependencies.
Works in browser and node (if you polyfill webcrypto in node).
- Sorts keys of objects first (without editing original).
- Uses simple is object check, meant so for comparing JSON serializeable "plain" JavaScript objects.
Uses web crypto to generate hashes in browser, polyfill it in node.js with github.com/PeculiarVentures/webcrypto. In node.js just include this line first:
require('tiny-object-hash/polyfill-crypto')
two exports
/**
* @param {object} obj Object to get a hash from
* @param {'SHA-1'|'SHA-256'|'SHA-384'|'SHA-512'} algo One of supported subtle crypto digest formats
* @returns {Promise<string>} Promise that resolves to a string containing the hash
*/
const getObjectHash = (obj, algo = 'SHA-1') => { ... }
/**
* @param {object} obj Object to sort.
* @returns {object} Copy of object with keys sorted in all nested objects
*/
const deepSort = obj => { ... }
tests
npm test
install
npm install tiny-object-hash
Change log
1.0.0
: Initial release.1.0.1
: Fix fortypeof null === 'object'
bug.
credits
If you like this follow @HenrikJoreteg on twitter.
Props to PeculiarVentures for building a WebCrypto polyfill for node.js and IndigoUnited for the inspiration for the deep sort implementation.