better-supabase 0.5.1 → 0.6.1

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 +187 -46
  2. package/dist/access-sql-B0dF-SoF.js +181 -0
  3. package/dist/{actor-DaJjqD5R.d.ts → actor-CQTlc1Hh.d.ts} +1 -1
  4. package/dist/adapter-CHnPkCPd.js +1160 -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 +224 -0
  87. package/dist/blocks/attachments/index.js +234 -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 +259 -0
  97. package/dist/blocks/data-lifecycle/index.js +358 -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-C_A-KEAz.js → doctor-BMqBgM3X.js} +991 -317
  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-4JlOwgWG.js +2 -0
  181. package/dist/cli/gen-DeuDgPxN.js +3100 -0
  182. package/dist/cli/index.d.ts +44 -5
  183. package/dist/cli/index.js +7 -7
  184. package/dist/cli/{init-DMa6M7hV.js → init-C7Xd0Kda.js} +242 -27
  185. package/dist/cli/{introspect-BKlaIu_M.js → introspect-CSnMJ94U.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-Bo_NLT5n.js → run-C8tnlHSb.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-BCtlgDQx.js → version-C_4JwyiM.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-CLqs9-OA.js +130 -0
  209. package/dist/composite-pSfeJNce.d.ts +146 -0
  210. package/dist/config/index.d.ts +6 -4
  211. package/dist/config/index.js +5 -5
  212. package/dist/{config-Bv7gvfzC.d.ts → config-D44Y7PAv.d.ts} +406 -214
  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-CFPX0Qft.d.ts → ended-jLfvw8h-.d.ts} +20 -2
  231. package/dist/{entitlements-BiJZ4t49.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-CdPDPpFs.d.ts +25 -0
  258. package/dist/framework-xjTBoyBB.js +51 -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-BgSHAYLf.js → impersonation-DcqaTBHx.js} +21 -6
  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-Daak8ukG.d.ts +54 -0
  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-Bn6HNKUe.js → resolve-D_IcnvFd.js} +248 -240
  385. package/dist/{impersonation-BmePsuxz.d.ts → resolve-KW8nCeL6.d.ts} +29 -69
  386. package/dist/{resource-mqfJW4YF.js → resource-BsvzCMlX.js} +4 -4
  387. package/dist/{resource-DNRFP7KR.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 -22
  396. package/dist/server/index.js +46 -14
  397. package/dist/{respond-BR1fJWOB.d.ts → server-C6DWVEVG.d.ts} +237 -85
  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 +313 -212
  413. package/dist/sql/index.js +34924 -6609
  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-view-B8SlToQX.d.ts → support-view-33Oi07TT.d.ts} +1 -1
  430. package/dist/{support-wHnK6zp-.js → support-zIa1URaN.js} +32 -11
  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 +315 -41
  449. package/dist/testing/index.js +1046 -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-DOYTYwHP.js → version-CQt77F3T.js} +1 -1
  465. package/dist/view-BeFcRV6G.js +99 -0
  466. package/dist/{view-CbgObAeb.d.ts → view-DbxLNu8L.d.ts} +22 -5
  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 +461 -20
  485. package/schemas/ai-message-v1.json +258 -0
  486. package/schemas/config-v1.json +1074 -140
  487. package/schemas/doctor-report-v1.json +20 -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 +47 -11
  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-CIdSQZad.js +0 -2
  504. package/dist/cli/gen-CjElD1Vw.js +0 -2241
  505. package/dist/cli/read-sets-VQcPgxU9.js +0 -436
  506. package/dist/cli/sql-CVx-1O8G.js +0 -373
  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/index-CWMDdEr4.d.ts +0 -50
  512. package/dist/index-DOESKG27.d.ts +0 -100
  513. package/dist/index-DmXSxbLi.d.ts +0 -62
  514. package/dist/index-Dp2VDwog.d.ts +0 -161
  515. package/dist/jobs/index.d.ts +0 -226
  516. package/dist/jobs/index.js +0 -1007
  517. package/dist/json-schema-m1fiwKgN.js +0 -208
  518. package/dist/kit-events-CTFDfSwb.js +0 -60
  519. package/dist/kit-transport-B82k1djG.d.ts +0 -33
  520. package/dist/kits-CGLLrNPd.js +0 -157
  521. package/dist/mfa-Cu96oJdw.d.ts +0 -30
  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-B1mZ7CgQ.js +0 -660
  530. package/dist/stats-Bqob3WqT.js +0 -592
  531. package/dist/support-CEPwlw2G.d.ts +0 -89
  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 -122
@@ -0,0 +1,136 @@
1
+ //#region src/blocks/stripe.d.ts
2
+ /**
3
+ * The part of the Stripe SDK (`stripe`, an optional peer) the billing and
4
+ * usage blocks call, typed structurally so the blocks never import it.
5
+ */
6
+ interface StripeClient {
7
+ readonly customers: {
8
+ create(params: {
9
+ readonly email?: string;
10
+ readonly name?: string;
11
+ readonly metadata?: Readonly<Record<string, string>>;
12
+ }, options?: {
13
+ readonly idempotencyKey?: string;
14
+ }): Promise<{
15
+ readonly id: string;
16
+ }>;
17
+ /** Used by `billing.updateCustomer`. */
18
+ update?(id: string, params: Readonly<Record<string, unknown>>): Promise<{
19
+ readonly id: string;
20
+ }>;
21
+ /** Used by `billing.taxIds`. */
22
+ listTaxIds?(id: string, params?: {
23
+ readonly limit?: number;
24
+ }): Promise<{
25
+ readonly data: readonly StripeTaxId[];
26
+ }>;
27
+ /** Used by `billing.addTaxId`. */
28
+ createTaxId?(id: string, params: {
29
+ readonly type: string;
30
+ readonly value: string;
31
+ }): Promise<StripeTaxId>;
32
+ /** Used by `billing.removeTaxId`. */
33
+ deleteTaxId?(id: string, taxId: string): Promise<{
34
+ readonly id: string;
35
+ readonly deleted?: boolean;
36
+ }>;
37
+ };
38
+ readonly checkout: {
39
+ readonly sessions: {
40
+ create(params: Readonly<Record<string, unknown>>, options?: {
41
+ readonly idempotencyKey?: string;
42
+ }): Promise<{
43
+ readonly id: string;
44
+ readonly url: string | null;
45
+ }>;
46
+ };
47
+ };
48
+ readonly billingPortal: {
49
+ readonly sessions: {
50
+ create(params: {
51
+ readonly customer: string;
52
+ readonly return_url?: string;
53
+ }): Promise<{
54
+ readonly id: string;
55
+ readonly url: string;
56
+ }>;
57
+ };
58
+ };
59
+ readonly subscriptionItems: {
60
+ update(id: string, params: {
61
+ readonly quantity: number;
62
+ readonly proration_behavior?: string;
63
+ }, options?: {
64
+ readonly idempotencyKey?: string;
65
+ }): Promise<{
66
+ readonly id: string;
67
+ readonly quantity?: number | null;
68
+ }>;
69
+ };
70
+ readonly subscriptions: {
71
+ cancel(id: string): Promise<{
72
+ readonly id: string;
73
+ }>;
74
+ /** Used by `billing.changePlan` and `billing.cancelAtPeriodEnd`. */
75
+ update?(id: string, params: Readonly<Record<string, unknown>>, options?: {
76
+ readonly idempotencyKey?: string;
77
+ }): Promise<{
78
+ readonly id: string;
79
+ }>;
80
+ };
81
+ /** Used by `billing.voidInvoice` and `billing.markInvoiceUncollectible`. */
82
+ readonly invoices?: {
83
+ voidInvoice(id: string): Promise<{
84
+ readonly id: string;
85
+ readonly status?: string | null;
86
+ }>;
87
+ markUncollectible(id: string): Promise<{
88
+ readonly id: string;
89
+ readonly status?: string | null;
90
+ }>;
91
+ };
92
+ readonly billing: {
93
+ readonly meterEvents: {
94
+ create(params: {
95
+ readonly event_name: string;
96
+ readonly payload: Readonly<Record<string, string>>;
97
+ readonly identifier?: string;
98
+ readonly timestamp?: number;
99
+ }, options?: {
100
+ readonly idempotencyKey?: string;
101
+ }): Promise<unknown>;
102
+ };
103
+ };
104
+ readonly webhooks: {
105
+ constructEventAsync(payload: string, header: string, secret: string): Promise<{
106
+ readonly id: string;
107
+ readonly type: string;
108
+ readonly data: {
109
+ readonly object: unknown;
110
+ };
111
+ }>;
112
+ };
113
+ }
114
+ /** A customer tax id as Stripe returns it (`eu_vat`, `DE123456789`). */
115
+ interface StripeTaxId {
116
+ readonly id: string;
117
+ readonly type: string;
118
+ readonly value: string;
119
+ readonly country?: string | null;
120
+ readonly verification?: {
121
+ readonly status?: string | null;
122
+ } | null;
123
+ readonly created?: number | null;
124
+ }
125
+ /**
126
+ * A Stripe client, the secret key to create one from the `stripe` package,
127
+ * or a function that returns a client. The function runs on every Stripe
128
+ * call, so it can create the client lazily, pick a per-request or per-tenant
129
+ * client (Stripe Connect), or read a rotated key; cache inside it when needed.
130
+ */
131
+ type StripeSource = StripeClient | {
132
+ readonly secretKey: string;
133
+ readonly apiVersion?: string;
134
+ } | (() => StripeClient | Promise<StripeClient>);
135
+ //#endregion
136
+ export { StripeSource as n, StripeTaxId as r, StripeClient as t };
@@ -1,4 +1,4 @@
1
- import { t as AuthSession } from "./view-CbgObAeb.js";
1
+ import { t as AuthSession } from "./view-DbxLNu8L.js";
2
2
  //#region src/auth/support-view.d.ts
3
3
  /** A running support session as the target's view shows it, for a banner. */
4
4
  interface SupportView {
@@ -1,11 +1,11 @@
1
- import { c as mapDbError, n as dbError } from "./errors-DtwXa6b8.js";
2
- import { t as temporal } from "./temporal-required-CAt4Dc9Z.js";
3
- import { i as ok, n as err, o as toDbError, t as AsyncResult } from "./result-BKiliPY7.js";
4
- import { t as validate } from "./standard-D7r6dMUu.js";
5
- import { c as supportCookie, l as supportCookieValue, s as clearSupportCookie } from "./server-B1mZ7CgQ.js";
6
- import { r as sqlIdent } from "./template-TxrGI5jR.js";
7
- import { n as emitKitEvent } from "./kit-events-CTFDfSwb.js";
8
- import { t as fromPgError } from "./executor-XycESQPH.js";
1
+ import { c as mapDbError, n as dbError } from "./errors-B11Duf73.js";
2
+ import { t as temporal } from "./temporal-required-BVvW7SYJ.js";
3
+ import { a as ok, r as err, s as toDbError, t as AsyncResult } from "./result-DzUbqgdW.js";
4
+ import { n as validate } from "./standard-BK0cqJ7y.js";
5
+ import { t as fromPgError } from "./executor-De1Of3m3.js";
6
+ import { d as clearSupportCookie, f as supportCookie, m as supportCookieValue } from "./adapter-CHnPkCPd.js";
7
+ import { r as sqlIdent } from "./template--jDkl3UP.js";
8
+ import { i as emitBlockEvent } from "./block-events-CrT8r7Fe.js";
9
9
  //#region src/auth/support.ts
10
10
  /** A session from the jsonb the `support-sessions` functions return. */
11
11
  function supportSessionFromRow(row) {
@@ -25,7 +25,7 @@ function supportSessionFromRow(row) {
25
25
  };
26
26
  }
27
27
  /**
28
- * Support sessions in the `support-sessions` SQL kit module. `start` runs
28
+ * Support sessions in the `support-sessions` SQL module. `start` runs
29
29
  * as the admin, so the module's `is_platform()` gate applies; the reads run
30
30
  * on the admin connection.
31
31
  */
@@ -97,6 +97,9 @@ function supportClaims(session, target) {
97
97
  }
98
98
  //#endregion
99
99
  //#region src/server/support.ts
100
+ /** How long a support target's claims are reused; a role change applies within it. */
101
+ const CLAIMS_TTL_MS = 6e4;
102
+ const CLAIMS_CACHE_SIZE = 1e3;
100
103
  const denied = (message, code) => dbError("forbidden", message, { code });
101
104
  const invalid = (message, code) => dbError("invalid_request", message, { code });
102
105
  function storeError(cause) {
@@ -119,7 +122,7 @@ function createSupport(options, events, claimsSchema) {
119
122
  const maxTtl = policy.maxTtl ?? 14400;
120
123
  const cookieName = options.cookie?.name;
121
124
  const emit = (type, data) => {
122
- emitKitEvent(events, type, data, {
125
+ emitBlockEvent(events, type, data, {
123
126
  actorId: data.adminId,
124
127
  ...data.sessionId ? { subject: `support_sessions/${data.sessionId}` } : {}
125
128
  });
@@ -129,6 +132,24 @@ function createSupport(options, events, claimsSchema) {
129
132
  if (store.claims) return store.claims(targetUserId);
130
133
  return { role: "authenticated" };
131
134
  };
135
+ /** Target claims per support session; the session itself is loaded every time, so revoking stays immediate. */
136
+ const claimsCache = /* @__PURE__ */ new Map();
137
+ const cachedTargetClaims = async (session) => {
138
+ const now = Date.now();
139
+ const cached = claimsCache.get(session.id);
140
+ if (cached && cached.until > now) return cached.claims;
141
+ const claims = await targetClaims(options.store, session.targetUserId);
142
+ claimsCache.delete(session.id);
143
+ if (claimsCache.size >= CLAIMS_CACHE_SIZE) {
144
+ const oldest = claimsCache.keys().next();
145
+ if (!oldest.done) claimsCache.delete(oldest.value);
146
+ }
147
+ claimsCache.set(session.id, {
148
+ claims,
149
+ until: Math.min(session.expiresAt.epochMilliseconds, now + CLAIMS_TTL_MS)
150
+ });
151
+ return claims;
152
+ };
132
153
  const checkPolicy = (admin, request, reason, seconds) => {
133
154
  if (admin.claims["act"] !== void 0) return denied("An impersonated session cannot start a support session", "SUPPORT_NESTED");
134
155
  if (request.targetUserId === admin.user.id) return invalid("An admin cannot start a support session as themselves", "SUPPORT_SELF");
@@ -250,7 +271,7 @@ function createSupport(options, events, claimsSchema) {
250
271
  ...session,
251
272
  readOnly: true
252
273
  };
253
- claims = supportClaims(session, await targetClaims(options.store, session.targetUserId));
274
+ claims = supportClaims(session, await cachedTargetClaims(session));
254
275
  } catch (cause) {
255
276
  events.logger.warn("Could not load the support session", { cause });
256
277
  return;
@@ -0,0 +1,114 @@
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 { 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";
8
+ import { SupabaseClient } from "@supabase/supabase-js";
9
+ import { StandardSchemaV1 } from "@standard-schema/spec";
10
+ import { QueryClient } from "@tanstack/query-core";
11
+ //#region src/svelte/index.d.ts
12
+ /** A value read through `.current`, reactive in templates, `$derived` and `$effect`. */
13
+ export interface Current<T> {
14
+ readonly current: T;
15
+ }
16
+ export interface LiveCount {
17
+ /** `undefined` until the first count arrives. */
18
+ readonly count: number | undefined;
19
+ readonly status: SubscriptionStatus;
20
+ /** The last failed refetch; the previous count stays. */
21
+ readonly error: DbError | undefined;
22
+ }
23
+ export interface Presence<I, O> {
24
+ /** Everyone on the topic, this client included, from the last sync. */
25
+ readonly members: readonly PresenceMember<O>[];
26
+ readonly status: SubscriptionStatus;
27
+ /** Shares a state now; the `state` option tracks one for you. */
28
+ readonly track: (state: I) => Promise<DbError | undefined>;
29
+ readonly untrack: () => Promise<DbError | undefined>;
30
+ }
31
+ export interface SveltePresenceOptions<I> extends Omit<PresenceHookOptions<I>, "state"> {
32
+ readonly state?: () => I | null | undefined;
33
+ }
34
+ export interface ActionHandle<I, T> extends ActionState<I, T> {
35
+ /** Runs the action; resolves with its result. */
36
+ readonly run: (input: I) => Promise<ActionResultOf<T>>;
37
+ readonly reset: () => void;
38
+ }
39
+ /** The claims type of a client's `betterSupabase.claims(schema)`, `unknown` without one. */
40
+ export type ClaimsOf<B extends ClientLike> = B["betterSupabase"] extends {
41
+ readonly claimsSchema: StandardSchemaV1<unknown, infer C> | undefined;
42
+ } ? C : unknown;
43
+ /** The profile type of a client's `betterSupabase.userMetadata(schema)`, `unknown` without one. */
44
+ export type ProfileOf<B extends ClientLike> = B["betterSupabase"] extends {
45
+ readonly userMetadataSchema: StandardSchemaV1<unknown, infer P> | undefined;
46
+ } ? P : unknown;
47
+ /**
48
+ * The client bound to Svelte. Inputs are getters (`() => spec`), so the
49
+ * subscriptions follow `$state` and `$props`. A subscription starts when a
50
+ * template, `$derived` or `$effect` reads one of its fields and stops when
51
+ * nothing reads it any more.
52
+ */
53
+ export interface BetterSvelte<B extends ClientLike = ClientLike> {
54
+ readonly client: B;
55
+ readonly queryClient: QueryClient | undefined;
56
+ /** Repositories bound to the current session. */
57
+ readonly db: B["db"];
58
+ /** TanStack Query option factories: `createQuery(() => bs.queries.customers.findMany())`. */
59
+ readonly queries: B["queries"];
60
+ readonly supabase: SupabaseClient;
61
+ /** The session state for UI: `loading`, `signed-out` or `signed-in`. */
62
+ readonly auth: Current<AuthSnapshot>;
63
+ broadcast<P extends string, E extends EventSchemas>(topic: Topic<P, E>, values: () => TemplateValues<P> | null | undefined, handlers?: TopicHandlers<E>, options?: BroadcastOptions): Current<SubscriptionStatus>;
64
+ liveQuery(spec: () => QuerySpec | null | undefined, options?: LiveQueryHookOptions): Current<SubscriptionStatus>;
65
+ liveCount(source: () => LiveCountSource, options?: LiveCountHookOptions): LiveCount;
66
+ presence<P extends string, I, O>(topic: PresenceTopic<P, I, O>, values: () => TemplateValues<P> | null | undefined, options?: SveltePresenceOptions<I>): Presence<I, O>;
67
+ action<I, T>(action: (input: I) => Promise<ActionResultOf<T>>, options?: UseActionOptions<ActionInputOf<I>, T>): ActionHandle<ActionInputOf<I>, T>;
68
+ }
69
+ export interface BetterSvelteOptions {
70
+ /** better-supabase queries are reset when the user signs out or changes. */
71
+ readonly queryClient?: QueryClient;
72
+ }
73
+ /** Binds a client to Svelte without a component context, e.g. in tests or a module. */
74
+ export declare function createBetterSvelte<B extends ClientLike>(client: B, options?: BetterSvelteOptions): BetterSvelte<B>;
75
+ /**
76
+ * Binds the client for the components below, in the root layout. With a
77
+ * `queryClient`, better-supabase queries are reset when the caller changes.
78
+ *
79
+ * ```svelte
80
+ * <script lang="ts">
81
+ * setBetterSupabase(bs, { queryClient });
82
+ * <\/script>
83
+ * ```
84
+ */
85
+ export declare function setBetterSupabase<B extends ClientLike>(client: B, options?: BetterSvelteOptions): BetterSvelte<B>;
86
+ /** The client `setBetterSupabase` bound, typed with `getBetterSupabase<typeof bs>()`. */
87
+ export declare function getBetterSupabase<B extends ClientLike = ClientLike>(): BetterSvelte<B>;
88
+ /** The session state for UI. Call during component setup. */
89
+ export declare function useAuth(): Current<AuthSnapshot>;
90
+ /** Subscribes to a topic while read. Call during component setup. */
91
+ export declare function useBroadcast<P extends string, E extends EventSchemas>(topic: Topic<P, E>, values: () => TemplateValues<P> | null | undefined, handlers?: TopicHandlers<E>, options?: BroadcastOptions): Current<SubscriptionStatus>;
92
+ /**
93
+ * Keeps a query fresh while read. Call during component setup.
94
+ *
95
+ * ```svelte
96
+ * <script lang="ts">
97
+ * const live = useLiveQuery(() => betterSupabase.spec.customers.findMany());
98
+ * <\/script>
99
+ * <span data-status={live.current}></span>
100
+ * ```
101
+ */
102
+ export declare function useLiveQuery(spec: () => QuerySpec | null | undefined, options?: LiveQueryHookOptions): Current<SubscriptionStatus>;
103
+ /** A count that stays current while read. Call during component setup. */
104
+ export declare function useLiveCount(source: () => LiveCountSource, options?: LiveCountHookOptions): LiveCount;
105
+ /** Joins a presence topic while read. Call during component setup. */
106
+ export declare function usePresence<P extends string, I, O>(topic: PresenceTopic<P, I, O>, values: () => TemplateValues<P> | null | undefined, options?: SveltePresenceOptions<I>): Presence<I, O>;
107
+ /** Tracks the runs of a server action or form action. */
108
+ export declare function useAction<I, T>(action: (input: I) => Promise<ActionResultOf<T>>, options?: UseActionOptions<ActionInputOf<I>, T>): ActionHandle<ActionInputOf<I>, T>;
109
+ /** Shares a server-verified session (from `+layout.ts` data) with the components below. */
110
+ export declare function setSession(session: () => AuthSession): void;
111
+ /** The session from the nearest `setSession()`, typed with `useSession<Claims, Profile>()`. */
112
+ export declare function useSession<C = unknown, P = unknown>(): Current<AuthSession<C, P>>;
113
+ //#endregion
114
+ 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 UseActionOptions, fieldErrorsOf };
@@ -0,0 +1,344 @@
1
+ import { t as clearOnUserChange } from "../user-change-XzvgafU4.js";
2
+ import { t as fieldErrorsOf } from "../field-errors-VF1yb8yI.js";
3
+ 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";
4
+ import { getContext, onMount, setContext } from "svelte";
5
+ import { createSubscriber } from "svelte/reactivity";
6
+ //#region src/svelte/index.ts
7
+ /** Reads a store reactively: the caller re-runs when the store changes. */
8
+ function reactive(store) {
9
+ const subscribe = createSubscriber((update) => store.subscribe(update));
10
+ return { get current() {
11
+ subscribe();
12
+ return store.current();
13
+ } };
14
+ }
15
+ /**
16
+ * A subscription keyed by `key()`. The returned function goes in each
17
+ * getter: it registers the reader, then restarts the subscription when the
18
+ * key (read in the reader's tracking context) changed. Notifications are
19
+ * queued, since a getter may run inside `$derived`, where writes throw.
20
+ */
21
+ function followed(key, start) {
22
+ const run = keyed();
23
+ let notify;
24
+ const queued = () => {
25
+ queueMicrotask(() => notify?.());
26
+ };
27
+ const update = () => {
28
+ const next = key();
29
+ run.update(next, () => next === null ? void 0 : start(next, queued));
30
+ };
31
+ const subscribe = createSubscriber((changed) => {
32
+ notify = changed;
33
+ update();
34
+ return () => {
35
+ notify = void 0;
36
+ run.stop();
37
+ };
38
+ });
39
+ return () => {
40
+ subscribe();
41
+ if (notify) update();
42
+ };
43
+ }
44
+ const NO_MEMBERS = [];
45
+ /** Binds a client to Svelte without a component context, e.g. in tests or a module. */
46
+ function createBetterSvelte(client, options = {}) {
47
+ const { queryClient } = options;
48
+ const auth = reactive(client.auth);
49
+ const plainCallers = /* @__PURE__ */ new WeakMap();
50
+ const callerFor = (supabase) => {
51
+ if (supabase === void 0) return { get current() {
52
+ return callerOf(auth.current);
53
+ } };
54
+ let caller = plainCallers.get(supabase);
55
+ if (!caller) {
56
+ caller = reactive(plainCaller(supabase));
57
+ plainCallers.set(supabase, caller);
58
+ }
59
+ return caller;
60
+ };
61
+ return {
62
+ client,
63
+ queryClient,
64
+ db: client.db,
65
+ queries: client.queries,
66
+ supabase: client.supabase,
67
+ auth,
68
+ broadcast(topic, values, handlers, options) {
69
+ const supabase = options?.client ?? client.supabase;
70
+ const forQuery = options?.queryClient ?? queryClient;
71
+ assertInvalidateClient("broadcast", options, forQuery);
72
+ const caller = callerFor(options?.client);
73
+ let status = "closed";
74
+ const name = () => {
75
+ const current = values();
76
+ return current ? topic.topic(current) : null;
77
+ };
78
+ const track = followed(() => {
79
+ const current = name();
80
+ const who = caller.current;
81
+ if (current === null || who.status === "loading") return null;
82
+ return JSON.stringify([current, who.userId]);
83
+ }, (_key, notify) => {
84
+ const current = name();
85
+ if (current === null) return;
86
+ return startBroadcast({
87
+ supabase,
88
+ topic,
89
+ name: current,
90
+ latest: () => ({
91
+ handlers,
92
+ options
93
+ }),
94
+ queryClient: forQuery,
95
+ onStatus: (next) => {
96
+ status = next;
97
+ notify();
98
+ }
99
+ });
100
+ });
101
+ return { get current() {
102
+ track();
103
+ return status;
104
+ } };
105
+ },
106
+ liveQuery(spec, options = {}) {
107
+ let status = "closed";
108
+ let joined = null;
109
+ const track = followed(() => {
110
+ const current = spec();
111
+ if (current && !queryClient) throw new Error("better-supabase: liveQuery needs setBetterSupabase(bs, { queryClient })");
112
+ return liveKey(client, current, auth.current, options);
113
+ }, (key, notify) => {
114
+ const current = spec();
115
+ if (!current || !queryClient) return;
116
+ const resumed = joined === key;
117
+ joined = key;
118
+ return startLiveQuery({
119
+ client,
120
+ queryClient,
121
+ spec: current,
122
+ auth: client.auth.current(),
123
+ options,
124
+ resumed,
125
+ onStatus: (next) => {
126
+ status = next;
127
+ notify();
128
+ }
129
+ });
130
+ });
131
+ return { get current() {
132
+ track();
133
+ return status;
134
+ } };
135
+ },
136
+ liveCount(source, options = {}) {
137
+ let status = "closed";
138
+ let state = NO_COUNT;
139
+ let joined = null;
140
+ const parsed = () => countSource(source(), options);
141
+ const key = () => liveKey(client, parsed().spec, auth.current, options);
142
+ const track = followed(key, (next, notify) => {
143
+ const { spec, initial, seedAt } = parsed();
144
+ if (!spec) return;
145
+ const previous = joined?.key === next ? joined : null;
146
+ joined = {
147
+ key: next,
148
+ at: previous?.at ?? seedAt ?? 0
149
+ };
150
+ return startLiveCount({
151
+ client,
152
+ spec,
153
+ key: next,
154
+ auth: client.auth.current(),
155
+ options,
156
+ immediate: initial === void 0 && !previous,
157
+ since: previous ? previous.at : seedAt,
158
+ onState: (update) => {
159
+ state = update(state);
160
+ if (joined?.key === next) joined = {
161
+ key: next,
162
+ at: state.at
163
+ };
164
+ notify();
165
+ },
166
+ onStatus: (value) => {
167
+ status = value;
168
+ notify();
169
+ }
170
+ });
171
+ });
172
+ const shown = () => {
173
+ track();
174
+ return shownCount(state, key(), parsed());
175
+ };
176
+ return {
177
+ get count() {
178
+ return shown().count;
179
+ },
180
+ get status() {
181
+ track();
182
+ return status;
183
+ },
184
+ get error() {
185
+ return shown().error;
186
+ }
187
+ };
188
+ },
189
+ presence(topic, values, options = {}) {
190
+ const supabase = options.client ?? client.supabase;
191
+ const caller = callerFor(options.client);
192
+ let members = NO_MEMBERS;
193
+ let status = "closed";
194
+ let join;
195
+ const name = () => {
196
+ const current = values();
197
+ return current ? topic.topic(current) : null;
198
+ };
199
+ const follow = followed(() => {
200
+ const current = name();
201
+ const who = caller.current;
202
+ if (current === null || who.status === "loading") return null;
203
+ return JSON.stringify([current, who.userId]);
204
+ }, (_key, notify) => {
205
+ const current = name();
206
+ if (current === null) return;
207
+ const joined = joinPresence(supabase, topic, current, {
208
+ onStatus: (next) => {
209
+ status = next;
210
+ notify();
211
+ },
212
+ onPresence: (next) => {
213
+ members = next;
214
+ notify();
215
+ }
216
+ });
217
+ if (!joined) return;
218
+ join = joined;
219
+ joined.sync(options.state?.());
220
+ return () => {
221
+ join = void 0;
222
+ members = NO_MEMBERS;
223
+ status = "closed";
224
+ joined.leave();
225
+ notify();
226
+ };
227
+ });
228
+ const track = () => {
229
+ follow();
230
+ join?.sync(options.state?.());
231
+ };
232
+ return {
233
+ get members() {
234
+ track();
235
+ return members;
236
+ },
237
+ get status() {
238
+ track();
239
+ return status;
240
+ },
241
+ track: (state) => join?.track(state) ?? notJoined(),
242
+ untrack: () => join?.untrack() ?? notJoined()
243
+ };
244
+ },
245
+ action(action, options = {}) {
246
+ const call = action;
247
+ const runner = createActionRunner(() => ({
248
+ action: call,
249
+ options
250
+ }));
251
+ const state = reactive(runner);
252
+ return {
253
+ run: runner.run,
254
+ reset: runner.reset,
255
+ get pending() {
256
+ return state.current.pending;
257
+ },
258
+ get pendingInputs() {
259
+ return state.current.pendingInputs;
260
+ },
261
+ get pendingInput() {
262
+ return state.current.pendingInput;
263
+ },
264
+ get data() {
265
+ return state.current.data;
266
+ },
267
+ get error() {
268
+ return state.current.error;
269
+ }
270
+ };
271
+ }
272
+ };
273
+ }
274
+ const CLIENT = Symbol("better-supabase");
275
+ const SESSION = Symbol("better-supabase-session");
276
+ /**
277
+ * Binds the client for the components below, in the root layout. With a
278
+ * `queryClient`, better-supabase queries are reset when the caller changes.
279
+ *
280
+ * ```svelte
281
+ * <script lang="ts">
282
+ * setBetterSupabase(bs, { queryClient });
283
+ * <\/script>
284
+ * ```
285
+ */
286
+ function setBetterSupabase(client, options = {}) {
287
+ const bound = createBetterSvelte(client, options);
288
+ const { queryClient } = options;
289
+ if (queryClient) onMount(() => clearOnUserChange(queryClient, client.auth));
290
+ return setContext(CLIENT, bound);
291
+ }
292
+ /** The client `setBetterSupabase` bound, typed with `getBetterSupabase<typeof bs>()`. */
293
+ function getBetterSupabase() {
294
+ const bound = getContext(CLIENT);
295
+ if (!bound) throw new Error("better-supabase: call setBetterSupabase(bs) in a parent component");
296
+ return bound;
297
+ }
298
+ /** The session state for UI. Call during component setup. */
299
+ function useAuth() {
300
+ return getBetterSupabase().auth;
301
+ }
302
+ /** Subscribes to a topic while read. Call during component setup. */
303
+ function useBroadcast(topic, values, handlers, options) {
304
+ return getBetterSupabase().broadcast(topic, values, handlers, options);
305
+ }
306
+ /**
307
+ * Keeps a query fresh while read. Call during component setup.
308
+ *
309
+ * ```svelte
310
+ * <script lang="ts">
311
+ * const live = useLiveQuery(() => betterSupabase.spec.customers.findMany());
312
+ * <\/script>
313
+ * <span data-status={live.current}></span>
314
+ * ```
315
+ */
316
+ function useLiveQuery(spec, options) {
317
+ return getBetterSupabase().liveQuery(spec, options);
318
+ }
319
+ /** A count that stays current while read. Call during component setup. */
320
+ function useLiveCount(source, options) {
321
+ return getBetterSupabase().liveCount(source, options);
322
+ }
323
+ /** Joins a presence topic while read. Call during component setup. */
324
+ function usePresence(topic, values, options) {
325
+ return getBetterSupabase().presence(topic, values, options);
326
+ }
327
+ /** Tracks the runs of a server action or form action. */
328
+ function useAction(action, options) {
329
+ return getBetterSupabase().action(action, options);
330
+ }
331
+ /** Shares a server-verified session (from `+layout.ts` data) with the components below. */
332
+ function setSession(session) {
333
+ setContext(SESSION, session);
334
+ }
335
+ /** The session from the nearest `setSession()`, typed with `useSession<Claims, Profile>()`. */
336
+ function useSession() {
337
+ const session = getContext(SESSION);
338
+ if (!session) throw new Error("better-supabase: useSession() needs setSession(() => data.session) in a parent component");
339
+ return { get current() {
340
+ return session();
341
+ } };
342
+ }
343
+ //#endregion
344
+ export { createBetterSvelte, fieldErrorsOf, getBetterSupabase, setBetterSupabase, setSession, useAction, useAuth, useBroadcast, useLiveCount, useLiveQuery, usePresence, useSession };