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,9 +1,120 @@
1
1
  /// <reference lib="esnext.temporal" />
2
- import { _ as DbError, a as AsyncResult } from "./executor-BunPOO-k.js";
3
- import { g as RequestContext, t as Actor } from "./plugin-o144f322.js";
4
- import { t as SqlClient } from "./executor-Cghdstwu.js";
2
+ import { b as DbError, t as AsyncResult } from "./result-D7y2fT87.js";
3
+ import { t as SqlClient } from "./executor-DbvExCFC.js";
4
+ import { m as RequestContext, t as Actor } from "./plugin-FGY8UhYm.js";
5
+ import { i as CursorPageOptions, r as BlockTemporalOptions } from "./block-helpers-CKtbFcRv.js";
6
+ import { t as BlockProblemOptions } from "./problem-DD8LZFjc.js";
5
7
  import { StandardSchemaV1 } from "@standard-schema/spec";
6
- //#region src/jobs/queue.d.ts
8
+ //#region src/blocks/jobs/backends.d.ts
9
+ /** The body of a queued message, on pgmq and the table backend alike. */
10
+ interface QueueMessageBody {
11
+ readonly payload?: unknown;
12
+ readonly max_attempts?: number;
13
+ readonly last_error?: string;
14
+ }
15
+ /** A claimed message, as `better_supabase.claim_jobs` returns it. */
16
+ interface QueueMessageRow {
17
+ readonly id: string | number;
18
+ /** 1 on the first claim; a lease token for complete, fail and extend. */
19
+ readonly attempts: number;
20
+ readonly enqueued_at: Date | string;
21
+ readonly visible_until: Date | string;
22
+ readonly message: QueueMessageBody | null;
23
+ }
24
+ /** A queue's counts, as `jobs.stats` returns them. */
25
+ interface QueueStats {
26
+ /** Visible now: the next claim takes them. */
27
+ readonly ready: number;
28
+ /** Claimed by a worker, or waiting out the backoff before a retry. */
29
+ readonly inFlight: number;
30
+ /** Enqueued with a delay and not claimed yet. */
31
+ readonly delayed: number;
32
+ /** Dead letters kept in the archive. */
33
+ readonly dead: number;
34
+ /** Seconds since the oldest message that isn't done was enqueued; null when none is waiting. */
35
+ readonly oldestAgeSeconds: number | null;
36
+ }
37
+ /** A dead letter, as `better_supabase.list_dead_jobs` returns it. */
38
+ interface DeadJobRow {
39
+ readonly id: string | number;
40
+ readonly attempts: number;
41
+ readonly enqueued_at: Date | string;
42
+ readonly died_at: Date | string | null;
43
+ readonly message: QueueMessageBody | null;
44
+ }
45
+ /** A schedule whose run is due, claimed by `runSchedules`. */
46
+ interface DueSchedule {
47
+ readonly name: string;
48
+ readonly cron: string;
49
+ readonly timeZone: string;
50
+ readonly queue: string;
51
+ /** The payload as stored, with its recorded context. */
52
+ readonly payload: unknown;
53
+ readonly nextRun: Temporal.Instant;
54
+ }
55
+ /** A Supabase client, or anything with `.schema(name).rpc(fn, args)`. */
56
+ interface QueueRpcClient {
57
+ /**
58
+ * `never` parameters, so a typed `SupabaseClient<Database>` whose types
59
+ * leave out `pgmq_public` fits too.
60
+ */
61
+ schema(name: never): {
62
+ rpc(fn: never, args: never): PromiseLike<{
63
+ data: unknown;
64
+ error: unknown;
65
+ }>;
66
+ };
67
+ }
68
+ /**
69
+ * Where `createJobs` stores jobs. `sqlQueueBackend` (the `jobs` SQL module
70
+ * module, on pgmq or its table backend) and `pgmqPublicBackend` ship with
71
+ * the package; `testQueueBackend` from `better-supabase/testing` checks
72
+ * another one.
73
+ */
74
+ interface QueueBackend {
75
+ readonly apiVersion: 1;
76
+ readonly name: string;
77
+ /** Whether `extend` works, so long-running batches keep their lease. */
78
+ readonly leases: boolean;
79
+ send(queue: string, payload: unknown, delay: number, maxAttempts: number, dedupeKey: string | undefined, dedupe?: "always" | "waiting"): Promise<number>;
80
+ read(queue: string, lease: number, batch: number): Promise<readonly QueueMessageRow[]>;
81
+ /** `false` when the lease was lost. */
82
+ complete(job: Job): Promise<boolean>;
83
+ fail(job: Job, error: string, retryIn: number | undefined): Promise<"queued" | "dead" | null>;
84
+ extend(job: Job, lease: number): Promise<boolean>;
85
+ /** Re-enqueues a dead letter; `null` when it isn't one. Absent when the backend can't. */
86
+ replay?(queue: string, id: number): Promise<number | null>;
87
+ /** Counts for one queue. Absent when the backend can't. */
88
+ stats?(queue: string): Promise<QueueStats>;
89
+ /** Dead letters, newest first, before `before` when given. Absent when the backend can't. */
90
+ listDead?(queue: string, limit: number, before: number | undefined): Promise<readonly DeadJobRow[]>;
91
+ /** Re-enqueues the dead letters `ids`, or the newest `limit`; returns how many. */
92
+ retryDead?(queue: string, ids: readonly number[] | undefined, limit: number): Promise<number>;
93
+ schedule(name: string, cron: string, queue: string, payload: unknown, timeZone: string, nextRun: Temporal.Instant, tenant?: string): Promise<void>;
94
+ unschedule(name: string): Promise<boolean>;
95
+ /** Schedules by name prefix and tenant. Absent when the backend can't list them. */
96
+ listSchedules?(filter: ScheduleFilter): Promise<readonly ScheduleInfo[]>;
97
+ /** Removes a tenant's schedules and returns how many. Absent when the backend can't. */
98
+ unscheduleTenant?(tenant: string): Promise<number>;
99
+ /** Leases due schedules (the drain scheduler); absent or empty with pg_cron. */
100
+ dueSchedules?(lease: number, batch: number): Promise<readonly DueSchedule[]>;
101
+ /** Moves a schedule from `ran` to `next`; `false` when it changed since the claim. */
102
+ advanceSchedule?(name: string, ran: Temporal.Instant, next: Temporal.Instant): Promise<boolean>;
103
+ }
104
+ /**
105
+ * The `jobs` SQL module over a service SQL connection. The same
106
+ * functions back both `sql.modules.jobs.options.backend` values (pgmq and table)
107
+ * and both schedulers.
108
+ */
109
+ declare function sqlQueueBackend(sql: SqlClient): QueueBackend;
110
+ /**
111
+ * Supabase's `pgmq_public` RPCs (Integrations, Queues, "Expose Queues via
112
+ * PostgREST"). No lease check on complete, no retry delay, no deduplication
113
+ * and no schedules: a failed job reappears when its lease ends.
114
+ */
115
+ declare function pgmqPublicBackend(client: QueueRpcClient): QueueBackend;
116
+ //#endregion
117
+ //#region src/blocks/jobs/queue.d.ts
7
118
  type QueueSchemas = Readonly<Record<string, StandardSchemaV1>>;
8
119
  type PayloadIn<Q extends QueueSchemas, N extends keyof Q> = StandardSchemaV1.InferInput<Q[N]>;
9
120
  type PayloadOut<Q extends QueueSchemas, N extends keyof Q> = StandardSchemaV1.InferOutput<Q[N]>;
@@ -11,6 +122,11 @@ type PayloadOut<Q extends QueueSchemas, N extends keyof Q> = StandardSchemaV1.In
11
122
  interface JobContext {
12
123
  readonly actor?: Actor;
13
124
  readonly tenant?: string;
125
+ /**
126
+ * The `act` claim of a support or impersonated session, so the job runs
127
+ * under the same terms (a read-only support session stays read-only).
128
+ */
129
+ readonly act?: Readonly<Record<string, unknown>>;
14
130
  }
15
131
  interface Job<P = unknown> {
16
132
  /** The pgmq message id. */
@@ -25,7 +141,8 @@ interface Job<P = unknown> {
25
141
  readonly visibleUntil: Temporal.Instant;
26
142
  readonly lastError: string | null;
27
143
  /**
28
- * The actor and tenant recorded at enqueue, ready for `db.$with(job.context)`.
144
+ * The actor and tenant recorded at enqueue, ready for `bs.forContext(job.context)`,
145
+ * which runs as that user with RLS.
29
146
  * Without a recorded tenant, `tenant()` applies its `onMissing` unless the
30
147
  * worker runs with `allTenants: true`.
31
148
  */
@@ -43,6 +160,13 @@ interface EnqueueOptions {
43
160
  * its id. SQL connections only.
44
161
  */
45
162
  readonly dedupeKey?: string;
163
+ /**
164
+ * Which jobs with the same `dedupeKey` take the enqueue: `"always"` (the
165
+ * default) a waiting or running one, `"waiting"` only one no worker has
166
+ * claimed yet, so a change made during a run queues one follow-up (a
167
+ * debounce).
168
+ */
169
+ readonly dedupe?: "always" | "waiting";
46
170
  /**
47
171
  * The request context whose actor and tenant the job records, next to the
48
172
  * payload. The tenant is `context.tenant`, the one `tenant()` resolved, or
@@ -53,12 +177,72 @@ interface EnqueueOptions {
53
177
  interface ScheduleOptions {
54
178
  /** The actor and tenant every scheduled run records, as in `enqueue`. */
55
179
  readonly context?: RequestContext;
180
+ /**
181
+ * The tenant the schedule belongs to, for `listSchedules({ tenant })` and
182
+ * `unscheduleAll({ tenant })`. Defaults to the tenant of `context`. Needs
183
+ * `sql.modules.jobs.options.scheduler: "drain"`.
184
+ */
185
+ readonly tenant?: string;
56
186
  /**
57
187
  * The IANA time zone the cron fields are read in. Defaults to `UTC`.
58
- * Other zones need `kits.jobs.options.scheduler: "drain"`.
188
+ * Other zones need `sql.modules.jobs.options.scheduler: "drain"`.
59
189
  */
60
190
  readonly timeZone?: string;
61
191
  }
192
+ /** One schedule of the set `ensureSchedules` keeps. */
193
+ interface ScheduleDefinition<Q extends QueueSchemas, N extends Extract<keyof Q, string> = Extract<keyof Q, string>> extends ScheduleOptions {
194
+ readonly name: string;
195
+ readonly cron: string;
196
+ readonly queue: N;
197
+ readonly payload: PayloadIn<Q, N>;
198
+ }
199
+ /** Each queue's `ScheduleDefinition`, so `payload` follows `queue`. */
200
+ type ScheduleDefinitions<Q extends QueueSchemas> = { readonly [N in Extract<keyof Q, string>]: ScheduleDefinition<Q, N>; }[Extract<keyof Q, string>];
201
+ interface EnsureSchedulesOptions {
202
+ /**
203
+ * The set's name prefix, such as `workflow:`. Every definition's name
204
+ * starts with it, and existing schedules under it that the set doesn't
205
+ * name are removed.
206
+ */
207
+ readonly prefix: string;
208
+ /**
209
+ * Only this tenant's schedules under the prefix are compared and removed,
210
+ * and definitions without their own tenant get it.
211
+ */
212
+ readonly tenant?: string;
213
+ }
214
+ interface EnsureSchedulesResult {
215
+ /** The names written, in the order given. */
216
+ readonly scheduled: readonly string[];
217
+ /** Schedules under the prefix that the set no longer names. */
218
+ readonly removed: readonly string[];
219
+ }
220
+ interface ListDeadOptions extends CursorPageOptions<number> {
221
+ /** Defaults to 100, at most 1000. */
222
+ readonly limit?: number;
223
+ /** Only dead letters with a lower id, for the next page. */
224
+ readonly cursor?: number;
225
+ }
226
+ interface RetryDeadOptions {
227
+ /** The dead letters to retry. Defaults to the newest `limit`. */
228
+ readonly ids?: readonly number[];
229
+ /** Defaults to 1000. */
230
+ readonly limit?: number;
231
+ }
232
+ /** A dead letter as `listDead` returns it. */
233
+ interface DeadJob<P = unknown> {
234
+ readonly id: number;
235
+ readonly queue: string;
236
+ /** The stored payload, unvalidated: its schema may have changed since. */
237
+ readonly payload: P;
238
+ readonly context: RequestContext;
239
+ readonly attempts: number;
240
+ readonly maxAttempts: number;
241
+ readonly lastError: string | null;
242
+ readonly enqueuedAt: Temporal.Instant;
243
+ /** When it was archived as dead. */
244
+ readonly diedAt: Temporal.Instant | null;
245
+ }
62
246
  interface RunSchedulesOptions {
63
247
  /** Seconds a claimed schedule stays leased. Defaults to 60. */
64
248
  readonly lease?: number;
@@ -69,7 +253,7 @@ interface DrainOptions extends Omit<WorkOptions, "pollInterval" | "maxPollInterv
69
253
  /** Stop claiming after this many ms; claimed jobs still finish. */
70
254
  readonly budgetMs?: number;
71
255
  }
72
- interface DrainRouteOptions<Q extends QueueSchemas> extends Omit<DrainOptions, "onError"> {
256
+ interface DrainRouteOptions<Q extends QueueSchemas> extends Omit<DrainOptions, "onError">, BlockProblemOptions {
73
257
  /**
74
258
  * The bearer token callers send (`Authorization: Bearer <secret>`), such
75
259
  * as Vercel's `CRON_SECRET`. Required.
@@ -82,6 +266,8 @@ interface DrainRouteOptions<Q extends QueueSchemas> extends Omit<DrainOptions, "
82
266
  /** Enqueue due schedules first (the drain scheduler). Defaults to true. */
83
267
  readonly schedules?: boolean;
84
268
  readonly onError?: (error: DbError, job?: Job) => void;
269
+ /** Hooks around each authorized drain, such as cron monitor check-ins. */
270
+ readonly monitor?: DrainMonitor;
85
271
  }
86
272
  interface DrainRouteResult {
87
273
  /** Schedules whose run was enqueued. */
@@ -89,6 +275,39 @@ interface DrainRouteResult {
89
275
  readonly queues: Readonly<Record<string, DrainResult>>;
90
276
  /** True when the budget ran out before every queue was empty. */
91
277
  readonly budgetExhausted: boolean;
278
+ /** Schedule or queue runs that failed as a whole (individual job failures are in `queues`). */
279
+ readonly errors: number;
280
+ }
281
+ /**
282
+ * Hooks around one authorized drain, for cron monitoring such as Sentry
283
+ * check-ins. A hook that throws is reported to `onError` and never fails
284
+ * the drain.
285
+ */
286
+ interface DrainMonitor {
287
+ /** Before schedules run. Its return value (a check-in id) is passed to `onFinish`. */
288
+ onStart?(request: Request): unknown;
289
+ /** After the queues ran, with the result the route answers with. */
290
+ onFinish?(result: DrainRouteResult, started: unknown): unknown;
291
+ }
292
+ /** A schedule as `listSchedules` returns it. */
293
+ interface ScheduleInfo {
294
+ readonly name: string;
295
+ readonly cron: string;
296
+ readonly timeZone: string;
297
+ /** Null under pg_cron, which keeps only the command. */
298
+ readonly queue: string | null;
299
+ readonly tenant: string | null;
300
+ /** The next run; null under pg_cron. */
301
+ readonly nextRun: Temporal.Instant | null;
302
+ readonly lastRun: Temporal.Instant | null;
303
+ /** Set while a drain holds the schedule. */
304
+ readonly leasedUntil: Temporal.Instant | null;
305
+ readonly createdAt: Temporal.Instant | null;
306
+ }
307
+ interface ScheduleFilter {
308
+ /** Schedules whose name starts with this, e.g. `workflow:`. */
309
+ readonly prefix?: string;
310
+ readonly tenant?: string;
92
311
  }
93
312
  interface ClaimOptions {
94
313
  /** Defaults to 1. */
@@ -142,14 +361,42 @@ interface Jobs<Q extends QueueSchemas> {
142
361
  * dead letter of `queue`. SQL connections only.
143
362
  */
144
363
  replay(queue: Extract<keyof Q, string>, id: number): AsyncResult<number | null>;
364
+ /**
365
+ * Counts per queue (ready, in flight, delayed, dead and the oldest
366
+ * waiting message's age), for an admin page. Defaults to every queue
367
+ * `createJobs` declared. SQL connections only.
368
+ */
369
+ stats<N extends Extract<keyof Q, string>>(queues?: readonly N[]): AsyncResult<Record<N, QueueStats>>;
370
+ /** A queue's dead letters, newest first, for an admin page. SQL connections only. */
371
+ listDead<N extends Extract<keyof Q, string>>(queue: N, options?: ListDeadOptions): AsyncResult<DeadJob<PayloadOut<Q, N>>[]>;
372
+ /**
373
+ * Enqueues dead letters again, the `ids` given or the newest `limit`
374
+ * (1000), each with its payload, attempts and dedupe key. Returns how many
375
+ * went back on the queue. SQL connections only.
376
+ */
377
+ retryDead(queue: Extract<keyof Q, string>, options?: RetryDeadOptions): AsyncResult<number>;
145
378
  /**
146
379
  * Enqueues `payload` on a cron schedule (`'0 3 * * *'`, `'@daily'`,
147
380
  * `'30 seconds'`), with pg_cron or the drain scheduler
148
- * (`kits.jobs.options.scheduler`). Re-scheduling a name replaces it. SQL
381
+ * (`sql.modules.jobs.options.scheduler`). Re-scheduling a name replaces it. SQL
149
382
  * connections only.
150
383
  */
151
384
  schedule<N extends Extract<keyof Q, string>>(name: string, cron: string, queue: N, payload: PayloadIn<Q, N>, options?: ScheduleOptions): AsyncResult<void>;
152
385
  unschedule(name: string): AsyncResult<boolean>;
386
+ /**
387
+ * Makes the schedules under `prefix` (and `tenant`) exactly `definitions`:
388
+ * writes each one, keeping the next run of a schedule whose cron and time
389
+ * zone didn't change, and removes the rest. Every payload and cron is
390
+ * checked before anything is written. Run it on deploy or after a
391
+ * settings change; running it twice changes nothing. SQL connections only.
392
+ */
393
+ ensureSchedules(definitions: readonly ScheduleDefinitions<Q>[], options: EnsureSchedulesOptions): AsyncResult<EnsureSchedulesResult>;
394
+ /** Schedules by name prefix or tenant, with their next and last run. SQL connections only. */
395
+ listSchedules(filter?: ScheduleFilter): AsyncResult<ScheduleInfo[]>;
396
+ /** Removes every schedule of a tenant, for tenant deletion; returns how many. SQL connections only. */
397
+ unscheduleAll(filter: {
398
+ readonly tenant: string;
399
+ }): AsyncResult<number>;
153
400
  /**
154
401
  * Enqueues one run of every due schedule (the drain scheduler) and moves
155
402
  * it to its next time. Returns how many ran. Missed runs collapse into one.
@@ -166,80 +413,8 @@ interface Jobs<Q extends QueueSchemas> {
166
413
  /** Polls and processes jobs until `signal` aborts. */
167
414
  work<N extends Extract<keyof Q, string>>(queue: N, handler: JobHandler<PayloadOut<Q, N>>, options?: WorkOptions): Promise<DrainResult>;
168
415
  }
169
- /** The body of a queued message, on pgmq and the table backend alike. */
170
- interface QueueMessageBody {
171
- readonly payload?: unknown;
172
- readonly max_attempts?: number;
173
- readonly last_error?: string;
174
- }
175
- /** A claimed message, as `better_supabase.claim_jobs` returns it. */
176
- interface QueueMessageRow {
177
- readonly id: string | number;
178
- /** 1 on the first claim; a lease token for complete, fail and extend. */
179
- readonly attempts: number;
180
- readonly enqueued_at: Date | string;
181
- readonly visible_until: Date | string;
182
- readonly message: QueueMessageBody | null;
183
- }
184
- /** A schedule whose run is due, claimed by `runSchedules`. */
185
- interface DueSchedule {
186
- readonly name: string;
187
- readonly cron: string;
188
- readonly timeZone: string;
189
- readonly queue: string;
190
- /** The payload as stored, with its recorded context. */
191
- readonly payload: unknown;
192
- readonly nextRun: Temporal.Instant;
193
- }
194
- /** A Supabase client, or anything with `.schema(name).rpc(fn, args)`. */
195
- interface QueueRpcClient {
196
- schema(name: string): {
197
- rpc(fn: string, args: Readonly<Record<string, unknown>>): PromiseLike<{
198
- data: unknown;
199
- error: unknown;
200
- }>;
201
- };
202
- }
203
- /**
204
- * Where `createJobs` stores jobs. `sqlQueueBackend` (the `jobs` SQL kit
205
- * module, on pgmq or its table backend) and `pgmqPublicBackend` ship with
206
- * the package; `testQueueBackend` from `better-supabase/testing` checks
207
- * another one.
208
- */
209
- interface QueueBackend {
210
- readonly apiVersion: 1;
211
- readonly name: string;
212
- /** Whether `extend` works, so long-running batches keep their lease. */
213
- readonly leases: boolean;
214
- send(queue: string, payload: unknown, delay: number, maxAttempts: number, dedupeKey: string | undefined): Promise<number>;
215
- read(queue: string, lease: number, batch: number): Promise<readonly QueueMessageRow[]>;
216
- /** `false` when the lease was lost. */
217
- complete(job: Job): Promise<boolean>;
218
- fail(job: Job, error: string, retryIn: number | undefined): Promise<"queued" | "dead" | null>;
219
- extend(job: Job, lease: number): Promise<boolean>;
220
- /** Re-enqueues a dead letter; `null` when it isn't one. Absent when the backend can't. */
221
- replay?(queue: string, id: number): Promise<number | null>;
222
- schedule(name: string, cron: string, queue: string, payload: unknown, timeZone: string, nextRun: Temporal.Instant): Promise<void>;
223
- unschedule(name: string): Promise<boolean>;
224
- /** Leases due schedules (the drain scheduler); absent or empty with pg_cron. */
225
- dueSchedules?(lease: number, batch: number): Promise<readonly DueSchedule[]>;
226
- /** Moves a schedule from `ran` to `next`; `false` when it changed since the claim. */
227
- advanceSchedule?(name: string, ran: Temporal.Instant, next: Temporal.Instant): Promise<boolean>;
228
- }
229
- /**
230
- * The `jobs` SQL kit module over a service SQL connection. The same
231
- * functions back both `kits.jobs.options.backend` values (pgmq and table)
232
- * and both schedulers.
233
- */
234
- declare function sqlQueueBackend(sql: SqlClient): QueueBackend;
235
- /**
236
- * Supabase's `pgmq_public` RPCs (Integrations, Queues, "Expose Queues via
237
- * PostgREST"). No lease check on complete, no retry delay, no deduplication
238
- * and no schedules: a failed job reappears when its lease ends.
239
- */
240
- declare function pgmqPublicBackend(client: QueueRpcClient): QueueBackend;
241
416
  /**
242
- * Typed jobs on Supabase Queues (pgmq), over the `jobs` SQL kit module.
417
+ * Typed jobs on Supabase Queues (pgmq), over the `jobs` SQL module.
243
418
  *
244
419
  * Pass a service SQL connection (`postgres.admin`, `ctx.sql`) for the full
245
420
  * feature set, a service-role Supabase client to go through the
@@ -247,6 +422,6 @@ declare function pgmqPublicBackend(client: QueueRpcClient): QueueBackend;
247
422
  * any `QueueBackend`. Queue names are lowercase letters, digits and
248
423
  * underscores.
249
424
  */
250
- declare function createJobs<const Q extends QueueSchemas>(source: SqlClient | QueueRpcClient | QueueBackend, queues: Q): Jobs<Q>;
425
+ declare function createJobs<const Q extends QueueSchemas>(source: SqlClient | QueueRpcClient | QueueBackend, queues: Q, options?: BlockTemporalOptions): Jobs<Q>;
251
426
  //#endregion
252
- export { sqlQueueBackend as C, pgmqPublicBackend as S, QueueSchemas as _, DrainRouteResult as a, WorkOptions as b, FailOptions as c, JobHandler as d, Jobs as f, QueueRpcClient as g, QueueMessageRow as h, DrainRouteOptions as i, Job as l, QueueMessageBody as m, DrainOptions as n, DueSchedule as o, QueueBackend as p, DrainResult as r, EnqueueOptions as s, ClaimOptions as t, JobContext as u, RunSchedulesOptions as v, createJobs as x, ScheduleOptions as y };
427
+ export { QueueMessageBody as A, ScheduleInfo as C, DeadJobRow as D, createJobs as E, sqlQueueBackend as F, QueueRpcClient as M, QueueStats as N, DueSchedule as O, pgmqPublicBackend as P, ScheduleFilter as S, WorkOptions as T, QueueSchemas as _, DrainResult as a, ScheduleDefinition as b, EnqueueOptions as c, FailOptions as d, Job as f, ListDeadOptions as g, Jobs as h, DrainOptions as i, QueueMessageRow as j, QueueBackend as k, EnsureSchedulesOptions as l, JobHandler as m, DeadJob as n, DrainRouteOptions as o, JobContext as p, DrainMonitor as r, DrainRouteResult as s, ClaimOptions as t, EnsureSchedulesResult as u, RetryDeadOptions as v, ScheduleOptions as w, ScheduleDefinitions as x, RunSchedulesOptions as y };
@@ -1,8 +1,12 @@
1
- import { s as Impersonator } from "../mfa-CusDgPaD.js";
2
- import { t as AuthSession } from "../view-BEf0diC5.js";
3
- import { r as LiveCountSeed } from "../live-D9W2M5aO.js";
4
- import { n as supportOf, t as SupportView } from "../support-view-Da5peKFg.js";
5
- import { n as MembershipClaim, r as hasEntitlement, t as EntitlementKey } from "../entitlements-DUxU4oHe.js";
6
- import { _ as useBroadcast, a as BetterHooks, b as useSupabase, c as BroadcastOptions, d as LiveCount, f as LiveCountHookOptions, g as useAuth, h as createHooks, i as useNotifications, l as ClaimsOf, m as ProfileOf, n as NotificationsState, o as BetterSupabaseProvider, p as LiveQueryHookOptions, r as UseNotificationsOptions, s as BetterSupabaseProviderProps, t as NotificationSource, u as ClientLike, v as useLiveCount, y as useLiveQuery } from "../index-BGdgBPdf.js";
1
+ import { t as escapeLike } from "../escape-like-ImTK0ps_.js";
2
+ import { s as Impersonator } from "../mfa-Daak8ukG.js";
3
+ import { t as tenantOf } from "../tenant-icPeuUBN.js";
4
+ import { t as AuthSession } from "../view-DbxLNu8L.js";
5
+ import { r as LiveCountSeed } from "../index-DunNRdnT.js";
6
+ import { r as MembershipClaim } from "../entitlements-DHrY2UDZ.js";
7
+ import { n as supportOf, t as SupportView } from "../support-view-33Oi07TT.js";
8
+ import { a as BroadcastOptions, f as UseActionOptions, l as LiveQueryHookOptions, n as ActionInputOf, o as ClientLike, r as ActionResultOf, s as LiveCountHookOptions, t as fieldErrorsOf } from "../field-errors-BFOa7WhB.js";
9
+ import { A as useLiveCount, C as BetterSupabaseProviderProps, D as createHooks, E as ProfileOf, M as useSupabase, O as useAuth, S as BetterSupabaseProvider, T as LiveCount, _ as ActionHandle, a as UploadTarget, b as useActionForm, c as useUpload, d as useDebouncedSearch, f as Presence, g as ActionForm, h as usePresence, i as UploadStatus, j as useLiveQuery, k as useBroadcast, l as DebouncedSearch, m as PresenceTopic, n as SignedUrlSource, o as UseUploadOptions, p as PresenceHookOptions, r as Upload, s as useSignedUrl, t as SignedUrl, u as DebouncedSearchOptions, v as UseActionFormOptions, w as ClaimsOf, x as BetterHooks, y as useAction } from "../index-CtuakVRc.js";
7
10
  import { SessionProvider, SessionProviderProps, useSession, useSupportSession } from "./session.js";
8
- export { type AuthSession, type BetterHooks, BetterSupabaseProvider, type BetterSupabaseProviderProps, type BroadcastOptions, type ClaimsOf, type ClientLike, type EntitlementKey, type Impersonator, type LiveCount, type LiveCountHookOptions, type LiveCountSeed, type LiveQueryHookOptions, type MembershipClaim, type NotificationSource, type NotificationsState, type ProfileOf, SessionProvider, type SessionProviderProps, type SupportView, type UseNotificationsOptions, createHooks, hasEntitlement, supportOf, useAuth, useBroadcast, useLiveCount, useLiveQuery, useNotifications, useSession, useSupabase, useSupportSession };
11
+ import { a as useSignIn, i as SignOut, n as PendingState, o as useSignOut, r as SignIn, t as AuthHookOptions } from "../sign-in-BCV5S2WZ.js";
12
+ 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 Impersonator, type LiveCount, type LiveCountHookOptions, type LiveCountSeed, type LiveQueryHookOptions, type MembershipClaim, type PendingState, type Presence, type PresenceHookOptions, type PresenceTopic, type ProfileOf, SessionProvider, type SessionProviderProps, type SignIn, type SignOut, type SignedUrl, type SignedUrlSource, type SupportView, type Upload, type UploadStatus, type UploadTarget, type UseActionFormOptions, type UseActionOptions, type UseUploadOptions, createHooks, escapeLike, fieldErrorsOf, supportOf, tenantOf, useAction, useActionForm, useAuth, useBroadcast, useDebouncedSearch, useLiveCount, useLiveQuery, usePresence, useSession, useSignIn, useSignOut, useSignedUrl, useSupabase, useSupportSession, useUpload };
@@ -1,6 +1,10 @@
1
1
  "use client";
2
+ import { t as escapeLike } from "../escape-like-DHfx6jRr.js";
2
3
  import { t as supportOf } from "../support-view-g4YLBeqX.js";
3
4
  import { SessionProvider, useSession, useSupportSession } from "./session.js";
4
- import { a as useBroadcast, c as useSupabase, i as useAuth, n as BetterSupabaseProvider, o as useLiveCount, r as createHooks, s as useLiveQuery, t as useNotifications } from "../react-C_s7kiNz.js";
5
- import { t as hasEntitlement } from "../entitlements-CTEBm7IB.js";
6
- export { BetterSupabaseProvider, SessionProvider, createHooks, hasEntitlement, supportOf, useAuth, useBroadcast, useLiveCount, useLiveQuery, useNotifications, useSession, useSupabase, useSupportSession };
5
+ import { a as useBroadcast, c as useLiveQuery, i as useAuth, l as useSupabase, r as createHooks, s as useLiveCount, t as BetterSupabaseProvider } from "../hooks-1BTCJsiw.js";
6
+ import { t as fieldErrorsOf } from "../field-errors-VF1yb8yI.js";
7
+ import { a as useAction, i as usePresence, n as useUpload, o as useActionForm, r as useDebouncedSearch, t as useSignedUrl } from "../react-F80mF4-t.js";
8
+ import { t as tenantOf } from "../tenant-I1TEZ_BX.js";
9
+ import { n as useSignIn, r as useSignOut } from "../sign-in-Cb1mwv6X.js";
10
+ export { BetterSupabaseProvider, SessionProvider, createHooks, escapeLike, fieldErrorsOf, supportOf, tenantOf, useAction, useActionForm, useAuth, useBroadcast, useDebouncedSearch, useLiveCount, useLiveQuery, usePresence, useSession, useSignIn, useSignOut, useSignedUrl, useSupabase, useSupportSession, useUpload };
@@ -0,0 +1,116 @@
1
+ import { t as AuthSnapshot } from "../../bind-Bu_ZNa3W.js";
2
+ import { a as OAuthSignInOptions, i as OAuthClient, n as AuthLinkClient, o as WebBrowserLike, r as AuthLinkResult, t as AuthFailure } from "../../auth-link-BjFPqwLz.js";
3
+ import { n as PendingState } from "../../sign-in-BCV5S2WZ.js";
4
+ import { Provider } from "@supabase/supabase-js";
5
+ import { ReactNode } from "react";
6
+ //#region src/react/native/index.d.ts
7
+ interface IdTokenClient {
8
+ readonly auth: {
9
+ signInWithIdToken(credentials: {
10
+ provider: string;
11
+ token: string;
12
+ nonce?: string;
13
+ access_token?: string;
14
+ }): Promise<{
15
+ readonly error: AuthFailure | null;
16
+ }>;
17
+ };
18
+ }
19
+ export interface UseOAuthOptions extends OAuthSignInOptions {
20
+ /** `expo-web-browser`. */
21
+ readonly browser: WebBrowserLike;
22
+ /** A supabase-js client for apps without `<BetterSupabaseProvider>`. */
23
+ readonly client?: OAuthClient & IdTokenClient;
24
+ readonly onSuccess?: () => void;
25
+ }
26
+ export interface OAuth extends PendingState {
27
+ /** Opens the provider in an auth session and finishes the sign-in. A cancelled browser is no error. */
28
+ readonly signIn: (provider: Provider) => Promise<AuthFailure | undefined>;
29
+ /**
30
+ * Native sign-in with an ID token from `expo-apple-authentication` or
31
+ * `@react-native-google-signin/google-signin`.
32
+ */
33
+ readonly idToken: (credentials: {
34
+ readonly provider: "apple" | "google" | (string & {});
35
+ readonly token: string;
36
+ readonly nonce?: string;
37
+ readonly accessToken?: string;
38
+ }) => Promise<AuthFailure | undefined>;
39
+ }
40
+ /**
41
+ * OAuth and native ID-token sign-in on a device, with `pending` and
42
+ * `error` state.
43
+ *
44
+ * ```tsx
45
+ * import * as WebBrowser from 'expo-web-browser';
46
+ * const oauth = useOAuth({ browser: WebBrowser, redirectTo: Linking.createURL('auth/callback') });
47
+ * <Button title="GitHub" disabled={oauth.pending} onPress={() => oauth.signIn('github')} />
48
+ * ```
49
+ */
50
+ export declare function useOAuth(options: UseOAuthOptions): OAuth;
51
+ /** The part of React Native's `Linking` that `useAuthDeepLinks` uses. */
52
+ export interface LinkingLike {
53
+ getInitialURL(): Promise<string | null>;
54
+ addEventListener(type: "url", listener: (event: {
55
+ readonly url: string;
56
+ }) => void): {
57
+ remove(): void;
58
+ };
59
+ }
60
+ export interface AuthDeepLinksOptions {
61
+ readonly client?: AuthLinkClient;
62
+ /** Called with each auth link's outcome, e.g. to navigate after a magic link. */
63
+ readonly onResult?: (result: Exclude<AuthLinkResult, {
64
+ type: "none";
65
+ }>) => void;
66
+ }
67
+ /**
68
+ * Finishes sign-ins from deep links while mounted: the URL that opened the
69
+ * app and every link after it (magic links, email confirmations, OAuth
70
+ * redirects outside an auth session). Returns the last auth link's outcome.
71
+ *
72
+ * ```tsx
73
+ * import * as Linking from 'expo-linking';
74
+ * useAuthDeepLinks(Linking, { onResult: (r) => r.type === 'signed-in' && router.replace('/') });
75
+ * ```
76
+ */
77
+ export declare function useAuthDeepLinks(linking: LinkingLike, options?: AuthDeepLinksOptions): AuthLinkResult;
78
+ export interface ProtectedRouteOptions {
79
+ /** `useSegments()` from expo-router. */
80
+ readonly segments: readonly string[];
81
+ /** `useRouter()` from expo-router. */
82
+ readonly router: {
83
+ replace(href: string): void;
84
+ };
85
+ /** The route group signed-out users may see. Defaults to `(auth)`. */
86
+ readonly publicGroup?: string;
87
+ /** Defaults to `/sign-in`. */
88
+ readonly signInHref?: string;
89
+ /** Where a signed-in user on a public screen goes. Defaults to `/`. */
90
+ readonly homeHref?: string;
91
+ }
92
+ /**
93
+ * Redirects with expo-router: signed-out users outside the public group go
94
+ * to `signInHref`, signed-in users inside it go to `homeHref`. Returns the
95
+ * auth state; render a splash screen while it is `loading`.
96
+ *
97
+ * ```tsx
98
+ * const status = useProtectedRoute({ segments: useSegments(), router: useRouter() });
99
+ * ```
100
+ */
101
+ export declare function useProtectedRoute(options: ProtectedRouteOptions): AuthSnapshot["status"];
102
+ export interface AuthGateProps {
103
+ /** Shown while the session loads. Defaults to nothing. */
104
+ readonly fallback?: ReactNode;
105
+ /** Shown to signed-out users, e.g. the sign-in screen. */
106
+ readonly signedOut?: ReactNode;
107
+ readonly children?: ReactNode;
108
+ }
109
+ /**
110
+ * Renders `children` for signed-in users, `signedOut` otherwise, and
111
+ * `fallback` while the session loads. With expo-router, `Stack.Protected`
112
+ * takes `useAuth().status === 'signed-in'` as its `guard` instead.
113
+ */
114
+ export declare function AuthGate(props: AuthGateProps): ReactNode;
115
+ //#endregion
116
+ export type { AuthFailure, AuthLinkResult, OAuthSignInOptions, WebBrowserLike };