void 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/{account-cmd-HP8bixYo.mjs → account-cmd-DRhmCWcm.mjs} +7 -8
- package/dist/{action-key-XZ9HkWAO.mjs → action-key-XtKKbbsi.mjs} +1 -2
- package/dist/{agents-CuNtT0D_.mjs → agents-DRo8gzni.mjs} +2 -3
- package/dist/{application-analysis-DDOQwiXk.mjs → application-analysis-HRFsZOv3.mjs} +18 -24
- package/dist/{application-routing-4719u_kf.mjs → application-routing-P4TggvWp.mjs} +2 -3
- package/dist/{ast-CsZ_q_gc.mjs → ast-Cv0JwXqb.mjs} +1 -2
- package/dist/{ast-bindings-C3yaPs1y.mjs → ast-bindings-BkivMJIo.mjs} +6 -11
- package/dist/{atomic-write-Dq6R0BPN.mjs → atomic-write-DA6eD1Kp.mjs} +1 -2
- package/dist/{auth-g2TQbDLD.d.mts → auth-CH4PLAX1.d.mts} +0 -2
- package/dist/{auth-Cbqi1iVX.mjs → auth-CL-p_rqV.mjs} +1 -1
- package/dist/{auth-B6iOCjKI.mjs → auth-Dy8svcqQ.mjs} +6 -7
- package/dist/{auth-3sGB0zJ1.mjs → auth-YVjBX5NY.mjs} +1 -2
- package/dist/{auth-client-Bawdj38n.d.mts → auth-client-6-Ft9i9T.d.mts} +0 -2
- package/dist/{auth-client-BWBT8HLp.mjs → auth-client-DwCdwKbw.mjs} +1 -2
- package/dist/{auth-client-react-CMLwT2xI.mjs → auth-client-react-CJdeErvM.mjs} +1 -2
- package/dist/{auth-client-react-7GFffu8R.d.mts → auth-client-react-DvQLe5Zb.d.mts} +0 -2
- package/dist/{auth-client-solid-UoreJWZG.mjs → auth-client-solid-BRvgvp6h.mjs} +1 -2
- package/dist/{auth-client-solid-DyTFL4cq.d.mts → auth-client-solid-P9pEtKGp.d.mts} +0 -2
- package/dist/{auth-client-svelte-zetW0KIH.d.mts → auth-client-svelte-B5j8irT6.d.mts} +0 -2
- package/dist/{auth-client-svelte-Cv_WvrRk.mjs → auth-client-svelte-BSqUCEed.mjs} +1 -2
- package/dist/{auth-client-vue-bChShbQP.d.mts → auth-client-vue-BEiAfavk.d.mts} +0 -2
- package/dist/{auth-client-vue-CFk7Xbv3.mjs → auth-client-vue-CPkbRtOO.mjs} +1 -2
- package/dist/{auth-link-CedYpDCy.mjs → auth-link-CVXP1G6G.mjs} +7 -8
- package/dist/{auth-migrations-BO27GDNr.mjs → auth-migrations-DDeifS3v.mjs} +1 -2
- package/dist/{auth-router-vafo7x8w.mjs → auth-router-D1pGdbvB.mjs} +6 -7
- package/dist/{base64-DVrOndmI.mjs → base64-ikl9yBy3.mjs} +1 -2
- package/dist/{better-auth-shared-BHB8kiTE.d.mts → better-auth-shared-BJyG2mH0.d.mts} +2 -6
- package/dist/{better-auth-shared-7FM3Uk2N.mjs → better-auth-shared-C958aM7W.mjs} +31 -7
- package/dist/{build-cmd-9vUAQ1_V.mjs → build-cmd-DmjbuT6d.mjs} +7 -8
- package/dist/{cache-jvwLNb0h.mjs → cache-2khBO1MR.mjs} +7 -8
- package/dist/{cancel-deploy-Dw0UmWKO.mjs → cancel-deploy-_itbbvY3.mjs} +6 -7
- package/dist/{cf-access-CWP4avfP.mjs → cf-access-BmBT2h8_.mjs} +3 -4
- package/dist/{cf-access-BM9G0lhO.mjs → cf-access-pejlJmuy.mjs} +1 -2
- package/dist/{cf-build-output-XpNR9zoh.mjs → cf-build-output-B1C8U83u.mjs} +41 -314
- package/dist/cf-build-output-CmDOcA7K.mjs +1 -0
- package/dist/{cf-command-values-ByHk0xg4.mjs → cf-command-values-Ccl-zRhl.mjs} +10 -7
- package/dist/cf-config-migrate-Dy8MrKgF.mjs +326 -0
- package/dist/{cf-worker-settings-Dg27RzyT.mjs → cf-worker-settings-CARs4Wy9.mjs} +3 -5
- package/dist/cli/cli.mjs +66 -76
- package/dist/cli/cloudflare-operation-process.mjs +14 -18
- package/dist/cli/env-schema-probe.d.mts +1 -5
- package/dist/cli/env-schema-probe.mjs +4 -5
- package/dist/client-CEtr5UOR.mjs +1 -0
- package/dist/{client-B3LnB_bE.mjs → client-CoxPEhJq.mjs} +15 -13
- package/dist/{cloudflare-auth-DyD_kVFr.mjs → cloudflare-auth-CEu-1Ps_.mjs} +2 -3
- package/dist/{cloudflare-cmd-D-b_u3T4.mjs → cloudflare-cmd-fZ6AMSWk.mjs} +7 -8
- package/dist/{cloudflare-config-CH1AylZT.mjs → cloudflare-config-eQunqX6A.mjs} +22 -17
- package/dist/{cloudflare-connect-zTJh8UnN.mjs → cloudflare-connect-9OZe4XVQ.mjs} +5 -6
- package/dist/{cloudflare-operations-Bc-7fN44.mjs → cloudflare-operations-CrskD4_O.mjs} +8 -9
- package/dist/{cloudflare-operations-BtulCNOg.mjs → cloudflare-operations-oLvAd9Nd.mjs} +1 -1
- package/dist/{cloudflare-process-8jEYIeim.mjs → cloudflare-process-DjJ638A-.mjs} +7 -9
- package/dist/{cloudflare-user-output-Q-k0QoNQ.mjs → cloudflare-user-output-zEwuGrEJ.mjs} +1 -2
- package/dist/collect-8i0wU63d.mjs +1 -0
- package/dist/{collect-Dew86qce.mjs → collect-C6Blu9yw.mjs} +2 -3
- package/dist/{config-tqMM6DwY.mjs → config-BBlVXZCU.mjs} +5 -6
- package/dist/{config-OFOAimzt.mjs → config-BITKQ3O6.mjs} +5 -5
- package/dist/{config-BV2ASlpn.mjs → config-BgysUhnm.mjs} +1 -1
- package/dist/{config-CAdZVTLN.d.mts → config-CPxJmt4M.d.mts} +4 -6
- package/dist/{config-D-6q7EBH.mjs → config-WlvEcL82.mjs} +3 -4
- package/dist/config-entry.d.mts +1 -3
- package/dist/config-entry.mjs +1 -2
- package/dist/{connect-BOM6zvFX.mjs → connect-CKvmkl2R.mjs} +10 -11
- package/dist/{create-project-C2K0DN2O.mjs → create-project-BiMmR5wA.mjs} +1 -1
- package/dist/{create-project-Bxd02EHN.mjs → create-project-Bq0M8MtO.mjs} +9 -11
- package/dist/{database-provider-Cx525bwX.mjs → database-provider-DkZo4VwN.mjs} +1 -2
- package/dist/database-provider.d.mts +1 -3
- package/dist/database-provider.mjs +1 -1
- package/dist/{db-Cdvr3zwG.mjs → db-cq5RW4Vy.mjs} +52 -54
- package/dist/{db-types-0eCiqYb1.mjs → db-types-C_8amnB0.mjs} +3 -4
- package/dist/{delete-lETE6Tpt.mjs → delete-CY4L8fi2.mjs} +7 -8
- package/dist/deploy-B029oHlE.mjs +2 -0
- package/dist/{deploy-CdM-LAxX.mjs → deploy-D_gEojD2.mjs} +144 -136
- package/dist/{deploy-managed-static-DjeBFG2c.mjs → deploy-managed-static-BHVbB_-A.mjs} +33 -40
- package/dist/{deploy-transport-DIq_gFTP.mjs → deploy-transport-DEyOUfac.mjs} +6 -7
- package/dist/deploy.d.mts +1 -3
- package/dist/deploy.mjs +11 -11
- package/dist/{dev-inbox-D0jxye_D.mjs → dev-inbox-CUUS6iUg.mjs} +3 -4
- package/dist/discover-D4mQthao.mjs +1 -0
- package/dist/{discover-LaV0tbIu.mjs → discover-Dhkzxgdt.mjs} +3 -4
- package/dist/{dispatch-CLa2LThw.mjs → dispatch-BNLB5_Gm.mjs} +12 -15
- package/dist/{dist-Cegxq8gs.mjs → dist-B6eN80gc.mjs} +199 -118
- package/dist/{dist-D15hFhP0.mjs → dist-BWNkVq50.mjs} +8 -15
- package/dist/{dist-Cor9XGoz.mjs → dist-D23AAMxT.mjs} +9 -16
- package/dist/{dist-ipQi0Q8y.mjs → dist-DMYe8CZJ.mjs} +1 -2
- package/dist/{dist-B1PLt4_8.mjs → dist-eV_Ep60B.mjs} +1 -1
- package/dist/{domain-DyhNtdYf.mjs → domain-BlH90Ods.mjs} +8 -9
- package/dist/{dotenv-CNazY3-w.mjs → dotenv-CEI8hapP.mjs} +1 -2
- package/dist/{drizzle-9TubSZvI.mjs → drizzle-C8MPqt5m.mjs} +1 -1
- package/dist/{drizzle-BQfyvQKX.mjs → drizzle-lFdzSEa9.mjs} +2 -3
- package/dist/{email-B9ayYQEG.mjs → email-BHY72ixO.mjs} +3 -4
- package/dist/{email-DM2wDcBN.mjs → email-Bkq8ZL1p.mjs} +14 -15
- package/dist/{email-cloudflare-PMbAev9Q.mjs → email-cloudflare-MvJIxrwx.mjs} +18 -123
- package/dist/{email-protocol-D9nTvhCp.mjs → email-protocol-DTs_TjCS.mjs} +1 -2
- package/dist/{entry-BEM8ZuGP.mjs → entry-CBZsCy3O.mjs} +5 -6
- package/dist/{env-78hbN-oI.mjs → env-AvuCSeCH.mjs} +10 -11
- package/dist/{env-BaMz0j7H.mjs → env-CuzZZyjB.mjs} +3 -4
- package/dist/{env-0jrMQJI_.mjs → env-DtKg5G26.mjs} +2 -3
- package/dist/{env-helpers--wFmQ_5Q.mjs → env-helpers-Dj_SIwPu.mjs} +1 -2
- package/dist/{env-helpers-CyKtOBpj.d.mts → env-helpers-U56xuFgL.d.mts} +1 -3
- package/dist/{env-public-6lqiSD2b.d.mts → env-public-CeNeO_AT.d.mts} +2 -4
- package/dist/{env-raw-D74P4ebM.mjs → env-raw-e8qgqAzQ.mjs} +1 -2
- package/dist/{env-types-BicfKBhV.mjs → env-types-DqzVBKnS.mjs} +4 -5
- package/dist/{env-validation-BUfFZ6bt.mjs → env-validation-C8Cmvas0.mjs} +1 -1
- package/dist/{env-validation-B3VobvXm.mjs → env-validation-GV1oD4EV.mjs} +9 -10
- package/dist/{error-pages-CLIJ7aYq.mjs → error-pages-COVBnzK7.mjs} +6 -12
- package/dist/{fetch-CUX0tB78.d.mts → fetch-B-gLGYVl.d.mts} +0 -4
- package/dist/{fetch-CtESUYWd.mjs → fetch-C8yhLoF3.mjs} +3 -4
- package/dist/{fetch-error-Bw0n-IY-.mjs → fetch-error-DmlRM6e4.mjs} +2 -4
- package/dist/{fetch-stream-BspOeTAI.mjs → fetch-stream-DafNtVJC.mjs} +4 -5
- package/dist/{fetch-stream-DfkAzZf-.d.mts → fetch-stream-DuwxWmBM.d.mts} +1 -3
- package/dist/{gen-CFmsUsW1.mjs → gen-BD-dfjxY.mjs} +12 -13
- package/dist/gen-CIHXh9I8.mjs +1 -0
- package/dist/{generate-DkEb9rL-.mjs → generate-BOp1g1H_.mjs} +1 -1
- package/dist/{generate-B1m4Cm4n.mjs → generate-CWb8aOsm.mjs} +4 -5
- package/dist/{generated-wrangler-config-DeWj5F9Y.mjs → generated-wrangler-config-CoDaaFsA.mjs} +1 -2
- package/dist/{git-metadata-D-gurjzG.mjs → git-metadata-Cukp5kV5.mjs} +1 -2
- package/dist/{github-cmd-De-_IWbM.mjs → github-cmd-CA-lBdkn.mjs} +8 -9
- package/dist/{handler-BHktmuTL.d.mts → handler-BR6Tvjkp.d.mts} +18 -26
- package/dist/{handler-BZ1t7-Rv.mjs → handler-CKeTtYID.mjs} +6 -17
- package/dist/{head-D2VF4ApL.mjs → head-5XPcnG-j.mjs} +1 -2
- package/dist/{head-C8K_iGe6.d.mts → head-MeF_5M_3.d.mts} +0 -2
- package/dist/headers-CuTEdP9C.mjs +445 -0
- package/dist/{help-CKbrhZha.mjs → help-1OCFDsRr.mjs} +28 -12
- package/dist/help-Ba8Dq5-r.mjs +1 -0
- package/dist/{inbound-Da7XsjH3.d.mts → inbound-BHt4dIlL.d.mts} +16 -9
- package/dist/{inbound-VrOLqwZY.mjs → inbound-CdO-qY0w.mjs} +6 -81
- package/dist/index.d.mts +23 -13
- package/dist/index.mjs +495 -223
- package/dist/{info-Yg0-V5Rs.mjs → info-CJxua_db.mjs} +6 -7
- package/dist/{init-CDiJQycf.mjs → init-B-4CluYx.mjs} +43 -59
- package/dist/{isr-config-fZaJJ8t7.mjs → isr-config-Czzb4mIq.mjs} +5 -55
- package/dist/{limits-D0vD1M9A.mjs → limits-CrHLm5Tk.mjs} +1 -2
- package/dist/{limits-CFsDKQvU.d.mts → limits-_xIf5z_P.d.mts} +0 -2
- package/dist/{link-Dllip08S.mjs → link-DAXOT-G_.mjs} +8 -9
- package/dist/{list-BYRP6am0.mjs → list-BYSOo9fm.mjs} +8 -9
- package/dist/{live-BllfDuzA.d.mts → live-0xrcVpyq.d.mts} +2 -4
- package/dist/{live-BcHoTDFe.mjs → live-DF4HUl2m.mjs} +5 -7
- package/dist/{load-user-env-DD5qveNU.mjs → load-user-env-CSwdofj0.mjs} +1 -2
- package/dist/{local-d1-CAwAs9GH.mjs → local-d1-BLgsNUj9.mjs} +4 -5
- package/dist/{log-BMwmN5Ae.mjs → log-D9hwSySP.mjs} +3 -4
- package/dist/login-BpbYeu-n.mjs +1 -0
- package/dist/{login-PcFy5mlC.mjs → login-CJopTWX4.mjs} +6 -7
- package/dist/{logs-DmJTBhed.mjs → logs-DE0weBsR.mjs} +19 -18
- package/dist/{migrate-B8S2xTcb.mjs → migrate-ChHHZBTi.mjs} +20 -16
- package/dist/migrate-HdA6Kh2p.mjs +1 -0
- package/dist/{migration-handler-CwlEQUoo.d.mts → migration-handler-D8mDx3Ew.d.mts} +0 -4
- package/dist/{migration-handler-Cg0Y4EPu.mjs → migration-handler-DCehTlWs.mjs} +1 -2
- package/dist/{mime-BAyHPskU.mjs → mime-CtP6-qAF.mjs} +145 -18
- package/dist/{mysql-migration-sql-BIS5vbNk.mjs → mysql-migration-sql-CI9VTwjt.mjs} +3 -5
- package/dist/{neon-DTZr7Bu7.mjs → neon-CJzQSycr.mjs} +2 -3
- package/dist/nitro.d.mts +0 -2
- package/dist/nitro.mjs +5 -6
- package/dist/{node-CDOPrGSl.mjs → node-CZ6lGNLn.mjs} +8 -9
- package/dist/{operator-args-BsJIYXaT.mjs → operator-args-D79WQP70.mjs} +2 -3
- package/dist/{operator-auth-Cr2zCc-J.mjs → operator-auth-CfDcmzpo.mjs} +2 -3
- package/dist/{operator-client-C-ROjk1I.mjs → operator-client-BIY4-N_6.mjs} +3 -4
- package/dist/{operator-cmd-DmkmS2wL.mjs → operator-cmd-BUqsdk2K.mjs} +32 -15
- package/dist/operator-cmd-wBYyp8iQ.mjs +1 -0
- package/dist/{output-BpgYODYx.mjs → output-BCdLioKP.mjs} +4 -5
- package/dist/output-E6gecbbV.mjs +1 -0
- package/dist/{package-json-BjYqR-So.mjs → package-json-DvS6IFRv.mjs} +2 -3
- package/dist/pages/client.d.mts +147 -31
- package/dist/pages/client.mjs +199 -43
- package/dist/pages/head.d.mts +1 -1
- package/dist/pages/head.mjs +1 -1
- package/dist/pages/index.d.mts +25 -18
- package/dist/pages/index.mjs +24 -12
- package/dist/pages/islands-plugin.d.mts +75 -13
- package/dist/pages/islands-plugin.mjs +92 -7
- package/dist/pages/prefetch.d.mts +2 -2
- package/dist/pages/prefetch.mjs +1 -1
- package/dist/pages/protocol.d.mts +2 -2
- package/dist/pages/protocol.mjs +2 -2
- package/dist/pages/serialize.d.mts +1 -1
- package/dist/pages/serialize.mjs +1 -1
- package/dist/{pg-J2HbZIkX.mjs → pg-DoyPxa_X.mjs} +1 -2
- package/dist/{picocolors-BsDfhxIw.mjs → picocolors-D1NxSLw-.mjs} +2 -3
- package/dist/{plan-BhLO2p4w.mjs → plan-BOD70XGS.mjs} +1 -2
- package/dist/plan-CQ-N4gws.mjs +1 -0
- package/dist/platform-args-C7XUw9mw.mjs +1 -0
- package/dist/{platform-args-BMD2gjc_.mjs → platform-args-Cx1M-7bq.mjs} +22 -11
- package/dist/{platform-auth-config-CImnfohz.mjs → platform-auth-config-K4m_LE8b.mjs} +10 -11
- package/dist/{platform-auth-protection-BogLhtHi.mjs → platform-auth-protection-KF5Vo-1I.mjs} +10 -11
- package/dist/{platform-auth-recovery-B-mEaWEi.mjs → platform-auth-recovery-BOdFrl7R.mjs} +9 -11
- package/dist/{platform-cmd-CV8NxIIn.mjs → platform-cmd-DpCHawGF.mjs} +1 -1
- package/dist/{platform-cmd-DZK2ixMl.mjs → platform-cmd-Ds3EAV5t.mjs} +13 -13
- package/dist/{platform-discovery-CHhNs8Nn.mjs → platform-discovery-B0eZjZ3B.mjs} +2 -3
- package/dist/{platform-domain-CRvelPGE.mjs → platform-domain-rWJshybd.mjs} +7 -8
- package/dist/{platform-lifecycle-DwXq7kZt.mjs → platform-lifecycle-BH34I0rh.mjs} +1 -1
- package/dist/{platform-lifecycle-CPYY7E9B.mjs → platform-lifecycle-D9RdGub1.mjs} +110 -110
- package/dist/{platform-management-BOnGbMSM.mjs → platform-management-BRefdHGD.mjs} +27 -11
- package/dist/{platform-management-lXdgGgAM.mjs → platform-management-BfLW0Zlo.mjs} +1 -1
- package/dist/{platform-plans-config-CeydDSj0.mjs → platform-plans-config-Dx1agneU.mjs} +5 -6
- package/dist/{platform-recovery-noaALXnE.mjs → platform-recovery-DZuZGJtt.mjs} +5 -6
- package/dist/{platform-registry-B9mWX9LO.mjs → platform-registry-DZ_2Xuqd.mjs} +4 -6
- package/dist/platform-runtime-logs-CdJGnk3f.mjs +68 -0
- package/dist/{platform-setup-Ca53gtt0.mjs → platform-setup-Vw1AaUN8.mjs} +19 -7
- package/dist/{plugin-inference-CeiB6BG5.mjs → plugin-inference-CdLbxZL_.mjs} +16 -24
- package/dist/{prefetch-Bsc_Pb6c.mjs → prefetch-Dx2jIbtg.mjs} +20 -3
- package/dist/{prefetch-Ce6la4EI.d.mts → prefetch-NdNeubbH.d.mts} +7 -3
- package/dist/{prepare-D604Yiyr.mjs → prepare-BJW-f1f1.mjs} +13 -14
- package/dist/{prepare-BuOS18AM.mjs → prepare-BMGeKL16.mjs} +4 -5
- package/dist/prepare-BdxJJCMv.mjs +1 -0
- package/dist/{prerender-render-CaShbHJ3.mjs → prerender-render-RlAj6hh8.mjs} +2 -3
- package/dist/prerender-render.d.mts +1 -3
- package/dist/prerender-render.mjs +1 -1
- package/dist/{project-rqDnVsJN.mjs → project-CLwxcEdq.mjs} +3 -4
- package/dist/{project-zdB3fs9G.mjs → project-DVsTAWFh.mjs} +1 -1
- package/dist/{project-cmd-DBYqAIbe.mjs → project-cmd-B_bUyZ3J.mjs} +21 -23
- package/dist/{project-paths-DGu_QZ_Q.mjs → project-paths-CdGv9Tmi.mjs} +3 -5
- package/dist/project-slug-BUy0lmyR.mjs +1 -0
- package/dist/{project-slug-23TpquG4.mjs → project-slug-CO6ci9XG.mjs} +0 -1
- package/dist/{project-team-BjCLgTRC.mjs → project-team-MjT5K4rQ.mjs} +7 -8
- package/dist/{project-token-BB6PwaA9.mjs → project-token-BKHGwY3k.mjs} +7 -8
- package/dist/{project-tsconfig-CVvk6Z_e.mjs → project-tsconfig-Cf2NFjlM.mjs} +4 -6
- package/dist/{project-zero-trust-CWDh1P_t.mjs → project-zero-trust-Bzdd05-h.mjs} +7 -8
- package/dist/{protocol-DimNxVRr.mjs → protocol-COyySMki.mjs} +135 -113
- package/dist/{protocol-D5XDySYu.d.mts → protocol-CkwjASep.d.mts} +4 -6
- package/dist/{providers-BNKRacMr.d.mts → providers-D5P8j_8D.d.mts} +0 -2
- package/dist/{providers-BUHwJlmM.mjs → providers-ZARwX2cL.mjs} +1 -2
- package/dist/{provision-DztLJ97X.mjs → provision-BbCzpbXs.mjs} +6 -7
- package/dist/{provision-DfxLCg-d.mjs → provision-DQF6Kw-6.mjs} +1 -1
- package/dist/{queues-BWKt1Xo4.d.mts → queues-DdM42xXW.d.mts} +0 -2
- package/dist/{r2-conditions-B8xUgJRc.mjs → r2-conditions-BqkQNt2n.mjs} +1 -2
- package/dist/{requests-D_pbzDyz.mjs → requests-daJmVpjk.mjs} +6 -7
- package/dist/resolve-project-CgfjtOwz.mjs +1 -0
- package/dist/{resolve-project-Xoi6eTWY.mjs → resolve-project-D0YNnJfm.mjs} +4 -5
- package/dist/{resource-name-C7LVpcRm.mjs → resource-name-DlJ9QXzg.mjs} +1 -2
- package/dist/{response-Tn7rU0MV.mjs → response-HmNjB30w.mjs} +1 -2
- package/dist/{rollback-CjfIYsJx.mjs → rollback-BgL0wY1J.mjs} +7 -8
- package/dist/{rolldown-runtime-3h0WiCiA.mjs → rolldown-runtime-uD8oG6U2.mjs} +1 -2
- package/dist/{route-types-DvEGmPif.mjs → route-types-CZc1YXjF.mjs} +80 -9
- package/dist/route-url-CRDF-I0I.mjs +57 -0
- package/dist/route-url-C_YIH_zO.d.mts +37 -0
- package/dist/routes-stub.d.mts +8 -3
- package/dist/routes-stub.mjs +1 -1
- package/dist/{routing-assets-DdSFxoLp.mjs → routing-assets-DJIVOrCh.mjs} +1 -2
- package/dist/{runner-3uGC-oLF.mjs → runner-5MCSimKx.mjs} +5 -6
- package/dist/{runner-WCdfeI0q.mjs → runner-QMeOpScZ.mjs} +1 -1
- package/dist/{runner-mysql-BcHnLUuM.mjs → runner-mysql-0zVmB1JW.mjs} +1 -1
- package/dist/{runner-mysql-BWmbk5IE.mjs → runner-mysql-Bdmsp_x4.mjs} +3 -4
- package/dist/{runner-pg-Cgp-cr_p.mjs → runner-pg-2pjltt0t.mjs} +1 -1
- package/dist/{runner-pg-Cr3qrqi4.mjs → runner-pg-mYc75KfH.mjs} +2 -3
- package/dist/runtime/ai.d.mts +0 -4
- package/dist/runtime/ai.mjs +6 -8
- package/dist/runtime/auth-client-react.d.mts +1 -1
- package/dist/runtime/auth-client-react.mjs +1 -1
- package/dist/runtime/auth-client-solid.d.mts +1 -1
- package/dist/runtime/auth-client-solid.mjs +1 -1
- package/dist/runtime/auth-client-svelte.d.mts +1 -1
- package/dist/runtime/auth-client-svelte.mjs +1 -1
- package/dist/runtime/auth-client-vue.d.mts +1 -1
- package/dist/runtime/auth-client-vue.mjs +1 -1
- package/dist/runtime/auth-client.d.mts +1 -1
- package/dist/runtime/auth-client.mjs +1 -1
- package/dist/runtime/auth.d.mts +1 -1
- package/dist/runtime/auth.mjs +1 -1
- package/dist/runtime/better-auth-mysql.d.mts +2 -4
- package/dist/runtime/better-auth-mysql.mjs +3 -4
- package/dist/runtime/better-auth-pg.d.mts +2 -4
- package/dist/runtime/better-auth-pg.mjs +4 -5
- package/dist/runtime/better-auth.d.mts +2 -4
- package/dist/runtime/better-auth.mjs +3 -4
- package/dist/runtime/client-react.d.mts +4 -4
- package/dist/runtime/client-react.mjs +4 -4
- package/dist/runtime/client-solid.d.mts +4 -4
- package/dist/runtime/client-solid.mjs +4 -4
- package/dist/runtime/client-svelte.d.mts +4 -4
- package/dist/runtime/client-svelte.mjs +4 -4
- package/dist/runtime/client-vue.d.mts +4 -4
- package/dist/runtime/client-vue.mjs +4 -4
- package/dist/runtime/client.d.mts +4 -4
- package/dist/runtime/client.mjs +4 -4
- package/dist/runtime/db.d.mts +0 -2
- package/dist/runtime/db.mjs +2 -3
- package/dist/runtime/durable.d.mts +0 -2
- package/dist/runtime/durable.mjs +3 -4
- package/dist/runtime/email/testing.d.mts +1 -5
- package/dist/runtime/email/testing.mjs +5 -6
- package/dist/runtime/email-protocol.d.mts +0 -2
- package/dist/runtime/email-protocol.mjs +1 -1
- package/dist/runtime/email.d.mts +1 -5
- package/dist/runtime/email.mjs +6 -7
- package/dist/runtime/env-public-client.d.mts +1 -3
- package/dist/runtime/env-public-client.mjs +2 -3
- package/dist/runtime/env-public.d.mts +2 -2
- package/dist/runtime/env-public.mjs +5 -7
- package/dist/runtime/env.d.mts +0 -4
- package/dist/runtime/env.mjs +1 -1
- package/dist/runtime/fetch-server.d.mts +1 -3
- package/dist/runtime/fetch-server.mjs +3 -4
- package/dist/runtime/fetch-stream.d.mts +2 -2
- package/dist/runtime/fetch-stream.mjs +2 -2
- package/dist/runtime/fetch.d.mts +1 -1
- package/dist/runtime/fetch.mjs +2 -2
- package/dist/runtime/handler.d.mts +1 -1
- package/dist/runtime/handler.mjs +2 -2
- package/dist/runtime/isr.d.mts +1 -3
- package/dist/runtime/isr.mjs +2 -3
- package/dist/runtime/kv.d.mts +1 -3
- package/dist/runtime/kv.mjs +2 -3
- package/dist/runtime/limits.d.mts +1 -1
- package/dist/runtime/limits.mjs +1 -1
- package/dist/runtime/live-client.d.mts +1 -3
- package/dist/runtime/live-client.mjs +1 -2
- package/dist/runtime/live-server.d.mts +0 -2
- package/dist/runtime/live-server.mjs +3 -4
- package/dist/runtime/live.d.mts +1 -1
- package/dist/runtime/live.mjs +1 -1
- package/dist/runtime/log.d.mts +3 -3
- package/dist/runtime/log.mjs +26 -18
- package/dist/runtime/migration-handler-mysql.d.mts +2 -4
- package/dist/runtime/migration-handler-mysql.mjs +2 -3
- package/dist/runtime/migration-handler-pg.d.mts +2 -4
- package/dist/runtime/migration-handler-pg.mjs +2 -3
- package/dist/runtime/migration-handler.d.mts +1 -1
- package/dist/runtime/migration-handler.mjs +1 -1
- package/dist/runtime/queues.d.mts +1 -1
- package/dist/runtime/queues.mjs +2 -3
- package/dist/runtime/remote/binding-handler.d.mts +1 -3
- package/dist/runtime/remote/binding-handler.mjs +3 -4
- package/dist/runtime/remote/index.d.mts +1 -3
- package/dist/runtime/remote/index.mjs +8 -13
- package/dist/runtime/response.d.mts +1 -3
- package/dist/runtime/response.mjs +1 -1
- package/dist/runtime/route-url.d.mts +2 -2
- package/dist/runtime/route-url.mjs +1 -1
- package/dist/runtime/routing.d.mts +8 -11
- package/dist/runtime/routing.mjs +52 -32
- package/dist/runtime/sandbox-container.d.mts +1 -1
- package/dist/runtime/sandbox-container.mjs +1 -1
- package/dist/runtime/sandbox.d.mts +2 -2
- package/dist/runtime/sandbox.mjs +5 -6
- package/dist/runtime/seed.d.mts +0 -2
- package/dist/runtime/seed.mjs +1 -2
- package/dist/runtime/sse-client.d.mts +1 -3
- package/dist/runtime/sse-client.mjs +1 -2
- package/dist/runtime/sse.d.mts +1 -3
- package/dist/runtime/sse.mjs +1 -1
- package/dist/runtime/storage.d.mts +1 -3
- package/dist/runtime/storage.mjs +2 -3
- package/dist/runtime/validator.d.mts +1 -1
- package/dist/runtime/validator.mjs +1 -1
- package/dist/runtime/ws-server.d.mts +3 -5
- package/dist/runtime/ws-server.mjs +3 -4
- package/dist/runtime/ws.d.mts +1 -1
- package/dist/runtime/ws.mjs +3 -4
- package/dist/{sandbox-q3waMc2T.d.mts → sandbox-DE1WsxuB.d.mts} +2 -4
- package/dist/{sandbox-container-a9LRUtii.mjs → sandbox-container-BuxhwCgt.mjs} +1 -2
- package/dist/{sandbox-container-ChQRum-j.d.mts → sandbox-container-CZFZdMso.d.mts} +0 -2
- package/dist/{scan-N9WzdcAl.mjs → scan-X2rDDRNa.mjs} +49 -35
- package/dist/{secret-3X0PxmuX.mjs → secret-CPq-B_vp.mjs} +17 -15
- package/dist/{serialize-YHvlcG3Q.mjs → serialize-DUuYuaY3.mjs} +2 -4
- package/dist/{serialize-DtR8Vwa_.d.mts → serialize-I4EmS-Wf.d.mts} +0 -2
- package/dist/{skills-CrUO3PJ0.mjs → skills-D393E4lB.mjs} +4 -5
- package/dist/{sqlite-validation-BzKMWnO4.mjs → sqlite-validation-CLJXXN93.mjs} +1 -2
- package/dist/{sse-CMvCgjNk.mjs → sse-CxR30yMF.mjs} +1 -2
- package/dist/{standard-schema-Fo_vCAZh.d.mts → standard-schema-CuDawHOC.d.mts} +0 -2
- package/dist/{static-asset-marker-Btf-6oCD.mjs → static-asset-marker-DsQKz6lt.mjs} +9 -3
- package/dist/{subcommand-prompt-D9OhhbGG.mjs → subcommand-prompt-CxJXporl.mjs} +3 -4
- package/dist/sveltekit.d.mts +0 -2
- package/dist/sveltekit.mjs +2 -3
- package/dist/{terminal-log-text-D9ACPOuG.mjs → terminal-log-text-DNsWJREL.mjs} +1 -2
- package/dist/{types-w72dljaA.d.mts → types-agfx0alu.d.mts} +0 -4
- package/dist/validate-DY1U9rET.mjs +1 -0
- package/dist/{validate-CnZPMq4q.mjs → validate-Ddzl-IwT.mjs} +4 -5
- package/dist/validation-error-uAAjlsiW.mjs +82 -0
- package/dist/{validator-BTOu0fB0.mjs → validator-CTfmzZYb.mjs} +2 -5
- package/dist/{version-metadata-D2vfMQzv.mjs → version-metadata-C8hLzQkv.mjs} +4 -6
- package/dist/{worker-conditions-AWFRcFxR.mjs → worker-conditions-CBZ0RYsZ.mjs} +1 -2
- package/dist/{wrangler-I-scB_1t.mjs → wrangler-DESSbN8L.mjs} +6 -8
- package/dist/wrangler-DUB3MGHV.mjs +1 -0
- package/dist/{wrapper-BBl1rC32.mjs → wrapper-C9SUxoj7.mjs} +17 -14
- package/dist/{ws-B3ClMVDh.d.mts → ws-Dmjg5NH2.d.mts} +3 -5
- package/dist/{yarn-pnp-DLbEFMT0.mjs → yarn-pnp-DgWbE7z5.mjs} +2 -3
- package/docs/guide/database.md +4 -4
- package/docs/guide/deployment.md +1 -1
- package/docs/guide/edge/headers.md +4 -6
- package/docs/guide/edge/redirects.md +4 -4
- package/docs/guide/edge/rewrites.md +1 -1
- package/docs/guide/edge/static-assets.md +0 -10
- package/docs/guide/email/domains.md +3 -1
- package/docs/guide/email/receiving.md +4 -4
- package/docs/guide/email/sending.md +43 -13
- package/docs/guide/pages-routing/actions-and-forms.md +26 -9
- package/docs/guide/pages-routing/islands.md +5 -5
- package/docs/guide/pages-routing/layouts.md +16 -2
- package/docs/guide/pages-routing/loaders.md +5 -5
- package/docs/guide/pages-routing/markdown.md +7 -7
- package/docs/guide/pages-routing/overview.md +137 -27
- package/docs/guide/platform/administration/connected-apps.md +4 -2
- package/docs/guide/platform/administration/email.md +6 -8
- package/docs/guide/platform/installation/credentials.md +12 -10
- package/docs/guide/platform/installation/maintenance.md +18 -21
- package/docs/guide/platform/installation/prerequisites.md +1 -1
- package/docs/guide/platform/installation/setup.md +23 -2
- package/docs/guide/platform/installation/uninstall.md +1 -1
- package/docs/guide/queues.md +4 -8
- package/docs/guide/self-hosted-platform.md +3 -3
- package/docs/guide/server-routing.md +7 -7
- package/docs/guide/ssg.md +3 -3
- package/docs/guide/type-safety.md +84 -1
- package/docs/guide/typed-fetch.md +1 -1
- package/docs/guide/websockets.md +1 -1
- package/docs/integrations/cloudflare.md +2 -2
- package/docs/integrations/frameworks/analog.md +1 -1
- package/docs/integrations/frameworks/astro.md +17 -12
- package/docs/integrations/frameworks/nuxt.md +1 -1
- package/docs/integrations/frameworks/overview.md +2 -2
- package/docs/integrations/frameworks/sveltekit.md +1 -1
- package/docs/integrations/frameworks/tanstack-start.md +1 -1
- package/docs/integrations/hono.md +5 -5
- package/docs/reference/api/auth.md +1 -1
- package/docs/reference/api/deploy.md +6 -6
- package/docs/reference/api/pages.md +109 -50
- package/docs/reference/api/plugin.md +4 -4
- package/docs/reference/api/resources.md +4 -1
- package/docs/reference/api/rewrites.md +24 -3
- package/docs/reference/api/types.md +45 -0
- package/docs/reference/api.md +2 -2
- package/docs/reference/cli/database.md +15 -9
- package/docs/reference/cli/email.md +4 -2
- package/docs/reference/cli/platform-installation.md +6 -3
- package/docs/reference/cli/project.md +2 -2
- package/docs/reference/cli/secrets.md +3 -1
- package/docs/reference/cli/setup.md +4 -4
- package/docs/reference/cli.md +1 -1
- package/docs/reference/config.md +12 -2
- package/package.json +36 -32
- package/sandbox.Dockerfile +1 -1
- package/schema.json +4 -0
- package/skills/void/SKILL.md +5 -0
- package/dist/cf-build-output-bd8Uwv1P.mjs +0 -1
- package/dist/client-BZb9j66F.mjs +0 -1
- package/dist/collect-BWhkgtAn.mjs +0 -1
- package/dist/deploy-CX94CmKa.mjs +0 -2
- package/dist/discover-D4TPKo57.mjs +0 -1
- package/dist/gen-BhWBT4iu.mjs +0 -1
- package/dist/headers--vaK_chu.mjs +0 -226
- package/dist/help-qOZr3wng.mjs +0 -1
- package/dist/login-BAPmYnb7.mjs +0 -1
- package/dist/migrate-BIYTPQE6.mjs +0 -1
- package/dist/operator-cmd-CjazwOyb.mjs +0 -1
- package/dist/output-BW9uK099.mjs +0 -1
- package/dist/plan-CKX_jWnD.mjs +0 -1
- package/dist/platform-args-BC8_hsDj.mjs +0 -1
- package/dist/prepare-DU-tOpS5.mjs +0 -1
- package/dist/project-slug-6cyz8E7k.mjs +0 -1
- package/dist/resolve-project-DD1vu8s9.mjs +0 -1
- package/dist/route-url-BgPja1GS.d.mts +0 -5
- package/dist/route-url-BjGv_KKY.mjs +0 -28
- package/dist/validate-D7Wn8PUX.mjs +0 -1
- package/dist/validation-error-Dg9Recn1.mjs +0 -49
- package/dist/wrangler-UnwdISay.mjs +0 -1
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { a as join, c as resolve, n as dirname } from "./dist-
|
|
2
|
-
import { t as writeFileAtomic } from "./atomic-write-
|
|
3
|
-
import { S as writePendingInstallationSecrets, a as latestPlatformWorkerCutoverGeneration, c as normalizePlatformApiUrl, d as platformRegistryDirectory, f as platformWorkerSecretUpdateIntentState, h as readPendingInstallationSecrets, m as readInstallationRecoverySecrets, n as assertPlatformInstallationSlugAvailable, o as listInstallationManifests, p as promoteInstallationSecrets, t as acquirePlatformLifecycleLock, v as resolveInstallationManifest, x as writeInstallationManifest, y as savePlatformConnection } from "./platform-registry-
|
|
4
|
-
import { t as cfAccessHeaders } from "./cf-access-
|
|
5
|
-
import { t as ensurePlatformAccessToken } from "./cf-access-
|
|
6
|
-
import { A as confirm, H as outro, K as select, L as log, U as password, X as text$1, tt as isCancel, z as multiselect } from "./dist-
|
|
7
|
-
import { f as import_picocolors, l as formatUrl, m as printSuccess, n as cliCommandName, p as note, r as createSpinner, u as getErrorMessage } from "./output-
|
|
8
|
-
import { l as resolveCloudflareOperationArgv } from "./cloudflare-process-
|
|
9
|
-
import { o as createDefaultRunWrangler, v as resolvePinnedApiBaseUrl } from "./provision-
|
|
10
|
-
import { t as parsePlatformArgs } from "./platform-args-
|
|
11
|
-
import { o as runCloudflareAuthCommand } from "./cloudflare-auth-
|
|
12
|
-
import {
|
|
1
|
+
import { a as join, c as resolve, n as dirname } from "./dist-DMYe8CZJ.mjs";
|
|
2
|
+
import { t as writeFileAtomic } from "./atomic-write-DA6eD1Kp.mjs";
|
|
3
|
+
import { S as writePendingInstallationSecrets, a as latestPlatformWorkerCutoverGeneration, c as normalizePlatformApiUrl, d as platformRegistryDirectory, f as platformWorkerSecretUpdateIntentState, h as readPendingInstallationSecrets, m as readInstallationRecoverySecrets, n as assertPlatformInstallationSlugAvailable, o as listInstallationManifests, p as promoteInstallationSecrets, t as acquirePlatformLifecycleLock, v as resolveInstallationManifest, x as writeInstallationManifest, y as savePlatformConnection } from "./platform-registry-DZ_2Xuqd.mjs";
|
|
4
|
+
import { t as cfAccessHeaders } from "./cf-access-pejlJmuy.mjs";
|
|
5
|
+
import { t as ensurePlatformAccessToken } from "./cf-access-BmBT2h8_.mjs";
|
|
6
|
+
import { A as confirm, H as outro, K as select, L as log, U as password, X as text$1, tt as isCancel, z as multiselect } from "./dist-D23AAMxT.mjs";
|
|
7
|
+
import { f as import_picocolors, l as formatUrl, m as printSuccess, n as cliCommandName, p as note, r as createSpinner, u as getErrorMessage } from "./output-BCdLioKP.mjs";
|
|
8
|
+
import { l as resolveCloudflareOperationArgv } from "./cloudflare-process-DjJ638A-.mjs";
|
|
9
|
+
import { o as createDefaultRunWrangler, v as resolvePinnedApiBaseUrl } from "./provision-BbCzpbXs.mjs";
|
|
10
|
+
import { t as parsePlatformArgs } from "./platform-args-Cx1M-7bq.mjs";
|
|
11
|
+
import { o as runCloudflareAuthCommand } from "./cloudflare-auth-CEu-1Ps_.mjs";
|
|
12
|
+
import { i as updateProjectWorkerRuntimeLogs, n as assertPlatformRuntimeLogsSupported, r as shouldUpdateProjectWorkerRuntimeLogs } from "./platform-runtime-logs-CdJGnk3f.mjs";
|
|
13
|
+
import { a as platformManagementSetupPage, c as platformSetupLink, d as planWritesDns, i as platformInstallCommandArguments, l as platformSetupPages, n as formatPlatformSetupPlan, o as platformPromptAnswer, r as openPlatformSetupPage, s as platformSetupFieldHelp, t as formatPlatformInstallCommand, u as planCreatesZone } from "./platform-setup-Vw1AaUN8.mjs";
|
|
13
14
|
import { copyFileSync, cpSync, existsSync, lstatSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs";
|
|
14
15
|
import { fileURLToPath } from "node:url";
|
|
15
16
|
import { isRecord } from "@void/deploy-core";
|
|
@@ -23,7 +24,7 @@ import { setTimeout as setTimeout$1 } from "node:timers/promises";
|
|
|
23
24
|
import { readFile } from "node:fs/promises";
|
|
24
25
|
import { PLATFORM_ADMIN_ASSETS_DIRECTORY, platformDatabaseSchemaDigest, resolvePlatformRuntime } from "@void/platform/installer";
|
|
25
26
|
import { request as request$1 } from "node:https";
|
|
26
|
-
|
|
27
|
+
// src/cli/platform-cloudflare.ts
|
|
27
28
|
var PlatformCloudflareApiError = class extends Error {
|
|
28
29
|
status;
|
|
29
30
|
requestPath;
|
|
@@ -161,7 +162,7 @@ var PlatformCloudflareClient = class PlatformCloudflareClient {
|
|
|
161
162
|
headers: {
|
|
162
163
|
Accept: "application/json",
|
|
163
164
|
Authorization: `Bearer ${this.#token}`,
|
|
164
|
-
...init?.body ? { "Content-Type": "application/json" } : {},
|
|
165
|
+
...typeof init?.body === "string" ? { "Content-Type": "application/json" } : {},
|
|
165
166
|
...init?.headers
|
|
166
167
|
},
|
|
167
168
|
signal: init?.signal ?? AbortSignal.timeout(3e4),
|
|
@@ -733,6 +734,15 @@ var PlatformCloudflareClient = class PlatformCloudflareClient {
|
|
|
733
734
|
async listDispatchNamespaceScripts(accountId, namespace) {
|
|
734
735
|
return (await this.request(`/accounts/${encodeURIComponent(accountId)}/workers/dispatch/namespaces/${encodeURIComponent(namespace)}/scripts`)).map((entry) => requiredString(entry.id, "Dispatch namespace script name"));
|
|
735
736
|
}
|
|
737
|
+
/** Change settings of one namespace script. Omitted fields, such as bindings, are kept. */
|
|
738
|
+
async patchDispatchNamespaceScriptSettings(accountId, namespace, scriptName, settings) {
|
|
739
|
+
const body = new FormData();
|
|
740
|
+
body.set("settings", new Blob([JSON.stringify(settings)], { type: "application/json" }), "settings.json");
|
|
741
|
+
await this.request(`/accounts/${encodeURIComponent(accountId)}/workers/dispatch/namespaces/${encodeURIComponent(namespace)}/scripts/${encodeURIComponent(scriptName)}/settings`, {
|
|
742
|
+
method: "PATCH",
|
|
743
|
+
body
|
|
744
|
+
});
|
|
745
|
+
}
|
|
736
746
|
async deleteDispatchNamespaceScript(accountId, namespace, scriptName) {
|
|
737
747
|
await this.#deleteIfPresent(`/accounts/${encodeURIComponent(accountId)}/workers/dispatch/namespaces/${encodeURIComponent(namespace)}/scripts/${encodeURIComponent(scriptName)}`);
|
|
738
748
|
}
|
|
@@ -936,8 +946,7 @@ function parseHyperdriveConfig(value) {
|
|
|
936
946
|
}
|
|
937
947
|
};
|
|
938
948
|
}
|
|
939
|
-
|
|
940
|
-
//#region src/cli/platform-access-provision.ts
|
|
949
|
+
// src/cli/platform-access-provision.ts
|
|
941
950
|
function object(value, name) {
|
|
942
951
|
if (!value || typeof value !== "object" || Array.isArray(value)) throw new Error(`platform: Invalid ${name} response from Cloudflare Access.`);
|
|
943
952
|
return value;
|
|
@@ -1355,8 +1364,7 @@ async function verifyPlatformAccessApplication(client, input, app, type, machine
|
|
|
1355
1364
|
}
|
|
1356
1365
|
if (machineId && !currentPolicies.some((policy) => policy.decision === "non_identity")) throw new Error("platform: The platform service token is not admitted by Access.");
|
|
1357
1366
|
}
|
|
1358
|
-
|
|
1359
|
-
//#region src/cli/platform-access-setup.ts
|
|
1367
|
+
// src/cli/platform-access-setup.ts
|
|
1360
1368
|
function accessSetupGuide() {
|
|
1361
1369
|
return platformSetupLink({
|
|
1362
1370
|
title: "Setup guide and required permissions",
|
|
@@ -1744,8 +1752,7 @@ async function preparePlatformAccessSetup(input) {
|
|
|
1744
1752
|
}
|
|
1745
1753
|
return result;
|
|
1746
1754
|
}
|
|
1747
|
-
|
|
1748
|
-
//#region src/cli/platform-auth.ts
|
|
1755
|
+
// src/cli/platform-auth.ts
|
|
1749
1756
|
/** Use the selected credential for read-only checks before taking lifecycle locks. */
|
|
1750
1757
|
async function verifyPlatformCloudflareCredential(client, input) {
|
|
1751
1758
|
const source = input.source === "saved" ? "saved management token" : input.source === "environment" ? "environment API token" : "Cloudflare browser login";
|
|
@@ -1797,12 +1804,6 @@ function assertPlatformOperatorCredentialCanApplyPlan(credential, plan, access)
|
|
|
1797
1804
|
function platformOperatorNeedsManagementToken(credential, plan, access) {
|
|
1798
1805
|
return credential.source === "oauth" && (!!access || planCreatesZone(plan) || planWritesDns(plan));
|
|
1799
1806
|
}
|
|
1800
|
-
function planCreatesZone(plan) {
|
|
1801
|
-
return plan.actions.some((action) => action.kind === "zone" && action.action === "create");
|
|
1802
|
-
}
|
|
1803
|
-
function planWritesDns(plan) {
|
|
1804
|
-
return plan.actions.some((action) => action.kind === "dns-record" && action.action !== "reuse");
|
|
1805
|
-
}
|
|
1806
1807
|
async function resolvePlatformCloudflareCredential(dependencies = {}) {
|
|
1807
1808
|
const { credential } = await resolvePlatformCloudflareCredentialWithInput(async () => void 0, dependencies);
|
|
1808
1809
|
return credential;
|
|
@@ -1875,8 +1876,7 @@ async function readWranglerOAuthCredential(runWrangler) {
|
|
|
1875
1876
|
token: parsed.token.trim()
|
|
1876
1877
|
};
|
|
1877
1878
|
}
|
|
1878
|
-
|
|
1879
|
-
//#region src/cli/platform-app-access.ts
|
|
1879
|
+
// src/cli/platform-app-access.ts
|
|
1880
1880
|
async function selectInstallationAppAccess(authentication, recorded, choice) {
|
|
1881
1881
|
const config = authentication.file?.appAccess;
|
|
1882
1882
|
if (config && (typeof config !== "object" || Array.isArray(config) || "apiToken" in config || config.tokenEnv !== void 0 && (typeof config.tokenEnv !== "string" || !/^[A-Z_][A-Z0-9_]*$/.test(config.tokenEnv)))) throw new Error("platform: App access configuration must use tokenEnv; plaintext tokens are not accepted.");
|
|
@@ -2131,8 +2131,7 @@ async function turnOffInstalledProjectZeroTrust(input, fetcher = fetch) {
|
|
|
2131
2131
|
if (!result.turnedOff) throw new Error("platform: Project Zero Trust is still turning off. Rerun the uninstall.");
|
|
2132
2132
|
if (result.usersExist) throw new Error("platform: A platform user signed in while project Zero Trust was turning off, so the uninstall stopped. Project Zero Trust is now off and the platform still runs. To keep the platform, an administrator can turn project Zero Trust back on in Admin → Zero Trust or with `void platform zero-trust configure`. To remove it, run the uninstall again.");
|
|
2133
2133
|
}
|
|
2134
|
-
|
|
2135
|
-
//#region src/cli/platform-auth-bootstrap.ts
|
|
2134
|
+
// src/cli/platform-auth-bootstrap.ts
|
|
2136
2135
|
/** Checkpoint a replacement before submission so an interrupted response is safely replayable. */
|
|
2137
2136
|
async function resumeInstalledPlatformAuthentication(input, initialize = initializeInstalledPlatformAuthentication) {
|
|
2138
2137
|
const result = await initialize(input.apiUrl, input.installationId, input.setupToken, input.setupJson);
|
|
@@ -2174,8 +2173,7 @@ async function initializeInstalledPlatformAuthentication(apiUrl, installationId,
|
|
|
2174
2173
|
expiresAt: typeof result.expiresAt === "string" ? result.expiresAt : null
|
|
2175
2174
|
};
|
|
2176
2175
|
}
|
|
2177
|
-
|
|
2178
|
-
//#region src/cli/platform-auth-database.ts
|
|
2176
|
+
// src/cli/platform-auth-database.ts
|
|
2179
2177
|
/** Restore the selected external origin before an adoption receipt exists. */
|
|
2180
2178
|
function readPlatformHyperdriveSelection(checkpoint) {
|
|
2181
2179
|
if (!checkpoint?.externalHyperdriveJson) return;
|
|
@@ -2233,8 +2231,7 @@ async function verifyPlatformAuthenticationDatabase(client, accountId, resource,
|
|
|
2233
2231
|
await client.disableHyperdriveCaching(accountId, resource.id);
|
|
2234
2232
|
if ((await read()).cachingDisabled !== true) throw new Error("platform: Could not verify uncached Hyperdrive reads. Authentication setup remains closed.");
|
|
2235
2233
|
}
|
|
2236
|
-
|
|
2237
|
-
//#region src/cli/platform-installer-process.ts
|
|
2234
|
+
// src/cli/platform-installer-process.ts
|
|
2238
2235
|
function platformWorkerCommandRunner(accountId, cwd, runner) {
|
|
2239
2236
|
return (operation, options) => runner(operation, accountId, cwd, options.capture);
|
|
2240
2237
|
}
|
|
@@ -2390,8 +2387,7 @@ async function withConditionalPlatformWorkerCreate(accountId, workerName, operat
|
|
|
2390
2387
|
async function runPlatformWranglerForConditionalCreate(operation, accountId, cwd, capture, workerName, upstreamApiBaseUrl, apiToken) {
|
|
2391
2388
|
return withConditionalPlatformWorkerCreate(accountId, workerName, (apiBaseUrl) => runPlatformWranglerAtApiBase(operation, accountId, cwd, capture, apiBaseUrl, false, apiToken), upstreamApiBaseUrl);
|
|
2392
2389
|
}
|
|
2393
|
-
|
|
2394
|
-
//#region src/cli/platform-plan.ts
|
|
2390
|
+
// src/cli/platform-plan.ts
|
|
2395
2391
|
async function createPlatformInstallPlan(client, input, existing, options) {
|
|
2396
2392
|
const dashboardUrl = input.dashboardUrl !== void 0 ? normalizePlatformDashboardUrl(input.dashboardUrl) : existing ? existing.deployment.controlPlane.dashboardUrl ?? (existing.endpoints.dashboardUrl ? normalizePlatformDashboardUrl(existing.endpoints.dashboardUrl) : null) ?? platformDashboardUrl(existing.deployment) : null;
|
|
2397
2393
|
const account = resolveAccount(await client.listAccounts(), input.accountId);
|
|
@@ -2433,6 +2429,7 @@ async function createPlatformInstallPlan(client, input, existing, options) {
|
|
|
2433
2429
|
if (capabilities.customDomains && (testing || !input.dedicatedZone)) throw new Error("platform: Custom domains need a dedicated application zone. Install with a domain and --dedicated-zone.");
|
|
2434
2430
|
if (capabilities.email && options?.includeEmailGateway !== false && !enableEmail) throw new Error("platform: Email-enabled installations require VOID_EMAIL_SENDER_DOMAIN and VOID_EMAIL_SHARED_ZONE_ID before deploying this runtime.");
|
|
2435
2431
|
if (input.appAccess && input.appAccess !== "public" && input.controlPlaneDomain.toLowerCase().replace(/\.$/, "").endsWith(`.${input.applicationDomain.toLowerCase()}`)) throw new Error("platform: The API hostname must be outside the app Access wildcard. Use the application domain apex or workers.dev for the API, then plan again.");
|
|
2432
|
+
const runtimeLogs = input.runtimeLogs === void 0 ? existing?.deployment.runtimeLogs : input.runtimeLogs === "minimal" ? "minimal" : void 0;
|
|
2436
2433
|
const deployment = createPlatformDeploymentManifest({
|
|
2437
2434
|
authentication: input.authentication ?? existing?.deployment.authentication,
|
|
2438
2435
|
appAccess: input.appAccess ?? existing?.deployment.appAccess,
|
|
@@ -2454,7 +2451,8 @@ async function createPlatformInstallPlan(client, input, existing, options) {
|
|
|
2454
2451
|
...emailSharedZoneId ? { emailSharedZoneId } : {},
|
|
2455
2452
|
...normalizedEmailSenderDomain ? { emailSenderDomain: normalizedEmailSenderDomain } : {},
|
|
2456
2453
|
installationSlug,
|
|
2457
|
-
resources: existing?.deployment.resources ?? createPlatformResourceNames(installationSlug)
|
|
2454
|
+
resources: existing?.deployment.resources ?? createPlatformResourceNames(installationSlug),
|
|
2455
|
+
...runtimeLogs ? { runtimeLogs } : {}
|
|
2458
2456
|
});
|
|
2459
2457
|
const { emailSharedZoneId: configuredEmailZone, emailSenderDomain: configuredSenderDomain, ...deploymentWithoutEmailZone } = deployment;
|
|
2460
2458
|
const { emailSharedZoneId: recordedEmailZone, emailSenderDomain: recordedSenderDomain, ...existingWithoutEmailZone } = existing?.deployment ?? deployment;
|
|
@@ -2480,14 +2478,19 @@ async function createPlatformInstallPlan(client, input, existing, options) {
|
|
|
2480
2478
|
customDomains: true
|
|
2481
2479
|
}
|
|
2482
2480
|
} : existingWithDashboard;
|
|
2483
|
-
const
|
|
2481
|
+
const existingWithEmail = existing && deployment.capabilities.email && !existing.deployment.capabilities.email ? {
|
|
2484
2482
|
...existingWithCustomDomains,
|
|
2485
2483
|
capabilities: {
|
|
2486
2484
|
...existingWithCustomDomains.capabilities,
|
|
2487
2485
|
email: true
|
|
2488
2486
|
}
|
|
2489
2487
|
} : existingWithCustomDomains;
|
|
2490
|
-
|
|
2488
|
+
const comparable = (value) => {
|
|
2489
|
+
if (!options?.allowRuntimeLogsChange) return JSON.stringify(value);
|
|
2490
|
+
const { runtimeLogs: _runtimeLogs, schemaVersion: _schemaVersion, ...rest } = value;
|
|
2491
|
+
return JSON.stringify(rest);
|
|
2492
|
+
};
|
|
2493
|
+
if (existing && (comparable(existingWithEmail) !== comparable(deploymentWithoutEmailZone) || recordedEmailZone !== void 0 && recordedEmailZone !== configuredEmailZone || recordedSenderDomain !== void 0 && recordedSenderDomain !== configuredSenderDomain)) throw new Error(`platform: --resume inputs do not match installation ${existing.id}. Use its recorded configuration.`);
|
|
2491
2494
|
const names = deployment.resources;
|
|
2492
2495
|
const wildcardHostname = `*.${deployment.application.baseDomain}`;
|
|
2493
2496
|
const zone = testing ? null : await client.findZone(account.id, deployment.application.zoneName);
|
|
@@ -3067,7 +3070,10 @@ async function readRemoteOwnership(client, accountId, routingNamespaces, existin
|
|
|
3067
3070
|
}
|
|
3068
3071
|
return null;
|
|
3069
3072
|
}
|
|
3070
|
-
|
|
3073
|
+
/** `previous` is the installed deployment, so a changed setting shows what it was. */
|
|
3074
|
+
function formatPlatformInstallPlan(plan, previous) {
|
|
3075
|
+
const runtimeLogs = plan.deployment.runtimeLogs ?? "full";
|
|
3076
|
+
const previousRuntimeLogs = previous ? previous.runtimeLogs ?? "full" : runtimeLogs;
|
|
3071
3077
|
const lines = [
|
|
3072
3078
|
`${import_picocolors.default.bold(`${plan.deployment.displayName} in ${plan.account.name}`)}`,
|
|
3073
3079
|
`${import_picocolors.default.bold("Account:")} ${plan.account.id}`,
|
|
@@ -3082,6 +3088,7 @@ function formatPlatformInstallPlan(plan) {
|
|
|
3082
3088
|
platform: "Same as platform Access policy",
|
|
3083
3089
|
custom: "Selected Access policy"
|
|
3084
3090
|
}[plan.deployment.appAccess]}`] : [],
|
|
3091
|
+
...runtimeLogs !== previousRuntimeLogs ? [`${import_picocolors.default.bold("Runtime logs:")} ${runtimeLogs} (was ${previousRuntimeLogs})`] : plan.deployment.runtimeLogs ? [`${import_picocolors.default.bold("Runtime logs:")} ${plan.deployment.runtimeLogs}`] : [],
|
|
3085
3092
|
`${import_picocolors.default.bold("Login callback:")} ${plan.apiUrl}/auth/callback`,
|
|
3086
3093
|
`${import_picocolors.default.bold("Database:")} ${plan.externalHyperdrive?.database || "PostgreSQL"} via Hyperdrive ${plan.deployment.resources.hyperdrive}`,
|
|
3087
3094
|
""
|
|
@@ -3089,8 +3096,7 @@ function formatPlatformInstallPlan(plan) {
|
|
|
3089
3096
|
for (const action of plan.actions) lines.push(`${action.action.padEnd(6)} ${action.kind.padEnd(19)} ${action.name}`);
|
|
3090
3097
|
return lines.join("\n");
|
|
3091
3098
|
}
|
|
3092
|
-
|
|
3093
|
-
//#region src/cli/platform-traffic.ts
|
|
3099
|
+
// src/cli/platform-traffic.ts
|
|
3094
3100
|
function platformManagedWorkerTraffic(deployment, workers) {
|
|
3095
3101
|
const includes = (worker) => workers === void 0 || workers.has(worker);
|
|
3096
3102
|
const names = deployment.resources;
|
|
@@ -3166,8 +3172,7 @@ function recordPlatformWorkerTraffic(manifest, workerName, inventory, updatedAt)
|
|
|
3166
3172
|
}
|
|
3167
3173
|
return next;
|
|
3168
3174
|
}
|
|
3169
|
-
|
|
3170
|
-
//#region src/cli/platform-installer-resources.ts
|
|
3175
|
+
// src/cli/platform-installer-resources.ts
|
|
3171
3176
|
async function reconcilePlatformInstallationResources(manifest, plan, secrets, zoneId, externalHyperdriveOriginHash, dependencies, now, writeRemoteInstallationCheckpoint, onManifestChange) {
|
|
3172
3177
|
for (const action of plan.actions.filter((entry) => entry.key !== "routing-kv" && entry.kind !== "zone" && entry.kind !== "worker")) {
|
|
3173
3178
|
const retainedManifest = retainReplacedInstallationResource(manifest, action, now());
|
|
@@ -3413,8 +3418,7 @@ function requireId(ids, key) {
|
|
|
3413
3418
|
if (!id) throw new Error(`platform: Installation manifest is missing ${key}.`);
|
|
3414
3419
|
return id;
|
|
3415
3420
|
}
|
|
3416
|
-
|
|
3417
|
-
//#region src/cli/platform-installer-types.ts
|
|
3421
|
+
// src/cli/platform-installer-types.ts
|
|
3418
3422
|
const PLATFORM_WORKER_SECRET_UPDATE_NAMES = [
|
|
3419
3423
|
"CF_API_TOKEN",
|
|
3420
3424
|
"EMAIL_SIGNING_SECRET",
|
|
@@ -3446,8 +3450,7 @@ var PlatformWorkerRecoveryIncompleteError = class extends Error {
|
|
|
3446
3450
|
this.name = "PlatformWorkerRecoveryIncompleteError";
|
|
3447
3451
|
}
|
|
3448
3452
|
};
|
|
3449
|
-
|
|
3450
|
-
//#region src/cli/platform-installer-secrets.ts
|
|
3453
|
+
// src/cli/platform-installer-secrets.ts
|
|
3451
3454
|
function createPlatformInstallationSecrets(input) {
|
|
3452
3455
|
const checkpoint = input.checkpoint ?? {};
|
|
3453
3456
|
const required = (value, name) => {
|
|
@@ -3746,8 +3749,7 @@ function assertRequiredPlatformSecrets(plan, manifest, secrets, authenticationWi
|
|
|
3746
3749
|
function createPlatformHealthProbeToken(ownershipNonce) {
|
|
3747
3750
|
return createHash("sha256").update("void-platform-health-probe:v1\0").update(ownershipNonce).digest("base64url");
|
|
3748
3751
|
}
|
|
3749
|
-
|
|
3750
|
-
//#region src/cli/platform-installer-errors.ts
|
|
3752
|
+
// src/cli/platform-installer-errors.ts
|
|
3751
3753
|
const ANALYTICS_ENGINE_NOT_ENABLED = 10089;
|
|
3752
3754
|
const UPLOAD_CONFLICT = "Aborting the upload operation because of conflicts";
|
|
3753
3755
|
/** Why the Cloudflare CLI stopped an upload, and what to do. Null for other failures. */
|
|
@@ -3788,8 +3790,7 @@ function assertPlatformTriggerStabilization(result, workerName, targetVersionId,
|
|
|
3788
3790
|
if (!result.ok) throw new Error(`platform: Failed to ${operation} triggers for ${workerName} (${result.reason}).`);
|
|
3789
3791
|
if (!result.targetOwnsTraffic) throw new Error(`platform: Worker ${workerName} was superseded by ${result.activeVersionId} while publishing ${targetVersionId}; its active trigger state was repaired.`);
|
|
3790
3792
|
}
|
|
3791
|
-
|
|
3792
|
-
//#region src/cli/platform-installer-inspection.ts
|
|
3793
|
+
// src/cli/platform-installer-inspection.ts
|
|
3793
3794
|
var PlatformWorkerOwnershipError = class extends Error {};
|
|
3794
3795
|
async function readActivePlatformWorkerVersion(configPath, accountId, workerName, runner = runPlatformWrangler) {
|
|
3795
3796
|
const result = await runner({
|
|
@@ -3952,8 +3953,7 @@ async function readPlatformWorkerVersionSnapshot(configPath, accountId, workerNa
|
|
|
3952
3953
|
versionId
|
|
3953
3954
|
};
|
|
3954
3955
|
}
|
|
3955
|
-
|
|
3956
|
-
//#region src/cli/platform-installer-cutover.ts
|
|
3956
|
+
// src/cli/platform-installer-cutover.ts
|
|
3957
3957
|
function withoutCompletedPlatformWorkerMigrations(config, activeMigrationTag) {
|
|
3958
3958
|
const target = (Array.isArray(config.migrations) ? config.migrations : []).at(-1);
|
|
3959
3959
|
if (activeMigrationTag === null || !target || typeof target !== "object" || Array.isArray(target) || target.tag !== activeMigrationTag) return config;
|
|
@@ -4145,8 +4145,7 @@ function resolvePlatformPreviousTriggerConfig(versionSnapshot, configuredSnapsho
|
|
|
4145
4145
|
workers_dev: configuredSnapshot.workers_dev
|
|
4146
4146
|
};
|
|
4147
4147
|
}
|
|
4148
|
-
|
|
4149
|
-
//#region src/cli/platform-trigger-proof.ts
|
|
4148
|
+
// src/cli/platform-trigger-proof.ts
|
|
4150
4149
|
function record(value) {
|
|
4151
4150
|
return isRecord(value) ? value : null;
|
|
4152
4151
|
}
|
|
@@ -4235,8 +4234,7 @@ async function platformWorkerLiveTriggersMatch(options) {
|
|
|
4235
4234
|
return false;
|
|
4236
4235
|
}
|
|
4237
4236
|
}
|
|
4238
|
-
|
|
4239
|
-
//#region src/cli/platform-installer-workers.ts
|
|
4237
|
+
// src/cli/platform-installer-workers.ts
|
|
4240
4238
|
function platformWorkerResourceKey(key) {
|
|
4241
4239
|
return key === "emailGateway" ? "email-gateway-worker" : `${key}-worker`;
|
|
4242
4240
|
}
|
|
@@ -4862,8 +4860,7 @@ async function restorePlatformWorkerDeployment(input) {
|
|
|
4862
4860
|
const after = await readPlatformWorkerDeployments(input.configPath, input.accountId, input.workerName, input.runner);
|
|
4863
4861
|
if (!samePlatformWorkerTraffic(after[0], input.restoration) || after[1]?.id !== input.expectedActiveDeploymentId) throw new Error(`Worker ${input.workerName} deployment restoration was superseded or did not restore deployment ${input.restoration.id}.`);
|
|
4864
4862
|
}
|
|
4865
|
-
|
|
4866
|
-
//#region src/cli/platform-install-workers.ts
|
|
4863
|
+
// src/cli/platform-install-workers.ts
|
|
4867
4864
|
function platformWorkerAction(workerActions, key) {
|
|
4868
4865
|
return workerActions.find((entry) => entry.key === platformWorkerResourceKey(key));
|
|
4869
4866
|
}
|
|
@@ -5040,8 +5037,7 @@ async function uploadInstallationWorkers(input) {
|
|
|
5040
5037
|
if (firstFailure) throw firstFailure.reason;
|
|
5041
5038
|
} else for (const key of workerKeys) await deployOneWorker(key);
|
|
5042
5039
|
}
|
|
5043
|
-
|
|
5044
|
-
//#region src/cli/platform-installer-health.ts
|
|
5040
|
+
// src/cli/platform-installer-health.ts
|
|
5045
5041
|
var PlatformAccessBlockedError = class extends Error {
|
|
5046
5042
|
constructor(url, context) {
|
|
5047
5043
|
super(context?.accessProtected ? [
|
|
@@ -5259,8 +5255,7 @@ async function bootstrapPlatformSharedEmail(apiUrl, healthProbeToken, fetcher =
|
|
|
5259
5255
|
}
|
|
5260
5256
|
return operationId;
|
|
5261
5257
|
}
|
|
5262
|
-
|
|
5263
|
-
//#region src/cli/platform-install-activation.ts
|
|
5258
|
+
// src/cli/platform-install-activation.ts
|
|
5264
5259
|
async function enableInstallationServices(input) {
|
|
5265
5260
|
const { state, checkpointOperation, requiresStagedCommit, authenticationCutoverCommitted, now, writeRemoteInstallationCheckpoint, dependencies, workerKeys, workerActions, workerDeploymentSecrets, zoneId, enabledConfigs, configs, cloudflareApiBaseUrl, managedRoutes, ids, runPinnedPlatformWrangler, shouldBootstrapSharedEmail, releaseDatabaseLock, version, targetUsageProtocolVersion, healthCheckContext, runtime, runtimeProvenance } = input;
|
|
5266
5261
|
const { plan, secrets } = state;
|
|
@@ -5363,8 +5358,7 @@ async function enableInstallationServices(input) {
|
|
|
5363
5358
|
state.manifest = transitionInstallation(state.manifest, "installed", now());
|
|
5364
5359
|
return { emailOperationId };
|
|
5365
5360
|
}
|
|
5366
|
-
|
|
5367
|
-
//#region src/cli/platform-access-health.ts
|
|
5361
|
+
// src/cli/platform-access-health.ts
|
|
5368
5362
|
/** These reserved endpoints require Void's probe token and cannot serve application traffic. */
|
|
5369
5363
|
function platformAccessHealthTargets(plan) {
|
|
5370
5364
|
const destination = `${plan.deployment.application.zoneName ? `${PLATFORM_HEALTH_HOSTNAME_LABEL}.${plan.deployment.application.baseDomain}` : `${plan.deployment.resources.dispatchWorker}.${plan.workersSubdomain}.workers.dev`}/health`;
|
|
@@ -5469,8 +5463,7 @@ async function ensurePlatformAccessHealthChecks(input) {
|
|
|
5469
5463
|
save();
|
|
5470
5464
|
}
|
|
5471
5465
|
}
|
|
5472
|
-
|
|
5473
|
-
//#region src/cli/platform-access-preflight.ts
|
|
5466
|
+
// src/cli/platform-access-preflight.ts
|
|
5474
5467
|
/** Recheck live protection without invoking any provisioning or configuration write. */
|
|
5475
5468
|
async function verifyInstalledPlatformAccessProtection(input) {
|
|
5476
5469
|
const protection = parsePlatformAccessProtection(input.protection);
|
|
@@ -5516,7 +5509,7 @@ async function verifyInstalledPlatformAccessProtection(input) {
|
|
|
5516
5509
|
}
|
|
5517
5510
|
const existingWorkers = input.plan.actions.filter((action) => action.kind === "worker" && action.action === "update").map((action) => action.name);
|
|
5518
5511
|
if (existingWorkers.length) {
|
|
5519
|
-
const { verifyProtectionWorkerOrigins } = await import("./platform-auth-protection-
|
|
5512
|
+
const { verifyProtectionWorkerOrigins } = await import("./platform-auth-protection-KF5Vo-1I.mjs");
|
|
5520
5513
|
await verifyProtectionWorkerOrigins({
|
|
5521
5514
|
request: input.client.request.bind(input.client),
|
|
5522
5515
|
listWorkerDomains: input.client.listWorkerDomains.bind(input.client),
|
|
@@ -5524,8 +5517,7 @@ async function verifyInstalledPlatformAccessProtection(input) {
|
|
|
5524
5517
|
}, input.manifest, origins, false, { workerNames: existingWorkers });
|
|
5525
5518
|
}
|
|
5526
5519
|
}
|
|
5527
|
-
|
|
5528
|
-
//#region src/cli/platform-install-preparation.ts
|
|
5520
|
+
// src/cli/platform-install-preparation.ts
|
|
5529
5521
|
function withAuthentication(deployment, authentication) {
|
|
5530
5522
|
return createPlatformDeploymentManifest({
|
|
5531
5523
|
...deployment,
|
|
@@ -5723,8 +5715,7 @@ async function prepareInstallationAuthentication(input) {
|
|
|
5723
5715
|
}
|
|
5724
5716
|
}
|
|
5725
5717
|
}
|
|
5726
|
-
|
|
5727
|
-
//#region src/cli/platform-installer-runtime.ts
|
|
5718
|
+
// src/cli/platform-installer-runtime.ts
|
|
5728
5719
|
function loadPlatformRuntime(customRuntimeDirectory) {
|
|
5729
5720
|
const runtime = resolvePlatformRuntime(customRuntimeDirectory || void 0);
|
|
5730
5721
|
verifyRuntimeArtifacts(runtime.directory, runtime.manifest);
|
|
@@ -5763,8 +5754,7 @@ function verifyPlatformDatabaseArtifacts(runtimeDirectory, database) {
|
|
|
5763
5754
|
if (hash(contents) !== migration.sha256) throw new Error(`platform: Runtime database migration failed integrity verification: ${path}.`);
|
|
5764
5755
|
}
|
|
5765
5756
|
}
|
|
5766
|
-
|
|
5767
|
-
//#region src/cli/platform-zero-trust-uninstall.ts
|
|
5757
|
+
// src/cli/platform-zero-trust-uninstall.ts
|
|
5768
5758
|
/**
|
|
5769
5759
|
* Uninstall turns off the platform API, and only that API can remove the
|
|
5770
5760
|
* Cloudflare Access applications project Zero Trust created. The shared
|
|
@@ -5962,8 +5952,7 @@ async function assertProjectZeroTrustAllowsUninstall(read, options = {}) {
|
|
|
5962
5952
|
DASHBOARD_HINT
|
|
5963
5953
|
].join("\n"));
|
|
5964
5954
|
}
|
|
5965
|
-
|
|
5966
|
-
//#region src/cli/platform-installer-database.ts
|
|
5955
|
+
// src/cli/platform-installer-database.ts
|
|
5967
5956
|
async function preparePlatformDatabaseSchema(manifest, runtime, runtimeDirectory, sourcePlatformVersion, hadPriorWorkers, plan, dependencies, releaseDatabaseLock, now, writeRemoteInstallationCheckpoint, onManifestChange) {
|
|
5968
5957
|
dependencies.onProgress?.("Checking the platform database schema");
|
|
5969
5958
|
const rollbackDatabase = dependencies.databaseRollbackSource;
|
|
@@ -6475,8 +6464,7 @@ async function claimPlatformDatabaseConnection(client, installationId, ownership
|
|
|
6475
6464
|
throw error;
|
|
6476
6465
|
}
|
|
6477
6466
|
}
|
|
6478
|
-
|
|
6479
|
-
//#region src/cli/platform-install-provisioning.ts
|
|
6467
|
+
// src/cli/platform-install-provisioning.ts
|
|
6480
6468
|
async function provisionInstallationServices(input) {
|
|
6481
6469
|
const { state, now, releaseDatabaseLock, dependencies, writeRemoteInstallationCheckpoint, checkpointOperation, externalHyperdriveOriginHash, runtime, runtimeDirectory, sourcePlatformVersion, hadPriorWorkers } = input;
|
|
6482
6470
|
const { plan, secrets } = state;
|
|
@@ -6581,8 +6569,7 @@ async function provisionInstallationServices(input) {
|
|
|
6581
6569
|
entrypoints
|
|
6582
6570
|
};
|
|
6583
6571
|
}
|
|
6584
|
-
|
|
6585
|
-
//#region src/cli/platform-secret-update-authority.ts
|
|
6572
|
+
// src/cli/platform-secret-update-authority.ts
|
|
6586
6573
|
/**
|
|
6587
6574
|
* Prevents a host without the encrypted values for an interrupted credential
|
|
6588
6575
|
* update from carrying an opaque, possibly partial update into another cutover.
|
|
@@ -6622,8 +6609,7 @@ function readLatestWorkerGeneration(manifest) {
|
|
|
6622
6609
|
function hasCompleteWorkerSecretReplacement(updates, requiresEmailSigningSecret) {
|
|
6623
6610
|
return PLATFORM_WORKER_SECRET_UPDATE_NAMES.every((name) => name === "EMAIL_SIGNING_SECRET" && !requiresEmailSigningSecret || typeof updates[name] === "string" && updates[name] !== "");
|
|
6624
6611
|
}
|
|
6625
|
-
|
|
6626
|
-
//#region src/cli/platform-installer.ts
|
|
6612
|
+
// src/cli/platform-installer.ts
|
|
6627
6613
|
async function recoverFailedPlatformInstallation(error, state) {
|
|
6628
6614
|
const { plan, dependencies, workerTrafficGuarded, workerDeploymentCommitted, workerRollbacks, authenticationEnforcementActive, authenticationProtocolTransition, workerCutoverGeneration, previousPublicEndpoints, operationStarted, now, writeRemoteInstallationCheckpoint } = state;
|
|
6629
6615
|
let { manifest } = state;
|
|
@@ -6675,6 +6661,7 @@ async function installPlatform(plan, secrets, existing, dependencies) {
|
|
|
6675
6661
|
const runtimeDirectory = resolvedRuntime.directory;
|
|
6676
6662
|
const runtime = resolvedRuntime.manifest;
|
|
6677
6663
|
if (plan.deployment.appAccess && runtime.appAccessSetup !== 1) throw new Error("platform: This runtime does not support the installation’s app access setup.");
|
|
6664
|
+
assertPlatformRuntimeLogsSupported(plan.deployment, runtime);
|
|
6678
6665
|
const hasEmailGatewayArtifact = runtime.artifacts.emailGateway !== void 0;
|
|
6679
6666
|
if (existing?.steps.some((step) => step.key === "private-previews-initialized:v1") && runtime.privatePreviews !== 1) throw new Error("platform: This installation has private previews. Use a runtime with private preview support.");
|
|
6680
6667
|
if (runtime.emailProtocolVersion !== 1 && plan.deployment.capabilities.email) throw new Error("platform: This runtime cannot serve enabled platform email without email protocol version 1.");
|
|
@@ -7218,8 +7205,7 @@ async function installPlatform(plan, secrets, existing, dependencies) {
|
|
|
7218
7205
|
await releaseDatabaseLock();
|
|
7219
7206
|
}
|
|
7220
7207
|
}
|
|
7221
|
-
|
|
7222
|
-
//#region src/cli/platform-install-auth.ts
|
|
7208
|
+
// src/cli/platform-install-auth.ts
|
|
7223
7209
|
function defaultConnectionId(kind) {
|
|
7224
7210
|
return kind === "oidc" ? "company" : kind === "cloudflare-access" ? "access" : kind;
|
|
7225
7211
|
}
|
|
@@ -7548,8 +7534,7 @@ async function replacePendingInstallationAuthentication(input) {
|
|
|
7548
7534
|
authBootstrapCode
|
|
7549
7535
|
};
|
|
7550
7536
|
}
|
|
7551
|
-
|
|
7552
|
-
//#region src/cli/platform-installer-outside-changes.ts
|
|
7537
|
+
// src/cli/platform-installer-outside-changes.ts
|
|
7553
7538
|
const OUTSIDE_SOURCES = {
|
|
7554
7539
|
dash: "changed in the Cloudflare dashboard",
|
|
7555
7540
|
api: "changed in the Cloudflare API",
|
|
@@ -7713,8 +7698,7 @@ async function uploadPlatformWorkerOutsideChanges(configs, input) {
|
|
|
7713
7698
|
input.progress?.resume();
|
|
7714
7699
|
}
|
|
7715
7700
|
}
|
|
7716
|
-
|
|
7717
|
-
//#region src/cli/platform-saved-plans.ts
|
|
7701
|
+
// src/cli/platform-saved-plans.ts
|
|
7718
7702
|
function planId(args) {
|
|
7719
7703
|
return createHash("sha256").update(JSON.stringify([args.account, args.name])).digest("hex");
|
|
7720
7704
|
}
|
|
@@ -7769,8 +7753,7 @@ function listSavedPlatformInstallPlans(directory = platformRegistryDirectory())
|
|
|
7769
7753
|
function removeSavedPlatformInstallPlan(args, directory = platformRegistryDirectory()) {
|
|
7770
7754
|
rmSync(join(directory, `plan-${planId(args)}.json`), { force: true });
|
|
7771
7755
|
}
|
|
7772
|
-
|
|
7773
|
-
//#region src/cli/platform-setup-draft.ts
|
|
7756
|
+
// src/cli/platform-setup-draft.ts
|
|
7774
7757
|
const STARTED = "credential-setup:v1";
|
|
7775
7758
|
const COMPLETED = "credential-setup-complete:v1";
|
|
7776
7759
|
/** Includes interrupted provisioning, but not maintenance of an already deployed platform. */
|
|
@@ -7818,8 +7801,7 @@ function completePlatformSetupDraft(manifest) {
|
|
|
7818
7801
|
writeInstallationManifest(completed);
|
|
7819
7802
|
return completed;
|
|
7820
7803
|
}
|
|
7821
|
-
|
|
7822
|
-
//#region src/cli/platform-lifecycle.ts
|
|
7804
|
+
// src/cli/platform-lifecycle.ts
|
|
7823
7805
|
function isPlatformInstallDatabaseBound(checkpoint, manifest) {
|
|
7824
7806
|
return Boolean(checkpoint?.databaseClaimState === "claimed" || manifest?.resources.some((resource) => resource.state === "ready" && (resource.kind === "hyperdrive" || resource.kind === "worker")) || manifest?.steps.some((step) => step.key.startsWith("database-schema:") || step.key.startsWith("database-migrations:")));
|
|
7825
7807
|
}
|
|
@@ -7838,14 +7820,14 @@ function resolvePlatformInstallDatabaseUrl(checkpoint, manifest = null) {
|
|
|
7838
7820
|
}
|
|
7839
7821
|
async function runPlatformLifecycleCommand(commandArgs) {
|
|
7840
7822
|
if (commandArgs.subcommand === "domain") {
|
|
7841
|
-
const { runPlatformDomainCommand } = await import("./platform-domain-
|
|
7823
|
+
const { runPlatformDomainCommand } = await import("./platform-domain-rWJshybd.mjs");
|
|
7842
7824
|
await runPlatformDomainCommand(commandArgs);
|
|
7843
7825
|
return;
|
|
7844
7826
|
}
|
|
7845
7827
|
if (commandArgs.subcommand === "discover") {
|
|
7846
7828
|
const client = new PlatformCloudflareClient((await resolvePlatformCloudflareCredential()).token);
|
|
7847
7829
|
const accountId = await selectAccount(await readAccounts(client), commandArgs.account);
|
|
7848
|
-
const { recoverPlatformInstallations } = await import("./platform-recovery-
|
|
7830
|
+
const { recoverPlatformInstallations } = await import("./platform-recovery-DZuZGJtt.mjs");
|
|
7849
7831
|
const recovered = await recoverPlatformInstallations(client, accountId, void 0, commandArgs.selector);
|
|
7850
7832
|
if (recovered.length === 0) {
|
|
7851
7833
|
log.info(`No recoverable Void platform installations were found in ${accountId}.`);
|
|
@@ -7856,7 +7838,7 @@ async function runPlatformLifecycleCommand(commandArgs) {
|
|
|
7856
7838
|
return;
|
|
7857
7839
|
}
|
|
7858
7840
|
if (commandArgs.subcommand !== "install") {
|
|
7859
|
-
const { runInstalledPlatformCommand } = await import("./platform-management-
|
|
7841
|
+
const { runInstalledPlatformCommand } = await import("./platform-management-BfLW0Zlo.mjs");
|
|
7860
7842
|
await runInstalledPlatformCommand(commandArgs);
|
|
7861
7843
|
return;
|
|
7862
7844
|
}
|
|
@@ -7884,7 +7866,7 @@ async function runPlatformLifecycleCommand(commandArgs) {
|
|
|
7884
7866
|
if (!args.resume && process.stdin.isTTY) {
|
|
7885
7867
|
const installs = resumableInstalls().filter((manifest) => !args.name || manifest.deployment.installationSlug === normalizeInstallationSlug(args.name));
|
|
7886
7868
|
const manifests = listInstallationManifests();
|
|
7887
|
-
const savedPlans = !args.applicationDomain && !args.workersDev && !args.zone && !args.displayName && !args.hyperdrive && !args.controlPlaneDomain && !args.noControlPlaneDomain && !args.authConfig && !args.loginMethods && !args.runtime && args.accessProtection === void 0 && args.appAccess === void 0 && !args.dedicatedZoneSpecified && args.dashboardUrl === void 0 && !args.customDomains ? listSavedPlatformInstallPlans().filter((saved) => (!args.name || saved.args.name === normalizeInstallationSlug(args.name)) && (!args.account || saved.args.account === args.account || saved.accountName.toLowerCase() === args.account.toLowerCase()) && !manifests.some((manifest) => manifest.status !== "uninstalled" && manifest.account.id === saved.args.account && manifest.deployment.installationSlug === saved.args.name)) : [];
|
|
7869
|
+
const savedPlans = !args.applicationDomain && !args.workersDev && !args.zone && !args.displayName && !args.hyperdrive && !args.controlPlaneDomain && !args.noControlPlaneDomain && !args.authConfig && !args.loginMethods && !args.runtime && args.accessProtection === void 0 && args.appAccess === void 0 && !args.dedicatedZoneSpecified && args.dashboardUrl === void 0 && !args.customDomains && args.runtimeLogs === void 0 ? listSavedPlatformInstallPlans().filter((saved) => (!args.name || saved.args.name === normalizeInstallationSlug(args.name)) && (!args.account || saved.args.account === args.account || saved.accountName.toLowerCase() === args.account.toLowerCase()) && !manifests.some((manifest) => manifest.status !== "uninstalled" && manifest.account.id === saved.args.account && manifest.deployment.installationSlug === saved.args.name)) : [];
|
|
7888
7870
|
if (installs.length > 0 || savedPlans.length > 0) {
|
|
7889
7871
|
const choice = await select({
|
|
7890
7872
|
message: "Continue a previous platform install?",
|
|
@@ -8032,7 +8014,7 @@ async function runPlatformLifecycleCommand(commandArgs) {
|
|
|
8032
8014
|
progress?.stop("Read the saved installation.");
|
|
8033
8015
|
progress = void 0;
|
|
8034
8016
|
if (authoritative) {
|
|
8035
|
-
const { selectAuthoritativePlatformManifest } = await import("./platform-management-
|
|
8017
|
+
const { selectAuthoritativePlatformManifest } = await import("./platform-management-BfLW0Zlo.mjs");
|
|
8036
8018
|
const selected = selectAuthoritativePlatformManifest(existing, authoritative);
|
|
8037
8019
|
authoritativeProvisionIntents = true;
|
|
8038
8020
|
if (!args.plan && JSON.stringify(selected) !== JSON.stringify(existing)) writeInstallationManifest(selected);
|
|
@@ -8145,6 +8127,7 @@ async function runPlatformLifecycleCommand(commandArgs) {
|
|
|
8145
8127
|
...process.env.VOID_EMAIL_SHARED_ZONE_ID ? { emailSharedZoneId: process.env.VOID_EMAIL_SHARED_ZONE_ID } : {},
|
|
8146
8128
|
...process.env.VOID_EMAIL_SENDER_DOMAIN ? { emailSenderDomain: process.env.VOID_EMAIL_SENDER_DOMAIN } : {},
|
|
8147
8129
|
installationSlug,
|
|
8130
|
+
...args.runtimeLogs !== void 0 ? { runtimeLogs: args.runtimeLogs } : {},
|
|
8148
8131
|
zoneName,
|
|
8149
8132
|
...workersDev ? { workersDev: true } : {}
|
|
8150
8133
|
};
|
|
@@ -8156,6 +8139,7 @@ async function runPlatformLifecycleCommand(commandArgs) {
|
|
|
8156
8139
|
deploymentExecution: runtime.manifest.deploymentExecution === 1
|
|
8157
8140
|
};
|
|
8158
8141
|
let plan = await createPlatformInstallPlan(client, planInput, existing, planOptions);
|
|
8142
|
+
assertPlatformRuntimeLogsSupported(plan.deployment, runtime.manifest);
|
|
8159
8143
|
const commandOptions = {
|
|
8160
8144
|
commandName: cliCommandName(),
|
|
8161
8145
|
accountId,
|
|
@@ -8173,6 +8157,7 @@ async function runPlatformLifecycleCommand(commandArgs) {
|
|
|
8173
8157
|
authentication: authenticationSelection.authentication,
|
|
8174
8158
|
hyperdrive: !existing || isPlatformSetupDraft(existing) || externalHyperdrive && !recordedHyperdrive ? externalHyperdrive?.id ?? "create" : void 0,
|
|
8175
8159
|
runtime: args.runtime,
|
|
8160
|
+
...!existing && plan.deployment.runtimeLogs ? { runtimeLogs: "minimal" } : {},
|
|
8176
8161
|
...existing ? { resumeId: existing.id } : {},
|
|
8177
8162
|
yes: args.yes || process.stdin.isTTY !== true
|
|
8178
8163
|
};
|
|
@@ -8267,7 +8252,7 @@ async function runPlatformLifecycleCommand(commandArgs) {
|
|
|
8267
8252
|
Object.assign(values, updates);
|
|
8268
8253
|
if (credentialSetup) writePendingInstallationSecrets(setupManifest, values);
|
|
8269
8254
|
};
|
|
8270
|
-
const configured = (key, environment) => credentialSetup ? process.env[environment] || values[key] || "" : values[key] || process.env[environment] || "";
|
|
8255
|
+
const configured = (key, environment) => credentialSetup || key === "cloudflareApiToken" ? process.env[environment] || values[key] || "" : values[key] || process.env[environment] || "";
|
|
8271
8256
|
const collect = async (key, environment, message, masked = true, persist = true, validate) => {
|
|
8272
8257
|
let value = configured(key, environment);
|
|
8273
8258
|
if (!value) {
|
|
@@ -8282,7 +8267,8 @@ async function runPlatformLifecycleCommand(commandArgs) {
|
|
|
8282
8267
|
};
|
|
8283
8268
|
const pages = platformSetupPages(plan);
|
|
8284
8269
|
if (!configured("cloudflareApiToken", "VOID_PLATFORM_RUNTIME_CLOUDFLARE_API_TOKEN")) openPlatformSetupPage(pages.runtime);
|
|
8285
|
-
const
|
|
8270
|
+
const savedRuntimeToken = checkpoint?.cloudflareApiToken ?? "";
|
|
8271
|
+
const usingSavedRuntimeToken = !process.env.VOID_PLATFORM_RUNTIME_CLOUDFLARE_API_TOKEN && Boolean(values.cloudflareApiToken);
|
|
8286
8272
|
let runtimeCloudflareApiToken = await collect("cloudflareApiToken", "VOID_PLATFORM_RUNTIME_CLOUDFLARE_API_TOKEN", "Paste runtime API token:", true, false);
|
|
8287
8273
|
let rejectedSavedRuntimeToken = false;
|
|
8288
8274
|
const verifyRuntimeToken = async (token) => {
|
|
@@ -8301,9 +8287,9 @@ async function runPlatformLifecycleCommand(commandArgs) {
|
|
|
8301
8287
|
plan = await verifyPlatformAiGatewayPlan(client, planInput, existing, plan, authoritativeProvisionIntents);
|
|
8302
8288
|
}
|
|
8303
8289
|
} catch (error) {
|
|
8304
|
-
if (
|
|
8290
|
+
if (token === values.cloudflareApiToken && !(error instanceof PlatformRuntimeTokenEmailPermissionError) && isPlatformTokenAuthorizationError(error, checkingRuntimePermissions ? void 0 : "/ai-gateway/")) {
|
|
8305
8291
|
delete values.cloudflareApiToken;
|
|
8306
|
-
writePendingInstallationSecrets(setupManifest, values);
|
|
8292
|
+
if (credentialSetup) writePendingInstallationSecrets(setupManifest, values);
|
|
8307
8293
|
rejectedSavedRuntimeToken = true;
|
|
8308
8294
|
}
|
|
8309
8295
|
throw error;
|
|
@@ -8367,22 +8353,26 @@ async function runPlatformLifecycleCommand(commandArgs) {
|
|
|
8367
8353
|
const hasFullProjectSecretKeyring = Boolean(checkpoint?.projectSecretKeysJson || checkpoint?.projectSecretActiveKeyVersion || process.env.VOID_PLATFORM_PROJECT_SECRET_KEYS_JSON || process.env.VOID_PLATFORM_PROJECT_SECRET_ACTIVE_KEY_VERSION);
|
|
8368
8354
|
const generateIdentityKeys = credentialSetup && !!process.stdin.isTTY;
|
|
8369
8355
|
const generatedKeys = generateIdentityKeys ? [configured("jwtSecret", "VOID_PLATFORM_JWT_SECRET") ? "" : "JWT signing key", configured("projectSecretKey", "VOID_PLATFORM_PROJECT_SECRET_KEY") || hasFullProjectSecretKeyring ? "" : "project encryption key"].filter(Boolean) : [];
|
|
8356
|
+
const replacingRuntimeToken = !credentialSetup && !!savedRuntimeToken && runtimeCloudflareApiToken !== savedRuntimeToken;
|
|
8357
|
+
const updateExistingWorkers = replacingRuntimeToken || !credentialSetup && Boolean(checkpoint?.workerSecretUpdatesJson);
|
|
8358
|
+
const checkpointValue = (value) => updateExistingWorkers ? "" : value;
|
|
8370
8359
|
const secrets = createPlatformInstallationSecrets({
|
|
8371
8360
|
configurableAuthentication: !!authenticationSelection.authentication.configurable,
|
|
8372
8361
|
...authenticationSecrets,
|
|
8373
8362
|
bootstrapGitHubId,
|
|
8374
8363
|
bootstrapGitHubLogin,
|
|
8375
|
-
cloudflareApiToken: runtimeCloudflareApiToken,
|
|
8364
|
+
cloudflareApiToken: replacingRuntimeToken ? runtimeCloudflareApiToken : checkpointValue(runtimeCloudflareApiToken),
|
|
8376
8365
|
checkpoint: values,
|
|
8377
8366
|
databaseUrl: installationDatabaseUrl,
|
|
8378
8367
|
emailEnabled: plan.deployment.capabilities.email,
|
|
8379
|
-
emailSigningSecret: process.env.VOID_PLATFORM_EMAIL_SIGNING_SECRET || "",
|
|
8368
|
+
emailSigningSecret: updateExistingWorkers && values.emailSigningSecret ? "" : process.env.VOID_PLATFORM_EMAIL_SIGNING_SECRET || "",
|
|
8380
8369
|
existingEmailEnabled: existing.deployment.capabilities.email,
|
|
8381
|
-
githubClientId,
|
|
8382
|
-
githubClientSecret,
|
|
8383
|
-
r2AccessKeyId,
|
|
8384
|
-
r2SecretAccessKey,
|
|
8370
|
+
githubClientId: checkpointValue(githubClientId),
|
|
8371
|
+
githubClientSecret: checkpointValue(githubClientSecret),
|
|
8372
|
+
r2AccessKeyId: checkpointValue(r2AccessKeyId),
|
|
8373
|
+
r2SecretAccessKey: checkpointValue(r2SecretAccessKey),
|
|
8385
8374
|
existingInstallation: !credentialSetup,
|
|
8375
|
+
updateExistingWorkers,
|
|
8386
8376
|
generateIdentityKeys,
|
|
8387
8377
|
jwtSecret: generateIdentityKeys ? configured("jwtSecret", "VOID_PLATFORM_JWT_SECRET") : await collect("jwtSecret", "VOID_PLATFORM_JWT_SECRET", "JWT signing key:", true, true, credentialSetup ? (value) => Buffer.byteLength(value, "utf8") >= 32 ? void 0 : "The JWT signing secret must contain at least 32 random bytes." : void 0),
|
|
8388
8378
|
projectSecretKey: configured("projectSecretKey", "VOID_PLATFORM_PROJECT_SECRET_KEY") || (hasFullProjectSecretKeyring || generateIdentityKeys ? "" : await collect("projectSecretKey", "VOID_PLATFORM_PROJECT_SECRET_KEY", "Project encryption key:", true, true, credentialSetup ? (value) => {
|
|
@@ -8472,7 +8462,7 @@ async function runPlatformLifecycleCommand(commandArgs) {
|
|
|
8472
8462
|
})).actions.filter((action) => action.kind === "worker"),
|
|
8473
8463
|
revalidateBeforeWorkerDeploy: (manifest, action) => revalidatePlatformInstallAction(client, plan, manifest, action),
|
|
8474
8464
|
verifyExistingOwnership: async (manifest, databaseCheckpointExists) => {
|
|
8475
|
-
const { verifyPlatformInstallationOwnership } = await import("./platform-management-
|
|
8465
|
+
const { verifyPlatformInstallationOwnership } = await import("./platform-management-BfLW0Zlo.mjs");
|
|
8476
8466
|
const retainedReplacementKeys = new Set(plan.actions.filter((action) => {
|
|
8477
8467
|
const previous = manifest.resources.find((resource) => resource.key === action.key);
|
|
8478
8468
|
return action.action === "create" && previous && previous.name !== action.name;
|
|
@@ -8484,7 +8474,18 @@ async function runPlatformLifecycleCommand(commandArgs) {
|
|
|
8484
8474
|
});
|
|
8485
8475
|
}
|
|
8486
8476
|
});
|
|
8477
|
+
const runtimeLogsWarning = !result.waitingForDns && !result.waitingForSandboxDrain && shouldUpdateProjectWorkerRuntimeLogs({
|
|
8478
|
+
previous: setupManifest.deployment,
|
|
8479
|
+
next: result.manifest.deployment,
|
|
8480
|
+
explicit: args.runtimeLogs !== void 0
|
|
8481
|
+
}) ? await updateProjectWorkerRuntimeLogs(client, {
|
|
8482
|
+
accountId,
|
|
8483
|
+
namespace: result.manifest.deployment.resources.dispatchNamespace,
|
|
8484
|
+
minimal: !!result.manifest.deployment.runtimeLogs,
|
|
8485
|
+
installationId: result.manifest.id
|
|
8486
|
+
}) : void 0;
|
|
8487
8487
|
progress?.stop(result.waitingForDns || result.waitingForSandboxDrain ? "Installation paused. Progress is saved." : "Platform installed.");
|
|
8488
|
+
if (runtimeLogsWarning) log.warn(runtimeLogsWarning);
|
|
8488
8489
|
progress = void 0;
|
|
8489
8490
|
if (result.waitingForDns) {
|
|
8490
8491
|
note(result.zoneNameServers.length > 0 ? `Update the domain at your registrar to use:\n${result.zoneNameServers.join("\n")}\n\nThen rerun: void platform install --resume --name ${result.manifest.id}` : `Wait for ${zoneName} to become active, then rerun:\nvoid platform install --resume --name ${result.manifest.id}`, import_picocolors.default.bold("Waiting for nameservers"));
|
|
@@ -8628,5 +8629,4 @@ async function promptSecret(message, masked = true, validate, placeholder) {
|
|
|
8628
8629
|
if (isCancel(value) || typeof value === "symbol") throw new Error("platform: Cancelled.");
|
|
8629
8630
|
return value;
|
|
8630
8631
|
}
|
|
8631
|
-
//#endregion
|
|
8632
8632
|
export { hyperdriveOriginMatches as $, dnsRecordConfigHash as A, turnOffInstalledProjectZeroTrust as B, createPlatformHealthProbeToken as C, platformTrafficAttachmentWorker as D, recordResource as E, platformAdoptionIntentHash as F, checkpointPlatformAccessResources as G, resolvePlatformCloudflareCredential as H, r2BucketConfigHash as I, PlatformCloudflareApiError as J, parsePlatformAccessSetupSpec as K, resourceMarkerProblem as L, hasProvisionIntentStep as M, legacyResourceConfigHash as N, recordPlatformWorkerTraffic as O, matchesRecordedR2Fingerprint as P, hyperdriveOriginFromConnectionString as Q, revalidatePlatformInstallAction as R, loadPlatformRuntime as S, resolveBootstrapGitHubId as T, verifyPlatformCloudflareCredential as U, assertPlatformOperatorCredentialCanApplyPlan as V, activatePlatformAccessCredentials as W, PlatformRuntimeTokenEmailPermissionError as X, PlatformCloudflareClient as Y, hyperdriveOriginConfigHash as Z, readPlatformProjectSlugs as _, findPlatformWorkerOutsideChanges as a, formatZeroTrustApplications as b, uploadPlatformWorkerOutsideChanges as c, replacePendingInstallationAuthentication as d, verifyPlatformRuntimeTokenEmailPermissions as et, REMOTE_INSTALLATION_MANIFEST_KEY as f, platformDatabaseClientUrl as g, acquirePlatformDatabaseLifecycleLockConnection as h, verifyPlatformAiGatewayPlan as i, formatPlatformInstallPlan as j, createPlatformInstallPlan as k, authenticationSetupRequestHash as l, acquirePlatformDatabaseLifecycleLock as m, resolvePlatformInstallDatabaseUrl as n, formatPlatformWorkerOutsideChanges as o, installPlatform as p, preparePlatformAccessSetup as q, runPlatformLifecycleCommand as r, reviewPlatformWorkerOutsideChanges as s, assertNoninteractivePlatformMutationAcknowledged as t, verifyPlatformRuntimeTokenPermissions as tt, readLoginReplacementFile as u, readPlatformProjectZeroTrustState as v, createPlatformInstallationSecrets as w, readPlatformDatabase as x, assertProjectZeroTrustAllowsUninstall as y, platformDatabaseNameFromOwnerUrl as z };
|