better-supabase 0.7.1 → 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.
- package/README.md +6 -2
- package/dist/{access-sql-B0dF-SoF.js → access-sql-CrSbK1q-.js} +1 -1
- package/dist/{adapter-iKgjHVPx.js → adapter-CN45ibbV.js} +658 -157
- package/dist/{agents-CVHGd7It.d.ts → agents-BY_LQXtQ.d.ts} +4 -4
- package/dist/{ai-cache-CBWs1W0k.js → ai-cache-Dfgk8nBT.js} +2 -1
- package/dist/{ai-cache-DaDu_G5L.d.ts → ai-cache-DrUMMgp6.d.ts} +4 -4
- package/dist/{ai-chat-B24UI962.js → ai-chat-CVLRWbtS.js} +4 -3
- package/dist/{ai-chat-7amvXjmQ.d.ts → ai-chat-DXkMy74O.d.ts} +5 -5
- package/dist/{ai-files-CSPNswUY.js → ai-files-CioLu5du.js} +5 -4
- package/dist/ai-message-DfaP8sis.js +14 -0
- package/dist/ai-sdk/agents/index.d.ts +4 -4
- package/dist/ai-sdk/batches/index.d.ts +4 -4
- package/dist/ai-sdk/batches/index.js +4 -4
- package/dist/ai-sdk/cache/index.d.ts +2 -2
- package/dist/ai-sdk/cache/index.js +2 -2
- package/dist/ai-sdk/chat/index.d.ts +1 -1
- package/dist/ai-sdk/chat/index.js +8 -20
- package/dist/ai-sdk/embeddings/index.d.ts +2 -2
- package/dist/ai-sdk/files/index.d.ts +3 -3
- package/dist/ai-sdk/files/index.js +4 -4
- package/dist/ai-sdk/index.d.ts +37 -9
- package/dist/ai-sdk/index.js +3 -2
- package/dist/ai-sdk/mcp/index.d.ts +43 -6
- package/dist/ai-sdk/mcp/index.js +36 -7
- package/dist/ai-sdk/memory/index.d.ts +2 -2
- package/dist/ai-sdk/memory/index.js +1 -1
- package/dist/ai-sdk/workflow/index.d.ts +6 -6
- package/dist/ai-sdk/workflow/index.js +13 -24
- package/dist/{ai-tasks-Cd1HMFvB.d.ts → ai-tasks-BRQ6iQLc.d.ts} +4 -4
- package/dist/{announcements-ZRGnScWI.d.ts → announcements-Bouy0Ski.d.ts} +3 -3
- package/dist/{announcements-CiyOs-xP.js → announcements-p_BFofiR.js} +1 -1
- package/dist/api-Dnf2q-Ht.d.ts +370 -0
- package/dist/api-DtHFC037.js +676 -0
- package/dist/{api-keys-CIjghYjV.d.ts → api-keys-C8BlF3L2.d.ts} +4 -4
- package/dist/arazzo/index.d.ts +255 -0
- package/dist/arazzo/index.js +622 -0
- package/dist/{assistant-DwdpDH1q.d.ts → assistant-DBlFDZsi.d.ts} +5 -5
- package/dist/astro/index.d.ts +7 -7
- package/dist/astro/index.js +7 -7
- package/dist/asyncapi/index.d.ts +103 -0
- package/dist/asyncapi/index.js +569 -0
- package/dist/authorizer-ayxUDXXP.js +126 -0
- package/dist/authorizer-eiOjo-3l.d.ts +73 -0
- package/dist/better-result/index.d.ts +118 -0
- package/dist/better-result/index.js +64 -0
- package/dist/{bind-l4kAvYSv.js → bind-ButSzrHe.js} +1 -1
- package/dist/{bind-Bu_ZNa3W.d.ts → bind-CQ5mPyX1.d.ts} +3 -3
- package/dist/{block-events-CrT8r7Fe.js → block-events-DTxU5tfr.js} +18 -3
- package/dist/{block-fields-GFkxl4dP.js → block-fields-CroxUuF2.js} +3 -3
- package/dist/{block-fields-SJ6fEf3o.d.ts → block-fields-D1pfrcIY.d.ts} +2 -2
- package/dist/{block-helpers-CKtbFcRv.d.ts → block-helpers-C0Xj8War.d.ts} +2 -2
- package/dist/{block-helpers-DWHxHsEQ.js → block-helpers-Cy3pB96I.js} +41 -9
- package/dist/{block-hooks-BmjMyXTa.js → block-hooks-BPNMIlLl.js} +3 -3
- package/dist/{block-hooks-plbZ0AbJ.d.ts → block-hooks-DaOVC7SC.d.ts} +3 -3
- package/dist/{block-transport-BLr-ZgLc.js → block-transport-bAKh-dGc.js} +28 -2
- package/dist/{block-transport-DvaoPuZ9.d.ts → block-transport-inD4fFq-.d.ts} +24 -2
- package/dist/blocks/agents/index.d.ts +3 -3
- package/dist/blocks/agents/index.js +5 -4
- package/dist/blocks/ai-cache/index.d.ts +3 -3
- package/dist/blocks/ai-cache/index.js +3 -3
- package/dist/blocks/ai-chat/index.d.ts +9 -4
- package/dist/blocks/ai-chat/index.js +5 -5
- package/dist/blocks/ai-chat/react/index.d.ts +3 -3
- package/dist/blocks/ai-chat/react/index.js +5 -5
- package/dist/blocks/ai-files/index.d.ts +3 -3
- package/dist/blocks/ai-files/index.js +3 -3
- package/dist/blocks/ai-providers/index.d.ts +3 -3
- package/dist/blocks/ai-providers/index.js +8 -7
- package/dist/blocks/ai-tasks/index.d.ts +3 -3
- package/dist/blocks/ai-tasks/index.js +7 -6
- package/dist/blocks/announcements/index.d.ts +3 -3
- package/dist/blocks/announcements/index.js +3 -3
- package/dist/blocks/announcements/react/index.d.ts +3 -3
- package/dist/blocks/announcements/react/index.js +3 -3
- package/dist/blocks/api-keys/index.d.ts +5 -5
- package/dist/blocks/api-keys/index.js +8 -8
- package/dist/blocks/attachments/index.d.ts +12 -8
- package/dist/blocks/attachments/index.js +22 -13
- package/dist/blocks/audit/index.d.ts +21 -10
- package/dist/blocks/audit/index.js +30 -11
- package/dist/blocks/billing/index.d.ts +11 -9
- package/dist/blocks/billing/index.js +15 -15
- package/dist/blocks/comments/index.d.ts +8 -8
- package/dist/blocks/comments/index.js +8 -7
- package/dist/blocks/connectors/index.d.ts +3 -3
- package/dist/blocks/connectors/index.js +7 -6
- package/dist/blocks/data-lifecycle/index.d.ts +12 -8
- package/dist/blocks/data-lifecycle/index.js +13 -8
- package/dist/blocks/entitlements/index.d.ts +3 -3
- package/dist/blocks/entitlements/index.js +1 -1
- package/dist/blocks/flags/index.d.ts +4 -4
- package/dist/blocks/flags/index.js +4 -3
- package/dist/blocks/inbox/index.d.ts +3 -3
- package/dist/blocks/inbox/index.js +4 -5
- package/dist/blocks/inbox/react/index.d.ts +1 -1
- package/dist/blocks/inbox/react/index.js +1 -1
- package/dist/blocks/inbox/react/server.d.ts +1 -1
- package/dist/blocks/index.d.ts +10 -10
- package/dist/blocks/index.js +6 -6
- package/dist/blocks/jobs/index.d.ts +48 -32
- package/dist/blocks/jobs/index.js +44 -287
- package/dist/blocks/knowledge/index.d.ts +3 -3
- package/dist/blocks/knowledge/index.js +3 -3
- package/dist/blocks/memory/index.d.ts +4 -4
- package/dist/blocks/memory/index.js +7 -6
- package/dist/blocks/notifications/index.d.ts +11 -9
- package/dist/blocks/notifications/index.js +20 -25
- package/dist/blocks/notifications/react/index.d.ts +1 -1
- package/dist/blocks/notifications/react/index.js +1 -1
- package/dist/blocks/onboarding/index.d.ts +3 -3
- package/dist/blocks/onboarding/index.js +3 -3
- package/dist/blocks/onboarding/react/index.d.ts +2 -2
- package/dist/blocks/onboarding/react/index.js +2 -2
- package/dist/blocks/onboarding/react/server.d.ts +1 -1
- package/dist/blocks/organizations/index.d.ts +9 -9
- package/dist/blocks/organizations/index.js +11 -18
- package/dist/blocks/outbox/index.d.ts +2 -2
- package/dist/blocks/outbox/index.js +16 -25
- package/dist/blocks/profiles/index.d.ts +7 -7
- package/dist/blocks/profiles/index.js +7 -6
- package/dist/blocks/push/index.d.ts +4 -4
- package/dist/blocks/push/index.js +3 -3
- package/dist/blocks/settings/index.d.ts +4 -4
- package/dist/blocks/settings/index.js +7 -6
- package/dist/blocks/sso/index.d.ts +5 -5
- package/dist/blocks/sso/index.js +6 -5
- package/dist/blocks/usage/index.d.ts +3 -3
- package/dist/blocks/usage/index.js +5 -4
- package/dist/blocks/waitlist/index.d.ts +5 -5
- package/dist/blocks/waitlist/index.js +5 -4
- package/dist/blocks/webhooks/index.d.ts +22 -13
- package/dist/blocks/webhooks/index.js +41 -70
- package/dist/blocks/workflow-builder/index.d.ts +4 -4
- package/dist/blocks/workflow-builder/index.js +3 -3
- package/dist/blocks/workflow-builder/react/index.d.ts +4 -4
- package/dist/blocks/workflow-builder/react/index.js +4 -4
- package/dist/blocks/workflows/index.d.ts +3 -3
- package/dist/blocks/workflows/index.js +3 -3
- package/dist/blocks/workflows/react/index.d.ts +3 -3
- package/dist/blocks/workflows/react/index.js +3 -3
- package/dist/build-hPwk3_X5.js +1296 -0
- package/dist/{build-BXIzE6Xv.js → build-meLuYGri.js} +3 -3
- package/dist/casing-DdFWEtqr.js +16 -0
- package/dist/chat-sdk/index.d.ts +6 -6
- package/dist/chat-sdk/index.js +5 -4
- package/dist/chat-sdk/react/index.d.ts +1 -1
- package/dist/chat-sdk/react/server.d.ts +1 -1
- package/dist/{claims-DDBQT6BK.js → claims-0KZVT804.js} +1 -1
- package/dist/cli/add-1dc5wM5k.js +69 -0
- package/dist/cli/arazzo-1.0-BalU61-_.js +532 -0
- package/dist/cli/arazzo-1.1-Bnfasbun.js +705 -0
- package/dist/cli/asyncapi-3.0.0-C78dBjR6.js +5593 -0
- package/dist/cli/asyncapi-3.1.0-g-7aIfV1.js +5833 -0
- package/dist/cli/bin.js +4 -4
- package/dist/cli/cache-CIfA-jBV.js +483 -0
- package/dist/cli/{codemod-Bl_tQpHn.js → codemod-JVlTQQG2.js} +4 -4
- package/dist/cli/{command-CK14fP91.js → command-DV-StG1x.js} +5 -0
- package/dist/cli/{config-DU7EJImt.js → config-C2Pz2_4A.js} +7 -4
- package/dist/cli/config-DpbF8ML3.js +2 -0
- package/dist/cli/{config-NiPxAmUF.js → config-M-WzL9O2.js} +116 -18
- package/dist/cli/{db-DOBPt660.js → db-BkcfOlyB.js} +2 -1
- package/dist/cli/{diff-SjkO5rNr.js → diff-D1jGdb3Y.js} +1 -1
- package/dist/cli/{doctor-DJk0aeBi.js → doctor-VcDtuusV.js} +316 -221
- package/dist/cli/emit-BHHfwUoT.js +1136 -0
- package/dist/cli/{env-qXgyMV6r.js → env-B--LMhEe.js} +13 -10
- package/dist/cli/env-vzBG90Um.js +2 -0
- package/dist/cli/{env-CJLbUVPB.js → env-zHJtMIBo.js} +11 -3
- package/dist/cli/{errors-4v4DTtda.js → errors-CqTLXe2M.js} +18 -2
- package/dist/cli/{fastest-levenshtein-CFN-lNDv.js → fastest-levenshtein-CF7BCi9l.js} +1 -1
- package/dist/cli/files-BVupXPIC.js +34 -0
- package/dist/cli/gen-DmVj3u4L.js +322 -0
- package/dist/cli/{init-BHuEQrQK.js → glue-C1UE8gQN.js} +16 -313
- package/dist/cli/index.d.ts +59 -31
- package/dist/cli/index.js +8 -6
- package/dist/cli/init-CVZ3s5kl.js +258 -0
- package/dist/cli/{introspect-DzR2nyQb.js → introspect-BToGNfm-.js} +14 -14
- package/dist/cli/{io-DI1mTdSA.js → io-CFzJVJ68.js} +5 -1
- package/dist/cli/{keys-BGCnnb-s.js → keys-CJhtIxJ3.js} +4 -4
- package/dist/cli/metadata-DSRKCaf-.js +133 -0
- package/dist/cli/names-D6LrQnOv.js +6 -0
- package/dist/cli/openapi-3.0-t7xwkuRH.js +928 -0
- package/dist/cli/openapi-3.1-CVze7tBS.js +870 -0
- package/dist/cli/openapi-3.2-CFoMYM01.js +1031 -0
- package/dist/cli/{openapi-BlRJ18s3.js → openapi-DWa4Ir1q.js} +8 -14
- package/dist/cli/prompts-BdeVmVpg.js +2 -0
- package/dist/cli/{prompts-BNcNfAve.js → prompts-DZJB1nTw.js} +6 -6
- package/dist/cli/{rolldown-runtime-BPOCksWG.js → rolldown-runtime-CMFfr-1z.js} +3 -1
- package/dist/cli/run-DA6_lg3w.js +389 -0
- package/dist/cli/run-DuN1MX-7.js +705 -0
- package/dist/cli/scaffold-5DenHSxF.js +292 -0
- package/dist/cli/scaffold-CwQUMFRb.js +2 -0
- package/dist/cli/{seed-DQzqT7LP.js → seed-CzBmrGON.js} +14 -18
- package/dist/cli/seed-DOmit9Hq.js +2 -0
- package/dist/cli/{skills-QQs4q68J.js → skills-CnO8QFS7.js} +7 -6
- package/dist/cli/snapshot-Bstk6ulj.js +287 -0
- package/dist/cli/source-args-BYfq6imV.js +31 -0
- package/dist/cli/spec-CzosTYm3.js +7438 -0
- package/dist/cli/spec-T_0Bcyw7.js +2 -0
- package/dist/cli/{sql-B8csQPyn.js → sql-BKOOQAX3.js} +240 -218
- package/dist/cli/sql-DJrNDxQm.js +3 -0
- package/dist/cli/{style-C0NFdJRL.js → style-CB3vxgh0.js} +3 -3
- package/dist/cli/typegen-Demi5-VQ.js +486 -0
- package/dist/cli/validate-Ca13ktgz.js +7522 -0
- package/dist/cli/{version-59gcepIG.js → version-B4k0aUxS.js} +1 -1
- package/dist/client/index.d.ts +4 -3
- package/dist/client/index.js +60 -3
- package/dist/client/native/index.d.ts +3 -3
- package/dist/client/native/index.js +3 -3
- package/dist/{client-CI0Z2zWX.js → client-wxeTQFtB.js} +36 -3
- package/dist/{clone-BfgmLU90.js → clone-dN9XOL1K.js} +9 -1
- package/dist/{cloud-event-BnmD5fb9.js → cloud-event-CTh9Sr5w.js} +16 -2
- package/dist/{cloud-event-C1JCc1bH.d.ts → cloud-event-Dune0KI7.d.ts} +16 -2
- package/dist/{compiler-DY_wkj4R.d.ts → compiler-V1qvcST1.d.ts} +2 -2
- package/dist/{compose-BIBNgAnq.js → compose-BHej1acw.js} +3 -3
- package/dist/{composite--yqry7uW.d.ts → composite-CWAJTRBF.d.ts} +6 -6
- package/dist/{composite-DXVUibdi.js → composite-zTe0TCqj.js} +4 -4
- package/dist/config/index.d.ts +3 -4
- package/dist/config/index.js +4 -4
- package/dist/config-DlKvtt95.js +540 -0
- package/dist/{connector-Dv8kK0MO.d.ts → connector-CySQEFcW.d.ts} +1 -1
- package/dist/{connectors-CrpknU0P.d.ts → connectors--PGhmiu0.d.ts} +4 -4
- package/dist/{context-BCrWe7ow.d.ts → context-DsV2SueA.d.ts} +11 -2
- package/dist/context-nPDvQ-Zl.js +41 -0
- package/dist/credentials/index.d.ts +5 -5
- package/dist/credentials/index.js +9 -17
- package/dist/{cron-DVPUg5k3.js → cron-D25Ukpxy.js} +1 -1
- package/dist/cron-route-D2AN9SA1.js +24 -0
- package/dist/{csv-DCK-PT1n.js → csv-BZnHA1Py.js} +1 -1
- package/dist/{define-B-TVjC25.js → define-CFQcvM20.js} +263 -229
- package/dist/{define-CJJkkr1-.d.ts → define-DmcfoNXB.d.ts} +136 -111
- package/dist/edge/index.d.ts +66 -13
- package/dist/edge/index.js +65 -39
- package/dist/elysia/index.d.ts +1 -1
- package/dist/elysia/index.js +1 -1
- package/dist/{embeddings-C9KGQnXt.d.ts → embeddings-B4vhS-dY.d.ts} +1 -1
- package/dist/{ended-XjeGQ5XW.d.ts → ended-CcvcRqEd.d.ts} +7 -1
- package/dist/{entitlements-DRl6ZJUm.js → entitlements-BYFf0Cdh.js} +2 -2
- package/dist/{entitlements-BKSVGtrG.d.ts → entitlements-Ds8qoYZ-.d.ts} +1 -1
- package/dist/env/index.d.ts +1 -1
- package/dist/env/index.js +9 -2
- package/dist/{errors-B11Duf73.js → errors-2M6CKMP4.js} +5 -0
- package/dist/{errors-DLjJHPLK.js → errors-rZ7VIqp6.js} +2 -2
- package/dist/{escape-like-ImTK0ps_.d.ts → escape-like-DDWoHzh_.d.ts} +1 -1
- package/dist/eve/index.d.ts +5 -5
- package/dist/eve/index.js +5 -11
- package/dist/{eve-gT2Fpjut.d.ts → eve-CoAIcCkq.d.ts} +2 -2
- package/dist/events/index.d.ts +4 -4
- package/dist/events/index.js +7 -2
- package/dist/{events-DWDhx77e.d.ts → events-D1BOCll8.d.ts} +6 -4
- package/dist/{executor-Bq28caBo.js → executor-B-fD7DLt.js} +52 -35
- package/dist/executor-B_Hfobee.js +162 -0
- package/dist/{executor-BVBFM86G.d.ts → executor-CpxLPCiz.d.ts} +1 -1
- package/dist/{executor-CaWigTyR.d.ts → executor-DfEtf0cq.d.ts} +43 -27
- package/dist/{executor-DvsBbNBS.d.ts → executor-Drzu3dBK.d.ts} +2 -2
- package/dist/{executor-DbvExCFC.d.ts → executor-ngjKL_Pe.d.ts} +2 -2
- package/dist/expo/index.d.ts +4 -4
- package/dist/expo/index.js +6 -6
- package/dist/expo-sqlite/index.d.ts +3 -3
- package/dist/expo-sqlite/index.js +2 -2
- package/dist/extra-CGQ2_q3S.js +10 -0
- package/dist/{field-errors-BFOa7WhB.d.ts → field-errors-DIe9XYWL.d.ts} +17 -7
- package/dist/{field-errors-VF1yb8yI.js → field-errors-DZVRWRkf.js} +1 -1
- package/dist/format-DTXdu8ya.d.ts +70 -0
- package/dist/{framework-BmzgK32X.d.ts → framework-148t1m3C.d.ts} +5 -5
- package/dist/{framework-a7aRCIqv.js → framework-3ey3QmrO.js} +2 -2
- package/dist/function-contract-BcZenXMO.d.ts +8 -0
- package/dist/{gateway-C1ssRHnf.d.ts → gateway-S9vicgeo.d.ts} +4 -4
- package/dist/{guards-BnzDvFrz.js → guards-6F2bCtQR.js} +3 -1
- package/dist/h3/index.d.ts +1 -1
- package/dist/h3/index.js +1 -1
- package/dist/h3/v1/index.d.ts +1 -1
- package/dist/h3/v1/index.js +1 -1
- package/dist/{message-CaKlqdsX.js → history-GH1HJWQV.js} +65 -13
- package/dist/hmac-DCud0myt.js +22 -0
- package/dist/hono/index.d.ts +19 -14
- package/dist/hono/index.js +21 -16
- package/dist/{hooks-1BTCJsiw.js → hooks-Bhza9Hnr.js} +68 -100
- package/dist/http-sbmBe5d2.js +25 -0
- package/dist/{inbox-i7E1ppo6.d.ts → inbox-Cd1KCEBL.d.ts} +3 -3
- package/dist/index-B72Rvv_j.d.ts +89 -0
- package/dist/{index-DunNRdnT.d.ts → index-BCHR4Ucl.d.ts} +4 -4
- package/dist/{index-CLg87OBW.d.ts → index-BUK7jUzR.d.ts} +6 -0
- package/dist/{config-D44Y7PAv.d.ts → index-Ba1SI-uO.d.ts} +625 -278
- package/dist/{index-D48jVS-N.d.ts → index-BfxOaOYs.d.ts} +4 -5
- package/dist/{index-ClmjK_o-.d.ts → index-CicIyqOe.d.ts} +4 -4
- package/dist/{index-ACiNPN4Z.d.ts → index-D69h4QqD.d.ts} +1 -1
- package/dist/index-DG2SUXDQ.d.ts +58 -0
- package/dist/{index-Bepi-Hgg.d.ts → index-DoNVLHOU.d.ts} +3 -3
- package/dist/{index-CdZKQF98.d.ts → index-R274XFlg.d.ts} +1 -1
- package/dist/{index-CewnYSpv.d.ts → index-_4R4b01v.d.ts} +8 -18
- package/dist/index.d.ts +89 -14
- package/dist/index.js +12 -11
- package/dist/{json-schema-CvER4kgT.js → json-schema-CT4tvrkA.js} +148 -102
- package/dist/{kit-Fm-Fv7q5.js → kit-BhHr9T9v.js} +36 -10
- package/dist/{kit-CkNzZUqv.d.ts → kit-W99LCPBS.d.ts} +13 -7
- package/dist/{knowledge-BXBbT0Tr.d.ts → knowledge-CAReFpRA.d.ts} +5 -5
- package/dist/{knowledge-CDmiMLew.js → knowledge-DnHtb64A.js} +4 -3
- package/dist/list/index.d.ts +1 -2
- package/dist/{list-query-BRt-zDF7.d.ts → list-query-D3JQeEL7.d.ts} +4 -4
- package/dist/mcp/index.d.ts +49 -19
- package/dist/mcp/index.js +158 -94
- package/dist/mcp/sdk/index.d.ts +38 -6
- package/dist/mcp/sdk/index.js +88 -6
- package/dist/{message-CfDoR0Y6.d.ts → message-B0fNJgq8.d.ts} +1 -2
- package/dist/{messages-B9-5887d.js → messages-CJoHHCWT.js} +4 -205
- package/dist/{mfa-Daak8ukG.d.ts → mfa-SZc9YYyb.d.ts} +1 -1
- package/dist/model-OgBxvk3N.d.ts +300 -0
- package/dist/model-messages-Cxw_Up4f.js +206 -0
- package/dist/model-messages-D4GZllOD.d.ts +34 -0
- package/dist/modules-DksjZyMW.js +77 -0
- package/dist/nestjs/index.d.ts +2 -2
- package/dist/nestjs/index.js +1 -1
- package/dist/next/index.d.ts +105 -55
- package/dist/next/index.js +204 -170
- package/dist/node/index.d.ts +2 -2
- package/dist/node/index.js +1 -1
- package/dist/{onboarding-BZGHYJks.d.ts → onboarding-LZvlK1P4.d.ts} +3 -3
- package/dist/openapi/index.d.ts +4 -2
- package/dist/openapi/index.js +21 -343
- package/dist/optional-peer-D1pi-skw.js +24 -0
- package/dist/orpc/index.d.ts +8 -8
- package/dist/orpc/index.js +21 -20
- package/dist/otel/index.d.ts +3 -3
- package/dist/otel/index.js +7 -7
- package/dist/{outbox-Cq7pPYvl.d.ts → outbox-DZfAvfzC.d.ts} +6 -6
- package/dist/overlay/index.d.ts +233 -0
- package/dist/overlay/index.js +554 -0
- package/dist/{plugin-FGY8UhYm.d.ts → plugin-CPK2HsbY.d.ts} +42 -3
- package/dist/plugins/actor/index.d.ts +1 -1
- package/dist/plugins/actor/index.js +1 -1
- package/dist/plugins/rules/index.d.ts +2 -2
- package/dist/plugins/rules/index.js +1 -1
- package/dist/plugins/soft-delete/index.d.ts +3 -3
- package/dist/plugins/soft-delete/index.js +9 -2
- package/dist/plugins/tenant/index.d.ts +7 -2
- package/dist/plugins/tenant/index.js +16 -2
- package/dist/plugins/timestamps/index.d.ts +1 -1
- package/dist/plugins/timestamps/index.js +8 -1
- package/dist/plugins/validation/index.d.ts +2 -2
- package/dist/plugins/validation/index.js +4 -4
- package/dist/{pool-CAu2nLrL.d.ts → pool-gkhbGp2E.d.ts} +2 -2
- package/dist/postgres/index.d.ts +4 -4
- package/dist/postgres/index.js +2 -1
- package/dist/{postgrest-BLVdEnfe.d.ts → postgrest-BUqLag2Q.d.ts} +1 -1
- package/dist/powersync/index.d.ts +5 -5
- package/dist/powersync/index.js +4 -4
- package/dist/powersync/react/index.d.ts +3 -3
- package/dist/powersync/react/index.js +1 -1
- package/dist/{problem-BreOl8b8.js → problem-CJvFeGu7.js} +13 -2
- package/dist/{problem-DD8LZFjc.d.ts → problem-TvGdxO1t.d.ts} +7 -1
- package/dist/{provider-Di3sRutW.js → provider-DxRTex4x.js} +1 -1
- package/dist/{provider-D-UEMvSD.d.ts → provider-ib9wzUDz.d.ts} +2 -2
- package/dist/query/index.d.ts +2 -2
- package/dist/query/index.js +1 -1
- package/dist/{query-BQ-NaZon.js → query-Ctz-qKRx.js} +1 -1
- package/dist/rate-limit-Bw7HgmFj.js +260 -0
- package/dist/react/index.d.ts +9 -9
- package/dist/react/index.js +4 -4
- package/dist/react/native/index.d.ts +1 -1
- package/dist/react/native/index.js +2 -2
- package/dist/react/server.d.ts +10 -10
- package/dist/react/server.js +3 -3
- package/dist/react/session.d.ts +2 -2
- package/dist/{react-F80mF4-t.js → react-Bmpo59D7.js} +4 -4
- package/dist/react-router/index.d.ts +6 -6
- package/dist/react-router/index.js +9 -11
- package/dist/{read-set-DuKWC9Mj.js → read-set-DAeWhqPf.js} +2 -2
- package/dist/realtime/index.d.ts +3 -3
- package/dist/realtime/index.js +30 -36
- package/dist/{refusal-DhSU2Vvr.d.ts → refusal-CFI8-5nf.d.ts} +4 -1
- package/dist/{refusal-CeJWxmkH.js → refusal-K78A1Vmq.js} +5 -5
- package/dist/{resolve-tJZY3FEa.js → resolve-Bvgf3ut_.js} +131 -42
- package/dist/{resolve-ChTYeTEl.d.ts → resolve-MxXVWyhd.d.ts} +12 -8
- package/dist/resource--vTrBe6I.d.ts +103 -0
- package/dist/resource-BqNqlYg9.js +91 -0
- package/dist/resource-DA811u_4.js +463 -0
- package/dist/resource-execute-rbKvuCsY.d.ts +12 -0
- package/dist/resource-schemas-BJ518zFH.js +79 -0
- package/dist/resource-types-CqB6GWGT.d.ts +141 -0
- package/dist/resources-BVYPnuLo.js +56 -0
- package/dist/resources-DZSk8tXJ.d.ts +7 -0
- package/dist/{respond-DprrgyXX.d.ts → respond-Cw-zanCm.d.ts} +3 -3
- package/dist/{respond-BUgsXNgk.js → respond-volM3ByS.js} +4 -4
- package/dist/{result-D7y2fT87.d.ts → result-BchM1XZn.d.ts} +7 -1
- package/dist/{result-DzUbqgdW.js → result-DEqHCMKP.js} +1 -1
- package/dist/server/index.d.ts +81 -19
- package/dist/server/index.js +16 -14
- package/dist/{server-Bh0EVSwU.d.ts → server-types-CrAmZ8jv.d.ts} +92 -36
- package/dist/{shared-CxWmcyqB.js → shared-DHjhfRdV.js} +2 -15
- package/dist/shared-DTneRoxi.js +14 -0
- package/dist/{sign-in-Cb1mwv6X.js → sign-in-D_yoP0PF.js} +1 -1
- package/dist/signatures-BRS_p3WD.d.ts +34 -0
- package/dist/signatures-DsWv_bYR.js +103 -0
- package/dist/{signers-4y62_VIi.d.ts → signers-cpdmZYrv.d.ts} +1 -1
- package/dist/solid/index.d.ts +9 -18
- package/dist/solid/index.js +2 -2
- package/dist/solid-start/index.d.ts +6 -6
- package/dist/solid-start/index.js +7 -7
- package/dist/spec/index.d.ts +134 -0
- package/dist/spec/index.js +353 -0
- package/dist/{spec-pins-C89s6DyW.d.ts → spec-pins-CwzDY25w.d.ts} +18 -1
- package/dist/{spec-pins--j6mTok4.js → spec-pins-DsLfUH7l.js} +14 -1
- package/dist/sql/index.d.ts +145 -119
- package/dist/sql/index.js +19921 -19798
- package/dist/{executor-De1Of3m3.js → sql-CwuqaQ4Y.js} +34 -169
- package/dist/ssr/index.d.ts +4 -4
- package/dist/ssr/index.js +3 -2
- package/dist/{standard-BK0cqJ7y.js → standard-DkzZUneg.js} +2 -2
- package/dist/{standard-CYsm7xpT.d.ts → standard-lmkbOtPB.d.ts} +1 -1
- package/dist/{stats-D_AD9GGu.js → stats-DhU78Ctf.js} +8 -4
- package/dist/storage/index.d.ts +4 -6
- package/dist/storage/index.js +16 -17
- package/dist/{bucket-Cl46E3jS.d.ts → storage-api-CB7Zl1Ci.d.ts} +243 -8
- package/dist/{store-CGjgWu5n.d.ts → store-DsIYEBnv.d.ts} +1 -1
- package/dist/streams/index.d.ts +4 -4
- package/dist/streams/index.js +5 -4
- package/dist/streams/redis/index.d.ts +1 -1
- package/dist/streams/redis/index.js +5 -11
- package/dist/{stripe-BMj5LtsT.js → stripe-v-Y2lmop.js} +2 -8
- package/dist/supabase-mcp-C6tMoEjn.d.ts +43 -0
- package/dist/supabase-mcp-Cpn5A4i-.js +28 -0
- package/dist/{support-ig_K4PvS.js → support-D1pFFouF.js} +71 -35
- package/dist/{support-view-CVOJJLpc.d.ts → support-view-scqMgtOo.d.ts} +1 -1
- package/dist/svelte/index.d.ts +8 -17
- package/dist/svelte/index.js +2 -2
- package/dist/sveltekit/index.d.ts +7 -7
- package/dist/sveltekit/index.js +10 -12
- package/dist/table-schema-htM_SbCW.js +286 -0
- package/dist/{tags-Cx-LnIQP.d.ts → tags-BO9LjtWG.d.ts} +1 -1
- package/dist/tanstack-db/index.d.ts +2 -2
- package/dist/tanstack-db/supabase/index.d.ts +52 -0
- package/dist/tanstack-db/supabase/index.js +97 -0
- package/dist/tanstack-start/index.d.ts +6 -6
- package/dist/tanstack-start/index.js +8 -12
- package/dist/{tee-CoEppCER.js → tee-Cb98Vn3b.js} +1 -1
- package/dist/{template--jDkl3UP.js → template-lPVh-EwW.js} +11 -2
- package/dist/{temporal-required-BVvW7SYJ.js → temporal-required-BtynQtM-.js} +1 -1
- package/dist/{tenant-BxNFk9bx.d.ts → tenant-CM368LXb.d.ts} +2 -2
- package/dist/testing/index.d.ts +249 -118
- package/dist/testing/index.js +1418 -870
- package/dist/ttl-cache-XzZ-Q2eX.js +29 -0
- package/dist/types-BRTSpOIh.js +5 -0
- package/dist/{types-C05bxW-W.d.ts → types-Bb_4-vdW.d.ts} +4 -4
- package/dist/{types-AYOvcyep.d.ts → types-CD6yCDx3.d.ts} +5 -5
- package/dist/{types-6rocye-y.d.ts → types-CbOUc5IH.d.ts} +4 -4
- package/dist/{types-6BdhkmZe.d.ts → types-CoE5Zwy4.d.ts} +8 -0
- package/dist/{types-DGs5L0VN.d.ts → types-DSJ3-m9X.d.ts} +4 -4
- package/dist/{queue-CLJurhdy.d.ts → types-D__3EN0q.d.ts} +17 -19
- package/dist/{usage-CrvrL2vw.d.ts → usage-D0NNUFfr.d.ts} +3 -3
- package/dist/{vault-wlbBhqm7.d.ts → vault-BpmApxxW.d.ts} +3 -3
- package/dist/vercel-connect/index.d.ts +1 -1
- package/dist/vercel-connect/index.js +5 -11
- package/dist/{verify-DPuWngD4.d.ts → verify-C91Wyp40.d.ts} +5 -35
- package/dist/verify-CJbYfADA.js +124 -0
- package/dist/{version-C6OfRAIn.js → version-Cq8gfDbd.js} +1 -1
- package/dist/{view-BeFcRV6G.js → view-D5ryq3gz.js} +1 -1
- package/dist/{view-CF7ihnkg.d.ts → view-TpXEUcVN.d.ts} +3 -3
- package/dist/vue/index.d.ts +9 -18
- package/dist/vue/index.js +2 -2
- package/dist/{watch-Xuxrvxq-.js → watch-BcvtAHOd.js} +2 -2
- package/dist/{watch-DI34G86j.d.ts → watch-COzRWvVN.d.ts} +23 -9
- package/dist/{wire-DtZQ4sdE.js → wire-Df3EWkG8.js} +2 -2
- package/dist/{workflow-builder-DJ1oHn8g.js → workflow-builder-CHqHpAVt.js} +6 -5
- package/dist/workflow-sdk/builder/index.d.ts +3 -3
- package/dist/workflow-sdk/index.d.ts +1 -1
- package/dist/workflow-sdk/world/index.d.ts +23 -17
- package/dist/workflow-sdk/world/index.js +59 -76
- package/dist/{workflow-sdk-B3yLD6Br.d.ts → workflow-sdk-DTZyrvNo.d.ts} +3 -3
- package/dist/{workflow-sdk-world-D-prir6O.js → workflow-sdk-world-CMV1ahFW.js} +528 -526
- package/dist/{workflows-B0j9WKPu.d.ts → workflows-CcpCBfIe.d.ts} +3 -3
- package/dist/{workflows-wu1WWBn7.js → workflows-IvxzG2cl.js} +5 -4
- package/package.json +54 -3
- package/schemas/config-v1.json +243 -0
- package/schemas/doctor-report-v1.json +4 -1
- package/schemas/spec-manifest-v1.json +95 -0
- package/skills/better-supabase/SKILL.md +8 -4
- package/skills/better-supabase/references/troubleshooting.md +20 -20
- package/skills/better-supabase-api/references/expo.md +6 -3
- package/skills/better-supabase-api/references/powersync.md +2 -1
- package/dist/cli/config-B9HkL8nF.js +0 -2
- package/dist/cli/gen-CCMc39Dx.js +0 -3100
- package/dist/cli/gen-DRmzPI75.js +0 -2
- package/dist/cli/prompts-BTYQGunc.js +0 -2
- package/dist/cli/run-BqDPh9UH.js +0 -361
- package/dist/config-Dn7F5k9A.js +0 -202
- package/dist/history-BZih6SFP.js +0 -64
- package/dist/index-BkWT_uBO.d.ts +0 -51
- package/dist/index-Bxih3l0u.d.ts +0 -81
- package/dist/index-CaxrMD1A.d.ts +0 -1
- package/dist/index-DQh4VCc9.d.ts +0 -98
- package/dist/keys-4MnkWTTh.js +0 -35
- package/dist/messages-DYP0sUTe.d.ts +0 -59
- package/dist/modules-dxrVK3ID.js +0 -228
- package/dist/path-Cv__-OTj.d.ts +0 -17
- package/dist/resource-BsvzCMlX.js +0 -212
- package/dist/resource-IPS5xi9q.d.ts +0 -74
- package/dist/template-CwO38Do8.d.ts +0 -6
- package/dist/verify-DL41hbvY.js +0 -232
- 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-
|
|
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-
|
|
4
|
-
import { n as invalidRequest, t as builderFor } from "./build-
|
|
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-
|
|
9
|
-
import { a as ok, c as withErrorMapper, r as err, s as toDbError, t as AsyncResult } from "./result-
|
|
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-
|
|
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-
|
|
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 {
|
|
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/
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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/
|
|
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
|
-
|
|
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
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
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
|
-
|
|
1308
|
-
const
|
|
1309
|
-
|
|
1310
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
1713
|
+
$with: (extra) => this.#db(source, base, {
|
|
1641
1714
|
...given,
|
|
1642
1715
|
...extra
|
|
1643
1716
|
}, plugins, recorder, tuning),
|
|
1644
|
-
$withoutPlugins: (options) => this.#db(
|
|
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) =>
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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("
|
|
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 },
|