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
@@ -6,7 +6,9 @@
6
6
  "type": "object",
7
7
  "additionalProperties": false,
8
8
  "properties": {
9
- "$schema": { "type": "string" },
9
+ "$schema": {
10
+ "type": "string"
11
+ },
10
12
  "source": {
11
13
  "description": "Where codegen reads the database from. Without any of these, $DATABASE_URL and then the local stack are used.",
12
14
  "type": "object",
@@ -33,21 +35,43 @@
33
35
  "schemas": {
34
36
  "description": "Postgres schemas to generate.",
35
37
  "type": "array",
36
- "items": { "type": "string" },
38
+ "items": {
39
+ "type": "string"
40
+ },
37
41
  "default": ["public"]
38
42
  },
39
- "casing": { "$ref": "#/$defs/casing", "default": "snake" },
43
+ "casing": {
44
+ "$ref": "#/$defs/casing",
45
+ "default": "snake"
46
+ },
40
47
  "tables": {
41
48
  "type": "object",
42
49
  "additionalProperties": {
43
50
  "type": "object",
44
51
  "additionalProperties": false,
45
52
  "properties": {
46
- "casing": { "$ref": "#/$defs/casing" },
47
- "exclude": { "type": "boolean" },
53
+ "casing": {
54
+ "$ref": "#/$defs/casing"
55
+ },
56
+ "exclude": {
57
+ "type": "boolean"
58
+ },
59
+ "serviceRole": {
60
+ "type": "boolean",
61
+ "description": "Only service_role reaches the table. Models are still generated; doctor (BS106) checks that anon and authenticated have no grants."
62
+ },
48
63
  "relations": {
49
64
  "type": "object",
50
- "additionalProperties": { "type": "string" }
65
+ "additionalProperties": {
66
+ "type": "string"
67
+ }
68
+ },
69
+ "insertOptional": {
70
+ "type": "array",
71
+ "items": {
72
+ "type": "string"
73
+ },
74
+ "description": "Database names of not-null columns an insert may leave out because the database fills them, for example from a before insert trigger."
51
75
  }
52
76
  }
53
77
  }
@@ -67,9 +91,30 @@
67
91
  "type": "object",
68
92
  "additionalProperties": false,
69
93
  "properties": {
70
- "timestamptz": { "enum": ["string", "instant"], "default": "string" },
71
- "int8": { "enum": ["number", "string", "bigint"], "default": "number" },
72
- "numeric": { "enum": ["number", "string"], "default": "number" }
94
+ "timestamptz": {
95
+ "enum": ["string", "instant"],
96
+ "default": "string"
97
+ },
98
+ "int8": {
99
+ "enum": ["number", "string", "bigint"],
100
+ "default": "number"
101
+ },
102
+ "numeric": {
103
+ "enum": ["number", "string"],
104
+ "default": "number"
105
+ }
106
+ }
107
+ },
108
+ "relations": {
109
+ "description": "How generated relations are typed.",
110
+ "type": "object",
111
+ "additionalProperties": false,
112
+ "properties": {
113
+ "nullableUnderRls": {
114
+ "type": "boolean",
115
+ "description": "Type to-one includes of tables with row level security as nullable, since a policy can hide the related row.",
116
+ "default": false
117
+ }
73
118
  }
74
119
  },
75
120
  "json": {
@@ -120,48 +165,70 @@
120
165
  "properties": {
121
166
  "timestamps": {
122
167
  "oneOf": [
123
- { "type": "boolean" },
168
+ {
169
+ "type": "boolean"
170
+ },
124
171
  {
125
172
  "type": "object",
126
173
  "additionalProperties": false,
127
174
  "properties": {
128
- "createdAt": { "type": "string" },
129
- "updatedAt": { "type": "string" }
175
+ "createdAt": {
176
+ "type": "string"
177
+ },
178
+ "updatedAt": {
179
+ "type": "string"
180
+ }
130
181
  }
131
182
  }
132
183
  ]
133
184
  },
134
185
  "softDelete": {
135
186
  "oneOf": [
136
- { "type": "boolean" },
187
+ {
188
+ "type": "boolean"
189
+ },
137
190
  {
138
191
  "type": "object",
139
192
  "additionalProperties": false,
140
- "properties": { "column": { "type": "string" } }
193
+ "properties": {
194
+ "column": {
195
+ "type": "string"
196
+ }
197
+ }
141
198
  }
142
199
  ]
143
200
  },
144
201
  "tenant": {
145
202
  "oneOf": [
146
- { "type": "boolean" },
203
+ {
204
+ "type": "boolean"
205
+ },
147
206
  {
148
207
  "type": "object",
149
208
  "additionalProperties": false,
150
209
  "properties": {
151
- "column": { "type": "string" }
210
+ "column": {
211
+ "type": "string"
212
+ }
152
213
  }
153
214
  }
154
215
  ]
155
216
  },
156
217
  "actor": {
157
218
  "oneOf": [
158
- { "type": "boolean" },
219
+ {
220
+ "type": "boolean"
221
+ },
159
222
  {
160
223
  "type": "object",
161
224
  "additionalProperties": false,
162
225
  "properties": {
163
- "createdBy": { "type": "string" },
164
- "updatedBy": { "type": "string" }
226
+ "createdBy": {
227
+ "type": "string"
228
+ },
229
+ "updatedBy": {
230
+ "type": "string"
231
+ }
165
232
  }
166
233
  }
167
234
  ]
@@ -169,7 +236,7 @@
169
236
  }
170
237
  },
171
238
  "claims": {
172
- "description": "Claim names shared by the SQL kit, codegen and runtime defaults (PermDock's claim contract).",
239
+ "description": "Claim names shared by the SQL modules, codegen and runtime defaults.",
173
240
  "type": "object",
174
241
  "additionalProperties": false,
175
242
  "properties": {
@@ -184,6 +251,10 @@
184
251
  "features": {
185
252
  "type": "string",
186
253
  "description": "Claim holding plan features per tenant. Defaults to `features`."
254
+ },
255
+ "memberships": {
256
+ "type": "string",
257
+ "description": "Claim the memberships hook writes. Defaults to `memberships`."
187
258
  }
188
259
  }
189
260
  },
@@ -194,83 +265,225 @@
194
265
  "required": ["path"],
195
266
  "additionalProperties": false,
196
267
  "properties": {
197
- "id": { "type": "string" },
198
- "public": { "type": "boolean" },
268
+ "id": {
269
+ "type": "string"
270
+ },
271
+ "public": {
272
+ "type": "boolean"
273
+ },
199
274
  "path": {
200
- "type": "string",
201
- "description": "Path template, e.g. `{orgId}/{customerId}/logo.webp`."
275
+ "description": "Path template, e.g. `{organizationId}/{customerId}/logo.webp`, or several for a bucket that stores objects in more than one layout. A last segment `{...rest}` matches one or more segments.",
276
+ "oneOf": [
277
+ {
278
+ "type": "string"
279
+ },
280
+ {
281
+ "type": "array",
282
+ "items": {
283
+ "type": "string"
284
+ },
285
+ "minItems": 1
286
+ }
287
+ ]
202
288
  },
203
289
  "policy": {
204
290
  "oneOf": [
205
- { "enum": ["tenant", "owner", "public", "none"] },
291
+ {
292
+ "enum": ["tenant", "owner", "public", "none"]
293
+ },
206
294
  {
207
295
  "type": "object",
208
- "description": "Policies that call PermDock's permitted_<scope>_ids or permdock_has helpers.",
209
- "required": ["permdock", "scope"],
296
+ "description": "A policy through the access contract (tenant_ids_with, is_platform), or through `sql` templates such as an authorization provider's.",
297
+ "required": ["access"],
210
298
  "additionalProperties": false,
211
299
  "properties": {
212
- "permdock": {
300
+ "access": {
213
301
  "type": "object",
214
302
  "required": ["read", "write"],
215
303
  "additionalProperties": false,
216
304
  "properties": {
217
- "read": { "type": "string" },
218
- "list": { "type": "string" },
219
- "write": { "type": "string" },
220
- "delete": { "type": "string" }
305
+ "read": {
306
+ "type": "string"
307
+ },
308
+ "list": {
309
+ "type": "string"
310
+ },
311
+ "write": {
312
+ "type": "string"
313
+ },
314
+ "delete": {
315
+ "type": "string"
316
+ }
221
317
  }
222
318
  },
223
- "scope": { "type": "string" },
224
- "segment": { "type": "integer", "minimum": 1 },
225
- "schema": { "type": "string" }
319
+ "scope": {
320
+ "type": "string",
321
+ "description": "`tenant` (default) or `platform`; with `sql`, any scope name the templates take."
322
+ },
323
+ "segment": {
324
+ "type": "integer",
325
+ "minimum": 1
326
+ },
327
+ "sql": {
328
+ "description": "SQL templates with `{permission}` and `{scope}` the policy calls instead of the access contract, or `provider` for `authorization.functions`.",
329
+ "oneOf": [
330
+ {
331
+ "const": "provider"
332
+ },
333
+ {
334
+ "type": "object",
335
+ "required": ["idsWith", "isPlatform"],
336
+ "additionalProperties": false,
337
+ "properties": {
338
+ "idsWith": {
339
+ "type": "string"
340
+ },
341
+ "isPlatform": {
342
+ "type": "string"
343
+ }
344
+ }
345
+ }
346
+ ]
347
+ }
226
348
  }
227
349
  }
228
350
  ]
229
351
  },
230
- "fileSizeLimit": { "type": "string" },
231
- "allowedMimeTypes": { "type": "array", "items": { "type": "string" } }
352
+ "fileSizeLimit": {
353
+ "type": "string"
354
+ },
355
+ "allowedMimeTypes": {
356
+ "type": "array",
357
+ "items": {
358
+ "type": "string"
359
+ }
360
+ },
361
+ "versioning": {
362
+ "description": "Keep earlier object versions. bucket.apply() sets it.",
363
+ "type": "boolean"
364
+ },
365
+ "lifecycle": {
366
+ "description": "When noncurrent versions expire. Needs versioning: true.",
367
+ "type": "object",
368
+ "additionalProperties": false,
369
+ "required": ["rules"],
370
+ "properties": {
371
+ "rules": {
372
+ "type": "array",
373
+ "minItems": 1,
374
+ "maxItems": 1000,
375
+ "items": {
376
+ "type": "object",
377
+ "additionalProperties": false,
378
+ "required": ["noncurrentVersionExpiration"],
379
+ "properties": {
380
+ "id": {
381
+ "type": "string"
382
+ },
383
+ "status": {
384
+ "enum": ["Enabled", "Disabled"]
385
+ },
386
+ "noncurrentVersionExpiration": {
387
+ "type": "object",
388
+ "additionalProperties": false,
389
+ "required": ["noncurrentDays"],
390
+ "properties": {
391
+ "noncurrentDays": {
392
+ "type": "integer",
393
+ "minimum": 1
394
+ },
395
+ "newerNoncurrentVersions": {
396
+ "type": "integer",
397
+ "minimum": 1,
398
+ "maximum": 100
399
+ }
400
+ }
401
+ }
402
+ }
403
+ }
404
+ }
405
+ }
406
+ }
232
407
  }
233
408
  }
234
409
  },
235
410
  "topics": {
236
411
  "description": "Realtime topic templates.",
237
412
  "type": "object",
238
- "additionalProperties": { "type": "string" }
413
+ "additionalProperties": {
414
+ "type": "string"
415
+ }
239
416
  },
240
417
  "sensitive": {
241
418
  "description": "Columns guarded by the noSensitiveSelect rule (`table.column` or `schema.table.column`).",
242
419
  "type": "array",
243
- "items": { "type": "string" }
420
+ "items": {
421
+ "type": "string"
422
+ }
244
423
  },
245
424
  "storagePaths": {
246
425
  "description": "Text columns holding a storage object path (`table.column` or `schema.table.column`), mapped to a `buckets` key or bucket id. Typed as `StoragePath<'bucket-id'>`.",
247
426
  "type": "object",
248
- "additionalProperties": { "type": "string" }
427
+ "additionalProperties": {
428
+ "type": "string"
429
+ }
430
+ },
431
+ "functions": {
432
+ "description": "Function results gen may type as not null, keyed by function name. Results are nullable by default.",
433
+ "type": "object",
434
+ "additionalProperties": {
435
+ "type": "object",
436
+ "additionalProperties": false,
437
+ "properties": {
438
+ "notNull": {
439
+ "description": "true for the whole result, or the returns table columns that are never null.",
440
+ "oneOf": [
441
+ {
442
+ "const": true
443
+ },
444
+ {
445
+ "type": "array",
446
+ "items": {
447
+ "type": "string"
448
+ }
449
+ }
450
+ ]
451
+ }
452
+ }
453
+ }
249
454
  },
250
455
  "expose": {
251
- "description": "Data API grants keyed by `table` or `schema.table`: privileges for authenticated, or per role. Written by the `grants` SQL kit module and checked by doctor (BS106).",
456
+ "description": "Data API grants keyed by `table` or `schema.table`: privileges for authenticated, or per role. Written by the `grants` SQL module and checked by doctor (BS106).",
252
457
  "type": "object",
253
458
  "additionalProperties": {
254
459
  "oneOf": [
255
- { "$ref": "#/$defs/privileges" },
460
+ {
461
+ "$ref": "#/$defs/privileges"
462
+ },
256
463
  {
257
464
  "type": "object",
258
465
  "additionalProperties": false,
259
466
  "properties": {
260
- "anon": { "$ref": "#/$defs/privileges" },
261
- "authenticated": { "$ref": "#/$defs/privileges" }
467
+ "anon": {
468
+ "$ref": "#/$defs/privileges"
469
+ },
470
+ "authenticated": {
471
+ "$ref": "#/$defs/privileges"
472
+ }
262
473
  }
263
474
  }
264
475
  ]
265
476
  }
266
477
  },
267
478
  "readSets": {
268
- "description": "Modules exporting `defineReadSet` results. `gen` compiles them into the `read-sets` SQL kit module.",
479
+ "description": "Modules exporting `defineReadSet` results. `gen` compiles them into the `read-sets` SQL module.",
269
480
  "type": "array",
270
- "items": { "type": "string" }
481
+ "items": {
482
+ "type": "string"
483
+ }
271
484
  },
272
485
  "entitlements": {
273
- "description": "Where the `entitlements` SQL kit module finds each tenant's Stripe customer.",
486
+ "description": "Where the `entitlements` SQL module finds each tenant's entitlements: a Stripe customer, a plan catalog or your own function.",
274
487
  "type": "object",
275
488
  "additionalProperties": false,
276
489
  "properties": {
@@ -284,17 +497,98 @@
284
497
  "type": "string",
285
498
  "default": "id"
286
499
  },
287
- "permdock": {
288
- "description": "With a PermDock manifest, read PermDock's memberships for this scope instead of better_supabase.memberships; false keeps the kit's table.",
500
+ "memberships": {
501
+ "description": "Where has_entitlement and feature_claims read memberships: \"provider\" (the authorization provider's memberIds functions) or \"tenant\" (better_supabase.memberships). Defaults to \"provider\" when `authorization` is set.",
502
+ "enum": ["tenant", "provider"]
503
+ },
504
+ "source": {
505
+ "description": "Where each tenant's entitlements come from: \"stripe-sync\" (the Stripe Sync Engine, the default), \"custom\" (your own better_supabase.tenant_entitlements), or a plan catalog in your tables.",
506
+ "oneOf": [
507
+ {
508
+ "enum": ["stripe-sync", "custom"]
509
+ },
510
+ {
511
+ "type": "object",
512
+ "additionalProperties": false,
513
+ "required": ["plans"],
514
+ "properties": {
515
+ "plans": {
516
+ "type": "object",
517
+ "additionalProperties": false,
518
+ "required": ["subscriptions", "features"],
519
+ "properties": {
520
+ "subscriptions": {
521
+ "type": "object",
522
+ "additionalProperties": false,
523
+ "required": ["table", "tenant", "plan"],
524
+ "properties": {
525
+ "table": {
526
+ "type": "string"
527
+ },
528
+ "tenant": {
529
+ "type": "string"
530
+ },
531
+ "plan": {
532
+ "type": "string"
533
+ },
534
+ "status": {
535
+ "type": "string"
536
+ },
537
+ "activeStatuses": {
538
+ "type": "array",
539
+ "items": {
540
+ "type": "string"
541
+ }
542
+ }
543
+ }
544
+ },
545
+ "features": {
546
+ "type": "object",
547
+ "additionalProperties": false,
548
+ "required": ["table", "plan", "feature"],
549
+ "properties": {
550
+ "table": {
551
+ "type": "string"
552
+ },
553
+ "plan": {
554
+ "type": "string"
555
+ },
556
+ "feature": {
557
+ "type": "string"
558
+ },
559
+ "included": {
560
+ "type": "string"
561
+ },
562
+ "value": {
563
+ "type": "string"
564
+ }
565
+ }
566
+ }
567
+ }
568
+ }
569
+ }
570
+ }
571
+ ]
572
+ },
573
+ "claim": {
574
+ "description": "The shape of the features claim feature_claims writes: false for {}, or maxTenants (at most that many tenants) and keys (short codes for feature keys).",
289
575
  "oneOf": [
290
- { "const": false },
576
+ {
577
+ "const": false
578
+ },
291
579
  {
292
580
  "type": "object",
293
581
  "additionalProperties": false,
294
582
  "properties": {
295
- "scope": {
296
- "type": "string",
297
- "description": "The PermDock scope tenants are. Defaults to the manifest's root scope, the rls.scopes entry without within."
583
+ "maxTenants": {
584
+ "type": "integer",
585
+ "minimum": 1
586
+ },
587
+ "keys": {
588
+ "type": "object",
589
+ "additionalProperties": {
590
+ "type": "string"
591
+ }
298
592
  }
299
593
  }
300
594
  }
@@ -302,38 +596,431 @@
302
596
  }
303
597
  }
304
598
  },
305
- "permdock": {
306
- "description": "Where PermDock's JSON outputs are.",
599
+ "authorization": {
600
+ "description": "An authorization provider (apiVersion 1) the SQL modules, policies and doctor delegate to.",
307
601
  "type": "object",
308
602
  "additionalProperties": false,
603
+ "required": ["apiVersion", "name", "scopes", "tenantScope", "functions"],
309
604
  "properties": {
310
- "manifest": {
311
- "description": "What `permdock supabase inspect --out` writes.",
312
- "type": "string",
313
- "default": "permdock.manifest.json"
605
+ "apiVersion": {
606
+ "const": 1
607
+ },
608
+ "name": {
609
+ "type": "string"
314
610
  },
315
- "catalog": {
316
- "description": "What `permdock catalog` writes.",
611
+ "scopes": {
612
+ "type": "array",
613
+ "items": {
614
+ "type": "object",
615
+ "additionalProperties": false,
616
+ "required": ["name"],
617
+ "properties": {
618
+ "name": {
619
+ "type": "string",
620
+ "pattern": "^[a-z][a-z0-9_]*$"
621
+ },
622
+ "idType": {
623
+ "enum": ["uuid", "text", "bigint", "integer"],
624
+ "description": "Required on the tenant scope."
625
+ },
626
+ "parent": {
627
+ "type": "string"
628
+ }
629
+ }
630
+ }
631
+ },
632
+ "tenantScope": {
317
633
  "type": "string",
318
- "default": "permissions.catalog.json"
634
+ "pattern": "^[a-z][a-z0-9_]*$"
635
+ },
636
+ "functions": {
637
+ "type": "object",
638
+ "additionalProperties": false,
639
+ "required": ["idsWith", "isPlatform"],
640
+ "description": "SQL templates with {permission}, {scope}, {user}, {tenant}, {role} and {tool}.",
641
+ "properties": {
642
+ "idsWith": {
643
+ "type": "string"
644
+ },
645
+ "isPlatform": {
646
+ "type": "string"
647
+ },
648
+ "idsWithFor": {
649
+ "type": "string"
650
+ },
651
+ "isPlatformFor": {
652
+ "type": "string"
653
+ },
654
+ "memberIds": {
655
+ "type": "string"
656
+ },
657
+ "memberIdsFor": {
658
+ "type": "string"
659
+ },
660
+ "canAssign": {
661
+ "type": "string"
662
+ },
663
+ "canAssignFor": {
664
+ "type": "string"
665
+ },
666
+ "permissionsFor": {
667
+ "type": "string",
668
+ "description": "The permission keys {user} holds in {tenant}, as a text[]."
669
+ },
670
+ "canApprove": {
671
+ "type": "string",
672
+ "description": "Whether the caller may decide the tool call {tool} waits on in {tenant}."
673
+ }
674
+ }
675
+ },
676
+ "requires": {
677
+ "type": "array",
678
+ "items": {
679
+ "type": "object",
680
+ "additionalProperties": false,
681
+ "required": ["function", "role"],
682
+ "properties": {
683
+ "function": {
684
+ "type": "string"
685
+ },
686
+ "args": {
687
+ "type": "string"
688
+ },
689
+ "role": {
690
+ "type": "string"
691
+ }
692
+ }
693
+ }
694
+ },
695
+ "permissions": {
696
+ "type": "array",
697
+ "items": {
698
+ "type": "object",
699
+ "additionalProperties": false,
700
+ "required": ["key"],
701
+ "properties": {
702
+ "key": {
703
+ "type": "string"
704
+ },
705
+ "sqlComplete": {
706
+ "type": "boolean"
707
+ },
708
+ "scopes": {
709
+ "type": "array",
710
+ "items": {
711
+ "type": "string"
712
+ }
713
+ }
714
+ }
715
+ }
716
+ },
717
+ "memberships": {
718
+ "type": "array",
719
+ "items": {
720
+ "type": "object",
721
+ "additionalProperties": false,
722
+ "required": ["table", "userColumn", "scope", "idColumn"],
723
+ "properties": {
724
+ "table": {
725
+ "type": "string"
726
+ },
727
+ "userColumn": {
728
+ "type": "string"
729
+ },
730
+ "idColumn": {
731
+ "type": "string"
732
+ },
733
+ "scope": {
734
+ "oneOf": [
735
+ {
736
+ "type": "object",
737
+ "additionalProperties": false,
738
+ "required": ["column"],
739
+ "properties": {
740
+ "column": {
741
+ "type": "string"
742
+ }
743
+ }
744
+ },
745
+ {
746
+ "type": "object",
747
+ "additionalProperties": false,
748
+ "required": ["value"],
749
+ "properties": {
750
+ "value": {
751
+ "type": "string"
752
+ }
753
+ }
754
+ }
755
+ ]
756
+ }
757
+ }
758
+ }
759
+ },
760
+ "suspension": {
761
+ "type": "object",
762
+ "additionalProperties": false,
763
+ "properties": {
764
+ "user": {
765
+ "type": "object",
766
+ "additionalProperties": false,
767
+ "required": ["table", "id"],
768
+ "properties": {
769
+ "table": {
770
+ "type": "string"
771
+ },
772
+ "id": {
773
+ "type": "string"
774
+ },
775
+ "disabledAt": {
776
+ "type": "string"
777
+ },
778
+ "status": {
779
+ "type": "string"
780
+ },
781
+ "active": {
782
+ "type": "array",
783
+ "items": {
784
+ "type": "string"
785
+ }
786
+ }
787
+ }
788
+ },
789
+ "tenant": {
790
+ "type": "object",
791
+ "additionalProperties": false,
792
+ "required": ["table", "id"],
793
+ "properties": {
794
+ "table": {
795
+ "type": "string"
796
+ },
797
+ "id": {
798
+ "type": "string"
799
+ },
800
+ "disabledAt": {
801
+ "type": "string"
802
+ },
803
+ "status": {
804
+ "type": "string"
805
+ },
806
+ "active": {
807
+ "type": "array",
808
+ "items": {
809
+ "type": "string"
810
+ }
811
+ }
812
+ }
813
+ }
814
+ }
815
+ },
816
+ "roleSources": {
817
+ "type": "array",
818
+ "items": {
819
+ "type": "object",
820
+ "additionalProperties": false,
821
+ "required": ["table", "role"],
822
+ "properties": {
823
+ "table": {
824
+ "type": "string"
825
+ },
826
+ "role": {
827
+ "type": "object",
828
+ "additionalProperties": false,
829
+ "required": ["column", "through"],
830
+ "properties": {
831
+ "column": {
832
+ "type": "string"
833
+ },
834
+ "through": {
835
+ "type": "object",
836
+ "additionalProperties": false,
837
+ "required": ["table", "id", "column"],
838
+ "properties": {
839
+ "table": {
840
+ "type": "string"
841
+ },
842
+ "id": {
843
+ "type": "string"
844
+ },
845
+ "column": {
846
+ "type": "string"
847
+ }
848
+ }
849
+ }
850
+ }
851
+ }
852
+ }
853
+ }
854
+ },
855
+ "decidingColumns": {
856
+ "type": "array",
857
+ "items": {
858
+ "type": "string",
859
+ "description": "`schema.table.column`.",
860
+ "pattern": "^[A-Za-z_][\\w$]*\\.[A-Za-z_][\\w$]*\\.[A-Za-z_][\\w$]*$"
861
+ }
862
+ },
863
+ "tokenHook": {
864
+ "type": "object",
865
+ "additionalProperties": false,
866
+ "required": ["function", "ownedClaims"],
867
+ "properties": {
868
+ "function": {
869
+ "type": "string"
870
+ },
871
+ "tenantClaim": {
872
+ "type": "string"
873
+ },
874
+ "ownedClaims": {
875
+ "type": "array",
876
+ "minItems": 1,
877
+ "items": {
878
+ "type": "string"
879
+ }
880
+ },
881
+ "registeredClaims": {
882
+ "type": "array",
883
+ "items": {
884
+ "type": "object",
885
+ "additionalProperties": false,
886
+ "required": ["name", "function"],
887
+ "properties": {
888
+ "name": {
889
+ "type": "string"
890
+ },
891
+ "function": {
892
+ "type": "string"
893
+ }
894
+ }
895
+ }
896
+ },
897
+ "budget": {
898
+ "type": "object",
899
+ "additionalProperties": false,
900
+ "required": ["claims", "bytes"],
901
+ "properties": {
902
+ "claims": {
903
+ "type": "array",
904
+ "items": {
905
+ "type": "string"
906
+ }
907
+ },
908
+ "bytes": {
909
+ "type": "integer",
910
+ "minimum": 1
911
+ },
912
+ "truncatedClaim": {
913
+ "type": "string"
914
+ }
915
+ }
916
+ },
917
+ "markers": {
918
+ "type": "object",
919
+ "additionalProperties": false,
920
+ "properties": {
921
+ "hook": {
922
+ "type": "string"
923
+ },
924
+ "grants": {
925
+ "type": "string"
926
+ }
927
+ }
928
+ },
929
+ "grantsCommand": {
930
+ "type": "string"
931
+ }
932
+ }
933
+ },
934
+ "approvals": {
935
+ "type": "object",
936
+ "additionalProperties": false,
937
+ "properties": {
938
+ "distinctApprover": {
939
+ "type": "boolean",
940
+ "description": "The user who asked for a tool call can't approve it. Default false."
941
+ }
942
+ }
943
+ },
944
+ "problems": {
945
+ "type": "array",
946
+ "items": {
947
+ "type": "string"
948
+ }
319
949
  }
320
950
  }
321
951
  },
322
952
  "vectorSearch": {
323
- "description": "Embedding columns keyed by `table` or `schema.table`. The `vector-search` SQL kit module writes `search_<table>(query, k)` for each.",
953
+ "description": "Embedding columns keyed by `table` or `schema.table`. The `vector-search` SQL module writes `search_<table>(query, k)` for each.",
324
954
  "type": "object",
325
955
  "additionalProperties": {
326
956
  "oneOf": [
327
- { "type": "string", "description": "The embedding column." },
957
+ {
958
+ "type": "string",
959
+ "description": "The embedding column."
960
+ },
328
961
  {
329
962
  "type": "object",
330
963
  "additionalProperties": false,
331
964
  "required": ["column"],
332
965
  "properties": {
333
- "column": { "type": "string" },
966
+ "column": {
967
+ "type": "string"
968
+ },
334
969
  "distance": {
335
970
  "enum": ["cosine", "l2", "inner_product"],
336
971
  "default": "cosine"
972
+ },
973
+ "type": {
974
+ "enum": ["vector", "halfvec"],
975
+ "default": "vector"
976
+ },
977
+ "key": {
978
+ "type": "string",
979
+ "default": "id",
980
+ "description": "The primary key column db.$search({ score: true }) merges by."
981
+ },
982
+ "hybrid": {
983
+ "type": "object",
984
+ "additionalProperties": false,
985
+ "required": ["tsvector"],
986
+ "description": "Fuses a full-text ranking over a tsvector column with the vector ranking (reciprocal rank fusion).",
987
+ "properties": {
988
+ "tsvector": {
989
+ "type": "string"
990
+ },
991
+ "config": {
992
+ "type": "string",
993
+ "default": "simple"
994
+ },
995
+ "k": {
996
+ "type": "integer",
997
+ "minimum": 1,
998
+ "default": 60
999
+ }
1000
+ }
1001
+ },
1002
+ "boost": {
1003
+ "type": "string",
1004
+ "description": "A SQL expression over the row t the score is multiplied by."
1005
+ },
1006
+ "prefilter": {
1007
+ "type": "array",
1008
+ "items": {
1009
+ "type": "string"
1010
+ },
1011
+ "description": "Columns db.$search({ filter }) narrows before ranking."
1012
+ },
1013
+ "predicate": {
1014
+ "type": "string",
1015
+ "description": "A SQL condition over the row t every candidate must meet, applied before ranking."
1016
+ },
1017
+ "boostMode": {
1018
+ "enum": ["multiply", "add"],
1019
+ "description": "How boost combines with the score. Defaults to multiply."
1020
+ },
1021
+ "order": {
1022
+ "type": "string",
1023
+ "description": "A SQL order by list over the row t that breaks score ties."
337
1024
  }
338
1025
  }
339
1026
  }
@@ -348,12 +1035,40 @@
348
1035
  "tables": {
349
1036
  "description": "Tables that broadcast change signals (`table` or `schema.table`). Install with `better-supabase sql add realtime-tables`.",
350
1037
  "type": "array",
351
- "items": { "type": "string" }
1038
+ "items": {
1039
+ "type": "string"
1040
+ }
352
1041
  },
353
1042
  "global": {
354
1043
  "description": "Tables in `tables` without a tenant column, which broadcast on one topic for every signed-in user.",
355
1044
  "type": "array",
356
- "items": { "type": "string" }
1045
+ "items": {
1046
+ "type": "string"
1047
+ }
1048
+ },
1049
+ "users": {
1050
+ "description": "Tables in `tables` whose rows belong to one user, mapped to the user column. They broadcast on a topic per user that only that user receives.",
1051
+ "type": "object",
1052
+ "additionalProperties": {
1053
+ "type": "string"
1054
+ }
1055
+ },
1056
+ "policies": {
1057
+ "description": "Writes the realtime.messages policies of the topics `from` exports (defineTopic) to `output` on `sql sync`; `sql sync --check` fails when the file is stale.",
1058
+ "type": "object",
1059
+ "additionalProperties": false,
1060
+ "required": ["from", "output"],
1061
+ "properties": {
1062
+ "from": {
1063
+ "type": "array",
1064
+ "items": {
1065
+ "type": "string"
1066
+ }
1067
+ },
1068
+ "output": {
1069
+ "type": "string"
1070
+ }
1071
+ }
357
1072
  }
358
1073
  }
359
1074
  },
@@ -361,25 +1076,50 @@
361
1076
  "type": "object",
362
1077
  "additionalProperties": false,
363
1078
  "properties": {
364
- "dir": { "type": "string", "default": "supabase/schemas" },
365
- "prefix": { "type": "string", "default": "900_better_supabase" },
366
- "testsDir": { "type": "string", "default": "supabase/tests" },
367
- "kit": { "type": "array", "items": { "type": "string" } }
1079
+ "dir": {
1080
+ "type": "string",
1081
+ "default": "supabase/schemas"
1082
+ },
1083
+ "prefix": {
1084
+ "type": "string",
1085
+ "default": "900_better_supabase"
1086
+ },
1087
+ "testsDir": {
1088
+ "type": "string",
1089
+ "default": "supabase/tests"
1090
+ },
1091
+ "modules": {
1092
+ "description": "The SQL modules to keep in sync: a list of names, or an object keyed by module name whose values set the module mode, names, permission keys and options.",
1093
+ "oneOf": [
1094
+ {
1095
+ "type": "array",
1096
+ "items": {
1097
+ "type": "string"
1098
+ }
1099
+ },
1100
+ {
1101
+ "type": "object",
1102
+ "properties": {
1103
+ "access": {
1104
+ "$ref": "#/$defs/accessModule"
1105
+ }
1106
+ },
1107
+ "additionalProperties": {
1108
+ "$ref": "#/$defs/moduleConfig"
1109
+ }
1110
+ }
1111
+ ]
1112
+ }
368
1113
  }
369
1114
  },
370
- "kits": {
371
- "type": "object",
372
- "description": "How each SQL kit module maps onto the database, keyed by module name.",
373
- "properties": {
374
- "access": { "$ref": "#/$defs/accessKit" }
375
- },
376
- "additionalProperties": { "$ref": "#/$defs/kitModule" }
377
- },
378
1115
  "seed": {
379
1116
  "type": "object",
380
1117
  "additionalProperties": false,
381
1118
  "properties": {
382
- "entry": { "type": "string", "default": "supabase/seed.ts" },
1119
+ "entry": {
1120
+ "type": "string",
1121
+ "default": "supabase/seed.ts"
1122
+ },
383
1123
  "output": {
384
1124
  "type": "string",
385
1125
  "default": "supabase/seeds/000_better_supabase.sql"
@@ -390,8 +1130,14 @@
390
1130
  "type": "object",
391
1131
  "additionalProperties": false,
392
1132
  "properties": {
393
- "entry": { "type": "string", "default": "src/lib/openapi.ts" },
394
- "output": { "type": "string", "default": "openapi.json" }
1133
+ "entry": {
1134
+ "type": "string",
1135
+ "default": "src/lib/openapi.ts"
1136
+ },
1137
+ "output": {
1138
+ "type": "string",
1139
+ "default": "openapi.json"
1140
+ }
395
1141
  }
396
1142
  },
397
1143
  "doctor": {
@@ -400,90 +1146,201 @@
400
1146
  "properties": {
401
1147
  "ignore": {
402
1148
  "type": "array",
403
- "items": { "type": "string", "pattern": "^BS\\d{3}$" }
1149
+ "items": {
1150
+ "type": "string",
1151
+ "pattern": "^BS\\d{3}$"
1152
+ }
1153
+ },
1154
+ "strict": {
1155
+ "type": "boolean"
1156
+ },
1157
+ "sources": {
1158
+ "type": "array",
1159
+ "items": {
1160
+ "type": "string"
1161
+ }
1162
+ },
1163
+ "policyHelperLimit": {
1164
+ "type": "integer",
1165
+ "minimum": 1
404
1166
  },
405
- "strict": { "type": "boolean" },
406
- "sources": { "type": "array", "items": { "type": "string" } },
407
- "policyHelperLimit": { "type": "integer", "minimum": 1 },
408
- "claimsLimit": { "type": "integer", "minimum": 1 }
1167
+ "claimsLimit": {
1168
+ "type": "integer",
1169
+ "minimum": 1
1170
+ }
409
1171
  }
410
1172
  }
411
1173
  },
412
1174
  "$defs": {
413
1175
  "stringRecord": {
414
1176
  "type": "object",
415
- "additionalProperties": { "type": "string" }
1177
+ "additionalProperties": {
1178
+ "type": "string"
1179
+ }
416
1180
  },
417
- "kitModuleProperties": {
418
- "mode": { "enum": ["managed", "adopt", "custom"], "default": "managed" },
419
- "schema": { "type": "string", "default": "better_supabase" },
1181
+ "moduleConfigProperties": {
1182
+ "mode": {
1183
+ "enum": ["managed", "adopt", "custom"],
1184
+ "default": "managed"
1185
+ },
1186
+ "schema": {
1187
+ "type": "string",
1188
+ "default": "better_supabase"
1189
+ },
420
1190
  "tables": {
421
1191
  "type": "object",
422
- "additionalProperties": { "type": ["string", "null"] }
1192
+ "additionalProperties": {
1193
+ "type": ["string", "null"]
1194
+ }
423
1195
  },
424
1196
  "columns": {
425
1197
  "type": "object",
426
1198
  "additionalProperties": {
427
1199
  "type": "object",
428
- "additionalProperties": { "type": ["string", "null"] }
1200
+ "additionalProperties": {
1201
+ "type": ["string", "null"]
1202
+ }
429
1203
  }
430
1204
  },
431
- "idType": { "type": "string" },
432
- "triggerPrefix": { "type": "string", "default": "bs_" },
433
- "permissions": { "$ref": "#/$defs/stringRecord" },
434
- "options": { "type": "object" }
1205
+ "idType": {
1206
+ "type": "string"
1207
+ },
1208
+ "triggerPrefix": {
1209
+ "type": "string",
1210
+ "default": "bs_"
1211
+ },
1212
+ "permissions": {
1213
+ "$ref": "#/$defs/stringRecord"
1214
+ },
1215
+ "options": {
1216
+ "type": "object"
1217
+ },
1218
+ "api": {
1219
+ "oneOf": [
1220
+ {
1221
+ "type": "string"
1222
+ },
1223
+ {
1224
+ "type": "object",
1225
+ "additionalProperties": false,
1226
+ "required": ["schema"],
1227
+ "properties": {
1228
+ "schema": {
1229
+ "type": "string"
1230
+ },
1231
+ "functions": {
1232
+ "type": "array",
1233
+ "items": {
1234
+ "type": "string"
1235
+ }
1236
+ }
1237
+ }
1238
+ }
1239
+ ]
1240
+ }
435
1241
  },
436
- "kitModule": {
1242
+ "moduleConfig": {
437
1243
  "type": "object",
438
1244
  "additionalProperties": false,
439
1245
  "properties": {
440
- "mode": { "$ref": "#/$defs/kitModuleProperties/mode" },
441
- "schema": { "$ref": "#/$defs/kitModuleProperties/schema" },
442
- "tables": { "$ref": "#/$defs/kitModuleProperties/tables" },
443
- "columns": { "$ref": "#/$defs/kitModuleProperties/columns" },
444
- "idType": { "$ref": "#/$defs/kitModuleProperties/idType" },
1246
+ "mode": {
1247
+ "$ref": "#/$defs/moduleConfigProperties/mode"
1248
+ },
1249
+ "schema": {
1250
+ "$ref": "#/$defs/moduleConfigProperties/schema"
1251
+ },
1252
+ "tables": {
1253
+ "$ref": "#/$defs/moduleConfigProperties/tables"
1254
+ },
1255
+ "columns": {
1256
+ "$ref": "#/$defs/moduleConfigProperties/columns"
1257
+ },
1258
+ "idType": {
1259
+ "$ref": "#/$defs/moduleConfigProperties/idType"
1260
+ },
445
1261
  "triggerPrefix": {
446
- "$ref": "#/$defs/kitModuleProperties/triggerPrefix"
1262
+ "$ref": "#/$defs/moduleConfigProperties/triggerPrefix"
1263
+ },
1264
+ "permissions": {
1265
+ "$ref": "#/$defs/moduleConfigProperties/permissions"
447
1266
  },
448
- "permissions": { "$ref": "#/$defs/kitModuleProperties/permissions" },
449
- "options": { "$ref": "#/$defs/kitModuleProperties/options" }
1267
+ "options": {
1268
+ "$ref": "#/$defs/moduleConfigProperties/options"
1269
+ },
1270
+ "api": {
1271
+ "$ref": "#/$defs/moduleConfigProperties/api"
1272
+ }
450
1273
  }
451
1274
  },
452
- "accessKit": {
1275
+ "accessModule": {
453
1276
  "type": "object",
454
1277
  "additionalProperties": false,
455
1278
  "properties": {
456
- "mode": { "$ref": "#/$defs/kitModuleProperties/mode" },
457
- "schema": { "$ref": "#/$defs/kitModuleProperties/schema" },
458
- "tables": { "$ref": "#/$defs/kitModuleProperties/tables" },
459
- "columns": { "$ref": "#/$defs/kitModuleProperties/columns" },
460
- "idType": { "$ref": "#/$defs/kitModuleProperties/idType" },
1279
+ "mode": {
1280
+ "$ref": "#/$defs/moduleConfigProperties/mode"
1281
+ },
1282
+ "schema": {
1283
+ "$ref": "#/$defs/moduleConfigProperties/schema"
1284
+ },
1285
+ "tables": {
1286
+ "$ref": "#/$defs/moduleConfigProperties/tables"
1287
+ },
1288
+ "columns": {
1289
+ "$ref": "#/$defs/moduleConfigProperties/columns"
1290
+ },
1291
+ "idType": {
1292
+ "$ref": "#/$defs/moduleConfigProperties/idType"
1293
+ },
461
1294
  "triggerPrefix": {
462
- "$ref": "#/$defs/kitModuleProperties/triggerPrefix"
1295
+ "$ref": "#/$defs/moduleConfigProperties/triggerPrefix"
1296
+ },
1297
+ "permissions": {
1298
+ "$ref": "#/$defs/moduleConfigProperties/permissions"
1299
+ },
1300
+ "options": {
1301
+ "$ref": "#/$defs/moduleConfigProperties/options"
1302
+ },
1303
+ "api": {
1304
+ "$ref": "#/$defs/moduleConfigProperties/api"
463
1305
  },
464
- "permissions": { "$ref": "#/$defs/kitModuleProperties/permissions" },
465
- "options": { "$ref": "#/$defs/kitModuleProperties/options" },
466
1306
  "model": {
467
- "enum": ["roles", "catalog", "permdock", "custom"],
1307
+ "enum": ["roles", "catalog", "provider", "custom"],
468
1308
  "default": "roles"
469
1309
  },
470
1310
  "roles": {
471
1311
  "type": "object",
472
1312
  "additionalProperties": {
473
1313
  "type": "array",
474
- "items": { "type": "string" }
1314
+ "items": {
1315
+ "type": "string"
1316
+ }
475
1317
  }
476
1318
  },
477
1319
  "functions": {
478
1320
  "type": "object",
479
1321
  "additionalProperties": false,
480
1322
  "properties": {
481
- "can": { "type": "string" },
482
- "tenantIdsWith": { "type": "string" },
483
- "isPlatform": { "type": "string" },
484
- "canUser": { "type": "string" },
485
- "canAssign": { "type": "string" },
486
- "permissionClaims": { "type": "string" }
1323
+ "can": {
1324
+ "type": "string"
1325
+ },
1326
+ "tenantIdsWith": {
1327
+ "type": "string"
1328
+ },
1329
+ "isPlatform": {
1330
+ "type": "string"
1331
+ },
1332
+ "canUser": {
1333
+ "type": "string"
1334
+ },
1335
+ "canAssign": {
1336
+ "type": "string"
1337
+ },
1338
+ "permissionClaims": {
1339
+ "type": "string"
1340
+ },
1341
+ "canAssignFor": {
1342
+ "type": "string"
1343
+ }
487
1344
  }
488
1345
  },
489
1346
  "platformClaim": {
@@ -494,40 +1351,117 @@
494
1351
  "type": "object",
495
1352
  "additionalProperties": false,
496
1353
  "properties": {
497
- "tenant": { "type": "string" },
498
- "tenantKey": { "type": "string" },
499
- "user": { "type": "string" },
500
- "userKey": { "type": "string" }
1354
+ "tenant": {
1355
+ "oneOf": [
1356
+ {
1357
+ "type": "string"
1358
+ },
1359
+ {
1360
+ "type": "object",
1361
+ "additionalProperties": false,
1362
+ "required": ["table", "id"],
1363
+ "properties": {
1364
+ "table": {
1365
+ "type": "string"
1366
+ },
1367
+ "id": {
1368
+ "type": "string"
1369
+ },
1370
+ "disabledAt": {
1371
+ "type": "string"
1372
+ },
1373
+ "status": {
1374
+ "type": "string"
1375
+ },
1376
+ "active": {
1377
+ "type": "array",
1378
+ "items": {
1379
+ "type": "string"
1380
+ }
1381
+ }
1382
+ }
1383
+ }
1384
+ ]
1385
+ },
1386
+ "tenantKey": {
1387
+ "type": "string"
1388
+ },
1389
+ "user": {
1390
+ "oneOf": [
1391
+ {
1392
+ "type": "string"
1393
+ },
1394
+ {
1395
+ "type": "object",
1396
+ "additionalProperties": false,
1397
+ "required": ["table", "id"],
1398
+ "properties": {
1399
+ "table": {
1400
+ "type": "string"
1401
+ },
1402
+ "id": {
1403
+ "type": "string"
1404
+ },
1405
+ "disabledAt": {
1406
+ "type": "string"
1407
+ },
1408
+ "status": {
1409
+ "type": "string"
1410
+ },
1411
+ "active": {
1412
+ "type": "array",
1413
+ "items": {
1414
+ "type": "string"
1415
+ }
1416
+ }
1417
+ }
1418
+ }
1419
+ ]
1420
+ },
1421
+ "userKey": {
1422
+ "type": "string"
1423
+ }
501
1424
  }
502
1425
  },
503
1426
  "activeTenant": {
504
1427
  "oneOf": [
505
- { "enum": ["claim", "resolver"] },
1428
+ {
1429
+ "enum": ["claim", "resolver"]
1430
+ },
506
1431
  {
507
1432
  "type": "object",
508
1433
  "additionalProperties": false,
509
1434
  "required": ["profileColumn"],
510
1435
  "properties": {
511
- "profileColumn": { "type": "string" },
512
- "key": { "type": "string" }
1436
+ "profileColumn": {
1437
+ "type": "string"
1438
+ },
1439
+ "key": {
1440
+ "type": "string"
1441
+ }
513
1442
  }
514
1443
  }
515
1444
  ]
516
- },
517
- "permdock": {
518
- "type": "object",
519
- "additionalProperties": false,
520
- "properties": {
521
- "schema": { "type": "string" },
522
- "scope": { "type": "string" }
523
- }
524
1445
  }
525
1446
  }
526
1447
  },
527
- "casing": { "enum": ["snake", "camel"] },
1448
+ "casing": {
1449
+ "enum": ["snake", "camel"]
1450
+ },
528
1451
  "privileges": {
529
1452
  "type": "array",
530
- "items": { "enum": ["select", "insert", "update", "delete"] }
1453
+ "items": {
1454
+ "anyOf": [
1455
+ {
1456
+ "enum": ["select", "insert", "update", "delete"]
1457
+ },
1458
+ {
1459
+ "description": "A column privilege, such as `update(title, body)`.",
1460
+ "type": "string",
1461
+ "pattern": "^(select|insert|update)\\s*\\(\\s*[a-z_][a-z0-9_$]*(\\s*,\\s*[a-z_][a-z0-9_$]*)*\\s*\\)$"
1462
+ }
1463
+ ]
1464
+ }
531
1465
  }
532
1466
  }
533
1467
  }