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
@@ -1,5 +1,5 @@
1
- import { U as Operation } from "../../executor-BunPOO-k.js";
2
- import { h as RepositoryExtension, p as Plugin } from "../../plugin-o144f322.js";
1
+ import { v as Operation } from "../../executor-DvsBbNBS.js";
2
+ import { d as Plugin, p as RepositoryExtension } from "../../plugin-FGY8UhYm.js";
3
3
  //#region src/plugins/rules/index.d.ts
4
4
  export type RuleLevel = "off" | "warn" | "error";
5
5
  /** A level, or a level with the rule's option: `['error', 500]`. */
@@ -37,6 +37,13 @@ export interface RuleSet {
37
37
  * the lint rule of the same name flags the call in the editor.
38
38
  */
39
39
  readonly noDeleteManyWithoutWhere?: RuleSetting;
40
+ /**
41
+ * `updateMany` and `deleteMany` without `maxAffected`, or with one above
42
+ * the given maximum (default 1000). With a bound, a `where` that matches
43
+ * more rows than intended fails with `max_affected` and writes nothing.
44
+ * Updates and deletes by key are exempt.
45
+ */
46
+ readonly requireMaxAffected?: RuleSetting<number>;
40
47
  /**
41
48
  * Storage objects written to `*_url` text columns: a column listed in
42
49
  * `storagePaths`, or a value that is a Storage URL or matches a bucket's
@@ -78,10 +85,10 @@ export declare function strict(): RuleSet;
78
85
  * Runtime query rules, checked before each request is built:
79
86
  *
80
87
  * ```ts
81
- * defineSupabase(schema, { plugins: [rules({ rules: recommended() })] });
88
+ * defineSupabase(schema).use(rules({ rules: recommended() }));
82
89
  * ```
83
90
  *
84
- * Runs first (`enforce: 'pre'`) so it sees the query as written, before
91
+ * Runs first (`enforce: 'first'`) so it sees the query as written, before
85
92
  * tenant or soft-delete filters are added. Pair with the static
86
93
  * `better-supabase/lint` plugin to catch the same mistakes in the editor.
87
94
  */
@@ -1,7 +1,9 @@
1
- import { n as dbError, t as DbException } from "../../errors-DtwXa6b8.js";
1
+ import { t as DbException } from "../../db-exception-CnWcYPxL.js";
2
+ import { n as dbError } from "../../errors-B11Duf73.js";
2
3
  import { t as lookupOf } from "../../lookup-BaP5bI27.js";
3
- import { r as definePlugin } from "../../plugin-DwARMuQp.js";
4
- import { i as tenantClaimPaths, n as claimAt, r as claimsOf } from "../../claims-BAf6c7is.js";
4
+ import { r as definePlugin } from "../../plugin-tfXW1-qO.js";
5
+ import { t as simplify } from "../../simplify-DDO0j0LI.js";
6
+ import { o as tenantFrom, s as tenantPathsFor } from "../../claims-PqzCxaTD.js";
5
7
  //#region src/plugins/rules/index.ts
6
8
  /** Catches data-exposure and correctness mistakes; everything else off. */
7
9
  function safe() {
@@ -31,7 +33,8 @@ function strict() {
31
33
  maxLimit: ["error", 1e3],
32
34
  requireOrderByForCursor: "error",
33
35
  maxIncludeDepth: ["error", 3],
34
- storagePathColumns: "error"
36
+ storagePathColumns: "error",
37
+ requireMaxAffected: ["error", 1e3]
35
38
  };
36
39
  }
37
40
  function levelOf(setting) {
@@ -89,7 +92,7 @@ const templatesBySchema = /* @__PURE__ */ new WeakMap();
89
92
  function bucketTemplates(schema) {
90
93
  let templates = templatesBySchema.get(schema);
91
94
  if (!templates) {
92
- templates = Object.values(schema.buckets ?? {}).filter((bucket) => bucket.path.replaceAll(/\{[^}]*\}|\//g, "").length > 0).map((bucket) => new RegExp(`^${bucket.path.split(/\{[^}]*\}/).map((part) => part.replaceAll(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("[^/]+")}$`));
95
+ templates = Object.values(schema.buckets ?? {}).flatMap((bucket) => typeof bucket.path === "string" ? [bucket.path] : bucket.path).filter((path) => path.replaceAll(/\{[^}]*\}|\//g, "").length > 0).map((path) => new RegExp(`^${path.split(/(\{[^}]*\})/).map((part, index) => index % 2 === 0 ? part.replaceAll(/[.*+?^${}()|[\]\\]/g, "\\$&") : part.startsWith("{...") ? "[^/]+(?:/[^/]+)*" : "[^/]+").join("")}$`));
93
96
  templatesBySchema.set(schema, templates);
94
97
  }
95
98
  return templates;
@@ -117,9 +120,27 @@ function storedObjectColumn(op, schema) {
117
120
  })) return `"${column.db}" is given a storage object; store its path in "${path}" and build URLs with signedUrl() or renderUrl()`;
118
121
  }
119
122
  }
123
+ const primaryColumnsByTable = /* @__PURE__ */ new WeakMap();
124
+ /** `true` when `where` holds `pk = value` for every primary key column: one row at most. */
125
+ function pinsPrimaryKey(table, where) {
126
+ if (!where || table.primaryKey.length === 0) return false;
127
+ let columns = primaryColumnsByTable.get(table);
128
+ if (!columns) {
129
+ columns = table.primaryKey.map((name) => table.columns[name]?.db ?? name);
130
+ primaryColumnsByTable.set(table, columns);
131
+ }
132
+ const pinned = /* @__PURE__ */ new Set();
133
+ const visit = (condition) => {
134
+ if (condition.kind === "and") condition.items.forEach(visit);
135
+ else if (condition.kind === "column" && condition.op === "eq" && condition.path === void 0) pinned.add(condition.column);
136
+ };
137
+ visit(where);
138
+ return columns.every((column) => pinned.has(column));
139
+ }
120
140
  function checks(rules) {
121
141
  const maxLimit = optionOf(rules.maxLimit, 1e3);
122
142
  const maxDepth = optionOf(rules.maxIncludeDepth, 3);
143
+ const maxAffected = optionOf(rules.requireMaxAffected, 1e3);
123
144
  return {
124
145
  noUnboundedFindMany: (op) => op.kind === "select" && op.single === void 0 && !op.head && op.limit === void 0 && op.selection.aggregate === void 0 ? "findMany without limit reads every visible row" : void 0,
125
146
  maxLimit: (op) => {
@@ -127,7 +148,7 @@ function checks(rules) {
127
148
  const limit = op.lookAhead === true ? op.limit - 1 : op.limit;
128
149
  return limit > maxLimit ? `limit ${limit} is above the maximum of ${maxLimit}` : void 0;
129
150
  },
130
- requireOrderByForCursor: (op) => op.kind === "select" && !op.head && op.orderBy.length === 0 && (op.offset !== void 0 || op.limit !== void 0 && op.limit > 1) ? "paging without orderBy returns rows in no stable order" : void 0,
151
+ requireOrderByForCursor: (op) => op.kind === "select" && !op.head && op.unpaged !== true && op.source === void 0 && op.orderBy.length === 0 && (op.offset !== void 0 || op.limit !== void 0 && op.limit > 1) ? "paging without orderBy returns rows in no stable order" : void 0,
131
152
  maxIncludeDepth: (op) => {
132
153
  const max = maxDepth;
133
154
  const selection = op.kind === "select" ? op.selection : op.returning;
@@ -136,10 +157,10 @@ function checks(rules) {
136
157
  },
137
158
  requireTenantContext: (op, { context, schema }) => {
138
159
  if (!op.table.flags.tenant || context.actor?.kind === "service") return;
139
- if (typeof context.tenant === "string") return;
140
160
  const claim = optionOf(rules.requireTenantContext, void 0);
141
- const paths = claim === void 0 ? tenantClaimPaths(claimsOf(schema).tenant) : [claim];
142
- return paths.some((path) => claimAt(context.claims, path) !== void 0) ? void 0 : `"${op.table.key}" is tenant-scoped but the request has no tenant (context.tenant or claim ${paths.map((path) => `"${path}"`).join(" or ")})`;
161
+ const paths = tenantPathsFor(claim, schema);
162
+ if (tenantFrom(context, paths) !== void 0) return;
163
+ return `"${op.table.key}" is tenant-scoped but the request has no tenant (context.tenant or claim ${paths.map((path) => `"${path}"`).join(" or ")})`;
143
164
  },
144
165
  noAdminInBrowser: (_op, { context }) => context.actor?.kind === "service" && isBrowser() ? "a service-role connection is running in a browser" : void 0,
145
166
  noSensitiveSelect: (op, { options }) => {
@@ -147,7 +168,12 @@ function checks(rules) {
147
168
  const columns = sensitiveColumns(op.selection, op.table);
148
169
  return columns.length > 0 ? `reads sensitive column(s) ${columns.join(", ")}; pass { sensitive: true } to allow` : void 0;
149
170
  },
150
- noDeleteManyWithoutWhere: (op) => op.kind === "delete" && op.where === void 0 ? "delete without where removes every visible row" : void 0,
171
+ noDeleteManyWithoutWhere: (op) => op.kind === "delete" && simplify(op.where) === true ? "delete without where removes every visible row" : void 0,
172
+ requireMaxAffected: (op) => {
173
+ if (op.kind !== "update" && op.kind !== "delete") return;
174
+ if (op.maxAffected === void 0) return pinsPrimaryKey(op.table, op.where) ? void 0 : `${op.kind === "update" ? "updateMany" : "deleteMany"} without maxAffected can change every row its where matches`;
175
+ return op.maxAffected > maxAffected ? `maxAffected ${op.maxAffected} is above the maximum of ${maxAffected}` : void 0;
176
+ },
151
177
  storagePathColumns: (op, { schema }) => storedObjectColumn(op, schema)
152
178
  };
153
179
  }
@@ -158,10 +184,10 @@ function defaultReport(violation) {
158
184
  * Runtime query rules, checked before each request is built:
159
185
  *
160
186
  * ```ts
161
- * defineSupabase(schema, { plugins: [rules({ rules: recommended() })] });
187
+ * defineSupabase(schema).use(rules({ rules: recommended() }));
162
188
  * ```
163
189
  *
164
- * Runs first (`enforce: 'pre'`) so it sees the query as written, before
190
+ * Runs first (`enforce: 'first'`) so it sees the query as written, before
165
191
  * tenant or soft-delete filters are added. Pair with the static
166
192
  * `better-supabase/lint` plugin to catch the same mistakes in the editor.
167
193
  */
@@ -179,7 +205,8 @@ function rules(options = {}) {
179
205
  });
180
206
  return definePlugin({
181
207
  name: "rules",
182
- enforce: "pre",
208
+ enforce: "first",
209
+ scopes: [],
183
210
  transformQuery(op, hook) {
184
211
  for (const { rule, level, check } of active) {
185
212
  const message = check(op, hook);
@@ -1,6 +1,6 @@
1
- import { w as PrimaryKeyValue } from "../../types-Dnf_wRDz.js";
2
- import { a as AsyncResult } from "../../executor-BunPOO-k.js";
3
- import { h as RepositoryExtension, o as HasFlag, p as Plugin } from "../../plugin-o144f322.js";
1
+ import { t as AsyncResult } from "../../result-D7y2fT87.js";
2
+ import { E as PrimaryKeyValue } from "../../types-6BdhkmZe.js";
3
+ import { d as Plugin, o as HasFlag, p as RepositoryExtension } from "../../plugin-FGY8UhYm.js";
4
4
  //#region src/plugins/soft-delete/index.d.ts
5
5
  export interface SoftDeleteFindArgs {
6
6
  /** Include soft-deleted rows of the queried table. */
@@ -32,7 +32,8 @@ export interface SoftDeleteExtension extends RepositoryExtension {
32
32
  * - `restore(key)` clears it.
33
33
  *
34
34
  * Deletes become updates without `RETURNING`, so a SELECT policy that hides
35
- * deleted rows does not make them fail.
35
+ * deleted rows does not make them fail. `deleteMany({ returning: true })`
36
+ * keeps `RETURNING`, which needs a SELECT policy that still shows the row.
36
37
  */
37
38
  export declare function softDelete(): Plugin<"softDelete", SoftDeleteExtension>;
38
39
  //#endregion
@@ -1,8 +1,8 @@
1
1
  import { t as and } from "../../types-6cYK9pbJ.js";
2
- import { i as ok, t as AsyncResult } from "../../result-BKiliPY7.js";
3
- import { r as definePlugin } from "../../plugin-DwARMuQp.js";
2
+ import { a as ok, t as AsyncResult } from "../../result-DzUbqgdW.js";
3
+ import { r as definePlugin } from "../../plugin-tfXW1-qO.js";
4
4
  import { n as scopeOperation } from "../../scope-CDHcS7dE.js";
5
- import { a as insertsOnly, i as guardManaged, o as isNotNull, s as isNull, t as dbName, u as withDefault } from "../../shared-D1dRUrAg.js";
5
+ import { a as insertsOnly, i as guardManaged, o as isNotNull, s as isNull, t as dbName, u as withDefault } from "../../shared-CxWmcyqB.js";
6
6
  //#region src/plugins/soft-delete/index.ts
7
7
  function deletedColumn(table) {
8
8
  return dbName(table, table.flags.softDelete);
@@ -20,12 +20,14 @@ function scopeFor(table) {
20
20
  * - `restore(key)` clears it.
21
21
  *
22
22
  * Deletes become updates without `RETURNING`, so a SELECT policy that hides
23
- * deleted rows does not make them fail.
23
+ * deleted rows does not make them fail. `deleteMany({ returning: true })`
24
+ * keeps `RETURNING`, which needs a SELECT policy that still shows the row.
24
25
  */
25
26
  function softDelete() {
26
27
  return definePlugin({
27
28
  name: "softDelete",
28
29
  enforce: "pre",
30
+ scopes: ["softDelete"],
29
31
  transformQuery(op, { options }) {
30
32
  const hardDelete = op.kind === "delete" && options["hard"] === true;
31
33
  const withDeleted = options["withDeleted"] === true || hardDelete;
@@ -52,10 +54,13 @@ function softDelete() {
52
54
  if (op.kind !== "delete" || options["hard"] === true) return op;
53
55
  return {
54
56
  kind: "update",
57
+ intent: "softDelete",
55
58
  table,
56
59
  set: { [column]: now().toString() },
57
60
  where: op.where,
58
- returning: void 0
61
+ returning: options["returning"] === true ? op.returning : void 0,
62
+ ...op.maxAffected === void 0 ? {} : { maxAffected: op.maxAffected },
63
+ ...op.count === void 0 ? {} : { count: op.count }
59
64
  };
60
65
  },
61
66
  repository({ table, base }) {
@@ -1,5 +1,5 @@
1
- import { j as SchemaMeta } from "../../types-Dnf_wRDz.js";
2
- import { g as RequestContext, h as RepositoryExtension, o as HasFlag, p as Plugin } from "../../plugin-o144f322.js";
1
+ import { P as SchemaMeta } from "../../types-6BdhkmZe.js";
2
+ import { d as Plugin, m as RequestContext, o as HasFlag, p as RepositoryExtension } from "../../plugin-FGY8UhYm.js";
3
3
  //#region src/plugins/tenant/index.d.ts
4
4
  /**
5
5
  * Dotted paths to the string claims of `C` (up to three levels), e.g.
@@ -1,8 +1,9 @@
1
- import { n as dbError, t as DbException } from "../../errors-DtwXa6b8.js";
2
- import { a as recordTenant, o as spansAllTenants, r as definePlugin } from "../../plugin-DwARMuQp.js";
1
+ import { t as DbException } from "../../db-exception-CnWcYPxL.js";
2
+ import { n as dbError } from "../../errors-B11Duf73.js";
3
+ import { a as spansAllTenants, r as definePlugin } from "../../plugin-tfXW1-qO.js";
3
4
  import { n as scopeOperation } from "../../scope-CDHcS7dE.js";
4
- import { i as tenantClaimPaths, n as claimAt, r as claimsOf } from "../../claims-BAf6c7is.js";
5
- import { a as insertsOnly, n as equals, r as forbidden, t as dbName } from "../../shared-D1dRUrAg.js";
5
+ import { o as tenantFrom, s as tenantPathsFor } from "../../claims-PqzCxaTD.js";
6
+ import { a as insertsOnly, n as equals, r as forbidden, t as dbName } from "../../shared-CxWmcyqB.js";
6
7
  //#region src/plugins/tenant/index.ts
7
8
  /**
8
9
  * The tenant for a request: `context.tenant`, then the configured claim.
@@ -10,13 +11,8 @@ import { a as insertsOnly, n as equals, r as forbidden, t as dbName } from "../.
10
11
  */
11
12
  function resolveTenant(context, options = {}, schema) {
12
13
  if (options.resolve) return options.resolve(context);
13
- if (typeof context.tenant === "string") return context.tenant;
14
14
  const claim = options.claim;
15
- const paths = typeof claim === "string" ? [claim] : claim ?? tenantClaimPaths(claimsOf(schema).tenant);
16
- for (const path of paths) {
17
- const value = claimAt(context.claims, path);
18
- if (value !== void 0) return value;
19
- }
15
+ return tenantFrom(context, tenantPathsFor(claim, schema));
20
16
  }
21
17
  /** Tenant columns may be numeric; the resolved tenant is always a string. */
22
18
  function sameTenant(value, id) {
@@ -42,7 +38,6 @@ function tenant(options = {}) {
42
38
  if (id === void 0 && !resolved.has(context)) {
43
39
  id = resolveTenant(context, options, schema);
44
40
  resolved.set(context, id);
45
- if (id !== void 0) recordTenant(context, id);
46
41
  }
47
42
  return id;
48
43
  };
@@ -56,6 +51,18 @@ function tenant(options = {}) {
56
51
  };
57
52
  return definePlugin({
58
53
  name: "tenant",
54
+ scopes: ["tenant"],
55
+ context(context, { schema }) {
56
+ if (spansAllTenants(context)) return context;
57
+ const id = resolvedFor(context, schema);
58
+ if (id === void 0 || id === context.tenant) return context;
59
+ const derived = {
60
+ ...context,
61
+ tenant: id
62
+ };
63
+ resolved.set(derived, id);
64
+ return derived;
65
+ },
59
66
  transformQuery(op, { context, schema, options: call }) {
60
67
  if (call["allTenants"] === true || spansAllTenants(context)) return op;
61
68
  const id = resolvedFor(context, schema);
@@ -1,9 +1,11 @@
1
- import { p as Plugin } from "../../plugin-o144f322.js";
1
+ import { d as Plugin } from "../../plugin-FGY8UhYm.js";
2
2
  //#region src/plugins/timestamps/index.d.ts
3
3
  /**
4
4
  * Stamps the columns generated as `Flags.timestamps`: `createdAt` on insert,
5
- * `updatedAt` on insert and update. Values the caller passes win. Pair it with
6
- * the `updated-at` SQL kit trigger to cover writes that bypass the app.
5
+ * `updatedAt` on insert and update. A call that sets either column fails with
6
+ * `invalid_request` unless it passes `{ override: true }`, which keeps the
7
+ * caller's values. Pair it with
8
+ * the `updated-at` SQL module trigger to cover writes that bypass the app.
7
9
  */
8
10
  export declare function timestamps(): Plugin<"timestamps">;
9
11
  //#endregion
@@ -1,10 +1,12 @@
1
- import { r as definePlugin } from "../../plugin-DwARMuQp.js";
2
- import { a as insertsOnly, i as guardManaged, t as dbName, u as withDefault } from "../../shared-D1dRUrAg.js";
1
+ import { r as definePlugin } from "../../plugin-tfXW1-qO.js";
2
+ import { a as insertsOnly, i as guardManaged, t as dbName, u as withDefault } from "../../shared-CxWmcyqB.js";
3
3
  //#region src/plugins/timestamps/index.ts
4
4
  /**
5
5
  * Stamps the columns generated as `Flags.timestamps`: `createdAt` on insert,
6
- * `updatedAt` on insert and update. Values the caller passes win. Pair it with
7
- * the `updated-at` SQL kit trigger to cover writes that bypass the app.
6
+ * `updatedAt` on insert and update. A call that sets either column fails with
7
+ * `invalid_request` unless it passes `{ override: true }`, which keeps the
8
+ * caller's values. Pair it with
9
+ * the `updated-at` SQL module trigger to cover writes that bypass the app.
8
10
  */
9
11
  function timestamps() {
10
12
  return definePlugin({
@@ -1,5 +1,5 @@
1
- import { p as Plugin } from "../../plugin-o144f322.js";
2
- import { t as StandardSchemaV1 } from "../../standard-J4YgMOLm.js";
1
+ import { d as Plugin } from "../../plugin-FGY8UhYm.js";
2
+ import { t as StandardSchemaV1 } from "../../standard-CYsm7xpT.js";
3
3
  //#region src/plugins/validation/index.d.ts
4
4
  export interface TableValidators {
5
5
  /** Validates inserts and upserts, with app-cased keys. */
@@ -1,8 +1,9 @@
1
- import { n as dbError, t as DbException } from "../../errors-DtwXa6b8.js";
2
- import { n as decodeValue, r as encodeValue } from "../../wire-D2dT86vi.js";
3
- import { r as definePlugin } from "../../plugin-DwARMuQp.js";
4
- import { t as validate } from "../../standard-D7r6dMUu.js";
5
- import { c as toApp, l as toDb } from "../../shared-D1dRUrAg.js";
1
+ import { t as DbException } from "../../db-exception-CnWcYPxL.js";
2
+ import { n as dbError } from "../../errors-B11Duf73.js";
3
+ import { i as encodeValue, r as decodeValue } from "../../wire-DtZQ4sdE.js";
4
+ import { r as definePlugin } from "../../plugin-tfXW1-qO.js";
5
+ import { n as validate } from "../../standard-BK0cqJ7y.js";
6
+ import { c as toApp, l as toDb } from "../../shared-CxWmcyqB.js";
6
7
  //#region src/plugins/validation/index.ts
7
8
  /**
8
9
  * Rows reach plugins in wire form (ISO text, decimal text), while generated
@@ -27,7 +28,10 @@ async function check(schema, table, row, label, index) {
27
28
  const result = await validate(schema, decoded(table, row), label);
28
29
  if (result.ok) {
29
30
  const output = result.data;
30
- return typeof output === "object" && output !== null ? encoded(toDb(table, output)) : { ...row };
31
+ return typeof output === "object" && output !== null ? {
32
+ ...row,
33
+ ...encoded(toDb(table, output))
34
+ } : { ...row };
31
35
  }
32
36
  const error = result.error;
33
37
  if (index === void 0 || error.kind !== "validation") throw new DbException(error);
@@ -1,5 +1,5 @@
1
- import { r as Executor } from "./executor-BunPOO-k.js";
2
- import { t as SqlClient } from "./executor-Cghdstwu.js";
1
+ import { r as Executor } from "./executor-DvsBbNBS.js";
2
+ import { t as SqlClient } from "./executor-DbvExCFC.js";
3
3
  //#region src/postgres/pool.d.ts
4
4
  /** The part of a `pg` pool client `createPostgres` uses. */
5
5
  interface PgPoolClient {
@@ -1,7 +1,7 @@
1
- import { U as Operation } from "../executor-BunPOO-k.js";
2
- import { n as fromPgError, r as postgresExecutor, t as SqlClient } from "../executor-Cghdstwu.js";
3
- import { a as PostgresTimeouts, c as createPostgres, i as PostgresOptions, n as PgPool, o as SessionOptions, r as PgPoolClient, s as SqlClaims, t as BetterPostgres } from "../pool-C9voM4Kw.js";
4
- import { t as Compiler } from "../compiler-BXH_aZ7N.js";
1
+ import { v as Operation } from "../executor-DvsBbNBS.js";
2
+ import { n as fromPgError, r as postgresExecutor, t as SqlClient } from "../executor-DbvExCFC.js";
3
+ import { a as PostgresTimeouts, c as createPostgres, i as PostgresOptions, n as PgPool, o as SessionOptions, r as PgPoolClient, s as SqlClaims, t as BetterPostgres } from "../pool-CAu2nLrL.js";
4
+ import { t as Compiler } from "../compiler-DY_wkj4R.js";
5
5
  //#region src/compile/sql.d.ts
6
6
  interface SqlQuery {
7
7
  readonly text: string;
@@ -1,5 +1,4 @@
1
- import { n as quoteIdent, t as compileSql } from "../sql-Coh6n4cC.js";
2
- import { n as postgresExecutor, t as fromPgError } from "../executor-XycESQPH.js";
1
+ import { i as quoteIdent, n as postgresExecutor, r as compileSql, t as fromPgError } from "../executor-De1Of3m3.js";
3
2
  import { Pool } from "pg";
4
3
  //#region src/postgres/pool.ts
5
4
  const DEFAULT_TIMEOUTS = {
@@ -1,4 +1,4 @@
1
- import { U as Operation } from "./executor-BunPOO-k.js";
1
+ import { v as Operation } from "./executor-DvsBbNBS.js";
2
2
  //#region src/compile/postgrest.d.ts
3
3
  /**
4
4
  * A compiled PostgREST request, expressed as calls on the public
@@ -16,6 +16,16 @@ interface PostgrestPlan {
16
16
  } | undefined;
17
17
  /** The condition can never match; skip the request. */
18
18
  readonly never: boolean;
19
+ /** `Prefer: max-affected` on an update or delete (PostgREST 13 and later). */
20
+ readonly maxAffected?: number;
21
+ }
22
+ interface PostgrestCompileOptions {
23
+ /**
24
+ * The PostgREST version the request goes to, from `postgrestVersion` in
25
+ * the config. `maxAffected` needs 13 or later; older versions fail with
26
+ * `invalid_request` before any request. Defaults to `"13"`.
27
+ */
28
+ readonly postgrestVersion?: string;
19
29
  }
20
30
  type PlanFilter = {
21
31
  readonly kind: "filter";
@@ -38,6 +48,6 @@ interface PlanLimit {
38
48
  readonly referencedTable: string | undefined;
39
49
  }
40
50
  /** Compiles an operation into a PostgREST plan. */
41
- declare function compilePostgrest(op: Operation): PostgrestPlan;
51
+ declare function compilePostgrest(op: Operation, options?: PostgrestCompileOptions): PostgrestPlan;
42
52
  //#endregion
43
- export { compilePostgrest as a, PostgrestPlan as i, PlanLimit as n, PlanOrder as r, PlanFilter as t };
53
+ export { PostgrestPlan as a, PostgrestCompileOptions as i, PlanLimit as n, compilePostgrest as o, PlanOrder as r, PlanFilter as t };
@@ -0,0 +1,43 @@
1
+ import { t as AuthSnapshot } from "../bind-Bu_ZNa3W.js";
2
+ import { _ as SqliteValue, a as postgrestTimestamp, b as quoteSqliteIdent, c as SqliteCompilerOptions, d as SqliteKeyedPlan, f as SqliteKeys, g as SqliteSelectPlan, h as SqliteReturning, i as fromSqliteError, l as SqliteDecode, m as SqliteQuery, n as PowerSyncExecutorOptions, o as powersyncExecutor, p as SqlitePlan, r as SqliteContextLike, s as SqliteColumn, t as PowerSyncDatabaseLike, u as SqliteInsertPlan, v as compileSqlite, x as sqliteValue, y as likeToGlob } from "../executor-CaWigTyR.js";
3
+ import { a as sqliteCompiler, i as checkSqlite, n as sqliteTables, r as watch, t as WatchOptions } from "../watch-DI34G86j.js";
4
+ import { a as UploadConnector, c as UploadRepository, d as uploadOutcome, i as RejectedStore, l as UploadRoute, n as CrudQueueLike, o as UploadConnectorOptions, r as RejectedChange, s as UploadOutcome, t as CrudEntryLike, u as createUploadConnector } from "../connector-Dv8kK0MO.js";
5
+ //#region src/powersync/auth.d.ts
6
+ /** The part of a PowerSync database `syncWithAuth` drives. */
7
+ interface SyncedDatabaseLike<C> {
8
+ connect(connector: C): Promise<void>;
9
+ disconnect(): Promise<void>;
10
+ disconnectAndClear(): Promise<void>;
11
+ }
12
+ /** `bs.auth` from a browser or native client. */
13
+ interface AuthSourceLike {
14
+ readonly current: () => AuthSnapshot;
15
+ readonly subscribe: (listener: () => void) => () => void;
16
+ }
17
+ interface SyncWithAuthOptions<C> {
18
+ /** The connector, e.g. `createUploadConnector(...)`. */
19
+ readonly connector: C;
20
+ /**
21
+ * Clears the local database on sign-out and when another user signs in,
22
+ * so one user never reads another's rows. Unsynced changes are lost.
23
+ * Defaults to true.
24
+ */
25
+ readonly clearOnSignOut?: boolean;
26
+ /** Called after each connect, disconnect or clear fails. */
27
+ readonly onError?: (cause: unknown) => void;
28
+ }
29
+ /**
30
+ * Syncs while a user is signed in: connects on sign-in, and on sign-out
31
+ * (or a different user) disconnects and clears the local database. An app
32
+ * that starts signed out clears it too, since the rows may belong to a user
33
+ * whose session ended while the app was closed. Steps
34
+ * run one at a time in order. Returns a function that stops following the
35
+ * session and disconnects.
36
+ *
37
+ * ```ts
38
+ * useEffect(() => syncWithAuth(powersync, bs.auth, { connector }), []);
39
+ * ```
40
+ */
41
+ export declare function syncWithAuth<C>(db: SyncedDatabaseLike<C>, auth: AuthSourceLike, options: SyncWithAuthOptions<C>): () => void;
42
+ //#endregion
43
+ export { type AuthSourceLike, type CrudEntryLike, type CrudQueueLike, type PowerSyncDatabaseLike, type PowerSyncExecutorOptions, type RejectedChange, type RejectedStore, type SqliteColumn, type SqliteCompilerOptions, type SqliteContextLike, type SqliteDecode, type SqliteInsertPlan, type SqliteKeyedPlan, type SqliteKeys, type SqlitePlan, type SqliteQuery, type SqliteReturning, type SqliteSelectPlan, type SqliteValue, type SyncWithAuthOptions, type SyncedDatabaseLike, type UploadConnector, type UploadConnectorOptions, type UploadOutcome, type UploadRepository, type UploadRoute, type WatchOptions, checkSqlite, compileSqlite, createUploadConnector, fromSqliteError, likeToGlob, postgrestTimestamp, powersyncExecutor, quoteSqliteIdent, sqliteCompiler, sqliteTables, sqliteValue, uploadOutcome, watch };