better-supabase 0.5.0 → 0.6.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 (536) hide show
  1. package/README.md +299 -41
  2. package/dist/access-sql-B0dF-SoF.js +181 -0
  3. package/dist/actor-CQTlc1Hh.d.ts +43 -0
  4. package/dist/adapter-Bc1o3zyy.js +1106 -0
  5. package/dist/agents-CVHGd7It.d.ts +94 -0
  6. package/dist/ai-cache-CBWs1W0k.js +80 -0
  7. package/dist/ai-cache-DaDu_G5L.d.ts +64 -0
  8. package/dist/ai-chat-7amvXjmQ.d.ts +590 -0
  9. package/dist/ai-chat-B24UI962.js +743 -0
  10. package/dist/ai-files-CSPNswUY.js +319 -0
  11. package/dist/ai-sdk/agents/index.d.ts +74 -0
  12. package/dist/ai-sdk/agents/index.js +159 -0
  13. package/dist/ai-sdk/batches/index.d.ts +74 -0
  14. package/dist/ai-sdk/batches/index.js +180 -0
  15. package/dist/ai-sdk/cache/index.d.ts +38 -0
  16. package/dist/ai-sdk/cache/index.js +127 -0
  17. package/dist/ai-sdk/chat/index.d.ts +2 -0
  18. package/dist/ai-sdk/chat/index.js +246 -0
  19. package/dist/ai-sdk/embeddings/index.d.ts +3 -0
  20. package/dist/ai-sdk/embeddings/index.js +2 -0
  21. package/dist/ai-sdk/files/index.d.ts +61 -0
  22. package/dist/ai-sdk/files/index.js +111 -0
  23. package/dist/ai-sdk/index.d.ts +145 -0
  24. package/dist/ai-sdk/index.js +174 -0
  25. package/dist/ai-sdk/mcp/index.d.ts +102 -0
  26. package/dist/ai-sdk/mcp/index.js +362 -0
  27. package/dist/ai-sdk/memory/index.d.ts +67 -0
  28. package/dist/ai-sdk/memory/index.js +175 -0
  29. package/dist/ai-sdk/react/index.d.ts +2 -0
  30. package/dist/ai-sdk/react/index.js +3 -0
  31. package/dist/ai-sdk/react/server.d.ts +6 -0
  32. package/dist/ai-sdk/react/server.js +7 -0
  33. package/dist/ai-sdk/workflow/index.d.ts +249 -0
  34. package/dist/ai-sdk/workflow/index.js +575 -0
  35. package/dist/ai-sdk/workflow/react/index.d.ts +20 -0
  36. package/dist/ai-sdk/workflow/react/index.js +66 -0
  37. package/dist/ai-sdk/workflow/react/server.d.ts +10 -0
  38. package/dist/ai-sdk/workflow/react/server.js +12 -0
  39. package/dist/ai-tasks-Cd1HMFvB.d.ts +131 -0
  40. package/dist/announcements-CiyOs-xP.js +107 -0
  41. package/dist/announcements-ZRGnScWI.d.ts +72 -0
  42. package/dist/api-keys-rCGtKaZA.d.ts +156 -0
  43. package/dist/assistant-DwdpDH1q.d.ts +147 -0
  44. package/dist/astro/index.d.ts +86 -0
  45. package/dist/astro/index.js +93 -0
  46. package/dist/attributes-5dYul0u0.js +13 -0
  47. package/dist/auth-link-BjFPqwLz.d.ts +97 -0
  48. package/dist/auth-link-DrDX9KOT.js +114 -0
  49. package/dist/authorization-BFCqamMs.d.ts +172 -0
  50. package/dist/before-route-CnR0C0Jr.js +30 -0
  51. package/dist/bind-Bu_ZNa3W.d.ts +62 -0
  52. package/dist/bind-l4kAvYSv.js +97 -0
  53. package/dist/block-events-CrT8r7Fe.js +76 -0
  54. package/dist/block-fields-GFkxl4dP.js +49 -0
  55. package/dist/block-fields-SJ6fEf3o.d.ts +31 -0
  56. package/dist/block-helpers-CKtbFcRv.d.ts +37 -0
  57. package/dist/block-helpers-DWHxHsEQ.js +190 -0
  58. package/dist/block-hooks-BmjMyXTa.js +114 -0
  59. package/dist/block-hooks-plbZ0AbJ.d.ts +107 -0
  60. package/dist/{kit-transport-DJlHQUBU.js → block-transport-BLr-ZgLc.js} +11 -7
  61. package/dist/block-transport-DvaoPuZ9.d.ts +48 -0
  62. package/dist/blocks/agents/index.d.ts +3 -0
  63. package/dist/blocks/agents/index.js +123 -0
  64. package/dist/blocks/ai-cache/index.d.ts +3 -0
  65. package/dist/blocks/ai-cache/index.js +3 -0
  66. package/dist/blocks/ai-chat/index.d.ts +31 -0
  67. package/dist/blocks/ai-chat/index.js +5 -0
  68. package/dist/blocks/ai-chat/react/index.d.ts +77 -0
  69. package/dist/blocks/ai-chat/react/index.js +387 -0
  70. package/dist/blocks/ai-chat/react/server.d.ts +16 -0
  71. package/dist/blocks/ai-chat/react/server.js +14 -0
  72. package/dist/blocks/ai-files/index.d.ts +14 -0
  73. package/dist/blocks/ai-files/index.js +3 -0
  74. package/dist/blocks/ai-providers/index.d.ts +7 -0
  75. package/dist/blocks/ai-providers/index.js +211 -0
  76. package/dist/blocks/ai-tasks/index.d.ts +3 -0
  77. package/dist/blocks/ai-tasks/index.js +203 -0
  78. package/dist/blocks/announcements/index.d.ts +3 -0
  79. package/dist/blocks/announcements/index.js +3 -0
  80. package/dist/blocks/announcements/react/index.d.ts +31 -0
  81. package/dist/blocks/announcements/react/index.js +86 -0
  82. package/dist/blocks/announcements/react/server.d.ts +6 -0
  83. package/dist/blocks/announcements/react/server.js +7 -0
  84. package/dist/blocks/api-keys/index.d.ts +35 -0
  85. package/dist/blocks/api-keys/index.js +334 -0
  86. package/dist/blocks/attachments/index.d.ts +210 -0
  87. package/dist/blocks/attachments/index.js +222 -0
  88. package/dist/blocks/audit/index.d.ts +366 -0
  89. package/dist/blocks/audit/index.js +714 -0
  90. package/dist/blocks/billing/index.d.ts +265 -0
  91. package/dist/blocks/billing/index.js +400 -0
  92. package/dist/blocks/comments/index.d.ts +200 -0
  93. package/dist/blocks/comments/index.js +207 -0
  94. package/dist/blocks/connectors/index.d.ts +3 -0
  95. package/dist/blocks/connectors/index.js +164 -0
  96. package/dist/blocks/data-lifecycle/index.d.ts +251 -0
  97. package/dist/blocks/data-lifecycle/index.js +353 -0
  98. package/dist/blocks/entitlements/index.d.ts +14 -0
  99. package/dist/blocks/entitlements/index.js +25 -0
  100. package/dist/blocks/flags/index.d.ts +226 -0
  101. package/dist/blocks/flags/index.js +282 -0
  102. package/dist/blocks/inbox/index.d.ts +6 -0
  103. package/dist/blocks/inbox/index.js +499 -0
  104. package/dist/blocks/inbox/react/index.d.ts +2 -0
  105. package/dist/blocks/inbox/react/index.js +225 -0
  106. package/dist/blocks/inbox/react/server.d.ts +10 -0
  107. package/dist/blocks/inbox/react/server.js +12 -0
  108. package/dist/blocks/index.d.ts +65 -0
  109. package/dist/blocks/index.js +77 -0
  110. package/dist/blocks/jobs/index.d.ts +297 -0
  111. package/dist/blocks/jobs/index.js +1051 -0
  112. package/dist/blocks/knowledge/index.d.ts +3 -0
  113. package/dist/blocks/knowledge/index.js +3 -0
  114. package/dist/blocks/memory/index.d.ts +8 -0
  115. package/dist/blocks/memory/index.js +289 -0
  116. package/dist/blocks/notifications/index.d.ts +297 -0
  117. package/dist/blocks/notifications/index.js +425 -0
  118. package/dist/blocks/notifications/react/index.d.ts +44 -0
  119. package/dist/blocks/notifications/react/index.js +67 -0
  120. package/dist/blocks/notifications/react/server.d.ts +6 -0
  121. package/dist/blocks/notifications/react/server.js +7 -0
  122. package/dist/blocks/onboarding/index.d.ts +3 -0
  123. package/dist/blocks/onboarding/index.js +64 -0
  124. package/dist/blocks/onboarding/react/index.d.ts +28 -0
  125. package/dist/blocks/onboarding/react/index.js +78 -0
  126. package/dist/blocks/onboarding/react/server.d.ts +7 -0
  127. package/dist/blocks/onboarding/react/server.js +7 -0
  128. package/dist/blocks/organizations/index.d.ts +241 -0
  129. package/dist/blocks/organizations/index.js +400 -0
  130. package/dist/blocks/outbox/index.d.ts +3 -0
  131. package/dist/blocks/outbox/index.js +266 -0
  132. package/dist/blocks/profiles/index.d.ts +40 -0
  133. package/dist/blocks/profiles/index.js +28 -0
  134. package/dist/blocks/push/index.d.ts +185 -0
  135. package/dist/blocks/push/index.js +258 -0
  136. package/dist/blocks/settings/index.d.ts +89 -0
  137. package/dist/blocks/settings/index.js +104 -0
  138. package/dist/blocks/sso/index.d.ts +198 -0
  139. package/dist/blocks/sso/index.js +1297 -0
  140. package/dist/blocks/usage/index.d.ts +4 -0
  141. package/dist/blocks/usage/index.js +233 -0
  142. package/dist/blocks/waitlist/index.d.ts +117 -0
  143. package/dist/blocks/waitlist/index.js +132 -0
  144. package/dist/blocks/webhooks/index.d.ts +304 -0
  145. package/dist/{webhooks → blocks/webhooks}/index.js +468 -148
  146. package/dist/blocks/workflow-builder/index.d.ts +21 -0
  147. package/dist/blocks/workflow-builder/index.js +5 -0
  148. package/dist/blocks/workflow-builder/react/index.d.ts +47 -0
  149. package/dist/blocks/workflow-builder/react/index.js +119 -0
  150. package/dist/blocks/workflow-builder/react/server.d.ts +8 -0
  151. package/dist/blocks/workflow-builder/react/server.js +11 -0
  152. package/dist/blocks/workflows/index.d.ts +3 -0
  153. package/dist/blocks/workflows/index.js +3 -0
  154. package/dist/blocks/workflows/react/index.d.ts +47 -0
  155. package/dist/blocks/workflows/react/index.js +137 -0
  156. package/dist/blocks/workflows/react/server.d.ts +8 -0
  157. package/dist/blocks/workflows/react/server.js +11 -0
  158. package/dist/{index-SaTsEfGP.d.ts → bucket-Cl46E3jS.d.ts} +134 -91
  159. package/dist/{simplify-_0oUKqCd.js → build-BXIzE6Xv.js} +222 -124
  160. package/dist/{channel-FQW-CnGR.d.ts → channel-_2Mx1Oyu.d.ts} +2 -2
  161. package/dist/channels-CkgQ_X60.js +114 -0
  162. package/dist/chat-sdk/index.d.ts +303 -0
  163. package/dist/chat-sdk/index.js +733 -0
  164. package/dist/chat-sdk/react/index.d.ts +2 -0
  165. package/dist/chat-sdk/react/index.js +3 -0
  166. package/dist/chat-sdk/react/server.d.ts +3 -0
  167. package/dist/chat-sdk/react/server.js +2 -0
  168. package/dist/claims-DDBQT6BK.js +61 -0
  169. package/dist/{claims-BAf6c7is.js → claims-PqzCxaTD.js} +39 -2
  170. package/dist/cli/bin.js +1 -1
  171. package/dist/cli/{codemod-DqV7612m.js → codemod-Bl_tQpHn.js} +105 -2
  172. package/dist/cli/config-B9HkL8nF.js +2 -0
  173. package/dist/cli/config-DU7EJImt.js +49 -0
  174. package/dist/cli/config-NiPxAmUF.js +1077 -0
  175. package/dist/cli/{dist-xn4wlboc.js → dist-DRAVaE6w.js} +111 -1
  176. package/dist/cli/{doctor-L7Z8mYTx.js → doctor-B4JOm_ox.js} +992 -316
  177. package/dist/cli/{env-DmKv_G4A.js → env-CJLbUVPB.js} +1 -1
  178. package/dist/cli/{env-jIFUADLY.js → env-qXgyMV6r.js} +2 -2
  179. package/dist/cli/fresh-import-BeYf9I3x.js +40 -0
  180. package/dist/cli/gen-BGLb_zou.js +3100 -0
  181. package/dist/cli/gen-DAH8FM2W.js +2 -0
  182. package/dist/cli/index.d.ts +44 -5
  183. package/dist/cli/index.js +7 -7
  184. package/dist/cli/{init-Saf5-R9T.js → init-BIIwclPg.js} +242 -27
  185. package/dist/cli/{introspect--H7oGmcd.js → introspect-DNUTuNvb.js} +5 -5
  186. package/dist/cli/{io-k41_z-jT.js → io-DI1mTdSA.js} +12 -3
  187. package/dist/cli/{keys-ByKHnvP9.js → keys-BGCnnb-s.js} +8 -6
  188. package/dist/cli/{ohash-D7bG_EOb.js → ohash-BjQY1cBb.js} +1 -1
  189. package/dist/cli/{openapi-Cp5Fyta-.js → openapi-BlRJ18s3.js} +2 -2
  190. package/dist/cli/{project-B_GeXyHh.js → project-DZRaBaY7.js} +11 -6
  191. package/dist/cli/read-sets-CETOSFx4.js +223 -0
  192. package/dist/cli/{run-BKR2W_79.js → run-DNWxHynX.js} +33 -23
  193. package/dist/cli/{seed-CUlqWh-8.js → seed-DQzqT7LP.js} +8 -6
  194. package/dist/cli/{skills-LJJIhLFR.js → skills-QQs4q68J.js} +3 -2
  195. package/dist/cli/sql-D0GUtUPp.js +536 -0
  196. package/dist/cli/{config-CPVpXP5I.js → supabase-toml-B-bIukQF.js} +72 -942
  197. package/dist/cli/typegen-version-DeFbtzYI.js +8 -0
  198. package/dist/cli/{version-BDJuO0UR.js → version-hr88OZG0.js} +1 -1
  199. package/dist/client/index.d.ts +3 -2
  200. package/dist/client/index.js +11 -71
  201. package/dist/client/native/index.d.ts +228 -0
  202. package/dist/client/native/index.js +361 -0
  203. package/dist/client-CI0Z2zWX.js +277 -0
  204. package/dist/cloud-event-BnmD5fb9.js +46 -0
  205. package/dist/cloud-event-C1JCc1bH.d.ts +50 -0
  206. package/dist/{compiler-BXH_aZ7N.d.ts → compiler-DY_wkj4R.d.ts} +2 -2
  207. package/dist/compose-BIBNgAnq.js +53 -0
  208. package/dist/composite-Bt1YK3Ke.d.ts +146 -0
  209. package/dist/composite-DhE66P5u.js +130 -0
  210. package/dist/config/index.d.ts +6 -4
  211. package/dist/config/index.js +5 -5
  212. package/dist/{config-T_ejwyd3.d.ts → config-D44Y7PAv.d.ts} +406 -205
  213. package/dist/{config-DreERlKo.js → config-Dn7F5k9A.js} +62 -14
  214. package/dist/connector-Dv8kK0MO.d.ts +107 -0
  215. package/dist/connectors-hkLCwyEz.d.ts +120 -0
  216. package/dist/context-BCrWe7ow.d.ts +237 -0
  217. package/dist/credentials/index.d.ts +31 -0
  218. package/dist/credentials/index.js +168 -0
  219. package/dist/cron-DVPUg5k3.js +145 -0
  220. package/dist/csv-CPAzEmB6.js +25 -0
  221. package/dist/db-exception-CnWcYPxL.js +15 -0
  222. package/dist/{define-cNKzqwL_.js → define-B-TVjC25.js} +784 -227
  223. package/dist/{define-Bp_BZa5h.d.ts → define-CJJkkr1-.d.ts} +353 -61
  224. package/dist/edge/index.d.ts +69 -11
  225. package/dist/edge/index.js +191 -75
  226. package/dist/elysia/index.d.ts +59 -0
  227. package/dist/elysia/index.js +62 -0
  228. package/dist/embeddings-4ZvFzjsU.js +127 -0
  229. package/dist/embeddings-C9KGQnXt.d.ts +68 -0
  230. package/dist/{refresh-BTrQ_ZTp.d.ts → ended-jLfvw8h-.d.ts} +20 -2
  231. package/dist/{entitlements-DUxU4oHe.d.ts → entitlements-DHrY2UDZ.d.ts} +16 -7
  232. package/dist/entitlements-DRl6ZJUm.js +24 -0
  233. package/dist/envelope-DqnYGRw7.js +47 -0
  234. package/dist/{errors-DtwXa6b8.js → errors-B11Duf73.js} +82 -13
  235. package/dist/errors-DLjJHPLK.js +44 -0
  236. package/dist/escape-like-DHfx6jRr.js +7 -0
  237. package/dist/escape-like-ImTK0ps_.d.ts +15 -0
  238. package/dist/eve/index.d.ts +220 -0
  239. package/dist/eve/index.js +504 -0
  240. package/dist/eve-gT2Fpjut.d.ts +151 -0
  241. package/dist/events/index.d.ts +4 -3
  242. package/dist/events/index.js +9 -50
  243. package/dist/events-DWDhx77e.d.ts +549 -0
  244. package/dist/executor-Bq28caBo.js +718 -0
  245. package/dist/executor-C-R4pucm.js +83 -0
  246. package/dist/executor-CaWigTyR.d.ts +148 -0
  247. package/dist/executor-D14tGopJ.d.ts +36 -0
  248. package/dist/{executor-Cghdstwu.d.ts → executor-DbvExCFC.d.ts} +7 -1
  249. package/dist/{sql-Coh6n4cC.js → executor-De1Of3m3.js} +210 -11
  250. package/dist/executor-DvsBbNBS.d.ts +261 -0
  251. package/dist/expo/index.d.ts +79 -0
  252. package/dist/expo/index.js +129 -0
  253. package/dist/expo-sqlite/index.d.ts +58 -0
  254. package/dist/expo-sqlite/index.js +104 -0
  255. package/dist/field-errors-BFOa7WhB.d.ts +99 -0
  256. package/dist/field-errors-VF1yb8yI.js +13 -0
  257. package/dist/framework-CONDyPYx.js +51 -0
  258. package/dist/framework-DuVb4Xa8.d.ts +25 -0
  259. package/dist/gateway-C1ssRHnf.d.ts +130 -0
  260. package/dist/graph-BGyLLFLX.js +265 -0
  261. package/dist/h3/index.d.ts +59 -0
  262. package/dist/h3/index.js +55 -0
  263. package/dist/h3/v1/index.d.ts +63 -0
  264. package/dist/h3/v1/index.js +49 -0
  265. package/dist/history-BZih6SFP.js +64 -0
  266. package/dist/hono/index.d.ts +56 -7
  267. package/dist/hono/index.js +97 -45
  268. package/dist/{react-C_s7kiNz.js → hooks-1BTCJsiw.js} +104 -133
  269. package/dist/http-Cv4T29xh.js +40 -0
  270. package/dist/http-DdYadv-o.js +126 -0
  271. package/dist/image-url-pIVlO6R1.js +41 -0
  272. package/dist/impersonation-DcqaTBHx.js +148 -0
  273. package/dist/inbox-i7E1ppo6.d.ts +384 -0
  274. package/dist/index-ACiNPN4Z.d.ts +74 -0
  275. package/dist/{index-DgILJRXj.d.ts → index-Bepi-Hgg.d.ts} +91 -28
  276. package/dist/index-BkWT_uBO.d.ts +51 -0
  277. package/dist/index-BpFYMsi0.d.ts +53 -0
  278. package/dist/{index-C7f8cOBM.d.ts → index-Bxih3l0u.d.ts} +2 -2
  279. package/dist/index-CaxrMD1A.d.ts +1 -0
  280. package/dist/index-ClmjK_o-.d.ts +55 -0
  281. package/dist/index-CtuakVRc.d.ts +267 -0
  282. package/dist/index-D48jVS-N.d.ts +246 -0
  283. package/dist/index-DDrYaUcq.d.ts +138 -0
  284. package/dist/index-DQh4VCc9.d.ts +98 -0
  285. package/dist/{live-D9W2M5aO.d.ts → index-DunNRdnT.d.ts} +136 -38
  286. package/dist/index.d.ts +65 -18
  287. package/dist/index.js +42 -14
  288. package/dist/invalidate-BBqhpxyB.d.ts +19 -0
  289. package/dist/json-CEnpTHlZ.js +16 -0
  290. package/dist/json-schema-CvER4kgT.js +502 -0
  291. package/dist/keys-4MnkWTTh.js +35 -0
  292. package/dist/kit-B5tid-q5.d.ts +60 -0
  293. package/dist/kit-Fm-Fv7q5.js +78 -0
  294. package/dist/knowledge-BXBbT0Tr.d.ts +176 -0
  295. package/dist/knowledge-CDmiMLew.js +255 -0
  296. package/dist/lint/index.d.ts +1 -1
  297. package/dist/lint/index.js +37 -0
  298. package/dist/list/index.d.ts +3 -2
  299. package/dist/list/index.js +1 -444
  300. package/dist/{index-fag8VJZ2.d.ts → list-query-BRt-zDF7.d.ts} +20 -12
  301. package/dist/list-query-gl808ac1.js +459 -0
  302. package/dist/{live-CdJBOc4f.js → live-CTAZQkwl.js} +99 -14
  303. package/dist/logger-DWVYUmwi.d.ts +18 -0
  304. package/dist/mcp/index.d.ts +38 -11
  305. package/dist/mcp/index.js +82 -46
  306. package/dist/mcp/sdk/index.d.ts +105 -0
  307. package/dist/mcp/sdk/index.js +126 -0
  308. package/dist/message-CaKlqdsX.js +219 -0
  309. package/dist/message-CfDoR0Y6.d.ts +94 -0
  310. package/dist/messages-B9-5887d.js +715 -0
  311. package/dist/messages-DYP0sUTe.d.ts +59 -0
  312. package/dist/{mfa-CusDgPaD.d.ts → mfa-Daak8ukG.d.ts} +8 -2
  313. package/dist/modules-DpPwzC7E.d.ts +192 -0
  314. package/dist/modules-dxrVK3ID.js +228 -0
  315. package/dist/nestjs/index.d.ts +68 -0
  316. package/dist/nestjs/index.js +164 -0
  317. package/dist/next/client/index.d.ts +35 -0
  318. package/dist/next/client/index.js +36 -0
  319. package/dist/next/image/index.js +3 -24
  320. package/dist/next/index.d.ts +150 -51
  321. package/dist/next/index.js +261 -107
  322. package/dist/node/index.d.ts +4 -0
  323. package/dist/node/index.js +210 -0
  324. package/dist/node-headers-AO06VhqH.d.ts +24 -0
  325. package/dist/node-headers-C71zNQHe.js +55 -0
  326. package/dist/nuxt/index.d.ts +60 -0
  327. package/dist/nuxt/index.js +64 -0
  328. package/dist/onboarding-BZGHYJks.d.ts +62 -0
  329. package/dist/openapi/index.d.ts +1 -1
  330. package/dist/openapi/index.js +3 -3
  331. package/dist/orpc/index.d.ts +70 -11
  332. package/dist/orpc/index.js +73 -24
  333. package/dist/otel/index.d.ts +7 -7
  334. package/dist/otel/index.js +87 -57
  335. package/dist/outbox-Cq7pPYvl.d.ts +161 -0
  336. package/dist/{plugin-o144f322.d.ts → plugin-FGY8UhYm.d.ts} +30 -10
  337. package/dist/plugin-tfXW1-qO.js +45 -0
  338. package/dist/plugins/actor/index.d.ts +2 -2
  339. package/dist/plugins/actor/index.js +3 -3
  340. package/dist/plugins/rules/index.d.ts +11 -4
  341. package/dist/plugins/rules/index.js +40 -13
  342. package/dist/plugins/soft-delete/index.d.ts +5 -4
  343. package/dist/plugins/soft-delete/index.js +10 -5
  344. package/dist/plugins/tenant/index.d.ts +2 -2
  345. package/dist/plugins/tenant/index.js +18 -11
  346. package/dist/plugins/timestamps/index.d.ts +5 -3
  347. package/dist/plugins/timestamps/index.js +6 -4
  348. package/dist/plugins/validation/index.d.ts +2 -2
  349. package/dist/plugins/validation/index.js +10 -6
  350. package/dist/{pool-C9voM4Kw.d.ts → pool-CAu2nLrL.d.ts} +2 -2
  351. package/dist/postgres/index.d.ts +4 -4
  352. package/dist/postgres/index.js +1 -2
  353. package/dist/{postgrest-CruYKAvV.d.ts → postgrest-BLVdEnfe.d.ts} +13 -3
  354. package/dist/powersync/index.d.ts +43 -0
  355. package/dist/powersync/index.js +199 -0
  356. package/dist/powersync/react/index.d.ts +87 -0
  357. package/dist/powersync/react/index.js +108 -0
  358. package/dist/{problem-BW1KhzSG.js → problem-BreOl8b8.js} +14 -3
  359. package/dist/{problem-Blxe8S31.d.ts → problem-DD8LZFjc.d.ts} +21 -3
  360. package/dist/provider-BH5UWZJ6.d.ts +113 -0
  361. package/dist/provider-Di3sRutW.js +57 -0
  362. package/dist/query/index.d.ts +4 -2
  363. package/dist/query/index.js +4 -3
  364. package/dist/{query-CCbo44lG.js → query-BQ-NaZon.js} +141 -24
  365. package/dist/{queue-BYUCjr59.d.ts → queue-CLJurhdy.d.ts} +258 -83
  366. package/dist/react/index.d.ts +11 -7
  367. package/dist/react/index.js +7 -3
  368. package/dist/react/native/index.d.ts +116 -0
  369. package/dist/react/native/index.js +130 -0
  370. package/dist/react/server.d.ts +28 -10
  371. package/dist/react/server.js +22 -5
  372. package/dist/react/session.d.ts +2 -2
  373. package/dist/react-4ZqkP8da.js +79 -0
  374. package/dist/react-F80mF4-t.js +409 -0
  375. package/dist/react-router/index.d.ts +83 -0
  376. package/dist/react-router/index.js +89 -0
  377. package/dist/react-topic-seAWjL3_.js +38 -0
  378. package/dist/{read-set-DQFt1N_Y.js → read-set-DuKWC9Mj.js} +67 -25
  379. package/dist/realtime/index.d.ts +4 -5
  380. package/dist/realtime/index.js +144 -82
  381. package/dist/refusal-CeJWxmkH.js +61 -0
  382. package/dist/refusal-D1rgbzNq.d.ts +15 -0
  383. package/dist/replicas-CwrYp5Zj.js +94 -0
  384. package/dist/{view-Bq64ki8-.js → resolve-D_IcnvFd.js} +239 -289
  385. package/dist/{resolve-C15TJq77.d.ts → resolve-KW8nCeL6.d.ts} +29 -45
  386. package/dist/{resource-CRxxwkQq.js → resource-BsvzCMlX.js} +4 -4
  387. package/dist/{resource-D8iqWMr-.d.ts → resource-D6Uc7Sk7.d.ts} +5 -5
  388. package/dist/respond-BUgsXNgk.js +91 -0
  389. package/dist/respond-DoBijysA.d.ts +93 -0
  390. package/dist/result-D7y2fT87.d.ts +282 -0
  391. package/dist/{result-BKiliPY7.js → result-DzUbqgdW.js} +27 -2
  392. package/dist/run-state-CPo-1X2B.d.ts +12 -0
  393. package/dist/run-state-CgBKzYMW.js +13 -0
  394. package/dist/search-CUWCRYKL.js +9 -0
  395. package/dist/server/index.d.ts +143 -21
  396. package/dist/server/index.js +46 -14
  397. package/dist/{respond-D2OQl62-.d.ts → server-CeVeeXwz.d.ts} +225 -80
  398. package/dist/session-ChiXDZdZ.d.ts +72 -0
  399. package/dist/shared-CBxosKK3.js +75 -0
  400. package/dist/{shared-D1dRUrAg.js → shared-CxWmcyqB.js} +2 -1
  401. package/dist/shared-DDSjEGDR.d.ts +11 -0
  402. package/dist/sign-in-BCV5S2WZ.d.ts +49 -0
  403. package/dist/sign-in-Cb1mwv6X.js +86 -0
  404. package/dist/{signers-Cc6r98SW.d.ts → signers-4y62_VIi.d.ts} +13 -9
  405. package/dist/simplify-DDO0j0LI.js +83 -0
  406. package/dist/solid/index.d.ts +131 -0
  407. package/dist/solid/index.js +344 -0
  408. package/dist/solid-start/index.d.ts +75 -0
  409. package/dist/solid-start/index.js +58 -0
  410. package/dist/{spec-pins-C3oc-Tdp.js → spec-pins--j6mTok4.js} +8 -1
  411. package/dist/{spec-pins-CqorWDnO.d.ts → spec-pins-C89s6DyW.d.ts} +7 -0
  412. package/dist/sql/index.d.ts +330 -194
  413. package/dist/sql/index.js +34901 -6489
  414. package/dist/ssr/index.d.ts +6 -5
  415. package/dist/ssr/index.js +3 -3
  416. package/dist/{standard-D7r6dMUu.js → standard-BK0cqJ7y.js} +4 -3
  417. package/dist/{standard-J4YgMOLm.d.ts → standard-CYsm7xpT.d.ts} +1 -1
  418. package/dist/stats-D_AD9GGu.js +1123 -0
  419. package/dist/storage/index.d.ts +5 -5
  420. package/dist/storage/index.js +1027 -368
  421. package/dist/store-BdH5ruDx.js +66 -0
  422. package/dist/store-CGjgWu5n.d.ts +68 -0
  423. package/dist/streams/index.d.ts +76 -0
  424. package/dist/streams/index.js +77 -0
  425. package/dist/streams/redis/index.d.ts +52 -0
  426. package/dist/streams/redis/index.js +185 -0
  427. package/dist/stripe-BMj5LtsT.js +38 -0
  428. package/dist/stripe-D04h-QBT.d.ts +136 -0
  429. package/dist/{support-Dk6vdmEw.js → support-BivNqSpK.js} +35 -12
  430. package/dist/{support-view-Da5peKFg.d.ts → support-view-33Oi07TT.d.ts} +1 -1
  431. package/dist/svelte/index.d.ts +114 -0
  432. package/dist/svelte/index.js +344 -0
  433. package/dist/sveltekit/index.d.ts +116 -0
  434. package/dist/sveltekit/index.js +106 -0
  435. package/dist/tags-B99_U9Pp.js +39 -0
  436. package/dist/tags-Cx-LnIQP.d.ts +30 -0
  437. package/dist/tanstack-db/index.d.ts +71 -0
  438. package/dist/tanstack-db/index.js +72 -0
  439. package/dist/tanstack-start/index.d.ts +75 -0
  440. package/dist/tanstack-start/index.js +95 -0
  441. package/dist/tee-CoEppCER.js +101 -0
  442. package/dist/{template-TxrGI5jR.js → template--jDkl3UP.js} +34 -13
  443. package/dist/template-CwO38Do8.d.ts +6 -0
  444. package/dist/temporal-BJGitm-h.js +79 -0
  445. package/dist/{temporal-required-CAt4Dc9Z.js → temporal-required-BVvW7SYJ.js} +3 -2
  446. package/dist/tenant-I1TEZ_BX.js +27 -0
  447. package/dist/tenant-icPeuUBN.d.ts +17 -0
  448. package/dist/testing/index.d.ts +343 -37
  449. package/dist/testing/index.js +1186 -79
  450. package/dist/timing-CyTQPubY.js +92 -0
  451. package/dist/ttl-Hr34gRu8.js +12 -0
  452. package/dist/{types-Dnf_wRDz.d.ts → types-6BdhkmZe.d.ts} +111 -45
  453. package/dist/types-BI-0Sl2v.d.ts +359 -0
  454. package/dist/types-C05bxW-W.d.ts +220 -0
  455. package/dist/types-DGs5L0VN.d.ts +192 -0
  456. package/dist/types-TaiEeBGA.d.ts +156 -0
  457. package/dist/usage-CrvrL2vw.d.ts +177 -0
  458. package/dist/user-change-XzvgafU4.js +130 -0
  459. package/dist/vault-CSO7ss5C.d.ts +50 -0
  460. package/dist/vercel-connect/index.d.ts +47 -0
  461. package/dist/vercel-connect/index.js +119 -0
  462. package/dist/{verify-Ce49ETPz.js → verify-DL41hbvY.js} +85 -13
  463. package/dist/verify-DPuWngD4.d.ts +172 -0
  464. package/dist/{version-DM_Roffb.js → version-Bvv6aLjZ.js} +1 -1
  465. package/dist/view-BeFcRV6G.js +99 -0
  466. package/dist/{view-BEf0diC5.d.ts → view-DbxLNu8L.d.ts} +35 -32
  467. package/dist/vue/index.d.ts +141 -0
  468. package/dist/vue/index.js +362 -0
  469. package/dist/watch-DI34G86j.d.ts +60 -0
  470. package/dist/watch-Xuxrvxq-.js +122 -0
  471. package/dist/{wire-D2dT86vi.js → wire-DtZQ4sdE.js} +15 -5
  472. package/dist/workflow-builder-DJ1oHn8g.js +398 -0
  473. package/dist/workflow-sdk/builder/index.d.ts +85 -0
  474. package/dist/workflow-sdk/builder/index.js +250 -0
  475. package/dist/workflow-sdk/index.d.ts +14 -0
  476. package/dist/workflow-sdk/index.js +3 -0
  477. package/dist/workflow-sdk/world/index.d.ts +107 -0
  478. package/dist/workflow-sdk/world/index.js +702 -0
  479. package/dist/workflow-sdk-B3yLD6Br.d.ts +98 -0
  480. package/dist/workflow-sdk-C2WJ_G2O.js +173 -0
  481. package/dist/workflow-sdk-world-D-prir6O.js +1397 -0
  482. package/dist/workflows-B0j9WKPu.d.ts +185 -0
  483. package/dist/workflows-wu1WWBn7.js +216 -0
  484. package/package.json +470 -29
  485. package/schemas/ai-message-v1.json +258 -0
  486. package/schemas/config-v1.json +1074 -140
  487. package/schemas/doctor-report-v1.json +21 -1
  488. package/schemas/snapshot-v2.json +8 -0
  489. package/skills/better-supabase/SKILL.md +41 -12
  490. package/skills/better-supabase/references/frontend.md +96 -0
  491. package/skills/better-supabase/references/plugins.md +10 -6
  492. package/skills/better-supabase/references/troubleshooting.md +2 -1
  493. package/skills/better-supabase-api/SKILL.md +76 -22
  494. package/skills/better-supabase-api/references/adapters.md +207 -0
  495. package/skills/better-supabase-api/references/ai.md +125 -0
  496. package/skills/better-supabase-api/references/expo.md +65 -0
  497. package/skills/better-supabase-api/references/powersync.md +35 -0
  498. package/skills/better-supabase-api/references/streams-credentials.md +105 -0
  499. package/skills/better-supabase-auth/SKILL.md +62 -18
  500. package/skills/better-supabase-auth/references/authorization-providers.md +51 -0
  501. package/skills/better-supabase-testing/SKILL.md +3 -1
  502. package/dist/cli/config-dtoekM0v.js +0 -2
  503. package/dist/cli/gen-BJc9vdyu.js +0 -2
  504. package/dist/cli/gen-C2osRcr5.js +0 -2204
  505. package/dist/cli/read-sets-BfMQcKy8.js +0 -289
  506. package/dist/cli/sql-DzPbfngx.js +0 -348
  507. package/dist/entitlements-CTEBm7IB.js +0 -20
  508. package/dist/events-aIO7vsIk.d.ts +0 -230
  509. package/dist/executor-BunPOO-k.d.ts +0 -402
  510. package/dist/executor-XycESQPH.js +0 -94
  511. package/dist/impersonation-VfaGc4Q_.js +0 -41
  512. package/dist/index-BGdgBPdf.d.ts +0 -161
  513. package/dist/index-DOESKG27.d.ts +0 -100
  514. package/dist/index-DmXSxbLi.d.ts +0 -62
  515. package/dist/index-Dxn2a5cw.d.ts +0 -50
  516. package/dist/jobs/index.d.ts +0 -226
  517. package/dist/jobs/index.js +0 -1007
  518. package/dist/json-schema-m1fiwKgN.js +0 -208
  519. package/dist/kit-events-CTFDfSwb.js +0 -60
  520. package/dist/kit-transport-B82k1djG.d.ts +0 -33
  521. package/dist/kits-CGLLrNPd.js +0 -157
  522. package/dist/notifications/index.d.ts +0 -162
  523. package/dist/notifications/index.js +0 -264
  524. package/dist/orgs/index.d.ts +0 -132
  525. package/dist/orgs/index.js +0 -245
  526. package/dist/permdock-sql-C2Inc6Xc.d.ts +0 -29
  527. package/dist/permdock-sql-DgOfeixi.js +0 -51
  528. package/dist/plugin-DwARMuQp.js +0 -59
  529. package/dist/server-Csx2sRjg.js +0 -655
  530. package/dist/stats-Bqob3WqT.js +0 -592
  531. package/dist/support-DT-OhSxD.d.ts +0 -88
  532. package/dist/template-mbvlysOo.d.ts +0 -6
  533. package/dist/temporal-CVlIV2DZ.js +0 -40
  534. package/dist/user-change-CHFEUro1.js +0 -49
  535. package/dist/webhooks/index.d.ts +0 -285
  536. package/skills/better-supabase-auth/references/permdock.md +0 -100
@@ -1,49 +1,12 @@
1
- import { _ as DbError } from "./executor-BunPOO-k.js";
2
- import { E as Logger, l as RefreshEvent } from "./events-aIO7vsIk.js";
3
- import { g as RequestContext } from "./plugin-o144f322.js";
4
- import { t as StandardSchemaV1 } from "./standard-J4YgMOLm.js";
1
+ /// <reference lib="esnext.temporal" />
2
+ import { b as DbError } from "./result-D7y2fT87.js";
3
+ import { m as RequestContext } from "./plugin-FGY8UhYm.js";
4
+ import { l as RefreshEvent } from "./events-DWDhx77e.js";
5
+ import { n as Logger } from "./logger-DWVYUmwi.js";
6
+ import { t as StandardSchemaV1 } from "./standard-CYsm7xpT.js";
5
7
  import { t as BetterSupabaseEnv } from "./index-CLg87OBW.js";
6
- import { CookieOptions } from "@supabase/ssr";
8
+ import { a as CookieWrite, n as CookieOptions, r as CookieRecord, s as SessionEncoding } from "./session-ChiXDZdZ.js";
7
9
  import { JWTClaims, SupabaseEnv, UserClaims } from "@supabase/server";
8
- //#region src/auth/session.d.ts
9
- /** The session object auth-js persists (`sb-<ref>-auth-token`). */
10
- interface StoredSession {
11
- readonly access_token: string;
12
- readonly refresh_token: string;
13
- readonly expires_at?: number;
14
- readonly expires_in?: number;
15
- readonly token_type?: string;
16
- readonly user?: unknown;
17
- readonly [key: string]: unknown;
18
- }
19
- interface CookieRecord {
20
- readonly name: string;
21
- readonly value: string;
22
- }
23
- interface CookieWrite {
24
- readonly name: string;
25
- readonly value: string;
26
- readonly options: CookieOptions;
27
- }
28
- /** Headers that keep responses carrying session cookies out of shared caches. */
29
- declare const AUTH_CACHE_HEADERS: Readonly<Record<string, string>>;
30
- /** `sb-<first label of the hostname>-auth-token`, the supabase-js default. */
31
- declare function sessionCookieName(url: string): string;
32
- declare function parseCookies(header: string | null | undefined): CookieRecord[];
33
- declare function serializeCookie(write: CookieWrite): string;
34
- /**
35
- * Reads the session written by `@supabase/ssr` (plain or `base64-`, whole or
36
- * chunked). Mismatched chunks from a partial write read as no session.
37
- */
38
- declare function readSession(cookies: readonly CookieRecord[], name: string): StoredSession | null;
39
- /**
40
- * Cookie writes that store `session` (or clear it with `null`) exactly like
41
- * `@supabase/ssr`, and expire chunks the new value no longer uses.
42
- */
43
- declare function writeSession(existing: readonly CookieRecord[], name: string, session: StoredSession | null, options?: CookieOptions): CookieWrite[];
44
- /** Applies cookie writes to a cookie list, as the next request would see it. */
45
- declare function applyCookieWrites(cookies: readonly CookieRecord[], writes: readonly CookieWrite[]): CookieRecord[];
46
- //#endregion
47
10
  //#region src/auth/resolve.d.ts
48
11
  /**
49
12
  * Who is calling. `C` is the claims type from `betterSupabase.claims(schema)`; the
@@ -67,6 +30,19 @@ type AuthState<C = unknown, P = unknown> = {
67
30
  } | {
68
31
  readonly kind: "service";
69
32
  readonly keyName: string;
33
+ } | {
34
+ readonly kind: "apiKey";
35
+ readonly keyId: string;
36
+ readonly name: string;
37
+ readonly organizationId?: string;
38
+ readonly userId?: string;
39
+ readonly scopes: readonly string[];
40
+ /** When the key was created. */
41
+ readonly createdAt?: Temporal.Instant;
42
+ /** The user who created the key, when the row records one. */
43
+ readonly createdBy?: string;
44
+ /** `sub` (the user, or the key for an organization key), `role: authenticated` and `api_key`. */
45
+ readonly claims: JWTClaims;
70
46
  } | {
71
47
  readonly kind: "anon";
72
48
  /** `expired`: the cookie session needs a refresh that was not allowed here (run the proxy). */
@@ -108,6 +84,7 @@ interface ResolveAuthOptions {
108
84
  readonly leeway?: number;
109
85
  /** Milliseconds before a refresh counts as a network failure. Defaults to 5000. */
110
86
  readonly refreshTimeoutMs?: number;
87
+ readonly checkSession?: boolean;
111
88
  /**
112
89
  * Accept `sb_secret_` keys (`apikey` header) as service callers: `true` for
113
90
  * any configured key, or the key names allowed (`['cron']`). Defaults to false.
@@ -118,6 +95,12 @@ interface ResolveAuthOptions {
118
95
  readonly cookie?: {
119
96
  readonly name?: string;
120
97
  readonly options?: CookieOptions;
98
+ /**
99
+ * The shape refreshed sessions are written in, `cookies.encode` in
100
+ * `@supabase/ssr`. Use the browser client's value. Defaults to
101
+ * `user-and-tokens`.
102
+ */
103
+ readonly encode?: SessionEncoding;
121
104
  };
122
105
  /**
123
106
  * Read the session cookie. Defaults to true. `false` suits endpoints only
@@ -164,6 +147,7 @@ interface AuthResolution<C = unknown, P = unknown> {
164
147
  readonly requestCookies: readonly CookieRecord[];
165
148
  /** Adds `cookies` and `headers` to a response. */
166
149
  apply(response: Response): Response;
150
+ readonly sessionEnded?: boolean;
167
151
  }
168
152
  /** The first `x-forwarded-for` hop, the client as your edge saw it. */
169
153
  declare function clientIp(request: Request): string | undefined;
@@ -179,4 +163,4 @@ declare function resolveAuth(request: Request, options: ResolveAuthOptions): Pro
179
163
  /** The repository context (`actor`, `claims`) for an auth state. */
180
164
  declare function authContext(auth: AuthState): RequestContext;
181
165
  //#endregion
182
- export { readSession as _, ResolveAuthOptions as a, writeSession as b, clientIp as c, CookieOptions as d, CookieRecord as f, parseCookies as g, applyCookieWrites as h, InvalidReason as i, resolveAuth as l, StoredSession as m, AuthResolver as n, ResolvedState as o, CookieWrite as p, AuthState as r, authContext as s, AuthResolution as t, AUTH_CACHE_HEADERS as u, serializeCookie as v, sessionCookieName as y };
166
+ export { ResolveAuthOptions as a, clientIp as c, InvalidReason as i, resolveAuth as l, AuthResolver as n, ResolvedState as o, AuthState as r, authContext as s, AuthResolution as t };
@@ -1,7 +1,7 @@
1
- import { n as dbError } from "./errors-DtwXa6b8.js";
2
- import { i as ok, n as err } from "./result-BKiliPY7.js";
3
- import { t as validate } from "./standard-D7r6dMUu.js";
4
- import { p as respond } from "./server-Csx2sRjg.js";
1
+ import { n as dbError } from "./errors-B11Duf73.js";
2
+ import { a as ok, r as err } from "./result-DzUbqgdW.js";
3
+ import { n as validate } from "./standard-BK0cqJ7y.js";
4
+ import { a as respond } from "./respond-BUgsXNgk.js";
5
5
  //#region src/server/resource.ts
6
6
  const INTEGER = /* @__PURE__ */ new Set([
7
7
  "int2",
@@ -1,8 +1,8 @@
1
- import { F as TableMeta, P as TableKey, _ as Insert, n as AnyFunctions, r as AnyModels, z as Update } from "./types-Dnf_wRDz.js";
2
- import { u as Result, w as ValidationIssue } from "./executor-BunPOO-k.js";
3
- import { t as BetterSupabase, xt as SelectArg } from "./define-Bp_BZa5h.js";
4
- import { i as RespondOptions } from "./respond-D2OQl62-.js";
5
- import { i as ResourceOperation } from "./index-C7f8cOBM.js";
1
+ import { E as ValidationIssue, f as Result } from "./result-D7y2fT87.js";
2
+ import { H as Update, L as TableKey, R as TableMeta, a as AnyModels, i as AnyFunctions, x as Insert } from "./types-6BdhkmZe.js";
3
+ import { It as SelectArg, t as BetterSupabase } from "./define-CJJkkr1-.js";
4
+ import { a as RespondOptions } from "./respond-DoBijysA.js";
5
+ import { i as ResourceOperation } from "./index-Bxih3l0u.js";
6
6
  import { StandardSchemaV1 } from "@standard-schema/spec";
7
7
  //#region src/server/resource.d.ts
8
8
  /** What a resource needs from `defineListQuery`. */
@@ -0,0 +1,91 @@
1
+ import { n as dbError, o as isDbError, r as dbErrorOf } from "./errors-B11Duf73.js";
2
+ import { s as toDbError } from "./result-DzUbqgdW.js";
3
+ import { a as problemResponse } from "./problem-BreOl8b8.js";
4
+ import { a as actorOf, o as delegationOf } from "./impersonation-DcqaTBHx.js";
5
+ import { a as checkAal, t as isAnonymousUser } from "./view-BeFcRV6G.js";
6
+ import { n as jsonResponse } from "./json-CEnpTHlZ.js";
7
+ //#region src/server/respond.ts
8
+ /**
9
+ * The scopes a delegated user token lacks. Empty for the user's own session,
10
+ * which a support or impersonated session counts as: only an `oauth-client`
11
+ * actor is limited to what the user delegated.
12
+ */
13
+ function missingScopes(auth, required) {
14
+ if (required.length === 0) return [];
15
+ const outcome = actorOf(auth.claims);
16
+ if (!outcome.ok || outcome.actor?.kind !== "oauth-client") return [];
17
+ const granted = new Set(delegationOf(auth.claims)?.scopes);
18
+ return required.filter((scope) => !granted.has(scope));
19
+ }
20
+ /** An API key's `*` scope grants every scope. */
21
+ function missingKeyScopes(granted, required) {
22
+ if (granted.includes("*")) return [];
23
+ return required.filter((scope) => !granted.includes(scope));
24
+ }
25
+ /** `undefined` when `auth` may pass; otherwise the 401/403 error to send. */
26
+ function guard(auth, allow = ["user"], aal = "aal1", scopes = []) {
27
+ if (auth.kind === "invalid") return auth.error;
28
+ const anonymous = auth.kind === "user" && isAnonymousUser(auth.claims);
29
+ if (anonymous ? allow.includes("anonymous") : allow.includes(auth.kind)) {
30
+ const denied = checkAal(auth, aal);
31
+ if (denied) return denied;
32
+ if (auth.kind !== "user" && auth.kind !== "apiKey") return void 0;
33
+ const missing = auth.kind === "apiKey" ? missingKeyScopes(auth.scopes, scopes) : missingScopes(auth, scopes);
34
+ return missing.length > 0 ? dbError("forbidden", `The token lacks the scope ${missing.join(" ")}`, {
35
+ code: "INSUFFICIENT_SCOPE",
36
+ scopes
37
+ }) : void 0;
38
+ }
39
+ if (anonymous) return dbError("forbidden", "Sign up to continue", { code: "ANONYMOUS_USER" });
40
+ return auth.kind === "anon" ? dbError("unauthorized", "Sign in to continue", { code: "MISSING_CREDENTIALS" }) : dbError("forbidden", `A ${auth.kind} caller is not allowed here`);
41
+ }
42
+ function isResult(value) {
43
+ return typeof value === "object" && value !== null && "ok" in value && "data" in value && "error" in value;
44
+ }
45
+ /**
46
+ * Settles a handler's return value: `Result`s and `AsyncResult`s unwrap,
47
+ * thrown `DbException`s (or errors whose `cause` is a `DbError`) become
48
+ * errors, anything else is data. Other thrown
49
+ * errors propagate.
50
+ */
51
+ async function settle(run) {
52
+ try {
53
+ const value = await run();
54
+ if (!isResult(value)) return {
55
+ ok: true,
56
+ data: value
57
+ };
58
+ if (value.ok) return {
59
+ ok: true,
60
+ data: value.data
61
+ };
62
+ return {
63
+ ok: false,
64
+ error: isDbError(value.error) ? value.error : toDbError(value.error)
65
+ };
66
+ } catch (cause) {
67
+ const thrown = dbErrorOf(cause);
68
+ if (thrown) return {
69
+ ok: false,
70
+ error: thrown
71
+ };
72
+ throw cause;
73
+ }
74
+ }
75
+ /** A handler's value as a response: `Response` as is, data as JSON, errors as Problem Details. */
76
+ async function respond(run, options = {}) {
77
+ const settled = await settle(run);
78
+ if (!settled.ok) return problemResponse(settled.error, options);
79
+ if (settled.data instanceof Response) return settled.data;
80
+ if (settled.data === void 0) return new Response(null, { status: 204 });
81
+ return jsonResponse(settled.data, { status: options.status ?? 200 });
82
+ }
83
+ /** Prefetching the JWKS would add a network call to every test that builds a server. */
84
+ function defaultPrefetchJwks() {
85
+ return typeof process === "undefined" || process.env["NODE_ENV"] !== "test";
86
+ }
87
+ function defaultExpose() {
88
+ return typeof process !== "undefined" && process.env["NODE_ENV"] === "development";
89
+ }
90
+ //#endregion
91
+ export { respond as a, isResult as i, defaultPrefetchJwks as n, settle as o, guard as r, defaultExpose as t };
@@ -0,0 +1,93 @@
1
+ import { b as DbError } from "./result-D7y2fT87.js";
2
+ import { r as AuthState } from "./resolve-KW8nCeL6.js";
3
+ import { t as Aal } from "./mfa-Daak8ukG.js";
4
+ //#region src/server/refresh.d.ts
5
+ /** A router or browser prefetch, by its request headers. */
6
+ declare function isPrefetch(request: Request): boolean;
7
+ /**
8
+ * Whether a request should refresh an expired session cookie: page loads,
9
+ * client navigations (`rsc`, `x-sveltekit-*`, `_data` loaders), form posts
10
+ * and Server Actions. Prefetches, assets and `fetch` calls from scripts
11
+ * read the session as it is, so a burst of parallel requests never races
12
+ * on the single-use refresh token.
13
+ */
14
+ declare function shouldRefresh(request: Request): boolean;
15
+ /**
16
+ * Whether a request should ask the Auth server if the session still exists
17
+ * (`checkSession`): full page loads, and `paths` you list for client
18
+ * navigations. Never prefetches or mutations.
19
+ */
20
+ declare function shouldCheckSession(request: Request, paths?: readonly string[]): boolean;
21
+ /** When a session entry refreshes: always, never, on navigations, or a predicate. */
22
+ type RefreshPolicy = boolean | "navigation" | ((request: Request) => boolean);
23
+ /** `policy` for one request. */
24
+ declare function refreshFor(policy: RefreshPolicy | undefined, request: Request): boolean | undefined;
25
+ //#endregion
26
+ //#region src/server/respond.d.ts
27
+ type AuthKind = AuthState["kind"];
28
+ /**
29
+ * An auth kind a guard lets through. `anonymous` admits users signed in with
30
+ * `signInAnonymously()` (`is_anonymous`); `anon` admits callers without a
31
+ * session only.
32
+ */
33
+ type AllowedCaller = Exclude<AuthKind, "invalid"> | "anonymous";
34
+ interface GuardOptions {
35
+ /**
36
+ * Callers allowed through. Defaults to `['user']`, which refuses anonymous
37
+ * sign-ins. Only `'anonymous'` admits them: `['anonymous']` alone admits
38
+ * anonymous sign-ins and refuses other users, and `'anon'` (no session)
39
+ * never admits them.
40
+ */
41
+ readonly allow?: readonly AllowedCaller[];
42
+ /**
43
+ * Assurance level user sessions need. `aal2` answers 403 with
44
+ * `required: 'aal2'` until the user verifies a second factor.
45
+ */
46
+ readonly aal?: Aal;
47
+ /**
48
+ * OAuth scopes a delegated token (an OAuth client or an `act` chain) or an
49
+ * API key needs. A missing one answers 403 with `error="insufficient_scope"`.
50
+ * The user's own session is not limited by scopes.
51
+ */
52
+ readonly scopes?: readonly string[];
53
+ }
54
+ /** Guard options for middleware and fetch handlers that resolve the caller themselves. */
55
+ interface MiddlewareOptions extends GuardOptions {
56
+ /**
57
+ * Refresh an expired cookie session and send the new cookies. Only for
58
+ * routes browsers call with cookies; bearer tokens never refresh.
59
+ * `'navigation'` refreshes page loads and form posts only (`shouldRefresh`).
60
+ */
61
+ readonly refresh?: RefreshPolicy;
62
+ }
63
+ /** `undefined` when `auth` may pass; otherwise the 401/403 error to send. */
64
+ declare function guard(auth: AuthState, allow?: GuardOptions["allow"], aal?: Aal, scopes?: readonly string[]): DbError | undefined;
65
+ declare function isResult(value: unknown): value is {
66
+ ok: boolean;
67
+ data: unknown;
68
+ error: unknown;
69
+ };
70
+ type Settled = {
71
+ readonly ok: true;
72
+ readonly data: unknown;
73
+ } | {
74
+ readonly ok: false;
75
+ readonly error: DbError;
76
+ };
77
+ /**
78
+ * Settles a handler's return value: `Result`s and `AsyncResult`s unwrap,
79
+ * thrown `DbException`s (or errors whose `cause` is a `DbError`) become
80
+ * errors, anything else is data. Other thrown
81
+ * errors propagate.
82
+ */
83
+ declare function settle(run: () => unknown): Promise<Settled>;
84
+ interface RespondOptions {
85
+ readonly instance?: string;
86
+ readonly expose?: boolean;
87
+ /** Status for data responses. Defaults to 200 (204 without data). */
88
+ readonly status?: number;
89
+ }
90
+ /** A handler's value as a response: `Response` as is, data as JSON, errors as Problem Details. */
91
+ declare function respond(run: () => unknown, options?: RespondOptions): Promise<Response>;
92
+ //#endregion
93
+ export { RespondOptions as a, isResult as c, RefreshPolicy as d, isPrefetch as f, shouldRefresh as h, MiddlewareOptions as i, respond as l, shouldCheckSession as m, AuthKind as n, Settled as o, refreshFor as p, GuardOptions as r, guard as s, AllowedCaller as t, settle as u };
@@ -0,0 +1,282 @@
1
+ //#region src/core/errors.d.ts
2
+ /**
3
+ * Extra fields carried by each error kind. Plugins can add kinds through the
4
+ * `errors` extension point; apps that want the new kinds in the union can add
5
+ * them to this interface.
6
+ */
7
+ interface DbErrorKinds {
8
+ not_found: Record<never, never>;
9
+ unauthorized: Record<never, never>;
10
+ /**
11
+ * `required`: the assurance level the route needs, when a second factor is
12
+ * missing. `scopes`: the OAuth scopes the route needs, when a delegated
13
+ * token lacks one (`INSUFFICIENT_SCOPE`).
14
+ */
15
+ forbidden: {
16
+ required?: "aal1" | "aal2";
17
+ scopes?: readonly string[];
18
+ };
19
+ conflict: {
20
+ constraint?: string;
21
+ columns?: readonly string[];
22
+ };
23
+ foreign_key: {
24
+ constraint?: string;
25
+ columns?: readonly string[];
26
+ };
27
+ check: {
28
+ constraint?: string;
29
+ };
30
+ not_null: {
31
+ column?: string;
32
+ };
33
+ exclusion: {
34
+ constraint?: string;
35
+ };
36
+ invalid_input: Record<never, never>;
37
+ /** A stored value the app type can't hold, e.g. `infinity` for a Temporal timestamp. */
38
+ invalid_value: {
39
+ column?: string;
40
+ };
41
+ raised: Record<never, never>;
42
+ timeout: Record<never, never>;
43
+ serialization: Record<never, never>;
44
+ network: Record<never, never>;
45
+ aborted: Record<never, never>;
46
+ invalid_request: Record<never, never>;
47
+ validation: {
48
+ issues: readonly ValidationIssue[];
49
+ };
50
+ multiple_rows: Record<never, never>;
51
+ stale: Record<never, never>;
52
+ /**
53
+ * An `updateMany` or `deleteMany` matched more rows than its `maxAffected`
54
+ * allows; nothing was written. `maxAffected`: the limit, when known.
55
+ */
56
+ max_affected: {
57
+ maxAffected?: number;
58
+ };
59
+ /** `retryAfter`: seconds until the window resets (the `Retry-After` header). */
60
+ rate_limited: {
61
+ retryAfter?: number;
62
+ };
63
+ /**
64
+ * A usage quota is used up (`consume_quota`, SQLSTATE `BSQ29`). `meter`:
65
+ * what was metered, `limit`: the quota, `retryAfter`: seconds until the
66
+ * period resets.
67
+ */
68
+ quota_exceeded: {
69
+ meter?: string;
70
+ limit?: number;
71
+ retryAfter?: number;
72
+ };
73
+ /** The executor or its dialect can't run this operation (an include on SQLite, say). */
74
+ unsupported: Record<never, never>;
75
+ unexpected: Record<never, never>;
76
+ }
77
+ type DbErrorKind = keyof DbErrorKinds;
78
+ interface ValidationIssue {
79
+ readonly message: string;
80
+ readonly path?: readonly PropertyKey[];
81
+ }
82
+ interface DbErrorBase<K extends DbErrorKind> {
83
+ readonly kind: K;
84
+ readonly message: string;
85
+ /** SQLSTATE or PostgREST code (`23505`, `PGRST116`), when known. */
86
+ readonly code?: string;
87
+ /** Suggested HTTP status, used by the RFC 9457 mapping. */
88
+ readonly status: number;
89
+ readonly details?: string;
90
+ /** Postgres `HINT`. `raised` errors use it as an app-level error code. */
91
+ readonly hint?: string;
92
+ /** App-cased table key the operation ran against. */
93
+ readonly table?: string;
94
+ }
95
+ /**
96
+ * A database error as plain, serializable data. Safe to send across server
97
+ * action and RPC boundaries.
98
+ */
99
+ type DbError = { [K in DbErrorKind]: DbErrorBase<K> & DbErrorKinds[K]; }[DbErrorKind];
100
+ type DbErrorOf<K extends DbErrorKind> = Extract<DbError, {
101
+ kind: K;
102
+ }>;
103
+ declare function statusOf(kind: DbErrorKind): number;
104
+ type ExtraOf<K extends DbErrorKind> = Record<never, never> extends DbErrorKinds[K] ? [extra?: DbErrorKinds[K] & Partial<Omit<DbErrorBase<K>, "kind">>] : [extra: DbErrorKinds[K] & Partial<Omit<DbErrorBase<K>, "kind">>];
105
+ /** Creates a `DbError` with the default status for its kind. */
106
+ declare function dbError<K extends DbErrorKind>(kind: K, message: string, ...[extra]: ExtraOf<K>): DbErrorOf<K>;
107
+ declare function isDbError(value: unknown): value is DbError;
108
+ /**
109
+ * A unique violation, optionally for one constraint. Accepts a `DbError` or a
110
+ * `DbException`. Pass the generated `UniqueConstraint` type to check names:
111
+ * `isConflict<UniqueConstraint>(error, 'customers_organization_id_kvk_key')`.
112
+ */
113
+ declare const isConflict: <C extends string = string>(error: unknown, constraint?: NoInfer<C>) => error is DbErrorOf<"conflict"> & {
114
+ readonly constraint: C;
115
+ };
116
+ /** A CHECK violation, optionally for one constraint (`CheckConstraint`). */
117
+ declare const isCheck: <C extends string = string>(error: unknown, constraint?: NoInfer<C>) => error is DbErrorOf<"check"> & {
118
+ readonly constraint: C;
119
+ };
120
+ /** A foreign key violation, optionally for one constraint (`ForeignKeyConstraint`). */
121
+ declare const isForeignKey: <C extends string = string>(error: unknown, constraint?: NoInfer<C>) => error is DbErrorOf<"foreign_key"> & {
122
+ readonly constraint: C;
123
+ };
124
+ /** Raw error shape shared by PostgREST responses and `pg` errors. */
125
+ interface RawDbError {
126
+ readonly message?: string;
127
+ readonly code?: string;
128
+ readonly details?: string | null;
129
+ readonly hint?: string | null;
130
+ readonly constraint?: string;
131
+ readonly column?: string;
132
+ readonly table?: string;
133
+ readonly name?: string;
134
+ }
135
+ type ErrorMapper = (raw: RawDbError, fallback: DbError) => DbError | undefined;
136
+ /**
137
+ * Maps a PostgREST or Postgres error to a `DbError`. Custom mappers run
138
+ * first; the first one that returns an error wins.
139
+ */
140
+ declare function mapDbError(raw: RawDbError, mappers?: readonly ErrorMapper[]): DbError;
141
+ //#endregion
142
+ //#region src/core/result.d.ts
143
+ /** Turns a `DbError` into the error `.orThrow()` throws; set with `betterSupabase.mapError()`. */
144
+ type ThrowMapper = (error: DbError) => unknown;
145
+ type Ok<T> = {
146
+ readonly ok: true;
147
+ readonly data: T;
148
+ readonly error: null;
149
+ };
150
+ type Err<E = DbError> = {
151
+ readonly ok: false;
152
+ readonly data: null;
153
+ readonly error: E;
154
+ };
155
+ type Result<T, E = DbError> = Ok<T> | Err<E>;
156
+ declare function ok<T>(data: T): Ok<T>;
157
+ declare function err<E = DbError>(error: E): Err<E>;
158
+ /**
159
+ * A lazy-free `PromiseLike<Result<T>>` with helpers. `await` gives the
160
+ * `Result`; `.orThrow()` gives the data or throws a `DbException`.
161
+ */
162
+ declare class AsyncResult<T> implements PromiseLike<Result<T>> {
163
+ #private;
164
+ constructor(promise: Promise<Result<T>>);
165
+ static from<T>(run: () => Promise<Result<T>>): AsyncResult<T>;
166
+ static ok<T>(data: T): AsyncResult<T>;
167
+ static err<T = never>(error: DbError): AsyncResult<T>;
168
+ then<R1 = Result<T>, R2 = never>(onfulfilled?: ((value: Result<T>) => R1 | PromiseLike<R1>) | null, onrejected?: ((reason: unknown) => R2 | PromiseLike<R2>) | null): Promise<R1 | R2>;
169
+ /**
170
+ * Resolves with the data, or rejects with a `DbException`. Pass `factory`
171
+ * to throw your own error instead, e.g. an HTTP error for your framework;
172
+ * without it, the mapper from `betterSupabase.mapError()` applies when one is set.
173
+ */
174
+ orThrow(factory?: (error: DbError) => unknown): Promise<T>;
175
+ /** Resolves with the data, or `fallback` when the result is an error. */
176
+ unwrapOr<F>(fallback: F): Promise<T | F>;
177
+ map<U>(fn: (data: T) => U): AsyncResult<U>;
178
+ mapError(fn: (error: DbError) => DbError): AsyncResult<T>;
179
+ andThen<U>(fn: (data: T) => PromiseLike<Result<U>>): AsyncResult<U>;
180
+ }
181
+ /** What `toBetterResult` returns: the `status`/`value`/`error` fields every better-result value has. */
182
+ type BetterResultValue<T, E> = {
183
+ readonly status: "ok";
184
+ readonly value: T;
185
+ } | {
186
+ readonly status: "error";
187
+ readonly error: E;
188
+ };
189
+ /** The part of better-result's `Result` namespace `toBetterResult` calls. */
190
+ interface BetterResultApi<T, E> {
191
+ ok(value: NoInfer<T>): unknown;
192
+ err(error: NoInfer<E>): unknown;
193
+ }
194
+ /** The value type of a better-result `Result` type. */
195
+ type BetterResultOk<R> = R extends {
196
+ readonly status: "ok";
197
+ readonly value: infer T;
198
+ } ? T : never;
199
+ /** The error type of a better-result `Result` type. */
200
+ type BetterResultErr<R> = R extends {
201
+ readonly status: "error";
202
+ readonly error: infer E;
203
+ } ? E : never;
204
+ /**
205
+ * Builds a better-result value with the `Result` namespace you pass, so
206
+ * better-result stays your dependency. Errors go through `mapError`, or, for a
207
+ * result from a `db` of `betterSupabase.mapError(fn)`, through `fn` (typed `unknown`).
208
+ *
209
+ * The value is typed as better-result's `Result<T, E>` when the call has one
210
+ * as its expected type (an annotation or a function's return type) or as its
211
+ * type argument. That type is checked against the row type and `mapError`.
212
+ * Without one, it is a `BetterResultValue<T, E>`.
213
+ *
214
+ * ```ts
215
+ * import { Result } from 'better-result';
216
+ * const customer: Result<Customer, AppError> = toBetterResult(
217
+ * await db.customers.findById(id),
218
+ * Result,
219
+ * toAppError,
220
+ * );
221
+ * ```
222
+ */
223
+ declare function toBetterResult<R extends BetterResultValue<unknown, unknown> = never>(result: Result<BetterResultOk<R>>, api: BetterResultApi<BetterResultOk<R>, BetterResultErr<R>>, mapError: (error: DbError) => BetterResultErr<R>): R;
224
+ declare function toBetterResult<R extends BetterResultValue<unknown, unknown> = never>(result: Result<BetterResultOk<R>> & (DbError extends BetterResultErr<R> ? unknown : never), api: BetterResultApi<BetterResultOk<R>, DbError>): R;
225
+ declare function toBetterResult<R extends BetterResultValue<unknown, unknown> = never>(result: AsyncResult<BetterResultOk<R>>, api: BetterResultApi<BetterResultOk<R>, BetterResultErr<R>>, mapError: (error: DbError) => BetterResultErr<R>): Promise<R>;
226
+ declare function toBetterResult<R extends BetterResultValue<unknown, unknown> = never>(result: AsyncResult<BetterResultOk<R>> & (unknown extends BetterResultErr<R> ? unknown : never), api: BetterResultApi<BetterResultOk<R>, unknown>): Promise<R>;
227
+ declare function toBetterResult<T, E>(result: Result<T>, api: BetterResultApi<T, E>, mapError: (error: DbError) => E): BetterResultValue<T, E>;
228
+ declare function toBetterResult<T>(result: Result<T>, api: BetterResultApi<T, DbError>): BetterResultValue<T, DbError>;
229
+ declare function toBetterResult<T, E>(result: AsyncResult<T>, api: BetterResultApi<T, E>, mapError: (error: DbError) => E): Promise<BetterResultValue<T, E>>;
230
+ declare function toBetterResult<T>(result: AsyncResult<T>, api: BetterResultApi<T, unknown>): Promise<BetterResultValue<T, unknown>>;
231
+ /**
232
+ * An error class for one `DbError` kind. better-result's
233
+ * `class NotFound extends TaggedError("NotFound")<{ message: string; error: DbError }> {}`
234
+ * fits, as does any class whose constructor takes `{ message, error }`.
235
+ */
236
+ type DbErrorClass<K extends DbErrorKind = DbErrorKind> = new (props: {
237
+ readonly message: string;
238
+ readonly error: DbErrorOf<K>;
239
+ }) => unknown;
240
+ /** Error classes by `DbError` kind; kinds left out use the fallback class. */
241
+ type DbErrorClasses = { readonly [K in DbErrorKind]?: DbErrorClass<K>; };
242
+ /** The error a `DbError` of kind `K` becomes. */
243
+ type MappedDbError<M extends DbErrorClasses, F extends DbErrorClass, K extends DbErrorKind = DbErrorKind> = K extends keyof M ? M[K] extends (abstract new (...args: never[]) => infer I) ? I : F extends (abstract new (...args: never[]) => infer I) ? I : never : F extends (abstract new (...args: never[]) => infer I) ? I : never;
244
+ /**
245
+ * Converts results with a fixed `Result` namespace and error mapping. Like
246
+ * `toBetterResult`, the value is typed as better-result's `Result<T, E>`
247
+ * when the call has one as its expected type, and `E` must accept every
248
+ * error the mapping returns.
249
+ */
250
+ interface BetterResultErrors<M extends DbErrorClasses, F extends DbErrorClass> {
251
+ <R extends BetterResultValue<unknown, unknown> = never>(result: Result<BetterResultOk<R>> & (MappedDbError<M, F> extends BetterResultErr<R> ? unknown : never)): R;
252
+ <R extends BetterResultValue<unknown, unknown> = never>(result: AsyncResult<BetterResultOk<R>> & (MappedDbError<M, F> extends BetterResultErr<R> ? unknown : never)): Promise<R>;
253
+ <T>(result: Result<T>): BetterResultValue<T, MappedDbError<M, F>>;
254
+ <T>(result: AsyncResult<T>): Promise<BetterResultValue<T, MappedDbError<M, F>>>;
255
+ /** The error instance for one `DbError`, typed by its kind. */
256
+ map<E extends DbError>(error: E): MappedDbError<M, F, E["kind"]>;
257
+ }
258
+ /**
259
+ * A typed mapping from `DbError` kinds to error classes, usually
260
+ * better-result `TaggedError` classes, bound to better-result's `Result`
261
+ * namespace. Kinds without a class use `fallback`. Each instance gets the
262
+ * error's `message` and the `DbError` itself as `error`.
263
+ *
264
+ * ```ts
265
+ * import { Result, TaggedError } from 'better-result';
266
+ * class NotFound extends TaggedError('NotFound')<{ message: string; error: DbError }> {}
267
+ * class DbFailure extends TaggedError('DbFailure')<{ message: string; error: DbError }> {}
268
+ * const toResult = defineBetterResultErrors(Result, { not_found: NotFound }, DbFailure);
269
+ * const customer: Result<Customer, NotFound | DbFailure> = await toResult(db.customers.findById(id));
270
+ * ```
271
+ */
272
+ declare function defineBetterResultErrors<const M extends DbErrorClasses, F extends DbErrorClass>(api: BetterResultApi<unknown, unknown>, classes: M, fallback: F): BetterResultErrors<M, F>;
273
+ /**
274
+ * Converts a better-result value back into a `Result`, by its `status`
275
+ * field, so it works across better-result versions. A `DbError`, or an
276
+ * error whose `cause` is one, is kept; others go through `mapError`
277
+ * (default `toDbError`).
278
+ */
279
+ declare function fromBetterResult<T>(result: BetterResultValue<T, unknown>, mapError?: (error: unknown) => DbError): Result<T>;
280
+ declare function toDbError(cause: unknown): DbError;
281
+ //#endregion
282
+ export { isDbError as A, DbErrorOf as C, dbError as D, ValidationIssue as E, mapDbError as M, statusOf as N, isCheck as O, DbErrorKinds as S, RawDbError as T, ok as _, BetterResultOk as a, DbError as b, DbErrorClasses as c, Ok as d, Result as f, fromBetterResult as g, err as h, BetterResultErrors as i, isForeignKey as j, isConflict as k, Err as l, defineBetterResultErrors as m, BetterResultApi as n, BetterResultValue as o, ThrowMapper as p, BetterResultErr as r, DbErrorClass as s, AsyncResult as t, MappedDbError as u, toBetterResult as v, ErrorMapper as w, DbErrorKind as x, toDbError as y };
@@ -1,4 +1,5 @@
1
- import { n as dbError, r as dbErrorOf, t as DbException } from "./errors-DtwXa6b8.js";
1
+ import { t as DbException } from "./db-exception-CnWcYPxL.js";
2
+ import { n as dbError, r as dbErrorOf } from "./errors-B11Duf73.js";
2
3
  //#region src/core/result.ts
3
4
  const throwMappers = /* @__PURE__ */ new WeakMap();
4
5
  function inherit(from, next) {
@@ -81,6 +82,30 @@ function toBetterResult(result, api, mapError) {
81
82
  return build(result, mapError);
82
83
  }
83
84
  /**
85
+ * A typed mapping from `DbError` kinds to error classes, usually
86
+ * better-result `TaggedError` classes, bound to better-result's `Result`
87
+ * namespace. Kinds without a class use `fallback`. Each instance gets the
88
+ * error's `message` and the `DbError` itself as `error`.
89
+ *
90
+ * ```ts
91
+ * import { Result, TaggedError } from 'better-result';
92
+ * class NotFound extends TaggedError('NotFound')<{ message: string; error: DbError }> {}
93
+ * class DbFailure extends TaggedError('DbFailure')<{ message: string; error: DbError }> {}
94
+ * const toResult = defineBetterResultErrors(Result, { not_found: NotFound }, DbFailure);
95
+ * const customer: Result<Customer, NotFound | DbFailure> = await toResult(db.customers.findById(id));
96
+ * ```
97
+ */
98
+ function defineBetterResultErrors(api, classes, fallback) {
99
+ const map = (error) => {
100
+ return new (classes[error.kind] ?? fallback)({
101
+ message: error.message,
102
+ error
103
+ });
104
+ };
105
+ const convert = (result) => result instanceof AsyncResult ? toBetterResult(result, api, map) : toBetterResult(result, api, map);
106
+ return Object.assign(convert, { map });
107
+ }
108
+ /**
84
109
  * Converts a better-result value back into a `Result`, by its `status`
85
110
  * field, so it works across better-result versions. A `DbError`, or an
86
111
  * error whose `cause` is one, is kept; others go through `mapError`
@@ -100,4 +125,4 @@ function toDbError(cause) {
100
125
  return dbError("unexpected", message);
101
126
  }
102
127
  //#endregion
103
- export { toBetterResult as a, ok as i, err as n, toDbError as o, fromBetterResult as r, withErrorMapper as s, AsyncResult as t };
128
+ export { ok as a, withErrorMapper as c, fromBetterResult as i, defineBetterResultErrors as n, toBetterResult as o, err as r, toDbError as s, AsyncResult as t };
@@ -0,0 +1,12 @@
1
+ //#region src/core/run-state.d.ts
2
+ /**
3
+ * Where a run is, in the words every block that records runs shares: ai-chat
4
+ * runs, ai-tasks runs and workflow runs. Each block uses the subset it needs.
5
+ */
6
+ type RunState = "queued" | "running" | "waiting" | "cancel_requested" | "completed" | "failed" | "cancelled";
7
+ /** The states a run ends in. */
8
+ type FinalRunState = Extract<RunState, "completed" | "failed" | "cancelled">;
9
+ /** The states a run ends in, in the order blocks list them. */
10
+ declare const FINAL_RUN_STATES: readonly FinalRunState[];
11
+ //#endregion
12
+ export { FinalRunState as n, RunState as r, FINAL_RUN_STATES as t };