Skip to content

shibukawa/xxhash.jsx

Repository files navigation

xxhash.jsx

Synopsis

JSX implementation of very fast hasing algorithm xxHash. It can use from any JavaScript environment (common.js(node.js), AMD, browser, etc).

This code is based on Pierrec's js-xxhash.

Code Example

Use from JSX

import "xxhash.jsx";

class _Main {
    static function main(argv : string[]) : void
    {
        var seed = 0xabcd;
        // single line way
        var hashStr : string = StringXXH.digestHex('input string', seed);

        // flexible way
        var hhx = new StringXXH(seed);
        hhx.update('first input string');
        hhx.update('second input string');
        var hashNum : number = hhx.digest();
        // or 
        var hashStr2 : string = hhx.digestHex();
    }
}

Use from node.js

var xxhash = require('xxhash.common.js');
var fs = require('fs');

var buffer = fs.readFileSync('inputfile.txt');
var hash = xxhash.XXH.digestHex(buffer, 0xabcd);
console.log(hash);

Use from require.js

// use xxhash.amd.js
define(['xxhash'], function (xxhash) {
    var hash = xxhash.XXH.digest('input string', 0x1111);
});

Use via global variables

<script src="xxhash.global.js" type="text/javascript"></script>
<script type="text/javascript">
window.onload = function () {
    alert(XXH.digestHex('content', 0xabcd));
});
</script>

Installation

$ npm install xxhash.jsx

If you want to use this library from other JSX project, install like the following:

$ npm install xxhash.jsx --save-dev

API Reference for JS

For JavaScript environment, it provides entrypoint "XXH". It provides static methods to calculate XXHASH.

XXH.digest(input : string/ArrayBuffer/Uint8Array, seed : number) : number

It returns calculated hash value as number.

XXH.digestHex(input : string/ArrayBufferUint8Array, seed : number) : string

It returns calculated hash value as hex string.

API Reference for JSX

In addition to XXH class, there are two classes in this module;

  • class StringXXH
  • class ArrayBufferXXH

All classes have same methods. ArrayBufferXXH supports Uint8Array as input in addition to ArrayBuffer.

static function digest(input : inputtype, seed : number) : number

It returns calculated hash value as number.

static function digestHex(input : inputtype, seed : number) : string

It returns calculated hash value as hex string.

function constructor(seed : number)

Initialize hash calculator object.

function update(input : inputtype) : self

Add input. This method can be called multipul times.

function digest() : number

It returns calculated hash as number.

function digestHex() : string

It returns calculated hash as string.

function init(seed : number) : void

Initialize object content.

Development

JSX

Don't be afraid JSX! If you have an experience of JavaScript, you can learn JSX quickly.

  • Static type system and unified class syntax.
  • All variables and methods belong to class.
  • JSX includes optimizer. You don't have to write tricky unreadalbe code for speed.
  • You can use almost all JavaScript API as you know. Some functions become static class functions. See reference.

Setup

To create development environment, call following command:

$ npm install

Repository

Run Test

$ grunt test

Build

$ grunt build

Generate API reference

$ grunt doc

Author

License

The MIT License (MIT)

Complete license is written in LICENSE.md.

About

JSX implementation of xxhash

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published