UNPKG

blake3-wasm

Version:

BLAKE3 hashing for JavaScript: WebAssembly bindings only

77 lines 2.01 kB
import { getWasm, HashRaw, inputToArray, WasmHasher, } from '@c4312/blake3-internal'; import { Transform } from 'stream'; class BufferHash extends WasmHasher { alloc(n) { return Buffer.allocUnsafe(n); } } /** * @inheritdoc */ export class NodeHash extends Transform { constructor(wasmModule, hasher) { super(); this.hash = new BufferHash(wasmModule, hasher); } /** * @reader */ reader() { return this.hash.reader(); } /** * @inheritdoc */ update(data, encoding) { this.hash.update(encoding && typeof data === 'string' ? Buffer.from(data, encoding) : inputToArray(data)); return this; } /** * @inheritdoc */ dispose() { this.hash.dispose(); } digest(encoding, options) { let resolvedOpts; let resolvedEnc; if (encoding && typeof encoding === 'object') { resolvedOpts = encoding; resolvedEnc = undefined; } else { resolvedOpts = options; resolvedEnc = encoding; } const result = this.hash.digest(resolvedOpts); return resolvedEnc ? result.toString(resolvedEnc) : result; } /** * @inheritdoc * @hidden */ _transform(chunk, encoding, callback) { this.update(chunk, encoding); callback(); } /** * @inheritdoc * @hidden */ _flush(callback) { callback(null, this.digest()); } } /** * A Node.js crypto-like createHash method. */ export const createHash = () => new NodeHash(getWasm(), HashRaw.default()); /** * Construct a new Hasher for the keyed hash function. */ export const createKeyed = (key) => new NodeHash(getWasm(), HashRaw.keyed(inputToArray(key))); /** * Construct a new Hasher for the key derivation function. */ export const createDeriveKey = (context) => new NodeHash(getWasm(), HashRaw.derive(inputToArray(context))); //# sourceMappingURL=hash-instance.js.map