void 0.25.0 → 0.26.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS_TEMPLATE.md +1 -3
- package/README.md +19 -9
- package/dist/{account-cmd-DcR1ywt8.mjs → account-cmd-CfUXh_nU.mjs} +8 -7
- package/dist/{application-analysis-BVsVqc11.mjs → application-analysis-DKy02UY0.mjs} +21 -32
- package/dist/{application-routing-B7QEjqSR.mjs → application-routing-DQyUh_5S.mjs} +1 -1
- package/dist/{auth-7wuZ5ob8.mjs → auth-B5_tZLxT.mjs} +9 -9
- package/dist/{auth-CdgZ9uag.mjs → auth-BgX2qYSY.mjs} +1 -1
- package/dist/{auth-link-Z6E5DYvM.mjs → auth-link-D5RmKnzh.mjs} +5 -5
- package/dist/{auth-migrations-9vif1uj8.mjs → auth-migrations-BwHgeEsD.mjs} +8 -18
- package/dist/{auth-router-BdM4avI8.mjs → auth-router-Bap-pvbn.mjs} +6 -19
- package/dist/{better-auth-shared-BVkjZ3vM.d.mts → better-auth-shared-CPvWD3nG.d.mts} +0 -4
- package/dist/{better-auth-shared-hy6RPh9W.mjs → better-auth-shared-DPpj8zxc.mjs} +94 -16
- package/dist/{build-cmd-CEE7D-hM.mjs → build-cmd-B58c8iS8.mjs} +8 -7
- package/dist/{cache-TcZnBLtH.mjs → cache-Bo52trKF.mjs} +8 -8
- package/dist/{cancel-deploy-CYoZmcmR.mjs → cancel-deploy-BZNz3Q26.mjs} +6 -5
- package/dist/{cf-access-AHKBzmuu.mjs → cf-access-ngGqZpHZ.mjs} +11 -12
- package/dist/{cf-build-output-U8o1Gl6X.mjs → cf-build-output-DjvB_872.mjs} +62 -85
- package/dist/cf-build-output-H9a97vME.mjs +2 -0
- package/dist/cli/cli.mjs +48 -83
- package/dist/cli/cloudflare-operation-process.mjs +71 -77
- package/dist/cli/env-schema-probe.d.mts +1 -1
- package/dist/cli/env-schema-probe.mjs +5 -6
- package/dist/client-By4JjMw_.mjs +2 -0
- package/dist/{client-RsPo8wsP.mjs → client-C2Prx_Bi.mjs} +30 -8
- package/dist/{cloudflare-auth-Qdc7tw8F.mjs → cloudflare-auth-CuxfF6OA.mjs} +9 -17
- package/dist/{cloudflare-cmd-bhwCxAN6.mjs → cloudflare-cmd-lHqNlJGW.mjs} +6 -5
- package/dist/{cloudflare-config-Bktvwtpf.mjs → cloudflare-config-BmhBv3HV.mjs} +1 -1
- package/dist/{cloudflare-connect-CuhRgk3k.mjs → cloudflare-connect-2G3rL2rP.mjs} +4 -4
- package/dist/{cloudflare-operations-BhbK6yTq.mjs → cloudflare-operations-BlYLlowZ.mjs} +1 -1
- package/dist/{cloudflare-operations-CjaV4lZi.mjs → cloudflare-operations-CwI1bChl.mjs} +41 -70
- package/dist/{cloudflare-process-B-wekeR6.mjs → cloudflare-process-2-TfIEzB.mjs} +20 -22
- package/dist/{config-CyQ-wVd7.mjs → config-5r-YpMC-.mjs} +1 -1
- package/dist/{config-C_XRIPx2.mjs → config-B_ggY-IO.mjs} +3 -3
- package/dist/config-BtSFvXZx.mjs +2 -0
- package/dist/config-CLYAosnQ.mjs +78 -0
- package/dist/{config-BMHb8RCj.d.mts → config-CSa15FvD.d.mts} +1 -1
- package/dist/{config-Br_JZD6u.mjs → config-DiowPT80.mjs} +24 -30
- package/dist/config-entry.d.mts +1 -1
- package/dist/{config-write-B1f88wJA.mjs → config-write-AHGesphx.mjs} +8 -7
- package/dist/{connect-DCvUmPXY.mjs → connect-X0MUA1gk.mjs} +12 -11
- package/dist/{create-project-eAPgYq35.mjs → create-project-DxiyW6iX.mjs} +7 -7
- package/dist/{create-project-C734I-Mu.mjs → create-project-iwkbqiBU.mjs} +1 -1
- package/dist/{db-C07GEdKF.mjs → db-XnVMHzoV.mjs} +101 -133
- package/dist/{delete-pKMVsrpJ.mjs → delete-esYlMiSJ.mjs} +8 -8
- package/dist/{deploy-DfsAe-T0.mjs → deploy-BsEvnlJl.mjs} +2377 -2512
- package/dist/deploy-C1d-YTfp.mjs +2 -0
- package/dist/{dev-inbox-D64ZKUod.mjs → dev-inbox-CK-UuPob.mjs} +7 -16
- package/dist/{discover-BcPPiF1o.mjs → discover-CkCYv9T_.mjs} +1 -2
- package/dist/discover-EDUf6JJw.mjs +2 -0
- package/dist/{prompts-ZAuJlyCj.mjs → dist-Bx1z6Eva.mjs} +1 -1
- package/dist/{dist-AoCzRTJE.mjs → dist-Cegxq8gs.mjs} +8 -8
- package/dist/{prompts-6OSVA7DJ.mjs → dist-D3m88sjf.mjs} +10 -53
- package/dist/{domain-D3uA9ize.mjs → domain-CbbBWhWE.mjs} +29 -30
- package/dist/{dotenv-VQxupEUv.mjs → dotenv-BfU6eqFt.mjs} +20 -32
- package/dist/{drizzle-Beb2Am5S.mjs → drizzle-CF84FOVM.mjs} +16 -13
- package/dist/{email-z3o2cwjH.mjs → email-CpuT42g7.mjs} +24 -19
- package/dist/{email--tEtMoj_.mjs → email-d_Aux1vM.mjs} +1 -1
- package/dist/{entry-CF5wvH4w.mjs → entry-CMAkqBmU.mjs} +6 -6
- package/dist/{env-_v349JBd.mjs → env-BxocywBB.mjs} +25 -6
- package/dist/{env-D5liuQYR.mjs → env-DMA3cXZt.mjs} +1 -1
- package/dist/{env-public-BX_r8HR6.d.mts → env-public-DR7ZM6d-.d.mts} +1 -1
- package/dist/{env-raw-Cx8ElDdj.mjs → env-raw-jZpP5n47.mjs} +1 -2
- package/dist/{env-types-D5kds_OZ.mjs → env-types-CwXgeMgL.mjs} +1 -1
- package/dist/{env-validation-cZBvGWaP.mjs → env-validation-CrVNjsPm.mjs} +1 -1
- package/dist/{env-validation-vBSQ8gw5.mjs → env-validation-Dxdx_5wo.mjs} +17 -21
- package/dist/{env-3Q8-_2IH.mjs → env-w9jOyGZn.mjs} +10 -9
- package/dist/{fetch-_SeGZao9.d.mts → fetch-BPCYVi3H.d.mts} +20 -1
- package/dist/{fetch-BIZJh7vR.mjs → fetch-sAcwjzLO.mjs} +1 -1
- package/dist/{fetch-stream-IvCYKyQL.mjs → fetch-stream-PGgz4uGz.mjs} +26 -24
- package/dist/{fetch-stream-Bjf0hoZb.d.mts → fetch-stream-obvZ7fvO.d.mts} +1 -16
- package/dist/{gen-NjwoG9FK.mjs → gen-DtkQhvQg.mjs} +40 -57
- package/dist/gen-dA9hW7AV.mjs +2 -0
- package/dist/{github-cmd-DquUq-b1.mjs → github-cmd-D_FsOFxq.mjs} +65 -164
- package/dist/{handler-DghKr6dU.mjs → handler-BHAn2fZJ.mjs} +1 -0
- package/dist/{handler-CZ4nAylQ.d.mts → handler-CNAwjRcW.d.mts} +5 -12
- package/dist/{head-Do8P4puT.d.mts → head-C8K_iGe6.d.mts} +1 -1
- package/dist/{head-D_QRR5Yd.mjs → head-D2VF4ApL.mjs} +29 -51
- package/dist/{headers-2rKda9Y6.mjs → headers-DlfR78Nu.mjs} +3 -3
- package/dist/{help-DRZXC4fj.mjs → help-CVFBTmBx.mjs} +23 -38
- package/dist/help-DzKUrQvk.mjs +2 -0
- package/dist/{inbound-fRkqcXaC.mjs → inbound-PfQDLXc5.mjs} +23 -24
- package/dist/index.d.mts +19 -2
- package/dist/index.mjs +632 -532
- package/dist/{info-BmA3_IFZ.mjs → info-PYWwkWyt.mjs} +4 -4
- package/dist/{init-DT7yuuyl.mjs → init-Bw-fRKGp.mjs} +161 -197
- package/dist/{limits-Bq5LG8Id.d.mts → limits-CFsDKQvU.d.mts} +1 -10
- package/dist/{limits-Cjuk2VPm.mjs → limits-D0vD1M9A.mjs} +1 -22
- package/dist/{link-CXOlqh2F.mjs → link-DlPG8iX3.mjs} +10 -10
- package/dist/{list-eEWVJEPn.mjs → list-2GN7_ueV.mjs} +11 -9
- package/dist/{live-CB1y5IuC.mjs → live-CgQuTpqD.mjs} +15 -16
- package/dist/{live-Chw1eIMv.d.mts → live-Du8jXwOW.d.mts} +4 -2
- package/dist/{local-d1-Df4XpwhW.mjs → local-d1-ga5O_idV.mjs} +2 -2
- package/dist/{login-pWQHYVu2.mjs → login-D-Q4xw3Q.mjs} +7 -7
- package/dist/login-Dc-wuTDq.mjs +2 -0
- package/dist/{logs-DnxVX7TR.mjs → logs-rd8J-OFh.mjs} +28 -11
- package/dist/migrate-BHp07yJE.mjs +2 -0
- package/dist/{migrate-CV1on-yJ.mjs → migrate-NLsjBbuM.mjs} +34 -20
- package/dist/{mime-D5Nmdzf7.mjs → mime-DxCznlJq.mjs} +45 -95
- package/dist/{node-BkyRWRx8.mjs → node-DJicPvPj.mjs} +5 -5
- package/dist/{operator-args-CAVcmwUt.mjs → operator-args-BNsW5gfp.mjs} +10 -1
- package/dist/{operator-auth-CkmTE3rt.mjs → operator-auth-AzVLbrr3.mjs} +4 -8
- package/dist/{operator-client-LmwjxT6q.mjs → operator-client-BQtzyG-g.mjs} +3 -3
- package/dist/{operator-cmd-d-IEKgNk.mjs → operator-cmd-B6f6Cg9Z.mjs} +45 -14
- package/dist/operator-cmd-Cwn50lOV.mjs +2 -0
- package/dist/{output-BBsUwdyT.mjs → output-C50ag2r3.mjs} +44 -2
- package/dist/pages/client.d.mts +19 -51
- package/dist/pages/client.mjs +204 -225
- package/dist/pages/head-client.d.mts +1 -1
- package/dist/pages/head.d.mts +1 -1
- package/dist/pages/head.mjs +1 -1
- package/dist/pages/index.d.mts +2 -2
- package/dist/pages/index.mjs +6 -12
- package/dist/pages/islands-plugin.d.mts +1 -1
- package/dist/pages/islands-plugin.mjs +21 -25
- package/dist/pages/protocol.d.mts +2 -2
- package/dist/pages/protocol.mjs +2 -2
- package/dist/{plan-NPpwZ_kc.mjs → plan-BhLO2p4w.mjs} +4 -3
- package/dist/plan-CH2G51je.mjs +2 -0
- package/dist/{platform-args-Bzf8JPc2.mjs → platform-args-BoZkWQnJ.mjs} +4 -2
- package/dist/platform-args-DYgITk0D.mjs +2 -0
- package/dist/{platform-auth-config-0V0lA3pF.mjs → platform-auth-config-n603OANg.mjs} +45 -40
- package/dist/{platform-auth-protection-DFeJ-JkK.mjs → platform-auth-protection-zxDr0hWW.mjs} +9 -8
- package/dist/{platform-auth-recovery-ICy4muq6.mjs → platform-auth-recovery-tw9lgtgE.mjs} +8 -7
- package/dist/{platform-cmd-D7vSWMvV.mjs → platform-cmd-B8-bCb7t.mjs} +48 -23
- package/dist/{platform-cmd-BPySFOew.mjs → platform-cmd-C00YM14r.mjs} +1 -1
- package/dist/{platform-discovery-DDDUvnqp.mjs → platform-discovery-BC0HCKYt.mjs} +18 -4
- package/dist/{platform-domain-CUdY064e.mjs → platform-domain-p0kobLV8.mjs} +6 -5
- package/dist/{platform-lifecycle-Dm09JNkn.mjs → platform-lifecycle-D_QEY32D.mjs} +906 -389
- package/dist/{platform-lifecycle-BaUdTRPU.mjs → platform-lifecycle-vFqtNPPa.mjs} +1 -1
- package/dist/{platform-management-BSEc_ZeG.mjs → platform-management-BdYblvvE.mjs} +175 -32
- package/dist/{platform-management-Bp6aoH2C.mjs → platform-management-oi-SvI3f.mjs} +1 -1
- package/dist/{platform-plans-config-B0pOVQyW.mjs → platform-plans-config-CjiFv5J4.mjs} +5 -4
- package/dist/{platform-recovery-WOZ95Uze.mjs → platform-recovery-PvNS9Nl2.mjs} +3 -3
- package/dist/{platform-registry-KfNEF84O.mjs → platform-registry-P387v42A.mjs} +17 -10
- package/dist/platform-setup-DVe42Ws7.mjs +299 -0
- package/dist/{plugin-inference-CXWnn79A.mjs → plugin-inference-BlQbOL0P.mjs} +43 -42
- package/dist/prepare-DRUV-g3X.mjs +2 -0
- package/dist/{prepare-DnaKBi--.mjs → prepare-Do96654b.mjs} +8 -8
- package/dist/{prepare-39EvOhI6.mjs → prepare-Dq9hTIbo.mjs} +4 -3
- package/dist/{prerender-render-D9qbLs2f.mjs → prerender-render-Ct20jftc.mjs} +17 -3
- package/dist/prerender-render.mjs +1 -1
- package/dist/{project-IOjBU8R6.mjs → project-BiaPQ7ur.mjs} +1 -1
- package/dist/{project-BkbfDs0V.mjs → project-DQstYTxO.mjs} +1 -1
- package/dist/{project-cmd-Bs5A392E.mjs → project-cmd-ti8_yTcA.mjs} +19 -19
- package/dist/{project-team-ohAWWaew.mjs → project-team-CDPE1Tsg.mjs} +15 -18
- package/dist/{project-token-CP01Jna6.mjs → project-token-CkZ1cN0Z.mjs} +14 -17
- package/dist/{project-tsconfig-B8GeM0RM.mjs → project-tsconfig-CVJhNMxs.mjs} +2 -1
- package/dist/{project-zero-trust-BzkVgx35.mjs → project-zero-trust-DdjLR61k.mjs} +12 -9
- package/dist/{protocol-CjF_iI9X.d.mts → protocol-BPZaNqBo.d.mts} +4 -2
- package/dist/{protocol-U7bfjHmA.mjs → protocol-CfaUwNs8.mjs} +46 -49
- package/dist/{providers-CJlNS3kT.mjs → providers-BXuhmuub.mjs} +1 -12
- package/dist/{provision-Btj1jppf.mjs → provision-BfaLiWbj.mjs} +51 -42
- package/dist/{provision-BEv0k-qz.mjs → provision-Wu9ZBk9L.mjs} +2 -3
- package/dist/{requests-B3PBuGlX.mjs → requests-DFAqyYy8.mjs} +5 -5
- package/dist/resolve-project-BIeYs9Cw.mjs +2 -0
- package/dist/{resolve-project-BG5ORGID.mjs → resolve-project-CP8rZs_p.mjs} +6 -1
- package/dist/{rollback-DDub9GsO.mjs → rollback-BKYXBduI.mjs} +30 -37
- package/dist/{route-types-Clm4WD0B.mjs → route-types-CbtsIeFn.mjs} +1 -1
- package/dist/route-url-BgPja1GS.d.mts +5 -0
- package/dist/route-url-BjGv_KKY.mjs +28 -0
- package/dist/runner-9wjsSZx-.mjs +2 -0
- package/dist/{runner-Ol0TNjk6.mjs → runner-DMBKSrRk.mjs} +2 -2
- package/dist/{runner-mysql-DmWchSWJ.mjs → runner-mysql-CEzKtmFb.mjs} +8 -8
- package/dist/{runner-mysql-CEG5JozK.mjs → runner-mysql-CkFqZ6CE.mjs} +1 -1
- package/dist/{runner-pg-Bh4AgZdj.mjs → runner-pg-BGYRFdRp.mjs} +1 -1
- package/dist/runtime/ai.d.mts +11 -12
- package/dist/runtime/ai.mjs +47 -113
- package/dist/runtime/better-auth-mysql.d.mts +1 -1
- package/dist/runtime/better-auth-mysql.mjs +4 -9
- package/dist/runtime/better-auth-pg.d.mts +1 -1
- package/dist/runtime/better-auth-pg.mjs +5 -10
- package/dist/runtime/better-auth.d.mts +1 -1
- package/dist/runtime/better-auth.mjs +3 -3
- package/dist/runtime/client-react.d.mts +2 -3
- package/dist/runtime/client-react.mjs +2 -2
- package/dist/runtime/client-solid.d.mts +2 -3
- package/dist/runtime/client-solid.mjs +2 -2
- package/dist/runtime/client-svelte.d.mts +2 -3
- package/dist/runtime/client-svelte.mjs +2 -2
- package/dist/runtime/client-vue.d.mts +2 -3
- package/dist/runtime/client-vue.mjs +2 -2
- package/dist/runtime/client.d.mts +2 -3
- package/dist/runtime/client.mjs +2 -2
- package/dist/runtime/db.mjs +1 -1
- package/dist/runtime/durable.mjs +3 -10
- package/dist/runtime/email/testing.mjs +5 -5
- package/dist/runtime/email.d.mts +2 -1
- package/dist/runtime/email.mjs +11 -27
- package/dist/runtime/env-public.d.mts +1 -1
- package/dist/runtime/env-public.mjs +15 -20
- package/dist/runtime/env.mjs +1 -1
- package/dist/runtime/fetch-stream.d.mts +2 -2
- package/dist/runtime/fetch-stream.mjs +1 -1
- package/dist/runtime/fetch.d.mts +2 -3
- package/dist/runtime/fetch.mjs +1 -1
- package/dist/runtime/handler.d.mts +1 -1
- package/dist/runtime/handler.mjs +2 -2
- package/dist/runtime/isr.mjs +1 -1
- package/dist/runtime/kv.mjs +10 -11
- package/dist/runtime/limits.d.mts +2 -2
- package/dist/runtime/limits.mjs +2 -2
- package/dist/runtime/live-client.d.mts +1 -1
- package/dist/runtime/live-client.mjs +12 -22
- package/dist/runtime/live-server.mjs +27 -35
- package/dist/runtime/live.d.mts +2 -2
- package/dist/runtime/live.mjs +2 -2
- package/dist/runtime/migration-handler.mjs +35 -86
- package/dist/runtime/queues.mjs +1 -1
- package/dist/runtime/remote/binding-handler.d.mts +2 -2
- package/dist/runtime/remote/binding-handler.mjs +8 -9
- package/dist/runtime/remote/index.mjs +27 -77
- package/dist/runtime/route-url.d.mts +2 -4
- package/dist/runtime/route-url.mjs +1 -1
- package/dist/runtime/routing.d.mts +1 -1
- package/dist/runtime/routing.mjs +15 -26
- package/dist/runtime/sandbox.d.mts +1 -1
- package/dist/runtime/sandbox.mjs +14 -24
- package/dist/runtime/sse.mjs +1 -1
- package/dist/runtime/storage.mjs +1 -1
- package/dist/runtime/validator.d.mts +1 -1
- package/dist/runtime/ws-server.d.mts +2 -2
- package/dist/runtime/ws-server.mjs +30 -61
- package/dist/runtime/ws.d.mts +1 -1
- package/dist/runtime/ws.mjs +1 -1
- package/dist/{sandbox-XZAqzFlG.d.mts → sandbox-C5LFoJMf.d.mts} +7 -7
- package/dist/{scan-C7okrLyM.mjs → scan-C3uDzz6J.mjs} +21 -18
- package/dist/{secret-3c72lY1U.mjs → secret-BAt2KMmO.mjs} +15 -15
- package/dist/{skills-BPQUGClu.mjs → skills-BgVMvQdy.mjs} +2 -2
- package/dist/{sse-CQNaDFFV.mjs → sse-CMvCgjNk.mjs} +1 -1
- package/dist/{subcommand-prompt-Dhom39bd.mjs → subcommand-prompt-BSlnD1fI.mjs} +2 -2
- package/dist/sveltekit.d.mts +0 -2
- package/dist/terminal-log-text-D9ACPOuG.mjs +32 -0
- package/dist/validate-BJr9LfXy.mjs +2 -0
- package/dist/{validate-ctOrgiS3.mjs → validate-C9qJArv7.mjs} +9 -28
- package/dist/{defer-YsYDUoii.mjs → validation-error-Dg9Recn1.mjs} +11 -11
- package/dist/{wrangler-DhUerFkW.mjs → wrangler-D9KTuqnv.mjs} +89 -194
- package/dist/{ws-CL1w7GXU.d.mts → ws-CChrrAU-.d.mts} +1 -1
- package/dist/{yarn-pnp-BV4AzNul.mjs → yarn-pnp-CUX_iTPA.mjs} +19 -27
- package/{skills/void/docs → docs}/guide/ai.md +69 -64
- package/{skills/void/docs → docs}/guide/app-types.md +1 -1
- package/{skills/void/docs → docs}/guide/auth.md +37 -1
- package/{skills/void/docs → docs}/guide/database/postgresql.md +2 -2
- package/{skills/void/docs → docs}/guide/database.md +23 -8
- package/{skills/void/docs → docs}/guide/edge/revalidation.md +1 -1
- package/{skills/void/docs → docs}/guide/edge/rewrites.md +2 -4
- package/{skills/void/docs → docs}/guide/email/receiving.md +2 -2
- package/{skills/void/docs → docs}/guide/email/sending.md +0 -2
- package/{skills/void/docs → docs}/guide/env-vars.md +4 -0
- package/{skills/void/docs → docs}/guide/jobs.md +2 -2
- package/{skills/void/docs → docs}/guide/live.md +12 -5
- package/{skills/void/docs → docs}/guide/pages-routing/actions-and-forms.md +21 -9
- package/{skills/void/docs → docs}/guide/pages-routing/loaders.md +7 -3
- package/{skills/void/docs → docs}/guide/pages-routing/markdown.md +15 -23
- package/{skills/void/docs → docs}/guide/pages-routing/overview.md +6 -4
- package/{skills/void/docs → docs}/guide/platform/administration/access.md +2 -10
- package/{skills/void/docs → docs}/guide/platform/administration/operations.md +3 -12
- package/{skills/void/docs → docs}/guide/platform/administration/projects.md +1 -1
- package/{skills/void/docs → docs}/guide/platform/development/local.md +4 -2
- package/{skills/void/docs → docs}/guide/platform/development/runtime.md +1 -1
- package/{skills/void/docs → docs}/guide/platform/development/schema-ci.md +1 -1
- package/{skills/void/docs → docs}/guide/platform/installation/credentials.md +2 -2
- package/{skills/void/docs → docs}/guide/platform/installation/domains.md +3 -1
- package/{skills/void/docs → docs}/guide/platform/installation/first-deployment.md +8 -2
- package/{skills/void/docs → docs}/guide/platform/installation/maintenance.md +7 -1
- package/{skills/void/docs → docs}/guide/platform/installation/setup.md +1 -1
- package/docs/guide/platform/installation/uninstall.md +102 -0
- package/{skills/void/docs → docs}/guide/project-collaboration.md +6 -2
- package/{skills/void/docs → docs}/guide/queues.md +0 -2
- package/{skills/void/docs → docs}/guide/remote-dev.md +5 -5
- package/{skills/void/docs → docs}/guide/sandboxes.md +41 -22
- package/{skills/void/docs → docs}/guide/sse.md +0 -2
- package/{skills/void/docs → docs}/guide/storage.md +7 -2
- package/{skills/void/docs → docs}/guide/websockets.md +4 -0
- package/docs/integrations/agents.md +37 -0
- package/{skills/void/docs → docs}/integrations/frameworks/astro.md +3 -3
- package/{skills/void/docs → docs}/integrations/frameworks/nuxt.md +6 -2
- package/{skills/void/docs → docs}/integrations/hono.md +15 -7
- package/{skills/void/docs → docs}/integrations/nodejs-bun-deno.md +1 -0
- package/{skills/void/docs → docs}/reference/api/auth.md +1 -1
- package/{skills/void/docs → docs}/reference/api/handlers.md +4 -2
- package/{skills/void/docs → docs}/reference/api/pages.md +4 -0
- package/{skills/void/docs → docs}/reference/api/resources.md +11 -14
- package/{skills/void/docs → docs}/reference/api.md +35 -34
- package/{skills/void/docs → docs}/reference/cli/auth.md +3 -6
- package/{skills/void/docs → docs}/reference/cli/database.md +3 -4
- package/{skills/void/docs → docs}/reference/cli/generate.md +1 -1
- package/{skills/void/docs → docs}/reference/cli/github.md +3 -12
- package/{skills/void/docs → docs}/reference/cli/platform-config.md +3 -3
- package/{skills/void/docs → docs}/reference/cli/platform-email.md +2 -3
- package/{skills/void/docs → docs}/reference/cli/platform-installation.md +15 -13
- package/{skills/void/docs → docs}/reference/cli/platform-operations.md +3 -0
- package/{skills/void/docs → docs}/reference/cli/platform-users.md +2 -2
- package/{skills/void/docs → docs}/reference/cli/platform.md +4 -2
- package/{skills/void/docs → docs}/reference/cli/project.md +5 -4
- package/{skills/void/docs → docs}/reference/cli/secrets.md +3 -3
- package/{skills/void/docs → docs}/reference/cli/setup.md +9 -11
- package/{skills/void/docs → docs}/reference/cli.md +2 -2
- package/{skills/void/docs → docs}/reference/config.md +13 -13
- package/{skills/void/docs → docs}/reference/resource-inference.md +2 -16
- package/package.json +34 -30
- package/schema.json +1 -1
- package/skills/migrate-vite-cloudflare-to-void/SKILL.md +4 -1
- package/skills/void/SKILL.md +11 -5
- package/dist/cf-build-output-ChY6-XWP.mjs +0 -2
- package/dist/client-B4Me-9HE.mjs +0 -2
- package/dist/config-0acf1oys.mjs +0 -2
- package/dist/config-D8MOgiQV.mjs +0 -32
- package/dist/deploy-BDu1vhSH.mjs +0 -2
- package/dist/discover-AMCBXivQ.mjs +0 -2
- package/dist/fetch-error-Sp1R4mZv.d.mts +0 -20
- package/dist/gen-ById9r2j.mjs +0 -2
- package/dist/help-DPGBwomV.mjs +0 -2
- package/dist/login-C98-sw79.mjs +0 -2
- package/dist/migrate-CEu2X5DB.mjs +0 -2
- package/dist/plan-D1Q5rf-r.mjs +0 -2
- package/dist/platform-args-Cq6EjQro.mjs +0 -2
- package/dist/prepare-CnjcTV2s.mjs +0 -2
- package/dist/resolve-project-DtbidV4y.mjs +0 -2
- package/dist/route-url-CG7U-cRN.mjs +0 -15
- package/dist/runner-CXA9Fh8h.mjs +0 -2
- package/dist/validate-Dq_L3s0S.mjs +0 -2
- package/skills/void/docs/guide/platform/installation/uninstall.md +0 -69
- package/skills/void/docs/integrations/agents.md +0 -26
- package/dist/{runner-pg-D4OPlil-.mjs → runner-pg-DV8p_zjA.mjs} +4 -4
- package/{skills/void/docs → docs}/guide/database/d1.md +2 -2
- package/{skills/void/docs → docs}/guide/database/mysql.md +0 -0
- package/{skills/void/docs → docs}/guide/deployment.md +0 -0
- package/{skills/void/docs → docs}/guide/durable-state.md +0 -0
- package/{skills/void/docs → docs}/guide/edge/headers.md +0 -0
- package/{skills/void/docs → docs}/guide/edge/prerendering.md +0 -0
- package/{skills/void/docs → docs}/guide/edge/redirects.md +0 -0
- package/{skills/void/docs → docs}/guide/edge/static-assets.md +0 -0
- package/{skills/void/docs → docs}/guide/email/domains.md +0 -0
- package/{skills/void/docs → docs}/guide/email.md +0 -0
- package/{skills/void/docs → docs}/guide/index.md +0 -0
- package/{skills/void/docs → docs}/guide/kv.md +0 -0
- package/{skills/void/docs → docs}/guide/pages-routing/head.md +0 -0
- package/{skills/void/docs → docs}/guide/pages-routing/islands.md +2 -2
- package/{skills/void/docs → docs}/guide/pages-routing/layouts.md +0 -0
- package/{skills/void/docs → docs}/guide/pages-routing/view-transitions.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/administration/email.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/administration/plans.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/administration/zero-trust.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/installation/ci.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/installation/prerequisites.md +0 -0
- package/{skills/void/docs → docs}/guide/platform-administration.md +0 -0
- package/{skills/void/docs → docs}/guide/platform-development.md +0 -0
- package/{skills/void/docs → docs}/guide/quickstart.md +0 -0
- package/{skills/void/docs → docs}/guide/self-hosted-platform.md +0 -0
- package/{skills/void/docs → docs}/guide/server-routing.md +3 -3
- package/{skills/void/docs → docs}/guide/ssg.md +0 -0
- package/{skills/void/docs → docs}/guide/ssr.md +0 -0
- package/{skills/void/docs → docs}/guide/type-safety.md +0 -0
- package/{skills/void/docs → docs}/guide/typed-fetch.md +0 -0
- package/{skills/void/docs → docs}/index.md +0 -0
- package/{skills/void/docs → docs}/integrations/cloudflare.md +0 -0
- package/{skills/void/docs → docs}/integrations/frameworks/analog.md +3 -3
- package/{skills/void/docs → docs}/integrations/frameworks/overview.md +0 -0
- package/{skills/void/docs → docs}/integrations/frameworks/react-router.md +3 -3
- package/{skills/void/docs → docs}/integrations/frameworks/sveltekit.md +1 -1
- package/{skills/void/docs → docs}/integrations/frameworks/tanstack-start.md +2 -2
- package/{skills/void/docs → docs}/reference/api/client.md +0 -0
- package/{skills/void/docs → docs}/reference/api/database.md +2 -2
- /package/{skills/void/docs → docs}/reference/api/durable.md +0 -0
- /package/{skills/void/docs → docs}/reference/api/env.md +0 -0
- /package/{skills/void/docs → docs}/reference/api/plugin.md +0 -0
- /package/{skills/void/docs → docs}/reference/api/rewrites.md +0 -0
- /package/{skills/void/docs → docs}/reference/api/types.md +0 -0
- /package/{skills/void/docs → docs}/reference/cli/deploy.md +0 -0
- /package/{skills/void/docs → docs}/reference/cli/domains.md +0 -0
- /package/{skills/void/docs → docs}/reference/cli/email.md +0 -0
- /package/{skills/void/docs → docs}/reference/cli/platform-zero-trust.md +0 -0
- /package/{skills/void/docs → docs}/reference/structure.md +0 -0
package/dist/pages/head.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as resolveHead, n as renderHeadToString, r as renderHtmlAttrs, t as renderBodyAttrs } from "../head-
|
|
1
|
+
import { i as resolveHead, n as renderHeadToString, r as renderHtmlAttrs, t as renderBodyAttrs } from "../head-D2VF4ApL.mjs";
|
|
2
2
|
export { renderBodyAttrs, renderHeadToString, renderHtmlAttrs, resolveHead };
|
package/dist/pages/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as renderHtmlAttrs, i as renderHeadToString, n as HeadDescriptor, o as resolveHead, r as renderBodyAttrs, t as HeadConfig } from "../head-
|
|
2
|
-
import "../config-
|
|
1
|
+
import { a as renderHtmlAttrs, i as renderHeadToString, n as HeadDescriptor, o as resolveHead, r as renderBodyAttrs, t as HeadConfig } from "../head-C8K_iGe6.mjs";
|
|
2
|
+
import "../config-CSa15FvD.mjs";
|
|
3
3
|
import { i as PageDefinition, n as LayoutDefinition, o as PageScanResult, r as NamedLayoutDefinition } from "../types-BAp5AEBU.mjs";
|
|
4
4
|
import { t as serializePageData } from "../serialize-CfSwWfF2.mjs";
|
|
5
5
|
//#region src/project-paths.d.ts
|
package/dist/pages/index.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { a as join } from "../dist-BVqXeR_h.mjs";
|
|
2
2
|
import { r as resolvePagesDir } from "../project-paths-GgcMozYz.mjs";
|
|
3
|
-
import { m as readConfig } from "../config-
|
|
4
|
-
import { a as resolveNamedLayout, i as resolveLayoutIds, n as resolveEffectiveLayoutChain, r as resolveLayoutChain, t as scanPages } from "../scan-
|
|
5
|
-
import { i as parseRedirectsFile } from "../headers-
|
|
6
|
-
import { i as resolveHead, n as renderHeadToString, r as renderHtmlAttrs, t as renderBodyAttrs } from "../head-
|
|
3
|
+
import { m as readConfig } from "../config-DiowPT80.mjs";
|
|
4
|
+
import { a as resolveNamedLayout, i as resolveLayoutIds, n as resolveEffectiveLayoutChain, o as toLayoutId, r as resolveLayoutChain, t as scanPages } from "../scan-C3uDzz6J.mjs";
|
|
5
|
+
import { i as parseRedirectsFile } from "../headers-DlfR78Nu.mjs";
|
|
6
|
+
import { i as resolveHead, n as renderHeadToString, r as renderHtmlAttrs, t as renderBodyAttrs } from "../head-D2VF4ApL.mjs";
|
|
7
7
|
import { t as serializePageData } from "../serialize-BPvnNQuA.mjs";
|
|
8
8
|
//#region src/pages/manifest.ts
|
|
9
9
|
/**
|
|
@@ -17,15 +17,9 @@ function generateComponentManifest(scan, pagesDir) {
|
|
|
17
17
|
const importPath = `${pagesDir}/${page.componentPath}`;
|
|
18
18
|
lines.push(` ${JSON.stringify(page.componentId)}: () => import(${JSON.stringify(importPath)}),`);
|
|
19
19
|
}
|
|
20
|
-
for (const layout of scan.layouts) {
|
|
20
|
+
for (const layout of [...scan.layouts, ...scan.namedLayouts]) {
|
|
21
21
|
const importPath = `${pagesDir}/${layout.filePath}`;
|
|
22
|
-
|
|
23
|
-
lines.push(` ${JSON.stringify(layoutId)}: () => import(${JSON.stringify(importPath)}),`);
|
|
24
|
-
}
|
|
25
|
-
for (const namedLayout of scan.namedLayouts) {
|
|
26
|
-
const importPath = `${pagesDir}/${namedLayout.filePath}`;
|
|
27
|
-
const layoutId = namedLayout.directory ? `${namedLayout.directory}/_layouts/${namedLayout.name}` : `_layouts/${namedLayout.name}`;
|
|
28
|
-
lines.push(` ${JSON.stringify(layoutId)}: () => import(${JSON.stringify(importPath)}),`);
|
|
22
|
+
lines.push(` ${JSON.stringify(toLayoutId(layout))}: () => import(${JSON.stringify(importPath)}),`);
|
|
29
23
|
}
|
|
30
24
|
lines.push("};");
|
|
31
25
|
lines.push("const layoutTree = {");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { o as PageScanResult } from "../types-BAp5AEBU.mjs";
|
|
2
2
|
import { ResolvedConfig, ViteDevServer } from "vite";
|
|
3
|
-
//#region ../../node_modules/.pnpm/magic-string@1.4.
|
|
3
|
+
//#region ../../node_modules/.pnpm/magic-string@1.4.3/node_modules/magic-string/dist/index.d.mts
|
|
4
4
|
//#region src/SourceMap.d.ts
|
|
5
5
|
interface SourceMapOptions {
|
|
6
6
|
/**
|
|
@@ -1,22 +1,32 @@
|
|
|
1
1
|
import { n as dirname, u as resolve } from "../dist-BVqXeR_h.mjs";
|
|
2
2
|
import { n as isIdentifier, r as isLiteral } from "../ast-CPGPjb0V.mjs";
|
|
3
|
-
import { n as resolveEffectiveLayoutChain, t as scanPages } from "../scan-
|
|
4
|
-
import { t as MagicString } from "../dist-
|
|
3
|
+
import { n as resolveEffectiveLayoutChain, t as scanPages } from "../scan-C3uDzz6J.mjs";
|
|
4
|
+
import { t as MagicString } from "../dist-Cegxq8gs.mjs";
|
|
5
5
|
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
6
6
|
import { normalizePath, parseSync } from "vite";
|
|
7
7
|
//#region src/pages/island-imports.ts
|
|
8
|
-
/**
|
|
9
|
-
function
|
|
10
|
-
if (
|
|
11
|
-
const scripts = /\.(?:vue|svelte)$/.test(filename) ? [...code.matchAll(/<script\b[^>]*>([\s\S]*?)<\/script\s*>/gi)].map((match) => ({
|
|
12
|
-
source: match[1],
|
|
13
|
-
filename: filename.replace(/\.(?:vue|svelte)$/, ".ts")
|
|
14
|
-
})) : [{
|
|
8
|
+
/** The whole JS/TS module, or each `<script>` block of a Vue/Svelte SFC with its offset in the file. */
|
|
9
|
+
function scriptBlocks(code, filename) {
|
|
10
|
+
if (!/\.(?:vue|svelte)$/.test(filename)) return [{
|
|
15
11
|
source: code,
|
|
12
|
+
offset: 0,
|
|
16
13
|
filename
|
|
17
14
|
}];
|
|
15
|
+
const scriptFilename = filename.replace(/\.(?:vue|svelte)$/, ".ts");
|
|
16
|
+
return [...code.matchAll(/<script\b[^>]*>([\s\S]*?)<\/script\s*>/gi)].map((match) => {
|
|
17
|
+
const source = match[1];
|
|
18
|
+
return {
|
|
19
|
+
source,
|
|
20
|
+
offset: match.index + match[0].indexOf(source),
|
|
21
|
+
filename: scriptFilename
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/** Collect stylesheet imports from authored modules without treating dynamic imports or text as dependencies. */
|
|
26
|
+
function findStaticCssImports(code, filename) {
|
|
27
|
+
if (!code.includes("import")) return [];
|
|
18
28
|
const imports = [];
|
|
19
|
-
for (const script of
|
|
29
|
+
for (const script of scriptBlocks(code, filename)) {
|
|
20
30
|
if (!script.source.includes("import")) continue;
|
|
21
31
|
const program = parseSync(script.filename, script.source).program;
|
|
22
32
|
for (const node of program.body ?? []) {
|
|
@@ -44,22 +54,8 @@ function editIslandSource(code, edits, options) {
|
|
|
44
54
|
/** Read island import attributes from JS/TS, or script blocks inside an SFC. */
|
|
45
55
|
function findIslandImports(code, filename) {
|
|
46
56
|
if (!code.includes("import") || !code.includes("island")) return [];
|
|
47
|
-
const scripts = [];
|
|
48
|
-
if (/\.(?:vue|svelte)$/.test(filename)) for (const match of code.matchAll(/<script\b[^>]*>([\s\S]*?)<\/script\s*>/gi)) {
|
|
49
|
-
const source = match[1];
|
|
50
|
-
scripts.push({
|
|
51
|
-
source,
|
|
52
|
-
offset: match.index + match[0].indexOf(source),
|
|
53
|
-
filename: filename.replace(/\.(?:vue|svelte)$/, ".ts")
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
else scripts.push({
|
|
57
|
-
source: code,
|
|
58
|
-
offset: 0,
|
|
59
|
-
filename
|
|
60
|
-
});
|
|
61
57
|
const imports = [];
|
|
62
|
-
for (const script of
|
|
58
|
+
for (const script of scriptBlocks(code, filename)) {
|
|
63
59
|
if (!script.source.includes("island")) continue;
|
|
64
60
|
const program = parseSync(script.filename, script.source).program;
|
|
65
61
|
for (const node of program.body ?? []) {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { w as ValidationError } from "../handler-
|
|
2
|
-
import { a as handlePageMutation, i as handlePageGet, n as PageRenderResult, o as safeJsonStringify, r as flattenValidationErrors, t as PageObject } from "../protocol-
|
|
1
|
+
import { w as ValidationError } from "../handler-CNAwjRcW.mjs";
|
|
2
|
+
import { a as handlePageMutation, i as handlePageGet, n as PageRenderResult, o as safeJsonStringify, r as flattenValidationErrors, t as PageObject } from "../protocol-BPZaNqBo.mjs";
|
|
3
3
|
export { PageObject, PageRenderResult, ValidationError, flattenValidationErrors, handlePageGet, handlePageMutation, safeJsonStringify };
|
package/dist/pages/protocol.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { i as safeJsonStringify, n as handlePageGet, r as handlePageMutation, t as flattenValidationErrors } from "../protocol-
|
|
1
|
+
import { t as ValidationError } from "../validation-error-Dg9Recn1.mjs";
|
|
2
|
+
import { i as safeJsonStringify, n as handlePageGet, r as handlePageMutation, t as flattenValidationErrors } from "../protocol-CfaUwNs8.mjs";
|
|
3
3
|
export { ValidationError, flattenValidationErrors, handlePageGet, handlePageMutation, safeJsonStringify };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MIGRATION_CLASSIFIER_VERSION, canonicalJson, canonicalSql, classifySqlMigration, getMigrationPlanHashInput, tokenizeSql } from "@void/deploy-core";
|
|
1
|
+
import { MIGRATION_CLASSIFIER_VERSION, canonicalJson, canonicalSql, classifySqlMigration, getMigrationPlanHashInput, splitSqlStatements, tokenizeSql } from "@void/deploy-core";
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
3
|
//#region src/migrations/plan.ts
|
|
4
4
|
const DESTRUCTIVE_PRAGMA = "-- void:allow-destructive";
|
|
@@ -15,6 +15,7 @@ function computeMigrationListHash(plans) {
|
|
|
15
15
|
plan.planHash
|
|
16
16
|
])));
|
|
17
17
|
}
|
|
18
|
+
/** Blank out comments, strings and quoted identifiers, keeping offsets stable. */
|
|
18
19
|
function getExecutableSql(sql) {
|
|
19
20
|
let out = "";
|
|
20
21
|
for (const segment of tokenizeSql(sql)) if (segment.kind === "sql") out += sql.slice(segment.start, segment.end);
|
|
@@ -41,7 +42,7 @@ function classifyMigration(migration) {
|
|
|
41
42
|
return {
|
|
42
43
|
...base,
|
|
43
44
|
planHash: hashPlan(base),
|
|
44
|
-
...classification.kind === "legacy-unsplit-multi-statement" ? { warnings: [`
|
|
45
|
+
...classification.kind === "legacy-unsplit-multi-statement" && splitSqlStatements(sql) === null ? { warnings: [`Add a \`--> statement-breakpoint\` line after each complete SQL statement in migration ${migration.name}.`] } : {}
|
|
45
46
|
};
|
|
46
47
|
}
|
|
47
48
|
function buildMigrationPlanBundle(migrations) {
|
|
@@ -55,4 +56,4 @@ function buildMigrationPlanBundle(migrations) {
|
|
|
55
56
|
};
|
|
56
57
|
}
|
|
57
58
|
//#endregion
|
|
58
|
-
export {
|
|
59
|
+
export { getExecutableSql as i, buildMigrationPlanBundle as n, classifyMigration as r, DESTRUCTIVE_PRAGMA as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as operatorGroups, r as parseOperatorArgs } from "./operator-args-
|
|
1
|
+
import { n as operatorGroups, r as parseOperatorArgs } from "./operator-args-BNsW5gfp.mjs";
|
|
2
2
|
import { PLATFORM_LOGIN_KINDS, normalizePlatformDashboardUrl, parsePlatformLoginId } from "@void/platform";
|
|
3
3
|
import { parsePlatformPlanId } from "@void/platform/plans";
|
|
4
4
|
//#region src/cli/platform-config-args.ts
|
|
@@ -416,6 +416,7 @@ function parsePlatformArgs(args) {
|
|
|
416
416
|
if (subcommand === "uninstall") {
|
|
417
417
|
const parsed = parseSelector(rest.filter((arg) => ![
|
|
418
418
|
"--purge-data",
|
|
419
|
+
"--purge-resources",
|
|
419
420
|
"--delete-zone",
|
|
420
421
|
"--keep-zone"
|
|
421
422
|
].includes(arg)), subcommand, { allowYes: true });
|
|
@@ -424,7 +425,8 @@ function parsePlatformArgs(args) {
|
|
|
424
425
|
subcommand,
|
|
425
426
|
selector: parsed.selector,
|
|
426
427
|
plan: parsed.plan,
|
|
427
|
-
purgeData: rest.includes("--purge-data"),
|
|
428
|
+
purgeData: rest.includes("--purge-data") || rest.includes("--purge-resources"),
|
|
429
|
+
purgeResources: rest.includes("--purge-resources"),
|
|
428
430
|
yes: parsed.yes,
|
|
429
431
|
deleteZone: rest.includes("--delete-zone") ? true : rest.includes("--keep-zone") ? false : null
|
|
430
432
|
};
|
|
@@ -1,19 +1,22 @@
|
|
|
1
|
-
import { u as openBrowser } from "./auth-
|
|
2
|
-
import { A as confirm, K as select, U as password, X as text,
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { u as openBrowser } from "./auth-B5_tZLxT.mjs";
|
|
2
|
+
import { A as confirm, K as select, U as password, X as text, z as multiselect } from "./dist-D3m88sjf.mjs";
|
|
3
|
+
import { d as printSuccess } from "./output-C50ag2r3.mjs";
|
|
4
|
+
import { n as OperatorClient } from "./operator-client-BQtzyG-g.mjs";
|
|
5
|
+
import { a as resolveOperatorOrigin, r as readOperatorToken } from "./operator-auth-AzVLbrr3.mjs";
|
|
6
|
+
import { i as humanLines } from "./operator-cmd-B6f6Cg9Z.mjs";
|
|
7
|
+
import { o as platformPromptAnswer } from "./platform-setup-DVe42Ws7.mjs";
|
|
5
8
|
import { parsePlatformAdmissionPolicy, parsePlatformLoginConfiguration } from "@void/platform";
|
|
6
9
|
import { stripVTControlCharacters } from "node:util";
|
|
7
10
|
import { execFile } from "node:child_process";
|
|
8
11
|
import { setTimeout } from "node:timers/promises";
|
|
9
12
|
import { readFile } from "node:fs/promises";
|
|
10
13
|
//#region src/cli/platform-auth-config.ts
|
|
11
|
-
function
|
|
12
|
-
|
|
13
|
-
return input;
|
|
14
|
+
function print(result, json) {
|
|
15
|
+
console.log(json ? JSON.stringify(result, null, 2) : humanLines(result).join("\n"));
|
|
14
16
|
}
|
|
15
|
-
function
|
|
16
|
-
|
|
17
|
+
function printApplied(result, args) {
|
|
18
|
+
print(result, args.json);
|
|
19
|
+
if (!args.json && !args.plan) printSuccess("Platform authentication configuration updated.");
|
|
17
20
|
}
|
|
18
21
|
async function apply(client, path, body, args) {
|
|
19
22
|
const preview = await client.request(path, {
|
|
@@ -27,7 +30,7 @@ async function apply(client, path, body, args) {
|
|
|
27
30
|
if (!args.yes) {
|
|
28
31
|
if (!process.stdin.isTTY) throw new Error("platform: Configuration changes require --yes or --plan in non-interactive mode.");
|
|
29
32
|
console.error(JSON.stringify(preview, null, 2));
|
|
30
|
-
if (!
|
|
33
|
+
if (!platformPromptAnswer(await confirm({
|
|
31
34
|
message: `Apply this change to ${client.origin}?`,
|
|
32
35
|
initialValue: false
|
|
33
36
|
}))) throw new Error("platform: Cancelled.");
|
|
@@ -91,11 +94,11 @@ async function configurationInput(args, existing) {
|
|
|
91
94
|
input.id = id || input.id || (kind === "github" || kind === "google" ? kind : kind === "oidc" ? "company" : "access");
|
|
92
95
|
const interactive = !!process.stdin.isTTY && !args.file;
|
|
93
96
|
if (interactive) {
|
|
94
|
-
if (!existing && kind !== "github" && kind !== "google" && !args.id) input.id =
|
|
97
|
+
if (!existing && kind !== "github" && kind !== "google" && !args.id) input.id = platformPromptAnswer(await text({
|
|
95
98
|
message: "Connection ID:",
|
|
96
99
|
initialValue: String(input.id)
|
|
97
100
|
}));
|
|
98
|
-
input.label =
|
|
101
|
+
input.label = platformPromptAnswer(await text({
|
|
99
102
|
message: "Login button label:",
|
|
100
103
|
initialValue: String(input.label ?? {
|
|
101
104
|
github: "GitHub",
|
|
@@ -104,23 +107,23 @@ async function configurationInput(args, existing) {
|
|
|
104
107
|
"cloudflare-access": "Cloudflare Access"
|
|
105
108
|
}[kind])
|
|
106
109
|
}));
|
|
107
|
-
if (kind === "oidc" || kind === "cloudflare-access") input.issuer =
|
|
110
|
+
if (kind === "oidc" || kind === "cloudflare-access") input.issuer = platformPromptAnswer(await text({
|
|
108
111
|
message: "OIDC issuer URL:",
|
|
109
112
|
initialValue: String(input.issuer ?? "")
|
|
110
113
|
}));
|
|
111
|
-
input.clientId =
|
|
114
|
+
input.clientId = platformPromptAnswer(await text({
|
|
112
115
|
message: "Client ID:",
|
|
113
116
|
initialValue: String(input.clientId ?? "")
|
|
114
117
|
}));
|
|
115
118
|
if (kind === "google") {
|
|
116
|
-
const domains =
|
|
119
|
+
const domains = platformPromptAnswer(await text({
|
|
117
120
|
message: "Allowed Workspace domains (comma-separated; blank allows any Google account):",
|
|
118
121
|
initialValue: Array.isArray(input.allowedDomains) ? input.allowedDomains.join(", ") : ""
|
|
119
122
|
}));
|
|
120
123
|
input.allowedDomains = domains.split(",").map((domain) => domain.trim()).filter(Boolean);
|
|
121
124
|
}
|
|
122
125
|
if (kind === "oidc" || kind === "cloudflare-access") {
|
|
123
|
-
const groups =
|
|
126
|
+
const groups = platformPromptAnswer(await text({
|
|
124
127
|
message: "Allowed groups (comma-separated; blank uses the provider’s access policy):",
|
|
125
128
|
initialValue: Array.isArray(input.requiredGroups) ? input.requiredGroups.join(", ") : ""
|
|
126
129
|
}));
|
|
@@ -131,7 +134,7 @@ async function configurationInput(args, existing) {
|
|
|
131
134
|
if (existing && configuration.id !== existing.id) throw new Error("platform: Use add to create a connection with a new ID.");
|
|
132
135
|
let secret = args.clientSecretEnv ? process.env[args.clientSecretEnv] : void 0;
|
|
133
136
|
if (args.clientSecretEnv && !secret) throw new Error(`platform: ${args.clientSecretEnv} must contain the client secret.`);
|
|
134
|
-
if (!args.clientSecretEnv && interactive) secret =
|
|
137
|
+
if (!args.clientSecretEnv && interactive) secret = platformPromptAnswer(await password({ message: existing ? "Client secret (leave blank to keep the saved secret):" : "Client secret:" })) || void 0;
|
|
135
138
|
if (!existing && !secret) throw new Error("platform: Provide --client-secret-env or enter a client secret interactively.");
|
|
136
139
|
return {
|
|
137
140
|
configuration,
|
|
@@ -140,11 +143,11 @@ async function configurationInput(args, existing) {
|
|
|
140
143
|
}
|
|
141
144
|
async function runPlatformAuthConfig(args) {
|
|
142
145
|
if (args.action === "recover") {
|
|
143
|
-
const { runPlatformAuthRecovery } = await import("./platform-auth-recovery-
|
|
146
|
+
const { runPlatformAuthRecovery } = await import("./platform-auth-recovery-tw9lgtgE.mjs");
|
|
144
147
|
return runPlatformAuthRecovery(args);
|
|
145
148
|
}
|
|
146
149
|
if (args.action === "protection") {
|
|
147
|
-
const { runPlatformProtectionConfig } = await import("./platform-auth-protection-
|
|
150
|
+
const { runPlatformProtectionConfig } = await import("./platform-auth-protection-zxDr0hWW.mjs");
|
|
148
151
|
return runPlatformProtectionConfig(args);
|
|
149
152
|
}
|
|
150
153
|
const origin = resolveOperatorOrigin(args.connection);
|
|
@@ -152,15 +155,15 @@ async function runPlatformAuthConfig(args) {
|
|
|
152
155
|
const listing = await client.request("/config/auth");
|
|
153
156
|
if (!args.action) {
|
|
154
157
|
if (!process.stdin.isTTY || args.json) {
|
|
155
|
-
print(listing);
|
|
158
|
+
print(listing, args.json);
|
|
156
159
|
return;
|
|
157
160
|
}
|
|
158
161
|
if (!listing.initialized) {
|
|
159
|
-
|
|
162
|
+
printApplied(await apply(client, "/config/auth/initialize", {}, args), args);
|
|
160
163
|
console.log("Run void platform auth login, then return to void platform config auth.");
|
|
161
164
|
return;
|
|
162
165
|
}
|
|
163
|
-
const chosen =
|
|
166
|
+
const chosen = platformPromptAnswer(await select({
|
|
164
167
|
message: "Platform authentication:",
|
|
165
168
|
options: [
|
|
166
169
|
...listing.methods.map((method) => ({
|
|
@@ -182,7 +185,7 @@ async function runPlatformAuthConfig(args) {
|
|
|
182
185
|
]
|
|
183
186
|
}));
|
|
184
187
|
if (chosen === ":protection") {
|
|
185
|
-
const target =
|
|
188
|
+
const target = platformPromptAnswer(await select({
|
|
186
189
|
message: "Platform protection:",
|
|
187
190
|
options: [
|
|
188
191
|
{
|
|
@@ -210,7 +213,7 @@ async function runPlatformAuthConfig(args) {
|
|
|
210
213
|
action: "admission"
|
|
211
214
|
});
|
|
212
215
|
if (chosen === ":add") {
|
|
213
|
-
const kind =
|
|
216
|
+
const kind = platformPromptAnswer(await select({
|
|
214
217
|
message: "Login method:",
|
|
215
218
|
options: [
|
|
216
219
|
{
|
|
@@ -238,7 +241,7 @@ async function runPlatformAuthConfig(args) {
|
|
|
238
241
|
});
|
|
239
242
|
}
|
|
240
243
|
const method = listing.methods.find((method) => method.id === chosen);
|
|
241
|
-
const action =
|
|
244
|
+
const action = platformPromptAnswer(await select({
|
|
242
245
|
message: stripVTControlCharacters(method.label),
|
|
243
246
|
options: [
|
|
244
247
|
{
|
|
@@ -266,11 +269,11 @@ async function runPlatformAuthConfig(args) {
|
|
|
266
269
|
});
|
|
267
270
|
}
|
|
268
271
|
if (args.action === "list") {
|
|
269
|
-
print(listing);
|
|
272
|
+
print(listing, args.json);
|
|
270
273
|
return;
|
|
271
274
|
}
|
|
272
275
|
if (args.action === "initialize") {
|
|
273
|
-
|
|
276
|
+
printApplied(await apply(client, "/config/auth/initialize", {}, args), args);
|
|
274
277
|
return;
|
|
275
278
|
}
|
|
276
279
|
if (!listing.initialized) throw new Error("platform: Run void platform config auth initialize, then sign in again.");
|
|
@@ -279,7 +282,7 @@ async function runPlatformAuthConfig(args) {
|
|
|
279
282
|
if (args.file) admission = JSON.parse(await readFile(args.file, "utf8"));
|
|
280
283
|
else {
|
|
281
284
|
if (!process.stdin.isTTY || args.json) throw new Error("platform: Supply --file with the signup policy in non-interactive mode.");
|
|
282
|
-
const mode =
|
|
285
|
+
const mode = platformPromptAnswer(await select({
|
|
283
286
|
message: "Who can create an account?",
|
|
284
287
|
initialValue: listing.admission?.mode ?? "restricted",
|
|
285
288
|
options: [
|
|
@@ -298,7 +301,7 @@ async function runPlatformAuthConfig(args) {
|
|
|
298
301
|
]
|
|
299
302
|
}));
|
|
300
303
|
if (mode === "company") {
|
|
301
|
-
const access = !!listing.protection &&
|
|
304
|
+
const access = !!listing.protection && platformPromptAnswer(await confirm({
|
|
302
305
|
message: "Allow everyone approved by Cloudflare Access protection?",
|
|
303
306
|
initialValue: true
|
|
304
307
|
}));
|
|
@@ -307,7 +310,7 @@ async function runPlatformAuthConfig(args) {
|
|
|
307
310
|
admission = {
|
|
308
311
|
mode,
|
|
309
312
|
access,
|
|
310
|
-
connections: eligible.length ?
|
|
313
|
+
connections: eligible.length ? platformPromptAnswer(await multiselect({
|
|
311
314
|
message: "Login methods whose company policies qualify new users:",
|
|
312
315
|
required: !access,
|
|
313
316
|
options: eligible.map((method) => ({
|
|
@@ -318,29 +321,31 @@ async function runPlatformAuthConfig(args) {
|
|
|
318
321
|
};
|
|
319
322
|
} else admission = { mode };
|
|
320
323
|
}
|
|
321
|
-
|
|
324
|
+
printApplied(await apply(client, "/config/auth/admission", {
|
|
322
325
|
revision: listing.revision,
|
|
323
326
|
admission: parsePlatformAdmissionPolicy(admission)
|
|
324
|
-
}, args));
|
|
327
|
+
}, args), args);
|
|
325
328
|
return;
|
|
326
329
|
}
|
|
327
330
|
const method = listing.methods.find((method) => method.id === args.target);
|
|
328
331
|
if (args.action !== "add" && !method) throw new Error("platform: Login method not found. Run void platform config auth list.");
|
|
329
332
|
if (args.action === "show") {
|
|
330
|
-
print(method);
|
|
333
|
+
print(method, args.json);
|
|
331
334
|
return;
|
|
332
335
|
}
|
|
333
336
|
if (args.action === "test") {
|
|
334
|
-
|
|
337
|
+
const tested = await testMethod(client, args.target, args);
|
|
338
|
+
print(tested, args.json);
|
|
339
|
+
if (!args.json && !args.plan && tested.complete === true) printSuccess("Platform login verified.");
|
|
335
340
|
return;
|
|
336
341
|
}
|
|
337
342
|
if (args.action === "add" || args.action === "configure") {
|
|
338
343
|
console.error(`Register this callback URL with the provider: ${listing.callbackUrl ?? `${origin}/auth/callback`}`);
|
|
339
344
|
const input = await configurationInput(args, args.action === "configure" ? method : void 0);
|
|
340
|
-
|
|
345
|
+
printApplied(await apply(client, `/config/auth/connections/${encodeURIComponent(input.configuration.id)}/configure`, {
|
|
341
346
|
...input,
|
|
342
347
|
revision: args.action === "add" ? null : method.revision
|
|
343
|
-
}, args));
|
|
348
|
+
}, args), args);
|
|
344
349
|
if (!args.plan && !args.json) console.log(`Test and enable it with void platform config auth enable ${input.configuration.id}.`);
|
|
345
350
|
return;
|
|
346
351
|
}
|
|
@@ -348,10 +353,10 @@ async function runPlatformAuthConfig(args) {
|
|
|
348
353
|
if ((args.action === "enable" || args.action === "link") && !testId) {
|
|
349
354
|
if (!process.stdin.isTTY || args.plan || args.json) throw new Error("platform: Complete a login test and supply its --test-id.");
|
|
350
355
|
const tested = await testMethod(client, args.target, args);
|
|
351
|
-
print(tested);
|
|
356
|
+
print(tested, args.json);
|
|
352
357
|
if (tested.complete !== true || typeof tested.id !== "string") throw new Error("platform: Complete the browser test before enabling or linking this login.");
|
|
353
358
|
testId = tested.id;
|
|
354
|
-
if (args.action === "enable" &&
|
|
359
|
+
if (args.action === "enable" && platformPromptAnswer(await confirm({
|
|
355
360
|
message: "Link this verified identity to your administrator account?",
|
|
356
361
|
initialValue: true
|
|
357
362
|
}))) await apply(client, `/config/auth/connections/${encodeURIComponent(args.target)}/link`, {
|
|
@@ -359,10 +364,10 @@ async function runPlatformAuthConfig(args) {
|
|
|
359
364
|
testId
|
|
360
365
|
}, args);
|
|
361
366
|
}
|
|
362
|
-
|
|
367
|
+
printApplied(await apply(client, `/config/auth/connections/${encodeURIComponent(args.target)}/${args.action}`, {
|
|
363
368
|
revision: method.revision,
|
|
364
369
|
...testId ? { testId } : {}
|
|
365
|
-
}, args));
|
|
370
|
+
}, args), args);
|
|
366
371
|
}
|
|
367
372
|
//#endregion
|
|
368
373
|
export { runPlatformAuthConfig };
|
package/dist/{platform-auth-protection-DFeJ-JkK.mjs → platform-auth-protection-zxDr0hWW.mjs}
RENAMED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { S as writePendingInstallationSecrets, c as normalizePlatformApiUrl, m as readInstallationRecoverySecrets, p as promoteInstallationSecrets, t as acquirePlatformLifecycleLock, v as resolveInstallationManifest, x as writeInstallationManifest } from "./platform-registry-P387v42A.mjs";
|
|
2
2
|
import { t as cfAccessHeaders } from "./cf-access-TWNzXltp.mjs";
|
|
3
|
-
import { n as ensurePlatformAccessToken } from "./cf-access-
|
|
4
|
-
import { A as confirm, tt as isCancel } from "./
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
3
|
+
import { n as ensurePlatformAccessToken } from "./cf-access-ngGqZpHZ.mjs";
|
|
4
|
+
import { A as confirm, tt as isCancel } from "./dist-D3m88sjf.mjs";
|
|
5
|
+
import { d as printSuccess } from "./output-C50ag2r3.mjs";
|
|
6
|
+
import { n as OperatorClient } from "./operator-client-BQtzyG-g.mjs";
|
|
7
|
+
import { a as resolveOperatorOrigin, r as readOperatorToken } from "./operator-auth-AzVLbrr3.mjs";
|
|
8
|
+
import { G as preparePlatformAccessSetup, K as PlatformCloudflareClient, U as checkpointPlatformAccessResources, V as resolvePlatformCloudflareCredential, W as parsePlatformAccessSetupSpec, n as resolvePlatformInstallDatabaseUrl, s as acquirePlatformDatabaseLifecycleLock } from "./platform-lifecycle-D_QEY32D.mjs";
|
|
9
|
+
import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-BdYblvvE.mjs";
|
|
9
10
|
import { parsePlatformAccessProtection, platformProtectionProofMessage } from "@void/platform";
|
|
10
11
|
import { createHmac } from "node:crypto";
|
|
11
12
|
import { readFile } from "node:fs/promises";
|
|
@@ -212,7 +213,7 @@ async function runPlatformProtectionConfig(args) {
|
|
|
212
213
|
protection,
|
|
213
214
|
retainedAccessApplications: true
|
|
214
215
|
}, null, 2));
|
|
215
|
-
if (!args.json)
|
|
216
|
+
if (!args.json) printSuccess("Platform protection updated. Sign in again with void platform auth login. Existing Access applications and policies were retained.");
|
|
216
217
|
} finally {
|
|
217
218
|
release();
|
|
218
219
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { u as openBrowser } from "./auth-
|
|
3
|
-
import { A as confirm, tt as isCancel } from "./
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import { m as readInstallationRecoverySecrets, t as acquirePlatformLifecycleLock, v as resolveInstallationManifest } from "./platform-registry-P387v42A.mjs";
|
|
2
|
+
import { u as openBrowser } from "./auth-B5_tZLxT.mjs";
|
|
3
|
+
import { A as confirm, tt as isCancel } from "./dist-D3m88sjf.mjs";
|
|
4
|
+
import { d as printSuccess } from "./output-C50ag2r3.mjs";
|
|
5
|
+
import { a as resolveOperatorOrigin } from "./operator-auth-AzVLbrr3.mjs";
|
|
6
|
+
import { K as PlatformCloudflareClient, V as resolvePlatformCloudflareCredential, c as acquirePlatformDatabaseLifecycleLockConnection, l as platformDatabaseClientUrl, n as resolvePlatformInstallDatabaseUrl } from "./platform-lifecycle-D_QEY32D.mjs";
|
|
7
|
+
import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-BdYblvvE.mjs";
|
|
7
8
|
import { parsePlatformAccessProtection, parsePlatformAdmissionPolicy, parsePlatformLoginConfiguration, platformAuthenticationRecoveryMessage, validatePlatformAdmissionPolicy } from "@void/platform";
|
|
8
9
|
import { createCipheriv, createDecipheriv, createHash, createHmac, hkdfSync, randomBytes, randomUUID } from "node:crypto";
|
|
9
10
|
import { execFile } from "node:child_process";
|
|
@@ -295,7 +296,7 @@ async function runPlatformAuthRecovery(args) {
|
|
|
295
296
|
recovery,
|
|
296
297
|
identity: tested
|
|
297
298
|
});
|
|
298
|
-
|
|
299
|
+
printSuccess("Administrator login recovered. Sign in again with this login method.");
|
|
299
300
|
} finally {
|
|
300
301
|
await releaseDatabase();
|
|
301
302
|
}
|