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,4 +1,4 @@
|
|
|
1
|
-
import { a as
|
|
1
|
+
import { a as fieldsFor, c as propertyKey, d as siblingPath, f as tableDocs, g as variantsFor, h as variantTitle, i as fieldDocs, l as rowType, m as temporalGuardImport, o as optionalLine, p as tableEntries, r as HEADER, s as parseImport, u as schemaName } from "./json-schema-CvER4kgT.js";
|
|
2
2
|
//#region src/generators/valibot.ts
|
|
3
3
|
function scalar$1(kind) {
|
|
4
4
|
switch (kind.kind) {
|
|
@@ -9,8 +9,8 @@ function scalar$1(kind) {
|
|
|
9
9
|
case "boolean": return "v.boolean()";
|
|
10
10
|
case "datetime": return "v.pipe(v.string(), v.isoTimestamp())";
|
|
11
11
|
case "date": return "v.pipe(v.string(), v.isoDate())";
|
|
12
|
-
case "instant": return "v.
|
|
13
|
-
case "plainDateTime": return "v.
|
|
12
|
+
case "instant": return "v.custom<Temporal.Instant>(isInstant)";
|
|
13
|
+
case "plainDateTime": return "v.custom<Temporal.PlainDateTime>(isPlainDateTime)";
|
|
14
14
|
case "bigint": return "v.bigint()";
|
|
15
15
|
case "json": return "json";
|
|
16
16
|
case "enum": return `v.picklist([${kind.values.map((value) => JSON.stringify(value)).join(", ")}])`;
|
|
@@ -18,16 +18,36 @@ function scalar$1(kind) {
|
|
|
18
18
|
default: return kind;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
/** `expr` with `actions` appended, flattening an existing top-level `v.pipe`. */
|
|
22
|
+
function piped(expr, actions) {
|
|
23
|
+
if (actions.length === 0) return expr;
|
|
24
|
+
return `v.pipe(${/^v\.pipe\((.*)\)$/s.exec(expr)?.[1] ?? expr}, ${actions.join(", ")})`;
|
|
25
|
+
}
|
|
26
|
+
function boundActions(docs) {
|
|
27
|
+
return [
|
|
28
|
+
docs.minimum === void 0 ? void 0 : `v.minValue(${docs.minimum})`,
|
|
29
|
+
docs.exclusiveMinimum === void 0 ? void 0 : `v.gtValue(${docs.exclusiveMinimum})`,
|
|
30
|
+
docs.maximum === void 0 ? void 0 : `v.maxValue(${docs.maximum})`,
|
|
31
|
+
docs.exclusiveMaximum === void 0 ? void 0 : `v.ltValue(${docs.exclusiveMaximum})`,
|
|
32
|
+
docs.minLength === void 0 ? void 0 : `v.minLength(${docs.minLength})`,
|
|
33
|
+
docs.maxLength === void 0 ? void 0 : `v.maxLength(${docs.maxLength})`
|
|
34
|
+
].filter((action) => action !== void 0);
|
|
35
|
+
}
|
|
36
|
+
function docActions(docs) {
|
|
37
|
+
return [...docs.description === void 0 ? [] : [`v.description(${JSON.stringify(docs.description)})`], ...docs.examples === void 0 ? [] : [`v.examples(${JSON.stringify(docs.examples)})`]];
|
|
38
|
+
}
|
|
39
|
+
function field$1(table, plan, jsonImports, docs) {
|
|
40
|
+
let expr = jsonImports.get(`${table}.${plan.column.db}`) ?? (plan.customJson ? `v.custom<NonNullable<RowOf<'${table}'>['${plan.name}']>>((value) => value !== undefined)` : plan.column.storage === void 0 ? piped(scalar$1(plan.scalar), boundActions(docs)) : `(v.string() as unknown as v.GenericSchema<${rowType(table, plan)}>)`);
|
|
23
41
|
if (plan.column.array) expr = `v.array(${expr})`;
|
|
24
42
|
if (plan.nullable) expr = `v.nullable(${expr})`;
|
|
43
|
+
expr = piped(expr, docActions(docs));
|
|
25
44
|
if (plan.optional) expr = `v.exactOptional(${expr})`;
|
|
26
45
|
return ` ${propertyKey(plan.name)}: ${expr},`;
|
|
27
46
|
}
|
|
28
47
|
/** Valibot schemas for every table's Row, Insert and Update shape. */
|
|
29
48
|
function valibot(options = {}) {
|
|
30
49
|
return {
|
|
50
|
+
apiVersion: 1,
|
|
31
51
|
name: "valibot",
|
|
32
52
|
generate(input) {
|
|
33
53
|
const path = options.output ?? siblingPath(input.config.output, "valibot.ts");
|
|
@@ -44,6 +64,7 @@ function valibot(options = {}) {
|
|
|
44
64
|
const lines = [
|
|
45
65
|
HEADER,
|
|
46
66
|
"import * as v from \"valibot\";",
|
|
67
|
+
...optionalLine(temporalGuardImport(input)),
|
|
47
68
|
"",
|
|
48
69
|
`import type { InsertOf, Json, RowOf, UpdateOf } from ${JSON.stringify(input.importPath(path, input.config.output))};`
|
|
49
70
|
];
|
|
@@ -54,11 +75,13 @@ function valibot(options = {}) {
|
|
|
54
75
|
for (const [key, table] of tableEntries(input)) {
|
|
55
76
|
lines.push("");
|
|
56
77
|
const variants = variantsFor(table);
|
|
78
|
+
const docs = tableDocs(input, table);
|
|
57
79
|
for (const variant of variants) {
|
|
58
80
|
const name = schemaName(key, variant);
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
lines.push(
|
|
81
|
+
const objectActions = docs ? [`v.title(${JSON.stringify(variantTitle(docs, variant))})`, ...docs.description === void 0 ? [] : [`v.description(${JSON.stringify(docs.description)})`]] : [];
|
|
82
|
+
lines.push(`export const ${name}: v.GenericSchema<${variant}Of<'${key}'>> = ${objectActions.length > 0 ? "v.pipe(" : ""}v.object({`);
|
|
83
|
+
for (const plan of fieldsFor(table, variant, input)) lines.push(field$1(key, plan, jsonImports, fieldDocs(docs, plan)));
|
|
84
|
+
lines.push(objectActions.length > 0 ? `}), ${objectActions.join(", ")});` : "});");
|
|
62
85
|
}
|
|
63
86
|
if (variants.includes("Insert")) {
|
|
64
87
|
const insert = schemaName(key, "Insert");
|
|
@@ -86,8 +109,8 @@ function scalar(kind) {
|
|
|
86
109
|
case "boolean": return "z.boolean()";
|
|
87
110
|
case "datetime": return "z.iso.datetime({ offset: true })";
|
|
88
111
|
case "date": return "z.iso.date()";
|
|
89
|
-
case "instant": return "z.
|
|
90
|
-
case "plainDateTime": return "z.
|
|
112
|
+
case "instant": return "z.custom<Temporal.Instant>(isInstant)";
|
|
113
|
+
case "plainDateTime": return "z.custom<Temporal.PlainDateTime>(isPlainDateTime)";
|
|
91
114
|
case "bigint": return "z.bigint()";
|
|
92
115
|
case "json": return "z.json()";
|
|
93
116
|
case "enum": return `z.enum([${kind.values.map((value) => JSON.stringify(value)).join(", ")}])`;
|
|
@@ -95,16 +118,36 @@ function scalar(kind) {
|
|
|
95
118
|
default: return kind;
|
|
96
119
|
}
|
|
97
120
|
}
|
|
98
|
-
function
|
|
99
|
-
|
|
121
|
+
function bounds(docs) {
|
|
122
|
+
return [
|
|
123
|
+
docs.minimum === void 0 ? "" : `.min(${docs.minimum})`,
|
|
124
|
+
docs.exclusiveMinimum === void 0 ? "" : `.gt(${docs.exclusiveMinimum})`,
|
|
125
|
+
docs.maximum === void 0 ? "" : `.max(${docs.maximum})`,
|
|
126
|
+
docs.exclusiveMaximum === void 0 ? "" : `.lt(${docs.exclusiveMaximum})`,
|
|
127
|
+
docs.minLength === void 0 ? "" : `.min(${docs.minLength})`,
|
|
128
|
+
docs.maxLength === void 0 ? "" : `.max(${docs.maxLength})`
|
|
129
|
+
].join("");
|
|
130
|
+
}
|
|
131
|
+
/** `.meta({ ... })` for the entries that are set, or nothing. */
|
|
132
|
+
function meta(entries) {
|
|
133
|
+
const set = Object.entries(entries).filter(([, value]) => value !== void 0);
|
|
134
|
+
return set.length === 0 ? "" : `.meta({ ${set.map(([key, value]) => `${key}: ${JSON.stringify(value)}`).join(", ")} })`;
|
|
135
|
+
}
|
|
136
|
+
function field(table, plan, jsonImports, docs) {
|
|
137
|
+
let expr = jsonImports.get(`${table}.${plan.column.db}`) ?? (plan.customJson ? `z.custom<NonNullable<RowOf<'${table}'>['${plan.name}']>>((value) => value !== undefined)` : plan.column.storage === void 0 ? `${scalar(plan.scalar)}${bounds(docs)}` : `(z.string() as unknown as z.ZodType<${rowType(table, plan)}>)`);
|
|
100
138
|
if (plan.column.array) expr = `z.array(${expr})`;
|
|
101
139
|
if (plan.nullable) expr = `${expr}.nullable()`;
|
|
140
|
+
expr += meta({
|
|
141
|
+
description: docs.description,
|
|
142
|
+
examples: docs.examples
|
|
143
|
+
});
|
|
102
144
|
if (plan.optional) expr = `${expr}.exactOptional()`;
|
|
103
145
|
return ` ${propertyKey(plan.name)}: ${expr},`;
|
|
104
146
|
}
|
|
105
147
|
/** Zod 4 schemas for every table's Row, Insert and Update shape. */
|
|
106
148
|
function zod(options = {}) {
|
|
107
149
|
return {
|
|
150
|
+
apiVersion: 1,
|
|
108
151
|
name: "zod",
|
|
109
152
|
generate(input) {
|
|
110
153
|
const path = options.output ?? siblingPath(input.config.output, "zod.ts");
|
|
@@ -121,6 +164,7 @@ function zod(options = {}) {
|
|
|
121
164
|
const lines = [
|
|
122
165
|
HEADER,
|
|
123
166
|
"import { z } from \"zod\";",
|
|
167
|
+
...optionalLine(temporalGuardImport(input)),
|
|
124
168
|
"",
|
|
125
169
|
`import type { InsertOf, RowOf, UpdateOf } from ${JSON.stringify(input.importPath(path, input.config.output))};`
|
|
126
170
|
];
|
|
@@ -129,11 +173,15 @@ function zod(options = {}) {
|
|
|
129
173
|
for (const [key, table] of tableEntries(input)) {
|
|
130
174
|
lines.push("");
|
|
131
175
|
const variants = variantsFor(table);
|
|
176
|
+
const docs = tableDocs(input, table);
|
|
132
177
|
for (const variant of variants) {
|
|
133
178
|
const name = schemaName(key, variant);
|
|
134
179
|
lines.push(`export const ${name}: z.ZodType<${variant}Of<'${key}'>> = z.object({`);
|
|
135
|
-
for (const plan of fieldsFor(table, variant, input)) lines.push(field(key, plan, jsonImports));
|
|
136
|
-
lines.push(
|
|
180
|
+
for (const plan of fieldsFor(table, variant, input)) lines.push(field(key, plan, jsonImports, fieldDocs(docs, plan)));
|
|
181
|
+
lines.push(`})${docs ? meta({
|
|
182
|
+
title: variantTitle(docs, variant),
|
|
183
|
+
description: docs.description
|
|
184
|
+
}) : ""};`);
|
|
137
185
|
}
|
|
138
186
|
if (variants.includes("Insert")) validators.push(` ${propertyKey(key)}: { insert: ${schemaName(key, "Insert")}, update: ${schemaName(key, "Update")} },`);
|
|
139
187
|
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { b as DbError, f as Result, x as DbErrorKind } from "./result-D7y2fT87.js";
|
|
2
|
+
//#region src/powersync/connector.d.ts
|
|
3
|
+
/** A queued local change: PowerSync's `CrudEntry`. */
|
|
4
|
+
interface CrudEntryLike {
|
|
5
|
+
/** `PUT`, `PATCH` or `DELETE` (PowerSync's `UpdateType`). */
|
|
6
|
+
readonly op: string;
|
|
7
|
+
readonly table: string;
|
|
8
|
+
readonly id: string;
|
|
9
|
+
readonly opData?: Readonly<Record<string, unknown>> | undefined;
|
|
10
|
+
}
|
|
11
|
+
/** The part of a PowerSync database the connector reads the queue from. */
|
|
12
|
+
interface CrudQueueLike {
|
|
13
|
+
getCrudBatch(limit?: number): Promise<{
|
|
14
|
+
readonly crud: readonly CrudEntryLike[];
|
|
15
|
+
complete(): Promise<void>;
|
|
16
|
+
} | null>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* A repository a table's changes replay through (`bs.db.customers`), so
|
|
20
|
+
* RLS, plugins and validation run as they do online.
|
|
21
|
+
*/
|
|
22
|
+
interface UploadRepository {
|
|
23
|
+
upsert(data: never): PromiseLike<Result<unknown>>;
|
|
24
|
+
update(id: never, patch: never): PromiseLike<Result<unknown>>;
|
|
25
|
+
delete(id: never): PromiseLike<Result<unknown>>;
|
|
26
|
+
}
|
|
27
|
+
/** A table's route: its repository, or a function for custom replay. */
|
|
28
|
+
type UploadRoute = UploadRepository | ((entry: CrudEntryLike) => PromiseLike<Result<unknown>>);
|
|
29
|
+
/** What an upload error means for the queued change. */
|
|
30
|
+
type UploadOutcome = "retry" | "conflict" | "discard";
|
|
31
|
+
/** A change the server refused, kept for the UI. */
|
|
32
|
+
interface RejectedChange {
|
|
33
|
+
readonly entry: CrudEntryLike;
|
|
34
|
+
readonly error: DbError;
|
|
35
|
+
readonly outcome: "conflict" | "discard";
|
|
36
|
+
}
|
|
37
|
+
/** A `useSyncExternalStore`-compatible list of refused changes. */
|
|
38
|
+
interface RejectedStore {
|
|
39
|
+
readonly current: () => readonly RejectedChange[];
|
|
40
|
+
readonly subscribe: (listener: () => void) => () => void;
|
|
41
|
+
/** Forgets one change, or all of them. */
|
|
42
|
+
readonly dismiss: (change?: RejectedChange) => void;
|
|
43
|
+
}
|
|
44
|
+
interface SessionClient {
|
|
45
|
+
readonly auth: {
|
|
46
|
+
getSession(): Promise<{
|
|
47
|
+
readonly data: {
|
|
48
|
+
readonly session: {
|
|
49
|
+
readonly access_token: string;
|
|
50
|
+
readonly expires_at?: number | undefined;
|
|
51
|
+
} | null;
|
|
52
|
+
};
|
|
53
|
+
}>;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
interface UploadConnectorOptions {
|
|
57
|
+
/** The PowerSync service URL. */
|
|
58
|
+
readonly endpoint: string;
|
|
59
|
+
/** The supabase-js client whose session authenticates sync and uploads. */
|
|
60
|
+
readonly supabase: SessionClient;
|
|
61
|
+
/** Every synced table that takes local writes, by its SQLite name. */
|
|
62
|
+
readonly tables: Readonly<Record<string, UploadRoute>>;
|
|
63
|
+
/** Changes per upload batch. Defaults to 100. */
|
|
64
|
+
readonly batchSize?: number;
|
|
65
|
+
/** Overrides `uploadOutcome` for some errors. */
|
|
66
|
+
readonly classify?: (error: DbError, entry: CrudEntryLike) => UploadOutcome | undefined;
|
|
67
|
+
readonly onConflict?: (change: RejectedChange) => void;
|
|
68
|
+
readonly onDiscard?: (change: RejectedChange) => void;
|
|
69
|
+
}
|
|
70
|
+
/** PowerSync's `PowerSyncBackendConnector`. */
|
|
71
|
+
interface UploadConnector {
|
|
72
|
+
fetchCredentials(): Promise<{
|
|
73
|
+
readonly endpoint: string;
|
|
74
|
+
readonly token: string;
|
|
75
|
+
readonly expiresAt?: Date;
|
|
76
|
+
} | null>;
|
|
77
|
+
uploadData(database: CrudQueueLike): Promise<void>;
|
|
78
|
+
/** Changes the server refused since the app started. */
|
|
79
|
+
readonly rejected: RejectedStore;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* The default for a failed upload: transient errors retry, a newer server
|
|
83
|
+
* row is a conflict, and a change the server will never accept is
|
|
84
|
+
* discarded so it doesn't block the queue.
|
|
85
|
+
*/
|
|
86
|
+
declare function uploadOutcome(kind: DbErrorKind): UploadOutcome;
|
|
87
|
+
/**
|
|
88
|
+
* A PowerSync connector that authenticates with the Supabase session and
|
|
89
|
+
* replays queued changes through repositories. Changes upload in batches;
|
|
90
|
+
* a transient error keeps the batch queued for PowerSync's retry, and
|
|
91
|
+
* refused changes land in `rejected` instead of blocking the queue. A table
|
|
92
|
+
* without a route stops the upload with an error, so no change is dropped
|
|
93
|
+
* silently. When the session is gone (the refresh token was revoked), the
|
|
94
|
+
* upload stops until the user signs in again.
|
|
95
|
+
*
|
|
96
|
+
* ```ts
|
|
97
|
+
* const connector = createUploadConnector({
|
|
98
|
+
* endpoint: process.env.EXPO_PUBLIC_POWERSYNC_URL,
|
|
99
|
+
* supabase,
|
|
100
|
+
* tables: { customers: bs.db.customers },
|
|
101
|
+
* });
|
|
102
|
+
* await powersync.connect(connector);
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
declare function createUploadConnector(options: UploadConnectorOptions): UploadConnector;
|
|
106
|
+
//#endregion
|
|
107
|
+
export { UploadConnector as a, UploadRepository as c, uploadOutcome as d, RejectedStore as i, UploadRoute as l, CrudQueueLike as n, UploadConnectorOptions as o, RejectedChange as r, UploadOutcome as s, CrudEntryLike as t, createUploadConnector as u };
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/// <reference lib="esnext.temporal" />
|
|
2
|
+
import { t as AsyncResult, w as ErrorMapper } from "./result-D7y2fT87.js";
|
|
3
|
+
import { t as BlockTransport } from "./block-transport-DvaoPuZ9.js";
|
|
4
|
+
import { i as CredentialRef, r as CredentialProvider } from "./provider-BH5UWZJ6.js";
|
|
5
|
+
import { r as BlockTemporalOptions } from "./block-helpers-CKtbFcRv.js";
|
|
6
|
+
//#region src/blocks/connectors/connectors.d.ts
|
|
7
|
+
type ConnectorTransport = "http" | "sse";
|
|
8
|
+
/** `none`, OAuth per user (a grant each), or a header from the server's credential_ref. */
|
|
9
|
+
type ConnectorAuth = "none" | "oauth" | "header";
|
|
10
|
+
type FingerprintStatus = "approved" | "pending" | "rejected";
|
|
11
|
+
interface ConnectorGrant {
|
|
12
|
+
readonly id: string;
|
|
13
|
+
readonly userId: string;
|
|
14
|
+
readonly serverId: string;
|
|
15
|
+
readonly organizationId: string;
|
|
16
|
+
readonly credentialRef: CredentialRef;
|
|
17
|
+
readonly scopes: readonly string[];
|
|
18
|
+
readonly expiresAt: Temporal.Instant | undefined;
|
|
19
|
+
readonly grantedAt: Temporal.Instant;
|
|
20
|
+
readonly revokedAt: Temporal.Instant | undefined;
|
|
21
|
+
}
|
|
22
|
+
interface ConnectorServer {
|
|
23
|
+
readonly id: string;
|
|
24
|
+
readonly organizationId: string;
|
|
25
|
+
readonly name: string;
|
|
26
|
+
readonly url: string;
|
|
27
|
+
readonly transport: ConnectorTransport;
|
|
28
|
+
readonly authType: ConnectorAuth;
|
|
29
|
+
/** For `header` auth: the app credential sent with every request. */
|
|
30
|
+
readonly credentialRef: CredentialRef | undefined;
|
|
31
|
+
/** The OAuth scopes to ask for. */
|
|
32
|
+
readonly scopes: readonly string[];
|
|
33
|
+
/** OAuth client metadata for dynamic client registration. */
|
|
34
|
+
readonly clientMetadata: Readonly<Record<string, unknown>>;
|
|
35
|
+
readonly enabled: boolean;
|
|
36
|
+
/** The caller's (or `ownerId`'s) active grant, from `list` and `get`. */
|
|
37
|
+
readonly grant: ConnectorGrant | undefined;
|
|
38
|
+
readonly createdAt: Temporal.Instant;
|
|
39
|
+
readonly updatedAt: Temporal.Instant;
|
|
40
|
+
}
|
|
41
|
+
interface ConnectorServerFields {
|
|
42
|
+
readonly name?: string;
|
|
43
|
+
readonly url?: string;
|
|
44
|
+
readonly transport?: ConnectorTransport;
|
|
45
|
+
readonly authType?: ConnectorAuth;
|
|
46
|
+
readonly credentialRef?: CredentialRef | null;
|
|
47
|
+
readonly scopes?: readonly string[];
|
|
48
|
+
readonly clientMetadata?: Readonly<Record<string, unknown>>;
|
|
49
|
+
readonly enabled?: boolean;
|
|
50
|
+
}
|
|
51
|
+
interface ConnectorSession {
|
|
52
|
+
readonly sessionId: string | undefined;
|
|
53
|
+
readonly initializeResult: Readonly<Record<string, unknown>> | undefined;
|
|
54
|
+
readonly expiresAt: Temporal.Instant;
|
|
55
|
+
}
|
|
56
|
+
interface ConnectorsOptions extends BlockTemporalOptions {
|
|
57
|
+
/** Calls as the user: `rpcTransport(supabase)`. */
|
|
58
|
+
readonly transport: BlockTransport;
|
|
59
|
+
/** Calls as the service role, for grants and renewals. */
|
|
60
|
+
readonly service?: BlockTransport;
|
|
61
|
+
/** The module schema (`sql.modules.connectors.schema`), default `better_supabase`. */
|
|
62
|
+
readonly schema?: string;
|
|
63
|
+
readonly mappers?: readonly ErrorMapper[];
|
|
64
|
+
/** Revokes a grant's credential when the grant or its server goes away. */
|
|
65
|
+
readonly credentials?: CredentialProvider;
|
|
66
|
+
}
|
|
67
|
+
interface Connectors {
|
|
68
|
+
readonly servers: {
|
|
69
|
+
list(organizationId: string): AsyncResult<readonly ConnectorServer[]>;
|
|
70
|
+
/** With `ownerId` (service role), the grant is that user's. */
|
|
71
|
+
get(serverId: string, options?: {
|
|
72
|
+
readonly ownerId?: string;
|
|
73
|
+
}): AsyncResult<ConnectorServer>;
|
|
74
|
+
create(organizationId: string, server: ConnectorServerFields & {
|
|
75
|
+
readonly name: string;
|
|
76
|
+
readonly url: string;
|
|
77
|
+
}): AsyncResult<ConnectorServer>;
|
|
78
|
+
update(organizationId: string, serverId: string, fields: ConnectorServerFields): AsyncResult<ConnectorServer>;
|
|
79
|
+
/** Deletes a server and revokes its grants' credentials. Returns how many. */
|
|
80
|
+
remove(serverId: string): AsyncResult<number>;
|
|
81
|
+
};
|
|
82
|
+
readonly grants: {
|
|
83
|
+
/**
|
|
84
|
+
* Records a user's grant after the provider stored the credential
|
|
85
|
+
* (service role), revoking the grant it replaces.
|
|
86
|
+
*/
|
|
87
|
+
record(serverId: string, userId: string, credentialRef: CredentialRef, options?: {
|
|
88
|
+
readonly scopes?: readonly string[];
|
|
89
|
+
readonly expiresAt?: Temporal.Instant;
|
|
90
|
+
}): AsyncResult<ConnectorGrant>;
|
|
91
|
+
/** Revokes a grant (its owner or the service role) and its credential. */
|
|
92
|
+
revoke(grantId: string): AsyncResult<boolean>;
|
|
93
|
+
/** Active grants expiring before `before` (service role). */
|
|
94
|
+
expiring(before: Temporal.Instant, options?: {
|
|
95
|
+
readonly limit?: number;
|
|
96
|
+
}): AsyncResult<readonly ConnectorGrant[]>;
|
|
97
|
+
renew(grantId: string, expiresAt: Temporal.Instant): AsyncResult<boolean>;
|
|
98
|
+
};
|
|
99
|
+
readonly sessions: {
|
|
100
|
+
get(serverId: string, chatKey?: string): AsyncResult<ConnectorSession | undefined>;
|
|
101
|
+
save(serverId: string, session: {
|
|
102
|
+
readonly chatKey?: string;
|
|
103
|
+
readonly sessionId?: string;
|
|
104
|
+
readonly initializeResult?: Readonly<Record<string, unknown>>;
|
|
105
|
+
}): AsyncResult<boolean>;
|
|
106
|
+
forget(serverId: string, chatKey?: string): AsyncResult<boolean>;
|
|
107
|
+
/** Deletes expired sessions (service role). */
|
|
108
|
+
purge(): AsyncResult<number>;
|
|
109
|
+
};
|
|
110
|
+
readonly fingerprints: {
|
|
111
|
+
/** Records a tool list's fingerprint and returns whether it may be called. */
|
|
112
|
+
check(serverId: string, fingerprint: string, tools?: Readonly<Record<string, unknown>>): AsyncResult<FingerprintStatus>;
|
|
113
|
+
approve(serverId: string, fingerprint: string): AsyncResult<boolean>;
|
|
114
|
+
reject(serverId: string, fingerprint: string): AsyncResult<boolean>;
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/** MCP servers, per-user grants, sessions and tool list fingerprints. */
|
|
118
|
+
declare function createConnectors(options: ConnectorsOptions): Connectors;
|
|
119
|
+
//#endregion
|
|
120
|
+
export { ConnectorSession as a, ConnectorsOptions as c, ConnectorServerFields as i, FingerprintStatus as l, ConnectorGrant as n, ConnectorTransport as o, ConnectorServer as r, Connectors as s, ConnectorAuth as t, createConnectors as u };
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { u as ClaimsMeta } from "./types-6BdhkmZe.js";
|
|
2
|
+
import { C as BlockEventMap, E as BlockEventType } from "./events-DWDhx77e.js";
|
|
3
|
+
import { c as ResolvedModule, o as ModuleMode, s as ModulesConfig } from "./modules-DpPwzC7E.js";
|
|
4
|
+
//#region src/sql/context.d.ts
|
|
5
|
+
/** The scope id types SQL modules render. */
|
|
6
|
+
declare const MODULE_ID_TYPES: readonly ["uuid", "text", "bigint", "integer"];
|
|
7
|
+
type ModuleIdType = (typeof MODULE_ID_TYPES)[number];
|
|
8
|
+
declare const isModuleIdType: (value: string) => value is ModuleIdType;
|
|
9
|
+
/**
|
|
10
|
+
* A Postgres type name as one of `MODULE_ID_TYPES`: case and spacing are
|
|
11
|
+
* normalised and aliases such as `int8` resolved. `undefined` for any other
|
|
12
|
+
* type, so callers refuse it instead of guessing.
|
|
13
|
+
*/
|
|
14
|
+
declare function moduleIdType(value: string): ModuleIdType | undefined;
|
|
15
|
+
/** One logical table of a module: its default name and logical columns. */
|
|
16
|
+
interface ModuleTableSpec {
|
|
17
|
+
/** Default name, in the module's schema. */
|
|
18
|
+
readonly name: string;
|
|
19
|
+
/** Logical column to default column name. */
|
|
20
|
+
readonly columns: Readonly<Record<string, string>>;
|
|
21
|
+
/**
|
|
22
|
+
* Logical columns an adopted table may lack (mapped to `null`): the module
|
|
23
|
+
* leaves out the feature that needs them.
|
|
24
|
+
*/
|
|
25
|
+
readonly optional?: readonly string[];
|
|
26
|
+
/** The app may lack the whole table (`sql.modules.<name>.tables.<table>: null`). */
|
|
27
|
+
readonly optionalTable?: boolean;
|
|
28
|
+
readonly lifecycle?: ModuleTableLifecycle;
|
|
29
|
+
}
|
|
30
|
+
interface ModuleTableLifecycle {
|
|
31
|
+
readonly user?: string;
|
|
32
|
+
readonly tenant?: string;
|
|
33
|
+
readonly purge?: boolean;
|
|
34
|
+
readonly omit?: readonly string[];
|
|
35
|
+
readonly export?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Columns that hold a `credential_ref`. Exports leave them out, and the
|
|
38
|
+
* organization purger revokes each ref that carries the row's tenant
|
|
39
|
+
* through the `CredentialProvider` before the purge deletes the row.
|
|
40
|
+
*/
|
|
41
|
+
readonly credentials?: readonly string[];
|
|
42
|
+
/** Revoke for the row's `user` instead of the app. Default `app`. */
|
|
43
|
+
readonly credentialSubject?: "app" | "user";
|
|
44
|
+
}
|
|
45
|
+
interface ModuleNames {
|
|
46
|
+
readonly tables: Readonly<Record<string, ModuleTableSpec>>;
|
|
47
|
+
/** The `before_*` and `after_*` hooks the module calls, so `sql.modules.<name>.hooks.functions` is checked. */
|
|
48
|
+
readonly hooks?: readonly string[];
|
|
49
|
+
/** The `sql.modules.<name>.options` keys the module reads; any other key is rejected. */
|
|
50
|
+
readonly options?: readonly string[];
|
|
51
|
+
/** The events the module records; `record` rejects any other type. */
|
|
52
|
+
readonly events?: ModuleEvents;
|
|
53
|
+
}
|
|
54
|
+
/** An event in a module's catalog, checked against what `record` renders. */
|
|
55
|
+
interface ModuleEventSpec<K extends BlockEventType = BlockEventType> {
|
|
56
|
+
/** The kebab-case collection every subject starts with, e.g. `organizations`. */
|
|
57
|
+
readonly subject: string;
|
|
58
|
+
/** The payload keys, all of them in the event's `BlockEventMap` data. */
|
|
59
|
+
readonly payload: readonly PayloadKey<K>[];
|
|
60
|
+
/** A job, a webhook or an engine may call the writer again, so the event needs a `key`. */
|
|
61
|
+
readonly retries?: boolean;
|
|
62
|
+
}
|
|
63
|
+
type PayloadKey<K extends BlockEventType> = K extends BlockEventType ? keyof BlockEventMap[K] & string : never;
|
|
64
|
+
type ModuleEvents = { readonly [K in BlockEventType]?: ModuleEventSpec<K>; };
|
|
65
|
+
/** An event a module writes to the outbox, as SQL expressions. */
|
|
66
|
+
interface ModuleEmit {
|
|
67
|
+
/** The event type, e.g. `organization.created`. */
|
|
68
|
+
readonly type: string;
|
|
69
|
+
/** A `jsonb` expression. */
|
|
70
|
+
readonly payload: string;
|
|
71
|
+
/** A `text` expression, e.g. `'organizations/' || new_organization`. */
|
|
72
|
+
readonly subject?: string;
|
|
73
|
+
/** The tenant id expression; it is cast to text. */
|
|
74
|
+
readonly tenant?: string;
|
|
75
|
+
/** A `text` idempotency key expression. */
|
|
76
|
+
readonly key?: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* The categories module actions are audited under. An adopted log with its
|
|
80
|
+
* own names maps them through `sql.modules.audit.options.values.category`.
|
|
81
|
+
*/
|
|
82
|
+
declare const AUDIT_CATEGORIES: readonly ["membership", "access", "security", "configuration", "billing", "data", "ai", "integration"];
|
|
83
|
+
type AuditCategory = (typeof AUDIT_CATEGORIES)[number];
|
|
84
|
+
/** How `record` writes an action to the audit log, as SQL expressions. */
|
|
85
|
+
interface ModuleAudit {
|
|
86
|
+
/** The audit category, mapped through `sql.modules.audit.options.values`. */
|
|
87
|
+
readonly category: AuditCategory;
|
|
88
|
+
/** What the action changed, e.g. `user` or `api_key`. */
|
|
89
|
+
readonly targetType?: string;
|
|
90
|
+
/** A `text` expression for the changed record's id. */
|
|
91
|
+
readonly recordId?: string;
|
|
92
|
+
/** A `text` expression people recognize the target by. */
|
|
93
|
+
readonly targetLabel?: string;
|
|
94
|
+
/** A `text` expression that says what happened. */
|
|
95
|
+
readonly summary?: string;
|
|
96
|
+
/** A `jsonb` expression; defaults to the event payload. */
|
|
97
|
+
readonly metadata?: string;
|
|
98
|
+
/** A `uuid` expression for the actor; defaults to the caller. */
|
|
99
|
+
readonly actor?: string;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* An action a module records once: the outbox gets it as an event and the
|
|
103
|
+
* audit log as an entry, each when its module is installed.
|
|
104
|
+
*/
|
|
105
|
+
interface ModuleAction extends ModuleEmit {
|
|
106
|
+
/**
|
|
107
|
+
* How the action is audited, or `false` for an event that is not an
|
|
108
|
+
* audited action, such as a chat message or a run status.
|
|
109
|
+
*/
|
|
110
|
+
readonly audit: ModuleAudit | false;
|
|
111
|
+
}
|
|
112
|
+
/** A function of a module's contract: what other modules and the TypeScript side call. */
|
|
113
|
+
interface ModuleContractFunction {
|
|
114
|
+
readonly name: string;
|
|
115
|
+
/** Argument types; `{id}` stands for the module's id type. */
|
|
116
|
+
readonly args: readonly string[];
|
|
117
|
+
readonly returns: string;
|
|
118
|
+
}
|
|
119
|
+
/** What a module's `build` reads: resolved names for one layout. */
|
|
120
|
+
interface ModuleContext {
|
|
121
|
+
readonly module: string;
|
|
122
|
+
readonly mode: ModuleMode;
|
|
123
|
+
readonly config: ResolvedModule;
|
|
124
|
+
/** The quoted schema of the module's functions and managed tables. */
|
|
125
|
+
readonly schema: string;
|
|
126
|
+
readonly schemaName: string;
|
|
127
|
+
readonly idType: ModuleIdType;
|
|
128
|
+
readonly claims: ClaimsMeta;
|
|
129
|
+
readonly modules: ModulesConfig;
|
|
130
|
+
/** `schema.name` of a module function, quoted. */
|
|
131
|
+
fn(name: string): string;
|
|
132
|
+
/** `schema.table` of a logical table, quoted. */
|
|
133
|
+
table(logical: string): string;
|
|
134
|
+
/** The unquoted schema and name of a logical table. */
|
|
135
|
+
tableName(logical: string): {
|
|
136
|
+
readonly schema: string;
|
|
137
|
+
readonly name: string;
|
|
138
|
+
};
|
|
139
|
+
/** A logical column, quoted. Throws when an adopted table lacks it. */
|
|
140
|
+
col(table: string, column: string): string;
|
|
141
|
+
/** Whether a logical column exists (adopted tables can map it to `null`). */
|
|
142
|
+
has(table: string, column: string): boolean;
|
|
143
|
+
/** Whether an optional logical table exists (it can be mapped to `null`). */
|
|
144
|
+
hasTable(table: string): boolean;
|
|
145
|
+
/** Whether the module owns `table` (managed mode). */
|
|
146
|
+
readonly manages: boolean;
|
|
147
|
+
readonly names: ModuleNames;
|
|
148
|
+
readonly installedModules: readonly string[];
|
|
149
|
+
/** The permission key for a module action, as a SQL literal. */
|
|
150
|
+
permission(action: string, fallback: string): string;
|
|
151
|
+
/** The permission key for a module action. */
|
|
152
|
+
permissionKey(action: string, fallback: string): string;
|
|
153
|
+
/** A trigger name with the module's prefix, quoted. */
|
|
154
|
+
trigger(name: string): string;
|
|
155
|
+
/** Whether `module` is installed alongside this one. */
|
|
156
|
+
installed(module: string): boolean;
|
|
157
|
+
/** The context of another module in the same layout. */
|
|
158
|
+
of(module: string): ModuleContext;
|
|
159
|
+
/** A string module option (`sql.modules.<name>.options`). */
|
|
160
|
+
text(name: string, fallback: string): string;
|
|
161
|
+
number(name: string, fallback: number): number;
|
|
162
|
+
flag(name: string, fallback: boolean): boolean;
|
|
163
|
+
/** A module option that is a list of strings. */
|
|
164
|
+
list(name: string, fallback: readonly string[]): readonly string[];
|
|
165
|
+
/** A declared module option as configured, for object-shaped options. */
|
|
166
|
+
option(name: string): unknown;
|
|
167
|
+
/**
|
|
168
|
+
* `options.extraColumns` (column name to SQL type), checked: names are
|
|
169
|
+
* lower-case identifiers, types are SQL types, and no name shadows one of
|
|
170
|
+
* `table`'s mapped columns or a key in `reserved`, the stable keys the
|
|
171
|
+
* module's read functions return next to them.
|
|
172
|
+
*/
|
|
173
|
+
extraColumns(table: string, reserved?: readonly string[]): readonly ExtraColumn[];
|
|
174
|
+
/**
|
|
175
|
+
* PL/pgSQL that calls the app's hook function when it exists, with
|
|
176
|
+
* `[type, expression]` arguments: `if to_regprocedure(...) is not null
|
|
177
|
+
* then execute format(...) using ...; end if;`. The name comes from
|
|
178
|
+
* `to_regprocedure` rather than a literal: plpgsql_check (`supabase db
|
|
179
|
+
* lint`) checks constant dynamic SQL and fails when the hook is missing.
|
|
180
|
+
*/
|
|
181
|
+
hook(name: string, args: readonly (readonly [string, string])[]): string;
|
|
182
|
+
/** The app function a hook calls, quoted, for hooks that return a value. */
|
|
183
|
+
hookTarget(name: string): string;
|
|
184
|
+
/**
|
|
185
|
+
* PL/pgSQL that writes the event to the outbox (`emit_event`) when the
|
|
186
|
+
* `outbox` module is installed and `sql.modules.<name>.events` isn't false;
|
|
187
|
+
* otherwise an empty string. `record` without the audit entry.
|
|
188
|
+
*/
|
|
189
|
+
emit(event: ModuleEmit): string;
|
|
190
|
+
/**
|
|
191
|
+
* PL/pgSQL that writes the action to the outbox (as `emit` does) and, when
|
|
192
|
+
* it carries `audit` and the `audit` module is installed, to the audit log
|
|
193
|
+
* (`audit_event`), with `key` as the idempotency key of both. `null;`
|
|
194
|
+
* when neither applies, so it is always a valid statement.
|
|
195
|
+
*/
|
|
196
|
+
record(action: ModuleAction): string;
|
|
197
|
+
/**
|
|
198
|
+
* PL/pgSQL that calls `notify(fields)` as the service role, which
|
|
199
|
+
* `notify()` requires, then restores the caller's claims. The function
|
|
200
|
+
* declares `v_claims text`. `null;` without the `notifications` module.
|
|
201
|
+
*/
|
|
202
|
+
notify(fields: string, options?: {
|
|
203
|
+
readonly indent?: string;
|
|
204
|
+
}): string;
|
|
205
|
+
/** PL/pgSQL that enqueues a job (`enqueue_job`); `null;` without the `jobs` module. */
|
|
206
|
+
enqueue(queue: string, payload: string, dedupe: string): string;
|
|
207
|
+
/** The `text[]` of a tenant's entitlements, or `fallback` without the `entitlements` module. */
|
|
208
|
+
entitlements(tenant: string): string | undefined;
|
|
209
|
+
entitlements(tenant: string, fallback: string): string;
|
|
210
|
+
/**
|
|
211
|
+
* PL/pgSQL that broadcasts on a Realtime topic when `realtime.send`
|
|
212
|
+
* exists: projects without Realtime skip it.
|
|
213
|
+
*/
|
|
214
|
+
broadcast(topic: string, event: string, payload: string, options?: {
|
|
215
|
+
readonly indent?: string;
|
|
216
|
+
}): string;
|
|
217
|
+
/** `coalesce(better_supabase.can(scope, id, permission), false)`; `permission` is a SQL expression. */
|
|
218
|
+
can(scope: string, id: string, permission: string): string;
|
|
219
|
+
/**
|
|
220
|
+
* True for the service role and platform staff holding `permission` (a SQL
|
|
221
|
+
* expression); the service role only without the `access` module.
|
|
222
|
+
*/
|
|
223
|
+
staff(permission: string): string;
|
|
224
|
+
}
|
|
225
|
+
/** A column from `options.extraColumns`. */
|
|
226
|
+
interface ExtraColumn {
|
|
227
|
+
/** The column name, as reads return it. */
|
|
228
|
+
readonly name: string;
|
|
229
|
+
/** The name, quoted. */
|
|
230
|
+
readonly ident: string;
|
|
231
|
+
/** Its SQL type, such as `text not null default 'en'`. */
|
|
232
|
+
readonly type: string;
|
|
233
|
+
}
|
|
234
|
+
/** The contract's argument list with `{id}` resolved, as Postgres prints it. */
|
|
235
|
+
declare function contractSignature(fn: ModuleContractFunction, idType: string): string;
|
|
236
|
+
//#endregion
|
|
237
|
+
export { ModuleAudit as a, ModuleEmit as c, ModuleTableSpec as d, contractSignature as f, ModuleAction as i, ModuleIdType as l, moduleIdType as m, AuditCategory as n, ModuleContext as o, isModuleIdType as p, MODULE_ID_TYPES as r, ModuleContractFunction as s, AUDIT_CATEGORIES as t, ModuleNames as u };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { t as AsyncResult } from "../result-D7y2fT87.js";
|
|
2
|
+
import { i as sqlTransport, r as rpcTransport, t as BlockTransport } from "../block-transport-DvaoPuZ9.js";
|
|
3
|
+
import { a as CredentialSubject, c as SetCredentialOptions, d as foreignCredentialRef, f as subjectFor, i as CredentialRef, l as StartAuthorizationOptions, n as CredentialCapabilities, o as CredentialToken, p as tenantCredentialRef, r as CredentialProvider, s as GetTokenOptions, t as CompleteAuthorizationOptions, u as credentialRefInTenant } from "../provider-BH5UWZJ6.js";
|
|
4
|
+
import { a as vaultCredentials, i as VaultInboundScheme, n as VaultCredentials, r as VaultCredentialsOptions, t as VaultCredentialRef } from "../vault-CSO7ss5C.js";
|
|
5
|
+
//#region src/credentials/compose.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* One provider over several: each call goes to the provider whose `name`
|
|
8
|
+
* is the ref's `provider`. A ref no provider handles fails with
|
|
9
|
+
* `invalid_input` (`CREDENTIAL_PROVIDER_UNKNOWN`), and an optional method
|
|
10
|
+
* the chosen provider lacks with `unsupported`.
|
|
11
|
+
*/
|
|
12
|
+
export declare function credentialRouter(providers: readonly CredentialProvider[], options?: {
|
|
13
|
+
readonly name?: string;
|
|
14
|
+
}): CredentialProvider;
|
|
15
|
+
interface RevokeIfConfiguredOptions {
|
|
16
|
+
readonly subject: CredentialSubject;
|
|
17
|
+
/**
|
|
18
|
+
* The tenant of the row that holds the ref, or `undefined` for an
|
|
19
|
+
* app-level row. When the key is present, a ref outside that tenant is
|
|
20
|
+
* left alone, so a row can never revoke another tenant's credential.
|
|
21
|
+
*/
|
|
22
|
+
readonly tenant?: string | undefined;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Revokes the credential a ref names when a provider is configured and can
|
|
26
|
+
* revoke it. Resolves `false` without a provider, for a provider without
|
|
27
|
+
* revocation, or for a ref outside `options.tenant`.
|
|
28
|
+
*/
|
|
29
|
+
export declare function revokeIfConfigured(provider: CredentialProvider | undefined, ref: CredentialRef, options: RevokeIfConfiguredOptions): AsyncResult<boolean>;
|
|
30
|
+
//#endregion
|
|
31
|
+
export { type BlockTransport, type CompleteAuthorizationOptions, type CredentialCapabilities, type CredentialProvider, type CredentialRef, type CredentialSubject, type CredentialToken, type GetTokenOptions, type RevokeIfConfiguredOptions, type SetCredentialOptions, type StartAuthorizationOptions, type VaultCredentialRef, type VaultCredentials, type VaultCredentialsOptions, type VaultInboundScheme, credentialRefInTenant, foreignCredentialRef, rpcTransport, sqlTransport, subjectFor, tenantCredentialRef, vaultCredentials };
|