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
package/dist/list/index.js
CHANGED
|
@@ -1,445 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
/** Facet value meaning "not set": filters with `is null`. */
|
|
3
|
-
const UNSET = "__unset__";
|
|
4
|
-
const RESERVED = /* @__PURE__ */ new Set([
|
|
5
|
-
"q",
|
|
6
|
-
"sort",
|
|
7
|
-
"page",
|
|
8
|
-
"after",
|
|
9
|
-
"size"
|
|
10
|
-
]);
|
|
11
|
-
function first(value) {
|
|
12
|
-
return typeof value === "string" ? value : value?.[0];
|
|
13
|
-
}
|
|
14
|
-
function all(value) {
|
|
15
|
-
return (typeof value === "string" ? [value] : [...value ?? []]).flatMap((entry) => entry.split(",")).map((entry) => entry.trim()).filter(Boolean);
|
|
16
|
-
}
|
|
17
|
-
const isParamValue = (value) => value === void 0 || typeof value === "string" || Array.isArray(value) && value.every((entry) => typeof entry === "string");
|
|
18
|
-
function isSearchParams(value) {
|
|
19
|
-
return value instanceof URLSearchParams || !("facets" in value && typeof value.facets === "object") && Object.values(value).every(isParamValue);
|
|
20
|
-
}
|
|
21
|
-
function readRecord(input) {
|
|
22
|
-
if (!(input instanceof URLSearchParams)) return input;
|
|
23
|
-
const out = {};
|
|
24
|
-
for (const [key, value] of input) (out[key] ??= []).push(value);
|
|
25
|
-
return out;
|
|
26
|
-
}
|
|
27
|
-
function toInt(raw) {
|
|
28
|
-
if (typeof raw === "number") return raw;
|
|
29
|
-
if (typeof raw !== "string" || !/^\d+$/.test(raw)) return NaN;
|
|
30
|
-
return Number(raw);
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* A reusable list endpoint for one table: search, facets, sorts and
|
|
34
|
-
* pagination, validated from URL params or typed input, with URL parsers,
|
|
35
|
-
* OpenAPI parameters and a JSON Schema derived from the same definition.
|
|
36
|
-
*
|
|
37
|
-
* ```ts
|
|
38
|
-
* export const customerList = defineListQuery(betterSupabase, 'customers', {
|
|
39
|
-
* search: ['name', 'kvk'],
|
|
40
|
-
* facets: { status: 'status' },
|
|
41
|
-
* sorts: { name: { name: 'asc' }, newest: [{ createdAt: 'desc' }, { id: 'asc' }] },
|
|
42
|
-
* defaultSort: 'newest',
|
|
43
|
-
* });
|
|
44
|
-
* ```
|
|
45
|
-
*/
|
|
46
|
-
function defineListQuery(betterSupabase, table, config) {
|
|
47
|
-
const meta = betterSupabase.meta.tables[table];
|
|
48
|
-
if (!meta) throw new TypeError(`defineListQuery: unknown table "${table}"`);
|
|
49
|
-
const pageSize = config.pageSize ?? 50;
|
|
50
|
-
const maxPageSize = config.maxPageSize ?? 200;
|
|
51
|
-
const maxSearch = config.maxSearchLength ?? 200;
|
|
52
|
-
const cursor = config.pagination === "cursor";
|
|
53
|
-
const sortKeys = Object.keys(config.sorts);
|
|
54
|
-
const facetEntries = Object.entries(config.facets ?? {});
|
|
55
|
-
for (const [key, column] of facetEntries) {
|
|
56
|
-
if (RESERVED.has(key)) throw new TypeError(`defineListQuery: facet key "${key}" is reserved`);
|
|
57
|
-
if (!meta.columns[column]) throw new TypeError(`defineListQuery: unknown column "${table}.${column}"`);
|
|
58
|
-
}
|
|
59
|
-
if (!sortKeys.includes(config.defaultSort)) throw new TypeError(`defineListQuery: defaultSort "${config.defaultSort}" is not in sorts`);
|
|
60
|
-
const facets = facetEntries.map(([key, column]) => {
|
|
61
|
-
const columnMeta = meta.columns[column];
|
|
62
|
-
return {
|
|
63
|
-
key,
|
|
64
|
-
column,
|
|
65
|
-
nullable: columnMeta.nullable,
|
|
66
|
-
...columnMeta.enum ? { values: columnMeta.enum } : {}
|
|
67
|
-
};
|
|
68
|
-
});
|
|
69
|
-
const defaults = {
|
|
70
|
-
sort: config.defaultSort,
|
|
71
|
-
page: 1,
|
|
72
|
-
size: pageSize,
|
|
73
|
-
facets: {}
|
|
74
|
-
};
|
|
75
|
-
function normalize(raw) {
|
|
76
|
-
const issues = [];
|
|
77
|
-
let q;
|
|
78
|
-
if (raw.q !== void 0 && raw.q !== null) {
|
|
79
|
-
if (typeof raw.q !== "string") issues.push({
|
|
80
|
-
message: "Must be text",
|
|
81
|
-
path: ["q"]
|
|
82
|
-
});
|
|
83
|
-
else if (raw.q.trim().length > maxSearch) issues.push({
|
|
84
|
-
message: `At most ${String(maxSearch)} characters`,
|
|
85
|
-
path: ["q"]
|
|
86
|
-
});
|
|
87
|
-
else if (raw.q.trim()) q = raw.q.trim();
|
|
88
|
-
}
|
|
89
|
-
let sort = config.defaultSort;
|
|
90
|
-
if (raw.sort !== void 0 && raw.sort !== "") {
|
|
91
|
-
if (typeof raw.sort === "string" && sortKeys.includes(raw.sort)) sort = raw.sort;
|
|
92
|
-
else issues.push({
|
|
93
|
-
message: `Must be one of: ${sortKeys.join(", ")}`,
|
|
94
|
-
path: ["sort"]
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
const page = raw.page === void 0 || raw.page === "" ? 1 : toInt(raw.page);
|
|
98
|
-
if (page === void 0 || !Number.isInteger(page) || page < 1) issues.push({
|
|
99
|
-
message: "Must be a whole number of at least 1",
|
|
100
|
-
path: ["page"]
|
|
101
|
-
});
|
|
102
|
-
else if (cursor && page !== 1) issues.push({
|
|
103
|
-
message: "This list pages with `after`, not `page`",
|
|
104
|
-
path: ["page"]
|
|
105
|
-
});
|
|
106
|
-
let after;
|
|
107
|
-
if (raw.after !== void 0 && raw.after !== "") {
|
|
108
|
-
if (cursor && typeof raw.after === "string") after = raw.after;
|
|
109
|
-
else issues.push({
|
|
110
|
-
message: cursor ? "Must be text" : "This list pages with `page`, not `after`",
|
|
111
|
-
path: ["after"]
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
const size = raw.size === void 0 || raw.size === "" ? pageSize : toInt(raw.size);
|
|
115
|
-
if (size === void 0 || !Number.isInteger(size) || size < 1 || size > maxPageSize) issues.push({
|
|
116
|
-
message: `Must be a whole number from 1 to ${String(maxPageSize)}`,
|
|
117
|
-
path: ["size"]
|
|
118
|
-
});
|
|
119
|
-
const facetValues = {};
|
|
120
|
-
for (const facet of facets) {
|
|
121
|
-
const values = raw.facets[facet.key];
|
|
122
|
-
if (!values || values.length === 0) continue;
|
|
123
|
-
for (const value of values) if (!(value === "__unset__" ? facet.nullable : !facet.values || facet.values.includes(value))) issues.push({
|
|
124
|
-
message: value === "__unset__" ? "This filter cannot be empty" : `Must be one of: ${(facet.values ?? []).join(", ")}`,
|
|
125
|
-
path: ["facets", facet.key]
|
|
126
|
-
});
|
|
127
|
-
facetValues[facet.key] = [...new Set(values)];
|
|
128
|
-
}
|
|
129
|
-
if (issues.length > 0) return {
|
|
130
|
-
ok: false,
|
|
131
|
-
issues
|
|
132
|
-
};
|
|
133
|
-
return {
|
|
134
|
-
ok: true,
|
|
135
|
-
value: {
|
|
136
|
-
...q ? { q } : {},
|
|
137
|
-
sort,
|
|
138
|
-
page: page ?? 1,
|
|
139
|
-
...after ? { after } : {},
|
|
140
|
-
size: size ?? pageSize,
|
|
141
|
-
facets: facetValues
|
|
142
|
-
}
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
function parse(input) {
|
|
146
|
-
if (input === void 0 || input === null) return {
|
|
147
|
-
ok: true,
|
|
148
|
-
value: defaults
|
|
149
|
-
};
|
|
150
|
-
if (typeof input !== "object") return {
|
|
151
|
-
ok: false,
|
|
152
|
-
issues: [{ message: "Expected an object or URL parameters" }]
|
|
153
|
-
};
|
|
154
|
-
if (isSearchParams(input)) {
|
|
155
|
-
const record = readRecord(input);
|
|
156
|
-
const facetValues = {};
|
|
157
|
-
for (const facet of facets) facetValues[facet.key] = all(record[facet.key]);
|
|
158
|
-
return normalize({
|
|
159
|
-
q: first(record["q"]),
|
|
160
|
-
sort: first(record["sort"]),
|
|
161
|
-
page: first(record["page"]),
|
|
162
|
-
after: first(record["after"]),
|
|
163
|
-
size: first(record["size"]),
|
|
164
|
-
facets: facetValues
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
const typed = input;
|
|
168
|
-
const rawFacets = typed.facets ?? {};
|
|
169
|
-
for (const [key, value] of Object.entries(rawFacets)) if (!Array.isArray(value) || value.some((entry) => typeof entry !== "string")) return {
|
|
170
|
-
ok: false,
|
|
171
|
-
issues: [{
|
|
172
|
-
message: "Must be a list of values",
|
|
173
|
-
path: ["facets", key]
|
|
174
|
-
}]
|
|
175
|
-
};
|
|
176
|
-
return normalize({
|
|
177
|
-
q: typed.q,
|
|
178
|
-
sort: typed.sort,
|
|
179
|
-
page: typed.page,
|
|
180
|
-
after: typed.after,
|
|
181
|
-
size: typed.size,
|
|
182
|
-
facets: rawFacets
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
function searchWhere(query) {
|
|
186
|
-
if (!query.q || !config.search) return void 0;
|
|
187
|
-
if (Array.isArray(config.search)) {
|
|
188
|
-
const columns = config.search;
|
|
189
|
-
if (columns.length === 0) return void 0;
|
|
190
|
-
return { OR: columns.map((column) => ({ [column]: { contains: query.q } })) };
|
|
191
|
-
}
|
|
192
|
-
const fts = config.search;
|
|
193
|
-
return { [fts.fts]: { search: fts.config ? {
|
|
194
|
-
query: query.q,
|
|
195
|
-
config: fts.config
|
|
196
|
-
} : query.q } };
|
|
197
|
-
}
|
|
198
|
-
function facetWhere(facet, values) {
|
|
199
|
-
if (!values || values.length === 0) return void 0;
|
|
200
|
-
const unset = values.includes(UNSET);
|
|
201
|
-
const set = values.filter((value) => value !== UNSET);
|
|
202
|
-
if (unset && set.length === 0) return { [facet.column]: null };
|
|
203
|
-
if (!unset) return { [facet.column]: { in: set } };
|
|
204
|
-
return { OR: [{ [facet.column]: { in: set } }, { [facet.column]: null }] };
|
|
205
|
-
}
|
|
206
|
-
function and(parts) {
|
|
207
|
-
const present = parts.filter((part) => part !== void 0);
|
|
208
|
-
if (present.length === 0) return void 0;
|
|
209
|
-
return present.length === 1 ? present[0] : { AND: present };
|
|
210
|
-
}
|
|
211
|
-
function where(query) {
|
|
212
|
-
return and([searchWhere(query), ...facets.map((facet) => facetWhere(facet, query.facets[facet.key]))]);
|
|
213
|
-
}
|
|
214
|
-
function args(query) {
|
|
215
|
-
const filter = where(query);
|
|
216
|
-
const paging = cursor ? { after: query.after ?? null } : {
|
|
217
|
-
page: query.page,
|
|
218
|
-
count: config.count ?? "exact"
|
|
219
|
-
};
|
|
220
|
-
return {
|
|
221
|
-
...filter ? { where: filter } : {},
|
|
222
|
-
orderBy: config.sorts[query.sort],
|
|
223
|
-
size: query.size,
|
|
224
|
-
...paging
|
|
225
|
-
};
|
|
226
|
-
}
|
|
227
|
-
/** Whether a group's value passes the facet's selected values. */
|
|
228
|
-
function selects(value, selected) {
|
|
229
|
-
if (!selected || selected.length === 0) return true;
|
|
230
|
-
return value === null || value === void 0 ? selected.includes(UNSET) : selected.includes(String(value));
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Per facet, rows per value under every other facet's selection: the
|
|
234
|
-
* usual faceted-search counts, where picking a value doesn't zero the
|
|
235
|
-
* other values of the same facet.
|
|
236
|
-
*/
|
|
237
|
-
function marginals(groups, query) {
|
|
238
|
-
const out = {};
|
|
239
|
-
for (const facet of facets) {
|
|
240
|
-
const counts = {};
|
|
241
|
-
for (const value of facet.values ?? []) counts[value] = 0;
|
|
242
|
-
for (const group of groups) {
|
|
243
|
-
if (!facets.every((other) => other === facet || selects(group[other.column], query.facets[other.key]))) continue;
|
|
244
|
-
const raw = group[facet.column];
|
|
245
|
-
const key = raw === null || raw === void 0 ? UNSET : String(raw);
|
|
246
|
-
counts[key] = (counts[key] ?? 0) + Number(group["_count"] ?? 0);
|
|
247
|
-
}
|
|
248
|
-
out[facet.key] = counts;
|
|
249
|
-
}
|
|
250
|
-
return out;
|
|
251
|
-
}
|
|
252
|
-
const listParser = {
|
|
253
|
-
parse: (value) => {
|
|
254
|
-
const values = all(value);
|
|
255
|
-
return values.length > 0 ? values : null;
|
|
256
|
-
},
|
|
257
|
-
serialize: (values) => values.join(",")
|
|
258
|
-
};
|
|
259
|
-
const intParser = {
|
|
260
|
-
parse: (value) => /^\d+$/.test(value) ? Number(value) : null,
|
|
261
|
-
serialize: String
|
|
262
|
-
};
|
|
263
|
-
const parsers = {
|
|
264
|
-
q: {
|
|
265
|
-
parse: (value) => value.trim() || null,
|
|
266
|
-
serialize: (value) => value
|
|
267
|
-
},
|
|
268
|
-
sort: {
|
|
269
|
-
parse: (value) => sortKeys.includes(value) ? value : null,
|
|
270
|
-
serialize: (value) => value
|
|
271
|
-
},
|
|
272
|
-
page: intParser,
|
|
273
|
-
after: {
|
|
274
|
-
parse: (value) => value || null,
|
|
275
|
-
serialize: (value) => value
|
|
276
|
-
},
|
|
277
|
-
size: intParser,
|
|
278
|
-
...Object.fromEntries(facets.map((facet) => [facet.key, listParser]))
|
|
279
|
-
};
|
|
280
|
-
const facetSchema = (facet) => ({
|
|
281
|
-
type: "array",
|
|
282
|
-
items: {
|
|
283
|
-
type: "string",
|
|
284
|
-
...facet.values ? { enum: [...facet.values, ...facet.nullable ? [UNSET] : []] } : {}
|
|
285
|
-
},
|
|
286
|
-
uniqueItems: true
|
|
287
|
-
});
|
|
288
|
-
const searchDescription = config.search ? Array.isArray(config.search) ? `Case-insensitive search in ${config.search.join(", ")}.` : "Full-text search (web search syntax)." : void 0;
|
|
289
|
-
const openapi = [
|
|
290
|
-
...searchDescription ? [{
|
|
291
|
-
name: "q",
|
|
292
|
-
in: "query",
|
|
293
|
-
required: false,
|
|
294
|
-
description: searchDescription,
|
|
295
|
-
schema: {
|
|
296
|
-
type: "string",
|
|
297
|
-
maxLength: maxSearch
|
|
298
|
-
}
|
|
299
|
-
}] : [],
|
|
300
|
-
{
|
|
301
|
-
name: "sort",
|
|
302
|
-
in: "query",
|
|
303
|
-
required: false,
|
|
304
|
-
description: `Ordering. Default \`${config.defaultSort}\`.`,
|
|
305
|
-
schema: {
|
|
306
|
-
type: "string",
|
|
307
|
-
enum: sortKeys,
|
|
308
|
-
default: config.defaultSort
|
|
309
|
-
}
|
|
310
|
-
},
|
|
311
|
-
cursor ? {
|
|
312
|
-
name: "after",
|
|
313
|
-
in: "query",
|
|
314
|
-
required: false,
|
|
315
|
-
description: "`nextCursor` of the previous page. Leave it out for the first page.",
|
|
316
|
-
schema: { type: "string" }
|
|
317
|
-
} : {
|
|
318
|
-
name: "page",
|
|
319
|
-
in: "query",
|
|
320
|
-
required: false,
|
|
321
|
-
description: "1-based page number.",
|
|
322
|
-
schema: {
|
|
323
|
-
type: "integer",
|
|
324
|
-
minimum: 1,
|
|
325
|
-
default: 1
|
|
326
|
-
}
|
|
327
|
-
},
|
|
328
|
-
{
|
|
329
|
-
name: "size",
|
|
330
|
-
in: "query",
|
|
331
|
-
required: false,
|
|
332
|
-
description: "Page size.",
|
|
333
|
-
schema: {
|
|
334
|
-
type: "integer",
|
|
335
|
-
minimum: 1,
|
|
336
|
-
maximum: maxPageSize,
|
|
337
|
-
default: pageSize
|
|
338
|
-
}
|
|
339
|
-
},
|
|
340
|
-
...facets.map((facet) => ({
|
|
341
|
-
name: facet.key,
|
|
342
|
-
in: "query",
|
|
343
|
-
required: false,
|
|
344
|
-
description: `Filter on ${facet.column}. Comma-separated; any value matches.${facet.nullable ? ` \`${UNSET}\` matches empty.` : ""}`,
|
|
345
|
-
schema: facetSchema(facet),
|
|
346
|
-
style: "form",
|
|
347
|
-
explode: false
|
|
348
|
-
}))
|
|
349
|
-
];
|
|
350
|
-
const jsonSchema = {
|
|
351
|
-
type: "object",
|
|
352
|
-
additionalProperties: false,
|
|
353
|
-
properties: {
|
|
354
|
-
...searchDescription ? { q: {
|
|
355
|
-
type: "string",
|
|
356
|
-
maxLength: maxSearch,
|
|
357
|
-
description: searchDescription
|
|
358
|
-
} } : {},
|
|
359
|
-
sort: {
|
|
360
|
-
type: "string",
|
|
361
|
-
enum: sortKeys,
|
|
362
|
-
default: config.defaultSort
|
|
363
|
-
},
|
|
364
|
-
...cursor ? { after: { type: "string" } } : { page: {
|
|
365
|
-
type: "integer",
|
|
366
|
-
minimum: 1,
|
|
367
|
-
default: 1
|
|
368
|
-
} },
|
|
369
|
-
size: {
|
|
370
|
-
type: "integer",
|
|
371
|
-
minimum: 1,
|
|
372
|
-
maximum: maxPageSize,
|
|
373
|
-
default: pageSize
|
|
374
|
-
},
|
|
375
|
-
...facets.length > 0 ? { facets: {
|
|
376
|
-
type: "object",
|
|
377
|
-
additionalProperties: false,
|
|
378
|
-
properties: Object.fromEntries(facets.map((facet) => [facet.key, facetSchema(facet)]))
|
|
379
|
-
} } : {}
|
|
380
|
-
}
|
|
381
|
-
};
|
|
382
|
-
return {
|
|
383
|
-
table,
|
|
384
|
-
pagination: config.pagination ?? "offset",
|
|
385
|
-
defaults,
|
|
386
|
-
facets,
|
|
387
|
-
parse,
|
|
388
|
-
schema: { "~standard": {
|
|
389
|
-
version: 1,
|
|
390
|
-
vendor: "better-supabase",
|
|
391
|
-
validate(value) {
|
|
392
|
-
const result = parse(value);
|
|
393
|
-
return result.ok ? { value: result.value } : { issues: result.issues };
|
|
394
|
-
}
|
|
395
|
-
} },
|
|
396
|
-
toSearchParams(query) {
|
|
397
|
-
const params = new URLSearchParams();
|
|
398
|
-
if (query.q) params.set("q", query.q);
|
|
399
|
-
if (query.sort && query.sort !== config.defaultSort) params.set("sort", query.sort);
|
|
400
|
-
if (query.page && query.page !== 1) params.set("page", String(query.page));
|
|
401
|
-
if (query.after) params.set("after", query.after);
|
|
402
|
-
if (query.size !== void 0 && query.size > 0 && query.size !== pageSize) params.set("size", String(query.size));
|
|
403
|
-
for (const facet of facets) {
|
|
404
|
-
const values = query.facets?.[facet.key];
|
|
405
|
-
if (values && values.length > 0) params.set(facet.key, values.join(","));
|
|
406
|
-
}
|
|
407
|
-
return params;
|
|
408
|
-
},
|
|
409
|
-
parsers,
|
|
410
|
-
nuqs: (createParser) => Object.fromEntries(Object.entries(parsers).map(([key, spec]) => [key, createParser(spec)])),
|
|
411
|
-
args,
|
|
412
|
-
run(db, query, extra) {
|
|
413
|
-
const base = args(query);
|
|
414
|
-
const { where: extraWhere, count, select: _select, include: _include, ...options } = extra ?? {};
|
|
415
|
-
const combined = and([extraWhere, base["where"]]);
|
|
416
|
-
const repository = db[table];
|
|
417
|
-
const page = repository.paginate({
|
|
418
|
-
...extra,
|
|
419
|
-
...base,
|
|
420
|
-
...cursor ? {} : { count: count ?? base["count"] },
|
|
421
|
-
...combined ? { where: combined } : {}
|
|
422
|
-
});
|
|
423
|
-
if (!config.facetCounts) return page;
|
|
424
|
-
if (facets.length === 0) return page.map((data) => ({
|
|
425
|
-
...data,
|
|
426
|
-
facetCounts: {}
|
|
427
|
-
}));
|
|
428
|
-
const facetFilter = and([extraWhere, searchWhere(query)]);
|
|
429
|
-
const groups = repository.aggregate({
|
|
430
|
-
...options,
|
|
431
|
-
...facetFilter ? { where: facetFilter } : {},
|
|
432
|
-
groupBy: [...new Set(facets.map((facet) => facet.column))],
|
|
433
|
-
_count: true
|
|
434
|
-
});
|
|
435
|
-
return page.andThen((data) => groups.map((rows) => ({
|
|
436
|
-
...data,
|
|
437
|
-
facetCounts: marginals(rows, query)
|
|
438
|
-
})));
|
|
439
|
-
},
|
|
440
|
-
openapi,
|
|
441
|
-
jsonSchema
|
|
442
|
-
};
|
|
443
|
-
}
|
|
444
|
-
//#endregion
|
|
1
|
+
import { n as defineListQuery, t as UNSET } from "../list-query-gl808ac1.js";
|
|
445
2
|
export { UNSET, defineListQuery };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { E as ValidationIssue, t as AsyncResult } from "./result-D7y2fT87.js";
|
|
2
|
+
import { L as TableKey, M as Row, a as AnyModels, i as AnyFunctions } from "./types-6BdhkmZe.js";
|
|
3
|
+
import { l as CountMode } from "./executor-DvsBbNBS.js";
|
|
4
|
+
import { At as OrderByArg, Ct as IncludeArg, D as OffsetPage, It as SelectArg, M as RepositoryOf, Mt as Payload, O as OffsetPageArgs, t as BetterSupabase, v as CursorPage, w as FindExt, y as CursorPageArgs, zt as WhereInput } from "./define-CJJkkr1-.js";
|
|
4
5
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
5
6
|
//#region src/list/list-query.d.ts
|
|
6
7
|
/** Facet value meaning "not set": filters with `is null`. */
|
|
@@ -11,11 +12,11 @@ type TextColumn<M extends AnyModels, T extends keyof M> = { [K in Column<M, T>]:
|
|
|
11
12
|
type ListPagination = "offset" | "cursor";
|
|
12
13
|
interface ListQueryConfig<M extends AnyModels, T extends keyof M, S extends string, F extends string, C extends boolean = boolean, P extends ListPagination = ListPagination> {
|
|
13
14
|
/**
|
|
14
|
-
* Also count rows per facet value, with one grouped aggregate
|
|
15
|
-
* next to the page:
|
|
15
|
+
* Also count rows per facet value, with one grouped aggregate per facet
|
|
16
|
+
* that runs next to the page: one wave. Needs PostgREST aggregates.
|
|
16
17
|
*/
|
|
17
18
|
readonly facetCounts?: C;
|
|
18
|
-
/** How the page total is counted. Defaults to `'
|
|
19
|
+
/** How the page total is counted. Defaults to `'planned'`, the planner's estimate. */
|
|
19
20
|
readonly count?: CountMode;
|
|
20
21
|
/** Text columns matched case-insensitively (OR), or a full-text column. */
|
|
21
22
|
readonly search?: readonly TextColumn<M, T>[] | {
|
|
@@ -39,6 +40,11 @@ interface ListQueryConfig<M extends AnyModels, T extends keyof M, S extends stri
|
|
|
39
40
|
readonly maxPageSize?: number;
|
|
40
41
|
/** Defaults to 200 characters. */
|
|
41
42
|
readonly maxSearchLength?: number;
|
|
43
|
+
/**
|
|
44
|
+
* Most values counted per facet; a facet with more lists its key in
|
|
45
|
+
* `facetCountsTruncated`. Defaults to 100.
|
|
46
|
+
*/
|
|
47
|
+
readonly facetLimit?: number;
|
|
42
48
|
}
|
|
43
49
|
interface ListQuery<S extends string, F extends string> {
|
|
44
50
|
readonly q?: string;
|
|
@@ -93,11 +99,13 @@ interface FacetInfo {
|
|
|
93
99
|
/** Rows per facet value, keyed by facet and then by value (`UNSET` for empty). */
|
|
94
100
|
type FacetCounts<F extends string> = { readonly [K in F]: Readonly<Record<string, number>>; };
|
|
95
101
|
/** A page of a list; with `facetCounts: true`, also the counts per facet value. */
|
|
96
|
-
type ListPage<R, F extends string, C extends boolean, P extends ListPagination = "offset"> = ([P] extends ["cursor"] ? CursorPage<R> : OffsetPage<R>) & ([C] extends [true] ?
|
|
102
|
+
type ListPage<R, F extends string, C extends boolean, P extends ListPagination = "offset"> = ([P] extends ["cursor"] ? CursorPage<R> : OffsetPage<R>) & ([C] extends [true] ? FacetCountFields<F> : [C] extends [false] ? unknown : Partial<FacetCountFields<F>>);
|
|
103
|
+
/** The facet fields of a page with `facetCounts: true`. */
|
|
104
|
+
interface FacetCountFields<F extends string> {
|
|
97
105
|
readonly facetCounts: FacetCounts<F>;
|
|
98
|
-
|
|
99
|
-
readonly
|
|
100
|
-
}
|
|
106
|
+
/** Facets with more values than `facetLimit`, whose counts are cut. */
|
|
107
|
+
readonly facetCountsTruncated: readonly F[];
|
|
108
|
+
}
|
|
101
109
|
interface ListDefinition<M extends AnyModels, T extends TableKey<M>, E, S extends string, F extends string, C extends boolean = false, P extends ListPagination = "offset"> {
|
|
102
110
|
readonly table: T;
|
|
103
111
|
readonly pagination: P;
|
|
@@ -115,7 +123,7 @@ interface ListDefinition<M extends AnyModels, T extends TableKey<M>, E, S extend
|
|
|
115
123
|
args(query: ListQuery<S, F>): [P] extends ["cursor"] ? CursorPageArgs<M, T> : OffsetPageArgs<M, T>;
|
|
116
124
|
/**
|
|
117
125
|
* Runs the list against a table, merging your `select`, `include`, `where`
|
|
118
|
-
* and `count`. One request, plus one for `facetCounts`, always one wave.
|
|
126
|
+
* and `count`. One request, plus one per facet for `facetCounts`, always one wave.
|
|
119
127
|
*/
|
|
120
128
|
run<const A extends ListExtra<M, T> & FindExt<E, M, T>>(db: { readonly [K in T]: RepositoryOf<M, K, E>; }, query: ListQuery<S, F>, extra?: A): AsyncResult<ListPage<Payload<M, T, A>, F, C, P>>;
|
|
121
129
|
/** OpenAPI 3.1 query parameters. */
|
|
@@ -153,4 +161,4 @@ type ListParsers<S extends string, F extends string> = {
|
|
|
153
161
|
*/
|
|
154
162
|
declare function defineListQuery<M extends AnyModels, D, Fn extends AnyFunctions, E, T extends TableKey<M>, const S extends string, const F extends string = never, const C extends boolean = false, const P extends ListPagination = "offset">(betterSupabase: BetterSupabase<M, D, Fn, E>, table: T, config: ListQueryConfig<M, T, S, F, C, P>): ListDefinition<M, T, E, S, F, C, P>;
|
|
155
163
|
//#endregion
|
|
156
|
-
export {
|
|
164
|
+
export { defineListQuery as _, ListExtra as a, ListParseResult as c, ListQueryConfig as d, ListQueryInput as f, UNSET as g, ParserSpec as h, ListDefinition as i, ListParsers as l, OpenApiParameter as m, FacetCounts as n, ListPage as o, ListSearchParams as p, FacetInfo as r, ListPagination as s, FacetCountFields as t, ListQuery as u };
|