@langchain/core 1.1.41 → 1.1.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/callbacks/base.cjs +3 -3
  3. package/dist/callbacks/base.cjs.map +1 -1
  4. package/dist/callbacks/base.js +3 -2
  5. package/dist/callbacks/base.js.map +1 -1
  6. package/dist/callbacks/manager.cjs +8 -7
  7. package/dist/callbacks/manager.cjs.map +1 -1
  8. package/dist/callbacks/manager.js +2 -1
  9. package/dist/callbacks/manager.js.map +1 -1
  10. package/dist/indexing/base.cjs +4 -4
  11. package/dist/indexing/base.cjs.map +1 -1
  12. package/dist/indexing/base.js +2 -1
  13. package/dist/indexing/base.js.map +1 -1
  14. package/dist/language_models/base.cjs +1 -1
  15. package/dist/language_models/base.js +1 -1
  16. package/dist/load/import_map.cjs +2 -0
  17. package/dist/load/import_map.cjs.map +1 -1
  18. package/dist/load/import_map.js +2 -0
  19. package/dist/load/import_map.js.map +1 -1
  20. package/dist/runnables/base.cjs +3 -2
  21. package/dist/runnables/base.cjs.map +1 -1
  22. package/dist/runnables/base.js +2 -1
  23. package/dist/runnables/base.js.map +1 -1
  24. package/dist/runnables/graph.cjs +8 -6
  25. package/dist/runnables/graph.cjs.map +1 -1
  26. package/dist/runnables/graph.js +3 -1
  27. package/dist/runnables/graph.js.map +1 -1
  28. package/dist/utils/uuid/index.cjs +44 -0
  29. package/dist/utils/uuid/index.cjs.map +1 -0
  30. package/dist/utils/uuid/index.d.cts +12 -0
  31. package/dist/utils/uuid/index.d.ts +12 -0
  32. package/dist/utils/uuid/index.js +28 -0
  33. package/dist/utils/uuid/index.js.map +1 -0
  34. package/dist/utils/uuid/max.cjs +6 -0
  35. package/dist/utils/uuid/max.cjs.map +1 -0
  36. package/dist/utils/uuid/max.d.cts +5 -0
  37. package/dist/utils/uuid/max.d.cts.map +1 -0
  38. package/dist/utils/uuid/max.d.ts +5 -0
  39. package/dist/utils/uuid/max.d.ts.map +1 -0
  40. package/dist/utils/uuid/max.js +6 -0
  41. package/dist/utils/uuid/max.js.map +1 -0
  42. package/dist/utils/uuid/nil.cjs +6 -0
  43. package/dist/utils/uuid/nil.cjs.map +1 -0
  44. package/dist/utils/uuid/nil.d.cts +5 -0
  45. package/dist/utils/uuid/nil.d.cts.map +1 -0
  46. package/dist/utils/uuid/nil.d.ts +5 -0
  47. package/dist/utils/uuid/nil.d.ts.map +1 -0
  48. package/dist/utils/uuid/nil.js +6 -0
  49. package/dist/utils/uuid/nil.js.map +1 -0
  50. package/dist/utils/uuid/parse.cjs +11 -0
  51. package/dist/utils/uuid/parse.cjs.map +1 -0
  52. package/dist/utils/uuid/parse.d.cts +7 -0
  53. package/dist/utils/uuid/parse.d.cts.map +1 -0
  54. package/dist/utils/uuid/parse.d.ts +7 -0
  55. package/dist/utils/uuid/parse.d.ts.map +1 -0
  56. package/dist/utils/uuid/parse.js +11 -0
  57. package/dist/utils/uuid/parse.js.map +1 -0
  58. package/dist/utils/uuid/regex.cjs +6 -0
  59. package/dist/utils/uuid/regex.cjs.map +1 -0
  60. package/dist/utils/uuid/regex.js +6 -0
  61. package/dist/utils/uuid/regex.js.map +1 -0
  62. package/dist/utils/uuid/rng.cjs +9 -0
  63. package/dist/utils/uuid/rng.cjs.map +1 -0
  64. package/dist/utils/uuid/rng.js +9 -0
  65. package/dist/utils/uuid/rng.js.map +1 -0
  66. package/dist/utils/uuid/sha1.cjs +71 -0
  67. package/dist/utils/uuid/sha1.cjs.map +1 -0
  68. package/dist/utils/uuid/sha1.js +71 -0
  69. package/dist/utils/uuid/sha1.js.map +1 -0
  70. package/dist/utils/uuid/stringify.cjs +21 -0
  71. package/dist/utils/uuid/stringify.cjs.map +1 -0
  72. package/dist/utils/uuid/stringify.d.cts +5 -0
  73. package/dist/utils/uuid/stringify.d.cts.map +1 -0
  74. package/dist/utils/uuid/stringify.d.ts +5 -0
  75. package/dist/utils/uuid/stringify.d.ts.map +1 -0
  76. package/dist/utils/uuid/stringify.js +20 -0
  77. package/dist/utils/uuid/stringify.js.map +1 -0
  78. package/dist/utils/uuid/types.d.cts +26 -0
  79. package/dist/utils/uuid/types.d.cts.map +1 -0
  80. package/dist/utils/uuid/types.d.ts +26 -0
  81. package/dist/utils/uuid/types.d.ts.map +1 -0
  82. package/dist/utils/uuid/v1.cjs +69 -0
  83. package/dist/utils/uuid/v1.cjs.map +1 -0
  84. package/dist/utils/uuid/v1.d.cts +8 -0
  85. package/dist/utils/uuid/v1.d.cts.map +1 -0
  86. package/dist/utils/uuid/v1.d.ts +8 -0
  87. package/dist/utils/uuid/v1.d.ts.map +1 -0
  88. package/dist/utils/uuid/v1.js +69 -0
  89. package/dist/utils/uuid/v1.js.map +1 -0
  90. package/dist/utils/uuid/v35.cjs +36 -0
  91. package/dist/utils/uuid/v35.cjs.map +1 -0
  92. package/dist/utils/uuid/v35.js +34 -0
  93. package/dist/utils/uuid/v35.js.map +1 -0
  94. package/dist/utils/uuid/v4.cjs +25 -0
  95. package/dist/utils/uuid/v4.cjs.map +1 -0
  96. package/dist/utils/uuid/v4.d.cts +8 -0
  97. package/dist/utils/uuid/v4.d.cts.map +1 -0
  98. package/dist/utils/uuid/v4.d.ts +8 -0
  99. package/dist/utils/uuid/v4.d.ts.map +1 -0
  100. package/dist/utils/uuid/v4.js +25 -0
  101. package/dist/utils/uuid/v4.js.map +1 -0
  102. package/dist/utils/uuid/v5.cjs +12 -0
  103. package/dist/utils/uuid/v5.cjs.map +1 -0
  104. package/dist/utils/uuid/v5.d.cts +14 -0
  105. package/dist/utils/uuid/v5.d.cts.map +1 -0
  106. package/dist/utils/uuid/v5.d.ts +14 -0
  107. package/dist/utils/uuid/v5.d.ts.map +1 -0
  108. package/dist/utils/uuid/v5.js +12 -0
  109. package/dist/utils/uuid/v5.js.map +1 -0
  110. package/dist/utils/uuid/v7.cjs +57 -0
  111. package/dist/utils/uuid/v7.cjs.map +1 -0
  112. package/dist/utils/uuid/v7.d.cts +8 -0
  113. package/dist/utils/uuid/v7.d.cts.map +1 -0
  114. package/dist/utils/uuid/v7.d.ts +8 -0
  115. package/dist/utils/uuid/v7.d.ts.map +1 -0
  116. package/dist/utils/uuid/v7.js +57 -0
  117. package/dist/utils/uuid/v7.js.map +1 -0
  118. package/dist/utils/uuid/validate.cjs +9 -0
  119. package/dist/utils/uuid/validate.cjs.map +1 -0
  120. package/dist/utils/uuid/validate.d.cts +5 -0
  121. package/dist/utils/uuid/validate.d.cts.map +1 -0
  122. package/dist/utils/uuid/validate.d.ts +5 -0
  123. package/dist/utils/uuid/validate.d.ts.map +1 -0
  124. package/dist/utils/uuid/validate.js +9 -0
  125. package/dist/utils/uuid/validate.js.map +1 -0
  126. package/dist/utils/uuid/version.cjs +10 -0
  127. package/dist/utils/uuid/version.cjs.map +1 -0
  128. package/dist/utils/uuid/version.d.cts +5 -0
  129. package/dist/utils/uuid/version.d.cts.map +1 -0
  130. package/dist/utils/uuid/version.d.ts +5 -0
  131. package/dist/utils/uuid/version.d.ts.map +1 -0
  132. package/dist/utils/uuid/version.js +10 -0
  133. package/dist/utils/uuid/version.js.map +1 -0
  134. package/package.json +12 -2
  135. package/utils/uuid.cjs +1 -0
  136. package/utils/uuid.d.cts +1 -0
  137. package/utils/uuid.d.ts +1 -0
  138. package/utils/uuid.js +1 -0
@@ -0,0 +1,71 @@
1
+ //#region src/utils/uuid/sha1.ts
2
+ function f(s, x, y, z) {
3
+ switch (s) {
4
+ case 0: return x & y ^ ~x & z;
5
+ case 1: return x ^ y ^ z;
6
+ case 2: return x & y ^ x & z ^ y & z;
7
+ case 3: return x ^ y ^ z;
8
+ }
9
+ }
10
+ function ROTL(x, n) {
11
+ return x << n | x >>> 32 - n;
12
+ }
13
+ function sha1(bytes) {
14
+ const K = [
15
+ 1518500249,
16
+ 1859775393,
17
+ 2400959708,
18
+ 3395469782
19
+ ];
20
+ const H = [
21
+ 1732584193,
22
+ 4023233417,
23
+ 2562383102,
24
+ 271733878,
25
+ 3285377520
26
+ ];
27
+ const newBytes = new Uint8Array(bytes.length + 1);
28
+ newBytes.set(bytes);
29
+ newBytes[bytes.length] = 128;
30
+ bytes = newBytes;
31
+ const l = bytes.length / 4 + 2;
32
+ const N = Math.ceil(l / 16);
33
+ const M = new Array(N);
34
+ for (let i = 0; i < N; ++i) {
35
+ const arr = new Uint32Array(16);
36
+ for (let j = 0; j < 16; ++j) arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];
37
+ M[i] = arr;
38
+ }
39
+ M[N - 1][14] = (bytes.length - 1) * 8 / 2 ** 32;
40
+ M[N - 1][14] = Math.floor(M[N - 1][14]);
41
+ M[N - 1][15] = (bytes.length - 1) * 8 & 4294967295;
42
+ for (let i = 0; i < N; ++i) {
43
+ const W = new Uint32Array(80);
44
+ for (let t = 0; t < 16; ++t) W[t] = M[i][t];
45
+ for (let t = 16; t < 80; ++t) W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);
46
+ let a = H[0];
47
+ let b = H[1];
48
+ let c = H[2];
49
+ let d = H[3];
50
+ let e = H[4];
51
+ for (let t = 0; t < 80; ++t) {
52
+ const s = Math.floor(t / 20);
53
+ const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;
54
+ e = d;
55
+ d = c;
56
+ c = ROTL(b, 30) >>> 0;
57
+ b = a;
58
+ a = T;
59
+ }
60
+ H[0] = H[0] + a >>> 0;
61
+ H[1] = H[1] + b >>> 0;
62
+ H[2] = H[2] + c >>> 0;
63
+ H[3] = H[3] + d >>> 0;
64
+ H[4] = H[4] + e >>> 0;
65
+ }
66
+ return Uint8Array.of(H[0] >> 24, H[0] >> 16, H[0] >> 8, H[0], H[1] >> 24, H[1] >> 16, H[1] >> 8, H[1], H[2] >> 24, H[2] >> 16, H[2] >> 8, H[2], H[3] >> 24, H[3] >> 16, H[3] >> 8, H[3], H[4] >> 24, H[4] >> 16, H[4] >> 8, H[4]);
67
+ }
68
+ //#endregion
69
+ export { sha1 as default };
70
+
71
+ //# sourceMappingURL=sha1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sha1.js","names":[],"sources":["../../../src/utils/uuid/sha1.ts"],"sourcesContent":["// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s: 0 | 1 | 2 | 3, x: number, y: number, z: number) {\n switch (s) {\n case 0:\n return (x & y) ^ (~x & z);\n case 1:\n return x ^ y ^ z;\n case 2:\n return (x & y) ^ (x & z) ^ (y & z);\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x: number, n: number) {\n return (x << n) | (x >>> (32 - n));\n}\n\nfunction sha1(bytes: Uint8Array): Uint8Array {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n const newBytes = new Uint8Array(bytes.length + 1);\n newBytes.set(bytes);\n newBytes[bytes.length] = 0x80;\n bytes = newBytes;\n\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M: Uint32Array[] = new Array(N);\n\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n\n for (let j = 0; j < 16; ++j) {\n arr[j] =\n (bytes[i * 64 + j * 4] << 24) |\n (bytes[i * 64 + j * 4 + 1] << 16) |\n (bytes[i * 64 + j * 4 + 2] << 8) |\n bytes[i * 64 + j * 4 + 3];\n }\n\n M[i] = arr;\n }\n\n M[N - 1][14] = ((bytes.length - 1) * 8) / 2 ** 32;\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = ((bytes.length - 1) * 8) & 0xffffffff;\n\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20) as 0 | 1 | 2 | 3;\n const T = (ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t]) >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = (H[0] + a) >>> 0;\n H[1] = (H[1] + b) >>> 0;\n H[2] = (H[2] + c) >>> 0;\n H[3] = (H[3] + d) >>> 0;\n H[4] = (H[4] + e) >>> 0;\n }\n\n // Note: Uint8Array.of() does `& 0xff` for each value\n return Uint8Array.of(\n H[0] >> 24,\n H[0] >> 16,\n H[0] >> 8,\n H[0],\n H[1] >> 24,\n H[1] >> 16,\n H[1] >> 8,\n H[1],\n H[2] >> 24,\n H[2] >> 16,\n H[2] >> 8,\n H[2],\n H[3] >> 24,\n H[3] >> 16,\n H[3] >> 8,\n H[3],\n H[4] >> 24,\n H[4] >> 16,\n H[4] >> 8,\n H[4]\n );\n}\n\nexport default sha1;\n"],"mappings":";AAEA,SAAS,EAAE,GAAkB,GAAW,GAAW,GAAW;AAC5D,SAAQ,GAAR;EACE,KAAK,EACH,QAAQ,IAAI,IAAM,CAAC,IAAI;EACzB,KAAK,EACH,QAAO,IAAI,IAAI;EACjB,KAAK,EACH,QAAQ,IAAI,IAAM,IAAI,IAAM,IAAI;EAClC,KAAK,EACH,QAAO,IAAI,IAAI;;;AAIrB,SAAS,KAAK,GAAW,GAAW;AAClC,QAAQ,KAAK,IAAM,MAAO,KAAK;;AAGjC,SAAS,KAAK,OAA+B;CAC3C,MAAM,IAAI;EAAC;EAAY;EAAY;EAAY;EAAW;CAC1D,MAAM,IAAI;EAAC;EAAY;EAAY;EAAY;EAAY;EAAW;CAEtE,MAAM,WAAW,IAAI,WAAW,MAAM,SAAS,EAAE;AACjD,UAAS,IAAI,MAAM;AACnB,UAAS,MAAM,UAAU;AACzB,SAAQ;CAER,MAAM,IAAI,MAAM,SAAS,IAAI;CAC7B,MAAM,IAAI,KAAK,KAAK,IAAI,GAAG;CAC3B,MAAM,IAAmB,IAAI,MAAM,EAAE;AAErC,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;EAC1B,MAAM,MAAM,IAAI,YAAY,GAAG;AAE/B,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EACxB,KAAI,KACD,MAAM,IAAI,KAAK,IAAI,MAAM,KACzB,MAAM,IAAI,KAAK,IAAI,IAAI,MAAM,KAC7B,MAAM,IAAI,KAAK,IAAI,IAAI,MAAM,IAC9B,MAAM,IAAI,KAAK,IAAI,IAAI;AAG3B,IAAE,KAAK;;AAGT,GAAE,IAAI,GAAG,OAAQ,MAAM,SAAS,KAAK,IAAK,KAAK;AAC/C,GAAE,IAAI,GAAG,MAAM,KAAK,MAAM,EAAE,IAAI,GAAG,IAAI;AACvC,GAAE,IAAI,GAAG,OAAQ,MAAM,SAAS,KAAK,IAAK;AAE1C,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;EAC1B,MAAM,IAAI,IAAI,YAAY,GAAG;AAE7B,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EACxB,GAAE,KAAK,EAAE,GAAG;AAGd,OAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EACzB,GAAE,KAAK,KAAK,EAAE,IAAI,KAAK,EAAE,IAAI,KAAK,EAAE,IAAI,MAAM,EAAE,IAAI,KAAK,EAAE;EAG7D,IAAI,IAAI,EAAE;EACV,IAAI,IAAI,EAAE;EACV,IAAI,IAAI,EAAE;EACV,IAAI,IAAI,EAAE;EACV,IAAI,IAAI,EAAE;AAEV,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,GAAG;GAC3B,MAAM,IAAI,KAAK,MAAM,IAAI,GAAG;GAC5B,MAAM,IAAK,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,OAAQ;AAC7D,OAAI;AACJ,OAAI;AACJ,OAAI,KAAK,GAAG,GAAG,KAAK;AACpB,OAAI;AACJ,OAAI;;AAGN,IAAE,KAAM,EAAE,KAAK,MAAO;AACtB,IAAE,KAAM,EAAE,KAAK,MAAO;AACtB,IAAE,KAAM,EAAE,KAAK,MAAO;AACtB,IAAE,KAAM,EAAE,KAAK,MAAO;AACtB,IAAE,KAAM,EAAE,KAAK,MAAO;;AAIxB,QAAO,WAAW,GAChB,EAAE,MAAM,IACR,EAAE,MAAM,IACR,EAAE,MAAM,GACR,EAAE,IACF,EAAE,MAAM,IACR,EAAE,MAAM,IACR,EAAE,MAAM,GACR,EAAE,IACF,EAAE,MAAM,IACR,EAAE,MAAM,IACR,EAAE,MAAM,GACR,EAAE,IACF,EAAE,MAAM,IACR,EAAE,MAAM,IACR,EAAE,MAAM,GACR,EAAE,IACF,EAAE,MAAM,IACR,EAAE,MAAM,IACR,EAAE,MAAM,GACR,EAAE,GACH"}
@@ -0,0 +1,21 @@
1
+ const require_validate = require("./validate.cjs");
2
+ //#region src/utils/uuid/stringify.ts
3
+ /**
4
+ * Convert array of 16 byte values to UUID string format of the form:
5
+ * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
6
+ */
7
+ const byteToHex = [];
8
+ for (let i = 0; i < 256; ++i) byteToHex.push((i + 256).toString(16).slice(1));
9
+ function unsafeStringify(arr, offset = 0) {
10
+ return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
11
+ }
12
+ function stringify(arr, offset = 0) {
13
+ const uuid = unsafeStringify(arr, offset);
14
+ if (!require_validate.default(uuid)) throw TypeError("Stringified UUID is invalid");
15
+ return uuid;
16
+ }
17
+ //#endregion
18
+ exports.default = stringify;
19
+ exports.unsafeStringify = unsafeStringify;
20
+
21
+ //# sourceMappingURL=stringify.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringify.cjs","names":["validate"],"sources":["../../../src/utils/uuid/stringify.ts"],"sourcesContent":["import validate from \"./validate.js\";\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex: string[] = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr: Uint8Array, offset = 0): string {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n //\n // Note to future-self: No, you can't remove the `toLowerCase()` call.\n // REF: https://github.com/uuidjs/uuid/pull/677#issuecomment-1757351351\n return (\n byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n \"-\" +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n \"-\" +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n \"-\" +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n \"-\" +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]\n ).toLowerCase();\n}\n\nfunction stringify(arr: Uint8Array, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n\n // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n if (!validate(uuid)) {\n throw TypeError(\"Stringified UUID is invalid\");\n }\n\n return uuid;\n}\n\nexport default stringify;\n"],"mappings":";;;;;;AAMA,MAAM,YAAsB,EAAE;AAE9B,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,EAAE,EACzB,WAAU,MAAM,IAAI,KAAO,SAAS,GAAG,CAAC,MAAM,EAAE,CAAC;AAGnD,SAAgB,gBAAgB,KAAiB,SAAS,GAAW;AAMnE,SACE,UAAU,IAAI,SAAS,MACvB,UAAU,IAAI,SAAS,MACvB,UAAU,IAAI,SAAS,MACvB,UAAU,IAAI,SAAS,MACvB,MACA,UAAU,IAAI,SAAS,MACvB,UAAU,IAAI,SAAS,MACvB,MACA,UAAU,IAAI,SAAS,MACvB,UAAU,IAAI,SAAS,MACvB,MACA,UAAU,IAAI,SAAS,MACvB,UAAU,IAAI,SAAS,MACvB,MACA,UAAU,IAAI,SAAS,OACvB,UAAU,IAAI,SAAS,OACvB,UAAU,IAAI,SAAS,OACvB,UAAU,IAAI,SAAS,OACvB,UAAU,IAAI,SAAS,OACvB,UAAU,IAAI,SAAS,MACvB,aAAa;;AAGjB,SAAS,UAAU,KAAiB,SAAS,GAAG;CAC9C,MAAM,OAAO,gBAAgB,KAAK,OAAO;AAOzC,KAAI,CAACA,iBAAAA,QAAS,KAAK,CACjB,OAAM,UAAU,8BAA8B;AAGhD,QAAO"}
@@ -0,0 +1,5 @@
1
+ //#region src/utils/uuid/stringify.d.ts
2
+ declare function stringify(arr: Uint8Array, offset?: number): string;
3
+ //#endregion
4
+ export { stringify };
5
+ //# sourceMappingURL=stringify.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringify.d.cts","names":[],"sources":["../../../src/utils/uuid/stringify.ts"],"mappings":";iBA0CS,SAAA,CAAU,GAAA,EAAK,UAAA,EAAY,MAAA"}
@@ -0,0 +1,5 @@
1
+ //#region src/utils/uuid/stringify.d.ts
2
+ declare function stringify(arr: Uint8Array, offset?: number): string;
3
+ //#endregion
4
+ export { stringify };
5
+ //# sourceMappingURL=stringify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringify.d.ts","names":[],"sources":["../../../src/utils/uuid/stringify.ts"],"mappings":";iBA0CS,SAAA,CAAU,GAAA,EAAK,UAAA,EAAY,MAAA"}
@@ -0,0 +1,20 @@
1
+ import validate from "./validate.js";
2
+ //#region src/utils/uuid/stringify.ts
3
+ /**
4
+ * Convert array of 16 byte values to UUID string format of the form:
5
+ * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
6
+ */
7
+ const byteToHex = [];
8
+ for (let i = 0; i < 256; ++i) byteToHex.push((i + 256).toString(16).slice(1));
9
+ function unsafeStringify(arr, offset = 0) {
10
+ return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
11
+ }
12
+ function stringify(arr, offset = 0) {
13
+ const uuid = unsafeStringify(arr, offset);
14
+ if (!validate(uuid)) throw TypeError("Stringified UUID is invalid");
15
+ return uuid;
16
+ }
17
+ //#endregion
18
+ export { stringify as default, unsafeStringify };
19
+
20
+ //# sourceMappingURL=stringify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringify.js","names":[],"sources":["../../../src/utils/uuid/stringify.ts"],"sourcesContent":["import validate from \"./validate.js\";\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex: string[] = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr: Uint8Array, offset = 0): string {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n //\n // Note to future-self: No, you can't remove the `toLowerCase()` call.\n // REF: https://github.com/uuidjs/uuid/pull/677#issuecomment-1757351351\n return (\n byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n \"-\" +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n \"-\" +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n \"-\" +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n \"-\" +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]\n ).toLowerCase();\n}\n\nfunction stringify(arr: Uint8Array, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n\n // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n if (!validate(uuid)) {\n throw TypeError(\"Stringified UUID is invalid\");\n }\n\n return uuid;\n}\n\nexport default stringify;\n"],"mappings":";;;;;;AAMA,MAAM,YAAsB,EAAE;AAE9B,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,EAAE,EACzB,WAAU,MAAM,IAAI,KAAO,SAAS,GAAG,CAAC,MAAM,EAAE,CAAC;AAGnD,SAAgB,gBAAgB,KAAiB,SAAS,GAAW;AAMnE,SACE,UAAU,IAAI,SAAS,MACvB,UAAU,IAAI,SAAS,MACvB,UAAU,IAAI,SAAS,MACvB,UAAU,IAAI,SAAS,MACvB,MACA,UAAU,IAAI,SAAS,MACvB,UAAU,IAAI,SAAS,MACvB,MACA,UAAU,IAAI,SAAS,MACvB,UAAU,IAAI,SAAS,MACvB,MACA,UAAU,IAAI,SAAS,MACvB,UAAU,IAAI,SAAS,MACvB,MACA,UAAU,IAAI,SAAS,OACvB,UAAU,IAAI,SAAS,OACvB,UAAU,IAAI,SAAS,OACvB,UAAU,IAAI,SAAS,OACvB,UAAU,IAAI,SAAS,OACvB,UAAU,IAAI,SAAS,MACvB,aAAa;;AAGjB,SAAS,UAAU,KAAiB,SAAS,GAAG;CAC9C,MAAM,OAAO,gBAAgB,KAAK,OAAO;AAOzC,KAAI,CAAC,SAAS,KAAK,CACjB,OAAM,UAAU,8BAA8B;AAGhD,QAAO"}
@@ -0,0 +1,26 @@
1
+ //#region src/utils/uuid/types.d.ts
2
+ type UUIDTypes<TBuf extends Uint8Array = Uint8Array> = string | TBuf;
3
+ type Version1Options = {
4
+ node?: Uint8Array;
5
+ clockseq?: number;
6
+ random?: Uint8Array;
7
+ rng?: () => Uint8Array;
8
+ msecs?: number;
9
+ nsecs?: number;
10
+ _v6?: boolean;
11
+ };
12
+ type Version4Options = {
13
+ random?: Uint8Array;
14
+ rng?: () => Uint8Array;
15
+ };
16
+ type Version6Options = Version1Options;
17
+ type Version7Options = {
18
+ random?: Uint8Array;
19
+ msecs?: number;
20
+ seq?: number;
21
+ rng?: () => Uint8Array;
22
+ };
23
+ type NonSharedArrayBuffer = ReturnType<typeof Uint8Array.of>;
24
+ //#endregion
25
+ export { NonSharedArrayBuffer, UUIDTypes, Version1Options, Version4Options, Version6Options, Version7Options };
26
+ //# sourceMappingURL=types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.cts","names":[],"sources":["../../../src/utils/uuid/types.ts"],"mappings":";KAAY,SAAA,cAAuB,UAAA,GAAa,UAAA,aAAuB,IAAA;AAAA,KAE3D,eAAA;EACV,IAAA,GAAO,UAAA;EACP,QAAA;EACA,MAAA,GAAS,UAAA;EACT,GAAA,SAAY,UAAA;EACZ,KAAA;EACA,KAAA;EACA,GAAA;AAAA;AAAA,KAGU,eAAA;EACV,MAAA,GAAS,UAAA;EACT,GAAA,SAAY,UAAA;AAAA;AAAA,KAGF,eAAA,GAAkB,eAAA;AAAA,KAElB,eAAA;EACV,MAAA,GAAS,UAAA;EACT,KAAA;EACA,GAAA;EACA,GAAA,SAAY,UAAA;AAAA;AAAA,KAIF,oBAAA,GAAuB,UAAA,QAAkB,UAAA,CAAW,EAAA"}
@@ -0,0 +1,26 @@
1
+ //#region src/utils/uuid/types.d.ts
2
+ type UUIDTypes<TBuf extends Uint8Array = Uint8Array> = string | TBuf;
3
+ type Version1Options = {
4
+ node?: Uint8Array;
5
+ clockseq?: number;
6
+ random?: Uint8Array;
7
+ rng?: () => Uint8Array;
8
+ msecs?: number;
9
+ nsecs?: number;
10
+ _v6?: boolean;
11
+ };
12
+ type Version4Options = {
13
+ random?: Uint8Array;
14
+ rng?: () => Uint8Array;
15
+ };
16
+ type Version6Options = Version1Options;
17
+ type Version7Options = {
18
+ random?: Uint8Array;
19
+ msecs?: number;
20
+ seq?: number;
21
+ rng?: () => Uint8Array;
22
+ };
23
+ type NonSharedArrayBuffer = ReturnType<typeof Uint8Array.of>;
24
+ //#endregion
25
+ export { NonSharedArrayBuffer, UUIDTypes, Version1Options, Version4Options, Version6Options, Version7Options };
26
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/utils/uuid/types.ts"],"mappings":";KAAY,SAAA,cAAuB,UAAA,GAAa,UAAA,aAAuB,IAAA;AAAA,KAE3D,eAAA;EACV,IAAA,GAAO,UAAA;EACP,QAAA;EACA,MAAA,GAAS,UAAA;EACT,GAAA,SAAY,UAAA;EACZ,KAAA;EACA,KAAA;EACA,GAAA;AAAA;AAAA,KAGU,eAAA;EACV,MAAA,GAAS,UAAA;EACT,GAAA,SAAY,UAAA;AAAA;AAAA,KAGF,eAAA,GAAkB,eAAA;AAAA,KAElB,eAAA;EACV,MAAA,GAAS,UAAA;EACT,KAAA;EACA,GAAA;EACA,GAAA,SAAY,UAAA;AAAA;AAAA,KAIF,oBAAA,GAAuB,UAAA,QAAkB,UAAA,CAAW,EAAA"}
@@ -0,0 +1,69 @@
1
+ const require_stringify = require("./stringify.cjs");
2
+ const require_rng = require("./rng.cjs");
3
+ //#region src/utils/uuid/v1.ts
4
+ const _state = {};
5
+ function v1(options, buf, offset) {
6
+ let bytes;
7
+ const isV6 = options?._v6 ?? false;
8
+ if (options) {
9
+ const optionsKeys = Object.keys(options);
10
+ if (optionsKeys.length === 1 && optionsKeys[0] === "_v6") options = void 0;
11
+ }
12
+ if (options) bytes = v1Bytes(options.random ?? options.rng?.() ?? require_rng.default(), options.msecs, options.nsecs, options.clockseq, options.node, buf, offset);
13
+ else {
14
+ const now = Date.now();
15
+ const rnds = require_rng.default();
16
+ updateV1State(_state, now, rnds);
17
+ bytes = v1Bytes(rnds, _state.msecs, _state.nsecs, isV6 ? void 0 : _state.clockseq, isV6 ? void 0 : _state.node, buf, offset);
18
+ }
19
+ return buf ?? require_stringify.unsafeStringify(bytes);
20
+ }
21
+ function updateV1State(state, now, rnds) {
22
+ state.msecs ??= -Infinity;
23
+ state.nsecs ??= 0;
24
+ if (now === state.msecs) {
25
+ state.nsecs++;
26
+ if (state.nsecs >= 1e4) {
27
+ state.node = void 0;
28
+ state.nsecs = 0;
29
+ }
30
+ } else if (now > state.msecs) state.nsecs = 0;
31
+ else if (now < state.msecs) state.node = void 0;
32
+ if (!state.node) {
33
+ state.node = rnds.slice(10, 16);
34
+ state.node[0] |= 1;
35
+ state.clockseq = (rnds[8] << 8 | rnds[9]) & 16383;
36
+ }
37
+ state.msecs = now;
38
+ return state;
39
+ }
40
+ function v1Bytes(rnds, msecs, nsecs, clockseq, node, buf, offset = 0) {
41
+ if (rnds.length < 16) throw new Error("Random bytes length must be >= 16");
42
+ if (!buf) {
43
+ buf = new Uint8Array(16);
44
+ offset = 0;
45
+ } else if (offset < 0 || offset + 16 > buf.length) throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
46
+ msecs ??= Date.now();
47
+ nsecs ??= 0;
48
+ clockseq ??= (rnds[8] << 8 | rnds[9]) & 16383;
49
+ node ??= rnds.slice(10, 16);
50
+ msecs += 0xb1d069b5400;
51
+ const tl = ((msecs & 268435455) * 1e4 + nsecs) % 4294967296;
52
+ buf[offset++] = tl >>> 24 & 255;
53
+ buf[offset++] = tl >>> 16 & 255;
54
+ buf[offset++] = tl >>> 8 & 255;
55
+ buf[offset++] = tl & 255;
56
+ const tmh = msecs / 4294967296 * 1e4 & 268435455;
57
+ buf[offset++] = tmh >>> 8 & 255;
58
+ buf[offset++] = tmh & 255;
59
+ buf[offset++] = tmh >>> 24 & 15 | 16;
60
+ buf[offset++] = tmh >>> 16 & 255;
61
+ buf[offset++] = clockseq >>> 8 | 128;
62
+ buf[offset++] = clockseq & 255;
63
+ for (let n = 0; n < 6; ++n) buf[offset++] = node[n];
64
+ return buf;
65
+ }
66
+ //#endregion
67
+ exports.default = v1;
68
+
69
+ //# sourceMappingURL=v1.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v1.cjs","names":["rng","unsafeStringify"],"sources":["../../../src/utils/uuid/v1.ts"],"sourcesContent":["import rng from \"./rng.js\";\nimport { unsafeStringify } from \"./stringify.js\";\nimport type { UUIDTypes, Version1Options } from \"./types.js\";\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\ntype V1State = {\n node?: Uint8Array; // node id (47-bit random)\n clockseq?: number; // sequence number (14-bit)\n\n // v1 & v6 timestamps are a pain to deal with. They specify time from the\n // Gregorian epoch in 100ns intervals, which requires values with 57+ bits of\n // precision. But that's outside the precision of IEEE754 floats (i.e. JS\n // numbers). To work around this, we represent them internally using 'msecs'\n // (milliseconds since unix epoch) and 'nsecs' (100-nanoseconds offset from\n // `msecs`).\n\n msecs?: number; // timestamp (milliseconds, unix epoch)\n nsecs?: number; // timestamp (100-nanoseconds offset from 'msecs')\n};\n\nconst _state: V1State = {};\n\nfunction v1(\n options?: Version1Options,\n buf?: undefined,\n offset?: number\n): string;\nfunction v1<Buf extends Uint8Array = Uint8Array>(\n options: Version1Options | undefined,\n buf: Buf,\n offset?: number\n): Buf;\nfunction v1<TBuf extends Uint8Array = Uint8Array>(\n options?: Version1Options,\n buf?: TBuf,\n offset?: number\n): UUIDTypes<TBuf> {\n let bytes: Uint8Array;\n\n // Extract _v6 flag from options, clearing options if appropriate\n const isV6 = options?._v6 ?? false;\n if (options) {\n const optionsKeys = Object.keys(options);\n if (optionsKeys.length === 1 && optionsKeys[0] === \"_v6\") {\n options = undefined;\n }\n }\n\n if (options) {\n // With options: Make UUID independent of internal state\n bytes = v1Bytes(\n options.random ?? options.rng?.() ?? rng(),\n options.msecs,\n options.nsecs,\n options.clockseq,\n options.node,\n buf,\n offset\n );\n } else {\n // Without options: Make UUID from internal state\n const now = Date.now();\n const rnds = rng();\n\n updateV1State(_state, now, rnds);\n\n // Geenerate UUID. Note that v6 uses random values for `clockseq` and\n // `node`.\n //\n // https://www.rfc-editor.org/rfc/rfc9562.html#section-5.6-4\n bytes = v1Bytes(\n rnds,\n _state.msecs,\n _state.nsecs,\n // v6 UUIDs get random `clockseq` and `node` for every UUID\n // https://www.rfc-editor.org/rfc/rfc9562.html#section-5.6-4\n isV6 ? undefined : _state.clockseq,\n isV6 ? undefined : _state.node,\n buf,\n offset\n );\n }\n\n return buf ?? unsafeStringify(bytes);\n}\n\n// (Private!) Do not use. This method is only exported for testing purposes\n// and may change without notice.\nexport function updateV1State(state: V1State, now: number, rnds: Uint8Array) {\n state.msecs ??= -Infinity;\n state.nsecs ??= 0;\n\n // Update timestamp\n if (now === state.msecs) {\n // Same msec-interval = simulate higher clock resolution by bumping `nsecs`\n // https://www.rfc-editor.org/rfc/rfc9562.html#section-6.1-2.6\n state.nsecs++;\n\n // Check for `nsecs` overflow (nsecs is capped at 10K intervals / msec)\n if (state.nsecs >= 10000) {\n // Prior to uuid@11 this would throw an error, however the RFCs allow for\n // changing the node in this case. This slightly breaks monotonicity at\n // msec granularity, but that's not a significant concern.\n // https://www.rfc-editor.org/rfc/rfc9562.html#section-6.1-2.16\n state.node = undefined;\n state.nsecs = 0;\n }\n } else if (now > state.msecs) {\n // Reset nsec counter when clock advances to a new msec interval\n state.nsecs = 0;\n } else if (now < state.msecs) {\n // Handle clock regression\n // https://www.rfc-editor.org/rfc/rfc9562.html#section-6.1-2.7\n //\n // Note: Unsetting node here causes both it and clockseq to be randomized,\n // below.\n state.node = undefined;\n }\n\n // Init node and clock sequence (do this after timestamp update which may\n // reset the node) https://www.rfc-editor.org/rfc/rfc9562.html#section-5.1-7\n //\n // Note:\n if (!state.node) {\n state.node = rnds.slice(10, 16);\n\n // Set multicast bit\n // https://www.rfc-editor.org/rfc/rfc9562.html#section-6.10-3\n state.node[0] |= 0x01; // Set multicast bit\n\n // Clock sequence must be randomized\n // https://www.rfc-editor.org/rfc/rfc9562.html#section-5.1-8\n state.clockseq = ((rnds[8] << 8) | rnds[9]) & 0x3fff;\n }\n\n state.msecs = now;\n\n return state;\n}\n\nfunction v1Bytes(\n rnds: Uint8Array,\n msecs?: number,\n nsecs?: number,\n clockseq?: number,\n node?: Uint8Array,\n buf?: Uint8Array,\n offset = 0\n) {\n if (rnds.length < 16) {\n throw new Error(\"Random bytes length must be >= 16\");\n }\n\n // Defaults\n if (!buf) {\n buf = new Uint8Array(16);\n offset = 0;\n } else {\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\n msecs ??= Date.now();\n nsecs ??= 0;\n clockseq ??= ((rnds[8] << 8) | rnds[9]) & 0x3fff;\n node ??= rnds.slice(10, 16);\n\n // Offset to Gregorian epoch\n // https://www.rfc-editor.org/rfc/rfc9562.html#section-5.1-1\n msecs += 12219292800000;\n\n // `time_low`\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n buf[offset++] = (tl >>> 24) & 0xff;\n buf[offset++] = (tl >>> 16) & 0xff;\n buf[offset++] = (tl >>> 8) & 0xff;\n buf[offset++] = tl & 0xff;\n\n // `time_mid`\n const tmh = ((msecs / 0x100000000) * 10000) & 0xfffffff;\n buf[offset++] = (tmh >>> 8) & 0xff;\n buf[offset++] = tmh & 0xff;\n\n // `time_high_and_version`\n buf[offset++] = ((tmh >>> 24) & 0xf) | 0x10; // include version\n buf[offset++] = (tmh >>> 16) & 0xff;\n\n // `clock_seq_hi_and_reserved` | variant\n buf[offset++] = (clockseq >>> 8) | 0x80;\n\n // `clock_seq_low`\n buf[offset++] = clockseq & 0xff;\n\n // `node`\n for (let n = 0; n < 6; ++n) {\n buf[offset++] = node[n];\n }\n\n return buf;\n}\n\nexport default v1;\n"],"mappings":";;;AAwBA,MAAM,SAAkB,EAAE;AAY1B,SAAS,GACP,SACA,KACA,QACiB;CACjB,IAAI;CAGJ,MAAM,OAAO,SAAS,OAAO;AAC7B,KAAI,SAAS;EACX,MAAM,cAAc,OAAO,KAAK,QAAQ;AACxC,MAAI,YAAY,WAAW,KAAK,YAAY,OAAO,MACjD,WAAU,KAAA;;AAId,KAAI,QAEF,SAAQ,QACN,QAAQ,UAAU,QAAQ,OAAO,IAAIA,YAAAA,SAAK,EAC1C,QAAQ,OACR,QAAQ,OACR,QAAQ,UACR,QAAQ,MACR,KACA,OACD;MACI;EAEL,MAAM,MAAM,KAAK,KAAK;EACtB,MAAM,OAAOA,YAAAA,SAAK;AAElB,gBAAc,QAAQ,KAAK,KAAK;AAMhC,UAAQ,QACN,MACA,OAAO,OACP,OAAO,OAGP,OAAO,KAAA,IAAY,OAAO,UAC1B,OAAO,KAAA,IAAY,OAAO,MAC1B,KACA,OACD;;AAGH,QAAO,OAAOC,kBAAAA,gBAAgB,MAAM;;AAKtC,SAAgB,cAAc,OAAgB,KAAa,MAAkB;AAC3E,OAAM,UAAU;AAChB,OAAM,UAAU;AAGhB,KAAI,QAAQ,MAAM,OAAO;AAGvB,QAAM;AAGN,MAAI,MAAM,SAAS,KAAO;AAKxB,SAAM,OAAO,KAAA;AACb,SAAM,QAAQ;;YAEP,MAAM,MAAM,MAErB,OAAM,QAAQ;UACL,MAAM,MAAM,MAMrB,OAAM,OAAO,KAAA;AAOf,KAAI,CAAC,MAAM,MAAM;AACf,QAAM,OAAO,KAAK,MAAM,IAAI,GAAG;AAI/B,QAAM,KAAK,MAAM;AAIjB,QAAM,YAAa,KAAK,MAAM,IAAK,KAAK,MAAM;;AAGhD,OAAM,QAAQ;AAEd,QAAO;;AAGT,SAAS,QACP,MACA,OACA,OACA,UACA,MACA,KACA,SAAS,GACT;AACA,KAAI,KAAK,SAAS,GAChB,OAAM,IAAI,MAAM,oCAAoC;AAItD,KAAI,CAAC,KAAK;AACR,QAAM,IAAI,WAAW,GAAG;AACxB,WAAS;YAEL,SAAS,KAAK,SAAS,KAAK,IAAI,OAClC,OAAM,IAAI,WACR,mBAAmB,OAAO,GAAG,SAAS,GAAG,0BAC1C;AAIL,WAAU,KAAK,KAAK;AACpB,WAAU;AACV,eAAe,KAAK,MAAM,IAAK,KAAK,MAAM;AAC1C,UAAS,KAAK,MAAM,IAAI,GAAG;AAI3B,UAAS;CAGT,MAAM,OAAO,QAAQ,aAAa,MAAQ,SAAS;AACnD,KAAI,YAAa,OAAO,KAAM;AAC9B,KAAI,YAAa,OAAO,KAAM;AAC9B,KAAI,YAAa,OAAO,IAAK;AAC7B,KAAI,YAAY,KAAK;CAGrB,MAAM,MAAQ,QAAQ,aAAe,MAAS;AAC9C,KAAI,YAAa,QAAQ,IAAK;AAC9B,KAAI,YAAY,MAAM;AAGtB,KAAI,YAAc,QAAQ,KAAM,KAAO;AACvC,KAAI,YAAa,QAAQ,KAAM;AAG/B,KAAI,YAAa,aAAa,IAAK;AAGnC,KAAI,YAAY,WAAW;AAG3B,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,EACvB,KAAI,YAAY,KAAK;AAGvB,QAAO"}
@@ -0,0 +1,8 @@
1
+ import { Version1Options } from "./types.cjs";
2
+
3
+ //#region src/utils/uuid/v1.d.ts
4
+ declare function v1(options?: Version1Options, buf?: undefined, offset?: number): string;
5
+ declare function v1<Buf extends Uint8Array = Uint8Array>(options: Version1Options | undefined, buf: Buf, offset?: number): Buf;
6
+ //#endregion
7
+ export { v1 };
8
+ //# sourceMappingURL=v1.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v1.d.cts","names":[],"sources":["../../../src/utils/uuid/v1.ts"],"mappings":";;;iBA0BS,EAAA,CACP,OAAA,GAAU,eAAA,EACV,GAAA,cACA,MAAA;AAAA,iBAEO,EAAA,aAAe,UAAA,GAAa,UAAA,CAAA,CACnC,OAAA,EAAS,eAAA,cACT,GAAA,EAAK,GAAA,EACL,MAAA,YACC,GAAA"}
@@ -0,0 +1,8 @@
1
+ import { Version1Options } from "./types.js";
2
+
3
+ //#region src/utils/uuid/v1.d.ts
4
+ declare function v1(options?: Version1Options, buf?: undefined, offset?: number): string;
5
+ declare function v1<Buf extends Uint8Array = Uint8Array>(options: Version1Options | undefined, buf: Buf, offset?: number): Buf;
6
+ //#endregion
7
+ export { v1 };
8
+ //# sourceMappingURL=v1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v1.d.ts","names":[],"sources":["../../../src/utils/uuid/v1.ts"],"mappings":";;;iBA0BS,EAAA,CACP,OAAA,GAAU,eAAA,EACV,GAAA,cACA,MAAA;AAAA,iBAEO,EAAA,aAAe,UAAA,GAAa,UAAA,CAAA,CACnC,OAAA,EAAS,eAAA,cACT,GAAA,EAAK,GAAA,EACL,MAAA,YACC,GAAA"}
@@ -0,0 +1,69 @@
1
+ import { unsafeStringify } from "./stringify.js";
2
+ import rng from "./rng.js";
3
+ //#region src/utils/uuid/v1.ts
4
+ const _state = {};
5
+ function v1(options, buf, offset) {
6
+ let bytes;
7
+ const isV6 = options?._v6 ?? false;
8
+ if (options) {
9
+ const optionsKeys = Object.keys(options);
10
+ if (optionsKeys.length === 1 && optionsKeys[0] === "_v6") options = void 0;
11
+ }
12
+ if (options) bytes = v1Bytes(options.random ?? options.rng?.() ?? rng(), options.msecs, options.nsecs, options.clockseq, options.node, buf, offset);
13
+ else {
14
+ const now = Date.now();
15
+ const rnds = rng();
16
+ updateV1State(_state, now, rnds);
17
+ bytes = v1Bytes(rnds, _state.msecs, _state.nsecs, isV6 ? void 0 : _state.clockseq, isV6 ? void 0 : _state.node, buf, offset);
18
+ }
19
+ return buf ?? unsafeStringify(bytes);
20
+ }
21
+ function updateV1State(state, now, rnds) {
22
+ state.msecs ??= -Infinity;
23
+ state.nsecs ??= 0;
24
+ if (now === state.msecs) {
25
+ state.nsecs++;
26
+ if (state.nsecs >= 1e4) {
27
+ state.node = void 0;
28
+ state.nsecs = 0;
29
+ }
30
+ } else if (now > state.msecs) state.nsecs = 0;
31
+ else if (now < state.msecs) state.node = void 0;
32
+ if (!state.node) {
33
+ state.node = rnds.slice(10, 16);
34
+ state.node[0] |= 1;
35
+ state.clockseq = (rnds[8] << 8 | rnds[9]) & 16383;
36
+ }
37
+ state.msecs = now;
38
+ return state;
39
+ }
40
+ function v1Bytes(rnds, msecs, nsecs, clockseq, node, buf, offset = 0) {
41
+ if (rnds.length < 16) throw new Error("Random bytes length must be >= 16");
42
+ if (!buf) {
43
+ buf = new Uint8Array(16);
44
+ offset = 0;
45
+ } else if (offset < 0 || offset + 16 > buf.length) throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
46
+ msecs ??= Date.now();
47
+ nsecs ??= 0;
48
+ clockseq ??= (rnds[8] << 8 | rnds[9]) & 16383;
49
+ node ??= rnds.slice(10, 16);
50
+ msecs += 0xb1d069b5400;
51
+ const tl = ((msecs & 268435455) * 1e4 + nsecs) % 4294967296;
52
+ buf[offset++] = tl >>> 24 & 255;
53
+ buf[offset++] = tl >>> 16 & 255;
54
+ buf[offset++] = tl >>> 8 & 255;
55
+ buf[offset++] = tl & 255;
56
+ const tmh = msecs / 4294967296 * 1e4 & 268435455;
57
+ buf[offset++] = tmh >>> 8 & 255;
58
+ buf[offset++] = tmh & 255;
59
+ buf[offset++] = tmh >>> 24 & 15 | 16;
60
+ buf[offset++] = tmh >>> 16 & 255;
61
+ buf[offset++] = clockseq >>> 8 | 128;
62
+ buf[offset++] = clockseq & 255;
63
+ for (let n = 0; n < 6; ++n) buf[offset++] = node[n];
64
+ return buf;
65
+ }
66
+ //#endregion
67
+ export { v1 as default };
68
+
69
+ //# sourceMappingURL=v1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v1.js","names":[],"sources":["../../../src/utils/uuid/v1.ts"],"sourcesContent":["import rng from \"./rng.js\";\nimport { unsafeStringify } from \"./stringify.js\";\nimport type { UUIDTypes, Version1Options } from \"./types.js\";\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\ntype V1State = {\n node?: Uint8Array; // node id (47-bit random)\n clockseq?: number; // sequence number (14-bit)\n\n // v1 & v6 timestamps are a pain to deal with. They specify time from the\n // Gregorian epoch in 100ns intervals, which requires values with 57+ bits of\n // precision. But that's outside the precision of IEEE754 floats (i.e. JS\n // numbers). To work around this, we represent them internally using 'msecs'\n // (milliseconds since unix epoch) and 'nsecs' (100-nanoseconds offset from\n // `msecs`).\n\n msecs?: number; // timestamp (milliseconds, unix epoch)\n nsecs?: number; // timestamp (100-nanoseconds offset from 'msecs')\n};\n\nconst _state: V1State = {};\n\nfunction v1(\n options?: Version1Options,\n buf?: undefined,\n offset?: number\n): string;\nfunction v1<Buf extends Uint8Array = Uint8Array>(\n options: Version1Options | undefined,\n buf: Buf,\n offset?: number\n): Buf;\nfunction v1<TBuf extends Uint8Array = Uint8Array>(\n options?: Version1Options,\n buf?: TBuf,\n offset?: number\n): UUIDTypes<TBuf> {\n let bytes: Uint8Array;\n\n // Extract _v6 flag from options, clearing options if appropriate\n const isV6 = options?._v6 ?? false;\n if (options) {\n const optionsKeys = Object.keys(options);\n if (optionsKeys.length === 1 && optionsKeys[0] === \"_v6\") {\n options = undefined;\n }\n }\n\n if (options) {\n // With options: Make UUID independent of internal state\n bytes = v1Bytes(\n options.random ?? options.rng?.() ?? rng(),\n options.msecs,\n options.nsecs,\n options.clockseq,\n options.node,\n buf,\n offset\n );\n } else {\n // Without options: Make UUID from internal state\n const now = Date.now();\n const rnds = rng();\n\n updateV1State(_state, now, rnds);\n\n // Geenerate UUID. Note that v6 uses random values for `clockseq` and\n // `node`.\n //\n // https://www.rfc-editor.org/rfc/rfc9562.html#section-5.6-4\n bytes = v1Bytes(\n rnds,\n _state.msecs,\n _state.nsecs,\n // v6 UUIDs get random `clockseq` and `node` for every UUID\n // https://www.rfc-editor.org/rfc/rfc9562.html#section-5.6-4\n isV6 ? undefined : _state.clockseq,\n isV6 ? undefined : _state.node,\n buf,\n offset\n );\n }\n\n return buf ?? unsafeStringify(bytes);\n}\n\n// (Private!) Do not use. This method is only exported for testing purposes\n// and may change without notice.\nexport function updateV1State(state: V1State, now: number, rnds: Uint8Array) {\n state.msecs ??= -Infinity;\n state.nsecs ??= 0;\n\n // Update timestamp\n if (now === state.msecs) {\n // Same msec-interval = simulate higher clock resolution by bumping `nsecs`\n // https://www.rfc-editor.org/rfc/rfc9562.html#section-6.1-2.6\n state.nsecs++;\n\n // Check for `nsecs` overflow (nsecs is capped at 10K intervals / msec)\n if (state.nsecs >= 10000) {\n // Prior to uuid@11 this would throw an error, however the RFCs allow for\n // changing the node in this case. This slightly breaks monotonicity at\n // msec granularity, but that's not a significant concern.\n // https://www.rfc-editor.org/rfc/rfc9562.html#section-6.1-2.16\n state.node = undefined;\n state.nsecs = 0;\n }\n } else if (now > state.msecs) {\n // Reset nsec counter when clock advances to a new msec interval\n state.nsecs = 0;\n } else if (now < state.msecs) {\n // Handle clock regression\n // https://www.rfc-editor.org/rfc/rfc9562.html#section-6.1-2.7\n //\n // Note: Unsetting node here causes both it and clockseq to be randomized,\n // below.\n state.node = undefined;\n }\n\n // Init node and clock sequence (do this after timestamp update which may\n // reset the node) https://www.rfc-editor.org/rfc/rfc9562.html#section-5.1-7\n //\n // Note:\n if (!state.node) {\n state.node = rnds.slice(10, 16);\n\n // Set multicast bit\n // https://www.rfc-editor.org/rfc/rfc9562.html#section-6.10-3\n state.node[0] |= 0x01; // Set multicast bit\n\n // Clock sequence must be randomized\n // https://www.rfc-editor.org/rfc/rfc9562.html#section-5.1-8\n state.clockseq = ((rnds[8] << 8) | rnds[9]) & 0x3fff;\n }\n\n state.msecs = now;\n\n return state;\n}\n\nfunction v1Bytes(\n rnds: Uint8Array,\n msecs?: number,\n nsecs?: number,\n clockseq?: number,\n node?: Uint8Array,\n buf?: Uint8Array,\n offset = 0\n) {\n if (rnds.length < 16) {\n throw new Error(\"Random bytes length must be >= 16\");\n }\n\n // Defaults\n if (!buf) {\n buf = new Uint8Array(16);\n offset = 0;\n } else {\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\n msecs ??= Date.now();\n nsecs ??= 0;\n clockseq ??= ((rnds[8] << 8) | rnds[9]) & 0x3fff;\n node ??= rnds.slice(10, 16);\n\n // Offset to Gregorian epoch\n // https://www.rfc-editor.org/rfc/rfc9562.html#section-5.1-1\n msecs += 12219292800000;\n\n // `time_low`\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n buf[offset++] = (tl >>> 24) & 0xff;\n buf[offset++] = (tl >>> 16) & 0xff;\n buf[offset++] = (tl >>> 8) & 0xff;\n buf[offset++] = tl & 0xff;\n\n // `time_mid`\n const tmh = ((msecs / 0x100000000) * 10000) & 0xfffffff;\n buf[offset++] = (tmh >>> 8) & 0xff;\n buf[offset++] = tmh & 0xff;\n\n // `time_high_and_version`\n buf[offset++] = ((tmh >>> 24) & 0xf) | 0x10; // include version\n buf[offset++] = (tmh >>> 16) & 0xff;\n\n // `clock_seq_hi_and_reserved` | variant\n buf[offset++] = (clockseq >>> 8) | 0x80;\n\n // `clock_seq_low`\n buf[offset++] = clockseq & 0xff;\n\n // `node`\n for (let n = 0; n < 6; ++n) {\n buf[offset++] = node[n];\n }\n\n return buf;\n}\n\nexport default v1;\n"],"mappings":";;;AAwBA,MAAM,SAAkB,EAAE;AAY1B,SAAS,GACP,SACA,KACA,QACiB;CACjB,IAAI;CAGJ,MAAM,OAAO,SAAS,OAAO;AAC7B,KAAI,SAAS;EACX,MAAM,cAAc,OAAO,KAAK,QAAQ;AACxC,MAAI,YAAY,WAAW,KAAK,YAAY,OAAO,MACjD,WAAU,KAAA;;AAId,KAAI,QAEF,SAAQ,QACN,QAAQ,UAAU,QAAQ,OAAO,IAAI,KAAK,EAC1C,QAAQ,OACR,QAAQ,OACR,QAAQ,UACR,QAAQ,MACR,KACA,OACD;MACI;EAEL,MAAM,MAAM,KAAK,KAAK;EACtB,MAAM,OAAO,KAAK;AAElB,gBAAc,QAAQ,KAAK,KAAK;AAMhC,UAAQ,QACN,MACA,OAAO,OACP,OAAO,OAGP,OAAO,KAAA,IAAY,OAAO,UAC1B,OAAO,KAAA,IAAY,OAAO,MAC1B,KACA,OACD;;AAGH,QAAO,OAAO,gBAAgB,MAAM;;AAKtC,SAAgB,cAAc,OAAgB,KAAa,MAAkB;AAC3E,OAAM,UAAU;AAChB,OAAM,UAAU;AAGhB,KAAI,QAAQ,MAAM,OAAO;AAGvB,QAAM;AAGN,MAAI,MAAM,SAAS,KAAO;AAKxB,SAAM,OAAO,KAAA;AACb,SAAM,QAAQ;;YAEP,MAAM,MAAM,MAErB,OAAM,QAAQ;UACL,MAAM,MAAM,MAMrB,OAAM,OAAO,KAAA;AAOf,KAAI,CAAC,MAAM,MAAM;AACf,QAAM,OAAO,KAAK,MAAM,IAAI,GAAG;AAI/B,QAAM,KAAK,MAAM;AAIjB,QAAM,YAAa,KAAK,MAAM,IAAK,KAAK,MAAM;;AAGhD,OAAM,QAAQ;AAEd,QAAO;;AAGT,SAAS,QACP,MACA,OACA,OACA,UACA,MACA,KACA,SAAS,GACT;AACA,KAAI,KAAK,SAAS,GAChB,OAAM,IAAI,MAAM,oCAAoC;AAItD,KAAI,CAAC,KAAK;AACR,QAAM,IAAI,WAAW,GAAG;AACxB,WAAS;YAEL,SAAS,KAAK,SAAS,KAAK,IAAI,OAClC,OAAM,IAAI,WACR,mBAAmB,OAAO,GAAG,SAAS,GAAG,0BAC1C;AAIL,WAAU,KAAK,KAAK;AACpB,WAAU;AACV,eAAe,KAAK,MAAM,IAAK,KAAK,MAAM;AAC1C,UAAS,KAAK,MAAM,IAAI,GAAG;AAI3B,UAAS;CAGT,MAAM,OAAO,QAAQ,aAAa,MAAQ,SAAS;AACnD,KAAI,YAAa,OAAO,KAAM;AAC9B,KAAI,YAAa,OAAO,KAAM;AAC9B,KAAI,YAAa,OAAO,IAAK;AAC7B,KAAI,YAAY,KAAK;CAGrB,MAAM,MAAQ,QAAQ,aAAe,MAAS;AAC9C,KAAI,YAAa,QAAQ,IAAK;AAC9B,KAAI,YAAY,MAAM;AAGtB,KAAI,YAAc,QAAQ,KAAM,KAAO;AACvC,KAAI,YAAa,QAAQ,KAAM;AAG/B,KAAI,YAAa,aAAa,IAAK;AAGnC,KAAI,YAAY,WAAW;AAG3B,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,EACvB,KAAI,YAAY,KAAK;AAGvB,QAAO"}
@@ -0,0 +1,36 @@
1
+ const require_parse = require("./parse.cjs");
2
+ const require_stringify = require("./stringify.cjs");
3
+ //#region src/utils/uuid/v35.ts
4
+ function stringToBytes(str) {
5
+ str = unescape(encodeURIComponent(str));
6
+ const bytes = new Uint8Array(str.length);
7
+ for (let i = 0; i < str.length; ++i) bytes[i] = str.charCodeAt(i);
8
+ return bytes;
9
+ }
10
+ const DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8";
11
+ const URL = "6ba7b811-9dad-11d1-80b4-00c04fd430c8";
12
+ function v35(version, hash, value, namespace, buf, offset) {
13
+ const valueBytes = typeof value === "string" ? stringToBytes(value) : value;
14
+ const namespaceBytes = typeof namespace === "string" ? require_parse.default(namespace) : namespace;
15
+ if (typeof namespace === "string") namespace = require_parse.default(namespace);
16
+ if (namespace?.length !== 16) throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");
17
+ let bytes = new Uint8Array(16 + valueBytes.length);
18
+ bytes.set(namespaceBytes);
19
+ bytes.set(valueBytes, namespaceBytes.length);
20
+ bytes = hash(bytes);
21
+ bytes[6] = bytes[6] & 15 | version;
22
+ bytes[8] = bytes[8] & 63 | 128;
23
+ if (buf) {
24
+ offset ??= 0;
25
+ if (offset < 0 || offset + 16 > buf.length) throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
26
+ for (let i = 0; i < 16; ++i) buf[offset + i] = bytes[i];
27
+ return buf;
28
+ }
29
+ return require_stringify.unsafeStringify(bytes);
30
+ }
31
+ //#endregion
32
+ exports.DNS = DNS;
33
+ exports.URL = URL;
34
+ exports.default = v35;
35
+
36
+ //# sourceMappingURL=v35.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v35.cjs","names":["parse","unsafeStringify"],"sources":["../../../src/utils/uuid/v35.ts"],"sourcesContent":["import parse from \"./parse.js\";\nimport { unsafeStringify } from \"./stringify.js\";\nimport type { UUIDTypes } from \"./types.js\";\n\nexport function stringToBytes(str: string) {\n // TODO: Use TextEncoder (see https://stackoverflow.com/a/48762658/109538)\n str = unescape(encodeURIComponent(str));\n\n const bytes = new Uint8Array(str.length);\n\n for (let i = 0; i < str.length; ++i) {\n bytes[i] = str.charCodeAt(i);\n }\n\n return bytes;\n}\n\nexport const DNS = \"6ba7b810-9dad-11d1-80b4-00c04fd430c8\";\nexport const URL = \"6ba7b811-9dad-11d1-80b4-00c04fd430c8\";\n\ntype HashFunction = (bytes: Uint8Array) => Uint8Array;\n\nexport default function v35<TBuf extends Uint8Array = Uint8Array>(\n version: 0x30 | 0x50,\n hash: HashFunction,\n value: string | Uint8Array,\n namespace: UUIDTypes,\n buf?: TBuf,\n offset?: number\n): UUIDTypes<TBuf> {\n const valueBytes: Uint8Array =\n typeof value === \"string\" ? stringToBytes(value) : value;\n const namespaceBytes: Uint8Array =\n typeof namespace === \"string\" ? parse(namespace) : namespace;\n\n if (typeof namespace === \"string\") {\n namespace = parse(namespace);\n }\n\n if (namespace?.length !== 16) {\n throw TypeError(\n \"Namespace must be array-like (16 iterable integer values, 0-255)\"\n );\n }\n\n // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n let bytes = new Uint8Array(16 + valueBytes.length);\n bytes.set(namespaceBytes);\n bytes.set(valueBytes, namespaceBytes.length);\n bytes = hash(bytes);\n\n bytes[6] = (bytes[6] & 0x0f) | version;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n\n if (buf) {\n 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] = bytes[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(bytes);\n}\n"],"mappings":";;;AAIA,SAAgB,cAAc,KAAa;AAEzC,OAAM,SAAS,mBAAmB,IAAI,CAAC;CAEvC,MAAM,QAAQ,IAAI,WAAW,IAAI,OAAO;AAExC,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,EAAE,EAChC,OAAM,KAAK,IAAI,WAAW,EAAE;AAG9B,QAAO;;AAGT,MAAa,MAAM;AACnB,MAAa,MAAM;AAInB,SAAwB,IACtB,SACA,MACA,OACA,WACA,KACA,QACiB;CACjB,MAAM,aACJ,OAAO,UAAU,WAAW,cAAc,MAAM,GAAG;CACrD,MAAM,iBACJ,OAAO,cAAc,WAAWA,cAAAA,QAAM,UAAU,GAAG;AAErD,KAAI,OAAO,cAAc,SACvB,aAAYA,cAAAA,QAAM,UAAU;AAG9B,KAAI,WAAW,WAAW,GACxB,OAAM,UACJ,mEACD;CAMH,IAAI,QAAQ,IAAI,WAAW,KAAK,WAAW,OAAO;AAClD,OAAM,IAAI,eAAe;AACzB,OAAM,IAAI,YAAY,eAAe,OAAO;AAC5C,SAAQ,KAAK,MAAM;AAEnB,OAAM,KAAM,MAAM,KAAK,KAAQ;AAC/B,OAAM,KAAM,MAAM,KAAK,KAAQ;AAE/B,KAAI,KAAK;AACP,aAAW;AACX,MAAI,SAAS,KAAK,SAAS,KAAK,IAAI,OAClC,OAAM,IAAI,WACR,mBAAmB,OAAO,GAAG,SAAS,GAAG,0BAC1C;AAGH,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EACxB,KAAI,SAAS,KAAK,MAAM;AAG1B,SAAO;;AAGT,QAAOC,kBAAAA,gBAAgB,MAAM"}
@@ -0,0 +1,34 @@
1
+ import parse from "./parse.js";
2
+ import { unsafeStringify } from "./stringify.js";
3
+ //#region src/utils/uuid/v35.ts
4
+ function stringToBytes(str) {
5
+ str = unescape(encodeURIComponent(str));
6
+ const bytes = new Uint8Array(str.length);
7
+ for (let i = 0; i < str.length; ++i) bytes[i] = str.charCodeAt(i);
8
+ return bytes;
9
+ }
10
+ const DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8";
11
+ const URL = "6ba7b811-9dad-11d1-80b4-00c04fd430c8";
12
+ function v35(version, hash, value, namespace, buf, offset) {
13
+ const valueBytes = typeof value === "string" ? stringToBytes(value) : value;
14
+ const namespaceBytes = typeof namespace === "string" ? parse(namespace) : namespace;
15
+ if (typeof namespace === "string") namespace = parse(namespace);
16
+ if (namespace?.length !== 16) throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");
17
+ let bytes = new Uint8Array(16 + valueBytes.length);
18
+ bytes.set(namespaceBytes);
19
+ bytes.set(valueBytes, namespaceBytes.length);
20
+ bytes = hash(bytes);
21
+ bytes[6] = bytes[6] & 15 | version;
22
+ bytes[8] = bytes[8] & 63 | 128;
23
+ if (buf) {
24
+ offset ??= 0;
25
+ if (offset < 0 || offset + 16 > buf.length) throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
26
+ for (let i = 0; i < 16; ++i) buf[offset + i] = bytes[i];
27
+ return buf;
28
+ }
29
+ return unsafeStringify(bytes);
30
+ }
31
+ //#endregion
32
+ export { DNS, URL, v35 as default };
33
+
34
+ //# sourceMappingURL=v35.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v35.js","names":[],"sources":["../../../src/utils/uuid/v35.ts"],"sourcesContent":["import parse from \"./parse.js\";\nimport { unsafeStringify } from \"./stringify.js\";\nimport type { UUIDTypes } from \"./types.js\";\n\nexport function stringToBytes(str: string) {\n // TODO: Use TextEncoder (see https://stackoverflow.com/a/48762658/109538)\n str = unescape(encodeURIComponent(str));\n\n const bytes = new Uint8Array(str.length);\n\n for (let i = 0; i < str.length; ++i) {\n bytes[i] = str.charCodeAt(i);\n }\n\n return bytes;\n}\n\nexport const DNS = \"6ba7b810-9dad-11d1-80b4-00c04fd430c8\";\nexport const URL = \"6ba7b811-9dad-11d1-80b4-00c04fd430c8\";\n\ntype HashFunction = (bytes: Uint8Array) => Uint8Array;\n\nexport default function v35<TBuf extends Uint8Array = Uint8Array>(\n version: 0x30 | 0x50,\n hash: HashFunction,\n value: string | Uint8Array,\n namespace: UUIDTypes,\n buf?: TBuf,\n offset?: number\n): UUIDTypes<TBuf> {\n const valueBytes: Uint8Array =\n typeof value === \"string\" ? stringToBytes(value) : value;\n const namespaceBytes: Uint8Array =\n typeof namespace === \"string\" ? parse(namespace) : namespace;\n\n if (typeof namespace === \"string\") {\n namespace = parse(namespace);\n }\n\n if (namespace?.length !== 16) {\n throw TypeError(\n \"Namespace must be array-like (16 iterable integer values, 0-255)\"\n );\n }\n\n // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n let bytes = new Uint8Array(16 + valueBytes.length);\n bytes.set(namespaceBytes);\n bytes.set(valueBytes, namespaceBytes.length);\n bytes = hash(bytes);\n\n bytes[6] = (bytes[6] & 0x0f) | version;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n\n if (buf) {\n 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] = bytes[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(bytes);\n}\n"],"mappings":";;;AAIA,SAAgB,cAAc,KAAa;AAEzC,OAAM,SAAS,mBAAmB,IAAI,CAAC;CAEvC,MAAM,QAAQ,IAAI,WAAW,IAAI,OAAO;AAExC,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,EAAE,EAChC,OAAM,KAAK,IAAI,WAAW,EAAE;AAG9B,QAAO;;AAGT,MAAa,MAAM;AACnB,MAAa,MAAM;AAInB,SAAwB,IACtB,SACA,MACA,OACA,WACA,KACA,QACiB;CACjB,MAAM,aACJ,OAAO,UAAU,WAAW,cAAc,MAAM,GAAG;CACrD,MAAM,iBACJ,OAAO,cAAc,WAAW,MAAM,UAAU,GAAG;AAErD,KAAI,OAAO,cAAc,SACvB,aAAY,MAAM,UAAU;AAG9B,KAAI,WAAW,WAAW,GACxB,OAAM,UACJ,mEACD;CAMH,IAAI,QAAQ,IAAI,WAAW,KAAK,WAAW,OAAO;AAClD,OAAM,IAAI,eAAe;AACzB,OAAM,IAAI,YAAY,eAAe,OAAO;AAC5C,SAAQ,KAAK,MAAM;AAEnB,OAAM,KAAM,MAAM,KAAK,KAAQ;AAC/B,OAAM,KAAM,MAAM,KAAK,KAAQ;AAE/B,KAAI,KAAK;AACP,aAAW;AACX,MAAI,SAAS,KAAK,SAAS,KAAK,IAAI,OAClC,OAAM,IAAI,WACR,mBAAmB,OAAO,GAAG,SAAS,GAAG,0BAC1C;AAGH,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EACxB,KAAI,SAAS,KAAK,MAAM;AAG1B,SAAO;;AAGT,QAAO,gBAAgB,MAAM"}
@@ -0,0 +1,25 @@
1
+ const require_stringify = require("./stringify.cjs");
2
+ const require_rng = require("./rng.cjs");
3
+ //#region src/utils/uuid/v4.ts
4
+ function v4(options, buf, offset) {
5
+ if (!buf && !options && crypto.randomUUID) return crypto.randomUUID();
6
+ return _v4(options, buf, offset);
7
+ }
8
+ function _v4(options, buf, offset) {
9
+ options = options || {};
10
+ const rnds = options.random ?? options.rng?.() ?? require_rng.default();
11
+ if (rnds.length < 16) throw new Error("Random bytes length must be >= 16");
12
+ rnds[6] = rnds[6] & 15 | 64;
13
+ rnds[8] = rnds[8] & 63 | 128;
14
+ if (buf) {
15
+ offset = offset || 0;
16
+ if (offset < 0 || offset + 16 > buf.length) throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
17
+ for (let i = 0; i < 16; ++i) buf[offset + i] = rnds[i];
18
+ return buf;
19
+ }
20
+ return require_stringify.unsafeStringify(rnds);
21
+ }
22
+ //#endregion
23
+ exports.default = v4;
24
+
25
+ //# sourceMappingURL=v4.cjs.map
@@ -0,0 +1 @@
1
+ {"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;AACjB,KAAI,CAAC,OAAO,CAAC,WAAW,OAAO,WAC7B,QAAO,OAAO,YAAY;AAO5B,QAAO,IAAI,SAAS,KAAK,OAAO;;AAGlC,SAAS,IACP,SACA,KACA,QACiB;AACjB,WAAU,WAAW,EAAE;CAEvB,MAAM,OAAO,QAAQ,UAAU,QAAQ,OAAO,IAAIA,YAAAA,SAAK;AACvD,KAAI,KAAK,SAAS,GAChB,OAAM,IAAI,MAAM,oCAAoC;AAItD,MAAK,KAAM,KAAK,KAAK,KAAQ;AAC7B,MAAK,KAAM,KAAK,KAAK,KAAQ;AAG7B,KAAI,KAAK;AACP,WAAS,UAAU;AACnB,MAAI,SAAS,KAAK,SAAS,KAAK,IAAI,OAClC,OAAM,IAAI,WACR,mBAAmB,OAAO,GAAG,SAAS,GAAG,0BAC1C;AAGH,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EACxB,KAAI,SAAS,KAAK,KAAK;AAGzB,SAAO;;AAGT,QAAOC,kBAAAA,gBAAgB,KAAK"}
@@ -0,0 +1,8 @@
1
+ import { Version4Options } from "./types.cjs";
2
+
3
+ //#region src/utils/uuid/v4.d.ts
4
+ declare function v4(options?: Version4Options, buf?: undefined, offset?: number): string;
5
+ declare function v4<TBuf extends Uint8Array = Uint8Array>(options: Version4Options | undefined, buf: TBuf, offset?: number): TBuf;
6
+ //#endregion
7
+ export { v4 };
8
+ //# sourceMappingURL=v4.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v4.d.cts","names":[],"sources":["../../../src/utils/uuid/v4.ts"],"mappings":";;;iBAIS,EAAA,CACP,OAAA,GAAU,eAAA,EACV,GAAA,cACA,MAAA;AAAA,iBAEO,EAAA,cAAgB,UAAA,GAAa,UAAA,CAAA,CACpC,OAAA,EAAS,eAAA,cACT,GAAA,EAAK,IAAA,EACL,MAAA,YACC,IAAA"}
@@ -0,0 +1,8 @@
1
+ import { Version4Options } from "./types.js";
2
+
3
+ //#region src/utils/uuid/v4.d.ts
4
+ declare function v4(options?: Version4Options, buf?: undefined, offset?: number): string;
5
+ declare function v4<TBuf extends Uint8Array = Uint8Array>(options: Version4Options | undefined, buf: TBuf, offset?: number): TBuf;
6
+ //#endregion
7
+ export { v4 };
8
+ //# sourceMappingURL=v4.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v4.d.ts","names":[],"sources":["../../../src/utils/uuid/v4.ts"],"mappings":";;;iBAIS,EAAA,CACP,OAAA,GAAU,eAAA,EACV,GAAA,cACA,MAAA;AAAA,iBAEO,EAAA,cAAgB,UAAA,GAAa,UAAA,CAAA,CACpC,OAAA,EAAS,eAAA,cACT,GAAA,EAAK,IAAA,EACL,MAAA,YACC,IAAA"}
@@ -0,0 +1,25 @@
1
+ import { unsafeStringify } from "./stringify.js";
2
+ import rng from "./rng.js";
3
+ //#region src/utils/uuid/v4.ts
4
+ function v4(options, buf, offset) {
5
+ if (!buf && !options && crypto.randomUUID) return crypto.randomUUID();
6
+ return _v4(options, buf, offset);
7
+ }
8
+ function _v4(options, buf, offset) {
9
+ options = options || {};
10
+ const rnds = options.random ?? options.rng?.() ?? rng();
11
+ if (rnds.length < 16) throw new Error("Random bytes length must be >= 16");
12
+ rnds[6] = rnds[6] & 15 | 64;
13
+ rnds[8] = rnds[8] & 63 | 128;
14
+ if (buf) {
15
+ offset = offset || 0;
16
+ if (offset < 0 || offset + 16 > buf.length) throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
17
+ for (let i = 0; i < 16; ++i) buf[offset + i] = rnds[i];
18
+ return buf;
19
+ }
20
+ return unsafeStringify(rnds);
21
+ }
22
+ //#endregion
23
+ export { v4 as default };
24
+
25
+ //# sourceMappingURL=v4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v4.js","names":[],"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;AACjB,KAAI,CAAC,OAAO,CAAC,WAAW,OAAO,WAC7B,QAAO,OAAO,YAAY;AAO5B,QAAO,IAAI,SAAS,KAAK,OAAO;;AAGlC,SAAS,IACP,SACA,KACA,QACiB;AACjB,WAAU,WAAW,EAAE;CAEvB,MAAM,OAAO,QAAQ,UAAU,QAAQ,OAAO,IAAI,KAAK;AACvD,KAAI,KAAK,SAAS,GAChB,OAAM,IAAI,MAAM,oCAAoC;AAItD,MAAK,KAAM,KAAK,KAAK,KAAQ;AAC7B,MAAK,KAAM,KAAK,KAAK,KAAQ;AAG7B,KAAI,KAAK;AACP,WAAS,UAAU;AACnB,MAAI,SAAS,KAAK,SAAS,KAAK,IAAI,OAClC,OAAM,IAAI,WACR,mBAAmB,OAAO,GAAG,SAAS,GAAG,0BAC1C;AAGH,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EACxB,KAAI,SAAS,KAAK,KAAK;AAGzB,SAAO;;AAGT,QAAO,gBAAgB,KAAK"}