better-supabase 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -2
- package/dist/{access-sql-B0dF-SoF.js → access-sql-CrSbK1q-.js} +1 -1
- package/dist/{adapter-B-tL8hqg.js → adapter-CN45ibbV.js} +663 -157
- package/dist/{agents-CVHGd7It.d.ts → agents-BY_LQXtQ.d.ts} +4 -4
- package/dist/{ai-cache-CBWs1W0k.js → ai-cache-Dfgk8nBT.js} +2 -1
- package/dist/{ai-cache-DaDu_G5L.d.ts → ai-cache-DrUMMgp6.d.ts} +4 -4
- package/dist/{ai-chat-B24UI962.js → ai-chat-CVLRWbtS.js} +4 -3
- package/dist/{ai-chat-7amvXjmQ.d.ts → ai-chat-DXkMy74O.d.ts} +5 -5
- package/dist/{ai-files-CSPNswUY.js → ai-files-CioLu5du.js} +5 -4
- package/dist/ai-message-DfaP8sis.js +14 -0
- package/dist/ai-sdk/agents/index.d.ts +4 -4
- package/dist/ai-sdk/batches/index.d.ts +4 -4
- package/dist/ai-sdk/batches/index.js +4 -4
- package/dist/ai-sdk/cache/index.d.ts +2 -2
- package/dist/ai-sdk/cache/index.js +2 -2
- package/dist/ai-sdk/chat/index.d.ts +1 -1
- package/dist/ai-sdk/chat/index.js +8 -20
- package/dist/ai-sdk/embeddings/index.d.ts +2 -2
- package/dist/ai-sdk/files/index.d.ts +3 -3
- package/dist/ai-sdk/files/index.js +4 -4
- package/dist/ai-sdk/index.d.ts +37 -9
- package/dist/ai-sdk/index.js +3 -2
- package/dist/ai-sdk/mcp/index.d.ts +43 -6
- package/dist/ai-sdk/mcp/index.js +36 -7
- package/dist/ai-sdk/memory/index.d.ts +2 -2
- package/dist/ai-sdk/memory/index.js +1 -1
- package/dist/ai-sdk/workflow/index.d.ts +6 -6
- package/dist/ai-sdk/workflow/index.js +13 -24
- package/dist/{ai-tasks-Cd1HMFvB.d.ts → ai-tasks-BRQ6iQLc.d.ts} +4 -4
- package/dist/{announcements-ZRGnScWI.d.ts → announcements-Bouy0Ski.d.ts} +3 -3
- package/dist/{announcements-CiyOs-xP.js → announcements-p_BFofiR.js} +1 -1
- package/dist/api-Dnf2q-Ht.d.ts +370 -0
- package/dist/api-DtHFC037.js +676 -0
- package/dist/{api-keys-CIjghYjV.d.ts → api-keys-C8BlF3L2.d.ts} +4 -4
- package/dist/arazzo/index.d.ts +255 -0
- package/dist/arazzo/index.js +622 -0
- package/dist/{assistant-DwdpDH1q.d.ts → assistant-DBlFDZsi.d.ts} +5 -5
- package/dist/astro/index.d.ts +7 -7
- package/dist/astro/index.js +7 -7
- package/dist/asyncapi/index.d.ts +103 -0
- package/dist/asyncapi/index.js +569 -0
- package/dist/authorizer-ayxUDXXP.js +126 -0
- package/dist/authorizer-eiOjo-3l.d.ts +73 -0
- package/dist/better-result/index.d.ts +118 -0
- package/dist/better-result/index.js +64 -0
- package/dist/{bind-l4kAvYSv.js → bind-ButSzrHe.js} +1 -1
- package/dist/{bind-Bu_ZNa3W.d.ts → bind-CQ5mPyX1.d.ts} +3 -3
- package/dist/{block-events-CrT8r7Fe.js → block-events-DTxU5tfr.js} +18 -3
- package/dist/{block-fields-GFkxl4dP.js → block-fields-CroxUuF2.js} +3 -3
- package/dist/{block-fields-SJ6fEf3o.d.ts → block-fields-D1pfrcIY.d.ts} +2 -2
- package/dist/{block-helpers-CKtbFcRv.d.ts → block-helpers-C0Xj8War.d.ts} +2 -2
- package/dist/{block-helpers-DWHxHsEQ.js → block-helpers-Cy3pB96I.js} +41 -9
- package/dist/{block-hooks-BmjMyXTa.js → block-hooks-BPNMIlLl.js} +3 -3
- package/dist/{block-hooks-plbZ0AbJ.d.ts → block-hooks-DaOVC7SC.d.ts} +3 -3
- package/dist/{block-transport-BLr-ZgLc.js → block-transport-bAKh-dGc.js} +28 -2
- package/dist/{block-transport-DvaoPuZ9.d.ts → block-transport-inD4fFq-.d.ts} +24 -2
- package/dist/blocks/agents/index.d.ts +3 -3
- package/dist/blocks/agents/index.js +5 -4
- package/dist/blocks/ai-cache/index.d.ts +3 -3
- package/dist/blocks/ai-cache/index.js +3 -3
- package/dist/blocks/ai-chat/index.d.ts +9 -4
- package/dist/blocks/ai-chat/index.js +5 -5
- package/dist/blocks/ai-chat/react/index.d.ts +3 -3
- package/dist/blocks/ai-chat/react/index.js +5 -5
- package/dist/blocks/ai-files/index.d.ts +3 -3
- package/dist/blocks/ai-files/index.js +3 -3
- package/dist/blocks/ai-providers/index.d.ts +3 -3
- package/dist/blocks/ai-providers/index.js +8 -7
- package/dist/blocks/ai-tasks/index.d.ts +3 -3
- package/dist/blocks/ai-tasks/index.js +7 -6
- package/dist/blocks/announcements/index.d.ts +3 -3
- package/dist/blocks/announcements/index.js +3 -3
- package/dist/blocks/announcements/react/index.d.ts +3 -3
- package/dist/blocks/announcements/react/index.js +3 -3
- package/dist/blocks/api-keys/index.d.ts +5 -5
- package/dist/blocks/api-keys/index.js +8 -8
- package/dist/blocks/attachments/index.d.ts +12 -8
- package/dist/blocks/attachments/index.js +22 -13
- package/dist/blocks/audit/index.d.ts +21 -10
- package/dist/blocks/audit/index.js +30 -11
- package/dist/blocks/billing/index.d.ts +11 -9
- package/dist/blocks/billing/index.js +15 -15
- package/dist/blocks/comments/index.d.ts +8 -8
- package/dist/blocks/comments/index.js +8 -7
- package/dist/blocks/connectors/index.d.ts +3 -3
- package/dist/blocks/connectors/index.js +7 -6
- package/dist/blocks/data-lifecycle/index.d.ts +12 -8
- package/dist/blocks/data-lifecycle/index.js +13 -8
- package/dist/blocks/entitlements/index.d.ts +3 -3
- package/dist/blocks/entitlements/index.js +1 -1
- package/dist/blocks/flags/index.d.ts +4 -4
- package/dist/blocks/flags/index.js +4 -3
- package/dist/blocks/inbox/index.d.ts +3 -3
- package/dist/blocks/inbox/index.js +4 -5
- package/dist/blocks/inbox/react/index.d.ts +1 -1
- package/dist/blocks/inbox/react/index.js +1 -1
- package/dist/blocks/inbox/react/server.d.ts +1 -1
- package/dist/blocks/index.d.ts +10 -10
- package/dist/blocks/index.js +6 -6
- package/dist/blocks/jobs/index.d.ts +48 -32
- package/dist/blocks/jobs/index.js +44 -287
- package/dist/blocks/knowledge/index.d.ts +3 -3
- package/dist/blocks/knowledge/index.js +3 -3
- package/dist/blocks/memory/index.d.ts +4 -4
- package/dist/blocks/memory/index.js +7 -6
- package/dist/blocks/notifications/index.d.ts +11 -9
- package/dist/blocks/notifications/index.js +20 -25
- package/dist/blocks/notifications/react/index.d.ts +1 -1
- package/dist/blocks/notifications/react/index.js +1 -1
- package/dist/blocks/onboarding/index.d.ts +3 -3
- package/dist/blocks/onboarding/index.js +3 -3
- package/dist/blocks/onboarding/react/index.d.ts +2 -2
- package/dist/blocks/onboarding/react/index.js +2 -2
- package/dist/blocks/onboarding/react/server.d.ts +1 -1
- package/dist/blocks/organizations/index.d.ts +9 -9
- package/dist/blocks/organizations/index.js +11 -18
- package/dist/blocks/outbox/index.d.ts +2 -2
- package/dist/blocks/outbox/index.js +16 -25
- package/dist/blocks/profiles/index.d.ts +7 -7
- package/dist/blocks/profiles/index.js +7 -6
- package/dist/blocks/push/index.d.ts +4 -4
- package/dist/blocks/push/index.js +3 -3
- package/dist/blocks/settings/index.d.ts +4 -4
- package/dist/blocks/settings/index.js +7 -6
- package/dist/blocks/sso/index.d.ts +5 -5
- package/dist/blocks/sso/index.js +6 -5
- package/dist/blocks/usage/index.d.ts +3 -3
- package/dist/blocks/usage/index.js +5 -4
- package/dist/blocks/waitlist/index.d.ts +5 -5
- package/dist/blocks/waitlist/index.js +5 -4
- package/dist/blocks/webhooks/index.d.ts +22 -13
- package/dist/blocks/webhooks/index.js +41 -70
- package/dist/blocks/workflow-builder/index.d.ts +4 -4
- package/dist/blocks/workflow-builder/index.js +3 -3
- package/dist/blocks/workflow-builder/react/index.d.ts +4 -4
- package/dist/blocks/workflow-builder/react/index.js +4 -4
- package/dist/blocks/workflows/index.d.ts +3 -3
- package/dist/blocks/workflows/index.js +3 -3
- package/dist/blocks/workflows/react/index.d.ts +3 -3
- package/dist/blocks/workflows/react/index.js +3 -3
- package/dist/build-hPwk3_X5.js +1296 -0
- package/dist/{build-BXIzE6Xv.js → build-meLuYGri.js} +3 -3
- package/dist/casing-DdFWEtqr.js +16 -0
- package/dist/chat-sdk/index.d.ts +6 -6
- package/dist/chat-sdk/index.js +5 -4
- package/dist/chat-sdk/react/index.d.ts +1 -1
- package/dist/chat-sdk/react/server.d.ts +1 -1
- package/dist/{claims-DDBQT6BK.js → claims-0KZVT804.js} +1 -1
- package/dist/cli/add-1dc5wM5k.js +69 -0
- package/dist/cli/arazzo-1.0-BalU61-_.js +532 -0
- package/dist/cli/arazzo-1.1-Bnfasbun.js +705 -0
- package/dist/cli/asyncapi-3.0.0-C78dBjR6.js +5593 -0
- package/dist/cli/asyncapi-3.1.0-g-7aIfV1.js +5833 -0
- package/dist/cli/bin.js +4 -4
- package/dist/cli/cache-CIfA-jBV.js +483 -0
- package/dist/cli/{codemod-Bl_tQpHn.js → codemod-JVlTQQG2.js} +4 -4
- package/dist/cli/{command-CK14fP91.js → command-DV-StG1x.js} +5 -0
- package/dist/cli/{config-DU7EJImt.js → config-C2Pz2_4A.js} +7 -4
- package/dist/cli/config-DpbF8ML3.js +2 -0
- package/dist/cli/{config-NiPxAmUF.js → config-M-WzL9O2.js} +116 -18
- package/dist/cli/{db-DOBPt660.js → db-BkcfOlyB.js} +2 -1
- package/dist/cli/{diff-SjkO5rNr.js → diff-D1jGdb3Y.js} +1 -1
- package/dist/cli/{doctor-CVdnLahA.js → doctor-VcDtuusV.js} +317 -222
- package/dist/cli/emit-BHHfwUoT.js +1136 -0
- package/dist/cli/{env-qXgyMV6r.js → env-B--LMhEe.js} +13 -10
- package/dist/cli/env-vzBG90Um.js +2 -0
- package/dist/cli/{env-CJLbUVPB.js → env-zHJtMIBo.js} +11 -3
- package/dist/cli/{errors-4v4DTtda.js → errors-CqTLXe2M.js} +18 -2
- package/dist/cli/{fastest-levenshtein-CFN-lNDv.js → fastest-levenshtein-CF7BCi9l.js} +1 -1
- package/dist/cli/files-BVupXPIC.js +34 -0
- package/dist/cli/gen-DmVj3u4L.js +322 -0
- package/dist/cli/{init-Cr6arjXU.js → glue-C1UE8gQN.js} +16 -313
- package/dist/cli/index.d.ts +59 -31
- package/dist/cli/index.js +8 -6
- package/dist/cli/init-CVZ3s5kl.js +258 -0
- package/dist/cli/{introspect-Bzuv1HHj.js → introspect-BToGNfm-.js} +14 -14
- package/dist/cli/{io-DI1mTdSA.js → io-CFzJVJ68.js} +5 -1
- package/dist/cli/{keys-BGCnnb-s.js → keys-CJhtIxJ3.js} +4 -4
- package/dist/cli/metadata-DSRKCaf-.js +133 -0
- package/dist/cli/names-D6LrQnOv.js +6 -0
- package/dist/cli/openapi-3.0-t7xwkuRH.js +928 -0
- package/dist/cli/openapi-3.1-CVze7tBS.js +870 -0
- package/dist/cli/openapi-3.2-CFoMYM01.js +1031 -0
- package/dist/cli/{openapi-BlRJ18s3.js → openapi-DWa4Ir1q.js} +8 -14
- package/dist/cli/prompts-BdeVmVpg.js +2 -0
- package/dist/cli/{prompts-BNcNfAve.js → prompts-DZJB1nTw.js} +6 -6
- package/dist/cli/{rolldown-runtime-BPOCksWG.js → rolldown-runtime-CMFfr-1z.js} +3 -1
- package/dist/cli/run-DA6_lg3w.js +389 -0
- package/dist/cli/run-DuN1MX-7.js +705 -0
- package/dist/cli/scaffold-5DenHSxF.js +292 -0
- package/dist/cli/scaffold-CwQUMFRb.js +2 -0
- package/dist/cli/{seed-DQzqT7LP.js → seed-CzBmrGON.js} +14 -18
- package/dist/cli/seed-DOmit9Hq.js +2 -0
- package/dist/cli/{skills-QQs4q68J.js → skills-CnO8QFS7.js} +7 -6
- package/dist/cli/snapshot-Bstk6ulj.js +287 -0
- package/dist/cli/source-args-BYfq6imV.js +31 -0
- package/dist/cli/spec-CzosTYm3.js +7438 -0
- package/dist/cli/spec-T_0Bcyw7.js +2 -0
- package/dist/cli/{sql-B8csQPyn.js → sql-BKOOQAX3.js} +240 -218
- package/dist/cli/sql-DJrNDxQm.js +3 -0
- package/dist/cli/{style-C0NFdJRL.js → style-CB3vxgh0.js} +3 -3
- package/dist/cli/typegen-Demi5-VQ.js +486 -0
- package/dist/cli/validate-Ca13ktgz.js +7522 -0
- package/dist/cli/{version-Bp4fyubI.js → version-B4k0aUxS.js} +1 -1
- package/dist/client/index.d.ts +4 -3
- package/dist/client/index.js +60 -3
- package/dist/client/native/index.d.ts +3 -3
- package/dist/client/native/index.js +3 -3
- package/dist/{client-CI0Z2zWX.js → client-wxeTQFtB.js} +36 -3
- package/dist/{clone-BfgmLU90.js → clone-dN9XOL1K.js} +9 -1
- package/dist/{cloud-event-BnmD5fb9.js → cloud-event-CTh9Sr5w.js} +16 -2
- package/dist/{cloud-event-C1JCc1bH.d.ts → cloud-event-Dune0KI7.d.ts} +16 -2
- package/dist/{compiler-DY_wkj4R.d.ts → compiler-V1qvcST1.d.ts} +2 -2
- package/dist/{compose-BIBNgAnq.js → compose-BHej1acw.js} +3 -3
- package/dist/{composite-CpHLEo-G.d.ts → composite-CWAJTRBF.d.ts} +6 -6
- package/dist/{composite-C6I8ZyaF.js → composite-zTe0TCqj.js} +4 -4
- package/dist/config/index.d.ts +3 -4
- package/dist/config/index.js +4 -4
- package/dist/config-DlKvtt95.js +540 -0
- package/dist/{connector-Dv8kK0MO.d.ts → connector-CySQEFcW.d.ts} +1 -1
- package/dist/{connectors-CrpknU0P.d.ts → connectors--PGhmiu0.d.ts} +4 -4
- package/dist/{context-BCrWe7ow.d.ts → context-DsV2SueA.d.ts} +11 -2
- package/dist/context-nPDvQ-Zl.js +41 -0
- package/dist/credentials/index.d.ts +5 -5
- package/dist/credentials/index.js +9 -17
- package/dist/{cron-DVPUg5k3.js → cron-D25Ukpxy.js} +1 -1
- package/dist/cron-route-D2AN9SA1.js +24 -0
- package/dist/{csv-DCK-PT1n.js → csv-BZnHA1Py.js} +1 -1
- package/dist/{define-B-TVjC25.js → define-CFQcvM20.js} +263 -229
- package/dist/{define-CJJkkr1-.d.ts → define-DmcfoNXB.d.ts} +136 -111
- package/dist/edge/index.d.ts +66 -13
- package/dist/edge/index.js +65 -39
- package/dist/elysia/index.d.ts +1 -1
- package/dist/elysia/index.js +1 -1
- package/dist/{embeddings-C9KGQnXt.d.ts → embeddings-B4vhS-dY.d.ts} +1 -1
- package/dist/{ended-XjeGQ5XW.d.ts → ended-CcvcRqEd.d.ts} +7 -1
- package/dist/{entitlements-DRl6ZJUm.js → entitlements-BYFf0Cdh.js} +2 -2
- package/dist/{entitlements-BKSVGtrG.d.ts → entitlements-Ds8qoYZ-.d.ts} +1 -1
- package/dist/env/index.d.ts +1 -1
- package/dist/env/index.js +9 -2
- package/dist/{errors-B11Duf73.js → errors-2M6CKMP4.js} +5 -0
- package/dist/{errors-DLjJHPLK.js → errors-rZ7VIqp6.js} +2 -2
- package/dist/{escape-like-ImTK0ps_.d.ts → escape-like-DDWoHzh_.d.ts} +1 -1
- package/dist/eve/index.d.ts +5 -5
- package/dist/eve/index.js +5 -11
- package/dist/{eve-gT2Fpjut.d.ts → eve-CoAIcCkq.d.ts} +2 -2
- package/dist/events/index.d.ts +4 -4
- package/dist/events/index.js +7 -2
- package/dist/{events-DWDhx77e.d.ts → events-D1BOCll8.d.ts} +6 -4
- package/dist/{executor-Bq28caBo.js → executor-B-fD7DLt.js} +52 -35
- package/dist/executor-B_Hfobee.js +162 -0
- package/dist/{executor-BVBFM86G.d.ts → executor-CpxLPCiz.d.ts} +1 -1
- package/dist/{executor-CaWigTyR.d.ts → executor-DfEtf0cq.d.ts} +43 -27
- package/dist/{executor-DvsBbNBS.d.ts → executor-Drzu3dBK.d.ts} +2 -2
- package/dist/{executor-DbvExCFC.d.ts → executor-ngjKL_Pe.d.ts} +2 -2
- package/dist/expo/index.d.ts +4 -4
- package/dist/expo/index.js +6 -6
- package/dist/expo-sqlite/index.d.ts +3 -3
- package/dist/expo-sqlite/index.js +2 -2
- package/dist/extra-CGQ2_q3S.js +10 -0
- package/dist/{field-errors-BFOa7WhB.d.ts → field-errors-DIe9XYWL.d.ts} +17 -7
- package/dist/{field-errors-VF1yb8yI.js → field-errors-DZVRWRkf.js} +1 -1
- package/dist/format-DTXdu8ya.d.ts +70 -0
- package/dist/{framework-KIPvRQJU.d.ts → framework-148t1m3C.d.ts} +5 -5
- package/dist/{framework-BDCpJI7o.js → framework-3ey3QmrO.js} +2 -2
- package/dist/function-contract-BcZenXMO.d.ts +8 -0
- package/dist/{gateway-C1ssRHnf.d.ts → gateway-S9vicgeo.d.ts} +4 -4
- package/dist/{guards-BnzDvFrz.js → guards-6F2bCtQR.js} +3 -1
- package/dist/h3/index.d.ts +1 -1
- package/dist/h3/index.js +1 -1
- package/dist/h3/v1/index.d.ts +1 -1
- package/dist/h3/v1/index.js +1 -1
- package/dist/{message-CaKlqdsX.js → history-GH1HJWQV.js} +65 -13
- package/dist/hmac-DCud0myt.js +22 -0
- package/dist/hono/index.d.ts +19 -14
- package/dist/hono/index.js +21 -16
- package/dist/{hooks-1BTCJsiw.js → hooks-Bhza9Hnr.js} +68 -100
- package/dist/http-sbmBe5d2.js +25 -0
- package/dist/{inbox-i7E1ppo6.d.ts → inbox-Cd1KCEBL.d.ts} +3 -3
- package/dist/index-B72Rvv_j.d.ts +89 -0
- package/dist/{index-DunNRdnT.d.ts → index-BCHR4Ucl.d.ts} +4 -4
- package/dist/{index-CLg87OBW.d.ts → index-BUK7jUzR.d.ts} +6 -0
- package/dist/{config-D44Y7PAv.d.ts → index-Ba1SI-uO.d.ts} +625 -278
- package/dist/{index-D48jVS-N.d.ts → index-BfxOaOYs.d.ts} +4 -5
- package/dist/{index-ClmjK_o-.d.ts → index-CicIyqOe.d.ts} +4 -4
- package/dist/{index-ACiNPN4Z.d.ts → index-D69h4QqD.d.ts} +1 -1
- package/dist/index-DG2SUXDQ.d.ts +58 -0
- package/dist/{index-Bepi-Hgg.d.ts → index-DoNVLHOU.d.ts} +3 -3
- package/dist/{index-CdZKQF98.d.ts → index-R274XFlg.d.ts} +1 -1
- package/dist/{index-CewnYSpv.d.ts → index-_4R4b01v.d.ts} +8 -18
- package/dist/index.d.ts +89 -14
- package/dist/index.js +12 -11
- package/dist/{json-schema-CvER4kgT.js → json-schema-CT4tvrkA.js} +148 -102
- package/dist/{kit-Fm-Fv7q5.js → kit-BhHr9T9v.js} +36 -10
- package/dist/{kit-CkNzZUqv.d.ts → kit-W99LCPBS.d.ts} +13 -7
- package/dist/{knowledge-BXBbT0Tr.d.ts → knowledge-CAReFpRA.d.ts} +5 -5
- package/dist/{knowledge-CDmiMLew.js → knowledge-DnHtb64A.js} +4 -3
- package/dist/list/index.d.ts +1 -2
- package/dist/{list-query-BRt-zDF7.d.ts → list-query-D3JQeEL7.d.ts} +4 -4
- package/dist/mcp/index.d.ts +49 -19
- package/dist/mcp/index.js +158 -94
- package/dist/mcp/sdk/index.d.ts +38 -6
- package/dist/mcp/sdk/index.js +88 -6
- package/dist/{message-CfDoR0Y6.d.ts → message-B0fNJgq8.d.ts} +1 -2
- package/dist/{messages-B9-5887d.js → messages-CJoHHCWT.js} +4 -205
- package/dist/{mfa-Daak8ukG.d.ts → mfa-SZc9YYyb.d.ts} +1 -1
- package/dist/model-OgBxvk3N.d.ts +300 -0
- package/dist/model-messages-Cxw_Up4f.js +206 -0
- package/dist/model-messages-D4GZllOD.d.ts +34 -0
- package/dist/modules-DksjZyMW.js +77 -0
- package/dist/nestjs/index.d.ts +2 -2
- package/dist/nestjs/index.js +1 -1
- package/dist/next/index.d.ts +105 -55
- package/dist/next/index.js +204 -170
- package/dist/node/index.d.ts +2 -2
- package/dist/node/index.js +1 -1
- package/dist/{onboarding-BZGHYJks.d.ts → onboarding-LZvlK1P4.d.ts} +3 -3
- package/dist/openapi/index.d.ts +4 -2
- package/dist/openapi/index.js +21 -343
- package/dist/optional-peer-D1pi-skw.js +24 -0
- package/dist/orpc/index.d.ts +8 -8
- package/dist/orpc/index.js +21 -20
- package/dist/otel/index.d.ts +3 -3
- package/dist/otel/index.js +7 -7
- package/dist/{outbox-Cq7pPYvl.d.ts → outbox-DZfAvfzC.d.ts} +6 -6
- package/dist/overlay/index.d.ts +233 -0
- package/dist/overlay/index.js +554 -0
- package/dist/{plugin-FGY8UhYm.d.ts → plugin-CPK2HsbY.d.ts} +42 -3
- package/dist/plugins/actor/index.d.ts +1 -1
- package/dist/plugins/actor/index.js +1 -1
- package/dist/plugins/rules/index.d.ts +2 -2
- package/dist/plugins/rules/index.js +1 -1
- package/dist/plugins/soft-delete/index.d.ts +3 -3
- package/dist/plugins/soft-delete/index.js +9 -2
- package/dist/plugins/tenant/index.d.ts +7 -2
- package/dist/plugins/tenant/index.js +16 -2
- package/dist/plugins/timestamps/index.d.ts +1 -1
- package/dist/plugins/timestamps/index.js +8 -1
- package/dist/plugins/validation/index.d.ts +2 -2
- package/dist/plugins/validation/index.js +4 -4
- package/dist/{pool-CAu2nLrL.d.ts → pool-gkhbGp2E.d.ts} +2 -2
- package/dist/postgres/index.d.ts +4 -4
- package/dist/postgres/index.js +2 -1
- package/dist/{postgrest-BLVdEnfe.d.ts → postgrest-BUqLag2Q.d.ts} +1 -1
- package/dist/powersync/index.d.ts +5 -5
- package/dist/powersync/index.js +4 -4
- package/dist/powersync/react/index.d.ts +3 -3
- package/dist/powersync/react/index.js +1 -1
- package/dist/{problem-BreOl8b8.js → problem-CJvFeGu7.js} +13 -2
- package/dist/{problem-DD8LZFjc.d.ts → problem-TvGdxO1t.d.ts} +7 -1
- package/dist/{provider-Di3sRutW.js → provider-DxRTex4x.js} +1 -1
- package/dist/{provider-D-UEMvSD.d.ts → provider-ib9wzUDz.d.ts} +2 -2
- package/dist/query/index.d.ts +2 -2
- package/dist/query/index.js +1 -1
- package/dist/{query-BQ-NaZon.js → query-Ctz-qKRx.js} +1 -1
- package/dist/rate-limit-Bw7HgmFj.js +260 -0
- package/dist/react/index.d.ts +9 -9
- package/dist/react/index.js +4 -4
- package/dist/react/native/index.d.ts +1 -1
- package/dist/react/native/index.js +2 -2
- package/dist/react/server.d.ts +10 -10
- package/dist/react/server.js +3 -3
- package/dist/react/session.d.ts +2 -2
- package/dist/{react-F80mF4-t.js → react-Bmpo59D7.js} +4 -4
- package/dist/react-router/index.d.ts +6 -6
- package/dist/react-router/index.js +9 -11
- package/dist/{read-set-DuKWC9Mj.js → read-set-DAeWhqPf.js} +2 -2
- package/dist/realtime/index.d.ts +3 -3
- package/dist/realtime/index.js +30 -36
- package/dist/{refusal-DhSU2Vvr.d.ts → refusal-CFI8-5nf.d.ts} +4 -1
- package/dist/{refusal-CeJWxmkH.js → refusal-K78A1Vmq.js} +5 -5
- package/dist/{resolve-tJZY3FEa.js → resolve-Bvgf3ut_.js} +131 -42
- package/dist/{resolve-ChTYeTEl.d.ts → resolve-MxXVWyhd.d.ts} +12 -8
- package/dist/resource--vTrBe6I.d.ts +103 -0
- package/dist/resource-BqNqlYg9.js +91 -0
- package/dist/resource-DA811u_4.js +463 -0
- package/dist/resource-execute-rbKvuCsY.d.ts +12 -0
- package/dist/resource-schemas-BJ518zFH.js +79 -0
- package/dist/resource-types-CqB6GWGT.d.ts +141 -0
- package/dist/resources-BVYPnuLo.js +56 -0
- package/dist/resources-DZSk8tXJ.d.ts +7 -0
- package/dist/{respond-DprrgyXX.d.ts → respond-Cw-zanCm.d.ts} +3 -3
- package/dist/{respond-BUgsXNgk.js → respond-volM3ByS.js} +4 -4
- package/dist/{result-D7y2fT87.d.ts → result-BchM1XZn.d.ts} +7 -1
- package/dist/{result-DzUbqgdW.js → result-DEqHCMKP.js} +1 -1
- package/dist/server/index.d.ts +81 -19
- package/dist/server/index.js +16 -14
- package/dist/{server-ZSJ9rCcV.d.ts → server-types-CrAmZ8jv.d.ts} +110 -36
- package/dist/{shared-CxWmcyqB.js → shared-DHjhfRdV.js} +2 -15
- package/dist/shared-DTneRoxi.js +14 -0
- package/dist/{sign-in-Cb1mwv6X.js → sign-in-D_yoP0PF.js} +1 -1
- package/dist/signatures-BRS_p3WD.d.ts +34 -0
- package/dist/signatures-DsWv_bYR.js +103 -0
- package/dist/{signers-4y62_VIi.d.ts → signers-cpdmZYrv.d.ts} +1 -1
- package/dist/solid/index.d.ts +9 -18
- package/dist/solid/index.js +2 -2
- package/dist/solid-start/index.d.ts +6 -6
- package/dist/solid-start/index.js +7 -7
- package/dist/spec/index.d.ts +134 -0
- package/dist/spec/index.js +353 -0
- package/dist/{spec-pins-C89s6DyW.d.ts → spec-pins-CwzDY25w.d.ts} +18 -1
- package/dist/{spec-pins--j6mTok4.js → spec-pins-DsLfUH7l.js} +14 -1
- package/dist/sql/index.d.ts +145 -119
- package/dist/sql/index.js +19921 -19798
- package/dist/{executor-De1Of3m3.js → sql-CwuqaQ4Y.js} +34 -169
- package/dist/ssr/index.d.ts +4 -4
- package/dist/ssr/index.js +3 -2
- package/dist/{standard-BK0cqJ7y.js → standard-DkzZUneg.js} +2 -2
- package/dist/{standard-CYsm7xpT.d.ts → standard-lmkbOtPB.d.ts} +1 -1
- package/dist/{stats-D_AD9GGu.js → stats-DhU78Ctf.js} +8 -4
- package/dist/storage/index.d.ts +4 -6
- package/dist/storage/index.js +16 -17
- package/dist/{bucket-Cl46E3jS.d.ts → storage-api-CB7Zl1Ci.d.ts} +243 -8
- package/dist/{store-CGjgWu5n.d.ts → store-DsIYEBnv.d.ts} +1 -1
- package/dist/streams/index.d.ts +4 -4
- package/dist/streams/index.js +5 -4
- package/dist/streams/redis/index.d.ts +1 -1
- package/dist/streams/redis/index.js +5 -11
- package/dist/{stripe-BMj5LtsT.js → stripe-v-Y2lmop.js} +2 -8
- package/dist/supabase-mcp-C6tMoEjn.d.ts +43 -0
- package/dist/supabase-mcp-Cpn5A4i-.js +28 -0
- package/dist/{support-DWwzVf-O.js → support-D1pFFouF.js} +71 -35
- package/dist/{support-view-CVOJJLpc.d.ts → support-view-scqMgtOo.d.ts} +1 -1
- package/dist/svelte/index.d.ts +8 -17
- package/dist/svelte/index.js +2 -2
- package/dist/sveltekit/index.d.ts +7 -7
- package/dist/sveltekit/index.js +10 -12
- package/dist/table-schema-htM_SbCW.js +286 -0
- package/dist/{tags-Cx-LnIQP.d.ts → tags-BO9LjtWG.d.ts} +1 -1
- package/dist/tanstack-db/index.d.ts +2 -2
- package/dist/tanstack-db/supabase/index.d.ts +52 -0
- package/dist/tanstack-db/supabase/index.js +97 -0
- package/dist/tanstack-start/index.d.ts +6 -6
- package/dist/tanstack-start/index.js +8 -12
- package/dist/{tee-CoEppCER.js → tee-Cb98Vn3b.js} +1 -1
- package/dist/{template--jDkl3UP.js → template-lPVh-EwW.js} +11 -2
- package/dist/{temporal-required-BVvW7SYJ.js → temporal-required-BtynQtM-.js} +1 -1
- package/dist/{tenant-BxNFk9bx.d.ts → tenant-CM368LXb.d.ts} +2 -2
- package/dist/testing/index.d.ts +249 -118
- package/dist/testing/index.js +1418 -870
- package/dist/ttl-cache-XzZ-Q2eX.js +29 -0
- package/dist/types-BRTSpOIh.js +5 -0
- package/dist/{types-C05bxW-W.d.ts → types-Bb_4-vdW.d.ts} +4 -4
- package/dist/{types-AYOvcyep.d.ts → types-CD6yCDx3.d.ts} +5 -5
- package/dist/{types-6rocye-y.d.ts → types-CbOUc5IH.d.ts} +4 -4
- package/dist/{types-6BdhkmZe.d.ts → types-CoE5Zwy4.d.ts} +8 -0
- package/dist/{types-DGs5L0VN.d.ts → types-DSJ3-m9X.d.ts} +4 -4
- package/dist/{queue-CLJurhdy.d.ts → types-D__3EN0q.d.ts} +17 -19
- package/dist/{usage-CrvrL2vw.d.ts → usage-D0NNUFfr.d.ts} +3 -3
- package/dist/{vault-wlbBhqm7.d.ts → vault-BpmApxxW.d.ts} +3 -3
- package/dist/vercel-connect/index.d.ts +1 -1
- package/dist/vercel-connect/index.js +5 -11
- package/dist/{verify-DPuWngD4.d.ts → verify-C91Wyp40.d.ts} +5 -35
- package/dist/verify-CJbYfADA.js +124 -0
- package/dist/{version--AolB5ej.js → version-Cq8gfDbd.js} +1 -1
- package/dist/{view-BeFcRV6G.js → view-D5ryq3gz.js} +1 -1
- package/dist/{view-CF7ihnkg.d.ts → view-TpXEUcVN.d.ts} +3 -3
- package/dist/vue/index.d.ts +9 -18
- package/dist/vue/index.js +2 -2
- package/dist/{watch-Xuxrvxq-.js → watch-BcvtAHOd.js} +2 -2
- package/dist/{watch-DI34G86j.d.ts → watch-COzRWvVN.d.ts} +23 -9
- package/dist/{wire-DtZQ4sdE.js → wire-Df3EWkG8.js} +2 -2
- package/dist/{workflow-builder-DJ1oHn8g.js → workflow-builder-CHqHpAVt.js} +6 -5
- package/dist/workflow-sdk/builder/index.d.ts +3 -3
- package/dist/workflow-sdk/index.d.ts +1 -1
- package/dist/workflow-sdk/world/index.d.ts +23 -17
- package/dist/workflow-sdk/world/index.js +59 -76
- package/dist/{workflow-sdk-B3yLD6Br.d.ts → workflow-sdk-DTZyrvNo.d.ts} +3 -3
- package/dist/{workflow-sdk-world-D-prir6O.js → workflow-sdk-world-CMV1ahFW.js} +528 -526
- package/dist/{workflows-B0j9WKPu.d.ts → workflows-CcpCBfIe.d.ts} +3 -3
- package/dist/{workflows-wu1WWBn7.js → workflows-IvxzG2cl.js} +5 -4
- package/package.json +54 -3
- package/schemas/config-v1.json +243 -0
- package/schemas/doctor-report-v1.json +4 -1
- package/schemas/spec-manifest-v1.json +95 -0
- package/skills/better-supabase/SKILL.md +8 -4
- package/skills/better-supabase/references/troubleshooting.md +20 -20
- package/skills/better-supabase-api/references/expo.md +6 -3
- package/skills/better-supabase-api/references/powersync.md +2 -1
- package/skills/better-supabase-auth/SKILL.md +8 -4
- package/dist/cli/config-B9HkL8nF.js +0 -2
- package/dist/cli/gen-AIf4MREI.js +0 -3100
- package/dist/cli/gen-DSrahEdX.js +0 -2
- package/dist/cli/prompts-BTYQGunc.js +0 -2
- package/dist/cli/run-BO052mki.js +0 -361
- package/dist/config-Dn7F5k9A.js +0 -202
- package/dist/history-BZih6SFP.js +0 -64
- package/dist/index-BkWT_uBO.d.ts +0 -51
- package/dist/index-Bxih3l0u.d.ts +0 -81
- package/dist/index-CaxrMD1A.d.ts +0 -1
- package/dist/index-DQh4VCc9.d.ts +0 -98
- package/dist/keys-4MnkWTTh.js +0 -35
- package/dist/messages-DYP0sUTe.d.ts +0 -59
- package/dist/modules-dxrVK3ID.js +0 -228
- package/dist/path-Cv__-OTj.d.ts +0 -17
- package/dist/resource-BsvzCMlX.js +0 -212
- package/dist/resource-IPS5xi9q.d.ts +0 -74
- package/dist/template-CwO38Do8.d.ts +0 -6
- package/dist/verify-DL41hbvY.js +0 -232
- package/dist/cli/{read-sets-CETOSFx4.js → read-sets-DjJrm8Wj.js} +1 -1
|
@@ -0,0 +1,554 @@
|
|
|
1
|
+
import { n as memoized, t as importOptionalPeer } from "../optional-peer-D1pi-skw.js";
|
|
2
|
+
//#region src/overlay/path.ts
|
|
3
|
+
const ESCAPES = {
|
|
4
|
+
b: "\b",
|
|
5
|
+
f: "\f",
|
|
6
|
+
n: "\n",
|
|
7
|
+
r: "\r",
|
|
8
|
+
t: " ",
|
|
9
|
+
"'": "'",
|
|
10
|
+
"\\": "\\",
|
|
11
|
+
"/": "/"
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Parses an RFC 9535 normalized path (§ 2.7), such as `$['paths'][0]`, into
|
|
15
|
+
* its segments. Throws for anything else, because the engine promised one.
|
|
16
|
+
*/
|
|
17
|
+
function parseNormalizedPath(path) {
|
|
18
|
+
if (!path.startsWith("$")) throw new TypeError(`Not a normalized path: ${path}`);
|
|
19
|
+
const segments = [];
|
|
20
|
+
let i = 1;
|
|
21
|
+
while (i < path.length) {
|
|
22
|
+
if (path[i] !== "[") throw new TypeError(`Not a normalized path: ${path}`);
|
|
23
|
+
i++;
|
|
24
|
+
if (path[i] === "'") {
|
|
25
|
+
i++;
|
|
26
|
+
let name = "";
|
|
27
|
+
while (i < path.length && path[i] !== "'") {
|
|
28
|
+
const char = path[i] ?? "";
|
|
29
|
+
if (char !== "\\") {
|
|
30
|
+
name += char;
|
|
31
|
+
i++;
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
const next = path[i + 1] ?? "";
|
|
35
|
+
if (next === "u") {
|
|
36
|
+
name += String.fromCodePoint(Number.parseInt(path.slice(i + 2, i + 6), 16));
|
|
37
|
+
i += 6;
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
const escaped = ESCAPES[next];
|
|
41
|
+
if (escaped === void 0) throw new TypeError(`Not a normalized path: ${path}`);
|
|
42
|
+
name += escaped;
|
|
43
|
+
i += 2;
|
|
44
|
+
}
|
|
45
|
+
if (path[i] !== "'" || path[i + 1] !== "]") throw new TypeError(`Not a normalized path: ${path}`);
|
|
46
|
+
segments.push(name);
|
|
47
|
+
i += 2;
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
const end = path.indexOf("]", i);
|
|
51
|
+
const digits = end === -1 ? "" : path.slice(i, end);
|
|
52
|
+
if (!/^(?:0|[1-9]\d*)$/.test(digits)) throw new TypeError(`Not a normalized path: ${path}`);
|
|
53
|
+
segments.push(Number(digits));
|
|
54
|
+
i = end + 1;
|
|
55
|
+
}
|
|
56
|
+
return segments;
|
|
57
|
+
}
|
|
58
|
+
const SHORTHAND = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
59
|
+
function quote(name) {
|
|
60
|
+
let out = "";
|
|
61
|
+
for (const char of name) {
|
|
62
|
+
const code = char.codePointAt(0) ?? 0;
|
|
63
|
+
if (char === "\\") out += "\\\\";
|
|
64
|
+
else if (char === "'") out += "\\'";
|
|
65
|
+
else if (char === "\b") out += "\\b";
|
|
66
|
+
else if (char === "\f") out += "\\f";
|
|
67
|
+
else if (char === "\n") out += "\\n";
|
|
68
|
+
else if (char === "\r") out += "\\r";
|
|
69
|
+
else if (char === " ") out += "\\t";
|
|
70
|
+
else if (code < 32) out += `\\u${code.toString(16).padStart(4, "0")}`;
|
|
71
|
+
else out += char;
|
|
72
|
+
}
|
|
73
|
+
return `['${out}']`;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Formats segments as a readable RFC 9535 query: member-name shorthand for
|
|
77
|
+
* plain names, bracket notation otherwise (`$.paths['/customers'].get`).
|
|
78
|
+
*/
|
|
79
|
+
function formatPath(segments) {
|
|
80
|
+
let out = "$";
|
|
81
|
+
for (const segment of segments) if (typeof segment === "number") out += `[${segment}]`;
|
|
82
|
+
else if (SHORTHAND.test(segment)) out += `.${segment}`;
|
|
83
|
+
else out += quote(segment);
|
|
84
|
+
return out;
|
|
85
|
+
}
|
|
86
|
+
/** Decodes one RFC 6901 reference token. */
|
|
87
|
+
function decodePointerToken(token) {
|
|
88
|
+
return token.replaceAll("~1", "/").replaceAll("~0", "~");
|
|
89
|
+
}
|
|
90
|
+
//#endregion
|
|
91
|
+
//#region src/overlay/apply.ts
|
|
92
|
+
const ALLOW_EMPTY = "x-better-supabase-allow-empty";
|
|
93
|
+
const REF_PREFIX = "#/components/actions/";
|
|
94
|
+
const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
95
|
+
const isArray = (value) => Array.isArray(value);
|
|
96
|
+
const kindOf$1 = (value) => Array.isArray(value) ? "array" : isObject(value) ? "object" : "primitive";
|
|
97
|
+
function readMinor(version) {
|
|
98
|
+
if (typeof version !== "string") return void 0;
|
|
99
|
+
const match = /^1\.([012])\.\d+$/.exec(version);
|
|
100
|
+
if (!match) return void 0;
|
|
101
|
+
const minor = Number(match[1]);
|
|
102
|
+
return minor === 0 || minor === 1 || minor === 2 ? minor : void 0;
|
|
103
|
+
}
|
|
104
|
+
/** An Action Object needs a string target; the other fields are read defensively. */
|
|
105
|
+
const isAction = (entry) => typeof entry["target"] === "string";
|
|
106
|
+
function report(reporter, severity, code, message, pointer) {
|
|
107
|
+
reporter.diagnostics.push({
|
|
108
|
+
code,
|
|
109
|
+
severity,
|
|
110
|
+
message,
|
|
111
|
+
pointer: `${reporter.prefix}${pointer}`
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Expands a Reusable Action Reference (Overlay 1.2 § 4.5.6) into a plain
|
|
116
|
+
* action: the referenced `fields`, then the reference's own fields on top.
|
|
117
|
+
*/
|
|
118
|
+
function resolveReference(overlay, entry, pointer, reporter) {
|
|
119
|
+
const { $ref: ref, ...own } = entry;
|
|
120
|
+
if (typeof ref !== "string" || !ref.startsWith(REF_PREFIX)) {
|
|
121
|
+
report(reporter, "error", "overlay-ref-unresolved", `The reusable action reference ${String(ref)} does not point under ${REF_PREFIX}`, pointer);
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const name = decodePointerToken(ref.slice(21));
|
|
125
|
+
const components = "components" in overlay ? overlay.components : void 0;
|
|
126
|
+
const reusables = isObject(components) ? components["actions"] : void 0;
|
|
127
|
+
const reusable = isObject(reusables) && Object.hasOwn(reusables, name) ? reusables[name] : void 0;
|
|
128
|
+
if (!isObject(reusable)) {
|
|
129
|
+
report(reporter, "error", "overlay-ref-unresolved", `The reusable action ${ref} does not exist in components.actions`, pointer);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const fields = isObject(reusable["fields"]) ? { ...reusable["fields"] } : {};
|
|
133
|
+
if ("target" in fields) {
|
|
134
|
+
report(reporter, "warning", "overlay-invalid-action", `The reusable action ${ref} sets target, which only the reference may set; it is ignored`, pointer);
|
|
135
|
+
delete fields["target"];
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
...fields,
|
|
139
|
+
...own
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function resolve(document, segments) {
|
|
143
|
+
let parent = void 0;
|
|
144
|
+
let key = void 0;
|
|
145
|
+
let value = document;
|
|
146
|
+
for (const segment of segments) {
|
|
147
|
+
parent = value;
|
|
148
|
+
key = segment;
|
|
149
|
+
value = typeof segment === "number" ? Array.isArray(value) ? value[segment] : void 0 : isObject(value) ? value[segment] : void 0;
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
parent,
|
|
153
|
+
key,
|
|
154
|
+
value
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
const escapeToken = (segment) => `/${String(segment).replaceAll("~", "~0").replaceAll("/", "~1")}`;
|
|
158
|
+
const toPointer = (segments) => segments.map(escapeToken).join("");
|
|
159
|
+
/** Merges `source` into `target` recursively (§ 4.5.4.1) and collects the conflicting pointers. */
|
|
160
|
+
function mergeInto(target, source, at, conflicts) {
|
|
161
|
+
for (const [key, value] of Object.entries(source)) {
|
|
162
|
+
if (!Object.hasOwn(target, key)) {
|
|
163
|
+
target[key] = value;
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
const current = target[key];
|
|
167
|
+
if (kindOf$1(current) !== kindOf$1(value)) {
|
|
168
|
+
conflicts.push(`${at}${escapeToken(key)}`);
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
if (isObject(current) && isObject(value)) mergeInto(current, value, `${at}${escapeToken(key)}`, conflicts);
|
|
172
|
+
else if (isArray(current) && isArray(value)) current.push(...value);
|
|
173
|
+
else target[key] = value;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
function select(state, expression, options, reporter, pointer, field) {
|
|
177
|
+
try {
|
|
178
|
+
return options.jsonpath.paths(state.document, expression).map(parseNormalizedPath);
|
|
179
|
+
} catch (error) {
|
|
180
|
+
report(reporter, "error", "overlay-invalid-target", `The ${field} ${JSON.stringify(expression)} is not a valid RFC 9535 query: ${error instanceof Error ? error.message : String(error)}`, pointer);
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
function removeNodes(state, targets, reporter, pointer) {
|
|
185
|
+
const fromArrays = /* @__PURE__ */ new Map();
|
|
186
|
+
for (const segments of targets) {
|
|
187
|
+
const { parent, key } = resolve(state.document, segments);
|
|
188
|
+
if (key === void 0) {
|
|
189
|
+
report(reporter, "error", "overlay-invalid-action", "The action removes the document root, which is not allowed", pointer);
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
if (Array.isArray(parent) && typeof key === "number") {
|
|
193
|
+
const indexes = fromArrays.get(parent) ?? [];
|
|
194
|
+
indexes.push(key);
|
|
195
|
+
fromArrays.set(parent, indexes);
|
|
196
|
+
} else if (isObject(parent) && typeof key === "string") delete parent[key];
|
|
197
|
+
}
|
|
198
|
+
for (const [array, indexes] of fromArrays) for (const index of [...new Set(indexes)].toSorted((a, b) => b - a)) array.splice(index, 1);
|
|
199
|
+
}
|
|
200
|
+
function updateNodes(state, targets, value, reporter, pointer) {
|
|
201
|
+
const nodes = targets.map((segments) => ({
|
|
202
|
+
segments,
|
|
203
|
+
...resolve(state.document, segments)
|
|
204
|
+
}));
|
|
205
|
+
const kinds = new Set(nodes.map((node) => kindOf$1(node.value)));
|
|
206
|
+
if (kinds.size > 1) {
|
|
207
|
+
report(reporter, "error", "overlay-mixed-targets", `The target selects ${[...kinds].join(" and ")} nodes; an update needs nodes of one kind`, pointer);
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
const valueKind = kindOf$1(value);
|
|
211
|
+
for (const node of nodes) {
|
|
212
|
+
const copy = structuredClone(value);
|
|
213
|
+
const at = toPointer(node.segments) || "the root";
|
|
214
|
+
if (isArray(node.value)) {
|
|
215
|
+
if (isArray(copy)) node.value.push(...copy);
|
|
216
|
+
else node.value.push(copy);
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
219
|
+
if (isObject(node.value)) {
|
|
220
|
+
if (!isObject(copy)) {
|
|
221
|
+
report(reporter, "error", "overlay-merge-conflict", `Cannot merge a${valueKind === "array" ? "n array" : " primitive"} into the object at ${at}`, pointer);
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
const conflicts = [];
|
|
225
|
+
mergeInto(node.value, copy, toPointer(node.segments), conflicts);
|
|
226
|
+
for (const conflict of conflicts) report(reporter, "error", "overlay-merge-conflict", `Cannot merge values of different kinds at ${conflict}`, pointer);
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
if (valueKind !== "primitive") {
|
|
230
|
+
report(reporter, "error", "overlay-merge-conflict", `Cannot replace the primitive at ${at} with a${valueKind === "array" ? "n array" : "n object"}`, pointer);
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
if (node.key === void 0) state.document = copy;
|
|
234
|
+
else if (Array.isArray(node.parent) && typeof node.key === "number") node.parent[node.key] = copy;
|
|
235
|
+
else if (isObject(node.parent) && typeof node.key === "string") node.parent[node.key] = copy;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
function runAction(state, action, minor, options, reporter, pointer) {
|
|
239
|
+
if (action.remove !== true && action.update === void 0 && action.copy !== void 0 && minor === 0) {
|
|
240
|
+
report(reporter, "error", "overlay-version-feature", "copy needs Overlay 1.1 or later; the action is skipped", pointer);
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
const targets = select(state, action.target, options, reporter, pointer, "target");
|
|
244
|
+
if (!targets) return;
|
|
245
|
+
if (targets.length === 0) {
|
|
246
|
+
if (action[ALLOW_EMPTY] !== true && options.allowEmpty !== true) report(reporter, "error", "overlay-no-match", `The target ${action.target} selects no nodes; set ${ALLOW_EMPTY}: true on the action if that is expected`, pointer);
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
if (action.remove === true) {
|
|
250
|
+
removeNodes(state, targets, reporter, pointer);
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
if (action.update !== void 0) {
|
|
254
|
+
updateNodes(state, targets, action.update, reporter, pointer);
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
if (typeof action.copy === "string") {
|
|
258
|
+
const sources = select(state, action.copy, options, reporter, pointer, "copy source");
|
|
259
|
+
if (!sources) return;
|
|
260
|
+
const [source] = sources;
|
|
261
|
+
if (sources.length !== 1 || !source) {
|
|
262
|
+
report(reporter, "error", "overlay-copy-source", `The copy source ${action.copy} selects ${sources.length} nodes; it must select exactly one`, pointer);
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
updateNodes(state, targets, resolve(state.document, source).value, reporter, pointer);
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
report(reporter, "warning", "overlay-empty-action", "The action has no update, copy or remove, so it changes nothing", pointer);
|
|
269
|
+
}
|
|
270
|
+
/** Applies one overlay to `state.document` in place. */
|
|
271
|
+
function applyInPlace(state, overlay, options, reporter) {
|
|
272
|
+
const minor = readMinor(overlay.overlay);
|
|
273
|
+
if (minor === void 0) {
|
|
274
|
+
report(reporter, "error", "overlay-version-unsupported", `Overlay version ${overlay.overlay} is not supported; use 1.0.x, 1.1.x or 1.2.x`, "/overlay");
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
if (!Array.isArray(overlay.actions)) {
|
|
278
|
+
report(reporter, "error", "overlay-invalid-action", "The overlay has no actions array", "/actions");
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
const actions = overlay.actions;
|
|
282
|
+
for (const [index, entry] of actions.entries()) {
|
|
283
|
+
const pointer = `/actions/${index}`;
|
|
284
|
+
if (!isObject(entry)) {
|
|
285
|
+
report(reporter, "error", "overlay-invalid-action", "The action is not an object", pointer);
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
if ("$ref" in entry && minor < 2) report(reporter, "warning", "overlay-version-feature", `Reusable actions need Overlay 1.2; the reference is expanded for this ${overlay.overlay} overlay`, pointer);
|
|
289
|
+
const action = "$ref" in entry ? resolveReference(overlay, entry, pointer, reporter) : entry;
|
|
290
|
+
if (!action) continue;
|
|
291
|
+
if (!isAction(action)) {
|
|
292
|
+
report(reporter, "error", "overlay-invalid-action", "The action has no target", pointer);
|
|
293
|
+
continue;
|
|
294
|
+
}
|
|
295
|
+
runAction(state, action, minor, options, reporter, pointer);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Applies an Overlay 1.0, 1.1 or 1.2 document to `document` and returns a
|
|
300
|
+
* new document. The input is cloned once with `structuredClone` and never
|
|
301
|
+
* changed; each target runs once through `options.jsonpath`.
|
|
302
|
+
*
|
|
303
|
+
* Actions run in order, each on the result of the previous one (Overlay
|
|
304
|
+
* § 4.5.1.1). `update` merges objects, concatenates or appends to arrays and
|
|
305
|
+
* replaces primitives; `remove` deletes the selected nodes; `copy` (1.1 and
|
|
306
|
+
* later) uses the value of the single node its query selects. Reusable action
|
|
307
|
+
* references (1.2) are expanded, with a warning when the overlay declares
|
|
308
|
+
* 1.0 or 1.1.
|
|
309
|
+
*
|
|
310
|
+
* Problems never throw: they are diagnostics, and the failing action is
|
|
311
|
+
* skipped. A target that selects nothing reports `overlay-no-match` as an
|
|
312
|
+
* error unless the action sets `x-better-supabase-allow-empty: true` or the
|
|
313
|
+
* options set `allowEmpty`. The other codes are `overlay-invalid-target`,
|
|
314
|
+
* `overlay-invalid-action`, `overlay-mixed-targets`,
|
|
315
|
+
* `overlay-merge-conflict`, `overlay-copy-source`, `overlay-ref-unresolved`,
|
|
316
|
+
* `overlay-version-feature`, `overlay-version-unsupported` and
|
|
317
|
+
* `overlay-empty-action`.
|
|
318
|
+
*
|
|
319
|
+
* The result keeps the input's type; an overlay that changes the shape
|
|
320
|
+
* needs the caller to narrow it.
|
|
321
|
+
*
|
|
322
|
+
* @example
|
|
323
|
+
* const jsonpath = await loadJsonPath();
|
|
324
|
+
* const { document, diagnostics } = applyOverlay(openapi, overlay, { jsonpath });
|
|
325
|
+
*/
|
|
326
|
+
function applyOverlay(document, overlay, options) {
|
|
327
|
+
return run(document, [overlay], options, () => "");
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Applies overlays in order, each to the result of the previous one, with a
|
|
331
|
+
* single clone of the input. Diagnostic pointers start with the overlay's
|
|
332
|
+
* index (`/1/actions/0`).
|
|
333
|
+
*/
|
|
334
|
+
function applyOverlays(document, overlays, options) {
|
|
335
|
+
return run(document, overlays, options, (index) => `/${index}`);
|
|
336
|
+
}
|
|
337
|
+
function run(document, overlays, options, prefix) {
|
|
338
|
+
const state = { document: structuredClone(document) };
|
|
339
|
+
const diagnostics = [];
|
|
340
|
+
for (const [index, overlay] of overlays.entries()) applyInPlace(state, overlay, options, {
|
|
341
|
+
prefix: prefix(index),
|
|
342
|
+
diagnostics
|
|
343
|
+
});
|
|
344
|
+
return {
|
|
345
|
+
document: state.document,
|
|
346
|
+
diagnostics
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
//#endregion
|
|
350
|
+
//#region src/overlay/define.ts
|
|
351
|
+
const isReference = (action) => "$ref" in action;
|
|
352
|
+
const isPlain = (action) => !("$ref" in action);
|
|
353
|
+
function defineOverlay(input) {
|
|
354
|
+
const { overlay: declared, ...rest } = input;
|
|
355
|
+
if (input.actions.length === 0) throw new TypeError("defineOverlay: an overlay needs at least one action");
|
|
356
|
+
const references = input.actions.filter(isReference);
|
|
357
|
+
const uses12 = input.components !== void 0 || input.$self !== void 0 || references.length > 0;
|
|
358
|
+
const version = declared ?? (uses12 ? "1.2.0" : "1.1.0");
|
|
359
|
+
if (version !== "1.2.0" && uses12) throw new TypeError(`defineOverlay: reusable actions, components and $self need overlay 1.2.0, not ${version}`);
|
|
360
|
+
if (version === "1.0.0" && input.actions.some((action) => !isReference(action) && action.copy !== void 0)) throw new TypeError("defineOverlay: copy needs overlay 1.1.0 or later");
|
|
361
|
+
for (const field of ["extends", "$self"]) if (input[field]?.includes("#")) throw new TypeError(`defineOverlay: ${field} must not contain a fragment`);
|
|
362
|
+
const reusables = input.components?.actions ?? {};
|
|
363
|
+
for (const reference of references) {
|
|
364
|
+
const name = decodePointerToken(reference.$ref.slice(21));
|
|
365
|
+
if (!Object.hasOwn(reusables, name)) throw new TypeError(`defineOverlay: ${reference.$ref} does not exist in components.actions`);
|
|
366
|
+
}
|
|
367
|
+
switch (version) {
|
|
368
|
+
case "1.2.0": return {
|
|
369
|
+
overlay: version,
|
|
370
|
+
...rest
|
|
371
|
+
};
|
|
372
|
+
case "1.1.0":
|
|
373
|
+
case "1.0.0": return {
|
|
374
|
+
overlay: version,
|
|
375
|
+
...rest,
|
|
376
|
+
actions: input.actions.filter(isPlain)
|
|
377
|
+
};
|
|
378
|
+
default: throw new TypeError(`defineOverlay: unsupported overlay ${String(version)}`);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Turns an overlay into an equivalent Overlay 1.1 document for tools that do
|
|
383
|
+
* not read 1.2: every reusable action reference becomes a plain action, and
|
|
384
|
+
* `$self` and `components` are dropped. A reference that does not resolve is
|
|
385
|
+
* left out and reported as `overlay-ref-unresolved`.
|
|
386
|
+
*/
|
|
387
|
+
function expandReusableActions(overlay) {
|
|
388
|
+
const reporter = {
|
|
389
|
+
prefix: "",
|
|
390
|
+
diagnostics: []
|
|
391
|
+
};
|
|
392
|
+
const actions = [];
|
|
393
|
+
const entries = overlay.actions;
|
|
394
|
+
for (const [index, entry] of entries.entries()) {
|
|
395
|
+
if (!isObject(entry)) continue;
|
|
396
|
+
const action = "$ref" in entry ? resolveReference(overlay, entry, `/actions/${index}`, reporter) : entry;
|
|
397
|
+
if (action && isAction(action)) actions.push(action);
|
|
398
|
+
}
|
|
399
|
+
const extensions = Object.fromEntries(Object.entries(overlay).filter(([key]) => key.startsWith("x-")));
|
|
400
|
+
return {
|
|
401
|
+
overlay: {
|
|
402
|
+
overlay: "1.1.0",
|
|
403
|
+
info: overlay.info,
|
|
404
|
+
...overlay.extends === void 0 ? {} : { extends: overlay.extends },
|
|
405
|
+
actions,
|
|
406
|
+
...extensions
|
|
407
|
+
},
|
|
408
|
+
diagnostics: reporter.diagnostics
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
//#endregion
|
|
412
|
+
//#region src/overlay/diff.ts
|
|
413
|
+
const kindOf = (value) => Array.isArray(value) ? "array" : isObject(value) ? "object" : "primitive";
|
|
414
|
+
function equal(a, b) {
|
|
415
|
+
if (a === b) return true;
|
|
416
|
+
if (Array.isArray(a) && Array.isArray(b)) return a.length === b.length && a.every((item, i) => equal(item, b[i]));
|
|
417
|
+
if (isObject(a) && isObject(b)) {
|
|
418
|
+
const keys = Object.keys(a);
|
|
419
|
+
return keys.length === Object.keys(b).length && keys.every((key) => Object.hasOwn(b, key) && equal(a[key], b[key]));
|
|
420
|
+
}
|
|
421
|
+
return false;
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Appends the actions that turn the array `a` into `b`, or returns `false`
|
|
425
|
+
* when the change needs the array replaced as a whole.
|
|
426
|
+
*/
|
|
427
|
+
function diffArray(path, a, b, ctx) {
|
|
428
|
+
if (b.length >= a.length && a.every((item, i) => equal(item, b[i]))) {
|
|
429
|
+
if (b.length > a.length) ctx.actions.push({
|
|
430
|
+
target: formatPath(path),
|
|
431
|
+
update: b.slice(a.length)
|
|
432
|
+
});
|
|
433
|
+
return true;
|
|
434
|
+
}
|
|
435
|
+
if (a.length !== b.length) return false;
|
|
436
|
+
const pending = [];
|
|
437
|
+
for (const [i, item] of a.entries()) {
|
|
438
|
+
const next = b[i];
|
|
439
|
+
if (equal(item, next)) continue;
|
|
440
|
+
if (!isObject(item) || !isObject(next)) return false;
|
|
441
|
+
diffObject([...path, i], item, next, {
|
|
442
|
+
...ctx,
|
|
443
|
+
actions: pending
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
ctx.actions.push(...pending);
|
|
447
|
+
return true;
|
|
448
|
+
}
|
|
449
|
+
function diffObject(path, a, b, ctx) {
|
|
450
|
+
const removals = [];
|
|
451
|
+
const added = {};
|
|
452
|
+
const nested = [];
|
|
453
|
+
const replace = (key, value) => {
|
|
454
|
+
removals.push({
|
|
455
|
+
target: formatPath([...path, key]),
|
|
456
|
+
remove: true
|
|
457
|
+
});
|
|
458
|
+
added[key] = value;
|
|
459
|
+
};
|
|
460
|
+
for (const key of Object.keys(a)) if (!Object.hasOwn(b, key)) removals.push({
|
|
461
|
+
target: formatPath([...path, key]),
|
|
462
|
+
remove: true
|
|
463
|
+
});
|
|
464
|
+
for (const [key, next] of Object.entries(b)) {
|
|
465
|
+
if (!Object.hasOwn(a, key)) {
|
|
466
|
+
added[key] = next;
|
|
467
|
+
continue;
|
|
468
|
+
}
|
|
469
|
+
const current = a[key];
|
|
470
|
+
if (equal(current, next)) continue;
|
|
471
|
+
if (kindOf(current) !== kindOf(next)) replace(key, next);
|
|
472
|
+
else if (isObject(current) && isObject(next)) diffObject([...path, key], current, next, {
|
|
473
|
+
...ctx,
|
|
474
|
+
actions: nested
|
|
475
|
+
});
|
|
476
|
+
else if (Array.isArray(current) && Array.isArray(next)) {
|
|
477
|
+
if (!diffArray([...path, key], current, next, {
|
|
478
|
+
...ctx,
|
|
479
|
+
actions: nested
|
|
480
|
+
})) replace(key, next);
|
|
481
|
+
} else if (ctx.replacePrimitives) nested.push({
|
|
482
|
+
target: formatPath([...path, key]),
|
|
483
|
+
update: next
|
|
484
|
+
});
|
|
485
|
+
else replace(key, next);
|
|
486
|
+
}
|
|
487
|
+
ctx.actions.push(...removals);
|
|
488
|
+
if (Object.keys(added).length > 0) ctx.actions.push({
|
|
489
|
+
target: formatPath(path),
|
|
490
|
+
update: added
|
|
491
|
+
});
|
|
492
|
+
ctx.actions.push(...nested);
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Writes the Overlay that turns `base` into `enriched`, so other tools can
|
|
496
|
+
* reproduce what hooks and transforms changed. Targets use stable keys
|
|
497
|
+
* (`$.paths['/customers'].get`); array indexes appear only inside arrays of
|
|
498
|
+
* the same length.
|
|
499
|
+
*
|
|
500
|
+
* A deleted key becomes a `remove` action; added keys become one `update` on
|
|
501
|
+
* their parent; a changed primitive becomes an `update` on it (1.1 and
|
|
502
|
+
* later) or a `remove` and re-add (1.0). An array that only grew gets its new
|
|
503
|
+
* items appended; any other array change replaces the array. Applying the
|
|
504
|
+
* result to `base` gives a document equal to `enriched`, though replaced
|
|
505
|
+
* keys move to the end of their object.
|
|
506
|
+
*
|
|
507
|
+
* Throws a `TypeError` when the roots are not both objects, or when the two
|
|
508
|
+
* documents are equal (an overlay needs at least one action).
|
|
509
|
+
*/
|
|
510
|
+
function overlayFromDiff(base, enriched, options = {}) {
|
|
511
|
+
if (!isObject(base) || !isObject(enriched)) throw new TypeError("overlayFromDiff: both documents must be objects");
|
|
512
|
+
const version = options.version ?? "1.1.0";
|
|
513
|
+
const actions = [];
|
|
514
|
+
diffObject([], base, enriched, {
|
|
515
|
+
replacePrimitives: version !== "1.0.0",
|
|
516
|
+
actions
|
|
517
|
+
});
|
|
518
|
+
if (actions.length === 0) throw new TypeError("overlayFromDiff: the documents are equal, so there is nothing to write");
|
|
519
|
+
return {
|
|
520
|
+
overlay: version,
|
|
521
|
+
info: options.info ?? {
|
|
522
|
+
title: "better-supabase changes",
|
|
523
|
+
version: "1.0.0"
|
|
524
|
+
},
|
|
525
|
+
...options.extends === void 0 ? {} : { extends: options.extends },
|
|
526
|
+
actions
|
|
527
|
+
};
|
|
528
|
+
}
|
|
529
|
+
//#endregion
|
|
530
|
+
//#region src/overlay/load.ts
|
|
531
|
+
const isEngine = (value) => typeof value === "object" && value !== null && "paths" in value && typeof value.paths === "function";
|
|
532
|
+
/**
|
|
533
|
+
* Imports `jsonpath-rfc9535` on first use. The specifier is a variable so
|
|
534
|
+
* bundlers leave the optional peer out of apps that pass their own engine.
|
|
535
|
+
*/
|
|
536
|
+
const importEngine = () => importOptionalPeer("jsonpath-rfc9535");
|
|
537
|
+
async function load(importer) {
|
|
538
|
+
const module = await importer();
|
|
539
|
+
if (!isEngine(module)) throw new TypeError("better-supabase/overlay needs an RFC 9535 JSONPath engine: pnpm add jsonpath-rfc9535, or pass your own { paths(document, expression) }");
|
|
540
|
+
return module;
|
|
541
|
+
}
|
|
542
|
+
const cachedEngine = memoized(() => load(importEngine));
|
|
543
|
+
/**
|
|
544
|
+
* Loads the optional `jsonpath-rfc9535` peer, an RFC 9535 implementation
|
|
545
|
+
* that passes the JSONPath Compliance Test Suite, for `applyOverlay`.
|
|
546
|
+
* Rejects with an install message when the package is missing. The engine
|
|
547
|
+
* is loaded once per module; `importer` replaces the import in tests.
|
|
548
|
+
*/
|
|
549
|
+
function loadJsonPath(importer) {
|
|
550
|
+
if (importer) return load(importer);
|
|
551
|
+
return cachedEngine();
|
|
552
|
+
}
|
|
553
|
+
//#endregion
|
|
554
|
+
export { applyOverlay, applyOverlays, defineOverlay, expandReusableActions, loadJsonPath, overlayFromDiff };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference lib="esnext.temporal" />
|
|
2
|
-
import { w as ErrorMapper } from "./result-
|
|
3
|
-
import { I as TableFlags, P as SchemaMeta, R as TableMeta, a as AnyModels } from "./types-
|
|
4
|
-
import { _ as MutationOp, g as MutationKind, h as MutationIntent, r as Executor, v as Operation } from "./executor-
|
|
2
|
+
import { w as ErrorMapper } from "./result-BchM1XZn.js";
|
|
3
|
+
import { I as TableFlags, P as SchemaMeta, R as TableMeta, a as AnyModels } from "./types-CoE5Zwy4.js";
|
|
4
|
+
import { _ as MutationOp, g as MutationKind, h as MutationIntent, r as Executor, v as Operation } from "./executor-Drzu3dBK.js";
|
|
5
5
|
//#region src/core/plugin.d.ts
|
|
6
6
|
/** Who is making the request. */
|
|
7
7
|
interface Actor {
|
|
@@ -91,6 +91,39 @@ type ApplyOne<E, M extends AnyModels, T extends keyof M, K extends "methods" | "
|
|
|
91
91
|
})[K] : unknown;
|
|
92
92
|
/** True when table `T` has the flag set by codegen. */
|
|
93
93
|
type HasFlag<M, T, F extends string> = M extends AnyModels ? T extends keyof M ? M[T]["Flags"] extends { readonly [K in F]: unknown; } ? true : false : false : false;
|
|
94
|
+
/** A parameter a plugin adds to the operations of a table in the API spec. */
|
|
95
|
+
interface DescribeParameter {
|
|
96
|
+
readonly name: string;
|
|
97
|
+
readonly in: "query" | "header" | "cookie";
|
|
98
|
+
readonly required?: boolean;
|
|
99
|
+
readonly description?: string;
|
|
100
|
+
/** JSON Schema 2020-12. */
|
|
101
|
+
readonly schema: Readonly<Record<string, unknown>>;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* What `Plugin.describe` can change in the API model `defineApi` builds.
|
|
105
|
+
* Every method ignores tables and columns the API does not serve.
|
|
106
|
+
*/
|
|
107
|
+
interface PluginDescribeApi {
|
|
108
|
+
readonly schema: SchemaMeta;
|
|
109
|
+
/** Prefix of generated `x-` fields, e.g. `x-better-supabase-`. */
|
|
110
|
+
readonly extensionPrefix: string;
|
|
111
|
+
/** The served tables, with the names of their operations and actions. */
|
|
112
|
+
readonly resources: readonly {
|
|
113
|
+
readonly table: TableMeta;
|
|
114
|
+
readonly operations: readonly string[];
|
|
115
|
+
}[];
|
|
116
|
+
/** Adds a parameter to the table's operations, or to the named ones. */
|
|
117
|
+
addParameter(table: string, parameter: DescribeParameter, operations?: readonly string[]): void;
|
|
118
|
+
/**
|
|
119
|
+
* Marks a column `readOnly` in the table's schemas and drops it from the
|
|
120
|
+
* required fields of request bodies. `description` is used when the
|
|
121
|
+
* column has none.
|
|
122
|
+
*/
|
|
123
|
+
markReadOnly(table: string, column: string, description?: string): void;
|
|
124
|
+
/** Deep-merges JSON Schema fields into the column's schemas. */
|
|
125
|
+
describeColumn(table: string, column: string, patch: Readonly<Record<string, unknown>>): void;
|
|
126
|
+
}
|
|
94
127
|
declare const PLUGIN_API_VERSION = 1;
|
|
95
128
|
/**
|
|
96
129
|
* Plugin API v1. Every hook is optional. Hooks run in `use()` order.
|
|
@@ -135,6 +168,12 @@ interface Plugin<Name extends string = string, Ext extends RepositoryExtension =
|
|
|
135
168
|
readonly mapError?: ErrorMapper;
|
|
136
169
|
/** `repository`: add methods to the repositories of matching tables. */
|
|
137
170
|
readonly repository?: (api: RepositoryApi) => Readonly<Record<string, (...args: never[]) => unknown>> | undefined;
|
|
171
|
+
/**
|
|
172
|
+
* `spec`: describe what the plugin does to the served tables in the API
|
|
173
|
+
* model (`defineApi`, `createOpenApi`): parameters it reads, columns it
|
|
174
|
+
* manages. A throw is reported as `plugin-describe-failed`.
|
|
175
|
+
*/
|
|
176
|
+
readonly describe?: (api: PluginDescribeApi) => void;
|
|
138
177
|
/** Phantom carrying the repository extension type. */
|
|
139
178
|
readonly "~ext"?: Ext;
|
|
140
179
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as Plugin, m as RequestContext } from "../../plugin-
|
|
1
|
+
import { d as Plugin, m as RequestContext } from "../../plugin-CPK2HsbY.js";
|
|
2
2
|
//#region src/plugins/actor/index.d.ts
|
|
3
3
|
export interface ActorOptions {
|
|
4
4
|
/** Custom actor id resolution. Defaults to `context.actor.id` for users and services. */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as definePlugin } from "../../plugin-tfXW1-qO.js";
|
|
2
|
-
import { a as insertsOnly,
|
|
2
|
+
import { a as insertsOnly, c as withDefault, i as guardManaged, t as dbName } from "../../shared-DHjhfRdV.js";
|
|
3
3
|
//#region src/plugins/actor/index.ts
|
|
4
4
|
function defaultActor(context) {
|
|
5
5
|
const actor = context.actor;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { v as Operation } from "../../executor-
|
|
2
|
-
import { d as Plugin, p as RepositoryExtension } from "../../plugin-
|
|
1
|
+
import { v as Operation } from "../../executor-Drzu3dBK.js";
|
|
2
|
+
import { d as Plugin, p as RepositoryExtension } from "../../plugin-CPK2HsbY.js";
|
|
3
3
|
//#region src/plugins/rules/index.d.ts
|
|
4
4
|
export type RuleLevel = "off" | "warn" | "error";
|
|
5
5
|
/** A level, or a level with the rule's option: `['error', 500]`. */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as DbException } from "../../db-exception-CnWcYPxL.js";
|
|
2
|
-
import { n as dbError } from "../../errors-
|
|
2
|
+
import { n as dbError } from "../../errors-2M6CKMP4.js";
|
|
3
3
|
import { t as lookupOf } from "../../lookup-BaP5bI27.js";
|
|
4
4
|
import { r as definePlugin } from "../../plugin-tfXW1-qO.js";
|
|
5
5
|
import { t as simplify } from "../../simplify-DDO0j0LI.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as AsyncResult } from "../../result-
|
|
2
|
-
import { E as PrimaryKeyValue } from "../../types-
|
|
3
|
-
import { d as Plugin, o as HasFlag, p as RepositoryExtension } from "../../plugin-
|
|
1
|
+
import { t as AsyncResult } from "../../result-BchM1XZn.js";
|
|
2
|
+
import { E as PrimaryKeyValue } from "../../types-CoE5Zwy4.js";
|
|
3
|
+
import { d as Plugin, o as HasFlag, p as RepositoryExtension } from "../../plugin-CPK2HsbY.js";
|
|
4
4
|
//#region src/plugins/soft-delete/index.d.ts
|
|
5
5
|
export interface SoftDeleteFindArgs {
|
|
6
6
|
/** Include soft-deleted rows of the queried table. */
|