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
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { a as AiMessage, p as AiToolApprovalPart } from "./message-CfDoR0Y6.js";
|
|
2
|
+
import { ModelMessage, UIMessage } from "ai";
|
|
3
|
+
//#region src/ai-sdk/messages.d.ts
|
|
4
|
+
/** The `format` the chat tree stores next to an AI SDK message it keeps as is. */
|
|
5
|
+
declare const AI_SDK_UI_FORMAT = "ai-sdk-ui";
|
|
6
|
+
/** The output a denied tool call gets in the canonical history. */
|
|
7
|
+
declare const DENIED_TOOL_OUTPUT = "The tool call was denied.";
|
|
8
|
+
/** Whether `value` has the shape of an AI SDK `UIMessage`. */
|
|
9
|
+
declare function isUIMessage(value: unknown): value is UIMessage;
|
|
10
|
+
/**
|
|
11
|
+
* The canonical form of an AI SDK `UIMessage`. Tool parts become a
|
|
12
|
+
* `tool-call`, then a `tool-approval` and a `tool-result` as far as the
|
|
13
|
+
* call got; parts with no canonical counterpart become `data` parts named
|
|
14
|
+
* `ui.<type>`.
|
|
15
|
+
*/
|
|
16
|
+
declare function fromUIMessage(message: UIMessage): AiMessage;
|
|
17
|
+
/**
|
|
18
|
+
* The AI SDK form of a canonical message: the stored native message when the
|
|
19
|
+
* tree kept one (`format: "ai-sdk-ui"`), otherwise a conversion. A `tool`
|
|
20
|
+
* message becomes an assistant message.
|
|
21
|
+
*/
|
|
22
|
+
declare function toUIMessage(message: AiMessage): UIMessage;
|
|
23
|
+
/**
|
|
24
|
+
* Converts a history. Tool results and approvals in later messages, such as
|
|
25
|
+
* the `tool` messages of other SDKs, update the tool part of the assistant
|
|
26
|
+
* message that made the call.
|
|
27
|
+
*/
|
|
28
|
+
declare function toUIMessages(messages: readonly AiMessage[]): UIMessage[];
|
|
29
|
+
/** A source a model step cited, as `StepResult.sources` holds it. */
|
|
30
|
+
interface ModelSource {
|
|
31
|
+
readonly sourceType: "url" | "document";
|
|
32
|
+
readonly id: string;
|
|
33
|
+
readonly url?: string;
|
|
34
|
+
readonly title?: string;
|
|
35
|
+
readonly mediaType?: string;
|
|
36
|
+
readonly providerMetadata?: unknown;
|
|
37
|
+
}
|
|
38
|
+
/** An approval decision the messages may no longer carry. */
|
|
39
|
+
interface ModelApproval {
|
|
40
|
+
readonly approvalId: string;
|
|
41
|
+
readonly toolCallId: string;
|
|
42
|
+
readonly state: AiToolApprovalPart["state"];
|
|
43
|
+
readonly reason?: string;
|
|
44
|
+
}
|
|
45
|
+
interface FromModelMessagesOptions {
|
|
46
|
+
/** The sources the steps cited; model messages don't keep them. */
|
|
47
|
+
readonly sources?: readonly ModelSource[];
|
|
48
|
+
/** Decisions to apply over the approval parts the messages hold. */
|
|
49
|
+
readonly approvals?: readonly ModelApproval[];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* One answer in the canonical form, from the model messages an agent added
|
|
53
|
+
* in a turn (`result.messages` after the history). Each assistant message
|
|
54
|
+
* starts a step whose id is `<id>:<n>`, so saving the answer again after
|
|
55
|
+
* another step updates the same message.
|
|
56
|
+
*/
|
|
57
|
+
declare function fromModelMessages(id: string, messages: readonly ModelMessage[], options?: FromModelMessagesOptions): AiMessage;
|
|
58
|
+
//#endregion
|
|
59
|
+
export { ModelSource as a, isUIMessage as c, ModelApproval as i, toUIMessage as l, DENIED_TOOL_OUTPUT as n, fromModelMessages as o, FromModelMessagesOptions as r, fromUIMessage as s, AI_SDK_UI_FORMAT as t, toUIMessages as u };
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { b as DbError } from "./result-D7y2fT87.js";
|
|
2
2
|
//#region src/auth/impersonation.d.ts
|
|
3
3
|
/** The admin acting as the user, from the RFC 8693 `act` claim. */
|
|
4
4
|
interface Impersonator {
|
|
5
|
+
/** `act.kind`: a support session or an impersonated session. */
|
|
6
|
+
readonly kind: "support" | "impersonation";
|
|
5
7
|
readonly id: string;
|
|
6
8
|
readonly reason?: string;
|
|
7
9
|
/** The support session, when the admin started one (`act.session_id`). */
|
|
@@ -14,7 +16,11 @@ interface ImpersonationOptions {
|
|
|
14
16
|
readonly actor: string;
|
|
15
17
|
readonly reason: string;
|
|
16
18
|
}
|
|
17
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* The admin in `claims.act`: a support session or an impersonated session
|
|
21
|
+
* (`actorOf` reads the same level, so the two always agree). `undefined`
|
|
22
|
+
* for a normal session, an OAuth client or agent chain, and an invalid `act`.
|
|
23
|
+
*/
|
|
18
24
|
declare function impersonatorOf(claims: Readonly<Record<string, unknown>>): Impersonator | undefined;
|
|
19
25
|
//#endregion
|
|
20
26
|
//#region src/auth/mfa.d.ts
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
//#region src/config/modules.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* `sql.modules` in `better-supabase.config.ts`: how each SQL module maps onto
|
|
4
|
+
* the app's database. A module's contract (the functions other modules and
|
|
5
|
+
* the TypeScript side call) stays the same in every mode; only the tables
|
|
6
|
+
* behind it change.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* `managed`: the module owns its tables. `adopt`: the module writes its functions
|
|
10
|
+
* and views over tables the app already has (`tables` and `columns`), never
|
|
11
|
+
* `create table`. `custom`: the app implements the contract functions itself;
|
|
12
|
+
* the module writes nothing and doctor checks the signatures (BS307).
|
|
13
|
+
*/
|
|
14
|
+
type ModuleMode = "managed" | "adopt" | "custom";
|
|
15
|
+
/** Options every module takes. */
|
|
16
|
+
interface ModuleConfig {
|
|
17
|
+
readonly mode?: ModuleMode;
|
|
18
|
+
/** Schema of the module's functions and managed tables. Defaults to `better_supabase`. */
|
|
19
|
+
readonly schema?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Logical table to `table` or `schema.table`, e.g.
|
|
22
|
+
* `{ memberships: 'public.organization_users' }`. An unqualified name is in
|
|
23
|
+
* `schema`. `null` marks an optional table the app doesn't have.
|
|
24
|
+
*/
|
|
25
|
+
readonly tables?: Readonly<Record<string, string | null>>;
|
|
26
|
+
/**
|
|
27
|
+
* Logical table to logical column to column name, e.g.
|
|
28
|
+
* `{ memberships: { tenant: 'organization_id', role: 'role_id' } }`.
|
|
29
|
+
* `null` marks an optional column the adopted table doesn't have.
|
|
30
|
+
*/
|
|
31
|
+
readonly columns?: Readonly<Record<string, Readonly<Record<string, string | null>>>>;
|
|
32
|
+
/** Type of tenant ids: `uuid` (default), `text`, `bigint` or `integer`. */
|
|
33
|
+
readonly idType?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Module action to permission key, checked through the access contract, e.g.
|
|
36
|
+
* `{ invite: 'organization.members.invite' }`.
|
|
37
|
+
*/
|
|
38
|
+
readonly permissions?: Readonly<Record<string, string>>;
|
|
39
|
+
/** Module-specific options; each module's docs page lists them. */
|
|
40
|
+
readonly options?: Readonly<Record<string, unknown>>;
|
|
41
|
+
/**
|
|
42
|
+
* The app's optional `before_*` and `after_*` functions the module calls
|
|
43
|
+
* when they exist, e.g. `after_organization_create(organization, user)`. They are
|
|
44
|
+
* looked up in `schema` (default `public`); `functions` maps a hook name
|
|
45
|
+
* to another function, e.g. `{ after_organization_create: 'app.seed_organization' }`.
|
|
46
|
+
*/
|
|
47
|
+
readonly hooks?: {
|
|
48
|
+
readonly schema?: string;
|
|
49
|
+
readonly functions?: Readonly<Record<string, string>>;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Whether the module writes its events to the outbox (`emit_event`) when
|
|
53
|
+
* the `outbox` module is installed. Defaults to true.
|
|
54
|
+
*/
|
|
55
|
+
readonly events?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Whether the module writes its actions to the audit log (`audit_event`)
|
|
58
|
+
* when the `audit` module is installed. Defaults to true.
|
|
59
|
+
*/
|
|
60
|
+
readonly audit?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* A schema for the Data API, such as `api`: the module writes a
|
|
63
|
+
* `security invoker` wrapper there for each of its functions that `anon`
|
|
64
|
+
* or `authenticated` may execute (or only those in `functions`), so
|
|
65
|
+
* `rpcTransport(supabase, { schema: "api" })` reaches them without
|
|
66
|
+
* exposing the module schema (doctor BS312).
|
|
67
|
+
*/
|
|
68
|
+
readonly api?: string | {
|
|
69
|
+
readonly schema: string;
|
|
70
|
+
readonly functions?: readonly string[];
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Where the active tenant of a request comes from. Every source counts only
|
|
75
|
+
* while the caller is a member, so a stale claim or setting grants nothing.
|
|
76
|
+
*/
|
|
77
|
+
type ActiveTenantSource = "claim" | "resolver" | {
|
|
78
|
+
readonly profileColumn: string;
|
|
79
|
+
readonly key?: string;
|
|
80
|
+
};
|
|
81
|
+
/** URL tenancy: the tenant comes from the request (a slug), not a stored setting. */
|
|
82
|
+
declare const DEFAULT_ACTIVE_TENANT: ActiveTenantSource;
|
|
83
|
+
/**
|
|
84
|
+
* The access contract every module checks permissions through:
|
|
85
|
+
* `can(scope, id, permission)`, `tenant_ids_with(permission)`,
|
|
86
|
+
* `is_platform(permission)` and `can_user(user, scope, id, permission)`.
|
|
87
|
+
*/
|
|
88
|
+
/**
|
|
89
|
+
* A table whose row says whether a tenant or a user is active. Needs
|
|
90
|
+
* `disabledAt`, `status` with `active`, or both.
|
|
91
|
+
*/
|
|
92
|
+
interface DisabledRow {
|
|
93
|
+
/** `schema.table`. */
|
|
94
|
+
readonly table: string;
|
|
95
|
+
/** The column holding the tenant id or the user id. */
|
|
96
|
+
readonly id: string;
|
|
97
|
+
/** A nullable timestamp column; a row with a value is disabled. */
|
|
98
|
+
readonly disabledAt?: string;
|
|
99
|
+
/** A status column; only a row whose value is in `active` is active. */
|
|
100
|
+
readonly status?: string;
|
|
101
|
+
readonly active?: readonly string[];
|
|
102
|
+
}
|
|
103
|
+
interface AccessModuleConfig extends ModuleConfig {
|
|
104
|
+
/**
|
|
105
|
+
* `roles`: a fixed role list from `roles` (the default). `catalog`: role,
|
|
106
|
+
* permission and override tables (`tables.roles`, `permissions`,
|
|
107
|
+
* `rolePermissions`, `overrides`, `platformAssignments`). `provider`: the
|
|
108
|
+
* functions of the config's `authorization` provider. `custom`:
|
|
109
|
+
* expression templates in `functions`.
|
|
110
|
+
*/
|
|
111
|
+
readonly model?: "roles" | "catalog" | "provider" | "custom";
|
|
112
|
+
/**
|
|
113
|
+
* `roles` model: role name to permission keys. `*` grants everything and
|
|
114
|
+
* `prefix.*` a prefix. Defaults to owner, admin, member and viewer.
|
|
115
|
+
*/
|
|
116
|
+
readonly roles?: Readonly<Record<string, readonly string[]>>;
|
|
117
|
+
/**
|
|
118
|
+
* `custom` model: SQL expressions with `{scope}`, `{id}`, `{permission}`
|
|
119
|
+
* and `{user}` placeholders, e.g.
|
|
120
|
+
* `{ can: 'public.authorize_scope({scope}::public.scope_type, {id}, {permission})' }`.
|
|
121
|
+
*/
|
|
122
|
+
readonly functions?: {
|
|
123
|
+
readonly can?: string;
|
|
124
|
+
readonly tenantIdsWith?: string;
|
|
125
|
+
readonly isPlatform?: string;
|
|
126
|
+
readonly canUser?: string;
|
|
127
|
+
/**
|
|
128
|
+
* `{tenant}` and `{role}`: whether the caller may assign the role.
|
|
129
|
+
* Required by the `custom` model. The `provider` model defaults to the
|
|
130
|
+
* provider's `canAssign`; without either, only the service role assigns
|
|
131
|
+
* roles unless the `tenant` module is installed, and doctor BS411 warns.
|
|
132
|
+
*/
|
|
133
|
+
readonly canAssign?: string;
|
|
134
|
+
/**
|
|
135
|
+
* `{user}`, `{tenant}` and `{role}`: whether that user may assign the
|
|
136
|
+
* role, for SQL that acts later for a stored user (an invitation accept
|
|
137
|
+
* checking the inviter again), as `can_assign_as`. The `provider` model
|
|
138
|
+
* defaults to the provider's `canAssignFor`.
|
|
139
|
+
*/
|
|
140
|
+
readonly canAssignFor?: string;
|
|
141
|
+
/** `{user}`: the permission claim for the access token hook. */
|
|
142
|
+
readonly permissionClaims?: string;
|
|
143
|
+
};
|
|
144
|
+
/**
|
|
145
|
+
* `roles` model: the JWT claim holding the caller's platform permission
|
|
146
|
+
* keys (an array). Defaults to `platform_permissions`.
|
|
147
|
+
*/
|
|
148
|
+
readonly platformClaim?: string;
|
|
149
|
+
/**
|
|
150
|
+
* What disables a tenant or a user. A string is a column that disables
|
|
151
|
+
* when set, as `schema.table.column`, keyed by the table's `id` (tenant)
|
|
152
|
+
* or the column named in `userKey` (user). An object is an active row:
|
|
153
|
+
* only a row whose `disabledAt` is null and whose `status` is in `active`
|
|
154
|
+
* is active, and a missing row counts as disabled. Disabled tenants and
|
|
155
|
+
* users get no permissions. Under the `provider` model both default to the
|
|
156
|
+
* provider's `suspension`.
|
|
157
|
+
*/
|
|
158
|
+
readonly disabled?: {
|
|
159
|
+
readonly tenant?: string | DisabledRow;
|
|
160
|
+
readonly user?: string | DisabledRow;
|
|
161
|
+
readonly userKey?: string;
|
|
162
|
+
};
|
|
163
|
+
readonly activeTenant?: ActiveTenantSource;
|
|
164
|
+
}
|
|
165
|
+
/** `sql.modules` in the config, keyed by module name. */
|
|
166
|
+
interface ModulesConfig {
|
|
167
|
+
readonly access?: AccessModuleConfig;
|
|
168
|
+
/** `AccessModuleConfig` is listed so an `access` literal passes the excess-property check. */
|
|
169
|
+
readonly [module: string]: ModuleConfig | AccessModuleConfig | undefined;
|
|
170
|
+
}
|
|
171
|
+
/** A module's config with defaults applied. */
|
|
172
|
+
interface ResolvedModule {
|
|
173
|
+
readonly mode: ModuleMode;
|
|
174
|
+
readonly schema: string;
|
|
175
|
+
readonly tables: Readonly<Record<string, string | null>>;
|
|
176
|
+
readonly columns: Readonly<Record<string, Readonly<Record<string, string | null>>>>;
|
|
177
|
+
readonly idType?: string;
|
|
178
|
+
readonly permissions: Readonly<Record<string, string>>;
|
|
179
|
+
readonly options: Readonly<Record<string, unknown>>;
|
|
180
|
+
readonly hooks: {
|
|
181
|
+
readonly schema: string;
|
|
182
|
+
readonly functions: Readonly<Record<string, string>>;
|
|
183
|
+
};
|
|
184
|
+
readonly events: boolean;
|
|
185
|
+
readonly audit: boolean;
|
|
186
|
+
readonly api?: {
|
|
187
|
+
readonly schema: string;
|
|
188
|
+
readonly functions?: readonly string[];
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
//#endregion
|
|
192
|
+
export { ModuleConfig as a, ResolvedModule as c, DisabledRow as i, ActiveTenantSource as n, ModuleMode as o, DEFAULT_ACTIVE_TENANT as r, ModulesConfig as s, AccessModuleConfig as t };
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { t as DEFAULT_CLAIMS } from "./claims-PqzCxaTD.js";
|
|
2
|
+
//#region src/config/authorization.ts
|
|
3
|
+
/**
|
|
4
|
+
* The error for a provider built for another API version, or `undefined`
|
|
5
|
+
* for version 1.
|
|
6
|
+
*/
|
|
7
|
+
function providerApiProblem(provider) {
|
|
8
|
+
const version = provider.apiVersion;
|
|
9
|
+
if (version === 1) return void 0;
|
|
10
|
+
return `authorization "${typeof provider.name === "string" ? provider.name : "provider"}" targets authorization provider API ${String(version)}; this better-supabase supports 1. Upgrade better-supabase or use a release of the provider for API 1.`;
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
//#region src/config/config.ts
|
|
14
|
+
/** The JSON Schema document for a `json[...].schema` entry. */
|
|
15
|
+
function resolveJsonSchema(source) {
|
|
16
|
+
const standard = source["~standard"];
|
|
17
|
+
if (standard === void 0) return source;
|
|
18
|
+
const jsonSchema = standard.jsonSchema;
|
|
19
|
+
if (typeof jsonSchema?.input !== "function") throw new TypeError("json[...].schema: this Standard Schema library does not implement Standard JSON Schema; pass a JSON Schema object instead");
|
|
20
|
+
return jsonSchema.input({ target: "draft-2020-12" });
|
|
21
|
+
}
|
|
22
|
+
function entitlementsOf(config = {}, provider) {
|
|
23
|
+
const customer = config.customer;
|
|
24
|
+
const dot = customer?.lastIndexOf(".") ?? -1;
|
|
25
|
+
if (customer !== void 0 && dot <= 0) throw new TypeError(`entitlements.customer must be "table.column", got "${customer}"`);
|
|
26
|
+
return {
|
|
27
|
+
...customer === void 0 ? {} : {
|
|
28
|
+
table: customer.slice(0, dot),
|
|
29
|
+
column: customer.slice(dot + 1)
|
|
30
|
+
},
|
|
31
|
+
key: config.key ?? "id",
|
|
32
|
+
memberships: config.memberships ?? (provider ? "provider" : "tenant"),
|
|
33
|
+
source: config.source ?? "stripe-sync",
|
|
34
|
+
...config.claim === void 0 ? {} : { claim: config.claim }
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function vectorSearchOf(config = {}) {
|
|
38
|
+
return Object.entries(config).map(([table, entry]) => typeof entry === "string" ? {
|
|
39
|
+
table,
|
|
40
|
+
column: entry,
|
|
41
|
+
distance: "cosine"
|
|
42
|
+
} : {
|
|
43
|
+
table,
|
|
44
|
+
column: entry.column,
|
|
45
|
+
distance: entry.distance ?? "cosine",
|
|
46
|
+
...entry.type === void 0 ? {} : { type: entry.type },
|
|
47
|
+
...entry.key === void 0 ? {} : { key: entry.key },
|
|
48
|
+
...entry.hybrid === void 0 ? {} : { hybrid: entry.hybrid },
|
|
49
|
+
...entry.boost === void 0 ? {} : { boost: entry.boost },
|
|
50
|
+
...entry.prefilter === void 0 ? {} : { prefilter: entry.prefilter },
|
|
51
|
+
...entry.predicate === void 0 ? {} : { predicate: entry.predicate },
|
|
52
|
+
...entry.boostMode === void 0 ? {} : { boostMode: entry.boostMode },
|
|
53
|
+
...entry.order === void 0 ? {} : { order: entry.order }
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
function sqlModulesOf(config = []) {
|
|
57
|
+
if (isModuleList(config)) return {
|
|
58
|
+
modules: {},
|
|
59
|
+
moduleNames: config
|
|
60
|
+
};
|
|
61
|
+
return {
|
|
62
|
+
modules: config,
|
|
63
|
+
moduleNames: Object.keys(config)
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function isModuleList(config) {
|
|
67
|
+
return Array.isArray(config);
|
|
68
|
+
}
|
|
69
|
+
const CONFIG_SCHEMA_URL = "https://unpkg.com/better-supabase/schemas/config-v1.json";
|
|
70
|
+
/** Identity helper that types `better-supabase.config.ts`. */
|
|
71
|
+
function defineConfig(config) {
|
|
72
|
+
return config;
|
|
73
|
+
}
|
|
74
|
+
function pick(value, defaults) {
|
|
75
|
+
if (value === void 0 || value === false) return void 0;
|
|
76
|
+
if (value === true) return defaults;
|
|
77
|
+
return {
|
|
78
|
+
...defaults,
|
|
79
|
+
...value
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
const ALL_PRIVILEGES = [
|
|
83
|
+
"select",
|
|
84
|
+
"insert",
|
|
85
|
+
"update",
|
|
86
|
+
"delete"
|
|
87
|
+
];
|
|
88
|
+
const isFunctionKey = (key) => key.endsWith(")");
|
|
89
|
+
const EXPOSE_PRIVILEGE = /^(?:select|insert|update|delete|(?:select|insert|update)\s*\(\s*[a-z_][a-z0-9_$]*(?:\s*,\s*[a-z_][a-z0-9_$]*)*\s*\))$/;
|
|
90
|
+
function checkedPrivileges(key, privileges) {
|
|
91
|
+
for (const privilege of privileges) {
|
|
92
|
+
const value = privilege;
|
|
93
|
+
if (typeof value !== "string" || !EXPOSE_PRIVILEGE.test(value)) throw new TypeError(`expose.${key}: "${String(value)}" is not a privilege. Use select, insert, update or delete, or name columns such as "update(title, body)"`);
|
|
94
|
+
}
|
|
95
|
+
return privileges;
|
|
96
|
+
}
|
|
97
|
+
function resolveExpose(key, entry) {
|
|
98
|
+
if (Array.isArray(entry)) return {
|
|
99
|
+
anon: [],
|
|
100
|
+
authenticated: checkedPrivileges(key, entry),
|
|
101
|
+
serviceRole: ALL_PRIVILEGES
|
|
102
|
+
};
|
|
103
|
+
if ("execute" in entry) throw new TypeError(`expose.${key}: \`execute\` is for functions; key it by its signature, such as ${key}(text)`);
|
|
104
|
+
const roles = entry;
|
|
105
|
+
return {
|
|
106
|
+
anon: checkedPrivileges(key, roles.anon ?? []),
|
|
107
|
+
authenticated: checkedPrivileges(key, roles.authenticated ?? []),
|
|
108
|
+
serviceRole: checkedPrivileges(key, roles.serviceRole ?? ALL_PRIVILEGES)
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
function resolveExposeFunction(key, entry) {
|
|
112
|
+
if (Array.isArray(entry) || !("execute" in entry)) throw new TypeError(`expose.${key}: a function takes { execute: ["authenticated"] }, not table privileges`);
|
|
113
|
+
return [...entry.execute, ...entry.serviceRole === false ? [] : ["service_role"]];
|
|
114
|
+
}
|
|
115
|
+
function generatorsOf(generators) {
|
|
116
|
+
for (const generator of generators ?? []) {
|
|
117
|
+
const version = generator.apiVersion;
|
|
118
|
+
if (version !== void 0 && version !== 1) throw new TypeError(`generator "${generator.name}" targets generator API ${String(version)}; this better-supabase supports 1. Upgrade better-supabase or use a release of the generator for API 1.`);
|
|
119
|
+
}
|
|
120
|
+
return generators ?? [];
|
|
121
|
+
}
|
|
122
|
+
function authorizationOf(provider) {
|
|
123
|
+
const problem = providerApiProblem(provider);
|
|
124
|
+
if (problem !== void 0) throw new TypeError(problem);
|
|
125
|
+
return provider;
|
|
126
|
+
}
|
|
127
|
+
/** Applies defaults. Paths stay relative to `root`. */
|
|
128
|
+
function resolveConfig(config, root) {
|
|
129
|
+
const output = config.output ?? "src/lib/supabase/generated.ts";
|
|
130
|
+
return {
|
|
131
|
+
root,
|
|
132
|
+
source: config.source ?? {},
|
|
133
|
+
schemas: config.schemas ?? ["public"],
|
|
134
|
+
casing: config.casing ?? "snake",
|
|
135
|
+
tables: config.tables ?? {},
|
|
136
|
+
output,
|
|
137
|
+
databaseTypesOutput: output.replace(/[^/]+$/, "database.types.ts"),
|
|
138
|
+
postgrestVersion: config.postgrestVersion ?? "13",
|
|
139
|
+
json: config.json ?? {},
|
|
140
|
+
codecs: {
|
|
141
|
+
timestamptz: config.codecs?.timestamptz ?? "string",
|
|
142
|
+
int8: config.codecs?.int8 ?? "number",
|
|
143
|
+
numeric: config.codecs?.numeric ?? "number"
|
|
144
|
+
},
|
|
145
|
+
relations: { nullableUnderRls: config.relations?.nullableUnderRls ?? false },
|
|
146
|
+
sensitive: config.sensitive ?? [],
|
|
147
|
+
storagePaths: config.storagePaths ?? {},
|
|
148
|
+
functions: config.functions ?? {},
|
|
149
|
+
expose: Object.fromEntries(Object.entries(config.expose ?? {}).filter(([key]) => !isFunctionKey(key)).map(([table, entry]) => [table, resolveExpose(table, entry)])),
|
|
150
|
+
exposeFunctions: Object.fromEntries(Object.entries(config.expose ?? {}).filter(([key]) => isFunctionKey(key)).map(([fn, entry]) => [fn, resolveExposeFunction(fn, entry)])),
|
|
151
|
+
readSets: config.readSets ?? [],
|
|
152
|
+
generators: generatorsOf(config.generators),
|
|
153
|
+
plugins: {
|
|
154
|
+
timestamps: pick(config.plugins?.timestamps, {
|
|
155
|
+
createdAt: "created_at",
|
|
156
|
+
updatedAt: "updated_at"
|
|
157
|
+
}),
|
|
158
|
+
softDelete: pick(config.plugins?.softDelete, { column: "deleted_at" }),
|
|
159
|
+
tenant: pick(config.plugins?.tenant, { column: "organization_id" }),
|
|
160
|
+
actor: pick(config.plugins?.actor, {
|
|
161
|
+
createdBy: "created_by",
|
|
162
|
+
updatedBy: "updated_by",
|
|
163
|
+
impersonatedBy: "impersonated_by"
|
|
164
|
+
})
|
|
165
|
+
},
|
|
166
|
+
claims: {
|
|
167
|
+
...DEFAULT_CLAIMS,
|
|
168
|
+
...config.claims
|
|
169
|
+
},
|
|
170
|
+
buckets: config.buckets ?? {},
|
|
171
|
+
topics: config.topics ?? {},
|
|
172
|
+
realtime: {
|
|
173
|
+
tables: config.realtime?.tables ?? [],
|
|
174
|
+
global: config.realtime?.global ?? [],
|
|
175
|
+
users: config.realtime?.users ?? {},
|
|
176
|
+
...config.realtime?.policies === void 0 ? {} : { policies: config.realtime.policies }
|
|
177
|
+
},
|
|
178
|
+
entitlements: entitlementsOf(config.entitlements, config.authorization !== void 0),
|
|
179
|
+
...config.authorization === void 0 ? {} : { authorization: authorizationOf(config.authorization) },
|
|
180
|
+
vectorSearch: vectorSearchOf(config.vectorSearch),
|
|
181
|
+
sql: {
|
|
182
|
+
dir: config.sql?.dir ?? "supabase/schemas",
|
|
183
|
+
prefix: config.sql?.prefix ?? "900_better_supabase",
|
|
184
|
+
testsDir: config.sql?.testsDir ?? "supabase/tests",
|
|
185
|
+
...sqlModulesOf(config.sql?.modules)
|
|
186
|
+
},
|
|
187
|
+
seed: {
|
|
188
|
+
entry: config.seed?.entry ?? "supabase/seed.ts",
|
|
189
|
+
output: config.seed?.output ?? "supabase/seeds/000_better_supabase.sql"
|
|
190
|
+
},
|
|
191
|
+
openapi: {
|
|
192
|
+
entry: config.openapi?.entry ?? "src/lib/openapi.ts",
|
|
193
|
+
output: config.openapi?.output ?? "openapi.json"
|
|
194
|
+
},
|
|
195
|
+
doctor: {
|
|
196
|
+
ignore: config.doctor?.ignore ?? [],
|
|
197
|
+
strict: config.doctor?.strict ?? false,
|
|
198
|
+
sources: config.doctor?.sources ?? ["src/**/*.{ts,tsx}"],
|
|
199
|
+
policyHelperLimit: config.doctor?.policyHelperLimit ?? 5,
|
|
200
|
+
...config.doctor?.claimsLimit === void 0 ? {} : { claimsLimit: config.doctor.claimsLimit }
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
//#endregion
|
|
205
|
+
//#region src/config/modules.ts
|
|
206
|
+
/** URL tenancy: the tenant comes from the request (a slug), not a stored setting. */
|
|
207
|
+
const DEFAULT_ACTIVE_TENANT = "resolver";
|
|
208
|
+
const MODULE_SCHEMA = "better_supabase";
|
|
209
|
+
function resolveModule(config = {}) {
|
|
210
|
+
return {
|
|
211
|
+
mode: config.mode ?? "managed",
|
|
212
|
+
schema: config.schema ?? MODULE_SCHEMA,
|
|
213
|
+
tables: config.tables ?? {},
|
|
214
|
+
columns: config.columns ?? {},
|
|
215
|
+
...config.idType === void 0 ? {} : { idType: config.idType },
|
|
216
|
+
permissions: config.permissions ?? {},
|
|
217
|
+
options: config.options ?? {},
|
|
218
|
+
hooks: {
|
|
219
|
+
schema: config.hooks?.schema ?? "public",
|
|
220
|
+
functions: config.hooks?.functions ?? {}
|
|
221
|
+
},
|
|
222
|
+
events: config.events ?? true,
|
|
223
|
+
audit: config.audit ?? true,
|
|
224
|
+
...config.api === void 0 ? {} : { api: typeof config.api === "string" ? { schema: config.api } : config.api }
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
//#endregion
|
|
228
|
+
export { resolveConfig as a, defineConfig as i, resolveModule as n, resolveJsonSchema as o, CONFIG_SCHEMA_URL as r, providerApiProblem as s, DEFAULT_ACTIVE_TENANT as t };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { n as RouteGuardOptions } from "../refusal-D1rgbzNq.js";
|
|
2
|
+
import { t as Validated } from "../shared-DDSjEGDR.js";
|
|
3
|
+
import { l as ToNodeOptions } from "../index-DDrYaUcq.js";
|
|
4
|
+
import { AnyEntry } from "@supabase/middleware";
|
|
5
|
+
import { IncomingMessage, ServerResponse } from "node:http";
|
|
6
|
+
//#region src/nestjs/index.d.ts
|
|
7
|
+
/** The part of Nest's `ArgumentsHost` and `ExecutionContext` the integration reads. */
|
|
8
|
+
export interface ExecutionContextLike {
|
|
9
|
+
switchToHttp(): {
|
|
10
|
+
getRequest(): object;
|
|
11
|
+
getResponse(): object;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
/** A Nest guard instance, for `@UseGuards(...)`. */
|
|
15
|
+
export interface CanActivateLike {
|
|
16
|
+
canActivate(context: ExecutionContextLike): Promise<boolean>;
|
|
17
|
+
}
|
|
18
|
+
/** A Nest exception filter instance, for `@UseFilters(...)` or `app.useGlobalFilters(...)`. */
|
|
19
|
+
export interface ExceptionFilterLike {
|
|
20
|
+
catch(exception: unknown, host: ExecutionContextLike): void;
|
|
21
|
+
}
|
|
22
|
+
/** Nest functional middleware: raw Node `req` and `res` under Express and Fastify. */
|
|
23
|
+
export type NestMiddleware = (req: IncomingMessage, res: ServerResponse, next: (error?: unknown) => void) => void;
|
|
24
|
+
/** The contributions `toNestMiddleware` stored for a request (Express or Fastify), if it ran. */
|
|
25
|
+
export declare function contextOf(request: object): Readonly<Record<string, unknown>> | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Nest middleware that runs the entries before the route: a short circuit
|
|
28
|
+
* (a 401, a CORS preflight) is the answer; otherwise the entries' cookies
|
|
29
|
+
* go on the response and `@Ctx()` reads the contributions.
|
|
30
|
+
*
|
|
31
|
+
* ```ts title="src/app.module.ts"
|
|
32
|
+
* export class AppModule implements NestModule {
|
|
33
|
+
* configure(consumer: MiddlewareConsumer) {
|
|
34
|
+
* consumer.apply(toNestMiddleware([withBetterSupabase(server)])).forRoutes('*')
|
|
35
|
+
* }
|
|
36
|
+
* }
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare function toNestMiddleware<const Entries extends readonly AnyEntry[]>(entries: Entries & Validated<Entries>, options?: ToNodeOptions): NestMiddleware;
|
|
40
|
+
/**
|
|
41
|
+
* A parameter decorator for the request's contributions, or one of them:
|
|
42
|
+
* `@Ctx() ctx` or `@Ctx('db') db`.
|
|
43
|
+
*
|
|
44
|
+
* ```ts
|
|
45
|
+
* @Get('notes')
|
|
46
|
+
* list(@Ctx('db') db: Db) { return db.notes.findMany().orThrow() }
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare function Ctx(key?: string): ParameterDecorator;
|
|
50
|
+
/**
|
|
51
|
+
* A guard instance that refuses callers outside `options`: Problem Details,
|
|
52
|
+
* or a 303 to `signIn` or `mfa`, thrown as Nest's `HttpException`.
|
|
53
|
+
*
|
|
54
|
+
* ```ts
|
|
55
|
+
* @UseGuards(guard({ roles: ['admin'] }))
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export declare function guard(options?: RouteGuardOptions): CanActivateLike;
|
|
59
|
+
/**
|
|
60
|
+
* An exception filter that answers thrown `DbException`s (from
|
|
61
|
+
* `.orThrow()`) with Problem Details. Register it with `@Catch()` scope in
|
|
62
|
+
* mind: other exceptions are answered the way Nest's base filter does.
|
|
63
|
+
*/
|
|
64
|
+
export declare function problemFilter(options?: {
|
|
65
|
+
readonly expose?: boolean;
|
|
66
|
+
}): ExceptionFilterLike;
|
|
67
|
+
//#endregion
|
|
68
|
+
export type { RouteGuardOptions };
|