nyxhash v0.0.5
⚡ Super fast hashing library
Usage
Install package:
# nyxi
nyxi nyxhash
# pnpm
pnpm i nyxhash
# npm
npm i nyxhash
# yarn
yarn add nyxhash
Import:
// ESM
import { hash, murmurHash, objectHash, sha256 } from 'nyxhash'
// CommonJS
const { hash, objectHash, murmurHash, sha256 } = require('nyxhash')
hash(object, options?)
Converts object value into a string hash using objectHash
and then applies sha256
with Base64 encoding (trimmed by length of 10).
Usage:
import { hash } from 'nyxhash'
// "dZbtA7f0lK"
console.log(hash({ foo: 'bar' }))
objectHash(object, options?)
Converts a nest object value into a stable and safe string for hashing.
Usage:
import { objectHash } from 'nyxhash'
// "object:1:string:3:foo:string:3:bar,"
console.log(objectHash({ foo: 'bar' }))
isEqual(obj1, obj2, options?)
Compare two objects using reference equality and stable object hashing.
Usage:
import { isEqual } from 'nyxhash'
// true
console.log(isEqual({ a: 1, b: 2 }, { b: 2, a: 1 }))
diff(obj1, obj2, options?)
Compare two objects with nested hashing. Returns an array of changes.
Returned value is an array of diff entries with $key
, $hash
, $value
and $props
. When logging, a string version of changelog is displayed.
Usage:
import { diff } from 'nyxhash'
function createObject() {
return {
foo: 'bar',
nested: {
y: 123,
bar: {
baz: '123',
},
},
}
}
const obj1 = createObject()
const obj2 = createObject()
obj2.nested.x = 123
delete obj2.nested.y
obj2.nested.bar.baz = 123
const diff = diff(obj1, obj2)
// [-] Removed nested.y
// [~] Changed nested.bar.baz from "123" to 123
// [+] Added nested.x
console.log(diff(obj1, obj2))
murmurHash(str)
Converts input string (of any length) into a 32-bit positive integer using MurmurHash3.
Usage:
import { murmurHash } from 'nyxhash'
// "2708020327"
console.log(murmurHash('Hello World'))
sha256
Create a secure SHA 256 digest from input string.
import { sha256 } from 'nyxhash'
// "a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e"
console.log(sha256('Hello World'))
sha256base64
Create a secure SHA 256 digest in Base64 encoding from input string.
import { sha256base64 } from 'nyxhash'
// "pZGm1Av0IEBKARczz7exkNYsZb8LzaMrV7J32a2fFG4"
console.log(sha256base64('Hello World'))
💻 Development
- Clone this repository
- Navigate to pacckages/nyxhash
- Enable Corepack using
corepack enable
(usenpm i -g corepack
for Node.js < 16.10) - Install dependencies using
nyxi
- Run interactive tests using
nyxr dev
License
Made with 💞
Published under MIT License.
Based on puleos/object-hash by Scott Puleo, and implementations from perezd/node-murmurhash and garycourt/murmurhash-js by Gary Court and Austin Appleby and brix/crypto-js.