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,592 +0,0 @@
1
- import { c as mapDbError, n as dbError } from "./errors-DtwXa6b8.js";
2
- import { a as invalidRequest, n as simplifyOrFalse } from "./simplify-_0oUKqCd.js";
3
- import { i as temporalText } from "./temporal-CVlIV2DZ.js";
4
- import { i as ok, n as err, o as toDbError } from "./result-BKiliPY7.js";
5
- //#region src/compile/postgrest.ts
6
- function scalar(value) {
7
- if (typeof value === "string") return value;
8
- if (typeof value === "number" || typeof value === "boolean") return String(value);
9
- const temporalValue = temporalText(value);
10
- if (temporalValue !== void 0) return temporalValue;
11
- if (typeof value === "number" || typeof value === "bigint" || typeof value === "boolean") return String(value);
12
- if (value === null) return "null";
13
- return JSON.stringify(value);
14
- }
15
- /** Double-quotes a value for PostgREST lists and logic trees. */
16
- function quote(value) {
17
- return `"${scalar(value).replaceAll("\\", "\\\\").replaceAll("\"", "\\\"")}"`;
18
- }
19
- function list(values, open, close) {
20
- return `${open}${values.map(quote).join(",")}${close}`;
21
- }
22
- function isBoolLike(value) {
23
- return value === null || typeof value === "boolean";
24
- }
25
- function operatorAndValue(condition, inLogic) {
26
- const { op, value } = condition;
27
- const plain = (text) => inLogic ? quote(text) : scalar(text);
28
- switch (op) {
29
- case "eq":
30
- case "neq":
31
- case "gt":
32
- case "gte":
33
- case "lt":
34
- case "lte":
35
- case "like":
36
- case "ilike": return {
37
- operator: op,
38
- value: plain(value)
39
- };
40
- case "in":
41
- if (!Array.isArray(value)) invalidRequest("\"in\" needs an array");
42
- return {
43
- operator: "in",
44
- value: list(value, "(", ")")
45
- };
46
- case "is":
47
- if (!isBoolLike(value)) invalidRequest("\"is\" needs null, true or false");
48
- return {
49
- operator: "is",
50
- value: String(value)
51
- };
52
- case "contains":
53
- case "containedBy":
54
- case "overlaps": {
55
- const operator = op === "contains" ? "cs" : op === "containedBy" ? "cd" : "ov";
56
- if (Array.isArray(value)) return {
57
- operator,
58
- value: list(value, "{", "}")
59
- };
60
- const json = JSON.stringify(value);
61
- return {
62
- operator,
63
- value: inLogic ? quote(json) : json
64
- };
65
- }
66
- case "fts": return {
67
- operator: condition.config ? `wfts(${condition.config})` : "wfts",
68
- value: plain(value)
69
- };
70
- default: return op;
71
- }
72
- }
73
- var PostgrestCompiler = class {
74
- filters = [];
75
- orders = [];
76
- limits = [];
77
- #counter = 0;
78
- nextAlias() {
79
- this.#counter += 1;
80
- return `_bs${this.#counter}`;
81
- }
82
- /** Compiles a condition at `path` where top-level items are ANDed. */
83
- andContext(condition, path, embeds) {
84
- switch (condition.kind) {
85
- case "and":
86
- for (const item of condition.items) this.andContext(item, path, embeds);
87
- return;
88
- case "column": {
89
- const { operator, value } = operatorAndValue(condition, false);
90
- this.filters.push({
91
- kind: "filter",
92
- path: path ? `${path}.${condition.column}` : condition.column,
93
- operator,
94
- value
95
- });
96
- return;
97
- }
98
- case "not": {
99
- const inner = condition.item;
100
- if (inner.kind === "column") {
101
- const { operator, value } = operatorAndValue(inner, false);
102
- this.filters.push({
103
- kind: "filter",
104
- path: path ? `${path}.${inner.column}` : inner.column,
105
- operator: `not.${operator}`,
106
- value
107
- });
108
- return;
109
- }
110
- if (inner.kind === "relation") {
111
- this.relationAnd(negateRelation(inner), path, embeds);
112
- return;
113
- }
114
- if (inner.kind === "not") {
115
- this.andContext(inner.item, path, embeds);
116
- return;
117
- }
118
- this.filters.push({
119
- kind: "or",
120
- expression: this.logic(condition, embeds),
121
- referencedTable: path
122
- });
123
- return;
124
- }
125
- case "or":
126
- this.filters.push({
127
- kind: "or",
128
- expression: this.logic(condition, embeds).replace(/^or\(/, "").replace(/\)$/, ""),
129
- referencedTable: path
130
- });
131
- return;
132
- case "relation":
133
- this.relationAnd(condition, path, embeds);
134
- return;
135
- default: return condition;
136
- }
137
- }
138
- relationAnd(condition, path, embeds) {
139
- if (condition.quantifier === "every" && !condition.where) return;
140
- const alias = this.nextAlias();
141
- const aliasPath = path ? `${path}.${alias}` : alias;
142
- const node = filterEmbed(alias, condition, condition.quantifier === "some");
143
- this.withPath(node.children, aliasPath);
144
- embeds.push(node);
145
- const where = condition.quantifier === "every" && condition.where ? {
146
- kind: "not",
147
- item: condition.where
148
- } : condition.where;
149
- if (where) this.andContext(where, aliasPath, node.children);
150
- if (condition.quantifier !== "some") this.filters.push({
151
- kind: "filter",
152
- path: aliasPath,
153
- operator: "is",
154
- value: "null"
155
- });
156
- }
157
- /** Compiles a condition into a PostgREST logic-tree term. */
158
- logic(condition, embeds) {
159
- switch (condition.kind) {
160
- case "and":
161
- case "or": return `${condition.kind}(${condition.items.map((item) => this.logic(item, embeds)).join(",")})`;
162
- case "not": {
163
- const inner = condition.item;
164
- if (inner.kind === "column") {
165
- const { operator, value } = operatorAndValue(inner, true);
166
- return `${inner.column}.not.${operator}.${value}`;
167
- }
168
- if (inner.kind === "relation") return this.logic(negateRelation(inner), embeds);
169
- if (inner.kind === "not") return this.logic(inner.item, embeds);
170
- return `not.${this.logic(inner, embeds)}`;
171
- }
172
- case "column": {
173
- const { operator, value } = operatorAndValue(condition, true);
174
- return `${condition.column}.${operator}.${value}`;
175
- }
176
- case "relation": {
177
- if (condition.quantifier === "every" && !condition.where) invalidRequest("every({}) must be simplified before compiling");
178
- const alias = this.nextAlias();
179
- const node = filterEmbed(alias, condition, false);
180
- const nodePath = this.pathOf(alias, embeds);
181
- this.withPath(node.children, nodePath);
182
- embeds.push(node);
183
- const where = condition.quantifier === "every" && condition.where ? {
184
- kind: "not",
185
- item: condition.where
186
- } : condition.where;
187
- if (where) this.andContext(where, nodePath, node.children);
188
- return condition.quantifier === "some" ? `${alias}.not.is.null` : `${alias}.is.null`;
189
- }
190
- default: return condition;
191
- }
192
- }
193
- #paths = /* @__PURE__ */ new WeakMap();
194
- withPath(embeds, path) {
195
- this.#paths.set(embeds, path);
196
- return embeds;
197
- }
198
- pathOf(alias, embeds) {
199
- const parent = this.#paths.get(embeds);
200
- return parent ? `${parent}.${alias}` : alias;
201
- }
202
- include(include, path, embeds) {
203
- const aliasPath = path ? `${path}.${include.alias}` : include.alias;
204
- const node = {
205
- alias: include.alias,
206
- target: include.target,
207
- relation: include.relation,
208
- inner: include.required,
209
- columns: include.selection.columns,
210
- children: this.withPath([], aliasPath),
211
- ...include.count === void 0 ? {} : { count: true },
212
- ...include.selection.aggregate ? { measures: include.selection.aggregate.measures } : {}
213
- };
214
- embeds.push(node);
215
- for (const child of include.selection.includes) this.include(child, aliasPath, node.children);
216
- const where = simplifyOrFalse(include.where);
217
- if (where.never) {
218
- const [first] = include.target.primaryKey;
219
- const column = first ? include.target.columns[first]?.db : void 0;
220
- if (!column) invalidRequest(`Cannot filter "${include.alias}" to nothing`);
221
- this.filters.push({
222
- kind: "filter",
223
- path: `${aliasPath}.${column}`,
224
- operator: "is",
225
- value: "null"
226
- }, {
227
- kind: "filter",
228
- path: `${aliasPath}.${column}`,
229
- operator: "not.is",
230
- value: "null"
231
- });
232
- } else if (where.condition) this.andContext(where.condition, aliasPath, node.children);
233
- for (const term of include.orderBy) this.order(term, aliasPath);
234
- if (include.limit !== void 0) this.limits.push({
235
- count: include.limit,
236
- referencedTable: aliasPath
237
- });
238
- }
239
- order(term, referencedTable) {
240
- this.orders.push({
241
- column: term.column,
242
- ascending: term.direction === "asc",
243
- nullsFirst: term.nulls === void 0 ? void 0 : term.nulls === "first",
244
- referencedTable
245
- });
246
- }
247
- };
248
- function negateRelation(condition) {
249
- switch (condition.quantifier) {
250
- case "some": return {
251
- ...condition,
252
- quantifier: "none"
253
- };
254
- case "none": return {
255
- ...condition,
256
- quantifier: "some"
257
- };
258
- case "every": return {
259
- ...condition,
260
- quantifier: "some",
261
- where: condition.where ? {
262
- kind: "not",
263
- item: condition.where
264
- } : void 0
265
- };
266
- default: return condition.quantifier;
267
- }
268
- }
269
- function filterEmbed(alias, condition, inner) {
270
- return {
271
- alias,
272
- target: condition.target,
273
- relation: condition.relation,
274
- inner,
275
- columns: [],
276
- children: []
277
- };
278
- }
279
- const columnTexts = /* @__PURE__ */ new WeakMap();
280
- /** The rendered column list, cached per (shared, immutable) column array. */
281
- function columnText(columns) {
282
- let text = columnTexts.get(columns);
283
- if (text === void 0) {
284
- text = columns.map(({ alias, column, cast }) => {
285
- const source = cast ? `${column}::${cast}` : column;
286
- return alias === column ? source : `${alias}:${source}`;
287
- }).join(",");
288
- columnTexts.set(columns, text);
289
- }
290
- return text;
291
- }
292
- function columnList(columns) {
293
- return columns.length > 0 ? [columnText(columns)] : [];
294
- }
295
- /** `key:column.sum()::text`, PostgREST's aggregate syntax (PostgREST 12+). */
296
- function measureList(measures) {
297
- return measures.map(({ key, column, fn, cast }) => `${key}:${column}.${fn}()${cast ? `::${cast}` : ""}`);
298
- }
299
- function aggregateList(aggregate) {
300
- return [...aggregate.count ? ["_count:count()"] : [], ...measureList(aggregate.measures)];
301
- }
302
- function renderEmbeds(embeds) {
303
- return embeds.map((node) => {
304
- const hint = `${node.target.name}!${node.relation.foreignKey}${node.inner ? "!inner" : ""}`;
305
- if (node.count) return `${node.alias}:${hint}(count)`;
306
- if (node.measures) return `${node.alias}:${hint}(${measureList(node.measures).join(",")})`;
307
- const inside = [...columnList(node.columns), ...renderEmbeds(node.children)];
308
- return `${node.alias}:${hint}(${inside.join(",")})`;
309
- });
310
- }
311
- function renderSelect(selection, embeds) {
312
- if (!selection.aggregate && embeds.length === 0) return selection.columns.length > 0 ? columnText(selection.columns) : "*";
313
- const parts = [
314
- ...columnList(selection.columns),
315
- ...selection.aggregate ? aggregateList(selection.aggregate) : [],
316
- ...renderEmbeds(embeds)
317
- ];
318
- return parts.length > 0 ? parts.join(",") : "*";
319
- }
320
- function applyWhere(compiler, condition, embeds) {
321
- const where = simplifyOrFalse(condition);
322
- if (where.never) return false;
323
- if (where.condition) compiler.andContext(where.condition, void 0, embeds);
324
- return true;
325
- }
326
- /** Compiles an operation into a PostgREST plan. */
327
- function compilePostgrest(op) {
328
- const compiler = new PostgrestCompiler();
329
- const embeds = compiler.withPath([], void 0);
330
- const selection = op.kind === "select" ? op.selection : op.kind === "insert" ? op.returning : op.returning;
331
- if (selection) for (const include of selection.includes) compiler.include(include, void 0, embeds);
332
- let matches = true;
333
- if (op.kind === "select" || op.kind === "update" || op.kind === "delete") {
334
- const before = embeds.length;
335
- matches = applyWhere(compiler, op.where, embeds);
336
- if (op.kind !== "select" && embeds.length > before) invalidRequest(`Relation filters are not supported in ${op.kind} on PostgREST; filter by key instead`, op.table.key);
337
- }
338
- let range;
339
- if (op.kind === "select") {
340
- for (const term of op.orderBy) compiler.order(term, void 0);
341
- if (op.offset !== void 0) {
342
- const from = op.offset;
343
- range = {
344
- from,
345
- to: op.limit === void 0 ? Number.MAX_SAFE_INTEGER : from + op.limit - 1
346
- };
347
- } else if (op.limit !== void 0) compiler.limits.push({
348
- count: op.limit,
349
- referencedTable: void 0
350
- });
351
- }
352
- return {
353
- select: selection ? renderSelect(selection, embeds) : void 0,
354
- filters: compiler.filters,
355
- orders: compiler.orders,
356
- limits: compiler.limits,
357
- range,
358
- never: !matches
359
- };
360
- }
361
- //#endregion
362
- //#region src/core/postgrest-executor.ts
363
- function scope(client, schema) {
364
- const loose = client;
365
- if (schema === "public" || !loose.schema) return loose;
366
- let schemas = scopedClients.get(client);
367
- if (!schemas) {
368
- schemas = /* @__PURE__ */ new Map();
369
- scopedClients.set(client, schemas);
370
- }
371
- let scoped = schemas.get(schema);
372
- if (!scoped) {
373
- scoped = loose.schema(schema);
374
- schemas.set(schema, scoped);
375
- }
376
- return scoped;
377
- }
378
- /** `schema()` builds a new client on every call; one per client and schema is enough. */
379
- const scopedClients = /* @__PURE__ */ new WeakMap();
380
- function fromTable(client, schema, table) {
381
- return scope(client, schema).from(table);
382
- }
383
- /** A POST to the function: arguments such as query vectors are too long for a URL. */
384
- function fromFunction(client, source, options) {
385
- const scoped = scope(client, source.schema);
386
- if (!scoped.rpc) throw new TypeError(`better-supabase: the client has no rpc(), needed to read from ${source.name}`);
387
- return scoped.rpc(source.name, source.args, options);
388
- }
389
- function applyFilters(builder, plan) {
390
- let query = builder;
391
- for (const filter of plan.filters) query = filter.kind === "filter" ? query.filter(filter.path, filter.operator, filter.value) : query.or(filter.expression, filter.referencedTable ? { referencedTable: filter.referencedTable } : {});
392
- return query;
393
- }
394
- function applyOrderAndLimits(builder, plan) {
395
- let query = builder;
396
- for (const order of plan.orders) {
397
- const options = { ascending: order.ascending };
398
- if (order.nullsFirst !== void 0) options.nullsFirst = order.nullsFirst;
399
- if (order.referencedTable) options.referencedTable = order.referencedTable;
400
- query = query.order(order.column, options);
401
- }
402
- for (const limit of plan.limits) query = query.limit(limit.count, limit.referencedTable ? { referencedTable: limit.referencedTable } : {});
403
- if (plan.range) query = query.range(plan.range.from, plan.range.to);
404
- return query;
405
- }
406
- function build(client, op, plan) {
407
- const base = fromTable(client, op.table.schema, op.table.name);
408
- switch (op.kind) {
409
- case "select": {
410
- const options = {};
411
- if (op.count) options.count = op.count;
412
- if (op.head) options.head = true;
413
- let query = applyOrderAndLimits(applyFilters(op.source ? fromFunction(client, op.source, options).select(plan.select) : base.select(plan.select, options), plan), plan);
414
- if (op.single === "one") query = query.single();
415
- if (op.single === "maybe") query = query.maybeSingle();
416
- return query;
417
- }
418
- case "insert": {
419
- const rows = op.rows.length === 1 ? op.rows[0] : op.rows;
420
- const count = plan.select === void 0 ? { count: "exact" } : {};
421
- let query = op.onConflict ? base.upsert(rows, {
422
- onConflict: op.onConflict.columns.join(","),
423
- ignoreDuplicates: op.onConflict.action === "ignore",
424
- defaultToNull: op.defaultToNull,
425
- ...count
426
- }) : base.insert(rows, {
427
- defaultToNull: op.defaultToNull,
428
- ...count
429
- });
430
- if (plan.select !== void 0) query = query.select(plan.select);
431
- return query;
432
- }
433
- case "update": {
434
- const count = plan.select === void 0 ? { count: "exact" } : {};
435
- let query = applyFilters(base.update(op.set, count), plan);
436
- if (plan.select !== void 0) query = query.select(plan.select);
437
- return query;
438
- }
439
- case "delete": {
440
- const count = plan.select === void 0 ? { count: "exact" } : {};
441
- let query = applyFilters(base.delete(count), plan);
442
- if (plan.select !== void 0) query = query.select(plan.select);
443
- return query;
444
- }
445
- default: return op;
446
- }
447
- }
448
- function rowsOf(data) {
449
- if (data === null || data === void 0) return [];
450
- if (Array.isArray(data)) return data;
451
- return [data];
452
- }
453
- /** Executes IR operations through a supabase-js client. */
454
- const aborted = () => dbError("aborted", "The request was aborted");
455
- function postgrestExecutor(client) {
456
- return {
457
- name: "postgrest",
458
- functionSources: true,
459
- async execute(op, context) {
460
- let plan;
461
- try {
462
- plan = compilePostgrest(op);
463
- } catch (cause) {
464
- return err(toDbError(cause));
465
- }
466
- if (plan.never) return ok({
467
- rows: [],
468
- count: 0
469
- });
470
- if (context.signal?.aborted) return err(aborted());
471
- let query = build(client, op, plan);
472
- if (context.signal) query = query.abortSignal(context.signal);
473
- const response = await query;
474
- if (response.error) {
475
- if (context.signal?.aborted) return err(aborted());
476
- return err(mapDbError(response.error, context.errorMappers));
477
- }
478
- return ok({
479
- rows: rowsOf(response.data),
480
- count: response.count ?? null
481
- });
482
- },
483
- async rpc(name, args, context) {
484
- const scoped = scope(client, context.schema);
485
- if (!scoped.rpc) return err(toDbError(/* @__PURE__ */ new Error("The client does not support rpc()")));
486
- if (context.signal?.aborted) return err(aborted());
487
- let query = context.get ? scoped.rpc(name, queryArgs(args), { get: true }) : scoped.rpc(name, args);
488
- if (context.signal) query = query.abortSignal(context.signal);
489
- const response = await query;
490
- if (response.error) {
491
- if (context.signal?.aborted) return err(aborted());
492
- return err(mapDbError(response.error, context.errorMappers));
493
- }
494
- return ok(response.data);
495
- }
496
- };
497
- }
498
- /**
499
- * GET arguments travel in the query string, where supabase-js would print an
500
- * object as `[object Object]`; json and jsonb parameters take it as JSON.
501
- */
502
- function queryArgs(args) {
503
- return Object.fromEntries(Object.entries(args).map(([key, value]) => [key, typeof value === "object" && value !== null && !Array.isArray(value) ? JSON.stringify(value) : value]));
504
- }
505
- /** The compiled plan for an operation; useful for debugging and tests. */
506
- function explainPostgrest(op) {
507
- return compilePostgrest(op);
508
- }
509
- //#endregion
510
- //#region src/core/stats.ts
511
- const EMPTY_STATS = {
512
- calls: 0,
513
- waves: 0,
514
- tables: [],
515
- ms: 0
516
- };
517
- /**
518
- * Counts calls and waves. A recorder with a `parent` also reports to it, so
519
- * a request-wide recorder sees every scope's calls.
520
- */
521
- var StatsRecorder = class {
522
- #parent;
523
- #now;
524
- #tables = /* @__PURE__ */ new Set();
525
- #calls = 0;
526
- #waves = 0;
527
- #inFlight = 0;
528
- #first;
529
- #last;
530
- constructor(parent, now = () => performance.now()) {
531
- this.#parent = parent;
532
- this.#now = now;
533
- }
534
- /** Records a call to `table`; the returned function ends it. */
535
- begin(table) {
536
- const end = this.#parent?.begin(table);
537
- const started = this.#now();
538
- if (this.#inFlight === 0) this.#waves += 1;
539
- this.#inFlight += 1;
540
- this.#calls += 1;
541
- this.#tables.add(table);
542
- this.#first ??= started;
543
- let ended = false;
544
- return () => {
545
- if (ended) return;
546
- ended = true;
547
- this.#inFlight -= 1;
548
- this.#last = Math.max(this.#last ?? 0, this.#now());
549
- end?.();
550
- };
551
- }
552
- /** The totals so far. */
553
- snapshot() {
554
- return {
555
- calls: this.#calls,
556
- waves: this.#waves,
557
- tables: [...this.#tables],
558
- ms: this.#first === void 0 || this.#last === void 0 ? 0 : Math.round((this.#last - this.#first) * 100) / 100
559
- };
560
- }
561
- };
562
- /** Wraps an executor so every call is recorded. */
563
- function recordStats(executor, recorder) {
564
- const wrapped = {
565
- name: executor.name,
566
- async execute(op, context) {
567
- const end = recorder.begin(op.table.key);
568
- try {
569
- return await executor.execute(op, context);
570
- } finally {
571
- end();
572
- }
573
- }
574
- };
575
- if (executor.rpc) {
576
- const rpc = executor.rpc.bind(executor);
577
- return {
578
- ...wrapped,
579
- async rpc(name, args, context) {
580
- const end = recorder.begin(`${name}()`);
581
- try {
582
- return await rpc(name, args, context);
583
- } finally {
584
- end();
585
- }
586
- }
587
- };
588
- }
589
- return wrapped;
590
- }
591
- //#endregion
592
- export { postgrestExecutor as a, explainPostgrest as i, StatsRecorder as n, compilePostgrest as o, recordStats as r, EMPTY_STATS as t };
@@ -1,88 +0,0 @@
1
- /// <reference lib="esnext.temporal" />
2
- import { t as BetterPostgres } from "./pool-C9voM4Kw.js";
3
- //#region src/auth/support.d.ts
4
- type SupportEndedBy = "admin" | "expired" | "revoked";
5
- /** A support session: a platform admin viewing the app as `targetUserId`. */
6
- interface SupportSession {
7
- readonly id: string;
8
- readonly adminId: string;
9
- readonly targetUserId: string;
10
- readonly reason: string;
11
- /** Writes fail while it is true (`begin read only`). */
12
- readonly readOnly: boolean;
13
- readonly tenant?: string;
14
- readonly startedAt: Temporal.Instant;
15
- readonly expiresAt: Temporal.Instant;
16
- readonly endedAt?: Temporal.Instant;
17
- readonly endedBy?: SupportEndedBy;
18
- /** App data, such as a ticket id. */
19
- readonly metadata: Readonly<Record<string, unknown>>;
20
- }
21
- interface SupportStartInput {
22
- readonly adminId: string;
23
- /**
24
- * The admin's verified claims. The SQL store runs `start_support_session`
25
- * with them, so `is_platform()` checks the admin in the database too.
26
- */
27
- readonly adminClaims: Readonly<Record<string, unknown>>;
28
- readonly targetUserId: string;
29
- readonly reason: string;
30
- readonly ttlSeconds: number;
31
- readonly readOnly: boolean;
32
- readonly tenant?: string;
33
- readonly metadata: Readonly<Record<string, unknown>>;
34
- }
35
- /** A caller's verified claims, which the store runs a call with. */
36
- type SupportCallerClaims = Readonly<Record<string, unknown>>;
37
- interface SupportListFilter {
38
- readonly adminId?: string;
39
- readonly targetUserId?: string;
40
- /** `true`: running sessions only; `false`: ended or expired ones only. */
41
- readonly active?: boolean;
42
- /** Defaults to 50. */
43
- readonly limit?: number;
44
- }
45
- /**
46
- * Where support sessions live. `sqlSupportStore` uses the `support-sessions`
47
- * SQL kit module; implement this for another store and check it with
48
- * `testSupportSessionStore` from `better-supabase/testing`.
49
- */
50
- interface SupportSessionStore {
51
- readonly apiVersion: 1;
52
- readonly name: string;
53
- /** Starts a session and ends the admin's previous one. Rejects when the store refuses. */
54
- start(input: SupportStartInput): Promise<SupportSession>;
55
- /**
56
- * The admin's session while it is running; `undefined` once ended or
57
- * expired. With the admin's `claims`, the store also checks that the admin
58
- * may still start sessions.
59
- */
60
- get(sessionId: string, adminId: string, claims?: SupportCallerClaims): Promise<SupportSession | undefined>;
61
- /**
62
- * `false` when it was not running. With `claims`, it runs as that caller:
63
- * the session's admin, or staff with the revoke permission.
64
- */
65
- end(sessionId: string, endedBy: SupportEndedBy, claims?: SupportCallerClaims): Promise<boolean>;
66
- /** With `claims`, only what that caller may view. */
67
- list(filter?: SupportListFilter, claims?: SupportCallerClaims): Promise<readonly SupportSession[]>;
68
- /** The claims `targetUserId` would get, when the store can build them. */
69
- claims?(targetUserId: string): Promise<Readonly<Record<string, unknown>>>;
70
- }
71
- interface SqlSupportStoreOptions {
72
- /** `kits.support-sessions.schema`. Defaults to `better_supabase`. */
73
- readonly schema?: string;
74
- }
75
- /**
76
- * Support sessions in the `support-sessions` SQL kit module. `start` runs
77
- * as the admin, so the module's `is_platform()` gate applies; the reads run
78
- * on the admin connection.
79
- */
80
- declare function sqlSupportStore(postgres: Pick<BetterPostgres, "admin" | "asUser">, options?: SqlSupportStoreOptions): SupportSessionStore;
81
- /**
82
- * The claims a support session runs with: the target's, plus `act` naming
83
- * the admin, the reason and the session (the audit module records all three).
84
- * `role` falls back to `authenticated`; the admin's claims never leak in.
85
- */
86
- declare function supportClaims(session: Pick<SupportSession, "id" | "adminId" | "targetUserId" | "reason" | "readOnly">, target: Readonly<Record<string, unknown>>): Record<string, unknown>;
87
- //#endregion
88
- export { SupportSession as a, sqlSupportStore as c, SupportListFilter as i, supportClaims as l, SupportCallerClaims as n, SupportSessionStore as o, SupportEndedBy as r, SupportStartInput as s, SqlSupportStoreOptions as t };
@@ -1,6 +0,0 @@
1
- //#region src/core/template.d.ts
2
- /** Placeholder names in a `{name}` template. */
3
- type TemplateParams<P extends string> = P extends `${string}{${infer K}}${infer R}` ? K | TemplateParams<R> : never;
4
- type TemplateValues<P extends string> = { readonly [K in TemplateParams<P>]: string | number; };
5
- //#endregion
6
- export { TemplateValues as n, TemplateParams as t };