{"version":3,"file":"v4.cjs","names":["rng","unsafeStringify"],"sources":["../../../src/utils/uuid/v4.ts"],"sourcesContent":["import rng from \"./rng.js\";\nimport { unsafeStringify } from \"./stringify.js\";\nimport type { UUIDTypes, Version4Options } from \"./types.js\";\n\nfunction v4(\n  options?: Version4Options,\n  buf?: undefined,\n  offset?: number\n): string;\nfunction v4<TBuf extends Uint8Array = Uint8Array>(\n  options: Version4Options | undefined,\n  buf: TBuf,\n  offset?: number\n): TBuf;\nfunction v4<TBuf extends Uint8Array = Uint8Array>(\n  options?: Version4Options,\n  buf?: TBuf,\n  offset?: number\n): UUIDTypes<TBuf> {\n  if (!buf && !options && crypto.randomUUID) {\n    return crypto.randomUUID();\n  }\n\n  // Putting tail-code that could just go inline here in a separate function to\n  // enable compiler optimizations that dramatically improve performance.\n  //\n  // REF: https://github.com/uuidjs/uuid/issues/892\n  return _v4(options, buf, offset);\n}\n\nfunction _v4<TBuf extends Uint8Array = Uint8Array>(\n  options?: Version4Options,\n  buf?: TBuf,\n  offset?: number\n): UUIDTypes<TBuf> {\n  options = options || {};\n\n  const rnds = options.random ?? options.rng?.() ?? rng();\n  if (rnds.length < 16) {\n    throw new Error(\"Random bytes length must be >= 16\");\n  }\n\n  // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n  rnds[6] = (rnds[6] & 0x0f) | 0x40;\n  rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n  // Copy bytes to buffer, if provided\n  if (buf) {\n    offset = offset || 0;\n    if (offset < 0 || offset + 16 > buf.length) {\n      throw new RangeError(\n        `UUID byte range ${offset}:${offset + 15} is out of buffer bounds`\n      );\n    }\n\n    for (let i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return unsafeStringify(rnds);\n}\nexport default v4;\n"],"mappings":";;;AAcA,SAAS,GACP,SACA,KACA,QACiB;CACjB,IAAI,CAAC,OAAO,CAAC,WAAW,OAAO,YAC7B,OAAO,OAAO,WAAW;CAO3B,OAAO,IAAI,SAAS,KAAK,MAAM;AACjC;AAEA,SAAS,IACP,SACA,KACA,QACiB;CACjB,UAAU,WAAW,CAAC;CAEtB,MAAM,OAAO,QAAQ,UAAU,QAAQ,MAAM,KAAKA,YAAAA,QAAI;CACtD,IAAI,KAAK,SAAS,IAChB,MAAM,IAAI,MAAM,mCAAmC;CAIrD,KAAK,KAAM,KAAK,KAAK,KAAQ;CAC7B,KAAK,KAAM,KAAK,KAAK,KAAQ;CAG7B,IAAI,KAAK;EACP,SAAS,UAAU;EACnB,IAAI,SAAS,KAAK,SAAS,KAAK,IAAI,QAClC,MAAM,IAAI,WACR,mBAAmB,OAAO,GAAG,SAAS,GAAG,yBAC3C;EAGF,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,GACxB,IAAI,SAAS,KAAK,KAAK;EAGzB,OAAO;CACT;CAEA,OAAOC,kBAAAA,gBAAgB,IAAI;AAC7B"}