better-supabase 0.5.1 → 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 +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-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-C_A-KEAz.js → doctor-B4JOm_ox.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-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-DMa6M7hV.js → init-BIIwclPg.js} +242 -27
  185. package/dist/cli/{introspect-BKlaIu_M.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-Bo_NLT5n.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-BCtlgDQx.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-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-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-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-CeVeeXwz.d.ts} +224 -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 +34872 -6579
  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-wHnK6zp-.js → support-BivNqSpK.js} +32 -11
  430. package/dist/{support-view-B8SlToQX.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 +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-Bvv6aLjZ.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
@@ -1,16 +1,106 @@
1
- import { n as AnyFunctions, r as AnyModels } from "./types-Dnf_wRDz.js";
2
- import { _ as DbError, a as AsyncResult } from "./executor-BunPOO-k.js";
3
- import { a as EventHub } from "./events-aIO7vsIk.js";
4
- import { I as StatsRecorder, P as DbStats, t as BetterSupabase, y as Db } from "./define-Bp_BZa5h.js";
5
- import { g as RequestContext } from "./plugin-o144f322.js";
1
+ /// <reference lib="esnext.temporal" />
2
+ import { t as AsyncResult } from "./result-D7y2fT87.js";
3
+ import { a as AnyModels, i as AnyFunctions } from "./types-6BdhkmZe.js";
4
+ import { t as SqlClient } from "./executor-DbvExCFC.js";
5
+ import { m as RequestContext } from "./plugin-FGY8UhYm.js";
6
+ import { a as EventHub } from "./events-DWDhx77e.js";
6
7
  import { t as BetterSupabaseEnv } from "./index-CLg87OBW.js";
7
- import { s as SqlClaims, t as BetterPostgres } from "./pool-C9voM4Kw.js";
8
- import { c as ResolveAuthOptions, i as AuthResolution, o as AuthState, t as ImpersonationOptions } from "./impersonation-BmePsuxz.js";
9
- import { a as SupportSession, i as SupportListFilter, o as SupportSessionStore } from "./support-CEPwlw2G.js";
10
- import { c as Bucket } from "./index-SaTsEfGP.js";
11
- import { t as Aal } from "./mfa-Cu96oJdw.js";
8
+ import { a as CookieWrite } from "./session-ChiXDZdZ.js";
9
+ import { a as ResolveAuthOptions, r as AuthState, t as AuthResolution } from "./resolve-KW8nCeL6.js";
10
+ import { r as CredentialProvider } from "./provider-BH5UWZJ6.js";
11
+ import { B as DbStats, H as StatsRecorder, b as Db, t as BetterSupabase } from "./define-CJJkkr1-.js";
12
+ import { r as EventSink } from "./cloud-event-C1JCc1bH.js";
13
+ import { s as SqlClaims, t as BetterPostgres } from "./pool-CAu2nLrL.js";
14
+ import { o as ImpersonationOptions } from "./mfa-Daak8ukG.js";
15
+ import { n as Bucket } from "./bucket-Cl46E3jS.js";
12
16
  import { SupabaseClient } from "@supabase/supabase-js";
13
17
  import { StandardSchemaV1 } from "@standard-schema/spec";
18
+ //#region src/auth/support.d.ts
19
+ type SupportEndedBy = "admin" | "expired" | "revoked";
20
+ /** A support session: a platform admin viewing the app as `targetUserId`. */
21
+ interface SupportSession {
22
+ readonly id: string;
23
+ readonly adminId: string;
24
+ readonly targetUserId: string;
25
+ readonly reason: string;
26
+ /** Writes fail while it is true (`begin read only`). */
27
+ readonly readOnly: boolean;
28
+ readonly tenant?: string;
29
+ readonly startedAt: Temporal.Instant;
30
+ readonly expiresAt: Temporal.Instant;
31
+ readonly endedAt?: Temporal.Instant;
32
+ readonly endedBy?: SupportEndedBy;
33
+ /** App data, such as a ticket id. */
34
+ readonly metadata: Readonly<Record<string, unknown>>;
35
+ }
36
+ interface SupportStartInput {
37
+ readonly adminId: string;
38
+ /**
39
+ * The admin's verified claims. The SQL store runs `start_support_session`
40
+ * with them, so `is_platform()` checks the admin in the database too.
41
+ */
42
+ readonly adminClaims: Readonly<Record<string, unknown>>;
43
+ readonly targetUserId: string;
44
+ readonly reason: string;
45
+ readonly ttlSeconds: number;
46
+ readonly readOnly: boolean;
47
+ readonly tenant?: string;
48
+ readonly metadata: Readonly<Record<string, unknown>>;
49
+ }
50
+ /** A caller's verified claims, which the store runs a call with. */
51
+ type SupportCallerClaims = Readonly<Record<string, unknown>>;
52
+ interface SupportListFilter {
53
+ readonly adminId?: string;
54
+ readonly targetUserId?: string;
55
+ /** `true`: running sessions only; `false`: ended or expired ones only. */
56
+ readonly active?: boolean;
57
+ /** Defaults to 50. */
58
+ readonly limit?: number;
59
+ }
60
+ /**
61
+ * Where support sessions live. `sqlSupportStore` uses the `support-sessions`
62
+ * SQL module; implement this for another store and check it with
63
+ * `testSupportSessionStore` from `better-supabase/testing`.
64
+ */
65
+ interface SupportSessionStore {
66
+ readonly apiVersion: 1;
67
+ readonly name: string;
68
+ /** Starts a session and ends the admin's previous one. Rejects when the store refuses. */
69
+ start(input: SupportStartInput): Promise<SupportSession>;
70
+ /**
71
+ * The admin's session while it is running; `undefined` once ended or
72
+ * expired. With the admin's `claims`, the store also checks that the admin
73
+ * may still start sessions.
74
+ */
75
+ get(sessionId: string, adminId: string, claims?: SupportCallerClaims): Promise<SupportSession | undefined>;
76
+ /**
77
+ * `false` when it was not running. With `claims`, it runs as that caller:
78
+ * the session's admin, or staff with the revoke permission.
79
+ */
80
+ end(sessionId: string, endedBy: SupportEndedBy, claims?: SupportCallerClaims): Promise<boolean>;
81
+ /** With `claims`, only what that caller may view. */
82
+ list(filter?: SupportListFilter, claims?: SupportCallerClaims): Promise<readonly SupportSession[]>;
83
+ /** The claims `targetUserId` would get, when the store can build them. */
84
+ claims?(targetUserId: string): Promise<Readonly<Record<string, unknown>>>;
85
+ }
86
+ interface SqlSupportStoreOptions {
87
+ /** `sql.modules.support-sessions.schema`. Defaults to `better_supabase`. */
88
+ readonly schema?: string;
89
+ }
90
+ /**
91
+ * Support sessions in the `support-sessions` SQL module. `start` runs
92
+ * as the admin, so the module's `is_platform()` gate applies; the reads run
93
+ * on the admin connection.
94
+ */
95
+ declare function sqlSupportStore(postgres: Pick<BetterPostgres, "admin" | "asUser">, options?: SqlSupportStoreOptions): SupportSessionStore;
96
+ /**
97
+ * The claims a support session runs with: the target's, plus `act` naming
98
+ * the admin, the reason and the session (the audit module records all three),
99
+ * marked `kind: "support"` so `actorOf` never reads it as an OAuth client.
100
+ * `role` falls back to `authenticated`; the admin's claims never leak in.
101
+ */
102
+ declare function supportClaims(session: Pick<SupportSession, "id" | "adminId" | "targetUserId" | "reason" | "readOnly">, target: Readonly<Record<string, unknown>>): Record<string, unknown>;
103
+ //#endregion
14
104
  //#region src/auth/support-cookie.d.ts
15
105
  /** The cookie that carries the support session id. */
16
106
  declare const SUPPORT_COOKIE = "bs-support";
@@ -59,7 +149,7 @@ interface SupportOptions {
59
149
  /**
60
150
  * Whether `admin` may view the app as the target. A throw or rejection
61
151
  * counts as a deny. Defaults to allowing, so the store decides: the SQL
62
- * store checks `is_platform(kits.support-sessions.permissions.start)`.
152
+ * store checks `is_platform(modules.support-sessions.permissions.start)`.
63
153
  */
64
154
  readonly authorize?: (input: SupportAuthorizeInput) => boolean | Promise<boolean>;
65
155
  /**
@@ -148,12 +238,32 @@ interface DeleteAccountOptions {
148
238
  readonly cascades?: readonly string[];
149
239
  readonly context?: RequestContext;
150
240
  readonly signal?: AbortSignal;
241
+ /**
242
+ * Direct Postgres with rights on `auth.users` (`postgres.admin`). When the
243
+ * Auth server reports a database error, the delete is replayed in a
244
+ * statement that is rolled back, and the database's own error (its
245
+ * SQLSTATE and hint, such as `ORGANIZATION_OWNER_REQUIRED`) is returned
246
+ * instead of Auth's generic one. `server.deleteAccount` passes its
247
+ * `postgres.admin`.
248
+ */
249
+ readonly sql?: SqlClient;
151
250
  }
152
251
  interface DeleteAccountResult {
153
252
  readonly userId: string;
154
253
  /** Removed objects per bucket id. */
155
254
  readonly removed: Readonly<Record<string, number>>;
156
255
  }
256
+ /**
257
+ * Deletes the Auth user, then removes their Storage objects, then announces
258
+ * the delete. Rows referencing `auth.users` follow their foreign keys. The
259
+ * objects are listed first and removed only once the user is gone, so a
260
+ * delete the database refuses leaves them in place.
261
+ *
262
+ * `server.deleteAccount` calls it with the server's service client. Apps on
263
+ * the `@supabase/server` pipeline call it with theirs:
264
+ * `deleteAccount(betterSupabase, ctx.supabaseAdmin, userId)`.
265
+ */
266
+ declare function deleteAccount<M extends AnyModels, D, F extends AnyFunctions, E, C>(betterSupabase: BetterSupabase<M, D, F, E, C>, service: SupabaseClient | (() => SupabaseClient), userId: string, options?: DeleteAccountOptions): AsyncResult<DeleteAccountResult>;
157
267
  //#endregion
158
268
  //#region src/server/replicas.d.ts
159
269
  /** Cookie holding the epoch ms until which reads stay on the primary. */
@@ -168,9 +278,47 @@ interface ReplicaState {
168
278
  pin(): void;
169
279
  }
170
280
  //#endregion
281
+ //#region src/server/suspend-account.d.ts
282
+ interface EndSessionsResult {
283
+ readonly userId: string;
284
+ readonly ended: number;
285
+ }
286
+ interface SuspendAccountOptions {
287
+ readonly suspended: boolean;
288
+ readonly duration?: string;
289
+ }
290
+ interface SuspendAccountResult {
291
+ readonly userId: string;
292
+ readonly suspended: boolean;
293
+ readonly ended: number;
294
+ }
295
+ declare function endSessions(sql: SqlClient, userId: string): AsyncResult<EndSessionsResult>;
296
+ declare function suspendAccount(service: SupabaseClient | (() => SupabaseClient), sql: SqlClient, userId: string, options: SuspendAccountOptions): AsyncResult<SuspendAccountResult>;
297
+ //#endregion
171
298
  //#region src/server/server.d.ts
299
+ /**
300
+ * PostgREST request settings for the caller's repositories and the shared
301
+ * service and anon clients, the `db` options supabase-js takes.
302
+ */
303
+ interface ServerDbOptions {
304
+ /** Aborts each PostgREST request after this many milliseconds with a `timeout` error. */
305
+ readonly timeout?: number;
306
+ /**
307
+ * postgrest-js retries of idempotent requests (GET and HEAD) on network
308
+ * errors, 503 and 520. Defaults to postgrest-js's setting, which is on.
309
+ */
310
+ readonly retry?: boolean;
311
+ /**
312
+ * The longest query string one read sends. Defaults to the definition's
313
+ * `urlLengthLimit`, else 6000.
314
+ */
315
+ readonly urlLengthLimit?: number;
316
+ }
172
317
  interface ServerOptions {
173
- /** Defaults to `loadEnv()`. */
318
+ /**
319
+ * Defaults to the variables `getEnv` from `@supabase/middleware` reads:
320
+ * Workers bindings, then `process.env`, then `Deno.env`.
321
+ */
174
322
  readonly env?: BetterSupabaseEnv;
175
323
  /** Enables `ctx.sql` and `actingAs()`. */
176
324
  readonly postgres?: BetterPostgres;
@@ -203,12 +351,14 @@ interface ServerOptions {
203
351
  };
204
352
  /**
205
353
  * The active tenant of a request when it doesn't come from a claim, e.g.
206
- * from a URL slug (`kits.access.activeTenant: 'resolver'`). It becomes
354
+ * from a URL slug (`sql.modules.access.activeTenant: 'resolver'`). It becomes
207
355
  * `context.tenant` for the `tenant()` plugin, the `better_supabase.tenant`
208
356
  * setting over Postgres and the `x-bs-tenant` header over PostgREST, which
209
357
  * `current_tenant_id()` reads only while the caller is a member. Async
210
358
  * resolvers need `context(request)`; `contextFromResolution` takes
211
- * `options.tenant` instead.
359
+ * `options.tenant` instead. Under `createNext`, Server Components and
360
+ * actions pass a request with the incoming headers and a placeholder URL,
361
+ * so read a header there, not the path.
212
362
  */
213
363
  readonly tenant?: (request: Request, auth: AuthState) => string | undefined | PromiseLike<string | undefined>;
214
364
  /**
@@ -217,6 +367,33 @@ interface ServerOptions {
217
367
  * `postgres`, since the target's queries run over direct Postgres.
218
368
  */
219
369
  readonly support?: SupportSessions;
370
+ /**
371
+ * The claims `forContext()` adds for a user, the ones a custom access token
372
+ * hook would put in their token (roles, organization lists). Read them
373
+ * fresh: a job can run after the user lost access. `sub`, `role`, `act` and
374
+ * `tenant_id` come from the context and win.
375
+ */
376
+ readonly claimsFor?: (userId: string, context: RequestContext) => SqlClaims | PromiseLike<SqlClaims>;
377
+ /** PostgREST request settings: `timeout`, `retry` and `urlLengthLimit`. */
378
+ readonly db?: ServerDbOptions;
379
+ /**
380
+ * Resolves the `credential_ref`s third-party calls use, e.g.
381
+ * `vaultCredentials()` from `better-supabase/credentials`. It becomes
382
+ * `ctx.credentials`; pass `subjectFor(ctx)` as the subject.
383
+ */
384
+ readonly credentials?: CredentialProvider;
385
+ /**
386
+ * Where the server's audit trail goes, such as `audit.sink()` from
387
+ * `better-supabase/blocks/audit`. `suspendAccount`, `deleteAccount` and
388
+ * `endSessions` send `dev.better-supabase.account.*` CloudEvents, and
389
+ * `support.denied` events are forwarded. A failed send is logged and never
390
+ * fails the action.
391
+ */
392
+ readonly audit?: EventSink;
393
+ }
394
+ interface ForContextOptions {
395
+ /** Recorded as `act.reason` when the context carries an impersonator. Defaults to `"job"`. */
396
+ readonly reason?: string;
220
397
  }
221
398
  /** The header `current_tenant_id()` reads over the Data API. */
222
399
  declare const TENANT_HEADER = "x-bs-tenant";
@@ -241,11 +418,19 @@ interface ServerContext<M extends AnyModels, F extends AnyFunctions, E, C = unkn
241
418
  * (`resolution.apply`) and, after a write, `bs-primary-until`.
242
419
  */
243
420
  apply(response: Response): Response;
421
+ /**
422
+ * The cookies `apply` would set, for frameworks that write cookies through
423
+ * a cookie store instead of a response (`cookies().set`, `setResponseHeaders`).
424
+ * Read it after the handler ran: a write adds `bs-primary-until`.
425
+ */
426
+ cookies(): readonly CookieWrite[];
244
427
  /**
245
428
  * Set while an admin views the app as another user: `auth`, `db` and
246
429
  * `sql` are the target's, and `resolution` stays the admin's.
247
430
  */
248
431
  readonly support?: ActiveSupport;
432
+ /** `options.credentials`, when the server has one. */
433
+ readonly credentials?: CredentialProvider;
249
434
  }
250
435
  interface ContextOptions {
251
436
  readonly refresh?: boolean;
@@ -265,9 +450,12 @@ interface ContextOptions {
265
450
  }
266
451
  interface BetterServer<M extends AnyModels, F extends AnyFunctions, E, C = unknown, P = unknown> {
267
452
  readonly env: BetterSupabaseEnv;
453
+ /** The definition's events; adapters pass `events.settled()` to `waitUntil`. */
454
+ readonly events: EventHub;
268
455
  resolve(request: Request, options?: {
269
456
  readonly refresh?: boolean;
270
457
  readonly cookies?: boolean;
458
+ readonly checkSession?: boolean;
271
459
  }): Promise<AuthResolution<C, P>>;
272
460
  /**
273
461
  * Resolves auth and binds repositories to the caller. Refreshes an expired
@@ -288,90 +476,41 @@ interface BetterServer<M extends AnyModels, F extends AnyFunctions, E, C = unkno
288
476
  /** Service-role repositories. Bypasses RLS; the actor is `service`. */
289
477
  admin(context?: RequestContext): Db<M, F, E, SupabaseClient>;
290
478
  /**
291
- * Deletes a user: their objects in `buckets`, then the Auth user, then a
292
- * `mutation` notice for `auth.users`. Needs the secret key. Access tokens
293
- * already issued stay valid until they expire.
479
+ * Deletes a user: the Auth user, then their objects in `buckets`, then a
480
+ * `mutation` notice for `auth.users`. Needs the secret key. With
481
+ * `postgres`, a delete the database refuses returns its own error and
482
+ * hint. Access tokens already issued stay valid until they expire.
294
483
  */
295
484
  deleteAccount(userId: string, options?: DeleteAccountOptions): AsyncResult<DeleteAccountResult>;
485
+ endSessions(userId: string): AsyncResult<EndSessionsResult>;
486
+ suspendAccount(userId: string, options: SuspendAccountOptions): AsyncResult<SuspendAccountResult>;
296
487
  /**
297
488
  * Repositories running as a user, with RLS, over direct Postgres. With
298
489
  * `impersonation`, the claims carry `act: { kind: "impersonation", sub, reason }`, which
299
- * the `audit` and `actor` SQL kit modules record.
490
+ * the `audit` and `actor` SQL modules record.
300
491
  */
301
492
  actingAs(userId: string, claims?: Omit<SqlClaims, "sub" | "act">, impersonation?: ImpersonationOptions): Db<M, F, E, undefined>;
493
+ /**
494
+ * Repositories for the user in a recorded context (`job.context`), with
495
+ * RLS, over direct Postgres: `actingAs` with the context's tenant and
496
+ * `ServerOptions.claimsFor`. Fails with `forbidden` when the actor is not a
497
+ * user; it never falls back to `admin()`.
498
+ */
499
+ forContext(context: RequestContext, options?: ForContextOptions): AsyncResult<Db<M, F, E, undefined>>;
302
500
  /** Support sessions; every method fails without `ServerOptions.support`. */
303
501
  readonly support: SupportApi;
304
502
  }
503
+ type ServerKeys = keyof BetterServer<AnyModels, AnyFunctions, unknown>;
504
+ /**
505
+ * A framework adapter's server: `server` plus the adapter's own methods,
506
+ * without reading the lazy `env` getter. `extra` can't replace a
507
+ * `BetterServer` method.
508
+ */
509
+ declare function extendServer<R extends object>(server: object, extra: Omit<R, ServerKeys>): R;
305
510
  /**
306
511
  * Server-side entry point for APIs, jobs, MCP servers and framework
307
512
  * adapters. Holds the secrets; `betterSupabase` stays isomorphic.
308
513
  */
309
514
  declare function createServer<M extends AnyModels, D, F extends AnyFunctions, E, C = unknown, P = unknown>(betterSupabase: BetterSupabase<M, D, F, E, C, P>, options?: ServerOptions): BetterServer<M, F, E, C, P>;
310
515
  //#endregion
311
- //#region src/server/respond.d.ts
312
- type AuthKind = AuthState["kind"];
313
- /**
314
- * An auth kind a guard lets through. `anonymous` admits users signed in with
315
- * `signInAnonymously()` (`is_anonymous`); `anon` admits callers without a
316
- * session only.
317
- */
318
- type AllowedCaller = Exclude<AuthKind, "invalid"> | "anonymous";
319
- interface GuardOptions {
320
- /**
321
- * Callers allowed through. Defaults to `['user']`, which refuses anonymous
322
- * sign-ins. Only `'anonymous'` admits them: `['anonymous']` alone admits
323
- * anonymous sign-ins and refuses other users, and `'anon'` (no session)
324
- * never admits them.
325
- */
326
- readonly allow?: readonly AllowedCaller[];
327
- /**
328
- * Assurance level user sessions need. `aal2` answers 403 with
329
- * `required: 'aal2'` until the user verifies a second factor.
330
- */
331
- readonly aal?: Aal;
332
- /**
333
- * OAuth scopes a delegated token (an OAuth client or an `act` chain) needs.
334
- * A missing one answers 403 with `error="insufficient_scope"`. The user's
335
- * own session is not limited by scopes.
336
- */
337
- readonly scopes?: readonly string[];
338
- }
339
- /** Guard options for middleware and fetch handlers that resolve the caller themselves. */
340
- interface MiddlewareOptions extends GuardOptions {
341
- /**
342
- * Refresh an expired cookie session and send the new cookies. Only for
343
- * routes browsers call with cookies; bearer tokens never refresh.
344
- */
345
- readonly refresh?: boolean;
346
- }
347
- /** `undefined` when `auth` may pass; otherwise the 401/403 error to send. */
348
- declare function guard(auth: AuthState, allow?: GuardOptions["allow"], aal?: Aal, scopes?: readonly string[]): DbError | undefined;
349
- declare function isResult(value: unknown): value is {
350
- ok: boolean;
351
- data: unknown;
352
- error: unknown;
353
- };
354
- type Settled = {
355
- readonly ok: true;
356
- readonly data: unknown;
357
- } | {
358
- readonly ok: false;
359
- readonly error: DbError;
360
- };
361
- /**
362
- * Settles a handler's return value: `Result`s and `AsyncResult`s unwrap,
363
- * thrown `DbException`s (or errors whose `cause` is a `DbError`) become
364
- * errors, anything else is data. Other thrown
365
- * errors propagate.
366
- */
367
- declare function settle(run: () => unknown): Promise<Settled>;
368
- interface RespondOptions {
369
- readonly instance?: string;
370
- readonly expose?: boolean;
371
- /** Status for data responses. Defaults to 200 (204 without data). */
372
- readonly status?: number;
373
- }
374
- /** A handler's value as a response: `Response` as is, data as JSON, errors as Problem Details. */
375
- declare function respond(run: () => unknown, options?: RespondOptions): Promise<Response>;
376
- //#endregion
377
- export { clearSupportCookie as A, SupportOptions as C, supportSessions as D, SupportStartRequest as E, supportCookieValue as M, SUPPORT_COOKIE as O, SupportAuthorizeInput as S, SupportSessions as T, ReplicaState as _, Settled as a, ActiveSupport as b, respond as c, ContextOptions as d, ServerContext as f, PRIMARY_COOKIE as g, createServer as h, RespondOptions as i, supportCookie as j, SupportCookieOptions as k, settle as l, TENANT_HEADER as m, GuardOptions as n, guard as o, ServerOptions as p, MiddlewareOptions as r, isResult as s, AuthKind as t, BetterServer as u, DeleteAccountOptions as v, SupportPolicy as w, SupportApi as x, DeleteAccountResult as y };
516
+ export { clearSupportCookie as A, sqlSupportStore as B, SupportOptions as C, supportSessions as D, SupportStartRequest as E, SupportEndedBy as F, SupportListFilter as I, SupportSession as L, supportCookieValue as M, SqlSupportStoreOptions as N, SUPPORT_COOKIE as O, SupportCallerClaims as P, SupportSessionStore as R, SupportAuthorizeInput as S, SupportSessions as T, supportClaims as V, DeleteAccountOptions as _, ServerDbOptions as a, ActiveSupport as b, createServer as c, SuspendAccountOptions as d, SuspendAccountResult as f, ReplicaState as g, PRIMARY_COOKIE as h, ServerContext as i, supportCookie as j, SupportCookieOptions as k, extendServer as l, suspendAccount as m, ContextOptions as n, ServerOptions as o, endSessions as p, ForContextOptions as r, TENANT_HEADER as s, BetterServer as t, EndSessionsResult as u, DeleteAccountResult as v, SupportPolicy as w, SupportApi as x, deleteAccount as y, SupportStartInput as z };
@@ -0,0 +1,72 @@
1
+ import { CookieOptions } from "@supabase/ssr";
2
+ //#region src/auth/session.d.ts
3
+ /**
4
+ * The session object auth-js persists (`sb-<ref>-auth-token`). A
5
+ * `tokens-only` cookie has no `user`: auth-js keeps it in `auth.userStorage`.
6
+ */
7
+ interface StoredSession {
8
+ readonly access_token: string;
9
+ readonly refresh_token: string;
10
+ readonly expires_at?: number;
11
+ readonly expires_in?: number;
12
+ readonly token_type?: string;
13
+ readonly user?: unknown;
14
+ readonly [key: string]: unknown;
15
+ }
16
+ /**
17
+ * `cookies.encode` in `@supabase/ssr`: `user-and-tokens` stores the user
18
+ * object in the cookie, `tokens-only` stores the access and refresh tokens
19
+ * alone. The server and the browser client must use the same value.
20
+ */
21
+ type SessionEncoding = "user-and-tokens" | "tokens-only";
22
+ declare const DEFAULT_SESSION_ENCODING: SessionEncoding;
23
+ interface WriteSessionOptions {
24
+ /** Defaults to `user-and-tokens`, the `@supabase/ssr` default. */
25
+ readonly encode?: SessionEncoding;
26
+ }
27
+ /** A cookie scope an earlier deploy wrote the session at. */
28
+ interface CookieScope {
29
+ readonly domain?: string;
30
+ readonly path?: string;
31
+ }
32
+ interface CookieRecord {
33
+ readonly name: string;
34
+ readonly value: string;
35
+ }
36
+ interface CookieWrite {
37
+ readonly name: string;
38
+ readonly value: string;
39
+ readonly options: CookieOptions;
40
+ }
41
+ /** Headers that keep responses carrying session cookies out of shared caches. */
42
+ declare const AUTH_CACHE_HEADERS: Readonly<Record<string, string>>;
43
+ /** `sb-<first label of the hostname>-auth-token`, the supabase-js default. */
44
+ declare function sessionCookieName(url: string): string;
45
+ declare function parseCookies(header: string | null | undefined): CookieRecord[];
46
+ declare function serializeCookie(write: CookieWrite): string;
47
+ /**
48
+ * Reads the session written by `@supabase/ssr` (plain or `base64-`, whole or
49
+ * chunked, `user-and-tokens` or `tokens-only`). Mismatched chunks from a
50
+ * partial write read as no session.
51
+ */
52
+ declare function readSession(cookies: readonly CookieRecord[], name: string): StoredSession | null;
53
+ /** The encoding a stored session was written with: `tokens-only` without a `user`. */
54
+ declare function sessionEncoding(session: StoredSession): SessionEncoding;
55
+ /**
56
+ * Cookie writes that store `session` (or clear it with `null`) exactly like
57
+ * `@supabase/ssr` with the same `encode`, and expire chunks the new value no
58
+ * longer uses.
59
+ */
60
+ declare function writeSession(existing: readonly CookieRecord[], name: string, session: StoredSession | null, options?: CookieOptions, { encode }?: WriteSessionOptions): CookieWrite[];
61
+ /**
62
+ * `Max-Age=0` writes for every chunk of the session cookie at each of
63
+ * `scopes`, like `clearAuthCookiesAtScopes` from `@supabase/ssr`. Use it once
64
+ * the cookie `domain` or `path` changed, for the scopes earlier deploys
65
+ * wrote: browsers ignore writes for scopes the host doesn't own, but a scope
66
+ * equal to the current one clears the live session.
67
+ */
68
+ declare function clearSessionAtScopes(existing: readonly CookieRecord[], name: string, scopes: readonly CookieScope[]): CookieWrite[];
69
+ /** Applies cookie writes to a cookie list, as the next request would see it. */
70
+ declare function applyCookieWrites(cookies: readonly CookieRecord[], writes: readonly CookieWrite[]): CookieRecord[];
71
+ //#endregion
72
+ export { writeSession as _, CookieWrite as a, StoredSession as c, clearSessionAtScopes as d, parseCookies as f, sessionEncoding as g, sessionCookieName as h, CookieScope as i, WriteSessionOptions as l, serializeCookie as m, CookieOptions as n, DEFAULT_SESSION_ENCODING as o, readSession as p, CookieRecord as r, SessionEncoding as s, AUTH_CACHE_HEADERS as t, applyCookieWrites as u };
@@ -0,0 +1,75 @@
1
+ import { pipeline, seedContext } from "@supabase/middleware";
2
+ //#region src/bridges/shared.ts
3
+ /** The string keys of a pipeline context: every contribution, without the seed's symbols. */
4
+ function contributionsOf(ctx) {
5
+ const contributions = {};
6
+ for (const [key, value] of Object.entries(ctx)) contributions[key] = value;
7
+ return contributions;
8
+ }
9
+ /** The per-request value a bridge seeds under `key`. */
10
+ function handoffOf(ctx, key) {
11
+ return ctx[key];
12
+ }
13
+ /**
14
+ * Makes the body of `request` readable more than once, in place: the first
15
+ * reader drains the stream into a cache and later readers are served from
16
+ * it, so an entry and the route both see the body. For frameworks that hand
17
+ * the route the same `Request` the middleware saw (TanStack Start,
18
+ * SvelteKit, React Router), where `bufferRequest`'s wrapped copy can't go.
19
+ */
20
+ function bufferInPlace(request) {
21
+ if (!request.body || request.bodyUsed) return;
22
+ const readOnce = request.arrayBuffer.bind(request);
23
+ let buffer;
24
+ const arrayBuffer = () => buffer ??= readOnce();
25
+ const text = async () => new TextDecoder().decode(await arrayBuffer());
26
+ const readers = {
27
+ arrayBuffer,
28
+ text,
29
+ json: async () => JSON.parse(await text()),
30
+ bytes: async () => new Uint8Array(await arrayBuffer()),
31
+ blob: async () => new Blob([await arrayBuffer()]),
32
+ formData: async () => new Response(await arrayBuffer(), { headers: request.headers }).formData(),
33
+ clone: () => request
34
+ };
35
+ for (const [name, value] of Object.entries(readers)) Object.defineProperty(request, name, {
36
+ value,
37
+ configurable: true
38
+ });
39
+ }
40
+ const DOWNSTREAM = Symbol("bridge.downstream");
41
+ /**
42
+ * The shared shape of the upstream bridges: the pipeline folds once, each
43
+ * request seeds the framework's `next` under a symbol, and the terminal
44
+ * hands it the contributions, so response-phase entries see the
45
+ * framework's response. `platform` is the host's env object, if any, which
46
+ * `getEnv` reads first.
47
+ */
48
+ function around(entries) {
49
+ const run = pipeline(entries, (_request, ctx) => handoffOf(ctx, DOWNSTREAM)(contributionsOf(ctx)));
50
+ return (request, platform, downstream) => run(request, {
51
+ ...seedContext(platform),
52
+ [DOWNSTREAM]: downstream
53
+ });
54
+ }
55
+ /**
56
+ * A framework handler's value as a `Response`: responses as is, `undefined`
57
+ * as 204, other values as JSON. `init` carries the status and headers the
58
+ * handler set on the framework's response object.
59
+ */
60
+ function toResponse(value, init = {}) {
61
+ if (value instanceof Response) return value;
62
+ const options = {
63
+ ...init.status === void 0 ? {} : { status: init.status },
64
+ ...init.statusText === void 0 ? {} : { statusText: init.statusText },
65
+ ...init.headers === void 0 ? {} : { headers: init.headers }
66
+ };
67
+ if (value === void 0 || value === null) return new Response(null, {
68
+ status: 204,
69
+ ...options
70
+ });
71
+ if (typeof value === "string") return new Response(value, options);
72
+ return Response.json(value, options);
73
+ }
74
+ //#endregion
75
+ export { toResponse as i, bufferInPlace as n, handoffOf as r, around as t };
@@ -1,4 +1,5 @@
1
- import { n as dbError, t as DbException } from "./errors-DtwXa6b8.js";
1
+ import { t as DbException } from "./db-exception-CnWcYPxL.js";
2
+ import { n as dbError } from "./errors-B11Duf73.js";
2
3
  import { t as lookupOf } from "./lookup-BaP5bI27.js";
3
4
  //#region src/plugins/shared.ts
4
5
  /** Database column name for an app column, or `undefined` if it is unknown. */
@@ -0,0 +1,11 @@
1
+ import { AnyEntry, ValidateEntries } from "@supabase/middleware";
2
+ //#region src/bridges/shared.d.ts
3
+ /**
4
+ * `unknown` when the entries compose, so a parameter typed
5
+ * `Entries & Validated<Entries>` stays `Entries`. Otherwise the engine's
6
+ * error string, and the intersection fails the call with the
7
+ * `middleware-conflict` or `middleware-prereq` message.
8
+ */
9
+ type Validated<Entries extends readonly AnyEntry[]> = [ValidateEntries<Entries>] extends [true] ? unknown : ValidateEntries<Entries>;
10
+ //#endregion
11
+ export { Validated as t };
@@ -0,0 +1,49 @@
1
+ import { t as AuthFailure } from "./auth-link-BjFPqwLz.js";
2
+ import { Provider, SignInWithOAuthCredentials, SignInWithPasswordlessCredentials, SupabaseClient, VerifyOtpParams } from "@supabase/supabase-js";
3
+ //#region src/react/sign-in.d.ts
4
+ type AuthApi = Pick<SupabaseClient["auth"], "signInWithPassword" | "signInWithOtp" | "verifyOtp" | "signInWithOAuth" | "signOut">;
5
+ interface AuthHookOptions {
6
+ /** A supabase-js client for apps without `<BetterSupabaseProvider>`. */
7
+ readonly client?: {
8
+ readonly auth: AuthApi;
9
+ };
10
+ /** Called after a call succeeds, e.g. to navigate. */
11
+ readonly onSuccess?: () => void;
12
+ }
13
+ interface PendingState {
14
+ /** A call is in flight. */
15
+ readonly pending: boolean;
16
+ /** The last call's error; cleared when the next call starts. */
17
+ readonly error: AuthFailure | undefined;
18
+ }
19
+ interface SignIn extends PendingState {
20
+ readonly password: (credentials: {
21
+ readonly email: string;
22
+ readonly password: string;
23
+ }) => Promise<AuthFailure | undefined>;
24
+ /** Sends a magic link or a one-time code to an email or a phone. */
25
+ readonly otp: (credentials: SignInWithPasswordlessCredentials) => Promise<AuthFailure | undefined>;
26
+ /** Checks the code `otp` sent. */
27
+ readonly verifyOtp: (params: VerifyOtpParams) => Promise<AuthFailure | undefined>;
28
+ /** Starts the OAuth redirect. In a browser the page navigates away. */
29
+ readonly oauth: (provider: Provider, options?: SignInWithOAuthCredentials["options"]) => Promise<AuthFailure | undefined>;
30
+ }
31
+ interface SignOut extends PendingState {
32
+ readonly signOut: (options?: {
33
+ readonly scope?: "global" | "local" | "others";
34
+ }) => Promise<AuthFailure | undefined>;
35
+ }
36
+ /**
37
+ * Sign-in calls with `pending` and `error` state. The session lands in the
38
+ * client's auth store, so `useAuth()` updates on its own.
39
+ *
40
+ * ```tsx
41
+ * const signIn = useSignIn({ onSuccess: () => router.push('/') });
42
+ * <button disabled={signIn.pending} onClick={() => signIn.password({ email, password })} />
43
+ * ```
44
+ */
45
+ declare function useSignIn(options?: AuthHookOptions): SignIn;
46
+ /** `auth.signOut()` with `pending` and `error` state. The provider clears cached queries. */
47
+ declare function useSignOut(options?: AuthHookOptions): SignOut;
48
+ //#endregion
49
+ export { useSignIn as a, SignOut as i, PendingState as n, useSignOut as o, SignIn as r, AuthHookOptions as t };