File size: 2,235 Bytes
5641073
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
77
78
79
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const hash_fn_1 = require("./hash-fn");
const index_1 = require("../base/index");
const stream_1 = require("stream");
const wasm_1 = require("./wasm");
const hash_reader_1 = require("./hash-reader");
/**
 * @inheritdoc
 */
class NodeHash extends stream_1.Transform {
    constructor(implementation, getReader) {
        super();
        this.hash = new index_1.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(hash_fn_1.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());
    }
}
exports.NodeHash = NodeHash;
/**
 * A Node.js crypto-like createHash method.
 */
exports.createHash = () => new NodeHash(wasm_1.getWasm().create_hasher(), r => new hash_reader_1.NodeHashReader(r));
/**
 * Construct a new Hasher for the keyed hash function.
 */
exports.createKeyed = (key) => new NodeHash(wasm_1.getWasm().create_keyed(key), r => new hash_reader_1.NodeHashReader(r));
/**
 * Construct a new Hasher for the key derivation function.
 */
exports.createDeriveKey = (context) => new NodeHash(wasm_1.getWasm().create_derive(context), r => new hash_reader_1.NodeHashReader(r));
//# sourceMappingURL=hash-instance.js.map