better-supabase 0.5.1 → 0.6.1
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-CHnPkCPd.js +1160 -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 +224 -0
- package/dist/blocks/attachments/index.js +234 -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 +259 -0
- package/dist/blocks/data-lifecycle/index.js +358 -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-BMqBgM3X.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-4JlOwgWG.js +2 -0
- package/dist/cli/gen-DeuDgPxN.js +3100 -0
- package/dist/cli/index.d.ts +44 -5
- package/dist/cli/index.js +7 -7
- package/dist/cli/{init-DMa6M7hV.js → init-C7Xd0Kda.js} +242 -27
- package/dist/cli/{introspect-BKlaIu_M.js → introspect-CSnMJ94U.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-C8tnlHSb.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-C_4JwyiM.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-CLqs9-OA.js +130 -0
- package/dist/composite-pSfeJNce.d.ts +146 -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-CdPDPpFs.d.ts +25 -0
- package/dist/framework-xjTBoyBB.js +51 -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-C6DWVEVG.d.ts} +237 -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 +34924 -6609
- 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-view-B8SlToQX.d.ts → support-view-33Oi07TT.d.ts} +1 -1
- package/dist/{support-wHnK6zp-.js → support-zIa1URaN.js} +32 -11
- 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-CQt77F3T.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
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
//#region src/blocks/stripe.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* The part of the Stripe SDK (`stripe`, an optional peer) the billing and
|
|
4
|
+
* usage blocks call, typed structurally so the blocks never import it.
|
|
5
|
+
*/
|
|
6
|
+
interface StripeClient {
|
|
7
|
+
readonly customers: {
|
|
8
|
+
create(params: {
|
|
9
|
+
readonly email?: string;
|
|
10
|
+
readonly name?: string;
|
|
11
|
+
readonly metadata?: Readonly<Record<string, string>>;
|
|
12
|
+
}, options?: {
|
|
13
|
+
readonly idempotencyKey?: string;
|
|
14
|
+
}): Promise<{
|
|
15
|
+
readonly id: string;
|
|
16
|
+
}>;
|
|
17
|
+
/** Used by `billing.updateCustomer`. */
|
|
18
|
+
update?(id: string, params: Readonly<Record<string, unknown>>): Promise<{
|
|
19
|
+
readonly id: string;
|
|
20
|
+
}>;
|
|
21
|
+
/** Used by `billing.taxIds`. */
|
|
22
|
+
listTaxIds?(id: string, params?: {
|
|
23
|
+
readonly limit?: number;
|
|
24
|
+
}): Promise<{
|
|
25
|
+
readonly data: readonly StripeTaxId[];
|
|
26
|
+
}>;
|
|
27
|
+
/** Used by `billing.addTaxId`. */
|
|
28
|
+
createTaxId?(id: string, params: {
|
|
29
|
+
readonly type: string;
|
|
30
|
+
readonly value: string;
|
|
31
|
+
}): Promise<StripeTaxId>;
|
|
32
|
+
/** Used by `billing.removeTaxId`. */
|
|
33
|
+
deleteTaxId?(id: string, taxId: string): Promise<{
|
|
34
|
+
readonly id: string;
|
|
35
|
+
readonly deleted?: boolean;
|
|
36
|
+
}>;
|
|
37
|
+
};
|
|
38
|
+
readonly checkout: {
|
|
39
|
+
readonly sessions: {
|
|
40
|
+
create(params: Readonly<Record<string, unknown>>, options?: {
|
|
41
|
+
readonly idempotencyKey?: string;
|
|
42
|
+
}): Promise<{
|
|
43
|
+
readonly id: string;
|
|
44
|
+
readonly url: string | null;
|
|
45
|
+
}>;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
readonly billingPortal: {
|
|
49
|
+
readonly sessions: {
|
|
50
|
+
create(params: {
|
|
51
|
+
readonly customer: string;
|
|
52
|
+
readonly return_url?: string;
|
|
53
|
+
}): Promise<{
|
|
54
|
+
readonly id: string;
|
|
55
|
+
readonly url: string;
|
|
56
|
+
}>;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
readonly subscriptionItems: {
|
|
60
|
+
update(id: string, params: {
|
|
61
|
+
readonly quantity: number;
|
|
62
|
+
readonly proration_behavior?: string;
|
|
63
|
+
}, options?: {
|
|
64
|
+
readonly idempotencyKey?: string;
|
|
65
|
+
}): Promise<{
|
|
66
|
+
readonly id: string;
|
|
67
|
+
readonly quantity?: number | null;
|
|
68
|
+
}>;
|
|
69
|
+
};
|
|
70
|
+
readonly subscriptions: {
|
|
71
|
+
cancel(id: string): Promise<{
|
|
72
|
+
readonly id: string;
|
|
73
|
+
}>;
|
|
74
|
+
/** Used by `billing.changePlan` and `billing.cancelAtPeriodEnd`. */
|
|
75
|
+
update?(id: string, params: Readonly<Record<string, unknown>>, options?: {
|
|
76
|
+
readonly idempotencyKey?: string;
|
|
77
|
+
}): Promise<{
|
|
78
|
+
readonly id: string;
|
|
79
|
+
}>;
|
|
80
|
+
};
|
|
81
|
+
/** Used by `billing.voidInvoice` and `billing.markInvoiceUncollectible`. */
|
|
82
|
+
readonly invoices?: {
|
|
83
|
+
voidInvoice(id: string): Promise<{
|
|
84
|
+
readonly id: string;
|
|
85
|
+
readonly status?: string | null;
|
|
86
|
+
}>;
|
|
87
|
+
markUncollectible(id: string): Promise<{
|
|
88
|
+
readonly id: string;
|
|
89
|
+
readonly status?: string | null;
|
|
90
|
+
}>;
|
|
91
|
+
};
|
|
92
|
+
readonly billing: {
|
|
93
|
+
readonly meterEvents: {
|
|
94
|
+
create(params: {
|
|
95
|
+
readonly event_name: string;
|
|
96
|
+
readonly payload: Readonly<Record<string, string>>;
|
|
97
|
+
readonly identifier?: string;
|
|
98
|
+
readonly timestamp?: number;
|
|
99
|
+
}, options?: {
|
|
100
|
+
readonly idempotencyKey?: string;
|
|
101
|
+
}): Promise<unknown>;
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
readonly webhooks: {
|
|
105
|
+
constructEventAsync(payload: string, header: string, secret: string): Promise<{
|
|
106
|
+
readonly id: string;
|
|
107
|
+
readonly type: string;
|
|
108
|
+
readonly data: {
|
|
109
|
+
readonly object: unknown;
|
|
110
|
+
};
|
|
111
|
+
}>;
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/** A customer tax id as Stripe returns it (`eu_vat`, `DE123456789`). */
|
|
115
|
+
interface StripeTaxId {
|
|
116
|
+
readonly id: string;
|
|
117
|
+
readonly type: string;
|
|
118
|
+
readonly value: string;
|
|
119
|
+
readonly country?: string | null;
|
|
120
|
+
readonly verification?: {
|
|
121
|
+
readonly status?: string | null;
|
|
122
|
+
} | null;
|
|
123
|
+
readonly created?: number | null;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* A Stripe client, the secret key to create one from the `stripe` package,
|
|
127
|
+
* or a function that returns a client. The function runs on every Stripe
|
|
128
|
+
* call, so it can create the client lazily, pick a per-request or per-tenant
|
|
129
|
+
* client (Stripe Connect), or read a rotated key; cache inside it when needed.
|
|
130
|
+
*/
|
|
131
|
+
type StripeSource = StripeClient | {
|
|
132
|
+
readonly secretKey: string;
|
|
133
|
+
readonly apiVersion?: string;
|
|
134
|
+
} | (() => StripeClient | Promise<StripeClient>);
|
|
135
|
+
//#endregion
|
|
136
|
+
export { StripeSource as n, StripeTaxId as r, StripeClient as t };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { c as mapDbError, n as dbError } from "./errors-
|
|
2
|
-
import { t as temporal } from "./temporal-required-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
1
|
+
import { c as mapDbError, n as dbError } from "./errors-B11Duf73.js";
|
|
2
|
+
import { t as temporal } from "./temporal-required-BVvW7SYJ.js";
|
|
3
|
+
import { a as ok, r as err, s as toDbError, t as AsyncResult } from "./result-DzUbqgdW.js";
|
|
4
|
+
import { n as validate } from "./standard-BK0cqJ7y.js";
|
|
5
|
+
import { t as fromPgError } from "./executor-De1Of3m3.js";
|
|
6
|
+
import { d as clearSupportCookie, f as supportCookie, m as supportCookieValue } from "./adapter-CHnPkCPd.js";
|
|
7
|
+
import { r as sqlIdent } from "./template--jDkl3UP.js";
|
|
8
|
+
import { i as emitBlockEvent } from "./block-events-CrT8r7Fe.js";
|
|
9
9
|
//#region src/auth/support.ts
|
|
10
10
|
/** A session from the jsonb the `support-sessions` functions return. */
|
|
11
11
|
function supportSessionFromRow(row) {
|
|
@@ -25,7 +25,7 @@ function supportSessionFromRow(row) {
|
|
|
25
25
|
};
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
|
-
* Support sessions in the `support-sessions` SQL
|
|
28
|
+
* Support sessions in the `support-sessions` SQL module. `start` runs
|
|
29
29
|
* as the admin, so the module's `is_platform()` gate applies; the reads run
|
|
30
30
|
* on the admin connection.
|
|
31
31
|
*/
|
|
@@ -97,6 +97,9 @@ function supportClaims(session, target) {
|
|
|
97
97
|
}
|
|
98
98
|
//#endregion
|
|
99
99
|
//#region src/server/support.ts
|
|
100
|
+
/** How long a support target's claims are reused; a role change applies within it. */
|
|
101
|
+
const CLAIMS_TTL_MS = 6e4;
|
|
102
|
+
const CLAIMS_CACHE_SIZE = 1e3;
|
|
100
103
|
const denied = (message, code) => dbError("forbidden", message, { code });
|
|
101
104
|
const invalid = (message, code) => dbError("invalid_request", message, { code });
|
|
102
105
|
function storeError(cause) {
|
|
@@ -119,7 +122,7 @@ function createSupport(options, events, claimsSchema) {
|
|
|
119
122
|
const maxTtl = policy.maxTtl ?? 14400;
|
|
120
123
|
const cookieName = options.cookie?.name;
|
|
121
124
|
const emit = (type, data) => {
|
|
122
|
-
|
|
125
|
+
emitBlockEvent(events, type, data, {
|
|
123
126
|
actorId: data.adminId,
|
|
124
127
|
...data.sessionId ? { subject: `support_sessions/${data.sessionId}` } : {}
|
|
125
128
|
});
|
|
@@ -129,6 +132,24 @@ function createSupport(options, events, claimsSchema) {
|
|
|
129
132
|
if (store.claims) return store.claims(targetUserId);
|
|
130
133
|
return { role: "authenticated" };
|
|
131
134
|
};
|
|
135
|
+
/** Target claims per support session; the session itself is loaded every time, so revoking stays immediate. */
|
|
136
|
+
const claimsCache = /* @__PURE__ */ new Map();
|
|
137
|
+
const cachedTargetClaims = async (session) => {
|
|
138
|
+
const now = Date.now();
|
|
139
|
+
const cached = claimsCache.get(session.id);
|
|
140
|
+
if (cached && cached.until > now) return cached.claims;
|
|
141
|
+
const claims = await targetClaims(options.store, session.targetUserId);
|
|
142
|
+
claimsCache.delete(session.id);
|
|
143
|
+
if (claimsCache.size >= CLAIMS_CACHE_SIZE) {
|
|
144
|
+
const oldest = claimsCache.keys().next();
|
|
145
|
+
if (!oldest.done) claimsCache.delete(oldest.value);
|
|
146
|
+
}
|
|
147
|
+
claimsCache.set(session.id, {
|
|
148
|
+
claims,
|
|
149
|
+
until: Math.min(session.expiresAt.epochMilliseconds, now + CLAIMS_TTL_MS)
|
|
150
|
+
});
|
|
151
|
+
return claims;
|
|
152
|
+
};
|
|
132
153
|
const checkPolicy = (admin, request, reason, seconds) => {
|
|
133
154
|
if (admin.claims["act"] !== void 0) return denied("An impersonated session cannot start a support session", "SUPPORT_NESTED");
|
|
134
155
|
if (request.targetUserId === admin.user.id) return invalid("An admin cannot start a support session as themselves", "SUPPORT_SELF");
|
|
@@ -250,7 +271,7 @@ function createSupport(options, events, claimsSchema) {
|
|
|
250
271
|
...session,
|
|
251
272
|
readOnly: true
|
|
252
273
|
};
|
|
253
|
-
claims = supportClaims(session, await
|
|
274
|
+
claims = supportClaims(session, await cachedTargetClaims(session));
|
|
254
275
|
} catch (cause) {
|
|
255
276
|
events.logger.warn("Could not load the support session", { cause });
|
|
256
277
|
return;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { b as DbError } from "../result-D7y2fT87.js";
|
|
2
|
+
import { it as QuerySpec } from "../define-CJJkkr1-.js";
|
|
3
|
+
import { n as TemplateValues } from "../template-CwO38Do8.js";
|
|
4
|
+
import { t as AuthSnapshot } from "../bind-Bu_ZNa3W.js";
|
|
5
|
+
import { t as AuthSession } from "../view-DbxLNu8L.js";
|
|
6
|
+
import { S as Topic, f as PresenceMember, u as EventSchemas, w as TopicHandlers, x as SubscriptionStatus } from "../index-DunNRdnT.js";
|
|
7
|
+
import { a as BroadcastOptions, c as LiveCountSource, d as PresenceTopic, f as UseActionOptions, i as ActionState, l as LiveQueryHookOptions, n as ActionInputOf, o as ClientLike, r as ActionResultOf, s as LiveCountHookOptions, t as fieldErrorsOf, u as PresenceHookOptions } from "../field-errors-BFOa7WhB.js";
|
|
8
|
+
import { SupabaseClient } from "@supabase/supabase-js";
|
|
9
|
+
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
10
|
+
import { QueryClient } from "@tanstack/query-core";
|
|
11
|
+
//#region src/svelte/index.d.ts
|
|
12
|
+
/** A value read through `.current`, reactive in templates, `$derived` and `$effect`. */
|
|
13
|
+
export interface Current<T> {
|
|
14
|
+
readonly current: T;
|
|
15
|
+
}
|
|
16
|
+
export interface LiveCount {
|
|
17
|
+
/** `undefined` until the first count arrives. */
|
|
18
|
+
readonly count: number | undefined;
|
|
19
|
+
readonly status: SubscriptionStatus;
|
|
20
|
+
/** The last failed refetch; the previous count stays. */
|
|
21
|
+
readonly error: DbError | undefined;
|
|
22
|
+
}
|
|
23
|
+
export interface Presence<I, O> {
|
|
24
|
+
/** Everyone on the topic, this client included, from the last sync. */
|
|
25
|
+
readonly members: readonly PresenceMember<O>[];
|
|
26
|
+
readonly status: SubscriptionStatus;
|
|
27
|
+
/** Shares a state now; the `state` option tracks one for you. */
|
|
28
|
+
readonly track: (state: I) => Promise<DbError | undefined>;
|
|
29
|
+
readonly untrack: () => Promise<DbError | undefined>;
|
|
30
|
+
}
|
|
31
|
+
export interface SveltePresenceOptions<I> extends Omit<PresenceHookOptions<I>, "state"> {
|
|
32
|
+
readonly state?: () => I | null | undefined;
|
|
33
|
+
}
|
|
34
|
+
export interface ActionHandle<I, T> extends ActionState<I, T> {
|
|
35
|
+
/** Runs the action; resolves with its result. */
|
|
36
|
+
readonly run: (input: I) => Promise<ActionResultOf<T>>;
|
|
37
|
+
readonly reset: () => void;
|
|
38
|
+
}
|
|
39
|
+
/** The claims type of a client's `betterSupabase.claims(schema)`, `unknown` without one. */
|
|
40
|
+
export type ClaimsOf<B extends ClientLike> = B["betterSupabase"] extends {
|
|
41
|
+
readonly claimsSchema: StandardSchemaV1<unknown, infer C> | undefined;
|
|
42
|
+
} ? C : unknown;
|
|
43
|
+
/** The profile type of a client's `betterSupabase.userMetadata(schema)`, `unknown` without one. */
|
|
44
|
+
export type ProfileOf<B extends ClientLike> = B["betterSupabase"] extends {
|
|
45
|
+
readonly userMetadataSchema: StandardSchemaV1<unknown, infer P> | undefined;
|
|
46
|
+
} ? P : unknown;
|
|
47
|
+
/**
|
|
48
|
+
* The client bound to Svelte. Inputs are getters (`() => spec`), so the
|
|
49
|
+
* subscriptions follow `$state` and `$props`. A subscription starts when a
|
|
50
|
+
* template, `$derived` or `$effect` reads one of its fields and stops when
|
|
51
|
+
* nothing reads it any more.
|
|
52
|
+
*/
|
|
53
|
+
export interface BetterSvelte<B extends ClientLike = ClientLike> {
|
|
54
|
+
readonly client: B;
|
|
55
|
+
readonly queryClient: QueryClient | undefined;
|
|
56
|
+
/** Repositories bound to the current session. */
|
|
57
|
+
readonly db: B["db"];
|
|
58
|
+
/** TanStack Query option factories: `createQuery(() => bs.queries.customers.findMany())`. */
|
|
59
|
+
readonly queries: B["queries"];
|
|
60
|
+
readonly supabase: SupabaseClient;
|
|
61
|
+
/** The session state for UI: `loading`, `signed-out` or `signed-in`. */
|
|
62
|
+
readonly auth: Current<AuthSnapshot>;
|
|
63
|
+
broadcast<P extends string, E extends EventSchemas>(topic: Topic<P, E>, values: () => TemplateValues<P> | null | undefined, handlers?: TopicHandlers<E>, options?: BroadcastOptions): Current<SubscriptionStatus>;
|
|
64
|
+
liveQuery(spec: () => QuerySpec | null | undefined, options?: LiveQueryHookOptions): Current<SubscriptionStatus>;
|
|
65
|
+
liveCount(source: () => LiveCountSource, options?: LiveCountHookOptions): LiveCount;
|
|
66
|
+
presence<P extends string, I, O>(topic: PresenceTopic<P, I, O>, values: () => TemplateValues<P> | null | undefined, options?: SveltePresenceOptions<I>): Presence<I, O>;
|
|
67
|
+
action<I, T>(action: (input: I) => Promise<ActionResultOf<T>>, options?: UseActionOptions<ActionInputOf<I>, T>): ActionHandle<ActionInputOf<I>, T>;
|
|
68
|
+
}
|
|
69
|
+
export interface BetterSvelteOptions {
|
|
70
|
+
/** better-supabase queries are reset when the user signs out or changes. */
|
|
71
|
+
readonly queryClient?: QueryClient;
|
|
72
|
+
}
|
|
73
|
+
/** Binds a client to Svelte without a component context, e.g. in tests or a module. */
|
|
74
|
+
export declare function createBetterSvelte<B extends ClientLike>(client: B, options?: BetterSvelteOptions): BetterSvelte<B>;
|
|
75
|
+
/**
|
|
76
|
+
* Binds the client for the components below, in the root layout. With a
|
|
77
|
+
* `queryClient`, better-supabase queries are reset when the caller changes.
|
|
78
|
+
*
|
|
79
|
+
* ```svelte
|
|
80
|
+
* <script lang="ts">
|
|
81
|
+
* setBetterSupabase(bs, { queryClient });
|
|
82
|
+
* <\/script>
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export declare function setBetterSupabase<B extends ClientLike>(client: B, options?: BetterSvelteOptions): BetterSvelte<B>;
|
|
86
|
+
/** The client `setBetterSupabase` bound, typed with `getBetterSupabase<typeof bs>()`. */
|
|
87
|
+
export declare function getBetterSupabase<B extends ClientLike = ClientLike>(): BetterSvelte<B>;
|
|
88
|
+
/** The session state for UI. Call during component setup. */
|
|
89
|
+
export declare function useAuth(): Current<AuthSnapshot>;
|
|
90
|
+
/** Subscribes to a topic while read. Call during component setup. */
|
|
91
|
+
export declare function useBroadcast<P extends string, E extends EventSchemas>(topic: Topic<P, E>, values: () => TemplateValues<P> | null | undefined, handlers?: TopicHandlers<E>, options?: BroadcastOptions): Current<SubscriptionStatus>;
|
|
92
|
+
/**
|
|
93
|
+
* Keeps a query fresh while read. Call during component setup.
|
|
94
|
+
*
|
|
95
|
+
* ```svelte
|
|
96
|
+
* <script lang="ts">
|
|
97
|
+
* const live = useLiveQuery(() => betterSupabase.spec.customers.findMany());
|
|
98
|
+
* <\/script>
|
|
99
|
+
* <span data-status={live.current}></span>
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export declare function useLiveQuery(spec: () => QuerySpec | null | undefined, options?: LiveQueryHookOptions): Current<SubscriptionStatus>;
|
|
103
|
+
/** A count that stays current while read. Call during component setup. */
|
|
104
|
+
export declare function useLiveCount(source: () => LiveCountSource, options?: LiveCountHookOptions): LiveCount;
|
|
105
|
+
/** Joins a presence topic while read. Call during component setup. */
|
|
106
|
+
export declare function usePresence<P extends string, I, O>(topic: PresenceTopic<P, I, O>, values: () => TemplateValues<P> | null | undefined, options?: SveltePresenceOptions<I>): Presence<I, O>;
|
|
107
|
+
/** Tracks the runs of a server action or form action. */
|
|
108
|
+
export declare function useAction<I, T>(action: (input: I) => Promise<ActionResultOf<T>>, options?: UseActionOptions<ActionInputOf<I>, T>): ActionHandle<ActionInputOf<I>, T>;
|
|
109
|
+
/** Shares a server-verified session (from `+layout.ts` data) with the components below. */
|
|
110
|
+
export declare function setSession(session: () => AuthSession): void;
|
|
111
|
+
/** The session from the nearest `setSession()`, typed with `useSession<Claims, Profile>()`. */
|
|
112
|
+
export declare function useSession<C = unknown, P = unknown>(): Current<AuthSession<C, P>>;
|
|
113
|
+
//#endregion
|
|
114
|
+
export { type ActionInputOf, type ActionResultOf, type ActionState, type AuthSession, type AuthSnapshot, type BroadcastOptions, type ClientLike, type LiveCountHookOptions, type LiveCountSource, type LiveQueryHookOptions, type PresenceHookOptions, type PresenceTopic, type UseActionOptions, fieldErrorsOf };
|
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
import { t as clearOnUserChange } from "../user-change-XzvgafU4.js";
|
|
2
|
+
import { t as fieldErrorsOf } from "../field-errors-VF1yb8yI.js";
|
|
3
|
+
import { a as createActionRunner, c as liveKey, d as shownCount, f as startBroadcast, i as countSource, l as notJoined, m as startLiveQuery, n as assertInvalidateClient, o as joinPresence, p as startLiveCount, r as callerOf, s as keyed, t as NO_COUNT, u as plainCaller } from "../client-CI0Z2zWX.js";
|
|
4
|
+
import { getContext, onMount, setContext } from "svelte";
|
|
5
|
+
import { createSubscriber } from "svelte/reactivity";
|
|
6
|
+
//#region src/svelte/index.ts
|
|
7
|
+
/** Reads a store reactively: the caller re-runs when the store changes. */
|
|
8
|
+
function reactive(store) {
|
|
9
|
+
const subscribe = createSubscriber((update) => store.subscribe(update));
|
|
10
|
+
return { get current() {
|
|
11
|
+
subscribe();
|
|
12
|
+
return store.current();
|
|
13
|
+
} };
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A subscription keyed by `key()`. The returned function goes in each
|
|
17
|
+
* getter: it registers the reader, then restarts the subscription when the
|
|
18
|
+
* key (read in the reader's tracking context) changed. Notifications are
|
|
19
|
+
* queued, since a getter may run inside `$derived`, where writes throw.
|
|
20
|
+
*/
|
|
21
|
+
function followed(key, start) {
|
|
22
|
+
const run = keyed();
|
|
23
|
+
let notify;
|
|
24
|
+
const queued = () => {
|
|
25
|
+
queueMicrotask(() => notify?.());
|
|
26
|
+
};
|
|
27
|
+
const update = () => {
|
|
28
|
+
const next = key();
|
|
29
|
+
run.update(next, () => next === null ? void 0 : start(next, queued));
|
|
30
|
+
};
|
|
31
|
+
const subscribe = createSubscriber((changed) => {
|
|
32
|
+
notify = changed;
|
|
33
|
+
update();
|
|
34
|
+
return () => {
|
|
35
|
+
notify = void 0;
|
|
36
|
+
run.stop();
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
return () => {
|
|
40
|
+
subscribe();
|
|
41
|
+
if (notify) update();
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
const NO_MEMBERS = [];
|
|
45
|
+
/** Binds a client to Svelte without a component context, e.g. in tests or a module. */
|
|
46
|
+
function createBetterSvelte(client, options = {}) {
|
|
47
|
+
const { queryClient } = options;
|
|
48
|
+
const auth = reactive(client.auth);
|
|
49
|
+
const plainCallers = /* @__PURE__ */ new WeakMap();
|
|
50
|
+
const callerFor = (supabase) => {
|
|
51
|
+
if (supabase === void 0) return { get current() {
|
|
52
|
+
return callerOf(auth.current);
|
|
53
|
+
} };
|
|
54
|
+
let caller = plainCallers.get(supabase);
|
|
55
|
+
if (!caller) {
|
|
56
|
+
caller = reactive(plainCaller(supabase));
|
|
57
|
+
plainCallers.set(supabase, caller);
|
|
58
|
+
}
|
|
59
|
+
return caller;
|
|
60
|
+
};
|
|
61
|
+
return {
|
|
62
|
+
client,
|
|
63
|
+
queryClient,
|
|
64
|
+
db: client.db,
|
|
65
|
+
queries: client.queries,
|
|
66
|
+
supabase: client.supabase,
|
|
67
|
+
auth,
|
|
68
|
+
broadcast(topic, values, handlers, options) {
|
|
69
|
+
const supabase = options?.client ?? client.supabase;
|
|
70
|
+
const forQuery = options?.queryClient ?? queryClient;
|
|
71
|
+
assertInvalidateClient("broadcast", options, forQuery);
|
|
72
|
+
const caller = callerFor(options?.client);
|
|
73
|
+
let status = "closed";
|
|
74
|
+
const name = () => {
|
|
75
|
+
const current = values();
|
|
76
|
+
return current ? topic.topic(current) : null;
|
|
77
|
+
};
|
|
78
|
+
const track = followed(() => {
|
|
79
|
+
const current = name();
|
|
80
|
+
const who = caller.current;
|
|
81
|
+
if (current === null || who.status === "loading") return null;
|
|
82
|
+
return JSON.stringify([current, who.userId]);
|
|
83
|
+
}, (_key, notify) => {
|
|
84
|
+
const current = name();
|
|
85
|
+
if (current === null) return;
|
|
86
|
+
return startBroadcast({
|
|
87
|
+
supabase,
|
|
88
|
+
topic,
|
|
89
|
+
name: current,
|
|
90
|
+
latest: () => ({
|
|
91
|
+
handlers,
|
|
92
|
+
options
|
|
93
|
+
}),
|
|
94
|
+
queryClient: forQuery,
|
|
95
|
+
onStatus: (next) => {
|
|
96
|
+
status = next;
|
|
97
|
+
notify();
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
return { get current() {
|
|
102
|
+
track();
|
|
103
|
+
return status;
|
|
104
|
+
} };
|
|
105
|
+
},
|
|
106
|
+
liveQuery(spec, options = {}) {
|
|
107
|
+
let status = "closed";
|
|
108
|
+
let joined = null;
|
|
109
|
+
const track = followed(() => {
|
|
110
|
+
const current = spec();
|
|
111
|
+
if (current && !queryClient) throw new Error("better-supabase: liveQuery needs setBetterSupabase(bs, { queryClient })");
|
|
112
|
+
return liveKey(client, current, auth.current, options);
|
|
113
|
+
}, (key, notify) => {
|
|
114
|
+
const current = spec();
|
|
115
|
+
if (!current || !queryClient) return;
|
|
116
|
+
const resumed = joined === key;
|
|
117
|
+
joined = key;
|
|
118
|
+
return startLiveQuery({
|
|
119
|
+
client,
|
|
120
|
+
queryClient,
|
|
121
|
+
spec: current,
|
|
122
|
+
auth: client.auth.current(),
|
|
123
|
+
options,
|
|
124
|
+
resumed,
|
|
125
|
+
onStatus: (next) => {
|
|
126
|
+
status = next;
|
|
127
|
+
notify();
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
return { get current() {
|
|
132
|
+
track();
|
|
133
|
+
return status;
|
|
134
|
+
} };
|
|
135
|
+
},
|
|
136
|
+
liveCount(source, options = {}) {
|
|
137
|
+
let status = "closed";
|
|
138
|
+
let state = NO_COUNT;
|
|
139
|
+
let joined = null;
|
|
140
|
+
const parsed = () => countSource(source(), options);
|
|
141
|
+
const key = () => liveKey(client, parsed().spec, auth.current, options);
|
|
142
|
+
const track = followed(key, (next, notify) => {
|
|
143
|
+
const { spec, initial, seedAt } = parsed();
|
|
144
|
+
if (!spec) return;
|
|
145
|
+
const previous = joined?.key === next ? joined : null;
|
|
146
|
+
joined = {
|
|
147
|
+
key: next,
|
|
148
|
+
at: previous?.at ?? seedAt ?? 0
|
|
149
|
+
};
|
|
150
|
+
return startLiveCount({
|
|
151
|
+
client,
|
|
152
|
+
spec,
|
|
153
|
+
key: next,
|
|
154
|
+
auth: client.auth.current(),
|
|
155
|
+
options,
|
|
156
|
+
immediate: initial === void 0 && !previous,
|
|
157
|
+
since: previous ? previous.at : seedAt,
|
|
158
|
+
onState: (update) => {
|
|
159
|
+
state = update(state);
|
|
160
|
+
if (joined?.key === next) joined = {
|
|
161
|
+
key: next,
|
|
162
|
+
at: state.at
|
|
163
|
+
};
|
|
164
|
+
notify();
|
|
165
|
+
},
|
|
166
|
+
onStatus: (value) => {
|
|
167
|
+
status = value;
|
|
168
|
+
notify();
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
const shown = () => {
|
|
173
|
+
track();
|
|
174
|
+
return shownCount(state, key(), parsed());
|
|
175
|
+
};
|
|
176
|
+
return {
|
|
177
|
+
get count() {
|
|
178
|
+
return shown().count;
|
|
179
|
+
},
|
|
180
|
+
get status() {
|
|
181
|
+
track();
|
|
182
|
+
return status;
|
|
183
|
+
},
|
|
184
|
+
get error() {
|
|
185
|
+
return shown().error;
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
},
|
|
189
|
+
presence(topic, values, options = {}) {
|
|
190
|
+
const supabase = options.client ?? client.supabase;
|
|
191
|
+
const caller = callerFor(options.client);
|
|
192
|
+
let members = NO_MEMBERS;
|
|
193
|
+
let status = "closed";
|
|
194
|
+
let join;
|
|
195
|
+
const name = () => {
|
|
196
|
+
const current = values();
|
|
197
|
+
return current ? topic.topic(current) : null;
|
|
198
|
+
};
|
|
199
|
+
const follow = followed(() => {
|
|
200
|
+
const current = name();
|
|
201
|
+
const who = caller.current;
|
|
202
|
+
if (current === null || who.status === "loading") return null;
|
|
203
|
+
return JSON.stringify([current, who.userId]);
|
|
204
|
+
}, (_key, notify) => {
|
|
205
|
+
const current = name();
|
|
206
|
+
if (current === null) return;
|
|
207
|
+
const joined = joinPresence(supabase, topic, current, {
|
|
208
|
+
onStatus: (next) => {
|
|
209
|
+
status = next;
|
|
210
|
+
notify();
|
|
211
|
+
},
|
|
212
|
+
onPresence: (next) => {
|
|
213
|
+
members = next;
|
|
214
|
+
notify();
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
if (!joined) return;
|
|
218
|
+
join = joined;
|
|
219
|
+
joined.sync(options.state?.());
|
|
220
|
+
return () => {
|
|
221
|
+
join = void 0;
|
|
222
|
+
members = NO_MEMBERS;
|
|
223
|
+
status = "closed";
|
|
224
|
+
joined.leave();
|
|
225
|
+
notify();
|
|
226
|
+
};
|
|
227
|
+
});
|
|
228
|
+
const track = () => {
|
|
229
|
+
follow();
|
|
230
|
+
join?.sync(options.state?.());
|
|
231
|
+
};
|
|
232
|
+
return {
|
|
233
|
+
get members() {
|
|
234
|
+
track();
|
|
235
|
+
return members;
|
|
236
|
+
},
|
|
237
|
+
get status() {
|
|
238
|
+
track();
|
|
239
|
+
return status;
|
|
240
|
+
},
|
|
241
|
+
track: (state) => join?.track(state) ?? notJoined(),
|
|
242
|
+
untrack: () => join?.untrack() ?? notJoined()
|
|
243
|
+
};
|
|
244
|
+
},
|
|
245
|
+
action(action, options = {}) {
|
|
246
|
+
const call = action;
|
|
247
|
+
const runner = createActionRunner(() => ({
|
|
248
|
+
action: call,
|
|
249
|
+
options
|
|
250
|
+
}));
|
|
251
|
+
const state = reactive(runner);
|
|
252
|
+
return {
|
|
253
|
+
run: runner.run,
|
|
254
|
+
reset: runner.reset,
|
|
255
|
+
get pending() {
|
|
256
|
+
return state.current.pending;
|
|
257
|
+
},
|
|
258
|
+
get pendingInputs() {
|
|
259
|
+
return state.current.pendingInputs;
|
|
260
|
+
},
|
|
261
|
+
get pendingInput() {
|
|
262
|
+
return state.current.pendingInput;
|
|
263
|
+
},
|
|
264
|
+
get data() {
|
|
265
|
+
return state.current.data;
|
|
266
|
+
},
|
|
267
|
+
get error() {
|
|
268
|
+
return state.current.error;
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
const CLIENT = Symbol("better-supabase");
|
|
275
|
+
const SESSION = Symbol("better-supabase-session");
|
|
276
|
+
/**
|
|
277
|
+
* Binds the client for the components below, in the root layout. With a
|
|
278
|
+
* `queryClient`, better-supabase queries are reset when the caller changes.
|
|
279
|
+
*
|
|
280
|
+
* ```svelte
|
|
281
|
+
* <script lang="ts">
|
|
282
|
+
* setBetterSupabase(bs, { queryClient });
|
|
283
|
+
* <\/script>
|
|
284
|
+
* ```
|
|
285
|
+
*/
|
|
286
|
+
function setBetterSupabase(client, options = {}) {
|
|
287
|
+
const bound = createBetterSvelte(client, options);
|
|
288
|
+
const { queryClient } = options;
|
|
289
|
+
if (queryClient) onMount(() => clearOnUserChange(queryClient, client.auth));
|
|
290
|
+
return setContext(CLIENT, bound);
|
|
291
|
+
}
|
|
292
|
+
/** The client `setBetterSupabase` bound, typed with `getBetterSupabase<typeof bs>()`. */
|
|
293
|
+
function getBetterSupabase() {
|
|
294
|
+
const bound = getContext(CLIENT);
|
|
295
|
+
if (!bound) throw new Error("better-supabase: call setBetterSupabase(bs) in a parent component");
|
|
296
|
+
return bound;
|
|
297
|
+
}
|
|
298
|
+
/** The session state for UI. Call during component setup. */
|
|
299
|
+
function useAuth() {
|
|
300
|
+
return getBetterSupabase().auth;
|
|
301
|
+
}
|
|
302
|
+
/** Subscribes to a topic while read. Call during component setup. */
|
|
303
|
+
function useBroadcast(topic, values, handlers, options) {
|
|
304
|
+
return getBetterSupabase().broadcast(topic, values, handlers, options);
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Keeps a query fresh while read. Call during component setup.
|
|
308
|
+
*
|
|
309
|
+
* ```svelte
|
|
310
|
+
* <script lang="ts">
|
|
311
|
+
* const live = useLiveQuery(() => betterSupabase.spec.customers.findMany());
|
|
312
|
+
* <\/script>
|
|
313
|
+
* <span data-status={live.current}></span>
|
|
314
|
+
* ```
|
|
315
|
+
*/
|
|
316
|
+
function useLiveQuery(spec, options) {
|
|
317
|
+
return getBetterSupabase().liveQuery(spec, options);
|
|
318
|
+
}
|
|
319
|
+
/** A count that stays current while read. Call during component setup. */
|
|
320
|
+
function useLiveCount(source, options) {
|
|
321
|
+
return getBetterSupabase().liveCount(source, options);
|
|
322
|
+
}
|
|
323
|
+
/** Joins a presence topic while read. Call during component setup. */
|
|
324
|
+
function usePresence(topic, values, options) {
|
|
325
|
+
return getBetterSupabase().presence(topic, values, options);
|
|
326
|
+
}
|
|
327
|
+
/** Tracks the runs of a server action or form action. */
|
|
328
|
+
function useAction(action, options) {
|
|
329
|
+
return getBetterSupabase().action(action, options);
|
|
330
|
+
}
|
|
331
|
+
/** Shares a server-verified session (from `+layout.ts` data) with the components below. */
|
|
332
|
+
function setSession(session) {
|
|
333
|
+
setContext(SESSION, session);
|
|
334
|
+
}
|
|
335
|
+
/** The session from the nearest `setSession()`, typed with `useSession<Claims, Profile>()`. */
|
|
336
|
+
function useSession() {
|
|
337
|
+
const session = getContext(SESSION);
|
|
338
|
+
if (!session) throw new Error("better-supabase: useSession() needs setSession(() => data.session) in a parent component");
|
|
339
|
+
return { get current() {
|
|
340
|
+
return session();
|
|
341
|
+
} };
|
|
342
|
+
}
|
|
343
|
+
//#endregion
|
|
344
|
+
export { createBetterSvelte, fieldErrorsOf, getBetterSupabase, setBetterSupabase, setSession, useAction, useAuth, useBroadcast, useLiveCount, useLiveQuery, usePresence, useSession };
|