better-supabase 0.7.1 → 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 (499) 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-iKgjHVPx.js → adapter-CN45ibbV.js} +658 -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-DJk0aeBi.js → doctor-VcDtuusV.js} +316 -221
  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-BHuEQrQK.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-DzR2nyQb.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-59gcepIG.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--yqry7uW.d.ts → composite-CWAJTRBF.d.ts} +6 -6
  216. package/dist/{composite-DXVUibdi.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-BmzgK32X.d.ts → framework-148t1m3C.d.ts} +5 -5
  265. package/dist/{framework-a7aRCIqv.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-Bh0EVSwU.d.ts → server-types-CrAmZ8jv.d.ts} +92 -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-ig_K4PvS.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-C6OfRAIn.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/dist/cli/config-B9HkL8nF.js +0 -2
  481. package/dist/cli/gen-CCMc39Dx.js +0 -3100
  482. package/dist/cli/gen-DRmzPI75.js +0 -2
  483. package/dist/cli/prompts-BTYQGunc.js +0 -2
  484. package/dist/cli/run-BqDPh9UH.js +0 -361
  485. package/dist/config-Dn7F5k9A.js +0 -202
  486. package/dist/history-BZih6SFP.js +0 -64
  487. package/dist/index-BkWT_uBO.d.ts +0 -51
  488. package/dist/index-Bxih3l0u.d.ts +0 -81
  489. package/dist/index-CaxrMD1A.d.ts +0 -1
  490. package/dist/index-DQh4VCc9.d.ts +0 -98
  491. package/dist/keys-4MnkWTTh.js +0 -35
  492. package/dist/messages-DYP0sUTe.d.ts +0 -59
  493. package/dist/modules-dxrVK3ID.js +0 -228
  494. package/dist/path-Cv__-OTj.d.ts +0 -17
  495. package/dist/resource-BsvzCMlX.js +0 -212
  496. package/dist/resource-IPS5xi9q.d.ts +0 -74
  497. package/dist/template-CwO38Do8.d.ts +0 -6
  498. package/dist/verify-DL41hbvY.js +0 -232
  499. package/dist/cli/{read-sets-CETOSFx4.js → read-sets-DjJrm8Wj.js} +1 -1
@@ -1,6 +1,8 @@
1
- import { r as defineCliCommand } from "./command-CK14fP91.js";
2
- import { i as writeIfChanged, t as display } from "./io-DI1mTdSA.js";
1
+ import { r as defineCliCommand } from "./command-DV-StG1x.js";
2
+ import { r as errorText } from "./errors-CqTLXe2M.js";
3
+ import { r as readIfExists, t as display } from "./io-CFzJVJ68.js";
3
4
  import { r as publicPrefix, t as detectProject } from "./project-DZRaBaY7.js";
5
+ import { r as writeLine } from "./files-BVupXPIC.js";
4
6
  import { basename, delimiter, dirname, normalize, resolve } from "node:path";
5
7
  import { closeSync, existsSync, openSync, readSync, statSync } from "node:fs";
6
8
  import { readFile } from "node:fs/promises";
@@ -374,7 +376,7 @@ async function exec(command, args, cwd) {
374
376
  return {
375
377
  code: 127,
376
378
  stdout: "",
377
- stderr: error instanceof Error ? error.message : String(error)
379
+ stderr: errorText(error)
378
380
  };
379
381
  }
380
382
  }
@@ -393,12 +395,12 @@ async function supabaseCli(args, cwd, env) {
393
395
  const ARGS = {
394
396
  out: {
395
397
  type: "string",
396
- description: "Env file to write. Defaults to .env.local",
398
+ description: "Env file to write. Defaults to env.output, then .env.local",
397
399
  valueHint: "file"
398
400
  },
399
401
  prefix: {
400
402
  type: "string",
401
- description: "Prefix for browser variables, detected from your framework; \"none\" for no prefix",
403
+ description: "Prefix for browser variables. Defaults to env.prefix, then one detected from your framework; \"none\" for no prefix",
402
404
  valueHint: "prefix"
403
405
  },
404
406
  from: {
@@ -459,7 +461,7 @@ function mergeEnv(current, values) {
459
461
  async function runEnv(config, args, env) {
460
462
  const status = await readStatus(config, args, env);
461
463
  const project = await detectProject(config.root);
462
- const prefixFlag = args.prefix;
464
+ const prefixFlag = args.prefix ?? config.env.prefix;
463
465
  const prefix = prefixFlag === void 0 ? publicPrefix(project) : prefixFlag === "none" ? "" : prefixFlag;
464
466
  const url = text(status, "API_URL");
465
467
  const publishableKey = text(status, "PUBLISHABLE_KEY", "ANON_KEY");
@@ -481,10 +483,11 @@ async function runEnv(config, args, env) {
481
483
  code: 0,
482
484
  output: Object.entries(values).map(([key, value]) => `${key}=${value}`).join("\n")
483
485
  };
484
- const out = args.out ?? ".env.local";
486
+ const out = args.out ?? config.env.output;
485
487
  const path = resolve(config.root, out);
486
- const current = existsSync(path) ? await readFile(path, "utf8") : "";
487
- const lines = [`${await writeIfChanged(path, mergeEnv(current, values)) ? "Wrote" : "Unchanged"} ${display(config.root, out)}: ${Object.keys(values).join(", ")}`];
488
+ const current = await readIfExists(path) ?? "";
489
+ const { line } = await writeLine(path, mergeEnv(current, values), display(config.root, out), `: ${Object.keys(values).join(", ")}`);
490
+ const lines = [line];
488
491
  if (!text(status, "PUBLISHABLE_KEY")) lines.push("Warning: this Supabase CLI prints only legacy JWT keys. Upgrade it to get sb_publishable_/sb_secret_ keys.");
489
492
  const gitignore = resolve(config.root, ".gitignore");
490
493
  if (!(existsSync(gitignore) && (await readFile(gitignore, "utf8")).split("\n").some((line) => [
@@ -508,4 +511,4 @@ const envCommand = defineCliCommand({
508
511
  run: (args, { config, env }) => runEnv(config, args, env)
509
512
  });
510
513
  //#endregion
511
- export { envCommand };
514
+ export { mergeEnv as n, runEnv as r, envCommand as t };
@@ -0,0 +1,2 @@
1
+ import { t as envCommand } from "./env-B--LMhEe.js";
2
+ export { envCommand };
@@ -1,4 +1,4 @@
1
- import { n as CliError } from "./errors-4v4DTtda.js";
1
+ import { n as CliError } from "./errors-CqTLXe2M.js";
2
2
  import { h as pipe, p as optional, w as url, x as string } from "./dist-DRAVaE6w.js";
3
3
  //#region ../../node_modules/.pnpm/@t3-oss+env-core@0.13.11_arktype@2.2.3_typescript@7.0.2_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/@t3-oss/env-core/dist/standard.js
4
4
  function ensureSynchronous(value, message) {
@@ -82,6 +82,12 @@ function createEnv(opts) {
82
82
  }
83
83
  //#endregion
84
84
  //#region src/cli/env.ts
85
+ /** `--env`, then `$BETTER_SUPABASE_ENV`, then `ci` when `$CI` is set to anything but false. */
86
+ function configEnvironment(flag, env) {
87
+ if (flag !== void 0 && flag !== "") return flag;
88
+ if (env.BETTER_SUPABASE_ENV !== void 0) return env.BETTER_SUPABASE_ENV;
89
+ return env.CI !== void 0 && env.CI !== "false" && env.CI !== "0" ? "ci" : void 0;
90
+ }
85
91
  const optionalString = optional(string());
86
92
  const optionalUrl = optional(pipe(string(), url("must be a URL, e.g. postgresql://user@host/db")));
87
93
  /** Parses the variables the CLI reads; an invalid value is a `env_invalid` usage error. */
@@ -89,11 +95,13 @@ function parseEnv(env) {
89
95
  return createEnv({
90
96
  server: {
91
97
  DATABASE_URL: optionalUrl,
98
+ SUPABASE_DB_URL: optionalUrl,
92
99
  SUPABASE_ACCESS_TOKEN: optionalString,
93
100
  SUPABASE_API_URL: optionalUrl,
94
101
  SUPABASE_BIN: optionalString,
95
102
  HOME: optionalString,
96
- CI: optionalString
103
+ CI: optionalString,
104
+ BETTER_SUPABASE_ENV: optionalString
97
105
  },
98
106
  runtimeEnv: env,
99
107
  isServer: true,
@@ -105,4 +113,4 @@ function parseEnv(env) {
105
113
  });
106
114
  }
107
115
  //#endregion
108
- export { parseEnv };
116
+ export { configEnvironment, parseEnv };
@@ -50,7 +50,23 @@ function isCittyUsageError(cause) {
50
50
  function toCliError(cause) {
51
51
  if (cause instanceof CliError) return cause;
52
52
  if (isCittyUsageError(cause)) return new CliError("usage", cause.message);
53
- return new CliError("internal", cause instanceof Error ? cause.message : String(cause), { cause });
53
+ return new CliError("internal", errorText(cause), { cause });
54
+ }
55
+ /** A thrown value as the message to print. */
56
+ const errorText = (cause) => cause instanceof Error ? cause.message : String(cause);
57
+ /** A step that threw, as a failed command result. */
58
+ const failedResult = (cause) => ({
59
+ code: 1,
60
+ error: errorText(cause)
61
+ });
62
+ /**
63
+ * The `values` that `isValid` accepts, or a usage message naming the ones
64
+ * it rejects and the `available` names.
65
+ */
66
+ function parseNames(values, isValid, noun, available) {
67
+ const unknown = values.filter((value) => !isValid(value));
68
+ if (unknown.length > 0) return `Unknown ${noun} ${unknown.map((value) => `"${value}"`).join(", ")}. Available: ${available.join(", ")}.`;
69
+ return values.filter(isValid);
54
70
  }
55
71
  //#endregion
56
- export { CliError as n, toCliError as r, CLI_ERRORS_URL as t };
72
+ export { parseNames as a, failedResult as i, CliError as n, toCliError as o, errorText as r, CLI_ERRORS_URL as t };
@@ -1,4 +1,4 @@
1
- import { t as __commonJSMin } from "./rolldown-runtime-BPOCksWG.js";
1
+ import { t as __commonJSMin } from "./rolldown-runtime-CMFfr-1z.js";
2
2
  //#region ../../node_modules/.pnpm/fastest-levenshtein@1.0.16/node_modules/fastest-levenshtein/mod.js
3
3
  var require_fastest_levenshtein = /* @__PURE__ */ __commonJSMin(((exports) => {
4
4
  exports.__esModule = true;
@@ -0,0 +1,34 @@
1
+ import { a as writeIfChanged, i as sameText, r as readIfExists, t as display } from "./io-CFzJVJ68.js";
2
+ import { resolve } from "node:path";
3
+ //#region src/cli/files.ts
4
+ /** Reads `out` under `root` and compares it with `contents`, ignoring line endings. */
5
+ async function fileState(root, out, contents) {
6
+ const path = resolve(root, out);
7
+ const current = await readIfExists(path);
8
+ return {
9
+ file: display(root, out),
10
+ path,
11
+ current,
12
+ upToDate: sameText(current, contents)
13
+ };
14
+ }
15
+ /** The result of `--check` for one file: up to date, or failed with the command that rewrites it. */
16
+ function staleResult(state, regenerate) {
17
+ return state.upToDate ? {
18
+ code: 0,
19
+ output: `${state.file} is up to date.`
20
+ } : {
21
+ code: 1,
22
+ error: `${state.file} is out of date. Run \`${regenerate}\`.`
23
+ };
24
+ }
25
+ /** Writes `contents` when it changed and returns the `Wrote` or `Unchanged` line for `shown`. */
26
+ async function writeLine(path, contents, shown, suffix = "") {
27
+ const wrote = await writeIfChanged(path, contents);
28
+ return {
29
+ wrote,
30
+ line: `${wrote ? "Wrote" : "Unchanged"} ${shown}${suffix}`
31
+ };
32
+ }
33
+ //#endregion
34
+ export { staleResult as n, writeLine as r, fileState as t };
@@ -0,0 +1,322 @@
1
+ import { a as list, r as defineCliCommand } from "./command-DV-StG1x.js";
2
+ import { a as parseNames, i as failedResult, r as errorText } from "./errors-CqTLXe2M.js";
3
+ import { i as plain, r as painter } from "./style-CB3vxgh0.js";
4
+ import { a as catalogFingerprint } from "./cache-CIfA-jBV.js";
5
+ import { n as runGen } from "./run-DuN1MX-7.js";
6
+ import { r as isGenTask, t as GEN_TASKS } from "./names-D6LrQnOv.js";
7
+ import { o as snapshotFile, r as openSource, t as loadSnapshot } from "./snapshot-Bstk6ulj.js";
8
+ import { r as runMetadataGen, t as EMITS } from "./metadata-DSRKCaf-.js";
9
+ import { n as withSpinner } from "./prompts-DZJB1nTw.js";
10
+ import { r as runEnv } from "./env-B--LMhEe.js";
11
+ import { a as modifiedTime, c as sleep, l as stampFiles, o as onceReporter, r as specOptionsFromConfig, s as parseInterval, t as runSpec } from "./spec-CzosTYm3.js";
12
+ import { t as runScaffold } from "./scaffold-5DenHSxF.js";
13
+ import { t as runSeed } from "./seed-CzBmrGON.js";
14
+ import { t as runSql } from "./sql-BKOOQAX3.js";
15
+ import { n as sourceArgs, t as SOURCE_ARGS } from "./source-args-BYfq6imV.js";
16
+ import { resolve } from "node:path";
17
+ import { existsSync } from "node:fs";
18
+ //#region src/cli/commands/gen-pipeline.ts
19
+ /** Tasks run in this order whatever order the config lists them in. */
20
+ const ORDER = new Map(GEN_TASKS.map((task, index) => [task, index]));
21
+ /** Checks `--tasks` names. Returns an error message for an unknown one. */
22
+ function parseTasks(names) {
23
+ return parseNames(names, isGenTask, "gen task", GEN_TASKS);
24
+ }
25
+ /**
26
+ * The tasks `gen` runs, in pipeline order: `--tasks`, then `gen.tasks`, then
27
+ * every task the config sets up.
28
+ */
29
+ function selectTasks(config, requested) {
30
+ const named = requested ?? config.gen.tasks;
31
+ if (named === void 0) return configuredTasks(config);
32
+ return [...new Set(named)].toSorted((a, b) => (ORDER.get(a) ?? 0) - (ORDER.get(b) ?? 0));
33
+ }
34
+ /** Every task the config sets up. `env` runs only when a task list names it. */
35
+ function configuredTasks(config) {
36
+ const exists = (path) => existsSync(resolve(config.root, path));
37
+ const configured = {
38
+ types: () => true,
39
+ sql: () => config.sql.moduleNames.length > 0 || config.realtime.policies !== void 0,
40
+ spec: () => exists(config.specs.entry),
41
+ seed: () => exists(config.seed.entry),
42
+ scaffold: () => config.scaffold.api !== void 0,
43
+ env: () => false
44
+ };
45
+ return GEN_TASKS.filter((task) => configured[task]());
46
+ }
47
+ /** Files the steps after `types` read, so `gen --watch` reruns them when one changes. */
48
+ function stepInputs(config, tasks) {
49
+ const at = (path) => resolve(config.root, path);
50
+ const inputs = {
51
+ types: () => [],
52
+ sql: () => [],
53
+ spec: () => [at(config.specs.entry), ...config.specs.outputs.flatMap((output) => (output.overlays ?? []).map(at))],
54
+ seed: () => [at(config.seed.entry)],
55
+ scaffold: () => [],
56
+ env: () => []
57
+ };
58
+ return tasks.flatMap((task) => inputs[task]());
59
+ }
60
+ const STEPS = {
61
+ sql: ({ config, check, paint }) => runSql(config, {
62
+ _: ["sync"],
63
+ check
64
+ }, paint),
65
+ spec: ({ config, check }) => runSpec(specOptionsFromConfig(config, check ? "check" : "emit")),
66
+ seed: ({ config, check, env }) => runSeed(config, { check }, env),
67
+ scaffold: ({ config, check }) => runScaffold(config, { _: ["api"] }, {
68
+ generatedOnly: true,
69
+ check
70
+ }),
71
+ env: async ({ config, check, env }) => check ? {
72
+ code: 0,
73
+ output: "Skipped: env writes local keys, so --check leaves it out."
74
+ } : runEnv(config, {}, env)
75
+ };
76
+ /**
77
+ * Runs the steps after `types`, in order. A write run stops at the first
78
+ * failure, since later steps read what earlier ones wrote; `--check` runs
79
+ * every step so it reports everything that is out of date.
80
+ */
81
+ async function runSteps(tasks, options, previous = []) {
82
+ const results = [...previous];
83
+ for (const task of tasks) {
84
+ if (task === "types") continue;
85
+ if (!options.check && results.some(({ result }) => result.code !== 0)) break;
86
+ const result = await STEPS[task](options).catch(failedResult);
87
+ results.push({
88
+ task,
89
+ result
90
+ });
91
+ }
92
+ return results;
93
+ }
94
+ const indent = (text) => text.split("\n").map((line) => line === "" ? line : ` ${line}`).join("\n");
95
+ /**
96
+ * One result for the run. A single task returns its own result unchanged;
97
+ * several tasks get a section each, the first failing exit code and every
98
+ * error.
99
+ */
100
+ function combineResults(results) {
101
+ const [only] = results;
102
+ if (results.length === 1 && only) return only.result;
103
+ const output = results.flatMap(({ task, result }) => result.output ? [`[${task}]\n${indent(result.output)}`] : [`[${task}] done`]).join("\n");
104
+ const errors = results.flatMap(({ task, result }) => result.error ? [`[${task}] ${result.error}`] : []);
105
+ return {
106
+ code: results.find(({ result }) => result.code !== 0)?.result.code ?? 0,
107
+ output,
108
+ ...errors.length > 0 ? { error: errors.join("\n") } : {},
109
+ data: { tasks: Object.fromEntries(results.map(({ task, result }) => [task, {
110
+ code: result.code,
111
+ ...result.data === void 0 ? {} : { data: result.data }
112
+ }])) }
113
+ };
114
+ }
115
+ //#endregion
116
+ //#region src/cli/commands/gen.ts
117
+ const ARGS = {
118
+ metadata: {
119
+ type: "string",
120
+ description: "Read a GeneratorMetadata document (- for stdin) and print one file on stdout",
121
+ valueHint: "path|-"
122
+ },
123
+ emit: {
124
+ type: "string",
125
+ description: `With --metadata, the file to print: ${EMITS.join(", ")}. Defaults to schema`,
126
+ valueHint: "file"
127
+ },
128
+ out: {
129
+ type: "string",
130
+ description: "With --metadata, write every generated file into this directory instead of printing one",
131
+ valueHint: "dir"
132
+ },
133
+ tasks: {
134
+ type: "string",
135
+ description: `Tasks to run: ${GEN_TASKS.join(", ")}. Defaults to gen.tasks, or every task the config sets up`,
136
+ valueHint: "list"
137
+ },
138
+ check: {
139
+ type: "boolean",
140
+ description: "Fail when a generated file is out of date"
141
+ },
142
+ watch: {
143
+ type: "boolean",
144
+ description: "Run again whenever the schema, the config file or a task's input changes"
145
+ },
146
+ interval: {
147
+ type: "string",
148
+ description: "Milliseconds between checks in --watch. Defaults to gen.watchInterval, then 2000",
149
+ valueHint: "ms"
150
+ },
151
+ ...SOURCE_ARGS
152
+ };
153
+ /**
154
+ * Reads the schema when it may have changed. Returns the new change marker (the
155
+ * catalog fingerprint, or the snapshot itself when the source has none) and
156
+ * the snapshot, or no snapshot when the fingerprint still matches `last`.
157
+ */
158
+ async function poll(options, db, last) {
159
+ const fingerprint = db ? await catalogFingerprint(db.queryable).catch(() => void 0) : void 0;
160
+ if (fingerprint !== void 0 && fingerprint === last) return { marker: last };
161
+ const snapshot = await loadSnapshot(options.config, options.env, options, void 0, db ? () => Promise.resolve(db) : void 0);
162
+ const marker = fingerprint ?? JSON.stringify(snapshot);
163
+ return marker === last ? { marker } : {
164
+ marker,
165
+ snapshot
166
+ };
167
+ }
168
+ /**
169
+ * Runs `tasks`: `types` through `runGen`, then the steps after it. Without
170
+ * `types` in the list, `snapshot` is unused.
171
+ */
172
+ async function runTasks(tasks, options) {
173
+ const types = tasks.includes("types") ? [{
174
+ task: "types",
175
+ result: await runGen(options).catch(failedResult)
176
+ }] : [];
177
+ return combineResults(await runSteps(tasks, {
178
+ config: options.config,
179
+ env: options.env,
180
+ check: options.check,
181
+ paint: options.paint ?? plain
182
+ }, types));
183
+ }
184
+ /**
185
+ * Runs the tasks again whenever the schema, the config file or a task's
186
+ * input (the spec entry and its overlays, the seed entry) changes. A
187
+ * database source keeps one connection open and polls the catalog
188
+ * fingerprint, so an unchanged schema costs one small query per interval; a
189
+ * source without a fingerprint is introspected each time and compared. The
190
+ * schema is read only when `types` runs. A changed config file is loaded
191
+ * again and forces a run; a changed input reruns the steps after `types`. A
192
+ * failed run is retried every interval until it succeeds, and the same
193
+ * error is printed once.
194
+ */
195
+ async function watch(initial, requested, interval, { io, signal, configFile, reloadConfig }) {
196
+ let options = initial;
197
+ let last = "";
198
+ let inputs = "";
199
+ const fresh = onceReporter();
200
+ let stamp = await modifiedTime(configFile);
201
+ let db;
202
+ const aborted = () => signal?.aborted ?? false;
203
+ const report = (message) => {
204
+ if (fresh(message)) io.stderr(`${message}\n`);
205
+ };
206
+ const closeDb = async () => {
207
+ await db?.close().catch(() => void 0);
208
+ db = void 0;
209
+ };
210
+ try {
211
+ while (!aborted()) {
212
+ const changed = await modifiedTime(configFile);
213
+ if (reloadConfig && changed !== stamp) try {
214
+ options = {
215
+ ...options,
216
+ config: await reloadConfig()
217
+ };
218
+ stamp = changed;
219
+ last = "";
220
+ inputs = "";
221
+ await closeDb();
222
+ } catch (cause) {
223
+ report(errorText(cause));
224
+ await sleep(interval, signal);
225
+ continue;
226
+ }
227
+ const tasks = selectTasks(options.config, requested);
228
+ const current = await stampFiles(stepInputs(options.config, tasks));
229
+ let polled;
230
+ if (tasks.includes("types")) try {
231
+ db ??= snapshotFile(options.config, options) === void 0 ? await openSource(options.config, options.env, options) : void 0;
232
+ polled = await poll(options, db, last);
233
+ } catch (cause) {
234
+ report(errorText(cause));
235
+ await closeDb();
236
+ await sleep(interval, signal);
237
+ continue;
238
+ }
239
+ const run = polled?.snapshot ? tasks : current === inputs ? void 0 : tasks.filter((task) => task !== "types");
240
+ const result = run && run.length > 0 ? await runTasks(run, {
241
+ ...options,
242
+ ...polled?.snapshot ? { snapshot: polled.snapshot } : {}
243
+ }) : void 0;
244
+ if (result && result.code !== 0) report(result.error ?? `gen exited with code ${result.code}`);
245
+ else {
246
+ if (result?.output) io.stdout(`${result.output}\n`);
247
+ if (polled) last = polled.marker;
248
+ inputs = current;
249
+ fresh("");
250
+ }
251
+ await sleep(interval, signal);
252
+ }
253
+ } finally {
254
+ await closeDb();
255
+ }
256
+ return { code: 0 };
257
+ }
258
+ const genCommand = defineCliCommand({
259
+ meta: {
260
+ name: "gen",
261
+ description: "Writes the typed client from the database, then every other generated file the config sets up"
262
+ },
263
+ args: ARGS,
264
+ lists: ["tasks"],
265
+ run: async (args, context) => {
266
+ if (args.metadata !== void 0) {
267
+ const conflicting = [
268
+ ...args.watch === true ? ["--watch"] : [],
269
+ ...args.snapshot === void 0 ? [] : ["--snapshot"],
270
+ ...args["db-url-stdin"] === true ? ["--db-url-stdin"] : [],
271
+ ...args["project-ref"] === void 0 ? [] : ["--project-ref"]
272
+ ];
273
+ if (conflicting.length > 0) return {
274
+ code: 2,
275
+ error: `--metadata reads the schema from the document, so it can't be combined with ${conflicting.join(", ")}`
276
+ };
277
+ return runMetadataGen({
278
+ config: context.config,
279
+ env: context.env,
280
+ cwd: context.cwd,
281
+ io: context.io,
282
+ metadata: args.metadata,
283
+ check: args.check === true,
284
+ json: context.json,
285
+ paint: painter(context.io.color),
286
+ ...args.emit === void 0 ? {} : { emit: args.emit },
287
+ ...args.out === void 0 ? {} : { out: args.out }
288
+ });
289
+ }
290
+ if (args.emit !== void 0 || args.out !== void 0) return {
291
+ code: 2,
292
+ error: `${args.emit === void 0 ? "--out" : "--emit"} only applies with --metadata`
293
+ };
294
+ const requested = args.tasks === void 0 ? void 0 : parseTasks(list(args.tasks));
295
+ if (typeof requested === "string") return {
296
+ code: 2,
297
+ error: requested
298
+ };
299
+ const tasks = selectTasks(context.config, requested);
300
+ if (tasks.length === 0) return {
301
+ code: 2,
302
+ error: "--tasks names no task."
303
+ };
304
+ const options = {
305
+ config: context.config,
306
+ env: context.env,
307
+ check: args.check === true,
308
+ paint: painter(context.io.color),
309
+ ...await sourceArgs(args, context.io),
310
+ ...context.signal ? { signal: context.signal } : {},
311
+ cache: true
312
+ };
313
+ const interval = parseInterval(args.interval, context.config.gen.watchInterval);
314
+ if (typeof interval === "string") return {
315
+ code: 2,
316
+ error: interval
317
+ };
318
+ return args.watch === true ? watch(options, requested, interval, context) : withSpinner(context.io.prompts, "Generating from the schema", () => runTasks(tasks, options));
319
+ }
320
+ });
321
+ //#endregion
322
+ export { genCommand };