@hexclave/shared 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1144) hide show
  1. package/LICENSE +7 -0
  2. package/dist/ai/image-limits.d.ts +24 -0
  3. package/dist/ai/image-limits.d.ts.map +1 -0
  4. package/dist/ai/image-limits.js +61 -0
  5. package/dist/ai/image-limits.js.map +1 -0
  6. package/dist/ai/unified-prompts/reminders.d.ts +5 -0
  7. package/dist/ai/unified-prompts/reminders.d.ts.map +1 -0
  8. package/dist/ai/unified-prompts/reminders.js +33 -0
  9. package/dist/ai/unified-prompts/reminders.js.map +1 -0
  10. package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.d.ts +11 -0
  11. package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.d.ts.map +1 -0
  12. package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js +851 -0
  13. package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js.map +1 -0
  14. package/dist/ai/unified-prompts/skill-site-prompt-parts/brain.d.ts +5 -0
  15. package/dist/ai/unified-prompts/skill-site-prompt-parts/brain.d.ts.map +1 -0
  16. package/dist/ai/unified-prompts/skill-site-prompt-parts/brain.js +12 -0
  17. package/dist/ai/unified-prompts/skill-site-prompt-parts/brain.js.map +1 -0
  18. package/dist/ai/unified-prompts/skill-site-prompt-parts/cli-help.d.ts +5 -0
  19. package/dist/ai/unified-prompts/skill-site-prompt-parts/cli-help.d.ts.map +1 -0
  20. package/dist/ai/unified-prompts/skill-site-prompt-parts/cli-help.js +12 -0
  21. package/dist/ai/unified-prompts/skill-site-prompt-parts/cli-help.js.map +1 -0
  22. package/dist/ai/unified-prompts/skill-site-prompt-parts/config-docs.d.ts +5 -0
  23. package/dist/ai/unified-prompts/skill-site-prompt-parts/config-docs.d.ts.map +1 -0
  24. package/dist/ai/unified-prompts/skill-site-prompt-parts/config-docs.js +12 -0
  25. package/dist/ai/unified-prompts/skill-site-prompt-parts/config-docs.js.map +1 -0
  26. package/dist/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.d.ts +5 -0
  27. package/dist/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.d.ts.map +1 -0
  28. package/dist/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.js +12 -0
  29. package/dist/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.js.map +1 -0
  30. package/dist/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.d.ts +5 -0
  31. package/dist/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.d.ts.map +1 -0
  32. package/dist/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.js +12 -0
  33. package/dist/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.js.map +1 -0
  34. package/dist/ai/unified-prompts/skill-site-prompt-parts/docs-index.d.ts +5 -0
  35. package/dist/ai/unified-prompts/skill-site-prompt-parts/docs-index.d.ts.map +1 -0
  36. package/dist/ai/unified-prompts/skill-site-prompt-parts/docs-index.js +64 -0
  37. package/dist/ai/unified-prompts/skill-site-prompt-parts/docs-index.js.map +1 -0
  38. package/dist/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.d.ts +5 -0
  39. package/dist/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.d.ts.map +1 -0
  40. package/dist/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.js +12 -0
  41. package/dist/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.js.map +1 -0
  42. package/dist/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.d.ts +5 -0
  43. package/dist/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.d.ts.map +1 -0
  44. package/dist/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.js +12 -0
  45. package/dist/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.js.map +1 -0
  46. package/dist/ai/unified-prompts/skill-site-prompt.d.ts +5 -0
  47. package/dist/ai/unified-prompts/skill-site-prompt.d.ts.map +1 -0
  48. package/dist/ai/unified-prompts/skill-site-prompt.js +75 -0
  49. package/dist/ai/unified-prompts/skill-site-prompt.js.map +1 -0
  50. package/dist/apps/apps-config.d.ts +168 -0
  51. package/dist/apps/apps-config.d.ts.map +1 -0
  52. package/dist/apps/apps-config.js +157 -0
  53. package/dist/apps/apps-config.js.map +1 -0
  54. package/dist/apps/apps-ui.d.ts +45 -0
  55. package/dist/apps/apps-ui.d.ts.map +1 -0
  56. package/dist/apps/apps-ui.js +109 -0
  57. package/dist/apps/apps-ui.js.map +1 -0
  58. package/dist/chunk-BE-pF4vm.js +34 -0
  59. package/dist/config/db-sync-mappings.d.ts +193 -0
  60. package/dist/config/db-sync-mappings.d.ts.map +1 -0
  61. package/dist/config/db-sync-mappings.js +2255 -0
  62. package/dist/config/db-sync-mappings.js.map +1 -0
  63. package/dist/config/format.d.ts +61 -0
  64. package/dist/config/format.d.ts.map +1 -0
  65. package/dist/config/format.js +337 -0
  66. package/dist/config/format.js.map +1 -0
  67. package/dist/config/migrate-catalogs-to-product-lines.d.ts +14 -0
  68. package/dist/config/migrate-catalogs-to-product-lines.d.ts.map +1 -0
  69. package/dist/config/migrate-catalogs-to-product-lines.js +379 -0
  70. package/dist/config/migrate-catalogs-to-product-lines.js.map +1 -0
  71. package/dist/config/schema-fuzzer.test.d.ts +1 -0
  72. package/dist/config/schema-fuzzer.test.js +401 -0
  73. package/dist/config/schema-fuzzer.test.js.map +1 -0
  74. package/dist/config/schema.d.ts +2315 -0
  75. package/dist/config/schema.d.ts.map +1 -0
  76. package/dist/config/schema.js +1085 -0
  77. package/dist/config/schema.js.map +1 -0
  78. package/dist/config-authoring.d.ts +12 -0
  79. package/dist/config-authoring.d.ts.map +1 -0
  80. package/dist/config-authoring.js +12 -0
  81. package/dist/config-authoring.js.map +1 -0
  82. package/dist/config-authoring.test.d.ts +1 -0
  83. package/dist/config-authoring.test.js +29 -0
  84. package/dist/config-authoring.test.js.map +1 -0
  85. package/dist/config-rendering.d.ts +17 -0
  86. package/dist/config-rendering.d.ts.map +1 -0
  87. package/dist/config-rendering.js +114 -0
  88. package/dist/config-rendering.js.map +1 -0
  89. package/dist/crud.d.ts +98 -0
  90. package/dist/crud.d.ts.map +1 -0
  91. package/dist/crud.js +129 -0
  92. package/dist/crud.js.map +1 -0
  93. package/dist/esm/ai/image-limits.d.ts +24 -0
  94. package/dist/esm/ai/image-limits.d.ts.map +1 -0
  95. package/dist/esm/ai/image-limits.js +53 -0
  96. package/dist/esm/ai/image-limits.js.map +1 -0
  97. package/dist/esm/ai/unified-prompts/reminders.d.ts +5 -0
  98. package/dist/esm/ai/unified-prompts/reminders.d.ts.map +1 -0
  99. package/dist/esm/ai/unified-prompts/reminders.js +31 -0
  100. package/dist/esm/ai/unified-prompts/reminders.js.map +1 -0
  101. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.d.ts +11 -0
  102. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.d.ts.map +1 -0
  103. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js +843 -0
  104. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js.map +1 -0
  105. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/brain.d.ts +5 -0
  106. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/brain.d.ts.map +1 -0
  107. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/brain.js +10 -0
  108. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/brain.js.map +1 -0
  109. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/cli-help.d.ts +5 -0
  110. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/cli-help.d.ts.map +1 -0
  111. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/cli-help.js +10 -0
  112. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/cli-help.js.map +1 -0
  113. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/config-docs.d.ts +5 -0
  114. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/config-docs.d.ts.map +1 -0
  115. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/config-docs.js +10 -0
  116. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/config-docs.js.map +1 -0
  117. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.d.ts +5 -0
  118. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.d.ts.map +1 -0
  119. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.js +10 -0
  120. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.js.map +1 -0
  121. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.d.ts +5 -0
  122. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.d.ts.map +1 -0
  123. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.js +10 -0
  124. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.js.map +1 -0
  125. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/docs-index.d.ts +5 -0
  126. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/docs-index.d.ts.map +1 -0
  127. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/docs-index.js +61 -0
  128. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/docs-index.js.map +1 -0
  129. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.d.ts +5 -0
  130. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.d.ts.map +1 -0
  131. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.js +10 -0
  132. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.js.map +1 -0
  133. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.d.ts +5 -0
  134. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.d.ts.map +1 -0
  135. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.js +10 -0
  136. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.js.map +1 -0
  137. package/dist/esm/ai/unified-prompts/skill-site-prompt.d.ts +5 -0
  138. package/dist/esm/ai/unified-prompts/skill-site-prompt.d.ts.map +1 -0
  139. package/dist/esm/ai/unified-prompts/skill-site-prompt.js +73 -0
  140. package/dist/esm/ai/unified-prompts/skill-site-prompt.js.map +1 -0
  141. package/dist/esm/apps/apps-config.d.ts +168 -0
  142. package/dist/esm/apps/apps-config.d.ts.map +1 -0
  143. package/dist/esm/apps/apps-config.js +154 -0
  144. package/dist/esm/apps/apps-config.js.map +1 -0
  145. package/dist/esm/apps/apps-ui.d.ts +45 -0
  146. package/dist/esm/apps/apps-ui.d.ts.map +1 -0
  147. package/dist/esm/apps/apps-ui.js +104 -0
  148. package/dist/esm/apps/apps-ui.js.map +1 -0
  149. package/dist/esm/config/db-sync-mappings.d.ts +193 -0
  150. package/dist/esm/config/db-sync-mappings.d.ts.map +1 -0
  151. package/dist/esm/config/db-sync-mappings.js +2253 -0
  152. package/dist/esm/config/db-sync-mappings.js.map +1 -0
  153. package/dist/esm/config/format.d.ts +61 -0
  154. package/dist/esm/config/format.d.ts.map +1 -0
  155. package/dist/esm/config/format.js +327 -0
  156. package/dist/esm/config/format.js.map +1 -0
  157. package/dist/esm/config/migrate-catalogs-to-product-lines.d.ts +14 -0
  158. package/dist/esm/config/migrate-catalogs-to-product-lines.d.ts.map +1 -0
  159. package/dist/esm/config/migrate-catalogs-to-product-lines.js +377 -0
  160. package/dist/esm/config/migrate-catalogs-to-product-lines.js.map +1 -0
  161. package/dist/esm/config/schema-fuzzer.test.d.ts +1 -0
  162. package/dist/esm/config/schema-fuzzer.test.js +401 -0
  163. package/dist/esm/config/schema-fuzzer.test.js.map +1 -0
  164. package/dist/esm/config/schema.d.ts +2315 -0
  165. package/dist/esm/config/schema.d.ts.map +1 -0
  166. package/dist/esm/config/schema.js +1065 -0
  167. package/dist/esm/config/schema.js.map +1 -0
  168. package/dist/esm/config-authoring.d.ts +12 -0
  169. package/dist/esm/config-authoring.d.ts.map +1 -0
  170. package/dist/esm/config-authoring.js +9 -0
  171. package/dist/esm/config-authoring.js.map +1 -0
  172. package/dist/esm/config-authoring.test.d.ts +1 -0
  173. package/dist/esm/config-authoring.test.js +29 -0
  174. package/dist/esm/config-authoring.test.js.map +1 -0
  175. package/dist/esm/config-rendering.d.ts +17 -0
  176. package/dist/esm/config-rendering.d.ts.map +1 -0
  177. package/dist/esm/config-rendering.js +108 -0
  178. package/dist/esm/config-rendering.js.map +1 -0
  179. package/dist/esm/crud.d.ts +98 -0
  180. package/dist/esm/crud.d.ts.map +1 -0
  181. package/dist/esm/crud.js +127 -0
  182. package/dist/esm/crud.js.map +1 -0
  183. package/dist/esm/global.d.ts +1 -0
  184. package/dist/esm/helpers/emails.d.ts +69 -0
  185. package/dist/esm/helpers/emails.d.ts.map +1 -0
  186. package/dist/esm/helpers/emails.js +243 -0
  187. package/dist/esm/helpers/emails.js.map +1 -0
  188. package/dist/esm/helpers/init-prompt.d.ts +5 -0
  189. package/dist/esm/helpers/init-prompt.d.ts.map +1 -0
  190. package/dist/esm/helpers/init-prompt.js +40 -0
  191. package/dist/esm/helpers/init-prompt.js.map +1 -0
  192. package/dist/esm/helpers/password.d.ts +7 -0
  193. package/dist/esm/helpers/password.d.ts.map +1 -0
  194. package/dist/esm/helpers/password.js +13 -0
  195. package/dist/esm/helpers/password.js.map +1 -0
  196. package/dist/esm/helpers/production-mode.d.ts +11 -0
  197. package/dist/esm/helpers/production-mode.d.ts.map +1 -0
  198. package/dist/esm/helpers/production-mode.js +46 -0
  199. package/dist/esm/helpers/production-mode.js.map +1 -0
  200. package/dist/esm/helpers/support-sla.d.ts +48 -0
  201. package/dist/esm/helpers/support-sla.d.ts.map +1 -0
  202. package/dist/esm/helpers/support-sla.js +65 -0
  203. package/dist/esm/helpers/support-sla.js.map +1 -0
  204. package/dist/esm/helpers/support-sla.test.d.ts +1 -0
  205. package/dist/esm/helpers/support-sla.test.js +102 -0
  206. package/dist/esm/helpers/support-sla.test.js.map +1 -0
  207. package/dist/esm/helpers/vault/client-side.d.ts +16 -0
  208. package/dist/esm/helpers/vault/client-side.d.ts.map +1 -0
  209. package/dist/esm/helpers/vault/client-side.js +69 -0
  210. package/dist/esm/helpers/vault/client-side.js.map +1 -0
  211. package/dist/esm/helpers/vault/server-side.d.ts +9 -0
  212. package/dist/esm/helpers/vault/server-side.d.ts.map +1 -0
  213. package/dist/esm/helpers/vault/server-side.js +123 -0
  214. package/dist/esm/helpers/vault/server-side.js.map +1 -0
  215. package/dist/esm/hooks/use-async-callback.d.ts +8 -0
  216. package/dist/esm/hooks/use-async-callback.d.ts.map +1 -0
  217. package/dist/esm/hooks/use-async-callback.js +38 -0
  218. package/dist/esm/hooks/use-async-callback.js.map +1 -0
  219. package/dist/esm/hooks/use-async-external-store.d.ts +9 -0
  220. package/dist/esm/hooks/use-async-external-store.d.ts.map +1 -0
  221. package/dist/esm/hooks/use-async-external-store.js +20 -0
  222. package/dist/esm/hooks/use-async-external-store.js.map +1 -0
  223. package/dist/esm/hooks/use-hash.d.ts +5 -0
  224. package/dist/esm/hooks/use-hash.d.ts.map +1 -0
  225. package/dist/esm/hooks/use-hash.js +15 -0
  226. package/dist/esm/hooks/use-hash.js.map +1 -0
  227. package/dist/esm/hooks/use-hover.d.ts +8 -0
  228. package/dist/esm/hooks/use-hover.d.ts.map +1 -0
  229. package/dist/esm/hooks/use-hover.js +59 -0
  230. package/dist/esm/hooks/use-hover.js.map +1 -0
  231. package/dist/esm/hooks/use-strict-memo.d.ts +10 -0
  232. package/dist/esm/hooks/use-strict-memo.d.ts.map +1 -0
  233. package/dist/esm/hooks/use-strict-memo.js +119 -0
  234. package/dist/esm/hooks/use-strict-memo.js.map +1 -0
  235. package/dist/esm/index.d.ts +5 -0
  236. package/dist/esm/index.js +6 -0
  237. package/dist/esm/interface/admin-interface.d.ts +308 -0
  238. package/dist/esm/interface/admin-interface.d.ts.map +1 -0
  239. package/dist/esm/interface/admin-interface.js +463 -0
  240. package/dist/esm/interface/admin-interface.js.map +1 -0
  241. package/dist/esm/interface/admin-metrics.d.ts +597 -0
  242. package/dist/esm/interface/admin-metrics.d.ts.map +1 -0
  243. package/dist/esm/interface/admin-metrics.js +134 -0
  244. package/dist/esm/interface/admin-metrics.js.map +1 -0
  245. package/dist/esm/interface/client-interface.d.ts +447 -0
  246. package/dist/esm/interface/client-interface.d.ts.map +1 -0
  247. package/dist/esm/interface/client-interface.js +1946 -0
  248. package/dist/esm/interface/client-interface.js.map +1 -0
  249. package/dist/esm/interface/client-interface.test.d.ts +1 -0
  250. package/dist/esm/interface/client-interface.test.js +559 -0
  251. package/dist/esm/interface/client-interface.test.js.map +1 -0
  252. package/dist/esm/interface/conversations.d.ts +314 -0
  253. package/dist/esm/interface/conversations.d.ts.map +1 -0
  254. package/dist/esm/interface/conversations.js +108 -0
  255. package/dist/esm/interface/conversations.js.map +1 -0
  256. package/dist/esm/interface/crud/analytics.d.ts +14 -0
  257. package/dist/esm/interface/crud/analytics.d.ts.map +1 -0
  258. package/dist/esm/interface/crud/analytics.js +1 -0
  259. package/dist/esm/interface/crud/connected-accounts.d.ts +69 -0
  260. package/dist/esm/interface/crud/connected-accounts.d.ts.map +1 -0
  261. package/dist/esm/interface/crud/connected-accounts.js +35 -0
  262. package/dist/esm/interface/crud/connected-accounts.js.map +1 -0
  263. package/dist/esm/interface/crud/contact-channels.d.ts +182 -0
  264. package/dist/esm/interface/crud/contact-channels.d.ts.map +1 -0
  265. package/dist/esm/interface/crud/contact-channels.js +68 -0
  266. package/dist/esm/interface/crud/contact-channels.js.map +1 -0
  267. package/dist/esm/interface/crud/current-user.d.ts +286 -0
  268. package/dist/esm/interface/crud/current-user.d.ts.map +1 -0
  269. package/dist/esm/interface/crud/current-user.js +69 -0
  270. package/dist/esm/interface/crud/current-user.js.map +1 -0
  271. package/dist/esm/interface/crud/email-outbox.d.ts +1466 -0
  272. package/dist/esm/interface/crud/email-outbox.d.ts.map +1 -0
  273. package/dist/esm/interface/crud/email-outbox.js +190 -0
  274. package/dist/esm/interface/crud/email-outbox.js.map +1 -0
  275. package/dist/esm/interface/crud/email-templates.d.ts +86 -0
  276. package/dist/esm/interface/crud/email-templates.d.ts.map +1 -0
  277. package/dist/esm/interface/crud/email-templates.js +46 -0
  278. package/dist/esm/interface/crud/email-templates.js.map +1 -0
  279. package/dist/esm/interface/crud/emails.d.ts +42 -0
  280. package/dist/esm/interface/crud/emails.d.ts.map +1 -0
  281. package/dist/esm/interface/crud/emails.js +19 -0
  282. package/dist/esm/interface/crud/emails.js.map +1 -0
  283. package/dist/esm/interface/crud/internal-api-keys.d.ts +141 -0
  284. package/dist/esm/interface/crud/internal-api-keys.d.ts.map +1 -0
  285. package/dist/esm/interface/crud/internal-api-keys.js +49 -0
  286. package/dist/esm/interface/crud/internal-api-keys.js.map +1 -0
  287. package/dist/esm/interface/crud/invoices.d.ts +43 -0
  288. package/dist/esm/interface/crud/invoices.d.ts.map +1 -0
  289. package/dist/esm/interface/crud/invoices.js +25 -0
  290. package/dist/esm/interface/crud/invoices.js.map +1 -0
  291. package/dist/esm/interface/crud/items.d.ts +31 -0
  292. package/dist/esm/interface/crud/items.d.ts.map +1 -0
  293. package/dist/esm/interface/crud/items.js +23 -0
  294. package/dist/esm/interface/crud/items.js.map +1 -0
  295. package/dist/esm/interface/crud/notification-preferences.d.ts +39 -0
  296. package/dist/esm/interface/crud/notification-preferences.d.ts.map +1 -0
  297. package/dist/esm/interface/crud/notification-preferences.js +31 -0
  298. package/dist/esm/interface/crud/notification-preferences.js.map +1 -0
  299. package/dist/esm/interface/crud/oauth-providers.d.ts +187 -0
  300. package/dist/esm/interface/crud/oauth-providers.d.ts.map +1 -0
  301. package/dist/esm/interface/crud/oauth-providers.js +75 -0
  302. package/dist/esm/interface/crud/oauth-providers.js.map +1 -0
  303. package/dist/esm/interface/crud/products.d.ts +182 -0
  304. package/dist/esm/interface/crud/products.d.ts.map +1 -0
  305. package/dist/esm/interface/crud/products.js +29 -0
  306. package/dist/esm/interface/crud/products.js.map +1 -0
  307. package/dist/esm/interface/crud/project-api-keys.d.ts +204 -0
  308. package/dist/esm/interface/crud/project-api-keys.d.ts.map +1 -0
  309. package/dist/esm/interface/crud/project-api-keys.js +72 -0
  310. package/dist/esm/interface/crud/project-api-keys.js.map +1 -0
  311. package/dist/esm/interface/crud/project-permissions.d.ts +162 -0
  312. package/dist/esm/interface/crud/project-permissions.d.ts.map +1 -0
  313. package/dist/esm/interface/crud/project-permissions.js +104 -0
  314. package/dist/esm/interface/crud/project-permissions.js.map +1 -0
  315. package/dist/esm/interface/crud/projects.d.ts +852 -0
  316. package/dist/esm/interface/crud/projects.d.ts.map +1 -0
  317. package/dist/esm/interface/crud/projects.js +193 -0
  318. package/dist/esm/interface/crud/projects.js.map +1 -0
  319. package/dist/esm/interface/crud/session-replays.d.ts +83 -0
  320. package/dist/esm/interface/crud/session-replays.d.ts.map +1 -0
  321. package/dist/esm/interface/crud/session-replays.js +1 -0
  322. package/dist/esm/interface/crud/sessions.d.ts +151 -0
  323. package/dist/esm/interface/crud/sessions.d.ts.map +1 -0
  324. package/dist/esm/interface/crud/sessions.js +56 -0
  325. package/dist/esm/interface/crud/sessions.js.map +1 -0
  326. package/dist/esm/interface/crud/sign-up-rules.d.ts +15 -0
  327. package/dist/esm/interface/crud/sign-up-rules.d.ts.map +1 -0
  328. package/dist/esm/interface/crud/sign-up-rules.js +1 -0
  329. package/dist/esm/interface/crud/svix-token.d.ts +32 -0
  330. package/dist/esm/interface/crud/svix-token.d.ts.map +1 -0
  331. package/dist/esm/interface/crud/svix-token.js +18 -0
  332. package/dist/esm/interface/crud/svix-token.js.map +1 -0
  333. package/dist/esm/interface/crud/team-invitation-details.d.ts +32 -0
  334. package/dist/esm/interface/crud/team-invitation-details.d.ts.map +1 -0
  335. package/dist/esm/interface/crud/team-invitation-details.js +21 -0
  336. package/dist/esm/interface/crud/team-invitation-details.js.map +1 -0
  337. package/dist/esm/interface/crud/team-invitation.d.ts +55 -0
  338. package/dist/esm/interface/crud/team-invitation.d.ts.map +1 -0
  339. package/dist/esm/interface/crud/team-invitation.js +37 -0
  340. package/dist/esm/interface/crud/team-invitation.js.map +1 -0
  341. package/dist/esm/interface/crud/team-member-profiles.d.ts +287 -0
  342. package/dist/esm/interface/crud/team-member-profiles.d.ts.map +1 -0
  343. package/dist/esm/interface/crud/team-member-profiles.js +58 -0
  344. package/dist/esm/interface/crud/team-member-profiles.js.map +1 -0
  345. package/dist/esm/interface/crud/team-memberships.d.ts +76 -0
  346. package/dist/esm/interface/crud/team-memberships.d.ts.map +1 -0
  347. package/dist/esm/interface/crud/team-memberships.js +54 -0
  348. package/dist/esm/interface/crud/team-memberships.js.map +1 -0
  349. package/dist/esm/interface/crud/team-permissions.d.ts +170 -0
  350. package/dist/esm/interface/crud/team-permissions.d.ts.map +1 -0
  351. package/dist/esm/interface/crud/team-permissions.js +105 -0
  352. package/dist/esm/interface/crud/team-permissions.js.map +1 -0
  353. package/dist/esm/interface/crud/teams.d.ts +300 -0
  354. package/dist/esm/interface/crud/teams.d.ts.map +1 -0
  355. package/dist/esm/interface/crud/teams.js +129 -0
  356. package/dist/esm/interface/crud/teams.js.map +1 -0
  357. package/dist/esm/interface/crud/transactions.d.ts +183 -0
  358. package/dist/esm/interface/crud/transactions.d.ts.map +1 -0
  359. package/dist/esm/interface/crud/transactions.js +85 -0
  360. package/dist/esm/interface/crud/transactions.js.map +1 -0
  361. package/dist/esm/interface/crud/users.d.ts +654 -0
  362. package/dist/esm/interface/crud/users.d.ts.map +1 -0
  363. package/dist/esm/interface/crud/users.js +181 -0
  364. package/dist/esm/interface/crud/users.js.map +1 -0
  365. package/dist/esm/interface/handler-urls.d.ts +51 -0
  366. package/dist/esm/interface/handler-urls.d.ts.map +1 -0
  367. package/dist/esm/interface/handler-urls.js +3 -0
  368. package/dist/esm/interface/page-component-versions.d.ts +25 -0
  369. package/dist/esm/interface/page-component-versions.d.ts.map +1 -0
  370. package/dist/esm/interface/page-component-versions.js +1661 -0
  371. package/dist/esm/interface/page-component-versions.js.map +1 -0
  372. package/dist/esm/interface/server-interface.d.ts +255 -0
  373. package/dist/esm/interface/server-interface.d.ts.map +1 -0
  374. package/dist/esm/interface/server-interface.js +459 -0
  375. package/dist/esm/interface/server-interface.js.map +1 -0
  376. package/dist/esm/interface/webhooks.d.ts +326 -0
  377. package/dist/esm/interface/webhooks.d.ts.map +1 -0
  378. package/dist/esm/interface/webhooks.js +22 -0
  379. package/dist/esm/interface/webhooks.js.map +1 -0
  380. package/dist/esm/known-errors.d.ts +575 -0
  381. package/dist/esm/known-errors.d.ts.map +1 -0
  382. package/dist/esm/known-errors.js +791 -0
  383. package/dist/esm/known-errors.js.map +1 -0
  384. package/dist/esm/local-emulator.d.ts +6 -0
  385. package/dist/esm/local-emulator.d.ts.map +1 -0
  386. package/dist/esm/local-emulator.js +7 -0
  387. package/dist/esm/local-emulator.js.map +1 -0
  388. package/dist/esm/payments/payment-methods.d.ts +64 -0
  389. package/dist/esm/payments/payment-methods.d.ts.map +1 -0
  390. package/dist/esm/payments/payment-methods.js +205 -0
  391. package/dist/esm/payments/payment-methods.js.map +1 -0
  392. package/dist/esm/payments/stripe-limits.d.ts +17 -0
  393. package/dist/esm/payments/stripe-limits.d.ts.map +1 -0
  394. package/dist/esm/payments/stripe-limits.js +17 -0
  395. package/dist/esm/payments/stripe-limits.js.map +1 -0
  396. package/dist/esm/plans.d.ts +72 -0
  397. package/dist/esm/plans.d.ts.map +1 -0
  398. package/dist/esm/plans.js +81 -0
  399. package/dist/esm/plans.js.map +1 -0
  400. package/dist/esm/schema-fields.d.ts +472 -0
  401. package/dist/esm/schema-fields.d.ts.map +1 -0
  402. package/dist/esm/schema-fields.js +1009 -0
  403. package/dist/esm/schema-fields.js.map +1 -0
  404. package/dist/esm/sessions.d.ts +165 -0
  405. package/dist/esm/sessions.d.ts.map +1 -0
  406. package/dist/esm/sessions.js +226 -0
  407. package/dist/esm/sessions.js.map +1 -0
  408. package/dist/esm/stack-config-file.d.ts +15 -0
  409. package/dist/esm/stack-config-file.d.ts.map +1 -0
  410. package/dist/esm/stack-config-file.js +76 -0
  411. package/dist/esm/stack-config-file.js.map +1 -0
  412. package/dist/esm/utils/api-keys.d.ts +26 -0
  413. package/dist/esm/utils/api-keys.d.ts.map +1 -0
  414. package/dist/esm/utils/api-keys.js +77 -0
  415. package/dist/esm/utils/api-keys.js.map +1 -0
  416. package/dist/esm/utils/arrays.d.ts +25 -0
  417. package/dist/esm/utils/arrays.d.ts.map +1 -0
  418. package/dist/esm/utils/arrays.js +552 -0
  419. package/dist/esm/utils/arrays.js.map +1 -0
  420. package/dist/esm/utils/auth-methods.d.ts +6 -0
  421. package/dist/esm/utils/auth-methods.d.ts.map +1 -0
  422. package/dist/esm/utils/auth-methods.js +11 -0
  423. package/dist/esm/utils/auth-methods.js.map +1 -0
  424. package/dist/esm/utils/base64.d.ts +6 -0
  425. package/dist/esm/utils/base64.d.ts.map +1 -0
  426. package/dist/esm/utils/base64.js +25 -0
  427. package/dist/esm/utils/base64.js.map +1 -0
  428. package/dist/esm/utils/booleans.d.ts +8 -0
  429. package/dist/esm/utils/booleans.d.ts.map +1 -0
  430. package/dist/esm/utils/booleans.js +35 -0
  431. package/dist/esm/utils/booleans.js.map +1 -0
  432. package/dist/esm/utils/browser-compat.d.ts +10 -0
  433. package/dist/esm/utils/browser-compat.d.ts.map +1 -0
  434. package/dist/esm/utils/browser-compat.js +21 -0
  435. package/dist/esm/utils/browser-compat.js.map +1 -0
  436. package/dist/esm/utils/bytes.d.ts +17 -0
  437. package/dist/esm/utils/bytes.d.ts.map +1 -0
  438. package/dist/esm/utils/bytes.js +290 -0
  439. package/dist/esm/utils/bytes.js.map +1 -0
  440. package/dist/esm/utils/caches.d.ts +102 -0
  441. package/dist/esm/utils/caches.d.ts.map +1 -0
  442. package/dist/esm/utils/caches.js +185 -0
  443. package/dist/esm/utils/caches.js.map +1 -0
  444. package/dist/esm/utils/cel-fields.d.ts +23 -0
  445. package/dist/esm/utils/cel-fields.d.ts.map +1 -0
  446. package/dist/esm/utils/cel-fields.js +99 -0
  447. package/dist/esm/utils/cel-fields.js.map +1 -0
  448. package/dist/esm/utils/compile-time.d.ts +10 -0
  449. package/dist/esm/utils/compile-time.d.ts.map +1 -0
  450. package/dist/esm/utils/compile-time.js +14 -0
  451. package/dist/esm/utils/compile-time.js.map +1 -0
  452. package/dist/esm/utils/country-codes.d.ts +11 -0
  453. package/dist/esm/utils/country-codes.d.ts.map +1 -0
  454. package/dist/esm/utils/country-codes.js +36 -0
  455. package/dist/esm/utils/country-codes.js.map +1 -0
  456. package/dist/esm/utils/crypto.d.ts +48 -0
  457. package/dist/esm/utils/crypto.d.ts.map +1 -0
  458. package/dist/esm/utils/crypto.js +208 -0
  459. package/dist/esm/utils/crypto.js.map +1 -0
  460. package/dist/esm/utils/currencies.d.ts +8 -0
  461. package/dist/esm/utils/currencies.d.ts.map +1 -0
  462. package/dist/esm/utils/currencies.js +50 -0
  463. package/dist/esm/utils/currencies.js.map +1 -0
  464. package/dist/esm/utils/currency-constants.d.ts +39 -0
  465. package/dist/esm/utils/currency-constants.d.ts.map +1 -0
  466. package/dist/esm/utils/currency-constants.js +42 -0
  467. package/dist/esm/utils/currency-constants.js.map +1 -0
  468. package/dist/esm/utils/dates.d.ts +23 -0
  469. package/dist/esm/utils/dates.d.ts.map +1 -0
  470. package/dist/esm/utils/dates.js +167 -0
  471. package/dist/esm/utils/dates.js.map +1 -0
  472. package/dist/esm/utils/dev-env-state-path.d.ts +6 -0
  473. package/dist/esm/utils/dev-env-state-path.d.ts.map +1 -0
  474. package/dist/esm/utils/dev-env-state-path.js +15 -0
  475. package/dist/esm/utils/dev-env-state-path.js.map +1 -0
  476. package/dist/esm/utils/dom.d.ts +5 -0
  477. package/dist/esm/utils/dom.d.ts.map +1 -0
  478. package/dist/esm/utils/dom.js +11 -0
  479. package/dist/esm/utils/dom.js.map +1 -0
  480. package/dist/esm/utils/env.d.ts +25 -0
  481. package/dist/esm/utils/env.d.ts.map +1 -0
  482. package/dist/esm/utils/env.js +78 -0
  483. package/dist/esm/utils/env.js.map +1 -0
  484. package/dist/esm/utils/errors.d.ts +231 -0
  485. package/dist/esm/utils/errors.d.ts.map +1 -0
  486. package/dist/esm/utils/errors.js +385 -0
  487. package/dist/esm/utils/errors.js.map +1 -0
  488. package/dist/esm/utils/esbuild.d.ts +16 -0
  489. package/dist/esm/utils/esbuild.d.ts.map +1 -0
  490. package/dist/esm/utils/esbuild.js +182 -0
  491. package/dist/esm/utils/esbuild.js.map +1 -0
  492. package/dist/esm/utils/featurebase.d.ts +30 -0
  493. package/dist/esm/utils/featurebase.d.ts.map +1 -0
  494. package/dist/esm/utils/featurebase.js +166 -0
  495. package/dist/esm/utils/featurebase.js.map +1 -0
  496. package/dist/esm/utils/fs.d.ts +9 -0
  497. package/dist/esm/utils/fs.d.ts.map +1 -0
  498. package/dist/esm/utils/fs.js +25 -0
  499. package/dist/esm/utils/fs.js.map +1 -0
  500. package/dist/esm/utils/functions.d.ts +6 -0
  501. package/dist/esm/utils/functions.d.ts.map +1 -0
  502. package/dist/esm/utils/functions.js +34 -0
  503. package/dist/esm/utils/functions.js.map +1 -0
  504. package/dist/esm/utils/geo.d.ts +24 -0
  505. package/dist/esm/utils/geo.d.ts.map +1 -0
  506. package/dist/esm/utils/geo.js +16 -0
  507. package/dist/esm/utils/geo.js.map +1 -0
  508. package/dist/esm/utils/globals.d.ts +13 -0
  509. package/dist/esm/utils/globals.d.ts.map +1 -0
  510. package/dist/esm/utils/globals.js +34 -0
  511. package/dist/esm/utils/globals.js.map +1 -0
  512. package/dist/esm/utils/hashes.d.ts +9 -0
  513. package/dist/esm/utils/hashes.d.ts.map +1 -0
  514. package/dist/esm/utils/hashes.js +40 -0
  515. package/dist/esm/utils/hashes.js.map +1 -0
  516. package/dist/esm/utils/html.d.ts +7 -0
  517. package/dist/esm/utils/html.d.ts.map +1 -0
  518. package/dist/esm/utils/html.js +33 -0
  519. package/dist/esm/utils/html.js.map +1 -0
  520. package/dist/esm/utils/http.d.ts +45 -0
  521. package/dist/esm/utils/http.d.ts.map +1 -0
  522. package/dist/esm/utils/http.js +75 -0
  523. package/dist/esm/utils/http.js.map +1 -0
  524. package/dist/esm/utils/ips.d.ts +8 -0
  525. package/dist/esm/utils/ips.d.ts.map +1 -0
  526. package/dist/esm/utils/ips.js +36 -0
  527. package/dist/esm/utils/ips.js.map +1 -0
  528. package/dist/esm/utils/json.d.ts +15 -0
  529. package/dist/esm/utils/json.d.ts.map +1 -0
  530. package/dist/esm/utils/json.js +178 -0
  531. package/dist/esm/utils/json.js.map +1 -0
  532. package/dist/esm/utils/jsx-editable-transpiler.d.ts +68 -0
  533. package/dist/esm/utils/jsx-editable-transpiler.d.ts.map +1 -0
  534. package/dist/esm/utils/jsx-editable-transpiler.js +216 -0
  535. package/dist/esm/utils/jsx-editable-transpiler.js.map +1 -0
  536. package/dist/esm/utils/jsx-editable-transpiler.test.d.ts +1 -0
  537. package/dist/esm/utils/jsx-editable-transpiler.test.js +122 -0
  538. package/dist/esm/utils/jsx-editable-transpiler.test.js.map +1 -0
  539. package/dist/esm/utils/jwt.d.ts +79 -0
  540. package/dist/esm/utils/jwt.d.ts.map +1 -0
  541. package/dist/esm/utils/jwt.js +102 -0
  542. package/dist/esm/utils/jwt.js.map +1 -0
  543. package/dist/esm/utils/locks.d.ts +17 -0
  544. package/dist/esm/utils/locks.d.ts.map +1 -0
  545. package/dist/esm/utils/locks.js +54 -0
  546. package/dist/esm/utils/locks.js.map +1 -0
  547. package/dist/esm/utils/maps.d.ts +61 -0
  548. package/dist/esm/utils/maps.d.ts.map +1 -0
  549. package/dist/esm/utils/maps.js +297 -0
  550. package/dist/esm/utils/maps.js.map +1 -0
  551. package/dist/esm/utils/math.d.ts +8 -0
  552. package/dist/esm/utils/math.d.ts.map +1 -0
  553. package/dist/esm/utils/math.js +21 -0
  554. package/dist/esm/utils/math.js.map +1 -0
  555. package/dist/esm/utils/monkey-patch.d.ts +7 -0
  556. package/dist/esm/utils/monkey-patch.d.ts.map +1 -0
  557. package/dist/esm/utils/monkey-patch.js +21 -0
  558. package/dist/esm/utils/monkey-patch.js.map +1 -0
  559. package/dist/esm/utils/node-http.d.ts +17 -0
  560. package/dist/esm/utils/node-http.d.ts.map +1 -0
  561. package/dist/esm/utils/node-http.js +38 -0
  562. package/dist/esm/utils/node-http.js.map +1 -0
  563. package/dist/esm/utils/numbers.d.ts +7 -0
  564. package/dist/esm/utils/numbers.d.ts.map +1 -0
  565. package/dist/esm/utils/numbers.js +75 -0
  566. package/dist/esm/utils/numbers.js.map +1 -0
  567. package/dist/esm/utils/oauth.d.ts +11 -0
  568. package/dist/esm/utils/oauth.d.ts.map +1 -0
  569. package/dist/esm/utils/oauth.js +27 -0
  570. package/dist/esm/utils/oauth.js.map +1 -0
  571. package/dist/esm/utils/objects.d.ts +59 -0
  572. package/dist/esm/utils/objects.d.ts.map +1 -0
  573. package/dist/esm/utils/objects.js +818 -0
  574. package/dist/esm/utils/objects.js.map +1 -0
  575. package/dist/esm/utils/paginated-lists.d.ts +442 -0
  576. package/dist/esm/utils/paginated-lists.d.ts.map +1 -0
  577. package/dist/esm/utils/paginated-lists.js +411 -0
  578. package/dist/esm/utils/paginated-lists.js.map +1 -0
  579. package/dist/esm/utils/paginated-lists.test.d.ts +1 -0
  580. package/dist/esm/utils/paginated-lists.test.js +1304 -0
  581. package/dist/esm/utils/paginated-lists.test.js.map +1 -0
  582. package/dist/esm/utils/passkey.d.ts +2 -0
  583. package/dist/esm/utils/passkey.js +1 -0
  584. package/dist/esm/utils/promises.d.ts +80 -0
  585. package/dist/esm/utils/promises.d.ts.map +1 -0
  586. package/dist/esm/utils/promises.js +333 -0
  587. package/dist/esm/utils/promises.js.map +1 -0
  588. package/dist/esm/utils/proxies.d.ts +13 -0
  589. package/dist/esm/utils/proxies.d.ts.map +1 -0
  590. package/dist/esm/utils/proxies.js +197 -0
  591. package/dist/esm/utils/proxies.js.map +1 -0
  592. package/dist/esm/utils/react.d.ts +61 -0
  593. package/dist/esm/utils/react.d.ts.map +1 -0
  594. package/dist/esm/utils/react.js +229 -0
  595. package/dist/esm/utils/react.js.map +1 -0
  596. package/dist/esm/utils/redirect-urls.d.ts +30 -0
  597. package/dist/esm/utils/redirect-urls.d.ts.map +1 -0
  598. package/dist/esm/utils/redirect-urls.js +215 -0
  599. package/dist/esm/utils/redirect-urls.js.map +1 -0
  600. package/dist/esm/utils/regex.d.ts +5 -0
  601. package/dist/esm/utils/regex.d.ts.map +1 -0
  602. package/dist/esm/utils/regex.js +13 -0
  603. package/dist/esm/utils/regex.js.map +1 -0
  604. package/dist/esm/utils/results.d.ts +70 -0
  605. package/dist/esm/utils/results.d.ts.map +1 -0
  606. package/dist/esm/utils/results.js +339 -0
  607. package/dist/esm/utils/results.js.map +1 -0
  608. package/dist/esm/utils/sentry.d.ts +13 -0
  609. package/dist/esm/utils/sentry.d.ts.map +1 -0
  610. package/dist/esm/utils/sentry.js +14 -0
  611. package/dist/esm/utils/sentry.js.map +1 -0
  612. package/dist/esm/utils/stores.d.ts +104 -0
  613. package/dist/esm/utils/stores.d.ts.map +1 -0
  614. package/dist/esm/utils/stores.js +175 -0
  615. package/dist/esm/utils/stores.js.map +1 -0
  616. package/dist/esm/utils/strings.d.ts +76 -0
  617. package/dist/esm/utils/strings.d.ts.map +1 -0
  618. package/dist/esm/utils/strings.js +530 -0
  619. package/dist/esm/utils/strings.js.map +1 -0
  620. package/dist/esm/utils/strings.nicify.test.d.ts +1 -0
  621. package/dist/esm/utils/strings.nicify.test.js +243 -0
  622. package/dist/esm/utils/strings.nicify.test.js.map +1 -0
  623. package/dist/esm/utils/telemetry.d.ts +15 -0
  624. package/dist/esm/utils/telemetry.d.ts.map +1 -0
  625. package/dist/esm/utils/telemetry.js +31 -0
  626. package/dist/esm/utils/telemetry.js.map +1 -0
  627. package/dist/esm/utils/turnstile-browser.d.ts +32 -0
  628. package/dist/esm/utils/turnstile-browser.d.ts.map +1 -0
  629. package/dist/esm/utils/turnstile-browser.js +61 -0
  630. package/dist/esm/utils/turnstile-browser.js.map +1 -0
  631. package/dist/esm/utils/turnstile-flow.d.ts +29 -0
  632. package/dist/esm/utils/turnstile-flow.d.ts.map +1 -0
  633. package/dist/esm/utils/turnstile-flow.js +219 -0
  634. package/dist/esm/utils/turnstile-flow.js.map +1 -0
  635. package/dist/esm/utils/turnstile-flow.test.d.ts +1 -0
  636. package/dist/esm/utils/turnstile-flow.test.js +75 -0
  637. package/dist/esm/utils/turnstile-flow.test.js.map +1 -0
  638. package/dist/esm/utils/turnstile.d.ts +17 -0
  639. package/dist/esm/utils/turnstile.d.ts.map +1 -0
  640. package/dist/esm/utils/turnstile.js +25 -0
  641. package/dist/esm/utils/turnstile.js.map +1 -0
  642. package/dist/esm/utils/typed-arrays.d.ts +14 -0
  643. package/dist/esm/utils/typed-arrays.d.ts.map +1 -0
  644. package/dist/esm/utils/typed-arrays.js +20 -0
  645. package/dist/esm/utils/typed-arrays.js.map +1 -0
  646. package/dist/esm/utils/types.d.ts +77 -0
  647. package/dist/esm/utils/types.d.ts.map +1 -0
  648. package/dist/esm/utils/types.js +55 -0
  649. package/dist/esm/utils/types.js.map +1 -0
  650. package/dist/esm/utils/unicode.d.ts +5 -0
  651. package/dist/esm/utils/unicode.d.ts.map +1 -0
  652. package/dist/esm/utils/unicode.js +24 -0
  653. package/dist/esm/utils/unicode.js.map +1 -0
  654. package/dist/esm/utils/urls.d.ts +28 -0
  655. package/dist/esm/utils/urls.d.ts.map +1 -0
  656. package/dist/esm/utils/urls.js +259 -0
  657. package/dist/esm/utils/urls.js.map +1 -0
  658. package/dist/esm/utils/uuids.d.ts +6 -0
  659. package/dist/esm/utils/uuids.d.ts.map +1 -0
  660. package/dist/esm/utils/uuids.js +36 -0
  661. package/dist/esm/utils/uuids.js.map +1 -0
  662. package/dist/global.d.d.ts +0 -0
  663. package/dist/global.d.ts +1 -0
  664. package/dist/helpers/emails.d.ts +69 -0
  665. package/dist/helpers/emails.d.ts.map +1 -0
  666. package/dist/helpers/emails.js +252 -0
  667. package/dist/helpers/emails.js.map +1 -0
  668. package/dist/helpers/init-prompt.d.ts +5 -0
  669. package/dist/helpers/init-prompt.d.ts.map +1 -0
  670. package/dist/helpers/init-prompt.js +42 -0
  671. package/dist/helpers/init-prompt.js.map +1 -0
  672. package/dist/helpers/password.d.ts +6 -0
  673. package/dist/helpers/password.d.ts.map +1 -0
  674. package/dist/helpers/password.js +15 -0
  675. package/dist/helpers/password.js.map +1 -0
  676. package/dist/helpers/production-mode.d.ts +11 -0
  677. package/dist/helpers/production-mode.d.ts.map +1 -0
  678. package/dist/helpers/production-mode.js +48 -0
  679. package/dist/helpers/production-mode.js.map +1 -0
  680. package/dist/helpers/support-sla.d.ts +48 -0
  681. package/dist/helpers/support-sla.d.ts.map +1 -0
  682. package/dist/helpers/support-sla.js +72 -0
  683. package/dist/helpers/support-sla.js.map +1 -0
  684. package/dist/helpers/support-sla.test.d.ts +1 -0
  685. package/dist/helpers/support-sla.test.js +102 -0
  686. package/dist/helpers/support-sla.test.js.map +1 -0
  687. package/dist/helpers/vault/client-side.d.ts +16 -0
  688. package/dist/helpers/vault/client-side.d.ts.map +1 -0
  689. package/dist/helpers/vault/client-side.js +73 -0
  690. package/dist/helpers/vault/client-side.js.map +1 -0
  691. package/dist/helpers/vault/server-side.d.ts +9 -0
  692. package/dist/helpers/vault/server-side.d.ts.map +1 -0
  693. package/dist/helpers/vault/server-side.js +126 -0
  694. package/dist/helpers/vault/server-side.js.map +1 -0
  695. package/dist/hooks/use-async-callback.d.ts +8 -0
  696. package/dist/hooks/use-async-callback.d.ts.map +1 -0
  697. package/dist/hooks/use-async-callback.js +42 -0
  698. package/dist/hooks/use-async-callback.js.map +1 -0
  699. package/dist/hooks/use-async-external-store.d.ts +9 -0
  700. package/dist/hooks/use-async-external-store.d.ts.map +1 -0
  701. package/dist/hooks/use-async-external-store.js +22 -0
  702. package/dist/hooks/use-async-external-store.js.map +1 -0
  703. package/dist/hooks/use-hash.d.ts +5 -0
  704. package/dist/hooks/use-hash.d.ts.map +1 -0
  705. package/dist/hooks/use-hash.js +17 -0
  706. package/dist/hooks/use-hash.js.map +1 -0
  707. package/dist/hooks/use-hover.d.ts +8 -0
  708. package/dist/hooks/use-hover.d.ts.map +1 -0
  709. package/dist/hooks/use-hover.js +61 -0
  710. package/dist/hooks/use-hover.js.map +1 -0
  711. package/dist/hooks/use-strict-memo.d.ts +10 -0
  712. package/dist/hooks/use-strict-memo.d.ts.map +1 -0
  713. package/dist/hooks/use-strict-memo.js +121 -0
  714. package/dist/hooks/use-strict-memo.js.map +1 -0
  715. package/dist/index-D9ysacya.d.ts +153 -0
  716. package/dist/index-D9ysacya.d.ts.map +1 -0
  717. package/dist/index.d.ts +5 -0
  718. package/dist/index.js +37 -0
  719. package/dist/interface/admin-interface.d.ts +308 -0
  720. package/dist/interface/admin-interface.d.ts.map +1 -0
  721. package/dist/interface/admin-interface.js +465 -0
  722. package/dist/interface/admin-interface.js.map +1 -0
  723. package/dist/interface/admin-metrics.d.ts +597 -0
  724. package/dist/interface/admin-metrics.d.ts.map +1 -0
  725. package/dist/interface/admin-metrics.js +153 -0
  726. package/dist/interface/admin-metrics.js.map +1 -0
  727. package/dist/interface/client-interface.d.ts +447 -0
  728. package/dist/interface/client-interface.d.ts.map +1 -0
  729. package/dist/interface/client-interface.js +1948 -0
  730. package/dist/interface/client-interface.js.map +1 -0
  731. package/dist/interface/client-interface.test.d.ts +1 -0
  732. package/dist/interface/client-interface.test.js +559 -0
  733. package/dist/interface/client-interface.test.js.map +1 -0
  734. package/dist/interface/conversations.d.ts +314 -0
  735. package/dist/interface/conversations.d.ts.map +1 -0
  736. package/dist/interface/conversations.js +121 -0
  737. package/dist/interface/conversations.js.map +1 -0
  738. package/dist/interface/crud/analytics.d.ts +14 -0
  739. package/dist/interface/crud/analytics.d.ts.map +1 -0
  740. package/dist/interface/crud/analytics.js +0 -0
  741. package/dist/interface/crud/connected-accounts.d.ts +68 -0
  742. package/dist/interface/crud/connected-accounts.d.ts.map +1 -0
  743. package/dist/interface/crud/connected-accounts.js +41 -0
  744. package/dist/interface/crud/connected-accounts.js.map +1 -0
  745. package/dist/interface/crud/contact-channels.d.ts +181 -0
  746. package/dist/interface/crud/contact-channels.d.ts.map +1 -0
  747. package/dist/interface/crud/contact-channels.js +76 -0
  748. package/dist/interface/crud/contact-channels.js.map +1 -0
  749. package/dist/interface/crud/current-user.d.ts +285 -0
  750. package/dist/interface/crud/current-user.d.ts.map +1 -0
  751. package/dist/interface/crud/current-user.js +71 -0
  752. package/dist/interface/crud/current-user.js.map +1 -0
  753. package/dist/interface/crud/email-outbox.d.ts +1465 -0
  754. package/dist/interface/crud/email-outbox.d.ts.map +1 -0
  755. package/dist/interface/crud/email-outbox.js +195 -0
  756. package/dist/interface/crud/email-outbox.js.map +1 -0
  757. package/dist/interface/crud/email-templates.d.ts +85 -0
  758. package/dist/interface/crud/email-templates.d.ts.map +1 -0
  759. package/dist/interface/crud/email-templates.js +53 -0
  760. package/dist/interface/crud/email-templates.js.map +1 -0
  761. package/dist/interface/crud/emails.d.ts +41 -0
  762. package/dist/interface/crud/emails.d.ts.map +1 -0
  763. package/dist/interface/crud/emails.js +23 -0
  764. package/dist/interface/crud/emails.js.map +1 -0
  765. package/dist/interface/crud/internal-api-keys.d.ts +140 -0
  766. package/dist/interface/crud/internal-api-keys.d.ts.map +1 -0
  767. package/dist/interface/crud/internal-api-keys.js +56 -0
  768. package/dist/interface/crud/internal-api-keys.js.map +1 -0
  769. package/dist/interface/crud/invoices.d.ts +43 -0
  770. package/dist/interface/crud/invoices.d.ts.map +1 -0
  771. package/dist/interface/crud/invoices.js +28 -0
  772. package/dist/interface/crud/invoices.js.map +1 -0
  773. package/dist/interface/crud/items.d.ts +30 -0
  774. package/dist/interface/crud/items.d.ts.map +1 -0
  775. package/dist/interface/crud/items.js +25 -0
  776. package/dist/interface/crud/items.js.map +1 -0
  777. package/dist/interface/crud/notification-preferences.d.ts +38 -0
  778. package/dist/interface/crud/notification-preferences.d.ts.map +1 -0
  779. package/dist/interface/crud/notification-preferences.js +33 -0
  780. package/dist/interface/crud/notification-preferences.js.map +1 -0
  781. package/dist/interface/crud/oauth-providers.d.ts +186 -0
  782. package/dist/interface/crud/oauth-providers.d.ts.map +1 -0
  783. package/dist/interface/crud/oauth-providers.js +83 -0
  784. package/dist/interface/crud/oauth-providers.js.map +1 -0
  785. package/dist/interface/crud/products.d.ts +182 -0
  786. package/dist/interface/crud/products.d.ts.map +1 -0
  787. package/dist/interface/crud/products.js +32 -0
  788. package/dist/interface/crud/products.js.map +1 -0
  789. package/dist/interface/crud/project-api-keys.d.ts +203 -0
  790. package/dist/interface/crud/project-api-keys.d.ts.map +1 -0
  791. package/dist/interface/crud/project-api-keys.js +79 -0
  792. package/dist/interface/crud/project-api-keys.js.map +1 -0
  793. package/dist/interface/crud/project-permissions.d.ts +161 -0
  794. package/dist/interface/crud/project-permissions.d.ts.map +1 -0
  795. package/dist/interface/crud/project-permissions.js +116 -0
  796. package/dist/interface/crud/project-permissions.js.map +1 -0
  797. package/dist/interface/crud/projects.d.ts +851 -0
  798. package/dist/interface/crud/projects.d.ts.map +1 -0
  799. package/dist/interface/crud/projects.js +204 -0
  800. package/dist/interface/crud/projects.js.map +1 -0
  801. package/dist/interface/crud/session-replays.d.ts +83 -0
  802. package/dist/interface/crud/session-replays.d.ts.map +1 -0
  803. package/dist/interface/crud/session-replays.js +0 -0
  804. package/dist/interface/crud/sessions.d.ts +150 -0
  805. package/dist/interface/crud/sessions.d.ts.map +1 -0
  806. package/dist/interface/crud/sessions.js +62 -0
  807. package/dist/interface/crud/sessions.js.map +1 -0
  808. package/dist/interface/crud/sign-up-rules.d.ts +15 -0
  809. package/dist/interface/crud/sign-up-rules.d.ts.map +1 -0
  810. package/dist/interface/crud/sign-up-rules.js +0 -0
  811. package/dist/interface/crud/svix-token.d.ts +31 -0
  812. package/dist/interface/crud/svix-token.d.ts.map +1 -0
  813. package/dist/interface/crud/svix-token.js +22 -0
  814. package/dist/interface/crud/svix-token.js.map +1 -0
  815. package/dist/interface/crud/team-invitation-details.d.ts +31 -0
  816. package/dist/interface/crud/team-invitation-details.d.ts.map +1 -0
  817. package/dist/interface/crud/team-invitation-details.js +24 -0
  818. package/dist/interface/crud/team-invitation-details.js.map +1 -0
  819. package/dist/interface/crud/team-invitation.d.ts +54 -0
  820. package/dist/interface/crud/team-invitation.d.ts.map +1 -0
  821. package/dist/interface/crud/team-invitation.js +40 -0
  822. package/dist/interface/crud/team-invitation.js.map +1 -0
  823. package/dist/interface/crud/team-member-profiles.d.ts +286 -0
  824. package/dist/interface/crud/team-member-profiles.d.ts.map +1 -0
  825. package/dist/interface/crud/team-member-profiles.js +63 -0
  826. package/dist/interface/crud/team-member-profiles.js.map +1 -0
  827. package/dist/interface/crud/team-memberships.d.ts +75 -0
  828. package/dist/interface/crud/team-memberships.d.ts.map +1 -0
  829. package/dist/interface/crud/team-memberships.js +61 -0
  830. package/dist/interface/crud/team-memberships.js.map +1 -0
  831. package/dist/interface/crud/team-permissions.d.ts +169 -0
  832. package/dist/interface/crud/team-permissions.d.ts.map +1 -0
  833. package/dist/interface/crud/team-permissions.js +117 -0
  834. package/dist/interface/crud/team-permissions.js.map +1 -0
  835. package/dist/interface/crud/teams.d.ts +299 -0
  836. package/dist/interface/crud/teams.d.ts.map +1 -0
  837. package/dist/interface/crud/teams.js +142 -0
  838. package/dist/interface/crud/teams.js.map +1 -0
  839. package/dist/interface/crud/transactions.d.ts +183 -0
  840. package/dist/interface/crud/transactions.d.ts.map +1 -0
  841. package/dist/interface/crud/transactions.js +89 -0
  842. package/dist/interface/crud/transactions.js.map +1 -0
  843. package/dist/interface/crud/users.d.ts +653 -0
  844. package/dist/interface/crud/users.d.ts.map +1 -0
  845. package/dist/interface/crud/users.js +193 -0
  846. package/dist/interface/crud/users.js.map +1 -0
  847. package/dist/interface/handler-urls.d.ts +51 -0
  848. package/dist/interface/handler-urls.d.ts.map +1 -0
  849. package/dist/interface/handler-urls.js +16 -0
  850. package/dist/interface/page-component-versions.d.ts +25 -0
  851. package/dist/interface/page-component-versions.d.ts.map +1 -0
  852. package/dist/interface/page-component-versions.js +1664 -0
  853. package/dist/interface/page-component-versions.js.map +1 -0
  854. package/dist/interface/server-interface.d.ts +255 -0
  855. package/dist/interface/server-interface.d.ts.map +1 -0
  856. package/dist/interface/server-interface.js +461 -0
  857. package/dist/interface/server-interface.js.map +1 -0
  858. package/dist/interface/webhooks.d.ts +326 -0
  859. package/dist/interface/webhooks.d.ts.map +1 -0
  860. package/dist/interface/webhooks.js +24 -0
  861. package/dist/interface/webhooks.js.map +1 -0
  862. package/dist/known-errors.d.ts +575 -0
  863. package/dist/known-errors.d.ts.map +1 -0
  864. package/dist/known-errors.js +794 -0
  865. package/dist/known-errors.js.map +1 -0
  866. package/dist/local-emulator.d.ts +6 -0
  867. package/dist/local-emulator.d.ts.map +1 -0
  868. package/dist/local-emulator.js +10 -0
  869. package/dist/local-emulator.js.map +1 -0
  870. package/dist/payments/payment-methods.d.ts +64 -0
  871. package/dist/payments/payment-methods.d.ts.map +1 -0
  872. package/dist/payments/payment-methods.js +216 -0
  873. package/dist/payments/payment-methods.js.map +1 -0
  874. package/dist/payments/stripe-limits.d.ts +17 -0
  875. package/dist/payments/stripe-limits.d.ts.map +1 -0
  876. package/dist/payments/stripe-limits.js +20 -0
  877. package/dist/payments/stripe-limits.js.map +1 -0
  878. package/dist/plans.d.ts +72 -0
  879. package/dist/plans.d.ts.map +1 -0
  880. package/dist/plans.js +88 -0
  881. package/dist/plans.js.map +1 -0
  882. package/dist/schema-fields.d.ts +472 -0
  883. package/dist/schema-fields.d.ts.map +1 -0
  884. package/dist/schema-fields.js +1188 -0
  885. package/dist/schema-fields.js.map +1 -0
  886. package/dist/sessions.d.ts +165 -0
  887. package/dist/sessions.d.ts.map +1 -0
  888. package/dist/sessions.js +231 -0
  889. package/dist/sessions.js.map +1 -0
  890. package/dist/stack-config-file.d.ts +15 -0
  891. package/dist/stack-config-file.d.ts.map +1 -0
  892. package/dist/stack-config-file.js +82 -0
  893. package/dist/stack-config-file.js.map +1 -0
  894. package/dist/utils/api-keys.d.ts +26 -0
  895. package/dist/utils/api-keys.d.ts.map +1 -0
  896. package/dist/utils/api-keys.js +82 -0
  897. package/dist/utils/api-keys.js.map +1 -0
  898. package/dist/utils/arrays.d.ts +25 -0
  899. package/dist/utils/arrays.d.ts.map +1 -0
  900. package/dist/utils/arrays.js +569 -0
  901. package/dist/utils/arrays.js.map +1 -0
  902. package/dist/utils/auth-methods.d.ts +6 -0
  903. package/dist/utils/auth-methods.d.ts.map +1 -0
  904. package/dist/utils/auth-methods.js +13 -0
  905. package/dist/utils/auth-methods.js.map +1 -0
  906. package/dist/utils/base64.d.ts +6 -0
  907. package/dist/utils/base64.d.ts.map +1 -0
  908. package/dist/utils/base64.js +28 -0
  909. package/dist/utils/base64.js.map +1 -0
  910. package/dist/utils/booleans.d.ts +8 -0
  911. package/dist/utils/booleans.d.ts.map +1 -0
  912. package/dist/utils/booleans.js +38 -0
  913. package/dist/utils/booleans.js.map +1 -0
  914. package/dist/utils/browser-compat.d.ts +10 -0
  915. package/dist/utils/browser-compat.d.ts.map +1 -0
  916. package/dist/utils/browser-compat.js +23 -0
  917. package/dist/utils/browser-compat.js.map +1 -0
  918. package/dist/utils/bytes.d.ts +17 -0
  919. package/dist/utils/bytes.d.ts.map +1 -0
  920. package/dist/utils/bytes.js +304 -0
  921. package/dist/utils/bytes.js.map +1 -0
  922. package/dist/utils/caches.d.ts +102 -0
  923. package/dist/utils/caches.d.ts.map +1 -0
  924. package/dist/utils/caches.js +188 -0
  925. package/dist/utils/caches.js.map +1 -0
  926. package/dist/utils/cel-fields.d.ts +23 -0
  927. package/dist/utils/cel-fields.d.ts.map +1 -0
  928. package/dist/utils/cel-fields.js +108 -0
  929. package/dist/utils/cel-fields.js.map +1 -0
  930. package/dist/utils/compile-time.d.ts +10 -0
  931. package/dist/utils/compile-time.d.ts.map +1 -0
  932. package/dist/utils/compile-time.js +16 -0
  933. package/dist/utils/compile-time.js.map +1 -0
  934. package/dist/utils/country-codes.d.ts +11 -0
  935. package/dist/utils/country-codes.d.ts.map +1 -0
  936. package/dist/utils/country-codes.js +40 -0
  937. package/dist/utils/country-codes.js.map +1 -0
  938. package/dist/utils/crypto.d.ts +48 -0
  939. package/dist/utils/crypto.d.ts.map +1 -0
  940. package/dist/utils/crypto.js +215 -0
  941. package/dist/utils/crypto.js.map +1 -0
  942. package/dist/utils/currencies.d.ts +8 -0
  943. package/dist/utils/currencies.d.ts.map +1 -0
  944. package/dist/utils/currencies.js +52 -0
  945. package/dist/utils/currencies.js.map +1 -0
  946. package/dist/utils/currency-constants.d.ts +39 -0
  947. package/dist/utils/currency-constants.d.ts.map +1 -0
  948. package/dist/utils/currency-constants.js +44 -0
  949. package/dist/utils/currency-constants.js.map +1 -0
  950. package/dist/utils/dates.d.ts +23 -0
  951. package/dist/utils/dates.d.ts.map +1 -0
  952. package/dist/utils/dates.js +176 -0
  953. package/dist/utils/dates.js.map +1 -0
  954. package/dist/utils/dev-env-state-path.d.ts +6 -0
  955. package/dist/utils/dev-env-state-path.d.ts.map +1 -0
  956. package/dist/utils/dev-env-state-path.js +18 -0
  957. package/dist/utils/dev-env-state-path.js.map +1 -0
  958. package/dist/utils/dom.d.ts +5 -0
  959. package/dist/utils/dom.d.ts.map +1 -0
  960. package/dist/utils/dom.js +13 -0
  961. package/dist/utils/dom.js.map +1 -0
  962. package/dist/utils/env.d.ts +25 -0
  963. package/dist/utils/env.d.ts.map +1 -0
  964. package/dist/utils/env.js +85 -0
  965. package/dist/utils/env.js.map +1 -0
  966. package/dist/utils/errors.d.ts +231 -0
  967. package/dist/utils/errors.d.ts.map +1 -0
  968. package/dist/utils/errors.js +393 -0
  969. package/dist/utils/errors.js.map +1 -0
  970. package/dist/utils/esbuild.d.ts +16 -0
  971. package/dist/utils/esbuild.d.ts.map +1 -0
  972. package/dist/utils/esbuild.js +186 -0
  973. package/dist/utils/esbuild.js.map +1 -0
  974. package/dist/utils/featurebase.d.ts +30 -0
  975. package/dist/utils/featurebase.d.ts.map +1 -0
  976. package/dist/utils/featurebase.js +168 -0
  977. package/dist/utils/featurebase.js.map +1 -0
  978. package/dist/utils/fs.d.ts +9 -0
  979. package/dist/utils/fs.d.ts.map +1 -0
  980. package/dist/utils/fs.js +31 -0
  981. package/dist/utils/fs.js.map +1 -0
  982. package/dist/utils/functions.d.ts +6 -0
  983. package/dist/utils/functions.d.ts.map +1 -0
  984. package/dist/utils/functions.js +37 -0
  985. package/dist/utils/functions.js.map +1 -0
  986. package/dist/utils/geo.d.ts +24 -0
  987. package/dist/utils/geo.d.ts.map +1 -0
  988. package/dist/utils/geo.js +18 -0
  989. package/dist/utils/geo.js.map +1 -0
  990. package/dist/utils/globals.d.ts +13 -0
  991. package/dist/utils/globals.d.ts.map +1 -0
  992. package/dist/utils/globals.js +40 -0
  993. package/dist/utils/globals.js.map +1 -0
  994. package/dist/utils/hashes.d.ts +9 -0
  995. package/dist/utils/hashes.d.ts.map +1 -0
  996. package/dist/utils/hashes.js +47 -0
  997. package/dist/utils/hashes.js.map +1 -0
  998. package/dist/utils/html.d.ts +7 -0
  999. package/dist/utils/html.d.ts.map +1 -0
  1000. package/dist/utils/html.js +37 -0
  1001. package/dist/utils/html.js.map +1 -0
  1002. package/dist/utils/http.d.ts +45 -0
  1003. package/dist/utils/http.d.ts.map +1 -0
  1004. package/dist/utils/http.js +79 -0
  1005. package/dist/utils/http.js.map +1 -0
  1006. package/dist/utils/ips.d.ts +8 -0
  1007. package/dist/utils/ips.d.ts.map +1 -0
  1008. package/dist/utils/ips.js +40 -0
  1009. package/dist/utils/ips.js.map +1 -0
  1010. package/dist/utils/json.d.ts +15 -0
  1011. package/dist/utils/json.d.ts.map +1 -0
  1012. package/dist/utils/json.js +182 -0
  1013. package/dist/utils/json.js.map +1 -0
  1014. package/dist/utils/jsx-editable-transpiler.d.ts +68 -0
  1015. package/dist/utils/jsx-editable-transpiler.d.ts.map +1 -0
  1016. package/dist/utils/jsx-editable-transpiler.js +223 -0
  1017. package/dist/utils/jsx-editable-transpiler.js.map +1 -0
  1018. package/dist/utils/jsx-editable-transpiler.test.d.ts +1 -0
  1019. package/dist/utils/jsx-editable-transpiler.test.js +122 -0
  1020. package/dist/utils/jsx-editable-transpiler.test.js.map +1 -0
  1021. package/dist/utils/jwt.d.ts +79 -0
  1022. package/dist/utils/jwt.d.ts.map +1 -0
  1023. package/dist/utils/jwt.js +112 -0
  1024. package/dist/utils/jwt.js.map +1 -0
  1025. package/dist/utils/locks.d.ts +17 -0
  1026. package/dist/utils/locks.d.ts.map +1 -0
  1027. package/dist/utils/locks.js +56 -0
  1028. package/dist/utils/locks.js.map +1 -0
  1029. package/dist/utils/maps.d.ts +61 -0
  1030. package/dist/utils/maps.d.ts.map +1 -0
  1031. package/dist/utils/maps.js +302 -0
  1032. package/dist/utils/maps.js.map +1 -0
  1033. package/dist/utils/math.d.ts +8 -0
  1034. package/dist/utils/math.d.ts.map +1 -0
  1035. package/dist/utils/math.js +23 -0
  1036. package/dist/utils/math.js.map +1 -0
  1037. package/dist/utils/monkey-patch.d.ts +7 -0
  1038. package/dist/utils/monkey-patch.d.ts.map +1 -0
  1039. package/dist/utils/monkey-patch.js +25 -0
  1040. package/dist/utils/monkey-patch.js.map +1 -0
  1041. package/dist/utils/node-http.d.ts +17 -0
  1042. package/dist/utils/node-http.d.ts.map +1 -0
  1043. package/dist/utils/node-http.js +40 -0
  1044. package/dist/utils/node-http.js.map +1 -0
  1045. package/dist/utils/numbers.d.ts +7 -0
  1046. package/dist/utils/numbers.d.ts.map +1 -0
  1047. package/dist/utils/numbers.js +79 -0
  1048. package/dist/utils/numbers.js.map +1 -0
  1049. package/dist/utils/oauth.d.ts +11 -0
  1050. package/dist/utils/oauth.d.ts.map +1 -0
  1051. package/dist/utils/oauth.js +32 -0
  1052. package/dist/utils/oauth.js.map +1 -0
  1053. package/dist/utils/objects.d.ts +59 -0
  1054. package/dist/utils/objects.d.ts.map +1 -0
  1055. package/dist/utils/objects.js +846 -0
  1056. package/dist/utils/objects.js.map +1 -0
  1057. package/dist/utils/paginated-lists.d.ts +442 -0
  1058. package/dist/utils/paginated-lists.d.ts.map +1 -0
  1059. package/dist/utils/paginated-lists.js +414 -0
  1060. package/dist/utils/paginated-lists.js.map +1 -0
  1061. package/dist/utils/paginated-lists.test.d.ts +1 -0
  1062. package/dist/utils/paginated-lists.test.js +1304 -0
  1063. package/dist/utils/paginated-lists.test.js.map +1 -0
  1064. package/dist/utils/passkey.d.ts +2 -0
  1065. package/dist/utils/passkey.js +0 -0
  1066. package/dist/utils/promises.d.ts +80 -0
  1067. package/dist/utils/promises.d.ts.map +1 -0
  1068. package/dist/utils/promises.js +349 -0
  1069. package/dist/utils/promises.js.map +1 -0
  1070. package/dist/utils/proxies.d.ts +13 -0
  1071. package/dist/utils/proxies.d.ts.map +1 -0
  1072. package/dist/utils/proxies.js +201 -0
  1073. package/dist/utils/proxies.js.map +1 -0
  1074. package/dist/utils/react.d.ts +61 -0
  1075. package/dist/utils/react.d.ts.map +1 -0
  1076. package/dist/utils/react.js +243 -0
  1077. package/dist/utils/react.js.map +1 -0
  1078. package/dist/utils/redirect-urls.d.ts +30 -0
  1079. package/dist/utils/redirect-urls.d.ts.map +1 -0
  1080. package/dist/utils/redirect-urls.js +222 -0
  1081. package/dist/utils/redirect-urls.js.map +1 -0
  1082. package/dist/utils/regex.d.ts +5 -0
  1083. package/dist/utils/regex.d.ts.map +1 -0
  1084. package/dist/utils/regex.js +15 -0
  1085. package/dist/utils/regex.js.map +1 -0
  1086. package/dist/utils/results.d.ts +70 -0
  1087. package/dist/utils/results.d.ts.map +1 -0
  1088. package/dist/utils/results.js +342 -0
  1089. package/dist/utils/results.js.map +1 -0
  1090. package/dist/utils/sentry.d.ts +13 -0
  1091. package/dist/utils/sentry.d.ts.map +1 -0
  1092. package/dist/utils/sentry.js +16 -0
  1093. package/dist/utils/sentry.js.map +1 -0
  1094. package/dist/utils/stores.d.ts +104 -0
  1095. package/dist/utils/stores.d.ts.map +1 -0
  1096. package/dist/utils/stores.js +179 -0
  1097. package/dist/utils/stores.js.map +1 -0
  1098. package/dist/utils/strings.d.ts +76 -0
  1099. package/dist/utils/strings.d.ts.map +1 -0
  1100. package/dist/utils/strings.js +549 -0
  1101. package/dist/utils/strings.js.map +1 -0
  1102. package/dist/utils/strings.nicify.test.d.ts +1 -0
  1103. package/dist/utils/strings.nicify.test.js +243 -0
  1104. package/dist/utils/strings.nicify.test.js.map +1 -0
  1105. package/dist/utils/telemetry.d.ts +15 -0
  1106. package/dist/utils/telemetry.d.ts.map +1 -0
  1107. package/dist/utils/telemetry.js +35 -0
  1108. package/dist/utils/telemetry.js.map +1 -0
  1109. package/dist/utils/turnstile-browser.d.ts +32 -0
  1110. package/dist/utils/turnstile-browser.d.ts.map +1 -0
  1111. package/dist/utils/turnstile-browser.js +65 -0
  1112. package/dist/utils/turnstile-browser.js.map +1 -0
  1113. package/dist/utils/turnstile-flow.d.ts +29 -0
  1114. package/dist/utils/turnstile-flow.d.ts.map +1 -0
  1115. package/dist/utils/turnstile-flow.js +225 -0
  1116. package/dist/utils/turnstile-flow.js.map +1 -0
  1117. package/dist/utils/turnstile-flow.test.d.ts +1 -0
  1118. package/dist/utils/turnstile-flow.test.js +75 -0
  1119. package/dist/utils/turnstile-flow.test.js.map +1 -0
  1120. package/dist/utils/turnstile.d.ts +17 -0
  1121. package/dist/utils/turnstile.d.ts.map +1 -0
  1122. package/dist/utils/turnstile.js +31 -0
  1123. package/dist/utils/turnstile.js.map +1 -0
  1124. package/dist/utils/typed-arrays.d.ts +14 -0
  1125. package/dist/utils/typed-arrays.d.ts.map +1 -0
  1126. package/dist/utils/typed-arrays.js +22 -0
  1127. package/dist/utils/typed-arrays.js.map +1 -0
  1128. package/dist/utils/types.d.ts +77 -0
  1129. package/dist/utils/types.d.ts.map +1 -0
  1130. package/dist/utils/types.js +59 -0
  1131. package/dist/utils/types.js.map +1 -0
  1132. package/dist/utils/unicode.d.ts +5 -0
  1133. package/dist/utils/unicode.d.ts.map +1 -0
  1134. package/dist/utils/unicode.js +26 -0
  1135. package/dist/utils/unicode.js.map +1 -0
  1136. package/dist/utils/urls.d.ts +28 -0
  1137. package/dist/utils/urls.d.ts.map +1 -0
  1138. package/dist/utils/urls.js +274 -0
  1139. package/dist/utils/urls.js.map +1 -0
  1140. package/dist/utils/uuids.d.ts +6 -0
  1141. package/dist/utils/uuids.d.ts.map +1 -0
  1142. package/dist/utils/uuids.js +39 -0
  1143. package/dist/utils/uuids.js.map +1 -0
  1144. package/package.json +99 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paginated-lists.test.js","names":[],"sources":["../../../src/utils/paginated-lists.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { ArrayPaginatedList, PaginatedList } from \"./paginated-lists\";\nimport { stringCompare } from \"./strings\";\n\ntype NumberFilter = (item: number) => boolean;\ntype NumberOrderBy = (a: number, b: number) => number;\n\n// Helper to extract just the items from a paginated result\nconst items = <T>(result: { items: { item: T }[] }) => result.items.map(i => i.item);\n\ndescribe(\"ArrayPaginatedList\", () => {\n describe(\"basic forward pagination (next)\", () => {\n it(\"should return all items when limit is greater than array length\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 2, 3]);\n expect(result.isFirst).toBe(true);\n expect(result.isLast).toBe(true);\n });\n\n it(\"should return exact limit when more items exist\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 2, 3]);\n expect(result.isFirst).toBe(true);\n expect(result.isLast).toBe(false);\n });\n\n it(\"should continue from cursor correctly\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const first = await list.next({\n after: list.getFirstCursor(),\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(first)).toEqual([1, 2]);\n expect(first.cursor).toBe(\"before-2\");\n\n const second = await list.next({\n after: first.cursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(second)).toEqual([3, 4]);\n expect(second.isFirst).toBe(false);\n expect(second.isLast).toBe(false);\n });\n\n it(\"should handle empty array\", async () => {\n const list = new ArrayPaginatedList<number>([]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([]);\n expect(result.isFirst).toBe(true);\n expect(result.isLast).toBe(true);\n });\n\n it(\"should handle limit of 0\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 0,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([]);\n });\n });\n\n describe(\"backward pagination (prev)\", () => {\n it(\"should return items before cursor\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const result = await list.prev({\n before: list.getLastCursor(),\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([4, 5]);\n expect(result.isFirst).toBe(false);\n expect(result.isLast).toBe(true);\n });\n\n it(\"should paginate backwards correctly\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n\n const last = await list.prev({\n before: list.getLastCursor(),\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n expect(items(last)).toEqual([4, 5]);\n\n const middle = await list.prev({\n before: last.cursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n expect(items(middle)).toEqual([2, 3]);\n\n const first = await list.prev({\n before: middle.cursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n expect(items(first)).toEqual([1]);\n expect(first.isFirst).toBe(true);\n });\n });\n\n describe(\"cursor semantics (prevCursor and nextCursor)\", () => {\n it(\"should have prevCursor before the item and nextCursor after\", async () => {\n const list = new ArrayPaginatedList([10, 20, 30]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n // First item: prevCursor should be \"before-0\", nextCursor should be \"before-1\"\n expect(result.items[0].prevCursor).toBe(\"before-0\");\n expect(result.items[0].nextCursor).toBe(\"before-1\");\n\n // Second item\n expect(result.items[1].prevCursor).toBe(\"before-1\");\n expect(result.items[1].nextCursor).toBe(\"before-2\");\n\n // Third item\n expect(result.items[2].prevCursor).toBe(\"before-2\");\n expect(result.items[2].nextCursor).toBe(\"before-3\");\n });\n\n it(\"should allow using nextCursor to continue forward pagination\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n\n const first = await list.next({\n after: list.getFirstCursor(),\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n // Use the nextCursor of the last item to continue\n const continueFrom = first.items[first.items.length - 1].nextCursor;\n const second = await list.next({\n after: continueFrom,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(second)).toEqual([3, 4]);\n });\n\n it(\"should allow using prevCursor to go back\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n\n // Get items 3,4,5 first\n const middle = await list.next({\n after: \"before-2\",\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(middle)).toEqual([3, 4, 5]);\n expect(middle.items[0].prevCursor).toBe(\"before-2\");\n\n // Use prevCursor of first item to go back\n const goBack = await list.prev({\n before: middle.items[0].prevCursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(goBack)).toEqual([1, 2]);\n });\n });\n\n describe(\"filtering\", () => {\n it(\"should filter items correctly\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5, 6]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: (n) => n % 2 === 0, // only even numbers\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([2, 4, 6]);\n });\n\n it(\"should respect limit with filtering\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 2,\n filter: (n) => n % 2 === 0,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([2, 4]);\n });\n\n it(\"should handle filter that matches nothing\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => false,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([]);\n });\n });\n\n describe(\"ordering\", () => {\n it(\"should sort items in ascending order\", async () => {\n const list = new ArrayPaginatedList([5, 2, 8, 1, 9]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 2, 5, 8, 9]);\n });\n\n it(\"should sort items in descending order\", async () => {\n const list = new ArrayPaginatedList([5, 2, 8, 1, 9]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => b - a,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([9, 8, 5, 2, 1]);\n });\n\n it(\"should sort objects by property\", async () => {\n const list = new ArrayPaginatedList([\n { name: \"Charlie\", age: 30 },\n { name: \"Alice\", age: 25 },\n { name: \"Bob\", age: 35 },\n ]);\n\n const byName = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => stringCompare(a.name, b.name),\n limitPrecision: \"exact\",\n });\n\n expect(items(byName).map(p => p.name)).toEqual([\"Alice\", \"Bob\", \"Charlie\"]);\n\n const byAge = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a.age - b.age,\n limitPrecision: \"exact\",\n });\n\n expect(items(byAge).map(p => p.name)).toEqual([\"Alice\", \"Charlie\", \"Bob\"]);\n });\n });\n\n describe(\"limitPrecision\", () => {\n it(\"exact should return exactly the limit\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(result.items.length).toBe(3);\n });\n\n // Note: ArrayPaginatedList always returns exact results since it has all data in memory\n // These tests verify the contract is respected\n it(\"at-least should return at least the limit (or all if less available)\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"at-least\",\n });\n\n expect(result.items.length).toBeGreaterThanOrEqual(3);\n });\n\n it(\"at-most should return at most the limit\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"at-most\",\n });\n\n expect(result.items.length).toBeLessThanOrEqual(3);\n });\n\n it(\"approximate should allow flexibility in either direction\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"approximate\",\n });\n\n // With 'approximate', the implementation can return more or fewer items\n // than requested. We just verify it returns some items and makes progress.\n expect(result.items.length).toBeGreaterThan(0);\n // Should still return valid items\n expect(items(result).every(n => typeof n === \"number\")).toBe(true);\n });\n\n it(\"approximate should still make progress when limit > 0\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n const allItems: number[] = [];\n\n let cursor = list.getFirstCursor();\n let iterations = 0;\n const maxIterations = 20; // Safety limit to prevent infinite loops\n\n while (iterations < maxIterations) {\n const result = await list.next({\n after: cursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"approximate\",\n });\n\n if (result.items.length === 0) break;\n\n allItems.push(...items(result));\n // Cursor must change to ensure progress\n expect(result.cursor).not.toBe(cursor);\n cursor = result.cursor;\n iterations++;\n\n if (result.isLast) break;\n }\n\n // Should eventually get all items\n expect(allItems.length).toBeGreaterThan(0);\n });\n });\n\n describe(\"getFirstCursor and getLastCursor\", () => {\n it(\"should return correct cursor format\", () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n expect(list.getFirstCursor()).toBe(\"before-0\");\n expect(list.getLastCursor()).toBe(\"before-3\");\n });\n\n it(\"should work for empty array\", () => {\n const list = new ArrayPaginatedList([]);\n expect(list.getFirstCursor()).toBe(\"before-0\");\n expect(list.getLastCursor()).toBe(\"before-0\");\n });\n });\n\n describe(\"compare\", () => {\n it(\"should compare items using the orderBy function\", () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n const orderBy = (a: number, b: number) => a - b;\n\n expect(list.compare(orderBy, 1, 2)).toBeLessThan(0);\n expect(list.compare(orderBy, 2, 1)).toBeGreaterThan(0);\n expect(list.compare(orderBy, 1, 1)).toBe(0);\n });\n });\n});\n\ndescribe(\"PaginatedList.empty\", () => {\n it(\"should return empty results\", async () => {\n const list = PaginatedList.empty();\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: {},\n orderBy: {},\n limitPrecision: \"exact\",\n });\n\n expect(result.items).toEqual([]);\n expect(result.isFirst).toBe(true);\n expect(result.isLast).toBe(true);\n });\n\n it(\"should have first cursor\", () => {\n const list = PaginatedList.empty();\n expect(list.getFirstCursor()).toBe(\"first\");\n expect(list.getLastCursor()).toBe(\"last\");\n });\n});\n\ndescribe(\"PaginatedList.map\", () => {\n it(\"should transform items\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n const doubled = list.map<number, NumberFilter, NumberOrderBy>({\n itemMapper: (n) => n * 2,\n oldItemFromNewItem: (n) => n / 2,\n oldFilterFromNewFilter: (f) => f,\n oldOrderByFromNewOrderBy: (o) => o,\n });\n\n const result = await doubled.next({\n after: doubled.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([2, 4, 6]);\n });\n\n it(\"should preserve cursor semantics\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n const doubled = list.map<number, NumberFilter, NumberOrderBy>({\n itemMapper: (n) => n * 2,\n oldItemFromNewItem: (n) => n / 2,\n oldFilterFromNewFilter: (f) => f,\n oldOrderByFromNewOrderBy: (o) => o,\n });\n\n const first = await doubled.next({\n after: doubled.getFirstCursor(),\n limit: 1,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(first)).toEqual([2]);\n\n const second = await doubled.next({\n after: first.cursor,\n limit: 1,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(second)).toEqual([4]);\n });\n});\n\ndescribe(\"PaginatedList.filter\", () => {\n it(\"should filter items\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5, 6]);\n const evens = list.filter({\n filter: (n) => n % 2 === 0,\n oldFilterFromNewFilter: () => () => true,\n estimateItemsToFetch: ({ limit }) => limit * 2,\n });\n\n const result = await evens.next({\n after: evens.getFirstCursor(),\n limit: 10,\n filter: undefined,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([2, 4, 6]);\n });\n});\n\ndescribe(\"PaginatedList.addFilter\", () => {\n it(\"should add additional filter constraint\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n\n // First filter: only even\n const evens = list.filter({\n filter: (n) => n % 2 === 0,\n oldFilterFromNewFilter: () => () => true,\n estimateItemsToFetch: ({ limit }) => limit * 2,\n });\n\n // Add filter: only > 5\n const evenAndGreaterThan5 = evens.addFilter({\n filter: (n) => n > 5,\n estimateItemsToFetch: ({ limit }) => limit * 2,\n });\n\n const result = await evenAndGreaterThan5.next({\n after: evenAndGreaterThan5.getFirstCursor(),\n limit: 10,\n filter: undefined,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([6, 8, 10]);\n });\n});\n\ndescribe(\"PaginatedList.flatMap\", () => {\n it(\"should expand items\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n const expanded = list.flatMap<number, `before-${number}`, NumberFilter, NumberOrderBy>({\n itemMapper: (entry) => [\n { item: entry.item, prevCursor: entry.prevCursor, nextCursor: entry.nextCursor },\n { item: entry.item + 0.5, prevCursor: entry.prevCursor, nextCursor: entry.nextCursor },\n ],\n compare: (_, a, b) => a - b,\n newCursorFromOldCursor: (c) => c,\n oldCursorFromNewCursor: (c) => c,\n oldFilterFromNewFilter: (f) => f,\n oldOrderByFromNewOrderBy: (o) => o,\n estimateItemsToFetch: ({ limit }) => limit,\n });\n\n const result = await expanded.next({\n after: expanded.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 1.5, 2, 2.5, 3, 3.5]);\n });\n\n it(\"should filter out items (return empty array)\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const evensOnly = list.flatMap<number, `before-${number}`, NumberFilter, NumberOrderBy>({\n itemMapper: (entry) => entry.item % 2 === 0\n ? [{ item: entry.item, prevCursor: entry.prevCursor, nextCursor: entry.nextCursor }]\n : [],\n compare: (_, a, b) => a - b,\n newCursorFromOldCursor: (c) => c,\n oldCursorFromNewCursor: (c) => c,\n oldFilterFromNewFilter: (f) => f,\n oldOrderByFromNewOrderBy: (o) => o,\n estimateItemsToFetch: ({ limit }) => limit * 2,\n });\n\n const result = await evensOnly.next({\n after: evensOnly.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([2, 4]);\n });\n});\n\ndescribe(\"PaginatedList.merge\", () => {\n it(\"should merge two lists\", async () => {\n const list1 = new ArrayPaginatedList([1, 3, 5]);\n const list2 = new ArrayPaginatedList([2, 4, 6]);\n\n const merged = PaginatedList.merge(list1, list2);\n\n const result = await merged.next({\n after: merged.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 2, 3, 4, 5, 6]);\n });\n\n it(\"should merge three lists\", async () => {\n const list1 = new ArrayPaginatedList([1, 4, 7]);\n const list2 = new ArrayPaginatedList([2, 5, 8]);\n const list3 = new ArrayPaginatedList([3, 6, 9]);\n\n const merged = PaginatedList.merge(list1, list2, list3);\n\n const result = await merged.next({\n after: merged.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9]);\n });\n\n it(\"should handle empty lists in merge\", async () => {\n const list1 = new ArrayPaginatedList([1, 2, 3]);\n const list2 = new ArrayPaginatedList<number>([]);\n\n const merged = PaginatedList.merge(list1, list2);\n\n const result = await merged.next({\n after: merged.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 2, 3]);\n });\n\n it(\"should paginate through merged list\", async () => {\n const list1 = new ArrayPaginatedList([1, 3, 5, 7, 9]);\n const list2 = new ArrayPaginatedList([2, 4, 6, 8, 10]);\n\n const merged = PaginatedList.merge(list1, list2);\n\n const first = await merged.next({\n after: merged.getFirstCursor(),\n limit: 4,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(first)).toEqual([1, 2, 3, 4]);\n\n const second = await merged.next({\n after: first.cursor,\n limit: 4,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(second)).toEqual([5, 6, 7, 8]);\n });\n\n it(\"should have JSON-encoded cursor\", () => {\n const list1 = new ArrayPaginatedList([1, 2]);\n const list2 = new ArrayPaginatedList([3, 4]);\n\n const merged = PaginatedList.merge(list1, list2);\n const cursor = merged.getFirstCursor();\n\n expect(() => JSON.parse(cursor)).not.toThrow();\n expect(JSON.parse(cursor)).toEqual([\"before-0\", \"before-0\"]);\n });\n\n it(\"should paginate backward through merged list correctly\", async () => {\n const list1 = new ArrayPaginatedList([1, 3, 5]);\n const list2 = new ArrayPaginatedList([2, 4, 6]);\n\n const merged = PaginatedList.merge(list1, list2);\n\n // Get last 3 items going backward\n const last = await merged.prev({\n before: merged.getLastCursor(),\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(last)).toEqual([4, 5, 6]);\n expect(last.isLast).toBe(true);\n expect(last.isFirst).toBe(false);\n\n // Continue backward to get previous 3 items\n const middle = await merged.prev({\n before: last.cursor,\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(middle)).toEqual([1, 2, 3]);\n expect(middle.isFirst).toBe(true);\n });\n\n it(\"should paginate backward through entire merged list\", async () => {\n const list1 = new ArrayPaginatedList([1, 3, 5, 7, 9]);\n const list2 = new ArrayPaginatedList([2, 4, 6, 8, 10]);\n\n const merged = PaginatedList.merge(list1, list2);\n const allItems: number[] = [];\n\n let cursor = merged.getLastCursor();\n let isFirst = false;\n\n while (!isFirst) {\n const result = await merged.prev({\n before: cursor,\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n allItems.unshift(...items(result));\n cursor = result.cursor;\n isFirst = result.isFirst;\n }\n\n expect(allItems).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n });\n\n it(\"should have consistent forward and backward pagination results\", async () => {\n const list1 = new ArrayPaginatedList([1, 4, 7]);\n const list2 = new ArrayPaginatedList([2, 5, 8]);\n const list3 = new ArrayPaginatedList([3, 6, 9]);\n\n const merged = PaginatedList.merge(list1, list2, list3);\n\n // Collect all items going forward\n const forwardItems: number[] = [];\n let forwardCursor = merged.getFirstCursor();\n let isLast = false;\n\n while (!isLast) {\n const result = await merged.next({\n after: forwardCursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n forwardItems.push(...items(result));\n forwardCursor = result.cursor;\n isLast = result.isLast;\n }\n\n // Collect all items going backward\n const backwardItems: number[] = [];\n let backwardCursor = merged.getLastCursor();\n let isFirst = false;\n\n while (!isFirst) {\n const result = await merged.prev({\n before: backwardCursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n backwardItems.unshift(...items(result));\n backwardCursor = result.cursor;\n isFirst = result.isFirst;\n }\n\n // Both directions should yield the same final result\n expect(forwardItems).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9]);\n expect(backwardItems).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9]);\n });\n});\n\ndescribe(\"edge cases\", () => {\n it(\"should handle single item\", async () => {\n const list = new ArrayPaginatedList([42]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([42]);\n expect(result.isFirst).toBe(true);\n expect(result.isLast).toBe(true);\n });\n\n it(\"should handle duplicate values\", async () => {\n const list = new ArrayPaginatedList([1, 1, 2, 2, 3, 3]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 1, 2, 2, 3, 3]);\n });\n\n it(\"should handle negative numbers\", async () => {\n const list = new ArrayPaginatedList([-3, -1, 0, 1, 3]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([-3, -1, 0, 1, 3]);\n });\n\n it(\"should handle string items\", async () => {\n const list = new ArrayPaginatedList([\"banana\", \"apple\", \"cherry\"]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => stringCompare(a, b),\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([\"apple\", \"banana\", \"cherry\"]);\n });\n\n it(\"should handle object items\", async () => {\n const list = new ArrayPaginatedList([\n { id: 1, value: \"a\" },\n { id: 2, value: \"b\" },\n ]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a.id - b.id,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([\n { id: 1, value: \"a\" },\n { id: 2, value: \"b\" },\n ]);\n });\n});\n\ndescribe(\"complete pagination walkthrough\", () => {\n it(\"should paginate forward through entire list\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n const allItems: number[] = [];\n\n let cursor = list.getFirstCursor();\n let isLast = false;\n\n while (!isLast) {\n const result = await list.next({\n after: cursor,\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n allItems.push(...items(result));\n cursor = result.cursor;\n isLast = result.isLast;\n }\n\n expect(allItems).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n });\n\n it(\"should paginate backward through entire list\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n const allItems: number[] = [];\n\n let cursor = list.getLastCursor();\n let isFirst = false;\n\n while (!isFirst) {\n const result = await list.prev({\n before: cursor,\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n allItems.unshift(...items(result));\n cursor = result.cursor;\n isFirst = result.isFirst;\n }\n\n expect(allItems).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n });\n});\n\ndescribe(\"unsorted array pagination\", () => {\n it(\"should correctly paginate through an unsorted array with sorting\", async () => {\n const list = new ArrayPaginatedList([3, 1, 2]);\n\n const first = await list.next({\n after: list.getFirstCursor(),\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(first)).toEqual([1, 2]);\n\n const second = await list.next({\n after: first.cursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(second)).toEqual([3]);\n });\n\n it(\"should maintain sorted order across pagination boundaries\", async () => {\n const list = new ArrayPaginatedList([5, 4, 3, 2, 1]);\n const allItems: number[] = [];\n\n let cursor = list.getFirstCursor();\n let isLast = false;\n\n while (!isLast) {\n const result = await list.next({\n after: cursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n allItems.push(...items(result));\n cursor = result.cursor;\n isLast = result.isLast;\n }\n\n expect(allItems).toEqual([1, 2, 3, 4, 5]);\n });\n\n it(\"should handle random order array correctly\", async () => {\n const list = new ArrayPaginatedList([7, 2, 9, 1, 5, 8, 3, 6, 4]);\n\n const allItems: number[] = [];\n let cursor = list.getFirstCursor();\n let isLast = false;\n\n while (!isLast) {\n const result = await list.next({\n after: cursor,\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n allItems.push(...items(result));\n cursor = result.cursor;\n isLast = result.isLast;\n }\n\n expect(allItems).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9]);\n });\n\n it(\"should have consistent cursor semantics with sorted data\", async () => {\n const list = new ArrayPaginatedList([3, 1, 2]);\n\n const first = await list.next({\n after: list.getFirstCursor(),\n limit: 1,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(first)).toEqual([1]);\n\n const second = await list.next({\n after: first.cursor,\n limit: 1,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(second)).toEqual([2]);\n });\n});\n\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { AuthenticationResponseJSON, AuthenticatorAttestationResponseJSON, PublicKeyCredentialCreationOptionsJSON, PublicKeyCredentialRequestOptionsJSON, RegistrationResponseJSON } from "@simplewebauthn/types";
2
+ export { type AuthenticationResponseJSON, type AuthenticatorAttestationResponseJSON, type PublicKeyCredentialCreationOptionsJSON, type PublicKeyCredentialRequestOptionsJSON, type RegistrationResponseJSON };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,80 @@
1
+ import { Result } from "./results";
2
+
3
+ //#region src/utils/promises.d.ts
4
+ type ReactPromise<T> = Promise<T> & ({
5
+ status: "rejected";
6
+ reason: unknown;
7
+ } | {
8
+ status: "fulfilled";
9
+ value: T;
10
+ } | {
11
+ status: "pending";
12
+ });
13
+ type Resolve<T> = (value: T) => void;
14
+ type Reject = (reason: unknown) => void;
15
+ declare function createPromise<T>(callback: (resolve: Resolve<T>, reject: Reject) => void): ReactPromise<T>;
16
+ /**
17
+ * Like Promise.resolve(...), but also adds the status and value properties for use with React's `use` hook, and caches
18
+ * the value so that invoking `resolved` twice returns the same promise.
19
+ */
20
+ declare function resolved<T>(value: T): ReactPromise<T>;
21
+ /**
22
+ * Like Promise.reject(...), but also adds the status and value properties for use with React's `use` hook, and caches
23
+ * the value so that invoking `rejected` twice returns the same promise.
24
+ */
25
+ declare function rejected<T>(reason: unknown): ReactPromise<T>;
26
+ declare function neverResolve(): ReactPromise<never>;
27
+ declare function pending<T>(promise: Promise<T>, options?: {
28
+ disableErrorWrapping?: boolean;
29
+ }): ReactPromise<T>;
30
+ /**
31
+ * Should be used to wrap Promises that are not immediately awaited, so they don't throw an unhandled promise rejection
32
+ * error.
33
+ *
34
+ * Vercel kills serverless functions on unhandled promise rejection errors, so this is important.
35
+ */
36
+ declare function ignoreUnhandledRejection<T extends Promise<any>>(promise: T): void;
37
+ /**
38
+ * See concatStacktraces for more information.
39
+ */
40
+ declare function concatStacktracesIfRejected<T>(promise: Promise<T>): void;
41
+ declare function wait(ms: number): Promise<void>;
42
+ declare function waitUntil(date: Date): Promise<void>;
43
+ declare function runAsynchronouslyWithAlert(...args: Parameters<typeof runAsynchronously>): void;
44
+ declare function runAsynchronously(promiseOrFunc: void | Promise<unknown> | (() => void | Promise<unknown>) | undefined, options?: {
45
+ noErrorLogging?: boolean;
46
+ onError?: (error: Error) => void;
47
+ }): void;
48
+ declare class TimeoutError extends Error {
49
+ readonly ms: number;
50
+ constructor(ms: number);
51
+ }
52
+ declare function timeout<T>(promiseOrFunc: Promise<T> | (() => Promise<T>), ms: number): Promise<Result<T, TimeoutError>>;
53
+ declare function timeoutThrow<T>(promise: Promise<T>, ms: number): Promise<T>;
54
+ type RateLimitOptions = {
55
+ /**
56
+ * The number of requests to process in parallel. Currently only 1 is supported.
57
+ */
58
+ concurrency: 1;
59
+ /**
60
+ * If true, multiple requests waiting at the same time will be reduced to just one. Default is false.
61
+ */
62
+ batchCalls?: boolean;
63
+ /**
64
+ * Waits for throttleMs since the start of last request before starting the next request. Default is 0.
65
+ */
66
+ throttleMs?: number;
67
+ /**
68
+ * Waits for gapMs since the end of last request before starting the next request. Default is 0.
69
+ */
70
+ gapMs?: number;
71
+ /**
72
+ * Waits until there have been no new requests for debounceMs before starting a new request. Default is 0.
73
+ */
74
+ debounceMs?: number;
75
+ };
76
+ declare function rateLimited<T>(func: () => Promise<T>, options: RateLimitOptions): () => Promise<T>;
77
+ declare function throttled<T, A extends any[]>(func: (...args: A) => Promise<T>, delayMs: number): (...args: A) => Promise<T>;
78
+ //#endregion
79
+ export { RateLimitOptions, ReactPromise, concatStacktracesIfRejected, createPromise, ignoreUnhandledRejection, neverResolve, pending, rateLimited, rejected, resolved, runAsynchronously, runAsynchronouslyWithAlert, throttled, timeout, timeoutThrow, wait, waitUntil };
80
+ //# sourceMappingURL=promises.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promises.d.ts","names":[],"sources":["../../../src/utils/promises.tsx"],"mappings":";;;KAQY,YAAA,MAAkB,OAAA,CAAQ,CAAA;EAChC,MAAA;EAAoB,MAAA;AAAA;EACpB,MAAA;EAAqB,KAAA,EAAO,CAAA;AAAA;EAC5B,MAAA;AAAA;AAAA,KAGD,OAAA,OAAc,KAAA,EAAO,CAAA;AAAA,KACrB,MAAA,IAAU,MAAA;AAAA,iBACC,aAAA,GAAA,CAAiB,QAAA,GAAW,OAAA,EAAS,OAAA,CAAQ,CAAA,GAAI,MAAA,EAAQ,MAAA,YAAkB,YAAA,CAAa,CAAA;;;;;iBAwExF,QAAA,GAAA,CAAY,KAAA,EAAO,CAAA,GAAI,YAAA,CAAa,CAAA;;;;;iBA0CpC,QAAA,GAAA,CAAY,MAAA,YAAkB,YAAA,CAAa,CAAA;AAAA,iBA6C3C,YAAA,CAAA,GAAgB,YAAA;AAAA,iBAchB,OAAA,GAAA,CAAW,OAAA,EAAS,OAAA,CAAQ,CAAA,GAAI,OAAA;EAAW,oBAAA;AAAA,IAAwC,YAAA,CAAa,CAAA;;;;;AA/KrF;;iBAuNX,wBAAA,WAAmC,OAAA,MAAA,CAAc,OAAA,EAAS,CAAA;;;AArN1E;iBA0OgB,2BAAA,GAAA,CAA+B,OAAA,EAAS,OAAA,CAAQ,CAAA;AAAA,iBAW1C,IAAA,CAAK,EAAA,WAAU,OAAA;AAAA,iBAgCf,SAAA,CAAU,IAAA,EAAM,IAAA,GAAI,OAAA;AAAA,iBAsB1B,0BAAA,CAAA,GAA8B,IAAA,EAAM,UAAA,QAAkB,iBAAA;AAAA,iBAgCtD,iBAAA,CACd,aAAA,SAAsB,OAAA,0BAAiC,OAAA,wBACvD,OAAA;EACE,cAAA;EACA,OAAA,IAAW,KAAA,EAAO,KAAA;AAAA;AAAA,cAoChB,YAAA,SAAqB,KAAA;EAAA,SACG,EAAA;cAAA,EAAA;AAAA;AAAA,iBAMR,OAAA,GAAA,CAAW,aAAA,EAAe,OAAA,CAAQ,CAAA,WAAY,OAAA,CAAQ,CAAA,IAAK,EAAA,WAAa,OAAA,CAAQ,MAAA,CAAO,CAAA,EAAG,YAAA;AAAA,iBA0B1F,YAAA,GAAA,CAAgB,OAAA,EAAS,OAAA,CAAQ,CAAA,GAAI,EAAA,WAAa,OAAA,CAAQ,CAAA;AAAA,KAgBpE,gBAAA;EApaqB;;;EAwa/B,WAAA;EAxauG;AAwEzG;;EAqWE,UAAA;EArWiC;;;EA0WjC,UAAA;EA1WiD;;;EA+WjD,KAAA;EA/WqC;;;EAoXrC,UAAA;AAAA;AAAA,iBAGc,WAAA,GAAA,CACd,IAAA,QAAY,OAAA,CAAQ,CAAA,GACpB,OAAA,EAAS,gBAAA,SACF,OAAA,CAAQ,CAAA;AAAA,iBA0DD,SAAA,oBAAA,CAA8B,IAAA,MAAU,IAAA,EAAM,CAAA,KAAM,OAAA,CAAQ,CAAA,GAAI,OAAA,eAAsB,IAAA,EAAM,CAAA,KAAM,OAAA,CAAQ,CAAA"}
@@ -0,0 +1,333 @@
1
+ import { HexclaveAssertionError, captureError, concatStacktraces, errorToNiceString } from "./errors.js";
2
+ import { getProcessEnv } from "./env.js";
3
+ import { DependenciesMap } from "./maps.js";
4
+ import { Result } from "./results.js";
5
+ import { traceSpan } from "./telemetry.js";
6
+ import { KnownError } from "../index.js";
7
+ import { generateUuid } from "./uuids.js";
8
+
9
+ //#region src/utils/promises.tsx
10
+ function createPromise(callback) {
11
+ let status = "pending";
12
+ let valueOrReason = void 0;
13
+ let resolve = null;
14
+ let reject = null;
15
+ const promise = new Promise((res, rej) => {
16
+ resolve = (value) => {
17
+ if (status !== "pending") return;
18
+ status = "fulfilled";
19
+ valueOrReason = value;
20
+ res(value);
21
+ };
22
+ reject = (reason) => {
23
+ if (status !== "pending") return;
24
+ status = "rejected";
25
+ valueOrReason = reason;
26
+ rej(reason);
27
+ };
28
+ });
29
+ callback(resolve, reject);
30
+ return Object.assign(promise, {
31
+ status,
32
+ ...status === "fulfilled" ? { value: valueOrReason } : {},
33
+ ...status === "rejected" ? { reason: valueOrReason } : {}
34
+ });
35
+ }
36
+ (void 0)?.test("createPromise", async ({ expect }) => {
37
+ const resolvedPromise = createPromise((resolve) => {
38
+ resolve(42);
39
+ });
40
+ expect(resolvedPromise.status).toBe("fulfilled");
41
+ expect(resolvedPromise.value).toBe(42);
42
+ expect(await resolvedPromise).toBe(42);
43
+ const error = /* @__PURE__ */ new Error("Test error");
44
+ const rejectedPromise = createPromise((_, reject) => {
45
+ reject(error);
46
+ });
47
+ expect(rejectedPromise.status).toBe("rejected");
48
+ expect(rejectedPromise.reason).toBe(error);
49
+ await expect(rejectedPromise).rejects.toBe(error);
50
+ const pendingPromise = createPromise(() => {});
51
+ expect(pendingPromise.status).toBe("pending");
52
+ expect(pendingPromise.value).toBeUndefined();
53
+ expect(pendingPromise.reason).toBeUndefined();
54
+ let resolveCount = 0;
55
+ const multiResolvePromise = createPromise((resolve) => {
56
+ resolve(1);
57
+ resolveCount++;
58
+ resolve(2);
59
+ resolveCount++;
60
+ });
61
+ expect(resolveCount).toBe(2);
62
+ expect(multiResolvePromise.status).toBe("fulfilled");
63
+ expect(multiResolvePromise.value).toBe(1);
64
+ expect(await multiResolvePromise).toBe(1);
65
+ });
66
+ let resolvedCache = null;
67
+ /**
68
+ * Like Promise.resolve(...), but also adds the status and value properties for use with React's `use` hook, and caches
69
+ * the value so that invoking `resolved` twice returns the same promise.
70
+ */
71
+ function resolved(value) {
72
+ resolvedCache ??= new DependenciesMap();
73
+ if (resolvedCache.has([value])) return resolvedCache.get([value]);
74
+ const res = Object.assign(Promise.resolve(value), {
75
+ status: "fulfilled",
76
+ value
77
+ });
78
+ resolvedCache.set([value], res);
79
+ return res;
80
+ }
81
+ (void 0)?.test("resolved", async ({ expect }) => {
82
+ const promise1 = resolved(42);
83
+ expect(promise1.status).toBe("fulfilled");
84
+ expect(promise1.value).toBe(42);
85
+ expect(await promise1).toBe(42);
86
+ const obj = { test: true };
87
+ const promise2 = resolved(obj);
88
+ expect(promise2.status).toBe("fulfilled");
89
+ expect(promise2.value).toBe(obj);
90
+ expect(await promise2).toBe(obj);
91
+ expect(resolved(42)).toBe(promise1);
92
+ expect(resolved(43)).not.toBe(promise1);
93
+ });
94
+ let rejectedCache = null;
95
+ /**
96
+ * Like Promise.reject(...), but also adds the status and value properties for use with React's `use` hook, and caches
97
+ * the value so that invoking `rejected` twice returns the same promise.
98
+ */
99
+ function rejected(reason) {
100
+ rejectedCache ??= new DependenciesMap();
101
+ if (rejectedCache.has([reason])) return rejectedCache.get([reason]);
102
+ const promise = Promise.reject(reason);
103
+ ignoreUnhandledRejection(promise);
104
+ const res = Object.assign(promise, {
105
+ status: "rejected",
106
+ reason
107
+ });
108
+ rejectedCache.set([reason], res);
109
+ return res;
110
+ }
111
+ (void 0)?.test("rejected", ({ expect }) => {
112
+ const error = /* @__PURE__ */ new Error("Test error");
113
+ const promise1 = rejected(error);
114
+ expect(promise1.status).toBe("rejected");
115
+ expect(promise1.reason).toBe(error);
116
+ const promise2 = rejected("error message");
117
+ expect(promise2.status).toBe("rejected");
118
+ expect(promise2.reason).toBe("error message");
119
+ expect(rejected(error)).toBe(promise1);
120
+ expect(rejected(/* @__PURE__ */ new Error("Different error"))).not.toBe(promise1);
121
+ });
122
+ const neverResolvePromise = pending(new Promise(() => {}));
123
+ function neverResolve() {
124
+ return neverResolvePromise;
125
+ }
126
+ (void 0)?.test("neverResolve", ({ expect }) => {
127
+ const promise = neverResolve();
128
+ expect(promise.status).toBe("pending");
129
+ expect(promise.value).toBeUndefined();
130
+ expect(promise.reason).toBeUndefined();
131
+ expect(neverResolve()).toBe(promise);
132
+ });
133
+ function pending(promise, options = {}) {
134
+ const res = promise.then((value) => {
135
+ res.status = "fulfilled";
136
+ res.value = value;
137
+ return value;
138
+ }, (actualReason) => {
139
+ res.status = "rejected";
140
+ res.reason = actualReason;
141
+ throw actualReason;
142
+ });
143
+ res.status = "pending";
144
+ return res;
145
+ }
146
+ (void 0)?.test("pending", async ({ expect }) => {
147
+ const resolvePromise = Promise.resolve(42);
148
+ const pendingPromise = pending(resolvePromise);
149
+ expect(pendingPromise.status).toBe("pending");
150
+ await resolvePromise;
151
+ await new Promise((resolve) => setTimeout(resolve, 0));
152
+ expect(pendingPromise.status).toBe("fulfilled");
153
+ expect(pendingPromise.value).toBe(42);
154
+ });
155
+ /**
156
+ * Should be used to wrap Promises that are not immediately awaited, so they don't throw an unhandled promise rejection
157
+ * error.
158
+ *
159
+ * Vercel kills serverless functions on unhandled promise rejection errors, so this is important.
160
+ */
161
+ function ignoreUnhandledRejection(promise) {
162
+ promise.catch(() => {});
163
+ }
164
+ (void 0)?.test("ignoreUnhandledRejection", async ({ expect }) => {
165
+ const resolvePromise = Promise.resolve(42);
166
+ ignoreUnhandledRejection(resolvePromise);
167
+ expect(await resolvePromise).toBe(42);
168
+ const error = /* @__PURE__ */ new Error("Test error");
169
+ const rejectPromise = Promise.reject(error);
170
+ ignoreUnhandledRejection(rejectPromise);
171
+ await expect(rejectPromise).rejects.toBe(error);
172
+ });
173
+ /**
174
+ * See concatStacktraces for more information.
175
+ */
176
+ function concatStacktracesIfRejected(promise) {
177
+ const currentError = /* @__PURE__ */ new Error();
178
+ promise.catch((error) => {
179
+ if (error instanceof Error) concatStacktraces(error, currentError);
180
+ });
181
+ }
182
+ async function wait(ms) {
183
+ if (!Number.isFinite(ms) || ms < 0) throw new HexclaveAssertionError(`wait() requires a non-negative integer number of milliseconds to wait. (found: ${ms}ms)`);
184
+ if (ms >= 2 ** 31) throw new HexclaveAssertionError("The maximum timeout for wait() is 2147483647ms (2**31 - 1). (found: ${ms}ms)");
185
+ return await traceSpan({
186
+ description: "wait(...)",
187
+ attributes: { "stack.wait.ms": ms }
188
+ }, async (span) => {
189
+ return await new Promise((resolve) => setTimeout(resolve, ms));
190
+ });
191
+ }
192
+ (void 0)?.test("wait", async ({ expect }) => {
193
+ const start = Date.now();
194
+ await wait(10);
195
+ expect(Date.now() - start).toBeGreaterThanOrEqual(5);
196
+ await expect(wait(0)).resolves.toBeUndefined();
197
+ await expect(wait(-10)).rejects.toThrow("wait() requires a non-negative integer");
198
+ await expect(wait(NaN)).rejects.toThrow("wait() requires a non-negative integer");
199
+ await expect(wait(Infinity)).rejects.toThrow("wait() requires a non-negative integer");
200
+ await expect(wait(2 ** 31)).rejects.toThrow("The maximum timeout for wait()");
201
+ });
202
+ async function waitUntil(date) {
203
+ return await wait(date.getTime() - Date.now());
204
+ }
205
+ (void 0)?.test("waitUntil", async ({ expect }) => {
206
+ const futureDate = new Date(Date.now() + 10);
207
+ const start = Date.now();
208
+ await waitUntil(futureDate);
209
+ expect(Date.now() - start).toBeGreaterThanOrEqual(5);
210
+ try {
211
+ await waitUntil(/* @__PURE__ */ new Date(Date.now() - 1e3));
212
+ expect.fail("Should have thrown an error");
213
+ } catch (error) {
214
+ expect(error).toBeInstanceOf(HexclaveAssertionError);
215
+ expect(error.message).toContain("wait() requires a non-negative integer");
216
+ }
217
+ });
218
+ function runAsynchronouslyWithAlert(...args) {
219
+ return runAsynchronously(args[0], {
220
+ ...args[1],
221
+ onError: (error) => {
222
+ const nodeEnv = getProcessEnv("NODE_ENV");
223
+ if (KnownError.isKnownError(error) && nodeEnv?.includes("production")) alert(error.message);
224
+ else alert(`An unhandled error occurred. Please ${nodeEnv === "development" ? `check the browser console for the full error.` : "report this to the developer."}\n\n${error}`);
225
+ args[1]?.onError?.(error);
226
+ }
227
+ }, ...args.slice(2));
228
+ }
229
+ (void 0)?.test("runAsynchronouslyWithAlert", ({ expect }) => {
230
+ const testFn = () => Promise.resolve("test");
231
+ const testOptions = { noErrorLogging: true };
232
+ expect(() => runAsynchronouslyWithAlert(testFn, testOptions)).not.toThrow();
233
+ expect(typeof runAsynchronouslyWithAlert).toBe("function");
234
+ });
235
+ function runAsynchronously(promiseOrFunc, options = {}) {
236
+ if (typeof promiseOrFunc === "function") promiseOrFunc = promiseOrFunc();
237
+ if (promiseOrFunc) {
238
+ concatStacktracesIfRejected(promiseOrFunc);
239
+ promiseOrFunc.catch((error) => {
240
+ options.onError?.(error);
241
+ const newError = new HexclaveAssertionError("Uncaught error in asynchronous function: " + errorToNiceString(error), { cause: error });
242
+ if (!options.noErrorLogging) captureError("runAsynchronously", newError);
243
+ });
244
+ }
245
+ }
246
+ (void 0)?.test("runAsynchronously", ({ expect }) => {
247
+ const testFn = () => Promise.resolve("test");
248
+ expect(() => runAsynchronously(testFn)).not.toThrow();
249
+ expect(() => runAsynchronously(Promise.resolve("test"))).not.toThrow();
250
+ expect(() => runAsynchronously(void 0)).not.toThrow();
251
+ expect(() => runAsynchronously(testFn, { noErrorLogging: true })).not.toThrow();
252
+ expect(() => runAsynchronously(testFn, { onError: () => {} })).not.toThrow();
253
+ });
254
+ var TimeoutError = class extends Error {
255
+ constructor(ms) {
256
+ super(`Timeout after ${ms}ms`);
257
+ this.ms = ms;
258
+ this.name = "TimeoutError";
259
+ }
260
+ };
261
+ async function timeout(promiseOrFunc, ms) {
262
+ const promise = typeof promiseOrFunc === "function" ? promiseOrFunc() : promiseOrFunc;
263
+ return await Promise.race([promise.then((value) => Result.ok(value)), wait(ms).then(() => Result.error(new TimeoutError(ms)))]);
264
+ }
265
+ (void 0)?.test("timeout", async ({ expect }) => {
266
+ const fastResult = await timeout(Promise.resolve(42), 100);
267
+ expect(fastResult.status).toBe("ok");
268
+ if (fastResult.status === "ok") expect(fastResult.data).toBe(42);
269
+ const slowResult = await timeout(new Promise((resolve) => setTimeout(() => resolve("too late"), 50)), 10);
270
+ expect(slowResult.status).toBe("error");
271
+ if (slowResult.status === "error") {
272
+ expect(slowResult.error).toBeInstanceOf(TimeoutError);
273
+ expect(slowResult.error.ms).toBe(10);
274
+ }
275
+ });
276
+ async function timeoutThrow(promise, ms) {
277
+ return Result.orThrow(await timeout(promise, ms));
278
+ }
279
+ (void 0)?.test("timeoutThrow", async ({ expect }) => {
280
+ expect(await timeoutThrow(Promise.resolve(42), 100)).toBe(42);
281
+ const slowPromise = new Promise((resolve) => setTimeout(() => resolve("too late"), 50));
282
+ await expect(timeoutThrow(slowPromise, 10)).rejects.toThrow("Timeout after 10ms");
283
+ await expect(timeoutThrow(slowPromise, 10)).rejects.toBeInstanceOf(TimeoutError);
284
+ });
285
+ function rateLimited(func, options) {
286
+ let waitUntil = performance.now();
287
+ let queue = [];
288
+ let addedToQueueCallbacks = /* @__PURE__ */ new Map();
289
+ const next = async () => {
290
+ while (true) if (waitUntil > performance.now()) await wait(Math.max(1, waitUntil - performance.now() + 1));
291
+ else if (queue.length === 0) {
292
+ const uuid = generateUuid();
293
+ await new Promise((resolve) => {
294
+ addedToQueueCallbacks.set(uuid, resolve);
295
+ });
296
+ addedToQueueCallbacks.delete(uuid);
297
+ } else break;
298
+ const nextFuncs = options.batchCalls ? queue.splice(0, queue.length) : [queue.shift()];
299
+ const start = performance.now();
300
+ const value = await Result.fromPromise(func());
301
+ const end = performance.now();
302
+ waitUntil = Math.max(waitUntil, start + (options.throttleMs ?? 0), end + (options.gapMs ?? 0));
303
+ for (const nextFunc of nextFuncs) if (value.status === "ok") nextFunc[0](value.data);
304
+ else nextFunc[1](value.error);
305
+ };
306
+ runAsynchronously(async () => {
307
+ while (true) await next();
308
+ });
309
+ return () => {
310
+ return new Promise((resolve, reject) => {
311
+ waitUntil = Math.max(waitUntil, performance.now() + (options.debounceMs ?? 0));
312
+ queue.push([resolve, reject]);
313
+ addedToQueueCallbacks.forEach((cb) => cb());
314
+ });
315
+ };
316
+ }
317
+ function throttled(func, delayMs) {
318
+ let nextAvailable = null;
319
+ return async (...args) => {
320
+ while (nextAvailable !== null) await nextAvailable;
321
+ nextAvailable = new Promise((resolve) => {
322
+ setTimeout(() => {
323
+ nextAvailable = null;
324
+ resolve(func(...args));
325
+ }, delayMs);
326
+ });
327
+ return await nextAvailable;
328
+ };
329
+ }
330
+
331
+ //#endregion
332
+ export { concatStacktracesIfRejected, createPromise, ignoreUnhandledRejection, neverResolve, pending, rateLimited, rejected, resolved, runAsynchronously, runAsynchronouslyWithAlert, throttled, timeout, timeoutThrow, wait, waitUntil };
333
+ //# sourceMappingURL=promises.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promises.js","names":[],"sources":["../../../src/utils/promises.tsx"],"sourcesContent":["import { KnownError } from \"..\";\nimport { getProcessEnv } from \"./env\";\nimport { HexclaveAssertionError, captureError, concatStacktraces, errorToNiceString } from \"./errors\";\nimport { DependenciesMap } from \"./maps\";\nimport { Result } from \"./results\";\nimport { traceSpan } from \"./telemetry\";\nimport { generateUuid } from \"./uuids\";\n\nexport type ReactPromise<T> = Promise<T> & (\n | { status: \"rejected\", reason: unknown }\n | { status: \"fulfilled\", value: T }\n | { status: \"pending\" }\n);\n\ntype Resolve<T> = (value: T) => void;\ntype Reject = (reason: unknown) => void;\nexport function createPromise<T>(callback: (resolve: Resolve<T>, reject: Reject) => void): ReactPromise<T> {\n let status = \"pending\" as \"fulfilled\" | \"rejected\" | \"pending\";\n let valueOrReason: T | unknown | undefined = undefined;\n let resolve: Resolve<T> | null = null;\n let reject: Reject | null = null;\n const promise = new Promise<T>((res, rej) => {\n resolve = (value) => {\n if (status !== \"pending\") return;\n status = \"fulfilled\";\n valueOrReason = value;\n res(value);\n };\n reject = (reason) => {\n if (status !== \"pending\") return;\n status = \"rejected\";\n valueOrReason = reason;\n rej(reason);\n };\n });\n\n callback(resolve!, reject!);\n return Object.assign(promise, {\n status: status,\n ...status === \"fulfilled\" ? { value: valueOrReason as T } : {},\n ...status === \"rejected\" ? { reason: valueOrReason } : {},\n } as any);\n}\nimport.meta.vitest?.test(\"createPromise\", async ({ expect }) => {\n // Test resolved promise\n const resolvedPromise = createPromise<number>((resolve) => {\n resolve(42);\n });\n expect(resolvedPromise.status).toBe(\"fulfilled\");\n expect((resolvedPromise as any).value).toBe(42);\n expect(await resolvedPromise).toBe(42);\n\n // Test rejected promise\n const error = new Error(\"Test error\");\n const rejectedPromise = createPromise<number>((_, reject) => {\n reject(error);\n });\n expect(rejectedPromise.status).toBe(\"rejected\");\n expect((rejectedPromise as any).reason).toBe(error);\n await expect(rejectedPromise).rejects.toBe(error);\n\n // Test pending promise\n const pendingPromise = createPromise<number>(() => {\n // Do nothing, leave it pending\n });\n expect(pendingPromise.status).toBe(\"pending\");\n expect((pendingPromise as any).value).toBeUndefined();\n expect((pendingPromise as any).reason).toBeUndefined();\n\n // Test that resolving after already resolved does nothing\n let resolveCount = 0;\n const multiResolvePromise = createPromise<number>((resolve) => {\n resolve(1);\n resolveCount++;\n resolve(2);\n resolveCount++;\n });\n expect(resolveCount).toBe(2); // Both resolve calls executed\n expect(multiResolvePromise.status).toBe(\"fulfilled\");\n expect((multiResolvePromise as any).value).toBe(1); // Only first resolve took effect\n expect(await multiResolvePromise).toBe(1);\n});\n\nlet resolvedCache: DependenciesMap<[unknown], ReactPromise<unknown>> | null = null;\n/**\n * Like Promise.resolve(...), but also adds the status and value properties for use with React's `use` hook, and caches\n * the value so that invoking `resolved` twice returns the same promise.\n */\nexport function resolved<T>(value: T): ReactPromise<T> {\n resolvedCache ??= new DependenciesMap<[unknown], ReactPromise<unknown>>();\n if (resolvedCache.has([value])) {\n return resolvedCache.get([value]) as ReactPromise<T>;\n }\n\n const res = Object.assign(Promise.resolve(value), {\n status: \"fulfilled\",\n value,\n } as const);\n resolvedCache.set([value], res);\n return res;\n}\nimport.meta.vitest?.test(\"resolved\", async ({ expect }) => {\n // Test with primitive value\n const promise1 = resolved(42);\n expect(promise1.status).toBe(\"fulfilled\");\n // Need to use type assertion since value is only available when status is \"fulfilled\"\n expect((promise1 as { value: number }).value).toBe(42);\n expect(await promise1).toBe(42);\n\n // Test with object value\n const obj = { test: true };\n const promise2 = resolved(obj);\n expect(promise2.status).toBe(\"fulfilled\");\n expect((promise2 as { value: typeof obj }).value).toBe(obj);\n expect(await promise2).toBe(obj);\n\n // Test caching (same reference for same value)\n const promise3 = resolved(42);\n expect(promise3).toBe(promise1); // Same reference due to caching\n\n // Test with different value (different reference)\n const promise4 = resolved(43);\n expect(promise4).not.toBe(promise1);\n});\n\nlet rejectedCache: DependenciesMap<[unknown], ReactPromise<unknown>> | null = null;\n/**\n * Like Promise.reject(...), but also adds the status and value properties for use with React's `use` hook, and caches\n * the value so that invoking `rejected` twice returns the same promise.\n */\nexport function rejected<T>(reason: unknown): ReactPromise<T> {\n rejectedCache ??= new DependenciesMap<[unknown], ReactPromise<unknown>>();\n if (rejectedCache.has([reason])) {\n return rejectedCache.get([reason]) as ReactPromise<T>;\n }\n\n const promise = Promise.reject(reason);\n ignoreUnhandledRejection(promise);\n const res = Object.assign(promise, {\n status: \"rejected\",\n reason: reason,\n } as const);\n rejectedCache.set([reason], res);\n return res;\n}\nimport.meta.vitest?.test(\"rejected\", ({ expect }) => {\n // Test with error object\n const error = new Error(\"Test error\");\n const promise1 = rejected<number>(error);\n expect(promise1.status).toBe(\"rejected\");\n // Need to use type assertion since reason is only available when status is \"rejected\"\n expect((promise1 as { reason: Error }).reason).toBe(error);\n\n // Test with string reason\n const promise2 = rejected<string>(\"error message\");\n expect(promise2.status).toBe(\"rejected\");\n expect((promise2 as { reason: string }).reason).toBe(\"error message\");\n\n // Test caching (same reference for same reason)\n const promise3 = rejected<number>(error);\n expect(promise3).toBe(promise1); // Same reference due to caching\n\n // Test with different reason (different reference)\n const differentError = new Error(\"Different error\");\n const promise4 = rejected<number>(differentError);\n expect(promise4).not.toBe(promise1);\n\n // Note: We're not using await expect(promise).rejects to avoid unhandled rejections\n});\n\n// We'll skip the rejection test for pending() since it's causing unhandled rejections\n// The function is already well tested through other tests like rejected() and createPromise()\n\n\nconst neverResolvePromise = pending(new Promise<never>(() => {}));\nexport function neverResolve(): ReactPromise<never> {\n return neverResolvePromise;\n}\nimport.meta.vitest?.test(\"neverResolve\", ({ expect }) => {\n const promise = neverResolve();\n expect(promise.status).toBe(\"pending\");\n expect((promise as any).value).toBeUndefined();\n expect((promise as any).reason).toBeUndefined();\n\n // Test that multiple calls return the same promise\n const promise2 = neverResolve();\n expect(promise2).toBe(promise);\n});\n\nexport function pending<T>(promise: Promise<T>, options: { disableErrorWrapping?: boolean } = {}): ReactPromise<T> {\n const res = promise.then(\n value => {\n res.status = \"fulfilled\";\n (res as any).value = value;\n return value;\n },\n actualReason => {\n res.status = \"rejected\";\n (res as any).reason = actualReason;\n throw actualReason;\n },\n ) as ReactPromise<T>;\n res.status = \"pending\";\n return res;\n}\nimport.meta.vitest?.test(\"pending\", async ({ expect }) => {\n // Test with a promise that resolves\n const resolvePromise = Promise.resolve(42);\n const pendingPromise = pending(resolvePromise);\n\n // Initially it should be pending\n expect(pendingPromise.status).toBe(\"pending\");\n\n // After resolution, it should be fulfilled\n await resolvePromise;\n // Need to wait a tick for the then handler to execute\n await new Promise(resolve => setTimeout(resolve, 0));\n expect(pendingPromise.status).toBe(\"fulfilled\");\n expect((pendingPromise as { value: number }).value).toBe(42);\n\n // For the rejection test, we'll use a separate test to avoid unhandled rejections\n});\n\n/**\n * Should be used to wrap Promises that are not immediately awaited, so they don't throw an unhandled promise rejection\n * error.\n *\n * Vercel kills serverless functions on unhandled promise rejection errors, so this is important.\n */\nexport function ignoreUnhandledRejection<T extends Promise<any>>(promise: T): void {\n promise.catch(() => {});\n}\nimport.meta.vitest?.test(\"ignoreUnhandledRejection\", async ({ expect }) => {\n // Test with a promise that resolves\n const resolvePromise = Promise.resolve(42);\n ignoreUnhandledRejection(resolvePromise);\n expect(await resolvePromise).toBe(42); // Should still resolve to the same value\n\n // Test with a promise that rejects\n // The promise should still reject, but the rejection is caught internally\n // so it doesn't cause an unhandled rejection error\n const error = new Error(\"Test error\");\n const rejectPromise = Promise.reject(error);\n ignoreUnhandledRejection(rejectPromise);\n await expect(rejectPromise).rejects.toBe(error);\n});\n\n/**\n * See concatStacktraces for more information.\n */\nexport function concatStacktracesIfRejected<T>(promise: Promise<T>): void {\n const currentError = new Error();\n promise.catch(error => {\n if (error instanceof Error) {\n concatStacktraces(error, currentError);\n } else {\n // we can only concatenate errors, so we'll just ignore the non-error\n }\n });\n}\n\nexport async function wait(ms: number) {\n if (!Number.isFinite(ms) || ms < 0) {\n throw new HexclaveAssertionError(`wait() requires a non-negative integer number of milliseconds to wait. (found: ${ms}ms)`);\n }\n if (ms >= 2**31) {\n throw new HexclaveAssertionError(\"The maximum timeout for wait() is 2147483647ms (2**31 - 1). (found: ${ms}ms)\");\n }\n return await traceSpan({ description: 'wait(...)', attributes: { 'stack.wait.ms': ms } }, async (span) => {\n return await new Promise<void>(resolve => setTimeout(resolve, ms));\n });\n}\nimport.meta.vitest?.test(\"wait\", async ({ expect }) => {\n // Test with valid input\n const start = Date.now();\n await wait(10);\n const elapsed = Date.now() - start;\n expect(elapsed).toBeGreaterThanOrEqual(5); // Allow some flexibility in timing\n\n // Test with zero\n await expect(wait(0)).resolves.toBeUndefined();\n\n // Test with negative number\n await expect(wait(-10)).rejects.toThrow(\"wait() requires a non-negative integer\");\n\n // Test with non-finite number\n await expect(wait(NaN)).rejects.toThrow(\"wait() requires a non-negative integer\");\n await expect(wait(Infinity)).rejects.toThrow(\"wait() requires a non-negative integer\");\n\n // Test with too large number\n await expect(wait(2**31)).rejects.toThrow(\"The maximum timeout for wait()\");\n});\n\nexport async function waitUntil(date: Date) {\n return await wait(date.getTime() - Date.now());\n}\nimport.meta.vitest?.test(\"waitUntil\", async ({ expect }) => {\n // Test with future date\n const futureDate = new Date(Date.now() + 10);\n const start = Date.now();\n await waitUntil(futureDate);\n const elapsed = Date.now() - start;\n expect(elapsed).toBeGreaterThanOrEqual(5); // Allow some flexibility in timing\n\n // Test with past date - this will throw because wait() requires non-negative time\n // We need to verify it throws the correct error\n try {\n await waitUntil(new Date(Date.now() - 1000));\n expect.fail(\"Should have thrown an error\");\n } catch (error) {\n expect(error).toBeInstanceOf(HexclaveAssertionError);\n expect((error as Error).message).toContain(\"wait() requires a non-negative integer\");\n }\n});\n\nexport function runAsynchronouslyWithAlert(...args: Parameters<typeof runAsynchronously>) {\n return runAsynchronously(\n args[0],\n {\n ...args[1],\n onError: error => {\n const nodeEnv = getProcessEnv(\"NODE_ENV\");\n if (KnownError.isKnownError(error) && nodeEnv?.includes(\"production\")) {\n alert(error.message);\n } else {\n alert(`An unhandled error occurred. Please ${nodeEnv === \"development\" ? `check the browser console for the full error.` : \"report this to the developer.\"}\\n\\n${error}`);\n }\n args[1]?.onError?.(error);\n },\n },\n ...args.slice(2) as [],\n );\n}\nimport.meta.vitest?.test(\"runAsynchronouslyWithAlert\", ({ expect }) => {\n // Simple test to verify the function calls runAsynchronously\n // We can't easily test the alert functionality without mocking\n const testFn = () => Promise.resolve(\"test\");\n const testOptions = { noErrorLogging: true };\n\n // Just verify it doesn't throw\n expect(() => runAsynchronouslyWithAlert(testFn, testOptions)).not.toThrow();\n\n // We can't easily test the error handling without mocking, so we'll\n // just verify the function exists and can be called\n expect(typeof runAsynchronouslyWithAlert).toBe(\"function\");\n});\n\nexport function runAsynchronously(\n promiseOrFunc: void | Promise<unknown> | (() => void | Promise<unknown>) | undefined,\n options: {\n noErrorLogging?: boolean,\n onError?: (error: Error) => void,\n } = {},\n): void {\n if (typeof promiseOrFunc === \"function\") {\n promiseOrFunc = promiseOrFunc();\n }\n if (promiseOrFunc) {\n concatStacktracesIfRejected(promiseOrFunc);\n promiseOrFunc.catch(error => {\n options.onError?.(error);\n const newError = new HexclaveAssertionError(\n \"Uncaught error in asynchronous function: \" + errorToNiceString(error),\n { cause: error },\n );\n if (!options.noErrorLogging) {\n captureError(\"runAsynchronously\", newError);\n }\n });\n }\n}\nimport.meta.vitest?.test(\"runAsynchronously\", ({ expect }) => {\n // Simple test to verify the function exists and can be called\n const testFn = () => Promise.resolve(\"test\");\n\n // Just verify it doesn't throw\n expect(() => runAsynchronously(testFn)).not.toThrow();\n expect(() => runAsynchronously(Promise.resolve(\"test\"))).not.toThrow();\n expect(() => runAsynchronously(undefined)).not.toThrow();\n\n // We can't easily test the error handling without mocking, so we'll\n // just verify the function exists and can be called with options\n expect(() => runAsynchronously(testFn, { noErrorLogging: true })).not.toThrow();\n expect(() => runAsynchronously(testFn, { onError: () => {} })).not.toThrow();\n});\n\n\nclass TimeoutError extends Error {\n constructor(public readonly ms: number) {\n super(`Timeout after ${ms}ms`);\n this.name = \"TimeoutError\";\n }\n}\n\nexport async function timeout<T>(promiseOrFunc: Promise<T> | (() => Promise<T>), ms: number): Promise<Result<T, TimeoutError>> {\n const promise = typeof promiseOrFunc === \"function\" ? promiseOrFunc() : promiseOrFunc;\n return await Promise.race([\n promise.then(value => Result.ok(value)),\n wait(ms).then(() => Result.error(new TimeoutError(ms))),\n ]);\n}\nimport.meta.vitest?.test(\"timeout\", async ({ expect }) => {\n // Test with a promise that resolves quickly\n const fastPromise = Promise.resolve(42);\n const fastResult = await timeout(fastPromise, 100);\n expect(fastResult.status).toBe(\"ok\");\n if (fastResult.status === \"ok\") {\n expect(fastResult.data).toBe(42);\n }\n\n // Test with a promise that takes longer than the timeout\n const slowPromise = new Promise(resolve => setTimeout(() => resolve(\"too late\"), 50));\n const slowResult = await timeout(slowPromise, 10);\n expect(slowResult.status).toBe(\"error\");\n if (slowResult.status === \"error\") {\n expect(slowResult.error).toBeInstanceOf(TimeoutError);\n expect((slowResult.error as TimeoutError).ms).toBe(10);\n }\n});\n\nexport async function timeoutThrow<T>(promise: Promise<T>, ms: number): Promise<T> {\n return Result.orThrow(await timeout(promise, ms));\n}\nimport.meta.vitest?.test(\"timeoutThrow\", async ({ expect }) => {\n // Test with a promise that resolves quickly\n const fastPromise = Promise.resolve(42);\n const fastResult = await timeoutThrow(fastPromise, 100);\n expect(fastResult).toBe(42);\n\n // Test with a promise that takes longer than the timeout\n const slowPromise = new Promise(resolve => setTimeout(() => resolve(\"too late\"), 50));\n await expect(timeoutThrow(slowPromise, 10)).rejects.toThrow(\"Timeout after 10ms\");\n await expect(timeoutThrow(slowPromise, 10)).rejects.toBeInstanceOf(TimeoutError);\n});\n\n\nexport type RateLimitOptions = {\n /**\n * The number of requests to process in parallel. Currently only 1 is supported.\n */\n concurrency: 1,\n\n /**\n * If true, multiple requests waiting at the same time will be reduced to just one. Default is false.\n */\n batchCalls?: boolean,\n\n /**\n * Waits for throttleMs since the start of last request before starting the next request. Default is 0.\n */\n throttleMs?: number,\n\n /**\n * Waits for gapMs since the end of last request before starting the next request. Default is 0.\n */\n gapMs?: number,\n\n /**\n * Waits until there have been no new requests for debounceMs before starting a new request. Default is 0.\n */\n debounceMs?: number,\n};\n\nexport function rateLimited<T>(\n func: () => Promise<T>,\n options: RateLimitOptions,\n): () => Promise<T> {\n let waitUntil = performance.now();\n let queue: [(t: T) => void, (e: unknown) => void][] = [];\n let addedToQueueCallbacks = new Map<string, () => void>;\n\n const next = async () => {\n while (true) {\n if (waitUntil > performance.now()) {\n await wait(Math.max(1, waitUntil - performance.now() + 1));\n } else if (queue.length === 0) {\n const uuid = generateUuid();\n await new Promise<void>(resolve => {\n addedToQueueCallbacks.set(uuid, resolve);\n });\n addedToQueueCallbacks.delete(uuid);\n } else {\n break;\n }\n }\n const nextFuncs = options.batchCalls ? queue.splice(0, queue.length) : [queue.shift()!];\n\n const start = performance.now();\n const value = await Result.fromPromise(func());\n const end = performance.now();\n\n waitUntil = Math.max(\n waitUntil,\n start + (options.throttleMs ?? 0),\n end + (options.gapMs ?? 0),\n );\n\n for (const nextFunc of nextFuncs) {\n if (value.status === \"ok\") {\n nextFunc[0](value.data);\n } else {\n nextFunc[1](value.error);\n }\n }\n };\n\n runAsynchronously(async () => {\n while (true) {\n await next();\n }\n });\n\n return () => {\n return new Promise<T>((resolve, reject) => {\n waitUntil = Math.max(\n waitUntil,\n performance.now() + (options.debounceMs ?? 0),\n );\n queue.push([resolve, reject]);\n addedToQueueCallbacks.forEach(cb => cb());\n });\n };\n}\n\nexport function throttled<T, A extends any[]>(func: (...args: A) => Promise<T>, delayMs: number): (...args: A) => Promise<T> {\n let timeout: ReturnType<typeof setTimeout> | null = null;\n let nextAvailable: Promise<T> | null = null;\n return async (...args) => {\n while (nextAvailable !== null) {\n await nextAvailable;\n }\n nextAvailable = new Promise<T>(resolve => {\n timeout = setTimeout(() => {\n nextAvailable = null;\n resolve(func(...args));\n }, delayMs);\n });\n return await nextAvailable;\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ //#region src/utils/proxies.d.ts
2
+ /**
3
+ * Creates a proxy that throws an error when any property is accessed, function is called,
4
+ * or any other operation is performed on it.
5
+ *
6
+ * Useful for placeholder values that should never actually be used at runtime.
7
+ */
8
+ declare function throwingProxy<T = any>(error: string | Error): T;
9
+ declare function logged<T extends object>(name: string, toLog: T, options?: {}): T;
10
+ declare function createLazyProxy<FactoryResult>(factory: () => FactoryResult): FactoryResult;
11
+ //#endregion
12
+ export { createLazyProxy, logged, throwingProxy };
13
+ //# sourceMappingURL=proxies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxies.d.ts","names":[],"sources":["../../../src/utils/proxies.tsx"],"mappings":";;AASA;;;;;iBAAgB,aAAA,SAAA,CAAuB,KAAA,WAAgB,KAAA,GAAQ,CAAA;AAAA,iBA0B/C,MAAA,kBAAA,CAAyB,IAAA,UAAc,KAAA,EAAO,CAAA,EAAG,OAAA,QAAmB,CAAA;AAAA,iBA0DpE,eAAA,eAAA,CAA+B,OAAA,QAAe,aAAA,GAAgB,aAAA"}