Spaces:
Configuration error
Configuration error
import { normalizeInput } from './hash-fn.js'; | |
import { BaseHash } from '../base/index.js'; | |
import { Transform } from 'stream.js'; | |
import { getWasm } from './wasm.js'; | |
import { NodeHashReader } from './hash-reader.js'; | |
/** | |
* @inheritdoc | |
*/ | |
export class NodeHash extends Transform { | |
constructor(implementation, getReader) { | |
super(); | |
this.hash = new BaseHash(implementation, l => Buffer.alloc(l), getReader); | |
} | |
/** | |
* @reader | |
*/ | |
reader(options) { | |
const reader = this.hash.reader(options); | |
return reader; | |
} | |
/** | |
* @inheritdoc | |
*/ | |
update(data, encoding) { | |
this.hash.update(normalizeInput(data, encoding)); | |
return this; | |
} | |
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 | |
*/ | |
dispose() { | |
this.hash.dispose(); | |
} | |
/** | |
* @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().create_hasher(), r => new NodeHashReader(r)); | |
/** | |
* Construct a new Hasher for the keyed hash function. | |
*/ | |
export const createKeyed = (key) => new NodeHash(getWasm().create_keyed(key), r => new NodeHashReader(r)); | |
/** | |
* Construct a new Hasher for the key derivation function. | |
*/ | |
export const createDeriveKey = (context) => new NodeHash(getWasm().create_derive(context), r => new NodeHashReader(r)); | |
//# sourceMappingURL=hash-instance.js.map |