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,486 @@
|
|
|
1
|
+
import { r as errorText } from "./errors-CqTLXe2M.js";
|
|
2
|
+
import { t as TYPEGEN_VERSION } from "./typegen-version-DeFbtzYI.js";
|
|
3
|
+
import { t as byCodePoint } from "./compare-BmIWVEui.js";
|
|
4
|
+
import { dirname, join } from "node:path";
|
|
5
|
+
import { readFile } from "node:fs/promises";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
|
+
//#region src/cli/peers.ts
|
|
8
|
+
const VERSION = /^v?(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/;
|
|
9
|
+
function parseVersion(text) {
|
|
10
|
+
const match = VERSION.exec(text.trim());
|
|
11
|
+
if (!match) return void 0;
|
|
12
|
+
return [
|
|
13
|
+
Number(match[1]),
|
|
14
|
+
Number(match[2] ?? 0),
|
|
15
|
+
Number(match[3] ?? 0),
|
|
16
|
+
match[4] === void 0 ? [] : match[4].split(".")
|
|
17
|
+
];
|
|
18
|
+
}
|
|
19
|
+
const NUMERIC = /^\d+$/;
|
|
20
|
+
function compareIdentifiers(a, b) {
|
|
21
|
+
const numeric = NUMERIC.test(a);
|
|
22
|
+
if (numeric !== NUMERIC.test(b)) return numeric ? -1 : 1;
|
|
23
|
+
if (numeric) return Number(a) - Number(b);
|
|
24
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
25
|
+
}
|
|
26
|
+
function compare(a, b) {
|
|
27
|
+
for (const index of [
|
|
28
|
+
0,
|
|
29
|
+
1,
|
|
30
|
+
2
|
|
31
|
+
]) if (a[index] !== b[index]) return a[index] - b[index];
|
|
32
|
+
const [, , , left] = a;
|
|
33
|
+
const [, , , right] = b;
|
|
34
|
+
if (left.length === 0 || right.length === 0) return right.length - left.length;
|
|
35
|
+
for (let index = 0; index < Math.max(left.length, right.length); index++) {
|
|
36
|
+
const x = left[index];
|
|
37
|
+
const y = right[index];
|
|
38
|
+
if (x === void 0) return -1;
|
|
39
|
+
if (y === void 0) return 1;
|
|
40
|
+
const order = compareIdentifiers(x, y);
|
|
41
|
+
if (order !== 0) return order;
|
|
42
|
+
}
|
|
43
|
+
return 0;
|
|
44
|
+
}
|
|
45
|
+
const sameRelease = (a, b) => a[0] === b[0] && a[1] === b[1] && a[2] === b[2];
|
|
46
|
+
const COMPARATOR = /^(>=|<=|>|<|=|\^)?\s*(\S+)$/;
|
|
47
|
+
/** The next version a caret range excludes: `^1.2` is below 2, `^0.4` below 0.5. */
|
|
48
|
+
function caretCeiling([major, minor, patch]) {
|
|
49
|
+
if (major > 0) return [
|
|
50
|
+
major + 1,
|
|
51
|
+
0,
|
|
52
|
+
0,
|
|
53
|
+
[]
|
|
54
|
+
];
|
|
55
|
+
if (minor > 0) return [
|
|
56
|
+
0,
|
|
57
|
+
minor + 1,
|
|
58
|
+
0,
|
|
59
|
+
[]
|
|
60
|
+
];
|
|
61
|
+
return [
|
|
62
|
+
0,
|
|
63
|
+
0,
|
|
64
|
+
patch + 1,
|
|
65
|
+
[]
|
|
66
|
+
];
|
|
67
|
+
}
|
|
68
|
+
function comparators(range) {
|
|
69
|
+
const parts = range.trim().replaceAll(/(>=|<=|>|<|=|\^)\s+/g, "$1").split(/\s+/).filter((part) => part.length > 0);
|
|
70
|
+
const result = [];
|
|
71
|
+
for (const part of parts) {
|
|
72
|
+
const match = COMPARATOR.exec(part);
|
|
73
|
+
const version = match ? parseVersion(match[2]) : void 0;
|
|
74
|
+
if (!match || !version) return void 0;
|
|
75
|
+
const operator = match[1] ?? "=";
|
|
76
|
+
if (operator === "^") result.push({
|
|
77
|
+
operator: ">=",
|
|
78
|
+
version
|
|
79
|
+
}, {
|
|
80
|
+
operator: "<",
|
|
81
|
+
version: caretCeiling(version)
|
|
82
|
+
});
|
|
83
|
+
else result.push({
|
|
84
|
+
operator,
|
|
85
|
+
version
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
function holds(version, { operator, version: bound }) {
|
|
91
|
+
const order = compare(version, bound);
|
|
92
|
+
switch (operator) {
|
|
93
|
+
case ">=": return order >= 0;
|
|
94
|
+
case ">": return order > 0;
|
|
95
|
+
case "<=": return order <= 0;
|
|
96
|
+
case "<": return order < 0;
|
|
97
|
+
case "=": return order === 0;
|
|
98
|
+
default: return operator;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Whether `version` is in `range`, for the ranges better-supabase declares:
|
|
103
|
+
* `||` alternatives of space-separated comparators (`>=`, `>`, `<=`, `<`,
|
|
104
|
+
* exact) and caret ranges. As in npm, a prerelease only matches a set with a
|
|
105
|
+
* comparator on the same release that has a prerelease too. `undefined`
|
|
106
|
+
* when either can't be parsed.
|
|
107
|
+
*/
|
|
108
|
+
function satisfies(version, range) {
|
|
109
|
+
const parsed = parseVersion(version);
|
|
110
|
+
if (!parsed) return void 0;
|
|
111
|
+
const sets = range.split("||").map(comparators);
|
|
112
|
+
if (sets.some((set) => set === void 0)) return void 0;
|
|
113
|
+
return sets.some((set) => set !== void 0 && set.every((comparator) => holds(parsed, comparator)) && (parsed[3].length === 0 || set.some(({ version: bound }) => bound[3].length > 0 && sameRelease(bound, parsed))));
|
|
114
|
+
}
|
|
115
|
+
async function readManifest(path) {
|
|
116
|
+
try {
|
|
117
|
+
const data = JSON.parse(await readFile(path, "utf8"));
|
|
118
|
+
return typeof data === "object" && data !== null ? data : void 0;
|
|
119
|
+
} catch {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/** The version of `name` that `root` resolves, looking in `node_modules` up to the file system root. */
|
|
124
|
+
async function installedVersion(name, root) {
|
|
125
|
+
let dir = root;
|
|
126
|
+
for (;;) {
|
|
127
|
+
const manifest = await readManifest(join(dir, "node_modules", name, "package.json"));
|
|
128
|
+
if (typeof manifest?.["version"] === "string") return manifest["version"];
|
|
129
|
+
const parent = dirname(dir);
|
|
130
|
+
if (parent === dir) return void 0;
|
|
131
|
+
dir = parent;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/** The version in the nearest `package.json` above a resolved module file. */
|
|
135
|
+
async function versionAt(file) {
|
|
136
|
+
let dir = dirname(file);
|
|
137
|
+
for (;;) {
|
|
138
|
+
const manifest = await readManifest(join(dir, "package.json"));
|
|
139
|
+
if (manifest && typeof manifest["version"] === "string") return manifest["version"];
|
|
140
|
+
const parent = dirname(dir);
|
|
141
|
+
if (parent === dir) return void 0;
|
|
142
|
+
dir = parent;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/** The `peerDependencies` of the better-supabase package this CLI ships in. */
|
|
146
|
+
async function declaredPeers() {
|
|
147
|
+
const peers = (await readManifest(fileURLToPath(import.meta.resolve("better-supabase/package.json"))))?.["peerDependencies"];
|
|
148
|
+
if (typeof peers !== "object" || peers === null) return {};
|
|
149
|
+
return Object.fromEntries(Object.entries(peers).filter((entry) => typeof entry[1] === "string"));
|
|
150
|
+
}
|
|
151
|
+
/** Every declared peer with the version `root` resolves. */
|
|
152
|
+
async function peerVersions(root) {
|
|
153
|
+
const peers = await declaredPeers();
|
|
154
|
+
return Promise.all(Object.entries(peers).map(async ([name, range]) => ({
|
|
155
|
+
name,
|
|
156
|
+
range,
|
|
157
|
+
installed: await installedVersion(name, root)
|
|
158
|
+
})));
|
|
159
|
+
}
|
|
160
|
+
//#endregion
|
|
161
|
+
//#region src/cli/introspect/typegen.ts
|
|
162
|
+
const TYPEGEN = "@supabase/postgrest-typegen";
|
|
163
|
+
/** Why a command that reads or generates schema types stops without the peer. */
|
|
164
|
+
const TYPEGEN_MISSING = `better-supabase needs the "${TYPEGEN}" package to read your schema and generate types. Install it: pnpm add -D ${TYPEGEN}@${TYPEGEN_VERSION}`;
|
|
165
|
+
/** Thrown by every function here when the optional peer is not installed. */
|
|
166
|
+
var TypegenMissingError = class extends Error {
|
|
167
|
+
constructor() {
|
|
168
|
+
super(TYPEGEN_MISSING);
|
|
169
|
+
this.name = "TypegenMissingError";
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
const missing = () => {
|
|
173
|
+
throw new TypegenMissingError();
|
|
174
|
+
};
|
|
175
|
+
/**
|
|
176
|
+
* `/generation` is light and its functions are synchronous (`buildModel`
|
|
177
|
+
* calls `tsTypeOf`), so it loads with this module, which the commands that
|
|
178
|
+
* need it import on demand. The package root and `/introspection` build
|
|
179
|
+
* their arktype schemas on import (about 90 ms), so they load when a command
|
|
180
|
+
* reads or validates metadata, not for `--help`.
|
|
181
|
+
*/
|
|
182
|
+
const generation = await import("@supabase/postgrest-typegen/generation").catch(() => void 0);
|
|
183
|
+
const loadGeneration = () => generation ?? missing();
|
|
184
|
+
/** The installed postgrest-typegen release, `undefined` when it is missing. */
|
|
185
|
+
async function typegenVersion() {
|
|
186
|
+
if (generation === void 0) return void 0;
|
|
187
|
+
return versionAt(fileURLToPath(import.meta.resolve(`${TYPEGEN}/generation`)));
|
|
188
|
+
}
|
|
189
|
+
/** Notice for a postgrest-typegen release other than the one this CLI is tested against. */
|
|
190
|
+
function typegenVersionNotice(installed) {
|
|
191
|
+
if (installed === void 0 || installed === "0.4.0") return void 0;
|
|
192
|
+
return `Notice: ${TYPEGEN}@${installed} is installed; this better-supabase release is tested against ${TYPEGEN_VERSION}. database.types.ts can differ from \`supabase gen types\` output until both use the same release. Pin it: pnpm add -D ${TYPEGEN}@${TYPEGEN_VERSION}`;
|
|
193
|
+
}
|
|
194
|
+
const metadataModule = () => import("@supabase/postgrest-typegen").catch(missing);
|
|
195
|
+
const introspectionModule = () => import("@supabase/postgrest-typegen/introspection").catch(missing);
|
|
196
|
+
/** Introspects `schemas`, keeping only the types they reference. */
|
|
197
|
+
async function readGeneratorMetadata(db, schemas) {
|
|
198
|
+
const [metadata, positions] = await Promise.all([introspectionModule().then(({ introspect }) => introspect(db, { includedSchemas: [...schemas] })), db.query(argumentPositionsSql(schemas))]);
|
|
199
|
+
return pruneTypes(orderArgsByPosition(metadata, positions.rows), schemas);
|
|
200
|
+
}
|
|
201
|
+
const sqlLiteral = (value) => `'${value.replaceAll("'", "''")}'`;
|
|
202
|
+
/**
|
|
203
|
+
* The argument order postgrest-typegen loses: its catalog query aggregates
|
|
204
|
+
* the arguments without an order, so two unnamed arguments (pgvector's
|
|
205
|
+
* operators, citext casts) swap places between database resets.
|
|
206
|
+
*/
|
|
207
|
+
function argumentPositionsSql(schemas) {
|
|
208
|
+
return `select p.oid::int8 as id,
|
|
209
|
+
coalesce(p.proallargtypes, p.proargtypes::oid[])::int8[] as types,
|
|
210
|
+
p.proargnames as names
|
|
211
|
+
from pg_catalog.pg_proc p
|
|
212
|
+
join pg_catalog.pg_namespace n on n.oid = p.pronamespace
|
|
213
|
+
where p.prokind = 'f'
|
|
214
|
+
and n.nspname = any (array[${schemas.map(sqlLiteral).join(", ") || "''"}]::text[])`;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Puts every function's arguments back in declaration order, so the sort by
|
|
218
|
+
* name that follows (stable) keeps unnamed arguments by position.
|
|
219
|
+
*/
|
|
220
|
+
function orderArgsByPosition(metadata, rows) {
|
|
221
|
+
const byId = new Map(rows.map((row) => [Number(row.id), row]));
|
|
222
|
+
return {
|
|
223
|
+
...metadata,
|
|
224
|
+
functions: metadata.functions.map((fn) => {
|
|
225
|
+
const row = byId.get(fn.id);
|
|
226
|
+
if (!row?.types || fn.args.length < 2) return fn;
|
|
227
|
+
const pending = [...fn.args];
|
|
228
|
+
const ordered = [];
|
|
229
|
+
row.types.forEach((type, index) => {
|
|
230
|
+
const name = row.names?.[index] ?? "";
|
|
231
|
+
const at = pending.findIndex((arg) => arg.type_id === Number(type) && arg.name === name);
|
|
232
|
+
if (at >= 0) ordered.push(...pending.splice(at, 1));
|
|
233
|
+
});
|
|
234
|
+
return {
|
|
235
|
+
...fn,
|
|
236
|
+
args: [...ordered, ...pending]
|
|
237
|
+
};
|
|
238
|
+
})
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
/** Postgres assigns oids below this to built-in objects; those are stable. */
|
|
242
|
+
const FIRST_NORMAL_OID = 16384;
|
|
243
|
+
/**
|
|
244
|
+
* Replaces the oids of user objects with ids derived from their names and
|
|
245
|
+
* zeroes size estimates, so a snapshot of the same schema is byte-identical
|
|
246
|
+
* after `supabase db reset` or on another machine. Returns the id mapping
|
|
247
|
+
* for data keyed by the old oids.
|
|
248
|
+
*/
|
|
249
|
+
function stabilizeMetadata(metadata) {
|
|
250
|
+
const ids = /* @__PURE__ */ new Map();
|
|
251
|
+
const assign = (base, entries) => {
|
|
252
|
+
[...entries].sort((a, b) => byCodePoint(a.key, b.key)).forEach((entry, index) => {
|
|
253
|
+
if (entry.id >= FIRST_NORMAL_OID) ids.set(entry.id, base + index);
|
|
254
|
+
});
|
|
255
|
+
};
|
|
256
|
+
assign(1e6, [
|
|
257
|
+
...metadata.tables,
|
|
258
|
+
...metadata.foreignTables,
|
|
259
|
+
...metadata.views,
|
|
260
|
+
...metadata.materializedViews
|
|
261
|
+
].map((entry) => ({
|
|
262
|
+
id: entry.id,
|
|
263
|
+
key: `${entry.schema}.${entry.name}`
|
|
264
|
+
})));
|
|
265
|
+
assign(2e6, metadata.types.map((entry) => ({
|
|
266
|
+
id: entry.id,
|
|
267
|
+
key: `${entry.schema}.${entry.name}`
|
|
268
|
+
})));
|
|
269
|
+
assign(3e6, metadata.functions.map((entry) => ({
|
|
270
|
+
id: entry.id,
|
|
271
|
+
key: `${entry.schema}.${entry.name}(${entry.identity_argument_types})`
|
|
272
|
+
})));
|
|
273
|
+
assign(4e6, metadata.schemas.map((entry) => ({
|
|
274
|
+
id: entry.id,
|
|
275
|
+
key: entry.name
|
|
276
|
+
})));
|
|
277
|
+
const map = (id) => ids.get(id) ?? id;
|
|
278
|
+
const mapNullable = (id) => id === null ? null : map(id);
|
|
279
|
+
const stable = {
|
|
280
|
+
...metadata,
|
|
281
|
+
schemas: metadata.schemas.map((entry) => ({
|
|
282
|
+
...entry,
|
|
283
|
+
id: map(entry.id)
|
|
284
|
+
})),
|
|
285
|
+
tables: metadata.tables.map((entry) => ({
|
|
286
|
+
...entry,
|
|
287
|
+
id: map(entry.id),
|
|
288
|
+
bytes: 0,
|
|
289
|
+
size: "0 bytes",
|
|
290
|
+
live_rows_estimate: 0,
|
|
291
|
+
dead_rows_estimate: 0
|
|
292
|
+
})),
|
|
293
|
+
foreignTables: metadata.foreignTables.map((entry) => ({
|
|
294
|
+
...entry,
|
|
295
|
+
id: map(entry.id)
|
|
296
|
+
})),
|
|
297
|
+
views: metadata.views.map((entry) => ({
|
|
298
|
+
...entry,
|
|
299
|
+
id: map(entry.id)
|
|
300
|
+
})),
|
|
301
|
+
materializedViews: metadata.materializedViews.map((entry) => ({
|
|
302
|
+
...entry,
|
|
303
|
+
id: map(entry.id)
|
|
304
|
+
})),
|
|
305
|
+
columns: metadata.columns.map((entry) => ({
|
|
306
|
+
...entry,
|
|
307
|
+
table_id: map(entry.table_id),
|
|
308
|
+
id: `${map(entry.table_id)}.${entry.ordinal_position}`
|
|
309
|
+
})),
|
|
310
|
+
primaryKeys: metadata.primaryKeys.map((entry) => ({
|
|
311
|
+
...entry,
|
|
312
|
+
table_id: map(entry.table_id)
|
|
313
|
+
})),
|
|
314
|
+
functions: metadata.functions.map((entry) => ({
|
|
315
|
+
...entry,
|
|
316
|
+
id: map(entry.id),
|
|
317
|
+
return_type_id: map(entry.return_type_id),
|
|
318
|
+
return_type_relation_id: mapNullable(entry.return_type_relation_id),
|
|
319
|
+
args: entry.args.map((arg) => ({
|
|
320
|
+
...arg,
|
|
321
|
+
type_id: map(arg.type_id)
|
|
322
|
+
}))
|
|
323
|
+
})),
|
|
324
|
+
types: metadata.types.map((entry) => ({
|
|
325
|
+
...entry,
|
|
326
|
+
id: map(entry.id),
|
|
327
|
+
type_relation_id: mapNullable(entry.type_relation_id),
|
|
328
|
+
attributes: entry.attributes.map((attribute) => ({
|
|
329
|
+
...attribute,
|
|
330
|
+
type_id: map(attribute.type_id)
|
|
331
|
+
}))
|
|
332
|
+
}))
|
|
333
|
+
};
|
|
334
|
+
return {
|
|
335
|
+
metadata: loadGeneration().sortGeneratorMetadata(stable),
|
|
336
|
+
ids
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
/** Validates metadata loaded from a snapshot file. */
|
|
340
|
+
async function validateGeneratorMetadata(data) {
|
|
341
|
+
const { parseGeneratorMetadata } = await metadataModule();
|
|
342
|
+
return parseGeneratorMetadata(data);
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* A `GeneratorMetadata` document `gen --metadata` refuses: not JSON, another
|
|
346
|
+
* `GENERATOR_METADATA_VERSION`, or a shape the schema rejects. `gen` exits 65
|
|
347
|
+
* for it, the code `@supabase/typegen` maps to `MetadataRejectedError`.
|
|
348
|
+
*/
|
|
349
|
+
var MetadataRejectedError = class extends Error {
|
|
350
|
+
/** The document's `version`, when it had one. */
|
|
351
|
+
version;
|
|
352
|
+
constructor(message, version) {
|
|
353
|
+
super(message);
|
|
354
|
+
this.name = "MetadataRejectedError";
|
|
355
|
+
this.version = version;
|
|
356
|
+
}
|
|
357
|
+
};
|
|
358
|
+
/**
|
|
359
|
+
* Parses the JSON document an out-of-process generator reads on stdin,
|
|
360
|
+
* checking its `version` against the `GENERATOR_METADATA_VERSION` this
|
|
361
|
+
* release of `@supabase/postgrest-typegen` writes.
|
|
362
|
+
*/
|
|
363
|
+
async function parseMetadataDocument(text) {
|
|
364
|
+
const { GENERATOR_METADATA_VERSION, parseGeneratorMetadata } = await metadataModule();
|
|
365
|
+
let data;
|
|
366
|
+
try {
|
|
367
|
+
data = JSON.parse(text);
|
|
368
|
+
} catch (cause) {
|
|
369
|
+
throw new MetadataRejectedError(text.trim() === "" ? "The GeneratorMetadata document is empty." : `The GeneratorMetadata document is not JSON: ${errorText(cause)}`);
|
|
370
|
+
}
|
|
371
|
+
const version = typeof data === "object" && data !== null && "version" in data ? data.version : void 0;
|
|
372
|
+
if (version !== GENERATOR_METADATA_VERSION) throw new MetadataRejectedError(version === void 0 ? `The document has no "version", so it is not GeneratorMetadata. better-supabase reads version ${GENERATOR_METADATA_VERSION}.` : `The document is GeneratorMetadata version ${JSON.stringify(version)}, and better-supabase reads version ${GENERATOR_METADATA_VERSION} (${TYPEGEN}@${TYPEGEN_VERSION}). Update better-supabase or the tool that wrote the document so both agree.`, version);
|
|
373
|
+
try {
|
|
374
|
+
return parseGeneratorMetadata(data);
|
|
375
|
+
} catch (cause) {
|
|
376
|
+
throw new MetadataRejectedError(errorText(cause), version);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
/** The JSON document out-of-process generators read. */
|
|
380
|
+
async function serializeGenerator(metadata) {
|
|
381
|
+
const { serializeGeneratorMetadata } = await metadataModule();
|
|
382
|
+
return serializeGeneratorMetadata(loadGeneration().sortGeneratorMetadata(metadata));
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Keeps only what belongs to `schemas`, so the Database type matches
|
|
386
|
+
* `supabase gen types --schema ...` for exactly those schemas.
|
|
387
|
+
*/
|
|
388
|
+
function restrictSchemas(metadata, schemas) {
|
|
389
|
+
const keep = new Set(schemas);
|
|
390
|
+
return {
|
|
391
|
+
...metadata,
|
|
392
|
+
schemas: metadata.schemas.filter((schema) => keep.has(schema.name)),
|
|
393
|
+
tables: metadata.tables.filter((table) => keep.has(table.schema)),
|
|
394
|
+
foreignTables: metadata.foreignTables.filter((table) => keep.has(table.schema)),
|
|
395
|
+
views: metadata.views.filter((view) => keep.has(view.schema)),
|
|
396
|
+
materializedViews: metadata.materializedViews.filter((view) => keep.has(view.schema)),
|
|
397
|
+
columns: metadata.columns.filter((column) => keep.has(column.schema)),
|
|
398
|
+
primaryKeys: metadata.primaryKeys.filter((key) => keep.has(key.schema)),
|
|
399
|
+
relationships: metadata.relationships.filter((relationship) => keep.has(relationship.schema)),
|
|
400
|
+
functions: metadata.functions.filter((fn) => keep.has(fn.schema))
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
let oxfmt;
|
|
404
|
+
/** oxfmt is an optional peer, loaded on demand; `undefined` when it is not installed. */
|
|
405
|
+
function loadOxfmt() {
|
|
406
|
+
oxfmt ??= import("oxfmt").catch(() => void 0);
|
|
407
|
+
return oxfmt;
|
|
408
|
+
}
|
|
409
|
+
/** Whether `database.types.ts` comes out formatted. */
|
|
410
|
+
async function oxfmtInstalled() {
|
|
411
|
+
return await loadOxfmt() !== void 0;
|
|
412
|
+
}
|
|
413
|
+
/** Formats like `supabase gen types`, or returns `code` as it is without oxfmt. */
|
|
414
|
+
async function formatTypes(code) {
|
|
415
|
+
const formatter = await loadOxfmt();
|
|
416
|
+
if (!formatter) return code;
|
|
417
|
+
const { code: formatted, errors } = await formatter.format("output.ts", code, {
|
|
418
|
+
semi: false,
|
|
419
|
+
printWidth: 80
|
|
420
|
+
});
|
|
421
|
+
if (errors.length > 0) throw new Error(`oxfmt failed to format database.types.ts: ${errors.map((error) => error.message).join("; ")}`);
|
|
422
|
+
return formatted;
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Renders `database.types.ts` as `supabase gen types` prints it when oxfmt is
|
|
426
|
+
* installed, plus the `ComputedFields` keys Supabase CLI 2.119 doesn't write.
|
|
427
|
+
*/
|
|
428
|
+
function generateDatabaseTypes(metadata, options) {
|
|
429
|
+
const { generateTypescript, sortGeneratorMetadata } = loadGeneration();
|
|
430
|
+
return generateTypescript(sortGeneratorMetadata(restrictSchemas(metadata, options.schemas)), {
|
|
431
|
+
postgrestVersion: options.postgrestVersion,
|
|
432
|
+
detectOneToOneRelationships: true,
|
|
433
|
+
format: formatTypes
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
/**
|
|
437
|
+
* TypeScript type for a column or argument, resolved exactly like the
|
|
438
|
+
* `Database` type does (domains, composites, enums in other schemas).
|
|
439
|
+
*/
|
|
440
|
+
function tsTypeOf(metadata, schema, format, typeSchema) {
|
|
441
|
+
const owner = metadata.schemas.find((entry) => entry.name === schema) ?? {
|
|
442
|
+
id: 0,
|
|
443
|
+
name: schema,
|
|
444
|
+
owner: ""
|
|
445
|
+
};
|
|
446
|
+
return loadGeneration().pgTypeToTsType(owner, format, {
|
|
447
|
+
types: metadata.types,
|
|
448
|
+
schemas: metadata.schemas,
|
|
449
|
+
tables: metadata.tables,
|
|
450
|
+
views: metadata.views,
|
|
451
|
+
foreignTables: metadata.foreignTables,
|
|
452
|
+
materializedViews: metadata.materializedViews
|
|
453
|
+
}, typeSchema);
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* `introspect()` returns every type in the database (hundreds of built-ins).
|
|
457
|
+
* Keep the ones in the read schemas and those referenced by columns,
|
|
458
|
+
* functions and composite attributes; built-in scalars resolve by name.
|
|
459
|
+
*/
|
|
460
|
+
function pruneTypes(metadata, schemas) {
|
|
461
|
+
const byId = new Map(metadata.types.map((type) => [type.id, type]));
|
|
462
|
+
const byName = new Map(metadata.types.map((type) => [`${type.schema}.${type.name}`, type]));
|
|
463
|
+
const keep = /* @__PURE__ */ new Set();
|
|
464
|
+
const visit = (id) => {
|
|
465
|
+
if (id === null || id === void 0 || keep.has(id)) return;
|
|
466
|
+
const type = byId.get(id);
|
|
467
|
+
if (!type) return;
|
|
468
|
+
keep.add(id);
|
|
469
|
+
for (const attribute of type.attributes) visit(attribute.type_id);
|
|
470
|
+
};
|
|
471
|
+
for (const type of metadata.types) if (schemas.includes(type.schema)) visit(type.id);
|
|
472
|
+
for (const column of metadata.columns) {
|
|
473
|
+
visit(byName.get(`${column.type_schema}.${column.format}`)?.id);
|
|
474
|
+
visit(byName.get(`${column.type_schema}.${column.format.replace(/^_/, "")}`)?.id);
|
|
475
|
+
}
|
|
476
|
+
for (const fn of metadata.functions) {
|
|
477
|
+
visit(fn.return_type_id);
|
|
478
|
+
for (const arg of fn.args) visit(arg.type_id);
|
|
479
|
+
}
|
|
480
|
+
return {
|
|
481
|
+
...metadata,
|
|
482
|
+
types: metadata.types.filter((type) => keep.has(type.id))
|
|
483
|
+
};
|
|
484
|
+
}
|
|
485
|
+
//#endregion
|
|
486
|
+
export { parseMetadataDocument as a, serializeGenerator as c, typegenVersion as d, typegenVersionNotice as f, satisfies as h, oxfmtInstalled as i, stabilizeMetadata as l, peerVersions as m, TypegenMissingError as n, readGeneratorMetadata as o, validateGeneratorMetadata as p, generateDatabaseTypes as r, restrictSchemas as s, MetadataRejectedError as t, tsTypeOf as u };
|