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
package/dist/cli/bin.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { i as run } from "./run-
|
|
3
|
-
import { t as colorEnabled } from "./style-
|
|
2
|
+
import { i as run } from "./run-DA6_lg3w.js";
|
|
3
|
+
import { t as colorEnabled } from "./style-CB3vxgh0.js";
|
|
4
4
|
import { text } from "node:stream/consumers";
|
|
5
5
|
//#region src/cli/bin.ts
|
|
6
|
-
const clack = () => import("./prompts-
|
|
6
|
+
const clack = () => import("./prompts-BdeVmVpg.js").then((module) => module.createClackPrompter(process.stderr));
|
|
7
7
|
const prompts = {
|
|
8
8
|
select: async (message, choices, initial) => (await clack()).select(message, choices, initial),
|
|
9
9
|
multiselect: async (message, choices, initial) => (await clack()).multiselect(message, choices, initial),
|
|
@@ -39,7 +39,7 @@ const result = await run(process.argv.slice(2), {
|
|
|
39
39
|
process.stderr.write(chunk);
|
|
40
40
|
},
|
|
41
41
|
stdin: () => text(process.stdin),
|
|
42
|
-
color: colorEnabled(),
|
|
42
|
+
color: colorEnabled(process.stdout),
|
|
43
43
|
...process.stdin.isTTY && process.stdout.isTTY ? { prompts } : {}
|
|
44
44
|
}
|
|
45
45
|
});
|
|
@@ -0,0 +1,483 @@
|
|
|
1
|
+
import { t as VERSION } from "./version-B4k0aUxS.js";
|
|
2
|
+
import { t as TYPEGEN_VERSION } from "./typegen-version-DeFbtzYI.js";
|
|
3
|
+
import { dirname, resolve } from "node:path";
|
|
4
|
+
import { mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
|
|
5
|
+
import { createHash } from "node:crypto";
|
|
6
|
+
//#region src/cli/introspect/extras.ts
|
|
7
|
+
/**
|
|
8
|
+
* Catalog details `@supabase/postgrest-typegen` leaves out: named unique and
|
|
9
|
+
* CHECK constraints, foreign key actions, ordered primary keys, indexes,
|
|
10
|
+
* policies, triggers, grants, buckets and the realtime publication.
|
|
11
|
+
*
|
|
12
|
+
* The SQL takes no bind parameters because the Management API endpoint only
|
|
13
|
+
* accepts a query string; schema names are inlined as escaped literals.
|
|
14
|
+
*/
|
|
15
|
+
const literalArray = (values) => `array[${values.map((value) => `'${value.replaceAll("'", "''")}'`).join(", ")}]::text[]`;
|
|
16
|
+
/** Row estimate from which a table counts as large in the snapshot. */
|
|
17
|
+
const LARGE_TABLE_ROWS = 1e4;
|
|
18
|
+
const RELATIONS = (schemas) => `
|
|
19
|
+
select c.oid::int8 as id, n.nspname as schema, c.relname as name,
|
|
20
|
+
c.reltuples >= ${LARGE_TABLE_ROWS} as large
|
|
21
|
+
from pg_class c
|
|
22
|
+
join pg_namespace n on n.oid = c.relnamespace
|
|
23
|
+
where n.nspname = any(${schemas}) and c.relkind in ('r', 'p', 'v', 'm', 'f')
|
|
24
|
+
order by 2, 3`;
|
|
25
|
+
const CONSTRAINTS = (schemas) => `
|
|
26
|
+
select con.conrelid::int8 as table_id, con.conname as name, con.contype as type,
|
|
27
|
+
array(select a.attname from unnest(con.conkey) with ordinality k(attnum, ord)
|
|
28
|
+
join pg_attribute a on a.attrelid = con.conrelid and a.attnum = k.attnum order by k.ord)::text[] as columns,
|
|
29
|
+
con.confdeltype as on_delete, con.confupdtype as on_update,
|
|
30
|
+
pg_get_constraintdef(con.oid) as definition
|
|
31
|
+
from pg_constraint con
|
|
32
|
+
join pg_class c on c.oid = con.conrelid
|
|
33
|
+
join pg_namespace n on n.oid = c.relnamespace
|
|
34
|
+
where n.nspname = any(${schemas}) and con.contype in ('p', 'u', 'f', 'c')
|
|
35
|
+
order by 1, 2`;
|
|
36
|
+
const INDEXES = (schemas) => `
|
|
37
|
+
select ix.indrelid::int8 as table_id, i.relname as name,
|
|
38
|
+
ix.indisunique as unique, ix.indisprimary as primary,
|
|
39
|
+
(ix.indpred is not null or 0 = any(ix.indkey::int2[])) as partial,
|
|
40
|
+
am.amname as method, pg_get_expr(ix.indpred, ix.indrelid) as predicate,
|
|
41
|
+
array(select a.attname from unnest((ix.indkey::int2[])[0:ix.indnkeyatts - 1]) with ordinality k(attnum, ord)
|
|
42
|
+
join pg_attribute a on a.attrelid = ix.indrelid and a.attnum = k.attnum order by k.ord)::text[] as columns
|
|
43
|
+
from pg_index ix
|
|
44
|
+
join pg_class i on i.oid = ix.indexrelid
|
|
45
|
+
join pg_am am on am.oid = i.relam
|
|
46
|
+
join pg_class c on c.oid = ix.indrelid
|
|
47
|
+
join pg_namespace n on n.oid = c.relnamespace
|
|
48
|
+
where n.nspname = any(${schemas}) and ix.indisvalid
|
|
49
|
+
order by 1, 2`;
|
|
50
|
+
const POLICIES = (schemas) => `
|
|
51
|
+
select c.oid::int8 as table_id, p.policyname as name,
|
|
52
|
+
(p.permissive = 'PERMISSIVE') as permissive, p.roles::text[] as roles, lower(p.cmd) as command,
|
|
53
|
+
p.qual as using_expr, p.with_check as check_expr,
|
|
54
|
+
array(
|
|
55
|
+
select distinct fn.nspname || '.' || pr.proname
|
|
56
|
+
from pg_policy pol
|
|
57
|
+
join pg_depend d on d.classid = 'pg_policy'::regclass and d.objid = pol.oid
|
|
58
|
+
and d.refclassid = 'pg_proc'::regclass
|
|
59
|
+
join pg_proc pr on pr.oid = d.refobjid
|
|
60
|
+
join pg_namespace fn on fn.oid = pr.pronamespace
|
|
61
|
+
where pol.polrelid = c.oid and pol.polname = p.policyname
|
|
62
|
+
order by 1
|
|
63
|
+
)::text[] as functions
|
|
64
|
+
from pg_policies p
|
|
65
|
+
join pg_namespace n on n.nspname = p.schemaname
|
|
66
|
+
join pg_class c on c.relnamespace = n.oid and c.relname = p.tablename
|
|
67
|
+
where p.schemaname = any(${schemas})
|
|
68
|
+
order by 1, 2`;
|
|
69
|
+
const FUNCTIONS = (schemas) => `
|
|
70
|
+
select n.nspname as schema, p.proname as name,
|
|
71
|
+
pg_get_function_identity_arguments(p.oid) as signature,
|
|
72
|
+
l.lanname as language, p.provolatile as volatility,
|
|
73
|
+
p.prosecdef as security_definer, coalesce(p.proconfig, '{}')::text[] as config,
|
|
74
|
+
array(
|
|
75
|
+
select r from unnest(array['anon', 'authenticated']) r
|
|
76
|
+
where has_function_privilege(r, p.oid, 'EXECUTE')
|
|
77
|
+
) as execute
|
|
78
|
+
from pg_proc p
|
|
79
|
+
join pg_namespace n on n.oid = p.pronamespace
|
|
80
|
+
join pg_language l on l.oid = p.prolang
|
|
81
|
+
where p.oid in (
|
|
82
|
+
select d.refobjid
|
|
83
|
+
from pg_depend d
|
|
84
|
+
join pg_policy pol on d.classid = 'pg_policy'::regclass and d.objid = pol.oid
|
|
85
|
+
join pg_class c on c.oid = pol.polrelid
|
|
86
|
+
join pg_namespace cn on cn.oid = c.relnamespace
|
|
87
|
+
where d.refclassid = 'pg_proc'::regclass and cn.nspname = any(${schemas})
|
|
88
|
+
)
|
|
89
|
+
or (n.nspname = any(${schemas}) and ((p.prosecdef
|
|
90
|
+
and p.prorettype not in ('trigger'::regtype, 'event_trigger'::regtype)) or exists (
|
|
91
|
+
select 1 from unnest(p.proconfig) setting where setting not like 'search_path=%'
|
|
92
|
+
)))
|
|
93
|
+
order by 1, 2, 3`;
|
|
94
|
+
/** Roles the hook checks care about: the one Auth calls it as, and the API roles. */
|
|
95
|
+
const HOOK_ROLES = literalArray([
|
|
96
|
+
"supabase_auth_admin",
|
|
97
|
+
"authenticated",
|
|
98
|
+
"anon"
|
|
99
|
+
]);
|
|
100
|
+
const HOOKS = (names) => `
|
|
101
|
+
select n.nspname as schema, p.proname as name,
|
|
102
|
+
pg_get_function_identity_arguments(p.oid) as signature,
|
|
103
|
+
l.lanname as language, p.provolatile as volatility,
|
|
104
|
+
p.prosecdef as security_definer, coalesce(p.proconfig, '{}')::text[] as config,
|
|
105
|
+
array(select r.rolname::text from pg_roles r
|
|
106
|
+
where r.rolname = any(${HOOK_ROLES}) and has_function_privilege(r.oid, p.oid, 'execute')
|
|
107
|
+
order by 1) as execute,
|
|
108
|
+
exists(select 1 from aclexplode(coalesce(p.proacl, acldefault('f', p.proowner))) a
|
|
109
|
+
where a.grantee = 0 and a.privilege_type = 'EXECUTE') as public_execute,
|
|
110
|
+
array(select r.rolname::text from pg_roles r
|
|
111
|
+
where r.rolname = any(${HOOK_ROLES}) and has_schema_privilege(r.oid, n.oid, 'usage')
|
|
112
|
+
order by 1) as schema_usage,
|
|
113
|
+
p.prosrc as source
|
|
114
|
+
from pg_proc p
|
|
115
|
+
join pg_namespace n on n.oid = p.pronamespace
|
|
116
|
+
join pg_language l on l.oid = p.prolang
|
|
117
|
+
where n.nspname || '.' || p.proname = any(${names})
|
|
118
|
+
order by 1, 2, 3`;
|
|
119
|
+
const TRIGGERS = (schemas) => `
|
|
120
|
+
select t.tgrelid::int8 as table_id, t.tgname as name,
|
|
121
|
+
pn.nspname || '.' || p.proname as function,
|
|
122
|
+
case when t.tgtype & 2 = 2 then 'before' when t.tgtype & 64 = 64 then 'instead of' else 'after' end as timing,
|
|
123
|
+
array_remove(array[
|
|
124
|
+
case when t.tgtype & 4 = 4 then 'insert' end,
|
|
125
|
+
case when t.tgtype & 16 = 16 then 'update' end,
|
|
126
|
+
case when t.tgtype & 8 = 8 then 'delete' end,
|
|
127
|
+
case when t.tgtype & 32 = 32 then 'truncate' end
|
|
128
|
+
], null)::text[] as events,
|
|
129
|
+
case when t.tgtype & 1 = 1 then 'row' else 'statement' end as level
|
|
130
|
+
from pg_trigger t
|
|
131
|
+
join pg_class c on c.oid = t.tgrelid
|
|
132
|
+
join pg_namespace n on n.oid = c.relnamespace
|
|
133
|
+
join pg_proc p on p.oid = t.tgfoid
|
|
134
|
+
join pg_namespace pn on pn.oid = p.pronamespace
|
|
135
|
+
where not t.tgisinternal and n.nspname = any(${schemas})
|
|
136
|
+
order by 1, 2`;
|
|
137
|
+
const GRANTS = (schemas) => `
|
|
138
|
+
select c.oid::int8 as table_id, coalesce(r.rolname, 'PUBLIC') as role,
|
|
139
|
+
array_agg(distinct acl.privilege_type order by acl.privilege_type)::text[] as privileges
|
|
140
|
+
from pg_class c
|
|
141
|
+
join pg_namespace n on n.oid = c.relnamespace
|
|
142
|
+
cross join lateral aclexplode(coalesce(c.relacl, acldefault('r', c.relowner))) acl
|
|
143
|
+
left join pg_roles r on r.oid = acl.grantee
|
|
144
|
+
where n.nspname = any(${schemas}) and c.relkind in ('r', 'p', 'v', 'm', 'f')
|
|
145
|
+
and (acl.grantee = 0 or r.rolname in ('anon', 'authenticated', 'service_role'))
|
|
146
|
+
and acl.privilege_type <> 'MAINTAIN'
|
|
147
|
+
group by 1, 2
|
|
148
|
+
order by 1, 2`;
|
|
149
|
+
const COLUMN_GRANTS = (schemas) => `
|
|
150
|
+
select c.oid::int8 as table_id, a.attname as column, coalesce(r.rolname, 'PUBLIC') as role,
|
|
151
|
+
array_agg(distinct acl.privilege_type order by acl.privilege_type)::text[] as privileges
|
|
152
|
+
from pg_class c
|
|
153
|
+
join pg_namespace n on n.oid = c.relnamespace
|
|
154
|
+
join pg_attribute a on a.attrelid = c.oid and a.attnum > 0 and not a.attisdropped and a.attacl is not null
|
|
155
|
+
cross join lateral aclexplode(a.attacl) acl
|
|
156
|
+
left join pg_roles r on r.oid = acl.grantee
|
|
157
|
+
where n.nspname = any(${schemas})
|
|
158
|
+
and (acl.grantee = 0 or r.rolname in ('anon', 'authenticated'))
|
|
159
|
+
and acl.privilege_type in ('INSERT', 'UPDATE')
|
|
160
|
+
group by 1, 2, 3
|
|
161
|
+
order by 1, 2, 3`;
|
|
162
|
+
const BUCKETS = `
|
|
163
|
+
select id, public, file_size_limit, allowed_mime_types,
|
|
164
|
+
to_jsonb(b) ? 'versioning_status' as has_versioning,
|
|
165
|
+
to_jsonb(b) -> 'versioning_status' as versioning_status,
|
|
166
|
+
to_jsonb(b) ? 'lifecycle_configuration' as has_lifecycle,
|
|
167
|
+
to_jsonb(b) -> 'lifecycle_configuration' as lifecycle_configuration
|
|
168
|
+
from storage.buckets b
|
|
169
|
+
order by id`;
|
|
170
|
+
const REALTIME = `
|
|
171
|
+
select schemaname || '.' || tablename as name
|
|
172
|
+
from pg_publication_tables
|
|
173
|
+
where pubname = 'supabase_realtime'
|
|
174
|
+
order by 1`;
|
|
175
|
+
const ROLE_SETTINGS = `
|
|
176
|
+
select r.rolname as role, s.setconfig as config
|
|
177
|
+
from pg_catalog.pg_db_role_setting s
|
|
178
|
+
join pg_catalog.pg_roles r on r.oid = s.setrole
|
|
179
|
+
where r.rolname in ('authenticator', 'anon', 'authenticated')
|
|
180
|
+
and s.setdatabase in (0, (select oid from pg_catalog.pg_database where datname = current_database()))
|
|
181
|
+
order by s.setdatabase`;
|
|
182
|
+
const HAS_TABLE = (qualified) => `select to_regclass('${qualified}') is not null as present`;
|
|
183
|
+
const ACTIONS = {
|
|
184
|
+
a: "no action",
|
|
185
|
+
r: "restrict",
|
|
186
|
+
c: "cascade",
|
|
187
|
+
n: "set null",
|
|
188
|
+
d: "set default"
|
|
189
|
+
};
|
|
190
|
+
const VOLATILITY = {
|
|
191
|
+
i: "immutable",
|
|
192
|
+
s: "stable",
|
|
193
|
+
v: "volatile"
|
|
194
|
+
};
|
|
195
|
+
/** `['statement_timeout=5s']` as `{ statement_timeout: '5s' }`. */
|
|
196
|
+
function settingsOf(config) {
|
|
197
|
+
const settings = {};
|
|
198
|
+
for (const entry of config ?? []) {
|
|
199
|
+
const at = entry.indexOf("=");
|
|
200
|
+
if (at > 0) settings[entry.slice(0, at)] = entry.slice(at + 1);
|
|
201
|
+
}
|
|
202
|
+
return settings;
|
|
203
|
+
}
|
|
204
|
+
const functionOf = (row) => ({
|
|
205
|
+
schema: row.schema,
|
|
206
|
+
name: row.name,
|
|
207
|
+
signature: row.signature,
|
|
208
|
+
language: row.language,
|
|
209
|
+
volatility: VOLATILITY[row.volatility],
|
|
210
|
+
securityDefiner: row.security_definer,
|
|
211
|
+
settings: settingsOf(row.config)
|
|
212
|
+
});
|
|
213
|
+
/** The functions behind Auth hooks, in any schema, with their ACLs. */
|
|
214
|
+
async function readHooks(db, targets) {
|
|
215
|
+
if (targets.length === 0) return [];
|
|
216
|
+
const found = await rows(db, HOOKS(literalArray(targets.map((t) => `${t.schema}.${t.name}`))));
|
|
217
|
+
return targets.map((target) => ({
|
|
218
|
+
hook: target.hook,
|
|
219
|
+
schema: target.schema,
|
|
220
|
+
name: target.name,
|
|
221
|
+
functions: found.filter((row) => row.schema === target.schema && row.name === target.name).map((row) => ({
|
|
222
|
+
...functionOf(row),
|
|
223
|
+
execute: row.execute,
|
|
224
|
+
publicExecute: row.public_execute,
|
|
225
|
+
schemaUsage: row.schema_usage,
|
|
226
|
+
...row.source === null ? {} : { source: row.source }
|
|
227
|
+
}))
|
|
228
|
+
}));
|
|
229
|
+
}
|
|
230
|
+
async function rows(db, sql) {
|
|
231
|
+
return (await db.query(sql)).rows;
|
|
232
|
+
}
|
|
233
|
+
/** Rows from a table owned by another Supabase service, if it exists. */
|
|
234
|
+
async function serviceRows(db, qualified, sql) {
|
|
235
|
+
const [probe] = await rows(db, HAS_TABLE(qualified));
|
|
236
|
+
return probe?.present ? rows(db, sql) : [];
|
|
237
|
+
}
|
|
238
|
+
function groupById(list) {
|
|
239
|
+
const map = /* @__PURE__ */ new Map();
|
|
240
|
+
for (const row of list) {
|
|
241
|
+
const id = Number(row.table_id);
|
|
242
|
+
const entry = map.get(id);
|
|
243
|
+
if (entry) entry.push(row);
|
|
244
|
+
else map.set(id, [row]);
|
|
245
|
+
}
|
|
246
|
+
return map;
|
|
247
|
+
}
|
|
248
|
+
/** Reads the extras for `schemas`, with the catalog queries in flight together. */
|
|
249
|
+
async function readExtras(db, schemas, hooks = []) {
|
|
250
|
+
const list = literalArray(schemas);
|
|
251
|
+
const [relations, constraintRows, indexRows, policyRows, triggerRows, grantRows, columnGrantRows, buckets, realtime, functions, roleRows, hookRows] = await Promise.all([
|
|
252
|
+
rows(db, RELATIONS(list)),
|
|
253
|
+
rows(db, CONSTRAINTS(list)),
|
|
254
|
+
rows(db, INDEXES(list)),
|
|
255
|
+
rows(db, POLICIES(list)),
|
|
256
|
+
rows(db, TRIGGERS(list)),
|
|
257
|
+
rows(db, GRANTS(list)),
|
|
258
|
+
rows(db, COLUMN_GRANTS(list)),
|
|
259
|
+
serviceRows(db, "storage.buckets", BUCKETS),
|
|
260
|
+
rows(db, REALTIME),
|
|
261
|
+
rows(db, FUNCTIONS(list)),
|
|
262
|
+
rows(db, ROLE_SETTINGS),
|
|
263
|
+
hooks.length > 0 ? readHooks(db, hooks) : void 0
|
|
264
|
+
]);
|
|
265
|
+
const constraints = groupById(constraintRows);
|
|
266
|
+
const indexes = groupById(indexRows);
|
|
267
|
+
const policies = groupById(policyRows);
|
|
268
|
+
const triggers = groupById(triggerRows);
|
|
269
|
+
const grants = groupById(grantRows);
|
|
270
|
+
const columnGrants = groupById(columnGrantRows);
|
|
271
|
+
const roleSettings = {};
|
|
272
|
+
for (const row of roleRows) Object.assign(roleSettings[row.role] ??= {}, settingsOf(row.config));
|
|
273
|
+
return {
|
|
274
|
+
tables: relations.map((relation) => {
|
|
275
|
+
const id = Number(relation.id);
|
|
276
|
+
const own = constraints.get(id) ?? [];
|
|
277
|
+
const ownIndexes = indexes.get(id) ?? [];
|
|
278
|
+
const uniques = own.filter((con) => con.type === "u").map((con) => ({
|
|
279
|
+
name: con.name,
|
|
280
|
+
columns: con.columns
|
|
281
|
+
}));
|
|
282
|
+
const constraintNames = new Set(own.map((con) => con.name));
|
|
283
|
+
for (const index of ownIndexes) if (index.unique && !index.primary && !index.partial && !constraintNames.has(index.name)) uniques.push({
|
|
284
|
+
name: index.name,
|
|
285
|
+
columns: index.columns
|
|
286
|
+
});
|
|
287
|
+
return {
|
|
288
|
+
id,
|
|
289
|
+
schema: relation.schema,
|
|
290
|
+
name: relation.name,
|
|
291
|
+
primaryKey: own.find((con) => con.type === "p")?.columns ?? [],
|
|
292
|
+
uniques,
|
|
293
|
+
foreignKeys: own.filter((con) => con.type === "f").map((con) => ({
|
|
294
|
+
name: con.name,
|
|
295
|
+
onDelete: ACTIONS[con.on_delete] ?? "no action",
|
|
296
|
+
onUpdate: ACTIONS[con.on_update] ?? "no action"
|
|
297
|
+
})),
|
|
298
|
+
checks: own.filter((con) => con.type === "c").map((con) => ({
|
|
299
|
+
name: con.name,
|
|
300
|
+
definition: con.definition
|
|
301
|
+
})),
|
|
302
|
+
indexes: ownIndexes.map((index) => ({
|
|
303
|
+
name: index.name,
|
|
304
|
+
columns: index.columns,
|
|
305
|
+
unique: index.unique,
|
|
306
|
+
primary: index.primary,
|
|
307
|
+
partial: index.partial,
|
|
308
|
+
method: index.method,
|
|
309
|
+
predicate: index.predicate
|
|
310
|
+
})),
|
|
311
|
+
policies: (policies.get(id) ?? []).map((policy) => ({
|
|
312
|
+
name: policy.name,
|
|
313
|
+
command: policy.command,
|
|
314
|
+
roles: policy.roles,
|
|
315
|
+
permissive: policy.permissive,
|
|
316
|
+
using: policy.using_expr,
|
|
317
|
+
check: policy.check_expr,
|
|
318
|
+
functions: policy.functions ?? []
|
|
319
|
+
})),
|
|
320
|
+
triggers: (triggers.get(id) ?? []).map((trigger) => ({
|
|
321
|
+
name: trigger.name,
|
|
322
|
+
timing: trigger.timing,
|
|
323
|
+
events: trigger.events,
|
|
324
|
+
level: trigger.level,
|
|
325
|
+
function: trigger.function
|
|
326
|
+
})),
|
|
327
|
+
grants: (grants.get(id) ?? []).map((grant) => ({
|
|
328
|
+
role: grant.role,
|
|
329
|
+
privileges: grant.privileges
|
|
330
|
+
})),
|
|
331
|
+
columnGrants: (columnGrants.get(id) ?? []).map((grant) => ({
|
|
332
|
+
column: grant.column,
|
|
333
|
+
role: grant.role,
|
|
334
|
+
privileges: grant.privileges
|
|
335
|
+
})),
|
|
336
|
+
...relation.large ? { large: true } : {}
|
|
337
|
+
};
|
|
338
|
+
}),
|
|
339
|
+
buckets: buckets.map((row) => ({
|
|
340
|
+
id: row.id,
|
|
341
|
+
public: row.public,
|
|
342
|
+
fileSizeLimit: row.file_size_limit === null ? null : Number(row.file_size_limit),
|
|
343
|
+
allowedMimeTypes: row.allowed_mime_types,
|
|
344
|
+
...row.has_versioning ? { versioning: row.versioning_status } : {},
|
|
345
|
+
...row.has_lifecycle ? { lifecycle: row.lifecycle_configuration } : {}
|
|
346
|
+
})),
|
|
347
|
+
realtime: realtime.map((row) => row.name),
|
|
348
|
+
roleSettings,
|
|
349
|
+
functions: functions.map((row) => ({
|
|
350
|
+
...functionOf(row),
|
|
351
|
+
execute: row.execute
|
|
352
|
+
})),
|
|
353
|
+
...hookRows ? { hooks: hookRows } : {}
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
//#endregion
|
|
357
|
+
//#region src/cli/introspect/fingerprint.ts
|
|
358
|
+
/**
|
|
359
|
+
* Catalogs whose rows only change with DDL, grants, comments or settings,
|
|
360
|
+
* with the column that ties a row to a relation or namespace, if any.
|
|
361
|
+
*/
|
|
362
|
+
const CATALOGS = [
|
|
363
|
+
["pg_namespace", "oid"],
|
|
364
|
+
["pg_attribute", "attrelid"],
|
|
365
|
+
["pg_attrdef", "adrelid"],
|
|
366
|
+
["pg_constraint", "conrelid"],
|
|
367
|
+
["pg_index", "indrelid"],
|
|
368
|
+
["pg_inherits"],
|
|
369
|
+
["pg_rewrite"],
|
|
370
|
+
["pg_policy"],
|
|
371
|
+
["pg_trigger", "tgrelid"],
|
|
372
|
+
["pg_proc"],
|
|
373
|
+
["pg_type", "typnamespace"],
|
|
374
|
+
["pg_enum"],
|
|
375
|
+
["pg_description"],
|
|
376
|
+
["pg_db_role_setting"],
|
|
377
|
+
["pg_publication"],
|
|
378
|
+
["pg_publication_rel"],
|
|
379
|
+
["pg_extension"]
|
|
380
|
+
];
|
|
381
|
+
const TEMP_NAMESPACES = String.raw`(select oid from pg_catalog.pg_namespace where nspname like 'pg\_temp\_%' or nspname like 'pg\_toast\_temp\_%')`;
|
|
382
|
+
const TEMP_RELATIONS = `(select oid from pg_catalog.pg_class where relnamespace in ${TEMP_NAMESPACES})`;
|
|
383
|
+
const catalogRows = ([name, column]) => {
|
|
384
|
+
if (column === void 0) return `pg_catalog.${name}`;
|
|
385
|
+
return `(select * from pg_catalog.${name} where ${column} not in ${column === "oid" || column === "typnamespace" ? TEMP_NAMESPACES : TEMP_RELATIONS})`;
|
|
386
|
+
};
|
|
387
|
+
const digest = (from) => `(select md5(coalesce(string_agg(x::text, ',' order by x::text), '')) from ${from} x)`;
|
|
388
|
+
/**
|
|
389
|
+
* One cheap query whose result changes whenever introspection could. pg_class
|
|
390
|
+
* leaves out the planner statistics that VACUUM and ANALYZE rewrite, except
|
|
391
|
+
* the row-count threshold the snapshot records. pg_depend is limited to the
|
|
392
|
+
* policies' rows, which name the tables and functions each policy uses.
|
|
393
|
+
* pg_auth_members decides which privileges a role inherits, so the execute
|
|
394
|
+
* lists change with it. Bucket rows are data, so they are hashed when
|
|
395
|
+
* `storage.buckets` exists.
|
|
396
|
+
*/
|
|
397
|
+
const FINGERPRINT_SQL = `select md5(concat_ws('|',
|
|
398
|
+
${digest(`(select oid, relname, relnamespace, relkind, relacl, reloptions, relrowsecurity, relforcerowsecurity, relreplident, relispartition, reltuples >= ${LARGE_TABLE_ROWS} as large from pg_catalog.pg_class where relnamespace not in ${TEMP_NAMESPACES})`)},
|
|
399
|
+
${CATALOGS.map((entry) => digest(catalogRows(entry))).join(",\n ")},
|
|
400
|
+
${digest(`(select objid, refclassid, refobjid, refobjsubid, deptype from pg_catalog.pg_depend where classid = 'pg_catalog.pg_policy'::regclass)`)},
|
|
401
|
+
(select md5(coalesce(string_agg(rolname, ',' order by rolname), '')) from pg_catalog.pg_roles),
|
|
402
|
+
${digest("pg_catalog.pg_auth_members")},
|
|
403
|
+
case when to_regclass('storage.buckets') is not null
|
|
404
|
+
then md5(query_to_xml('select id, public, file_size_limit, allowed_mime_types, to_jsonb(b) -> ''versioning_status'' as versioning, to_jsonb(b) -> ''lifecycle_configuration'' as lifecycle from storage.buckets b order by id', false, false, '')::text)
|
|
405
|
+
end
|
|
406
|
+
)) as fingerprint`;
|
|
407
|
+
/** A hash of the catalog; equal values mean introspection would return the same snapshot. */
|
|
408
|
+
async function catalogFingerprint(db) {
|
|
409
|
+
const [row] = (await db.query(FINGERPRINT_SQL)).rows;
|
|
410
|
+
const value = row && typeof row === "object" && "fingerprint" in row ? row.fingerprint : void 0;
|
|
411
|
+
if (typeof value !== "string") throw new TypeError("The catalog fingerprint query returned no row.");
|
|
412
|
+
return value;
|
|
413
|
+
}
|
|
414
|
+
//#endregion
|
|
415
|
+
//#region src/cli/introspect/cache.ts
|
|
416
|
+
/** Shared with the splinter download cache. */
|
|
417
|
+
const CACHE_DIR = "node_modules/.cache/better-supabase";
|
|
418
|
+
const sha256 = (text) => createHash("sha256").update(text).digest("hex");
|
|
419
|
+
function isEntry(value) {
|
|
420
|
+
return typeof value === "object" && value !== null && "key" in value && typeof value.key === "string" && "snapshot" in value && typeof value.snapshot === "object";
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Calls `read`, or returns the snapshot cached under `root` when the catalog
|
|
424
|
+
* fingerprint, the `inputs` (schemas and hooks), the CLI version and the
|
|
425
|
+
* typegen version all match. One file per source keeps the cache from growing. A source that
|
|
426
|
+
* cannot report a fingerprint is read every time.
|
|
427
|
+
*/
|
|
428
|
+
async function cachedIntrospect(root, source, inputs, read) {
|
|
429
|
+
const fingerprint = await catalogFingerprint(source.queryable).catch(() => void 0);
|
|
430
|
+
if (fingerprint === void 0) return read();
|
|
431
|
+
const key = sha256(JSON.stringify([
|
|
432
|
+
VERSION,
|
|
433
|
+
TYPEGEN_VERSION,
|
|
434
|
+
source.describe,
|
|
435
|
+
inputs,
|
|
436
|
+
fingerprint
|
|
437
|
+
]));
|
|
438
|
+
const file = resolve(root, CACHE_DIR, `snapshot-${sha256(source.describe).slice(0, 16)}.json`);
|
|
439
|
+
const cached = await readFile(file, "utf8").then((text) => JSON.parse(text)).catch(() => void 0);
|
|
440
|
+
if (isEntry(cached) && cached.key === key) return cached.snapshot;
|
|
441
|
+
const snapshot = await read();
|
|
442
|
+
await writeAtomic(file, JSON.stringify({
|
|
443
|
+
key,
|
|
444
|
+
snapshot
|
|
445
|
+
})).catch(() => void 0);
|
|
446
|
+
return snapshot;
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* Calls `produce`, or returns the `database.types.ts` cached under `root`
|
|
450
|
+
* for the same `inputs`, CLI version and typegen version. Typegen and oxfmt
|
|
451
|
+
* are most of a `gen` run on a large schema, and their output only depends
|
|
452
|
+
* on the inputs.
|
|
453
|
+
*/
|
|
454
|
+
async function cachedDatabaseTypes(root, inputs, produce) {
|
|
455
|
+
const key = sha256(JSON.stringify([
|
|
456
|
+
VERSION,
|
|
457
|
+
TYPEGEN_VERSION,
|
|
458
|
+
inputs
|
|
459
|
+
]));
|
|
460
|
+
const file = resolve(root, CACHE_DIR, "database-types.json");
|
|
461
|
+
const cached = await readFile(file, "utf8").then((text) => JSON.parse(text)).catch(() => void 0);
|
|
462
|
+
if (typeof cached === "object" && cached !== null && "key" in cached && cached.key === key && "contents" in cached && typeof cached.contents === "string") return cached.contents;
|
|
463
|
+
const contents = await produce();
|
|
464
|
+
await writeAtomic(file, JSON.stringify({
|
|
465
|
+
key,
|
|
466
|
+
contents
|
|
467
|
+
})).catch(() => void 0);
|
|
468
|
+
return contents;
|
|
469
|
+
}
|
|
470
|
+
/** Writes through a temporary file, so a concurrent reader never sees half a file. */
|
|
471
|
+
async function writeAtomic(file, contents) {
|
|
472
|
+
await mkdir(dirname(file), { recursive: true });
|
|
473
|
+
const temporary = `${file}.${process.pid}-${crypto.randomUUID()}.tmp`;
|
|
474
|
+
try {
|
|
475
|
+
await writeFile(temporary, contents);
|
|
476
|
+
await rename(temporary, file);
|
|
477
|
+
} catch (cause) {
|
|
478
|
+
await rm(temporary, { force: true });
|
|
479
|
+
throw cause;
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
//#endregion
|
|
483
|
+
export { catalogFingerprint as a, writeAtomic as i, cachedDatabaseTypes as n, readExtras as o, cachedIntrospect as r, CACHE_DIR as t };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { r as defineCliCommand } from "./command-
|
|
2
|
-
import {
|
|
3
|
-
import { i as plain, r as painter } from "./style-
|
|
4
|
-
import { t as fileDiff } from "./diff-
|
|
1
|
+
import { r as defineCliCommand } from "./command-DV-StG1x.js";
|
|
2
|
+
import { a as writeIfChanged } from "./io-CFzJVJ68.js";
|
|
3
|
+
import { i as plain, r as painter } from "./style-CB3vxgh0.js";
|
|
4
|
+
import { t as fileDiff } from "./diff-D1jGdb3Y.js";
|
|
5
5
|
import { extname, join, relative, resolve } from "node:path";
|
|
6
6
|
import { readFile, readdir, stat } from "node:fs/promises";
|
|
7
7
|
import { BLOCK_EVENT_RENAMES } from "better-supabase/events";
|
|
@@ -427,6 +427,11 @@ const GLOBAL_ARGS = {
|
|
|
427
427
|
description: "Config file, relative to --cwd",
|
|
428
428
|
valueHint: "file"
|
|
429
429
|
},
|
|
430
|
+
env: {
|
|
431
|
+
type: "string",
|
|
432
|
+
description: "Config environment to apply ($env.<name> or $<name>). Defaults to $BETTER_SUPABASE_ENV, then ci when $CI is set",
|
|
433
|
+
valueHint: "name"
|
|
434
|
+
},
|
|
430
435
|
json: {
|
|
431
436
|
type: "boolean",
|
|
432
437
|
description: "Print one JSON document on stdout; errors as Problem Details"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as defineCliCommand } from "./command-
|
|
2
|
-
import { t as display } from "./io-
|
|
1
|
+
import { r as defineCliCommand } from "./command-DV-StG1x.js";
|
|
2
|
+
import { t as display } from "./io-CFzJVJ68.js";
|
|
3
3
|
//#region src/cli/commands/config.ts
|
|
4
4
|
/** A connection string with its password replaced, so the printed config is safe to share. */
|
|
5
5
|
function redactUrl(url) {
|
|
@@ -29,17 +29,20 @@ function printableConfig(config) {
|
|
|
29
29
|
const configCommand = defineCliCommand({
|
|
30
30
|
meta: {
|
|
31
31
|
name: "config",
|
|
32
|
-
description: "Prints the resolved config: the file it came from and every option with its default"
|
|
32
|
+
description: "Prints the resolved config: the file it came from, the active environment and every option with its default"
|
|
33
33
|
},
|
|
34
34
|
args: {},
|
|
35
35
|
run: (_args, context) => {
|
|
36
36
|
const config = printableConfig(context.config);
|
|
37
37
|
const file = context.configFile ? display(context.cwd, context.configFile) : null;
|
|
38
|
+
const environment = context.config.environment ?? null;
|
|
39
|
+
const header = file ? `# ${file}` : "# no config file, defaults only";
|
|
38
40
|
return Promise.resolve({
|
|
39
41
|
code: 0,
|
|
40
|
-
output: `${
|
|
42
|
+
output: `${header}${environment ? ` (environment: ${environment})` : ""}\n${JSON.stringify(config, null, 2)}`,
|
|
41
43
|
data: {
|
|
42
44
|
file,
|
|
45
|
+
environment,
|
|
43
46
|
config
|
|
44
47
|
}
|
|
45
48
|
});
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as importExport, c as stdinDatabaseUrl, i as findConfig, n as databaseUrl, o as loadConfig, r as discoverConfig, s as readSupabasePort, t as applyEnvironment } from "./config-M-WzL9O2.js";
|
|
2
|
+
export { applyEnvironment, databaseUrl, discoverConfig, findConfig, importExport, loadConfig, readSupabasePort, stdinDatabaseUrl };
|