better-supabase 0.5.1 → 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 +187 -46
- package/dist/access-sql-B0dF-SoF.js +181 -0
- package/dist/{actor-DaJjqD5R.d.ts → actor-CQTlc1Hh.d.ts} +1 -1
- 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-C_A-KEAz.js → doctor-B4JOm_ox.js} +991 -317
- 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-DMa6M7hV.js → init-BIIwclPg.js} +242 -27
- package/dist/cli/{introspect-BKlaIu_M.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-Bo_NLT5n.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-BCtlgDQx.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-Bv7gvfzC.d.ts → config-D44Y7PAv.d.ts} +406 -214
- 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-CFPX0Qft.d.ts → ended-jLfvw8h-.d.ts} +20 -2
- package/dist/{entitlements-BiJZ4t49.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-BgSHAYLf.js → impersonation-DcqaTBHx.js} +21 -6
- 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-Daak8ukG.d.ts +54 -0
- 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-Bn6HNKUe.js → resolve-D_IcnvFd.js} +248 -240
- package/dist/{impersonation-BmePsuxz.d.ts → resolve-KW8nCeL6.d.ts} +29 -69
- package/dist/{resource-mqfJW4YF.js → resource-BsvzCMlX.js} +4 -4
- package/dist/{resource-DNRFP7KR.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 -22
- package/dist/server/index.js +46 -14
- package/dist/{respond-BR1fJWOB.d.ts → server-CeVeeXwz.d.ts} +224 -85
- 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 +313 -212
- package/dist/sql/index.js +34872 -6579
- 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-wHnK6zp-.js → support-BivNqSpK.js} +32 -11
- package/dist/{support-view-B8SlToQX.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 +315 -41
- package/dist/testing/index.js +1046 -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-DOYTYwHP.js → version-Bvv6aLjZ.js} +1 -1
- package/dist/view-BeFcRV6G.js +99 -0
- package/dist/{view-CbgObAeb.d.ts → view-DbxLNu8L.d.ts} +22 -5
- 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 +461 -20
- package/schemas/ai-message-v1.json +258 -0
- package/schemas/config-v1.json +1074 -140
- package/schemas/doctor-report-v1.json +20 -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 +47 -11
- 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-CIdSQZad.js +0 -2
- package/dist/cli/gen-CjElD1Vw.js +0 -2241
- package/dist/cli/read-sets-VQcPgxU9.js +0 -436
- package/dist/cli/sql-CVx-1O8G.js +0 -373
- 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/index-CWMDdEr4.d.ts +0 -50
- package/dist/index-DOESKG27.d.ts +0 -100
- package/dist/index-DmXSxbLi.d.ts +0 -62
- package/dist/index-Dp2VDwog.d.ts +0 -161
- 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/mfa-Cu96oJdw.d.ts +0 -30
- 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-B1mZ7CgQ.js +0 -660
- package/dist/stats-Bqob3WqT.js +0 -592
- package/dist/support-CEPwlw2G.d.ts +0 -89
- 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 -122
package/dist/cli/sql-CVx-1O8G.js
DELETED
|
@@ -1,373 +0,0 @@
|
|
|
1
|
-
import { r as defineCliCommand } from "./command-CK14fP91.js";
|
|
2
|
-
import { r as writeIfChanged, t as display } from "./io-k41_z-jT.js";
|
|
3
|
-
import { i as plain, r as painter } from "./style-C0NFdJRL.js";
|
|
4
|
-
import { f as readSupabaseToml, p as schemaPaths, u as migrationCommand } from "./config-CPVpXP5I.js";
|
|
5
|
-
import { t as fileDiff } from "./diff-SjkO5rNr.js";
|
|
6
|
-
import { a as entitlementsMode, l as permdockSource, n as accessPermdockMode, o as kitKeyProblems, t as compiledReadSets, u as readPermdock } from "./read-sets-VQcPgxU9.js";
|
|
7
|
-
import { dirname, join, relative, resolve, sep } from "node:path";
|
|
8
|
-
import { existsSync } from "node:fs";
|
|
9
|
-
import { readFile, readdir } from "node:fs/promises";
|
|
10
|
-
import { SQL_MODULES, contractSignature, customContracts, kitFilePaths, kitFileVersion, kitLayout, kitPermissionKeys, moduleBody, renderKit, resolveModules, sameKitFile, upgradePlan } from "better-supabase/sql";
|
|
11
|
-
//#region src/cli/commands/sql.ts
|
|
12
|
-
const SQL_ARGS = {
|
|
13
|
-
action: {
|
|
14
|
-
type: "positional",
|
|
15
|
-
required: false,
|
|
16
|
-
description: "list (modules and whether they are installed), add <module...>, sync, upgrade, data (a migration with the rows a schema diff skips) or print <module>"
|
|
17
|
-
},
|
|
18
|
-
check: {
|
|
19
|
-
type: "boolean",
|
|
20
|
-
description: "With sync: fail when a file is stale. With upgrade: fail when a module is behind"
|
|
21
|
-
},
|
|
22
|
-
"tests-dir": {
|
|
23
|
-
type: "string",
|
|
24
|
-
description: "Where the pgtap module goes. Defaults to sql.testsDir",
|
|
25
|
-
valueHint: "dir"
|
|
26
|
-
},
|
|
27
|
-
"dry-run": {
|
|
28
|
-
type: "boolean",
|
|
29
|
-
description: "Show what would be written"
|
|
30
|
-
},
|
|
31
|
-
force: {
|
|
32
|
-
type: "boolean",
|
|
33
|
-
description: "Write tenant even though a permdock.config.ts is present"
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
const USAGE = "Run `better-supabase sql --help` for the actions.";
|
|
37
|
-
/** Modules that fill a claim PermDock's hook also writes (`memberships`). */
|
|
38
|
-
const PERMDOCK_OWNED = /* @__PURE__ */ new Set(["tenant"]);
|
|
39
|
-
/**
|
|
40
|
-
* PermDock's helpers for the `entitlements` module. When `names` resolve to
|
|
41
|
-
* that module, an invalid PermDock mode (no manifest, a scope it lacks, an
|
|
42
|
-
* unknown id type) throws instead of falling back to the tenant module.
|
|
43
|
-
* Without `names` (`sql list`) it only describes the modules, so it doesn't.
|
|
44
|
-
*/
|
|
45
|
-
async function permdockFor(config, names) {
|
|
46
|
-
const mode = entitlementsMode(config, await readPermdock(config.root, config.permdock));
|
|
47
|
-
switch (mode.kind) {
|
|
48
|
-
case "tenant": return;
|
|
49
|
-
case "permdock": return mode.permdock;
|
|
50
|
-
case "invalid":
|
|
51
|
-
if (names === void 0 || !resolveModules(names, {}).some((module) => module.name === "entitlements")) return void 0;
|
|
52
|
-
throw new TypeError(mode.problem);
|
|
53
|
-
default: return mode;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* PermDock's helpers for the `access` module's `permdock` model, read from
|
|
58
|
-
* the manifest whatever `entitlements` says. When `names` resolve to
|
|
59
|
-
* `access`, an invalid mode throws, and so does a kit permission key the
|
|
60
|
-
* catalog doesn't mark `rowConditions: false`. `sql list` (no `names`)
|
|
61
|
-
* doesn't render, so it doesn't throw.
|
|
62
|
-
*/
|
|
63
|
-
async function accessPermdockFor(config, names) {
|
|
64
|
-
const project = await readPermdock(config.root, config.permdock);
|
|
65
|
-
const mode = accessPermdockMode(config, project);
|
|
66
|
-
const renders = names !== void 0 && resolveModules(names, {}).some((module) => module.name === "access");
|
|
67
|
-
switch (mode.kind) {
|
|
68
|
-
case "off": return;
|
|
69
|
-
case "permdock": {
|
|
70
|
-
if (!renders || !project) return mode.access;
|
|
71
|
-
const problems = kitKeyProblems(project, kitPermissionKeys(config.kits, names), mode.access);
|
|
72
|
-
if (problems.length > 0) throw new TypeError(problems.map((problem) => problem.message).join("\n"));
|
|
73
|
-
return mode.access;
|
|
74
|
-
}
|
|
75
|
-
case "invalid":
|
|
76
|
-
if (!renders) return void 0;
|
|
77
|
-
throw new TypeError(mode.problem);
|
|
78
|
-
default: return mode;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
async function layout(config, args, names) {
|
|
82
|
-
return kitLayout(config, args["tests-dir"], [], await permdockFor(config, names), await accessPermdockFor(config, names));
|
|
83
|
-
}
|
|
84
|
-
/** The layout, with `config.readSets` compiled when `names` includes `read-sets`. */
|
|
85
|
-
async function layoutFor(config, args, names) {
|
|
86
|
-
const permdock = await permdockFor(config, names);
|
|
87
|
-
const needsReadSets = resolveModules(names, { ...permdock ? { permdock } : {} }).some((module) => module.name === "read-sets");
|
|
88
|
-
return kitLayout(config, args["tests-dir"], needsReadSets ? await compiledReadSets(config) : [], permdock, await accessPermdockFor(config, names));
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* The migrations folder next to the `config.toml` found walking up from
|
|
92
|
-
* `sql.dir`, relative to the root; `supabase/migrations` without one. The
|
|
93
|
-
* walk stops where `sql.dir` and the root meet, so a `sql.dir` outside the
|
|
94
|
-
* project (a shared stack in a monorepo) finds that stack's folder.
|
|
95
|
-
*/
|
|
96
|
-
function migrationsDir(config) {
|
|
97
|
-
const root = resolve(config.root);
|
|
98
|
-
let dir = resolve(root, config.sql.dir);
|
|
99
|
-
let stop = root;
|
|
100
|
-
while (dir !== stop && !dir.startsWith(stop + sep) && dirname(stop) !== stop) stop = dirname(stop);
|
|
101
|
-
for (;;) {
|
|
102
|
-
if (existsSync(join(dir, "config.toml"))) return relative(root, join(dir, "migrations")).replaceAll("\\", "/");
|
|
103
|
-
if (dir === stop || dirname(dir) === dir) break;
|
|
104
|
-
dir = dirname(dir);
|
|
105
|
-
}
|
|
106
|
-
return "supabase/migrations";
|
|
107
|
-
}
|
|
108
|
-
/** `YYYYMMDDHHMMSS` in UTC, the Supabase CLI's migration prefix. */
|
|
109
|
-
const migrationStamp = (now) => now.toISOString().replaceAll(/[-:T]/g, "").slice(0, 14);
|
|
110
|
-
/**
|
|
111
|
-
* A stamp for `now`, or one second after the newest migration when that one
|
|
112
|
-
* has the same stamp or a later one: the Supabase CLI keys migrations by
|
|
113
|
-
* stamp, and the data has to run after the schema.
|
|
114
|
-
*/
|
|
115
|
-
function stampAfter(migrations, now) {
|
|
116
|
-
const newest = migrations.map((name) => /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})_/.exec(name)).filter((match) => match !== null).map((match) => Date.UTC(Number(match[1]), Number(match[2]) - 1, Number(match[3]), Number(match[4]), Number(match[5]), Number(match[6]))).reduce((max, time) => Math.max(max, time), Number.NEGATIVE_INFINITY);
|
|
117
|
-
const at = Math.floor(now.getTime() / 1e3) * 1e3;
|
|
118
|
-
return migrationStamp(new Date(Math.max(at, newest + 1e3)));
|
|
119
|
-
}
|
|
120
|
-
async function write(config, args, names, kit) {
|
|
121
|
-
const lines = [];
|
|
122
|
-
const dryRun = args["dry-run"] === true;
|
|
123
|
-
let data = false;
|
|
124
|
-
for (const file of renderKit(names, kit)) {
|
|
125
|
-
const path = resolve(config.root, file.path);
|
|
126
|
-
const shown = display(config.root, file.path);
|
|
127
|
-
if (dryRun) {
|
|
128
|
-
lines.push(`Would write ${shown} (${file.module})`);
|
|
129
|
-
continue;
|
|
130
|
-
}
|
|
131
|
-
const wrote = await writeIfChanged(path, file.contents);
|
|
132
|
-
if (wrote && file.kind === "data") data = true;
|
|
133
|
-
lines.push(`${wrote ? "Wrote" : "Unchanged"} ${shown} (${file.module})`);
|
|
134
|
-
}
|
|
135
|
-
if (data) lines.push("", DATA_NEXT);
|
|
136
|
-
return lines;
|
|
137
|
-
}
|
|
138
|
-
const DATA_NEXT = "The better-supabase-data files hold rows and settings a schema diff skips: after the schema migration, run `better-supabase sql data`.";
|
|
139
|
-
const DATA_SUFFIX = "_better_supabase_kit_data.sql";
|
|
140
|
-
/**
|
|
141
|
-
* Writes the data files of `sql.kit` into one migration, meant to run after
|
|
142
|
-
* the schema migration that creates their tables. Every statement is
|
|
143
|
-
* idempotent, so the migration carries all of them, not only the changes.
|
|
144
|
-
*/
|
|
145
|
-
async function dataMigration(config, args) {
|
|
146
|
-
if (config.sql.kit.length === 0) return {
|
|
147
|
-
code: 0,
|
|
148
|
-
output: "sql.kit is empty; nothing to write."
|
|
149
|
-
};
|
|
150
|
-
const files = renderKit(config.sql.kit, await layoutFor(config, args, config.sql.kit)).filter((file) => file.kind === "data");
|
|
151
|
-
const contents = `-- better-supabase sql data: the rows and settings of ${files.map((file) => file.module).join(", ")}, which a schema diff skips.\n\n${files.map((file) => file.contents.trim()).join("\n\n")}\n`;
|
|
152
|
-
const dir = migrationsDir(config);
|
|
153
|
-
const existing = await readdir(resolve(config.root, dir)).catch(() => []);
|
|
154
|
-
const latest = existing.toSorted().findLast((name) => name.endsWith(DATA_SUFFIX));
|
|
155
|
-
if (latest !== void 0 && await readFile(resolve(config.root, dir, latest), "utf8") === contents) return {
|
|
156
|
-
code: 0,
|
|
157
|
-
output: `${dir}/${latest} already has these rows; nothing to write.`
|
|
158
|
-
};
|
|
159
|
-
const path = `${dir}/${stampAfter(existing, /* @__PURE__ */ new Date())}${DATA_SUFFIX}`;
|
|
160
|
-
if (args["dry-run"] === true) return {
|
|
161
|
-
code: 0,
|
|
162
|
-
output: `Would write ${path}`
|
|
163
|
-
};
|
|
164
|
-
await writeIfChanged(resolve(config.root, path), contents);
|
|
165
|
-
return {
|
|
166
|
-
code: 0,
|
|
167
|
-
output: `Wrote ${path}`
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
/** A note when migra's `schema_paths` is set and misses kit files, which `supabase db diff` would then skip. */
|
|
171
|
-
async function unlistedKitFiles(config, names, kit) {
|
|
172
|
-
const order = await schemaPaths(config.root, await readSupabaseToml(config.root));
|
|
173
|
-
if (!order.configured) return [];
|
|
174
|
-
const unlisted = new Set(order.unlisted);
|
|
175
|
-
const listed = new Set(order.files.filter((path) => !unlisted.has(path)));
|
|
176
|
-
const dir = `${config.sql.dir.replace(/\/$/, "")}/`;
|
|
177
|
-
const missing = renderKit(names, kit).filter((file) => file.kind !== "data").map((file) => file.path).filter((path) => path.startsWith(dir) && !listed.has(path));
|
|
178
|
-
if (missing.length === 0) return [];
|
|
179
|
-
return [
|
|
180
|
-
"",
|
|
181
|
-
"supabase/config.toml sets [db.migrations] schema_paths, and no entry matches these files, so `supabase db diff` skips them.",
|
|
182
|
-
"Add them before the schemas that call their functions:",
|
|
183
|
-
...missing.map((path) => ` "./${path.startsWith("supabase/") ? path.slice(9) : path}",`)
|
|
184
|
-
];
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Rewrites the kit files of modules behind the current version, and writes
|
|
188
|
-
* their upgrade steps (renames, backfills) as a migration that runs before
|
|
189
|
-
* the one the schema diff creates.
|
|
190
|
-
*/
|
|
191
|
-
async function upgrade(config, args, paint) {
|
|
192
|
-
if (config.sql.kit.length === 0) return {
|
|
193
|
-
code: 0,
|
|
194
|
-
output: "sql.kit is empty; nothing to upgrade."
|
|
195
|
-
};
|
|
196
|
-
const kit = await layoutFor(config, args, config.sql.kit);
|
|
197
|
-
const files = renderKit(config.sql.kit, kit);
|
|
198
|
-
const installed = [];
|
|
199
|
-
const stale = [];
|
|
200
|
-
const diffs = [];
|
|
201
|
-
for (const file of files) {
|
|
202
|
-
if (file.kind === "data") continue;
|
|
203
|
-
const current = await readFile(resolve(config.root, file.path), "utf8").catch(() => void 0);
|
|
204
|
-
if (current === void 0) continue;
|
|
205
|
-
installed.push({
|
|
206
|
-
module: file.module,
|
|
207
|
-
version: kitFileVersion(current)?.version ?? 1
|
|
208
|
-
});
|
|
209
|
-
if (!sameKitFile(current, file.contents)) {
|
|
210
|
-
stale.push(file);
|
|
211
|
-
diffs.push(fileDiff(display(config.root, file.path), current, file.contents, paint));
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
const plan = upgradePlan(installed, kit);
|
|
215
|
-
const behind = plan.map((entry) => `${entry.module} is at version ${String(entry.from)}; the current version is ${String(entry.to)}`);
|
|
216
|
-
if (args.check === true) {
|
|
217
|
-
if (plan.length === 0 && stale.length === 0) return {
|
|
218
|
-
code: 0,
|
|
219
|
-
output: "SQL kit modules are at their current versions."
|
|
220
|
-
};
|
|
221
|
-
return {
|
|
222
|
-
code: 1,
|
|
223
|
-
output: diffs.join("\n\n"),
|
|
224
|
-
error: [
|
|
225
|
-
...behind,
|
|
226
|
-
...stale.length > 0 ? [`Out of date: ${stale.map((file) => display(config.root, file.path)).join(", ")}.`] : [],
|
|
227
|
-
"Run `better-supabase sql upgrade`."
|
|
228
|
-
].join("\n")
|
|
229
|
-
};
|
|
230
|
-
}
|
|
231
|
-
if (plan.length === 0 && stale.length === 0) return {
|
|
232
|
-
code: 0,
|
|
233
|
-
output: "SQL kit modules are at their current versions."
|
|
234
|
-
};
|
|
235
|
-
const lines = [];
|
|
236
|
-
const steps = plan.flatMap((entry) => entry.steps.filter((step) => step.sql !== "").map((step) => `-- ${entry.module}: version ${String(step.from)} to ${String(step.from + 1)}. ${step.description}\n${step.sql}`));
|
|
237
|
-
const dryRun = args["dry-run"] === true;
|
|
238
|
-
if (steps.length > 0) {
|
|
239
|
-
const path = `${migrationsDir(config)}/${migrationStamp(/* @__PURE__ */ new Date())}_better_supabase_kit_upgrade.sql`;
|
|
240
|
-
const contents = `-- better-supabase sql upgrade: steps that run before the schema diff.\n\n${steps.join("\n\n")}\n`;
|
|
241
|
-
if (dryRun) lines.push(`Would write ${path}`);
|
|
242
|
-
else {
|
|
243
|
-
await writeIfChanged(resolve(config.root, path), contents);
|
|
244
|
-
lines.push(`Wrote ${path}`);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
for (const entry of plan) lines.push(`${entry.module}: version ${String(entry.from)} to ${String(entry.to)}`, ...entry.steps.map((step) => ` ${step.description}`));
|
|
248
|
-
lines.push(...await write(config, args, config.sql.kit, kit), "", `Then create a migration: ${migrationCommand(await readSupabaseToml(config.root), "better_supabase_kit")}`);
|
|
249
|
-
return {
|
|
250
|
-
code: 0,
|
|
251
|
-
output: lines.join("\n")
|
|
252
|
-
};
|
|
253
|
-
}
|
|
254
|
-
async function runSql(config, args, paint = plain) {
|
|
255
|
-
const [action, ...names] = args._;
|
|
256
|
-
switch (action) {
|
|
257
|
-
case "list": {
|
|
258
|
-
const kit = await layout(config, args);
|
|
259
|
-
const files = kitFilePaths(Object.keys(SQL_MODULES), kit);
|
|
260
|
-
return {
|
|
261
|
-
code: 0,
|
|
262
|
-
output: `${Object.values(SQL_MODULES).map((module) => {
|
|
263
|
-
const path = files.get(module.name);
|
|
264
|
-
const installed = path !== void 0 && existsSync(resolve(config.root, path));
|
|
265
|
-
const tracked = config.sql.kit.includes(module.name);
|
|
266
|
-
const mark = path === void 0 ? "◇" : installed ? tracked ? "●" : "○" : " ";
|
|
267
|
-
const requires = kit.permdock && module.permdockRequires ? module.permdockRequires : module.requires;
|
|
268
|
-
const needs = requires.length > 0 ? ` (needs ${requires.join(", ")})` : "";
|
|
269
|
-
return `${mark} ${module.name.padEnd(15)} ${module.description}${needs}`;
|
|
270
|
-
}).join("\n")}\n\n● installed and in sql.kit ○ installed, not in sql.kit ◇ custom mode (the app implements it)`
|
|
271
|
-
};
|
|
272
|
-
}
|
|
273
|
-
case "add": {
|
|
274
|
-
if (names.length === 0) return {
|
|
275
|
-
code: 2,
|
|
276
|
-
error: `Name at least one module.\n${USAGE}`
|
|
277
|
-
};
|
|
278
|
-
const unknown = names.filter((name) => !(name in SQL_MODULES));
|
|
279
|
-
if (unknown.length > 0) return {
|
|
280
|
-
code: 2,
|
|
281
|
-
error: `Unknown module ${unknown.join(", ")}. Available: ${Object.keys(SQL_MODULES).join(", ")}`
|
|
282
|
-
};
|
|
283
|
-
const project = await readPermdock(config.root, config.permdock);
|
|
284
|
-
const permdock = project ? permdockSource(project) : void 0;
|
|
285
|
-
const hookModules = names.filter((name) => PERMDOCK_OWNED.has(name));
|
|
286
|
-
if (permdock && hookModules.length > 0 && args.force !== true) return {
|
|
287
|
-
code: 1,
|
|
288
|
-
error: [
|
|
289
|
-
`${permdock} is present, so PermDock owns the access token hook and the memberships claim.`,
|
|
290
|
-
`${hookModules.join(" and ")} would add a second source for them. Use \`permdock supabase hook generate\` instead,`,
|
|
291
|
-
"or pass --force to write the modules anyway."
|
|
292
|
-
].join("\n")
|
|
293
|
-
};
|
|
294
|
-
const kit = await layoutFor(config, args, names);
|
|
295
|
-
const lines = await write(config, args, names, kit);
|
|
296
|
-
const pulledIn = resolveModules(names, kit).map((module) => module.name).filter((name) => PERMDOCK_OWNED.has(name) && !names.includes(name));
|
|
297
|
-
if (permdock && pulledIn.length > 0) lines.push("", `${pulledIn.join(" and ")} came along as a dependency: its memberships table backs has_org_role() and has_entitlement().`, `PermDock's hook still owns the memberships claim, so don't call better_supabase.membership_claims from a hook.`, "List better_supabase.memberships as a PermDock membership source if both should agree.");
|
|
298
|
-
const untracked = resolveModules(names, kit).map((module) => module.name).filter((name) => !config.sql.kit.includes(name));
|
|
299
|
-
if (untracked.length > 0) lines.push("", `Add them to your config so \`sql sync --check\` keeps them current:`, ` sql: { kit: [${[...config.sql.kit, ...untracked].map((name) => `'${name}'`).join(", ")}] }`);
|
|
300
|
-
if (args["dry-run"] !== true) lines.push(...await unlistedKitFiles(config, names, kit));
|
|
301
|
-
lines.push("", `Then create a migration: ${migrationCommand(await readSupabaseToml(config.root), "better_supabase_kit")}`);
|
|
302
|
-
return {
|
|
303
|
-
code: 0,
|
|
304
|
-
output: lines.join("\n")
|
|
305
|
-
};
|
|
306
|
-
}
|
|
307
|
-
case "sync": {
|
|
308
|
-
if (config.sql.kit.length === 0) return {
|
|
309
|
-
code: 0,
|
|
310
|
-
output: "sql.kit is empty; nothing to sync."
|
|
311
|
-
};
|
|
312
|
-
if (args.check !== true) return {
|
|
313
|
-
code: 0,
|
|
314
|
-
output: (await write(config, args, config.sql.kit, await layoutFor(config, args, config.sql.kit))).join("\n")
|
|
315
|
-
};
|
|
316
|
-
const stale = [];
|
|
317
|
-
const diffs = [];
|
|
318
|
-
for (const file of renderKit(config.sql.kit, await layoutFor(config, args, config.sql.kit))) {
|
|
319
|
-
const current = await readFile(resolve(config.root, file.path), "utf8").catch(() => void 0);
|
|
320
|
-
if (!sameKitFile(current, file.contents)) {
|
|
321
|
-
const shown = display(config.root, file.path);
|
|
322
|
-
stale.push(shown);
|
|
323
|
-
diffs.push(fileDiff(shown, current, file.contents, paint));
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
return stale.length === 0 ? {
|
|
327
|
-
code: 0,
|
|
328
|
-
output: "SQL kit files are up to date."
|
|
329
|
-
} : {
|
|
330
|
-
code: 1,
|
|
331
|
-
output: diffs.join("\n\n"),
|
|
332
|
-
error: `Out of date: ${stale.join(", ")}. Run \`better-supabase sql sync\`.`
|
|
333
|
-
};
|
|
334
|
-
}
|
|
335
|
-
case "upgrade": return upgrade(config, args, paint);
|
|
336
|
-
case "data": return dataMigration(config, args);
|
|
337
|
-
case "print": {
|
|
338
|
-
const [name] = names;
|
|
339
|
-
const module = name ? SQL_MODULES[name] : void 0;
|
|
340
|
-
if (!module) return {
|
|
341
|
-
code: 2,
|
|
342
|
-
error: `Name one module: ${Object.keys(SQL_MODULES).join(", ")}`
|
|
343
|
-
};
|
|
344
|
-
const body = moduleBody(module.name, await layout(config, args, [module.name]));
|
|
345
|
-
if (body === void 0) return {
|
|
346
|
-
code: 0,
|
|
347
|
-
output: `-- kits.${module.name} is in custom mode: the app writes these functions.\n${customContracts([module.name], await layout(config, args, [module.name])).flatMap((contract) => contract.functions.map((fn) => `-- ${contract.schema}.${fn.name}(${contractSignature(fn, contract.idType)}) returns ${fn.returns.replaceAll("{id}", contract.idType)}`)).join("\n")}`
|
|
348
|
-
};
|
|
349
|
-
return {
|
|
350
|
-
code: 0,
|
|
351
|
-
output: body
|
|
352
|
-
};
|
|
353
|
-
}
|
|
354
|
-
case void 0: return {
|
|
355
|
-
code: 2,
|
|
356
|
-
error: `Name an action.\n${USAGE}`
|
|
357
|
-
};
|
|
358
|
-
default: return {
|
|
359
|
-
code: 2,
|
|
360
|
-
error: `Unknown sql action "${action}".\n${USAGE}`
|
|
361
|
-
};
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
const sqlCommand = defineCliCommand({
|
|
365
|
-
meta: {
|
|
366
|
-
name: "sql",
|
|
367
|
-
description: "Lists, adds, syncs, upgrades and prints SQL kit modules, and writes their data migration"
|
|
368
|
-
},
|
|
369
|
-
args: SQL_ARGS,
|
|
370
|
-
run: (args, { config, io }) => runSql(config, args, painter(io.color))
|
|
371
|
-
});
|
|
372
|
-
//#endregion
|
|
373
|
-
export { sqlCommand };
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
//#region src/auth/entitlements.ts
|
|
2
|
-
/**
|
|
3
|
-
* Whether the session's plan-features claim grants `key` in `tenantId`.
|
|
4
|
-
* `claim` is `config.claims.features` (default `features`), the claim
|
|
5
|
-
* `better_supabase.feature_claims()` fills. The claim is as fresh as the
|
|
6
|
-
* token: enforce it in RLS with `better_supabase.has_entitlement()`, and
|
|
7
|
-
* refresh the session after checkout.
|
|
8
|
-
*/
|
|
9
|
-
function hasEntitlement(session, tenantId, key, claim = "features") {
|
|
10
|
-
if (session.kind !== "user") return false;
|
|
11
|
-
const claims = session.claims;
|
|
12
|
-
if (!isRecord(claims)) return false;
|
|
13
|
-
const features = claims[claim];
|
|
14
|
-
if (!isRecord(features) || !Object.hasOwn(features, tenantId)) return false;
|
|
15
|
-
const keys = features[tenantId];
|
|
16
|
-
return Array.isArray(keys) && keys.includes(key);
|
|
17
|
-
}
|
|
18
|
-
const isRecord = (value) => typeof value === "object" && value !== null;
|
|
19
|
-
//#endregion
|
|
20
|
-
export { hasEntitlement as t };
|
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
/// <reference lib="esnext.temporal" />
|
|
2
|
-
import { U as Operation, _ as DbError } from "./executor-BunPOO-k.js";
|
|
3
|
-
import { g as RequestContext, l as MutationIntent, u as MutationKind } from "./plugin-o144f322.js";
|
|
4
|
-
//#region src/core/logger.d.ts
|
|
5
|
-
type LogFields = Readonly<Record<string, unknown>>;
|
|
6
|
-
/**
|
|
7
|
-
* Where better-supabase reports problems it swallows on purpose: event
|
|
8
|
-
* handlers, `afterMutation` hooks, sinks and cache adapters that throw.
|
|
9
|
-
* Structured loggers (pino, consola, OpenTelemetry logs) fit directly.
|
|
10
|
-
*/
|
|
11
|
-
interface Logger {
|
|
12
|
-
debug(message: string, fields?: LogFields): void;
|
|
13
|
-
info(message: string, fields?: LogFields): void;
|
|
14
|
-
warn(message: string, fields?: LogFields): void;
|
|
15
|
-
error(message: string, fields?: LogFields): void;
|
|
16
|
-
}
|
|
17
|
-
/** The default: `console`, with a `better-supabase:` prefix. */
|
|
18
|
-
declare const consoleLogger: Logger;
|
|
19
|
-
declare const silentLogger: Logger;
|
|
20
|
-
//#endregion
|
|
21
|
-
//#region src/core/kit-events.d.ts
|
|
22
|
-
/** `support.*`: support sessions, where a platform admin views the app as a user. */
|
|
23
|
-
interface SupportEventData {
|
|
24
|
-
/** Absent on `support.denied`. */
|
|
25
|
-
readonly sessionId?: string;
|
|
26
|
-
readonly adminId: string;
|
|
27
|
-
readonly targetUserId: string;
|
|
28
|
-
readonly reason?: string;
|
|
29
|
-
readonly readOnly?: boolean;
|
|
30
|
-
readonly expiresAt?: Temporal.Instant;
|
|
31
|
-
/** `support.denied`: which check refused it. */
|
|
32
|
-
readonly denial?: "authorize" | "permission" | "policy" | "store";
|
|
33
|
-
/** `support.ended`: who or what ended it. */
|
|
34
|
-
readonly endedBy?: "admin" | "expired" | "revoked";
|
|
35
|
-
}
|
|
36
|
-
/** `org.*`: organizations and their members. */
|
|
37
|
-
interface OrgEventData {
|
|
38
|
-
readonly organizationId: string;
|
|
39
|
-
/** The member the event is about. */
|
|
40
|
-
readonly userId?: string;
|
|
41
|
-
readonly role?: string;
|
|
42
|
-
readonly previousRole?: string;
|
|
43
|
-
}
|
|
44
|
-
/** `invitation.*`. The token is never part of the event. */
|
|
45
|
-
interface InvitationEventData {
|
|
46
|
-
readonly invitationId: string;
|
|
47
|
-
/** Absent for a platform-scope invitation. */
|
|
48
|
-
readonly organizationId?: string;
|
|
49
|
-
readonly email?: string;
|
|
50
|
-
readonly role?: string;
|
|
51
|
-
}
|
|
52
|
-
/** `notification.*`. */
|
|
53
|
-
interface NotificationEventData {
|
|
54
|
-
readonly notificationId: string;
|
|
55
|
-
readonly type: string;
|
|
56
|
-
readonly recipientIds?: readonly string[];
|
|
57
|
-
readonly channel?: string;
|
|
58
|
-
readonly error?: string;
|
|
59
|
-
}
|
|
60
|
-
/** `webhook.*`: outgoing webhooks. */
|
|
61
|
-
interface WebhookEventData {
|
|
62
|
-
readonly endpointId: string;
|
|
63
|
-
readonly deliveryId?: string;
|
|
64
|
-
readonly eventType?: string;
|
|
65
|
-
/** The HTTP status of the attempt, when there was a response. */
|
|
66
|
-
readonly status?: number;
|
|
67
|
-
readonly attempt?: number;
|
|
68
|
-
readonly error?: string;
|
|
69
|
-
}
|
|
70
|
-
/** Every kit event type and its data. */
|
|
71
|
-
interface KitEventMap {
|
|
72
|
-
"support.started": SupportEventData;
|
|
73
|
-
"support.ended": SupportEventData;
|
|
74
|
-
"support.denied": SupportEventData;
|
|
75
|
-
"org.created": OrgEventData;
|
|
76
|
-
"org.updated": OrgEventData;
|
|
77
|
-
"org.deleted": OrgEventData;
|
|
78
|
-
"org.member_added": OrgEventData;
|
|
79
|
-
"org.member_removed": OrgEventData;
|
|
80
|
-
"org.member_left": OrgEventData;
|
|
81
|
-
"org.role_changed": OrgEventData;
|
|
82
|
-
"org.ownership_transferred": OrgEventData;
|
|
83
|
-
"org.switched": OrgEventData;
|
|
84
|
-
"invitation.created": InvitationEventData;
|
|
85
|
-
"invitation.resent": InvitationEventData;
|
|
86
|
-
"invitation.accepted": InvitationEventData;
|
|
87
|
-
"invitation.declined": InvitationEventData;
|
|
88
|
-
"invitation.revoked": InvitationEventData;
|
|
89
|
-
"notification.created": NotificationEventData;
|
|
90
|
-
"notification.delivered": NotificationEventData;
|
|
91
|
-
"notification.failed": NotificationEventData;
|
|
92
|
-
"webhook.delivered": WebhookEventData;
|
|
93
|
-
"webhook.failed": WebhookEventData;
|
|
94
|
-
"webhook.disabled": WebhookEventData;
|
|
95
|
-
}
|
|
96
|
-
type KitEventType = keyof KitEventMap;
|
|
97
|
-
/** Where an event came from, beyond its data. */
|
|
98
|
-
interface KitEventMeta {
|
|
99
|
-
/** e.g. `organizations/<id>`; becomes the CloudEvents `subject`. */
|
|
100
|
-
readonly subject?: string;
|
|
101
|
-
readonly tenant?: string;
|
|
102
|
-
/** The user who caused it. */
|
|
103
|
-
readonly actorId?: string;
|
|
104
|
-
readonly context?: RequestContext;
|
|
105
|
-
}
|
|
106
|
-
/** A kit event as `betterSupabase.on('kit', handler)` receives it. */
|
|
107
|
-
type KitEvent<K extends KitEventType = KitEventType> = { readonly [T in K]: KitEventMeta & {
|
|
108
|
-
readonly type: T;
|
|
109
|
-
/** A copy: changing it never changes what the kit does (invariant 5). */
|
|
110
|
-
readonly data: KitEventMap[T];
|
|
111
|
-
readonly time: Temporal.Instant;
|
|
112
|
-
}; }[K];
|
|
113
|
-
/** A type, or a `prefix.*` pattern such as `support.*`. */
|
|
114
|
-
type KitEventPattern = KitEventType | `${KitEventType extends `${infer P}.${string}` ? P : never}.*`;
|
|
115
|
-
/** The event types a pattern matches. */
|
|
116
|
-
type KitEventsMatching<P extends KitEventPattern> = P extends `${infer Prefix}.*` ? Extract<KitEventType, `${Prefix}.${string}`> : Extract<P, KitEventType>;
|
|
117
|
-
/**
|
|
118
|
-
* Fixed OpenTelemetry attribute names for kit work, so dashboards and
|
|
119
|
-
* queries can rely on them.
|
|
120
|
-
*/
|
|
121
|
-
declare const KIT_ATTRIBUTES: {
|
|
122
|
-
readonly event: "better_supabase.kit.event";
|
|
123
|
-
readonly tenant: "better_supabase.tenant";
|
|
124
|
-
readonly actor: "better_supabase.actor.id";
|
|
125
|
-
readonly supportSessionId: "better_supabase.support.session_id";
|
|
126
|
-
readonly orgId: "better_supabase.org.id";
|
|
127
|
-
readonly invitationId: "better_supabase.invitation.id";
|
|
128
|
-
readonly notificationType: "better_supabase.notification.type";
|
|
129
|
-
readonly webhookEndpointId: "better_supabase.webhook.endpoint_id";
|
|
130
|
-
};
|
|
131
|
-
/** The `KIT_ATTRIBUTES` an event carries. */
|
|
132
|
-
declare function kitEventAttributes(event: KitEvent): Record<string, string>;
|
|
133
|
-
/**
|
|
134
|
-
* Listens to the kit events that match `pattern` (`'support.started'` or
|
|
135
|
-
* `'support.*'`). Returns a function that stops listening.
|
|
136
|
-
*/
|
|
137
|
-
declare function onKitEvent<P extends KitEventPattern>(betterSupabase: {
|
|
138
|
-
readonly events: EventHub;
|
|
139
|
-
}, pattern: P, handler: (event: KitEvent<KitEventsMatching<P>>) => void): () => void;
|
|
140
|
-
//#endregion
|
|
141
|
-
//#region src/core/events.d.ts
|
|
142
|
-
interface QueryEvent {
|
|
143
|
-
readonly table: string;
|
|
144
|
-
readonly operation: Operation["kind"];
|
|
145
|
-
readonly ok: boolean;
|
|
146
|
-
readonly durationMs: number;
|
|
147
|
-
readonly rows: number;
|
|
148
|
-
/**
|
|
149
|
-
* An unbounded read returned `maxRows` rows: PostgREST's `db-max-rows`
|
|
150
|
-
* probably cut it short. Add `limit` or use `paginate`.
|
|
151
|
-
*/
|
|
152
|
-
readonly truncated: boolean;
|
|
153
|
-
}
|
|
154
|
-
interface MutationNotice {
|
|
155
|
-
readonly table: string;
|
|
156
|
-
readonly kind: MutationKind;
|
|
157
|
-
/** See `MutationEvent.intent`. */
|
|
158
|
-
readonly intent?: MutationIntent;
|
|
159
|
-
/** A copy of the returned rows: changing it never changes the result. */
|
|
160
|
-
readonly rows: readonly Readonly<Record<string, unknown>>[];
|
|
161
|
-
/** See `MutationEvent.keys`. */
|
|
162
|
-
readonly keys?: readonly Readonly<Record<string, unknown>>[];
|
|
163
|
-
/** See `MutationEvent.tenant`. */
|
|
164
|
-
readonly tenant?: string;
|
|
165
|
-
readonly context: RequestContext;
|
|
166
|
-
}
|
|
167
|
-
/** A successful RPC registered with `betterSupabase.defineRpc(name, { invalidates })`. */
|
|
168
|
-
interface RpcNotice {
|
|
169
|
-
readonly name: string;
|
|
170
|
-
/** App keys of the tables the function changes. */
|
|
171
|
-
readonly invalidates: readonly string[];
|
|
172
|
-
readonly context: RequestContext;
|
|
173
|
-
}
|
|
174
|
-
interface ErrorEvent {
|
|
175
|
-
readonly table?: string;
|
|
176
|
-
readonly error: DbError;
|
|
177
|
-
}
|
|
178
|
-
interface AuthEvent {
|
|
179
|
-
readonly source: "bearer" | "cookie" | "none";
|
|
180
|
-
readonly ok: boolean;
|
|
181
|
-
readonly userId?: string;
|
|
182
|
-
/**
|
|
183
|
-
* Why there is no user: the anon reason (`expired`, `signed_out`, ...) or
|
|
184
|
-
* the invalid reason (`token`, `claims`, `actor`).
|
|
185
|
-
*/
|
|
186
|
-
readonly reason?: "none" | "expired" | "signed_out" | "refresh_failed" | "token" | "claims" | "actor";
|
|
187
|
-
/** The user's `source` as the resolver set it, e.g. a custom resolver's name. */
|
|
188
|
-
readonly rawSource?: string;
|
|
189
|
-
}
|
|
190
|
-
interface RefreshEvent {
|
|
191
|
-
readonly ok: boolean;
|
|
192
|
-
readonly shared: boolean;
|
|
193
|
-
readonly durationMs: number;
|
|
194
|
-
}
|
|
195
|
-
interface BetterSupabaseEvents {
|
|
196
|
-
query: QueryEvent;
|
|
197
|
-
mutation: MutationNotice;
|
|
198
|
-
rpc: RpcNotice;
|
|
199
|
-
error: ErrorEvent;
|
|
200
|
-
auth: AuthEvent;
|
|
201
|
-
refresh: RefreshEvent;
|
|
202
|
-
/** Support sessions, organizations, invitations, notifications and webhooks. */
|
|
203
|
-
kit: KitEvent;
|
|
204
|
-
}
|
|
205
|
-
type EventName = keyof BetterSupabaseEvents;
|
|
206
|
-
type EventHandler<K extends EventName> = (event: BetterSupabaseEvents[K]) => void;
|
|
207
|
-
/**
|
|
208
|
-
* Observers only: a handler that throws is reported to the logger and never
|
|
209
|
-
* changes a result.
|
|
210
|
-
*/
|
|
211
|
-
declare class EventHub {
|
|
212
|
-
#private;
|
|
213
|
-
readonly logger: Logger;
|
|
214
|
-
constructor(logger?: Logger);
|
|
215
|
-
on<K extends EventName>(name: K, handler: EventHandler<K>): () => void;
|
|
216
|
-
has(name: EventName): boolean;
|
|
217
|
-
/**
|
|
218
|
-
* Keeps async work a handler started (a sink send) until it settles, so
|
|
219
|
-
* adapters can hand it to `after()` or `waitUntil`. Its outcome is ignored:
|
|
220
|
-
* handlers report their own failures.
|
|
221
|
-
*/
|
|
222
|
-
track(work: PromiseLike<unknown>): void;
|
|
223
|
-
/** Whether tracked work is still running. */
|
|
224
|
-
get pending(): boolean;
|
|
225
|
-
/** Resolves once the work tracked so far has settled. Never rejects. */
|
|
226
|
-
settled(): Promise<void>;
|
|
227
|
-
emit<K extends EventName>(name: K, event: BetterSupabaseEvents[K]): void;
|
|
228
|
-
}
|
|
229
|
-
//#endregion
|
|
230
|
-
export { kitEventAttributes as C, consoleLogger as D, Logger as E, silentLogger as O, WebhookEventData as S, LogFields as T, KitEventType as _, EventHub as a, OrgEventData as b, QueryEvent as c, InvitationEventData as d, KIT_ATTRIBUTES as f, KitEventPattern as g, KitEventMeta as h, EventHandler as i, RefreshEvent as l, KitEventMap as m, BetterSupabaseEvents as n, EventName as o, KitEvent as p, ErrorEvent as r, MutationNotice as s, AuthEvent as t, RpcNotice as u, KitEventsMatching as v, onKitEvent as w, SupportEventData as x, NotificationEventData as y };
|