@fivem-ts/server
Version:
FiveM Typescript wrapper server Part
24 lines (23 loc) • 991 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.uuidv4 = uuidv4;
exports.uuidv5 = uuidv5;
const crypto_1 = require("crypto");
function uuidv4() {
const chars = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.split('');
for (let i = 0; i < chars.length; i++) {
if (chars[i] === 'x') {
chars[i] = ((Math.random() * 16) | 0).toString(16);
}
else if (chars[i] === 'y') {
chars[i] = ((Math.random() * 4) | 8).toString(16);
}
}
return chars.join('');
}
function uuidv5(name, namespace) {
const nsBytes = Buffer.from(namespace.replace(/-/g, ''), 'hex');
const nameBytes = Buffer.from('name', 'utf8');
const hash = (0, crypto_1.createHash)('sha1').update(nsBytes).update(nameBytes).digest('hex');
return `${hash.slice(0, 8)}-${hash.slice(8, 12)}-5${hash.slice(13, 16)}-${((parseInt(hash.slice(16, 18), 16) & 0x3f) | 0x80).toString(16)}${hash.slice(18, 20)}-${hash.slice(20, 32)}`;
}