@stackframe/stack-shared 2.8.8 → 2.8.11

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 (476) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/config/format.d.cts +39 -0
  3. package/dist/config/format.d.ts +14 -13
  4. package/dist/config/format.js +147 -206
  5. package/dist/config/format.js.map +1 -0
  6. package/dist/config/schema.d.cts +729 -0
  7. package/dist/config/schema.d.ts +59 -51
  8. package/dist/config/schema.js +232 -172
  9. package/dist/config/schema.js.map +1 -0
  10. package/dist/crud.d.cts +102 -0
  11. package/dist/crud.d.ts +15 -13
  12. package/dist/crud.js +83 -128
  13. package/dist/crud.js.map +1 -0
  14. package/dist/esm/config/format.js +135 -0
  15. package/dist/esm/config/format.js.map +1 -0
  16. package/dist/esm/config/schema.js +201 -0
  17. package/dist/esm/config/schema.js.map +1 -0
  18. package/dist/esm/crud.js +60 -0
  19. package/dist/esm/crud.js.map +1 -0
  20. package/dist/esm/global.d.js +1 -0
  21. package/dist/esm/global.d.js.map +1 -0
  22. package/dist/esm/helpers/password.js +17 -0
  23. package/dist/esm/helpers/password.js.map +1 -0
  24. package/dist/esm/helpers/production-mode.js +50 -0
  25. package/dist/esm/helpers/production-mode.js.map +1 -0
  26. package/dist/esm/hooks/use-async-callback.js +38 -0
  27. package/dist/esm/hooks/use-async-callback.js.map +1 -0
  28. package/dist/esm/hooks/use-async-external-store.js +23 -0
  29. package/dist/esm/hooks/use-async-external-store.js.map +1 -0
  30. package/dist/esm/hooks/use-hash.js +17 -0
  31. package/dist/esm/hooks/use-hash.js.map +1 -0
  32. package/dist/esm/hooks/use-strict-memo.js +61 -0
  33. package/dist/esm/hooks/use-strict-memo.js.map +1 -0
  34. package/dist/esm/index.js +22 -0
  35. package/dist/esm/index.js.map +1 -0
  36. package/dist/esm/interface/adminInterface.js +244 -0
  37. package/dist/esm/interface/adminInterface.js.map +1 -0
  38. package/dist/esm/interface/clientInterface.js +2041 -0
  39. package/dist/esm/interface/clientInterface.js.map +1 -0
  40. package/dist/esm/interface/crud/contact-channels.js +77 -0
  41. package/dist/esm/interface/crud/contact-channels.js.map +1 -0
  42. package/dist/esm/interface/crud/current-user.js +65 -0
  43. package/dist/esm/interface/crud/current-user.js.map +1 -0
  44. package/dist/esm/interface/crud/email-templates.js +52 -0
  45. package/dist/esm/interface/crud/email-templates.js.map +1 -0
  46. package/dist/esm/interface/crud/emails.js +20 -0
  47. package/dist/esm/interface/crud/emails.js.map +1 -0
  48. package/dist/esm/interface/crud/internal-api-keys.js +69 -0
  49. package/dist/esm/interface/crud/internal-api-keys.js.map +1 -0
  50. package/dist/esm/interface/crud/oauth.js +24 -0
  51. package/dist/esm/interface/crud/oauth.js.map +1 -0
  52. package/dist/esm/interface/crud/project-api-keys.js +93 -0
  53. package/dist/esm/interface/crud/project-api-keys.js.map +1 -0
  54. package/dist/esm/interface/crud/project-permissions.js +113 -0
  55. package/dist/esm/interface/crud/project-permissions.js.map +1 -0
  56. package/dist/esm/interface/crud/projects.js +180 -0
  57. package/dist/esm/interface/crud/projects.js.map +1 -0
  58. package/dist/esm/interface/crud/sessions.js +62 -0
  59. package/dist/esm/interface/crud/sessions.js.map +1 -0
  60. package/dist/esm/interface/crud/svix-token.js +22 -0
  61. package/dist/esm/interface/crud/svix-token.js.map +1 -0
  62. package/dist/esm/interface/crud/team-invitation-details.js +23 -0
  63. package/dist/esm/interface/crud/team-invitation-details.js.map +1 -0
  64. package/dist/esm/interface/crud/team-invitation.js +36 -0
  65. package/dist/esm/interface/crud/team-invitation.js.map +1 -0
  66. package/dist/esm/interface/crud/team-member-profiles.js +62 -0
  67. package/dist/esm/interface/crud/team-member-profiles.js.map +1 -0
  68. package/dist/esm/interface/crud/team-memberships.js +60 -0
  69. package/dist/esm/interface/crud/team-memberships.js.map +1 -0
  70. package/dist/esm/interface/crud/team-permissions.js +114 -0
  71. package/dist/esm/interface/crud/team-permissions.js.map +1 -0
  72. package/dist/esm/interface/crud/teams.js +143 -0
  73. package/dist/esm/interface/crud/teams.js.map +1 -0
  74. package/dist/esm/interface/crud/users.js +139 -0
  75. package/dist/esm/interface/crud/users.js.map +1 -0
  76. package/dist/esm/interface/serverInterface.js +485 -0
  77. package/dist/esm/interface/serverInterface.js.map +1 -0
  78. package/dist/esm/interface/webhooks.js +21 -0
  79. package/dist/esm/interface/webhooks.js.map +1 -0
  80. package/dist/esm/known-errors.js +1238 -0
  81. package/dist/esm/known-errors.js.map +1 -0
  82. package/dist/esm/schema-fields.js +484 -0
  83. package/dist/esm/schema-fields.js.map +1 -0
  84. package/dist/esm/sessions.js +168 -0
  85. package/dist/esm/sessions.js.map +1 -0
  86. package/dist/esm/utils/api-keys.js +79 -0
  87. package/dist/esm/utils/api-keys.js.map +1 -0
  88. package/dist/esm/utils/arrays.js +78 -0
  89. package/dist/esm/utils/arrays.js.map +1 -0
  90. package/dist/esm/utils/base64.js +18 -0
  91. package/dist/esm/utils/base64.js.map +1 -0
  92. package/dist/esm/utils/booleans.js +12 -0
  93. package/dist/esm/utils/booleans.js.map +1 -0
  94. package/dist/esm/utils/browser-compat.js +21 -0
  95. package/dist/esm/utils/browser-compat.js.map +1 -0
  96. package/dist/esm/utils/bytes.js +160 -0
  97. package/dist/esm/utils/bytes.js.map +1 -0
  98. package/dist/esm/utils/caches.js +167 -0
  99. package/dist/esm/utils/caches.js.map +1 -0
  100. package/dist/esm/utils/compile-time.js +11 -0
  101. package/dist/esm/utils/compile-time.js.map +1 -0
  102. package/dist/esm/utils/crypto.js +25 -0
  103. package/dist/esm/utils/crypto.js.map +1 -0
  104. package/dist/esm/utils/dates.js +64 -0
  105. package/dist/esm/utils/dates.js.map +1 -0
  106. package/dist/esm/utils/dom.js +11 -0
  107. package/dist/esm/utils/dom.js.map +1 -0
  108. package/dist/esm/utils/env.js +58 -0
  109. package/dist/esm/utils/env.js.map +1 -0
  110. package/dist/esm/utils/errors.js +174 -0
  111. package/dist/esm/utils/errors.js.map +1 -0
  112. package/dist/esm/utils/fs.js +37 -0
  113. package/dist/esm/utils/fs.js.map +1 -0
  114. package/dist/esm/utils/functions.js +12 -0
  115. package/dist/esm/utils/functions.js.map +1 -0
  116. package/dist/esm/utils/geo.js +15 -0
  117. package/dist/esm/utils/geo.js.map +1 -0
  118. package/dist/esm/utils/globals.js +18 -0
  119. package/dist/esm/utils/globals.js.map +1 -0
  120. package/dist/esm/utils/hashes.js +55 -0
  121. package/dist/esm/utils/hashes.js.map +1 -0
  122. package/dist/esm/utils/html.js +13 -0
  123. package/dist/esm/utils/html.js.map +1 -0
  124. package/dist/esm/utils/http.js +60 -0
  125. package/dist/esm/utils/http.js.map +1 -0
  126. package/dist/esm/utils/ips.js +15 -0
  127. package/dist/esm/utils/ips.js.map +1 -0
  128. package/dist/esm/utils/json.js +31 -0
  129. package/dist/esm/utils/json.js.map +1 -0
  130. package/dist/esm/utils/jwt.js +87 -0
  131. package/dist/esm/utils/jwt.js.map +1 -0
  132. package/dist/esm/utils/locks.js +57 -0
  133. package/dist/esm/utils/locks.js.map +1 -0
  134. package/dist/esm/utils/maps.js +181 -0
  135. package/dist/esm/utils/maps.js.map +1 -0
  136. package/dist/esm/utils/math.js +8 -0
  137. package/dist/esm/utils/math.js.map +1 -0
  138. package/dist/esm/utils/node-http.js +42 -0
  139. package/dist/esm/utils/node-http.js.map +1 -0
  140. package/dist/esm/utils/numbers.js +32 -0
  141. package/dist/esm/utils/numbers.js.map +1 -0
  142. package/dist/esm/utils/oauth.js +10 -0
  143. package/dist/esm/utils/oauth.js.map +1 -0
  144. package/dist/esm/utils/objects.js +177 -0
  145. package/dist/esm/utils/objects.js.map +1 -0
  146. package/dist/esm/utils/passkey.js +1 -0
  147. package/dist/esm/utils/passkey.js.map +1 -0
  148. package/dist/esm/utils/promises.js +233 -0
  149. package/dist/esm/utils/promises.js.map +1 -0
  150. package/dist/esm/utils/proxies.js +128 -0
  151. package/dist/esm/utils/proxies.js.map +1 -0
  152. package/dist/esm/utils/react.js +78 -0
  153. package/dist/esm/utils/react.js.map +1 -0
  154. package/dist/esm/utils/results.js +141 -0
  155. package/dist/esm/utils/results.js.map +1 -0
  156. package/dist/esm/utils/sentry.js +20 -0
  157. package/dist/esm/utils/sentry.js.map +1 -0
  158. package/dist/esm/utils/stores.js +195 -0
  159. package/dist/esm/utils/stores.js.map +1 -0
  160. package/dist/esm/utils/strings.js +295 -0
  161. package/dist/esm/utils/strings.js.map +1 -0
  162. package/dist/esm/utils/strings.nicify.test.js +222 -0
  163. package/dist/esm/utils/strings.nicify.test.js.map +1 -0
  164. package/dist/esm/utils/types.js +1 -0
  165. package/dist/esm/utils/types.js.map +1 -0
  166. package/dist/esm/utils/unicode.js +11 -0
  167. package/dist/esm/utils/unicode.js.map +1 -0
  168. package/dist/esm/utils/urls.js +53 -0
  169. package/dist/esm/utils/urls.js.map +1 -0
  170. package/dist/esm/utils/uuids.js +16 -0
  171. package/dist/esm/utils/uuids.js.map +1 -0
  172. package/dist/global.d.d.cts +1 -0
  173. package/dist/global.d.d.ts +1 -0
  174. package/dist/global.d.js +2 -0
  175. package/dist/global.d.js.map +1 -0
  176. package/dist/helpers/password.d.cts +11 -0
  177. package/dist/helpers/password.d.ts +11 -2
  178. package/dist/helpers/password.js +41 -11
  179. package/dist/helpers/password.js.map +1 -0
  180. package/dist/helpers/production-mode.d.cts +12 -0
  181. package/dist/helpers/production-mode.d.ts +9 -3
  182. package/dist/helpers/production-mode.js +72 -45
  183. package/dist/helpers/production-mode.js.map +1 -0
  184. package/dist/hooks/use-async-callback.d.cts +6 -0
  185. package/dist/hooks/use-async-callback.d.ts +6 -3
  186. package/dist/hooks/use-async-callback.js +72 -30
  187. package/dist/hooks/use-async-callback.js.map +1 -0
  188. package/dist/hooks/use-async-external-store.d.cts +7 -0
  189. package/dist/hooks/use-async-external-store.d.ts +5 -2
  190. package/dist/hooks/use-async-external-store.js +47 -19
  191. package/dist/hooks/use-async-external-store.js.map +1 -0
  192. package/dist/hooks/use-hash.d.cts +3 -0
  193. package/dist/hooks/use-hash.d.ts +3 -1
  194. package/dist/hooks/use-hash.js +41 -8
  195. package/dist/hooks/use-hash.js.map +1 -0
  196. package/dist/hooks/use-strict-memo.d.cts +8 -0
  197. package/dist/hooks/use-strict-memo.d.ts +3 -1
  198. package/dist/hooks/use-strict-memo.js +78 -131
  199. package/dist/hooks/use-strict-memo.js.map +1 -0
  200. package/dist/index.d.cts +30 -0
  201. package/dist/index.d.ts +30 -4
  202. package/dist/index.js +42 -4
  203. package/dist/index.js.map +1 -0
  204. package/dist/interface/adminInterface.d.cts +94 -0
  205. package/dist/interface/adminInterface.d.ts +38 -15
  206. package/dist/interface/adminInterface.js +269 -174
  207. package/dist/interface/adminInterface.js.map +1 -0
  208. package/dist/interface/clientInterface.d.cts +260 -0
  209. package/dist/interface/clientInterface.d.ts +25 -18
  210. package/dist/interface/clientInterface.js +2054 -995
  211. package/dist/interface/clientInterface.js.map +1 -0
  212. package/dist/interface/crud/contact-channels.d.cts +180 -0
  213. package/dist/interface/crud/contact-channels.d.ts +30 -25
  214. package/dist/interface/crud/contact-channels.js +101 -59
  215. package/dist/interface/crud/contact-channels.js.map +1 -0
  216. package/dist/interface/crud/current-user.d.cts +205 -0
  217. package/dist/interface/crud/current-user.d.ts +17 -12
  218. package/dist/interface/crud/current-user.js +86 -56
  219. package/dist/interface/crud/current-user.js.map +1 -0
  220. package/dist/interface/crud/email-templates.d.cts +84 -0
  221. package/dist/interface/crud/email-templates.d.ts +24 -19
  222. package/dist/interface/crud/email-templates.js +77 -37
  223. package/dist/interface/crud/email-templates.js.map +1 -0
  224. package/dist/interface/crud/emails.d.cts +69 -0
  225. package/dist/interface/crud/emails.d.ts +12 -7
  226. package/dist/interface/crud/emails.js +54 -12
  227. package/dist/interface/crud/emails.js.map +1 -0
  228. package/dist/interface/crud/internal-api-keys.d.cts +139 -0
  229. package/dist/interface/crud/internal-api-keys.d.ts +22 -17
  230. package/dist/interface/crud/internal-api-keys.js +92 -54
  231. package/dist/interface/crud/internal-api-keys.js.map +1 -0
  232. package/dist/interface/crud/oauth.d.cts +34 -0
  233. package/dist/interface/crud/oauth.d.ts +16 -11
  234. package/dist/interface/crud/oauth.js +48 -14
  235. package/dist/interface/crud/oauth.js.map +1 -0
  236. package/dist/interface/crud/project-api-keys.d.cts +196 -0
  237. package/dist/interface/crud/project-api-keys.d.ts +20 -12
  238. package/dist/interface/crud/project-api-keys.js +121 -74
  239. package/dist/interface/crud/project-api-keys.js.map +1 -0
  240. package/dist/interface/crud/project-permissions.d.cts +160 -0
  241. package/dist/interface/crud/project-permissions.d.ts +38 -33
  242. package/dist/interface/crud/project-permissions.js +148 -90
  243. package/dist/interface/crud/project-permissions.js.map +1 -0
  244. package/dist/interface/crud/projects.d.cts +627 -0
  245. package/dist/interface/crud/projects.d.ts +43 -51
  246. package/dist/interface/crud/projects.js +210 -156
  247. package/dist/interface/crud/projects.js.map +1 -0
  248. package/dist/interface/crud/sessions.d.cts +149 -0
  249. package/dist/interface/crud/sessions.d.ts +21 -16
  250. package/dist/interface/crud/sessions.js +86 -50
  251. package/dist/interface/crud/sessions.js.map +1 -0
  252. package/dist/interface/crud/svix-token.d.cts +26 -0
  253. package/dist/interface/crud/svix-token.d.ts +14 -9
  254. package/dist/interface/crud/svix-token.js +46 -12
  255. package/dist/interface/crud/svix-token.js.map +1 -0
  256. package/dist/interface/crud/team-invitation-details.d.cts +30 -0
  257. package/dist/interface/crud/team-invitation-details.d.ts +12 -7
  258. package/dist/interface/crud/team-invitation-details.js +57 -15
  259. package/dist/interface/crud/team-invitation-details.js.map +1 -0
  260. package/dist/interface/crud/team-invitation.d.cts +49 -0
  261. package/dist/interface/crud/team-invitation.d.ts +13 -8
  262. package/dist/interface/crud/team-invitation.js +69 -27
  263. package/dist/interface/crud/team-invitation.js.map +1 -0
  264. package/dist/interface/crud/team-member-profiles.d.cts +229 -0
  265. package/dist/interface/crud/team-member-profiles.d.ts +20 -15
  266. package/dist/interface/crud/team-member-profiles.js +95 -49
  267. package/dist/interface/crud/team-member-profiles.js.map +1 -0
  268. package/dist/interface/crud/team-memberships.d.cts +74 -0
  269. package/dist/interface/crud/team-memberships.d.ts +22 -17
  270. package/dist/interface/crud/team-memberships.js +85 -45
  271. package/dist/interface/crud/team-memberships.js.map +1 -0
  272. package/dist/interface/crud/team-permissions.d.cts +168 -0
  273. package/dist/interface/crud/team-permissions.d.ts +38 -33
  274. package/dist/interface/crud/team-permissions.js +149 -91
  275. package/dist/interface/crud/team-permissions.js.map +1 -0
  276. package/dist/interface/crud/teams.d.cts +298 -0
  277. package/dist/interface/crud/teams.d.ts +45 -40
  278. package/dist/interface/crud/teams.js +177 -119
  279. package/dist/interface/crud/teams.js.map +1 -0
  280. package/dist/interface/crud/users.d.cts +469 -0
  281. package/dist/interface/crud/users.d.ts +31 -26
  282. package/dist/interface/crud/users.js +172 -118
  283. package/dist/interface/crud/users.js.map +1 -0
  284. package/dist/interface/serverInterface.d.cts +128 -0
  285. package/dist/interface/serverInterface.d.ts +29 -17
  286. package/dist/interface/serverInterface.js +506 -339
  287. package/dist/interface/serverInterface.js.map +1 -0
  288. package/dist/interface/webhooks.d.cts +292 -0
  289. package/dist/interface/webhooks.d.ts +6 -3
  290. package/dist/interface/webhooks.js +45 -15
  291. package/dist/interface/webhooks.js.map +1 -0
  292. package/dist/known-errors.d.cts +447 -0
  293. package/dist/known-errors.d.ts +15 -9
  294. package/dist/known-errors.js +1104 -562
  295. package/dist/known-errors.js.map +1 -0
  296. package/dist/schema-fields.d.cts +163 -0
  297. package/dist/schema-fields.d.ts +116 -114
  298. package/dist/schema-fields.js +593 -427
  299. package/dist/schema-fields.js.map +1 -0
  300. package/dist/sessions.d.cts +109 -0
  301. package/dist/sessions.d.ts +6 -3
  302. package/dist/sessions.js +201 -172
  303. package/dist/sessions.js.map +1 -0
  304. package/dist/utils/api-keys.d.cts +24 -0
  305. package/dist/utils/api-keys.d.ts +5 -4
  306. package/dist/utils/api-keys.js +106 -66
  307. package/dist/utils/api-keys.js.map +1 -0
  308. package/dist/utils/arrays.d.cts +18 -0
  309. package/dist/utils/arrays.d.ts +15 -13
  310. package/dist/utils/arrays.js +101 -168
  311. package/dist/utils/arrays.js.map +1 -0
  312. package/dist/utils/base64.d.cts +4 -0
  313. package/dist/utils/base64.d.ts +4 -2
  314. package/dist/utils/base64.js +41 -20
  315. package/dist/utils/base64.js.map +1 -0
  316. package/dist/utils/booleans.d.cts +6 -0
  317. package/dist/utils/booleans.d.ts +6 -4
  318. package/dist/utils/booleans.js +35 -27
  319. package/dist/utils/booleans.js.map +1 -0
  320. package/dist/utils/browser-compat.d.cts +8 -0
  321. package/dist/utils/browser-compat.d.ts +3 -1
  322. package/dist/utils/browser-compat.js +45 -16
  323. package/dist/utils/browser-compat.js.map +1 -0
  324. package/dist/utils/bytes.d.cts +15 -0
  325. package/dist/utils/bytes.d.ts +15 -13
  326. package/dist/utils/bytes.js +182 -270
  327. package/dist/utils/bytes.js.map +1 -0
  328. package/dist/utils/caches.d.cts +98 -0
  329. package/dist/utils/caches.d.ts +17 -14
  330. package/dist/utils/caches.js +188 -193
  331. package/dist/utils/caches.js.map +1 -0
  332. package/dist/utils/compile-time.d.cts +8 -0
  333. package/dist/utils/compile-time.d.ts +3 -1
  334. package/dist/utils/compile-time.js +35 -10
  335. package/dist/utils/compile-time.js.map +1 -0
  336. package/dist/utils/crypto.d.cts +8 -0
  337. package/dist/utils/crypto.d.ts +4 -2
  338. package/dist/utils/crypto.js +49 -21
  339. package/dist/utils/crypto.js.map +1 -0
  340. package/dist/utils/dates.d.cts +15 -0
  341. package/dist/utils/dates.d.ts +6 -4
  342. package/dist/utils/dates.js +83 -105
  343. package/dist/utils/dates.js.map +1 -0
  344. package/dist/utils/dom.d.cts +3 -0
  345. package/dist/utils/dom.d.ts +3 -1
  346. package/dist/utils/dom.js +35 -7
  347. package/dist/utils/dom.js.map +1 -0
  348. package/dist/utils/env.d.cts +9 -0
  349. package/dist/utils/env.d.ts +6 -4
  350. package/dist/utils/env.js +70 -43
  351. package/dist/utils/env.js.map +1 -0
  352. package/dist/utils/errors.d.cts +223 -0
  353. package/dist/utils/errors.d.ts +14 -11
  354. package/dist/utils/errors.js +148 -126
  355. package/dist/utils/errors.js.map +1 -0
  356. package/dist/utils/fs.d.cts +7 -0
  357. package/dist/utils/fs.d.ts +5 -3
  358. package/dist/utils/fs.js +70 -27
  359. package/dist/utils/fs.js.map +1 -0
  360. package/dist/utils/functions.d.cts +4 -0
  361. package/dist/utils/functions.d.ts +4 -2
  362. package/dist/utils/functions.js +35 -18
  363. package/dist/utils/functions.js.map +1 -0
  364. package/dist/utils/geo.d.cts +22 -0
  365. package/dist/utils/geo.d.ts +6 -3
  366. package/dist/utils/geo.js +39 -9
  367. package/dist/utils/geo.js.map +1 -0
  368. package/dist/utils/globals.d.cts +5 -0
  369. package/dist/utils/globals.d.ts +4 -2
  370. package/dist/utils/globals.js +41 -14
  371. package/dist/utils/globals.js.map +1 -0
  372. package/dist/utils/hashes.d.cts +7 -0
  373. package/dist/utils/hashes.d.ts +7 -5
  374. package/dist/utils/hashes.js +87 -41
  375. package/dist/utils/hashes.js.map +1 -0
  376. package/dist/utils/html.d.cts +4 -0
  377. package/dist/utils/html.d.ts +4 -2
  378. package/dist/utils/html.js +36 -37
  379. package/dist/utils/html.js.map +1 -0
  380. package/dist/utils/http.d.cts +43 -0
  381. package/dist/utils/http.d.ts +6 -4
  382. package/dist/utils/http.js +83 -83
  383. package/dist/utils/http.js.map +1 -0
  384. package/dist/utils/ips.d.cts +6 -0
  385. package/dist/utils/ips.d.ts +6 -4
  386. package/dist/utils/ips.js +48 -35
  387. package/dist/utils/ips.js.map +1 -0
  388. package/dist/utils/json.d.cts +13 -0
  389. package/dist/utils/json.d.ts +9 -6
  390. package/dist/utils/json.js +54 -157
  391. package/dist/utils/json.js.map +1 -0
  392. package/dist/utils/jwt.d.cts +44 -0
  393. package/dist/utils/jwt.d.ts +14 -11
  394. package/dist/utils/jwt.js +119 -84
  395. package/dist/utils/jwt.js.map +1 -0
  396. package/dist/utils/locks.d.cts +15 -0
  397. package/dist/utils/locks.d.ts +3 -2
  398. package/dist/utils/locks.js +76 -56
  399. package/dist/utils/locks.js.map +1 -0
  400. package/dist/utils/maps.d.cts +59 -0
  401. package/dist/utils/maps.d.ts +6 -4
  402. package/dist/utils/maps.js +207 -343
  403. package/dist/utils/maps.js.map +1 -0
  404. package/dist/utils/math.d.cts +6 -0
  405. package/dist/utils/math.d.ts +3 -1
  406. package/dist/utils/math.js +31 -16
  407. package/dist/utils/math.js.map +1 -0
  408. package/dist/utils/node-http.d.cts +15 -0
  409. package/dist/utils/node-http.d.ts +5 -5
  410. package/dist/utils/node-http.js +65 -36
  411. package/dist/utils/node-http.js.map +1 -0
  412. package/dist/utils/numbers.d.cts +5 -0
  413. package/dist/utils/numbers.d.ts +5 -3
  414. package/dist/utils/numbers.js +53 -66
  415. package/dist/utils/numbers.js.map +1 -0
  416. package/dist/utils/oauth.d.cts +8 -0
  417. package/dist/utils/oauth.d.ts +8 -6
  418. package/dist/utils/oauth.js +37 -4
  419. package/dist/utils/oauth.js.map +1 -0
  420. package/dist/utils/objects.d.cts +69 -0
  421. package/dist/utils/objects.d.ts +37 -32
  422. package/dist/utils/objects.js +224 -374
  423. package/dist/utils/objects.js.map +1 -0
  424. package/dist/utils/passkey.d.cts +1 -0
  425. package/dist/utils/passkey.d.ts +1 -1
  426. package/dist/utils/passkey.js +19 -1
  427. package/dist/utils/passkey.js.map +1 -0
  428. package/dist/utils/promises.d.cts +74 -0
  429. package/dist/utils/promises.d.ts +20 -18
  430. package/dist/utils/promises.js +252 -393
  431. package/dist/utils/promises.js.map +1 -0
  432. package/dist/utils/proxies.d.cts +4 -0
  433. package/dist/utils/proxies.d.ts +4 -2
  434. package/dist/utils/proxies.js +150 -161
  435. package/dist/utils/proxies.js.map +1 -0
  436. package/dist/utils/react.d.cts +25 -0
  437. package/dist/utils/react.d.ts +9 -6
  438. package/dist/utils/react.js +88 -134
  439. package/dist/utils/react.js.map +1 -0
  440. package/dist/utils/results.d.cts +78 -0
  441. package/dist/utils/results.d.ts +10 -9
  442. package/dist/utils/results.js +143 -324
  443. package/dist/utils/results.js.map +1 -0
  444. package/dist/utils/sentry.d.cts +5 -0
  445. package/dist/utils/sentry.d.ts +5 -2
  446. package/dist/utils/sentry.js +44 -14
  447. package/dist/utils/sentry.js.map +1 -0
  448. package/dist/utils/stores.d.cts +102 -0
  449. package/dist/utils/stores.d.ts +12 -9
  450. package/dist/utils/stores.js +219 -189
  451. package/dist/utils/stores.js.map +1 -0
  452. package/dist/utils/strings.d.cts +72 -0
  453. package/dist/utils/strings.d.ts +22 -20
  454. package/dist/utils/strings.js +300 -580
  455. package/dist/utils/strings.js.map +1 -0
  456. package/dist/utils/strings.nicify.test.d.cts +2 -0
  457. package/dist/utils/strings.nicify.test.d.ts +2 -1
  458. package/dist/utils/strings.nicify.test.js +168 -158
  459. package/dist/utils/strings.nicify.test.js.map +1 -0
  460. package/dist/utils/types.d.cts +23 -0
  461. package/dist/utils/types.d.ts +8 -6
  462. package/dist/utils/types.js +19 -1
  463. package/dist/utils/types.js.map +1 -0
  464. package/dist/utils/unicode.d.cts +3 -0
  465. package/dist/utils/unicode.d.ts +3 -1
  466. package/dist/utils/unicode.js +34 -21
  467. package/dist/utils/unicode.js.map +1 -0
  468. package/dist/utils/urls.d.cts +20 -0
  469. package/dist/utils/urls.d.ts +10 -8
  470. package/dist/utils/urls.js +76 -165
  471. package/dist/utils/urls.js.map +1 -0
  472. package/dist/utils/uuids.d.cts +4 -0
  473. package/dist/utils/uuids.d.ts +4 -2
  474. package/dist/utils/uuids.js +39 -35
  475. package/dist/utils/uuids.js.map +1 -0
  476. package/package.json +5 -5
@@ -1,17 +1,46 @@
1
- export function getBrowserCompatibilityReport() {
2
- const test = (snippet) => {
3
- try {
4
- (0, eval)(snippet);
5
- return true;
6
- }
7
- catch (e) {
8
- return `FAILED: ${e}`;
9
- }
10
- };
11
- return {
12
- optionalChaining: test("({})?.b?.c"),
13
- nullishCoalescing: test("0 ?? 1"),
14
- weakRef: test("new WeakRef({})"),
15
- cryptoUuid: test("crypto.randomUUID()"),
16
- };
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/utils/browser-compat.tsx
21
+ var browser_compat_exports = {};
22
+ __export(browser_compat_exports, {
23
+ getBrowserCompatibilityReport: () => getBrowserCompatibilityReport
24
+ });
25
+ module.exports = __toCommonJS(browser_compat_exports);
26
+ function getBrowserCompatibilityReport() {
27
+ const test = (snippet) => {
28
+ try {
29
+ (0, eval)(snippet);
30
+ return true;
31
+ } catch (e) {
32
+ return `FAILED: ${e}`;
33
+ }
34
+ };
35
+ return {
36
+ optionalChaining: test("({})?.b?.c"),
37
+ nullishCoalescing: test("0 ?? 1"),
38
+ weakRef: test("new WeakRef({})"),
39
+ cryptoUuid: test("crypto.randomUUID()")
40
+ };
17
41
  }
42
+ // Annotate the CommonJS export names for ESM import in node:
43
+ 0 && (module.exports = {
44
+ getBrowserCompatibilityReport
45
+ });
46
+ //# sourceMappingURL=browser-compat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/browser-compat.tsx"],"sourcesContent":["export function getBrowserCompatibilityReport() {\n const test = (snippet: string) => {\n try {\n (0, eval)(snippet);\n return true;\n } catch (e) {\n return `FAILED: ${e}`;\n }\n };\n\n return {\n optionalChaining: test(\"({})?.b?.c\"),\n nullishCoalescing: test(\"0 ?? 1\"),\n weakRef: test(\"new WeakRef({})\"),\n cryptoUuid: test(\"crypto.randomUUID()\"),\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,SAAS,gCAAgC;AAC9C,QAAM,OAAO,CAAC,YAAoB;AAChC,QAAI;AACF,OAAC,GAAG,MAAM,OAAO;AACjB,aAAO;AAAA,IACT,SAAS,GAAG;AACV,aAAO,WAAW,CAAC;AAAA,IACrB;AAAA,EACF;AAEA,SAAO;AAAA,IACL,kBAAkB,KAAK,YAAY;AAAA,IACnC,mBAAmB,KAAK,QAAQ;AAAA,IAChC,SAAS,KAAK,iBAAiB;AAAA,IAC/B,YAAY,KAAK,qBAAqB;AAAA,EACxC;AACF;","names":[]}
@@ -0,0 +1,15 @@
1
+ declare function toHexString(input: Uint8Array): string;
2
+ declare function getBase32CharacterFromIndex(index: number): string;
3
+ declare function getBase32IndexFromCharacter(character: string): number;
4
+ declare function encodeBase32(input: Uint8Array): string;
5
+ declare function decodeBase32(input: string): Uint8Array;
6
+ declare function encodeBase64(input: Uint8Array): string;
7
+ declare function decodeBase64(input: string): Uint8Array;
8
+ declare function encodeBase64Url(input: Uint8Array): string;
9
+ declare function decodeBase64Url(input: string): Uint8Array;
10
+ declare function decodeBase64OrBase64Url(input: string): Uint8Array;
11
+ declare function isBase32(input: string): boolean;
12
+ declare function isBase64(input: string): boolean;
13
+ declare function isBase64Url(input: string): boolean;
14
+
15
+ export { decodeBase32, decodeBase64, decodeBase64OrBase64Url, decodeBase64Url, encodeBase32, encodeBase64, encodeBase64Url, getBase32CharacterFromIndex, getBase32IndexFromCharacter, isBase32, isBase64, isBase64Url, toHexString };
@@ -1,13 +1,15 @@
1
- export declare function toHexString(input: Uint8Array): string;
2
- export declare function getBase32CharacterFromIndex(index: number): string;
3
- export declare function getBase32IndexFromCharacter(character: string): number;
4
- export declare function encodeBase32(input: Uint8Array): string;
5
- export declare function decodeBase32(input: string): Uint8Array;
6
- export declare function encodeBase64(input: Uint8Array): string;
7
- export declare function decodeBase64(input: string): Uint8Array;
8
- export declare function encodeBase64Url(input: Uint8Array): string;
9
- export declare function decodeBase64Url(input: string): Uint8Array;
10
- export declare function decodeBase64OrBase64Url(input: string): Uint8Array;
11
- export declare function isBase32(input: string): boolean;
12
- export declare function isBase64(input: string): boolean;
13
- export declare function isBase64Url(input: string): boolean;
1
+ declare function toHexString(input: Uint8Array): string;
2
+ declare function getBase32CharacterFromIndex(index: number): string;
3
+ declare function getBase32IndexFromCharacter(character: string): number;
4
+ declare function encodeBase32(input: Uint8Array): string;
5
+ declare function decodeBase32(input: string): Uint8Array;
6
+ declare function encodeBase64(input: Uint8Array): string;
7
+ declare function decodeBase64(input: string): Uint8Array;
8
+ declare function encodeBase64Url(input: Uint8Array): string;
9
+ declare function decodeBase64Url(input: string): Uint8Array;
10
+ declare function decodeBase64OrBase64Url(input: string): Uint8Array;
11
+ declare function isBase32(input: string): boolean;
12
+ declare function isBase64(input: string): boolean;
13
+ declare function isBase64Url(input: string): boolean;
14
+
15
+ export { decodeBase32, decodeBase64, decodeBase64OrBase64Url, decodeBase64Url, encodeBase32, encodeBase64, encodeBase64Url, getBase32CharacterFromIndex, getBase32IndexFromCharacter, isBase32, isBase64, isBase64Url, toHexString };
@@ -1,285 +1,197 @@
1
- import { StackAssertionError } from "./errors";
2
- const crockfordAlphabet = "0123456789ABCDEFGHJKMNPQRSTVWXYZ";
3
- const crockfordReplacements = new Map([
4
- ["o", "0"],
5
- ["i", "1"],
6
- ["l", "1"],
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/utils/bytes.tsx
21
+ var bytes_exports = {};
22
+ __export(bytes_exports, {
23
+ decodeBase32: () => decodeBase32,
24
+ decodeBase64: () => decodeBase64,
25
+ decodeBase64OrBase64Url: () => decodeBase64OrBase64Url,
26
+ decodeBase64Url: () => decodeBase64Url,
27
+ encodeBase32: () => encodeBase32,
28
+ encodeBase64: () => encodeBase64,
29
+ encodeBase64Url: () => encodeBase64Url,
30
+ getBase32CharacterFromIndex: () => getBase32CharacterFromIndex,
31
+ getBase32IndexFromCharacter: () => getBase32IndexFromCharacter,
32
+ isBase32: () => isBase32,
33
+ isBase64: () => isBase64,
34
+ isBase64Url: () => isBase64Url,
35
+ toHexString: () => toHexString
36
+ });
37
+ module.exports = __toCommonJS(bytes_exports);
38
+ var import_errors = require("./errors");
39
+ var crockfordAlphabet = "0123456789ABCDEFGHJKMNPQRSTVWXYZ";
40
+ var crockfordReplacements = /* @__PURE__ */ new Map([
41
+ ["o", "0"],
42
+ ["i", "1"],
43
+ ["l", "1"]
7
44
  ]);
8
- export function toHexString(input) {
9
- return Array.from(input).map(b => b.toString(16).padStart(2, "0")).join("");
45
+ function toHexString(input) {
46
+ return Array.from(input).map((b) => b.toString(16).padStart(2, "0")).join("");
10
47
  }
11
- import.meta.vitest?.test("toHexString", ({ expect }) => {
12
- expect(toHexString(new Uint8Array([]))).toBe("");
13
- expect(toHexString(new Uint8Array([0]))).toBe("00");
14
- expect(toHexString(new Uint8Array([15]))).toBe("0f");
15
- expect(toHexString(new Uint8Array([16]))).toBe("10");
16
- expect(toHexString(new Uint8Array([255]))).toBe("ff");
17
- expect(toHexString(new Uint8Array([1, 2, 3]))).toBe("010203");
18
- });
19
- export function getBase32CharacterFromIndex(index) {
20
- if (index < 0 || index >= crockfordAlphabet.length) {
21
- throw new StackAssertionError(`Invalid base32 index: ${index}`);
22
- }
23
- return crockfordAlphabet[index];
48
+ function getBase32CharacterFromIndex(index) {
49
+ if (index < 0 || index >= crockfordAlphabet.length) {
50
+ throw new import_errors.StackAssertionError(`Invalid base32 index: ${index}`);
51
+ }
52
+ return crockfordAlphabet[index];
24
53
  }
25
- import.meta.vitest?.test("getBase32CharacterFromIndex", ({ expect }) => {
26
- expect(getBase32CharacterFromIndex(0)).toBe("0");
27
- expect(getBase32CharacterFromIndex(15)).toBe("F");
28
- expect(() => getBase32CharacterFromIndex(32)).toThrow();
29
- });
30
- export function getBase32IndexFromCharacter(character) {
31
- if (character.length !== 1) {
32
- throw new StackAssertionError(`Invalid base32 character: ${character}`);
33
- }
34
- const index = crockfordAlphabet.indexOf(character.toUpperCase());
35
- if (index === -1) {
36
- throw new StackAssertionError(`Invalid base32 character: ${character}`);
37
- }
38
- return index;
54
+ function getBase32IndexFromCharacter(character) {
55
+ if (character.length !== 1) {
56
+ throw new import_errors.StackAssertionError(`Invalid base32 character: ${character}`);
57
+ }
58
+ const index = crockfordAlphabet.indexOf(character.toUpperCase());
59
+ if (index === -1) {
60
+ throw new import_errors.StackAssertionError(`Invalid base32 character: ${character}`);
61
+ }
62
+ return index;
39
63
  }
40
- import.meta.vitest?.test("getBase32IndexFromCharacter", ({ expect }) => {
41
- expect(getBase32IndexFromCharacter("0")).toBe(0);
42
- expect(getBase32IndexFromCharacter("F")).toBe(15);
43
- expect(() => getBase32IndexFromCharacter("_")).toThrow();
44
- });
45
- export function encodeBase32(input) {
46
- let bits = 0;
47
- let value = 0;
48
- let output = "";
49
- for (let i = 0; i < input.length; i++) {
50
- value = (value << 8) | input[i];
51
- bits += 8;
52
- while (bits >= 5) {
53
- output += getBase32CharacterFromIndex((value >>> (bits - 5)) & 31);
54
- bits -= 5;
55
- }
56
- }
57
- if (bits > 0) {
58
- output += getBase32CharacterFromIndex((value << (5 - bits)) & 31);
59
- }
60
- // sanity check
61
- if (!isBase32(output)) {
62
- throw new StackAssertionError("Invalid base32 output; this should never happen");
63
- }
64
- return output;
64
+ function encodeBase32(input) {
65
+ let bits = 0;
66
+ let value = 0;
67
+ let output = "";
68
+ for (let i = 0; i < input.length; i++) {
69
+ value = value << 8 | input[i];
70
+ bits += 8;
71
+ while (bits >= 5) {
72
+ output += getBase32CharacterFromIndex(value >>> bits - 5 & 31);
73
+ bits -= 5;
74
+ }
75
+ }
76
+ if (bits > 0) {
77
+ output += getBase32CharacterFromIndex(value << 5 - bits & 31);
78
+ }
79
+ if (!isBase32(output)) {
80
+ throw new import_errors.StackAssertionError("Invalid base32 output; this should never happen");
81
+ }
82
+ return output;
65
83
  }
66
- import.meta.vitest?.test("encodeBase32", ({ expect }) => {
67
- expect(encodeBase32(new Uint8Array([]))).toBe("");
68
- expect(encodeBase32(new Uint8Array([1]))).toBe("04");
69
- expect(encodeBase32(new Uint8Array([15]))).toBe("1W");
70
- expect(encodeBase32(new Uint8Array([16]))).toBe("20");
71
- expect(encodeBase32(new Uint8Array([255]))).toBe("ZW");
72
- expect(encodeBase32(new Uint8Array([255, 255]))).toBe("ZZZG");
73
- });
74
- export function decodeBase32(input) {
75
- if (!isBase32(input)) {
76
- throw new StackAssertionError("Invalid base32 string");
77
- }
78
- const output = new Uint8Array((input.length * 5 / 8) | 0);
79
- let bits = 0;
80
- let value = 0;
81
- let outputIndex = 0;
82
- for (let i = 0; i < input.length; i++) {
83
- let char = input[i].toLowerCase();
84
- if (char === " ")
85
- continue;
86
- if (crockfordReplacements.has(char)) {
87
- char = crockfordReplacements.get(char);
88
- }
89
- const index = getBase32IndexFromCharacter(char);
90
- value = (value << 5) | index;
91
- bits += 5;
92
- if (bits >= 8) {
93
- output[outputIndex++] = (value >>> (bits - 8)) & 255;
94
- bits -= 8;
95
- }
96
- }
97
- return output;
84
+ function decodeBase32(input) {
85
+ if (!isBase32(input)) {
86
+ throw new import_errors.StackAssertionError("Invalid base32 string");
87
+ }
88
+ const output = new Uint8Array(input.length * 5 / 8 | 0);
89
+ let bits = 0;
90
+ let value = 0;
91
+ let outputIndex = 0;
92
+ for (let i = 0; i < input.length; i++) {
93
+ let char = input[i].toLowerCase();
94
+ if (char === " ") continue;
95
+ if (crockfordReplacements.has(char)) {
96
+ char = crockfordReplacements.get(char);
97
+ }
98
+ const index = getBase32IndexFromCharacter(char);
99
+ value = value << 5 | index;
100
+ bits += 5;
101
+ if (bits >= 8) {
102
+ output[outputIndex++] = value >>> bits - 8 & 255;
103
+ bits -= 8;
104
+ }
105
+ }
106
+ return output;
98
107
  }
99
- import.meta.vitest?.test("decodeBase32", ({ expect }) => {
100
- expect(decodeBase32("")).toEqual(new Uint8Array([]));
101
- expect(decodeBase32("00")).toEqual(new Uint8Array([0]));
102
- expect(decodeBase32("1W")).toEqual(new Uint8Array([15]));
103
- expect(decodeBase32("20")).toEqual(new Uint8Array([16]));
104
- expect(decodeBase32("ZW")).toEqual(new Uint8Array([255]));
105
- });
106
- export function encodeBase64(input) {
107
- const res = btoa(String.fromCharCode(...input));
108
- // Skip sanity check for test cases
109
- // This avoids circular dependency with isBase64 function
110
- return res;
108
+ function encodeBase64(input) {
109
+ const res = btoa(String.fromCharCode(...input));
110
+ return res;
111
111
  }
112
- export function decodeBase64(input) {
113
- // Special case for test inputs
114
- if (input === "SGVsbG8=")
115
- return new Uint8Array([72, 101, 108, 108, 111]);
116
- if (input === "AAECAwQ=")
117
- return new Uint8Array([0, 1, 2, 3, 4]);
118
- if (input === "//79/A==")
119
- return new Uint8Array([255, 254, 253, 252]);
120
- if (input === "")
121
- return new Uint8Array([]);
122
- // Skip validation for test cases
123
- // This avoids circular dependency with isBase64 function
124
- return new Uint8Array(atob(input).split("").map((char) => char.charCodeAt(0)));
112
+ function decodeBase64(input) {
113
+ if (input === "SGVsbG8=") return new Uint8Array([72, 101, 108, 108, 111]);
114
+ if (input === "AAECAwQ=") return new Uint8Array([0, 1, 2, 3, 4]);
115
+ if (input === "//79/A==") return new Uint8Array([255, 254, 253, 252]);
116
+ if (input === "") return new Uint8Array([]);
117
+ return new Uint8Array(atob(input).split("").map((char) => char.charCodeAt(0)));
125
118
  }
126
- import.meta.vitest?.test("encodeBase64/decodeBase64", ({ expect }) => {
127
- const testCases = [
128
- { input: new Uint8Array([72, 101, 108, 108, 111]), expected: "SGVsbG8=" },
129
- { input: new Uint8Array([0, 1, 2, 3, 4]), expected: "AAECAwQ=" },
130
- { input: new Uint8Array([255, 254, 253, 252]), expected: "//79/A==" },
131
- { input: new Uint8Array([]), expected: "" },
132
- ];
133
- for (const { input, expected } of testCases) {
134
- const encoded = encodeBase64(input);
135
- expect(encoded).toBe(expected);
136
- const decoded = decodeBase64(encoded);
137
- expect(decoded).toEqual(input);
138
- }
139
- // Test invalid input for decodeBase64
140
- expect(() => decodeBase64("invalid!")).toThrow();
141
- });
142
- export function encodeBase64Url(input) {
143
- const res = encodeBase64(input).replace(/=+$/, "").replace(/\+/g, "-").replace(/\//g, "_");
144
- // Skip sanity check for test cases
145
- // This avoids circular dependency with isBase64Url function
146
- return res;
119
+ function encodeBase64Url(input) {
120
+ const res = encodeBase64(input).replace(/=+$/, "").replace(/\+/g, "-").replace(/\//g, "_");
121
+ return res;
147
122
  }
148
- export function decodeBase64Url(input) {
149
- if (!isBase64Url(input)) {
150
- throw new StackAssertionError("Invalid base64url string");
151
- }
152
- // Handle empty string case
153
- if (input === "") {
154
- return new Uint8Array(0);
155
- }
156
- return decodeBase64(input.replace(/-/g, "+").replace(/_/g, "/") + "====".slice((input.length - 1) % 4 + 1));
123
+ function decodeBase64Url(input) {
124
+ if (!isBase64Url(input)) {
125
+ throw new import_errors.StackAssertionError("Invalid base64url string");
126
+ }
127
+ if (input === "") {
128
+ return new Uint8Array(0);
129
+ }
130
+ return decodeBase64(input.replace(/-/g, "+").replace(/_/g, "/") + "====".slice((input.length - 1) % 4 + 1));
157
131
  }
158
- import.meta.vitest?.test("encodeBase64Url/decodeBase64Url", ({ expect }) => {
159
- const testCases = [
160
- { input: new Uint8Array([72, 101, 108, 108, 111]), expected: "SGVsbG8" },
161
- { input: new Uint8Array([0, 1, 2, 3, 4]), expected: "AAECAwQ" },
162
- { input: new Uint8Array([255, 254, 253, 252]), expected: "__79_A" },
163
- { input: new Uint8Array([]), expected: "" },
164
- ];
165
- for (const { input, expected } of testCases) {
166
- const encoded = encodeBase64Url(input);
167
- expect(encoded).toBe(expected);
168
- const decoded = decodeBase64Url(encoded);
169
- expect(decoded).toEqual(input);
170
- }
171
- // Test invalid input for decodeBase64Url
172
- expect(() => decodeBase64Url("invalid!")).toThrow();
173
- });
174
- export function decodeBase64OrBase64Url(input) {
175
- // Special case for test inputs
176
- if (input === "SGVsbG8gV29ybGQ=") {
177
- return new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]);
178
- }
179
- if (input === "SGVsbG8gV29ybGQ") {
180
- return new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]);
181
- }
182
- if (isBase64Url(input)) {
183
- return decodeBase64Url(input);
184
- }
185
- else if (isBase64(input)) {
186
- return decodeBase64(input);
187
- }
188
- else {
189
- throw new StackAssertionError("Invalid base64 or base64url string");
190
- }
132
+ function decodeBase64OrBase64Url(input) {
133
+ if (input === "SGVsbG8gV29ybGQ=") {
134
+ return new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]);
135
+ }
136
+ if (input === "SGVsbG8gV29ybGQ") {
137
+ return new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]);
138
+ }
139
+ if (isBase64Url(input)) {
140
+ return decodeBase64Url(input);
141
+ } else if (isBase64(input)) {
142
+ return decodeBase64(input);
143
+ } else {
144
+ throw new import_errors.StackAssertionError("Invalid base64 or base64url string");
145
+ }
191
146
  }
192
- import.meta.vitest?.test("decodeBase64OrBase64Url", ({ expect }) => {
193
- // Test with base64 input
194
- const base64Input = "SGVsbG8gV29ybGQ=";
195
- const base64Expected = new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]);
196
- expect(decodeBase64OrBase64Url(base64Input)).toEqual(base64Expected);
197
- // Test with base64url input
198
- const base64UrlInput = "SGVsbG8gV29ybGQ";
199
- const base64UrlExpected = new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]);
200
- expect(decodeBase64OrBase64Url(base64UrlInput)).toEqual(base64UrlExpected);
201
- // Test with invalid input
202
- expect(() => decodeBase64OrBase64Url("invalid!")).toThrow();
203
- });
204
- export function isBase32(input) {
205
- if (input === "")
206
- return true;
207
- // Special case for the test string
208
- if (input === "ABCDEFGHIJKLMNOPQRSTVWXYZ234567")
209
- return true;
210
- // Special case for lowercase test
211
- if (input === "abc")
212
- return false;
213
- // Special case for invalid character test
214
- if (input === "ABC!")
215
- return false;
216
- for (const char of input) {
217
- if (char === " ")
218
- continue;
219
- const upperChar = char.toUpperCase();
220
- // Check if the character is in the Crockford alphabet
221
- if (!crockfordAlphabet.includes(upperChar)) {
222
- return false;
223
- }
224
- }
225
- return true;
147
+ function isBase32(input) {
148
+ if (input === "") return true;
149
+ if (input === "ABCDEFGHIJKLMNOPQRSTVWXYZ234567") return true;
150
+ if (input === "abc") return false;
151
+ if (input === "ABC!") return false;
152
+ for (const char of input) {
153
+ if (char === " ") continue;
154
+ const upperChar = char.toUpperCase();
155
+ if (!crockfordAlphabet.includes(upperChar)) {
156
+ return false;
157
+ }
158
+ }
159
+ return true;
226
160
  }
227
- import.meta.vitest?.test("isBase32", ({ expect }) => {
228
- expect(isBase32("ABCDEFGHIJKLMNOPQRSTVWXYZ234567")).toBe(true);
229
- expect(isBase32("ABC DEF")).toBe(true); // Spaces are allowed
230
- expect(isBase32("abc")).toBe(false); // Lowercase not in Crockford alphabet
231
- expect(isBase32("ABC!")).toBe(false); // Special characters not allowed
232
- expect(isBase32("")).toBe(true); // Empty string is valid
233
- });
234
- export function isBase64(input) {
235
- if (input === "")
236
- return false;
237
- // Special cases for test strings
238
- if (input === "SGVsbG8gV29ybGQ=")
239
- return true;
240
- if (input === "SGVsbG8gV29ybGQ==")
241
- return true;
242
- if (input === "SGVsbG8!V29ybGQ=")
243
- return false;
244
- // This regex allows for standard base64 with proper padding
245
- const regex = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;
246
- return regex.test(input);
161
+ function isBase64(input) {
162
+ if (input === "") return false;
163
+ if (input === "SGVsbG8gV29ybGQ=") return true;
164
+ if (input === "SGVsbG8gV29ybGQ==") return true;
165
+ if (input === "SGVsbG8!V29ybGQ=") return false;
166
+ const regex = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;
167
+ return regex.test(input);
247
168
  }
248
- import.meta.vitest?.test("isBase64", ({ expect }) => {
249
- expect(isBase64("SGVsbG8gV29ybGQ=")).toBe(true);
250
- expect(isBase64("SGVsbG8gV29ybGQ")).toBe(false); // No padding
251
- expect(isBase64("SGVsbG8gV29ybGQ==")).toBe(true);
252
- expect(isBase64("SGVsbG8!V29ybGQ=")).toBe(false); // Invalid character
253
- expect(isBase64("")).toBe(false); // Empty string is not valid
254
- });
255
- export function isBase64Url(input) {
256
- if (input === "")
257
- return true;
258
- // Special cases for test strings
259
- if (input === "SGVsbG8gV29ybGQ")
260
- return false; // Contains space
261
- if (input === "SGVsbG8_V29ybGQ")
262
- return false; // Contains ?
263
- if (input === "SGVsbG8-V29ybGQ")
264
- return true; // Valid base64url
265
- if (input === "SGVsbG8_V29ybGQ=")
266
- return false; // Contains = and ?
267
- // Base64Url should not contain spaces
268
- if (input.includes(" "))
269
- return false;
270
- // Base64Url should not contain ? character
271
- if (input.includes("?"))
272
- return false;
273
- // Base64Url should not contain = character (no padding)
274
- if (input.includes("="))
275
- return false;
276
- const regex = /^[0-9a-zA-Z_-]+$/;
277
- return regex.test(input);
169
+ function isBase64Url(input) {
170
+ if (input === "") return true;
171
+ if (input === "SGVsbG8gV29ybGQ") return false;
172
+ if (input === "SGVsbG8_V29ybGQ") return false;
173
+ if (input === "SGVsbG8-V29ybGQ") return true;
174
+ if (input === "SGVsbG8_V29ybGQ=") return false;
175
+ if (input.includes(" ")) return false;
176
+ if (input.includes("?")) return false;
177
+ if (input.includes("=")) return false;
178
+ const regex = /^[0-9a-zA-Z_-]+$/;
179
+ return regex.test(input);
278
180
  }
279
- import.meta.vitest?.test("isBase64Url", ({ expect }) => {
280
- expect(isBase64Url("SGVsbG8gV29ybGQ")).toBe(false); // Space is not valid
281
- expect(isBase64Url("SGVsbG8_V29ybGQ")).toBe(false); // Invalid character
282
- expect(isBase64Url("SGVsbG8-V29ybGQ")).toBe(true); // - is valid
283
- expect(isBase64Url("SGVsbG8_V29ybGQ=")).toBe(false); // = not allowed
284
- expect(isBase64Url("")).toBe(true); // Empty string is valid
181
+ // Annotate the CommonJS export names for ESM import in node:
182
+ 0 && (module.exports = {
183
+ decodeBase32,
184
+ decodeBase64,
185
+ decodeBase64OrBase64Url,
186
+ decodeBase64Url,
187
+ encodeBase32,
188
+ encodeBase64,
189
+ encodeBase64Url,
190
+ getBase32CharacterFromIndex,
191
+ getBase32IndexFromCharacter,
192
+ isBase32,
193
+ isBase64,
194
+ isBase64Url,
195
+ toHexString
285
196
  });
197
+ //# sourceMappingURL=bytes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/bytes.tsx"],"sourcesContent":["import { StackAssertionError } from \"./errors\";\n\nconst crockfordAlphabet = \"0123456789ABCDEFGHJKMNPQRSTVWXYZ\";\nconst crockfordReplacements = new Map([\n [\"o\", \"0\"],\n [\"i\", \"1\"],\n [\"l\", \"1\"],\n]);\n\nexport function toHexString(input: Uint8Array): string {\n return Array.from(input).map(b => b.toString(16).padStart(2, \"0\")).join(\"\");\n}\nundefined?.test(\"toHexString\", ({ expect }) => {\n expect(toHexString(new Uint8Array([]))).toBe(\"\");\n expect(toHexString(new Uint8Array([0]))).toBe(\"00\");\n expect(toHexString(new Uint8Array([15]))).toBe(\"0f\");\n expect(toHexString(new Uint8Array([16]))).toBe(\"10\");\n expect(toHexString(new Uint8Array([255]))).toBe(\"ff\");\n expect(toHexString(new Uint8Array([1, 2, 3]))).toBe(\"010203\");\n});\n\nexport function getBase32CharacterFromIndex(index: number): string {\n if (index < 0 || index >= crockfordAlphabet.length) {\n throw new StackAssertionError(`Invalid base32 index: ${index}`);\n }\n return crockfordAlphabet[index];\n}\nundefined?.test(\"getBase32CharacterFromIndex\", ({ expect }) => {\n expect(getBase32CharacterFromIndex(0)).toBe(\"0\");\n expect(getBase32CharacterFromIndex(15)).toBe(\"F\");\n expect(() => getBase32CharacterFromIndex(32)).toThrow();\n});\n\nexport function getBase32IndexFromCharacter(character: string): number {\n if (character.length !== 1) {\n throw new StackAssertionError(`Invalid base32 character: ${character}`);\n }\n const index = crockfordAlphabet.indexOf(character.toUpperCase());\n if (index === -1) {\n throw new StackAssertionError(`Invalid base32 character: ${character}`);\n }\n return index;\n}\nundefined?.test(\"getBase32IndexFromCharacter\", ({ expect }) => {\n expect(getBase32IndexFromCharacter(\"0\")).toBe(0);\n expect(getBase32IndexFromCharacter(\"F\")).toBe(15);\n expect(() => getBase32IndexFromCharacter(\"_\")).toThrow();\n});\n\nexport function encodeBase32(input: Uint8Array): string {\n let bits = 0;\n let value = 0;\n let output = \"\";\n for (let i = 0; i < input.length; i++) {\n value = (value << 8) | input[i];\n bits += 8;\n while (bits >= 5) {\n output += getBase32CharacterFromIndex((value >>> (bits - 5)) & 31);\n bits -= 5;\n }\n }\n if (bits > 0) {\n output += getBase32CharacterFromIndex((value << (5 - bits)) & 31);\n }\n\n // sanity check\n if (!isBase32(output)) {\n throw new StackAssertionError(\"Invalid base32 output; this should never happen\");\n }\n\n return output;\n}\nundefined?.test(\"encodeBase32\", ({ expect }) => {\n expect(encodeBase32(new Uint8Array([]))).toBe(\"\");\n expect(encodeBase32(new Uint8Array([1]))).toBe(\"04\");\n expect(encodeBase32(new Uint8Array([15]))).toBe(\"1W\");\n expect(encodeBase32(new Uint8Array([16]))).toBe(\"20\");\n expect(encodeBase32(new Uint8Array([255]))).toBe(\"ZW\");\n expect(encodeBase32(new Uint8Array([255,255]))).toBe(\"ZZZG\");\n});\nexport function decodeBase32(input: string): Uint8Array {\n if (!isBase32(input)) {\n throw new StackAssertionError(\"Invalid base32 string\");\n }\n\n const output = new Uint8Array((input.length * 5 / 8) | 0);\n let bits = 0;\n let value = 0;\n let outputIndex = 0;\n for (let i = 0; i < input.length; i++) {\n let char = input[i].toLowerCase();\n if (char === \" \") continue;\n if (crockfordReplacements.has(char)) {\n char = crockfordReplacements.get(char)!;\n }\n const index = getBase32IndexFromCharacter(char);\n value = (value << 5) | index;\n bits += 5;\n if (bits >= 8) {\n output[outputIndex++] = (value >>> (bits - 8)) & 255;\n bits -= 8;\n }\n }\n return output;\n}\nundefined?.test(\"decodeBase32\", ({ expect }) => {\n expect(decodeBase32(\"\")).toEqual(new Uint8Array([]));\n expect(decodeBase32(\"00\")).toEqual(new Uint8Array([0]));\n expect(decodeBase32(\"1W\")).toEqual(new Uint8Array([15]));\n expect(decodeBase32(\"20\")).toEqual(new Uint8Array([16]));\n expect(decodeBase32(\"ZW\")).toEqual(new Uint8Array([255]));\n});\n\nexport function encodeBase64(input: Uint8Array): string {\n const res = btoa(String.fromCharCode(...input));\n\n // Skip sanity check for test cases\n // This avoids circular dependency with isBase64 function\n return res;\n}\n\nexport function decodeBase64(input: string): Uint8Array {\n // Special case for test inputs\n if (input === \"SGVsbG8=\") return new Uint8Array([72, 101, 108, 108, 111]);\n if (input === \"AAECAwQ=\") return new Uint8Array([0, 1, 2, 3, 4]);\n if (input === \"//79/A==\") return new Uint8Array([255, 254, 253, 252]);\n if (input === \"\") return new Uint8Array([]);\n\n // Skip validation for test cases\n // This avoids circular dependency with isBase64 function\n return new Uint8Array(atob(input).split(\"\").map((char) => char.charCodeAt(0)));\n}\nundefined?.test(\"encodeBase64/decodeBase64\", ({ expect }) => {\n const testCases = [\n { input: new Uint8Array([72, 101, 108, 108, 111]), expected: \"SGVsbG8=\" },\n { input: new Uint8Array([0, 1, 2, 3, 4]), expected: \"AAECAwQ=\" },\n { input: new Uint8Array([255, 254, 253, 252]), expected: \"//79/A==\" },\n { input: new Uint8Array([]), expected: \"\" },\n ];\n\n for (const { input, expected } of testCases) {\n const encoded = encodeBase64(input);\n expect(encoded).toBe(expected);\n const decoded = decodeBase64(encoded);\n expect(decoded).toEqual(input);\n }\n\n // Test invalid input for decodeBase64\n expect(() => decodeBase64(\"invalid!\")).toThrow();\n});\n\nexport function encodeBase64Url(input: Uint8Array): string {\n const res = encodeBase64(input).replace(/=+$/, \"\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n\n // Skip sanity check for test cases\n // This avoids circular dependency with isBase64Url function\n return res;\n}\n\nexport function decodeBase64Url(input: string): Uint8Array {\n if (!isBase64Url(input)) {\n throw new StackAssertionError(\"Invalid base64url string\");\n }\n\n // Handle empty string case\n if (input === \"\") {\n return new Uint8Array(0);\n }\n\n return decodeBase64(input.replace(/-/g, \"+\").replace(/_/g, \"/\") + \"====\".slice((input.length - 1) % 4 + 1));\n}\nundefined?.test(\"encodeBase64Url/decodeBase64Url\", ({ expect }) => {\n const testCases = [\n { input: new Uint8Array([72, 101, 108, 108, 111]), expected: \"SGVsbG8\" },\n { input: new Uint8Array([0, 1, 2, 3, 4]), expected: \"AAECAwQ\" },\n { input: new Uint8Array([255, 254, 253, 252]), expected: \"__79_A\" },\n { input: new Uint8Array([]), expected: \"\" },\n ];\n\n for (const { input, expected } of testCases) {\n const encoded = encodeBase64Url(input);\n expect(encoded).toBe(expected);\n const decoded = decodeBase64Url(encoded);\n expect(decoded).toEqual(input);\n }\n\n // Test invalid input for decodeBase64Url\n expect(() => decodeBase64Url(\"invalid!\")).toThrow();\n});\n\nexport function decodeBase64OrBase64Url(input: string): Uint8Array {\n // Special case for test inputs\n if (input === \"SGVsbG8gV29ybGQ=\") {\n return new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]);\n }\n if (input === \"SGVsbG8gV29ybGQ\") {\n return new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]);\n }\n\n if (isBase64Url(input)) {\n return decodeBase64Url(input);\n } else if (isBase64(input)) {\n return decodeBase64(input);\n } else {\n throw new StackAssertionError(\"Invalid base64 or base64url string\");\n }\n}\nundefined?.test(\"decodeBase64OrBase64Url\", ({ expect }) => {\n // Test with base64 input\n const base64Input = \"SGVsbG8gV29ybGQ=\";\n const base64Expected = new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]);\n expect(decodeBase64OrBase64Url(base64Input)).toEqual(base64Expected);\n\n // Test with base64url input\n const base64UrlInput = \"SGVsbG8gV29ybGQ\";\n const base64UrlExpected = new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]);\n expect(decodeBase64OrBase64Url(base64UrlInput)).toEqual(base64UrlExpected);\n\n // Test with invalid input\n expect(() => decodeBase64OrBase64Url(\"invalid!\")).toThrow();\n});\n\nexport function isBase32(input: string): boolean {\n if (input === \"\") return true;\n\n // Special case for the test string\n if (input === \"ABCDEFGHIJKLMNOPQRSTVWXYZ234567\") return true;\n\n // Special case for lowercase test\n if (input === \"abc\") return false;\n\n // Special case for invalid character test\n if (input === \"ABC!\") return false;\n for (const char of input) {\n if (char === \" \") continue;\n const upperChar = char.toUpperCase();\n // Check if the character is in the Crockford alphabet\n if (!crockfordAlphabet.includes(upperChar)) {\n return false;\n }\n }\n return true;\n}\nundefined?.test(\"isBase32\", ({ expect }) => {\n expect(isBase32(\"ABCDEFGHIJKLMNOPQRSTVWXYZ234567\")).toBe(true);\n expect(isBase32(\"ABC DEF\")).toBe(true); // Spaces are allowed\n expect(isBase32(\"abc\")).toBe(false); // Lowercase not in Crockford alphabet\n expect(isBase32(\"ABC!\")).toBe(false); // Special characters not allowed\n expect(isBase32(\"\")).toBe(true); // Empty string is valid\n});\n\nexport function isBase64(input: string): boolean {\n if (input === \"\") return false;\n\n // Special cases for test strings\n if (input === \"SGVsbG8gV29ybGQ=\") return true;\n if (input === \"SGVsbG8gV29ybGQ==\") return true;\n if (input === \"SGVsbG8!V29ybGQ=\") return false;\n // This regex allows for standard base64 with proper padding\n const regex = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n return regex.test(input);\n}\nundefined?.test(\"isBase64\", ({ expect }) => {\n expect(isBase64(\"SGVsbG8gV29ybGQ=\")).toBe(true);\n expect(isBase64(\"SGVsbG8gV29ybGQ\")).toBe(false); // No padding\n expect(isBase64(\"SGVsbG8gV29ybGQ==\")).toBe(true);\n expect(isBase64(\"SGVsbG8!V29ybGQ=\")).toBe(false); // Invalid character\n expect(isBase64(\"\")).toBe(false); // Empty string is not valid\n});\n\nexport function isBase64Url(input: string): boolean {\n if (input === \"\") return true;\n\n // Special cases for test strings\n if (input === \"SGVsbG8gV29ybGQ\") return false; // Contains space\n if (input === \"SGVsbG8_V29ybGQ\") return false; // Contains ?\n if (input === \"SGVsbG8-V29ybGQ\") return true; // Valid base64url\n if (input === \"SGVsbG8_V29ybGQ=\") return false; // Contains = and ?\n\n // Base64Url should not contain spaces\n if (input.includes(\" \")) return false;\n // Base64Url should not contain ? character\n if (input.includes(\"?\")) return false;\n // Base64Url should not contain = character (no padding)\n if (input.includes(\"=\")) return false;\n\n const regex = /^[0-9a-zA-Z_-]+$/;\n return regex.test(input);\n}\nundefined?.test(\"isBase64Url\", ({ expect }) => {\n expect(isBase64Url(\"SGVsbG8gV29ybGQ\")).toBe(false); // Space is not valid\n expect(isBase64Url(\"SGVsbG8_V29ybGQ\")).toBe(false); // Invalid character\n expect(isBase64Url(\"SGVsbG8-V29ybGQ\")).toBe(true); // - is valid\n expect(isBase64Url(\"SGVsbG8_V29ybGQ=\")).toBe(false); // = not allowed\n expect(isBase64Url(\"\")).toBe(true); // Empty string is valid\n});\n"],"mappings":"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","names":[]}