File size: 387 Bytes
4a6603b
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
type UUID = ReturnType<typeof crypto.randomUUID>;

export function randomUUID(): UUID {
	// Only on old safari / ios
	if (!("randomUUID" in crypto)) {
		return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, (c) =>
			(
				Number(c) ^
				(crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (Number(c) / 4)))
			).toString(16)
		) as UUID;
	}
	return crypto.randomUUID();
}