uuid 10.0.0 → 11.0.0

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 (347) hide show
  1. package/CHANGELOG.md +170 -0
  2. package/README.md +71 -171
  3. package/dist/cjs/_types.d.ts +21 -0
  4. package/dist/cjs/_types.js +3 -0
  5. package/dist/cjs/index.d.ts +14 -0
  6. package/dist/cjs/index.js +32 -0
  7. package/dist/cjs/max.d.ts +2 -0
  8. package/dist/cjs/max.js +4 -0
  9. package/dist/cjs/md5.d.ts +2 -0
  10. package/dist/cjs/md5.js +14 -0
  11. package/dist/cjs/native.d.ts +5 -0
  12. package/dist/cjs/native.js +5 -0
  13. package/dist/cjs/nil.d.ts +2 -0
  14. package/dist/cjs/nil.js +4 -0
  15. package/dist/cjs/package.json +1 -0
  16. package/dist/cjs/parse.d.ts +2 -0
  17. package/dist/cjs/parse.js +12 -0
  18. package/dist/cjs/regex.d.ts +2 -0
  19. package/dist/cjs/regex.js +4 -0
  20. package/dist/cjs/rng.d.ts +1 -0
  21. package/dist/cjs/rng.js +14 -0
  22. package/dist/cjs/sha1.d.ts +2 -0
  23. package/dist/cjs/sha1.js +14 -0
  24. package/dist/cjs/stringify.d.ts +3 -0
  25. package/dist/cjs/stringify.js +39 -0
  26. package/dist/cjs/test/parse.test.d.ts +1 -0
  27. package/dist/cjs/test/parse.test.js +51 -0
  28. package/dist/cjs/test/rng.test.d.ts +1 -0
  29. package/dist/cjs/test/rng.test.js +15 -0
  30. package/dist/cjs/test/stringify.test.d.ts +1 -0
  31. package/dist/cjs/test/stringify.test.js +24 -0
  32. package/dist/cjs/test/test_constants.d.ts +33 -0
  33. package/dist/cjs/test/test_constants.js +92 -0
  34. package/dist/cjs/test/v1.test.d.ts +1 -0
  35. package/dist/cjs/test/v1.test.js +128 -0
  36. package/dist/cjs/test/v35.test.d.ts +1 -0
  37. package/dist/cjs/test/v35.test.js +144 -0
  38. package/dist/cjs/test/v4.test.d.ts +1 -0
  39. package/dist/cjs/test/v4.test.js +61 -0
  40. package/dist/cjs/test/v6.test.d.ts +1 -0
  41. package/dist/cjs/test/v6.test.js +57 -0
  42. package/dist/cjs/test/v7.test.d.ts +1 -0
  43. package/dist/cjs/test/v7.test.js +195 -0
  44. package/dist/cjs/test/validate.test.d.ts +1 -0
  45. package/dist/cjs/test/validate.test.js +14 -0
  46. package/dist/cjs/test/version.test.d.ts +1 -0
  47. package/dist/cjs/test/version.test.js +21 -0
  48. package/dist/cjs/uuid-bin.d.ts +1 -0
  49. package/dist/cjs/uuid-bin.js +73 -0
  50. package/dist/cjs/v1.d.ts +11 -0
  51. package/dist/cjs/v1.js +79 -0
  52. package/dist/cjs/v1ToV6.d.ts +2 -0
  53. package/dist/cjs/v1ToV6.js +14 -0
  54. package/dist/cjs/v3.d.ts +9 -0
  55. package/dist/cjs/v3.js +15 -0
  56. package/dist/cjs/v35.d.ts +7 -0
  57. package/dist/cjs/v35.js +42 -0
  58. package/dist/cjs/v4.d.ts +4 -0
  59. package/dist/cjs/v4.js +24 -0
  60. package/dist/cjs/v5.d.ts +9 -0
  61. package/dist/cjs/v5.js +15 -0
  62. package/dist/cjs/v6.d.ts +4 -0
  63. package/dist/cjs/v6.js +20 -0
  64. package/dist/cjs/v6ToV1.d.ts +2 -0
  65. package/dist/cjs/v6ToV1.js +14 -0
  66. package/dist/cjs/v7.d.ts +9 -0
  67. package/dist/cjs/v7.js +61 -0
  68. package/dist/cjs/validate.d.ts +2 -0
  69. package/dist/cjs/validate.js +8 -0
  70. package/dist/cjs/version.d.ts +2 -0
  71. package/dist/cjs/version.js +11 -0
  72. package/dist/cjs-browser/_types.d.ts +21 -0
  73. package/dist/cjs-browser/_types.js +3 -0
  74. package/dist/{esm-node/index.js → cjs-browser/index.d.ts} +1 -1
  75. package/dist/cjs-browser/index.js +32 -0
  76. package/dist/cjs-browser/max.d.ts +2 -0
  77. package/dist/cjs-browser/max.js +4 -0
  78. package/dist/cjs-browser/md5.d.ts +2 -0
  79. package/dist/cjs-browser/md5.js +138 -0
  80. package/dist/cjs-browser/native.d.ts +4 -0
  81. package/dist/cjs-browser/native.js +5 -0
  82. package/dist/cjs-browser/nil.d.ts +2 -0
  83. package/dist/cjs-browser/nil.js +4 -0
  84. package/dist/cjs-browser/package.json +1 -0
  85. package/dist/cjs-browser/parse.d.ts +2 -0
  86. package/dist/cjs-browser/parse.js +12 -0
  87. package/dist/cjs-browser/regex.d.ts +2 -0
  88. package/dist/cjs-browser/regex.js +4 -0
  89. package/dist/cjs-browser/rng.d.ts +1 -0
  90. package/dist/cjs-browser/rng.js +15 -0
  91. package/dist/cjs-browser/sha1.d.ts +2 -0
  92. package/dist/cjs-browser/sha1.js +73 -0
  93. package/dist/cjs-browser/stringify.d.ts +3 -0
  94. package/dist/cjs-browser/stringify.js +39 -0
  95. package/dist/cjs-browser/test/parse.test.d.ts +1 -0
  96. package/dist/cjs-browser/test/parse.test.js +51 -0
  97. package/dist/cjs-browser/test/rng.test.d.ts +1 -0
  98. package/dist/cjs-browser/test/rng.test.js +15 -0
  99. package/dist/cjs-browser/test/stringify.test.d.ts +1 -0
  100. package/dist/cjs-browser/test/stringify.test.js +24 -0
  101. package/dist/cjs-browser/test/test_constants.d.ts +33 -0
  102. package/dist/cjs-browser/test/test_constants.js +92 -0
  103. package/dist/cjs-browser/test/v1.test.d.ts +1 -0
  104. package/dist/cjs-browser/test/v1.test.js +128 -0
  105. package/dist/cjs-browser/test/v35.test.d.ts +1 -0
  106. package/dist/cjs-browser/test/v35.test.js +144 -0
  107. package/dist/cjs-browser/test/v4.test.d.ts +1 -0
  108. package/dist/cjs-browser/test/v4.test.js +61 -0
  109. package/dist/cjs-browser/test/v6.test.d.ts +1 -0
  110. package/dist/cjs-browser/test/v6.test.js +57 -0
  111. package/dist/cjs-browser/test/v7.test.d.ts +1 -0
  112. package/dist/cjs-browser/test/v7.test.js +195 -0
  113. package/dist/cjs-browser/test/validate.test.d.ts +1 -0
  114. package/dist/cjs-browser/test/validate.test.js +14 -0
  115. package/dist/cjs-browser/test/version.test.d.ts +1 -0
  116. package/dist/cjs-browser/test/version.test.js +21 -0
  117. package/dist/cjs-browser/uuid-bin.d.ts +1 -0
  118. package/dist/cjs-browser/uuid-bin.js +73 -0
  119. package/dist/cjs-browser/v1.d.ts +11 -0
  120. package/dist/cjs-browser/v1.js +79 -0
  121. package/dist/cjs-browser/v1ToV6.d.ts +2 -0
  122. package/dist/cjs-browser/v1ToV6.js +14 -0
  123. package/dist/cjs-browser/v3.d.ts +9 -0
  124. package/dist/cjs-browser/v3.js +15 -0
  125. package/dist/cjs-browser/v35.d.ts +7 -0
  126. package/dist/cjs-browser/v35.js +42 -0
  127. package/dist/cjs-browser/v4.d.ts +4 -0
  128. package/dist/cjs-browser/v4.js +24 -0
  129. package/dist/cjs-browser/v5.d.ts +9 -0
  130. package/dist/cjs-browser/v5.js +15 -0
  131. package/dist/cjs-browser/v6.d.ts +4 -0
  132. package/dist/cjs-browser/v6.js +20 -0
  133. package/dist/cjs-browser/v6ToV1.d.ts +2 -0
  134. package/dist/cjs-browser/v6ToV1.js +14 -0
  135. package/dist/cjs-browser/v7.d.ts +9 -0
  136. package/dist/cjs-browser/v7.js +61 -0
  137. package/dist/cjs-browser/validate.d.ts +2 -0
  138. package/dist/cjs-browser/validate.js +8 -0
  139. package/dist/cjs-browser/version.d.ts +2 -0
  140. package/dist/cjs-browser/version.js +11 -0
  141. package/dist/esm/_types.d.ts +21 -0
  142. package/dist/esm/_types.js +2 -0
  143. package/dist/esm/bin/uuid +2 -0
  144. package/dist/esm/index.d.ts +14 -0
  145. package/dist/esm/index.js +15 -0
  146. package/dist/esm/max.d.ts +2 -0
  147. package/dist/esm/max.js +2 -0
  148. package/dist/esm/md5.d.ts +2 -0
  149. package/dist/esm/md5.js +12 -0
  150. package/dist/esm/native.d.ts +5 -0
  151. package/dist/esm/native.js +3 -0
  152. package/dist/esm/nil.d.ts +2 -0
  153. package/dist/esm/nil.js +2 -0
  154. package/dist/esm/parse.d.ts +2 -0
  155. package/dist/esm/parse.js +10 -0
  156. package/dist/esm/regex.d.ts +2 -0
  157. package/dist/esm/regex.js +2 -0
  158. package/dist/esm/rng.d.ts +1 -0
  159. package/dist/esm/rng.js +11 -0
  160. package/dist/esm/sha1.d.ts +2 -0
  161. package/dist/esm/sha1.js +12 -0
  162. package/dist/esm/stringify.d.ts +3 -0
  163. package/dist/esm/stringify.js +36 -0
  164. package/dist/esm/test/parse.test.d.ts +1 -0
  165. package/dist/esm/test/parse.test.js +49 -0
  166. package/dist/esm/test/rng.test.d.ts +1 -0
  167. package/dist/esm/test/rng.test.js +13 -0
  168. package/dist/esm/test/stringify.test.d.ts +1 -0
  169. package/dist/esm/test/stringify.test.js +22 -0
  170. package/dist/esm/test/test_constants.d.ts +33 -0
  171. package/dist/esm/test/test_constants.js +89 -0
  172. package/dist/esm/test/v1.test.d.ts +1 -0
  173. package/dist/esm/test/v1.test.js +126 -0
  174. package/dist/esm/test/v35.test.d.ts +1 -0
  175. package/dist/esm/test/v35.test.js +142 -0
  176. package/dist/esm/test/v4.test.d.ts +1 -0
  177. package/dist/esm/test/v4.test.js +59 -0
  178. package/dist/esm/test/v6.test.d.ts +1 -0
  179. package/dist/esm/test/v6.test.js +55 -0
  180. package/dist/esm/test/v7.test.d.ts +1 -0
  181. package/dist/esm/test/v7.test.js +193 -0
  182. package/dist/esm/test/validate.test.d.ts +1 -0
  183. package/dist/esm/test/validate.test.js +12 -0
  184. package/dist/esm/test/version.test.d.ts +1 -0
  185. package/dist/esm/test/version.test.js +19 -0
  186. package/dist/esm/uuid-bin.d.ts +1 -0
  187. package/dist/esm/uuid-bin.js +71 -0
  188. package/dist/esm/v1.d.ts +11 -0
  189. package/dist/esm/v1.js +76 -0
  190. package/dist/esm/v1ToV6.d.ts +2 -0
  191. package/dist/esm/v1ToV6.js +11 -0
  192. package/dist/esm/v3.d.ts +9 -0
  193. package/dist/esm/v3.js +10 -0
  194. package/dist/esm/v35.d.ts +7 -0
  195. package/dist/esm/v35.js +37 -0
  196. package/dist/esm/v4.d.ts +4 -0
  197. package/dist/esm/v4.js +22 -0
  198. package/dist/esm/v5.d.ts +9 -0
  199. package/dist/esm/v5.js +10 -0
  200. package/dist/esm/v6.d.ts +4 -0
  201. package/dist/esm/v6.js +18 -0
  202. package/dist/esm/v6ToV1.d.ts +2 -0
  203. package/dist/esm/v6ToV1.js +11 -0
  204. package/dist/esm/v7.d.ts +9 -0
  205. package/dist/esm/v7.js +58 -0
  206. package/dist/esm/validate.d.ts +2 -0
  207. package/dist/esm/validate.js +6 -0
  208. package/dist/esm/version.d.ts +2 -0
  209. package/dist/esm/version.js +9 -0
  210. package/dist/esm-browser/_types.d.ts +21 -0
  211. package/dist/esm-browser/_types.js +2 -0
  212. package/dist/esm-browser/index.d.ts +14 -0
  213. package/dist/esm-browser/index.js +2 -1
  214. package/dist/esm-browser/max.d.ts +2 -0
  215. package/dist/esm-browser/max.js +2 -1
  216. package/dist/esm-browser/md5.d.ts +2 -0
  217. package/dist/esm-browser/md5.js +114 -172
  218. package/dist/esm-browser/native.d.ts +4 -0
  219. package/dist/esm-browser/native.js +3 -4
  220. package/dist/esm-browser/nil.d.ts +2 -0
  221. package/dist/esm-browser/nil.js +2 -1
  222. package/dist/esm-browser/parse.d.ts +2 -0
  223. package/dist/esm-browser/parse.js +7 -34
  224. package/dist/esm-browser/regex.d.ts +2 -0
  225. package/dist/esm-browser/regex.js +2 -1
  226. package/dist/esm-browser/rng.d.ts +1 -0
  227. package/dist/esm-browser/rng.js +9 -14
  228. package/dist/esm-browser/sha1.d.ts +2 -0
  229. package/dist/esm-browser/sha1.js +63 -68
  230. package/dist/esm-browser/stringify.d.ts +3 -0
  231. package/dist/esm-browser/stringify.js +30 -25
  232. package/dist/esm-browser/test/parse.test.d.ts +1 -0
  233. package/dist/esm-browser/test/parse.test.js +49 -0
  234. package/dist/esm-browser/test/rng.test.d.ts +1 -0
  235. package/dist/esm-browser/test/rng.test.js +13 -0
  236. package/dist/esm-browser/test/stringify.test.d.ts +1 -0
  237. package/dist/esm-browser/test/stringify.test.js +22 -0
  238. package/dist/esm-browser/test/test_constants.d.ts +33 -0
  239. package/dist/esm-browser/test/test_constants.js +89 -0
  240. package/dist/esm-browser/test/v1.test.d.ts +1 -0
  241. package/dist/esm-browser/test/v1.test.js +126 -0
  242. package/dist/esm-browser/test/v35.test.d.ts +1 -0
  243. package/dist/esm-browser/test/v35.test.js +142 -0
  244. package/dist/esm-browser/test/v4.test.d.ts +1 -0
  245. package/dist/esm-browser/test/v4.test.js +59 -0
  246. package/dist/esm-browser/test/v6.test.d.ts +1 -0
  247. package/dist/esm-browser/test/v6.test.js +55 -0
  248. package/dist/esm-browser/test/v7.test.d.ts +1 -0
  249. package/dist/esm-browser/test/v7.test.js +193 -0
  250. package/dist/esm-browser/test/validate.test.d.ts +1 -0
  251. package/dist/esm-browser/test/validate.test.js +12 -0
  252. package/dist/esm-browser/test/version.test.d.ts +1 -0
  253. package/dist/esm-browser/test/version.test.js +19 -0
  254. package/dist/esm-browser/uuid-bin.d.ts +1 -0
  255. package/dist/esm-browser/uuid-bin.js +71 -0
  256. package/dist/esm-browser/v1.d.ts +11 -0
  257. package/dist/esm-browser/v1.js +68 -117
  258. package/dist/esm-browser/v1ToV6.d.ts +2 -0
  259. package/dist/esm-browser/v1ToV6.js +7 -16
  260. package/dist/esm-browser/v3.d.ts +9 -0
  261. package/dist/esm-browser/v3.js +9 -3
  262. package/dist/esm-browser/v35.d.ts +7 -0
  263. package/dist/esm-browser/v35.js +29 -47
  264. package/dist/esm-browser/v4.d.ts +4 -0
  265. package/dist/esm-browser/v4.js +16 -19
  266. package/dist/esm-browser/v5.d.ts +9 -0
  267. package/dist/esm-browser/v5.js +9 -3
  268. package/dist/esm-browser/v6.d.ts +4 -0
  269. package/dist/esm-browser/v6.js +14 -32
  270. package/dist/esm-browser/v6ToV1.d.ts +2 -0
  271. package/dist/esm-browser/v6ToV1.js +6 -15
  272. package/dist/esm-browser/v7.d.ts +9 -0
  273. package/dist/esm-browser/v7.js +51 -139
  274. package/dist/esm-browser/validate.d.ts +2 -0
  275. package/dist/esm-browser/validate.js +3 -2
  276. package/dist/esm-browser/version.d.ts +2 -0
  277. package/dist/esm-browser/version.js +6 -5
  278. package/package.json +54 -64
  279. package/wrapper.mjs +1 -1
  280. package/dist/bin/uuid +0 -2
  281. package/dist/commonjs-browser/index.js +0 -104
  282. package/dist/commonjs-browser/max.js +0 -7
  283. package/dist/commonjs-browser/md5.js +0 -200
  284. package/dist/commonjs-browser/native.js +0 -10
  285. package/dist/commonjs-browser/nil.js +0 -7
  286. package/dist/commonjs-browser/parse.js +0 -44
  287. package/dist/commonjs-browser/regex.js +0 -7
  288. package/dist/commonjs-browser/rng.js +0 -23
  289. package/dist/commonjs-browser/sha1.js +0 -82
  290. package/dist/commonjs-browser/stringify.js +0 -38
  291. package/dist/commonjs-browser/v1.js +0 -131
  292. package/dist/commonjs-browser/v1ToV6.js +0 -26
  293. package/dist/commonjs-browser/v3.js +0 -11
  294. package/dist/commonjs-browser/v35.js +0 -63
  295. package/dist/commonjs-browser/v4.js +0 -32
  296. package/dist/commonjs-browser/v5.js +0 -11
  297. package/dist/commonjs-browser/v6.js +0 -42
  298. package/dist/commonjs-browser/v6ToV1.js +0 -26
  299. package/dist/commonjs-browser/v7.js +0 -152
  300. package/dist/commonjs-browser/validate.js +0 -12
  301. package/dist/commonjs-browser/version.js +0 -15
  302. package/dist/esm-node/max.js +0 -1
  303. package/dist/esm-node/md5.js +0 -10
  304. package/dist/esm-node/native.js +0 -4
  305. package/dist/esm-node/nil.js +0 -1
  306. package/dist/esm-node/parse.js +0 -37
  307. package/dist/esm-node/regex.js +0 -1
  308. package/dist/esm-node/rng.js +0 -10
  309. package/dist/esm-node/sha1.js +0 -10
  310. package/dist/esm-node/stringify.js +0 -31
  311. package/dist/esm-node/v1.js +0 -125
  312. package/dist/esm-node/v1ToV6.js +0 -20
  313. package/dist/esm-node/v3.js +0 -4
  314. package/dist/esm-node/v35.js +0 -55
  315. package/dist/esm-node/v4.js +0 -25
  316. package/dist/esm-node/v5.js +0 -4
  317. package/dist/esm-node/v6.js +0 -32
  318. package/dist/esm-node/v6ToV1.js +0 -20
  319. package/dist/esm-node/v7.js +0 -146
  320. package/dist/esm-node/validate.js +0 -5
  321. package/dist/esm-node/version.js +0 -8
  322. package/dist/index.js +0 -104
  323. package/dist/max.js +0 -7
  324. package/dist/md5-browser.js +0 -200
  325. package/dist/md5.js +0 -17
  326. package/dist/native-browser.js +0 -10
  327. package/dist/native.js +0 -11
  328. package/dist/nil.js +0 -7
  329. package/dist/parse.js +0 -44
  330. package/dist/regex.js +0 -7
  331. package/dist/rng-browser.js +0 -23
  332. package/dist/rng.js +0 -17
  333. package/dist/sha1-browser.js +0 -82
  334. package/dist/sha1.js +0 -17
  335. package/dist/stringify.js +0 -38
  336. package/dist/uuid-bin.js +0 -75
  337. package/dist/v1.js +0 -131
  338. package/dist/v1ToV6.js +0 -26
  339. package/dist/v3.js +0 -11
  340. package/dist/v35.js +0 -63
  341. package/dist/v4.js +0 -32
  342. package/dist/v5.js +0 -11
  343. package/dist/v6.js +0 -38
  344. package/dist/v6ToV1.js +0 -26
  345. package/dist/v7.js +0 -152
  346. package/dist/validate.js +0 -12
  347. package/dist/version.js +0 -15
@@ -1,76 +1,71 @@
1
- // Adapted from Chris Veness' SHA1 code at
2
- // http://www.movable-type.co.uk/scripts/sha1.html
3
1
  function f(s, x, y, z) {
4
- switch (s) {
5
- case 0:
6
- return x & y ^ ~x & z;
7
- case 1:
8
- return x ^ y ^ z;
9
- case 2:
10
- return x & y ^ x & z ^ y & z;
11
- case 3:
12
- return x ^ y ^ z;
13
- }
2
+ switch (s) {
3
+ case 0:
4
+ return (x & y) ^ (~x & z);
5
+ case 1:
6
+ return x ^ y ^ z;
7
+ case 2:
8
+ return (x & y) ^ (x & z) ^ (y & z);
9
+ case 3:
10
+ return x ^ y ^ z;
11
+ }
14
12
  }
15
13
  function ROTL(x, n) {
16
- return x << n | x >>> 32 - n;
14
+ return (x << n) | (x >>> (32 - n));
17
15
  }
18
16
  function sha1(bytes) {
19
- var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];
20
- var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];
21
- if (typeof bytes === 'string') {
22
- var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
23
-
24
- bytes = [];
25
- for (var i = 0; i < msg.length; ++i) {
26
- bytes.push(msg.charCodeAt(i));
27
- }
28
- } else if (!Array.isArray(bytes)) {
29
- // Convert Array-like to Array
30
- bytes = Array.prototype.slice.call(bytes);
31
- }
32
- bytes.push(0x80);
33
- var l = bytes.length / 4 + 2;
34
- var N = Math.ceil(l / 16);
35
- var M = new Array(N);
36
- for (var _i = 0; _i < N; ++_i) {
37
- var arr = new Uint32Array(16);
38
- for (var j = 0; j < 16; ++j) {
39
- 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];
40
- }
41
- M[_i] = arr;
42
- }
43
- M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);
44
- M[N - 1][14] = Math.floor(M[N - 1][14]);
45
- M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;
46
- for (var _i2 = 0; _i2 < N; ++_i2) {
47
- var W = new Uint32Array(80);
48
- for (var t = 0; t < 16; ++t) {
49
- W[t] = M[_i2][t];
50
- }
51
- for (var _t = 16; _t < 80; ++_t) {
52
- W[_t] = ROTL(W[_t - 3] ^ W[_t - 8] ^ W[_t - 14] ^ W[_t - 16], 1);
17
+ const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];
18
+ const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];
19
+ const newBytes = new Uint8Array(bytes.length + 1);
20
+ newBytes.set(bytes);
21
+ newBytes[bytes.length] = 0x80;
22
+ bytes = newBytes;
23
+ const l = bytes.length / 4 + 2;
24
+ const N = Math.ceil(l / 16);
25
+ const M = new Array(N);
26
+ for (let i = 0; i < N; ++i) {
27
+ const arr = new Uint32Array(16);
28
+ for (let j = 0; j < 16; ++j) {
29
+ arr[j] =
30
+ (bytes[i * 64 + j * 4] << 24) |
31
+ (bytes[i * 64 + j * 4 + 1] << 16) |
32
+ (bytes[i * 64 + j * 4 + 2] << 8) |
33
+ bytes[i * 64 + j * 4 + 3];
34
+ }
35
+ M[i] = arr;
53
36
  }
54
- var a = H[0];
55
- var b = H[1];
56
- var c = H[2];
57
- var d = H[3];
58
- var e = H[4];
59
- for (var _t2 = 0; _t2 < 80; ++_t2) {
60
- var s = Math.floor(_t2 / 20);
61
- var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[_t2] >>> 0;
62
- e = d;
63
- d = c;
64
- c = ROTL(b, 30) >>> 0;
65
- b = a;
66
- a = T;
37
+ M[N - 1][14] = ((bytes.length - 1) * 8) / Math.pow(2, 32);
38
+ M[N - 1][14] = Math.floor(M[N - 1][14]);
39
+ M[N - 1][15] = ((bytes.length - 1) * 8) & 0xffffffff;
40
+ for (let i = 0; i < N; ++i) {
41
+ const W = new Uint32Array(80);
42
+ for (let t = 0; t < 16; ++t) {
43
+ W[t] = M[i][t];
44
+ }
45
+ for (let t = 16; t < 80; ++t) {
46
+ W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);
47
+ }
48
+ let a = H[0];
49
+ let b = H[1];
50
+ let c = H[2];
51
+ let d = H[3];
52
+ let e = H[4];
53
+ for (let t = 0; t < 80; ++t) {
54
+ const s = Math.floor(t / 20);
55
+ const T = (ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t]) >>> 0;
56
+ e = d;
57
+ d = c;
58
+ c = ROTL(b, 30) >>> 0;
59
+ b = a;
60
+ a = T;
61
+ }
62
+ H[0] = (H[0] + a) >>> 0;
63
+ H[1] = (H[1] + b) >>> 0;
64
+ H[2] = (H[2] + c) >>> 0;
65
+ H[3] = (H[3] + d) >>> 0;
66
+ H[4] = (H[4] + e) >>> 0;
67
67
  }
68
- H[0] = H[0] + a >>> 0;
69
- H[1] = H[1] + b >>> 0;
70
- H[2] = H[2] + c >>> 0;
71
- H[3] = H[3] + d >>> 0;
72
- H[4] = H[4] + e >>> 0;
73
- }
74
- return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];
68
+ 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]);
75
69
  }
76
- export default sha1;
70
+ export default sha1;
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhMS1icm93c2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NoYTEtYnJvd3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxTQUFTLENBQUMsQ0FBQyxDQUFnQixFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUztJQUMxRCxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ1YsS0FBSyxDQUFDO1lBQ0osT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVCLEtBQUssQ0FBQztZQUNKLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkIsS0FBSyxDQUFDO1lBQ0osT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyQyxLQUFLLENBQUM7WUFDSixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxJQUFJLENBQUMsQ0FBUyxFQUFFLENBQVM7SUFDaEMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUFFRCxTQUFTLElBQUksQ0FBQyxLQUFpQjtJQUM3QixNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzNELE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRXZFLE1BQU0sUUFBUSxHQUFHLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbEQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQixRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztJQUM5QixLQUFLLEdBQUcsUUFBUSxDQUFDO0lBRWpCLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM1QixNQUFNLENBQUMsR0FBa0IsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzNCLE1BQU0sR0FBRyxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRWhDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUM1QixHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNKLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDN0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDakMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDaEMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBRUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUM7SUFFckQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTlCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFYixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDNUIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFrQixDQUFDO1lBQzlDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0QsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNOLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDTixDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNOLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDUixDQUFDO1FBRUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFHRCxPQUFPLFVBQVUsQ0FBQyxFQUFFLENBQ2xCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFDVixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUNULENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDSixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUNWLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFDVCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ0osQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFDVixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUNWLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQ1QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNKLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFDVixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUNULENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDSixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUNWLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFDVCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ0wsQ0FBQztBQUNKLENBQUM7QUFFRCxlQUFlLElBQUksQ0FBQyJ9
@@ -0,0 +1,3 @@
1
+ export declare function unsafeStringify(arr: Uint8Array, offset?: number): string;
2
+ declare function stringify(arr: Uint8Array, offset?: number): string;
3
+ export default stringify;
@@ -1,31 +1,36 @@
1
1
  import validate from './validate.js';
2
-
3
- /**
4
- * Convert array of 16 byte values to UUID string format of the form:
5
- * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
6
- */
7
- var byteToHex = [];
8
- for (var i = 0; i < 256; ++i) {
9
- byteToHex.push((i + 0x100).toString(16).slice(1));
2
+ const byteToHex = [];
3
+ for (let i = 0; i < 256; ++i) {
4
+ byteToHex.push((i + 0x100).toString(16).slice(1));
10
5
  }
11
6
  export function unsafeStringify(arr, offset = 0) {
12
- // Note: Be careful editing this code! It's been tuned for performance
13
- // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
14
- //
15
- // Note to future-self: No, you can't remove the `toLowerCase()` call.
16
- // REF: https://github.com/uuidjs/uuid/pull/677#issuecomment-1757351351
17
- 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();
7
+ return (byteToHex[arr[offset + 0]] +
8
+ byteToHex[arr[offset + 1]] +
9
+ byteToHex[arr[offset + 2]] +
10
+ byteToHex[arr[offset + 3]] +
11
+ '-' +
12
+ byteToHex[arr[offset + 4]] +
13
+ byteToHex[arr[offset + 5]] +
14
+ '-' +
15
+ byteToHex[arr[offset + 6]] +
16
+ byteToHex[arr[offset + 7]] +
17
+ '-' +
18
+ byteToHex[arr[offset + 8]] +
19
+ byteToHex[arr[offset + 9]] +
20
+ '-' +
21
+ byteToHex[arr[offset + 10]] +
22
+ byteToHex[arr[offset + 11]] +
23
+ byteToHex[arr[offset + 12]] +
24
+ byteToHex[arr[offset + 13]] +
25
+ byteToHex[arr[offset + 14]] +
26
+ byteToHex[arr[offset + 15]]).toLowerCase();
18
27
  }
19
28
  function stringify(arr, offset = 0) {
20
- var uuid = unsafeStringify(arr, offset);
21
- // Consistency check for valid UUID. If this throws, it's likely due to one
22
- // of the following:
23
- // - One or more input array values don't map to a hex octet (leading to
24
- // "undefined" in the uuid)
25
- // - Invalid input values for the RFC `version` or `variant` fields
26
- if (!validate(uuid)) {
27
- throw TypeError('Stringified UUID is invalid');
28
- }
29
- return uuid;
29
+ const uuid = unsafeStringify(arr, offset);
30
+ if (!validate(uuid)) {
31
+ throw TypeError('Stringified UUID is invalid');
32
+ }
33
+ return uuid;
30
34
  }
31
- export default stringify;
35
+ export default stringify;
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5naWZ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmluZ2lmeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUM7QUFNckMsTUFBTSxTQUFTLEdBQWEsRUFBRSxDQUFDO0FBRS9CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM3QixTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFlLEVBQUUsTUFBTSxHQUFHLENBQUM7SUFNekQsT0FBTyxDQUNMLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLEdBQUc7UUFDSCxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQixHQUFHO1FBQ0gsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUIsR0FBRztRQUNILFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLEdBQUc7UUFDSCxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUM1QixDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ2xCLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxHQUFlLEVBQUUsTUFBTSxHQUFHLENBQUM7SUFDNUMsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQU8xQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDcEIsTUFBTSxTQUFTLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsZUFBZSxTQUFTLENBQUMifQ==
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,49 @@
1
+ import * as assert from 'assert';
2
+ import test, { describe } from 'node:test';
3
+ import parse from '../parse.js';
4
+ import stringify from '../stringify.js';
5
+ import uuidv4 from '../v4.js';
6
+ function splitmix32(a) {
7
+ return function () {
8
+ a |= 0;
9
+ a = (a + 0x9e3779b9) | 0;
10
+ let t = a ^ (a >>> 16);
11
+ t = Math.imul(t, 0x21f0aaad);
12
+ t = t ^ (t >>> 15);
13
+ t = Math.imul(t, 0x735a2d97);
14
+ return ((t = t ^ (t >>> 15)) >>> 0) / 4294967296;
15
+ };
16
+ }
17
+ const rand = splitmix32(0x12345678);
18
+ function rng(bytes = new Uint8Array(16)) {
19
+ for (let i = 0; i < 16; i++) {
20
+ bytes[i] = rand() * 256;
21
+ }
22
+ return bytes;
23
+ }
24
+ describe('parse', () => {
25
+ test('String -> bytes parsing', () => {
26
+ assert.deepStrictEqual(parse('0f5abcd1-c194-47f3-905b-2df7263a084b'), Uint8Array.from([
27
+ 0x0f, 0x5a, 0xbc, 0xd1, 0xc1, 0x94, 0x47, 0xf3, 0x90, 0x5b, 0x2d, 0xf7, 0x26, 0x3a, 0x08,
28
+ 0x4b,
29
+ ]));
30
+ });
31
+ test('String -> bytes -> string symmetry for assorted uuids', () => {
32
+ for (let i = 0; i < 1000; i++) {
33
+ const uuid = uuidv4({ rng });
34
+ assert.equal(stringify(parse(uuid)), uuid);
35
+ }
36
+ });
37
+ test('Case neutrality', () => {
38
+ assert.deepStrictEqual(parse('0f5abcd1-c194-47f3-905b-2df7263a084b'), parse('0f5abcd1-c194-47f3-905b-2df7263a084b'.toUpperCase()));
39
+ });
40
+ test('Null UUID case', () => {
41
+ assert.deepStrictEqual(parse('00000000-0000-0000-0000-000000000000'), Uint8Array.from(new Array(16).fill(0)));
42
+ });
43
+ test('UUID validation', () => {
44
+ assert.throws(() => parse());
45
+ assert.throws(() => parse('invalid uuid'));
46
+ assert.throws(() => parse('zyxwvuts-rqpo-nmlk-jihg-fedcba000000'));
47
+ });
48
+ });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0L3BhcnNlLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0MsT0FBTyxLQUFLLE1BQU0sYUFBYSxDQUFDO0FBQ2hDLE9BQU8sU0FBUyxNQUFNLGlCQUFpQixDQUFDO0FBQ3hDLE9BQU8sTUFBTSxNQUFNLFVBQVUsQ0FBQztBQUk5QixTQUFTLFVBQVUsQ0FBQyxDQUFTO0lBQzNCLE9BQU87UUFDTCxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdkIsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzdCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbkIsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUM7SUFDbkQsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUNELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUVwQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDO0lBQ3JDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM1QixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDO0lBQzFCLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtJQUNyQixJQUFJLENBQUMseUJBQXlCLEVBQUUsR0FBRyxFQUFFO1FBQ25DLE1BQU0sQ0FBQyxlQUFlLENBQ3BCLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxFQUM3QyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ2QsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO1lBQ3hGLElBQUk7U0FDTCxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLHVEQUF1RCxFQUFFLEdBQUcsRUFBRTtRQUNqRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDOUIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUM3QixNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO1FBRTNCLE1BQU0sQ0FBQyxlQUFlLENBQ3BCLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxFQUM3QyxLQUFLLENBQUMsc0NBQXNDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FDNUQsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtRQUMxQixNQUFNLENBQUMsZUFBZSxDQUNwQixLQUFLLENBQUMsc0NBQXNDLENBQUMsRUFDN0MsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDdkMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRTtRQUUzQixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFN0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUMzQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ import * as assert from 'assert';
2
+ import test, { describe } from 'node:test';
3
+ import rng from '../rng.js';
4
+ describe('rng', () => {
5
+ test('Node.js RNG', () => {
6
+ const bytes = rng();
7
+ assert.equal(bytes.length, 16);
8
+ for (let i = 0; i < bytes.length; ++i) {
9
+ assert.equal(typeof bytes[i], 'number');
10
+ }
11
+ });
12
+ });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm5nLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC9ybmcudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzQyxPQUFPLEdBQUcsTUFBTSxXQUFXLENBQUM7QUFFNUIsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUU7SUFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7UUFDdkIsTUFBTSxLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDcEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRS9CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDdEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFJTCxDQUFDLENBQUMsQ0FBQyJ9
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,22 @@
1
+ import * as assert from 'assert';
2
+ import test, { describe } from 'node:test';
3
+ import stringify, { unsafeStringify } from '../stringify.js';
4
+ const BYTES = Uint8Array.of(0x0f, 0x5a, 0xbc, 0xd1, 0xc1, 0x94, 0x47, 0xf3, 0x90, 0x5b, 0x2d, 0xf7, 0x26, 0x3a, 0x08, 0x4b);
5
+ describe('stringify', () => {
6
+ test('Stringify Array (unsafe)', () => {
7
+ assert.equal(unsafeStringify(BYTES), '0f5abcd1-c194-47f3-905b-2df7263a084b');
8
+ });
9
+ test('Stringify w/ offset (unsafe)', () => {
10
+ const bytes = new Uint8Array(19).fill(0);
11
+ bytes.set(BYTES, 3);
12
+ assert.equal(unsafeStringify(bytes, 3), '0f5abcd1-c194-47f3-905b-2df7263a084b');
13
+ });
14
+ test('Stringify Array (safe)', () => {
15
+ assert.equal(stringify(BYTES), '0f5abcd1-c194-47f3-905b-2df7263a084b');
16
+ });
17
+ test('Throws on not enough values (safe)', () => {
18
+ const bytes = BYTES.slice(0, 15);
19
+ assert.throws(() => stringify(bytes));
20
+ });
21
+ });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5naWZ5LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC9zdHJpbmdpZnkudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzQyxPQUFPLFNBQVMsRUFBRSxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQ3pCLElBQUksRUFDSixJQUFJLEVBQ0osSUFBSSxFQUNKLElBQUksRUFDSixJQUFJLEVBQ0osSUFBSSxFQUNKLElBQUksRUFDSixJQUFJLEVBQ0osSUFBSSxFQUNKLElBQUksRUFDSixJQUFJLEVBQ0osSUFBSSxFQUNKLElBQUksRUFDSixJQUFJLEVBQ0osSUFBSSxFQUNKLElBQUksQ0FDTCxDQUFDO0FBRUYsUUFBUSxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUU7SUFDekIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLEdBQUcsRUFBRTtRQUNwQyxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxzQ0FBc0MsQ0FBQyxDQUFDO0lBQy9FLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsRUFBRTtRQUN4QyxNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLHNDQUFzQyxDQUFDLENBQUM7SUFDbEYsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFO1FBQ2xDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLHNDQUFzQyxDQUFDLENBQUM7SUFDekUsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsb0NBQW9DLEVBQUUsR0FBRyxFQUFFO1FBQzlDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9
@@ -0,0 +1,33 @@
1
+ export declare const TESTS: ({
2
+ value: string;
3
+ expectedValidate: boolean;
4
+ expectedVersion: number;
5
+ } | {
6
+ value: string;
7
+ expectedValidate: boolean;
8
+ expectedVersion?: undefined;
9
+ } | {
10
+ value: undefined;
11
+ expectedValidate: boolean;
12
+ expectedVersion?: undefined;
13
+ } | {
14
+ value: null;
15
+ expectedValidate: boolean;
16
+ expectedVersion?: undefined;
17
+ } | {
18
+ value: number;
19
+ expectedValidate: boolean;
20
+ expectedVersion?: undefined;
21
+ } | {
22
+ value: RegExp;
23
+ expectedValidate: boolean;
24
+ expectedVersion?: undefined;
25
+ } | {
26
+ value: Date;
27
+ expectedValidate: boolean;
28
+ expectedVersion?: undefined;
29
+ } | {
30
+ value: boolean;
31
+ expectedValidate: boolean;
32
+ expectedVersion?: undefined;
33
+ })[];
@@ -0,0 +1,89 @@
1
+ import MAX from '../max.js';
2
+ import NIL from '../nil.js';
3
+ export const TESTS = [
4
+ { value: NIL, expectedValidate: true, expectedVersion: 0 },
5
+ { value: MAX, expectedValidate: true, expectedVersion: 15 },
6
+ { value: '00000000-0000-1000-8000-000000000000', expectedValidate: true, expectedVersion: 1 },
7
+ { value: 'ffffffff-ffff-1fff-8fff-ffffffffffff', expectedValidate: true, expectedVersion: 1 },
8
+ { value: '00000000-0000-2000-8000-000000000000', expectedValidate: true, expectedVersion: 2 },
9
+ { value: 'ffffffff-ffff-2fff-bfff-ffffffffffff', expectedValidate: true, expectedVersion: 2 },
10
+ { value: '00000000-0000-3000-8000-000000000000', expectedValidate: true, expectedVersion: 3 },
11
+ { value: 'ffffffff-ffff-3fff-bfff-ffffffffffff', expectedValidate: true, expectedVersion: 3 },
12
+ { value: '00000000-0000-4000-8000-000000000000', expectedValidate: true, expectedVersion: 4 },
13
+ { value: 'ffffffff-ffff-4fff-bfff-ffffffffffff', expectedValidate: true, expectedVersion: 4 },
14
+ { value: '00000000-0000-5000-8000-000000000000', expectedValidate: true, expectedVersion: 5 },
15
+ { value: 'ffffffff-ffff-5fff-bfff-ffffffffffff', expectedValidate: true, expectedVersion: 5 },
16
+ { value: '00000000-0000-6000-8000-000000000000', expectedValidate: true, expectedVersion: 6 },
17
+ { value: 'ffffffff-ffff-6fff-bfff-ffffffffffff', expectedValidate: true, expectedVersion: 6 },
18
+ { value: '00000000-0000-7000-8000-000000000000', expectedValidate: true, expectedVersion: 7 },
19
+ { value: 'ffffffff-ffff-7fff-bfff-ffffffffffff', expectedValidate: true, expectedVersion: 7 },
20
+ { value: '00000000-0000-8000-8000-000000000000', expectedValidate: true, expectedVersion: 8 },
21
+ { value: 'ffffffff-ffff-8fff-bfff-ffffffffffff', expectedValidate: true, expectedVersion: 8 },
22
+ { value: '00000000-0000-9000-8000-000000000000', expectedValidate: false },
23
+ { value: 'ffffffff-ffff-9fff-bfff-ffffffffffff', expectedValidate: false },
24
+ { value: '00000000-0000-a000-8000-000000000000', expectedValidate: false },
25
+ { value: 'ffffffff-ffff-afff-bfff-ffffffffffff', expectedValidate: false },
26
+ { value: '00000000-0000-b000-8000-000000000000', expectedValidate: false },
27
+ { value: 'ffffffff-ffff-bfff-bfff-ffffffffffff', expectedValidate: false },
28
+ { value: '00000000-0000-c000-8000-000000000000', expectedValidate: false },
29
+ { value: 'ffffffff-ffff-cfff-bfff-ffffffffffff', expectedValidate: false },
30
+ { value: '00000000-0000-d000-8000-000000000000', expectedValidate: false },
31
+ { value: 'ffffffff-ffff-dfff-bfff-ffffffffffff', expectedValidate: false },
32
+ { value: '00000000-0000-e000-8000-000000000000', expectedValidate: false },
33
+ { value: 'ffffffff-ffff-efff-bfff-ffffffffffff', expectedValidate: false },
34
+ { value: 'd9428888-122b-11e1-b85c-61cd3cbb3210', expectedValidate: true, expectedVersion: 1 },
35
+ { value: '000003e8-2363-21ef-b200-325096b39f47', expectedValidate: true, expectedVersion: 2 },
36
+ { value: 'a981a0c2-68b1-35dc-bcfc-296e52ab01ec', expectedValidate: true, expectedVersion: 3 },
37
+ { value: '109156be-c4fb-41ea-b1b4-efe1671c5836', expectedValidate: true, expectedVersion: 4 },
38
+ { value: '90123e1c-7512-523e-bb28-76fab9f2f73d', expectedValidate: true, expectedVersion: 5 },
39
+ { value: '1ef21d2f-1207-6660-8c4f-419efbd44d48', expectedValidate: true, expectedVersion: 6 },
40
+ { value: '017f22e2-79b0-7cc3-98c4-dc0c0c07398f', expectedValidate: true, expectedVersion: 7 },
41
+ { value: '0d8f23a0-697f-83ae-802e-48f3756dd581', expectedValidate: true, expectedVersion: 8 },
42
+ { value: '00000000-0000-1000-0000-000000000000', expectedValidate: false },
43
+ { value: '00000000-0000-1000-1000-000000000000', expectedValidate: false },
44
+ { value: '00000000-0000-1000-2000-000000000000', expectedValidate: false },
45
+ { value: '00000000-0000-1000-3000-000000000000', expectedValidate: false },
46
+ { value: '00000000-0000-1000-4000-000000000000', expectedValidate: false },
47
+ { value: '00000000-0000-1000-5000-000000000000', expectedValidate: false },
48
+ { value: '00000000-0000-1000-6000-000000000000', expectedValidate: false },
49
+ { value: '00000000-0000-1000-7000-000000000000', expectedValidate: false },
50
+ { value: '00000000-0000-1000-8000-000000000000', expectedValidate: true, expectedVersion: 1 },
51
+ { value: '00000000-0000-1000-9000-000000000000', expectedValidate: true, expectedVersion: 1 },
52
+ { value: '00000000-0000-1000-a000-000000000000', expectedValidate: true, expectedVersion: 1 },
53
+ { value: '00000000-0000-1000-b000-000000000000', expectedValidate: true, expectedVersion: 1 },
54
+ { value: '00000000-0000-1000-c000-000000000000', expectedValidate: false },
55
+ { value: '00000000-0000-1000-d000-000000000000', expectedValidate: false },
56
+ { value: '00000000-0000-1000-e000-000000000000', expectedValidate: false },
57
+ { value: '00000000-0000-1000-f000-000000000000', expectedValidate: false },
58
+ { value: '00000000000000000000000000000000', expectedValidate: false },
59
+ { value: '', expectedValidate: false },
60
+ { value: 'invalid uuid string', expectedValidate: false },
61
+ {
62
+ value: '=Y00a-f*vb*-c-d#-p00f\b-g0h-#i^-j*3&-L00k-\nl---00n-fg000-00p-00r+',
63
+ expectedValidate: false,
64
+ },
65
+ { value: undefined, expectedValidate: false },
66
+ { value: null, expectedValidate: false },
67
+ { value: 123, expectedValidate: false },
68
+ { value: /regex/, expectedValidate: false },
69
+ { value: new Date(0), expectedValidate: false },
70
+ { value: false, expectedValidate: false },
71
+ ];
72
+ for (let charIndex = 0; charIndex < 36; charIndex++) {
73
+ if (charIndex === 8 ||
74
+ charIndex === 13 ||
75
+ charIndex === 14 ||
76
+ charIndex === 18 ||
77
+ charIndex === 23) {
78
+ continue;
79
+ }
80
+ const nilChars = NIL.split('');
81
+ const maxChars = MAX.split('');
82
+ for (let i = 0; i < 4; i++) {
83
+ nilChars[charIndex] = (0x0 ^ (1 << i)).toString(16);
84
+ TESTS.push({ value: nilChars.join(''), expectedValidate: false });
85
+ maxChars[charIndex] = (0xf ^ (1 << i)).toString(16);
86
+ TESTS.push({ value: maxChars.join(''), expectedValidate: false });
87
+ }
88
+ }
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC90ZXN0X2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEdBQUcsTUFBTSxXQUFXLENBQUM7QUFDNUIsT0FBTyxHQUFHLE1BQU0sV0FBVyxDQUFDO0FBRzVCLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRztJQUVuQixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUU7SUFDMUQsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFO0lBRzNELEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRTtJQUMxRSxFQUFFLEtBQUssRUFBRSxzQ0FBc0MsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUU7SUFDMUUsRUFBRSxLQUFLLEVBQUUsc0NBQXNDLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFO0lBQzFFLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRTtJQUMxRSxFQUFFLEtBQUssRUFBRSxzQ0FBc0MsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUU7SUFDMUUsRUFBRSxLQUFLLEVBQUUsc0NBQXNDLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFO0lBQzFFLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRTtJQUMxRSxFQUFFLEtBQUssRUFBRSxzQ0FBc0MsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUU7SUFDMUUsRUFBRSxLQUFLLEVBQUUsc0NBQXNDLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFO0lBQzFFLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRTtJQUMxRSxFQUFFLEtBQUssRUFBRSxzQ0FBc0MsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUU7SUFDMUUsRUFBRSxLQUFLLEVBQUUsc0NBQXNDLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFO0lBRzFFLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBQzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO0lBRzdGLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRTtJQUMxRSxFQUFFLEtBQUssRUFBRSxzQ0FBc0MsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUU7SUFDMUUsRUFBRSxLQUFLLEVBQUUsc0NBQXNDLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFO0lBQzFFLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRTtJQUMxRSxFQUFFLEtBQUssRUFBRSxzQ0FBc0MsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUU7SUFDMUUsRUFBRSxLQUFLLEVBQUUsc0NBQXNDLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFO0lBQzFFLEVBQUUsS0FBSyxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRTtJQUMxRSxFQUFFLEtBQUssRUFBRSxzQ0FBc0MsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUU7SUFDMUUsRUFBRSxLQUFLLEVBQUUsc0NBQXNDLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUU7SUFDN0YsRUFBRSxLQUFLLEVBQUUsc0NBQXNDLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUU7SUFDN0YsRUFBRSxLQUFLLEVBQUUsc0NBQXNDLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUU7SUFDN0YsRUFBRSxLQUFLLEVBQUUsc0NBQXNDLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUU7SUFDN0YsRUFBRSxLQUFLLEVBQUUsc0NBQXNDLEVBQUUs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
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,126 @@
1
+ import * as assert from 'assert';
2
+ import test, { describe } from 'node:test';
3
+ import parse from '../parse.js';
4
+ import v1, { updateV1State } from '../v1.js';
5
+ const TIME = 1321644961388;
6
+ const RFC_V1 = 'c232ab00-9414-11ec-b3c8-9f68deced846';
7
+ const RFC_V1_BYTES = parse(RFC_V1);
8
+ const RFC_OPTIONS = {
9
+ msecs: 0x17f22e279b0,
10
+ nsecs: 0,
11
+ clockseq: 0x33c8,
12
+ node: Uint8Array.of(0x9f, 0x68, 0xde, 0xce, 0xd8, 0x46),
13
+ };
14
+ const RFC_RANDOM = Uint8Array.of(0, 0, 0, 0, 0, 0, 0, 0, RFC_OPTIONS.clockseq >> 8, RFC_OPTIONS.clockseq & 0xff, ...RFC_OPTIONS.node);
15
+ function compareV1TimeField(a, b) {
16
+ a = a.split('-').slice(0, 3).reverse().join('');
17
+ b = b.split('-').slice(0, 3).reverse().join('');
18
+ return a < b ? -1 : a > b ? 1 : 0;
19
+ }
20
+ describe('v1', () => {
21
+ test('v1 sort order (default)', () => {
22
+ const ids = [v1(), v1(), v1(), v1(), v1()];
23
+ const sorted = [...ids].sort(compareV1TimeField);
24
+ assert.deepEqual(ids, sorted);
25
+ });
26
+ test('v1 sort order (time option)', () => {
27
+ const ids = [
28
+ v1({ msecs: TIME - 10 * 3600 * 1000 }),
29
+ v1({ msecs: TIME - 1 }),
30
+ v1({ msecs: TIME }),
31
+ v1({ msecs: TIME + 1 }),
32
+ v1({ msecs: TIME + 28 * 24 * 3600 * 1000 }),
33
+ ];
34
+ const sorted = [...ids].sort(compareV1TimeField);
35
+ assert.deepEqual(ids, sorted);
36
+ });
37
+ test('v1(options)', () => {
38
+ assert.equal(v1({ msecs: RFC_OPTIONS.msecs, random: RFC_RANDOM }), RFC_V1, 'minimal options');
39
+ assert.equal(v1(RFC_OPTIONS), RFC_V1, 'full options');
40
+ });
41
+ test('v1(options) equality', () => {
42
+ assert.notEqual(v1({ msecs: TIME }), v1({ msecs: TIME }), 'UUIDs with minimal options differ');
43
+ assert.equal(v1(RFC_OPTIONS), v1(RFC_OPTIONS), 'UUIDs with full options are identical');
44
+ });
45
+ test('fills one UUID into a buffer as expected', () => {
46
+ const buffer = new Uint8Array(16);
47
+ const result = v1(RFC_OPTIONS, buffer);
48
+ assert.deepEqual(buffer, RFC_V1_BYTES);
49
+ assert.strictEqual(buffer, result);
50
+ });
51
+ test('fills two UUIDs into a buffer as expected', () => {
52
+ const buffer = new Uint8Array(32);
53
+ v1(RFC_OPTIONS, buffer, 0);
54
+ v1(RFC_OPTIONS, buffer, 16);
55
+ const expectedBuf = new Uint8Array(32);
56
+ expectedBuf.set(RFC_V1_BYTES);
57
+ expectedBuf.set(RFC_V1_BYTES, 16);
58
+ assert.deepEqual(buffer, expectedBuf);
59
+ });
60
+ test('v1() state transitions', () => {
61
+ const PRE_STATE = {
62
+ msecs: 10,
63
+ nsecs: 20,
64
+ clockseq: 0x1234,
65
+ node: Uint8Array.of(0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc),
66
+ };
67
+ const tests = [
68
+ {
69
+ title: 'initial state',
70
+ state: {},
71
+ now: 10,
72
+ expected: {
73
+ msecs: 10,
74
+ nsecs: 0,
75
+ clockseq: RFC_OPTIONS.clockseq,
76
+ node: RFC_OPTIONS.node,
77
+ },
78
+ },
79
+ {
80
+ title: 'same time interval',
81
+ state: { ...PRE_STATE },
82
+ now: PRE_STATE.msecs,
83
+ expected: {
84
+ ...PRE_STATE,
85
+ nsecs: 21,
86
+ },
87
+ },
88
+ {
89
+ title: 'new time interval',
90
+ state: { ...PRE_STATE },
91
+ now: PRE_STATE.msecs + 1,
92
+ expected: {
93
+ ...PRE_STATE,
94
+ msecs: PRE_STATE.msecs + 1,
95
+ nsecs: 0,
96
+ },
97
+ },
98
+ {
99
+ title: 'same time interval (nsecs overflow)',
100
+ state: { ...PRE_STATE, nsecs: 9999 },
101
+ now: PRE_STATE.msecs,
102
+ expected: {
103
+ ...PRE_STATE,
104
+ nsecs: 0,
105
+ clockseq: RFC_OPTIONS.clockseq,
106
+ node: RFC_OPTIONS.node,
107
+ },
108
+ },
109
+ {
110
+ title: 'time regression',
111
+ state: { ...PRE_STATE },
112
+ now: PRE_STATE.msecs - 1,
113
+ expected: {
114
+ ...PRE_STATE,
115
+ msecs: PRE_STATE.msecs - 1,
116
+ clockseq: RFC_OPTIONS.clockseq,
117
+ node: RFC_OPTIONS.node,
118
+ },
119
+ },
120
+ ];
121
+ for (const { title, state, now, expected } of tests) {
122
+ assert.deepStrictEqual(updateV1State(state, now, RFC_RANDOM), expected, `Failed: ${title}`);
123
+ }
124
+ });
125
+ });
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjEudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0L3YxLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0MsT0FBTyxLQUFLLE1BQU0sYUFBYSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRzdDLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQztBQUkzQixNQUFNLE1BQU0sR0FBRyxzQ0FBc0MsQ0FBQztBQUN0RCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFHbkMsTUFBTSxXQUFXLEdBQUc7SUFDbEIsS0FBSyxFQUFFLGFBQWE7SUFDcEIsS0FBSyxFQUFFLENBQUM7SUFDUixRQUFRLEVBQUUsTUFBTTtJQUNoQixJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztDQUN4RCxDQUFDO0FBR0YsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FFOUIsQ0FBQyxFQUNELENBQUMsRUFDRCxDQUFDLEVBQ0QsQ0FBQyxFQUNELENBQUMsRUFDRCxDQUFDLEVBQ0QsQ0FBQyxFQUNELENBQUMsRUFHRCxXQUFXLENBQUMsUUFBUSxJQUFJLENBQUMsRUFDekIsV0FBVyxDQUFDLFFBQVEsR0FBRyxJQUFJLEVBRzNCLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FDcEIsQ0FBQztBQUdGLFNBQVMsa0JBQWtCLENBQUMsQ0FBUyxFQUFFLENBQVM7SUFDOUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMs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
@@ -0,0 +1 @@
1
+ export {};