{"version":3,"sources":["../../src/crypto/uuid.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\n// Web Crypto only — no import('node:crypto') so isolate/edge bundlers can resolve this module\nexport async function getRandomBytes(size: number = 16): Promise<Uint8Array> {\n  if (!globalThis.crypto?.getRandomValues) {\n    throw new Error('Web Crypto API is required (globalThis.crypto.getRandomValues)');\n  }\n  return crypto.getRandomValues(new Uint8Array(size));\n}\n\n// A random RFC 4122 v4 UUID. Prefers the platform's randomUUID (Node 19+, edge\n// runtimes, browsers in a secure context) and otherwise formats random bytes,\n// so it works everywhere getRandomBytes does.\nexport async function randomUUID(): Promise<string> {\n  if (typeof globalThis.crypto?.randomUUID === 'function') {\n    return crypto.randomUUID();\n  }\n  const bytes = await getRandomBytes(16);\n  bytes[6] = (bytes[6]! & 0x0f) | 0x40; // version 4\n  bytes[8] = (bytes[8]! & 0x3f) | 0x80; // variant 1\n  const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('');\n  return [\n    hex.slice(0, 8),\n    hex.slice(8, 12),\n    hex.slice(12, 16),\n    hex.slice(16, 20),\n    hex.slice(20),\n  ].join('-');\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,eAAsB,eAAe,OAAe,IAAyB;AAL7E;AAME,MAAI,GAAC,gBAAW,WAAX,mBAAmB,kBAAiB;AACvC,UAAM,IAAI,MAAM,gEAAgE;AAAA,EAClF;AACA,SAAO,OAAO,gBAAgB,IAAI,WAAW,IAAI,CAAC;AACpD;AAKA,eAAsB,aAA8B;AAfpD;AAgBE,MAAI,SAAO,gBAAW,WAAX,mBAAmB,gBAAe,YAAY;AACvD,WAAO,OAAO,WAAW;AAAA,EAC3B;AACA,QAAM,QAAQ,MAAM,eAAe,EAAE;AACrC,QAAM,CAAC,IAAK,MAAM,CAAC,IAAK,KAAQ;AAChC,QAAM,CAAC,IAAK,MAAM,CAAC,IAAK,KAAQ;AAChC,QAAM,MAAM,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AAC7E,SAAO;AAAA,IACL,IAAI,MAAM,GAAG,CAAC;AAAA,IACd,IAAI,MAAM,GAAG,EAAE;AAAA,IACf,IAAI,MAAM,IAAI,EAAE;AAAA,IAChB,IAAI,MAAM,IAAI,EAAE;AAAA,IAChB,IAAI,MAAM,EAAE;AAAA,EACd,EAAE,KAAK,GAAG;AACZ;","names":[]}