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
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
import { n as __toESM } from "../rolldown-runtime-DXIUcv95.mjs";
|
|
3
3
|
import { a as join, n as dirname, u as resolve } from "../dist-BVqXeR_h.mjs";
|
|
4
4
|
import { t as require_picocolors } from "../picocolors-BTps1_gs.mjs";
|
|
5
|
+
import { t as sanitizeTerminalLogText } from "../terminal-log-text-D9ACPOuG.mjs";
|
|
5
6
|
import { copyFileSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
6
7
|
import { fileURLToPath } from "node:url";
|
|
7
8
|
import { tmpdir } from "node:os";
|
|
8
9
|
import { parse } from "jsonc-parser";
|
|
9
10
|
import { stripVTControlCharacters } from "node:util";
|
|
10
11
|
import { spawn, spawnSync } from "node:child_process";
|
|
11
|
-
import {
|
|
12
|
+
import { setGlobalProxyFromEnv } from "node:http";
|
|
12
13
|
import { getCloudflareAuthUseKeyringFromEnv } from "@cloudflare/workers-auth";
|
|
13
14
|
import { createCfAuth, createCfProfileStore, readUserPreferences, setKeyringPreference } from "@cloudflare/workers-auth/cf";
|
|
14
15
|
//#region src/cli/cf-session.ts
|
|
@@ -40,8 +41,9 @@ function readCfSessionCredential(root, identity) {
|
|
|
40
41
|
const auth = session(root);
|
|
41
42
|
if (identity.authSource !== `OAuth token from ${auth.getCredentialStore().path()}`) return null;
|
|
42
43
|
const token = auth.readAuthCredentials()?.oauth_token;
|
|
43
|
-
if (typeof token
|
|
44
|
-
|
|
44
|
+
if (typeof token !== "string" || token.length === 0) return null;
|
|
45
|
+
persistCfKeyringPreference(root);
|
|
46
|
+
return token;
|
|
45
47
|
}
|
|
46
48
|
/** Keep subsequent cf logins on the encrypted profile adopted by Void. */
|
|
47
49
|
function persistCfKeyringPreference(root) {
|
|
@@ -81,6 +83,13 @@ const operation = (() => {
|
|
|
81
83
|
}
|
|
82
84
|
})();
|
|
83
85
|
process.env.CLOUDFLARE_AUTH_USE_KEYRING ??= "true";
|
|
86
|
+
if (hasProxyEnvironment(process.env)) setGlobalProxyFromEnv();
|
|
87
|
+
function hasProxyEnvironment(env) {
|
|
88
|
+
return Boolean(env.HTTP_PROXY || env.HTTPS_PROXY || env.http_proxy || env.https_proxy);
|
|
89
|
+
}
|
|
90
|
+
function apiBaseUrl() {
|
|
91
|
+
return (process.env.CLOUDFLARE_API_BASE_URL ?? "https://api.cloudflare.com/client/v4").replace(/\/$/, "");
|
|
92
|
+
}
|
|
84
93
|
function cfEnvironment() {
|
|
85
94
|
const env = {
|
|
86
95
|
...process.env,
|
|
@@ -89,7 +98,7 @@ function cfEnvironment() {
|
|
|
89
98
|
CF_NO_OSC_PROGRESS: "1",
|
|
90
99
|
CLOUDFLARE_AUTH_USE_KEYRING: process.env.CLOUDFLARE_AUTH_USE_KEYRING
|
|
91
100
|
};
|
|
92
|
-
if (env
|
|
101
|
+
if (hasProxyEnvironment(env)) env.NODE_USE_ENV_PROXY = "1";
|
|
93
102
|
for (const [canonical, alias] of [
|
|
94
103
|
["CLOUDFLARE_API_TOKEN", "CF_API_TOKEN"],
|
|
95
104
|
["CLOUDFLARE_API_KEY", "CF_API_KEY"],
|
|
@@ -219,7 +228,7 @@ async function withBuildOutput(raw, sourceMain, action) {
|
|
|
219
228
|
}), { mode: 384 });
|
|
220
229
|
const accountId = process.env.CLOUDFLARE_ACCOUNT_ID ?? raw.account_id;
|
|
221
230
|
if (typeof accountId !== "string" || !accountId) throw new Error("Cloudflare account is not pinned for Worker deployment.");
|
|
222
|
-
const { prepareCfBuildOutput } = await import("../cf-build-output-
|
|
231
|
+
const { prepareCfBuildOutput } = await import("../cf-build-output-H9a97vME.mjs");
|
|
223
232
|
const output = await prepareCfBuildOutput(scratch, accountId);
|
|
224
233
|
if (!output) throw new Error("Could not prepare the Cloudflare Worker build output.");
|
|
225
234
|
try {
|
|
@@ -291,80 +300,62 @@ function accountId() {
|
|
|
291
300
|
return accountId;
|
|
292
301
|
}
|
|
293
302
|
async function cloudflareApiGet(path, failure, extraHeaders = {}) {
|
|
294
|
-
const url = `${(
|
|
295
|
-
const
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
const body = object(await response.json());
|
|
307
|
-
if (!response.ok || body.success !== true) throw new Error(`${failure} (HTTP ${response.status})`);
|
|
308
|
-
return body;
|
|
309
|
-
} finally {
|
|
310
|
-
await proxy?.close();
|
|
311
|
-
}
|
|
303
|
+
const url = `${apiBaseUrl()}${path}`;
|
|
304
|
+
const response = await fetch(url, {
|
|
305
|
+
headers: {
|
|
306
|
+
...await apiHeaders(),
|
|
307
|
+
...extraHeaders
|
|
308
|
+
},
|
|
309
|
+
redirect: "error",
|
|
310
|
+
signal: AbortSignal.timeout(3e4)
|
|
311
|
+
});
|
|
312
|
+
const body = object(await response.json());
|
|
313
|
+
if (!response.ok || body.success !== true) throw new Error(`${failure} (HTTP ${response.status})`);
|
|
314
|
+
return body;
|
|
312
315
|
}
|
|
313
316
|
async function clearWorkerCronSchedules(worker) {
|
|
314
|
-
const endpoint = `${(
|
|
315
|
-
const
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
const schedules = object(body.result).schedules;
|
|
330
|
-
if (!response.ok || body.success !== true || !Array.isArray(schedules) || schedules.length !== 0) throw new Error(`Cloudflare did not clear the Worker Cron Triggers (HTTP ${response.status}).`);
|
|
331
|
-
return result(0);
|
|
332
|
-
} finally {
|
|
333
|
-
await proxy?.close();
|
|
334
|
-
}
|
|
317
|
+
const endpoint = `${apiBaseUrl()}/accounts/${encodeURIComponent(accountId())}/workers/scripts/${encodeURIComponent(worker)}/schedules`;
|
|
318
|
+
const response = await fetch(endpoint, {
|
|
319
|
+
method: "PUT",
|
|
320
|
+
headers: {
|
|
321
|
+
...await apiHeaders(),
|
|
322
|
+
"Content-Type": "application/json"
|
|
323
|
+
},
|
|
324
|
+
body: "[]",
|
|
325
|
+
redirect: "error",
|
|
326
|
+
signal: AbortSignal.timeout(3e4)
|
|
327
|
+
});
|
|
328
|
+
const body = object(await response.json());
|
|
329
|
+
const schedules = object(body.result).schedules;
|
|
330
|
+
if (!response.ok || body.success !== true || !Array.isArray(schedules) || schedules.length !== 0) throw new Error(`Cloudflare did not clear the Worker Cron Triggers (HTTP ${response.status}).`);
|
|
331
|
+
return result(0);
|
|
335
332
|
}
|
|
336
333
|
async function clearWorkerCustomDomains(worker) {
|
|
337
|
-
const endpoint = `${(
|
|
338
|
-
const
|
|
334
|
+
const endpoint = `${apiBaseUrl()}/accounts/${encodeURIComponent(accountId())}/workers/scripts/${encodeURIComponent(worker)}/domains/records`;
|
|
335
|
+
const response = await fetch(endpoint, {
|
|
336
|
+
method: "PUT",
|
|
337
|
+
headers: {
|
|
338
|
+
...await apiHeaders(),
|
|
339
|
+
"Content-Type": "application/json"
|
|
340
|
+
},
|
|
341
|
+
body: JSON.stringify({
|
|
342
|
+
override_scope: true,
|
|
343
|
+
override_existing_origin: false,
|
|
344
|
+
override_existing_dns_record: false,
|
|
345
|
+
origins: []
|
|
346
|
+
}),
|
|
347
|
+
redirect: "error",
|
|
348
|
+
signal: AbortSignal.timeout(3e4)
|
|
349
|
+
});
|
|
350
|
+
if (!response.ok) throw new Error(`Cloudflare rejected the empty custom-domain set (HTTP ${response.status}).`);
|
|
351
|
+
let body;
|
|
339
352
|
try {
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
...await apiHeaders(),
|
|
344
|
-
"Content-Type": "application/json"
|
|
345
|
-
},
|
|
346
|
-
body: JSON.stringify({
|
|
347
|
-
override_scope: true,
|
|
348
|
-
override_existing_origin: false,
|
|
349
|
-
override_existing_dns_record: false,
|
|
350
|
-
origins: []
|
|
351
|
-
}),
|
|
352
|
-
redirect: "error",
|
|
353
|
-
signal: AbortSignal.timeout(3e4),
|
|
354
|
-
...proxy ? { dispatcher: proxy } : {}
|
|
355
|
-
});
|
|
356
|
-
if (!response.ok) throw new Error(`Cloudflare rejected the empty custom-domain set (HTTP ${response.status}).`);
|
|
357
|
-
let body;
|
|
358
|
-
try {
|
|
359
|
-
body = await response.json();
|
|
360
|
-
} catch {
|
|
361
|
-
throw new Error(`Cloudflare returned HTTP ${response.status} with a non-JSON custom-domain response.`);
|
|
362
|
-
}
|
|
363
|
-
if (object(body).success !== true) throw new Error(`Cloudflare rejected the empty custom-domain set (HTTP ${response.status}).`);
|
|
364
|
-
return result(0);
|
|
365
|
-
} finally {
|
|
366
|
-
await proxy?.close();
|
|
353
|
+
body = await response.json();
|
|
354
|
+
} catch {
|
|
355
|
+
throw new Error(`Cloudflare returned HTTP ${response.status} with a non-JSON custom-domain response.`);
|
|
367
356
|
}
|
|
357
|
+
if (object(body).success !== true) throw new Error(`Cloudflare rejected the empty custom-domain set (HTTP ${response.status}).`);
|
|
358
|
+
return result(0);
|
|
368
359
|
}
|
|
369
360
|
async function assertExistingProvisionableResources(directory, account) {
|
|
370
361
|
const { readBuildOutput } = await import("@cloudflare/build-output-utils");
|
|
@@ -990,7 +981,7 @@ async function tail() {
|
|
|
990
981
|
"exceededMemory",
|
|
991
982
|
"unknown"
|
|
992
983
|
] });
|
|
993
|
-
const endpoint = `${(
|
|
984
|
+
const endpoint = `${apiBaseUrl()}/accounts/${encodeURIComponent(accountId)}/workers/scripts/${encodeURIComponent(worker)}/tails`;
|
|
994
985
|
const headers = {
|
|
995
986
|
...await apiHeaders(),
|
|
996
987
|
"Content-Type": "application/json"
|
|
@@ -1035,9 +1026,12 @@ async function tail() {
|
|
|
1035
1026
|
const detail = object(log.event ?? {});
|
|
1036
1027
|
const request = object(detail.request ?? {});
|
|
1037
1028
|
const prefix = typeof request.url === "string" ? `${request.method ?? "GET"} ${request.url}` : typeof detail.queue === "string" ? `Queue ${detail.queue}` : typeof detail.mailFrom === "string" ? `Email from ${detail.mailFrom}` : "Worker event";
|
|
1038
|
-
process.stdout.write(`${prefix} - ${log.outcome ?? "unknown"} @ ${new Date(Number(log.eventTimestamp)).toLocaleString()}\n`);
|
|
1039
|
-
if (Array.isArray(log.logs)) for (const line of log.logs.map(object))
|
|
1040
|
-
|
|
1029
|
+
process.stdout.write(`${sanitizeTerminalLogText(prefix)} - ${log.outcome ?? "unknown"} @ ${new Date(Number(log.eventTimestamp)).toLocaleString()}\n`);
|
|
1030
|
+
if (Array.isArray(log.logs)) for (const line of log.logs.map(object)) {
|
|
1031
|
+
const message = Array.isArray(line.message) ? line.message.join(" ") : "";
|
|
1032
|
+
process.stdout.write(` (${line.level ?? "log"}) ${sanitizeTerminalLogText(message)}\n`);
|
|
1033
|
+
}
|
|
1034
|
+
if (Array.isArray(log.exceptions)) for (const exception of log.exceptions.map(object)) process.stderr.write(` ${sanitizeTerminalLogText(`${exception.name ?? "Error"}: ${exception.message ?? ""}`)}\n`);
|
|
1041
1035
|
}).catch(() => {
|
|
1042
1036
|
process.stderr.write("Cloudflare returned a malformed tail event.\n");
|
|
1043
1037
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as findEnvFile } from "../env-types-
|
|
1
|
+
import { t as findEnvFile } from "../env-types-CwXgeMgL.mjs";
|
|
2
2
|
import { writeSync } from "node:fs";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
4
|
import { spawnSync } from "node:child_process";
|
|
@@ -125,9 +125,8 @@ async function validateEmittedVarsViaSubprocess(input, env, spawn = defaultSpawn
|
|
|
125
125
|
}
|
|
126
126
|
/**
|
|
127
127
|
* Parse the child's framed result from the DEDICATED fd-3 channel. The whole buffer
|
|
128
|
-
* is the JSON result (nothing else writes to fd 3), so no sentinel scan is needed
|
|
129
|
-
*
|
|
130
|
-
* can never reach here. Returns undefined on a missing/unparseable/ill-shaped result
|
|
128
|
+
* is the JSON result (nothing else writes to fd 3), so no sentinel scan is needed:
|
|
129
|
+
* config/env.ts stdout noise lives on a different fd and can never reach here. Returns undefined on a missing/unparseable/ill-shaped result
|
|
131
130
|
* so the caller fails closed.
|
|
132
131
|
*/
|
|
133
132
|
function parseProbeResult(fd3) {
|
|
@@ -169,7 +168,7 @@ function emitResult(result) {
|
|
|
169
168
|
* facts. The import stays isolated because env.ts is arbitrary project code.
|
|
170
169
|
*/
|
|
171
170
|
async function runFactsChild(root) {
|
|
172
|
-
const { deriveSelfHostSchemaFacts, SelfHostSchemaError } = await import("../env-validation-
|
|
171
|
+
const { deriveSelfHostSchemaFacts, SelfHostSchemaError } = await import("../env-validation-CrVNjsPm.mjs");
|
|
173
172
|
try {
|
|
174
173
|
emitResult({
|
|
175
174
|
kind: "ok",
|
|
@@ -194,7 +193,7 @@ async function runFactsChild(root) {
|
|
|
194
193
|
* fault → fail closed as a values-free schema error.
|
|
195
194
|
*/
|
|
196
195
|
async function runValidateEmittedChild(root) {
|
|
197
|
-
const { computeInvalidEmittedKeys, readEmittedWorkerVars, SelfHostSchemaError } = await import("../env-validation-
|
|
196
|
+
const { computeInvalidEmittedKeys, readEmittedWorkerVars, SelfHostSchemaError } = await import("../env-validation-CrVNjsPm.mjs");
|
|
198
197
|
const emitted = readEmittedWorkerVars(root);
|
|
199
198
|
if (!emitted.ok) {
|
|
200
199
|
emitResult({
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { a as join } from "./dist-BVqXeR_h.mjs";
|
|
2
2
|
import { c as normalizePlatformApiUrl } from "./platform-registry-P387v42A.mjs";
|
|
3
3
|
import { t as cfAccessHeaders } from "./cf-access-TWNzXltp.mjs";
|
|
4
|
-
import { i as isCloudflareAccessChallenge, n as ensurePlatformAccessToken, t as ensureCloudflaredToken } from "./cf-access-
|
|
5
|
-
import { a as getApiUrl } from "./auth-
|
|
4
|
+
import { i as isCloudflareAccessChallenge, n as ensurePlatformAccessToken, t as ensureCloudflaredToken } from "./cf-access-ngGqZpHZ.mjs";
|
|
5
|
+
import { a as getApiUrl } from "./auth-B5_tZLxT.mjs";
|
|
6
6
|
import { n as getPackageDir } from "./agents-B_pX_HmQ.mjs";
|
|
7
7
|
import { n as readPlatformDiscoveryResponse } from "./platform-discovery-BC0HCKYt.mjs";
|
|
8
8
|
import { readFileSync } from "node:fs";
|
|
@@ -108,7 +108,7 @@ function readCliVersion() {
|
|
|
108
108
|
}
|
|
109
109
|
const VOID_CLI_VERSION = readCliVersion();
|
|
110
110
|
/** The oldest Void platform release this CLI supports. */
|
|
111
|
-
const MIN_PLATFORM_VERSION = "0.26.
|
|
111
|
+
const MIN_PLATFORM_VERSION = "0.26.1";
|
|
112
112
|
const RELEASE_VERSION = /^(\d+)\.(\d+)\.(\d+)(-[0-9A-Za-z.-]+)?(\+[0-9A-Za-z.-]+)?$/;
|
|
113
113
|
/**
|
|
114
114
|
* Version checks keyed by platform base URL. Every outcome (pass, inconclusive,
|
|
@@ -174,6 +174,20 @@ function isExpiredTokenError(error) {
|
|
|
174
174
|
if (error instanceof PlatformApiError) return error.status === 401 && error.code === "invalid or expired token";
|
|
175
175
|
return false;
|
|
176
176
|
}
|
|
177
|
+
/**
|
|
178
|
+
* True when `fetch` gave up waiting for response headers (undici's
|
|
179
|
+
* `HeadersTimeoutError`, 300 seconds by default). The request reached the
|
|
180
|
+
* server, which is still working on it.
|
|
181
|
+
*/
|
|
182
|
+
function isHeadersTimeoutError(error) {
|
|
183
|
+
let current = error;
|
|
184
|
+
for (let depth = 0; depth < 6 && current !== null && typeof current === "object"; depth++) {
|
|
185
|
+
const { code, name } = current;
|
|
186
|
+
if (code === "UND_ERR_HEADERS_TIMEOUT" || name === "HeadersTimeoutError") return true;
|
|
187
|
+
current = current.cause;
|
|
188
|
+
}
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
177
191
|
function isPreflightRejection(error) {
|
|
178
192
|
return error instanceof PlatformApiError && ([401, 403].includes(error.status) && !!parsePlatformErrorBody(error.body)?.error || isCliOutdatedError(error));
|
|
179
193
|
}
|
|
@@ -183,6 +197,10 @@ function isPreflightRejection(error) {
|
|
|
183
197
|
* - Only `fetch` rejections (`TypeError` — no HTTP response) are retried.
|
|
184
198
|
* A Response of any status means the server answered; surface it
|
|
185
199
|
* verbatim rather than replay a request it may have accepted.
|
|
200
|
+
* - A headers timeout is retried too. Every attempt sends the same
|
|
201
|
+
* idempotency key, so once an earlier request has created its deployment,
|
|
202
|
+
* a receipt-aware platform answers the retry with that deployment's
|
|
203
|
+
* receipt and the CLI follows it to the real result.
|
|
186
204
|
* - A rejected fetch does NOT prove the request never arrived — the
|
|
187
205
|
* connection may have dropped after delivery. Arbitration is left to
|
|
188
206
|
* the server's precheck, the only atomic (project-locked) verdict: if
|
|
@@ -415,7 +433,11 @@ var PlatformClient = class {
|
|
|
415
433
|
async listProjectMembers(projectId) {
|
|
416
434
|
const res = await this.request(`${this.baseUrl}/projects/${projectId}/members`, { headers: { ...this.authHeaders } });
|
|
417
435
|
if (!res.ok) await throwPlatformApiError("Failed to list project members", res, "read");
|
|
418
|
-
|
|
436
|
+
const body = await res.json();
|
|
437
|
+
return {
|
|
438
|
+
members: body.members,
|
|
439
|
+
...body.warnings ? { warnings: body.warnings } : {}
|
|
440
|
+
};
|
|
419
441
|
}
|
|
420
442
|
async listProjectInvitations(projectId) {
|
|
421
443
|
const res = await this.request(`${this.baseUrl}/projects/${projectId}/invitations`, { headers: { ...this.authHeaders } });
|
|
@@ -1039,7 +1061,7 @@ var PlatformClient = class {
|
|
|
1039
1061
|
}
|
|
1040
1062
|
/**
|
|
1041
1063
|
* Start the per-repo connect-authorization round-trip used by a non-owner org
|
|
1042
|
-
* member
|
|
1064
|
+
* member. The callback redirects back to `redirect`
|
|
1043
1065
|
* with either `?connect_grant=<signed>` (proof of per-repo access) or
|
|
1044
1066
|
* `?error=repo_not_accessible`. Mirrors {@link getGithubLinkUrl} but carries
|
|
1045
1067
|
* the installation + repo the grant is scoped to.
|
|
@@ -1243,4 +1265,4 @@ function sleep(ms) {
|
|
|
1243
1265
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
1244
1266
|
}
|
|
1245
1267
|
//#endregion
|
|
1246
|
-
export { isExpiredTokenError as a,
|
|
1268
|
+
export { isExpiredTokenError as a, parsePlatformErrorBody as c, isCliOutdatedError as i, platformErrorMessage as l, PlatformApiError as n, isHeadersTimeoutError as o, PlatformClient as r, readCliVersion as s, MIN_PLATFORM_VERSION as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i as writeUncapturedOperationOutput, l as resolveCloudflareOperationArgv, n as decodeCloudflareOperationResult, r as encodeCloudflareOperation } from "./cloudflare-process-2-TfIEzB.mjs";
|
|
2
2
|
import { execFile, spawn, spawnSync } from "node:child_process";
|
|
3
3
|
//#region src/cli/cloudflare-auth.ts
|
|
4
4
|
var CloudflareAuthenticationError = class extends Error {
|
|
@@ -76,7 +76,7 @@ function createBundledCloudflareAuthRunner(root) {
|
|
|
76
76
|
const [command, ...prefix] = resolveCloudflareOperationArgv(root);
|
|
77
77
|
return (operation, capture) => {
|
|
78
78
|
const args = encodeCloudflareOperation(operation);
|
|
79
|
-
const env =
|
|
79
|
+
const env = cloudflareAuthEnvironment();
|
|
80
80
|
const streaming = cloudflareAuthNeedsTerminal(operation);
|
|
81
81
|
const result = spawnSync(command, [...prefix, ...args], {
|
|
82
82
|
cwd: root,
|
|
@@ -101,10 +101,7 @@ function createBundledCloudflareAuthRunner(root) {
|
|
|
101
101
|
};
|
|
102
102
|
if (streaming) return raw;
|
|
103
103
|
const decoded = decodeCloudflareOperationResult(raw);
|
|
104
|
-
if (!capture)
|
|
105
|
-
if (decoded.stdout) process.stdout.write(decoded.stdout);
|
|
106
|
-
if (decoded.stderr) process.stderr.write(decoded.stderr);
|
|
107
|
-
}
|
|
104
|
+
if (!capture) writeUncapturedOperationOutput(decoded);
|
|
108
105
|
return decoded;
|
|
109
106
|
};
|
|
110
107
|
}
|
|
@@ -115,7 +112,7 @@ function runCloudflareAuthCommand(root, operation, signal) {
|
|
|
115
112
|
if (cloudflareAuthNeedsTerminal(operation)) return new Promise((resolve) => {
|
|
116
113
|
const child = spawn(command, [...prefix, ...args], {
|
|
117
114
|
cwd: root,
|
|
118
|
-
env:
|
|
115
|
+
env: cloudflareAuthEnvironment(),
|
|
119
116
|
shell: false,
|
|
120
117
|
signal,
|
|
121
118
|
stdio: "inherit",
|
|
@@ -143,7 +140,7 @@ function runCloudflareAuthCommand(root, operation, signal) {
|
|
|
143
140
|
execFile(command, [...prefix, ...args], {
|
|
144
141
|
cwd: root,
|
|
145
142
|
encoding: "utf8",
|
|
146
|
-
env:
|
|
143
|
+
env: cloudflareAuthEnvironment(),
|
|
147
144
|
maxBuffer: 10485760,
|
|
148
145
|
shell: false,
|
|
149
146
|
signal,
|
|
@@ -160,24 +157,19 @@ function runCloudflareAuthCommand(root, operation, signal) {
|
|
|
160
157
|
}).stdin?.end();
|
|
161
158
|
});
|
|
162
159
|
}
|
|
163
|
-
function cloudflareAuthCommandEnvironment(operation, source = process.env) {
|
|
164
|
-
return cloudflareAuthEnvironment(source);
|
|
165
|
-
}
|
|
166
160
|
/** Browser login must display cf's prompts before it completes. */
|
|
167
161
|
function cloudflareAuthNeedsTerminal(operation) {
|
|
168
162
|
return operation.type === "auth.login";
|
|
169
163
|
}
|
|
170
164
|
function cloudflareAuthEnvironment(source = process.env) {
|
|
171
165
|
const env = { ...source };
|
|
172
|
-
const
|
|
166
|
+
const scrubbedKeys = /* @__PURE__ */ new Set([
|
|
173
167
|
"WRANGLER_OUTPUT_FILE_DIRECTORY",
|
|
174
168
|
"WRANGLER_OUTPUT_FILE_PATH",
|
|
175
|
-
"WRANGLER_LOG_SANITIZE"
|
|
169
|
+
"WRANGLER_LOG_SANITIZE",
|
|
170
|
+
"CLOUDFLARE_AUTH_USE_KEYRING"
|
|
176
171
|
]);
|
|
177
|
-
for (const key of Object.keys(env))
|
|
178
|
-
if (/^VOID_PLATFORM_/i.test(key) || /^(?:DATABASE_URL|CF_ACCESS_CLIENT_ID|CF_ACCESS_CLIENT_SECRET|CF_ACCESS_TOKEN|VOID_ACCESS_CREDENTIALS|VOID_ACCESS_ORIGIN)$/i.test(key) || scrubbedWranglerKeys.has(key.toUpperCase())) delete env[key];
|
|
179
|
-
if (key.toUpperCase() === "CLOUDFLARE_AUTH_USE_KEYRING") delete env[key];
|
|
180
|
-
}
|
|
172
|
+
for (const key of Object.keys(env)) if (/^VOID_PLATFORM_/i.test(key) || /^(?:DATABASE_URL|CF_ACCESS_CLIENT_ID|CF_ACCESS_CLIENT_SECRET|CF_ACCESS_TOKEN|VOID_ACCESS_CREDENTIALS|VOID_ACCESS_ORIGIN)$/i.test(key) || scrubbedKeys.has(key.toUpperCase())) delete env[key];
|
|
181
173
|
env.CLOUDFLARE_AUTH_USE_KEYRING = "true";
|
|
182
174
|
return env;
|
|
183
175
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { t as basename } from "./dist-BVqXeR_h.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import { L as log } from "./
|
|
4
|
-
import {
|
|
2
|
+
import { b as readRootWranglerConfig } from "./wrangler-D9KTuqnv.mjs";
|
|
3
|
+
import { L as log } from "./dist-D3m88sjf.mjs";
|
|
4
|
+
import { d as printSuccess } from "./output-C50ag2r3.mjs";
|
|
5
|
+
import { a as parseCloudflareAuthSession, i as ensureCloudflareAuthentication, n as cloudflareCredentialOverrides, r as createBundledCloudflareAuthRunner } from "./cloudflare-auth-CuxfF6OA.mjs";
|
|
5
6
|
//#region src/cli/cloudflare-cmd.ts
|
|
6
7
|
async function runCloudflareCommand(root, args) {
|
|
7
8
|
const runWrangler = createBundledCloudflareAuthRunner(root);
|
|
@@ -11,7 +12,7 @@ async function runCloudflareCommand(root, args) {
|
|
|
11
12
|
runWrangler,
|
|
12
13
|
forceLogin: true
|
|
13
14
|
});
|
|
14
|
-
|
|
15
|
+
printSuccess("Successfully logged in to Cloudflare.");
|
|
15
16
|
return;
|
|
16
17
|
case "status": {
|
|
17
18
|
const result = await runWrangler({ type: "auth.whoami" }, true);
|
|
@@ -24,7 +25,7 @@ async function runCloudflareCommand(root, args) {
|
|
|
24
25
|
if ((await runWrangler({ type: "auth.logout" }, true)).status !== 0) throw new Error("Could not remove the local Cloudflare browser session.");
|
|
25
26
|
const overrides = cloudflareCredentialOverrides();
|
|
26
27
|
if (overrides.length > 0) log.warn(`Removed the local Cloudflare browser session. Environment credentials remain active: ${overrides.join(", ")}.`);
|
|
27
|
-
else
|
|
28
|
+
else printSuccess("Signed out of Cloudflare.");
|
|
28
29
|
return;
|
|
29
30
|
}
|
|
30
31
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as join } from "./dist-BVqXeR_h.mjs";
|
|
2
2
|
import "./project-paths-GgcMozYz.mjs";
|
|
3
|
-
import { m as readConfig } from "./config-
|
|
3
|
+
import { m as readConfig } from "./config-DiowPT80.mjs";
|
|
4
4
|
import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
|
|
5
5
|
import { randomUUID } from "node:crypto";
|
|
6
6
|
import { parse } from "jsonc-parser";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as join, t as basename } from "./dist-BVqXeR_h.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import { K as select, L as log, tt as isCancel } from "./
|
|
4
|
-
import { i as ensureCloudflareAuthentication, r as createBundledCloudflareAuthRunner } from "./cloudflare-auth-
|
|
2
|
+
import { b as readRootWranglerConfig, i as LATEST_KNOWN_COMPAT_DATE, j as writeProvisionedWranglerConfig } from "./wrangler-D9KTuqnv.mjs";
|
|
3
|
+
import { K as select, L as log, tt as isCancel } from "./dist-D3m88sjf.mjs";
|
|
4
|
+
import { i as ensureCloudflareAuthentication, r as createBundledCloudflareAuthRunner } from "./cloudflare-auth-CuxfF6OA.mjs";
|
|
5
5
|
import { existsSync } from "node:fs";
|
|
6
6
|
//#region src/cli/cloudflare-connect.ts
|
|
7
7
|
async function connectCloudflare(root, interactive = Boolean(process.stdin.isTTY)) {
|
|
@@ -49,7 +49,7 @@ async function connectCloudflare(root, interactive = Boolean(process.stdin.isTTY
|
|
|
49
49
|
compatibilityDate
|
|
50
50
|
}, existingConfigPath ? { configPath: existingConfigPath } : void 0);
|
|
51
51
|
log.info(`${basename(written.configPath)} is ready for Cloudflare deployment`);
|
|
52
|
-
log.
|
|
52
|
+
log.step(`Configured Cloudflare account: ${account.name}`);
|
|
53
53
|
return account;
|
|
54
54
|
}
|
|
55
55
|
//#endregion
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as resolveCloudflareD1Context, b as tailCloudflareWorker, c as listCloudflareDomains, g as readCloudflareWorkerStatus, h as readCloudflareD1Migrations, l as listCloudflareSecrets, m as putCloudflareSecret, n as applyCloudflareD1Migrations, o as deleteCloudflareSecret, r as changeCloudflareDomain, s as executeCloudflareD1Sql, t as activateCloudflareExistingVersion, v as resolveCloudflareOperationContext, y as syncCloudflareSecrets } from "./cloudflare-operations-
|
|
1
|
+
import { _ as resolveCloudflareD1Context, b as tailCloudflareWorker, c as listCloudflareDomains, g as readCloudflareWorkerStatus, h as readCloudflareD1Migrations, l as listCloudflareSecrets, m as putCloudflareSecret, n as applyCloudflareD1Migrations, o as deleteCloudflareSecret, r as changeCloudflareDomain, s as executeCloudflareD1Sql, t as activateCloudflareExistingVersion, v as resolveCloudflareOperationContext, y as syncCloudflareSecrets } from "./cloudflare-operations-CwI1bChl.mjs";
|
|
2
2
|
export { activateCloudflareExistingVersion, applyCloudflareD1Migrations, changeCloudflareDomain, deleteCloudflareSecret, executeCloudflareD1Sql, listCloudflareDomains, listCloudflareSecrets, putCloudflareSecret, readCloudflareD1Migrations, readCloudflareWorkerStatus, resolveCloudflareD1Context, resolveCloudflareOperationContext, syncCloudflareSecrets, tailCloudflareWorker };
|