better-supabase 0.15.1 → 0.16.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 (272) hide show
  1. package/dist/{ai-schedules-D_Hz-ik5.d.ts → ai-schedules-BmkARmQ9.d.ts} +1 -1
  2. package/dist/{api-DxAPqMrE.d.ts → api-hHwieEfz.d.ts} +1 -1
  3. package/dist/{app-tables-CbCFSXLG.d.ts → app-tables-yMQ4ubyY.d.ts} +1 -1
  4. package/dist/astro/index.d.ts +4 -4
  5. package/dist/{auth-module-BEFESDC4.js → auth-module-BbmX-N4L.js} +12 -4
  6. package/dist/better-result/index.d.ts +2 -2
  7. package/dist/{bind-h5jre2K0.d.ts → bind-JGCPGUJh.d.ts} +4 -4
  8. package/dist/{block-env-BrfRvPrj.d.ts → block-env-y65GF_px.d.ts} +4 -4
  9. package/dist/blocks/access-requests/index.d.ts +1 -1
  10. package/dist/blocks/activities/index.d.ts +1 -1
  11. package/dist/blocks/agents/index.d.ts +1 -1
  12. package/dist/blocks/ai-cache/index.d.ts +1 -1
  13. package/dist/blocks/ai-chat/index.d.ts +4 -4
  14. package/dist/blocks/ai-files/index.d.ts +1 -1
  15. package/dist/blocks/ai-keys/index.d.ts +1 -1
  16. package/dist/blocks/ai-schedules/index.d.ts +2 -2
  17. package/dist/blocks/announcements/index.d.ts +4 -4
  18. package/dist/blocks/api-keys/index.d.ts +2 -2
  19. package/dist/blocks/approvals/index.d.ts +1 -1
  20. package/dist/blocks/assets/index.d.ts +1 -1
  21. package/dist/blocks/assignment/index.d.ts +1 -1
  22. package/dist/blocks/attachments/index.d.ts +2 -2
  23. package/dist/blocks/audit/index.d.ts +5 -5
  24. package/dist/blocks/automations/index.d.ts +3 -3
  25. package/dist/blocks/billable-time/index.d.ts +1 -1
  26. package/dist/blocks/billing/index.d.ts +3 -3
  27. package/dist/blocks/bookings/index.d.ts +2 -2
  28. package/dist/blocks/bulk/index.d.ts +1 -1
  29. package/dist/blocks/calendar/index.d.ts +2 -2
  30. package/dist/blocks/catalog/index.d.ts +1 -1
  31. package/dist/blocks/channels/index.d.ts +1 -1
  32. package/dist/blocks/collections/index.d.ts +1 -1
  33. package/dist/blocks/comments/index.d.ts +4 -4
  34. package/dist/blocks/compliance/index.d.ts +1 -1
  35. package/dist/blocks/connectors/index.d.ts +1 -1
  36. package/dist/blocks/contacts/index.d.ts +1 -1
  37. package/dist/blocks/content/index.d.ts +1 -1
  38. package/dist/blocks/contracts/index.d.ts +1 -1
  39. package/dist/blocks/courses/index.d.ts +1 -1
  40. package/dist/blocks/created-by/index.d.ts +1 -1
  41. package/dist/blocks/custom-fields/index.d.ts +1 -1
  42. package/dist/blocks/data-lifecycle/index.d.ts +1 -1
  43. package/dist/blocks/deals/index.d.ts +1 -1
  44. package/dist/blocks/dispatch/index.d.ts +1 -1
  45. package/dist/blocks/documents/index.d.ts +1 -1
  46. package/dist/blocks/domains/index.d.ts +1 -1
  47. package/dist/blocks/donations/index.d.ts +1 -1
  48. package/dist/blocks/drive/index.d.ts +1 -1
  49. package/dist/blocks/employees/index.d.ts +2 -2
  50. package/dist/blocks/enrichment/index.d.ts +1 -1
  51. package/dist/blocks/enrollments/index.d.ts +1 -1
  52. package/dist/blocks/entitlements/index.d.ts +3 -3
  53. package/dist/blocks/expenses/index.d.ts +1 -1
  54. package/dist/blocks/field-history/index.d.ts +1 -1
  55. package/dist/blocks/flags/index.d.ts +1 -1
  56. package/dist/blocks/forecasts/index.d.ts +1 -1
  57. package/dist/blocks/forms/index.d.ts +2 -2
  58. package/dist/blocks/goals/index.d.ts +1 -1
  59. package/dist/blocks/guests/index.d.ts +1 -1
  60. package/dist/blocks/hiring/index.d.ts +1 -1
  61. package/dist/blocks/identities/index.d.ts +1 -1
  62. package/dist/blocks/imports/index.d.ts +1 -1
  63. package/dist/blocks/inbox/index.d.ts +5 -5
  64. package/dist/blocks/incidents/index.d.ts +1 -1
  65. package/dist/blocks/index.d.ts +2 -2
  66. package/dist/blocks/inventory/index.d.ts +1 -1
  67. package/dist/blocks/invoices/index.d.ts +1 -1
  68. package/dist/blocks/knowledge/index.d.ts +1 -1
  69. package/dist/blocks/lead-scoring/index.d.ts +1 -1
  70. package/dist/blocks/leases/index.d.ts +1 -1
  71. package/dist/blocks/leave/index.d.ts +1 -1
  72. package/dist/blocks/ledger/index.d.ts +1 -1
  73. package/dist/blocks/mail-sync/index.d.ts +1 -1
  74. package/dist/blocks/memberships/index.d.ts +1 -1
  75. package/dist/blocks/memory/index.d.ts +1 -1
  76. package/dist/blocks/messaging/index.d.ts +4 -4
  77. package/dist/blocks/metrics/index.d.ts +1 -1
  78. package/dist/blocks/mfa/index.d.ts +2 -2
  79. package/dist/blocks/moderation/index.d.ts +1 -1
  80. package/dist/blocks/notifications/index.d.ts +4 -4
  81. package/dist/blocks/numbering/index.d.ts +1 -1
  82. package/dist/blocks/oauth-server/index.d.ts +1 -1
  83. package/dist/blocks/onboarding/index.d.ts +2 -2
  84. package/dist/blocks/orders/index.d.ts +2 -2
  85. package/dist/blocks/organizations/index.d.ts +2 -2
  86. package/dist/blocks/outbox/index.d.ts +1 -1
  87. package/dist/blocks/passes/index.d.ts +1 -1
  88. package/dist/blocks/permissions/index.d.ts +3 -3
  89. package/dist/blocks/pipelines/index.d.ts +1 -1
  90. package/dist/blocks/posts/index.d.ts +1 -1
  91. package/dist/blocks/profiles/index.d.ts +1 -1
  92. package/dist/blocks/promotions/index.d.ts +1 -1
  93. package/dist/blocks/push/index.d.ts +2 -2
  94. package/dist/blocks/queue/index.d.ts +29 -2
  95. package/dist/blocks/queue/index.js +1 -1
  96. package/dist/blocks/quotes/index.d.ts +1 -1
  97. package/dist/blocks/rank/index.d.ts +1 -1
  98. package/dist/blocks/reactions/index.d.ts +4 -4
  99. package/dist/blocks/relations/index.d.ts +1 -1
  100. package/dist/blocks/reminders/index.d.ts +1 -1
  101. package/dist/blocks/reviews/index.d.ts +1 -1
  102. package/dist/blocks/saved-views/index.d.ts +3 -3
  103. package/dist/blocks/scores/index.d.ts +1 -1
  104. package/dist/blocks/search/index.d.ts +3 -3
  105. package/dist/blocks/security-events/index.d.ts +1 -1
  106. package/dist/blocks/segments/index.d.ts +1 -1
  107. package/dist/blocks/sequences/index.d.ts +1 -1
  108. package/dist/blocks/service-accounts/index.d.ts +1 -1
  109. package/dist/blocks/sessions/index.d.ts +2 -2
  110. package/dist/blocks/settings/index.d.ts +2 -2
  111. package/dist/blocks/share-links/index.d.ts +1 -1
  112. package/dist/blocks/shipments/index.d.ts +1 -1
  113. package/dist/blocks/signatures/index.d.ts +1 -1
  114. package/dist/blocks/signing-keys/index.d.ts +1 -1
  115. package/dist/blocks/sla/index.d.ts +1 -1
  116. package/dist/blocks/sso/index.d.ts +1 -1
  117. package/dist/blocks/state-machine/index.d.ts +1 -1
  118. package/dist/blocks/subjects/index.d.ts +2 -2
  119. package/dist/blocks/tags/index.d.ts +2 -2
  120. package/dist/blocks/tasks/index.d.ts +2 -2
  121. package/dist/blocks/teams/index.d.ts +1 -1
  122. package/dist/blocks/templates/index.d.ts +1 -1
  123. package/dist/blocks/time-tracking/index.d.ts +1 -1
  124. package/dist/blocks/timeline/index.d.ts +3 -3
  125. package/dist/blocks/trash/index.d.ts +1 -1
  126. package/dist/blocks/undo/index.d.ts +2 -2
  127. package/dist/blocks/updated-at/index.d.ts +1 -1
  128. package/dist/blocks/usage/index.d.ts +2 -2
  129. package/dist/blocks/vercel-marketplace/index.d.ts +1 -1
  130. package/dist/blocks/versions/index.d.ts +1 -1
  131. package/dist/blocks/waitlist/index.d.ts +1 -1
  132. package/dist/blocks/webhooks/index.d.ts +2 -2
  133. package/dist/blocks/webhooks/index.js +1 -1
  134. package/dist/blocks/workflow-editor/index.d.ts +4 -4
  135. package/dist/blocks/workflows/index.d.ts +4 -4
  136. package/dist/{bucket-CiNi8sIw.d.ts → bucket-vc-QRrva.d.ts} +40 -1
  137. package/dist/cli/add-Bfb_ISrO.js +1 -0
  138. package/dist/cli/{add-DNOL9PDu.js → add-D7TkPdco.js} +9 -9
  139. package/dist/cli/{add-C04vkBk9.js → add-I8OW-qJH.js} +2 -2
  140. package/dist/cli/{backfill-VFzf-TJP.js → backfill-DIz5DnlQ.js} +1 -1
  141. package/dist/cli/bin.js +1 -1
  142. package/dist/cli/{blocks-Bn7WUca5.js → blocks-Bp5RPoft.js} +1 -1
  143. package/dist/cli/{blocks-Cb7mILFU.js → blocks-xk-SE8gS.js} +1 -1
  144. package/dist/cli/{cache-DkplpIGe.js → cache-AznIssjI.js} +1 -1
  145. package/dist/cli/{codemod-BbaE5dL_.js → codemod-Aewxza6i.js} +1 -1
  146. package/dist/cli/{content-mapper-Cdx6arxu.js → content-mapper-DCrz6OIv.js} +2 -2
  147. package/dist/cli/{doctor-C-VO-QQ2.js → doctor-DkOSLPEQ.js} +13 -13
  148. package/dist/cli/{gen-yRHOHW1b.js → gen-CFkYUnWq.js} +10 -10
  149. package/dist/cli/index.d.ts +1 -1
  150. package/dist/cli/index.js +6 -6
  151. package/dist/cli/{init-BOw0SX65.js → init-CHj9ad4S.js} +5 -5
  152. package/dist/cli/{live-Lmg-hYyO.js → live-DGdLR41j.js} +2 -2
  153. package/dist/cli/{mcp-DQ1zR2eA.js → mcp-BZno503V.js} +2 -2
  154. package/dist/cli/{metadata-CZaxkv21.js → metadata-BfgHMe4q.js} +3 -3
  155. package/dist/cli/{migration-safety-BbhLu2fo.js → migration-safety-BnnXPAro.js} +1 -1
  156. package/dist/cli/{module-migration-DOn6EmNz.js → module-migration-O_IxewFs.js} +1 -1
  157. package/dist/cli/{print-D_xf8PPj.js → print-DosQIFSy.js} +1 -1
  158. package/dist/cli/{remove-BY_TOTRj.js → remove-DK2G_KHm.js} +5 -5
  159. package/dist/cli/{render-lJmHr0y9.js → render-5y5a1QZr.js} +3 -3
  160. package/dist/cli/{run-BJ6IMs_H.js → run-Bs4OKdDI.js} +7 -7
  161. package/dist/cli/{run-DkB0fhc9.js → run-MRET30vh.js} +20 -20
  162. package/dist/cli/{shared-Bh-6IqJS.js → shared-BLqbvY2x.js} +1 -1
  163. package/dist/cli/{snapshot-Bzcigm7T.js → snapshot-uTUlEzY2.js} +2 -2
  164. package/dist/cli/{source-WoLdcQzN.js → source-D2gJHKwC.js} +1 -1
  165. package/dist/cli/{spec-CZMiLhv_.js → spec-Cm2einTO.js} +2 -2
  166. package/dist/cli/{spec-BF_dpwzW.js → spec-DUjOtciN.js} +1 -1
  167. package/dist/cli/{sql-layout-rFP0oq1N.js → sql-layout-lUWenjJw.js} +2 -2
  168. package/dist/cli/{sync-mANmYYoL.js → sync-CZMRB3aU.js} +2 -2
  169. package/dist/cli/{upgrade-B0Q9wMs-.js → upgrade-BFEIMC7U.js} +3 -3
  170. package/dist/cli/{upgrade-BrNLt92u.js → upgrade-fVsJniXm.js} +2 -2
  171. package/dist/cli/{version-CyavsyGA.js → version-B2Dr6VmJ.js} +1 -1
  172. package/dist/client/index.d.ts +5 -5
  173. package/dist/client/index.js +1 -1
  174. package/dist/client/native/index.d.ts +5 -5
  175. package/dist/client/native/index.js +1 -1
  176. package/dist/{client-BAEbEA7t.js → client-C_mlji5R.js} +6 -5
  177. package/dist/{composite-BZYXlVBN.d.ts → composite-CfYyU3vs.d.ts} +4 -3
  178. package/dist/config/index.d.ts +1 -1
  179. package/dist/{context-TGX2eDS5.d.ts → context-8kb8m5uO.d.ts} +1 -1
  180. package/dist/{controller-DyPPMFSw.d.ts → controller-BW-5Opig.d.ts} +1 -1
  181. package/dist/{conversion-O-kyhXcC.d.ts → conversion-3iv2r7YC.d.ts} +1 -1
  182. package/dist/create/index.d.ts +2 -2
  183. package/dist/create/index.js +1 -1
  184. package/dist/{define-DFBnQyYg.d.ts → define-C5AcEkEJ.d.ts} +1 -1
  185. package/dist/{define-block-DvvcM54N.d.ts → define-block-C1RHXz7L.d.ts} +2 -2
  186. package/dist/edge/index.d.ts +5 -5
  187. package/dist/{entitlements-BnhDBxLW.d.ts → entitlements-sO977DO-.d.ts} +1 -1
  188. package/dist/{executor-CVIn6JHa.d.ts → executor-BcNWcD-4.d.ts} +2 -2
  189. package/dist/expo/index.d.ts +2 -2
  190. package/dist/{field-errors-DYtg1mwv.d.ts → field-errors-Dt86dCKk.d.ts} +12 -12
  191. package/dist/{framework-h5lP_5yj.d.ts → framework-BGdZVyPL.d.ts} +3 -3
  192. package/dist/hono/index.d.ts +4 -4
  193. package/dist/{index-BAHGLvGD.d.ts → index-CENWq3zb.d.ts} +1 -1
  194. package/dist/{index-Do2ChN_y.d.ts → index-CQhPHHDF.d.ts} +20 -2
  195. package/dist/{index-DN9mfmhA.d.ts → index-CTu-3fJB.d.ts} +51 -3
  196. package/dist/{index-BfK6olKm.d.ts → index-Cc4mIQS8.d.ts} +2 -2
  197. package/dist/{index-BfkltrGJ.d.ts → index-CcAmFNVi.d.ts} +2 -2
  198. package/dist/{index-Ab4UeEn_.d.ts → index-Craf712U.d.ts} +44 -12
  199. package/dist/{index-B4gcStOz.d.ts → index-DZKCc2WM.d.ts} +3 -3
  200. package/dist/index.d.ts +2 -2
  201. package/dist/list/index.d.ts +1 -1
  202. package/dist/{list-query-BDVutLFr.d.ts → list-query-DYhgRTd5.d.ts} +1 -1
  203. package/dist/mapper/bin.js +5 -5
  204. package/dist/mcp/index.d.ts +3 -3
  205. package/dist/mcp/sdk/index.d.ts +2 -2
  206. package/dist/next/client/index.d.ts +81 -1
  207. package/dist/next/client/index.js +178 -2
  208. package/dist/next/index.d.ts +15 -14
  209. package/dist/orpc/index.d.ts +4 -4
  210. package/dist/otel/index.js +4 -4
  211. package/dist/{ports-DOhtuw3c.js → ports-CaVRXjxq.js} +1 -1
  212. package/dist/{ports-CpdiQv1D.d.ts → ports-mObLgH1z.d.ts} +1 -1
  213. package/dist/powersync/index.d.ts +2 -2
  214. package/dist/preset/index.d.ts +3 -3
  215. package/dist/{push-token-B3m3pWAv.d.ts → push-token-BSSvsWXZ.d.ts} +1 -1
  216. package/dist/query/index.d.ts +1 -1
  217. package/dist/{rate-limit-o44SYkVY.js → rate-limit-Dt9vAY4E.js} +53 -0
  218. package/dist/react/index.d.ts +6 -6
  219. package/dist/react/index.js +3 -3
  220. package/dist/react/native/index.d.ts +1 -1
  221. package/dist/react/native/index.js +1 -1
  222. package/dist/react/server.d.ts +12 -7
  223. package/dist/react/server.js +8 -3
  224. package/dist/react/session.d.ts +5 -0
  225. package/dist/react/session.js +9 -1
  226. package/dist/{react-BuDYI62C.js → react-CZUZYn9E.js} +41 -4
  227. package/dist/react-router/index.d.ts +3 -3
  228. package/dist/realtime/index.d.ts +5 -5
  229. package/dist/realtime/index.js +2 -1
  230. package/dist/{record-form-DB_5Ue_B.d.ts → record-form-D9ILuVtA.d.ts} +1 -1
  231. package/dist/records/index.d.ts +7 -7
  232. package/dist/relay-gKvKJ3xf.js +208 -0
  233. package/dist/{resource-execute-CzHuDsil.d.ts → resource-execute-Cpnob1Vj.d.ts} +1 -1
  234. package/dist/{resource-types-DnKiH4G2.d.ts → resource-types-pMeLs68X.d.ts} +1 -1
  235. package/dist/{resources-B9cQxhjw.d.ts → resources-7iq2-5_A.d.ts} +1 -1
  236. package/dist/server/index.d.ts +147 -9
  237. package/dist/server/index.js +396 -1
  238. package/dist/{server-types-7QPzW2bF.d.ts → server-types-CK8mUIUT.d.ts} +5 -354
  239. package/dist/{session-CfBCJGgc.d.ts → session-DWmFv3vB.d.ts} +2 -1
  240. package/dist/session-status-qQLm7jzh.d.ts +82 -0
  241. package/dist/{sign-in-BsIaNx2C.js → sign-in-CmPK1AgM.js} +20 -10
  242. package/dist/solid/index.d.ts +7 -7
  243. package/dist/solid/index.js +1 -1
  244. package/dist/solid-start/index.d.ts +3 -3
  245. package/dist/spec/index.d.ts +1 -1
  246. package/dist/sql/index.d.ts +3 -3
  247. package/dist/sql/index.js +1 -1
  248. package/dist/{sql-OLVW4t08.js → sql-Dl3Alk43.js} +127 -0
  249. package/dist/sqlite/index.d.ts +1 -1
  250. package/dist/ssr/index.d.ts +1 -1
  251. package/dist/storage/index.d.ts +3 -3
  252. package/dist/storage/index.js +54 -1
  253. package/dist/support-B4ZBVxt3.d.ts +357 -0
  254. package/dist/svelte/index.d.ts +7 -7
  255. package/dist/svelte/index.js +1 -1
  256. package/dist/sveltekit/index.d.ts +4 -4
  257. package/dist/{tags-BjHflcHF.d.ts → tags-qvVk79pp.d.ts} +1 -1
  258. package/dist/tanstack-db/index.d.ts +1 -1
  259. package/dist/tanstack-start/index.d.ts +3 -3
  260. package/dist/{tenant-DzFsg0Pc.d.ts → tenant-DOKIJI62.d.ts} +1 -1
  261. package/dist/testing/index.d.ts +8 -7
  262. package/dist/{timeline-WrFMgd3U.d.ts → timeline-CvTuXYvn.d.ts} +3 -3
  263. package/dist/{topic-DNFEFGKI.d.ts → topic-CZXHhZye.d.ts} +2 -2
  264. package/dist/{verify-CMou8dWZ.d.ts → verify-CjvNLY7N.d.ts} +1 -1
  265. package/dist/vue/index.d.ts +7 -7
  266. package/dist/vue/index.js +1 -1
  267. package/dist/{watch-topic-Bo9S2R4P.d.ts → watch-topic-BAxoPKZx.d.ts} +1 -1
  268. package/dist/yjs/index.d.ts +1 -1
  269. package/package.json +1 -1
  270. package/skills/better-supabase-api/SKILL.md +3 -1
  271. package/skills/better-supabase-auth/SKILL.md +7 -0
  272. package/dist/cli/add-CUH0rORo.js +0 -1
@@ -1,4 +1,4 @@
1
- import { s as PushTokenPort } from "./ports-CpdiQv1D.js";
1
+ import { s as PushTokenPort } from "./ports-mObLgH1z.js";
2
2
  //#region src/client/native/push-token.d.ts
3
3
  /** The part of `expo-notifications` the push token port uses. */
4
4
  interface ExpoNotificationsLike {
@@ -1,4 +1,4 @@
1
1
  import { t as escapeLike } from "../escape-like-PReMbEEU.js";
2
2
  import { n as invalidateTables, t as BetterQueryMeta } from "../invalidate-DMp4eqfF.js";
3
- import { $ as invalidateOnBlockEvents, G as BLOCK_READ_PREFIXES, J as BlockInvalidation, K as BlockClientQueries, Q as blockQueries, X as BlockQueries, Y as BlockMethodQuery, Z as BlockVariablesOf, a as RecordBindingQueries, at as InfiniteOptionsOf, c as RecordWriteMutations, ct as QueryHelpers, dt as TableQueries, et as queryEngine, ft as createQueries, i as optimistic, it as InfiniteExtras, l as invalidateOnRecordEvents, lt as QueryKeyOf, mt as queryCache, n as OptimisticSnapshot, nt as clearOnUserChange, o as RecordQueries, ot as MutationOptionsOf, pt as invalidateOnMutation, q as BlockClients, r as OptimisticTarget, rt as BetterQueries, s as RecordQueriesOptions, st as QueriesOptions, t as OptimisticHandlers, tt as UserChangeSource, u as recordQueries, ut as QueryOptionsOf } from "../index-BfkltrGJ.js";
3
+ import { $ as invalidateOnBlockEvents, G as BLOCK_READ_PREFIXES, J as BlockInvalidation, K as BlockClientQueries, Q as blockQueries, X as BlockQueries, Y as BlockMethodQuery, Z as BlockVariablesOf, a as RecordBindingQueries, at as InfiniteOptionsOf, c as RecordWriteMutations, ct as QueryHelpers, dt as TableQueries, et as queryEngine, ft as createQueries, i as optimistic, it as InfiniteExtras, l as invalidateOnRecordEvents, lt as QueryKeyOf, mt as queryCache, n as OptimisticSnapshot, nt as clearOnUserChange, o as RecordQueries, ot as MutationOptionsOf, pt as invalidateOnMutation, q as BlockClients, r as OptimisticTarget, rt as BetterQueries, s as RecordQueriesOptions, st as QueriesOptions, t as OptimisticHandlers, tt as UserChangeSource, u as recordQueries, ut as QueryOptionsOf } from "../index-CcAmFNVi.js";
4
4
  export { BLOCK_READ_PREFIXES, type BetterQueries, type BetterQueryMeta, type BlockClientQueries, type BlockClients, type BlockInvalidation, type BlockMethodQuery, type BlockQueries, type BlockVariablesOf, type InfiniteExtras, type InfiniteOptionsOf, type MutationOptionsOf, type OptimisticHandlers, type OptimisticSnapshot, type OptimisticTarget, type QueriesOptions, type QueryHelpers, type QueryKeyOf, type QueryOptionsOf, type RecordBindingQueries, type RecordQueries, type RecordQueriesOptions, type RecordWriteMutations, type TableQueries, type UserChangeSource, blockQueries, clearOnUserChange, createQueries, escapeLike, invalidateOnBlockEvents, invalidateOnMutation, invalidateOnRecordEvents, invalidateTables, optimistic, queryCache, queryEngine, recordQueries };
@@ -271,12 +271,29 @@ function createRateLimit(options) {
271
271
  applyTemporal(options);
272
272
  const call = options.transport === void 0 ? blockCall(sqlTransport(options.sql), void 0, options.mappers) : blockCall(options.transport, options.schema, options.mappers);
273
273
  const hit = options.transport === void 0 ? overSql(options.sql) : overTransport(call);
274
+ const hitAll = options.transport === void 0 ? (hits) => run(async () => decodeAll(await checkRateLimits(options.sql, hits), hits)) : (hits) => call("check_rate_limits", { hits }, (value) => decodeAll(value, hits));
274
275
  const hooked = withBlockHooks({
275
276
  purge: (purgeOptions = {}) => call("purge_rate_limits", { batch: purgeOptions.batch }, (value) => Number(value ?? 0)),
276
277
  purgeJob: (jobOptions) => async () => hooked.purge(jobOptions).orThrow(),
277
278
  check: (scope, key, rule) => {
278
279
  if (rule !== void 0 && (!Number.isInteger(rule.max) || rule.max < 1)) return AsyncResult.err(dbError("invalid_input", "A rate limit's max must be a positive integer"));
279
280
  return hit(scope, key, rule?.max ?? null, rule === void 0 ? null : seconds(rule.period));
281
+ },
282
+ checkAll: (hits) => {
283
+ if (hits.length === 0) return AsyncResult.err(dbError("invalid_input", "checkAll needs at least one limit"));
284
+ const rows = [];
285
+ for (const hit of hits) {
286
+ if (hit.rule !== void 0 && (!Number.isInteger(hit.rule.max) || hit.rule.max < 1)) return AsyncResult.err(dbError("invalid_input", "A rate limit's max must be a positive integer"));
287
+ rows.push({
288
+ scope: hit.scope,
289
+ key: hit.key,
290
+ ...hit.rule === void 0 ? {} : {
291
+ max_requests: hit.rule.max,
292
+ period: seconds(hit.rule.period)
293
+ }
294
+ });
295
+ }
296
+ return hitAll(rows);
280
297
  }
281
298
  }, options.hooks, {
282
299
  block: "rate-limit",
@@ -284,6 +301,42 @@ function createRateLimit(options) {
284
301
  });
285
302
  return hooked;
286
303
  }
304
+ const numberOr = (value, fallback) => {
305
+ const parsed = Number(value ?? fallback);
306
+ return Number.isFinite(parsed) ? parsed : fallback;
307
+ };
308
+ function decodeOne(value) {
309
+ const row = isRecord(value) ? value : {};
310
+ return {
311
+ allowed: row["allowed"] === true,
312
+ remaining: numberOr(row["remaining"], 0),
313
+ retryAfter: numberOr(row["retry_after"], 0)
314
+ };
315
+ }
316
+ /** Reads `check_rate_limits`' answer; a missing one is a refusal. */
317
+ function decodeAll(value, hits) {
318
+ const row = isRecord(value) ? value : {};
319
+ const results = Array.isArray(row["results"]) ? row["results"].map(decodeOne) : [];
320
+ const allowed = row["allowed"] === true && results.length === hits.length;
321
+ const index = typeof row["blocked"] === "number" ? row["blocked"] : allowed ? -1 : 0;
322
+ const blocked = hits[index];
323
+ return {
324
+ allowed,
325
+ remaining: results.length === 0 ? 0 : Math.min(...results.map((each) => each.remaining)),
326
+ retryAfter: allowed ? 0 : numberOr(row["retry_after"], 0),
327
+ ...allowed || blocked === void 0 ? {} : { blocked: {
328
+ index,
329
+ scope: blocked.scope,
330
+ key: blocked.key
331
+ } },
332
+ results
333
+ };
334
+ }
335
+ /** One `check_rate_limits` call over SQL. */
336
+ async function checkRateLimits(sql, hits) {
337
+ const [row] = await sql.queryRaw("select better_supabase.check_rate_limits($1::jsonb) as result", [JSON.stringify(hits)]);
338
+ return row?.result;
339
+ }
287
340
  const overTransport = (call) => (scope, key, max, period) => call("check_rate_limit", {
288
341
  scope,
289
342
  key,
@@ -1,13 +1,13 @@
1
1
  import { t as escapeLike } from "../escape-like-PReMbEEU.js";
2
2
  import { n as Impersonator } from "../impersonation-YTa9dZUv.js";
3
3
  import { i as DataEntry, m as RejectedChange, n as DataEngine, o as DataSyncState } from "../data-engine-BWoz9lED.js";
4
- import { t as tenantOf } from "../tenant-DzFsg0Pc.js";
4
+ import { t as tenantOf } from "../tenant-DOKIJI62.js";
5
5
  import { t as AuthSession } from "../view-DyFdMCqg.js";
6
- import { r as LiveCountSeed } from "../index-DN9mfmhA.js";
7
- import { r as MembershipClaim } from "../entitlements-BnhDBxLW.js";
8
- import { D as ProfileOf, O as UseActionOptions, S as LiveCountHookOptions, _ as ActionResultOf, b as ClaimsOf, c as DataWrites, d as BlockMutationState, f as BlockQueryActions, g as ActionInputOf, h as BlockRefetchOn, l as BlockEventSource, m as BlockQueryState, o as DataSource, p as BlockQueryOptions, s as DataState, t as fieldErrorsOf, u as BlockMutationActions, w as LiveQueryHookOptions, x as ClientLike, y as BroadcastOptions } from "../field-errors-DYtg1mwv.js";
6
+ import { r as LiveCountSeed } from "../index-CTu-3fJB.js";
7
+ import { r as MembershipClaim } from "../entitlements-sO977DO-.js";
8
+ import { D as ProfileOf, O as UseActionOptions, S as LiveCountHookOptions, _ as ActionResultOf, b as ClaimsOf, c as DataWrites, d as BlockMutationState, f as BlockQueryActions, g as ActionInputOf, h as BlockRefetchOn, l as BlockEventSource, m as BlockQueryState, o as DataSource, p as BlockQueryOptions, s as DataState, t as fieldErrorsOf, u as BlockMutationActions, w as LiveQueryHookOptions, x as ClientLike, y as BroadcastOptions } from "../field-errors-Dt86dCKk.js";
9
9
  import { n as supportOf, t as SupportView } from "../support-view-BYOgwXsJ.js";
10
- import { $ as useActionForm, A as useBlockEvent, B as useRecordListState, C as DataHooks, D as useBlockTenant, E as useBlockEnv, F as useRecordForm, G as RecordProviderProps, H as RecordContextValue, I as RecordListQueryStates, J as createRecordProvider, K as RecordState, L as RecordListState, M as useBlockQuery, N as RecordFormState, O as useController, P as UseRecordFormOptions, Q as useAction, R as RecordListUrl, S as useSyncStatus, T as defineDataHooks, U as RecordInitial, V as RecordActionsOf, W as RecordProviderKit, X as ActionHandle, Y as ActionForm, Z as UseActionFormOptions, _ as PresenceHookOptions, a as Upload, at as useAuth, b as Conflicts, c as UseImageOptions, ct as useLiveQuery, d as useSignedUrl, et as BetterHooks, f as useUpload, g as Presence, h as useDebouncedSearch, i as StorageImage, it as createHooks, j as useBlockMutation, k as useLatest, l as UseUploadOptions, lt as useSupabase, m as DebouncedSearchOptions, n as SignedUrl, nt as BetterSupabaseProviderProps, o as UploadStatus, ot as useBroadcast, p as DebouncedSearch, q as RecordWriteHandlers, r as SignedUrlSource, rt as LiveCount, s as UploadTarget, st as useLiveCount, t as ImageSource, tt as BetterSupabaseProvider, u as useImage, v as PresenceTopic, w as DataView, x as useConflicts, y as usePresence, z as RecordListUrlState } from "../index-Ab4UeEn_.js";
10
+ import { $ as UseActionFormOptions, A as useController, B as RecordListUrl, C as useConflicts, D as defineDataHooks, E as DataView, F as RecordFormState, G as RecordInitial, H as useRecordListState, I as UseRecordFormOptions, J as RecordState, K as RecordProviderKit, L as useRecordForm, M as useBlockEvent, N as useBlockMutation, O as useBlockEnv, P as useBlockQuery, Q as ActionHandle, R as RecordListQueryStates, S as Conflicts, T as DataHooks, U as RecordActionsOf, V as RecordListUrlState, W as RecordContextValue, X as createRecordProvider, Y as RecordWriteHandlers, Z as ActionForm, _ as useRealtimeRelay, a as Upload, at as LiveCount, b as PresenceTopic, c as UseImageOptions, ct as useBroadcast, d as useSignedUrl, dt as useSupabase, et as useAction, f as useUpload, g as UseRealtimeRelayOptions, h as useDebouncedSearch, i as StorageImage, it as BetterSupabaseProviderProps, j as useLatest, k as useBlockTenant, l as UseUploadOptions, lt as useLiveCount, m as DebouncedSearchOptions, n as SignedUrl, nt as BetterHooks, o as UploadStatus, ot as createHooks, p as DebouncedSearch, q as RecordProviderProps, r as SignedUrlSource, rt as BetterSupabaseProvider, s as UploadTarget, st as useAuth, t as ImageSource, tt as useActionForm, u as useImage, ut as useLiveQuery, v as Presence, w as useSyncStatus, x as usePresence, y as PresenceHookOptions, z as RecordListState } from "../index-Craf712U.js";
11
11
  import { SessionProvider, SessionProviderProps, useSession, useSupportSession } from "./session.js";
12
12
  import { a as useSignIn, i as SignOut, n as PendingState, o as useSignOut, r as SignIn, t as AuthHookOptions } from "../sign-in-D54FLMQy.js";
13
- export { type ActionForm, type ActionHandle, type ActionInputOf, type ActionResultOf, type AuthHookOptions, type AuthSession, type BetterHooks, BetterSupabaseProvider, type BetterSupabaseProviderProps, type BlockEventSource, type BlockMutationActions, type BlockMutationState, type BlockQueryActions, type BlockQueryOptions, type BlockQueryState, type BlockRefetchOn, type BroadcastOptions, type ClaimsOf, type ClientLike, type Conflicts, type DataEngine, type DataEntry, type DataHooks, type DataSource, type DataState, type DataSyncState, type DataView, type DataWrites, type DebouncedSearch, type DebouncedSearchOptions, type ImageSource, type Impersonator, type LiveCount, type LiveCountHookOptions, type LiveCountSeed, type LiveQueryHookOptions, type MembershipClaim, type PendingState, type Presence, type PresenceHookOptions, type PresenceTopic, type ProfileOf, type RecordActionsOf, type RecordContextValue, type RecordFormState, type RecordInitial, type RecordListQueryStates, type RecordListState, type RecordListUrl, type RecordListUrlState, type RecordProviderKit, type RecordProviderProps, type RecordState, type RecordWriteHandlers, type RejectedChange, SessionProvider, type SessionProviderProps, type SignIn, type SignOut, type SignedUrl, type SignedUrlSource, type StorageImage, type SupportView, type Upload, type UploadStatus, type UploadTarget, type UseActionFormOptions, type UseActionOptions, type UseImageOptions, type UseRecordFormOptions, type UseUploadOptions, createHooks, createRecordProvider, defineDataHooks, escapeLike, fieldErrorsOf, supportOf, tenantOf, useAction, useActionForm, useAuth, useBlockEnv, useBlockEvent, useBlockMutation, useBlockQuery, useBlockTenant, useBroadcast, useConflicts, useController, useDebouncedSearch, useImage, useLatest, useLiveCount, useLiveQuery, usePresence, useRecordForm, useRecordListState, useSession, useSignIn, useSignOut, useSignedUrl, useSupabase, useSupportSession, useSyncStatus, useUpload };
13
+ export { type ActionForm, type ActionHandle, type ActionInputOf, type ActionResultOf, type AuthHookOptions, type AuthSession, type BetterHooks, BetterSupabaseProvider, type BetterSupabaseProviderProps, type BlockEventSource, type BlockMutationActions, type BlockMutationState, type BlockQueryActions, type BlockQueryOptions, type BlockQueryState, type BlockRefetchOn, type BroadcastOptions, type ClaimsOf, type ClientLike, type Conflicts, type DataEngine, type DataEntry, type DataHooks, type DataSource, type DataState, type DataSyncState, type DataView, type DataWrites, type DebouncedSearch, type DebouncedSearchOptions, type ImageSource, type Impersonator, type LiveCount, type LiveCountHookOptions, type LiveCountSeed, type LiveQueryHookOptions, type MembershipClaim, type PendingState, type Presence, type PresenceHookOptions, type PresenceTopic, type ProfileOf, type RecordActionsOf, type RecordContextValue, type RecordFormState, type RecordInitial, type RecordListQueryStates, type RecordListState, type RecordListUrl, type RecordListUrlState, type RecordProviderKit, type RecordProviderProps, type RecordState, type RecordWriteHandlers, type RejectedChange, SessionProvider, type SessionProviderProps, type SignIn, type SignOut, type SignedUrl, type SignedUrlSource, type StorageImage, type SupportView, type Upload, type UploadStatus, type UploadTarget, type UseActionFormOptions, type UseActionOptions, type UseImageOptions, type UseRealtimeRelayOptions, type UseRecordFormOptions, type UseUploadOptions, createHooks, createRecordProvider, defineDataHooks, escapeLike, fieldErrorsOf, supportOf, tenantOf, useAction, useActionForm, useAuth, useBlockEnv, useBlockEvent, useBlockMutation, useBlockQuery, useBlockTenant, useBroadcast, useConflicts, useController, useDebouncedSearch, useImage, useLatest, useLiveCount, useLiveQuery, usePresence, useRealtimeRelay, useRecordForm, useRecordListState, useSession, useSignIn, useSignOut, useSignedUrl, useSupabase, useSupportSession, useSyncStatus, useUpload };
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  import { t as escapeLike } from "../escape-like-DHfx6jRr.js";
3
- import { a as createHooks, d as useSupabase, i as BetterSupabaseProvider, l as useLiveCount, n as useSignIn, o as useAuth, r as useSignOut, s as useBroadcast, u as useLiveQuery } from "../sign-in-BsIaNx2C.js";
3
+ import { a as createHooks, d as useSupabase, i as BetterSupabaseProvider, l as useLiveCount, n as useSignIn, o as useAuth, r as useSignOut, s as useBroadcast, u as useLiveQuery } from "../sign-in-CmPK1AgM.js";
4
4
  import { t as supportOf } from "../support-view-g4YLBeqX.js";
5
5
  import { SessionProvider, useSession, useSupportSession } from "./session.js";
6
6
  import { d as fieldErrorsOf } from "../data-hooks-tgF1Ct0F.js";
7
- import { _ as useController, a as usePresence, b as useActionForm, c as defineDataHooks, d as useBlockQuery, f as useRecordForm, g as useBlockTenant, h as useBlockEnv, i as useDebouncedSearch, l as useBlockEvent, m as createRecordProvider, n as useSignedUrl, o as useConflicts, p as useRecordListState, r as useUpload, s as useSyncStatus, t as useImage, u as useBlockMutation, v as useLatest, y as useAction } from "../react-BuDYI62C.js";
7
+ import { _ as useBlockTenant, a as useRealtimeRelay, b as useAction, c as useSyncStatus, d as useBlockMutation, f as useBlockQuery, g as useBlockEnv, h as createRecordProvider, i as useDebouncedSearch, l as defineDataHooks, m as useRecordListState, n as useSignedUrl, o as usePresence, p as useRecordForm, r as useUpload, s as useConflicts, t as useImage, u as useBlockEvent, v as useController, x as useActionForm, y as useLatest } from "../react-CZUZYn9E.js";
8
8
  import { t as tenantOf } from "../tenant-BgIiMQpo.js";
9
- export { BetterSupabaseProvider, SessionProvider, createHooks, createRecordProvider, defineDataHooks, escapeLike, fieldErrorsOf, supportOf, tenantOf, useAction, useActionForm, useAuth, useBlockEnv, useBlockEvent, useBlockMutation, useBlockQuery, useBlockTenant, useBroadcast, useConflicts, useController, useDebouncedSearch, useImage, useLatest, useLiveCount, useLiveQuery, usePresence, useRecordForm, useRecordListState, useSession, useSignIn, useSignOut, useSignedUrl, useSupabase, useSupportSession, useSyncStatus, useUpload };
9
+ export { BetterSupabaseProvider, SessionProvider, createHooks, createRecordProvider, defineDataHooks, escapeLike, fieldErrorsOf, supportOf, tenantOf, useAction, useActionForm, useAuth, useBlockEnv, useBlockEvent, useBlockMutation, useBlockQuery, useBlockTenant, useBroadcast, useConflicts, useController, useDebouncedSearch, useImage, useLatest, useLiveCount, useLiveQuery, usePresence, useRealtimeRelay, useRecordForm, useRecordListState, useSession, useSignIn, useSignOut, useSignedUrl, useSupabase, useSupportSession, useSyncStatus, useUpload };
@@ -1,4 +1,4 @@
1
- import { t as AuthSnapshot } from "../../bind-h5jre2K0.js";
1
+ import { t as AuthSnapshot } from "../../bind-JGCPGUJh.js";
2
2
  import { a as OAuthSignInOptions, i as OAuthClient, n as AuthLinkClient, o as WebBrowserLike, r as AuthLinkResult, t as AuthFailure } from "../../auth-link-B4NL84XU.js";
3
3
  import { n as PendingState } from "../../sign-in-D54FLMQy.js";
4
4
  import { Provider } from "@supabase/supabase-js";
@@ -1,5 +1,5 @@
1
1
  import { r as signInWithOAuthBrowser, t as handleAuthDeepLink } from "../../auth-link-D3-bU6yz.js";
2
- import { f as ClientContext, o as useAuth, t as usePending } from "../../sign-in-BsIaNx2C.js";
2
+ import { f as ClientContext, o as useAuth, t as usePending } from "../../sign-in-CmPK1AgM.js";
3
3
  import { useContext, useEffect, useMemo, useRef, useState } from "react";
4
4
  //#region src/react/native/index.ts
5
5
  function useClientOf(explicit, hook) {
@@ -1,13 +1,13 @@
1
1
  import { t as escapeLike } from "../escape-like-PReMbEEU.js";
2
- import { pt as QuerySpec } from "../define-DFBnQyYg.js";
2
+ import { pt as QuerySpec } from "../define-C5AcEkEJ.js";
3
3
  import { n as Impersonator } from "../impersonation-YTa9dZUv.js";
4
- import { t as tenantOf } from "../tenant-DzFsg0Pc.js";
4
+ import { t as tenantOf } from "../tenant-DOKIJI62.js";
5
5
  import { t as AuthSession } from "../view-DyFdMCqg.js";
6
- import { r as LiveCountSeed } from "../index-DN9mfmhA.js";
7
- import { r as MembershipClaim } from "../entitlements-BnhDBxLW.js";
8
- import { D as ProfileOf, O as UseActionOptions, S as LiveCountHookOptions, _ as ActionResultOf, b as ClaimsOf, g as ActionInputOf, t as fieldErrorsOf, w as LiveQueryHookOptions, x as ClientLike, y as BroadcastOptions } from "../field-errors-DYtg1mwv.js";
6
+ import { r as LiveCountSeed } from "../index-CTu-3fJB.js";
7
+ import { r as MembershipClaim } from "../entitlements-sO977DO-.js";
8
+ import { D as ProfileOf, O as UseActionOptions, S as LiveCountHookOptions, _ as ActionResultOf, b as ClaimsOf, g as ActionInputOf, t as fieldErrorsOf, w as LiveQueryHookOptions, x as ClientLike, y as BroadcastOptions } from "../field-errors-Dt86dCKk.js";
9
9
  import { n as supportOf, t as SupportView } from "../support-view-BYOgwXsJ.js";
10
- import { A as useBlockEvent$1, B as useRecordListState$1, D as useBlockTenant$1, E as useBlockEnv$1, F as useRecordForm$1, G as RecordProviderProps, H as RecordContextValue, I as RecordListQueryStates, J as createRecordProvider$1, K as RecordState, L as RecordListState, M as useBlockQuery$1, N as RecordFormState, O as useController$1, P as UseRecordFormOptions, R as RecordListUrl, S as useSyncStatus$1, T as defineDataHooks$1, U as RecordInitial, V as RecordActionsOf, W as RecordProviderKit, X as ActionHandle, Y as ActionForm, Z as UseActionFormOptions, _ as PresenceHookOptions, a as Upload, at as useAuth, c as UseImageOptions, ct as useLiveQuery, d as useSignedUrl$1, et as BetterHooks, f as useUpload$1, g as Presence, h as useDebouncedSearch$1, i as StorageImage, j as useBlockMutation$1, k as useLatest$1, l as UseUploadOptions, lt as useSupabase, m as DebouncedSearchOptions, n as SignedUrl, nt as BetterSupabaseProviderProps, o as UploadStatus, ot as useBroadcast, p as DebouncedSearch, q as RecordWriteHandlers, r as SignedUrlSource, rt as LiveCount, s as UploadTarget, t as ImageSource, tt as BetterSupabaseProvider, u as useImage$1, v as PresenceTopic, x as useConflicts$1, y as usePresence$1, z as RecordListUrlState } from "../index-Ab4UeEn_.js";
10
+ import { $ as UseActionFormOptions, A as useController$1, B as RecordListUrl, C as useConflicts$1, D as defineDataHooks$1, F as RecordFormState, G as RecordInitial, H as useRecordListState$1, I as UseRecordFormOptions, J as RecordState, K as RecordProviderKit, L as useRecordForm$1, M as useBlockEvent$1, N as useBlockMutation$1, O as useBlockEnv$1, P as useBlockQuery$1, Q as ActionHandle, R as RecordListQueryStates, U as RecordActionsOf, V as RecordListUrlState, W as RecordContextValue, X as createRecordProvider$1, Y as RecordWriteHandlers, Z as ActionForm, _ as useRealtimeRelay$1, a as Upload, at as LiveCount, b as PresenceTopic, c as UseImageOptions, ct as useBroadcast, d as useSignedUrl$1, dt as useSupabase, f as useUpload$1, g as UseRealtimeRelayOptions, h as useDebouncedSearch$1, i as StorageImage, it as BetterSupabaseProviderProps, j as useLatest$1, k as useBlockTenant$1, l as UseUploadOptions, m as DebouncedSearchOptions, n as SignedUrl, nt as BetterHooks, o as UploadStatus, p as DebouncedSearch, q as RecordProviderProps, r as SignedUrlSource, rt as BetterSupabaseProvider, s as UploadTarget, st as useAuth, t as ImageSource, u as useImage$1, ut as useLiveQuery, v as Presence, w as useSyncStatus$1, x as usePresence$1, y as PresenceHookOptions, z as RecordListState } from "../index-Craf712U.js";
11
11
  import { SessionProvider, SessionProviderProps } from "./session.js";
12
12
  import { a as useSignIn$1, i as SignOut, n as PendingState, o as useSignOut$1, r as SignIn, t as AuthHookOptions } from "../sign-in-D54FLMQy.js";
13
13
  //#region src/react/server.d.ts
@@ -38,6 +38,11 @@ export declare const useActionForm: <T>(action: (input: FormData) => Promise<Act
38
38
  * Component.
39
39
  */
40
40
  export declare const usePresence: typeof usePresence$1;
41
+ /**
42
+ * The `react-server` build of `useRealtimeRelay`: create the relay client in a
43
+ * Client Component.
44
+ */
45
+ export declare const useRealtimeRelay: typeof useRealtimeRelay$1;
41
46
  /**
42
47
  * The `react-server` build of `useSignIn`: sign in from a Client Component or a
43
48
  * Server Action.
@@ -127,4 +132,4 @@ export declare const useBlockEnv: typeof useBlockEnv$1;
127
132
  */
128
133
  export declare const useBlockTenant: typeof useBlockTenant$1;
129
134
  //#endregion
130
- export { type ActionForm, type ActionHandle, type ActionInputOf, type ActionResultOf, type AuthHookOptions, type AuthSession, type BetterHooks, BetterSupabaseProvider, type BetterSupabaseProviderProps, type BroadcastOptions, type ClaimsOf, type ClientLike, type DebouncedSearch, type DebouncedSearchOptions, type ImageSource, type Impersonator, type LiveCount, type LiveCountHookOptions, type LiveCountSeed, type LiveQueryHookOptions, type MembershipClaim, type PendingState, type Presence, type PresenceHookOptions, type PresenceTopic, type ProfileOf, type RecordActionsOf, type RecordContextValue, type RecordFormState, type RecordInitial, type RecordListQueryStates, type RecordListState, type RecordListUrl, type RecordListUrlState, type RecordProviderKit, type RecordProviderProps, type RecordState, type RecordWriteHandlers, SessionProvider, type SessionProviderProps, type SignIn, type SignOut, type SignedUrl, type SignedUrlSource, type StorageImage, type SupportView, type Upload, type UploadStatus, type UploadTarget, type UseActionFormOptions, type UseActionOptions, type UseImageOptions, type UseRecordFormOptions, type UseUploadOptions, escapeLike, fieldErrorsOf, supportOf, tenantOf, useAuth, useBroadcast, useLiveQuery, useSupabase };
135
+ export { type ActionForm, type ActionHandle, type ActionInputOf, type ActionResultOf, type AuthHookOptions, type AuthSession, type BetterHooks, BetterSupabaseProvider, type BetterSupabaseProviderProps, type BroadcastOptions, type ClaimsOf, type ClientLike, type DebouncedSearch, type DebouncedSearchOptions, type ImageSource, type Impersonator, type LiveCount, type LiveCountHookOptions, type LiveCountSeed, type LiveQueryHookOptions, type MembershipClaim, type PendingState, type Presence, type PresenceHookOptions, type PresenceTopic, type ProfileOf, type RecordActionsOf, type RecordContextValue, type RecordFormState, type RecordInitial, type RecordListQueryStates, type RecordListState, type RecordListUrl, type RecordListUrlState, type RecordProviderKit, type RecordProviderProps, type RecordState, type RecordWriteHandlers, SessionProvider, type SessionProviderProps, type SignIn, type SignOut, type SignedUrl, type SignedUrlSource, type StorageImage, type SupportView, type Upload, type UploadStatus, type UploadTarget, type UseActionFormOptions, type UseActionOptions, type UseImageOptions, type UseRealtimeRelayOptions, type UseRecordFormOptions, type UseUploadOptions, escapeLike, fieldErrorsOf, supportOf, tenantOf, useAuth, useBroadcast, useLiveQuery, useSupabase };
@@ -1,8 +1,8 @@
1
1
  import { t as escapeLike } from "../escape-like-DHfx6jRr.js";
2
- import { d as useSupabase, i as BetterSupabaseProvider, o as useAuth, s as useBroadcast, u as useLiveQuery } from "../sign-in-BsIaNx2C.js";
2
+ import { d as useSupabase, i as BetterSupabaseProvider, o as useAuth, s as useBroadcast, u as useLiveQuery } from "../sign-in-CmPK1AgM.js";
3
3
  import { t as supportOf } from "../support-view-g4YLBeqX.js";
4
4
  import { d as fieldErrorsOf } from "../data-hooks-tgF1Ct0F.js";
5
- import "../react-BuDYI62C.js";
5
+ import "../react-CZUZYn9E.js";
6
6
  import { t as tenantOf } from "../tenant-BgIiMQpo.js";
7
7
  import { SessionProvider } from "./session.js";
8
8
  //#region src/react/server.ts
@@ -39,6 +39,11 @@ const useActionForm = clientOnly("useActionForm");
39
39
  */
40
40
  const usePresence = clientOnly("usePresence");
41
41
  /**
42
+ * The `react-server` build of `useRealtimeRelay`: create the relay client in a
43
+ * Client Component.
44
+ */
45
+ const useRealtimeRelay = clientOnly("useRealtimeRelay");
46
+ /**
42
47
  * The `react-server` build of `useSignIn`: sign in from a Client Component or a
43
48
  * Server Action.
44
49
  */
@@ -138,4 +143,4 @@ const useBlockEnv = clientOnly("useBlockEnv");
138
143
  */
139
144
  const useBlockTenant = clientOnly("useBlockTenant");
140
145
  //#endregion
141
- export { BetterSupabaseProvider, SessionProvider, createHooks, createRecordProvider, defineDataHooks, escapeLike, fieldErrorsOf, supportOf, tenantOf, useAction, useActionForm, useAuth, useBlockEnv, useBlockEvent, useBlockMutation, useBlockQuery, useBlockTenant, useBroadcast, useConflicts, useController, useDebouncedSearch, useImage, useLatest, useLiveCount, useLiveQuery, usePresence, useRecordForm, useRecordListState, useSession, useSignIn, useSignOut, useSignedUrl, useSupabase, useSupportSession, useSyncStatus, useUpload };
146
+ export { BetterSupabaseProvider, SessionProvider, createHooks, createRecordProvider, defineDataHooks, escapeLike, fieldErrorsOf, supportOf, tenantOf, useAction, useActionForm, useAuth, useBlockEnv, useBlockEvent, useBlockMutation, useBlockQuery, useBlockTenant, useBroadcast, useConflicts, useController, useDebouncedSearch, useImage, useLatest, useLiveCount, useLiveQuery, usePresence, useRealtimeRelay, useRecordForm, useRecordListState, useSession, useSignIn, useSignOut, useSignedUrl, useSupabase, useSupportSession, useSyncStatus, useUpload };
@@ -26,4 +26,9 @@ export declare function useSession<C = unknown, P = unknown>(): AuthSession<C, P
26
26
  * `useSession`.
27
27
  */
28
28
  export declare function useSupportSession(): SupportView | undefined;
29
+ /**
30
+ * `useSupportSession()` that answers `undefined` outside a `<SessionProvider>`
31
+ * instead of throwing.
32
+ */
33
+ export declare function useOptionalSupportSession(): SupportView | undefined;
29
34
  //#endregion
@@ -27,5 +27,13 @@ function useSession() {
27
27
  function useSupportSession() {
28
28
  return supportOf(useSession());
29
29
  }
30
+ /**
31
+ * `useSupportSession()` that answers `undefined` outside a `<SessionProvider>`
32
+ * instead of throwing.
33
+ */
34
+ function useOptionalSupportSession() {
35
+ const promise = useContext(SessionContext);
36
+ return promise ? supportOf(use(promise)) : void 0;
37
+ }
30
38
  //#endregion
31
- export { SessionProvider, useSession, useSupportSession };
39
+ export { SessionProvider, useOptionalSupportSession, useSession, useSupportSession };
@@ -1,13 +1,14 @@
1
1
  import { n as dbError } from "./errors-BVFgt8BZ.js";
2
2
  import { t as escapeLike } from "./escape-like-DHfx6jRr.js";
3
3
  import { a as ok, r as err, s as toDbError } from "./result-ntFBW2p2.js";
4
- import { c as useBroadcastAuth, f as ClientContext } from "./sign-in-BsIaNx2C.js";
5
- import "./react/session.js";
4
+ import { c as useBroadcastAuth, f as ClientContext } from "./sign-in-CmPK1AgM.js";
5
+ import { useOptionalSupportSession } from "./react/session.js";
6
6
  import { a as blockArgsKey, c as listenToBlockEvents, d as fieldErrorsOf, i as dataTarget, l as blockEnv, n as createDataOne, o as createBlockMutation, r as dataArgsKey, s as createBlockQuery, t as createDataList } from "./data-hooks-tgF1Ct0F.js";
7
7
  import { H as rpcTransport } from "./block-helpers-CtBdjgO4.js";
8
8
  import { r as createBlocks } from "./create-blocks-Bu4H5TXw.js";
9
9
  import { a as recordCan, i as plainData, l as runBindingWrite, s as recordSubject } from "./record-type-DRbnlj5q.js";
10
10
  import { t as createRecordController } from "./controller-BNZKd6bJ.js";
11
+ import { t as relayRealtimeClient } from "./relay-gKvKJ3xf.js";
11
12
  import { a as ttlSeconds, n as scaleTransform, r as transformFor } from "./variants-Cy--Ub-a.js";
12
13
  import { createContext, createElement, use, useCallback, useContext, useEffect, useMemo, useRef, useState, useSyncExternalStore, useTransition } from "react";
13
14
  //#region src/react/actions.ts
@@ -529,7 +530,7 @@ const notJoined = () => Promise.resolve(dbError("invalid_request", "better-supab
529
530
  */
530
531
  function usePresence(topic, values, options = {}) {
531
532
  const context = useContext(ClientContext);
532
- const supabase = options.client ?? context?.client.supabase;
533
+ const supabase = options.client ?? context?.realtime ?? context?.client.supabase;
533
534
  if (!supabase) throw new Error("better-supabase: usePresence needs <BetterSupabaseProvider client={bsb}> or { client: supabase }");
534
535
  const auth = useBroadcastAuth(options.client === void 0 ? context?.client : void 0, supabase);
535
536
  const [members, setMembers] = useState(NONE);
@@ -606,6 +607,42 @@ function syncState(joined, current, tracked) {
606
607
  else joined.track(current.state);
607
608
  }
608
609
  //#endregion
610
+ //#region src/react/relay.ts
611
+ /**
612
+ * A `relayRealtimeClient(url)` while it is needed, else `undefined`. Pass it to
613
+ * `<BetterSupabaseProvider realtime={...}>`, and `useBroadcast`, `usePresence`,
614
+ * `useLiveQuery` and `useLiveCount` join through the server's `realtimeRelay`
615
+ * route, as the viewed user in a support session. The client is created once
616
+ * per `url` and options, so pass a stable `fetch` and `EventSource`.
617
+ *
618
+ * ```tsx
619
+ * const realtime = useRealtimeRelay("/api/realtime");
620
+ * return (
621
+ * <BetterSupabaseProvider client={bsb} realtime={realtime}>
622
+ * {children}
623
+ * </BetterSupabaseProvider>
624
+ * );
625
+ * ```
626
+ */
627
+ function useRealtimeRelay(url, options = {}) {
628
+ const support = useOptionalSupportSession();
629
+ const active = options.when === "always" || support !== void 0;
630
+ const { EventSource: source, fetch: send, timeoutMs, maxBackoffMs } = options;
631
+ return useMemo(() => active ? relayRealtimeClient(url, {
632
+ ...source === void 0 ? {} : { EventSource: source },
633
+ ...send === void 0 ? {} : { fetch: send },
634
+ ...timeoutMs === void 0 ? {} : { timeoutMs },
635
+ ...maxBackoffMs === void 0 ? {} : { maxBackoffMs }
636
+ }) : void 0, [
637
+ active,
638
+ url,
639
+ source,
640
+ send,
641
+ timeoutMs,
642
+ maxBackoffMs
643
+ ]);
644
+ }
645
+ //#endregion
609
646
  //#region src/react/search.ts
610
647
  /**
611
648
  * A search box's value, debounced. Pass `term` to `contains` (which escapes it)
@@ -976,4 +1013,4 @@ function useUpload(bucket, options = {}) {
976
1013
  };
977
1014
  }
978
1015
  //#endregion
979
- export { useController as _, usePresence as a, useActionForm as b, defineDataHooks as c, useBlockQuery as d, useRecordForm as f, useBlockTenant as g, useBlockEnv as h, useDebouncedSearch as i, useBlockEvent as l, createRecordProvider as m, useSignedUrl as n, useConflicts as o, useRecordListState as p, useUpload as r, useSyncStatus as s, useImage as t, useBlockMutation as u, useLatest as v, useAction as y };
1016
+ export { useBlockTenant as _, useRealtimeRelay as a, useAction as b, useSyncStatus as c, useBlockMutation as d, useBlockQuery as f, useBlockEnv as g, createRecordProvider as h, useDebouncedSearch as i, defineDataHooks as l, useRecordListState as m, useSignedUrl as n, usePresence as o, useRecordForm as p, useUpload as r, useConflicts as s, useImage as t, useBlockEvent as u, useController as v, useActionForm as x, useLatest as y };
@@ -1,10 +1,10 @@
1
1
  import { O as AnyFunctions, k as AnyModels } from "../types-DFdg_4yN.js";
2
2
  import { l as PermissionRef, t as AnyAuthorizer } from "../authorizer-B6X09otb.js";
3
- import { t as BetterSupabase } from "../define-DFBnQyYg.js";
4
- import { n as BetterServer } from "../server-types-7QPzW2bF.js";
3
+ import { t as BetterSupabase } from "../define-C5AcEkEJ.js";
4
+ import { n as BetterServer } from "../server-types-CK8mUIUT.js";
5
5
  import { a as AuthorizedContext, c as ResourceLoaderContext, i as AuthorizeOptions, l as Unwrapped, n as ActionParsed, o as BlockActionOptions, r as ActionResult, s as BlockRequireOptions } from "../kit-DOwKpSkA.js";
6
6
  import { t as RefusalRedirects } from "../refusal-CSntB_x8.js";
7
- import { n as FrameworkOptions, r as LocalsResource, t as FrameworkLocals } from "../framework-h5lP_5yj.js";
7
+ import { n as FrameworkOptions, r as LocalsResource, t as FrameworkLocals } from "../framework-BGdZVyPL.js";
8
8
  import { t as Validated } from "../shared-CRRfQAKG.js";
9
9
  import { AnyEntry, Contributions } from "@supabase/middleware";
10
10
  import { StandardSchemaV1 } from "@standard-schema/spec";
@@ -1,8 +1,8 @@
1
1
  import { D as AccessTopicPolicy, E as AccessPolicySql } from "../types-DFdg_4yN.js";
2
- import { $ as TemplateValues, Q as TemplateParams } from "../bucket-CiNi8sIw.js";
2
+ import { et as TemplateParams, tt as TemplateValues } from "../bucket-vc-QRrva.js";
3
3
  import { t as RealtimeStatus } from "../realtime-status-BhNkb-Ow.js";
4
- import { A as TriggerTopic, C as TopicSubscription, D as TriggerLookup, E as TopicTriggerValue, F as FanOutResult, I as TopicFanOutOptions, M as defineTopic, N as rowChange, O as TriggerOptions, P as rowKeys, S as TopicSubscribeOptions, T as TopicTriggerOptions, _ as TopicMessage, a as PresenceOutput, b as TopicPermission, c as RealtimeClient, d as SubscribeOptions, f as Subscription, g as TopicHandlers, h as TopicEvent, i as PresenceOptions, j as TriggerValue, k as TriggerPayloadMode, l as RowChange, m as Topic, n as PresenceInput, o as PresenceSchema, p as SubscriptionStatus, r as PresenceMember, s as PresenceSubscription, t as EventSchemas, u as RowKeys, v as TopicOptions, w as TopicTriggerLookup, x as TopicSqlOptions, y as TopicPayload } from "../topic-DNFEFGKI.js";
5
- import { a as watchTopic, i as topicPort, n as TopicPort, r as TopicWatch, t as TopicHandle } from "../watch-topic-Bo9S2R4P.js";
6
- import { _ as subjectPresenceValues, a as LiveSource, c as liveCount, d as realtimeChanges, f as SUBJECT_PRESENCE_TEMPLATE, g as subjectPresenceTopic, h as subjectPresence, i as LiveQueryOptions, l as liveQuery, m as SubjectPresenceValues, n as LiveCountOptions, o as LiveSubscription, p as SubjectPresenceTopic, r as LiveCountSeed, s as RealtimeChangesOptions, t as CountRunner, u as liveTopic } from "../index-DN9mfmhA.js";
4
+ import { A as TriggerTopic, C as TopicSubscription, D as TriggerLookup, E as TopicTriggerValue, F as FanOutResult, I as TopicFanOutOptions, M as defineTopic, N as rowChange, O as TriggerOptions, P as rowKeys, S as TopicSubscribeOptions, T as TopicTriggerOptions, _ as TopicMessage, a as PresenceOutput, b as TopicPermission, c as RealtimeClient, d as SubscribeOptions, f as Subscription, g as TopicHandlers, h as TopicEvent, i as PresenceOptions, j as TriggerValue, k as TriggerPayloadMode, l as RowChange, m as Topic, n as PresenceInput, o as PresenceSchema, p as SubscriptionStatus, r as PresenceMember, s as PresenceSubscription, t as EventSchemas, u as RowKeys, v as TopicOptions, w as TopicTriggerLookup, x as TopicSqlOptions, y as TopicPayload } from "../topic-CZXHhZye.js";
5
+ import { a as watchTopic, i as topicPort, n as TopicPort, r as TopicWatch, t as TopicHandle } from "../watch-topic-BAxoPKZx.js";
6
+ import { S as relayTopicPort, _ as subjectPresenceValues, a as LiveSource, b as RelayEventSourceConstructor, c as liveCount, d as realtimeChanges, f as SUBJECT_PRESENCE_TEMPLATE, g as subjectPresenceTopic, h as subjectPresence, i as LiveQueryOptions, l as liveQuery, m as SubjectPresenceValues, n as LiveCountOptions, o as LiveSubscription, p as SubjectPresenceTopic, r as LiveCountSeed, s as RealtimeChangesOptions, t as CountRunner, u as liveTopic, v as RelayClientOptions, x as relayRealtimeClient, y as RelayEventSource } from "../index-CTu-3fJB.js";
7
7
  import { n as subjectReaders, t as SubjectReadersOptions } from "../subject-readers-8GySC9Z8.js";
8
- export { type AccessPolicySql, type AccessTopicPolicy, type CountRunner, type EventSchemas, type FanOutResult, type LiveCountOptions, type LiveCountSeed, type LiveQueryOptions, type LiveSource, type LiveSubscription, type PresenceInput, type PresenceMember, type PresenceOptions, type PresenceOutput, type PresenceSchema, type PresenceSubscription, type RealtimeChangesOptions, type RealtimeClient, type RealtimeStatus, type RowChange, type RowKeys, SUBJECT_PRESENCE_TEMPLATE, type SubjectPresenceTopic, type SubjectPresenceValues, type SubjectReadersOptions, type SubscribeOptions, type Subscription, type SubscriptionStatus, type TemplateParams, type TemplateValues, type Topic, type TopicEvent, type TopicFanOutOptions, type TopicHandle, type TopicHandlers, type TopicMessage, type TopicOptions, type TopicPayload, type TopicPermission, type TopicPort, type TopicSqlOptions, type TopicSubscribeOptions, type TopicSubscription, type TopicTriggerLookup, type TopicTriggerOptions, type TopicTriggerValue, type TopicWatch, type TriggerLookup, type TriggerOptions, type TriggerPayloadMode, type TriggerTopic, type TriggerValue, defineTopic, liveCount, liveQuery, liveTopic, realtimeChanges, rowChange, rowKeys, subjectPresence, subjectPresenceTopic, subjectPresenceValues, subjectReaders, topicPort, watchTopic };
8
+ export { type AccessPolicySql, type AccessTopicPolicy, type CountRunner, type EventSchemas, type FanOutResult, type LiveCountOptions, type LiveCountSeed, type LiveQueryOptions, type LiveSource, type LiveSubscription, type PresenceInput, type PresenceMember, type PresenceOptions, type PresenceOutput, type PresenceSchema, type PresenceSubscription, type RealtimeChangesOptions, type RealtimeClient, type RealtimeStatus, type RelayClientOptions, type RelayEventSource, type RelayEventSourceConstructor, type RowChange, type RowKeys, SUBJECT_PRESENCE_TEMPLATE, type SubjectPresenceTopic, type SubjectPresenceValues, type SubjectReadersOptions, type SubscribeOptions, type Subscription, type SubscriptionStatus, type TemplateParams, type TemplateValues, type Topic, type TopicEvent, type TopicFanOutOptions, type TopicHandle, type TopicHandlers, type TopicMessage, type TopicOptions, type TopicPayload, type TopicPermission, type TopicPort, type TopicSqlOptions, type TopicSubscribeOptions, type TopicSubscription, type TopicTriggerLookup, type TopicTriggerOptions, type TopicTriggerValue, type TopicWatch, type TriggerLookup, type TriggerOptions, type TriggerPayloadMode, type TriggerTopic, type TriggerValue, defineTopic, liveCount, liveQuery, liveTopic, realtimeChanges, relayRealtimeClient, relayTopicPort, rowChange, rowKeys, subjectPresence, subjectPresenceTopic, subjectPresenceValues, subjectReaders, topicPort, watchTopic };
@@ -1,5 +1,6 @@
1
1
  import { i as realtimeChanges, n as liveQuery, r as liveTopic, t as liveCount } from "../live-C21DgbsD.js";
2
2
  import { n as watchTopic, t as topicPort } from "../watch-topic-CuaWfCuv.js";
3
+ import { n as relayTopicPort, t as relayRealtimeClient } from "../relay-gKvKJ3xf.js";
3
4
  import { t as subjectReaders } from "../subject-readers-B-pQ9Mmo.js";
4
5
  import { n as rowChange, r as rowKeys, t as defineTopic } from "../topic-ikV_pLTX.js";
5
6
  //#region src/realtime/subject-presence.ts
@@ -34,4 +35,4 @@ function subjectPresenceValues(subject) {
34
35
  } : null;
35
36
  }
36
37
  //#endregion
37
- export { SUBJECT_PRESENCE_TEMPLATE, defineTopic, liveCount, liveQuery, liveTopic, realtimeChanges, rowChange, rowKeys, subjectPresence, subjectPresenceTopic, subjectPresenceValues, subjectReaders, topicPort, watchTopic };
38
+ export { SUBJECT_PRESENCE_TEMPLATE, defineTopic, liveCount, liveQuery, liveTopic, realtimeChanges, relayRealtimeClient, relayTopicPort, rowChange, rowKeys, subjectPresence, subjectPresenceTopic, subjectPresenceValues, subjectReaders, topicPort, watchTopic };
@@ -1,4 +1,4 @@
1
- import { Sn as EntitySchema } from "./define-block-DvvcM54N.js";
1
+ import { Sn as EntitySchema } from "./define-block-C1RHXz7L.js";
2
2
  import { s as FormFieldType } from "./form-definition-BjEtH8BT.js";
3
3
  //#region src/records/record-form.d.ts
4
4
  /** The input a field renders: a forms block field type, or a date and time. */
@@ -1,13 +1,13 @@
1
1
  import { b as DbError, t as AsyncResult } from "../result-DZeA5KS6.js";
2
2
  import { $ as RecordRef } from "../types-DFdg_4yN.js";
3
- import { _n as recordBindingWrite, an as RecordBindingDefinition, cn as RecordBindingResult, dn as RecordBindingWriteName, fn as RecordBindingWriteOutput, gn as defineRecordBinding, hn as TimelineItem, in as RecordBindingData, ln as RecordBindingWrite, mn as RecordRowInput, nn as AnyRecordBindingWrite, on as RecordBindingOptions, pn as RecordBindingWrites, rn as RecordBinding, sn as RecordBindingPermissions, tn as AnyRecordBinding, un as RecordBindingWriteInput, vn as recordEventMatches, yn as recordRowInput } from "../define-block-DvvcM54N.js";
4
- import { A as BindingBlocks, B as PermissionFlags, C as defineRecordType, D as recordPermissionKeys, E as recordCan, F as LoadBindingsOptions, H as can, I as LoadedBindings, L as bindingCan, M as BindingName, N as BindingOf, O as recordSubject, P as BindingSource, R as countBinding, S as RecordWriteInput, T as plainData, U as permissionFlags, V as PermissionSet, _ as RecordTypeBlocks, b as RecordTypeWriteInput, d as BindingWritesOf, f as Plain, g as RecordType, h as RecordCan, j as BindingCheck, k as recordWriteInput, m as PlainBindings, p as PlainBinding, v as RecordTypePermissions, w as findBindingWrite, x as RecordTypeWriteOutput, y as RecordTypeSpec, z as loadBindings } from "../index-BfkltrGJ.js";
5
- import { p as SubscriptionStatus } from "../topic-DNFEFGKI.js";
6
- import { n as TopicPort } from "../watch-topic-Bo9S2R4P.js";
7
- import { n as Controller, t as AuthPort } from "../controller-DyPPMFSw.js";
3
+ import { _n as recordBindingWrite, an as RecordBindingDefinition, cn as RecordBindingResult, dn as RecordBindingWriteName, fn as RecordBindingWriteOutput, gn as defineRecordBinding, hn as TimelineItem, in as RecordBindingData, ln as RecordBindingWrite, mn as RecordRowInput, nn as AnyRecordBindingWrite, on as RecordBindingOptions, pn as RecordBindingWrites, rn as RecordBinding, sn as RecordBindingPermissions, tn as AnyRecordBinding, un as RecordBindingWriteInput, vn as recordEventMatches, yn as recordRowInput } from "../define-block-C1RHXz7L.js";
4
+ import { A as BindingBlocks, B as PermissionFlags, C as defineRecordType, D as recordPermissionKeys, E as recordCan, F as LoadBindingsOptions, H as can, I as LoadedBindings, L as bindingCan, M as BindingName, N as BindingOf, O as recordSubject, P as BindingSource, R as countBinding, S as RecordWriteInput, T as plainData, U as permissionFlags, V as PermissionSet, _ as RecordTypeBlocks, b as RecordTypeWriteInput, d as BindingWritesOf, f as Plain, g as RecordType, h as RecordCan, j as BindingCheck, k as recordWriteInput, m as PlainBindings, p as PlainBinding, v as RecordTypePermissions, w as findBindingWrite, x as RecordTypeWriteOutput, y as RecordTypeSpec, z as loadBindings } from "../index-CcAmFNVi.js";
5
+ import { p as SubscriptionStatus } from "../topic-CZXHhZye.js";
6
+ import { n as TopicPort } from "../watch-topic-BAxoPKZx.js";
7
+ import { n as Controller, t as AuthPort } from "../controller-BW-5Opig.js";
8
8
  import { a as RecordSummaryOptions, c as Subjects, f as MyWorkKind, i as RecordSummary, n as MyWorkItem, r as MyWorkOptions } from "../subjects-BpIEN1MS.js";
9
- import { a as timelineBindings, c as RecordListCells, d as RecordListQuery, f as RecordListRow, h as defineRecordList, i as loadTimeline, l as RecordListColumn, m as RecordListSpec, n as Timeline, o as RecordList, p as RecordListSource, r as TimelineEntry, s as RecordListCell, t as LoadTimelineOptions, u as RecordListPage } from "../timeline-WrFMgd3U.js";
10
- import { a as RecordFormOptions, c as recordForm, i as RecordFormInput, n as RecordFormCustomField, o as RecordFormResult, r as RecordFormField, s as RecordFormValues, t as RecordForm } from "../record-form-DB_5Ue_B.js";
9
+ import { a as timelineBindings, c as RecordListCells, d as RecordListQuery, f as RecordListRow, h as defineRecordList, i as loadTimeline, l as RecordListColumn, m as RecordListSpec, n as Timeline, o as RecordList, p as RecordListSource, r as TimelineEntry, s as RecordListCell, t as LoadTimelineOptions, u as RecordListPage } from "../timeline-CvTuXYvn.js";
10
+ import { a as RecordFormOptions, c as recordForm, i as RecordFormInput, n as RecordFormCustomField, o as RecordFormResult, r as RecordFormField, s as RecordFormValues, t as RecordForm } from "../record-form-D9ILuVtA.js";
11
11
  //#region src/records/controller.d.ts
12
12
  interface RecordControllerOptions<B extends BindingBlocks, N extends BindingName<B>> extends LoadBindingsOptions<B, N> {
13
13
  readonly source: BindingSource<B>;