🔗 DistBoard @hugoalh ● GitHub ● JSR ● NPM
An ECMAScript module to get the non-cryptographic hash of the data with algorithm Fowler-Noll-Vo (FNV).
- Support bits size of 32, 64, 128, 256, 512, and 1024.
- Support variants of 0, 1, and 1a.
Any runtime which support ECMAScript should able to use this; These runtimes are officially supported:
This does not request any runtime permission.
| Type | Name | Path | Description |
|---|---|---|---|
| API | . |
./mod.ts |
Default. |
| API | ./0 |
./0.ts |
Variant of 0. |
| API | ./1 |
./1.ts |
Variant of 1. |
| API | ./1a |
./1a.ts |
Variant of 1a. |
| API | ./base |
./base.ts |
Base of FNV. |
| CLI | ./cli |
./cli.ts |
Default. |
Note
- Different runtimes have vary support for the entrypoints, visit the runtime documentation for more information.
- These are not part of the public APIs hence should not be used:
- Benchmark/Test file (e.g.:
example.bench.ts,example.test.ts). - Entrypoint name or path include any underscore prefix (e.g.:
_example.ts,foo/_example.ts). - Identifier/Namespace/Symbol include any underscore prefix (e.g.:
_example,Foo._example).
- Benchmark/Test file (e.g.:
-
class FNV { constructor(options?: FNVOptions); get freezed(): boolean; get size(): FNVBitsSize; get variant(): FNVVariant; freeze(): this; hash(): Uint8Array; hashHex(): string; update(data: FNVAcceptDataType): this; updateFromStream(stream: ReadableStream<FNVAcceptDataType>): Promise<this>; }
-
class FNV0 extends FNV { constructor(options?: Omit<FNVOptions, "variant">); }
-
class FNV1 extends FNV { constructor(options?: Omit<FNVOptions, "variant">); }
-
class FNV1a extends FNV { constructor(options?: Omit<FNVOptions, "variant">); }
-
interface FNVOptions { size?: FNVBitsSize; variant?: FNVVariant; }
-
type FNVAcceptDataType = | string | Uint8Array | Uint16Array | Uint32Array;
-
type FNVBitsSize = | 32 | 64 | 128 | 256 | 512 | 1024;
-
type FNVVariant = | "0" | "1" | "1a";
Note
- For the full or prettier documentation, can visit via:
-
fnv $Context [--size $Size] [--variant $Variant]
-
fnv --file $FilePath [--size $Size] [--variant $Variant]
-
fnv --stdin [--size $Size] [--variant $Variant]
| Argument | Type | Description |
|---|---|---|
file |
switch |
Whether the resource is from file. |
size |
FNVBitsSize = 1024 |
FNV bits size. |
stdin |
switch |
Whether the resource is from standard stream input. |
variant |
FNVVariant = "1a" |
FNV variant. |
-
new FNV1a({ size: 32 }).update("hello").hashHex(); //=> "4F9F2CAB"
-
fnv 'hello' --size 32 --variant '1a'