@storm-stack/unique-identifier
Version:
This package provides a simple way to generate various types of unique identifiers.
34 lines (33 loc) • 661 B
JavaScript
let index = 256;
const hex = [];
let buffer;
while (index--) {
hex[index] = (index + 256).toString(16).slice(1);
}
export function uuid() {
let i = 0;
let num;
let out = "";
if (!buffer || index + 16 > 256) {
buffer = Array.from({ length: i = 256 });
while (i--) {
buffer[i] = Math.trunc(256 * Math.random());
}
i = index = 0;
}
for (; i < 16; i++) {
num = buffer[index + i];
if (i === 6) {
out += hex[num & 15 | 64];
} else if (i === 8) {
out += hex[num & 63 | 128];
} else {
out += hex[num];
}
if (i & 1 && i > 1 && i < 11) {
out += "-";
}
}
index++;
return out;
}