Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

xxhashjs

pierrec4.4mMIT0.2.2TypeScript support: definitely-typed

xxHash in Javascript

xxhash, xxh

readme

Javascript implementation of xxHash

Synopsis

xxHash is a very fast hashing algorithm (see the details here). xxhashjs is a Javascript implementation of it, written in 100% Javascript. Although not as fast as the C version, it does perform pretty well given the current Javascript limitations in handling unsigned 32 bits integers.

Installation

In nodejs:

npm install xxhashjs

In the browser, include the following, and access the constructor with XXH:

<script src="/your/path/to/xxhash.js"></script>

Examples

  • In one step:

    var h = XXH.h32( 'abcd', 0xABCD ).toString(16)    // seed = 0xABCD

    0xCDA8FAE4

  • In several steps (useful in conjunction of NodeJS streams):

    var H = XXH.h32( 0xABCD )    // seed = 0xABCD
    var h = H.update( 'abcd' ).digest().toString(16)

    0xCDA8FAE4

  • More examples in the examples directory:

    • Compute xxHash from a file data
    • Use xxHashjs in the browser

Usage

  • XXH makes 2 functions available for 32 bits XXH and 64 bits XXH respectively, with the same signature:

    • XXH.h32
    • XXH.h64
  • In one step: XXH.h32(<data>, <seed>) The data can either be a string, an ArrayBuffer or a NodeJS Buffer object. The seed can either be a number or a UINT32 object.

  • In several steps:

    • instantiate a new XXH object H: XXH.h32(<seed>) or XXH.h32() The seed can be set later on with the init method

    • add data to the hash calculation: H.update(<data>)

    • finish the calculations: H.digest()

The object returned can be converted to a string with toString(<radix>) or a number toNumber(). Once digest() has been called, the object can be reused. The same seed will be used or it can be changed with init(<seed>).

Methods

  • XXH.h32()

    • .init(<seed>) Initialize the XXH object with the given seed. The seed can either be a number or a UINT32 object.
    • .update(<data>) Add data for hashing. The data can either be a string, an ArrayBuffer or a NodeJS Buffer object.
  • digest() (UINT32) Finalize the hash calculations and returns an UINT32 object. The hash value can be retrieved with toString(<radix>).

  • XXH.h64()

    • .init(<seed>) Initialize the XXH object with the given seed. The seed can either be a number or a UINT64 object.
    • .update(<data>) Add data for hashing. The data can either be a string, an ArrayBuffer or a NodeJS Buffer object.
    • .digest() (UINT64) Finalize the hash calculations and returns an UINT64 object. The hash value can be retrieved with toString(<radix>).

License

MIT

changelog

0.1.0 / 2015-03-12

  • Fix for issue #5: convert all strings to utf-8

0.0.5 / 2014-05-19

  • Added ArrayBuffer support

0.0.4 / 2014-04-25

  • Fixed undefined Buffer in browsers

0.0.3 / 2014-03-21

  • fixed update() on values < 16

0.0.2 / 2014-01-19

  • added tests
  • updated README

0.0.1 / 2014-01-01

  • Improved performance on large inputs (112Mb sample file in 4s instead of 4.6s)

0.0.0 / 2013-12-31

  • Initial release