better-supabase 0.5.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (536) hide show
  1. package/README.md +187 -46
  2. package/dist/access-sql-B0dF-SoF.js +181 -0
  3. package/dist/{actor-DaJjqD5R.d.ts → actor-CQTlc1Hh.d.ts} +1 -1
  4. package/dist/adapter-Bc1o3zyy.js +1106 -0
  5. package/dist/agents-CVHGd7It.d.ts +94 -0
  6. package/dist/ai-cache-CBWs1W0k.js +80 -0
  7. package/dist/ai-cache-DaDu_G5L.d.ts +64 -0
  8. package/dist/ai-chat-7amvXjmQ.d.ts +590 -0
  9. package/dist/ai-chat-B24UI962.js +743 -0
  10. package/dist/ai-files-CSPNswUY.js +319 -0
  11. package/dist/ai-sdk/agents/index.d.ts +74 -0
  12. package/dist/ai-sdk/agents/index.js +159 -0
  13. package/dist/ai-sdk/batches/index.d.ts +74 -0
  14. package/dist/ai-sdk/batches/index.js +180 -0
  15. package/dist/ai-sdk/cache/index.d.ts +38 -0
  16. package/dist/ai-sdk/cache/index.js +127 -0
  17. package/dist/ai-sdk/chat/index.d.ts +2 -0
  18. package/dist/ai-sdk/chat/index.js +246 -0
  19. package/dist/ai-sdk/embeddings/index.d.ts +3 -0
  20. package/dist/ai-sdk/embeddings/index.js +2 -0
  21. package/dist/ai-sdk/files/index.d.ts +61 -0
  22. package/dist/ai-sdk/files/index.js +111 -0
  23. package/dist/ai-sdk/index.d.ts +145 -0
  24. package/dist/ai-sdk/index.js +174 -0
  25. package/dist/ai-sdk/mcp/index.d.ts +102 -0
  26. package/dist/ai-sdk/mcp/index.js +362 -0
  27. package/dist/ai-sdk/memory/index.d.ts +67 -0
  28. package/dist/ai-sdk/memory/index.js +175 -0
  29. package/dist/ai-sdk/react/index.d.ts +2 -0
  30. package/dist/ai-sdk/react/index.js +3 -0
  31. package/dist/ai-sdk/react/server.d.ts +6 -0
  32. package/dist/ai-sdk/react/server.js +7 -0
  33. package/dist/ai-sdk/workflow/index.d.ts +249 -0
  34. package/dist/ai-sdk/workflow/index.js +575 -0
  35. package/dist/ai-sdk/workflow/react/index.d.ts +20 -0
  36. package/dist/ai-sdk/workflow/react/index.js +66 -0
  37. package/dist/ai-sdk/workflow/react/server.d.ts +10 -0
  38. package/dist/ai-sdk/workflow/react/server.js +12 -0
  39. package/dist/ai-tasks-Cd1HMFvB.d.ts +131 -0
  40. package/dist/announcements-CiyOs-xP.js +107 -0
  41. package/dist/announcements-ZRGnScWI.d.ts +72 -0
  42. package/dist/api-keys-rCGtKaZA.d.ts +156 -0
  43. package/dist/assistant-DwdpDH1q.d.ts +147 -0
  44. package/dist/astro/index.d.ts +86 -0
  45. package/dist/astro/index.js +93 -0
  46. package/dist/attributes-5dYul0u0.js +13 -0
  47. package/dist/auth-link-BjFPqwLz.d.ts +97 -0
  48. package/dist/auth-link-DrDX9KOT.js +114 -0
  49. package/dist/authorization-BFCqamMs.d.ts +172 -0
  50. package/dist/before-route-CnR0C0Jr.js +30 -0
  51. package/dist/bind-Bu_ZNa3W.d.ts +62 -0
  52. package/dist/bind-l4kAvYSv.js +97 -0
  53. package/dist/block-events-CrT8r7Fe.js +76 -0
  54. package/dist/block-fields-GFkxl4dP.js +49 -0
  55. package/dist/block-fields-SJ6fEf3o.d.ts +31 -0
  56. package/dist/block-helpers-CKtbFcRv.d.ts +37 -0
  57. package/dist/block-helpers-DWHxHsEQ.js +190 -0
  58. package/dist/block-hooks-BmjMyXTa.js +114 -0
  59. package/dist/block-hooks-plbZ0AbJ.d.ts +107 -0
  60. package/dist/{kit-transport-DJlHQUBU.js → block-transport-BLr-ZgLc.js} +11 -7
  61. package/dist/block-transport-DvaoPuZ9.d.ts +48 -0
  62. package/dist/blocks/agents/index.d.ts +3 -0
  63. package/dist/blocks/agents/index.js +123 -0
  64. package/dist/blocks/ai-cache/index.d.ts +3 -0
  65. package/dist/blocks/ai-cache/index.js +3 -0
  66. package/dist/blocks/ai-chat/index.d.ts +31 -0
  67. package/dist/blocks/ai-chat/index.js +5 -0
  68. package/dist/blocks/ai-chat/react/index.d.ts +77 -0
  69. package/dist/blocks/ai-chat/react/index.js +387 -0
  70. package/dist/blocks/ai-chat/react/server.d.ts +16 -0
  71. package/dist/blocks/ai-chat/react/server.js +14 -0
  72. package/dist/blocks/ai-files/index.d.ts +14 -0
  73. package/dist/blocks/ai-files/index.js +3 -0
  74. package/dist/blocks/ai-providers/index.d.ts +7 -0
  75. package/dist/blocks/ai-providers/index.js +211 -0
  76. package/dist/blocks/ai-tasks/index.d.ts +3 -0
  77. package/dist/blocks/ai-tasks/index.js +203 -0
  78. package/dist/blocks/announcements/index.d.ts +3 -0
  79. package/dist/blocks/announcements/index.js +3 -0
  80. package/dist/blocks/announcements/react/index.d.ts +31 -0
  81. package/dist/blocks/announcements/react/index.js +86 -0
  82. package/dist/blocks/announcements/react/server.d.ts +6 -0
  83. package/dist/blocks/announcements/react/server.js +7 -0
  84. package/dist/blocks/api-keys/index.d.ts +35 -0
  85. package/dist/blocks/api-keys/index.js +334 -0
  86. package/dist/blocks/attachments/index.d.ts +210 -0
  87. package/dist/blocks/attachments/index.js +222 -0
  88. package/dist/blocks/audit/index.d.ts +366 -0
  89. package/dist/blocks/audit/index.js +714 -0
  90. package/dist/blocks/billing/index.d.ts +265 -0
  91. package/dist/blocks/billing/index.js +400 -0
  92. package/dist/blocks/comments/index.d.ts +200 -0
  93. package/dist/blocks/comments/index.js +207 -0
  94. package/dist/blocks/connectors/index.d.ts +3 -0
  95. package/dist/blocks/connectors/index.js +164 -0
  96. package/dist/blocks/data-lifecycle/index.d.ts +251 -0
  97. package/dist/blocks/data-lifecycle/index.js +353 -0
  98. package/dist/blocks/entitlements/index.d.ts +14 -0
  99. package/dist/blocks/entitlements/index.js +25 -0
  100. package/dist/blocks/flags/index.d.ts +226 -0
  101. package/dist/blocks/flags/index.js +282 -0
  102. package/dist/blocks/inbox/index.d.ts +6 -0
  103. package/dist/blocks/inbox/index.js +499 -0
  104. package/dist/blocks/inbox/react/index.d.ts +2 -0
  105. package/dist/blocks/inbox/react/index.js +225 -0
  106. package/dist/blocks/inbox/react/server.d.ts +10 -0
  107. package/dist/blocks/inbox/react/server.js +12 -0
  108. package/dist/blocks/index.d.ts +65 -0
  109. package/dist/blocks/index.js +77 -0
  110. package/dist/blocks/jobs/index.d.ts +297 -0
  111. package/dist/blocks/jobs/index.js +1051 -0
  112. package/dist/blocks/knowledge/index.d.ts +3 -0
  113. package/dist/blocks/knowledge/index.js +3 -0
  114. package/dist/blocks/memory/index.d.ts +8 -0
  115. package/dist/blocks/memory/index.js +289 -0
  116. package/dist/blocks/notifications/index.d.ts +297 -0
  117. package/dist/blocks/notifications/index.js +425 -0
  118. package/dist/blocks/notifications/react/index.d.ts +44 -0
  119. package/dist/blocks/notifications/react/index.js +67 -0
  120. package/dist/blocks/notifications/react/server.d.ts +6 -0
  121. package/dist/blocks/notifications/react/server.js +7 -0
  122. package/dist/blocks/onboarding/index.d.ts +3 -0
  123. package/dist/blocks/onboarding/index.js +64 -0
  124. package/dist/blocks/onboarding/react/index.d.ts +28 -0
  125. package/dist/blocks/onboarding/react/index.js +78 -0
  126. package/dist/blocks/onboarding/react/server.d.ts +7 -0
  127. package/dist/blocks/onboarding/react/server.js +7 -0
  128. package/dist/blocks/organizations/index.d.ts +241 -0
  129. package/dist/blocks/organizations/index.js +400 -0
  130. package/dist/blocks/outbox/index.d.ts +3 -0
  131. package/dist/blocks/outbox/index.js +266 -0
  132. package/dist/blocks/profiles/index.d.ts +40 -0
  133. package/dist/blocks/profiles/index.js +28 -0
  134. package/dist/blocks/push/index.d.ts +185 -0
  135. package/dist/blocks/push/index.js +258 -0
  136. package/dist/blocks/settings/index.d.ts +89 -0
  137. package/dist/blocks/settings/index.js +104 -0
  138. package/dist/blocks/sso/index.d.ts +198 -0
  139. package/dist/blocks/sso/index.js +1297 -0
  140. package/dist/blocks/usage/index.d.ts +4 -0
  141. package/dist/blocks/usage/index.js +233 -0
  142. package/dist/blocks/waitlist/index.d.ts +117 -0
  143. package/dist/blocks/waitlist/index.js +132 -0
  144. package/dist/blocks/webhooks/index.d.ts +304 -0
  145. package/dist/{webhooks → blocks/webhooks}/index.js +468 -148
  146. package/dist/blocks/workflow-builder/index.d.ts +21 -0
  147. package/dist/blocks/workflow-builder/index.js +5 -0
  148. package/dist/blocks/workflow-builder/react/index.d.ts +47 -0
  149. package/dist/blocks/workflow-builder/react/index.js +119 -0
  150. package/dist/blocks/workflow-builder/react/server.d.ts +8 -0
  151. package/dist/blocks/workflow-builder/react/server.js +11 -0
  152. package/dist/blocks/workflows/index.d.ts +3 -0
  153. package/dist/blocks/workflows/index.js +3 -0
  154. package/dist/blocks/workflows/react/index.d.ts +47 -0
  155. package/dist/blocks/workflows/react/index.js +137 -0
  156. package/dist/blocks/workflows/react/server.d.ts +8 -0
  157. package/dist/blocks/workflows/react/server.js +11 -0
  158. package/dist/{index-SaTsEfGP.d.ts → bucket-Cl46E3jS.d.ts} +134 -91
  159. package/dist/{simplify-_0oUKqCd.js → build-BXIzE6Xv.js} +222 -124
  160. package/dist/{channel-FQW-CnGR.d.ts → channel-_2Mx1Oyu.d.ts} +2 -2
  161. package/dist/channels-CkgQ_X60.js +114 -0
  162. package/dist/chat-sdk/index.d.ts +303 -0
  163. package/dist/chat-sdk/index.js +733 -0
  164. package/dist/chat-sdk/react/index.d.ts +2 -0
  165. package/dist/chat-sdk/react/index.js +3 -0
  166. package/dist/chat-sdk/react/server.d.ts +3 -0
  167. package/dist/chat-sdk/react/server.js +2 -0
  168. package/dist/claims-DDBQT6BK.js +61 -0
  169. package/dist/{claims-BAf6c7is.js → claims-PqzCxaTD.js} +39 -2
  170. package/dist/cli/bin.js +1 -1
  171. package/dist/cli/{codemod-DqV7612m.js → codemod-Bl_tQpHn.js} +105 -2
  172. package/dist/cli/config-B9HkL8nF.js +2 -0
  173. package/dist/cli/config-DU7EJImt.js +49 -0
  174. package/dist/cli/config-NiPxAmUF.js +1077 -0
  175. package/dist/cli/{dist-xn4wlboc.js → dist-DRAVaE6w.js} +111 -1
  176. package/dist/cli/{doctor-C_A-KEAz.js → doctor-B4JOm_ox.js} +991 -317
  177. package/dist/cli/{env-DmKv_G4A.js → env-CJLbUVPB.js} +1 -1
  178. package/dist/cli/{env-jIFUADLY.js → env-qXgyMV6r.js} +2 -2
  179. package/dist/cli/fresh-import-BeYf9I3x.js +40 -0
  180. package/dist/cli/gen-BGLb_zou.js +3100 -0
  181. package/dist/cli/gen-DAH8FM2W.js +2 -0
  182. package/dist/cli/index.d.ts +44 -5
  183. package/dist/cli/index.js +7 -7
  184. package/dist/cli/{init-DMa6M7hV.js → init-BIIwclPg.js} +242 -27
  185. package/dist/cli/{introspect-BKlaIu_M.js → introspect-DNUTuNvb.js} +5 -5
  186. package/dist/cli/{io-k41_z-jT.js → io-DI1mTdSA.js} +12 -3
  187. package/dist/cli/{keys-ByKHnvP9.js → keys-BGCnnb-s.js} +8 -6
  188. package/dist/cli/{ohash-D7bG_EOb.js → ohash-BjQY1cBb.js} +1 -1
  189. package/dist/cli/{openapi-Cp5Fyta-.js → openapi-BlRJ18s3.js} +2 -2
  190. package/dist/cli/{project-B_GeXyHh.js → project-DZRaBaY7.js} +11 -6
  191. package/dist/cli/read-sets-CETOSFx4.js +223 -0
  192. package/dist/cli/{run-Bo_NLT5n.js → run-DNWxHynX.js} +33 -23
  193. package/dist/cli/{seed-CUlqWh-8.js → seed-DQzqT7LP.js} +8 -6
  194. package/dist/cli/{skills-LJJIhLFR.js → skills-QQs4q68J.js} +3 -2
  195. package/dist/cli/sql-D0GUtUPp.js +536 -0
  196. package/dist/cli/{config-CPVpXP5I.js → supabase-toml-B-bIukQF.js} +72 -942
  197. package/dist/cli/typegen-version-DeFbtzYI.js +8 -0
  198. package/dist/cli/{version-BCtlgDQx.js → version-hr88OZG0.js} +1 -1
  199. package/dist/client/index.d.ts +3 -2
  200. package/dist/client/index.js +11 -71
  201. package/dist/client/native/index.d.ts +228 -0
  202. package/dist/client/native/index.js +361 -0
  203. package/dist/client-CI0Z2zWX.js +277 -0
  204. package/dist/cloud-event-BnmD5fb9.js +46 -0
  205. package/dist/cloud-event-C1JCc1bH.d.ts +50 -0
  206. package/dist/{compiler-BXH_aZ7N.d.ts → compiler-DY_wkj4R.d.ts} +2 -2
  207. package/dist/compose-BIBNgAnq.js +53 -0
  208. package/dist/composite-Bt1YK3Ke.d.ts +146 -0
  209. package/dist/composite-DhE66P5u.js +130 -0
  210. package/dist/config/index.d.ts +6 -4
  211. package/dist/config/index.js +5 -5
  212. package/dist/{config-Bv7gvfzC.d.ts → config-D44Y7PAv.d.ts} +406 -214
  213. package/dist/{config-DreERlKo.js → config-Dn7F5k9A.js} +62 -14
  214. package/dist/connector-Dv8kK0MO.d.ts +107 -0
  215. package/dist/connectors-hkLCwyEz.d.ts +120 -0
  216. package/dist/context-BCrWe7ow.d.ts +237 -0
  217. package/dist/credentials/index.d.ts +31 -0
  218. package/dist/credentials/index.js +168 -0
  219. package/dist/cron-DVPUg5k3.js +145 -0
  220. package/dist/csv-CPAzEmB6.js +25 -0
  221. package/dist/db-exception-CnWcYPxL.js +15 -0
  222. package/dist/{define-cNKzqwL_.js → define-B-TVjC25.js} +784 -227
  223. package/dist/{define-Bp_BZa5h.d.ts → define-CJJkkr1-.d.ts} +353 -61
  224. package/dist/edge/index.d.ts +69 -11
  225. package/dist/edge/index.js +191 -75
  226. package/dist/elysia/index.d.ts +59 -0
  227. package/dist/elysia/index.js +62 -0
  228. package/dist/embeddings-4ZvFzjsU.js +127 -0
  229. package/dist/embeddings-C9KGQnXt.d.ts +68 -0
  230. package/dist/{refresh-CFPX0Qft.d.ts → ended-jLfvw8h-.d.ts} +20 -2
  231. package/dist/{entitlements-BiJZ4t49.d.ts → entitlements-DHrY2UDZ.d.ts} +16 -7
  232. package/dist/entitlements-DRl6ZJUm.js +24 -0
  233. package/dist/envelope-DqnYGRw7.js +47 -0
  234. package/dist/{errors-DtwXa6b8.js → errors-B11Duf73.js} +82 -13
  235. package/dist/errors-DLjJHPLK.js +44 -0
  236. package/dist/escape-like-DHfx6jRr.js +7 -0
  237. package/dist/escape-like-ImTK0ps_.d.ts +15 -0
  238. package/dist/eve/index.d.ts +220 -0
  239. package/dist/eve/index.js +504 -0
  240. package/dist/eve-gT2Fpjut.d.ts +151 -0
  241. package/dist/events/index.d.ts +4 -3
  242. package/dist/events/index.js +9 -50
  243. package/dist/events-DWDhx77e.d.ts +549 -0
  244. package/dist/executor-Bq28caBo.js +718 -0
  245. package/dist/executor-C-R4pucm.js +83 -0
  246. package/dist/executor-CaWigTyR.d.ts +148 -0
  247. package/dist/executor-D14tGopJ.d.ts +36 -0
  248. package/dist/{executor-Cghdstwu.d.ts → executor-DbvExCFC.d.ts} +7 -1
  249. package/dist/{sql-Coh6n4cC.js → executor-De1Of3m3.js} +210 -11
  250. package/dist/executor-DvsBbNBS.d.ts +261 -0
  251. package/dist/expo/index.d.ts +79 -0
  252. package/dist/expo/index.js +129 -0
  253. package/dist/expo-sqlite/index.d.ts +58 -0
  254. package/dist/expo-sqlite/index.js +104 -0
  255. package/dist/field-errors-BFOa7WhB.d.ts +99 -0
  256. package/dist/field-errors-VF1yb8yI.js +13 -0
  257. package/dist/framework-CONDyPYx.js +51 -0
  258. package/dist/framework-DuVb4Xa8.d.ts +25 -0
  259. package/dist/gateway-C1ssRHnf.d.ts +130 -0
  260. package/dist/graph-BGyLLFLX.js +265 -0
  261. package/dist/h3/index.d.ts +59 -0
  262. package/dist/h3/index.js +55 -0
  263. package/dist/h3/v1/index.d.ts +63 -0
  264. package/dist/h3/v1/index.js +49 -0
  265. package/dist/history-BZih6SFP.js +64 -0
  266. package/dist/hono/index.d.ts +56 -7
  267. package/dist/hono/index.js +97 -45
  268. package/dist/{react-C_s7kiNz.js → hooks-1BTCJsiw.js} +104 -133
  269. package/dist/http-Cv4T29xh.js +40 -0
  270. package/dist/http-DdYadv-o.js +126 -0
  271. package/dist/image-url-pIVlO6R1.js +41 -0
  272. package/dist/{impersonation-BgSHAYLf.js → impersonation-DcqaTBHx.js} +21 -6
  273. package/dist/inbox-i7E1ppo6.d.ts +384 -0
  274. package/dist/index-ACiNPN4Z.d.ts +74 -0
  275. package/dist/{index-DgILJRXj.d.ts → index-Bepi-Hgg.d.ts} +91 -28
  276. package/dist/index-BkWT_uBO.d.ts +51 -0
  277. package/dist/index-BpFYMsi0.d.ts +53 -0
  278. package/dist/{index-C7f8cOBM.d.ts → index-Bxih3l0u.d.ts} +2 -2
  279. package/dist/index-CaxrMD1A.d.ts +1 -0
  280. package/dist/index-ClmjK_o-.d.ts +55 -0
  281. package/dist/index-CtuakVRc.d.ts +267 -0
  282. package/dist/index-D48jVS-N.d.ts +246 -0
  283. package/dist/index-DDrYaUcq.d.ts +138 -0
  284. package/dist/index-DQh4VCc9.d.ts +98 -0
  285. package/dist/{live-D9W2M5aO.d.ts → index-DunNRdnT.d.ts} +136 -38
  286. package/dist/index.d.ts +65 -18
  287. package/dist/index.js +42 -14
  288. package/dist/invalidate-BBqhpxyB.d.ts +19 -0
  289. package/dist/json-CEnpTHlZ.js +16 -0
  290. package/dist/json-schema-CvER4kgT.js +502 -0
  291. package/dist/keys-4MnkWTTh.js +35 -0
  292. package/dist/kit-B5tid-q5.d.ts +60 -0
  293. package/dist/kit-Fm-Fv7q5.js +78 -0
  294. package/dist/knowledge-BXBbT0Tr.d.ts +176 -0
  295. package/dist/knowledge-CDmiMLew.js +255 -0
  296. package/dist/lint/index.d.ts +1 -1
  297. package/dist/lint/index.js +37 -0
  298. package/dist/list/index.d.ts +3 -2
  299. package/dist/list/index.js +1 -444
  300. package/dist/{index-fag8VJZ2.d.ts → list-query-BRt-zDF7.d.ts} +20 -12
  301. package/dist/list-query-gl808ac1.js +459 -0
  302. package/dist/{live-CdJBOc4f.js → live-CTAZQkwl.js} +99 -14
  303. package/dist/logger-DWVYUmwi.d.ts +18 -0
  304. package/dist/mcp/index.d.ts +38 -11
  305. package/dist/mcp/index.js +82 -46
  306. package/dist/mcp/sdk/index.d.ts +105 -0
  307. package/dist/mcp/sdk/index.js +126 -0
  308. package/dist/message-CaKlqdsX.js +219 -0
  309. package/dist/message-CfDoR0Y6.d.ts +94 -0
  310. package/dist/messages-B9-5887d.js +715 -0
  311. package/dist/messages-DYP0sUTe.d.ts +59 -0
  312. package/dist/mfa-Daak8ukG.d.ts +54 -0
  313. package/dist/modules-DpPwzC7E.d.ts +192 -0
  314. package/dist/modules-dxrVK3ID.js +228 -0
  315. package/dist/nestjs/index.d.ts +68 -0
  316. package/dist/nestjs/index.js +164 -0
  317. package/dist/next/client/index.d.ts +35 -0
  318. package/dist/next/client/index.js +36 -0
  319. package/dist/next/image/index.js +3 -24
  320. package/dist/next/index.d.ts +150 -51
  321. package/dist/next/index.js +261 -107
  322. package/dist/node/index.d.ts +4 -0
  323. package/dist/node/index.js +210 -0
  324. package/dist/node-headers-AO06VhqH.d.ts +24 -0
  325. package/dist/node-headers-C71zNQHe.js +55 -0
  326. package/dist/nuxt/index.d.ts +60 -0
  327. package/dist/nuxt/index.js +64 -0
  328. package/dist/onboarding-BZGHYJks.d.ts +62 -0
  329. package/dist/openapi/index.d.ts +1 -1
  330. package/dist/openapi/index.js +3 -3
  331. package/dist/orpc/index.d.ts +70 -11
  332. package/dist/orpc/index.js +73 -24
  333. package/dist/otel/index.d.ts +7 -7
  334. package/dist/otel/index.js +87 -57
  335. package/dist/outbox-Cq7pPYvl.d.ts +161 -0
  336. package/dist/{plugin-o144f322.d.ts → plugin-FGY8UhYm.d.ts} +30 -10
  337. package/dist/plugin-tfXW1-qO.js +45 -0
  338. package/dist/plugins/actor/index.d.ts +2 -2
  339. package/dist/plugins/actor/index.js +3 -3
  340. package/dist/plugins/rules/index.d.ts +11 -4
  341. package/dist/plugins/rules/index.js +40 -13
  342. package/dist/plugins/soft-delete/index.d.ts +5 -4
  343. package/dist/plugins/soft-delete/index.js +10 -5
  344. package/dist/plugins/tenant/index.d.ts +2 -2
  345. package/dist/plugins/tenant/index.js +18 -11
  346. package/dist/plugins/timestamps/index.d.ts +5 -3
  347. package/dist/plugins/timestamps/index.js +6 -4
  348. package/dist/plugins/validation/index.d.ts +2 -2
  349. package/dist/plugins/validation/index.js +10 -6
  350. package/dist/{pool-C9voM4Kw.d.ts → pool-CAu2nLrL.d.ts} +2 -2
  351. package/dist/postgres/index.d.ts +4 -4
  352. package/dist/postgres/index.js +1 -2
  353. package/dist/{postgrest-CruYKAvV.d.ts → postgrest-BLVdEnfe.d.ts} +13 -3
  354. package/dist/powersync/index.d.ts +43 -0
  355. package/dist/powersync/index.js +199 -0
  356. package/dist/powersync/react/index.d.ts +87 -0
  357. package/dist/powersync/react/index.js +108 -0
  358. package/dist/{problem-BW1KhzSG.js → problem-BreOl8b8.js} +14 -3
  359. package/dist/{problem-Blxe8S31.d.ts → problem-DD8LZFjc.d.ts} +21 -3
  360. package/dist/provider-BH5UWZJ6.d.ts +113 -0
  361. package/dist/provider-Di3sRutW.js +57 -0
  362. package/dist/query/index.d.ts +4 -2
  363. package/dist/query/index.js +4 -3
  364. package/dist/{query-CCbo44lG.js → query-BQ-NaZon.js} +141 -24
  365. package/dist/{queue-BYUCjr59.d.ts → queue-CLJurhdy.d.ts} +258 -83
  366. package/dist/react/index.d.ts +11 -7
  367. package/dist/react/index.js +7 -3
  368. package/dist/react/native/index.d.ts +116 -0
  369. package/dist/react/native/index.js +130 -0
  370. package/dist/react/server.d.ts +28 -10
  371. package/dist/react/server.js +22 -5
  372. package/dist/react/session.d.ts +2 -2
  373. package/dist/react-4ZqkP8da.js +79 -0
  374. package/dist/react-F80mF4-t.js +409 -0
  375. package/dist/react-router/index.d.ts +83 -0
  376. package/dist/react-router/index.js +89 -0
  377. package/dist/react-topic-seAWjL3_.js +38 -0
  378. package/dist/{read-set-DQFt1N_Y.js → read-set-DuKWC9Mj.js} +67 -25
  379. package/dist/realtime/index.d.ts +4 -5
  380. package/dist/realtime/index.js +144 -82
  381. package/dist/refusal-CeJWxmkH.js +61 -0
  382. package/dist/refusal-D1rgbzNq.d.ts +15 -0
  383. package/dist/replicas-CwrYp5Zj.js +94 -0
  384. package/dist/{view-Bn6HNKUe.js → resolve-D_IcnvFd.js} +248 -240
  385. package/dist/{impersonation-BmePsuxz.d.ts → resolve-KW8nCeL6.d.ts} +29 -69
  386. package/dist/{resource-mqfJW4YF.js → resource-BsvzCMlX.js} +4 -4
  387. package/dist/{resource-DNRFP7KR.d.ts → resource-D6Uc7Sk7.d.ts} +5 -5
  388. package/dist/respond-BUgsXNgk.js +91 -0
  389. package/dist/respond-DoBijysA.d.ts +93 -0
  390. package/dist/result-D7y2fT87.d.ts +282 -0
  391. package/dist/{result-BKiliPY7.js → result-DzUbqgdW.js} +27 -2
  392. package/dist/run-state-CPo-1X2B.d.ts +12 -0
  393. package/dist/run-state-CgBKzYMW.js +13 -0
  394. package/dist/search-CUWCRYKL.js +9 -0
  395. package/dist/server/index.d.ts +143 -22
  396. package/dist/server/index.js +46 -14
  397. package/dist/{respond-BR1fJWOB.d.ts → server-CeVeeXwz.d.ts} +224 -85
  398. package/dist/session-ChiXDZdZ.d.ts +72 -0
  399. package/dist/shared-CBxosKK3.js +75 -0
  400. package/dist/{shared-D1dRUrAg.js → shared-CxWmcyqB.js} +2 -1
  401. package/dist/shared-DDSjEGDR.d.ts +11 -0
  402. package/dist/sign-in-BCV5S2WZ.d.ts +49 -0
  403. package/dist/sign-in-Cb1mwv6X.js +86 -0
  404. package/dist/{signers-Cc6r98SW.d.ts → signers-4y62_VIi.d.ts} +13 -9
  405. package/dist/simplify-DDO0j0LI.js +83 -0
  406. package/dist/solid/index.d.ts +131 -0
  407. package/dist/solid/index.js +344 -0
  408. package/dist/solid-start/index.d.ts +75 -0
  409. package/dist/solid-start/index.js +58 -0
  410. package/dist/{spec-pins-C3oc-Tdp.js → spec-pins--j6mTok4.js} +8 -1
  411. package/dist/{spec-pins-CqorWDnO.d.ts → spec-pins-C89s6DyW.d.ts} +7 -0
  412. package/dist/sql/index.d.ts +313 -212
  413. package/dist/sql/index.js +34872 -6579
  414. package/dist/ssr/index.d.ts +6 -5
  415. package/dist/ssr/index.js +3 -3
  416. package/dist/{standard-D7r6dMUu.js → standard-BK0cqJ7y.js} +4 -3
  417. package/dist/{standard-J4YgMOLm.d.ts → standard-CYsm7xpT.d.ts} +1 -1
  418. package/dist/stats-D_AD9GGu.js +1123 -0
  419. package/dist/storage/index.d.ts +5 -5
  420. package/dist/storage/index.js +1027 -368
  421. package/dist/store-BdH5ruDx.js +66 -0
  422. package/dist/store-CGjgWu5n.d.ts +68 -0
  423. package/dist/streams/index.d.ts +76 -0
  424. package/dist/streams/index.js +77 -0
  425. package/dist/streams/redis/index.d.ts +52 -0
  426. package/dist/streams/redis/index.js +185 -0
  427. package/dist/stripe-BMj5LtsT.js +38 -0
  428. package/dist/stripe-D04h-QBT.d.ts +136 -0
  429. package/dist/{support-wHnK6zp-.js → support-BivNqSpK.js} +32 -11
  430. package/dist/{support-view-B8SlToQX.d.ts → support-view-33Oi07TT.d.ts} +1 -1
  431. package/dist/svelte/index.d.ts +114 -0
  432. package/dist/svelte/index.js +344 -0
  433. package/dist/sveltekit/index.d.ts +116 -0
  434. package/dist/sveltekit/index.js +106 -0
  435. package/dist/tags-B99_U9Pp.js +39 -0
  436. package/dist/tags-Cx-LnIQP.d.ts +30 -0
  437. package/dist/tanstack-db/index.d.ts +71 -0
  438. package/dist/tanstack-db/index.js +72 -0
  439. package/dist/tanstack-start/index.d.ts +75 -0
  440. package/dist/tanstack-start/index.js +95 -0
  441. package/dist/tee-CoEppCER.js +101 -0
  442. package/dist/{template-TxrGI5jR.js → template--jDkl3UP.js} +34 -13
  443. package/dist/template-CwO38Do8.d.ts +6 -0
  444. package/dist/temporal-BJGitm-h.js +79 -0
  445. package/dist/{temporal-required-CAt4Dc9Z.js → temporal-required-BVvW7SYJ.js} +3 -2
  446. package/dist/tenant-I1TEZ_BX.js +27 -0
  447. package/dist/tenant-icPeuUBN.d.ts +17 -0
  448. package/dist/testing/index.d.ts +315 -41
  449. package/dist/testing/index.js +1046 -79
  450. package/dist/timing-CyTQPubY.js +92 -0
  451. package/dist/ttl-Hr34gRu8.js +12 -0
  452. package/dist/{types-Dnf_wRDz.d.ts → types-6BdhkmZe.d.ts} +111 -45
  453. package/dist/types-BI-0Sl2v.d.ts +359 -0
  454. package/dist/types-C05bxW-W.d.ts +220 -0
  455. package/dist/types-DGs5L0VN.d.ts +192 -0
  456. package/dist/types-TaiEeBGA.d.ts +156 -0
  457. package/dist/usage-CrvrL2vw.d.ts +177 -0
  458. package/dist/user-change-XzvgafU4.js +130 -0
  459. package/dist/vault-CSO7ss5C.d.ts +50 -0
  460. package/dist/vercel-connect/index.d.ts +47 -0
  461. package/dist/vercel-connect/index.js +119 -0
  462. package/dist/{verify-Ce49ETPz.js → verify-DL41hbvY.js} +85 -13
  463. package/dist/verify-DPuWngD4.d.ts +172 -0
  464. package/dist/{version-DOYTYwHP.js → version-Bvv6aLjZ.js} +1 -1
  465. package/dist/view-BeFcRV6G.js +99 -0
  466. package/dist/{view-CbgObAeb.d.ts → view-DbxLNu8L.d.ts} +22 -5
  467. package/dist/vue/index.d.ts +141 -0
  468. package/dist/vue/index.js +362 -0
  469. package/dist/watch-DI34G86j.d.ts +60 -0
  470. package/dist/watch-Xuxrvxq-.js +122 -0
  471. package/dist/{wire-D2dT86vi.js → wire-DtZQ4sdE.js} +15 -5
  472. package/dist/workflow-builder-DJ1oHn8g.js +398 -0
  473. package/dist/workflow-sdk/builder/index.d.ts +85 -0
  474. package/dist/workflow-sdk/builder/index.js +250 -0
  475. package/dist/workflow-sdk/index.d.ts +14 -0
  476. package/dist/workflow-sdk/index.js +3 -0
  477. package/dist/workflow-sdk/world/index.d.ts +107 -0
  478. package/dist/workflow-sdk/world/index.js +702 -0
  479. package/dist/workflow-sdk-B3yLD6Br.d.ts +98 -0
  480. package/dist/workflow-sdk-C2WJ_G2O.js +173 -0
  481. package/dist/workflow-sdk-world-D-prir6O.js +1397 -0
  482. package/dist/workflows-B0j9WKPu.d.ts +185 -0
  483. package/dist/workflows-wu1WWBn7.js +216 -0
  484. package/package.json +461 -20
  485. package/schemas/ai-message-v1.json +258 -0
  486. package/schemas/config-v1.json +1074 -140
  487. package/schemas/doctor-report-v1.json +20 -1
  488. package/schemas/snapshot-v2.json +8 -0
  489. package/skills/better-supabase/SKILL.md +41 -12
  490. package/skills/better-supabase/references/frontend.md +96 -0
  491. package/skills/better-supabase/references/plugins.md +10 -6
  492. package/skills/better-supabase/references/troubleshooting.md +2 -1
  493. package/skills/better-supabase-api/SKILL.md +76 -22
  494. package/skills/better-supabase-api/references/adapters.md +207 -0
  495. package/skills/better-supabase-api/references/ai.md +125 -0
  496. package/skills/better-supabase-api/references/expo.md +65 -0
  497. package/skills/better-supabase-api/references/powersync.md +35 -0
  498. package/skills/better-supabase-api/references/streams-credentials.md +105 -0
  499. package/skills/better-supabase-auth/SKILL.md +47 -11
  500. package/skills/better-supabase-auth/references/authorization-providers.md +51 -0
  501. package/skills/better-supabase-testing/SKILL.md +3 -1
  502. package/dist/cli/config-dtoekM0v.js +0 -2
  503. package/dist/cli/gen-CIdSQZad.js +0 -2
  504. package/dist/cli/gen-CjElD1Vw.js +0 -2241
  505. package/dist/cli/read-sets-VQcPgxU9.js +0 -436
  506. package/dist/cli/sql-CVx-1O8G.js +0 -373
  507. package/dist/entitlements-CTEBm7IB.js +0 -20
  508. package/dist/events-aIO7vsIk.d.ts +0 -230
  509. package/dist/executor-BunPOO-k.d.ts +0 -402
  510. package/dist/executor-XycESQPH.js +0 -94
  511. package/dist/index-CWMDdEr4.d.ts +0 -50
  512. package/dist/index-DOESKG27.d.ts +0 -100
  513. package/dist/index-DmXSxbLi.d.ts +0 -62
  514. package/dist/index-Dp2VDwog.d.ts +0 -161
  515. package/dist/jobs/index.d.ts +0 -226
  516. package/dist/jobs/index.js +0 -1007
  517. package/dist/json-schema-m1fiwKgN.js +0 -208
  518. package/dist/kit-events-CTFDfSwb.js +0 -60
  519. package/dist/kit-transport-B82k1djG.d.ts +0 -33
  520. package/dist/kits-CGLLrNPd.js +0 -157
  521. package/dist/mfa-Cu96oJdw.d.ts +0 -30
  522. package/dist/notifications/index.d.ts +0 -162
  523. package/dist/notifications/index.js +0 -264
  524. package/dist/orgs/index.d.ts +0 -132
  525. package/dist/orgs/index.js +0 -245
  526. package/dist/permdock-sql-C2Inc6Xc.d.ts +0 -29
  527. package/dist/permdock-sql-DgOfeixi.js +0 -51
  528. package/dist/plugin-DwARMuQp.js +0 -59
  529. package/dist/server-B1mZ7CgQ.js +0 -660
  530. package/dist/stats-Bqob3WqT.js +0 -592
  531. package/dist/support-CEPwlw2G.d.ts +0 -89
  532. package/dist/template-mbvlysOo.d.ts +0 -6
  533. package/dist/temporal-CVlIV2DZ.js +0 -40
  534. package/dist/user-change-CHFEUro1.js +0 -49
  535. package/dist/webhooks/index.d.ts +0 -285
  536. package/skills/better-supabase-auth/references/permdock.md +0 -122
@@ -0,0 +1,1077 @@
1
+ import { n as CliError } from "./errors-4v4DTtda.js";
2
+ import { t as display } from "./io-DI1mTdSA.js";
3
+ import { c as resolve$1, i as extname$1, n as basename$1, o as join$1, r as dirname$1, s as normalize$1, t as resolveModulePath } from "./dist-DBPdlPYK.js";
4
+ import { C as unknown, S as union, _ as record, a as integer, b as strictObject, c as minLength, d as number, f as objectWithRest, g as rawCheck, h as pipe, i as getDotPath, l as minValue, m as picklist, n as boolean, o as lazy, p as optional, r as custom, s as literal, t as array, u as nullable, v as regex, x as string, y as safeParse } from "./dist-DRAVaE6w.js";
5
+ import { t as importFresh } from "./fresh-import-BeYf9I3x.js";
6
+ import { m as tomlNumber, o as findUp, u as readSupabaseToml } from "./supabase-toml-B-bIukQF.js";
7
+ import * as nodeUtil from "node:util";
8
+ import { dirname, join, resolve } from "node:path";
9
+ import { existsSync, readFileSync, statSync } from "node:fs";
10
+ import { readFile, rm } from "node:fs/promises";
11
+ import { providerApiProblem, resolveConfig } from "better-supabase/config";
12
+ import { SCOPE_ID_TYPES, scopeProblems } from "better-supabase/sql";
13
+ import { pathToFileURL } from "node:url";
14
+ import { homedir } from "node:os";
15
+ //#region ../../node_modules/.pnpm/rc9@3.1.0/node_modules/rc9/dist/_chunks/libs/flat.mjs
16
+ function isBuffer(obj) {
17
+ return obj && obj.constructor && typeof obj.constructor.isBuffer === "function" && obj.constructor.isBuffer(obj);
18
+ }
19
+ function keyIdentity(key) {
20
+ return key;
21
+ }
22
+ function flatten(target, opts) {
23
+ opts = opts || {};
24
+ const delimiter = opts.delimiter || ".";
25
+ const maxDepth = opts.maxDepth;
26
+ const transformKey = opts.transformKey || keyIdentity;
27
+ const output = {};
28
+ function step(object, prev, currentDepth) {
29
+ currentDepth = currentDepth || 1;
30
+ Object.keys(object).forEach(function(key) {
31
+ const value = object[key];
32
+ const isarray = opts.safe && Array.isArray(value);
33
+ const type = Object.prototype.toString.call(value);
34
+ const isbuffer = isBuffer(value);
35
+ const isobject = type === "[object Object]" || type === "[object Array]";
36
+ const newKey = prev ? prev + delimiter + transformKey(key) : transformKey(key);
37
+ if (!isarray && !isbuffer && isobject && Object.keys(value).length && (!opts.maxDepth || currentDepth < maxDepth)) return step(value, newKey, currentDepth + 1);
38
+ output[newKey] = value;
39
+ });
40
+ }
41
+ step(target);
42
+ return output;
43
+ }
44
+ function unflatten(target, opts) {
45
+ opts = opts || {};
46
+ const delimiter = opts.delimiter || ".";
47
+ const overwrite = opts.overwrite || false;
48
+ const transformKey = opts.transformKey || keyIdentity;
49
+ const result = {};
50
+ if (isBuffer(target) || Object.prototype.toString.call(target) !== "[object Object]") return target;
51
+ function getkey(key) {
52
+ const parsedKey = Number(key);
53
+ return isNaN(parsedKey) || key.indexOf(".") !== -1 || opts.object ? key : parsedKey;
54
+ }
55
+ function addKeys(keyPrefix, recipient, target) {
56
+ return Object.keys(target).reduce(function(result, key) {
57
+ result[keyPrefix + delimiter + key] = target[key];
58
+ return result;
59
+ }, recipient);
60
+ }
61
+ function isEmpty(val) {
62
+ const type = Object.prototype.toString.call(val);
63
+ const isArray = type === "[object Array]";
64
+ const isObject = type === "[object Object]";
65
+ if (!val) return true;
66
+ else if (isArray) return !val.length;
67
+ else if (isObject) return !Object.keys(val).length;
68
+ }
69
+ target = Object.keys(target).reduce(function(result, key) {
70
+ const type = Object.prototype.toString.call(target[key]);
71
+ if (!(type === "[object Object]" || type === "[object Array]") || isEmpty(target[key])) {
72
+ result[key] = target[key];
73
+ return result;
74
+ } else return addKeys(key, result, flatten(target[key], opts));
75
+ }, {});
76
+ Object.keys(target).forEach(function(key) {
77
+ const split = key.split(delimiter).map(transformKey);
78
+ let key1 = getkey(split.shift());
79
+ let key2 = getkey(split[0]);
80
+ let recipient = result;
81
+ while (key2 !== void 0) {
82
+ if (key1 === "__proto__") return;
83
+ const type = Object.prototype.toString.call(recipient[key1]);
84
+ const isobject = type === "[object Object]" || type === "[object Array]";
85
+ if (!overwrite && !isobject && typeof recipient[key1] !== "undefined") return;
86
+ if (overwrite && !isobject || !overwrite && recipient[key1] == null) recipient[key1] = typeof key2 === "number" && !opts.object ? [] : {};
87
+ recipient = recipient[key1];
88
+ if (split.length > 0) {
89
+ key1 = getkey(split.shift());
90
+ key2 = getkey(split[0]);
91
+ }
92
+ }
93
+ recipient[key1] = unflatten(target[key], opts);
94
+ });
95
+ return result;
96
+ }
97
+ //#endregion
98
+ //#region ../../node_modules/.pnpm/destr@2.0.5/node_modules/destr/dist/index.mjs
99
+ const suspectProtoRx = /"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/;
100
+ const suspectConstructorRx = /"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/;
101
+ const JsonSigRx = /^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/;
102
+ function jsonParseTransform(key, value) {
103
+ if (key === "__proto__" || key === "constructor" && value && typeof value === "object" && "prototype" in value) {
104
+ warnKeyDropped(key);
105
+ return;
106
+ }
107
+ return value;
108
+ }
109
+ function warnKeyDropped(key) {
110
+ console.warn(`[destr] Dropping "${key}" key to prevent prototype pollution.`);
111
+ }
112
+ function destr(value, options = {}) {
113
+ if (typeof value !== "string") return value;
114
+ if (value[0] === "\"" && value[value.length - 1] === "\"" && value.indexOf("\\") === -1) return value.slice(1, -1);
115
+ const _value = value.trim();
116
+ if (_value.length <= 9) switch (_value.toLowerCase()) {
117
+ case "true": return true;
118
+ case "false": return false;
119
+ case "undefined": return;
120
+ case "null": return null;
121
+ case "nan": return NaN;
122
+ case "infinity": return Number.POSITIVE_INFINITY;
123
+ case "-infinity": return Number.NEGATIVE_INFINITY;
124
+ }
125
+ if (!JsonSigRx.test(value)) {
126
+ if (options.strict) throw new SyntaxError("[destr] Invalid JSON");
127
+ return value;
128
+ }
129
+ try {
130
+ if (suspectProtoRx.test(value) || suspectConstructorRx.test(value)) {
131
+ if (options.strict) throw new Error("[destr] Possible prototype pollution");
132
+ return JSON.parse(value, jsonParseTransform);
133
+ }
134
+ return JSON.parse(value);
135
+ } catch (error) {
136
+ if (options.strict) throw error;
137
+ return value;
138
+ }
139
+ }
140
+ //#endregion
141
+ //#region ../../node_modules/.pnpm/defu@6.1.7/node_modules/defu/dist/defu.mjs
142
+ function isPlainObject(value) {
143
+ if (value === null || typeof value !== "object") return false;
144
+ const prototype = Object.getPrototypeOf(value);
145
+ if (prototype !== null && prototype !== Object.prototype && Object.getPrototypeOf(prototype) !== null) return false;
146
+ if (Symbol.iterator in value) return false;
147
+ if (Symbol.toStringTag in value) return Object.prototype.toString.call(value) === "[object Module]";
148
+ return true;
149
+ }
150
+ function _defu(baseObject, defaults, namespace = ".", merger) {
151
+ if (!isPlainObject(defaults)) return _defu(baseObject, {}, namespace, merger);
152
+ const object = { ...defaults };
153
+ for (const key of Object.keys(baseObject)) {
154
+ if (key === "__proto__" || key === "constructor") continue;
155
+ const value = baseObject[key];
156
+ if (value === null || value === void 0) continue;
157
+ if (merger && merger(object, key, value, namespace)) continue;
158
+ if (Array.isArray(value) && Array.isArray(object[key])) object[key] = [...value, ...object[key]];
159
+ else if (isPlainObject(value) && isPlainObject(object[key])) object[key] = _defu(value, object[key], (namespace ? `${namespace}.` : "") + key.toString(), merger);
160
+ else object[key] = value;
161
+ }
162
+ return object;
163
+ }
164
+ function createDefu(merger) {
165
+ return (...arguments_) => arguments_.reduce((p, c) => _defu(p, c, "", merger), {});
166
+ }
167
+ const defu = createDefu();
168
+ //#endregion
169
+ //#region ../../node_modules/.pnpm/rc9@3.1.0/node_modules/rc9/dist/index.mjs
170
+ const RE_KEY_VAL = /^\s*([^\s=]+)\s*=\s*(.*)?\s*$/;
171
+ const RE_LINES = /\n|\r|\r\n/;
172
+ const defaults = {
173
+ name: ".conf",
174
+ dir: process.cwd(),
175
+ flat: false
176
+ };
177
+ function withDefaults(options) {
178
+ if (typeof options === "string") options = { name: options };
179
+ return {
180
+ ...defaults,
181
+ ...options
182
+ };
183
+ }
184
+ function parse(contents, options = {}) {
185
+ const config = {};
186
+ const lines = contents.split(RE_LINES);
187
+ for (const line of lines) {
188
+ const match = line.match(RE_KEY_VAL);
189
+ if (!match) continue;
190
+ const key = match[1];
191
+ if (!key || key === "__proto__" || key === "constructor") continue;
192
+ const value = destr((match[2] || "").trim());
193
+ if (key.endsWith("[]")) {
194
+ const nkey = key.slice(0, Math.max(0, key.length - 2));
195
+ config[nkey] = (config[nkey] || []).concat(value);
196
+ continue;
197
+ }
198
+ config[key] = value;
199
+ }
200
+ return options.flat ? config : unflatten(config, { overwrite: true });
201
+ }
202
+ function parseFile(path, options) {
203
+ if (!existsSync(path)) return {};
204
+ return parse(readFileSync(path, "utf8"), options);
205
+ }
206
+ function read(options) {
207
+ options = withDefaults(options);
208
+ return parseFile(resolve(options.dir, options.name), options);
209
+ }
210
+ function userConfigDir() {
211
+ return process.env.XDG_CONFIG_HOME || resolve(homedir(), ".config");
212
+ }
213
+ function readUserConfig(options) {
214
+ options = withDefaults(options);
215
+ options.dir = userConfigDir();
216
+ return read(options);
217
+ }
218
+ //#endregion
219
+ //#region ../../node_modules/.pnpm/c12@4.0.0-rc.2_dotenv@17.4.2_giget@3.3.1_jiti@2.7.0_magicast@0.5.5/node_modules/c12/dist/index.mjs
220
+ async function setupDotenv(options) {
221
+ const targetEnvironment = options.env ?? process.env;
222
+ const environment = await loadDotenv({
223
+ cwd: options.cwd,
224
+ fileName: options.fileName ?? ".env",
225
+ env: targetEnvironment,
226
+ interpolate: options.interpolate ?? true,
227
+ expandFileReferences: options.expandFileReferences ?? false,
228
+ parse: options.parse
229
+ });
230
+ const dotenvVars = getDotEnvVars(targetEnvironment);
231
+ for (const key in environment) {
232
+ if (key.startsWith("_")) continue;
233
+ if (targetEnvironment[key] === void 0 || dotenvVars.has(key)) targetEnvironment[key] = environment[key];
234
+ }
235
+ return environment;
236
+ }
237
+ async function loadDotenv(options) {
238
+ const environment = Object.create(null);
239
+ const cwd = resolve$1(options.cwd || ".");
240
+ const _fileName = options.fileName || ".env";
241
+ const dotenvFiles = typeof _fileName === "string" ? [_fileName] : _fileName;
242
+ const dotenvVars = getDotEnvVars(options.env || {});
243
+ Object.assign(environment, options.env);
244
+ for (const file of dotenvFiles) {
245
+ const dotenvFile = resolve$1(cwd, file);
246
+ if (!statSync(dotenvFile, { throwIfNoEntry: false })?.isFile()) continue;
247
+ const parsed = await readEnvFile(dotenvFile, options.parse);
248
+ for (const key in parsed) {
249
+ if (key in environment && !dotenvVars.has(key)) continue;
250
+ environment[key] = parsed[key];
251
+ dotenvVars.add(key);
252
+ }
253
+ }
254
+ if (options.expandFileReferences) {
255
+ for (const key in environment) if (key.endsWith("_FILE")) {
256
+ const targetKey = key.slice(0, -5);
257
+ if (environment[targetKey] === void 0) {
258
+ const filePath = environment[key];
259
+ if (filePath && statSync(filePath, { throwIfNoEntry: false })?.isFile()) {
260
+ environment[targetKey] = readFileSync(filePath, "utf8").trim();
261
+ dotenvVars.add(targetKey);
262
+ }
263
+ }
264
+ }
265
+ }
266
+ if (options.interpolate) interpolate(environment);
267
+ return environment;
268
+ }
269
+ let _parseEnv = nodeUtil.parseEnv;
270
+ async function readEnvFile(path, parse) {
271
+ const src = readFileSync(path, "utf8");
272
+ if (parse) return parse(src);
273
+ if (!_parseEnv) try {
274
+ const dotenv = await import("dotenv");
275
+ _parseEnv = (src) => dotenv.parse(src);
276
+ } catch {
277
+ throw new Error("Failed to parse .env file: `node:util.parseEnv` is not available and `dotenv` package is not installed. Please upgrade your runtime, install `dotenv` as a dependency or provide a custom `parse` option.");
278
+ }
279
+ return _parseEnv(src);
280
+ }
281
+ function interpolate(target, source = {}, parse = (v) => v) {
282
+ function getValue(key) {
283
+ return source[key] === void 0 ? target[key] : source[key];
284
+ }
285
+ function interpolate(value, parents = []) {
286
+ if (typeof value !== "string") return value;
287
+ let result = "";
288
+ let index = 0;
289
+ while (index < value.length) {
290
+ const char = value[index];
291
+ if (char === "\\" && value[index + 1] === "$") {
292
+ result += "$";
293
+ index += 2;
294
+ continue;
295
+ }
296
+ const ref = char === "$" ? parseRef(value, index) : void 0;
297
+ if (!ref) {
298
+ result += char;
299
+ index++;
300
+ continue;
301
+ }
302
+ if (parents.includes(ref.key)) {
303
+ if (ref.defaultValue !== void 0) {
304
+ result += interpolate(ref.defaultValue, parents);
305
+ index = ref.end;
306
+ continue;
307
+ }
308
+ console.warn(`Please avoid recursive environment variables ( loop: ${parents.join(" > ")} > ${ref.key} )`);
309
+ return "";
310
+ }
311
+ let resolved = interpolate(getValue(ref.key), [...parents, ref.key]);
312
+ if (ref.defaultValue !== void 0 && (resolved === void 0 || ref.operator === ":-" && resolved === "")) resolved = interpolate(ref.defaultValue, parents);
313
+ result += resolved === void 0 ? value.slice(index, ref.end) : resolved;
314
+ index = ref.end;
315
+ }
316
+ return parse(result);
317
+ }
318
+ for (const key in target) target[key] = interpolate(getValue(key));
319
+ }
320
+ const REF_NAME_RE = /\w+/y;
321
+ const BRACED_REF_NAME_RE = /[\w:]+/y;
322
+ function parseRef(input, start) {
323
+ let index = start + 1;
324
+ const braced = input[index] === "{";
325
+ if (braced) index++;
326
+ const nameRe = braced ? BRACED_REF_NAME_RE : REF_NAME_RE;
327
+ nameRe.lastIndex = index;
328
+ const name = nameRe.exec(input);
329
+ if (!name) return;
330
+ let key = name[0];
331
+ index = nameRe.lastIndex;
332
+ if (!braced) return {
333
+ key,
334
+ end: index
335
+ };
336
+ if (input[index] === "}") return {
337
+ key,
338
+ end: index + 1
339
+ };
340
+ if (input[index] === "-") {
341
+ let operator = "-";
342
+ if (key.endsWith(":")) {
343
+ key = key.slice(0, -1);
344
+ operator = ":-";
345
+ }
346
+ const defaultValue = key ? readDefault(input, index + 1) : void 0;
347
+ if (!defaultValue) return;
348
+ return {
349
+ key,
350
+ operator,
351
+ defaultValue: defaultValue.value,
352
+ end: defaultValue.end
353
+ };
354
+ }
355
+ return {
356
+ key,
357
+ end: index
358
+ };
359
+ }
360
+ function readDefault(input, start) {
361
+ let value = "";
362
+ let depth = 1;
363
+ for (let index = start; index < input.length; index++) {
364
+ const char = input[index];
365
+ if (char === "\\" && index + 1 < input.length) {
366
+ const next = input[index + 1];
367
+ value += next === "{" || next === "}" ? next : char + next;
368
+ index++;
369
+ continue;
370
+ }
371
+ if (char === "$" && input[index + 1] === "{") {
372
+ depth++;
373
+ value += "${";
374
+ index++;
375
+ continue;
376
+ }
377
+ if (char === "{") depth++;
378
+ if (char === "}") {
379
+ depth--;
380
+ if (depth === 0) return {
381
+ value,
382
+ end: index + 1
383
+ };
384
+ }
385
+ value += char;
386
+ }
387
+ }
388
+ function getDotEnvVars(targetEnvironment) {
389
+ const globalRegistry = globalThis.__c12_dotenv_vars__ ||= /* @__PURE__ */ new Map();
390
+ if (!globalRegistry.has(targetEnvironment)) globalRegistry.set(targetEnvironment, /* @__PURE__ */ new Set());
391
+ return globalRegistry.get(targetEnvironment);
392
+ }
393
+ const _normalize = (p) => p?.replace(/\\/g, "/");
394
+ let importCounter = 0;
395
+ const ASYNC_LOADERS = {
396
+ ".json": () => JSON.parse,
397
+ ".yaml": () => import("./yaml-CYCbJ6et.js").then((r) => r.parseYAML),
398
+ ".yml": () => import("./yaml-CYCbJ6et.js").then((r) => r.parseYAML),
399
+ ".jsonc": () => import("./jsonc-BUniUpOk.js").then((r) => (source) => r.parseJSONC(source, { allowTrailingComma: true })),
400
+ ".json5": () => import("./json5-ChRycquj.js").then((r) => r.parseJSON5),
401
+ ".toml": () => import("./toml-DB-MNnFs.js").then((r) => r.parseTOML)
402
+ };
403
+ const SUPPORTED_EXTENSIONS = Object.freeze([
404
+ ".js",
405
+ ".ts",
406
+ ".mjs",
407
+ ".cjs",
408
+ ".mts",
409
+ ".cts",
410
+ ".json",
411
+ ".jsonc",
412
+ ".json5",
413
+ ".yaml",
414
+ ".yml",
415
+ ".toml"
416
+ ]);
417
+ async function loadConfig$1(options) {
418
+ options.cwd = resolve$1(process.cwd(), options.cwd || ".");
419
+ options.name = options.name || "config";
420
+ options.envName = options.envName ?? process.env.NODE_ENV;
421
+ options.configFile = options.configFile ?? (options.name === "config" ? "config" : `${options.name}.config`);
422
+ options.rcFile = options.rcFile ?? `.${options.name}rc`;
423
+ if (options.extend !== false) options.extend = {
424
+ extendKey: "extends",
425
+ ...options.extend
426
+ };
427
+ const _merger = options.merger || defu;
428
+ const r = {
429
+ config: {},
430
+ cwd: options.cwd,
431
+ configFile: resolve$1(options.cwd, options.configFile),
432
+ layers: [],
433
+ _configFile: void 0
434
+ };
435
+ const rawConfigs = {
436
+ overrides: options.overrides,
437
+ main: void 0,
438
+ rc: void 0,
439
+ packageJson: void 0,
440
+ defaultConfig: options.defaultConfig
441
+ };
442
+ if (options.dotenv) await setupDotenv({
443
+ cwd: options.cwd,
444
+ ...options.dotenv === true ? {} : options.dotenv
445
+ });
446
+ const _mainConfig = await resolveConfig$1(".", options);
447
+ if (_mainConfig.configFile) {
448
+ rawConfigs.main = _mainConfig.config;
449
+ r.configFile = _mainConfig.configFile;
450
+ r._configFile = _mainConfig._configFile;
451
+ }
452
+ if (_mainConfig.meta) r.meta = _mainConfig.meta;
453
+ if (options.rcFile) {
454
+ const rcSources = [];
455
+ rcSources.push(read({
456
+ name: options.rcFile,
457
+ dir: options.cwd
458
+ }));
459
+ if (options.globalRc) {
460
+ const { findWorkspaceDir } = await import("./dist-DreZ24Sz.js");
461
+ const workspaceDir = await findWorkspaceDir(options.cwd).catch(() => {});
462
+ if (workspaceDir) rcSources.push(read({
463
+ name: options.rcFile,
464
+ dir: workspaceDir
465
+ }));
466
+ rcSources.push(readUserConfig({ name: options.rcFile }));
467
+ rcSources.push(read({
468
+ name: options.rcFile,
469
+ dir: homedir()
470
+ }));
471
+ }
472
+ rawConfigs.rc = _merger({}, ...rcSources);
473
+ }
474
+ if (options.packageJson) {
475
+ const keys = (Array.isArray(options.packageJson) ? options.packageJson : [typeof options.packageJson === "string" ? options.packageJson : options.name]).filter((t) => t && typeof t === "string");
476
+ const { readPackageJSON } = await import("./dist-DreZ24Sz.js");
477
+ const pkgJsonFile = await readPackageJSON(options.cwd).catch(() => {});
478
+ rawConfigs.packageJson = _merger({}, ...keys.map((key) => pkgJsonFile?.[key]));
479
+ }
480
+ const configs = {};
481
+ for (const key in rawConfigs) {
482
+ const value = rawConfigs[key];
483
+ configs[key] = await (typeof value === "function" ? value({
484
+ configs,
485
+ rawConfigs
486
+ }) : value);
487
+ }
488
+ if (Array.isArray(configs.main)) r.config = configs.main;
489
+ else {
490
+ r.config = _merger(configs.overrides, configs.main, configs.rc, configs.packageJson, configs.defaultConfig);
491
+ if (options.extend) {
492
+ await extendConfig(r.config, options);
493
+ r.layers = r.config._layers;
494
+ delete r.config._layers;
495
+ r.config = _merger(r.config, ...r.layers.map((e) => e.config));
496
+ }
497
+ }
498
+ r.layers = [...[
499
+ configs.overrides && {
500
+ config: configs.overrides,
501
+ configFile: void 0,
502
+ cwd: void 0
503
+ },
504
+ {
505
+ config: configs.main,
506
+ configFile: options.configFile,
507
+ cwd: options.cwd
508
+ },
509
+ configs.rc && {
510
+ config: configs.rc,
511
+ configFile: options.rcFile
512
+ },
513
+ configs.packageJson && {
514
+ config: configs.packageJson,
515
+ configFile: "package.json"
516
+ }
517
+ ].filter((l) => l && l.config), ...r.layers];
518
+ if (options.defaults) r.config = _merger(r.config, options.defaults);
519
+ if (options.omit$Keys) {
520
+ for (const key in r.config) if (key.startsWith("$")) delete r.config[key];
521
+ }
522
+ if (options.configFileRequired && !r._configFile) throw new Error(`Required config (${r.configFile}) cannot be resolved.`);
523
+ if (options.schema != null) r.config = await validateConfig(r.config, options.schema);
524
+ return r;
525
+ }
526
+ async function extendConfig(config, options) {
527
+ config._layers = config._layers || [];
528
+ if (!options.extend) return;
529
+ let keys = options.extend.extendKey;
530
+ if (typeof keys === "string") keys = [keys];
531
+ const extendSources = [];
532
+ for (const key of keys) {
533
+ extendSources.push(...(Array.isArray(config[key]) ? config[key] : [config[key]]).filter(Boolean));
534
+ delete config[key];
535
+ }
536
+ for (let extendSource of extendSources) {
537
+ const originalExtendSource = extendSource;
538
+ let sourceOptions = {};
539
+ if (extendSource.source) {
540
+ sourceOptions = extendSource.options || {};
541
+ extendSource = extendSource.source;
542
+ }
543
+ if (Array.isArray(extendSource)) {
544
+ sourceOptions = extendSource[1] || {};
545
+ extendSource = extendSource[0];
546
+ }
547
+ if (typeof extendSource !== "string") {
548
+ console.warn(`Cannot extend config from \`${JSON.stringify(originalExtendSource)}\` in ${options.cwd}`);
549
+ continue;
550
+ }
551
+ const _config = await resolveConfig$1(extendSource, options, sourceOptions);
552
+ if (!_config.config) {
553
+ console.warn(`Cannot extend config from \`${extendSource}\` in ${options.cwd}`);
554
+ continue;
555
+ }
556
+ await extendConfig(_config.config, {
557
+ ...options,
558
+ cwd: _config.cwd
559
+ });
560
+ config._layers.push(_config);
561
+ if (_config.config._layers) {
562
+ config._layers.push(..._config.config._layers);
563
+ delete _config.config._layers;
564
+ }
565
+ }
566
+ }
567
+ const GIGET_PREFIXES = [
568
+ "gh:",
569
+ "github:",
570
+ "gitlab:",
571
+ "bitbucket:",
572
+ "https://",
573
+ "http://"
574
+ ];
575
+ const NPM_PACKAGE_RE = /^(@[\da-z~-][\d._a-z~-]*\/)?[\da-z~-][\d._a-z~-]*($|\/.*)/;
576
+ async function resolveConfig$1(source, options, sourceOptions = {}) {
577
+ if (options.resolve) {
578
+ const res = await options.resolve(source, options);
579
+ if (res) return res;
580
+ }
581
+ const _merger = options.merger || defu;
582
+ const customProviderKeys = Object.keys(sourceOptions.giget?.providers || {}).map((key) => `${key}:`);
583
+ const gigetPrefixes = customProviderKeys.length > 0 ? [.../* @__PURE__ */ new Set([...customProviderKeys, ...GIGET_PREFIXES])] : GIGET_PREFIXES;
584
+ if (options.giget !== false && gigetPrefixes.some((prefix) => source.startsWith(prefix))) {
585
+ const { downloadTemplate } = await import("giget").catch((error) => {
586
+ throw new Error(`Extending config from \`${source}\` requires \`giget\` peer dependency to be installed.\n\nInstall it with: \`npx nypm i giget\``, { cause: error });
587
+ });
588
+ const { digest } = await import("./ohash-BjQY1cBb.js").then((n) => n.dist_exports);
589
+ const cloneName = source.replace(/\W+/g, "_").split("_").splice(0, 3).join("_") + "_" + digest(source).slice(0, 10).replace(/[-_]/g, "");
590
+ let cloneDir;
591
+ const localNodeModules = resolve$1(options.cwd, "node_modules");
592
+ const parentDir = dirname$1(options.cwd);
593
+ if (basename$1(parentDir) === ".c12") cloneDir = join$1(parentDir, cloneName);
594
+ else if (existsSync(localNodeModules)) cloneDir = join$1(localNodeModules, ".c12", cloneName);
595
+ else cloneDir = process.env.XDG_CACHE_HOME ? resolve$1(process.env.XDG_CACHE_HOME, "c12", cloneName) : resolve$1(homedir(), ".cache/c12", cloneName);
596
+ const install = sourceOptions.install ? defu(sourceOptions.install === true ? {} : sourceOptions.install, { ignoreWorkspace: true }) : false;
597
+ if (existsSync(cloneDir) && !install) await rm(cloneDir, { recursive: true });
598
+ source = (await downloadTemplate(source, {
599
+ dir: cloneDir,
600
+ install,
601
+ force: Boolean(install),
602
+ auth: sourceOptions.auth,
603
+ ...options.giget,
604
+ ...sourceOptions.giget
605
+ })).dir;
606
+ }
607
+ if (NPM_PACKAGE_RE.test(source)) source = tryResolve(source, options) || source;
608
+ const ext = extname$1(source);
609
+ const isDir = _isDirectory(resolve$1(options.cwd, source)) ?? (!ext || ext === basename$1(source));
610
+ const cwd = resolve$1(options.cwd, isDir ? source : dirname$1(source));
611
+ if (isDir) source = options.configFile;
612
+ const res = {
613
+ config: void 0,
614
+ configFile: void 0,
615
+ cwd,
616
+ source,
617
+ sourceOptions
618
+ };
619
+ res.configFile = tryResolve(resolve$1(cwd, source), options) || tryResolve(resolve$1(cwd, ".config", source.replace(/\.config$/, "")), options) || tryResolve(resolve$1(cwd, ".config", source), options) || source;
620
+ if (!existsSync(res.configFile)) return res;
621
+ res._configFile = res.configFile;
622
+ const configFileExt = extname$1(res.configFile) || "";
623
+ if (configFileExt in ASYNC_LOADERS) res.config = (await ASYNC_LOADERS[configFileExt]())(await readFile(res.configFile, "utf8"));
624
+ else {
625
+ const _resolveModule = options.resolveModule || ((mod) => mod.default || mod);
626
+ if (options.import) res.config = _resolveModule(await options.import(res.configFile));
627
+ else {
628
+ const _configURL = pathToFileURL(res.configFile);
629
+ _configURL.search = `_${++importCounter}`;
630
+ res.config = await import(_configURL.href).then(_resolveModule, async (error) => {
631
+ const { createJiti } = await import("jiti").catch(() => {
632
+ throw new Error(`Failed to load config file \`${res.configFile}\`: ${error?.message}. Hint install \`jiti\` for compatibility.`, { cause: error });
633
+ });
634
+ const jiti = createJiti(join$1(options.cwd || ".", options.configFile || "/"), {
635
+ interopDefault: true,
636
+ moduleCache: false,
637
+ extensions: [...SUPPORTED_EXTENSIONS],
638
+ ...options.jitiOptions
639
+ });
640
+ options.import = (id) => jiti.import(id);
641
+ return _resolveModule(await options.import(res.configFile));
642
+ });
643
+ }
644
+ }
645
+ if (typeof res.config === "function") res.config = await res.config(options.context);
646
+ if (res.config && typeof res.config === "object" && !Array.isArray(res.config) && !Object.isExtensible(res.config)) res.config = { ...res.config };
647
+ const envConfigs = (Array.isArray(options.envName) ? options.envName : [options.envName]).filter(Boolean).reverse().flatMap((envName) => [res.config.$env?.[envName], res.config["$" + envName]]).filter((c) => c && Object.keys(c).length > 0);
648
+ if (envConfigs.length > 0) res.config = (options.envMerger || _merger)({}, ...envConfigs, res.config);
649
+ res.meta = defu(res.sourceOptions.meta, res.config.$meta);
650
+ delete res.config.$meta;
651
+ if (res.sourceOptions.overrides) res.config = _merger(res.sourceOptions.overrides, res.config);
652
+ res.configFile = _normalize(res.configFile);
653
+ res.source = _normalize(res.source);
654
+ return res;
655
+ }
656
+ async function validateConfig(config, schema) {
657
+ if (typeof schema?.["~standard"]?.validate !== "function") throw new TypeError("Invalid `schema` option: expected a Standard Schema (https://standardschema.dev).");
658
+ const result = await schema["~standard"].validate(config);
659
+ if (result.issues) {
660
+ const messages = result.issues.map((issue) => {
661
+ const path = issue.path?.map((p) => String(typeof p === "object" ? p.key : p)).join(".");
662
+ return ` - ${path ? `${path}: ` : ""}${issue.message}`;
663
+ });
664
+ throw new Error(`Config validation failed (${schema["~standard"].vendor}):\n${messages.join("\n")}`, { cause: result.issues });
665
+ }
666
+ return result.value;
667
+ }
668
+ function tryResolve(id, options) {
669
+ const res = resolveModulePath(id, {
670
+ try: true,
671
+ from: pathToFileURL(join$1(options.cwd || ".", options.configFile || "/")),
672
+ suffixes: ["", "/index"],
673
+ extensions: SUPPORTED_EXTENSIONS,
674
+ cache: false
675
+ });
676
+ return res ? normalize$1(res) : void 0;
677
+ }
678
+ function _isDirectory(path) {
679
+ try {
680
+ return statSync(path).isDirectory();
681
+ } catch {
682
+ return null;
683
+ }
684
+ }
685
+ //#endregion
686
+ //#region src/cli/config-schema.ts
687
+ const strings = array(string());
688
+ const stringRecord = record(string(), string());
689
+ const privileges = array(pipe(string(), regex(/^(?:select|insert|update|delete|(?:select|insert|update)\s*\(\s*[a-z_][a-z0-9_$]*(?:\s*,\s*[a-z_][a-z0-9_$]*)*\s*\))$/, "Use select, insert, update or delete, or name columns such as \"update(title, body)\"")));
690
+ const pluginFlag = union([boolean(), record(string(), unknown())]);
691
+ const isGenerator = (value) => typeof value === "object" && value !== null && "name" in value && typeof value.name === "string" && "generate" in value && typeof value.generate === "function";
692
+ /**
693
+ * The top level of `better-supabase.config.*`. It rejects unknown keys and
694
+ * checks the leaves a typo or an old value breaks; nested objects the
695
+ * library reads loosely stay loose.
696
+ */
697
+ const moduleEntries = {
698
+ mode: optional(picklist([
699
+ "managed",
700
+ "adopt",
701
+ "custom"
702
+ ])),
703
+ schema: optional(string()),
704
+ tables: optional(record(string(), nullable(string()))),
705
+ columns: optional(record(string(), record(string(), nullable(string())))),
706
+ idType: optional(string()),
707
+ permissions: optional(stringRecord),
708
+ options: optional(record(string(), unknown())),
709
+ hooks: optional(strictObject({
710
+ schema: optional(string()),
711
+ functions: optional(stringRecord)
712
+ })),
713
+ events: optional(boolean()),
714
+ audit: optional(boolean()),
715
+ api: optional(union([string(), strictObject({
716
+ schema: string(),
717
+ functions: optional(strings)
718
+ })]))
719
+ };
720
+ const disabledRow = strictObject({
721
+ table: string(),
722
+ id: string(),
723
+ disabledAt: optional(string()),
724
+ status: optional(string()),
725
+ active: optional(strings)
726
+ });
727
+ const accessModule = strictObject({
728
+ ...moduleEntries,
729
+ model: optional(picklist([
730
+ "roles",
731
+ "catalog",
732
+ "provider",
733
+ "custom"
734
+ ])),
735
+ roles: optional(record(string(), strings)),
736
+ functions: optional(strictObject({
737
+ can: optional(string()),
738
+ tenantIdsWith: optional(string()),
739
+ isPlatform: optional(string()),
740
+ canUser: optional(string()),
741
+ canAssign: optional(string()),
742
+ canAssignFor: optional(string()),
743
+ permissionClaims: optional(string())
744
+ })),
745
+ platformClaim: optional(string()),
746
+ disabled: optional(strictObject({
747
+ tenant: optional(union([string(), disabledRow])),
748
+ user: optional(union([string(), disabledRow])),
749
+ userKey: optional(string())
750
+ })),
751
+ activeTenant: optional(union([picklist(["claim", "resolver"]), strictObject({
752
+ profileColumn: string(),
753
+ key: optional(string())
754
+ })]))
755
+ });
756
+ const scopeName = pipe(string(), regex(/^[a-z][a-z0-9_]*$/, "Use lower case letters, digits and _"));
757
+ const membershipScope = union([strictObject({ column: string() }), strictObject({ value: string() })]);
758
+ const authorization = strictObject({
759
+ apiVersion: literal(1),
760
+ name: string(),
761
+ scopes: array(strictObject({
762
+ name: scopeName,
763
+ idType: optional(picklist(SCOPE_ID_TYPES)),
764
+ parent: optional(string())
765
+ })),
766
+ tenantScope: scopeName,
767
+ functions: strictObject({
768
+ idsWith: string(),
769
+ isPlatform: string(),
770
+ idsWithFor: optional(string()),
771
+ isPlatformFor: optional(string()),
772
+ memberIds: optional(string()),
773
+ memberIdsFor: optional(string()),
774
+ canAssign: optional(string()),
775
+ canAssignFor: optional(string()),
776
+ permissionsFor: optional(string()),
777
+ canApprove: optional(string())
778
+ }),
779
+ requires: optional(array(strictObject({
780
+ function: string(),
781
+ args: optional(string()),
782
+ role: string()
783
+ }))),
784
+ permissions: optional(array(strictObject({
785
+ key: string(),
786
+ sqlComplete: optional(boolean()),
787
+ scopes: optional(strings)
788
+ }))),
789
+ memberships: optional(array(strictObject({
790
+ table: string(),
791
+ userColumn: string(),
792
+ scope: membershipScope,
793
+ idColumn: string()
794
+ }))),
795
+ suspension: optional(strictObject({
796
+ user: optional(disabledRow),
797
+ tenant: optional(disabledRow)
798
+ })),
799
+ roleSources: optional(array(strictObject({
800
+ table: string(),
801
+ role: strictObject({
802
+ column: string(),
803
+ through: strictObject({
804
+ table: string(),
805
+ id: string(),
806
+ column: string()
807
+ })
808
+ })
809
+ }))),
810
+ decidingColumns: optional(array(pipe(string(), regex(/^[A-Za-z_][\w$]*\.[A-Za-z_][\w$]*\.[A-Za-z_][\w$]*$/, "Use schema.table.column")))),
811
+ tokenHook: optional(strictObject({
812
+ function: string(),
813
+ tenantClaim: optional(string()),
814
+ ownedClaims: pipe(strings, minLength(1, "List at least one claim")),
815
+ registeredClaims: optional(array(strictObject({
816
+ name: string(),
817
+ function: string()
818
+ }))),
819
+ budget: optional(strictObject({
820
+ claims: strings,
821
+ bytes: pipe(number(), integer("Use a whole number of bytes"), minValue(1, "Use at least 1 byte")),
822
+ truncatedClaim: optional(string())
823
+ })),
824
+ markers: optional(strictObject({
825
+ hook: optional(string()),
826
+ grants: optional(string())
827
+ })),
828
+ grantsCommand: optional(string())
829
+ })),
830
+ approvals: optional(strictObject({ distinctApprover: optional(boolean()) })),
831
+ problems: optional(strings)
832
+ });
833
+ const checkedAuthorization = pipe(authorization, rawCheck(({ dataset, addIssue }) => {
834
+ if (!dataset.typed) return;
835
+ for (const problem of scopeProblems(dataset.value)) addIssue({ message: problem });
836
+ }));
837
+ const ConfigSchema = strictObject({
838
+ $schema: optional(string()),
839
+ source: optional(strictObject({
840
+ dbUrl: optional(string()),
841
+ projectRef: optional(string()),
842
+ accessToken: optional(string()),
843
+ snapshot: optional(string())
844
+ })),
845
+ schemas: optional(strings),
846
+ casing: optional(picklist(["snake", "camel"])),
847
+ tables: optional(record(string(), strictObject({
848
+ casing: optional(picklist(["snake", "camel"])),
849
+ exclude: optional(boolean()),
850
+ serviceRole: optional(boolean()),
851
+ relations: optional(stringRecord),
852
+ insertOptional: optional(strings)
853
+ }))),
854
+ output: optional(string()),
855
+ postgrestVersion: optional(string()),
856
+ json: optional(record(string(), unknown())),
857
+ codecs: optional(strictObject({
858
+ timestamptz: optional(picklist(["string", "instant"])),
859
+ int8: optional(picklist([
860
+ "number",
861
+ "string",
862
+ "bigint"
863
+ ])),
864
+ numeric: optional(picklist(["number", "string"]))
865
+ })),
866
+ relations: optional(strictObject({ nullableUnderRls: optional(boolean()) })),
867
+ sensitive: optional(strings),
868
+ storagePaths: optional(stringRecord),
869
+ functions: optional(record(string(), strictObject({ notNull: optional(union([literal(true), strings])) }))),
870
+ expose: optional(record(string(), union([
871
+ privileges,
872
+ strictObject({
873
+ anon: optional(privileges),
874
+ authenticated: optional(privileges),
875
+ serviceRole: optional(privileges)
876
+ }),
877
+ strictObject({
878
+ execute: array(picklist(["anon", "authenticated"])),
879
+ serviceRole: optional(boolean())
880
+ })
881
+ ]))),
882
+ readSets: optional(strings),
883
+ generators: optional(array(custom(isGenerator, "must be a generator: { name, generate(input) }"))),
884
+ plugins: optional(strictObject({
885
+ timestamps: optional(pluginFlag),
886
+ softDelete: optional(pluginFlag),
887
+ tenant: optional(pluginFlag),
888
+ actor: optional(pluginFlag)
889
+ })),
890
+ claims: optional(strictObject({
891
+ tenant: optional(string()),
892
+ scope: optional(string()),
893
+ features: optional(string()),
894
+ memberships: optional(string())
895
+ })),
896
+ buckets: optional(record(string(), record(string(), unknown()))),
897
+ topics: optional(stringRecord),
898
+ realtime: optional(strictObject({
899
+ tables: optional(strings),
900
+ global: optional(strings),
901
+ users: optional(stringRecord),
902
+ policies: optional(strictObject({
903
+ from: strings,
904
+ output: string()
905
+ }))
906
+ })),
907
+ entitlements: optional(strictObject({
908
+ customer: optional(string()),
909
+ key: optional(string()),
910
+ memberships: optional(picklist(["tenant", "provider"])),
911
+ source: optional(union([picklist(["stripe-sync", "custom"]), strictObject({ plans: strictObject({
912
+ subscriptions: strictObject({
913
+ table: string(),
914
+ tenant: string(),
915
+ plan: string(),
916
+ status: optional(string()),
917
+ activeStatuses: optional(strings)
918
+ }),
919
+ features: strictObject({
920
+ table: string(),
921
+ plan: string(),
922
+ feature: string(),
923
+ included: optional(string()),
924
+ value: optional(string())
925
+ })
926
+ }) })])),
927
+ claim: optional(union([literal(false), strictObject({
928
+ maxTenants: optional(number()),
929
+ keys: optional(stringRecord)
930
+ })]))
931
+ })),
932
+ authorization: optional(checkedAuthorization),
933
+ vectorSearch: optional(record(string(), union([string(), strictObject({
934
+ column: string(),
935
+ distance: optional(picklist([
936
+ "cosine",
937
+ "l2",
938
+ "inner_product"
939
+ ])),
940
+ type: optional(picklist(["vector", "halfvec"])),
941
+ key: optional(string()),
942
+ hybrid: optional(strictObject({
943
+ tsvector: string(),
944
+ config: optional(string()),
945
+ k: optional(number())
946
+ })),
947
+ boost: optional(string()),
948
+ prefilter: optional(strings),
949
+ predicate: optional(string()),
950
+ boostMode: optional(picklist(["multiply", "add"])),
951
+ order: optional(string())
952
+ })]))),
953
+ sql: optional(strictObject({
954
+ dir: optional(string()),
955
+ prefix: optional(string()),
956
+ testsDir: optional(string()),
957
+ modules: optional(lazy((input) => Array.isArray(input) ? strings : objectWithRest({ access: optional(accessModule) }, strictObject(moduleEntries))))
958
+ })),
959
+ seed: optional(strictObject({
960
+ entry: optional(string()),
961
+ output: optional(string())
962
+ })),
963
+ openapi: optional(strictObject({
964
+ entry: optional(string()),
965
+ output: optional(string())
966
+ })),
967
+ doctor: optional(strictObject({
968
+ ignore: optional(strings),
969
+ strict: optional(boolean()),
970
+ sources: optional(strings),
971
+ policyHelperLimit: optional(number()),
972
+ claimsLimit: optional(number())
973
+ }))
974
+ });
975
+ /** Each issue as `path: message`, the path in config keys. */
976
+ function configIssues(value) {
977
+ if (typeof value === "object" && value !== null && "authorization" in value) {
978
+ const provider = value.authorization;
979
+ const problem = typeof provider === "object" && provider !== null ? providerApiProblem(provider) : void 0;
980
+ if (problem !== void 0) {
981
+ const { authorization: _, ...rest } = value;
982
+ return [`authorization.apiVersion: ${problem}`, ...configIssues(rest)];
983
+ }
984
+ }
985
+ const result = safeParse(ConfigSchema, value);
986
+ if (result.success) return [];
987
+ return result.issues.map((issue) => {
988
+ const path = getDotPath(issue);
989
+ return path ? `${path}: ${issue.message}` : issue.message;
990
+ });
991
+ }
992
+ //#endregion
993
+ //#region src/cli/config.ts
994
+ const CONFIG_FILES = [
995
+ "better-supabase.config.ts",
996
+ "better-supabase.config.mts",
997
+ "better-supabase.config.js",
998
+ "better-supabase.config.mjs",
999
+ "better-supabase.config.json"
1000
+ ];
1001
+ function configIn(dir) {
1002
+ for (const name of CONFIG_FILES) {
1003
+ const path = join(dir, name);
1004
+ if (existsSync(path)) return path;
1005
+ }
1006
+ }
1007
+ function findConfig(cwd, explicit) {
1008
+ if (explicit) return resolve(cwd, explicit);
1009
+ return configIn(cwd);
1010
+ }
1011
+ /**
1012
+ * `--config`, else the first `better-supabase.config.*` at or above `cwd`,
1013
+ * within the same `.git` boundary as the Supabase project search.
1014
+ */
1015
+ function discoverConfig(cwd, explicit) {
1016
+ if (explicit) return resolve(cwd, explicit);
1017
+ const dir = findUp(cwd, (candidate) => configIn(candidate) !== void 0);
1018
+ return dir === void 0 ? void 0 : configIn(dir);
1019
+ }
1020
+ /** The named export, then `default`, of a project module. */
1021
+ async function importExport(path, name) {
1022
+ if (!existsSync(path)) throw new Error(`Module not found: ${path}`);
1023
+ const loaded = await importFresh(path);
1024
+ return loaded[name] ?? loaded["default"];
1025
+ }
1026
+ function isConfig(value) {
1027
+ return configIssues(value).length === 0;
1028
+ }
1029
+ /**
1030
+ * Loads `better-supabase.config.*` with c12 and checks it against the config
1031
+ * schema. c12 imports `.ts` natively (Node 24 strips the types), so no
1032
+ * loader is needed; rc files, `package.json`, env overrides and `extends`
1033
+ * are off so the one file is the whole config. A discovered file sets the
1034
+ * project root to its own directory; `--config` keeps `cwd` as the root.
1035
+ */
1036
+ async function loadConfig(cwd, explicit) {
1037
+ const path = discoverConfig(cwd, explicit);
1038
+ if (!path) return resolveConfig({}, cwd);
1039
+ if (!existsSync(path)) throw new CliError("config_not_found", `Config file not found: ${path}`);
1040
+ const { config } = await loadConfig$1({
1041
+ cwd,
1042
+ configFile: path,
1043
+ rcFile: false,
1044
+ globalRc: false,
1045
+ packageJson: false,
1046
+ dotenv: false,
1047
+ envName: false,
1048
+ extend: false,
1049
+ giget: false
1050
+ });
1051
+ if (!isConfig(config)) {
1052
+ const issues = configIssues(config);
1053
+ throw new CliError("config_invalid", `${display(cwd, path)} is not a valid config:\n${issues.map((issue) => ` ${issue}`).join("\n")}`, { issues });
1054
+ }
1055
+ return resolveConfig(config, explicit ? cwd : dirname(path));
1056
+ }
1057
+ /** `[db] port` or `[api] port` from `supabase/config.toml`. */
1058
+ async function readSupabasePort(root, section) {
1059
+ const toml = await readSupabaseToml(root);
1060
+ return toml ? tomlNumber(toml.document, [section, "port"]) : void 0;
1061
+ }
1062
+ /** The connection string piped in for `--db-url-stdin`, when it was passed. */
1063
+ async function stdinDatabaseUrl(enabled, io) {
1064
+ if (enabled !== true) return void 0;
1065
+ const url = (await io.stdin?.())?.trim();
1066
+ if (!url) throw new CliError("missing_value", "--db-url-stdin read nothing from stdin. Pipe the connection string: printf %s \"$URL\" | better-supabase <command> --db-url-stdin", { flag: "--db-url-stdin" });
1067
+ return url;
1068
+ }
1069
+ /** Connection string: stdin, config, `$DATABASE_URL`, then the local stack. */
1070
+ async function databaseUrl(config, env, fromStdin) {
1071
+ if (fromStdin) return fromStdin;
1072
+ if (config.source.dbUrl) return config.source.dbUrl;
1073
+ if (env.DATABASE_URL) return env.DATABASE_URL;
1074
+ return `postgresql://postgres:postgres@127.0.0.1:${await readSupabasePort(config.root, "db") ?? 54322}/postgres`;
1075
+ }
1076
+ //#endregion
1077
+ export { loadConfig as a, importExport as i, discoverConfig as n, readSupabasePort as o, findConfig as r, stdinDatabaseUrl as s, databaseUrl as t };