@tanstack/db
Version:
A reactive client store for building super fast apps on sync
1 lines • 2.52 kB
Source Map (JSON)
{"version":3,"file":"uuid.cjs","sources":["../../../src/utils/uuid.ts"],"sourcesContent":["import { codedMessage, devBuild } from '../error-message'\n\n/**\n * Returns a RFC 4122 version 4 UUID.\n *\n * Prefers `crypto.randomUUID()` when available. In non-secure browser contexts\n * (e.g. a dev server accessed via a LAN IP over HTTP) `crypto.randomUUID` is\n * `undefined`, so this falls back to building a UUIDv4 from\n * `crypto.getRandomValues`. Throws if neither API is available.\n *\n * See https://github.com/TanStack/db/issues/1541.\n */\nexport function safeRandomUUID(): string {\n const c: Crypto | undefined =\n typeof globalThis !== `undefined` ? (globalThis as any).crypto : undefined\n\n if (c && typeof c.randomUUID === `function`) {\n return c.randomUUID()\n }\n\n if (c && typeof c.getRandomValues === `function`) {\n const bytes = c.getRandomValues(new Uint8Array(16))\n // Per RFC 4122 §4.4: set version (4) and variant (10xx) bits.\n bytes[6] = (bytes[6]! & 0x0f) | 0x40\n bytes[8] = (bytes[8]! & 0x3f) | 0x80\n\n const hex: Array<string> = []\n for (let i = 0; i < 16; i++) {\n hex.push(bytes[i]!.toString(16).padStart(2, `0`))\n }\n return (\n hex.slice(0, 4).join(``) +\n `-` +\n hex.slice(4, 6).join(``) +\n `-` +\n hex.slice(6, 8).join(``) +\n `-` +\n hex.slice(8, 10).join(``) +\n `-` +\n hex.slice(10, 16).join(``)\n )\n }\n\n throw new Error(\n devBuild() && process.env.NODE_ENV !== `production`\n ? `No secure random number generator available: neither crypto.randomUUID nor crypto.getRandomValues is defined in this environment.`\n : codedMessage(171),\n )\n}\n"],"names":["devBuild","codedMessage"],"mappings":";;;AAYO,SAAS,iBAAyB;AACvC,QAAM,IACJ,OAAO,eAAe,cAAe,WAAmB,SAAS;AAEnE,MAAI,KAAK,OAAO,EAAE,eAAe,YAAY;AAC3C,WAAO,EAAE,WAAA;AAAA,EACX;AAEA,MAAI,KAAK,OAAO,EAAE,oBAAoB,YAAY;AAChD,UAAM,QAAQ,EAAE,gBAAgB,IAAI,WAAW,EAAE,CAAC;AAElD,UAAM,CAAC,IAAK,MAAM,CAAC,IAAK,KAAQ;AAChC,UAAM,CAAC,IAAK,MAAM,CAAC,IAAK,KAAQ;AAEhC,UAAM,MAAqB,CAAA;AAC3B,aAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,UAAI,KAAK,MAAM,CAAC,EAAG,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,IAClD;AACA,WACE,IAAI,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,IACvB,MACA,IAAI,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,IACvB,MACA,IAAI,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,IACvB,MACA,IAAI,MAAM,GAAG,EAAE,EAAE,KAAK,EAAE,IACxB,MACA,IAAI,MAAM,IAAI,EAAE,EAAE,KAAK,EAAE;AAAA,EAE7B;AAEA,QAAM,IAAI;AAAA,IACRA,sBAAA,KAAc,QAAQ,IAAI,aAAa,eACnC,sIACAC,aAAAA,aAAa,GAAG;AAAA,EAAA;AAExB;;"}