better-supabase 0.7.0 → 0.8.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 (500) hide show
  1. package/README.md +6 -2
  2. package/dist/{access-sql-B0dF-SoF.js → access-sql-CrSbK1q-.js} +1 -1
  3. package/dist/{adapter-B-tL8hqg.js → adapter-CN45ibbV.js} +663 -157
  4. package/dist/{agents-CVHGd7It.d.ts → agents-BY_LQXtQ.d.ts} +4 -4
  5. package/dist/{ai-cache-CBWs1W0k.js → ai-cache-Dfgk8nBT.js} +2 -1
  6. package/dist/{ai-cache-DaDu_G5L.d.ts → ai-cache-DrUMMgp6.d.ts} +4 -4
  7. package/dist/{ai-chat-B24UI962.js → ai-chat-CVLRWbtS.js} +4 -3
  8. package/dist/{ai-chat-7amvXjmQ.d.ts → ai-chat-DXkMy74O.d.ts} +5 -5
  9. package/dist/{ai-files-CSPNswUY.js → ai-files-CioLu5du.js} +5 -4
  10. package/dist/ai-message-DfaP8sis.js +14 -0
  11. package/dist/ai-sdk/agents/index.d.ts +4 -4
  12. package/dist/ai-sdk/batches/index.d.ts +4 -4
  13. package/dist/ai-sdk/batches/index.js +4 -4
  14. package/dist/ai-sdk/cache/index.d.ts +2 -2
  15. package/dist/ai-sdk/cache/index.js +2 -2
  16. package/dist/ai-sdk/chat/index.d.ts +1 -1
  17. package/dist/ai-sdk/chat/index.js +8 -20
  18. package/dist/ai-sdk/embeddings/index.d.ts +2 -2
  19. package/dist/ai-sdk/files/index.d.ts +3 -3
  20. package/dist/ai-sdk/files/index.js +4 -4
  21. package/dist/ai-sdk/index.d.ts +37 -9
  22. package/dist/ai-sdk/index.js +3 -2
  23. package/dist/ai-sdk/mcp/index.d.ts +43 -6
  24. package/dist/ai-sdk/mcp/index.js +36 -7
  25. package/dist/ai-sdk/memory/index.d.ts +2 -2
  26. package/dist/ai-sdk/memory/index.js +1 -1
  27. package/dist/ai-sdk/workflow/index.d.ts +6 -6
  28. package/dist/ai-sdk/workflow/index.js +13 -24
  29. package/dist/{ai-tasks-Cd1HMFvB.d.ts → ai-tasks-BRQ6iQLc.d.ts} +4 -4
  30. package/dist/{announcements-ZRGnScWI.d.ts → announcements-Bouy0Ski.d.ts} +3 -3
  31. package/dist/{announcements-CiyOs-xP.js → announcements-p_BFofiR.js} +1 -1
  32. package/dist/api-Dnf2q-Ht.d.ts +370 -0
  33. package/dist/api-DtHFC037.js +676 -0
  34. package/dist/{api-keys-CIjghYjV.d.ts → api-keys-C8BlF3L2.d.ts} +4 -4
  35. package/dist/arazzo/index.d.ts +255 -0
  36. package/dist/arazzo/index.js +622 -0
  37. package/dist/{assistant-DwdpDH1q.d.ts → assistant-DBlFDZsi.d.ts} +5 -5
  38. package/dist/astro/index.d.ts +7 -7
  39. package/dist/astro/index.js +7 -7
  40. package/dist/asyncapi/index.d.ts +103 -0
  41. package/dist/asyncapi/index.js +569 -0
  42. package/dist/authorizer-ayxUDXXP.js +126 -0
  43. package/dist/authorizer-eiOjo-3l.d.ts +73 -0
  44. package/dist/better-result/index.d.ts +118 -0
  45. package/dist/better-result/index.js +64 -0
  46. package/dist/{bind-l4kAvYSv.js → bind-ButSzrHe.js} +1 -1
  47. package/dist/{bind-Bu_ZNa3W.d.ts → bind-CQ5mPyX1.d.ts} +3 -3
  48. package/dist/{block-events-CrT8r7Fe.js → block-events-DTxU5tfr.js} +18 -3
  49. package/dist/{block-fields-GFkxl4dP.js → block-fields-CroxUuF2.js} +3 -3
  50. package/dist/{block-fields-SJ6fEf3o.d.ts → block-fields-D1pfrcIY.d.ts} +2 -2
  51. package/dist/{block-helpers-CKtbFcRv.d.ts → block-helpers-C0Xj8War.d.ts} +2 -2
  52. package/dist/{block-helpers-DWHxHsEQ.js → block-helpers-Cy3pB96I.js} +41 -9
  53. package/dist/{block-hooks-BmjMyXTa.js → block-hooks-BPNMIlLl.js} +3 -3
  54. package/dist/{block-hooks-plbZ0AbJ.d.ts → block-hooks-DaOVC7SC.d.ts} +3 -3
  55. package/dist/{block-transport-BLr-ZgLc.js → block-transport-bAKh-dGc.js} +28 -2
  56. package/dist/{block-transport-DvaoPuZ9.d.ts → block-transport-inD4fFq-.d.ts} +24 -2
  57. package/dist/blocks/agents/index.d.ts +3 -3
  58. package/dist/blocks/agents/index.js +5 -4
  59. package/dist/blocks/ai-cache/index.d.ts +3 -3
  60. package/dist/blocks/ai-cache/index.js +3 -3
  61. package/dist/blocks/ai-chat/index.d.ts +9 -4
  62. package/dist/blocks/ai-chat/index.js +5 -5
  63. package/dist/blocks/ai-chat/react/index.d.ts +3 -3
  64. package/dist/blocks/ai-chat/react/index.js +5 -5
  65. package/dist/blocks/ai-files/index.d.ts +3 -3
  66. package/dist/blocks/ai-files/index.js +3 -3
  67. package/dist/blocks/ai-providers/index.d.ts +3 -3
  68. package/dist/blocks/ai-providers/index.js +8 -7
  69. package/dist/blocks/ai-tasks/index.d.ts +3 -3
  70. package/dist/blocks/ai-tasks/index.js +7 -6
  71. package/dist/blocks/announcements/index.d.ts +3 -3
  72. package/dist/blocks/announcements/index.js +3 -3
  73. package/dist/blocks/announcements/react/index.d.ts +3 -3
  74. package/dist/blocks/announcements/react/index.js +3 -3
  75. package/dist/blocks/api-keys/index.d.ts +5 -5
  76. package/dist/blocks/api-keys/index.js +8 -8
  77. package/dist/blocks/attachments/index.d.ts +12 -8
  78. package/dist/blocks/attachments/index.js +22 -13
  79. package/dist/blocks/audit/index.d.ts +21 -10
  80. package/dist/blocks/audit/index.js +30 -11
  81. package/dist/blocks/billing/index.d.ts +11 -9
  82. package/dist/blocks/billing/index.js +15 -15
  83. package/dist/blocks/comments/index.d.ts +8 -8
  84. package/dist/blocks/comments/index.js +8 -7
  85. package/dist/blocks/connectors/index.d.ts +3 -3
  86. package/dist/blocks/connectors/index.js +7 -6
  87. package/dist/blocks/data-lifecycle/index.d.ts +12 -8
  88. package/dist/blocks/data-lifecycle/index.js +13 -8
  89. package/dist/blocks/entitlements/index.d.ts +3 -3
  90. package/dist/blocks/entitlements/index.js +1 -1
  91. package/dist/blocks/flags/index.d.ts +4 -4
  92. package/dist/blocks/flags/index.js +4 -3
  93. package/dist/blocks/inbox/index.d.ts +3 -3
  94. package/dist/blocks/inbox/index.js +4 -5
  95. package/dist/blocks/inbox/react/index.d.ts +1 -1
  96. package/dist/blocks/inbox/react/index.js +1 -1
  97. package/dist/blocks/inbox/react/server.d.ts +1 -1
  98. package/dist/blocks/index.d.ts +10 -10
  99. package/dist/blocks/index.js +6 -6
  100. package/dist/blocks/jobs/index.d.ts +48 -32
  101. package/dist/blocks/jobs/index.js +44 -287
  102. package/dist/blocks/knowledge/index.d.ts +3 -3
  103. package/dist/blocks/knowledge/index.js +3 -3
  104. package/dist/blocks/memory/index.d.ts +4 -4
  105. package/dist/blocks/memory/index.js +7 -6
  106. package/dist/blocks/notifications/index.d.ts +11 -9
  107. package/dist/blocks/notifications/index.js +20 -25
  108. package/dist/blocks/notifications/react/index.d.ts +1 -1
  109. package/dist/blocks/notifications/react/index.js +1 -1
  110. package/dist/blocks/onboarding/index.d.ts +3 -3
  111. package/dist/blocks/onboarding/index.js +3 -3
  112. package/dist/blocks/onboarding/react/index.d.ts +2 -2
  113. package/dist/blocks/onboarding/react/index.js +2 -2
  114. package/dist/blocks/onboarding/react/server.d.ts +1 -1
  115. package/dist/blocks/organizations/index.d.ts +9 -9
  116. package/dist/blocks/organizations/index.js +11 -18
  117. package/dist/blocks/outbox/index.d.ts +2 -2
  118. package/dist/blocks/outbox/index.js +16 -25
  119. package/dist/blocks/profiles/index.d.ts +7 -7
  120. package/dist/blocks/profiles/index.js +7 -6
  121. package/dist/blocks/push/index.d.ts +4 -4
  122. package/dist/blocks/push/index.js +3 -3
  123. package/dist/blocks/settings/index.d.ts +4 -4
  124. package/dist/blocks/settings/index.js +7 -6
  125. package/dist/blocks/sso/index.d.ts +5 -5
  126. package/dist/blocks/sso/index.js +6 -5
  127. package/dist/blocks/usage/index.d.ts +3 -3
  128. package/dist/blocks/usage/index.js +5 -4
  129. package/dist/blocks/waitlist/index.d.ts +5 -5
  130. package/dist/blocks/waitlist/index.js +5 -4
  131. package/dist/blocks/webhooks/index.d.ts +22 -13
  132. package/dist/blocks/webhooks/index.js +41 -70
  133. package/dist/blocks/workflow-builder/index.d.ts +4 -4
  134. package/dist/blocks/workflow-builder/index.js +3 -3
  135. package/dist/blocks/workflow-builder/react/index.d.ts +4 -4
  136. package/dist/blocks/workflow-builder/react/index.js +4 -4
  137. package/dist/blocks/workflows/index.d.ts +3 -3
  138. package/dist/blocks/workflows/index.js +3 -3
  139. package/dist/blocks/workflows/react/index.d.ts +3 -3
  140. package/dist/blocks/workflows/react/index.js +3 -3
  141. package/dist/build-hPwk3_X5.js +1296 -0
  142. package/dist/{build-BXIzE6Xv.js → build-meLuYGri.js} +3 -3
  143. package/dist/casing-DdFWEtqr.js +16 -0
  144. package/dist/chat-sdk/index.d.ts +6 -6
  145. package/dist/chat-sdk/index.js +5 -4
  146. package/dist/chat-sdk/react/index.d.ts +1 -1
  147. package/dist/chat-sdk/react/server.d.ts +1 -1
  148. package/dist/{claims-DDBQT6BK.js → claims-0KZVT804.js} +1 -1
  149. package/dist/cli/add-1dc5wM5k.js +69 -0
  150. package/dist/cli/arazzo-1.0-BalU61-_.js +532 -0
  151. package/dist/cli/arazzo-1.1-Bnfasbun.js +705 -0
  152. package/dist/cli/asyncapi-3.0.0-C78dBjR6.js +5593 -0
  153. package/dist/cli/asyncapi-3.1.0-g-7aIfV1.js +5833 -0
  154. package/dist/cli/bin.js +4 -4
  155. package/dist/cli/cache-CIfA-jBV.js +483 -0
  156. package/dist/cli/{codemod-Bl_tQpHn.js → codemod-JVlTQQG2.js} +4 -4
  157. package/dist/cli/{command-CK14fP91.js → command-DV-StG1x.js} +5 -0
  158. package/dist/cli/{config-DU7EJImt.js → config-C2Pz2_4A.js} +7 -4
  159. package/dist/cli/config-DpbF8ML3.js +2 -0
  160. package/dist/cli/{config-NiPxAmUF.js → config-M-WzL9O2.js} +116 -18
  161. package/dist/cli/{db-DOBPt660.js → db-BkcfOlyB.js} +2 -1
  162. package/dist/cli/{diff-SjkO5rNr.js → diff-D1jGdb3Y.js} +1 -1
  163. package/dist/cli/{doctor-CVdnLahA.js → doctor-VcDtuusV.js} +317 -222
  164. package/dist/cli/emit-BHHfwUoT.js +1136 -0
  165. package/dist/cli/{env-qXgyMV6r.js → env-B--LMhEe.js} +13 -10
  166. package/dist/cli/env-vzBG90Um.js +2 -0
  167. package/dist/cli/{env-CJLbUVPB.js → env-zHJtMIBo.js} +11 -3
  168. package/dist/cli/{errors-4v4DTtda.js → errors-CqTLXe2M.js} +18 -2
  169. package/dist/cli/{fastest-levenshtein-CFN-lNDv.js → fastest-levenshtein-CF7BCi9l.js} +1 -1
  170. package/dist/cli/files-BVupXPIC.js +34 -0
  171. package/dist/cli/gen-DmVj3u4L.js +322 -0
  172. package/dist/cli/{init-Cr6arjXU.js → glue-C1UE8gQN.js} +16 -313
  173. package/dist/cli/index.d.ts +59 -31
  174. package/dist/cli/index.js +8 -6
  175. package/dist/cli/init-CVZ3s5kl.js +258 -0
  176. package/dist/cli/{introspect-Bzuv1HHj.js → introspect-BToGNfm-.js} +14 -14
  177. package/dist/cli/{io-DI1mTdSA.js → io-CFzJVJ68.js} +5 -1
  178. package/dist/cli/{keys-BGCnnb-s.js → keys-CJhtIxJ3.js} +4 -4
  179. package/dist/cli/metadata-DSRKCaf-.js +133 -0
  180. package/dist/cli/names-D6LrQnOv.js +6 -0
  181. package/dist/cli/openapi-3.0-t7xwkuRH.js +928 -0
  182. package/dist/cli/openapi-3.1-CVze7tBS.js +870 -0
  183. package/dist/cli/openapi-3.2-CFoMYM01.js +1031 -0
  184. package/dist/cli/{openapi-BlRJ18s3.js → openapi-DWa4Ir1q.js} +8 -14
  185. package/dist/cli/prompts-BdeVmVpg.js +2 -0
  186. package/dist/cli/{prompts-BNcNfAve.js → prompts-DZJB1nTw.js} +6 -6
  187. package/dist/cli/{rolldown-runtime-BPOCksWG.js → rolldown-runtime-CMFfr-1z.js} +3 -1
  188. package/dist/cli/run-DA6_lg3w.js +389 -0
  189. package/dist/cli/run-DuN1MX-7.js +705 -0
  190. package/dist/cli/scaffold-5DenHSxF.js +292 -0
  191. package/dist/cli/scaffold-CwQUMFRb.js +2 -0
  192. package/dist/cli/{seed-DQzqT7LP.js → seed-CzBmrGON.js} +14 -18
  193. package/dist/cli/seed-DOmit9Hq.js +2 -0
  194. package/dist/cli/{skills-QQs4q68J.js → skills-CnO8QFS7.js} +7 -6
  195. package/dist/cli/snapshot-Bstk6ulj.js +287 -0
  196. package/dist/cli/source-args-BYfq6imV.js +31 -0
  197. package/dist/cli/spec-CzosTYm3.js +7438 -0
  198. package/dist/cli/spec-T_0Bcyw7.js +2 -0
  199. package/dist/cli/{sql-B8csQPyn.js → sql-BKOOQAX3.js} +240 -218
  200. package/dist/cli/sql-DJrNDxQm.js +3 -0
  201. package/dist/cli/{style-C0NFdJRL.js → style-CB3vxgh0.js} +3 -3
  202. package/dist/cli/typegen-Demi5-VQ.js +486 -0
  203. package/dist/cli/validate-Ca13ktgz.js +7522 -0
  204. package/dist/cli/{version-Bp4fyubI.js → version-B4k0aUxS.js} +1 -1
  205. package/dist/client/index.d.ts +4 -3
  206. package/dist/client/index.js +60 -3
  207. package/dist/client/native/index.d.ts +3 -3
  208. package/dist/client/native/index.js +3 -3
  209. package/dist/{client-CI0Z2zWX.js → client-wxeTQFtB.js} +36 -3
  210. package/dist/{clone-BfgmLU90.js → clone-dN9XOL1K.js} +9 -1
  211. package/dist/{cloud-event-BnmD5fb9.js → cloud-event-CTh9Sr5w.js} +16 -2
  212. package/dist/{cloud-event-C1JCc1bH.d.ts → cloud-event-Dune0KI7.d.ts} +16 -2
  213. package/dist/{compiler-DY_wkj4R.d.ts → compiler-V1qvcST1.d.ts} +2 -2
  214. package/dist/{compose-BIBNgAnq.js → compose-BHej1acw.js} +3 -3
  215. package/dist/{composite-CpHLEo-G.d.ts → composite-CWAJTRBF.d.ts} +6 -6
  216. package/dist/{composite-C6I8ZyaF.js → composite-zTe0TCqj.js} +4 -4
  217. package/dist/config/index.d.ts +3 -4
  218. package/dist/config/index.js +4 -4
  219. package/dist/config-DlKvtt95.js +540 -0
  220. package/dist/{connector-Dv8kK0MO.d.ts → connector-CySQEFcW.d.ts} +1 -1
  221. package/dist/{connectors-CrpknU0P.d.ts → connectors--PGhmiu0.d.ts} +4 -4
  222. package/dist/{context-BCrWe7ow.d.ts → context-DsV2SueA.d.ts} +11 -2
  223. package/dist/context-nPDvQ-Zl.js +41 -0
  224. package/dist/credentials/index.d.ts +5 -5
  225. package/dist/credentials/index.js +9 -17
  226. package/dist/{cron-DVPUg5k3.js → cron-D25Ukpxy.js} +1 -1
  227. package/dist/cron-route-D2AN9SA1.js +24 -0
  228. package/dist/{csv-DCK-PT1n.js → csv-BZnHA1Py.js} +1 -1
  229. package/dist/{define-B-TVjC25.js → define-CFQcvM20.js} +263 -229
  230. package/dist/{define-CJJkkr1-.d.ts → define-DmcfoNXB.d.ts} +136 -111
  231. package/dist/edge/index.d.ts +66 -13
  232. package/dist/edge/index.js +65 -39
  233. package/dist/elysia/index.d.ts +1 -1
  234. package/dist/elysia/index.js +1 -1
  235. package/dist/{embeddings-C9KGQnXt.d.ts → embeddings-B4vhS-dY.d.ts} +1 -1
  236. package/dist/{ended-XjeGQ5XW.d.ts → ended-CcvcRqEd.d.ts} +7 -1
  237. package/dist/{entitlements-DRl6ZJUm.js → entitlements-BYFf0Cdh.js} +2 -2
  238. package/dist/{entitlements-BKSVGtrG.d.ts → entitlements-Ds8qoYZ-.d.ts} +1 -1
  239. package/dist/env/index.d.ts +1 -1
  240. package/dist/env/index.js +9 -2
  241. package/dist/{errors-B11Duf73.js → errors-2M6CKMP4.js} +5 -0
  242. package/dist/{errors-DLjJHPLK.js → errors-rZ7VIqp6.js} +2 -2
  243. package/dist/{escape-like-ImTK0ps_.d.ts → escape-like-DDWoHzh_.d.ts} +1 -1
  244. package/dist/eve/index.d.ts +5 -5
  245. package/dist/eve/index.js +5 -11
  246. package/dist/{eve-gT2Fpjut.d.ts → eve-CoAIcCkq.d.ts} +2 -2
  247. package/dist/events/index.d.ts +4 -4
  248. package/dist/events/index.js +7 -2
  249. package/dist/{events-DWDhx77e.d.ts → events-D1BOCll8.d.ts} +6 -4
  250. package/dist/{executor-Bq28caBo.js → executor-B-fD7DLt.js} +52 -35
  251. package/dist/executor-B_Hfobee.js +162 -0
  252. package/dist/{executor-BVBFM86G.d.ts → executor-CpxLPCiz.d.ts} +1 -1
  253. package/dist/{executor-CaWigTyR.d.ts → executor-DfEtf0cq.d.ts} +43 -27
  254. package/dist/{executor-DvsBbNBS.d.ts → executor-Drzu3dBK.d.ts} +2 -2
  255. package/dist/{executor-DbvExCFC.d.ts → executor-ngjKL_Pe.d.ts} +2 -2
  256. package/dist/expo/index.d.ts +4 -4
  257. package/dist/expo/index.js +6 -6
  258. package/dist/expo-sqlite/index.d.ts +3 -3
  259. package/dist/expo-sqlite/index.js +2 -2
  260. package/dist/extra-CGQ2_q3S.js +10 -0
  261. package/dist/{field-errors-BFOa7WhB.d.ts → field-errors-DIe9XYWL.d.ts} +17 -7
  262. package/dist/{field-errors-VF1yb8yI.js → field-errors-DZVRWRkf.js} +1 -1
  263. package/dist/format-DTXdu8ya.d.ts +70 -0
  264. package/dist/{framework-KIPvRQJU.d.ts → framework-148t1m3C.d.ts} +5 -5
  265. package/dist/{framework-BDCpJI7o.js → framework-3ey3QmrO.js} +2 -2
  266. package/dist/function-contract-BcZenXMO.d.ts +8 -0
  267. package/dist/{gateway-C1ssRHnf.d.ts → gateway-S9vicgeo.d.ts} +4 -4
  268. package/dist/{guards-BnzDvFrz.js → guards-6F2bCtQR.js} +3 -1
  269. package/dist/h3/index.d.ts +1 -1
  270. package/dist/h3/index.js +1 -1
  271. package/dist/h3/v1/index.d.ts +1 -1
  272. package/dist/h3/v1/index.js +1 -1
  273. package/dist/{message-CaKlqdsX.js → history-GH1HJWQV.js} +65 -13
  274. package/dist/hmac-DCud0myt.js +22 -0
  275. package/dist/hono/index.d.ts +19 -14
  276. package/dist/hono/index.js +21 -16
  277. package/dist/{hooks-1BTCJsiw.js → hooks-Bhza9Hnr.js} +68 -100
  278. package/dist/http-sbmBe5d2.js +25 -0
  279. package/dist/{inbox-i7E1ppo6.d.ts → inbox-Cd1KCEBL.d.ts} +3 -3
  280. package/dist/index-B72Rvv_j.d.ts +89 -0
  281. package/dist/{index-DunNRdnT.d.ts → index-BCHR4Ucl.d.ts} +4 -4
  282. package/dist/{index-CLg87OBW.d.ts → index-BUK7jUzR.d.ts} +6 -0
  283. package/dist/{config-D44Y7PAv.d.ts → index-Ba1SI-uO.d.ts} +625 -278
  284. package/dist/{index-D48jVS-N.d.ts → index-BfxOaOYs.d.ts} +4 -5
  285. package/dist/{index-ClmjK_o-.d.ts → index-CicIyqOe.d.ts} +4 -4
  286. package/dist/{index-ACiNPN4Z.d.ts → index-D69h4QqD.d.ts} +1 -1
  287. package/dist/index-DG2SUXDQ.d.ts +58 -0
  288. package/dist/{index-Bepi-Hgg.d.ts → index-DoNVLHOU.d.ts} +3 -3
  289. package/dist/{index-CdZKQF98.d.ts → index-R274XFlg.d.ts} +1 -1
  290. package/dist/{index-CewnYSpv.d.ts → index-_4R4b01v.d.ts} +8 -18
  291. package/dist/index.d.ts +89 -14
  292. package/dist/index.js +12 -11
  293. package/dist/{json-schema-CvER4kgT.js → json-schema-CT4tvrkA.js} +148 -102
  294. package/dist/{kit-Fm-Fv7q5.js → kit-BhHr9T9v.js} +36 -10
  295. package/dist/{kit-CkNzZUqv.d.ts → kit-W99LCPBS.d.ts} +13 -7
  296. package/dist/{knowledge-BXBbT0Tr.d.ts → knowledge-CAReFpRA.d.ts} +5 -5
  297. package/dist/{knowledge-CDmiMLew.js → knowledge-DnHtb64A.js} +4 -3
  298. package/dist/list/index.d.ts +1 -2
  299. package/dist/{list-query-BRt-zDF7.d.ts → list-query-D3JQeEL7.d.ts} +4 -4
  300. package/dist/mcp/index.d.ts +49 -19
  301. package/dist/mcp/index.js +158 -94
  302. package/dist/mcp/sdk/index.d.ts +38 -6
  303. package/dist/mcp/sdk/index.js +88 -6
  304. package/dist/{message-CfDoR0Y6.d.ts → message-B0fNJgq8.d.ts} +1 -2
  305. package/dist/{messages-B9-5887d.js → messages-CJoHHCWT.js} +4 -205
  306. package/dist/{mfa-Daak8ukG.d.ts → mfa-SZc9YYyb.d.ts} +1 -1
  307. package/dist/model-OgBxvk3N.d.ts +300 -0
  308. package/dist/model-messages-Cxw_Up4f.js +206 -0
  309. package/dist/model-messages-D4GZllOD.d.ts +34 -0
  310. package/dist/modules-DksjZyMW.js +77 -0
  311. package/dist/nestjs/index.d.ts +2 -2
  312. package/dist/nestjs/index.js +1 -1
  313. package/dist/next/index.d.ts +105 -55
  314. package/dist/next/index.js +204 -170
  315. package/dist/node/index.d.ts +2 -2
  316. package/dist/node/index.js +1 -1
  317. package/dist/{onboarding-BZGHYJks.d.ts → onboarding-LZvlK1P4.d.ts} +3 -3
  318. package/dist/openapi/index.d.ts +4 -2
  319. package/dist/openapi/index.js +21 -343
  320. package/dist/optional-peer-D1pi-skw.js +24 -0
  321. package/dist/orpc/index.d.ts +8 -8
  322. package/dist/orpc/index.js +21 -20
  323. package/dist/otel/index.d.ts +3 -3
  324. package/dist/otel/index.js +7 -7
  325. package/dist/{outbox-Cq7pPYvl.d.ts → outbox-DZfAvfzC.d.ts} +6 -6
  326. package/dist/overlay/index.d.ts +233 -0
  327. package/dist/overlay/index.js +554 -0
  328. package/dist/{plugin-FGY8UhYm.d.ts → plugin-CPK2HsbY.d.ts} +42 -3
  329. package/dist/plugins/actor/index.d.ts +1 -1
  330. package/dist/plugins/actor/index.js +1 -1
  331. package/dist/plugins/rules/index.d.ts +2 -2
  332. package/dist/plugins/rules/index.js +1 -1
  333. package/dist/plugins/soft-delete/index.d.ts +3 -3
  334. package/dist/plugins/soft-delete/index.js +9 -2
  335. package/dist/plugins/tenant/index.d.ts +7 -2
  336. package/dist/plugins/tenant/index.js +16 -2
  337. package/dist/plugins/timestamps/index.d.ts +1 -1
  338. package/dist/plugins/timestamps/index.js +8 -1
  339. package/dist/plugins/validation/index.d.ts +2 -2
  340. package/dist/plugins/validation/index.js +4 -4
  341. package/dist/{pool-CAu2nLrL.d.ts → pool-gkhbGp2E.d.ts} +2 -2
  342. package/dist/postgres/index.d.ts +4 -4
  343. package/dist/postgres/index.js +2 -1
  344. package/dist/{postgrest-BLVdEnfe.d.ts → postgrest-BUqLag2Q.d.ts} +1 -1
  345. package/dist/powersync/index.d.ts +5 -5
  346. package/dist/powersync/index.js +4 -4
  347. package/dist/powersync/react/index.d.ts +3 -3
  348. package/dist/powersync/react/index.js +1 -1
  349. package/dist/{problem-BreOl8b8.js → problem-CJvFeGu7.js} +13 -2
  350. package/dist/{problem-DD8LZFjc.d.ts → problem-TvGdxO1t.d.ts} +7 -1
  351. package/dist/{provider-Di3sRutW.js → provider-DxRTex4x.js} +1 -1
  352. package/dist/{provider-D-UEMvSD.d.ts → provider-ib9wzUDz.d.ts} +2 -2
  353. package/dist/query/index.d.ts +2 -2
  354. package/dist/query/index.js +1 -1
  355. package/dist/{query-BQ-NaZon.js → query-Ctz-qKRx.js} +1 -1
  356. package/dist/rate-limit-Bw7HgmFj.js +260 -0
  357. package/dist/react/index.d.ts +9 -9
  358. package/dist/react/index.js +4 -4
  359. package/dist/react/native/index.d.ts +1 -1
  360. package/dist/react/native/index.js +2 -2
  361. package/dist/react/server.d.ts +10 -10
  362. package/dist/react/server.js +3 -3
  363. package/dist/react/session.d.ts +2 -2
  364. package/dist/{react-F80mF4-t.js → react-Bmpo59D7.js} +4 -4
  365. package/dist/react-router/index.d.ts +6 -6
  366. package/dist/react-router/index.js +9 -11
  367. package/dist/{read-set-DuKWC9Mj.js → read-set-DAeWhqPf.js} +2 -2
  368. package/dist/realtime/index.d.ts +3 -3
  369. package/dist/realtime/index.js +30 -36
  370. package/dist/{refusal-DhSU2Vvr.d.ts → refusal-CFI8-5nf.d.ts} +4 -1
  371. package/dist/{refusal-CeJWxmkH.js → refusal-K78A1Vmq.js} +5 -5
  372. package/dist/{resolve-tJZY3FEa.js → resolve-Bvgf3ut_.js} +131 -42
  373. package/dist/{resolve-ChTYeTEl.d.ts → resolve-MxXVWyhd.d.ts} +12 -8
  374. package/dist/resource--vTrBe6I.d.ts +103 -0
  375. package/dist/resource-BqNqlYg9.js +91 -0
  376. package/dist/resource-DA811u_4.js +463 -0
  377. package/dist/resource-execute-rbKvuCsY.d.ts +12 -0
  378. package/dist/resource-schemas-BJ518zFH.js +79 -0
  379. package/dist/resource-types-CqB6GWGT.d.ts +141 -0
  380. package/dist/resources-BVYPnuLo.js +56 -0
  381. package/dist/resources-DZSk8tXJ.d.ts +7 -0
  382. package/dist/{respond-DprrgyXX.d.ts → respond-Cw-zanCm.d.ts} +3 -3
  383. package/dist/{respond-BUgsXNgk.js → respond-volM3ByS.js} +4 -4
  384. package/dist/{result-D7y2fT87.d.ts → result-BchM1XZn.d.ts} +7 -1
  385. package/dist/{result-DzUbqgdW.js → result-DEqHCMKP.js} +1 -1
  386. package/dist/server/index.d.ts +81 -19
  387. package/dist/server/index.js +16 -14
  388. package/dist/{server-ZSJ9rCcV.d.ts → server-types-CrAmZ8jv.d.ts} +110 -36
  389. package/dist/{shared-CxWmcyqB.js → shared-DHjhfRdV.js} +2 -15
  390. package/dist/shared-DTneRoxi.js +14 -0
  391. package/dist/{sign-in-Cb1mwv6X.js → sign-in-D_yoP0PF.js} +1 -1
  392. package/dist/signatures-BRS_p3WD.d.ts +34 -0
  393. package/dist/signatures-DsWv_bYR.js +103 -0
  394. package/dist/{signers-4y62_VIi.d.ts → signers-cpdmZYrv.d.ts} +1 -1
  395. package/dist/solid/index.d.ts +9 -18
  396. package/dist/solid/index.js +2 -2
  397. package/dist/solid-start/index.d.ts +6 -6
  398. package/dist/solid-start/index.js +7 -7
  399. package/dist/spec/index.d.ts +134 -0
  400. package/dist/spec/index.js +353 -0
  401. package/dist/{spec-pins-C89s6DyW.d.ts → spec-pins-CwzDY25w.d.ts} +18 -1
  402. package/dist/{spec-pins--j6mTok4.js → spec-pins-DsLfUH7l.js} +14 -1
  403. package/dist/sql/index.d.ts +145 -119
  404. package/dist/sql/index.js +19921 -19798
  405. package/dist/{executor-De1Of3m3.js → sql-CwuqaQ4Y.js} +34 -169
  406. package/dist/ssr/index.d.ts +4 -4
  407. package/dist/ssr/index.js +3 -2
  408. package/dist/{standard-BK0cqJ7y.js → standard-DkzZUneg.js} +2 -2
  409. package/dist/{standard-CYsm7xpT.d.ts → standard-lmkbOtPB.d.ts} +1 -1
  410. package/dist/{stats-D_AD9GGu.js → stats-DhU78Ctf.js} +8 -4
  411. package/dist/storage/index.d.ts +4 -6
  412. package/dist/storage/index.js +16 -17
  413. package/dist/{bucket-Cl46E3jS.d.ts → storage-api-CB7Zl1Ci.d.ts} +243 -8
  414. package/dist/{store-CGjgWu5n.d.ts → store-DsIYEBnv.d.ts} +1 -1
  415. package/dist/streams/index.d.ts +4 -4
  416. package/dist/streams/index.js +5 -4
  417. package/dist/streams/redis/index.d.ts +1 -1
  418. package/dist/streams/redis/index.js +5 -11
  419. package/dist/{stripe-BMj5LtsT.js → stripe-v-Y2lmop.js} +2 -8
  420. package/dist/supabase-mcp-C6tMoEjn.d.ts +43 -0
  421. package/dist/supabase-mcp-Cpn5A4i-.js +28 -0
  422. package/dist/{support-DWwzVf-O.js → support-D1pFFouF.js} +71 -35
  423. package/dist/{support-view-CVOJJLpc.d.ts → support-view-scqMgtOo.d.ts} +1 -1
  424. package/dist/svelte/index.d.ts +8 -17
  425. package/dist/svelte/index.js +2 -2
  426. package/dist/sveltekit/index.d.ts +7 -7
  427. package/dist/sveltekit/index.js +10 -12
  428. package/dist/table-schema-htM_SbCW.js +286 -0
  429. package/dist/{tags-Cx-LnIQP.d.ts → tags-BO9LjtWG.d.ts} +1 -1
  430. package/dist/tanstack-db/index.d.ts +2 -2
  431. package/dist/tanstack-db/supabase/index.d.ts +52 -0
  432. package/dist/tanstack-db/supabase/index.js +97 -0
  433. package/dist/tanstack-start/index.d.ts +6 -6
  434. package/dist/tanstack-start/index.js +8 -12
  435. package/dist/{tee-CoEppCER.js → tee-Cb98Vn3b.js} +1 -1
  436. package/dist/{template--jDkl3UP.js → template-lPVh-EwW.js} +11 -2
  437. package/dist/{temporal-required-BVvW7SYJ.js → temporal-required-BtynQtM-.js} +1 -1
  438. package/dist/{tenant-BxNFk9bx.d.ts → tenant-CM368LXb.d.ts} +2 -2
  439. package/dist/testing/index.d.ts +249 -118
  440. package/dist/testing/index.js +1418 -870
  441. package/dist/ttl-cache-XzZ-Q2eX.js +29 -0
  442. package/dist/types-BRTSpOIh.js +5 -0
  443. package/dist/{types-C05bxW-W.d.ts → types-Bb_4-vdW.d.ts} +4 -4
  444. package/dist/{types-AYOvcyep.d.ts → types-CD6yCDx3.d.ts} +5 -5
  445. package/dist/{types-6rocye-y.d.ts → types-CbOUc5IH.d.ts} +4 -4
  446. package/dist/{types-6BdhkmZe.d.ts → types-CoE5Zwy4.d.ts} +8 -0
  447. package/dist/{types-DGs5L0VN.d.ts → types-DSJ3-m9X.d.ts} +4 -4
  448. package/dist/{queue-CLJurhdy.d.ts → types-D__3EN0q.d.ts} +17 -19
  449. package/dist/{usage-CrvrL2vw.d.ts → usage-D0NNUFfr.d.ts} +3 -3
  450. package/dist/{vault-wlbBhqm7.d.ts → vault-BpmApxxW.d.ts} +3 -3
  451. package/dist/vercel-connect/index.d.ts +1 -1
  452. package/dist/vercel-connect/index.js +5 -11
  453. package/dist/{verify-DPuWngD4.d.ts → verify-C91Wyp40.d.ts} +5 -35
  454. package/dist/verify-CJbYfADA.js +124 -0
  455. package/dist/{version--AolB5ej.js → version-Cq8gfDbd.js} +1 -1
  456. package/dist/{view-BeFcRV6G.js → view-D5ryq3gz.js} +1 -1
  457. package/dist/{view-CF7ihnkg.d.ts → view-TpXEUcVN.d.ts} +3 -3
  458. package/dist/vue/index.d.ts +9 -18
  459. package/dist/vue/index.js +2 -2
  460. package/dist/{watch-Xuxrvxq-.js → watch-BcvtAHOd.js} +2 -2
  461. package/dist/{watch-DI34G86j.d.ts → watch-COzRWvVN.d.ts} +23 -9
  462. package/dist/{wire-DtZQ4sdE.js → wire-Df3EWkG8.js} +2 -2
  463. package/dist/{workflow-builder-DJ1oHn8g.js → workflow-builder-CHqHpAVt.js} +6 -5
  464. package/dist/workflow-sdk/builder/index.d.ts +3 -3
  465. package/dist/workflow-sdk/index.d.ts +1 -1
  466. package/dist/workflow-sdk/world/index.d.ts +23 -17
  467. package/dist/workflow-sdk/world/index.js +59 -76
  468. package/dist/{workflow-sdk-B3yLD6Br.d.ts → workflow-sdk-DTZyrvNo.d.ts} +3 -3
  469. package/dist/{workflow-sdk-world-D-prir6O.js → workflow-sdk-world-CMV1ahFW.js} +528 -526
  470. package/dist/{workflows-B0j9WKPu.d.ts → workflows-CcpCBfIe.d.ts} +3 -3
  471. package/dist/{workflows-wu1WWBn7.js → workflows-IvxzG2cl.js} +5 -4
  472. package/package.json +54 -3
  473. package/schemas/config-v1.json +243 -0
  474. package/schemas/doctor-report-v1.json +4 -1
  475. package/schemas/spec-manifest-v1.json +95 -0
  476. package/skills/better-supabase/SKILL.md +8 -4
  477. package/skills/better-supabase/references/troubleshooting.md +20 -20
  478. package/skills/better-supabase-api/references/expo.md +6 -3
  479. package/skills/better-supabase-api/references/powersync.md +2 -1
  480. package/skills/better-supabase-auth/SKILL.md +8 -4
  481. package/dist/cli/config-B9HkL8nF.js +0 -2
  482. package/dist/cli/gen-AIf4MREI.js +0 -3100
  483. package/dist/cli/gen-DSrahEdX.js +0 -2
  484. package/dist/cli/prompts-BTYQGunc.js +0 -2
  485. package/dist/cli/run-BO052mki.js +0 -361
  486. package/dist/config-Dn7F5k9A.js +0 -202
  487. package/dist/history-BZih6SFP.js +0 -64
  488. package/dist/index-BkWT_uBO.d.ts +0 -51
  489. package/dist/index-Bxih3l0u.d.ts +0 -81
  490. package/dist/index-CaxrMD1A.d.ts +0 -1
  491. package/dist/index-DQh4VCc9.d.ts +0 -98
  492. package/dist/keys-4MnkWTTh.js +0 -35
  493. package/dist/messages-DYP0sUTe.d.ts +0 -59
  494. package/dist/modules-dxrVK3ID.js +0 -228
  495. package/dist/path-Cv__-OTj.d.ts +0 -17
  496. package/dist/resource-BsvzCMlX.js +0 -212
  497. package/dist/resource-IPS5xi9q.d.ts +0 -74
  498. package/dist/template-CwO38Do8.d.ts +0 -6
  499. package/dist/verify-DL41hbvY.js +0 -232
  500. package/dist/cli/{read-sets-CETOSFx4.js → read-sets-DjJrm8Wj.js} +1 -1
@@ -0,0 +1,126 @@
1
+ import { n as deepFreeze, r as isPlainObject, t as cloneValue } from "./clone-dN9XOL1K.js";
2
+ import { n as dbError } from "./errors-2M6CKMP4.js";
3
+ import { a as ok, r as err } from "./result-DEqHCMKP.js";
4
+ //#region src/core/authorizer.ts
5
+ /** Identity helper that fixes `apiVersion` and infers `Ref`. */
6
+ function defineAuthorizer(authorizer) {
7
+ return {
8
+ ...authorizer,
9
+ apiVersion: 1
10
+ };
11
+ }
12
+ const ANONYMOUS = {
13
+ type: "anon",
14
+ id: "anonymous"
15
+ };
16
+ function scopesOf(claims) {
17
+ const scope = claims?.["scope"];
18
+ return typeof scope === "string" ? scope.split(" ").filter(Boolean) : [];
19
+ }
20
+ /** A frozen copy of the verified claims, so an authorizer cannot change them. */
21
+ function claimsProperty(claims) {
22
+ if (!isPlainObject(claims)) return {};
23
+ return { claims: deepFreeze(cloneValue(claims)) };
24
+ }
25
+ /** The subject and context of a request, from the verified context only. */
26
+ function requestOf(context) {
27
+ const actor = context?.actor;
28
+ const claims = context?.claims;
29
+ const act = claims?.["act"];
30
+ const subject = actor ? {
31
+ type: typeof act === "object" && act !== null && actor.kind === "user" ? "agent" : actor.kind,
32
+ id: actor.id,
33
+ properties: {
34
+ ...actor.role === void 0 ? {} : { role: actor.role },
35
+ ...actor.email === void 0 ? {} : { email: actor.email },
36
+ ...actor.impersonator === void 0 ? {} : { impersonator: actor.impersonator },
37
+ ...claimsProperty(claims)
38
+ }
39
+ } : ANONYMOUS;
40
+ const aal = claims?.["aal"];
41
+ return {
42
+ subject,
43
+ context: {
44
+ ...context?.tenant === void 0 ? {} : { tenant: context.tenant },
45
+ ...typeof aal === "string" ? { aal } : {},
46
+ scopes: scopesOf(claims)
47
+ }
48
+ };
49
+ }
50
+ function isOutcome(value) {
51
+ if (typeof value !== "object" || value === null || !("outcome" in value)) return false;
52
+ const { outcome } = value;
53
+ return outcome === "granted" || outcome === "denied" || outcome === "approval-required";
54
+ }
55
+ /** The `forbidden` error for an outcome other than `granted`, or `undefined`. */
56
+ function outcomeError(outcome, permission) {
57
+ if (!isOutcome(outcome)) return dbError("forbidden", `The authorizer gave no decision for ${permission}`, {
58
+ code: "PERMISSION_DENIED",
59
+ permission
60
+ });
61
+ switch (outcome.outcome) {
62
+ case "granted": return;
63
+ case "denied": return dbError("forbidden", outcome.reason ?? `Permission ${permission} is required`, {
64
+ code: "PERMISSION_DENIED",
65
+ permission
66
+ });
67
+ case "approval-required": return dbError("forbidden", `${permission} needs an approval`, {
68
+ code: "APPROVAL_REQUIRED",
69
+ permission,
70
+ ...outcome.approval ? { approval: { id: outcome.approval.id } } : {}
71
+ });
72
+ default: return outcome;
73
+ }
74
+ }
75
+ /**
76
+ * Checks one permission and fails closed: a missing authorizer, a throw or
77
+ * an unknown outcome all deny. Never throws (invariant 4).
78
+ */
79
+ async function checkPermission(options) {
80
+ const { authorizer, permission } = options;
81
+ if (!authorizer) return err(dbError("forbidden", "A permission is declared, but no authorizer is set", { code: "PERMISSION_DENIED" }));
82
+ let key;
83
+ try {
84
+ key = authorizer.key(permission);
85
+ } catch {
86
+ return err(dbError("forbidden", "Unknown permission", { code: "PERMISSION_DENIED" }));
87
+ }
88
+ const { subject, context } = requestOf(options.context);
89
+ try {
90
+ const error = outcomeError(await authorizer.evaluate({
91
+ subject,
92
+ action: permission,
93
+ resource: options.resource,
94
+ context
95
+ }), key);
96
+ return error ? err(error) : ok(void 0);
97
+ } catch {
98
+ return err(dbError("forbidden", `The authorizer failed for ${key}`, {
99
+ code: "PERMISSION_DENIED",
100
+ permission: key
101
+ }));
102
+ }
103
+ }
104
+ /**
105
+ * Checks one permission per resource, with `evaluations` when the
106
+ * authorizer has it. Returns whether each one is granted, in order; any
107
+ * failure denies.
108
+ */
109
+ async function checkEach(authorizer, permission, resources, context) {
110
+ if (!authorizer || resources.length === 0) return resources.map(() => false);
111
+ const { subject, context: requestContext } = requestOf(context);
112
+ const requests = resources.map((resource) => ({
113
+ subject,
114
+ action: permission,
115
+ resource,
116
+ context: requestContext
117
+ }));
118
+ try {
119
+ const outcomes = authorizer.evaluations ? await authorizer.evaluations(requests) : await Promise.all(requests.map((request) => Promise.resolve(authorizer.evaluate(request))));
120
+ return requests.map((_, index) => isOutcome(outcomes[index]) && outcomes[index].outcome === "granted");
121
+ } catch {
122
+ return resources.map(() => false);
123
+ }
124
+ }
125
+ //#endregion
126
+ export { requestOf as i, checkPermission as n, defineAuthorizer as r, checkEach as t };
@@ -0,0 +1,73 @@
1
+ //#region src/core/authorizer.d.ts
2
+ type JsonObject = Readonly<Record<string, unknown>>;
3
+ /** Who asks (AuthZEN Subject). Always built from the verified request context. */
4
+ interface AuthorizationSubject {
5
+ /** `user`, `service`, `anon`, or `agent` for a delegated token with an `act` chain. */
6
+ readonly type: string;
7
+ readonly id: string;
8
+ /**
9
+ * `role`, `email` and `impersonator` when set, and `claims`: the verified
10
+ * access-token claims (a frozen copy, including what a token hook wrote,
11
+ * such as `memberships`, `roles` and `act`). The client never supplies
12
+ * them. Anonymous subjects have no properties.
13
+ */
14
+ readonly properties?: JsonObject;
15
+ }
16
+ /** What is acted on (AuthZEN Resource): a table, a topic or an action's target. */
17
+ interface AuthorizationResource {
18
+ readonly type: string;
19
+ readonly id?: string;
20
+ /** The row, for decisions that read it (`get`, `update`, `delete`). */
21
+ readonly properties?: JsonObject;
22
+ }
23
+ /**
24
+ * One access request, in the AuthZEN Authorization API 1.0 information
25
+ * model (`SPEC_PINS.authzen`): subject, action, resource and context.
26
+ * `action` is the permission reference the authorizer understands.
27
+ */
28
+ interface AuthorizationRequest<Ref = string> {
29
+ readonly subject: AuthorizationSubject;
30
+ readonly action: Ref;
31
+ readonly resource: AuthorizationResource;
32
+ /** The tenant, assurance level and scopes of the request. */
33
+ readonly context: JsonObject;
34
+ }
35
+ type AuthorizationOutcome = {
36
+ readonly outcome: "granted";
37
+ readonly context?: JsonObject;
38
+ } | {
39
+ readonly outcome: "denied";
40
+ readonly reason?: string;
41
+ readonly context?: JsonObject;
42
+ } | {
43
+ readonly outcome: "approval-required";
44
+ readonly approval?: {
45
+ readonly id: string;
46
+ };
47
+ readonly context?: JsonObject;
48
+ };
49
+ /**
50
+ * A runtime authorization decision point (API v1). Authorization libraries
51
+ * ship an adapter that implements it; better-supabase builds every request
52
+ * and fails closed on anything but `granted`.
53
+ */
54
+ interface Authorizer<Ref = string> {
55
+ readonly apiVersion: 1;
56
+ readonly name: string;
57
+ /** The stable key of a permission reference, for specs, SQL and messages. */
58
+ key(ref: Ref): string;
59
+ /** The default permission for a table operation; lets `permissions: true` work. */
60
+ forOperation?(table: string, operation: string): Ref | undefined;
61
+ evaluate(request: AuthorizationRequest<Ref>): AuthorizationOutcome | Promise<AuthorizationOutcome>;
62
+ /** The batch form (AuthZEN Access Evaluations); results keep the request order. */
63
+ evaluations?(requests: readonly AuthorizationRequest<Ref>[]): Promise<readonly AuthorizationOutcome[]>;
64
+ }
65
+ type AnyAuthorizer = Authorizer<any>;
66
+ /** The permission reference type of an authorizer, `string` without one. */
67
+ type PermissionRef<A> = A extends Authorizer<infer R> ? R : string;
68
+ /** Identity helper that fixes `apiVersion` and infers `Ref`. */
69
+ declare function defineAuthorizer<Ref = string>(authorizer: Omit<Authorizer<Ref>, "apiVersion"> & {
70
+ readonly apiVersion?: 1;
71
+ }): Authorizer<Ref>;
72
+ //#endregion
73
+ export { AuthorizationSubject as a, defineAuthorizer as c, AuthorizationResource as i, AuthorizationOutcome as n, Authorizer as o, AuthorizationRequest as r, PermissionRef as s, AnyAuthorizer as t };
@@ -0,0 +1,118 @@
1
+ import { b as DbError, n as BetterResultApi, t as AsyncResult } from "../result-BchM1XZn.js";
2
+ import { E as PrimaryKeyValue, H as Update, L as TableKey, R as TableMeta, V as UniqueWhere, a as AnyModels, i as AnyFunctions, x as Insert } from "../types-CoE5Zwy4.js";
3
+ import { r as ApplyExtension } from "../plugin-CPK2HsbY.js";
4
+ import { A as OverloadedName, B as UpsertArgs, Bt as WhereInput, C as ManyReturningArgs, Ct as FindOnlyArgs, D as OffsetRangeArgs, E as OffsetPageArgs, G as SearchScore, H as WriteArgs, I as Returned, It as RequestArgs, K as InferReadSetParams, L as RpcArgs, M as PlainName, N as RawRpcOptions, Nt as Payload, O as OverloadArgs, Pt as ReadArgs, R as RpcOptions, S as ManyResult, St as FindManyArgs, U as WriteManyArgs, V as UpsertManyArgs, W as SearchArgs, _ as Db, at as QuerySpec, b as DeleteExt, dt as AggregateArgs, et as ReadSetResult, g as CursorPageArgs, it as InferResult, j as PageOf, k as OverloadReturns, mt as AggregateResult, q as ReadSet, w as NoArgName, x as FindExt, xt as FindFirstArgs, y as DeleteArgs, yt as CountArgs, z as UpdateArgs } from "../define-DmcfoNXB.js";
5
+ import { a as ListExtra, i as ListDefinition, o as ListPage, s as ListPagination, u as ListQuery } from "../list-query-D3JQeEL7.js";
6
+ import { Result } from "better-result";
7
+ //#region src/better-result/better-result.d.ts
8
+ /** better-result's `Result` namespace with the function each `DbError` goes through. */
9
+ interface BetterResultMapping<E> {
10
+ readonly Result: BetterResultApi<unknown, unknown>;
11
+ readonly mapError: (error: DbError) => E;
12
+ }
13
+ /** What `withBetterResult` calls on a `defineBetterResultErrors` converter. */
14
+ interface BetterResultErrorsLike {
15
+ (result: AsyncResult<unknown>): unknown;
16
+ map(error: DbError): unknown;
17
+ }
18
+ /** A `defineBetterResultErrors` converter or a `{ Result, mapError }` mapping. */
19
+ type BetterResultConverter = BetterResultErrorsLike | BetterResultMapping<unknown>;
20
+ /** The error type a converter produces. */
21
+ type ConvertedError<X> = X extends BetterResultMapping<infer E> ? E : X extends {
22
+ map(error: DbError): infer E;
23
+ } ? E : never;
24
+ type Out<T, Err> = Promise<Result<T, Err>>;
25
+ /**
26
+ * A repository whose reads and writes return better-result values. Its
27
+ * signatures mirror `Repository`, so `select` and `include` still type the rows.
28
+ */
29
+ interface BetterResultRepository<M extends AnyModels, T extends TableKey<M>, E, Err> {
30
+ readonly $tableName: T;
31
+ readonly $meta: TableMeta;
32
+ findMany<const A extends FindManyArgs<M, T> & FindExt<E, M, T>>(args?: A): Out<Payload<M, T, A>[], Err>;
33
+ findFirst<const A extends FindFirstArgs<M, T> & FindExt<E, M, T>>(args?: A): Out<Payload<M, T, A> | null, Err>;
34
+ findOnly<const A extends FindOnlyArgs<M, T> & FindExt<E, M, T>>(args: A): Out<Payload<M, T, A> | null, Err>;
35
+ findUnique<const A extends ReadArgs<M, T> & {
36
+ readonly where: UniqueWhere<M, T>;
37
+ } & FindExt<E, M, T>>(args: A): Out<Payload<M, T, A> | null, Err>;
38
+ findById<const A extends ReadArgs<M, T> & FindExt<E, M, T>>(id: PrimaryKeyValue<M, T>, args?: A): Out<Payload<M, T, A>, Err>;
39
+ count(args?: CountArgs<M, T> & FindExt<E, M, T>): Out<number, Err>;
40
+ aggregate<const A extends AggregateArgs<M, T> & FindExt<E, M, T>>(args: A): Out<AggregateResult<M, T, A>, Err>;
41
+ exists(args?: RequestArgs & {
42
+ readonly where?: WhereInput<M, T>;
43
+ } & FindExt<E, M, T>): Out<boolean, Err>;
44
+ paginate<const A extends (OffsetPageArgs<M, T> | OffsetRangeArgs<M, T> | CursorPageArgs<M, T>) & FindExt<E, M, T>>(args: A): Out<PageOf<M, T, A>, Err>;
45
+ create<const A extends WriteArgs<M, T> = {}>(data: Insert<M, T>, args?: A): Out<Returned<M, T, A>, Err>;
46
+ createMany<const A extends WriteManyArgs<M, T> = {}>(rows: readonly Insert<M, T>[], args?: A): Out<A extends {
47
+ readonly returning: false;
48
+ } ? {
49
+ count: number;
50
+ } : Payload<M, T, A>[], Err>;
51
+ update<const A extends UpdateArgs<M, T> = {}>(id: PrimaryKeyValue<M, T>, patch: Update<M, T>, args?: A): Out<Returned<M, T, A>, Err>;
52
+ updateMany<const A extends ManyReturningArgs<M, T> & {
53
+ readonly data: Update<M, T>;
54
+ readonly allowAll?: boolean;
55
+ } & FindExt<E, M, T>>(args: A): Out<ManyResult<M, T, A>, Err>;
56
+ upsert<const A extends UpsertArgs<M, T> = {}>(data: Insert<M, T>, args?: A): Out<A extends {
57
+ readonly ignoreDuplicates: true;
58
+ } ? Returned<M, T, A> | null : Returned<M, T, A>, Err>;
59
+ upsertMany<const A extends UpsertManyArgs<M, T> = {}>(rows: readonly Insert<M, T>[], args?: A): Out<A extends {
60
+ readonly returning: false;
61
+ } ? {
62
+ count: number;
63
+ } : Payload<M, T, A>[], Err>;
64
+ delete(id: PrimaryKeyValue<M, T>, args?: DeleteArgs & DeleteExt<E, M, T>): Out<void, Err>;
65
+ deleteMany<const A extends ManyReturningArgs<M, T> & DeleteExt<E, M, T> & FindExt<E, M, T>>(args: A): Out<ManyResult<M, T, A>, Err>;
66
+ }
67
+ /**
68
+ * Plugin methods that return an `AsyncResult` return a better-result value.
69
+ * A generic plugin method keeps its parameters but loses its type
70
+ * parameters; call it on `$db` and pass the result to `$from` instead.
71
+ */
72
+ type BetterResultMethods<X, Err> = { readonly [K in keyof X]: X[K] extends ((...args: infer P) => AsyncResult<infer R>) ? (...args: P) => Out<R, Err> : X[K]; };
73
+ type BetterResultRepositoryOf<M extends AnyModels, T extends TableKey<M>, E, Err> = BetterResultRepository<M, T, E, Err> & BetterResultMethods<ApplyExtension<E, M, T, "methods">, Err>;
74
+ interface BetterResultHelpers<M extends AnyModels, F extends AnyFunctions, E, C, Err> {
75
+ /** The `db` this view wraps, for everything that returns plain results. */
76
+ readonly $db: Db<M, F, E, C>;
77
+ /** Converts any `AsyncResult`, such as one from a plugin method or `$with`. */
78
+ $from<T>(result: AsyncResult<T>): Out<T, Err>;
79
+ $rpc<N extends PlainName<F>>(name: N, ...rest: [...RpcArgs<F, N>, options: RawRpcOptions]): Out<unknown, Err>;
80
+ $rpc<N extends PlainName<F>, R = F[N]["Returns"]>(name: N, ...rest: [...RpcArgs<F, N>, options?: RpcOptions<R>]): Out<R, Err>;
81
+ $rpc<N extends OverloadedName<F>, const A extends F[N]["Args"]>(name: N, args: OverloadArgs<F[N], A>, options: RawRpcOptions): Out<unknown, Err>;
82
+ $rpc<N extends OverloadedName<F>, const A extends F[N]["Args"], R = OverloadReturns<F[N], A>>(name: N, args: OverloadArgs<F[N], A>, options?: RpcOptions<R>): Out<R, Err>;
83
+ $rpc<N extends NoArgName<F>>(name: N): Out<OverloadReturns<F[N], Record<never, never>>, Err>;
84
+ $table<T extends TableKey<M>>(name: T): BetterResultRepositoryOf<M, T, E, Err>;
85
+ $run<S extends QuerySpec<TableKey<M>>>(spec: S, options?: {
86
+ readonly signal?: AbortSignal;
87
+ }): Out<InferResult<S>, Err>;
88
+ $many<S extends ReadSet>(readSet: S, params: InferReadSetParams<S>, options?: {
89
+ readonly signal?: AbortSignal;
90
+ }): Out<ReadSetResult<S>, Err>;
91
+ $many<const S extends readonly QuerySpec<TableKey<M>>[]>(specs: S, options?: {
92
+ readonly signal?: AbortSignal;
93
+ }): Out<{ -readonly [K in keyof S]: InferResult<S[K]>; }, Err>;
94
+ $search<T extends TableKey<M>, const A extends SearchArgs<M, T>>(table: T, args: A): Out<(Payload<M, T, A> & SearchScore<A>)[], Err>;
95
+ /** Runs a list query (`defineListQuery`) like `list.run(db, query, extra)`. */
96
+ $list<T extends TableKey<M>, S extends string, LF extends string, LC extends boolean, P extends ListPagination, const A extends ListExtra<M, T> & FindExt<E, M, T>>(list: ListDefinition<M, T, E, S, LF, LC, P>, query: ListQuery<S, LF>, extra?: A): Out<ListPage<Payload<M, T, A>, LF, LC, P>, Err>;
97
+ }
98
+ /** A `db` whose repositories and helpers return better-result values. */
99
+ type BetterResultDb<M extends AnyModels, F extends AnyFunctions, E, C, Err> = { readonly [T in TableKey<M>]: BetterResultRepositoryOf<M, T, E, Err>; } & BetterResultHelpers<M, F, E, C, Err>;
100
+ /**
101
+ * A view of `db` whose repository methods, `$rpc`, `$run`, `$many`,
102
+ * `$search` and list queries (`$list`) return better-result `Result`
103
+ * values. `toResult` is a `defineBetterResultErrors` converter or
104
+ * `{ Result, mapError }`. `db` itself is unchanged, and `$db` returns it.
105
+ *
106
+ * ```ts
107
+ * import { Result, TaggedError } from 'better-result';
108
+ * import { defineBetterResultErrors } from 'better-supabase';
109
+ * import { withBetterResult } from 'better-supabase/better-result';
110
+ *
111
+ * const toResult = defineBetterResultErrors(Result, { not_found: NotFound }, DbFailure);
112
+ * const rdb = withBetterResult(db, toResult);
113
+ * const customer = await rdb.customers.findById(id); // Result<Customer, NotFound | DbFailure>
114
+ * ```
115
+ */
116
+ export declare function withBetterResult<M extends AnyModels, F extends AnyFunctions, E, C, const X extends BetterResultConverter>(db: Db<M, F, E, C>, toResult: X): BetterResultDb<M, F, E, C, ConvertedError<X>>;
117
+ //#endregion
118
+ export type { BetterResultConverter, BetterResultDb, BetterResultErrorsLike, BetterResultHelpers, BetterResultMapping, BetterResultMethods, BetterResultRepository, BetterResultRepositoryOf, ConvertedError };
@@ -0,0 +1,64 @@
1
+ import { o as toBetterResult, t as AsyncResult } from "../result-DEqHCMKP.js";
2
+ //#region src/better-result/better-result.ts
3
+ const HELPERS = [
4
+ "$rpc",
5
+ "$run",
6
+ "$many",
7
+ "$search"
8
+ ];
9
+ function converterOf(toResult) {
10
+ if (typeof toResult === "function") return (result) => toResult(result);
11
+ return (result) => toBetterResult(result, toResult.Result, toResult.mapError);
12
+ }
13
+ function view(db, convert) {
14
+ const wrap = (value) => value instanceof AsyncResult ? convert(value) : value;
15
+ const call = (target, method, name) => {
16
+ if (typeof method !== "function") throw new TypeError(`better-supabase: ${name} is not a function`);
17
+ return (...args) => wrap(method.apply(target, args));
18
+ };
19
+ const repositories = /* @__PURE__ */ new WeakMap();
20
+ const repository = (target, name) => {
21
+ if (typeof target !== "object" || target === null) throw new TypeError(`better-supabase: unknown table ${name}`);
22
+ const cached = repositories.get(target);
23
+ if (cached) return cached;
24
+ const wrapped = Object.fromEntries(Object.entries(target).map(([key, value]) => [key, typeof value === "function" ? call(target, value, key) : value]));
25
+ repositories.set(target, wrapped);
26
+ return wrapped;
27
+ };
28
+ const result = {
29
+ $db: db,
30
+ $from: convert,
31
+ $table: (name) => repository(db.$table(name), name),
32
+ $list: (list, query, extra) => wrap(list.run(db, query, extra))
33
+ };
34
+ for (const key of HELPERS) result[key] = call(db, db[key], `db.${key}`);
35
+ for (const key in db) {
36
+ if (key.startsWith("$")) continue;
37
+ Object.defineProperty(result, key, {
38
+ enumerable: true,
39
+ get: () => repository(db.$table(key), key)
40
+ });
41
+ }
42
+ return result;
43
+ }
44
+ /**
45
+ * A view of `db` whose repository methods, `$rpc`, `$run`, `$many`,
46
+ * `$search` and list queries (`$list`) return better-result `Result`
47
+ * values. `toResult` is a `defineBetterResultErrors` converter or
48
+ * `{ Result, mapError }`. `db` itself is unchanged, and `$db` returns it.
49
+ *
50
+ * ```ts
51
+ * import { Result, TaggedError } from 'better-result';
52
+ * import { defineBetterResultErrors } from 'better-supabase';
53
+ * import { withBetterResult } from 'better-supabase/better-result';
54
+ *
55
+ * const toResult = defineBetterResultErrors(Result, { not_found: NotFound }, DbFailure);
56
+ * const rdb = withBetterResult(db, toResult);
57
+ * const customer = await rdb.customers.findById(id); // Result<Customer, NotFound | DbFailure>
58
+ * ```
59
+ */
60
+ function withBetterResult(db, toResult) {
61
+ return view(db, converterOf(toResult));
62
+ }
63
+ //#endregion
64
+ export { withBetterResult };
@@ -1,7 +1,7 @@
1
1
  import { n as decodeJwtPayload } from "./base64-D2gsioCY.js";
2
2
  import { i as userContext } from "./impersonation-DcqaTBHx.js";
3
3
  import { n as identityKey } from "./user-change-XzvgafU4.js";
4
- import { n as createQueries } from "./query-BQ-NaZon.js";
4
+ import { n as createQueries } from "./query-Ctz-qKRx.js";
5
5
  //#region src/client/bind.ts
6
6
  const LOADING = {
7
7
  status: "loading",
@@ -1,6 +1,6 @@
1
- import { a as AnyModels, i as AnyFunctions } from "./types-6BdhkmZe.js";
2
- import { b as Db, t as BetterSupabase } from "./define-CJJkkr1-.js";
3
- import { s as BetterQueries } from "./index-Bepi-Hgg.js";
1
+ import { a as AnyModels, i as AnyFunctions } from "./types-CoE5Zwy4.js";
2
+ import { _ as Db, t as BetterSupabase } from "./define-DmcfoNXB.js";
3
+ import { s as BetterQueries } from "./index-DoNVLHOU.js";
4
4
  import { SupabaseClient } from "@supabase/supabase-js";
5
5
  //#region src/client/bind.d.ts
6
6
  interface AuthUser {
@@ -1,4 +1,4 @@
1
- import { t as cloneValue } from "./clone-BfgmLU90.js";
1
+ import { t as cloneValue } from "./clone-dN9XOL1K.js";
2
2
  import { s as nowInstant } from "./temporal-BJGitm-h.js";
3
3
  //#region src/core/block-events.ts
4
4
  /**
@@ -57,10 +57,25 @@ function emitBlockEvent(events, type, data, meta = {}) {
57
57
  ...meta,
58
58
  type,
59
59
  data: cloneValue(data),
60
- time: nowInstant()
60
+ time: (events.now ?? nowInstant)()
61
61
  };
62
62
  events.emit("block", event);
63
63
  }
64
+ /**
65
+ * The `emit` a block creator calls: skips the work without an event hub and
66
+ * adds the actor and request context from the block's options.
67
+ */
68
+ function blockEmitter(options) {
69
+ return (type, data, subject, tenant) => {
70
+ if (!options.events) return;
71
+ emitBlockEvent(options.events, type, data, {
72
+ subject,
73
+ ...tenant ? { tenant } : {},
74
+ ...options.actorId ? { actorId: options.actorId } : {},
75
+ ...options.context ? { context: options.context } : {}
76
+ });
77
+ };
78
+ }
64
79
  const matches = (pattern, type) => pattern.endsWith(".*") ? type.startsWith(pattern.slice(0, -1)) : pattern === type;
65
80
  /**
66
81
  * Listens to the block events that match `pattern` (`'support.started'` or
@@ -73,4 +88,4 @@ function onBlockEvent(betterSupabase, pattern, handler) {
73
88
  });
74
89
  }
75
90
  //#endregion
76
- export { onBlockEvent as a, emitBlockEvent as i, BLOCK_EVENT_RENAMES as n, blockEventAttributes as r, BLOCK_ATTRIBUTES as t };
91
+ export { emitBlockEvent as a, blockEventAttributes as i, BLOCK_EVENT_RENAMES as n, onBlockEvent as o, blockEmitter as r, BLOCK_ATTRIBUTES as t };
@@ -1,6 +1,6 @@
1
- import { n as dbError } from "./errors-B11Duf73.js";
2
- import { a as ok, r as err } from "./result-DzUbqgdW.js";
3
- import { t as toIssues } from "./standard-BK0cqJ7y.js";
1
+ import { n as dbError } from "./errors-2M6CKMP4.js";
2
+ import { a as ok, r as err } from "./result-DEqHCMKP.js";
3
+ import { t as toIssues } from "./standard-DkzZUneg.js";
4
4
  //#region src/core/block-fields.ts
5
5
  const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
6
6
  async function run(schema, value) {
@@ -1,5 +1,5 @@
1
- import { f as Result } from "./result-D7y2fT87.js";
2
- import { t as StandardSchemaV1 } from "./standard-CYsm7xpT.js";
1
+ import { f as Result } from "./result-BchM1XZn.js";
2
+ import { t as StandardSchemaV1 } from "./standard-lmkbOtPB.js";
3
3
  //#region src/core/block-fields.d.ts
4
4
  /** The fields a `fields` schema adds, or none when the block has no schema. */
5
5
  type FieldsOf<S> = S extends StandardSchemaV1<unknown, infer O> ? O extends object ? O : never : Record<never, never>;
@@ -1,5 +1,5 @@
1
- import { t as AsyncResult, w as ErrorMapper } from "./result-D7y2fT87.js";
2
- import { t as BlockTransport } from "./block-transport-DvaoPuZ9.js";
1
+ import { t as AsyncResult, w as ErrorMapper } from "./result-BchM1XZn.js";
2
+ import { t as BlockTransport } from "./block-transport-inD4fFq-.js";
3
3
  //#region src/core/block-helpers.d.ts
4
4
  /** The `temporal` option every block creator takes. */
5
5
  interface BlockTemporalOptions {
@@ -1,9 +1,10 @@
1
- import { c as mapDbError, n as dbError } from "./errors-B11Duf73.js";
1
+ import { c as mapDbError, n as dbError, r as dbErrorOf } from "./errors-2M6CKMP4.js";
2
2
  import { l as provideTemporal } from "./temporal-BJGitm-h.js";
3
- import { t as temporal } from "./temporal-required-BVvW7SYJ.js";
4
- import { a as ok, r as err, s as toDbError, t as AsyncResult } from "./result-DzUbqgdW.js";
5
- import { t as fromPgError } from "./executor-De1Of3m3.js";
6
- import { t as rawError } from "./block-transport-BLr-ZgLc.js";
3
+ import { t as temporal } from "./temporal-required-BtynQtM-.js";
4
+ import { a as ok, r as err, s as toDbError, t as AsyncResult } from "./result-DEqHCMKP.js";
5
+ import { n as isRecord } from "./guards-6F2bCtQR.js";
6
+ import { t as fromPgError } from "./executor-B_Hfobee.js";
7
+ import { n as rawError } from "./block-transport-bAKh-dGc.js";
7
8
  //#region src/core/block-helpers.ts
8
9
  /** Provides `options.temporal`, when set, for the block's time values. */
9
10
  function applyTemporal(options) {
@@ -11,6 +12,16 @@ function applyTemporal(options) {
11
12
  }
12
13
  /** The block schema when the options name none. */
13
14
  const DEFAULT_BLOCK_SCHEMA = "better_supabase";
15
+ /**
16
+ * A thrown error as a `DbError`: a database error goes through the app's
17
+ * mappers first, and a `DbError` a transport already built stays as it is.
18
+ */
19
+ function toBlockError(cause, mappers = []) {
20
+ const known = dbErrorOf(cause);
21
+ if (known) return known;
22
+ const raw = rawError(cause);
23
+ return raw ? mapDbError(raw, mappers) : toDbError(cause);
24
+ }
14
25
  /** A `BlockCall` over `transport`, in `schema`, with the app's error mappers first. */
15
26
  function blockCall(transport, schema = DEFAULT_BLOCK_SCHEMA, mappers = []) {
16
27
  return (fn, args, then) => AsyncResult.from(async () => {
@@ -18,13 +29,30 @@ function blockCall(transport, schema = DEFAULT_BLOCK_SCHEMA, mappers = []) {
18
29
  try {
19
30
  value = await transport.call(schema, fn, args);
20
31
  } catch (cause) {
21
- const raw = rawError(cause);
22
- return err(raw ? mapDbError(raw, mappers) : toDbError(cause));
32
+ return err(toBlockError(cause, mappers));
23
33
  }
24
34
  return ok(await then(value));
25
35
  });
26
36
  }
27
- const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
37
+ /** A budget of `ms` milliseconds from now, or none for `undefined`. `now` is injectable for tests. */
38
+ function budget(ms, now = Date.now) {
39
+ const deadline = ms === void 0 ? Number.POSITIVE_INFINITY : now() + ms;
40
+ return {
41
+ deadline,
42
+ expired: () => now() >= deadline,
43
+ remaining: () => deadline - now()
44
+ };
45
+ }
46
+ /**
47
+ * Calls `extend` at half the lease (at least every second) until the returned
48
+ * function is called, so work that outlasts its lease keeps it.
49
+ */
50
+ function leaseHeartbeat(leaseSeconds, extend) {
51
+ const timer = setInterval(extend, Math.max(1e3, leaseSeconds * 1e3 / 2));
52
+ return () => {
53
+ clearInterval(timer);
54
+ };
55
+ }
28
56
  const textOf = (value) => typeof value === "string" ? value : String(value);
29
57
  const optionalText = (value) => value === null || value === void 0 ? void 0 : textOf(value);
30
58
  /** A function result that must be an object. */
@@ -63,6 +91,10 @@ function credentialRefOf(value) {
63
91
  const notFoundError = (message, hint) => dbError("not_found", message, hint === void 0 ? {} : { hint });
64
92
  /** A `timestamptz` from jsonb or `pg`, or `undefined` for null. */
65
93
  const optionalInstant = (value) => value === null || value === void 0 ? void 0 : value instanceof Date || typeof value === "string" ? toInstant(value) : void 0;
94
+ /** Text from jsonb, or `null` when it is missing or not text. */
95
+ const nullableText = (value) => optionalText(value) ?? null;
96
+ /** A `timestamptz` from jsonb or `pg`, or `null` when it is missing. */
97
+ const nullableInstant = (value) => optionalInstant(value) ?? null;
66
98
  /** A `timestamptz` that must be there; throws when it is null or missing. */
67
99
  function requiredInstant(value, field) {
68
100
  const instant = optionalInstant(value);
@@ -187,4 +219,4 @@ function pageOf(options = {}) {
187
219
  };
188
220
  }
189
221
  //#endregion
190
- export { workerId as A, run as C, stringsOf as D, sleep as E, textOf as O, requiredInstant as S, sha256Hex as T, randomToken as _, credentialRefOf as a, recordOrEmpty as b, errorText as c, isRecord as d, notFoundError as f, pageOf as g, optionalText as h, blockCall as i, toInstant as k, injectableOf as l, optionalInstant as m, applyTemporal as n, eachLimit as o, oneOf as p, asDbError as r, enumOrThrow as s, DEFAULT_BLOCK_SCHEMA as t, instantArg as u, readBodyCapped as v, seconds as w, recordsOf as x, recordOf as y };
222
+ export { stringsOf as A, recordOrEmpty as C, seconds as D, run as E, toBlockError as M, toInstant as N, sha256Hex as O, workerId as P, recordOf as S, requiredInstant as T, optionalInstant as _, budget as a, randomToken as b, enumOrThrow as c, instantArg as d, leaseHeartbeat as f, oneOf as g, nullableText as h, blockCall as i, textOf as j, sleep as k, errorText as l, nullableInstant as m, applyTemporal as n, credentialRefOf as o, notFoundError as p, asDbError as r, eachLimit as s, DEFAULT_BLOCK_SCHEMA as t, injectableOf as u, optionalText as v, recordsOf as w, readBodyCapped as x, pageOf as y };
@@ -1,7 +1,7 @@
1
- import { n as dbError, o as isDbError } from "./errors-B11Duf73.js";
2
- import { r as err, t as AsyncResult } from "./result-DzUbqgdW.js";
1
+ import { n as dbError, o as isDbError } from "./errors-2M6CKMP4.js";
2
+ import { r as err, t as AsyncResult } from "./result-DEqHCMKP.js";
3
3
  import { t as consoleLogger } from "./logger-glM28NVN.js";
4
- import { i as blockCall } from "./block-helpers-DWHxHsEQ.js";
4
+ import { i as blockCall } from "./block-helpers-Cy3pB96I.js";
5
5
  //#region src/core/block-hooks.ts
6
6
  const isPlainObject = (value) => {
7
7
  const proto = Object.getPrototypeOf(value);
@@ -1,7 +1,7 @@
1
- import { b as DbError, f as Result, t as AsyncResult, w as ErrorMapper } from "./result-D7y2fT87.js";
2
- import { t as BlockTransport } from "./block-transport-DvaoPuZ9.js";
1
+ import { b as DbError, f as Result, t as AsyncResult, w as ErrorMapper } from "./result-BchM1XZn.js";
2
+ import { t as BlockTransport } from "./block-transport-inD4fFq-.js";
3
3
  import { n as Logger } from "./logger-DWVYUmwi.js";
4
- import { t as BlockCall } from "./block-helpers-CKtbFcRv.js";
4
+ import { t as BlockCall } from "./block-helpers-C0Xj8War.js";
5
5
  //#region src/core/block-hooks.d.ts
6
6
  /** A block method: anything that returns an `AsyncResult`. */
7
7
  type BlockMethod = (...args: never[]) => AsyncResult<unknown>;
@@ -1,4 +1,5 @@
1
- import { r as sqlIdent } from "./template--jDkl3UP.js";
1
+ import { t as DbException } from "./db-exception-CnWcYPxL.js";
2
+ import { i as sqlIdent } from "./template-lPVh-EwW.js";
2
3
  //#region src/core/block-transport.ts
3
4
  /**
4
5
  * Calls the functions over Postgres, as the user `client` runs as:
@@ -31,6 +32,31 @@ function rpcTransport(client, options = {}) {
31
32
  return data;
32
33
  } };
33
34
  }
35
+ /**
36
+ * Calls the functions through a `Db`'s executor, so a block runs wherever
37
+ * the `Db` does: over PostgREST for `ctx.db` in a normal request, and over
38
+ * direct Postgres as the target in a support session or for an API key.
39
+ * Rejects with the raw database error, like the other transports, so the
40
+ * block's error mappers see the same codes and hints.
41
+ */
42
+ function dbTransport(db, options = {}) {
43
+ return { async call(schema, fn, args) {
44
+ const executor = db.$executor;
45
+ if (!executor.rpc) throw new TypeError(`dbTransport needs an executor with rpc(); the ${executor.name} executor has none`);
46
+ let raw;
47
+ const capture = (error) => {
48
+ raw = error;
49
+ };
50
+ const defined = Object.fromEntries(Object.entries(args).filter(([, value]) => value !== void 0));
51
+ const result = await executor.rpc(fn, defined, {
52
+ schema: options.schema ?? schema,
53
+ errorMappers: [capture]
54
+ });
55
+ if (result.ok) return result.data;
56
+ if (raw === void 0) throw new DbException(result.error);
57
+ throw Object.assign(new Error(raw.message ?? result.error.message), raw);
58
+ } };
59
+ }
34
60
  const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
35
61
  /** The Postgres or PostgREST error a transport rejected with, if it is one. */
36
62
  function rawError(cause) {
@@ -56,4 +82,4 @@ function rawError(cause) {
56
82
  return raw;
57
83
  }
58
84
  //#endregion
59
- export { rpcTransport as n, sqlTransport as r, rawError as t };
85
+ export { sqlTransport as i, rawError as n, rpcTransport as r, dbTransport as t };