@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":"redirect-urls.js","names":[],"sources":["../../src/utils/redirect-urls.tsx"],"sourcesContent":["import { HexclaveAssertionError, captureError } from \"./errors\";\nimport { createUrlIfValid, isLocalhost, matchHostnamePattern } from \"./urls\";\n\ntype TrustedDomainConfig = {\n allowLocalhost?: boolean,\n trustedDomains: readonly (string | null | undefined)[],\n};\n\nconst defaultHostedHandlerDomainSuffix = \".built-with-stack-auth.com\";\nconst hostedHandlerProjectIdPlaceholder = \"{projectId}\";\nconst hostedHandlerPathPlaceholder = \"{hostedPath}\";\nconst defaultPorts = new Map<string, string>([['https:', '443'], ['http:', '80']]);\nconst hostedHandlerTemplateProjectIdA = \"00000000-0000-4000-8000-000000000000\";\nconst hostedHandlerTemplateProjectIdB = \"11111111-1111-4111-8111-111111111111\";\n\nfunction replaceHexclavePortPrefix(input: string | undefined, hexclavePortPrefix: string | undefined): string | undefined {\n if (input == null) return undefined;\n return hexclavePortPrefix ? input.replace(/\\$\\{NEXT_PUBLIC_HEXCLAVE_PORT_PREFIX:-81\\}/g, hexclavePortPrefix) : input;\n}\n\nfunction getHostedHandlerUrlFromTemplate(template: string, projectId: string, hostedPath: string): string {\n return template\n .replaceAll(hostedHandlerProjectIdPlaceholder, projectId)\n .replaceAll(hostedHandlerPathPlaceholder, hostedPath);\n}\n\nfunction assertHostedHandlerTemplateHasProjectOrigin(template: string): void {\n const projectUrlA = new URL(getHostedHandlerUrlFromTemplate(template, hostedHandlerTemplateProjectIdA, \"handler\"));\n const projectUrlB = new URL(getHostedHandlerUrlFromTemplate(template, hostedHandlerTemplateProjectIdB, \"handler\"));\n if (projectUrlA.origin === projectUrlB.origin || !projectUrlA.hostname.includes(hostedHandlerTemplateProjectIdA)) {\n throw new HexclaveAssertionError(\"The hosted handler URL template must put {projectId} in the hostname.\", {\n hostedHandlerUrlTemplate: template,\n hint: \"Use a project-specific origin like 'https://{projectId}.built-with-stack-auth.com/{hostedPath}', not a shared-origin path like 'https://example.com/{projectId}/{hostedPath}'.\",\n });\n }\n}\n\nexport function getHostedHandlerTrustedDomain(options: {\n projectId: string,\n hostedHandlerDomainSuffix?: string,\n hostedHandlerUrlTemplate?: string,\n hexclavePortPrefix?: string,\n}): string {\n return new URL(getHostedHandlerUrlFromConfig({\n ...options,\n hostedPath: \"handler\",\n })).origin;\n}\n\nexport function getHostedHandlerUrlFromConfig(options: {\n projectId: string,\n hostedPath: string,\n hostedHandlerDomainSuffix?: string,\n hostedHandlerUrlTemplate?: string,\n hexclavePortPrefix?: string,\n}): string {\n const configuredTemplate = replaceHexclavePortPrefix(options.hostedHandlerUrlTemplate, options.hexclavePortPrefix);\n return configuredTemplate == null\n ? (() => {\n const domainSuffix = replaceHexclavePortPrefix(options.hostedHandlerDomainSuffix, options.hexclavePortPrefix) ?? defaultHostedHandlerDomainSuffix;\n if (!domainSuffix.startsWith(\".\")) {\n throw new HexclaveAssertionError(\"The hosted handler domain suffix must start with a dot.\", {\n domainSuffix,\n hint: \"Set NEXT_PUBLIC_STACK_HOSTED_HANDLER_DOMAIN_SUFFIX to a value like '.built-with-stack-auth.com'.\",\n });\n }\n return `https://${options.projectId}${domainSuffix}/${options.hostedPath}`;\n })()\n : (() => {\n if (!configuredTemplate.includes(hostedHandlerProjectIdPlaceholder) || !configuredTemplate.includes(hostedHandlerPathPlaceholder)) {\n throw new HexclaveAssertionError(\"The hosted handler URL template must contain {projectId} and {hostedPath}.\", {\n hostedHandlerUrlTemplate: configuredTemplate,\n hint: \"Set NEXT_PUBLIC_STACK_HOSTED_HANDLER_URL_TEMPLATE to a value like 'https://{projectId}.built-with-stack-auth.com/{hostedPath}'.\",\n });\n }\n assertHostedHandlerTemplateHasProjectOrigin(configuredTemplate);\n return getHostedHandlerUrlFromTemplate(configuredTemplate, options.projectId, options.hostedPath);\n })();\n}\n\nexport function getImplicitlyTrustedDomainsForProject(options: {\n projectId: string,\n hostedHandlerDomainSuffix?: string,\n hostedHandlerUrlTemplate?: string,\n hexclavePortPrefix?: string,\n}): string[] {\n return [getHostedHandlerTrustedDomain(options)];\n}\n\nfunction normalizePort(url: URL): string {\n const port = url.port || defaultPorts.get(url.protocol) || '';\n return port ? `${url.hostname}:${port}` : url.hostname;\n}\n\nfunction isDefaultPort(url: URL): boolean {\n return !url.port ||\n (url.protocol === 'https:' && url.port === '443') ||\n (url.protocol === 'http:' && url.port === '80');\n}\n\nfunction portsMatch(url1: URL, url2: URL): boolean {\n return normalizePort(url1) === normalizePort(url2);\n}\n\nfunction parseWildcardUrlPattern(pattern: string): { protocol: string, hostPattern: string } | null {\n const protocolSeparatorIndex = pattern.indexOf(\"://\");\n if (protocolSeparatorIndex === -1) return null;\n\n const protocol = `${pattern.slice(0, protocolSeparatorIndex)}:`;\n const hostAndPath = pattern.slice(protocolSeparatorIndex + \"://\".length);\n const pathStartIndex = hostAndPath.indexOf(\"/\");\n const hostPattern = pathStartIndex === -1 ? hostAndPath : hostAndPath.slice(0, pathStartIndex);\n if (hostPattern === \"\") return null;\n return { protocol, hostPattern };\n}\n\nfunction hostPatternWithoutPort(hostPattern: string): string {\n if (!hostPatternHasExplicitPort(hostPattern)) {\n return hostPattern;\n }\n const portSeparatorIndex = hostPattern.lastIndexOf(\":\");\n return hostPattern.slice(0, portSeparatorIndex);\n}\n\nfunction hostPatternHasExplicitPort(hostPattern: string): boolean {\n const portSeparatorIndex = hostPattern.lastIndexOf(\":\");\n if (portSeparatorIndex === -1) {\n return false;\n }\n const port = hostPattern.slice(portSeparatorIndex + 1);\n return port === \"*\" || (port !== \"\" && [...port].every(char => char >= \"0\" && char <= \"9\"));\n}\n\nfunction matchesTrustedDomain(testUrl: URL, pattern: string): boolean {\n const baseUrl = createUrlIfValid(pattern);\n\n if (baseUrl != null && !pattern.includes('*')) {\n return baseUrl.protocol === testUrl.protocol &&\n baseUrl.hostname === testUrl.hostname &&\n portsMatch(baseUrl, testUrl);\n }\n\n const parsedPattern = parseWildcardUrlPattern(pattern);\n if (parsedPattern == null) {\n captureError(\"invalid-redirect-domain\", new HexclaveAssertionError(\"Invalid domain pattern\", { pattern }));\n return false;\n }\n\n if (testUrl.protocol !== parsedPattern.protocol) {\n return false;\n }\n\n const hasPortInPattern = hostPatternHasExplicitPort(parsedPattern.hostPattern);\n return hasPortInPattern\n ? matchHostnamePattern(parsedPattern.hostPattern, normalizePort(testUrl))\n : matchHostnamePattern(parsedPattern.hostPattern, testUrl.hostname) && isDefaultPort(testUrl);\n}\n\nexport function isAcceptedNativeAppUrl(urlOrString: string): boolean {\n const url = createUrlIfValid(urlOrString);\n if (!url) return false;\n\n // Legacy scheme accepted indefinitely; baked into already-shipped Swift SDK binaries.\n return url.protocol === 'stack-auth-mobile-oauth-url:'\n || url.protocol === 'hexclave-mobile-oauth-url:';\n}\n\nexport function validateRedirectUrl(\n urlOrString: string | URL,\n config: TrustedDomainConfig,\n): boolean {\n const url = createUrlIfValid(urlOrString);\n if (!url) return false;\n\n if (config.allowLocalhost === true && isLocalhost(url)) {\n return true;\n }\n\n return config.trustedDomains.some(domain => domain != null && matchesTrustedDomain(url, domain));\n}\n\nexport function getTrustedParentDomain(currentDomain: string, trustedDomains: readonly (string | null | undefined)[]): string | null {\n const hostPatterns = trustedDomains\n .filter((domain): domain is string => domain != null)\n .map((domain) => {\n const url = createUrlIfValid(domain);\n if (url != null && !domain.includes(\"*\")) {\n return url.hostname.toLowerCase();\n }\n const parsedPattern = parseWildcardUrlPattern(domain);\n return parsedPattern == null ? null : hostPatternWithoutPort(parsedPattern.hostPattern).toLowerCase();\n })\n .filter((domain): domain is string => domain != null);\n\n const parts = currentDomain.toLowerCase().split('.');\n for (let i = parts.length - 2; i >= 0; i--) {\n const parentDomain = parts.slice(i).join('.');\n if (hostPatterns.includes(parentDomain) && hostPatterns.includes(`**.${parentDomain}`)) {\n return parentDomain;\n }\n }\n\n return null;\n}\n\nimport.meta.vitest?.test(\"validateRedirectUrl matches exact and wildcard trusted domains\", ({ expect }) => {\n expect(validateRedirectUrl(\"https://example.com\", {\n allowLocalhost: false,\n trustedDomains: [\"https://example.com\"],\n })).toBe(true);\n expect(validateRedirectUrl(\"https://api.example.com\", {\n allowLocalhost: false,\n trustedDomains: [\"https://*.example.com\"],\n })).toBe(true);\n expect(validateRedirectUrl(\"https://api.v2.example.com\", {\n allowLocalhost: false,\n trustedDomains: [\"https://*.example.com\"],\n })).toBe(false);\n});\n\nimport.meta.vitest?.test(\"validateRedirectUrl trusts implicit hosted handler domains\", ({ expect }) => {\n const projectId = \"12345678-1234-4234-8234-123456789abc\";\n expect(validateRedirectUrl(`https://${projectId}.built-with-stack-auth.com/anything`, {\n allowLocalhost: false,\n trustedDomains: getImplicitlyTrustedDomainsForProject({ projectId }),\n })).toBe(true);\n expect(validateRedirectUrl(\"https://other-project.built-with-stack-auth.com/anything\", {\n allowLocalhost: false,\n trustedDomains: getImplicitlyTrustedDomainsForProject({ projectId }),\n })).toBe(false);\n expect(validateRedirectUrl(`http://${projectId}.localhost:9209/anything`, {\n allowLocalhost: false,\n trustedDomains: getImplicitlyTrustedDomainsForProject({\n projectId,\n hostedHandlerUrlTemplate: \"http://{projectId}.localhost:${NEXT_PUBLIC_HEXCLAVE_PORT_PREFIX:-81}09/{hostedPath}\",\n hexclavePortPrefix: \"92\",\n }),\n })).toBe(true);\n});\n\nimport.meta.vitest?.test(\"getImplicitlyTrustedDomainsForProject rejects shared-origin hosted templates\", ({ expect }) => {\n expect(() => getImplicitlyTrustedDomainsForProject({\n projectId: \"12345678-1234-4234-8234-123456789abc\",\n hostedHandlerUrlTemplate: \"https://host.example.com/{projectId}/{hostedPath}\",\n })).toThrowErrorMatchingInlineSnapshot(`\n [HexclaveAssertionError: The hosted handler URL template must put {projectId} in the hostname.\n\n This is likely an error in Hexclave. Please make sure you are running the newest version and report it.]\n `);\n});\n\nimport.meta.vitest?.test(\"validateRedirectUrl respects default and explicit ports\", ({ expect }) => {\n expect(validateRedirectUrl(\"https://example.com:443/path\", {\n allowLocalhost: false,\n trustedDomains: [\"https://example.com\"],\n })).toBe(true);\n expect(validateRedirectUrl(\"http://api.example.com:3000\", {\n allowLocalhost: false,\n trustedDomains: [\"http://*.example.com:3000\"],\n })).toBe(true);\n expect(validateRedirectUrl(\"http://api.example.com\", {\n allowLocalhost: false,\n trustedDomains: [\"http://*.example.com:3000\"],\n })).toBe(false);\n expect(validateRedirectUrl(\"http://api.example.com:1234\", {\n allowLocalhost: false,\n trustedDomains: [\"http://*.example.com:*\"],\n })).toBe(true);\n});\n\nimport.meta.vitest?.test(\"validateRedirectUrl respects localhost allowance and invalid patterns\", ({ expect }) => {\n const originalConsoleError = console.error;\n console.error = () => {};\n try {\n expect(validateRedirectUrl(\"http://localhost:3000\", {\n allowLocalhost: true,\n trustedDomains: [],\n })).toBe(true);\n expect(validateRedirectUrl(\"http://localhost:3000\", {\n allowLocalhost: false,\n trustedDomains: [],\n })).toBe(false);\n expect(validateRedirectUrl(\"https://example.com\", {\n allowLocalhost: false,\n trustedDomains: [\"not a url\"],\n })).toBe(false);\n } finally {\n console.error = originalConsoleError;\n }\n});\n\nimport.meta.vitest?.test(\"getTrustedParentDomain ignores empty entries and strips ports\", ({ expect }) => {\n expect(getTrustedParentDomain(\"app.example.com\", [\n null,\n undefined,\n \"https://example.com\",\n \"https://**.example.com:*\",\n ])).toBe(\"example.com\");\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"redirect-urls.js","names":["HexclaveAssertionError"],"sources":["../../src/utils/redirect-urls.tsx"],"sourcesContent":["import { HexclaveAssertionError, captureError } from \"./errors\";\nimport { createUrlIfValid, isLocalhost, matchHostnamePattern } from \"./urls\";\n\ntype TrustedDomainConfig = {\n allowLocalhost?: boolean,\n trustedDomains: readonly (string | null | undefined)[],\n};\n\nconst defaultHostedHandlerDomainSuffix = \".built-with-stack-auth.com\";\nconst hostedHandlerProjectIdPlaceholder = \"{projectId}\";\nconst hostedHandlerPathPlaceholder = \"{hostedPath}\";\nconst defaultPorts = new Map<string, string>([['https:', '443'], ['http:', '80']]);\nconst hostedHandlerTemplateProjectIdA = \"00000000-0000-4000-8000-000000000000\";\nconst hostedHandlerTemplateProjectIdB = \"11111111-1111-4111-8111-111111111111\";\n\nfunction replaceHexclavePortPrefix(input: string | undefined, hexclavePortPrefix: string | undefined): string | undefined {\n if (input == null) return undefined;\n return hexclavePortPrefix ? input.replace(/\\$\\{NEXT_PUBLIC_HEXCLAVE_PORT_PREFIX:-81\\}/g, hexclavePortPrefix) : input;\n}\n\nfunction getHostedHandlerUrlFromTemplate(template: string, projectId: string, hostedPath: string): string {\n return template\n .replaceAll(hostedHandlerProjectIdPlaceholder, projectId)\n .replaceAll(hostedHandlerPathPlaceholder, hostedPath);\n}\n\nfunction assertHostedHandlerTemplateHasProjectOrigin(template: string): void {\n const projectUrlA = new URL(getHostedHandlerUrlFromTemplate(template, hostedHandlerTemplateProjectIdA, \"handler\"));\n const projectUrlB = new URL(getHostedHandlerUrlFromTemplate(template, hostedHandlerTemplateProjectIdB, \"handler\"));\n if (projectUrlA.origin === projectUrlB.origin || !projectUrlA.hostname.includes(hostedHandlerTemplateProjectIdA)) {\n throw new HexclaveAssertionError(\"The hosted handler URL template must put {projectId} in the hostname.\", {\n hostedHandlerUrlTemplate: template,\n hint: \"Use a project-specific origin like 'https://{projectId}.built-with-stack-auth.com/{hostedPath}', not a shared-origin path like 'https://example.com/{projectId}/{hostedPath}'.\",\n });\n }\n}\n\nexport function getHostedHandlerTrustedDomain(options: {\n projectId: string,\n hostedHandlerDomainSuffix?: string,\n hostedHandlerUrlTemplate?: string,\n hexclavePortPrefix?: string,\n}): string {\n return new URL(getHostedHandlerUrlFromConfig({\n ...options,\n hostedPath: \"handler\",\n })).origin;\n}\n\nexport function getHostedHandlerUrlFromConfig(options: {\n projectId: string,\n hostedPath: string,\n hostedHandlerDomainSuffix?: string,\n hostedHandlerUrlTemplate?: string,\n hexclavePortPrefix?: string,\n}): string {\n const configuredTemplate = replaceHexclavePortPrefix(options.hostedHandlerUrlTemplate, options.hexclavePortPrefix);\n return configuredTemplate == null\n ? (() => {\n const domainSuffix = replaceHexclavePortPrefix(options.hostedHandlerDomainSuffix, options.hexclavePortPrefix) ?? defaultHostedHandlerDomainSuffix;\n if (!domainSuffix.startsWith(\".\")) {\n throw new HexclaveAssertionError(\"The hosted handler domain suffix must start with a dot.\", {\n domainSuffix,\n hint: \"Set NEXT_PUBLIC_STACK_HOSTED_HANDLER_DOMAIN_SUFFIX to a value like '.built-with-stack-auth.com'.\",\n });\n }\n return `https://${options.projectId}${domainSuffix}/${options.hostedPath}`;\n })()\n : (() => {\n if (!configuredTemplate.includes(hostedHandlerProjectIdPlaceholder) || !configuredTemplate.includes(hostedHandlerPathPlaceholder)) {\n throw new HexclaveAssertionError(\"The hosted handler URL template must contain {projectId} and {hostedPath}.\", {\n hostedHandlerUrlTemplate: configuredTemplate,\n hint: \"Set NEXT_PUBLIC_STACK_HOSTED_HANDLER_URL_TEMPLATE to a value like 'https://{projectId}.built-with-stack-auth.com/{hostedPath}'.\",\n });\n }\n assertHostedHandlerTemplateHasProjectOrigin(configuredTemplate);\n return getHostedHandlerUrlFromTemplate(configuredTemplate, options.projectId, options.hostedPath);\n })();\n}\n\nexport function getImplicitlyTrustedDomainsForProject(options: {\n projectId: string,\n hostedHandlerDomainSuffix?: string,\n hostedHandlerUrlTemplate?: string,\n hexclavePortPrefix?: string,\n}): string[] {\n return [getHostedHandlerTrustedDomain(options)];\n}\n\nfunction normalizePort(url: URL): string {\n const port = url.port || defaultPorts.get(url.protocol) || '';\n return port ? `${url.hostname}:${port}` : url.hostname;\n}\n\nfunction isDefaultPort(url: URL): boolean {\n return !url.port ||\n (url.protocol === 'https:' && url.port === '443') ||\n (url.protocol === 'http:' && url.port === '80');\n}\n\nfunction portsMatch(url1: URL, url2: URL): boolean {\n return normalizePort(url1) === normalizePort(url2);\n}\n\nfunction parseWildcardUrlPattern(pattern: string): { protocol: string, hostPattern: string } | null {\n const protocolSeparatorIndex = pattern.indexOf(\"://\");\n if (protocolSeparatorIndex === -1) return null;\n\n const protocol = `${pattern.slice(0, protocolSeparatorIndex)}:`;\n const hostAndPath = pattern.slice(protocolSeparatorIndex + \"://\".length);\n const pathStartIndex = hostAndPath.indexOf(\"/\");\n const hostPattern = pathStartIndex === -1 ? hostAndPath : hostAndPath.slice(0, pathStartIndex);\n if (hostPattern === \"\") return null;\n return { protocol, hostPattern };\n}\n\nfunction hostPatternWithoutPort(hostPattern: string): string {\n if (!hostPatternHasExplicitPort(hostPattern)) {\n return hostPattern;\n }\n const portSeparatorIndex = hostPattern.lastIndexOf(\":\");\n return hostPattern.slice(0, portSeparatorIndex);\n}\n\nfunction hostPatternHasExplicitPort(hostPattern: string): boolean {\n const portSeparatorIndex = hostPattern.lastIndexOf(\":\");\n if (portSeparatorIndex === -1) {\n return false;\n }\n const port = hostPattern.slice(portSeparatorIndex + 1);\n return port === \"*\" || (port !== \"\" && [...port].every(char => char >= \"0\" && char <= \"9\"));\n}\n\nfunction matchesTrustedDomain(testUrl: URL, pattern: string): boolean {\n const baseUrl = createUrlIfValid(pattern);\n\n if (baseUrl != null && !pattern.includes('*')) {\n return baseUrl.protocol === testUrl.protocol &&\n baseUrl.hostname === testUrl.hostname &&\n portsMatch(baseUrl, testUrl);\n }\n\n const parsedPattern = parseWildcardUrlPattern(pattern);\n if (parsedPattern == null) {\n captureError(\"invalid-redirect-domain\", new HexclaveAssertionError(\"Invalid domain pattern\", { pattern }));\n return false;\n }\n\n if (testUrl.protocol !== parsedPattern.protocol) {\n return false;\n }\n\n const hasPortInPattern = hostPatternHasExplicitPort(parsedPattern.hostPattern);\n return hasPortInPattern\n ? matchHostnamePattern(parsedPattern.hostPattern, normalizePort(testUrl))\n : matchHostnamePattern(parsedPattern.hostPattern, testUrl.hostname) && isDefaultPort(testUrl);\n}\n\nexport function isAcceptedNativeAppUrl(urlOrString: string): boolean {\n const url = createUrlIfValid(urlOrString);\n if (!url) return false;\n\n // Legacy scheme accepted indefinitely; baked into already-shipped Swift SDK binaries.\n return url.protocol === 'stack-auth-mobile-oauth-url:'\n || url.protocol === 'hexclave-mobile-oauth-url:';\n}\n\nexport function validateRedirectUrl(\n urlOrString: string | URL,\n config: TrustedDomainConfig,\n): boolean {\n const url = createUrlIfValid(urlOrString);\n if (!url) return false;\n\n if (config.allowLocalhost === true && isLocalhost(url)) {\n return true;\n }\n\n return config.trustedDomains.some(domain => domain != null && matchesTrustedDomain(url, domain));\n}\n\nexport function getTrustedParentDomain(currentDomain: string, trustedDomains: readonly (string | null | undefined)[]): string | null {\n const hostPatterns = trustedDomains\n .filter((domain): domain is string => domain != null)\n .map((domain) => {\n const url = createUrlIfValid(domain);\n if (url != null && !domain.includes(\"*\")) {\n return url.hostname.toLowerCase();\n }\n const parsedPattern = parseWildcardUrlPattern(domain);\n return parsedPattern == null ? null : hostPatternWithoutPort(parsedPattern.hostPattern).toLowerCase();\n })\n .filter((domain): domain is string => domain != null);\n\n const parts = currentDomain.toLowerCase().split('.');\n for (let i = parts.length - 2; i >= 0; i--) {\n const parentDomain = parts.slice(i).join('.');\n if (hostPatterns.includes(parentDomain) && hostPatterns.includes(`**.${parentDomain}`)) {\n return parentDomain;\n }\n }\n\n return null;\n}\n\nimport.meta.vitest?.test(\"validateRedirectUrl matches exact and wildcard trusted domains\", ({ expect }) => {\n expect(validateRedirectUrl(\"https://example.com\", {\n allowLocalhost: false,\n trustedDomains: [\"https://example.com\"],\n })).toBe(true);\n expect(validateRedirectUrl(\"https://api.example.com\", {\n allowLocalhost: false,\n trustedDomains: [\"https://*.example.com\"],\n })).toBe(true);\n expect(validateRedirectUrl(\"https://api.v2.example.com\", {\n allowLocalhost: false,\n trustedDomains: [\"https://*.example.com\"],\n })).toBe(false);\n});\n\nimport.meta.vitest?.test(\"validateRedirectUrl trusts implicit hosted handler domains\", ({ expect }) => {\n const projectId = \"12345678-1234-4234-8234-123456789abc\";\n expect(validateRedirectUrl(`https://${projectId}.built-with-stack-auth.com/anything`, {\n allowLocalhost: false,\n trustedDomains: getImplicitlyTrustedDomainsForProject({ projectId }),\n })).toBe(true);\n expect(validateRedirectUrl(\"https://other-project.built-with-stack-auth.com/anything\", {\n allowLocalhost: false,\n trustedDomains: getImplicitlyTrustedDomainsForProject({ projectId }),\n })).toBe(false);\n expect(validateRedirectUrl(`http://${projectId}.localhost:9209/anything`, {\n allowLocalhost: false,\n trustedDomains: getImplicitlyTrustedDomainsForProject({\n projectId,\n hostedHandlerUrlTemplate: \"http://{projectId}.localhost:${NEXT_PUBLIC_HEXCLAVE_PORT_PREFIX:-81}09/{hostedPath}\",\n hexclavePortPrefix: \"92\",\n }),\n })).toBe(true);\n});\n\nimport.meta.vitest?.test(\"getImplicitlyTrustedDomainsForProject rejects shared-origin hosted templates\", ({ expect }) => {\n expect(() => getImplicitlyTrustedDomainsForProject({\n projectId: \"12345678-1234-4234-8234-123456789abc\",\n hostedHandlerUrlTemplate: \"https://host.example.com/{projectId}/{hostedPath}\",\n })).toThrowErrorMatchingInlineSnapshot(`\n [HexclaveAssertionError: The hosted handler URL template must put {projectId} in the hostname.\n\n This is likely an error in Hexclave. Please make sure you are running the newest version and report it.]\n `);\n});\n\nimport.meta.vitest?.test(\"validateRedirectUrl respects default and explicit ports\", ({ expect }) => {\n expect(validateRedirectUrl(\"https://example.com:443/path\", {\n allowLocalhost: false,\n trustedDomains: [\"https://example.com\"],\n })).toBe(true);\n expect(validateRedirectUrl(\"http://api.example.com:3000\", {\n allowLocalhost: false,\n trustedDomains: [\"http://*.example.com:3000\"],\n })).toBe(true);\n expect(validateRedirectUrl(\"http://api.example.com\", {\n allowLocalhost: false,\n trustedDomains: [\"http://*.example.com:3000\"],\n })).toBe(false);\n expect(validateRedirectUrl(\"http://api.example.com:1234\", {\n allowLocalhost: false,\n trustedDomains: [\"http://*.example.com:*\"],\n })).toBe(true);\n});\n\nimport.meta.vitest?.test(\"validateRedirectUrl respects localhost allowance and invalid patterns\", ({ expect }) => {\n const originalConsoleError = console.error;\n console.error = () => {};\n try {\n expect(validateRedirectUrl(\"http://localhost:3000\", {\n allowLocalhost: true,\n trustedDomains: [],\n })).toBe(true);\n expect(validateRedirectUrl(\"http://localhost:3000\", {\n allowLocalhost: false,\n trustedDomains: [],\n })).toBe(false);\n expect(validateRedirectUrl(\"https://example.com\", {\n allowLocalhost: false,\n trustedDomains: [\"not a url\"],\n })).toBe(false);\n } finally {\n console.error = originalConsoleError;\n }\n});\n\nimport.meta.vitest?.test(\"getTrustedParentDomain ignores empty entries and strips ports\", ({ expect }) => {\n expect(getTrustedParentDomain(\"app.example.com\", [\n null,\n undefined,\n \"https://example.com\",\n \"https://**.example.com:*\",\n ])).toBe(\"example.com\");\n});\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
-
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
2
  //#region src/utils/regex.tsx
4
3
  const cachedRegexes = /* @__PURE__ */ new Map();
5
4
  function createCachedRegex(pattern) {
@@ -9,7 +8,7 @@ function createCachedRegex(pattern) {
9
8
  cachedRegexes.set(pattern, regex);
10
9
  return regex;
11
10
  }
12
-
13
11
  //#endregion
14
12
  exports.createCachedRegex = createCachedRegex;
13
+
15
14
  //# sourceMappingURL=regex.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"regex.js","names":[],"sources":["../../src/utils/regex.tsx"],"sourcesContent":["const cachedRegexes = new Map<string, RegExp>();\n\nexport function createCachedRegex(pattern: string) {\n const cached = cachedRegexes.get(pattern);\n if (cached) return cached;\n\n const regex = new RegExp(pattern);\n cachedRegexes.set(pattern, regex);\n return regex;\n}\n"],"mappings":";;;AAAA,MAAM,gCAAgB,IAAI,KAAqB;AAE/C,SAAgB,kBAAkB,SAAiB;CACjD,MAAM,SAAS,cAAc,IAAI,QAAQ;AACzC,KAAI,OAAQ,QAAO;CAEnB,MAAM,QAAQ,IAAI,OAAO,QAAQ;AACjC,eAAc,IAAI,SAAS,MAAM;AACjC,QAAO"}
1
+ {"version":3,"file":"regex.js","names":[],"sources":["../../src/utils/regex.tsx"],"sourcesContent":["const cachedRegexes = new Map<string, RegExp>();\n\nexport function createCachedRegex(pattern: string) {\n const cached = cachedRegexes.get(pattern);\n if (cached) return cached;\n\n const regex = new RegExp(pattern);\n cachedRegexes.set(pattern, regex);\n return regex;\n}\n"],"mappings":";;AAAA,MAAM,gCAAgB,IAAI,IAAoB;AAE9C,SAAgB,kBAAkB,SAAiB;CACjD,MAAM,SAAS,cAAc,IAAI,OAAO;CACxC,IAAI,QAAQ,OAAO;CAEnB,MAAM,QAAQ,IAAI,OAAO,OAAO;CAChC,cAAc,IAAI,SAAS,KAAK;CAChC,OAAO;AACT"}
@@ -1,70 +1,2 @@
1
- //#region src/utils/results.d.ts
2
- type Result<T, E = unknown> = {
3
- status: "ok";
4
- data: T;
5
- } | {
6
- status: "error";
7
- error: E;
8
- };
9
- type AsyncResult<T, E = unknown, P = void> = Result<T, E> | ({
10
- status: "pending";
11
- } & {
12
- progress: P;
13
- });
14
- declare const Result: {
15
- fromThrowing: typeof fromThrowing;
16
- fromThrowingAsync: typeof fromThrowingAsync;
17
- fromPromise: typeof promiseToResult;
18
- ok<T>(data: T): Result<T, never> & {
19
- status: "ok";
20
- };
21
- error<E>(error: E): Result<never, E> & {
22
- status: "error";
23
- };
24
- map: typeof mapResult;
25
- or: <T, E, U>(result: Result<T, E>, fallback: U) => T | U;
26
- orThrow: <T, E>(result: Result<T, E>) => T;
27
- orThrowAsync: <T, E>(result: Promise<Result<T, E>>) => Promise<T>;
28
- retry: typeof retry;
29
- };
30
- declare const AsyncResult: {
31
- fromThrowing: typeof fromThrowing;
32
- fromPromise: typeof promiseToResult;
33
- ok: <T>(data: T) => Result<T, never> & {
34
- status: "ok";
35
- };
36
- error: <E>(error: E) => Result<never, E> & {
37
- status: "error";
38
- };
39
- pending: typeof pending;
40
- map: typeof mapResult;
41
- or: <T, E, P, U>(result: AsyncResult<T, E, P>, fallback: U) => T | U;
42
- orThrow: <T, E, P>(result: AsyncResult<T, E, P>) => T;
43
- retry: typeof retry;
44
- };
45
- declare function pending(): AsyncResult<never, never, void> & {
46
- status: "pending";
47
- };
48
- declare function pending<P>(progress: P): AsyncResult<never, never, P> & {
49
- status: "pending";
50
- };
51
- declare function promiseToResult<T>(promise: Promise<T>): Promise<Result<T>>;
52
- declare function fromThrowing<T>(fn: () => T): Result<T, unknown>;
53
- declare function fromThrowingAsync<T>(fn: () => Promise<T>): Promise<Result<T, unknown>>;
54
- declare function mapResult<T, U, E = unknown, P = unknown>(result: Result<T, E>, fn: (data: T) => U): Result<U, E>;
55
- declare function mapResult<T, U, E = unknown, P = unknown>(result: AsyncResult<T, E, P>, fn: (data: T) => U): AsyncResult<U, E, P>;
56
- declare class RetryError<E = unknown> extends AggregateError {
57
- readonly errors: E[];
58
- constructor(errors: E[]);
59
- get attempts(): number;
60
- }
61
- declare function retry<T, E>(fn: (attemptIndex: number) => Result<T, E> | Promise<Result<T, E>>, totalAttempts: number, {
62
- exponentialDelayBase
63
- }?: {
64
- exponentialDelayBase?: number | undefined;
65
- }): Promise<Result<T, RetryError<E>> & {
66
- attempts: number;
67
- }>;
68
- //#endregion
69
- export { AsyncResult, Result };
70
- //# sourceMappingURL=results.d.ts.map
1
+ import { n as Result, t as AsyncResult } from "../results-DP3BzoL6.js";
2
+ export { AsyncResult, Result };
@@ -1,8 +1,6 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_chunk = require('../chunk-BE-pF4vm.js');
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
2
  let __promises_js = require("./promises.js");
4
3
  let __strings_js = require("./strings.js");
5
-
6
4
  //#region src/utils/results.tsx
7
5
  const Result = {
8
6
  fromThrowing,
@@ -33,50 +31,6 @@ const Result = {
33
31
  },
34
32
  retry
35
33
  };
36
- (void 0)?.test("Result.ok and Result.error", ({ expect }) => {
37
- const okResult = Result.ok(42);
38
- expect(okResult.status).toBe("ok");
39
- expect(okResult.data).toBe(42);
40
- const error = /* @__PURE__ */ new Error("Test error");
41
- const errorResult = Result.error(error);
42
- expect(errorResult.status).toBe("error");
43
- expect(errorResult.error).toBe(error);
44
- });
45
- (void 0)?.test("Result.or", ({ expect }) => {
46
- expect(Result.or({
47
- status: "ok",
48
- data: 42
49
- }, 0)).toBe(42);
50
- expect(Result.or({
51
- status: "error",
52
- error: "error message"
53
- }, 0)).toBe(0);
54
- });
55
- (void 0)?.test("Result.orThrow", ({ expect }) => {
56
- expect(Result.orThrow({
57
- status: "ok",
58
- data: 42
59
- })).toBe(42);
60
- const error = /* @__PURE__ */ new Error("Test error");
61
- const errorResult = {
62
- status: "error",
63
- error
64
- };
65
- expect(() => Result.orThrow(errorResult)).toThrow(error);
66
- });
67
- (void 0)?.test("Result.orThrowAsync", async ({ expect }) => {
68
- const okPromise = Promise.resolve({
69
- status: "ok",
70
- data: 42
71
- });
72
- expect(await Result.orThrowAsync(okPromise)).toBe(42);
73
- const error = /* @__PURE__ */ new Error("Test error");
74
- const errorPromise = Promise.resolve({
75
- status: "error",
76
- error
77
- });
78
- await expect(Result.orThrowAsync(errorPromise)).rejects.toThrow(error);
79
- });
80
34
  const AsyncResult = {
81
35
  fromThrowing,
82
36
  fromPromise: promiseToResult,
@@ -94,55 +48,12 @@ const AsyncResult = {
94
48
  },
95
49
  retry
96
50
  };
97
- (void 0)?.test("AsyncResult.or", ({ expect }) => {
98
- expect(AsyncResult.or({
99
- status: "ok",
100
- data: 42
101
- }, 0)).toBe(42);
102
- expect(AsyncResult.or({
103
- status: "error",
104
- error: "error message"
105
- }, 0)).toBe(0);
106
- expect(AsyncResult.or({
107
- status: "pending",
108
- progress: void 0
109
- }, 0)).toBe(0);
110
- });
111
- (void 0)?.test("AsyncResult.orThrow", ({ expect }) => {
112
- expect(AsyncResult.orThrow({
113
- status: "ok",
114
- data: 42
115
- })).toBe(42);
116
- const error = /* @__PURE__ */ new Error("Test error");
117
- const errorResult = {
118
- status: "error",
119
- error
120
- };
121
- expect(() => AsyncResult.orThrow(errorResult)).toThrow(error);
122
- const pendingResult = {
123
- status: "pending",
124
- progress: void 0
125
- };
126
- expect(() => AsyncResult.orThrow(pendingResult)).toThrow("Result still pending");
127
- });
128
51
  function pending(progress) {
129
52
  return {
130
53
  status: "pending",
131
54
  progress
132
55
  };
133
56
  }
134
- (void 0)?.test("pending", ({ expect }) => {
135
- const pendingResult = pending();
136
- expect(pendingResult.status).toBe("pending");
137
- expect(pendingResult.progress).toBe(void 0);
138
- const progressValue = {
139
- loaded: 50,
140
- total: 100
141
- };
142
- const pendingWithProgress = pending(progressValue);
143
- expect(pendingWithProgress.status).toBe("pending");
144
- expect(pendingWithProgress.progress).toBe(progressValue);
145
- });
146
57
  async function promiseToResult(promise) {
147
58
  try {
148
59
  const value = await promise;
@@ -151,15 +62,6 @@ async function promiseToResult(promise) {
151
62
  return Result.error(error);
152
63
  }
153
64
  }
154
- (void 0)?.test("promiseToResult", async ({ expect }) => {
155
- const resolvedResult = await promiseToResult(Promise.resolve(42));
156
- expect(resolvedResult.status).toBe("ok");
157
- if (resolvedResult.status === "ok") expect(resolvedResult.data).toBe(42);
158
- const error = /* @__PURE__ */ new Error("Test error");
159
- const rejectedResult = await promiseToResult(Promise.reject(error));
160
- expect(rejectedResult.status).toBe("error");
161
- if (rejectedResult.status === "error") expect(rejectedResult.error).toBe(error);
162
- });
163
65
  function fromThrowing(fn) {
164
66
  try {
165
67
  return Result.ok(fn());
@@ -167,19 +69,6 @@ function fromThrowing(fn) {
167
69
  return Result.error(error);
168
70
  }
169
71
  }
170
- (void 0)?.test("fromThrowing", ({ expect }) => {
171
- const successFn = () => 42;
172
- const successResult = fromThrowing(successFn);
173
- expect(successResult.status).toBe("ok");
174
- if (successResult.status === "ok") expect(successResult.data).toBe(42);
175
- const error = /* @__PURE__ */ new Error("Test error");
176
- const errorFn = () => {
177
- throw error;
178
- };
179
- const errorResult = fromThrowing(errorFn);
180
- expect(errorResult.status).toBe("error");
181
- if (errorResult.status === "error") expect(errorResult.error).toBe(error);
182
- });
183
72
  async function fromThrowingAsync(fn) {
184
73
  try {
185
74
  return Result.ok(await fn());
@@ -187,19 +76,6 @@ async function fromThrowingAsync(fn) {
187
76
  return Result.error(error);
188
77
  }
189
78
  }
190
- (void 0)?.test("fromThrowingAsync", async ({ expect }) => {
191
- const successFn = async () => 42;
192
- const successResult = await fromThrowingAsync(successFn);
193
- expect(successResult.status).toBe("ok");
194
- if (successResult.status === "ok") expect(successResult.data).toBe(42);
195
- const error = /* @__PURE__ */ new Error("Test error");
196
- const errorFn = async () => {
197
- throw error;
198
- };
199
- const errorResult = await fromThrowingAsync(errorFn);
200
- expect(errorResult.status).toBe("error");
201
- if (errorResult.status === "error") expect(errorResult.error).toBe(error);
202
- });
203
79
  function mapResult(result, fn) {
204
80
  if (result.status === "error") return {
205
81
  status: "error",
@@ -211,34 +87,6 @@ function mapResult(result, fn) {
211
87
  };
212
88
  return Result.ok(fn(result.data));
213
89
  }
214
- (void 0)?.test("mapResult", ({ expect }) => {
215
- const mappedOk = mapResult({
216
- status: "ok",
217
- data: 42
218
- }, (n) => n * 2);
219
- expect(mappedOk.status).toBe("ok");
220
- if (mappedOk.status === "ok") expect(mappedOk.data).toBe(84);
221
- const mappedError = mapResult({
222
- status: "error",
223
- error: "error message"
224
- }, (n) => n * 2);
225
- expect(mappedError.status).toBe("error");
226
- if (mappedError.status === "error") expect(mappedError.error).toBe("error message");
227
- expect(mapResult({
228
- status: "pending",
229
- progress: void 0
230
- }, (n) => n * 2).status).toBe("pending");
231
- const progressValue = {
232
- loaded: 50,
233
- total: 100
234
- };
235
- const mappedPendingWithProgress = mapResult({
236
- status: "pending",
237
- progress: progressValue
238
- }, (n) => n * 2);
239
- expect(mappedPendingWithProgress.status).toBe("pending");
240
- if (mappedPendingWithProgress.status === "pending") expect(mappedPendingWithProgress.progress).toBe(progressValue);
241
- });
242
90
  var RetryError = class extends AggregateError {
243
91
  constructor(errors) {
244
92
  const strings = errors.map((e) => (0, __strings_js.nicify)(e));
@@ -262,33 +110,6 @@ var RetryError = class extends AggregateError {
262
110
  }
263
111
  };
264
112
  RetryError.prototype.name = "RetryError";
265
- (void 0)?.test("RetryError", ({ expect }) => {
266
- const singleError = /* @__PURE__ */ new Error("Single error");
267
- const retryErrorSingle = new RetryError([singleError]);
268
- expect(retryErrorSingle.name).toBe("RetryError");
269
- expect(retryErrorSingle.errors).toEqual([singleError]);
270
- expect(retryErrorSingle.attempts).toBe(1);
271
- expect(retryErrorSingle.cause).toBe(singleError);
272
- expect(retryErrorSingle.message).toContain("Error after 1 attempts");
273
- const error1 = /* @__PURE__ */ new Error("Error 1");
274
- const error2 = /* @__PURE__ */ new Error("Error 2");
275
- const retryErrorMultiple = new RetryError([error1, error2]);
276
- expect(retryErrorMultiple.name).toBe("RetryError");
277
- expect(retryErrorMultiple.errors).toEqual([error1, error2]);
278
- expect(retryErrorMultiple.attempts).toBe(2);
279
- expect(retryErrorMultiple.cause).toBe(error2);
280
- expect(retryErrorMultiple.message).toContain("Error after 2 attempts");
281
- expect(retryErrorMultiple.message).toContain("Attempt 1");
282
- expect(retryErrorMultiple.message).toContain("Attempt 2");
283
- const sameError = /* @__PURE__ */ new Error("Same error");
284
- const retryErrorSame = new RetryError([sameError, sameError]);
285
- expect(retryErrorSame.name).toBe("RetryError");
286
- expect(retryErrorSame.errors).toEqual([sameError, sameError]);
287
- expect(retryErrorSame.attempts).toBe(2);
288
- expect(retryErrorSame.cause).toBe(sameError);
289
- expect(retryErrorSame.message).toContain("Error after 2 attempts");
290
- expect(retryErrorSame.message).toContain("Attempts 1-2");
291
- });
292
113
  async function retry(fn, totalAttempts, { exponentialDelayBase = 1e3 } = {}) {
293
114
  const errors = [];
294
115
  for (let i = 0; i < totalAttempts; i++) {
@@ -301,42 +122,8 @@ async function retry(fn, totalAttempts, { exponentialDelayBase = 1e3 } = {}) {
301
122
  }
302
123
  return Object.assign(Result.error(new RetryError(errors)), { attempts: totalAttempts });
303
124
  }
304
- (void 0)?.test("retry", async ({ expect }) => {
305
- const successFn = async () => Result.ok("success");
306
- expect(await retry(successFn, 3, { exponentialDelayBase: 0 })).toEqual({
307
- status: "ok",
308
- data: "success",
309
- attempts: 1
310
- });
311
- let attemptCount = 0;
312
- const eventualSuccessFn = async () => {
313
- return ++attemptCount < 2 ? Result.error(/* @__PURE__ */ new Error(`Attempt ${attemptCount} failed`)) : Result.ok("eventual success");
314
- };
315
- expect(await retry(eventualSuccessFn, 3, { exponentialDelayBase: 0 })).toEqual({
316
- status: "ok",
317
- data: "eventual success",
318
- attempts: 2
319
- });
320
- const errors = [
321
- /* @__PURE__ */ new Error("Error 1"),
322
- /* @__PURE__ */ new Error("Error 2"),
323
- /* @__PURE__ */ new Error("Error 3")
324
- ];
325
- const allFailFn = async (attempt) => {
326
- return Result.error(errors[attempt]);
327
- };
328
- const allFailResult = await retry(allFailFn, 3, { exponentialDelayBase: 0 });
329
- expect(allFailResult).toEqual({
330
- status: "error",
331
- error: expect.any(RetryError),
332
- attempts: 3
333
- });
334
- const retryError = allFailResult.error;
335
- expect(retryError.errors).toEqual(errors);
336
- expect(retryError.attempts).toBe(3);
337
- });
338
-
339
125
  //#endregion
340
126
  exports.AsyncResult = AsyncResult;
341
127
  exports.Result = Result;
128
+
342
129
  //# sourceMappingURL=results.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"results.js","names":[],"sources":["../../src/utils/results.tsx"],"sourcesContent":["import { wait } from \"./promises\";\nimport { deindent, nicify } from \"./strings\";\n\nexport type Result<T, E = unknown> =\n | {\n status: \"ok\",\n data: T,\n }\n | {\n status: \"error\",\n error: E,\n };\n\nexport type AsyncResult<T, E = unknown, P = void> =\n | Result<T, E>\n | (\n & {\n status: \"pending\",\n }\n & {\n progress: P,\n }\n );\n\n\nexport const Result = {\n fromThrowing,\n fromThrowingAsync,\n fromPromise: promiseToResult,\n ok<T>(data: T): Result<T, never> & { status: \"ok\" } {\n return {\n status: \"ok\",\n data,\n };\n },\n error<E>(error: E): Result<never, E> & { status: \"error\" } {\n return {\n status: \"error\",\n error,\n };\n },\n map: mapResult,\n or: <T, E, U>(result: Result<T, E>, fallback: U): T | U => {\n return result.status === \"ok\" ? result.data : fallback;\n },\n orThrow: <T, E>(result: Result<T, E>): T => {\n if (result.status === \"error\") {\n throw result.error;\n }\n return result.data;\n },\n orThrowAsync: async <T, E>(result: Promise<Result<T, E>>): Promise<T> => {\n return Result.orThrow(await result);\n },\n retry,\n};\nimport.meta.vitest?.test(\"Result.ok and Result.error\", ({ expect }) => {\n // Test Result.ok\n const okResult = Result.ok(42);\n expect(okResult.status).toBe(\"ok\");\n expect(okResult.data).toBe(42);\n\n // Test Result.error\n const error = new Error(\"Test error\");\n const errorResult = Result.error(error);\n expect(errorResult.status).toBe(\"error\");\n expect(errorResult.error).toBe(error);\n});\n\nimport.meta.vitest?.test(\"Result.or\", ({ expect }) => {\n // Test with ok result\n const okResult: Result<number, string> = { status: \"ok\", data: 42 };\n expect(Result.or(okResult, 0)).toBe(42);\n\n // Test with error result\n const errorResult: Result<number, string> = { status: \"error\", error: \"error message\" };\n expect(Result.or(errorResult, 0)).toBe(0);\n});\n\nimport.meta.vitest?.test(\"Result.orThrow\", ({ expect }) => {\n // Test with ok result\n const okResult: Result<number, Error> = { status: \"ok\", data: 42 };\n expect(Result.orThrow(okResult)).toBe(42);\n\n // Test with error result\n const error = new Error(\"Test error\");\n const errorResult: Result<number, Error> = { status: \"error\", error };\n expect(() => Result.orThrow(errorResult)).toThrow(error);\n});\n\nimport.meta.vitest?.test(\"Result.orThrowAsync\", async ({ expect }) => {\n // Test with ok result\n const okPromise = Promise.resolve({ status: \"ok\", data: 42 } as Result<number, Error>);\n expect(await Result.orThrowAsync(okPromise)).toBe(42);\n\n // Test with error result\n const error = new Error(\"Test error\");\n const errorPromise = Promise.resolve({ status: \"error\", error } as Result<number, Error>);\n await expect(Result.orThrowAsync(errorPromise)).rejects.toThrow(error);\n});\n\nexport const AsyncResult = {\n fromThrowing,\n fromPromise: promiseToResult,\n ok: Result.ok,\n error: Result.error,\n pending,\n map: mapResult,\n or: <T, E, P, U>(result: AsyncResult<T, E, P>, fallback: U): T | U => {\n if (result.status === \"pending\") {\n return fallback;\n }\n return Result.or(result, fallback);\n },\n orThrow: <T, E, P>(result: AsyncResult<T, E, P>): T => {\n if (result.status === \"pending\") {\n throw new Error(\"Result still pending\");\n }\n return Result.orThrow(result);\n },\n retry,\n};\nimport.meta.vitest?.test(\"AsyncResult.or\", ({ expect }) => {\n // Test with ok result\n const okResult: AsyncResult<number, string> = { status: \"ok\", data: 42 };\n expect(AsyncResult.or(okResult, 0)).toBe(42);\n\n // Test with error result\n const errorResult: AsyncResult<number, string> = { status: \"error\", error: \"error message\" };\n expect(AsyncResult.or(errorResult, 0)).toBe(0);\n\n // Test with pending result\n const pendingResult: AsyncResult<number, string> = { status: \"pending\", progress: undefined };\n expect(AsyncResult.or(pendingResult, 0)).toBe(0);\n});\n\nimport.meta.vitest?.test(\"AsyncResult.orThrow\", ({ expect }) => {\n // Test with ok result\n const okResult: AsyncResult<number, Error> = { status: \"ok\", data: 42 };\n expect(AsyncResult.orThrow(okResult)).toBe(42);\n\n // Test with error result\n const error = new Error(\"Test error\");\n const errorResult: AsyncResult<number, Error> = { status: \"error\", error };\n expect(() => AsyncResult.orThrow(errorResult)).toThrow(error);\n\n // Test with pending result\n const pendingResult: AsyncResult<number, Error> = { status: \"pending\", progress: undefined };\n expect(() => AsyncResult.orThrow(pendingResult)).toThrow(\"Result still pending\");\n});\n\nfunction pending(): AsyncResult<never, never, void> & { status: \"pending\" };\nfunction pending<P>(progress: P): AsyncResult<never, never, P> & { status: \"pending\" };\nfunction pending<P>(progress?: P): AsyncResult<never, never, P> & { status: \"pending\" } {\n return {\n status: \"pending\",\n progress: progress!,\n };\n}\nimport.meta.vitest?.test(\"pending\", ({ expect }) => {\n // Test without progress\n const pendingResult = pending();\n expect(pendingResult.status).toBe(\"pending\");\n expect(pendingResult.progress).toBe(undefined);\n\n // Test with progress\n const progressValue = { loaded: 50, total: 100 };\n const pendingWithProgress = pending(progressValue);\n expect(pendingWithProgress.status).toBe(\"pending\");\n expect(pendingWithProgress.progress).toBe(progressValue);\n});\n\nasync function promiseToResult<T>(promise: Promise<T>): Promise<Result<T>> {\n try {\n const value = await promise;\n return Result.ok(value);\n } catch (error) {\n return Result.error(error);\n }\n}\nimport.meta.vitest?.test(\"promiseToResult\", async ({ expect }) => {\n // Test with resolved promise\n const resolvedPromise = Promise.resolve(42);\n const resolvedResult = await promiseToResult(resolvedPromise);\n expect(resolvedResult.status).toBe(\"ok\");\n if (resolvedResult.status === \"ok\") {\n expect(resolvedResult.data).toBe(42);\n }\n\n // Test with rejected promise\n const error = new Error(\"Test error\");\n const rejectedPromise = Promise.reject(error);\n const rejectedResult = await promiseToResult(rejectedPromise);\n expect(rejectedResult.status).toBe(\"error\");\n if (rejectedResult.status === \"error\") {\n expect(rejectedResult.error).toBe(error);\n }\n});\n\nfunction fromThrowing<T>(fn: () => T): Result<T, unknown> {\n try {\n return Result.ok(fn());\n } catch (error) {\n return Result.error(error);\n }\n}\nimport.meta.vitest?.test(\"fromThrowing\", ({ expect }) => {\n // Test with function that succeeds\n const successFn = () => 42;\n const successResult = fromThrowing(successFn);\n expect(successResult.status).toBe(\"ok\");\n if (successResult.status === \"ok\") {\n expect(successResult.data).toBe(42);\n }\n\n // Test with function that throws\n const error = new Error(\"Test error\");\n const errorFn = () => {\n throw error;\n };\n const errorResult = fromThrowing(errorFn);\n expect(errorResult.status).toBe(\"error\");\n if (errorResult.status === \"error\") {\n expect(errorResult.error).toBe(error);\n }\n});\n\nasync function fromThrowingAsync<T>(fn: () => Promise<T>): Promise<Result<T, unknown>> {\n try {\n return Result.ok(await fn());\n } catch (error) {\n return Result.error(error);\n }\n}\nimport.meta.vitest?.test(\"fromThrowingAsync\", async ({ expect }) => {\n // Test with async function that succeeds\n const successFn = async () => 42;\n const successResult = await fromThrowingAsync(successFn);\n expect(successResult.status).toBe(\"ok\");\n if (successResult.status === \"ok\") {\n expect(successResult.data).toBe(42);\n }\n\n // Test with async function that throws\n const error = new Error(\"Test error\");\n const errorFn = async () => {\n throw error;\n };\n const errorResult = await fromThrowingAsync(errorFn);\n expect(errorResult.status).toBe(\"error\");\n if (errorResult.status === \"error\") {\n expect(errorResult.error).toBe(error);\n }\n});\n\nfunction mapResult<T, U, E = unknown, P = unknown>(result: Result<T, E>, fn: (data: T) => U): Result<U, E>;\nfunction mapResult<T, U, E = unknown, P = unknown>(result: AsyncResult<T, E, P>, fn: (data: T) => U): AsyncResult<U, E, P>;\nfunction mapResult<T, U, E = unknown, P = unknown>(result: AsyncResult<T, E, P>, fn: (data: T) => U): AsyncResult<U, E, P> {\n if (result.status === \"error\") return {\n status: \"error\",\n error: result.error,\n };\n if (result.status === \"pending\") return {\n status: \"pending\",\n ...\"progress\" in result ? { progress: result.progress } : {},\n } as any;\n\n return Result.ok(fn(result.data));\n}\nimport.meta.vitest?.test(\"mapResult\", ({ expect }) => {\n // Test with ok result\n const okResult: Result<number, string> = { status: \"ok\", data: 42 };\n const mappedOk = mapResult(okResult, (n: number) => n * 2);\n expect(mappedOk.status).toBe(\"ok\");\n if (mappedOk.status === \"ok\") {\n expect(mappedOk.data).toBe(84);\n }\n\n // Test with error result\n const errorResult: Result<number, string> = { status: \"error\", error: \"error message\" };\n const mappedError = mapResult(errorResult, (n: number) => n * 2);\n expect(mappedError.status).toBe(\"error\");\n if (mappedError.status === \"error\") {\n expect(mappedError.error).toBe(\"error message\");\n }\n\n // Test with pending result (no progress)\n const pendingResult: AsyncResult<number, string, void> = { status: \"pending\", progress: undefined };\n const mappedPending = mapResult(pendingResult, (n: number) => n * 2);\n expect(mappedPending.status).toBe(\"pending\");\n\n // Test with pending result (with progress)\n const progressValue = { loaded: 50, total: 100 };\n const pendingWithProgress: AsyncResult<number, string, typeof progressValue> = {\n status: \"pending\",\n progress: progressValue\n };\n const mappedPendingWithProgress = mapResult(pendingWithProgress, (n: number) => n * 2);\n expect(mappedPendingWithProgress.status).toBe(\"pending\");\n if (mappedPendingWithProgress.status === \"pending\") {\n expect(mappedPendingWithProgress.progress).toBe(progressValue);\n }\n});\n\n\nclass RetryError<E = unknown> extends AggregateError {\n constructor(public readonly errors: E[]) {\n const strings = errors.map(e => nicify(e));\n const isAllSame = strings.length > 1 && strings.every(s => s === strings[0]);\n super(\n errors,\n deindent`\n Error after ${errors.length} attempts.\n \n ${isAllSame ? deindent`\n Attempts 1-${errors.length}:\n ${strings[0]}\n ` : strings.map((s, i) => deindent`\n Attempt ${i + 1}:\n ${s}\n `).join(\"\\n\\n\")}\n `,\n { cause: errors[errors.length - 1] }\n );\n this.name = \"RetryError\";\n }\n\n get attempts() {\n return this.errors.length;\n }\n}\nRetryError.prototype.name = \"RetryError\";\n\nimport.meta.vitest?.test(\"RetryError\", ({ expect }) => {\n // Test with single error\n const singleError = new Error(\"Single error\");\n const retryErrorSingle = new RetryError([singleError]);\n expect(retryErrorSingle.name).toBe(\"RetryError\");\n expect(retryErrorSingle.errors).toEqual([singleError]);\n expect(retryErrorSingle.attempts).toBe(1);\n expect(retryErrorSingle.cause).toBe(singleError);\n expect(retryErrorSingle.message).toContain(\"Error after 1 attempts\");\n\n // Test with multiple different errors\n const error1 = new Error(\"Error 1\");\n const error2 = new Error(\"Error 2\");\n const retryErrorMultiple = new RetryError([error1, error2]);\n expect(retryErrorMultiple.name).toBe(\"RetryError\");\n expect(retryErrorMultiple.errors).toEqual([error1, error2]);\n expect(retryErrorMultiple.attempts).toBe(2);\n expect(retryErrorMultiple.cause).toBe(error2);\n expect(retryErrorMultiple.message).toContain(\"Error after 2 attempts\");\n expect(retryErrorMultiple.message).toContain(\"Attempt 1\");\n expect(retryErrorMultiple.message).toContain(\"Attempt 2\");\n\n // Test with multiple identical errors\n const sameError = new Error(\"Same error\");\n const retryErrorSame = new RetryError([sameError, sameError]);\n expect(retryErrorSame.name).toBe(\"RetryError\");\n expect(retryErrorSame.errors).toEqual([sameError, sameError]);\n expect(retryErrorSame.attempts).toBe(2);\n expect(retryErrorSame.cause).toBe(sameError);\n expect(retryErrorSame.message).toContain(\"Error after 2 attempts\");\n expect(retryErrorSame.message).toContain(\"Attempts 1-2\");\n});\n\nasync function retry<T, E>(\n fn: (attemptIndex: number) => Result<T, E> | Promise<Result<T, E>>,\n totalAttempts: number,\n { exponentialDelayBase = 1000 } = {},\n): Promise<Result<T, RetryError<E>> & { attempts: number }> {\n const errors: E[] = [];\n for (let i = 0; i < totalAttempts; i++) {\n const res = await fn(i);\n if (res.status === \"ok\") {\n return Object.assign(Result.ok(res.data), { attempts: i + 1 });\n } else {\n errors.push(res.error);\n if (i < totalAttempts - 1) {\n await wait((Math.random() + 0.5) * exponentialDelayBase * (2 ** i));\n }\n }\n }\n return Object.assign(Result.error(new RetryError(errors)), { attempts: totalAttempts });\n}\nimport.meta.vitest?.test(\"retry\", async ({ expect }) => {\n // Test successful on first attempt\n const successFn = async () => Result.ok(\"success\");\n const successResult = await retry(successFn, 3, { exponentialDelayBase: 0 });\n expect(successResult).toEqual({ status: \"ok\", data: \"success\", attempts: 1 });\n\n // Test successful after failures\n let attemptCount = 0;\n const eventualSuccessFn = async () => {\n return ++attemptCount < 2 ? Result.error(new Error(`Attempt ${attemptCount} failed`))\n : Result.ok(\"eventual success\");\n };\n const eventualSuccessResult = await retry(eventualSuccessFn, 3, { exponentialDelayBase: 0 });\n expect(eventualSuccessResult).toEqual({ status: \"ok\", data: \"eventual success\", attempts: 2 });\n\n // Test all attempts fail\n const errors = [new Error(\"Error 1\"), new Error(\"Error 2\"), new Error(\"Error 3\")];\n const allFailFn = async (attempt: number) => {\n return Result.error(errors[attempt]);\n };\n const allFailResult = await retry(allFailFn, 3, { exponentialDelayBase: 0 });\n expect(allFailResult).toEqual({ status: \"error\", error: expect.any(RetryError), attempts: 3 });\n const retryError = (allFailResult as any).error as RetryError;\n expect(retryError.errors).toEqual(errors);\n expect(retryError.attempts).toBe(3);\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"results.js","names":[],"sources":["../../src/utils/results.tsx"],"sourcesContent":["import { wait } from \"./promises\";\nimport { deindent, nicify } from \"./strings\";\n\nexport type Result<T, E = unknown> =\n | {\n status: \"ok\",\n data: T,\n }\n | {\n status: \"error\",\n error: E,\n };\n\nexport type AsyncResult<T, E = unknown, P = void> =\n | Result<T, E>\n | (\n & {\n status: \"pending\",\n }\n & {\n progress: P,\n }\n );\n\n\nexport const Result = {\n fromThrowing,\n fromThrowingAsync,\n fromPromise: promiseToResult,\n ok<T>(data: T): Result<T, never> & { status: \"ok\" } {\n return {\n status: \"ok\",\n data,\n };\n },\n error<E>(error: E): Result<never, E> & { status: \"error\" } {\n return {\n status: \"error\",\n error,\n };\n },\n map: mapResult,\n or: <T, E, U>(result: Result<T, E>, fallback: U): T | U => {\n return result.status === \"ok\" ? result.data : fallback;\n },\n orThrow: <T, E>(result: Result<T, E>): T => {\n if (result.status === \"error\") {\n throw result.error;\n }\n return result.data;\n },\n orThrowAsync: async <T, E>(result: Promise<Result<T, E>>): Promise<T> => {\n return Result.orThrow(await result);\n },\n retry,\n};\nimport.meta.vitest?.test(\"Result.ok and Result.error\", ({ expect }) => {\n // Test Result.ok\n const okResult = Result.ok(42);\n expect(okResult.status).toBe(\"ok\");\n expect(okResult.data).toBe(42);\n\n // Test Result.error\n const error = new Error(\"Test error\");\n const errorResult = Result.error(error);\n expect(errorResult.status).toBe(\"error\");\n expect(errorResult.error).toBe(error);\n});\n\nimport.meta.vitest?.test(\"Result.or\", ({ expect }) => {\n // Test with ok result\n const okResult: Result<number, string> = { status: \"ok\", data: 42 };\n expect(Result.or(okResult, 0)).toBe(42);\n\n // Test with error result\n const errorResult: Result<number, string> = { status: \"error\", error: \"error message\" };\n expect(Result.or(errorResult, 0)).toBe(0);\n});\n\nimport.meta.vitest?.test(\"Result.orThrow\", ({ expect }) => {\n // Test with ok result\n const okResult: Result<number, Error> = { status: \"ok\", data: 42 };\n expect(Result.orThrow(okResult)).toBe(42);\n\n // Test with error result\n const error = new Error(\"Test error\");\n const errorResult: Result<number, Error> = { status: \"error\", error };\n expect(() => Result.orThrow(errorResult)).toThrow(error);\n});\n\nimport.meta.vitest?.test(\"Result.orThrowAsync\", async ({ expect }) => {\n // Test with ok result\n const okPromise = Promise.resolve({ status: \"ok\", data: 42 } as Result<number, Error>);\n expect(await Result.orThrowAsync(okPromise)).toBe(42);\n\n // Test with error result\n const error = new Error(\"Test error\");\n const errorPromise = Promise.resolve({ status: \"error\", error } as Result<number, Error>);\n await expect(Result.orThrowAsync(errorPromise)).rejects.toThrow(error);\n});\n\nexport const AsyncResult = {\n fromThrowing,\n fromPromise: promiseToResult,\n ok: Result.ok,\n error: Result.error,\n pending,\n map: mapResult,\n or: <T, E, P, U>(result: AsyncResult<T, E, P>, fallback: U): T | U => {\n if (result.status === \"pending\") {\n return fallback;\n }\n return Result.or(result, fallback);\n },\n orThrow: <T, E, P>(result: AsyncResult<T, E, P>): T => {\n if (result.status === \"pending\") {\n throw new Error(\"Result still pending\");\n }\n return Result.orThrow(result);\n },\n retry,\n};\nimport.meta.vitest?.test(\"AsyncResult.or\", ({ expect }) => {\n // Test with ok result\n const okResult: AsyncResult<number, string> = { status: \"ok\", data: 42 };\n expect(AsyncResult.or(okResult, 0)).toBe(42);\n\n // Test with error result\n const errorResult: AsyncResult<number, string> = { status: \"error\", error: \"error message\" };\n expect(AsyncResult.or(errorResult, 0)).toBe(0);\n\n // Test with pending result\n const pendingResult: AsyncResult<number, string> = { status: \"pending\", progress: undefined };\n expect(AsyncResult.or(pendingResult, 0)).toBe(0);\n});\n\nimport.meta.vitest?.test(\"AsyncResult.orThrow\", ({ expect }) => {\n // Test with ok result\n const okResult: AsyncResult<number, Error> = { status: \"ok\", data: 42 };\n expect(AsyncResult.orThrow(okResult)).toBe(42);\n\n // Test with error result\n const error = new Error(\"Test error\");\n const errorResult: AsyncResult<number, Error> = { status: \"error\", error };\n expect(() => AsyncResult.orThrow(errorResult)).toThrow(error);\n\n // Test with pending result\n const pendingResult: AsyncResult<number, Error> = { status: \"pending\", progress: undefined };\n expect(() => AsyncResult.orThrow(pendingResult)).toThrow(\"Result still pending\");\n});\n\nfunction pending(): AsyncResult<never, never, void> & { status: \"pending\" };\nfunction pending<P>(progress: P): AsyncResult<never, never, P> & { status: \"pending\" };\nfunction pending<P>(progress?: P): AsyncResult<never, never, P> & { status: \"pending\" } {\n return {\n status: \"pending\",\n progress: progress!,\n };\n}\nimport.meta.vitest?.test(\"pending\", ({ expect }) => {\n // Test without progress\n const pendingResult = pending();\n expect(pendingResult.status).toBe(\"pending\");\n expect(pendingResult.progress).toBe(undefined);\n\n // Test with progress\n const progressValue = { loaded: 50, total: 100 };\n const pendingWithProgress = pending(progressValue);\n expect(pendingWithProgress.status).toBe(\"pending\");\n expect(pendingWithProgress.progress).toBe(progressValue);\n});\n\nasync function promiseToResult<T>(promise: Promise<T>): Promise<Result<T>> {\n try {\n const value = await promise;\n return Result.ok(value);\n } catch (error) {\n return Result.error(error);\n }\n}\nimport.meta.vitest?.test(\"promiseToResult\", async ({ expect }) => {\n // Test with resolved promise\n const resolvedPromise = Promise.resolve(42);\n const resolvedResult = await promiseToResult(resolvedPromise);\n expect(resolvedResult.status).toBe(\"ok\");\n if (resolvedResult.status === \"ok\") {\n expect(resolvedResult.data).toBe(42);\n }\n\n // Test with rejected promise\n const error = new Error(\"Test error\");\n const rejectedPromise = Promise.reject(error);\n const rejectedResult = await promiseToResult(rejectedPromise);\n expect(rejectedResult.status).toBe(\"error\");\n if (rejectedResult.status === \"error\") {\n expect(rejectedResult.error).toBe(error);\n }\n});\n\nfunction fromThrowing<T>(fn: () => T): Result<T, unknown> {\n try {\n return Result.ok(fn());\n } catch (error) {\n return Result.error(error);\n }\n}\nimport.meta.vitest?.test(\"fromThrowing\", ({ expect }) => {\n // Test with function that succeeds\n const successFn = () => 42;\n const successResult = fromThrowing(successFn);\n expect(successResult.status).toBe(\"ok\");\n if (successResult.status === \"ok\") {\n expect(successResult.data).toBe(42);\n }\n\n // Test with function that throws\n const error = new Error(\"Test error\");\n const errorFn = () => {\n throw error;\n };\n const errorResult = fromThrowing(errorFn);\n expect(errorResult.status).toBe(\"error\");\n if (errorResult.status === \"error\") {\n expect(errorResult.error).toBe(error);\n }\n});\n\nasync function fromThrowingAsync<T>(fn: () => Promise<T>): Promise<Result<T, unknown>> {\n try {\n return Result.ok(await fn());\n } catch (error) {\n return Result.error(error);\n }\n}\nimport.meta.vitest?.test(\"fromThrowingAsync\", async ({ expect }) => {\n // Test with async function that succeeds\n const successFn = async () => 42;\n const successResult = await fromThrowingAsync(successFn);\n expect(successResult.status).toBe(\"ok\");\n if (successResult.status === \"ok\") {\n expect(successResult.data).toBe(42);\n }\n\n // Test with async function that throws\n const error = new Error(\"Test error\");\n const errorFn = async () => {\n throw error;\n };\n const errorResult = await fromThrowingAsync(errorFn);\n expect(errorResult.status).toBe(\"error\");\n if (errorResult.status === \"error\") {\n expect(errorResult.error).toBe(error);\n }\n});\n\nfunction mapResult<T, U, E = unknown, P = unknown>(result: Result<T, E>, fn: (data: T) => U): Result<U, E>;\nfunction mapResult<T, U, E = unknown, P = unknown>(result: AsyncResult<T, E, P>, fn: (data: T) => U): AsyncResult<U, E, P>;\nfunction mapResult<T, U, E = unknown, P = unknown>(result: AsyncResult<T, E, P>, fn: (data: T) => U): AsyncResult<U, E, P> {\n if (result.status === \"error\") return {\n status: \"error\",\n error: result.error,\n };\n if (result.status === \"pending\") return {\n status: \"pending\",\n ...\"progress\" in result ? { progress: result.progress } : {},\n } as any;\n\n return Result.ok(fn(result.data));\n}\nimport.meta.vitest?.test(\"mapResult\", ({ expect }) => {\n // Test with ok result\n const okResult: Result<number, string> = { status: \"ok\", data: 42 };\n const mappedOk = mapResult(okResult, (n: number) => n * 2);\n expect(mappedOk.status).toBe(\"ok\");\n if (mappedOk.status === \"ok\") {\n expect(mappedOk.data).toBe(84);\n }\n\n // Test with error result\n const errorResult: Result<number, string> = { status: \"error\", error: \"error message\" };\n const mappedError = mapResult(errorResult, (n: number) => n * 2);\n expect(mappedError.status).toBe(\"error\");\n if (mappedError.status === \"error\") {\n expect(mappedError.error).toBe(\"error message\");\n }\n\n // Test with pending result (no progress)\n const pendingResult: AsyncResult<number, string, void> = { status: \"pending\", progress: undefined };\n const mappedPending = mapResult(pendingResult, (n: number) => n * 2);\n expect(mappedPending.status).toBe(\"pending\");\n\n // Test with pending result (with progress)\n const progressValue = { loaded: 50, total: 100 };\n const pendingWithProgress: AsyncResult<number, string, typeof progressValue> = {\n status: \"pending\",\n progress: progressValue\n };\n const mappedPendingWithProgress = mapResult(pendingWithProgress, (n: number) => n * 2);\n expect(mappedPendingWithProgress.status).toBe(\"pending\");\n if (mappedPendingWithProgress.status === \"pending\") {\n expect(mappedPendingWithProgress.progress).toBe(progressValue);\n }\n});\n\n\nclass RetryError<E = unknown> extends AggregateError {\n constructor(public readonly errors: E[]) {\n const strings = errors.map(e => nicify(e));\n const isAllSame = strings.length > 1 && strings.every(s => s === strings[0]);\n super(\n errors,\n deindent`\n Error after ${errors.length} attempts.\n \n ${isAllSame ? deindent`\n Attempts 1-${errors.length}:\n ${strings[0]}\n ` : strings.map((s, i) => deindent`\n Attempt ${i + 1}:\n ${s}\n `).join(\"\\n\\n\")}\n `,\n { cause: errors[errors.length - 1] }\n );\n this.name = \"RetryError\";\n }\n\n get attempts() {\n return this.errors.length;\n }\n}\nRetryError.prototype.name = \"RetryError\";\n\nimport.meta.vitest?.test(\"RetryError\", ({ expect }) => {\n // Test with single error\n const singleError = new Error(\"Single error\");\n const retryErrorSingle = new RetryError([singleError]);\n expect(retryErrorSingle.name).toBe(\"RetryError\");\n expect(retryErrorSingle.errors).toEqual([singleError]);\n expect(retryErrorSingle.attempts).toBe(1);\n expect(retryErrorSingle.cause).toBe(singleError);\n expect(retryErrorSingle.message).toContain(\"Error after 1 attempts\");\n\n // Test with multiple different errors\n const error1 = new Error(\"Error 1\");\n const error2 = new Error(\"Error 2\");\n const retryErrorMultiple = new RetryError([error1, error2]);\n expect(retryErrorMultiple.name).toBe(\"RetryError\");\n expect(retryErrorMultiple.errors).toEqual([error1, error2]);\n expect(retryErrorMultiple.attempts).toBe(2);\n expect(retryErrorMultiple.cause).toBe(error2);\n expect(retryErrorMultiple.message).toContain(\"Error after 2 attempts\");\n expect(retryErrorMultiple.message).toContain(\"Attempt 1\");\n expect(retryErrorMultiple.message).toContain(\"Attempt 2\");\n\n // Test with multiple identical errors\n const sameError = new Error(\"Same error\");\n const retryErrorSame = new RetryError([sameError, sameError]);\n expect(retryErrorSame.name).toBe(\"RetryError\");\n expect(retryErrorSame.errors).toEqual([sameError, sameError]);\n expect(retryErrorSame.attempts).toBe(2);\n expect(retryErrorSame.cause).toBe(sameError);\n expect(retryErrorSame.message).toContain(\"Error after 2 attempts\");\n expect(retryErrorSame.message).toContain(\"Attempts 1-2\");\n});\n\nasync function retry<T, E>(\n fn: (attemptIndex: number) => Result<T, E> | Promise<Result<T, E>>,\n totalAttempts: number,\n { exponentialDelayBase = 1000 } = {},\n): Promise<Result<T, RetryError<E>> & { attempts: number }> {\n const errors: E[] = [];\n for (let i = 0; i < totalAttempts; i++) {\n const res = await fn(i);\n if (res.status === \"ok\") {\n return Object.assign(Result.ok(res.data), { attempts: i + 1 });\n } else {\n errors.push(res.error);\n if (i < totalAttempts - 1) {\n await wait((Math.random() + 0.5) * exponentialDelayBase * (2 ** i));\n }\n }\n }\n return Object.assign(Result.error(new RetryError(errors)), { attempts: totalAttempts });\n}\nimport.meta.vitest?.test(\"retry\", async ({ expect }) => {\n // Test successful on first attempt\n const successFn = async () => Result.ok(\"success\");\n const successResult = await retry(successFn, 3, { exponentialDelayBase: 0 });\n expect(successResult).toEqual({ status: \"ok\", data: \"success\", attempts: 1 });\n\n // Test successful after failures\n let attemptCount = 0;\n const eventualSuccessFn = async () => {\n return ++attemptCount < 2 ? Result.error(new Error(`Attempt ${attemptCount} failed`))\n : Result.ok(\"eventual success\");\n };\n const eventualSuccessResult = await retry(eventualSuccessFn, 3, { exponentialDelayBase: 0 });\n expect(eventualSuccessResult).toEqual({ status: \"ok\", data: \"eventual success\", attempts: 2 });\n\n // Test all attempts fail\n const errors = [new Error(\"Error 1\"), new Error(\"Error 2\"), new Error(\"Error 3\")];\n const allFailFn = async (attempt: number) => {\n return Result.error(errors[attempt]);\n };\n const allFailResult = await retry(allFailFn, 3, { exponentialDelayBase: 0 });\n expect(allFailResult).toEqual({ status: \"error\", error: expect.any(RetryError), attempts: 3 });\n const retryError = (allFailResult as any).error as RetryError;\n expect(retryError.errors).toEqual(errors);\n expect(retryError.attempts).toBe(3);\n});\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
-
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
2
  //#region src/utils/sentry.tsx
4
3
  const sentryBaseConfig = {
5
4
  ignoreErrors: ["NotFoundError: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.", "NotFoundError: Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node."],
@@ -10,7 +9,7 @@ const sentryBaseConfig = {
10
9
  replaysOnErrorSampleRate: 1,
11
10
  replaysSessionSampleRate: 1
12
11
  };
13
-
14
12
  //#endregion
15
13
  exports.sentryBaseConfig = sentryBaseConfig;
14
+
16
15
  //# sourceMappingURL=sentry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sentry.js","names":[],"sources":["../../src/utils/sentry.tsx"],"sourcesContent":["export const sentryBaseConfig = {\n ignoreErrors: [\n // React throws these errors when used with some browser extensions (eg. Google Translate)\n \"NotFoundError: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.\",\n \"NotFoundError: Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node.\",\n ],\n\n normalizeDepth: 5,\n maxValueLength: 5000,\n\n // Adjust this value in production, or use tracesSampler for greater control\n tracesSampleRate: 1.0,\n\n // Setting this option to true will print useful information to the console while you're setting up Sentry.\n debug: false,\n\n replaysOnErrorSampleRate: 1.0,\n\n replaysSessionSampleRate: 1.0,\n};\n"],"mappings":";;;AAAA,MAAa,mBAAmB;CAC9B,cAAc,CAEZ,iHACA,+IACD;CAED,gBAAgB;CAChB,gBAAgB;CAGhB,kBAAkB;CAGlB,OAAO;CAEP,0BAA0B;CAE1B,0BAA0B;CAC3B"}
1
+ {"version":3,"file":"sentry.js","names":[],"sources":["../../src/utils/sentry.tsx"],"sourcesContent":["export const sentryBaseConfig = {\n ignoreErrors: [\n // React throws these errors when used with some browser extensions (eg. Google Translate)\n \"NotFoundError: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.\",\n \"NotFoundError: Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node.\",\n ],\n\n normalizeDepth: 5,\n maxValueLength: 5000,\n\n // Adjust this value in production, or use tracesSampler for greater control\n tracesSampleRate: 1.0,\n\n // Setting this option to true will print useful information to the console while you're setting up Sentry.\n debug: false,\n\n replaysOnErrorSampleRate: 1.0,\n\n replaysSessionSampleRate: 1.0,\n};\n"],"mappings":";;AAAA,MAAa,mBAAmB;CAC9B,cAAc,CAEZ,iHACA,8IACF;CAEA,gBAAgB;CAChB,gBAAgB;CAGhB,kBAAkB;CAGlB,OAAO;CAEP,0BAA0B;CAE1B,0BAA0B;AAC5B"}
@@ -1,4 +1,4 @@
1
- import { AsyncResult, Result } from "./results.js";
1
+ import { n as Result, t as AsyncResult } from "../results-DP3BzoL6.js";
2
2
  import { ReactPromise } from "./promises.js";
3
3
  import { ReadWriteLock } from "./locks.js";
4
4
 
@@ -1 +1 @@
1
- {"version":3,"file":"stores.d.ts","names":[],"sources":["../../src/utils/stores.tsx"],"mappings":";;;;;KAKY,aAAA;EACV,GAAA,IAAO,CAAA;EACP,QAAA,CAAS,QAAA,GAAW,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,CAAA;IAA2B,WAAA;EAAA;EACnE,UAAA,CAAW,QAAA,GAAW,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,CAAA;IAA2B,WAAA;EAAA;AAAA;AAAA,KAG3D,6BAAA,OAAoC,IAAA;EAAQ,KAAA,EAAO,WAAA,CAAY,CAAA;EAAI,QAAA,EAAU,WAAA,CAAY,CAAA;EAAI,WAAA,EAAa,CAAA;AAAA;AAAA,KAE1G,kBAAA;EACV,WAAA;EACA,GAAA,IAAO,WAAA,CAAY,CAAA;EACnB,SAAA,IAAa,YAAA,CAAa,CAAA;EAC1B,QAAA,CAAS,QAAA,GAAW,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,CAAA;IAA2B,WAAA;EAAA;EACnE,UAAA,CAAW,QAAA,GAAW,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,CAAA;IAA2B,WAAA;EAAA;EACrE,aAAA,CAAc,QAAA,EAAU,6BAAA,CAA8B,CAAA;IAAO,WAAA;EAAA;EAC7D,eAAA,CAAgB,QAAA,EAAU,6BAAA,CAA8B,CAAA;IAAO,WAAA;EAAA;AAAA;AAAA,cAGpD,KAAA,eAAoB,aAAA,CAAc,CAAA;EAAA,QAInC,MAAA;EAAA,iBAHO,UAAA;cAGP,MAAA,EAAQ,CAAA;EAGlB,GAAA,CAAA,GAAO,CAAA;EAIP,GAAA,CAAI,KAAA,EAAO,CAAA;EAMX,MAAA,CAAO,OAAA,GAAU,KAAA,EAAO,CAAA,KAAM,CAAA,GAAI,CAAA;EAMlC,QAAA,CAAS,QAAA,GAAW,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,CAAA;IAA2B,WAAA;EAAA;EAUnE,UAAA,CAAW,QAAA,GAAW,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,CAAA;IAA2B,WAAA;EAAA;AAAA;AAAA,cAS1D,SAAA,EAAS,aAAA;AAAA,cAGT,UAAA,eAAyB,kBAAA,CAAmB,CAAA;EAAA,QAC/C,YAAA;EAAA,QACA,kBAAA;EAAA,QAEA,WAAA;EAAA,QACA,eAAA;EAAA,iBACS,uBAAA;EAAA,iBAEA,UAAA;EAAA,QAET,cAAA;EAAA,QACA,qBAAA;iBAEO,IAAA,QAAY,CAAA;EAS3B,WAAA,CAAA;EAIA,UAAA,CAAA;EAIA,GAAA,CAAA;;;;;;;;;;;;;;;;;EAUA,SAAA,CAAA,GAAa,YAAA,CAAa,CAAA;EAmB1B,YAAA,CAAa,MAAA,EAAQ,MAAA,CAAO,CAAA,GAAI,UAAA;EAuChC,GAAA,CAAI,KAAA,EAAO,CAAA;EAIX,MAAA,CAAO,OAAA,GAAU,KAAA,EAAO,CAAA,iBAAkB,CAAA,GAAI,CAAA;EAMxC,QAAA,CAAS,OAAA,EAAS,OAAA,CAAQ,CAAA,IAAK,OAAA;EAQrC,cAAA,CAAA;EAQA,WAAA,CAAY,KAAA;EAIZ,GAAA,GAAA,CAAO,MAAA,GAAS,KAAA,EAAO,CAAA,KAAM,CAAA,GAAI,UAAA,CAAW,CAAA;EAQ5C,QAAA,CAAS,QAAA,GAAW,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,CAAA;IAA2B,WAAA;EAAA;EAQnE,aAAA,CAAc,QAAA,EAAU,6BAAA,CAA8B,CAAA;IAAO,WAAA;EAAA;EAU7D,UAAA,CAAW,QAAA,GAAW,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,CAAA;IAA2B,WAAA;EAAA;EAQrE,eAAA,CAAgB,QAAA,EAAU,6BAAA,CAA8B,CAAA;IAAO,WAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"stores.d.ts","names":[],"sources":["../../src/utils/stores.tsx"],"mappings":";;;;;KAKY,aAAA;EACV,GAAA,IAAO,CAAA;EACP,QAAA,CAAS,QAAA,GAAW,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,CAAA;IAA2B,WAAA;EAAA;EACnE,UAAA,CAAW,QAAA,GAAW,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,CAAA;IAA2B,WAAA;EAAA;AAAA;AAAA,KAG3D,6BAAA,OAAoC,IAAA;EAAQ,KAAA,EAAO,WAAA,CAAY,CAAA;EAAI,QAAA,EAAU,WAAA,CAAY,CAAA;EAAI,WAAA,EAAa,CAAA;AAAA;AAAA,KAE1G,kBAAA;EACV,WAAA;EACA,GAAA,IAAO,WAAA,CAAY,CAAA;EACnB,SAAA,IAAa,YAAA,CAAa,CAAA;EAC1B,QAAA,CAAS,QAAA,GAAW,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,CAAA;IAA2B,WAAA;EAAA;EACnE,UAAA,CAAW,QAAA,GAAW,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,CAAA;IAA2B,WAAA;EAAA;EACrE,aAAA,CAAc,QAAA,EAAU,6BAAA,CAA8B,CAAA;IAAO,WAAA;EAAA;EAC7D,eAAA,CAAgB,QAAA,EAAU,6BAAA,CAA8B,CAAA;IAAO,WAAA;EAAA;AAAA;AAAA,cAGpD,KAAA,eAAoB,aAAA,CAAc,CAAA;EAAA,QAInC,MAAA;EAAA,iBAHO,UAAA;cAGP,MAAA,EAAQ,CAAA;EAGlB,GAAA,IAAO,CAAA;EAIP,GAAA,CAAI,KAAA,EAAO,CAAA;EAMX,MAAA,CAAO,OAAA,GAAU,KAAA,EAAO,CAAA,KAAM,CAAA,GAAI,CAAA;EAMlC,QAAA,CAAS,QAAA,GAAW,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,CAAA;IAA2B,WAAA;EAAA;EAUnE,UAAA,CAAW,QAAA,GAAW,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,CAAA;IAA2B,WAAA;EAAA;AAAA;AAAA,cAS1D,SAAA,EAAS,aAAsB;AAAA,cAG/B,UAAA,eAAyB,kBAAA,CAAmB,CAAA;EAAA,QAC/C,YAAA;EAAA,QACA,kBAAA;EAAA,QAEA,WAAA;EAAA,QACA,eAAA;EAAA,iBACS,uBAAA;EAAA,iBAEA,UAAA;EAAA,QAET,cAAA;EAAA,QACA,qBAAA;iBAEO,IAAA,QAAY,CAAA;EAS3B,WAAA;EAIA,UAAA;EAIA,GAAA;;;;;;;;;;;;;;;;;EAUA,SAAA,IAAa,YAAA,CAAa,CAAA;EAmB1B,YAAA,CAAa,MAAA,EAAQ,MAAA,CAAO,CAAA,GAAI,UAAA;EAuChC,GAAA,CAAI,KAAA,EAAO,CAAA;EAIX,MAAA,CAAO,OAAA,GAAU,KAAA,EAAO,CAAA,iBAAkB,CAAA,GAAI,CAAA;EAMxC,QAAA,CAAS,OAAA,EAAS,OAAA,CAAQ,CAAA,IAAK,OAAA;EAQrC,cAAA;EAQA,WAAA,CAAY,KAAA;EAIZ,GAAA,IAAO,MAAA,GAAS,KAAA,EAAO,CAAA,KAAM,CAAA,GAAI,UAAA,CAAW,CAAA;EAQ5C,QAAA,CAAS,QAAA,GAAW,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,CAAA;IAA2B,WAAA;EAAA;EAQnE,aAAA,CAAc,QAAA,EAAU,6BAAA,CAA8B,CAAA;IAAO,WAAA;EAAA;EAU7D,UAAA,CAAW,QAAA,GAAW,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,CAAA;IAA2B,WAAA;EAAA;EAQrE,eAAA,CAAgB,QAAA,EAAU,6BAAA,CAA8B,CAAA;IAAO,WAAA;EAAA;AAAA"}
@@ -1,10 +1,8 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_chunk = require('../chunk-BE-pF4vm.js');
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
2
  let __promises_js = require("./promises.js");
4
3
  let __results_js = require("./results.js");
5
4
  let __uuids_js = require("./uuids.js");
6
5
  let __locks_js = require("./locks.js");
7
-
8
6
  //#region src/utils/stores.tsx
9
7
  var Store = class {
10
8
  constructor(_value) {
@@ -171,9 +169,9 @@ var AsyncStore = class AsyncStore {
171
169
  return { unsubscribe };
172
170
  }
173
171
  };
174
-
175
172
  //#endregion
176
173
  exports.AsyncStore = AsyncStore;
177
174
  exports.Store = Store;
178
175
  exports.storeLock = storeLock;
176
+
179
177
  //# sourceMappingURL=stores.js.map