Skip to content
MurmurHash3, in JavaScript.
TypeScript
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src Tighten up. Jan 2, 2020
.gitignore
.travis.yml Add Travis, Coveralls, and badges. Jan 2, 2020
LICENSE
README.md Tighten up. Jan 2, 2020
jestconfig.json Add Travis, Coveralls, and badges. Jan 2, 2020
package.json Tighten up. Jan 2, 2020
tsconfig.json Acquiese to Node. Jan 2, 2020
tslint.json Initial v3 commit. Jan 2, 2020
yarn.lock Tighten up. Jan 2, 2020

README.md

MurmurHash3.js - MurmurHash3, in JavaScript.

NPM Package MIT License Build Status Coverage Status

Usage

> const murmurHash3 = require('murmurhash3.js');

// Return a 32bit hash as an unsigned integer:
> murmurHash3.x86.hash32("I will not buy this record, it is scratched.");
  2832214938

// Return a 128bit hash as a hexadecimal string:
> murmurHash3.x86.hash128("I will not buy this tobacconist's, it is scratched.");
  '9b5b7ba2ef3f7866889adeaf00f3f98e'
> murmurHash3.x64.hash128("I will not buy this tobacconist's, it is scratched.");
  'd30654abbd8227e367d73523f0079673'

// Specify a starting seed (defaults to 0x0):
> murmurHash3.x86.hash32("My hovercraft is full of eels.", 25);
  2520298415

// Hash buffers:
> const buf = new Uint8Array(Array.from({ length: 256}, (_, i) => i));
> murmurHash3.x86.hash32(buf);
  3825864278
> murmurHash3.x86.hash128(buf);
  Uint8Array [44, 86, 200, 143, 219, 69, 3, 223, 211, 82, 178, 26, 73, 76, 162, 192];

// Progressively hash streams of data as either buffers or strings:
> const state32 = murmurHash3.x86.hash32(buf.slice(0, 127), 0x0, false);
> murmurHash3.x86.hash32(buf.slice(127), state32, true);
  3825864278
> const state128 = murmurHash3.x86.hash128(buf.slice(0, 127), 0x0, false);
> murmurHash3.x86.hash128(buf.slice(127), state128, true);
  Uint8Array [44, 86, 200, 143, 219, 69, 3, 223, 211, 82, 178, 26, 73, 76, 162, 192];

API

murmurHash3 = {
  strToBuf: (str: string = ""): Uint8Array,
  bufToHex: (buf: Uint8Array = new Uint8Array(0)): string,
  x86: {
    hash32: (
      buf: Uint8Array | string = new Uint8Array(0),
      state: u32 | x86hash32State = 0x0,
      finalize: boolean = true,
    ): u32 | x86hash32State,
    hash128: (
      buf: Uint8Array | string = new Uint8Array(0),
      state: u32 | x86hash128State = 0x0,
      finalize: boolean = true
    ): Uint8Array | string | x86hash128State,
  },
  x64: {
    hash128: (
      buf: Uint8Array | string = new Uint8Array(0),
      state: u32 | x64hash128State = 0x0,
      finalize: boolean = true
    ): Uint8Array| string | x64hash128State,
  },
}

Requires TextEncoder, Typed Arrays & DataView, and additional es6/es2015 features; bring your own transpiler and polyfills to target the past.

You can’t perform that action at this time.