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,99 @@
1
+ import { b as DbError } from "./result-D7y2fT87.js";
2
+ import { it as QuerySpec } from "./define-CJJkkr1-.js";
3
+ import { n as TemplateValues } from "./template-CwO38Do8.js";
4
+ import { a as ClientAuth } from "./bind-Bu_ZNa3W.js";
5
+ import { T as TopicMessage, _ as RealtimeClient, a as LiveSource, g as PresenceSubscription, p as PresenceOptions, r as LiveCountSeed, y as SubscribeOptions } from "./index-DunNRdnT.js";
6
+ import { SupabaseClient } from "@supabase/supabase-js";
7
+ import { QueryClient } from "@tanstack/query-core";
8
+ //#region src/bindings/client.d.ts
9
+ /** The parts of `createClient()` the bindings need. */
10
+ interface ClientLike {
11
+ readonly betterSupabase: LiveSource;
12
+ readonly supabase: SupabaseClient;
13
+ readonly auth: ClientAuth;
14
+ readonly db: object;
15
+ readonly queries: object;
16
+ }
17
+ /** What a `bs.action()` Server Action or server function resolves to. */
18
+ type ActionResultOf<T> = {
19
+ readonly ok: true;
20
+ readonly data: T;
21
+ readonly error: null;
22
+ } | {
23
+ readonly ok: false;
24
+ readonly data: null;
25
+ readonly error: DbError;
26
+ };
27
+ /**
28
+ * The input `useAction` passes: a `bs.action()` with an `input` schema also
29
+ * accepts `FormData`, which belongs to `useActionForm`.
30
+ */
31
+ type ActionInputOf<I> = [Exclude<I, FormData>] extends [never] ? I : Exclude<I, FormData>;
32
+ interface UseActionOptions<I, T> {
33
+ readonly onSuccess?: (data: T, input: I) => void;
34
+ readonly onError?: (error: DbError, input: I) => void;
35
+ }
36
+ interface BroadcastOptions extends Omit<SubscribeOptions, "onStatus"> {
37
+ /**
38
+ * A supabase-js client to subscribe with, for apps without the provider.
39
+ * It resubscribes when the client's user changes. Defaults to the
40
+ * provider's client.
41
+ */
42
+ readonly client?: SupabaseClient;
43
+ /** The query client `invalidate` refetches with. Defaults to the provider's. */
44
+ readonly queryClient?: QueryClient;
45
+ /**
46
+ * Refetch after each message: table keys (every query that read one of
47
+ * them), or a function returning query keys. Needs a `queryClient`, here
48
+ * or on the provider.
49
+ */
50
+ readonly invalidate?: readonly string[] | ((message: TopicMessage) => readonly (readonly unknown[])[]);
51
+ }
52
+ interface LiveQueryHookOptions {
53
+ /**
54
+ * Tenant for tenant-scoped tables. Defaults to the `config.claims.tenant`
55
+ * claim (`tenant_id`, top-level or in `app_metadata`).
56
+ */
57
+ readonly tenant?: string;
58
+ /** Defaults to 100 ms. */
59
+ readonly debounceMs?: number;
60
+ }
61
+ interface LiveCountHookOptions extends LiveQueryHookOptions {
62
+ /** The count to show before the first fetch, e.g. from the server. */
63
+ readonly initial?: number;
64
+ }
65
+ interface PresenceHookOptions<I> {
66
+ /**
67
+ * The state this client shares while joined. It is tracked after the
68
+ * join and tracked again when its JSON changes; `null` stays untracked.
69
+ */
70
+ readonly state?: I | null;
71
+ /** A supabase-js client for apps without the provider. */
72
+ readonly client?: SupabaseClient;
73
+ }
74
+ /** The parts of a `defineTopic(..., { presence })` topic the bindings use. */
75
+ interface PresenceTopic<P extends string, I, O> {
76
+ topic(values: TemplateValues<P>): string;
77
+ match(topic: string): TemplateValues<P> | null;
78
+ subscribe(client: RealtimeClient, values: TemplateValues<P>, handlers: Readonly<Record<string, never>>, options?: SubscribeOptions & PresenceOptions<O>): PresenceSubscription<I, O>;
79
+ }
80
+ /** A count spec or a `bs.liveCount()` seed. */
81
+ type LiveCountSource = QuerySpec<string, "count", number> | LiveCountSeed | null | undefined;
82
+ interface ActionState<I, T> {
83
+ /** True while a run is in flight. */
84
+ readonly pending: boolean;
85
+ /** The inputs of the runs in flight, e.g. to dim one table row. */
86
+ readonly pendingInputs: readonly I[];
87
+ /** The input of the latest run in flight. */
88
+ readonly pendingInput: I | undefined;
89
+ /** The data of the last successful run. */
90
+ readonly data: T | undefined;
91
+ /** The error of the last run, until the next one starts. */
92
+ readonly error: DbError | undefined;
93
+ }
94
+ //#endregion
95
+ //#region src/react/field-errors.d.ts
96
+ /** The first message per top-level field of a `validation` error. */
97
+ declare function fieldErrorsOf(error: DbError | undefined): Readonly<Partial<Record<string, string>>>;
98
+ //#endregion
99
+ export { BroadcastOptions as a, LiveCountSource as c, PresenceTopic as d, UseActionOptions as f, ActionState as i, LiveQueryHookOptions as l, ActionInputOf as n, ClientLike as o, ActionResultOf as r, LiveCountHookOptions as s, fieldErrorsOf as t, PresenceHookOptions as u };
@@ -0,0 +1,13 @@
1
+ //#region src/react/field-errors.ts
2
+ /** The first message per top-level field of a `validation` error. */
3
+ function fieldErrorsOf(error) {
4
+ if (error?.kind !== "validation") return {};
5
+ const fields = {};
6
+ for (const issue of error.issues) {
7
+ const key = issue.path?.[0];
8
+ if (typeof key === "string" && fields[key] === void 0) fields[key] = issue.message;
9
+ }
10
+ return fields;
11
+ }
12
+ //#endregion
13
+ export { fieldErrorsOf as t };
@@ -0,0 +1,51 @@
1
+ import { n as toSession } from "./view-BeFcRV6G.js";
2
+ import { t as withBetterSupabase } from "./composite-DhE66P5u.js";
3
+ //#region src/server/framework.ts
4
+ /** Every caller: the framework factories guard per loader, action or route instead. */
5
+ const EVERY_CALLER = [
6
+ "user",
7
+ "anonymous",
8
+ "anon",
9
+ "service",
10
+ "apiKey"
11
+ ];
12
+ /** The `withBetterSupabase` entry the framework factories run, admitting every caller. */
13
+ function frameworkEntry(server, options, expose) {
14
+ return withBetterSupabase(server, {
15
+ refresh: options.refresh ?? "navigation",
16
+ allow: EVERY_CALLER,
17
+ expose,
18
+ ...options.checkSession === void 0 ? {} : { checkSession: options.checkSession },
19
+ ...options.cookieScopes === void 0 ? {} : { cookieScopes: options.cookieScopes },
20
+ ...options.encode === void 0 ? {} : { encode: options.encode },
21
+ ...options.waitUntil === void 0 ? {} : { waitUntil: options.waitUntil }
22
+ });
23
+ }
24
+ /** The contributions plus the serializable `session`. */
25
+ function localsOf(contributions) {
26
+ const base = contributions;
27
+ return {
28
+ ...base,
29
+ session: toSession(base.bs.auth)
30
+ };
31
+ }
32
+ function isWaitUntilHost(value) {
33
+ return typeof value === "object" && value !== null && "waitUntil" in value && typeof value.waitUntil === "function";
34
+ }
35
+ /** `platform.context.waitUntil` on Cloudflare, `platform.waitUntil` elsewhere. */
36
+ function platformWaitUntil(platform) {
37
+ if (typeof platform !== "object" || platform === null) return void 0;
38
+ const context = "context" in platform ? platform.context : platform;
39
+ if (!isWaitUntilHost(context)) return void 0;
40
+ return (promise) => {
41
+ context.waitUntil(promise);
42
+ };
43
+ }
44
+ /** The form body as `FormData`, JSON as a value, nothing as `undefined`. */
45
+ async function actionInput(request) {
46
+ const type = request.headers.get("content-type") ?? "";
47
+ if (type.includes("application/json")) return request.json();
48
+ if (type.includes("form-data") || type.includes("application/x-www-form-urlencoded")) return request.formData();
49
+ }
50
+ //#endregion
51
+ export { platformWaitUntil as a, localsOf as i, actionInput as n, frameworkEntry as r, EVERY_CALLER as t };
@@ -0,0 +1,25 @@
1
+ import { a as AnyModels, i as AnyFunctions } from "./types-6BdhkmZe.js";
2
+ import { o as ServerOptions } from "./server-CeVeeXwz.js";
3
+ import { t as AuthSession } from "./view-DbxLNu8L.js";
4
+ import { a as SessionEntryConfig, n as BetterSupabaseContributions } from "./composite-Bt1YK3Ke.js";
5
+ import { t as RefusalRedirects } from "./refusal-D1rgbzNq.js";
6
+ //#region src/server/framework.d.ts
7
+ /** What the framework factories (`createSvelteKit`, `createReactRouter`, `createTanStackStart`) take. */
8
+ interface FrameworkOptions extends ServerOptions, RefusalRedirects, Pick<SessionEntryConfig, "checkSession" | "cookieScopes" | "encode"> {
9
+ /**
10
+ * When the middleware refreshes an expired session cookie. Defaults to
11
+ * `'navigation'`: page loads, client navigations and form posts.
12
+ */
13
+ readonly refresh?: SessionEntryConfig["refresh"];
14
+ /** Include internal error messages in Problem Details. Defaults to development only. */
15
+ readonly exposeErrors?: boolean;
16
+ /** Keeps the invocation alive for event sink sends, e.g. the Workers `ctx.waitUntil`. */
17
+ readonly waitUntil?: (promise: Promise<unknown>) => void;
18
+ }
19
+ /** The keys the framework factories put on `locals` or `context`. */
20
+ type FrameworkLocals<M extends AnyModels, F extends AnyFunctions, E, C = unknown, P = unknown> = BetterSupabaseContributions<M, F, E, C, P> & {
21
+ /** The caller as plain data, safe to return from a loader to the browser. */
22
+ readonly session: AuthSession<C, P>;
23
+ };
24
+ //#endregion
25
+ export { FrameworkOptions as n, FrameworkLocals as t };
@@ -0,0 +1,130 @@
1
+ /// <reference lib="esnext.temporal" />
2
+ import { b as DbError } from "./result-D7y2fT87.js";
3
+ import { m as JobHandler } from "./queue-CLJurhdy.js";
4
+ import { g as AiModelInput, i as AiChat } from "./ai-chat-7amvXjmQ.js";
5
+ import { i as Usage, m as UsageStatus, s as UsageEntry } from "./usage-CrvrL2vw.js";
6
+ import { JSONValue, LanguageModelUsage } from "ai";
7
+ //#region src/ai-sdk/gateway.d.ts
8
+ /** Who a generation is for, as the AI Gateway reports spend. */
9
+ interface GatewayContext {
10
+ readonly userId?: string;
11
+ readonly organizationId?: string;
12
+ readonly chatId?: string;
13
+ /** What the generation is for, such as `chat` or `summary`. */
14
+ readonly feature?: string;
15
+ }
16
+ /** The AI Gateway's own options (`providerOptions.gateway`). */
17
+ type GatewayOptions = {
18
+ readonly [key: string]: JSONValue | undefined;
19
+ };
20
+ /**
21
+ * `providerOptions` for `streamText` and agents that attribute the spend in
22
+ * the AI Gateway: `user` is the user id, and `tags` name the tenant, the chat
23
+ * and the feature. `extra` adds gateway options such as `order` or
24
+ * `zeroDataRetention`; its `tags` are appended.
25
+ */
26
+ declare function gatewayOptions(context: GatewayContext, extra?: GatewayOptions): {
27
+ readonly gateway: GatewayOptions;
28
+ };
29
+ /** Token counts and the gateway's cost of one generation. */
30
+ interface AiUsage {
31
+ readonly inputTokens: number;
32
+ readonly outputTokens: number;
33
+ readonly totalTokens: number;
34
+ readonly cachedInputTokens: number;
35
+ readonly reasoningTokens: number;
36
+ /** The gateway's generation id, for `costBackfill` when the cost isn't known yet. */
37
+ readonly generationId: string | undefined;
38
+ /** The cost in millionths of a US dollar, when the gateway reported it. */
39
+ readonly costMicroUsd: number | undefined;
40
+ }
41
+ /** What `usageOf` reads: a `streamText` or `generateText` result, awaited. */
42
+ interface UsageSource {
43
+ readonly totalUsage?: Partial<LanguageModelUsage> | undefined;
44
+ readonly usage?: Partial<LanguageModelUsage> | undefined;
45
+ readonly providerMetadata?: unknown;
46
+ }
47
+ /** The usage of a finished generation, with the gateway's cost when it has one. */
48
+ declare function usageOf(source: UsageSource): AiUsage;
49
+ /** The usage meters `usageEntries` writes, by default `ai.input_tokens` and `ai.output_tokens`. */
50
+ interface AiUsageMeters {
51
+ readonly input?: string;
52
+ readonly output?: string;
53
+ /** Micro-USD; left out unless named. */
54
+ readonly cost?: string;
55
+ }
56
+ /** The entries to pass to `usage.recordMany` for a generation. */
57
+ declare function usageEntries(usage: AiUsage, meters?: AiUsageMeters): UsageEntry[];
58
+ /**
59
+ * A 429 Problem Details response for a quota or rate limit: pass the
60
+ * `quota_exceeded` or `rate_limited` error a block returned, or the
61
+ * `UsageStatus` of a meter with nothing left. It carries `Retry-After`.
62
+ */
63
+ declare function problem429(decision: DbError | UsageStatus, now?: Temporal.Instant): Response;
64
+ /**
65
+ * The quota check `createAssistant` runs before a generation: the error when
66
+ * `meter` has nothing left for the tenant, otherwise `undefined`.
67
+ */
68
+ declare function usageQuota(usage: Pick<Usage, "current">, meter: string): (organizationId: string) => Promise<DbError | undefined>;
69
+ /** The AI Gateway calls the job handlers make (`gateway` from `ai`). */
70
+ interface GatewayClient {
71
+ getGenerationInfo(params: {
72
+ id: string;
73
+ }): PromiseLike<{
74
+ readonly totalCost: number;
75
+ readonly model?: string;
76
+ readonly promptTokens?: number;
77
+ readonly completionTokens?: number;
78
+ }>;
79
+ getAvailableModels(): PromiseLike<{
80
+ readonly models: readonly GatewayModelEntry[];
81
+ }>;
82
+ }
83
+ /** One model of `gateway.getAvailableModels()`. */
84
+ interface GatewayModelEntry {
85
+ readonly id: string;
86
+ readonly name: string;
87
+ readonly description?: string | null;
88
+ readonly pricing?: Readonly<Record<string, string | undefined>> | null;
89
+ readonly modelType?: string | null;
90
+ }
91
+ /** The payload of a cost backfill job. */
92
+ interface CostBackfillPayload {
93
+ readonly generationId: string;
94
+ /** With `usage` and `meter`, the cost is also recorded on the tenant's meter. */
95
+ readonly organizationId?: string;
96
+ }
97
+ interface CostBackfillOptions {
98
+ /** The chat block with a service transport. */
99
+ readonly chats: Pick<AiChat, "runs">;
100
+ readonly gateway: Pick<GatewayClient, "getGenerationInfo">;
101
+ readonly usage?: Pick<Usage, "record">;
102
+ /** The micro-USD meter, such as `ai.cost`. */
103
+ readonly meter?: string;
104
+ }
105
+ /**
106
+ * A job handler that looks up a generation's cost in the AI Gateway and
107
+ * writes it to the run (`runs.setCost`). Enqueue it when `usageOf` found no
108
+ * cost; it throws so the queue retries while the gateway doesn't know it yet.
109
+ */
110
+ declare function costBackfill(options: CostBackfillOptions): JobHandler<CostBackfillPayload>;
111
+ interface ModelCatalogRefreshOptions {
112
+ /** The chat block with a service transport. */
113
+ readonly chats: Pick<AiChat, "models">;
114
+ readonly gateway: Pick<GatewayClient, "getAvailableModels">;
115
+ /** Keeps a model; defaults to language models. */
116
+ readonly filter?: (model: GatewayModelEntry) => boolean;
117
+ /** Plans per model id, for models only some plans may use. */
118
+ readonly plans?: (model: GatewayModelEntry) => readonly string[] | undefined;
119
+ /** Deletes catalog rows the gateway no longer lists. Defaults to false. */
120
+ readonly prune?: boolean;
121
+ }
122
+ /** The catalog row for a gateway model. */
123
+ declare function modelInputOf(model: GatewayModelEntry, plans?: readonly string[]): AiModelInput;
124
+ /**
125
+ * A job handler that copies the AI Gateway's model list into the chat
126
+ * block's catalog (`models.upsert`); schedule it daily.
127
+ */
128
+ declare function modelCatalogRefresh(options: ModelCatalogRefreshOptions): JobHandler<unknown>;
129
+ //#endregion
130
+ export { usageOf as _, GatewayClient as a, GatewayOptions as c, costBackfill as d, gatewayOptions as f, usageEntries as g, problem429 as h, CostBackfillPayload as i, ModelCatalogRefreshOptions as l, modelInputOf as m, AiUsageMeters as n, GatewayContext as o, modelCatalogRefresh as p, CostBackfillOptions as r, GatewayModelEntry as s, AiUsage as t, UsageSource as u, usageQuota as v };
@@ -0,0 +1,265 @@
1
+ //#region src/blocks/workflow-builder/graph.ts
2
+ /** Kept local: the static executor runs this file inside the workflow VM. */
3
+ const isGraphRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
4
+ const WORKFLOW_NODE_KINDS = [
5
+ "trigger",
6
+ "step",
7
+ "sleep",
8
+ "approval",
9
+ "condition"
10
+ ];
11
+ const OPERATORS = [
12
+ "equals",
13
+ "notEquals",
14
+ "exists",
15
+ "truthy",
16
+ "greaterThan",
17
+ "lessThan",
18
+ "contains"
19
+ ];
20
+ const DURATION = /^(\d+)(ms|s|m|h|d)$/;
21
+ const UNIT_MS = /* @__PURE__ */ new Map([
22
+ ["ms", 1],
23
+ ["s", 1e3],
24
+ ["m", 6e4],
25
+ ["h", 36e5],
26
+ ["d", 864e5]
27
+ ]);
28
+ /** A sleep duration in milliseconds; `undefined` when `value` isn't one. */
29
+ function durationMs(value) {
30
+ if (typeof value === "number") return Number.isFinite(value) && value > 0 ? Math.round(value) : void 0;
31
+ if (typeof value !== "string") return void 0;
32
+ const match = DURATION.exec(value.trim());
33
+ if (match === null) return void 0;
34
+ const factor = UNIT_MS.get(match[2] ?? "");
35
+ const ms = Number(match[1]) * (factor ?? 0);
36
+ return ms > 0 ? ms : void 0;
37
+ }
38
+ const CONDITION_PATH = /^(input|results)(\.[^.]+)*$/;
39
+ /** The node's condition, or `undefined` when its config isn't one. */
40
+ function conditionOf(node) {
41
+ const config = node.config;
42
+ if (config === void 0) return void 0;
43
+ const path = config["path"];
44
+ const op = OPERATORS.find((known) => known === config["op"]);
45
+ if (typeof path !== "string" || op === void 0) return void 0;
46
+ if (!CONDITION_PATH.test(path)) return void 0;
47
+ return {
48
+ path,
49
+ op,
50
+ value: config["value"]
51
+ };
52
+ }
53
+ /** Reads `path` (`input...` or `results...`) from the run's data. */
54
+ function readPath(scope, path) {
55
+ const [root, ...rest] = path.split(".");
56
+ let value = root === "input" ? scope.input : scope.results;
57
+ for (const key of rest) if (Array.isArray(value)) value = value[Number(key)];
58
+ else if (isGraphRecord(value)) value = value[key];
59
+ else return void 0;
60
+ return value;
61
+ }
62
+ /** Whether `condition` holds for the run's data. */
63
+ function evaluateCondition(condition, scope) {
64
+ const actual = readPath(scope, condition.path);
65
+ const expected = condition.value;
66
+ switch (condition.op) {
67
+ case "equals": return JSON.stringify(actual) === JSON.stringify(expected);
68
+ case "notEquals": return JSON.stringify(actual) !== JSON.stringify(expected);
69
+ case "exists": return actual !== void 0 && actual !== null;
70
+ case "truthy": return Boolean(actual);
71
+ case "greaterThan": return typeof actual === "number" && typeof expected === "number" && actual > expected;
72
+ case "lessThan": return typeof actual === "number" && typeof expected === "number" && actual < expected;
73
+ case "contains":
74
+ if (typeof actual === "string") return typeof expected === "string" && actual.includes(expected);
75
+ return Array.isArray(actual) && actual.some((item) => JSON.stringify(item) === JSON.stringify(expected));
76
+ default: {
77
+ const unknown = condition.op;
78
+ throw new TypeError(`workflow-builder: unknown operator "${String(unknown)}"`);
79
+ }
80
+ }
81
+ }
82
+ /** Whether an approval payload approves: anything but `{ approved: false }`. */
83
+ const approved = (payload) => !(isGraphRecord(payload) && payload["approved"] === false);
84
+ /**
85
+ * The nodes in an order that runs every source before its targets, keeping
86
+ * the graph's order among independent nodes; `undefined` when edges form a
87
+ * cycle.
88
+ */
89
+ function topologicalOrder(graph) {
90
+ const indegree = new Map(graph.nodes.map((node) => [node.id, 0]));
91
+ const targets = /* @__PURE__ */ new Map();
92
+ for (const edge of graph.edges) {
93
+ if (!indegree.has(edge.source) || !indegree.has(edge.target)) continue;
94
+ indegree.set(edge.target, (indegree.get(edge.target) ?? 0) + 1);
95
+ targets.set(edge.source, [...targets.get(edge.source) ?? [], edge.target]);
96
+ }
97
+ const byId = new Map(graph.nodes.map((node) => [node.id, node]));
98
+ const order = [];
99
+ const ready = graph.nodes.filter((node) => indegree.get(node.id) === 0);
100
+ while (ready.length > 0) {
101
+ const node = ready.shift();
102
+ if (node === void 0) break;
103
+ order.push(node);
104
+ for (const target of targets.get(node.id) ?? []) {
105
+ const left = (indegree.get(target) ?? 0) - 1;
106
+ indegree.set(target, left);
107
+ const next = byId.get(target);
108
+ if (left === 0 && next !== void 0) ready.push(next);
109
+ }
110
+ }
111
+ return order.length === graph.nodes.length ? order : void 0;
112
+ }
113
+ /** `value` as a node, or `undefined` when its id or kind is missing. */
114
+ function nodeOf(value) {
115
+ if (!isGraphRecord(value)) return void 0;
116
+ const id = value["id"];
117
+ const kind = WORKFLOW_NODE_KINDS.find((known) => known === value["kind"]);
118
+ if (typeof id !== "string" || kind === void 0) return void 0;
119
+ const { label, step, config, position } = value;
120
+ return {
121
+ id,
122
+ kind,
123
+ ...typeof label === "string" ? { label } : {},
124
+ ...typeof step === "string" ? { step } : {},
125
+ ...isGraphRecord(config) ? { config } : {},
126
+ ...isGraphRecord(position) && typeof position["x"] === "number" && typeof position["y"] === "number" ? { position: {
127
+ x: position["x"],
128
+ y: position["y"]
129
+ } } : {}
130
+ };
131
+ }
132
+ /** `value` as an edge, or `undefined` when its ends are missing. */
133
+ function edgeOf(value) {
134
+ if (!isGraphRecord(value)) return void 0;
135
+ const { id, source, target, branch } = value;
136
+ if (typeof source !== "string" || typeof target !== "string") return;
137
+ return {
138
+ id: typeof id === "string" ? id : `${source}->${target}`,
139
+ source,
140
+ target,
141
+ ...branch === "true" || branch === "false" ? { branch } : {}
142
+ };
143
+ }
144
+ /** Node ids reach generated source and SQL; `validate_workflow_graph` uses the same pattern. */
145
+ const NODE_ID = /^[A-Za-z0-9_-]{1,100}$/;
146
+ const BRANCHING = /* @__PURE__ */ new Set(["condition", "approval"]);
147
+ /**
148
+ * Problems that keep `graph` from running, as messages; empty when it can.
149
+ * Pass the step library's names to check that every step node uses one
150
+ * (`publish` checks it again in SQL).
151
+ */
152
+ function validateGraph(graph, steps) {
153
+ if (!isGraphRecord(graph) || !Array.isArray(graph["nodes"]) || !Array.isArray(graph["edges"])) return ["A graph has a nodes array and an edges array"];
154
+ const errors = [];
155
+ const library = steps === void 0 ? void 0 : new Set(steps);
156
+ const nodes = /* @__PURE__ */ new Map();
157
+ let triggers = 0;
158
+ for (const value of graph["nodes"]) {
159
+ const id = isGraphRecord(value) ? value["id"] : void 0;
160
+ if (!isGraphRecord(value) || typeof id !== "string" || !NODE_ID.test(id)) {
161
+ errors.push("Every node has an id of 1 to 100 letters, digits, underscores or hyphens");
162
+ continue;
163
+ }
164
+ if (nodes.has(id)) errors.push(`Node ${id} appears twice`);
165
+ const node = nodeOf(value);
166
+ if (node === void 0) {
167
+ errors.push(`Node ${id} has an unknown kind`);
168
+ continue;
169
+ }
170
+ nodes.set(id, node);
171
+ switch (node.kind) {
172
+ case "trigger":
173
+ triggers += 1;
174
+ break;
175
+ case "step":
176
+ if (typeof node.step !== "string" || node.step.length === 0) errors.push(`Node ${id} names no step`);
177
+ else if (library !== void 0 && !library.has(node.step)) errors.push(`Node ${id} uses step ${node.step}, which is not in the step library`);
178
+ break;
179
+ case "sleep":
180
+ if (durationMs(node.config?.["duration"]) === void 0) errors.push(`Node ${id} has no valid duration`);
181
+ break;
182
+ case "approval": break;
183
+ case "condition":
184
+ if (conditionOf(node) === void 0) errors.push(`Node ${id} has no valid condition`);
185
+ break;
186
+ default: {
187
+ const unknown = node.kind;
188
+ errors.push(`Node ${id} has an unknown kind ${String(unknown)}`);
189
+ }
190
+ }
191
+ }
192
+ if (triggers !== 1) errors.push("A graph has exactly one trigger node");
193
+ const edgeIds = /* @__PURE__ */ new Set();
194
+ const edges = [];
195
+ for (const value of graph["edges"]) {
196
+ const id = isGraphRecord(value) && typeof value["id"] === "string" ? value["id"] : "?";
197
+ if (!isGraphRecord(value) || typeof value["source"] !== "string" || typeof value["target"] !== "string" || !nodes.has(value["source"]) || !nodes.has(value["target"])) {
198
+ errors.push(`Edge ${id} joins a node that does not exist`);
199
+ continue;
200
+ }
201
+ if (edgeIds.has(id)) errors.push(`Edge ${id} appears twice`);
202
+ edgeIds.add(id);
203
+ const source = nodes.get(value["source"]);
204
+ const target = nodes.get(value["target"]);
205
+ const branch = value["branch"];
206
+ if (branch !== void 0) {
207
+ if (branch !== "true" && branch !== "false") errors.push(`Edge ${id} has a branch other than "true" or "false"`);
208
+ else if (source !== void 0 && !BRANCHING.has(source.kind)) errors.push(`Edge ${id} branches from a ${source.kind} node`);
209
+ }
210
+ if (target?.kind === "trigger") errors.push(`Edge ${id} leads into the trigger node`);
211
+ edges.push({
212
+ id,
213
+ source: value["source"],
214
+ target: value["target"]
215
+ });
216
+ }
217
+ if (errors.length === 0 && topologicalOrder({
218
+ nodes: [...nodes.values()],
219
+ edges
220
+ }) === void 0) errors.push("The graph has a cycle");
221
+ return errors;
222
+ }
223
+ const nodeContent = (node) => JSON.stringify([
224
+ node.kind,
225
+ node.step,
226
+ node.label,
227
+ node.config
228
+ ]);
229
+ const edgeKey = (edge) => `${edge.source}->${edge.target}${edge.branch === void 0 ? "" : `:${edge.branch}`}`;
230
+ /** What changed from `before` to `after`, by node id and by edge ends. */
231
+ function diffGraphs(before, after) {
232
+ const old = new Map(before.nodes.map((node) => [node.id, node]));
233
+ const now = new Map(after.nodes.map((node) => [node.id, node]));
234
+ const oldEdges = new Set(before.edges.map(edgeKey));
235
+ const newEdges = new Set(after.edges.map(edgeKey));
236
+ return {
237
+ nodes: {
238
+ added: [...now.keys()].filter((id) => !old.has(id)),
239
+ removed: [...old.keys()].filter((id) => !now.has(id)),
240
+ changed: [...now.values()].filter((node) => {
241
+ const previous = old.get(node.id);
242
+ return previous !== void 0 && nodeContent(previous) !== nodeContent(node);
243
+ }).map((node) => node.id)
244
+ },
245
+ edges: {
246
+ added: [...newEdges].filter((key) => !oldEdges.has(key)),
247
+ removed: [...oldEdges].filter((key) => !newEdges.has(key))
248
+ }
249
+ };
250
+ }
251
+ /** `value` as a graph, or an empty one when it isn't shaped like one. */
252
+ function graphOf(value) {
253
+ if (!isGraphRecord(value)) return {
254
+ nodes: [],
255
+ edges: []
256
+ };
257
+ const nodes = Array.isArray(value["nodes"]) ? value["nodes"] : [];
258
+ const edges = Array.isArray(value["edges"]) ? value["edges"] : [];
259
+ return {
260
+ nodes: nodes.flatMap((node) => nodeOf(node) ?? []),
261
+ edges: edges.flatMap((edge) => edgeOf(edge) ?? [])
262
+ };
263
+ }
264
+ //#endregion
265
+ export { evaluateCondition as a, topologicalOrder as c, durationMs as i, validateGraph as l, conditionOf as n, graphOf as o, diffGraphs as r, isGraphRecord as s, approved as t };
@@ -0,0 +1,59 @@
1
+ import { n as RouteGuardOptions } from "../refusal-D1rgbzNq.js";
2
+ import { t as Validated } from "../shared-DDSjEGDR.js";
3
+ import { AnyEntry, Contributions } from "@supabase/middleware";
4
+ //#region src/bridges/h3.d.ts
5
+ /** The part of an H3 2 event the bridge reads and writes. */
6
+ interface H3Event<Context extends object> {
7
+ readonly req: Request;
8
+ readonly context: Context & {
9
+ /** Nitro's Cloudflare presets put the bindings here. */
10
+ readonly cloudflare?: {
11
+ readonly env?: unknown;
12
+ } | undefined;
13
+ };
14
+ /** The status and headers a handler set with `event.res`, kept on a plain return value. */
15
+ readonly res?: {
16
+ readonly status?: number | undefined;
17
+ readonly statusText?: string | undefined;
18
+ readonly headers?: Headers | undefined;
19
+ } | undefined;
20
+ }
21
+ interface ToH3Options<Context extends object> {
22
+ /** The host's env object for `getEnv`; defaults to `event.context.cloudflare.env`. */
23
+ readonly env?: (event: H3Event<Context>) => unknown;
24
+ }
25
+ /** H3 2 middleware, typed structurally so the package does not import `h3`. */
26
+ type H3Middleware<Context extends object> = (event: H3Event<Context>, next: () => unknown) => Promise<Response>;
27
+ /**
28
+ * Runs an entry array as H3 2 middleware (`app.use(...)`, Nitro and Nuxt
29
+ * server middleware). Every contributed key lands on `event.context`, and
30
+ * the handler's value comes back as a `Response` (JSON for plain values)
31
+ * so response-phase entries can add headers and cookies.
32
+ *
33
+ * ```ts
34
+ * app.use(toH3([withBetterSupabase(server)]))
35
+ * app.get('/notes', (event) => event.context.db.notes.findMany().orThrow())
36
+ * ```
37
+ */
38
+ export declare function toH3<const Entries extends readonly AnyEntry[]>(entries: Entries & Validated<Entries>, options?: ToH3Options<Partial<Contributions<Entries>>>): H3Middleware<Partial<Contributions<Entries>>>;
39
+ //#endregion
40
+ //#region src/h3/guard.d.ts
41
+ /**
42
+ * Route middleware that refuses callers outside `options`: Problem Details,
43
+ * or a redirect to `signIn` or `mfa`. Runs after `toH3(...)`.
44
+ *
45
+ * ```ts
46
+ * app.get('/admin', handler, { middleware: [guard({ roles: ['admin'] })] })
47
+ * ```
48
+ */
49
+ export declare function guard(options?: RouteGuardOptions): (event: H3Event<object>, next: () => unknown) => Promise<unknown>;
50
+ /**
51
+ * An `onError` handler for `new H3({ onError })` that answers thrown
52
+ * `DbException`s (from `.orThrow()`) with Problem Details and leaves every
53
+ * other error to H3.
54
+ */
55
+ export declare function problemOnError(options?: {
56
+ readonly expose?: boolean;
57
+ }): (error: unknown, event: H3Event<object>) => Response | undefined;
58
+ //#endregion
59
+ export type { H3Event, H3Middleware, RouteGuardOptions, ToH3Options };