summaryrefslogtreecommitdiff
path: root/cli/bench/testdata/npm/hono/dist/utils/crypto.js
blob: 0d259ae1c4afe1d11082d138198159634777e0a8 (plain)
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
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createHash = exports.md5 = exports.sha1 = exports.sha256 = void 0;
const sha256 = async (data) => {
    const algorithm = { name: 'SHA-256', alias: 'sha256' };
    const hash = await (0, exports.createHash)(data, algorithm);
    return hash;
};
exports.sha256 = sha256;
const sha1 = async (data) => {
    const algorithm = { name: 'SHA-1', alias: 'sha1' };
    const hash = await (0, exports.createHash)(data, algorithm);
    return hash;
};
exports.sha1 = sha1;
const md5 = async (data) => {
    const algorithm = { name: 'MD5', alias: 'md5' };
    const hash = await (0, exports.createHash)(data, algorithm);
    return hash;
};
exports.md5 = md5;
const createHash = async (data, algorithm) => {
    let sourceBuffer;
    if (data instanceof ReadableStream) {
        let body = '';
        const reader = data.getReader();
        await reader?.read().then(async (chuck) => {
            const value = await (0, exports.createHash)(chuck.value || '', algorithm);
            body += value;
        });
        return body;
    }
    if (ArrayBuffer.isView(data) || data instanceof ArrayBuffer) {
        sourceBuffer = data;
    }
    else {
        if (typeof data === 'object') {
            data = JSON.stringify(data);
        }
        sourceBuffer = new TextEncoder().encode(String(data));
    }
    if (crypto && crypto.subtle) {
        const buffer = await crypto.subtle.digest({
            name: algorithm.name,
        }, sourceBuffer);
        const hash = Array.prototype.map
            .call(new Uint8Array(buffer), (x) => ('00' + x.toString(16)).slice(-2))
            .join('');
        return hash;
    }
    return null;
};
exports.createHash = createHash;