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/svelte/index.d.ts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { b as DbError } from "../result-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { t as AuthSnapshot } from "../bind-
|
|
5
|
-
import { t as AuthSession } from "../view-
|
|
6
|
-
import { S as Topic, f as PresenceMember, u as EventSchemas, w as TopicHandlers, x as SubscriptionStatus } from "../index-
|
|
7
|
-
import { a as BroadcastOptions, c as
|
|
1
|
+
import { b as DbError } from "../result-BchM1XZn.js";
|
|
2
|
+
import { J as TemplateValues } from "../storage-api-CB7Zl1Ci.js";
|
|
3
|
+
import { at as QuerySpec } from "../define-DmcfoNXB.js";
|
|
4
|
+
import { t as AuthSnapshot } from "../bind-CQ5mPyX1.js";
|
|
5
|
+
import { t as AuthSession } from "../view-TpXEUcVN.js";
|
|
6
|
+
import { S as Topic, f as PresenceMember, u as EventSchemas, w as TopicHandlers, x as SubscriptionStatus } from "../index-BCHR4Ucl.js";
|
|
7
|
+
import { a as BroadcastOptions, c as LiveCountHookOptions, d as PresenceHookOptions, f as PresenceTopic, i as ActionState, l as LiveCountSource, m as UseActionOptions, n as ActionInputOf, o as ClaimsOf, p as ProfileOf, r as ActionResultOf, s as ClientLike, t as fieldErrorsOf, u as LiveQueryHookOptions } from "../field-errors-DIe9XYWL.js";
|
|
8
8
|
import { SupabaseClient } from "@supabase/supabase-js";
|
|
9
|
-
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
10
9
|
import { QueryClient } from "@tanstack/query-core";
|
|
11
10
|
//#region src/svelte/index.d.ts
|
|
12
11
|
/** A value read through `.current`, reactive in templates, `$derived` and `$effect`. */
|
|
@@ -36,14 +35,6 @@ export interface ActionHandle<I, T> extends ActionState<I, T> {
|
|
|
36
35
|
readonly run: (input: I) => Promise<ActionResultOf<T>>;
|
|
37
36
|
readonly reset: () => void;
|
|
38
37
|
}
|
|
39
|
-
/** The claims type of a client's `betterSupabase.claims(schema)`, `unknown` without one. */
|
|
40
|
-
export type ClaimsOf<B extends ClientLike> = B["betterSupabase"] extends {
|
|
41
|
-
readonly claimsSchema: StandardSchemaV1<unknown, infer C> | undefined;
|
|
42
|
-
} ? C : unknown;
|
|
43
|
-
/** The profile type of a client's `betterSupabase.userMetadata(schema)`, `unknown` without one. */
|
|
44
|
-
export type ProfileOf<B extends ClientLike> = B["betterSupabase"] extends {
|
|
45
|
-
readonly userMetadataSchema: StandardSchemaV1<unknown, infer P> | undefined;
|
|
46
|
-
} ? P : unknown;
|
|
47
38
|
/**
|
|
48
39
|
* The client bound to Svelte. Inputs are getters (`() => spec`), so the
|
|
49
40
|
* subscriptions follow `$state` and `$props`. A subscription starts when a
|
|
@@ -111,4 +102,4 @@ export declare function setSession(session: () => AuthSession): void;
|
|
|
111
102
|
/** The session from the nearest `setSession()`, typed with `useSession<Claims, Profile>()`. */
|
|
112
103
|
export declare function useSession<C = unknown, P = unknown>(): Current<AuthSession<C, P>>;
|
|
113
104
|
//#endregion
|
|
114
|
-
export { type ActionInputOf, type ActionResultOf, type ActionState, type AuthSession, type AuthSnapshot, type BroadcastOptions, type ClientLike, type LiveCountHookOptions, type LiveCountSource, type LiveQueryHookOptions, type PresenceHookOptions, type PresenceTopic, type UseActionOptions, fieldErrorsOf };
|
|
105
|
+
export { type ActionInputOf, type ActionResultOf, type ActionState, type AuthSession, type AuthSnapshot, type BroadcastOptions, type ClaimsOf, type ClientLike, type LiveCountHookOptions, type LiveCountSource, type LiveQueryHookOptions, type PresenceHookOptions, type PresenceTopic, type ProfileOf, type UseActionOptions, fieldErrorsOf };
|
package/dist/svelte/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as clearOnUserChange } from "../user-change-XzvgafU4.js";
|
|
2
|
-
import { t as
|
|
3
|
-
import {
|
|
2
|
+
import { a as createActionRunner, c as liveKey, d as shownCount, f as startBroadcast, i as countSource, l as notJoined, m as startLiveQuery, n as assertInvalidateClient, o as joinPresence, p as startLiveCount, r as callerOf, s as keyed, t as NO_COUNT, u as plainCaller } from "../client-wxeTQFtB.js";
|
|
3
|
+
import { t as fieldErrorsOf } from "../field-errors-DZVRWRkf.js";
|
|
4
4
|
import { getContext, onMount, setContext } from "svelte";
|
|
5
5
|
import { createSubscriber } from "svelte/reactivity";
|
|
6
6
|
//#region src/svelte/index.ts
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { a as AnyModels, i as AnyFunctions } from "../types-
|
|
2
|
-
import { t as BetterSupabase } from "../define-
|
|
3
|
-
import { t as BetterServer } from "../server-
|
|
4
|
-
import { a as AuthorizedContext, c as Unwrapped, i as AuthorizeOptions, n as ActionParsed, o as BlockActionOptions, r as ActionResult, s as BlockRequireOptions } from "../kit-
|
|
5
|
-
import { t as RefusalRedirects } from "../refusal-
|
|
6
|
-
import { n as FrameworkOptions, t as FrameworkLocals } from "../framework-
|
|
1
|
+
import { a as AnyModels, i as AnyFunctions } from "../types-CoE5Zwy4.js";
|
|
2
|
+
import { t as BetterSupabase } from "../define-DmcfoNXB.js";
|
|
3
|
+
import { t as BetterServer } from "../server-types-CrAmZ8jv.js";
|
|
4
|
+
import { a as AuthorizedContext, c as Unwrapped, i as AuthorizeOptions, n as ActionParsed, o as BlockActionOptions, r as ActionResult, s as BlockRequireOptions } from "../kit-W99LCPBS.js";
|
|
5
|
+
import { t as RefusalRedirects } from "../refusal-CFI8-5nf.js";
|
|
6
|
+
import { n as FrameworkOptions, t as FrameworkLocals } from "../framework-148t1m3C.js";
|
|
7
7
|
import { t as Validated } from "../shared-DDSjEGDR.js";
|
|
8
|
-
import { i as tagFor } from "../tags-
|
|
8
|
+
import { i as tagFor } from "../tags-BO9LjtWG.js";
|
|
9
9
|
import { AnyEntry, Contributions } from "@supabase/middleware";
|
|
10
10
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
11
11
|
//#region src/bridges/sveltekit.d.ts
|
package/dist/sveltekit/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { t as DbException } from "../db-exception-CnWcYPxL.js";
|
|
2
|
-
import { r as dbErrorOf } from "../errors-
|
|
3
|
-
import {
|
|
4
|
-
import { c as extendServer,
|
|
5
|
-
import { t as defaultExpose } from "../respond-
|
|
2
|
+
import { r as dbErrorOf } from "../errors-2M6CKMP4.js";
|
|
3
|
+
import { s as toProblem } from "../problem-CJvFeGu7.js";
|
|
4
|
+
import { c as extendServer, o as withFlush, s as createServer } from "../adapter-CN45ibbV.js";
|
|
5
|
+
import { t as defaultExpose } from "../respond-volM3ByS.js";
|
|
6
6
|
import { r as tagFor } from "../tags-B99_U9Pp.js";
|
|
7
|
-
import { i as requireCaller, o as runAction } from "../kit-
|
|
7
|
+
import { i as requireCaller, o as runAction } from "../kit-BhHr9T9v.js";
|
|
8
8
|
import { n as bufferInPlace, t as around } from "../shared-CBxosKK3.js";
|
|
9
|
-
import { a as platformWaitUntil, i as localsOf, n as actionInput, r as frameworkEntry } from "../framework-
|
|
10
|
-
import { i as refusalTarget } from "../refusal-
|
|
9
|
+
import { a as platformWaitUntil, i as localsOf, n as actionInput, r as frameworkEntry } from "../framework-3ey3QmrO.js";
|
|
10
|
+
import { i as refusalTarget } from "../refusal-K78A1Vmq.js";
|
|
11
11
|
//#region src/bridges/sveltekit.ts
|
|
12
12
|
/**
|
|
13
13
|
* Runs an entry array as a SvelteKit `handle` hook. Every contributed key
|
|
@@ -57,9 +57,7 @@ function createSvelteKit(betterSupabase, options = {}) {
|
|
|
57
57
|
const env = event.platform?.env;
|
|
58
58
|
return run(event.request, env, async (contributions) => {
|
|
59
59
|
Object.assign(event.locals, localsOf(contributions));
|
|
60
|
-
|
|
61
|
-
flushEvents(server, options.waitUntil ?? platformWaitUntil(platform));
|
|
62
|
-
return response;
|
|
60
|
+
return withFlush(server, options.waitUntil ?? platformWaitUntil(platform), () => resolve(event));
|
|
63
61
|
});
|
|
64
62
|
};
|
|
65
63
|
return extendServer(server, {
|
|
@@ -67,7 +65,7 @@ function createSvelteKit(betterSupabase, options = {}) {
|
|
|
67
65
|
handle,
|
|
68
66
|
require: async (event, requireOptions = {}) => {
|
|
69
67
|
const locals = localsFrom(event);
|
|
70
|
-
const caller = await requireCaller(locals.bs.auth, requireOptions, locals.tenant);
|
|
68
|
+
const caller = await requireCaller(locals.bs.auth, requireOptions, locals.tenant, options.authorizer);
|
|
71
69
|
if ("kind" in caller) return refuse(caller, event.request);
|
|
72
70
|
return {
|
|
73
71
|
...locals,
|
|
@@ -81,7 +79,7 @@ function createSvelteKit(betterSupabase, options = {}) {
|
|
|
81
79
|
const result = await runAction(locals.bs.auth, actionOptions, input, locals.tenant, (parsed, caller) => fn(parsed, {
|
|
82
80
|
...locals,
|
|
83
81
|
...caller
|
|
84
|
-
}, event));
|
|
82
|
+
}, event), options.authorizer);
|
|
85
83
|
if (!result.ok && options.kit) return options.kit.fail(result.error.status, result);
|
|
86
84
|
return result;
|
|
87
85
|
};
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import { i as isPlainDateTime, n as isInstant } from "./temporal-BJGitm-h.js";
|
|
2
|
+
import { t as isList } from "./guards-6F2bCtQR.js";
|
|
3
|
+
//#region src/core/table-json-schema.ts
|
|
4
|
+
/** JSON Schema for one scalar. Codec values are described by their wire form. */
|
|
5
|
+
function scalarJsonSchema(kind) {
|
|
6
|
+
switch (kind.kind) {
|
|
7
|
+
case "uuid": return {
|
|
8
|
+
type: "string",
|
|
9
|
+
format: "uuid"
|
|
10
|
+
};
|
|
11
|
+
case "string": return { type: "string" };
|
|
12
|
+
case "integer": return { type: "integer" };
|
|
13
|
+
case "number": return { type: "number" };
|
|
14
|
+
case "boolean": return { type: "boolean" };
|
|
15
|
+
case "datetime": return {
|
|
16
|
+
type: "string",
|
|
17
|
+
format: "date-time"
|
|
18
|
+
};
|
|
19
|
+
case "date": return {
|
|
20
|
+
type: "string",
|
|
21
|
+
format: "date"
|
|
22
|
+
};
|
|
23
|
+
case "instant": return {
|
|
24
|
+
type: "string",
|
|
25
|
+
format: "date-time"
|
|
26
|
+
};
|
|
27
|
+
case "plainDateTime": return {
|
|
28
|
+
type: "string",
|
|
29
|
+
pattern: "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?$"
|
|
30
|
+
};
|
|
31
|
+
case "bigint": return {
|
|
32
|
+
type: "string",
|
|
33
|
+
pattern: "^-?\\d+$"
|
|
34
|
+
};
|
|
35
|
+
case "json":
|
|
36
|
+
case "unknown":
|
|
37
|
+
case "custom": return {};
|
|
38
|
+
case "enum": return {
|
|
39
|
+
type: "string",
|
|
40
|
+
enum: [...kind.values]
|
|
41
|
+
};
|
|
42
|
+
default: return kind;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/** Wraps a column's schema for arrays and `null`. */
|
|
46
|
+
function columnJsonSchema(base, field) {
|
|
47
|
+
const schema = field.array ? {
|
|
48
|
+
type: "array",
|
|
49
|
+
items: base
|
|
50
|
+
} : base;
|
|
51
|
+
if (!field.nullable) return schema;
|
|
52
|
+
if (Object.keys(schema).length === 0) return schema;
|
|
53
|
+
const { enum: values, ...rest } = schema;
|
|
54
|
+
if (isList(values)) return {
|
|
55
|
+
...rest,
|
|
56
|
+
type: ["string", "null"],
|
|
57
|
+
enum: [...values, null]
|
|
58
|
+
};
|
|
59
|
+
return typeof schema["type"] === "string" ? {
|
|
60
|
+
...schema,
|
|
61
|
+
type: [schema["type"], "null"]
|
|
62
|
+
} : { anyOf: [schema, { type: "null" }] };
|
|
63
|
+
}
|
|
64
|
+
const BOUND_KEYS = [
|
|
65
|
+
"minimum",
|
|
66
|
+
"exclusiveMinimum",
|
|
67
|
+
"maximum",
|
|
68
|
+
"exclusiveMaximum",
|
|
69
|
+
"minLength",
|
|
70
|
+
"maxLength"
|
|
71
|
+
];
|
|
72
|
+
function propertySchema(field, base) {
|
|
73
|
+
const bounds = {};
|
|
74
|
+
for (const key of BOUND_KEYS) {
|
|
75
|
+
const value = field[key];
|
|
76
|
+
if (value !== void 0) bounds[key] = value;
|
|
77
|
+
}
|
|
78
|
+
const schema = {
|
|
79
|
+
...columnJsonSchema({
|
|
80
|
+
...base,
|
|
81
|
+
...bounds
|
|
82
|
+
}, field),
|
|
83
|
+
...field.description === void 0 ? {} : { description: field.description },
|
|
84
|
+
...field.examples === void 0 ? {} : { examples: [...field.examples] }
|
|
85
|
+
};
|
|
86
|
+
return field.readOnly ? {
|
|
87
|
+
...schema,
|
|
88
|
+
readOnly: true
|
|
89
|
+
} : schema;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* The JSON Schema object for a table shape. `nested` converts a typed jsonb
|
|
93
|
+
* column's own schema; without it those columns accept any value.
|
|
94
|
+
*/
|
|
95
|
+
function tableJsonSchema(spec, nested) {
|
|
96
|
+
const properties = {};
|
|
97
|
+
const required = [];
|
|
98
|
+
for (const [name, field] of Object.entries(spec.fields)) {
|
|
99
|
+
properties[name] = propertySchema(field, (field.schema && nested?.(field.schema)) ?? scalarJsonSchema(field));
|
|
100
|
+
if (!field.optional) required.push(name);
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
...spec.title === void 0 ? {} : { title: spec.title },
|
|
104
|
+
...spec.description === void 0 ? {} : { description: spec.description },
|
|
105
|
+
type: "object",
|
|
106
|
+
properties,
|
|
107
|
+
...required.length > 0 ? { required } : {},
|
|
108
|
+
additionalProperties: false
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
//#endregion
|
|
112
|
+
//#region src/core/table-schema.ts
|
|
113
|
+
const SCHEMA_URIS = {
|
|
114
|
+
"draft-2020-12": "https://json-schema.org/draft/2020-12/schema",
|
|
115
|
+
"draft-07": "http://json-schema.org/draft-07/schema#"
|
|
116
|
+
};
|
|
117
|
+
function isObject(value) {
|
|
118
|
+
return typeof value === "object" && value !== null && !isList(value);
|
|
119
|
+
}
|
|
120
|
+
/** Rewrites a 2020-12 schema into the OpenAPI 3.0 dialect (`nullable`, `example`). */
|
|
121
|
+
function toOpenApi30(schema) {
|
|
122
|
+
const out = {};
|
|
123
|
+
for (const [key, value] of Object.entries(schema)) if (key === "properties" && isObject(value)) out[key] = Object.fromEntries(Object.entries(value).map(([name, child]) => [name, isObject(child) ? toOpenApi30(child) : child]));
|
|
124
|
+
else if (key === "items" && isObject(value)) out[key] = toOpenApi30(value);
|
|
125
|
+
else if (key === "examples" && isList(value)) {
|
|
126
|
+
if (value.length > 0) out["example"] = value[0];
|
|
127
|
+
} else if (key === "exclusiveMinimum" || key === "exclusiveMaximum") {
|
|
128
|
+
out[key === "exclusiveMinimum" ? "minimum" : "maximum"] = value;
|
|
129
|
+
out[key] = true;
|
|
130
|
+
} else out[key] = value;
|
|
131
|
+
const type = out["type"];
|
|
132
|
+
if (isList(type) && type.includes("null")) {
|
|
133
|
+
out["type"] = type.find((entry) => entry !== "null");
|
|
134
|
+
out["nullable"] = true;
|
|
135
|
+
}
|
|
136
|
+
const anyOf = out["anyOf"];
|
|
137
|
+
if (isList(anyOf) && anyOf.length === 2) {
|
|
138
|
+
const [inner, empty] = anyOf;
|
|
139
|
+
if (isObject(inner) && isObject(empty) && empty["type"] === "null") {
|
|
140
|
+
delete out["anyOf"];
|
|
141
|
+
return {
|
|
142
|
+
...toOpenApi30(inner),
|
|
143
|
+
...out,
|
|
144
|
+
nullable: true
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return out;
|
|
149
|
+
}
|
|
150
|
+
/** The schema with the target's `$schema`, or in the OpenAPI 3.0 dialect. */
|
|
151
|
+
function forTarget(schema, target) {
|
|
152
|
+
if (target === "openapi-3.0") return toOpenApi30(schema);
|
|
153
|
+
const uri = SCHEMA_URIS[target];
|
|
154
|
+
if (!uri) throw new Error(`Unsupported JSON Schema target "${target}"`);
|
|
155
|
+
return {
|
|
156
|
+
$schema: uri,
|
|
157
|
+
...schema
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
161
|
+
const DATE = /^\d{4}-\d{2}-\d{2}$/;
|
|
162
|
+
const DATETIME = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}(?::?\d{2})?)$/;
|
|
163
|
+
function isJson(value) {
|
|
164
|
+
if (value === null || typeof value === "string" || typeof value === "boolean") return true;
|
|
165
|
+
if (typeof value === "number") return Number.isFinite(value);
|
|
166
|
+
if (isList(value)) return value.every(isJson);
|
|
167
|
+
if (!isObject(value)) return false;
|
|
168
|
+
const proto = Object.getPrototypeOf(value);
|
|
169
|
+
return (proto === Object.prototype || proto === null) && Object.values(value).every(isJson);
|
|
170
|
+
}
|
|
171
|
+
/** The issue message for a scalar, or `undefined` when the value passes. */
|
|
172
|
+
function scalarIssue(field, value) {
|
|
173
|
+
switch (field.kind) {
|
|
174
|
+
case "uuid": return typeof value === "string" && UUID.test(value) ? void 0 : "Expected a UUID";
|
|
175
|
+
case "string": return typeof value === "string" ? void 0 : "Expected a string";
|
|
176
|
+
case "integer": return Number.isSafeInteger(value) ? void 0 : "Expected an integer";
|
|
177
|
+
case "number": return typeof value === "number" && Number.isFinite(value) ? void 0 : "Expected a number";
|
|
178
|
+
case "boolean": return typeof value === "boolean" ? void 0 : "Expected a boolean";
|
|
179
|
+
case "datetime": return typeof value === "string" && DATETIME.test(value) ? void 0 : "Expected an ISO 8601 date-time with an offset";
|
|
180
|
+
case "date": return typeof value === "string" && DATE.test(value) ? void 0 : "Expected an ISO 8601 date";
|
|
181
|
+
case "instant": return isInstant(value) ? void 0 : "Expected a Temporal.Instant";
|
|
182
|
+
case "plainDateTime": return isPlainDateTime(value) ? void 0 : "Expected a Temporal.PlainDateTime";
|
|
183
|
+
case "bigint": return typeof value === "bigint" ? void 0 : "Expected a bigint";
|
|
184
|
+
case "json": return isJson(value) ? void 0 : "Expected a JSON value";
|
|
185
|
+
case "enum": return typeof value === "string" && field.values.includes(value) ? void 0 : `Expected one of ${field.values.map((entry) => JSON.stringify(entry)).join(", ")}`;
|
|
186
|
+
case "unknown": return;
|
|
187
|
+
case "custom": return value === void 0 ? "Expected a value" : void 0;
|
|
188
|
+
default: return field;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
const characters = (count) => count === 1 ? "1 character" : `${count} characters`;
|
|
192
|
+
function boundIssue(field, value) {
|
|
193
|
+
if (typeof value === "number") {
|
|
194
|
+
if (field.minimum !== void 0 && value < field.minimum) return `Expected at least ${field.minimum}`;
|
|
195
|
+
if (field.exclusiveMinimum !== void 0 && value <= field.exclusiveMinimum) return `Expected more than ${field.exclusiveMinimum}`;
|
|
196
|
+
if (field.maximum !== void 0 && value > field.maximum) return `Expected at most ${field.maximum}`;
|
|
197
|
+
if (field.exclusiveMaximum !== void 0 && value >= field.exclusiveMaximum) return `Expected less than ${field.exclusiveMaximum}`;
|
|
198
|
+
}
|
|
199
|
+
if (typeof value === "string") {
|
|
200
|
+
if (field.minLength !== void 0 && value.length < field.minLength) return `Expected at least ${characters(field.minLength)}`;
|
|
201
|
+
if (field.maxLength !== void 0 && value.length > field.maxLength) return `Expected at most ${characters(field.maxLength)}`;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
function nestedIssues(result, path) {
|
|
205
|
+
return (result.issues ?? []).map((issue) => ({
|
|
206
|
+
message: issue.message,
|
|
207
|
+
path: [...path, ...issue.path ?? []]
|
|
208
|
+
}));
|
|
209
|
+
}
|
|
210
|
+
/** Checks one element; a nested schema's async result lands in `pending`. */
|
|
211
|
+
function checkValue(field, value, path, issues, pending) {
|
|
212
|
+
if (field.schema) {
|
|
213
|
+
const result = field.schema["~standard"].validate(value);
|
|
214
|
+
if (result instanceof Promise) pending.push(result.then((settled) => nestedIssues(settled, path)));
|
|
215
|
+
else issues.push(...nestedIssues(result, path));
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
const message = scalarIssue(field, value) ?? boundIssue(field, value);
|
|
219
|
+
if (message) issues.push({
|
|
220
|
+
message,
|
|
221
|
+
path: [...path]
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
function checkField(name, field, value, issues, pending) {
|
|
225
|
+
if (value === null && field.nullable) return;
|
|
226
|
+
if (!field.array) {
|
|
227
|
+
checkValue(field, value, [name], issues, pending);
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
if (!isList(value)) {
|
|
231
|
+
issues.push({
|
|
232
|
+
message: "Expected an array",
|
|
233
|
+
path: [name]
|
|
234
|
+
});
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
value.forEach((item, index) => {
|
|
238
|
+
checkValue(field, item, [name, index], issues, pending);
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* A Standard Schema for one table shape, without a validation library. It
|
|
243
|
+
* validates like the `zod()` and `valibot()` output, drops unknown keys, and
|
|
244
|
+
* converts to JSON Schema for `draft-2020-12`, `draft-07` and `openapi-3.0`.
|
|
245
|
+
* The `standardSchema()` generator emits one per Row, Insert and Update.
|
|
246
|
+
*/
|
|
247
|
+
function tableSchema(spec) {
|
|
248
|
+
const entries = Object.entries(spec.fields);
|
|
249
|
+
const validate = (input) => {
|
|
250
|
+
if (!isObject(input)) return { issues: [{ message: "Expected an object" }] };
|
|
251
|
+
const issues = [];
|
|
252
|
+
const pending = [];
|
|
253
|
+
const value = {};
|
|
254
|
+
for (const [name, field] of entries) {
|
|
255
|
+
if (!Object.hasOwn(input, name)) {
|
|
256
|
+
if (!field.optional && field.kind !== "unknown") issues.push({
|
|
257
|
+
message: "Required",
|
|
258
|
+
path: [name]
|
|
259
|
+
});
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
value[name] = input[name];
|
|
263
|
+
checkField(name, field, input[name], issues, pending);
|
|
264
|
+
}
|
|
265
|
+
const settle = (all) => all.length > 0 ? { issues: all } : { value };
|
|
266
|
+
if (pending.length === 0) return settle(issues);
|
|
267
|
+
return Promise.all(pending).then((nested) => settle([...issues, ...nested.flat()]));
|
|
268
|
+
};
|
|
269
|
+
const convert = (direction) => (options) => forTarget(tableJsonSchema(spec, (schema) => {
|
|
270
|
+
const converted = schema["~standard"].jsonSchema?.[direction](options);
|
|
271
|
+
if (!converted) return converted;
|
|
272
|
+
const { $schema: _, ...rest } = converted;
|
|
273
|
+
return rest;
|
|
274
|
+
}), options.target);
|
|
275
|
+
return { "~standard": {
|
|
276
|
+
version: 1,
|
|
277
|
+
vendor: "better-supabase",
|
|
278
|
+
validate,
|
|
279
|
+
jsonSchema: {
|
|
280
|
+
input: convert("input"),
|
|
281
|
+
output: convert("output")
|
|
282
|
+
}
|
|
283
|
+
} };
|
|
284
|
+
}
|
|
285
|
+
//#endregion
|
|
286
|
+
export { tableSchema as n, tableJsonSchema as r, forTarget as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { c as CacheTarget, s as CacheAdapter } from "./define-DmcfoNXB.js";
|
|
2
2
|
//#region src/core/tags.d.ts
|
|
3
3
|
interface TagOptions {
|
|
4
4
|
/** The tenant the read is scoped to; `"*"` is every tenant's reads. */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { L as TableKey, a as AnyModels, i as AnyFunctions } from "../types-
|
|
2
|
-
import {
|
|
1
|
+
import { L as TableKey, a as AnyModels, i as AnyFunctions } from "../types-CoE5Zwy4.js";
|
|
2
|
+
import { _ as Db, t as BetterSupabase } from "../define-DmcfoNXB.js";
|
|
3
3
|
import { t as BetterQueryMeta } from "../invalidate-BBqhpxyB.js";
|
|
4
4
|
import { QueryClient, SkipToken } from "@tanstack/query-core";
|
|
5
5
|
//#region src/tanstack-db/collection.d.ts
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { L as TableKey, a as AnyModels, i as AnyFunctions } from "../../types-CoE5Zwy4.js";
|
|
2
|
+
import { _ as Db, t as BetterSupabase } from "../../define-DmcfoNXB.js";
|
|
3
|
+
import { SupabaseClient } from "@supabase/supabase-js";
|
|
4
|
+
import { supabaseCollectionOptions } from "@supabase-labs/tanstack-db";
|
|
5
|
+
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
6
|
+
import { QueryClient } from "@tanstack/query-core";
|
|
7
|
+
//#region src/tanstack-db/supabase/collection.d.ts
|
|
8
|
+
type LabsConfig<Schema extends StandardSchemaV1> = ReturnType<typeof supabaseCollectionOptions<Schema>>;
|
|
9
|
+
/**
|
|
10
|
+
* What `supabaseCollectionOptions()` from `@supabase-labs/tanstack-db`
|
|
11
|
+
* returns, without `undefined` in its optional properties, so `createCollection()`
|
|
12
|
+
* accepts it under `exactOptionalPropertyTypes`.
|
|
13
|
+
*/
|
|
14
|
+
type SupabaseCollectionConfig<Schema extends StandardSchemaV1> = { [K in keyof LabsConfig<Schema>]: Exclude<LabsConfig<Schema>[K], undefined>; };
|
|
15
|
+
interface BaseOptions<Schema extends StandardSchemaV1> {
|
|
16
|
+
/** The row schema, in database column names: `customersRow` from `standardSchema()`, `zod()` or `valibot()`. */
|
|
17
|
+
readonly schema: Schema;
|
|
18
|
+
/** Applies inserts, updates and deletes from other clients through Realtime `postgres_changes`. */
|
|
19
|
+
readonly realtime?: boolean;
|
|
20
|
+
/** Pushes each live query's filter to the Realtime subscription. Defaults to `false`. */
|
|
21
|
+
readonly realtimeUseFilter?: boolean;
|
|
22
|
+
readonly queryClient?: QueryClient;
|
|
23
|
+
}
|
|
24
|
+
type SupabaseCollectionOptions<M extends AnyModels, F extends AnyFunctions, E, Schema extends StandardSchemaV1> = BaseOptions<Schema> & ({
|
|
25
|
+
/** Sends writes through the table's repository (the default), so RLS, hooks, events and plugins apply. */
|
|
26
|
+
readonly writes?: "repository";
|
|
27
|
+
readonly db: Db<M, F, E, unknown> | (() => Db<M, F, E, unknown>);
|
|
28
|
+
} | {
|
|
29
|
+
/** Sends writes straight to PostgREST with the supabase client, like `@supabase-labs/tanstack-db`. */
|
|
30
|
+
readonly writes: "direct";
|
|
31
|
+
readonly db?: never;
|
|
32
|
+
});
|
|
33
|
+
/**
|
|
34
|
+
* A TanStack DB collection on `@supabase-labs/tanstack-db`: live queries load
|
|
35
|
+
* on demand through PostgREST, Realtime keeps them current, and writes go
|
|
36
|
+
* through the table's repository by default. Rows use database column names,
|
|
37
|
+
* so the schema must use `casing: "snake"`, and the table must live in the
|
|
38
|
+
* `public` schema, which is the one the Realtime listener watches.
|
|
39
|
+
*
|
|
40
|
+
* ```ts
|
|
41
|
+
* const customers = createCollection(
|
|
42
|
+
* supabaseCollection(betterSupabase, supabase, "customers", {
|
|
43
|
+
* schema: customersRow,
|
|
44
|
+
* db,
|
|
45
|
+
* realtime: true,
|
|
46
|
+
* }),
|
|
47
|
+
* );
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare function supabaseCollection<M extends AnyModels, D, F extends AnyFunctions, E, T extends TableKey<M>, Schema extends StandardSchemaV1>(betterSupabase: BetterSupabase<M, D, F, E>, supabase: SupabaseClient, table: T, options: SupabaseCollectionOptions<M, F, E, Schema>): SupabaseCollectionConfig<Schema>;
|
|
51
|
+
//#endregion
|
|
52
|
+
export type { SupabaseCollectionConfig, SupabaseCollectionOptions };
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { t as DbException } from "../../db-exception-CnWcYPxL.js";
|
|
2
|
+
import { supabaseCollectionOptions } from "@supabase-labs/tanstack-db";
|
|
3
|
+
//#region src/tanstack-db/supabase/collection.ts
|
|
4
|
+
function field(row, name) {
|
|
5
|
+
if (typeof row !== "object" || row === null || !(name in row)) return void 0;
|
|
6
|
+
return Object.getOwnPropertyDescriptor(row, name)?.value;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* A TanStack DB collection on `@supabase-labs/tanstack-db`: live queries load
|
|
10
|
+
* on demand through PostgREST, Realtime keeps them current, and writes go
|
|
11
|
+
* through the table's repository by default. Rows use database column names,
|
|
12
|
+
* so the schema must use `casing: "snake"`, and the table must live in the
|
|
13
|
+
* `public` schema, which is the one the Realtime listener watches.
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* const customers = createCollection(
|
|
17
|
+
* supabaseCollection(betterSupabase, supabase, "customers", {
|
|
18
|
+
* schema: customersRow,
|
|
19
|
+
* db,
|
|
20
|
+
* realtime: true,
|
|
21
|
+
* }),
|
|
22
|
+
* );
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
function supabaseCollection(betterSupabase, supabase, table, options) {
|
|
26
|
+
const { meta } = betterSupabase;
|
|
27
|
+
if (meta.casing !== "snake") throw new TypeError(`better-supabase: supabaseCollection() needs casing: "snake"; @supabase-labs/tanstack-db reads and writes database column names. Use collectionOptions() with camel casing.`);
|
|
28
|
+
const tableMeta = meta.tables[table];
|
|
29
|
+
if (!tableMeta) throw new TypeError(`better-supabase: unknown table "${table}"`);
|
|
30
|
+
if (tableMeta.schema !== "public") throw new TypeError(`better-supabase: supabaseCollection() supports tables in the public schema; "${tableMeta.schema}.${tableMeta.name}" is not.`);
|
|
31
|
+
const primaryKey = tableMeta.primaryKey;
|
|
32
|
+
const [single] = primaryKey;
|
|
33
|
+
if (single === void 0) throw new TypeError(`better-supabase: the "${table}" collection needs a table with a primary key`);
|
|
34
|
+
const config = supabaseCollectionOptions({
|
|
35
|
+
tableName: tableMeta.name,
|
|
36
|
+
keys: [...primaryKey],
|
|
37
|
+
schema: options.schema,
|
|
38
|
+
supabase,
|
|
39
|
+
...options.queryClient ? { queryClient: options.queryClient } : {},
|
|
40
|
+
...options.realtime === void 0 ? {} : { realtime: options.realtime },
|
|
41
|
+
...options.realtimeUseFilter === void 0 ? {} : { realtimeUseFilter: options.realtimeUseFilter }
|
|
42
|
+
});
|
|
43
|
+
if (options.writes === "direct") return config;
|
|
44
|
+
const { db } = options;
|
|
45
|
+
const writeBack = !Object.values(tableMeta.columns).some((column) => column.codec !== void 0);
|
|
46
|
+
const composite = primaryKey.length > 1;
|
|
47
|
+
const idOf = (row) => composite ? Object.fromEntries(primaryKey.map((name) => [name, field(row, name)])) : field(row, single);
|
|
48
|
+
const write = (method) => {
|
|
49
|
+
const fn = (typeof db === "function" ? db() : db)[table]?.[method];
|
|
50
|
+
if (!fn) throw new TypeError(`better-supabase: ${table}.${method} is not available`);
|
|
51
|
+
return fn;
|
|
52
|
+
};
|
|
53
|
+
const orThrow = async (result) => {
|
|
54
|
+
const settled = await result;
|
|
55
|
+
if (!settled.ok) throw new DbException(settled.error);
|
|
56
|
+
return settled.data;
|
|
57
|
+
};
|
|
58
|
+
const done = { refetch: !writeBack };
|
|
59
|
+
const onInsert = async ({ transaction, collection }) => {
|
|
60
|
+
const create = write("create");
|
|
61
|
+
for (const mutation of transaction.mutations) {
|
|
62
|
+
const row = await orThrow(create(mutation.modified));
|
|
63
|
+
if (!writeBack) continue;
|
|
64
|
+
mutation.modified = row;
|
|
65
|
+
collection.utils.writeUpsert(mutation.modified);
|
|
66
|
+
}
|
|
67
|
+
return done;
|
|
68
|
+
};
|
|
69
|
+
const onUpdate = async ({ transaction, collection }) => {
|
|
70
|
+
const update = write("update");
|
|
71
|
+
for (const mutation of transaction.mutations) {
|
|
72
|
+
const row = await orThrow(update(idOf(mutation.original), mutation.changes));
|
|
73
|
+
if (!writeBack) continue;
|
|
74
|
+
mutation.modified = row;
|
|
75
|
+
collection.utils.writeUpdate(mutation.modified);
|
|
76
|
+
}
|
|
77
|
+
return done;
|
|
78
|
+
};
|
|
79
|
+
const onDelete = async ({ transaction, collection }) => {
|
|
80
|
+
const remove = write("delete");
|
|
81
|
+
for (const mutation of transaction.mutations) {
|
|
82
|
+
await orThrow(remove(idOf(mutation.original)));
|
|
83
|
+
if (!writeBack) continue;
|
|
84
|
+
const key = collection.getKeyFromItem(mutation.original);
|
|
85
|
+
if (collection._state.syncedData.has(key)) collection.utils.writeDelete(key);
|
|
86
|
+
}
|
|
87
|
+
return done;
|
|
88
|
+
};
|
|
89
|
+
return {
|
|
90
|
+
...config,
|
|
91
|
+
onInsert,
|
|
92
|
+
onUpdate,
|
|
93
|
+
onDelete
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//#endregion
|
|
97
|
+
export { supabaseCollection };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { a as AnyModels, i as AnyFunctions } from "../types-
|
|
2
|
-
import { t as BetterSupabase } from "../define-
|
|
3
|
-
import { t as BetterServer } from "../server-
|
|
4
|
-
import { a as AuthorizedContext, c as Unwrapped, i as AuthorizeOptions, n as ActionParsed, o as BlockActionOptions, r as ActionResult, s as BlockRequireOptions } from "../kit-
|
|
5
|
-
import { t as RefusalRedirects } from "../refusal-
|
|
6
|
-
import { n as FrameworkOptions, t as FrameworkLocals } from "../framework-
|
|
1
|
+
import { a as AnyModels, i as AnyFunctions } from "../types-CoE5Zwy4.js";
|
|
2
|
+
import { t as BetterSupabase } from "../define-DmcfoNXB.js";
|
|
3
|
+
import { t as BetterServer } from "../server-types-CrAmZ8jv.js";
|
|
4
|
+
import { a as AuthorizedContext, c as Unwrapped, i as AuthorizeOptions, n as ActionParsed, o as BlockActionOptions, r as ActionResult, s as BlockRequireOptions } from "../kit-W99LCPBS.js";
|
|
5
|
+
import { t as RefusalRedirects } from "../refusal-CFI8-5nf.js";
|
|
6
|
+
import { n as FrameworkOptions, t as FrameworkLocals } from "../framework-148t1m3C.js";
|
|
7
7
|
import { t as Validated } from "../shared-DDSjEGDR.js";
|
|
8
8
|
import { AnyEntry, Contributions } from "@supabase/middleware";
|
|
9
9
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { c as extendServer,
|
|
2
|
-
import { t as defaultExpose } from "../respond-
|
|
3
|
-
import { i as requireCaller, o as runAction } from "../kit-
|
|
1
|
+
import { c as extendServer, o as withFlush, s as createServer } from "../adapter-CN45ibbV.js";
|
|
2
|
+
import { t as defaultExpose } from "../respond-volM3ByS.js";
|
|
3
|
+
import { i as requireCaller, o as runAction } from "../kit-BhHr9T9v.js";
|
|
4
4
|
import { n as bufferInPlace, t as around } from "../shared-CBxosKK3.js";
|
|
5
|
-
import { i as localsOf, r as frameworkEntry } from "../framework-
|
|
6
|
-
import { r as refusalResponse } from "../refusal-
|
|
5
|
+
import { i as localsOf, r as frameworkEntry } from "../framework-3ey3QmrO.js";
|
|
6
|
+
import { r as refusalResponse } from "../refusal-K78A1Vmq.js";
|
|
7
7
|
//#region src/bridges/tanstack-start.ts
|
|
8
8
|
/** The `response` of a request middleware's `next()` result; server function results have none. */
|
|
9
9
|
function responseOf(result) {
|
|
@@ -62,15 +62,11 @@ function createTanStackStart(betterSupabase, options = {}) {
|
|
|
62
62
|
};
|
|
63
63
|
return extendServer(server, {
|
|
64
64
|
async middleware(args) {
|
|
65
|
-
|
|
66
|
-
return await served(args);
|
|
67
|
-
} finally {
|
|
68
|
-
flushEvents(server, options.waitUntil);
|
|
69
|
-
}
|
|
65
|
+
return withFlush(server, options.waitUntil, () => served(args));
|
|
70
66
|
},
|
|
71
67
|
require: async (context, requireOptions = {}) => {
|
|
72
68
|
const scope = scopeOf(context);
|
|
73
|
-
const caller = await requireCaller(scope.bs.auth, requireOptions, scope.tenant);
|
|
69
|
+
const caller = await requireCaller(scope.bs.auth, requireOptions, scope.tenant, options.authorizer);
|
|
74
70
|
if ("kind" in caller) {
|
|
75
71
|
const request = requests.get(scope) ?? new Request("http://localhost/");
|
|
76
72
|
throw refusalResponse(caller, request, options, expose);
|
|
@@ -86,7 +82,7 @@ function createTanStackStart(betterSupabase, options = {}) {
|
|
|
86
82
|
return await runAction(scope.bs.auth, actionOptions, data, scope.tenant, (parsed, caller) => fn(parsed, {
|
|
87
83
|
...scope,
|
|
88
84
|
...caller
|
|
89
|
-
}));
|
|
85
|
+
}), options.authorizer);
|
|
90
86
|
};
|
|
91
87
|
}
|
|
92
88
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as ok, r as err, s as toDbError, t as AsyncResult } from "./result-
|
|
1
|
+
import { a as ok, r as err, s as toDbError, t as AsyncResult } from "./result-DEqHCMKP.js";
|
|
2
2
|
//#region src/streams/tee.ts
|
|
3
3
|
/**
|
|
4
4
|
* Copies `source` into `store` under `id` while passing it through. Chunks
|