void 0.25.0 → 0.26.1
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/AGENTS_TEMPLATE.md +1 -3
- package/README.md +19 -9
- package/dist/{account-cmd-DcR1ywt8.mjs → account-cmd-CfUXh_nU.mjs} +8 -7
- package/dist/{application-analysis-BVsVqc11.mjs → application-analysis-DKy02UY0.mjs} +21 -32
- package/dist/{application-routing-B7QEjqSR.mjs → application-routing-DQyUh_5S.mjs} +1 -1
- package/dist/{auth-7wuZ5ob8.mjs → auth-B5_tZLxT.mjs} +9 -9
- package/dist/{auth-CdgZ9uag.mjs → auth-BgX2qYSY.mjs} +1 -1
- package/dist/{auth-link-Z6E5DYvM.mjs → auth-link-D5RmKnzh.mjs} +5 -5
- package/dist/{auth-migrations-9vif1uj8.mjs → auth-migrations-BwHgeEsD.mjs} +8 -18
- package/dist/{auth-router-BdM4avI8.mjs → auth-router-Bap-pvbn.mjs} +6 -19
- package/dist/{better-auth-shared-BVkjZ3vM.d.mts → better-auth-shared-CPvWD3nG.d.mts} +0 -4
- package/dist/{better-auth-shared-hy6RPh9W.mjs → better-auth-shared-DPpj8zxc.mjs} +94 -16
- package/dist/{build-cmd-CEE7D-hM.mjs → build-cmd-B58c8iS8.mjs} +8 -7
- package/dist/{cache-TcZnBLtH.mjs → cache-Bo52trKF.mjs} +8 -8
- package/dist/{cancel-deploy-CYoZmcmR.mjs → cancel-deploy-BZNz3Q26.mjs} +6 -5
- package/dist/{cf-access-AHKBzmuu.mjs → cf-access-ngGqZpHZ.mjs} +11 -12
- package/dist/{cf-build-output-U8o1Gl6X.mjs → cf-build-output-DjvB_872.mjs} +62 -85
- package/dist/cf-build-output-H9a97vME.mjs +2 -0
- package/dist/cli/cli.mjs +48 -83
- package/dist/cli/cloudflare-operation-process.mjs +71 -77
- package/dist/cli/env-schema-probe.d.mts +1 -1
- package/dist/cli/env-schema-probe.mjs +5 -6
- package/dist/client-By4JjMw_.mjs +2 -0
- package/dist/{client-RsPo8wsP.mjs → client-C2Prx_Bi.mjs} +30 -8
- package/dist/{cloudflare-auth-Qdc7tw8F.mjs → cloudflare-auth-CuxfF6OA.mjs} +9 -17
- package/dist/{cloudflare-cmd-bhwCxAN6.mjs → cloudflare-cmd-lHqNlJGW.mjs} +6 -5
- package/dist/{cloudflare-config-Bktvwtpf.mjs → cloudflare-config-BmhBv3HV.mjs} +1 -1
- package/dist/{cloudflare-connect-CuhRgk3k.mjs → cloudflare-connect-2G3rL2rP.mjs} +4 -4
- package/dist/{cloudflare-operations-BhbK6yTq.mjs → cloudflare-operations-BlYLlowZ.mjs} +1 -1
- package/dist/{cloudflare-operations-CjaV4lZi.mjs → cloudflare-operations-CwI1bChl.mjs} +41 -70
- package/dist/{cloudflare-process-B-wekeR6.mjs → cloudflare-process-2-TfIEzB.mjs} +20 -22
- package/dist/{config-CyQ-wVd7.mjs → config-5r-YpMC-.mjs} +1 -1
- package/dist/{config-C_XRIPx2.mjs → config-B_ggY-IO.mjs} +3 -3
- package/dist/config-BtSFvXZx.mjs +2 -0
- package/dist/config-CLYAosnQ.mjs +78 -0
- package/dist/{config-BMHb8RCj.d.mts → config-CSa15FvD.d.mts} +1 -1
- package/dist/{config-Br_JZD6u.mjs → config-DiowPT80.mjs} +24 -30
- package/dist/config-entry.d.mts +1 -1
- package/dist/{config-write-B1f88wJA.mjs → config-write-AHGesphx.mjs} +8 -7
- package/dist/{connect-DCvUmPXY.mjs → connect-X0MUA1gk.mjs} +12 -11
- package/dist/{create-project-eAPgYq35.mjs → create-project-DxiyW6iX.mjs} +7 -7
- package/dist/{create-project-C734I-Mu.mjs → create-project-iwkbqiBU.mjs} +1 -1
- package/dist/{db-C07GEdKF.mjs → db-XnVMHzoV.mjs} +101 -133
- package/dist/{delete-pKMVsrpJ.mjs → delete-esYlMiSJ.mjs} +8 -8
- package/dist/{deploy-DfsAe-T0.mjs → deploy-BsEvnlJl.mjs} +2377 -2512
- package/dist/deploy-C1d-YTfp.mjs +2 -0
- package/dist/{dev-inbox-D64ZKUod.mjs → dev-inbox-CK-UuPob.mjs} +7 -16
- package/dist/{discover-BcPPiF1o.mjs → discover-CkCYv9T_.mjs} +1 -2
- package/dist/discover-EDUf6JJw.mjs +2 -0
- package/dist/{prompts-ZAuJlyCj.mjs → dist-Bx1z6Eva.mjs} +1 -1
- package/dist/{dist-AoCzRTJE.mjs → dist-Cegxq8gs.mjs} +8 -8
- package/dist/{prompts-6OSVA7DJ.mjs → dist-D3m88sjf.mjs} +10 -53
- package/dist/{domain-D3uA9ize.mjs → domain-CbbBWhWE.mjs} +29 -30
- package/dist/{dotenv-VQxupEUv.mjs → dotenv-BfU6eqFt.mjs} +20 -32
- package/dist/{drizzle-Beb2Am5S.mjs → drizzle-CF84FOVM.mjs} +16 -13
- package/dist/{email-z3o2cwjH.mjs → email-CpuT42g7.mjs} +24 -19
- package/dist/{email--tEtMoj_.mjs → email-d_Aux1vM.mjs} +1 -1
- package/dist/{entry-CF5wvH4w.mjs → entry-CMAkqBmU.mjs} +6 -6
- package/dist/{env-_v349JBd.mjs → env-BxocywBB.mjs} +25 -6
- package/dist/{env-D5liuQYR.mjs → env-DMA3cXZt.mjs} +1 -1
- package/dist/{env-public-BX_r8HR6.d.mts → env-public-DR7ZM6d-.d.mts} +1 -1
- package/dist/{env-raw-Cx8ElDdj.mjs → env-raw-jZpP5n47.mjs} +1 -2
- package/dist/{env-types-D5kds_OZ.mjs → env-types-CwXgeMgL.mjs} +1 -1
- package/dist/{env-validation-cZBvGWaP.mjs → env-validation-CrVNjsPm.mjs} +1 -1
- package/dist/{env-validation-vBSQ8gw5.mjs → env-validation-Dxdx_5wo.mjs} +17 -21
- package/dist/{env-3Q8-_2IH.mjs → env-w9jOyGZn.mjs} +10 -9
- package/dist/{fetch-_SeGZao9.d.mts → fetch-BPCYVi3H.d.mts} +20 -1
- package/dist/{fetch-BIZJh7vR.mjs → fetch-sAcwjzLO.mjs} +1 -1
- package/dist/{fetch-stream-IvCYKyQL.mjs → fetch-stream-PGgz4uGz.mjs} +26 -24
- package/dist/{fetch-stream-Bjf0hoZb.d.mts → fetch-stream-obvZ7fvO.d.mts} +1 -16
- package/dist/{gen-NjwoG9FK.mjs → gen-DtkQhvQg.mjs} +40 -57
- package/dist/gen-dA9hW7AV.mjs +2 -0
- package/dist/{github-cmd-DquUq-b1.mjs → github-cmd-D_FsOFxq.mjs} +65 -164
- package/dist/{handler-DghKr6dU.mjs → handler-BHAn2fZJ.mjs} +1 -0
- package/dist/{handler-CZ4nAylQ.d.mts → handler-CNAwjRcW.d.mts} +5 -12
- package/dist/{head-Do8P4puT.d.mts → head-C8K_iGe6.d.mts} +1 -1
- package/dist/{head-D_QRR5Yd.mjs → head-D2VF4ApL.mjs} +29 -51
- package/dist/{headers-2rKda9Y6.mjs → headers-DlfR78Nu.mjs} +3 -3
- package/dist/{help-DRZXC4fj.mjs → help-CVFBTmBx.mjs} +23 -38
- package/dist/help-DzKUrQvk.mjs +2 -0
- package/dist/{inbound-fRkqcXaC.mjs → inbound-PfQDLXc5.mjs} +23 -24
- package/dist/index.d.mts +19 -2
- package/dist/index.mjs +632 -532
- package/dist/{info-BmA3_IFZ.mjs → info-PYWwkWyt.mjs} +4 -4
- package/dist/{init-DT7yuuyl.mjs → init-Bw-fRKGp.mjs} +161 -197
- package/dist/{limits-Bq5LG8Id.d.mts → limits-CFsDKQvU.d.mts} +1 -10
- package/dist/{limits-Cjuk2VPm.mjs → limits-D0vD1M9A.mjs} +1 -22
- package/dist/{link-CXOlqh2F.mjs → link-DlPG8iX3.mjs} +10 -10
- package/dist/{list-eEWVJEPn.mjs → list-2GN7_ueV.mjs} +11 -9
- package/dist/{live-CB1y5IuC.mjs → live-CgQuTpqD.mjs} +15 -16
- package/dist/{live-Chw1eIMv.d.mts → live-Du8jXwOW.d.mts} +4 -2
- package/dist/{local-d1-Df4XpwhW.mjs → local-d1-ga5O_idV.mjs} +2 -2
- package/dist/{login-pWQHYVu2.mjs → login-D-Q4xw3Q.mjs} +7 -7
- package/dist/login-Dc-wuTDq.mjs +2 -0
- package/dist/{logs-DnxVX7TR.mjs → logs-rd8J-OFh.mjs} +28 -11
- package/dist/migrate-BHp07yJE.mjs +2 -0
- package/dist/{migrate-CV1on-yJ.mjs → migrate-NLsjBbuM.mjs} +34 -20
- package/dist/{mime-D5Nmdzf7.mjs → mime-DxCznlJq.mjs} +45 -95
- package/dist/{node-BkyRWRx8.mjs → node-DJicPvPj.mjs} +5 -5
- package/dist/{operator-args-CAVcmwUt.mjs → operator-args-BNsW5gfp.mjs} +10 -1
- package/dist/{operator-auth-CkmTE3rt.mjs → operator-auth-AzVLbrr3.mjs} +4 -8
- package/dist/{operator-client-LmwjxT6q.mjs → operator-client-BQtzyG-g.mjs} +3 -3
- package/dist/{operator-cmd-d-IEKgNk.mjs → operator-cmd-B6f6Cg9Z.mjs} +45 -14
- package/dist/operator-cmd-Cwn50lOV.mjs +2 -0
- package/dist/{output-BBsUwdyT.mjs → output-C50ag2r3.mjs} +44 -2
- package/dist/pages/client.d.mts +19 -51
- package/dist/pages/client.mjs +204 -225
- package/dist/pages/head-client.d.mts +1 -1
- package/dist/pages/head.d.mts +1 -1
- package/dist/pages/head.mjs +1 -1
- package/dist/pages/index.d.mts +2 -2
- package/dist/pages/index.mjs +6 -12
- package/dist/pages/islands-plugin.d.mts +1 -1
- package/dist/pages/islands-plugin.mjs +21 -25
- package/dist/pages/protocol.d.mts +2 -2
- package/dist/pages/protocol.mjs +2 -2
- package/dist/{plan-NPpwZ_kc.mjs → plan-BhLO2p4w.mjs} +4 -3
- package/dist/plan-CH2G51je.mjs +2 -0
- package/dist/{platform-args-Bzf8JPc2.mjs → platform-args-BoZkWQnJ.mjs} +4 -2
- package/dist/platform-args-DYgITk0D.mjs +2 -0
- package/dist/{platform-auth-config-0V0lA3pF.mjs → platform-auth-config-n603OANg.mjs} +45 -40
- package/dist/{platform-auth-protection-DFeJ-JkK.mjs → platform-auth-protection-zxDr0hWW.mjs} +9 -8
- package/dist/{platform-auth-recovery-ICy4muq6.mjs → platform-auth-recovery-tw9lgtgE.mjs} +8 -7
- package/dist/{platform-cmd-D7vSWMvV.mjs → platform-cmd-B8-bCb7t.mjs} +48 -23
- package/dist/{platform-cmd-BPySFOew.mjs → platform-cmd-C00YM14r.mjs} +1 -1
- package/dist/{platform-discovery-DDDUvnqp.mjs → platform-discovery-BC0HCKYt.mjs} +18 -4
- package/dist/{platform-domain-CUdY064e.mjs → platform-domain-p0kobLV8.mjs} +6 -5
- package/dist/{platform-lifecycle-Dm09JNkn.mjs → platform-lifecycle-D_QEY32D.mjs} +906 -389
- package/dist/{platform-lifecycle-BaUdTRPU.mjs → platform-lifecycle-vFqtNPPa.mjs} +1 -1
- package/dist/{platform-management-BSEc_ZeG.mjs → platform-management-BdYblvvE.mjs} +175 -32
- package/dist/{platform-management-Bp6aoH2C.mjs → platform-management-oi-SvI3f.mjs} +1 -1
- package/dist/{platform-plans-config-B0pOVQyW.mjs → platform-plans-config-CjiFv5J4.mjs} +5 -4
- package/dist/{platform-recovery-WOZ95Uze.mjs → platform-recovery-PvNS9Nl2.mjs} +3 -3
- package/dist/{platform-registry-KfNEF84O.mjs → platform-registry-P387v42A.mjs} +17 -10
- package/dist/platform-setup-DVe42Ws7.mjs +299 -0
- package/dist/{plugin-inference-CXWnn79A.mjs → plugin-inference-BlQbOL0P.mjs} +43 -42
- package/dist/prepare-DRUV-g3X.mjs +2 -0
- package/dist/{prepare-DnaKBi--.mjs → prepare-Do96654b.mjs} +8 -8
- package/dist/{prepare-39EvOhI6.mjs → prepare-Dq9hTIbo.mjs} +4 -3
- package/dist/{prerender-render-D9qbLs2f.mjs → prerender-render-Ct20jftc.mjs} +17 -3
- package/dist/prerender-render.mjs +1 -1
- package/dist/{project-IOjBU8R6.mjs → project-BiaPQ7ur.mjs} +1 -1
- package/dist/{project-BkbfDs0V.mjs → project-DQstYTxO.mjs} +1 -1
- package/dist/{project-cmd-Bs5A392E.mjs → project-cmd-ti8_yTcA.mjs} +19 -19
- package/dist/{project-team-ohAWWaew.mjs → project-team-CDPE1Tsg.mjs} +15 -18
- package/dist/{project-token-CP01Jna6.mjs → project-token-CkZ1cN0Z.mjs} +14 -17
- package/dist/{project-tsconfig-B8GeM0RM.mjs → project-tsconfig-CVJhNMxs.mjs} +2 -1
- package/dist/{project-zero-trust-BzkVgx35.mjs → project-zero-trust-DdjLR61k.mjs} +12 -9
- package/dist/{protocol-CjF_iI9X.d.mts → protocol-BPZaNqBo.d.mts} +4 -2
- package/dist/{protocol-U7bfjHmA.mjs → protocol-CfaUwNs8.mjs} +46 -49
- package/dist/{providers-CJlNS3kT.mjs → providers-BXuhmuub.mjs} +1 -12
- package/dist/{provision-Btj1jppf.mjs → provision-BfaLiWbj.mjs} +51 -42
- package/dist/{provision-BEv0k-qz.mjs → provision-Wu9ZBk9L.mjs} +2 -3
- package/dist/{requests-B3PBuGlX.mjs → requests-DFAqyYy8.mjs} +5 -5
- package/dist/resolve-project-BIeYs9Cw.mjs +2 -0
- package/dist/{resolve-project-BG5ORGID.mjs → resolve-project-CP8rZs_p.mjs} +6 -1
- package/dist/{rollback-DDub9GsO.mjs → rollback-BKYXBduI.mjs} +30 -37
- package/dist/{route-types-Clm4WD0B.mjs → route-types-CbtsIeFn.mjs} +1 -1
- package/dist/route-url-BgPja1GS.d.mts +5 -0
- package/dist/route-url-BjGv_KKY.mjs +28 -0
- package/dist/runner-9wjsSZx-.mjs +2 -0
- package/dist/{runner-Ol0TNjk6.mjs → runner-DMBKSrRk.mjs} +2 -2
- package/dist/{runner-mysql-DmWchSWJ.mjs → runner-mysql-CEzKtmFb.mjs} +8 -8
- package/dist/{runner-mysql-CEG5JozK.mjs → runner-mysql-CkFqZ6CE.mjs} +1 -1
- package/dist/{runner-pg-Bh4AgZdj.mjs → runner-pg-BGYRFdRp.mjs} +1 -1
- package/dist/runtime/ai.d.mts +11 -12
- package/dist/runtime/ai.mjs +47 -113
- package/dist/runtime/better-auth-mysql.d.mts +1 -1
- package/dist/runtime/better-auth-mysql.mjs +4 -9
- package/dist/runtime/better-auth-pg.d.mts +1 -1
- package/dist/runtime/better-auth-pg.mjs +5 -10
- package/dist/runtime/better-auth.d.mts +1 -1
- package/dist/runtime/better-auth.mjs +3 -3
- package/dist/runtime/client-react.d.mts +2 -3
- package/dist/runtime/client-react.mjs +2 -2
- package/dist/runtime/client-solid.d.mts +2 -3
- package/dist/runtime/client-solid.mjs +2 -2
- package/dist/runtime/client-svelte.d.mts +2 -3
- package/dist/runtime/client-svelte.mjs +2 -2
- package/dist/runtime/client-vue.d.mts +2 -3
- package/dist/runtime/client-vue.mjs +2 -2
- package/dist/runtime/client.d.mts +2 -3
- package/dist/runtime/client.mjs +2 -2
- package/dist/runtime/db.mjs +1 -1
- package/dist/runtime/durable.mjs +3 -10
- package/dist/runtime/email/testing.mjs +5 -5
- package/dist/runtime/email.d.mts +2 -1
- package/dist/runtime/email.mjs +11 -27
- package/dist/runtime/env-public.d.mts +1 -1
- package/dist/runtime/env-public.mjs +15 -20
- package/dist/runtime/env.mjs +1 -1
- package/dist/runtime/fetch-stream.d.mts +2 -2
- package/dist/runtime/fetch-stream.mjs +1 -1
- package/dist/runtime/fetch.d.mts +2 -3
- package/dist/runtime/fetch.mjs +1 -1
- package/dist/runtime/handler.d.mts +1 -1
- package/dist/runtime/handler.mjs +2 -2
- package/dist/runtime/isr.mjs +1 -1
- package/dist/runtime/kv.mjs +10 -11
- package/dist/runtime/limits.d.mts +2 -2
- package/dist/runtime/limits.mjs +2 -2
- package/dist/runtime/live-client.d.mts +1 -1
- package/dist/runtime/live-client.mjs +12 -22
- package/dist/runtime/live-server.mjs +27 -35
- package/dist/runtime/live.d.mts +2 -2
- package/dist/runtime/live.mjs +2 -2
- package/dist/runtime/migration-handler.mjs +35 -86
- package/dist/runtime/queues.mjs +1 -1
- package/dist/runtime/remote/binding-handler.d.mts +2 -2
- package/dist/runtime/remote/binding-handler.mjs +8 -9
- package/dist/runtime/remote/index.mjs +27 -77
- package/dist/runtime/route-url.d.mts +2 -4
- package/dist/runtime/route-url.mjs +1 -1
- package/dist/runtime/routing.d.mts +1 -1
- package/dist/runtime/routing.mjs +15 -26
- package/dist/runtime/sandbox.d.mts +1 -1
- package/dist/runtime/sandbox.mjs +14 -24
- package/dist/runtime/sse.mjs +1 -1
- package/dist/runtime/storage.mjs +1 -1
- package/dist/runtime/validator.d.mts +1 -1
- package/dist/runtime/ws-server.d.mts +2 -2
- package/dist/runtime/ws-server.mjs +30 -61
- package/dist/runtime/ws.d.mts +1 -1
- package/dist/runtime/ws.mjs +1 -1
- package/dist/{sandbox-XZAqzFlG.d.mts → sandbox-C5LFoJMf.d.mts} +7 -7
- package/dist/{scan-C7okrLyM.mjs → scan-C3uDzz6J.mjs} +21 -18
- package/dist/{secret-3c72lY1U.mjs → secret-BAt2KMmO.mjs} +15 -15
- package/dist/{skills-BPQUGClu.mjs → skills-BgVMvQdy.mjs} +2 -2
- package/dist/{sse-CQNaDFFV.mjs → sse-CMvCgjNk.mjs} +1 -1
- package/dist/{subcommand-prompt-Dhom39bd.mjs → subcommand-prompt-BSlnD1fI.mjs} +2 -2
- package/dist/sveltekit.d.mts +0 -2
- package/dist/terminal-log-text-D9ACPOuG.mjs +32 -0
- package/dist/validate-BJr9LfXy.mjs +2 -0
- package/dist/{validate-ctOrgiS3.mjs → validate-C9qJArv7.mjs} +9 -28
- package/dist/{defer-YsYDUoii.mjs → validation-error-Dg9Recn1.mjs} +11 -11
- package/dist/{wrangler-DhUerFkW.mjs → wrangler-D9KTuqnv.mjs} +89 -194
- package/dist/{ws-CL1w7GXU.d.mts → ws-CChrrAU-.d.mts} +1 -1
- package/dist/{yarn-pnp-BV4AzNul.mjs → yarn-pnp-CUX_iTPA.mjs} +19 -27
- package/{skills/void/docs → docs}/guide/ai.md +69 -64
- package/{skills/void/docs → docs}/guide/app-types.md +1 -1
- package/{skills/void/docs → docs}/guide/auth.md +37 -1
- package/{skills/void/docs → docs}/guide/database/postgresql.md +2 -2
- package/{skills/void/docs → docs}/guide/database.md +23 -8
- package/{skills/void/docs → docs}/guide/edge/revalidation.md +1 -1
- package/{skills/void/docs → docs}/guide/edge/rewrites.md +2 -4
- package/{skills/void/docs → docs}/guide/email/receiving.md +2 -2
- package/{skills/void/docs → docs}/guide/email/sending.md +0 -2
- package/{skills/void/docs → docs}/guide/env-vars.md +4 -0
- package/{skills/void/docs → docs}/guide/jobs.md +2 -2
- package/{skills/void/docs → docs}/guide/live.md +12 -5
- package/{skills/void/docs → docs}/guide/pages-routing/actions-and-forms.md +21 -9
- package/{skills/void/docs → docs}/guide/pages-routing/loaders.md +7 -3
- package/{skills/void/docs → docs}/guide/pages-routing/markdown.md +15 -23
- package/{skills/void/docs → docs}/guide/pages-routing/overview.md +6 -4
- package/{skills/void/docs → docs}/guide/platform/administration/access.md +2 -10
- package/{skills/void/docs → docs}/guide/platform/administration/operations.md +3 -12
- package/{skills/void/docs → docs}/guide/platform/administration/projects.md +1 -1
- package/{skills/void/docs → docs}/guide/platform/development/local.md +4 -2
- package/{skills/void/docs → docs}/guide/platform/development/runtime.md +1 -1
- package/{skills/void/docs → docs}/guide/platform/development/schema-ci.md +1 -1
- package/{skills/void/docs → docs}/guide/platform/installation/credentials.md +2 -2
- package/{skills/void/docs → docs}/guide/platform/installation/domains.md +3 -1
- package/{skills/void/docs → docs}/guide/platform/installation/first-deployment.md +8 -2
- package/{skills/void/docs → docs}/guide/platform/installation/maintenance.md +7 -1
- package/{skills/void/docs → docs}/guide/platform/installation/setup.md +1 -1
- package/docs/guide/platform/installation/uninstall.md +102 -0
- package/{skills/void/docs → docs}/guide/project-collaboration.md +6 -2
- package/{skills/void/docs → docs}/guide/queues.md +0 -2
- package/{skills/void/docs → docs}/guide/remote-dev.md +5 -5
- package/{skills/void/docs → docs}/guide/sandboxes.md +41 -22
- package/{skills/void/docs → docs}/guide/sse.md +0 -2
- package/{skills/void/docs → docs}/guide/storage.md +7 -2
- package/{skills/void/docs → docs}/guide/websockets.md +4 -0
- package/docs/integrations/agents.md +37 -0
- package/{skills/void/docs → docs}/integrations/frameworks/astro.md +3 -3
- package/{skills/void/docs → docs}/integrations/frameworks/nuxt.md +6 -2
- package/{skills/void/docs → docs}/integrations/hono.md +15 -7
- package/{skills/void/docs → docs}/integrations/nodejs-bun-deno.md +1 -0
- package/{skills/void/docs → docs}/reference/api/auth.md +1 -1
- package/{skills/void/docs → docs}/reference/api/handlers.md +4 -2
- package/{skills/void/docs → docs}/reference/api/pages.md +4 -0
- package/{skills/void/docs → docs}/reference/api/resources.md +11 -14
- package/{skills/void/docs → docs}/reference/api.md +35 -34
- package/{skills/void/docs → docs}/reference/cli/auth.md +3 -6
- package/{skills/void/docs → docs}/reference/cli/database.md +3 -4
- package/{skills/void/docs → docs}/reference/cli/generate.md +1 -1
- package/{skills/void/docs → docs}/reference/cli/github.md +3 -12
- package/{skills/void/docs → docs}/reference/cli/platform-config.md +3 -3
- package/{skills/void/docs → docs}/reference/cli/platform-email.md +2 -3
- package/{skills/void/docs → docs}/reference/cli/platform-installation.md +15 -13
- package/{skills/void/docs → docs}/reference/cli/platform-operations.md +3 -0
- package/{skills/void/docs → docs}/reference/cli/platform-users.md +2 -2
- package/{skills/void/docs → docs}/reference/cli/platform.md +4 -2
- package/{skills/void/docs → docs}/reference/cli/project.md +5 -4
- package/{skills/void/docs → docs}/reference/cli/secrets.md +3 -3
- package/{skills/void/docs → docs}/reference/cli/setup.md +9 -11
- package/{skills/void/docs → docs}/reference/cli.md +2 -2
- package/{skills/void/docs → docs}/reference/config.md +13 -13
- package/{skills/void/docs → docs}/reference/resource-inference.md +2 -16
- package/package.json +34 -30
- package/schema.json +1 -1
- package/skills/migrate-vite-cloudflare-to-void/SKILL.md +4 -1
- package/skills/void/SKILL.md +11 -5
- package/dist/cf-build-output-ChY6-XWP.mjs +0 -2
- package/dist/client-B4Me-9HE.mjs +0 -2
- package/dist/config-0acf1oys.mjs +0 -2
- package/dist/config-D8MOgiQV.mjs +0 -32
- package/dist/deploy-BDu1vhSH.mjs +0 -2
- package/dist/discover-AMCBXivQ.mjs +0 -2
- package/dist/fetch-error-Sp1R4mZv.d.mts +0 -20
- package/dist/gen-ById9r2j.mjs +0 -2
- package/dist/help-DPGBwomV.mjs +0 -2
- package/dist/login-C98-sw79.mjs +0 -2
- package/dist/migrate-CEu2X5DB.mjs +0 -2
- package/dist/plan-D1Q5rf-r.mjs +0 -2
- package/dist/platform-args-Cq6EjQro.mjs +0 -2
- package/dist/prepare-CnjcTV2s.mjs +0 -2
- package/dist/resolve-project-DtbidV4y.mjs +0 -2
- package/dist/route-url-CG7U-cRN.mjs +0 -15
- package/dist/runner-CXA9Fh8h.mjs +0 -2
- package/dist/validate-Dq_L3s0S.mjs +0 -2
- package/skills/void/docs/guide/platform/installation/uninstall.md +0 -69
- package/skills/void/docs/integrations/agents.md +0 -26
- package/dist/{runner-pg-D4OPlil-.mjs → runner-pg-DV8p_zjA.mjs} +4 -4
- package/{skills/void/docs → docs}/guide/database/d1.md +2 -2
- package/{skills/void/docs → docs}/guide/database/mysql.md +0 -0
- package/{skills/void/docs → docs}/guide/deployment.md +0 -0
- package/{skills/void/docs → docs}/guide/durable-state.md +0 -0
- package/{skills/void/docs → docs}/guide/edge/headers.md +0 -0
- package/{skills/void/docs → docs}/guide/edge/prerendering.md +0 -0
- package/{skills/void/docs → docs}/guide/edge/redirects.md +0 -0
- package/{skills/void/docs → docs}/guide/edge/static-assets.md +0 -0
- package/{skills/void/docs → docs}/guide/email/domains.md +0 -0
- package/{skills/void/docs → docs}/guide/email.md +0 -0
- package/{skills/void/docs → docs}/guide/index.md +0 -0
- package/{skills/void/docs → docs}/guide/kv.md +0 -0
- package/{skills/void/docs → docs}/guide/pages-routing/head.md +0 -0
- package/{skills/void/docs → docs}/guide/pages-routing/islands.md +2 -2
- package/{skills/void/docs → docs}/guide/pages-routing/layouts.md +0 -0
- package/{skills/void/docs → docs}/guide/pages-routing/view-transitions.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/administration/email.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/administration/plans.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/administration/zero-trust.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/installation/ci.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/installation/prerequisites.md +0 -0
- package/{skills/void/docs → docs}/guide/platform-administration.md +0 -0
- package/{skills/void/docs → docs}/guide/platform-development.md +0 -0
- package/{skills/void/docs → docs}/guide/quickstart.md +0 -0
- package/{skills/void/docs → docs}/guide/self-hosted-platform.md +0 -0
- package/{skills/void/docs → docs}/guide/server-routing.md +3 -3
- package/{skills/void/docs → docs}/guide/ssg.md +0 -0
- package/{skills/void/docs → docs}/guide/ssr.md +0 -0
- package/{skills/void/docs → docs}/guide/type-safety.md +0 -0
- package/{skills/void/docs → docs}/guide/typed-fetch.md +0 -0
- package/{skills/void/docs → docs}/index.md +0 -0
- package/{skills/void/docs → docs}/integrations/cloudflare.md +0 -0
- package/{skills/void/docs → docs}/integrations/frameworks/analog.md +3 -3
- package/{skills/void/docs → docs}/integrations/frameworks/overview.md +0 -0
- package/{skills/void/docs → docs}/integrations/frameworks/react-router.md +3 -3
- package/{skills/void/docs → docs}/integrations/frameworks/sveltekit.md +1 -1
- package/{skills/void/docs → docs}/integrations/frameworks/tanstack-start.md +2 -2
- package/{skills/void/docs → docs}/reference/api/client.md +0 -0
- package/{skills/void/docs → docs}/reference/api/database.md +2 -2
- /package/{skills/void/docs → docs}/reference/api/durable.md +0 -0
- /package/{skills/void/docs → docs}/reference/api/env.md +0 -0
- /package/{skills/void/docs → docs}/reference/api/plugin.md +0 -0
- /package/{skills/void/docs → docs}/reference/api/rewrites.md +0 -0
- /package/{skills/void/docs → docs}/reference/api/types.md +0 -0
- /package/{skills/void/docs → docs}/reference/cli/deploy.md +0 -0
- /package/{skills/void/docs → docs}/reference/cli/domains.md +0 -0
- /package/{skills/void/docs → docs}/reference/cli/email.md +0 -0
- /package/{skills/void/docs → docs}/reference/cli/platform-zero-trust.md +0 -0
- /package/{skills/void/docs → docs}/reference/structure.md +0 -0
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
import { u as openBrowser } from "./auth-B5_tZLxT.mjs";
|
|
2
|
+
import { L as log, tt as isCancel } from "./dist-D3m88sjf.mjs";
|
|
3
|
+
import { l as import_picocolors } from "./output-C50ag2r3.mjs";
|
|
4
|
+
import { execFile } from "node:child_process";
|
|
5
|
+
//#region src/cli/platform-setup.ts
|
|
6
|
+
/** Return a prompt answer, or stop the platform command when the prompt was cancelled. */
|
|
7
|
+
function platformPromptAnswer(value) {
|
|
8
|
+
if (isCancel(value) || typeof value === "symbol") throw new Error("platform: Cancelled.");
|
|
9
|
+
return value;
|
|
10
|
+
}
|
|
11
|
+
function platformSetupLink(page, hyperlinks = supportsSetupLinks()) {
|
|
12
|
+
return hyperlinks ? "\x1B]8;;" + page.url + "\x1B\\" + import_picocolors.default.underline(page.title) + "\x1B]8;;\x1B\\" : page.title + ": " + import_picocolors.default.underline(page.url);
|
|
13
|
+
}
|
|
14
|
+
function platformSetupFieldHelp(key) {
|
|
15
|
+
const docs = (page, section, title) => platformSetupLink({
|
|
16
|
+
title,
|
|
17
|
+
url: `https://void.cloud/guide/platform/installation/${page}#${section}`
|
|
18
|
+
});
|
|
19
|
+
switch (key) {
|
|
20
|
+
case "databaseUrl": return {
|
|
21
|
+
placeholder: "postgresql://user:pw@…/database",
|
|
22
|
+
description: "Provide a PostgreSQL database URL for platform users, projects, and deployments. Use an empty hosted database, e.g. " + platformSetupLink({
|
|
23
|
+
title: "Neon",
|
|
24
|
+
url: "https://neon.com/"
|
|
25
|
+
}) + ". " + docs("prerequisites", "platform-database", "Database setup")
|
|
26
|
+
};
|
|
27
|
+
case "jwtSecret": return { description: `Create a JWT signing key for platform login tokens. Run ${import_picocolors.default.blue("openssl rand -base64 32")}. Save the key in your password manager. ` + docs("credentials", "signing-and-encryption-keys", "Key setup") };
|
|
28
|
+
case "projectSecretKey": return { description: `Generate a project encryption key for app secrets. Run ${import_picocolors.default.blue("openssl rand -base64 32")} separately. Save this key for recovery. ` + docs("credentials", "signing-and-encryption-keys", "Key setup") };
|
|
29
|
+
default: return;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function supportsSetupLinks() {
|
|
33
|
+
return !!process.stdout.isTTY && ([
|
|
34
|
+
"ghostty",
|
|
35
|
+
"iTerm.app",
|
|
36
|
+
"WezTerm",
|
|
37
|
+
"vscode",
|
|
38
|
+
"WarpTerminal"
|
|
39
|
+
].includes(process.env.TERM_PROGRAM ?? "") || !!process.env.WT_SESSION || !!process.env.VTE_VERSION || !!process.env.KONSOLE_VERSION || process.env.TERM === "xterm-kitty");
|
|
40
|
+
}
|
|
41
|
+
/** Dashboard keys use permission-catalog labels, which can differ from product names. */
|
|
42
|
+
function platformAccountTokenPermissions(includeAiGateway) {
|
|
43
|
+
return [
|
|
44
|
+
{
|
|
45
|
+
key: "account_settings",
|
|
46
|
+
type: "read"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
key: "workers_scripts",
|
|
50
|
+
type: "edit"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
key: "workers_kv_storage",
|
|
54
|
+
type: "edit"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
key: "workers_r2",
|
|
58
|
+
type: "edit"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
key: "d1",
|
|
62
|
+
type: "edit"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
key: "queues",
|
|
66
|
+
type: "edit"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
key: "account_analytics",
|
|
70
|
+
type: "read"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
key: "workers_tail",
|
|
74
|
+
type: "read"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
key: "query_cache",
|
|
78
|
+
type: "edit"
|
|
79
|
+
},
|
|
80
|
+
...includeAiGateway ? [{
|
|
81
|
+
key: "aig",
|
|
82
|
+
type: "edit"
|
|
83
|
+
}] : []
|
|
84
|
+
];
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Account token links cannot preselect a zone: Cloudflare documents only
|
|
88
|
+
* `permissionGroupKeys` and `name`, and the form puts zone permissions in an
|
|
89
|
+
* "All Domains" policy. Tell the user which dashboard choice to change.
|
|
90
|
+
*/
|
|
91
|
+
function specifiedDomainsInstruction(zones) {
|
|
92
|
+
return `Change the zone policy from All Domains to Specified Domains → ${zones.join(" and ")}.`;
|
|
93
|
+
}
|
|
94
|
+
function plansZoneCreation(plan) {
|
|
95
|
+
return plan.actions.some((action) => action.kind === "zone" && action.action === "create");
|
|
96
|
+
}
|
|
97
|
+
function platformManagementSetupPage(plan, options = {}) {
|
|
98
|
+
const createsZone = plansZoneCreation(plan);
|
|
99
|
+
const zoneName = plan.deployment.application.zoneName;
|
|
100
|
+
const apiHostname = plan.deployment.controlPlane.apiHostname;
|
|
101
|
+
const access = options.access ?? (plan.deployment.authentication.accessProtection || plan.deployment.authentication.providers.includes("cloudflare-access") ? {
|
|
102
|
+
protection: !!plan.deployment.authentication.accessProtection,
|
|
103
|
+
readOnly: false
|
|
104
|
+
} : void 0);
|
|
105
|
+
const zones = [...zoneName ? [zoneName] : [], ...apiHostname && apiHostname !== zoneName && !apiHostname.endsWith(`.${zoneName}`) ? [`the zone for ${apiHostname}`] : []];
|
|
106
|
+
const accessLevel = access && access.readOnly ? "read" : "edit";
|
|
107
|
+
const appAccess = !!plan.deployment.appAccess;
|
|
108
|
+
const appAccessLevel = appAccess ? "edit" : accessLevel;
|
|
109
|
+
const permissions = [
|
|
110
|
+
...platformAccountTokenPermissions(true),
|
|
111
|
+
...zoneName || apiHostname || createsZone ? [
|
|
112
|
+
{
|
|
113
|
+
key: "zone",
|
|
114
|
+
type: createsZone ? "edit" : "read"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
key: "dns",
|
|
118
|
+
type: "edit"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
key: "workers_routes",
|
|
122
|
+
type: "edit"
|
|
123
|
+
}
|
|
124
|
+
] : [],
|
|
125
|
+
...access || appAccess ? [
|
|
126
|
+
{
|
|
127
|
+
key: "access",
|
|
128
|
+
type: appAccessLevel
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
key: "access_acct",
|
|
132
|
+
type: "read"
|
|
133
|
+
},
|
|
134
|
+
...access && access.protection ? [{
|
|
135
|
+
key: "access_service_token",
|
|
136
|
+
type: accessLevel
|
|
137
|
+
}] : []
|
|
138
|
+
] : [],
|
|
139
|
+
...zoneName && plan.deployment.application.baseDomain !== zoneName ? [{
|
|
140
|
+
key: "ssl_and_certificates",
|
|
141
|
+
type: "read"
|
|
142
|
+
}] : []
|
|
143
|
+
];
|
|
144
|
+
return {
|
|
145
|
+
title: "Cloudflare management API token",
|
|
146
|
+
linkInTitle: true,
|
|
147
|
+
url: "https://dash.cloudflare.com/?" + new URLSearchParams({
|
|
148
|
+
to: "/" + plan.account.id + "/api-tokens",
|
|
149
|
+
name: plan.deployment.displayName + " Management",
|
|
150
|
+
permissionGroupKeys: JSON.stringify(permissions)
|
|
151
|
+
}),
|
|
152
|
+
instructions: [
|
|
153
|
+
"This token lets the Void CLI install your platform. Void will now open a pre-configured token creation site. Please review the permissions and then paste the token here.",
|
|
154
|
+
`Scope it to ${plan.account.name}.`,
|
|
155
|
+
...createsZone ? [`Keep the zone policy on All Domains so Void can create ${zoneName}.`] : zones.length ? [specifiedDomainsInstruction(zones)] : []
|
|
156
|
+
].join("\n")
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
function platformSetupPages(plan) {
|
|
160
|
+
const permissions = [
|
|
161
|
+
...platformAccountTokenPermissions(plan.actions.some((action) => action.kind === "ai-gateway" && action.action === "inspect")),
|
|
162
|
+
...plan.deployment.application.zoneName ? [{
|
|
163
|
+
key: "cache",
|
|
164
|
+
type: "purge"
|
|
165
|
+
}] : [],
|
|
166
|
+
...plan.deployment.capabilities.customDomains ? [{
|
|
167
|
+
key: "ssl_and_certificates",
|
|
168
|
+
type: "edit"
|
|
169
|
+
}] : [],
|
|
170
|
+
...plan.deployment.capabilities.email ? [
|
|
171
|
+
{
|
|
172
|
+
key: "zone",
|
|
173
|
+
type: "read"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
key: "zone_settings",
|
|
177
|
+
type: "edit"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
key: "email_routing_address",
|
|
181
|
+
type: "edit"
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
key: "email_routing_rule",
|
|
185
|
+
type: "edit"
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
key: "email_sending",
|
|
189
|
+
type: "edit"
|
|
190
|
+
}
|
|
191
|
+
] : []
|
|
192
|
+
];
|
|
193
|
+
const zoneName = plan.deployment.application.zoneName;
|
|
194
|
+
return {
|
|
195
|
+
runtime: {
|
|
196
|
+
title: "Cloudflare runtime token",
|
|
197
|
+
linkInTitle: true,
|
|
198
|
+
url: "https://dash.cloudflare.com/?" + new URLSearchParams({
|
|
199
|
+
to: "/" + plan.account.id + "/api-tokens",
|
|
200
|
+
name: plan.deployment.displayName + " Runtime",
|
|
201
|
+
permissionGroupKeys: JSON.stringify(permissions)
|
|
202
|
+
}),
|
|
203
|
+
instructions: ["Create a Cloudflare runtime token that Void can use to manage the platform. Please review the permissions and then paste the token here.", ...zoneName && plansZoneCreation(plan) ? [`Keep the zone policy on All Domains so the token can purge cache on ${zoneName} after Void creates it.`] : zoneName ? [specifiedDomainsInstruction([zoneName, ...plan.deployment.capabilities.email ? ["every zone that will carry mail"] : []])] : []].join("\n")
|
|
204
|
+
},
|
|
205
|
+
github: {
|
|
206
|
+
title: "GitHub OAuth App",
|
|
207
|
+
url: "https://github.com/settings/applications/new",
|
|
208
|
+
instructions: "GitHub Auth will be used by the users of your Void Platform instance. Register a GitHub app and generate a client secret.\nHomepage: " + plan.apiUrl + "\nRedirect URI: " + plan.apiUrl + "/auth/callback"
|
|
209
|
+
},
|
|
210
|
+
r2: {
|
|
211
|
+
title: "R2 upload token",
|
|
212
|
+
url: "https://dash.cloudflare.com/?" + new URLSearchParams({
|
|
213
|
+
to: "/" + plan.account.id + "/r2/api-tokens/create",
|
|
214
|
+
type: "account"
|
|
215
|
+
}),
|
|
216
|
+
instructions: [
|
|
217
|
+
"Select Object Read & Write.",
|
|
218
|
+
"Keep Apply to all buckets in this account selected.",
|
|
219
|
+
"Create the token, then copy the Access Key ID and Secret Access Key into the CLI."
|
|
220
|
+
].join("\n")
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
function formatPlatformSetupPlan(plan, options = {}) {
|
|
225
|
+
const writesDns = plan.actions.some((action) => action.kind === "zone" && action.action === "create" || action.kind === "dns-record" && action.action !== "reuse");
|
|
226
|
+
return [
|
|
227
|
+
"The installation will guide you through setting up the following credentials:",
|
|
228
|
+
"",
|
|
229
|
+
...[
|
|
230
|
+
...options.managementToken ? [options.managementAccess ? `Cloudflare management API token for ${writesDns ? "DNS changes and " : ""}Access setup` : "Cloudflare management API token for DNS changes"] : [],
|
|
231
|
+
"PostgreSQL database URL",
|
|
232
|
+
"Cloudflare runtime token",
|
|
233
|
+
"R2 upload token",
|
|
234
|
+
...plan.deployment.authentication.providers.includes("github") ? ["GitHub OAuth App client ID and secret"] : [],
|
|
235
|
+
...plan.deployment.authentication.providers.filter((provider) => provider !== "github").map((provider) => (provider === "google" ? "Google OAuth" : provider === "oidc" ? "OIDC" : "Cloudflare Access OIDC") + " client ID and secret"),
|
|
236
|
+
...plan.deployment.authentication.accessProtection ? ["Cloudflare Access application and installer credentials"] : [],
|
|
237
|
+
...plan.deployment.appAccess ? ["Cloudflare Access check and app-management token when needed (stored encrypted)"] : [],
|
|
238
|
+
"JWT signing key and project encryption key"
|
|
239
|
+
].map((credential) => `• ${credential}`)
|
|
240
|
+
].join("\n");
|
|
241
|
+
}
|
|
242
|
+
function platformInstallCommandArguments(options) {
|
|
243
|
+
const parts = [
|
|
244
|
+
options.commandName,
|
|
245
|
+
"platform",
|
|
246
|
+
"install"
|
|
247
|
+
];
|
|
248
|
+
const flag = (name, value) => {
|
|
249
|
+
if (value) parts.push(name, value);
|
|
250
|
+
};
|
|
251
|
+
if (options.resumeId) {
|
|
252
|
+
parts.push("--resume");
|
|
253
|
+
flag("--name", options.resumeId);
|
|
254
|
+
} else {
|
|
255
|
+
flag("--name", options.installationSlug);
|
|
256
|
+
flag("--account", options.accountId);
|
|
257
|
+
flag("--display-name", options.displayName);
|
|
258
|
+
if (options.workersDev) parts.push("--workers-dev");
|
|
259
|
+
else {
|
|
260
|
+
flag("--application-domain", options.applicationDomain);
|
|
261
|
+
flag("--zone", options.zoneName);
|
|
262
|
+
if (options.dedicatedZone) parts.push("--dedicated-zone");
|
|
263
|
+
else parts.push("--no-dedicated-zone");
|
|
264
|
+
}
|
|
265
|
+
flag("--control-plane-domain", options.controlPlaneDomain);
|
|
266
|
+
if (!options.controlPlaneDomain) parts.push("--no-control-plane-domain");
|
|
267
|
+
}
|
|
268
|
+
flag("--hyperdrive", options.hyperdrive ?? "");
|
|
269
|
+
flag("--auth-config", options.authConfig ?? "");
|
|
270
|
+
if (!options.resumeId && options.appAccess) flag("--app-access", options.appAccess);
|
|
271
|
+
if (!options.authConfig && !options.resumeId && options.authentication) {
|
|
272
|
+
flag("--login-methods", options.authentication.providers.join(","));
|
|
273
|
+
parts.push(options.authentication.accessProtection ? "--access-protection" : "--no-access-protection");
|
|
274
|
+
}
|
|
275
|
+
flag("--dashboard-url", options.dashboardUrl ?? "");
|
|
276
|
+
flag("--runtime", options.runtime);
|
|
277
|
+
if (options.yes) parts.push("--yes");
|
|
278
|
+
return parts;
|
|
279
|
+
}
|
|
280
|
+
function formatPlatformInstallCommand(options) {
|
|
281
|
+
return platformInstallCommandArguments(options).map((value) => {
|
|
282
|
+
if (/^[A-Za-z0-9_@%+=:,./-]+$/.test(value)) return value;
|
|
283
|
+
return process.platform === "win32" ? `'${value.replaceAll("'", "''")}'` : `'${value.replaceAll("'", "'\\''")}'`;
|
|
284
|
+
}).join(" ");
|
|
285
|
+
}
|
|
286
|
+
function openPlatformSetupPage(page, dependencies = {}) {
|
|
287
|
+
log.info((page.linkInTitle ? platformSetupLink(page) : page.title) + "\n" + page.instructions);
|
|
288
|
+
if (!page.linkInTitle) console.log(platformSetupLink({
|
|
289
|
+
...page,
|
|
290
|
+
title: "Open " + page.title
|
|
291
|
+
}));
|
|
292
|
+
if (dependencies.interactive ?? process.stdin.isTTY === true) try {
|
|
293
|
+
(dependencies.open ?? ((url) => openBrowser(url, execFile)))(page.url);
|
|
294
|
+
} catch {
|
|
295
|
+
log.info("Could not open the browser. Use the link above.");
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
//#endregion
|
|
299
|
+
export { platformManagementSetupPage as a, platformSetupLink as c, platformInstallCommandArguments as i, platformSetupPages as l, formatPlatformSetupPlan as n, platformPromptAnswer as o, openPlatformSetupPage as r, platformSetupFieldHelp as s, formatPlatformInstallCommand as t };
|
|
@@ -4,10 +4,9 @@ import { n as globSync, t as glob } from "./dist-Bn8Kodjp.mjs";
|
|
|
4
4
|
import { a as isObjectExpression, i as isMemberExpression, n as isIdentifier, r as isLiteral, t as isCallExpression } from "./ast-CPGPjb0V.mjs";
|
|
5
5
|
import { a as staticLiteral, n as parseRouteFilename, o as unwrapStaticExpression, r as parseWebSocketFilename, t as isRouteEnabledForEnvironment } from "./parse-filename-CUbj-1MP.mjs";
|
|
6
6
|
import { n as resourceNameWords, t as isResourceName } from "./resource-name-C7LVpcRm.mjs";
|
|
7
|
-
import { r as getSsrServerEntryPath } from "./entry-
|
|
7
|
+
import { r as getSsrServerEntryPath } from "./entry-CMAkqBmU.mjs";
|
|
8
8
|
import { existsSync, readFileSync } from "node:fs";
|
|
9
9
|
import { parseSync } from "vite";
|
|
10
|
-
import { parse } from "es-module-lexer/js";
|
|
11
10
|
//#region src/application-features.ts
|
|
12
11
|
/** Apply explicitly named overrides while preserving unrelated source features. */
|
|
13
12
|
function applyBindingOverrides(inferred, overrides) {
|
|
@@ -331,16 +330,39 @@ function walk(ast, { enter, leave }) {
|
|
|
331
330
|
return new SyncWalker(enter, leave).visit(ast, null);
|
|
332
331
|
}
|
|
333
332
|
//#endregion
|
|
333
|
+
//#region src/shared/module-references.ts
|
|
334
|
+
/** Runtime imports and re-exports, in source order, including empty export lists. */
|
|
335
|
+
function staticModuleReferences(parsed, code) {
|
|
336
|
+
const { staticImports, staticExports } = parsed.module;
|
|
337
|
+
if (!(/\bexport\s*(?:\/|\{\s*(?:\}|\/))/.test(code) || staticImports.some((item) => item.entries.length === 0 && code.slice(item.start, item.moduleRequest.start).trim() !== "import"))) return [...staticImports.filter((item) => item.entries.length === 0 || item.entries.some((entry) => !entry.isType)).map((item) => ({
|
|
338
|
+
source: item.moduleRequest.value,
|
|
339
|
+
start: item.start,
|
|
340
|
+
end: item.end
|
|
341
|
+
})), ...staticExports.flatMap((item) => {
|
|
342
|
+
const entry = item.entries.find((entry) => !entry.isType && entry.moduleRequest);
|
|
343
|
+
return entry?.moduleRequest ? [{
|
|
344
|
+
source: entry.moduleRequest.value,
|
|
345
|
+
start: item.start,
|
|
346
|
+
end: item.end
|
|
347
|
+
}] : [];
|
|
348
|
+
})].sort((a, b) => a.start - b.start);
|
|
349
|
+
return parsed.program.body.flatMap((statement) => {
|
|
350
|
+
if (statement.type !== "ImportDeclaration" && statement.type !== "ExportNamedDeclaration" && statement.type !== "ExportAllDeclaration") return [];
|
|
351
|
+
if (!statement.source || "importKind" in statement && statement.importKind === "type" || "exportKind" in statement && statement.exportKind === "type" || "specifiers" in statement && statement.specifiers.length > 0 && statement.specifiers.every((specifier) => "importKind" in specifier && specifier.importKind === "type" || "exportKind" in specifier && specifier.exportKind === "type")) return [];
|
|
352
|
+
return [{
|
|
353
|
+
source: statement.source.value,
|
|
354
|
+
start: statement.start,
|
|
355
|
+
end: statement.end
|
|
356
|
+
}];
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
//#endregion
|
|
334
360
|
//#region src/inference/walk.ts
|
|
335
361
|
const ENV_BINDING_RE = /\benv\s*\.\s*(DB|KV|STORAGE|QUEUE_\w+|AI|SANDBOX)\b/;
|
|
336
362
|
/**
|
|
337
363
|
* Infer which Cloudflare bindings a source file uses.
|
|
338
364
|
*
|
|
339
|
-
*
|
|
340
|
-
* Tier 1: es-module-lexer to extract import sources (fast, asm.js, no init),
|
|
341
|
-
* with a TSX parser fallback when the lexer cannot parse JSX
|
|
342
|
-
* Tier 2: Regex check for env.DB/KV/STORAGE patterns
|
|
343
|
-
* Tier 3: Full AST walk only when regex matches (to confirm member expressions)
|
|
365
|
+
* Read Vite's module metadata, then walk the AST only for potential env bindings.
|
|
344
366
|
*/
|
|
345
367
|
function inferBindingsFromSource(code, filename) {
|
|
346
368
|
const result = {
|
|
@@ -354,25 +376,14 @@ function inferBindingsFromSource(code, filename) {
|
|
|
354
376
|
needsLive: false,
|
|
355
377
|
needsEmail: false
|
|
356
378
|
};
|
|
357
|
-
|
|
358
|
-
let parsedProgram;
|
|
379
|
+
let parsed;
|
|
359
380
|
try {
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
source: imp.specifier,
|
|
363
|
-
statement: code.slice(imp.importStart, imp.importEnd + 1)
|
|
364
|
-
});
|
|
381
|
+
parsed = parseSync(filename, code);
|
|
382
|
+
if (parsed.errors.length > 0) return result;
|
|
365
383
|
} catch {
|
|
366
|
-
|
|
367
|
-
parsedProgram = parseSync(filename, code).program;
|
|
368
|
-
for (const node of parsedProgram.body) if ((node.type === "ImportDeclaration" || node.type === "ExportNamedDeclaration" || node.type === "ExportAllDeclaration") && typeof node.source?.value === "string") moduleReferences.push({
|
|
369
|
-
source: node.source.value,
|
|
370
|
-
statement: code.slice(node.start, node.end)
|
|
371
|
-
});
|
|
372
|
-
} catch {}
|
|
384
|
+
return result;
|
|
373
385
|
}
|
|
374
|
-
|
|
375
|
-
if (isTypeOnlyModuleStatement(statement)) continue;
|
|
386
|
+
function recordModuleReference(source, statement) {
|
|
376
387
|
switch (source) {
|
|
377
388
|
case "void/db":
|
|
378
389
|
result.needsD1 = true;
|
|
@@ -408,15 +419,15 @@ function inferBindingsFromSource(code, filename) {
|
|
|
408
419
|
case "void/client/solid": if (/\bauth\b/.test(statement)) result.needsAuth = true;
|
|
409
420
|
}
|
|
410
421
|
}
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
return result;
|
|
422
|
+
for (const reference of staticModuleReferences(parsed, code)) recordModuleReference(reference.source, code.slice(reference.start, reference.end));
|
|
423
|
+
for (const reference of parsed.module.dynamicImports) {
|
|
424
|
+
const argument = code.slice(reference.moduleRequest.start, reference.moduleRequest.end);
|
|
425
|
+
const expression = parseSync(filename, `(${argument})`).program.body[0];
|
|
426
|
+
const source = expression?.type === "ExpressionStatement" ? staticLiteral(expression.expression) : void 0;
|
|
427
|
+
if (typeof source === "string") recordModuleReference(source, code.slice(reference.start, reference.end));
|
|
418
428
|
}
|
|
419
|
-
|
|
429
|
+
if (!ENV_BINDING_RE.test(code)) return result;
|
|
430
|
+
walk(parsed.program, { enter(node) {
|
|
420
431
|
const current = node;
|
|
421
432
|
if (!isMemberExpression(current)) return;
|
|
422
433
|
if (current.computed) return;
|
|
@@ -447,16 +458,6 @@ function inferBindingsFromSource(code, filename) {
|
|
|
447
458
|
} });
|
|
448
459
|
return result;
|
|
449
460
|
}
|
|
450
|
-
function isTypeOnlyModuleStatement(statement) {
|
|
451
|
-
if (/^\s*(?:import|export)\s+type\b/.test(statement)) return true;
|
|
452
|
-
const specifierStart = statement.indexOf("{");
|
|
453
|
-
const specifierEnd = statement.lastIndexOf("}");
|
|
454
|
-
if (specifierStart === -1 || specifierEnd === -1 || specifierEnd < specifierStart) return false;
|
|
455
|
-
const beforeSpecifiers = statement.slice(0, specifierStart);
|
|
456
|
-
if (!/^\s*(?:import|export)\s*$/.test(beforeSpecifiers)) return false;
|
|
457
|
-
const specifiers = statement.slice(specifierStart + 1, specifierEnd).split(",").map((specifier) => specifier.trim()).filter(Boolean);
|
|
458
|
-
return specifiers.length > 0 && specifiers.every((specifier) => specifier.startsWith("type "));
|
|
459
|
-
}
|
|
460
461
|
/**
|
|
461
462
|
* Merge multiple InferredBindings into a single result (union).
|
|
462
463
|
*/
|
|
@@ -721,4 +722,4 @@ function inferProjectBindings(root, options, scanDirs) {
|
|
|
721
722
|
return applyBindingOverrides(mergeBindings(allBindings), options?.bindings);
|
|
722
723
|
}
|
|
723
724
|
//#endregion
|
|
724
|
-
export { deriveWebSocketClassNameFromName as a, scanWebSocketRoutes as c,
|
|
725
|
+
export { deriveWebSocketClassNameFromName as a, scanWebSocketRoutes as c, staticModuleReferences as d, walk as f, needsApplicationDatabase as h, inferProjectBindings as i, scanWebSocketRoutesSync as l, applyBindingOverrides as m, FRAMEWORK_SCAN_DIRS as n, inferWebSocketResourceName as o, readResourceDefinition as p, detectFramework as r, isWebSocketPatternFile as s, DEFAULT_SCAN_DIRS as t, inferBindingsFromSource as u };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { a as join } from "./dist-BVqXeR_h.mjs";
|
|
2
2
|
import { n as loadVoidAuthConfig } from "./config-DPByhVck.mjs";
|
|
3
|
-
import { m as readConfig } from "./config-
|
|
4
|
-
import { n as ensureProjectTsconfig, r as writeFileIfChanged } from "./project-tsconfig-
|
|
5
|
-
import { i as generateDbDts, n as generateQueueTypes, t as generateRouteTypes } from "./route-types-
|
|
6
|
-
import { t as discoverSchema } from "./discover-
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { t as analyzeApplication } from "./application-routing-
|
|
10
|
-
import { n as generateVoidAuthDrizzleSchema, t as generateVoidAuthDatabaseModule } from "./drizzle-
|
|
3
|
+
import { m as readConfig } from "./config-DiowPT80.mjs";
|
|
4
|
+
import { n as ensureProjectTsconfig, r as writeFileIfChanged } from "./project-tsconfig-CVJhNMxs.mjs";
|
|
5
|
+
import { i as generateDbDts, n as generateQueueTypes, t as generateRouteTypes } from "./route-types-CbtsIeFn.mjs";
|
|
6
|
+
import { t as discoverSchema } from "./discover-CkCYv9T_.mjs";
|
|
7
|
+
import { o as loadLocalEnv } from "./env-BxocywBB.mjs";
|
|
8
|
+
import { r as generateEnvTypes, t as findEnvFile } from "./env-types-CwXgeMgL.mjs";
|
|
9
|
+
import { t as analyzeApplication } from "./application-routing-DQyUh_5S.mjs";
|
|
10
|
+
import { n as generateVoidAuthDrizzleSchema, t as generateVoidAuthDatabaseModule } from "./drizzle-CF84FOVM.mjs";
|
|
11
11
|
import { existsSync, mkdirSync, rmSync } from "node:fs";
|
|
12
12
|
import { fileURLToPath } from "node:url";
|
|
13
13
|
//#region src/codegen/prepare.ts
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { L as log } from "./dist-D3m88sjf.mjs";
|
|
2
|
+
import { d as printSuccess, u as note } from "./output-C50ag2r3.mjs";
|
|
3
|
+
import { t as prepareProject } from "./prepare-Do96654b.mjs";
|
|
3
4
|
//#region src/cli/prepare.ts
|
|
4
5
|
async function runPrepareCommand(root, _args) {
|
|
5
6
|
console.log();
|
|
@@ -7,7 +8,7 @@ async function runPrepareCommand(root, _args) {
|
|
|
7
8
|
if (result.written.length > 0) note(result.written.join("\n"), "Wrote");
|
|
8
9
|
if (result.removed.length > 0) note(result.removed.join("\n"), "Removed stale files");
|
|
9
10
|
if (result.written.length === 0 && result.removed.length === 0) log.info("No generated files changed.");
|
|
10
|
-
|
|
11
|
+
printSuccess("Project codegen is ready.");
|
|
11
12
|
}
|
|
12
13
|
//#endregion
|
|
13
14
|
export { runPrepareCommand };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as join, n as dirname } from "./dist-BVqXeR_h.mjs";
|
|
1
|
+
import { a as join, i as isAbsolute, l as relative, n as dirname } from "./dist-BVqXeR_h.mjs";
|
|
2
2
|
import { mkdirSync, writeFileSync } from "node:fs";
|
|
3
3
|
//#region src/prerender-render.ts
|
|
4
4
|
function outputFileForPath(path) {
|
|
@@ -7,6 +7,11 @@ function outputFileForPath(path) {
|
|
|
7
7
|
function pageDataFileForPath(path) {
|
|
8
8
|
return path === "/" ? "_void/pages/index.json" : `_void/pages/${path.slice(1)}.json`;
|
|
9
9
|
}
|
|
10
|
+
/** Whether `path` resolves strictly inside `directory`. */
|
|
11
|
+
function isInside(directory, path) {
|
|
12
|
+
const child = relative(directory, path);
|
|
13
|
+
return child !== "" && child !== ".." && !child.startsWith("../") && !isAbsolute(child);
|
|
14
|
+
}
|
|
10
15
|
function normalizedFile(clientDir, path) {
|
|
11
16
|
return join(clientDir, path).normalize("NFC").toLowerCase();
|
|
12
17
|
}
|
|
@@ -66,6 +71,17 @@ async function renderPrerenderPaths(paths, clientDir, fetchPath, fetchPageData,
|
|
|
66
71
|
const path = paths[index];
|
|
67
72
|
const result = results[index];
|
|
68
73
|
const outputFile = outputFileForPath(path);
|
|
74
|
+
const outputPath = join(clientDir, outputFile);
|
|
75
|
+
const pageDataPath = join(clientDir, pageDataFileForPath(path));
|
|
76
|
+
if (!isInside(clientDir, outputPath) || !isInside(join(clientDir, "_void/pages"), pageDataPath)) {
|
|
77
|
+
const error = "prerender path resolves outside the output directory";
|
|
78
|
+
result.failed.push({
|
|
79
|
+
path,
|
|
80
|
+
error
|
|
81
|
+
});
|
|
82
|
+
onResult?.(path, outputFile, error);
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
69
85
|
try {
|
|
70
86
|
const response = await fetchPath(path);
|
|
71
87
|
const html = await response.text();
|
|
@@ -78,14 +94,12 @@ async function renderPrerenderPaths(paths, clientDir, fetchPath, fetchPageData,
|
|
|
78
94
|
onResult?.(path, outputFile, error);
|
|
79
95
|
continue;
|
|
80
96
|
}
|
|
81
|
-
const outputPath = join(clientDir, outputFile);
|
|
82
97
|
mkdirSync(dirname(outputPath), { recursive: true });
|
|
83
98
|
writeFileSync(outputPath, html);
|
|
84
99
|
if (fetchPageData) {
|
|
85
100
|
const pageDataResponse = await fetchPageData(path);
|
|
86
101
|
if (pageDataResponse.headers.get("X-VoidPages")) {
|
|
87
102
|
const pageData = await pageDataResponse.json();
|
|
88
|
-
const pageDataPath = join(clientDir, pageDataFileForPath(path));
|
|
89
103
|
mkdirSync(dirname(pageDataPath), { recursive: true });
|
|
90
104
|
writeFileSync(pageDataPath, JSON.stringify(pageData));
|
|
91
105
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as renderPrerenderPaths } from "./prerender-render-
|
|
1
|
+
import { t as renderPrerenderPaths } from "./prerender-render-Ct20jftc.mjs";
|
|
2
2
|
export { renderPrerenderPaths };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { l as writeProjectConfig, t as attachSelectedPlatform } from "./project-
|
|
1
|
+
import { l as writeProjectConfig, t as attachSelectedPlatform } from "./project-DQstYTxO.mjs";
|
|
2
2
|
export { attachSelectedPlatform, writeProjectConfig };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as join, n as dirname } from "./dist-BVqXeR_h.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { c as normalizePlatformApiUrl, s as listPlatformConnections } from "./platform-registry-P387v42A.mjs";
|
|
3
3
|
import { mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
4
4
|
import { normalizeApplicationDomain } from "@void/platform";
|
|
5
5
|
//#region src/cli/project.ts
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { n as readDeploymentPlatform } from "./project-
|
|
2
|
-
import { c as getToken, s as getSiteDomain } from "./auth-
|
|
3
|
-
import { H as outro, L as log } from "./
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { n as readDeploymentPlatform } from "./project-DQstYTxO.mjs";
|
|
2
|
+
import { c as getToken, s as getSiteDomain } from "./auth-B5_tZLxT.mjs";
|
|
3
|
+
import { H as outro, L as log } from "./dist-D3m88sjf.mjs";
|
|
4
|
+
import { i as dim, l as import_picocolors, m as tablePrefix, s as formatCount } from "./output-C50ag2r3.mjs";
|
|
5
|
+
import { r as PlatformClient } from "./client-C2Prx_Bi.mjs";
|
|
6
6
|
//#region src/cli/projects.ts
|
|
7
7
|
async function runProjectsCommand(root) {
|
|
8
8
|
console.log();
|
|
@@ -38,77 +38,77 @@ async function runProjectsCommand(root) {
|
|
|
38
38
|
async function runProjectCommand(root, args) {
|
|
39
39
|
const cloudflare = readDeploymentPlatform(root) === "cloudflare";
|
|
40
40
|
if (args.subcommand === "status") {
|
|
41
|
-
const { runListCommand } = await import("./list-
|
|
41
|
+
const { runListCommand } = await import("./list-2GN7_ueV.mjs");
|
|
42
42
|
return runListCommand(root, args.name || void 0);
|
|
43
43
|
}
|
|
44
44
|
if (args.subcommand === "link") {
|
|
45
45
|
if (cloudflare) throw new Error("project: Direct Cloudflare apps are identified by cloudflare.name in void.config.ts and do not need linking.");
|
|
46
|
-
const { runLink } = await import("./link-
|
|
46
|
+
const { runLink } = await import("./link-DlPG8iX3.mjs");
|
|
47
47
|
return runLink(root, args.name || void 0);
|
|
48
48
|
}
|
|
49
49
|
if (args.subcommand === "list") {
|
|
50
50
|
if (cloudflare) {
|
|
51
|
-
const { runListCommand } = await import("./list-
|
|
51
|
+
const { runListCommand } = await import("./list-2GN7_ueV.mjs");
|
|
52
52
|
return runListCommand(root);
|
|
53
53
|
}
|
|
54
54
|
return runProjectsCommand(root);
|
|
55
55
|
}
|
|
56
56
|
if (args.subcommand === "token") {
|
|
57
57
|
if (cloudflare) throw new Error("project: CI deploy credentials are available only for Void platform projects.");
|
|
58
|
-
const { runProjectTokenCommand } = await import("./project-token-
|
|
58
|
+
const { runProjectTokenCommand } = await import("./project-token-CkZ1cN0Z.mjs");
|
|
59
59
|
return runProjectTokenCommand(root, args);
|
|
60
60
|
}
|
|
61
61
|
if (args.subcommand === "team") {
|
|
62
62
|
if (args.action === "") {
|
|
63
|
-
const { printHelpPage } = await import("./help-
|
|
63
|
+
const { printHelpPage } = await import("./help-DzKUrQvk.mjs");
|
|
64
64
|
printHelpPage(["project", "team"]);
|
|
65
65
|
return;
|
|
66
66
|
}
|
|
67
67
|
const accountInvitationAction = args.action === "pending" || args.action === "accept" || args.action === "decline";
|
|
68
68
|
if (cloudflare && !accountInvitationAction) throw new Error("project: Teams are available only for projects hosted on a Void platform, not direct Cloudflare deployments.");
|
|
69
|
-
const { runProjectTeamCommand } = await import("./project-team-
|
|
69
|
+
const { runProjectTeamCommand } = await import("./project-team-CDPE1Tsg.mjs");
|
|
70
70
|
return runProjectTeamCommand(root, args);
|
|
71
71
|
}
|
|
72
72
|
if (args.subcommand === "zero-trust") {
|
|
73
73
|
if (cloudflare) throw new Error("project: Zero Trust overrides are available only for projects hosted on a Void platform.");
|
|
74
74
|
if (args.action === "") {
|
|
75
|
-
const { printHelpPage } = await import("./help-
|
|
75
|
+
const { printHelpPage } = await import("./help-DzKUrQvk.mjs");
|
|
76
76
|
printHelpPage(["project", "zero-trust"]);
|
|
77
77
|
return;
|
|
78
78
|
}
|
|
79
79
|
const action = args.action;
|
|
80
|
-
const { runProjectZeroTrustCommand } = await import("./project-zero-trust-
|
|
80
|
+
const { runProjectZeroTrustCommand } = await import("./project-zero-trust-DdjLR61k.mjs");
|
|
81
81
|
return runProjectZeroTrustCommand(root, {
|
|
82
82
|
...args,
|
|
83
83
|
action
|
|
84
84
|
});
|
|
85
85
|
}
|
|
86
86
|
if (args.subcommand === "logs") {
|
|
87
|
-
const { runLogsCommand } = await import("./logs-
|
|
87
|
+
const { runLogsCommand } = await import("./logs-rd8J-OFh.mjs");
|
|
88
88
|
return runLogsCommand(root, args.filter, args.range, args.deployment || void 0, args.level || void 0);
|
|
89
89
|
}
|
|
90
90
|
if (args.subcommand === "requests") {
|
|
91
91
|
if (cloudflare) throw new Error("project: Historical request analytics require the Void platform. Use `void project logs` for a live Cloudflare tail.");
|
|
92
|
-
const { runRequestsCommand } = await import("./requests-
|
|
92
|
+
const { runRequestsCommand } = await import("./requests-DFAqyYy8.mjs");
|
|
93
93
|
return runRequestsCommand(root, args.range, args.status || void 0);
|
|
94
94
|
}
|
|
95
95
|
if (args.subcommand === "rollback") {
|
|
96
|
-
const { runRollbackCommand } = await import("./rollback-
|
|
96
|
+
const { runRollbackCommand } = await import("./rollback-BKYXBduI.mjs");
|
|
97
97
|
return runRollbackCommand(root, args.deployId || void 0);
|
|
98
98
|
}
|
|
99
99
|
if (args.subcommand === "cancel") {
|
|
100
100
|
if (cloudflare) throw new Error("project: Direct Cloudflare deploys activate only after readiness succeeds, so there is no remote build to cancel.");
|
|
101
|
-
const { runCancelDeployCommand } = await import("./cancel-deploy-
|
|
101
|
+
const { runCancelDeployCommand } = await import("./cancel-deploy-BZNz3Q26.mjs");
|
|
102
102
|
return runCancelDeployCommand(root, args.deployId || void 0);
|
|
103
103
|
}
|
|
104
104
|
if (args.subcommand === "delete") {
|
|
105
105
|
if (cloudflare) throw new Error("project: Refusing to delete Cloudflare resources through this command. Direct deployments are additive and existing resources may be shared.");
|
|
106
|
-
const { runDeleteCommand } = await import("./delete-
|
|
106
|
+
const { runDeleteCommand } = await import("./delete-esYlMiSJ.mjs");
|
|
107
107
|
return runDeleteCommand(root, args.name || void 0, { force: args.force });
|
|
108
108
|
}
|
|
109
109
|
if (args.subcommand === "purge-cache") {
|
|
110
110
|
if (cloudflare) throw new Error("project: Direct Cloudflare ISR cache purge is not available yet; redeploy or purge the configured KV namespace explicitly.");
|
|
111
|
-
const { runPurgeCacheCommand } = await import("./cache-
|
|
111
|
+
const { runPurgeCacheCommand } = await import("./cache-Bo52trKF.mjs");
|
|
112
112
|
return runPurgeCacheCommand(root, args.projectSlug || void 0);
|
|
113
113
|
}
|
|
114
114
|
}
|