1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
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
|