void 0.26.1 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/{account-cmd-CfUXh_nU.mjs → account-cmd-Ci00cncT.mjs} +5 -5
- package/dist/{agents-B_pX_HmQ.mjs → agents-CuNtT0D_.mjs} +5 -2
- package/dist/{application-analysis-DKy02UY0.mjs → application-analysis-D72ZQfMZ.mjs} +118 -135
- package/dist/{application-routing-DQyUh_5S.mjs → application-routing-Dy589Vgn.mjs} +1 -2
- package/dist/atomic-write-Dq6R0BPN.mjs +18 -0
- package/dist/{auth-B5_tZLxT.mjs → auth-B6iOCjKI.mjs} +23 -56
- package/dist/{auth-link-D5RmKnzh.mjs → auth-link-DWr6Afao.mjs} +10 -10
- package/dist/{auth-migrations-BwHgeEsD.mjs → auth-migrations-Cgs0k6lS.mjs} +28 -5
- package/dist/{auth-router-Bap-pvbn.mjs → auth-router-DP14wVkZ.mjs} +4 -4
- package/dist/auth-wn6F8dB8.mjs +2 -0
- package/dist/base64-DVrOndmI.mjs +16 -0
- package/dist/{better-auth-shared-CPvWD3nG.d.mts → better-auth-shared-B74NJIus.d.mts} +8 -13
- package/dist/{better-auth-shared-DPpj8zxc.mjs → better-auth-shared-CMXlZG7W.mjs} +56 -68
- package/dist/{build-cmd-B58c8iS8.mjs → build-cmd-Cr3FJxv0.mjs} +5 -5
- package/dist/{cache-Bo52trKF.mjs → cache-D0Tt28cn.mjs} +5 -5
- package/dist/{cancel-deploy-BZNz3Q26.mjs → cancel-deploy-CJKvk7AN.mjs} +4 -4
- package/dist/{cf-access-TWNzXltp.mjs → cf-access-BM9G0lhO.mjs} +4 -3
- package/dist/{cf-access-ngGqZpHZ.mjs → cf-access-CWP4avfP.mjs} +3 -7
- package/dist/cf-build-output-2u583yJK.mjs +2 -0
- package/dist/{cf-build-output-DjvB_872.mjs → cf-build-output-Bc8i3dzE.mjs} +2 -2
- package/dist/cf-user-agent-ChjQp2MU.mjs +33 -0
- package/dist/cli/cli.mjs +198 -311
- package/dist/cli/cloudflare-operation-process.mjs +46 -14
- package/dist/cli/env-schema-probe.d.mts +5 -43
- package/dist/cli/env-schema-probe.mjs +14 -80
- package/dist/client-C1BjRn3g.mjs +2 -0
- package/dist/{client-C2Prx_Bi.mjs → client-DM9Kcf4e.mjs} +161 -415
- package/dist/{cloudflare-auth-CuxfF6OA.mjs → cloudflare-auth-CqFBDo52.mjs} +12 -39
- package/dist/{cloudflare-cmd-lHqNlJGW.mjs → cloudflare-cmd-CTrn-lXJ.mjs} +6 -5
- package/dist/{cloudflare-config-BmhBv3HV.mjs → cloudflare-config-DV60XFFK.mjs} +16 -28
- package/dist/{cloudflare-connect-2G3rL2rP.mjs → cloudflare-connect-BosmCNlq.mjs} +3 -3
- package/dist/{cloudflare-operations-CwI1bChl.mjs → cloudflare-operations-BKdSfNBN.mjs} +26 -34
- package/dist/{cloudflare-operations-BlYLlowZ.mjs → cloudflare-operations-Ds-lX3Ts.mjs} +1 -1
- package/dist/{cloudflare-process-2-TfIEzB.mjs → cloudflare-process-CeDWJRhj.mjs} +12 -7
- package/dist/collect-NUlJMpLY.mjs +2 -0
- package/dist/{collect-DiTn9yr6.mjs → collect-xjffdCdk.mjs} +1 -1
- package/dist/{config-CSa15FvD.d.mts → config-7qoq2p9v.d.mts} +2 -2
- package/dist/{config-CLYAosnQ.mjs → config-BEm9vRvS.mjs} +11 -5
- package/dist/{config-DiowPT80.mjs → config-Bx_1SpnO.mjs} +87 -177
- package/dist/config-CNnrSMYm.mjs +2 -0
- package/dist/{config-DPByhVck.mjs → config-D0GY5ItR.mjs} +1 -1
- package/dist/config-entry.d.mts +1 -1
- package/dist/{connect-X0MUA1gk.mjs → connect-nukQSoEO.mjs} +8 -8
- package/dist/{create-project-DxiyW6iX.mjs → create-project-D4APeBwX.mjs} +7 -7
- package/dist/{create-project-iwkbqiBU.mjs → create-project-DL7YXpjj.mjs} +1 -1
- package/dist/{db-XnVMHzoV.mjs → db-27RztQLy.mjs} +173 -263
- package/dist/{delete-esYlMiSJ.mjs → delete-BbsZFZIw.mjs} +5 -5
- package/dist/deploy-B06EQq4t.mjs +6009 -0
- package/dist/deploy-Db2ALnQP.mjs +3 -0
- package/dist/deploy-managed-static-CGswbcay.mjs +2277 -0
- package/dist/deploy-transport-BiicfoQW.mjs +180 -0
- package/dist/deploy.d.mts +10 -0
- package/dist/deploy.mjs +82 -0
- package/dist/dev-inbox-Rd6j_8vM.mjs +217 -0
- package/dist/discover-CTUiSsfG.mjs +2 -0
- package/dist/{discover-CkCYv9T_.mjs → discover-D2PGT63u.mjs} +2 -2
- package/dist/{dist-BVqXeR_h.mjs → dist-ipQi0Q8y.mjs} +2 -3
- package/dist/{domain-CbbBWhWE.mjs → domain-Bfq9n03H.mjs} +7 -22
- package/dist/{dotenv-BfU6eqFt.mjs → dotenv-CNazY3-w.mjs} +4 -16
- package/dist/{email-d_Aux1vM.mjs → email-BcjSyAL0.mjs} +4 -20
- package/dist/{email-CpuT42g7.mjs → email-DIwaQU4P.mjs} +99 -191
- package/dist/email-cloudflare-CH053RxK.mjs +1096 -0
- package/dist/email-protocol-D9nTvhCp.mjs +82 -0
- package/dist/{entry-CMAkqBmU.mjs → entry-ehmBvs5w.mjs} +2 -2
- package/dist/{env-BxocywBB.mjs → env-BJjULvL0.mjs} +2 -2
- package/dist/{env-DMA3cXZt.mjs → env-BhdWMrNy.mjs} +2 -13
- package/dist/{env-w9jOyGZn.mjs → env-C6ipBLp3.mjs} +8 -8
- package/dist/{env-public-DR7ZM6d-.d.mts → env-public-CCdykygU.d.mts} +6 -23
- package/dist/{env-raw-jZpP5n47.mjs → env-raw-Cklzcde3.mjs} +3 -20
- package/dist/{env-types-CwXgeMgL.mjs → env-types-DS2_y4X8.mjs} +2 -2
- package/dist/{env-validation-CrVNjsPm.mjs → env-validation-CTn-HhG1.mjs} +1 -1
- package/dist/env-validation-cE0zcmzO.mjs +486 -0
- package/dist/{gen-DtkQhvQg.mjs → gen-CnN1Xidx.mjs} +131 -253
- package/dist/gen-F8pSZnhc.mjs +2 -0
- package/dist/{generate-GDbL7sUr.mjs → generate-Dat0UTry.mjs} +38 -4
- package/dist/generate-Rii9klHB.mjs +2 -0
- package/dist/generated-wrangler-config-DeWj5F9Y.mjs +18 -0
- package/dist/{github-cmd-D_FsOFxq.mjs → github-cmd-BdkU4Nhe.mjs} +27 -71
- package/dist/{handler-BHAn2fZJ.mjs → handler-BZ1t7-Rv.mjs} +2 -2
- package/dist/{handler-CNAwjRcW.d.mts → handler-_PqY82xe.d.mts} +1 -1
- package/dist/{headers-DlfR78Nu.mjs → headers-Di1FsD3e.mjs} +26 -81
- package/dist/{help-CVFBTmBx.mjs → help-Bug7pyK_.mjs} +18 -10
- package/dist/help-s9q7LTcu.mjs +2 -0
- package/dist/{inbound-PfQDLXc5.mjs → inbound-DmkTQeWp.mjs} +71 -222
- package/dist/{inbound-CH5Mksyy.d.mts → inbound-brj2-TM5.d.mts} +19 -58
- package/dist/index.d.mts +2 -18
- package/dist/index.mjs +200 -496
- package/dist/{info-PYWwkWyt.mjs → info-CujPwtMe.mjs} +5 -5
- package/dist/{init-Bw-fRKGp.mjs → init-ZWOJvc-Z.mjs} +179 -388
- package/dist/isr-config-DPjXM8J2.mjs +194 -0
- package/dist/{link-DlPG8iX3.mjs → link-UEc7bnF4.mjs} +8 -8
- package/dist/{list-2GN7_ueV.mjs → list-CuWeOnzk.mjs} +6 -17
- package/dist/{live-CgQuTpqD.mjs → live-BxLX-JqJ.mjs} +19 -17
- package/dist/{live-Du8jXwOW.d.mts → live-DJONVlQK.d.mts} +1 -1
- package/dist/load-user-env-DD5qveNU.mjs +49 -0
- package/dist/{local-d1-ga5O_idV.mjs → local-d1-BM3p74mm.mjs} +6 -6
- package/dist/{login-D-Q4xw3Q.mjs → login-CZ2Cqa-D.mjs} +11 -11
- package/dist/login-DhK7o1oJ.mjs +2 -0
- package/dist/{logs-rd8J-OFh.mjs → logs-TihRcLTk.mjs} +5 -5
- package/dist/migrate-BgT-hmu8.mjs +2 -0
- package/dist/{migrate-NLsjBbuM.mjs → migrate-uFwojusJ.mjs} +69 -21
- package/dist/migration-handler-Cg0Y4EPu.mjs +470 -0
- package/dist/{migration-handler-DM4clYj5.d.mts → migration-handler-CwlEQUoo.d.mts} +17 -26
- package/dist/{mime-DxCznlJq.mjs → mime-srOklVVv.mjs} +92 -395
- package/dist/{node-DJicPvPj.mjs → node-DoKbo1SZ.mjs} +8 -24
- package/dist/{operator-args-BNsW5gfp.mjs → operator-args-UnE8Y2eK.mjs} +27 -26
- package/dist/{operator-auth-AzVLbrr3.mjs → operator-auth-Cr2zCc-J.mjs} +2 -2
- package/dist/{operator-client-BQtzyG-g.mjs → operator-client-C-ROjk1I.mjs} +4 -4
- package/dist/{operator-cmd-B6f6Cg9Z.mjs → operator-cmd-C5lCctnc.mjs} +8 -8
- package/dist/operator-cmd-Cjk5DiRx.mjs +2 -0
- package/dist/{output-C50ag2r3.mjs → output-FNHKw5Ac.mjs} +36 -5
- package/dist/{package-json-DXfiT1jV.mjs → package-json-BjYqR-So.mjs} +1 -1
- package/dist/pages/client.d.mts +1 -1
- package/dist/pages/client.mjs +91 -5
- package/dist/pages/index.d.mts +1 -2
- package/dist/pages/index.mjs +6 -6
- package/dist/pages/islands-plugin.mjs +5 -83
- package/dist/pages/protocol.d.mts +2 -2
- package/dist/pages/protocol.mjs +1 -1
- package/dist/pages/serialize.mjs +1 -1
- package/dist/{platform-args-BoZkWQnJ.mjs → platform-args-C6Mb_I3a.mjs} +34 -58
- package/dist/platform-args-Cm7x-fot.mjs +2 -0
- package/dist/{platform-auth-config-n603OANg.mjs → platform-auth-config-CJmNkFT2.mjs} +10 -11
- package/dist/{platform-auth-protection-zxDr0hWW.mjs → platform-auth-protection-D5wvsI-Y.mjs} +36 -26
- package/dist/{platform-auth-recovery-tw9lgtgE.mjs → platform-auth-recovery-D_0I3n-1.mjs} +8 -9
- package/dist/{platform-cmd-C00YM14r.mjs → platform-cmd-Cuj4oUVo.mjs} +1 -1
- package/dist/{platform-cmd-B8-bCb7t.mjs → platform-cmd-DxxZO6e5.mjs} +17 -16
- package/dist/{platform-discovery-BC0HCKYt.mjs → platform-discovery-CHhNs8Nn.mjs} +1 -1
- package/dist/{platform-domain-p0kobLV8.mjs → platform-domain-zLXnW1G_.mjs} +5 -5
- package/dist/{platform-lifecycle-D_QEY32D.mjs → platform-lifecycle-DOW-wLfx.mjs} +1398 -2043
- package/dist/{platform-lifecycle-vFqtNPPa.mjs → platform-lifecycle-_gfnjUBr.mjs} +1 -1
- package/dist/{platform-management-oi-SvI3f.mjs → platform-management-CYrLvTGH.mjs} +1 -1
- package/dist/{platform-management-BdYblvvE.mjs → platform-management-t7HKy4-U.mjs} +632 -124
- package/dist/{platform-plans-config-CjiFv5J4.mjs → platform-plans-config-CNH6zbPX.mjs} +15 -11
- package/dist/{platform-recovery-PvNS9Nl2.mjs → platform-recovery-DeucI7A9.mjs} +6 -9
- package/dist/{platform-registry-P387v42A.mjs → platform-registry-B9mWX9LO.mjs} +18 -19
- package/dist/{platform-setup-DVe42Ws7.mjs → platform-setup-CTf6MMT9.mjs} +19 -26
- package/dist/{plugin-inference-BlQbOL0P.mjs → plugin-inference-DsARdQKE.mjs} +18 -33
- package/dist/{prepare-Dq9hTIbo.mjs → prepare-C4zfwks4.mjs} +3 -3
- package/dist/{prepare-Do96654b.mjs → prepare-CSH9dKTI.mjs} +11 -13
- package/dist/prepare-dr9uxQSV.mjs +2 -0
- package/dist/{prerender-render-Ct20jftc.mjs → prerender-render-Bfsumdkv.mjs} +8 -2
- package/dist/prerender-render.d.mts +2 -0
- package/dist/prerender-render.mjs +2 -2
- package/dist/project-DiiOBZPF.mjs +2 -0
- package/dist/{project-cmd-ti8_yTcA.mjs → project-cmd-Dq75AXzy.mjs} +19 -19
- package/dist/{project-paths-GgcMozYz.mjs → project-paths-DMvEeSau.mjs} +9 -14
- package/dist/{project-DQstYTxO.mjs → project-rqDnVsJN.mjs} +8 -4
- package/dist/{project-team-CDPE1Tsg.mjs → project-team-B3_QcStG.mjs} +6 -6
- package/dist/{project-token-CkZ1cN0Z.mjs → project-token-CvsRvv2I.mjs} +5 -5
- package/dist/{project-tsconfig-CVJhNMxs.mjs → project-tsconfig-bveqhlYA.mjs} +3 -5
- package/dist/{project-zero-trust-DdjLR61k.mjs → project-zero-trust-D1ICiwN_.mjs} +5 -5
- package/dist/{protocol-BPZaNqBo.d.mts → protocol-4H7V_3Os.d.mts} +1 -1
- package/dist/{protocol-CfaUwNs8.mjs → protocol-RNP0u7UY.mjs} +9 -3
- package/dist/{provision-BfaLiWbj.mjs → provision-DDh7ITVS.mjs} +118 -865
- package/dist/{requests-DFAqyYy8.mjs → requests-3CL3BuZh.mjs} +4 -4
- package/dist/resolve-project-B9Hr0D3n.mjs +2 -0
- package/dist/resolve-project-C_Cu7E8a.mjs +48 -0
- package/dist/{rollback-BKYXBduI.mjs → rollback-Ce1d_0J9.mjs} +7 -17
- package/dist/{route-types-CbtsIeFn.mjs → route-types-IrBuwJ7u.mjs} +35 -70
- package/dist/routing-assets-VkrKIbxE.mjs +139 -0
- package/dist/{runner-9wjsSZx-.mjs → runner-B5huK2eC.mjs} +1 -1
- package/dist/{runner-DMBKSrRk.mjs → runner-DcVDrzuR.mjs} +7 -28
- package/dist/{runner-mysql-CEzKtmFb.mjs → runner-mysql-CCtyI0p6.mjs} +4 -3
- package/dist/runner-mysql-CaJq-hd6.mjs +2 -0
- package/dist/runner-pg-BJhFZZG4.mjs +2 -0
- package/dist/{runner-pg-DV8p_zjA.mjs → runner-pg-CPd-CB_F.mjs} +1 -1
- package/dist/runtime/ai.mjs +9 -22
- package/dist/runtime/better-auth-mysql.d.mts +2 -5
- package/dist/runtime/better-auth-mysql.mjs +6 -31
- package/dist/runtime/better-auth-pg.d.mts +2 -5
- package/dist/runtime/better-auth-pg.mjs +6 -32
- package/dist/runtime/better-auth.d.mts +2 -4
- package/dist/runtime/better-auth.mjs +9 -19
- package/dist/runtime/db.mjs +1 -1
- package/dist/runtime/durable.d.mts +16 -0
- package/dist/runtime/durable.mjs +26 -2
- package/dist/runtime/email/testing.d.mts +1 -1
- package/dist/runtime/email/testing.mjs +9 -23
- package/dist/runtime/email-protocol.d.mts +12 -0
- package/dist/runtime/email-protocol.mjs +2 -70
- package/dist/runtime/email.d.mts +1 -1
- package/dist/runtime/email.mjs +79 -221
- package/dist/runtime/env-public.d.mts +1 -1
- package/dist/runtime/env-public.mjs +12 -38
- package/dist/runtime/env.d.mts +1 -12
- package/dist/runtime/env.mjs +1 -1
- package/dist/runtime/handler.d.mts +1 -1
- package/dist/runtime/handler.mjs +1 -1
- package/dist/runtime/isr.mjs +1 -1
- package/dist/runtime/kv.mjs +1 -1
- package/dist/runtime/live-client.d.mts +1 -1
- package/dist/runtime/live-server.mjs +1 -16
- package/dist/runtime/live.d.mts +1 -1
- package/dist/runtime/live.mjs +1 -1
- package/dist/runtime/migration-handler-mysql.d.mts +2 -2
- package/dist/runtime/migration-handler-mysql.mjs +3 -2
- package/dist/runtime/migration-handler-pg.d.mts +2 -2
- package/dist/runtime/migration-handler-pg.mjs +1 -1
- package/dist/runtime/migration-handler.d.mts +2 -2
- package/dist/runtime/migration-handler.mjs +2 -470
- package/dist/runtime/queues.mjs +1 -1
- package/dist/runtime/remote/binding-handler.mjs +62 -62
- package/dist/runtime/remote/index.mjs +16 -77
- package/dist/runtime/routing.d.mts +1 -4
- package/dist/runtime/routing.mjs +82 -218
- package/dist/runtime/sandbox-container.d.mts +2 -2
- package/dist/runtime/sandbox-container.mjs +2 -2
- package/dist/runtime/sandbox.d.mts +2 -2
- package/dist/runtime/sandbox.mjs +13 -6
- package/dist/runtime/storage.mjs +1 -1
- package/dist/runtime/validator.d.mts +1 -1
- package/dist/runtime/ws-server.d.mts +2 -3
- package/dist/runtime/ws-server.mjs +6 -28
- package/dist/runtime/ws.d.mts +1 -1
- package/dist/{sandbox-container-Bo0eiFKz.d.mts → sandbox-container-ChQRum-j.d.mts} +3 -1
- package/dist/{sandbox-container-C6ItmVuN.mjs → sandbox-container-DBKIqDEK.mjs} +12 -1
- package/dist/{sandbox-C5LFoJMf.d.mts → sandbox-q3waMc2T.d.mts} +1 -1
- package/dist/{scan-C3uDzz6J.mjs → scan-C0BMdmEd.mjs} +84 -7
- package/dist/{secret-BAt2KMmO.mjs → secret-B5J8bBsI.mjs} +62 -80
- package/dist/{serialize-BPvnNQuA.mjs → serialize-BtQyaYoC.mjs} +10 -4
- package/dist/{skills-BgVMvQdy.mjs → skills-BJsan98C.mjs} +2 -2
- package/dist/{subcommand-prompt-BSlnD1fI.mjs → subcommand-prompt-gQ-NDA-u.mjs} +38 -43
- package/dist/sveltekit.mjs +1 -1
- package/dist/validate-C9xtFOYR.mjs +2 -0
- package/dist/{validate-C9qJArv7.mjs → validate-CheZGRE7.mjs} +4 -8
- package/dist/version-metadata-DIrqEHQo.mjs +73 -0
- package/dist/{wrangler-D9KTuqnv.mjs → wrangler-BYs07Rxy.mjs} +119 -378
- package/dist/{ws-CChrrAU-.d.mts → ws-aKVYB-fA.d.mts} +1 -1
- package/dist/yarn-pnp-DLbEFMT0.mjs +92 -0
- package/docs/guide/auth.md +2 -0
- package/docs/guide/database/postgresql.md +2 -0
- package/docs/guide/database.md +2 -0
- package/docs/guide/deployment.md +2 -2
- package/docs/guide/durable-state.md +24 -0
- package/docs/guide/platform/administration/access.md +5 -1
- package/docs/guide/platform/administration/connected-apps.md +55 -0
- package/docs/guide/platform/installation/credentials.md +3 -1
- package/docs/guide/platform/installation/first-deployment.md +1 -1
- package/docs/guide/project-collaboration.md +1 -1
- package/docs/guide/quickstart.md +2 -0
- package/docs/guide/sandboxes.md +2 -0
- package/docs/reference/api/deploy.md +23 -0
- package/docs/reference/api/pages.md +2 -0
- package/docs/reference/api.md +2 -1
- package/docs/reference/cli/auth.md +1 -1
- package/docs/reference/cli/database.md +9 -3
- package/docs/reference/cli/deploy.md +1 -1
- package/docs/reference/cli/platform-installation.md +1 -1
- package/docs/reference/cli/setup.md +2 -0
- package/package.json +14 -17
- package/skills/void/SKILL.md +4 -2
- package/dist/auth-BgX2qYSY.mjs +0 -2
- package/dist/cf-build-output-H9a97vME.mjs +0 -2
- package/dist/client-By4JjMw_.mjs +0 -2
- package/dist/collect-DLyFDiKW.mjs +0 -2
- package/dist/config-5r-YpMC-.mjs +0 -2
- package/dist/config-B_ggY-IO.mjs +0 -89
- package/dist/config-BtSFvXZx.mjs +0 -2
- package/dist/config-write-AHGesphx.mjs +0 -61
- package/dist/deploy-BsEvnlJl.mjs +0 -10455
- package/dist/deploy-C1d-YTfp.mjs +0 -2
- package/dist/dev-inbox-CK-UuPob.mjs +0 -297
- package/dist/discover-EDUf6JJw.mjs +0 -2
- package/dist/dist-_UUlL6bg.mjs +0 -2
- package/dist/env-validation-Dxdx_5wo.mjs +0 -951
- package/dist/gen-dA9hW7AV.mjs +0 -2
- package/dist/head-client-DzmJGN4C.mjs +0 -90
- package/dist/help-DzKUrQvk.mjs +0 -2
- package/dist/login-Dc-wuTDq.mjs +0 -2
- package/dist/migrate-BHp07yJE.mjs +0 -2
- package/dist/operator-cmd-Cwn50lOV.mjs +0 -2
- package/dist/pages/head-client.d.mts +0 -13
- package/dist/pages/head-client.mjs +0 -2
- package/dist/platform-args-DYgITk0D.mjs +0 -2
- package/dist/prepare-DRUV-g3X.mjs +0 -2
- package/dist/project-BiaPQ7ur.mjs +0 -2
- package/dist/provision-Wu9ZBk9L.mjs +0 -2
- package/dist/resolve-project-BIeYs9Cw.mjs +0 -2
- package/dist/resolve-project-CP8rZs_p.mjs +0 -28
- package/dist/runner-mysql-CkFqZ6CE.mjs +0 -2
- package/dist/runner-pg-BGYRFdRp.mjs +0 -2
- package/dist/runtime/env-helpers.d.mts +0 -2
- package/dist/runtime/env-helpers.mjs +0 -2
- package/dist/validate-BJr9LfXy.mjs +0 -2
- package/dist/yarn-pnp-CUX_iTPA.mjs +0 -188
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { r as readProjectConfig } from "./project-
|
|
2
|
-
import { c as getToken, n as createCodeChallenge, r as createCodeVerifier, t as awaitBrowserCallback, u as openBrowser } from "./auth-
|
|
1
|
+
import { r as readProjectConfig } from "./project-rqDnVsJN.mjs";
|
|
2
|
+
import { c as getToken, n as createCodeChallenge, r as createCodeVerifier, t as awaitBrowserCallback, u as openBrowser } from "./auth-B6iOCjKI.mjs";
|
|
3
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 {
|
|
5
|
-
import { c as
|
|
6
|
-
import {
|
|
4
|
+
import { f as import_picocolors, l as formatUrl, m as printSuccess } from "./output-FNHKw5Ac.mjs";
|
|
5
|
+
import { c as platformErrorMessage, n as PlatformApiError, r as PlatformClient, s as parsePlatformErrorBody } from "./client-DM9Kcf4e.mjs";
|
|
6
|
+
import { a as resolveProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project-C_Cu7E8a.mjs";
|
|
7
7
|
import { t as collectGitDeployMetadata } from "./git-metadata-D-gurjzG.mjs";
|
|
8
8
|
import { randomBytes } from "node:crypto";
|
|
9
9
|
//#region src/cli/github-cmd.ts
|
|
@@ -36,11 +36,8 @@ function describeConnectError(status, errorCode) {
|
|
|
36
36
|
return null;
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
|
-
* Like {@link describeConnectError}, but
|
|
40
|
-
*
|
|
41
|
-
* (the project has no GitHub connection, or it was disconnected between the
|
|
42
|
-
* read and the write) is the common case and gets a "connect first" message.
|
|
43
|
-
* Everything else defers to the shared connect mapping.
|
|
39
|
+
* Like {@link describeConnectError}, but maps a 404 "connection not found" to a
|
|
40
|
+
* "connect first" message.
|
|
44
41
|
*/
|
|
45
42
|
function describeUpdateError(status, errorCode) {
|
|
46
43
|
const code = errorCode ?? "";
|
|
@@ -82,10 +79,8 @@ function formatInstallations(installations) {
|
|
|
82
79
|
}).join("\n\n");
|
|
83
80
|
}
|
|
84
81
|
/**
|
|
85
|
-
* Render a GitHub connection
|
|
86
|
-
*
|
|
87
|
-
* github_actions builds (container builds never use it), so it is annotated as
|
|
88
|
-
* unused when the executor is container to avoid implying it is active.
|
|
82
|
+
* Render a GitHub connection for `void github status`. Container builds never
|
|
83
|
+
* read the workflow file, so it is marked unused for them.
|
|
89
84
|
*/
|
|
90
85
|
function formatConnection(connection) {
|
|
91
86
|
const row = (label, value) => ` ${label.padEnd(16)}${value}`;
|
|
@@ -116,15 +111,9 @@ async function runGithubCommand(root, args) {
|
|
|
116
111
|
}
|
|
117
112
|
}
|
|
118
113
|
/**
|
|
119
|
-
* `void github install
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
* the stable code `github_identity_required`. Rather than telling the
|
|
123
|
-
* user to `void account login` (which risks forking into a second account), we run
|
|
124
|
-
* the link flow inline and retry the install URL exactly once.
|
|
125
|
-
*
|
|
126
|
-
* `linkIdentity` is injectable so tests can supply a fake linker instead of
|
|
127
|
-
* starting a real localhost callback server / browser.
|
|
114
|
+
* `void github install`. Without a linked GitHub identity the server returns a
|
|
115
|
+
* 403 `github_identity_required`; link inline and retry once rather than send the
|
|
116
|
+
* user to `void account login`, which risks creating a second account.
|
|
128
117
|
*/
|
|
129
118
|
async function runInstall(client, linkIdentity = runGithubLink) {
|
|
130
119
|
let url;
|
|
@@ -145,18 +134,13 @@ async function runInstall(client, linkIdentity = runGithubLink) {
|
|
|
145
134
|
}
|
|
146
135
|
} else throw err;
|
|
147
136
|
}
|
|
148
|
-
log.message(`Open this URL to install the Void GitHub App:\n${import_picocolors.default.blue(url)}`);
|
|
149
|
-
|
|
150
|
-
openBrowser(url, execFile);
|
|
137
|
+
log.message(`Open this URL to install the Void GitHub App:\n${import_picocolors.default.blue(formatUrl(url))}`);
|
|
138
|
+
openBrowser(url);
|
|
151
139
|
log.message("After installing, run `void github connect` to link a repository to your project.");
|
|
152
140
|
}
|
|
153
141
|
/**
|
|
154
|
-
* Link the
|
|
155
|
-
*
|
|
156
|
-
* PKCE handshake, mirroring `void account login`.
|
|
157
|
-
*
|
|
158
|
-
* The success path is non-exiting so a caller (`github install` after a 403
|
|
159
|
-
* for a GitHub-less account) can continue; only error paths exit/throw.
|
|
142
|
+
* Link the logged-in Void account to a GitHub identity. Returns on success so
|
|
143
|
+
* `github install` can continue after linking.
|
|
160
144
|
*/
|
|
161
145
|
async function runGithubLink(client) {
|
|
162
146
|
const verifier = createCodeVerifier();
|
|
@@ -173,7 +157,7 @@ async function runGithubLink(client) {
|
|
|
173
157
|
return url;
|
|
174
158
|
},
|
|
175
159
|
describeError: (p) => p.get("error") ? "GitHub authorization failed." : null,
|
|
176
|
-
onUrl: (url) => log.message(`Open this URL to link your GitHub account:\n${import_picocolors.default.blue(url)}`),
|
|
160
|
+
onUrl: (url) => log.message(`Open this URL to link your GitHub account:\n${import_picocolors.default.blue(formatUrl(url))}`),
|
|
177
161
|
finalize: async (params) => {
|
|
178
162
|
const linkCode = params.get("link_code");
|
|
179
163
|
if (!linkCode) throw new Error("github: link callback did not return a link code.");
|
|
@@ -195,12 +179,8 @@ async function runGithubLink(client) {
|
|
|
195
179
|
else printSuccess("GitHub account linked.");
|
|
196
180
|
}
|
|
197
181
|
/**
|
|
198
|
-
*
|
|
199
|
-
*
|
|
200
|
-
* installations joined. Throws PlatformApiError — including the 503
|
|
201
|
-
* `github_oauth_not_configured` — so callers own the user-facing handling
|
|
202
|
-
* (`runGithubJoin` prints and exits; the connect auto-join fallback falls
|
|
203
|
-
* through to its install-first error).
|
|
182
|
+
* Join the caller to their organization's shared GitHub App installations and
|
|
183
|
+
* return how many were joined. Errors are left to the caller.
|
|
204
184
|
*/
|
|
205
185
|
async function performGithubJoin(client) {
|
|
206
186
|
const verifier = createCodeVerifier();
|
|
@@ -215,7 +195,7 @@ async function performGithubJoin(client) {
|
|
|
215
195
|
return url;
|
|
216
196
|
},
|
|
217
197
|
describeError: (p) => p.get("error") ? "GitHub authorization failed." : null,
|
|
218
|
-
onUrl: (url) => log.message(`Open this URL to join your organization's shared GitHub App installations:\n${import_picocolors.default.blue(url)}`),
|
|
198
|
+
onUrl: (url) => log.message(`Open this URL to join your organization's shared GitHub App installations:\n${import_picocolors.default.blue(formatUrl(url))}`),
|
|
219
199
|
finalize: async (params) => {
|
|
220
200
|
const joinCode = params.get("join_code");
|
|
221
201
|
if (!joinCode) throw new Error("github: join callback did not return a join code.");
|
|
@@ -250,20 +230,8 @@ async function runInstallations(client) {
|
|
|
250
230
|
log.message(formatInstallations(installations));
|
|
251
231
|
}
|
|
252
232
|
/**
|
|
253
|
-
* Per-repo
|
|
254
|
-
*
|
|
255
|
-
* When the connect route returns 403 `connect_authorization_required`,
|
|
256
|
-
* the member has no proof they can access the specific repo under the shared
|
|
257
|
-
* installation. This drives the same localhost + PKCE handshake as
|
|
258
|
-
* {@link runGithubLink}/{@link runGithubJoin}, but against the platform's
|
|
259
|
-
* connect-authorize route: the callback mints and returns the grant IN
|
|
260
|
-
* the redirect URL (`?connect_grant=…`), so there is no separate `/complete`
|
|
261
|
-
* POST — `finalize` just reads the grant out of the callback query. A
|
|
262
|
-
* `?error=repo_not_accessible` callback is mapped to a friendly per-repo message
|
|
263
|
-
* by `describeError`, which rejects out of the handshake (no grant, no retry).
|
|
264
|
-
*
|
|
265
|
-
* Returns the grant plus the PKCE verifier the caller must echo to the connect
|
|
266
|
-
* route so the platform can bind the grant to this exchange.
|
|
233
|
+
* Per-repo authorization for an org member who cannot yet prove repo access.
|
|
234
|
+
* The grant arrives in the callback URL; the caller sends it with the verifier.
|
|
267
235
|
*/
|
|
268
236
|
async function runGithubConnectAuthorize(client, installationId, repoFullName) {
|
|
269
237
|
const verifier = createCodeVerifier();
|
|
@@ -282,7 +250,7 @@ async function runGithubConnectAuthorize(client, installationId, repoFullName) {
|
|
|
282
250
|
if (e === "repo_not_accessible") return `You don't have access to ${repoFullName} under this installation on GitHub.`;
|
|
283
251
|
return e ? "GitHub authorization failed." : null;
|
|
284
252
|
},
|
|
285
|
-
onUrl: (url) => log.message(`Open this URL to authorize access to ${repoFullName}:\n${import_picocolors.default.blue(url)}`),
|
|
253
|
+
onUrl: (url) => log.message(`Open this URL to authorize access to ${repoFullName}:\n${import_picocolors.default.blue(formatUrl(url))}`),
|
|
286
254
|
finalize: async (params) => {
|
|
287
255
|
const grant = params.get("connect_grant");
|
|
288
256
|
if (!grant) throw new Error("github: connect authorization did not return a grant.");
|
|
@@ -639,18 +607,12 @@ async function runGithubUpdate(root, client, args) {
|
|
|
639
607
|
log.error(`update: ${message}`);
|
|
640
608
|
process.exit(1);
|
|
641
609
|
}
|
|
642
|
-
throw err;
|
|
643
610
|
}
|
|
644
611
|
throw err;
|
|
645
612
|
}
|
|
646
613
|
printSuccess(`Updated ${updated.repo_full_name} → branch ${updated.branch}, executor ${updated.build_executor}, workflow ${updated.workflow_path}.`);
|
|
647
614
|
}
|
|
648
|
-
/**
|
|
649
|
-
* `void github status [project]` — print the current GitHub connection (repo,
|
|
650
|
-
* branch, build executor, deploy workflow). Read-only; never mutates. Project
|
|
651
|
-
* resolution mirrors connect/update; a 404 means the project was never
|
|
652
|
-
* connected and points the user at `connect`.
|
|
653
|
-
*/
|
|
615
|
+
/** `void github status [project]`: print the project's GitHub connection. */
|
|
654
616
|
async function runStatus(root, client, args) {
|
|
655
617
|
const isTTY = process.stdin.isTTY === true;
|
|
656
618
|
const projectId = await resolveGithubProjectId(root, client, args.projectName, "status", isTTY);
|
|
@@ -670,12 +632,8 @@ async function runStatus(root, client, args) {
|
|
|
670
632
|
log.message(formatConnection(connection));
|
|
671
633
|
}
|
|
672
634
|
/**
|
|
673
|
-
* `void github disconnect [project]
|
|
674
|
-
*
|
|
675
|
-
* terminalizes any in-flight builds (revoking their deploy tokens) before
|
|
676
|
-
* dropping the connection row. Destructive, so a TTY run confirms first; --yes
|
|
677
|
-
* skips the prompt and is REQUIRED in a non-interactive shell. A project with no
|
|
678
|
-
* connection is already in the goal state — report it and exit 0.
|
|
635
|
+
* `void github disconnect [project]`. The server cancels in-flight builds before
|
|
636
|
+
* it removes the connection, so a TTY run confirms first.
|
|
679
637
|
*/
|
|
680
638
|
async function runGithubDisconnect(root, client, args) {
|
|
681
639
|
const isTTY = process.stdin.isTTY === true;
|
|
@@ -685,9 +643,7 @@ async function runGithubDisconnect(root, client, args) {
|
|
|
685
643
|
connection = await client.getGithubConnection(projectId);
|
|
686
644
|
} catch (err) {
|
|
687
645
|
if (err instanceof PlatformApiError) {
|
|
688
|
-
|
|
689
|
-
const code = body?.error ?? body?.message ?? "";
|
|
690
|
-
if (err.status === 404 && code.includes("connection not found")) {
|
|
646
|
+
if (err.status === 404 && err.code?.includes("connection not found")) {
|
|
691
647
|
log.info("This project is not connected to a GitHub repository. Nothing to disconnect.");
|
|
692
648
|
return;
|
|
693
649
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { t as base64ToBytes } from "./base64-DVrOndmI.mjs";
|
|
1
2
|
import { t as convertReturnValue } from "./response-Tn7rU0MV.mjs";
|
|
2
3
|
import { t as runValidation } from "./validator-BTOu0fB0.mjs";
|
|
3
4
|
//#region src/runtime/handler.ts
|
|
@@ -58,8 +59,7 @@ function parseBasicAuthHeader(authorization) {
|
|
|
58
59
|
if (!authorization?.toLowerCase().startsWith("basic ")) return null;
|
|
59
60
|
try {
|
|
60
61
|
const encoded = authorization.slice(6).trim();
|
|
61
|
-
const
|
|
62
|
-
const bytes = Uint8Array.from(binary, (char) => char.charCodeAt(0));
|
|
62
|
+
const bytes = base64ToBytes(encoded);
|
|
63
63
|
const decoded = basicAuthDecoder.decode(bytes);
|
|
64
64
|
const separator = decoded.indexOf(":");
|
|
65
65
|
if (separator === -1) return null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { l as VoidPlatformSandbox } from "./sandbox-
|
|
1
|
+
import { l as VoidPlatformSandbox } from "./sandbox-q3waMc2T.mjs";
|
|
2
2
|
import { t as StandardSchemaV1 } from "./standard-schema-Fo_vCAZh.mjs";
|
|
3
3
|
import { n as HeadDescriptor } from "./head-C8K_iGe6.mjs";
|
|
4
4
|
import { r as AuthUser, t as AuthSession } from "./auth-DkcFflXV.mjs";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as join } from "./dist-
|
|
2
|
-
import { a as
|
|
1
|
+
import { a as join } from "./dist-ipQi0Q8y.mjs";
|
|
2
|
+
import { a as convertRewritesConfig, i as convertRedirectsConfig, l as isProtocolRelative, n as convertFallbacksConfig, o as countSplats, r as convertHeadersConfig, t as VALID_REDIRECT_STATUSES, u as parseHostPrefixedSource } from "./config-Bx_1SpnO.mjs";
|
|
3
3
|
import { i as voidWarn } from "./log-vqY3pqwI.mjs";
|
|
4
4
|
import { existsSync, readFileSync } from "node:fs";
|
|
5
5
|
//#region src/cli/headers.ts
|
|
@@ -49,23 +49,14 @@ function parseHeadersFile(dir) {
|
|
|
49
49
|
return rules;
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
52
|
-
* Parse a `_redirects` file
|
|
52
|
+
* Parse a `_redirects` file: `source destination [status]` per line (status
|
|
53
|
+
* defaults to 302, `#` starts a comment). Keeps 3xx redirects and 200 rewrites.
|
|
53
54
|
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
* Force suffix (`!`) semantics:
|
|
58
|
-
* - On status 200: toggles `force: true` (Netlify-compat). The plain form
|
|
59
|
-
* fires only when the static asset would 404; the force form fires
|
|
60
|
-
* unconditionally, overriding any matching static asset.
|
|
61
|
-
* - On 3xx (301/302/307/308): silently stripped. A redirect always changes
|
|
62
|
-
* the URL, so `!` is redundant. We count these in `redundantForceOn3xx`
|
|
63
|
-
* so the deploy command can surface a single aggregated lint warning
|
|
64
|
-
* rather than one per line — Netlify users pasting their `_redirects`
|
|
65
|
-
* file shouldn't be punished for harmless cruft.
|
|
55
|
+
* A `!` suffix on 200 sets `force`, so the rewrite applies even when a static
|
|
56
|
+
* asset matches. On a 3xx it is a no-op, stripped and counted in
|
|
57
|
+
* `redundantForceOn3xx`.
|
|
66
58
|
*
|
|
67
59
|
* Returns `undefined` when the file doesn't exist or yields no valid rules.
|
|
68
|
-
* Otherwise returns `{rules, redundantForceOn3xx}`.
|
|
69
60
|
*/
|
|
70
61
|
function parseRedirectsFile(dir) {
|
|
71
62
|
const filePath = join(dir, "_redirects");
|
|
@@ -144,11 +135,8 @@ function parseRedirectsFile(dir) {
|
|
|
144
135
|
};
|
|
145
136
|
}
|
|
146
137
|
/**
|
|
147
|
-
* Split
|
|
148
|
-
*
|
|
149
|
-
* should only fire when the static asset resolver would 404. All other rules
|
|
150
|
-
* (3xx redirects and forced `200!` rewrites) stay in the "always" bucket and
|
|
151
|
-
* are merged with `routing.rewrites` / `routing.redirects` from void.json.
|
|
138
|
+
* Split `_redirects` rules into rules that always apply and fallbacks: unforced
|
|
139
|
+
* 200 rewrites, which apply only when no static asset matches.
|
|
152
140
|
*/
|
|
153
141
|
function splitRedirectRulesByForce(rules) {
|
|
154
142
|
const always = [];
|
|
@@ -165,33 +153,8 @@ function splitRedirectRulesByForce(rules) {
|
|
|
165
153
|
};
|
|
166
154
|
}
|
|
167
155
|
/**
|
|
168
|
-
* Merge
|
|
169
|
-
*
|
|
170
|
-
* plugin so both surfaces produce identical rule tables.
|
|
171
|
-
*
|
|
172
|
-
* Ordering for routing rules (redirects/rewrites/fallbacks): `void.json`
|
|
173
|
-
* rules first, then `_redirects` file rules. Because the router evaluates
|
|
174
|
-
* routing rules with first-match-wins semantics, `void.json` entries
|
|
175
|
-
* override `_redirects` entries for the same source — matching the
|
|
176
|
-
* documented precedence (`docs/guide/edge/rewrites.md`). This holds even
|
|
177
|
-
* though `_redirects` is conceptually "closer to the build output".
|
|
178
|
-
*
|
|
179
|
-
* Header rules use the inverse order — `_redirects`/`_headers` last —
|
|
180
|
-
* because header rules are last-match-wins (`_headers` is Netlify-style
|
|
181
|
-
* last-wins). The asymmetry is intentional and matches dispatch.
|
|
182
|
-
*
|
|
183
|
-
* Phase split:
|
|
184
|
-
* - `_redirects` `200!` (force) + 3xx entries → `redirectRules` (always-fire)
|
|
185
|
-
* - `_redirects` plain `200` entries → `fallbackRules` (asset-miss)
|
|
186
|
-
* - `routing.redirects` + `routing.rewrites` → `redirectRules`
|
|
187
|
-
* - `routing.fallbacks` → `fallbackRules`
|
|
188
|
-
*
|
|
189
|
-
* Returns `fallbackRules === undefined` when empty, meaning "no post-asset
|
|
190
|
-
* phase".
|
|
191
|
-
*
|
|
192
|
-
* Duplicate linting is NOT called here (callers decide which warning surface
|
|
193
|
-
* to use — CLI vs. Vite logger). `redundantForceOn3xx` is returned raw for
|
|
194
|
-
* the same reason.
|
|
156
|
+
* Merge `_redirects` and `_headers` in `dir` with `routing` from void.config.ts.
|
|
157
|
+
* Deploy and dev share it so both build the same rule tables; callers lint them.
|
|
195
158
|
*/
|
|
196
159
|
function mergeRoutingRules(opts) {
|
|
197
160
|
const { dir, routing } = opts;
|
|
@@ -218,20 +181,18 @@ function mergeRoutingRules(opts) {
|
|
|
218
181
|
};
|
|
219
182
|
}
|
|
220
183
|
/**
|
|
221
|
-
*
|
|
222
|
-
*
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
*
|
|
232
|
-
*
|
|
233
|
-
* Only reported once per rule — the count of `*` in the destination is
|
|
234
|
-
* irrelevant, a single occurrence is already suspicious.
|
|
184
|
+
* Lint each phase on its own: only duplicates within a phase shadow each other,
|
|
185
|
+
* so a redirect and a fallback with the same source are fine.
|
|
186
|
+
*/
|
|
187
|
+
function lintRoutingPhases(rules) {
|
|
188
|
+
lintDuplicateSources(rules.redirectRules, "redirects/rewrites (pre-asset)");
|
|
189
|
+
lintDuplicateSources(rules.fallbackRules, "fallbacks (post-asset)");
|
|
190
|
+
lintDestinationSplats(rules.redirectRules, "redirects/rewrites (pre-asset)");
|
|
191
|
+
lintDestinationSplats(rules.fallbackRules, "fallbacks (post-asset)");
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Warn about a literal `*` in a destination. Destinations substitute only
|
|
195
|
+
* `:name` params such as `:splat`, so a `*` passes through unchanged.
|
|
235
196
|
*/
|
|
236
197
|
function lintDestinationSplats(rules, phaseName) {
|
|
237
198
|
if (!rules || rules.length === 0) return;
|
|
@@ -241,24 +202,8 @@ function lintDestinationSplats(rules, phaseName) {
|
|
|
241
202
|
voidWarn(`destinations in ${phaseName} contain a literal "*" — splat tokens are not substituted in destinations; use ":splat" (or other named params) or rewrite the destination:\n${lines.join("\n")}`);
|
|
242
203
|
}
|
|
243
204
|
/**
|
|
244
|
-
* Warn when
|
|
245
|
-
*
|
|
246
|
-
*
|
|
247
|
-
* Sources are scoped to the phase: a pattern appearing once in redirects and
|
|
248
|
-
* once in fallbacks is *not* a collision, because those lists run in separate
|
|
249
|
-
* phases and don't shadow each other. Within a single phase the dispatcher
|
|
250
|
-
* uses first-match-wins semantics, so a duplicate silently hides the later
|
|
251
|
-
* entry. This lint never fails the deploy; it surfaces the collision so the
|
|
252
|
-
* user can decide whether to fix it.
|
|
253
|
-
*
|
|
254
|
-
* Only exact string duplicates are reported. Subset-shadow cases (e.g. `/*`
|
|
255
|
-
* overshadowing `/docs`) are out of scope — pattern-aware analysis would be
|
|
256
|
-
* both harder and noisier.
|
|
257
|
-
*
|
|
258
|
-
* Emits a single aggregated warning summarizing every duplicated source, each
|
|
259
|
-
* annotated with the `origin` of every occurrence (e.g. `_redirects:12` vs
|
|
260
|
-
* `void.json#routing.rewrites`). Aggregation avoids a wall of per-pair
|
|
261
|
-
* warnings on configs with many collisions.
|
|
205
|
+
* Warn when one phase repeats an exact `source`: first match wins, so the later
|
|
206
|
+
* rule never applies. Phases run separately, so callers lint each one.
|
|
262
207
|
*/
|
|
263
208
|
function lintDuplicateSources(rules, phaseName) {
|
|
264
209
|
if (!rules || rules.length < 2) return;
|
|
@@ -278,4 +223,4 @@ function lintDuplicateSources(rules, phaseName) {
|
|
|
278
223
|
voidWarn(`duplicate rule sources detected in ${phaseName} (first match wins — the earlier entry takes effect):\n${lines.join("\n")}`);
|
|
279
224
|
}
|
|
280
225
|
//#endregion
|
|
281
|
-
export {
|
|
226
|
+
export { mergeRoutingRules as n, parseRedirectsFile as r, lintRoutingPhases as t };
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import { a as join } from "./dist-BVqXeR_h.mjs";
|
|
2
1
|
import { H as outro } from "./dist-D3m88sjf.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import { n as
|
|
5
|
-
import { n as operatorGroups, t as operatorCommands } from "./operator-args-
|
|
6
|
-
import { readFileSync } from "node:fs";
|
|
2
|
+
import { d as helpLine, f as import_picocolors, g as sectionTitle, l as formatUrl, p as note, t as categoryTitle } from "./output-FNHKw5Ac.mjs";
|
|
3
|
+
import { n as getOwnVersion } from "./agents-CuNtT0D_.mjs";
|
|
4
|
+
import { n as operatorGroups, t as operatorCommands } from "./operator-args-UnE8Y2eK.mjs";
|
|
7
5
|
//#region src/cli/ascii.ts
|
|
8
6
|
const asciiArts = [
|
|
9
7
|
`
|
|
@@ -80,9 +78,9 @@ function operatorHelpTree() {
|
|
|
80
78
|
command: `--${flag} <value>`,
|
|
81
79
|
description
|
|
82
80
|
})),
|
|
83
|
-
...(entry.booleans ??
|
|
81
|
+
...Object.entries(entry.booleans ?? {}).map(([flag, description]) => ({
|
|
84
82
|
command: `--${flag}`,
|
|
85
|
-
description
|
|
83
|
+
description
|
|
86
84
|
}))
|
|
87
85
|
]
|
|
88
86
|
}]))
|
|
@@ -1417,13 +1415,23 @@ const HELP_TREE = {
|
|
|
1417
1415
|
push: basicSubcommand("Push schema to local D1 without migration files.", "void db push"),
|
|
1418
1416
|
generate: basicSubcommand("Generate SQL migrations from schema changes.", "void db generate"),
|
|
1419
1417
|
status: basicSubcommand("Show migration status for local and remote DBs.", "void db status"),
|
|
1420
|
-
reset:
|
|
1418
|
+
reset: {
|
|
1419
|
+
summary: "Reset local DB and re-run migrations.",
|
|
1420
|
+
usage: ["void db reset [options]"],
|
|
1421
|
+
options: [{
|
|
1422
|
+
command: "--yes",
|
|
1423
|
+
description: "Skip the prompt for a non-local PostgreSQL/MySQL database"
|
|
1424
|
+
}]
|
|
1425
|
+
},
|
|
1421
1426
|
seed: {
|
|
1422
1427
|
summary: "Reset local DB, run migrations, and seed data.",
|
|
1423
1428
|
usage: ["void db seed [options]"],
|
|
1424
1429
|
options: [{
|
|
1425
1430
|
command: "--file <path>",
|
|
1426
1431
|
description: "Seed from a specific file"
|
|
1432
|
+
}, {
|
|
1433
|
+
command: "--yes",
|
|
1434
|
+
description: "Skip the prompt for a non-local PostgreSQL/MySQL database"
|
|
1427
1435
|
}]
|
|
1428
1436
|
},
|
|
1429
1437
|
execute: {
|
|
@@ -1756,10 +1764,10 @@ function printGlobalHelp() {
|
|
|
1756
1764
|
helpLine("void <command> --help", "Show command-specific help")
|
|
1757
1765
|
].join("\n"), sectionTitle("Commands"));
|
|
1758
1766
|
note([helpLine("VOID_TOKEN", "Auth token (or use `void account login`)"), helpLine("VOID_PROJECT", "Deploy target project name override")].join("\n"), sectionTitle("Environment"));
|
|
1759
|
-
outro("https://void.cloud");
|
|
1767
|
+
outro(formatUrl("https://void.cloud"));
|
|
1760
1768
|
}
|
|
1761
1769
|
function printVoidHeader() {
|
|
1762
|
-
const version =
|
|
1770
|
+
const version = getOwnVersion();
|
|
1763
1771
|
const art = asciiArts[Math.floor(Math.random() * asciiArts.length)];
|
|
1764
1772
|
console.log(import_picocolors.default.blue(`${art} v${version}\n`));
|
|
1765
1773
|
}
|