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,30 +1,8 @@
1
- import { _ as DbError } from "./executor-BunPOO-k.js";
2
- import { i as InvalidReason, r as AuthState } from "./resolve-C15TJq77.js";
3
- import { n as AmrEntry, s as Impersonator, t as Aal } from "./mfa-CusDgPaD.js";
1
+ import { b as DbError } from "./result-D7y2fT87.js";
2
+ import { i as InvalidReason, r as AuthState } from "./resolve-KW8nCeL6.js";
3
+ import { n as AmrEntry, s as Impersonator, t as Aal } from "./mfa-Daak8ukG.js";
4
+ import { n as SessionActor, r as SessionDelegation } from "./actor-CQTlc1Hh.js";
4
5
  import { JWTClaims, UserClaims } from "@supabase/server";
5
- //#region src/auth/actor.d.ts
6
- /** One level of an RFC 8693 `act` chain: who acts, and who acted before it. */
7
- interface ActClaim {
8
- readonly sub: string;
9
- readonly act?: ActClaim;
10
- readonly [claim: string]: unknown;
11
- }
12
- /**
13
- * The app acting for the user: the outermost `sub` of an RFC 8693 `act`
14
- * chain (prior actors stay on `chain`), else the OAuth `client_id` of a
15
- * Supabase OAuth server token.
16
- */
17
- interface SessionActor {
18
- readonly id: string;
19
- readonly kind: "oauth-client";
20
- readonly chain?: ActClaim;
21
- }
22
- /** What the user delegated to the actor: the token's OAuth `scope`. */
23
- interface SessionDelegation {
24
- readonly scopes: readonly string[];
25
- readonly chain?: ActClaim;
26
- }
27
- //#endregion
28
6
  //#region src/auth/view.d.ts
29
7
  /**
30
8
  * The verified caller as plain data: no token, no clients. Safe to return
@@ -32,6 +10,12 @@ interface SessionDelegation {
32
10
  */
33
11
  type AuthSession<C = unknown, P = unknown> = {
34
12
  readonly kind: "user";
13
+ /**
14
+ * Read from the verified claims (`sub`, `email`, `role`,
15
+ * `app_metadata`, `user_metadata`), never from the user object in the
16
+ * cookie, so it is the same with `tokens-only` cookies. Call
17
+ * `auth.getUser()` when a flow must see a revoked or changed user.
18
+ */
35
19
  readonly user: UserClaims;
36
20
  /**
37
21
  * The verified JWT payload, including custom access token hook claims,
@@ -50,23 +34,42 @@ type AuthSession<C = unknown, P = unknown> = {
50
34
  readonly aal: Aal;
51
35
  /**
52
36
  * Signed in with `signInAnonymously()` (the `is_anonymous` claim). Guards
53
- * refuse these users unless `allow` lists `'anonymous'`.
37
+ * refuse these users unless `allow` lists `'anonymous'`; `'anon'` means
38
+ * no session and never admits them.
54
39
  */
55
40
  readonly anonymous: boolean;
56
41
  /** How the user signed in (`password`, `totp`, `sso/saml`, ...). */
57
42
  readonly amr: readonly AmrEntry[];
58
- /** Set when an admin acts as this user (the `act` claim), for a banner. */
43
+ /**
44
+ * Set when an admin acts as this user in a support session or an
45
+ * impersonated session (`act.kind`), for a banner. Matches `actor`.
46
+ */
59
47
  readonly impersonator?: Impersonator;
60
48
  /**
61
- * The OAuth client or agent acting for the user (`client_id`, or the
62
- * outermost `sub` of the `act` chain), as PermDock's `actorOf` reads it.
49
+ * Who acts for the user: an OAuth client or agent (`client_id`, or an
50
+ * `act` chain without `kind`), a support session or an impersonated
51
+ * session, read from the `act` and `client_id` claims.
63
52
  */
64
53
  readonly actor?: SessionActor;
65
- /** The scopes the user granted `actor`, plus its `act` chain. Set only with `actor`. */
54
+ /**
55
+ * The scopes the user granted an `oauth-client` actor, plus its `act`
56
+ * chain. Never set for a support or impersonated session.
57
+ */
66
58
  readonly delegation?: SessionDelegation;
67
59
  } | {
68
60
  readonly kind: "service";
69
61
  readonly keyName: string;
62
+ } | {
63
+ readonly kind: "apiKey";
64
+ readonly keyId: string;
65
+ readonly name: string;
66
+ readonly organizationId?: string;
67
+ readonly userId?: string;
68
+ readonly scopes: readonly string[];
69
+ /** Seconds since epoch, when the key was created. */
70
+ readonly createdAt?: number;
71
+ /** The user who created the key. */
72
+ readonly createdBy?: string;
70
73
  } | {
71
74
  readonly kind: "anon";
72
75
  readonly reason: AnonReason;
@@ -81,4 +84,4 @@ type AnonReason = Extract<AuthState, {
81
84
  /** Drops the token from an `AuthState`, leaving only serializable fields. */
82
85
  declare function toSession<C, P>(auth: AuthState<C, P>): AuthSession<C, P>;
83
86
  //#endregion
84
- export { SessionDelegation as a, SessionActor as i, toSession as n, ActClaim as r, AuthSession as t };
87
+ export { toSession as n, AuthSession as t };
@@ -0,0 +1,141 @@
1
+ import { b as DbError } from "../result-D7y2fT87.js";
2
+ import { it as QuerySpec } from "../define-CJJkkr1-.js";
3
+ import { n as TemplateValues } from "../template-CwO38Do8.js";
4
+ import { t as AuthSnapshot } from "../bind-Bu_ZNa3W.js";
5
+ import { t as AuthSession } from "../view-DbxLNu8L.js";
6
+ import { S as Topic, f as PresenceMember, u as EventSchemas, w as TopicHandlers, x as SubscriptionStatus } from "../index-DunNRdnT.js";
7
+ import { t as SupportView } from "../support-view-33Oi07TT.js";
8
+ import { a as BroadcastOptions, c as LiveCountSource, d as PresenceTopic, f as UseActionOptions, i as ActionState, l as LiveQueryHookOptions, n as ActionInputOf, o as ClientLike, r as ActionResultOf, s as LiveCountHookOptions, t as fieldErrorsOf, u as PresenceHookOptions } from "../field-errors-BFOa7WhB.js";
9
+ import { SupabaseClient } from "@supabase/supabase-js";
10
+ import { App, ComputedRef, MaybeRefOrGetter, Ref } from "vue";
11
+ import { StandardSchemaV1 } from "@standard-schema/spec";
12
+ import { QueryClient } from "@tanstack/query-core";
13
+ //#region src/vue/index.d.ts
14
+ export interface BetterSupabaseVueOptions {
15
+ /** better-supabase queries are reset when the user signs out or changes. */
16
+ readonly queryClient?: QueryClient;
17
+ }
18
+ export interface BetterSupabasePlugin {
19
+ install(app: App): void;
20
+ }
21
+ /**
22
+ * The Vue plugin: provides the client to the composables and, with a
23
+ * `queryClient`, resets better-supabase queries when the caller changes.
24
+ *
25
+ * ```ts
26
+ * app.use(VueQueryPlugin, { queryClient }).use(betterSupabase(bs, { queryClient }));
27
+ * ```
28
+ */
29
+ export declare function betterSupabase(client: ClientLike, options?: BetterSupabaseVueOptions): BetterSupabasePlugin;
30
+ /** The session state for UI: `loading`, `signed-out` or `signed-in` with the user and claims. */
31
+ export declare function useAuth(): Readonly<Ref<AuthSnapshot>>;
32
+ export declare function useSupabase(): SupabaseClient;
33
+ /**
34
+ * Shares a server-verified session (from `useAsyncData`, a loader or a
35
+ * prop) with the components below.
36
+ */
37
+ export declare function provideSession(session: MaybeRefOrGetter<AuthSession>): void;
38
+ /** The session from the nearest `provideSession()`. */
39
+ export declare function useSession<C = unknown, P = unknown>(): ComputedRef<AuthSession<C, P>>;
40
+ /** The support session the page renders in, or `undefined` for a normal session. */
41
+ export declare function useSupportSession(): ComputedRef<SupportView | undefined>;
42
+ /** The claims type of a client's `betterSupabase.claims(schema)`, `unknown` without one. */
43
+ export type ClaimsOf<B extends ClientLike> = B["betterSupabase"] extends {
44
+ readonly claimsSchema: StandardSchemaV1<unknown, infer C> | undefined;
45
+ } ? C : unknown;
46
+ /** The profile type of a client's `betterSupabase.userMetadata(schema)`, `unknown` without one. */
47
+ export type ProfileOf<B extends ClientLike> = B["betterSupabase"] extends {
48
+ readonly userMetadataSchema: StandardSchemaV1<unknown, infer P> | undefined;
49
+ } ? P : unknown;
50
+ export interface BetterComposables<B extends ClientLike> {
51
+ /** Repositories bound to the current session. */
52
+ readonly useDb: () => B["db"];
53
+ /** TanStack Query option factories: `useQuery(useQueries().customers.findMany())`. */
54
+ readonly useQueries: () => B["queries"];
55
+ readonly useSupabase: () => SupabaseClient;
56
+ readonly useAuth: () => Readonly<Ref<AuthSnapshot>>;
57
+ readonly useSession: () => ComputedRef<AuthSession<ClaimsOf<B>, ProfileOf<B>>>;
58
+ }
59
+ /**
60
+ * Composables typed for your schema.
61
+ *
62
+ * ```ts
63
+ * export const { useDb, useQueries, useAuth } = createBindings<typeof bs>();
64
+ * ```
65
+ */
66
+ export declare function createBindings<B extends ClientLike>(): BetterComposables<B>;
67
+ /**
68
+ * Subscribes to a topic while the component is mounted. A `null` value
69
+ * pauses. It resubscribes when the topic values or the signed-in user change.
70
+ *
71
+ * ```ts
72
+ * useBroadcast(customersTopic, () => ({ organizationId: org.value }), {}, { invalidate: ['customers'] });
73
+ * ```
74
+ */
75
+ export declare function useBroadcast<P extends string, E extends EventSchemas>(topic: Topic<P, E>, values: MaybeRefOrGetter<TemplateValues<P> | null | undefined>, handlers?: TopicHandlers<E>, options?: BroadcastOptions): Readonly<Ref<SubscriptionStatus>>;
76
+ /**
77
+ * Keeps a query fresh: invalidates every cached query that read a table the
78
+ * spec touches whenever one of them changes. A `null` spec pauses.
79
+ *
80
+ * ```ts
81
+ * const spec = computed(() => betterSupabase.spec.customers.findMany({ where: { orgId: org.value } }));
82
+ * useLiveQuery(spec);
83
+ * ```
84
+ */
85
+ export declare function useLiveQuery(spec: MaybeRefOrGetter<QuerySpec | null | undefined>, options?: LiveQueryHookOptions): Readonly<Ref<SubscriptionStatus>>;
86
+ export interface LiveCount {
87
+ /** `undefined` until the first count arrives. */
88
+ readonly count: number | undefined;
89
+ readonly status: SubscriptionStatus;
90
+ /** The last failed refetch; the previous count stays. */
91
+ readonly error: DbError | undefined;
92
+ }
93
+ /**
94
+ * A count that stays current: refetches only the `count` spec after each
95
+ * debounced change to a table it reads. Takes a spec or a `bs.liveCount()`
96
+ * seed; `null` pauses. The returned object's fields are reactive.
97
+ *
98
+ * ```ts
99
+ * const unread = useLiveCount(() => betterSupabase.spec.messages.count({ where: { read: false } }));
100
+ * // {{ unread.count }}
101
+ * ```
102
+ */
103
+ export declare function useLiveCount(source: MaybeRefOrGetter<LiveCountSource>, options?: LiveCountHookOptions): LiveCount;
104
+ export interface Presence<I, O> {
105
+ /** Everyone on the topic, this client included, from the last sync. */
106
+ readonly members: readonly PresenceMember<O>[];
107
+ readonly status: SubscriptionStatus;
108
+ /** Shares a state now; the `state` option tracks one for you. */
109
+ readonly track: (state: I) => Promise<DbError | undefined>;
110
+ readonly untrack: () => Promise<DbError | undefined>;
111
+ }
112
+ export interface VuePresenceOptions<I> extends Omit<PresenceHookOptions<I>, "state"> {
113
+ readonly state?: MaybeRefOrGetter<I | null | undefined>;
114
+ }
115
+ /**
116
+ * Joins a presence topic while mounted and returns who is on it. A `null`
117
+ * value pauses. The returned object's fields are reactive.
118
+ *
119
+ * ```ts
120
+ * const room = usePresence(roomTopic, () => ({ roomId: id.value }), { state: () => ({ name: name.value }) });
121
+ * ```
122
+ */
123
+ export declare function usePresence<P extends string, I, O>(topic: PresenceTopic<P, I, O>, values: MaybeRefOrGetter<TemplateValues<P> | null | undefined>, options?: VuePresenceOptions<I>): Presence<I, O>;
124
+ export interface ActionHandle<I, T> extends ActionState<I, T> {
125
+ /** Runs the action; resolves with its result. */
126
+ readonly run: (input: I) => Promise<ActionResultOf<T>>;
127
+ readonly reset: () => void;
128
+ }
129
+ /**
130
+ * Calls a server action from an event handler: tracks pending inputs and
131
+ * the last result, and calls `onSuccess` or `onError`. The returned
132
+ * object's fields are reactive.
133
+ *
134
+ * ```ts
135
+ * const remove = useAction(removeMember, { onError: (e) => toast.error(e.message) });
136
+ * // <button :disabled="remove.pending" @click="remove.run({ userId })">
137
+ * ```
138
+ */
139
+ export declare function useAction<I, T>(action: (input: I) => Promise<ActionResultOf<T>>, options?: UseActionOptions<ActionInputOf<I>, T>): ActionHandle<ActionInputOf<I>, T>;
140
+ //#endregion
141
+ export { type ActionInputOf, type ActionResultOf, type ActionState, type AuthSession, type AuthSnapshot, type BroadcastOptions, type ClientLike, type LiveCountHookOptions, type LiveCountSource, type LiveQueryHookOptions, type PresenceHookOptions, type PresenceTopic, type SupportView, type UseActionOptions, fieldErrorsOf };
@@ -0,0 +1,362 @@
1
+ import { t as clearOnUserChange } from "../user-change-XzvgafU4.js";
2
+ import { t as supportOf } from "../support-view-g4YLBeqX.js";
3
+ import { t as fieldErrorsOf } from "../field-errors-VF1yb8yI.js";
4
+ import { a as createActionRunner, c as liveKey, d as shownCount, f as startBroadcast, i as countSource, l as notJoined, m as startLiveQuery, n as assertInvalidateClient, o as joinPresence, p as startLiveCount, r as callerOf, s as keyed, t as NO_COUNT, u as plainCaller } from "../client-CI0Z2zWX.js";
5
+ import { computed, getCurrentInstance, getCurrentScope, inject, onMounted, onScopeDispose, provide, readonly, shallowRef, toValue, watch } from "vue";
6
+ //#region src/vue/index.ts
7
+ const CLIENT = Symbol("better-supabase");
8
+ const SESSION = Symbol("better-supabase-session");
9
+ /**
10
+ * The Vue plugin: provides the client to the composables and, with a
11
+ * `queryClient`, resets better-supabase queries when the caller changes.
12
+ *
13
+ * ```ts
14
+ * app.use(VueQueryPlugin, { queryClient }).use(betterSupabase(bs, { queryClient }));
15
+ * ```
16
+ */
17
+ function betterSupabase(client, options = {}) {
18
+ return { install(app) {
19
+ const auth = shallowRef(client.auth.current());
20
+ const stops = [client.auth.subscribe(() => {
21
+ auth.value = client.auth.current();
22
+ })];
23
+ if (options.queryClient) stops.push(clearOnUserChange(options.queryClient, client.auth));
24
+ app.onUnmount(() => {
25
+ for (const stop of stops) stop();
26
+ });
27
+ app.provide(CLIENT, {
28
+ client,
29
+ queryClient: options.queryClient,
30
+ auth: readonly(auth)
31
+ });
32
+ } };
33
+ }
34
+ function useContext() {
35
+ const context = inject(CLIENT, null);
36
+ if (!context) throw new Error("better-supabase: install the plugin with app.use(betterSupabase(bs))");
37
+ return context;
38
+ }
39
+ /**
40
+ * Runs `start` on mount in a component, at once elsewhere (an effect
41
+ * scope), and never during server rendering.
42
+ */
43
+ function onClient(start) {
44
+ if (getCurrentInstance()) onMounted(start);
45
+ else start();
46
+ }
47
+ /** The session state for UI: `loading`, `signed-out` or `signed-in` with the user and claims. */
48
+ function useAuth() {
49
+ return useContext().auth;
50
+ }
51
+ function useSupabase() {
52
+ return useContext().client.supabase;
53
+ }
54
+ /**
55
+ * Shares a server-verified session (from `useAsyncData`, a loader or a
56
+ * prop) with the components below.
57
+ */
58
+ function provideSession(session) {
59
+ provide(SESSION, session);
60
+ }
61
+ /** The session from the nearest `provideSession()`. */
62
+ function useSession() {
63
+ const session = inject(SESSION, null);
64
+ if (session === null) throw new Error("better-supabase: useSession() needs provideSession(session) in a parent component");
65
+ return computed(() => toValue(session));
66
+ }
67
+ /** The support session the page renders in, or `undefined` for a normal session. */
68
+ function useSupportSession() {
69
+ const session = useSession();
70
+ return computed(() => supportOf(session.value));
71
+ }
72
+ /**
73
+ * Composables typed for your schema.
74
+ *
75
+ * ```ts
76
+ * export const { useDb, useQueries, useAuth } = createBindings<typeof bs>();
77
+ * ```
78
+ */
79
+ function createBindings() {
80
+ return {
81
+ useDb: () => useContext().client.db,
82
+ useQueries: () => useContext().client.queries,
83
+ useSupabase,
84
+ useAuth,
85
+ useSession
86
+ };
87
+ }
88
+ /** The caller a subscription runs as: the plugin's auth, or a plain client's. */
89
+ function useCaller(context, client) {
90
+ if (context && client === void 0) return computed(() => callerOf(context.auth.value));
91
+ const supabase = client ?? context?.client.supabase;
92
+ if (!supabase) throw new Error("better-supabase: no supabase client");
93
+ const store = plainCaller(supabase);
94
+ const caller = shallowRef(store.current());
95
+ onClient(() => {
96
+ const stop = store.subscribe(() => {
97
+ caller.value = store.current();
98
+ });
99
+ onScopeDispose(stop);
100
+ });
101
+ return caller;
102
+ }
103
+ function supabaseFor(hook, context, client) {
104
+ const supabase = client ?? context?.client.supabase;
105
+ if (!supabase) throw new Error(`better-supabase: ${hook} needs app.use(betterSupabase(bs)) or { client: supabase }`);
106
+ return supabase;
107
+ }
108
+ /**
109
+ * Subscribes to a topic while the component is mounted. A `null` value
110
+ * pauses. It resubscribes when the topic values or the signed-in user change.
111
+ *
112
+ * ```ts
113
+ * useBroadcast(customersTopic, () => ({ organizationId: org.value }), {}, { invalidate: ['customers'] });
114
+ * ```
115
+ */
116
+ function useBroadcast(topic, values, handlers, options) {
117
+ const context = inject(CLIENT, null);
118
+ const supabase = supabaseFor("useBroadcast", context, options?.client);
119
+ const queryClient = options?.queryClient ?? context?.queryClient;
120
+ assertInvalidateClient("useBroadcast", options, queryClient);
121
+ const caller = useCaller(context, options?.client);
122
+ const status = shallowRef("closed");
123
+ const run = keyed();
124
+ const key = computed(() => {
125
+ const current = toValue(values);
126
+ if (!current || caller.value.status === "loading") return null;
127
+ return JSON.stringify([topic.topic(current), caller.value.userId]);
128
+ });
129
+ onClient(() => {
130
+ watch(key, (next) => {
131
+ run.update(next, () => {
132
+ const current = toValue(values);
133
+ if (!current) return;
134
+ return startBroadcast({
135
+ supabase,
136
+ topic,
137
+ name: topic.topic(current),
138
+ latest: () => ({
139
+ handlers,
140
+ options
141
+ }),
142
+ queryClient,
143
+ onStatus: (next) => {
144
+ status.value = next;
145
+ }
146
+ });
147
+ });
148
+ }, { immediate: true });
149
+ onScopeDispose(run.stop);
150
+ });
151
+ return readonly(status);
152
+ }
153
+ /**
154
+ * Keeps a query fresh: invalidates every cached query that read a table the
155
+ * spec touches whenever one of them changes. A `null` spec pauses.
156
+ *
157
+ * ```ts
158
+ * const spec = computed(() => betterSupabase.spec.customers.findMany({ where: { orgId: org.value } }));
159
+ * useLiveQuery(spec);
160
+ * ```
161
+ */
162
+ function useLiveQuery(spec, options = {}) {
163
+ const { client, queryClient, auth } = useContext();
164
+ const status = shallowRef("closed");
165
+ const run = keyed();
166
+ let joined = null;
167
+ const key = computed(() => {
168
+ const current = toValue(spec);
169
+ if (current && !queryClient) throw new Error("better-supabase: useLiveQuery needs betterSupabase(bs, { queryClient })");
170
+ return liveKey(client, current, auth.value, options);
171
+ });
172
+ onClient(() => {
173
+ watch(key, (next) => {
174
+ run.update(next, () => {
175
+ const current = toValue(spec);
176
+ if (!current || !queryClient || next === null) return;
177
+ const resumed = joined === next;
178
+ joined = next;
179
+ return startLiveQuery({
180
+ client,
181
+ queryClient,
182
+ spec: current,
183
+ auth: auth.value,
184
+ options,
185
+ resumed,
186
+ onStatus: (value) => {
187
+ status.value = value;
188
+ }
189
+ });
190
+ });
191
+ }, { immediate: true });
192
+ onScopeDispose(run.stop);
193
+ });
194
+ return readonly(status);
195
+ }
196
+ /**
197
+ * A count that stays current: refetches only the `count` spec after each
198
+ * debounced change to a table it reads. Takes a spec or a `bs.liveCount()`
199
+ * seed; `null` pauses. The returned object's fields are reactive.
200
+ *
201
+ * ```ts
202
+ * const unread = useLiveCount(() => betterSupabase.spec.messages.count({ where: { read: false } }));
203
+ * // {{ unread.count }}
204
+ * ```
205
+ */
206
+ function useLiveCount(source, options = {}) {
207
+ const { client, auth } = useContext();
208
+ const status = shallowRef("closed");
209
+ const state = shallowRef(NO_COUNT);
210
+ const run = keyed();
211
+ let joined = null;
212
+ const parsed = computed(() => countSource(toValue(source), options));
213
+ const key = computed(() => liveKey(client, parsed.value.spec, auth.value, options));
214
+ onClient(() => {
215
+ watch(key, (next) => {
216
+ run.update(next, () => {
217
+ const { spec, initial, seedAt } = parsed.value;
218
+ if (!spec || next === null) return;
219
+ const previous = joined?.key === next ? joined : null;
220
+ joined = {
221
+ key: next,
222
+ at: previous?.at ?? seedAt ?? 0
223
+ };
224
+ return startLiveCount({
225
+ client,
226
+ spec,
227
+ key: next,
228
+ auth: auth.value,
229
+ options,
230
+ immediate: initial === void 0 && !previous,
231
+ since: previous ? previous.at : seedAt,
232
+ onState: (update) => {
233
+ state.value = update(state.value);
234
+ if (joined?.key === next) joined = {
235
+ key: next,
236
+ at: state.value.at
237
+ };
238
+ },
239
+ onStatus: (value) => {
240
+ status.value = value;
241
+ }
242
+ });
243
+ });
244
+ }, { immediate: true });
245
+ onScopeDispose(run.stop);
246
+ });
247
+ const shown = computed(() => shownCount(state.value, key.value, parsed.value));
248
+ return {
249
+ get count() {
250
+ return shown.value.count;
251
+ },
252
+ get status() {
253
+ return status.value;
254
+ },
255
+ get error() {
256
+ return shown.value.error;
257
+ }
258
+ };
259
+ }
260
+ const NO_MEMBERS = [];
261
+ /**
262
+ * Joins a presence topic while mounted and returns who is on it. A `null`
263
+ * value pauses. The returned object's fields are reactive.
264
+ *
265
+ * ```ts
266
+ * const room = usePresence(roomTopic, () => ({ roomId: id.value }), { state: () => ({ name: name.value }) });
267
+ * ```
268
+ */
269
+ function usePresence(topic, values, options = {}) {
270
+ const context = inject(CLIENT, null);
271
+ const supabase = supabaseFor("usePresence", context, options.client);
272
+ const caller = useCaller(context, options.client);
273
+ const members = shallowRef(NO_MEMBERS);
274
+ const status = shallowRef("closed");
275
+ let join;
276
+ const run = keyed();
277
+ const key = computed(() => {
278
+ const current = toValue(values);
279
+ if (!current || caller.value.status === "loading") return null;
280
+ return JSON.stringify([topic.topic(current), caller.value.userId]);
281
+ });
282
+ onClient(() => {
283
+ watch(key, (next) => {
284
+ run.update(next, () => {
285
+ const current = toValue(values);
286
+ if (!current) return;
287
+ const joined = joinPresence(supabase, topic, topic.topic(current), {
288
+ onStatus: (value) => {
289
+ status.value = value;
290
+ },
291
+ onPresence: (value) => {
292
+ members.value = value;
293
+ }
294
+ });
295
+ if (!joined) return;
296
+ join = joined;
297
+ joined.sync(toValue(options.state));
298
+ return () => {
299
+ join = void 0;
300
+ members.value = NO_MEMBERS;
301
+ status.value = "closed";
302
+ joined.leave();
303
+ };
304
+ });
305
+ }, { immediate: true });
306
+ watch(() => JSON.stringify(toValue(options.state)), () => join?.sync(toValue(options.state)));
307
+ onScopeDispose(run.stop);
308
+ });
309
+ return {
310
+ get members() {
311
+ return members.value;
312
+ },
313
+ get status() {
314
+ return status.value;
315
+ },
316
+ track: (state) => join?.track(state) ?? notJoined(),
317
+ untrack: () => join?.untrack() ?? notJoined()
318
+ };
319
+ }
320
+ /**
321
+ * Calls a server action from an event handler: tracks pending inputs and
322
+ * the last result, and calls `onSuccess` or `onError`. The returned
323
+ * object's fields are reactive.
324
+ *
325
+ * ```ts
326
+ * const remove = useAction(removeMember, { onError: (e) => toast.error(e.message) });
327
+ * // <button :disabled="remove.pending" @click="remove.run({ userId })">
328
+ * ```
329
+ */
330
+ function useAction(action, options = {}) {
331
+ const call = action;
332
+ const runner = createActionRunner(() => ({
333
+ action: call,
334
+ options
335
+ }));
336
+ const state = shallowRef(runner.current());
337
+ const stop = runner.subscribe(() => {
338
+ state.value = runner.current();
339
+ });
340
+ if (getCurrentScope()) onScopeDispose(stop);
341
+ return {
342
+ run: runner.run,
343
+ reset: runner.reset,
344
+ get pending() {
345
+ return state.value.pending;
346
+ },
347
+ get pendingInputs() {
348
+ return state.value.pendingInputs;
349
+ },
350
+ get pendingInput() {
351
+ return state.value.pendingInput;
352
+ },
353
+ get data() {
354
+ return state.value.data;
355
+ },
356
+ get error() {
357
+ return state.value.error;
358
+ }
359
+ };
360
+ }
361
+ //#endregion
362
+ export { betterSupabase, createBindings, fieldErrorsOf, provideSession, useAction, useAuth, useBroadcast, useLiveCount, useLiveQuery, usePresence, useSession, useSupabase, useSupportSession };
@@ -0,0 +1,60 @@
1
+ import { f as Result } from "./result-D7y2fT87.js";
2
+ import { L as TableKey, P as SchemaMeta, a as AnyModels, i as AnyFunctions } from "./types-6BdhkmZe.js";
3
+ import { t as BetterSupabase } from "./define-CJJkkr1-.js";
4
+ import { i as ListDefinition } from "./list-query-BRt-zDF7.js";
5
+ import { c as SqliteCompilerOptions, p as SqlitePlan, t as PowerSyncDatabaseLike } from "./executor-CaWigTyR.js";
6
+ import { t as Compiler } from "./compiler-DY_wkj4R.js";
7
+ //#region src/powersync/compiler.d.ts
8
+ declare const sqliteCompiler: Compiler<SqlitePlan>;
9
+ /**
10
+ * Compiles every operation a list definition runs (the page, its count and
11
+ * the facet counts) for SQLite, without a database. Returns the first
12
+ * `unsupported` or `invalid_request` error, so a test or a dev build fails
13
+ * before a native screen does.
14
+ *
15
+ * ```ts
16
+ * expect(await checkSqlite(betterSupabase, customerList)).toEqual({ ok: true, data: undefined });
17
+ * ```
18
+ */
19
+ declare function checkSqlite<M extends AnyModels, D, F extends AnyFunctions, E, T extends TableKey<M>, S extends string, Fa extends string, C extends boolean, P extends "offset" | "cursor">(betterSupabase: BetterSupabase<M, D, F, E>, list: ListDefinition<M, T, E, S, Fa, C, P>, options?: SqliteCompilerOptions): Promise<Result<undefined>>;
20
+ //#endregion
21
+ //#region src/powersync/watch.d.ts
22
+ interface WatchOptions<T> {
23
+ /** SQLite tables whose changes rerun the query (`sqliteTables()` maps app keys). */
24
+ readonly tables: readonly string[];
25
+ /** Called with the first result, then after every change to `tables`. */
26
+ readonly onResult: (result: Result<T>) => void;
27
+ readonly signal?: AbortSignal;
28
+ /** The least time between two runs. Defaults to PowerSync's 30 ms. */
29
+ readonly throttleMs?: number;
30
+ /**
31
+ * Keeps unchanged rows' object identity across runs and skips `onResult`
32
+ * when a run returns what the last one did. Defaults to true.
33
+ */
34
+ readonly structuralSharing?: boolean;
35
+ }
36
+ /**
37
+ * Reruns a repository call whenever PowerSync reports a change to one of
38
+ * `tables`: local writes and synced rows alike. The same call works with
39
+ * lists, aggregates and single rows. Unchanged rows keep their identity
40
+ * between runs, and a run that changes nothing calls no `onResult`. Returns
41
+ * a function that stops it.
42
+ *
43
+ * ```ts
44
+ * const stop = watch(powersync, () => customerList.run(db, query), {
45
+ * tables: ['customers'],
46
+ * onResult: (page) => render(page),
47
+ * });
48
+ * ```
49
+ */
50
+ declare function watch<T>(db: PowerSyncDatabaseLike, query: () => PromiseLike<Result<T>>, options: WatchOptions<T>): () => void;
51
+ /**
52
+ * The SQLite table names of app table keys (`customerTags` to
53
+ * `customer_tags`). Pass the executor's `tableName` when it renames tables,
54
+ * so `watch` listens to the names the queries read.
55
+ */
56
+ declare function sqliteTables(betterSupabase: {
57
+ readonly meta: SchemaMeta;
58
+ }, keys: readonly string[], options?: SqliteCompilerOptions): string[];
59
+ //#endregion
60
+ export { sqliteCompiler as a, checkSqlite as i, sqliteTables as n, watch as r, WatchOptions as t };