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,200 @@
1
+ /// <reference lib="esnext.temporal" />
2
+ import { t as AsyncResult, w as ErrorMapper } from "../../result-D7y2fT87.js";
3
+ import { L as TableKey, a as AnyModels, i as AnyFunctions } from "../../types-6BdhkmZe.js";
4
+ import { i as sqlTransport, r as rpcTransport, t as BlockTransport } from "../../block-transport-DvaoPuZ9.js";
5
+ import { i as CursorPageOptions, r as BlockTemporalOptions } from "../../block-helpers-CKtbFcRv.js";
6
+ import { t as BetterSupabase } from "../../define-CJJkkr1-.js";
7
+ import { r as EventSink, t as CloudEvent } from "../../cloud-event-C1JCc1bH.js";
8
+ import { i as ListDefinition } from "../../list-query-BRt-zDF7.js";
9
+ //#region src/blocks/comments/comments.d.ts
10
+ interface CommentsOptions extends BlockTemporalOptions {
11
+ readonly transport: BlockTransport;
12
+ /** The module schema (`sql.modules.comments.schema`), default `better_supabase`. */
13
+ readonly schema?: string;
14
+ readonly mappers?: readonly ErrorMapper[];
15
+ /**
16
+ * The user ids a comment mentions when the call passes no `mentions`,
17
+ * such as the mention nodes of a rich-text `document`. Default
18
+ * `mentionsIn(body)`.
19
+ */
20
+ readonly mentionsOf?: (comment: {
21
+ readonly body: string;
22
+ readonly document: unknown;
23
+ }) => readonly string[];
24
+ }
25
+ interface Comment {
26
+ readonly id: string;
27
+ readonly organizationId: string;
28
+ readonly subjectType: string;
29
+ readonly subjectId: string;
30
+ /** `undefined` once the author's account is deleted. */
31
+ readonly authorId: string | undefined;
32
+ /** Empty for a deleted comment. */
33
+ readonly body: string;
34
+ /** The rich-text document an editor wrote, next to `body` as its plain text. */
35
+ readonly document: unknown;
36
+ readonly mentions: readonly string[];
37
+ readonly parentId: string | undefined;
38
+ readonly createdAt: Temporal.Instant;
39
+ readonly editedAt: Temporal.Instant | undefined;
40
+ readonly deletedAt: Temporal.Instant | undefined;
41
+ }
42
+ interface NewComment {
43
+ readonly organizationId: string;
44
+ readonly subjectType: string;
45
+ readonly subjectId: string;
46
+ readonly body: string;
47
+ /** A rich-text document (any JSON); keep `body` as its plain text. */
48
+ readonly document?: unknown;
49
+ /** User ids; default `mentionsOf`, or the ids `mentionsIn(body)` finds. */
50
+ readonly mentions?: readonly string[];
51
+ /** A reply: the parent must be on the same subject. */
52
+ readonly parentId?: string;
53
+ }
54
+ interface CommentEdit {
55
+ readonly body: string;
56
+ /** A new document; `null` removes it, and leaving it out keeps the current one. */
57
+ readonly document?: unknown;
58
+ /** Default `mentionsOf`, or the ids `mentionsIn(body)` finds. */
59
+ readonly mentions?: readonly string[];
60
+ }
61
+ interface ActivityEntry {
62
+ readonly id: string;
63
+ readonly organizationId: string;
64
+ readonly type: string;
65
+ readonly actorId: string | undefined;
66
+ readonly subjectType: string | undefined;
67
+ readonly subjectId: string | undefined;
68
+ readonly summary: string | undefined;
69
+ readonly data: Readonly<Record<string, unknown>>;
70
+ readonly occurredAt: Temporal.Instant;
71
+ }
72
+ interface ActivityHistoryOptions extends CursorPageOptions<Temporal.Instant> {
73
+ /** Entries before this instant, for paging back. */
74
+ readonly cursor?: Temporal.Instant;
75
+ /** Default 50, at most 500. */
76
+ readonly limit?: number;
77
+ }
78
+ interface ListCommentsOptions extends CursorPageOptions<Temporal.Instant> {
79
+ /** Comments created after this instant, for polling a thread. */
80
+ readonly cursor?: Temporal.Instant;
81
+ /** Default 100, at most 500. */
82
+ readonly limit?: number;
83
+ /** Comments to skip, for page-number paging. */
84
+ readonly offset?: number;
85
+ }
86
+ interface Comments {
87
+ create(comment: NewComment): AsyncResult<Comment>;
88
+ /** Only the author edits; `not_found` when the caller can't see it. */
89
+ edit(id: string, edit: CommentEdit): AsyncResult<Comment>;
90
+ /** Soft-deletes (the author, or a member with `comments.moderate`). */
91
+ remove(id: string): AsyncResult<boolean>;
92
+ /** A subject's thread, oldest first, deleted comments as placeholders. */
93
+ list(organizationId: string, subjectType: string, subjectId: string, options?: ListCommentsOptions): AsyncResult<readonly Comment[]>;
94
+ /**
95
+ * How many comments each subject has that the caller can read, deleted
96
+ * ones left out, such as for a counter on each row of a list. Subjects
97
+ * without comments are 0.
98
+ */
99
+ counts(organizationId: string, subjectType: string, subjectIds: readonly string[]): AsyncResult<Readonly<Record<string, number>>>;
100
+ /**
101
+ * Copies a subject's thread to another subject in the tenant, keeping
102
+ * authors, times and replies; returns how many comments it copied. Needs a
103
+ * service-role transport.
104
+ */
105
+ copy(organizationId: string, from: {
106
+ readonly type: string;
107
+ readonly id: string;
108
+ }, to: {
109
+ readonly type: string;
110
+ readonly id: string;
111
+ }): AsyncResult<number>;
112
+ /**
113
+ * The activity feed of a tenant, newest first, or one subject's timeline
114
+ * with `subject`. Members with `activity.read` see it.
115
+ */
116
+ history(organizationId: string, subject?: {
117
+ readonly type: string;
118
+ readonly id: string;
119
+ }, options?: ActivityHistoryOptions): AsyncResult<readonly ActivityEntry[]>;
120
+ }
121
+ /**
122
+ * The user ids mentioned in a body written as `@[Ada](<user id>)`, the
123
+ * markup mention inputs produce, in order and without repeats.
124
+ */
125
+ export declare function mentionsIn(body: string): readonly string[];
126
+ /** Comments over the `comments` module's functions, as the caller. */
127
+ export declare function createComments(options: CommentsOptions): Comments;
128
+ /** What an activity entry says about an event; `null` skips the event. */
129
+ interface ActivityDescription {
130
+ readonly summary?: string;
131
+ readonly actorId?: string;
132
+ readonly subjectType?: string;
133
+ readonly subjectId?: string;
134
+ readonly data?: Readonly<Record<string, unknown>>;
135
+ }
136
+ interface ActivitySinkOptions {
137
+ /** A service-role transport: `record_activity()` is granted to `service_role` only. */
138
+ readonly transport: BlockTransport;
139
+ readonly schema?: string;
140
+ /** The outbox `typePrefix`, stripped from the stored type. Default `dev.better-supabase`. */
141
+ readonly typePrefix?: string;
142
+ /** Types to keep, exact or ending in `.*`. Default every event with a tenant. */
143
+ readonly types?: readonly string[];
144
+ /** Summarizes an event, or returns `null` to skip it. */
145
+ readonly describe?: (event: CloudEvent, type: string) => ActivityDescription | null | undefined;
146
+ }
147
+ /**
148
+ * An outbox sink that writes events into the activity feed:
149
+ * `outbox.relay('activity', activitySink({ transport }))`. Events without a
150
+ * tenant (`partitionkey`) are skipped, and a replayed event writes nothing.
151
+ */
152
+ export declare function activitySink(options: ActivitySinkOptions): EventSink;
153
+ type ActivitySort = "newest" | "oldest";
154
+ type ActivityFacet = "type" | "actor" | "subjectType" | "subjectId";
155
+ /**
156
+ * A cursor-paged list over `activity_entries` (generate types for the
157
+ * `better_supabase` schema to get it in your models), newest first,
158
+ * filtered by type, actor and subject. Members with `activity.read` see
159
+ * their tenants' entries.
160
+ */
161
+ export declare function activityListQuery<M extends AnyModels, D, Fn extends AnyFunctions, E, T extends TableKey<M>>(betterSupabase: BetterSupabase<M, D, Fn, E>, table: T, options?: {
162
+ readonly pageSize?: number;
163
+ readonly maxPageSize?: number;
164
+ }): ListDefinition<M, T, E, ActivitySort, ActivityFacet, false, "cursor">;
165
+ //#endregion
166
+ //#region src/sql/subjects.d.ts
167
+ /**
168
+ * One subject type a module's rows belong to (`options.subjects`): the
169
+ * table its ids point at, and who may read it.
170
+ */
171
+ interface Subject {
172
+ /** `schema.table`, or a table in `public`. */
173
+ readonly table: string;
174
+ /** Default `id`. */
175
+ readonly id?: string;
176
+ /**
177
+ * The id column's type, such as `uuid` or `bigint`. With it, the stored
178
+ * text id is cast to that type, so the lookup uses the subject table's
179
+ * primary key; without it the column is cast to text, which can't.
180
+ */
181
+ readonly idType?: string;
182
+ /**
183
+ * The subject's tenant column, default `organization_id`. `false` for a
184
+ * subject without a tenant (a user's own records), where the subject
185
+ * table's policies alone decide, in modules that allow it.
186
+ */
187
+ readonly tenant?: string | false;
188
+ /** A permission the caller also needs in the tenant, e.g. `projects.read`. */
189
+ readonly permission?: string;
190
+ /** Delete the module's rows for a subject when the subject row is deleted. */
191
+ readonly cascade?: boolean;
192
+ /** The module's own keys, such as a bucket per subject. */
193
+ readonly extra: Readonly<Record<string, unknown>>;
194
+ }
195
+ //#endregion
196
+ //#region src/sql/modules/comments.d.ts
197
+ /** One commentable subject type: its table, and who may read it. */
198
+ type CommentSubject = Omit<Subject, "extra">;
199
+ //#endregion
200
+ export { type ActivityDescription, type ActivityEntry, type ActivityFacet, type ActivityHistoryOptions, type ActivitySinkOptions, type ActivitySort, type BlockTransport, type Comment, type CommentEdit, type CommentSubject, type Comments, type CommentsOptions, type ListCommentsOptions, type NewComment, rpcTransport, sqlTransport };
@@ -0,0 +1,207 @@
1
+ import { n as dbError } from "../../errors-B11Duf73.js";
2
+ import { a as ok, r as err } from "../../result-DzUbqgdW.js";
3
+ import { n as rpcTransport, r as sqlTransport } from "../../block-transport-BLr-ZgLc.js";
4
+ import { D as stringsOf, O as textOf, d as isRecord, g as pageOf, h as optionalText, i as blockCall, k as toInstant, m as optionalInstant, n as applyTemporal, u as instantArg, x as recordsOf, y as recordOf } from "../../block-helpers-DWHxHsEQ.js";
5
+ import { n as defineListQuery } from "../../list-query-gl808ac1.js";
6
+ //#region src/blocks/comments/comments.ts
7
+ const MENTION = /@\[[^\]\n]{1,100}\]\(([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\)/gi;
8
+ /**
9
+ * The user ids mentioned in a body written as `@[Ada](<user id>)`, the
10
+ * markup mention inputs produce, in order and without repeats.
11
+ */
12
+ function mentionsIn(body) {
13
+ return [...new Set([...body.matchAll(MENTION)].flatMap((match) => match[1] ? [match[1].toLowerCase()] : []))];
14
+ }
15
+ function commentOf(value) {
16
+ const row = recordOf(value, "comments");
17
+ return {
18
+ id: textOf(row["id"]),
19
+ organizationId: textOf(row["organization_id"]),
20
+ subjectType: textOf(row["subject_type"]),
21
+ subjectId: textOf(row["subject_id"]),
22
+ authorId: optionalText(row["author_id"]),
23
+ body: textOf(row["body"] ?? ""),
24
+ document: row["document"] ?? null,
25
+ mentions: stringsOf(row["mentions"]),
26
+ parentId: optionalText(row["parent_id"]),
27
+ createdAt: toInstant(textOf(row["created_at"])),
28
+ editedAt: optionalInstant(row["edited_at"]),
29
+ deletedAt: optionalInstant(row["deleted_at"])
30
+ };
31
+ }
32
+ function activityOf(value) {
33
+ const row = recordOf(value, "activity_entries");
34
+ return {
35
+ id: textOf(row["id"]),
36
+ organizationId: textOf(row["organization_id"]),
37
+ type: textOf(row["type"]),
38
+ actorId: optionalText(row["actor_id"]),
39
+ subjectType: optionalText(row["subject_type"]),
40
+ subjectId: optionalText(row["subject_id"]),
41
+ summary: optionalText(row["summary"]),
42
+ data: isRecord(row["data"]) ? row["data"] : {},
43
+ occurredAt: toInstant(textOf(row["occurred_at"]))
44
+ };
45
+ }
46
+ /** Comments over the `comments` module's functions, as the caller. */
47
+ function createComments(options) {
48
+ applyTemporal(options);
49
+ const call = blockCall(options.transport, options.schema, options.mappers);
50
+ const mentionsOf = (body, document) => options.mentionsOf ? options.mentionsOf({
51
+ body,
52
+ document
53
+ }) : mentionsIn(body);
54
+ return {
55
+ create: (comment) => call("create_comment", {
56
+ tenant: comment.organizationId,
57
+ subject_type: comment.subjectType,
58
+ subject_id: comment.subjectId,
59
+ body: comment.body,
60
+ mentions: comment.mentions ?? mentionsOf(comment.body, comment.document),
61
+ parent: comment.parentId,
62
+ document: comment.document
63
+ }, commentOf),
64
+ edit: (id, edit) => call("edit_comment", {
65
+ id,
66
+ body: edit.body,
67
+ mentions: edit.mentions ?? mentionsOf(edit.body, edit.document),
68
+ document: edit.document ?? void 0,
69
+ ...edit.document === null ? { clear_document: true } : {}
70
+ }, (value) => value).andThen((value) => Promise.resolve(value === null || value === void 0 ? err(dbError("not_found", "No comment you can edit has this id", { hint: "COMMENT_NOT_FOUND" })) : ok(commentOf(value)))),
71
+ remove: (id) => call("delete_comment", { id }, (value) => value === true),
72
+ list: (organizationId, subjectType, subjectId, list = {}) => call("list_comments", {
73
+ tenant: organizationId,
74
+ subject_type: subjectType,
75
+ subject_id: subjectId,
76
+ after: instantArg(pageOf(list).cursor),
77
+ max_rows: list.limit,
78
+ skip: list.offset
79
+ }, (value) => recordsOf(value, "list_comments").map(commentOf)),
80
+ counts: (organizationId, subjectType, subjectIds) => call("comment_counts", {
81
+ tenant: organizationId,
82
+ subject_type: subjectType,
83
+ subject_ids: [...subjectIds]
84
+ }, (value) => {
85
+ const found = isRecord(value) ? value : {};
86
+ return Object.fromEntries(subjectIds.map((id) => [id, Number(found[id] ?? 0)]));
87
+ }),
88
+ copy: (organizationId, from, to) => call("copy_comments", {
89
+ tenant: organizationId,
90
+ from_type: from.type,
91
+ from_id: from.id,
92
+ to_type: to.type,
93
+ to_id: to.id
94
+ }, (value) => Number(value ?? 0)),
95
+ history: (organizationId, subject, history = {}) => call("list_activity", {
96
+ tenant: organizationId,
97
+ subject_type: subject?.type,
98
+ subject_id: subject?.id,
99
+ before: instantArg(pageOf(history).cursor),
100
+ max_rows: history.limit
101
+ }, (value) => recordsOf(value, "list_activity").map(activityOf))
102
+ };
103
+ }
104
+ const matches = (patterns, type) => patterns.some((pattern) => pattern.endsWith(".*") ? type.startsWith(pattern.slice(0, -1)) : pattern === type);
105
+ const firstText = (data, keys) => {
106
+ for (const key of keys) {
107
+ const value = optionalText(data[key]);
108
+ if (value !== void 0) return value;
109
+ }
110
+ };
111
+ /** `comments/<id>` as `{ type: "comment", id }`, the shape block subjects use. */
112
+ function subjectOf(subject) {
113
+ const slash = subject?.indexOf("/") ?? -1;
114
+ if (subject === void 0 || slash < 1) return void 0;
115
+ const plural = subject.slice(0, slash);
116
+ return {
117
+ type: plural.endsWith("s") ? plural.slice(0, -1) : plural,
118
+ id: subject.slice(slash + 1)
119
+ };
120
+ }
121
+ /**
122
+ * An outbox sink that writes events into the activity feed:
123
+ * `outbox.relay('activity', activitySink({ transport }))`. Events without a
124
+ * tenant (`partitionkey`) are skipped, and a replayed event writes nothing.
125
+ */
126
+ function activitySink(options) {
127
+ const schema = options.schema ?? "better_supabase";
128
+ const prefix = `${options.typePrefix ?? "dev.better-supabase"}.`;
129
+ return { async send(events) {
130
+ const entries = [];
131
+ for (const event of events) {
132
+ const tenant = optionalText(event["partitionkey"]);
133
+ if (tenant === void 0) continue;
134
+ const type = event.type.startsWith(prefix) ? event.type.slice(prefix.length) : event.type;
135
+ if (options.types && !matches(options.types, type)) continue;
136
+ const described = options.describe ? options.describe(event, type) : {};
137
+ if (described === null) continue;
138
+ const data = isRecord(event.data) ? event.data : {};
139
+ const subject = subjectOf(event.subject);
140
+ entries.push({
141
+ event_id: event.id,
142
+ organization_id: tenant,
143
+ type,
144
+ actor_id: described?.actorId ?? firstText(data, [
145
+ "actorId",
146
+ "authorId",
147
+ "userId"
148
+ ]),
149
+ subject_type: described?.subjectType ?? optionalText(data["subjectType"]) ?? subject?.type,
150
+ subject_id: described?.subjectId ?? optionalText(data["subjectId"]) ?? subject?.id,
151
+ summary: described?.summary,
152
+ data: described?.data ?? data,
153
+ occurred_at: event.time
154
+ });
155
+ }
156
+ if (entries.length > 0) await options.transport.call(schema, "record_activity", { batch: { entries } });
157
+ } };
158
+ }
159
+ const FACETS = [
160
+ [
161
+ "type",
162
+ "type",
163
+ "type"
164
+ ],
165
+ [
166
+ "actor",
167
+ "actor_id",
168
+ "actorId"
169
+ ],
170
+ [
171
+ "subjectType",
172
+ "subject_type",
173
+ "subjectType"
174
+ ],
175
+ [
176
+ "subjectId",
177
+ "subject_id",
178
+ "subjectId"
179
+ ]
180
+ ];
181
+ /**
182
+ * A cursor-paged list over `activity_entries` (generate types for the
183
+ * `better_supabase` schema to get it in your models), newest first,
184
+ * filtered by type, actor and subject. Members with `activity.read` see
185
+ * their tenants' entries.
186
+ */
187
+ function activityListQuery(betterSupabase, table, options = {}) {
188
+ const meta = betterSupabase.meta.tables[table];
189
+ if (!meta) throw new TypeError(`activityListQuery: unknown table "${table}"`);
190
+ const camel = meta.columns["occurredAt"] !== void 0;
191
+ const facets = Object.fromEntries(FACETS.map(([key, snake, camelName]) => [key, camel ? camelName : snake]).filter(([, column]) => meta.columns[column] !== void 0));
192
+ const occurredAt = camel ? "occurredAt" : "occurred_at";
193
+ const config = {
194
+ facets,
195
+ sorts: {
196
+ newest: [{ [occurredAt]: "desc" }, { id: "desc" }],
197
+ oldest: [{ [occurredAt]: "asc" }, { id: "asc" }]
198
+ },
199
+ defaultSort: "newest",
200
+ pagination: "cursor",
201
+ ...options.pageSize === void 0 ? {} : { pageSize: options.pageSize },
202
+ ...options.maxPageSize === void 0 ? {} : { maxPageSize: options.maxPageSize }
203
+ };
204
+ return defineListQuery(betterSupabase, table, config);
205
+ }
206
+ //#endregion
207
+ export { activityListQuery, activitySink, createComments, mentionsIn, rpcTransport, sqlTransport };
@@ -0,0 +1,3 @@
1
+ import { i as sqlTransport, r as rpcTransport, t as BlockTransport } from "../../block-transport-DvaoPuZ9.js";
2
+ import { a as ConnectorSession, c as ConnectorsOptions, i as ConnectorServerFields, l as FingerprintStatus, n as ConnectorGrant, o as ConnectorTransport, r as ConnectorServer, s as Connectors, t as ConnectorAuth, u as createConnectors } from "../../connectors-hkLCwyEz.js";
3
+ export { type BlockTransport, type ConnectorAuth, type ConnectorGrant, type ConnectorServer, type ConnectorServerFields, type ConnectorSession, type ConnectorTransport, type Connectors, type ConnectorsOptions, type FingerprintStatus, createConnectors, rpcTransport, sqlTransport };
@@ -0,0 +1,164 @@
1
+ import { n as dbError } from "../../errors-B11Duf73.js";
2
+ import { a as ok, t as AsyncResult } from "../../result-DzUbqgdW.js";
3
+ import { n as rpcTransport, r as sqlTransport } from "../../block-transport-BLr-ZgLc.js";
4
+ import { D as stringsOf, O as textOf, a as credentialRefOf, d as isRecord, h as optionalText, i as blockCall, k as toInstant, m as optionalInstant, n as applyTemporal, u as instantArg, x as recordsOf, y as recordOf } from "../../block-helpers-DWHxHsEQ.js";
5
+ import { n as revokeIfConfigured } from "../../compose-BIBNgAnq.js";
6
+ //#region src/blocks/connectors/connectors.ts
7
+ const TRANSPORTS = /* @__PURE__ */ new Set(["http", "sse"]);
8
+ const AUTHS = /* @__PURE__ */ new Set([
9
+ "none",
10
+ "oauth",
11
+ "header"
12
+ ]);
13
+ const STATUSES = /* @__PURE__ */ new Set([
14
+ "approved",
15
+ "pending",
16
+ "rejected"
17
+ ]);
18
+ const instant = (value) => value instanceof Date ? toInstant(value) : toInstant(textOf(value));
19
+ function grantOf(value) {
20
+ const row = recordOf(value, "connector_grants");
21
+ const credentialRef = credentialRefOf(row["credential_ref"]);
22
+ if (credentialRef === void 0) throw new TypeError("connector_grants returned a grant without a ref");
23
+ return {
24
+ id: textOf(row["id"]),
25
+ userId: textOf(row["user_id"]),
26
+ serverId: textOf(row["server_id"]),
27
+ organizationId: textOf(row["organization_id"]),
28
+ credentialRef,
29
+ scopes: stringsOf(row["scopes"]),
30
+ expiresAt: optionalInstant(row["expires_at"]),
31
+ grantedAt: instant(row["granted_at"]),
32
+ revokedAt: optionalInstant(row["revoked_at"])
33
+ };
34
+ }
35
+ function serverOf(value) {
36
+ const row = recordOf(value, "connector_servers");
37
+ const transport = textOf(row["transport"]);
38
+ const authType = textOf(row["auth_type"]);
39
+ return {
40
+ id: textOf(row["id"]),
41
+ organizationId: textOf(row["organization_id"]),
42
+ name: textOf(row["name"]),
43
+ url: textOf(row["url"]),
44
+ transport: TRANSPORTS.has(transport) ? transport : "http",
45
+ authType: AUTHS.has(authType) ? authType : "none",
46
+ credentialRef: credentialRefOf(row["credential_ref"]),
47
+ scopes: stringsOf(row["scopes"]),
48
+ clientMetadata: isRecord(row["client_metadata"]) ? row["client_metadata"] : {},
49
+ enabled: row["enabled"] !== false,
50
+ grant: isRecord(row["grant"]) ? grantOf(row["grant"]) : void 0,
51
+ createdAt: instant(row["created_at"]),
52
+ updatedAt: instant(row["updated_at"])
53
+ };
54
+ }
55
+ function fieldsArg(fields) {
56
+ const out = {};
57
+ if (fields.name !== void 0) out["name"] = fields.name;
58
+ if (fields.url !== void 0) out["url"] = fields.url;
59
+ if (fields.transport !== void 0) out["transport"] = fields.transport;
60
+ if (fields.authType !== void 0) out["auth_type"] = fields.authType;
61
+ if (fields.credentialRef !== void 0) out["credential_ref"] = fields.credentialRef;
62
+ if (fields.scopes !== void 0) out["scopes"] = fields.scopes;
63
+ if (fields.clientMetadata !== void 0) out["client_metadata"] = fields.clientMetadata;
64
+ if (fields.enabled !== void 0) out["enabled"] = fields.enabled;
65
+ return out;
66
+ }
67
+ const notFound = () => dbError("not_found", "No connector you can see has this id", { hint: "CONNECTOR_NOT_FOUND" });
68
+ /** MCP servers, per-user grants, sessions and tool list fingerprints. */
69
+ function createConnectors(options) {
70
+ applyTemporal(options);
71
+ const call = blockCall(options.transport, options.schema, options.mappers);
72
+ const service = blockCall(options.service ?? options.transport, options.schema, options.mappers);
73
+ const credentials = options.credentials;
74
+ const revokeCredential = (grant) => revokeIfConfigured(credentials, grant.credentialRef, { subject: {
75
+ type: "user",
76
+ id: grant.userId
77
+ } }).map(() => true);
78
+ const revokeAll = (grants) => AsyncResult.from(async () => {
79
+ for (const grant of grants) {
80
+ const revoked = await revokeCredential(grant);
81
+ if (!revoked.ok) return revoked;
82
+ }
83
+ return ok(grants.length);
84
+ });
85
+ const save = (organizationId, serverId, fields) => call("save_connector_server", {
86
+ tenant: organizationId,
87
+ id: serverId,
88
+ fields: fieldsArg(fields)
89
+ }, serverOf);
90
+ const decide = (serverId, fingerprint, approved) => call("decide_connector_fingerprint", {
91
+ server_id: serverId,
92
+ fingerprint,
93
+ approved
94
+ }, (value) => value === true);
95
+ return {
96
+ servers: {
97
+ list: (organizationId) => call("list_connector_servers", { tenant: organizationId }, (value) => recordsOf(value, "list_connector_servers").map(serverOf)),
98
+ get: (serverId, getOptions = {}) => (getOptions.ownerId === void 0 ? call : service)("get_connector", {
99
+ id: serverId,
100
+ owner: getOptions.ownerId
101
+ }, (value) => value).andThen((value) => isRecord(value) ? AsyncResult.ok(serverOf(value)) : AsyncResult.err(notFound())),
102
+ create: (organizationId, server) => save(organizationId, void 0, server),
103
+ update: (organizationId, serverId, fields) => save(organizationId, serverId, fields),
104
+ remove: (serverId) => call("delete_connector_server", { id: serverId }, (value) => recordsOf(value, "delete_connector_server").map(grantOf)).andThen(revokeAll)
105
+ },
106
+ grants: {
107
+ record: (serverId, userId, credentialRef, recordOptions = {}) => service("record_connector_grant", {
108
+ server_id: serverId,
109
+ owner: userId,
110
+ credential_ref: credentialRef,
111
+ scopes: recordOptions.scopes,
112
+ expires_at: instantArg(recordOptions.expiresAt)
113
+ }, (value) => recordOf(value, "record_connector_grant")).andThen((row) => {
114
+ const grant = grantOf(row["grant"]);
115
+ const replaced = isRecord(row["replaced"]) ? grantOf(row["replaced"]) : void 0;
116
+ return replaced !== void 0 && JSON.stringify(replaced.credentialRef) !== JSON.stringify(grant.credentialRef) ? revokeCredential(replaced).map(() => grant) : AsyncResult.ok(grant);
117
+ }),
118
+ revoke: (grantId) => call("revoke_connector_grant", { id: grantId }, (value) => value).andThen((value) => isRecord(value) ? revokeCredential(grantOf(value)) : AsyncResult.ok(false)),
119
+ expiring: (before, expiringOptions = {}) => service("expiring_connector_grants", {
120
+ before: before.toString(),
121
+ max_rows: expiringOptions.limit
122
+ }, (value) => recordsOf(value, "expiring_connector_grants").map(grantOf)),
123
+ renew: (grantId, expiresAt) => service("renew_connector_grant", {
124
+ id: grantId,
125
+ expires_at: expiresAt.toString()
126
+ }, (value) => value === true)
127
+ },
128
+ sessions: {
129
+ get: (serverId, chatKey) => call("get_connector_session", {
130
+ server_id: serverId,
131
+ chat_key: chatKey ?? ""
132
+ }, (value) => isRecord(value) ? {
133
+ sessionId: optionalText(value["session_id"]),
134
+ initializeResult: isRecord(value["initialize_result"]) ? value["initialize_result"] : void 0,
135
+ expiresAt: instant(value["expires_at"])
136
+ } : void 0),
137
+ save: (serverId, session) => call("save_connector_session", {
138
+ server_id: serverId,
139
+ chat_key: session.chatKey ?? "",
140
+ session_id: session.sessionId,
141
+ initialize_result: session.initializeResult
142
+ }, (value) => value === true),
143
+ forget: (serverId, chatKey) => call("save_connector_session", {
144
+ server_id: serverId,
145
+ chat_key: chatKey ?? ""
146
+ }, (value) => value === true),
147
+ purge: () => service("purge_connector_sessions", {}, Number)
148
+ },
149
+ fingerprints: {
150
+ check: (serverId, fingerprint, tools) => call("check_connector_fingerprint", {
151
+ server_id: serverId,
152
+ fingerprint,
153
+ tools
154
+ }, (value) => {
155
+ const status = textOf(value);
156
+ return STATUSES.has(status) ? status : "pending";
157
+ }),
158
+ approve: (serverId, fingerprint) => decide(serverId, fingerprint, true),
159
+ reject: (serverId, fingerprint) => decide(serverId, fingerprint, false)
160
+ }
161
+ };
162
+ }
163
+ //#endregion
164
+ export { createConnectors, rpcTransport, sqlTransport };