UNPKG

656 BPlain TextView Raw
1const randomBuffer = new Uint16Array(1);
2
3/**
4 * Returns a random number on [0, 1)
5 * Uses window.crypto if available
6 */
7function rand() {
8 if (typeof crypto !== "undefined") {
9 crypto.getRandomValues(randomBuffer);
10 return randomBuffer[0] / 2**16;
11 } else {
12 return Math.random();
13 }
14}
15
16const UUID = {
17 /**
18 * Generates a v4 UUID.
19 */
20 get() {
21 const template = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";
22 const value = template.replace(/[xy]/g, c => {
23 let v = Math.floor(rand() * 16);
24
25 if (c !== "x") {
26 v = v & 0x3 | 0x8;
27 }
28
29 return v.toString(16);
30 });
31
32 return value;
33 }
34};
35
36export default UUID;
\No newline at end of file