better-supabase 0.5.1 → 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 +187 -46
- package/dist/access-sql-B0dF-SoF.js +181 -0
- package/dist/{actor-DaJjqD5R.d.ts → actor-CQTlc1Hh.d.ts} +1 -1
- package/dist/adapter-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-C_A-KEAz.js → doctor-B4JOm_ox.js} +991 -317
- package/dist/cli/{env-DmKv_G4A.js → env-CJLbUVPB.js} +1 -1
- package/dist/cli/{env-jIFUADLY.js → env-qXgyMV6r.js} +2 -2
- package/dist/cli/fresh-import-BeYf9I3x.js +40 -0
- package/dist/cli/gen-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-DMa6M7hV.js → init-BIIwclPg.js} +242 -27
- package/dist/cli/{introspect-BKlaIu_M.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-Bo_NLT5n.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-BCtlgDQx.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-Bv7gvfzC.d.ts → config-D44Y7PAv.d.ts} +406 -214
- package/dist/{config-DreERlKo.js → config-Dn7F5k9A.js} +62 -14
- package/dist/connector-Dv8kK0MO.d.ts +107 -0
- package/dist/connectors-hkLCwyEz.d.ts +120 -0
- package/dist/context-BCrWe7ow.d.ts +237 -0
- package/dist/credentials/index.d.ts +31 -0
- package/dist/credentials/index.js +168 -0
- package/dist/cron-DVPUg5k3.js +145 -0
- package/dist/csv-CPAzEmB6.js +25 -0
- package/dist/db-exception-CnWcYPxL.js +15 -0
- package/dist/{define-cNKzqwL_.js → define-B-TVjC25.js} +784 -227
- package/dist/{define-Bp_BZa5h.d.ts → define-CJJkkr1-.d.ts} +353 -61
- package/dist/edge/index.d.ts +69 -11
- package/dist/edge/index.js +191 -75
- package/dist/elysia/index.d.ts +59 -0
- package/dist/elysia/index.js +62 -0
- package/dist/embeddings-4ZvFzjsU.js +127 -0
- package/dist/embeddings-C9KGQnXt.d.ts +68 -0
- package/dist/{refresh-CFPX0Qft.d.ts → ended-jLfvw8h-.d.ts} +20 -2
- package/dist/{entitlements-BiJZ4t49.d.ts → entitlements-DHrY2UDZ.d.ts} +16 -7
- package/dist/entitlements-DRl6ZJUm.js +24 -0
- package/dist/envelope-DqnYGRw7.js +47 -0
- package/dist/{errors-DtwXa6b8.js → errors-B11Duf73.js} +82 -13
- package/dist/errors-DLjJHPLK.js +44 -0
- package/dist/escape-like-DHfx6jRr.js +7 -0
- package/dist/escape-like-ImTK0ps_.d.ts +15 -0
- package/dist/eve/index.d.ts +220 -0
- package/dist/eve/index.js +504 -0
- package/dist/eve-gT2Fpjut.d.ts +151 -0
- package/dist/events/index.d.ts +4 -3
- package/dist/events/index.js +9 -50
- package/dist/events-DWDhx77e.d.ts +549 -0
- package/dist/executor-Bq28caBo.js +718 -0
- package/dist/executor-C-R4pucm.js +83 -0
- package/dist/executor-CaWigTyR.d.ts +148 -0
- package/dist/executor-D14tGopJ.d.ts +36 -0
- package/dist/{executor-Cghdstwu.d.ts → executor-DbvExCFC.d.ts} +7 -1
- package/dist/{sql-Coh6n4cC.js → executor-De1Of3m3.js} +210 -11
- package/dist/executor-DvsBbNBS.d.ts +261 -0
- package/dist/expo/index.d.ts +79 -0
- package/dist/expo/index.js +129 -0
- package/dist/expo-sqlite/index.d.ts +58 -0
- package/dist/expo-sqlite/index.js +104 -0
- package/dist/field-errors-BFOa7WhB.d.ts +99 -0
- package/dist/field-errors-VF1yb8yI.js +13 -0
- package/dist/framework-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-BgSHAYLf.js → impersonation-DcqaTBHx.js} +21 -6
- package/dist/inbox-i7E1ppo6.d.ts +384 -0
- package/dist/index-ACiNPN4Z.d.ts +74 -0
- package/dist/{index-DgILJRXj.d.ts → index-Bepi-Hgg.d.ts} +91 -28
- package/dist/index-BkWT_uBO.d.ts +51 -0
- package/dist/index-BpFYMsi0.d.ts +53 -0
- package/dist/{index-C7f8cOBM.d.ts → index-Bxih3l0u.d.ts} +2 -2
- package/dist/index-CaxrMD1A.d.ts +1 -0
- package/dist/index-ClmjK_o-.d.ts +55 -0
- package/dist/index-CtuakVRc.d.ts +267 -0
- package/dist/index-D48jVS-N.d.ts +246 -0
- package/dist/index-DDrYaUcq.d.ts +138 -0
- package/dist/index-DQh4VCc9.d.ts +98 -0
- package/dist/{live-D9W2M5aO.d.ts → index-DunNRdnT.d.ts} +136 -38
- package/dist/index.d.ts +65 -18
- package/dist/index.js +42 -14
- package/dist/invalidate-BBqhpxyB.d.ts +19 -0
- package/dist/json-CEnpTHlZ.js +16 -0
- package/dist/json-schema-CvER4kgT.js +502 -0
- package/dist/keys-4MnkWTTh.js +35 -0
- package/dist/kit-B5tid-q5.d.ts +60 -0
- package/dist/kit-Fm-Fv7q5.js +78 -0
- package/dist/knowledge-BXBbT0Tr.d.ts +176 -0
- package/dist/knowledge-CDmiMLew.js +255 -0
- package/dist/lint/index.d.ts +1 -1
- package/dist/lint/index.js +37 -0
- package/dist/list/index.d.ts +3 -2
- package/dist/list/index.js +1 -444
- package/dist/{index-fag8VJZ2.d.ts → list-query-BRt-zDF7.d.ts} +20 -12
- package/dist/list-query-gl808ac1.js +459 -0
- package/dist/{live-CdJBOc4f.js → live-CTAZQkwl.js} +99 -14
- package/dist/logger-DWVYUmwi.d.ts +18 -0
- package/dist/mcp/index.d.ts +38 -11
- package/dist/mcp/index.js +82 -46
- package/dist/mcp/sdk/index.d.ts +105 -0
- package/dist/mcp/sdk/index.js +126 -0
- package/dist/message-CaKlqdsX.js +219 -0
- package/dist/message-CfDoR0Y6.d.ts +94 -0
- package/dist/messages-B9-5887d.js +715 -0
- package/dist/messages-DYP0sUTe.d.ts +59 -0
- package/dist/mfa-Daak8ukG.d.ts +54 -0
- package/dist/modules-DpPwzC7E.d.ts +192 -0
- package/dist/modules-dxrVK3ID.js +228 -0
- package/dist/nestjs/index.d.ts +68 -0
- package/dist/nestjs/index.js +164 -0
- package/dist/next/client/index.d.ts +35 -0
- package/dist/next/client/index.js +36 -0
- package/dist/next/image/index.js +3 -24
- package/dist/next/index.d.ts +150 -51
- package/dist/next/index.js +261 -107
- package/dist/node/index.d.ts +4 -0
- package/dist/node/index.js +210 -0
- package/dist/node-headers-AO06VhqH.d.ts +24 -0
- package/dist/node-headers-C71zNQHe.js +55 -0
- package/dist/nuxt/index.d.ts +60 -0
- package/dist/nuxt/index.js +64 -0
- package/dist/onboarding-BZGHYJks.d.ts +62 -0
- package/dist/openapi/index.d.ts +1 -1
- package/dist/openapi/index.js +3 -3
- package/dist/orpc/index.d.ts +70 -11
- package/dist/orpc/index.js +73 -24
- package/dist/otel/index.d.ts +7 -7
- package/dist/otel/index.js +87 -57
- package/dist/outbox-Cq7pPYvl.d.ts +161 -0
- package/dist/{plugin-o144f322.d.ts → plugin-FGY8UhYm.d.ts} +30 -10
- package/dist/plugin-tfXW1-qO.js +45 -0
- package/dist/plugins/actor/index.d.ts +2 -2
- package/dist/plugins/actor/index.js +3 -3
- package/dist/plugins/rules/index.d.ts +11 -4
- package/dist/plugins/rules/index.js +40 -13
- package/dist/plugins/soft-delete/index.d.ts +5 -4
- package/dist/plugins/soft-delete/index.js +10 -5
- package/dist/plugins/tenant/index.d.ts +2 -2
- package/dist/plugins/tenant/index.js +18 -11
- package/dist/plugins/timestamps/index.d.ts +5 -3
- package/dist/plugins/timestamps/index.js +6 -4
- package/dist/plugins/validation/index.d.ts +2 -2
- package/dist/plugins/validation/index.js +10 -6
- package/dist/{pool-C9voM4Kw.d.ts → pool-CAu2nLrL.d.ts} +2 -2
- package/dist/postgres/index.d.ts +4 -4
- package/dist/postgres/index.js +1 -2
- package/dist/{postgrest-CruYKAvV.d.ts → postgrest-BLVdEnfe.d.ts} +13 -3
- package/dist/powersync/index.d.ts +43 -0
- package/dist/powersync/index.js +199 -0
- package/dist/powersync/react/index.d.ts +87 -0
- package/dist/powersync/react/index.js +108 -0
- package/dist/{problem-BW1KhzSG.js → problem-BreOl8b8.js} +14 -3
- package/dist/{problem-Blxe8S31.d.ts → problem-DD8LZFjc.d.ts} +21 -3
- package/dist/provider-BH5UWZJ6.d.ts +113 -0
- package/dist/provider-Di3sRutW.js +57 -0
- package/dist/query/index.d.ts +4 -2
- package/dist/query/index.js +4 -3
- package/dist/{query-CCbo44lG.js → query-BQ-NaZon.js} +141 -24
- package/dist/{queue-BYUCjr59.d.ts → queue-CLJurhdy.d.ts} +258 -83
- package/dist/react/index.d.ts +11 -7
- package/dist/react/index.js +7 -3
- package/dist/react/native/index.d.ts +116 -0
- package/dist/react/native/index.js +130 -0
- package/dist/react/server.d.ts +28 -10
- package/dist/react/server.js +22 -5
- package/dist/react/session.d.ts +2 -2
- package/dist/react-4ZqkP8da.js +79 -0
- package/dist/react-F80mF4-t.js +409 -0
- package/dist/react-router/index.d.ts +83 -0
- package/dist/react-router/index.js +89 -0
- package/dist/react-topic-seAWjL3_.js +38 -0
- package/dist/{read-set-DQFt1N_Y.js → read-set-DuKWC9Mj.js} +67 -25
- package/dist/realtime/index.d.ts +4 -5
- package/dist/realtime/index.js +144 -82
- package/dist/refusal-CeJWxmkH.js +61 -0
- package/dist/refusal-D1rgbzNq.d.ts +15 -0
- package/dist/replicas-CwrYp5Zj.js +94 -0
- package/dist/{view-Bn6HNKUe.js → resolve-D_IcnvFd.js} +248 -240
- package/dist/{impersonation-BmePsuxz.d.ts → resolve-KW8nCeL6.d.ts} +29 -69
- package/dist/{resource-mqfJW4YF.js → resource-BsvzCMlX.js} +4 -4
- package/dist/{resource-DNRFP7KR.d.ts → resource-D6Uc7Sk7.d.ts} +5 -5
- package/dist/respond-BUgsXNgk.js +91 -0
- package/dist/respond-DoBijysA.d.ts +93 -0
- package/dist/result-D7y2fT87.d.ts +282 -0
- package/dist/{result-BKiliPY7.js → result-DzUbqgdW.js} +27 -2
- package/dist/run-state-CPo-1X2B.d.ts +12 -0
- package/dist/run-state-CgBKzYMW.js +13 -0
- package/dist/search-CUWCRYKL.js +9 -0
- package/dist/server/index.d.ts +143 -22
- package/dist/server/index.js +46 -14
- package/dist/{respond-BR1fJWOB.d.ts → server-CeVeeXwz.d.ts} +224 -85
- package/dist/session-ChiXDZdZ.d.ts +72 -0
- package/dist/shared-CBxosKK3.js +75 -0
- package/dist/{shared-D1dRUrAg.js → shared-CxWmcyqB.js} +2 -1
- package/dist/shared-DDSjEGDR.d.ts +11 -0
- package/dist/sign-in-BCV5S2WZ.d.ts +49 -0
- package/dist/sign-in-Cb1mwv6X.js +86 -0
- package/dist/{signers-Cc6r98SW.d.ts → signers-4y62_VIi.d.ts} +13 -9
- package/dist/simplify-DDO0j0LI.js +83 -0
- package/dist/solid/index.d.ts +131 -0
- package/dist/solid/index.js +344 -0
- package/dist/solid-start/index.d.ts +75 -0
- package/dist/solid-start/index.js +58 -0
- package/dist/{spec-pins-C3oc-Tdp.js → spec-pins--j6mTok4.js} +8 -1
- package/dist/{spec-pins-CqorWDnO.d.ts → spec-pins-C89s6DyW.d.ts} +7 -0
- package/dist/sql/index.d.ts +313 -212
- package/dist/sql/index.js +34872 -6579
- 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-wHnK6zp-.js → support-BivNqSpK.js} +32 -11
- package/dist/{support-view-B8SlToQX.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 +315 -41
- package/dist/testing/index.js +1046 -79
- package/dist/timing-CyTQPubY.js +92 -0
- package/dist/ttl-Hr34gRu8.js +12 -0
- package/dist/{types-Dnf_wRDz.d.ts → types-6BdhkmZe.d.ts} +111 -45
- package/dist/types-BI-0Sl2v.d.ts +359 -0
- package/dist/types-C05bxW-W.d.ts +220 -0
- package/dist/types-DGs5L0VN.d.ts +192 -0
- package/dist/types-TaiEeBGA.d.ts +156 -0
- package/dist/usage-CrvrL2vw.d.ts +177 -0
- package/dist/user-change-XzvgafU4.js +130 -0
- package/dist/vault-CSO7ss5C.d.ts +50 -0
- package/dist/vercel-connect/index.d.ts +47 -0
- package/dist/vercel-connect/index.js +119 -0
- package/dist/{verify-Ce49ETPz.js → verify-DL41hbvY.js} +85 -13
- package/dist/verify-DPuWngD4.d.ts +172 -0
- package/dist/{version-DOYTYwHP.js → version-Bvv6aLjZ.js} +1 -1
- package/dist/view-BeFcRV6G.js +99 -0
- package/dist/{view-CbgObAeb.d.ts → view-DbxLNu8L.d.ts} +22 -5
- package/dist/vue/index.d.ts +141 -0
- package/dist/vue/index.js +362 -0
- package/dist/watch-DI34G86j.d.ts +60 -0
- package/dist/watch-Xuxrvxq-.js +122 -0
- package/dist/{wire-D2dT86vi.js → wire-DtZQ4sdE.js} +15 -5
- package/dist/workflow-builder-DJ1oHn8g.js +398 -0
- package/dist/workflow-sdk/builder/index.d.ts +85 -0
- package/dist/workflow-sdk/builder/index.js +250 -0
- package/dist/workflow-sdk/index.d.ts +14 -0
- package/dist/workflow-sdk/index.js +3 -0
- package/dist/workflow-sdk/world/index.d.ts +107 -0
- package/dist/workflow-sdk/world/index.js +702 -0
- package/dist/workflow-sdk-B3yLD6Br.d.ts +98 -0
- package/dist/workflow-sdk-C2WJ_G2O.js +173 -0
- package/dist/workflow-sdk-world-D-prir6O.js +1397 -0
- package/dist/workflows-B0j9WKPu.d.ts +185 -0
- package/dist/workflows-wu1WWBn7.js +216 -0
- package/package.json +461 -20
- package/schemas/ai-message-v1.json +258 -0
- package/schemas/config-v1.json +1074 -140
- package/schemas/doctor-report-v1.json +20 -1
- package/schemas/snapshot-v2.json +8 -0
- package/skills/better-supabase/SKILL.md +41 -12
- package/skills/better-supabase/references/frontend.md +96 -0
- package/skills/better-supabase/references/plugins.md +10 -6
- package/skills/better-supabase/references/troubleshooting.md +2 -1
- package/skills/better-supabase-api/SKILL.md +76 -22
- package/skills/better-supabase-api/references/adapters.md +207 -0
- package/skills/better-supabase-api/references/ai.md +125 -0
- package/skills/better-supabase-api/references/expo.md +65 -0
- package/skills/better-supabase-api/references/powersync.md +35 -0
- package/skills/better-supabase-api/references/streams-credentials.md +105 -0
- package/skills/better-supabase-auth/SKILL.md +47 -11
- package/skills/better-supabase-auth/references/authorization-providers.md +51 -0
- package/skills/better-supabase-testing/SKILL.md +3 -1
- package/dist/cli/config-dtoekM0v.js +0 -2
- package/dist/cli/gen-CIdSQZad.js +0 -2
- package/dist/cli/gen-CjElD1Vw.js +0 -2241
- package/dist/cli/read-sets-VQcPgxU9.js +0 -436
- package/dist/cli/sql-CVx-1O8G.js +0 -373
- package/dist/entitlements-CTEBm7IB.js +0 -20
- package/dist/events-aIO7vsIk.d.ts +0 -230
- package/dist/executor-BunPOO-k.d.ts +0 -402
- package/dist/executor-XycESQPH.js +0 -94
- package/dist/index-CWMDdEr4.d.ts +0 -50
- package/dist/index-DOESKG27.d.ts +0 -100
- package/dist/index-DmXSxbLi.d.ts +0 -62
- package/dist/index-Dp2VDwog.d.ts +0 -161
- package/dist/jobs/index.d.ts +0 -226
- package/dist/jobs/index.js +0 -1007
- package/dist/json-schema-m1fiwKgN.js +0 -208
- package/dist/kit-events-CTFDfSwb.js +0 -60
- package/dist/kit-transport-B82k1djG.d.ts +0 -33
- package/dist/kits-CGLLrNPd.js +0 -157
- package/dist/mfa-Cu96oJdw.d.ts +0 -30
- package/dist/notifications/index.d.ts +0 -162
- package/dist/notifications/index.js +0 -264
- package/dist/orgs/index.d.ts +0 -132
- package/dist/orgs/index.js +0 -245
- package/dist/permdock-sql-C2Inc6Xc.d.ts +0 -29
- package/dist/permdock-sql-DgOfeixi.js +0 -51
- package/dist/plugin-DwARMuQp.js +0 -59
- package/dist/server-B1mZ7CgQ.js +0 -660
- package/dist/stats-Bqob3WqT.js +0 -592
- package/dist/support-CEPwlw2G.d.ts +0 -89
- package/dist/template-mbvlysOo.d.ts +0 -6
- package/dist/temporal-CVlIV2DZ.js +0 -40
- package/dist/user-change-CHFEUro1.js +0 -49
- package/dist/webhooks/index.d.ts +0 -285
- package/skills/better-supabase-auth/references/permdock.md +0 -122
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/// <reference lib="esnext.temporal" />
|
|
2
|
+
import { t as AsyncResult, w as ErrorMapper } from "../../result-D7y2fT87.js";
|
|
3
|
+
import { L as TableKey, a as AnyModels, i as AnyFunctions } from "../../types-6BdhkmZe.js";
|
|
4
|
+
import { i as sqlTransport, r as rpcTransport, t as BlockTransport } from "../../block-transport-DvaoPuZ9.js";
|
|
5
|
+
import { i as CursorPageOptions, r as BlockTemporalOptions } from "../../block-helpers-CKtbFcRv.js";
|
|
6
|
+
import { t as BetterSupabase } from "../../define-CJJkkr1-.js";
|
|
7
|
+
import { r as EventSink, t as CloudEvent } from "../../cloud-event-C1JCc1bH.js";
|
|
8
|
+
import { i as ListDefinition } from "../../list-query-BRt-zDF7.js";
|
|
9
|
+
//#region src/blocks/comments/comments.d.ts
|
|
10
|
+
interface CommentsOptions extends BlockTemporalOptions {
|
|
11
|
+
readonly transport: BlockTransport;
|
|
12
|
+
/** The module schema (`sql.modules.comments.schema`), default `better_supabase`. */
|
|
13
|
+
readonly schema?: string;
|
|
14
|
+
readonly mappers?: readonly ErrorMapper[];
|
|
15
|
+
/**
|
|
16
|
+
* The user ids a comment mentions when the call passes no `mentions`,
|
|
17
|
+
* such as the mention nodes of a rich-text `document`. Default
|
|
18
|
+
* `mentionsIn(body)`.
|
|
19
|
+
*/
|
|
20
|
+
readonly mentionsOf?: (comment: {
|
|
21
|
+
readonly body: string;
|
|
22
|
+
readonly document: unknown;
|
|
23
|
+
}) => readonly string[];
|
|
24
|
+
}
|
|
25
|
+
interface Comment {
|
|
26
|
+
readonly id: string;
|
|
27
|
+
readonly organizationId: string;
|
|
28
|
+
readonly subjectType: string;
|
|
29
|
+
readonly subjectId: string;
|
|
30
|
+
/** `undefined` once the author's account is deleted. */
|
|
31
|
+
readonly authorId: string | undefined;
|
|
32
|
+
/** Empty for a deleted comment. */
|
|
33
|
+
readonly body: string;
|
|
34
|
+
/** The rich-text document an editor wrote, next to `body` as its plain text. */
|
|
35
|
+
readonly document: unknown;
|
|
36
|
+
readonly mentions: readonly string[];
|
|
37
|
+
readonly parentId: string | undefined;
|
|
38
|
+
readonly createdAt: Temporal.Instant;
|
|
39
|
+
readonly editedAt: Temporal.Instant | undefined;
|
|
40
|
+
readonly deletedAt: Temporal.Instant | undefined;
|
|
41
|
+
}
|
|
42
|
+
interface NewComment {
|
|
43
|
+
readonly organizationId: string;
|
|
44
|
+
readonly subjectType: string;
|
|
45
|
+
readonly subjectId: string;
|
|
46
|
+
readonly body: string;
|
|
47
|
+
/** A rich-text document (any JSON); keep `body` as its plain text. */
|
|
48
|
+
readonly document?: unknown;
|
|
49
|
+
/** User ids; default `mentionsOf`, or the ids `mentionsIn(body)` finds. */
|
|
50
|
+
readonly mentions?: readonly string[];
|
|
51
|
+
/** A reply: the parent must be on the same subject. */
|
|
52
|
+
readonly parentId?: string;
|
|
53
|
+
}
|
|
54
|
+
interface CommentEdit {
|
|
55
|
+
readonly body: string;
|
|
56
|
+
/** A new document; `null` removes it, and leaving it out keeps the current one. */
|
|
57
|
+
readonly document?: unknown;
|
|
58
|
+
/** Default `mentionsOf`, or the ids `mentionsIn(body)` finds. */
|
|
59
|
+
readonly mentions?: readonly string[];
|
|
60
|
+
}
|
|
61
|
+
interface ActivityEntry {
|
|
62
|
+
readonly id: string;
|
|
63
|
+
readonly organizationId: string;
|
|
64
|
+
readonly type: string;
|
|
65
|
+
readonly actorId: string | undefined;
|
|
66
|
+
readonly subjectType: string | undefined;
|
|
67
|
+
readonly subjectId: string | undefined;
|
|
68
|
+
readonly summary: string | undefined;
|
|
69
|
+
readonly data: Readonly<Record<string, unknown>>;
|
|
70
|
+
readonly occurredAt: Temporal.Instant;
|
|
71
|
+
}
|
|
72
|
+
interface ActivityHistoryOptions extends CursorPageOptions<Temporal.Instant> {
|
|
73
|
+
/** Entries before this instant, for paging back. */
|
|
74
|
+
readonly cursor?: Temporal.Instant;
|
|
75
|
+
/** Default 50, at most 500. */
|
|
76
|
+
readonly limit?: number;
|
|
77
|
+
}
|
|
78
|
+
interface ListCommentsOptions extends CursorPageOptions<Temporal.Instant> {
|
|
79
|
+
/** Comments created after this instant, for polling a thread. */
|
|
80
|
+
readonly cursor?: Temporal.Instant;
|
|
81
|
+
/** Default 100, at most 500. */
|
|
82
|
+
readonly limit?: number;
|
|
83
|
+
/** Comments to skip, for page-number paging. */
|
|
84
|
+
readonly offset?: number;
|
|
85
|
+
}
|
|
86
|
+
interface Comments {
|
|
87
|
+
create(comment: NewComment): AsyncResult<Comment>;
|
|
88
|
+
/** Only the author edits; `not_found` when the caller can't see it. */
|
|
89
|
+
edit(id: string, edit: CommentEdit): AsyncResult<Comment>;
|
|
90
|
+
/** Soft-deletes (the author, or a member with `comments.moderate`). */
|
|
91
|
+
remove(id: string): AsyncResult<boolean>;
|
|
92
|
+
/** A subject's thread, oldest first, deleted comments as placeholders. */
|
|
93
|
+
list(organizationId: string, subjectType: string, subjectId: string, options?: ListCommentsOptions): AsyncResult<readonly Comment[]>;
|
|
94
|
+
/**
|
|
95
|
+
* How many comments each subject has that the caller can read, deleted
|
|
96
|
+
* ones left out, such as for a counter on each row of a list. Subjects
|
|
97
|
+
* without comments are 0.
|
|
98
|
+
*/
|
|
99
|
+
counts(organizationId: string, subjectType: string, subjectIds: readonly string[]): AsyncResult<Readonly<Record<string, number>>>;
|
|
100
|
+
/**
|
|
101
|
+
* Copies a subject's thread to another subject in the tenant, keeping
|
|
102
|
+
* authors, times and replies; returns how many comments it copied. Needs a
|
|
103
|
+
* service-role transport.
|
|
104
|
+
*/
|
|
105
|
+
copy(organizationId: string, from: {
|
|
106
|
+
readonly type: string;
|
|
107
|
+
readonly id: string;
|
|
108
|
+
}, to: {
|
|
109
|
+
readonly type: string;
|
|
110
|
+
readonly id: string;
|
|
111
|
+
}): AsyncResult<number>;
|
|
112
|
+
/**
|
|
113
|
+
* The activity feed of a tenant, newest first, or one subject's timeline
|
|
114
|
+
* with `subject`. Members with `activity.read` see it.
|
|
115
|
+
*/
|
|
116
|
+
history(organizationId: string, subject?: {
|
|
117
|
+
readonly type: string;
|
|
118
|
+
readonly id: string;
|
|
119
|
+
}, options?: ActivityHistoryOptions): AsyncResult<readonly ActivityEntry[]>;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* The user ids mentioned in a body written as `@[Ada](<user id>)`, the
|
|
123
|
+
* markup mention inputs produce, in order and without repeats.
|
|
124
|
+
*/
|
|
125
|
+
export declare function mentionsIn(body: string): readonly string[];
|
|
126
|
+
/** Comments over the `comments` module's functions, as the caller. */
|
|
127
|
+
export declare function createComments(options: CommentsOptions): Comments;
|
|
128
|
+
/** What an activity entry says about an event; `null` skips the event. */
|
|
129
|
+
interface ActivityDescription {
|
|
130
|
+
readonly summary?: string;
|
|
131
|
+
readonly actorId?: string;
|
|
132
|
+
readonly subjectType?: string;
|
|
133
|
+
readonly subjectId?: string;
|
|
134
|
+
readonly data?: Readonly<Record<string, unknown>>;
|
|
135
|
+
}
|
|
136
|
+
interface ActivitySinkOptions {
|
|
137
|
+
/** A service-role transport: `record_activity()` is granted to `service_role` only. */
|
|
138
|
+
readonly transport: BlockTransport;
|
|
139
|
+
readonly schema?: string;
|
|
140
|
+
/** The outbox `typePrefix`, stripped from the stored type. Default `dev.better-supabase`. */
|
|
141
|
+
readonly typePrefix?: string;
|
|
142
|
+
/** Types to keep, exact or ending in `.*`. Default every event with a tenant. */
|
|
143
|
+
readonly types?: readonly string[];
|
|
144
|
+
/** Summarizes an event, or returns `null` to skip it. */
|
|
145
|
+
readonly describe?: (event: CloudEvent, type: string) => ActivityDescription | null | undefined;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* An outbox sink that writes events into the activity feed:
|
|
149
|
+
* `outbox.relay('activity', activitySink({ transport }))`. Events without a
|
|
150
|
+
* tenant (`partitionkey`) are skipped, and a replayed event writes nothing.
|
|
151
|
+
*/
|
|
152
|
+
export declare function activitySink(options: ActivitySinkOptions): EventSink;
|
|
153
|
+
type ActivitySort = "newest" | "oldest";
|
|
154
|
+
type ActivityFacet = "type" | "actor" | "subjectType" | "subjectId";
|
|
155
|
+
/**
|
|
156
|
+
* A cursor-paged list over `activity_entries` (generate types for the
|
|
157
|
+
* `better_supabase` schema to get it in your models), newest first,
|
|
158
|
+
* filtered by type, actor and subject. Members with `activity.read` see
|
|
159
|
+
* their tenants' entries.
|
|
160
|
+
*/
|
|
161
|
+
export declare function activityListQuery<M extends AnyModels, D, Fn extends AnyFunctions, E, T extends TableKey<M>>(betterSupabase: BetterSupabase<M, D, Fn, E>, table: T, options?: {
|
|
162
|
+
readonly pageSize?: number;
|
|
163
|
+
readonly maxPageSize?: number;
|
|
164
|
+
}): ListDefinition<M, T, E, ActivitySort, ActivityFacet, false, "cursor">;
|
|
165
|
+
//#endregion
|
|
166
|
+
//#region src/sql/subjects.d.ts
|
|
167
|
+
/**
|
|
168
|
+
* One subject type a module's rows belong to (`options.subjects`): the
|
|
169
|
+
* table its ids point at, and who may read it.
|
|
170
|
+
*/
|
|
171
|
+
interface Subject {
|
|
172
|
+
/** `schema.table`, or a table in `public`. */
|
|
173
|
+
readonly table: string;
|
|
174
|
+
/** Default `id`. */
|
|
175
|
+
readonly id?: string;
|
|
176
|
+
/**
|
|
177
|
+
* The id column's type, such as `uuid` or `bigint`. With it, the stored
|
|
178
|
+
* text id is cast to that type, so the lookup uses the subject table's
|
|
179
|
+
* primary key; without it the column is cast to text, which can't.
|
|
180
|
+
*/
|
|
181
|
+
readonly idType?: string;
|
|
182
|
+
/**
|
|
183
|
+
* The subject's tenant column, default `organization_id`. `false` for a
|
|
184
|
+
* subject without a tenant (a user's own records), where the subject
|
|
185
|
+
* table's policies alone decide, in modules that allow it.
|
|
186
|
+
*/
|
|
187
|
+
readonly tenant?: string | false;
|
|
188
|
+
/** A permission the caller also needs in the tenant, e.g. `projects.read`. */
|
|
189
|
+
readonly permission?: string;
|
|
190
|
+
/** Delete the module's rows for a subject when the subject row is deleted. */
|
|
191
|
+
readonly cascade?: boolean;
|
|
192
|
+
/** The module's own keys, such as a bucket per subject. */
|
|
193
|
+
readonly extra: Readonly<Record<string, unknown>>;
|
|
194
|
+
}
|
|
195
|
+
//#endregion
|
|
196
|
+
//#region src/sql/modules/comments.d.ts
|
|
197
|
+
/** One commentable subject type: its table, and who may read it. */
|
|
198
|
+
type CommentSubject = Omit<Subject, "extra">;
|
|
199
|
+
//#endregion
|
|
200
|
+
export { type ActivityDescription, type ActivityEntry, type ActivityFacet, type ActivityHistoryOptions, type ActivitySinkOptions, type ActivitySort, type BlockTransport, type Comment, type CommentEdit, type CommentSubject, type Comments, type CommentsOptions, type ListCommentsOptions, type NewComment, rpcTransport, sqlTransport };
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { n as dbError } from "../../errors-B11Duf73.js";
|
|
2
|
+
import { a as ok, r as err } from "../../result-DzUbqgdW.js";
|
|
3
|
+
import { n as rpcTransport, r as sqlTransport } from "../../block-transport-BLr-ZgLc.js";
|
|
4
|
+
import { D as stringsOf, O as textOf, d as isRecord, g as pageOf, h as optionalText, i as blockCall, k as toInstant, m as optionalInstant, n as applyTemporal, u as instantArg, x as recordsOf, y as recordOf } from "../../block-helpers-DWHxHsEQ.js";
|
|
5
|
+
import { n as defineListQuery } from "../../list-query-gl808ac1.js";
|
|
6
|
+
//#region src/blocks/comments/comments.ts
|
|
7
|
+
const MENTION = /@\[[^\]\n]{1,100}\]\(([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\)/gi;
|
|
8
|
+
/**
|
|
9
|
+
* The user ids mentioned in a body written as `@[Ada](<user id>)`, the
|
|
10
|
+
* markup mention inputs produce, in order and without repeats.
|
|
11
|
+
*/
|
|
12
|
+
function mentionsIn(body) {
|
|
13
|
+
return [...new Set([...body.matchAll(MENTION)].flatMap((match) => match[1] ? [match[1].toLowerCase()] : []))];
|
|
14
|
+
}
|
|
15
|
+
function commentOf(value) {
|
|
16
|
+
const row = recordOf(value, "comments");
|
|
17
|
+
return {
|
|
18
|
+
id: textOf(row["id"]),
|
|
19
|
+
organizationId: textOf(row["organization_id"]),
|
|
20
|
+
subjectType: textOf(row["subject_type"]),
|
|
21
|
+
subjectId: textOf(row["subject_id"]),
|
|
22
|
+
authorId: optionalText(row["author_id"]),
|
|
23
|
+
body: textOf(row["body"] ?? ""),
|
|
24
|
+
document: row["document"] ?? null,
|
|
25
|
+
mentions: stringsOf(row["mentions"]),
|
|
26
|
+
parentId: optionalText(row["parent_id"]),
|
|
27
|
+
createdAt: toInstant(textOf(row["created_at"])),
|
|
28
|
+
editedAt: optionalInstant(row["edited_at"]),
|
|
29
|
+
deletedAt: optionalInstant(row["deleted_at"])
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function activityOf(value) {
|
|
33
|
+
const row = recordOf(value, "activity_entries");
|
|
34
|
+
return {
|
|
35
|
+
id: textOf(row["id"]),
|
|
36
|
+
organizationId: textOf(row["organization_id"]),
|
|
37
|
+
type: textOf(row["type"]),
|
|
38
|
+
actorId: optionalText(row["actor_id"]),
|
|
39
|
+
subjectType: optionalText(row["subject_type"]),
|
|
40
|
+
subjectId: optionalText(row["subject_id"]),
|
|
41
|
+
summary: optionalText(row["summary"]),
|
|
42
|
+
data: isRecord(row["data"]) ? row["data"] : {},
|
|
43
|
+
occurredAt: toInstant(textOf(row["occurred_at"]))
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/** Comments over the `comments` module's functions, as the caller. */
|
|
47
|
+
function createComments(options) {
|
|
48
|
+
applyTemporal(options);
|
|
49
|
+
const call = blockCall(options.transport, options.schema, options.mappers);
|
|
50
|
+
const mentionsOf = (body, document) => options.mentionsOf ? options.mentionsOf({
|
|
51
|
+
body,
|
|
52
|
+
document
|
|
53
|
+
}) : mentionsIn(body);
|
|
54
|
+
return {
|
|
55
|
+
create: (comment) => call("create_comment", {
|
|
56
|
+
tenant: comment.organizationId,
|
|
57
|
+
subject_type: comment.subjectType,
|
|
58
|
+
subject_id: comment.subjectId,
|
|
59
|
+
body: comment.body,
|
|
60
|
+
mentions: comment.mentions ?? mentionsOf(comment.body, comment.document),
|
|
61
|
+
parent: comment.parentId,
|
|
62
|
+
document: comment.document
|
|
63
|
+
}, commentOf),
|
|
64
|
+
edit: (id, edit) => call("edit_comment", {
|
|
65
|
+
id,
|
|
66
|
+
body: edit.body,
|
|
67
|
+
mentions: edit.mentions ?? mentionsOf(edit.body, edit.document),
|
|
68
|
+
document: edit.document ?? void 0,
|
|
69
|
+
...edit.document === null ? { clear_document: true } : {}
|
|
70
|
+
}, (value) => value).andThen((value) => Promise.resolve(value === null || value === void 0 ? err(dbError("not_found", "No comment you can edit has this id", { hint: "COMMENT_NOT_FOUND" })) : ok(commentOf(value)))),
|
|
71
|
+
remove: (id) => call("delete_comment", { id }, (value) => value === true),
|
|
72
|
+
list: (organizationId, subjectType, subjectId, list = {}) => call("list_comments", {
|
|
73
|
+
tenant: organizationId,
|
|
74
|
+
subject_type: subjectType,
|
|
75
|
+
subject_id: subjectId,
|
|
76
|
+
after: instantArg(pageOf(list).cursor),
|
|
77
|
+
max_rows: list.limit,
|
|
78
|
+
skip: list.offset
|
|
79
|
+
}, (value) => recordsOf(value, "list_comments").map(commentOf)),
|
|
80
|
+
counts: (organizationId, subjectType, subjectIds) => call("comment_counts", {
|
|
81
|
+
tenant: organizationId,
|
|
82
|
+
subject_type: subjectType,
|
|
83
|
+
subject_ids: [...subjectIds]
|
|
84
|
+
}, (value) => {
|
|
85
|
+
const found = isRecord(value) ? value : {};
|
|
86
|
+
return Object.fromEntries(subjectIds.map((id) => [id, Number(found[id] ?? 0)]));
|
|
87
|
+
}),
|
|
88
|
+
copy: (organizationId, from, to) => call("copy_comments", {
|
|
89
|
+
tenant: organizationId,
|
|
90
|
+
from_type: from.type,
|
|
91
|
+
from_id: from.id,
|
|
92
|
+
to_type: to.type,
|
|
93
|
+
to_id: to.id
|
|
94
|
+
}, (value) => Number(value ?? 0)),
|
|
95
|
+
history: (organizationId, subject, history = {}) => call("list_activity", {
|
|
96
|
+
tenant: organizationId,
|
|
97
|
+
subject_type: subject?.type,
|
|
98
|
+
subject_id: subject?.id,
|
|
99
|
+
before: instantArg(pageOf(history).cursor),
|
|
100
|
+
max_rows: history.limit
|
|
101
|
+
}, (value) => recordsOf(value, "list_activity").map(activityOf))
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
const matches = (patterns, type) => patterns.some((pattern) => pattern.endsWith(".*") ? type.startsWith(pattern.slice(0, -1)) : pattern === type);
|
|
105
|
+
const firstText = (data, keys) => {
|
|
106
|
+
for (const key of keys) {
|
|
107
|
+
const value = optionalText(data[key]);
|
|
108
|
+
if (value !== void 0) return value;
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
/** `comments/<id>` as `{ type: "comment", id }`, the shape block subjects use. */
|
|
112
|
+
function subjectOf(subject) {
|
|
113
|
+
const slash = subject?.indexOf("/") ?? -1;
|
|
114
|
+
if (subject === void 0 || slash < 1) return void 0;
|
|
115
|
+
const plural = subject.slice(0, slash);
|
|
116
|
+
return {
|
|
117
|
+
type: plural.endsWith("s") ? plural.slice(0, -1) : plural,
|
|
118
|
+
id: subject.slice(slash + 1)
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* An outbox sink that writes events into the activity feed:
|
|
123
|
+
* `outbox.relay('activity', activitySink({ transport }))`. Events without a
|
|
124
|
+
* tenant (`partitionkey`) are skipped, and a replayed event writes nothing.
|
|
125
|
+
*/
|
|
126
|
+
function activitySink(options) {
|
|
127
|
+
const schema = options.schema ?? "better_supabase";
|
|
128
|
+
const prefix = `${options.typePrefix ?? "dev.better-supabase"}.`;
|
|
129
|
+
return { async send(events) {
|
|
130
|
+
const entries = [];
|
|
131
|
+
for (const event of events) {
|
|
132
|
+
const tenant = optionalText(event["partitionkey"]);
|
|
133
|
+
if (tenant === void 0) continue;
|
|
134
|
+
const type = event.type.startsWith(prefix) ? event.type.slice(prefix.length) : event.type;
|
|
135
|
+
if (options.types && !matches(options.types, type)) continue;
|
|
136
|
+
const described = options.describe ? options.describe(event, type) : {};
|
|
137
|
+
if (described === null) continue;
|
|
138
|
+
const data = isRecord(event.data) ? event.data : {};
|
|
139
|
+
const subject = subjectOf(event.subject);
|
|
140
|
+
entries.push({
|
|
141
|
+
event_id: event.id,
|
|
142
|
+
organization_id: tenant,
|
|
143
|
+
type,
|
|
144
|
+
actor_id: described?.actorId ?? firstText(data, [
|
|
145
|
+
"actorId",
|
|
146
|
+
"authorId",
|
|
147
|
+
"userId"
|
|
148
|
+
]),
|
|
149
|
+
subject_type: described?.subjectType ?? optionalText(data["subjectType"]) ?? subject?.type,
|
|
150
|
+
subject_id: described?.subjectId ?? optionalText(data["subjectId"]) ?? subject?.id,
|
|
151
|
+
summary: described?.summary,
|
|
152
|
+
data: described?.data ?? data,
|
|
153
|
+
occurred_at: event.time
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
if (entries.length > 0) await options.transport.call(schema, "record_activity", { batch: { entries } });
|
|
157
|
+
} };
|
|
158
|
+
}
|
|
159
|
+
const FACETS = [
|
|
160
|
+
[
|
|
161
|
+
"type",
|
|
162
|
+
"type",
|
|
163
|
+
"type"
|
|
164
|
+
],
|
|
165
|
+
[
|
|
166
|
+
"actor",
|
|
167
|
+
"actor_id",
|
|
168
|
+
"actorId"
|
|
169
|
+
],
|
|
170
|
+
[
|
|
171
|
+
"subjectType",
|
|
172
|
+
"subject_type",
|
|
173
|
+
"subjectType"
|
|
174
|
+
],
|
|
175
|
+
[
|
|
176
|
+
"subjectId",
|
|
177
|
+
"subject_id",
|
|
178
|
+
"subjectId"
|
|
179
|
+
]
|
|
180
|
+
];
|
|
181
|
+
/**
|
|
182
|
+
* A cursor-paged list over `activity_entries` (generate types for the
|
|
183
|
+
* `better_supabase` schema to get it in your models), newest first,
|
|
184
|
+
* filtered by type, actor and subject. Members with `activity.read` see
|
|
185
|
+
* their tenants' entries.
|
|
186
|
+
*/
|
|
187
|
+
function activityListQuery(betterSupabase, table, options = {}) {
|
|
188
|
+
const meta = betterSupabase.meta.tables[table];
|
|
189
|
+
if (!meta) throw new TypeError(`activityListQuery: unknown table "${table}"`);
|
|
190
|
+
const camel = meta.columns["occurredAt"] !== void 0;
|
|
191
|
+
const facets = Object.fromEntries(FACETS.map(([key, snake, camelName]) => [key, camel ? camelName : snake]).filter(([, column]) => meta.columns[column] !== void 0));
|
|
192
|
+
const occurredAt = camel ? "occurredAt" : "occurred_at";
|
|
193
|
+
const config = {
|
|
194
|
+
facets,
|
|
195
|
+
sorts: {
|
|
196
|
+
newest: [{ [occurredAt]: "desc" }, { id: "desc" }],
|
|
197
|
+
oldest: [{ [occurredAt]: "asc" }, { id: "asc" }]
|
|
198
|
+
},
|
|
199
|
+
defaultSort: "newest",
|
|
200
|
+
pagination: "cursor",
|
|
201
|
+
...options.pageSize === void 0 ? {} : { pageSize: options.pageSize },
|
|
202
|
+
...options.maxPageSize === void 0 ? {} : { maxPageSize: options.maxPageSize }
|
|
203
|
+
};
|
|
204
|
+
return defineListQuery(betterSupabase, table, config);
|
|
205
|
+
}
|
|
206
|
+
//#endregion
|
|
207
|
+
export { activityListQuery, activitySink, createComments, mentionsIn, rpcTransport, sqlTransport };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { i as sqlTransport, r as rpcTransport, t as BlockTransport } from "../../block-transport-DvaoPuZ9.js";
|
|
2
|
+
import { a as ConnectorSession, c as ConnectorsOptions, i as ConnectorServerFields, l as FingerprintStatus, n as ConnectorGrant, o as ConnectorTransport, r as ConnectorServer, s as Connectors, t as ConnectorAuth, u as createConnectors } from "../../connectors-hkLCwyEz.js";
|
|
3
|
+
export { type BlockTransport, type ConnectorAuth, type ConnectorGrant, type ConnectorServer, type ConnectorServerFields, type ConnectorSession, type ConnectorTransport, type Connectors, type ConnectorsOptions, type FingerprintStatus, createConnectors, rpcTransport, sqlTransport };
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { n as dbError } from "../../errors-B11Duf73.js";
|
|
2
|
+
import { a as ok, t as AsyncResult } from "../../result-DzUbqgdW.js";
|
|
3
|
+
import { n as rpcTransport, r as sqlTransport } from "../../block-transport-BLr-ZgLc.js";
|
|
4
|
+
import { D as stringsOf, O as textOf, a as credentialRefOf, d as isRecord, h as optionalText, i as blockCall, k as toInstant, m as optionalInstant, n as applyTemporal, u as instantArg, x as recordsOf, y as recordOf } from "../../block-helpers-DWHxHsEQ.js";
|
|
5
|
+
import { n as revokeIfConfigured } from "../../compose-BIBNgAnq.js";
|
|
6
|
+
//#region src/blocks/connectors/connectors.ts
|
|
7
|
+
const TRANSPORTS = /* @__PURE__ */ new Set(["http", "sse"]);
|
|
8
|
+
const AUTHS = /* @__PURE__ */ new Set([
|
|
9
|
+
"none",
|
|
10
|
+
"oauth",
|
|
11
|
+
"header"
|
|
12
|
+
]);
|
|
13
|
+
const STATUSES = /* @__PURE__ */ new Set([
|
|
14
|
+
"approved",
|
|
15
|
+
"pending",
|
|
16
|
+
"rejected"
|
|
17
|
+
]);
|
|
18
|
+
const instant = (value) => value instanceof Date ? toInstant(value) : toInstant(textOf(value));
|
|
19
|
+
function grantOf(value) {
|
|
20
|
+
const row = recordOf(value, "connector_grants");
|
|
21
|
+
const credentialRef = credentialRefOf(row["credential_ref"]);
|
|
22
|
+
if (credentialRef === void 0) throw new TypeError("connector_grants returned a grant without a ref");
|
|
23
|
+
return {
|
|
24
|
+
id: textOf(row["id"]),
|
|
25
|
+
userId: textOf(row["user_id"]),
|
|
26
|
+
serverId: textOf(row["server_id"]),
|
|
27
|
+
organizationId: textOf(row["organization_id"]),
|
|
28
|
+
credentialRef,
|
|
29
|
+
scopes: stringsOf(row["scopes"]),
|
|
30
|
+
expiresAt: optionalInstant(row["expires_at"]),
|
|
31
|
+
grantedAt: instant(row["granted_at"]),
|
|
32
|
+
revokedAt: optionalInstant(row["revoked_at"])
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function serverOf(value) {
|
|
36
|
+
const row = recordOf(value, "connector_servers");
|
|
37
|
+
const transport = textOf(row["transport"]);
|
|
38
|
+
const authType = textOf(row["auth_type"]);
|
|
39
|
+
return {
|
|
40
|
+
id: textOf(row["id"]),
|
|
41
|
+
organizationId: textOf(row["organization_id"]),
|
|
42
|
+
name: textOf(row["name"]),
|
|
43
|
+
url: textOf(row["url"]),
|
|
44
|
+
transport: TRANSPORTS.has(transport) ? transport : "http",
|
|
45
|
+
authType: AUTHS.has(authType) ? authType : "none",
|
|
46
|
+
credentialRef: credentialRefOf(row["credential_ref"]),
|
|
47
|
+
scopes: stringsOf(row["scopes"]),
|
|
48
|
+
clientMetadata: isRecord(row["client_metadata"]) ? row["client_metadata"] : {},
|
|
49
|
+
enabled: row["enabled"] !== false,
|
|
50
|
+
grant: isRecord(row["grant"]) ? grantOf(row["grant"]) : void 0,
|
|
51
|
+
createdAt: instant(row["created_at"]),
|
|
52
|
+
updatedAt: instant(row["updated_at"])
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function fieldsArg(fields) {
|
|
56
|
+
const out = {};
|
|
57
|
+
if (fields.name !== void 0) out["name"] = fields.name;
|
|
58
|
+
if (fields.url !== void 0) out["url"] = fields.url;
|
|
59
|
+
if (fields.transport !== void 0) out["transport"] = fields.transport;
|
|
60
|
+
if (fields.authType !== void 0) out["auth_type"] = fields.authType;
|
|
61
|
+
if (fields.credentialRef !== void 0) out["credential_ref"] = fields.credentialRef;
|
|
62
|
+
if (fields.scopes !== void 0) out["scopes"] = fields.scopes;
|
|
63
|
+
if (fields.clientMetadata !== void 0) out["client_metadata"] = fields.clientMetadata;
|
|
64
|
+
if (fields.enabled !== void 0) out["enabled"] = fields.enabled;
|
|
65
|
+
return out;
|
|
66
|
+
}
|
|
67
|
+
const notFound = () => dbError("not_found", "No connector you can see has this id", { hint: "CONNECTOR_NOT_FOUND" });
|
|
68
|
+
/** MCP servers, per-user grants, sessions and tool list fingerprints. */
|
|
69
|
+
function createConnectors(options) {
|
|
70
|
+
applyTemporal(options);
|
|
71
|
+
const call = blockCall(options.transport, options.schema, options.mappers);
|
|
72
|
+
const service = blockCall(options.service ?? options.transport, options.schema, options.mappers);
|
|
73
|
+
const credentials = options.credentials;
|
|
74
|
+
const revokeCredential = (grant) => revokeIfConfigured(credentials, grant.credentialRef, { subject: {
|
|
75
|
+
type: "user",
|
|
76
|
+
id: grant.userId
|
|
77
|
+
} }).map(() => true);
|
|
78
|
+
const revokeAll = (grants) => AsyncResult.from(async () => {
|
|
79
|
+
for (const grant of grants) {
|
|
80
|
+
const revoked = await revokeCredential(grant);
|
|
81
|
+
if (!revoked.ok) return revoked;
|
|
82
|
+
}
|
|
83
|
+
return ok(grants.length);
|
|
84
|
+
});
|
|
85
|
+
const save = (organizationId, serverId, fields) => call("save_connector_server", {
|
|
86
|
+
tenant: organizationId,
|
|
87
|
+
id: serverId,
|
|
88
|
+
fields: fieldsArg(fields)
|
|
89
|
+
}, serverOf);
|
|
90
|
+
const decide = (serverId, fingerprint, approved) => call("decide_connector_fingerprint", {
|
|
91
|
+
server_id: serverId,
|
|
92
|
+
fingerprint,
|
|
93
|
+
approved
|
|
94
|
+
}, (value) => value === true);
|
|
95
|
+
return {
|
|
96
|
+
servers: {
|
|
97
|
+
list: (organizationId) => call("list_connector_servers", { tenant: organizationId }, (value) => recordsOf(value, "list_connector_servers").map(serverOf)),
|
|
98
|
+
get: (serverId, getOptions = {}) => (getOptions.ownerId === void 0 ? call : service)("get_connector", {
|
|
99
|
+
id: serverId,
|
|
100
|
+
owner: getOptions.ownerId
|
|
101
|
+
}, (value) => value).andThen((value) => isRecord(value) ? AsyncResult.ok(serverOf(value)) : AsyncResult.err(notFound())),
|
|
102
|
+
create: (organizationId, server) => save(organizationId, void 0, server),
|
|
103
|
+
update: (organizationId, serverId, fields) => save(organizationId, serverId, fields),
|
|
104
|
+
remove: (serverId) => call("delete_connector_server", { id: serverId }, (value) => recordsOf(value, "delete_connector_server").map(grantOf)).andThen(revokeAll)
|
|
105
|
+
},
|
|
106
|
+
grants: {
|
|
107
|
+
record: (serverId, userId, credentialRef, recordOptions = {}) => service("record_connector_grant", {
|
|
108
|
+
server_id: serverId,
|
|
109
|
+
owner: userId,
|
|
110
|
+
credential_ref: credentialRef,
|
|
111
|
+
scopes: recordOptions.scopes,
|
|
112
|
+
expires_at: instantArg(recordOptions.expiresAt)
|
|
113
|
+
}, (value) => recordOf(value, "record_connector_grant")).andThen((row) => {
|
|
114
|
+
const grant = grantOf(row["grant"]);
|
|
115
|
+
const replaced = isRecord(row["replaced"]) ? grantOf(row["replaced"]) : void 0;
|
|
116
|
+
return replaced !== void 0 && JSON.stringify(replaced.credentialRef) !== JSON.stringify(grant.credentialRef) ? revokeCredential(replaced).map(() => grant) : AsyncResult.ok(grant);
|
|
117
|
+
}),
|
|
118
|
+
revoke: (grantId) => call("revoke_connector_grant", { id: grantId }, (value) => value).andThen((value) => isRecord(value) ? revokeCredential(grantOf(value)) : AsyncResult.ok(false)),
|
|
119
|
+
expiring: (before, expiringOptions = {}) => service("expiring_connector_grants", {
|
|
120
|
+
before: before.toString(),
|
|
121
|
+
max_rows: expiringOptions.limit
|
|
122
|
+
}, (value) => recordsOf(value, "expiring_connector_grants").map(grantOf)),
|
|
123
|
+
renew: (grantId, expiresAt) => service("renew_connector_grant", {
|
|
124
|
+
id: grantId,
|
|
125
|
+
expires_at: expiresAt.toString()
|
|
126
|
+
}, (value) => value === true)
|
|
127
|
+
},
|
|
128
|
+
sessions: {
|
|
129
|
+
get: (serverId, chatKey) => call("get_connector_session", {
|
|
130
|
+
server_id: serverId,
|
|
131
|
+
chat_key: chatKey ?? ""
|
|
132
|
+
}, (value) => isRecord(value) ? {
|
|
133
|
+
sessionId: optionalText(value["session_id"]),
|
|
134
|
+
initializeResult: isRecord(value["initialize_result"]) ? value["initialize_result"] : void 0,
|
|
135
|
+
expiresAt: instant(value["expires_at"])
|
|
136
|
+
} : void 0),
|
|
137
|
+
save: (serverId, session) => call("save_connector_session", {
|
|
138
|
+
server_id: serverId,
|
|
139
|
+
chat_key: session.chatKey ?? "",
|
|
140
|
+
session_id: session.sessionId,
|
|
141
|
+
initialize_result: session.initializeResult
|
|
142
|
+
}, (value) => value === true),
|
|
143
|
+
forget: (serverId, chatKey) => call("save_connector_session", {
|
|
144
|
+
server_id: serverId,
|
|
145
|
+
chat_key: chatKey ?? ""
|
|
146
|
+
}, (value) => value === true),
|
|
147
|
+
purge: () => service("purge_connector_sessions", {}, Number)
|
|
148
|
+
},
|
|
149
|
+
fingerprints: {
|
|
150
|
+
check: (serverId, fingerprint, tools) => call("check_connector_fingerprint", {
|
|
151
|
+
server_id: serverId,
|
|
152
|
+
fingerprint,
|
|
153
|
+
tools
|
|
154
|
+
}, (value) => {
|
|
155
|
+
const status = textOf(value);
|
|
156
|
+
return STATUSES.has(status) ? status : "pending";
|
|
157
|
+
}),
|
|
158
|
+
approve: (serverId, fingerprint) => decide(serverId, fingerprint, true),
|
|
159
|
+
reject: (serverId, fingerprint) => decide(serverId, fingerprint, false)
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
//#endregion
|
|
164
|
+
export { createConnectors, rpcTransport, sqlTransport };
|