better-supabase 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (536) hide show
  1. package/README.md +299 -41
  2. package/dist/access-sql-B0dF-SoF.js +181 -0
  3. package/dist/actor-CQTlc1Hh.d.ts +43 -0
  4. package/dist/adapter-Bc1o3zyy.js +1106 -0
  5. package/dist/agents-CVHGd7It.d.ts +94 -0
  6. package/dist/ai-cache-CBWs1W0k.js +80 -0
  7. package/dist/ai-cache-DaDu_G5L.d.ts +64 -0
  8. package/dist/ai-chat-7amvXjmQ.d.ts +590 -0
  9. package/dist/ai-chat-B24UI962.js +743 -0
  10. package/dist/ai-files-CSPNswUY.js +319 -0
  11. package/dist/ai-sdk/agents/index.d.ts +74 -0
  12. package/dist/ai-sdk/agents/index.js +159 -0
  13. package/dist/ai-sdk/batches/index.d.ts +74 -0
  14. package/dist/ai-sdk/batches/index.js +180 -0
  15. package/dist/ai-sdk/cache/index.d.ts +38 -0
  16. package/dist/ai-sdk/cache/index.js +127 -0
  17. package/dist/ai-sdk/chat/index.d.ts +2 -0
  18. package/dist/ai-sdk/chat/index.js +246 -0
  19. package/dist/ai-sdk/embeddings/index.d.ts +3 -0
  20. package/dist/ai-sdk/embeddings/index.js +2 -0
  21. package/dist/ai-sdk/files/index.d.ts +61 -0
  22. package/dist/ai-sdk/files/index.js +111 -0
  23. package/dist/ai-sdk/index.d.ts +145 -0
  24. package/dist/ai-sdk/index.js +174 -0
  25. package/dist/ai-sdk/mcp/index.d.ts +102 -0
  26. package/dist/ai-sdk/mcp/index.js +362 -0
  27. package/dist/ai-sdk/memory/index.d.ts +67 -0
  28. package/dist/ai-sdk/memory/index.js +175 -0
  29. package/dist/ai-sdk/react/index.d.ts +2 -0
  30. package/dist/ai-sdk/react/index.js +3 -0
  31. package/dist/ai-sdk/react/server.d.ts +6 -0
  32. package/dist/ai-sdk/react/server.js +7 -0
  33. package/dist/ai-sdk/workflow/index.d.ts +249 -0
  34. package/dist/ai-sdk/workflow/index.js +575 -0
  35. package/dist/ai-sdk/workflow/react/index.d.ts +20 -0
  36. package/dist/ai-sdk/workflow/react/index.js +66 -0
  37. package/dist/ai-sdk/workflow/react/server.d.ts +10 -0
  38. package/dist/ai-sdk/workflow/react/server.js +12 -0
  39. package/dist/ai-tasks-Cd1HMFvB.d.ts +131 -0
  40. package/dist/announcements-CiyOs-xP.js +107 -0
  41. package/dist/announcements-ZRGnScWI.d.ts +72 -0
  42. package/dist/api-keys-rCGtKaZA.d.ts +156 -0
  43. package/dist/assistant-DwdpDH1q.d.ts +147 -0
  44. package/dist/astro/index.d.ts +86 -0
  45. package/dist/astro/index.js +93 -0
  46. package/dist/attributes-5dYul0u0.js +13 -0
  47. package/dist/auth-link-BjFPqwLz.d.ts +97 -0
  48. package/dist/auth-link-DrDX9KOT.js +114 -0
  49. package/dist/authorization-BFCqamMs.d.ts +172 -0
  50. package/dist/before-route-CnR0C0Jr.js +30 -0
  51. package/dist/bind-Bu_ZNa3W.d.ts +62 -0
  52. package/dist/bind-l4kAvYSv.js +97 -0
  53. package/dist/block-events-CrT8r7Fe.js +76 -0
  54. package/dist/block-fields-GFkxl4dP.js +49 -0
  55. package/dist/block-fields-SJ6fEf3o.d.ts +31 -0
  56. package/dist/block-helpers-CKtbFcRv.d.ts +37 -0
  57. package/dist/block-helpers-DWHxHsEQ.js +190 -0
  58. package/dist/block-hooks-BmjMyXTa.js +114 -0
  59. package/dist/block-hooks-plbZ0AbJ.d.ts +107 -0
  60. package/dist/{kit-transport-DJlHQUBU.js → block-transport-BLr-ZgLc.js} +11 -7
  61. package/dist/block-transport-DvaoPuZ9.d.ts +48 -0
  62. package/dist/blocks/agents/index.d.ts +3 -0
  63. package/dist/blocks/agents/index.js +123 -0
  64. package/dist/blocks/ai-cache/index.d.ts +3 -0
  65. package/dist/blocks/ai-cache/index.js +3 -0
  66. package/dist/blocks/ai-chat/index.d.ts +31 -0
  67. package/dist/blocks/ai-chat/index.js +5 -0
  68. package/dist/blocks/ai-chat/react/index.d.ts +77 -0
  69. package/dist/blocks/ai-chat/react/index.js +387 -0
  70. package/dist/blocks/ai-chat/react/server.d.ts +16 -0
  71. package/dist/blocks/ai-chat/react/server.js +14 -0
  72. package/dist/blocks/ai-files/index.d.ts +14 -0
  73. package/dist/blocks/ai-files/index.js +3 -0
  74. package/dist/blocks/ai-providers/index.d.ts +7 -0
  75. package/dist/blocks/ai-providers/index.js +211 -0
  76. package/dist/blocks/ai-tasks/index.d.ts +3 -0
  77. package/dist/blocks/ai-tasks/index.js +203 -0
  78. package/dist/blocks/announcements/index.d.ts +3 -0
  79. package/dist/blocks/announcements/index.js +3 -0
  80. package/dist/blocks/announcements/react/index.d.ts +31 -0
  81. package/dist/blocks/announcements/react/index.js +86 -0
  82. package/dist/blocks/announcements/react/server.d.ts +6 -0
  83. package/dist/blocks/announcements/react/server.js +7 -0
  84. package/dist/blocks/api-keys/index.d.ts +35 -0
  85. package/dist/blocks/api-keys/index.js +334 -0
  86. package/dist/blocks/attachments/index.d.ts +210 -0
  87. package/dist/blocks/attachments/index.js +222 -0
  88. package/dist/blocks/audit/index.d.ts +366 -0
  89. package/dist/blocks/audit/index.js +714 -0
  90. package/dist/blocks/billing/index.d.ts +265 -0
  91. package/dist/blocks/billing/index.js +400 -0
  92. package/dist/blocks/comments/index.d.ts +200 -0
  93. package/dist/blocks/comments/index.js +207 -0
  94. package/dist/blocks/connectors/index.d.ts +3 -0
  95. package/dist/blocks/connectors/index.js +164 -0
  96. package/dist/blocks/data-lifecycle/index.d.ts +251 -0
  97. package/dist/blocks/data-lifecycle/index.js +353 -0
  98. package/dist/blocks/entitlements/index.d.ts +14 -0
  99. package/dist/blocks/entitlements/index.js +25 -0
  100. package/dist/blocks/flags/index.d.ts +226 -0
  101. package/dist/blocks/flags/index.js +282 -0
  102. package/dist/blocks/inbox/index.d.ts +6 -0
  103. package/dist/blocks/inbox/index.js +499 -0
  104. package/dist/blocks/inbox/react/index.d.ts +2 -0
  105. package/dist/blocks/inbox/react/index.js +225 -0
  106. package/dist/blocks/inbox/react/server.d.ts +10 -0
  107. package/dist/blocks/inbox/react/server.js +12 -0
  108. package/dist/blocks/index.d.ts +65 -0
  109. package/dist/blocks/index.js +77 -0
  110. package/dist/blocks/jobs/index.d.ts +297 -0
  111. package/dist/blocks/jobs/index.js +1051 -0
  112. package/dist/blocks/knowledge/index.d.ts +3 -0
  113. package/dist/blocks/knowledge/index.js +3 -0
  114. package/dist/blocks/memory/index.d.ts +8 -0
  115. package/dist/blocks/memory/index.js +289 -0
  116. package/dist/blocks/notifications/index.d.ts +297 -0
  117. package/dist/blocks/notifications/index.js +425 -0
  118. package/dist/blocks/notifications/react/index.d.ts +44 -0
  119. package/dist/blocks/notifications/react/index.js +67 -0
  120. package/dist/blocks/notifications/react/server.d.ts +6 -0
  121. package/dist/blocks/notifications/react/server.js +7 -0
  122. package/dist/blocks/onboarding/index.d.ts +3 -0
  123. package/dist/blocks/onboarding/index.js +64 -0
  124. package/dist/blocks/onboarding/react/index.d.ts +28 -0
  125. package/dist/blocks/onboarding/react/index.js +78 -0
  126. package/dist/blocks/onboarding/react/server.d.ts +7 -0
  127. package/dist/blocks/onboarding/react/server.js +7 -0
  128. package/dist/blocks/organizations/index.d.ts +241 -0
  129. package/dist/blocks/organizations/index.js +400 -0
  130. package/dist/blocks/outbox/index.d.ts +3 -0
  131. package/dist/blocks/outbox/index.js +266 -0
  132. package/dist/blocks/profiles/index.d.ts +40 -0
  133. package/dist/blocks/profiles/index.js +28 -0
  134. package/dist/blocks/push/index.d.ts +185 -0
  135. package/dist/blocks/push/index.js +258 -0
  136. package/dist/blocks/settings/index.d.ts +89 -0
  137. package/dist/blocks/settings/index.js +104 -0
  138. package/dist/blocks/sso/index.d.ts +198 -0
  139. package/dist/blocks/sso/index.js +1297 -0
  140. package/dist/blocks/usage/index.d.ts +4 -0
  141. package/dist/blocks/usage/index.js +233 -0
  142. package/dist/blocks/waitlist/index.d.ts +117 -0
  143. package/dist/blocks/waitlist/index.js +132 -0
  144. package/dist/blocks/webhooks/index.d.ts +304 -0
  145. package/dist/{webhooks → blocks/webhooks}/index.js +468 -148
  146. package/dist/blocks/workflow-builder/index.d.ts +21 -0
  147. package/dist/blocks/workflow-builder/index.js +5 -0
  148. package/dist/blocks/workflow-builder/react/index.d.ts +47 -0
  149. package/dist/blocks/workflow-builder/react/index.js +119 -0
  150. package/dist/blocks/workflow-builder/react/server.d.ts +8 -0
  151. package/dist/blocks/workflow-builder/react/server.js +11 -0
  152. package/dist/blocks/workflows/index.d.ts +3 -0
  153. package/dist/blocks/workflows/index.js +3 -0
  154. package/dist/blocks/workflows/react/index.d.ts +47 -0
  155. package/dist/blocks/workflows/react/index.js +137 -0
  156. package/dist/blocks/workflows/react/server.d.ts +8 -0
  157. package/dist/blocks/workflows/react/server.js +11 -0
  158. package/dist/{index-SaTsEfGP.d.ts → bucket-Cl46E3jS.d.ts} +134 -91
  159. package/dist/{simplify-_0oUKqCd.js → build-BXIzE6Xv.js} +222 -124
  160. package/dist/{channel-FQW-CnGR.d.ts → channel-_2Mx1Oyu.d.ts} +2 -2
  161. package/dist/channels-CkgQ_X60.js +114 -0
  162. package/dist/chat-sdk/index.d.ts +303 -0
  163. package/dist/chat-sdk/index.js +733 -0
  164. package/dist/chat-sdk/react/index.d.ts +2 -0
  165. package/dist/chat-sdk/react/index.js +3 -0
  166. package/dist/chat-sdk/react/server.d.ts +3 -0
  167. package/dist/chat-sdk/react/server.js +2 -0
  168. package/dist/claims-DDBQT6BK.js +61 -0
  169. package/dist/{claims-BAf6c7is.js → claims-PqzCxaTD.js} +39 -2
  170. package/dist/cli/bin.js +1 -1
  171. package/dist/cli/{codemod-DqV7612m.js → codemod-Bl_tQpHn.js} +105 -2
  172. package/dist/cli/config-B9HkL8nF.js +2 -0
  173. package/dist/cli/config-DU7EJImt.js +49 -0
  174. package/dist/cli/config-NiPxAmUF.js +1077 -0
  175. package/dist/cli/{dist-xn4wlboc.js → dist-DRAVaE6w.js} +111 -1
  176. package/dist/cli/{doctor-L7Z8mYTx.js → doctor-B4JOm_ox.js} +992 -316
  177. package/dist/cli/{env-DmKv_G4A.js → env-CJLbUVPB.js} +1 -1
  178. package/dist/cli/{env-jIFUADLY.js → env-qXgyMV6r.js} +2 -2
  179. package/dist/cli/fresh-import-BeYf9I3x.js +40 -0
  180. package/dist/cli/gen-BGLb_zou.js +3100 -0
  181. package/dist/cli/gen-DAH8FM2W.js +2 -0
  182. package/dist/cli/index.d.ts +44 -5
  183. package/dist/cli/index.js +7 -7
  184. package/dist/cli/{init-Saf5-R9T.js → init-BIIwclPg.js} +242 -27
  185. package/dist/cli/{introspect--H7oGmcd.js → introspect-DNUTuNvb.js} +5 -5
  186. package/dist/cli/{io-k41_z-jT.js → io-DI1mTdSA.js} +12 -3
  187. package/dist/cli/{keys-ByKHnvP9.js → keys-BGCnnb-s.js} +8 -6
  188. package/dist/cli/{ohash-D7bG_EOb.js → ohash-BjQY1cBb.js} +1 -1
  189. package/dist/cli/{openapi-Cp5Fyta-.js → openapi-BlRJ18s3.js} +2 -2
  190. package/dist/cli/{project-B_GeXyHh.js → project-DZRaBaY7.js} +11 -6
  191. package/dist/cli/read-sets-CETOSFx4.js +223 -0
  192. package/dist/cli/{run-BKR2W_79.js → run-DNWxHynX.js} +33 -23
  193. package/dist/cli/{seed-CUlqWh-8.js → seed-DQzqT7LP.js} +8 -6
  194. package/dist/cli/{skills-LJJIhLFR.js → skills-QQs4q68J.js} +3 -2
  195. package/dist/cli/sql-D0GUtUPp.js +536 -0
  196. package/dist/cli/{config-CPVpXP5I.js → supabase-toml-B-bIukQF.js} +72 -942
  197. package/dist/cli/typegen-version-DeFbtzYI.js +8 -0
  198. package/dist/cli/{version-BDJuO0UR.js → version-hr88OZG0.js} +1 -1
  199. package/dist/client/index.d.ts +3 -2
  200. package/dist/client/index.js +11 -71
  201. package/dist/client/native/index.d.ts +228 -0
  202. package/dist/client/native/index.js +361 -0
  203. package/dist/client-CI0Z2zWX.js +277 -0
  204. package/dist/cloud-event-BnmD5fb9.js +46 -0
  205. package/dist/cloud-event-C1JCc1bH.d.ts +50 -0
  206. package/dist/{compiler-BXH_aZ7N.d.ts → compiler-DY_wkj4R.d.ts} +2 -2
  207. package/dist/compose-BIBNgAnq.js +53 -0
  208. package/dist/composite-Bt1YK3Ke.d.ts +146 -0
  209. package/dist/composite-DhE66P5u.js +130 -0
  210. package/dist/config/index.d.ts +6 -4
  211. package/dist/config/index.js +5 -5
  212. package/dist/{config-T_ejwyd3.d.ts → config-D44Y7PAv.d.ts} +406 -205
  213. package/dist/{config-DreERlKo.js → config-Dn7F5k9A.js} +62 -14
  214. package/dist/connector-Dv8kK0MO.d.ts +107 -0
  215. package/dist/connectors-hkLCwyEz.d.ts +120 -0
  216. package/dist/context-BCrWe7ow.d.ts +237 -0
  217. package/dist/credentials/index.d.ts +31 -0
  218. package/dist/credentials/index.js +168 -0
  219. package/dist/cron-DVPUg5k3.js +145 -0
  220. package/dist/csv-CPAzEmB6.js +25 -0
  221. package/dist/db-exception-CnWcYPxL.js +15 -0
  222. package/dist/{define-cNKzqwL_.js → define-B-TVjC25.js} +784 -227
  223. package/dist/{define-Bp_BZa5h.d.ts → define-CJJkkr1-.d.ts} +353 -61
  224. package/dist/edge/index.d.ts +69 -11
  225. package/dist/edge/index.js +191 -75
  226. package/dist/elysia/index.d.ts +59 -0
  227. package/dist/elysia/index.js +62 -0
  228. package/dist/embeddings-4ZvFzjsU.js +127 -0
  229. package/dist/embeddings-C9KGQnXt.d.ts +68 -0
  230. package/dist/{refresh-BTrQ_ZTp.d.ts → ended-jLfvw8h-.d.ts} +20 -2
  231. package/dist/{entitlements-DUxU4oHe.d.ts → entitlements-DHrY2UDZ.d.ts} +16 -7
  232. package/dist/entitlements-DRl6ZJUm.js +24 -0
  233. package/dist/envelope-DqnYGRw7.js +47 -0
  234. package/dist/{errors-DtwXa6b8.js → errors-B11Duf73.js} +82 -13
  235. package/dist/errors-DLjJHPLK.js +44 -0
  236. package/dist/escape-like-DHfx6jRr.js +7 -0
  237. package/dist/escape-like-ImTK0ps_.d.ts +15 -0
  238. package/dist/eve/index.d.ts +220 -0
  239. package/dist/eve/index.js +504 -0
  240. package/dist/eve-gT2Fpjut.d.ts +151 -0
  241. package/dist/events/index.d.ts +4 -3
  242. package/dist/events/index.js +9 -50
  243. package/dist/events-DWDhx77e.d.ts +549 -0
  244. package/dist/executor-Bq28caBo.js +718 -0
  245. package/dist/executor-C-R4pucm.js +83 -0
  246. package/dist/executor-CaWigTyR.d.ts +148 -0
  247. package/dist/executor-D14tGopJ.d.ts +36 -0
  248. package/dist/{executor-Cghdstwu.d.ts → executor-DbvExCFC.d.ts} +7 -1
  249. package/dist/{sql-Coh6n4cC.js → executor-De1Of3m3.js} +210 -11
  250. package/dist/executor-DvsBbNBS.d.ts +261 -0
  251. package/dist/expo/index.d.ts +79 -0
  252. package/dist/expo/index.js +129 -0
  253. package/dist/expo-sqlite/index.d.ts +58 -0
  254. package/dist/expo-sqlite/index.js +104 -0
  255. package/dist/field-errors-BFOa7WhB.d.ts +99 -0
  256. package/dist/field-errors-VF1yb8yI.js +13 -0
  257. package/dist/framework-CONDyPYx.js +51 -0
  258. package/dist/framework-DuVb4Xa8.d.ts +25 -0
  259. package/dist/gateway-C1ssRHnf.d.ts +130 -0
  260. package/dist/graph-BGyLLFLX.js +265 -0
  261. package/dist/h3/index.d.ts +59 -0
  262. package/dist/h3/index.js +55 -0
  263. package/dist/h3/v1/index.d.ts +63 -0
  264. package/dist/h3/v1/index.js +49 -0
  265. package/dist/history-BZih6SFP.js +64 -0
  266. package/dist/hono/index.d.ts +56 -7
  267. package/dist/hono/index.js +97 -45
  268. package/dist/{react-C_s7kiNz.js → hooks-1BTCJsiw.js} +104 -133
  269. package/dist/http-Cv4T29xh.js +40 -0
  270. package/dist/http-DdYadv-o.js +126 -0
  271. package/dist/image-url-pIVlO6R1.js +41 -0
  272. package/dist/impersonation-DcqaTBHx.js +148 -0
  273. package/dist/inbox-i7E1ppo6.d.ts +384 -0
  274. package/dist/index-ACiNPN4Z.d.ts +74 -0
  275. package/dist/{index-DgILJRXj.d.ts → index-Bepi-Hgg.d.ts} +91 -28
  276. package/dist/index-BkWT_uBO.d.ts +51 -0
  277. package/dist/index-BpFYMsi0.d.ts +53 -0
  278. package/dist/{index-C7f8cOBM.d.ts → index-Bxih3l0u.d.ts} +2 -2
  279. package/dist/index-CaxrMD1A.d.ts +1 -0
  280. package/dist/index-ClmjK_o-.d.ts +55 -0
  281. package/dist/index-CtuakVRc.d.ts +267 -0
  282. package/dist/index-D48jVS-N.d.ts +246 -0
  283. package/dist/index-DDrYaUcq.d.ts +138 -0
  284. package/dist/index-DQh4VCc9.d.ts +98 -0
  285. package/dist/{live-D9W2M5aO.d.ts → index-DunNRdnT.d.ts} +136 -38
  286. package/dist/index.d.ts +65 -18
  287. package/dist/index.js +42 -14
  288. package/dist/invalidate-BBqhpxyB.d.ts +19 -0
  289. package/dist/json-CEnpTHlZ.js +16 -0
  290. package/dist/json-schema-CvER4kgT.js +502 -0
  291. package/dist/keys-4MnkWTTh.js +35 -0
  292. package/dist/kit-B5tid-q5.d.ts +60 -0
  293. package/dist/kit-Fm-Fv7q5.js +78 -0
  294. package/dist/knowledge-BXBbT0Tr.d.ts +176 -0
  295. package/dist/knowledge-CDmiMLew.js +255 -0
  296. package/dist/lint/index.d.ts +1 -1
  297. package/dist/lint/index.js +37 -0
  298. package/dist/list/index.d.ts +3 -2
  299. package/dist/list/index.js +1 -444
  300. package/dist/{index-fag8VJZ2.d.ts → list-query-BRt-zDF7.d.ts} +20 -12
  301. package/dist/list-query-gl808ac1.js +459 -0
  302. package/dist/{live-CdJBOc4f.js → live-CTAZQkwl.js} +99 -14
  303. package/dist/logger-DWVYUmwi.d.ts +18 -0
  304. package/dist/mcp/index.d.ts +38 -11
  305. package/dist/mcp/index.js +82 -46
  306. package/dist/mcp/sdk/index.d.ts +105 -0
  307. package/dist/mcp/sdk/index.js +126 -0
  308. package/dist/message-CaKlqdsX.js +219 -0
  309. package/dist/message-CfDoR0Y6.d.ts +94 -0
  310. package/dist/messages-B9-5887d.js +715 -0
  311. package/dist/messages-DYP0sUTe.d.ts +59 -0
  312. package/dist/{mfa-CusDgPaD.d.ts → mfa-Daak8ukG.d.ts} +8 -2
  313. package/dist/modules-DpPwzC7E.d.ts +192 -0
  314. package/dist/modules-dxrVK3ID.js +228 -0
  315. package/dist/nestjs/index.d.ts +68 -0
  316. package/dist/nestjs/index.js +164 -0
  317. package/dist/next/client/index.d.ts +35 -0
  318. package/dist/next/client/index.js +36 -0
  319. package/dist/next/image/index.js +3 -24
  320. package/dist/next/index.d.ts +150 -51
  321. package/dist/next/index.js +261 -107
  322. package/dist/node/index.d.ts +4 -0
  323. package/dist/node/index.js +210 -0
  324. package/dist/node-headers-AO06VhqH.d.ts +24 -0
  325. package/dist/node-headers-C71zNQHe.js +55 -0
  326. package/dist/nuxt/index.d.ts +60 -0
  327. package/dist/nuxt/index.js +64 -0
  328. package/dist/onboarding-BZGHYJks.d.ts +62 -0
  329. package/dist/openapi/index.d.ts +1 -1
  330. package/dist/openapi/index.js +3 -3
  331. package/dist/orpc/index.d.ts +70 -11
  332. package/dist/orpc/index.js +73 -24
  333. package/dist/otel/index.d.ts +7 -7
  334. package/dist/otel/index.js +87 -57
  335. package/dist/outbox-Cq7pPYvl.d.ts +161 -0
  336. package/dist/{plugin-o144f322.d.ts → plugin-FGY8UhYm.d.ts} +30 -10
  337. package/dist/plugin-tfXW1-qO.js +45 -0
  338. package/dist/plugins/actor/index.d.ts +2 -2
  339. package/dist/plugins/actor/index.js +3 -3
  340. package/dist/plugins/rules/index.d.ts +11 -4
  341. package/dist/plugins/rules/index.js +40 -13
  342. package/dist/plugins/soft-delete/index.d.ts +5 -4
  343. package/dist/plugins/soft-delete/index.js +10 -5
  344. package/dist/plugins/tenant/index.d.ts +2 -2
  345. package/dist/plugins/tenant/index.js +18 -11
  346. package/dist/plugins/timestamps/index.d.ts +5 -3
  347. package/dist/plugins/timestamps/index.js +6 -4
  348. package/dist/plugins/validation/index.d.ts +2 -2
  349. package/dist/plugins/validation/index.js +10 -6
  350. package/dist/{pool-C9voM4Kw.d.ts → pool-CAu2nLrL.d.ts} +2 -2
  351. package/dist/postgres/index.d.ts +4 -4
  352. package/dist/postgres/index.js +1 -2
  353. package/dist/{postgrest-CruYKAvV.d.ts → postgrest-BLVdEnfe.d.ts} +13 -3
  354. package/dist/powersync/index.d.ts +43 -0
  355. package/dist/powersync/index.js +199 -0
  356. package/dist/powersync/react/index.d.ts +87 -0
  357. package/dist/powersync/react/index.js +108 -0
  358. package/dist/{problem-BW1KhzSG.js → problem-BreOl8b8.js} +14 -3
  359. package/dist/{problem-Blxe8S31.d.ts → problem-DD8LZFjc.d.ts} +21 -3
  360. package/dist/provider-BH5UWZJ6.d.ts +113 -0
  361. package/dist/provider-Di3sRutW.js +57 -0
  362. package/dist/query/index.d.ts +4 -2
  363. package/dist/query/index.js +4 -3
  364. package/dist/{query-CCbo44lG.js → query-BQ-NaZon.js} +141 -24
  365. package/dist/{queue-BYUCjr59.d.ts → queue-CLJurhdy.d.ts} +258 -83
  366. package/dist/react/index.d.ts +11 -7
  367. package/dist/react/index.js +7 -3
  368. package/dist/react/native/index.d.ts +116 -0
  369. package/dist/react/native/index.js +130 -0
  370. package/dist/react/server.d.ts +28 -10
  371. package/dist/react/server.js +22 -5
  372. package/dist/react/session.d.ts +2 -2
  373. package/dist/react-4ZqkP8da.js +79 -0
  374. package/dist/react-F80mF4-t.js +409 -0
  375. package/dist/react-router/index.d.ts +83 -0
  376. package/dist/react-router/index.js +89 -0
  377. package/dist/react-topic-seAWjL3_.js +38 -0
  378. package/dist/{read-set-DQFt1N_Y.js → read-set-DuKWC9Mj.js} +67 -25
  379. package/dist/realtime/index.d.ts +4 -5
  380. package/dist/realtime/index.js +144 -82
  381. package/dist/refusal-CeJWxmkH.js +61 -0
  382. package/dist/refusal-D1rgbzNq.d.ts +15 -0
  383. package/dist/replicas-CwrYp5Zj.js +94 -0
  384. package/dist/{view-Bq64ki8-.js → resolve-D_IcnvFd.js} +239 -289
  385. package/dist/{resolve-C15TJq77.d.ts → resolve-KW8nCeL6.d.ts} +29 -45
  386. package/dist/{resource-CRxxwkQq.js → resource-BsvzCMlX.js} +4 -4
  387. package/dist/{resource-D8iqWMr-.d.ts → resource-D6Uc7Sk7.d.ts} +5 -5
  388. package/dist/respond-BUgsXNgk.js +91 -0
  389. package/dist/respond-DoBijysA.d.ts +93 -0
  390. package/dist/result-D7y2fT87.d.ts +282 -0
  391. package/dist/{result-BKiliPY7.js → result-DzUbqgdW.js} +27 -2
  392. package/dist/run-state-CPo-1X2B.d.ts +12 -0
  393. package/dist/run-state-CgBKzYMW.js +13 -0
  394. package/dist/search-CUWCRYKL.js +9 -0
  395. package/dist/server/index.d.ts +143 -21
  396. package/dist/server/index.js +46 -14
  397. package/dist/{respond-D2OQl62-.d.ts → server-CeVeeXwz.d.ts} +225 -80
  398. package/dist/session-ChiXDZdZ.d.ts +72 -0
  399. package/dist/shared-CBxosKK3.js +75 -0
  400. package/dist/{shared-D1dRUrAg.js → shared-CxWmcyqB.js} +2 -1
  401. package/dist/shared-DDSjEGDR.d.ts +11 -0
  402. package/dist/sign-in-BCV5S2WZ.d.ts +49 -0
  403. package/dist/sign-in-Cb1mwv6X.js +86 -0
  404. package/dist/{signers-Cc6r98SW.d.ts → signers-4y62_VIi.d.ts} +13 -9
  405. package/dist/simplify-DDO0j0LI.js +83 -0
  406. package/dist/solid/index.d.ts +131 -0
  407. package/dist/solid/index.js +344 -0
  408. package/dist/solid-start/index.d.ts +75 -0
  409. package/dist/solid-start/index.js +58 -0
  410. package/dist/{spec-pins-C3oc-Tdp.js → spec-pins--j6mTok4.js} +8 -1
  411. package/dist/{spec-pins-CqorWDnO.d.ts → spec-pins-C89s6DyW.d.ts} +7 -0
  412. package/dist/sql/index.d.ts +330 -194
  413. package/dist/sql/index.js +34901 -6489
  414. package/dist/ssr/index.d.ts +6 -5
  415. package/dist/ssr/index.js +3 -3
  416. package/dist/{standard-D7r6dMUu.js → standard-BK0cqJ7y.js} +4 -3
  417. package/dist/{standard-J4YgMOLm.d.ts → standard-CYsm7xpT.d.ts} +1 -1
  418. package/dist/stats-D_AD9GGu.js +1123 -0
  419. package/dist/storage/index.d.ts +5 -5
  420. package/dist/storage/index.js +1027 -368
  421. package/dist/store-BdH5ruDx.js +66 -0
  422. package/dist/store-CGjgWu5n.d.ts +68 -0
  423. package/dist/streams/index.d.ts +76 -0
  424. package/dist/streams/index.js +77 -0
  425. package/dist/streams/redis/index.d.ts +52 -0
  426. package/dist/streams/redis/index.js +185 -0
  427. package/dist/stripe-BMj5LtsT.js +38 -0
  428. package/dist/stripe-D04h-QBT.d.ts +136 -0
  429. package/dist/{support-Dk6vdmEw.js → support-BivNqSpK.js} +35 -12
  430. package/dist/{support-view-Da5peKFg.d.ts → support-view-33Oi07TT.d.ts} +1 -1
  431. package/dist/svelte/index.d.ts +114 -0
  432. package/dist/svelte/index.js +344 -0
  433. package/dist/sveltekit/index.d.ts +116 -0
  434. package/dist/sveltekit/index.js +106 -0
  435. package/dist/tags-B99_U9Pp.js +39 -0
  436. package/dist/tags-Cx-LnIQP.d.ts +30 -0
  437. package/dist/tanstack-db/index.d.ts +71 -0
  438. package/dist/tanstack-db/index.js +72 -0
  439. package/dist/tanstack-start/index.d.ts +75 -0
  440. package/dist/tanstack-start/index.js +95 -0
  441. package/dist/tee-CoEppCER.js +101 -0
  442. package/dist/{template-TxrGI5jR.js → template--jDkl3UP.js} +34 -13
  443. package/dist/template-CwO38Do8.d.ts +6 -0
  444. package/dist/temporal-BJGitm-h.js +79 -0
  445. package/dist/{temporal-required-CAt4Dc9Z.js → temporal-required-BVvW7SYJ.js} +3 -2
  446. package/dist/tenant-I1TEZ_BX.js +27 -0
  447. package/dist/tenant-icPeuUBN.d.ts +17 -0
  448. package/dist/testing/index.d.ts +343 -37
  449. package/dist/testing/index.js +1186 -79
  450. package/dist/timing-CyTQPubY.js +92 -0
  451. package/dist/ttl-Hr34gRu8.js +12 -0
  452. package/dist/{types-Dnf_wRDz.d.ts → types-6BdhkmZe.d.ts} +111 -45
  453. package/dist/types-BI-0Sl2v.d.ts +359 -0
  454. package/dist/types-C05bxW-W.d.ts +220 -0
  455. package/dist/types-DGs5L0VN.d.ts +192 -0
  456. package/dist/types-TaiEeBGA.d.ts +156 -0
  457. package/dist/usage-CrvrL2vw.d.ts +177 -0
  458. package/dist/user-change-XzvgafU4.js +130 -0
  459. package/dist/vault-CSO7ss5C.d.ts +50 -0
  460. package/dist/vercel-connect/index.d.ts +47 -0
  461. package/dist/vercel-connect/index.js +119 -0
  462. package/dist/{verify-Ce49ETPz.js → verify-DL41hbvY.js} +85 -13
  463. package/dist/verify-DPuWngD4.d.ts +172 -0
  464. package/dist/{version-DM_Roffb.js → version-Bvv6aLjZ.js} +1 -1
  465. package/dist/view-BeFcRV6G.js +99 -0
  466. package/dist/{view-BEf0diC5.d.ts → view-DbxLNu8L.d.ts} +35 -32
  467. package/dist/vue/index.d.ts +141 -0
  468. package/dist/vue/index.js +362 -0
  469. package/dist/watch-DI34G86j.d.ts +60 -0
  470. package/dist/watch-Xuxrvxq-.js +122 -0
  471. package/dist/{wire-D2dT86vi.js → wire-DtZQ4sdE.js} +15 -5
  472. package/dist/workflow-builder-DJ1oHn8g.js +398 -0
  473. package/dist/workflow-sdk/builder/index.d.ts +85 -0
  474. package/dist/workflow-sdk/builder/index.js +250 -0
  475. package/dist/workflow-sdk/index.d.ts +14 -0
  476. package/dist/workflow-sdk/index.js +3 -0
  477. package/dist/workflow-sdk/world/index.d.ts +107 -0
  478. package/dist/workflow-sdk/world/index.js +702 -0
  479. package/dist/workflow-sdk-B3yLD6Br.d.ts +98 -0
  480. package/dist/workflow-sdk-C2WJ_G2O.js +173 -0
  481. package/dist/workflow-sdk-world-D-prir6O.js +1397 -0
  482. package/dist/workflows-B0j9WKPu.d.ts +185 -0
  483. package/dist/workflows-wu1WWBn7.js +216 -0
  484. package/package.json +470 -29
  485. package/schemas/ai-message-v1.json +258 -0
  486. package/schemas/config-v1.json +1074 -140
  487. package/schemas/doctor-report-v1.json +21 -1
  488. package/schemas/snapshot-v2.json +8 -0
  489. package/skills/better-supabase/SKILL.md +41 -12
  490. package/skills/better-supabase/references/frontend.md +96 -0
  491. package/skills/better-supabase/references/plugins.md +10 -6
  492. package/skills/better-supabase/references/troubleshooting.md +2 -1
  493. package/skills/better-supabase-api/SKILL.md +76 -22
  494. package/skills/better-supabase-api/references/adapters.md +207 -0
  495. package/skills/better-supabase-api/references/ai.md +125 -0
  496. package/skills/better-supabase-api/references/expo.md +65 -0
  497. package/skills/better-supabase-api/references/powersync.md +35 -0
  498. package/skills/better-supabase-api/references/streams-credentials.md +105 -0
  499. package/skills/better-supabase-auth/SKILL.md +62 -18
  500. package/skills/better-supabase-auth/references/authorization-providers.md +51 -0
  501. package/skills/better-supabase-testing/SKILL.md +3 -1
  502. package/dist/cli/config-dtoekM0v.js +0 -2
  503. package/dist/cli/gen-BJc9vdyu.js +0 -2
  504. package/dist/cli/gen-C2osRcr5.js +0 -2204
  505. package/dist/cli/read-sets-BfMQcKy8.js +0 -289
  506. package/dist/cli/sql-DzPbfngx.js +0 -348
  507. package/dist/entitlements-CTEBm7IB.js +0 -20
  508. package/dist/events-aIO7vsIk.d.ts +0 -230
  509. package/dist/executor-BunPOO-k.d.ts +0 -402
  510. package/dist/executor-XycESQPH.js +0 -94
  511. package/dist/impersonation-VfaGc4Q_.js +0 -41
  512. package/dist/index-BGdgBPdf.d.ts +0 -161
  513. package/dist/index-DOESKG27.d.ts +0 -100
  514. package/dist/index-DmXSxbLi.d.ts +0 -62
  515. package/dist/index-Dxn2a5cw.d.ts +0 -50
  516. package/dist/jobs/index.d.ts +0 -226
  517. package/dist/jobs/index.js +0 -1007
  518. package/dist/json-schema-m1fiwKgN.js +0 -208
  519. package/dist/kit-events-CTFDfSwb.js +0 -60
  520. package/dist/kit-transport-B82k1djG.d.ts +0 -33
  521. package/dist/kits-CGLLrNPd.js +0 -157
  522. package/dist/notifications/index.d.ts +0 -162
  523. package/dist/notifications/index.js +0 -264
  524. package/dist/orgs/index.d.ts +0 -132
  525. package/dist/orgs/index.js +0 -245
  526. package/dist/permdock-sql-C2Inc6Xc.d.ts +0 -29
  527. package/dist/permdock-sql-DgOfeixi.js +0 -51
  528. package/dist/plugin-DwARMuQp.js +0 -59
  529. package/dist/server-Csx2sRjg.js +0 -655
  530. package/dist/stats-Bqob3WqT.js +0 -592
  531. package/dist/support-DT-OhSxD.d.ts +0 -88
  532. package/dist/template-mbvlysOo.d.ts +0 -6
  533. package/dist/temporal-CVlIV2DZ.js +0 -40
  534. package/dist/user-change-CHFEUro1.js +0 -49
  535. package/dist/webhooks/index.d.ts +0 -285
  536. package/skills/better-supabase-auth/references/permdock.md +0 -100
@@ -0,0 +1,86 @@
1
+ import { a as AnyModels, i as AnyFunctions } from "../types-6BdhkmZe.js";
2
+ import { t as BetterSupabase } from "../define-CJJkkr1-.js";
3
+ import { t as BetterServer } from "../server-CeVeeXwz.js";
4
+ import { j as StorageImageOptions } from "../index-D48jVS-N.js";
5
+ import { a as AuthorizedContext, c as Unwrapped, n as ActionParsed, o as BlockActionOptions, r as ActionResult, s as BlockRequireOptions } from "../kit-B5tid-q5.js";
6
+ import { t as RefusalRedirects } from "../refusal-D1rgbzNq.js";
7
+ import { n as FrameworkOptions, t as FrameworkLocals } from "../framework-DuVb4Xa8.js";
8
+ import { StandardSchemaV1 } from "@standard-schema/spec";
9
+ //#region src/astro/index.d.ts
10
+ /** The part of Astro's `APIContext` (middleware, pages, endpoints, actions) the integration uses. */
11
+ export interface AstroContextLike {
12
+ readonly request: Request;
13
+ readonly locals: object;
14
+ }
15
+ export interface AstroOptions extends FrameworkOptions {
16
+ /** The host's env object for `getEnv`; defaults to `locals.runtime.env` (Cloudflare). */
17
+ readonly platformEnv?: (context: AstroContextLike) => unknown;
18
+ }
19
+ export interface BetterAstro<M extends AnyModels, F extends AnyFunctions, E, C = unknown, P = unknown> extends BetterServer<M, F, E, C, P> {
20
+ /**
21
+ * Astro middleware: verifies the caller, refreshes the session cookie on
22
+ * navigations and form posts, and puts `db`, `bs`, `auth`, `tenant` and
23
+ * `session` on `locals`. Response-phase entries see the page's response.
24
+ *
25
+ * ```ts title="src/middleware.ts"
26
+ * export const onRequest = bs.onRequest
27
+ * ```
28
+ */
29
+ readonly onRequest: (context: AstroContextLike, next: () => Promise<Response>) => Promise<Response>;
30
+ /** The request's `locals`, typed. */
31
+ locals(context: AstroContextLike): FrameworkLocals<M, F, E, C, P>;
32
+ /**
33
+ * The refusal for a caller `options` refuses (a redirect to `signIn` or
34
+ * `mfa`, else Problem Details), or `undefined`. Return it from a page's
35
+ * frontmatter or an endpoint.
36
+ *
37
+ * ```astro
38
+ * ---
39
+ * const refused = await bs.guard(Astro, { roles: ['admin'] })
40
+ * if (refused) return refused
41
+ * ---
42
+ * ```
43
+ */
44
+ guard(context: AstroContextLike, options?: BlockRequireOptions<C, P>): Promise<Response | undefined>;
45
+ /**
46
+ * The caller, or a thrown refusal `Response`, for endpoints that return
47
+ * whatever is thrown.
48
+ */
49
+ require<R extends boolean = false>(context: AstroContextLike, options?: BlockRequireOptions<C, P, R>): Promise<FrameworkLocals<M, F, E, C, P> & AuthorizedContext<C, P, R>>;
50
+ /**
51
+ * The `handler` of `defineAction`, returning an `ActionResult`:
52
+ *
53
+ * ```ts title="src/actions/index.ts"
54
+ * export const server = {
55
+ * addNote: defineAction({ accept: 'form', handler: bs.action({ input: NoteInput }, (input, { db }) => db.notes.create(input)) }),
56
+ * }
57
+ * ```
58
+ */
59
+ action<S extends StandardSchemaV1 | undefined, T, R extends boolean = false>(options: BlockActionOptions<S, C, P, R>, fn: (input: ActionParsed<S>, ctx: FrameworkLocals<M, F, E, C, P> & AuthorizedContext<C, P, R>) => T): (input: unknown, context: AstroContextLike) => Promise<ActionResult<Unwrapped<Awaited<T>>>>;
60
+ }
61
+ /** Astro integration: middleware, page guards and Actions. */
62
+ export declare function createAstro<M extends AnyModels, D, F extends AnyFunctions, E, C = unknown, P = unknown>(betterSupabase: BetterSupabase<M, D, F, E, C, P>, options?: AstroOptions): BetterAstro<M, F, E, C, P>;
63
+ /** What Astro passes to an image service's `getURL`. */
64
+ export interface AstroImageTransform {
65
+ readonly src: string | {
66
+ readonly src: string;
67
+ };
68
+ readonly width?: number | undefined;
69
+ readonly height?: number | undefined;
70
+ readonly quality?: number | "low" | "mid" | "high" | "max" | undefined;
71
+ }
72
+ /** An Astro external image service, typed structurally. */
73
+ export interface AstroImageService {
74
+ getURL(options: AstroImageTransform): string;
75
+ }
76
+ /**
77
+ * An external image service that renders public Storage objects through
78
+ * Supabase image transformations; other sources pass through.
79
+ *
80
+ * ```ts title="src/image-service.ts"
81
+ * export default createImageService({ url: import.meta.env.PUBLIC_SUPABASE_URL })
82
+ * ```
83
+ */
84
+ export declare function createImageService(options: StorageImageOptions): AstroImageService;
85
+ //#endregion
86
+ export type { ActionResult, RefusalRedirects };
@@ -0,0 +1,93 @@
1
+ import { c as extendServer, n as flushEvents, s as createServer } from "../adapter-Bc1o3zyy.js";
2
+ import { t as defaultExpose } from "../respond-BUgsXNgk.js";
3
+ import { i as requireCaller, o as runAction } from "../kit-Fm-Fv7q5.js";
4
+ import { t as storageImageUrl } from "../image-url-pIVlO6R1.js";
5
+ import { t as around } from "../shared-CBxosKK3.js";
6
+ import { i as localsOf, r as frameworkEntry } from "../framework-CONDyPYx.js";
7
+ import { r as refusalResponse } from "../refusal-CeJWxmkH.js";
8
+ //#region src/astro/index.ts
9
+ function runtimeEnv(locals) {
10
+ const runtime = "runtime" in locals ? locals.runtime : void 0;
11
+ return typeof runtime === "object" && runtime !== null && "env" in runtime ? runtime.env : void 0;
12
+ }
13
+ /** Astro integration: middleware, page guards and Actions. */
14
+ function createAstro(betterSupabase, options = {}) {
15
+ const server = createServer(betterSupabase, options);
16
+ const expose = options.exposeErrors ?? defaultExpose();
17
+ const run = around([frameworkEntry(server, options, expose)]);
18
+ const scopeOf = (context) => {
19
+ if (!("bs" in context.locals)) throw new TypeError("better-supabase: no context; export bs.onRequest from src/middleware.ts");
20
+ return context.locals;
21
+ };
22
+ const refusalOf = async (context, requireOptions) => {
23
+ const scope = scopeOf(context);
24
+ return {
25
+ scope,
26
+ caller: await requireCaller(scope.bs.auth, requireOptions, scope.tenant)
27
+ };
28
+ };
29
+ return extendServer(server, {
30
+ onRequest: async (context, next) => {
31
+ const env = options.platformEnv ? options.platformEnv(context) : runtimeEnv(context.locals);
32
+ try {
33
+ return await run(context.request, env, (contributions) => {
34
+ Object.assign(context.locals, localsOf(contributions));
35
+ return next();
36
+ });
37
+ } finally {
38
+ flushEvents(server, options.waitUntil);
39
+ }
40
+ },
41
+ locals: scopeOf,
42
+ guard: async (context, requireOptions = {}) => {
43
+ const { caller } = await refusalOf(context, requireOptions);
44
+ return "kind" in caller ? refusalResponse(caller, context.request, options, expose) : void 0;
45
+ },
46
+ require: async (context, requireOptions = {}) => {
47
+ const { scope, caller } = await refusalOf(context, requireOptions);
48
+ if ("kind" in caller) throw refusalResponse(caller, context.request, options, expose);
49
+ return {
50
+ ...scope,
51
+ ...caller
52
+ };
53
+ },
54
+ action(actionOptions, fn) {
55
+ return async (input, context) => {
56
+ const scope = scopeOf(context);
57
+ return await runAction(scope.bs.auth, actionOptions, input, scope.tenant, (parsed, caller) => fn(parsed, {
58
+ ...scope,
59
+ ...caller
60
+ }));
61
+ };
62
+ }
63
+ });
64
+ }
65
+ const QUALITY_PRESETS = {
66
+ low: 40,
67
+ mid: 60,
68
+ high: 80,
69
+ max: 100
70
+ };
71
+ /**
72
+ * An external image service that renders public Storage objects through
73
+ * Supabase image transformations; other sources pass through.
74
+ *
75
+ * ```ts title="src/image-service.ts"
76
+ * export default createImageService({ url: import.meta.env.PUBLIC_SUPABASE_URL })
77
+ * ```
78
+ */
79
+ function createImageService(options) {
80
+ const imageUrl = storageImageUrl(options);
81
+ return { getURL(transform) {
82
+ const src = typeof transform.src === "string" ? transform.src : transform.src.src;
83
+ if (transform.width === void 0) return src;
84
+ const quality = typeof transform.quality === "string" ? QUALITY_PRESETS[transform.quality] : transform.quality;
85
+ return imageUrl(src, {
86
+ width: transform.width,
87
+ height: transform.height,
88
+ quality
89
+ }) ?? src;
90
+ } };
91
+ }
92
+ //#endregion
93
+ export { createAstro, createImageService };
@@ -0,0 +1,13 @@
1
+ //#region src/workflow-sdk/attributes.ts
2
+ /** The attributes the Supabase World's status trigger copies into `workflow_runs`. */
3
+ const WORKFLOW_ATTRIBUTES = {
4
+ tenant: "bs.tenant",
5
+ actor: "bs.actor",
6
+ key: "bs.key",
7
+ /** The builder definition a run started from; its alerts match on it. */
8
+ definition: "bs.definition",
9
+ /** The builder version number a run started from. */
10
+ version: "bs.version"
11
+ };
12
+ //#endregion
13
+ export { WORKFLOW_ATTRIBUTES as t };
@@ -0,0 +1,97 @@
1
+ import { Provider } from "@supabase/supabase-js";
2
+ //#region src/client/native/auth-link.d.ts
3
+ /** An auth error: supabase-js `AuthError`s and the errors a link carries. */
4
+ interface AuthFailure {
5
+ readonly message: string;
6
+ readonly code?: string | undefined;
7
+ readonly status?: number | undefined;
8
+ }
9
+ interface AuthReply {
10
+ readonly error: AuthFailure | null;
11
+ }
12
+ /** The part of a supabase-js client the deep-link helpers call. */
13
+ interface AuthLinkClient {
14
+ readonly auth: {
15
+ exchangeCodeForSession(code: string): Promise<AuthReply>;
16
+ setSession(tokens: {
17
+ access_token: string;
18
+ refresh_token: string;
19
+ }): Promise<AuthReply>;
20
+ verifyOtp(params: {
21
+ token_hash: string;
22
+ type: "signup" | "invite" | "magiclink" | "recovery" | "email_change" | "email";
23
+ }): Promise<AuthReply>;
24
+ };
25
+ }
26
+ /** What a link did: nothing (not an auth link), a session, or an error. */
27
+ type AuthLinkResult = {
28
+ readonly type: "none";
29
+ } | {
30
+ readonly type: "signed-in";
31
+ readonly via: "code" | "tokens" | "otp";
32
+ } | {
33
+ readonly type: "error";
34
+ readonly error: AuthFailure;
35
+ };
36
+ /**
37
+ * The query and fragment parameters of a URL. Parsed by hand: Hermes'
38
+ * `URL` and `URLSearchParams` leave parts unimplemented.
39
+ */
40
+ declare function linkParams(url: string): ReadonlyMap<string, string>;
41
+ /**
42
+ * Finishes a sign-in from a deep link: an OAuth or PKCE `code`, implicit
43
+ * flow tokens in the fragment, or a magic link's `token_hash`. Returns
44
+ * `none` for links that carry none of them, so it can see every URL.
45
+ *
46
+ * ```ts
47
+ * Linking.addEventListener('url', ({ url }) => void handleAuthDeepLink(supabase, url));
48
+ * ```
49
+ */
50
+ declare function handleAuthDeepLink(supabase: AuthLinkClient, url: string): Promise<AuthLinkResult>;
51
+ /** The part of `expo-web-browser` OAuth sign-in uses. */
52
+ interface WebBrowserLike {
53
+ openAuthSessionAsync(url: string, redirectUrl?: string | null): Promise<{
54
+ readonly type: string;
55
+ readonly url?: string;
56
+ }>;
57
+ }
58
+ /** The part of a supabase-js client OAuth sign-in calls. */
59
+ interface OAuthClient extends AuthLinkClient {
60
+ readonly auth: AuthLinkClient["auth"] & {
61
+ signInWithOAuth(credentials: {
62
+ provider: Provider;
63
+ options: {
64
+ redirectTo: string;
65
+ skipBrowserRedirect: true;
66
+ scopes?: string;
67
+ queryParams?: Record<string, string>;
68
+ };
69
+ }): Promise<{
70
+ readonly data: {
71
+ readonly url: string | null;
72
+ } | {
73
+ readonly url?: null;
74
+ };
75
+ readonly error: AuthFailure | null;
76
+ }>;
77
+ };
78
+ }
79
+ interface OAuthSignInOptions {
80
+ /** The app's deep link back, e.g. `Linking.createURL('auth/callback')`. Add it to the redirect allow list. */
81
+ readonly redirectTo: string;
82
+ readonly scopes?: string;
83
+ readonly queryParams?: Readonly<Record<string, string>>;
84
+ }
85
+ /**
86
+ * OAuth on a device: opens the provider in an auth session, then finishes
87
+ * the sign-in from the redirect. A cancelled or dismissed browser returns
88
+ * `none`.
89
+ *
90
+ * ```ts
91
+ * import * as WebBrowser from 'expo-web-browser';
92
+ * await signInWithOAuthBrowser(supabase, WebBrowser, 'github', { redirectTo: Linking.createURL('auth/callback') });
93
+ * ```
94
+ */
95
+ declare function signInWithOAuthBrowser(supabase: OAuthClient, browser: WebBrowserLike, provider: Provider, options: OAuthSignInOptions): Promise<AuthLinkResult>;
96
+ //#endregion
97
+ export { OAuthSignInOptions as a, linkParams as c, OAuthClient as i, signInWithOAuthBrowser as l, AuthLinkClient as n, WebBrowserLike as o, AuthLinkResult as r, handleAuthDeepLink as s, AuthFailure as t };
@@ -0,0 +1,114 @@
1
+ //#region src/client/native/auth-link.ts
2
+ const OTP_TYPES = /* @__PURE__ */ new Set([
3
+ "signup",
4
+ "invite",
5
+ "magiclink",
6
+ "recovery",
7
+ "email_change",
8
+ "email"
9
+ ]);
10
+ function isOtpType(value) {
11
+ return OTP_TYPES.has(value);
12
+ }
13
+ /**
14
+ * The query and fragment parameters of a URL. Parsed by hand: Hermes'
15
+ * `URL` and `URLSearchParams` leave parts unimplemented.
16
+ */
17
+ function linkParams(url) {
18
+ const params = /* @__PURE__ */ new Map();
19
+ const hash = url.indexOf("#");
20
+ const query = url.indexOf("?");
21
+ const parts = [query === -1 ? "" : url.slice(query + 1, hash > query ? hash : void 0), hash === -1 ? "" : url.slice(hash + 1)];
22
+ for (const part of parts) for (const pair of part.split("&")) {
23
+ if (pair === "") continue;
24
+ const at = pair.indexOf("=");
25
+ const name = at === -1 ? pair : pair.slice(0, at);
26
+ const value = at === -1 ? "" : pair.slice(at + 1);
27
+ try {
28
+ params.set(decodeURIComponent(name.replaceAll("+", " ")), decodeURIComponent(value.replaceAll("+", " ")));
29
+ } catch {}
30
+ }
31
+ return params;
32
+ }
33
+ const settle = async (reply, via) => {
34
+ const { error } = await reply;
35
+ return error ? {
36
+ type: "error",
37
+ error
38
+ } : {
39
+ type: "signed-in",
40
+ via
41
+ };
42
+ };
43
+ /**
44
+ * Finishes a sign-in from a deep link: an OAuth or PKCE `code`, implicit
45
+ * flow tokens in the fragment, or a magic link's `token_hash`. Returns
46
+ * `none` for links that carry none of them, so it can see every URL.
47
+ *
48
+ * ```ts
49
+ * Linking.addEventListener('url', ({ url }) => void handleAuthDeepLink(supabase, url));
50
+ * ```
51
+ */
52
+ function handleAuthDeepLink(supabase, url) {
53
+ const params = linkParams(url);
54
+ const failure = params.get("error_description") ?? params.get("error");
55
+ if (failure !== void 0) {
56
+ const code = params.get("error_code") ?? params.get("error");
57
+ return Promise.resolve({
58
+ type: "error",
59
+ error: {
60
+ message: failure,
61
+ ...code ? { code } : {}
62
+ }
63
+ });
64
+ }
65
+ const code = params.get("code");
66
+ if (code) return settle(supabase.auth.exchangeCodeForSession(code), "code");
67
+ const access = params.get("access_token");
68
+ const refresh = params.get("refresh_token");
69
+ if (access && refresh) return settle(supabase.auth.setSession({
70
+ access_token: access,
71
+ refresh_token: refresh
72
+ }), "tokens");
73
+ const tokenHash = params.get("token_hash");
74
+ const type = params.get("type");
75
+ if (tokenHash && type && isOtpType(type)) return settle(supabase.auth.verifyOtp({
76
+ token_hash: tokenHash,
77
+ type
78
+ }), "otp");
79
+ return Promise.resolve({ type: "none" });
80
+ }
81
+ /**
82
+ * OAuth on a device: opens the provider in an auth session, then finishes
83
+ * the sign-in from the redirect. A cancelled or dismissed browser returns
84
+ * `none`.
85
+ *
86
+ * ```ts
87
+ * import * as WebBrowser from 'expo-web-browser';
88
+ * await signInWithOAuthBrowser(supabase, WebBrowser, 'github', { redirectTo: Linking.createURL('auth/callback') });
89
+ * ```
90
+ */
91
+ async function signInWithOAuthBrowser(supabase, browser, provider, options) {
92
+ const { data, error } = await supabase.auth.signInWithOAuth({
93
+ provider,
94
+ options: {
95
+ redirectTo: options.redirectTo,
96
+ skipBrowserRedirect: true,
97
+ ...options.scopes ? { scopes: options.scopes } : {},
98
+ ...options.queryParams ? { queryParams: { ...options.queryParams } } : {}
99
+ }
100
+ });
101
+ if (error) return {
102
+ type: "error",
103
+ error
104
+ };
105
+ if (!data.url) return {
106
+ type: "error",
107
+ error: { message: "No OAuth URL was returned" }
108
+ };
109
+ const session = await browser.openAuthSessionAsync(data.url, options.redirectTo);
110
+ if (session.type !== "success" || !session.url) return { type: "none" };
111
+ return handleAuthDeepLink(supabase, session.url);
112
+ }
113
+ //#endregion
114
+ export { linkParams as n, signInWithOAuthBrowser as r, handleAuthDeepLink as t };
@@ -0,0 +1,172 @@
1
+ import { i as DisabledRow } from "./modules-DpPwzC7E.js";
2
+ //#region src/config/authorization.d.ts
3
+ /**
4
+ * SQL expression templates the SQL modules and the access policies call.
5
+ * `{permission}` is a text expression (a literal or a parameter), `{user}` a
6
+ * uuid expression, `{tenant}` an expression of the tenant id type and
7
+ * `{role}` a text expression. `{scope}` is the scope's name unquoted, so it
8
+ * can be part of a function name (`app.ids_{scope}({permission})`); write
9
+ * `'{scope}'` to pass it as text.
10
+ */
11
+ interface AuthorizationFunctions {
12
+ /**
13
+ * The ids of the `{scope}` instances where the caller holds
14
+ * `{permission}`, as a set: it is used as
15
+ * `select t.id::text from <template> as t(id)`.
16
+ */
17
+ readonly idsWith: string;
18
+ /** Whether the caller holds `{permission}` platform-wide. */
19
+ readonly isPlatform: string;
20
+ /** `idsWith` for `{user}`, so `can_user` answers for another user. */
21
+ readonly idsWithFor?: string;
22
+ /** `isPlatform` for `{user}`. */
23
+ readonly isPlatformFor?: string;
24
+ /** The ids of the `{scope}` instances the caller is a member of, as a set. */
25
+ readonly memberIds?: string;
26
+ /** `memberIds` for `{user}`, which the access token hook calls as `supabase_auth_admin`. */
27
+ readonly memberIdsFor?: string;
28
+ /** Whether the caller may assign `{role}` in `{tenant}`. */
29
+ readonly canAssign?: string;
30
+ /** Whether `{user}` may assign `{role}` in `{tenant}`. */
31
+ readonly canAssignFor?: string;
32
+ /**
33
+ * The permission keys `{user}` holds in `{tenant}`, as a `text[]`. It
34
+ * fills `member_permissions` and the `permissions` claim; without it
35
+ * both are empty.
36
+ */
37
+ readonly permissionsFor?: string;
38
+ /**
39
+ * Whether the caller may decide the tool call `{tool}` (text) waits on in
40
+ * `{tenant}`. Without it only the chat's owner and the service role decide.
41
+ */
42
+ readonly canApprove?: string;
43
+ }
44
+ /** One scope the provider decides permissions in, such as `organization`. */
45
+ interface AuthorizationScope {
46
+ /** Lower case letters, digits and `_`, starting with a letter. */
47
+ readonly name: string;
48
+ /** The Postgres type of the scope's ids: `uuid`, `text`, `bigint` or `integer`. */
49
+ readonly idType?: string;
50
+ /** The scope this one sits in; the root scope has none. */
51
+ readonly parent?: string;
52
+ }
53
+ /** A function the templates call, which must exist and be executable by `role`. */
54
+ interface AuthorizationRequirement {
55
+ /** `schema.name`. */
56
+ readonly function: string;
57
+ /** The argument types, such as `text` or `uuid, text`. */
58
+ readonly args?: string;
59
+ readonly role: string;
60
+ }
61
+ /** A permission key the provider defines. */
62
+ interface AuthorizationPermission {
63
+ readonly key: string;
64
+ /**
65
+ * `true` when the SQL functions answer for the key completely. A key with
66
+ * row conditions they don't check is `false`, and policies refuse it.
67
+ * Unset means unknown, which counts as `false`.
68
+ */
69
+ readonly sqlComplete?: boolean;
70
+ /** The scopes it can be granted at. */
71
+ readonly scopes?: readonly string[];
72
+ }
73
+ /** A table of memberships the provider reads. */
74
+ interface AuthorizationMembership {
75
+ /** `schema.table`. */
76
+ readonly table: string;
77
+ readonly userColumn: string;
78
+ /** The scope column, or the scope every row is in. */
79
+ readonly scope: {
80
+ readonly column: string;
81
+ } | {
82
+ readonly value: string;
83
+ };
84
+ readonly idColumn: string;
85
+ }
86
+ /** A membership table whose role column points into a roles table. */
87
+ interface AuthorizationRoleSource {
88
+ /** `schema.table` of the memberships. */
89
+ readonly table: string;
90
+ readonly role: {
91
+ readonly column: string;
92
+ readonly through: {
93
+ /** `schema.table` of the roles. */
94
+ readonly table: string;
95
+ readonly id: string;
96
+ readonly column: string;
97
+ };
98
+ };
99
+ }
100
+ /** The access token hook the provider generates. */
101
+ interface AuthorizationTokenHook {
102
+ /** `schema.name`. */
103
+ readonly function: string;
104
+ /** The claim it writes the active tenant id to. */
105
+ readonly tenantClaim?: string;
106
+ /** Claims it writes itself, which a second writer would contradict. */
107
+ readonly ownedClaims: readonly string[];
108
+ /** Claims it fills from other functions, such as `features` from `better_supabase.feature_claims`. */
109
+ readonly registeredClaims?: readonly {
110
+ readonly name: string;
111
+ /** `schema.name`. */
112
+ readonly function: string;
113
+ }[];
114
+ /** A byte budget over some claims, which doctor `--as` measures (BS405). */
115
+ readonly budget?: {
116
+ readonly claims: readonly string[];
117
+ readonly bytes: number;
118
+ /** A claim the hook sets to `true` when it dropped entries to stay within the budget. */
119
+ readonly truncatedClaim?: string;
120
+ };
121
+ /** Comment lines the provider's generated files contain, so doctor recognises them. */
122
+ readonly markers?: {
123
+ /** In the file that defines the hook. */
124
+ readonly hook?: string;
125
+ /** In the migration that grants the hook's functions. */
126
+ readonly grants?: string;
127
+ };
128
+ /** The command that writes the hook's grants, for BS404. */
129
+ readonly grantsCommand?: string;
130
+ }
131
+ /**
132
+ * An authorization system the SQL modules, the policies and doctor delegate
133
+ * to. It is plain data, usually built from the provider's own output files.
134
+ */
135
+ interface AuthorizationProvider {
136
+ readonly apiVersion: 1;
137
+ /** The provider's name, for messages. */
138
+ readonly name: string;
139
+ readonly scopes: readonly AuthorizationScope[];
140
+ /** The scope tenants are. */
141
+ readonly tenantScope: string;
142
+ readonly functions: AuthorizationFunctions;
143
+ readonly requires?: readonly AuthorizationRequirement[];
144
+ readonly permissions?: readonly AuthorizationPermission[];
145
+ readonly memberships?: readonly AuthorizationMembership[];
146
+ /** Rows that say whether a user or a tenant is active. */
147
+ readonly suspension?: {
148
+ readonly user?: DisabledRow;
149
+ readonly tenant?: DisabledRow;
150
+ };
151
+ readonly roleSources?: readonly AuthorizationRoleSource[];
152
+ /** `schema.table.column` of every column that decides access (BS213). */
153
+ readonly decidingColumns?: readonly string[];
154
+ readonly tokenHook?: AuthorizationTokenHook;
155
+ /** How `canApprove` decisions are made. */
156
+ readonly approvals?: {
157
+ /** The user who asked for the tool call can't approve it. Default `false`. */
158
+ readonly distinctApprover?: boolean;
159
+ };
160
+ /** What the provider found wrong while building this, for doctor. */
161
+ readonly problems?: readonly string[];
162
+ }
163
+ /**
164
+ * The error for a provider built for another API version, or `undefined`
165
+ * for version 1.
166
+ */
167
+ declare function providerApiProblem(provider: {
168
+ readonly name?: unknown;
169
+ readonly apiVersion?: unknown;
170
+ }): string | undefined;
171
+ //#endregion
172
+ export { AuthorizationRequirement as a, AuthorizationTokenHook as c, AuthorizationProvider as i, providerApiProblem as l, AuthorizationMembership as n, AuthorizationRoleSource as o, AuthorizationPermission as r, AuthorizationScope as s, AuthorizationFunctions as t };
@@ -0,0 +1,30 @@
1
+ import { t as around } from "./shared-CBxosKK3.js";
2
+ //#region src/bridges/before-route.ts
3
+ /**
4
+ * Runs the entries ahead of a framework that owns the route and the
5
+ * response (Express, Fastify, Koa, Nitro 2, SolidStart, NestJS). A short
6
+ * circuit is the answer; otherwise the framework copies the headers and
7
+ * hands the contributions to the route. Response-phase entries see an
8
+ * empty response, so `withDbStats` and `withServerTiming` report nothing here.
9
+ */
10
+ function beforeRoute(entries) {
11
+ const run = around(entries);
12
+ return async (request, env) => {
13
+ let contributions;
14
+ const marker = new Response(null);
15
+ const response = await run(request, env, (handed) => {
16
+ contributions = handed;
17
+ return Promise.resolve(marker);
18
+ });
19
+ return contributions === void 0 ? {
20
+ reached: false,
21
+ response
22
+ } : {
23
+ reached: true,
24
+ contributions,
25
+ headers: response.headers
26
+ };
27
+ };
28
+ }
29
+ //#endregion
30
+ export { beforeRoute as t };
@@ -0,0 +1,62 @@
1
+ import { a as AnyModels, i as AnyFunctions } from "./types-6BdhkmZe.js";
2
+ import { b as Db, t as BetterSupabase } from "./define-CJJkkr1-.js";
3
+ import { s as BetterQueries } from "./index-Bepi-Hgg.js";
4
+ import { SupabaseClient } from "@supabase/supabase-js";
5
+ //#region src/client/bind.d.ts
6
+ interface AuthUser {
7
+ readonly id: string;
8
+ readonly email?: string;
9
+ readonly role?: string;
10
+ }
11
+ /**
12
+ * What the UI needs to know. Claims are decoded, not verified: RLS enforces
13
+ * access. A token refresh that changes only `exp`, `iat`, `nbf` or `jti`
14
+ * keeps the previous snapshot, so read expiry from the session, not here.
15
+ */
16
+ type AuthSnapshot = {
17
+ readonly status: "loading";
18
+ readonly user: null;
19
+ readonly claims: null;
20
+ } | {
21
+ readonly status: "signed-out";
22
+ readonly user: null;
23
+ readonly claims: null;
24
+ } | {
25
+ readonly status: "signed-in";
26
+ readonly user: AuthUser;
27
+ readonly claims: Readonly<Record<string, unknown>>;
28
+ };
29
+ interface ClientAuth {
30
+ readonly current: () => AuthSnapshot;
31
+ /** `useSyncExternalStore`-compatible. */
32
+ readonly subscribe: (listener: () => void) => () => void;
33
+ }
34
+ interface BetterClient<M extends AnyModels, F extends AnyFunctions, E, C = unknown, P = unknown> {
35
+ /** The definition the client was created from (schema metadata, specs, live queries). */
36
+ readonly betterSupabase: BetterSupabase<M, unknown, F, E, C, P>;
37
+ readonly supabase: SupabaseClient;
38
+ /** Repositories with the current session's actor and claims. */
39
+ readonly db: Db<M, F, E, SupabaseClient>;
40
+ /** TanStack Query option factories over `db`. */
41
+ readonly queries: BetterQueries<M, E, F>;
42
+ readonly auth: ClientAuth;
43
+ /**
44
+ * Stops following `supabase`'s session. Call it when the client goes away
45
+ * before the app does: Fast Refresh, tests, a client per account.
46
+ */
47
+ readonly dispose: () => void;
48
+ }
49
+ interface BindClientOptions {
50
+ /**
51
+ * `staleTime` for every query option in `queries`. Above zero, a remount
52
+ * or a window focus reuses cached rows instead of refetching them.
53
+ */
54
+ readonly staleTime?: number;
55
+ }
56
+ /**
57
+ * Repositories that follow `supabase`'s session, TanStack Query options and
58
+ * an auth store, for a supabase-js client you created yourself.
59
+ */
60
+ declare function bindClient<M extends AnyModels, D, F extends AnyFunctions, E, C = unknown, P = unknown>(betterSupabase: BetterSupabase<M, D, F, E, C, P>, supabase: SupabaseClient, options?: BindClientOptions): BetterClient<M, F, E, C, P>;
61
+ //#endregion
62
+ export { ClientAuth as a, BindClientOptions as i, AuthUser as n, bindClient as o, BetterClient as r, AuthSnapshot as t };