const hexdigit = (c: number) => '0123456789abcdef'[c & 15]; export function uuid(): string { // https://datatracker.ietf.org/doc/html/rfc4122#section-4.4 const bs = new Uint8Array(16); crypto.getRandomValues(bs); bs[6] = (bs[6] & 15) | 0x40; bs[8] = (bs[8] & 63) | 0x80; const result: string[] = []; bs.forEach(b => result.push(hexdigit(b >> 4), hexdigit(b))); const s = result.join(''); return [s.slice(0,8), s.slice(8,12), s.slice(12,16), s.slice(16,20), s.slice(20)].join('-'); }