# xxhashjs

> xxHash in Javascript

Latest version **0.2.2** (published 2018-01-18) · MIT license · 0 weekly downloads

## Install

```sh
npm install xxhashjs
pnpm add xxhashjs
yarn add xxhashjs
bun add xxhashjs
```

## Health

**Score 23/100 (F)** — status: abandoned.

Positive: has types package; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.2 |
| Published | 2018-01-18 |
| First published | 2013-12-31 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | separate (@types/xxhashjs) |
| Module format | CommonJS |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 298 |
| Author | Pierre Curto |
| Maintainers | pierrec |
| Keywords | xxhash, xxh |

## Links

- npm: https://www.npmjs.com/package/xxhashjs
- Repository: https://github.com/pierrec/js-xxhash
- Issues: https://github.com/pierrec/js-xxhash/issues
- npm.io page: https://npm.io/package/xxhashjs

## Dependencies (1)

- [cuint](https://npm.io/package/cuint.md) ^0.2.2

## Alternatives

- [@gemini-wallet/core](https://npm.io/package/@gemini-wallet/core.md) — 515.6K weekly downloads
- [utility](https://npm.io/package/utility.md) — 416.6K weekly downloads
- [@primno/dpapi](https://npm.io/package/@primno/dpapi.md) — 7.2K weekly downloads
- [pi-readseek](https://npm.io/package/pi-readseek.md) — 3.7K weekly downloads
- [@emilia-protocol/verify](https://npm.io/package/@emilia-protocol/verify.md) — 1.1K weekly downloads

## Recent versions

- 0.2.2 (latest) — 2018-01-18
- 0.2.1 — 2016-06-27
- 0.2.0 — 2016-06-27
- 0.1.1 — 2015-03-31
- 0.1.0 — 2015-03-12
- 0.0.5 — 2014-05-20
- 0.0.4 — 2014-04-25
- 0.0.3 — 2014-03-21
- 0.0.2 — 2014-01-19
- 0.0.1 — 2014-01-01
- 0.0.0 — 2013-12-31

## README

# Javascript implementation of xxHash

## Synopsis

xxHash is a very fast hashing algorithm (see the details [here](https://code.google.com/p/xxhash/)). 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_:

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


## Examples

* In one step:
```javascript
var h = XXH.h32( 'abcd', 0xABCD ).toString(16)	// seed = 0xABCD
```
> 0xCDA8FAE4

* In several steps (useful in conjunction of NodeJS streams):
```javascript
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

---
_Source: https://npm.io/package/xxhashjs · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
