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,71 @@
|
|
|
1
|
+
import { L as TableKey, a as AnyModels, i as AnyFunctions } from "../types-6BdhkmZe.js";
|
|
2
|
+
import { b as Db, t as BetterSupabase } from "../define-CJJkkr1-.js";
|
|
3
|
+
import { t as BetterQueryMeta } from "../invalidate-BBqhpxyB.js";
|
|
4
|
+
import { QueryClient, SkipToken } from "@tanstack/query-core";
|
|
5
|
+
//#region src/tanstack-db/collection.d.ts
|
|
6
|
+
/** The query a collection loads: `queries.<table>.findMany(args)` from `better-supabase/query`. */
|
|
7
|
+
interface CollectionQuery<Row> {
|
|
8
|
+
readonly queryKey: readonly unknown[];
|
|
9
|
+
readonly queryFn: ((context: {
|
|
10
|
+
readonly signal: AbortSignal;
|
|
11
|
+
}) => Promise<Row[]>) | SkipToken;
|
|
12
|
+
readonly meta?: BetterQueryMeta;
|
|
13
|
+
}
|
|
14
|
+
/** The fields of a TanStack DB pending mutation the handlers read. */
|
|
15
|
+
interface PendingMutationLike<Row> {
|
|
16
|
+
readonly original: unknown;
|
|
17
|
+
readonly modified: Row;
|
|
18
|
+
readonly changes: Partial<Row>;
|
|
19
|
+
}
|
|
20
|
+
/** The handler argument TanStack DB passes to `onInsert`, `onUpdate` and `onDelete`. */
|
|
21
|
+
interface MutationParamsLike<Row> {
|
|
22
|
+
readonly transaction: {
|
|
23
|
+
readonly mutations: readonly PendingMutationLike<Row>[];
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
type CollectionMutationHandler<Row> = (params: MutationParamsLike<Row>) => Promise<void>;
|
|
27
|
+
interface CollectionOptions<Row> {
|
|
28
|
+
readonly query: CollectionQuery<Row>;
|
|
29
|
+
readonly queryClient: QueryClient;
|
|
30
|
+
/** The collection id. Defaults to the table key. */
|
|
31
|
+
readonly id?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Options for `queryCollectionOptions()` from `@tanstack/query-db-collection`.
|
|
35
|
+
* Typed by shape, so better-supabase doesn't depend on TanStack DB.
|
|
36
|
+
*/
|
|
37
|
+
interface CollectionConfig<Row> {
|
|
38
|
+
readonly id: string;
|
|
39
|
+
readonly queryKey: readonly unknown[];
|
|
40
|
+
readonly queryFn: (context: {
|
|
41
|
+
readonly signal: AbortSignal;
|
|
42
|
+
}) => Promise<Row[]>;
|
|
43
|
+
readonly meta?: BetterQueryMeta;
|
|
44
|
+
readonly queryClient: QueryClient;
|
|
45
|
+
readonly getKey: (row: Row) => string | number;
|
|
46
|
+
readonly onInsert: CollectionMutationHandler<Row>;
|
|
47
|
+
readonly onUpdate: CollectionMutationHandler<Row>;
|
|
48
|
+
readonly onDelete: CollectionMutationHandler<Row>;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* A TanStack DB query collection for one table: it loads the rows with
|
|
52
|
+
* `query`, keys them by the table's primary key, and sends inserts, updates
|
|
53
|
+
* and deletes through the table's repository, so RLS, hooks, events and
|
|
54
|
+
* plugins apply. After a write the collection refetches its query; with
|
|
55
|
+
* `invalidateOnMutation(betterSupabase, queryClient)`, every other query
|
|
56
|
+
* that read the table refetches too.
|
|
57
|
+
*
|
|
58
|
+
* ```ts
|
|
59
|
+
* const customers = createCollection(
|
|
60
|
+
* queryCollectionOptions(
|
|
61
|
+
* collectionOptions(betterSupabase, db, "customers", {
|
|
62
|
+
* query: queries.customers.findMany({ where: { status: "active" } }),
|
|
63
|
+
* queryClient,
|
|
64
|
+
* }),
|
|
65
|
+
* ),
|
|
66
|
+
* );
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export declare function collectionOptions<M extends AnyModels, D, F extends AnyFunctions, E, T extends TableKey<M>, Row extends object>(betterSupabase: BetterSupabase<M, D, F, E>, db: Db<M, F, E, unknown> | (() => Db<M, F, E, unknown>), table: T, options: CollectionOptions<Row>): CollectionConfig<Row>;
|
|
70
|
+
//#endregion
|
|
71
|
+
export type { CollectionConfig, CollectionMutationHandler, CollectionOptions, CollectionQuery, MutationParamsLike, PendingMutationLike };
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { t as DbException } from "../db-exception-CnWcYPxL.js";
|
|
2
|
+
//#region src/tanstack-db/collection.ts
|
|
3
|
+
function field(row, name) {
|
|
4
|
+
if (typeof row !== "object" || row === null || !(name in row)) return void 0;
|
|
5
|
+
return Object.getOwnPropertyDescriptor(row, name)?.value;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* A TanStack DB query collection for one table: it loads the rows with
|
|
9
|
+
* `query`, keys them by the table's primary key, and sends inserts, updates
|
|
10
|
+
* and deletes through the table's repository, so RLS, hooks, events and
|
|
11
|
+
* plugins apply. After a write the collection refetches its query; with
|
|
12
|
+
* `invalidateOnMutation(betterSupabase, queryClient)`, every other query
|
|
13
|
+
* that read the table refetches too.
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* const customers = createCollection(
|
|
17
|
+
* queryCollectionOptions(
|
|
18
|
+
* collectionOptions(betterSupabase, db, "customers", {
|
|
19
|
+
* query: queries.customers.findMany({ where: { status: "active" } }),
|
|
20
|
+
* queryClient,
|
|
21
|
+
* }),
|
|
22
|
+
* ),
|
|
23
|
+
* );
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
function collectionOptions(betterSupabase, db, table, options) {
|
|
27
|
+
const { query, queryClient } = options;
|
|
28
|
+
const queryFn = query.queryFn;
|
|
29
|
+
if (typeof queryFn !== "function") throw new TypeError(`better-supabase: the "${table}" collection needs a query that runs, not skipToken`);
|
|
30
|
+
const primaryKey = betterSupabase.meta.tables[table]?.primaryKey ?? [];
|
|
31
|
+
const [single] = primaryKey;
|
|
32
|
+
if (single === void 0) throw new TypeError(`better-supabase: the "${table}" collection needs a table with a primary key`);
|
|
33
|
+
const composite = primaryKey.length > 1;
|
|
34
|
+
const idOf = (row) => composite ? Object.fromEntries(primaryKey.map((name) => [name, field(row, name)])) : field(row, single);
|
|
35
|
+
const write = (method) => {
|
|
36
|
+
const fn = (typeof db === "function" ? db() : db)[table]?.[method];
|
|
37
|
+
if (!fn) throw new TypeError(`better-supabase: ${table}.${method} is not available`);
|
|
38
|
+
return fn;
|
|
39
|
+
};
|
|
40
|
+
const orThrow = async (result) => {
|
|
41
|
+
const settled = await result;
|
|
42
|
+
if (!settled.ok) throw new DbException(settled.error);
|
|
43
|
+
};
|
|
44
|
+
return {
|
|
45
|
+
id: options.id ?? table,
|
|
46
|
+
queryKey: query.queryKey,
|
|
47
|
+
queryFn,
|
|
48
|
+
...query.meta ? { meta: query.meta } : {},
|
|
49
|
+
queryClient,
|
|
50
|
+
getKey: (row) => {
|
|
51
|
+
if (!composite) {
|
|
52
|
+
const id = field(row, single);
|
|
53
|
+
return typeof id === "number" ? id : String(id);
|
|
54
|
+
}
|
|
55
|
+
return JSON.stringify(primaryKey.map((name) => field(row, name)));
|
|
56
|
+
},
|
|
57
|
+
onInsert: async ({ transaction }) => {
|
|
58
|
+
const create = write("create");
|
|
59
|
+
for (const mutation of transaction.mutations) await orThrow(create(mutation.modified, { returning: false }));
|
|
60
|
+
},
|
|
61
|
+
onUpdate: async ({ transaction }) => {
|
|
62
|
+
const update = write("update");
|
|
63
|
+
for (const mutation of transaction.mutations) await orThrow(update(idOf(mutation.original), mutation.changes, { returning: false }));
|
|
64
|
+
},
|
|
65
|
+
onDelete: async ({ transaction }) => {
|
|
66
|
+
const remove = write("delete");
|
|
67
|
+
for (const mutation of transaction.mutations) await orThrow(remove(idOf(mutation.original)));
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
//#endregion
|
|
72
|
+
export { collectionOptions };
|
|
@@ -0,0 +1,75 @@
|
|
|
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 { AnyEntry, Contributions } from "@supabase/middleware";
|
|
9
|
+
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
10
|
+
//#region src/bridges/tanstack-start.d.ts
|
|
11
|
+
/** The arguments TanStack Start passes to a `.server()` callback. */
|
|
12
|
+
interface TanStackStartServerArgs<Context, Result> {
|
|
13
|
+
readonly request: Request;
|
|
14
|
+
readonly next: (options: {
|
|
15
|
+
readonly context: Context;
|
|
16
|
+
}) => Promise<Result>;
|
|
17
|
+
}
|
|
18
|
+
interface ToTanStackStartOptions {
|
|
19
|
+
/** The host's env object for `getEnv`, read per request. */
|
|
20
|
+
readonly env?: (request: Request) => unknown;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Runs an entry array as the `.server()` callback of a TanStack Start
|
|
24
|
+
* middleware. Every contributed key lands on `context`. On request
|
|
25
|
+
* middleware the response passes back through the entries, so refreshed
|
|
26
|
+
* session cookies reach it; on server function middleware the context still
|
|
27
|
+
* flows, and a short circuit (a 401 from the guard) is thrown as a
|
|
28
|
+
* `Response`, which TanStack Start sends.
|
|
29
|
+
*
|
|
30
|
+
* ```ts title="src/start.ts"
|
|
31
|
+
* const supabase = createMiddleware().server(toTanStackStart([withBetterSupabase(server)]))
|
|
32
|
+
* export const startInstance = createStart(() => ({ requestMiddleware: [supabase] }))
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare function toTanStackStart<const Entries extends readonly AnyEntry[]>(entries: Entries & Validated<Entries>, options?: ToTanStackStartOptions): <Result extends object>(args: TanStackStartServerArgs<Contributions<Entries>, Result>) => Promise<Result>;
|
|
36
|
+
//#endregion
|
|
37
|
+
//#region src/tanstack-start/create.d.ts
|
|
38
|
+
interface TanStackStartOptions extends FrameworkOptions {
|
|
39
|
+
/** The host's env object for `getEnv`, read per request. */
|
|
40
|
+
readonly platformEnv?: (request: Request) => unknown;
|
|
41
|
+
}
|
|
42
|
+
/** What a server function handler receives. */
|
|
43
|
+
interface TanStackStartHandlerArgs<Data, Context> {
|
|
44
|
+
readonly data: Data;
|
|
45
|
+
readonly context: Context;
|
|
46
|
+
}
|
|
47
|
+
interface BetterTanStackStart<M extends AnyModels, F extends AnyFunctions, E, C = unknown, P = unknown> extends BetterServer<M, F, E, C, P> {
|
|
48
|
+
/**
|
|
49
|
+
* The `.server()` callback of a request middleware: verifies the caller,
|
|
50
|
+
* refreshes the session cookie on navigations and form posts, and puts
|
|
51
|
+
* `db`, `bs`, `auth`, `tenant` and the serializable `session` on `context`.
|
|
52
|
+
*
|
|
53
|
+
* ```ts title="src/start.ts"
|
|
54
|
+
* const supabase = createMiddleware().server(bs.middleware)
|
|
55
|
+
* export const startInstance = createStart(() => ({ requestMiddleware: [supabase] }))
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
readonly middleware: <Result extends object>(args: TanStackStartServerArgs<FrameworkLocals<M, F, E, C, P>, Result>) => Promise<Result>;
|
|
59
|
+
/**
|
|
60
|
+
* The caller in a server function or route handler, or a thrown
|
|
61
|
+
* refusal: a redirect to `signIn` or `mfa` when configured, else a
|
|
62
|
+
* Problem Details response, which TanStack Start sends.
|
|
63
|
+
*/
|
|
64
|
+
require<R extends boolean = false>(context: FrameworkLocals<M, F, E, C, P>, options?: BlockRequireOptions<C, P, R>): Promise<FrameworkLocals<M, F, E, C, P> & AuthorizedContext<C, P, R>>;
|
|
65
|
+
/**
|
|
66
|
+
* A `createServerFn().handler()` returning an `ActionResult`, for
|
|
67
|
+
* `useAction`. Pass the same schema to `.inputValidator()` to type `data`
|
|
68
|
+
* on the client; `input` validates it again on the server.
|
|
69
|
+
*/
|
|
70
|
+
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>) => T): <Data>(args: TanStackStartHandlerArgs<Data, FrameworkLocals<M, F, E, C, P>>) => Promise<ActionResult<Unwrapped<Awaited<T>>>>;
|
|
71
|
+
}
|
|
72
|
+
/** TanStack Start integration: request middleware, guards and server function actions. */
|
|
73
|
+
export declare function createTanStackStart<M extends AnyModels, D, F extends AnyFunctions, E, C = unknown, P = unknown>(betterSupabase: BetterSupabase<M, D, F, E, C, P>, options?: TanStackStartOptions): BetterTanStackStart<M, F, E, C, P>;
|
|
74
|
+
//#endregion
|
|
75
|
+
export type { ActionResult, AuthorizeOptions, AuthorizedContext, BetterTanStackStart, BlockActionOptions, BlockRequireOptions, FrameworkLocals, FrameworkOptions, RefusalRedirects, TanStackStartHandlerArgs, TanStackStartOptions, TanStackStartServerArgs, ToTanStackStartOptions };
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { c as extendServer, n as flushEvents, s as createServer } from "../adapter-Bc1o3zyy.js";
|
|
2
|
+
import { t as defaultExpose } from "../respond-BUgsXNgk.js";
|
|
3
|
+
import { i as requireCaller, o as runAction } from "../kit-Fm-Fv7q5.js";
|
|
4
|
+
import { n as bufferInPlace, t as around } from "../shared-CBxosKK3.js";
|
|
5
|
+
import { i as localsOf, r as frameworkEntry } from "../framework-CONDyPYx.js";
|
|
6
|
+
import { r as refusalResponse } from "../refusal-CeJWxmkH.js";
|
|
7
|
+
//#region src/bridges/tanstack-start.ts
|
|
8
|
+
/** The `response` of a request middleware's `next()` result; server function results have none. */
|
|
9
|
+
function responseOf(result) {
|
|
10
|
+
return "response" in result && result.response instanceof Response ? result.response : void 0;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Runs an entry array as the `.server()` callback of a TanStack Start
|
|
14
|
+
* middleware. Every contributed key lands on `context`. On request
|
|
15
|
+
* middleware the response passes back through the entries, so refreshed
|
|
16
|
+
* session cookies reach it; on server function middleware the context still
|
|
17
|
+
* flows, and a short circuit (a 401 from the guard) is thrown as a
|
|
18
|
+
* `Response`, which TanStack Start sends.
|
|
19
|
+
*
|
|
20
|
+
* ```ts title="src/start.ts"
|
|
21
|
+
* const supabase = createMiddleware().server(toTanStackStart([withBetterSupabase(server)]))
|
|
22
|
+
* export const startInstance = createStart(() => ({ requestMiddleware: [supabase] }))
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
function toTanStackStart(entries, options = {}) {
|
|
26
|
+
return tanStackStartServer(around(entries), options.env, (contributions) => contributions);
|
|
27
|
+
}
|
|
28
|
+
/** The `.server()` callback over a folded pipeline, with the context `toContext` builds. */
|
|
29
|
+
function tanStackStartServer(run, env, toContext) {
|
|
30
|
+
return async ({ request, next }) => {
|
|
31
|
+
bufferInPlace(request);
|
|
32
|
+
const downstream = {};
|
|
33
|
+
const response = await run(request, env?.(request), async (contributions) => {
|
|
34
|
+
const result = await next({ context: toContext(contributions, request) });
|
|
35
|
+
downstream.result = result;
|
|
36
|
+
return responseOf(result) ?? new Response(null, { status: 204 });
|
|
37
|
+
});
|
|
38
|
+
const { result } = downstream;
|
|
39
|
+
if (result === void 0) throw response;
|
|
40
|
+
if (responseOf(result) === void 0) return result;
|
|
41
|
+
return {
|
|
42
|
+
...result,
|
|
43
|
+
response
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
//#region src/tanstack-start/create.ts
|
|
49
|
+
/** TanStack Start integration: request middleware, guards and server function actions. */
|
|
50
|
+
function createTanStackStart(betterSupabase, options = {}) {
|
|
51
|
+
const server = createServer(betterSupabase, options);
|
|
52
|
+
const expose = options.exposeErrors ?? defaultExpose();
|
|
53
|
+
const requests = /* @__PURE__ */ new WeakMap();
|
|
54
|
+
const served = tanStackStartServer(around([frameworkEntry(server, options, expose)]), options.platformEnv, (contributions, request) => {
|
|
55
|
+
const locals = localsOf(contributions);
|
|
56
|
+
requests.set(locals, request);
|
|
57
|
+
return locals;
|
|
58
|
+
});
|
|
59
|
+
const scopeOf = (context) => {
|
|
60
|
+
if (typeof context !== "object" || !("bs" in context)) throw new TypeError("better-supabase: no context; add bs.middleware to the request middleware in src/start.ts");
|
|
61
|
+
return context;
|
|
62
|
+
};
|
|
63
|
+
return extendServer(server, {
|
|
64
|
+
async middleware(args) {
|
|
65
|
+
try {
|
|
66
|
+
return await served(args);
|
|
67
|
+
} finally {
|
|
68
|
+
flushEvents(server, options.waitUntil);
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
require: async (context, requireOptions = {}) => {
|
|
72
|
+
const scope = scopeOf(context);
|
|
73
|
+
const caller = await requireCaller(scope.bs.auth, requireOptions, scope.tenant);
|
|
74
|
+
if ("kind" in caller) {
|
|
75
|
+
const request = requests.get(scope) ?? new Request("http://localhost/");
|
|
76
|
+
throw refusalResponse(caller, request, options, expose);
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
...scope,
|
|
80
|
+
...caller
|
|
81
|
+
};
|
|
82
|
+
},
|
|
83
|
+
action(actionOptions, fn) {
|
|
84
|
+
return async ({ data, context }) => {
|
|
85
|
+
const scope = scopeOf(context);
|
|
86
|
+
return await runAction(scope.bs.auth, actionOptions, data, scope.tenant, (parsed, caller) => fn(parsed, {
|
|
87
|
+
...scope,
|
|
88
|
+
...caller
|
|
89
|
+
}));
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
//#endregion
|
|
95
|
+
export { createTanStackStart, toTanStackStart };
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { a as ok, r as err, s as toDbError, t as AsyncResult } from "./result-DzUbqgdW.js";
|
|
2
|
+
//#region src/streams/tee.ts
|
|
3
|
+
/**
|
|
4
|
+
* Copies `source` into `store` under `id` while passing it through. Chunks
|
|
5
|
+
* are written in batches, each at its own index, so a reader that counted
|
|
6
|
+
* `n` chunks of the live stream resumes with `read(id, n)`.
|
|
7
|
+
*/
|
|
8
|
+
function teeToStore(store, id, source, options = {}) {
|
|
9
|
+
const [live, copy] = source.tee();
|
|
10
|
+
return {
|
|
11
|
+
stream: live,
|
|
12
|
+
persisted: AsyncResult.from(() => persist(store, id, copy, options))
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Stores `source` under `id` without a live copy, for a stream the caller
|
|
17
|
+
* already sends elsewhere (the second branch of its own `tee()`). Settles
|
|
18
|
+
* like `teeToStore`'s `persisted`.
|
|
19
|
+
*/
|
|
20
|
+
function writeToStore(store, id, source, options = {}) {
|
|
21
|
+
return AsyncResult.from(() => persist(store, id, source, options));
|
|
22
|
+
}
|
|
23
|
+
async function persist(store, id, copy, options) {
|
|
24
|
+
const { flushMs = 100, flushBytes = 4096, onCancel } = options;
|
|
25
|
+
const opened = await store.open(id, {
|
|
26
|
+
...options.owner === void 0 ? {} : { owner: options.owner },
|
|
27
|
+
...options.tenant === void 0 ? {} : { tenant: options.tenant },
|
|
28
|
+
...options.kind === void 0 ? {} : { kind: options.kind },
|
|
29
|
+
...options.ttl === void 0 ? {} : { ttl: options.ttl }
|
|
30
|
+
});
|
|
31
|
+
if (!opened.ok) {
|
|
32
|
+
copy.cancel().catch(() => void 0);
|
|
33
|
+
return opened;
|
|
34
|
+
}
|
|
35
|
+
let next = 0;
|
|
36
|
+
let buffer = [];
|
|
37
|
+
let bytes = 0;
|
|
38
|
+
let failure;
|
|
39
|
+
let cancelled = false;
|
|
40
|
+
let timer;
|
|
41
|
+
let writing = Promise.resolve();
|
|
42
|
+
const flush = () => {
|
|
43
|
+
if (timer !== void 0) clearTimeout(timer);
|
|
44
|
+
timer = void 0;
|
|
45
|
+
if (buffer.length === 0) return writing;
|
|
46
|
+
const batch = buffer;
|
|
47
|
+
const from = next;
|
|
48
|
+
buffer = [];
|
|
49
|
+
bytes = 0;
|
|
50
|
+
next += batch.length;
|
|
51
|
+
writing = writing.then(async () => {
|
|
52
|
+
if (failure) return;
|
|
53
|
+
const appended = await store.append(id, from, batch);
|
|
54
|
+
if (!appended.ok) {
|
|
55
|
+
failure = appended.error;
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (appended.data.cancelled && !cancelled) {
|
|
59
|
+
cancelled = true;
|
|
60
|
+
onCancel?.();
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
return writing;
|
|
64
|
+
};
|
|
65
|
+
const reader = copy.getReader();
|
|
66
|
+
let sourceError;
|
|
67
|
+
try {
|
|
68
|
+
for (;;) {
|
|
69
|
+
const { done, value } = await reader.read();
|
|
70
|
+
if (done) break;
|
|
71
|
+
buffer.push(value);
|
|
72
|
+
bytes += value.length;
|
|
73
|
+
if (bytes >= flushBytes) flush();
|
|
74
|
+
else timer ??= setTimeout(() => void flush(), flushMs);
|
|
75
|
+
if (failure) break;
|
|
76
|
+
}
|
|
77
|
+
} catch (cause) {
|
|
78
|
+
sourceError = cause;
|
|
79
|
+
} finally {
|
|
80
|
+
reader.releaseLock();
|
|
81
|
+
}
|
|
82
|
+
await flush();
|
|
83
|
+
if (failure) {
|
|
84
|
+
copy.cancel().catch(() => void 0);
|
|
85
|
+
return err(failure);
|
|
86
|
+
}
|
|
87
|
+
const closed = await store.close(id);
|
|
88
|
+
if (!closed.ok) return closed;
|
|
89
|
+
return sourceError === void 0 ? ok(next) : err(toDbError(sourceError));
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* The rest of stream `id` from `fromIdx`, or `undefined` when there is
|
|
93
|
+
* nothing to resume: no such stream, or a closed one the client has read to
|
|
94
|
+
* the end. A route answers `undefined` with 204.
|
|
95
|
+
*/
|
|
96
|
+
function resumeFromStore(store, id, options = {}) {
|
|
97
|
+
const from = options.fromIdx ?? 0;
|
|
98
|
+
return store.status(id).map((status) => status === void 0 || status.closed && from >= status.next ? void 0 : store.read(id, from, options.signal === void 0 ? {} : { signal: options.signal }));
|
|
99
|
+
}
|
|
100
|
+
//#endregion
|
|
101
|
+
export { teeToStore as n, writeToStore as r, resumeFromStore as t };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { t as DbException } from "./db-exception-CnWcYPxL.js";
|
|
2
|
+
import { n as dbError } from "./errors-B11Duf73.js";
|
|
2
3
|
//#region src/core/template.ts
|
|
3
|
-
const PLACEHOLDER = /\{([A-Za-z_][A-Za-z0-9_]*)\}/g;
|
|
4
|
+
const PLACEHOLDER = /\{(\.\.\.)?([A-Za-z_][A-Za-z0-9_]*)\}/g;
|
|
4
5
|
function parseSegment(segment) {
|
|
5
6
|
const parts = [];
|
|
6
7
|
let last = 0;
|
|
@@ -10,8 +11,8 @@ function parseSegment(segment) {
|
|
|
10
11
|
text: segment.slice(last, match.index)
|
|
11
12
|
});
|
|
12
13
|
parts.push({
|
|
13
|
-
kind: "param",
|
|
14
|
-
name: match[
|
|
14
|
+
kind: match[1] ? "rest" : "param",
|
|
15
|
+
name: match[2]
|
|
15
16
|
});
|
|
16
17
|
last = match.index + match[0].length;
|
|
17
18
|
}
|
|
@@ -22,14 +23,20 @@ function parseSegment(segment) {
|
|
|
22
23
|
return parts;
|
|
23
24
|
}
|
|
24
25
|
const escapeRegex = (text) => text.replaceAll(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
25
|
-
function parseTemplate(source, separator, validate) {
|
|
26
|
+
function parseTemplate(source, separator, validate, options = {}) {
|
|
26
27
|
const segments = source.split(separator).map(parseSegment);
|
|
27
28
|
const params = [];
|
|
28
|
-
|
|
29
|
+
let rest;
|
|
30
|
+
for (const [position, segment] of segments.entries()) {
|
|
29
31
|
if (segment.length === 0) throw new TypeError(`Template "${source}" has an empty segment`);
|
|
30
|
-
for (let index = 1; index < segment.length; index++) if (segment[index].kind
|
|
32
|
+
for (let index = 1; index < segment.length; index++) if (segment[index].kind !== "literal" && segment[index - 1].kind !== "literal") throw new TypeError(`Template "${source}" has adjacent placeholders`);
|
|
31
33
|
for (const part of segment) {
|
|
32
|
-
if (part.kind
|
|
34
|
+
if (part.kind === "literal") continue;
|
|
35
|
+
if (part.kind === "rest") {
|
|
36
|
+
if (!options.rest) throw new TypeError(`Template "${source}" uses {...${part.name}}, which is not supported here`);
|
|
37
|
+
if (segment.length !== 1 || position !== segments.length - 1) throw new TypeError(`Template "${source}": {...${part.name}} must be the whole last segment`);
|
|
38
|
+
rest = part.name;
|
|
39
|
+
}
|
|
33
40
|
if (params.includes(part.name)) throw new TypeError(`Template "${source}" repeats {${part.name}}`);
|
|
34
41
|
params.push(part.name);
|
|
35
42
|
}
|
|
@@ -37,12 +44,25 @@ function parseTemplate(source, separator, validate) {
|
|
|
37
44
|
if (/[{}]/.test(segments.flat().map((part) => part.kind === "literal" ? part.text : "").join(""))) throw new TypeError(`Template "${source}" has an unbalanced brace`);
|
|
38
45
|
const sep = escapeRegex(separator);
|
|
39
46
|
const valueClass = `[^${separator === "/" ? "/" : sep}]+`;
|
|
40
|
-
const
|
|
47
|
+
const restClass = `${valueClass}(?:${sep}${valueClass})*`;
|
|
48
|
+
const regexFor = (withNames) => segments.map((segment) => segment.map((part) => {
|
|
49
|
+
if (part.kind === "literal") return escapeRegex(part.text);
|
|
50
|
+
const pattern = part.kind === "rest" ? restClass : valueClass;
|
|
51
|
+
return withNames ? `(?<${part.name}>${pattern})` : pattern;
|
|
52
|
+
}).join("")).join(sep);
|
|
41
53
|
const matcher = new RegExp(`^${regexFor(true)}$`);
|
|
54
|
+
const valueProblem = (name, value) => value === "" ? "is empty" : value.includes(separator) ? `contains "${separator}"` : validate(name, value);
|
|
55
|
+
const restProblem = (name, value) => {
|
|
56
|
+
if (value === "") return "is empty";
|
|
57
|
+
for (const part of value.split(separator)) {
|
|
58
|
+
const problem = part === "" ? "has an empty segment" : validate(name, part);
|
|
59
|
+
if (problem) return problem;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
42
62
|
const render = (name, raw) => {
|
|
43
63
|
if (raw === void 0 || typeof raw !== "string" && typeof raw !== "number") throw new DbException(dbError("invalid_input", `Missing value for {${name}}`));
|
|
44
64
|
const value = String(raw);
|
|
45
|
-
const problem =
|
|
65
|
+
const problem = rest === name ? restProblem(name, value) : valueProblem(name, value);
|
|
46
66
|
if (problem) throw new DbException(dbError("invalid_input", `Value for {${name}} ${problem}`));
|
|
47
67
|
return value;
|
|
48
68
|
};
|
|
@@ -59,7 +79,7 @@ function parseTemplate(source, separator, validate) {
|
|
|
59
79
|
const out = {};
|
|
60
80
|
for (const name of params) {
|
|
61
81
|
const part = found.groups[name];
|
|
62
|
-
if (validate(name, part)) return null;
|
|
82
|
+
if (rest === name ? restProblem(name, part) : validate(name, part)) return null;
|
|
63
83
|
out[name] = part;
|
|
64
84
|
}
|
|
65
85
|
return out;
|
|
@@ -67,7 +87,7 @@ function parseTemplate(source, separator, validate) {
|
|
|
67
87
|
prefix(values, maxSegments = segments.length) {
|
|
68
88
|
const out = [];
|
|
69
89
|
for (const segment of segments.slice(0, maxSegments)) {
|
|
70
|
-
if (segment.some((part) => part.kind
|
|
90
|
+
if (segment.some((part) => part.kind !== "literal" && values[part.name] === void 0)) break;
|
|
71
91
|
out.push(renderSegment(segment, values));
|
|
72
92
|
}
|
|
73
93
|
return out.join(separator);
|
|
@@ -76,7 +96,8 @@ function parseTemplate(source, separator, validate) {
|
|
|
76
96
|
const index = segments.findIndex((segment) => segment.length === 1 && segment[0].kind === "param" && segment[0].name === name);
|
|
77
97
|
return index === -1 ? void 0 : index + 1;
|
|
78
98
|
},
|
|
79
|
-
sqlPattern: `^${regexFor(false)}
|
|
99
|
+
sqlPattern: `^${regexFor(false)}$`,
|
|
100
|
+
rest
|
|
80
101
|
};
|
|
81
102
|
}
|
|
82
103
|
function sqlString(value) {
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
//#region src/core/template.d.ts
|
|
2
|
+
/** Placeholder names in a `{name}` template; a rest placeholder `{...name}` is `name`. */
|
|
3
|
+
type TemplateParams<P extends string> = P extends `${string}{${infer K}}${infer R}` ? (K extends `...${infer N}` ? N : K) | TemplateParams<R> : never;
|
|
4
|
+
type TemplateValues<P extends string> = { readonly [K in TemplateParams<P>]: string | number; };
|
|
5
|
+
//#endregion
|
|
6
|
+
export { TemplateValues as n, TemplateParams as t };
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
const TEMPORAL_MISSING = `Temporal is not available in this runtime. Pass it to defineSupabase(schema, { temporal }) (import { Temporal } from "temporal-polyfill"), or import "temporal-polyfill/global" once at startup.`;
|
|
2
|
+
let provided;
|
|
3
|
+
/**
|
|
4
|
+
* Uses `namespace` wherever better-supabase needs Temporal, without touching
|
|
5
|
+
* `globalThis`. `defineSupabase(schema, { temporal })` calls it; call it
|
|
6
|
+
* yourself when you use a standalone helper (webhook verification, jobs)
|
|
7
|
+
* without a definition. `undefined` goes back to the global.
|
|
8
|
+
*/
|
|
9
|
+
function provideTemporal(namespace) {
|
|
10
|
+
provided = namespace;
|
|
11
|
+
}
|
|
12
|
+
/** The namespace `provideTemporal` set, without the global fallback. */
|
|
13
|
+
function providedTemporal() {
|
|
14
|
+
return provided;
|
|
15
|
+
}
|
|
16
|
+
/** The provided `Temporal`, else the runtime's, or `undefined` when neither exists. */
|
|
17
|
+
function optionalTemporal() {
|
|
18
|
+
if (provided !== void 0) return provided;
|
|
19
|
+
return globalThis.Temporal;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The current instant, the default `now` everywhere. Without Temporal it
|
|
23
|
+
* throws a `TypeError` that names the injection option and the polyfill.
|
|
24
|
+
*/
|
|
25
|
+
function nowInstant() {
|
|
26
|
+
const namespace = optionalTemporal();
|
|
27
|
+
if (namespace === void 0) throw new TypeError(TEMPORAL_MISSING);
|
|
28
|
+
return namespace.Now.instant();
|
|
29
|
+
}
|
|
30
|
+
const ISO_TAGS = /* @__PURE__ */ new Set([
|
|
31
|
+
"Temporal.Instant",
|
|
32
|
+
"Temporal.PlainDateTime",
|
|
33
|
+
"Temporal.PlainDate",
|
|
34
|
+
"Temporal.PlainTime"
|
|
35
|
+
]);
|
|
36
|
+
function tagOf(value) {
|
|
37
|
+
if (typeof value !== "object" || value === null) return void 0;
|
|
38
|
+
if (!(Symbol.toStringTag in value)) return void 0;
|
|
39
|
+
return value[Symbol.toStringTag];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The text Postgres reads back for a Temporal value: ISO 8601, with a
|
|
43
|
+
* `ZonedDateTime` sent as its instant because Postgres rejects the
|
|
44
|
+
* `[Region/City]` annotation. `undefined` for anything else.
|
|
45
|
+
*
|
|
46
|
+
* Values are recognized by `Symbol.toStringTag`, not `instanceof`, so values
|
|
47
|
+
* from another realm or a second copy of the polyfill still encode.
|
|
48
|
+
*/
|
|
49
|
+
function temporalText(value) {
|
|
50
|
+
const tag = tagOf(value);
|
|
51
|
+
if (tag === void 0) return void 0;
|
|
52
|
+
if (ISO_TAGS.has(tag)) return String(value);
|
|
53
|
+
return tag === "Temporal.ZonedDateTime" && typeof value === "object" && value !== null && isZoned(value) ? String(value.toInstant()) : void 0;
|
|
54
|
+
}
|
|
55
|
+
function isZoned(value) {
|
|
56
|
+
return "toInstant" in value && typeof value.toInstant === "function";
|
|
57
|
+
}
|
|
58
|
+
/** A `Temporal.Instant` from any copy of Temporal, checked by `Symbol.toStringTag`. */
|
|
59
|
+
function isInstant(value) {
|
|
60
|
+
return tagOf(value) === "Temporal.Instant";
|
|
61
|
+
}
|
|
62
|
+
/** A `Temporal.PlainDateTime` from any copy of Temporal. */
|
|
63
|
+
function isPlainDateTime(value) {
|
|
64
|
+
return tagOf(value) === "Temporal.PlainDateTime";
|
|
65
|
+
}
|
|
66
|
+
/** A `Temporal.PlainDate` from any copy of Temporal. */
|
|
67
|
+
function isPlainDate(value) {
|
|
68
|
+
return tagOf(value) === "Temporal.PlainDate";
|
|
69
|
+
}
|
|
70
|
+
/** A `Temporal.PlainTime` from any copy of Temporal. */
|
|
71
|
+
function isPlainTime(value) {
|
|
72
|
+
return tagOf(value) === "Temporal.PlainTime";
|
|
73
|
+
}
|
|
74
|
+
/** A `Temporal.ZonedDateTime` from any copy of Temporal. */
|
|
75
|
+
function isZonedDateTime(value) {
|
|
76
|
+
return tagOf(value) === "Temporal.ZonedDateTime";
|
|
77
|
+
}
|
|
78
|
+
//#endregion
|
|
79
|
+
export { isPlainTime as a, optionalTemporal as c, temporalText as d, isPlainDateTime as i, provideTemporal as l, isInstant as n, isZonedDateTime as o, isPlainDate as r, nowInstant as s, TEMPORAL_MISSING as t, providedTemporal as u };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { t as DbException } from "./db-exception-CnWcYPxL.js";
|
|
2
|
+
import { n as dbError } from "./errors-B11Duf73.js";
|
|
3
|
+
import { c as optionalTemporal, t as TEMPORAL_MISSING } from "./temporal-BJGitm-h.js";
|
|
3
4
|
//#region src/core/temporal-required.ts
|
|
4
5
|
/** The error for a runtime without Temporal, naming the polyfill to load. */
|
|
5
6
|
function temporalMissing() {
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { a as tenantClaimPaths, n as claimAt } from "./claims-PqzCxaTD.js";
|
|
2
|
+
//#region src/auth/tenant.ts
|
|
3
|
+
/**
|
|
4
|
+
* The active tenant of a user session: the `claim` claim (`tenant_id` by
|
|
5
|
+
* default, as `config.claims.tenant`) at the top level of the token, then in
|
|
6
|
+
* `app_metadata`. `undefined` for every other session. Takes a server
|
|
7
|
+
* session or the client's `useAuth()` snapshot.
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* const organizationId = tenantOf(await bs.session());
|
|
11
|
+
* const organizationId = tenantOf(useAuth());
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
function tenantOf(session, claim) {
|
|
15
|
+
const claims = claimsOf(session);
|
|
16
|
+
if (claims === void 0) return void 0;
|
|
17
|
+
for (const path of tenantClaimPaths(claim)) {
|
|
18
|
+
const value = claimAt(claims, path);
|
|
19
|
+
if (value !== void 0) return value;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function claimsOf(session) {
|
|
23
|
+
if ("kind" in session) return session.kind === "user" ? session.claims : void 0;
|
|
24
|
+
return session.status === "signed-in" ? session.claims : void 0;
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { tenantOf as t };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { t as AuthSnapshot } from "./bind-Bu_ZNa3W.js";
|
|
2
|
+
import { t as AuthSession } from "./view-DbxLNu8L.js";
|
|
3
|
+
//#region src/auth/tenant.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* The active tenant of a user session: the `claim` claim (`tenant_id` by
|
|
6
|
+
* default, as `config.claims.tenant`) at the top level of the token, then in
|
|
7
|
+
* `app_metadata`. `undefined` for every other session. Takes a server
|
|
8
|
+
* session or the client's `useAuth()` snapshot.
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* const organizationId = tenantOf(await bs.session());
|
|
12
|
+
* const organizationId = tenantOf(useAuth());
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
declare function tenantOf<C, P>(session: AuthSession<C, P> | AuthSnapshot, claim?: string): string | undefined;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { tenantOf as t };
|