啊鑫
7 天以前 fca192d3c38c5dcfbb6ace8bc71d6078f6a079b2
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
/*
    MIT License http://www.opensource.org/licenses/mit-license.php
    Author Alexander Akait @alexander-akait
*/
 
"use strict";
 
const createHash = require("./createHash");
 
/**
 * @param {string | Buffer} content content
 * @param {string} file file
 * @returns {string} generated debug id
 */
module.exports = (content, file) => {
    // We need a uuid which is 128 bits so we need 2x 64 bit hashes.
    // The first 64 bits is a hash of the source.
    const sourceHash = createHash("xxhash64").update(content).digest("hex");
    // The next 64 bits is a hash of the filename and sourceHash
    const hash128 = `${sourceHash}${createHash("xxhash64")
        .update(file)
        .update(sourceHash)
        .digest("hex")}`;
 
    return [
        hash128.slice(0, 8),
        hash128.slice(8, 12),
        `4${hash128.slice(12, 15)}`,
        ((Number.parseInt(hash128.slice(15, 16), 16) & 3) | 8).toString(16) +
            hash128.slice(17, 20),
        hash128.slice(20, 32)
    ].join("-");
};