Socket
Socket
Sign inDemoInstall

ohash

Package Overview
Dependencies
0
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    ohash

Super fast hashing library based on murmurhash3 written in Vanilla JS


Version published
Weekly downloads
2.5M
increased by2.89%
Maintainers
1
Install size
49.2 kB
Created
Weekly downloads
 

Changelog

Source

v1.1.3

compare changes

🔥 Performance

  • object-hash: Avoid using array to just concatenate the string (#36)
  • object-hash: Avoid toString when we know that the value is already a string (#33)
  • object-hash: Faster isNativeFunction check (#30)
  • object-hash: Faster extract object type from toString (#31)
  • object-hash: Faster object access by avoid string concat (#32)
  • object-hash: Faster circular checking by using map (#34)
  • object-hash: Reuse default options when is not passed (#37)
  • object-hash: Avoid splice method to insert values (#35)

💅 Refactors

📖 Documentation

  • Improve jsdoc for objectHash() (#43)

🏡 Chore

❤️ Contributors

  • Pooya Parsa (@pi0)
  • Owen Kieffer-Jones
  • Vinicius Lourenço

Readme

Source

ohash

npm version npm downloads Github Actions Codecov bundle size

Super fast hashing library written in Vanilla JS

Usage

Install package:

# npm
npm install ohash

# yarn
yarn add ohash

# pnpm
pnpm install ohash

Import:

// ESM
import { hash, objectHash, murmurHash, sha256 } from "ohash";

// CommonJS
const { hash, objectHash, murmurHash, sha256 } = require("ohash");

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 "ohash";

// "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 "ohash";

// "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 "ohash";

// 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 "ohash";

const createObject = () => ({
  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 "ohash";

// "2708020327"
console.log(murmurHash("Hello World"));

sha256

Create a secure SHA 256 digest from input string.

import { sha256 } from "ohash";

// "a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e"
console.log(sha256("Hello World"));

sha256base64

Create a secure SHA 256 digest in Base64 encoding from input string.

import { sha256base64 } from "ohash";

// "pZGm1Av0IEBKARczz7exkNYsZb8LzaMrV7J32a2fFG4"
console.log(sha256base64("Hello World"));

💻 Development

  • Clone this repository
  • Enable Corepack using corepack enable (use npm i -g corepack for Node.js < 16.10)
  • Install dependencies using pnpm install
  • Run interactive tests using pnpm 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.

FAQs

Last updated on 10 Aug 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc