better-supabase 0.7.0 → 0.8.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 (500) hide show
  1. package/README.md +6 -2
  2. package/dist/{access-sql-B0dF-SoF.js → access-sql-CrSbK1q-.js} +1 -1
  3. package/dist/{adapter-B-tL8hqg.js → adapter-CN45ibbV.js} +663 -157
  4. package/dist/{agents-CVHGd7It.d.ts → agents-BY_LQXtQ.d.ts} +4 -4
  5. package/dist/{ai-cache-CBWs1W0k.js → ai-cache-Dfgk8nBT.js} +2 -1
  6. package/dist/{ai-cache-DaDu_G5L.d.ts → ai-cache-DrUMMgp6.d.ts} +4 -4
  7. package/dist/{ai-chat-B24UI962.js → ai-chat-CVLRWbtS.js} +4 -3
  8. package/dist/{ai-chat-7amvXjmQ.d.ts → ai-chat-DXkMy74O.d.ts} +5 -5
  9. package/dist/{ai-files-CSPNswUY.js → ai-files-CioLu5du.js} +5 -4
  10. package/dist/ai-message-DfaP8sis.js +14 -0
  11. package/dist/ai-sdk/agents/index.d.ts +4 -4
  12. package/dist/ai-sdk/batches/index.d.ts +4 -4
  13. package/dist/ai-sdk/batches/index.js +4 -4
  14. package/dist/ai-sdk/cache/index.d.ts +2 -2
  15. package/dist/ai-sdk/cache/index.js +2 -2
  16. package/dist/ai-sdk/chat/index.d.ts +1 -1
  17. package/dist/ai-sdk/chat/index.js +8 -20
  18. package/dist/ai-sdk/embeddings/index.d.ts +2 -2
  19. package/dist/ai-sdk/files/index.d.ts +3 -3
  20. package/dist/ai-sdk/files/index.js +4 -4
  21. package/dist/ai-sdk/index.d.ts +37 -9
  22. package/dist/ai-sdk/index.js +3 -2
  23. package/dist/ai-sdk/mcp/index.d.ts +43 -6
  24. package/dist/ai-sdk/mcp/index.js +36 -7
  25. package/dist/ai-sdk/memory/index.d.ts +2 -2
  26. package/dist/ai-sdk/memory/index.js +1 -1
  27. package/dist/ai-sdk/workflow/index.d.ts +6 -6
  28. package/dist/ai-sdk/workflow/index.js +13 -24
  29. package/dist/{ai-tasks-Cd1HMFvB.d.ts → ai-tasks-BRQ6iQLc.d.ts} +4 -4
  30. package/dist/{announcements-ZRGnScWI.d.ts → announcements-Bouy0Ski.d.ts} +3 -3
  31. package/dist/{announcements-CiyOs-xP.js → announcements-p_BFofiR.js} +1 -1
  32. package/dist/api-Dnf2q-Ht.d.ts +370 -0
  33. package/dist/api-DtHFC037.js +676 -0
  34. package/dist/{api-keys-CIjghYjV.d.ts → api-keys-C8BlF3L2.d.ts} +4 -4
  35. package/dist/arazzo/index.d.ts +255 -0
  36. package/dist/arazzo/index.js +622 -0
  37. package/dist/{assistant-DwdpDH1q.d.ts → assistant-DBlFDZsi.d.ts} +5 -5
  38. package/dist/astro/index.d.ts +7 -7
  39. package/dist/astro/index.js +7 -7
  40. package/dist/asyncapi/index.d.ts +103 -0
  41. package/dist/asyncapi/index.js +569 -0
  42. package/dist/authorizer-ayxUDXXP.js +126 -0
  43. package/dist/authorizer-eiOjo-3l.d.ts +73 -0
  44. package/dist/better-result/index.d.ts +118 -0
  45. package/dist/better-result/index.js +64 -0
  46. package/dist/{bind-l4kAvYSv.js → bind-ButSzrHe.js} +1 -1
  47. package/dist/{bind-Bu_ZNa3W.d.ts → bind-CQ5mPyX1.d.ts} +3 -3
  48. package/dist/{block-events-CrT8r7Fe.js → block-events-DTxU5tfr.js} +18 -3
  49. package/dist/{block-fields-GFkxl4dP.js → block-fields-CroxUuF2.js} +3 -3
  50. package/dist/{block-fields-SJ6fEf3o.d.ts → block-fields-D1pfrcIY.d.ts} +2 -2
  51. package/dist/{block-helpers-CKtbFcRv.d.ts → block-helpers-C0Xj8War.d.ts} +2 -2
  52. package/dist/{block-helpers-DWHxHsEQ.js → block-helpers-Cy3pB96I.js} +41 -9
  53. package/dist/{block-hooks-BmjMyXTa.js → block-hooks-BPNMIlLl.js} +3 -3
  54. package/dist/{block-hooks-plbZ0AbJ.d.ts → block-hooks-DaOVC7SC.d.ts} +3 -3
  55. package/dist/{block-transport-BLr-ZgLc.js → block-transport-bAKh-dGc.js} +28 -2
  56. package/dist/{block-transport-DvaoPuZ9.d.ts → block-transport-inD4fFq-.d.ts} +24 -2
  57. package/dist/blocks/agents/index.d.ts +3 -3
  58. package/dist/blocks/agents/index.js +5 -4
  59. package/dist/blocks/ai-cache/index.d.ts +3 -3
  60. package/dist/blocks/ai-cache/index.js +3 -3
  61. package/dist/blocks/ai-chat/index.d.ts +9 -4
  62. package/dist/blocks/ai-chat/index.js +5 -5
  63. package/dist/blocks/ai-chat/react/index.d.ts +3 -3
  64. package/dist/blocks/ai-chat/react/index.js +5 -5
  65. package/dist/blocks/ai-files/index.d.ts +3 -3
  66. package/dist/blocks/ai-files/index.js +3 -3
  67. package/dist/blocks/ai-providers/index.d.ts +3 -3
  68. package/dist/blocks/ai-providers/index.js +8 -7
  69. package/dist/blocks/ai-tasks/index.d.ts +3 -3
  70. package/dist/blocks/ai-tasks/index.js +7 -6
  71. package/dist/blocks/announcements/index.d.ts +3 -3
  72. package/dist/blocks/announcements/index.js +3 -3
  73. package/dist/blocks/announcements/react/index.d.ts +3 -3
  74. package/dist/blocks/announcements/react/index.js +3 -3
  75. package/dist/blocks/api-keys/index.d.ts +5 -5
  76. package/dist/blocks/api-keys/index.js +8 -8
  77. package/dist/blocks/attachments/index.d.ts +12 -8
  78. package/dist/blocks/attachments/index.js +22 -13
  79. package/dist/blocks/audit/index.d.ts +21 -10
  80. package/dist/blocks/audit/index.js +30 -11
  81. package/dist/blocks/billing/index.d.ts +11 -9
  82. package/dist/blocks/billing/index.js +15 -15
  83. package/dist/blocks/comments/index.d.ts +8 -8
  84. package/dist/blocks/comments/index.js +8 -7
  85. package/dist/blocks/connectors/index.d.ts +3 -3
  86. package/dist/blocks/connectors/index.js +7 -6
  87. package/dist/blocks/data-lifecycle/index.d.ts +12 -8
  88. package/dist/blocks/data-lifecycle/index.js +13 -8
  89. package/dist/blocks/entitlements/index.d.ts +3 -3
  90. package/dist/blocks/entitlements/index.js +1 -1
  91. package/dist/blocks/flags/index.d.ts +4 -4
  92. package/dist/blocks/flags/index.js +4 -3
  93. package/dist/blocks/inbox/index.d.ts +3 -3
  94. package/dist/blocks/inbox/index.js +4 -5
  95. package/dist/blocks/inbox/react/index.d.ts +1 -1
  96. package/dist/blocks/inbox/react/index.js +1 -1
  97. package/dist/blocks/inbox/react/server.d.ts +1 -1
  98. package/dist/blocks/index.d.ts +10 -10
  99. package/dist/blocks/index.js +6 -6
  100. package/dist/blocks/jobs/index.d.ts +48 -32
  101. package/dist/blocks/jobs/index.js +44 -287
  102. package/dist/blocks/knowledge/index.d.ts +3 -3
  103. package/dist/blocks/knowledge/index.js +3 -3
  104. package/dist/blocks/memory/index.d.ts +4 -4
  105. package/dist/blocks/memory/index.js +7 -6
  106. package/dist/blocks/notifications/index.d.ts +11 -9
  107. package/dist/blocks/notifications/index.js +20 -25
  108. package/dist/blocks/notifications/react/index.d.ts +1 -1
  109. package/dist/blocks/notifications/react/index.js +1 -1
  110. package/dist/blocks/onboarding/index.d.ts +3 -3
  111. package/dist/blocks/onboarding/index.js +3 -3
  112. package/dist/blocks/onboarding/react/index.d.ts +2 -2
  113. package/dist/blocks/onboarding/react/index.js +2 -2
  114. package/dist/blocks/onboarding/react/server.d.ts +1 -1
  115. package/dist/blocks/organizations/index.d.ts +9 -9
  116. package/dist/blocks/organizations/index.js +11 -18
  117. package/dist/blocks/outbox/index.d.ts +2 -2
  118. package/dist/blocks/outbox/index.js +16 -25
  119. package/dist/blocks/profiles/index.d.ts +7 -7
  120. package/dist/blocks/profiles/index.js +7 -6
  121. package/dist/blocks/push/index.d.ts +4 -4
  122. package/dist/blocks/push/index.js +3 -3
  123. package/dist/blocks/settings/index.d.ts +4 -4
  124. package/dist/blocks/settings/index.js +7 -6
  125. package/dist/blocks/sso/index.d.ts +5 -5
  126. package/dist/blocks/sso/index.js +6 -5
  127. package/dist/blocks/usage/index.d.ts +3 -3
  128. package/dist/blocks/usage/index.js +5 -4
  129. package/dist/blocks/waitlist/index.d.ts +5 -5
  130. package/dist/blocks/waitlist/index.js +5 -4
  131. package/dist/blocks/webhooks/index.d.ts +22 -13
  132. package/dist/blocks/webhooks/index.js +41 -70
  133. package/dist/blocks/workflow-builder/index.d.ts +4 -4
  134. package/dist/blocks/workflow-builder/index.js +3 -3
  135. package/dist/blocks/workflow-builder/react/index.d.ts +4 -4
  136. package/dist/blocks/workflow-builder/react/index.js +4 -4
  137. package/dist/blocks/workflows/index.d.ts +3 -3
  138. package/dist/blocks/workflows/index.js +3 -3
  139. package/dist/blocks/workflows/react/index.d.ts +3 -3
  140. package/dist/blocks/workflows/react/index.js +3 -3
  141. package/dist/build-hPwk3_X5.js +1296 -0
  142. package/dist/{build-BXIzE6Xv.js → build-meLuYGri.js} +3 -3
  143. package/dist/casing-DdFWEtqr.js +16 -0
  144. package/dist/chat-sdk/index.d.ts +6 -6
  145. package/dist/chat-sdk/index.js +5 -4
  146. package/dist/chat-sdk/react/index.d.ts +1 -1
  147. package/dist/chat-sdk/react/server.d.ts +1 -1
  148. package/dist/{claims-DDBQT6BK.js → claims-0KZVT804.js} +1 -1
  149. package/dist/cli/add-1dc5wM5k.js +69 -0
  150. package/dist/cli/arazzo-1.0-BalU61-_.js +532 -0
  151. package/dist/cli/arazzo-1.1-Bnfasbun.js +705 -0
  152. package/dist/cli/asyncapi-3.0.0-C78dBjR6.js +5593 -0
  153. package/dist/cli/asyncapi-3.1.0-g-7aIfV1.js +5833 -0
  154. package/dist/cli/bin.js +4 -4
  155. package/dist/cli/cache-CIfA-jBV.js +483 -0
  156. package/dist/cli/{codemod-Bl_tQpHn.js → codemod-JVlTQQG2.js} +4 -4
  157. package/dist/cli/{command-CK14fP91.js → command-DV-StG1x.js} +5 -0
  158. package/dist/cli/{config-DU7EJImt.js → config-C2Pz2_4A.js} +7 -4
  159. package/dist/cli/config-DpbF8ML3.js +2 -0
  160. package/dist/cli/{config-NiPxAmUF.js → config-M-WzL9O2.js} +116 -18
  161. package/dist/cli/{db-DOBPt660.js → db-BkcfOlyB.js} +2 -1
  162. package/dist/cli/{diff-SjkO5rNr.js → diff-D1jGdb3Y.js} +1 -1
  163. package/dist/cli/{doctor-CVdnLahA.js → doctor-VcDtuusV.js} +317 -222
  164. package/dist/cli/emit-BHHfwUoT.js +1136 -0
  165. package/dist/cli/{env-qXgyMV6r.js → env-B--LMhEe.js} +13 -10
  166. package/dist/cli/env-vzBG90Um.js +2 -0
  167. package/dist/cli/{env-CJLbUVPB.js → env-zHJtMIBo.js} +11 -3
  168. package/dist/cli/{errors-4v4DTtda.js → errors-CqTLXe2M.js} +18 -2
  169. package/dist/cli/{fastest-levenshtein-CFN-lNDv.js → fastest-levenshtein-CF7BCi9l.js} +1 -1
  170. package/dist/cli/files-BVupXPIC.js +34 -0
  171. package/dist/cli/gen-DmVj3u4L.js +322 -0
  172. package/dist/cli/{init-Cr6arjXU.js → glue-C1UE8gQN.js} +16 -313
  173. package/dist/cli/index.d.ts +59 -31
  174. package/dist/cli/index.js +8 -6
  175. package/dist/cli/init-CVZ3s5kl.js +258 -0
  176. package/dist/cli/{introspect-Bzuv1HHj.js → introspect-BToGNfm-.js} +14 -14
  177. package/dist/cli/{io-DI1mTdSA.js → io-CFzJVJ68.js} +5 -1
  178. package/dist/cli/{keys-BGCnnb-s.js → keys-CJhtIxJ3.js} +4 -4
  179. package/dist/cli/metadata-DSRKCaf-.js +133 -0
  180. package/dist/cli/names-D6LrQnOv.js +6 -0
  181. package/dist/cli/openapi-3.0-t7xwkuRH.js +928 -0
  182. package/dist/cli/openapi-3.1-CVze7tBS.js +870 -0
  183. package/dist/cli/openapi-3.2-CFoMYM01.js +1031 -0
  184. package/dist/cli/{openapi-BlRJ18s3.js → openapi-DWa4Ir1q.js} +8 -14
  185. package/dist/cli/prompts-BdeVmVpg.js +2 -0
  186. package/dist/cli/{prompts-BNcNfAve.js → prompts-DZJB1nTw.js} +6 -6
  187. package/dist/cli/{rolldown-runtime-BPOCksWG.js → rolldown-runtime-CMFfr-1z.js} +3 -1
  188. package/dist/cli/run-DA6_lg3w.js +389 -0
  189. package/dist/cli/run-DuN1MX-7.js +705 -0
  190. package/dist/cli/scaffold-5DenHSxF.js +292 -0
  191. package/dist/cli/scaffold-CwQUMFRb.js +2 -0
  192. package/dist/cli/{seed-DQzqT7LP.js → seed-CzBmrGON.js} +14 -18
  193. package/dist/cli/seed-DOmit9Hq.js +2 -0
  194. package/dist/cli/{skills-QQs4q68J.js → skills-CnO8QFS7.js} +7 -6
  195. package/dist/cli/snapshot-Bstk6ulj.js +287 -0
  196. package/dist/cli/source-args-BYfq6imV.js +31 -0
  197. package/dist/cli/spec-CzosTYm3.js +7438 -0
  198. package/dist/cli/spec-T_0Bcyw7.js +2 -0
  199. package/dist/cli/{sql-B8csQPyn.js → sql-BKOOQAX3.js} +240 -218
  200. package/dist/cli/sql-DJrNDxQm.js +3 -0
  201. package/dist/cli/{style-C0NFdJRL.js → style-CB3vxgh0.js} +3 -3
  202. package/dist/cli/typegen-Demi5-VQ.js +486 -0
  203. package/dist/cli/validate-Ca13ktgz.js +7522 -0
  204. package/dist/cli/{version-Bp4fyubI.js → version-B4k0aUxS.js} +1 -1
  205. package/dist/client/index.d.ts +4 -3
  206. package/dist/client/index.js +60 -3
  207. package/dist/client/native/index.d.ts +3 -3
  208. package/dist/client/native/index.js +3 -3
  209. package/dist/{client-CI0Z2zWX.js → client-wxeTQFtB.js} +36 -3
  210. package/dist/{clone-BfgmLU90.js → clone-dN9XOL1K.js} +9 -1
  211. package/dist/{cloud-event-BnmD5fb9.js → cloud-event-CTh9Sr5w.js} +16 -2
  212. package/dist/{cloud-event-C1JCc1bH.d.ts → cloud-event-Dune0KI7.d.ts} +16 -2
  213. package/dist/{compiler-DY_wkj4R.d.ts → compiler-V1qvcST1.d.ts} +2 -2
  214. package/dist/{compose-BIBNgAnq.js → compose-BHej1acw.js} +3 -3
  215. package/dist/{composite-CpHLEo-G.d.ts → composite-CWAJTRBF.d.ts} +6 -6
  216. package/dist/{composite-C6I8ZyaF.js → composite-zTe0TCqj.js} +4 -4
  217. package/dist/config/index.d.ts +3 -4
  218. package/dist/config/index.js +4 -4
  219. package/dist/config-DlKvtt95.js +540 -0
  220. package/dist/{connector-Dv8kK0MO.d.ts → connector-CySQEFcW.d.ts} +1 -1
  221. package/dist/{connectors-CrpknU0P.d.ts → connectors--PGhmiu0.d.ts} +4 -4
  222. package/dist/{context-BCrWe7ow.d.ts → context-DsV2SueA.d.ts} +11 -2
  223. package/dist/context-nPDvQ-Zl.js +41 -0
  224. package/dist/credentials/index.d.ts +5 -5
  225. package/dist/credentials/index.js +9 -17
  226. package/dist/{cron-DVPUg5k3.js → cron-D25Ukpxy.js} +1 -1
  227. package/dist/cron-route-D2AN9SA1.js +24 -0
  228. package/dist/{csv-DCK-PT1n.js → csv-BZnHA1Py.js} +1 -1
  229. package/dist/{define-B-TVjC25.js → define-CFQcvM20.js} +263 -229
  230. package/dist/{define-CJJkkr1-.d.ts → define-DmcfoNXB.d.ts} +136 -111
  231. package/dist/edge/index.d.ts +66 -13
  232. package/dist/edge/index.js +65 -39
  233. package/dist/elysia/index.d.ts +1 -1
  234. package/dist/elysia/index.js +1 -1
  235. package/dist/{embeddings-C9KGQnXt.d.ts → embeddings-B4vhS-dY.d.ts} +1 -1
  236. package/dist/{ended-XjeGQ5XW.d.ts → ended-CcvcRqEd.d.ts} +7 -1
  237. package/dist/{entitlements-DRl6ZJUm.js → entitlements-BYFf0Cdh.js} +2 -2
  238. package/dist/{entitlements-BKSVGtrG.d.ts → entitlements-Ds8qoYZ-.d.ts} +1 -1
  239. package/dist/env/index.d.ts +1 -1
  240. package/dist/env/index.js +9 -2
  241. package/dist/{errors-B11Duf73.js → errors-2M6CKMP4.js} +5 -0
  242. package/dist/{errors-DLjJHPLK.js → errors-rZ7VIqp6.js} +2 -2
  243. package/dist/{escape-like-ImTK0ps_.d.ts → escape-like-DDWoHzh_.d.ts} +1 -1
  244. package/dist/eve/index.d.ts +5 -5
  245. package/dist/eve/index.js +5 -11
  246. package/dist/{eve-gT2Fpjut.d.ts → eve-CoAIcCkq.d.ts} +2 -2
  247. package/dist/events/index.d.ts +4 -4
  248. package/dist/events/index.js +7 -2
  249. package/dist/{events-DWDhx77e.d.ts → events-D1BOCll8.d.ts} +6 -4
  250. package/dist/{executor-Bq28caBo.js → executor-B-fD7DLt.js} +52 -35
  251. package/dist/executor-B_Hfobee.js +162 -0
  252. package/dist/{executor-BVBFM86G.d.ts → executor-CpxLPCiz.d.ts} +1 -1
  253. package/dist/{executor-CaWigTyR.d.ts → executor-DfEtf0cq.d.ts} +43 -27
  254. package/dist/{executor-DvsBbNBS.d.ts → executor-Drzu3dBK.d.ts} +2 -2
  255. package/dist/{executor-DbvExCFC.d.ts → executor-ngjKL_Pe.d.ts} +2 -2
  256. package/dist/expo/index.d.ts +4 -4
  257. package/dist/expo/index.js +6 -6
  258. package/dist/expo-sqlite/index.d.ts +3 -3
  259. package/dist/expo-sqlite/index.js +2 -2
  260. package/dist/extra-CGQ2_q3S.js +10 -0
  261. package/dist/{field-errors-BFOa7WhB.d.ts → field-errors-DIe9XYWL.d.ts} +17 -7
  262. package/dist/{field-errors-VF1yb8yI.js → field-errors-DZVRWRkf.js} +1 -1
  263. package/dist/format-DTXdu8ya.d.ts +70 -0
  264. package/dist/{framework-KIPvRQJU.d.ts → framework-148t1m3C.d.ts} +5 -5
  265. package/dist/{framework-BDCpJI7o.js → framework-3ey3QmrO.js} +2 -2
  266. package/dist/function-contract-BcZenXMO.d.ts +8 -0
  267. package/dist/{gateway-C1ssRHnf.d.ts → gateway-S9vicgeo.d.ts} +4 -4
  268. package/dist/{guards-BnzDvFrz.js → guards-6F2bCtQR.js} +3 -1
  269. package/dist/h3/index.d.ts +1 -1
  270. package/dist/h3/index.js +1 -1
  271. package/dist/h3/v1/index.d.ts +1 -1
  272. package/dist/h3/v1/index.js +1 -1
  273. package/dist/{message-CaKlqdsX.js → history-GH1HJWQV.js} +65 -13
  274. package/dist/hmac-DCud0myt.js +22 -0
  275. package/dist/hono/index.d.ts +19 -14
  276. package/dist/hono/index.js +21 -16
  277. package/dist/{hooks-1BTCJsiw.js → hooks-Bhza9Hnr.js} +68 -100
  278. package/dist/http-sbmBe5d2.js +25 -0
  279. package/dist/{inbox-i7E1ppo6.d.ts → inbox-Cd1KCEBL.d.ts} +3 -3
  280. package/dist/index-B72Rvv_j.d.ts +89 -0
  281. package/dist/{index-DunNRdnT.d.ts → index-BCHR4Ucl.d.ts} +4 -4
  282. package/dist/{index-CLg87OBW.d.ts → index-BUK7jUzR.d.ts} +6 -0
  283. package/dist/{config-D44Y7PAv.d.ts → index-Ba1SI-uO.d.ts} +625 -278
  284. package/dist/{index-D48jVS-N.d.ts → index-BfxOaOYs.d.ts} +4 -5
  285. package/dist/{index-ClmjK_o-.d.ts → index-CicIyqOe.d.ts} +4 -4
  286. package/dist/{index-ACiNPN4Z.d.ts → index-D69h4QqD.d.ts} +1 -1
  287. package/dist/index-DG2SUXDQ.d.ts +58 -0
  288. package/dist/{index-Bepi-Hgg.d.ts → index-DoNVLHOU.d.ts} +3 -3
  289. package/dist/{index-CdZKQF98.d.ts → index-R274XFlg.d.ts} +1 -1
  290. package/dist/{index-CewnYSpv.d.ts → index-_4R4b01v.d.ts} +8 -18
  291. package/dist/index.d.ts +89 -14
  292. package/dist/index.js +12 -11
  293. package/dist/{json-schema-CvER4kgT.js → json-schema-CT4tvrkA.js} +148 -102
  294. package/dist/{kit-Fm-Fv7q5.js → kit-BhHr9T9v.js} +36 -10
  295. package/dist/{kit-CkNzZUqv.d.ts → kit-W99LCPBS.d.ts} +13 -7
  296. package/dist/{knowledge-BXBbT0Tr.d.ts → knowledge-CAReFpRA.d.ts} +5 -5
  297. package/dist/{knowledge-CDmiMLew.js → knowledge-DnHtb64A.js} +4 -3
  298. package/dist/list/index.d.ts +1 -2
  299. package/dist/{list-query-BRt-zDF7.d.ts → list-query-D3JQeEL7.d.ts} +4 -4
  300. package/dist/mcp/index.d.ts +49 -19
  301. package/dist/mcp/index.js +158 -94
  302. package/dist/mcp/sdk/index.d.ts +38 -6
  303. package/dist/mcp/sdk/index.js +88 -6
  304. package/dist/{message-CfDoR0Y6.d.ts → message-B0fNJgq8.d.ts} +1 -2
  305. package/dist/{messages-B9-5887d.js → messages-CJoHHCWT.js} +4 -205
  306. package/dist/{mfa-Daak8ukG.d.ts → mfa-SZc9YYyb.d.ts} +1 -1
  307. package/dist/model-OgBxvk3N.d.ts +300 -0
  308. package/dist/model-messages-Cxw_Up4f.js +206 -0
  309. package/dist/model-messages-D4GZllOD.d.ts +34 -0
  310. package/dist/modules-DksjZyMW.js +77 -0
  311. package/dist/nestjs/index.d.ts +2 -2
  312. package/dist/nestjs/index.js +1 -1
  313. package/dist/next/index.d.ts +105 -55
  314. package/dist/next/index.js +204 -170
  315. package/dist/node/index.d.ts +2 -2
  316. package/dist/node/index.js +1 -1
  317. package/dist/{onboarding-BZGHYJks.d.ts → onboarding-LZvlK1P4.d.ts} +3 -3
  318. package/dist/openapi/index.d.ts +4 -2
  319. package/dist/openapi/index.js +21 -343
  320. package/dist/optional-peer-D1pi-skw.js +24 -0
  321. package/dist/orpc/index.d.ts +8 -8
  322. package/dist/orpc/index.js +21 -20
  323. package/dist/otel/index.d.ts +3 -3
  324. package/dist/otel/index.js +7 -7
  325. package/dist/{outbox-Cq7pPYvl.d.ts → outbox-DZfAvfzC.d.ts} +6 -6
  326. package/dist/overlay/index.d.ts +233 -0
  327. package/dist/overlay/index.js +554 -0
  328. package/dist/{plugin-FGY8UhYm.d.ts → plugin-CPK2HsbY.d.ts} +42 -3
  329. package/dist/plugins/actor/index.d.ts +1 -1
  330. package/dist/plugins/actor/index.js +1 -1
  331. package/dist/plugins/rules/index.d.ts +2 -2
  332. package/dist/plugins/rules/index.js +1 -1
  333. package/dist/plugins/soft-delete/index.d.ts +3 -3
  334. package/dist/plugins/soft-delete/index.js +9 -2
  335. package/dist/plugins/tenant/index.d.ts +7 -2
  336. package/dist/plugins/tenant/index.js +16 -2
  337. package/dist/plugins/timestamps/index.d.ts +1 -1
  338. package/dist/plugins/timestamps/index.js +8 -1
  339. package/dist/plugins/validation/index.d.ts +2 -2
  340. package/dist/plugins/validation/index.js +4 -4
  341. package/dist/{pool-CAu2nLrL.d.ts → pool-gkhbGp2E.d.ts} +2 -2
  342. package/dist/postgres/index.d.ts +4 -4
  343. package/dist/postgres/index.js +2 -1
  344. package/dist/{postgrest-BLVdEnfe.d.ts → postgrest-BUqLag2Q.d.ts} +1 -1
  345. package/dist/powersync/index.d.ts +5 -5
  346. package/dist/powersync/index.js +4 -4
  347. package/dist/powersync/react/index.d.ts +3 -3
  348. package/dist/powersync/react/index.js +1 -1
  349. package/dist/{problem-BreOl8b8.js → problem-CJvFeGu7.js} +13 -2
  350. package/dist/{problem-DD8LZFjc.d.ts → problem-TvGdxO1t.d.ts} +7 -1
  351. package/dist/{provider-Di3sRutW.js → provider-DxRTex4x.js} +1 -1
  352. package/dist/{provider-D-UEMvSD.d.ts → provider-ib9wzUDz.d.ts} +2 -2
  353. package/dist/query/index.d.ts +2 -2
  354. package/dist/query/index.js +1 -1
  355. package/dist/{query-BQ-NaZon.js → query-Ctz-qKRx.js} +1 -1
  356. package/dist/rate-limit-Bw7HgmFj.js +260 -0
  357. package/dist/react/index.d.ts +9 -9
  358. package/dist/react/index.js +4 -4
  359. package/dist/react/native/index.d.ts +1 -1
  360. package/dist/react/native/index.js +2 -2
  361. package/dist/react/server.d.ts +10 -10
  362. package/dist/react/server.js +3 -3
  363. package/dist/react/session.d.ts +2 -2
  364. package/dist/{react-F80mF4-t.js → react-Bmpo59D7.js} +4 -4
  365. package/dist/react-router/index.d.ts +6 -6
  366. package/dist/react-router/index.js +9 -11
  367. package/dist/{read-set-DuKWC9Mj.js → read-set-DAeWhqPf.js} +2 -2
  368. package/dist/realtime/index.d.ts +3 -3
  369. package/dist/realtime/index.js +30 -36
  370. package/dist/{refusal-DhSU2Vvr.d.ts → refusal-CFI8-5nf.d.ts} +4 -1
  371. package/dist/{refusal-CeJWxmkH.js → refusal-K78A1Vmq.js} +5 -5
  372. package/dist/{resolve-tJZY3FEa.js → resolve-Bvgf3ut_.js} +131 -42
  373. package/dist/{resolve-ChTYeTEl.d.ts → resolve-MxXVWyhd.d.ts} +12 -8
  374. package/dist/resource--vTrBe6I.d.ts +103 -0
  375. package/dist/resource-BqNqlYg9.js +91 -0
  376. package/dist/resource-DA811u_4.js +463 -0
  377. package/dist/resource-execute-rbKvuCsY.d.ts +12 -0
  378. package/dist/resource-schemas-BJ518zFH.js +79 -0
  379. package/dist/resource-types-CqB6GWGT.d.ts +141 -0
  380. package/dist/resources-BVYPnuLo.js +56 -0
  381. package/dist/resources-DZSk8tXJ.d.ts +7 -0
  382. package/dist/{respond-DprrgyXX.d.ts → respond-Cw-zanCm.d.ts} +3 -3
  383. package/dist/{respond-BUgsXNgk.js → respond-volM3ByS.js} +4 -4
  384. package/dist/{result-D7y2fT87.d.ts → result-BchM1XZn.d.ts} +7 -1
  385. package/dist/{result-DzUbqgdW.js → result-DEqHCMKP.js} +1 -1
  386. package/dist/server/index.d.ts +81 -19
  387. package/dist/server/index.js +16 -14
  388. package/dist/{server-ZSJ9rCcV.d.ts → server-types-CrAmZ8jv.d.ts} +110 -36
  389. package/dist/{shared-CxWmcyqB.js → shared-DHjhfRdV.js} +2 -15
  390. package/dist/shared-DTneRoxi.js +14 -0
  391. package/dist/{sign-in-Cb1mwv6X.js → sign-in-D_yoP0PF.js} +1 -1
  392. package/dist/signatures-BRS_p3WD.d.ts +34 -0
  393. package/dist/signatures-DsWv_bYR.js +103 -0
  394. package/dist/{signers-4y62_VIi.d.ts → signers-cpdmZYrv.d.ts} +1 -1
  395. package/dist/solid/index.d.ts +9 -18
  396. package/dist/solid/index.js +2 -2
  397. package/dist/solid-start/index.d.ts +6 -6
  398. package/dist/solid-start/index.js +7 -7
  399. package/dist/spec/index.d.ts +134 -0
  400. package/dist/spec/index.js +353 -0
  401. package/dist/{spec-pins-C89s6DyW.d.ts → spec-pins-CwzDY25w.d.ts} +18 -1
  402. package/dist/{spec-pins--j6mTok4.js → spec-pins-DsLfUH7l.js} +14 -1
  403. package/dist/sql/index.d.ts +145 -119
  404. package/dist/sql/index.js +19921 -19798
  405. package/dist/{executor-De1Of3m3.js → sql-CwuqaQ4Y.js} +34 -169
  406. package/dist/ssr/index.d.ts +4 -4
  407. package/dist/ssr/index.js +3 -2
  408. package/dist/{standard-BK0cqJ7y.js → standard-DkzZUneg.js} +2 -2
  409. package/dist/{standard-CYsm7xpT.d.ts → standard-lmkbOtPB.d.ts} +1 -1
  410. package/dist/{stats-D_AD9GGu.js → stats-DhU78Ctf.js} +8 -4
  411. package/dist/storage/index.d.ts +4 -6
  412. package/dist/storage/index.js +16 -17
  413. package/dist/{bucket-Cl46E3jS.d.ts → storage-api-CB7Zl1Ci.d.ts} +243 -8
  414. package/dist/{store-CGjgWu5n.d.ts → store-DsIYEBnv.d.ts} +1 -1
  415. package/dist/streams/index.d.ts +4 -4
  416. package/dist/streams/index.js +5 -4
  417. package/dist/streams/redis/index.d.ts +1 -1
  418. package/dist/streams/redis/index.js +5 -11
  419. package/dist/{stripe-BMj5LtsT.js → stripe-v-Y2lmop.js} +2 -8
  420. package/dist/supabase-mcp-C6tMoEjn.d.ts +43 -0
  421. package/dist/supabase-mcp-Cpn5A4i-.js +28 -0
  422. package/dist/{support-DWwzVf-O.js → support-D1pFFouF.js} +71 -35
  423. package/dist/{support-view-CVOJJLpc.d.ts → support-view-scqMgtOo.d.ts} +1 -1
  424. package/dist/svelte/index.d.ts +8 -17
  425. package/dist/svelte/index.js +2 -2
  426. package/dist/sveltekit/index.d.ts +7 -7
  427. package/dist/sveltekit/index.js +10 -12
  428. package/dist/table-schema-htM_SbCW.js +286 -0
  429. package/dist/{tags-Cx-LnIQP.d.ts → tags-BO9LjtWG.d.ts} +1 -1
  430. package/dist/tanstack-db/index.d.ts +2 -2
  431. package/dist/tanstack-db/supabase/index.d.ts +52 -0
  432. package/dist/tanstack-db/supabase/index.js +97 -0
  433. package/dist/tanstack-start/index.d.ts +6 -6
  434. package/dist/tanstack-start/index.js +8 -12
  435. package/dist/{tee-CoEppCER.js → tee-Cb98Vn3b.js} +1 -1
  436. package/dist/{template--jDkl3UP.js → template-lPVh-EwW.js} +11 -2
  437. package/dist/{temporal-required-BVvW7SYJ.js → temporal-required-BtynQtM-.js} +1 -1
  438. package/dist/{tenant-BxNFk9bx.d.ts → tenant-CM368LXb.d.ts} +2 -2
  439. package/dist/testing/index.d.ts +249 -118
  440. package/dist/testing/index.js +1418 -870
  441. package/dist/ttl-cache-XzZ-Q2eX.js +29 -0
  442. package/dist/types-BRTSpOIh.js +5 -0
  443. package/dist/{types-C05bxW-W.d.ts → types-Bb_4-vdW.d.ts} +4 -4
  444. package/dist/{types-AYOvcyep.d.ts → types-CD6yCDx3.d.ts} +5 -5
  445. package/dist/{types-6rocye-y.d.ts → types-CbOUc5IH.d.ts} +4 -4
  446. package/dist/{types-6BdhkmZe.d.ts → types-CoE5Zwy4.d.ts} +8 -0
  447. package/dist/{types-DGs5L0VN.d.ts → types-DSJ3-m9X.d.ts} +4 -4
  448. package/dist/{queue-CLJurhdy.d.ts → types-D__3EN0q.d.ts} +17 -19
  449. package/dist/{usage-CrvrL2vw.d.ts → usage-D0NNUFfr.d.ts} +3 -3
  450. package/dist/{vault-wlbBhqm7.d.ts → vault-BpmApxxW.d.ts} +3 -3
  451. package/dist/vercel-connect/index.d.ts +1 -1
  452. package/dist/vercel-connect/index.js +5 -11
  453. package/dist/{verify-DPuWngD4.d.ts → verify-C91Wyp40.d.ts} +5 -35
  454. package/dist/verify-CJbYfADA.js +124 -0
  455. package/dist/{version--AolB5ej.js → version-Cq8gfDbd.js} +1 -1
  456. package/dist/{view-BeFcRV6G.js → view-D5ryq3gz.js} +1 -1
  457. package/dist/{view-CF7ihnkg.d.ts → view-TpXEUcVN.d.ts} +3 -3
  458. package/dist/vue/index.d.ts +9 -18
  459. package/dist/vue/index.js +2 -2
  460. package/dist/{watch-Xuxrvxq-.js → watch-BcvtAHOd.js} +2 -2
  461. package/dist/{watch-DI34G86j.d.ts → watch-COzRWvVN.d.ts} +23 -9
  462. package/dist/{wire-DtZQ4sdE.js → wire-Df3EWkG8.js} +2 -2
  463. package/dist/{workflow-builder-DJ1oHn8g.js → workflow-builder-CHqHpAVt.js} +6 -5
  464. package/dist/workflow-sdk/builder/index.d.ts +3 -3
  465. package/dist/workflow-sdk/index.d.ts +1 -1
  466. package/dist/workflow-sdk/world/index.d.ts +23 -17
  467. package/dist/workflow-sdk/world/index.js +59 -76
  468. package/dist/{workflow-sdk-B3yLD6Br.d.ts → workflow-sdk-DTZyrvNo.d.ts} +3 -3
  469. package/dist/{workflow-sdk-world-D-prir6O.js → workflow-sdk-world-CMV1ahFW.js} +528 -526
  470. package/dist/{workflows-B0j9WKPu.d.ts → workflows-CcpCBfIe.d.ts} +3 -3
  471. package/dist/{workflows-wu1WWBn7.js → workflows-IvxzG2cl.js} +5 -4
  472. package/package.json +54 -3
  473. package/schemas/config-v1.json +243 -0
  474. package/schemas/doctor-report-v1.json +4 -1
  475. package/schemas/spec-manifest-v1.json +95 -0
  476. package/skills/better-supabase/SKILL.md +8 -4
  477. package/skills/better-supabase/references/troubleshooting.md +20 -20
  478. package/skills/better-supabase-api/references/expo.md +6 -3
  479. package/skills/better-supabase-api/references/powersync.md +2 -1
  480. package/skills/better-supabase-auth/SKILL.md +8 -4
  481. package/dist/cli/config-B9HkL8nF.js +0 -2
  482. package/dist/cli/gen-AIf4MREI.js +0 -3100
  483. package/dist/cli/gen-DSrahEdX.js +0 -2
  484. package/dist/cli/prompts-BTYQGunc.js +0 -2
  485. package/dist/cli/run-BO052mki.js +0 -361
  486. package/dist/config-Dn7F5k9A.js +0 -202
  487. package/dist/history-BZih6SFP.js +0 -64
  488. package/dist/index-BkWT_uBO.d.ts +0 -51
  489. package/dist/index-Bxih3l0u.d.ts +0 -81
  490. package/dist/index-CaxrMD1A.d.ts +0 -1
  491. package/dist/index-DQh4VCc9.d.ts +0 -98
  492. package/dist/keys-4MnkWTTh.js +0 -35
  493. package/dist/messages-DYP0sUTe.d.ts +0 -59
  494. package/dist/modules-dxrVK3ID.js +0 -228
  495. package/dist/path-Cv__-OTj.d.ts +0 -17
  496. package/dist/resource-BsvzCMlX.js +0 -212
  497. package/dist/resource-IPS5xi9q.d.ts +0 -74
  498. package/dist/template-CwO38Do8.d.ts +0 -6
  499. package/dist/verify-DL41hbvY.js +0 -232
  500. package/dist/cli/{read-sets-CETOSFx4.js → read-sets-DjJrm8Wj.js} +1 -1
package/dist/cli/bin.js CHANGED
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
- import { i as run } from "./run-BO052mki.js";
3
- import { t as colorEnabled } from "./style-C0NFdJRL.js";
2
+ import { i as run } from "./run-DA6_lg3w.js";
3
+ import { t as colorEnabled } from "./style-CB3vxgh0.js";
4
4
  import { text } from "node:stream/consumers";
5
5
  //#region src/cli/bin.ts
6
- const clack = () => import("./prompts-BTYQGunc.js").then((module) => module.clackPrompter);
6
+ const clack = () => import("./prompts-BdeVmVpg.js").then((module) => module.createClackPrompter(process.stderr));
7
7
  const prompts = {
8
8
  select: async (message, choices, initial) => (await clack()).select(message, choices, initial),
9
9
  multiselect: async (message, choices, initial) => (await clack()).multiselect(message, choices, initial),
@@ -39,7 +39,7 @@ const result = await run(process.argv.slice(2), {
39
39
  process.stderr.write(chunk);
40
40
  },
41
41
  stdin: () => text(process.stdin),
42
- color: colorEnabled(),
42
+ color: colorEnabled(process.stdout),
43
43
  ...process.stdin.isTTY && process.stdout.isTTY ? { prompts } : {}
44
44
  }
45
45
  });
@@ -0,0 +1,483 @@
1
+ import { t as VERSION } from "./version-B4k0aUxS.js";
2
+ import { t as TYPEGEN_VERSION } from "./typegen-version-DeFbtzYI.js";
3
+ import { dirname, resolve } from "node:path";
4
+ import { mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
5
+ import { createHash } from "node:crypto";
6
+ //#region src/cli/introspect/extras.ts
7
+ /**
8
+ * Catalog details `@supabase/postgrest-typegen` leaves out: named unique and
9
+ * CHECK constraints, foreign key actions, ordered primary keys, indexes,
10
+ * policies, triggers, grants, buckets and the realtime publication.
11
+ *
12
+ * The SQL takes no bind parameters because the Management API endpoint only
13
+ * accepts a query string; schema names are inlined as escaped literals.
14
+ */
15
+ const literalArray = (values) => `array[${values.map((value) => `'${value.replaceAll("'", "''")}'`).join(", ")}]::text[]`;
16
+ /** Row estimate from which a table counts as large in the snapshot. */
17
+ const LARGE_TABLE_ROWS = 1e4;
18
+ const RELATIONS = (schemas) => `
19
+ select c.oid::int8 as id, n.nspname as schema, c.relname as name,
20
+ c.reltuples >= ${LARGE_TABLE_ROWS} as large
21
+ from pg_class c
22
+ join pg_namespace n on n.oid = c.relnamespace
23
+ where n.nspname = any(${schemas}) and c.relkind in ('r', 'p', 'v', 'm', 'f')
24
+ order by 2, 3`;
25
+ const CONSTRAINTS = (schemas) => `
26
+ select con.conrelid::int8 as table_id, con.conname as name, con.contype as type,
27
+ array(select a.attname from unnest(con.conkey) with ordinality k(attnum, ord)
28
+ join pg_attribute a on a.attrelid = con.conrelid and a.attnum = k.attnum order by k.ord)::text[] as columns,
29
+ con.confdeltype as on_delete, con.confupdtype as on_update,
30
+ pg_get_constraintdef(con.oid) as definition
31
+ from pg_constraint con
32
+ join pg_class c on c.oid = con.conrelid
33
+ join pg_namespace n on n.oid = c.relnamespace
34
+ where n.nspname = any(${schemas}) and con.contype in ('p', 'u', 'f', 'c')
35
+ order by 1, 2`;
36
+ const INDEXES = (schemas) => `
37
+ select ix.indrelid::int8 as table_id, i.relname as name,
38
+ ix.indisunique as unique, ix.indisprimary as primary,
39
+ (ix.indpred is not null or 0 = any(ix.indkey::int2[])) as partial,
40
+ am.amname as method, pg_get_expr(ix.indpred, ix.indrelid) as predicate,
41
+ array(select a.attname from unnest((ix.indkey::int2[])[0:ix.indnkeyatts - 1]) with ordinality k(attnum, ord)
42
+ join pg_attribute a on a.attrelid = ix.indrelid and a.attnum = k.attnum order by k.ord)::text[] as columns
43
+ from pg_index ix
44
+ join pg_class i on i.oid = ix.indexrelid
45
+ join pg_am am on am.oid = i.relam
46
+ join pg_class c on c.oid = ix.indrelid
47
+ join pg_namespace n on n.oid = c.relnamespace
48
+ where n.nspname = any(${schemas}) and ix.indisvalid
49
+ order by 1, 2`;
50
+ const POLICIES = (schemas) => `
51
+ select c.oid::int8 as table_id, p.policyname as name,
52
+ (p.permissive = 'PERMISSIVE') as permissive, p.roles::text[] as roles, lower(p.cmd) as command,
53
+ p.qual as using_expr, p.with_check as check_expr,
54
+ array(
55
+ select distinct fn.nspname || '.' || pr.proname
56
+ from pg_policy pol
57
+ join pg_depend d on d.classid = 'pg_policy'::regclass and d.objid = pol.oid
58
+ and d.refclassid = 'pg_proc'::regclass
59
+ join pg_proc pr on pr.oid = d.refobjid
60
+ join pg_namespace fn on fn.oid = pr.pronamespace
61
+ where pol.polrelid = c.oid and pol.polname = p.policyname
62
+ order by 1
63
+ )::text[] as functions
64
+ from pg_policies p
65
+ join pg_namespace n on n.nspname = p.schemaname
66
+ join pg_class c on c.relnamespace = n.oid and c.relname = p.tablename
67
+ where p.schemaname = any(${schemas})
68
+ order by 1, 2`;
69
+ const FUNCTIONS = (schemas) => `
70
+ select n.nspname as schema, p.proname as name,
71
+ pg_get_function_identity_arguments(p.oid) as signature,
72
+ l.lanname as language, p.provolatile as volatility,
73
+ p.prosecdef as security_definer, coalesce(p.proconfig, '{}')::text[] as config,
74
+ array(
75
+ select r from unnest(array['anon', 'authenticated']) r
76
+ where has_function_privilege(r, p.oid, 'EXECUTE')
77
+ ) as execute
78
+ from pg_proc p
79
+ join pg_namespace n on n.oid = p.pronamespace
80
+ join pg_language l on l.oid = p.prolang
81
+ where p.oid in (
82
+ select d.refobjid
83
+ from pg_depend d
84
+ join pg_policy pol on d.classid = 'pg_policy'::regclass and d.objid = pol.oid
85
+ join pg_class c on c.oid = pol.polrelid
86
+ join pg_namespace cn on cn.oid = c.relnamespace
87
+ where d.refclassid = 'pg_proc'::regclass and cn.nspname = any(${schemas})
88
+ )
89
+ or (n.nspname = any(${schemas}) and ((p.prosecdef
90
+ and p.prorettype not in ('trigger'::regtype, 'event_trigger'::regtype)) or exists (
91
+ select 1 from unnest(p.proconfig) setting where setting not like 'search_path=%'
92
+ )))
93
+ order by 1, 2, 3`;
94
+ /** Roles the hook checks care about: the one Auth calls it as, and the API roles. */
95
+ const HOOK_ROLES = literalArray([
96
+ "supabase_auth_admin",
97
+ "authenticated",
98
+ "anon"
99
+ ]);
100
+ const HOOKS = (names) => `
101
+ select n.nspname as schema, p.proname as name,
102
+ pg_get_function_identity_arguments(p.oid) as signature,
103
+ l.lanname as language, p.provolatile as volatility,
104
+ p.prosecdef as security_definer, coalesce(p.proconfig, '{}')::text[] as config,
105
+ array(select r.rolname::text from pg_roles r
106
+ where r.rolname = any(${HOOK_ROLES}) and has_function_privilege(r.oid, p.oid, 'execute')
107
+ order by 1) as execute,
108
+ exists(select 1 from aclexplode(coalesce(p.proacl, acldefault('f', p.proowner))) a
109
+ where a.grantee = 0 and a.privilege_type = 'EXECUTE') as public_execute,
110
+ array(select r.rolname::text from pg_roles r
111
+ where r.rolname = any(${HOOK_ROLES}) and has_schema_privilege(r.oid, n.oid, 'usage')
112
+ order by 1) as schema_usage,
113
+ p.prosrc as source
114
+ from pg_proc p
115
+ join pg_namespace n on n.oid = p.pronamespace
116
+ join pg_language l on l.oid = p.prolang
117
+ where n.nspname || '.' || p.proname = any(${names})
118
+ order by 1, 2, 3`;
119
+ const TRIGGERS = (schemas) => `
120
+ select t.tgrelid::int8 as table_id, t.tgname as name,
121
+ pn.nspname || '.' || p.proname as function,
122
+ case when t.tgtype & 2 = 2 then 'before' when t.tgtype & 64 = 64 then 'instead of' else 'after' end as timing,
123
+ array_remove(array[
124
+ case when t.tgtype & 4 = 4 then 'insert' end,
125
+ case when t.tgtype & 16 = 16 then 'update' end,
126
+ case when t.tgtype & 8 = 8 then 'delete' end,
127
+ case when t.tgtype & 32 = 32 then 'truncate' end
128
+ ], null)::text[] as events,
129
+ case when t.tgtype & 1 = 1 then 'row' else 'statement' end as level
130
+ from pg_trigger t
131
+ join pg_class c on c.oid = t.tgrelid
132
+ join pg_namespace n on n.oid = c.relnamespace
133
+ join pg_proc p on p.oid = t.tgfoid
134
+ join pg_namespace pn on pn.oid = p.pronamespace
135
+ where not t.tgisinternal and n.nspname = any(${schemas})
136
+ order by 1, 2`;
137
+ const GRANTS = (schemas) => `
138
+ select c.oid::int8 as table_id, coalesce(r.rolname, 'PUBLIC') as role,
139
+ array_agg(distinct acl.privilege_type order by acl.privilege_type)::text[] as privileges
140
+ from pg_class c
141
+ join pg_namespace n on n.oid = c.relnamespace
142
+ cross join lateral aclexplode(coalesce(c.relacl, acldefault('r', c.relowner))) acl
143
+ left join pg_roles r on r.oid = acl.grantee
144
+ where n.nspname = any(${schemas}) and c.relkind in ('r', 'p', 'v', 'm', 'f')
145
+ and (acl.grantee = 0 or r.rolname in ('anon', 'authenticated', 'service_role'))
146
+ and acl.privilege_type <> 'MAINTAIN'
147
+ group by 1, 2
148
+ order by 1, 2`;
149
+ const COLUMN_GRANTS = (schemas) => `
150
+ select c.oid::int8 as table_id, a.attname as column, coalesce(r.rolname, 'PUBLIC') as role,
151
+ array_agg(distinct acl.privilege_type order by acl.privilege_type)::text[] as privileges
152
+ from pg_class c
153
+ join pg_namespace n on n.oid = c.relnamespace
154
+ join pg_attribute a on a.attrelid = c.oid and a.attnum > 0 and not a.attisdropped and a.attacl is not null
155
+ cross join lateral aclexplode(a.attacl) acl
156
+ left join pg_roles r on r.oid = acl.grantee
157
+ where n.nspname = any(${schemas})
158
+ and (acl.grantee = 0 or r.rolname in ('anon', 'authenticated'))
159
+ and acl.privilege_type in ('INSERT', 'UPDATE')
160
+ group by 1, 2, 3
161
+ order by 1, 2, 3`;
162
+ const BUCKETS = `
163
+ select id, public, file_size_limit, allowed_mime_types,
164
+ to_jsonb(b) ? 'versioning_status' as has_versioning,
165
+ to_jsonb(b) -> 'versioning_status' as versioning_status,
166
+ to_jsonb(b) ? 'lifecycle_configuration' as has_lifecycle,
167
+ to_jsonb(b) -> 'lifecycle_configuration' as lifecycle_configuration
168
+ from storage.buckets b
169
+ order by id`;
170
+ const REALTIME = `
171
+ select schemaname || '.' || tablename as name
172
+ from pg_publication_tables
173
+ where pubname = 'supabase_realtime'
174
+ order by 1`;
175
+ const ROLE_SETTINGS = `
176
+ select r.rolname as role, s.setconfig as config
177
+ from pg_catalog.pg_db_role_setting s
178
+ join pg_catalog.pg_roles r on r.oid = s.setrole
179
+ where r.rolname in ('authenticator', 'anon', 'authenticated')
180
+ and s.setdatabase in (0, (select oid from pg_catalog.pg_database where datname = current_database()))
181
+ order by s.setdatabase`;
182
+ const HAS_TABLE = (qualified) => `select to_regclass('${qualified}') is not null as present`;
183
+ const ACTIONS = {
184
+ a: "no action",
185
+ r: "restrict",
186
+ c: "cascade",
187
+ n: "set null",
188
+ d: "set default"
189
+ };
190
+ const VOLATILITY = {
191
+ i: "immutable",
192
+ s: "stable",
193
+ v: "volatile"
194
+ };
195
+ /** `['statement_timeout=5s']` as `{ statement_timeout: '5s' }`. */
196
+ function settingsOf(config) {
197
+ const settings = {};
198
+ for (const entry of config ?? []) {
199
+ const at = entry.indexOf("=");
200
+ if (at > 0) settings[entry.slice(0, at)] = entry.slice(at + 1);
201
+ }
202
+ return settings;
203
+ }
204
+ const functionOf = (row) => ({
205
+ schema: row.schema,
206
+ name: row.name,
207
+ signature: row.signature,
208
+ language: row.language,
209
+ volatility: VOLATILITY[row.volatility],
210
+ securityDefiner: row.security_definer,
211
+ settings: settingsOf(row.config)
212
+ });
213
+ /** The functions behind Auth hooks, in any schema, with their ACLs. */
214
+ async function readHooks(db, targets) {
215
+ if (targets.length === 0) return [];
216
+ const found = await rows(db, HOOKS(literalArray(targets.map((t) => `${t.schema}.${t.name}`))));
217
+ return targets.map((target) => ({
218
+ hook: target.hook,
219
+ schema: target.schema,
220
+ name: target.name,
221
+ functions: found.filter((row) => row.schema === target.schema && row.name === target.name).map((row) => ({
222
+ ...functionOf(row),
223
+ execute: row.execute,
224
+ publicExecute: row.public_execute,
225
+ schemaUsage: row.schema_usage,
226
+ ...row.source === null ? {} : { source: row.source }
227
+ }))
228
+ }));
229
+ }
230
+ async function rows(db, sql) {
231
+ return (await db.query(sql)).rows;
232
+ }
233
+ /** Rows from a table owned by another Supabase service, if it exists. */
234
+ async function serviceRows(db, qualified, sql) {
235
+ const [probe] = await rows(db, HAS_TABLE(qualified));
236
+ return probe?.present ? rows(db, sql) : [];
237
+ }
238
+ function groupById(list) {
239
+ const map = /* @__PURE__ */ new Map();
240
+ for (const row of list) {
241
+ const id = Number(row.table_id);
242
+ const entry = map.get(id);
243
+ if (entry) entry.push(row);
244
+ else map.set(id, [row]);
245
+ }
246
+ return map;
247
+ }
248
+ /** Reads the extras for `schemas`, with the catalog queries in flight together. */
249
+ async function readExtras(db, schemas, hooks = []) {
250
+ const list = literalArray(schemas);
251
+ const [relations, constraintRows, indexRows, policyRows, triggerRows, grantRows, columnGrantRows, buckets, realtime, functions, roleRows, hookRows] = await Promise.all([
252
+ rows(db, RELATIONS(list)),
253
+ rows(db, CONSTRAINTS(list)),
254
+ rows(db, INDEXES(list)),
255
+ rows(db, POLICIES(list)),
256
+ rows(db, TRIGGERS(list)),
257
+ rows(db, GRANTS(list)),
258
+ rows(db, COLUMN_GRANTS(list)),
259
+ serviceRows(db, "storage.buckets", BUCKETS),
260
+ rows(db, REALTIME),
261
+ rows(db, FUNCTIONS(list)),
262
+ rows(db, ROLE_SETTINGS),
263
+ hooks.length > 0 ? readHooks(db, hooks) : void 0
264
+ ]);
265
+ const constraints = groupById(constraintRows);
266
+ const indexes = groupById(indexRows);
267
+ const policies = groupById(policyRows);
268
+ const triggers = groupById(triggerRows);
269
+ const grants = groupById(grantRows);
270
+ const columnGrants = groupById(columnGrantRows);
271
+ const roleSettings = {};
272
+ for (const row of roleRows) Object.assign(roleSettings[row.role] ??= {}, settingsOf(row.config));
273
+ return {
274
+ tables: relations.map((relation) => {
275
+ const id = Number(relation.id);
276
+ const own = constraints.get(id) ?? [];
277
+ const ownIndexes = indexes.get(id) ?? [];
278
+ const uniques = own.filter((con) => con.type === "u").map((con) => ({
279
+ name: con.name,
280
+ columns: con.columns
281
+ }));
282
+ const constraintNames = new Set(own.map((con) => con.name));
283
+ for (const index of ownIndexes) if (index.unique && !index.primary && !index.partial && !constraintNames.has(index.name)) uniques.push({
284
+ name: index.name,
285
+ columns: index.columns
286
+ });
287
+ return {
288
+ id,
289
+ schema: relation.schema,
290
+ name: relation.name,
291
+ primaryKey: own.find((con) => con.type === "p")?.columns ?? [],
292
+ uniques,
293
+ foreignKeys: own.filter((con) => con.type === "f").map((con) => ({
294
+ name: con.name,
295
+ onDelete: ACTIONS[con.on_delete] ?? "no action",
296
+ onUpdate: ACTIONS[con.on_update] ?? "no action"
297
+ })),
298
+ checks: own.filter((con) => con.type === "c").map((con) => ({
299
+ name: con.name,
300
+ definition: con.definition
301
+ })),
302
+ indexes: ownIndexes.map((index) => ({
303
+ name: index.name,
304
+ columns: index.columns,
305
+ unique: index.unique,
306
+ primary: index.primary,
307
+ partial: index.partial,
308
+ method: index.method,
309
+ predicate: index.predicate
310
+ })),
311
+ policies: (policies.get(id) ?? []).map((policy) => ({
312
+ name: policy.name,
313
+ command: policy.command,
314
+ roles: policy.roles,
315
+ permissive: policy.permissive,
316
+ using: policy.using_expr,
317
+ check: policy.check_expr,
318
+ functions: policy.functions ?? []
319
+ })),
320
+ triggers: (triggers.get(id) ?? []).map((trigger) => ({
321
+ name: trigger.name,
322
+ timing: trigger.timing,
323
+ events: trigger.events,
324
+ level: trigger.level,
325
+ function: trigger.function
326
+ })),
327
+ grants: (grants.get(id) ?? []).map((grant) => ({
328
+ role: grant.role,
329
+ privileges: grant.privileges
330
+ })),
331
+ columnGrants: (columnGrants.get(id) ?? []).map((grant) => ({
332
+ column: grant.column,
333
+ role: grant.role,
334
+ privileges: grant.privileges
335
+ })),
336
+ ...relation.large ? { large: true } : {}
337
+ };
338
+ }),
339
+ buckets: buckets.map((row) => ({
340
+ id: row.id,
341
+ public: row.public,
342
+ fileSizeLimit: row.file_size_limit === null ? null : Number(row.file_size_limit),
343
+ allowedMimeTypes: row.allowed_mime_types,
344
+ ...row.has_versioning ? { versioning: row.versioning_status } : {},
345
+ ...row.has_lifecycle ? { lifecycle: row.lifecycle_configuration } : {}
346
+ })),
347
+ realtime: realtime.map((row) => row.name),
348
+ roleSettings,
349
+ functions: functions.map((row) => ({
350
+ ...functionOf(row),
351
+ execute: row.execute
352
+ })),
353
+ ...hookRows ? { hooks: hookRows } : {}
354
+ };
355
+ }
356
+ //#endregion
357
+ //#region src/cli/introspect/fingerprint.ts
358
+ /**
359
+ * Catalogs whose rows only change with DDL, grants, comments or settings,
360
+ * with the column that ties a row to a relation or namespace, if any.
361
+ */
362
+ const CATALOGS = [
363
+ ["pg_namespace", "oid"],
364
+ ["pg_attribute", "attrelid"],
365
+ ["pg_attrdef", "adrelid"],
366
+ ["pg_constraint", "conrelid"],
367
+ ["pg_index", "indrelid"],
368
+ ["pg_inherits"],
369
+ ["pg_rewrite"],
370
+ ["pg_policy"],
371
+ ["pg_trigger", "tgrelid"],
372
+ ["pg_proc"],
373
+ ["pg_type", "typnamespace"],
374
+ ["pg_enum"],
375
+ ["pg_description"],
376
+ ["pg_db_role_setting"],
377
+ ["pg_publication"],
378
+ ["pg_publication_rel"],
379
+ ["pg_extension"]
380
+ ];
381
+ const TEMP_NAMESPACES = String.raw`(select oid from pg_catalog.pg_namespace where nspname like 'pg\_temp\_%' or nspname like 'pg\_toast\_temp\_%')`;
382
+ const TEMP_RELATIONS = `(select oid from pg_catalog.pg_class where relnamespace in ${TEMP_NAMESPACES})`;
383
+ const catalogRows = ([name, column]) => {
384
+ if (column === void 0) return `pg_catalog.${name}`;
385
+ return `(select * from pg_catalog.${name} where ${column} not in ${column === "oid" || column === "typnamespace" ? TEMP_NAMESPACES : TEMP_RELATIONS})`;
386
+ };
387
+ const digest = (from) => `(select md5(coalesce(string_agg(x::text, ',' order by x::text), '')) from ${from} x)`;
388
+ /**
389
+ * One cheap query whose result changes whenever introspection could. pg_class
390
+ * leaves out the planner statistics that VACUUM and ANALYZE rewrite, except
391
+ * the row-count threshold the snapshot records. pg_depend is limited to the
392
+ * policies' rows, which name the tables and functions each policy uses.
393
+ * pg_auth_members decides which privileges a role inherits, so the execute
394
+ * lists change with it. Bucket rows are data, so they are hashed when
395
+ * `storage.buckets` exists.
396
+ */
397
+ const FINGERPRINT_SQL = `select md5(concat_ws('|',
398
+ ${digest(`(select oid, relname, relnamespace, relkind, relacl, reloptions, relrowsecurity, relforcerowsecurity, relreplident, relispartition, reltuples >= ${LARGE_TABLE_ROWS} as large from pg_catalog.pg_class where relnamespace not in ${TEMP_NAMESPACES})`)},
399
+ ${CATALOGS.map((entry) => digest(catalogRows(entry))).join(",\n ")},
400
+ ${digest(`(select objid, refclassid, refobjid, refobjsubid, deptype from pg_catalog.pg_depend where classid = 'pg_catalog.pg_policy'::regclass)`)},
401
+ (select md5(coalesce(string_agg(rolname, ',' order by rolname), '')) from pg_catalog.pg_roles),
402
+ ${digest("pg_catalog.pg_auth_members")},
403
+ case when to_regclass('storage.buckets') is not null
404
+ then md5(query_to_xml('select id, public, file_size_limit, allowed_mime_types, to_jsonb(b) -> ''versioning_status'' as versioning, to_jsonb(b) -> ''lifecycle_configuration'' as lifecycle from storage.buckets b order by id', false, false, '')::text)
405
+ end
406
+ )) as fingerprint`;
407
+ /** A hash of the catalog; equal values mean introspection would return the same snapshot. */
408
+ async function catalogFingerprint(db) {
409
+ const [row] = (await db.query(FINGERPRINT_SQL)).rows;
410
+ const value = row && typeof row === "object" && "fingerprint" in row ? row.fingerprint : void 0;
411
+ if (typeof value !== "string") throw new TypeError("The catalog fingerprint query returned no row.");
412
+ return value;
413
+ }
414
+ //#endregion
415
+ //#region src/cli/introspect/cache.ts
416
+ /** Shared with the splinter download cache. */
417
+ const CACHE_DIR = "node_modules/.cache/better-supabase";
418
+ const sha256 = (text) => createHash("sha256").update(text).digest("hex");
419
+ function isEntry(value) {
420
+ return typeof value === "object" && value !== null && "key" in value && typeof value.key === "string" && "snapshot" in value && typeof value.snapshot === "object";
421
+ }
422
+ /**
423
+ * Calls `read`, or returns the snapshot cached under `root` when the catalog
424
+ * fingerprint, the `inputs` (schemas and hooks), the CLI version and the
425
+ * typegen version all match. One file per source keeps the cache from growing. A source that
426
+ * cannot report a fingerprint is read every time.
427
+ */
428
+ async function cachedIntrospect(root, source, inputs, read) {
429
+ const fingerprint = await catalogFingerprint(source.queryable).catch(() => void 0);
430
+ if (fingerprint === void 0) return read();
431
+ const key = sha256(JSON.stringify([
432
+ VERSION,
433
+ TYPEGEN_VERSION,
434
+ source.describe,
435
+ inputs,
436
+ fingerprint
437
+ ]));
438
+ const file = resolve(root, CACHE_DIR, `snapshot-${sha256(source.describe).slice(0, 16)}.json`);
439
+ const cached = await readFile(file, "utf8").then((text) => JSON.parse(text)).catch(() => void 0);
440
+ if (isEntry(cached) && cached.key === key) return cached.snapshot;
441
+ const snapshot = await read();
442
+ await writeAtomic(file, JSON.stringify({
443
+ key,
444
+ snapshot
445
+ })).catch(() => void 0);
446
+ return snapshot;
447
+ }
448
+ /**
449
+ * Calls `produce`, or returns the `database.types.ts` cached under `root`
450
+ * for the same `inputs`, CLI version and typegen version. Typegen and oxfmt
451
+ * are most of a `gen` run on a large schema, and their output only depends
452
+ * on the inputs.
453
+ */
454
+ async function cachedDatabaseTypes(root, inputs, produce) {
455
+ const key = sha256(JSON.stringify([
456
+ VERSION,
457
+ TYPEGEN_VERSION,
458
+ inputs
459
+ ]));
460
+ const file = resolve(root, CACHE_DIR, "database-types.json");
461
+ const cached = await readFile(file, "utf8").then((text) => JSON.parse(text)).catch(() => void 0);
462
+ if (typeof cached === "object" && cached !== null && "key" in cached && cached.key === key && "contents" in cached && typeof cached.contents === "string") return cached.contents;
463
+ const contents = await produce();
464
+ await writeAtomic(file, JSON.stringify({
465
+ key,
466
+ contents
467
+ })).catch(() => void 0);
468
+ return contents;
469
+ }
470
+ /** Writes through a temporary file, so a concurrent reader never sees half a file. */
471
+ async function writeAtomic(file, contents) {
472
+ await mkdir(dirname(file), { recursive: true });
473
+ const temporary = `${file}.${process.pid}-${crypto.randomUUID()}.tmp`;
474
+ try {
475
+ await writeFile(temporary, contents);
476
+ await rename(temporary, file);
477
+ } catch (cause) {
478
+ await rm(temporary, { force: true });
479
+ throw cause;
480
+ }
481
+ }
482
+ //#endregion
483
+ export { catalogFingerprint as a, writeAtomic as i, cachedDatabaseTypes as n, readExtras as o, cachedIntrospect as r, CACHE_DIR as t };
@@ -1,7 +1,7 @@
1
- import { r as defineCliCommand } from "./command-CK14fP91.js";
2
- import { i as writeIfChanged } from "./io-DI1mTdSA.js";
3
- import { i as plain, r as painter } from "./style-C0NFdJRL.js";
4
- import { t as fileDiff } from "./diff-SjkO5rNr.js";
1
+ import { r as defineCliCommand } from "./command-DV-StG1x.js";
2
+ import { a as writeIfChanged } from "./io-CFzJVJ68.js";
3
+ import { i as plain, r as painter } from "./style-CB3vxgh0.js";
4
+ import { t as fileDiff } from "./diff-D1jGdb3Y.js";
5
5
  import { extname, join, relative, resolve } from "node:path";
6
6
  import { readFile, readdir, stat } from "node:fs/promises";
7
7
  import { BLOCK_EVENT_RENAMES } from "better-supabase/events";
@@ -427,6 +427,11 @@ const GLOBAL_ARGS = {
427
427
  description: "Config file, relative to --cwd",
428
428
  valueHint: "file"
429
429
  },
430
+ env: {
431
+ type: "string",
432
+ description: "Config environment to apply ($env.<name> or $<name>). Defaults to $BETTER_SUPABASE_ENV, then ci when $CI is set",
433
+ valueHint: "name"
434
+ },
430
435
  json: {
431
436
  type: "boolean",
432
437
  description: "Print one JSON document on stdout; errors as Problem Details"
@@ -1,5 +1,5 @@
1
- import { r as defineCliCommand } from "./command-CK14fP91.js";
2
- import { t as display } from "./io-DI1mTdSA.js";
1
+ import { r as defineCliCommand } from "./command-DV-StG1x.js";
2
+ import { t as display } from "./io-CFzJVJ68.js";
3
3
  //#region src/cli/commands/config.ts
4
4
  /** A connection string with its password replaced, so the printed config is safe to share. */
5
5
  function redactUrl(url) {
@@ -29,17 +29,20 @@ function printableConfig(config) {
29
29
  const configCommand = defineCliCommand({
30
30
  meta: {
31
31
  name: "config",
32
- description: "Prints the resolved config: the file it came from and every option with its default"
32
+ description: "Prints the resolved config: the file it came from, the active environment and every option with its default"
33
33
  },
34
34
  args: {},
35
35
  run: (_args, context) => {
36
36
  const config = printableConfig(context.config);
37
37
  const file = context.configFile ? display(context.cwd, context.configFile) : null;
38
+ const environment = context.config.environment ?? null;
39
+ const header = file ? `# ${file}` : "# no config file, defaults only";
38
40
  return Promise.resolve({
39
41
  code: 0,
40
- output: `${file ? `# ${file}` : "# no config file, defaults only"}\n${JSON.stringify(config, null, 2)}`,
42
+ output: `${header}${environment ? ` (environment: ${environment})` : ""}\n${JSON.stringify(config, null, 2)}`,
41
43
  data: {
42
44
  file,
45
+ environment,
43
46
  config
44
47
  }
45
48
  });
@@ -0,0 +1,2 @@
1
+ import { a as importExport, c as stdinDatabaseUrl, i as findConfig, n as databaseUrl, o as loadConfig, r as discoverConfig, s as readSupabasePort, t as applyEnvironment } from "./config-M-WzL9O2.js";
2
+ export { applyEnvironment, databaseUrl, discoverConfig, findConfig, importExport, loadConfig, readSupabasePort, stdinDatabaseUrl };