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,59 @@
1
+ import { a as AiMessage, p as AiToolApprovalPart } from "./message-CfDoR0Y6.js";
2
+ import { ModelMessage, UIMessage } from "ai";
3
+ //#region src/ai-sdk/messages.d.ts
4
+ /** The `format` the chat tree stores next to an AI SDK message it keeps as is. */
5
+ declare const AI_SDK_UI_FORMAT = "ai-sdk-ui";
6
+ /** The output a denied tool call gets in the canonical history. */
7
+ declare const DENIED_TOOL_OUTPUT = "The tool call was denied.";
8
+ /** Whether `value` has the shape of an AI SDK `UIMessage`. */
9
+ declare function isUIMessage(value: unknown): value is UIMessage;
10
+ /**
11
+ * The canonical form of an AI SDK `UIMessage`. Tool parts become a
12
+ * `tool-call`, then a `tool-approval` and a `tool-result` as far as the
13
+ * call got; parts with no canonical counterpart become `data` parts named
14
+ * `ui.<type>`.
15
+ */
16
+ declare function fromUIMessage(message: UIMessage): AiMessage;
17
+ /**
18
+ * The AI SDK form of a canonical message: the stored native message when the
19
+ * tree kept one (`format: "ai-sdk-ui"`), otherwise a conversion. A `tool`
20
+ * message becomes an assistant message.
21
+ */
22
+ declare function toUIMessage(message: AiMessage): UIMessage;
23
+ /**
24
+ * Converts a history. Tool results and approvals in later messages, such as
25
+ * the `tool` messages of other SDKs, update the tool part of the assistant
26
+ * message that made the call.
27
+ */
28
+ declare function toUIMessages(messages: readonly AiMessage[]): UIMessage[];
29
+ /** A source a model step cited, as `StepResult.sources` holds it. */
30
+ interface ModelSource {
31
+ readonly sourceType: "url" | "document";
32
+ readonly id: string;
33
+ readonly url?: string;
34
+ readonly title?: string;
35
+ readonly mediaType?: string;
36
+ readonly providerMetadata?: unknown;
37
+ }
38
+ /** An approval decision the messages may no longer carry. */
39
+ interface ModelApproval {
40
+ readonly approvalId: string;
41
+ readonly toolCallId: string;
42
+ readonly state: AiToolApprovalPart["state"];
43
+ readonly reason?: string;
44
+ }
45
+ interface FromModelMessagesOptions {
46
+ /** The sources the steps cited; model messages don't keep them. */
47
+ readonly sources?: readonly ModelSource[];
48
+ /** Decisions to apply over the approval parts the messages hold. */
49
+ readonly approvals?: readonly ModelApproval[];
50
+ }
51
+ /**
52
+ * One answer in the canonical form, from the model messages an agent added
53
+ * in a turn (`result.messages` after the history). Each assistant message
54
+ * starts a step whose id is `<id>:<n>`, so saving the answer again after
55
+ * another step updates the same message.
56
+ */
57
+ declare function fromModelMessages(id: string, messages: readonly ModelMessage[], options?: FromModelMessagesOptions): AiMessage;
58
+ //#endregion
59
+ export { ModelSource as a, isUIMessage as c, ModelApproval as i, toUIMessage as l, DENIED_TOOL_OUTPUT as n, fromModelMessages as o, FromModelMessagesOptions as r, fromUIMessage as s, AI_SDK_UI_FORMAT as t, toUIMessages as u };
@@ -0,0 +1,54 @@
1
+ import { b as DbError } from "./result-D7y2fT87.js";
2
+ //#region src/auth/impersonation.d.ts
3
+ /** The admin acting as the user, from the RFC 8693 `act` claim. */
4
+ interface Impersonator {
5
+ /** `act.kind`: a support session or an impersonated session. */
6
+ readonly kind: "support" | "impersonation";
7
+ readonly id: string;
8
+ readonly reason?: string;
9
+ /** The support session, when the admin started one (`act.session_id`). */
10
+ readonly sessionId?: string;
11
+ /** Whether the support session blocks writes (`act.read_only`). */
12
+ readonly readOnly?: boolean;
13
+ }
14
+ /** `actingAs(userId, claims, { actor, reason })`: who acts, and why (recorded by the audit module). */
15
+ interface ImpersonationOptions {
16
+ readonly actor: string;
17
+ readonly reason: string;
18
+ }
19
+ /**
20
+ * The admin in `claims.act`: a support session or an impersonated session
21
+ * (`actorOf` reads the same level, so the two always agree). `undefined`
22
+ * for a normal session, an OAuth client or agent chain, and an invalid `act`.
23
+ */
24
+ declare function impersonatorOf(claims: Readonly<Record<string, unknown>>): Impersonator | undefined;
25
+ //#endregion
26
+ //#region src/auth/mfa.d.ts
27
+ /** Authenticator assurance level: `aal2` once a second factor is verified in this session. */
28
+ type Aal = "aal1" | "aal2";
29
+ /** One way the user proved who they are in this session (the JWT `amr` claim). */
30
+ interface AmrEntry {
31
+ /** `password`, `otp`, `oauth`, `totp`, `sso/saml`, `anonymous`, ... */
32
+ readonly method: string;
33
+ /** Seconds since epoch. */
34
+ readonly timestamp: number;
35
+ /** SSO provider id, for `sso/saml`. */
36
+ readonly provider?: string;
37
+ }
38
+ /** The session's assurance level from its claims; anything but `aal2` reads as `aal1`. */
39
+ declare function aalOf(claims: Readonly<Record<string, unknown>>): Aal;
40
+ /** The `amr` claim as typed entries, skipping malformed ones. */
41
+ declare function amrOf(claims: Readonly<Record<string, unknown>>): readonly AmrEntry[];
42
+ /**
43
+ * `undefined` when a user session meets `required`; otherwise a `forbidden`
44
+ * error with `required` and code `INSUFFICIENT_AAL`, for the client to start
45
+ * an MFA challenge. Non-user sessions pass: `allow` decides about them.
46
+ */
47
+ declare function checkAal(auth: {
48
+ readonly kind: "user";
49
+ readonly claims: object;
50
+ } | {
51
+ readonly kind: string;
52
+ }, required: Aal): DbError | undefined;
53
+ //#endregion
54
+ export { checkAal as a, impersonatorOf as c, amrOf as i, AmrEntry as n, ImpersonationOptions as o, aalOf as r, Impersonator as s, Aal as t };
@@ -0,0 +1,192 @@
1
+ //#region src/config/modules.d.ts
2
+ /**
3
+ * `sql.modules` in `better-supabase.config.ts`: how each SQL module maps onto
4
+ * the app's database. A module's contract (the functions other modules and
5
+ * the TypeScript side call) stays the same in every mode; only the tables
6
+ * behind it change.
7
+ */
8
+ /**
9
+ * `managed`: the module owns its tables. `adopt`: the module writes its functions
10
+ * and views over tables the app already has (`tables` and `columns`), never
11
+ * `create table`. `custom`: the app implements the contract functions itself;
12
+ * the module writes nothing and doctor checks the signatures (BS307).
13
+ */
14
+ type ModuleMode = "managed" | "adopt" | "custom";
15
+ /** Options every module takes. */
16
+ interface ModuleConfig {
17
+ readonly mode?: ModuleMode;
18
+ /** Schema of the module's functions and managed tables. Defaults to `better_supabase`. */
19
+ readonly schema?: string;
20
+ /**
21
+ * Logical table to `table` or `schema.table`, e.g.
22
+ * `{ memberships: 'public.organization_users' }`. An unqualified name is in
23
+ * `schema`. `null` marks an optional table the app doesn't have.
24
+ */
25
+ readonly tables?: Readonly<Record<string, string | null>>;
26
+ /**
27
+ * Logical table to logical column to column name, e.g.
28
+ * `{ memberships: { tenant: 'organization_id', role: 'role_id' } }`.
29
+ * `null` marks an optional column the adopted table doesn't have.
30
+ */
31
+ readonly columns?: Readonly<Record<string, Readonly<Record<string, string | null>>>>;
32
+ /** Type of tenant ids: `uuid` (default), `text`, `bigint` or `integer`. */
33
+ readonly idType?: string;
34
+ /**
35
+ * Module action to permission key, checked through the access contract, e.g.
36
+ * `{ invite: 'organization.members.invite' }`.
37
+ */
38
+ readonly permissions?: Readonly<Record<string, string>>;
39
+ /** Module-specific options; each module's docs page lists them. */
40
+ readonly options?: Readonly<Record<string, unknown>>;
41
+ /**
42
+ * The app's optional `before_*` and `after_*` functions the module calls
43
+ * when they exist, e.g. `after_organization_create(organization, user)`. They are
44
+ * looked up in `schema` (default `public`); `functions` maps a hook name
45
+ * to another function, e.g. `{ after_organization_create: 'app.seed_organization' }`.
46
+ */
47
+ readonly hooks?: {
48
+ readonly schema?: string;
49
+ readonly functions?: Readonly<Record<string, string>>;
50
+ };
51
+ /**
52
+ * Whether the module writes its events to the outbox (`emit_event`) when
53
+ * the `outbox` module is installed. Defaults to true.
54
+ */
55
+ readonly events?: boolean;
56
+ /**
57
+ * Whether the module writes its actions to the audit log (`audit_event`)
58
+ * when the `audit` module is installed. Defaults to true.
59
+ */
60
+ readonly audit?: boolean;
61
+ /**
62
+ * A schema for the Data API, such as `api`: the module writes a
63
+ * `security invoker` wrapper there for each of its functions that `anon`
64
+ * or `authenticated` may execute (or only those in `functions`), so
65
+ * `rpcTransport(supabase, { schema: "api" })` reaches them without
66
+ * exposing the module schema (doctor BS312).
67
+ */
68
+ readonly api?: string | {
69
+ readonly schema: string;
70
+ readonly functions?: readonly string[];
71
+ };
72
+ }
73
+ /**
74
+ * Where the active tenant of a request comes from. Every source counts only
75
+ * while the caller is a member, so a stale claim or setting grants nothing.
76
+ */
77
+ type ActiveTenantSource = "claim" | "resolver" | {
78
+ readonly profileColumn: string;
79
+ readonly key?: string;
80
+ };
81
+ /** URL tenancy: the tenant comes from the request (a slug), not a stored setting. */
82
+ declare const DEFAULT_ACTIVE_TENANT: ActiveTenantSource;
83
+ /**
84
+ * The access contract every module checks permissions through:
85
+ * `can(scope, id, permission)`, `tenant_ids_with(permission)`,
86
+ * `is_platform(permission)` and `can_user(user, scope, id, permission)`.
87
+ */
88
+ /**
89
+ * A table whose row says whether a tenant or a user is active. Needs
90
+ * `disabledAt`, `status` with `active`, or both.
91
+ */
92
+ interface DisabledRow {
93
+ /** `schema.table`. */
94
+ readonly table: string;
95
+ /** The column holding the tenant id or the user id. */
96
+ readonly id: string;
97
+ /** A nullable timestamp column; a row with a value is disabled. */
98
+ readonly disabledAt?: string;
99
+ /** A status column; only a row whose value is in `active` is active. */
100
+ readonly status?: string;
101
+ readonly active?: readonly string[];
102
+ }
103
+ interface AccessModuleConfig extends ModuleConfig {
104
+ /**
105
+ * `roles`: a fixed role list from `roles` (the default). `catalog`: role,
106
+ * permission and override tables (`tables.roles`, `permissions`,
107
+ * `rolePermissions`, `overrides`, `platformAssignments`). `provider`: the
108
+ * functions of the config's `authorization` provider. `custom`:
109
+ * expression templates in `functions`.
110
+ */
111
+ readonly model?: "roles" | "catalog" | "provider" | "custom";
112
+ /**
113
+ * `roles` model: role name to permission keys. `*` grants everything and
114
+ * `prefix.*` a prefix. Defaults to owner, admin, member and viewer.
115
+ */
116
+ readonly roles?: Readonly<Record<string, readonly string[]>>;
117
+ /**
118
+ * `custom` model: SQL expressions with `{scope}`, `{id}`, `{permission}`
119
+ * and `{user}` placeholders, e.g.
120
+ * `{ can: 'public.authorize_scope({scope}::public.scope_type, {id}, {permission})' }`.
121
+ */
122
+ readonly functions?: {
123
+ readonly can?: string;
124
+ readonly tenantIdsWith?: string;
125
+ readonly isPlatform?: string;
126
+ readonly canUser?: string;
127
+ /**
128
+ * `{tenant}` and `{role}`: whether the caller may assign the role.
129
+ * Required by the `custom` model. The `provider` model defaults to the
130
+ * provider's `canAssign`; without either, only the service role assigns
131
+ * roles unless the `tenant` module is installed, and doctor BS411 warns.
132
+ */
133
+ readonly canAssign?: string;
134
+ /**
135
+ * `{user}`, `{tenant}` and `{role}`: whether that user may assign the
136
+ * role, for SQL that acts later for a stored user (an invitation accept
137
+ * checking the inviter again), as `can_assign_as`. The `provider` model
138
+ * defaults to the provider's `canAssignFor`.
139
+ */
140
+ readonly canAssignFor?: string;
141
+ /** `{user}`: the permission claim for the access token hook. */
142
+ readonly permissionClaims?: string;
143
+ };
144
+ /**
145
+ * `roles` model: the JWT claim holding the caller's platform permission
146
+ * keys (an array). Defaults to `platform_permissions`.
147
+ */
148
+ readonly platformClaim?: string;
149
+ /**
150
+ * What disables a tenant or a user. A string is a column that disables
151
+ * when set, as `schema.table.column`, keyed by the table's `id` (tenant)
152
+ * or the column named in `userKey` (user). An object is an active row:
153
+ * only a row whose `disabledAt` is null and whose `status` is in `active`
154
+ * is active, and a missing row counts as disabled. Disabled tenants and
155
+ * users get no permissions. Under the `provider` model both default to the
156
+ * provider's `suspension`.
157
+ */
158
+ readonly disabled?: {
159
+ readonly tenant?: string | DisabledRow;
160
+ readonly user?: string | DisabledRow;
161
+ readonly userKey?: string;
162
+ };
163
+ readonly activeTenant?: ActiveTenantSource;
164
+ }
165
+ /** `sql.modules` in the config, keyed by module name. */
166
+ interface ModulesConfig {
167
+ readonly access?: AccessModuleConfig;
168
+ /** `AccessModuleConfig` is listed so an `access` literal passes the excess-property check. */
169
+ readonly [module: string]: ModuleConfig | AccessModuleConfig | undefined;
170
+ }
171
+ /** A module's config with defaults applied. */
172
+ interface ResolvedModule {
173
+ readonly mode: ModuleMode;
174
+ readonly schema: string;
175
+ readonly tables: Readonly<Record<string, string | null>>;
176
+ readonly columns: Readonly<Record<string, Readonly<Record<string, string | null>>>>;
177
+ readonly idType?: string;
178
+ readonly permissions: Readonly<Record<string, string>>;
179
+ readonly options: Readonly<Record<string, unknown>>;
180
+ readonly hooks: {
181
+ readonly schema: string;
182
+ readonly functions: Readonly<Record<string, string>>;
183
+ };
184
+ readonly events: boolean;
185
+ readonly audit: boolean;
186
+ readonly api?: {
187
+ readonly schema: string;
188
+ readonly functions?: readonly string[];
189
+ };
190
+ }
191
+ //#endregion
192
+ export { ModuleConfig as a, ResolvedModule as c, DisabledRow as i, ActiveTenantSource as n, ModuleMode as o, DEFAULT_ACTIVE_TENANT as r, ModulesConfig as s, AccessModuleConfig as t };
@@ -0,0 +1,228 @@
1
+ import { t as DEFAULT_CLAIMS } from "./claims-PqzCxaTD.js";
2
+ //#region src/config/authorization.ts
3
+ /**
4
+ * The error for a provider built for another API version, or `undefined`
5
+ * for version 1.
6
+ */
7
+ function providerApiProblem(provider) {
8
+ const version = provider.apiVersion;
9
+ if (version === 1) return void 0;
10
+ return `authorization "${typeof provider.name === "string" ? provider.name : "provider"}" targets authorization provider API ${String(version)}; this better-supabase supports 1. Upgrade better-supabase or use a release of the provider for API 1.`;
11
+ }
12
+ //#endregion
13
+ //#region src/config/config.ts
14
+ /** The JSON Schema document for a `json[...].schema` entry. */
15
+ function resolveJsonSchema(source) {
16
+ const standard = source["~standard"];
17
+ if (standard === void 0) return source;
18
+ const jsonSchema = standard.jsonSchema;
19
+ if (typeof jsonSchema?.input !== "function") throw new TypeError("json[...].schema: this Standard Schema library does not implement Standard JSON Schema; pass a JSON Schema object instead");
20
+ return jsonSchema.input({ target: "draft-2020-12" });
21
+ }
22
+ function entitlementsOf(config = {}, provider) {
23
+ const customer = config.customer;
24
+ const dot = customer?.lastIndexOf(".") ?? -1;
25
+ if (customer !== void 0 && dot <= 0) throw new TypeError(`entitlements.customer must be "table.column", got "${customer}"`);
26
+ return {
27
+ ...customer === void 0 ? {} : {
28
+ table: customer.slice(0, dot),
29
+ column: customer.slice(dot + 1)
30
+ },
31
+ key: config.key ?? "id",
32
+ memberships: config.memberships ?? (provider ? "provider" : "tenant"),
33
+ source: config.source ?? "stripe-sync",
34
+ ...config.claim === void 0 ? {} : { claim: config.claim }
35
+ };
36
+ }
37
+ function vectorSearchOf(config = {}) {
38
+ return Object.entries(config).map(([table, entry]) => typeof entry === "string" ? {
39
+ table,
40
+ column: entry,
41
+ distance: "cosine"
42
+ } : {
43
+ table,
44
+ column: entry.column,
45
+ distance: entry.distance ?? "cosine",
46
+ ...entry.type === void 0 ? {} : { type: entry.type },
47
+ ...entry.key === void 0 ? {} : { key: entry.key },
48
+ ...entry.hybrid === void 0 ? {} : { hybrid: entry.hybrid },
49
+ ...entry.boost === void 0 ? {} : { boost: entry.boost },
50
+ ...entry.prefilter === void 0 ? {} : { prefilter: entry.prefilter },
51
+ ...entry.predicate === void 0 ? {} : { predicate: entry.predicate },
52
+ ...entry.boostMode === void 0 ? {} : { boostMode: entry.boostMode },
53
+ ...entry.order === void 0 ? {} : { order: entry.order }
54
+ });
55
+ }
56
+ function sqlModulesOf(config = []) {
57
+ if (isModuleList(config)) return {
58
+ modules: {},
59
+ moduleNames: config
60
+ };
61
+ return {
62
+ modules: config,
63
+ moduleNames: Object.keys(config)
64
+ };
65
+ }
66
+ function isModuleList(config) {
67
+ return Array.isArray(config);
68
+ }
69
+ const CONFIG_SCHEMA_URL = "https://unpkg.com/better-supabase/schemas/config-v1.json";
70
+ /** Identity helper that types `better-supabase.config.ts`. */
71
+ function defineConfig(config) {
72
+ return config;
73
+ }
74
+ function pick(value, defaults) {
75
+ if (value === void 0 || value === false) return void 0;
76
+ if (value === true) return defaults;
77
+ return {
78
+ ...defaults,
79
+ ...value
80
+ };
81
+ }
82
+ const ALL_PRIVILEGES = [
83
+ "select",
84
+ "insert",
85
+ "update",
86
+ "delete"
87
+ ];
88
+ const isFunctionKey = (key) => key.endsWith(")");
89
+ const EXPOSE_PRIVILEGE = /^(?:select|insert|update|delete|(?:select|insert|update)\s*\(\s*[a-z_][a-z0-9_$]*(?:\s*,\s*[a-z_][a-z0-9_$]*)*\s*\))$/;
90
+ function checkedPrivileges(key, privileges) {
91
+ for (const privilege of privileges) {
92
+ const value = privilege;
93
+ if (typeof value !== "string" || !EXPOSE_PRIVILEGE.test(value)) throw new TypeError(`expose.${key}: "${String(value)}" is not a privilege. Use select, insert, update or delete, or name columns such as "update(title, body)"`);
94
+ }
95
+ return privileges;
96
+ }
97
+ function resolveExpose(key, entry) {
98
+ if (Array.isArray(entry)) return {
99
+ anon: [],
100
+ authenticated: checkedPrivileges(key, entry),
101
+ serviceRole: ALL_PRIVILEGES
102
+ };
103
+ if ("execute" in entry) throw new TypeError(`expose.${key}: \`execute\` is for functions; key it by its signature, such as ${key}(text)`);
104
+ const roles = entry;
105
+ return {
106
+ anon: checkedPrivileges(key, roles.anon ?? []),
107
+ authenticated: checkedPrivileges(key, roles.authenticated ?? []),
108
+ serviceRole: checkedPrivileges(key, roles.serviceRole ?? ALL_PRIVILEGES)
109
+ };
110
+ }
111
+ function resolveExposeFunction(key, entry) {
112
+ if (Array.isArray(entry) || !("execute" in entry)) throw new TypeError(`expose.${key}: a function takes { execute: ["authenticated"] }, not table privileges`);
113
+ return [...entry.execute, ...entry.serviceRole === false ? [] : ["service_role"]];
114
+ }
115
+ function generatorsOf(generators) {
116
+ for (const generator of generators ?? []) {
117
+ const version = generator.apiVersion;
118
+ if (version !== void 0 && version !== 1) throw new TypeError(`generator "${generator.name}" targets generator API ${String(version)}; this better-supabase supports 1. Upgrade better-supabase or use a release of the generator for API 1.`);
119
+ }
120
+ return generators ?? [];
121
+ }
122
+ function authorizationOf(provider) {
123
+ const problem = providerApiProblem(provider);
124
+ if (problem !== void 0) throw new TypeError(problem);
125
+ return provider;
126
+ }
127
+ /** Applies defaults. Paths stay relative to `root`. */
128
+ function resolveConfig(config, root) {
129
+ const output = config.output ?? "src/lib/supabase/generated.ts";
130
+ return {
131
+ root,
132
+ source: config.source ?? {},
133
+ schemas: config.schemas ?? ["public"],
134
+ casing: config.casing ?? "snake",
135
+ tables: config.tables ?? {},
136
+ output,
137
+ databaseTypesOutput: output.replace(/[^/]+$/, "database.types.ts"),
138
+ postgrestVersion: config.postgrestVersion ?? "13",
139
+ json: config.json ?? {},
140
+ codecs: {
141
+ timestamptz: config.codecs?.timestamptz ?? "string",
142
+ int8: config.codecs?.int8 ?? "number",
143
+ numeric: config.codecs?.numeric ?? "number"
144
+ },
145
+ relations: { nullableUnderRls: config.relations?.nullableUnderRls ?? false },
146
+ sensitive: config.sensitive ?? [],
147
+ storagePaths: config.storagePaths ?? {},
148
+ functions: config.functions ?? {},
149
+ expose: Object.fromEntries(Object.entries(config.expose ?? {}).filter(([key]) => !isFunctionKey(key)).map(([table, entry]) => [table, resolveExpose(table, entry)])),
150
+ exposeFunctions: Object.fromEntries(Object.entries(config.expose ?? {}).filter(([key]) => isFunctionKey(key)).map(([fn, entry]) => [fn, resolveExposeFunction(fn, entry)])),
151
+ readSets: config.readSets ?? [],
152
+ generators: generatorsOf(config.generators),
153
+ plugins: {
154
+ timestamps: pick(config.plugins?.timestamps, {
155
+ createdAt: "created_at",
156
+ updatedAt: "updated_at"
157
+ }),
158
+ softDelete: pick(config.plugins?.softDelete, { column: "deleted_at" }),
159
+ tenant: pick(config.plugins?.tenant, { column: "organization_id" }),
160
+ actor: pick(config.plugins?.actor, {
161
+ createdBy: "created_by",
162
+ updatedBy: "updated_by",
163
+ impersonatedBy: "impersonated_by"
164
+ })
165
+ },
166
+ claims: {
167
+ ...DEFAULT_CLAIMS,
168
+ ...config.claims
169
+ },
170
+ buckets: config.buckets ?? {},
171
+ topics: config.topics ?? {},
172
+ realtime: {
173
+ tables: config.realtime?.tables ?? [],
174
+ global: config.realtime?.global ?? [],
175
+ users: config.realtime?.users ?? {},
176
+ ...config.realtime?.policies === void 0 ? {} : { policies: config.realtime.policies }
177
+ },
178
+ entitlements: entitlementsOf(config.entitlements, config.authorization !== void 0),
179
+ ...config.authorization === void 0 ? {} : { authorization: authorizationOf(config.authorization) },
180
+ vectorSearch: vectorSearchOf(config.vectorSearch),
181
+ sql: {
182
+ dir: config.sql?.dir ?? "supabase/schemas",
183
+ prefix: config.sql?.prefix ?? "900_better_supabase",
184
+ testsDir: config.sql?.testsDir ?? "supabase/tests",
185
+ ...sqlModulesOf(config.sql?.modules)
186
+ },
187
+ seed: {
188
+ entry: config.seed?.entry ?? "supabase/seed.ts",
189
+ output: config.seed?.output ?? "supabase/seeds/000_better_supabase.sql"
190
+ },
191
+ openapi: {
192
+ entry: config.openapi?.entry ?? "src/lib/openapi.ts",
193
+ output: config.openapi?.output ?? "openapi.json"
194
+ },
195
+ doctor: {
196
+ ignore: config.doctor?.ignore ?? [],
197
+ strict: config.doctor?.strict ?? false,
198
+ sources: config.doctor?.sources ?? ["src/**/*.{ts,tsx}"],
199
+ policyHelperLimit: config.doctor?.policyHelperLimit ?? 5,
200
+ ...config.doctor?.claimsLimit === void 0 ? {} : { claimsLimit: config.doctor.claimsLimit }
201
+ }
202
+ };
203
+ }
204
+ //#endregion
205
+ //#region src/config/modules.ts
206
+ /** URL tenancy: the tenant comes from the request (a slug), not a stored setting. */
207
+ const DEFAULT_ACTIVE_TENANT = "resolver";
208
+ const MODULE_SCHEMA = "better_supabase";
209
+ function resolveModule(config = {}) {
210
+ return {
211
+ mode: config.mode ?? "managed",
212
+ schema: config.schema ?? MODULE_SCHEMA,
213
+ tables: config.tables ?? {},
214
+ columns: config.columns ?? {},
215
+ ...config.idType === void 0 ? {} : { idType: config.idType },
216
+ permissions: config.permissions ?? {},
217
+ options: config.options ?? {},
218
+ hooks: {
219
+ schema: config.hooks?.schema ?? "public",
220
+ functions: config.hooks?.functions ?? {}
221
+ },
222
+ events: config.events ?? true,
223
+ audit: config.audit ?? true,
224
+ ...config.api === void 0 ? {} : { api: typeof config.api === "string" ? { schema: config.api } : config.api }
225
+ };
226
+ }
227
+ //#endregion
228
+ export { resolveConfig as a, defineConfig as i, resolveModule as n, resolveJsonSchema as o, CONFIG_SCHEMA_URL as r, providerApiProblem as s, DEFAULT_ACTIVE_TENANT as t };
@@ -0,0 +1,68 @@
1
+ import { n as RouteGuardOptions } from "../refusal-D1rgbzNq.js";
2
+ import { t as Validated } from "../shared-DDSjEGDR.js";
3
+ import { l as ToNodeOptions } from "../index-DDrYaUcq.js";
4
+ import { AnyEntry } from "@supabase/middleware";
5
+ import { IncomingMessage, ServerResponse } from "node:http";
6
+ //#region src/nestjs/index.d.ts
7
+ /** The part of Nest's `ArgumentsHost` and `ExecutionContext` the integration reads. */
8
+ export interface ExecutionContextLike {
9
+ switchToHttp(): {
10
+ getRequest(): object;
11
+ getResponse(): object;
12
+ };
13
+ }
14
+ /** A Nest guard instance, for `@UseGuards(...)`. */
15
+ export interface CanActivateLike {
16
+ canActivate(context: ExecutionContextLike): Promise<boolean>;
17
+ }
18
+ /** A Nest exception filter instance, for `@UseFilters(...)` or `app.useGlobalFilters(...)`. */
19
+ export interface ExceptionFilterLike {
20
+ catch(exception: unknown, host: ExecutionContextLike): void;
21
+ }
22
+ /** Nest functional middleware: raw Node `req` and `res` under Express and Fastify. */
23
+ export type NestMiddleware = (req: IncomingMessage, res: ServerResponse, next: (error?: unknown) => void) => void;
24
+ /** The contributions `toNestMiddleware` stored for a request (Express or Fastify), if it ran. */
25
+ export declare function contextOf(request: object): Readonly<Record<string, unknown>> | undefined;
26
+ /**
27
+ * Nest middleware that runs the entries before the route: a short circuit
28
+ * (a 401, a CORS preflight) is the answer; otherwise the entries' cookies
29
+ * go on the response and `@Ctx()` reads the contributions.
30
+ *
31
+ * ```ts title="src/app.module.ts"
32
+ * export class AppModule implements NestModule {
33
+ * configure(consumer: MiddlewareConsumer) {
34
+ * consumer.apply(toNestMiddleware([withBetterSupabase(server)])).forRoutes('*')
35
+ * }
36
+ * }
37
+ * ```
38
+ */
39
+ export declare function toNestMiddleware<const Entries extends readonly AnyEntry[]>(entries: Entries & Validated<Entries>, options?: ToNodeOptions): NestMiddleware;
40
+ /**
41
+ * A parameter decorator for the request's contributions, or one of them:
42
+ * `@Ctx() ctx` or `@Ctx('db') db`.
43
+ *
44
+ * ```ts
45
+ * @Get('notes')
46
+ * list(@Ctx('db') db: Db) { return db.notes.findMany().orThrow() }
47
+ * ```
48
+ */
49
+ export declare function Ctx(key?: string): ParameterDecorator;
50
+ /**
51
+ * A guard instance that refuses callers outside `options`: Problem Details,
52
+ * or a 303 to `signIn` or `mfa`, thrown as Nest's `HttpException`.
53
+ *
54
+ * ```ts
55
+ * @UseGuards(guard({ roles: ['admin'] }))
56
+ * ```
57
+ */
58
+ export declare function guard(options?: RouteGuardOptions): CanActivateLike;
59
+ /**
60
+ * An exception filter that answers thrown `DbException`s (from
61
+ * `.orThrow()`) with Problem Details. Register it with `@Catch()` scope in
62
+ * mind: other exceptions are answered the way Nest's base filter does.
63
+ */
64
+ export declare function problemFilter(options?: {
65
+ readonly expose?: boolean;
66
+ }): ExceptionFilterLike;
67
+ //#endregion
68
+ export type { RouteGuardOptions };