@hexclave/shared 1.0.40 → 1.0.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1066) hide show
  1. package/dist/admin-interface-Y9EZqwD6.d.ts +379 -0
  2. package/dist/admin-interface-Y9EZqwD6.d.ts.map +1 -0
  3. package/dist/admin-metrics-bsOkw4YQ.d.ts +807 -0
  4. package/dist/admin-metrics-bsOkw4YQ.d.ts.map +1 -0
  5. package/dist/ai/image-limits.d.ts.map +1 -1
  6. package/dist/ai/image-limits.js +6 -7
  7. package/dist/ai/image-limits.js.map +1 -1
  8. package/dist/ai/llms/llms.d.ts.map +1 -1
  9. package/dist/ai/llms/llms.js +2 -4
  10. package/dist/ai/llms/llms.js.map +1 -1
  11. package/dist/ai/unified-prompts/reminders.js +3 -6
  12. package/dist/ai/unified-prompts/reminders.js.map +1 -1
  13. package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.d.ts.map +1 -1
  14. package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js +3 -5
  15. package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js.map +1 -1
  16. package/dist/ai/unified-prompts/skill-site-prompt-parts/brain.js +3 -6
  17. package/dist/ai/unified-prompts/skill-site-prompt-parts/brain.js.map +1 -1
  18. package/dist/ai/unified-prompts/skill-site-prompt-parts/cli-help.js +3 -6
  19. package/dist/ai/unified-prompts/skill-site-prompt-parts/cli-help.js.map +1 -1
  20. package/dist/ai/unified-prompts/skill-site-prompt-parts/config-docs.js +3 -6
  21. package/dist/ai/unified-prompts/skill-site-prompt-parts/config-docs.js.map +1 -1
  22. package/dist/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.js +3 -6
  23. package/dist/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.js.map +1 -1
  24. package/dist/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.js +3 -6
  25. package/dist/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.js.map +1 -1
  26. package/dist/ai/unified-prompts/skill-site-prompt-parts/docs-index.d.ts.map +1 -1
  27. package/dist/ai/unified-prompts/skill-site-prompt-parts/docs-index.js +5 -6
  28. package/dist/ai/unified-prompts/skill-site-prompt-parts/docs-index.js.map +1 -1
  29. package/dist/ai/unified-prompts/skill-site-prompt-parts/docs-json.generated.js +1 -2
  30. package/dist/ai/unified-prompts/skill-site-prompt-parts/docs-json.generated.js.map +1 -1
  31. package/dist/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.js +3 -6
  32. package/dist/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.js.map +1 -1
  33. package/dist/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.js +3 -6
  34. package/dist/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.js.map +1 -1
  35. package/dist/ai/unified-prompts/skill-site-prompt.d.ts.map +1 -1
  36. package/dist/ai/unified-prompts/skill-site-prompt.js +2 -4
  37. package/dist/ai/unified-prompts/skill-site-prompt.js.map +1 -1
  38. package/dist/analytics-IjkAsefy.d.ts +14 -0
  39. package/dist/analytics-IjkAsefy.d.ts.map +1 -0
  40. package/dist/apps/apps-config.d.ts.map +1 -1
  41. package/dist/apps/apps-config.js +2 -3
  42. package/dist/apps/apps-config.js.map +1 -1
  43. package/dist/apps/apps-ui.d.ts +1 -2
  44. package/dist/apps/apps-ui.d.ts.map +1 -1
  45. package/dist/apps/apps-ui.js +4 -5
  46. package/dist/apps/apps-ui.js.map +1 -1
  47. package/dist/client-interface-iIw4nU5k.d.ts +447 -0
  48. package/dist/client-interface-iIw4nU5k.d.ts.map +1 -0
  49. package/dist/config/db-sync-mappings.js +2 -3
  50. package/dist/config/db-sync-mappings.js.map +1 -1
  51. package/dist/config/format.d.ts +2 -61
  52. package/dist/config/format.js +2 -192
  53. package/dist/config/format.js.map +1 -1
  54. package/dist/config/migrate-catalogs-to-product-lines.d.ts.map +1 -1
  55. package/dist/config/migrate-catalogs-to-product-lines.js +2 -196
  56. package/dist/config/migrate-catalogs-to-product-lines.js.map +1 -1
  57. package/dist/config/schema-fuzzer.test.js +18 -172
  58. package/dist/config/schema-fuzzer.test.js.map +1 -1
  59. package/dist/config/schema.d.ts +2 -2328
  60. package/dist/config/schema.js +6 -351
  61. package/dist/config/schema.js.map +1 -1
  62. package/dist/config-authoring.d.ts +1 -1
  63. package/dist/config-authoring.d.ts.map +1 -1
  64. package/dist/config-authoring.js +2 -3
  65. package/dist/config-authoring.js.map +1 -1
  66. package/dist/config-authoring.test.js +1 -3
  67. package/dist/config-authoring.test.js.map +1 -1
  68. package/dist/config-eval.d.ts.map +1 -1
  69. package/dist/config-eval.js +4 -46
  70. package/dist/config-eval.js.map +1 -1
  71. package/dist/config-rendering.d.ts.map +1 -1
  72. package/dist/config-rendering.js +2 -48
  73. package/dist/config-rendering.js.map +1 -1
  74. package/dist/connected-accounts-D5CKe50A.d.ts +67 -0
  75. package/dist/connected-accounts-D5CKe50A.d.ts.map +1 -0
  76. package/dist/contact-channels-DW8yQxlc.d.ts +180 -0
  77. package/dist/contact-channels-DW8yQxlc.d.ts.map +1 -0
  78. package/dist/country-codes-CRWDroBE.d.ts +11 -0
  79. package/dist/country-codes-CRWDroBE.d.ts.map +1 -0
  80. package/dist/crud-CqmEW9s6.d.ts +98 -0
  81. package/dist/crud-CqmEW9s6.d.ts.map +1 -0
  82. package/dist/crud.d.ts +2 -98
  83. package/dist/crud.js +3 -71
  84. package/dist/crud.js.map +1 -1
  85. package/dist/currency-constants-Cq_q8twn.d.ts +45 -0
  86. package/dist/currency-constants-Cq_q8twn.d.ts.map +1 -0
  87. package/dist/current-user-BBoN3hsn.d.ts +284 -0
  88. package/dist/current-user-BBoN3hsn.d.ts.map +1 -0
  89. package/dist/dates-B6ne9iOR.d.ts +23 -0
  90. package/dist/dates-B6ne9iOR.d.ts.map +1 -0
  91. package/dist/email-outbox-B1wmVPRG.d.ts +1464 -0
  92. package/dist/{interface/crud/email-outbox.d.ts.map → email-outbox-B1wmVPRG.d.ts.map} +1 -1
  93. package/dist/emails-Ba4yEaCS.d.ts +40 -0
  94. package/dist/emails-Ba4yEaCS.d.ts.map +1 -0
  95. package/dist/errors-Cl-RUyed.d.ts +238 -0
  96. package/dist/errors-Cl-RUyed.d.ts.map +1 -0
  97. package/dist/esm/ai/image-limits.d.ts.map +1 -1
  98. package/dist/esm/ai/image-limits.js +5 -5
  99. package/dist/esm/ai/image-limits.js.map +1 -1
  100. package/dist/esm/ai/llms/llms.d.ts +1 -1
  101. package/dist/esm/ai/llms/llms.d.ts.map +1 -1
  102. package/dist/esm/ai/llms/llms.js +1 -2
  103. package/dist/esm/ai/llms/llms.js.map +1 -1
  104. package/dist/esm/ai/unified-prompts/reminders.js +1 -2
  105. package/dist/esm/ai/unified-prompts/reminders.js.map +1 -1
  106. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.d.ts.map +1 -1
  107. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js +26 -28
  108. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js.map +1 -1
  109. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/brain.js +1 -2
  110. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/brain.js.map +1 -1
  111. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/cli-help.js +1 -2
  112. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/cli-help.js.map +1 -1
  113. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/config-docs.js +1 -2
  114. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/config-docs.js.map +1 -1
  115. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.js +1 -2
  116. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.js.map +1 -1
  117. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.js +1 -2
  118. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.js.map +1 -1
  119. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/docs-index.d.ts.map +1 -1
  120. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/docs-index.js +2 -3
  121. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/docs-index.js.map +1 -1
  122. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/docs-json.generated.js +1 -1
  123. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/docs-json.generated.js.map +1 -1
  124. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.js +1 -2
  125. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.js.map +1 -1
  126. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.js +1 -2
  127. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.js.map +1 -1
  128. package/dist/esm/ai/unified-prompts/skill-site-prompt.d.ts.map +1 -1
  129. package/dist/esm/ai/unified-prompts/skill-site-prompt.js +1 -2
  130. package/dist/esm/ai/unified-prompts/skill-site-prompt.js.map +1 -1
  131. package/dist/esm/apps/apps-config.d.ts.map +1 -1
  132. package/dist/esm/apps/apps-config.js +1 -1
  133. package/dist/esm/apps/apps-config.js.map +1 -1
  134. package/dist/esm/apps/apps-ui.d.ts +2 -3
  135. package/dist/esm/apps/apps-ui.d.ts.map +1 -1
  136. package/dist/esm/apps/apps-ui.js +2 -3
  137. package/dist/esm/apps/apps-ui.js.map +1 -1
  138. package/dist/esm/config/db-sync-mappings.js +1 -1
  139. package/dist/esm/config/db-sync-mappings.js.map +1 -1
  140. package/dist/esm/config/format.d.ts +1 -1
  141. package/dist/esm/config/format.d.ts.map +1 -1
  142. package/dist/esm/config/format.js +1 -190
  143. package/dist/esm/config/format.js.map +1 -1
  144. package/dist/esm/config/migrate-catalogs-to-product-lines.d.ts.map +1 -1
  145. package/dist/esm/config/migrate-catalogs-to-product-lines.js +1 -194
  146. package/dist/esm/config/migrate-catalogs-to-product-lines.js.map +1 -1
  147. package/dist/esm/config/schema-fuzzer.test.js +20 -173
  148. package/dist/esm/config/schema-fuzzer.test.js.map +1 -1
  149. package/dist/esm/config/schema.d.ts +81 -82
  150. package/dist/esm/config/schema.d.ts.map +1 -1
  151. package/dist/esm/config/schema.js +2 -347
  152. package/dist/esm/config/schema.js.map +1 -1
  153. package/dist/esm/config-authoring.d.ts +1 -1
  154. package/dist/esm/config-authoring.d.ts.map +1 -1
  155. package/dist/esm/config-authoring.js +1 -1
  156. package/dist/esm/config-authoring.js.map +1 -1
  157. package/dist/esm/config-authoring.test.js +2 -3
  158. package/dist/esm/config-authoring.test.js.map +1 -1
  159. package/dist/esm/config-eval.d.ts +1 -1
  160. package/dist/esm/config-eval.d.ts.map +1 -1
  161. package/dist/esm/config-eval.js +1 -43
  162. package/dist/esm/config-eval.js.map +1 -1
  163. package/dist/esm/config-rendering.d.ts.map +1 -1
  164. package/dist/esm/config-rendering.js +1 -46
  165. package/dist/esm/config-rendering.js.map +1 -1
  166. package/dist/esm/crud.d.ts +1 -1
  167. package/dist/esm/crud.d.ts.map +1 -1
  168. package/dist/esm/crud.js +2 -69
  169. package/dist/esm/crud.js.map +1 -1
  170. package/dist/esm/helpers/emails.js +1 -2
  171. package/dist/esm/helpers/emails.js.map +1 -1
  172. package/dist/esm/helpers/init-prompt.d.ts.map +1 -1
  173. package/dist/esm/helpers/init-prompt.js +1 -2
  174. package/dist/esm/helpers/init-prompt.js.map +1 -1
  175. package/dist/esm/helpers/password.d.ts +1 -1
  176. package/dist/esm/helpers/password.d.ts.map +1 -1
  177. package/dist/esm/helpers/password.js +1 -2
  178. package/dist/esm/helpers/password.js.map +1 -1
  179. package/dist/esm/helpers/production-mode.d.ts +1 -1
  180. package/dist/esm/helpers/production-mode.d.ts.map +1 -1
  181. package/dist/esm/helpers/production-mode.js +1 -2
  182. package/dist/esm/helpers/production-mode.js.map +1 -1
  183. package/dist/esm/helpers/support-sla.d.ts.map +1 -1
  184. package/dist/esm/helpers/support-sla.js +1 -1
  185. package/dist/esm/helpers/support-sla.js.map +1 -1
  186. package/dist/esm/helpers/support-sla.test.js +2 -3
  187. package/dist/esm/helpers/support-sla.test.js.map +1 -1
  188. package/dist/esm/helpers/vault/client-side.d.ts.map +1 -1
  189. package/dist/esm/helpers/vault/client-side.js +1 -20
  190. package/dist/esm/helpers/vault/client-side.js.map +1 -1
  191. package/dist/esm/helpers/vault/server-side.js +1 -2
  192. package/dist/esm/helpers/vault/server-side.js.map +1 -1
  193. package/dist/esm/hooks/use-async-callback.d.ts.map +1 -1
  194. package/dist/esm/hooks/use-async-callback.js +1 -2
  195. package/dist/esm/hooks/use-async-callback.js.map +1 -1
  196. package/dist/esm/hooks/use-async-external-store.d.ts +1 -1
  197. package/dist/esm/hooks/use-async-external-store.d.ts.map +1 -1
  198. package/dist/esm/hooks/use-async-external-store.js +1 -2
  199. package/dist/esm/hooks/use-async-external-store.js.map +1 -1
  200. package/dist/esm/hooks/use-hash.js +1 -2
  201. package/dist/esm/hooks/use-hash.js.map +1 -1
  202. package/dist/esm/hooks/use-hover.d.ts.map +1 -1
  203. package/dist/esm/hooks/use-hover.js +1 -2
  204. package/dist/esm/hooks/use-hover.js.map +1 -1
  205. package/dist/esm/hooks/use-strict-memo.d.ts.map +1 -1
  206. package/dist/esm/hooks/use-strict-memo.js +1 -70
  207. package/dist/esm/hooks/use-strict-memo.js.map +1 -1
  208. package/dist/esm/index.d.ts +4 -4
  209. package/dist/esm/index.js +1 -2
  210. package/dist/esm/interface/admin-interface.d.ts +19 -19
  211. package/dist/esm/interface/admin-interface.d.ts.map +1 -1
  212. package/dist/esm/interface/admin-interface.js +2 -3
  213. package/dist/esm/interface/admin-interface.js.map +1 -1
  214. package/dist/esm/interface/admin-metrics.d.ts +2 -2
  215. package/dist/esm/interface/admin-metrics.d.ts.map +1 -1
  216. package/dist/esm/interface/admin-metrics.js +1 -2
  217. package/dist/esm/interface/admin-metrics.js.map +1 -1
  218. package/dist/esm/interface/client-interface.d.ts +22 -22
  219. package/dist/esm/interface/client-interface.d.ts.map +1 -1
  220. package/dist/esm/interface/client-interface.js +32 -16
  221. package/dist/esm/interface/client-interface.js.map +1 -1
  222. package/dist/esm/interface/client-interface.test.js +84 -13
  223. package/dist/esm/interface/client-interface.test.js.map +1 -1
  224. package/dist/esm/interface/conversations.d.ts +11 -11
  225. package/dist/esm/interface/conversations.d.ts.map +1 -1
  226. package/dist/esm/interface/conversations.js +1 -2
  227. package/dist/esm/interface/conversations.js.map +1 -1
  228. package/dist/esm/interface/crud/analytics.d.ts.map +1 -1
  229. package/dist/esm/interface/crud/analytics.js +1 -1
  230. package/dist/esm/interface/crud/connected-accounts.d.ts +15 -17
  231. package/dist/esm/interface/crud/connected-accounts.d.ts.map +1 -1
  232. package/dist/esm/interface/crud/connected-accounts.js +1 -2
  233. package/dist/esm/interface/crud/connected-accounts.js.map +1 -1
  234. package/dist/esm/interface/crud/contact-channels.d.ts +24 -26
  235. package/dist/esm/interface/crud/contact-channels.d.ts.map +1 -1
  236. package/dist/esm/interface/crud/contact-channels.js +1 -2
  237. package/dist/esm/interface/crud/contact-channels.js.map +1 -1
  238. package/dist/esm/interface/crud/current-user.d.ts +11 -13
  239. package/dist/esm/interface/crud/current-user.d.ts.map +1 -1
  240. package/dist/esm/interface/crud/current-user.js +25 -29
  241. package/dist/esm/interface/crud/current-user.js.map +1 -1
  242. package/dist/esm/interface/crud/email-outbox.d.ts +10 -12
  243. package/dist/esm/interface/crud/email-outbox.d.ts.map +1 -1
  244. package/dist/esm/interface/crud/email-outbox.js +1 -2
  245. package/dist/esm/interface/crud/email-outbox.js.map +1 -1
  246. package/dist/esm/interface/crud/email-templates.d.ts +16 -18
  247. package/dist/esm/interface/crud/email-templates.d.ts.map +1 -1
  248. package/dist/esm/interface/crud/email-templates.js +1 -2
  249. package/dist/esm/interface/crud/email-templates.js.map +1 -1
  250. package/dist/esm/interface/crud/emails.d.ts +6 -8
  251. package/dist/esm/interface/crud/emails.d.ts.map +1 -1
  252. package/dist/esm/interface/crud/emails.js +1 -2
  253. package/dist/esm/interface/crud/emails.js.map +1 -1
  254. package/dist/esm/interface/crud/internal-api-keys.d.ts +16 -18
  255. package/dist/esm/interface/crud/internal-api-keys.d.ts.map +1 -1
  256. package/dist/esm/interface/crud/internal-api-keys.js +1 -2
  257. package/dist/esm/interface/crud/internal-api-keys.js.map +1 -1
  258. package/dist/esm/interface/crud/invoices.d.ts.map +1 -1
  259. package/dist/esm/interface/crud/invoices.js +1 -2
  260. package/dist/esm/interface/crud/invoices.js.map +1 -1
  261. package/dist/esm/interface/crud/items.d.ts +6 -8
  262. package/dist/esm/interface/crud/items.d.ts.map +1 -1
  263. package/dist/esm/interface/crud/items.js +12 -16
  264. package/dist/esm/interface/crud/items.js.map +1 -1
  265. package/dist/esm/interface/crud/notification-preferences.d.ts +6 -8
  266. package/dist/esm/interface/crud/notification-preferences.d.ts.map +1 -1
  267. package/dist/esm/interface/crud/notification-preferences.js +8 -12
  268. package/dist/esm/interface/crud/notification-preferences.js.map +1 -1
  269. package/dist/esm/interface/crud/oauth-providers.d.ts +24 -26
  270. package/dist/esm/interface/crud/oauth-providers.d.ts.map +1 -1
  271. package/dist/esm/interface/crud/oauth-providers.js +1 -2
  272. package/dist/esm/interface/crud/oauth-providers.js.map +1 -1
  273. package/dist/esm/interface/crud/products.d.ts +16 -17
  274. package/dist/esm/interface/crud/products.d.ts.map +1 -1
  275. package/dist/esm/interface/crud/products.js +3 -2
  276. package/dist/esm/interface/crud/products.js.map +1 -1
  277. package/dist/esm/interface/crud/project-api-keys.d.ts +3 -4
  278. package/dist/esm/interface/crud/project-api-keys.d.ts.map +1 -1
  279. package/dist/esm/interface/crud/project-api-keys.js +1 -2
  280. package/dist/esm/interface/crud/project-api-keys.js.map +1 -1
  281. package/dist/esm/interface/crud/project-permissions.d.ts +29 -31
  282. package/dist/esm/interface/crud/project-permissions.d.ts.map +1 -1
  283. package/dist/esm/interface/crud/project-permissions.js +1 -2
  284. package/dist/esm/interface/crud/project-permissions.js.map +1 -1
  285. package/dist/esm/interface/crud/projects.d.ts +28 -30
  286. package/dist/esm/interface/crud/projects.d.ts.map +1 -1
  287. package/dist/esm/interface/crud/projects.js +3 -2
  288. package/dist/esm/interface/crud/projects.js.map +1 -1
  289. package/dist/esm/interface/crud/session-replays.d.ts.map +1 -1
  290. package/dist/esm/interface/crud/session-replays.js +1 -1
  291. package/dist/esm/interface/crud/sessions.d.ts +15 -17
  292. package/dist/esm/interface/crud/sessions.d.ts.map +1 -1
  293. package/dist/esm/interface/crud/sessions.js +1 -2
  294. package/dist/esm/interface/crud/sessions.js.map +1 -1
  295. package/dist/esm/interface/crud/sign-up-rules.d.ts.map +1 -1
  296. package/dist/esm/interface/crud/sign-up-rules.js +1 -1
  297. package/dist/esm/interface/crud/svix-token.d.ts +8 -10
  298. package/dist/esm/interface/crud/svix-token.d.ts.map +1 -1
  299. package/dist/esm/interface/crud/svix-token.js +1 -2
  300. package/dist/esm/interface/crud/svix-token.js.map +1 -1
  301. package/dist/esm/interface/crud/team-invitation-details.d.ts +6 -8
  302. package/dist/esm/interface/crud/team-invitation-details.d.ts.map +1 -1
  303. package/dist/esm/interface/crud/team-invitation-details.js +1 -2
  304. package/dist/esm/interface/crud/team-invitation-details.js.map +1 -1
  305. package/dist/esm/interface/crud/team-invitation.d.ts +7 -9
  306. package/dist/esm/interface/crud/team-invitation.d.ts.map +1 -1
  307. package/dist/esm/interface/crud/team-invitation.js +1 -2
  308. package/dist/esm/interface/crud/team-invitation.js.map +1 -1
  309. package/dist/esm/interface/crud/team-member-profiles.d.ts +14 -16
  310. package/dist/esm/interface/crud/team-member-profiles.d.ts.map +1 -1
  311. package/dist/esm/interface/crud/team-member-profiles.js +1 -2
  312. package/dist/esm/interface/crud/team-member-profiles.js.map +1 -1
  313. package/dist/esm/interface/crud/team-memberships.d.ts +14 -16
  314. package/dist/esm/interface/crud/team-memberships.d.ts.map +1 -1
  315. package/dist/esm/interface/crud/team-memberships.js +1 -2
  316. package/dist/esm/interface/crud/team-memberships.js.map +1 -1
  317. package/dist/esm/interface/crud/team-permissions.d.ts +29 -31
  318. package/dist/esm/interface/crud/team-permissions.d.ts.map +1 -1
  319. package/dist/esm/interface/crud/team-permissions.js +1 -2
  320. package/dist/esm/interface/crud/team-permissions.js.map +1 -1
  321. package/dist/esm/interface/crud/teams.d.ts +36 -38
  322. package/dist/esm/interface/crud/teams.d.ts.map +1 -1
  323. package/dist/esm/interface/crud/teams.js +2 -4
  324. package/dist/esm/interface/crud/teams.js.map +1 -1
  325. package/dist/esm/interface/crud/transactions.d.ts +12 -14
  326. package/dist/esm/interface/crud/transactions.d.ts.map +1 -1
  327. package/dist/esm/interface/crud/transactions.js +7 -13
  328. package/dist/esm/interface/crud/transactions.js.map +1 -1
  329. package/dist/esm/interface/crud/users.d.ts +5 -6
  330. package/dist/esm/interface/crud/users.d.ts.map +1 -1
  331. package/dist/esm/interface/crud/users.js +9 -5
  332. package/dist/esm/interface/crud/users.js.map +1 -1
  333. package/dist/esm/interface/handler-urls.d.ts +1 -1
  334. package/dist/esm/interface/handler-urls.d.ts.map +1 -1
  335. package/dist/esm/interface/handler-urls.js +1 -2
  336. package/dist/esm/interface/page-component-versions.d.ts +1 -1
  337. package/dist/esm/interface/page-component-versions.d.ts.map +1 -1
  338. package/dist/esm/interface/page-component-versions.js +1 -2
  339. package/dist/esm/interface/page-component-versions.js.map +1 -1
  340. package/dist/esm/interface/plan-usage.d.ts +1 -1
  341. package/dist/esm/interface/plan-usage.d.ts.map +1 -1
  342. package/dist/esm/interface/plan-usage.js +1 -2
  343. package/dist/esm/interface/plan-usage.js.map +1 -1
  344. package/dist/esm/interface/server-interface.d.ts +19 -19
  345. package/dist/esm/interface/server-interface.d.ts.map +1 -1
  346. package/dist/esm/interface/server-interface.js +2 -3
  347. package/dist/esm/interface/server-interface.js.map +1 -1
  348. package/dist/esm/interface/webhooks.d.ts.map +1 -1
  349. package/dist/esm/interface/webhooks.js +1 -2
  350. package/dist/esm/interface/webhooks.js.map +1 -1
  351. package/dist/esm/known-errors.d.ts +2 -2
  352. package/dist/esm/known-errors.d.ts.map +1 -1
  353. package/dist/esm/known-errors.js +10 -21
  354. package/dist/esm/known-errors.js.map +1 -1
  355. package/dist/esm/payments/payment-methods.d.ts.map +1 -1
  356. package/dist/esm/payments/payment-methods.js +1 -1
  357. package/dist/esm/payments/payment-methods.js.map +1 -1
  358. package/dist/esm/payments/stripe-limits.d.ts.map +1 -1
  359. package/dist/esm/payments/stripe-limits.js +1 -1
  360. package/dist/esm/payments/stripe-limits.js.map +1 -1
  361. package/dist/esm/plans.d.ts.map +1 -1
  362. package/dist/esm/plans.js +1 -1
  363. package/dist/esm/plans.js.map +1 -1
  364. package/dist/esm/schema-fields.d.ts +3 -3
  365. package/dist/esm/schema-fields.d.ts.map +1 -1
  366. package/dist/esm/schema-fields.js +3 -64
  367. package/dist/esm/schema-fields.js.map +1 -1
  368. package/dist/esm/sessions.d.ts +1 -1
  369. package/dist/esm/sessions.d.ts.map +1 -1
  370. package/dist/esm/sessions.js +1 -2
  371. package/dist/esm/sessions.js.map +1 -1
  372. package/dist/esm/sessions.test.js +2 -3
  373. package/dist/esm/sessions.test.js.map +1 -1
  374. package/dist/esm/utils/analytics-clickmap-overlay.d.ts.map +1 -1
  375. package/dist/esm/utils/analytics-clickmap-overlay.js +1 -1
  376. package/dist/esm/utils/api-keys.d.ts.map +1 -1
  377. package/dist/esm/utils/api-keys.js +1 -2
  378. package/dist/esm/utils/api-keys.js.map +1 -1
  379. package/dist/esm/utils/arrays.d.ts.map +1 -1
  380. package/dist/esm/utils/arrays.js +1 -470
  381. package/dist/esm/utils/arrays.js.map +1 -1
  382. package/dist/esm/utils/auth-methods.d.ts.map +1 -1
  383. package/dist/esm/utils/auth-methods.js +1 -1
  384. package/dist/esm/utils/auth-methods.js.map +1 -1
  385. package/dist/esm/utils/base64.d.ts.map +1 -1
  386. package/dist/esm/utils/base64.js +1 -10
  387. package/dist/esm/utils/base64.js.map +1 -1
  388. package/dist/esm/utils/booleans.d.ts.map +1 -1
  389. package/dist/esm/utils/booleans.js +1 -25
  390. package/dist/esm/utils/booleans.js.map +1 -1
  391. package/dist/esm/utils/browser-compat.d.ts.map +1 -1
  392. package/dist/esm/utils/browser-compat.js +1 -1
  393. package/dist/esm/utils/browser-compat.js.map +1 -1
  394. package/dist/esm/utils/bytes.d.ts.map +1 -1
  395. package/dist/esm/utils/bytes.js +3 -198
  396. package/dist/esm/utils/bytes.js.map +1 -1
  397. package/dist/esm/utils/caches.d.ts +1 -1
  398. package/dist/esm/utils/caches.d.ts.map +1 -1
  399. package/dist/esm/utils/caches.js +1 -27
  400. package/dist/esm/utils/caches.js.map +1 -1
  401. package/dist/esm/utils/cel-fields.d.ts.map +1 -1
  402. package/dist/esm/utils/cel-fields.js +1 -2
  403. package/dist/esm/utils/cel-fields.js.map +1 -1
  404. package/dist/esm/utils/cloud-hosts.d.ts.map +1 -1
  405. package/dist/esm/utils/cloud-hosts.js +1 -27
  406. package/dist/esm/utils/cloud-hosts.js.map +1 -1
  407. package/dist/esm/utils/compile-time.d.ts.map +1 -1
  408. package/dist/esm/utils/compile-time.js +1 -1
  409. package/dist/esm/utils/compile-time.js.map +1 -1
  410. package/dist/esm/utils/country-codes.d.ts.map +1 -1
  411. package/dist/esm/utils/country-codes.js +1 -16
  412. package/dist/esm/utils/country-codes.js.map +1 -1
  413. package/dist/esm/utils/crypto.d.ts.map +1 -1
  414. package/dist/esm/utils/crypto.js +3 -113
  415. package/dist/esm/utils/crypto.js.map +1 -1
  416. package/dist/esm/utils/currencies.d.ts +1 -1
  417. package/dist/esm/utils/currencies.d.ts.map +1 -1
  418. package/dist/esm/utils/currencies.js +2 -37
  419. package/dist/esm/utils/currencies.js.map +1 -1
  420. package/dist/esm/utils/currency-constants.d.ts.map +1 -1
  421. package/dist/esm/utils/currency-constants.js +1 -1
  422. package/dist/esm/utils/currency-constants.js.map +1 -1
  423. package/dist/esm/utils/dates.d.ts.map +1 -1
  424. package/dist/esm/utils/dates.js +1 -44
  425. package/dist/esm/utils/dates.js.map +1 -1
  426. package/dist/esm/utils/dev-env-state-path.d.ts.map +1 -1
  427. package/dist/esm/utils/dev-env-state-path.js +1 -2
  428. package/dist/esm/utils/dev-env-state-path.js.map +1 -1
  429. package/dist/esm/utils/dev-tool.d.ts.map +1 -1
  430. package/dist/esm/utils/dev-tool.js +1 -1
  431. package/dist/esm/utils/dom.d.ts.map +1 -1
  432. package/dist/esm/utils/dom.js +1 -1
  433. package/dist/esm/utils/dom.js.map +1 -1
  434. package/dist/esm/utils/elements-chain.d.ts.map +1 -1
  435. package/dist/esm/utils/elements-chain.js +5 -50
  436. package/dist/esm/utils/elements-chain.js.map +1 -1
  437. package/dist/esm/utils/env.d.ts.map +1 -1
  438. package/dist/esm/utils/env.js +1 -2
  439. package/dist/esm/utils/env.js.map +1 -1
  440. package/dist/esm/utils/env.test.js +2 -3
  441. package/dist/esm/utils/env.test.js.map +1 -1
  442. package/dist/esm/utils/errors.d.ts +1 -1
  443. package/dist/esm/utils/errors.d.ts.map +1 -1
  444. package/dist/esm/utils/errors.js +1 -2
  445. package/dist/esm/utils/errors.js.map +1 -1
  446. package/dist/esm/utils/esbuild.d.ts +1 -1
  447. package/dist/esm/utils/esbuild.d.ts.map +1 -1
  448. package/dist/esm/utils/esbuild.js +2 -3
  449. package/dist/esm/utils/esbuild.js.map +1 -1
  450. package/dist/esm/utils/featurebase.d.ts.map +1 -1
  451. package/dist/esm/utils/featurebase.js +1 -2
  452. package/dist/esm/utils/featurebase.js.map +1 -1
  453. package/dist/esm/utils/fs.d.ts.map +1 -1
  454. package/dist/esm/utils/fs.js +1 -2
  455. package/dist/esm/utils/fs.js.map +1 -1
  456. package/dist/esm/utils/functions.d.ts.map +1 -1
  457. package/dist/esm/utils/functions.js +1 -24
  458. package/dist/esm/utils/functions.js.map +1 -1
  459. package/dist/esm/utils/geo.d.ts.map +1 -1
  460. package/dist/esm/utils/geo.js +1 -2
  461. package/dist/esm/utils/geo.js.map +1 -1
  462. package/dist/esm/utils/globals.d.ts.map +1 -1
  463. package/dist/esm/utils/globals.js +1 -1
  464. package/dist/esm/utils/globals.js.map +1 -1
  465. package/dist/esm/utils/hashes.d.ts.map +1 -1
  466. package/dist/esm/utils/hashes.js +1 -2
  467. package/dist/esm/utils/hashes.js.map +1 -1
  468. package/dist/esm/utils/html.d.ts.map +1 -1
  469. package/dist/esm/utils/html.js +1 -19
  470. package/dist/esm/utils/html.js.map +1 -1
  471. package/dist/esm/utils/http.d.ts.map +1 -1
  472. package/dist/esm/utils/http.js +1 -19
  473. package/dist/esm/utils/http.js.map +1 -1
  474. package/dist/esm/utils/ips.d.ts.map +1 -1
  475. package/dist/esm/utils/ips.js +1 -25
  476. package/dist/esm/utils/ips.js.map +1 -1
  477. package/dist/esm/utils/json.d.ts +1 -1
  478. package/dist/esm/utils/json.d.ts.map +1 -1
  479. package/dist/esm/utils/json.js +1 -155
  480. package/dist/esm/utils/json.js.map +1 -1
  481. package/dist/esm/utils/jsx-editable-transpiler.d.ts.map +1 -1
  482. package/dist/esm/utils/jsx-editable-transpiler.js +1 -2
  483. package/dist/esm/utils/jsx-editable-transpiler.js.map +1 -1
  484. package/dist/esm/utils/jsx-editable-transpiler.test.js +2 -3
  485. package/dist/esm/utils/jsx-editable-transpiler.test.js.map +1 -1
  486. package/dist/esm/utils/jwt.d.ts.map +1 -1
  487. package/dist/esm/utils/jwt.js +1 -2
  488. package/dist/esm/utils/jwt.js.map +1 -1
  489. package/dist/esm/utils/locks.d.ts.map +1 -1
  490. package/dist/esm/utils/locks.js +1 -2
  491. package/dist/esm/utils/locks.js.map +1 -1
  492. package/dist/esm/utils/maps.d.ts.map +1 -1
  493. package/dist/esm/utils/maps.js +1 -111
  494. package/dist/esm/utils/maps.js.map +1 -1
  495. package/dist/esm/utils/math.d.ts.map +1 -1
  496. package/dist/esm/utils/math.js +1 -11
  497. package/dist/esm/utils/math.js.map +1 -1
  498. package/dist/esm/utils/monkey-patch.d.ts.map +1 -1
  499. package/dist/esm/utils/monkey-patch.js +2 -3
  500. package/dist/esm/utils/monkey-patch.js.map +1 -1
  501. package/dist/esm/utils/node-http.js +1 -2
  502. package/dist/esm/utils/node-http.js.map +1 -1
  503. package/dist/esm/utils/numbers.d.ts.map +1 -1
  504. package/dist/esm/utils/numbers.js +1 -45
  505. package/dist/esm/utils/numbers.js.map +1 -1
  506. package/dist/esm/utils/oauth.d.ts.map +1 -1
  507. package/dist/esm/utils/oauth.js +1 -1
  508. package/dist/esm/utils/oauth.js.map +1 -1
  509. package/dist/esm/utils/objects.d.ts.map +1 -1
  510. package/dist/esm/utils/objects.js +1 -622
  511. package/dist/esm/utils/objects.js.map +1 -1
  512. package/dist/esm/utils/paginated-lists.d.ts.map +1 -1
  513. package/dist/esm/utils/paginated-lists.js +1 -2
  514. package/dist/esm/utils/paginated-lists.js.map +1 -1
  515. package/dist/esm/utils/paginated-lists.test.js +2 -3
  516. package/dist/esm/utils/paginated-lists.test.js.map +1 -1
  517. package/dist/esm/utils/passkey.d.ts +1 -1
  518. package/dist/esm/utils/passkey.js +1 -1
  519. package/dist/esm/utils/promises.d.ts +1 -1
  520. package/dist/esm/utils/promises.d.ts.map +1 -1
  521. package/dist/esm/utils/promises.js +2 -161
  522. package/dist/esm/utils/promises.js.map +1 -1
  523. package/dist/esm/utils/proxies.d.ts.map +1 -1
  524. package/dist/esm/utils/proxies.js +1 -37
  525. package/dist/esm/utils/proxies.js.map +1 -1
  526. package/dist/esm/utils/react.d.ts.map +1 -1
  527. package/dist/esm/utils/react.js +1 -41
  528. package/dist/esm/utils/react.js.map +1 -1
  529. package/dist/esm/utils/redirect-urls.d.ts.map +1 -1
  530. package/dist/esm/utils/redirect-urls.js +2 -92
  531. package/dist/esm/utils/redirect-urls.js.map +1 -1
  532. package/dist/esm/utils/regex.js +1 -1
  533. package/dist/esm/utils/regex.js.map +1 -1
  534. package/dist/esm/utils/results.d.ts.map +1 -1
  535. package/dist/esm/utils/results.js +1 -213
  536. package/dist/esm/utils/results.js.map +1 -1
  537. package/dist/esm/utils/sentry.js +1 -1
  538. package/dist/esm/utils/sentry.js.map +1 -1
  539. package/dist/esm/utils/stores.d.ts +3 -3
  540. package/dist/esm/utils/stores.d.ts.map +1 -1
  541. package/dist/esm/utils/stores.js +1 -2
  542. package/dist/esm/utils/stores.js.map +1 -1
  543. package/dist/esm/utils/strings.d.ts.map +1 -1
  544. package/dist/esm/utils/strings.js +1 -251
  545. package/dist/esm/utils/strings.js.map +1 -1
  546. package/dist/esm/utils/strings.nicify.test.js +2 -3
  547. package/dist/esm/utils/strings.nicify.test.js.map +1 -1
  548. package/dist/esm/utils/telemetry.d.ts.map +1 -1
  549. package/dist/esm/utils/telemetry.js +1 -2
  550. package/dist/esm/utils/telemetry.js.map +1 -1
  551. package/dist/esm/utils/turnstile-browser.d.ts +1 -1
  552. package/dist/esm/utils/turnstile-browser.d.ts.map +1 -1
  553. package/dist/esm/utils/turnstile-browser.js +1 -2
  554. package/dist/esm/utils/turnstile-browser.js.map +1 -1
  555. package/dist/esm/utils/turnstile-flow.d.ts +1 -1
  556. package/dist/esm/utils/turnstile-flow.d.ts.map +1 -1
  557. package/dist/esm/utils/turnstile-flow.js +1 -2
  558. package/dist/esm/utils/turnstile-flow.js.map +1 -1
  559. package/dist/esm/utils/turnstile-flow.test.js +2 -3
  560. package/dist/esm/utils/turnstile-flow.test.js.map +1 -1
  561. package/dist/esm/utils/turnstile.d.ts.map +1 -1
  562. package/dist/esm/utils/turnstile.js +1 -1
  563. package/dist/esm/utils/turnstile.js.map +1 -1
  564. package/dist/esm/utils/typed-arrays.js +1 -2
  565. package/dist/esm/utils/typed-arrays.js.map +1 -1
  566. package/dist/esm/utils/types.d.ts +1 -1
  567. package/dist/esm/utils/types.d.ts.map +1 -1
  568. package/dist/esm/utils/types.js +1 -1
  569. package/dist/esm/utils/types.js.map +1 -1
  570. package/dist/esm/utils/unicode.d.ts.map +1 -1
  571. package/dist/esm/utils/unicode.js +1 -13
  572. package/dist/esm/utils/unicode.js.map +1 -1
  573. package/dist/esm/utils/urls.d.ts.map +1 -1
  574. package/dist/esm/utils/urls.js +1 -151
  575. package/dist/esm/utils/urls.js.map +1 -1
  576. package/dist/esm/utils/uuids.d.ts.map +1 -1
  577. package/dist/esm/utils/uuids.js +2 -26
  578. package/dist/esm/utils/uuids.js.map +1 -1
  579. package/dist/format-4JG1MGv5.d.ts +61 -0
  580. package/dist/format-4JG1MGv5.d.ts.map +1 -0
  581. package/dist/handler-urls-BHt3v8Ai.d.ts +70 -0
  582. package/dist/handler-urls-BHt3v8Ai.d.ts.map +1 -0
  583. package/dist/helpers/emails.js +2 -4
  584. package/dist/helpers/emails.js.map +1 -1
  585. package/dist/helpers/init-prompt.d.ts.map +1 -1
  586. package/dist/helpers/init-prompt.js +2 -4
  587. package/dist/helpers/init-prompt.js.map +1 -1
  588. package/dist/helpers/password.d.ts +1 -1
  589. package/dist/helpers/password.d.ts.map +1 -1
  590. package/dist/helpers/password.js +2 -4
  591. package/dist/helpers/password.js.map +1 -1
  592. package/dist/helpers/production-mode.d.ts +1 -1
  593. package/dist/helpers/production-mode.d.ts.map +1 -1
  594. package/dist/helpers/production-mode.js +2 -4
  595. package/dist/helpers/production-mode.js.map +1 -1
  596. package/dist/helpers/support-sla.d.ts.map +1 -1
  597. package/dist/helpers/support-sla.js +2 -3
  598. package/dist/helpers/support-sla.js.map +1 -1
  599. package/dist/helpers/support-sla.test.js +1 -3
  600. package/dist/helpers/support-sla.test.js.map +1 -1
  601. package/dist/helpers/vault/client-side.d.ts.map +1 -1
  602. package/dist/helpers/vault/client-side.js +2 -22
  603. package/dist/helpers/vault/client-side.js.map +1 -1
  604. package/dist/helpers/vault/server-side.js +2 -4
  605. package/dist/helpers/vault/server-side.js.map +1 -1
  606. package/dist/hooks/use-async-callback.d.ts.map +1 -1
  607. package/dist/hooks/use-async-callback.js +4 -5
  608. package/dist/hooks/use-async-callback.js.map +1 -1
  609. package/dist/hooks/use-async-external-store.d.ts +1 -1
  610. package/dist/hooks/use-async-external-store.d.ts.map +1 -1
  611. package/dist/hooks/use-async-external-store.js +2 -4
  612. package/dist/hooks/use-async-external-store.js.map +1 -1
  613. package/dist/hooks/use-hash.js +2 -4
  614. package/dist/hooks/use-hash.js.map +1 -1
  615. package/dist/hooks/use-hover.d.ts.map +1 -1
  616. package/dist/hooks/use-hover.js +2 -4
  617. package/dist/hooks/use-hover.js.map +1 -1
  618. package/dist/hooks/use-strict-memo.d.ts.map +1 -1
  619. package/dist/hooks/use-strict-memo.js +2 -72
  620. package/dist/hooks/use-strict-memo.js.map +1 -1
  621. package/dist/index.d.ts +4 -4
  622. package/dist/index.js +27 -29
  623. package/dist/interface/admin-interface.d.ts +3 -379
  624. package/dist/interface/admin-interface.js +3 -5
  625. package/dist/interface/admin-interface.js.map +1 -1
  626. package/dist/interface/admin-metrics.d.ts +2 -807
  627. package/dist/interface/admin-metrics.js +2 -4
  628. package/dist/interface/admin-metrics.js.map +1 -1
  629. package/dist/interface/client-interface.d.ts +2 -447
  630. package/dist/interface/client-interface.js +33 -18
  631. package/dist/interface/client-interface.js.map +1 -1
  632. package/dist/interface/client-interface.test.js +83 -13
  633. package/dist/interface/client-interface.test.js.map +1 -1
  634. package/dist/interface/conversations.d.ts +11 -11
  635. package/dist/interface/conversations.d.ts.map +1 -1
  636. package/dist/interface/conversations.js +2 -4
  637. package/dist/interface/conversations.js.map +1 -1
  638. package/dist/interface/crud/analytics.d.ts +2 -14
  639. package/dist/interface/crud/connected-accounts.d.ts +2 -68
  640. package/dist/interface/crud/connected-accounts.js +2 -4
  641. package/dist/interface/crud/connected-accounts.js.map +1 -1
  642. package/dist/interface/crud/contact-channels.d.ts +2 -181
  643. package/dist/interface/crud/contact-channels.js +2 -4
  644. package/dist/interface/crud/contact-channels.js.map +1 -1
  645. package/dist/interface/crud/current-user.d.ts +2 -285
  646. package/dist/interface/crud/current-user.js +2 -4
  647. package/dist/interface/crud/current-user.js.map +1 -1
  648. package/dist/interface/crud/email-outbox.d.ts +2 -1465
  649. package/dist/interface/crud/email-outbox.js +4 -5
  650. package/dist/interface/crud/email-outbox.js.map +1 -1
  651. package/dist/interface/crud/email-templates.d.ts +15 -16
  652. package/dist/interface/crud/email-templates.d.ts.map +1 -1
  653. package/dist/interface/crud/email-templates.js +2 -4
  654. package/dist/interface/crud/email-templates.js.map +1 -1
  655. package/dist/interface/crud/emails.d.ts +2 -41
  656. package/dist/interface/crud/emails.js +4 -5
  657. package/dist/interface/crud/emails.js.map +1 -1
  658. package/dist/interface/crud/internal-api-keys.d.ts +2 -140
  659. package/dist/interface/crud/internal-api-keys.js +2 -4
  660. package/dist/interface/crud/internal-api-keys.js.map +1 -1
  661. package/dist/interface/crud/invoices.d.ts +2 -43
  662. package/dist/interface/crud/invoices.js +2 -4
  663. package/dist/interface/crud/invoices.js.map +1 -1
  664. package/dist/interface/crud/items.d.ts +2 -30
  665. package/dist/interface/crud/items.js +2 -4
  666. package/dist/interface/crud/items.js.map +1 -1
  667. package/dist/interface/crud/notification-preferences.d.ts +2 -38
  668. package/dist/interface/crud/notification-preferences.js +2 -4
  669. package/dist/interface/crud/notification-preferences.js.map +1 -1
  670. package/dist/interface/crud/oauth-providers.d.ts +2 -186
  671. package/dist/interface/crud/oauth-providers.js +2 -4
  672. package/dist/interface/crud/oauth-providers.js.map +1 -1
  673. package/dist/interface/crud/products.d.ts +2 -182
  674. package/dist/interface/crud/products.js +4 -4
  675. package/dist/interface/crud/products.js.map +1 -1
  676. package/dist/interface/crud/project-api-keys.d.ts +2 -203
  677. package/dist/interface/crud/project-api-keys.js +2 -4
  678. package/dist/interface/crud/project-api-keys.js.map +1 -1
  679. package/dist/interface/crud/project-permissions.d.ts +2 -161
  680. package/dist/interface/crud/project-permissions.js +4 -5
  681. package/dist/interface/crud/project-permissions.js.map +1 -1
  682. package/dist/interface/crud/projects.d.ts +2 -901
  683. package/dist/interface/crud/projects.js +6 -5
  684. package/dist/interface/crud/projects.js.map +1 -1
  685. package/dist/interface/crud/session-replays.d.ts +2 -83
  686. package/dist/interface/crud/sessions.d.ts +2 -150
  687. package/dist/interface/crud/sessions.js +2 -4
  688. package/dist/interface/crud/sessions.js.map +1 -1
  689. package/dist/interface/crud/sign-up-rules.d.ts.map +1 -1
  690. package/dist/interface/crud/svix-token.d.ts +2 -31
  691. package/dist/interface/crud/svix-token.js +2 -4
  692. package/dist/interface/crud/svix-token.js.map +1 -1
  693. package/dist/interface/crud/team-invitation-details.d.ts +5 -6
  694. package/dist/interface/crud/team-invitation-details.d.ts.map +1 -1
  695. package/dist/interface/crud/team-invitation-details.js +4 -5
  696. package/dist/interface/crud/team-invitation-details.js.map +1 -1
  697. package/dist/interface/crud/team-invitation.d.ts +2 -54
  698. package/dist/interface/crud/team-invitation.js +4 -5
  699. package/dist/interface/crud/team-invitation.js.map +1 -1
  700. package/dist/interface/crud/team-member-profiles.d.ts +2 -286
  701. package/dist/interface/crud/team-member-profiles.js +4 -5
  702. package/dist/interface/crud/team-member-profiles.js.map +1 -1
  703. package/dist/interface/crud/team-memberships.d.ts +2 -75
  704. package/dist/interface/crud/team-memberships.js +2 -4
  705. package/dist/interface/crud/team-memberships.js.map +1 -1
  706. package/dist/interface/crud/team-permissions.d.ts +2 -169
  707. package/dist/interface/crud/team-permissions.js +4 -5
  708. package/dist/interface/crud/team-permissions.js.map +1 -1
  709. package/dist/interface/crud/teams.d.ts +2 -299
  710. package/dist/interface/crud/teams.js +5 -7
  711. package/dist/interface/crud/teams.js.map +1 -1
  712. package/dist/interface/crud/transactions.d.ts +2 -183
  713. package/dist/interface/crud/transactions.js +2 -4
  714. package/dist/interface/crud/transactions.js.map +1 -1
  715. package/dist/interface/crud/users.d.ts +2 -653
  716. package/dist/interface/crud/users.js +12 -8
  717. package/dist/interface/crud/users.js.map +1 -1
  718. package/dist/interface/handler-urls.d.ts +2 -51
  719. package/dist/interface/handler-urls.js +12 -14
  720. package/dist/interface/page-component-versions.d.ts +2 -25
  721. package/dist/interface/page-component-versions.js +2 -4
  722. package/dist/interface/page-component-versions.js.map +1 -1
  723. package/dist/interface/plan-usage.d.ts +2 -57
  724. package/dist/interface/plan-usage.js +2 -4
  725. package/dist/interface/plan-usage.js.map +1 -1
  726. package/dist/interface/server-interface.d.ts +2 -257
  727. package/dist/interface/server-interface.js +3 -5
  728. package/dist/interface/server-interface.js.map +1 -1
  729. package/dist/interface/webhooks.d.ts +2 -326
  730. package/dist/interface/webhooks.js +2 -4
  731. package/dist/interface/webhooks.js.map +1 -1
  732. package/dist/internal-api-keys-D8IYDodH.d.ts +139 -0
  733. package/dist/internal-api-keys-D8IYDodH.d.ts.map +1 -0
  734. package/dist/invoices-CHo9YKbI.d.ts +43 -0
  735. package/dist/invoices-CHo9YKbI.d.ts.map +1 -0
  736. package/dist/items-DlLSlVUD.d.ts +29 -0
  737. package/dist/items-DlLSlVUD.d.ts.map +1 -0
  738. package/dist/json-a1QIXu5z.d.ts +15 -0
  739. package/dist/json-a1QIXu5z.d.ts.map +1 -0
  740. package/dist/known-errors-Bm4a61wL.d.ts +575 -0
  741. package/dist/known-errors-Bm4a61wL.d.ts.map +1 -0
  742. package/dist/known-errors.d.ts +2 -575
  743. package/dist/known-errors.js +11 -23
  744. package/dist/known-errors.js.map +1 -1
  745. package/dist/notification-preferences-Bmzr_EOY.d.ts +37 -0
  746. package/dist/notification-preferences-Bmzr_EOY.d.ts.map +1 -0
  747. package/dist/oauth-providers-BMkKSSlA.d.ts +185 -0
  748. package/dist/oauth-providers-BMkKSSlA.d.ts.map +1 -0
  749. package/dist/objects-DkCkeBWE.d.ts +59 -0
  750. package/dist/objects-DkCkeBWE.d.ts.map +1 -0
  751. package/dist/passkey-CKg87UH-.d.ts +2 -0
  752. package/dist/payments/payment-methods.d.ts.map +1 -1
  753. package/dist/payments/payment-methods.js +2 -3
  754. package/dist/payments/payment-methods.js.map +1 -1
  755. package/dist/payments/stripe-limits.d.ts.map +1 -1
  756. package/dist/payments/stripe-limits.js +2 -3
  757. package/dist/payments/stripe-limits.js.map +1 -1
  758. package/dist/plan-usage-DfDoj5K4.d.ts +57 -0
  759. package/dist/plan-usage-DfDoj5K4.d.ts.map +1 -0
  760. package/dist/plans.d.ts.map +1 -1
  761. package/dist/plans.js +2 -3
  762. package/dist/plans.js.map +1 -1
  763. package/dist/products-Bs74ld-v.d.ts +182 -0
  764. package/dist/products-Bs74ld-v.d.ts.map +1 -0
  765. package/dist/project-api-keys--7V5X_UW.d.ts +203 -0
  766. package/dist/project-api-keys--7V5X_UW.d.ts.map +1 -0
  767. package/dist/project-permissions-kdi675F-.d.ts +160 -0
  768. package/dist/project-permissions-kdi675F-.d.ts.map +1 -0
  769. package/dist/projects-CFTNXRfG.d.ts +900 -0
  770. package/dist/projects-CFTNXRfG.d.ts.map +1 -0
  771. package/dist/results-DP3BzoL6.d.ts +70 -0
  772. package/dist/results-DP3BzoL6.d.ts.map +1 -0
  773. package/dist/{chunk-BE-pF4vm.js → rolldown-runtime-D6vf50IK.js} +12 -18
  774. package/dist/schema-CJwkGkdf.d.ts +2328 -0
  775. package/dist/schema-CJwkGkdf.d.ts.map +1 -0
  776. package/dist/schema-fields-DqGQ4kF7.d.ts +517 -0
  777. package/dist/schema-fields-DqGQ4kF7.d.ts.map +1 -0
  778. package/dist/schema-fields.d.ts +3 -518
  779. package/dist/schema-fields.js +21 -82
  780. package/dist/schema-fields.js.map +1 -1
  781. package/dist/server-interface-CgpxsLT_.d.ts +257 -0
  782. package/dist/server-interface-CgpxsLT_.d.ts.map +1 -0
  783. package/dist/session-replays-CXqhDpZq.d.ts +83 -0
  784. package/dist/session-replays-CXqhDpZq.d.ts.map +1 -0
  785. package/dist/sessions-B7Ko2Ldr.d.ts +149 -0
  786. package/dist/sessions-B7Ko2Ldr.d.ts.map +1 -0
  787. package/dist/sessions-d8qtvBUB.d.ts +175 -0
  788. package/dist/sessions-d8qtvBUB.d.ts.map +1 -0
  789. package/dist/sessions.d.ts +2 -175
  790. package/dist/sessions.js +4 -5
  791. package/dist/sessions.js.map +1 -1
  792. package/dist/sessions.test.js +1 -3
  793. package/dist/sessions.test.js.map +1 -1
  794. package/dist/strings-DWgkUybS.d.ts +76 -0
  795. package/dist/strings-DWgkUybS.d.ts.map +1 -0
  796. package/dist/svix-token-BsMrLGvy.d.ts +30 -0
  797. package/dist/svix-token-BsMrLGvy.d.ts.map +1 -0
  798. package/dist/team-invitation-Cyqt9oWw.d.ts +53 -0
  799. package/dist/team-invitation-Cyqt9oWw.d.ts.map +1 -0
  800. package/dist/team-member-profiles-BoDEqx-0.d.ts +285 -0
  801. package/dist/team-member-profiles-BoDEqx-0.d.ts.map +1 -0
  802. package/dist/team-memberships-DZHk2A5b.d.ts +74 -0
  803. package/dist/team-memberships-DZHk2A5b.d.ts.map +1 -0
  804. package/dist/team-permissions-DqOpaOWh.d.ts +168 -0
  805. package/dist/team-permissions-DqOpaOWh.d.ts.map +1 -0
  806. package/dist/teams-CQMcBnjM.d.ts +298 -0
  807. package/dist/teams-CQMcBnjM.d.ts.map +1 -0
  808. package/dist/transactions-DhnbvGH5.d.ts +182 -0
  809. package/dist/transactions-DhnbvGH5.d.ts.map +1 -0
  810. package/dist/types-DfTcxNtM.d.ts +77 -0
  811. package/dist/types-DfTcxNtM.d.ts.map +1 -0
  812. package/dist/users-DHNRwoSz.d.ts +653 -0
  813. package/dist/users-DHNRwoSz.d.ts.map +1 -0
  814. package/dist/utils/analytics-clickmap-overlay.d.ts.map +1 -1
  815. package/dist/utils/analytics-clickmap-overlay.js +2 -3
  816. package/dist/utils/analytics-clickmap-overlay.js.map +1 -1
  817. package/dist/utils/api-keys.d.ts.map +1 -1
  818. package/dist/utils/api-keys.js +4 -5
  819. package/dist/utils/api-keys.js.map +1 -1
  820. package/dist/utils/arrays.d.ts.map +1 -1
  821. package/dist/utils/arrays.js +2 -472
  822. package/dist/utils/arrays.js.map +1 -1
  823. package/dist/utils/auth-methods.d.ts.map +1 -1
  824. package/dist/utils/auth-methods.js +2 -3
  825. package/dist/utils/auth-methods.js.map +1 -1
  826. package/dist/utils/base64.d.ts.map +1 -1
  827. package/dist/utils/base64.js +2 -12
  828. package/dist/utils/base64.js.map +1 -1
  829. package/dist/utils/booleans.d.ts.map +1 -1
  830. package/dist/utils/booleans.js +2 -27
  831. package/dist/utils/booleans.js.map +1 -1
  832. package/dist/utils/browser-compat.d.ts.map +1 -1
  833. package/dist/utils/browser-compat.js +2 -3
  834. package/dist/utils/browser-compat.js.map +1 -1
  835. package/dist/utils/bytes.d.ts.map +1 -1
  836. package/dist/utils/bytes.js +4 -200
  837. package/dist/utils/bytes.js.map +1 -1
  838. package/dist/utils/caches.d.ts.map +1 -1
  839. package/dist/utils/caches.js +2 -29
  840. package/dist/utils/caches.js.map +1 -1
  841. package/dist/utils/cel-fields.d.ts.map +1 -1
  842. package/dist/utils/cel-fields.js +2 -4
  843. package/dist/utils/cel-fields.js.map +1 -1
  844. package/dist/utils/cloud-hosts.d.ts.map +1 -1
  845. package/dist/utils/cloud-hosts.js +2 -29
  846. package/dist/utils/cloud-hosts.js.map +1 -1
  847. package/dist/utils/compile-time.d.ts.map +1 -1
  848. package/dist/utils/compile-time.js +2 -3
  849. package/dist/utils/compile-time.js.map +1 -1
  850. package/dist/utils/country-codes.d.ts +2 -11
  851. package/dist/utils/country-codes.js +2 -18
  852. package/dist/utils/country-codes.js.map +1 -1
  853. package/dist/utils/crypto.d.ts.map +1 -1
  854. package/dist/utils/crypto.js +4 -115
  855. package/dist/utils/crypto.js.map +1 -1
  856. package/dist/utils/currencies.d.ts +1 -1
  857. package/dist/utils/currencies.d.ts.map +1 -1
  858. package/dist/utils/currencies.js +3 -39
  859. package/dist/utils/currencies.js.map +1 -1
  860. package/dist/utils/currency-constants.d.ts +2 -45
  861. package/dist/utils/currency-constants.js +2 -3
  862. package/dist/utils/currency-constants.js.map +1 -1
  863. package/dist/utils/dates.d.ts +2 -23
  864. package/dist/utils/dates.js +2 -46
  865. package/dist/utils/dates.js.map +1 -1
  866. package/dist/utils/dev-env-state-path.d.ts.map +1 -1
  867. package/dist/utils/dev-env-state-path.js +2 -4
  868. package/dist/utils/dev-env-state-path.js.map +1 -1
  869. package/dist/utils/dev-tool.d.ts.map +1 -1
  870. package/dist/utils/dev-tool.js +2 -3
  871. package/dist/utils/dev-tool.js.map +1 -1
  872. package/dist/utils/dom.d.ts.map +1 -1
  873. package/dist/utils/dom.js +2 -3
  874. package/dist/utils/dom.js.map +1 -1
  875. package/dist/utils/elements-chain.d.ts.map +1 -1
  876. package/dist/utils/elements-chain.js +6 -52
  877. package/dist/utils/elements-chain.js.map +1 -1
  878. package/dist/utils/env.d.ts.map +1 -1
  879. package/dist/utils/env.js +2 -4
  880. package/dist/utils/env.js.map +1 -1
  881. package/dist/utils/env.test.js +1 -3
  882. package/dist/utils/env.test.js.map +1 -1
  883. package/dist/utils/errors.d.ts +2 -238
  884. package/dist/utils/errors.js +2 -4
  885. package/dist/utils/errors.js.map +1 -1
  886. package/dist/utils/esbuild.d.ts +1 -1
  887. package/dist/utils/esbuild.d.ts.map +1 -1
  888. package/dist/utils/esbuild.js +5 -6
  889. package/dist/utils/esbuild.js.map +1 -1
  890. package/dist/utils/featurebase.d.ts.map +1 -1
  891. package/dist/utils/featurebase.js +2 -4
  892. package/dist/utils/featurebase.js.map +1 -1
  893. package/dist/utils/fs.d.ts.map +1 -1
  894. package/dist/utils/fs.js +5 -6
  895. package/dist/utils/fs.js.map +1 -1
  896. package/dist/utils/functions.d.ts.map +1 -1
  897. package/dist/utils/functions.js +2 -26
  898. package/dist/utils/functions.js.map +1 -1
  899. package/dist/utils/geo.d.ts.map +1 -1
  900. package/dist/utils/geo.js +2 -4
  901. package/dist/utils/geo.js.map +1 -1
  902. package/dist/utils/globals.d.ts.map +1 -1
  903. package/dist/utils/globals.js +2 -3
  904. package/dist/utils/globals.js.map +1 -1
  905. package/dist/utils/hashes.d.ts.map +1 -1
  906. package/dist/utils/hashes.js +4 -5
  907. package/dist/utils/hashes.js.map +1 -1
  908. package/dist/utils/html.d.ts.map +1 -1
  909. package/dist/utils/html.js +2 -21
  910. package/dist/utils/html.js.map +1 -1
  911. package/dist/utils/http.d.ts.map +1 -1
  912. package/dist/utils/http.js +2 -21
  913. package/dist/utils/http.js.map +1 -1
  914. package/dist/utils/ips.d.ts.map +1 -1
  915. package/dist/utils/ips.js +4 -28
  916. package/dist/utils/ips.js.map +1 -1
  917. package/dist/utils/json.d.ts +2 -15
  918. package/dist/utils/json.js +2 -157
  919. package/dist/utils/json.js.map +1 -1
  920. package/dist/utils/jsx-editable-transpiler.d.ts.map +1 -1
  921. package/dist/utils/jsx-editable-transpiler.js +7 -8
  922. package/dist/utils/jsx-editable-transpiler.js.map +1 -1
  923. package/dist/utils/jsx-editable-transpiler.test.js +1 -3
  924. package/dist/utils/jsx-editable-transpiler.test.js.map +1 -1
  925. package/dist/utils/jwt.d.ts.map +1 -1
  926. package/dist/utils/jwt.js +6 -7
  927. package/dist/utils/jwt.js.map +1 -1
  928. package/dist/utils/locks.d.ts.map +1 -1
  929. package/dist/utils/locks.js +2 -4
  930. package/dist/utils/locks.js.map +1 -1
  931. package/dist/utils/maps.d.ts.map +1 -1
  932. package/dist/utils/maps.js +2 -113
  933. package/dist/utils/maps.js.map +1 -1
  934. package/dist/utils/math.d.ts.map +1 -1
  935. package/dist/utils/math.js +2 -13
  936. package/dist/utils/math.js.map +1 -1
  937. package/dist/utils/monkey-patch.d.ts.map +1 -1
  938. package/dist/utils/monkey-patch.js +3 -5
  939. package/dist/utils/monkey-patch.js.map +1 -1
  940. package/dist/utils/node-http.js +2 -4
  941. package/dist/utils/node-http.js.map +1 -1
  942. package/dist/utils/numbers.d.ts.map +1 -1
  943. package/dist/utils/numbers.js +2 -47
  944. package/dist/utils/numbers.js.map +1 -1
  945. package/dist/utils/oauth.d.ts.map +1 -1
  946. package/dist/utils/oauth.js +2 -3
  947. package/dist/utils/oauth.js.map +1 -1
  948. package/dist/utils/objects.d.ts +2 -59
  949. package/dist/utils/objects.js +2 -624
  950. package/dist/utils/objects.js.map +1 -1
  951. package/dist/utils/paginated-lists.d.ts.map +1 -1
  952. package/dist/utils/paginated-lists.js +2 -4
  953. package/dist/utils/paginated-lists.js.map +1 -1
  954. package/dist/utils/paginated-lists.test.js +1 -3
  955. package/dist/utils/paginated-lists.test.js.map +1 -1
  956. package/dist/utils/passkey.d.ts +2 -2
  957. package/dist/utils/promises.d.ts +1 -1
  958. package/dist/utils/promises.d.ts.map +1 -1
  959. package/dist/utils/promises.js +3 -163
  960. package/dist/utils/promises.js.map +1 -1
  961. package/dist/utils/proxies.d.ts.map +1 -1
  962. package/dist/utils/proxies.js +2 -39
  963. package/dist/utils/proxies.js.map +1 -1
  964. package/dist/utils/react.d.ts.map +1 -1
  965. package/dist/utils/react.js +4 -44
  966. package/dist/utils/react.js.map +1 -1
  967. package/dist/utils/redirect-urls.d.ts.map +1 -1
  968. package/dist/utils/redirect-urls.js +3 -94
  969. package/dist/utils/redirect-urls.js.map +1 -1
  970. package/dist/utils/regex.js +2 -3
  971. package/dist/utils/regex.js.map +1 -1
  972. package/dist/utils/results.d.ts +2 -70
  973. package/dist/utils/results.js +2 -215
  974. package/dist/utils/results.js.map +1 -1
  975. package/dist/utils/sentry.js +2 -3
  976. package/dist/utils/sentry.js.map +1 -1
  977. package/dist/utils/stores.d.ts +1 -1
  978. package/dist/utils/stores.d.ts.map +1 -1
  979. package/dist/utils/stores.js +2 -4
  980. package/dist/utils/stores.js.map +1 -1
  981. package/dist/utils/strings.d.ts +2 -76
  982. package/dist/utils/strings.js +2 -253
  983. package/dist/utils/strings.js.map +1 -1
  984. package/dist/utils/strings.nicify.test.js +1 -3
  985. package/dist/utils/strings.nicify.test.js.map +1 -1
  986. package/dist/utils/telemetry.d.ts.map +1 -1
  987. package/dist/utils/telemetry.js +2 -4
  988. package/dist/utils/telemetry.js.map +1 -1
  989. package/dist/utils/turnstile-browser.d.ts.map +1 -1
  990. package/dist/utils/turnstile-browser.js +2 -4
  991. package/dist/utils/turnstile-browser.js.map +1 -1
  992. package/dist/utils/turnstile-flow.d.ts.map +1 -1
  993. package/dist/utils/turnstile-flow.js +2 -4
  994. package/dist/utils/turnstile-flow.js.map +1 -1
  995. package/dist/utils/turnstile-flow.test.js +1 -3
  996. package/dist/utils/turnstile-flow.test.js.map +1 -1
  997. package/dist/utils/turnstile.d.ts.map +1 -1
  998. package/dist/utils/turnstile.js +2 -3
  999. package/dist/utils/turnstile.js.map +1 -1
  1000. package/dist/utils/typed-arrays.js +2 -4
  1001. package/dist/utils/typed-arrays.js.map +1 -1
  1002. package/dist/utils/types.d.ts +2 -77
  1003. package/dist/utils/types.js +2 -3
  1004. package/dist/utils/types.js.map +1 -1
  1005. package/dist/utils/unicode.d.ts.map +1 -1
  1006. package/dist/utils/unicode.js +2 -15
  1007. package/dist/utils/unicode.js.map +1 -1
  1008. package/dist/utils/urls.d.ts.map +1 -1
  1009. package/dist/utils/urls.js +2 -153
  1010. package/dist/utils/urls.js.map +1 -1
  1011. package/dist/utils/uuids.d.ts.map +1 -1
  1012. package/dist/utils/uuids.js +3 -28
  1013. package/dist/utils/uuids.js.map +1 -1
  1014. package/dist/webhooks-8Ts1Clcb.d.ts +326 -0
  1015. package/dist/webhooks-8Ts1Clcb.d.ts.map +1 -0
  1016. package/package.json +2 -8
  1017. package/src/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.ts +1 -0
  1018. package/src/interface/client-interface.test.ts +77 -12
  1019. package/src/interface/client-interface.ts +9 -9
  1020. package/dist/config/format.d.ts.map +0 -1
  1021. package/dist/config/schema.d.ts.map +0 -1
  1022. package/dist/crud.d.ts.map +0 -1
  1023. package/dist/interface/admin-interface.d.ts.map +0 -1
  1024. package/dist/interface/admin-metrics.d.ts.map +0 -1
  1025. package/dist/interface/client-interface.d.ts.map +0 -1
  1026. package/dist/interface/crud/analytics.d.ts.map +0 -1
  1027. package/dist/interface/crud/connected-accounts.d.ts.map +0 -1
  1028. package/dist/interface/crud/contact-channels.d.ts.map +0 -1
  1029. package/dist/interface/crud/current-user.d.ts.map +0 -1
  1030. package/dist/interface/crud/emails.d.ts.map +0 -1
  1031. package/dist/interface/crud/internal-api-keys.d.ts.map +0 -1
  1032. package/dist/interface/crud/invoices.d.ts.map +0 -1
  1033. package/dist/interface/crud/items.d.ts.map +0 -1
  1034. package/dist/interface/crud/notification-preferences.d.ts.map +0 -1
  1035. package/dist/interface/crud/oauth-providers.d.ts.map +0 -1
  1036. package/dist/interface/crud/products.d.ts.map +0 -1
  1037. package/dist/interface/crud/project-api-keys.d.ts.map +0 -1
  1038. package/dist/interface/crud/project-permissions.d.ts.map +0 -1
  1039. package/dist/interface/crud/projects.d.ts.map +0 -1
  1040. package/dist/interface/crud/session-replays.d.ts.map +0 -1
  1041. package/dist/interface/crud/sessions.d.ts.map +0 -1
  1042. package/dist/interface/crud/svix-token.d.ts.map +0 -1
  1043. package/dist/interface/crud/team-invitation.d.ts.map +0 -1
  1044. package/dist/interface/crud/team-member-profiles.d.ts.map +0 -1
  1045. package/dist/interface/crud/team-memberships.d.ts.map +0 -1
  1046. package/dist/interface/crud/team-permissions.d.ts.map +0 -1
  1047. package/dist/interface/crud/teams.d.ts.map +0 -1
  1048. package/dist/interface/crud/transactions.d.ts.map +0 -1
  1049. package/dist/interface/crud/users.d.ts.map +0 -1
  1050. package/dist/interface/handler-urls.d.ts.map +0 -1
  1051. package/dist/interface/page-component-versions.d.ts.map +0 -1
  1052. package/dist/interface/plan-usage.d.ts.map +0 -1
  1053. package/dist/interface/server-interface.d.ts.map +0 -1
  1054. package/dist/interface/webhooks.d.ts.map +0 -1
  1055. package/dist/known-errors.d.ts.map +0 -1
  1056. package/dist/schema-fields.d.ts.map +0 -1
  1057. package/dist/sessions.d.ts.map +0 -1
  1058. package/dist/utils/country-codes.d.ts.map +0 -1
  1059. package/dist/utils/currency-constants.d.ts.map +0 -1
  1060. package/dist/utils/dates.d.ts.map +0 -1
  1061. package/dist/utils/errors.d.ts.map +0 -1
  1062. package/dist/utils/json.d.ts.map +0 -1
  1063. package/dist/utils/objects.d.ts.map +0 -1
  1064. package/dist/utils/results.d.ts.map +0 -1
  1065. package/dist/utils/strings.d.ts.map +0 -1
  1066. package/dist/utils/types.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"arrays.js","names":[],"sources":["../../../src/utils/arrays.tsx"],"sourcesContent":["import { remainder } from \"./math\";\n\nexport function typedIncludes<T extends readonly any[]>(arr: T, item: unknown): item is T[number] {\n return arr.includes(item);\n}\nimport.meta.vitest?.test(\"typedIncludes\", ({ expect }) => {\n const arr = [1, 2, 3] as const;\n expect(typedIncludes(arr, 1)).toBe(true);\n expect(typedIncludes(arr, 4)).toBe(false);\n expect(typedIncludes(arr, \"1\")).toBe(false);\n\n const strArr = [\"a\", \"b\", \"c\"] as const;\n expect(typedIncludes(strArr, \"a\")).toBe(true);\n expect(typedIncludes(strArr, \"d\")).toBe(false);\n});\n\nexport function enumerate<T extends readonly any[]>(arr: T): [number, T[number]][] {\n return arr.map((item, index) => [index, item]);\n}\nimport.meta.vitest?.test(\"enumerate\", ({ expect }) => {\n expect(enumerate([])).toEqual([]);\n expect(enumerate([1, 2, 3])).toEqual([[0, 1], [1, 2], [2, 3]]);\n expect(enumerate([\"a\", \"b\", \"c\"])).toEqual([[0, \"a\"], [1, \"b\"], [2, \"c\"]]);\n});\n\nexport function isShallowEqual(a: readonly any[], b: readonly any[]): boolean {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\nimport.meta.vitest?.test(\"isShallowEqual\", ({ expect }) => {\n expect(isShallowEqual([], [])).toBe(true);\n expect(isShallowEqual([1, 2, 3], [1, 2, 3])).toBe(true);\n expect(isShallowEqual([1, 2, 3], [1, 2, 4])).toBe(false);\n expect(isShallowEqual([1, 2, 3], [1, 2])).toBe(false);\n expect(isShallowEqual([1, 2], [1, 2, 3])).toBe(false);\n // Test with objects (reference equality)\n const obj1 = { a: 1 };\n const obj2 = { a: 1 };\n expect(isShallowEqual([obj1], [obj1])).toBe(true);\n expect(isShallowEqual([obj1], [obj2])).toBe(false);\n});\n\n/**\n * Ponyfill for ES2023's findLastIndex.\n */\nexport function findLastIndex<T>(arr: readonly T[], predicate: (item: T) => boolean): number {\n for (let i = arr.length - 1; i >= 0; i--) {\n if (predicate(arr[i])) return i;\n }\n return -1;\n}\nimport.meta.vitest?.test(\"findLastIndex\", ({ expect }) => {\n expect(findLastIndex([], () => true)).toBe(-1);\n expect(findLastIndex([1, 2, 3, 4, 5], x => x % 2 === 0)).toBe(3); // 4 is at index 3\n expect(findLastIndex([1, 2, 3, 4, 5], x => x > 10)).toBe(-1);\n expect(findLastIndex([1, 2, 3, 2, 1], x => x === 2)).toBe(3);\n expect(findLastIndex([1, 2, 3], x => x === 1)).toBe(0);\n});\n\nexport function groupBy<T extends any, K>(\n arr: Iterable<T>,\n key: (item: T) => K,\n): Map<K, T[]> {\n const result = new Map<K, T[]>;\n for (const item of arr) {\n const k = key(item);\n if (result.get(k) === undefined) result.set(k, []);\n result.get(k)!.push(item);\n }\n return result;\n}\nimport.meta.vitest?.test(\"groupBy\", ({ expect }) => {\n expect(groupBy([], (x) => x)).toEqual(new Map());\n\n const numbers = [1, 2, 3, 4, 5, 6];\n const grouped = groupBy(numbers, (n) => n % 2 === 0 ? \"even\" : \"odd\");\n expect(grouped.get(\"even\")).toEqual([2, 4, 6]);\n expect(grouped.get(\"odd\")).toEqual([1, 3, 5]);\n\n // Check the actual lengths of the words to ensure our test is correct\n const words = [\"apple\", \"banana\", \"cherry\", \"date\", \"elderberry\"];\n\n const byLength = groupBy(words, (w) => w.length);\n // Adjust expectations based on actual word lengths\n expect(byLength.get(5)).toEqual([\"apple\"]);\n expect(byLength.get(6)).toEqual([\"banana\", \"cherry\"]);\n expect(byLength.get(4)).toEqual([\"date\"]);\n expect(byLength.get(10)).toEqual([\"elderberry\"]);\n});\n\nexport function range(endExclusive: number): number[];\nexport function range(startInclusive: number, endExclusive: number): number[];\nexport function range(startInclusive: number, endExclusive: number, step: number): number[];\nexport function range(startInclusive: number, endExclusive?: number, step?: number): number[] {\n if (endExclusive === undefined) {\n endExclusive = startInclusive;\n startInclusive = 0;\n }\n if (step === undefined) step = 1;\n\n const result = [];\n for (let i = startInclusive; step > 0 ? (i < endExclusive) : (i > endExclusive); i += step) {\n result.push(i);\n }\n return result;\n}\nimport.meta.vitest?.test(\"range\", ({ expect }) => {\n expect(range(5)).toEqual([0, 1, 2, 3, 4]);\n expect(range(2, 5)).toEqual([2, 3, 4]);\n expect(range(1, 10, 2)).toEqual([1, 3, 5, 7, 9]);\n expect(range(5, 0, -1)).toEqual([5, 4, 3, 2, 1]);\n expect(range(0, 0)).toEqual([]);\n expect(range(0, 10, 3)).toEqual([0, 3, 6, 9]);\n});\n\n\nexport function rotateLeft(arr: readonly any[], n: number): any[] {\n if (arr.length === 0) return [];\n const index = remainder(n, arr.length);\n return [...arr.slice(index), ...arr.slice(0, index)];\n}\nimport.meta.vitest?.test(\"rotateLeft\", ({ expect }) => {\n expect(rotateLeft([], 1)).toEqual([]);\n expect(rotateLeft([1, 2, 3, 4, 5], 0)).toEqual([1, 2, 3, 4, 5]);\n expect(rotateLeft([1, 2, 3, 4, 5], 1)).toEqual([2, 3, 4, 5, 1]);\n expect(rotateLeft([1, 2, 3, 4, 5], 3)).toEqual([4, 5, 1, 2, 3]);\n expect(rotateLeft([1, 2, 3, 4, 5], 5)).toEqual([1, 2, 3, 4, 5]);\n expect(rotateLeft([1, 2, 3, 4, 5], 6)).toEqual([2, 3, 4, 5, 1]);\n});\n\nexport function rotateRight(arr: readonly any[], n: number): any[] {\n return rotateLeft(arr, -n);\n}\nimport.meta.vitest?.test(\"rotateRight\", ({ expect }) => {\n expect(rotateRight([], 1)).toEqual([]);\n expect(rotateRight([1, 2, 3, 4, 5], 0)).toEqual([1, 2, 3, 4, 5]);\n expect(rotateRight([1, 2, 3, 4, 5], 1)).toEqual([5, 1, 2, 3, 4]);\n expect(rotateRight([1, 2, 3, 4, 5], 3)).toEqual([3, 4, 5, 1, 2]);\n expect(rotateRight([1, 2, 3, 4, 5], 5)).toEqual([1, 2, 3, 4, 5]);\n expect(rotateRight([1, 2, 3, 4, 5], 6)).toEqual([5, 1, 2, 3, 4]);\n});\n\n\nexport function shuffle<T>(arr: readonly T[]): T[] {\n const result = [...arr];\n for (let i = result.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [result[i], result[j]] = [result[j], result[i]];\n }\n return result;\n}\nimport.meta.vitest?.test(\"shuffle\", ({ expect }) => {\n // Test empty array\n expect(shuffle([])).toEqual([]);\n\n // Test single element array\n expect(shuffle([1])).toEqual([1]);\n\n // Test that shuffle returns a new array\n const original = [1, 2, 3, 4, 5];\n const shuffled = shuffle(original);\n expect(shuffled).not.toBe(original);\n\n // Test that all elements are preserved\n expect(shuffled.sort((a, b) => a - b)).toEqual(original);\n\n // Test with a larger array to ensure randomness\n // This is a probabilistic test, but it's very unlikely to fail\n const large = Array.from({ length: 100 }, (_, i) => i);\n const shuffledLarge = shuffle(large);\n expect(shuffledLarge).not.toEqual(large);\n expect(shuffledLarge.sort((a, b) => a - b)).toEqual(large);\n});\n\n\nexport function outerProduct<T, U>(arr1: readonly T[], arr2: readonly U[]): [T, U][] {\n return arr1.flatMap((item1) => arr2.map((item2) => [item1, item2] as [T, U]));\n}\nimport.meta.vitest?.test(\"outerProduct\", ({ expect }) => {\n expect(outerProduct([], [])).toEqual([]);\n expect(outerProduct([1], [])).toEqual([]);\n expect(outerProduct([], [1])).toEqual([]);\n expect(outerProduct([1], [2])).toEqual([[1, 2]]);\n expect(outerProduct([1, 2], [3, 4])).toEqual([[1, 3], [1, 4], [2, 3], [2, 4]]);\n expect(outerProduct([\"a\", \"b\"], [1, 2])).toEqual([[\"a\", 1], [\"a\", 2], [\"b\", 1], [\"b\", 2]]);\n});\n\nexport function unique<T>(arr: readonly T[]): T[] {\n return [...new Set(arr)];\n}\nimport.meta.vitest?.test(\"unique\", ({ expect }) => {\n expect(unique([])).toEqual([]);\n expect(unique([1, 2, 3])).toEqual([1, 2, 3]);\n expect(unique([1, 2, 2, 3, 1, 3])).toEqual([1, 2, 3]);\n // Test with objects (reference equality)\n const obj = { a: 1 };\n expect(unique([obj, obj])).toEqual([obj]);\n // Test with different types\n expect(unique([1, \"1\", true, 1, \"1\", true])).toEqual([1, \"1\", true]);\n});\n\n\nexport function getChunks<T>(arr: readonly T[], size: number): T[][] {\n const result: T[][] = [];\n if (size <= 0) return result;\n for (let i = 0; i < arr.length; i += size) {\n result.push(arr.slice(i, i + size));\n }\n return result;\n}\nimport.meta.vitest?.test(\"getChunks\", ({ expect }) => {\n expect(getChunks([], 2)).toEqual([]);\n expect(getChunks([1], 2)).toEqual([[1]]);\n expect(getChunks([1, 2], 2)).toEqual([[1, 2]]);\n expect(getChunks([1, 2, 3], 2)).toEqual([[1, 2], [3]]);\n expect(getChunks([1, 2, 3, 4, 5], 2)).toEqual([[1, 2], [3, 4], [5]]);\n expect(getChunks([1, 2, 3, 4], 3)).toEqual([[1, 2, 3], [4]]);\n expect(getChunks([1, 2, 3], 0)).toEqual([]);\n expect(getChunks([1, 2, 3], -1)).toEqual([]);\n});\n\nexport function isStringArray(arr: unknown): arr is string[] {\n return Array.isArray(arr) && arr.every((item) => typeof item === \"string\");\n}\nexport function isNumberArray(arr: unknown): arr is number[] {\n return Array.isArray(arr) && arr.every((item) => typeof item === \"number\");\n}\nexport function isBooleanArray(arr: unknown): arr is boolean[] {\n return Array.isArray(arr) && arr.every((item) => typeof item === \"boolean\");\n}\nexport function isObjectArray(arr: unknown): arr is object[] {\n return Array.isArray(arr) && arr.every((item) => typeof item === \"object\" && item !== null);\n}\nimport.meta.vitest?.test(\"is<Type>Array\", ({ expect }) => {\n expect(isStringArray([])).toBe(true);\n expect(isNumberArray([1, 2, 3])).toBe(true);\n expect(isBooleanArray([true, false, true])).toBe(true);\n expect(isObjectArray([{ a: 1 }, { b: 2 }, { c: 3 }])).toBe(true);\n expect(isStringArray([1, 2, 3])).toBe(false);\n expect(isNumberArray([\"a\", \"b\", \"c\"])).toBe(false);\n expect(isBooleanArray([1, 2, 3])).toBe(false);\n expect(isObjectArray([1, 2, 3])).toBe(false);\n expect(isObjectArray([{ a: 1 }, null, { b: 2 }])).toBe(false);\n expect(isObjectArray([{ a: 1 }, undefined, { b: 2 }])).toBe(false);\n});\n"],"mappings":";;;AAEA,SAAgB,cAAwC,KAAQ,MAAkC;AAChG,QAAO,IAAI,SAAS,KAAK;;CAE3B,SAAW,KAAC,kBAAc,EAAA,aAAmB;CAC3C,MAAM,MAAM;EAAC;EAAG;EAAG;EAAE;AACrB,QAAO,cAAc,KAAK,EAAE,CAAC,CAAC,KAAK,KAAK;AACxC,QAAO,cAAc,KAAK,EAAE,CAAC,CAAC,KAAK,MAAM;AACzC,QAAO,cAAc,KAAK,IAAI,CAAC,CAAC,KAAK,MAAM;CAE3C,MAAM,SAAS;EAAC;EAAK;EAAK;EAAI;AAC9B,QAAO,cAAc,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK;AAC7C,QAAO,cAAc,QAAQ,IAAI,CAAC,CAAC,KAAK,MAAM;EAC9C;AAEF,SAAgB,UAAoC,KAA+B;AACjF,QAAO,IAAI,KAAK,MAAM,UAAU,CAAC,OAAO,KAAK,CAAC;;CAEhD,SAAW,KAAC,cAAc,EAAA,aAAe;AACvC,QAAO,UAAU,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AACjC,QAAO,UAAU;EAAC;EAAG;EAAG;EAAE,CAAC,CAAC,CAAC,QAAQ;EAAC,CAAC,GAAG,EAAE;EAAE,CAAC,GAAG,EAAE;EAAE,CAAC,GAAG,EAAE;EAAC,CAAC;AAC9D,QAAO,UAAU;EAAC;EAAK;EAAK;EAAI,CAAC,CAAC,CAAC,QAAQ;EAAC,CAAC,GAAG,IAAI;EAAE,CAAC,GAAG,IAAI;EAAE,CAAC,GAAG,IAAI;EAAC,CAAC;EAC1E;AAEF,SAAgB,eAAe,GAAmB,GAA4B;AAC5E,KAAI,EAAE,WAAW,EAAE,OAAQ,QAAO;AAClC,MAAK,IAAI,IAAI,GAAG,IAAI,EAAE,QAAQ,IAC5B,KAAI,EAAE,OAAO,EAAE,GAAI,QAAO;AAE5B,QAAO;;CAET,SAAW,KAAC,mBAAc,EAAA,aAAoB;AAC5C,QAAO,eAAe,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK;AACzC,QAAO,eAAe;EAAC;EAAG;EAAG;EAAE,EAAE;EAAC;EAAG;EAAG;EAAE,CAAC,CAAC,CAAC,KAAK,KAAK;AACvD,QAAO,eAAe;EAAC;EAAG;EAAG;EAAE,EAAE;EAAC;EAAG;EAAG;EAAE,CAAC,CAAC,CAAC,KAAK,MAAM;AACxD,QAAO,eAAe;EAAC;EAAG;EAAG;EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM;AACrD,QAAO,eAAe,CAAC,GAAG,EAAE,EAAE;EAAC;EAAG;EAAG;EAAE,CAAC,CAAC,CAAC,KAAK,MAAM;CAErD,MAAM,OAAO,EAAE,GAAG,GAAG;CACrB,MAAM,OAAO,EAAE,GAAG,GAAG;AACrB,QAAO,eAAe,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK;AACjD,QAAO,eAAe,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM;EAClD;;;;AAKF,SAAgB,cAAiB,KAAmB,WAAyC;AAC3F,MAAK,IAAI,IAAI,IAAI,SAAS,GAAG,KAAK,GAAG,IACnC,KAAI,UAAU,IAAI,GAAG,CAAE,QAAO;AAEhC,QAAO;;CAET,SAAW,KAAC,kBAAc,EAAA,aAAmB;AAC3C,QAAO,cAAc,EAAE,QAAQ,KAAK,CAAC,CAAC,KAAK,GAAG;AAC9C,QAAO,cAAc;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,GAAE,MAAK,IAAI,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE;AAChE,QAAO,cAAc;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,GAAE,MAAK,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG;AAC5D,QAAO,cAAc;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,GAAE,MAAK,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE;AAC5D,QAAO,cAAc;EAAC;EAAG;EAAG;EAAE,GAAE,MAAK,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE;EACtD;AAEF,SAAgB,QACd,KACA,KACa;CACb,MAAM,yBAAS,IAAI,KAAW;AAC9B,MAAK,MAAM,QAAQ,KAAK;EACtB,MAAM,IAAI,IAAI,KAAK;AACnB,MAAI,OAAO,IAAI,EAAE,KAAK,OAAW,QAAO,IAAI,GAAG,EAAE,CAAC;AAClD,SAAO,IAAI,EAAE,CAAE,KAAK,KAAK;;AAE3B,QAAO;;CAET,SAAW,KAAC,YAAc,EAAA,aAAa;AACrC,QAAO,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,wBAAQ,IAAI,KAAK,CAAC;CAGhD,MAAM,UAAU,QADA;EAAC;EAAG;EAAG;EAAG;EAAG;EAAG;EAAE,GACA,MAAM,IAAI,MAAM,IAAI,SAAS,MAAM;AACrE,QAAO,QAAQ,IAAI,OAAO,CAAC,CAAC,QAAQ;EAAC;EAAG;EAAG;EAAE,CAAC;AAC9C,QAAO,QAAQ,IAAI,MAAM,CAAC,CAAC,QAAQ;EAAC;EAAG;EAAG;EAAE,CAAC;CAK7C,MAAM,WAAW,QAFH;EAAC;EAAS;EAAU;EAAU;EAAQ;EAAa,GAEhC,MAAM,EAAE,OAAO;AAEhD,QAAO,SAAS,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC1C,QAAO,SAAS,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,SAAS,CAAC;AACrD,QAAO,SAAS,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACzC,QAAO,SAAS,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;EAChD;AAKF,SAAgB,MAAM,gBAAwB,cAAuB,MAAyB;AAC5F,KAAI,iBAAiB,QAAW;AAC9B,iBAAe;AACf,mBAAiB;;AAEnB,KAAI,SAAS,OAAW,QAAO;CAE/B,MAAM,SAAS,EAAE;AACjB,MAAK,IAAI,IAAI,gBAAgB,OAAO,IAAK,IAAI,eAAiB,IAAI,cAAe,KAAK,KACpF,QAAO,KAAK,EAAE;AAEhB,QAAO;;CAET,SAAW,KAAC,UAAc,EAAA,aAAW;AACnC,QAAO,MAAM,EAAE,CAAC,CAAC,QAAQ;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,CAAC;AACzC,QAAO,MAAM,GAAG,EAAE,CAAC,CAAC,QAAQ;EAAC;EAAG;EAAG;EAAE,CAAC;AACtC,QAAO,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,QAAQ;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,CAAC;AAChD,QAAO,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,CAAC;AAChD,QAAO,MAAM,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC/B,QAAO,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,QAAQ;EAAC;EAAG;EAAG;EAAG;EAAE,CAAC;EAC7C;AAGF,SAAgB,WAAW,KAAqB,GAAkB;AAChE,KAAI,IAAI,WAAW,EAAG,QAAO,EAAE;CAC/B,MAAM,QAAQ,UAAU,GAAG,IAAI,OAAO;AACtC,QAAO,CAAC,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,MAAM,GAAG,MAAM,CAAC;;CAEtD,SAAW,KAAC,eAAc,EAAA,aAAgB;AACxC,QAAO,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACrC,QAAO,WAAW;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,CAAC;AAC/D,QAAO,WAAW;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,CAAC;AAC/D,QAAO,WAAW;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,CAAC;AAC/D,QAAO,WAAW;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,CAAC;AAC/D,QAAO,WAAW;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,CAAC;EAC/D;AAEF,SAAgB,YAAY,KAAqB,GAAkB;AACjE,QAAO,WAAW,KAAK,CAAC,EAAE;;CAE5B,SAAW,KAAC,gBAAc,EAAA,aAAiB;AACzC,QAAO,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtC,QAAO,YAAY;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,CAAC;AAChE,QAAO,YAAY;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,CAAC;AAChE,QAAO,YAAY;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,CAAC;AAChE,QAAO,YAAY;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,CAAC;AAChE,QAAO,YAAY;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,CAAC;EAChE;AAGF,SAAgB,QAAW,KAAwB;CACjD,MAAM,SAAS,CAAC,GAAG,IAAI;AACvB,MAAK,IAAI,IAAI,OAAO,SAAS,GAAG,IAAI,GAAG,KAAK;EAC1C,MAAM,IAAI,KAAK,MAAM,KAAK,QAAQ,IAAI,IAAI,GAAG;AAC7C,GAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,IAAI,OAAO,GAAG;;AAEjD,QAAO;;CAET,SAAW,KAAC,YAAc,EAAA,aAAa;AAErC,QAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAG/B,QAAO,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;CAGjC,MAAM,WAAW;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE;CAChC,MAAM,WAAW,QAAQ,SAAS;AAClC,QAAO,SAAS,CAAC,IAAI,KAAK,SAAS;AAGnC,QAAO,SAAS,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,SAAS;CAIxD,MAAM,QAAQ,MAAM,KAAK,EAAE,QAAQ,KAAK,GAAG,GAAG,MAAM,EAAE;CACtD,MAAM,gBAAgB,QAAQ,MAAM;AACpC,QAAO,cAAc,CAAC,IAAI,QAAQ,MAAM;AACxC,QAAO,cAAc,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,MAAM;EAC1D;AAGF,SAAgB,aAAmB,MAAoB,MAA8B;AACnF,QAAO,KAAK,SAAS,UAAU,KAAK,KAAK,UAAU,CAAC,OAAO,MAAM,CAAW,CAAC;;CAE/E,SAAW,KAAC,iBAAc,EAAA,aAAkB;AAC1C,QAAO,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AACxC,QAAO,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AACzC,QAAO,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AACzC,QAAO,aAAa,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAChD,QAAO,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ;EAAC,CAAC,GAAG,EAAE;EAAE,CAAC,GAAG,EAAE;EAAE,CAAC,GAAG,EAAE;EAAE,CAAC,GAAG,EAAE;EAAC,CAAC;AAC9E,QAAO,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ;EAAC,CAAC,KAAK,EAAE;EAAE,CAAC,KAAK,EAAE;EAAE,CAAC,KAAK,EAAE;EAAE,CAAC,KAAK,EAAE;EAAC,CAAC;EAC1F;AAEF,SAAgB,OAAU,KAAwB;AAChD,QAAO,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC;;CAE1B,SAAW,KAAC,WAAc,EAAA,aAAY;AACpC,QAAO,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC9B,QAAO,OAAO;EAAC;EAAG;EAAG;EAAE,CAAC,CAAC,CAAC,QAAQ;EAAC;EAAG;EAAG;EAAE,CAAC;AAC5C,QAAO,OAAO;EAAC;EAAG;EAAG;EAAG;EAAG;EAAG;EAAE,CAAC,CAAC,CAAC,QAAQ;EAAC;EAAG;EAAG;EAAE,CAAC;CAErD,MAAM,MAAM,EAAE,GAAG,GAAG;AACpB,QAAO,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AAEzC,QAAO,OAAO;EAAC;EAAG;EAAK;EAAM;EAAG;EAAK;EAAK,CAAC,CAAC,CAAC,QAAQ;EAAC;EAAG;EAAK;EAAK,CAAC;EACpE;AAGF,SAAgB,UAAa,KAAmB,MAAqB;CACnE,MAAM,SAAgB,EAAE;AACxB,KAAI,QAAQ,EAAG,QAAO;AACtB,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,KACnC,QAAO,KAAK,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC;AAErC,QAAO;;CAET,SAAW,KAAC,cAAc,EAAA,aAAe;AACvC,QAAO,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACpC,QAAO,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;AACxC,QAAO,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9C,QAAO,UAAU;EAAC;EAAG;EAAG;EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AACtD,QAAO,UAAU;EAAC;EAAG;EAAG;EAAG;EAAG;EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ;EAAC,CAAC,GAAG,EAAE;EAAE,CAAC,GAAG,EAAE;EAAE,CAAC,EAAE;EAAC,CAAC;AACpE,QAAO,UAAU;EAAC;EAAG;EAAG;EAAG;EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC;EAAC;EAAG;EAAG;EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5D,QAAO,UAAU;EAAC;EAAG;EAAG;EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC3C,QAAO,UAAU;EAAC;EAAG;EAAG;EAAE,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;EAC5C;AAEF,SAAgB,cAAc,KAA+B;AAC3D,QAAO,MAAM,QAAQ,IAAI,IAAI,IAAI,OAAO,SAAS,OAAO,SAAS,SAAS;;AAE5E,SAAgB,cAAc,KAA+B;AAC3D,QAAO,MAAM,QAAQ,IAAI,IAAI,IAAI,OAAO,SAAS,OAAO,SAAS,SAAS;;AAE5E,SAAgB,eAAe,KAAgC;AAC7D,QAAO,MAAM,QAAQ,IAAI,IAAI,IAAI,OAAO,SAAS,OAAO,SAAS,UAAU;;AAE7E,SAAgB,cAAc,KAA+B;AAC3D,QAAO,MAAM,QAAQ,IAAI,IAAI,IAAI,OAAO,SAAS,OAAO,SAAS,YAAY,SAAS,KAAK;;CAE7F,SAAW,KAAC,kBAAsB,EAAA,aAAW;AAC3C,QAAO,cAAc,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK;AACpC,QAAO,cAAc;EAAC;EAAG;EAAG;EAAE,CAAC,CAAC,CAAC,KAAK,KAAK;AAC3C,QAAO,eAAe;EAAC;EAAM;EAAO;EAAK,CAAC,CAAC,CAAC,KAAK,KAAK;AACtD,QAAO,cAAc;EAAC,EAAE,GAAG,GAAG;EAAE,EAAE,GAAG,GAAG;EAAE,EAAE,GAAG,GAAG;EAAC,CAAC,CAAC,CAAC,KAAK,KAAK;AAChE,QAAO,cAAc;EAAC;EAAG;EAAG;EAAE,CAAC,CAAC,CAAC,KAAK,MAAM;AAC5C,QAAO,cAAc;EAAC;EAAK;EAAK;EAAI,CAAC,CAAC,CAAC,KAAK,MAAM;AAClD,QAAO,eAAe;EAAC;EAAG;EAAG;EAAE,CAAC,CAAC,CAAC,KAAK,MAAM;AAC7C,QAAO,cAAc;EAAC;EAAG;EAAG;EAAE,CAAC,CAAC,CAAC,KAAK,MAAM;AAC5C,QAAO,cAAc;EAAC,EAAE,GAAG,GAAG;EAAE;EAAM,EAAE,GAAG,GAAG;EAAC,CAAC,CAAC,CAAC,KAAK,MAAM;AAC7D,QAAO,cAAc;EAAC,EAAE,GAAG,GAAG;EAAE;EAAW,EAAE,GAAG,GAAG;EAAC,CAAC,CAAC,CAAC,KAAK,MAAM;EAClE"}
1
+ {"version":3,"file":"arrays.js","names":[],"sources":["../../../src/utils/arrays.tsx"],"sourcesContent":["import { remainder } from \"./math\";\n\nexport function typedIncludes<T extends readonly any[]>(arr: T, item: unknown): item is T[number] {\n return arr.includes(item);\n}\nimport.meta.vitest?.test(\"typedIncludes\", ({ expect }) => {\n const arr = [1, 2, 3] as const;\n expect(typedIncludes(arr, 1)).toBe(true);\n expect(typedIncludes(arr, 4)).toBe(false);\n expect(typedIncludes(arr, \"1\")).toBe(false);\n\n const strArr = [\"a\", \"b\", \"c\"] as const;\n expect(typedIncludes(strArr, \"a\")).toBe(true);\n expect(typedIncludes(strArr, \"d\")).toBe(false);\n});\n\nexport function enumerate<T extends readonly any[]>(arr: T): [number, T[number]][] {\n return arr.map((item, index) => [index, item]);\n}\nimport.meta.vitest?.test(\"enumerate\", ({ expect }) => {\n expect(enumerate([])).toEqual([]);\n expect(enumerate([1, 2, 3])).toEqual([[0, 1], [1, 2], [2, 3]]);\n expect(enumerate([\"a\", \"b\", \"c\"])).toEqual([[0, \"a\"], [1, \"b\"], [2, \"c\"]]);\n});\n\nexport function isShallowEqual(a: readonly any[], b: readonly any[]): boolean {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\nimport.meta.vitest?.test(\"isShallowEqual\", ({ expect }) => {\n expect(isShallowEqual([], [])).toBe(true);\n expect(isShallowEqual([1, 2, 3], [1, 2, 3])).toBe(true);\n expect(isShallowEqual([1, 2, 3], [1, 2, 4])).toBe(false);\n expect(isShallowEqual([1, 2, 3], [1, 2])).toBe(false);\n expect(isShallowEqual([1, 2], [1, 2, 3])).toBe(false);\n // Test with objects (reference equality)\n const obj1 = { a: 1 };\n const obj2 = { a: 1 };\n expect(isShallowEqual([obj1], [obj1])).toBe(true);\n expect(isShallowEqual([obj1], [obj2])).toBe(false);\n});\n\n/**\n * Ponyfill for ES2023's findLastIndex.\n */\nexport function findLastIndex<T>(arr: readonly T[], predicate: (item: T) => boolean): number {\n for (let i = arr.length - 1; i >= 0; i--) {\n if (predicate(arr[i])) return i;\n }\n return -1;\n}\nimport.meta.vitest?.test(\"findLastIndex\", ({ expect }) => {\n expect(findLastIndex([], () => true)).toBe(-1);\n expect(findLastIndex([1, 2, 3, 4, 5], x => x % 2 === 0)).toBe(3); // 4 is at index 3\n expect(findLastIndex([1, 2, 3, 4, 5], x => x > 10)).toBe(-1);\n expect(findLastIndex([1, 2, 3, 2, 1], x => x === 2)).toBe(3);\n expect(findLastIndex([1, 2, 3], x => x === 1)).toBe(0);\n});\n\nexport function groupBy<T extends any, K>(\n arr: Iterable<T>,\n key: (item: T) => K,\n): Map<K, T[]> {\n const result = new Map<K, T[]>;\n for (const item of arr) {\n const k = key(item);\n if (result.get(k) === undefined) result.set(k, []);\n result.get(k)!.push(item);\n }\n return result;\n}\nimport.meta.vitest?.test(\"groupBy\", ({ expect }) => {\n expect(groupBy([], (x) => x)).toEqual(new Map());\n\n const numbers = [1, 2, 3, 4, 5, 6];\n const grouped = groupBy(numbers, (n) => n % 2 === 0 ? \"even\" : \"odd\");\n expect(grouped.get(\"even\")).toEqual([2, 4, 6]);\n expect(grouped.get(\"odd\")).toEqual([1, 3, 5]);\n\n // Check the actual lengths of the words to ensure our test is correct\n const words = [\"apple\", \"banana\", \"cherry\", \"date\", \"elderberry\"];\n\n const byLength = groupBy(words, (w) => w.length);\n // Adjust expectations based on actual word lengths\n expect(byLength.get(5)).toEqual([\"apple\"]);\n expect(byLength.get(6)).toEqual([\"banana\", \"cherry\"]);\n expect(byLength.get(4)).toEqual([\"date\"]);\n expect(byLength.get(10)).toEqual([\"elderberry\"]);\n});\n\nexport function range(endExclusive: number): number[];\nexport function range(startInclusive: number, endExclusive: number): number[];\nexport function range(startInclusive: number, endExclusive: number, step: number): number[];\nexport function range(startInclusive: number, endExclusive?: number, step?: number): number[] {\n if (endExclusive === undefined) {\n endExclusive = startInclusive;\n startInclusive = 0;\n }\n if (step === undefined) step = 1;\n\n const result = [];\n for (let i = startInclusive; step > 0 ? (i < endExclusive) : (i > endExclusive); i += step) {\n result.push(i);\n }\n return result;\n}\nimport.meta.vitest?.test(\"range\", ({ expect }) => {\n expect(range(5)).toEqual([0, 1, 2, 3, 4]);\n expect(range(2, 5)).toEqual([2, 3, 4]);\n expect(range(1, 10, 2)).toEqual([1, 3, 5, 7, 9]);\n expect(range(5, 0, -1)).toEqual([5, 4, 3, 2, 1]);\n expect(range(0, 0)).toEqual([]);\n expect(range(0, 10, 3)).toEqual([0, 3, 6, 9]);\n});\n\n\nexport function rotateLeft(arr: readonly any[], n: number): any[] {\n if (arr.length === 0) return [];\n const index = remainder(n, arr.length);\n return [...arr.slice(index), ...arr.slice(0, index)];\n}\nimport.meta.vitest?.test(\"rotateLeft\", ({ expect }) => {\n expect(rotateLeft([], 1)).toEqual([]);\n expect(rotateLeft([1, 2, 3, 4, 5], 0)).toEqual([1, 2, 3, 4, 5]);\n expect(rotateLeft([1, 2, 3, 4, 5], 1)).toEqual([2, 3, 4, 5, 1]);\n expect(rotateLeft([1, 2, 3, 4, 5], 3)).toEqual([4, 5, 1, 2, 3]);\n expect(rotateLeft([1, 2, 3, 4, 5], 5)).toEqual([1, 2, 3, 4, 5]);\n expect(rotateLeft([1, 2, 3, 4, 5], 6)).toEqual([2, 3, 4, 5, 1]);\n});\n\nexport function rotateRight(arr: readonly any[], n: number): any[] {\n return rotateLeft(arr, -n);\n}\nimport.meta.vitest?.test(\"rotateRight\", ({ expect }) => {\n expect(rotateRight([], 1)).toEqual([]);\n expect(rotateRight([1, 2, 3, 4, 5], 0)).toEqual([1, 2, 3, 4, 5]);\n expect(rotateRight([1, 2, 3, 4, 5], 1)).toEqual([5, 1, 2, 3, 4]);\n expect(rotateRight([1, 2, 3, 4, 5], 3)).toEqual([3, 4, 5, 1, 2]);\n expect(rotateRight([1, 2, 3, 4, 5], 5)).toEqual([1, 2, 3, 4, 5]);\n expect(rotateRight([1, 2, 3, 4, 5], 6)).toEqual([5, 1, 2, 3, 4]);\n});\n\n\nexport function shuffle<T>(arr: readonly T[]): T[] {\n const result = [...arr];\n for (let i = result.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [result[i], result[j]] = [result[j], result[i]];\n }\n return result;\n}\nimport.meta.vitest?.test(\"shuffle\", ({ expect }) => {\n // Test empty array\n expect(shuffle([])).toEqual([]);\n\n // Test single element array\n expect(shuffle([1])).toEqual([1]);\n\n // Test that shuffle returns a new array\n const original = [1, 2, 3, 4, 5];\n const shuffled = shuffle(original);\n expect(shuffled).not.toBe(original);\n\n // Test that all elements are preserved\n expect(shuffled.sort((a, b) => a - b)).toEqual(original);\n\n // Test with a larger array to ensure randomness\n // This is a probabilistic test, but it's very unlikely to fail\n const large = Array.from({ length: 100 }, (_, i) => i);\n const shuffledLarge = shuffle(large);\n expect(shuffledLarge).not.toEqual(large);\n expect(shuffledLarge.sort((a, b) => a - b)).toEqual(large);\n});\n\n\nexport function outerProduct<T, U>(arr1: readonly T[], arr2: readonly U[]): [T, U][] {\n return arr1.flatMap((item1) => arr2.map((item2) => [item1, item2] as [T, U]));\n}\nimport.meta.vitest?.test(\"outerProduct\", ({ expect }) => {\n expect(outerProduct([], [])).toEqual([]);\n expect(outerProduct([1], [])).toEqual([]);\n expect(outerProduct([], [1])).toEqual([]);\n expect(outerProduct([1], [2])).toEqual([[1, 2]]);\n expect(outerProduct([1, 2], [3, 4])).toEqual([[1, 3], [1, 4], [2, 3], [2, 4]]);\n expect(outerProduct([\"a\", \"b\"], [1, 2])).toEqual([[\"a\", 1], [\"a\", 2], [\"b\", 1], [\"b\", 2]]);\n});\n\nexport function unique<T>(arr: readonly T[]): T[] {\n return [...new Set(arr)];\n}\nimport.meta.vitest?.test(\"unique\", ({ expect }) => {\n expect(unique([])).toEqual([]);\n expect(unique([1, 2, 3])).toEqual([1, 2, 3]);\n expect(unique([1, 2, 2, 3, 1, 3])).toEqual([1, 2, 3]);\n // Test with objects (reference equality)\n const obj = { a: 1 };\n expect(unique([obj, obj])).toEqual([obj]);\n // Test with different types\n expect(unique([1, \"1\", true, 1, \"1\", true])).toEqual([1, \"1\", true]);\n});\n\n\nexport function getChunks<T>(arr: readonly T[], size: number): T[][] {\n const result: T[][] = [];\n if (size <= 0) return result;\n for (let i = 0; i < arr.length; i += size) {\n result.push(arr.slice(i, i + size));\n }\n return result;\n}\nimport.meta.vitest?.test(\"getChunks\", ({ expect }) => {\n expect(getChunks([], 2)).toEqual([]);\n expect(getChunks([1], 2)).toEqual([[1]]);\n expect(getChunks([1, 2], 2)).toEqual([[1, 2]]);\n expect(getChunks([1, 2, 3], 2)).toEqual([[1, 2], [3]]);\n expect(getChunks([1, 2, 3, 4, 5], 2)).toEqual([[1, 2], [3, 4], [5]]);\n expect(getChunks([1, 2, 3, 4], 3)).toEqual([[1, 2, 3], [4]]);\n expect(getChunks([1, 2, 3], 0)).toEqual([]);\n expect(getChunks([1, 2, 3], -1)).toEqual([]);\n});\n\nexport function isStringArray(arr: unknown): arr is string[] {\n return Array.isArray(arr) && arr.every((item) => typeof item === \"string\");\n}\nexport function isNumberArray(arr: unknown): arr is number[] {\n return Array.isArray(arr) && arr.every((item) => typeof item === \"number\");\n}\nexport function isBooleanArray(arr: unknown): arr is boolean[] {\n return Array.isArray(arr) && arr.every((item) => typeof item === \"boolean\");\n}\nexport function isObjectArray(arr: unknown): arr is object[] {\n return Array.isArray(arr) && arr.every((item) => typeof item === \"object\" && item !== null);\n}\nimport.meta.vitest?.test(\"is<Type>Array\", ({ expect }) => {\n expect(isStringArray([])).toBe(true);\n expect(isNumberArray([1, 2, 3])).toBe(true);\n expect(isBooleanArray([true, false, true])).toBe(true);\n expect(isObjectArray([{ a: 1 }, { b: 2 }, { c: 3 }])).toBe(true);\n expect(isStringArray([1, 2, 3])).toBe(false);\n expect(isNumberArray([\"a\", \"b\", \"c\"])).toBe(false);\n expect(isBooleanArray([1, 2, 3])).toBe(false);\n expect(isObjectArray([1, 2, 3])).toBe(false);\n expect(isObjectArray([{ a: 1 }, null, { b: 2 }])).toBe(false);\n expect(isObjectArray([{ a: 1 }, undefined, { b: 2 }])).toBe(false);\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth-methods.d.ts","names":[],"sources":["../../../src/utils/auth-methods.ts"],"mappings":";cAAa,sBAAA;AAAA,KAOD,gBAAA,UAA0B,sBAAA"}
1
+ {"version":3,"file":"auth-methods.d.ts","names":[],"sources":["../../../src/utils/auth-methods.ts"],"mappings":";cAAa,sBAAA;AAAA,KAOD,gBAAA,UAA0B,sBAAsB"}
@@ -5,7 +5,7 @@ const signUpAuthMethodValues = [
5
5
  "oauth",
6
6
  "passkey"
7
7
  ];
8
-
9
8
  //#endregion
10
9
  export { signUpAuthMethodValues };
10
+
11
11
  //# sourceMappingURL=auth-methods.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-methods.js","names":[],"sources":["../../../src/utils/auth-methods.ts"],"sourcesContent":["export const signUpAuthMethodValues = [\n \"password\",\n \"otp\",\n \"oauth\",\n \"passkey\",\n] as const;\n\nexport type SignUpAuthMethod = typeof signUpAuthMethodValues[number];\n"],"mappings":";AAAA,MAAa,yBAAyB;CACpC;CACA;CACA;CACA;CACD"}
1
+ {"version":3,"file":"auth-methods.js","names":[],"sources":["../../../src/utils/auth-methods.ts"],"sourcesContent":["export const signUpAuthMethodValues = [\n \"password\",\n \"otp\",\n \"oauth\",\n \"passkey\",\n] as const;\n\nexport type SignUpAuthMethod = typeof signUpAuthMethodValues[number];\n"],"mappings":";AAAA,MAAa,yBAAyB;CACpC;CACA;CACA;CACA;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"base64.d.ts","names":[],"sources":["../../../src/utils/base64.tsx"],"mappings":";iBAAgB,YAAA,CAAa,IAAA,EAAM,IAAA,GAAO,OAAA;AAAA,iBAS1B,mBAAA,CAAoB,MAAA"}
1
+ {"version":3,"file":"base64.d.ts","names":[],"sources":["../../../src/utils/base64.tsx"],"mappings":";iBAAgB,YAAA,CAAa,IAAA,EAAM,IAAA,GAAO,OAAO;AAAA,iBASjC,mBAAA,CAAoB,MAAc"}
@@ -10,16 +10,7 @@ function fileToBase64(file) {
10
10
  function validateBase64Image(base64) {
11
11
  return /^data:image\/(png|jpg|jpeg|gif|bmp|webp);base64,[A-Za-z0-9+/]+={0,2}$|^[A-Za-z0-9+/]+={0,2}$/.test(base64);
12
12
  }
13
- (void 0)?.test("validateBase64Image", ({ expect }) => {
14
- expect(validateBase64Image("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg==")).toBe(true);
15
- expect(validateBase64Image("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAABAAEDASIAAhEBAxEB/8QAHwAAAQUBA")).toBe(true);
16
- expect(validateBase64Image("ABC123")).toBe(true);
17
- expect(validateBase64Image("data:text/plain;base64,SGVsbG8gV29ybGQ=")).toBe(false);
18
- expect(validateBase64Image("data:image/png;base64,invalid!base64")).toBe(false);
19
- expect(validateBase64Image("not a base64 string")).toBe(false);
20
- expect(validateBase64Image("")).toBe(false);
21
- });
22
-
23
13
  //#endregion
24
14
  export { fileToBase64, validateBase64Image };
15
+
25
16
  //# sourceMappingURL=base64.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base64.js","names":[],"sources":["../../../src/utils/base64.tsx"],"sourcesContent":["export function fileToBase64(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = error => reject(error);\n });\n}\n\nexport function validateBase64Image(base64: string): boolean {\n const base64ImageRegex = /^data:image\\/(png|jpg|jpeg|gif|bmp|webp);base64,[A-Za-z0-9+/]+={0,2}$|^[A-Za-z0-9+/]+={0,2}$/;\n return base64ImageRegex.test(base64);\n}\nimport.meta.vitest?.test(\"validateBase64Image\", ({ expect }) => {\n // Valid base64 image strings\n expect(validateBase64Image(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg==\")).toBe(true);\n expect(validateBase64Image(\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAABAAEDASIAAhEBAxEB/8QAHwAAAQUBA\")).toBe(true);\n expect(validateBase64Image(\"ABC123\")).toBe(true);\n // Invalid base64 image strings\n expect(validateBase64Image(\"data:text/plain;base64,SGVsbG8gV29ybGQ=\")).toBe(false);\n expect(validateBase64Image(\"data:image/png;base64,invalid!base64\")).toBe(false);\n expect(validateBase64Image(\"not a base64 string\")).toBe(false);\n expect(validateBase64Image(\"\")).toBe(false);\n});\n"],"mappings":";AAAA,SAAgB,aAAa,MAA6B;AACxD,QAAO,IAAI,SAAS,SAAS,WAAW;EACtC,MAAM,SAAS,IAAI,YAAY;AAC/B,SAAO,cAAc,KAAK;AAC1B,SAAO,eAAe,QAAQ,OAAO,OAAiB;AACtD,SAAO,WAAU,UAAS,OAAO,MAAM;GACvC;;AAGJ,SAAgB,oBAAoB,QAAyB;AAE3D,QADyB,+FACD,KAAK,OAAO;;CAEtC,SAAW,KAAC,wBAAc,EAAA,aAAyB;AAEjD,QAAO,oBAAoB,yHAAyH,CAAC,CAAC,KAAK,KAAK;AAChK,QAAO,oBAAoB,mRAAmR,CAAC,CAAC,KAAK,KAAK;AAC1T,QAAO,oBAAoB,SAAS,CAAC,CAAC,KAAK,KAAK;AAEhD,QAAO,oBAAoB,0CAA0C,CAAC,CAAC,KAAK,MAAM;AAClF,QAAO,oBAAoB,uCAAuC,CAAC,CAAC,KAAK,MAAM;AAC/E,QAAO,oBAAoB,sBAAsB,CAAC,CAAC,KAAK,MAAM;AAC9D,QAAO,oBAAoB,GAAG,CAAC,CAAC,KAAK,MAAM;EAC3C"}
1
+ {"version":3,"file":"base64.js","names":[],"sources":["../../../src/utils/base64.tsx"],"sourcesContent":["export function fileToBase64(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = error => reject(error);\n });\n}\n\nexport function validateBase64Image(base64: string): boolean {\n const base64ImageRegex = /^data:image\\/(png|jpg|jpeg|gif|bmp|webp);base64,[A-Za-z0-9+/]+={0,2}$|^[A-Za-z0-9+/]+={0,2}$/;\n return base64ImageRegex.test(base64);\n}\nimport.meta.vitest?.test(\"validateBase64Image\", ({ expect }) => {\n // Valid base64 image strings\n expect(validateBase64Image(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg==\")).toBe(true);\n expect(validateBase64Image(\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAABAAEDASIAAhEBAxEB/8QAHwAAAQUBA\")).toBe(true);\n expect(validateBase64Image(\"ABC123\")).toBe(true);\n // Invalid base64 image strings\n expect(validateBase64Image(\"data:text/plain;base64,SGVsbG8gV29ybGQ=\")).toBe(false);\n expect(validateBase64Image(\"data:image/png;base64,invalid!base64\")).toBe(false);\n expect(validateBase64Image(\"not a base64 string\")).toBe(false);\n expect(validateBase64Image(\"\")).toBe(false);\n});\n"],"mappings":";AAAA,SAAgB,aAAa,MAA6B;CACxD,OAAO,IAAI,SAAS,SAAS,WAAW;EACtC,MAAM,SAAS,IAAI,WAAW;EAC9B,OAAO,cAAc,IAAI;EACzB,OAAO,eAAe,QAAQ,OAAO,MAAgB;EACrD,OAAO,WAAU,UAAS,OAAO,KAAK;CACxC,CAAC;AACH;AAEA,SAAgB,oBAAoB,QAAyB;CAE3D,OAAO,+FAAiB,KAAK,MAAM;AACrC"}
@@ -1 +1 @@
1
- {"version":3,"file":"booleans.d.ts","names":[],"sources":["../../../src/utils/booleans.tsx"],"mappings":";KAAY,MAAA,MAAY,CAAA;AAAA,KACZ,KAAA,MAAW,CAAA;AAAA,iBAEP,QAAA,GAAA,CAAY,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,CAAA,GAAI,MAAA,CAAO,CAAA;AAAA,iBAgB3C,OAAA,GAAA,CAAW,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,CAAA,GAAI,KAAA,CAAM,CAAA"}
1
+ {"version":3,"file":"booleans.d.ts","names":[],"sources":["../../../src/utils/booleans.tsx"],"mappings":";KAAY,MAAA,MAAY,CAAC;AAAA,KACb,KAAA,MAAW,CAAC;AAAA,iBAER,QAAA,IAAY,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,CAAA,GAAI,MAAA,CAAO,CAAA;AAAA,iBAgB3C,OAAA,IAAW,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,CAAA,GAAI,KAAA,CAAM,CAAA"}
@@ -2,34 +2,10 @@
2
2
  function isTruthy(value) {
3
3
  return !!value;
4
4
  }
5
- (void 0)?.test("isTruthy", ({ expect }) => {
6
- expect(isTruthy(true)).toBe(true);
7
- expect(isTruthy(1)).toBe(true);
8
- expect(isTruthy("hello")).toBe(true);
9
- expect(isTruthy({})).toBe(true);
10
- expect(isTruthy([])).toBe(true);
11
- expect(isTruthy(false)).toBe(false);
12
- expect(isTruthy(0)).toBe(false);
13
- expect(isTruthy("")).toBe(false);
14
- expect(isTruthy(null)).toBe(false);
15
- expect(isTruthy(void 0)).toBe(false);
16
- });
17
5
  function isFalsy(value) {
18
6
  return !value;
19
7
  }
20
- (void 0)?.test("isFalsy", ({ expect }) => {
21
- expect(isFalsy(false)).toBe(true);
22
- expect(isFalsy(0)).toBe(true);
23
- expect(isFalsy("")).toBe(true);
24
- expect(isFalsy(null)).toBe(true);
25
- expect(isFalsy(void 0)).toBe(true);
26
- expect(isFalsy(true)).toBe(false);
27
- expect(isFalsy(1)).toBe(false);
28
- expect(isFalsy("hello")).toBe(false);
29
- expect(isFalsy({})).toBe(false);
30
- expect(isFalsy([])).toBe(false);
31
- });
32
-
33
8
  //#endregion
34
9
  export { isFalsy, isTruthy };
10
+
35
11
  //# sourceMappingURL=booleans.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"booleans.js","names":[],"sources":["../../../src/utils/booleans.tsx"],"sourcesContent":["export type Truthy<T> = T extends null | undefined | 0 | \"\" | false ? false : true;\nexport type Falsy<T> = T extends null | undefined | 0 | \"\" | false ? true : false;\n\nexport function isTruthy<T>(value: T): value is T & Truthy<T> {\n return !!value;\n}\nimport.meta.vitest?.test(\"isTruthy\", ({ expect }) => {\n expect(isTruthy(true)).toBe(true);\n expect(isTruthy(1)).toBe(true);\n expect(isTruthy(\"hello\")).toBe(true);\n expect(isTruthy({})).toBe(true);\n expect(isTruthy([])).toBe(true);\n expect(isTruthy(false)).toBe(false);\n expect(isTruthy(0)).toBe(false);\n expect(isTruthy(\"\")).toBe(false);\n expect(isTruthy(null)).toBe(false);\n expect(isTruthy(undefined)).toBe(false);\n});\n\nexport function isFalsy<T>(value: T): value is T & Falsy<T> {\n return !value;\n}\nimport.meta.vitest?.test(\"isFalsy\", ({ expect }) => {\n expect(isFalsy(false)).toBe(true);\n expect(isFalsy(0)).toBe(true);\n expect(isFalsy(\"\")).toBe(true);\n expect(isFalsy(null)).toBe(true);\n expect(isFalsy(undefined)).toBe(true);\n expect(isFalsy(true)).toBe(false);\n expect(isFalsy(1)).toBe(false);\n expect(isFalsy(\"hello\")).toBe(false);\n expect(isFalsy({})).toBe(false);\n expect(isFalsy([])).toBe(false);\n});\n"],"mappings":";AAGA,SAAgB,SAAY,OAAkC;AAC5D,QAAO,CAAC,CAAC;;CAEX,SAAW,KAAC,aAAc,EAAA,aAAc;AACtC,QAAO,SAAS,KAAK,CAAC,CAAC,KAAK,KAAK;AACjC,QAAO,SAAS,EAAE,CAAC,CAAC,KAAK,KAAK;AAC9B,QAAO,SAAS,QAAQ,CAAC,CAAC,KAAK,KAAK;AACpC,QAAO,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK;AAC/B,QAAO,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK;AAC/B,QAAO,SAAS,MAAM,CAAC,CAAC,KAAK,MAAM;AACnC,QAAO,SAAS,EAAE,CAAC,CAAC,KAAK,MAAM;AAC/B,QAAO,SAAS,GAAG,CAAC,CAAC,KAAK,MAAM;AAChC,QAAO,SAAS,KAAK,CAAC,CAAC,KAAK,MAAM;AAClC,QAAO,SAAS,OAAU,CAAC,CAAC,KAAK,MAAM;EACvC;AAEF,SAAgB,QAAW,OAAiC;AAC1D,QAAO,CAAC;;CAEV,SAAW,KAAC,YAAc,EAAA,aAAa;AACrC,QAAO,QAAQ,MAAM,CAAC,CAAC,KAAK,KAAK;AACjC,QAAO,QAAQ,EAAE,CAAC,CAAC,KAAK,KAAK;AAC7B,QAAO,QAAQ,GAAG,CAAC,CAAC,KAAK,KAAK;AAC9B,QAAO,QAAQ,KAAK,CAAC,CAAC,KAAK,KAAK;AAChC,QAAO,QAAQ,OAAU,CAAC,CAAC,KAAK,KAAK;AACrC,QAAO,QAAQ,KAAK,CAAC,CAAC,KAAK,MAAM;AACjC,QAAO,QAAQ,EAAE,CAAC,CAAC,KAAK,MAAM;AAC9B,QAAO,QAAQ,QAAQ,CAAC,CAAC,KAAK,MAAM;AACpC,QAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM;AAC/B,QAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM;EAC/B"}
1
+ {"version":3,"file":"booleans.js","names":[],"sources":["../../../src/utils/booleans.tsx"],"sourcesContent":["export type Truthy<T> = T extends null | undefined | 0 | \"\" | false ? false : true;\nexport type Falsy<T> = T extends null | undefined | 0 | \"\" | false ? true : false;\n\nexport function isTruthy<T>(value: T): value is T & Truthy<T> {\n return !!value;\n}\nimport.meta.vitest?.test(\"isTruthy\", ({ expect }) => {\n expect(isTruthy(true)).toBe(true);\n expect(isTruthy(1)).toBe(true);\n expect(isTruthy(\"hello\")).toBe(true);\n expect(isTruthy({})).toBe(true);\n expect(isTruthy([])).toBe(true);\n expect(isTruthy(false)).toBe(false);\n expect(isTruthy(0)).toBe(false);\n expect(isTruthy(\"\")).toBe(false);\n expect(isTruthy(null)).toBe(false);\n expect(isTruthy(undefined)).toBe(false);\n});\n\nexport function isFalsy<T>(value: T): value is T & Falsy<T> {\n return !value;\n}\nimport.meta.vitest?.test(\"isFalsy\", ({ expect }) => {\n expect(isFalsy(false)).toBe(true);\n expect(isFalsy(0)).toBe(true);\n expect(isFalsy(\"\")).toBe(true);\n expect(isFalsy(null)).toBe(true);\n expect(isFalsy(undefined)).toBe(true);\n expect(isFalsy(true)).toBe(false);\n expect(isFalsy(1)).toBe(false);\n expect(isFalsy(\"hello\")).toBe(false);\n expect(isFalsy({})).toBe(false);\n expect(isFalsy([])).toBe(false);\n});\n"],"mappings":";AAGA,SAAgB,SAAY,OAAkC;CAC5D,OAAO,CAAC,CAAC;AACX;AAcA,SAAgB,QAAW,OAAiC;CAC1D,OAAO,CAAC;AACV"}
@@ -1 +1 @@
1
- {"version":3,"file":"browser-compat.d.ts","names":[],"sources":["../../../src/utils/browser-compat.tsx"],"mappings":";iBAAgB,6BAAA,CAAA"}
1
+ {"version":3,"file":"browser-compat.d.ts","names":[],"sources":["../../../src/utils/browser-compat.tsx"],"mappings":";iBAAgB,6BAAA"}
@@ -15,7 +15,7 @@ function getBrowserCompatibilityReport() {
15
15
  cryptoUuid: test("crypto.randomUUID()")
16
16
  };
17
17
  }
18
-
19
18
  //#endregion
20
19
  export { getBrowserCompatibilityReport };
20
+
21
21
  //# sourceMappingURL=browser-compat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-compat.js","names":[],"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,SAAgB,gCAAgC;CAC9C,MAAM,QAAQ,YAAoB;AAChC,MAAI;AACF,IAAC,GAAG,MAAM,QAAQ;AAClB,UAAO;WACA,GAAG;AACV,UAAO,WAAW;;;AAItB,QAAO;EACL,kBAAkB,KAAK,aAAa;EACpC,mBAAmB,KAAK,SAAS;EACjC,SAAS,KAAK,kBAAkB;EAChC,YAAY,KAAK,sBAAsB;EACxC"}
1
+ {"version":3,"file":"browser-compat.js","names":[],"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,SAAgB,gCAAgC;CAC9C,MAAM,QAAQ,YAAoB;EAChC,IAAI;GACF,CAAC,GAAG,KAAA,CAAM,OAAO;GACjB,OAAO;EACT,SAAS,GAAG;GACV,OAAO,WAAW;EACpB;CACF;CAEA,OAAO;EACL,kBAAkB,KAAK,YAAY;EACnC,mBAAmB,KAAK,QAAQ;EAChC,SAAS,KAAK,iBAAiB;EAC/B,YAAY,KAAK,qBAAqB;CACxC;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"bytes.d.ts","names":[],"sources":["../../../src/utils/bytes.tsx"],"mappings":";iBASgB,WAAA,CAAY,KAAA,EAAO,UAAA;AAAA,iBAYnB,2BAAA,CAA4B,KAAA;AAAA,iBAY5B,2BAAA,CAA4B,SAAA;AAAA,iBAgB5B,YAAA,CAAa,KAAA,EAAO,UAAA;AAAA,iBA+BpB,YAAA,CAAa,KAAA,WAAgB,UAAA,CAAW,WAAA;AAAA,iBAiCxC,YAAA,CAAa,KAAA,EAAO,UAAA;AAAA,iBAIpB,YAAA,CAAa,KAAA,WAAgB,UAAA,CAAW,WAAA;AAAA,iBAsDxC,eAAA,CAAgB,KAAA,EAAO,UAAA;AAAA,iBAQvB,eAAA,CAAgB,KAAA,WAAgB,UAAA,CAAW,WAAA;AAAA,iBA+B3C,uBAAA,CAAwB,KAAA,WAAgB,UAAA,CAAW,WAAA;AAAA,iBAwBnD,QAAA,CAAS,KAAA;AAAA,iBAmBT,QAAA,CAAS,KAAA;AAAA,iBAaT,WAAA,CAAY,KAAA"}
1
+ {"version":3,"file":"bytes.d.ts","names":[],"sources":["../../../src/utils/bytes.tsx"],"mappings":";iBASgB,WAAA,CAAY,KAAiB,EAAV,UAAU;AAAA,iBAY7B,2BAAA,CAA4B,KAAa;AAAA,iBAYzC,2BAAA,CAA4B,SAAiB;AAAA,iBAgB7C,YAAA,CAAa,KAAiB,EAAV,UAAU;AAAA,iBA+B9B,YAAA,CAAa,KAAA,WAAgB,UAAU,CAAC,WAAA;AAAA,iBAiCxC,YAAA,CAAa,KAAiB,EAAV,UAAU;AAAA,iBAI9B,YAAA,CAAa,KAAA,WAAgB,UAAU,CAAC,WAAA;AAAA,iBAsDxC,eAAA,CAAgB,KAAiB,EAAV,UAAU;AAAA,iBAQjC,eAAA,CAAgB,KAAA,WAAgB,UAAU,CAAC,WAAA;AAAA,iBA+B3C,uBAAA,CAAwB,KAAA,WAAgB,UAAU,CAAC,WAAA;AAAA,iBAwBnD,QAAA,CAAS,KAAa;AAAA,iBAmBtB,QAAA,CAAS,KAAa;AAAA,iBAatB,WAAA,CAAY,KAAa"}
@@ -1,8 +1,7 @@
1
1
  import { HexclaveAssertionError } from "./errors.js";
2
-
3
2
  //#region src/utils/bytes.tsx
4
3
  const crockfordAlphabet = "0123456789ABCDEFGHJKMNPQRSTVWXYZ";
5
- const crockfordReplacements = new Map([
4
+ const crockfordReplacements = /* @__PURE__ */ new Map([
6
5
  ["o", "0"],
7
6
  ["i", "1"],
8
7
  ["l", "1"]
@@ -10,38 +9,16 @@ const crockfordReplacements = new Map([
10
9
  function toHexString(input) {
11
10
  return Array.from(input).map((b) => b.toString(16).padStart(2, "0")).join("");
12
11
  }
13
- (void 0)?.test("toHexString", ({ expect }) => {
14
- expect(toHexString(new Uint8Array([]))).toBe("");
15
- expect(toHexString(new Uint8Array([0]))).toBe("00");
16
- expect(toHexString(new Uint8Array([15]))).toBe("0f");
17
- expect(toHexString(new Uint8Array([16]))).toBe("10");
18
- expect(toHexString(new Uint8Array([255]))).toBe("ff");
19
- expect(toHexString(new Uint8Array([
20
- 1,
21
- 2,
22
- 3
23
- ]))).toBe("010203");
24
- });
25
12
  function getBase32CharacterFromIndex(index) {
26
13
  if (index < 0 || index >= 32) throw new HexclaveAssertionError(`Invalid base32 index: ${index}`);
27
14
  return crockfordAlphabet[index];
28
15
  }
29
- (void 0)?.test("getBase32CharacterFromIndex", ({ expect }) => {
30
- expect(getBase32CharacterFromIndex(0)).toBe("0");
31
- expect(getBase32CharacterFromIndex(15)).toBe("F");
32
- expect(() => getBase32CharacterFromIndex(32)).toThrow();
33
- });
34
16
  function getBase32IndexFromCharacter(character) {
35
17
  if (character.length !== 1) throw new HexclaveAssertionError(`Invalid base32 character: ${character}`);
36
18
  const index = crockfordAlphabet.indexOf(character.toUpperCase());
37
19
  if (index === -1) throw new HexclaveAssertionError(`Invalid base32 character: ${character}`);
38
20
  return index;
39
21
  }
40
- (void 0)?.test("getBase32IndexFromCharacter", ({ expect }) => {
41
- expect(getBase32IndexFromCharacter("0")).toBe(0);
42
- expect(getBase32IndexFromCharacter("F")).toBe(15);
43
- expect(() => getBase32IndexFromCharacter("_")).toThrow();
44
- });
45
22
  function encodeBase32(input) {
46
23
  let bits = 0;
47
24
  let value = 0;
@@ -58,14 +35,6 @@ function encodeBase32(input) {
58
35
  if (!isBase32(output)) throw new HexclaveAssertionError("Invalid base32 output; this should never happen");
59
36
  return output;
60
37
  }
61
- (void 0)?.test("encodeBase32", ({ expect }) => {
62
- expect(encodeBase32(new Uint8Array([]))).toBe("");
63
- expect(encodeBase32(new Uint8Array([1]))).toBe("04");
64
- expect(encodeBase32(new Uint8Array([15]))).toBe("1W");
65
- expect(encodeBase32(new Uint8Array([16]))).toBe("20");
66
- expect(encodeBase32(new Uint8Array([255]))).toBe("ZW");
67
- expect(encodeBase32(new Uint8Array([255, 255]))).toBe("ZZZG");
68
- });
69
38
  function decodeBase32(input) {
70
39
  if (!isBase32(input)) throw new HexclaveAssertionError("Invalid base32 string");
71
40
  const output = new Uint8Array(input.length * 5 / 8 | 0);
@@ -86,168 +55,25 @@ function decodeBase32(input) {
86
55
  }
87
56
  return output;
88
57
  }
89
- (void 0)?.test("decodeBase32", ({ expect }) => {
90
- expect(decodeBase32("")).toEqual(new Uint8Array([]));
91
- expect(decodeBase32("00")).toEqual(new Uint8Array([0]));
92
- expect(decodeBase32("1W")).toEqual(new Uint8Array([15]));
93
- expect(decodeBase32("20")).toEqual(new Uint8Array([16]));
94
- expect(decodeBase32("ZW")).toEqual(new Uint8Array([255]));
95
- });
96
58
  function encodeBase64(input) {
97
59
  return btoa([...input].map((b) => String.fromCharCode(b)).join(""));
98
60
  }
99
61
  function decodeBase64(input) {
100
62
  return new Uint8Array(atob(input).split("").map((char) => char.charCodeAt(0)));
101
63
  }
102
- (void 0)?.test("encodeBase64/decodeBase64", ({ expect }) => {
103
- const testCases = [
104
- {
105
- input: new Uint8Array([
106
- 72,
107
- 101,
108
- 108,
109
- 108,
110
- 111
111
- ]),
112
- expected: "SGVsbG8="
113
- },
114
- {
115
- input: new Uint8Array([
116
- 0,
117
- 1,
118
- 2,
119
- 3,
120
- 4
121
- ]),
122
- expected: "AAECAwQ="
123
- },
124
- {
125
- input: new Uint8Array([
126
- 255,
127
- 254,
128
- 253,
129
- 252
130
- ]),
131
- expected: "//79/A=="
132
- },
133
- {
134
- input: new Uint8Array([]),
135
- expected: ""
136
- },
137
- {
138
- input: (() => {
139
- const input = new Uint8Array(3 * 2 ** 24);
140
- for (let i = 0; i < input.length / 3; i++) {
141
- input[3 * i] = Math.floor(i / 256 / 256);
142
- input[3 * i + 1] = Math.floor(i / 256) % 256;
143
- input[3 * i + 2] = i % 256;
144
- }
145
- return input;
146
- })(),
147
- expected: (() => {
148
- const base64Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
149
- const output = [];
150
- for (let i = 0; i < 2 ** 24; i++) output.push(base64Alphabet[Math.floor(i / 64 / 64 / 64)] + base64Alphabet[Math.floor(i / 64 / 64) % 64] + base64Alphabet[Math.floor(i / 64) % 64] + base64Alphabet[i % 64]);
151
- return output.join("");
152
- })()
153
- }
154
- ];
155
- for (const [i, { input, expected }] of testCases.entries()) {
156
- const encoded = encodeBase64(input);
157
- if (encoded !== expected) throw new HexclaveAssertionError(`encodeBase64 test case ${i} failed`);
158
- if (decodeBase64(encoded).some((b, i) => b !== input[i])) throw new HexclaveAssertionError(`decodeBase64 test case ${i} failed`);
159
- }
160
- expect(() => decodeBase64("invalid!")).toThrow();
161
- }, { timeout: 3e4 });
162
64
  function encodeBase64Url(input) {
163
65
  return encodeBase64(input).replace(/=+$/, "").replace(/\+/g, "-").replace(/\//g, "_");
164
66
  }
165
67
  function decodeBase64Url(input) {
166
68
  if (!isBase64Url(input)) throw new HexclaveAssertionError("Invalid base64url string");
167
- if (input === "") return new Uint8Array(0);
69
+ if (input === "") return /* @__PURE__ */ new Uint8Array(0);
168
70
  return decodeBase64(input.replace(/-/g, "+").replace(/_/g, "/") + "====".slice((input.length - 1) % 4 + 1));
169
71
  }
170
- (void 0)?.test("encodeBase64Url/decodeBase64Url", ({ expect }) => {
171
- const testCases = [
172
- {
173
- input: new Uint8Array([
174
- 72,
175
- 101,
176
- 108,
177
- 108,
178
- 111
179
- ]),
180
- expected: "SGVsbG8"
181
- },
182
- {
183
- input: new Uint8Array([
184
- 0,
185
- 1,
186
- 2,
187
- 3,
188
- 4
189
- ]),
190
- expected: "AAECAwQ"
191
- },
192
- {
193
- input: new Uint8Array([
194
- 255,
195
- 254,
196
- 253,
197
- 252
198
- ]),
199
- expected: "__79_A"
200
- },
201
- {
202
- input: new Uint8Array([]),
203
- expected: ""
204
- }
205
- ];
206
- for (const { input, expected } of testCases) {
207
- const encoded = encodeBase64Url(input);
208
- expect(encoded).toBe(expected);
209
- expect(decodeBase64Url(encoded)).toEqual(input);
210
- }
211
- expect(() => decodeBase64Url("invalid!")).toThrow();
212
- });
213
72
  function decodeBase64OrBase64Url(input) {
214
73
  if (isBase64Url(input)) return decodeBase64Url(input);
215
74
  else if (isBase64(input)) return decodeBase64(input);
216
75
  else throw new HexclaveAssertionError("Invalid base64 or base64url string");
217
76
  }
218
- (void 0)?.test("decodeBase64OrBase64Url", ({ expect }) => {
219
- const base64Input = "SGVsbG8gV29ybGQ=";
220
- const base64Expected = new Uint8Array([
221
- 72,
222
- 101,
223
- 108,
224
- 108,
225
- 111,
226
- 32,
227
- 87,
228
- 111,
229
- 114,
230
- 108,
231
- 100
232
- ]);
233
- expect(decodeBase64OrBase64Url(base64Input)).toEqual(base64Expected);
234
- const base64UrlInput = "SGVsbG8gV29ybGQ";
235
- const base64UrlExpected = new Uint8Array([
236
- 72,
237
- 101,
238
- 108,
239
- 108,
240
- 111,
241
- 32,
242
- 87,
243
- 111,
244
- 114,
245
- 108,
246
- 100
247
- ]);
248
- expect(decodeBase64OrBase64Url(base64UrlInput)).toEqual(base64UrlExpected);
249
- expect(() => decodeBase64OrBase64Url("invalid!")).toThrow();
250
- });
251
77
  function isBase32(input) {
252
78
  for (const char of input) {
253
79
  if (char === " ") continue;
@@ -256,35 +82,14 @@ function isBase32(input) {
256
82
  }
257
83
  return true;
258
84
  }
259
- (void 0)?.test("isBase32", ({ expect }) => {
260
- expect(isBase32("0123456789ABCDEFGHJKMNPQRSTVWXYZ")).toBe(true);
261
- expect(isBase32("0OIJ")).toBe(false);
262
- expect(isBase32("ABC DEF")).toBe(true);
263
- expect(isBase32("ABC!")).toBe(false);
264
- expect(isBase32("")).toBe(true);
265
- });
266
85
  function isBase64(input) {
267
86
  return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(input);
268
87
  }
269
- (void 0)?.test("isBase64", ({ expect }) => {
270
- expect(isBase64("SGVsbG8gV29ybGQ=")).toBe(true);
271
- expect(isBase64("SGVsbG8gV29ybGQ")).toBe(false);
272
- expect(isBase64("SGVsbG8gV29ybGQ==")).toBe(false);
273
- expect(isBase64("SGVsbG8!V29ybGQ=")).toBe(false);
274
- expect(isBase64("")).toBe(true);
275
- });
276
88
  function isBase64Url(input) {
277
89
  if (input === "") return true;
278
90
  return /^[0-9a-zA-Z_-]+$/.test(input);
279
91
  }
280
- (void 0)?.test("isBase64Url", ({ expect }) => {
281
- expect(isBase64Url("SGVsbG8gV2 9ybGQ")).toBe(false);
282
- expect(isBase64Url("SGVsbG8_V29ybGQ")).toBe(true);
283
- expect(isBase64Url("SGVsbG8-V29ybGQ")).toBe(true);
284
- expect(isBase64Url("SGVsbG8_V29ybGQ=")).toBe(false);
285
- expect(isBase64Url("")).toBe(true);
286
- });
287
-
288
92
  //#endregion
289
93
  export { decodeBase32, decodeBase64, decodeBase64OrBase64Url, decodeBase64Url, encodeBase32, encodeBase64, encodeBase64Url, getBase32CharacterFromIndex, getBase32IndexFromCharacter, isBase32, isBase64, isBase64Url, toHexString };
94
+
290
95
  //# sourceMappingURL=bytes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bytes.js","names":[],"sources":["../../../src/utils/bytes.tsx"],"sourcesContent":["import { HexclaveAssertionError } 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}\nimport.meta.vitest?.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 HexclaveAssertionError(`Invalid base32 index: ${index}`);\n }\n return crockfordAlphabet[index];\n}\nimport.meta.vitest?.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 HexclaveAssertionError(`Invalid base32 character: ${character}`);\n }\n const index = crockfordAlphabet.indexOf(character.toUpperCase());\n if (index === -1) {\n throw new HexclaveAssertionError(`Invalid base32 character: ${character}`);\n }\n return index;\n}\nimport.meta.vitest?.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 HexclaveAssertionError(\"Invalid base32 output; this should never happen\");\n }\n\n return output;\n}\nimport.meta.vitest?.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<ArrayBuffer> {\n if (!isBase32(input)) {\n throw new HexclaveAssertionError(\"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}\nimport.meta.vitest?.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 return btoa([...input].map((b) => String.fromCharCode(b)).join(\"\"));\n}\n\nexport function decodeBase64(input: string): Uint8Array<ArrayBuffer> {\n return new Uint8Array(atob(input).split(\"\").map((char) => char.charCodeAt(0)));\n}\nimport.meta.vitest?.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 input: (() => {\n // make sure huge inputs are supported; 48MB array of every possible triple-byte combination\n const input = new Uint8Array(3 * (2 ** 24));\n for (let i = 0; i < input.length / 3; i++) {\n input[3 * i] = Math.floor(i / 256 / 256);\n input[3 * i + 1] = Math.floor(i / 256) % 256;\n input[3 * i + 2] = i % 256;\n }\n return input;\n })(),\n expected: (() => {\n const base64Alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n const output = [];\n for (let i = 0; i < 2 ** 24; i++) {\n output.push(\n base64Alphabet[Math.floor(i / 64 / 64 / 64)]\n + base64Alphabet[Math.floor(i / 64 / 64) % 64]\n + base64Alphabet[Math.floor(i / 64) % 64]\n + base64Alphabet[i % 64]\n );\n }\n return output.join(\"\");\n })(),\n },\n ];\n\n for (const [i, { input, expected }] of testCases.entries()) {\n // expect(...) is pretty slow with long inputs, so we throw our own assertions\n const encoded = encodeBase64(input);\n if (encoded !== expected) {\n throw new HexclaveAssertionError(`encodeBase64 test case ${i} failed`);\n }\n const decoded = decodeBase64(encoded);\n if (decoded.some((b, i) => b !== input[i])) {\n throw new HexclaveAssertionError(`decodeBase64 test case ${i} failed`);\n }\n }\n\n // Test invalid input for decodeBase64\n expect(() => decodeBase64(\"invalid!\")).toThrow();\n}, {\n timeout: 30000,\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<ArrayBuffer> {\n if (!isBase64Url(input)) {\n throw new HexclaveAssertionError(\"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}\nimport.meta.vitest?.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<ArrayBuffer> {\n if (isBase64Url(input)) {\n return decodeBase64Url(input);\n } else if (isBase64(input)) {\n return decodeBase64(input);\n } else {\n throw new HexclaveAssertionError(\"Invalid base64 or base64url string\");\n }\n}\nimport.meta.vitest?.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 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}\nimport.meta.vitest?.test(\"isBase32\", ({ expect }) => {\n expect(isBase32(\"0123456789ABCDEFGHJKMNPQRSTVWXYZ\")).toBe(true);\n expect(isBase32(\"0OIJ\")).toBe(false); // O and I are not allowed\n expect(isBase32(\"ABC DEF\")).toBe(true); // Spaces are allowed\n expect(isBase32(\"ABC!\")).toBe(false); // Special characters not allowed\n expect(isBase32(\"\")).toBe(true);\n});\n\nexport function isBase64(input: string): boolean {\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}\nimport.meta.vitest?.test(\"isBase64\", ({ expect }) => {\n expect(isBase64(\"SGVsbG8gV29ybGQ=\")).toBe(true);\n expect(isBase64(\"SGVsbG8gV29ybGQ\")).toBe(false); // No padding\n expect(isBase64(\"SGVsbG8gV29ybGQ==\")).toBe(false); // Wrong padding\n expect(isBase64(\"SGVsbG8!V29ybGQ=\")).toBe(false); // Invalid character\n expect(isBase64(\"\")).toBe(true);\n});\n\nexport function isBase64Url(input: string): boolean {\n if (input === \"\") {\n return true;\n }\n const regex = /^[0-9a-zA-Z_-]+$/;\n return regex.test(input);\n}\nimport.meta.vitest?.test(\"isBase64Url\", ({ expect }) => {\n expect(isBase64Url(\"SGVsbG8gV2 9ybGQ\")).toBe(false); // Space is not valid\n expect(isBase64Url(\"SGVsbG8_V29ybGQ\")).toBe(true); // _ is a valid 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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"}
1
+ {"version":3,"file":"bytes.js","names":[],"sources":["../../../src/utils/bytes.tsx"],"sourcesContent":["import { HexclaveAssertionError } 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}\nimport.meta.vitest?.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 HexclaveAssertionError(`Invalid base32 index: ${index}`);\n }\n return crockfordAlphabet[index];\n}\nimport.meta.vitest?.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 HexclaveAssertionError(`Invalid base32 character: ${character}`);\n }\n const index = crockfordAlphabet.indexOf(character.toUpperCase());\n if (index === -1) {\n throw new HexclaveAssertionError(`Invalid base32 character: ${character}`);\n }\n return index;\n}\nimport.meta.vitest?.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 HexclaveAssertionError(\"Invalid base32 output; this should never happen\");\n }\n\n return output;\n}\nimport.meta.vitest?.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<ArrayBuffer> {\n if (!isBase32(input)) {\n throw new HexclaveAssertionError(\"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}\nimport.meta.vitest?.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 return btoa([...input].map((b) => String.fromCharCode(b)).join(\"\"));\n}\n\nexport function decodeBase64(input: string): Uint8Array<ArrayBuffer> {\n return new Uint8Array(atob(input).split(\"\").map((char) => char.charCodeAt(0)));\n}\nimport.meta.vitest?.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 input: (() => {\n // make sure huge inputs are supported; 48MB array of every possible triple-byte combination\n const input = new Uint8Array(3 * (2 ** 24));\n for (let i = 0; i < input.length / 3; i++) {\n input[3 * i] = Math.floor(i / 256 / 256);\n input[3 * i + 1] = Math.floor(i / 256) % 256;\n input[3 * i + 2] = i % 256;\n }\n return input;\n })(),\n expected: (() => {\n const base64Alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n const output = [];\n for (let i = 0; i < 2 ** 24; i++) {\n output.push(\n base64Alphabet[Math.floor(i / 64 / 64 / 64)]\n + base64Alphabet[Math.floor(i / 64 / 64) % 64]\n + base64Alphabet[Math.floor(i / 64) % 64]\n + base64Alphabet[i % 64]\n );\n }\n return output.join(\"\");\n })(),\n },\n ];\n\n for (const [i, { input, expected }] of testCases.entries()) {\n // expect(...) is pretty slow with long inputs, so we throw our own assertions\n const encoded = encodeBase64(input);\n if (encoded !== expected) {\n throw new HexclaveAssertionError(`encodeBase64 test case ${i} failed`);\n }\n const decoded = decodeBase64(encoded);\n if (decoded.some((b, i) => b !== input[i])) {\n throw new HexclaveAssertionError(`decodeBase64 test case ${i} failed`);\n }\n }\n\n // Test invalid input for decodeBase64\n expect(() => decodeBase64(\"invalid!\")).toThrow();\n}, {\n timeout: 30000,\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<ArrayBuffer> {\n if (!isBase64Url(input)) {\n throw new HexclaveAssertionError(\"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}\nimport.meta.vitest?.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<ArrayBuffer> {\n if (isBase64Url(input)) {\n return decodeBase64Url(input);\n } else if (isBase64(input)) {\n return decodeBase64(input);\n } else {\n throw new HexclaveAssertionError(\"Invalid base64 or base64url string\");\n }\n}\nimport.meta.vitest?.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 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}\nimport.meta.vitest?.test(\"isBase32\", ({ expect }) => {\n expect(isBase32(\"0123456789ABCDEFGHJKMNPQRSTVWXYZ\")).toBe(true);\n expect(isBase32(\"0OIJ\")).toBe(false); // O and I are not allowed\n expect(isBase32(\"ABC DEF\")).toBe(true); // Spaces are allowed\n expect(isBase32(\"ABC!\")).toBe(false); // Special characters not allowed\n expect(isBase32(\"\")).toBe(true);\n});\n\nexport function isBase64(input: string): boolean {\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}\nimport.meta.vitest?.test(\"isBase64\", ({ expect }) => {\n expect(isBase64(\"SGVsbG8gV29ybGQ=\")).toBe(true);\n expect(isBase64(\"SGVsbG8gV29ybGQ\")).toBe(false); // No padding\n expect(isBase64(\"SGVsbG8gV29ybGQ==\")).toBe(false); // Wrong padding\n expect(isBase64(\"SGVsbG8!V29ybGQ=\")).toBe(false); // Invalid character\n expect(isBase64(\"\")).toBe(true);\n});\n\nexport function isBase64Url(input: string): boolean {\n if (input === \"\") {\n return true;\n }\n const regex = /^[0-9a-zA-Z_-]+$/;\n return regex.test(input);\n}\nimport.meta.vitest?.test(\"isBase64Url\", ({ expect }) => {\n expect(isBase64Url(\"SGVsbG8gV2 9ybGQ\")).toBe(false); // Space is not valid\n expect(isBase64Url(\"SGVsbG8_V29ybGQ\")).toBe(true); // _ is a valid 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":";;AAEA,MAAM,oBAAoB;AAC1B,MAAM,wCAAwB,IAAI,IAAI;CACpC,CAAC,KAAK,GAAG;CACT,CAAC,KAAK,GAAG;CACT,CAAC,KAAK,GAAG;AACX,CAAC;AAED,SAAgB,YAAY,OAA2B;CACrD,OAAO,MAAM,KAAK,KAAK,CAAC,CAAC,KAAI,MAAK,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;AAC5E;AAUA,SAAgB,4BAA4B,OAAuB;CACjE,IAAI,QAAQ,KAAK,SAAS,IACxB,MAAM,IAAI,uBAAuB,yBAAyB,OAAO;CAEnE,OAAO,kBAAkB;AAC3B;AAOA,SAAgB,4BAA4B,WAA2B;CACrE,IAAI,UAAU,WAAW,GACvB,MAAM,IAAI,uBAAuB,6BAA6B,WAAW;CAE3E,MAAM,QAAQ,kBAAkB,QAAQ,UAAU,YAAY,CAAC;CAC/D,IAAI,UAAU,IACZ,MAAM,IAAI,uBAAuB,6BAA6B,WAAW;CAE3E,OAAO;AACT;AAOA,SAAgB,aAAa,OAA2B;CACtD,IAAI,OAAO;CACX,IAAI,QAAQ;CACZ,IAAI,SAAS;CACb,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;EACrC,QAAS,SAAS,IAAK,MAAM;EAC7B,QAAQ;EACR,OAAO,QAAQ,GAAG;GAChB,UAAU,4BAA6B,UAAW,OAAO,IAAM,EAAE;GACjE,QAAQ;EACV;CACF;CACA,IAAI,OAAO,GACT,UAAU,4BAA6B,SAAU,IAAI,OAAS,EAAE;CAIlE,IAAI,CAAC,SAAS,MAAM,GAClB,MAAM,IAAI,uBAAuB,iDAAiD;CAGpF,OAAO;AACT;AASA,SAAgB,aAAa,OAAwC;CACnE,IAAI,CAAC,SAAS,KAAK,GACjB,MAAM,IAAI,uBAAuB,uBAAuB;CAG1D,MAAM,SAAS,IAAI,WAAY,MAAM,SAAS,IAAI,IAAK,CAAC;CACxD,IAAI,OAAO;CACX,IAAI,QAAQ;CACZ,IAAI,cAAc;CAClB,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;EACrC,IAAI,OAAO,MAAM,EAAE,CAAC,YAAY;EAChC,IAAI,SAAS,KAAK;EAClB,IAAI,sBAAsB,IAAI,IAAI,GAChC,OAAO,sBAAsB,IAAI,IAAI;EAEvC,MAAM,QAAQ,4BAA4B,IAAI;EAC9C,QAAS,SAAS,IAAK;EACvB,QAAQ;EACR,IAAI,QAAQ,GAAG;GACb,OAAO,iBAAkB,UAAW,OAAO,IAAM;GACjD,QAAQ;EACV;CACF;CACA,OAAO;AACT;AASA,SAAgB,aAAa,OAA2B;CACtD,OAAO,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACpE;AAEA,SAAgB,aAAa,OAAwC;CACnE,OAAO,IAAI,WAAW,KAAK,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC;AAC/E;AAoDA,SAAgB,gBAAgB,OAA2B;CAKzD,OAJY,aAAa,KAAK,CAAC,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,QAAQ,OAAO,GAAG,CAAC,CAAC,QAAQ,OAAO,GAI7E;AACX;AAEA,SAAgB,gBAAgB,OAAwC;CACtE,IAAI,CAAC,YAAY,KAAK,GACpB,MAAM,IAAI,uBAAuB,0BAA0B;CAI7D,IAAI,UAAU,IACZ,uBAAO,IAAI,WAAW,CAAC;CAGzB,OAAO,aAAa,MAAM,QAAQ,MAAM,GAAG,CAAC,CAAC,QAAQ,MAAM,GAAG,IAAI,OAAO,OAAO,MAAM,SAAS,KAAK,IAAI,CAAC,CAAC;AAC5G;AAoBA,SAAgB,wBAAwB,OAAwC;CAC9E,IAAI,YAAY,KAAK,GACnB,OAAO,gBAAgB,KAAK;MACvB,IAAI,SAAS,KAAK,GACvB,OAAO,aAAa,KAAK;MAEzB,MAAM,IAAI,uBAAuB,oCAAoC;AAEzE;AAgBA,SAAgB,SAAS,OAAwB;CAC/C,KAAK,MAAM,QAAQ,OAAO;EACxB,IAAI,SAAS,KAAK;EAClB,MAAM,YAAY,KAAK,YAAY;EAEnC,IAAI,CAAC,kBAAkB,SAAS,SAAS,GACvC,OAAO;CAEX;CACA,OAAO;AACT;AASA,SAAgB,SAAS,OAAwB;CAG/C,OAAO,mEAAM,KAAK,KAAK;AACzB;AASA,SAAgB,YAAY,OAAwB;CAClD,IAAI,UAAU,IACZ,OAAO;CAGT,OAAO,mBAAM,KAAK,KAAK;AACzB"}
@@ -1,4 +1,4 @@
1
- import { RateLimitOptions, ReactPromise } from "./promises";
1
+ import { RateLimitOptions, ReactPromise } from "./promises.js";
2
2
 
3
3
  //#region src/utils/caches.d.ts
4
4
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"caches.d.ts","names":[],"sources":["../../../src/utils/caches.tsx"],"mappings":";;;;;AASA;iBAAgB,aAAA,WAAwB,QAAA,CAAA,CAAU,CAAA,EAAG,CAAA,GAAI,CAAA;AAAA,KAwDpD,aAAA;AAAA,cAEQ,UAAA;EAAA,iBAIQ,QAAA;EAAA,iBACA,QAAA;EAAA,iBAJF,IAAA;cAGE,QAAA,GAAW,YAAA,EAAc,CAAA,KAAM,OAAA,CAAQ,CAAA,GACvC,QAAA;IACf,WAAA,IAAe,GAAA,EAAK,CAAA,EAAG,OAAA;IACvB,WAAA,GAAc,IAAA,CAAK,gBAAA;EAAA;EAAA,QAMf,YAAA;EASR,aAAA,CAAc,YAAA,EAAc,CAAA,GAAI,eAAA,CAAgB,CAAA;EAe1C,YAAA,CAAa,SAAA,GAAY,YAAA,EAAc,CAAA,eAAa,OAAA;EAUpD,eAAA,CAAgB,SAAA,GAAY,YAAA,EAAc,CAAA,eAAa,OAAA;EAAA,SAUpD,gBAAA,GAAgB,GAAA,EA1ChB,CAAA;EAAA,SA2CA,WAAA,GAAW,GAAA,EA3CX,CAAA;;;;;;;;;;;;;;;;;WA4CA,SAAA,GAAS,GAAA,EA5CT,CAAA,EAAC,aAAA,EAAA,aAAA,KAAA,YAAA,CAAA,CAAA;EAAA,SA6CD,mBAAA,GAAmB,GAAA,EA7CnB,CAAA,EAAC,KAAA,EAAA,CAAA;EAAA,SA8CD,wBAAA,GAAwB,GAAA,EA9CxB,CAAA,EAAC,KAAA,EAAA,OAAA,CAAA,CAAA,MAAA,YAAA;EAAA,SA+CD,OAAA,GAAO,GAAA,EA/CP,CAAA,KAAC,OAAA;EAAA,SAgDD,UAAA,GAAU,GAAA,EAhDV,CAAA,KAAC,OAAA;EAAA,SAiDD,aAAA,GAAa,GAAA,EAjDb,CAAA,EAAC,QAAA,GAAA,KAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA;;;WAkDD,OAAA,GAAO,GAAA,EAlDP,CAAA;AAAA;AAAA,cAqDL,eAAA;EAAA,iBAWe,QAAA;EAAA,QAVX,MAAA;EAAA,QACA,eAAA;EAAA,QACA,QAAA;EAAA,iBACS,iBAAA;EAAA,QACT,mBAAA;EAAA,QACA,cAAA;EAAA,QACA,8BAAA;cAGN,OAAA,QAAe,OAAA,CAAQ,CAAA,GACN,QAAA;IACf,WAAA,IAAe,OAAA;IACf,WAAA,GAAc,IAAA,CAAK,gBAAA;EAAA;EAiBvB,gBAAA,CAAA;EAIA,WAAA,CAAA;;;;;;;;;;;;;;;;;EAIA,SAAA,CAAU,aAAA,EAAe,aAAA,GAAgB,YAAA,CAAa,CAAA;EAAA,QAS9C,IAAA;EAAA,QAIA,SAAA;EAAA,QAWA,QAAA;EAWR,mBAAA,CAAoB,KAAA,EAAO,CAAA;EAI3B,wBAAA,CAAyB,KAAA,EAAO,OAAA,CAAQ,CAAA,IAAK,YAAA;EA3HjB;;;EAkItB,OAAA,CAAA,GAAW,OAAA;EAnHX;;;EA6HA,UAAA,CAAA,GAAc,OAAA;EAMpB,OAAA,CAAA;EAIA,oBAAA,CAAA;EAYA,aAAA,CAAc,QAAA,GAAW,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,CAAA;IAA2B,WAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"caches.d.ts","names":[],"sources":["../../../src/utils/caches.tsx"],"mappings":";;;;;AASA;iBAAgB,aAAA,WAAwB,QAAA,EAAU,CAAA,EAAG,CAAA,GAAI,CAAA;AAAA,KAwDpD,aAAA;AAAA,cAEQ,UAAA;EAAA,iBAIQ,QAAA;EAAA,iBACA,QAAA;EAAA,iBAJF,IAAA;cAGE,QAAA,GAAW,YAAA,EAAc,CAAA,KAAM,OAAA,CAAQ,CAAA,GACvC,QAAA;IACf,WAAA,IAAe,GAAA,EAAK,CAAA,EAAG,OAAA;IACvB,WAAA,GAAc,IAAA,CAAK,gBAAA;EAAA;EAAA,QAMf,YAAA;EASR,aAAA,CAAc,YAAA,EAAc,CAAA,GAAI,eAAA,CAAgB,CAAA;EAe1C,YAAA,CAAa,SAAA,GAAY,YAAA,EAAc,CAAA,eAAa,OAAA;EAUpD,eAAA,CAAgB,SAAA,GAAY,YAAA,EAAc,CAAA,eAAa,OAAA;EAAA,SAUpD,gBAAA,GAAgB,GAAA,EA1ChB,CAAA;EAAA,SA2CA,WAAA,GAAW,GAAA,EA3CX,CAAA;;;;;;;;;;;;;;;;;WA4CA,SAAA,GAAS,GAAA,EA5CT,CAAA,EAAC,aAAA,EAAA,aAAA,KAAA,YAAA,CAAA,CAAA;EAAA,SA6CD,mBAAA,GAAmB,GAAA,EA7CnB,CAAA,EAAC,KAAA,EAAA,CAAA;EAAA,SA8CD,wBAAA,GAAwB,GAAA,EA9CxB,CAAA,EAAC,KAAA,EAAA,OAAA,CAAA,CAAA,MAAA,YAAA;EAAA,SA+CD,OAAA,GAAO,GAAA,EA/CP,CAAA,KAAC,OAAA;EAAA,SAgDD,UAAA,GAAU,GAAA,EAhDV,CAAA,KAAC,OAAA;EAAA,SAiDD,aAAA,GAAa,GAAA,EAjDb,CAAA,EAAC,QAAA,GAAA,KAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA;;;WAkDD,OAAA,GAAO,GAAA,EAlDP,CAAA;AAAA;AAAA,cAqDL,eAAA;EAAA,iBAWe,QAAA;EAAA,QAVX,MAAA;EAAA,QACA,eAAA;EAAA,QACA,QAAA;EAAA,iBACS,iBAAA;EAAA,QACT,mBAAA;EAAA,QACA,cAAA;EAAA,QACA,8BAAA;cAGN,OAAA,QAAe,OAAA,CAAQ,CAAA,GACN,QAAA;IACf,WAAA,IAAe,OAAA;IACf,WAAA,GAAc,IAAA,CAAK,gBAAA;EAAA;EAiBvB,gBAAA;EAIA,WAAA;;;;;;;;;;;;;;;;;EAIA,SAAA,CAAU,aAAA,EAAe,aAAA,GAAgB,YAAA,CAAa,CAAA;EAAA,QAS9C,IAAA;EAAA,QAIA,SAAA;EAAA,QAWA,QAAA;EAWR,mBAAA,CAAoB,KAAA,EAAO,CAAA;EAI3B,wBAAA,CAAyB,KAAA,EAAO,OAAA,CAAQ,CAAA,IAAK,YAAA;EA3HjB;;;EAkItB,OAAA,IAAW,OAAA;EAnHX;;;EA6HA,UAAA,IAAc,OAAA;EAMpB,OAAA;EAIA,oBAAA;EAYA,aAAA,CAAc,QAAA,GAAW,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,CAAA;IAA2B,WAAA;EAAA;AAAA"}
@@ -3,7 +3,6 @@ import { DependenciesMap } from "./maps.js";
3
3
  import { filterUndefined } from "./objects.js";
4
4
  import { pending, rateLimited, resolved, runAsynchronously, wait } from "./promises.js";
5
5
  import { AsyncStore } from "./stores.js";
6
-
7
6
  //#region src/utils/caches.tsx
8
7
  /**
9
8
  * Can be used to cache the result of a function call, for example for the `use` hook in React.
@@ -17,31 +16,6 @@ function cacheFunction(f) {
17
16
  return value;
18
17
  });
19
18
  }
20
- (void 0)?.test("cacheFunction", ({ expect }) => {
21
- let callCount = 0;
22
- const add = (a, b) => {
23
- callCount++;
24
- return a + b;
25
- };
26
- const cachedAdd = cacheFunction(add);
27
- expect(cachedAdd(1, 2)).toBe(3);
28
- expect(callCount).toBe(1);
29
- expect(cachedAdd(1, 2)).toBe(3);
30
- expect(callCount).toBe(1);
31
- expect(cachedAdd(2, 3)).toBe(5);
32
- expect(callCount).toBe(2);
33
- let objectCallCount = 0;
34
- const createObject = (id) => {
35
- objectCallCount++;
36
- return { id };
37
- };
38
- const cachedCreateObject = cacheFunction(createObject);
39
- const obj1 = cachedCreateObject(1);
40
- expect(obj1).toEqual({ id: 1 });
41
- expect(objectCallCount).toBe(1);
42
- expect(cachedCreateObject(1)).toBe(obj1);
43
- expect(objectCallCount).toBe(1);
44
- });
45
19
  var AsyncCache = class {
46
20
  constructor(_fetcher, _options = {}) {
47
21
  this._fetcher = _fetcher;
@@ -179,7 +153,7 @@ var AsyncValueCache = class {
179
153
  } };
180
154
  }
181
155
  };
182
-
183
156
  //#endregion
184
157
  export { AsyncCache, cacheFunction };
158
+
185
159
  //# sourceMappingURL=caches.js.map