@environment-safe/object-hash
v0.0.1
Published
An ESM reimplementation of object-hash for hashing objects
Downloads
21
Readme
object-hash
A cleanroom ESM reimplementation of object-hash without streams, but source compatible in the browser or server.
- Hash values of any type.
- Supports a keys only option for grouping similar objects with different values.
Usage
var hash = require('object-hash');
hash({foo: 'bar'}) // => '67b69634f9880a282c14a0f0cb7ba20cf5d677e9'
hash([1, 2, 2.718, 3.14159]) // => '136b9b88375971dff9f1af09d7356e3e04281951'hash(value, options)
Generate a hash from any object or type. Defaults to sha1 with hex encoding.
algorithmhash algo to be used: 'sha1', 'md5', 'passthrough'. default: sha1- This supports the algorithms returned by
crypto.getHashes(). Note that the default of SHA-1 is not considered secure, and a stronger algorithm should be used if a cryptographical hash is desired. - This also supports the
passthroughalgorith, which will return the information that would otherwise have been hashed.
- This supports the algorithms returned by
excludeValues{true|false} hash object keys, values ignored. default: falseencodinghash encoding, supports 'buffer', 'hex', 'binary', 'base64'. default: hexignoreUnknown{true|*false} ignore unknown object types. default: falsereplaceroptional function that replaces values before hashing. default: accept all valuesrespectFunctionProperties{true|false} Whether properties on functions are considered when hashing. default: truerespectFunctionNames{true|false} considernameproperty of functions for hashing. default: truerespectType{true|false} Whether special type attributes (.prototype,.__proto__,.constructor) are hashed. default: trueunorderedArrays{true|false} Sort all arrays before hashing. Note that this affects all collections, i.e. including typed arrays, Sets, Maps, etc. default: falseunorderedSets{true|false} SortSetandMapinstances before hashing, i.e. makehash(new Set([1, 2])) == hash(new Set([2, 1]))returntrue. default: trueunorderedObjects{true|false} Sort objects before hashing, i.e. makehash({ x: 1, y: 2 }) === hash({ y: 2, x: 1 }). default: trueexcludeKeysoptional function for excluding specific key(s) from hashing, if true is returned then exclude from hash. default: include all keys
Testing
Run the es module tests to test the root modules
npm run import-testto run the same test inside the browser:
npm run browser-testto run the same test headless in chrome:
npm run headless-browser-testto run the same test inside docker:
npm run container-testRun the commonjs tests against the /dist commonjs source (generated with the build-commonjs target).
npm run require-testDevelopment
All work is done in the .mjs files and will be transpiled on commit to commonjs and tested.
If the above tests pass, then attempt a commit which will generate .d.ts files alongside the src files and commonjs classes in dist
