void 0.26.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-CDry3B5V.mjs → account-cmd-CfUXh_nU.mjs} +8 -7
- package/dist/{application-analysis-DC2yPvzY.mjs → application-analysis-DKy02UY0.mjs} +21 -32
- package/dist/{application-routing-C9khgLiS.mjs → application-routing-DQyUh_5S.mjs} +1 -1
- package/dist/{auth-D52yG7hl.mjs → auth-B5_tZLxT.mjs} +7 -7
- package/dist/{auth-B60QDbjg.mjs → auth-BgX2qYSY.mjs} +1 -1
- package/dist/{auth-link-DjeOptYi.mjs → auth-link-D5RmKnzh.mjs} +5 -5
- package/dist/{auth-migrations-9vif1uj8.mjs → auth-migrations-BwHgeEsD.mjs} +8 -18
- package/dist/{auth-router-BRxIuqDi.mjs → auth-router-Bap-pvbn.mjs} +4 -17
- 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-Ce3C8huo.mjs → build-cmd-B58c8iS8.mjs} +7 -6
- package/dist/{cache-CS8Yxr5a.mjs → cache-Bo52trKF.mjs} +7 -7
- package/dist/{cancel-deploy-mZsD88Xa.mjs → cancel-deploy-BZNz3Q26.mjs} +5 -4
- package/dist/{cf-access-YTlqvAsk.mjs → cf-access-ngGqZpHZ.mjs} +10 -11
- 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.mjs +5 -6
- package/dist/client-By4JjMw_.mjs +2 -0
- package/dist/{client-mC-dFGDD.mjs → client-C2Prx_Bi.mjs} +28 -6
- 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-DoQrVHAt.mjs → cloudflare-operations-BlYLlowZ.mjs} +1 -1
- package/dist/{cloudflare-operations-DYa3coIk.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-H6EvP62X.mjs → connect-X0MUA1gk.mjs} +10 -9
- package/dist/{create-project-B2kk9Q0o.mjs → create-project-DxiyW6iX.mjs} +6 -6
- package/dist/{create-project-Dbb4uiN-.mjs → create-project-iwkbqiBU.mjs} +1 -1
- package/dist/{db-DpCKZto0.mjs → db-XnVMHzoV.mjs} +100 -132
- package/dist/{delete-CxlSvsvW.mjs → delete-esYlMiSJ.mjs} +6 -6
- package/dist/{deploy-CeEbnv4b.mjs → deploy-BsEvnlJl.mjs} +2346 -2495
- 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-B_9VgOm6.mjs → domain-CbbBWhWE.mjs} +28 -29
- package/dist/{dotenv-VQxupEUv.mjs → dotenv-BfU6eqFt.mjs} +20 -32
- package/dist/{drizzle-Beb2Am5S.mjs → drizzle-CF84FOVM.mjs} +16 -13
- package/dist/{email-BokHgjKj.mjs → email-CpuT42g7.mjs} +23 -18
- 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-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-BdTc-K2L.mjs → env-w9jOyGZn.mjs} +9 -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-Nm3hkZbT.mjs → fetch-stream-PGgz4uGz.mjs} +18 -23
- package/dist/{fetch-stream-Bjf0hoZb.d.mts → fetch-stream-obvZ7fvO.d.mts} +1 -16
- package/dist/{gen-BhDlTpwW.mjs → gen-DtkQhvQg.mjs} +40 -57
- package/dist/gen-dA9hW7AV.mjs +2 -0
- package/dist/{github-cmd-hhkTzlGS.mjs → github-cmd-D_FsOFxq.mjs} +64 -163
- package/dist/{handler-DghKr6dU.mjs → handler-BHAn2fZJ.mjs} +1 -0
- package/dist/{handler-BeK3weD4.d.mts → handler-CNAwjRcW.d.mts} +4 -11
- 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-Bv44e2tm.mjs → help-CVFBTmBx.mjs} +13 -32
- 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 +617 -530
- package/dist/{info-DhtTKh65.mjs → info-PYWwkWyt.mjs} +4 -4
- package/dist/{init-BMf4T03q.mjs → init-Bw-fRKGp.mjs} +160 -197
- package/dist/{link-BqYsSS_I.mjs → link-DlPG8iX3.mjs} +9 -9
- package/dist/{list-_kBToO-l.mjs → list-2GN7_ueV.mjs} +8 -7
- package/dist/{live-CB1y5IuC.mjs → live-CgQuTpqD.mjs} +15 -16
- package/dist/{live-iAuEH1hd.d.mts → live-Du8jXwOW.d.mts} +4 -2
- package/dist/{local-d1-fGxYrVD6.mjs → local-d1-ga5O_idV.mjs} +2 -2
- package/dist/{login-DFuo-RWO.mjs → login-D-Q4xw3Q.mjs} +7 -7
- package/dist/login-Dc-wuTDq.mjs +2 -0
- package/dist/{logs-DYgnh6dH.mjs → logs-rd8J-OFh.mjs} +27 -10
- 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-C6Q6e1Es.mjs → node-DJicPvPj.mjs} +5 -5
- package/dist/{operator-args-DdY54Bgb.mjs → operator-args-BNsW5gfp.mjs} +10 -1
- package/dist/{operator-auth-2dsGlTT5.mjs → operator-auth-AzVLbrr3.mjs} +1 -1
- package/dist/{operator-client-BFqpp6z0.mjs → operator-client-BQtzyG-g.mjs} +1 -1
- package/dist/{operator-cmd-CUGHXrQf.mjs → operator-cmd-B6f6Cg9Z.mjs} +24 -11
- package/dist/operator-cmd-Cwn50lOV.mjs +2 -0
- package/dist/{output-BvdaehtE.mjs → output-C50ag2r3.mjs} +20 -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-CJGEeTEI.mjs → plan-BhLO2p4w.mjs} +2 -1
- package/dist/plan-CH2G51je.mjs +2 -0
- package/dist/{platform-args-DSV2p4nY.mjs → platform-args-BoZkWQnJ.mjs} +1 -1
- package/dist/platform-args-DYgITk0D.mjs +2 -0
- package/dist/{platform-auth-config-Bosx7U1h.mjs → platform-auth-config-n603OANg.mjs} +40 -36
- package/dist/{platform-auth-protection-DcbL_LW_.mjs → platform-auth-protection-zxDr0hWW.mjs} +8 -7
- package/dist/{platform-auth-recovery-WfTZ8K6o.mjs → platform-auth-recovery-tw9lgtgE.mjs} +7 -6
- package/dist/{platform-cmd-DbKtQb_4.mjs → platform-cmd-B8-bCb7t.mjs} +10 -10
- package/dist/{platform-cmd-dyFUof0t.mjs → platform-cmd-C00YM14r.mjs} +1 -1
- package/dist/{platform-domain-Bsq43AJp.mjs → platform-domain-p0kobLV8.mjs} +5 -5
- package/dist/{platform-lifecycle-Cfi0o6xM.mjs → platform-lifecycle-D_QEY32D.mjs} +75 -386
- package/dist/{platform-lifecycle--5gWmDoI.mjs → platform-lifecycle-vFqtNPPa.mjs} +1 -1
- package/dist/{platform-management-BrF9STZp.mjs → platform-management-BdYblvvE.mjs} +6 -6
- package/dist/{platform-management-Bbwf6-Dq.mjs → platform-management-oi-SvI3f.mjs} +1 -1
- package/dist/{platform-plans-config-DU-8nC2Y.mjs → platform-plans-config-CjiFv5J4.mjs} +5 -4
- package/dist/{platform-recovery-DQAqAQYu.mjs → platform-recovery-PvNS9Nl2.mjs} +2 -2
- 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-WoUubFKL.mjs → prepare-Do96654b.mjs} +8 -8
- package/dist/{prepare-BMrRWLwP.mjs → prepare-Dq9hTIbo.mjs} +4 -4
- package/dist/{prerender-render-D9qbLs2f.mjs → prerender-render-Ct20jftc.mjs} +17 -3
- package/dist/prerender-render.mjs +1 -1
- package/dist/{project-cmd-BbH2LptN.mjs → project-cmd-ti8_yTcA.mjs} +18 -18
- package/dist/{project-team-Yiww3-go.mjs → project-team-CDPE1Tsg.mjs} +14 -17
- package/dist/{project-token-BrtT2NkY.mjs → project-token-CkZ1cN0Z.mjs} +13 -16
- package/dist/{project-tsconfig-B8GeM0RM.mjs → project-tsconfig-CVJhNMxs.mjs} +2 -1
- package/dist/{project-zero-trust-nYJ2V2nc.mjs → project-zero-trust-DdjLR61k.mjs} +11 -8
- package/dist/{protocol-BX8t2jiw.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-VeqAC77A.mjs → provision-BfaLiWbj.mjs} +38 -41
- package/dist/{provision-DMTPG8Rh.mjs → provision-Wu9ZBk9L.mjs} +2 -3
- package/dist/{requests-TIz_jtSu.mjs → requests-DFAqyYy8.mjs} +4 -4
- package/dist/resolve-project-BIeYs9Cw.mjs +2 -0
- package/dist/{resolve-project-BG5ORGID.mjs → resolve-project-CP8rZs_p.mjs} +6 -1
- package/dist/{rollback-dBqICPzj.mjs → rollback-BKYXBduI.mjs} +29 -36
- 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--2KF6Kua.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 +1 -1
- package/dist/runtime/ai.mjs +34 -95
- 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.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/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 +4 -81
- 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.mjs +2 -2
- 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/{scan-C8dA7iM4.mjs → scan-C3uDzz6J.mjs} +12 -13
- package/dist/{secret-AKnNXNP5.mjs → secret-BAt2KMmO.mjs} +14 -14
- package/dist/{skills-BPQUGClu.mjs → skills-BgVMvQdy.mjs} +2 -2
- package/dist/{sse-CQNaDFFV.mjs → sse-CMvCgjNk.mjs} +1 -1
- package/dist/{subcommand-prompt-B6WS9Aoz.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-ymhap6M_.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-C79j4aED.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 +5 -3
- 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/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 +10 -5
- package/{skills/void/docs → docs}/guide/pages-routing/actions-and-forms.md +20 -8
- 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/domains.md +3 -1
- package/{skills/void/docs → docs}/guide/platform/installation/first-deployment.md +3 -1
- package/{skills/void/docs → docs}/guide/platform/installation/maintenance.md +4 -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 +2 -2
- 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/cli/auth.md +0 -5
- 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 +1 -1
- package/{skills/void/docs → docs}/reference/cli/platform-email.md +2 -3
- package/{skills/void/docs → docs}/reference/cli/platform-installation.md +1 -1
- 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/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 +1 -1
- package/{skills/void/docs → docs}/reference/config.md +13 -13
- package/{skills/void/docs → docs}/reference/resource-inference.md +1 -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 +6 -3
- package/dist/cf-build-output-ChY6-XWP.mjs +0 -2
- package/dist/client-BxVixJBI.mjs +0 -2
- package/dist/config-0acf1oys.mjs +0 -2
- package/dist/config-D8MOgiQV.mjs +0 -32
- package/dist/deploy-qmiLE1G1.mjs +0 -2
- package/dist/discover-AMCBXivQ.mjs +0 -2
- package/dist/fetch-error-Sp1R4mZv.d.mts +0 -20
- package/dist/gen-qCBwH3fZ.mjs +0 -2
- package/dist/help-Dw5f9Xrg.mjs +0 -2
- package/dist/login-D7meQg_3.mjs +0 -2
- package/dist/migrate-CEu2X5DB.mjs +0 -2
- package/dist/operator-cmd-DRPvhpjM.mjs +0 -2
- package/dist/plan-COtUvdMA.mjs +0 -2
- package/dist/platform-args-Dcy_5b_Y.mjs +0 -2
- package/dist/prepare-BBknoZI1.mjs +0 -2
- package/dist/resolve-project-DtbidV4y.mjs +0 -2
- package/dist/route-url-CG7U-cRN.mjs +0 -15
- package/dist/runner-voIltZrY.mjs +0 -2
- package/dist/validate-pna7R3Pv.mjs +0 -2
- 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/app-types.md +0 -0
- 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/database.md +8 -8
- 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/credentials.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/installation/prerequisites.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/installation/setup.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/installation/uninstall.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/resources.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/api.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/cli/platform.md +0 -0
- /package/{skills/void/docs → docs}/reference/structure.md +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { a as join } from "./dist-BVqXeR_h.mjs";
|
|
2
|
-
import { i as persistCloudflareConfig, r as materializeCloudflareConfig } from "./cloudflare-config-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { t as createCloudflareProcessRunner } from "./cloudflare-process-
|
|
6
|
-
import { _ as resolvePinnedApiBaseUrl, g as provisionEnv, r as assertNoTransportRedirectInProjectDotenv, s as deleteEnvVarCaseAware } from "./provision-
|
|
2
|
+
import { i as persistCloudflareConfig, r as materializeCloudflareConfig } from "./cloudflare-config-BmhBv3HV.mjs";
|
|
3
|
+
import { A as updateWranglerCustomDomain, M as writeWranglerPublishedTrafficSnapshot, S as readWranglerCustomDomains, w as readWranglerPublishedTrafficSnapshot } from "./wrangler-D9KTuqnv.mjs";
|
|
4
|
+
import { n as scanWranglerDotenvKeys } from "./dotenv-BfU6eqFt.mjs";
|
|
5
|
+
import { t as createCloudflareProcessRunner } from "./cloudflare-process-2-TfIEzB.mjs";
|
|
6
|
+
import { _ as resolvePinnedApiBaseUrl, g as provisionEnv, r as assertNoTransportRedirectInProjectDotenv, s as deleteEnvVarCaseAware } from "./provision-BfaLiWbj.mjs";
|
|
7
7
|
import { existsSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
8
8
|
import { tmpdir } from "node:os";
|
|
9
9
|
import { deployCloudflareVersionTraffic, encodeCloudflareVersionMessage, parseCloudflareVersionMessage, parseRootWranglerConfig, readBindingFieldPresence, readCloudflareTriggerConfig, readWranglerTopLevelString, resolveD1MigrateTarget, stabilizeCloudflareVersionTriggers } from "@void/deploy-cloudflare";
|
|
10
10
|
//#region src/cli/cloudflare-operations.ts
|
|
11
11
|
function resolveCloudflareOperationContext(root, runner) {
|
|
12
|
-
const configPath =
|
|
12
|
+
const configPath = materializeCloudflareConfig(root);
|
|
13
13
|
if (!existsSync(configPath)) throw new Error(`No Cloudflare config found at "${configPath}". Run \`void init\` first.`);
|
|
14
14
|
assertNoOperationConfigOverride(root);
|
|
15
15
|
assertNoTransportRedirectInProjectDotenv(root);
|
|
@@ -197,14 +197,13 @@ async function activateCloudflareExistingVersion(context, target, current) {
|
|
|
197
197
|
}
|
|
198
198
|
const targetTriggerConfig = target.metadata.triggerConfig;
|
|
199
199
|
const publishedTraffic = readWranglerPublishedTrafficSnapshot(context.configPath);
|
|
200
|
-
const currentTriggerConfig =
|
|
200
|
+
const currentTriggerConfig = publishedTraffic ? {
|
|
201
201
|
...current.metadata.triggerConfig,
|
|
202
202
|
...publishedTraffic
|
|
203
|
-
} : current.metadata.triggerConfig
|
|
203
|
+
} : current.metadata.triggerConfig;
|
|
204
204
|
const message = encodeCloudflareVersionMessage(target.metadata.migrations, targetTriggerConfig);
|
|
205
|
-
const expectedVersionId = current?.id ?? await readActiveCloudflareVersionId(context);
|
|
206
205
|
const ownerBeforeActivation = await readActiveCloudflareVersionId(context);
|
|
207
|
-
if (ownerBeforeActivation !==
|
|
206
|
+
if (ownerBeforeActivation !== current.id) throw new Error(`Cloudflare production changed from ${current.id} to ${ownerBeforeActivation ?? "no active version"} before rollback activation. Retry from fresh deployment status.`);
|
|
208
207
|
await run(context, {
|
|
209
208
|
type: "versions.deploy",
|
|
210
209
|
versions: [{
|
|
@@ -215,44 +214,32 @@ async function activateCloudflareExistingVersion(context, target, current) {
|
|
|
215
214
|
workerName: context.workerName,
|
|
216
215
|
message
|
|
217
216
|
}, { capture: false });
|
|
218
|
-
const knownTriggerConfigs = {
|
|
219
|
-
|
|
220
|
-
|
|
217
|
+
const knownTriggerConfigs = {
|
|
218
|
+
[target.id]: targetTriggerConfig,
|
|
219
|
+
[current.id]: currentTriggerConfig
|
|
220
|
+
};
|
|
221
|
+
const stabilizeTriggers = (targetVersionId, targetConfig, previousConfig) => stabilizeCloudflareVersionTriggers({
|
|
221
222
|
runWrangler: context.runWrangler,
|
|
222
223
|
workerName: context.workerName,
|
|
223
224
|
configPath: context.configPath,
|
|
224
|
-
targetVersionId
|
|
225
|
-
targetTriggerConfig,
|
|
226
|
-
previousTriggerConfig:
|
|
225
|
+
targetVersionId,
|
|
226
|
+
targetTriggerConfig: targetConfig,
|
|
227
|
+
previousTriggerConfig: previousConfig,
|
|
227
228
|
knownTriggerConfigs,
|
|
228
229
|
publishEmptyCustomDomains: createCloudflareEmptyDomainPublisher(context),
|
|
229
230
|
publishEmptyCrons: createCloudflareEmptyCronPublisher(context)
|
|
230
231
|
});
|
|
232
|
+
const triggers = await stabilizeTriggers(target.id, targetTriggerConfig, currentTriggerConfig);
|
|
231
233
|
if (triggers.ok && triggers.targetOwnsTraffic) {
|
|
232
|
-
|
|
233
|
-
workers_dev: targetTriggerConfig.workers_dev,
|
|
234
|
-
preview_urls: targetTriggerConfig.preview_urls,
|
|
235
|
-
routes: [...targetTriggerConfig.routes]
|
|
236
|
-
});
|
|
234
|
+
recordPublishedTraffic(context.configPath, targetTriggerConfig);
|
|
237
235
|
return;
|
|
238
236
|
}
|
|
239
237
|
if (triggers.ok) throw new Error(`Cloudflare rollback to ${target.id} was superseded by ${triggers.activeVersionId}; Void restored the active version's triggers. Refresh deployment status before retrying.`);
|
|
240
238
|
if (triggers.activeVersionId && triggers.activeVersionId !== target.id) throw new Error(`Cloudflare rollback to ${target.id} was superseded by ${triggers.activeVersionId}, but Void could not restore that version's triggers (${triggers.reason}). Inspect the Worker immediately.`);
|
|
241
239
|
if (!triggers.activeVersionId) throw new Error(`Cloudflare activated ${target.id}, but Void could not verify which version owns production while synchronizing triggers (${triggers.reason}). Inspect the Worker immediately.`);
|
|
242
|
-
if (!currentTriggerConfig || !current) throw new Error(`Cloudflare activated version ${target.id}, but trigger synchronization failed and no prior trigger snapshot was available. Inspect the Worker immediately.`);
|
|
243
240
|
const ownerBeforeCompensation = await readActiveCloudflareVersionId(context);
|
|
244
241
|
if (ownerBeforeCompensation !== target.id) {
|
|
245
|
-
const repair = await
|
|
246
|
-
runWrangler: context.runWrangler,
|
|
247
|
-
workerName: context.workerName,
|
|
248
|
-
configPath: context.configPath,
|
|
249
|
-
targetVersionId: target.id,
|
|
250
|
-
targetTriggerConfig,
|
|
251
|
-
previousTriggerConfig: currentTriggerConfig,
|
|
252
|
-
knownTriggerConfigs,
|
|
253
|
-
publishEmptyCustomDomains: createCloudflareEmptyDomainPublisher(context),
|
|
254
|
-
publishEmptyCrons: createCloudflareEmptyCronPublisher(context)
|
|
255
|
-
});
|
|
242
|
+
const repair = await stabilizeTriggers(target.id, targetTriggerConfig, currentTriggerConfig);
|
|
256
243
|
throw new Error(repair.ok ? `Cloudflare rollback to ${target.id} was superseded by ${repair.activeVersionId}; Void restored the active version's triggers. Refresh deployment status before retrying.` : `Cloudflare rollback to ${target.id} was superseded by ${ownerBeforeCompensation ?? "an unknown version"}, but Void could not restore the active triggers (${repair.reason}). Inspect the Worker immediately.`);
|
|
257
244
|
}
|
|
258
245
|
let recoveryFailure = null;
|
|
@@ -267,24 +254,10 @@ async function activateCloudflareExistingVersion(context, target, current) {
|
|
|
267
254
|
workerName: context.workerName,
|
|
268
255
|
message: `Void automatic rollback after trigger synchronization failed.`
|
|
269
256
|
}, { capture: false });
|
|
270
|
-
const restoredTriggers = await
|
|
271
|
-
runWrangler: context.runWrangler,
|
|
272
|
-
workerName: context.workerName,
|
|
273
|
-
configPath: context.configPath,
|
|
274
|
-
targetVersionId: current.id,
|
|
275
|
-
targetTriggerConfig: currentTriggerConfig,
|
|
276
|
-
previousTriggerConfig: targetTriggerConfig,
|
|
277
|
-
knownTriggerConfigs,
|
|
278
|
-
publishEmptyCustomDomains: createCloudflareEmptyDomainPublisher(context),
|
|
279
|
-
publishEmptyCrons: createCloudflareEmptyCronPublisher(context)
|
|
280
|
-
});
|
|
257
|
+
const restoredTriggers = await stabilizeTriggers(current.id, currentTriggerConfig, targetTriggerConfig);
|
|
281
258
|
if (!restoredTriggers.ok) recoveryFailure = "previous trigger synchronization failed";
|
|
282
259
|
else if (!restoredTriggers.targetOwnsTraffic) recoveryFailure = `recovery was superseded by ${restoredTriggers.activeVersionId}`;
|
|
283
|
-
else
|
|
284
|
-
workers_dev: currentTriggerConfig.workers_dev,
|
|
285
|
-
preview_urls: currentTriggerConfig.preview_urls,
|
|
286
|
-
routes: [...currentTriggerConfig.routes]
|
|
287
|
-
});
|
|
260
|
+
else recordPublishedTraffic(context.configPath, currentTriggerConfig);
|
|
288
261
|
} catch (error) {
|
|
289
262
|
recoveryFailure = errorMessage(error);
|
|
290
263
|
}
|
|
@@ -347,14 +320,17 @@ async function changeCloudflareDomain(root, hostname, action, runner, emptyDomai
|
|
|
347
320
|
force: true
|
|
348
321
|
});
|
|
349
322
|
}
|
|
350
|
-
|
|
351
|
-
writeWranglerPublishedTrafficSnapshot(before.configPath, {
|
|
352
|
-
workers_dev: publishedTraffic.workers_dev,
|
|
353
|
-
preview_urls: publishedTraffic.preview_urls,
|
|
354
|
-
routes: [...publishedTraffic.routes]
|
|
355
|
-
});
|
|
323
|
+
recordPublishedTraffic(before.configPath, readCloudflareTriggerConfig(before.configPath));
|
|
356
324
|
return update;
|
|
357
325
|
}
|
|
326
|
+
/** Remember the traffic attachment Void just published for later rollback diffs. */
|
|
327
|
+
function recordPublishedTraffic(configPath, config) {
|
|
328
|
+
writeWranglerPublishedTrafficSnapshot(configPath, {
|
|
329
|
+
workers_dev: config.workers_dev,
|
|
330
|
+
preview_urls: config.preview_urls,
|
|
331
|
+
routes: [...config.routes]
|
|
332
|
+
});
|
|
333
|
+
}
|
|
358
334
|
/**
|
|
359
335
|
* Publish an explicit empty Custom Domain set through the pinned cf transport.
|
|
360
336
|
* Trigger deploy omits empty domain sets; this operation must reconcile them
|
|
@@ -378,12 +354,7 @@ function createCloudflareEmptyDomainPublisher(context) {
|
|
|
378
354
|
stderr: ""
|
|
379
355
|
};
|
|
380
356
|
} catch (error) {
|
|
381
|
-
return
|
|
382
|
-
status: 1,
|
|
383
|
-
stdout: "",
|
|
384
|
-
stderr: errorMessage(error),
|
|
385
|
-
error: errorMessage(error)
|
|
386
|
-
};
|
|
357
|
+
return failedOperationResult(error);
|
|
387
358
|
}
|
|
388
359
|
};
|
|
389
360
|
}
|
|
@@ -397,12 +368,7 @@ function createCloudflareEmptyCronPublisher(context) {
|
|
|
397
368
|
workerName: context.workerName
|
|
398
369
|
});
|
|
399
370
|
} catch (error) {
|
|
400
|
-
return
|
|
401
|
-
status: 1,
|
|
402
|
-
stdout: "",
|
|
403
|
-
stderr: errorMessage(error),
|
|
404
|
-
error: errorMessage(error)
|
|
405
|
-
};
|
|
371
|
+
return failedOperationResult(error);
|
|
406
372
|
}
|
|
407
373
|
};
|
|
408
374
|
}
|
|
@@ -452,9 +418,6 @@ function createCloudflareOperationRunner(root, accountId, apiBaseUrl) {
|
|
|
452
418
|
}
|
|
453
419
|
});
|
|
454
420
|
}
|
|
455
|
-
function discoverRootWranglerConfig(root) {
|
|
456
|
-
return materializeCloudflareConfig(root);
|
|
457
|
-
}
|
|
458
421
|
function assertNoOperationConfigOverride(root) {
|
|
459
422
|
if (process.env.CLOUDFLARE_ENV?.trim()) throw new Error("CLOUDFLARE_ENV is set. Void Cloudflare operations target the top-level config only.");
|
|
460
423
|
if (process.env.CLOUDFLARE_VITE_WRANGLER_CONFIG_PATH?.trim()) throw new Error("CLOUDFLARE_VITE_WRANGLER_CONFIG_PATH is set. Void Cloudflare operations use the root Wrangler config only.");
|
|
@@ -472,6 +435,14 @@ function parseJson(value, label) {
|
|
|
472
435
|
if (value === void 0) throw new Error(label + " did not return structured data.");
|
|
473
436
|
return value;
|
|
474
437
|
}
|
|
438
|
+
function failedOperationResult(error) {
|
|
439
|
+
return {
|
|
440
|
+
status: 1,
|
|
441
|
+
stdout: "",
|
|
442
|
+
stderr: errorMessage(error),
|
|
443
|
+
error: errorMessage(error)
|
|
444
|
+
};
|
|
445
|
+
}
|
|
475
446
|
function errorMessage(error) {
|
|
476
447
|
return error instanceof Error ? error.message : String(error);
|
|
477
448
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as join, l as relative, n as dirname, u as resolve } from "./dist-BVqXeR_h.mjs";
|
|
2
2
|
import { n as readProjectPaths } from "./project-paths-GgcMozYz.mjs";
|
|
3
|
-
import { i as hasSsrEntry, r as getSsrServerEntryPath } from "./entry-
|
|
3
|
+
import { i as hasSsrEntry, r as getSsrServerEntryPath } from "./entry-CMAkqBmU.mjs";
|
|
4
4
|
import { i as readPackageJson, n as hasPackageDependency, t as getPackageDependencies } from "./package-json-DXfiT1jV.mjs";
|
|
5
5
|
import { existsSync } from "node:fs";
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
@@ -274,14 +274,7 @@ function detectViteBinary(root) {
|
|
|
274
274
|
function findBackendSources(root) {
|
|
275
275
|
const paths = readProjectPaths(root);
|
|
276
276
|
const found = [];
|
|
277
|
-
for (const dir of
|
|
278
|
-
paths.routesDir,
|
|
279
|
-
paths.pagesDir,
|
|
280
|
-
paths.middlewareDir,
|
|
281
|
-
paths.cronsDir,
|
|
282
|
-
paths.queuesDir,
|
|
283
|
-
paths.emailDir
|
|
284
|
-
]) if (existsSync(dir)) found.push(`${relative(root, dir)}/`);
|
|
277
|
+
for (const dir of backendDirs(paths)) if (existsSync(dir)) found.push(`${relative(root, dir)}/`);
|
|
285
278
|
const ssrEntry = getSsrServerEntryPath(root, paths);
|
|
286
279
|
if (ssrEntry) found.push(relative(root, ssrEntry));
|
|
287
280
|
return found;
|
|
@@ -291,14 +284,17 @@ function findBackendSources(root) {
|
|
|
291
284
|
*/
|
|
292
285
|
function hasBackendFiles(root) {
|
|
293
286
|
const paths = readProjectPaths(root);
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
287
|
+
return backendDirs(paths).some((dir) => existsSync(dir)) || hasSsrEntry(root, paths);
|
|
288
|
+
}
|
|
289
|
+
function backendDirs(paths) {
|
|
290
|
+
return [
|
|
291
|
+
paths.routesDir,
|
|
292
|
+
paths.pagesDir,
|
|
293
|
+
paths.middlewareDir,
|
|
294
|
+
paths.cronsDir,
|
|
295
|
+
paths.queuesDir,
|
|
296
|
+
paths.emailDir
|
|
297
|
+
];
|
|
302
298
|
}
|
|
303
299
|
//#endregion
|
|
304
300
|
//#region src/cli/cloudflare-process.ts
|
|
@@ -343,6 +339,11 @@ function decodeCloudflareOperationResult(result) {
|
|
|
343
339
|
};
|
|
344
340
|
}
|
|
345
341
|
}
|
|
342
|
+
/** Echo a decoded result to the terminal when the caller did not capture it. */
|
|
343
|
+
function writeUncapturedOperationOutput(result) {
|
|
344
|
+
if (result.stdout) process.stdout.write(result.stdout);
|
|
345
|
+
if (result.stderr) process.stderr.write(result.stderr);
|
|
346
|
+
}
|
|
346
347
|
function createCloudflareProcessRunner(options) {
|
|
347
348
|
const [command, ...prefix] = resolveCloudflareOperationArgv(options.root);
|
|
348
349
|
return (operation, run) => {
|
|
@@ -379,12 +380,9 @@ function createCloudflareProcessRunner(options) {
|
|
|
379
380
|
};
|
|
380
381
|
if (streaming) return raw;
|
|
381
382
|
const decoded = decodeCloudflareOperationResult(raw);
|
|
382
|
-
if (!run.capture)
|
|
383
|
-
if (decoded.stdout) process.stdout.write(decoded.stdout);
|
|
384
|
-
if (decoded.stderr) process.stderr.write(decoded.stderr);
|
|
385
|
-
}
|
|
383
|
+
if (!run.capture) writeUncapturedOperationOutput(decoded);
|
|
386
384
|
return decoded;
|
|
387
385
|
};
|
|
388
386
|
}
|
|
389
387
|
//#endregion
|
|
390
|
-
export {
|
|
388
|
+
export { FRAMEWORK_PRESETS as a, hasBackendFiles as c, writeUncapturedOperationOutput as i, resolveCloudflareOperationArgv as l, decodeCloudflareOperationResult as n, detectPreset as o, encodeCloudflareOperation as r, formatProjectCommand as s, createCloudflareProcessRunner as t, resolveProjectCommand as u };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { m as readConfig, u as getDatabaseDialect } from "./config-
|
|
1
|
+
import { m as readConfig, u as getDatabaseDialect } from "./config-DiowPT80.mjs";
|
|
2
2
|
export { getDatabaseDialect, readConfig };
|
|
@@ -4,6 +4,7 @@ import { isSandboxRegistryImage } from "@void/deploy-core";
|
|
|
4
4
|
//#region src/sandbox/config.ts
|
|
5
5
|
const DEFAULT_SANDBOX_BINDING = "SANDBOX";
|
|
6
6
|
const DEFAULT_SANDBOX_CLASS_NAME = "SandboxV1";
|
|
7
|
+
const DEFAULT_SANDBOX_CONTAINER_NAME = "void-sandbox-v1";
|
|
7
8
|
const SANDBOX_MIGRATION_TAG = "void-sandbox-v2";
|
|
8
9
|
function isSandboxEnabled(config) {
|
|
9
10
|
return config.sandbox !== void 0 && config.sandbox !== false;
|
|
@@ -15,8 +16,7 @@ function getDefaultSandboxPlatformImage() {
|
|
|
15
16
|
return "cloudflare/debian-trixie";
|
|
16
17
|
}
|
|
17
18
|
function isLocalSandboxImage(image) {
|
|
18
|
-
|
|
19
|
-
return isAbsolute(image) || image.startsWith("./") || image.startsWith("../") || lowerImage === "dockerfile" || lowerImage.includes("dockerfile") || lowerImage.endsWith("/dockerfile") || lowerImage.endsWith("\\dockerfile");
|
|
19
|
+
return isAbsolute(image) || image.startsWith("./") || image.startsWith("../") || image.toLowerCase().includes("dockerfile");
|
|
20
20
|
}
|
|
21
21
|
function requiresSandboxPlatformImage(config) {
|
|
22
22
|
if (typeof config.sandbox !== "object" || config.sandbox === null) return false;
|
|
@@ -32,7 +32,7 @@ function resolveSandboxConfig(config, root = process.cwd()) {
|
|
|
32
32
|
return {
|
|
33
33
|
binding: raw.binding ?? "SANDBOX",
|
|
34
34
|
className: raw.className ?? "SandboxV1",
|
|
35
|
-
containerName: raw.containerName ??
|
|
35
|
+
containerName: raw.containerName ?? DEFAULT_SANDBOX_CONTAINER_NAME,
|
|
36
36
|
image: resolveSandboxImage(image, root),
|
|
37
37
|
platformImage,
|
|
38
38
|
...imageBuildContext && { imageBuildContext: isAbsolute(imageBuildContext) ? imageBuildContext : join(root, imageBuildContext) },
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { a as join, l as relative } from "./dist-BVqXeR_h.mjs";
|
|
2
|
+
import { n as readProjectPaths } from "./project-paths-GgcMozYz.mjs";
|
|
3
|
+
import { n as schemaSpecifier, t as discoverSchema } from "./discover-CkCYv9T_.mjs";
|
|
4
|
+
import { mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
5
|
+
import { tmpdir } from "node:os";
|
|
6
|
+
//#region src/drizzle/config.ts
|
|
7
|
+
/**
|
|
8
|
+
* Write a temporary drizzle-kit config, by default to `.void/drizzle.config.json`.
|
|
9
|
+
* Schema and migration paths are relative to the project root: drizzle-kit
|
|
10
|
+
* resolves them against its working directory, and `void db` always runs it
|
|
11
|
+
* with `cwd` set to the project root, so the config file itself may live
|
|
12
|
+
* anywhere (see `outDir`).
|
|
13
|
+
*
|
|
14
|
+
* @param options.outDir Directory for the config file. When set, the file is
|
|
15
|
+
* written readable by the owner only.
|
|
16
|
+
* @returns Absolute path to the written config file.
|
|
17
|
+
*/
|
|
18
|
+
function writeDrizzleConfig(root, dbPath, dialect = "sqlite", options) {
|
|
19
|
+
const paths = readProjectPaths(root);
|
|
20
|
+
const schema = discoverSchema(root, paths);
|
|
21
|
+
const schemaPaths = [...schema ? [schemaSpecifier(schema, root)] : [], ...(options?.additionalSchemas ?? []).map((path) => `./${relative(root, path)}`)];
|
|
22
|
+
if (schemaPaths.length === 0) throw new Error(`db: No Drizzle schema found. Create ${paths.sourceRelative("db/schema.ts")} or run \`void gen model <name>\`.`);
|
|
23
|
+
const outDir = options?.outDir ?? join(root, ".void");
|
|
24
|
+
mkdirSync(outDir, { recursive: true });
|
|
25
|
+
const config = {
|
|
26
|
+
dialect,
|
|
27
|
+
schema: schemaPaths.length === 1 ? schemaPaths[0] : schemaPaths,
|
|
28
|
+
out: `./${relative(root, paths.migrationsDir)}`,
|
|
29
|
+
migrations: { prefix: "timestamp" },
|
|
30
|
+
dbCredentials: { url: dbPath }
|
|
31
|
+
};
|
|
32
|
+
const configPath = join(outDir, "drizzle.config.json");
|
|
33
|
+
writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n", options?.outDir ? { mode: 384 } : void 0);
|
|
34
|
+
return configPath;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Run `run` with a drizzle-kit config that holds a real database URL, kept
|
|
38
|
+
* out of the project directory (the dev server can serve files under it).
|
|
39
|
+
* The config lives in a private temp directory that is removed afterwards.
|
|
40
|
+
*
|
|
41
|
+
* Older CLI versions wrote such URLs to `.void/drizzle.config.json`; a
|
|
42
|
+
* file left there with one is removed first.
|
|
43
|
+
*
|
|
44
|
+
* A no-op SIGINT listener stays installed while `run` executes: Drizzle
|
|
45
|
+
* Studio is stopped with Ctrl-C, and without a listener Node would exit on
|
|
46
|
+
* the signal before `finally` removes the directory.
|
|
47
|
+
*/
|
|
48
|
+
function withPrivateDrizzleConfig(root, dbUrl, dialect, run) {
|
|
49
|
+
removeProjectDrizzleConfigWithUrl(root);
|
|
50
|
+
const dir = mkdtempSync(join(tmpdir(), "void-drizzle-"));
|
|
51
|
+
const noop = () => {};
|
|
52
|
+
process.on("SIGINT", noop);
|
|
53
|
+
try {
|
|
54
|
+
return run(writeDrizzleConfig(root, dbUrl, dialect, { outDir: dir }));
|
|
55
|
+
} finally {
|
|
56
|
+
process.off("SIGINT", noop);
|
|
57
|
+
rmSync(dir, {
|
|
58
|
+
recursive: true,
|
|
59
|
+
force: true
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The CLI now writes only local SQLite paths or placeholder URLs to
|
|
65
|
+
* `.void/drizzle.config.json`, so any other URL there is a real one.
|
|
66
|
+
*/
|
|
67
|
+
function removeProjectDrizzleConfigWithUrl(root) {
|
|
68
|
+
const configPath = join(root, ".void", "drizzle.config.json");
|
|
69
|
+
let url;
|
|
70
|
+
try {
|
|
71
|
+
url = JSON.parse(readFileSync(configPath, "utf-8"))?.dbCredentials?.url;
|
|
72
|
+
} catch {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (typeof url === "string" && url.includes("://") && url !== "postgresql://dummy" && url !== "mysql://dummy") rmSync(configPath, { force: true });
|
|
76
|
+
}
|
|
77
|
+
//#endregion
|
|
78
|
+
export { writeDrizzleConfig as n, withPrivateDrizzleConfig as t };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./types-CKWnYgfy.mjs";
|
|
2
2
|
import { t as VoidAuthProvider } from "./providers-BNKRacMr.mjs";
|
|
3
|
-
import { t as HeadConfig } from "./head-
|
|
3
|
+
import { t as HeadConfig } from "./head-C8K_iGe6.mjs";
|
|
4
4
|
import "@void/deploy-core";
|
|
5
5
|
import { RewriteDestination } from "void/routes";
|
|
6
6
|
//#region src/sandbox/config.d.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as validateSourceDir, c as loadVoidConfig } from "./project-paths-GgcMozYz.mjs";
|
|
2
|
-
import { i as isVoidAuthProvider, t as VOID_AUTH_PROVIDERS } from "./providers-
|
|
3
|
-
import { a as parseAddress, n as MimeError } from "./mime-
|
|
2
|
+
import { i as isVoidAuthProvider, t as VOID_AUTH_PROVIDERS } from "./providers-BXuhmuub.mjs";
|
|
3
|
+
import { a as parseAddress, n as MimeError } from "./mime-DxCznlJq.mjs";
|
|
4
4
|
//#region src/config.ts
|
|
5
5
|
const CONFIG_FILE = "void.json";
|
|
6
6
|
const VALID_TARGETS = /* @__PURE__ */ new Set([
|
|
@@ -17,8 +17,8 @@ const VALID_APP_TYPES = /* @__PURE__ */ new Set([
|
|
|
17
17
|
]);
|
|
18
18
|
const VALID_OUTPUTS = /* @__PURE__ */ new Set(["server", "static"]);
|
|
19
19
|
/**
|
|
20
|
-
* Accepted `routing.notFound` values.
|
|
21
|
-
* `AssetConfig.not_found_handling`
|
|
20
|
+
* Accepted `routing.notFound` values. Keep in sync with the schema.json enum
|
|
21
|
+
* and `AssetConfig.not_found_handling` in `@void/deploy-core`.
|
|
22
22
|
*/
|
|
23
23
|
const VALID_NOT_FOUND_HANDLING = /* @__PURE__ */ new Set([
|
|
24
24
|
"single-page-application",
|
|
@@ -52,26 +52,22 @@ const VALID_SANDBOX_INSTANCE_TYPES = /* @__PURE__ */ new Set([
|
|
|
52
52
|
* Count anonymous `*` wildcards in a pattern, ignoring the `*` that
|
|
53
53
|
* terminates a `:name*` multi-segment named capture.
|
|
54
54
|
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
* Walking raw chars would over-count and cause `assertSingleSplat` to
|
|
61
|
-
* reject such patterns.
|
|
55
|
+
* The shared `compilePattern` (`@void/edge`) emits a distinct `(?<name>.*)`
|
|
56
|
+
* group for `:name*` and a `(?<splat>.*)` group for the first bare `*` —
|
|
57
|
+
* those don't clash, so a pattern with both a named multi-segment capture and
|
|
58
|
+
* a bare splat is legitimate and must validate. Walking raw chars would
|
|
59
|
+
* over-count and cause `assertSingleSplat` to reject such patterns.
|
|
62
60
|
*
|
|
63
|
-
* The identifier character class matches `[A-Za-z0-9_]
|
|
61
|
+
* The identifier character class matches `compilePattern`'s `[A-Za-z0-9_]+`.
|
|
64
62
|
*/
|
|
65
63
|
function countSplats(source) {
|
|
66
64
|
return source.replace(/:[A-Za-z0-9_]+\*/g, "").match(/\*/g)?.length ?? 0;
|
|
67
65
|
}
|
|
68
66
|
/**
|
|
69
|
-
* Reject a rule source containing more than one `*` wildcard.
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
* clear message instead. `kind` is a capitalised noun (e.g. "Redirect",
|
|
74
|
-
* "Rewrite") used in the error text.
|
|
67
|
+
* Reject a rule source containing more than one anonymous `*` wildcard. Only
|
|
68
|
+
* the first `*` is captured (as `:splat`), so a second one is ambiguous.
|
|
69
|
+
* `kind` is a capitalised noun (e.g. "Redirect", "Rewrite") used in the error
|
|
70
|
+
* text.
|
|
75
71
|
*/
|
|
76
72
|
function assertSingleSplat(source, kind) {
|
|
77
73
|
const count = countSplats(source);
|
|
@@ -88,10 +84,9 @@ function assertSingleSplat(source, kind) {
|
|
|
88
84
|
* 2. A `:splat` (named) token alongside a bare `*` — both compile to a
|
|
89
85
|
* `(?<splat>...)` group.
|
|
90
86
|
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
* config-read with a precise message is friendlier than a CLI-log warn.
|
|
87
|
+
* The runtime skips a rule whose pattern fails to compile
|
|
88
|
+
* (`runtime/routing.ts`), but failing at config-read with a precise message
|
|
89
|
+
* is friendlier than a log warning.
|
|
95
90
|
*/
|
|
96
91
|
function assertUniqueCaptureNames(source, kind) {
|
|
97
92
|
const seen = /* @__PURE__ */ new Set();
|
|
@@ -114,10 +109,9 @@ function assertUniqueCaptureNames(source, kind) {
|
|
|
114
109
|
* `//host/path` → `https://host/path`, which silently turns an intended
|
|
115
110
|
* in-worker rewrite/redirect into a cross-origin proxy.
|
|
116
111
|
*
|
|
117
|
-
* Shared by the
|
|
118
|
-
* (`cli/headers.ts`).
|
|
119
|
-
*
|
|
120
|
-
* runtime user input rather than config, so it can't call through here.
|
|
112
|
+
* Shared by the config validators below and the `_redirects` parser
|
|
113
|
+
* (`cli/headers.ts`). `c.rewrite()` in `runtime/routing.ts` has an equivalent
|
|
114
|
+
* check for runtime input; it runs in the Worker and cannot import this module.
|
|
121
115
|
*/
|
|
122
116
|
function isProtocolRelative(dest) {
|
|
123
117
|
return dest.startsWith("//");
|
|
@@ -129,10 +123,10 @@ function assertNotProtocolRelative(dest, source, kind) {
|
|
|
129
123
|
/**
|
|
130
124
|
* Strict literal-hostname regex used by `parseHostPrefixedSource` to validate
|
|
131
125
|
* the host portion of an `https://host/path` rule source. Mirrors
|
|
132
|
-
* `LITERAL_HOSTNAME_REGEX` in `packages/
|
|
133
|
-
* regex in `packages/api/src/routes/domains.ts`. Rejects scheme
|
|
134
|
-
* ports, paths, whitespace, control chars, wildcards, single-label
|
|
135
|
-
* IPv4 literals, and userinfo. The host is lowercased before testing so the
|
|
126
|
+
* `LITERAL_HOSTNAME_REGEX` in `packages/deploy-core/src/validate.ts` and the
|
|
127
|
+
* regex in `platform/packages/api/src/routes/domains.ts`. Rejects scheme
|
|
128
|
+
* prefixes, ports, paths, whitespace, control chars, wildcards, single-label
|
|
129
|
+
* hosts, IPv4 literals, and userinfo. The host is lowercased before testing so the
|
|
136
130
|
* same byte-exact form reaches dispatch (which compares against the
|
|
137
131
|
* lowercase `url.hostname`).
|
|
138
132
|
*/
|
package/dist/config-entry.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as VoidConfig } from "./config-
|
|
1
|
+
import { t as VoidConfig } from "./config-CSa15FvD.mjs";
|
|
2
2
|
//#region src/config-entry.d.ts
|
|
3
3
|
/** Define a typed Void project configuration without loading the Vite plugin. */
|
|
4
4
|
export declare function defineConfig<const T extends VoidConfig>(config: T): T;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { a as join } from "./dist-BVqXeR_h.mjs";
|
|
2
2
|
import { o as TYPED_CONFIG_FILE, s as loadTypedVoidConfigFile } from "./project-paths-GgcMozYz.mjs";
|
|
3
|
-
import { g as validateConfig } from "./config-
|
|
3
|
+
import { g as validateConfig } from "./config-DiowPT80.mjs";
|
|
4
4
|
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
5
|
-
import {
|
|
5
|
+
import { parseSync } from "vite";
|
|
6
6
|
//#region src/config-write.ts
|
|
7
7
|
const GENERATED_MARKERS = [
|
|
8
8
|
"// Generated by void migrate.",
|
|
@@ -26,18 +26,19 @@ function isStaticValue(node) {
|
|
|
26
26
|
}
|
|
27
27
|
function isGeneratedStaticConfig(source) {
|
|
28
28
|
if (!GENERATED_MARKERS.some((marker) => source.startsWith(marker))) return false;
|
|
29
|
-
const comments = [];
|
|
30
29
|
let program;
|
|
31
30
|
try {
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
const parsed = parseSync(TYPED_CONFIG_FILE, source, {
|
|
32
|
+
lang: "js",
|
|
34
33
|
sourceType: "module",
|
|
35
|
-
|
|
34
|
+
preserveParens: false,
|
|
35
|
+
showSemanticErrors: true
|
|
36
36
|
});
|
|
37
|
+
if (parsed.errors.length > 0 || parsed.comments.length !== 1 || !GENERATED_MARKERS.includes(`// ${parsed.comments[0]?.value.trim()}`)) return false;
|
|
38
|
+
program = parsed.program;
|
|
37
39
|
} catch {
|
|
38
40
|
return false;
|
|
39
41
|
}
|
|
40
|
-
if (comments.length !== 1 || !GENERATED_MARKERS.includes(`// ${comments[0]}`)) return false;
|
|
41
42
|
const [importDeclaration, exportDeclaration] = program.body ?? [];
|
|
42
43
|
const call = exportDeclaration?.declaration;
|
|
43
44
|
return program.body?.length === 2 && importDeclaration?.type === "ImportDeclaration" && importDeclaration.source?.value === "void/config" && importDeclaration.specifiers?.length === 1 && importDeclaration.specifiers[0]?.imported?.name === "defineConfig" && importDeclaration.specifiers[0]?.local?.name === "defineConfig" && exportDeclaration?.type === "ExportDefaultDeclaration" && call?.type === "CallExpression" && call.callee?.name === "defineConfig" && call.arguments?.length === 1 && isStaticValue(call.arguments[0]);
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { c as normalizePlatformApiUrl, s as listPlatformConnections } from "./platform-registry-P387v42A.mjs";
|
|
2
2
|
import { c as writePlatformSelection, n as readDeploymentPlatform, s as writeDeploymentPlatform } from "./project-DQstYTxO.mjs";
|
|
3
|
-
import { d as readPlatformToken } from "./auth-
|
|
4
|
-
import { K as select, L as log, tt as isCancel } from "./
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { t as
|
|
3
|
+
import { d as readPlatformToken } from "./auth-B5_tZLxT.mjs";
|
|
4
|
+
import { K as select, L as log, tt as isCancel } from "./dist-D3m88sjf.mjs";
|
|
5
|
+
import { d as printSuccess } from "./output-C50ag2r3.mjs";
|
|
6
|
+
import { a as isExpiredTokenError, r as PlatformClient } from "./client-C2Prx_Bi.mjs";
|
|
7
|
+
import { t as promptForLoginToken } from "./login-D-Q4xw3Q.mjs";
|
|
8
|
+
import { i as saveDiscoveredPlatform, n as promptPlatformUrl, t as discoverPlatform } from "./platform-cmd-B8-bCb7t.mjs";
|
|
9
|
+
import { t as connectCloudflare } from "./cloudflare-connect-2G3rL2rP.mjs";
|
|
9
10
|
//#region src/cli/connect.ts
|
|
10
11
|
async function selectVoidPlatform(interactive) {
|
|
11
12
|
if (!interactive) throw new Error("connect: Supply a Void platform URL in non-interactive mode.");
|
|
@@ -35,7 +36,7 @@ async function authenticateConnection(root, discovery, interactive) {
|
|
|
35
36
|
apiUrl: discovery.apiUrl,
|
|
36
37
|
checkPlatformVersion: false
|
|
37
38
|
}).whoami();
|
|
38
|
-
log.
|
|
39
|
+
log.step(`Authenticated with ${discovery.displayName}.`);
|
|
39
40
|
return;
|
|
40
41
|
} catch (error) {
|
|
41
42
|
if (!isExpiredTokenError(error)) throw error;
|
|
@@ -67,7 +68,7 @@ async function runConnectCommand(root, args, interactive = Boolean(process.stdin
|
|
|
67
68
|
if (target === "cloudflare") {
|
|
68
69
|
await connectCloudflare(root, interactive);
|
|
69
70
|
writeDeploymentPlatform(root, "cloudflare");
|
|
70
|
-
|
|
71
|
+
printSuccess("Connected to Cloudflare. Run `void deploy` to deploy this project.");
|
|
71
72
|
return;
|
|
72
73
|
}
|
|
73
74
|
const discovery = await discoverPlatform(args.url || await selectVoidPlatform(interactive));
|
|
@@ -75,10 +76,10 @@ async function runConnectCommand(root, args, interactive = Boolean(process.stdin
|
|
|
75
76
|
saveDiscoveredPlatform(discovery);
|
|
76
77
|
const envUrl = process.env.VOID_API_URL;
|
|
77
78
|
const selected = Boolean(envUrl && normalizePlatformApiUrl(envUrl) !== discovery.apiUrl) ? false : writePlatformSelection(root, discovery);
|
|
78
|
-
log.success(`Connected to ${discovery.displayName} at ${discovery.apiUrl}.`);
|
|
79
79
|
if (!selected) log.info("Saved the connection. The current project link or environment still selects its existing destination.");
|
|
80
80
|
if (args.noLogin) log.info("Connection saved without login. Run `void account login` in a project using this platform when ready.");
|
|
81
81
|
else if (selected) log.info("Run `void project link` to select a project, then `void deploy`.");
|
|
82
|
+
printSuccess(`Connected to ${discovery.displayName} at ${discovery.apiUrl}.`);
|
|
82
83
|
}
|
|
83
84
|
//#endregion
|
|
84
85
|
export { runConnectCommand };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { l as writeProjectConfig, t as attachSelectedPlatform } from "./project-DQstYTxO.mjs";
|
|
2
|
-
import { s as getSiteDomain } from "./auth-
|
|
3
|
-
import { A as confirm, K as select, L as log, O as cancel, X as text, tt as isCancel } from "./
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { s as getSiteDomain } from "./auth-B5_tZLxT.mjs";
|
|
3
|
+
import { A as confirm, K as select, L as log, O as cancel, X as text, tt as isCancel } from "./dist-D3m88sjf.mjs";
|
|
4
|
+
import { f as sanitizeTerminalText, l as import_picocolors } from "./output-C50ag2r3.mjs";
|
|
5
|
+
import { n as PlatformApiError } from "./client-C2Prx_Bi.mjs";
|
|
6
6
|
import { t as validateProjectSlug } from "./project-slug-23TpquG4.mjs";
|
|
7
|
-
import { n as inferDefaultSlug } from "./resolve-project-
|
|
7
|
+
import { n as inferDefaultSlug } from "./resolve-project-CP8rZs_p.mjs";
|
|
8
8
|
//#region src/cli/prompt.ts
|
|
9
9
|
async function promptProjectSetupAction(message = "Set up a Void project:", options = {}) {
|
|
10
10
|
const result = await select({
|
|
@@ -86,7 +86,7 @@ async function createProjectWithSlugRetry(client, initialDefaultSlug, promptSlug
|
|
|
86
86
|
try {
|
|
87
87
|
log.step(`Creating project ${import_picocolors.default.blue(slug)}...`);
|
|
88
88
|
const project = await client.createProject(slug);
|
|
89
|
-
log.
|
|
89
|
+
log.step(`Project created: ${import_picocolors.default.blue(project.slug)}`);
|
|
90
90
|
reportProjectCreationWarnings(project);
|
|
91
91
|
return project;
|
|
92
92
|
} catch (error) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as createProjectWithSlugRetry } from "./create-project-
|
|
1
|
+
import { t as createProjectWithSlugRetry } from "./create-project-DxiyW6iX.mjs";
|
|
2
2
|
export { createProjectWithSlugRetry };
|