better-supabase 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +299 -41
- package/dist/access-sql-B0dF-SoF.js +181 -0
- package/dist/actor-CQTlc1Hh.d.ts +43 -0
- package/dist/adapter-Bc1o3zyy.js +1106 -0
- package/dist/agents-CVHGd7It.d.ts +94 -0
- package/dist/ai-cache-CBWs1W0k.js +80 -0
- package/dist/ai-cache-DaDu_G5L.d.ts +64 -0
- package/dist/ai-chat-7amvXjmQ.d.ts +590 -0
- package/dist/ai-chat-B24UI962.js +743 -0
- package/dist/ai-files-CSPNswUY.js +319 -0
- package/dist/ai-sdk/agents/index.d.ts +74 -0
- package/dist/ai-sdk/agents/index.js +159 -0
- package/dist/ai-sdk/batches/index.d.ts +74 -0
- package/dist/ai-sdk/batches/index.js +180 -0
- package/dist/ai-sdk/cache/index.d.ts +38 -0
- package/dist/ai-sdk/cache/index.js +127 -0
- package/dist/ai-sdk/chat/index.d.ts +2 -0
- package/dist/ai-sdk/chat/index.js +246 -0
- package/dist/ai-sdk/embeddings/index.d.ts +3 -0
- package/dist/ai-sdk/embeddings/index.js +2 -0
- package/dist/ai-sdk/files/index.d.ts +61 -0
- package/dist/ai-sdk/files/index.js +111 -0
- package/dist/ai-sdk/index.d.ts +145 -0
- package/dist/ai-sdk/index.js +174 -0
- package/dist/ai-sdk/mcp/index.d.ts +102 -0
- package/dist/ai-sdk/mcp/index.js +362 -0
- package/dist/ai-sdk/memory/index.d.ts +67 -0
- package/dist/ai-sdk/memory/index.js +175 -0
- package/dist/ai-sdk/react/index.d.ts +2 -0
- package/dist/ai-sdk/react/index.js +3 -0
- package/dist/ai-sdk/react/server.d.ts +6 -0
- package/dist/ai-sdk/react/server.js +7 -0
- package/dist/ai-sdk/workflow/index.d.ts +249 -0
- package/dist/ai-sdk/workflow/index.js +575 -0
- package/dist/ai-sdk/workflow/react/index.d.ts +20 -0
- package/dist/ai-sdk/workflow/react/index.js +66 -0
- package/dist/ai-sdk/workflow/react/server.d.ts +10 -0
- package/dist/ai-sdk/workflow/react/server.js +12 -0
- package/dist/ai-tasks-Cd1HMFvB.d.ts +131 -0
- package/dist/announcements-CiyOs-xP.js +107 -0
- package/dist/announcements-ZRGnScWI.d.ts +72 -0
- package/dist/api-keys-rCGtKaZA.d.ts +156 -0
- package/dist/assistant-DwdpDH1q.d.ts +147 -0
- package/dist/astro/index.d.ts +86 -0
- package/dist/astro/index.js +93 -0
- package/dist/attributes-5dYul0u0.js +13 -0
- package/dist/auth-link-BjFPqwLz.d.ts +97 -0
- package/dist/auth-link-DrDX9KOT.js +114 -0
- package/dist/authorization-BFCqamMs.d.ts +172 -0
- package/dist/before-route-CnR0C0Jr.js +30 -0
- package/dist/bind-Bu_ZNa3W.d.ts +62 -0
- package/dist/bind-l4kAvYSv.js +97 -0
- package/dist/block-events-CrT8r7Fe.js +76 -0
- package/dist/block-fields-GFkxl4dP.js +49 -0
- package/dist/block-fields-SJ6fEf3o.d.ts +31 -0
- package/dist/block-helpers-CKtbFcRv.d.ts +37 -0
- package/dist/block-helpers-DWHxHsEQ.js +190 -0
- package/dist/block-hooks-BmjMyXTa.js +114 -0
- package/dist/block-hooks-plbZ0AbJ.d.ts +107 -0
- package/dist/{kit-transport-DJlHQUBU.js → block-transport-BLr-ZgLc.js} +11 -7
- package/dist/block-transport-DvaoPuZ9.d.ts +48 -0
- package/dist/blocks/agents/index.d.ts +3 -0
- package/dist/blocks/agents/index.js +123 -0
- package/dist/blocks/ai-cache/index.d.ts +3 -0
- package/dist/blocks/ai-cache/index.js +3 -0
- package/dist/blocks/ai-chat/index.d.ts +31 -0
- package/dist/blocks/ai-chat/index.js +5 -0
- package/dist/blocks/ai-chat/react/index.d.ts +77 -0
- package/dist/blocks/ai-chat/react/index.js +387 -0
- package/dist/blocks/ai-chat/react/server.d.ts +16 -0
- package/dist/blocks/ai-chat/react/server.js +14 -0
- package/dist/blocks/ai-files/index.d.ts +14 -0
- package/dist/blocks/ai-files/index.js +3 -0
- package/dist/blocks/ai-providers/index.d.ts +7 -0
- package/dist/blocks/ai-providers/index.js +211 -0
- package/dist/blocks/ai-tasks/index.d.ts +3 -0
- package/dist/blocks/ai-tasks/index.js +203 -0
- package/dist/blocks/announcements/index.d.ts +3 -0
- package/dist/blocks/announcements/index.js +3 -0
- package/dist/blocks/announcements/react/index.d.ts +31 -0
- package/dist/blocks/announcements/react/index.js +86 -0
- package/dist/blocks/announcements/react/server.d.ts +6 -0
- package/dist/blocks/announcements/react/server.js +7 -0
- package/dist/blocks/api-keys/index.d.ts +35 -0
- package/dist/blocks/api-keys/index.js +334 -0
- package/dist/blocks/attachments/index.d.ts +210 -0
- package/dist/blocks/attachments/index.js +222 -0
- package/dist/blocks/audit/index.d.ts +366 -0
- package/dist/blocks/audit/index.js +714 -0
- package/dist/blocks/billing/index.d.ts +265 -0
- package/dist/blocks/billing/index.js +400 -0
- package/dist/blocks/comments/index.d.ts +200 -0
- package/dist/blocks/comments/index.js +207 -0
- package/dist/blocks/connectors/index.d.ts +3 -0
- package/dist/blocks/connectors/index.js +164 -0
- package/dist/blocks/data-lifecycle/index.d.ts +251 -0
- package/dist/blocks/data-lifecycle/index.js +353 -0
- package/dist/blocks/entitlements/index.d.ts +14 -0
- package/dist/blocks/entitlements/index.js +25 -0
- package/dist/blocks/flags/index.d.ts +226 -0
- package/dist/blocks/flags/index.js +282 -0
- package/dist/blocks/inbox/index.d.ts +6 -0
- package/dist/blocks/inbox/index.js +499 -0
- package/dist/blocks/inbox/react/index.d.ts +2 -0
- package/dist/blocks/inbox/react/index.js +225 -0
- package/dist/blocks/inbox/react/server.d.ts +10 -0
- package/dist/blocks/inbox/react/server.js +12 -0
- package/dist/blocks/index.d.ts +65 -0
- package/dist/blocks/index.js +77 -0
- package/dist/blocks/jobs/index.d.ts +297 -0
- package/dist/blocks/jobs/index.js +1051 -0
- package/dist/blocks/knowledge/index.d.ts +3 -0
- package/dist/blocks/knowledge/index.js +3 -0
- package/dist/blocks/memory/index.d.ts +8 -0
- package/dist/blocks/memory/index.js +289 -0
- package/dist/blocks/notifications/index.d.ts +297 -0
- package/dist/blocks/notifications/index.js +425 -0
- package/dist/blocks/notifications/react/index.d.ts +44 -0
- package/dist/blocks/notifications/react/index.js +67 -0
- package/dist/blocks/notifications/react/server.d.ts +6 -0
- package/dist/blocks/notifications/react/server.js +7 -0
- package/dist/blocks/onboarding/index.d.ts +3 -0
- package/dist/blocks/onboarding/index.js +64 -0
- package/dist/blocks/onboarding/react/index.d.ts +28 -0
- package/dist/blocks/onboarding/react/index.js +78 -0
- package/dist/blocks/onboarding/react/server.d.ts +7 -0
- package/dist/blocks/onboarding/react/server.js +7 -0
- package/dist/blocks/organizations/index.d.ts +241 -0
- package/dist/blocks/organizations/index.js +400 -0
- package/dist/blocks/outbox/index.d.ts +3 -0
- package/dist/blocks/outbox/index.js +266 -0
- package/dist/blocks/profiles/index.d.ts +40 -0
- package/dist/blocks/profiles/index.js +28 -0
- package/dist/blocks/push/index.d.ts +185 -0
- package/dist/blocks/push/index.js +258 -0
- package/dist/blocks/settings/index.d.ts +89 -0
- package/dist/blocks/settings/index.js +104 -0
- package/dist/blocks/sso/index.d.ts +198 -0
- package/dist/blocks/sso/index.js +1297 -0
- package/dist/blocks/usage/index.d.ts +4 -0
- package/dist/blocks/usage/index.js +233 -0
- package/dist/blocks/waitlist/index.d.ts +117 -0
- package/dist/blocks/waitlist/index.js +132 -0
- package/dist/blocks/webhooks/index.d.ts +304 -0
- package/dist/{webhooks → blocks/webhooks}/index.js +468 -148
- package/dist/blocks/workflow-builder/index.d.ts +21 -0
- package/dist/blocks/workflow-builder/index.js +5 -0
- package/dist/blocks/workflow-builder/react/index.d.ts +47 -0
- package/dist/blocks/workflow-builder/react/index.js +119 -0
- package/dist/blocks/workflow-builder/react/server.d.ts +8 -0
- package/dist/blocks/workflow-builder/react/server.js +11 -0
- package/dist/blocks/workflows/index.d.ts +3 -0
- package/dist/blocks/workflows/index.js +3 -0
- package/dist/blocks/workflows/react/index.d.ts +47 -0
- package/dist/blocks/workflows/react/index.js +137 -0
- package/dist/blocks/workflows/react/server.d.ts +8 -0
- package/dist/blocks/workflows/react/server.js +11 -0
- package/dist/{index-SaTsEfGP.d.ts → bucket-Cl46E3jS.d.ts} +134 -91
- package/dist/{simplify-_0oUKqCd.js → build-BXIzE6Xv.js} +222 -124
- package/dist/{channel-FQW-CnGR.d.ts → channel-_2Mx1Oyu.d.ts} +2 -2
- package/dist/channels-CkgQ_X60.js +114 -0
- package/dist/chat-sdk/index.d.ts +303 -0
- package/dist/chat-sdk/index.js +733 -0
- package/dist/chat-sdk/react/index.d.ts +2 -0
- package/dist/chat-sdk/react/index.js +3 -0
- package/dist/chat-sdk/react/server.d.ts +3 -0
- package/dist/chat-sdk/react/server.js +2 -0
- package/dist/claims-DDBQT6BK.js +61 -0
- package/dist/{claims-BAf6c7is.js → claims-PqzCxaTD.js} +39 -2
- package/dist/cli/bin.js +1 -1
- package/dist/cli/{codemod-DqV7612m.js → codemod-Bl_tQpHn.js} +105 -2
- package/dist/cli/config-B9HkL8nF.js +2 -0
- package/dist/cli/config-DU7EJImt.js +49 -0
- package/dist/cli/config-NiPxAmUF.js +1077 -0
- package/dist/cli/{dist-xn4wlboc.js → dist-DRAVaE6w.js} +111 -1
- package/dist/cli/{doctor-L7Z8mYTx.js → doctor-B4JOm_ox.js} +992 -316
- package/dist/cli/{env-DmKv_G4A.js → env-CJLbUVPB.js} +1 -1
- package/dist/cli/{env-jIFUADLY.js → env-qXgyMV6r.js} +2 -2
- package/dist/cli/fresh-import-BeYf9I3x.js +40 -0
- package/dist/cli/gen-BGLb_zou.js +3100 -0
- package/dist/cli/gen-DAH8FM2W.js +2 -0
- package/dist/cli/index.d.ts +44 -5
- package/dist/cli/index.js +7 -7
- package/dist/cli/{init-Saf5-R9T.js → init-BIIwclPg.js} +242 -27
- package/dist/cli/{introspect--H7oGmcd.js → introspect-DNUTuNvb.js} +5 -5
- package/dist/cli/{io-k41_z-jT.js → io-DI1mTdSA.js} +12 -3
- package/dist/cli/{keys-ByKHnvP9.js → keys-BGCnnb-s.js} +8 -6
- package/dist/cli/{ohash-D7bG_EOb.js → ohash-BjQY1cBb.js} +1 -1
- package/dist/cli/{openapi-Cp5Fyta-.js → openapi-BlRJ18s3.js} +2 -2
- package/dist/cli/{project-B_GeXyHh.js → project-DZRaBaY7.js} +11 -6
- package/dist/cli/read-sets-CETOSFx4.js +223 -0
- package/dist/cli/{run-BKR2W_79.js → run-DNWxHynX.js} +33 -23
- package/dist/cli/{seed-CUlqWh-8.js → seed-DQzqT7LP.js} +8 -6
- package/dist/cli/{skills-LJJIhLFR.js → skills-QQs4q68J.js} +3 -2
- package/dist/cli/sql-D0GUtUPp.js +536 -0
- package/dist/cli/{config-CPVpXP5I.js → supabase-toml-B-bIukQF.js} +72 -942
- package/dist/cli/typegen-version-DeFbtzYI.js +8 -0
- package/dist/cli/{version-BDJuO0UR.js → version-hr88OZG0.js} +1 -1
- package/dist/client/index.d.ts +3 -2
- package/dist/client/index.js +11 -71
- package/dist/client/native/index.d.ts +228 -0
- package/dist/client/native/index.js +361 -0
- package/dist/client-CI0Z2zWX.js +277 -0
- package/dist/cloud-event-BnmD5fb9.js +46 -0
- package/dist/cloud-event-C1JCc1bH.d.ts +50 -0
- package/dist/{compiler-BXH_aZ7N.d.ts → compiler-DY_wkj4R.d.ts} +2 -2
- package/dist/compose-BIBNgAnq.js +53 -0
- package/dist/composite-Bt1YK3Ke.d.ts +146 -0
- package/dist/composite-DhE66P5u.js +130 -0
- package/dist/config/index.d.ts +6 -4
- package/dist/config/index.js +5 -5
- package/dist/{config-T_ejwyd3.d.ts → config-D44Y7PAv.d.ts} +406 -205
- package/dist/{config-DreERlKo.js → config-Dn7F5k9A.js} +62 -14
- package/dist/connector-Dv8kK0MO.d.ts +107 -0
- package/dist/connectors-hkLCwyEz.d.ts +120 -0
- package/dist/context-BCrWe7ow.d.ts +237 -0
- package/dist/credentials/index.d.ts +31 -0
- package/dist/credentials/index.js +168 -0
- package/dist/cron-DVPUg5k3.js +145 -0
- package/dist/csv-CPAzEmB6.js +25 -0
- package/dist/db-exception-CnWcYPxL.js +15 -0
- package/dist/{define-cNKzqwL_.js → define-B-TVjC25.js} +784 -227
- package/dist/{define-Bp_BZa5h.d.ts → define-CJJkkr1-.d.ts} +353 -61
- package/dist/edge/index.d.ts +69 -11
- package/dist/edge/index.js +191 -75
- package/dist/elysia/index.d.ts +59 -0
- package/dist/elysia/index.js +62 -0
- package/dist/embeddings-4ZvFzjsU.js +127 -0
- package/dist/embeddings-C9KGQnXt.d.ts +68 -0
- package/dist/{refresh-BTrQ_ZTp.d.ts → ended-jLfvw8h-.d.ts} +20 -2
- package/dist/{entitlements-DUxU4oHe.d.ts → entitlements-DHrY2UDZ.d.ts} +16 -7
- package/dist/entitlements-DRl6ZJUm.js +24 -0
- package/dist/envelope-DqnYGRw7.js +47 -0
- package/dist/{errors-DtwXa6b8.js → errors-B11Duf73.js} +82 -13
- package/dist/errors-DLjJHPLK.js +44 -0
- package/dist/escape-like-DHfx6jRr.js +7 -0
- package/dist/escape-like-ImTK0ps_.d.ts +15 -0
- package/dist/eve/index.d.ts +220 -0
- package/dist/eve/index.js +504 -0
- package/dist/eve-gT2Fpjut.d.ts +151 -0
- package/dist/events/index.d.ts +4 -3
- package/dist/events/index.js +9 -50
- package/dist/events-DWDhx77e.d.ts +549 -0
- package/dist/executor-Bq28caBo.js +718 -0
- package/dist/executor-C-R4pucm.js +83 -0
- package/dist/executor-CaWigTyR.d.ts +148 -0
- package/dist/executor-D14tGopJ.d.ts +36 -0
- package/dist/{executor-Cghdstwu.d.ts → executor-DbvExCFC.d.ts} +7 -1
- package/dist/{sql-Coh6n4cC.js → executor-De1Of3m3.js} +210 -11
- package/dist/executor-DvsBbNBS.d.ts +261 -0
- package/dist/expo/index.d.ts +79 -0
- package/dist/expo/index.js +129 -0
- package/dist/expo-sqlite/index.d.ts +58 -0
- package/dist/expo-sqlite/index.js +104 -0
- package/dist/field-errors-BFOa7WhB.d.ts +99 -0
- package/dist/field-errors-VF1yb8yI.js +13 -0
- package/dist/framework-CONDyPYx.js +51 -0
- package/dist/framework-DuVb4Xa8.d.ts +25 -0
- package/dist/gateway-C1ssRHnf.d.ts +130 -0
- package/dist/graph-BGyLLFLX.js +265 -0
- package/dist/h3/index.d.ts +59 -0
- package/dist/h3/index.js +55 -0
- package/dist/h3/v1/index.d.ts +63 -0
- package/dist/h3/v1/index.js +49 -0
- package/dist/history-BZih6SFP.js +64 -0
- package/dist/hono/index.d.ts +56 -7
- package/dist/hono/index.js +97 -45
- package/dist/{react-C_s7kiNz.js → hooks-1BTCJsiw.js} +104 -133
- package/dist/http-Cv4T29xh.js +40 -0
- package/dist/http-DdYadv-o.js +126 -0
- package/dist/image-url-pIVlO6R1.js +41 -0
- package/dist/impersonation-DcqaTBHx.js +148 -0
- package/dist/inbox-i7E1ppo6.d.ts +384 -0
- package/dist/index-ACiNPN4Z.d.ts +74 -0
- package/dist/{index-DgILJRXj.d.ts → index-Bepi-Hgg.d.ts} +91 -28
- package/dist/index-BkWT_uBO.d.ts +51 -0
- package/dist/index-BpFYMsi0.d.ts +53 -0
- package/dist/{index-C7f8cOBM.d.ts → index-Bxih3l0u.d.ts} +2 -2
- package/dist/index-CaxrMD1A.d.ts +1 -0
- package/dist/index-ClmjK_o-.d.ts +55 -0
- package/dist/index-CtuakVRc.d.ts +267 -0
- package/dist/index-D48jVS-N.d.ts +246 -0
- package/dist/index-DDrYaUcq.d.ts +138 -0
- package/dist/index-DQh4VCc9.d.ts +98 -0
- package/dist/{live-D9W2M5aO.d.ts → index-DunNRdnT.d.ts} +136 -38
- package/dist/index.d.ts +65 -18
- package/dist/index.js +42 -14
- package/dist/invalidate-BBqhpxyB.d.ts +19 -0
- package/dist/json-CEnpTHlZ.js +16 -0
- package/dist/json-schema-CvER4kgT.js +502 -0
- package/dist/keys-4MnkWTTh.js +35 -0
- package/dist/kit-B5tid-q5.d.ts +60 -0
- package/dist/kit-Fm-Fv7q5.js +78 -0
- package/dist/knowledge-BXBbT0Tr.d.ts +176 -0
- package/dist/knowledge-CDmiMLew.js +255 -0
- package/dist/lint/index.d.ts +1 -1
- package/dist/lint/index.js +37 -0
- package/dist/list/index.d.ts +3 -2
- package/dist/list/index.js +1 -444
- package/dist/{index-fag8VJZ2.d.ts → list-query-BRt-zDF7.d.ts} +20 -12
- package/dist/list-query-gl808ac1.js +459 -0
- package/dist/{live-CdJBOc4f.js → live-CTAZQkwl.js} +99 -14
- package/dist/logger-DWVYUmwi.d.ts +18 -0
- package/dist/mcp/index.d.ts +38 -11
- package/dist/mcp/index.js +82 -46
- package/dist/mcp/sdk/index.d.ts +105 -0
- package/dist/mcp/sdk/index.js +126 -0
- package/dist/message-CaKlqdsX.js +219 -0
- package/dist/message-CfDoR0Y6.d.ts +94 -0
- package/dist/messages-B9-5887d.js +715 -0
- package/dist/messages-DYP0sUTe.d.ts +59 -0
- package/dist/{mfa-CusDgPaD.d.ts → mfa-Daak8ukG.d.ts} +8 -2
- package/dist/modules-DpPwzC7E.d.ts +192 -0
- package/dist/modules-dxrVK3ID.js +228 -0
- package/dist/nestjs/index.d.ts +68 -0
- package/dist/nestjs/index.js +164 -0
- package/dist/next/client/index.d.ts +35 -0
- package/dist/next/client/index.js +36 -0
- package/dist/next/image/index.js +3 -24
- package/dist/next/index.d.ts +150 -51
- package/dist/next/index.js +261 -107
- package/dist/node/index.d.ts +4 -0
- package/dist/node/index.js +210 -0
- package/dist/node-headers-AO06VhqH.d.ts +24 -0
- package/dist/node-headers-C71zNQHe.js +55 -0
- package/dist/nuxt/index.d.ts +60 -0
- package/dist/nuxt/index.js +64 -0
- package/dist/onboarding-BZGHYJks.d.ts +62 -0
- package/dist/openapi/index.d.ts +1 -1
- package/dist/openapi/index.js +3 -3
- package/dist/orpc/index.d.ts +70 -11
- package/dist/orpc/index.js +73 -24
- package/dist/otel/index.d.ts +7 -7
- package/dist/otel/index.js +87 -57
- package/dist/outbox-Cq7pPYvl.d.ts +161 -0
- package/dist/{plugin-o144f322.d.ts → plugin-FGY8UhYm.d.ts} +30 -10
- package/dist/plugin-tfXW1-qO.js +45 -0
- package/dist/plugins/actor/index.d.ts +2 -2
- package/dist/plugins/actor/index.js +3 -3
- package/dist/plugins/rules/index.d.ts +11 -4
- package/dist/plugins/rules/index.js +40 -13
- package/dist/plugins/soft-delete/index.d.ts +5 -4
- package/dist/plugins/soft-delete/index.js +10 -5
- package/dist/plugins/tenant/index.d.ts +2 -2
- package/dist/plugins/tenant/index.js +18 -11
- package/dist/plugins/timestamps/index.d.ts +5 -3
- package/dist/plugins/timestamps/index.js +6 -4
- package/dist/plugins/validation/index.d.ts +2 -2
- package/dist/plugins/validation/index.js +10 -6
- package/dist/{pool-C9voM4Kw.d.ts → pool-CAu2nLrL.d.ts} +2 -2
- package/dist/postgres/index.d.ts +4 -4
- package/dist/postgres/index.js +1 -2
- package/dist/{postgrest-CruYKAvV.d.ts → postgrest-BLVdEnfe.d.ts} +13 -3
- package/dist/powersync/index.d.ts +43 -0
- package/dist/powersync/index.js +199 -0
- package/dist/powersync/react/index.d.ts +87 -0
- package/dist/powersync/react/index.js +108 -0
- package/dist/{problem-BW1KhzSG.js → problem-BreOl8b8.js} +14 -3
- package/dist/{problem-Blxe8S31.d.ts → problem-DD8LZFjc.d.ts} +21 -3
- package/dist/provider-BH5UWZJ6.d.ts +113 -0
- package/dist/provider-Di3sRutW.js +57 -0
- package/dist/query/index.d.ts +4 -2
- package/dist/query/index.js +4 -3
- package/dist/{query-CCbo44lG.js → query-BQ-NaZon.js} +141 -24
- package/dist/{queue-BYUCjr59.d.ts → queue-CLJurhdy.d.ts} +258 -83
- package/dist/react/index.d.ts +11 -7
- package/dist/react/index.js +7 -3
- package/dist/react/native/index.d.ts +116 -0
- package/dist/react/native/index.js +130 -0
- package/dist/react/server.d.ts +28 -10
- package/dist/react/server.js +22 -5
- package/dist/react/session.d.ts +2 -2
- package/dist/react-4ZqkP8da.js +79 -0
- package/dist/react-F80mF4-t.js +409 -0
- package/dist/react-router/index.d.ts +83 -0
- package/dist/react-router/index.js +89 -0
- package/dist/react-topic-seAWjL3_.js +38 -0
- package/dist/{read-set-DQFt1N_Y.js → read-set-DuKWC9Mj.js} +67 -25
- package/dist/realtime/index.d.ts +4 -5
- package/dist/realtime/index.js +144 -82
- package/dist/refusal-CeJWxmkH.js +61 -0
- package/dist/refusal-D1rgbzNq.d.ts +15 -0
- package/dist/replicas-CwrYp5Zj.js +94 -0
- package/dist/{view-Bq64ki8-.js → resolve-D_IcnvFd.js} +239 -289
- package/dist/{resolve-C15TJq77.d.ts → resolve-KW8nCeL6.d.ts} +29 -45
- package/dist/{resource-CRxxwkQq.js → resource-BsvzCMlX.js} +4 -4
- package/dist/{resource-D8iqWMr-.d.ts → resource-D6Uc7Sk7.d.ts} +5 -5
- package/dist/respond-BUgsXNgk.js +91 -0
- package/dist/respond-DoBijysA.d.ts +93 -0
- package/dist/result-D7y2fT87.d.ts +282 -0
- package/dist/{result-BKiliPY7.js → result-DzUbqgdW.js} +27 -2
- package/dist/run-state-CPo-1X2B.d.ts +12 -0
- package/dist/run-state-CgBKzYMW.js +13 -0
- package/dist/search-CUWCRYKL.js +9 -0
- package/dist/server/index.d.ts +143 -21
- package/dist/server/index.js +46 -14
- package/dist/{respond-D2OQl62-.d.ts → server-CeVeeXwz.d.ts} +225 -80
- package/dist/session-ChiXDZdZ.d.ts +72 -0
- package/dist/shared-CBxosKK3.js +75 -0
- package/dist/{shared-D1dRUrAg.js → shared-CxWmcyqB.js} +2 -1
- package/dist/shared-DDSjEGDR.d.ts +11 -0
- package/dist/sign-in-BCV5S2WZ.d.ts +49 -0
- package/dist/sign-in-Cb1mwv6X.js +86 -0
- package/dist/{signers-Cc6r98SW.d.ts → signers-4y62_VIi.d.ts} +13 -9
- package/dist/simplify-DDO0j0LI.js +83 -0
- package/dist/solid/index.d.ts +131 -0
- package/dist/solid/index.js +344 -0
- package/dist/solid-start/index.d.ts +75 -0
- package/dist/solid-start/index.js +58 -0
- package/dist/{spec-pins-C3oc-Tdp.js → spec-pins--j6mTok4.js} +8 -1
- package/dist/{spec-pins-CqorWDnO.d.ts → spec-pins-C89s6DyW.d.ts} +7 -0
- package/dist/sql/index.d.ts +330 -194
- package/dist/sql/index.js +34901 -6489
- package/dist/ssr/index.d.ts +6 -5
- package/dist/ssr/index.js +3 -3
- package/dist/{standard-D7r6dMUu.js → standard-BK0cqJ7y.js} +4 -3
- package/dist/{standard-J4YgMOLm.d.ts → standard-CYsm7xpT.d.ts} +1 -1
- package/dist/stats-D_AD9GGu.js +1123 -0
- package/dist/storage/index.d.ts +5 -5
- package/dist/storage/index.js +1027 -368
- package/dist/store-BdH5ruDx.js +66 -0
- package/dist/store-CGjgWu5n.d.ts +68 -0
- package/dist/streams/index.d.ts +76 -0
- package/dist/streams/index.js +77 -0
- package/dist/streams/redis/index.d.ts +52 -0
- package/dist/streams/redis/index.js +185 -0
- package/dist/stripe-BMj5LtsT.js +38 -0
- package/dist/stripe-D04h-QBT.d.ts +136 -0
- package/dist/{support-Dk6vdmEw.js → support-BivNqSpK.js} +35 -12
- package/dist/{support-view-Da5peKFg.d.ts → support-view-33Oi07TT.d.ts} +1 -1
- package/dist/svelte/index.d.ts +114 -0
- package/dist/svelte/index.js +344 -0
- package/dist/sveltekit/index.d.ts +116 -0
- package/dist/sveltekit/index.js +106 -0
- package/dist/tags-B99_U9Pp.js +39 -0
- package/dist/tags-Cx-LnIQP.d.ts +30 -0
- package/dist/tanstack-db/index.d.ts +71 -0
- package/dist/tanstack-db/index.js +72 -0
- package/dist/tanstack-start/index.d.ts +75 -0
- package/dist/tanstack-start/index.js +95 -0
- package/dist/tee-CoEppCER.js +101 -0
- package/dist/{template-TxrGI5jR.js → template--jDkl3UP.js} +34 -13
- package/dist/template-CwO38Do8.d.ts +6 -0
- package/dist/temporal-BJGitm-h.js +79 -0
- package/dist/{temporal-required-CAt4Dc9Z.js → temporal-required-BVvW7SYJ.js} +3 -2
- package/dist/tenant-I1TEZ_BX.js +27 -0
- package/dist/tenant-icPeuUBN.d.ts +17 -0
- package/dist/testing/index.d.ts +343 -37
- package/dist/testing/index.js +1186 -79
- package/dist/timing-CyTQPubY.js +92 -0
- package/dist/ttl-Hr34gRu8.js +12 -0
- package/dist/{types-Dnf_wRDz.d.ts → types-6BdhkmZe.d.ts} +111 -45
- package/dist/types-BI-0Sl2v.d.ts +359 -0
- package/dist/types-C05bxW-W.d.ts +220 -0
- package/dist/types-DGs5L0VN.d.ts +192 -0
- package/dist/types-TaiEeBGA.d.ts +156 -0
- package/dist/usage-CrvrL2vw.d.ts +177 -0
- package/dist/user-change-XzvgafU4.js +130 -0
- package/dist/vault-CSO7ss5C.d.ts +50 -0
- package/dist/vercel-connect/index.d.ts +47 -0
- package/dist/vercel-connect/index.js +119 -0
- package/dist/{verify-Ce49ETPz.js → verify-DL41hbvY.js} +85 -13
- package/dist/verify-DPuWngD4.d.ts +172 -0
- package/dist/{version-DM_Roffb.js → version-Bvv6aLjZ.js} +1 -1
- package/dist/view-BeFcRV6G.js +99 -0
- package/dist/{view-BEf0diC5.d.ts → view-DbxLNu8L.d.ts} +35 -32
- package/dist/vue/index.d.ts +141 -0
- package/dist/vue/index.js +362 -0
- package/dist/watch-DI34G86j.d.ts +60 -0
- package/dist/watch-Xuxrvxq-.js +122 -0
- package/dist/{wire-D2dT86vi.js → wire-DtZQ4sdE.js} +15 -5
- package/dist/workflow-builder-DJ1oHn8g.js +398 -0
- package/dist/workflow-sdk/builder/index.d.ts +85 -0
- package/dist/workflow-sdk/builder/index.js +250 -0
- package/dist/workflow-sdk/index.d.ts +14 -0
- package/dist/workflow-sdk/index.js +3 -0
- package/dist/workflow-sdk/world/index.d.ts +107 -0
- package/dist/workflow-sdk/world/index.js +702 -0
- package/dist/workflow-sdk-B3yLD6Br.d.ts +98 -0
- package/dist/workflow-sdk-C2WJ_G2O.js +173 -0
- package/dist/workflow-sdk-world-D-prir6O.js +1397 -0
- package/dist/workflows-B0j9WKPu.d.ts +185 -0
- package/dist/workflows-wu1WWBn7.js +216 -0
- package/package.json +470 -29
- package/schemas/ai-message-v1.json +258 -0
- package/schemas/config-v1.json +1074 -140
- package/schemas/doctor-report-v1.json +21 -1
- package/schemas/snapshot-v2.json +8 -0
- package/skills/better-supabase/SKILL.md +41 -12
- package/skills/better-supabase/references/frontend.md +96 -0
- package/skills/better-supabase/references/plugins.md +10 -6
- package/skills/better-supabase/references/troubleshooting.md +2 -1
- package/skills/better-supabase-api/SKILL.md +76 -22
- package/skills/better-supabase-api/references/adapters.md +207 -0
- package/skills/better-supabase-api/references/ai.md +125 -0
- package/skills/better-supabase-api/references/expo.md +65 -0
- package/skills/better-supabase-api/references/powersync.md +35 -0
- package/skills/better-supabase-api/references/streams-credentials.md +105 -0
- package/skills/better-supabase-auth/SKILL.md +62 -18
- package/skills/better-supabase-auth/references/authorization-providers.md +51 -0
- package/skills/better-supabase-testing/SKILL.md +3 -1
- package/dist/cli/config-dtoekM0v.js +0 -2
- package/dist/cli/gen-BJc9vdyu.js +0 -2
- package/dist/cli/gen-C2osRcr5.js +0 -2204
- package/dist/cli/read-sets-BfMQcKy8.js +0 -289
- package/dist/cli/sql-DzPbfngx.js +0 -348
- package/dist/entitlements-CTEBm7IB.js +0 -20
- package/dist/events-aIO7vsIk.d.ts +0 -230
- package/dist/executor-BunPOO-k.d.ts +0 -402
- package/dist/executor-XycESQPH.js +0 -94
- package/dist/impersonation-VfaGc4Q_.js +0 -41
- package/dist/index-BGdgBPdf.d.ts +0 -161
- package/dist/index-DOESKG27.d.ts +0 -100
- package/dist/index-DmXSxbLi.d.ts +0 -62
- package/dist/index-Dxn2a5cw.d.ts +0 -50
- package/dist/jobs/index.d.ts +0 -226
- package/dist/jobs/index.js +0 -1007
- package/dist/json-schema-m1fiwKgN.js +0 -208
- package/dist/kit-events-CTFDfSwb.js +0 -60
- package/dist/kit-transport-B82k1djG.d.ts +0 -33
- package/dist/kits-CGLLrNPd.js +0 -157
- package/dist/notifications/index.d.ts +0 -162
- package/dist/notifications/index.js +0 -264
- package/dist/orgs/index.d.ts +0 -132
- package/dist/orgs/index.js +0 -245
- package/dist/permdock-sql-C2Inc6Xc.d.ts +0 -29
- package/dist/permdock-sql-DgOfeixi.js +0 -51
- package/dist/plugin-DwARMuQp.js +0 -59
- package/dist/server-Csx2sRjg.js +0 -655
- package/dist/stats-Bqob3WqT.js +0 -592
- package/dist/support-DT-OhSxD.d.ts +0 -88
- package/dist/template-mbvlysOo.d.ts +0 -6
- package/dist/temporal-CVlIV2DZ.js +0 -40
- package/dist/user-change-CHFEUro1.js +0 -49
- package/dist/webhooks/index.d.ts +0 -285
- package/skills/better-supabase-auth/references/permdock.md +0 -100
|
@@ -0,0 +1,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 };
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { a as AnyModels, i as AnyFunctions } from "../types-6BdhkmZe.js";
|
|
2
|
+
import { t as BetterSupabase } from "../define-CJJkkr1-.js";
|
|
3
|
+
import { t as BetterServer } from "../server-CeVeeXwz.js";
|
|
4
|
+
import { a as AuthorizedContext, c as Unwrapped, i as AuthorizeOptions, n as ActionParsed, o as BlockActionOptions, r as ActionResult, s as BlockRequireOptions } from "../kit-B5tid-q5.js";
|
|
5
|
+
import { t as RefusalRedirects } from "../refusal-D1rgbzNq.js";
|
|
6
|
+
import { n as FrameworkOptions, t as FrameworkLocals } from "../framework-DuVb4Xa8.js";
|
|
7
|
+
import { t as Validated } from "../shared-DDSjEGDR.js";
|
|
8
|
+
import { i as tagFor } from "../tags-Cx-LnIQP.js";
|
|
9
|
+
import { AnyEntry, Contributions } from "@supabase/middleware";
|
|
10
|
+
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
11
|
+
//#region src/bridges/sveltekit.d.ts
|
|
12
|
+
/** The part of SvelteKit's `RequestEvent` the bridge reads and writes. */
|
|
13
|
+
interface SvelteKitEvent<Locals extends object> {
|
|
14
|
+
readonly request: Request;
|
|
15
|
+
readonly locals: Locals;
|
|
16
|
+
readonly platform?: {
|
|
17
|
+
readonly env?: unknown;
|
|
18
|
+
} | undefined;
|
|
19
|
+
}
|
|
20
|
+
/** SvelteKit's `Handle`, typed structurally so the package does not import `@sveltejs/kit`. */
|
|
21
|
+
type SvelteKitHandle<Locals extends object> = (input: {
|
|
22
|
+
readonly event: SvelteKitEvent<Locals>;
|
|
23
|
+
readonly resolve: (event: SvelteKitEvent<Locals>) => Response | Promise<Response>;
|
|
24
|
+
}) => Promise<Response>;
|
|
25
|
+
/**
|
|
26
|
+
* Runs an entry array as a SvelteKit `handle` hook. Every contributed key
|
|
27
|
+
* lands on `event.locals`, so loads, actions and endpoints read
|
|
28
|
+
* `locals.db`; `event.platform.env` (Cloudflare) seeds `getEnv`. Declare
|
|
29
|
+
* the keys in `App.Locals` with `BetterSupabaseContributions`.
|
|
30
|
+
*
|
|
31
|
+
* ```ts title="src/hooks.server.ts"
|
|
32
|
+
* export const handle = toSvelteKit([withBetterSupabase(server)])
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* Compose it with other hooks through SvelteKit's `sequence`.
|
|
36
|
+
*/
|
|
37
|
+
export declare function toSvelteKit<const Entries extends readonly AnyEntry[]>(entries: Entries & Validated<Entries>): SvelteKitHandle<Partial<Contributions<Entries>>>;
|
|
38
|
+
//#endregion
|
|
39
|
+
//#region src/sveltekit/create.d.ts
|
|
40
|
+
/** SvelteKit's `fail()` result, typed structurally. */
|
|
41
|
+
interface SvelteKitFailure<T> {
|
|
42
|
+
readonly status: number;
|
|
43
|
+
readonly data: T;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* `error`, `redirect` and `fail` from `@sveltejs/kit`. Pass them so refused
|
|
47
|
+
* callers get SvelteKit's own errors and redirects, and failed form actions
|
|
48
|
+
* a `fail()` with the status.
|
|
49
|
+
*/
|
|
50
|
+
interface SvelteKitHelpers {
|
|
51
|
+
error(status: number, body: {
|
|
52
|
+
readonly message: string;
|
|
53
|
+
}): never;
|
|
54
|
+
redirect(status: 303, location: string): never;
|
|
55
|
+
fail(status: number, data: Record<string, unknown>): SvelteKitFailure<unknown>;
|
|
56
|
+
}
|
|
57
|
+
interface SvelteKitOptions extends FrameworkOptions {
|
|
58
|
+
/** `{ error, redirect, fail }` from `@sveltejs/kit`. */
|
|
59
|
+
readonly kit?: SvelteKitHelpers;
|
|
60
|
+
}
|
|
61
|
+
/** The part of a SvelteKit `RequestEvent` the guards read. */
|
|
62
|
+
interface SvelteKitRequestEvent<Locals extends object = object> {
|
|
63
|
+
readonly request: Request;
|
|
64
|
+
readonly locals: Locals;
|
|
65
|
+
}
|
|
66
|
+
/** A load's `depends`, typed structurally. */
|
|
67
|
+
interface SvelteKitDepends {
|
|
68
|
+
depends(...deps: `${string}:${string}`[]): void;
|
|
69
|
+
}
|
|
70
|
+
/** What `handleError` returns: SvelteKit's `App.Error` with a code. */
|
|
71
|
+
interface SvelteKitAppError {
|
|
72
|
+
readonly message: string;
|
|
73
|
+
readonly code?: string;
|
|
74
|
+
}
|
|
75
|
+
interface BetterSvelteKit<M extends AnyModels, F extends AnyFunctions, E, C = unknown, P = unknown> extends BetterServer<M, F, E, C, P> {
|
|
76
|
+
/** The keys on `event.locals`, for `App.Locals`. Type only: `undefined` at runtime. */
|
|
77
|
+
readonly Locals: FrameworkLocals<M, F, E, C, P>;
|
|
78
|
+
/**
|
|
79
|
+
* The `handle` hook: verifies the caller, refreshes the session cookie on
|
|
80
|
+
* navigations and form posts, and puts `db`, `bs`, `auth`, `tenant` and
|
|
81
|
+
* the serializable `session` on `event.locals`.
|
|
82
|
+
*/
|
|
83
|
+
readonly handle: SvelteKitHandle<Partial<FrameworkLocals<M, F, E, C, P>>>;
|
|
84
|
+
/**
|
|
85
|
+
* The caller in a `load` or endpoint, or a refusal: a redirect to
|
|
86
|
+
* `signIn` or `mfa` when configured, else SvelteKit's `error()`.
|
|
87
|
+
*
|
|
88
|
+
* ```ts
|
|
89
|
+
* export const load = async (event) => {
|
|
90
|
+
* const { db, tenant } = await bs.require(event, { requireTenant: true });
|
|
91
|
+
* return { customers: await db.customers.findMany().orThrow() };
|
|
92
|
+
* };
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
require<R extends boolean = false>(event: SvelteKitRequestEvent, options?: BlockRequireOptions<C, P, R>): Promise<FrameworkLocals<M, F, E, C, P> & AuthorizedContext<C, P, R>>;
|
|
96
|
+
/**
|
|
97
|
+
* A form action returning an `ActionResult`: validates the form with
|
|
98
|
+
* `input`, runs the guard and `authorize`, and on failure answers with
|
|
99
|
+
* `fail(status, result)` when `kit` is set, so `form.error` is a `DbError`.
|
|
100
|
+
*/
|
|
101
|
+
action<S extends StandardSchemaV1 | undefined, T, R extends boolean = false>(options: BlockActionOptions<S, C, P, R>, fn: (input: ActionParsed<S>, ctx: FrameworkLocals<M, F, E, C, P> & AuthorizedContext<C, P, R>, event: SvelteKitRequestEvent) => T): (event: SvelteKitRequestEvent) => Promise<ActionResult<Unwrapped<Awaited<T>>> | SvelteKitFailure<ActionResult<never>>>;
|
|
102
|
+
/**
|
|
103
|
+
* `handleError` for `hooks.server.ts`: `DbError`s keep their message and
|
|
104
|
+
* kind as `code`; other errors become a generic message unless
|
|
105
|
+
* `exposeErrors` is on.
|
|
106
|
+
*/
|
|
107
|
+
handleError(input: {
|
|
108
|
+
readonly error: unknown;
|
|
109
|
+
}): SvelteKitAppError;
|
|
110
|
+
/** Registers `bs:<table>` dependencies, so `invalidate(tagFor(table))` reruns the load. */
|
|
111
|
+
depends(load: SvelteKitDepends, ...tables: readonly string[]): void;
|
|
112
|
+
}
|
|
113
|
+
/** SvelteKit integration: a `handle` hook, guarded loads and form actions. */
|
|
114
|
+
export declare function createSvelteKit<M extends AnyModels, D, F extends AnyFunctions, E, C = unknown, P = unknown>(betterSupabase: BetterSupabase<M, D, F, E, C, P>, options?: SvelteKitOptions): BetterSvelteKit<M, F, E, C, P>;
|
|
115
|
+
//#endregion
|
|
116
|
+
export { type ActionResult, type AuthorizeOptions, type AuthorizedContext, type BetterSvelteKit, type BlockActionOptions, type BlockRequireOptions, type FrameworkLocals, type FrameworkOptions, type RefusalRedirects, type SvelteKitAppError, type SvelteKitDepends, type SvelteKitEvent, type SvelteKitFailure, type SvelteKitHandle, type SvelteKitHelpers, type SvelteKitOptions, type SvelteKitRequestEvent, tagFor };
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { t as DbException } from "../db-exception-CnWcYPxL.js";
|
|
2
|
+
import { r as dbErrorOf } from "../errors-B11Duf73.js";
|
|
3
|
+
import { o as toProblem } from "../problem-BreOl8b8.js";
|
|
4
|
+
import { c as extendServer, n as flushEvents, s as createServer } from "../adapter-Bc1o3zyy.js";
|
|
5
|
+
import { t as defaultExpose } from "../respond-BUgsXNgk.js";
|
|
6
|
+
import { r as tagFor } from "../tags-B99_U9Pp.js";
|
|
7
|
+
import { i as requireCaller, o as runAction } from "../kit-Fm-Fv7q5.js";
|
|
8
|
+
import { n as bufferInPlace, t as around } from "../shared-CBxosKK3.js";
|
|
9
|
+
import { a as platformWaitUntil, i as localsOf, n as actionInput, r as frameworkEntry } from "../framework-CONDyPYx.js";
|
|
10
|
+
import { i as refusalTarget } from "../refusal-CeJWxmkH.js";
|
|
11
|
+
//#region src/bridges/sveltekit.ts
|
|
12
|
+
/**
|
|
13
|
+
* Runs an entry array as a SvelteKit `handle` hook. Every contributed key
|
|
14
|
+
* lands on `event.locals`, so loads, actions and endpoints read
|
|
15
|
+
* `locals.db`; `event.platform.env` (Cloudflare) seeds `getEnv`. Declare
|
|
16
|
+
* the keys in `App.Locals` with `BetterSupabaseContributions`.
|
|
17
|
+
*
|
|
18
|
+
* ```ts title="src/hooks.server.ts"
|
|
19
|
+
* export const handle = toSvelteKit([withBetterSupabase(server)])
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* Compose it with other hooks through SvelteKit's `sequence`.
|
|
23
|
+
*/
|
|
24
|
+
function toSvelteKit(entries) {
|
|
25
|
+
const run = around(entries);
|
|
26
|
+
return ({ event, resolve }) => {
|
|
27
|
+
bufferInPlace(event.request);
|
|
28
|
+
return run(event.request, event.platform?.env, async (contributions) => {
|
|
29
|
+
Object.assign(event.locals, contributions);
|
|
30
|
+
return resolve(event);
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
//#region src/sveltekit/create.ts
|
|
36
|
+
/** SvelteKit integration: a `handle` hook, guarded loads and form actions. */
|
|
37
|
+
function createSvelteKit(betterSupabase, options = {}) {
|
|
38
|
+
const server = createServer(betterSupabase, options);
|
|
39
|
+
const expose = options.exposeErrors ?? defaultExpose();
|
|
40
|
+
const run = around([frameworkEntry(server, options, expose)]);
|
|
41
|
+
const localsFrom = (event) => {
|
|
42
|
+
const locals = event.locals;
|
|
43
|
+
if (!locals.bs) throw new TypeError("better-supabase: no context on event.locals; export handle = bs.handle from hooks.server.ts");
|
|
44
|
+
return locals;
|
|
45
|
+
};
|
|
46
|
+
const refuse = (error, request) => {
|
|
47
|
+
const target = refusalTarget(error, request, options);
|
|
48
|
+
if (options.kit) {
|
|
49
|
+
if (target) options.kit.redirect(303, target.pathname + target.search);
|
|
50
|
+
options.kit.error(error.status, { message: toProblem(error, { expose }).detail ?? error.message });
|
|
51
|
+
}
|
|
52
|
+
throw new DbException(error);
|
|
53
|
+
};
|
|
54
|
+
const handle = ({ event, resolve }) => {
|
|
55
|
+
bufferInPlace(event.request);
|
|
56
|
+
const platform = event.platform;
|
|
57
|
+
const env = event.platform?.env;
|
|
58
|
+
return run(event.request, env, async (contributions) => {
|
|
59
|
+
Object.assign(event.locals, localsOf(contributions));
|
|
60
|
+
const response = await resolve(event);
|
|
61
|
+
flushEvents(server, options.waitUntil ?? platformWaitUntil(platform));
|
|
62
|
+
return response;
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
return extendServer(server, {
|
|
66
|
+
Locals: void 0,
|
|
67
|
+
handle,
|
|
68
|
+
require: async (event, requireOptions = {}) => {
|
|
69
|
+
const locals = localsFrom(event);
|
|
70
|
+
const caller = await requireCaller(locals.bs.auth, requireOptions, locals.tenant);
|
|
71
|
+
if ("kind" in caller) return refuse(caller, event.request);
|
|
72
|
+
return {
|
|
73
|
+
...locals,
|
|
74
|
+
...caller
|
|
75
|
+
};
|
|
76
|
+
},
|
|
77
|
+
action(actionOptions, fn) {
|
|
78
|
+
return async (event) => {
|
|
79
|
+
const locals = localsFrom(event);
|
|
80
|
+
const input = await actionInput(event.request);
|
|
81
|
+
const result = await runAction(locals.bs.auth, actionOptions, input, locals.tenant, (parsed, caller) => fn(parsed, {
|
|
82
|
+
...locals,
|
|
83
|
+
...caller
|
|
84
|
+
}, event));
|
|
85
|
+
if (!result.ok && options.kit) return options.kit.fail(result.error.status, result);
|
|
86
|
+
return result;
|
|
87
|
+
};
|
|
88
|
+
},
|
|
89
|
+
handleError({ error }) {
|
|
90
|
+
const found = dbErrorOf(error);
|
|
91
|
+
if (found) {
|
|
92
|
+
const problem = toProblem(found, { expose });
|
|
93
|
+
return {
|
|
94
|
+
message: problem.detail ?? problem.title,
|
|
95
|
+
code: found.kind
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
return { message: expose && error instanceof Error ? error.message : "Internal Error" };
|
|
99
|
+
},
|
|
100
|
+
depends(load, ...tables) {
|
|
101
|
+
for (const table of tables) load.depends(`bs:${table}`);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
//#endregion
|
|
106
|
+
export { createSvelteKit, tagFor, toSvelteKit };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
//#region src/core/tags.ts
|
|
2
|
+
/**
|
|
3
|
+
* `bs:<table>`, `bs:<table>:<id>`, or `bs:<table>@<tenant>` for a read
|
|
4
|
+
* scoped to one tenant. Mutations invalidate the table tag, the tag of their
|
|
5
|
+
* tenant (`bs:<table>@*` without one) and the tags of the changed rows.
|
|
6
|
+
*/
|
|
7
|
+
function tagFor(table, id, options = {}) {
|
|
8
|
+
if (id !== void 0) return `bs:${table}:${String(id)}`;
|
|
9
|
+
return options.tenant === void 0 ? `bs:${table}` : `bs:${table}@${options.tenant}`;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The tags a mutation invalidates: `bs:<table>` for every table in the
|
|
13
|
+
* target, the tenant's `bs:<table>@<tenant>` (every tenant's `bs:<table>@*`
|
|
14
|
+
* when the mutation has no tenant) and `bs:<table>:<id>` per changed row.
|
|
15
|
+
*/
|
|
16
|
+
function cacheTagsOf(target) {
|
|
17
|
+
const tenant = { tenant: target.tenant ?? "*" };
|
|
18
|
+
const tags = [];
|
|
19
|
+
for (const table of target.tables) tags.push(tagFor(table), tagFor(table, void 0, tenant));
|
|
20
|
+
for (const id of target.ids) tags.push(tagFor(target.table, id));
|
|
21
|
+
return tags;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* A `CacheAdapter` for any tag-based cache: it hands `invalidate` the tags
|
|
25
|
+
* from `cacheTagsOf`, e.g. a CDN purge by tag, SvelteKit's `invalidate`, or
|
|
26
|
+
* a Redis set of keys per tag. Tag your reads with `tagFor`.
|
|
27
|
+
*
|
|
28
|
+
* ```ts
|
|
29
|
+
* betterSupabase.cache(tagCache((tags) => purgeCdn(tags), 'cdn'))
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
function tagCache(invalidate, name = "tags") {
|
|
33
|
+
return {
|
|
34
|
+
name,
|
|
35
|
+
invalidate: (target) => invalidate(cacheTagsOf(target))
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//#endregion
|
|
39
|
+
export { tagCache as n, tagFor as r, cacheTagsOf as t };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { d as CacheTarget, u as CacheAdapter } from "./define-CJJkkr1-.js";
|
|
2
|
+
//#region src/core/tags.d.ts
|
|
3
|
+
interface TagOptions {
|
|
4
|
+
/** The tenant the read is scoped to; `"*"` is every tenant's reads. */
|
|
5
|
+
readonly tenant?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* `bs:<table>`, `bs:<table>:<id>`, or `bs:<table>@<tenant>` for a read
|
|
9
|
+
* scoped to one tenant. Mutations invalidate the table tag, the tag of their
|
|
10
|
+
* tenant (`bs:<table>@*` without one) and the tags of the changed rows.
|
|
11
|
+
*/
|
|
12
|
+
declare function tagFor(table: string, id?: string | number, options?: TagOptions): string;
|
|
13
|
+
/**
|
|
14
|
+
* The tags a mutation invalidates: `bs:<table>` for every table in the
|
|
15
|
+
* target, the tenant's `bs:<table>@<tenant>` (every tenant's `bs:<table>@*`
|
|
16
|
+
* when the mutation has no tenant) and `bs:<table>:<id>` per changed row.
|
|
17
|
+
*/
|
|
18
|
+
declare function cacheTagsOf(target: CacheTarget): string[];
|
|
19
|
+
/**
|
|
20
|
+
* A `CacheAdapter` for any tag-based cache: it hands `invalidate` the tags
|
|
21
|
+
* from `cacheTagsOf`, e.g. a CDN purge by tag, SvelteKit's `invalidate`, or
|
|
22
|
+
* a Redis set of keys per tag. Tag your reads with `tagFor`.
|
|
23
|
+
*
|
|
24
|
+
* ```ts
|
|
25
|
+
* betterSupabase.cache(tagCache((tags) => purgeCdn(tags), 'cdn'))
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
declare function tagCache(invalidate: (tags: readonly string[]) => void | Promise<void>, name?: string): CacheAdapter;
|
|
29
|
+
//#endregion
|
|
30
|
+
export { tagFor as i, cacheTagsOf as n, tagCache as r, TagOptions as t };
|