better-supabase 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +299 -41
- package/dist/access-sql-B0dF-SoF.js +181 -0
- package/dist/actor-CQTlc1Hh.d.ts +43 -0
- package/dist/adapter-Bc1o3zyy.js +1106 -0
- package/dist/agents-CVHGd7It.d.ts +94 -0
- package/dist/ai-cache-CBWs1W0k.js +80 -0
- package/dist/ai-cache-DaDu_G5L.d.ts +64 -0
- package/dist/ai-chat-7amvXjmQ.d.ts +590 -0
- package/dist/ai-chat-B24UI962.js +743 -0
- package/dist/ai-files-CSPNswUY.js +319 -0
- package/dist/ai-sdk/agents/index.d.ts +74 -0
- package/dist/ai-sdk/agents/index.js +159 -0
- package/dist/ai-sdk/batches/index.d.ts +74 -0
- package/dist/ai-sdk/batches/index.js +180 -0
- package/dist/ai-sdk/cache/index.d.ts +38 -0
- package/dist/ai-sdk/cache/index.js +127 -0
- package/dist/ai-sdk/chat/index.d.ts +2 -0
- package/dist/ai-sdk/chat/index.js +246 -0
- package/dist/ai-sdk/embeddings/index.d.ts +3 -0
- package/dist/ai-sdk/embeddings/index.js +2 -0
- package/dist/ai-sdk/files/index.d.ts +61 -0
- package/dist/ai-sdk/files/index.js +111 -0
- package/dist/ai-sdk/index.d.ts +145 -0
- package/dist/ai-sdk/index.js +174 -0
- package/dist/ai-sdk/mcp/index.d.ts +102 -0
- package/dist/ai-sdk/mcp/index.js +362 -0
- package/dist/ai-sdk/memory/index.d.ts +67 -0
- package/dist/ai-sdk/memory/index.js +175 -0
- package/dist/ai-sdk/react/index.d.ts +2 -0
- package/dist/ai-sdk/react/index.js +3 -0
- package/dist/ai-sdk/react/server.d.ts +6 -0
- package/dist/ai-sdk/react/server.js +7 -0
- package/dist/ai-sdk/workflow/index.d.ts +249 -0
- package/dist/ai-sdk/workflow/index.js +575 -0
- package/dist/ai-sdk/workflow/react/index.d.ts +20 -0
- package/dist/ai-sdk/workflow/react/index.js +66 -0
- package/dist/ai-sdk/workflow/react/server.d.ts +10 -0
- package/dist/ai-sdk/workflow/react/server.js +12 -0
- package/dist/ai-tasks-Cd1HMFvB.d.ts +131 -0
- package/dist/announcements-CiyOs-xP.js +107 -0
- package/dist/announcements-ZRGnScWI.d.ts +72 -0
- package/dist/api-keys-rCGtKaZA.d.ts +156 -0
- package/dist/assistant-DwdpDH1q.d.ts +147 -0
- package/dist/astro/index.d.ts +86 -0
- package/dist/astro/index.js +93 -0
- package/dist/attributes-5dYul0u0.js +13 -0
- package/dist/auth-link-BjFPqwLz.d.ts +97 -0
- package/dist/auth-link-DrDX9KOT.js +114 -0
- package/dist/authorization-BFCqamMs.d.ts +172 -0
- package/dist/before-route-CnR0C0Jr.js +30 -0
- package/dist/bind-Bu_ZNa3W.d.ts +62 -0
- package/dist/bind-l4kAvYSv.js +97 -0
- package/dist/block-events-CrT8r7Fe.js +76 -0
- package/dist/block-fields-GFkxl4dP.js +49 -0
- package/dist/block-fields-SJ6fEf3o.d.ts +31 -0
- package/dist/block-helpers-CKtbFcRv.d.ts +37 -0
- package/dist/block-helpers-DWHxHsEQ.js +190 -0
- package/dist/block-hooks-BmjMyXTa.js +114 -0
- package/dist/block-hooks-plbZ0AbJ.d.ts +107 -0
- package/dist/{kit-transport-DJlHQUBU.js → block-transport-BLr-ZgLc.js} +11 -7
- package/dist/block-transport-DvaoPuZ9.d.ts +48 -0
- package/dist/blocks/agents/index.d.ts +3 -0
- package/dist/blocks/agents/index.js +123 -0
- package/dist/blocks/ai-cache/index.d.ts +3 -0
- package/dist/blocks/ai-cache/index.js +3 -0
- package/dist/blocks/ai-chat/index.d.ts +31 -0
- package/dist/blocks/ai-chat/index.js +5 -0
- package/dist/blocks/ai-chat/react/index.d.ts +77 -0
- package/dist/blocks/ai-chat/react/index.js +387 -0
- package/dist/blocks/ai-chat/react/server.d.ts +16 -0
- package/dist/blocks/ai-chat/react/server.js +14 -0
- package/dist/blocks/ai-files/index.d.ts +14 -0
- package/dist/blocks/ai-files/index.js +3 -0
- package/dist/blocks/ai-providers/index.d.ts +7 -0
- package/dist/blocks/ai-providers/index.js +211 -0
- package/dist/blocks/ai-tasks/index.d.ts +3 -0
- package/dist/blocks/ai-tasks/index.js +203 -0
- package/dist/blocks/announcements/index.d.ts +3 -0
- package/dist/blocks/announcements/index.js +3 -0
- package/dist/blocks/announcements/react/index.d.ts +31 -0
- package/dist/blocks/announcements/react/index.js +86 -0
- package/dist/blocks/announcements/react/server.d.ts +6 -0
- package/dist/blocks/announcements/react/server.js +7 -0
- package/dist/blocks/api-keys/index.d.ts +35 -0
- package/dist/blocks/api-keys/index.js +334 -0
- package/dist/blocks/attachments/index.d.ts +210 -0
- package/dist/blocks/attachments/index.js +222 -0
- package/dist/blocks/audit/index.d.ts +366 -0
- package/dist/blocks/audit/index.js +714 -0
- package/dist/blocks/billing/index.d.ts +265 -0
- package/dist/blocks/billing/index.js +400 -0
- package/dist/blocks/comments/index.d.ts +200 -0
- package/dist/blocks/comments/index.js +207 -0
- package/dist/blocks/connectors/index.d.ts +3 -0
- package/dist/blocks/connectors/index.js +164 -0
- package/dist/blocks/data-lifecycle/index.d.ts +251 -0
- package/dist/blocks/data-lifecycle/index.js +353 -0
- package/dist/blocks/entitlements/index.d.ts +14 -0
- package/dist/blocks/entitlements/index.js +25 -0
- package/dist/blocks/flags/index.d.ts +226 -0
- package/dist/blocks/flags/index.js +282 -0
- package/dist/blocks/inbox/index.d.ts +6 -0
- package/dist/blocks/inbox/index.js +499 -0
- package/dist/blocks/inbox/react/index.d.ts +2 -0
- package/dist/blocks/inbox/react/index.js +225 -0
- package/dist/blocks/inbox/react/server.d.ts +10 -0
- package/dist/blocks/inbox/react/server.js +12 -0
- package/dist/blocks/index.d.ts +65 -0
- package/dist/blocks/index.js +77 -0
- package/dist/blocks/jobs/index.d.ts +297 -0
- package/dist/blocks/jobs/index.js +1051 -0
- package/dist/blocks/knowledge/index.d.ts +3 -0
- package/dist/blocks/knowledge/index.js +3 -0
- package/dist/blocks/memory/index.d.ts +8 -0
- package/dist/blocks/memory/index.js +289 -0
- package/dist/blocks/notifications/index.d.ts +297 -0
- package/dist/blocks/notifications/index.js +425 -0
- package/dist/blocks/notifications/react/index.d.ts +44 -0
- package/dist/blocks/notifications/react/index.js +67 -0
- package/dist/blocks/notifications/react/server.d.ts +6 -0
- package/dist/blocks/notifications/react/server.js +7 -0
- package/dist/blocks/onboarding/index.d.ts +3 -0
- package/dist/blocks/onboarding/index.js +64 -0
- package/dist/blocks/onboarding/react/index.d.ts +28 -0
- package/dist/blocks/onboarding/react/index.js +78 -0
- package/dist/blocks/onboarding/react/server.d.ts +7 -0
- package/dist/blocks/onboarding/react/server.js +7 -0
- package/dist/blocks/organizations/index.d.ts +241 -0
- package/dist/blocks/organizations/index.js +400 -0
- package/dist/blocks/outbox/index.d.ts +3 -0
- package/dist/blocks/outbox/index.js +266 -0
- package/dist/blocks/profiles/index.d.ts +40 -0
- package/dist/blocks/profiles/index.js +28 -0
- package/dist/blocks/push/index.d.ts +185 -0
- package/dist/blocks/push/index.js +258 -0
- package/dist/blocks/settings/index.d.ts +89 -0
- package/dist/blocks/settings/index.js +104 -0
- package/dist/blocks/sso/index.d.ts +198 -0
- package/dist/blocks/sso/index.js +1297 -0
- package/dist/blocks/usage/index.d.ts +4 -0
- package/dist/blocks/usage/index.js +233 -0
- package/dist/blocks/waitlist/index.d.ts +117 -0
- package/dist/blocks/waitlist/index.js +132 -0
- package/dist/blocks/webhooks/index.d.ts +304 -0
- package/dist/{webhooks → blocks/webhooks}/index.js +468 -148
- package/dist/blocks/workflow-builder/index.d.ts +21 -0
- package/dist/blocks/workflow-builder/index.js +5 -0
- package/dist/blocks/workflow-builder/react/index.d.ts +47 -0
- package/dist/blocks/workflow-builder/react/index.js +119 -0
- package/dist/blocks/workflow-builder/react/server.d.ts +8 -0
- package/dist/blocks/workflow-builder/react/server.js +11 -0
- package/dist/blocks/workflows/index.d.ts +3 -0
- package/dist/blocks/workflows/index.js +3 -0
- package/dist/blocks/workflows/react/index.d.ts +47 -0
- package/dist/blocks/workflows/react/index.js +137 -0
- package/dist/blocks/workflows/react/server.d.ts +8 -0
- package/dist/blocks/workflows/react/server.js +11 -0
- package/dist/{index-SaTsEfGP.d.ts → bucket-Cl46E3jS.d.ts} +134 -91
- package/dist/{simplify-_0oUKqCd.js → build-BXIzE6Xv.js} +222 -124
- package/dist/{channel-FQW-CnGR.d.ts → channel-_2Mx1Oyu.d.ts} +2 -2
- package/dist/channels-CkgQ_X60.js +114 -0
- package/dist/chat-sdk/index.d.ts +303 -0
- package/dist/chat-sdk/index.js +733 -0
- package/dist/chat-sdk/react/index.d.ts +2 -0
- package/dist/chat-sdk/react/index.js +3 -0
- package/dist/chat-sdk/react/server.d.ts +3 -0
- package/dist/chat-sdk/react/server.js +2 -0
- package/dist/claims-DDBQT6BK.js +61 -0
- package/dist/{claims-BAf6c7is.js → claims-PqzCxaTD.js} +39 -2
- package/dist/cli/bin.js +1 -1
- package/dist/cli/{codemod-DqV7612m.js → codemod-Bl_tQpHn.js} +105 -2
- package/dist/cli/config-B9HkL8nF.js +2 -0
- package/dist/cli/config-DU7EJImt.js +49 -0
- package/dist/cli/config-NiPxAmUF.js +1077 -0
- package/dist/cli/{dist-xn4wlboc.js → dist-DRAVaE6w.js} +111 -1
- package/dist/cli/{doctor-L7Z8mYTx.js → doctor-B4JOm_ox.js} +992 -316
- package/dist/cli/{env-DmKv_G4A.js → env-CJLbUVPB.js} +1 -1
- package/dist/cli/{env-jIFUADLY.js → env-qXgyMV6r.js} +2 -2
- package/dist/cli/fresh-import-BeYf9I3x.js +40 -0
- package/dist/cli/gen-BGLb_zou.js +3100 -0
- package/dist/cli/gen-DAH8FM2W.js +2 -0
- package/dist/cli/index.d.ts +44 -5
- package/dist/cli/index.js +7 -7
- package/dist/cli/{init-Saf5-R9T.js → init-BIIwclPg.js} +242 -27
- package/dist/cli/{introspect--H7oGmcd.js → introspect-DNUTuNvb.js} +5 -5
- package/dist/cli/{io-k41_z-jT.js → io-DI1mTdSA.js} +12 -3
- package/dist/cli/{keys-ByKHnvP9.js → keys-BGCnnb-s.js} +8 -6
- package/dist/cli/{ohash-D7bG_EOb.js → ohash-BjQY1cBb.js} +1 -1
- package/dist/cli/{openapi-Cp5Fyta-.js → openapi-BlRJ18s3.js} +2 -2
- package/dist/cli/{project-B_GeXyHh.js → project-DZRaBaY7.js} +11 -6
- package/dist/cli/read-sets-CETOSFx4.js +223 -0
- package/dist/cli/{run-BKR2W_79.js → run-DNWxHynX.js} +33 -23
- package/dist/cli/{seed-CUlqWh-8.js → seed-DQzqT7LP.js} +8 -6
- package/dist/cli/{skills-LJJIhLFR.js → skills-QQs4q68J.js} +3 -2
- package/dist/cli/sql-D0GUtUPp.js +536 -0
- package/dist/cli/{config-CPVpXP5I.js → supabase-toml-B-bIukQF.js} +72 -942
- package/dist/cli/typegen-version-DeFbtzYI.js +8 -0
- package/dist/cli/{version-BDJuO0UR.js → version-hr88OZG0.js} +1 -1
- package/dist/client/index.d.ts +3 -2
- package/dist/client/index.js +11 -71
- package/dist/client/native/index.d.ts +228 -0
- package/dist/client/native/index.js +361 -0
- package/dist/client-CI0Z2zWX.js +277 -0
- package/dist/cloud-event-BnmD5fb9.js +46 -0
- package/dist/cloud-event-C1JCc1bH.d.ts +50 -0
- package/dist/{compiler-BXH_aZ7N.d.ts → compiler-DY_wkj4R.d.ts} +2 -2
- package/dist/compose-BIBNgAnq.js +53 -0
- package/dist/composite-Bt1YK3Ke.d.ts +146 -0
- package/dist/composite-DhE66P5u.js +130 -0
- package/dist/config/index.d.ts +6 -4
- package/dist/config/index.js +5 -5
- package/dist/{config-T_ejwyd3.d.ts → config-D44Y7PAv.d.ts} +406 -205
- package/dist/{config-DreERlKo.js → config-Dn7F5k9A.js} +62 -14
- package/dist/connector-Dv8kK0MO.d.ts +107 -0
- package/dist/connectors-hkLCwyEz.d.ts +120 -0
- package/dist/context-BCrWe7ow.d.ts +237 -0
- package/dist/credentials/index.d.ts +31 -0
- package/dist/credentials/index.js +168 -0
- package/dist/cron-DVPUg5k3.js +145 -0
- package/dist/csv-CPAzEmB6.js +25 -0
- package/dist/db-exception-CnWcYPxL.js +15 -0
- package/dist/{define-cNKzqwL_.js → define-B-TVjC25.js} +784 -227
- package/dist/{define-Bp_BZa5h.d.ts → define-CJJkkr1-.d.ts} +353 -61
- package/dist/edge/index.d.ts +69 -11
- package/dist/edge/index.js +191 -75
- package/dist/elysia/index.d.ts +59 -0
- package/dist/elysia/index.js +62 -0
- package/dist/embeddings-4ZvFzjsU.js +127 -0
- package/dist/embeddings-C9KGQnXt.d.ts +68 -0
- package/dist/{refresh-BTrQ_ZTp.d.ts → ended-jLfvw8h-.d.ts} +20 -2
- package/dist/{entitlements-DUxU4oHe.d.ts → entitlements-DHrY2UDZ.d.ts} +16 -7
- package/dist/entitlements-DRl6ZJUm.js +24 -0
- package/dist/envelope-DqnYGRw7.js +47 -0
- package/dist/{errors-DtwXa6b8.js → errors-B11Duf73.js} +82 -13
- package/dist/errors-DLjJHPLK.js +44 -0
- package/dist/escape-like-DHfx6jRr.js +7 -0
- package/dist/escape-like-ImTK0ps_.d.ts +15 -0
- package/dist/eve/index.d.ts +220 -0
- package/dist/eve/index.js +504 -0
- package/dist/eve-gT2Fpjut.d.ts +151 -0
- package/dist/events/index.d.ts +4 -3
- package/dist/events/index.js +9 -50
- package/dist/events-DWDhx77e.d.ts +549 -0
- package/dist/executor-Bq28caBo.js +718 -0
- package/dist/executor-C-R4pucm.js +83 -0
- package/dist/executor-CaWigTyR.d.ts +148 -0
- package/dist/executor-D14tGopJ.d.ts +36 -0
- package/dist/{executor-Cghdstwu.d.ts → executor-DbvExCFC.d.ts} +7 -1
- package/dist/{sql-Coh6n4cC.js → executor-De1Of3m3.js} +210 -11
- package/dist/executor-DvsBbNBS.d.ts +261 -0
- package/dist/expo/index.d.ts +79 -0
- package/dist/expo/index.js +129 -0
- package/dist/expo-sqlite/index.d.ts +58 -0
- package/dist/expo-sqlite/index.js +104 -0
- package/dist/field-errors-BFOa7WhB.d.ts +99 -0
- package/dist/field-errors-VF1yb8yI.js +13 -0
- package/dist/framework-CONDyPYx.js +51 -0
- package/dist/framework-DuVb4Xa8.d.ts +25 -0
- package/dist/gateway-C1ssRHnf.d.ts +130 -0
- package/dist/graph-BGyLLFLX.js +265 -0
- package/dist/h3/index.d.ts +59 -0
- package/dist/h3/index.js +55 -0
- package/dist/h3/v1/index.d.ts +63 -0
- package/dist/h3/v1/index.js +49 -0
- package/dist/history-BZih6SFP.js +64 -0
- package/dist/hono/index.d.ts +56 -7
- package/dist/hono/index.js +97 -45
- package/dist/{react-C_s7kiNz.js → hooks-1BTCJsiw.js} +104 -133
- package/dist/http-Cv4T29xh.js +40 -0
- package/dist/http-DdYadv-o.js +126 -0
- package/dist/image-url-pIVlO6R1.js +41 -0
- package/dist/impersonation-DcqaTBHx.js +148 -0
- package/dist/inbox-i7E1ppo6.d.ts +384 -0
- package/dist/index-ACiNPN4Z.d.ts +74 -0
- package/dist/{index-DgILJRXj.d.ts → index-Bepi-Hgg.d.ts} +91 -28
- package/dist/index-BkWT_uBO.d.ts +51 -0
- package/dist/index-BpFYMsi0.d.ts +53 -0
- package/dist/{index-C7f8cOBM.d.ts → index-Bxih3l0u.d.ts} +2 -2
- package/dist/index-CaxrMD1A.d.ts +1 -0
- package/dist/index-ClmjK_o-.d.ts +55 -0
- package/dist/index-CtuakVRc.d.ts +267 -0
- package/dist/index-D48jVS-N.d.ts +246 -0
- package/dist/index-DDrYaUcq.d.ts +138 -0
- package/dist/index-DQh4VCc9.d.ts +98 -0
- package/dist/{live-D9W2M5aO.d.ts → index-DunNRdnT.d.ts} +136 -38
- package/dist/index.d.ts +65 -18
- package/dist/index.js +42 -14
- package/dist/invalidate-BBqhpxyB.d.ts +19 -0
- package/dist/json-CEnpTHlZ.js +16 -0
- package/dist/json-schema-CvER4kgT.js +502 -0
- package/dist/keys-4MnkWTTh.js +35 -0
- package/dist/kit-B5tid-q5.d.ts +60 -0
- package/dist/kit-Fm-Fv7q5.js +78 -0
- package/dist/knowledge-BXBbT0Tr.d.ts +176 -0
- package/dist/knowledge-CDmiMLew.js +255 -0
- package/dist/lint/index.d.ts +1 -1
- package/dist/lint/index.js +37 -0
- package/dist/list/index.d.ts +3 -2
- package/dist/list/index.js +1 -444
- package/dist/{index-fag8VJZ2.d.ts → list-query-BRt-zDF7.d.ts} +20 -12
- package/dist/list-query-gl808ac1.js +459 -0
- package/dist/{live-CdJBOc4f.js → live-CTAZQkwl.js} +99 -14
- package/dist/logger-DWVYUmwi.d.ts +18 -0
- package/dist/mcp/index.d.ts +38 -11
- package/dist/mcp/index.js +82 -46
- package/dist/mcp/sdk/index.d.ts +105 -0
- package/dist/mcp/sdk/index.js +126 -0
- package/dist/message-CaKlqdsX.js +219 -0
- package/dist/message-CfDoR0Y6.d.ts +94 -0
- package/dist/messages-B9-5887d.js +715 -0
- package/dist/messages-DYP0sUTe.d.ts +59 -0
- package/dist/{mfa-CusDgPaD.d.ts → mfa-Daak8ukG.d.ts} +8 -2
- package/dist/modules-DpPwzC7E.d.ts +192 -0
- package/dist/modules-dxrVK3ID.js +228 -0
- package/dist/nestjs/index.d.ts +68 -0
- package/dist/nestjs/index.js +164 -0
- package/dist/next/client/index.d.ts +35 -0
- package/dist/next/client/index.js +36 -0
- package/dist/next/image/index.js +3 -24
- package/dist/next/index.d.ts +150 -51
- package/dist/next/index.js +261 -107
- package/dist/node/index.d.ts +4 -0
- package/dist/node/index.js +210 -0
- package/dist/node-headers-AO06VhqH.d.ts +24 -0
- package/dist/node-headers-C71zNQHe.js +55 -0
- package/dist/nuxt/index.d.ts +60 -0
- package/dist/nuxt/index.js +64 -0
- package/dist/onboarding-BZGHYJks.d.ts +62 -0
- package/dist/openapi/index.d.ts +1 -1
- package/dist/openapi/index.js +3 -3
- package/dist/orpc/index.d.ts +70 -11
- package/dist/orpc/index.js +73 -24
- package/dist/otel/index.d.ts +7 -7
- package/dist/otel/index.js +87 -57
- package/dist/outbox-Cq7pPYvl.d.ts +161 -0
- package/dist/{plugin-o144f322.d.ts → plugin-FGY8UhYm.d.ts} +30 -10
- package/dist/plugin-tfXW1-qO.js +45 -0
- package/dist/plugins/actor/index.d.ts +2 -2
- package/dist/plugins/actor/index.js +3 -3
- package/dist/plugins/rules/index.d.ts +11 -4
- package/dist/plugins/rules/index.js +40 -13
- package/dist/plugins/soft-delete/index.d.ts +5 -4
- package/dist/plugins/soft-delete/index.js +10 -5
- package/dist/plugins/tenant/index.d.ts +2 -2
- package/dist/plugins/tenant/index.js +18 -11
- package/dist/plugins/timestamps/index.d.ts +5 -3
- package/dist/plugins/timestamps/index.js +6 -4
- package/dist/plugins/validation/index.d.ts +2 -2
- package/dist/plugins/validation/index.js +10 -6
- package/dist/{pool-C9voM4Kw.d.ts → pool-CAu2nLrL.d.ts} +2 -2
- package/dist/postgres/index.d.ts +4 -4
- package/dist/postgres/index.js +1 -2
- package/dist/{postgrest-CruYKAvV.d.ts → postgrest-BLVdEnfe.d.ts} +13 -3
- package/dist/powersync/index.d.ts +43 -0
- package/dist/powersync/index.js +199 -0
- package/dist/powersync/react/index.d.ts +87 -0
- package/dist/powersync/react/index.js +108 -0
- package/dist/{problem-BW1KhzSG.js → problem-BreOl8b8.js} +14 -3
- package/dist/{problem-Blxe8S31.d.ts → problem-DD8LZFjc.d.ts} +21 -3
- package/dist/provider-BH5UWZJ6.d.ts +113 -0
- package/dist/provider-Di3sRutW.js +57 -0
- package/dist/query/index.d.ts +4 -2
- package/dist/query/index.js +4 -3
- package/dist/{query-CCbo44lG.js → query-BQ-NaZon.js} +141 -24
- package/dist/{queue-BYUCjr59.d.ts → queue-CLJurhdy.d.ts} +258 -83
- package/dist/react/index.d.ts +11 -7
- package/dist/react/index.js +7 -3
- package/dist/react/native/index.d.ts +116 -0
- package/dist/react/native/index.js +130 -0
- package/dist/react/server.d.ts +28 -10
- package/dist/react/server.js +22 -5
- package/dist/react/session.d.ts +2 -2
- package/dist/react-4ZqkP8da.js +79 -0
- package/dist/react-F80mF4-t.js +409 -0
- package/dist/react-router/index.d.ts +83 -0
- package/dist/react-router/index.js +89 -0
- package/dist/react-topic-seAWjL3_.js +38 -0
- package/dist/{read-set-DQFt1N_Y.js → read-set-DuKWC9Mj.js} +67 -25
- package/dist/realtime/index.d.ts +4 -5
- package/dist/realtime/index.js +144 -82
- package/dist/refusal-CeJWxmkH.js +61 -0
- package/dist/refusal-D1rgbzNq.d.ts +15 -0
- package/dist/replicas-CwrYp5Zj.js +94 -0
- package/dist/{view-Bq64ki8-.js → resolve-D_IcnvFd.js} +239 -289
- package/dist/{resolve-C15TJq77.d.ts → resolve-KW8nCeL6.d.ts} +29 -45
- package/dist/{resource-CRxxwkQq.js → resource-BsvzCMlX.js} +4 -4
- package/dist/{resource-D8iqWMr-.d.ts → resource-D6Uc7Sk7.d.ts} +5 -5
- package/dist/respond-BUgsXNgk.js +91 -0
- package/dist/respond-DoBijysA.d.ts +93 -0
- package/dist/result-D7y2fT87.d.ts +282 -0
- package/dist/{result-BKiliPY7.js → result-DzUbqgdW.js} +27 -2
- package/dist/run-state-CPo-1X2B.d.ts +12 -0
- package/dist/run-state-CgBKzYMW.js +13 -0
- package/dist/search-CUWCRYKL.js +9 -0
- package/dist/server/index.d.ts +143 -21
- package/dist/server/index.js +46 -14
- package/dist/{respond-D2OQl62-.d.ts → server-CeVeeXwz.d.ts} +225 -80
- package/dist/session-ChiXDZdZ.d.ts +72 -0
- package/dist/shared-CBxosKK3.js +75 -0
- package/dist/{shared-D1dRUrAg.js → shared-CxWmcyqB.js} +2 -1
- package/dist/shared-DDSjEGDR.d.ts +11 -0
- package/dist/sign-in-BCV5S2WZ.d.ts +49 -0
- package/dist/sign-in-Cb1mwv6X.js +86 -0
- package/dist/{signers-Cc6r98SW.d.ts → signers-4y62_VIi.d.ts} +13 -9
- package/dist/simplify-DDO0j0LI.js +83 -0
- package/dist/solid/index.d.ts +131 -0
- package/dist/solid/index.js +344 -0
- package/dist/solid-start/index.d.ts +75 -0
- package/dist/solid-start/index.js +58 -0
- package/dist/{spec-pins-C3oc-Tdp.js → spec-pins--j6mTok4.js} +8 -1
- package/dist/{spec-pins-CqorWDnO.d.ts → spec-pins-C89s6DyW.d.ts} +7 -0
- package/dist/sql/index.d.ts +330 -194
- package/dist/sql/index.js +34901 -6489
- package/dist/ssr/index.d.ts +6 -5
- package/dist/ssr/index.js +3 -3
- package/dist/{standard-D7r6dMUu.js → standard-BK0cqJ7y.js} +4 -3
- package/dist/{standard-J4YgMOLm.d.ts → standard-CYsm7xpT.d.ts} +1 -1
- package/dist/stats-D_AD9GGu.js +1123 -0
- package/dist/storage/index.d.ts +5 -5
- package/dist/storage/index.js +1027 -368
- package/dist/store-BdH5ruDx.js +66 -0
- package/dist/store-CGjgWu5n.d.ts +68 -0
- package/dist/streams/index.d.ts +76 -0
- package/dist/streams/index.js +77 -0
- package/dist/streams/redis/index.d.ts +52 -0
- package/dist/streams/redis/index.js +185 -0
- package/dist/stripe-BMj5LtsT.js +38 -0
- package/dist/stripe-D04h-QBT.d.ts +136 -0
- package/dist/{support-Dk6vdmEw.js → support-BivNqSpK.js} +35 -12
- package/dist/{support-view-Da5peKFg.d.ts → support-view-33Oi07TT.d.ts} +1 -1
- package/dist/svelte/index.d.ts +114 -0
- package/dist/svelte/index.js +344 -0
- package/dist/sveltekit/index.d.ts +116 -0
- package/dist/sveltekit/index.js +106 -0
- package/dist/tags-B99_U9Pp.js +39 -0
- package/dist/tags-Cx-LnIQP.d.ts +30 -0
- package/dist/tanstack-db/index.d.ts +71 -0
- package/dist/tanstack-db/index.js +72 -0
- package/dist/tanstack-start/index.d.ts +75 -0
- package/dist/tanstack-start/index.js +95 -0
- package/dist/tee-CoEppCER.js +101 -0
- package/dist/{template-TxrGI5jR.js → template--jDkl3UP.js} +34 -13
- package/dist/template-CwO38Do8.d.ts +6 -0
- package/dist/temporal-BJGitm-h.js +79 -0
- package/dist/{temporal-required-CAt4Dc9Z.js → temporal-required-BVvW7SYJ.js} +3 -2
- package/dist/tenant-I1TEZ_BX.js +27 -0
- package/dist/tenant-icPeuUBN.d.ts +17 -0
- package/dist/testing/index.d.ts +343 -37
- package/dist/testing/index.js +1186 -79
- package/dist/timing-CyTQPubY.js +92 -0
- package/dist/ttl-Hr34gRu8.js +12 -0
- package/dist/{types-Dnf_wRDz.d.ts → types-6BdhkmZe.d.ts} +111 -45
- package/dist/types-BI-0Sl2v.d.ts +359 -0
- package/dist/types-C05bxW-W.d.ts +220 -0
- package/dist/types-DGs5L0VN.d.ts +192 -0
- package/dist/types-TaiEeBGA.d.ts +156 -0
- package/dist/usage-CrvrL2vw.d.ts +177 -0
- package/dist/user-change-XzvgafU4.js +130 -0
- package/dist/vault-CSO7ss5C.d.ts +50 -0
- package/dist/vercel-connect/index.d.ts +47 -0
- package/dist/vercel-connect/index.js +119 -0
- package/dist/{verify-Ce49ETPz.js → verify-DL41hbvY.js} +85 -13
- package/dist/verify-DPuWngD4.d.ts +172 -0
- package/dist/{version-DM_Roffb.js → version-Bvv6aLjZ.js} +1 -1
- package/dist/view-BeFcRV6G.js +99 -0
- package/dist/{view-BEf0diC5.d.ts → view-DbxLNu8L.d.ts} +35 -32
- package/dist/vue/index.d.ts +141 -0
- package/dist/vue/index.js +362 -0
- package/dist/watch-DI34G86j.d.ts +60 -0
- package/dist/watch-Xuxrvxq-.js +122 -0
- package/dist/{wire-D2dT86vi.js → wire-DtZQ4sdE.js} +15 -5
- package/dist/workflow-builder-DJ1oHn8g.js +398 -0
- package/dist/workflow-sdk/builder/index.d.ts +85 -0
- package/dist/workflow-sdk/builder/index.js +250 -0
- package/dist/workflow-sdk/index.d.ts +14 -0
- package/dist/workflow-sdk/index.js +3 -0
- package/dist/workflow-sdk/world/index.d.ts +107 -0
- package/dist/workflow-sdk/world/index.js +702 -0
- package/dist/workflow-sdk-B3yLD6Br.d.ts +98 -0
- package/dist/workflow-sdk-C2WJ_G2O.js +173 -0
- package/dist/workflow-sdk-world-D-prir6O.js +1397 -0
- package/dist/workflows-B0j9WKPu.d.ts +185 -0
- package/dist/workflows-wu1WWBn7.js +216 -0
- package/package.json +470 -29
- package/schemas/ai-message-v1.json +258 -0
- package/schemas/config-v1.json +1074 -140
- package/schemas/doctor-report-v1.json +21 -1
- package/schemas/snapshot-v2.json +8 -0
- package/skills/better-supabase/SKILL.md +41 -12
- package/skills/better-supabase/references/frontend.md +96 -0
- package/skills/better-supabase/references/plugins.md +10 -6
- package/skills/better-supabase/references/troubleshooting.md +2 -1
- package/skills/better-supabase-api/SKILL.md +76 -22
- package/skills/better-supabase-api/references/adapters.md +207 -0
- package/skills/better-supabase-api/references/ai.md +125 -0
- package/skills/better-supabase-api/references/expo.md +65 -0
- package/skills/better-supabase-api/references/powersync.md +35 -0
- package/skills/better-supabase-api/references/streams-credentials.md +105 -0
- package/skills/better-supabase-auth/SKILL.md +62 -18
- package/skills/better-supabase-auth/references/authorization-providers.md +51 -0
- package/skills/better-supabase-testing/SKILL.md +3 -1
- package/dist/cli/config-dtoekM0v.js +0 -2
- package/dist/cli/gen-BJc9vdyu.js +0 -2
- package/dist/cli/gen-C2osRcr5.js +0 -2204
- package/dist/cli/read-sets-BfMQcKy8.js +0 -289
- package/dist/cli/sql-DzPbfngx.js +0 -348
- package/dist/entitlements-CTEBm7IB.js +0 -20
- package/dist/events-aIO7vsIk.d.ts +0 -230
- package/dist/executor-BunPOO-k.d.ts +0 -402
- package/dist/executor-XycESQPH.js +0 -94
- package/dist/impersonation-VfaGc4Q_.js +0 -41
- package/dist/index-BGdgBPdf.d.ts +0 -161
- package/dist/index-DOESKG27.d.ts +0 -100
- package/dist/index-DmXSxbLi.d.ts +0 -62
- package/dist/index-Dxn2a5cw.d.ts +0 -50
- package/dist/jobs/index.d.ts +0 -226
- package/dist/jobs/index.js +0 -1007
- package/dist/json-schema-m1fiwKgN.js +0 -208
- package/dist/kit-events-CTFDfSwb.js +0 -60
- package/dist/kit-transport-B82k1djG.d.ts +0 -33
- package/dist/kits-CGLLrNPd.js +0 -157
- package/dist/notifications/index.d.ts +0 -162
- package/dist/notifications/index.js +0 -264
- package/dist/orgs/index.d.ts +0 -132
- package/dist/orgs/index.js +0 -245
- package/dist/permdock-sql-C2Inc6Xc.d.ts +0 -29
- package/dist/permdock-sql-DgOfeixi.js +0 -51
- package/dist/plugin-DwARMuQp.js +0 -59
- package/dist/server-Csx2sRjg.js +0 -655
- package/dist/stats-Bqob3WqT.js +0 -592
- package/dist/support-DT-OhSxD.d.ts +0 -88
- package/dist/template-mbvlysOo.d.ts +0 -6
- package/dist/temporal-CVlIV2DZ.js +0 -40
- package/dist/user-change-CHFEUro1.js +0 -49
- package/dist/webhooks/index.d.ts +0 -285
- package/skills/better-supabase-auth/references/permdock.md +0 -100
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { n as dbError } from "../errors-B11Duf73.js";
|
|
2
|
+
import { r as err } from "../result-DzUbqgdW.js";
|
|
3
|
+
import { n as watch, t as sqliteTables } from "../watch-Xuxrvxq-.js";
|
|
4
|
+
import { a as sqliteCompiler, c as quoteSqliteIdent, i as checkSqlite, l as sqliteValue, n as postgrestTimestamp, o as compileSqlite, r as powersyncExecutor, s as likeToGlob, t as fromSqliteError } from "../executor-Bq28caBo.js";
|
|
5
|
+
//#region src/powersync/auth.ts
|
|
6
|
+
/**
|
|
7
|
+
* Syncs while a user is signed in: connects on sign-in, and on sign-out
|
|
8
|
+
* (or a different user) disconnects and clears the local database. An app
|
|
9
|
+
* that starts signed out clears it too, since the rows may belong to a user
|
|
10
|
+
* whose session ended while the app was closed. Steps
|
|
11
|
+
* run one at a time in order. Returns a function that stops following the
|
|
12
|
+
* session and disconnects.
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* useEffect(() => syncWithAuth(powersync, bs.auth, { connector }), []);
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
function syncWithAuth(db, auth, options) {
|
|
19
|
+
const clear = options.clearOnSignOut ?? true;
|
|
20
|
+
let user;
|
|
21
|
+
let stopped = false;
|
|
22
|
+
let queue = Promise.resolve();
|
|
23
|
+
const enqueue = (step) => {
|
|
24
|
+
queue = queue.then(step).catch((cause) => {
|
|
25
|
+
options.onError?.(cause);
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
const leave = () => clear ? db.disconnectAndClear() : db.disconnect();
|
|
29
|
+
const follow = () => {
|
|
30
|
+
if (stopped) return;
|
|
31
|
+
const snapshot = auth.current();
|
|
32
|
+
if (snapshot.status === "loading") return;
|
|
33
|
+
const next = snapshot.status === "signed-in" ? snapshot.user.id : null;
|
|
34
|
+
if (next === user) return;
|
|
35
|
+
const previous = user;
|
|
36
|
+
user = next;
|
|
37
|
+
if (previous === void 0 ? next === null && clear : previous !== null) enqueue(leave);
|
|
38
|
+
if (next !== null) enqueue(() => db.connect(options.connector));
|
|
39
|
+
};
|
|
40
|
+
follow();
|
|
41
|
+
const unsubscribe = auth.subscribe(follow);
|
|
42
|
+
return () => {
|
|
43
|
+
stopped = true;
|
|
44
|
+
unsubscribe();
|
|
45
|
+
enqueue(() => db.disconnect());
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
//#region src/powersync/connector.ts
|
|
50
|
+
const OUTCOMES = {
|
|
51
|
+
network: "retry",
|
|
52
|
+
timeout: "retry",
|
|
53
|
+
aborted: "retry",
|
|
54
|
+
rate_limited: "retry",
|
|
55
|
+
quota_exceeded: "retry",
|
|
56
|
+
serialization: "retry",
|
|
57
|
+
unauthorized: "retry",
|
|
58
|
+
unexpected: "retry",
|
|
59
|
+
conflict: "conflict",
|
|
60
|
+
stale: "conflict",
|
|
61
|
+
foreign_key: "conflict",
|
|
62
|
+
not_found: "discard",
|
|
63
|
+
forbidden: "discard",
|
|
64
|
+
check: "discard",
|
|
65
|
+
not_null: "discard",
|
|
66
|
+
exclusion: "discard",
|
|
67
|
+
invalid_input: "discard",
|
|
68
|
+
invalid_value: "discard",
|
|
69
|
+
raised: "discard",
|
|
70
|
+
invalid_request: "discard",
|
|
71
|
+
max_affected: "discard",
|
|
72
|
+
validation: "discard",
|
|
73
|
+
multiple_rows: "discard",
|
|
74
|
+
unsupported: "discard"
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* The default for a failed upload: transient errors retry, a newer server
|
|
78
|
+
* row is a conflict, and a change the server will never accept is
|
|
79
|
+
* discarded so it doesn't block the queue.
|
|
80
|
+
*/
|
|
81
|
+
function uploadOutcome(kind) {
|
|
82
|
+
return OUTCOMES[kind];
|
|
83
|
+
}
|
|
84
|
+
function rejectedStore() {
|
|
85
|
+
let changes = [];
|
|
86
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
87
|
+
const set = (next) => {
|
|
88
|
+
changes = next;
|
|
89
|
+
for (const listener of [...listeners]) listener();
|
|
90
|
+
};
|
|
91
|
+
return {
|
|
92
|
+
current: () => changes,
|
|
93
|
+
subscribe: (listener) => {
|
|
94
|
+
listeners.add(listener);
|
|
95
|
+
return () => {
|
|
96
|
+
listeners.delete(listener);
|
|
97
|
+
};
|
|
98
|
+
},
|
|
99
|
+
dismiss: (change) => {
|
|
100
|
+
set(change ? changes.filter((each) => each !== change) : []);
|
|
101
|
+
},
|
|
102
|
+
add: (change) => {
|
|
103
|
+
set([...changes, change]);
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function replay(route, entry) {
|
|
108
|
+
if (typeof route === "function") return route(entry);
|
|
109
|
+
const data = entry.opData ?? {};
|
|
110
|
+
switch (entry.op) {
|
|
111
|
+
case "PUT": return route.upsert({
|
|
112
|
+
...data,
|
|
113
|
+
id: entry.id
|
|
114
|
+
});
|
|
115
|
+
case "PATCH": return route.update(entry.id, data);
|
|
116
|
+
case "DELETE": return route.delete(entry.id);
|
|
117
|
+
default: return Promise.resolve(err(dbError("unsupported", `better-supabase: unknown PowerSync op ${entry.op}`)));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* A PowerSync connector that authenticates with the Supabase session and
|
|
122
|
+
* replays queued changes through repositories. Changes upload in batches;
|
|
123
|
+
* a transient error keeps the batch queued for PowerSync's retry, and
|
|
124
|
+
* refused changes land in `rejected` instead of blocking the queue. A table
|
|
125
|
+
* without a route stops the upload with an error, so no change is dropped
|
|
126
|
+
* silently. When the session is gone (the refresh token was revoked), the
|
|
127
|
+
* upload stops until the user signs in again.
|
|
128
|
+
*
|
|
129
|
+
* ```ts
|
|
130
|
+
* const connector = createUploadConnector({
|
|
131
|
+
* endpoint: process.env.EXPO_PUBLIC_POWERSYNC_URL,
|
|
132
|
+
* supabase,
|
|
133
|
+
* tables: { customers: bs.db.customers },
|
|
134
|
+
* });
|
|
135
|
+
* await powersync.connect(connector);
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
function createUploadConnector(options) {
|
|
139
|
+
const rejected = rejectedStore();
|
|
140
|
+
const batchSize = options.batchSize ?? 100;
|
|
141
|
+
const signedIn = async () => {
|
|
142
|
+
const { data } = await options.supabase.auth.getSession();
|
|
143
|
+
return data.session !== null;
|
|
144
|
+
};
|
|
145
|
+
return {
|
|
146
|
+
rejected,
|
|
147
|
+
async fetchCredentials() {
|
|
148
|
+
const { data } = await options.supabase.auth.getSession();
|
|
149
|
+
const session = data.session;
|
|
150
|
+
if (!session) return null;
|
|
151
|
+
return {
|
|
152
|
+
endpoint: options.endpoint,
|
|
153
|
+
token: session.access_token,
|
|
154
|
+
...session.expires_at === void 0 ? {} : { expiresAt: /* @__PURE__ */ new Date(session.expires_at * 1e3) }
|
|
155
|
+
};
|
|
156
|
+
},
|
|
157
|
+
async uploadData(database) {
|
|
158
|
+
const batch = await database.getCrudBatch(batchSize);
|
|
159
|
+
if (!batch) return;
|
|
160
|
+
for (const entry of batch.crud) {
|
|
161
|
+
const route = options.tables[entry.table];
|
|
162
|
+
if (!route) throw new Error(`better-supabase: no upload route for PowerSync table "${entry.table}"; add it to createUploadConnector({ tables })`);
|
|
163
|
+
const result = await replay(route, entry);
|
|
164
|
+
if (result.ok) continue;
|
|
165
|
+
const { error } = result;
|
|
166
|
+
const outcome = options.classify?.(error, entry) ?? uploadOutcome(error.kind);
|
|
167
|
+
switch (outcome) {
|
|
168
|
+
case "retry":
|
|
169
|
+
if (error.kind === "unauthorized" && !await signedIn()) return;
|
|
170
|
+
throw new Error(error.message);
|
|
171
|
+
case "conflict": {
|
|
172
|
+
const change = {
|
|
173
|
+
entry,
|
|
174
|
+
error,
|
|
175
|
+
outcome
|
|
176
|
+
};
|
|
177
|
+
rejected.add(change);
|
|
178
|
+
options.onConflict?.(change);
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
case "discard": {
|
|
182
|
+
const change = {
|
|
183
|
+
entry,
|
|
184
|
+
error,
|
|
185
|
+
outcome
|
|
186
|
+
};
|
|
187
|
+
rejected.add(change);
|
|
188
|
+
options.onDiscard?.(change);
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
default: throw new TypeError(`Unhandled upload outcome ${String(outcome)}`);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
await batch.complete();
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
//#endregion
|
|
199
|
+
export { checkSqlite, compileSqlite, createUploadConnector, fromSqliteError, likeToGlob, postgrestTimestamp, powersyncExecutor, quoteSqliteIdent, sqliteCompiler, sqliteTables, sqliteValue, syncWithAuth, uploadOutcome, watch };
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { b as DbError, f as Result } from "../../result-D7y2fT87.js";
|
|
2
|
+
import { t as PowerSyncDatabaseLike } from "../../executor-CaWigTyR.js";
|
|
3
|
+
import { i as RejectedStore, r as RejectedChange } from "../../connector-Dv8kK0MO.js";
|
|
4
|
+
//#region src/powersync/react/index.d.ts
|
|
5
|
+
export interface UseWatchOptions<T> {
|
|
6
|
+
readonly db: PowerSyncDatabaseLike;
|
|
7
|
+
/** The repository call, e.g. `() => list.run(local, query)`. */
|
|
8
|
+
readonly query: () => PromiseLike<Result<T>>;
|
|
9
|
+
/** SQLite tables whose changes rerun the query (`sqliteTables()`). */
|
|
10
|
+
readonly tables: readonly string[];
|
|
11
|
+
/** Values the query reads; a change restarts the watch. */
|
|
12
|
+
readonly deps?: readonly unknown[];
|
|
13
|
+
readonly throttleMs?: number;
|
|
14
|
+
/** False pauses the watch and keeps the last result. Defaults to true. */
|
|
15
|
+
readonly enabled?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface WatchState<T> {
|
|
18
|
+
readonly result: Result<T> | undefined;
|
|
19
|
+
readonly data: T | undefined;
|
|
20
|
+
readonly error: DbError | undefined;
|
|
21
|
+
/** No result yet for the current `deps`. */
|
|
22
|
+
readonly loading: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* A live repository call over PowerSync's SQLite database: reruns when
|
|
26
|
+
* one of `tables` changes, keeps unchanged rows' identity, and restarts
|
|
27
|
+
* when `deps` change.
|
|
28
|
+
*
|
|
29
|
+
* ```tsx
|
|
30
|
+
* const { data, loading } = useWatch({
|
|
31
|
+
* db: powersync,
|
|
32
|
+
* query: () => customerList.run(local, { ...customerList.defaults, search }),
|
|
33
|
+
* tables,
|
|
34
|
+
* deps: [search],
|
|
35
|
+
* });
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare function useWatch<T>(options: UseWatchOptions<T>): WatchState<T>;
|
|
39
|
+
/** The part of PowerSync's `SyncStatus` `useSyncStatus` reads. */
|
|
40
|
+
export interface SyncStatusLike {
|
|
41
|
+
readonly connected: boolean;
|
|
42
|
+
readonly connecting?: boolean;
|
|
43
|
+
readonly hasSynced?: boolean | undefined;
|
|
44
|
+
readonly dataFlowStatus: {
|
|
45
|
+
readonly uploading: boolean;
|
|
46
|
+
readonly downloading: boolean;
|
|
47
|
+
readonly uploadError?: Error | undefined;
|
|
48
|
+
readonly downloadError?: Error | undefined;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/** The part of a PowerSync database `useSyncStatus` subscribes to. */
|
|
52
|
+
export interface SyncStatusSource {
|
|
53
|
+
readonly currentStatus: SyncStatusLike;
|
|
54
|
+
registerListener(listener: {
|
|
55
|
+
statusChanged?: (status: SyncStatusLike) => void;
|
|
56
|
+
}): () => void;
|
|
57
|
+
}
|
|
58
|
+
export interface SyncState {
|
|
59
|
+
readonly connected: boolean;
|
|
60
|
+
readonly connecting: boolean;
|
|
61
|
+
/** The first full sync finished; before it, local reads may be empty. */
|
|
62
|
+
readonly hasSynced: boolean;
|
|
63
|
+
readonly uploading: boolean;
|
|
64
|
+
readonly downloading: boolean;
|
|
65
|
+
readonly error: Error | undefined;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* PowerSync's connection and sync progress, for a status badge or a
|
|
69
|
+
* "syncing" banner. Re-renders only when one of the fields changes.
|
|
70
|
+
*/
|
|
71
|
+
export declare function useSyncStatus(db: SyncStatusSource): SyncState;
|
|
72
|
+
export interface Conflicts {
|
|
73
|
+
/** Changes the server refused, oldest first. */
|
|
74
|
+
readonly changes: readonly RejectedChange[];
|
|
75
|
+
/** Forgets one change after the UI handled it, or all of them. */
|
|
76
|
+
readonly dismiss: (change?: RejectedChange) => void;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* The changes `createUploadConnector` could not upload: conflicts with a
|
|
80
|
+
* newer server row and changes the server refused. Show them next to the
|
|
81
|
+
* row, then `dismiss` them.
|
|
82
|
+
*/
|
|
83
|
+
export declare function useConflicts(connector: {
|
|
84
|
+
readonly rejected: RejectedStore;
|
|
85
|
+
}): Conflicts;
|
|
86
|
+
//#endregion
|
|
87
|
+
export type { RejectedChange, RejectedStore };
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { n as watch } from "../../watch-Xuxrvxq-.js";
|
|
3
|
+
import { useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
|
|
4
|
+
//#region src/powersync/react/index.ts
|
|
5
|
+
/**
|
|
6
|
+
* A live repository call over PowerSync's SQLite database: reruns when
|
|
7
|
+
* one of `tables` changes, keeps unchanged rows' identity, and restarts
|
|
8
|
+
* when `deps` change.
|
|
9
|
+
*
|
|
10
|
+
* ```tsx
|
|
11
|
+
* const { data, loading } = useWatch({
|
|
12
|
+
* db: powersync,
|
|
13
|
+
* query: () => customerList.run(local, { ...customerList.defaults, search }),
|
|
14
|
+
* tables,
|
|
15
|
+
* deps: [search],
|
|
16
|
+
* });
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
function useWatch(options) {
|
|
20
|
+
const { db, tables, throttleMs } = options;
|
|
21
|
+
const enabled = options.enabled ?? true;
|
|
22
|
+
const key = JSON.stringify([tables, options.deps ?? []]);
|
|
23
|
+
const [state, setState] = useState({
|
|
24
|
+
key,
|
|
25
|
+
result: void 0
|
|
26
|
+
});
|
|
27
|
+
const latest = useRef({
|
|
28
|
+
query: options.query,
|
|
29
|
+
tables
|
|
30
|
+
});
|
|
31
|
+
latest.current = {
|
|
32
|
+
query: options.query,
|
|
33
|
+
tables
|
|
34
|
+
};
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
if (!enabled) return;
|
|
37
|
+
return watch(db, () => latest.current.query(), {
|
|
38
|
+
tables: latest.current.tables,
|
|
39
|
+
onResult: (result) => {
|
|
40
|
+
setState({
|
|
41
|
+
key,
|
|
42
|
+
result
|
|
43
|
+
});
|
|
44
|
+
},
|
|
45
|
+
...throttleMs === void 0 ? {} : { throttleMs }
|
|
46
|
+
});
|
|
47
|
+
}, [
|
|
48
|
+
db,
|
|
49
|
+
key,
|
|
50
|
+
enabled,
|
|
51
|
+
throttleMs
|
|
52
|
+
]);
|
|
53
|
+
const result = state.result;
|
|
54
|
+
return {
|
|
55
|
+
result,
|
|
56
|
+
data: result?.ok ? result.data : void 0,
|
|
57
|
+
error: result && !result.ok ? result.error : void 0,
|
|
58
|
+
loading: state.key !== key || result === void 0
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function stateOf(status) {
|
|
62
|
+
const flow = status.dataFlowStatus;
|
|
63
|
+
return {
|
|
64
|
+
connected: status.connected,
|
|
65
|
+
connecting: status.connecting ?? false,
|
|
66
|
+
hasSynced: status.hasSynced ?? false,
|
|
67
|
+
uploading: flow.uploading,
|
|
68
|
+
downloading: flow.downloading,
|
|
69
|
+
error: flow.uploadError ?? flow.downloadError
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function sameState(a, b) {
|
|
73
|
+
return a.connected === b.connected && a.connecting === b.connecting && a.hasSynced === b.hasSynced && a.uploading === b.uploading && a.downloading === b.downloading && a.error === b.error;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* PowerSync's connection and sync progress, for a status badge or a
|
|
77
|
+
* "syncing" banner. Re-renders only when one of the fields changes.
|
|
78
|
+
*/
|
|
79
|
+
function useSyncStatus(db) {
|
|
80
|
+
const store = useMemo(() => statusStore(db), [db]);
|
|
81
|
+
return useSyncExternalStore(store.subscribe, store.read, store.read);
|
|
82
|
+
}
|
|
83
|
+
/** Keeps the last snapshot while its fields stay equal, as `useSyncExternalStore` needs. */
|
|
84
|
+
function statusStore(db) {
|
|
85
|
+
let snapshot = stateOf(db.currentStatus);
|
|
86
|
+
return {
|
|
87
|
+
read: () => {
|
|
88
|
+
const next = stateOf(db.currentStatus);
|
|
89
|
+
if (!sameState(snapshot, next)) snapshot = next;
|
|
90
|
+
return snapshot;
|
|
91
|
+
},
|
|
92
|
+
subscribe: (listener) => db.registerListener({ statusChanged: listener })
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* The changes `createUploadConnector` could not upload: conflicts with a
|
|
97
|
+
* newer server row and changes the server refused. Show them next to the
|
|
98
|
+
* row, then `dismiss` them.
|
|
99
|
+
*/
|
|
100
|
+
function useConflicts(connector) {
|
|
101
|
+
const { rejected } = connector;
|
|
102
|
+
return {
|
|
103
|
+
changes: useSyncExternalStore(rejected.subscribe, rejected.current, rejected.current),
|
|
104
|
+
dismiss: rejected.dismiss
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
//#endregion
|
|
108
|
+
export { useConflicts, useSyncStatus, useWatch };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as dbError } from "./errors-
|
|
1
|
+
import { n as dbError } from "./errors-B11Duf73.js";
|
|
2
2
|
//#region src/core/problem.ts
|
|
3
3
|
const PROBLEM_TYPE_BASE = "https://bettersupabase.com/problems/";
|
|
4
4
|
const PROBLEM_CONTENT_TYPE = "application/problem+json";
|
|
@@ -22,7 +22,10 @@ const TITLES = {
|
|
|
22
22
|
validation: "Validation failed",
|
|
23
23
|
multiple_rows: "More than one row matched",
|
|
24
24
|
stale: "Row changed since it was read",
|
|
25
|
+
max_affected: "Too many rows affected",
|
|
25
26
|
rate_limited: "Too many requests",
|
|
27
|
+
quota_exceeded: "Quota exceeded",
|
|
28
|
+
unsupported: "Not supported by this executor",
|
|
26
29
|
unexpected: "Unexpected error"
|
|
27
30
|
};
|
|
28
31
|
/** Kinds whose message may contain internals (SQL, hostnames), hidden unless `expose` is set. */
|
|
@@ -50,6 +53,9 @@ function toProblem(error, options = {}) {
|
|
|
50
53
|
if ("required" in error) problem["required"] = error.required;
|
|
51
54
|
if ("scopes" in error) problem["scopes"] = error.scopes;
|
|
52
55
|
if ("retryAfter" in error) problem["retryAfter"] = error.retryAfter;
|
|
56
|
+
if ("meter" in error) problem["meter"] = error.meter;
|
|
57
|
+
if ("limit" in error) problem["limit"] = error.limit;
|
|
58
|
+
if ("maxAffected" in error) problem["maxAffected"] = error.maxAffected;
|
|
53
59
|
return problem;
|
|
54
60
|
}
|
|
55
61
|
/**
|
|
@@ -69,7 +75,9 @@ function problemResponse(error, options = {}) {
|
|
|
69
75
|
headers.set("www-authenticate", `Bearer realm="${realm}", error="insufficient_scope", scope="${scope}"`);
|
|
70
76
|
}
|
|
71
77
|
if ("retryAfter" in error && !headers.has("retry-after")) headers.set("retry-after", String(error.retryAfter));
|
|
72
|
-
|
|
78
|
+
const problem = toProblem(error, options);
|
|
79
|
+
const body = options.format ? options.format(problem, error) : problem;
|
|
80
|
+
return new Response(JSON.stringify(body), {
|
|
73
81
|
status: error.status,
|
|
74
82
|
headers
|
|
75
83
|
});
|
|
@@ -94,7 +102,10 @@ function fromProblem(problem) {
|
|
|
94
102
|
"column",
|
|
95
103
|
"required",
|
|
96
104
|
"scopes",
|
|
97
|
-
"retryAfter"
|
|
105
|
+
"retryAfter",
|
|
106
|
+
"meter",
|
|
107
|
+
"limit",
|
|
108
|
+
"maxAffected"
|
|
98
109
|
]) if (problem[key] !== void 0) extra[key] = problem[key];
|
|
99
110
|
extra["issues"] = problem.issues ?? [];
|
|
100
111
|
if (kind !== "validation") delete extra["issues"];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { E as ValidationIssue, b as DbError, x as DbErrorKind } from "./result-D7y2fT87.js";
|
|
2
2
|
//#region src/core/problem.d.ts
|
|
3
3
|
/** RFC 9457 Problem Details, with the `DbError` fields as extension members. */
|
|
4
4
|
interface ProblemDetails {
|
|
@@ -19,8 +19,13 @@ interface ProblemDetails {
|
|
|
19
19
|
readonly required?: "aal1" | "aal2";
|
|
20
20
|
/** The OAuth scopes a `forbidden` answer needs. */
|
|
21
21
|
readonly scopes?: readonly string[];
|
|
22
|
-
/** Seconds until a `rate_limited` caller may retry. */
|
|
22
|
+
/** Seconds until a `rate_limited` or `quota_exceeded` caller may retry. */
|
|
23
23
|
readonly retryAfter?: number;
|
|
24
|
+
/** The meter a `quota_exceeded` answer ran out of, and its limit. */
|
|
25
|
+
readonly meter?: string;
|
|
26
|
+
readonly limit?: number;
|
|
27
|
+
/** The row limit a `max_affected` write exceeded. */
|
|
28
|
+
readonly maxAffected?: number;
|
|
24
29
|
}
|
|
25
30
|
declare const PROBLEM_TYPE_BASE = "https://bettersupabase.com/problems/";
|
|
26
31
|
declare const PROBLEM_CONTENT_TYPE = "application/problem+json";
|
|
@@ -30,10 +35,23 @@ interface ProblemOptions {
|
|
|
30
35
|
/** Include messages of internal errors. Defaults to false. */
|
|
31
36
|
readonly expose?: boolean;
|
|
32
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Rewrites the Problem Details a block answers with into the app's own error
|
|
40
|
+
* body, such as its `type` URIs and error codes. The status, `Retry-After`
|
|
41
|
+
* and `WWW-Authenticate` headers stay as they are.
|
|
42
|
+
*/
|
|
43
|
+
type ProblemFormat = (problem: ProblemDetails, error: DbError) => Readonly<Record<string, unknown>>;
|
|
44
|
+
/** The `problem` option of the blocks that answer HTTP requests. */
|
|
45
|
+
interface BlockProblemOptions {
|
|
46
|
+
/** The app's error body for the block's error responses. Defaults to RFC 9457 Problem Details. */
|
|
47
|
+
readonly problem?: ProblemFormat;
|
|
48
|
+
}
|
|
33
49
|
interface ProblemResponseOptions extends ProblemOptions {
|
|
34
50
|
readonly headers?: ConstructorParameters<typeof Headers>[0];
|
|
35
51
|
/** `realm` of the RFC 6750 challenge on 401. */
|
|
36
52
|
readonly realm?: string;
|
|
53
|
+
/** Rewrites the body; see `ProblemFormat`. */
|
|
54
|
+
readonly format?: ProblemFormat | undefined;
|
|
37
55
|
}
|
|
38
56
|
/** Converts a `DbError` to Problem Details. */
|
|
39
57
|
declare function toProblem(error: DbError, options?: ProblemOptions): ProblemDetails;
|
|
@@ -46,4 +64,4 @@ declare function isProblem(value: unknown): value is ProblemDetails;
|
|
|
46
64
|
/** Turns a Problem Details body back into a `DbError` (client side). */
|
|
47
65
|
declare function fromProblem(problem: ProblemDetails): DbError;
|
|
48
66
|
//#endregion
|
|
49
|
-
export {
|
|
67
|
+
export { ProblemFormat as a, fromProblem as c, toProblem as d, ProblemDetails as i, isProblem as l, PROBLEM_CONTENT_TYPE as n, ProblemOptions as o, PROBLEM_TYPE_BASE as r, ProblemResponseOptions as s, BlockProblemOptions as t, problemResponse as u };
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/// <reference lib="esnext.temporal" />
|
|
2
|
+
import { b as DbError, t as AsyncResult } from "./result-D7y2fT87.js";
|
|
3
|
+
import { r as AuthState } from "./resolve-KW8nCeL6.js";
|
|
4
|
+
//#region src/credentials/provider.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Names a credential without holding it. Tables store this as a
|
|
7
|
+
* `credential_ref jsonb` column; `provider` picks the `CredentialProvider`
|
|
8
|
+
* and the other keys are that provider's.
|
|
9
|
+
*/
|
|
10
|
+
type CredentialRef = {
|
|
11
|
+
readonly provider: string;
|
|
12
|
+
/**
|
|
13
|
+
* The tenant that owns the credential. A provider resolves, sets and
|
|
14
|
+
* revokes a ref with `tenant` only inside that tenant's namespace, so a
|
|
15
|
+
* tenant admin who picks a ref can never name another tenant's or the
|
|
16
|
+
* app's secret.
|
|
17
|
+
*/
|
|
18
|
+
readonly tenant?: string;
|
|
19
|
+
} & Readonly<Record<string, unknown>>;
|
|
20
|
+
/** `ref` bound to `tenant`'s namespace. */
|
|
21
|
+
declare function tenantCredentialRef<R extends CredentialRef>(tenant: string, ref: R): R & {
|
|
22
|
+
readonly tenant: string;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Whether `ref` belongs to `tenant`: its `tenant` is exactly that tenant.
|
|
26
|
+
* Without a tenant (an app-level row), only a ref without one belongs.
|
|
27
|
+
*/
|
|
28
|
+
declare function credentialRefInTenant(ref: CredentialRef, tenant: string | undefined): boolean;
|
|
29
|
+
/** The error for a ref that names a credential outside the row's tenant. */
|
|
30
|
+
declare function foreignCredentialRef(tenant: string | undefined): DbError;
|
|
31
|
+
/** Whose credential to use: the app's own, or one a user connected. */
|
|
32
|
+
type CredentialSubject = {
|
|
33
|
+
readonly type: "app";
|
|
34
|
+
} | {
|
|
35
|
+
readonly type: "user";
|
|
36
|
+
readonly id: string;
|
|
37
|
+
readonly issuer?: string;
|
|
38
|
+
};
|
|
39
|
+
interface GetTokenOptions {
|
|
40
|
+
readonly subject: CredentialSubject;
|
|
41
|
+
readonly scopes?: readonly string[];
|
|
42
|
+
readonly installationId?: string;
|
|
43
|
+
readonly signal?: AbortSignal;
|
|
44
|
+
}
|
|
45
|
+
interface CredentialToken {
|
|
46
|
+
readonly token: string;
|
|
47
|
+
/** Unset when the provider doesn't know when the token expires. */
|
|
48
|
+
readonly expiresAt?: Temporal.Instant;
|
|
49
|
+
/** Headers that authenticate a request with this token. */
|
|
50
|
+
readonly headers: Readonly<Record<string, string>>;
|
|
51
|
+
}
|
|
52
|
+
interface CredentialCapabilities {
|
|
53
|
+
/** The ref holds one credential per user subject. */
|
|
54
|
+
readonly userSubjects: boolean;
|
|
55
|
+
/** `startAuthorization` can send the user to connect the account. */
|
|
56
|
+
readonly authorization: boolean;
|
|
57
|
+
readonly revoke: boolean;
|
|
58
|
+
/** `verifyInbound` can check requests the third party sends. */
|
|
59
|
+
readonly inbound: boolean;
|
|
60
|
+
}
|
|
61
|
+
interface StartAuthorizationOptions {
|
|
62
|
+
readonly subject: CredentialSubject;
|
|
63
|
+
readonly redirectUri: string;
|
|
64
|
+
readonly scopes?: readonly string[];
|
|
65
|
+
readonly state?: string;
|
|
66
|
+
}
|
|
67
|
+
interface CompleteAuthorizationOptions {
|
|
68
|
+
readonly subject: CredentialSubject;
|
|
69
|
+
/** The callback request, or its URL, that carries the code and state. */
|
|
70
|
+
readonly callback: Request | URL | string;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Resolves `CredentialRef`s to tokens. Versioned: a breaking change to this
|
|
74
|
+
* contract ships a new `apiVersion`. Errors are `DbError`s: `invalid_input`
|
|
75
|
+
* for a ref the provider doesn't handle, `not_found` when no credential is
|
|
76
|
+
* stored, `forbidden` when the subject may not use it.
|
|
77
|
+
*/
|
|
78
|
+
interface CredentialProvider {
|
|
79
|
+
readonly apiVersion: 1;
|
|
80
|
+
readonly name: string;
|
|
81
|
+
getToken(ref: CredentialRef, options: GetTokenOptions): AsyncResult<CredentialToken>;
|
|
82
|
+
capabilities(ref: CredentialRef): CredentialCapabilities;
|
|
83
|
+
/** The URL to send the user to; only when `capabilities(ref).authorization`. */
|
|
84
|
+
startAuthorization?(ref: CredentialRef, options: StartAuthorizationOptions): AsyncResult<{
|
|
85
|
+
readonly url: string;
|
|
86
|
+
}>;
|
|
87
|
+
completeAuthorization?(ref: CredentialRef, options: CompleteAuthorizationOptions): AsyncResult<void>;
|
|
88
|
+
/** Forgets the stored credential; `false` when there was none. */
|
|
89
|
+
revoke(ref: CredentialRef, options: {
|
|
90
|
+
readonly subject: CredentialSubject;
|
|
91
|
+
}): AsyncResult<boolean>;
|
|
92
|
+
/** Checks a request the third party sent (a webhook) against the ref's secret. */
|
|
93
|
+
verifyInbound?(request: Request, ref: CredentialRef): AsyncResult<boolean>;
|
|
94
|
+
/**
|
|
95
|
+
* Stores or replaces the credential a ref names, for `subject` when the
|
|
96
|
+
* ref is per user. Optional: a provider without it can't take a secret
|
|
97
|
+
* from the app (an OAuth-only provider, say).
|
|
98
|
+
*/
|
|
99
|
+
set?(ref: CredentialRef, value: string, options?: SetCredentialOptions): AsyncResult<void>;
|
|
100
|
+
}
|
|
101
|
+
interface SetCredentialOptions {
|
|
102
|
+
readonly subject?: CredentialSubject;
|
|
103
|
+
readonly description?: string;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* The subject for a request: the user behind a session or a user-bound API
|
|
107
|
+
* key, the app for the service role, and `undefined` for anyone else.
|
|
108
|
+
*/
|
|
109
|
+
declare function subjectFor(context: {
|
|
110
|
+
readonly auth: AuthState;
|
|
111
|
+
}): CredentialSubject | undefined;
|
|
112
|
+
//#endregion
|
|
113
|
+
export { CredentialSubject as a, SetCredentialOptions as c, foreignCredentialRef as d, subjectFor as f, CredentialRef as i, StartAuthorizationOptions as l, CredentialCapabilities as n, CredentialToken as o, tenantCredentialRef as p, CredentialProvider as r, GetTokenOptions as s, CompleteAuthorizationOptions as t, credentialRefInTenant as u };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { n as dbError } from "./errors-B11Duf73.js";
|
|
2
|
+
//#region src/credentials/provider.ts
|
|
3
|
+
/** `ref` bound to `tenant`'s namespace. */
|
|
4
|
+
function tenantCredentialRef(tenant, ref) {
|
|
5
|
+
return {
|
|
6
|
+
...ref,
|
|
7
|
+
tenant
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Whether `ref` belongs to `tenant`: its `tenant` is exactly that tenant.
|
|
12
|
+
* Without a tenant (an app-level row), only a ref without one belongs.
|
|
13
|
+
*/
|
|
14
|
+
function credentialRefInTenant(ref, tenant) {
|
|
15
|
+
const owner = ref.tenant;
|
|
16
|
+
return tenant === void 0 ? owner === void 0 : typeof owner === "string" && owner === tenant;
|
|
17
|
+
}
|
|
18
|
+
/** The error for a ref that names a credential outside the row's tenant. */
|
|
19
|
+
function foreignCredentialRef(tenant) {
|
|
20
|
+
return dbError("forbidden", tenant === void 0 ? "An app-level credential_ref can't name a tenant's credential" : `The credential_ref names a credential outside tenant "${tenant}"`, { hint: "CREDENTIAL_REF_FOREIGN" });
|
|
21
|
+
}
|
|
22
|
+
/** Checks the provider's `apiVersion` before the server uses it. */
|
|
23
|
+
function credentialProviderOf(provider) {
|
|
24
|
+
const version = provider.apiVersion;
|
|
25
|
+
if (version !== 1) throw new TypeError(`credentials "${provider.name}" targets credential provider API ${String(version)}; this better-supabase supports 1. Upgrade better-supabase or use a release of the provider for API 1.`);
|
|
26
|
+
return provider;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The subject for a request: the user behind a session or a user-bound API
|
|
30
|
+
* key, the app for the service role, and `undefined` for anyone else.
|
|
31
|
+
*/
|
|
32
|
+
function subjectFor(context) {
|
|
33
|
+
const { auth } = context;
|
|
34
|
+
switch (auth.kind) {
|
|
35
|
+
case "user": {
|
|
36
|
+
const issuer = auth.claims.iss;
|
|
37
|
+
return typeof issuer === "string" && issuer.length > 0 ? {
|
|
38
|
+
type: "user",
|
|
39
|
+
id: auth.claims.sub,
|
|
40
|
+
issuer
|
|
41
|
+
} : {
|
|
42
|
+
type: "user",
|
|
43
|
+
id: auth.claims.sub
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
case "apiKey": return auth.userId === void 0 ? void 0 : {
|
|
47
|
+
type: "user",
|
|
48
|
+
id: auth.userId
|
|
49
|
+
};
|
|
50
|
+
case "service": return { type: "app" };
|
|
51
|
+
case "anon":
|
|
52
|
+
case "invalid": return;
|
|
53
|
+
default: return auth;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//#endregion
|
|
57
|
+
export { tenantCredentialRef as a, subjectFor as i, credentialRefInTenant as n, foreignCredentialRef as r, credentialProviderOf as t };
|
package/dist/query/index.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { t as escapeLike } from "../escape-like-ImTK0ps_.js";
|
|
2
|
+
import { n as invalidateTables, t as BetterQueryMeta } from "../invalidate-BBqhpxyB.js";
|
|
3
|
+
import { _ as invalidateOnMutation, a as UserChangeSource, c as InfiniteExtras, d as QueriesOptions, f as QueryHelpers, g as createQueries, h as TableQueries, i as optimistic, l as InfiniteOptionsOf, m as QueryOptionsOf, n as OptimisticSnapshot, o as clearOnUserChange, p as QueryKeyOf, r as OptimisticTarget, s as BetterQueries, t as OptimisticHandlers, u as MutationOptionsOf, v as queryCache } from "../index-Bepi-Hgg.js";
|
|
4
|
+
export { type BetterQueries, type BetterQueryMeta, type InfiniteExtras, type InfiniteOptionsOf, type MutationOptionsOf, type OptimisticHandlers, type OptimisticSnapshot, type OptimisticTarget, type QueriesOptions, type QueryHelpers, type QueryKeyOf, type QueryOptionsOf, type TableQueries, type UserChangeSource, clearOnUserChange, createQueries, escapeLike, invalidateOnMutation, invalidateTables, optimistic, queryCache };
|
package/dist/query/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import { t as escapeLike } from "../escape-like-DHfx6jRr.js";
|
|
2
|
+
import { r as invalidateTables, t as clearOnUserChange } from "../user-change-XzvgafU4.js";
|
|
3
|
+
import { i as queryCache, n as createQueries, r as invalidateOnMutation, t as optimistic } from "../query-BQ-NaZon.js";
|
|
4
|
+
export { clearOnUserChange, createQueries, escapeLike, invalidateOnMutation, invalidateTables, optimistic, queryCache };
|