better-supabase 0.5.0 → 0.6.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 +299 -41
- package/dist/access-sql-B0dF-SoF.js +181 -0
- package/dist/actor-CQTlc1Hh.d.ts +43 -0
- package/dist/adapter-Bc1o3zyy.js +1106 -0
- package/dist/agents-CVHGd7It.d.ts +94 -0
- package/dist/ai-cache-CBWs1W0k.js +80 -0
- package/dist/ai-cache-DaDu_G5L.d.ts +64 -0
- package/dist/ai-chat-7amvXjmQ.d.ts +590 -0
- package/dist/ai-chat-B24UI962.js +743 -0
- package/dist/ai-files-CSPNswUY.js +319 -0
- package/dist/ai-sdk/agents/index.d.ts +74 -0
- package/dist/ai-sdk/agents/index.js +159 -0
- package/dist/ai-sdk/batches/index.d.ts +74 -0
- package/dist/ai-sdk/batches/index.js +180 -0
- package/dist/ai-sdk/cache/index.d.ts +38 -0
- package/dist/ai-sdk/cache/index.js +127 -0
- package/dist/ai-sdk/chat/index.d.ts +2 -0
- package/dist/ai-sdk/chat/index.js +246 -0
- package/dist/ai-sdk/embeddings/index.d.ts +3 -0
- package/dist/ai-sdk/embeddings/index.js +2 -0
- package/dist/ai-sdk/files/index.d.ts +61 -0
- package/dist/ai-sdk/files/index.js +111 -0
- package/dist/ai-sdk/index.d.ts +145 -0
- package/dist/ai-sdk/index.js +174 -0
- package/dist/ai-sdk/mcp/index.d.ts +102 -0
- package/dist/ai-sdk/mcp/index.js +362 -0
- package/dist/ai-sdk/memory/index.d.ts +67 -0
- package/dist/ai-sdk/memory/index.js +175 -0
- package/dist/ai-sdk/react/index.d.ts +2 -0
- package/dist/ai-sdk/react/index.js +3 -0
- package/dist/ai-sdk/react/server.d.ts +6 -0
- package/dist/ai-sdk/react/server.js +7 -0
- package/dist/ai-sdk/workflow/index.d.ts +249 -0
- package/dist/ai-sdk/workflow/index.js +575 -0
- package/dist/ai-sdk/workflow/react/index.d.ts +20 -0
- package/dist/ai-sdk/workflow/react/index.js +66 -0
- package/dist/ai-sdk/workflow/react/server.d.ts +10 -0
- package/dist/ai-sdk/workflow/react/server.js +12 -0
- package/dist/ai-tasks-Cd1HMFvB.d.ts +131 -0
- package/dist/announcements-CiyOs-xP.js +107 -0
- package/dist/announcements-ZRGnScWI.d.ts +72 -0
- package/dist/api-keys-rCGtKaZA.d.ts +156 -0
- package/dist/assistant-DwdpDH1q.d.ts +147 -0
- package/dist/astro/index.d.ts +86 -0
- package/dist/astro/index.js +93 -0
- package/dist/attributes-5dYul0u0.js +13 -0
- package/dist/auth-link-BjFPqwLz.d.ts +97 -0
- package/dist/auth-link-DrDX9KOT.js +114 -0
- package/dist/authorization-BFCqamMs.d.ts +172 -0
- package/dist/before-route-CnR0C0Jr.js +30 -0
- package/dist/bind-Bu_ZNa3W.d.ts +62 -0
- package/dist/bind-l4kAvYSv.js +97 -0
- package/dist/block-events-CrT8r7Fe.js +76 -0
- package/dist/block-fields-GFkxl4dP.js +49 -0
- package/dist/block-fields-SJ6fEf3o.d.ts +31 -0
- package/dist/block-helpers-CKtbFcRv.d.ts +37 -0
- package/dist/block-helpers-DWHxHsEQ.js +190 -0
- package/dist/block-hooks-BmjMyXTa.js +114 -0
- package/dist/block-hooks-plbZ0AbJ.d.ts +107 -0
- package/dist/{kit-transport-DJlHQUBU.js → block-transport-BLr-ZgLc.js} +11 -7
- package/dist/block-transport-DvaoPuZ9.d.ts +48 -0
- package/dist/blocks/agents/index.d.ts +3 -0
- package/dist/blocks/agents/index.js +123 -0
- package/dist/blocks/ai-cache/index.d.ts +3 -0
- package/dist/blocks/ai-cache/index.js +3 -0
- package/dist/blocks/ai-chat/index.d.ts +31 -0
- package/dist/blocks/ai-chat/index.js +5 -0
- package/dist/blocks/ai-chat/react/index.d.ts +77 -0
- package/dist/blocks/ai-chat/react/index.js +387 -0
- package/dist/blocks/ai-chat/react/server.d.ts +16 -0
- package/dist/blocks/ai-chat/react/server.js +14 -0
- package/dist/blocks/ai-files/index.d.ts +14 -0
- package/dist/blocks/ai-files/index.js +3 -0
- package/dist/blocks/ai-providers/index.d.ts +7 -0
- package/dist/blocks/ai-providers/index.js +211 -0
- package/dist/blocks/ai-tasks/index.d.ts +3 -0
- package/dist/blocks/ai-tasks/index.js +203 -0
- package/dist/blocks/announcements/index.d.ts +3 -0
- package/dist/blocks/announcements/index.js +3 -0
- package/dist/blocks/announcements/react/index.d.ts +31 -0
- package/dist/blocks/announcements/react/index.js +86 -0
- package/dist/blocks/announcements/react/server.d.ts +6 -0
- package/dist/blocks/announcements/react/server.js +7 -0
- package/dist/blocks/api-keys/index.d.ts +35 -0
- package/dist/blocks/api-keys/index.js +334 -0
- package/dist/blocks/attachments/index.d.ts +210 -0
- package/dist/blocks/attachments/index.js +222 -0
- package/dist/blocks/audit/index.d.ts +366 -0
- package/dist/blocks/audit/index.js +714 -0
- package/dist/blocks/billing/index.d.ts +265 -0
- package/dist/blocks/billing/index.js +400 -0
- package/dist/blocks/comments/index.d.ts +200 -0
- package/dist/blocks/comments/index.js +207 -0
- package/dist/blocks/connectors/index.d.ts +3 -0
- package/dist/blocks/connectors/index.js +164 -0
- package/dist/blocks/data-lifecycle/index.d.ts +251 -0
- package/dist/blocks/data-lifecycle/index.js +353 -0
- package/dist/blocks/entitlements/index.d.ts +14 -0
- package/dist/blocks/entitlements/index.js +25 -0
- package/dist/blocks/flags/index.d.ts +226 -0
- package/dist/blocks/flags/index.js +282 -0
- package/dist/blocks/inbox/index.d.ts +6 -0
- package/dist/blocks/inbox/index.js +499 -0
- package/dist/blocks/inbox/react/index.d.ts +2 -0
- package/dist/blocks/inbox/react/index.js +225 -0
- package/dist/blocks/inbox/react/server.d.ts +10 -0
- package/dist/blocks/inbox/react/server.js +12 -0
- package/dist/blocks/index.d.ts +65 -0
- package/dist/blocks/index.js +77 -0
- package/dist/blocks/jobs/index.d.ts +297 -0
- package/dist/blocks/jobs/index.js +1051 -0
- package/dist/blocks/knowledge/index.d.ts +3 -0
- package/dist/blocks/knowledge/index.js +3 -0
- package/dist/blocks/memory/index.d.ts +8 -0
- package/dist/blocks/memory/index.js +289 -0
- package/dist/blocks/notifications/index.d.ts +297 -0
- package/dist/blocks/notifications/index.js +425 -0
- package/dist/blocks/notifications/react/index.d.ts +44 -0
- package/dist/blocks/notifications/react/index.js +67 -0
- package/dist/blocks/notifications/react/server.d.ts +6 -0
- package/dist/blocks/notifications/react/server.js +7 -0
- package/dist/blocks/onboarding/index.d.ts +3 -0
- package/dist/blocks/onboarding/index.js +64 -0
- package/dist/blocks/onboarding/react/index.d.ts +28 -0
- package/dist/blocks/onboarding/react/index.js +78 -0
- package/dist/blocks/onboarding/react/server.d.ts +7 -0
- package/dist/blocks/onboarding/react/server.js +7 -0
- package/dist/blocks/organizations/index.d.ts +241 -0
- package/dist/blocks/organizations/index.js +400 -0
- package/dist/blocks/outbox/index.d.ts +3 -0
- package/dist/blocks/outbox/index.js +266 -0
- package/dist/blocks/profiles/index.d.ts +40 -0
- package/dist/blocks/profiles/index.js +28 -0
- package/dist/blocks/push/index.d.ts +185 -0
- package/dist/blocks/push/index.js +258 -0
- package/dist/blocks/settings/index.d.ts +89 -0
- package/dist/blocks/settings/index.js +104 -0
- package/dist/blocks/sso/index.d.ts +198 -0
- package/dist/blocks/sso/index.js +1297 -0
- package/dist/blocks/usage/index.d.ts +4 -0
- package/dist/blocks/usage/index.js +233 -0
- package/dist/blocks/waitlist/index.d.ts +117 -0
- package/dist/blocks/waitlist/index.js +132 -0
- package/dist/blocks/webhooks/index.d.ts +304 -0
- package/dist/{webhooks → blocks/webhooks}/index.js +468 -148
- package/dist/blocks/workflow-builder/index.d.ts +21 -0
- package/dist/blocks/workflow-builder/index.js +5 -0
- package/dist/blocks/workflow-builder/react/index.d.ts +47 -0
- package/dist/blocks/workflow-builder/react/index.js +119 -0
- package/dist/blocks/workflow-builder/react/server.d.ts +8 -0
- package/dist/blocks/workflow-builder/react/server.js +11 -0
- package/dist/blocks/workflows/index.d.ts +3 -0
- package/dist/blocks/workflows/index.js +3 -0
- package/dist/blocks/workflows/react/index.d.ts +47 -0
- package/dist/blocks/workflows/react/index.js +137 -0
- package/dist/blocks/workflows/react/server.d.ts +8 -0
- package/dist/blocks/workflows/react/server.js +11 -0
- package/dist/{index-SaTsEfGP.d.ts → bucket-Cl46E3jS.d.ts} +134 -91
- package/dist/{simplify-_0oUKqCd.js → build-BXIzE6Xv.js} +222 -124
- package/dist/{channel-FQW-CnGR.d.ts → channel-_2Mx1Oyu.d.ts} +2 -2
- package/dist/channels-CkgQ_X60.js +114 -0
- package/dist/chat-sdk/index.d.ts +303 -0
- package/dist/chat-sdk/index.js +733 -0
- package/dist/chat-sdk/react/index.d.ts +2 -0
- package/dist/chat-sdk/react/index.js +3 -0
- package/dist/chat-sdk/react/server.d.ts +3 -0
- package/dist/chat-sdk/react/server.js +2 -0
- package/dist/claims-DDBQT6BK.js +61 -0
- package/dist/{claims-BAf6c7is.js → claims-PqzCxaTD.js} +39 -2
- package/dist/cli/bin.js +1 -1
- package/dist/cli/{codemod-DqV7612m.js → codemod-Bl_tQpHn.js} +105 -2
- package/dist/cli/config-B9HkL8nF.js +2 -0
- package/dist/cli/config-DU7EJImt.js +49 -0
- package/dist/cli/config-NiPxAmUF.js +1077 -0
- package/dist/cli/{dist-xn4wlboc.js → dist-DRAVaE6w.js} +111 -1
- package/dist/cli/{doctor-L7Z8mYTx.js → doctor-B4JOm_ox.js} +992 -316
- package/dist/cli/{env-DmKv_G4A.js → env-CJLbUVPB.js} +1 -1
- package/dist/cli/{env-jIFUADLY.js → env-qXgyMV6r.js} +2 -2
- package/dist/cli/fresh-import-BeYf9I3x.js +40 -0
- package/dist/cli/gen-BGLb_zou.js +3100 -0
- package/dist/cli/gen-DAH8FM2W.js +2 -0
- package/dist/cli/index.d.ts +44 -5
- package/dist/cli/index.js +7 -7
- package/dist/cli/{init-Saf5-R9T.js → init-BIIwclPg.js} +242 -27
- package/dist/cli/{introspect--H7oGmcd.js → introspect-DNUTuNvb.js} +5 -5
- package/dist/cli/{io-k41_z-jT.js → io-DI1mTdSA.js} +12 -3
- package/dist/cli/{keys-ByKHnvP9.js → keys-BGCnnb-s.js} +8 -6
- package/dist/cli/{ohash-D7bG_EOb.js → ohash-BjQY1cBb.js} +1 -1
- package/dist/cli/{openapi-Cp5Fyta-.js → openapi-BlRJ18s3.js} +2 -2
- package/dist/cli/{project-B_GeXyHh.js → project-DZRaBaY7.js} +11 -6
- package/dist/cli/read-sets-CETOSFx4.js +223 -0
- package/dist/cli/{run-BKR2W_79.js → run-DNWxHynX.js} +33 -23
- package/dist/cli/{seed-CUlqWh-8.js → seed-DQzqT7LP.js} +8 -6
- package/dist/cli/{skills-LJJIhLFR.js → skills-QQs4q68J.js} +3 -2
- package/dist/cli/sql-D0GUtUPp.js +536 -0
- package/dist/cli/{config-CPVpXP5I.js → supabase-toml-B-bIukQF.js} +72 -942
- package/dist/cli/typegen-version-DeFbtzYI.js +8 -0
- package/dist/cli/{version-BDJuO0UR.js → version-hr88OZG0.js} +1 -1
- package/dist/client/index.d.ts +3 -2
- package/dist/client/index.js +11 -71
- package/dist/client/native/index.d.ts +228 -0
- package/dist/client/native/index.js +361 -0
- package/dist/client-CI0Z2zWX.js +277 -0
- package/dist/cloud-event-BnmD5fb9.js +46 -0
- package/dist/cloud-event-C1JCc1bH.d.ts +50 -0
- package/dist/{compiler-BXH_aZ7N.d.ts → compiler-DY_wkj4R.d.ts} +2 -2
- package/dist/compose-BIBNgAnq.js +53 -0
- package/dist/composite-Bt1YK3Ke.d.ts +146 -0
- package/dist/composite-DhE66P5u.js +130 -0
- package/dist/config/index.d.ts +6 -4
- package/dist/config/index.js +5 -5
- package/dist/{config-T_ejwyd3.d.ts → config-D44Y7PAv.d.ts} +406 -205
- package/dist/{config-DreERlKo.js → config-Dn7F5k9A.js} +62 -14
- package/dist/connector-Dv8kK0MO.d.ts +107 -0
- package/dist/connectors-hkLCwyEz.d.ts +120 -0
- package/dist/context-BCrWe7ow.d.ts +237 -0
- package/dist/credentials/index.d.ts +31 -0
- package/dist/credentials/index.js +168 -0
- package/dist/cron-DVPUg5k3.js +145 -0
- package/dist/csv-CPAzEmB6.js +25 -0
- package/dist/db-exception-CnWcYPxL.js +15 -0
- package/dist/{define-cNKzqwL_.js → define-B-TVjC25.js} +784 -227
- package/dist/{define-Bp_BZa5h.d.ts → define-CJJkkr1-.d.ts} +353 -61
- package/dist/edge/index.d.ts +69 -11
- package/dist/edge/index.js +191 -75
- package/dist/elysia/index.d.ts +59 -0
- package/dist/elysia/index.js +62 -0
- package/dist/embeddings-4ZvFzjsU.js +127 -0
- package/dist/embeddings-C9KGQnXt.d.ts +68 -0
- package/dist/{refresh-BTrQ_ZTp.d.ts → ended-jLfvw8h-.d.ts} +20 -2
- package/dist/{entitlements-DUxU4oHe.d.ts → entitlements-DHrY2UDZ.d.ts} +16 -7
- package/dist/entitlements-DRl6ZJUm.js +24 -0
- package/dist/envelope-DqnYGRw7.js +47 -0
- package/dist/{errors-DtwXa6b8.js → errors-B11Duf73.js} +82 -13
- package/dist/errors-DLjJHPLK.js +44 -0
- package/dist/escape-like-DHfx6jRr.js +7 -0
- package/dist/escape-like-ImTK0ps_.d.ts +15 -0
- package/dist/eve/index.d.ts +220 -0
- package/dist/eve/index.js +504 -0
- package/dist/eve-gT2Fpjut.d.ts +151 -0
- package/dist/events/index.d.ts +4 -3
- package/dist/events/index.js +9 -50
- package/dist/events-DWDhx77e.d.ts +549 -0
- package/dist/executor-Bq28caBo.js +718 -0
- package/dist/executor-C-R4pucm.js +83 -0
- package/dist/executor-CaWigTyR.d.ts +148 -0
- package/dist/executor-D14tGopJ.d.ts +36 -0
- package/dist/{executor-Cghdstwu.d.ts → executor-DbvExCFC.d.ts} +7 -1
- package/dist/{sql-Coh6n4cC.js → executor-De1Of3m3.js} +210 -11
- package/dist/executor-DvsBbNBS.d.ts +261 -0
- package/dist/expo/index.d.ts +79 -0
- package/dist/expo/index.js +129 -0
- package/dist/expo-sqlite/index.d.ts +58 -0
- package/dist/expo-sqlite/index.js +104 -0
- package/dist/field-errors-BFOa7WhB.d.ts +99 -0
- package/dist/field-errors-VF1yb8yI.js +13 -0
- package/dist/framework-CONDyPYx.js +51 -0
- package/dist/framework-DuVb4Xa8.d.ts +25 -0
- package/dist/gateway-C1ssRHnf.d.ts +130 -0
- package/dist/graph-BGyLLFLX.js +265 -0
- package/dist/h3/index.d.ts +59 -0
- package/dist/h3/index.js +55 -0
- package/dist/h3/v1/index.d.ts +63 -0
- package/dist/h3/v1/index.js +49 -0
- package/dist/history-BZih6SFP.js +64 -0
- package/dist/hono/index.d.ts +56 -7
- package/dist/hono/index.js +97 -45
- package/dist/{react-C_s7kiNz.js → hooks-1BTCJsiw.js} +104 -133
- package/dist/http-Cv4T29xh.js +40 -0
- package/dist/http-DdYadv-o.js +126 -0
- package/dist/image-url-pIVlO6R1.js +41 -0
- package/dist/impersonation-DcqaTBHx.js +148 -0
- package/dist/inbox-i7E1ppo6.d.ts +384 -0
- package/dist/index-ACiNPN4Z.d.ts +74 -0
- package/dist/{index-DgILJRXj.d.ts → index-Bepi-Hgg.d.ts} +91 -28
- package/dist/index-BkWT_uBO.d.ts +51 -0
- package/dist/index-BpFYMsi0.d.ts +53 -0
- package/dist/{index-C7f8cOBM.d.ts → index-Bxih3l0u.d.ts} +2 -2
- package/dist/index-CaxrMD1A.d.ts +1 -0
- package/dist/index-ClmjK_o-.d.ts +55 -0
- package/dist/index-CtuakVRc.d.ts +267 -0
- package/dist/index-D48jVS-N.d.ts +246 -0
- package/dist/index-DDrYaUcq.d.ts +138 -0
- package/dist/index-DQh4VCc9.d.ts +98 -0
- package/dist/{live-D9W2M5aO.d.ts → index-DunNRdnT.d.ts} +136 -38
- package/dist/index.d.ts +65 -18
- package/dist/index.js +42 -14
- package/dist/invalidate-BBqhpxyB.d.ts +19 -0
- package/dist/json-CEnpTHlZ.js +16 -0
- package/dist/json-schema-CvER4kgT.js +502 -0
- package/dist/keys-4MnkWTTh.js +35 -0
- package/dist/kit-B5tid-q5.d.ts +60 -0
- package/dist/kit-Fm-Fv7q5.js +78 -0
- package/dist/knowledge-BXBbT0Tr.d.ts +176 -0
- package/dist/knowledge-CDmiMLew.js +255 -0
- package/dist/lint/index.d.ts +1 -1
- package/dist/lint/index.js +37 -0
- package/dist/list/index.d.ts +3 -2
- package/dist/list/index.js +1 -444
- package/dist/{index-fag8VJZ2.d.ts → list-query-BRt-zDF7.d.ts} +20 -12
- package/dist/list-query-gl808ac1.js +459 -0
- package/dist/{live-CdJBOc4f.js → live-CTAZQkwl.js} +99 -14
- package/dist/logger-DWVYUmwi.d.ts +18 -0
- package/dist/mcp/index.d.ts +38 -11
- package/dist/mcp/index.js +82 -46
- package/dist/mcp/sdk/index.d.ts +105 -0
- package/dist/mcp/sdk/index.js +126 -0
- package/dist/message-CaKlqdsX.js +219 -0
- package/dist/message-CfDoR0Y6.d.ts +94 -0
- package/dist/messages-B9-5887d.js +715 -0
- package/dist/messages-DYP0sUTe.d.ts +59 -0
- package/dist/{mfa-CusDgPaD.d.ts → mfa-Daak8ukG.d.ts} +8 -2
- package/dist/modules-DpPwzC7E.d.ts +192 -0
- package/dist/modules-dxrVK3ID.js +228 -0
- package/dist/nestjs/index.d.ts +68 -0
- package/dist/nestjs/index.js +164 -0
- package/dist/next/client/index.d.ts +35 -0
- package/dist/next/client/index.js +36 -0
- package/dist/next/image/index.js +3 -24
- package/dist/next/index.d.ts +150 -51
- package/dist/next/index.js +261 -107
- package/dist/node/index.d.ts +4 -0
- package/dist/node/index.js +210 -0
- package/dist/node-headers-AO06VhqH.d.ts +24 -0
- package/dist/node-headers-C71zNQHe.js +55 -0
- package/dist/nuxt/index.d.ts +60 -0
- package/dist/nuxt/index.js +64 -0
- package/dist/onboarding-BZGHYJks.d.ts +62 -0
- package/dist/openapi/index.d.ts +1 -1
- package/dist/openapi/index.js +3 -3
- package/dist/orpc/index.d.ts +70 -11
- package/dist/orpc/index.js +73 -24
- package/dist/otel/index.d.ts +7 -7
- package/dist/otel/index.js +87 -57
- package/dist/outbox-Cq7pPYvl.d.ts +161 -0
- package/dist/{plugin-o144f322.d.ts → plugin-FGY8UhYm.d.ts} +30 -10
- package/dist/plugin-tfXW1-qO.js +45 -0
- package/dist/plugins/actor/index.d.ts +2 -2
- package/dist/plugins/actor/index.js +3 -3
- package/dist/plugins/rules/index.d.ts +11 -4
- package/dist/plugins/rules/index.js +40 -13
- package/dist/plugins/soft-delete/index.d.ts +5 -4
- package/dist/plugins/soft-delete/index.js +10 -5
- package/dist/plugins/tenant/index.d.ts +2 -2
- package/dist/plugins/tenant/index.js +18 -11
- package/dist/plugins/timestamps/index.d.ts +5 -3
- package/dist/plugins/timestamps/index.js +6 -4
- package/dist/plugins/validation/index.d.ts +2 -2
- package/dist/plugins/validation/index.js +10 -6
- package/dist/{pool-C9voM4Kw.d.ts → pool-CAu2nLrL.d.ts} +2 -2
- package/dist/postgres/index.d.ts +4 -4
- package/dist/postgres/index.js +1 -2
- package/dist/{postgrest-CruYKAvV.d.ts → postgrest-BLVdEnfe.d.ts} +13 -3
- package/dist/powersync/index.d.ts +43 -0
- package/dist/powersync/index.js +199 -0
- package/dist/powersync/react/index.d.ts +87 -0
- package/dist/powersync/react/index.js +108 -0
- package/dist/{problem-BW1KhzSG.js → problem-BreOl8b8.js} +14 -3
- package/dist/{problem-Blxe8S31.d.ts → problem-DD8LZFjc.d.ts} +21 -3
- package/dist/provider-BH5UWZJ6.d.ts +113 -0
- package/dist/provider-Di3sRutW.js +57 -0
- package/dist/query/index.d.ts +4 -2
- package/dist/query/index.js +4 -3
- package/dist/{query-CCbo44lG.js → query-BQ-NaZon.js} +141 -24
- package/dist/{queue-BYUCjr59.d.ts → queue-CLJurhdy.d.ts} +258 -83
- package/dist/react/index.d.ts +11 -7
- package/dist/react/index.js +7 -3
- package/dist/react/native/index.d.ts +116 -0
- package/dist/react/native/index.js +130 -0
- package/dist/react/server.d.ts +28 -10
- package/dist/react/server.js +22 -5
- package/dist/react/session.d.ts +2 -2
- package/dist/react-4ZqkP8da.js +79 -0
- package/dist/react-F80mF4-t.js +409 -0
- package/dist/react-router/index.d.ts +83 -0
- package/dist/react-router/index.js +89 -0
- package/dist/react-topic-seAWjL3_.js +38 -0
- package/dist/{read-set-DQFt1N_Y.js → read-set-DuKWC9Mj.js} +67 -25
- package/dist/realtime/index.d.ts +4 -5
- package/dist/realtime/index.js +144 -82
- package/dist/refusal-CeJWxmkH.js +61 -0
- package/dist/refusal-D1rgbzNq.d.ts +15 -0
- package/dist/replicas-CwrYp5Zj.js +94 -0
- package/dist/{view-Bq64ki8-.js → resolve-D_IcnvFd.js} +239 -289
- package/dist/{resolve-C15TJq77.d.ts → resolve-KW8nCeL6.d.ts} +29 -45
- package/dist/{resource-CRxxwkQq.js → resource-BsvzCMlX.js} +4 -4
- package/dist/{resource-D8iqWMr-.d.ts → resource-D6Uc7Sk7.d.ts} +5 -5
- package/dist/respond-BUgsXNgk.js +91 -0
- package/dist/respond-DoBijysA.d.ts +93 -0
- package/dist/result-D7y2fT87.d.ts +282 -0
- package/dist/{result-BKiliPY7.js → result-DzUbqgdW.js} +27 -2
- package/dist/run-state-CPo-1X2B.d.ts +12 -0
- package/dist/run-state-CgBKzYMW.js +13 -0
- package/dist/search-CUWCRYKL.js +9 -0
- package/dist/server/index.d.ts +143 -21
- package/dist/server/index.js +46 -14
- package/dist/{respond-D2OQl62-.d.ts → server-CeVeeXwz.d.ts} +225 -80
- package/dist/session-ChiXDZdZ.d.ts +72 -0
- package/dist/shared-CBxosKK3.js +75 -0
- package/dist/{shared-D1dRUrAg.js → shared-CxWmcyqB.js} +2 -1
- package/dist/shared-DDSjEGDR.d.ts +11 -0
- package/dist/sign-in-BCV5S2WZ.d.ts +49 -0
- package/dist/sign-in-Cb1mwv6X.js +86 -0
- package/dist/{signers-Cc6r98SW.d.ts → signers-4y62_VIi.d.ts} +13 -9
- package/dist/simplify-DDO0j0LI.js +83 -0
- package/dist/solid/index.d.ts +131 -0
- package/dist/solid/index.js +344 -0
- package/dist/solid-start/index.d.ts +75 -0
- package/dist/solid-start/index.js +58 -0
- package/dist/{spec-pins-C3oc-Tdp.js → spec-pins--j6mTok4.js} +8 -1
- package/dist/{spec-pins-CqorWDnO.d.ts → spec-pins-C89s6DyW.d.ts} +7 -0
- package/dist/sql/index.d.ts +330 -194
- package/dist/sql/index.js +34901 -6489
- package/dist/ssr/index.d.ts +6 -5
- package/dist/ssr/index.js +3 -3
- package/dist/{standard-D7r6dMUu.js → standard-BK0cqJ7y.js} +4 -3
- package/dist/{standard-J4YgMOLm.d.ts → standard-CYsm7xpT.d.ts} +1 -1
- package/dist/stats-D_AD9GGu.js +1123 -0
- package/dist/storage/index.d.ts +5 -5
- package/dist/storage/index.js +1027 -368
- package/dist/store-BdH5ruDx.js +66 -0
- package/dist/store-CGjgWu5n.d.ts +68 -0
- package/dist/streams/index.d.ts +76 -0
- package/dist/streams/index.js +77 -0
- package/dist/streams/redis/index.d.ts +52 -0
- package/dist/streams/redis/index.js +185 -0
- package/dist/stripe-BMj5LtsT.js +38 -0
- package/dist/stripe-D04h-QBT.d.ts +136 -0
- package/dist/{support-Dk6vdmEw.js → support-BivNqSpK.js} +35 -12
- package/dist/{support-view-Da5peKFg.d.ts → support-view-33Oi07TT.d.ts} +1 -1
- package/dist/svelte/index.d.ts +114 -0
- package/dist/svelte/index.js +344 -0
- package/dist/sveltekit/index.d.ts +116 -0
- package/dist/sveltekit/index.js +106 -0
- package/dist/tags-B99_U9Pp.js +39 -0
- package/dist/tags-Cx-LnIQP.d.ts +30 -0
- package/dist/tanstack-db/index.d.ts +71 -0
- package/dist/tanstack-db/index.js +72 -0
- package/dist/tanstack-start/index.d.ts +75 -0
- package/dist/tanstack-start/index.js +95 -0
- package/dist/tee-CoEppCER.js +101 -0
- package/dist/{template-TxrGI5jR.js → template--jDkl3UP.js} +34 -13
- package/dist/template-CwO38Do8.d.ts +6 -0
- package/dist/temporal-BJGitm-h.js +79 -0
- package/dist/{temporal-required-CAt4Dc9Z.js → temporal-required-BVvW7SYJ.js} +3 -2
- package/dist/tenant-I1TEZ_BX.js +27 -0
- package/dist/tenant-icPeuUBN.d.ts +17 -0
- package/dist/testing/index.d.ts +343 -37
- package/dist/testing/index.js +1186 -79
- package/dist/timing-CyTQPubY.js +92 -0
- package/dist/ttl-Hr34gRu8.js +12 -0
- package/dist/{types-Dnf_wRDz.d.ts → types-6BdhkmZe.d.ts} +111 -45
- package/dist/types-BI-0Sl2v.d.ts +359 -0
- package/dist/types-C05bxW-W.d.ts +220 -0
- package/dist/types-DGs5L0VN.d.ts +192 -0
- package/dist/types-TaiEeBGA.d.ts +156 -0
- package/dist/usage-CrvrL2vw.d.ts +177 -0
- package/dist/user-change-XzvgafU4.js +130 -0
- package/dist/vault-CSO7ss5C.d.ts +50 -0
- package/dist/vercel-connect/index.d.ts +47 -0
- package/dist/vercel-connect/index.js +119 -0
- package/dist/{verify-Ce49ETPz.js → verify-DL41hbvY.js} +85 -13
- package/dist/verify-DPuWngD4.d.ts +172 -0
- package/dist/{version-DM_Roffb.js → version-Bvv6aLjZ.js} +1 -1
- package/dist/view-BeFcRV6G.js +99 -0
- package/dist/{view-BEf0diC5.d.ts → view-DbxLNu8L.d.ts} +35 -32
- package/dist/vue/index.d.ts +141 -0
- package/dist/vue/index.js +362 -0
- package/dist/watch-DI34G86j.d.ts +60 -0
- package/dist/watch-Xuxrvxq-.js +122 -0
- package/dist/{wire-D2dT86vi.js → wire-DtZQ4sdE.js} +15 -5
- package/dist/workflow-builder-DJ1oHn8g.js +398 -0
- package/dist/workflow-sdk/builder/index.d.ts +85 -0
- package/dist/workflow-sdk/builder/index.js +250 -0
- package/dist/workflow-sdk/index.d.ts +14 -0
- package/dist/workflow-sdk/index.js +3 -0
- package/dist/workflow-sdk/world/index.d.ts +107 -0
- package/dist/workflow-sdk/world/index.js +702 -0
- package/dist/workflow-sdk-B3yLD6Br.d.ts +98 -0
- package/dist/workflow-sdk-C2WJ_G2O.js +173 -0
- package/dist/workflow-sdk-world-D-prir6O.js +1397 -0
- package/dist/workflows-B0j9WKPu.d.ts +185 -0
- package/dist/workflows-wu1WWBn7.js +216 -0
- package/package.json +470 -29
- package/schemas/ai-message-v1.json +258 -0
- package/schemas/config-v1.json +1074 -140
- package/schemas/doctor-report-v1.json +21 -1
- package/schemas/snapshot-v2.json +8 -0
- package/skills/better-supabase/SKILL.md +41 -12
- package/skills/better-supabase/references/frontend.md +96 -0
- package/skills/better-supabase/references/plugins.md +10 -6
- package/skills/better-supabase/references/troubleshooting.md +2 -1
- package/skills/better-supabase-api/SKILL.md +76 -22
- package/skills/better-supabase-api/references/adapters.md +207 -0
- package/skills/better-supabase-api/references/ai.md +125 -0
- package/skills/better-supabase-api/references/expo.md +65 -0
- package/skills/better-supabase-api/references/powersync.md +35 -0
- package/skills/better-supabase-api/references/streams-credentials.md +105 -0
- package/skills/better-supabase-auth/SKILL.md +62 -18
- package/skills/better-supabase-auth/references/authorization-providers.md +51 -0
- package/skills/better-supabase-testing/SKILL.md +3 -1
- package/dist/cli/config-dtoekM0v.js +0 -2
- package/dist/cli/gen-BJc9vdyu.js +0 -2
- package/dist/cli/gen-C2osRcr5.js +0 -2204
- package/dist/cli/read-sets-BfMQcKy8.js +0 -289
- package/dist/cli/sql-DzPbfngx.js +0 -348
- package/dist/entitlements-CTEBm7IB.js +0 -20
- package/dist/events-aIO7vsIk.d.ts +0 -230
- package/dist/executor-BunPOO-k.d.ts +0 -402
- package/dist/executor-XycESQPH.js +0 -94
- package/dist/impersonation-VfaGc4Q_.js +0 -41
- package/dist/index-BGdgBPdf.d.ts +0 -161
- package/dist/index-DOESKG27.d.ts +0 -100
- package/dist/index-DmXSxbLi.d.ts +0 -62
- package/dist/index-Dxn2a5cw.d.ts +0 -50
- package/dist/jobs/index.d.ts +0 -226
- package/dist/jobs/index.js +0 -1007
- package/dist/json-schema-m1fiwKgN.js +0 -208
- package/dist/kit-events-CTFDfSwb.js +0 -60
- package/dist/kit-transport-B82k1djG.d.ts +0 -33
- package/dist/kits-CGLLrNPd.js +0 -157
- package/dist/notifications/index.d.ts +0 -162
- package/dist/notifications/index.js +0 -264
- package/dist/orgs/index.d.ts +0 -132
- package/dist/orgs/index.js +0 -245
- package/dist/permdock-sql-C2Inc6Xc.d.ts +0 -29
- package/dist/permdock-sql-DgOfeixi.js +0 -51
- package/dist/plugin-DwARMuQp.js +0 -59
- package/dist/server-Csx2sRjg.js +0 -655
- package/dist/stats-Bqob3WqT.js +0 -592
- package/dist/support-DT-OhSxD.d.ts +0 -88
- package/dist/template-mbvlysOo.d.ts +0 -6
- package/dist/temporal-CVlIV2DZ.js +0 -40
- package/dist/user-change-CHFEUro1.js +0 -49
- package/dist/webhooks/index.d.ts +0 -285
- package/skills/better-supabase-auth/references/permdock.md +0 -100
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/// <reference lib="esnext.temporal" />
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
2
|
+
import { b as DbError, p as ThrowMapper, t as AsyncResult, w as ErrorMapper } from "./result-D7y2fT87.js";
|
|
3
|
+
import { A as Relations, B as UniqueKeyName, E as PrimaryKeyValue, F as Simplify, H as Update, L as TableKey, M as Row, N as Schema, P as SchemaMeta, R as TableMeta, V as UniqueWhere, a as AnyModels, i as AnyFunctions, k as RelationTypes, x as Insert } from "./types-6BdhkmZe.js";
|
|
4
|
+
import { l as CountMode, r as Executor, v as Operation } from "./executor-DvsBbNBS.js";
|
|
5
|
+
import { a as ExtensionOf, h as WithExtension, m as RequestContext, n as AnyPlugin, r as ApplyExtension } from "./plugin-FGY8UhYm.js";
|
|
6
|
+
import { a as EventHub, i as EventHandler, o as EventName, s as MutationNotice, u as RpcNotice } from "./events-DWDhx77e.js";
|
|
7
|
+
import { n as Logger } from "./logger-DWVYUmwi.js";
|
|
8
|
+
import { t as StandardSchemaV1 } from "./standard-CYsm7xpT.js";
|
|
9
|
+
import { a as PostgrestPlan, i as PostgrestCompileOptions } from "./postgrest-BLVdEnfe.js";
|
|
8
10
|
//#region src/ir/args.d.ts
|
|
9
11
|
interface BaseOps<V> {
|
|
10
12
|
readonly eq?: V;
|
|
@@ -25,11 +27,19 @@ interface TextOps {
|
|
|
25
27
|
readonly like?: string;
|
|
26
28
|
/** Case-insensitive LIKE pattern. */
|
|
27
29
|
readonly ilike?: string;
|
|
30
|
+
/** POSIX regular expression (`~`). */
|
|
31
|
+
readonly match?: string;
|
|
32
|
+
/** Case-insensitive POSIX regular expression (`~*`). */
|
|
33
|
+
readonly imatch?: string;
|
|
28
34
|
/** Case-insensitive substring match; wildcards in the value are escaped. */
|
|
29
35
|
readonly contains?: string;
|
|
30
36
|
readonly startsWith?: string;
|
|
31
37
|
readonly endsWith?: string;
|
|
32
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* Full-text search (`websearch_to_tsquery`). `config` is a text search
|
|
40
|
+
* configuration name such as `english` or `pg_catalog.dutch`; anything else
|
|
41
|
+
* is an `invalid_request` error.
|
|
42
|
+
*/
|
|
33
43
|
readonly search?: string | {
|
|
34
44
|
readonly query: string;
|
|
35
45
|
readonly config?: string;
|
|
@@ -46,10 +56,37 @@ interface ArrayOps<E> {
|
|
|
46
56
|
readonly containedBy?: readonly E[];
|
|
47
57
|
}
|
|
48
58
|
interface JsonOps<V> {
|
|
49
|
-
/**
|
|
50
|
-
|
|
59
|
+
/**
|
|
60
|
+
* jsonb `@>`: the value contains the given structure. An array matches a
|
|
61
|
+
* JSON array holding every given element (`[{ "type": "image" }]`).
|
|
62
|
+
*/
|
|
63
|
+
readonly contains?: Partial<V> | Record<string, unknown> | readonly unknown[];
|
|
51
64
|
}
|
|
52
|
-
type
|
|
65
|
+
type JsonText = string | number | boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Compares the text at a path inside a json column (`column->a->>b`).
|
|
68
|
+
* Numbers and booleans compare as their text; `isNull` and `eq: null` match a
|
|
69
|
+
* missing key and JSON `null`.
|
|
70
|
+
*/
|
|
71
|
+
interface JsonPathOps {
|
|
72
|
+
/** Keys from the column down; a number-like key indexes an array. */
|
|
73
|
+
readonly path: readonly [string, ...string[]];
|
|
74
|
+
readonly eq?: JsonText | null;
|
|
75
|
+
readonly neq?: JsonText | null;
|
|
76
|
+
readonly in?: readonly JsonText[];
|
|
77
|
+
readonly notIn?: readonly JsonText[];
|
|
78
|
+
readonly isNull?: boolean;
|
|
79
|
+
/** Text comparison, so `"10" < "9"`; store numbers you compare in a column. */
|
|
80
|
+
readonly gt?: string;
|
|
81
|
+
readonly gte?: string;
|
|
82
|
+
readonly lt?: string;
|
|
83
|
+
readonly lte?: string;
|
|
84
|
+
readonly like?: string;
|
|
85
|
+
readonly ilike?: string;
|
|
86
|
+
readonly match?: string;
|
|
87
|
+
readonly imatch?: string;
|
|
88
|
+
}
|
|
89
|
+
type OpsFor<V> = [NonNullable<V>] extends [string] ? BaseOps<V> & ComparableOps<V> & TextOps : [NonNullable<V>] extends [number | bigint] ? BaseOps<V> & ComparableOps<V> : [NonNullable<V>] extends [boolean] ? BaseOps<V> : [NonNullable<V>] extends [readonly (infer E)[]] ? BaseOps<V> & ArrayOps<E> : (BaseOps<V> & JsonOps<NonNullable<V>>) | JsonPathOps;
|
|
53
90
|
/** A value (equality, or `null` for `is null`) or an operator object. */
|
|
54
91
|
type FieldFilter<V> = V | OpsFor<V>;
|
|
55
92
|
type RelationFilter<M extends AnyModels, R> = R extends {
|
|
@@ -74,18 +111,37 @@ type WhereInput<M extends AnyModels, T extends keyof M> = { readonly [K in keyof
|
|
|
74
111
|
readonly OR?: readonly WhereInput<M, T>[];
|
|
75
112
|
readonly NOT?: WhereInput<M, T>;
|
|
76
113
|
};
|
|
114
|
+
/**
|
|
115
|
+
* A `where` you build one statement at a time:
|
|
116
|
+
* `const where: MutableWhere<Models, "customers"> = {}; if (status) where.status = status;`.
|
|
117
|
+
* The generated module exports it per table as `WhereOf<"customers">`.
|
|
118
|
+
*/
|
|
119
|
+
type MutableWhere<M extends AnyModels, T extends keyof M> = { -readonly [K in keyof WhereInput<M, T>]?: WhereInput<M, T>[K]; };
|
|
77
120
|
type SortDirection = "asc" | "desc";
|
|
78
|
-
type
|
|
121
|
+
type SortSpec = SortDirection | {
|
|
79
122
|
readonly direction: SortDirection;
|
|
80
123
|
readonly nulls?: "first" | "last";
|
|
81
|
-
};
|
|
124
|
+
};
|
|
125
|
+
/** The columns of one table, each with a sort direction. */
|
|
126
|
+
type ColumnOrderBy<M extends AnyModels, T extends keyof M> = { readonly [K in keyof Row<M, T>]?: SortSpec; };
|
|
127
|
+
/**
|
|
128
|
+
* Columns of the table, and of its to-one relations one level down:
|
|
129
|
+
* `{ organization: { name: "asc" } }` sorts by the related row's name.
|
|
130
|
+
*/
|
|
131
|
+
type OrderByInput<M extends AnyModels, T extends keyof M> = ColumnOrderBy<M, T> & { readonly [R in keyof Relations<M, T>]?: RelationOrderBy<M, Relations<M, T>[R]>; };
|
|
132
|
+
type RelationOrderBy<M extends AnyModels, R> = R extends {
|
|
133
|
+
readonly kind: "one";
|
|
134
|
+
readonly table: infer X extends keyof M;
|
|
135
|
+
} ? ColumnOrderBy<M, X> : never;
|
|
82
136
|
type OrderByArg<M extends AnyModels, T extends keyof M> = OrderByInput<M, T> | readonly OrderByInput<M, T>[];
|
|
137
|
+
/** Sorts by the table's own columns only (includes, aggregates). */
|
|
138
|
+
type ColumnOrderByArg<M extends AnyModels, T extends keyof M> = ColumnOrderBy<M, T> | readonly ColumnOrderBy<M, T>[];
|
|
83
139
|
type SelectArg<M extends AnyModels, T extends keyof M> = readonly Extract<keyof Row<M, T>, string>[];
|
|
84
140
|
interface IncludeArgs<M extends AnyModels, T extends keyof M> {
|
|
85
141
|
readonly select?: SelectArg<M, T>;
|
|
86
142
|
readonly include?: IncludeArg<M, T>;
|
|
87
143
|
readonly where?: WhereInput<M, T>;
|
|
88
|
-
readonly orderBy?:
|
|
144
|
+
readonly orderBy?: ColumnOrderByArg<M, T>;
|
|
89
145
|
readonly limit?: number;
|
|
90
146
|
/** Only return parent rows that have a matching related row. */
|
|
91
147
|
readonly required?: boolean;
|
|
@@ -111,10 +167,25 @@ type CountArg<M extends AnyModels, T extends keyof M> = { readonly [R in ManyRel
|
|
|
111
167
|
type TargetOf<R> = R extends {
|
|
112
168
|
readonly table: infer X;
|
|
113
169
|
} ? X : never;
|
|
114
|
-
|
|
170
|
+
/** Per-call request settings every repository method takes. */
|
|
171
|
+
interface RequestArgs {
|
|
172
|
+
readonly signal?: AbortSignal;
|
|
173
|
+
/**
|
|
174
|
+
* Fails the call with a `timeout` error after this many milliseconds,
|
|
175
|
+
* composed with `signal` (`AbortSignal.any`). Replaces the connection's
|
|
176
|
+
* `timeout`. SQL executors only check it before the statement starts.
|
|
177
|
+
*/
|
|
178
|
+
readonly timeout?: number;
|
|
179
|
+
/**
|
|
180
|
+
* postgrest-js retries of idempotent requests (reads) on network errors,
|
|
181
|
+
* 503 and 520; `false` turns them off for this call. Writes are never
|
|
182
|
+
* retried. SQL executors ignore it.
|
|
183
|
+
*/
|
|
184
|
+
readonly retry?: boolean;
|
|
185
|
+
}
|
|
186
|
+
interface ReadArgs<M extends AnyModels, T extends keyof M> extends RequestArgs {
|
|
115
187
|
readonly select?: SelectArg<M, T>;
|
|
116
188
|
readonly include?: IncludeArg<M, T>;
|
|
117
|
-
readonly signal?: AbortSignal;
|
|
118
189
|
}
|
|
119
190
|
interface FindManyArgs<M extends AnyModels, T extends keyof M> extends ReadArgs<M, T> {
|
|
120
191
|
readonly where?: WhereInput<M, T>;
|
|
@@ -123,12 +194,14 @@ interface FindManyArgs<M extends AnyModels, T extends keyof M> extends ReadArgs<
|
|
|
123
194
|
readonly offset?: number;
|
|
124
195
|
}
|
|
125
196
|
type FindFirstArgs<M extends AnyModels, T extends keyof M> = Omit<FindManyArgs<M, T>, "limit">;
|
|
126
|
-
interface
|
|
197
|
+
interface FindOnlyArgs<M extends AnyModels, T extends keyof M> extends ReadArgs<M, T> {
|
|
198
|
+
readonly where: WhereInput<M, T>;
|
|
199
|
+
}
|
|
200
|
+
interface CountArgs<M extends AnyModels, T extends keyof M> extends RequestArgs {
|
|
127
201
|
readonly where?: WhereInput<M, T>;
|
|
128
202
|
readonly mode?: "exact" | "planned" | "estimated";
|
|
129
|
-
readonly signal?: AbortSignal;
|
|
130
203
|
}
|
|
131
|
-
interface AggregateArgs<M extends AnyModels, T extends keyof M> {
|
|
204
|
+
interface AggregateArgs<M extends AnyModels, T extends keyof M> extends RequestArgs {
|
|
132
205
|
readonly where?: WhereInput<M, T>;
|
|
133
206
|
/** One result per distinct combination; without it, one result. */
|
|
134
207
|
readonly groupBy?: SelectArg<M, T>;
|
|
@@ -138,16 +211,30 @@ interface AggregateArgs<M extends AnyModels, T extends keyof M> {
|
|
|
138
211
|
readonly _avg?: NumericMeasureArg<M, T>;
|
|
139
212
|
readonly _min?: MeasureArg<M, T>;
|
|
140
213
|
readonly _max?: MeasureArg<M, T>;
|
|
141
|
-
/** Sorts groups
|
|
142
|
-
readonly orderBy?:
|
|
214
|
+
/** Sorts groups by `groupBy` columns, `_count` and measures. */
|
|
215
|
+
readonly orderBy?: AggregateOrderByArg<M, T>;
|
|
143
216
|
readonly limit?: number;
|
|
144
217
|
readonly offset?: number;
|
|
145
|
-
readonly signal?: AbortSignal;
|
|
146
218
|
}
|
|
219
|
+
/**
|
|
220
|
+
* Sorts `aggregate()` groups: `{ _count: "desc" }`,
|
|
221
|
+
* `{ _sum: { amount: "desc" } }` or a `groupBy` column.
|
|
222
|
+
*/
|
|
223
|
+
type AggregateOrderBy<M extends AnyModels, T extends keyof M> = ColumnOrderBy<M, T> & {
|
|
224
|
+
readonly _count?: SortSpec;
|
|
225
|
+
readonly _sum?: { readonly [K in NumericKey<M, T>]?: SortSpec; };
|
|
226
|
+
readonly _avg?: { readonly [K in NumericKey<M, T>]?: SortSpec; };
|
|
227
|
+
readonly _min?: ColumnOrderBy<M, T>;
|
|
228
|
+
readonly _max?: ColumnOrderBy<M, T>;
|
|
229
|
+
};
|
|
230
|
+
type AggregateOrderByArg<M extends AnyModels, T extends keyof M> = AggregateOrderBy<M, T> | readonly AggregateOrderBy<M, T>[];
|
|
147
231
|
type SelectPart<M extends AnyModels, T extends keyof M, A> = A extends {
|
|
148
232
|
readonly select: readonly (infer K)[];
|
|
149
233
|
} ? Pick<Row<M, T>, Extract<K, keyof Row<M, T>>> : Row<M, T>;
|
|
150
|
-
|
|
234
|
+
/** `required: true` drops parents without the related row, so it is never `null`. */
|
|
235
|
+
type RelationPayload<M extends AnyModels, R, V> = R extends RelationTypes ? R["kind"] extends "many" ? Payload<M, Extract<R["table"], keyof M>, V extends true ? unknown : V>[] : R["nullable"] extends true ? V extends {
|
|
236
|
+
readonly required: true;
|
|
237
|
+
} ? Payload<M, Extract<R["table"], keyof M>, V> : Payload<M, Extract<R["table"], keyof M>, V extends true ? unknown : V> | null : Payload<M, Extract<R["table"], keyof M>, V extends true ? unknown : V> : never;
|
|
151
238
|
type IncludePart<M extends AnyModels, T extends keyof M, A> = A extends {
|
|
152
239
|
readonly include: infer I;
|
|
153
240
|
} ? { -readonly [R in keyof I & keyof Relations<M, T>]: RelationPayload<M, Relations<M, T>[R], I[R]>; } & CountPart<I> & ([keyof I & MeasureKey] extends [never] ? unknown : RelationMeasures<M, T, I>) : unknown;
|
|
@@ -184,7 +271,7 @@ type Payload<M extends AnyModels, T extends keyof M, A> = A extends {
|
|
|
184
271
|
} ? Simplify<SelectPart<M, T, A>> : Row<M, T>;
|
|
185
272
|
//#endregion
|
|
186
273
|
//#region src/core/spec.d.ts
|
|
187
|
-
type ReadMethod = "findMany" | "findFirst" | "findUnique" | "findById" | "count" | "aggregate" | "exists" | "paginate";
|
|
274
|
+
type ReadMethod = "findMany" | "findFirst" | "findOnly" | "findUnique" | "findById" | "count" | "aggregate" | "exists" | "paginate";
|
|
188
275
|
declare const resultType: unique symbol;
|
|
189
276
|
/**
|
|
190
277
|
* A read, described as plain JSON: build it with `betterSupabase.spec`, run it with
|
|
@@ -206,6 +293,7 @@ type NoSignal<A> = Omit<A, "signal">;
|
|
|
206
293
|
interface TableSpecs<M extends AnyModels, T extends TableKey<M>, E> {
|
|
207
294
|
findMany<const A extends NoSignal<FindManyArgs<M, T>> & FindExt<E, M, T>>(args?: A): QuerySpec<T, "findMany", Payload<M, T, A>[]>;
|
|
208
295
|
findFirst<const A extends NoSignal<FindFirstArgs<M, T>> & FindExt<E, M, T>>(args?: A): QuerySpec<T, "findFirst", Payload<M, T, A> | null>;
|
|
296
|
+
findOnly<const A extends NoSignal<FindOnlyArgs<M, T>> & FindExt<E, M, T>>(args: A): QuerySpec<T, "findOnly", Payload<M, T, A> | null>;
|
|
209
297
|
findUnique<const A extends NoSignal<ReadArgs<M, T>> & {
|
|
210
298
|
readonly where: UniqueWhere<M, T>;
|
|
211
299
|
} & FindExt<E, M, T>>(args: A): QuerySpec<T, "findUnique", Payload<M, T, A> | null>;
|
|
@@ -215,7 +303,7 @@ interface TableSpecs<M extends AnyModels, T extends TableKey<M>, E> {
|
|
|
215
303
|
exists(args?: {
|
|
216
304
|
readonly where?: WhereInput<M, T>;
|
|
217
305
|
} & FindExt<E, M, T>): QuerySpec<T, "exists", boolean>;
|
|
218
|
-
paginate<const A extends NoSignal<OffsetPageArgs<M, T> | CursorPageArgs<M, T>> & FindExt<E, M, T>>(args: A): QuerySpec<T, "paginate", PageOf<M, T, A>>;
|
|
306
|
+
paginate<const A extends NoSignal<OffsetPageArgs<M, T> | OffsetRangeArgs<M, T> | CursorPageArgs<M, T>> & FindExt<E, M, T>>(args: A): QuerySpec<T, "paginate", PageOf<M, T, A>>;
|
|
219
307
|
}
|
|
220
308
|
type Specs<M extends AnyModels, E> = { readonly [T in TableKey<M>]: TableSpecs<M, T, E>; };
|
|
221
309
|
declare function isQuerySpec(value: unknown): value is QuerySpec;
|
|
@@ -240,6 +328,15 @@ type ScalarValue<T> = T extends "int2" | "int4" | "int8" | "float4" | "float8" |
|
|
|
240
328
|
/** The value a parameter of type `T` takes. */
|
|
241
329
|
type ReadSetParamValue<T> = T extends `${infer E}[]` ? readonly ScalarValue<E>[] : ScalarValue<T>;
|
|
242
330
|
type ReadSetParams<P extends ReadSetParamTypes> = { readonly [K in keyof P]: ReadSetParamValue<P[K]>; };
|
|
331
|
+
/**
|
|
332
|
+
* Placeholders for the caller's identity, the third argument of a read
|
|
333
|
+
* set's builder. The function reads them in the database, so callers can't
|
|
334
|
+
* pass someone else's.
|
|
335
|
+
*/
|
|
336
|
+
interface ReadSetAuth {
|
|
337
|
+
/** The caller's user id: `auth.uid()` in the function, the JWT `sub` claim otherwise. */
|
|
338
|
+
readonly uid: string;
|
|
339
|
+
}
|
|
243
340
|
type ReadSetRole = "anon" | "authenticated";
|
|
244
341
|
/**
|
|
245
342
|
* Named reads that run together: one `stable` function over PostgREST (a
|
|
@@ -285,7 +382,7 @@ interface ReadSetOptions<P extends ReadSetParamTypes> {
|
|
|
285
382
|
* `p` holds placeholders, not values: pass them straight into `where` (or
|
|
286
383
|
* `in`), where the function reads them from its `p jsonb` argument.
|
|
287
384
|
*/
|
|
288
|
-
declare function defineReadSet<M extends AnyModels, D, F extends AnyFunctions, E, const N extends string, const P extends ReadSetParamTypes, const S extends Readonly<Record<string, QuerySpec>>>(betterSupabase: BetterSupabase<M, D, F, E>, name: N, options: ReadSetOptions<P>, build: (specs: Specs<M, E>, params: ReadSetParams<P
|
|
385
|
+
declare function defineReadSet<M extends AnyModels, D, F extends AnyFunctions, E, const N extends string, const P extends ReadSetParamTypes, const S extends Readonly<Record<string, QuerySpec>>>(betterSupabase: BetterSupabase<M, D, F, E>, name: N, options: ReadSetOptions<P>, build: (specs: Specs<M, E>, params: ReadSetParams<P>, auth: ReadSetAuth) => S): ReadSet<N, P, S>;
|
|
289
386
|
declare function isReadSet(value: unknown): value is ReadSet;
|
|
290
387
|
/** App keys of every table the set reads. */
|
|
291
388
|
declare function readSetTables(set: ReadSet, meta?: SchemaMeta): string[];
|
|
@@ -293,11 +390,30 @@ declare function readSetTables(set: ReadSet, meta?: SchemaMeta): string[];
|
|
|
293
390
|
//#region src/core/search.d.ts
|
|
294
391
|
/** `db.$search(table, args)`: the `k` rows nearest to `vector`. */
|
|
295
392
|
type SearchArgs<M extends AnyModels, T extends keyof M> = Pick<FindManyArgs<M, T>, "select" | "include" | "where" | "signal"> & {
|
|
296
|
-
/**
|
|
297
|
-
|
|
393
|
+
/**
|
|
394
|
+
* The query embedding, as numbers or pgvector text (`'[0.1,0.2]'`). Leave
|
|
395
|
+
* it out (or pass `null`) with `text` on a `hybrid` entry to rank by
|
|
396
|
+
* full-text search alone, such as when the embedding call failed.
|
|
397
|
+
*/
|
|
398
|
+
readonly vector?: readonly number[] | string | null;
|
|
298
399
|
/** Rows to return. Defaults to 10. */
|
|
299
400
|
readonly k?: number;
|
|
401
|
+
/**
|
|
402
|
+
* Values for the entry's `prefilter` columns, applied before ranking: a
|
|
403
|
+
* value or a list (`null` matches a null column).
|
|
404
|
+
*/
|
|
405
|
+
readonly filter?: Readonly<Record<string, unknown>>;
|
|
406
|
+
/** The text query a `hybrid` entry ranks with full-text search. */
|
|
407
|
+
readonly text?: string;
|
|
408
|
+
/** Adds `$score` to each row: the entry's similarity, fused and boosted. */
|
|
409
|
+
readonly score?: boolean;
|
|
300
410
|
};
|
|
411
|
+
/** What `db.$search` adds to each row with `score: true`. */
|
|
412
|
+
type SearchScore<A> = A extends {
|
|
413
|
+
readonly score: true;
|
|
414
|
+
} ? {
|
|
415
|
+
readonly $score: number;
|
|
416
|
+
} : unknown;
|
|
301
417
|
//#endregion
|
|
302
418
|
//#region src/core/stats.d.ts
|
|
303
419
|
/** Database work for one request (or one `db`). */
|
|
@@ -344,10 +460,49 @@ interface WriteArgs<M extends AnyModels, T extends keyof M> extends ReadArgs<M,
|
|
|
344
460
|
}
|
|
345
461
|
interface UpdateArgs<M extends AnyModels, T extends keyof M> extends WriteArgs<M, T> {
|
|
346
462
|
/**
|
|
347
|
-
*
|
|
348
|
-
*
|
|
463
|
+
* More conditions the row must meet, such as a tenant or a status. A row
|
|
464
|
+
* with this key that does not match returns `not_found`, in one request.
|
|
465
|
+
*/
|
|
466
|
+
readonly where?: WhereInput<M, T>;
|
|
467
|
+
/**
|
|
468
|
+
* Optimistic concurrency: the update only applies when the row still
|
|
469
|
+
* matches. Plain values mean equality; operators work as in `where`. A
|
|
470
|
+
* mismatch returns a `stale` error, found with a second request.
|
|
471
|
+
*/
|
|
472
|
+
readonly expect?: WhereInput<M, T>;
|
|
473
|
+
}
|
|
474
|
+
/** `updateMany` and `deleteMany` return the written rows with `returning: true`. */
|
|
475
|
+
type ManyResult<M extends AnyModels, T extends keyof M, A> = A extends {
|
|
476
|
+
readonly returning: true;
|
|
477
|
+
} ? Payload<M, T, A>[] : {
|
|
478
|
+
count: number;
|
|
479
|
+
};
|
|
480
|
+
interface ManyReturningArgs<M extends AnyModels, T extends keyof M> extends RequestArgs {
|
|
481
|
+
readonly where: WhereInput<M, T>;
|
|
482
|
+
/** Return the written rows instead of `{ count }`. */
|
|
483
|
+
readonly returning?: boolean;
|
|
484
|
+
/** The columns to return with `returning: true`. */
|
|
485
|
+
readonly select?: ReadArgs<M, T>["select"];
|
|
486
|
+
/** Related rows to return with `returning: true`. */
|
|
487
|
+
readonly include?: ReadArgs<M, T>["include"];
|
|
488
|
+
/**
|
|
489
|
+
* The most rows the call may change. When `where` matches more, the call
|
|
490
|
+
* fails with `max_affected` and changes nothing. Over PostgREST it needs
|
|
491
|
+
* PostgREST 13 or later (`Prefer: max-affected`).
|
|
492
|
+
*/
|
|
493
|
+
readonly maxAffected?: number;
|
|
494
|
+
/** How `{ count }` is counted over PostgREST. Defaults to `exact`. */
|
|
495
|
+
readonly count?: CountMode;
|
|
496
|
+
}
|
|
497
|
+
/** `createMany` and `upsertMany` options. */
|
|
498
|
+
interface WriteManyArgs<M extends AnyModels, T extends keyof M> extends WriteArgs<M, T> {
|
|
499
|
+
/**
|
|
500
|
+
* Columns some rows leave out become `null` instead of their column
|
|
501
|
+
* default. Defaults to `false`, so a left-out column takes its default.
|
|
349
502
|
*/
|
|
350
|
-
readonly
|
|
503
|
+
readonly defaultToNull?: boolean;
|
|
504
|
+
/** How `{ count }` is counted over PostgREST with `returning: false`. Defaults to `exact`. */
|
|
505
|
+
readonly count?: CountMode;
|
|
351
506
|
}
|
|
352
507
|
type ConflictTarget<M extends AnyModels, T extends keyof M> = "primaryKey" | UniqueKeyName<M, T> | readonly Extract<keyof Row<M, T>, string>[];
|
|
353
508
|
interface UpsertArgs<M extends AnyModels, T extends keyof M> extends WriteArgs<M, T> {
|
|
@@ -356,9 +511,9 @@ interface UpsertArgs<M extends AnyModels, T extends keyof M> extends WriteArgs<M
|
|
|
356
511
|
/** Keep the existing row instead of updating it (`ON CONFLICT DO NOTHING`). */
|
|
357
512
|
readonly ignoreDuplicates?: boolean;
|
|
358
513
|
}
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
}
|
|
514
|
+
type DeleteArgs = RequestArgs;
|
|
515
|
+
/** `upsertMany` options. */
|
|
516
|
+
interface UpsertManyArgs<M extends AnyModels, T extends keyof M> extends UpsertArgs<M, T>, WriteManyArgs<M, T> {}
|
|
362
517
|
type Returned<M extends AnyModels, T extends keyof M, A> = A extends {
|
|
363
518
|
readonly returning: false;
|
|
364
519
|
} ? null : Payload<M, T, A>;
|
|
@@ -368,6 +523,17 @@ type OffsetPageArgs<M extends AnyModels, T extends keyof M> = Omit<FindManyArgs<
|
|
|
368
523
|
readonly size: number;
|
|
369
524
|
/** Also count all matching rows. */
|
|
370
525
|
readonly count?: CountMode;
|
|
526
|
+
readonly offset?: never;
|
|
527
|
+
readonly limit?: never;
|
|
528
|
+
};
|
|
529
|
+
type OffsetRangeArgs<M extends AnyModels, T extends keyof M> = Omit<FindManyArgs<M, T>, "limit" | "offset"> & {
|
|
530
|
+
/** Rows to skip before the page. */
|
|
531
|
+
readonly offset: number;
|
|
532
|
+
readonly limit: number;
|
|
533
|
+
/** Also count all matching rows. */
|
|
534
|
+
readonly count?: CountMode;
|
|
535
|
+
readonly page?: never;
|
|
536
|
+
readonly size?: never;
|
|
371
537
|
};
|
|
372
538
|
type CursorPageArgs<M extends AnyModels, T extends keyof M> = Omit<FindManyArgs<M, T>, "limit" | "offset"> & {
|
|
373
539
|
/** Cursor from the previous page, or `null` for the first page. */
|
|
@@ -397,6 +563,12 @@ interface Repository<M extends AnyModels, T extends TableKey<M>, E = unknown> {
|
|
|
397
563
|
readonly $meta: TableMeta;
|
|
398
564
|
findMany<const A extends FindManyArgs<M, T> & FindExt<E, M, T>>(args?: A): AsyncResult<Payload<M, T, A>[]>;
|
|
399
565
|
findFirst<const A extends FindFirstArgs<M, T> & FindExt<E, M, T>>(args?: A): AsyncResult<Payload<M, T, A> | null>;
|
|
566
|
+
/**
|
|
567
|
+
* The one row matching `where`, or `null` when none does, like supabase-js
|
|
568
|
+
* `maybeSingle()`. Several matching rows are a `multiple_rows` error, so
|
|
569
|
+
* a filter that should pick one row never reads an arbitrary one.
|
|
570
|
+
*/
|
|
571
|
+
findOnly<const A extends FindOnlyArgs<M, T> & FindExt<E, M, T>>(args: A): AsyncResult<Payload<M, T, A> | null>;
|
|
400
572
|
/**
|
|
401
573
|
* The row with these values for the primary key or one named unique key
|
|
402
574
|
* (`{ email }`, `{ organizationId, slug }`), or `null`.
|
|
@@ -412,66 +584,119 @@ interface Repository<M extends AnyModels, T extends TableKey<M>, E = unknown> {
|
|
|
412
584
|
* `groupBy` columns. Needs `pgrst.db_aggregates_enabled` over PostgREST.
|
|
413
585
|
*/
|
|
414
586
|
aggregate<const A extends AggregateArgs<M, T> & FindExt<E, M, T>>(args: A): AsyncResult<AggregateResult<M, T, A>>;
|
|
415
|
-
exists(args?: {
|
|
587
|
+
exists(args?: RequestArgs & {
|
|
416
588
|
readonly where?: WhereInput<M, T>;
|
|
417
|
-
readonly signal?: AbortSignal;
|
|
418
589
|
} & FindExt<E, M, T>): AsyncResult<boolean>;
|
|
419
|
-
paginate<const A extends (OffsetPageArgs<M, T> | CursorPageArgs<M, T>) & FindExt<E, M, T>>(args: A): AsyncResult<PageOf<M, T, A>>;
|
|
590
|
+
paginate<const A extends (OffsetPageArgs<M, T> | OffsetRangeArgs<M, T> | CursorPageArgs<M, T>) & FindExt<E, M, T>>(args: A): AsyncResult<PageOf<M, T, A>>;
|
|
420
591
|
create<const A extends WriteArgs<M, T> = {}>(data: Insert<M, T>, args?: A): AsyncResult<Returned<M, T, A>>;
|
|
421
|
-
createMany<const A extends
|
|
592
|
+
createMany<const A extends WriteManyArgs<M, T> = {}>(rows: readonly Insert<M, T>[], args?: A): AsyncResult<A extends {
|
|
422
593
|
readonly returning: false;
|
|
423
594
|
} ? {
|
|
424
595
|
count: number;
|
|
425
596
|
} : Payload<M, T, A>[]>;
|
|
426
597
|
update<const A extends UpdateArgs<M, T> = {}>(id: PrimaryKeyValue<M, T>, patch: Update<M, T>, args?: A): AsyncResult<Returned<M, T, A>>;
|
|
427
|
-
|
|
428
|
-
|
|
598
|
+
/**
|
|
599
|
+
* Fails with `invalid_request` when `where` filters no rows (it is empty or
|
|
600
|
+
* every value is `undefined`), unless `allowAll` is `true`.
|
|
601
|
+
*/
|
|
602
|
+
updateMany<const A extends ManyReturningArgs<M, T> & {
|
|
429
603
|
readonly data: Update<M, T>;
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
}>;
|
|
604
|
+
/** Update every visible row when `where` filters nothing. */
|
|
605
|
+
readonly allowAll?: boolean;
|
|
606
|
+
} & FindExt<E, M, T>>(args: A): AsyncResult<ManyResult<M, T, A>>;
|
|
434
607
|
upsert<const A extends UpsertArgs<M, T> = {}>(data: Insert<M, T>, args?: A): AsyncResult<A extends {
|
|
435
608
|
readonly ignoreDuplicates: true;
|
|
436
609
|
} ? Returned<M, T, A> | null : Returned<M, T, A>>;
|
|
437
|
-
upsertMany<const A extends
|
|
610
|
+
upsertMany<const A extends UpsertManyArgs<M, T> = {}>(rows: readonly Insert<M, T>[], args?: A): AsyncResult<A extends {
|
|
438
611
|
readonly returning: false;
|
|
439
612
|
} ? {
|
|
440
613
|
count: number;
|
|
441
614
|
} : Payload<M, T, A>[]>;
|
|
442
615
|
/** Returns a `not_found` error when no visible row has this key. */
|
|
443
616
|
delete(id: PrimaryKeyValue<M, T>, args?: DeleteArgs & DeleteExt<E, M, T>): AsyncResult<void>;
|
|
444
|
-
deleteMany(args:
|
|
445
|
-
readonly where: WhereInput<M, T>;
|
|
446
|
-
readonly signal?: AbortSignal;
|
|
447
|
-
} & DeleteExt<E, M, T> & FindExt<E, M, T>): AsyncResult<{
|
|
448
|
-
count: number;
|
|
449
|
-
}>;
|
|
617
|
+
deleteMany<const A extends ManyReturningArgs<M, T> & DeleteExt<E, M, T> & FindExt<E, M, T>>(args: A): AsyncResult<ManyResult<M, T, A>>;
|
|
450
618
|
/** Adds methods built on this repository. */
|
|
451
619
|
extend<X extends object>(build: (base: this) => X): this & X;
|
|
452
620
|
}
|
|
453
621
|
type RepositoryOf<M extends AnyModels, T extends TableKey<M>, E> = Repository<M, T, E> & ApplyExtension<E, M, T, "methods">;
|
|
454
|
-
interface RpcOptions<R> {
|
|
455
|
-
|
|
456
|
-
|
|
622
|
+
interface RpcOptions<R> extends RequestArgs {
|
|
623
|
+
/**
|
|
624
|
+
* Validates the return value after decoding, so the schema sees the
|
|
625
|
+
* configured casing and codecs; the result carries its output type.
|
|
626
|
+
*/
|
|
457
627
|
readonly returns?: StandardSchemaV1<unknown, R>;
|
|
458
628
|
readonly schema?: string;
|
|
629
|
+
/**
|
|
630
|
+
* Return what PostgREST sent, with database names and no codecs. Rows of a
|
|
631
|
+
* table or a `returns table (...)` record are decoded like reads otherwise.
|
|
632
|
+
*/
|
|
633
|
+
readonly raw?: boolean;
|
|
459
634
|
}
|
|
460
635
|
type RpcArgs<F extends AnyFunctions, N extends keyof F> = Record<never, never> extends F[N]["Args"] ? [args?: F[N]["Args"]] : [args: F[N]["Args"]];
|
|
636
|
+
type IsUnion<T, U = T> = T extends unknown ? [U] extends [T] ? false : true : never;
|
|
637
|
+
/** Names generated as a union of `{ Args; Returns }`, one per overload. */
|
|
638
|
+
type OverloadedName<F extends AnyFunctions> = { [K in keyof F]: true extends IsUnion<F[K]> ? K : never; }[keyof F] & string;
|
|
639
|
+
type PlainName<F extends AnyFunctions> = Exclude<Extract<keyof F, string>, OverloadedName<F>>;
|
|
640
|
+
/** Overloaded names with an overload that a call without arguments matches. */
|
|
641
|
+
type NoArgName<F extends AnyFunctions> = { [K in OverloadedName<F>]: Record<never, never> extends F[K]["Args"] ? K : never; }[OverloadedName<F>];
|
|
642
|
+
/** Property names without index signatures (`Record<PropertyKey, never>` has none). */
|
|
643
|
+
type KnownKeys<T> = keyof { [K in keyof T as string extends K ? never : number extends K ? never : symbol extends K ? never : K]: 0; };
|
|
644
|
+
type RequiredKeys<T> = { [K in keyof T]-?: Record<never, never> extends Pick<T, K> ? never : K; }[keyof T];
|
|
645
|
+
/**
|
|
646
|
+
* The overloads PostgREST can pick for arguments `A`: every name in `A` is an
|
|
647
|
+
* argument, and every argument without a default is in `A`. Overloads with
|
|
648
|
+
* the same names stay a union, since the call can't tell them apart.
|
|
649
|
+
*/
|
|
650
|
+
type MatchingOverload<O, A> = A extends unknown ? O extends {
|
|
651
|
+
readonly Args: infer OA;
|
|
652
|
+
} ? [Exclude<keyof A, KnownKeys<OA>>] extends [never] ? [Exclude<RequiredKeys<OA>, keyof A>] extends [never] ? O : never : never : never : never;
|
|
653
|
+
type OverloadReturns<O, A> = [MatchingOverload<O, A>] extends [never] ? O extends {
|
|
654
|
+
readonly Returns: infer R;
|
|
655
|
+
} ? R : never : MatchingOverload<O, A> extends {
|
|
656
|
+
readonly Returns: infer R;
|
|
657
|
+
} ? R : never;
|
|
658
|
+
/**
|
|
659
|
+
* `A` when its names pick an overload, with a name that no overload takes
|
|
660
|
+
* typed `never`, and `never` when the names mix overloads.
|
|
661
|
+
*/
|
|
662
|
+
type OverloadArgs<O extends {
|
|
663
|
+
readonly Args: unknown;
|
|
664
|
+
}, A> = A & NoInfer<[MatchingOverload<O, A>] extends [never] ? never : { readonly [K in Exclude<keyof A, O extends {
|
|
665
|
+
readonly Args: infer OA;
|
|
666
|
+
} ? KnownKeys<OA> : never>]: never; }>;
|
|
667
|
+
type RawRpcOptions = Omit<RpcOptions<unknown>, "returns" | "raw"> & {
|
|
668
|
+
readonly raw: true;
|
|
669
|
+
};
|
|
461
670
|
interface DbHelpers<M extends AnyModels, F extends AnyFunctions, E, C> {
|
|
462
671
|
/** The underlying client (supabase-js), for anything the repository lacks. */
|
|
463
672
|
readonly $client: C;
|
|
464
673
|
readonly $executor: Executor;
|
|
465
674
|
readonly $context: RequestContext;
|
|
466
|
-
/**
|
|
467
|
-
|
|
675
|
+
/**
|
|
676
|
+
* Calls a database function with typed arguments. Rows of a table or a
|
|
677
|
+
* `returns table (...)` record come back in the configured casing, with
|
|
678
|
+
* codecs applied; `raw: true` returns them as PostgREST sent them.
|
|
679
|
+
*/
|
|
680
|
+
$rpc<N extends PlainName<F>>(name: N, ...rest: [...RpcArgs<F, N>, options: RawRpcOptions]): AsyncResult<unknown>;
|
|
681
|
+
$rpc<N extends PlainName<F>, R = F[N]["Returns"]>(name: N, ...rest: [...RpcArgs<F, N>, options?: RpcOptions<R>]): AsyncResult<R>;
|
|
682
|
+
/**
|
|
683
|
+
* An overloaded function: the arguments match one overload, and the
|
|
684
|
+
* result is the return type of the overloads with those argument names.
|
|
685
|
+
*/
|
|
686
|
+
$rpc<N extends OverloadedName<F>, const A extends F[N]["Args"]>(name: N, args: OverloadArgs<F[N], A>, options: RawRpcOptions): AsyncResult<unknown>;
|
|
687
|
+
$rpc<N extends OverloadedName<F>, const A extends F[N]["Args"], R = OverloadReturns<F[N], A>>(name: N, args: OverloadArgs<F[N], A>, options?: RpcOptions<R>): AsyncResult<R>;
|
|
688
|
+
$rpc<N extends NoArgName<F>>(name: N): AsyncResult<OverloadReturns<F[N], Record<never, never>>>;
|
|
468
689
|
/** Same connection with more context (for example a tenant). */
|
|
469
690
|
$with(context: RequestContext): Db<M, F, E, C>;
|
|
470
691
|
/**
|
|
471
692
|
* Same connection without plugins: no tenant scoping, soft-delete filters,
|
|
472
693
|
* timestamps, rules or executor wrappers. For migrations and admin tools.
|
|
694
|
+
* `keep` names plugins to leave installed, such as tracing (`keep: ["otel"]`);
|
|
695
|
+
* a name that isn't installed throws a `TypeError`.
|
|
473
696
|
*/
|
|
474
|
-
$withoutPlugins(
|
|
697
|
+
$withoutPlugins(options?: {
|
|
698
|
+
readonly keep?: readonly string[];
|
|
699
|
+
}): Db<M, F, unknown, C>;
|
|
475
700
|
/**
|
|
476
701
|
* The repository for a table named at runtime (MCP tools, admin screens).
|
|
477
702
|
* Throws a `TypeError` for unknown names.
|
|
@@ -499,10 +724,10 @@ interface DbHelpers<M extends AnyModels, F extends AnyFunctions, E, C> {
|
|
|
499
724
|
}): AsyncResult<{ -readonly [K in keyof S]: InferResult<S[K]>; }>;
|
|
500
725
|
/**
|
|
501
726
|
* The `k` rows nearest to `vector`, nearest first, through the
|
|
502
|
-
* `search_<table>` function of the `vector-search` SQL
|
|
727
|
+
* `search_<table>` function of the `vector-search` SQL module. RLS
|
|
503
728
|
* applies inside the search; `where` filters the `k` rows it returns.
|
|
504
729
|
*/
|
|
505
|
-
$search<T extends TableKey<M>, const A extends SearchArgs<M, T>>(table: T, args: A): AsyncResult<Payload<M, T, A>[]>;
|
|
730
|
+
$search<T extends TableKey<M>, const A extends SearchArgs<M, T>>(table: T, args: A): AsyncResult<(Payload<M, T, A> & SearchScore<A>)[]>;
|
|
506
731
|
}
|
|
507
732
|
type Db<M extends AnyModels, F extends AnyFunctions, E, C> = { readonly [T in TableKey<M>]: RepositoryOf<M, T, E>; } & DbHelpers<M, F, E, C>;
|
|
508
733
|
//#endregion
|
|
@@ -553,18 +778,53 @@ interface PostgrestClientLike {
|
|
|
553
778
|
schema?(schema: never): unknown;
|
|
554
779
|
rpc?(fn: never, args?: never): unknown;
|
|
555
780
|
}
|
|
556
|
-
|
|
781
|
+
interface PostgrestExecutorOptions extends PostgrestCompileOptions {
|
|
782
|
+
/**
|
|
783
|
+
* The longest query string a read may send, in characters. A longer read
|
|
784
|
+
* is split along its longest `in` list into reads that fit, or fails with
|
|
785
|
+
* `invalid_request` when it can't be split. Defaults to 6000, below the
|
|
786
|
+
* 8 KB request line the Supabase API gateway and common proxies accept,
|
|
787
|
+
* or to the client's `db.urlLengthLimit` when that is lower.
|
|
788
|
+
*/
|
|
789
|
+
readonly urlLengthLimit?: number;
|
|
790
|
+
/**
|
|
791
|
+
* Aborts each request after this many milliseconds with a `timeout`
|
|
792
|
+
* error. A call's own `timeout` replaces it. Off by default.
|
|
793
|
+
*/
|
|
794
|
+
readonly timeout?: number;
|
|
795
|
+
/**
|
|
796
|
+
* postgrest-js retries of idempotent requests (GET and HEAD) on network
|
|
797
|
+
* errors, 503 and 520. A call's own `retry` replaces it. Defaults to the
|
|
798
|
+
* client's setting, which is on.
|
|
799
|
+
*/
|
|
800
|
+
readonly retry?: boolean;
|
|
801
|
+
}
|
|
802
|
+
/** Executes IR operations through a supabase-js client. */
|
|
803
|
+
declare function postgrestExecutor(client: PostgrestClientLike, options?: PostgrestExecutorOptions): Executor;
|
|
557
804
|
/** The compiled plan for an operation; useful for debugging and tests. */
|
|
558
|
-
declare function explainPostgrest(op: Operation): PostgrestPlan;
|
|
805
|
+
declare function explainPostgrest(op: Operation, options?: PostgrestCompileOptions): PostgrestPlan;
|
|
559
806
|
//#endregion
|
|
560
807
|
//#region src/core/define.d.ts
|
|
561
808
|
interface SupabaseOptions {
|
|
562
809
|
/** Clock used by plugins (timestamps, soft delete). */
|
|
563
810
|
readonly now?: () => Temporal.Instant;
|
|
811
|
+
/**
|
|
812
|
+
* The `Temporal` namespace, for runtimes without a global one (Hermes,
|
|
813
|
+
* Node 24) when patching `globalThis` is not an option:
|
|
814
|
+
* `import { Temporal } from 'temporal-polyfill'`. Defaults to `globalThis.Temporal`.
|
|
815
|
+
*/
|
|
816
|
+
readonly temporal?: typeof Temporal;
|
|
564
817
|
/** Extra error mappers, run before plugin mappers. */
|
|
565
818
|
readonly errors?: readonly ErrorMapper[];
|
|
566
819
|
/** Receives errors from event handlers, hooks and cache adapters. Defaults to `console`. */
|
|
567
820
|
readonly logger?: Logger;
|
|
821
|
+
/**
|
|
822
|
+
* Debug records on `logger` for every query, database error, session
|
|
823
|
+
* refresh and auth resolution: table, operation, outcome, timing and row
|
|
824
|
+
* count, never tokens, row values, filters or error messages. Off by
|
|
825
|
+
* default; with it off, no handler runs.
|
|
826
|
+
*/
|
|
827
|
+
readonly diagnostics?: boolean;
|
|
568
828
|
/** RPCs that change tables, keyed by function name. Prefer `betterSupabase.defineRpc()`. */
|
|
569
829
|
readonly rpc?: Readonly<Record<string, RpcDefinition>>;
|
|
570
830
|
/** Builds the error `.orThrow()` throws. Prefer `betterSupabase.mapError()`. */
|
|
@@ -579,6 +839,20 @@ interface SupabaseOptions {
|
|
|
579
839
|
* and logs a warning once per table. Defaults to 1000, the hosted default.
|
|
580
840
|
*/
|
|
581
841
|
readonly maxRows?: number;
|
|
842
|
+
/**
|
|
843
|
+
* The longest query string one PostgREST read sends, like supabase-js
|
|
844
|
+
* `db.urlLengthLimit`. Longer reads are split along their longest `in`
|
|
845
|
+
* list. Defaults to 6000 characters, or the client's `db.urlLengthLimit`
|
|
846
|
+
* when that is lower.
|
|
847
|
+
*/
|
|
848
|
+
readonly urlLengthLimit?: number;
|
|
849
|
+
/**
|
|
850
|
+
* The PostgREST version the app talks to, as in `postgrestVersion` in
|
|
851
|
+
* the better-supabase config. `maxAffected` needs 13 or later, and fails
|
|
852
|
+
* with `invalid_request` before any request on an older version.
|
|
853
|
+
* Defaults to `"13"`.
|
|
854
|
+
*/
|
|
855
|
+
readonly postgrestVersion?: string;
|
|
582
856
|
}
|
|
583
857
|
interface ConnectOptions {
|
|
584
858
|
/** Also records this connection's calls into a request-wide recorder. */
|
|
@@ -588,6 +862,16 @@ interface ConnectOptions {
|
|
|
588
862
|
* stays the client (e.g. routing reads to a replica).
|
|
589
863
|
*/
|
|
590
864
|
readonly executor?: Executor;
|
|
865
|
+
/**
|
|
866
|
+
* Fails each repository call and `$rpc` after this many milliseconds with
|
|
867
|
+
* a `timeout` error. A call's own `timeout` replaces it.
|
|
868
|
+
*/
|
|
869
|
+
readonly timeout?: number;
|
|
870
|
+
/**
|
|
871
|
+
* postgrest-js retries of idempotent requests for this connection; a
|
|
872
|
+
* call's own `retry` replaces it. Defaults to the client's setting.
|
|
873
|
+
*/
|
|
874
|
+
readonly retry?: boolean;
|
|
591
875
|
}
|
|
592
876
|
interface RpcDefinition {
|
|
593
877
|
/** App keys of the tables the function writes; their cached reads are invalidated on success. */
|
|
@@ -605,6 +889,8 @@ declare class BetterSupabase<M extends AnyModels = AnyModels, D = unknown, F ext
|
|
|
605
889
|
readonly options: SupabaseOptions;
|
|
606
890
|
constructor(schema: Schema<M, D, F>, plugins?: readonly AnyPlugin[], options?: SupabaseOptions, events?: EventHub);
|
|
607
891
|
get meta(): SchemaMeta;
|
|
892
|
+
/** The `Temporal` this definition uses: the `temporal` option, else the global. */
|
|
893
|
+
get temporal(): typeof Temporal | undefined;
|
|
608
894
|
/** The schema set by `claims()`; its output types `session.claims`. */
|
|
609
895
|
get claimsSchema(): StandardSchemaV1<unknown, C> | undefined;
|
|
610
896
|
/** The schema set by `userMetadata()`; its output types `session.profile`. */
|
|
@@ -675,6 +961,12 @@ declare class BetterSupabase<M extends AnyModels = AnyModels, D = unknown, F ext
|
|
|
675
961
|
*/
|
|
676
962
|
connect<C extends PostgrestClientLike>(client: C, context?: RequestContext, options?: ConnectOptions): Db<M, F, E, C>;
|
|
677
963
|
connect(executor: Executor, context?: RequestContext, options?: ConnectOptions): Db<M, F, E, undefined>;
|
|
964
|
+
/**
|
|
965
|
+
* The `postgrestExecutor` options this definition implies
|
|
966
|
+
* (`urlLengthLimit`, `postgrestVersion`), for adapters that build their
|
|
967
|
+
* own executor and should chunk reads the same way.
|
|
968
|
+
*/
|
|
969
|
+
executorOptions(): PostgrestExecutorOptions;
|
|
678
970
|
}
|
|
679
971
|
/**
|
|
680
972
|
* Creates the data-layer definition from the generated `schema`.
|
|
@@ -685,4 +977,4 @@ declare class BetterSupabase<M extends AnyModels = AnyModels, D = unknown, F ext
|
|
|
685
977
|
*/
|
|
686
978
|
declare function defineSupabase<M extends AnyModels, D, F extends AnyFunctions>(schema: Schema<M, D, F>, options?: SupabaseOptions): BetterSupabase<M, D, F>;
|
|
687
979
|
//#endregion
|
|
688
|
-
export {
|
|
980
|
+
export { ReadSetResult as $, PageOf as A, OrderByArg as At, DbStats as B, DeleteExt as C, IncludeArg as Ct, OffsetPage as D, MeasureKey as Dt, ManyReturningArgs as E, MeasureArg as Et, UpdateArgs as F, RequestArgs as Ft, InferReadSetParams as G, StatsRecorder as H, UpsertArgs as I, SelectArg as It, ReadSetOptions as J, ReadSet as K, UpsertManyArgs as L, SortDirection as Lt, RepositoryOf as M, Payload as Mt, Returned as N, ReadArgs as Nt, OffsetPageArgs as O, MutableWhere as Ot, RpcOptions as P, RelationMeasureArg as Pt, ReadSetParams as Q, WriteArgs as R, SortSpec as Rt, DeleteArgs as S, FindOnlyArgs as St, ManyResult as T, JsonPathOps as Tt, recordStats as U, EMPTY_STATS as V, SearchArgs as W, ReadSetParamTypes as X, ReadSetParamType as Y, ReadSetParamValue as Z, ConflictTarget as _, CountArg as _t, defineSupabase as a, ReadMethod as at, Db as b, FindFirstArgs as bt, explainPostgrest as c, isQuerySpec as ct, CacheTarget as d, AggregateOrderBy as dt, defineReadSet as et, MemoryCache as f, AggregateOrderByArg as ft, rpcCacheTargets as g, ColumnOrderByArg as gt, rowKey as h, ColumnOrderBy as ht, SupabaseOptions as i, QuerySpec as it, Repository as j, OrderByInput as jt, OffsetRangeArgs as k, NumericMeasureArg as kt, postgrestExecutor as l, specTables as lt, memoryCache as m, AggregateRow as mt, ConnectOptions as n, readSetTables as nt, PostgrestClientLike as o, Specs as ot, cacheTargetOf as p, AggregateResult as pt, ReadSetAuth as q, RpcDefinition as r, InferResult as rt, PostgrestExecutorOptions as s, TableSpecs as st, BetterSupabase as t, isReadSet as tt, CacheAdapter as u, AggregateArgs as ut, CursorPage as v, CountArgs as vt, FindExt as w, IncludeArgs as wt, DbHelpers as x, FindManyArgs as xt, CursorPageArgs as y, FieldFilter as yt, WriteManyArgs as z, WhereInput as zt };
|