better-supabase 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (536) hide show
  1. package/README.md +299 -41
  2. package/dist/access-sql-B0dF-SoF.js +181 -0
  3. package/dist/actor-CQTlc1Hh.d.ts +43 -0
  4. package/dist/adapter-Bc1o3zyy.js +1106 -0
  5. package/dist/agents-CVHGd7It.d.ts +94 -0
  6. package/dist/ai-cache-CBWs1W0k.js +80 -0
  7. package/dist/ai-cache-DaDu_G5L.d.ts +64 -0
  8. package/dist/ai-chat-7amvXjmQ.d.ts +590 -0
  9. package/dist/ai-chat-B24UI962.js +743 -0
  10. package/dist/ai-files-CSPNswUY.js +319 -0
  11. package/dist/ai-sdk/agents/index.d.ts +74 -0
  12. package/dist/ai-sdk/agents/index.js +159 -0
  13. package/dist/ai-sdk/batches/index.d.ts +74 -0
  14. package/dist/ai-sdk/batches/index.js +180 -0
  15. package/dist/ai-sdk/cache/index.d.ts +38 -0
  16. package/dist/ai-sdk/cache/index.js +127 -0
  17. package/dist/ai-sdk/chat/index.d.ts +2 -0
  18. package/dist/ai-sdk/chat/index.js +246 -0
  19. package/dist/ai-sdk/embeddings/index.d.ts +3 -0
  20. package/dist/ai-sdk/embeddings/index.js +2 -0
  21. package/dist/ai-sdk/files/index.d.ts +61 -0
  22. package/dist/ai-sdk/files/index.js +111 -0
  23. package/dist/ai-sdk/index.d.ts +145 -0
  24. package/dist/ai-sdk/index.js +174 -0
  25. package/dist/ai-sdk/mcp/index.d.ts +102 -0
  26. package/dist/ai-sdk/mcp/index.js +362 -0
  27. package/dist/ai-sdk/memory/index.d.ts +67 -0
  28. package/dist/ai-sdk/memory/index.js +175 -0
  29. package/dist/ai-sdk/react/index.d.ts +2 -0
  30. package/dist/ai-sdk/react/index.js +3 -0
  31. package/dist/ai-sdk/react/server.d.ts +6 -0
  32. package/dist/ai-sdk/react/server.js +7 -0
  33. package/dist/ai-sdk/workflow/index.d.ts +249 -0
  34. package/dist/ai-sdk/workflow/index.js +575 -0
  35. package/dist/ai-sdk/workflow/react/index.d.ts +20 -0
  36. package/dist/ai-sdk/workflow/react/index.js +66 -0
  37. package/dist/ai-sdk/workflow/react/server.d.ts +10 -0
  38. package/dist/ai-sdk/workflow/react/server.js +12 -0
  39. package/dist/ai-tasks-Cd1HMFvB.d.ts +131 -0
  40. package/dist/announcements-CiyOs-xP.js +107 -0
  41. package/dist/announcements-ZRGnScWI.d.ts +72 -0
  42. package/dist/api-keys-rCGtKaZA.d.ts +156 -0
  43. package/dist/assistant-DwdpDH1q.d.ts +147 -0
  44. package/dist/astro/index.d.ts +86 -0
  45. package/dist/astro/index.js +93 -0
  46. package/dist/attributes-5dYul0u0.js +13 -0
  47. package/dist/auth-link-BjFPqwLz.d.ts +97 -0
  48. package/dist/auth-link-DrDX9KOT.js +114 -0
  49. package/dist/authorization-BFCqamMs.d.ts +172 -0
  50. package/dist/before-route-CnR0C0Jr.js +30 -0
  51. package/dist/bind-Bu_ZNa3W.d.ts +62 -0
  52. package/dist/bind-l4kAvYSv.js +97 -0
  53. package/dist/block-events-CrT8r7Fe.js +76 -0
  54. package/dist/block-fields-GFkxl4dP.js +49 -0
  55. package/dist/block-fields-SJ6fEf3o.d.ts +31 -0
  56. package/dist/block-helpers-CKtbFcRv.d.ts +37 -0
  57. package/dist/block-helpers-DWHxHsEQ.js +190 -0
  58. package/dist/block-hooks-BmjMyXTa.js +114 -0
  59. package/dist/block-hooks-plbZ0AbJ.d.ts +107 -0
  60. package/dist/{kit-transport-DJlHQUBU.js → block-transport-BLr-ZgLc.js} +11 -7
  61. package/dist/block-transport-DvaoPuZ9.d.ts +48 -0
  62. package/dist/blocks/agents/index.d.ts +3 -0
  63. package/dist/blocks/agents/index.js +123 -0
  64. package/dist/blocks/ai-cache/index.d.ts +3 -0
  65. package/dist/blocks/ai-cache/index.js +3 -0
  66. package/dist/blocks/ai-chat/index.d.ts +31 -0
  67. package/dist/blocks/ai-chat/index.js +5 -0
  68. package/dist/blocks/ai-chat/react/index.d.ts +77 -0
  69. package/dist/blocks/ai-chat/react/index.js +387 -0
  70. package/dist/blocks/ai-chat/react/server.d.ts +16 -0
  71. package/dist/blocks/ai-chat/react/server.js +14 -0
  72. package/dist/blocks/ai-files/index.d.ts +14 -0
  73. package/dist/blocks/ai-files/index.js +3 -0
  74. package/dist/blocks/ai-providers/index.d.ts +7 -0
  75. package/dist/blocks/ai-providers/index.js +211 -0
  76. package/dist/blocks/ai-tasks/index.d.ts +3 -0
  77. package/dist/blocks/ai-tasks/index.js +203 -0
  78. package/dist/blocks/announcements/index.d.ts +3 -0
  79. package/dist/blocks/announcements/index.js +3 -0
  80. package/dist/blocks/announcements/react/index.d.ts +31 -0
  81. package/dist/blocks/announcements/react/index.js +86 -0
  82. package/dist/blocks/announcements/react/server.d.ts +6 -0
  83. package/dist/blocks/announcements/react/server.js +7 -0
  84. package/dist/blocks/api-keys/index.d.ts +35 -0
  85. package/dist/blocks/api-keys/index.js +334 -0
  86. package/dist/blocks/attachments/index.d.ts +210 -0
  87. package/dist/blocks/attachments/index.js +222 -0
  88. package/dist/blocks/audit/index.d.ts +366 -0
  89. package/dist/blocks/audit/index.js +714 -0
  90. package/dist/blocks/billing/index.d.ts +265 -0
  91. package/dist/blocks/billing/index.js +400 -0
  92. package/dist/blocks/comments/index.d.ts +200 -0
  93. package/dist/blocks/comments/index.js +207 -0
  94. package/dist/blocks/connectors/index.d.ts +3 -0
  95. package/dist/blocks/connectors/index.js +164 -0
  96. package/dist/blocks/data-lifecycle/index.d.ts +251 -0
  97. package/dist/blocks/data-lifecycle/index.js +353 -0
  98. package/dist/blocks/entitlements/index.d.ts +14 -0
  99. package/dist/blocks/entitlements/index.js +25 -0
  100. package/dist/blocks/flags/index.d.ts +226 -0
  101. package/dist/blocks/flags/index.js +282 -0
  102. package/dist/blocks/inbox/index.d.ts +6 -0
  103. package/dist/blocks/inbox/index.js +499 -0
  104. package/dist/blocks/inbox/react/index.d.ts +2 -0
  105. package/dist/blocks/inbox/react/index.js +225 -0
  106. package/dist/blocks/inbox/react/server.d.ts +10 -0
  107. package/dist/blocks/inbox/react/server.js +12 -0
  108. package/dist/blocks/index.d.ts +65 -0
  109. package/dist/blocks/index.js +77 -0
  110. package/dist/blocks/jobs/index.d.ts +297 -0
  111. package/dist/blocks/jobs/index.js +1051 -0
  112. package/dist/blocks/knowledge/index.d.ts +3 -0
  113. package/dist/blocks/knowledge/index.js +3 -0
  114. package/dist/blocks/memory/index.d.ts +8 -0
  115. package/dist/blocks/memory/index.js +289 -0
  116. package/dist/blocks/notifications/index.d.ts +297 -0
  117. package/dist/blocks/notifications/index.js +425 -0
  118. package/dist/blocks/notifications/react/index.d.ts +44 -0
  119. package/dist/blocks/notifications/react/index.js +67 -0
  120. package/dist/blocks/notifications/react/server.d.ts +6 -0
  121. package/dist/blocks/notifications/react/server.js +7 -0
  122. package/dist/blocks/onboarding/index.d.ts +3 -0
  123. package/dist/blocks/onboarding/index.js +64 -0
  124. package/dist/blocks/onboarding/react/index.d.ts +28 -0
  125. package/dist/blocks/onboarding/react/index.js +78 -0
  126. package/dist/blocks/onboarding/react/server.d.ts +7 -0
  127. package/dist/blocks/onboarding/react/server.js +7 -0
  128. package/dist/blocks/organizations/index.d.ts +241 -0
  129. package/dist/blocks/organizations/index.js +400 -0
  130. package/dist/blocks/outbox/index.d.ts +3 -0
  131. package/dist/blocks/outbox/index.js +266 -0
  132. package/dist/blocks/profiles/index.d.ts +40 -0
  133. package/dist/blocks/profiles/index.js +28 -0
  134. package/dist/blocks/push/index.d.ts +185 -0
  135. package/dist/blocks/push/index.js +258 -0
  136. package/dist/blocks/settings/index.d.ts +89 -0
  137. package/dist/blocks/settings/index.js +104 -0
  138. package/dist/blocks/sso/index.d.ts +198 -0
  139. package/dist/blocks/sso/index.js +1297 -0
  140. package/dist/blocks/usage/index.d.ts +4 -0
  141. package/dist/blocks/usage/index.js +233 -0
  142. package/dist/blocks/waitlist/index.d.ts +117 -0
  143. package/dist/blocks/waitlist/index.js +132 -0
  144. package/dist/blocks/webhooks/index.d.ts +304 -0
  145. package/dist/{webhooks → blocks/webhooks}/index.js +468 -148
  146. package/dist/blocks/workflow-builder/index.d.ts +21 -0
  147. package/dist/blocks/workflow-builder/index.js +5 -0
  148. package/dist/blocks/workflow-builder/react/index.d.ts +47 -0
  149. package/dist/blocks/workflow-builder/react/index.js +119 -0
  150. package/dist/blocks/workflow-builder/react/server.d.ts +8 -0
  151. package/dist/blocks/workflow-builder/react/server.js +11 -0
  152. package/dist/blocks/workflows/index.d.ts +3 -0
  153. package/dist/blocks/workflows/index.js +3 -0
  154. package/dist/blocks/workflows/react/index.d.ts +47 -0
  155. package/dist/blocks/workflows/react/index.js +137 -0
  156. package/dist/blocks/workflows/react/server.d.ts +8 -0
  157. package/dist/blocks/workflows/react/server.js +11 -0
  158. package/dist/{index-SaTsEfGP.d.ts → bucket-Cl46E3jS.d.ts} +134 -91
  159. package/dist/{simplify-_0oUKqCd.js → build-BXIzE6Xv.js} +222 -124
  160. package/dist/{channel-FQW-CnGR.d.ts → channel-_2Mx1Oyu.d.ts} +2 -2
  161. package/dist/channels-CkgQ_X60.js +114 -0
  162. package/dist/chat-sdk/index.d.ts +303 -0
  163. package/dist/chat-sdk/index.js +733 -0
  164. package/dist/chat-sdk/react/index.d.ts +2 -0
  165. package/dist/chat-sdk/react/index.js +3 -0
  166. package/dist/chat-sdk/react/server.d.ts +3 -0
  167. package/dist/chat-sdk/react/server.js +2 -0
  168. package/dist/claims-DDBQT6BK.js +61 -0
  169. package/dist/{claims-BAf6c7is.js → claims-PqzCxaTD.js} +39 -2
  170. package/dist/cli/bin.js +1 -1
  171. package/dist/cli/{codemod-DqV7612m.js → codemod-Bl_tQpHn.js} +105 -2
  172. package/dist/cli/config-B9HkL8nF.js +2 -0
  173. package/dist/cli/config-DU7EJImt.js +49 -0
  174. package/dist/cli/config-NiPxAmUF.js +1077 -0
  175. package/dist/cli/{dist-xn4wlboc.js → dist-DRAVaE6w.js} +111 -1
  176. package/dist/cli/{doctor-L7Z8mYTx.js → doctor-B4JOm_ox.js} +992 -316
  177. package/dist/cli/{env-DmKv_G4A.js → env-CJLbUVPB.js} +1 -1
  178. package/dist/cli/{env-jIFUADLY.js → env-qXgyMV6r.js} +2 -2
  179. package/dist/cli/fresh-import-BeYf9I3x.js +40 -0
  180. package/dist/cli/gen-BGLb_zou.js +3100 -0
  181. package/dist/cli/gen-DAH8FM2W.js +2 -0
  182. package/dist/cli/index.d.ts +44 -5
  183. package/dist/cli/index.js +7 -7
  184. package/dist/cli/{init-Saf5-R9T.js → init-BIIwclPg.js} +242 -27
  185. package/dist/cli/{introspect--H7oGmcd.js → introspect-DNUTuNvb.js} +5 -5
  186. package/dist/cli/{io-k41_z-jT.js → io-DI1mTdSA.js} +12 -3
  187. package/dist/cli/{keys-ByKHnvP9.js → keys-BGCnnb-s.js} +8 -6
  188. package/dist/cli/{ohash-D7bG_EOb.js → ohash-BjQY1cBb.js} +1 -1
  189. package/dist/cli/{openapi-Cp5Fyta-.js → openapi-BlRJ18s3.js} +2 -2
  190. package/dist/cli/{project-B_GeXyHh.js → project-DZRaBaY7.js} +11 -6
  191. package/dist/cli/read-sets-CETOSFx4.js +223 -0
  192. package/dist/cli/{run-BKR2W_79.js → run-DNWxHynX.js} +33 -23
  193. package/dist/cli/{seed-CUlqWh-8.js → seed-DQzqT7LP.js} +8 -6
  194. package/dist/cli/{skills-LJJIhLFR.js → skills-QQs4q68J.js} +3 -2
  195. package/dist/cli/sql-D0GUtUPp.js +536 -0
  196. package/dist/cli/{config-CPVpXP5I.js → supabase-toml-B-bIukQF.js} +72 -942
  197. package/dist/cli/typegen-version-DeFbtzYI.js +8 -0
  198. package/dist/cli/{version-BDJuO0UR.js → version-hr88OZG0.js} +1 -1
  199. package/dist/client/index.d.ts +3 -2
  200. package/dist/client/index.js +11 -71
  201. package/dist/client/native/index.d.ts +228 -0
  202. package/dist/client/native/index.js +361 -0
  203. package/dist/client-CI0Z2zWX.js +277 -0
  204. package/dist/cloud-event-BnmD5fb9.js +46 -0
  205. package/dist/cloud-event-C1JCc1bH.d.ts +50 -0
  206. package/dist/{compiler-BXH_aZ7N.d.ts → compiler-DY_wkj4R.d.ts} +2 -2
  207. package/dist/compose-BIBNgAnq.js +53 -0
  208. package/dist/composite-Bt1YK3Ke.d.ts +146 -0
  209. package/dist/composite-DhE66P5u.js +130 -0
  210. package/dist/config/index.d.ts +6 -4
  211. package/dist/config/index.js +5 -5
  212. package/dist/{config-T_ejwyd3.d.ts → config-D44Y7PAv.d.ts} +406 -205
  213. package/dist/{config-DreERlKo.js → config-Dn7F5k9A.js} +62 -14
  214. package/dist/connector-Dv8kK0MO.d.ts +107 -0
  215. package/dist/connectors-hkLCwyEz.d.ts +120 -0
  216. package/dist/context-BCrWe7ow.d.ts +237 -0
  217. package/dist/credentials/index.d.ts +31 -0
  218. package/dist/credentials/index.js +168 -0
  219. package/dist/cron-DVPUg5k3.js +145 -0
  220. package/dist/csv-CPAzEmB6.js +25 -0
  221. package/dist/db-exception-CnWcYPxL.js +15 -0
  222. package/dist/{define-cNKzqwL_.js → define-B-TVjC25.js} +784 -227
  223. package/dist/{define-Bp_BZa5h.d.ts → define-CJJkkr1-.d.ts} +353 -61
  224. package/dist/edge/index.d.ts +69 -11
  225. package/dist/edge/index.js +191 -75
  226. package/dist/elysia/index.d.ts +59 -0
  227. package/dist/elysia/index.js +62 -0
  228. package/dist/embeddings-4ZvFzjsU.js +127 -0
  229. package/dist/embeddings-C9KGQnXt.d.ts +68 -0
  230. package/dist/{refresh-BTrQ_ZTp.d.ts → ended-jLfvw8h-.d.ts} +20 -2
  231. package/dist/{entitlements-DUxU4oHe.d.ts → entitlements-DHrY2UDZ.d.ts} +16 -7
  232. package/dist/entitlements-DRl6ZJUm.js +24 -0
  233. package/dist/envelope-DqnYGRw7.js +47 -0
  234. package/dist/{errors-DtwXa6b8.js → errors-B11Duf73.js} +82 -13
  235. package/dist/errors-DLjJHPLK.js +44 -0
  236. package/dist/escape-like-DHfx6jRr.js +7 -0
  237. package/dist/escape-like-ImTK0ps_.d.ts +15 -0
  238. package/dist/eve/index.d.ts +220 -0
  239. package/dist/eve/index.js +504 -0
  240. package/dist/eve-gT2Fpjut.d.ts +151 -0
  241. package/dist/events/index.d.ts +4 -3
  242. package/dist/events/index.js +9 -50
  243. package/dist/events-DWDhx77e.d.ts +549 -0
  244. package/dist/executor-Bq28caBo.js +718 -0
  245. package/dist/executor-C-R4pucm.js +83 -0
  246. package/dist/executor-CaWigTyR.d.ts +148 -0
  247. package/dist/executor-D14tGopJ.d.ts +36 -0
  248. package/dist/{executor-Cghdstwu.d.ts → executor-DbvExCFC.d.ts} +7 -1
  249. package/dist/{sql-Coh6n4cC.js → executor-De1Of3m3.js} +210 -11
  250. package/dist/executor-DvsBbNBS.d.ts +261 -0
  251. package/dist/expo/index.d.ts +79 -0
  252. package/dist/expo/index.js +129 -0
  253. package/dist/expo-sqlite/index.d.ts +58 -0
  254. package/dist/expo-sqlite/index.js +104 -0
  255. package/dist/field-errors-BFOa7WhB.d.ts +99 -0
  256. package/dist/field-errors-VF1yb8yI.js +13 -0
  257. package/dist/framework-CONDyPYx.js +51 -0
  258. package/dist/framework-DuVb4Xa8.d.ts +25 -0
  259. package/dist/gateway-C1ssRHnf.d.ts +130 -0
  260. package/dist/graph-BGyLLFLX.js +265 -0
  261. package/dist/h3/index.d.ts +59 -0
  262. package/dist/h3/index.js +55 -0
  263. package/dist/h3/v1/index.d.ts +63 -0
  264. package/dist/h3/v1/index.js +49 -0
  265. package/dist/history-BZih6SFP.js +64 -0
  266. package/dist/hono/index.d.ts +56 -7
  267. package/dist/hono/index.js +97 -45
  268. package/dist/{react-C_s7kiNz.js → hooks-1BTCJsiw.js} +104 -133
  269. package/dist/http-Cv4T29xh.js +40 -0
  270. package/dist/http-DdYadv-o.js +126 -0
  271. package/dist/image-url-pIVlO6R1.js +41 -0
  272. package/dist/impersonation-DcqaTBHx.js +148 -0
  273. package/dist/inbox-i7E1ppo6.d.ts +384 -0
  274. package/dist/index-ACiNPN4Z.d.ts +74 -0
  275. package/dist/{index-DgILJRXj.d.ts → index-Bepi-Hgg.d.ts} +91 -28
  276. package/dist/index-BkWT_uBO.d.ts +51 -0
  277. package/dist/index-BpFYMsi0.d.ts +53 -0
  278. package/dist/{index-C7f8cOBM.d.ts → index-Bxih3l0u.d.ts} +2 -2
  279. package/dist/index-CaxrMD1A.d.ts +1 -0
  280. package/dist/index-ClmjK_o-.d.ts +55 -0
  281. package/dist/index-CtuakVRc.d.ts +267 -0
  282. package/dist/index-D48jVS-N.d.ts +246 -0
  283. package/dist/index-DDrYaUcq.d.ts +138 -0
  284. package/dist/index-DQh4VCc9.d.ts +98 -0
  285. package/dist/{live-D9W2M5aO.d.ts → index-DunNRdnT.d.ts} +136 -38
  286. package/dist/index.d.ts +65 -18
  287. package/dist/index.js +42 -14
  288. package/dist/invalidate-BBqhpxyB.d.ts +19 -0
  289. package/dist/json-CEnpTHlZ.js +16 -0
  290. package/dist/json-schema-CvER4kgT.js +502 -0
  291. package/dist/keys-4MnkWTTh.js +35 -0
  292. package/dist/kit-B5tid-q5.d.ts +60 -0
  293. package/dist/kit-Fm-Fv7q5.js +78 -0
  294. package/dist/knowledge-BXBbT0Tr.d.ts +176 -0
  295. package/dist/knowledge-CDmiMLew.js +255 -0
  296. package/dist/lint/index.d.ts +1 -1
  297. package/dist/lint/index.js +37 -0
  298. package/dist/list/index.d.ts +3 -2
  299. package/dist/list/index.js +1 -444
  300. package/dist/{index-fag8VJZ2.d.ts → list-query-BRt-zDF7.d.ts} +20 -12
  301. package/dist/list-query-gl808ac1.js +459 -0
  302. package/dist/{live-CdJBOc4f.js → live-CTAZQkwl.js} +99 -14
  303. package/dist/logger-DWVYUmwi.d.ts +18 -0
  304. package/dist/mcp/index.d.ts +38 -11
  305. package/dist/mcp/index.js +82 -46
  306. package/dist/mcp/sdk/index.d.ts +105 -0
  307. package/dist/mcp/sdk/index.js +126 -0
  308. package/dist/message-CaKlqdsX.js +219 -0
  309. package/dist/message-CfDoR0Y6.d.ts +94 -0
  310. package/dist/messages-B9-5887d.js +715 -0
  311. package/dist/messages-DYP0sUTe.d.ts +59 -0
  312. package/dist/{mfa-CusDgPaD.d.ts → mfa-Daak8ukG.d.ts} +8 -2
  313. package/dist/modules-DpPwzC7E.d.ts +192 -0
  314. package/dist/modules-dxrVK3ID.js +228 -0
  315. package/dist/nestjs/index.d.ts +68 -0
  316. package/dist/nestjs/index.js +164 -0
  317. package/dist/next/client/index.d.ts +35 -0
  318. package/dist/next/client/index.js +36 -0
  319. package/dist/next/image/index.js +3 -24
  320. package/dist/next/index.d.ts +150 -51
  321. package/dist/next/index.js +261 -107
  322. package/dist/node/index.d.ts +4 -0
  323. package/dist/node/index.js +210 -0
  324. package/dist/node-headers-AO06VhqH.d.ts +24 -0
  325. package/dist/node-headers-C71zNQHe.js +55 -0
  326. package/dist/nuxt/index.d.ts +60 -0
  327. package/dist/nuxt/index.js +64 -0
  328. package/dist/onboarding-BZGHYJks.d.ts +62 -0
  329. package/dist/openapi/index.d.ts +1 -1
  330. package/dist/openapi/index.js +3 -3
  331. package/dist/orpc/index.d.ts +70 -11
  332. package/dist/orpc/index.js +73 -24
  333. package/dist/otel/index.d.ts +7 -7
  334. package/dist/otel/index.js +87 -57
  335. package/dist/outbox-Cq7pPYvl.d.ts +161 -0
  336. package/dist/{plugin-o144f322.d.ts → plugin-FGY8UhYm.d.ts} +30 -10
  337. package/dist/plugin-tfXW1-qO.js +45 -0
  338. package/dist/plugins/actor/index.d.ts +2 -2
  339. package/dist/plugins/actor/index.js +3 -3
  340. package/dist/plugins/rules/index.d.ts +11 -4
  341. package/dist/plugins/rules/index.js +40 -13
  342. package/dist/plugins/soft-delete/index.d.ts +5 -4
  343. package/dist/plugins/soft-delete/index.js +10 -5
  344. package/dist/plugins/tenant/index.d.ts +2 -2
  345. package/dist/plugins/tenant/index.js +18 -11
  346. package/dist/plugins/timestamps/index.d.ts +5 -3
  347. package/dist/plugins/timestamps/index.js +6 -4
  348. package/dist/plugins/validation/index.d.ts +2 -2
  349. package/dist/plugins/validation/index.js +10 -6
  350. package/dist/{pool-C9voM4Kw.d.ts → pool-CAu2nLrL.d.ts} +2 -2
  351. package/dist/postgres/index.d.ts +4 -4
  352. package/dist/postgres/index.js +1 -2
  353. package/dist/{postgrest-CruYKAvV.d.ts → postgrest-BLVdEnfe.d.ts} +13 -3
  354. package/dist/powersync/index.d.ts +43 -0
  355. package/dist/powersync/index.js +199 -0
  356. package/dist/powersync/react/index.d.ts +87 -0
  357. package/dist/powersync/react/index.js +108 -0
  358. package/dist/{problem-BW1KhzSG.js → problem-BreOl8b8.js} +14 -3
  359. package/dist/{problem-Blxe8S31.d.ts → problem-DD8LZFjc.d.ts} +21 -3
  360. package/dist/provider-BH5UWZJ6.d.ts +113 -0
  361. package/dist/provider-Di3sRutW.js +57 -0
  362. package/dist/query/index.d.ts +4 -2
  363. package/dist/query/index.js +4 -3
  364. package/dist/{query-CCbo44lG.js → query-BQ-NaZon.js} +141 -24
  365. package/dist/{queue-BYUCjr59.d.ts → queue-CLJurhdy.d.ts} +258 -83
  366. package/dist/react/index.d.ts +11 -7
  367. package/dist/react/index.js +7 -3
  368. package/dist/react/native/index.d.ts +116 -0
  369. package/dist/react/native/index.js +130 -0
  370. package/dist/react/server.d.ts +28 -10
  371. package/dist/react/server.js +22 -5
  372. package/dist/react/session.d.ts +2 -2
  373. package/dist/react-4ZqkP8da.js +79 -0
  374. package/dist/react-F80mF4-t.js +409 -0
  375. package/dist/react-router/index.d.ts +83 -0
  376. package/dist/react-router/index.js +89 -0
  377. package/dist/react-topic-seAWjL3_.js +38 -0
  378. package/dist/{read-set-DQFt1N_Y.js → read-set-DuKWC9Mj.js} +67 -25
  379. package/dist/realtime/index.d.ts +4 -5
  380. package/dist/realtime/index.js +144 -82
  381. package/dist/refusal-CeJWxmkH.js +61 -0
  382. package/dist/refusal-D1rgbzNq.d.ts +15 -0
  383. package/dist/replicas-CwrYp5Zj.js +94 -0
  384. package/dist/{view-Bq64ki8-.js → resolve-D_IcnvFd.js} +239 -289
  385. package/dist/{resolve-C15TJq77.d.ts → resolve-KW8nCeL6.d.ts} +29 -45
  386. package/dist/{resource-CRxxwkQq.js → resource-BsvzCMlX.js} +4 -4
  387. package/dist/{resource-D8iqWMr-.d.ts → resource-D6Uc7Sk7.d.ts} +5 -5
  388. package/dist/respond-BUgsXNgk.js +91 -0
  389. package/dist/respond-DoBijysA.d.ts +93 -0
  390. package/dist/result-D7y2fT87.d.ts +282 -0
  391. package/dist/{result-BKiliPY7.js → result-DzUbqgdW.js} +27 -2
  392. package/dist/run-state-CPo-1X2B.d.ts +12 -0
  393. package/dist/run-state-CgBKzYMW.js +13 -0
  394. package/dist/search-CUWCRYKL.js +9 -0
  395. package/dist/server/index.d.ts +143 -21
  396. package/dist/server/index.js +46 -14
  397. package/dist/{respond-D2OQl62-.d.ts → server-CeVeeXwz.d.ts} +225 -80
  398. package/dist/session-ChiXDZdZ.d.ts +72 -0
  399. package/dist/shared-CBxosKK3.js +75 -0
  400. package/dist/{shared-D1dRUrAg.js → shared-CxWmcyqB.js} +2 -1
  401. package/dist/shared-DDSjEGDR.d.ts +11 -0
  402. package/dist/sign-in-BCV5S2WZ.d.ts +49 -0
  403. package/dist/sign-in-Cb1mwv6X.js +86 -0
  404. package/dist/{signers-Cc6r98SW.d.ts → signers-4y62_VIi.d.ts} +13 -9
  405. package/dist/simplify-DDO0j0LI.js +83 -0
  406. package/dist/solid/index.d.ts +131 -0
  407. package/dist/solid/index.js +344 -0
  408. package/dist/solid-start/index.d.ts +75 -0
  409. package/dist/solid-start/index.js +58 -0
  410. package/dist/{spec-pins-C3oc-Tdp.js → spec-pins--j6mTok4.js} +8 -1
  411. package/dist/{spec-pins-CqorWDnO.d.ts → spec-pins-C89s6DyW.d.ts} +7 -0
  412. package/dist/sql/index.d.ts +330 -194
  413. package/dist/sql/index.js +34901 -6489
  414. package/dist/ssr/index.d.ts +6 -5
  415. package/dist/ssr/index.js +3 -3
  416. package/dist/{standard-D7r6dMUu.js → standard-BK0cqJ7y.js} +4 -3
  417. package/dist/{standard-J4YgMOLm.d.ts → standard-CYsm7xpT.d.ts} +1 -1
  418. package/dist/stats-D_AD9GGu.js +1123 -0
  419. package/dist/storage/index.d.ts +5 -5
  420. package/dist/storage/index.js +1027 -368
  421. package/dist/store-BdH5ruDx.js +66 -0
  422. package/dist/store-CGjgWu5n.d.ts +68 -0
  423. package/dist/streams/index.d.ts +76 -0
  424. package/dist/streams/index.js +77 -0
  425. package/dist/streams/redis/index.d.ts +52 -0
  426. package/dist/streams/redis/index.js +185 -0
  427. package/dist/stripe-BMj5LtsT.js +38 -0
  428. package/dist/stripe-D04h-QBT.d.ts +136 -0
  429. package/dist/{support-Dk6vdmEw.js → support-BivNqSpK.js} +35 -12
  430. package/dist/{support-view-Da5peKFg.d.ts → support-view-33Oi07TT.d.ts} +1 -1
  431. package/dist/svelte/index.d.ts +114 -0
  432. package/dist/svelte/index.js +344 -0
  433. package/dist/sveltekit/index.d.ts +116 -0
  434. package/dist/sveltekit/index.js +106 -0
  435. package/dist/tags-B99_U9Pp.js +39 -0
  436. package/dist/tags-Cx-LnIQP.d.ts +30 -0
  437. package/dist/tanstack-db/index.d.ts +71 -0
  438. package/dist/tanstack-db/index.js +72 -0
  439. package/dist/tanstack-start/index.d.ts +75 -0
  440. package/dist/tanstack-start/index.js +95 -0
  441. package/dist/tee-CoEppCER.js +101 -0
  442. package/dist/{template-TxrGI5jR.js → template--jDkl3UP.js} +34 -13
  443. package/dist/template-CwO38Do8.d.ts +6 -0
  444. package/dist/temporal-BJGitm-h.js +79 -0
  445. package/dist/{temporal-required-CAt4Dc9Z.js → temporal-required-BVvW7SYJ.js} +3 -2
  446. package/dist/tenant-I1TEZ_BX.js +27 -0
  447. package/dist/tenant-icPeuUBN.d.ts +17 -0
  448. package/dist/testing/index.d.ts +343 -37
  449. package/dist/testing/index.js +1186 -79
  450. package/dist/timing-CyTQPubY.js +92 -0
  451. package/dist/ttl-Hr34gRu8.js +12 -0
  452. package/dist/{types-Dnf_wRDz.d.ts → types-6BdhkmZe.d.ts} +111 -45
  453. package/dist/types-BI-0Sl2v.d.ts +359 -0
  454. package/dist/types-C05bxW-W.d.ts +220 -0
  455. package/dist/types-DGs5L0VN.d.ts +192 -0
  456. package/dist/types-TaiEeBGA.d.ts +156 -0
  457. package/dist/usage-CrvrL2vw.d.ts +177 -0
  458. package/dist/user-change-XzvgafU4.js +130 -0
  459. package/dist/vault-CSO7ss5C.d.ts +50 -0
  460. package/dist/vercel-connect/index.d.ts +47 -0
  461. package/dist/vercel-connect/index.js +119 -0
  462. package/dist/{verify-Ce49ETPz.js → verify-DL41hbvY.js} +85 -13
  463. package/dist/verify-DPuWngD4.d.ts +172 -0
  464. package/dist/{version-DM_Roffb.js → version-Bvv6aLjZ.js} +1 -1
  465. package/dist/view-BeFcRV6G.js +99 -0
  466. package/dist/{view-BEf0diC5.d.ts → view-DbxLNu8L.d.ts} +35 -32
  467. package/dist/vue/index.d.ts +141 -0
  468. package/dist/vue/index.js +362 -0
  469. package/dist/watch-DI34G86j.d.ts +60 -0
  470. package/dist/watch-Xuxrvxq-.js +122 -0
  471. package/dist/{wire-D2dT86vi.js → wire-DtZQ4sdE.js} +15 -5
  472. package/dist/workflow-builder-DJ1oHn8g.js +398 -0
  473. package/dist/workflow-sdk/builder/index.d.ts +85 -0
  474. package/dist/workflow-sdk/builder/index.js +250 -0
  475. package/dist/workflow-sdk/index.d.ts +14 -0
  476. package/dist/workflow-sdk/index.js +3 -0
  477. package/dist/workflow-sdk/world/index.d.ts +107 -0
  478. package/dist/workflow-sdk/world/index.js +702 -0
  479. package/dist/workflow-sdk-B3yLD6Br.d.ts +98 -0
  480. package/dist/workflow-sdk-C2WJ_G2O.js +173 -0
  481. package/dist/workflow-sdk-world-D-prir6O.js +1397 -0
  482. package/dist/workflows-B0j9WKPu.d.ts +185 -0
  483. package/dist/workflows-wu1WWBn7.js +216 -0
  484. package/package.json +470 -29
  485. package/schemas/ai-message-v1.json +258 -0
  486. package/schemas/config-v1.json +1074 -140
  487. package/schemas/doctor-report-v1.json +21 -1
  488. package/schemas/snapshot-v2.json +8 -0
  489. package/skills/better-supabase/SKILL.md +41 -12
  490. package/skills/better-supabase/references/frontend.md +96 -0
  491. package/skills/better-supabase/references/plugins.md +10 -6
  492. package/skills/better-supabase/references/troubleshooting.md +2 -1
  493. package/skills/better-supabase-api/SKILL.md +76 -22
  494. package/skills/better-supabase-api/references/adapters.md +207 -0
  495. package/skills/better-supabase-api/references/ai.md +125 -0
  496. package/skills/better-supabase-api/references/expo.md +65 -0
  497. package/skills/better-supabase-api/references/powersync.md +35 -0
  498. package/skills/better-supabase-api/references/streams-credentials.md +105 -0
  499. package/skills/better-supabase-auth/SKILL.md +62 -18
  500. package/skills/better-supabase-auth/references/authorization-providers.md +51 -0
  501. package/skills/better-supabase-testing/SKILL.md +3 -1
  502. package/dist/cli/config-dtoekM0v.js +0 -2
  503. package/dist/cli/gen-BJc9vdyu.js +0 -2
  504. package/dist/cli/gen-C2osRcr5.js +0 -2204
  505. package/dist/cli/read-sets-BfMQcKy8.js +0 -289
  506. package/dist/cli/sql-DzPbfngx.js +0 -348
  507. package/dist/entitlements-CTEBm7IB.js +0 -20
  508. package/dist/events-aIO7vsIk.d.ts +0 -230
  509. package/dist/executor-BunPOO-k.d.ts +0 -402
  510. package/dist/executor-XycESQPH.js +0 -94
  511. package/dist/impersonation-VfaGc4Q_.js +0 -41
  512. package/dist/index-BGdgBPdf.d.ts +0 -161
  513. package/dist/index-DOESKG27.d.ts +0 -100
  514. package/dist/index-DmXSxbLi.d.ts +0 -62
  515. package/dist/index-Dxn2a5cw.d.ts +0 -50
  516. package/dist/jobs/index.d.ts +0 -226
  517. package/dist/jobs/index.js +0 -1007
  518. package/dist/json-schema-m1fiwKgN.js +0 -208
  519. package/dist/kit-events-CTFDfSwb.js +0 -60
  520. package/dist/kit-transport-B82k1djG.d.ts +0 -33
  521. package/dist/kits-CGLLrNPd.js +0 -157
  522. package/dist/notifications/index.d.ts +0 -162
  523. package/dist/notifications/index.js +0 -264
  524. package/dist/orgs/index.d.ts +0 -132
  525. package/dist/orgs/index.js +0 -245
  526. package/dist/permdock-sql-C2Inc6Xc.d.ts +0 -29
  527. package/dist/permdock-sql-DgOfeixi.js +0 -51
  528. package/dist/plugin-DwARMuQp.js +0 -59
  529. package/dist/server-Csx2sRjg.js +0 -655
  530. package/dist/stats-Bqob3WqT.js +0 -592
  531. package/dist/support-DT-OhSxD.d.ts +0 -88
  532. package/dist/template-mbvlysOo.d.ts +0 -6
  533. package/dist/temporal-CVlIV2DZ.js +0 -40
  534. package/dist/user-change-CHFEUro1.js +0 -49
  535. package/dist/webhooks/index.d.ts +0 -285
  536. package/skills/better-supabase-auth/references/permdock.md +0 -100
@@ -1,148 +1,135 @@
1
1
  /// <reference lib="esnext.temporal" />
2
- import { a as BucketPolicyName, j as SchemaMeta, o as Casing, t as AccessBucketPolicy, x as PermdockBucketPolicy } from "./types-Dnf_wRDz.js";
3
- import { GeneratorMetadata } from "@supabase/postgrest-typegen";
4
- //#region src/config/kits.d.ts
2
+ import { P as SchemaMeta, U as BucketLifecycle, c as Casing, s as BucketPolicyName, t as AccessBucketPolicy } from "./types-6BdhkmZe.js";
3
+ import { s as ModulesConfig } from "./modules-DpPwzC7E.js";
4
+ import { i as AuthorizationProvider } from "./authorization-BFCqamMs.js";
5
+ //#region src/config/generator-metadata.d.ts
5
6
  /**
6
- * `kits` in `better-supabase.config.ts`: how each SQL kit module maps onto
7
- * the app's database. A module's contract (the functions other modules and
8
- * the TypeScript side call) stays the same in every mode; only the tables
9
- * behind it change.
7
+ * A copy of `@supabase/postgrest-typegen`'s `GeneratorMetadata` contract
8
+ * (version 1), so the published types don't reference the package: it is an
9
+ * optional peer that only the CLI loads. `tests/config/generator-metadata.test-d.ts`
10
+ * checks the copy against the pinned version.
10
11
  */
11
- /**
12
- * `managed`: the kit owns its tables. `adopt`: the kit writes its functions
13
- * and views over tables the app already has (`tables` and `columns`), never
14
- * `create table`. `custom`: the app implements the contract functions itself;
15
- * the kit writes nothing and doctor checks the signatures (BS307).
16
- */
17
- type KitMode = "managed" | "adopt" | "custom";
18
- /** Options every module takes. */
19
- interface KitModuleConfig {
20
- readonly mode?: KitMode;
21
- /** Schema of the module's functions and managed tables. Defaults to `better_supabase`. */
22
- readonly schema?: string;
23
- /**
24
- * Logical table to `table` or `schema.table`, e.g.
25
- * `{ memberships: 'public.organization_users' }`. An unqualified name is in
26
- * `schema`. `null` marks an optional table the app doesn't have.
27
- */
28
- readonly tables?: Readonly<Record<string, string | null>>;
29
- /**
30
- * Logical table to logical column to column name, e.g.
31
- * `{ memberships: { tenant: 'organization_id', role: 'role_id' } }`.
32
- * `null` marks an optional column the adopted table doesn't have.
33
- */
34
- readonly columns?: Readonly<Record<string, Readonly<Record<string, string | null>>>>;
35
- /** Type of tenant ids: `uuid` (default), `text`, `bigint` or `integer`. */
36
- readonly idType?: string;
37
- /**
38
- * Kit action to permission key, checked through the access contract, e.g.
39
- * `{ invite: 'organization.members.invite' }`.
40
- */
41
- readonly permissions?: Readonly<Record<string, string>>;
42
- /** Module-specific options; each module's docs page lists them. */
43
- readonly options?: Readonly<Record<string, unknown>>;
44
- /**
45
- * The app's optional `before_*` and `after_*` functions the module calls
46
- * when they exist, e.g. `after_organization_create(org, user)`. They are
47
- * looked up in `schema` (default `public`); `functions` maps a hook name
48
- * to another function, e.g. `{ after_organization_create: 'app.seed_org' }`.
49
- */
50
- readonly hooks?: {
51
- readonly schema?: string;
52
- readonly functions?: Readonly<Record<string, string>>;
53
- };
54
- /**
55
- * Whether the module writes its events to the outbox (`emit_event`) when
56
- * the `outbox` module is installed. Defaults to true.
57
- */
58
- readonly events?: boolean;
59
- }
60
- /**
61
- * Where the active tenant of a request comes from. Every source counts only
62
- * while the caller is a member, so a stale claim or setting grants nothing.
63
- */
64
- type ActiveTenantSource = "claim" | "resolver" | {
65
- readonly profileColumn: string;
66
- readonly key?: string;
67
- };
68
- /** URL tenancy: the tenant comes from the request (a slug), not a stored setting. */
69
- declare const DEFAULT_ACTIVE_TENANT: ActiveTenantSource;
70
- /**
71
- * The access contract every kit checks permissions through:
72
- * `can(scope, id, permission)`, `tenant_ids_with(permission)`,
73
- * `is_platform(permission)` and `can_user(user, scope, id, permission)`.
74
- */
75
- interface AccessKitConfig extends KitModuleConfig {
76
- /**
77
- * `roles`: a fixed role list from `roles` (the default). `catalog`: role,
78
- * permission and override tables (`tables.roles`, `permissions`,
79
- * `rolePermissions`, `overrides`, `platformAssignments`). `permdock`:
80
- * PermDock's `permitted_<scope>_ids` and `permdock_has`. `custom`:
81
- * expression templates in `functions`.
82
- */
83
- readonly model?: "roles" | "catalog" | "permdock" | "custom";
84
- /**
85
- * `roles` model: role name to permission keys. `*` grants everything and
86
- * `prefix.*` a prefix. Defaults to owner, admin, member and viewer.
87
- */
88
- readonly roles?: Readonly<Record<string, readonly string[]>>;
89
- /**
90
- * `custom` model: SQL expressions with `{scope}`, `{id}`, `{permission}`
91
- * and `{user}` placeholders, e.g.
92
- * `{ can: 'public.authorize_scope({scope}::public.scope_type, {id}, {permission})' }`.
93
- */
94
- readonly functions?: {
95
- readonly can?: string;
96
- readonly tenantIdsWith?: string;
97
- readonly isPlatform?: string;
98
- readonly canUser?: string;
99
- /** `{tenant}` and `{role}`: whether the caller may assign the role. Defaults to true. */
100
- readonly canAssign?: string;
101
- /** `{user}`: the permission claim for the access token hook. */
102
- readonly permissionClaims?: string;
103
- };
104
- /**
105
- * `roles` model: the JWT claim holding the caller's platform permission
106
- * keys (an array). Defaults to `platform_permissions`.
107
- */
108
- readonly platformClaim?: string;
109
- /**
110
- * Columns that disable a tenant or a user when set, as
111
- * `schema.table.column`, keyed by the table's `id` (tenant) or the column
112
- * named in `userKey` (user). Disabled tenants and users get no permissions.
113
- */
114
- readonly disabled?: {
115
- readonly tenant?: string;
116
- readonly user?: string;
117
- readonly userKey?: string;
118
- };
119
- readonly activeTenant?: ActiveTenantSource;
120
- /** `permdock` model: PermDock's `rls.schema` and the scope tenants are. */
121
- readonly permdock?: {
122
- readonly schema?: string;
123
- readonly scope?: string;
124
- };
125
- }
126
- /** `kits` in the config, keyed by module name. */
127
- interface KitsConfig {
128
- readonly access?: AccessKitConfig;
129
- /** `AccessKitConfig` is listed so an `access` literal passes the excess-property check. */
130
- readonly [module: string]: KitModuleConfig | AccessKitConfig | undefined;
131
- }
132
- /** A module's config with defaults applied. */
133
- interface ResolvedKitModule {
134
- readonly mode: KitMode;
135
- readonly schema: string;
136
- readonly tables: Readonly<Record<string, string | null>>;
137
- readonly columns: Readonly<Record<string, Readonly<Record<string, string | null>>>>;
138
- readonly idType?: string;
139
- readonly permissions: Readonly<Record<string, string>>;
140
- readonly options: Readonly<Record<string, unknown>>;
141
- readonly hooks: {
142
- readonly schema: string;
143
- readonly functions: Readonly<Record<string, string>>;
144
- };
145
- readonly events: boolean;
12
+ interface PostgresColumn {
13
+ table_id: number;
14
+ schema: string;
15
+ table: string;
16
+ id: string;
17
+ ordinal_position: number;
18
+ name: string;
19
+ default_value: unknown;
20
+ data_type: string;
21
+ format: string;
22
+ type_schema: string;
23
+ is_identity: boolean;
24
+ identity_generation: "ALWAYS" | "BY DEFAULT" | null;
25
+ is_generated: boolean;
26
+ is_nullable: boolean;
27
+ is_updatable: boolean;
28
+ is_unique: boolean;
29
+ enums: string[];
30
+ check: string | null;
31
+ comment: string | null;
32
+ }
33
+ interface PostgresFunctionArg {
34
+ mode: "in" | "inout" | "out" | "table" | "variadic";
35
+ name: string;
36
+ type_id: number;
37
+ has_default: boolean | null;
38
+ }
39
+ interface PostgresFunction {
40
+ id: number;
41
+ schema: string;
42
+ name: string;
43
+ language: string;
44
+ definition: string;
45
+ complete_statement: string;
46
+ args: PostgresFunctionArg[];
47
+ argument_types: string;
48
+ identity_argument_types: string;
49
+ return_type_id: number;
50
+ return_type: string;
51
+ return_type_relation_id: number | null;
52
+ is_set_returning_function: boolean;
53
+ prorows: number | null;
54
+ behavior: "IMMUTABLE" | "STABLE" | "VOLATILE";
55
+ security_definer: boolean;
56
+ config_params: {
57
+ [x: string]: string;
58
+ } | null;
59
+ }
60
+ interface GeneratorMetadata {
61
+ version: 1;
62
+ schemas: {
63
+ id: number;
64
+ name: string;
65
+ owner: string;
66
+ }[];
67
+ tables: {
68
+ bytes: number;
69
+ comment: string | null;
70
+ dead_rows_estimate: number;
71
+ id: number;
72
+ live_rows_estimate: number;
73
+ name: string;
74
+ replica_identity: "DEFAULT" | "FULL" | "INDEX" | "NOTHING";
75
+ rls_enabled: boolean;
76
+ rls_forced: boolean;
77
+ schema: string;
78
+ size: string;
79
+ }[];
80
+ foreignTables: {
81
+ comment: string | null;
82
+ id: number;
83
+ name: string;
84
+ schema: string;
85
+ }[];
86
+ views: {
87
+ comment: string | null;
88
+ id: number;
89
+ is_insert_enabled?: boolean | undefined;
90
+ is_updatable: boolean;
91
+ is_update_enabled?: boolean | undefined;
92
+ name: string;
93
+ schema: string;
94
+ }[];
95
+ materializedViews: {
96
+ comment: string | null;
97
+ id: number;
98
+ is_populated: boolean;
99
+ name: string;
100
+ schema: string;
101
+ }[];
102
+ columns: PostgresColumn[];
103
+ primaryKeys: {
104
+ schema: string;
105
+ table_name: string;
106
+ name: string;
107
+ table_id: number;
108
+ }[];
109
+ relationships: {
110
+ foreign_key_name: string;
111
+ schema: string;
112
+ relation: string;
113
+ columns: string[];
114
+ is_one_to_one: boolean;
115
+ referenced_schema: string;
116
+ referenced_relation: string;
117
+ referenced_columns: string[];
118
+ }[];
119
+ functions: PostgresFunction[];
120
+ types: {
121
+ id: number;
122
+ name: string;
123
+ schema: string;
124
+ format: string;
125
+ enums: string[];
126
+ attributes: {
127
+ name: string;
128
+ type_id: number;
129
+ }[];
130
+ comment: string | null;
131
+ type_relation_id: number | null;
132
+ }[];
146
133
  }
147
134
  //#endregion
148
135
  //#region src/config/snapshot.d.ts
@@ -182,6 +169,13 @@ interface SnapshotExtras {
182
169
  * in any schema. Absent in older snapshots and without a `config.toml`.
183
170
  */
184
171
  readonly hooks?: readonly ExtrasHook[];
172
+ /**
173
+ * Set when the snapshot comes from a `GeneratorMetadata` document alone
174
+ * (`gen --metadata`): unique keys, checks and foreign keys are inferred from
175
+ * the columns and relationships, and the rest is empty, so doctor skips
176
+ * the rules that read it.
177
+ */
178
+ readonly fromMetadata?: true;
185
179
  }
186
180
  /** An `[auth.hook.<name>]` with a `pg-functions://` URI. */
187
181
  interface ExtrasHook {
@@ -209,7 +203,7 @@ interface ExtrasHookFunction extends ExtrasFunction {
209
203
  interface ExtrasFunction {
210
204
  readonly schema: string;
211
205
  readonly name: string;
212
- /** Identity arguments, e.g. `org uuid`. */
206
+ /** Identity arguments, e.g. `organization uuid`. */
213
207
  readonly signature: string;
214
208
  /** `sql`, `plpgsql`, `c`, ... */
215
209
  readonly language: string;
@@ -298,6 +292,10 @@ interface SnapshotBucket {
298
292
  readonly public: boolean;
299
293
  readonly fileSizeLimit: number | null;
300
294
  readonly allowedMimeTypes: readonly string[] | null;
295
+ /** `versioning_status`; absent when Storage has no versioning. */
296
+ readonly versioning?: "DISABLED" | "ENABLED" | "SUSPENDED" | null;
297
+ /** `lifecycle_configuration`; absent when Storage has no lifecycles. */
298
+ readonly lifecycle?: unknown;
301
299
  }
302
300
  /**
303
301
  * The snapshot joined into one record per table, function and enum. Codegen
@@ -379,9 +377,13 @@ interface CatalogFunction {
379
377
  readonly returnsTable: readonly {
380
378
  readonly name: string;
381
379
  readonly udt: string;
380
+ /** Schema of the column's type, when typegen knows it. */
381
+ readonly typeSchema?: string;
382
382
  }[] | null;
383
383
  /** Return type name (`int4`, `_text`, a table's row type). */
384
384
  readonly returns: string;
385
+ /** Schema of the return type, when typegen knows it. */
386
+ readonly returnsSchema?: string;
385
387
  /** `schema.table` when the function returns rows of a table or view. */
386
388
  readonly returnsRelation: string | null;
387
389
  readonly returnsSet: boolean;
@@ -394,6 +396,8 @@ interface CatalogFunction {
394
396
  interface CatalogFunctionArg {
395
397
  readonly name: string;
396
398
  readonly udt: string;
399
+ /** Schema of the argument's type, when typegen knows it. */
400
+ readonly typeSchema?: string;
397
401
  readonly isArray: boolean;
398
402
  readonly hasDefault: boolean;
399
403
  }
@@ -446,8 +450,25 @@ interface TableConfig {
446
450
  readonly casing?: Casing;
447
451
  /** Leave the table out of the generated models. */
448
452
  readonly exclude?: boolean;
453
+ /**
454
+ * Keep the table off the Data API on purpose: only `service_role` reaches
455
+ * it. The models are still generated for admin clients, and doctor (BS106)
456
+ * checks that `anon` and `authenticated` have no grants instead of
457
+ * requiring them.
458
+ */
459
+ readonly serviceRole?: boolean;
449
460
  /** Rename generated relations: `{ primaryContact: 'contact' }`. */
450
461
  readonly relations?: Readonly<Record<string, string>>;
462
+ /**
463
+ * Database names of not-null columns an insert may leave out because the
464
+ * database fills them, for example from a `before insert` trigger. `gen`
465
+ * makes them optional in `InsertOf` and the insert validators.
466
+ */
467
+ readonly insertOptional?: readonly string[];
468
+ }
469
+ interface FunctionConfig {
470
+ /** `true`, or the `returns table` columns (database names) that are never null. */
471
+ readonly notNull?: true | readonly string[];
451
472
  }
452
473
  interface TimestampsConfig {
453
474
  readonly createdAt?: string;
@@ -459,10 +480,7 @@ interface SoftDeleteConfig {
459
480
  interface TenantConfig {
460
481
  readonly column?: string;
461
482
  }
462
- /**
463
- * Claim names shared by the SQL kit, codegen and the runtime defaults. They
464
- * follow PermDock's claim contract.
465
- */
483
+ /** Claim names shared by the SQL modules, codegen and the runtime defaults. */
466
484
  interface ClaimsConfig {
467
485
  /** Top-level claim holding the active tenant id. Defaults to `tenant_id`. */
468
486
  readonly tenant?: string;
@@ -470,11 +488,13 @@ interface ClaimsConfig {
470
488
  readonly scope?: string;
471
489
  /** Claim holding plan features per tenant (`{ [tenantId]: string[] }`). Defaults to `features`. */
472
490
  readonly features?: string;
491
+ /** Claim the memberships hook (`membership_claims()` or the provider's) writes. Defaults to `memberships`. */
492
+ readonly memberships?: string;
473
493
  }
474
494
  interface ActorConfig {
475
495
  readonly createdBy?: string;
476
496
  readonly updatedBy?: string;
477
- /** Defaults to `impersonated_by`, the column the SQL kit's `track_actor` fills. */
497
+ /** Defaults to `impersonated_by`, the column the SQL modules' `track_actor` fills. */
478
498
  readonly impersonatedBy?: string;
479
499
  }
480
500
  interface PluginFlagsConfig {
@@ -486,15 +506,20 @@ interface PluginFlagsConfig {
486
506
  interface BucketConfig {
487
507
  readonly id?: string;
488
508
  readonly public?: boolean;
489
- /** Path template with `{placeholders}`, e.g. `{orgId}/{customerId}/logo.webp`. */
490
- readonly path: string;
491
509
  /**
492
- * Generated storage policy, a PermDock policy (`{ permdock, scope }`) or
493
- * an access contract policy (`{ access }`).
510
+ * Path template with `{placeholders}`, e.g. `{organizationId}/{customerId}/logo.webp`,
511
+ * or several when the bucket stores objects in more than one layout. A last
512
+ * segment `{...rest}` matches one or more segments.
494
513
  */
495
- readonly policy?: BucketPolicyName | PermdockBucketPolicy | AccessBucketPolicy;
514
+ readonly path: string | readonly [string, ...string[]];
515
+ /** Generated storage policy, or an access contract policy (`{ access }`). */
516
+ readonly policy?: BucketPolicyName | AccessBucketPolicy;
496
517
  readonly fileSizeLimit?: string;
497
518
  readonly allowedMimeTypes?: readonly string[];
519
+ /** Keep earlier object versions. `bucket.apply()` sets it; doctor (BS302) compares it. */
520
+ readonly versioning?: boolean;
521
+ /** When noncurrent versions expire. Needs `versioning: true`. */
522
+ readonly lifecycle?: BucketLifecycle;
498
523
  }
499
524
  interface SqlConfig {
500
525
  /** Directory declarative schema files are written to. */
@@ -503,8 +528,20 @@ interface SqlConfig {
503
528
  readonly prefix?: string;
504
529
  /** Directory pgTAP files (the `pgtap` module) are written to. */
505
530
  readonly testsDir?: string;
506
- /** SQL kit modules to keep in sync (`better-supabase sql add`). */
507
- readonly kit?: readonly string[];
531
+ /**
532
+ * The SQL modules to keep in sync (`better-supabase sql add`): a list of
533
+ * names, or an object keyed by module name whose values set each module's
534
+ * mode, schema, table and column names, permission keys and options.
535
+ */
536
+ readonly modules?: readonly string[] | ModulesConfig;
537
+ }
538
+ /** `sql` with defaults applied: settings per module, and their names in order. */
539
+ interface ResolvedSqlConfig {
540
+ readonly dir: string;
541
+ readonly prefix: string;
542
+ readonly testsDir: string;
543
+ readonly modules: ModulesConfig;
544
+ readonly moduleNames: readonly string[];
508
545
  }
509
546
  interface SeedConfig {
510
547
  /** Module exporting `defineSeed(...)` as `seed` or default. */
@@ -534,10 +571,9 @@ interface DoctorConfig {
534
571
  */
535
572
  readonly policyHelperLimit?: number;
536
573
  /**
537
- * The BS405 limit in bytes. With a `permdock.config.ts` it is PermDock's
538
- * budget for `memberships` plus `attrs` (default 1024, matching
539
- * `supabase.hook.budget`) and the whole token keeps 2048. Without one it
540
- * limits the whole token's claims (default 2048).
574
+ * The BS405 limit in bytes. When the authorization provider's token hook
575
+ * has a budget, it replaces that budget and the whole token keeps 2048.
576
+ * Otherwise it limits the whole token's claims (default 2048).
541
577
  */
542
578
  readonly claimsLimit?: number;
543
579
  }
@@ -576,12 +612,51 @@ interface GeneratorInput {
576
612
  readonly output: string;
577
613
  /** Import path from `from` (a generated file) to `to`, with extension. */
578
614
  readonly importPath: (from: string, to: string) => string;
615
+ /**
616
+ * The tables and enums `gen` emits, with the TypeScript type it wrote for
617
+ * each column (after `json` overrides, codecs and enum unions). Frozen.
618
+ */
619
+ readonly model: GeneratorModel;
620
+ }
621
+ interface GeneratorColumn {
622
+ /** Name in rows, after casing. */
623
+ readonly app: string;
624
+ /** Database name. */
625
+ readonly db: string;
626
+ /** TypeScript type without `| null`. */
627
+ readonly tsType: string;
628
+ readonly nullable: boolean;
629
+ /** Optional on insert. */
630
+ readonly optional: boolean;
631
+ /** Generated or identity always: never written. */
632
+ readonly readonly: boolean;
633
+ /** Enum or check-constraint values, when the column has a closed set. */
634
+ readonly values: readonly string[] | undefined;
635
+ readonly json: boolean;
636
+ }
637
+ interface GeneratorTable {
638
+ /** Key in `schema.tables` and on the client. */
639
+ readonly key: string;
640
+ readonly schema: string;
641
+ readonly name: string;
642
+ readonly casing: Casing;
643
+ readonly columns: readonly GeneratorColumn[];
644
+ }
645
+ interface GeneratorModel {
646
+ readonly tables: readonly GeneratorTable[];
647
+ readonly enums: readonly {
648
+ readonly schema: string;
649
+ readonly name: string;
650
+ readonly values: readonly string[];
651
+ }[];
579
652
  }
580
653
  /**
581
654
  * Codegen extension point. First-party generators: `zod()`, `valibot()`,
582
655
  * `jsonSchema()`. Prove custom ones with `testGenerator`.
583
656
  */
584
657
  interface Generator {
658
+ /** The generator contract it targets. `gen` refuses versions it doesn't know. */
659
+ readonly apiVersion?: 1;
585
660
  readonly name: string;
586
661
  generate(input: GeneratorInput): readonly GeneratedFile[] | Promise<readonly GeneratedFile[]>;
587
662
  }
@@ -598,11 +673,31 @@ interface RealtimeConfig {
598
673
  * lacks the tenant column and is not listed here fails to install.
599
674
  */
600
675
  readonly global?: readonly string[];
676
+ /**
677
+ * Tables in `tables` whose rows belong to one user: table to its user
678
+ * column (`{ notifications: "user_id" }`). They broadcast on a topic per
679
+ * user, `bs:t:<schema>.<table>:u:<user id>`, which only that user
680
+ * receives, instead of the tenant's topic.
681
+ */
682
+ readonly users?: Readonly<Record<string, string>>;
683
+ /**
684
+ * Writes the `realtime.messages` policies of the topics that `from`
685
+ * exports (`defineTopic`) to `output`, a file in `supabase/schemas`, on
686
+ * `better-supabase sql sync`; `sql sync --check` fails when it is stale.
687
+ */
688
+ readonly policies?: TopicPoliciesConfig;
689
+ }
690
+ /** `realtime.policies`: where topic policies come from and go. */
691
+ interface TopicPoliciesConfig {
692
+ /** Modules that export `defineTopic` results. Node imports them. */
693
+ readonly from: readonly string[];
694
+ /** The SQL file to write, such as `supabase/schemas/905_topics.sql`. */
695
+ readonly output: string;
601
696
  }
602
697
  interface EntitlementsConfig {
603
698
  /**
604
699
  * `table.column` (or `schema.table.column`) holding each tenant's Stripe
605
- * customer id, read by the `entitlements` SQL kit module. Required
700
+ * customer id, read by the `entitlements` SQL module. Required
606
701
  * without the `organizations` module; with it, defaults to the
607
702
  * `stripe_customer_id` column that module adds.
608
703
  */
@@ -610,22 +705,64 @@ interface EntitlementsConfig {
610
705
  /** The tenant id column of that table. Defaults to `id`. */
611
706
  readonly key?: string;
612
707
  /**
613
- * With a PermDock manifest, `has_entitlement` and `feature_claims` read
614
- * PermDock's memberships (`member_<scope>_ids()` and
615
- * `member_<scope>_ids_for(user)`) instead of `better_supabase.memberships`.
616
- * `scope` is the PermDock scope tenants are. It defaults to the manifest's
617
- * root scope (the `rls.scopes` entry without `within`); `false` keeps the
618
- * kit's memberships table.
708
+ * Where `has_entitlement` and `feature_claims` read memberships from.
709
+ * `"provider"` calls the authorization provider's `memberIds` and
710
+ * `memberIdsFor` functions; `"tenant"` reads `better_supabase.memberships`.
711
+ * Defaults to `"provider"` when `authorization` is set, else `"tenant"`.
619
712
  */
620
- readonly permdock?: false | {
621
- readonly scope?: string;
713
+ readonly memberships?: "tenant" | "provider";
714
+ /**
715
+ * Where each tenant's entitlements come from. `"stripe-sync"` (the
716
+ * default) reads the Stripe Sync Engine's `stripe.active_entitlements`
717
+ * through `customer`. `{ plans }` reads a plan catalog: the tenant's
718
+ * active subscription and the features its plan includes. `"custom"`
719
+ * leaves `better_supabase.tenant_entitlements(tenant)` to you; the module
720
+ * writes the checks and the claim over it.
721
+ */
722
+ readonly source?: "stripe-sync" | "custom" | EntitlementPlansSource;
723
+ /**
724
+ * The shape of the features claim `feature_claims` writes, which every
725
+ * token carries. `false` writes `{}` (check entitlements in SQL with
726
+ * `has_entitlement` only); `maxTenants` keeps at most that many tenants;
727
+ * `keys` writes short codes instead of the feature keys. Pass the same
728
+ * `keys` to `hasEntitlement`.
729
+ */
730
+ readonly claim?: false | {
731
+ readonly maxTenants?: number;
732
+ readonly keys?: Readonly<Record<string, string>>;
622
733
  };
623
734
  }
624
- interface PermdockPathsConfig {
625
- /** What `permdock supabase inspect --out` writes. Defaults to `permdock.manifest.json`. */
626
- readonly manifest?: string;
627
- /** What `permdock catalog` writes. Defaults to `permissions.catalog.json`. */
628
- readonly catalog?: string;
735
+ /** `entitlements.source.plans`: a plan catalog in your own tables. */
736
+ interface EntitlementPlansSource {
737
+ readonly plans: {
738
+ readonly subscriptions: {
739
+ /** `table` or `schema.table`. */
740
+ readonly table: string;
741
+ /** The tenant id column. */
742
+ readonly tenant: string;
743
+ /** The plan key column. */
744
+ readonly plan: string;
745
+ /** A status column; with it, only rows in `activeStatuses` count. */
746
+ readonly status?: string;
747
+ /** Defaults to `["active", "trialing"]`. */
748
+ readonly activeStatuses?: readonly string[];
749
+ };
750
+ readonly features: {
751
+ /** `table` or `schema.table`. */
752
+ readonly table: string;
753
+ /** The plan key column. */
754
+ readonly plan: string;
755
+ /** The feature key column: what `has_entitlement` and the claim name. */
756
+ readonly feature: string;
757
+ /** A boolean column; with it, only included features count. */
758
+ readonly included?: string;
759
+ /**
760
+ * A column with the feature's value (a number, text or jsonb), such as
761
+ * a limit, that `tenant_entitlement_value` returns.
762
+ */
763
+ readonly value?: string;
764
+ };
765
+ };
629
766
  }
630
767
  /** pgvector distance: `<=>` (cosine), `<->` (l2) or `<#>` (negative inner product). */
631
768
  type VectorDistance = "cosine" | "l2" | "inner_product";
@@ -633,21 +770,70 @@ type VectorDistance = "cosine" | "l2" | "inner_product";
633
770
  type VectorSearchConfig = string | {
634
771
  readonly column: string;
635
772
  readonly distance?: VectorDistance;
773
+ /** The column's pgvector type. Defaults to `vector`. */
774
+ readonly type?: "vector" | "halfvec";
775
+ /** The primary key column `db.$search({ score: true })` merges by. Defaults to `id`. */
776
+ readonly key?: string;
777
+ /**
778
+ * Fuses a full-text ranking over a `tsvector` column with the vector
779
+ * ranking (reciprocal rank fusion), for `db.$search({ text })`.
780
+ */
781
+ readonly hybrid?: {
782
+ readonly tsvector: string;
783
+ /** The query's text search configuration. Defaults to `simple`. */
784
+ readonly config?: string;
785
+ /** The RRF constant. Defaults to 60. */
786
+ readonly k?: number;
787
+ };
788
+ /** A SQL expression over the row `t` the score is multiplied by, such as `t.priority`. */
789
+ readonly boost?: string;
790
+ /** Columns `db.$search({ filter })` narrows before ranking. */
791
+ readonly prefilter?: readonly string[];
792
+ /**
793
+ * A SQL condition over the row `t` every candidate must meet, applied
794
+ * before ranking: ranges, a parent row, such as
795
+ * `t.expires_at > now() and exists (select 1 from public.folders f where f.id = t.folder_id and not f.disabled)`.
796
+ */
797
+ readonly predicate?: string;
798
+ /** How `boost` combines with the score: `multiply` (default) or `add`. */
799
+ readonly boostMode?: "multiply" | "add";
800
+ /** A SQL `order by` list over the row `t` that breaks score ties, such as `t.created_at desc`. */
801
+ readonly order?: string;
636
802
  };
637
803
  /** A privilege the Data API roles can be granted on a table or view. */
638
804
  type Privilege = "select" | "insert" | "update" | "delete";
805
+ type ColumnPrivilege = `${"select" | "insert" | "update"}(${string})`;
806
+ type ExposePrivilege = Privilege | ColumnPrivilege;
807
+ /** A role the `grants` module writes privileges for. */
808
+ type ExposeRole = "anon" | "authenticated" | "service_role";
639
809
  /**
640
810
  * Data API grants for one table: privileges for `authenticated`, or per
641
- * role.
811
+ * role. `serviceRole` defaults to every privilege. For a function, keyed by
812
+ * its signature (`search_notes(text, integer)`), `execute` lists the roles
813
+ * that may call it; `service_role` is added unless `serviceRole` is false.
642
814
  */
643
- type ExposeConfig = readonly Privilege[] | {
644
- readonly anon?: readonly Privilege[];
645
- readonly authenticated?: readonly Privilege[];
815
+ type ExposeConfig = readonly ExposePrivilege[] | {
816
+ readonly anon?: readonly ExposePrivilege[];
817
+ readonly authenticated?: readonly ExposePrivilege[];
818
+ readonly serviceRole?: readonly ExposePrivilege[];
819
+ } | {
820
+ readonly execute: readonly ("anon" | "authenticated")[];
821
+ readonly serviceRole?: boolean;
646
822
  };
647
823
  /** Resolved grants for one table. */
648
824
  interface ResolvedExpose {
649
- readonly anon: readonly Privilege[];
650
- readonly authenticated: readonly Privilege[];
825
+ readonly anon: readonly ExposePrivilege[];
826
+ readonly authenticated: readonly ExposePrivilege[];
827
+ readonly serviceRole: readonly ExposePrivilege[];
828
+ }
829
+ interface RelationsConfig {
830
+ /**
831
+ * Type a to-one include as `| null` when the related table has row level
832
+ * security, even over a `not null` foreign key, since a policy can hide
833
+ * the related row. `required: true` on the include keeps it non-null.
834
+ * Defaults to `false`.
835
+ */
836
+ readonly nullableUnderRls?: boolean;
651
837
  }
652
838
  interface BetterSupabaseConfig {
653
839
  readonly $schema?: string;
@@ -671,6 +857,7 @@ interface BetterSupabaseConfig {
671
857
  /** Types for jsonb columns, keyed by `table.column`. */
672
858
  readonly json?: Readonly<Record<string, JsonTypeConfig>>;
673
859
  readonly codecs?: CodecsConfig;
860
+ readonly relations?: RelationsConfig;
674
861
  /**
675
862
  * Columns that must not be read by accident (`table.column` or
676
863
  * `schema.table.column`, database names), for the `noSensitiveSelect` rule.
@@ -684,16 +871,26 @@ interface BetterSupabaseConfig {
684
871
  */
685
872
  readonly storagePaths?: Readonly<Record<string, string>>;
686
873
  /**
687
- * Data API grants, keyed by `table` or `schema.table`. Supabase no longer
688
- * grants new tables to `anon` and `authenticated` automatically; the
689
- * `grants` SQL kit module writes these, and doctor (BS106) checks them.
690
- * Tables not listed need `select, insert, update, delete` for
691
- * `authenticated` (`select` for views).
874
+ * Function results `gen` may type as not null, keyed by function name.
875
+ * Results are `| null` by default, since Postgres can't promise a function
876
+ * returns a value. `notNull: true` covers the whole result (each element
877
+ * of a set, each column of `returns table`); a list names the
878
+ * `returns table` columns that are never null.
879
+ */
880
+ readonly functions?: Readonly<Record<string, FunctionConfig>>;
881
+ /**
882
+ * Data API grants, keyed by `table` or `schema.table`, and function
883
+ * `execute` grants, keyed by `name(argument types)` or
884
+ * `schema.name(argument types)`. Supabase no longer grants new tables to
885
+ * `anon` and `authenticated` automatically; the `grants` SQL module writes
886
+ * these as the complete privilege set (it revokes what is not listed), and
887
+ * doctor (BS106) checks them. Tables not listed need `select, insert,
888
+ * update, delete` for `authenticated` (`select` for views).
692
889
  */
693
890
  readonly expose?: Readonly<Record<string, ExposeConfig>>;
694
891
  /**
695
892
  * Modules that export `defineReadSet` results. `gen` compiles each set to
696
- * a function in the `read-sets` SQL kit module. Node imports them, so
893
+ * a function in the `read-sets` SQL module. Node imports them, so
697
894
  * relative imports need their `.ts` extension.
698
895
  */
699
896
  readonly readSets?: readonly string[];
@@ -702,25 +899,23 @@ interface BetterSupabaseConfig {
702
899
  readonly plugins?: PluginFlagsConfig;
703
900
  readonly claims?: ClaimsConfig;
704
901
  readonly buckets?: Readonly<Record<string, BucketConfig>>;
705
- /** Realtime topic templates: `{ notifications: 'org:{orgId}:notifications' }`. */
902
+ /** Realtime topic templates: `{ notifications: 'organization:{organizationId}:notifications' }`. */
706
903
  readonly topics?: Readonly<Record<string, string>>;
707
904
  readonly realtime?: RealtimeConfig;
708
905
  readonly entitlements?: EntitlementsConfig;
709
- /** Where PermDock's JSON outputs are, for doctor, `gen` and the SQL kit. */
710
- readonly permdock?: PermdockPathsConfig;
906
+ /**
907
+ * An authorization system the SQL modules, policies and doctor delegate
908
+ * to: the `provider` access model, `entitlements.memberships` and the
909
+ * hook and policy checks.
910
+ */
911
+ readonly authorization?: AuthorizationProvider;
711
912
  /**
712
913
  * Embedding columns, keyed by `table` or `schema.table`. The
713
- * `vector-search` SQL kit module writes `search_<table>(query, k)` for each,
914
+ * `vector-search` SQL module writes `search_<table>(query, k)` for each,
714
915
  * which `db.$search(table, { vector, k })` calls.
715
916
  */
716
917
  readonly vectorSearch?: Readonly<Record<string, VectorSearchConfig>>;
717
918
  readonly sql?: SqlConfig;
718
- /**
719
- * How each SQL kit module maps onto the database: `managed` tables, or
720
- * `adopt` and `custom` over the app's own, with table, column and
721
- * permission names, keyed by module name.
722
- */
723
- readonly kits?: KitsConfig;
724
919
  readonly seed?: SeedConfig;
725
920
  readonly openapi?: OpenApiConfig;
726
921
  readonly doctor?: DoctorConfig;
@@ -738,9 +933,14 @@ interface ResolvedConfig {
738
933
  readonly postgrestVersion: string;
739
934
  readonly json: Readonly<Record<string, JsonTypeConfig>>;
740
935
  readonly codecs: Required<CodecsConfig>;
936
+ readonly relations: Required<RelationsConfig>;
741
937
  readonly sensitive: readonly string[];
742
938
  readonly storagePaths: Readonly<Record<string, string>>;
939
+ readonly functions: Readonly<Record<string, FunctionConfig>>;
940
+ /** The table entries of `expose`. */
743
941
  readonly expose: Readonly<Record<string, ResolvedExpose>>;
942
+ /** The function entries of `expose`: the roles that may execute each one. */
943
+ readonly exposeFunctions: Readonly<Record<string, readonly ExposeRole[]>>;
744
944
  readonly readSets: readonly string[];
745
945
  readonly generators: readonly Generator[];
746
946
  readonly plugins: {
@@ -756,20 +956,21 @@ interface ResolvedConfig {
756
956
  readonly table?: string;
757
957
  readonly column?: string;
758
958
  readonly key: string;
759
- readonly permdock: false | {
760
- readonly scope?: string;
761
- };
959
+ readonly memberships: "tenant" | "provider";
960
+ readonly source: NonNullable<EntitlementsConfig["source"]>;
961
+ readonly claim?: NonNullable<EntitlementsConfig["claim"]>;
762
962
  };
763
- readonly permdock: Required<PermdockPathsConfig>;
764
- readonly vectorSearch: readonly {
963
+ readonly authorization?: AuthorizationProvider;
964
+ readonly vectorSearch: readonly ({
765
965
  readonly table: string;
766
966
  readonly column: string;
767
967
  readonly distance: VectorDistance;
768
- }[];
968
+ } & Omit<Exclude<VectorSearchConfig, string>, "column" | "distance">)[];
769
969
  readonly topics: Readonly<Record<string, string>>;
770
- readonly realtime: Required<RealtimeConfig>;
771
- readonly sql: Required<SqlConfig>;
772
- readonly kits: KitsConfig;
970
+ readonly realtime: Required<Omit<RealtimeConfig, "policies">> & {
971
+ readonly policies?: TopicPoliciesConfig;
972
+ };
973
+ readonly sql: ResolvedSqlConfig;
773
974
  readonly seed: Required<SeedConfig>;
774
975
  readonly openapi: Required<OpenApiConfig>;
775
976
  readonly doctor: Required<Omit<DoctorConfig, "claimsLimit">> & Pick<DoctorConfig, "claimsLimit">;
@@ -780,4 +981,4 @@ declare function defineConfig(config: BetterSupabaseConfig): BetterSupabaseConfi
780
981
  /** Applies defaults. Paths stay relative to `root`. */
781
982
  declare function resolveConfig(config: BetterSupabaseConfig, root: string): ResolvedConfig;
782
983
  //#endregion
783
- export { GeneratorMetadata as $, VectorSearchConfig as A, CatalogFunction as B, SoftDeleteConfig as C, TenantConfig as D, TableConfig as E, CatalogCheck as F, CatalogTable as G, CatalogGrant as H, CatalogColumn as I, ExtrasFunction as J, CatalogTrigger as K, CatalogColumnGrant as L, resolveConfig as M, resolveJsonSchema as N, TimestampsConfig as O, Catalog as P, ForeignKeyAction as Q, CatalogEnum as R, SeedConfig as S, SqlConfig as T, CatalogIndex as U, CatalogFunctionArg as V, CatalogPolicy as W, ExtrasHookFunction as X, ExtrasHook as Y, ExtrasTable as Z, PluginFlagsConfig as _, ClaimsConfig as a, DEFAULT_ACTIVE_TENANT as at, ResolvedConfig as b, EntitlementsConfig as c, KitsConfig as ct, Generator as d, Snapshot as et, GeneratorInput as f, PermdockPathsConfig as g, OpenApiConfig as h, CONFIG_SCHEMA_URL as i, ActiveTenantSource as it, defineConfig as j, VectorDistance as k, ExposeConfig as l, ResolvedKitModule as lt, JsonTypeConfig as m, BetterSupabaseConfig as n, SnapshotExtras as nt, CodecsConfig as o, KitMode as ot, JsonSchemaSource as p, CatalogUnique as q, BucketConfig as r, AccessKitConfig as rt, DoctorConfig as s, KitModuleConfig as st, ActorConfig as t, SnapshotBucket as tt, GeneratedFile as u, Privilege as v, SourceConfig as w, ResolvedExpose as x, RealtimeConfig as y, CatalogForeignKey as z };
984
+ export { CatalogTable as $, SeedConfig as A, resolveConfig as B, PluginFlagsConfig as C, ResolvedConfig as D, RelationsConfig as E, TenantConfig as F, CatalogColumnGrant as G, Catalog as H, TimestampsConfig as I, CatalogFunction as J, CatalogEnum as K, VectorDistance as L, SourceConfig as M, SqlConfig as N, ResolvedExpose as O, TableConfig as P, CatalogPolicy as Q, VectorSearchConfig as R, OpenApiConfig as S, RealtimeConfig as T, CatalogCheck as U, resolveJsonSchema as V, CatalogColumn as W, CatalogGrant as X, CatalogFunctionArg as Y, CatalogIndex as Z, GeneratorInput as _, ClaimsConfig as a, ExtrasTable as at, JsonSchemaSource as b, DoctorConfig as c, SnapshotBucket as ct, ExposeConfig as d, PostgresColumn as dt, CatalogTrigger as et, ExposePrivilege as f, PostgresFunction as ft, GeneratorColumn as g, Generator as h, CONFIG_SCHEMA_URL as i, ExtrasHookFunction as it, SoftDeleteConfig as j, ResolvedSqlConfig as k, EntitlementPlansSource as l, SnapshotExtras as lt, GeneratedFile as m, BetterSupabaseConfig as n, ExtrasFunction as nt, CodecsConfig as o, ForeignKeyAction as ot, ExposeRole as p, PostgresFunctionArg as pt, CatalogForeignKey as q, BucketConfig as r, ExtrasHook as rt, ColumnPrivilege as s, Snapshot as st, ActorConfig as t, CatalogUnique as tt, EntitlementsConfig as u, GeneratorMetadata as ut, GeneratorModel as v, Privilege as w, JsonTypeConfig as x, GeneratorTable as y, defineConfig as z };