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,5 +1,6 @@
1
1
  import { r as defineCliCommand } from "./command-CK14fP91.js";
2
- import { t as display } from "./io-k41_z-jT.js";
2
+ import { t as display } from "./io-DI1mTdSA.js";
3
+ import { f as supabaseDir } from "./supabase-toml-B-bIukQF.js";
3
4
  import { dirname, resolve } from "node:path";
4
5
  import { existsSync } from "node:fs";
5
6
  import { chmod, mkdir, readFile, writeFile } from "node:fs/promises";
@@ -39,7 +40,8 @@ async function createSigningKey() {
39
40
  };
40
41
  }
41
42
  async function runKeys(config, args) {
42
- const out = args.out ?? "supabase/signing_keys.json";
43
+ const dir = supabaseDir(config.root);
44
+ const out = args.out ?? `${dir}/signing_keys.json`;
43
45
  const path = resolve(config.root, out);
44
46
  const rotate = args.rotate === true;
45
47
  const exists = existsSync(path);
@@ -57,12 +59,12 @@ async function runKeys(config, args) {
57
59
  await writeFile(path, `${JSON.stringify([key, ...previous], null, 2)}\n`, { mode: 384 });
58
60
  await chmod(path, 384);
59
61
  const lines = [`Wrote ${display(config.root, out)} with key ${key.kid}${previous.length > 0 ? ` (${previous.length} older key${previous.length === 1 ? "" : "s"} kept for verification)` : ""}.`];
60
- const toml = resolve(config.root, "supabase/config.toml");
62
+ const toml = resolve(config.root, dir, "config.toml");
61
63
  if (!(existsSync(toml) && /^\s*signing_keys_path\s*=/m.test(await readFile(toml, "utf8")))) {
62
- const relativeToSupabase = out.startsWith("supabase/") ? `./${out.slice(9)}` : out;
63
- lines.push("", "Add it to supabase/config.toml and restart the stack:", " [auth]", ` signing_keys_path = "${relativeToSupabase}"`);
64
+ const relativeToSupabase = out.startsWith(`${dir}/`) ? `./${out.slice(dir.length + 1)}` : out;
65
+ lines.push("", `Add it to ${dir}/config.toml and restart the stack:`, " [auth]", ` signing_keys_path = "${relativeToSupabase}"`);
64
66
  }
65
- const gitignored = [resolve(config.root, ".gitignore"), resolve(config.root, "supabase/.gitignore")];
67
+ const gitignored = [resolve(config.root, ".gitignore"), resolve(config.root, dir, ".gitignore")];
66
68
  let ignored = false;
67
69
  for (const file of gitignored) if (existsSync(file) && (await readFile(file, "utf8")).includes("signing_keys")) ignored = true;
68
70
  if (!ignored) lines.push("", `Warning: add ${out} to .gitignore; it holds a private key.`);
@@ -1,5 +1,5 @@
1
1
  import { createHash } from "node:crypto";
2
- //#region ../../node_modules/.pnpm/c12@4.0.0-rc.2_dotenv@17.4.2_jiti@2.7.0_magicast@0.5.5/node_modules/c12/dist/_chunks/libs/ohash.mjs
2
+ //#region ../../node_modules/.pnpm/c12@4.0.0-rc.2_dotenv@17.4.2_giget@3.3.1_jiti@2.7.0_magicast@0.5.5/node_modules/c12/dist/_chunks/libs/ohash.mjs
3
3
  var __defProp = Object.defineProperty;
4
4
  var __exportAll = (all, no_symbols) => {
5
5
  let target = {};
@@ -1,6 +1,6 @@
1
1
  import { r as defineCliCommand } from "./command-CK14fP91.js";
2
- import { r as writeIfChanged, t as display } from "./io-k41_z-jT.js";
3
- import { r as importExport } from "./config-CPVpXP5I.js";
2
+ import { i as writeIfChanged, t as display } from "./io-DI1mTdSA.js";
3
+ import { i as importExport } from "./config-NiPxAmUF.js";
4
4
  import { resolve } from "node:path";
5
5
  import { existsSync } from "node:fs";
6
6
  import { readFile } from "node:fs/promises";
@@ -1,3 +1,4 @@
1
+ import { a as findSupabaseRoot } from "./supabase-toml-B-bIukQF.js";
1
2
  import { join } from "node:path";
2
3
  import { existsSync } from "node:fs";
3
4
  import { readFile } from "node:fs/promises";
@@ -46,16 +47,20 @@ async function detectProject(root) {
46
47
  dependencies,
47
48
  srcDir: existsSync(join(root, "src")) ? "src" : ".",
48
49
  tsExtensions: options["allowImportingTsExtensions"] === true || options["rewriteRelativeImportExtensions"] === true,
49
- hasSupabase: existsSync(join(root, "supabase", "config.toml"))
50
+ hasSupabase: findSupabaseRoot(root) !== void 0
50
51
  };
51
52
  }
52
- function installCommand(manager, packages, dev = false) {
53
+ function installCommand(manager, packages, dev = false, target) {
53
54
  const list = packages.join(" ");
54
55
  switch (manager) {
55
- case "pnpm": return `pnpm add ${dev ? "-D " : ""}${list}`;
56
- case "bun": return `bun add ${dev ? "-d " : ""}${list}`;
57
- case "yarn": return `yarn add ${dev ? "-D " : ""}${list}`;
58
- case "npm": return `npm install ${dev ? "-D " : ""}${list}`;
56
+ case "pnpm": return `pnpm ${target ? `--filter ${target.name ?? `./${target.dir}`} ` : ""}add ${dev ? "-D " : ""}${list}`;
57
+ case "bun": return `bun add ${dev ? "-d " : ""}${list}${target ? ` --cwd ${target.dir}` : ""}`;
58
+ case "yarn": {
59
+ const command = `add ${dev ? "-D " : ""}${list}`;
60
+ if (!target) return `yarn ${command}`;
61
+ return target.name ? `yarn workspace ${target.name} ${command}` : `cd ${target.dir} && yarn ${command}`;
62
+ }
63
+ case "npm": return `npm install ${dev ? "-D " : ""}${list}${target ? ` -w ${target.dir}` : ""}`;
59
64
  default: return manager;
60
65
  }
61
66
  }
@@ -0,0 +1,223 @@
1
+ import { t as importFresh } from "./fresh-import-BeYf9I3x.js";
2
+ import { resolve } from "node:path";
3
+ import { MODULE_ID_TYPES, compileReadSets, moduleIdType, scopeProblems, templateFunctions } from "better-supabase/sql";
4
+ import { isReadSet } from "better-supabase";
5
+ //#region src/cli/authorization.ts
6
+ /** How findings name the provider. */
7
+ const providerLabel = (provider) => `the authorization provider (${provider.name})`;
8
+ /**
9
+ * The provider's tenant scope and its id type. A scope missing from
10
+ * `scopes`, or without an id type this release renders, is invalid rather
11
+ * than a guess.
12
+ */
13
+ function tenantScope(provider, subject) {
14
+ const scope = provider.tenantScope;
15
+ const entry = provider.scopes.find((candidate) => candidate.name === scope);
16
+ const label = providerLabel(provider);
17
+ const problems = scopeProblems(provider);
18
+ if (problems.length > 0) return {
19
+ kind: "invalid",
20
+ problem: `The scopes of ${label} are inconsistent: ${problems.join("; ")}.`
21
+ };
22
+ if (!entry) return {
23
+ kind: "invalid",
24
+ problem: `authorization.tenantScope is "${scope}", but ${label} has the scopes ${provider.scopes.map((candidate) => candidate.name).join(", ") || "none"}.`
25
+ };
26
+ if (entry.idType === void 0) return {
27
+ kind: "invalid",
28
+ problem: `${label} gives scope "${scope}" no idType, so ${subject} can't tell its id type.`
29
+ };
30
+ const idType = moduleIdType(entry.idType);
31
+ if (idType === void 0) return {
32
+ kind: "invalid",
33
+ problem: `${label} gives scope "${scope}" the type ${entry.idType}, but ${subject} renders only ${MODULE_ID_TYPES.join(", ").replace(/, (?=[^,]*$)/, " or ")} ids.`
34
+ };
35
+ return {
36
+ kind: "ok",
37
+ scope,
38
+ idType
39
+ };
40
+ }
41
+ /** The provider's membership tables that can hold rows of `scope`. */
42
+ const scopeMemberships = (provider, scope) => (provider.memberships ?? []).filter((source) => !("value" in source.scope) || source.scope.value === scope);
43
+ /**
44
+ * Provider mode when `entitlements.memberships` resolves to `"provider"`
45
+ * (the default with `authorization`). The provider needs `memberIds` and
46
+ * `memberIdsFor`, so the module never falls back to `tenant` on its own.
47
+ */
48
+ function entitlementsMode(config) {
49
+ if (config.entitlements.memberships === "tenant") return { kind: "tenant" };
50
+ const provider = config.authorization;
51
+ if (!provider) return {
52
+ kind: "invalid",
53
+ problem: "entitlements.memberships is \"provider\", but the config has no authorization. Set authorization, or set entitlements.memberships to \"tenant\"."
54
+ };
55
+ const chosen = tenantScope(provider, "the entitlements module");
56
+ if (chosen.kind === "invalid") return chosen;
57
+ const { memberIds, memberIdsFor } = provider.functions;
58
+ if (memberIds === void 0 || memberIdsFor === void 0) return {
59
+ kind: "invalid",
60
+ problem: `${providerLabel(provider)} has no authorization.functions.${memberIds === void 0 ? "memberIds" : "memberIdsFor"}, which the entitlements module calls. Use a provider that sets both, or set entitlements.memberships to "tenant" to keep the tenant module's memberships.`
61
+ };
62
+ return {
63
+ kind: "provider",
64
+ provider: {
65
+ name: provider.name,
66
+ scope: chosen.scope,
67
+ idType: chosen.idType,
68
+ memberIds,
69
+ memberIdsFor,
70
+ memberships: scopeMemberships(provider, chosen.scope)
71
+ }
72
+ };
73
+ }
74
+ /**
75
+ * The `provider` access model's functions, from `authorization`. `off` when
76
+ * another model is chosen; without a provider the model is invalid, never a
77
+ * default.
78
+ */
79
+ function accessProviderMode(config) {
80
+ const access = config.sql.modules.access;
81
+ if (access?.model !== "provider") return { kind: "off" };
82
+ const provider = config.authorization;
83
+ if (!provider) return {
84
+ kind: "invalid",
85
+ problem: "sql.modules.access.model is \"provider\", but the config has no authorization. Set authorization, or choose another sql.modules.access.model."
86
+ };
87
+ const chosen = tenantScope(provider, "the provider access model");
88
+ if (chosen.kind === "invalid") return chosen;
89
+ const idType = access.idType === void 0 ? void 0 : moduleIdType(access.idType);
90
+ if (idType !== void 0 && idType !== chosen.idType) return {
91
+ kind: "invalid",
92
+ problem: `sql.modules.access.idType is "${access.idType}", but ${providerLabel(provider)} gives scope "${chosen.scope}" the type ${chosen.idType}. Set sql.modules.access.idType to "${chosen.idType}", or remove it.`
93
+ };
94
+ const { user, tenant } = provider.suspension ?? {};
95
+ return {
96
+ kind: "provider",
97
+ access: {
98
+ name: provider.name,
99
+ scope: chosen.scope,
100
+ idType: chosen.idType,
101
+ functions: provider.functions,
102
+ ...user || tenant ? { suspension: {
103
+ ...user ? { user } : {},
104
+ ...tenant ? { tenant } : {}
105
+ } } : {},
106
+ ...provider.roleSources && provider.roleSources.length > 0 ? { roleSources: provider.roleSources } : {},
107
+ ...provider.approvals?.distinctApprover === true ? { approvals: { distinctApprover: true } } : {}
108
+ }
109
+ };
110
+ }
111
+ /**
112
+ * `complete` when the provider marks the key `sqlComplete: true`. A key
113
+ * without the flag is unknown, and so is every key when the provider lists
114
+ * no permissions.
115
+ */
116
+ function keyStatus(provider, key) {
117
+ if (!provider.permissions) return "unknown";
118
+ const entry = provider.permissions.find((permission) => permission.key === key);
119
+ if (!entry) return "missing";
120
+ if (entry.sqlComplete === void 0) return "unknown";
121
+ return entry.sqlComplete ? "complete" : "incomplete";
122
+ }
123
+ const INCOMPLETE_FIX = "Use the provider's own policies for it, or a permission its SQL functions answer for completely.";
124
+ const UNKNOWN_FIX = "Have the provider set sqlComplete on every entry of authorization.permissions.";
125
+ /**
126
+ * Why the provider's SQL functions can't be trusted with `key`, or
127
+ * `undefined` when it is marked `sqlComplete: true`. Unknown and missing
128
+ * keys count as unsafe.
129
+ */
130
+ function unsafeKey(provider, key) {
131
+ const status = keyStatus(provider, key);
132
+ switch (status) {
133
+ case "complete": return;
134
+ case "incomplete": return {
135
+ status,
136
+ reason: `has conditions ${providerLabel(provider)}'s SQL functions don't check (sqlComplete: false)`,
137
+ fix: INCOMPLETE_FIX
138
+ };
139
+ case "unknown": return {
140
+ status,
141
+ reason: provider.permissions ? "has no sqlComplete flag in authorization.permissions, so whether the SQL functions answer for it completely is unknown" : "can't be checked: authorization.permissions is not set, so whether the SQL functions answer for it completely is unknown",
142
+ fix: UNKNOWN_FIX
143
+ };
144
+ case "missing": return {
145
+ status,
146
+ reason: "is not in authorization.permissions",
147
+ fix: UNKNOWN_FIX
148
+ };
149
+ default: return status;
150
+ }
151
+ }
152
+ /**
153
+ * Checks the keys the SQL modules pass to the provider's functions against
154
+ * `authorization.permissions`, with the statuses bucket policies use: only
155
+ * `sqlComplete: true` passes.
156
+ */
157
+ function moduleKeyProblems(provider, keys) {
158
+ if (keys.length === 0) return [];
159
+ if (!provider.permissions) return [{
160
+ target: "authorization.permissions",
161
+ message: `The provider access model passes ${keys.length} module permission keys to ${providerLabel(provider)}'s SQL functions, but authorization.permissions is not set, so whether they answer for them completely is unknown. Use a provider that lists its permissions.`
162
+ }];
163
+ return keys.flatMap((entry) => {
164
+ const problem = unsafeKey(provider, entry.key);
165
+ if (!problem) return [];
166
+ const fn = entry.scope === "platform" ? "authorization.functions.isPlatform" : "authorization.functions.idsWith";
167
+ const setting = `sql.modules.${entry.module}.permissions.${entry.action}`;
168
+ const fix = problem.status === "incomplete" ? `The provider's SQL functions check role and scope, not the key's other conditions, so the module would grant it everywhere in the scope. Set ${setting} to a permission marked sqlComplete: true.` : `${problem.fix} If the provider doesn't define it, set ${setting} to a key it lists.`;
169
+ return [{
170
+ target: setting,
171
+ message: `The ${entry.module} module checks "${entry.key}" (${entry.action}) with ${fn}, but it ${problem.reason}. ${fix}`
172
+ }];
173
+ });
174
+ }
175
+ const requirementsOf = (functions, scope, templates) => templates.flatMap(([template, role]) => {
176
+ const sql = functions[template];
177
+ return sql === void 0 ? [] : templateFunctions(sql, scope).map((fn) => ({
178
+ function: fn,
179
+ template,
180
+ role
181
+ }));
182
+ });
183
+ /** The functions the `provider` access model calls, as `authenticated`. */
184
+ const accessRequirements = (access) => requirementsOf(access.functions, access.scope, [["idsWith", "authenticated"], ["isPlatform", "authenticated"]]);
185
+ /**
186
+ * The functions the `entitlements` module calls for the tenant scope:
187
+ * `memberIds` from `has_entitlement` as `authenticated`, and `memberIdsFor`
188
+ * from `feature_claims`, which the access token hook runs as
189
+ * `supabase_auth_admin`.
190
+ */
191
+ const entitlementRequirements = (provider) => [...templateFunctions(provider.memberIds, provider.scope).map((fn) => ({
192
+ kind: "member",
193
+ function: fn,
194
+ template: "memberIds",
195
+ caller: "has_entitlement",
196
+ role: "authenticated"
197
+ })), ...templateFunctions(provider.memberIdsFor, provider.scope).map((fn) => ({
198
+ kind: "member-for",
199
+ function: fn,
200
+ template: "memberIdsFor",
201
+ caller: "feature_claims",
202
+ role: "supabase_auth_admin"
203
+ }))];
204
+ //#endregion
205
+ //#region src/cli/read-sets.ts
206
+ /** Every read set exported by the modules in `config.readSets`. */
207
+ async function loadReadSets(config) {
208
+ const sets = [];
209
+ for (const entry of config.readSets) {
210
+ const loaded = await importFresh(resolve(config.root, entry));
211
+ const found = Object.values(loaded).filter(isReadSet);
212
+ if (found.length === 0) throw new Error(`${entry} exports no read set (defineReadSet)`);
213
+ for (const set of found) if (!sets.includes(set)) sets.push(set);
214
+ }
215
+ return sets;
216
+ }
217
+ /** The compiled functions for `config.readSets`; empty when none are configured. */
218
+ async function compiledReadSets(config) {
219
+ if (config.readSets.length === 0) return [];
220
+ return compileReadSets(await loadReadSets(config));
221
+ }
222
+ //#endregion
223
+ export { entitlementsMode as a, unsafeKey as c, entitlementRequirements as i, accessProviderMode as n, moduleKeyProblems as o, accessRequirements as r, providerLabel as s, compiledReadSets as t };
@@ -2,7 +2,7 @@ import { n as __toESM } from "./rolldown-runtime-BPOCksWG.js";
2
2
  import { c as parseArgs$2, i as joinRepeated, l as renderUsage, n as cliContext, o as listArgs, s as defineCommand, t as GLOBAL_ARGS, u as runCommand } from "./command-CK14fP91.js";
3
3
  import { n as CliError, r as toCliError } from "./errors-4v4DTtda.js";
4
4
  import { n as highlight, r as painter } from "./style-C0NFdJRL.js";
5
- import { t as VERSION } from "./version-BDJuO0UR.js";
5
+ import { t as VERSION } from "./version-hr88OZG0.js";
6
6
  import { stripVTControlCharacters } from "node:util";
7
7
  import { resolve } from "node:path";
8
8
  //#region src/cli/legacy.ts
@@ -11,7 +11,7 @@ const ARRAY_FLAGS = /* @__PURE__ */ new Set([
11
11
  "only",
12
12
  "ignore",
13
13
  "agent",
14
- "kit",
14
+ "block",
15
15
  "with",
16
16
  "explain"
17
17
  ]);
@@ -134,51 +134,55 @@ function renderError(error, options) {
134
134
  //#region src/cli/run.ts
135
135
  const COMMANDS = /* @__PURE__ */ new Map([
136
136
  ["init", {
137
- load: () => import("./init-Saf5-R9T.js").then((m) => m.initCommand),
137
+ load: () => import("./init-BIIwclPg.js").then((m) => m.initCommand),
138
138
  description: "Writes better-supabase.config.ts, src/lib/supabase/index.ts and glue for the frameworks in package.json"
139
139
  }],
140
140
  ["add", {
141
- load: () => import("./init-Saf5-R9T.js").then((m) => m.addCommand),
141
+ load: () => import("./init-BIIwclPg.js").then((m) => m.addCommand),
142
142
  description: "Adds glue for an integration to an existing project"
143
143
  }],
144
144
  ["env", {
145
- load: () => import("./env-jIFUADLY.js").then((m) => m.envCommand),
145
+ load: () => import("./env-qXgyMV6r.js").then((m) => m.envCommand),
146
146
  description: "Writes the local stack's URL and keys from `supabase status` to an env file, keeping its other lines"
147
147
  }],
148
148
  ["keys", {
149
- load: () => import("./keys-ByKHnvP9.js").then((m) => m.keysCommand),
149
+ load: () => import("./keys-BGCnnb-s.js").then((m) => m.keysCommand),
150
150
  description: "Creates an ES256 signing key for the local stack, so local tokens verify through JWKS like hosted ones"
151
151
  }],
152
152
  ["skills", {
153
- load: () => import("./skills-LJJIhLFR.js").then((m) => m.skillsCommand),
153
+ load: () => import("./skills-QQs4q68J.js").then((m) => m.skillsCommand),
154
154
  description: "Installs the Agent Skills that ship with this version of better-supabase"
155
155
  }],
156
156
  ["gen", {
157
- load: () => import("./gen-BJc9vdyu.js").then((m) => m.genCommand),
157
+ load: () => import("./gen-DAH8FM2W.js").then((m) => m.genCommand),
158
158
  description: "Writes database.types.ts, generated.ts and its metadata module from the database"
159
159
  }],
160
160
  ["introspect", {
161
- load: () => import("./introspect--H7oGmcd.js").then((m) => m.introspectCommand),
161
+ load: () => import("./introspect-DNUTuNvb.js").then((m) => m.introspectCommand),
162
162
  description: "Saves the database schema as a snapshot for offline gen"
163
163
  }],
164
164
  ["openapi", {
165
- load: () => import("./openapi-Cp5Fyta-.js").then((m) => m.openapiCommand),
165
+ load: () => import("./openapi-BlRJ18s3.js").then((m) => m.openapiCommand),
166
166
  description: "Writes the document your createOpenApi() module exports, so CI can check it for drift"
167
167
  }],
168
168
  ["seed", {
169
- load: () => import("./seed-CUlqWh-8.js").then((m) => m.seedCommand),
169
+ load: () => import("./seed-DQzqT7LP.js").then((m) => m.seedCommand),
170
170
  description: "Renders the fixtures from defineSeed() (better-supabase/testing) to SQL"
171
171
  }],
172
172
  ["doctor", {
173
- load: () => import("./doctor-L7Z8mYTx.js").then((m) => m.doctorCommand),
173
+ load: () => import("./doctor-B4JOm_ox.js").then((m) => m.doctorCommand),
174
174
  description: "Checks RLS, indexes, drift, auth config and env files; exits 1 on errors, or on warnings with --strict"
175
175
  }],
176
176
  ["sql", {
177
- load: () => import("./sql-DzPbfngx.js").then((m) => m.sqlCommand),
178
- description: "Lists, adds, syncs, upgrades and prints SQL kit modules"
177
+ load: () => import("./sql-D0GUtUPp.js").then((m) => m.sqlCommand),
178
+ description: "Lists, adds, syncs, upgrades and prints SQL modules"
179
+ }],
180
+ ["config", {
181
+ load: () => import("./config-DU7EJImt.js").then((m) => m.configCommand),
182
+ description: "Prints the resolved config: the file it came from and every option with its default"
179
183
  }],
180
184
  ["codemod", {
181
- load: () => import("./codemod-DqV7612m.js").then((m) => m.codemodCommand),
185
+ load: () => import("./codemod-Bl_tQpHn.js").then((m) => m.codemodCommand),
182
186
  description: "Rewrites imports and calls for renamed better-supabase APIs"
183
187
  }]
184
188
  ]);
@@ -193,7 +197,7 @@ const ROOT = defineCommand({
193
197
  meta: {
194
198
  name: "better-supabase",
195
199
  version: VERSION,
196
- description: "Typed Supabase: codegen, doctor, the SQL kit and project setup"
200
+ description: "Typed Supabase: codegen, doctor, the SQL modules and project setup"
197
201
  },
198
202
  args: GLOBAL_ARGS,
199
203
  subCommands: () => Object.fromEntries([...COMMANDS].map(([name, entry]) => [name, "command" in entry ? entry.command : defineCommand({ meta: {
@@ -310,21 +314,27 @@ async function run(argv, options = {}) {
310
314
  let context;
311
315
  let command;
312
316
  try {
313
- const [loaded, { loadConfig }, { parseEnv }] = await Promise.all([
317
+ const [loaded, { discoverConfig, loadConfig }, { parseEnv }] = await Promise.all([
314
318
  load(),
315
- import("./config-dtoekM0v.js"),
316
- import("./env-DmKv_G4A.js")
319
+ import("./config-B9HkL8nF.js"),
320
+ import("./env-CJLbUVPB.js")
317
321
  ]);
318
322
  command = loaded;
319
323
  const globals = parseArgs$2(rest, GLOBAL_ARGS);
320
324
  const cwd = resolve(options.cwd ?? ".", globals.cwd ?? ".");
321
325
  const env = parseEnv(options.env ?? {});
326
+ const reloadConfig = () => loadConfig(cwd, globals.config).catch((cause) => {
327
+ throw cause instanceof CliError ? cause : new CliError("config_invalid", toCliError(cause).message, { cause });
328
+ });
329
+ const config = await reloadConfig();
330
+ const configFile = discoverConfig(cwd, globals.config);
331
+ const interactive = globals.json !== true && globals.yes !== true && env.CI === void 0;
322
332
  context = {
323
333
  cwd,
324
- config: await loadConfig(cwd, globals.config).catch((cause) => {
325
- throw cause instanceof CliError ? cause : new CliError("config_invalid", toCliError(cause).message, { cause });
326
- }),
327
- io: globals.json !== true && globals.yes !== true && env.CI === void 0 ? io : withoutPrompts(io),
334
+ config,
335
+ ...configFile ? { configFile } : {},
336
+ reloadConfig,
337
+ io: interactive ? io : withoutPrompts(io),
328
338
  env,
329
339
  json: globals.json === true,
330
340
  signal: options.signal
@@ -1,6 +1,7 @@
1
1
  import { r as defineCliCommand } from "./command-CK14fP91.js";
2
- import { r as writeIfChanged, t as display } from "./io-k41_z-jT.js";
3
- import { r as importExport, s as stdinDatabaseUrl, t as databaseUrl } from "./config-CPVpXP5I.js";
2
+ import { i as writeIfChanged, r as sameText, t as display } from "./io-DI1mTdSA.js";
3
+ import { i as importExport, s as stdinDatabaseUrl, t as databaseUrl } from "./config-NiPxAmUF.js";
4
+ import { f as supabaseDir } from "./supabase-toml-B-bIukQF.js";
4
5
  import { n as withSpinner } from "./prompts-BNcNfAve.js";
5
6
  import { t as connect } from "./db-DOBPt660.js";
6
7
  import { resolve } from "node:path";
@@ -45,7 +46,7 @@ async function runSeed(config, args, env, open = connect, dbUrl) {
45
46
  const contents = `${HEADER} from ${display(config.root, entry)}. Do not edit.\n\n${statements.join("\n\n")}\n`;
46
47
  const path = resolve(config.root, out);
47
48
  const current = existsSync(path) ? await readFile(path, "utf8") : void 0;
48
- if (args.check === true) return current === contents ? {
49
+ if (args.check === true) return sameText(current, contents) ? {
49
50
  code: 0,
50
51
  output: `${display(config.root, out)} is up to date.`
51
52
  } : {
@@ -71,12 +72,13 @@ async function runSeed(config, args, env, open = connect, dbUrl) {
71
72
  }
72
73
  lines.push("Inserted the fixtures (existing rows were kept).");
73
74
  }
74
- const toml = resolve(config.root, "supabase/config.toml");
75
- const seedPath = out.startsWith("supabase/") ? `./${out.slice(9)}` : out;
75
+ const dir = supabaseDir(config.root);
76
+ const toml = resolve(config.root, dir, "config.toml");
77
+ const seedPath = out.startsWith(`${dir}/`) ? `./${out.slice(dir.length + 1)}` : out;
76
78
  if (existsSync(toml)) {
77
79
  const text = await readFile(toml, "utf8");
78
80
  const folder = seedPath.replace(/[^/]+$/, "");
79
- if (!text.includes(seedPath) && !text.includes(`${folder}*`)) lines.push("", "Add it to supabase/config.toml so `supabase db reset` runs it:", " [db.seed]", ` sql_paths = ["./seed.sql", "${seedPath}"]`);
81
+ if (!text.includes(seedPath) && !text.includes(`${folder}*`)) lines.push("", `Add it to ${dir}/config.toml so \`supabase db reset\` runs it:`, " [db.seed]", ` sql_paths = ["./seed.sql", "${seedPath}"]`);
80
82
  }
81
83
  return {
82
84
  code: 0,
@@ -1,5 +1,5 @@
1
1
  import { a as list, r as defineCliCommand } from "./command-CK14fP91.js";
2
- import { r as writeIfChanged, t as display } from "./io-k41_z-jT.js";
2
+ import { i as writeIfChanged, r as sameText, t as display } from "./io-DI1mTdSA.js";
3
3
  import { t as byCodePoint } from "./compare-BmIWVEui.js";
4
4
  import { dirname, join, resolve } from "node:path";
5
5
  import { existsSync } from "node:fs";
@@ -107,7 +107,8 @@ async function runSkills(config, args, env) {
107
107
  const path = resolve(base, relativePath);
108
108
  const shown = global ? `~/${relativePath}` : display(config.root, relativePath);
109
109
  if (check) {
110
- if ((existsSync(path) ? await readFile(path, "utf8") : void 0) !== file.contents) stale.push(shown);
110
+ const current = existsSync(path) ? await readFile(path, "utf8") : void 0;
111
+ if (!sameText(current, file.contents)) stale.push(shown);
111
112
  continue;
112
113
  }
113
114
  lines.push(`${await writeIfChanged(path, file.contents) ? "Wrote" : "Unchanged"} ${shown}`);