tiny-object-hash

1.0.1 • Public • Published

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 for typeof 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.

license

MIT

Readme

Keywords

Package Sidebar

Install

npm i tiny-object-hash

Weekly Downloads

731

Version

1.0.1

License

MIT

Unpacked Size

3.98 kB

Total Files

4

Last publish

Collaborators

  • henrikjoreteg