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/cli/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { styleText } from "node:util";
|
|
2
|
-
import { Catalog, CatalogCheck, CatalogColumn, CatalogColumnGrant, CatalogEnum, CatalogForeignKey, CatalogFunction, CatalogFunctionArg, CatalogGrant, CatalogIndex, CatalogPolicy, CatalogTable, CatalogTrigger, CatalogUnique, ExtrasFunction, ExtrasHook, ExtrasHookFunction, ExtrasTable, ForeignKeyAction, GeneratedFile, GeneratorMetadata, ResolvedConfig, Snapshot, SnapshotBucket, SnapshotExtras } from "better-supabase/config";
|
|
2
|
+
import { Catalog, CatalogCheck, CatalogColumn, CatalogColumnGrant, CatalogEnum, CatalogForeignKey, CatalogFunction, CatalogFunctionArg, CatalogGrant, CatalogIndex, CatalogPolicy, CatalogTable, CatalogTrigger, CatalogUnique, ExtrasFunction, ExtrasHook, ExtrasHookFunction, ExtrasTable, ForeignKeyAction, GeneratedFile, GeneratorMetadata, GeneratorMetadata as GeneratorMetadata$1, ResolvedConfig, Snapshot, SnapshotBucket, SnapshotExtras } from "better-supabase/config";
|
|
3
3
|
import { Casing, Codec, FunctionMeta, RelationMeta, SchemaMeta, TableMeta } from "better-supabase";
|
|
4
|
-
import { GeneratorMetadata as GeneratorMetadata$1, Queryable } from "@supabase/postgrest-typegen";
|
|
5
4
|
//#region ../../node_modules/.pnpm/citty@0.2.2/node_modules/citty/dist/index.d.mts
|
|
6
5
|
//#region src/types.d.ts
|
|
7
6
|
type ArgType = "boolean" | "string" | "enum" | "positional" | undefined;
|
|
@@ -148,6 +147,10 @@ interface CommandResult {
|
|
|
148
147
|
interface CliContext {
|
|
149
148
|
readonly cwd: string;
|
|
150
149
|
readonly config: ResolvedConfig;
|
|
150
|
+
/** The config file `config` came from, when there is one. */
|
|
151
|
+
readonly configFile?: string;
|
|
152
|
+
/** Loads the config file again, for commands that run until stopped. */
|
|
153
|
+
readonly reloadConfig?: () => Promise<ResolvedConfig>;
|
|
151
154
|
/** `prompts` is unset in CI and under `--json` or `--yes`. */
|
|
152
155
|
readonly io: CliIo;
|
|
153
156
|
readonly env: CliEnv;
|
|
@@ -298,6 +301,14 @@ interface PgConnection {
|
|
|
298
301
|
/** Opens a `pg` connection. `pg` is an optional peer, loaded on demand. */
|
|
299
302
|
declare function connect(url: string, load?: () => Promise<unknown>, options?: ConnectOptions): Promise<PgConnection>;
|
|
300
303
|
//#endregion
|
|
304
|
+
//#region src/cli/introspect/typegen.d.ts
|
|
305
|
+
/** A connection `introspect()` reads the catalog through, as postgrest-typegen types it. */
|
|
306
|
+
interface Queryable {
|
|
307
|
+
query(sql: string): Promise<{
|
|
308
|
+
rows: any[];
|
|
309
|
+
}>;
|
|
310
|
+
}
|
|
311
|
+
//#endregion
|
|
301
312
|
//#region src/cli/introspect/source.d.ts
|
|
302
313
|
/** A connection introspection can query, plus how to release it. */
|
|
303
314
|
interface IntrospectionSource {
|
|
@@ -358,13 +369,25 @@ interface GenOptions extends SnapshotSource {
|
|
|
358
369
|
readonly paint?: Paint;
|
|
359
370
|
/** Pre-loaded snapshot (tests, watch mode). */
|
|
360
371
|
readonly snapshot?: Snapshot;
|
|
372
|
+
/**
|
|
373
|
+
* Writes only the generated files (`gen --metadata --out`): no read-set SQL
|
|
374
|
+
* module, and the manifest that removes files an earlier run wrote is
|
|
375
|
+
* neither read nor written.
|
|
376
|
+
*/
|
|
377
|
+
readonly isolated?: boolean;
|
|
378
|
+
}
|
|
379
|
+
interface RenderOptions {
|
|
380
|
+
/** Where the generated module imports the runtime from. Defaults to `better-supabase`. */
|
|
381
|
+
readonly runtimeImport?: string;
|
|
382
|
+
/** Writes the metadata into the main module, so it stands alone on stdout. */
|
|
383
|
+
readonly inlineMeta?: boolean;
|
|
361
384
|
}
|
|
362
385
|
/**
|
|
363
386
|
* Renders every generated file for a snapshot, without touching disk:
|
|
364
387
|
* `database.types.ts` (what `supabase gen types` prints), the main module,
|
|
365
388
|
* then each configured generator's files.
|
|
366
389
|
*/
|
|
367
|
-
export declare function renderFiles(config: ResolvedConfig, snapshot: Snapshot): Promise<GeneratedFile[]>;
|
|
390
|
+
export declare function renderFiles(config: ResolvedConfig, snapshot: Snapshot, options?: RenderOptions): Promise<GeneratedFile[]>;
|
|
368
391
|
export declare function runGen(options: GenOptions): Promise<CommandResult>;
|
|
369
392
|
//#endregion
|
|
370
393
|
//#region src/cli/introspect/extras.d.ts
|
|
@@ -405,6 +428,8 @@ interface ColumnModel {
|
|
|
405
428
|
readonly nullable: boolean;
|
|
406
429
|
/** Optional on insert. */
|
|
407
430
|
readonly optional: boolean;
|
|
431
|
+
/** An insert may leave it out: a default, `insertOptional`, or a CHECK-narrowed column a `before insert` trigger can fill. */
|
|
432
|
+
readonly filled: boolean;
|
|
408
433
|
/** Not writable (generated always / identity always). */
|
|
409
434
|
readonly readonly: boolean;
|
|
410
435
|
readonly values: readonly string[] | undefined;
|
|
@@ -417,6 +442,11 @@ interface ColumnModel {
|
|
|
417
442
|
}
|
|
418
443
|
interface RelationModel {
|
|
419
444
|
readonly name: string;
|
|
445
|
+
/** The name before casing, from database names. */
|
|
446
|
+
readonly base: string;
|
|
447
|
+
/** Database names of the foreign key's columns and the ones it references. */
|
|
448
|
+
readonly fkColumns: readonly string[];
|
|
449
|
+
readonly refColumns: readonly string[];
|
|
420
450
|
readonly meta: RelationMeta;
|
|
421
451
|
}
|
|
422
452
|
interface TableModel {
|
|
@@ -430,8 +460,12 @@ interface TableModel {
|
|
|
430
460
|
interface EnumModel {
|
|
431
461
|
readonly schema: string;
|
|
432
462
|
readonly name: string;
|
|
463
|
+
/** Key in `meta.enums`: the name, or `schema_name` when another schema has the same enum name. */
|
|
464
|
+
readonly key: string;
|
|
433
465
|
/** Constant name for the value array, e.g. `noteKindValues`. */
|
|
434
466
|
readonly constant: string;
|
|
467
|
+
/** Exported type name, e.g. `NoteKind`. */
|
|
468
|
+
readonly typeName: string;
|
|
435
469
|
readonly values: readonly string[];
|
|
436
470
|
}
|
|
437
471
|
interface FunctionModel {
|
|
@@ -459,6 +493,8 @@ interface Model {
|
|
|
459
493
|
readonly catalog: Catalog;
|
|
460
494
|
/** Typegen metadata restricted to the configured schemas. */
|
|
461
495
|
readonly introspection: GeneratorMetadata$1;
|
|
496
|
+
/** Config entries that matched nothing in the schema. */
|
|
497
|
+
readonly warnings: readonly string[];
|
|
462
498
|
}
|
|
463
499
|
/** Builds the codegen model from a snapshot and config. */
|
|
464
500
|
export declare function buildModel(snapshot: Snapshot, config: ResolvedConfig): Model;
|
|
@@ -474,6 +510,8 @@ interface EmitOptions {
|
|
|
474
510
|
readonly importPathFor: (from: string) => string;
|
|
475
511
|
/** Import path from the generated module to the metadata module (`emitMeta`). */
|
|
476
512
|
readonly metaImport?: string;
|
|
513
|
+
/** Writes the metadata into the module instead of importing it, so it is one file. */
|
|
514
|
+
readonly inlineMeta?: boolean;
|
|
477
515
|
}
|
|
478
516
|
/** Renders the generated module. */
|
|
479
517
|
export declare function emitModule(model: Model, options: EmitOptions): string;
|
|
@@ -483,11 +521,12 @@ export declare function emitModule(model: Model, options: EmitOptions): string;
|
|
|
483
521
|
* Loads `better-supabase.config.*` with c12 and checks it against the config
|
|
484
522
|
* schema. c12 imports `.ts` natively (Node 24 strips the types), so no
|
|
485
523
|
* loader is needed; rc files, `package.json`, env overrides and `extends`
|
|
486
|
-
* are off so the one file is the whole config.
|
|
524
|
+
* are off so the one file is the whole config. A discovered file sets the
|
|
525
|
+
* project root to its own directory; `--config` keeps `cwd` as the root.
|
|
487
526
|
*/
|
|
488
527
|
export declare function loadConfig(cwd: string, explicit?: string): Promise<ResolvedConfig>;
|
|
489
528
|
//#endregion
|
|
490
529
|
//#region src/cli/version.d.ts
|
|
491
|
-
export declare const VERSION = "0.
|
|
530
|
+
export declare const VERSION = "0.6.0";
|
|
492
531
|
//#endregion
|
|
493
532
|
export type { Catalog, CatalogCheck, CatalogColumn, CatalogColumnGrant, CatalogEnum, CatalogForeignKey, CatalogFunction, CatalogFunctionArg, CatalogGrant, CatalogIndex, CatalogPolicy, CatalogTable, CatalogTrigger, CatalogUnique, CliArgs, CliCommandDef, CliContext, CliEnv, CliErrorCode, CliErrorOptions, CliIo, CliProblem, CliProblemExtensions, Command, CommandContext, CommandResult, ExitCode, ExtrasFunction, ExtrasHook, ExtrasHookFunction, ExtrasTable, ForeignKeyAction, GeneratorMetadata, IntrospectionSource, ManagementSourceOptions, ParsedArgs, Queryable, RunOptions, RunResult, Snapshot, SnapshotBucket, SnapshotExtras };
|
package/dist/cli/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { a as list, r as defineCliCommand } from "./command-CK14fP91.js";
|
|
2
2
|
import { n as CliError, t as CLI_ERRORS_URL } from "./errors-4v4DTtda.js";
|
|
3
|
-
import { i as run, n as help, r as registerCommand, t as commandNames } from "./run-
|
|
4
|
-
import { t as VERSION } from "./version-
|
|
5
|
-
import { a as loadConfig } from "./config-
|
|
6
|
-
import {
|
|
3
|
+
import { i as run, n as help, r as registerCommand, t as commandNames } from "./run-DNWxHynX.js";
|
|
4
|
+
import { t as VERSION } from "./version-hr88OZG0.js";
|
|
5
|
+
import { a as loadConfig } from "./config-NiPxAmUF.js";
|
|
6
|
+
import { L as toCatalog, a as renderFiles, b as emitModule, c as loadSnapshot, d as parseSnapshot, f as serializeSnapshot, g as pgSource, h as managementSource, m as introspect, o as runGen, x as buildModel, y as GENERATED_HEADER } from "./gen-BGLb_zou.js";
|
|
7
7
|
//#region src/cli/introspect/from-catalog.ts
|
|
8
8
|
/**
|
|
9
9
|
* Builds a snapshot from catalog records: the inverse of `toCatalog`. Tests
|
|
@@ -124,12 +124,12 @@ function fromCatalog(catalog) {
|
|
|
124
124
|
const args = [...fn.args.map((arg) => ({
|
|
125
125
|
mode: "in",
|
|
126
126
|
name: arg.name,
|
|
127
|
-
type_id: argType(fn.schema, arg.isArray ? `_${arg.udt}` : arg.udt),
|
|
127
|
+
type_id: argType(arg.typeSchema ?? fn.schema, arg.isArray ? `_${arg.udt}` : arg.udt),
|
|
128
128
|
has_default: arg.hasDefault
|
|
129
129
|
})), ...(fn.returnsTable ?? []).map((entry) => ({
|
|
130
130
|
mode: "table",
|
|
131
131
|
name: entry.name,
|
|
132
|
-
type_id: argType(fn.schema, entry.udt),
|
|
132
|
+
type_id: argType(entry.typeSchema ?? fn.schema, entry.udt),
|
|
133
133
|
has_default: false
|
|
134
134
|
}))];
|
|
135
135
|
meta.functions.push({
|
|
@@ -142,7 +142,7 @@ function fromCatalog(catalog) {
|
|
|
142
142
|
args,
|
|
143
143
|
argument_types: fn.signature,
|
|
144
144
|
identity_argument_types: fn.signature,
|
|
145
|
-
return_type_id: fn.returnsRelation ? typeId(fn.returnsRelation.split(".")[0], fn.returns) : argType(fn.schema, fn.returns),
|
|
145
|
+
return_type_id: fn.returnsRelation ? typeId(fn.returnsRelation.split(".")[0], fn.returns) : argType(fn.returnsSchema ?? fn.schema, fn.returns),
|
|
146
146
|
return_type: fn.returns,
|
|
147
147
|
return_type_relation_id: fn.returnsRelation ? relationIds.get(fn.returnsRelation) ?? null : null,
|
|
148
148
|
is_set_returning_function: fn.returnsSet,
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import { a as list, r as defineCliCommand } from "./command-CK14fP91.js";
|
|
2
|
-
import {
|
|
3
|
-
import { t as VERSION } from "./version-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
2
|
+
import { i as writeIfChanged, t as display } from "./io-DI1mTdSA.js";
|
|
3
|
+
import { t as VERSION } from "./version-hr88OZG0.js";
|
|
4
|
+
import { a as loadConfig, r as findConfig } from "./config-NiPxAmUF.js";
|
|
5
|
+
import { a as findSupabaseRoot, p as tomlGet, r as diffEngine, t as PGDELTA_TABLE, u as readSupabaseToml } from "./supabase-toml-B-bIukQF.js";
|
|
6
|
+
import { t as TYPEGEN_VERSION } from "./typegen-version-DeFbtzYI.js";
|
|
7
|
+
import { n as installCommand, t as detectProject } from "./project-DZRaBaY7.js";
|
|
8
|
+
import { join, posix, resolve } from "node:path";
|
|
7
9
|
import { existsSync } from "node:fs";
|
|
10
|
+
import { glob, readFile } from "node:fs/promises";
|
|
8
11
|
//#region src/cli/templates.ts
|
|
9
12
|
const INTEGRATIONS = [
|
|
10
13
|
"next",
|
|
11
14
|
"hono",
|
|
12
15
|
"orpc",
|
|
13
16
|
"edge",
|
|
17
|
+
"expo",
|
|
14
18
|
"mcp",
|
|
15
19
|
"client",
|
|
16
20
|
"react"
|
|
@@ -87,15 +91,16 @@ export default defineConfig({
|
|
|
87
91
|
if (!lib) return [config];
|
|
88
92
|
const path = libEntry(context);
|
|
89
93
|
const generated = importFrom(context, path, context.generated);
|
|
94
|
+
const expo = context.frameworks.includes("expo");
|
|
90
95
|
return [config, {
|
|
91
96
|
path,
|
|
92
97
|
contents: `import { defineSupabase } from 'better-supabase';
|
|
93
|
-
|
|
98
|
+
${expo ? "import { Temporal } from 'temporal-polyfill';\n" : ""}
|
|
94
99
|
import { schema } from '${generated}';
|
|
95
100
|
|
|
96
101
|
export type { Functions, Models } from '${generated}';
|
|
97
102
|
|
|
98
|
-
export const betterSupabase = defineSupabase(schema);
|
|
103
|
+
export const betterSupabase = defineSupabase(schema${expo ? ", { temporal: Temporal }" : ""});
|
|
99
104
|
`
|
|
100
105
|
}];
|
|
101
106
|
}
|
|
@@ -275,6 +280,64 @@ Deno.serve(bs.handler((_request, { auth }) => ({ kind: auth.kind })));
|
|
|
275
280
|
],
|
|
276
281
|
next: ["Serve it locally with `supabase functions serve api`."]
|
|
277
282
|
},
|
|
283
|
+
expo: {
|
|
284
|
+
description: "Expo Router server loaders, API routes and middleware, and a native client",
|
|
285
|
+
requires: ["client"],
|
|
286
|
+
packages: [
|
|
287
|
+
"expo-server",
|
|
288
|
+
"expo-secure-store",
|
|
289
|
+
"@supabase/supabase-js",
|
|
290
|
+
"temporal-polyfill"
|
|
291
|
+
],
|
|
292
|
+
files: (context) => {
|
|
293
|
+
const server = join$1(supabaseDir(context), "expo.ts");
|
|
294
|
+
const native = join$1(supabaseDir(context), "client.native.ts");
|
|
295
|
+
const middleware = join$1(context.srcDir, "app", "+middleware.ts");
|
|
296
|
+
const env = publicEnv(context);
|
|
297
|
+
return [
|
|
298
|
+
{
|
|
299
|
+
path: server,
|
|
300
|
+
contents: `import { createExpo } from 'better-supabase/expo';
|
|
301
|
+
|
|
302
|
+
import { betterSupabase } from '${importLib(context, server)}';
|
|
303
|
+
|
|
304
|
+
export const bs = createExpo(betterSupabase);
|
|
305
|
+
`
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
path: native,
|
|
309
|
+
contents: `import { createClient as createSupabaseClient } from '@supabase/supabase-js';
|
|
310
|
+
import { autoRefreshOnForeground, createNativeClient, secureStorage } from 'better-supabase/client/native';
|
|
311
|
+
import * as SecureStore from 'expo-secure-store';
|
|
312
|
+
import { AppState } from 'react-native';
|
|
313
|
+
|
|
314
|
+
import { betterSupabase } from '${importLib(context, native)}';
|
|
315
|
+
|
|
316
|
+
const supabase = createSupabaseClient(${env.url}, ${env.key}, {
|
|
317
|
+
auth: {
|
|
318
|
+
storage: secureStorage(SecureStore),
|
|
319
|
+
autoRefreshToken: true,
|
|
320
|
+
persistSession: true,
|
|
321
|
+
detectSessionInUrl: false,
|
|
322
|
+
},
|
|
323
|
+
});
|
|
324
|
+
|
|
325
|
+
autoRefreshOnForeground(supabase, AppState);
|
|
326
|
+
|
|
327
|
+
export const bs = createNativeClient(betterSupabase, supabase);
|
|
328
|
+
`
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
path: middleware,
|
|
332
|
+
contents: `import { bs } from '${importFrom(context, middleware, server)}';
|
|
333
|
+
|
|
334
|
+
export default bs.middleware();
|
|
335
|
+
`
|
|
336
|
+
}
|
|
337
|
+
];
|
|
338
|
+
},
|
|
339
|
+
next: ["Load data as the caller with `export const loader = bs.loader((ctx) => ctx.db.customers.findMany())`.", "Metro picks `client.native.ts` on iOS and Android and `client.ts` (cookie sessions) on the web."]
|
|
340
|
+
},
|
|
278
341
|
mcp: {
|
|
279
342
|
description: "An MCP server (Streamable HTTP) as an Edge Function",
|
|
280
343
|
requires: [],
|
|
@@ -303,7 +366,7 @@ Deno.serve(bs.fetch);
|
|
|
303
366
|
contents: denoJson(context)
|
|
304
367
|
}
|
|
305
368
|
],
|
|
306
|
-
next: ["List tables under `resources` to expose them as tools, e.g. `customers: true`."]
|
|
369
|
+
next: ["List tables under `resources` to expose them as tools, e.g. `customers: true`.", "Add `[functions.mcp] verify_jwt = false` and `[auth.oauth_server] enabled = true` to `supabase/config.toml`, so MCP clients get the sign-in challenge."]
|
|
307
370
|
}
|
|
308
371
|
};
|
|
309
372
|
/** The integration and what it requires, dependencies first, without duplicates. */
|
|
@@ -334,9 +397,11 @@ function suggestedIntegrations(frameworks) {
|
|
|
334
397
|
names.push("orpc");
|
|
335
398
|
break;
|
|
336
399
|
case "vite":
|
|
337
|
-
case "expo":
|
|
338
400
|
names.push("client");
|
|
339
401
|
break;
|
|
402
|
+
case "expo":
|
|
403
|
+
names.push("expo");
|
|
404
|
+
break;
|
|
340
405
|
case "tanstack-query":
|
|
341
406
|
names.push("react");
|
|
342
407
|
break;
|
|
@@ -345,6 +410,86 @@ function suggestedIntegrations(frameworks) {
|
|
|
345
410
|
return resolveIntegrations(names);
|
|
346
411
|
}
|
|
347
412
|
//#endregion
|
|
413
|
+
//#region src/cli/workspace.ts
|
|
414
|
+
const unquote = (value) => value.replace(/\s+#.*$/, "").trim().replace(/^(["'])(.*)\1$/, "$2");
|
|
415
|
+
/** The `packages` globs of `pnpm-workspace.yaml`, in block or flow style. */
|
|
416
|
+
function pnpmWorkspacePatterns(text) {
|
|
417
|
+
const lines = text.split(/\r?\n/);
|
|
418
|
+
const start = lines.findIndex((line) => /^packages\s*:/.test(line));
|
|
419
|
+
if (start === -1) return [];
|
|
420
|
+
const inline = /^packages\s*:\s*\[(.*)\]\s*(?:#.*)?$/.exec(lines[start]);
|
|
421
|
+
if (inline) return inline[1].split(",").map(unquote).filter((entry) => entry !== "");
|
|
422
|
+
const patterns = [];
|
|
423
|
+
for (const line of lines.slice(start + 1)) {
|
|
424
|
+
if (/^\s*(?:#.*)?$/.test(line)) continue;
|
|
425
|
+
const item = /^\s+-\s*(.+)$/.exec(line);
|
|
426
|
+
if (!item) break;
|
|
427
|
+
patterns.push(unquote(item[1]));
|
|
428
|
+
}
|
|
429
|
+
return patterns.filter((entry) => entry !== "");
|
|
430
|
+
}
|
|
431
|
+
function packageJsonPatterns(workspaces) {
|
|
432
|
+
let list = workspaces;
|
|
433
|
+
if (typeof workspaces === "object" && workspaces !== null && "packages" in workspaces) list = workspaces.packages;
|
|
434
|
+
return Array.isArray(list) ? list.filter((entry) => typeof entry === "string") : [];
|
|
435
|
+
}
|
|
436
|
+
async function matches(root, pattern) {
|
|
437
|
+
const dirs = [];
|
|
438
|
+
const base = pattern.replace(/^\.\//, "").replace(/\/$/, "");
|
|
439
|
+
for await (const path of glob(`${base}/package.json`, {
|
|
440
|
+
cwd: root,
|
|
441
|
+
exclude: (name) => name === "node_modules"
|
|
442
|
+
})) dirs.push(posix.dirname(path.replaceAll("\\", "/")));
|
|
443
|
+
return dirs;
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* The workspace declared at `root` by `pnpm-workspace.yaml` or the
|
|
447
|
+
* `workspaces` field of `package.json`, with its packages in path order.
|
|
448
|
+
* `undefined` when `root` declares none.
|
|
449
|
+
*/
|
|
450
|
+
async function detectWorkspace(root) {
|
|
451
|
+
let file;
|
|
452
|
+
let patterns;
|
|
453
|
+
const yaml = join(root, "pnpm-workspace.yaml");
|
|
454
|
+
if (existsSync(yaml)) {
|
|
455
|
+
file = "pnpm-workspace.yaml";
|
|
456
|
+
patterns = pnpmWorkspacePatterns(await readFile(yaml, "utf8"));
|
|
457
|
+
} else {
|
|
458
|
+
const path = join(root, "package.json");
|
|
459
|
+
if (!existsSync(path)) return void 0;
|
|
460
|
+
let pkg;
|
|
461
|
+
try {
|
|
462
|
+
pkg = JSON.parse(await readFile(path, "utf8"));
|
|
463
|
+
} catch {
|
|
464
|
+
return;
|
|
465
|
+
}
|
|
466
|
+
if (typeof pkg !== "object" || pkg === null || !("workspaces" in pkg)) return void 0;
|
|
467
|
+
file = "package.json";
|
|
468
|
+
patterns = packageJsonPatterns(pkg.workspaces);
|
|
469
|
+
if (patterns.length === 0) return void 0;
|
|
470
|
+
}
|
|
471
|
+
const included = /* @__PURE__ */ new Set();
|
|
472
|
+
const excluded = /* @__PURE__ */ new Set();
|
|
473
|
+
for (const pattern of patterns) {
|
|
474
|
+
const negated = pattern.startsWith("!");
|
|
475
|
+
for (const dir of await matches(root, negated ? pattern.slice(1) : pattern)) (negated ? excluded : included).add(dir);
|
|
476
|
+
}
|
|
477
|
+
const dirs = [...included].filter((dir) => dir !== "." && !excluded.has(dir)).sort();
|
|
478
|
+
const packages = await Promise.all(dirs.map(async (dir) => ({
|
|
479
|
+
dir,
|
|
480
|
+
project: await detectProject(join(root, dir))
|
|
481
|
+
})));
|
|
482
|
+
return {
|
|
483
|
+
file,
|
|
484
|
+
packages
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
/** The package `init` suggests: one that uses better-supabase, then one with a framework. */
|
|
488
|
+
function suggestedPackage(workspace) {
|
|
489
|
+
const packages = workspace.packages;
|
|
490
|
+
return (packages.find((entry) => "better-supabase" in entry.project.dependencies) ?? packages.find((entry) => entry.project.frameworks.length > 0) ?? packages[0])?.dir;
|
|
491
|
+
}
|
|
492
|
+
//#endregion
|
|
348
493
|
//#region src/cli/commands/init.ts
|
|
349
494
|
const INIT_ARGS = {
|
|
350
495
|
casing: {
|
|
@@ -354,9 +499,14 @@ const INIT_ARGS = {
|
|
|
354
499
|
},
|
|
355
500
|
with: {
|
|
356
501
|
type: "string",
|
|
357
|
-
description: "Integrations to add next to the detected ones: next, hono, orpc, edge, mcp, client, react",
|
|
502
|
+
description: "Integrations to add next to the detected ones: next, hono, orpc, edge, expo, mcp, client, react",
|
|
358
503
|
valueHint: "integration,..."
|
|
359
504
|
},
|
|
505
|
+
package: {
|
|
506
|
+
type: "string",
|
|
507
|
+
description: "Workspace package to write to, relative to --cwd",
|
|
508
|
+
valueHint: "dir"
|
|
509
|
+
},
|
|
360
510
|
force: {
|
|
361
511
|
type: "boolean",
|
|
362
512
|
description: "Overwrite files that exist"
|
|
@@ -370,7 +520,7 @@ const ADD_ARGS = {
|
|
|
370
520
|
integration: {
|
|
371
521
|
type: "positional",
|
|
372
522
|
required: false,
|
|
373
|
-
description: "next, hono, orpc, edge, mcp, client or react"
|
|
523
|
+
description: "next, hono, orpc, edge, expo, mcp, client or react"
|
|
374
524
|
},
|
|
375
525
|
force: {
|
|
376
526
|
type: "boolean",
|
|
@@ -386,13 +536,13 @@ const CANCELLED = {
|
|
|
386
536
|
error: "Cancelled."
|
|
387
537
|
};
|
|
388
538
|
/** `--force`, or the person's answer when files exist; `undefined` when they cancel. */
|
|
389
|
-
async function overwrite(root, files, args, prompts) {
|
|
539
|
+
async function overwrite(root, files, args, prompts, base = root) {
|
|
390
540
|
if (args.force === true) return true;
|
|
391
541
|
const existing = [...new Set(files.map((file) => file.path).filter((path) => existsSync(resolve(root, path))))];
|
|
392
542
|
if (!prompts || existing.length === 0) return false;
|
|
393
|
-
return prompts.confirm(`${existing.map((path) => display(root, path)).join(", ")} ${existing.length === 1 ? "exists" : "exist"}. Overwrite?`);
|
|
543
|
+
return prompts.confirm(`${existing.map((path) => display(base, resolve(root, path))).join(", ")} ${existing.length === 1 ? "exists" : "exist"}. Overwrite?`);
|
|
394
544
|
}
|
|
395
|
-
async function writeFiles(root, files, args, force) {
|
|
545
|
+
async function writeFiles(root, files, args, force, base = root) {
|
|
396
546
|
const dryRun = args["dry-run"] === true;
|
|
397
547
|
const lines = [];
|
|
398
548
|
const seen = /* @__PURE__ */ new Set();
|
|
@@ -400,7 +550,7 @@ async function writeFiles(root, files, args, force) {
|
|
|
400
550
|
if (seen.has(file.path)) continue;
|
|
401
551
|
seen.add(file.path);
|
|
402
552
|
const path = resolve(root, file.path);
|
|
403
|
-
const shown = display(
|
|
553
|
+
const shown = display(base, path);
|
|
404
554
|
if (existsSync(path) && !force) {
|
|
405
555
|
lines.push(`Kept ${shown} (exists)`);
|
|
406
556
|
continue;
|
|
@@ -413,6 +563,24 @@ async function writeFiles(root, files, args, force) {
|
|
|
413
563
|
}
|
|
414
564
|
return lines;
|
|
415
565
|
}
|
|
566
|
+
/**
|
|
567
|
+
* Adds `[experimental.pgdelta] enabled = true` to `supabase/config.toml`
|
|
568
|
+
* when it has no such table, so `supabase db schema declarative sync`
|
|
569
|
+
* runs on pg-delta. A table set to `enabled = false` is left alone.
|
|
570
|
+
*/
|
|
571
|
+
async function enablePgDelta(root, args, base) {
|
|
572
|
+
const supabaseRoot = findSupabaseRoot(root);
|
|
573
|
+
const toml = await readSupabaseToml(root);
|
|
574
|
+
if (supabaseRoot === void 0 || toml === void 0) return [];
|
|
575
|
+
const path = join(supabaseRoot, "supabase/config.toml");
|
|
576
|
+
const shown = display(base, path);
|
|
577
|
+
if (diffEngine(toml) === "pg-delta") return [];
|
|
578
|
+
if (tomlGet(toml.document, ["experimental", "pgdelta"]) !== void 0 || toml.text.includes("pgdelta")) return [`Kept ${shown} (pg-delta is off; set [experimental.pgdelta] enabled = true, remove [db.migrations] schema_paths and use \`supabase db schema declarative sync\` instead of \`supabase db diff\`)`];
|
|
579
|
+
if (args["dry-run"] === true) return [`Would enable pg-delta in ${shown}`];
|
|
580
|
+
const separator = toml.text === "" || toml.text.endsWith("\n\n") ? "" : toml.text.endsWith("\n") ? "\n" : "\n\n";
|
|
581
|
+
await writeIfChanged(path, `${toml.text}${separator}${PGDELTA_TABLE}`);
|
|
582
|
+
return [`Enabled pg-delta in ${shown}`];
|
|
583
|
+
}
|
|
416
584
|
function context(project, generated) {
|
|
417
585
|
return {
|
|
418
586
|
srcDir: project.srcDir,
|
|
@@ -433,9 +601,10 @@ function packagesFor(project, names) {
|
|
|
433
601
|
];
|
|
434
602
|
return [...new Set(wanted)].filter((name) => !(name in project.dependencies));
|
|
435
603
|
}
|
|
436
|
-
/** pg as
|
|
604
|
+
/** pg and the pinned postgrest-typegen as dev dependencies, the ones the project lacks. */
|
|
437
605
|
function devPackages(project) {
|
|
438
|
-
|
|
606
|
+
const missing = [..."pg" in project.dependencies ? [] : ["pg"], ..."@supabase/postgrest-typegen" in project.dependencies ? [] : [`@supabase/postgrest-typegen@${TYPEGEN_VERSION}`]];
|
|
607
|
+
return missing.length === 0 ? [] : [missing];
|
|
439
608
|
}
|
|
440
609
|
function chooseIntegrations(prompts, initial) {
|
|
441
610
|
return prompts.multiselect("Integrations", INTEGRATIONS.map((name) => ({
|
|
@@ -449,6 +618,34 @@ function parseIntegrations(values) {
|
|
|
449
618
|
if (unknown.length > 0) return `Unknown integration ${unknown.join(", ")}. Available: ${INTEGRATIONS.join(", ")}`;
|
|
450
619
|
return values.filter(isIntegration);
|
|
451
620
|
}
|
|
621
|
+
/** Where `init` writes: `--cwd`, `--package`, or the workspace package the person picks. */
|
|
622
|
+
async function initTarget(cwd, args, prompts) {
|
|
623
|
+
if (args.package !== void 0) {
|
|
624
|
+
const dir = posix.normalize(args.package.replaceAll("\\", "/"));
|
|
625
|
+
if (!existsSync(join(cwd, dir, "package.json"))) return {
|
|
626
|
+
code: 2,
|
|
627
|
+
error: `--package ${args.package} has no package.json. Pass the directory of a workspace package, relative to --cwd.`
|
|
628
|
+
};
|
|
629
|
+
return { dir: dir.replace(/\/$/, "") || "." };
|
|
630
|
+
}
|
|
631
|
+
const workspace = await detectWorkspace(cwd);
|
|
632
|
+
if (!workspace || workspace.packages.length === 0) return { dir: "." };
|
|
633
|
+
const suggested = suggestedPackage(workspace) ?? ".";
|
|
634
|
+
if (!prompts) return {
|
|
635
|
+
code: 2,
|
|
636
|
+
error: `${workspace.file} makes this a workspace root. Pass --package with the package that owns the runtime (${workspace.packages.map((entry) => entry.dir).join(", ")}), or --package . to write here.`
|
|
637
|
+
};
|
|
638
|
+
const dir = await prompts.select("Package that owns the runtime", [...workspace.packages.map((entry) => ({
|
|
639
|
+
value: entry.dir,
|
|
640
|
+
label: entry.dir,
|
|
641
|
+
...entry.project.name ? { hint: entry.project.name } : {}
|
|
642
|
+
})), {
|
|
643
|
+
value: ".",
|
|
644
|
+
label: ".",
|
|
645
|
+
hint: "the workspace root"
|
|
646
|
+
}], suggested);
|
|
647
|
+
return dir === void 0 ? CANCELLED : { dir };
|
|
648
|
+
}
|
|
452
649
|
async function runInit(config, args, prompts) {
|
|
453
650
|
const casing = args.casing ?? (prompts ? await prompts.select("Row keys", [{
|
|
454
651
|
value: "camel",
|
|
@@ -464,7 +661,19 @@ async function runInit(config, args, prompts) {
|
|
|
464
661
|
code: 2,
|
|
465
662
|
error: "--casing must be \"camel\" or \"snake\""
|
|
466
663
|
};
|
|
467
|
-
const
|
|
664
|
+
const target = await initTarget(config.root, args, prompts);
|
|
665
|
+
if ("code" in target) return target;
|
|
666
|
+
const root = resolve(config.root, target.dir);
|
|
667
|
+
const inPackage = target.dir !== ".";
|
|
668
|
+
const workspaceProject = await detectProject(config.root);
|
|
669
|
+
const project = inPackage ? {
|
|
670
|
+
...await detectProject(root),
|
|
671
|
+
packageManager: workspaceProject.packageManager
|
|
672
|
+
} : workspaceProject;
|
|
673
|
+
const installTarget = inPackage ? {
|
|
674
|
+
dir: target.dir,
|
|
675
|
+
name: project.name
|
|
676
|
+
} : void 0;
|
|
468
677
|
const requested = parseIntegrations(list(args.with));
|
|
469
678
|
if (typeof requested === "string") return {
|
|
470
679
|
code: 2,
|
|
@@ -474,23 +683,29 @@ async function runInit(config, args, prompts) {
|
|
|
474
683
|
const chosen = args.with === void 0 && prompts ? await chooseIntegrations(prompts, detected) : detected;
|
|
475
684
|
if (chosen === void 0) return CANCELLED;
|
|
476
685
|
const integrations = resolveIntegrations(chosen);
|
|
477
|
-
const
|
|
686
|
+
const hasConfig = findConfig(root) !== void 0;
|
|
687
|
+
let generated = posix.normalize(posix.join(project.srcDir, "lib/supabase/generated.ts"));
|
|
688
|
+
if (hasConfig) generated = inPackage ? (await loadConfig(root)).output : config.output;
|
|
689
|
+
const templateContext = context(project, generated);
|
|
478
690
|
const files = [...baseFiles(templateContext, casing, needsLib(integrations)), ...integrationFiles(integrations, templateContext)];
|
|
479
|
-
const force = await overwrite(
|
|
691
|
+
const force = await overwrite(root, files, args, prompts, config.root);
|
|
480
692
|
if (force === void 0) return CANCELLED;
|
|
693
|
+
const where = inPackage ? ` in ${target.dir}` : "";
|
|
481
694
|
const lines = [
|
|
482
|
-
project.frameworks.length > 0 ? `Found ${project.frameworks.join(", ")}.` :
|
|
695
|
+
project.frameworks.length > 0 ? `Found ${project.frameworks.join(", ")}${where}.` : `No framework found${where}.`,
|
|
483
696
|
"",
|
|
484
|
-
...await writeFiles(
|
|
697
|
+
...await writeFiles(root, files, args, force, config.root),
|
|
698
|
+
...await enablePgDelta(root, args, config.root)
|
|
485
699
|
];
|
|
486
700
|
const packages = packagesFor(project, integrations);
|
|
701
|
+
const cwdFlag = inPackage ? ` --cwd ${target.dir}` : "";
|
|
487
702
|
const steps = [
|
|
488
|
-
...packages.length > 0 ? [installCommand(project.packageManager, packages)] : [],
|
|
489
|
-
...devPackages(project).map((names) => installCommand(project.packageManager, names, true)),
|
|
490
|
-
...project.hasSupabase ? [] : ["supabase init"],
|
|
703
|
+
...packages.length > 0 ? [installCommand(project.packageManager, packages, false, installTarget)] : [],
|
|
704
|
+
...devPackages(project).map((names) => installCommand(project.packageManager, names, true, installTarget)),
|
|
705
|
+
...project.hasSupabase || workspaceProject.hasSupabase ? [] : ["supabase init"],
|
|
491
706
|
"supabase start",
|
|
492
|
-
|
|
493
|
-
|
|
707
|
+
`better-supabase env${cwdFlag}`,
|
|
708
|
+
`better-supabase gen${cwdFlag}`
|
|
494
709
|
];
|
|
495
710
|
lines.push("", "Next:", ...steps.map((step, index) => ` ${index + 1}. ${step}`));
|
|
496
711
|
for (const name of integrations) for (const hint of TEMPLATES[name].next ?? []) lines.push(` - ${hint}`);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { r as defineCliCommand } from "./command-CK14fP91.js";
|
|
2
|
-
import {
|
|
2
|
+
import { i as writeIfChanged, r as sameText, t as display } from "./io-DI1mTdSA.js";
|
|
3
3
|
import { r as painter } from "./style-C0NFdJRL.js";
|
|
4
4
|
import { t as fileDiff } from "./diff-SjkO5rNr.js";
|
|
5
|
-
import {
|
|
5
|
+
import { T as serializeGenerator, c as loadSnapshot, f as serializeSnapshot, s as sourceArgs, t as SOURCE_ARGS, w as restrictSchemas } from "./gen-BGLb_zou.js";
|
|
6
6
|
import { n as withSpinner } from "./prompts-BNcNfAve.js";
|
|
7
7
|
import { resolve } from "node:path";
|
|
8
8
|
import { readFile } from "node:fs/promises";
|
|
@@ -10,7 +10,7 @@ import { readFile } from "node:fs/promises";
|
|
|
10
10
|
const ARGS = {
|
|
11
11
|
out: {
|
|
12
12
|
type: "string",
|
|
13
|
-
description: "Defaults to supabase/snapshot.json, or supabase/generator-metadata.json",
|
|
13
|
+
description: "Defaults to source.snapshot, supabase/snapshot.json, or supabase/generator-metadata.json",
|
|
14
14
|
valueHint: "file"
|
|
15
15
|
},
|
|
16
16
|
format: {
|
|
@@ -42,12 +42,12 @@ const introspectCommand = defineCliCommand({
|
|
|
42
42
|
live: true,
|
|
43
43
|
...signal ? { signal } : {}
|
|
44
44
|
}));
|
|
45
|
-
const out = args.out ?? (format === "snapshot" ? "supabase/snapshot.json" : "supabase/generator-metadata.json");
|
|
45
|
+
const out = args.out ?? (format === "snapshot" ? config.source.snapshot ?? "supabase/snapshot.json" : "supabase/generator-metadata.json");
|
|
46
46
|
const contents = format === "snapshot" ? serializeSnapshot(snapshot) : `${await serializeGenerator(restrictSchemas(snapshot.generator, config.schemas))}\n`;
|
|
47
47
|
if (args.check === true) {
|
|
48
48
|
const current = await readFile(resolve(config.root, out), "utf8").catch(() => void 0);
|
|
49
49
|
const file = display(config.root, out);
|
|
50
|
-
return current
|
|
50
|
+
return sameText(current, contents) ? {
|
|
51
51
|
code: 0,
|
|
52
52
|
output: `${file} is up to date.`,
|
|
53
53
|
data: {
|
|
@@ -2,10 +2,19 @@ import { dirname, relative, resolve, sep } from "node:path";
|
|
|
2
2
|
import { existsSync } from "node:fs";
|
|
3
3
|
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
4
4
|
//#region src/cli/io.ts
|
|
5
|
-
/**
|
|
5
|
+
/** `text` with `\r\n` line endings turned into `\n`. */
|
|
6
|
+
const withLf = (text) => text.replaceAll("\r\n", "\n");
|
|
7
|
+
/**
|
|
8
|
+
* Whether a file on disk holds `expected`, ignoring line endings: a checkout
|
|
9
|
+
* with `core.autocrlf` turns every `\n` into `\r\n`.
|
|
10
|
+
*/
|
|
11
|
+
function sameText(current, expected) {
|
|
12
|
+
return current !== void 0 && withLf(current) === withLf(expected);
|
|
13
|
+
}
|
|
14
|
+
/** Writes a file when its contents changed, ignoring line endings. Returns whether it wrote. */
|
|
6
15
|
async function writeIfChanged(path, contents) {
|
|
7
16
|
if (existsSync(path)) {
|
|
8
|
-
if (await readFile(path, "utf8")
|
|
17
|
+
if (sameText(await readFile(path, "utf8"), contents)) return false;
|
|
9
18
|
}
|
|
10
19
|
await mkdir(dirname(path), { recursive: true });
|
|
11
20
|
await writeFile(path, contents);
|
|
@@ -21,4 +30,4 @@ function display(root, path) {
|
|
|
21
30
|
return relative(root, resolve(root, path)).split(sep).join("/") || ".";
|
|
22
31
|
}
|
|
23
32
|
//#endregion
|
|
24
|
-
export { importPath as n,
|
|
33
|
+
export { writeIfChanged as i, importPath as n, sameText as r, display as t };
|