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
|
@@ -1,9 +1,120 @@
|
|
|
1
1
|
/// <reference lib="esnext.temporal" />
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { t as
|
|
2
|
+
import { b as DbError, t as AsyncResult } from "./result-D7y2fT87.js";
|
|
3
|
+
import { t as SqlClient } from "./executor-DbvExCFC.js";
|
|
4
|
+
import { m as RequestContext, t as Actor } from "./plugin-FGY8UhYm.js";
|
|
5
|
+
import { i as CursorPageOptions, r as BlockTemporalOptions } from "./block-helpers-CKtbFcRv.js";
|
|
6
|
+
import { t as BlockProblemOptions } from "./problem-DD8LZFjc.js";
|
|
5
7
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
6
|
-
//#region src/jobs/
|
|
8
|
+
//#region src/blocks/jobs/backends.d.ts
|
|
9
|
+
/** The body of a queued message, on pgmq and the table backend alike. */
|
|
10
|
+
interface QueueMessageBody {
|
|
11
|
+
readonly payload?: unknown;
|
|
12
|
+
readonly max_attempts?: number;
|
|
13
|
+
readonly last_error?: string;
|
|
14
|
+
}
|
|
15
|
+
/** A claimed message, as `better_supabase.claim_jobs` returns it. */
|
|
16
|
+
interface QueueMessageRow {
|
|
17
|
+
readonly id: string | number;
|
|
18
|
+
/** 1 on the first claim; a lease token for complete, fail and extend. */
|
|
19
|
+
readonly attempts: number;
|
|
20
|
+
readonly enqueued_at: Date | string;
|
|
21
|
+
readonly visible_until: Date | string;
|
|
22
|
+
readonly message: QueueMessageBody | null;
|
|
23
|
+
}
|
|
24
|
+
/** A queue's counts, as `jobs.stats` returns them. */
|
|
25
|
+
interface QueueStats {
|
|
26
|
+
/** Visible now: the next claim takes them. */
|
|
27
|
+
readonly ready: number;
|
|
28
|
+
/** Claimed by a worker, or waiting out the backoff before a retry. */
|
|
29
|
+
readonly inFlight: number;
|
|
30
|
+
/** Enqueued with a delay and not claimed yet. */
|
|
31
|
+
readonly delayed: number;
|
|
32
|
+
/** Dead letters kept in the archive. */
|
|
33
|
+
readonly dead: number;
|
|
34
|
+
/** Seconds since the oldest message that isn't done was enqueued; null when none is waiting. */
|
|
35
|
+
readonly oldestAgeSeconds: number | null;
|
|
36
|
+
}
|
|
37
|
+
/** A dead letter, as `better_supabase.list_dead_jobs` returns it. */
|
|
38
|
+
interface DeadJobRow {
|
|
39
|
+
readonly id: string | number;
|
|
40
|
+
readonly attempts: number;
|
|
41
|
+
readonly enqueued_at: Date | string;
|
|
42
|
+
readonly died_at: Date | string | null;
|
|
43
|
+
readonly message: QueueMessageBody | null;
|
|
44
|
+
}
|
|
45
|
+
/** A schedule whose run is due, claimed by `runSchedules`. */
|
|
46
|
+
interface DueSchedule {
|
|
47
|
+
readonly name: string;
|
|
48
|
+
readonly cron: string;
|
|
49
|
+
readonly timeZone: string;
|
|
50
|
+
readonly queue: string;
|
|
51
|
+
/** The payload as stored, with its recorded context. */
|
|
52
|
+
readonly payload: unknown;
|
|
53
|
+
readonly nextRun: Temporal.Instant;
|
|
54
|
+
}
|
|
55
|
+
/** A Supabase client, or anything with `.schema(name).rpc(fn, args)`. */
|
|
56
|
+
interface QueueRpcClient {
|
|
57
|
+
/**
|
|
58
|
+
* `never` parameters, so a typed `SupabaseClient<Database>` whose types
|
|
59
|
+
* leave out `pgmq_public` fits too.
|
|
60
|
+
*/
|
|
61
|
+
schema(name: never): {
|
|
62
|
+
rpc(fn: never, args: never): PromiseLike<{
|
|
63
|
+
data: unknown;
|
|
64
|
+
error: unknown;
|
|
65
|
+
}>;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Where `createJobs` stores jobs. `sqlQueueBackend` (the `jobs` SQL module
|
|
70
|
+
* module, on pgmq or its table backend) and `pgmqPublicBackend` ship with
|
|
71
|
+
* the package; `testQueueBackend` from `better-supabase/testing` checks
|
|
72
|
+
* another one.
|
|
73
|
+
*/
|
|
74
|
+
interface QueueBackend {
|
|
75
|
+
readonly apiVersion: 1;
|
|
76
|
+
readonly name: string;
|
|
77
|
+
/** Whether `extend` works, so long-running batches keep their lease. */
|
|
78
|
+
readonly leases: boolean;
|
|
79
|
+
send(queue: string, payload: unknown, delay: number, maxAttempts: number, dedupeKey: string | undefined, dedupe?: "always" | "waiting"): Promise<number>;
|
|
80
|
+
read(queue: string, lease: number, batch: number): Promise<readonly QueueMessageRow[]>;
|
|
81
|
+
/** `false` when the lease was lost. */
|
|
82
|
+
complete(job: Job): Promise<boolean>;
|
|
83
|
+
fail(job: Job, error: string, retryIn: number | undefined): Promise<"queued" | "dead" | null>;
|
|
84
|
+
extend(job: Job, lease: number): Promise<boolean>;
|
|
85
|
+
/** Re-enqueues a dead letter; `null` when it isn't one. Absent when the backend can't. */
|
|
86
|
+
replay?(queue: string, id: number): Promise<number | null>;
|
|
87
|
+
/** Counts for one queue. Absent when the backend can't. */
|
|
88
|
+
stats?(queue: string): Promise<QueueStats>;
|
|
89
|
+
/** Dead letters, newest first, before `before` when given. Absent when the backend can't. */
|
|
90
|
+
listDead?(queue: string, limit: number, before: number | undefined): Promise<readonly DeadJobRow[]>;
|
|
91
|
+
/** Re-enqueues the dead letters `ids`, or the newest `limit`; returns how many. */
|
|
92
|
+
retryDead?(queue: string, ids: readonly number[] | undefined, limit: number): Promise<number>;
|
|
93
|
+
schedule(name: string, cron: string, queue: string, payload: unknown, timeZone: string, nextRun: Temporal.Instant, tenant?: string): Promise<void>;
|
|
94
|
+
unschedule(name: string): Promise<boolean>;
|
|
95
|
+
/** Schedules by name prefix and tenant. Absent when the backend can't list them. */
|
|
96
|
+
listSchedules?(filter: ScheduleFilter): Promise<readonly ScheduleInfo[]>;
|
|
97
|
+
/** Removes a tenant's schedules and returns how many. Absent when the backend can't. */
|
|
98
|
+
unscheduleTenant?(tenant: string): Promise<number>;
|
|
99
|
+
/** Leases due schedules (the drain scheduler); absent or empty with pg_cron. */
|
|
100
|
+
dueSchedules?(lease: number, batch: number): Promise<readonly DueSchedule[]>;
|
|
101
|
+
/** Moves a schedule from `ran` to `next`; `false` when it changed since the claim. */
|
|
102
|
+
advanceSchedule?(name: string, ran: Temporal.Instant, next: Temporal.Instant): Promise<boolean>;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* The `jobs` SQL module over a service SQL connection. The same
|
|
106
|
+
* functions back both `sql.modules.jobs.options.backend` values (pgmq and table)
|
|
107
|
+
* and both schedulers.
|
|
108
|
+
*/
|
|
109
|
+
declare function sqlQueueBackend(sql: SqlClient): QueueBackend;
|
|
110
|
+
/**
|
|
111
|
+
* Supabase's `pgmq_public` RPCs (Integrations, Queues, "Expose Queues via
|
|
112
|
+
* PostgREST"). No lease check on complete, no retry delay, no deduplication
|
|
113
|
+
* and no schedules: a failed job reappears when its lease ends.
|
|
114
|
+
*/
|
|
115
|
+
declare function pgmqPublicBackend(client: QueueRpcClient): QueueBackend;
|
|
116
|
+
//#endregion
|
|
117
|
+
//#region src/blocks/jobs/queue.d.ts
|
|
7
118
|
type QueueSchemas = Readonly<Record<string, StandardSchemaV1>>;
|
|
8
119
|
type PayloadIn<Q extends QueueSchemas, N extends keyof Q> = StandardSchemaV1.InferInput<Q[N]>;
|
|
9
120
|
type PayloadOut<Q extends QueueSchemas, N extends keyof Q> = StandardSchemaV1.InferOutput<Q[N]>;
|
|
@@ -11,6 +122,11 @@ type PayloadOut<Q extends QueueSchemas, N extends keyof Q> = StandardSchemaV1.In
|
|
|
11
122
|
interface JobContext {
|
|
12
123
|
readonly actor?: Actor;
|
|
13
124
|
readonly tenant?: string;
|
|
125
|
+
/**
|
|
126
|
+
* The `act` claim of a support or impersonated session, so the job runs
|
|
127
|
+
* under the same terms (a read-only support session stays read-only).
|
|
128
|
+
*/
|
|
129
|
+
readonly act?: Readonly<Record<string, unknown>>;
|
|
14
130
|
}
|
|
15
131
|
interface Job<P = unknown> {
|
|
16
132
|
/** The pgmq message id. */
|
|
@@ -25,7 +141,8 @@ interface Job<P = unknown> {
|
|
|
25
141
|
readonly visibleUntil: Temporal.Instant;
|
|
26
142
|
readonly lastError: string | null;
|
|
27
143
|
/**
|
|
28
|
-
* The actor and tenant recorded at enqueue, ready for `
|
|
144
|
+
* The actor and tenant recorded at enqueue, ready for `bs.forContext(job.context)`,
|
|
145
|
+
* which runs as that user with RLS.
|
|
29
146
|
* Without a recorded tenant, `tenant()` applies its `onMissing` unless the
|
|
30
147
|
* worker runs with `allTenants: true`.
|
|
31
148
|
*/
|
|
@@ -43,6 +160,13 @@ interface EnqueueOptions {
|
|
|
43
160
|
* its id. SQL connections only.
|
|
44
161
|
*/
|
|
45
162
|
readonly dedupeKey?: string;
|
|
163
|
+
/**
|
|
164
|
+
* Which jobs with the same `dedupeKey` take the enqueue: `"always"` (the
|
|
165
|
+
* default) a waiting or running one, `"waiting"` only one no worker has
|
|
166
|
+
* claimed yet, so a change made during a run queues one follow-up (a
|
|
167
|
+
* debounce).
|
|
168
|
+
*/
|
|
169
|
+
readonly dedupe?: "always" | "waiting";
|
|
46
170
|
/**
|
|
47
171
|
* The request context whose actor and tenant the job records, next to the
|
|
48
172
|
* payload. The tenant is `context.tenant`, the one `tenant()` resolved, or
|
|
@@ -53,12 +177,72 @@ interface EnqueueOptions {
|
|
|
53
177
|
interface ScheduleOptions {
|
|
54
178
|
/** The actor and tenant every scheduled run records, as in `enqueue`. */
|
|
55
179
|
readonly context?: RequestContext;
|
|
180
|
+
/**
|
|
181
|
+
* The tenant the schedule belongs to, for `listSchedules({ tenant })` and
|
|
182
|
+
* `unscheduleAll({ tenant })`. Defaults to the tenant of `context`. Needs
|
|
183
|
+
* `sql.modules.jobs.options.scheduler: "drain"`.
|
|
184
|
+
*/
|
|
185
|
+
readonly tenant?: string;
|
|
56
186
|
/**
|
|
57
187
|
* The IANA time zone the cron fields are read in. Defaults to `UTC`.
|
|
58
|
-
* Other zones need `
|
|
188
|
+
* Other zones need `sql.modules.jobs.options.scheduler: "drain"`.
|
|
59
189
|
*/
|
|
60
190
|
readonly timeZone?: string;
|
|
61
191
|
}
|
|
192
|
+
/** One schedule of the set `ensureSchedules` keeps. */
|
|
193
|
+
interface ScheduleDefinition<Q extends QueueSchemas, N extends Extract<keyof Q, string> = Extract<keyof Q, string>> extends ScheduleOptions {
|
|
194
|
+
readonly name: string;
|
|
195
|
+
readonly cron: string;
|
|
196
|
+
readonly queue: N;
|
|
197
|
+
readonly payload: PayloadIn<Q, N>;
|
|
198
|
+
}
|
|
199
|
+
/** Each queue's `ScheduleDefinition`, so `payload` follows `queue`. */
|
|
200
|
+
type ScheduleDefinitions<Q extends QueueSchemas> = { readonly [N in Extract<keyof Q, string>]: ScheduleDefinition<Q, N>; }[Extract<keyof Q, string>];
|
|
201
|
+
interface EnsureSchedulesOptions {
|
|
202
|
+
/**
|
|
203
|
+
* The set's name prefix, such as `workflow:`. Every definition's name
|
|
204
|
+
* starts with it, and existing schedules under it that the set doesn't
|
|
205
|
+
* name are removed.
|
|
206
|
+
*/
|
|
207
|
+
readonly prefix: string;
|
|
208
|
+
/**
|
|
209
|
+
* Only this tenant's schedules under the prefix are compared and removed,
|
|
210
|
+
* and definitions without their own tenant get it.
|
|
211
|
+
*/
|
|
212
|
+
readonly tenant?: string;
|
|
213
|
+
}
|
|
214
|
+
interface EnsureSchedulesResult {
|
|
215
|
+
/** The names written, in the order given. */
|
|
216
|
+
readonly scheduled: readonly string[];
|
|
217
|
+
/** Schedules under the prefix that the set no longer names. */
|
|
218
|
+
readonly removed: readonly string[];
|
|
219
|
+
}
|
|
220
|
+
interface ListDeadOptions extends CursorPageOptions<number> {
|
|
221
|
+
/** Defaults to 100, at most 1000. */
|
|
222
|
+
readonly limit?: number;
|
|
223
|
+
/** Only dead letters with a lower id, for the next page. */
|
|
224
|
+
readonly cursor?: number;
|
|
225
|
+
}
|
|
226
|
+
interface RetryDeadOptions {
|
|
227
|
+
/** The dead letters to retry. Defaults to the newest `limit`. */
|
|
228
|
+
readonly ids?: readonly number[];
|
|
229
|
+
/** Defaults to 1000. */
|
|
230
|
+
readonly limit?: number;
|
|
231
|
+
}
|
|
232
|
+
/** A dead letter as `listDead` returns it. */
|
|
233
|
+
interface DeadJob<P = unknown> {
|
|
234
|
+
readonly id: number;
|
|
235
|
+
readonly queue: string;
|
|
236
|
+
/** The stored payload, unvalidated: its schema may have changed since. */
|
|
237
|
+
readonly payload: P;
|
|
238
|
+
readonly context: RequestContext;
|
|
239
|
+
readonly attempts: number;
|
|
240
|
+
readonly maxAttempts: number;
|
|
241
|
+
readonly lastError: string | null;
|
|
242
|
+
readonly enqueuedAt: Temporal.Instant;
|
|
243
|
+
/** When it was archived as dead. */
|
|
244
|
+
readonly diedAt: Temporal.Instant | null;
|
|
245
|
+
}
|
|
62
246
|
interface RunSchedulesOptions {
|
|
63
247
|
/** Seconds a claimed schedule stays leased. Defaults to 60. */
|
|
64
248
|
readonly lease?: number;
|
|
@@ -69,7 +253,7 @@ interface DrainOptions extends Omit<WorkOptions, "pollInterval" | "maxPollInterv
|
|
|
69
253
|
/** Stop claiming after this many ms; claimed jobs still finish. */
|
|
70
254
|
readonly budgetMs?: number;
|
|
71
255
|
}
|
|
72
|
-
interface DrainRouteOptions<Q extends QueueSchemas> extends Omit<DrainOptions, "onError"
|
|
256
|
+
interface DrainRouteOptions<Q extends QueueSchemas> extends Omit<DrainOptions, "onError">, BlockProblemOptions {
|
|
73
257
|
/**
|
|
74
258
|
* The bearer token callers send (`Authorization: Bearer <secret>`), such
|
|
75
259
|
* as Vercel's `CRON_SECRET`. Required.
|
|
@@ -82,6 +266,8 @@ interface DrainRouteOptions<Q extends QueueSchemas> extends Omit<DrainOptions, "
|
|
|
82
266
|
/** Enqueue due schedules first (the drain scheduler). Defaults to true. */
|
|
83
267
|
readonly schedules?: boolean;
|
|
84
268
|
readonly onError?: (error: DbError, job?: Job) => void;
|
|
269
|
+
/** Hooks around each authorized drain, such as cron monitor check-ins. */
|
|
270
|
+
readonly monitor?: DrainMonitor;
|
|
85
271
|
}
|
|
86
272
|
interface DrainRouteResult {
|
|
87
273
|
/** Schedules whose run was enqueued. */
|
|
@@ -89,6 +275,39 @@ interface DrainRouteResult {
|
|
|
89
275
|
readonly queues: Readonly<Record<string, DrainResult>>;
|
|
90
276
|
/** True when the budget ran out before every queue was empty. */
|
|
91
277
|
readonly budgetExhausted: boolean;
|
|
278
|
+
/** Schedule or queue runs that failed as a whole (individual job failures are in `queues`). */
|
|
279
|
+
readonly errors: number;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Hooks around one authorized drain, for cron monitoring such as Sentry
|
|
283
|
+
* check-ins. A hook that throws is reported to `onError` and never fails
|
|
284
|
+
* the drain.
|
|
285
|
+
*/
|
|
286
|
+
interface DrainMonitor {
|
|
287
|
+
/** Before schedules run. Its return value (a check-in id) is passed to `onFinish`. */
|
|
288
|
+
onStart?(request: Request): unknown;
|
|
289
|
+
/** After the queues ran, with the result the route answers with. */
|
|
290
|
+
onFinish?(result: DrainRouteResult, started: unknown): unknown;
|
|
291
|
+
}
|
|
292
|
+
/** A schedule as `listSchedules` returns it. */
|
|
293
|
+
interface ScheduleInfo {
|
|
294
|
+
readonly name: string;
|
|
295
|
+
readonly cron: string;
|
|
296
|
+
readonly timeZone: string;
|
|
297
|
+
/** Null under pg_cron, which keeps only the command. */
|
|
298
|
+
readonly queue: string | null;
|
|
299
|
+
readonly tenant: string | null;
|
|
300
|
+
/** The next run; null under pg_cron. */
|
|
301
|
+
readonly nextRun: Temporal.Instant | null;
|
|
302
|
+
readonly lastRun: Temporal.Instant | null;
|
|
303
|
+
/** Set while a drain holds the schedule. */
|
|
304
|
+
readonly leasedUntil: Temporal.Instant | null;
|
|
305
|
+
readonly createdAt: Temporal.Instant | null;
|
|
306
|
+
}
|
|
307
|
+
interface ScheduleFilter {
|
|
308
|
+
/** Schedules whose name starts with this, e.g. `workflow:`. */
|
|
309
|
+
readonly prefix?: string;
|
|
310
|
+
readonly tenant?: string;
|
|
92
311
|
}
|
|
93
312
|
interface ClaimOptions {
|
|
94
313
|
/** Defaults to 1. */
|
|
@@ -142,14 +361,42 @@ interface Jobs<Q extends QueueSchemas> {
|
|
|
142
361
|
* dead letter of `queue`. SQL connections only.
|
|
143
362
|
*/
|
|
144
363
|
replay(queue: Extract<keyof Q, string>, id: number): AsyncResult<number | null>;
|
|
364
|
+
/**
|
|
365
|
+
* Counts per queue (ready, in flight, delayed, dead and the oldest
|
|
366
|
+
* waiting message's age), for an admin page. Defaults to every queue
|
|
367
|
+
* `createJobs` declared. SQL connections only.
|
|
368
|
+
*/
|
|
369
|
+
stats<N extends Extract<keyof Q, string>>(queues?: readonly N[]): AsyncResult<Record<N, QueueStats>>;
|
|
370
|
+
/** A queue's dead letters, newest first, for an admin page. SQL connections only. */
|
|
371
|
+
listDead<N extends Extract<keyof Q, string>>(queue: N, options?: ListDeadOptions): AsyncResult<DeadJob<PayloadOut<Q, N>>[]>;
|
|
372
|
+
/**
|
|
373
|
+
* Enqueues dead letters again, the `ids` given or the newest `limit`
|
|
374
|
+
* (1000), each with its payload, attempts and dedupe key. Returns how many
|
|
375
|
+
* went back on the queue. SQL connections only.
|
|
376
|
+
*/
|
|
377
|
+
retryDead(queue: Extract<keyof Q, string>, options?: RetryDeadOptions): AsyncResult<number>;
|
|
145
378
|
/**
|
|
146
379
|
* Enqueues `payload` on a cron schedule (`'0 3 * * *'`, `'@daily'`,
|
|
147
380
|
* `'30 seconds'`), with pg_cron or the drain scheduler
|
|
148
|
-
* (`
|
|
381
|
+
* (`sql.modules.jobs.options.scheduler`). Re-scheduling a name replaces it. SQL
|
|
149
382
|
* connections only.
|
|
150
383
|
*/
|
|
151
384
|
schedule<N extends Extract<keyof Q, string>>(name: string, cron: string, queue: N, payload: PayloadIn<Q, N>, options?: ScheduleOptions): AsyncResult<void>;
|
|
152
385
|
unschedule(name: string): AsyncResult<boolean>;
|
|
386
|
+
/**
|
|
387
|
+
* Makes the schedules under `prefix` (and `tenant`) exactly `definitions`:
|
|
388
|
+
* writes each one, keeping the next run of a schedule whose cron and time
|
|
389
|
+
* zone didn't change, and removes the rest. Every payload and cron is
|
|
390
|
+
* checked before anything is written. Run it on deploy or after a
|
|
391
|
+
* settings change; running it twice changes nothing. SQL connections only.
|
|
392
|
+
*/
|
|
393
|
+
ensureSchedules(definitions: readonly ScheduleDefinitions<Q>[], options: EnsureSchedulesOptions): AsyncResult<EnsureSchedulesResult>;
|
|
394
|
+
/** Schedules by name prefix or tenant, with their next and last run. SQL connections only. */
|
|
395
|
+
listSchedules(filter?: ScheduleFilter): AsyncResult<ScheduleInfo[]>;
|
|
396
|
+
/** Removes every schedule of a tenant, for tenant deletion; returns how many. SQL connections only. */
|
|
397
|
+
unscheduleAll(filter: {
|
|
398
|
+
readonly tenant: string;
|
|
399
|
+
}): AsyncResult<number>;
|
|
153
400
|
/**
|
|
154
401
|
* Enqueues one run of every due schedule (the drain scheduler) and moves
|
|
155
402
|
* it to its next time. Returns how many ran. Missed runs collapse into one.
|
|
@@ -166,80 +413,8 @@ interface Jobs<Q extends QueueSchemas> {
|
|
|
166
413
|
/** Polls and processes jobs until `signal` aborts. */
|
|
167
414
|
work<N extends Extract<keyof Q, string>>(queue: N, handler: JobHandler<PayloadOut<Q, N>>, options?: WorkOptions): Promise<DrainResult>;
|
|
168
415
|
}
|
|
169
|
-
/** The body of a queued message, on pgmq and the table backend alike. */
|
|
170
|
-
interface QueueMessageBody {
|
|
171
|
-
readonly payload?: unknown;
|
|
172
|
-
readonly max_attempts?: number;
|
|
173
|
-
readonly last_error?: string;
|
|
174
|
-
}
|
|
175
|
-
/** A claimed message, as `better_supabase.claim_jobs` returns it. */
|
|
176
|
-
interface QueueMessageRow {
|
|
177
|
-
readonly id: string | number;
|
|
178
|
-
/** 1 on the first claim; a lease token for complete, fail and extend. */
|
|
179
|
-
readonly attempts: number;
|
|
180
|
-
readonly enqueued_at: Date | string;
|
|
181
|
-
readonly visible_until: Date | string;
|
|
182
|
-
readonly message: QueueMessageBody | null;
|
|
183
|
-
}
|
|
184
|
-
/** A schedule whose run is due, claimed by `runSchedules`. */
|
|
185
|
-
interface DueSchedule {
|
|
186
|
-
readonly name: string;
|
|
187
|
-
readonly cron: string;
|
|
188
|
-
readonly timeZone: string;
|
|
189
|
-
readonly queue: string;
|
|
190
|
-
/** The payload as stored, with its recorded context. */
|
|
191
|
-
readonly payload: unknown;
|
|
192
|
-
readonly nextRun: Temporal.Instant;
|
|
193
|
-
}
|
|
194
|
-
/** A Supabase client, or anything with `.schema(name).rpc(fn, args)`. */
|
|
195
|
-
interface QueueRpcClient {
|
|
196
|
-
schema(name: string): {
|
|
197
|
-
rpc(fn: string, args: Readonly<Record<string, unknown>>): PromiseLike<{
|
|
198
|
-
data: unknown;
|
|
199
|
-
error: unknown;
|
|
200
|
-
}>;
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Where `createJobs` stores jobs. `sqlQueueBackend` (the `jobs` SQL kit
|
|
205
|
-
* module, on pgmq or its table backend) and `pgmqPublicBackend` ship with
|
|
206
|
-
* the package; `testQueueBackend` from `better-supabase/testing` checks
|
|
207
|
-
* another one.
|
|
208
|
-
*/
|
|
209
|
-
interface QueueBackend {
|
|
210
|
-
readonly apiVersion: 1;
|
|
211
|
-
readonly name: string;
|
|
212
|
-
/** Whether `extend` works, so long-running batches keep their lease. */
|
|
213
|
-
readonly leases: boolean;
|
|
214
|
-
send(queue: string, payload: unknown, delay: number, maxAttempts: number, dedupeKey: string | undefined): Promise<number>;
|
|
215
|
-
read(queue: string, lease: number, batch: number): Promise<readonly QueueMessageRow[]>;
|
|
216
|
-
/** `false` when the lease was lost. */
|
|
217
|
-
complete(job: Job): Promise<boolean>;
|
|
218
|
-
fail(job: Job, error: string, retryIn: number | undefined): Promise<"queued" | "dead" | null>;
|
|
219
|
-
extend(job: Job, lease: number): Promise<boolean>;
|
|
220
|
-
/** Re-enqueues a dead letter; `null` when it isn't one. Absent when the backend can't. */
|
|
221
|
-
replay?(queue: string, id: number): Promise<number | null>;
|
|
222
|
-
schedule(name: string, cron: string, queue: string, payload: unknown, timeZone: string, nextRun: Temporal.Instant): Promise<void>;
|
|
223
|
-
unschedule(name: string): Promise<boolean>;
|
|
224
|
-
/** Leases due schedules (the drain scheduler); absent or empty with pg_cron. */
|
|
225
|
-
dueSchedules?(lease: number, batch: number): Promise<readonly DueSchedule[]>;
|
|
226
|
-
/** Moves a schedule from `ran` to `next`; `false` when it changed since the claim. */
|
|
227
|
-
advanceSchedule?(name: string, ran: Temporal.Instant, next: Temporal.Instant): Promise<boolean>;
|
|
228
|
-
}
|
|
229
|
-
/**
|
|
230
|
-
* The `jobs` SQL kit module over a service SQL connection. The same
|
|
231
|
-
* functions back both `kits.jobs.options.backend` values (pgmq and table)
|
|
232
|
-
* and both schedulers.
|
|
233
|
-
*/
|
|
234
|
-
declare function sqlQueueBackend(sql: SqlClient): QueueBackend;
|
|
235
|
-
/**
|
|
236
|
-
* Supabase's `pgmq_public` RPCs (Integrations, Queues, "Expose Queues via
|
|
237
|
-
* PostgREST"). No lease check on complete, no retry delay, no deduplication
|
|
238
|
-
* and no schedules: a failed job reappears when its lease ends.
|
|
239
|
-
*/
|
|
240
|
-
declare function pgmqPublicBackend(client: QueueRpcClient): QueueBackend;
|
|
241
416
|
/**
|
|
242
|
-
* Typed jobs on Supabase Queues (pgmq), over the `jobs` SQL
|
|
417
|
+
* Typed jobs on Supabase Queues (pgmq), over the `jobs` SQL module.
|
|
243
418
|
*
|
|
244
419
|
* Pass a service SQL connection (`postgres.admin`, `ctx.sql`) for the full
|
|
245
420
|
* feature set, a service-role Supabase client to go through the
|
|
@@ -247,6 +422,6 @@ declare function pgmqPublicBackend(client: QueueRpcClient): QueueBackend;
|
|
|
247
422
|
* any `QueueBackend`. Queue names are lowercase letters, digits and
|
|
248
423
|
* underscores.
|
|
249
424
|
*/
|
|
250
|
-
declare function createJobs<const Q extends QueueSchemas>(source: SqlClient | QueueRpcClient | QueueBackend, queues: Q): Jobs<Q>;
|
|
425
|
+
declare function createJobs<const Q extends QueueSchemas>(source: SqlClient | QueueRpcClient | QueueBackend, queues: Q, options?: BlockTemporalOptions): Jobs<Q>;
|
|
251
426
|
//#endregion
|
|
252
|
-
export {
|
|
427
|
+
export { QueueMessageBody as A, ScheduleInfo as C, DeadJobRow as D, createJobs as E, sqlQueueBackend as F, QueueRpcClient as M, QueueStats as N, DueSchedule as O, pgmqPublicBackend as P, ScheduleFilter as S, WorkOptions as T, QueueSchemas as _, DrainResult as a, ScheduleDefinition as b, EnqueueOptions as c, FailOptions as d, Job as f, ListDeadOptions as g, Jobs as h, DrainOptions as i, QueueMessageRow as j, QueueBackend as k, EnsureSchedulesOptions as l, JobHandler as m, DeadJob as n, DrainRouteOptions as o, JobContext as p, DrainMonitor as r, DrainRouteResult as s, ClaimOptions as t, EnsureSchedulesResult as u, RetryDeadOptions as v, ScheduleOptions as w, ScheduleDefinitions as x, RunSchedulesOptions as y };
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import { t as escapeLike } from "../escape-like-ImTK0ps_.js";
|
|
2
|
+
import { s as Impersonator } from "../mfa-Daak8ukG.js";
|
|
3
|
+
import { t as tenantOf } from "../tenant-icPeuUBN.js";
|
|
4
|
+
import { t as AuthSession } from "../view-DbxLNu8L.js";
|
|
5
|
+
import { r as LiveCountSeed } from "../index-DunNRdnT.js";
|
|
6
|
+
import { r as MembershipClaim } from "../entitlements-DHrY2UDZ.js";
|
|
7
|
+
import { n as supportOf, t as SupportView } from "../support-view-33Oi07TT.js";
|
|
8
|
+
import { a as BroadcastOptions, f as UseActionOptions, l as LiveQueryHookOptions, n as ActionInputOf, o as ClientLike, r as ActionResultOf, s as LiveCountHookOptions, t as fieldErrorsOf } from "../field-errors-BFOa7WhB.js";
|
|
9
|
+
import { A as useLiveCount, C as BetterSupabaseProviderProps, D as createHooks, E as ProfileOf, M as useSupabase, O as useAuth, S as BetterSupabaseProvider, T as LiveCount, _ as ActionHandle, a as UploadTarget, b as useActionForm, c as useUpload, d as useDebouncedSearch, f as Presence, g as ActionForm, h as usePresence, i as UploadStatus, j as useLiveQuery, k as useBroadcast, l as DebouncedSearch, m as PresenceTopic, n as SignedUrlSource, o as UseUploadOptions, p as PresenceHookOptions, r as Upload, s as useSignedUrl, t as SignedUrl, u as DebouncedSearchOptions, v as UseActionFormOptions, w as ClaimsOf, x as BetterHooks, y as useAction } from "../index-CtuakVRc.js";
|
|
7
10
|
import { SessionProvider, SessionProviderProps, useSession, useSupportSession } from "./session.js";
|
|
8
|
-
|
|
11
|
+
import { a as useSignIn, i as SignOut, n as PendingState, o as useSignOut, r as SignIn, t as AuthHookOptions } from "../sign-in-BCV5S2WZ.js";
|
|
12
|
+
export { type ActionForm, type ActionHandle, type ActionInputOf, type ActionResultOf, type AuthHookOptions, type AuthSession, type BetterHooks, BetterSupabaseProvider, type BetterSupabaseProviderProps, type BroadcastOptions, type ClaimsOf, type ClientLike, type DebouncedSearch, type DebouncedSearchOptions, type Impersonator, type LiveCount, type LiveCountHookOptions, type LiveCountSeed, type LiveQueryHookOptions, type MembershipClaim, type PendingState, type Presence, type PresenceHookOptions, type PresenceTopic, type ProfileOf, SessionProvider, type SessionProviderProps, type SignIn, type SignOut, type SignedUrl, type SignedUrlSource, type SupportView, type Upload, type UploadStatus, type UploadTarget, type UseActionFormOptions, type UseActionOptions, type UseUploadOptions, createHooks, escapeLike, fieldErrorsOf, supportOf, tenantOf, useAction, useActionForm, useAuth, useBroadcast, useDebouncedSearch, useLiveCount, useLiveQuery, usePresence, useSession, useSignIn, useSignOut, useSignedUrl, useSupabase, useSupportSession, useUpload };
|
package/dist/react/index.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import { t as escapeLike } from "../escape-like-DHfx6jRr.js";
|
|
2
3
|
import { t as supportOf } from "../support-view-g4YLBeqX.js";
|
|
3
4
|
import { SessionProvider, useSession, useSupportSession } from "./session.js";
|
|
4
|
-
import { a as useBroadcast, c as
|
|
5
|
-
import { t as
|
|
6
|
-
|
|
5
|
+
import { a as useBroadcast, c as useLiveQuery, i as useAuth, l as useSupabase, r as createHooks, s as useLiveCount, t as BetterSupabaseProvider } from "../hooks-1BTCJsiw.js";
|
|
6
|
+
import { t as fieldErrorsOf } from "../field-errors-VF1yb8yI.js";
|
|
7
|
+
import { a as useAction, i as usePresence, n as useUpload, o as useActionForm, r as useDebouncedSearch, t as useSignedUrl } from "../react-F80mF4-t.js";
|
|
8
|
+
import { t as tenantOf } from "../tenant-I1TEZ_BX.js";
|
|
9
|
+
import { n as useSignIn, r as useSignOut } from "../sign-in-Cb1mwv6X.js";
|
|
10
|
+
export { BetterSupabaseProvider, SessionProvider, createHooks, escapeLike, fieldErrorsOf, supportOf, tenantOf, useAction, useActionForm, useAuth, useBroadcast, useDebouncedSearch, useLiveCount, useLiveQuery, usePresence, useSession, useSignIn, useSignOut, useSignedUrl, useSupabase, useSupportSession, useUpload };
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { t as AuthSnapshot } from "../../bind-Bu_ZNa3W.js";
|
|
2
|
+
import { a as OAuthSignInOptions, i as OAuthClient, n as AuthLinkClient, o as WebBrowserLike, r as AuthLinkResult, t as AuthFailure } from "../../auth-link-BjFPqwLz.js";
|
|
3
|
+
import { n as PendingState } from "../../sign-in-BCV5S2WZ.js";
|
|
4
|
+
import { Provider } from "@supabase/supabase-js";
|
|
5
|
+
import { ReactNode } from "react";
|
|
6
|
+
//#region src/react/native/index.d.ts
|
|
7
|
+
interface IdTokenClient {
|
|
8
|
+
readonly auth: {
|
|
9
|
+
signInWithIdToken(credentials: {
|
|
10
|
+
provider: string;
|
|
11
|
+
token: string;
|
|
12
|
+
nonce?: string;
|
|
13
|
+
access_token?: string;
|
|
14
|
+
}): Promise<{
|
|
15
|
+
readonly error: AuthFailure | null;
|
|
16
|
+
}>;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export interface UseOAuthOptions extends OAuthSignInOptions {
|
|
20
|
+
/** `expo-web-browser`. */
|
|
21
|
+
readonly browser: WebBrowserLike;
|
|
22
|
+
/** A supabase-js client for apps without `<BetterSupabaseProvider>`. */
|
|
23
|
+
readonly client?: OAuthClient & IdTokenClient;
|
|
24
|
+
readonly onSuccess?: () => void;
|
|
25
|
+
}
|
|
26
|
+
export interface OAuth extends PendingState {
|
|
27
|
+
/** Opens the provider in an auth session and finishes the sign-in. A cancelled browser is no error. */
|
|
28
|
+
readonly signIn: (provider: Provider) => Promise<AuthFailure | undefined>;
|
|
29
|
+
/**
|
|
30
|
+
* Native sign-in with an ID token from `expo-apple-authentication` or
|
|
31
|
+
* `@react-native-google-signin/google-signin`.
|
|
32
|
+
*/
|
|
33
|
+
readonly idToken: (credentials: {
|
|
34
|
+
readonly provider: "apple" | "google" | (string & {});
|
|
35
|
+
readonly token: string;
|
|
36
|
+
readonly nonce?: string;
|
|
37
|
+
readonly accessToken?: string;
|
|
38
|
+
}) => Promise<AuthFailure | undefined>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* OAuth and native ID-token sign-in on a device, with `pending` and
|
|
42
|
+
* `error` state.
|
|
43
|
+
*
|
|
44
|
+
* ```tsx
|
|
45
|
+
* import * as WebBrowser from 'expo-web-browser';
|
|
46
|
+
* const oauth = useOAuth({ browser: WebBrowser, redirectTo: Linking.createURL('auth/callback') });
|
|
47
|
+
* <Button title="GitHub" disabled={oauth.pending} onPress={() => oauth.signIn('github')} />
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare function useOAuth(options: UseOAuthOptions): OAuth;
|
|
51
|
+
/** The part of React Native's `Linking` that `useAuthDeepLinks` uses. */
|
|
52
|
+
export interface LinkingLike {
|
|
53
|
+
getInitialURL(): Promise<string | null>;
|
|
54
|
+
addEventListener(type: "url", listener: (event: {
|
|
55
|
+
readonly url: string;
|
|
56
|
+
}) => void): {
|
|
57
|
+
remove(): void;
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
export interface AuthDeepLinksOptions {
|
|
61
|
+
readonly client?: AuthLinkClient;
|
|
62
|
+
/** Called with each auth link's outcome, e.g. to navigate after a magic link. */
|
|
63
|
+
readonly onResult?: (result: Exclude<AuthLinkResult, {
|
|
64
|
+
type: "none";
|
|
65
|
+
}>) => void;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Finishes sign-ins from deep links while mounted: the URL that opened the
|
|
69
|
+
* app and every link after it (magic links, email confirmations, OAuth
|
|
70
|
+
* redirects outside an auth session). Returns the last auth link's outcome.
|
|
71
|
+
*
|
|
72
|
+
* ```tsx
|
|
73
|
+
* import * as Linking from 'expo-linking';
|
|
74
|
+
* useAuthDeepLinks(Linking, { onResult: (r) => r.type === 'signed-in' && router.replace('/') });
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export declare function useAuthDeepLinks(linking: LinkingLike, options?: AuthDeepLinksOptions): AuthLinkResult;
|
|
78
|
+
export interface ProtectedRouteOptions {
|
|
79
|
+
/** `useSegments()` from expo-router. */
|
|
80
|
+
readonly segments: readonly string[];
|
|
81
|
+
/** `useRouter()` from expo-router. */
|
|
82
|
+
readonly router: {
|
|
83
|
+
replace(href: string): void;
|
|
84
|
+
};
|
|
85
|
+
/** The route group signed-out users may see. Defaults to `(auth)`. */
|
|
86
|
+
readonly publicGroup?: string;
|
|
87
|
+
/** Defaults to `/sign-in`. */
|
|
88
|
+
readonly signInHref?: string;
|
|
89
|
+
/** Where a signed-in user on a public screen goes. Defaults to `/`. */
|
|
90
|
+
readonly homeHref?: string;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Redirects with expo-router: signed-out users outside the public group go
|
|
94
|
+
* to `signInHref`, signed-in users inside it go to `homeHref`. Returns the
|
|
95
|
+
* auth state; render a splash screen while it is `loading`.
|
|
96
|
+
*
|
|
97
|
+
* ```tsx
|
|
98
|
+
* const status = useProtectedRoute({ segments: useSegments(), router: useRouter() });
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export declare function useProtectedRoute(options: ProtectedRouteOptions): AuthSnapshot["status"];
|
|
102
|
+
export interface AuthGateProps {
|
|
103
|
+
/** Shown while the session loads. Defaults to nothing. */
|
|
104
|
+
readonly fallback?: ReactNode;
|
|
105
|
+
/** Shown to signed-out users, e.g. the sign-in screen. */
|
|
106
|
+
readonly signedOut?: ReactNode;
|
|
107
|
+
readonly children?: ReactNode;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Renders `children` for signed-in users, `signedOut` otherwise, and
|
|
111
|
+
* `fallback` while the session loads. With expo-router, `Stack.Protected`
|
|
112
|
+
* takes `useAuth().status === 'signed-in'` as its `guard` instead.
|
|
113
|
+
*/
|
|
114
|
+
export declare function AuthGate(props: AuthGateProps): ReactNode;
|
|
115
|
+
//#endregion
|
|
116
|
+
export type { AuthFailure, AuthLinkResult, OAuthSignInOptions, WebBrowserLike };
|