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("-");
| };
|
|