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
@@ -1,22 +1,22 @@
1
- import { n as isPlainObject, t as cloneValue } from "./clone-BfgmLU90.js";
1
+ import { n as deepFreeze, r as isPlainObject, t as cloneValue } from "./clone-dN9XOL1K.js";
2
2
  import { t as DbException } from "./db-exception-CnWcYPxL.js";
3
- import { n as dbError } from "./errors-B11Duf73.js";
4
- import { n as invalidRequest, t as builderFor } from "./build-BXIzE6Xv.js";
3
+ import { n as dbError } from "./errors-2M6CKMP4.js";
4
+ import { n as invalidRequest, t as builderFor } from "./build-meLuYGri.js";
5
5
  import { t as lookupOf } from "./lookup-BaP5bI27.js";
6
6
  import { i as or, n as column, r as not, t as and } from "./types-6cYK9pbJ.js";
7
7
  import { c as optionalTemporal, l as provideTemporal, s as nowInstant, u as providedTemporal } from "./temporal-BJGitm-h.js";
8
- import { i as encodeValue, n as decodeScalar, r as decodeValue } from "./wire-DtZQ4sdE.js";
9
- import { a as ok, c as withErrorMapper, r as err, s as toDbError, t as AsyncResult } from "./result-DzUbqgdW.js";
8
+ import { i as encodeValue, n as decodeScalar, r as decodeValue } from "./wire-Df3EWkG8.js";
9
+ import { a as ok, c as withErrorMapper, r as err, s as toDbError, t as AsyncResult } from "./result-DEqHCMKP.js";
10
10
  import { t as invalidationTargets } from "./tables-Cb-3_VWc.js";
11
+ import { t as vectorLiteral } from "./search-CUWCRYKL.js";
11
12
  import { t as consoleLogger } from "./logger-glM28NVN.js";
13
+ import { n as isRecord, t as isList } from "./guards-6F2bCtQR.js";
12
14
  import { i as orderPlugins } from "./plugin-tfXW1-qO.js";
13
15
  import { t as simplify } from "./simplify-DDO0j0LI.js";
14
- import { a as postgrestExecutor, c as invalidTuning, l as tuningOf, n as StatsRecorder, o as NO_TUNING, r as recordStats, s as deadline } from "./stats-D_AD9GGu.js";
15
- import { d as isQuerySpec, f as specTables, n as checkParams, o as isReadSet, r as containsPlaceholder, t as bindParams, u as createSpecs } from "./read-set-DuKWC9Mj.js";
16
+ import { a as postgrestExecutor, c as invalidTuning, l as tuningOf, n as StatsRecorder, o as NO_TUNING, r as recordStats, s as deadline } from "./stats-DhU78Ctf.js";
17
+ import { d as isQuerySpec, f as specTables, n as checkParams, o as isReadSet, r as containsPlaceholder, t as bindParams, u as createSpecs } from "./read-set-DAeWhqPf.js";
16
18
  import { a as toBase64Url, t as base64ToText } from "./base64-D2gsioCY.js";
17
- import { t as isList } from "./guards-BnzDvFrz.js";
18
- import { t as vectorLiteral } from "./search-CUWCRYKL.js";
19
- import { n as validate } from "./standard-BK0cqJ7y.js";
19
+ import { n as validate } from "./standard-DkzZUneg.js";
20
20
  //#region src/core/batch.ts
21
21
  /**
22
22
  * A signal that aborts once every reader's signal has, so one reader giving
@@ -128,14 +128,156 @@ function memoryCache() {
128
128
  };
129
129
  }
130
130
  //#endregion
131
- //#region src/core/events.ts
132
- function deepFreeze(value) {
133
- if (Array.isArray(value) || isPlainObject(value)) {
134
- for (const item of Object.values(value)) deepFreeze(item);
135
- Object.freeze(value);
131
+ //#region src/core/db-search.ts
132
+ /**
133
+ * `db.$search({ score: true })`: the ranked ids and scores from
134
+ * `search_<table>_scores`, then those rows through the table (RLS and
135
+ * `where` apply), best first, each with `$score`.
136
+ */
137
+ async function scoredSearch(runner, table, fnArgs, args, hint) {
138
+ const [key, ...rest] = table.primaryKey;
139
+ if (key === void 0 || rest.length > 0) return err(dbError("invalid_request", "db.$search({ score: true }) needs a table with a one-column primary key", { table: table.key }));
140
+ const { builder } = runner.runtime;
141
+ const scoresTable = {
142
+ key: `${table.key}$scores`,
143
+ name: `search_${table.name}_scores`,
144
+ schema: table.schema,
145
+ kind: "view",
146
+ columns: {
147
+ id: {
148
+ db: "id",
149
+ type: "jsonb",
150
+ nullable: false,
151
+ hasDefault: false
152
+ },
153
+ score: {
154
+ db: "score",
155
+ type: "float8",
156
+ nullable: false,
157
+ hasDefault: false
158
+ }
159
+ },
160
+ primaryKey: [],
161
+ uniqueKeys: {},
162
+ relations: {},
163
+ flags: {}
164
+ };
165
+ const scored = await runner.runInternal({
166
+ kind: "select",
167
+ table: scoresTable,
168
+ selection: builder.selection(scoresTable, ["id", "score"], void 0),
169
+ where: void 0,
170
+ orderBy: [],
171
+ limit: void 0,
172
+ offset: void 0,
173
+ count: void 0,
174
+ head: false,
175
+ single: void 0,
176
+ source: {
177
+ schema: table.schema,
178
+ name: scoresTable.name,
179
+ args: fnArgs
180
+ }
181
+ }, table, args.signal);
182
+ if (!scored.ok) return err(hint(scored.error));
183
+ const ranked = scored.data.rows.flatMap((row) => row["score"] === void 0 || row["score"] === null ? [] : [{
184
+ id: row["id"],
185
+ score: Number(row["score"])
186
+ }]);
187
+ if (ranked.length === 0) return ok([]);
188
+ const byId = new Map(ranked.map((entry) => [String(entry.id), entry]));
189
+ const op = {
190
+ kind: "select",
191
+ table,
192
+ selection: builder.selection(table, args.select, args.include),
193
+ where: builder.where(table, { AND: [...args.where === void 0 ? [] : [args.where], { [key]: { in: ranked.map((entry) => entry.id) } }] }),
194
+ orderBy: [],
195
+ limit: ranked.length,
196
+ offset: void 0,
197
+ count: void 0,
198
+ head: false,
199
+ single: void 0
200
+ };
201
+ const result = await runner.run(op, {}, args.signal);
202
+ if (!result.ok) return result;
203
+ return ok(result.data.rows.flatMap((row) => {
204
+ const entry = byId.get(String(row[key]));
205
+ return entry ? [{
206
+ ...row,
207
+ $score: entry.score
208
+ }] : [];
209
+ }).toSorted((a, b) => b.$score - a.$score));
210
+ }
211
+ /** `db.$search(table, args)`: nearest rows from the table's `search_<table>` function. */
212
+ function searchTable(runner, base, meta, name, args) {
213
+ return AsyncResult.from(async () => {
214
+ const table = Object.hasOwn(meta.tables, name) ? meta.tables[name] : void 0;
215
+ if (!table) return err(dbError("invalid_request", `db.$search(): unknown table "${name}"`));
216
+ if (!base.functionSources) return err(dbError("invalid_request", `db.$search() reads from a function; the ${base.name} executor doesn't support that`, { table: table.key }));
217
+ const query = (args.vector === void 0 || args.vector === null) && args.text !== void 0 ? null : vectorLiteral(args.vector ?? []);
218
+ const k = args.k ?? 10;
219
+ if (query === void 0 || !Number.isInteger(k) || k < 1) return err(dbError("invalid_input", "db.$search() needs a vector of finite numbers (or text alone on a hybrid entry) and a positive integer k", { table: table.key }));
220
+ const { builder } = runner.runtime;
221
+ const fnArgs = {
222
+ query,
223
+ k,
224
+ ...args.filter === void 0 ? {} : { filter: args.filter },
225
+ ...args.text === void 0 ? {} : { text_query: args.text }
226
+ };
227
+ const hint = (error) => error.code === "PGRST202" || error.code === "42883" ? {
228
+ ...error,
229
+ hint: `Add "${table.schema}.${table.name}" to vectorSearch in better-supabase.config.ts (with prefilter or hybrid for filter and text) and run \`better-supabase sql sync\`.`
230
+ } : error;
231
+ if (args.score) return scoredSearch(runner, table, fnArgs, args, hint);
232
+ const op = {
233
+ kind: "select",
234
+ table,
235
+ selection: builder.selection(table, args.select, args.include),
236
+ where: builder.where(table, args.where),
237
+ orderBy: [],
238
+ limit: k,
239
+ offset: void 0,
240
+ count: void 0,
241
+ head: false,
242
+ single: void 0,
243
+ source: {
244
+ schema: table.schema,
245
+ name: `search_${table.name}`,
246
+ args: fnArgs
247
+ }
248
+ };
249
+ const result = await runner.run(op, {}, args.signal);
250
+ if (result.ok) return ok(result.data.rows);
251
+ return err(hint(result.error));
252
+ });
253
+ }
254
+ //#endregion
255
+ //#region src/core/define-plugins.ts
256
+ function isExecutor(value) {
257
+ return typeof value === "object" && value !== null && typeof value.execute === "function" && typeof value.name === "string";
258
+ }
259
+ /** No plugins, one shared array so the caches keyed on a plugin list hit. */
260
+ const NO_PLUGINS = Object.freeze([]);
261
+ /** The kept lists per installed list and `keep` names, so each is one stable array. */
262
+ const keptLists = /* @__PURE__ */ new WeakMap();
263
+ /** The installed plugins named in `keep`; a name that isn't installed throws, so a typo can't drop tracing silently. */
264
+ function keptPlugins(plugins, keep) {
265
+ if (keep.length === 0) return NO_PLUGINS;
266
+ let byKeep = keptLists.get(plugins);
267
+ if (!byKeep) {
268
+ byKeep = /* @__PURE__ */ new Map();
269
+ keptLists.set(plugins, byKeep);
136
270
  }
137
- return value;
271
+ const key = keep.join("\0");
272
+ const cached = byKeep.get(key);
273
+ if (cached) return cached;
274
+ for (const name of keep) if (!plugins.some((plugin) => plugin.name === name)) throw new TypeError(`better-supabase: $withoutPlugins({ keep }) names "${name}", which is not installed. Installed: ${plugins.map((plugin) => plugin.name).join(", ") || "none"}`);
275
+ const kept = plugins.filter((plugin) => keep.includes(plugin.name));
276
+ byKeep.set(key, kept);
277
+ return kept;
138
278
  }
279
+ //#endregion
280
+ //#region src/core/events.ts
139
281
  /**
140
282
  * The `error` event for `error`: a frozen copy, so a handler can't change
141
283
  * the `DbError` the caller gets back (invariant 5).
@@ -161,8 +303,11 @@ var EventHub = class {
161
303
  #warned = /* @__PURE__ */ new Set();
162
304
  #pending = /* @__PURE__ */ new Set();
163
305
  logger;
164
- constructor(logger = consoleLogger) {
306
+ /** The definition's `now` option; block events take their `time` from it. */
307
+ now;
308
+ constructor(logger = consoleLogger, now) {
165
309
  this.logger = logger;
310
+ this.now = now;
166
311
  }
167
312
  on(name, handler) {
168
313
  let set = this.#handlers.get(name);
@@ -260,7 +405,7 @@ function logDiagnostics(events) {
260
405
  }
261
406
  /** The event hub of a new definition, with the diagnostic handlers when `diagnostics` is on. */
262
407
  function definitionEvents(options) {
263
- const events = new EventHub(options.logger ?? consoleLogger);
408
+ const events = new EventHub(options.logger ?? consoleLogger, options.now);
264
409
  if (options.diagnostics === true) logDiagnostics(events);
265
410
  return events;
266
411
  }
@@ -431,6 +576,49 @@ function keysetCondition(orderBy, values, nullable) {
431
576
  return and(bound, after) ?? after;
432
577
  }
433
578
  //#endregion
579
+ //#region src/core/paginate.ts
580
+ /** The page size and row offset of a list call, or the reason its arguments are invalid. */
581
+ function pageWindow(args) {
582
+ if (args["offset"] !== void 0 || args["limit"] !== void 0) {
583
+ if (args["page"] !== void 0 || args["size"] !== void 0) return { invalid: "Pass \"offset\" and \"limit\" or \"page\" and \"size\"" };
584
+ const limit = Number(args["limit"]);
585
+ if (!Number.isInteger(limit) || limit < 1) return { invalid: "\"limit\" must be a positive integer" };
586
+ const offset = Number(args["offset"]);
587
+ if (!Number.isInteger(offset) || offset < 0) return { invalid: "\"offset\" must be a non-negative integer" };
588
+ return {
589
+ size: limit,
590
+ offset
591
+ };
592
+ }
593
+ const size = Number(args["size"]);
594
+ if (!Number.isInteger(size) || size < 1) return { invalid: "\"size\" must be a positive integer" };
595
+ const number = args["page"] === void 0 ? 1 : Number(args["page"]);
596
+ if (!Number.isInteger(number) || number < 1) return { invalid: "\"page\" must be a positive integer" };
597
+ return {
598
+ size,
599
+ offset: (number - 1) * size
600
+ };
601
+ }
602
+ /** The `{ items, page }` answer of an offset page from the rows read with one extra row. */
603
+ function offsetEnvelope(rows, total, size, offset) {
604
+ return {
605
+ items: rows.slice(0, size),
606
+ page: {
607
+ number: Math.floor(offset / size) + 1,
608
+ size,
609
+ total,
610
+ pages: total === null ? null : Math.max(1, Math.ceil(total / size)),
611
+ hasMore: rows.length > size
612
+ }
613
+ };
614
+ }
615
+ /** A copy of the row without the given keys. */
616
+ function strip(row, keys) {
617
+ const copy = {};
618
+ for (const key in row) if (!keys.includes(key) && Object.hasOwn(row, key)) copy[key] = row[key];
619
+ return copy;
620
+ }
621
+ //#endregion
434
622
  //#region src/core/row-keys.ts
435
623
  /** App-cased primary keys of `rows`, or of a `where` that pins the primary key. */
436
624
  function keysOf(op, rows) {
@@ -497,28 +685,7 @@ function byKey(rows, columns) {
497
685
  return keyed.map((entry) => entry.row);
498
686
  }
499
687
  //#endregion
500
- //#region src/core/write-args.ts
501
- const COUNT_MODES = /* @__PURE__ */ new Set([
502
- "exact",
503
- "planned",
504
- "estimated"
505
- ]);
506
- function isCountMode(value) {
507
- return COUNT_MODES.has(value);
508
- }
509
- /** `maxAffected` from a call, or a message when it isn't a non-negative integer. */
510
- function maxAffectedOf(args) {
511
- const value = args["maxAffected"];
512
- if (value === void 0) return {};
513
- return typeof value === "number" && Number.isInteger(value) && value >= 0 ? { maxAffected: value } : { invalid: `"maxAffected" must be a non-negative integer, got ${String(value)}` };
514
- }
515
- /** The `count` mode a mutation asks for, when it names a valid one. */
516
- function countOf(args) {
517
- const count = args?.["count"];
518
- return isCountMode(count) ? { count } : {};
519
- }
520
- //#endregion
521
- //#region src/core/repository.ts
688
+ //#region src/core/runner.ts
522
689
  const KNOWN_KEYS = /* @__PURE__ */ new Set([
523
690
  "select",
524
691
  "include",
@@ -752,6 +919,29 @@ var OperationRunner = class {
752
919
  return err(withTable);
753
920
  }
754
921
  };
922
+ //#endregion
923
+ //#region src/core/write-args.ts
924
+ const COUNT_MODES = /* @__PURE__ */ new Set([
925
+ "exact",
926
+ "planned",
927
+ "estimated"
928
+ ]);
929
+ function isCountMode(value) {
930
+ return COUNT_MODES.has(value);
931
+ }
932
+ /** `maxAffected` from a call, or a message when it isn't a non-negative integer. */
933
+ function maxAffectedOf(args) {
934
+ const value = args["maxAffected"];
935
+ if (value === void 0) return {};
936
+ return typeof value === "number" && Number.isInteger(value) && value >= 0 ? { maxAffected: value } : { invalid: `"maxAffected" must be a non-negative integer, got ${String(value)}` };
937
+ }
938
+ /** The `count` mode a mutation asks for, when it names a valid one. */
939
+ function countOf(args) {
940
+ const count = args?.["count"];
941
+ return isCountMode(count) ? { count } : {};
942
+ }
943
+ //#endregion
944
+ //#region src/core/repository.ts
755
945
  const sensitiveByTable = /* @__PURE__ */ new WeakMap();
756
946
  const primaryOrders = /* @__PURE__ */ new WeakMap();
757
947
  const existsSelections = /* @__PURE__ */ new WeakMap();
@@ -1084,32 +1274,10 @@ function createRepository(runner, table) {
1084
1274
  if (Array.isArray(target)) return target.map((name) => builder.column(table, String(name)));
1085
1275
  return invalidRequest(`Invalid onConflict on "${table.key}"`, table.key);
1086
1276
  }
1087
- function pageWindow(args) {
1088
- if (args["offset"] !== void 0 || args["limit"] !== void 0) {
1089
- if (args["page"] !== void 0 || args["size"] !== void 0) return { invalid: "Pass \"offset\" and \"limit\" or \"page\" and \"size\"" };
1090
- const limit = Number(args["limit"]);
1091
- if (!Number.isInteger(limit) || limit < 1) return { invalid: "\"limit\" must be a positive integer" };
1092
- const offset = Number(args["offset"]);
1093
- if (!Number.isInteger(offset) || offset < 0) return { invalid: "\"offset\" must be a non-negative integer" };
1094
- return {
1095
- size: limit,
1096
- offset
1097
- };
1098
- }
1099
- const size = Number(args["size"]);
1100
- if (!Number.isInteger(size) || size < 1) return { invalid: "\"size\" must be a positive integer" };
1101
- const number = args["page"] === void 0 ? 1 : Number(args["page"]);
1102
- if (!Number.isInteger(number) || number < 1) return { invalid: "\"page\" must be a positive integer" };
1103
- return {
1104
- size,
1105
- offset: (number - 1) * size
1106
- };
1107
- }
1108
1277
  async function offsetPage(args) {
1109
1278
  const window = pageWindow(args);
1110
1279
  if ("invalid" in window) return runner.fail(table, dbError("invalid_request", window.invalid));
1111
1280
  const { size, offset } = window;
1112
- const number = Math.floor(offset / size) + 1;
1113
1281
  const count = args["count"];
1114
1282
  const orderBy = builder.orderBy(table, args["orderBy"]);
1115
1283
  const op = selectOp(args, {
@@ -1121,18 +1289,7 @@ function createRepository(runner, table) {
1121
1289
  });
1122
1290
  const result = await run(op, args);
1123
1291
  if (!result.ok) return result;
1124
- const rows = result.data.rows;
1125
- const total = result.data.count;
1126
- return ok({
1127
- items: rows.slice(0, size),
1128
- page: {
1129
- number,
1130
- size,
1131
- total,
1132
- pages: total === null ? null : Math.max(1, Math.ceil(total / size)),
1133
- hasMore: rows.length > size
1134
- }
1135
- });
1292
+ return ok(offsetEnvelope(result.data.rows, result.data.count, size, offset));
1136
1293
  }
1137
1294
  async function cursorPage(args) {
1138
1295
  const size = Number(args["size"]);
@@ -1209,11 +1366,6 @@ function createRepository(runner, table) {
1209
1366
  }
1210
1367
  return base;
1211
1368
  }
1212
- function strip(row, keys) {
1213
- const copy = {};
1214
- for (const key in row) if (!keys.includes(key) && Object.hasOwn(row, key)) copy[key] = row[key];
1215
- return copy;
1216
- }
1217
1369
  //#endregion
1218
1370
  //#region src/core/rpc-result.ts
1219
1371
  const columnsByFunction = /* @__PURE__ */ new WeakMap();
@@ -1286,28 +1438,20 @@ function decodeRpcResult(meta, fn, data) {
1286
1438
  }
1287
1439
  //#endregion
1288
1440
  //#region src/core/define.ts
1289
- function isExecutor(value) {
1290
- return typeof value === "object" && value !== null && typeof value.execute === "function" && typeof value.name === "string";
1291
- }
1292
- /** No plugins, one shared array so the caches keyed on a plugin list hit. */
1293
- const NO_PLUGINS = Object.freeze([]);
1294
- /** The kept lists per installed list and `keep` names, so each is one stable array. */
1295
- const keptLists = /* @__PURE__ */ new WeakMap();
1296
- /** The installed plugins named in `keep`; a name that isn't installed throws, so a typo can't drop tracing silently. */
1297
- function keptPlugins(plugins, keep) {
1298
- if (keep.length === 0) return NO_PLUGINS;
1299
- let byKeep = keptLists.get(plugins);
1300
- if (!byKeep) {
1301
- byKeep = /* @__PURE__ */ new Map();
1302
- keptLists.set(plugins, byKeep);
1303
- }
1304
- const key = keep.join("\0");
1305
- const cached = byKeep.get(key);
1441
+ const isStorageApi = (value) => isRecord(value) && typeof value["from"] === "function";
1442
+ /** A supabase-js client builds a new storage client on each read of `storage`, so it is read once per connection. */
1443
+ const clientStorage = /* @__PURE__ */ new WeakMap();
1444
+ function storageOf(source) {
1445
+ if (source.storage) return source.storage;
1446
+ const cached = clientStorage.get(source);
1306
1447
  if (cached) return cached;
1307
- for (const name of keep) if (!plugins.some((plugin) => plugin.name === name)) throw new TypeError(`better-supabase: $withoutPlugins({ keep }) names "${name}", which is not installed. Installed: ${plugins.map((plugin) => plugin.name).join(", ") || "none"}`);
1308
- const kept = plugins.filter((plugin) => keep.includes(plugin.name));
1309
- byKeep.set(key, kept);
1310
- return kept;
1448
+ const client = source.client;
1449
+ const storage = isRecord(client) ? client["storage"] : void 0;
1450
+ if (isStorageApi(storage)) {
1451
+ clientStorage.set(source, storage);
1452
+ return storage;
1453
+ }
1454
+ throw new TypeError("better-supabase: db.$storage needs a client with storage, or connect(executor, context, { storage })");
1311
1455
  }
1312
1456
  /**
1313
1457
  * The isomorphic definition of your data layer: schema plus plugins. Holds no
@@ -1490,7 +1634,10 @@ var BetterSupabase = class BetterSupabase {
1490
1634
  ...options.timeout === void 0 ? {} : { timeout: options.timeout },
1491
1635
  ...options.retry === void 0 ? {} : { retry: options.retry }
1492
1636
  };
1493
- return this.#db(client, base, context, this.plugins, recorder, tuning);
1637
+ return this.#db({
1638
+ client,
1639
+ storage: options.storage
1640
+ }, base, context, this.plugins, recorder, tuning);
1494
1641
  }
1495
1642
  /**
1496
1643
  * The `postgrestExecutor` options this definition implies
@@ -1517,7 +1664,7 @@ var BetterSupabase = class BetterSupabase {
1517
1664
  }
1518
1665
  return context;
1519
1666
  }
1520
- #db(client, base, given, plugins, recorder, tuning = {}, events = this.events) {
1667
+ #db(source, base, given, plugins, recorder, tuning = {}, events = this.events) {
1521
1668
  const context = this.#derive(given, plugins);
1522
1669
  let executor = base;
1523
1670
  for (const plugin of plugins) if (plugin.wrapExecutor) executor = plugin.wrapExecutor(executor);
@@ -1536,91 +1683,17 @@ var BetterSupabase = class BetterSupabase {
1536
1683
  truncatedTables: this.#truncatedTables,
1537
1684
  tuning
1538
1685
  });
1539
- /**
1540
- * `db.$search({ score: true })`: the ranked ids and scores from
1541
- * `search_<table>_scores`, then those rows through the table (RLS and
1542
- * `where` apply), best first, each with `$score`.
1543
- */
1544
- const scoredSearch = async (table, fnArgs, args, hint) => {
1545
- const [key, ...rest] = table.primaryKey;
1546
- if (key === void 0 || rest.length > 0) return err(dbError("invalid_request", "db.$search({ score: true }) needs a table with a one-column primary key", { table: table.key }));
1547
- const { builder } = runner.runtime;
1548
- const scoresTable = {
1549
- key: `${table.key}$scores`,
1550
- name: `search_${table.name}_scores`,
1551
- schema: table.schema,
1552
- kind: "view",
1553
- columns: {
1554
- id: {
1555
- db: "id",
1556
- type: "jsonb",
1557
- nullable: false,
1558
- hasDefault: false
1559
- },
1560
- score: {
1561
- db: "score",
1562
- type: "float8",
1563
- nullable: false,
1564
- hasDefault: false
1565
- }
1566
- },
1567
- primaryKey: [],
1568
- uniqueKeys: {},
1569
- relations: {},
1570
- flags: {}
1571
- };
1572
- const scored = await runner.runInternal({
1573
- kind: "select",
1574
- table: scoresTable,
1575
- selection: builder.selection(scoresTable, ["id", "score"], void 0),
1576
- where: void 0,
1577
- orderBy: [],
1578
- limit: void 0,
1579
- offset: void 0,
1580
- count: void 0,
1581
- head: false,
1582
- single: void 0,
1583
- source: {
1584
- schema: table.schema,
1585
- name: scoresTable.name,
1586
- args: fnArgs
1587
- }
1588
- }, table, args.signal);
1589
- if (!scored.ok) return err(hint(scored.error));
1590
- const ranked = scored.data.rows.flatMap((row) => row["score"] === void 0 || row["score"] === null ? [] : [{
1591
- id: row["id"],
1592
- score: Number(row["score"])
1593
- }]);
1594
- if (ranked.length === 0) return ok([]);
1595
- const byId = new Map(ranked.map((entry) => [String(entry.id), entry]));
1596
- const op = {
1597
- kind: "select",
1598
- table,
1599
- selection: builder.selection(table, args.select, args.include),
1600
- where: builder.where(table, { AND: [...args.where === void 0 ? [] : [args.where], { [key]: { in: ranked.map((entry) => entry.id) } }] }),
1601
- orderBy: [],
1602
- limit: ranked.length,
1603
- offset: void 0,
1604
- count: void 0,
1605
- head: false,
1606
- single: void 0
1607
- };
1608
- const result = await runner.run(op, {}, args.signal);
1609
- if (!result.ok) return result;
1610
- return ok(result.data.rows.flatMap((row) => {
1611
- const entry = byId.get(String(row[key]));
1612
- return entry ? [{
1613
- ...row,
1614
- $score: entry.score
1615
- }] : [];
1616
- }).toSorted((a, b) => b.$score - a.$score));
1617
- };
1618
1686
  const db = Object.create(this.#tablePrototype());
1619
1687
  dbStates.set(db, {
1620
1688
  runner,
1621
1689
  plugins,
1622
1690
  repositories: /* @__PURE__ */ new Map()
1623
1691
  });
1692
+ const { client } = source;
1693
+ Object.defineProperty(db, "$storage", {
1694
+ get: () => storageOf(source),
1695
+ configurable: true
1696
+ });
1624
1697
  Object.assign(db, {
1625
1698
  $client: client,
1626
1699
  $executor: executor,
@@ -1637,11 +1710,11 @@ var BetterSupabase = class BetterSupabase {
1637
1710
  if (events.has("error")) events.emit("error", errorEvent(error));
1638
1711
  return error;
1639
1712
  }),
1640
- $with: (extra) => this.#db(client, base, {
1713
+ $with: (extra) => this.#db(source, base, {
1641
1714
  ...given,
1642
1715
  ...extra
1643
1716
  }, plugins, recorder, tuning),
1644
- $withoutPlugins: (options) => this.#db(client, base, given, keptPlugins(plugins, options?.keep ?? []), recorder, tuning),
1717
+ $withoutPlugins: (options) => this.#db(source, base, given, keptPlugins(plugins, options?.keep ?? []), recorder, tuning),
1645
1718
  $stats: () => recorder.snapshot(),
1646
1719
  $table: (name) => {
1647
1720
  if (!Object.hasOwn(this.meta.tables, name)) throw new TypeError(`better-supabase: unknown table "${name}". Known: ${Object.keys(this.meta.tables).join(", ")}`);
@@ -1657,46 +1730,7 @@ var BetterSupabase = class BetterSupabase {
1657
1730
  if (!Array.isArray(target)) return AsyncResult.err(dbError("invalid_request", "db.$many() expects an array of specs or a read set"));
1658
1731
  return many(target, options?.signal, true);
1659
1732
  },
1660
- $search: (name, args) => AsyncResult.from(async () => {
1661
- const table = Object.hasOwn(this.meta.tables, name) ? this.meta.tables[name] : void 0;
1662
- if (!table) return err(dbError("invalid_request", `db.$search(): unknown table "${name}"`));
1663
- if (!base.functionSources) return err(dbError("invalid_request", `db.$search() reads from a function; the ${base.name} executor doesn't support that`, { table: table.key }));
1664
- const query = (args.vector === void 0 || args.vector === null) && args.text !== void 0 ? null : vectorLiteral(args.vector ?? []);
1665
- const k = args.k ?? 10;
1666
- if (query === void 0 || !Number.isInteger(k) || k < 1) return err(dbError("invalid_input", "db.$search() needs a vector of finite numbers (or text alone on a hybrid entry) and a positive integer k", { table: table.key }));
1667
- const { builder } = runner.runtime;
1668
- const fnArgs = {
1669
- query,
1670
- k,
1671
- ...args.filter === void 0 ? {} : { filter: args.filter },
1672
- ...args.text === void 0 ? {} : { text_query: args.text }
1673
- };
1674
- const hint = (error) => error.code === "PGRST202" || error.code === "42883" ? {
1675
- ...error,
1676
- hint: `Add "${table.schema}.${table.name}" to vectorSearch in better-supabase.config.ts (with prefilter or hybrid for filter and text) and run \`better-supabase sql sync\`.`
1677
- } : error;
1678
- if (args.score) return scoredSearch(table, fnArgs, args, hint);
1679
- const op = {
1680
- kind: "select",
1681
- table,
1682
- selection: builder.selection(table, args.select, args.include),
1683
- where: builder.where(table, args.where),
1684
- orderBy: [],
1685
- limit: k,
1686
- offset: void 0,
1687
- count: void 0,
1688
- head: false,
1689
- single: void 0,
1690
- source: {
1691
- schema: table.schema,
1692
- name: `search_${table.name}`,
1693
- args: fnArgs
1694
- }
1695
- };
1696
- const result = await runner.run(op, {}, args.signal);
1697
- if (result.ok) return ok(result.data.rows);
1698
- return err(hint(result.error));
1699
- })
1733
+ $search: (name, args) => searchTable(runner, base, this.meta, name, args)
1700
1734
  });
1701
1735
  const many = (specs, signal, usePlugins) => AsyncResult.from(async () => {
1702
1736
  const invalid = specs.findIndex((spec) => !isQuerySpec(spec));
@@ -1707,7 +1741,7 @@ var BetterSupabase = class BetterSupabase {
1707
1741
  ...base,
1708
1742
  batch
1709
1743
  }, specs.length) : void 0;
1710
- const target = batching ? this.#db(client, batching.executor, given, active, recorder, tuning) : usePlugins ? db : this.#db(client, base, given, NO_PLUGINS, recorder, tuning);
1744
+ const target = batching ? this.#db(source, batching.executor, given, active, recorder, tuning) : usePlugins ? db : this.#db(source, base, given, NO_PLUGINS, recorder, tuning);
1711
1745
  const results = await Promise.all(specs.map(async (spec) => {
1712
1746
  try {
1713
1747
  return await runSpec(target, spec, signal);
@@ -1740,7 +1774,7 @@ var BetterSupabase = class BetterSupabase {
1740
1774
  ...signal ? { signal } : {}
1741
1775
  });
1742
1776
  if (!called.ok) return called;
1743
- return this.#decodeReadSet(client, context, set, bound, called.data);
1777
+ return this.#decodeReadSet(source, context, set, bound, called.data);
1744
1778
  });
1745
1779
  const throwAs = this.options.throwAs;
1746
1780
  if (throwAs) for (const name of [
@@ -1756,11 +1790,11 @@ var BetterSupabase = class BetterSupabase {
1756
1790
  * by running each spec against those rows, so casing, codecs and
1757
1791
  * aggregates come out exactly as from `db.$run`.
1758
1792
  */
1759
- async #decodeReadSet(client, context, set, specs, data) {
1793
+ async #decodeReadSet(source, context, set, specs, data) {
1760
1794
  const payload = data ?? {};
1761
1795
  let rows = [];
1762
1796
  let count = null;
1763
- const decoder = this.#db(client, {
1797
+ const decoder = this.#db(source, {
1764
1798
  name: "read-set",
1765
1799
  execute: (op) => {
1766
1800
  if (op.kind === "select" && op.single) {
@@ -1772,7 +1806,7 @@ var BetterSupabase = class BetterSupabase {
1772
1806
  count
1773
1807
  }));
1774
1808
  }
1775
- }, context, NO_PLUGINS, new StatsRecorder(), {}, this.#decodeEvents ??= new EventHub(this.events.logger));
1809
+ }, context, NO_PLUGINS, new StatsRecorder(), {}, this.#decodeEvents ??= new EventHub(this.events.logger, this.events.now));
1776
1810
  const out = {};
1777
1811
  for (const [key, spec] of Object.entries(specs)) {
1778
1812
  const entry = payload[key];
@@ -1863,7 +1897,7 @@ function runSpec(db, spec, signal) {
1863
1897
  function rpc(meta, executor, errorMappers, defaults, name, rest) {
1864
1898
  const [args, options] = rest;
1865
1899
  return AsyncResult.from(async () => {
1866
- if (!executor.rpc) return err(dbError("invalid_request", `Executor "${executor.name}" does not support rpc()`));
1900
+ if (!executor.rpc) return err(dbError("unsupported", `Executor "${executor.name}" does not support rpc()`));
1867
1901
  const tuning = {
1868
1902
  ...defaults,
1869
1903
  ...options?.timeout === void 0 ? {} : { timeout: options.timeout },