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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as signInWithOAuthBrowser, t as handleAuthDeepLink } from "../../auth-link-DrDX9KOT.js";
|
|
2
|
-
import { i as useAuth, n as ClientContext } from "../../hooks-
|
|
3
|
-
import { t as usePending } from "../../sign-in-
|
|
2
|
+
import { i as useAuth, n as ClientContext } from "../../hooks-Bhza9Hnr.js";
|
|
3
|
+
import { t as usePending } from "../../sign-in-D_yoP0PF.js";
|
|
4
4
|
import { useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
5
5
|
//#region src/react/native/index.ts
|
|
6
6
|
function useClientOf(explicit, hook) {
|
package/dist/react/server.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { t as escapeLike } from "../escape-like-
|
|
2
|
-
import {
|
|
3
|
-
import { s as Impersonator } from "../mfa-
|
|
4
|
-
import { t as tenantOf } from "../tenant-
|
|
5
|
-
import { t as AuthSession } from "../view-
|
|
6
|
-
import { r as LiveCountSeed } from "../index-
|
|
7
|
-
import { r as MembershipClaim } from "../entitlements-
|
|
8
|
-
import { n as supportOf, t as SupportView } from "../support-view-
|
|
9
|
-
import { a as BroadcastOptions,
|
|
10
|
-
import {
|
|
1
|
+
import { t as escapeLike } from "../escape-like-DDWoHzh_.js";
|
|
2
|
+
import { at as QuerySpec } from "../define-DmcfoNXB.js";
|
|
3
|
+
import { s as Impersonator } from "../mfa-SZc9YYyb.js";
|
|
4
|
+
import { t as tenantOf } from "../tenant-CM368LXb.js";
|
|
5
|
+
import { t as AuthSession } from "../view-TpXEUcVN.js";
|
|
6
|
+
import { r as LiveCountSeed } from "../index-BCHR4Ucl.js";
|
|
7
|
+
import { r as MembershipClaim } from "../entitlements-Ds8qoYZ-.js";
|
|
8
|
+
import { n as supportOf, t as SupportView } from "../support-view-scqMgtOo.js";
|
|
9
|
+
import { a as BroadcastOptions, c as LiveCountHookOptions, 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";
|
|
10
|
+
import { A as useSupabase, C as BetterSupabaseProviderProps, D as useBroadcast, E as useAuth, S as BetterSupabaseProvider, _ as ActionHandle, a as UploadTarget, c as useUpload$1, d as useDebouncedSearch$1, f as Presence, g as ActionForm, h as usePresence$1, i as UploadStatus, k as useLiveQuery, l as DebouncedSearch, m as PresenceTopic, n as SignedUrlSource, o as UseUploadOptions, p as PresenceHookOptions, r as Upload, s as useSignedUrl$1, t as SignedUrl, u as DebouncedSearchOptions, v as UseActionFormOptions, w as LiveCount, x as BetterHooks } from "../index-_4R4b01v.js";
|
|
11
11
|
import { SessionProvider, SessionProviderProps } from "./session.js";
|
|
12
12
|
import { a as useSignIn$1, i as SignOut, n as PendingState, o as useSignOut$1, r as SignIn, t as AuthHookOptions } from "../sign-in-BCV5S2WZ.js";
|
|
13
13
|
//#region src/react/server.d.ts
|
package/dist/react/server.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as escapeLike } from "../escape-like-DHfx6jRr.js";
|
|
2
2
|
import { t as supportOf } from "../support-view-g4YLBeqX.js";
|
|
3
|
-
import { a as useBroadcast, c as useLiveQuery, i as useAuth, l as useSupabase, t as BetterSupabaseProvider } from "../hooks-
|
|
4
|
-
import { t as fieldErrorsOf } from "../field-errors-
|
|
5
|
-
import "../react-
|
|
3
|
+
import { a as useBroadcast, c as useLiveQuery, i as useAuth, l as useSupabase, t as BetterSupabaseProvider } from "../hooks-Bhza9Hnr.js";
|
|
4
|
+
import { t as fieldErrorsOf } from "../field-errors-DZVRWRkf.js";
|
|
5
|
+
import "../react-Bmpo59D7.js";
|
|
6
6
|
import { t as tenantOf } from "../tenant-I1TEZ_BX.js";
|
|
7
7
|
import { SessionProvider } from "./session.js";
|
|
8
8
|
//#region src/react/server.ts
|
package/dist/react/session.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as AuthSession } from "../view-
|
|
2
|
-
import { t as SupportView } from "../support-view-
|
|
1
|
+
import { t as AuthSession } from "../view-TpXEUcVN.js";
|
|
2
|
+
import { t as SupportView } from "../support-view-scqMgtOo.js";
|
|
3
3
|
import { ReactNode } from "react";
|
|
4
4
|
//#region src/react/session.d.ts
|
|
5
5
|
export interface SessionProviderProps {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { n as dbError } from "./errors-
|
|
1
|
+
import { n as dbError } from "./errors-2M6CKMP4.js";
|
|
2
2
|
import { t as escapeLike } from "./escape-like-DHfx6jRr.js";
|
|
3
|
-
import { r as err, s as toDbError } from "./result-
|
|
3
|
+
import { r as err, s as toDbError } from "./result-DEqHCMKP.js";
|
|
4
4
|
import "./react/session.js";
|
|
5
|
-
import { n as ClientContext, o as useBroadcastAuth } from "./hooks-
|
|
6
|
-
import { t as fieldErrorsOf } from "./field-errors-
|
|
5
|
+
import { n as ClientContext, o as useBroadcastAuth } from "./hooks-Bhza9Hnr.js";
|
|
6
|
+
import { t as fieldErrorsOf } from "./field-errors-DZVRWRkf.js";
|
|
7
7
|
import { n as ttlSeconds } from "./ttl-Hr34gRu8.js";
|
|
8
8
|
import { useCallback, useContext, useEffect, useMemo, useRef, useState, useTransition } from "react";
|
|
9
9
|
//#region src/react/actions.ts
|
|
@@ -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,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { c as extendServer,
|
|
3
|
-
import { o as settle, t as defaultExpose } from "../respond-
|
|
4
|
-
import { i as requireCaller, o as runAction } from "../kit-
|
|
1
|
+
import { o as problemResponse } from "../problem-CJvFeGu7.js";
|
|
2
|
+
import { c as extendServer, o as withFlush, s as createServer } from "../adapter-CN45ibbV.js";
|
|
3
|
+
import { o as settle, t as defaultExpose } from "../respond-volM3ByS.js";
|
|
4
|
+
import { i as requireCaller, o as runAction } from "../kit-BhHr9T9v.js";
|
|
5
5
|
import { n as bufferInPlace, t as around } from "../shared-CBxosKK3.js";
|
|
6
|
-
import { i as localsOf, n as actionInput, r as frameworkEntry } from "../framework-
|
|
7
|
-
import { r as refusalResponse } from "../refusal-
|
|
6
|
+
import { i as localsOf, n as actionInput, r as frameworkEntry } from "../framework-3ey3QmrO.js";
|
|
7
|
+
import { r as refusalResponse } from "../refusal-K78A1Vmq.js";
|
|
8
8
|
//#region src/bridges/react-router.ts
|
|
9
9
|
/**
|
|
10
10
|
* Runs an entry array as React Router server middleware. The contributions
|
|
@@ -51,16 +51,14 @@ function createReactRouter(betterSupabase, options) {
|
|
|
51
51
|
bufferInPlace(args.request);
|
|
52
52
|
return run(args.request, options.platformEnv?.(args), async (contributions) => {
|
|
53
53
|
args.context.set(key, localsOf(contributions));
|
|
54
|
-
|
|
55
|
-
flushEvents(server, options.waitUntil);
|
|
56
|
-
return response;
|
|
54
|
+
return withFlush(server, options.waitUntil, next);
|
|
57
55
|
});
|
|
58
56
|
},
|
|
59
57
|
locals,
|
|
60
58
|
loader(loaderOptions, fn) {
|
|
61
59
|
return async (args) => {
|
|
62
60
|
const scope = locals(args);
|
|
63
|
-
const caller = await requireCaller(scope.bs.auth, loaderOptions, scope.tenant);
|
|
61
|
+
const caller = await requireCaller(scope.bs.auth, loaderOptions, scope.tenant, options.authorizer);
|
|
64
62
|
if ("kind" in caller) throw refusalResponse(caller, args.request, options, expose);
|
|
65
63
|
const ctx = {
|
|
66
64
|
...scope,
|
|
@@ -80,7 +78,7 @@ function createReactRouter(betterSupabase, options) {
|
|
|
80
78
|
return await runAction(scope.bs.auth, actionOptions, await actionInput(args.request), scope.tenant, (parsed, caller) => fn(parsed, {
|
|
81
79
|
...scope,
|
|
82
80
|
...caller
|
|
83
|
-
}, args));
|
|
81
|
+
}, args), options.authorizer);
|
|
84
82
|
};
|
|
85
83
|
}
|
|
86
84
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as dbError } from "./errors-
|
|
2
|
-
import { i as tableMeta, t as builderFor } from "./build-
|
|
1
|
+
import { n as dbError } from "./errors-2M6CKMP4.js";
|
|
2
|
+
import { i as tableMeta, t as builderFor } from "./build-meLuYGri.js";
|
|
3
3
|
import { n as touchedTables } from "./tables-Cb-3_VWc.js";
|
|
4
4
|
//#region src/core/spec.ts
|
|
5
5
|
const READ_METHODS = [
|
package/dist/realtime/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as AccessPolicySql, r as AccessTopicPolicy } from "../types-
|
|
2
|
-
import {
|
|
3
|
-
import { A as TopicSubscription, C as TopicEvent, D as TopicPayload, E as TopicOptions, F as rowChange, M as TriggerOptions, N as TriggerValue, O as TopicSqlOptions, P as defineTopic, S as Topic, T as TopicMessage, _ as RealtimeClient, a as LiveSource, b as Subscription, c as liveQuery, d as PresenceInput, f as PresenceMember, g as PresenceSubscription, h as PresenceSchema, i as LiveQueryOptions, j as TriggerLookup, k as TopicSubscribeOptions, l as liveTopic, m as PresenceOutput, n as LiveCountOptions, o as LiveSubscription, p as PresenceOptions, r as LiveCountSeed, s as liveCount, t as CountRunner, u as EventSchemas, v as RowChange, w as TopicHandlers, x as SubscriptionStatus, y as SubscribeOptions } from "../index-
|
|
1
|
+
import { n as AccessPolicySql, r as AccessTopicPolicy } from "../types-CoE5Zwy4.js";
|
|
2
|
+
import { J as TemplateValues, q as TemplateParams } from "../storage-api-CB7Zl1Ci.js";
|
|
3
|
+
import { A as TopicSubscription, C as TopicEvent, D as TopicPayload, E as TopicOptions, F as rowChange, M as TriggerOptions, N as TriggerValue, O as TopicSqlOptions, P as defineTopic, S as Topic, T as TopicMessage, _ as RealtimeClient, a as LiveSource, b as Subscription, c as liveQuery, d as PresenceInput, f as PresenceMember, g as PresenceSubscription, h as PresenceSchema, i as LiveQueryOptions, j as TriggerLookup, k as TopicSubscribeOptions, l as liveTopic, m as PresenceOutput, n as LiveCountOptions, o as LiveSubscription, p as PresenceOptions, r as LiveCountSeed, s as liveCount, t as CountRunner, u as EventSchemas, v as RowChange, w as TopicHandlers, x as SubscriptionStatus, y as SubscribeOptions } from "../index-BCHR4Ucl.js";
|
|
4
4
|
export { type AccessPolicySql, type AccessTopicPolicy, type CountRunner, type EventSchemas, type LiveCountOptions, type LiveCountSeed, type LiveQueryOptions, type LiveSource, type LiveSubscription, type PresenceInput, type PresenceMember, type PresenceOptions, type PresenceOutput, type PresenceSchema, type PresenceSubscription, type RealtimeClient, type RowChange, type SubscribeOptions, type Subscription, type SubscriptionStatus, type TemplateParams, type TemplateValues, type Topic, type TopicEvent, type TopicHandlers, type TopicMessage, type TopicOptions, type TopicPayload, type TopicSqlOptions, type TopicSubscribeOptions, type TopicSubscription, type TriggerLookup, type TriggerOptions, type TriggerValue, defineTopic, liveCount, liveQuery, liveTopic, rowChange };
|
package/dist/realtime/index.js
CHANGED
|
@@ -1,25 +1,42 @@
|
|
|
1
|
-
import { n as dbError } from "../errors-
|
|
2
|
-
import { a as ok, r as err, t as AsyncResult } from "../result-
|
|
1
|
+
import { n as dbError } from "../errors-2M6CKMP4.js";
|
|
2
|
+
import { a as ok, r as err, t as AsyncResult } from "../result-DEqHCMKP.js";
|
|
3
3
|
import { a as tenantClaimPaths } from "../claims-PqzCxaTD.js";
|
|
4
4
|
import { i as refreshRealtimeAuth, n as liveQuery, r as liveTopic, t as liveCount } from "../live-CTAZQkwl.js";
|
|
5
|
-
import {
|
|
6
|
-
import { c as toApp } from "../shared-CxWmcyqB.js";
|
|
5
|
+
import { a as sqlString, i as sqlIdent, n as parseTemplate, r as slug, t as claimSql } from "../template-lPVh-EwW.js";
|
|
7
6
|
import { t as joinTopic } from "../channels-CkgQ_X60.js";
|
|
8
|
-
import {
|
|
7
|
+
import { t as toApp } from "../casing-DdFWEtqr.js";
|
|
8
|
+
import { o as resolveProviderSql, r as accessCheck } from "../access-sql-CrSbK1q-.js";
|
|
9
9
|
import "@supabase/supabase-js";
|
|
10
|
+
//#region src/realtime/topic-sql.ts
|
|
11
|
+
function columnSql(meta, column, where) {
|
|
12
|
+
const db = meta.columns[column]?.db;
|
|
13
|
+
if (!db) throw new TypeError(`defineTopic: no column for ${where} on "${meta.key}" ("${column}")`);
|
|
14
|
+
return sqlIdent(db);
|
|
15
|
+
}
|
|
16
|
+
/** A trigger value as SQL on `rec`, with one subquery per lookup. */
|
|
17
|
+
function triggerValueSql(tables, meta, value, where, depth = 0) {
|
|
18
|
+
if (typeof value === "string") return `rec.${columnSql(meta, value, where)}`;
|
|
19
|
+
const joined = tables[value.from];
|
|
20
|
+
if (!joined) throw new TypeError(`defineTopic: unknown table "${value.from}" for ${where}`);
|
|
21
|
+
const key = value.key ?? (joined.primaryKey.length === 1 ? joined.primaryKey[0] : void 0);
|
|
22
|
+
if (key === void 0) throw new TypeError(`defineTopic: "${value.from}" has no single-column primary key; name its key for ${where}`);
|
|
23
|
+
const alias = `j${String(depth)}`;
|
|
24
|
+
const via = triggerValueSql(tables, meta, value.via, where, depth + 1);
|
|
25
|
+
return `(select ${alias}.${columnSql(joined, value.select, where)} from ${sqlIdent(joined.schema)}.${sqlIdent(joined.name)} ${alias} where ${alias}.${columnSql(joined, key, where)} = ${via} limit 1)`;
|
|
26
|
+
}
|
|
27
|
+
/** The event name: one for every operation, one per operation, or the operation. */
|
|
28
|
+
function eventSql(event) {
|
|
29
|
+
if (event === void 0) return "tg_op";
|
|
30
|
+
if (typeof event === "string") return sqlString(event);
|
|
31
|
+
const cases = Object.entries(event).filter((entry) => entry[1] !== void 0).map(([operation, name]) => ` when ${sqlString(operation.toUpperCase())} then ${sqlString(name)}`);
|
|
32
|
+
return cases.length === 0 ? "tg_op" : `case tg_op${cases.join("")} else tg_op end`;
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
10
35
|
//#region src/realtime/topic.ts
|
|
11
36
|
const VALUE = /^[\w.@+=-]+$/;
|
|
12
37
|
function validateValue(_name, value) {
|
|
13
38
|
return VALUE.test(value) ? void 0 : "contains characters topics do not allow";
|
|
14
39
|
}
|
|
15
|
-
function claimSql(claim) {
|
|
16
|
-
const expressions = (typeof claim === "string" ? [claim] : claim).map((path) => {
|
|
17
|
-
const keys = path.split(".");
|
|
18
|
-
const last = keys.pop();
|
|
19
|
-
return `(select auth.jwt())${keys.map((key) => ` -> ${sqlString(key)}`).join("")} ->> ${sqlString(last)}`;
|
|
20
|
-
});
|
|
21
|
-
return expressions.length === 1 ? expressions[0] : `coalesce(${expressions.join(", ")})`;
|
|
22
|
-
}
|
|
23
40
|
async function validate(schema, value) {
|
|
24
41
|
if (!schema) return {
|
|
25
42
|
ok: true,
|
|
@@ -44,29 +61,6 @@ function sendError(status, message) {
|
|
|
44
61
|
if (status === 429 || status >= 500 || status === 0) return dbError("network", message, status ? { status } : {});
|
|
45
62
|
return dbError("invalid_request", message, { status });
|
|
46
63
|
}
|
|
47
|
-
function columnSql(meta, column, where) {
|
|
48
|
-
const db = meta.columns[column]?.db;
|
|
49
|
-
if (!db) throw new TypeError(`defineTopic: no column for ${where} on "${meta.key}" ("${column}")`);
|
|
50
|
-
return sqlIdent(db);
|
|
51
|
-
}
|
|
52
|
-
/** A trigger value as SQL on `rec`, with one subquery per lookup. */
|
|
53
|
-
function triggerValueSql(tables, meta, value, where, depth = 0) {
|
|
54
|
-
if (typeof value === "string") return `rec.${columnSql(meta, value, where)}`;
|
|
55
|
-
const joined = tables[value.from];
|
|
56
|
-
if (!joined) throw new TypeError(`defineTopic: unknown table "${value.from}" for ${where}`);
|
|
57
|
-
const key = value.key ?? (joined.primaryKey.length === 1 ? joined.primaryKey[0] : void 0);
|
|
58
|
-
if (key === void 0) throw new TypeError(`defineTopic: "${value.from}" has no single-column primary key; name its key for ${where}`);
|
|
59
|
-
const alias = `j${String(depth)}`;
|
|
60
|
-
const via = triggerValueSql(tables, meta, value.via, where, depth + 1);
|
|
61
|
-
return `(select ${alias}.${columnSql(joined, value.select, where)} from ${sqlIdent(joined.schema)}.${sqlIdent(joined.name)} ${alias} where ${alias}.${columnSql(joined, key, where)} = ${via} limit 1)`;
|
|
62
|
-
}
|
|
63
|
-
/** The event name: one for every operation, one per operation, or the operation. */
|
|
64
|
-
function eventSql(event) {
|
|
65
|
-
if (event === void 0) return "tg_op";
|
|
66
|
-
if (typeof event === "string") return sqlString(event);
|
|
67
|
-
const cases = Object.entries(event).filter((entry) => entry[1] !== void 0).map(([operation, name]) => ` when ${sqlString(operation.toUpperCase())} then ${sqlString(name)}`);
|
|
68
|
-
return cases.length === 0 ? "tg_op" : `case tg_op${cases.join("")} else tg_op end`;
|
|
69
|
-
}
|
|
70
64
|
/**
|
|
71
65
|
* A typed Realtime broadcast topic: names from a template, RLS policies for
|
|
72
66
|
* private channels, row-change triggers, and disposable subscriptions.
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { t as AnyAuthorizer } from "./authorizer-eiOjo-3l.js";
|
|
2
|
+
import { s as BlockRequireOptions } from "./kit-W99LCPBS.js";
|
|
2
3
|
//#region src/server/refusal.d.ts
|
|
3
4
|
/** Where refused callers go instead of a Problem Details response. */
|
|
4
5
|
interface RefusalRedirects {
|
|
@@ -10,6 +11,8 @@ interface RefusalRedirects {
|
|
|
10
11
|
interface RouteGuardOptions<C = unknown, P = unknown> extends BlockRequireOptions<C, P>, RefusalRedirects {
|
|
11
12
|
/** Include internal error messages in Problem Details. Defaults to development only. */
|
|
12
13
|
readonly expose?: boolean;
|
|
14
|
+
/** Decides `permission`; without one, a route with a `permission` refuses every caller. */
|
|
15
|
+
readonly authorizer?: AnyAuthorizer;
|
|
13
16
|
}
|
|
14
17
|
//#endregion
|
|
15
18
|
export { RouteGuardOptions as n, RefusalRedirects as t };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { r as dbErrorOf } from "./errors-
|
|
2
|
-
import {
|
|
3
|
-
import { t as defaultExpose } from "./respond-
|
|
4
|
-
import { i as requireCaller } from "./kit-
|
|
1
|
+
import { r as dbErrorOf } from "./errors-2M6CKMP4.js";
|
|
2
|
+
import { o as problemResponse } from "./problem-CJvFeGu7.js";
|
|
3
|
+
import { t as defaultExpose } from "./respond-volM3ByS.js";
|
|
4
|
+
import { i as requireCaller } from "./kit-BhHr9T9v.js";
|
|
5
5
|
//#region src/server/refusal.ts
|
|
6
6
|
function isAalRefusal(error) {
|
|
7
7
|
return error.kind === "forbidden" && "required" in error && error.required === "aal2";
|
|
@@ -30,7 +30,7 @@ function refusalResponse(error, request, redirects, expose) {
|
|
|
30
30
|
}
|
|
31
31
|
/** The refusal for a caller `options` refuses, or `undefined` to let it through. */
|
|
32
32
|
async function routeRefusal(locals, request, options) {
|
|
33
|
-
const caller = await requireCaller(locals.bs.auth, options, locals.tenant);
|
|
33
|
+
const caller = await requireCaller(locals.bs.auth, options, locals.tenant, options.authorizer);
|
|
34
34
|
if (!("kind" in caller)) return void 0;
|
|
35
35
|
return refusalResponse(caller, request, options, options.expose ?? defaultExpose());
|
|
36
36
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { n as dbError } from "./errors-
|
|
1
|
+
import { n as dbError } from "./errors-2M6CKMP4.js";
|
|
2
2
|
import { t as consoleLogger } from "./logger-glM28NVN.js";
|
|
3
|
-
import { n as decodeJwtPayload } from "./base64-D2gsioCY.js";
|
|
4
|
-
import { a as actorOf
|
|
3
|
+
import { n as decodeJwtPayload, r as fromBase64, t as base64ToText } from "./base64-D2gsioCY.js";
|
|
4
|
+
import { a as actorOf } from "./impersonation-DcqaTBHx.js";
|
|
5
5
|
import { DEFAULT_COOKIE_OPTIONS, createChunks, isChunkLike, parseCookieHeader, serializeCookieHeader, stringFromBase64URL, stringToBase64URL } from "@supabase/ssr";
|
|
6
6
|
import { extractCredentials, verifyCredentials } from "@supabase/server/core";
|
|
7
7
|
//#region src/auth/session.ts
|
|
@@ -179,6 +179,92 @@ function clearSessionCookies(request, response, options) {
|
|
|
179
179
|
return response;
|
|
180
180
|
}
|
|
181
181
|
//#endregion
|
|
182
|
+
//#region src/auth/hs256.ts
|
|
183
|
+
const encoder = /* @__PURE__ */ new TextEncoder();
|
|
184
|
+
/** The most HMAC keys kept at once; the oldest goes first. */
|
|
185
|
+
const KEYS_SIZE = 64;
|
|
186
|
+
const keys = /* @__PURE__ */ new Map();
|
|
187
|
+
function keyFor(secret) {
|
|
188
|
+
let key = keys.get(secret);
|
|
189
|
+
if (!key) {
|
|
190
|
+
key = crypto.subtle.importKey("raw", encoder.encode(secret), {
|
|
191
|
+
name: "HMAC",
|
|
192
|
+
hash: "SHA-256"
|
|
193
|
+
}, false, ["verify"]);
|
|
194
|
+
keys.set(secret, key);
|
|
195
|
+
if (keys.size > KEYS_SIZE) {
|
|
196
|
+
const oldest = keys.keys().next();
|
|
197
|
+
if (!oldest.done) keys.delete(oldest.value);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return key;
|
|
201
|
+
}
|
|
202
|
+
function parseJson(part) {
|
|
203
|
+
try {
|
|
204
|
+
const parsed = JSON.parse(base64ToText(part));
|
|
205
|
+
return typeof parsed === "object" && parsed !== null && !Array.isArray(parsed) ? parsed : void 0;
|
|
206
|
+
} catch {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Whether the token is HS256 without a `kid`, the shape Supabase Lite (and
|
|
212
|
+
* legacy shared-secret projects) issue.
|
|
213
|
+
*/
|
|
214
|
+
function isSharedSecretToken(token) {
|
|
215
|
+
const part = token.split(".", 1)[0];
|
|
216
|
+
const header = part ? parseJson(part) : void 0;
|
|
217
|
+
return header?.["alg"] === "HS256" && header["kid"] === void 0;
|
|
218
|
+
}
|
|
219
|
+
function fail(message) {
|
|
220
|
+
return {
|
|
221
|
+
ok: false,
|
|
222
|
+
code: "INVALID_JWT",
|
|
223
|
+
message
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
function matches(claim, expected) {
|
|
227
|
+
const wanted = typeof expected === "string" ? [expected] : expected;
|
|
228
|
+
return (Array.isArray(claim) ? claim : [claim]).some((value) => typeof value === "string" && wanted.includes(value));
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Verifies an HS256 user token against a shared secret with WebCrypto:
|
|
232
|
+
* the signature, `exp`, `nbf`, and `aud` and `iss` when they are given.
|
|
233
|
+
*/
|
|
234
|
+
async function verifyHs256(token, secret, options) {
|
|
235
|
+
const parts = token.split(".");
|
|
236
|
+
const [encodedHeader, encodedPayload, encodedSignature] = parts;
|
|
237
|
+
if (parts.length !== 3 || !encodedHeader || !encodedPayload || encodedSignature === void 0) return fail("The token is not a JWT");
|
|
238
|
+
if (parseJson(encodedHeader)?.["alg"] !== "HS256") return fail("The token is not signed with HS256");
|
|
239
|
+
let signature;
|
|
240
|
+
try {
|
|
241
|
+
signature = fromBase64(encodedSignature);
|
|
242
|
+
} catch {
|
|
243
|
+
return fail("The token signature is not base64url");
|
|
244
|
+
}
|
|
245
|
+
if (!await crypto.subtle.verify("HMAC", await keyFor(secret), signature, encoder.encode(`${encodedHeader}.${encodedPayload}`))) return fail("The token signature does not match the JWT secret");
|
|
246
|
+
const payload = parseJson(encodedPayload);
|
|
247
|
+
if (!payload) return fail("The token payload is not a JSON object");
|
|
248
|
+
const { exp, nbf, sub } = payload;
|
|
249
|
+
if (typeof exp === "number" && exp <= options.now) return fail("The token has expired");
|
|
250
|
+
if (typeof nbf === "number" && nbf > options.now) return fail("The token is not valid yet");
|
|
251
|
+
if (options.audience !== void 0 && !matches(payload["aud"], options.audience)) return fail("The token audience does not match");
|
|
252
|
+
if (options.issuer !== void 0 && !matches(payload["iss"], options.issuer)) return fail("The token issuer does not match");
|
|
253
|
+
if (typeof sub !== "string") return fail("The token has no sub claim, so it identifies no user");
|
|
254
|
+
const claims = payload;
|
|
255
|
+
return {
|
|
256
|
+
ok: true,
|
|
257
|
+
claims,
|
|
258
|
+
user: {
|
|
259
|
+
id: sub,
|
|
260
|
+
...typeof claims.role === "string" ? { role: claims.role } : {},
|
|
261
|
+
...typeof claims.email === "string" ? { email: claims.email } : {},
|
|
262
|
+
...claims.app_metadata ? { appMetadata: claims.app_metadata } : {},
|
|
263
|
+
...claims.user_metadata ? { userMetadata: claims.user_metadata } : {}
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
//#endregion
|
|
182
268
|
//#region src/auth/refresh.ts
|
|
183
269
|
/**
|
|
184
270
|
* How long a finished refresh is reused for requests still carrying the old
|
|
@@ -304,6 +390,24 @@ function serverEnv(options) {
|
|
|
304
390
|
const MEMO_SIZE = 256;
|
|
305
391
|
const memoByUrl = /* @__PURE__ */ new Map();
|
|
306
392
|
let memoByJwks = /* @__PURE__ */ new WeakMap();
|
|
393
|
+
/** The most JWT secrets remembered at once; the oldest goes first. */
|
|
394
|
+
const SECRET_IDS_SIZE = 64;
|
|
395
|
+
/** A number per JWT secret, so memo keys tell secrets apart. Bounded, and never reuses a number. */
|
|
396
|
+
const secretIds = /* @__PURE__ */ new Map();
|
|
397
|
+
let nextSecretId = 1;
|
|
398
|
+
function secretId(secret) {
|
|
399
|
+
if (secret === void 0) return null;
|
|
400
|
+
let id = secretIds.get(secret);
|
|
401
|
+
if (id === void 0) {
|
|
402
|
+
id = nextSecretId++;
|
|
403
|
+
secretIds.set(secret, id);
|
|
404
|
+
if (secretIds.size > SECRET_IDS_SIZE) {
|
|
405
|
+
const oldest = secretIds.keys().next();
|
|
406
|
+
if (!oldest.done) secretIds.delete(oldest.value);
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
return id;
|
|
410
|
+
}
|
|
307
411
|
/**
|
|
308
412
|
* Tokens that already verified, until they expire. Every private-cache scope
|
|
309
413
|
* and island resolves the same token again; this skips the signature check.
|
|
@@ -316,7 +420,8 @@ function memoFor(options) {
|
|
|
316
420
|
inline ? null : String(jwks ?? options.env.jwksUrl),
|
|
317
421
|
options.env.url,
|
|
318
422
|
options.audience ?? null,
|
|
319
|
-
options.issuer ?? null
|
|
423
|
+
options.issuer ?? null,
|
|
424
|
+
secretId(options.jwtSecret)
|
|
320
425
|
]);
|
|
321
426
|
if (inline) {
|
|
322
427
|
let byKey = memoByJwks.get(jwks);
|
|
@@ -472,6 +577,27 @@ function prefetchJwks(options) {
|
|
|
472
577
|
}).then(() => {}, () => {});
|
|
473
578
|
}
|
|
474
579
|
async function verifyOnce(credentials, modes, options, source) {
|
|
580
|
+
const token = credentials.token;
|
|
581
|
+
if (options.jwtSecret !== void 0 && token && modes.length === 1 && modes[0] === "user" && isSharedSecretToken(token)) {
|
|
582
|
+
const verified = await verifyHs256(token, options.jwtSecret, {
|
|
583
|
+
now: Math.floor((options.now ?? Date.now)() / 1e3),
|
|
584
|
+
...options.audience === void 0 ? {} : { audience: options.audience },
|
|
585
|
+
...options.issuer === void 0 ? {} : { issuer: options.issuer }
|
|
586
|
+
});
|
|
587
|
+
if (!verified.ok) return {
|
|
588
|
+
kind: "invalid",
|
|
589
|
+
reason: "token",
|
|
590
|
+
error: dbError("unauthorized", verified.message, { code: verified.code })
|
|
591
|
+
};
|
|
592
|
+
return {
|
|
593
|
+
kind: "user",
|
|
594
|
+
token,
|
|
595
|
+
claims: verified.claims,
|
|
596
|
+
user: verified.user,
|
|
597
|
+
source,
|
|
598
|
+
expiresAt: typeof verified.claims.exp === "number" ? verified.claims.exp : null
|
|
599
|
+
};
|
|
600
|
+
}
|
|
475
601
|
const { data, error } = await verifyCredentials(credentials, {
|
|
476
602
|
auth: modes,
|
|
477
603
|
env: serverEnv(options),
|
|
@@ -656,42 +782,5 @@ async function resolveAuth(request, options) {
|
|
|
656
782
|
apikey: null
|
|
657
783
|
}, ["user"], options, "cookie"), cookies, writes);
|
|
658
784
|
}
|
|
659
|
-
/** The repository context (`actor`, `claims`) for an auth state. */
|
|
660
|
-
function authContext(auth) {
|
|
661
|
-
switch (auth.kind) {
|
|
662
|
-
case "user": return userContext(auth.user, auth.claims);
|
|
663
|
-
case "service": return {
|
|
664
|
-
actor: {
|
|
665
|
-
id: `service:${auth.keyName}`,
|
|
666
|
-
kind: "service",
|
|
667
|
-
role: "service_role"
|
|
668
|
-
},
|
|
669
|
-
claims: { role: "service_role" }
|
|
670
|
-
};
|
|
671
|
-
case "apiKey": return {
|
|
672
|
-
actor: auth.userId ? {
|
|
673
|
-
id: auth.userId,
|
|
674
|
-
kind: "user",
|
|
675
|
-
role: "authenticated"
|
|
676
|
-
} : {
|
|
677
|
-
id: `api-key:${auth.keyId}`,
|
|
678
|
-
kind: "service",
|
|
679
|
-
role: "authenticated"
|
|
680
|
-
},
|
|
681
|
-
claims: auth.claims,
|
|
682
|
-
...auth.organizationId ? { tenant: auth.organizationId } : {}
|
|
683
|
-
};
|
|
684
|
-
case "anon":
|
|
685
|
-
case "invalid": return {
|
|
686
|
-
actor: {
|
|
687
|
-
id: "anon",
|
|
688
|
-
kind: "anon",
|
|
689
|
-
role: "anon"
|
|
690
|
-
},
|
|
691
|
-
claims: { role: "anon" }
|
|
692
|
-
};
|
|
693
|
-
default: return auth;
|
|
694
|
-
}
|
|
695
|
-
}
|
|
696
785
|
//#endregion
|
|
697
|
-
export {
|
|
786
|
+
export { clearSessionCookies as a, DEFAULT_SESSION_ENCODING as c, parseCookies as d, readSession as f, writeSession as g, sessionEncoding as h, refreshSession as i, applyCookieWrites as l, sessionCookieName as m, prefetchJwks as n, sessionStatus as o, serializeCookie as p, resolveAuth as r, AUTH_CACHE_HEADERS as s, clientIp as t, clearSessionAtScopes as u };
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/// <reference lib="esnext.temporal" />
|
|
2
|
-
import { b as DbError } from "./result-
|
|
3
|
-
import {
|
|
4
|
-
import { l as RefreshEvent } from "./events-DWDhx77e.js";
|
|
2
|
+
import { b as DbError } from "./result-BchM1XZn.js";
|
|
3
|
+
import { l as RefreshEvent } from "./events-D1BOCll8.js";
|
|
5
4
|
import { n as Logger } from "./logger-DWVYUmwi.js";
|
|
6
|
-
import { t as StandardSchemaV1 } from "./standard-
|
|
7
|
-
import { t as BetterSupabaseEnv } from "./index-
|
|
5
|
+
import { t as StandardSchemaV1 } from "./standard-lmkbOtPB.js";
|
|
6
|
+
import { t as BetterSupabaseEnv } from "./index-BUK7jUzR.js";
|
|
8
7
|
import { a as CookieWrite, n as CookieOptions, r as CookieRecord, s as SessionEncoding } from "./session-ChiXDZdZ.js";
|
|
9
8
|
import { JWTClaims, SupabaseEnv, UserClaims } from "@supabase/server";
|
|
10
9
|
//#region src/auth/resolve.d.ts
|
|
@@ -110,6 +109,13 @@ interface ResolveAuthOptions {
|
|
|
110
109
|
readonly cookies?: boolean;
|
|
111
110
|
/** Inline JWKS instead of fetching `env.jwksUrl` (tests, air-gapped). */
|
|
112
111
|
readonly jwks?: SupabaseEnv["jwks"];
|
|
112
|
+
/**
|
|
113
|
+
* Verify HS256 tokens without a `kid` locally with this shared secret, the
|
|
114
|
+
* tokens Supabase Lite issues (`auth.jwt_secret`). Tokens with a `kid`
|
|
115
|
+
* still verify against the JWKS. `createServer` sets it from
|
|
116
|
+
* `SUPABASE_JWT_SECRET` with `backend: "lite"`.
|
|
117
|
+
*/
|
|
118
|
+
readonly jwtSecret?: string;
|
|
113
119
|
/**
|
|
114
120
|
* Validates the verified claims (`betterSupabase.claims(schema)` sets it). A failure
|
|
115
121
|
* resolves to `{ kind: 'invalid', reason: 'claims' }`.
|
|
@@ -163,7 +169,5 @@ declare function clientIp(request: Request): string | undefined;
|
|
|
163
169
|
* set, through a single-flight request, and only then are cookies written.
|
|
164
170
|
*/
|
|
165
171
|
declare function resolveAuth(request: Request, options: ResolveAuthOptions): Promise<AuthResolution>;
|
|
166
|
-
/** The repository context (`actor`, `claims`) for an auth state. */
|
|
167
|
-
declare function authContext(auth: AuthState): RequestContext;
|
|
168
172
|
//#endregion
|
|
169
|
-
export { ResolveAuthOptions as a,
|
|
173
|
+
export { ResolveAuthOptions as a, resolveAuth as c, InvalidReason as i, AuthResolver as n, ResolvedState as o, AuthState as r, clientIp as s, AuthResolution as t };
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { R as TableMeta } from "./types-CoE5Zwy4.js";
|
|
2
|
+
import { D as SecurityRequirement, E as ResourceOperation, r as JsonObject } from "./model-OgBxvk3N.js";
|
|
3
|
+
//#region src/spec/schemas.d.ts
|
|
4
|
+
/** A Standard Schema, or anything else that might carry `~standard`. */
|
|
5
|
+
interface StandardLike {
|
|
6
|
+
readonly "~standard": object;
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
//#region src/spec/resource.d.ts
|
|
10
|
+
type ResourcePagination = "offset" | "cursor";
|
|
11
|
+
type ActionMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
|
|
12
|
+
/** A custom endpoint on a resource, documented next to its CRUD operations. */
|
|
13
|
+
interface ResourceActionSpec<Ref = string> {
|
|
14
|
+
readonly method: ActionMethod;
|
|
15
|
+
/**
|
|
16
|
+
* Relative to the collection: `/{id}/send` acts on one row (the key
|
|
17
|
+
* parameter is the table's primary key), `/export` on the table.
|
|
18
|
+
*/
|
|
19
|
+
readonly path: string;
|
|
20
|
+
/** The JSON body. */
|
|
21
|
+
readonly input?: StandardLike;
|
|
22
|
+
/** The query parameters, as an object schema. */
|
|
23
|
+
readonly query?: StandardLike;
|
|
24
|
+
/** The JSON response. Without it the action answers 204. */
|
|
25
|
+
readonly output?: StandardLike;
|
|
26
|
+
/** Success status. Defaults to 200 with an output, 204 without. */
|
|
27
|
+
readonly status?: number;
|
|
28
|
+
readonly summary?: string;
|
|
29
|
+
readonly description?: string;
|
|
30
|
+
readonly deprecated?: boolean;
|
|
31
|
+
readonly permission?: Ref;
|
|
32
|
+
/** Names of the events the action emits, for AsyncAPI. */
|
|
33
|
+
readonly emits?: readonly string[];
|
|
34
|
+
}
|
|
35
|
+
/** One shared error response: its component name, status and description. */
|
|
36
|
+
interface ErrorResponse {
|
|
37
|
+
readonly name: string;
|
|
38
|
+
readonly status: number;
|
|
39
|
+
readonly description: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* What a resource serves and documents. `defineResource` and `defineApi`
|
|
43
|
+
* read the same object, so the routes and the spec cannot drift.
|
|
44
|
+
*/
|
|
45
|
+
interface ResourceDescription<Ref = string> {
|
|
46
|
+
/** Defaults to every operation for tables, `list` and `get` for views. */
|
|
47
|
+
readonly operations?: readonly ResourceOperation[];
|
|
48
|
+
/** Filters, search and sorts for `list`, from `defineListQuery`. */
|
|
49
|
+
readonly list?: {
|
|
50
|
+
readonly openapi: readonly unknown[];
|
|
51
|
+
readonly pagination?: ResourcePagination;
|
|
52
|
+
};
|
|
53
|
+
/** Paging of the default list. Defaults to `offset`. */
|
|
54
|
+
readonly pagination?: ResourcePagination;
|
|
55
|
+
/** Largest page of the default list. Defaults to 200. */
|
|
56
|
+
readonly maxPageSize?: number;
|
|
57
|
+
/** Path of the collection in the spec. Defaults to `/<table>`. */
|
|
58
|
+
readonly path?: string;
|
|
59
|
+
readonly tag?: string;
|
|
60
|
+
readonly description?: string;
|
|
61
|
+
/** Validates request bodies; their JSON Schema replaces the table's in the spec. */
|
|
62
|
+
readonly input?: {
|
|
63
|
+
readonly create?: StandardLike;
|
|
64
|
+
readonly update?: StandardLike;
|
|
65
|
+
};
|
|
66
|
+
/** The response shape of an operation whose hooks change it. */
|
|
67
|
+
readonly output?: Partial<Readonly<Record<ResourceOperation, StandardLike>>>;
|
|
68
|
+
readonly actions?: Readonly<Record<string, ResourceActionSpec<Ref>>>;
|
|
69
|
+
/**
|
|
70
|
+
* The permission of each operation. `true` asks the authorizer
|
|
71
|
+
* (`forOperation`) for every enabled operation.
|
|
72
|
+
*/
|
|
73
|
+
readonly permissions?: true | Partial<Readonly<Record<ResourceOperation, Ref>>>;
|
|
74
|
+
/** Overrides the model's security for this resource; `[]` makes it public. */
|
|
75
|
+
readonly security?: readonly SecurityRequirement[];
|
|
76
|
+
/** The shared error responses. Defaults to the API's `errors`. */
|
|
77
|
+
readonly errors?: readonly ErrorResponse[];
|
|
78
|
+
/** Deep-merged into the lowered operation, by operation or action name (`*` for all). */
|
|
79
|
+
readonly extend?: Readonly<Record<string, JsonObject>>;
|
|
80
|
+
}
|
|
81
|
+
interface PlannedAction<Ref = string> extends ResourceActionSpec<Ref> {
|
|
82
|
+
readonly name: string;
|
|
83
|
+
/** The `{name}` segments of `path`. */
|
|
84
|
+
readonly params: readonly string[];
|
|
85
|
+
/** The path split into segments; `{name}` segments are params. */
|
|
86
|
+
readonly segments: readonly string[];
|
|
87
|
+
}
|
|
88
|
+
/** A resolved `ResourceDescription`. */
|
|
89
|
+
interface ResourcePlan<Ref = string> {
|
|
90
|
+
readonly table: string;
|
|
91
|
+
readonly meta: TableMeta;
|
|
92
|
+
readonly operations: readonly ResourceOperation[];
|
|
93
|
+
/** Name of the key parameter, or `undefined` for tables without a single-column key. */
|
|
94
|
+
readonly keyParam: string | undefined;
|
|
95
|
+
readonly pagination: ResourcePagination;
|
|
96
|
+
readonly maxPageSize: number;
|
|
97
|
+
readonly description: ResourceDescription<Ref>;
|
|
98
|
+
readonly actions: readonly PlannedAction<Ref>[];
|
|
99
|
+
/** The permission reference of each operation and action that has one. */
|
|
100
|
+
readonly permissions: Readonly<Record<string, Ref>>;
|
|
101
|
+
}
|
|
102
|
+
//#endregion
|
|
103
|
+
export { ResourcePlan as a, ResourcePagination as i, ResourceActionSpec as n, StandardLike as o, ResourceDescription as r, ErrorResponse as t };
|