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,22 +1,8 @@
1
- import { P as TableKey, R as UniqueWhere, _ as Insert, n as AnyFunctions, r as AnyModels, w as PrimaryKeyValue, z as Update } from "./types-Dnf_wRDz.js";
2
- import { x as DbException } from "./executor-BunPOO-k.js";
3
- import { C as FindExt, Ct as WhereInput, M as UpsertArgs, N as WriteArgs, S as DeleteExt, T as OffsetPageArgs, X as InferResult, Z as QuerySpec, _ as CursorPage, it as AggregateResult, j as UpdateArgs, k as Returned, l as CacheAdapter, lt as FindFirstArgs, rt as AggregateArgs, st as CountArgs, t as BetterSupabase, ut as FindManyArgs, v as CursorPageArgs, vt as Payload, w as OffsetPage, x as DeleteArgs, y as Db, yt as ReadArgs } from "./define-Bp_BZa5h.js";
4
- import { DataTag, InfiniteData, QueryClient, QueryMeta, SkipToken } from "@tanstack/query-core";
5
- //#region src/query/invalidate.d.ts
6
- /**
7
- * Carried by every better-supabase query: the tables whose changes make it
8
- * stale, on top of the app's `Register['queryMeta']`, so the options stay
9
- * assignable to `useQuery` when the app narrows its query meta.
10
- */
11
- type BetterQueryMeta = QueryMeta & {
12
- readonly bsTables: readonly string[];
13
- };
14
- /**
15
- * Invalidates every query that read one of `tables`: better-supabase queries
16
- * by their `meta.bsTables`, and other `['bs', table, ...]` keys by prefix.
17
- */
18
- declare function invalidateTables(client: QueryClient, tables: readonly string[]): Promise<void>;
19
- //#endregion
1
+ import { n as DbException } from "./escape-like-ImTK0ps_.js";
2
+ import { E as PrimaryKeyValue, H as Update, L as TableKey, V as UniqueWhere, a as AnyModels, i as AnyFunctions, x as Insert } from "./types-6BdhkmZe.js";
3
+ import { C as DeleteExt, D as OffsetPage, F as UpdateArgs, I as UpsertArgs, Mt as Payload, N as Returned, Nt as ReadArgs, O as OffsetPageArgs, R as WriteArgs, S as DeleteArgs, St as FindOnlyArgs, b as Db, bt as FindFirstArgs, it as QuerySpec, k as OffsetRangeArgs, pt as AggregateResult, rt as InferResult, t as BetterSupabase, u as CacheAdapter, ut as AggregateArgs, v as CursorPage, vt as CountArgs, w as FindExt, xt as FindManyArgs, y as CursorPageArgs, zt as WhereInput } from "./define-CJJkkr1-.js";
4
+ import { t as BetterQueryMeta } from "./invalidate-BBqhpxyB.js";
5
+ import { DataTag, InfiniteData, QueryClient, SkipToken } from "@tanstack/query-core";
20
6
  //#region src/query/queries.d.ts
21
7
  type QueryKeyOf<T> = DataTag<readonly unknown[], T, DbException>;
22
8
  type QueryFnOf<T> = ((context: {
@@ -38,9 +24,19 @@ interface InfiniteOptionsOf<P, Param> {
38
24
  }) => Promise<P>;
39
25
  readonly initialPageParam: Param;
40
26
  readonly getNextPageParam: (last: P) => Param | undefined;
27
+ /** Set on numbered pages, so a window trimmed by `maxPages` can load backwards. */
28
+ readonly getPreviousPageParam?: (first: P) => Param | undefined;
29
+ readonly maxPages?: number;
41
30
  readonly meta: BetterQueryMeta;
42
31
  readonly staleTime?: number;
43
32
  }
33
+ interface InfiniteExtras {
34
+ /**
35
+ * Pages kept in the cache; older ones are dropped as new ones load. Keeps
36
+ * long feeds from holding every page in memory and refetching them all.
37
+ */
38
+ readonly maxPages?: number;
39
+ }
44
40
  /** Options for `useMutation`. Invalidates every query that read a changed table. */
45
41
  interface MutationOptionsOf<V, R> {
46
42
  readonly mutationKey: readonly unknown[];
@@ -54,6 +50,7 @@ interface TableQueries<M extends AnyModels, T extends TableKey<M>, E> {
54
50
  readonly key: readonly ["bs", T];
55
51
  findMany<const A extends FindManyArgs<M, T> & FindExt<E, M, T>>(args?: A | SkipToken): QueryOptionsOf<Payload<M, T, A>[]>;
56
52
  findFirst<const A extends FindFirstArgs<M, T> & FindExt<E, M, T>>(args?: A | SkipToken): QueryOptionsOf<Payload<M, T, A> | null>;
53
+ findOnly<const A extends FindOnlyArgs<M, T> & FindExt<E, M, T>>(args: A | SkipToken): QueryOptionsOf<Payload<M, T, A> | null>;
57
54
  findUnique<const A extends ReadArgs<M, T> & {
58
55
  readonly where: UniqueWhere<M, T>;
59
56
  } & FindExt<E, M, T>>(args: A | SkipToken): QueryOptionsOf<Payload<M, T, A> | null>;
@@ -63,11 +60,11 @@ interface TableQueries<M extends AnyModels, T extends TableKey<M>, E> {
63
60
  exists(args?: ({
64
61
  readonly where?: WhereInput<M, T>;
65
62
  } & FindExt<E, M, T>) | SkipToken): QueryOptionsOf<boolean>;
66
- paginate<const A extends OffsetPageArgs<M, T> & FindExt<E, M, T>>(args: A | SkipToken): QueryOptionsOf<OffsetPage<Payload<M, T, A>>>;
63
+ paginate<const A extends (OffsetPageArgs<M, T> | OffsetRangeArgs<M, T>) & FindExt<E, M, T>>(args: A | SkipToken): QueryOptionsOf<OffsetPage<Payload<M, T, A>>>;
67
64
  /** Cursor pages for `useInfiniteQuery`. */
68
- infinite<const A extends Omit<CursorPageArgs<M, T>, "after"> & FindExt<E, M, T>>(args: A): InfiniteOptionsOf<CursorPage<Payload<M, T, A>>, string | null>;
65
+ infinite<const A extends Omit<CursorPageArgs<M, T>, "after"> & FindExt<E, M, T>>(args: A, options?: InfiniteExtras): InfiniteOptionsOf<CursorPage<Payload<M, T, A>>, string | null>;
69
66
  /** Numbered pages for `useInfiniteQuery`, starting at `args.page` (default 1). */
70
- infinitePages<const A extends OffsetPageArgs<M, T> & FindExt<E, M, T>>(args: A): InfiniteOptionsOf<OffsetPage<Payload<M, T, A>>, number>;
67
+ infinitePages<const A extends OffsetPageArgs<M, T> & FindExt<E, M, T>>(args: A, options?: InfiniteExtras): InfiniteOptionsOf<OffsetPage<Payload<M, T, A>>, number>;
71
68
  create<const A extends WriteArgs<M, T> = {}>(args?: A): MutationOptionsOf<Insert<M, T>, Returned<M, T, A>>;
72
69
  update<const A extends UpdateArgs<M, T> = {}>(args?: A): MutationOptionsOf<{
73
70
  readonly id: PrimaryKeyValue<M, T>;
@@ -98,6 +95,13 @@ interface QueriesOptions {
98
95
  * the server so hydrated data isn't refetched on mount.
99
96
  */
100
97
  readonly staleTime?: number;
98
+ /**
99
+ * Appended to every query key. Give each executor its own scope (`'local'`
100
+ * for PowerSync, for instance) when several share one QueryClient, so their
101
+ * results never land in the same cache entry. Invalidation by table still
102
+ * reaches every scope.
103
+ */
104
+ readonly scope?: string;
101
105
  }
102
106
  /**
103
107
  * TanStack Query option factories for every table, framework-neutral: pass
@@ -126,18 +130,77 @@ interface UserChangeSource {
126
130
  readonly user: {
127
131
  readonly id: string;
128
132
  } | null;
133
+ readonly claims?: Readonly<Record<string, unknown>> | null;
129
134
  };
130
135
  }
131
136
  /**
132
- * Removes every `['bs', ...]` query when the signed-in user changes or signs
133
- * out, so the next user never sees the previous user's rows. Returns the
134
- * function that stops listening. `BetterSupabaseProvider` calls it for React;
135
- * call it yourself with Vue, Solid, Svelte or Angular Query.
137
+ * Resets every `['bs', ...]` query when the caller changes: another user,
138
+ * signing out, or new claims for the same user (an organization switch, a
139
+ * role change). Mounted queries refetch, so no one sees the previous
140
+ * identity's rows. Returns the function that stops listening.
141
+ * `BetterSupabaseProvider` calls it for React; call it yourself with Vue,
142
+ * Solid, Svelte or Angular Query.
143
+ *
144
+ * Queries that fetched while the session was still loading ran as anon, so
145
+ * they are reset when a user arrives. Data already in the cache when loading
146
+ * started (hydrated from the server) stays.
136
147
  *
137
148
  * ```ts
138
149
  * const stop = clearOnUserChange(queryClient, bs.auth);
139
150
  * ```
140
151
  */
141
- declare function clearOnUserChange(queryClient: Pick<QueryClient, "removeQueries">, auth: UserChangeSource): () => void;
152
+ declare function clearOnUserChange(queryClient: Pick<QueryClient, "resetQueries" | "getQueryCache">, auth: UserChangeSource): () => void;
153
+ //#endregion
154
+ //#region src/query/optimistic.d.ts
155
+ /** A query whose cached data an optimistic update rewrites: any `q.<table>.*()` option. */
156
+ interface OptimisticTarget<T> {
157
+ readonly queryKey: QueryKeyOf<T>;
158
+ }
159
+ interface MutationContext {
160
+ readonly client: QueryClient;
161
+ }
162
+ /** What `onMutate` returns: the data each target held before the change. */
163
+ interface OptimisticSnapshot {
164
+ readonly previous: readonly (readonly [queryKey: readonly unknown[], data: unknown])[];
165
+ }
166
+ /**
167
+ * `onMutate`, `onError` and `onSettled` for `useMutation`: spread them next
168
+ * to a mutation option, which keeps its `onSuccess` invalidation.
169
+ */
170
+ interface OptimisticHandlers<V> {
171
+ onMutate(variables: V, context: MutationContext): Promise<OptimisticSnapshot>;
172
+ onError(error: Error, variables: V, snapshot: OptimisticSnapshot | undefined, context: MutationContext): void;
173
+ onSettled(data: unknown, error: Error | null, variables: V, snapshot: OptimisticSnapshot | undefined, context: MutationContext): Promise<void>;
174
+ }
175
+ type Targets<T> = OptimisticTarget<T> | readonly OptimisticTarget<T>[];
176
+ type Keyed<R> = Extract<keyof R, string>;
177
+ /**
178
+ * Optimistic updates for list queries (`findMany`), keyed by a row column
179
+ * (`id` by default):
180
+ *
181
+ * - `optimistic.create(list, (input) => row)` adds the row the input will make.
182
+ * - `optimistic.update(list)` merges `{ id, patch }` into the matching row.
183
+ * - `optimistic.remove(list)` drops the row whose key is the deleted id.
184
+ * - `optimistic(target, apply)` rewrites any cached data.
185
+ *
186
+ * ```ts
187
+ * const list = q.todos.findMany({ where: { done: false } });
188
+ * useMutation({ ...q.todos.update(), ...optimistic.update(list) });
189
+ * ```
190
+ */
191
+ declare const optimistic: (<T, V>(targets: Targets<T>, apply: (current: T, variables: V) => T) => OptimisticHandlers<V>) & {
192
+ create<R, V>(targets: Targets<R[]>, toRow: (variables: V) => R, options?: {
193
+ readonly position?: "start" | "end";
194
+ }): OptimisticHandlers<V>;
195
+ update<R, K extends Keyed<R> = Keyed<R> & "id">(targets: Targets<R[]>, options?: {
196
+ readonly key?: K;
197
+ }): OptimisticHandlers<{
198
+ readonly id: R[K];
199
+ readonly patch: Partial<R>;
200
+ }>;
201
+ remove<R, K extends Keyed<R> = Keyed<R> & "id">(targets: Targets<R[]>, options?: {
202
+ readonly key?: K;
203
+ }): OptimisticHandlers<R[K]>;
204
+ };
142
205
  //#endregion
143
- export { MutationOptionsOf as a, QueryKeyOf as c, createQueries as d, invalidateOnMutation as f, invalidateTables as h, InfiniteOptionsOf as i, QueryOptionsOf as l, BetterQueryMeta as m, clearOnUserChange as n, QueriesOptions as o, queryCache as p, BetterQueries as r, QueryHelpers as s, UserChangeSource as t, TableQueries as u };
206
+ export { invalidateOnMutation as _, UserChangeSource as a, InfiniteExtras as c, QueriesOptions as d, QueryHelpers as f, createQueries as g, TableQueries as h, optimistic as i, InfiniteOptionsOf as l, QueryOptionsOf as m, OptimisticSnapshot as n, clearOnUserChange as o, QueryKeyOf as p, OptimisticTarget as r, BetterQueries as s, OptimisticHandlers as t, MutationOptionsOf as u, queryCache as v };
@@ -0,0 +1,51 @@
1
+ import { a as AnyModels, i as AnyFunctions } from "./types-6BdhkmZe.js";
2
+ import { l as PublicEnv } from "./index-CLg87OBW.js";
3
+ import { s as SessionEncoding } from "./session-ChiXDZdZ.js";
4
+ import { t as BetterSupabase } from "./define-CJJkkr1-.js";
5
+ import { r as BetterClient } from "./bind-Bu_ZNa3W.js";
6
+ import { SupabaseClient, SupabaseClientOptions } from "@supabase/supabase-js";
7
+ //#region src/client/index.d.ts
8
+ interface ClientOptions {
9
+ /** URL and publishable key. Not needed when `client` is given. */
10
+ readonly env?: PublicEnv;
11
+ /**
12
+ * Bring your own supabase-js client (custom storage). React Native apps
13
+ * use `better-supabase/client/native`, which doesn't load `@supabase/ssr`.
14
+ */
15
+ readonly client?: SupabaseClient;
16
+ /**
17
+ * `cookies` (default) shares the session with the server through
18
+ * `@supabase/ssr`; `local` keeps it in localStorage for SPAs without a server.
19
+ */
20
+ readonly storage?: "cookies" | "local";
21
+ readonly cookies?: {
22
+ /**
23
+ * `tokens-only` keeps the user object out of the cookie (it lives in
24
+ * `auth.userStorage`, localStorage by default), so cookies stay small.
25
+ * Use the same value as the server's `encode`. Defaults to
26
+ * `user-and-tokens`.
27
+ */
28
+ readonly encode?: SessionEncoding;
29
+ };
30
+ readonly auth?: {
31
+ /** Where auth-js keeps the user object with `cookies.encode: 'tokens-only'`. */
32
+ readonly userStorage?: UserStorage;
33
+ };
34
+ /**
35
+ * `staleTime` for every query option in `bs.queries`. Above zero, a
36
+ * remount or a window focus reuses cached rows instead of refetching.
37
+ */
38
+ readonly staleTime?: number;
39
+ }
40
+ type UserStorage = NonNullable<NonNullable<SupabaseClientOptions<"public">["auth"]>["userStorage"]>;
41
+ /**
42
+ * The browser side: a supabase-js client, repositories that follow the
43
+ * session, TanStack Query options and an auth store for UI state.
44
+ *
45
+ * ```ts
46
+ * export const bs = createClient(betterSupabase, { env: { url, publishableKey } });
47
+ * ```
48
+ */
49
+ declare function createClient$1<M extends AnyModels, D, F extends AnyFunctions, E, C = unknown, P = unknown>(betterSupabase: BetterSupabase<M, D, F, E, C, P>, options?: ClientOptions): BetterClient<M, F, E, C, P>;
50
+ //#endregion
51
+ export { createClient$1 as n, ClientOptions as t };
@@ -0,0 +1,53 @@
1
+ import { ChatOnFinishCallback, ChatTransport, UIMessage } from "ai";
2
+ import { UseChatHelpers } from "@ai-sdk/react";
3
+ //#region src/ai-sdk/react/body.d.ts
4
+ /** What a transport factory gets from `useAssistant`. */
5
+ interface AssistantTransportConfig {
6
+ readonly api: string;
7
+ readonly model: string | undefined;
8
+ readonly body: Readonly<Record<string, unknown>> | undefined;
9
+ readonly headers: Readonly<Record<string, string>> | undefined;
10
+ }
11
+ //#endregion
12
+ //#region src/ai-sdk/react/index.d.ts
13
+ interface UseAssistantOptions {
14
+ /** The chat id; make one on the client for a new chat. */
15
+ readonly id: string;
16
+ /** The route of `createAssistant`. Defaults to `/api/chat`. */
17
+ readonly api?: string;
18
+ /** The model the next answer uses; the server checks it against the catalog. */
19
+ readonly model?: string;
20
+ /** The stored history, such as `toUIMessages(path)` from the server. */
21
+ readonly messages?: UIMessage[];
22
+ /** Picks up an answer that is still being written. Defaults to true. */
23
+ readonly resume?: boolean;
24
+ /** Extra fields for the request body. */
25
+ readonly body?: Readonly<Record<string, unknown>>;
26
+ readonly headers?: Readonly<Record<string, string>>;
27
+ readonly onError?: (error: Error) => void;
28
+ readonly onFinish?: ChatOnFinishCallback<UIMessage>;
29
+ /** Custom throttle wait in ms for message updates. */
30
+ readonly throttle?: number;
31
+ /**
32
+ * Makes the transport instead of the default one, such as
33
+ * `durableTransport` from `better-supabase/ai-sdk/workflow/react`. Pass a
34
+ * function defined outside the component, so the transport is kept.
35
+ */
36
+ readonly transport?: (config: AssistantTransportConfig) => ChatTransport<UIMessage>;
37
+ /** Sends again without user input, such as once every approval is answered. */
38
+ readonly sendAutomaticallyWhen?: (options: {
39
+ messages: UIMessage[];
40
+ }) => boolean | PromiseLike<boolean>;
41
+ }
42
+ type AssistantState = UseChatHelpers<UIMessage> & {
43
+ /** Stops the answer on the server too, so it is stored as stopped. */
44
+ stop: () => Promise<void>;
45
+ };
46
+ /**
47
+ * `useChat` wired to `createAssistant`: it sends only the new message (the
48
+ * server keeps the history), resumes a running answer after a reload and
49
+ * stops it on the server.
50
+ */
51
+ declare function useAssistant(options: UseAssistantOptions): AssistantState;
52
+ //#endregion
53
+ export { AssistantTransportConfig as i, UseAssistantOptions as n, useAssistant as r, AssistantState as t };
@@ -1,5 +1,5 @@
1
- import { j as SchemaMeta } from "./types-Dnf_wRDz.js";
2
- import { p as OpenApiParameter } from "./index-fag8VJZ2.js";
1
+ import { P as SchemaMeta } from "./types-6BdhkmZe.js";
2
+ import { m as OpenApiParameter } from "./list-query-BRt-zDF7.js";
3
3
  //#region src/openapi/index.d.ts
4
4
  type Json = Record<string, unknown>;
5
5
  type ResourceOperation = "list" | "get" | "create" | "update" | "delete";
@@ -0,0 +1 @@
1
+ export {}
@@ -0,0 +1,55 @@
1
+ import { P as SchemaMeta } from "./types-6BdhkmZe.js";
2
+ import { h as MutationIntent } from "./executor-DvsBbNBS.js";
3
+ import { a as EventHub, s as MutationNotice } from "./events-DWDhx77e.js";
4
+ import { n as CloudEventOptions, r as EventSink, t as CloudEvent } from "./cloud-event-C1JCc1bH.js";
5
+ //#region src/events/index.d.ts
6
+ declare const ROW_EVENT_TYPES: { readonly [K in MutationIntent]: string; };
7
+ interface RowEventData {
8
+ readonly table: string;
9
+ readonly row: Readonly<Record<string, unknown>>;
10
+ readonly actorId?: string;
11
+ }
12
+ /**
13
+ * One CloudEvent per mutated row: `dev.better-supabase.row.created` with the
14
+ * app-cased row and the actor in `data`, the primary key as `subject` and the
15
+ * tenant as `partitionkey`. Writes that return no rows (soft
16
+ * deletes, `returning: false`) send one event per known primary key, with the
17
+ * key as `row`.
18
+ */
19
+ declare function toCloudEvents(notice: MutationNotice, options: CloudEventOptions & {
20
+ readonly meta?: SchemaMeta;
21
+ }): CloudEvent<RowEventData>[];
22
+ interface ForwardOptions extends CloudEventOptions {
23
+ /** Only forward these tables or kinds. */
24
+ readonly filter?: (notice: MutationNotice) => boolean;
25
+ /** Sink failures never fail the mutation. Defaults to the `Logger`. */
26
+ readonly onError?: (error: unknown, events: readonly CloudEvent[]) => void;
27
+ }
28
+ /**
29
+ * Sends a CloudEvent for every mutation to `sink`. Returns a function that
30
+ * stops forwarding. Sends in flight are tracked on `betterSupabase.events`
31
+ * (`settled()`), which the Next adapter hands to `after()` and the edge
32
+ * entry to `waitUntil`. Use an outbox (SQL modules) when events must not be lost.
33
+ */
34
+ declare function forwardMutations(betterSupabase: {
35
+ readonly events: EventHub;
36
+ readonly meta: SchemaMeta;
37
+ }, sink: EventSink, options: ForwardOptions): () => void;
38
+ type HttpMode = "structured" | "binary" | "batch";
39
+ /** The HTTP protocol binding: headers and body for one event (or a batch). */
40
+ declare function toHttp(events: CloudEvent | readonly CloudEvent[], mode?: HttpMode): {
41
+ headers: Record<string, string>;
42
+ body: string;
43
+ }[];
44
+ declare function isCloudEvent(value: unknown): value is CloudEvent;
45
+ /** Reads CloudEvents from a request in any of the three HTTP modes. */
46
+ declare function fromHttp(request: Request): Promise<CloudEvent[]>;
47
+ interface HttpSinkOptions {
48
+ readonly mode?: HttpMode;
49
+ readonly headers?: Readonly<Record<string, string>>;
50
+ readonly fetch?: typeof fetch;
51
+ }
52
+ /** POSTs events to `url`. Non-2xx responses reject. */
53
+ declare function httpSink(url: string | URL, options?: HttpSinkOptions): EventSink;
54
+ //#endregion
55
+ export { RowEventData as a, httpSink as c, toHttp as d, ROW_EVENT_TYPES as i, isCloudEvent as l, HttpMode as n, forwardMutations as o, HttpSinkOptions as r, fromHttp as s, ForwardOptions as t, toCloudEvents as u };
@@ -0,0 +1,267 @@
1
+ import { b as DbError, f as Result, t as AsyncResult } from "./result-D7y2fT87.js";
2
+ import { it as QuerySpec } from "./define-CJJkkr1-.js";
3
+ import { C as UrlOptions, S as UploadOptions, x as UploadBody } from "./bucket-Cl46E3jS.js";
4
+ import { n as TemplateValues } from "./template-CwO38Do8.js";
5
+ import { t as AuthSnapshot } from "./bind-Bu_ZNa3W.js";
6
+ import { t as AuthSession } from "./view-DbxLNu8L.js";
7
+ import { S as Topic, _ as RealtimeClient, f as PresenceMember, g as PresenceSubscription, p as PresenceOptions, r as LiveCountSeed, u as EventSchemas, w as TopicHandlers, x as SubscriptionStatus, y as SubscribeOptions } from "./index-DunNRdnT.js";
8
+ import { a as BroadcastOptions, f as UseActionOptions, l as LiveQueryHookOptions, n as ActionInputOf, o as ClientLike, r as ActionResultOf, s as LiveCountHookOptions } from "./field-errors-BFOa7WhB.js";
9
+ import { SupabaseClient } from "@supabase/supabase-js";
10
+ import { ReactNode, SubmitEvent } from "react";
11
+ import { StandardSchemaV1 } from "@standard-schema/spec";
12
+ import { QueryClient } from "@tanstack/query-core";
13
+ //#region src/react/hooks.d.ts
14
+ interface BetterSupabaseProviderProps {
15
+ readonly client: ClientLike;
16
+ /** better-supabase queries are removed when the user signs out or changes. */
17
+ readonly queryClient?: QueryClient;
18
+ readonly children?: ReactNode;
19
+ }
20
+ /** Provides the better-supabase client to the hooks. */
21
+ declare function BetterSupabaseProvider(props: BetterSupabaseProviderProps): ReactNode;
22
+ /** The session state for UI: `loading`, `signed-out` or `signed-in` with the user and claims. */
23
+ declare function useAuth(): AuthSnapshot;
24
+ declare function useSupabase(): SupabaseClient;
25
+ interface BetterHooks<B extends ClientLike> {
26
+ /** Repositories bound to the current session. Re-renders when the user changes. */
27
+ readonly useDb: () => B["db"];
28
+ /** TanStack Query option factories: `useQuery(useQueries().customers.findMany())`. */
29
+ readonly useQueries: () => B["queries"];
30
+ readonly useSupabase: () => SupabaseClient;
31
+ readonly useAuth: () => AuthSnapshot;
32
+ /** `useSession()` typed by the client's `betterSupabase.claims(schema)` and `betterSupabase.userMetadata(schema)`. */
33
+ readonly useSession: () => AuthSession<ClaimsOf<B>, ProfileOf<B>>;
34
+ }
35
+ /** The claims type of a client's `betterSupabase.claims(schema)`, `unknown` without one. */
36
+ type ClaimsOf<B extends ClientLike> = B["betterSupabase"] extends {
37
+ readonly claimsSchema: StandardSchemaV1<unknown, infer C> | undefined;
38
+ } ? C : unknown;
39
+ /** The profile type of a client's `betterSupabase.userMetadata(schema)`, `unknown` without one. */
40
+ type ProfileOf<B extends ClientLike> = B["betterSupabase"] extends {
41
+ readonly userMetadataSchema: StandardSchemaV1<unknown, infer P> | undefined;
42
+ } ? P : unknown;
43
+ /**
44
+ * Hooks typed for your schema.
45
+ *
46
+ * ```ts
47
+ * export const { useDb, useQueries, useAuth } = createHooks<typeof bs>();
48
+ * ```
49
+ */
50
+ declare function createHooks<B extends ClientLike>(): BetterHooks<B>;
51
+ /**
52
+ * Subscribes to a topic while mounted. Pass `null` values to pause. It
53
+ * resubscribes when the topic or the signed-in user changes.
54
+ *
55
+ * ```ts
56
+ * useBroadcast(customersTopic, organizationId ? { organizationId } : null, {}, { invalidate: ['customers'] });
57
+ * ```
58
+ */
59
+ declare function useBroadcast<P extends string, E extends EventSchemas>(topic: Topic<P, E>, values: TemplateValues<P> | null | undefined, handlers?: TopicHandlers<E>, options?: BroadcastOptions): SubscriptionStatus;
60
+ /**
61
+ * Keeps a query fresh: invalidates every cached query that read a table the
62
+ * spec touches whenever one of them changes. Pass `null` to pause. It
63
+ * resubscribes when the spec, tenant or user changes.
64
+ *
65
+ * ```ts
66
+ * const spec = betterSupabase.spec.customers.findMany({ include: { notes: true } });
67
+ * const { data } = useQuery(q.$spec(spec));
68
+ * useLiveQuery(spec);
69
+ * ```
70
+ */
71
+ declare function useLiveQuery(spec: QuerySpec | null | undefined, options?: LiveQueryHookOptions): SubscriptionStatus;
72
+ interface LiveCount {
73
+ /** `undefined` until the first count arrives. */
74
+ readonly count: number | undefined;
75
+ readonly status: SubscriptionStatus;
76
+ /** The last failed refetch; the previous count stays. */
77
+ readonly error: DbError | undefined;
78
+ }
79
+ /**
80
+ * A count that stays current: refetches only the `count` spec (a HEAD
81
+ * request) after each debounced change to a table it reads, and after the
82
+ * channel rejoins. Takes a spec or a `bs.liveCount()` seed; pass `null` to
83
+ * pause. Doesn't need a `QueryClient`.
84
+ *
85
+ * ```tsx
86
+ * const { count } = useLiveCount(seed); // seed = await bs.liveCount(spec)
87
+ * ```
88
+ */
89
+ declare function useLiveCount(source: QuerySpec<string, "count", number> | LiveCountSeed | null | undefined, options?: LiveCountHookOptions): LiveCount;
90
+ //#endregion
91
+ //#region src/react/actions.d.ts
92
+ interface ActionHandle<I, T> {
93
+ /** Runs the action in a transition; resolves with its result. */
94
+ run(input: I): Promise<ActionResultOf<T>>;
95
+ /** True while a run is in flight, including the router update it causes. */
96
+ readonly pending: boolean;
97
+ /** The inputs of the runs in flight, e.g. to dim one table row. */
98
+ readonly pendingInputs: readonly I[];
99
+ /** The input of the latest run in flight. */
100
+ readonly pendingInput: I | undefined;
101
+ /** The data of the last successful run. */
102
+ readonly data: T | undefined;
103
+ /** The error of the last run, until the next one starts. */
104
+ readonly error: DbError | undefined;
105
+ reset(): void;
106
+ }
107
+ /**
108
+ * Calls a Server Action from an event handler: tracks pending inputs and the
109
+ * last result, and calls `onSuccess` or `onError`.
110
+ *
111
+ * ```tsx
112
+ * const remove = useAction(removeMember, { onError: (e) => toast.error(message(e)) });
113
+ * <Button disabled={remove.pendingInputs.some((p) => p.userId === id)} onClick={() => remove.run({ userId: id })} />
114
+ * ```
115
+ */
116
+ declare function useAction<I, T>(action: (input: I) => Promise<ActionResultOf<T>>, options?: UseActionOptions<ActionInputOf<I>, T>): ActionHandle<ActionInputOf<I>, T>;
117
+ interface UseActionFormOptions<T> {
118
+ readonly onSuccess?: (data: T, form: HTMLFormElement) => void;
119
+ readonly onError?: (error: DbError, form: HTMLFormElement) => void;
120
+ /** Clear the fields after a successful run. Defaults to true. */
121
+ readonly resetOnSuccess?: boolean;
122
+ }
123
+ interface ActionForm<T> {
124
+ /** Spread on the `<form>`. */
125
+ readonly formProps: {
126
+ readonly onSubmit: (event: SubmitEvent<HTMLFormElement>) => void;
127
+ };
128
+ readonly pending: boolean;
129
+ readonly data: T | undefined;
130
+ readonly error: DbError | undefined;
131
+ /** The first message per top-level field of a `validation` error. */
132
+ readonly fieldErrors: Readonly<Partial<Record<string, string>>>;
133
+ reset(): void;
134
+ }
135
+ /**
136
+ * A `<form>` that submits `FormData` to a Server Action. Fields keep what
137
+ * the user typed when the action fails (a `<form action>` resets them) and
138
+ * clear only on success.
139
+ *
140
+ * ```tsx
141
+ * const form = useActionForm(createCustomer, { onSuccess: () => toast.success('Saved') });
142
+ * <form {...form.formProps}>
143
+ * <Input name="name" aria-invalid={form.fieldErrors.name !== undefined} />
144
+ * </form>
145
+ * ```
146
+ */
147
+ declare function useActionForm<T>(action: (input: FormData) => Promise<ActionResultOf<T>>, options?: UseActionFormOptions<T>): ActionForm<T>;
148
+ //#endregion
149
+ //#region src/react/presence.d.ts
150
+ interface PresenceHookOptions<I> {
151
+ /**
152
+ * The state this client shares while mounted. It is tracked after the
153
+ * join and tracked again when its JSON changes; `null` stays untracked.
154
+ */
155
+ readonly state?: I | null;
156
+ /** A supabase-js client for apps without `<BetterSupabaseProvider>`. */
157
+ readonly client?: SupabaseClient;
158
+ }
159
+ interface Presence<I, O> {
160
+ /** Everyone on the topic, this client included, from the last sync. */
161
+ readonly members: readonly PresenceMember<O>[];
162
+ readonly status: SubscriptionStatus;
163
+ /** Shares a state now; the `state` option tracks one for you. */
164
+ readonly track: (state: I) => Promise<DbError | undefined>;
165
+ readonly untrack: () => Promise<DbError | undefined>;
166
+ }
167
+ /** The parts of a `defineTopic(..., { presence })` topic the hook uses. */
168
+ interface PresenceTopic<P extends string, I, O> {
169
+ topic(values: TemplateValues<P>): string;
170
+ match(topic: string): TemplateValues<P> | null;
171
+ subscribe(client: RealtimeClient, values: TemplateValues<P>, handlers: Readonly<Record<string, never>>, options?: SubscribeOptions & PresenceOptions<O>): PresenceSubscription<I, O>;
172
+ }
173
+ /**
174
+ * Joins a presence topic while mounted and returns who is on it. Pass
175
+ * `null` values to pause. It rejoins when the topic or the user changes.
176
+ *
177
+ * ```tsx
178
+ * const { members } = usePresence(roomTopic, { roomId }, { state: { name } });
179
+ * ```
180
+ */
181
+ declare function usePresence<P extends string, I, O>(topic: PresenceTopic<P, I, O>, values: TemplateValues<P> | null | undefined, options?: PresenceHookOptions<I>): Presence<I, O>;
182
+ //#endregion
183
+ //#region src/react/search.d.ts
184
+ interface DebouncedSearchOptions {
185
+ /** Defaults to 250 ms. */
186
+ readonly delayMs?: number;
187
+ /** Shorter terms count as no search. Defaults to 1. */
188
+ readonly minLength?: number;
189
+ }
190
+ interface DebouncedSearch {
191
+ /** What the input shows; updates on every keystroke. */
192
+ readonly value: string;
193
+ readonly setValue: (value: string) => void;
194
+ /** The trimmed value once typing pauses, or `undefined` below `minLength`. */
195
+ readonly term: string | undefined;
196
+ /** `term` with `%` and `_` escaped and wrapped in `%`, for `like` and `ilike`. */
197
+ readonly pattern: string | undefined;
198
+ /** `value` changed and `term` hasn't caught up yet. */
199
+ readonly pending: boolean;
200
+ }
201
+ /**
202
+ * A search box's value, debounced. Pass `term` to `contains` (which
203
+ * escapes it) or `pattern` to `ilike`; both are `undefined` while empty.
204
+ *
205
+ * ```tsx
206
+ * const search = useDebouncedSearch();
207
+ * useQuery(q.customers.findMany({ where: search.term ? { name: { contains: search.term } } : {} }));
208
+ * ```
209
+ */
210
+ declare function useDebouncedSearch(initial?: string, options?: DebouncedSearchOptions): DebouncedSearch;
211
+ //#endregion
212
+ //#region src/react/storage.d.ts
213
+ /** The part of a connected bucket `useSignedUrl` calls. */
214
+ interface SignedUrlSource<T> {
215
+ signedUrl(target: T, options?: UrlOptions): AsyncResult<string>;
216
+ }
217
+ interface SignedUrl {
218
+ /** `undefined` until the first URL arrives, and while paused. */
219
+ readonly url: string | undefined;
220
+ readonly error: DbError | undefined;
221
+ readonly loading: boolean;
222
+ }
223
+ /**
224
+ * A signed URL for an object, signed again before it expires. Pass `null`
225
+ * as the target to pause. Connect the bucket with `cacheSignedUrls: true`
226
+ * so components showing the same object share one URL.
227
+ *
228
+ * ```tsx
229
+ * const { url } = useSignedUrl(avatars, user ? { userId: user.id } : null, { ttl: 'hour' });
230
+ * ```
231
+ */
232
+ declare function useSignedUrl<T>(bucket: SignedUrlSource<T>, target: T | null | undefined, options?: UrlOptions): SignedUrl;
233
+ /** The part of a connected bucket `useUpload` calls. */
234
+ interface UploadTarget<T, R> {
235
+ upload(target: T, body: UploadBody, options?: UploadOptions): AsyncResult<R>;
236
+ }
237
+ type UploadStatus = "idle" | "uploading" | "done" | "error";
238
+ interface Upload<T, R> {
239
+ readonly status: UploadStatus;
240
+ /** 0 to 1 while uploading; see `UploadOptions.onProgress` for when it is exact. */
241
+ readonly progress: number;
242
+ readonly data: R | undefined;
243
+ readonly error: DbError | undefined;
244
+ /** Starts an upload; a new one aborts the one in flight. */
245
+ readonly upload: (target: T, body: UploadBody, options?: Omit<UploadOptions, "signal" | "onProgress">) => Promise<Result<R>>;
246
+ /** Cancels the upload in flight. */
247
+ readonly abort: () => void;
248
+ /** Back to `idle`. */
249
+ readonly reset: () => void;
250
+ }
251
+ interface UseUploadOptions<R> {
252
+ readonly onSuccess?: (data: R) => void;
253
+ readonly onError?: (error: DbError) => void;
254
+ }
255
+ /**
256
+ * Uploads to a connected bucket with progress, abort and status state.
257
+ * Unmounting aborts the upload in flight.
258
+ *
259
+ * ```tsx
260
+ * const avatar = useUpload(avatars, { onSuccess: ({ path }) => save(path) });
261
+ * <input type="file" onChange={(e) => avatar.upload({ userId }, e.target.files[0], { upsert: true })} />
262
+ * <progress value={avatar.progress} />
263
+ * ```
264
+ */
265
+ declare function useUpload<T, R>(bucket: UploadTarget<T, R>, options?: UseUploadOptions<R>): Upload<T, R>;
266
+ //#endregion
267
+ export { useLiveCount as A, BetterSupabaseProviderProps as C, createHooks as D, ProfileOf as E, useSupabase as M, useAuth as O, BetterSupabaseProvider as S, LiveCount as T, ActionHandle as _, UploadTarget as a, useActionForm as b, useUpload as c, useDebouncedSearch as d, Presence as f, ActionForm as g, usePresence as h, UploadStatus as i, useLiveQuery as j, useBroadcast as k, DebouncedSearch as l, PresenceTopic as m, SignedUrlSource as n, UseUploadOptions as o, PresenceHookOptions as p, Upload as r, useSignedUrl as s, SignedUrl as t, DebouncedSearchOptions as u, UseActionFormOptions as v, ClaimsOf as w, BetterHooks as x, useAction as y };