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,445 +1,2 @@
1
- //#region src/list/list-query.ts
2
- /** Facet value meaning "not set": filters with `is null`. */
3
- const UNSET = "__unset__";
4
- const RESERVED = /* @__PURE__ */ new Set([
5
- "q",
6
- "sort",
7
- "page",
8
- "after",
9
- "size"
10
- ]);
11
- function first(value) {
12
- return typeof value === "string" ? value : value?.[0];
13
- }
14
- function all(value) {
15
- return (typeof value === "string" ? [value] : [...value ?? []]).flatMap((entry) => entry.split(",")).map((entry) => entry.trim()).filter(Boolean);
16
- }
17
- const isParamValue = (value) => value === void 0 || typeof value === "string" || Array.isArray(value) && value.every((entry) => typeof entry === "string");
18
- function isSearchParams(value) {
19
- return value instanceof URLSearchParams || !("facets" in value && typeof value.facets === "object") && Object.values(value).every(isParamValue);
20
- }
21
- function readRecord(input) {
22
- if (!(input instanceof URLSearchParams)) return input;
23
- const out = {};
24
- for (const [key, value] of input) (out[key] ??= []).push(value);
25
- return out;
26
- }
27
- function toInt(raw) {
28
- if (typeof raw === "number") return raw;
29
- if (typeof raw !== "string" || !/^\d+$/.test(raw)) return NaN;
30
- return Number(raw);
31
- }
32
- /**
33
- * A reusable list endpoint for one table: search, facets, sorts and
34
- * pagination, validated from URL params or typed input, with URL parsers,
35
- * OpenAPI parameters and a JSON Schema derived from the same definition.
36
- *
37
- * ```ts
38
- * export const customerList = defineListQuery(betterSupabase, 'customers', {
39
- * search: ['name', 'kvk'],
40
- * facets: { status: 'status' },
41
- * sorts: { name: { name: 'asc' }, newest: [{ createdAt: 'desc' }, { id: 'asc' }] },
42
- * defaultSort: 'newest',
43
- * });
44
- * ```
45
- */
46
- function defineListQuery(betterSupabase, table, config) {
47
- const meta = betterSupabase.meta.tables[table];
48
- if (!meta) throw new TypeError(`defineListQuery: unknown table "${table}"`);
49
- const pageSize = config.pageSize ?? 50;
50
- const maxPageSize = config.maxPageSize ?? 200;
51
- const maxSearch = config.maxSearchLength ?? 200;
52
- const cursor = config.pagination === "cursor";
53
- const sortKeys = Object.keys(config.sorts);
54
- const facetEntries = Object.entries(config.facets ?? {});
55
- for (const [key, column] of facetEntries) {
56
- if (RESERVED.has(key)) throw new TypeError(`defineListQuery: facet key "${key}" is reserved`);
57
- if (!meta.columns[column]) throw new TypeError(`defineListQuery: unknown column "${table}.${column}"`);
58
- }
59
- if (!sortKeys.includes(config.defaultSort)) throw new TypeError(`defineListQuery: defaultSort "${config.defaultSort}" is not in sorts`);
60
- const facets = facetEntries.map(([key, column]) => {
61
- const columnMeta = meta.columns[column];
62
- return {
63
- key,
64
- column,
65
- nullable: columnMeta.nullable,
66
- ...columnMeta.enum ? { values: columnMeta.enum } : {}
67
- };
68
- });
69
- const defaults = {
70
- sort: config.defaultSort,
71
- page: 1,
72
- size: pageSize,
73
- facets: {}
74
- };
75
- function normalize(raw) {
76
- const issues = [];
77
- let q;
78
- if (raw.q !== void 0 && raw.q !== null) {
79
- if (typeof raw.q !== "string") issues.push({
80
- message: "Must be text",
81
- path: ["q"]
82
- });
83
- else if (raw.q.trim().length > maxSearch) issues.push({
84
- message: `At most ${String(maxSearch)} characters`,
85
- path: ["q"]
86
- });
87
- else if (raw.q.trim()) q = raw.q.trim();
88
- }
89
- let sort = config.defaultSort;
90
- if (raw.sort !== void 0 && raw.sort !== "") {
91
- if (typeof raw.sort === "string" && sortKeys.includes(raw.sort)) sort = raw.sort;
92
- else issues.push({
93
- message: `Must be one of: ${sortKeys.join(", ")}`,
94
- path: ["sort"]
95
- });
96
- }
97
- const page = raw.page === void 0 || raw.page === "" ? 1 : toInt(raw.page);
98
- if (page === void 0 || !Number.isInteger(page) || page < 1) issues.push({
99
- message: "Must be a whole number of at least 1",
100
- path: ["page"]
101
- });
102
- else if (cursor && page !== 1) issues.push({
103
- message: "This list pages with `after`, not `page`",
104
- path: ["page"]
105
- });
106
- let after;
107
- if (raw.after !== void 0 && raw.after !== "") {
108
- if (cursor && typeof raw.after === "string") after = raw.after;
109
- else issues.push({
110
- message: cursor ? "Must be text" : "This list pages with `page`, not `after`",
111
- path: ["after"]
112
- });
113
- }
114
- const size = raw.size === void 0 || raw.size === "" ? pageSize : toInt(raw.size);
115
- if (size === void 0 || !Number.isInteger(size) || size < 1 || size > maxPageSize) issues.push({
116
- message: `Must be a whole number from 1 to ${String(maxPageSize)}`,
117
- path: ["size"]
118
- });
119
- const facetValues = {};
120
- for (const facet of facets) {
121
- const values = raw.facets[facet.key];
122
- if (!values || values.length === 0) continue;
123
- for (const value of values) if (!(value === "__unset__" ? facet.nullable : !facet.values || facet.values.includes(value))) issues.push({
124
- message: value === "__unset__" ? "This filter cannot be empty" : `Must be one of: ${(facet.values ?? []).join(", ")}`,
125
- path: ["facets", facet.key]
126
- });
127
- facetValues[facet.key] = [...new Set(values)];
128
- }
129
- if (issues.length > 0) return {
130
- ok: false,
131
- issues
132
- };
133
- return {
134
- ok: true,
135
- value: {
136
- ...q ? { q } : {},
137
- sort,
138
- page: page ?? 1,
139
- ...after ? { after } : {},
140
- size: size ?? pageSize,
141
- facets: facetValues
142
- }
143
- };
144
- }
145
- function parse(input) {
146
- if (input === void 0 || input === null) return {
147
- ok: true,
148
- value: defaults
149
- };
150
- if (typeof input !== "object") return {
151
- ok: false,
152
- issues: [{ message: "Expected an object or URL parameters" }]
153
- };
154
- if (isSearchParams(input)) {
155
- const record = readRecord(input);
156
- const facetValues = {};
157
- for (const facet of facets) facetValues[facet.key] = all(record[facet.key]);
158
- return normalize({
159
- q: first(record["q"]),
160
- sort: first(record["sort"]),
161
- page: first(record["page"]),
162
- after: first(record["after"]),
163
- size: first(record["size"]),
164
- facets: facetValues
165
- });
166
- }
167
- const typed = input;
168
- const rawFacets = typed.facets ?? {};
169
- for (const [key, value] of Object.entries(rawFacets)) if (!Array.isArray(value) || value.some((entry) => typeof entry !== "string")) return {
170
- ok: false,
171
- issues: [{
172
- message: "Must be a list of values",
173
- path: ["facets", key]
174
- }]
175
- };
176
- return normalize({
177
- q: typed.q,
178
- sort: typed.sort,
179
- page: typed.page,
180
- after: typed.after,
181
- size: typed.size,
182
- facets: rawFacets
183
- });
184
- }
185
- function searchWhere(query) {
186
- if (!query.q || !config.search) return void 0;
187
- if (Array.isArray(config.search)) {
188
- const columns = config.search;
189
- if (columns.length === 0) return void 0;
190
- return { OR: columns.map((column) => ({ [column]: { contains: query.q } })) };
191
- }
192
- const fts = config.search;
193
- return { [fts.fts]: { search: fts.config ? {
194
- query: query.q,
195
- config: fts.config
196
- } : query.q } };
197
- }
198
- function facetWhere(facet, values) {
199
- if (!values || values.length === 0) return void 0;
200
- const unset = values.includes(UNSET);
201
- const set = values.filter((value) => value !== UNSET);
202
- if (unset && set.length === 0) return { [facet.column]: null };
203
- if (!unset) return { [facet.column]: { in: set } };
204
- return { OR: [{ [facet.column]: { in: set } }, { [facet.column]: null }] };
205
- }
206
- function and(parts) {
207
- const present = parts.filter((part) => part !== void 0);
208
- if (present.length === 0) return void 0;
209
- return present.length === 1 ? present[0] : { AND: present };
210
- }
211
- function where(query) {
212
- return and([searchWhere(query), ...facets.map((facet) => facetWhere(facet, query.facets[facet.key]))]);
213
- }
214
- function args(query) {
215
- const filter = where(query);
216
- const paging = cursor ? { after: query.after ?? null } : {
217
- page: query.page,
218
- count: config.count ?? "exact"
219
- };
220
- return {
221
- ...filter ? { where: filter } : {},
222
- orderBy: config.sorts[query.sort],
223
- size: query.size,
224
- ...paging
225
- };
226
- }
227
- /** Whether a group's value passes the facet's selected values. */
228
- function selects(value, selected) {
229
- if (!selected || selected.length === 0) return true;
230
- return value === null || value === void 0 ? selected.includes(UNSET) : selected.includes(String(value));
231
- }
232
- /**
233
- * Per facet, rows per value under every other facet's selection: the
234
- * usual faceted-search counts, where picking a value doesn't zero the
235
- * other values of the same facet.
236
- */
237
- function marginals(groups, query) {
238
- const out = {};
239
- for (const facet of facets) {
240
- const counts = {};
241
- for (const value of facet.values ?? []) counts[value] = 0;
242
- for (const group of groups) {
243
- if (!facets.every((other) => other === facet || selects(group[other.column], query.facets[other.key]))) continue;
244
- const raw = group[facet.column];
245
- const key = raw === null || raw === void 0 ? UNSET : String(raw);
246
- counts[key] = (counts[key] ?? 0) + Number(group["_count"] ?? 0);
247
- }
248
- out[facet.key] = counts;
249
- }
250
- return out;
251
- }
252
- const listParser = {
253
- parse: (value) => {
254
- const values = all(value);
255
- return values.length > 0 ? values : null;
256
- },
257
- serialize: (values) => values.join(",")
258
- };
259
- const intParser = {
260
- parse: (value) => /^\d+$/.test(value) ? Number(value) : null,
261
- serialize: String
262
- };
263
- const parsers = {
264
- q: {
265
- parse: (value) => value.trim() || null,
266
- serialize: (value) => value
267
- },
268
- sort: {
269
- parse: (value) => sortKeys.includes(value) ? value : null,
270
- serialize: (value) => value
271
- },
272
- page: intParser,
273
- after: {
274
- parse: (value) => value || null,
275
- serialize: (value) => value
276
- },
277
- size: intParser,
278
- ...Object.fromEntries(facets.map((facet) => [facet.key, listParser]))
279
- };
280
- const facetSchema = (facet) => ({
281
- type: "array",
282
- items: {
283
- type: "string",
284
- ...facet.values ? { enum: [...facet.values, ...facet.nullable ? [UNSET] : []] } : {}
285
- },
286
- uniqueItems: true
287
- });
288
- const searchDescription = config.search ? Array.isArray(config.search) ? `Case-insensitive search in ${config.search.join(", ")}.` : "Full-text search (web search syntax)." : void 0;
289
- const openapi = [
290
- ...searchDescription ? [{
291
- name: "q",
292
- in: "query",
293
- required: false,
294
- description: searchDescription,
295
- schema: {
296
- type: "string",
297
- maxLength: maxSearch
298
- }
299
- }] : [],
300
- {
301
- name: "sort",
302
- in: "query",
303
- required: false,
304
- description: `Ordering. Default \`${config.defaultSort}\`.`,
305
- schema: {
306
- type: "string",
307
- enum: sortKeys,
308
- default: config.defaultSort
309
- }
310
- },
311
- cursor ? {
312
- name: "after",
313
- in: "query",
314
- required: false,
315
- description: "`nextCursor` of the previous page. Leave it out for the first page.",
316
- schema: { type: "string" }
317
- } : {
318
- name: "page",
319
- in: "query",
320
- required: false,
321
- description: "1-based page number.",
322
- schema: {
323
- type: "integer",
324
- minimum: 1,
325
- default: 1
326
- }
327
- },
328
- {
329
- name: "size",
330
- in: "query",
331
- required: false,
332
- description: "Page size.",
333
- schema: {
334
- type: "integer",
335
- minimum: 1,
336
- maximum: maxPageSize,
337
- default: pageSize
338
- }
339
- },
340
- ...facets.map((facet) => ({
341
- name: facet.key,
342
- in: "query",
343
- required: false,
344
- description: `Filter on ${facet.column}. Comma-separated; any value matches.${facet.nullable ? ` \`${UNSET}\` matches empty.` : ""}`,
345
- schema: facetSchema(facet),
346
- style: "form",
347
- explode: false
348
- }))
349
- ];
350
- const jsonSchema = {
351
- type: "object",
352
- additionalProperties: false,
353
- properties: {
354
- ...searchDescription ? { q: {
355
- type: "string",
356
- maxLength: maxSearch,
357
- description: searchDescription
358
- } } : {},
359
- sort: {
360
- type: "string",
361
- enum: sortKeys,
362
- default: config.defaultSort
363
- },
364
- ...cursor ? { after: { type: "string" } } : { page: {
365
- type: "integer",
366
- minimum: 1,
367
- default: 1
368
- } },
369
- size: {
370
- type: "integer",
371
- minimum: 1,
372
- maximum: maxPageSize,
373
- default: pageSize
374
- },
375
- ...facets.length > 0 ? { facets: {
376
- type: "object",
377
- additionalProperties: false,
378
- properties: Object.fromEntries(facets.map((facet) => [facet.key, facetSchema(facet)]))
379
- } } : {}
380
- }
381
- };
382
- return {
383
- table,
384
- pagination: config.pagination ?? "offset",
385
- defaults,
386
- facets,
387
- parse,
388
- schema: { "~standard": {
389
- version: 1,
390
- vendor: "better-supabase",
391
- validate(value) {
392
- const result = parse(value);
393
- return result.ok ? { value: result.value } : { issues: result.issues };
394
- }
395
- } },
396
- toSearchParams(query) {
397
- const params = new URLSearchParams();
398
- if (query.q) params.set("q", query.q);
399
- if (query.sort && query.sort !== config.defaultSort) params.set("sort", query.sort);
400
- if (query.page && query.page !== 1) params.set("page", String(query.page));
401
- if (query.after) params.set("after", query.after);
402
- if (query.size !== void 0 && query.size > 0 && query.size !== pageSize) params.set("size", String(query.size));
403
- for (const facet of facets) {
404
- const values = query.facets?.[facet.key];
405
- if (values && values.length > 0) params.set(facet.key, values.join(","));
406
- }
407
- return params;
408
- },
409
- parsers,
410
- nuqs: (createParser) => Object.fromEntries(Object.entries(parsers).map(([key, spec]) => [key, createParser(spec)])),
411
- args,
412
- run(db, query, extra) {
413
- const base = args(query);
414
- const { where: extraWhere, count, select: _select, include: _include, ...options } = extra ?? {};
415
- const combined = and([extraWhere, base["where"]]);
416
- const repository = db[table];
417
- const page = repository.paginate({
418
- ...extra,
419
- ...base,
420
- ...cursor ? {} : { count: count ?? base["count"] },
421
- ...combined ? { where: combined } : {}
422
- });
423
- if (!config.facetCounts) return page;
424
- if (facets.length === 0) return page.map((data) => ({
425
- ...data,
426
- facetCounts: {}
427
- }));
428
- const facetFilter = and([extraWhere, searchWhere(query)]);
429
- const groups = repository.aggregate({
430
- ...options,
431
- ...facetFilter ? { where: facetFilter } : {},
432
- groupBy: [...new Set(facets.map((facet) => facet.column))],
433
- _count: true
434
- });
435
- return page.andThen((data) => groups.map((rows) => ({
436
- ...data,
437
- facetCounts: marginals(rows, query)
438
- })));
439
- },
440
- openapi,
441
- jsonSchema
442
- };
443
- }
444
- //#endregion
1
+ import { n as defineListQuery, t as UNSET } from "../list-query-gl808ac1.js";
445
2
  export { UNSET, defineListQuery };
@@ -1,6 +1,7 @@
1
- import { P as TableKey, k as Row, n as AnyFunctions, r as AnyModels } from "./types-Dnf_wRDz.js";
2
- import { I as CountMode, a as AsyncResult, w as ValidationIssue } from "./executor-BunPOO-k.js";
3
- import { C as FindExt, Ct as WhereInput, O as RepositoryOf, T as OffsetPageArgs, _ as CursorPage, dt as IncludeArg, gt as OrderByArg, t as BetterSupabase, v as CursorPageArgs, vt as Payload, w as OffsetPage, xt as SelectArg } from "./define-Bp_BZa5h.js";
1
+ import { E as ValidationIssue, t as AsyncResult } from "./result-D7y2fT87.js";
2
+ import { L as TableKey, M as Row, a as AnyModels, i as AnyFunctions } from "./types-6BdhkmZe.js";
3
+ import { l as CountMode } from "./executor-DvsBbNBS.js";
4
+ import { At as OrderByArg, Ct as IncludeArg, D as OffsetPage, It as SelectArg, M as RepositoryOf, Mt as Payload, O as OffsetPageArgs, t as BetterSupabase, v as CursorPage, w as FindExt, y as CursorPageArgs, zt as WhereInput } from "./define-CJJkkr1-.js";
4
5
  import { StandardSchemaV1 } from "@standard-schema/spec";
5
6
  //#region src/list/list-query.d.ts
6
7
  /** Facet value meaning "not set": filters with `is null`. */
@@ -11,11 +12,11 @@ type TextColumn<M extends AnyModels, T extends keyof M> = { [K in Column<M, T>]:
11
12
  type ListPagination = "offset" | "cursor";
12
13
  interface ListQueryConfig<M extends AnyModels, T extends keyof M, S extends string, F extends string, C extends boolean = boolean, P extends ListPagination = ListPagination> {
13
14
  /**
14
- * Also count rows per facet value, with one grouped aggregate that runs
15
- * next to the page: 2 calls, 1 wave. Needs PostgREST aggregates.
15
+ * Also count rows per facet value, with one grouped aggregate per facet
16
+ * that runs next to the page: one wave. Needs PostgREST aggregates.
16
17
  */
17
18
  readonly facetCounts?: C;
18
- /** How the page total is counted. Defaults to `'exact'`. */
19
+ /** How the page total is counted. Defaults to `'planned'`, the planner's estimate. */
19
20
  readonly count?: CountMode;
20
21
  /** Text columns matched case-insensitively (OR), or a full-text column. */
21
22
  readonly search?: readonly TextColumn<M, T>[] | {
@@ -39,6 +40,11 @@ interface ListQueryConfig<M extends AnyModels, T extends keyof M, S extends stri
39
40
  readonly maxPageSize?: number;
40
41
  /** Defaults to 200 characters. */
41
42
  readonly maxSearchLength?: number;
43
+ /**
44
+ * Most values counted per facet; a facet with more lists its key in
45
+ * `facetCountsTruncated`. Defaults to 100.
46
+ */
47
+ readonly facetLimit?: number;
42
48
  }
43
49
  interface ListQuery<S extends string, F extends string> {
44
50
  readonly q?: string;
@@ -93,11 +99,13 @@ interface FacetInfo {
93
99
  /** Rows per facet value, keyed by facet and then by value (`UNSET` for empty). */
94
100
  type FacetCounts<F extends string> = { readonly [K in F]: Readonly<Record<string, number>>; };
95
101
  /** A page of a list; with `facetCounts: true`, also the counts per facet value. */
96
- type ListPage<R, F extends string, C extends boolean, P extends ListPagination = "offset"> = ([P] extends ["cursor"] ? CursorPage<R> : OffsetPage<R>) & ([C] extends [true] ? {
102
+ type ListPage<R, F extends string, C extends boolean, P extends ListPagination = "offset"> = ([P] extends ["cursor"] ? CursorPage<R> : OffsetPage<R>) & ([C] extends [true] ? FacetCountFields<F> : [C] extends [false] ? unknown : Partial<FacetCountFields<F>>);
103
+ /** The facet fields of a page with `facetCounts: true`. */
104
+ interface FacetCountFields<F extends string> {
97
105
  readonly facetCounts: FacetCounts<F>;
98
- } : [C] extends [false] ? unknown : {
99
- readonly facetCounts?: FacetCounts<F>;
100
- });
106
+ /** Facets with more values than `facetLimit`, whose counts are cut. */
107
+ readonly facetCountsTruncated: readonly F[];
108
+ }
101
109
  interface ListDefinition<M extends AnyModels, T extends TableKey<M>, E, S extends string, F extends string, C extends boolean = false, P extends ListPagination = "offset"> {
102
110
  readonly table: T;
103
111
  readonly pagination: P;
@@ -115,7 +123,7 @@ interface ListDefinition<M extends AnyModels, T extends TableKey<M>, E, S extend
115
123
  args(query: ListQuery<S, F>): [P] extends ["cursor"] ? CursorPageArgs<M, T> : OffsetPageArgs<M, T>;
116
124
  /**
117
125
  * Runs the list against a table, merging your `select`, `include`, `where`
118
- * and `count`. One request, plus one for `facetCounts`, always one wave.
126
+ * and `count`. One request, plus one per facet for `facetCounts`, always one wave.
119
127
  */
120
128
  run<const A extends ListExtra<M, T> & FindExt<E, M, T>>(db: { readonly [K in T]: RepositoryOf<M, K, E>; }, query: ListQuery<S, F>, extra?: A): AsyncResult<ListPage<Payload<M, T, A>, F, C, P>>;
121
129
  /** OpenAPI 3.1 query parameters. */
@@ -153,4 +161,4 @@ type ListParsers<S extends string, F extends string> = {
153
161
  */
154
162
  declare function defineListQuery<M extends AnyModels, D, Fn extends AnyFunctions, E, T extends TableKey<M>, const S extends string, const F extends string = never, const C extends boolean = false, const P extends ListPagination = "offset">(betterSupabase: BetterSupabase<M, D, Fn, E>, table: T, config: ListQueryConfig<M, T, S, F, C, P>): ListDefinition<M, T, E, S, F, C, P>;
155
163
  //#endregion
156
- export { ListPage as a, ListParsers as c, ListQueryInput as d, ListSearchParams as f, defineListQuery as g, UNSET as h, ListExtra as i, ListQuery as l, ParserSpec as m, FacetInfo as n, ListPagination as o, OpenApiParameter as p, ListDefinition as r, ListParseResult as s, FacetCounts as t, ListQueryConfig as u };
164
+ export { defineListQuery as _, ListExtra as a, ListParseResult as c, ListQueryConfig as d, ListQueryInput as f, UNSET as g, ParserSpec as h, ListDefinition as i, ListParsers as l, OpenApiParameter as m, FacetCounts as n, ListPage as o, ListSearchParams as p, FacetInfo as r, ListPagination as s, FacetCountFields as t, ListQuery as u };