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.
- package/README.md +6 -2
- package/dist/{access-sql-B0dF-SoF.js → access-sql-CrSbK1q-.js} +1 -1
- package/dist/{adapter-B-tL8hqg.js → adapter-CN45ibbV.js} +663 -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-CVdnLahA.js → doctor-VcDtuusV.js} +317 -222
- 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-Cr6arjXU.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-Bzuv1HHj.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-Bp4fyubI.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-CpHLEo-G.d.ts → composite-CWAJTRBF.d.ts} +6 -6
- package/dist/{composite-C6I8ZyaF.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-KIPvRQJU.d.ts → framework-148t1m3C.d.ts} +5 -5
- package/dist/{framework-BDCpJI7o.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-ZSJ9rCcV.d.ts → server-types-CrAmZ8jv.d.ts} +110 -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-DWwzVf-O.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--AolB5ej.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/skills/better-supabase-auth/SKILL.md +8 -4
- package/dist/cli/config-B9HkL8nF.js +0 -2
- package/dist/cli/gen-AIf4MREI.js +0 -3100
- package/dist/cli/gen-DSrahEdX.js +0 -2
- package/dist/cli/prompts-BTYQGunc.js +0 -2
- package/dist/cli/run-BO052mki.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
package/dist/env/index.js
CHANGED
|
@@ -14,7 +14,8 @@ const ENV_VARIABLES = {
|
|
|
14
14
|
dbUrl: ["SUPABASE_DB_URL", "DATABASE_URL"],
|
|
15
15
|
jwksUrl: ["SUPABASE_JWKS_URL"],
|
|
16
16
|
jwks: ["SUPABASE_JWKS"],
|
|
17
|
-
readUrl: ["SUPABASE_READ_URL"]
|
|
17
|
+
readUrl: ["SUPABASE_READ_URL"],
|
|
18
|
+
jwtSecret: ["SUPABASE_JWT_SECRET"]
|
|
18
19
|
};
|
|
19
20
|
const LOOPBACK = /^(localhost|127(?:\.\d{1,3}){3}|\[::1\])$/;
|
|
20
21
|
const HOSTED = /^([a-z0-9]{20})\.supabase\.co$/;
|
|
@@ -166,6 +167,11 @@ function parseEnv(source, options = {}) {
|
|
|
166
167
|
const jwks = rawInline ? checkJwks(rawInline, issues) : void 0;
|
|
167
168
|
const rawRead = first(source, ENV_VARIABLES.readUrl);
|
|
168
169
|
const readUrl = rawRead ? checkUrl(rawRead, ENV_VARIABLES.readUrl, issues) : void 0;
|
|
170
|
+
const jwtSecret = first(source, ENV_VARIABLES.jwtSecret);
|
|
171
|
+
if (jwtSecret !== void 0 && jwtSecret.length < 32) issues.push({
|
|
172
|
+
variables: ENV_VARIABLES.jwtSecret,
|
|
173
|
+
message: "must be at least 32 characters"
|
|
174
|
+
});
|
|
169
175
|
if (issues.length > 0 || !url || !publishableKey) return {
|
|
170
176
|
ok: false,
|
|
171
177
|
issues
|
|
@@ -188,7 +194,8 @@ function parseEnv(source, options = {}) {
|
|
|
188
194
|
} : {},
|
|
189
195
|
...dbUrl ? { dbUrl } : {},
|
|
190
196
|
...projectRef ? { projectRef } : {},
|
|
191
|
-
...readUrl ? { readUrl: readUrl.href.replace(/\/+$/, "") } : {}
|
|
197
|
+
...readUrl ? { readUrl: readUrl.href.replace(/\/+$/, "") } : {},
|
|
198
|
+
...jwtSecret ? { jwtSecret } : {}
|
|
192
199
|
}
|
|
193
200
|
};
|
|
194
201
|
}
|
|
@@ -204,6 +204,11 @@ function mapBuiltin(raw) {
|
|
|
204
204
|
hint: postgrestHint ? `${base.hint} ${advice}` : advice
|
|
205
205
|
});
|
|
206
206
|
}
|
|
207
|
+
case "25006": return dbError("forbidden", "This connection is read-only, so the write was refused", {
|
|
208
|
+
...base,
|
|
209
|
+
details: base.details ?? message,
|
|
210
|
+
hint: base.hint ?? "The transaction is read-only, such as in a read-only support session; writes need a writable connection."
|
|
211
|
+
});
|
|
207
212
|
case "P0001": return dbError("raised", message, base);
|
|
208
213
|
case "P0002": return dbError("not_found", message, base);
|
|
209
214
|
case "57014": return dbError("timeout", message, base);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as DbException } from "./db-exception-CnWcYPxL.js";
|
|
2
|
-
import { n as dbError, o as isDbError } from "./errors-
|
|
3
|
-
import { s as toDbError } from "./result-
|
|
2
|
+
import { n as dbError, o as isDbError } from "./errors-2M6CKMP4.js";
|
|
3
|
+
import { s as toDbError } from "./result-DEqHCMKP.js";
|
|
4
4
|
//#region src/storage/errors.ts
|
|
5
5
|
/** Maps a Storage error (`StorageApiError`, fetch failures) to a `DbError`. */
|
|
6
6
|
function fromStorageError(raw, table) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { b as DbError, x as DbErrorKind } from "./result-
|
|
1
|
+
import { b as DbError, x as DbErrorKind } from "./result-BchM1XZn.js";
|
|
2
2
|
//#region src/core/db-exception.d.ts
|
|
3
3
|
/** Thrown by `.orThrow()`. Carries the plain `DbError` as `error`. */
|
|
4
4
|
declare class DbException extends Error {
|
package/dist/eve/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { a as ResolveAuthOptions, r as AuthState } from "../resolve-
|
|
2
|
-
import { i as CredentialRef, r as CredentialProvider } from "../provider-
|
|
3
|
-
import { i as AiChat } from "../ai-chat-
|
|
4
|
-
import { a as Inbox } from "../inbox-
|
|
5
|
-
import { a as EveMemoryToolsContext, c as MemoryDocumentConflictError, d as supabaseDocumentBackend, f as supabaseMemory, i as EveMemoryTool, l as SupabaseDocumentBackendOptions, m as EveSessionContext, n as EveMemoryContext, o as EveRecallMessage, p as EveSessionAuth, r as EveMemoryProvider, s as EveRecallResult, t as EveDocumentBackend, u as SupabaseMemoryOptions } from "../eve-
|
|
1
|
+
import { a as ResolveAuthOptions, r as AuthState } from "../resolve-MxXVWyhd.js";
|
|
2
|
+
import { i as CredentialRef, r as CredentialProvider } from "../provider-ib9wzUDz.js";
|
|
3
|
+
import { i as AiChat } from "../ai-chat-DXkMy74O.js";
|
|
4
|
+
import { a as Inbox } from "../inbox-Cd1KCEBL.js";
|
|
5
|
+
import { a as EveMemoryToolsContext, c as MemoryDocumentConflictError, d as supabaseDocumentBackend, f as supabaseMemory, i as EveMemoryTool, l as SupabaseDocumentBackendOptions, m as EveSessionContext, n as EveMemoryContext, o as EveRecallMessage, p as EveSessionAuth, r as EveMemoryProvider, s as EveRecallResult, t as EveDocumentBackend, u as SupabaseMemoryOptions } from "../eve-CoAIcCkq.js";
|
|
6
6
|
//#region src/eve/auth.d.ts
|
|
7
7
|
/** Thrown by `supabaseAuth` so eve answers with `response` instead of downgrading to anonymous. */
|
|
8
8
|
export declare class EveAuthRejection extends Error {
|
package/dist/eve/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { t as DbException } from "../db-exception-CnWcYPxL.js";
|
|
2
|
+
import { n as isRecord } from "../guards-6F2bCtQR.js";
|
|
2
3
|
import { a as tenantClaimPaths, n as claimAt, t as DEFAULT_CLAIMS } from "../claims-PqzCxaTD.js";
|
|
3
|
-
import {
|
|
4
|
-
import { t as isAnonymousUser } from "../view-
|
|
5
|
-
import {
|
|
4
|
+
import { r as resolveAuth } from "../resolve-Bvgf3ut_.js";
|
|
5
|
+
import { t as isAnonymousUser } from "../view-D5ryq3gz.js";
|
|
6
|
+
import { t as importOptionalPeer } from "../optional-peer-D1pi-skw.js";
|
|
6
7
|
//#region src/eve/ids.ts
|
|
7
8
|
/** A UUID (version 8) from the SHA-256 of `input`, so the same input always gets the same id. */
|
|
8
9
|
async function stableUuid(input) {
|
|
@@ -348,14 +349,7 @@ const isToolsModule = (value) => isRecord(value) && typeof value["defineTool"] =
|
|
|
348
349
|
* Loads `eve/tools` when the provider first builds its tools. The specifier
|
|
349
350
|
* is a variable so bundlers leave the optional peer out.
|
|
350
351
|
*/
|
|
351
|
-
|
|
352
|
-
const specifier = "eve/tools";
|
|
353
|
-
try {
|
|
354
|
-
return await import(specifier);
|
|
355
|
-
} catch {
|
|
356
|
-
return;
|
|
357
|
-
}
|
|
358
|
-
}
|
|
352
|
+
const loadTools = () => importOptionalPeer("eve/tools");
|
|
359
353
|
const isRecallResult = (value) => isRecord(value) && Array.isArray(value["messages"]) && value["messages"].every((message) => isRecord(message) && typeof message["content"] === "string");
|
|
360
354
|
/**
|
|
361
355
|
* An eve memory provider over the memory and knowledge blocks. Every read
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as Knowledge, u as KnowledgeSearchOptions } from "./knowledge-
|
|
2
|
-
import { t as Memory } from "./types-
|
|
1
|
+
import { r as Knowledge, u as KnowledgeSearchOptions } from "./knowledge-CAReFpRA.js";
|
|
2
|
+
import { t as Memory } from "./types-DSJ3-m9X.js";
|
|
3
3
|
//#region src/eve/types.d.ts
|
|
4
4
|
/**
|
|
5
5
|
* eve's `SessionAuthContext`, typed structurally so this entry never imports
|
package/dist/events/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as CredentialEventData, B as OrganizationEventData, C as BlockEventMap, D as BlockEventsMatching, E as BlockEventType, F as InvitationEventData, G as StorageObjectEventData, H as ScimEventData, I as InviteCodeEventData, J as WebhookEventData, K as SupportEventData, L as NotificationEventData, M as FlagEventData, N as InboxEventData, O as CommentEventData, P as IncomingWebhookEventData, Q as onBlockEvent, R as OrganizationDeletionEventData, S as BlockEvent, T as BlockEventPattern, U as SettingEventData, V as PushDeviceEventData, W as SsoProviderEventData, X as WorkflowRunEventData, Y as WorkflowEventData, Z as blockEventAttributes, _ as AttachmentEventData, b as BLOCK_EVENT_RENAMES, d as AgentEventData, f as AiChatEventData, g as ApiKeyEventData, h as AnnouncementEventData, j as DataExportEventData, k as ConnectorEventData, m as AiToolEventData, p as AiProviderKeyEventData, q as WaitlistEventData, v as AuditRevealEventData, w as BlockEventMeta, x as BillingEventData, y as BLOCK_ATTRIBUTES, z as OrganizationDomainEventData } from "../events-
|
|
2
|
-
import { a as
|
|
3
|
-
import { a as RowEventData, c as httpSink, d as toHttp, i as ROW_EVENT_TYPES, l as isCloudEvent, n as HttpMode, o as forwardMutations, r as HttpSinkOptions, s as fromHttp, t as ForwardOptions, u as toCloudEvents } from "../index-
|
|
4
|
-
export { type AgentEventData, type AiChatEventData, type AiProviderKeyEventData, type AiToolEventData, type AnnouncementEventData, type ApiKeyEventData, type AttachmentEventData, type AuditRevealEventData, BLOCK_ATTRIBUTES, BLOCK_EVENT_RENAMES, type BillingEventData, type BlockEvent, type BlockEventMap, type BlockEventMeta, type BlockEventPattern, type BlockEventType, type BlockEventsMatching, type CloudEvent, type CloudEventOptions, type CommentEventData, type ConnectorEventData, type CredentialEventData, type DataExportEventData, type EventSink, type FlagEventData, type ForwardBlockOptions, ForwardOptions, HttpMode, HttpSinkOptions, type InboxEventData, type IncomingWebhookEventData, type InvitationEventData, type InviteCodeEventData, type NotificationEventData, type OrganizationDeletionEventData, type OrganizationDomainEventData, type OrganizationEventData, type PushDeviceEventData, ROW_EVENT_TYPES, RowEventData, type ScimEventData, type SettingEventData, type SsoProviderEventData, type StorageObjectEventData, type SupportEventData, type WaitlistEventData, type WebhookEventData, type WorkflowEventData, type WorkflowRunEventData, blockCloudEvent, blockEventAttributes, forwardBlockEvents, forwardMutations, fromHttp, httpSink, isCloudEvent, onBlockEvent, toCloudEvents, toHttp };
|
|
1
|
+
import { A as CredentialEventData, B as OrganizationEventData, C as BlockEventMap, D as BlockEventsMatching, E as BlockEventType, F as InvitationEventData, G as StorageObjectEventData, H as ScimEventData, I as InviteCodeEventData, J as WebhookEventData, K as SupportEventData, L as NotificationEventData, M as FlagEventData, N as InboxEventData, O as CommentEventData, P as IncomingWebhookEventData, Q as onBlockEvent, R as OrganizationDeletionEventData, S as BlockEvent, T as BlockEventPattern, U as SettingEventData, V as PushDeviceEventData, W as SsoProviderEventData, X as WorkflowRunEventData, Y as WorkflowEventData, Z as blockEventAttributes, _ as AttachmentEventData, b as BLOCK_EVENT_RENAMES, d as AgentEventData, f as AiChatEventData, g as ApiKeyEventData, h as AnnouncementEventData, j as DataExportEventData, k as ConnectorEventData, m as AiToolEventData, p as AiProviderKeyEventData, q as WaitlistEventData, v as AuditRevealEventData, w as BlockEventMeta, x as BillingEventData, y as BLOCK_ATTRIBUTES, z as OrganizationDomainEventData } from "../events-D1BOCll8.js";
|
|
2
|
+
import { a as ForwardBlockOptions, i as EventSink, n as CloudEventOptions, o as blockCloudEvent, r as DataschemaContext, s as forwardBlockEvents, t as CloudEvent } from "../cloud-event-Dune0KI7.js";
|
|
3
|
+
import { a as RowEventData, c as httpSink, d as toHttp, i as ROW_EVENT_TYPES, l as isCloudEvent, n as HttpMode, o as forwardMutations, r as HttpSinkOptions, s as fromHttp, t as ForwardOptions, u as toCloudEvents } from "../index-CicIyqOe.js";
|
|
4
|
+
export { type AgentEventData, type AiChatEventData, type AiProviderKeyEventData, type AiToolEventData, type AnnouncementEventData, type ApiKeyEventData, type AttachmentEventData, type AuditRevealEventData, BLOCK_ATTRIBUTES, BLOCK_EVENT_RENAMES, type BillingEventData, type BlockEvent, type BlockEventMap, type BlockEventMeta, type BlockEventPattern, type BlockEventType, type BlockEventsMatching, type CloudEvent, type CloudEventOptions, type CommentEventData, type ConnectorEventData, type CredentialEventData, type DataExportEventData, type DataschemaContext, type EventSink, type FlagEventData, type ForwardBlockOptions, ForwardOptions, HttpMode, HttpSinkOptions, type InboxEventData, type IncomingWebhookEventData, type InvitationEventData, type InviteCodeEventData, type NotificationEventData, type OrganizationDeletionEventData, type OrganizationDomainEventData, type OrganizationEventData, type PushDeviceEventData, ROW_EVENT_TYPES, RowEventData, type ScimEventData, type SettingEventData, type SsoProviderEventData, type StorageObjectEventData, type SupportEventData, type WaitlistEventData, type WebhookEventData, type WorkflowEventData, type WorkflowRunEventData, blockCloudEvent, blockEventAttributes, forwardBlockEvents, forwardMutations, fromHttp, httpSink, isCloudEvent, onBlockEvent, toCloudEvents, toHttp };
|
package/dist/events/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { s as nowInstant } from "../temporal-BJGitm-h.js";
|
|
2
|
-
import {
|
|
2
|
+
import { i as forwardBlockEvents, n as blockCloudEvent, r as dataschemaOf } from "../cloud-event-CTh9Sr5w.js";
|
|
3
3
|
import { t as jsonReplacer } from "../json-CEnpTHlZ.js";
|
|
4
|
-
import {
|
|
4
|
+
import { i as blockEventAttributes, n as BLOCK_EVENT_RENAMES, o as onBlockEvent, t as BLOCK_ATTRIBUTES } from "../block-events-DTxU5tfr.js";
|
|
5
5
|
//#region src/events/index.ts
|
|
6
6
|
const ROW_EVENT_TYPES = {
|
|
7
7
|
insert: "dev.better-supabase.row.created",
|
|
@@ -31,6 +31,10 @@ function toCloudEvents(notice, options) {
|
|
|
31
31
|
const tenant = notice.tenant ?? notice.context.tenant;
|
|
32
32
|
const rows = notice.rows.length > 0 ? notice.rows : notice.keys ?? [];
|
|
33
33
|
const actorId = notice.context.actor?.id;
|
|
34
|
+
const dataschema = dataschemaOf(options, {
|
|
35
|
+
type,
|
|
36
|
+
table: notice.table
|
|
37
|
+
});
|
|
34
38
|
return rows.map((row) => {
|
|
35
39
|
const subject = subjectOf(options.meta, notice.table, row);
|
|
36
40
|
return {
|
|
@@ -41,6 +45,7 @@ function toCloudEvents(notice, options) {
|
|
|
41
45
|
...subject ? { subject } : {},
|
|
42
46
|
time,
|
|
43
47
|
datacontenttype: "application/json",
|
|
48
|
+
...dataschema,
|
|
44
49
|
data: {
|
|
45
50
|
table: notice.table,
|
|
46
51
|
row,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference lib="esnext.temporal" />
|
|
2
|
-
import { b as DbError } from "./result-
|
|
3
|
-
import { g as MutationKind, h as MutationIntent, v as Operation } from "./executor-
|
|
4
|
-
import { m as RequestContext } from "./plugin-
|
|
2
|
+
import { b as DbError } from "./result-BchM1XZn.js";
|
|
3
|
+
import { g as MutationKind, h as MutationIntent, v as Operation } from "./executor-Drzu3dBK.js";
|
|
4
|
+
import { m as RequestContext } from "./plugin-CPK2HsbY.js";
|
|
5
5
|
import { n as Logger } from "./logger-DWVYUmwi.js";
|
|
6
6
|
//#region src/core/block-events.d.ts
|
|
7
7
|
/** `support.*`: support sessions, where a platform admin views the app as a user. */
|
|
@@ -530,7 +530,9 @@ type EventHandler<K extends EventName> = (event: BetterSupabaseEvents[K]) => voi
|
|
|
530
530
|
declare class EventHub {
|
|
531
531
|
#private;
|
|
532
532
|
readonly logger: Logger;
|
|
533
|
-
|
|
533
|
+
/** The definition's `now` option; block events take their `time` from it. */
|
|
534
|
+
readonly now: (() => Temporal.Instant) | undefined;
|
|
535
|
+
constructor(logger?: Logger, now?: () => Temporal.Instant);
|
|
534
536
|
on<K extends EventName>(name: K, handler: EventHandler<K>): () => void;
|
|
535
537
|
has(name: EventName): boolean;
|
|
536
538
|
/**
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { t as DbException } from "./db-exception-CnWcYPxL.js";
|
|
2
|
-
import { c as mapDbError, n as dbError } from "./errors-
|
|
3
|
-
import { n as invalidRequest } from "./build-
|
|
2
|
+
import { c as mapDbError, n as dbError } from "./errors-2M6CKMP4.js";
|
|
3
|
+
import { n as invalidRequest } from "./build-meLuYGri.js";
|
|
4
4
|
import { t as lookupOf } from "./lookup-BaP5bI27.js";
|
|
5
|
-
import { a as ok, r as err, s as toDbError } from "./result-
|
|
5
|
+
import { a as ok, r as err, s as toDbError } from "./result-DEqHCMKP.js";
|
|
6
6
|
import { n as simplifyOrFalse } from "./simplify-DDO0j0LI.js";
|
|
7
|
+
import { n as whereClause, t as integer } from "./shared-DTneRoxi.js";
|
|
7
8
|
//#region src/compile/sqlite.ts
|
|
8
9
|
/**
|
|
9
10
|
* The operation needs something the SQLite dialect can't express: an
|
|
@@ -250,14 +251,6 @@ function dbName(table, app) {
|
|
|
250
251
|
if (!meta) invalidRequest(`Unknown column "${app}" on "${table.key}"`, table.key);
|
|
251
252
|
return meta.db;
|
|
252
253
|
}
|
|
253
|
-
function integer(value) {
|
|
254
|
-
if (!Number.isInteger(value) || value < 0) invalidRequest(`Expected a non-negative integer, got ${value}`);
|
|
255
|
-
return value;
|
|
256
|
-
}
|
|
257
|
-
function whereClause(parts) {
|
|
258
|
-
const present = parts.filter((part) => part !== void 0);
|
|
259
|
-
return present.length > 0 ? ` where ${present.join(" and ")}` : "";
|
|
260
|
-
}
|
|
261
254
|
function keyColumns(table) {
|
|
262
255
|
if (table.primaryKey.length === 0) unsupported("a write to a table without a primary key", table);
|
|
263
256
|
return table.primaryKey.map((app) => dbName(table, app));
|
|
@@ -292,7 +285,8 @@ function selectPlan(compiler, op) {
|
|
|
292
285
|
if (simple.never) return { kind: "never" };
|
|
293
286
|
const alias = compiler.alias();
|
|
294
287
|
const { list, columns } = compiler.selection(op.selection, op.table, alias);
|
|
295
|
-
const
|
|
288
|
+
const where = simple.condition ? compiler.condition(simple.condition, op.table, alias) : void 0;
|
|
289
|
+
const filter = whereClause([where]);
|
|
296
290
|
const from = `${compiler.table(op.table)} as ${alias}`;
|
|
297
291
|
const filterParams = [...compiler.params];
|
|
298
292
|
const count = op.count || op.head ? {
|
|
@@ -434,25 +428,16 @@ const sqliteCompiler = {
|
|
|
434
428
|
target: "sqlite",
|
|
435
429
|
compile: (op) => compileSqlite(op)
|
|
436
430
|
};
|
|
437
|
-
/**
|
|
438
|
-
* Compiles every operation a list definition runs (the page, its count and
|
|
439
|
-
* the facet counts) for SQLite, without a database. Returns the first
|
|
440
|
-
* `unsupported` or `invalid_request` error, so a test or a dev build fails
|
|
441
|
-
* before a native screen does.
|
|
442
|
-
*
|
|
443
|
-
* ```ts
|
|
444
|
-
* expect(await checkSqlite(betterSupabase, customerList)).toEqual({ ok: true, data: undefined });
|
|
445
|
-
* ```
|
|
446
|
-
*/
|
|
447
431
|
async function checkSqlite(betterSupabase, list, options = {}) {
|
|
448
|
-
|
|
432
|
+
const failures = /* @__PURE__ */ new Map();
|
|
449
433
|
const probe = {
|
|
450
434
|
name: "sqlite-check",
|
|
451
435
|
execute(op) {
|
|
452
436
|
try {
|
|
453
437
|
compileSqlite(op, options);
|
|
454
438
|
} catch (cause) {
|
|
455
|
-
failure
|
|
439
|
+
const failure = toDbError(cause);
|
|
440
|
+
if (!failures.has(failure.message)) failures.set(failure.message, failure);
|
|
456
441
|
return Promise.resolve(err(failure));
|
|
457
442
|
}
|
|
458
443
|
return Promise.resolve(ok({
|
|
@@ -470,10 +455,14 @@ async function checkSqlite(betterSupabase, list, options = {}) {
|
|
|
470
455
|
};
|
|
471
456
|
const db = betterSupabase.connect(probe);
|
|
472
457
|
await list.run(db, query);
|
|
473
|
-
|
|
458
|
+
if (options.all) await list.run(db, list.defaults);
|
|
459
|
+
const found = [...failures.values()];
|
|
460
|
+
if (options.all) return found;
|
|
461
|
+
const [first] = found;
|
|
462
|
+
return first ? err(first) : ok(void 0);
|
|
474
463
|
}
|
|
475
464
|
//#endregion
|
|
476
|
-
//#region src/
|
|
465
|
+
//#region src/sqlite/executor.ts
|
|
477
466
|
const UNIQUE = /(?:UNIQUE|PRIMARY KEY) constraint failed: (.+)$/m;
|
|
478
467
|
const NOT_NULL = /NOT NULL constraint failed: (?:[^.\s]+\.)?(\S+)/;
|
|
479
468
|
const CHECK = /CHECK constraint failed: ?(\S+)?/;
|
|
@@ -668,7 +657,10 @@ async function executeOn(db, op, context, options) {
|
|
|
668
657
|
try {
|
|
669
658
|
plan = compileSqlite(op.kind === "insert" ? await withIds(db, op, options.newId) : op, options);
|
|
670
659
|
} catch (cause) {
|
|
671
|
-
|
|
660
|
+
const error = toDbError(cause);
|
|
661
|
+
const { fallback } = options;
|
|
662
|
+
if (fallback && op.kind === "select" && error.kind === "unsupported") return fallback.execute(op, context);
|
|
663
|
+
return err(error);
|
|
672
664
|
}
|
|
673
665
|
if (plan.kind === "never") return ok({
|
|
674
666
|
rows: [],
|
|
@@ -693,26 +685,51 @@ function mapped(cause, mappers) {
|
|
|
693
685
|
return raw ? mapDbError(raw, mappers) : toDbError(cause);
|
|
694
686
|
}
|
|
695
687
|
/**
|
|
688
|
+
* Runs repository operations on a local SQLite database, so the same
|
|
689
|
+
* repositories and list definitions work offline on native. Reads
|
|
690
|
+
* return rows in the PostgREST shape (booleans, parsed JSON, ISO
|
|
691
|
+
* timestamps); writes go through the database's upload queue. What SQLite
|
|
692
|
+
* can't express (includes, full-text search, function sources) and
|
|
693
|
+
* `db.$rpc` return a `DbError` of kind `unsupported` without running
|
|
694
|
+
* anything, or run on `options.fallback` when you pass one.
|
|
695
|
+
* `maxAffected` is checked against the selected keys before any write; a
|
|
696
|
+
* call's `timeout` and `signal` are checked before the statements start,
|
|
697
|
+
* and `retry` does nothing here. A `bigint` beyond `Number.MAX_SAFE_INTEGER`
|
|
698
|
+
* comes back as its decimal string instead of a rounded number.
|
|
699
|
+
*/
|
|
700
|
+
function sqliteExecutor(db, options = {}, name = "sqlite") {
|
|
701
|
+
const { fallback } = options;
|
|
702
|
+
const rpc = fallback?.rpc?.bind(fallback);
|
|
703
|
+
return {
|
|
704
|
+
name,
|
|
705
|
+
...fallback?.functionSources ? { functionSources: true } : {},
|
|
706
|
+
execute: (op, context) => executeOn(db, op, context, options),
|
|
707
|
+
...rpc ? { rpc } : {}
|
|
708
|
+
};
|
|
709
|
+
}
|
|
710
|
+
//#endregion
|
|
711
|
+
//#region src/powersync/executor.ts
|
|
712
|
+
/**
|
|
696
713
|
* Runs repository operations on PowerSync's local SQLite database, so the
|
|
697
714
|
* same repositories and list definitions work offline on native. Reads
|
|
698
715
|
* return rows in the PostgREST shape (booleans, parsed JSON, ISO
|
|
699
716
|
* timestamps); writes go through PowerSync's upload queue. What SQLite
|
|
700
|
-
* can't express (includes, full-text search, function sources)
|
|
701
|
-
* `DbError` of kind `unsupported` without running
|
|
717
|
+
* can't express (includes, full-text search, function sources) and
|
|
718
|
+
* `db.$rpc` return a `DbError` of kind `unsupported` without running
|
|
719
|
+
* anything, or run on `options.fallback` when you pass one.
|
|
702
720
|
* `maxAffected` is checked against the selected keys before any write; a
|
|
703
721
|
* call's `timeout` and `signal` are checked before the statements start,
|
|
704
722
|
* and `retry` does nothing here. A `bigint` beyond `Number.MAX_SAFE_INTEGER`
|
|
705
723
|
* comes back as its decimal string instead of a rounded number.
|
|
706
724
|
*
|
|
707
725
|
* ```ts
|
|
708
|
-
* const db = betterSupabase.connect(
|
|
726
|
+
* const db = betterSupabase.connect(
|
|
727
|
+
* powersyncExecutor(powersync, { fallback: postgrestExecutor(supabase) }),
|
|
728
|
+
* );
|
|
709
729
|
* ```
|
|
710
730
|
*/
|
|
711
731
|
function powersyncExecutor(db, options = {}) {
|
|
712
|
-
return
|
|
713
|
-
name: "powersync",
|
|
714
|
-
execute: (op, context) => executeOn(db, op, context, options)
|
|
715
|
-
};
|
|
732
|
+
return sqliteExecutor(db, options, "powersync");
|
|
716
733
|
}
|
|
717
734
|
//#endregion
|
|
718
|
-
export { sqliteCompiler as a, quoteSqliteIdent as c, checkSqlite as i, sqliteValue as l,
|
|
735
|
+
export { sqliteCompiler as a, quoteSqliteIdent as c, checkSqlite as i, sqliteValue as l, fromSqliteError as n, compileSqlite as o, postgrestTimestamp as r, likeToGlob as s, powersyncExecutor as t };
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { r as isPlainObject } from "./clone-dN9XOL1K.js";
|
|
2
|
+
import { c as mapDbError, n as dbError, u as withMaxAffected } from "./errors-2M6CKMP4.js";
|
|
3
|
+
import { a as ok, r as err, s as toDbError } from "./result-DEqHCMKP.js";
|
|
4
|
+
import { n as quoteIdent, t as compileSql } from "./sql-CwuqaQ4Y.js";
|
|
5
|
+
//#region src/postgres/executor.ts
|
|
6
|
+
function isPgError(value) {
|
|
7
|
+
return typeof value === "object" && value !== null && typeof value.code === "string";
|
|
8
|
+
}
|
|
9
|
+
/** node-postgres error fields to the shape `mapDbError` reads. */
|
|
10
|
+
function fromPgError(error) {
|
|
11
|
+
if (!isPgError(error)) return void 0;
|
|
12
|
+
const raw = {};
|
|
13
|
+
if (error.code !== void 0) raw.code = error.code;
|
|
14
|
+
if (error.message !== void 0) raw.message = error.message;
|
|
15
|
+
if (error.detail !== void 0) raw.details = error.detail;
|
|
16
|
+
if (error.hint !== void 0) raw.hint = error.hint;
|
|
17
|
+
if (error.constraint !== void 0) raw.constraint = error.constraint;
|
|
18
|
+
if (error.column !== void 0) raw.column = error.column;
|
|
19
|
+
if (error.table !== void 0) raw.table = error.table;
|
|
20
|
+
return raw;
|
|
21
|
+
}
|
|
22
|
+
async function run(client, plan, op) {
|
|
23
|
+
const rows = plan.rows ? (await client.queryRaw(plan.rows.text, [...plan.rows.params])).map((entry) => entry.row) : [];
|
|
24
|
+
let count = null;
|
|
25
|
+
if (plan.count) {
|
|
26
|
+
const [first] = await client.queryRaw(plan.count.text, [...plan.count.params]);
|
|
27
|
+
count = first?.count ?? 0;
|
|
28
|
+
} else if (op.kind !== "select") count = rows.length;
|
|
29
|
+
for (const next of plan.chunks ?? []) {
|
|
30
|
+
const more = await run(client, next, op);
|
|
31
|
+
rows.push(...more.rows);
|
|
32
|
+
count = (count ?? 0) + (more.count ?? 0);
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
rows,
|
|
36
|
+
count
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Executes repository operations as SQL on a direct Postgres connection.
|
|
41
|
+
* Rows have the same shape as over PostgREST. RLS applies when the client
|
|
42
|
+
* runs as the caller (`ctx.postgres`, `createPostgres().asUser()`).
|
|
43
|
+
*
|
|
44
|
+
* `maxAffected` fails the statement itself, so its writes roll back.
|
|
45
|
+
* A call's `timeout` is checked before the statement starts; set
|
|
46
|
+
* `statement_timeout` on the connection to bound a running statement.
|
|
47
|
+
* `retry` does nothing here.
|
|
48
|
+
*/
|
|
49
|
+
function postgresExecutor(client) {
|
|
50
|
+
return {
|
|
51
|
+
name: "postgres",
|
|
52
|
+
functionSources: true,
|
|
53
|
+
execute: (op, context) => executeOn(client, op, context),
|
|
54
|
+
rpc: (name, args, context) => callFunction(client, name, args, context),
|
|
55
|
+
async batch(ops, context) {
|
|
56
|
+
if (!client.transaction) return Promise.all(ops.map((op) => executeOn(client, op, context)));
|
|
57
|
+
try {
|
|
58
|
+
return await client.transaction(async (scoped) => {
|
|
59
|
+
const results = [];
|
|
60
|
+
for (const op of ops) {
|
|
61
|
+
const result = await executeOn(scoped, op, context);
|
|
62
|
+
if (!result.ok) throw new BatchFailed();
|
|
63
|
+
results.push(result);
|
|
64
|
+
}
|
|
65
|
+
return results;
|
|
66
|
+
});
|
|
67
|
+
} catch (cause) {
|
|
68
|
+
if (!(cause instanceof BatchFailed)) throw cause;
|
|
69
|
+
return Promise.all(ops.map((op) => executeOn(client, op, context)));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
var BatchFailed = class extends Error {};
|
|
75
|
+
async function executeOn(client, op, context) {
|
|
76
|
+
let plan;
|
|
77
|
+
try {
|
|
78
|
+
plan = compileSql(op);
|
|
79
|
+
} catch (cause) {
|
|
80
|
+
return err(toDbError(cause));
|
|
81
|
+
}
|
|
82
|
+
if (plan.never) return ok({
|
|
83
|
+
rows: [],
|
|
84
|
+
count: 0
|
|
85
|
+
});
|
|
86
|
+
if (context.signal?.aborted) return err(dbError("aborted", "The request was aborted"));
|
|
87
|
+
let result;
|
|
88
|
+
try {
|
|
89
|
+
result = plan.chunks && client.transaction ? await client.transaction((scoped) => run(scoped, plan, op)) : await run(client, plan, op);
|
|
90
|
+
} catch (cause) {
|
|
91
|
+
const raw = fromPgError(cause);
|
|
92
|
+
const error = raw ? mapDbError(raw, context.errorMappers) : toDbError(cause);
|
|
93
|
+
return err(withMaxAffected(error, op.kind === "update" || op.kind === "delete" ? op.maxAffected : void 0));
|
|
94
|
+
}
|
|
95
|
+
if (op.kind === "select" && op.single) {
|
|
96
|
+
if (result.rows.length > 1) return err(dbError("multiple_rows", `Expected one ${op.table.key} row`));
|
|
97
|
+
if (result.rows.length === 0 && op.single === "one") return err(dbError("not_found", `No ${op.table.key} row matched`));
|
|
98
|
+
}
|
|
99
|
+
return ok(result);
|
|
100
|
+
}
|
|
101
|
+
const JSON_TYPES = /* @__PURE__ */ new Set(["json", "jsonb"]);
|
|
102
|
+
async function signatureOf(client, name, context) {
|
|
103
|
+
const fn = context.function;
|
|
104
|
+
if (fn) return {
|
|
105
|
+
returnsSet: fn.returnsSet,
|
|
106
|
+
returnsVoid: fn.returns === "void",
|
|
107
|
+
json: new Set(fn.args.filter((arg) => JSON_TYPES.has(arg.type)).map((arg) => arg.name))
|
|
108
|
+
};
|
|
109
|
+
const [found] = await client.queryRaw("select p.proretset as returns_set, p.prorettype = 'pg_catalog.void'::pg_catalog.regtype as returns_void, p.proargnames as arg_names, p.proargmodes::text[] as arg_modes, (select array_agg(t.typname::text order by a.ordinality) from unnest(p.proargtypes::oid[]) with ordinality as a(oid, ordinality) join pg_catalog.pg_type t on t.oid = a.oid) as arg_types from pg_catalog.pg_proc p join pg_catalog.pg_namespace n on n.oid = p.pronamespace where n.nspname = $1 and p.proname = $2 limit 1", [context.schema, name]);
|
|
110
|
+
if (!found) return void 0;
|
|
111
|
+
const json = /* @__PURE__ */ new Set();
|
|
112
|
+
if (found.arg_names && found.arg_types) {
|
|
113
|
+
const modes = found.arg_modes;
|
|
114
|
+
const inputIndexes = modes ? modes.flatMap((mode, index) => mode === "i" || mode === "v" || mode === "b" ? [index] : []) : found.arg_names.map((_, index) => index);
|
|
115
|
+
for (const [position, index] of inputIndexes.entries()) {
|
|
116
|
+
const argName = found.arg_names[index];
|
|
117
|
+
const type = found.arg_types[position];
|
|
118
|
+
if (argName != null && type !== void 0 && JSON_TYPES.has(type)) json.add(argName);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
returnsSet: found.returns_set,
|
|
123
|
+
returnsVoid: found.returns_void,
|
|
124
|
+
json
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function argValue(value, json) {
|
|
128
|
+
if (value === null) return null;
|
|
129
|
+
if (json) return JSON.stringify(value);
|
|
130
|
+
if (typeof value === "bigint") return value.toString();
|
|
131
|
+
if (Array.isArray(value)) return value.map((item) => argValue(item, false));
|
|
132
|
+
if (isPlainObject(value)) return JSON.stringify(value);
|
|
133
|
+
if (typeof value === "object" && !(value instanceof Date) && !(value instanceof Uint8Array)) return String(value);
|
|
134
|
+
return value;
|
|
135
|
+
}
|
|
136
|
+
async function callFunction(client, name, args, context) {
|
|
137
|
+
if (context.signal?.aborted) return err(dbError("aborted", "The request was aborted"));
|
|
138
|
+
try {
|
|
139
|
+
const signature = await signatureOf(client, name, context);
|
|
140
|
+
if (!signature) return err(mapDbError({
|
|
141
|
+
code: "PGRST202",
|
|
142
|
+
message: `Could not find the function ${context.schema}.${name} in the database`
|
|
143
|
+
}, context.errorMappers));
|
|
144
|
+
const params = [];
|
|
145
|
+
const named = Object.entries(args).filter(([, value]) => value !== void 0).map(([key, value]) => {
|
|
146
|
+
params.push(argValue(value, signature.json.has(key)));
|
|
147
|
+
return `${quoteIdent(key)} => $${String(params.length)}`;
|
|
148
|
+
});
|
|
149
|
+
const call = `${quoteIdent(context.schema)}.${quoteIdent(name)}(${named.join(", ")})`;
|
|
150
|
+
if (signature.returnsVoid) {
|
|
151
|
+
await client.queryRaw(`select ${call}`, params);
|
|
152
|
+
return ok(null);
|
|
153
|
+
}
|
|
154
|
+
const values = (await client.queryRaw(`select to_json(bs_call) as value from ${call} as bs_call`, params)).map((row) => row.value);
|
|
155
|
+
return ok(signature.returnsSet ? values : values[0] ?? null);
|
|
156
|
+
} catch (cause) {
|
|
157
|
+
const raw = fromPgError(cause);
|
|
158
|
+
return err(raw ? mapDbError(raw, context.errorMappers) : toDbError(cause));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
//#endregion
|
|
162
|
+
export { postgresExecutor as n, fromPgError as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { T as WorkflowGraph } from "./types-
|
|
1
|
+
import { T as WorkflowGraph } from "./types-CD6yCDx3.js";
|
|
2
2
|
//#region src/blocks/workflow-builder/executor.d.ts
|
|
3
3
|
/** What a step node passes to the engine's step: plain data, so it serializes. */
|
|
4
4
|
interface GraphStepCall {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { T as RawDbError } from "./result-
|
|
2
|
-
import { R as TableMeta } from "./types-
|
|
3
|
-
import { r as Executor, v as Operation } from "./executor-
|
|
1
|
+
import { T as RawDbError } from "./result-BchM1XZn.js";
|
|
2
|
+
import { R as TableMeta } from "./types-CoE5Zwy4.js";
|
|
3
|
+
import { r as Executor, v as Operation } from "./executor-Drzu3dBK.js";
|
|
4
4
|
//#region src/compile/sqlite.d.ts
|
|
5
5
|
/** A value SQLite binds: booleans become `0`/`1`, objects JSON text. */
|
|
6
6
|
type SqliteValue = string | number | bigint | null;
|
|
@@ -84,38 +84,32 @@ declare function likeToGlob(pattern: string): string;
|
|
|
84
84
|
*/
|
|
85
85
|
declare function compileSqlite(op: Operation, options?: SqliteCompilerOptions): SqlitePlan;
|
|
86
86
|
//#endregion
|
|
87
|
-
//#region src/
|
|
88
|
-
/** What a
|
|
87
|
+
//#region src/sqlite/executor.d.ts
|
|
88
|
+
/** What a SQLite database, transaction or lock context can run. */
|
|
89
89
|
interface SqliteContextLike {
|
|
90
90
|
getAll<T>(sql: string, parameters?: unknown[]): Promise<T[]>;
|
|
91
91
|
execute(sql: string, parameters?: unknown[]): Promise<unknown>;
|
|
92
92
|
}
|
|
93
|
-
/**
|
|
94
|
-
|
|
95
|
-
* `@powersync/web`, `@powersync/node`) the executor uses. Typed by shape,
|
|
96
|
-
* so better-supabase doesn't depend on PowerSync.
|
|
97
|
-
*/
|
|
98
|
-
interface PowerSyncDatabaseLike extends SqliteContextLike {
|
|
93
|
+
/** What a SQLite database the executor can run on provides: reads, writes and write transactions. */
|
|
94
|
+
interface SqliteDatabaseLike extends SqliteContextLike {
|
|
99
95
|
writeTransaction<T>(callback: (tx: SqliteContextLike) => Promise<T>): Promise<T>;
|
|
100
96
|
/** Runs a list's rows and its count on one snapshot when present. */
|
|
101
97
|
readTransaction?<T>(callback: (tx: SqliteContextLike) => Promise<T>): Promise<T>;
|
|
102
|
-
onChange?(handler: {
|
|
103
|
-
onChange: (event: {
|
|
104
|
-
changedTables: string[];
|
|
105
|
-
}) => Promise<void> | void;
|
|
106
|
-
}, options?: {
|
|
107
|
-
tables?: string[];
|
|
108
|
-
throttleMs?: number;
|
|
109
|
-
signal?: AbortSignal;
|
|
110
|
-
}): () => void;
|
|
111
98
|
}
|
|
112
|
-
interface
|
|
99
|
+
interface SqliteExecutorOptions extends SqliteCompilerOptions {
|
|
113
100
|
/**
|
|
114
|
-
* A primary key for an insert that leaves it out.
|
|
101
|
+
* A primary key for an insert that leaves it out. Offline-first tables key on
|
|
115
102
|
* a text `id` that the client creates. Defaults to
|
|
116
|
-
* `crypto.randomUUID()`, else SQLite's `uuid()
|
|
103
|
+
* `crypto.randomUUID()`, else SQLite's `uuid()`.
|
|
117
104
|
*/
|
|
118
105
|
readonly newId?: (table: TableMeta) => string | Promise<string>;
|
|
106
|
+
/**
|
|
107
|
+
* Runs what SQLite can't, usually `postgrestExecutor(supabase)`: reads
|
|
108
|
+
* that compile to `unsupported` (includes, full-text search, function
|
|
109
|
+
* sources) and `db.$rpc`. Writes never fall back, so the upload
|
|
110
|
+
* queue stays the only write path. Offline, the fallback's error comes back.
|
|
111
|
+
*/
|
|
112
|
+
readonly fallback?: Executor;
|
|
119
113
|
}
|
|
120
114
|
/**
|
|
121
115
|
* A SQLite constraint error in the shape `mapDbError` reads from Postgres:
|
|
@@ -127,22 +121,44 @@ declare function fromSqliteError(cause: unknown): RawDbError | undefined;
|
|
|
127
121
|
* whatever the sync wrote (`2026-01-02 10:00:00.500000Z`).
|
|
128
122
|
*/
|
|
129
123
|
declare function postgrestTimestamp(value: string): string;
|
|
124
|
+
//#endregion
|
|
125
|
+
//#region src/powersync/executor.d.ts
|
|
126
|
+
/**
|
|
127
|
+
* The part of `PowerSyncDatabase` (`@powersync/react-native`,
|
|
128
|
+
* `@powersync/web`, `@powersync/node`) the executor uses. Typed by shape,
|
|
129
|
+
* so better-supabase doesn't depend on PowerSync.
|
|
130
|
+
*/
|
|
131
|
+
interface PowerSyncDatabaseLike extends SqliteDatabaseLike {
|
|
132
|
+
onChange?(handler: {
|
|
133
|
+
onChange: (event: {
|
|
134
|
+
changedTables: string[];
|
|
135
|
+
}) => Promise<void> | void;
|
|
136
|
+
}, options?: {
|
|
137
|
+
tables?: string[];
|
|
138
|
+
throttleMs?: number;
|
|
139
|
+
signal?: AbortSignal;
|
|
140
|
+
}): () => void;
|
|
141
|
+
}
|
|
142
|
+
type PowerSyncExecutorOptions = SqliteExecutorOptions;
|
|
130
143
|
/**
|
|
131
144
|
* Runs repository operations on PowerSync's local SQLite database, so the
|
|
132
145
|
* same repositories and list definitions work offline on native. Reads
|
|
133
146
|
* return rows in the PostgREST shape (booleans, parsed JSON, ISO
|
|
134
147
|
* timestamps); writes go through PowerSync's upload queue. What SQLite
|
|
135
|
-
* can't express (includes, full-text search, function sources)
|
|
136
|
-
* `DbError` of kind `unsupported` without running
|
|
148
|
+
* can't express (includes, full-text search, function sources) and
|
|
149
|
+
* `db.$rpc` return a `DbError` of kind `unsupported` without running
|
|
150
|
+
* anything, or run on `options.fallback` when you pass one.
|
|
137
151
|
* `maxAffected` is checked against the selected keys before any write; a
|
|
138
152
|
* call's `timeout` and `signal` are checked before the statements start,
|
|
139
153
|
* and `retry` does nothing here. A `bigint` beyond `Number.MAX_SAFE_INTEGER`
|
|
140
154
|
* comes back as its decimal string instead of a rounded number.
|
|
141
155
|
*
|
|
142
156
|
* ```ts
|
|
143
|
-
* const db = betterSupabase.connect(
|
|
157
|
+
* const db = betterSupabase.connect(
|
|
158
|
+
* powersyncExecutor(powersync, { fallback: postgrestExecutor(supabase) }),
|
|
159
|
+
* );
|
|
144
160
|
* ```
|
|
145
161
|
*/
|
|
146
162
|
declare function powersyncExecutor(db: PowerSyncDatabaseLike, options?: PowerSyncExecutorOptions): Executor;
|
|
147
163
|
//#endregion
|
|
148
|
-
export { SqliteValue as _,
|
|
164
|
+
export { SqliteValue as _, fromSqliteError as a, quoteSqliteIdent as b, SqliteCompilerOptions as c, SqliteKeyedPlan as d, SqliteKeys as f, SqliteSelectPlan as g, SqliteReturning as h, SqliteContextLike as i, SqliteDecode as l, SqliteQuery as m, PowerSyncExecutorOptions as n, postgrestTimestamp as o, SqlitePlan as p, powersyncExecutor as r, SqliteColumn as s, PowerSyncDatabaseLike as t, SqliteInsertPlan as u, compileSqlite as v, sqliteValue as x, likeToGlob as y };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { f as Result, w as ErrorMapper } from "./result-
|
|
2
|
-
import { O as RelationMeta, R as TableMeta, d as Codec, g as FunctionMeta } from "./types-
|
|
1
|
+
import { f as Result, w as ErrorMapper } from "./result-BchM1XZn.js";
|
|
2
|
+
import { O as RelationMeta, R as TableMeta, d as Codec, g as FunctionMeta } from "./types-CoE5Zwy4.js";
|
|
3
3
|
//#region src/ir/types.d.ts
|
|
4
4
|
/**
|
|
5
5
|
* The query IR. Every repository call becomes one of these operations; the
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { T as RawDbError } from "./result-
|
|
2
|
-
import { r as Executor } from "./executor-
|
|
1
|
+
import { T as RawDbError } from "./result-BchM1XZn.js";
|
|
2
|
+
import { r as Executor } from "./executor-Drzu3dBK.js";
|
|
3
3
|
//#region src/postgres/executor.d.ts
|
|
4
4
|
/**
|
|
5
5
|
* Anything that runs parameterized SQL: `ctx.postgres` from
|