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,261 @@
1
+ import { f as Result, w as ErrorMapper } from "./result-D7y2fT87.js";
2
+ import { O as RelationMeta, R as TableMeta, d as Codec, g as FunctionMeta } from "./types-6BdhkmZe.js";
3
+ //#region src/ir/types.d.ts
4
+ /**
5
+ * The query IR. Every repository call becomes one of these operations; the
6
+ * executor compiles it to PostgREST or SQL. Column names in the IR are
7
+ * database names; `Selection` carries the app aliases.
8
+ */
9
+ type ColumnOp = "eq" | "neq" | "gt" | "gte" | "lt" | "lte" | "in" | "is" | "like" | "ilike" | "match" | "imatch" | "contains" | "containedBy" | "overlaps" | "fts";
10
+ type Quantifier = "some" | "none" | "every";
11
+ type Condition = {
12
+ readonly kind: "and";
13
+ readonly items: readonly Condition[];
14
+ } | {
15
+ readonly kind: "or";
16
+ readonly items: readonly Condition[];
17
+ } | {
18
+ readonly kind: "not";
19
+ readonly item: Condition;
20
+ } | {
21
+ readonly kind: "column";
22
+ readonly column: string;
23
+ readonly op: ColumnOp;
24
+ readonly value: unknown;
25
+ /** Full-text search configuration for `fts`. */
26
+ readonly config?: string;
27
+ /**
28
+ * The column is `json`/`jsonb`: containment values are JSON documents,
29
+ * also when they are arrays, never Postgres array literals.
30
+ */
31
+ readonly json?: true;
32
+ /**
33
+ * Keys into a json column: the condition compares the text at this path
34
+ * (`column->a->>b`, `column #>> '{a,b}'`), and `is null` holds when the
35
+ * key is missing or JSON `null`.
36
+ */
37
+ readonly path?: readonly string[];
38
+ } | {
39
+ readonly kind: "relation";
40
+ readonly name: string;
41
+ readonly relation: RelationMeta;
42
+ readonly target: TableMeta;
43
+ readonly quantifier: Quantifier;
44
+ readonly where: Condition | undefined;
45
+ };
46
+ interface SelectColumn {
47
+ /** Key in the returned row. */
48
+ readonly alias: string;
49
+ /** Database column name. */
50
+ readonly column: string;
51
+ /** Read the column as text, so exact `int8`/`numeric` values survive JSON. */
52
+ readonly cast?: "text";
53
+ /** Decodes the returned value (see `ColumnMeta.codec`). */
54
+ readonly codec?: Codec;
55
+ }
56
+ interface OrderTerm {
57
+ readonly column: string;
58
+ readonly direction: "asc" | "desc";
59
+ readonly nulls?: "first" | "last";
60
+ /**
61
+ * Added by the repository (the primary key order of `findMany`), not asked
62
+ * for by the caller, so a split read may sort it approximately.
63
+ */
64
+ readonly implicit?: true;
65
+ /**
66
+ * Sort `aggregate()` groups by this aggregate of `column`; `count` counts
67
+ * the group's rows and its `column` is `*`.
68
+ */
69
+ readonly aggregate?: AggregateFn | "count";
70
+ /** Sort by `column` of this to-one relation's row (only on the root table). */
71
+ readonly relation?: {
72
+ readonly name: string;
73
+ readonly relation: RelationMeta;
74
+ readonly target: TableMeta;
75
+ };
76
+ }
77
+ interface Include {
78
+ readonly alias: string;
79
+ readonly relation: RelationMeta;
80
+ readonly target: TableMeta;
81
+ readonly selection: Selection;
82
+ readonly where: Condition | undefined;
83
+ readonly orderBy: readonly OrderTerm[];
84
+ readonly limit: number | undefined;
85
+ /** Drop parent rows without a match (`!inner`). */
86
+ readonly required: boolean;
87
+ /**
88
+ * `_count` include: returns the number of matching related rows instead of
89
+ * rows, folded into `row._count[count]` when decoded.
90
+ */
91
+ readonly count?: string;
92
+ /**
93
+ * `_sum`/`_avg`/`_min`/`_max` include: `selection.aggregate` holds the
94
+ * measures, folded into `row[`_${fn}`][name]` when decoded.
95
+ */
96
+ readonly aggregate?: {
97
+ readonly fn: AggregateFn;
98
+ readonly name: string;
99
+ };
100
+ }
101
+ type AggregateFn = "sum" | "avg" | "min" | "max";
102
+ interface Measure {
103
+ readonly fn: AggregateFn;
104
+ /** Key in the returned row (`_sum_amount`, or the column alias in an include). */
105
+ readonly key: string;
106
+ /** App column name, the key under `_sum` in the decoded row. */
107
+ readonly alias: string;
108
+ /** Database column name. */
109
+ readonly column: string;
110
+ /** Read the result as text, so exact `int8`/`numeric` values survive JSON. */
111
+ readonly cast?: "text";
112
+ readonly codec?: Codec;
113
+ }
114
+ /**
115
+ * Aggregates instead of rows. `Selection.columns` become the grouping
116
+ * columns; without any, the result is exactly one row.
117
+ */
118
+ interface Aggregation {
119
+ /** Also return `_count`, the number of rows in each group. */
120
+ readonly count: boolean;
121
+ readonly measures: readonly Measure[];
122
+ }
123
+ interface Selection {
124
+ readonly columns: readonly SelectColumn[];
125
+ readonly includes: readonly Include[];
126
+ readonly aggregate?: Aggregation;
127
+ }
128
+ type CountMode = "exact" | "planned" | "estimated";
129
+ interface SelectOp {
130
+ readonly kind: "select";
131
+ readonly table: TableMeta;
132
+ readonly selection: Selection;
133
+ readonly where: Condition | undefined;
134
+ readonly orderBy: readonly OrderTerm[];
135
+ readonly limit: number | undefined;
136
+ readonly offset: number | undefined;
137
+ readonly count: CountMode | undefined;
138
+ /** Only count, return no rows. */
139
+ readonly head: boolean;
140
+ readonly single: "one" | "maybe" | undefined;
141
+ /** `limit` includes one row past the page, which `paginate()` reads to set `hasMore`. */
142
+ readonly lookAhead?: boolean;
143
+ /** `limit` bounds a check, not a page: `findOnly` reads two rows to detect a second match. */
144
+ readonly unpaged?: boolean;
145
+ /**
146
+ * Read from this set-returning function instead of the table (`db.$search`).
147
+ * Only executors with `functionSources` honor it.
148
+ */
149
+ readonly source?: FunctionSource;
150
+ }
151
+ /** A function returning `setof <table>`, called with named arguments. */
152
+ interface FunctionSource {
153
+ readonly schema: string;
154
+ readonly name: string;
155
+ readonly args: Readonly<Record<string, unknown>>;
156
+ }
157
+ /** The statement a mutation runs. */
158
+ type MutationKind = "insert" | "upsert" | "update" | "delete";
159
+ /** What the caller asked for: `softDelete` is a `delete` that a plugin turned into an update. */
160
+ type MutationIntent = MutationKind | "softDelete";
161
+ interface MutationBase {
162
+ /**
163
+ * What the caller asked for, when a plugin rewrote the mutation into
164
+ * another kind. The plugin that rewrites it sets this; mutation events
165
+ * report it.
166
+ */
167
+ readonly intent?: MutationIntent;
168
+ /**
169
+ * How a mutation without `returning` counts the rows it wrote. Defaults to
170
+ * `exact`; SQL executors always return the statement's own row count.
171
+ */
172
+ readonly count?: CountMode;
173
+ }
174
+ interface BoundedMutation extends MutationBase {
175
+ /**
176
+ * The most rows the statement may change. More fails with `max_affected`
177
+ * and writes nothing. Over PostgREST it needs PostgREST 13 or later.
178
+ */
179
+ readonly maxAffected?: number;
180
+ }
181
+ interface InsertOp extends MutationBase {
182
+ readonly kind: "insert";
183
+ readonly table: TableMeta;
184
+ /** Rows keyed by database column names. */
185
+ readonly rows: readonly Readonly<Record<string, unknown>>[];
186
+ readonly returning: Selection | undefined;
187
+ readonly onConflict: {
188
+ readonly columns: readonly string[];
189
+ readonly action: "update" | "ignore";
190
+ } | undefined;
191
+ /**
192
+ * In a multi-row insert, columns some rows leave out become `null`
193
+ * instead of their column default.
194
+ */
195
+ readonly defaultToNull: boolean;
196
+ }
197
+ interface UpdateOp extends BoundedMutation {
198
+ readonly kind: "update";
199
+ readonly table: TableMeta;
200
+ /** Keyed by database column names. */
201
+ readonly set: Readonly<Record<string, unknown>>;
202
+ readonly where: Condition | undefined;
203
+ readonly returning: Selection | undefined;
204
+ }
205
+ interface DeleteOp extends BoundedMutation {
206
+ readonly kind: "delete";
207
+ readonly table: TableMeta;
208
+ readonly where: Condition | undefined;
209
+ readonly returning: Selection | undefined;
210
+ }
211
+ type Operation = SelectOp | InsertOp | UpdateOp | DeleteOp;
212
+ type MutationOp = InsertOp | UpdateOp | DeleteOp;
213
+ declare const and: (...items: (Condition | undefined)[]) => Condition | undefined;
214
+ declare const or: (...items: Condition[]) => Condition;
215
+ declare const not: (item: Condition) => Condition;
216
+ declare const column: (name: string, op: ColumnOp, value: unknown) => Condition;
217
+ //#endregion
218
+ //#region src/core/executor.d.ts
219
+ interface ExecuteContext {
220
+ /** Already includes the call's `timeout`, when it has one. */
221
+ readonly signal?: AbortSignal;
222
+ readonly errorMappers: readonly ErrorMapper[];
223
+ /**
224
+ * The call's `retry` setting. PostgREST passes it to postgrest-js, which
225
+ * retries idempotent requests on network errors, 503 and 520; executors
226
+ * without retries ignore it.
227
+ */
228
+ readonly retry?: boolean;
229
+ }
230
+ interface ExecuteResult {
231
+ /** Rows keyed by the aliases in the operation's selection. */
232
+ readonly rows: readonly Record<string, unknown>[];
233
+ readonly count: number | null;
234
+ }
235
+ /**
236
+ * Runs IR operations. PostgREST (`postgrestExecutor`) and SQL
237
+ * (`better-supabase/postgres`) are built in; any other backend can implement
238
+ * this interface and prove it with `testExecutor` from `better-supabase/testing`.
239
+ */
240
+ interface Executor {
241
+ readonly name: string;
242
+ /** Honors `SelectOp.source`. `db.$search` fails on executors without it. */
243
+ readonly functionSources?: boolean;
244
+ execute(op: Operation, context: ExecuteContext): Promise<Result<ExecuteResult>>;
245
+ /** Calls a database function. Optional; `db.$rpc` fails without it. */
246
+ rpc?(name: string, args: Readonly<Record<string, unknown>>, context: RpcContext): Promise<Result<unknown>>;
247
+ /**
248
+ * Runs several reads together, for `db.$many`: one transaction on a SQL
249
+ * connection. Returns one result per operation, in order. Optional;
250
+ * without it `db.$many` runs the operations in parallel.
251
+ */
252
+ batch?(ops: readonly Operation[], context: ExecuteContext): Promise<readonly Result<ExecuteResult>[]>;
253
+ }
254
+ interface RpcContext extends ExecuteContext {
255
+ readonly schema: string;
256
+ /** The function is `stable`: send it as a GET, so read replicas can serve it. */
257
+ readonly get?: boolean;
258
+ readonly function?: FunctionMeta;
259
+ }
260
+ //#endregion
261
+ export { Selection as C, not as D, column as E, or as O, SelectOp as S, and as T, MutationOp as _, AggregateFn as a, Quantifier as b, Condition as c, FunctionSource as d, Include as f, MutationKind as g, MutationIntent as h, RpcContext as i, CountMode as l, Measure as m, ExecuteResult as n, Aggregation as o, InsertOp as p, Executor as r, ColumnOp as s, ExecuteContext as t, DeleteOp as u, Operation as v, UpdateOp as w, SelectColumn as x, OrderTerm as y };
@@ -0,0 +1,79 @@
1
+ import { a as AnyModels, i as AnyFunctions } from "../types-6BdhkmZe.js";
2
+ import { t as BetterSupabase } from "../define-CJJkkr1-.js";
3
+ import { i as ServerContext, n as ContextOptions, o as ServerOptions, t as BetterServer } from "../server-CeVeeXwz.js";
4
+ import { i as MiddlewareOptions, r as GuardOptions } from "../respond-DoBijysA.js";
5
+ import { t as Validated } from "../shared-DDSjEGDR.js";
6
+ import { AnyEntry, Contributions } from "@supabase/middleware";
7
+ import { ImmutableRequest, MiddlewareFunction } from "expo-server";
8
+ //#region src/bridges/expo.d.ts
9
+ /** Route parameters from the file name (`[id]`, `[...slug]`). */
10
+ type ExpoParams = Record<string, string | string[]>;
11
+ interface ToExpoOptions {
12
+ /** The host's env object for `getEnv`, read per request (EAS Hosting runs on Workers). */
13
+ readonly env?: (request: Request) => unknown;
14
+ }
15
+ /**
16
+ * Runs an entry array around an Expo Router API route handler
17
+ * (`export const GET = toExpo([...], handler)`). Short-circuit responses
18
+ * (a 401 from the guard, a CORS preflight) answer before the handler runs,
19
+ * and the handler's response passes back through the entries.
20
+ */
21
+ export declare function toExpo<const Entries extends readonly AnyEntry[]>(entries: Entries & Validated<Entries>, handler: (request: Request, ctx: Contributions<Entries>, params: ExpoParams) => Response | Promise<Response>, options?: ToExpoOptions): (request: Request, params?: ExpoParams) => Promise<Response>;
22
+ //#endregion
23
+ //#region src/expo/index.d.ts
24
+ /** A request as Expo Router passes it: `ImmutableRequest` in loaders and middleware, `Request` in API routes. */
25
+ export type ExpoRequest = Request | ImmutableRequest;
26
+ export interface ExpoOptions extends ServerOptions {
27
+ /** Include error details in problem responses. Defaults to `NODE_ENV === 'development'`. */
28
+ readonly exposeErrors?: boolean;
29
+ }
30
+ export interface ExpoContextOptions extends Omit<ContextOptions, "refresh">, GuardOptions {
31
+ /**
32
+ * Refresh an expired cookie session and write the new cookies with
33
+ * `setResponseHeaders`. Defaults to true; bearer tokens never refresh.
34
+ */
35
+ readonly refresh?: boolean;
36
+ }
37
+ export interface ExpoMiddlewareOptions extends MiddlewareOptions {
38
+ /**
39
+ * Where a caller `allow` refuses goes, e.g. `/sign-in`. Without it the
40
+ * middleware lets every request through and only refreshes the session.
41
+ */
42
+ readonly redirectTo?: string;
43
+ /**
44
+ * Paths every caller may open, such as `/` or `/pricing`. An entry matches
45
+ * the path itself and everything under it (`/auth` matches
46
+ * `/auth/callback`). The `redirectTo` path and everything under it are
47
+ * always public, so its callback routes never loop back to it.
48
+ */
49
+ readonly publicPaths?: readonly string[];
50
+ }
51
+ export interface BetterExpo<M extends AnyModels, F extends AnyFunctions, E, C = unknown, P = unknown> extends BetterServer<M, F, E, C, P> {
52
+ /**
53
+ * The verified caller for a server loader, API route or middleware: a
54
+ * bearer token first, the session cookie second. Refreshed session
55
+ * cookies go out through `setResponseHeaders`. With `allow`, a refused
56
+ * caller throws a `StatusError` (401 or 403) that Expo Router answers.
57
+ */
58
+ request(request: ExpoRequest, options?: ExpoContextOptions): Promise<ServerContext<M, F, E, C, P>>;
59
+ /**
60
+ * A server loader (`export const loader = bs.loader(...)`) that runs `fn`
61
+ * as the caller. A `DbException` from `.orThrow()` becomes a `StatusError`
62
+ * with the error's status. Throws during static rendering, which has no request.
63
+ */
64
+ loader<T>(fn: (ctx: ServerContext<M, F, E, C, P>, params: ExpoParams, request: ImmutableRequest) => Promise<T> | T, options?: ExpoContextOptions): (request: ImmutableRequest | undefined, params: ExpoParams) => Promise<T>;
65
+ /**
66
+ * An API route handler (`export const GET = bs.handler(...)`): `Result`s
67
+ * become JSON or Problem Details, `undefined` becomes 204.
68
+ */
69
+ handler(fn: (request: Request, ctx: ServerContext<M, F, E, C, P>, params: ExpoParams) => unknown, options?: MiddlewareOptions): (request: Request, params?: ExpoParams) => Promise<Response>;
70
+ /**
71
+ * `+middleware.ts`: refreshes an expired cookie session once per request,
72
+ * before loaders run, and redirects refused callers when `redirectTo` is set.
73
+ */
74
+ middleware(options?: ExpoMiddlewareOptions): MiddlewareFunction;
75
+ }
76
+ /** Expo Router integration: server loaders, API routes and `+middleware.ts`. */
77
+ export declare function createExpo<M extends AnyModels, D, F extends AnyFunctions, E, C = unknown, P = unknown>(betterSupabase: BetterSupabase<M, D, F, E, C, P>, options?: ExpoOptions): BetterExpo<M, F, E, C, P>;
78
+ //#endregion
79
+ export type { ExpoParams, GuardOptions, MiddlewareOptions, ToExpoOptions };
@@ -0,0 +1,129 @@
1
+ import { t as DbException } from "../db-exception-CnWcYPxL.js";
2
+ import { o as toProblem } from "../problem-BreOl8b8.js";
3
+ import { a as unexpectedResponse, c as extendServer, s as createServer, y as refreshFor } from "../adapter-Bc1o3zyy.js";
4
+ import { m as serializeCookie } from "../resolve-D_IcnvFd.js";
5
+ import { a as respond, r as guard, t as defaultExpose } from "../respond-BUgsXNgk.js";
6
+ import { t as withBetterSupabase } from "../composite-DhE66P5u.js";
7
+ import { r as handoffOf } from "../shared-CBxosKK3.js";
8
+ import { bufferRequest, pipeline, seedContext } from "@supabase/middleware";
9
+ import { StatusError, setResponseHeaders } from "expo-server";
10
+ //#region src/bridges/expo.ts
11
+ const PARAMS = Symbol("toExpo.params");
12
+ /**
13
+ * Runs an entry array around an Expo Router API route handler
14
+ * (`export const GET = toExpo([...], handler)`). Short-circuit responses
15
+ * (a 401 from the guard, a CORS preflight) answer before the handler runs,
16
+ * and the handler's response passes back through the entries.
17
+ */
18
+ function toExpo(entries, handler, options = {}) {
19
+ const run = pipeline(entries, (request, ctx) => Promise.resolve(handler(request, ctx, handoffOf(ctx, PARAMS))));
20
+ return (request, params = {}) => run(request.body ? bufferRequest(request) : request, {
21
+ ...seedContext(options.env?.(request)),
22
+ [PARAMS]: params
23
+ });
24
+ }
25
+ //#endregion
26
+ //#region src/expo/index.ts
27
+ /** `path` is `prefix` or a path under it. */
28
+ function under(path, prefix) {
29
+ const base = prefix.endsWith("/") ? prefix.slice(0, -1) : prefix;
30
+ return base === "" ? path === "/" : path === base || path.startsWith(`${base}/`);
31
+ }
32
+ /** `ImmutableRequest` has no body and immutable headers; the resolver only reads URL, method and headers. */
33
+ function toRequest(request) {
34
+ if (request instanceof Request) return request;
35
+ return new Request(request.url, {
36
+ method: request.method,
37
+ headers: new Headers(request.headers)
38
+ });
39
+ }
40
+ /** Sends the cookies and headers `ctx.apply` would add to a response. */
41
+ function writeHeaders(ctx) {
42
+ const cookies = ctx.cookies().map(serializeCookie);
43
+ const others = Object.entries(ctx.resolution.headers);
44
+ if (cookies.length === 0 && others.length === 0) return;
45
+ setResponseHeaders((headers) => {
46
+ const sent = new Set(headers.getSetCookie());
47
+ for (const cookie of cookies) if (!sent.has(cookie)) headers.append("set-cookie", cookie);
48
+ for (const [name, value] of others) headers.set(name, value);
49
+ });
50
+ }
51
+ function statusError(error, expose) {
52
+ const problem = toProblem(error, { expose });
53
+ return new StatusError(problem.status, {
54
+ error: problem.title,
55
+ ...problem
56
+ });
57
+ }
58
+ /** Expo Router integration: server loaders, API routes and `+middleware.ts`. */
59
+ function createExpo(betterSupabase, options = {}) {
60
+ const server = createServer(betterSupabase, options);
61
+ const expose = options.exposeErrors ?? defaultExpose();
62
+ const request = async (incoming, contextOptions = {}) => {
63
+ const { allow, aal, scopes, refresh = true, ...rest } = contextOptions;
64
+ const ctx = await server.context(toRequest(incoming), {
65
+ ...rest,
66
+ refresh
67
+ });
68
+ writeHeaders(ctx);
69
+ if (allow !== void 0 || aal !== void 0 || scopes !== void 0) {
70
+ const denied = guard(ctx.auth, allow, aal, scopes);
71
+ if (denied) throw statusError(denied, expose);
72
+ }
73
+ return ctx;
74
+ };
75
+ return extendServer(server, {
76
+ request,
77
+ loader(fn, loaderOptions) {
78
+ return async (incoming, params) => {
79
+ if (!incoming) throw new StatusError(500, "better-supabase: bs.loader() needs a request; static rendering has none (use createStaticLoader)");
80
+ const ctx = await request(incoming, loaderOptions);
81
+ try {
82
+ return await fn(ctx, params, incoming);
83
+ } catch (cause) {
84
+ if (cause instanceof DbException) throw statusError(cause.error, expose);
85
+ throw cause;
86
+ }
87
+ };
88
+ },
89
+ handler(fn, handlerOptions = {}) {
90
+ return toExpo([withBetterSupabase(server, {
91
+ ...handlerOptions,
92
+ expose
93
+ })], async (incoming, ctx, params) => {
94
+ const instance = new URL(incoming.url).pathname;
95
+ try {
96
+ return await respond(() => fn(incoming, ctx.bs, params), {
97
+ instance,
98
+ expose
99
+ });
100
+ } catch (cause) {
101
+ return unexpectedResponse(cause, {
102
+ instance,
103
+ expose
104
+ });
105
+ }
106
+ });
107
+ },
108
+ middleware(middlewareOptions = {}) {
109
+ const { redirectTo, allow, aal, scopes, publicPaths = [] } = middlewareOptions;
110
+ return async (incoming) => {
111
+ const resolved = toRequest(incoming);
112
+ const ctx = await server.context(resolved, { refresh: refreshFor(middlewareOptions.refresh, resolved) ?? true });
113
+ const url = new URL(incoming.url);
114
+ const target = redirectTo === void 0 ? void 0 : new URL(redirectTo, url);
115
+ if (!target || under(url.pathname, target.pathname) || publicPaths.some((path) => under(url.pathname, path)) || !guard(ctx.auth, allow, aal, scopes)) {
116
+ writeHeaders(ctx);
117
+ return;
118
+ }
119
+ target.searchParams.set("next", url.pathname + url.search);
120
+ return ctx.apply(new Response(null, {
121
+ status: 303,
122
+ headers: { location: target.href }
123
+ }));
124
+ };
125
+ }
126
+ });
127
+ }
128
+ //#endregion
129
+ export { createExpo, toExpo };
@@ -0,0 +1,58 @@
1
+ import { r as Executor } from "../executor-DvsBbNBS.js";
2
+ import { n as PowerSyncExecutorOptions, t as PowerSyncDatabaseLike } from "../executor-CaWigTyR.js";
3
+ import { i as checkSqlite, n as sqliteTables, r as watch, t as WatchOptions } from "../watch-DI34G86j.js";
4
+ //#region src/expo-sqlite/executor.d.ts
5
+ /** What an expo-sqlite database or exclusive transaction can run. */
6
+ interface ExpoSqliteContextLike {
7
+ getAllAsync<T>(source: string, params: unknown[]): Promise<T[]>;
8
+ runAsync(source: string, params: unknown[]): Promise<unknown>;
9
+ }
10
+ /**
11
+ * The part of expo-sqlite's `SQLiteDatabase` the executor uses. Typed by
12
+ * shape, so better-supabase doesn't depend on expo-sqlite.
13
+ */
14
+ interface ExpoSqliteDatabaseLike extends ExpoSqliteContextLike {
15
+ /** Filters change events to this database when several are open. */
16
+ readonly databasePath?: string;
17
+ withTransactionAsync(task: () => Promise<void>): Promise<void>;
18
+ /** Native only: isolates the transaction from other queries on `db`. */
19
+ withExclusiveTransactionAsync?(task: (txn: ExpoSqliteContextLike) => Promise<void>): Promise<void>;
20
+ }
21
+ /** The fields of an expo-sqlite change event the watcher reads. */
22
+ interface DatabaseChangeEventLike {
23
+ readonly tableName: string;
24
+ readonly databaseFilePath?: string;
25
+ }
26
+ /**
27
+ * expo-sqlite's `addDatabaseChangeListener`. Open the database with
28
+ * `{ enableChangeListener: true }` so it reports changes.
29
+ */
30
+ type AddDatabaseChangeListener = (listener: (event: DatabaseChangeEventLike) => void) => {
31
+ remove(): void;
32
+ };
33
+ interface ExpoSqliteOptions extends PowerSyncExecutorOptions {
34
+ /** Enables `watch()` and `useWatch()` on the database. */
35
+ readonly addDatabaseChangeListener?: AddDatabaseChangeListener;
36
+ }
37
+ /**
38
+ * An expo-sqlite database in the shape the SQLite executor, `watch()` and
39
+ * `useWatch()` read. Writes run in `withExclusiveTransactionAsync` on
40
+ * native and `withTransactionAsync` on web.
41
+ */
42
+ export declare function expoSqliteDatabase(db: ExpoSqliteDatabaseLike, options?: Pick<ExpoSqliteOptions, "addDatabaseChangeListener">): PowerSyncDatabaseLike;
43
+ /**
44
+ * Runs repository operations on an expo-sqlite database, without PowerSync:
45
+ * the same repositories and list definitions work on a local database the
46
+ * app owns. Reads return rows in the PostgREST shape; what SQLite can't
47
+ * express returns a `DbError` of kind `unsupported`. An insert that leaves
48
+ * out a text or uuid key gets `crypto.randomUUID()`, else a UUID from
49
+ * SQLite.
50
+ *
51
+ * ```ts
52
+ * const sqlite = await openDatabaseAsync("app.db", { enableChangeListener: true });
53
+ * const db = betterSupabase.connect(expoSqliteExecutor(sqlite, { addDatabaseChangeListener }));
54
+ * ```
55
+ */
56
+ export declare function expoSqliteExecutor(db: ExpoSqliteDatabaseLike, options?: ExpoSqliteOptions): Executor;
57
+ //#endregion
58
+ export { type AddDatabaseChangeListener, type DatabaseChangeEventLike, type ExpoSqliteContextLike, type ExpoSqliteDatabaseLike, type ExpoSqliteOptions, type WatchOptions, checkSqlite, sqliteTables, watch };
@@ -0,0 +1,104 @@
1
+ import { n as watch, t as sqliteTables } from "../watch-Xuxrvxq-.js";
2
+ import { i as checkSqlite, r as powersyncExecutor } from "../executor-Bq28caBo.js";
3
+ //#region src/expo-sqlite/executor.ts
4
+ const DEFAULT_THROTTLE_MS = 30;
5
+ /** A UUID v4 from SQLite's `randomblob`, for runtimes without `crypto.randomUUID`. */
6
+ const UUID_SQL = "select lower(hex(randomblob(4)) || '-' || hex(randomblob(2)) || '-4' || substr(hex(randomblob(2)), 2) || '-' || substr('89ab', 1 + (abs(random()) % 4), 1) || substr(hex(randomblob(2)), 2) || '-' || hex(randomblob(6))) as id";
7
+ function contextOf(db) {
8
+ return {
9
+ getAll: (sql, parameters = []) => db.getAllAsync(sql, parameters),
10
+ execute: (sql, parameters = []) => db.runAsync(sql, parameters)
11
+ };
12
+ }
13
+ function changesOf(db, addListener) {
14
+ return (handler, options = {}) => {
15
+ const tables = options.tables ? new Set(options.tables) : void 0;
16
+ const throttleMs = options.throttleMs ?? DEFAULT_THROTTLE_MS;
17
+ let pending = /* @__PURE__ */ new Set();
18
+ let timer;
19
+ const flush = () => {
20
+ timer = void 0;
21
+ const changedTables = [...pending];
22
+ pending = /* @__PURE__ */ new Set();
23
+ if (changedTables.length > 0) handler.onChange({ changedTables });
24
+ };
25
+ const subscription = addListener((event) => {
26
+ if (event.databaseFilePath !== void 0 && db.databasePath !== void 0 && event.databaseFilePath !== db.databasePath) return;
27
+ if (tables && !tables.has(event.tableName)) return;
28
+ pending.add(event.tableName);
29
+ timer ??= setTimeout(flush, throttleMs);
30
+ });
31
+ const stop = () => {
32
+ subscription.remove();
33
+ if (timer !== void 0) clearTimeout(timer);
34
+ timer = void 0;
35
+ pending = /* @__PURE__ */ new Set();
36
+ };
37
+ options.signal?.addEventListener("abort", stop, { once: true });
38
+ return stop;
39
+ };
40
+ }
41
+ /**
42
+ * An expo-sqlite database in the shape the SQLite executor, `watch()` and
43
+ * `useWatch()` read. Writes run in `withExclusiveTransactionAsync` on
44
+ * native and `withTransactionAsync` on web.
45
+ */
46
+ function expoSqliteDatabase(db, options = {}) {
47
+ const context = contextOf(db);
48
+ const database = {
49
+ ...context,
50
+ async writeTransaction(callback) {
51
+ let box;
52
+ if (db.withExclusiveTransactionAsync) await db.withExclusiveTransactionAsync(async (txn) => {
53
+ box = { value: await callback(contextOf(txn)) };
54
+ });
55
+ else await db.withTransactionAsync(async () => {
56
+ box = { value: await callback(context) };
57
+ });
58
+ if (!box) throw new TypeError("expo-sqlite skipped the transaction");
59
+ return box.value;
60
+ }
61
+ };
62
+ const addListener = options.addDatabaseChangeListener;
63
+ return addListener ? {
64
+ ...database,
65
+ onChange: changesOf(db, addListener)
66
+ } : database;
67
+ }
68
+ /** Hermes has no `crypto` unless the app installs a polyfill. */
69
+ function randomId() {
70
+ const { crypto } = globalThis;
71
+ return crypto?.randomUUID?.();
72
+ }
73
+ /**
74
+ * Runs repository operations on an expo-sqlite database, without PowerSync:
75
+ * the same repositories and list definitions work on a local database the
76
+ * app owns. Reads return rows in the PostgREST shape; what SQLite can't
77
+ * express returns a `DbError` of kind `unsupported`. An insert that leaves
78
+ * out a text or uuid key gets `crypto.randomUUID()`, else a UUID from
79
+ * SQLite.
80
+ *
81
+ * ```ts
82
+ * const sqlite = await openDatabaseAsync("app.db", { enableChangeListener: true });
83
+ * const db = betterSupabase.connect(expoSqliteExecutor(sqlite, { addDatabaseChangeListener }));
84
+ * ```
85
+ */
86
+ function expoSqliteExecutor(db, options = {}) {
87
+ const database = expoSqliteDatabase(db, options);
88
+ const newId = options.newId ?? (async (_table) => {
89
+ const random = randomId();
90
+ if (random !== void 0) return random;
91
+ const [row] = await database.getAll(UUID_SQL);
92
+ if (!row) throw new TypeError("SQLite returned no id");
93
+ return row.id;
94
+ });
95
+ return {
96
+ ...powersyncExecutor(database, {
97
+ ...options,
98
+ newId
99
+ }),
100
+ name: "expo-sqlite"
101
+ };
102
+ }
103
+ //#endregion
104
+ export { checkSqlite, expoSqliteDatabase, expoSqliteExecutor, sqliteTables, watch };