better-supabase 0.7.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -2
- package/dist/{access-sql-B0dF-SoF.js → access-sql-CrSbK1q-.js} +1 -1
- package/dist/{adapter-iKgjHVPx.js → adapter-CN45ibbV.js} +658 -157
- package/dist/{agents-CVHGd7It.d.ts → agents-BY_LQXtQ.d.ts} +4 -4
- package/dist/{ai-cache-CBWs1W0k.js → ai-cache-Dfgk8nBT.js} +2 -1
- package/dist/{ai-cache-DaDu_G5L.d.ts → ai-cache-DrUMMgp6.d.ts} +4 -4
- package/dist/{ai-chat-B24UI962.js → ai-chat-CVLRWbtS.js} +4 -3
- package/dist/{ai-chat-7amvXjmQ.d.ts → ai-chat-DXkMy74O.d.ts} +5 -5
- package/dist/{ai-files-CSPNswUY.js → ai-files-CioLu5du.js} +5 -4
- package/dist/ai-message-DfaP8sis.js +14 -0
- package/dist/ai-sdk/agents/index.d.ts +4 -4
- package/dist/ai-sdk/batches/index.d.ts +4 -4
- package/dist/ai-sdk/batches/index.js +4 -4
- package/dist/ai-sdk/cache/index.d.ts +2 -2
- package/dist/ai-sdk/cache/index.js +2 -2
- package/dist/ai-sdk/chat/index.d.ts +1 -1
- package/dist/ai-sdk/chat/index.js +8 -20
- package/dist/ai-sdk/embeddings/index.d.ts +2 -2
- package/dist/ai-sdk/files/index.d.ts +3 -3
- package/dist/ai-sdk/files/index.js +4 -4
- package/dist/ai-sdk/index.d.ts +37 -9
- package/dist/ai-sdk/index.js +3 -2
- package/dist/ai-sdk/mcp/index.d.ts +43 -6
- package/dist/ai-sdk/mcp/index.js +36 -7
- package/dist/ai-sdk/memory/index.d.ts +2 -2
- package/dist/ai-sdk/memory/index.js +1 -1
- package/dist/ai-sdk/workflow/index.d.ts +6 -6
- package/dist/ai-sdk/workflow/index.js +13 -24
- package/dist/{ai-tasks-Cd1HMFvB.d.ts → ai-tasks-BRQ6iQLc.d.ts} +4 -4
- package/dist/{announcements-ZRGnScWI.d.ts → announcements-Bouy0Ski.d.ts} +3 -3
- package/dist/{announcements-CiyOs-xP.js → announcements-p_BFofiR.js} +1 -1
- package/dist/api-Dnf2q-Ht.d.ts +370 -0
- package/dist/api-DtHFC037.js +676 -0
- package/dist/{api-keys-CIjghYjV.d.ts → api-keys-C8BlF3L2.d.ts} +4 -4
- package/dist/arazzo/index.d.ts +255 -0
- package/dist/arazzo/index.js +622 -0
- package/dist/{assistant-DwdpDH1q.d.ts → assistant-DBlFDZsi.d.ts} +5 -5
- package/dist/astro/index.d.ts +7 -7
- package/dist/astro/index.js +7 -7
- package/dist/asyncapi/index.d.ts +103 -0
- package/dist/asyncapi/index.js +569 -0
- package/dist/authorizer-ayxUDXXP.js +126 -0
- package/dist/authorizer-eiOjo-3l.d.ts +73 -0
- package/dist/better-result/index.d.ts +118 -0
- package/dist/better-result/index.js +64 -0
- package/dist/{bind-l4kAvYSv.js → bind-ButSzrHe.js} +1 -1
- package/dist/{bind-Bu_ZNa3W.d.ts → bind-CQ5mPyX1.d.ts} +3 -3
- package/dist/{block-events-CrT8r7Fe.js → block-events-DTxU5tfr.js} +18 -3
- package/dist/{block-fields-GFkxl4dP.js → block-fields-CroxUuF2.js} +3 -3
- package/dist/{block-fields-SJ6fEf3o.d.ts → block-fields-D1pfrcIY.d.ts} +2 -2
- package/dist/{block-helpers-CKtbFcRv.d.ts → block-helpers-C0Xj8War.d.ts} +2 -2
- package/dist/{block-helpers-DWHxHsEQ.js → block-helpers-Cy3pB96I.js} +41 -9
- package/dist/{block-hooks-BmjMyXTa.js → block-hooks-BPNMIlLl.js} +3 -3
- package/dist/{block-hooks-plbZ0AbJ.d.ts → block-hooks-DaOVC7SC.d.ts} +3 -3
- package/dist/{block-transport-BLr-ZgLc.js → block-transport-bAKh-dGc.js} +28 -2
- package/dist/{block-transport-DvaoPuZ9.d.ts → block-transport-inD4fFq-.d.ts} +24 -2
- package/dist/blocks/agents/index.d.ts +3 -3
- package/dist/blocks/agents/index.js +5 -4
- package/dist/blocks/ai-cache/index.d.ts +3 -3
- package/dist/blocks/ai-cache/index.js +3 -3
- package/dist/blocks/ai-chat/index.d.ts +9 -4
- package/dist/blocks/ai-chat/index.js +5 -5
- package/dist/blocks/ai-chat/react/index.d.ts +3 -3
- package/dist/blocks/ai-chat/react/index.js +5 -5
- package/dist/blocks/ai-files/index.d.ts +3 -3
- package/dist/blocks/ai-files/index.js +3 -3
- package/dist/blocks/ai-providers/index.d.ts +3 -3
- package/dist/blocks/ai-providers/index.js +8 -7
- package/dist/blocks/ai-tasks/index.d.ts +3 -3
- package/dist/blocks/ai-tasks/index.js +7 -6
- package/dist/blocks/announcements/index.d.ts +3 -3
- package/dist/blocks/announcements/index.js +3 -3
- package/dist/blocks/announcements/react/index.d.ts +3 -3
- package/dist/blocks/announcements/react/index.js +3 -3
- package/dist/blocks/api-keys/index.d.ts +5 -5
- package/dist/blocks/api-keys/index.js +8 -8
- package/dist/blocks/attachments/index.d.ts +12 -8
- package/dist/blocks/attachments/index.js +22 -13
- package/dist/blocks/audit/index.d.ts +21 -10
- package/dist/blocks/audit/index.js +30 -11
- package/dist/blocks/billing/index.d.ts +11 -9
- package/dist/blocks/billing/index.js +15 -15
- package/dist/blocks/comments/index.d.ts +8 -8
- package/dist/blocks/comments/index.js +8 -7
- package/dist/blocks/connectors/index.d.ts +3 -3
- package/dist/blocks/connectors/index.js +7 -6
- package/dist/blocks/data-lifecycle/index.d.ts +12 -8
- package/dist/blocks/data-lifecycle/index.js +13 -8
- package/dist/blocks/entitlements/index.d.ts +3 -3
- package/dist/blocks/entitlements/index.js +1 -1
- package/dist/blocks/flags/index.d.ts +4 -4
- package/dist/blocks/flags/index.js +4 -3
- package/dist/blocks/inbox/index.d.ts +3 -3
- package/dist/blocks/inbox/index.js +4 -5
- package/dist/blocks/inbox/react/index.d.ts +1 -1
- package/dist/blocks/inbox/react/index.js +1 -1
- package/dist/blocks/inbox/react/server.d.ts +1 -1
- package/dist/blocks/index.d.ts +10 -10
- package/dist/blocks/index.js +6 -6
- package/dist/blocks/jobs/index.d.ts +48 -32
- package/dist/blocks/jobs/index.js +44 -287
- package/dist/blocks/knowledge/index.d.ts +3 -3
- package/dist/blocks/knowledge/index.js +3 -3
- package/dist/blocks/memory/index.d.ts +4 -4
- package/dist/blocks/memory/index.js +7 -6
- package/dist/blocks/notifications/index.d.ts +11 -9
- package/dist/blocks/notifications/index.js +20 -25
- package/dist/blocks/notifications/react/index.d.ts +1 -1
- package/dist/blocks/notifications/react/index.js +1 -1
- package/dist/blocks/onboarding/index.d.ts +3 -3
- package/dist/blocks/onboarding/index.js +3 -3
- package/dist/blocks/onboarding/react/index.d.ts +2 -2
- package/dist/blocks/onboarding/react/index.js +2 -2
- package/dist/blocks/onboarding/react/server.d.ts +1 -1
- package/dist/blocks/organizations/index.d.ts +9 -9
- package/dist/blocks/organizations/index.js +11 -18
- package/dist/blocks/outbox/index.d.ts +2 -2
- package/dist/blocks/outbox/index.js +16 -25
- package/dist/blocks/profiles/index.d.ts +7 -7
- package/dist/blocks/profiles/index.js +7 -6
- package/dist/blocks/push/index.d.ts +4 -4
- package/dist/blocks/push/index.js +3 -3
- package/dist/blocks/settings/index.d.ts +4 -4
- package/dist/blocks/settings/index.js +7 -6
- package/dist/blocks/sso/index.d.ts +5 -5
- package/dist/blocks/sso/index.js +6 -5
- package/dist/blocks/usage/index.d.ts +3 -3
- package/dist/blocks/usage/index.js +5 -4
- package/dist/blocks/waitlist/index.d.ts +5 -5
- package/dist/blocks/waitlist/index.js +5 -4
- package/dist/blocks/webhooks/index.d.ts +22 -13
- package/dist/blocks/webhooks/index.js +41 -70
- package/dist/blocks/workflow-builder/index.d.ts +4 -4
- package/dist/blocks/workflow-builder/index.js +3 -3
- package/dist/blocks/workflow-builder/react/index.d.ts +4 -4
- package/dist/blocks/workflow-builder/react/index.js +4 -4
- package/dist/blocks/workflows/index.d.ts +3 -3
- package/dist/blocks/workflows/index.js +3 -3
- package/dist/blocks/workflows/react/index.d.ts +3 -3
- package/dist/blocks/workflows/react/index.js +3 -3
- package/dist/build-hPwk3_X5.js +1296 -0
- package/dist/{build-BXIzE6Xv.js → build-meLuYGri.js} +3 -3
- package/dist/casing-DdFWEtqr.js +16 -0
- package/dist/chat-sdk/index.d.ts +6 -6
- package/dist/chat-sdk/index.js +5 -4
- package/dist/chat-sdk/react/index.d.ts +1 -1
- package/dist/chat-sdk/react/server.d.ts +1 -1
- package/dist/{claims-DDBQT6BK.js → claims-0KZVT804.js} +1 -1
- package/dist/cli/add-1dc5wM5k.js +69 -0
- package/dist/cli/arazzo-1.0-BalU61-_.js +532 -0
- package/dist/cli/arazzo-1.1-Bnfasbun.js +705 -0
- package/dist/cli/asyncapi-3.0.0-C78dBjR6.js +5593 -0
- package/dist/cli/asyncapi-3.1.0-g-7aIfV1.js +5833 -0
- package/dist/cli/bin.js +4 -4
- package/dist/cli/cache-CIfA-jBV.js +483 -0
- package/dist/cli/{codemod-Bl_tQpHn.js → codemod-JVlTQQG2.js} +4 -4
- package/dist/cli/{command-CK14fP91.js → command-DV-StG1x.js} +5 -0
- package/dist/cli/{config-DU7EJImt.js → config-C2Pz2_4A.js} +7 -4
- package/dist/cli/config-DpbF8ML3.js +2 -0
- package/dist/cli/{config-NiPxAmUF.js → config-M-WzL9O2.js} +116 -18
- package/dist/cli/{db-DOBPt660.js → db-BkcfOlyB.js} +2 -1
- package/dist/cli/{diff-SjkO5rNr.js → diff-D1jGdb3Y.js} +1 -1
- package/dist/cli/{doctor-DJk0aeBi.js → doctor-VcDtuusV.js} +316 -221
- package/dist/cli/emit-BHHfwUoT.js +1136 -0
- package/dist/cli/{env-qXgyMV6r.js → env-B--LMhEe.js} +13 -10
- package/dist/cli/env-vzBG90Um.js +2 -0
- package/dist/cli/{env-CJLbUVPB.js → env-zHJtMIBo.js} +11 -3
- package/dist/cli/{errors-4v4DTtda.js → errors-CqTLXe2M.js} +18 -2
- package/dist/cli/{fastest-levenshtein-CFN-lNDv.js → fastest-levenshtein-CF7BCi9l.js} +1 -1
- package/dist/cli/files-BVupXPIC.js +34 -0
- package/dist/cli/gen-DmVj3u4L.js +322 -0
- package/dist/cli/{init-BHuEQrQK.js → glue-C1UE8gQN.js} +16 -313
- package/dist/cli/index.d.ts +59 -31
- package/dist/cli/index.js +8 -6
- package/dist/cli/init-CVZ3s5kl.js +258 -0
- package/dist/cli/{introspect-DzR2nyQb.js → introspect-BToGNfm-.js} +14 -14
- package/dist/cli/{io-DI1mTdSA.js → io-CFzJVJ68.js} +5 -1
- package/dist/cli/{keys-BGCnnb-s.js → keys-CJhtIxJ3.js} +4 -4
- package/dist/cli/metadata-DSRKCaf-.js +133 -0
- package/dist/cli/names-D6LrQnOv.js +6 -0
- package/dist/cli/openapi-3.0-t7xwkuRH.js +928 -0
- package/dist/cli/openapi-3.1-CVze7tBS.js +870 -0
- package/dist/cli/openapi-3.2-CFoMYM01.js +1031 -0
- package/dist/cli/{openapi-BlRJ18s3.js → openapi-DWa4Ir1q.js} +8 -14
- package/dist/cli/prompts-BdeVmVpg.js +2 -0
- package/dist/cli/{prompts-BNcNfAve.js → prompts-DZJB1nTw.js} +6 -6
- package/dist/cli/{rolldown-runtime-BPOCksWG.js → rolldown-runtime-CMFfr-1z.js} +3 -1
- package/dist/cli/run-DA6_lg3w.js +389 -0
- package/dist/cli/run-DuN1MX-7.js +705 -0
- package/dist/cli/scaffold-5DenHSxF.js +292 -0
- package/dist/cli/scaffold-CwQUMFRb.js +2 -0
- package/dist/cli/{seed-DQzqT7LP.js → seed-CzBmrGON.js} +14 -18
- package/dist/cli/seed-DOmit9Hq.js +2 -0
- package/dist/cli/{skills-QQs4q68J.js → skills-CnO8QFS7.js} +7 -6
- package/dist/cli/snapshot-Bstk6ulj.js +287 -0
- package/dist/cli/source-args-BYfq6imV.js +31 -0
- package/dist/cli/spec-CzosTYm3.js +7438 -0
- package/dist/cli/spec-T_0Bcyw7.js +2 -0
- package/dist/cli/{sql-B8csQPyn.js → sql-BKOOQAX3.js} +240 -218
- package/dist/cli/sql-DJrNDxQm.js +3 -0
- package/dist/cli/{style-C0NFdJRL.js → style-CB3vxgh0.js} +3 -3
- package/dist/cli/typegen-Demi5-VQ.js +486 -0
- package/dist/cli/validate-Ca13ktgz.js +7522 -0
- package/dist/cli/{version-59gcepIG.js → version-B4k0aUxS.js} +1 -1
- package/dist/client/index.d.ts +4 -3
- package/dist/client/index.js +60 -3
- package/dist/client/native/index.d.ts +3 -3
- package/dist/client/native/index.js +3 -3
- package/dist/{client-CI0Z2zWX.js → client-wxeTQFtB.js} +36 -3
- package/dist/{clone-BfgmLU90.js → clone-dN9XOL1K.js} +9 -1
- package/dist/{cloud-event-BnmD5fb9.js → cloud-event-CTh9Sr5w.js} +16 -2
- package/dist/{cloud-event-C1JCc1bH.d.ts → cloud-event-Dune0KI7.d.ts} +16 -2
- package/dist/{compiler-DY_wkj4R.d.ts → compiler-V1qvcST1.d.ts} +2 -2
- package/dist/{compose-BIBNgAnq.js → compose-BHej1acw.js} +3 -3
- package/dist/{composite--yqry7uW.d.ts → composite-CWAJTRBF.d.ts} +6 -6
- package/dist/{composite-DXVUibdi.js → composite-zTe0TCqj.js} +4 -4
- package/dist/config/index.d.ts +3 -4
- package/dist/config/index.js +4 -4
- package/dist/config-DlKvtt95.js +540 -0
- package/dist/{connector-Dv8kK0MO.d.ts → connector-CySQEFcW.d.ts} +1 -1
- package/dist/{connectors-CrpknU0P.d.ts → connectors--PGhmiu0.d.ts} +4 -4
- package/dist/{context-BCrWe7ow.d.ts → context-DsV2SueA.d.ts} +11 -2
- package/dist/context-nPDvQ-Zl.js +41 -0
- package/dist/credentials/index.d.ts +5 -5
- package/dist/credentials/index.js +9 -17
- package/dist/{cron-DVPUg5k3.js → cron-D25Ukpxy.js} +1 -1
- package/dist/cron-route-D2AN9SA1.js +24 -0
- package/dist/{csv-DCK-PT1n.js → csv-BZnHA1Py.js} +1 -1
- package/dist/{define-B-TVjC25.js → define-CFQcvM20.js} +263 -229
- package/dist/{define-CJJkkr1-.d.ts → define-DmcfoNXB.d.ts} +136 -111
- package/dist/edge/index.d.ts +66 -13
- package/dist/edge/index.js +65 -39
- package/dist/elysia/index.d.ts +1 -1
- package/dist/elysia/index.js +1 -1
- package/dist/{embeddings-C9KGQnXt.d.ts → embeddings-B4vhS-dY.d.ts} +1 -1
- package/dist/{ended-XjeGQ5XW.d.ts → ended-CcvcRqEd.d.ts} +7 -1
- package/dist/{entitlements-DRl6ZJUm.js → entitlements-BYFf0Cdh.js} +2 -2
- package/dist/{entitlements-BKSVGtrG.d.ts → entitlements-Ds8qoYZ-.d.ts} +1 -1
- package/dist/env/index.d.ts +1 -1
- package/dist/env/index.js +9 -2
- package/dist/{errors-B11Duf73.js → errors-2M6CKMP4.js} +5 -0
- package/dist/{errors-DLjJHPLK.js → errors-rZ7VIqp6.js} +2 -2
- package/dist/{escape-like-ImTK0ps_.d.ts → escape-like-DDWoHzh_.d.ts} +1 -1
- package/dist/eve/index.d.ts +5 -5
- package/dist/eve/index.js +5 -11
- package/dist/{eve-gT2Fpjut.d.ts → eve-CoAIcCkq.d.ts} +2 -2
- package/dist/events/index.d.ts +4 -4
- package/dist/events/index.js +7 -2
- package/dist/{events-DWDhx77e.d.ts → events-D1BOCll8.d.ts} +6 -4
- package/dist/{executor-Bq28caBo.js → executor-B-fD7DLt.js} +52 -35
- package/dist/executor-B_Hfobee.js +162 -0
- package/dist/{executor-BVBFM86G.d.ts → executor-CpxLPCiz.d.ts} +1 -1
- package/dist/{executor-CaWigTyR.d.ts → executor-DfEtf0cq.d.ts} +43 -27
- package/dist/{executor-DvsBbNBS.d.ts → executor-Drzu3dBK.d.ts} +2 -2
- package/dist/{executor-DbvExCFC.d.ts → executor-ngjKL_Pe.d.ts} +2 -2
- package/dist/expo/index.d.ts +4 -4
- package/dist/expo/index.js +6 -6
- package/dist/expo-sqlite/index.d.ts +3 -3
- package/dist/expo-sqlite/index.js +2 -2
- package/dist/extra-CGQ2_q3S.js +10 -0
- package/dist/{field-errors-BFOa7WhB.d.ts → field-errors-DIe9XYWL.d.ts} +17 -7
- package/dist/{field-errors-VF1yb8yI.js → field-errors-DZVRWRkf.js} +1 -1
- package/dist/format-DTXdu8ya.d.ts +70 -0
- package/dist/{framework-BmzgK32X.d.ts → framework-148t1m3C.d.ts} +5 -5
- package/dist/{framework-a7aRCIqv.js → framework-3ey3QmrO.js} +2 -2
- package/dist/function-contract-BcZenXMO.d.ts +8 -0
- package/dist/{gateway-C1ssRHnf.d.ts → gateway-S9vicgeo.d.ts} +4 -4
- package/dist/{guards-BnzDvFrz.js → guards-6F2bCtQR.js} +3 -1
- package/dist/h3/index.d.ts +1 -1
- package/dist/h3/index.js +1 -1
- package/dist/h3/v1/index.d.ts +1 -1
- package/dist/h3/v1/index.js +1 -1
- package/dist/{message-CaKlqdsX.js → history-GH1HJWQV.js} +65 -13
- package/dist/hmac-DCud0myt.js +22 -0
- package/dist/hono/index.d.ts +19 -14
- package/dist/hono/index.js +21 -16
- package/dist/{hooks-1BTCJsiw.js → hooks-Bhza9Hnr.js} +68 -100
- package/dist/http-sbmBe5d2.js +25 -0
- package/dist/{inbox-i7E1ppo6.d.ts → inbox-Cd1KCEBL.d.ts} +3 -3
- package/dist/index-B72Rvv_j.d.ts +89 -0
- package/dist/{index-DunNRdnT.d.ts → index-BCHR4Ucl.d.ts} +4 -4
- package/dist/{index-CLg87OBW.d.ts → index-BUK7jUzR.d.ts} +6 -0
- package/dist/{config-D44Y7PAv.d.ts → index-Ba1SI-uO.d.ts} +625 -278
- package/dist/{index-D48jVS-N.d.ts → index-BfxOaOYs.d.ts} +4 -5
- package/dist/{index-ClmjK_o-.d.ts → index-CicIyqOe.d.ts} +4 -4
- package/dist/{index-ACiNPN4Z.d.ts → index-D69h4QqD.d.ts} +1 -1
- package/dist/index-DG2SUXDQ.d.ts +58 -0
- package/dist/{index-Bepi-Hgg.d.ts → index-DoNVLHOU.d.ts} +3 -3
- package/dist/{index-CdZKQF98.d.ts → index-R274XFlg.d.ts} +1 -1
- package/dist/{index-CewnYSpv.d.ts → index-_4R4b01v.d.ts} +8 -18
- package/dist/index.d.ts +89 -14
- package/dist/index.js +12 -11
- package/dist/{json-schema-CvER4kgT.js → json-schema-CT4tvrkA.js} +148 -102
- package/dist/{kit-Fm-Fv7q5.js → kit-BhHr9T9v.js} +36 -10
- package/dist/{kit-CkNzZUqv.d.ts → kit-W99LCPBS.d.ts} +13 -7
- package/dist/{knowledge-BXBbT0Tr.d.ts → knowledge-CAReFpRA.d.ts} +5 -5
- package/dist/{knowledge-CDmiMLew.js → knowledge-DnHtb64A.js} +4 -3
- package/dist/list/index.d.ts +1 -2
- package/dist/{list-query-BRt-zDF7.d.ts → list-query-D3JQeEL7.d.ts} +4 -4
- package/dist/mcp/index.d.ts +49 -19
- package/dist/mcp/index.js +158 -94
- package/dist/mcp/sdk/index.d.ts +38 -6
- package/dist/mcp/sdk/index.js +88 -6
- package/dist/{message-CfDoR0Y6.d.ts → message-B0fNJgq8.d.ts} +1 -2
- package/dist/{messages-B9-5887d.js → messages-CJoHHCWT.js} +4 -205
- package/dist/{mfa-Daak8ukG.d.ts → mfa-SZc9YYyb.d.ts} +1 -1
- package/dist/model-OgBxvk3N.d.ts +300 -0
- package/dist/model-messages-Cxw_Up4f.js +206 -0
- package/dist/model-messages-D4GZllOD.d.ts +34 -0
- package/dist/modules-DksjZyMW.js +77 -0
- package/dist/nestjs/index.d.ts +2 -2
- package/dist/nestjs/index.js +1 -1
- package/dist/next/index.d.ts +105 -55
- package/dist/next/index.js +204 -170
- package/dist/node/index.d.ts +2 -2
- package/dist/node/index.js +1 -1
- package/dist/{onboarding-BZGHYJks.d.ts → onboarding-LZvlK1P4.d.ts} +3 -3
- package/dist/openapi/index.d.ts +4 -2
- package/dist/openapi/index.js +21 -343
- package/dist/optional-peer-D1pi-skw.js +24 -0
- package/dist/orpc/index.d.ts +8 -8
- package/dist/orpc/index.js +21 -20
- package/dist/otel/index.d.ts +3 -3
- package/dist/otel/index.js +7 -7
- package/dist/{outbox-Cq7pPYvl.d.ts → outbox-DZfAvfzC.d.ts} +6 -6
- package/dist/overlay/index.d.ts +233 -0
- package/dist/overlay/index.js +554 -0
- package/dist/{plugin-FGY8UhYm.d.ts → plugin-CPK2HsbY.d.ts} +42 -3
- package/dist/plugins/actor/index.d.ts +1 -1
- package/dist/plugins/actor/index.js +1 -1
- package/dist/plugins/rules/index.d.ts +2 -2
- package/dist/plugins/rules/index.js +1 -1
- package/dist/plugins/soft-delete/index.d.ts +3 -3
- package/dist/plugins/soft-delete/index.js +9 -2
- package/dist/plugins/tenant/index.d.ts +7 -2
- package/dist/plugins/tenant/index.js +16 -2
- package/dist/plugins/timestamps/index.d.ts +1 -1
- package/dist/plugins/timestamps/index.js +8 -1
- package/dist/plugins/validation/index.d.ts +2 -2
- package/dist/plugins/validation/index.js +4 -4
- package/dist/{pool-CAu2nLrL.d.ts → pool-gkhbGp2E.d.ts} +2 -2
- package/dist/postgres/index.d.ts +4 -4
- package/dist/postgres/index.js +2 -1
- package/dist/{postgrest-BLVdEnfe.d.ts → postgrest-BUqLag2Q.d.ts} +1 -1
- package/dist/powersync/index.d.ts +5 -5
- package/dist/powersync/index.js +4 -4
- package/dist/powersync/react/index.d.ts +3 -3
- package/dist/powersync/react/index.js +1 -1
- package/dist/{problem-BreOl8b8.js → problem-CJvFeGu7.js} +13 -2
- package/dist/{problem-DD8LZFjc.d.ts → problem-TvGdxO1t.d.ts} +7 -1
- package/dist/{provider-Di3sRutW.js → provider-DxRTex4x.js} +1 -1
- package/dist/{provider-D-UEMvSD.d.ts → provider-ib9wzUDz.d.ts} +2 -2
- package/dist/query/index.d.ts +2 -2
- package/dist/query/index.js +1 -1
- package/dist/{query-BQ-NaZon.js → query-Ctz-qKRx.js} +1 -1
- package/dist/rate-limit-Bw7HgmFj.js +260 -0
- package/dist/react/index.d.ts +9 -9
- package/dist/react/index.js +4 -4
- package/dist/react/native/index.d.ts +1 -1
- package/dist/react/native/index.js +2 -2
- package/dist/react/server.d.ts +10 -10
- package/dist/react/server.js +3 -3
- package/dist/react/session.d.ts +2 -2
- package/dist/{react-F80mF4-t.js → react-Bmpo59D7.js} +4 -4
- package/dist/react-router/index.d.ts +6 -6
- package/dist/react-router/index.js +9 -11
- package/dist/{read-set-DuKWC9Mj.js → read-set-DAeWhqPf.js} +2 -2
- package/dist/realtime/index.d.ts +3 -3
- package/dist/realtime/index.js +30 -36
- package/dist/{refusal-DhSU2Vvr.d.ts → refusal-CFI8-5nf.d.ts} +4 -1
- package/dist/{refusal-CeJWxmkH.js → refusal-K78A1Vmq.js} +5 -5
- package/dist/{resolve-tJZY3FEa.js → resolve-Bvgf3ut_.js} +131 -42
- package/dist/{resolve-ChTYeTEl.d.ts → resolve-MxXVWyhd.d.ts} +12 -8
- package/dist/resource--vTrBe6I.d.ts +103 -0
- package/dist/resource-BqNqlYg9.js +91 -0
- package/dist/resource-DA811u_4.js +463 -0
- package/dist/resource-execute-rbKvuCsY.d.ts +12 -0
- package/dist/resource-schemas-BJ518zFH.js +79 -0
- package/dist/resource-types-CqB6GWGT.d.ts +141 -0
- package/dist/resources-BVYPnuLo.js +56 -0
- package/dist/resources-DZSk8tXJ.d.ts +7 -0
- package/dist/{respond-DprrgyXX.d.ts → respond-Cw-zanCm.d.ts} +3 -3
- package/dist/{respond-BUgsXNgk.js → respond-volM3ByS.js} +4 -4
- package/dist/{result-D7y2fT87.d.ts → result-BchM1XZn.d.ts} +7 -1
- package/dist/{result-DzUbqgdW.js → result-DEqHCMKP.js} +1 -1
- package/dist/server/index.d.ts +81 -19
- package/dist/server/index.js +16 -14
- package/dist/{server-Bh0EVSwU.d.ts → server-types-CrAmZ8jv.d.ts} +92 -36
- package/dist/{shared-CxWmcyqB.js → shared-DHjhfRdV.js} +2 -15
- package/dist/shared-DTneRoxi.js +14 -0
- package/dist/{sign-in-Cb1mwv6X.js → sign-in-D_yoP0PF.js} +1 -1
- package/dist/signatures-BRS_p3WD.d.ts +34 -0
- package/dist/signatures-DsWv_bYR.js +103 -0
- package/dist/{signers-4y62_VIi.d.ts → signers-cpdmZYrv.d.ts} +1 -1
- package/dist/solid/index.d.ts +9 -18
- package/dist/solid/index.js +2 -2
- package/dist/solid-start/index.d.ts +6 -6
- package/dist/solid-start/index.js +7 -7
- package/dist/spec/index.d.ts +134 -0
- package/dist/spec/index.js +353 -0
- package/dist/{spec-pins-C89s6DyW.d.ts → spec-pins-CwzDY25w.d.ts} +18 -1
- package/dist/{spec-pins--j6mTok4.js → spec-pins-DsLfUH7l.js} +14 -1
- package/dist/sql/index.d.ts +145 -119
- package/dist/sql/index.js +19921 -19798
- package/dist/{executor-De1Of3m3.js → sql-CwuqaQ4Y.js} +34 -169
- package/dist/ssr/index.d.ts +4 -4
- package/dist/ssr/index.js +3 -2
- package/dist/{standard-BK0cqJ7y.js → standard-DkzZUneg.js} +2 -2
- package/dist/{standard-CYsm7xpT.d.ts → standard-lmkbOtPB.d.ts} +1 -1
- package/dist/{stats-D_AD9GGu.js → stats-DhU78Ctf.js} +8 -4
- package/dist/storage/index.d.ts +4 -6
- package/dist/storage/index.js +16 -17
- package/dist/{bucket-Cl46E3jS.d.ts → storage-api-CB7Zl1Ci.d.ts} +243 -8
- package/dist/{store-CGjgWu5n.d.ts → store-DsIYEBnv.d.ts} +1 -1
- package/dist/streams/index.d.ts +4 -4
- package/dist/streams/index.js +5 -4
- package/dist/streams/redis/index.d.ts +1 -1
- package/dist/streams/redis/index.js +5 -11
- package/dist/{stripe-BMj5LtsT.js → stripe-v-Y2lmop.js} +2 -8
- package/dist/supabase-mcp-C6tMoEjn.d.ts +43 -0
- package/dist/supabase-mcp-Cpn5A4i-.js +28 -0
- package/dist/{support-ig_K4PvS.js → support-D1pFFouF.js} +71 -35
- package/dist/{support-view-CVOJJLpc.d.ts → support-view-scqMgtOo.d.ts} +1 -1
- package/dist/svelte/index.d.ts +8 -17
- package/dist/svelte/index.js +2 -2
- package/dist/sveltekit/index.d.ts +7 -7
- package/dist/sveltekit/index.js +10 -12
- package/dist/table-schema-htM_SbCW.js +286 -0
- package/dist/{tags-Cx-LnIQP.d.ts → tags-BO9LjtWG.d.ts} +1 -1
- package/dist/tanstack-db/index.d.ts +2 -2
- package/dist/tanstack-db/supabase/index.d.ts +52 -0
- package/dist/tanstack-db/supabase/index.js +97 -0
- package/dist/tanstack-start/index.d.ts +6 -6
- package/dist/tanstack-start/index.js +8 -12
- package/dist/{tee-CoEppCER.js → tee-Cb98Vn3b.js} +1 -1
- package/dist/{template--jDkl3UP.js → template-lPVh-EwW.js} +11 -2
- package/dist/{temporal-required-BVvW7SYJ.js → temporal-required-BtynQtM-.js} +1 -1
- package/dist/{tenant-BxNFk9bx.d.ts → tenant-CM368LXb.d.ts} +2 -2
- package/dist/testing/index.d.ts +249 -118
- package/dist/testing/index.js +1418 -870
- package/dist/ttl-cache-XzZ-Q2eX.js +29 -0
- package/dist/types-BRTSpOIh.js +5 -0
- package/dist/{types-C05bxW-W.d.ts → types-Bb_4-vdW.d.ts} +4 -4
- package/dist/{types-AYOvcyep.d.ts → types-CD6yCDx3.d.ts} +5 -5
- package/dist/{types-6rocye-y.d.ts → types-CbOUc5IH.d.ts} +4 -4
- package/dist/{types-6BdhkmZe.d.ts → types-CoE5Zwy4.d.ts} +8 -0
- package/dist/{types-DGs5L0VN.d.ts → types-DSJ3-m9X.d.ts} +4 -4
- package/dist/{queue-CLJurhdy.d.ts → types-D__3EN0q.d.ts} +17 -19
- package/dist/{usage-CrvrL2vw.d.ts → usage-D0NNUFfr.d.ts} +3 -3
- package/dist/{vault-wlbBhqm7.d.ts → vault-BpmApxxW.d.ts} +3 -3
- package/dist/vercel-connect/index.d.ts +1 -1
- package/dist/vercel-connect/index.js +5 -11
- package/dist/{verify-DPuWngD4.d.ts → verify-C91Wyp40.d.ts} +5 -35
- package/dist/verify-CJbYfADA.js +124 -0
- package/dist/{version-C6OfRAIn.js → version-Cq8gfDbd.js} +1 -1
- package/dist/{view-BeFcRV6G.js → view-D5ryq3gz.js} +1 -1
- package/dist/{view-CF7ihnkg.d.ts → view-TpXEUcVN.d.ts} +3 -3
- package/dist/vue/index.d.ts +9 -18
- package/dist/vue/index.js +2 -2
- package/dist/{watch-Xuxrvxq-.js → watch-BcvtAHOd.js} +2 -2
- package/dist/{watch-DI34G86j.d.ts → watch-COzRWvVN.d.ts} +23 -9
- package/dist/{wire-DtZQ4sdE.js → wire-Df3EWkG8.js} +2 -2
- package/dist/{workflow-builder-DJ1oHn8g.js → workflow-builder-CHqHpAVt.js} +6 -5
- package/dist/workflow-sdk/builder/index.d.ts +3 -3
- package/dist/workflow-sdk/index.d.ts +1 -1
- package/dist/workflow-sdk/world/index.d.ts +23 -17
- package/dist/workflow-sdk/world/index.js +59 -76
- package/dist/{workflow-sdk-B3yLD6Br.d.ts → workflow-sdk-DTZyrvNo.d.ts} +3 -3
- package/dist/{workflow-sdk-world-D-prir6O.js → workflow-sdk-world-CMV1ahFW.js} +528 -526
- package/dist/{workflows-B0j9WKPu.d.ts → workflows-CcpCBfIe.d.ts} +3 -3
- package/dist/{workflows-wu1WWBn7.js → workflows-IvxzG2cl.js} +5 -4
- package/package.json +54 -3
- package/schemas/config-v1.json +243 -0
- package/schemas/doctor-report-v1.json +4 -1
- package/schemas/spec-manifest-v1.json +95 -0
- package/skills/better-supabase/SKILL.md +8 -4
- package/skills/better-supabase/references/troubleshooting.md +20 -20
- package/skills/better-supabase-api/references/expo.md +6 -3
- package/skills/better-supabase-api/references/powersync.md +2 -1
- package/dist/cli/config-B9HkL8nF.js +0 -2
- package/dist/cli/gen-CCMc39Dx.js +0 -3100
- package/dist/cli/gen-DRmzPI75.js +0 -2
- package/dist/cli/prompts-BTYQGunc.js +0 -2
- package/dist/cli/run-BqDPh9UH.js +0 -361
- package/dist/config-Dn7F5k9A.js +0 -202
- package/dist/history-BZih6SFP.js +0 -64
- package/dist/index-BkWT_uBO.d.ts +0 -51
- package/dist/index-Bxih3l0u.d.ts +0 -81
- package/dist/index-CaxrMD1A.d.ts +0 -1
- package/dist/index-DQh4VCc9.d.ts +0 -98
- package/dist/keys-4MnkWTTh.js +0 -35
- package/dist/messages-DYP0sUTe.d.ts +0 -59
- package/dist/modules-dxrVK3ID.js +0 -228
- package/dist/path-Cv__-OTj.d.ts +0 -17
- package/dist/resource-BsvzCMlX.js +0 -212
- package/dist/resource-IPS5xi9q.d.ts +0 -74
- package/dist/template-CwO38Do8.d.ts +0 -6
- package/dist/verify-DL41hbvY.js +0 -232
- package/dist/cli/{read-sets-CETOSFx4.js → read-sets-DjJrm8Wj.js} +1 -1
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
import { n as CliError, r as errorText } from "./errors-CqTLXe2M.js";
|
|
2
|
+
import { o as readExtras, r as cachedIntrospect } from "./cache-CIfA-jBV.js";
|
|
3
|
+
import { l as stabilizeMetadata, n as TypegenMissingError, o as readGeneratorMetadata, p as validateGeneratorMetadata } from "./typegen-Demi5-VQ.js";
|
|
4
|
+
import { n as databaseUrl } from "./config-M-WzL9O2.js";
|
|
5
|
+
import { d as schemaPaths, l as pgFunctionHooks, p as tomlGet, u as readSupabaseToml } from "./supabase-toml-B-bIukQF.js";
|
|
6
|
+
import { t as connect } from "./db-BkcfOlyB.js";
|
|
7
|
+
import { join, resolve } from "node:path";
|
|
8
|
+
import { existsSync } from "node:fs";
|
|
9
|
+
import { readFile, readdir } from "node:fs/promises";
|
|
10
|
+
//#region src/cli/introspect/source.ts
|
|
11
|
+
const POOL_SIZE = 4;
|
|
12
|
+
const STATEMENT_TIMEOUT_MS = 12e4;
|
|
13
|
+
/**
|
|
14
|
+
* A small `pg` pool, since introspection issues its queries concurrently. A
|
|
15
|
+
* `connect` that returns a single client gets its queries queued, because one
|
|
16
|
+
* `pg.Client` runs them one at a time.
|
|
17
|
+
*/
|
|
18
|
+
async function pgSource(url, open = connect, signal) {
|
|
19
|
+
const { client, pooled, close, describe } = await open(url, void 0, {
|
|
20
|
+
pool: POOL_SIZE,
|
|
21
|
+
statementTimeout: STATEMENT_TIMEOUT_MS,
|
|
22
|
+
...signal ? { signal } : {}
|
|
23
|
+
});
|
|
24
|
+
if (pooled) return {
|
|
25
|
+
queryable: client,
|
|
26
|
+
close,
|
|
27
|
+
describe
|
|
28
|
+
};
|
|
29
|
+
let queue = Promise.resolve();
|
|
30
|
+
return {
|
|
31
|
+
queryable: { query(sql) {
|
|
32
|
+
const next = queue.then(() => client.query(sql));
|
|
33
|
+
queue = next.catch(() => void 0);
|
|
34
|
+
return next;
|
|
35
|
+
} },
|
|
36
|
+
close,
|
|
37
|
+
describe
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Runs introspection SQL through the Supabase Management API as the
|
|
42
|
+
* read-only database user, so hosted projects need no database password.
|
|
43
|
+
*/
|
|
44
|
+
function managementSource(options) {
|
|
45
|
+
const base = (options.apiUrl ?? "https://api.supabase.com").replace(/\/$/, "");
|
|
46
|
+
const doFetch = options.fetch ?? fetch;
|
|
47
|
+
const endpoint = `${base}/v1/projects/${encodeURIComponent(options.projectRef)}/database/query/read-only`;
|
|
48
|
+
return {
|
|
49
|
+
queryable: { async query(sql) {
|
|
50
|
+
const response = await doFetch(endpoint, {
|
|
51
|
+
method: "POST",
|
|
52
|
+
headers: {
|
|
53
|
+
authorization: `Bearer ${options.accessToken}`,
|
|
54
|
+
"content-type": "application/json"
|
|
55
|
+
},
|
|
56
|
+
body: JSON.stringify({ query: sql }),
|
|
57
|
+
...options.signal ? { signal: options.signal } : {}
|
|
58
|
+
});
|
|
59
|
+
const text = await response.text();
|
|
60
|
+
if (!response.ok) throw new Error(`Management API query failed (${response.status}) for project ${options.projectRef}: ${text.slice(0, 500)}`);
|
|
61
|
+
const rows = JSON.parse(text);
|
|
62
|
+
if (!Array.isArray(rows)) throw new TypeError(`Management API returned an unexpected body for project ${options.projectRef}.`);
|
|
63
|
+
return { rows };
|
|
64
|
+
} },
|
|
65
|
+
describe: `project ${options.projectRef} (Management API)`,
|
|
66
|
+
close: () => Promise.resolve()
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
//#endregion
|
|
70
|
+
//#region src/cli/introspect/index.ts
|
|
71
|
+
/** Reads a v2 snapshot: typegen metadata plus the extras. */
|
|
72
|
+
async function introspect(db, schemas, options = {}) {
|
|
73
|
+
const unique = [...new Set(schemas)].sort();
|
|
74
|
+
const [metadata, extras] = await Promise.all([readGeneratorMetadata(db, unique), readExtras(db, unique, options.hooks)]);
|
|
75
|
+
const { metadata: generator, ids } = stabilizeMetadata(metadata);
|
|
76
|
+
return {
|
|
77
|
+
version: 2,
|
|
78
|
+
schemas: unique,
|
|
79
|
+
generator,
|
|
80
|
+
extras: {
|
|
81
|
+
...extras,
|
|
82
|
+
tables: extras.tables.map((table) => ({
|
|
83
|
+
...table,
|
|
84
|
+
id: ids.get(table.id) ?? table.id
|
|
85
|
+
}))
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
//#endregion
|
|
90
|
+
//#region src/cli/lite.ts
|
|
91
|
+
const LITE_DRIVERS = [
|
|
92
|
+
"sqlite-postgres",
|
|
93
|
+
"sqlite",
|
|
94
|
+
"pglite",
|
|
95
|
+
"postgres"
|
|
96
|
+
];
|
|
97
|
+
/** The drivers that store data in SQLite, where Lite has no `rpc()`. */
|
|
98
|
+
function isSqliteLiteDriver(driver) {
|
|
99
|
+
return driver === "sqlite-postgres" || driver === "sqlite";
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* `@supabase/lite` is an optional peer, imported through variable specifiers
|
|
103
|
+
* so the CLI build leaves it out; `undefined` when it is not installed.
|
|
104
|
+
*/
|
|
105
|
+
async function loadCliLite() {
|
|
106
|
+
const root = "@supabase/lite";
|
|
107
|
+
const pglite = "@supabase/lite/pglite";
|
|
108
|
+
try {
|
|
109
|
+
const [{ App }, pg] = await Promise.all([import(root), import(pglite)]);
|
|
110
|
+
return {
|
|
111
|
+
App,
|
|
112
|
+
createPgliteConnection: () => pg.createPgliteConnection()
|
|
113
|
+
};
|
|
114
|
+
} catch {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//#endregion
|
|
119
|
+
//#region src/cli/introspect/lite.ts
|
|
120
|
+
function isLiteDriver(value) {
|
|
121
|
+
return LITE_DRIVERS.some((driver) => driver === value);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* `[db] driver` from `supabase/config.toml`. Only Supabase Lite reads this
|
|
125
|
+
* key, so its presence marks a Lite project.
|
|
126
|
+
*/
|
|
127
|
+
function liteDriverOf(toml) {
|
|
128
|
+
const driver = tomlGet(toml?.document ?? {}, ["db", "driver"]);
|
|
129
|
+
if (driver === void 0) return void 0;
|
|
130
|
+
if (isLiteDriver(driver)) return driver;
|
|
131
|
+
throw new CliError("config_invalid", `[db] driver = ${JSON.stringify(driver)} in ${toml?.path ?? "supabase/config.toml"} is not a Supabase Lite driver (${LITE_DRIVERS.join(", ")}).`, { flag: "[db] driver" });
|
|
132
|
+
}
|
|
133
|
+
/** `supabase/migrations/*.sql` in version order, then the declarative schema files. */
|
|
134
|
+
async function schemaSql(root, toml) {
|
|
135
|
+
const migrations = join(root, toml?.dir ?? "supabase", "migrations");
|
|
136
|
+
const files = existsSync(migrations) ? (await readdir(migrations)).filter((name) => name.endsWith(".sql")).sort().map((name) => join(migrations, name)) : [];
|
|
137
|
+
const { files: schemas } = await schemaPaths(root, toml);
|
|
138
|
+
return Promise.all([...files, ...schemas.map((path) => join(root, path))].map((path) => readFile(path, "utf8")));
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Where `gen` reads a Supabase Lite project's schema: the `postgres`
|
|
142
|
+
* driver's `[db] url`, or, for `pglite` and `sqlite-postgres`, an in-memory
|
|
143
|
+
* PGlite with Lite's auth schema that `supabase/migrations` and the
|
|
144
|
+
* declarative schema files are replayed into.
|
|
145
|
+
*/
|
|
146
|
+
async function liteSource(root, toml, driver, open = connect) {
|
|
147
|
+
switch (driver) {
|
|
148
|
+
case "postgres": {
|
|
149
|
+
const url = tomlGet(toml?.document ?? {}, ["db", "url"]);
|
|
150
|
+
if (typeof url !== "string" || !/^postgres(ql)?:\/\//.test(url)) throw new CliError("missing_value", "The Supabase Lite postgres driver needs [db] url = \"postgres://...\" in supabase/config.toml, or pass --db-url-stdin.", { flag: "[db] url" });
|
|
151
|
+
return pgSource(url, open);
|
|
152
|
+
}
|
|
153
|
+
case "sqlite": throw new CliError("config_invalid", "gen reads Postgres DDL, and the bare sqlite driver takes native SQLite DDL. Switch to [db] driver = \"sqlite-postgres\" or \"pglite\", or save a snapshot with `better-supabase introspect`.", { flag: "[db] driver" });
|
|
154
|
+
case "pglite":
|
|
155
|
+
case "sqlite-postgres": break;
|
|
156
|
+
default: return driver;
|
|
157
|
+
}
|
|
158
|
+
const lite = await loadCliLite();
|
|
159
|
+
if (!lite) throw new CliError("failed", "Reading a Supabase Lite project needs @supabase/lite: pnpm add -D @supabase/lite");
|
|
160
|
+
const connection = await lite.createPgliteConnection();
|
|
161
|
+
try {
|
|
162
|
+
await new lite.App({
|
|
163
|
+
connection,
|
|
164
|
+
auth: {
|
|
165
|
+
enabled: true,
|
|
166
|
+
jwt_secret: "better-supabase-gen".repeat(2)
|
|
167
|
+
}
|
|
168
|
+
}).init();
|
|
169
|
+
const ddl = (await schemaSql(root, toml)).filter((part) => part.trim() !== "").join("\n;\n");
|
|
170
|
+
if (ddl !== "") await connection.createMigrator(ddl).migrate();
|
|
171
|
+
} catch (error) {
|
|
172
|
+
await connection.close();
|
|
173
|
+
throw new CliError("failed", `Replaying the Supabase Lite schema into PGlite failed: ${errorText(error)}`, { cause: error });
|
|
174
|
+
}
|
|
175
|
+
return {
|
|
176
|
+
queryable: connection.driver,
|
|
177
|
+
describe: `Supabase Lite schema (${driver}, replayed into PGlite)`,
|
|
178
|
+
replay: `the Supabase Lite ${driver} schema was replayed into an in-memory PGlite, which has no statistics or Supabase roles. Set [db] driver = "postgres" with a [db] url, or pass --db-url-stdin, to check a database.`,
|
|
179
|
+
close: () => connection.close()
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
//#endregion
|
|
183
|
+
//#region src/cli/commands/snapshot.ts
|
|
184
|
+
const SNAPSHOT_SCHEMA_URL = "https://unpkg.com/better-supabase/schemas/snapshot-v2.json";
|
|
185
|
+
/** Schemas that are always read, for doctor checks on helper functions. */
|
|
186
|
+
const EXTRA_SCHEMAS = ["better_supabase"];
|
|
187
|
+
/** The hosted project to read through the Management API, if any. */
|
|
188
|
+
function managementTarget(config, env, source) {
|
|
189
|
+
if (source.dbUrl) return void 0;
|
|
190
|
+
const projectRef = source.projectRef ?? (config.source.dbUrl ? void 0 : config.source.projectRef);
|
|
191
|
+
if (!projectRef) return void 0;
|
|
192
|
+
const accessToken = config.source.accessToken ?? env.SUPABASE_ACCESS_TOKEN;
|
|
193
|
+
if (!accessToken) throw new CliError("missing_value", `Reading project ${projectRef} needs a Supabase access token. Set SUPABASE_ACCESS_TOKEN to a token scoped to this project (https://supabase.com/dashboard/account/tokens), or read the database with $DATABASE_URL, $SUPABASE_DB_URL or --db-url-stdin.`, { flag: "SUPABASE_ACCESS_TOKEN" });
|
|
194
|
+
return {
|
|
195
|
+
projectRef,
|
|
196
|
+
accessToken,
|
|
197
|
+
...env.SUPABASE_API_URL ? { apiUrl: env.SUPABASE_API_URL } : {}
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Where to read the schema from: `--db-url-stdin`, `--project-ref`, then the
|
|
202
|
+
* config's `source.dbUrl` / `source.projectRef`, a Supabase Lite project's
|
|
203
|
+
* `[db] driver`, `$DATABASE_URL`, `$SUPABASE_DB_URL`, and finally the local
|
|
204
|
+
* stack.
|
|
205
|
+
*/
|
|
206
|
+
async function openSource(config, env, source, open = connect) {
|
|
207
|
+
if (source.dbUrl) return pgSource(source.dbUrl, open, source.signal);
|
|
208
|
+
const target = managementTarget(config, env, source);
|
|
209
|
+
if (target) return managementSource({
|
|
210
|
+
...target,
|
|
211
|
+
...source.signal ? { signal: source.signal } : {}
|
|
212
|
+
});
|
|
213
|
+
if (!config.source.dbUrl && config.source.lite !== false) {
|
|
214
|
+
const toml = await readSupabaseToml(config.root);
|
|
215
|
+
const driver = liteDriverOf(toml) ?? (config.source.lite === true ? "sqlite-postgres" : void 0);
|
|
216
|
+
if (driver) return liteSource(config.root, toml, driver, open);
|
|
217
|
+
}
|
|
218
|
+
return pgSource(await databaseUrl(config, env), open, source.signal);
|
|
219
|
+
}
|
|
220
|
+
/** Whether `loadSnapshot` reads a saved file rather than a database. */
|
|
221
|
+
function snapshotFile(config, source) {
|
|
222
|
+
return source.snapshotPath ?? (source.live || source.dbUrl || source.projectRef ? void 0 : config.source.snapshot);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Loads a saved snapshot or introspects the database. With `shared`, it
|
|
226
|
+
* introspects over that source and leaves closing it to the caller, so later
|
|
227
|
+
* queries reuse the connection.
|
|
228
|
+
*/
|
|
229
|
+
async function loadSnapshot(config, env, source, open = connect, shared) {
|
|
230
|
+
const path = snapshotFile(config, source);
|
|
231
|
+
if (path) return readSnapshotFile(resolve(config.root, path), path);
|
|
232
|
+
const [tomlRead, opened] = await Promise.allSettled([readSupabaseToml(config.root), shared ? shared() : openSource(config, env, source, open)]);
|
|
233
|
+
if (tomlRead.status === "rejected") {
|
|
234
|
+
if (opened.status === "fulfilled" && !shared) await opened.value.close().catch(() => void 0);
|
|
235
|
+
throw tomlRead.reason;
|
|
236
|
+
}
|
|
237
|
+
if (opened.status === "rejected") throw opened.reason;
|
|
238
|
+
const toml = tomlRead.value;
|
|
239
|
+
const db = opened.value;
|
|
240
|
+
const hooks = toml ? pgFunctionHooks(toml.document) : [];
|
|
241
|
+
const schemas = [...config.schemas, ...EXTRA_SCHEMAS];
|
|
242
|
+
try {
|
|
243
|
+
const read = () => introspect(db.queryable, schemas, { hooks });
|
|
244
|
+
return await (source.cache ? cachedIntrospect(config.root, db, [schemas, hooks], read) : read());
|
|
245
|
+
} finally {
|
|
246
|
+
if (!shared) await db.close();
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
async function readSnapshotFile(absolute, label = absolute) {
|
|
250
|
+
if (!existsSync(absolute)) throw new Error(`Snapshot not found: ${label}`);
|
|
251
|
+
return parseSnapshot(JSON.parse(await readFile(absolute, "utf8")), label);
|
|
252
|
+
}
|
|
253
|
+
/** Validates a parsed snapshot document. */
|
|
254
|
+
async function parseSnapshot(data, label = "snapshot") {
|
|
255
|
+
const doc = data;
|
|
256
|
+
if (!doc || typeof doc !== "object" || doc.version !== 2) throw new Error(`${label} is not a version 2 snapshot. Run \`better-supabase introspect\` to refresh it.`);
|
|
257
|
+
if (!Array.isArray(doc.schemas) || !doc.extras || !Array.isArray(doc.extras.tables)) throw new Error(`${label} is missing "schemas" or "extras".`);
|
|
258
|
+
let generator;
|
|
259
|
+
try {
|
|
260
|
+
generator = await validateGeneratorMetadata(doc.generator);
|
|
261
|
+
} catch (cause) {
|
|
262
|
+
if (cause instanceof TypegenMissingError) throw cause;
|
|
263
|
+
throw new Error(`${label} has invalid "generator" metadata: ${errorText(cause)}`, { cause });
|
|
264
|
+
}
|
|
265
|
+
return {
|
|
266
|
+
version: 2,
|
|
267
|
+
schemas: doc.schemas,
|
|
268
|
+
generator,
|
|
269
|
+
extras: {
|
|
270
|
+
tables: doc.extras.tables,
|
|
271
|
+
buckets: doc.extras.buckets ?? [],
|
|
272
|
+
realtime: doc.extras.realtime ?? [],
|
|
273
|
+
...doc.extras.roleSettings ? { roleSettings: doc.extras.roleSettings } : {},
|
|
274
|
+
...doc.extras.functions ? { functions: doc.extras.functions } : {},
|
|
275
|
+
...doc.extras.hooks ? { hooks: doc.extras.hooks } : {}
|
|
276
|
+
}
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
function serializeSnapshot(snapshot) {
|
|
280
|
+
const { $schema: _ignored, ...rest } = snapshot;
|
|
281
|
+
return `${JSON.stringify({
|
|
282
|
+
$schema: SNAPSHOT_SCHEMA_URL,
|
|
283
|
+
...rest
|
|
284
|
+
}, null, 2)}\n`;
|
|
285
|
+
}
|
|
286
|
+
//#endregion
|
|
287
|
+
export { serializeSnapshot as a, isSqliteLiteDriver as c, pgSource as d, parseSnapshot as i, introspect as l, managementTarget as n, snapshotFile as o, openSource as r, liteDriverOf as s, loadSnapshot as t, managementSource as u };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { c as stdinDatabaseUrl } from "./config-M-WzL9O2.js";
|
|
2
|
+
//#region src/cli/commands/source-args.ts
|
|
3
|
+
/** Where to read the schema from, shared by gen, introspect and doctor. */
|
|
4
|
+
const SOURCE_ARGS = {
|
|
5
|
+
snapshot: {
|
|
6
|
+
type: "string",
|
|
7
|
+
description: "Read a saved snapshot instead of the database",
|
|
8
|
+
valueHint: "file"
|
|
9
|
+
},
|
|
10
|
+
"db-url-stdin": {
|
|
11
|
+
type: "boolean",
|
|
12
|
+
description: "Read the connection string from stdin instead of the config, $DATABASE_URL or $SUPABASE_DB_URL"
|
|
13
|
+
},
|
|
14
|
+
"project-ref": {
|
|
15
|
+
type: "string",
|
|
16
|
+
description: "Read a hosted project through the Management API",
|
|
17
|
+
valueHint: "ref"
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
async function sourceArgs(args, io) {
|
|
21
|
+
const snapshotPath = args.snapshot;
|
|
22
|
+
const dbUrl = await stdinDatabaseUrl(args["db-url-stdin"], io);
|
|
23
|
+
const projectRef = args["project-ref"];
|
|
24
|
+
return {
|
|
25
|
+
...snapshotPath ? { snapshotPath } : {},
|
|
26
|
+
...dbUrl ? { dbUrl } : {},
|
|
27
|
+
...projectRef ? { projectRef } : {}
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { sourceArgs as n, SOURCE_ARGS as t };
|