void 0.24.0 → 0.26.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 +19 -106
- package/dist/{account-cmd-vJhh5lrb.mjs → account-cmd-CDry3B5V.mjs} +5 -5
- package/dist/{application-analysis-BVsVqc11.mjs → application-analysis-DC2yPvzY.mjs} +1 -1
- package/dist/{application-routing-B7QEjqSR.mjs → application-routing-C9khgLiS.mjs} +1 -1
- package/dist/{auth-DX3JURcX.mjs → auth-B60QDbjg.mjs} +1 -1
- package/dist/{auth-CQkSDS50.mjs → auth-D52yG7hl.mjs} +3 -3
- package/dist/{auth-link-D75t9wO2.mjs → auth-link-DjeOptYi.mjs} +5 -6
- package/dist/{auth-router-ClfhL1J7.mjs → auth-router-BRxIuqDi.mjs} +7 -7
- package/dist/{build-cmd-zMi1iFnS.mjs → build-cmd-Ce3C8huo.mjs} +6 -7
- package/dist/{cache-ZtQmyxVV.mjs → cache-CS8Yxr5a.mjs} +6 -7
- package/dist/{cancel-deploy-Box0kkEV.mjs → cancel-deploy-mZsD88Xa.mjs} +4 -6
- package/dist/{cf-access-BGe5sWXF.mjs → cf-access-YTlqvAsk.mjs} +1 -1
- package/dist/cf-build-output-ChY6-XWP.mjs +2 -0
- package/dist/cli/cli.mjs +45 -45
- package/dist/cli/cloudflare-operation-process.mjs +3 -3
- package/dist/cli/env-schema-probe.d.mts +1 -1
- package/dist/cli/env-schema-probe.mjs +2 -2
- package/dist/client-BxVixJBI.mjs +2 -0
- package/dist/{client-DKAsFA4X.mjs → client-mC-dFGDD.mjs} +103 -25
- package/dist/{cloudflare-cmd-CmY8dGkd.mjs → cloudflare-cmd-bhwCxAN6.mjs} +2 -2
- package/dist/{cloudflare-connect-IiR3ZieC.mjs → cloudflare-connect-CuhRgk3k.mjs} +2 -2
- package/dist/{cloudflare-operations-DzH-A966.mjs → cloudflare-operations-DYa3coIk.mjs} +2 -2
- package/dist/{cloudflare-operations-BCdXSsmo.mjs → cloudflare-operations-DoQrVHAt.mjs} +1 -1
- package/dist/{connect-B-usTnlF.mjs → connect-H6EvP62X.mjs} +12 -9
- package/dist/{create-project-CYOOAYcn.mjs → create-project-B2kk9Q0o.mjs} +6 -6
- package/dist/{create-project-FWbf5Olo.mjs → create-project-Dbb4uiN-.mjs} +1 -1
- package/dist/{db-Ck2eZ2iB.mjs → db-DpCKZto0.mjs} +35 -38
- package/dist/{delete-sK56qtzZ.mjs → delete-CxlSvsvW.mjs} +6 -7
- package/dist/{deploy-gCVaiJbS.mjs → deploy-CeEbnv4b.mjs} +9249 -8925
- package/dist/deploy-qmiLE1G1.mjs +2 -0
- package/dist/{dev-inbox-P0u4tM8Y.mjs → dev-inbox-D64ZKUod.mjs} +5 -6
- package/dist/{domain-DFfQE8jg.mjs → domain-B_9VgOm6.mjs} +8 -8
- package/dist/{email-CdnhUHvJ.mjs → email-BokHgjKj.mjs} +7 -7
- package/dist/{env-DmGdHi5i.mjs → env-BdTc-K2L.mjs} +7 -8
- package/dist/{env-public-BX_r8HR6.d.mts → env-public-DR7ZM6d-.d.mts} +1 -1
- package/dist/{env-validation-zZOCcQVZ.mjs → env-validation-cZBvGWaP.mjs} +1 -1
- package/dist/{fetch-stream-IvCYKyQL.mjs → fetch-stream-Nm3hkZbT.mjs} +8 -1
- package/dist/{gen-CshAkukR.mjs → gen-BhDlTpwW.mjs} +2 -4
- package/dist/gen-qCBwH3fZ.mjs +2 -0
- package/dist/{github-cmd-DftuEvIt.mjs → github-cmd-hhkTzlGS.mjs} +7 -16
- package/dist/{handler-CZ4nAylQ.d.mts → handler-BeK3weD4.d.mts} +1 -1
- package/dist/{help-Dotbf6iz.mjs → help-Bv44e2tm.mjs} +13 -9
- package/dist/help-Dw5f9Xrg.mjs +2 -0
- package/dist/index.d.mts +19 -15
- package/dist/index.mjs +2225 -2142
- package/dist/{info-B97bTX9N.mjs → info-DhtTKh65.mjs} +2 -4
- package/dist/{init-BTQEZZGJ.mjs → init-BMf4T03q.mjs} +17 -18
- 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-B46sYH0K.mjs → link-BqYsSS_I.mjs} +6 -7
- package/dist/{list-BnPrIsU_.mjs → list-_kBToO-l.mjs} +10 -10
- package/dist/{live-Chw1eIMv.d.mts → live-iAuEH1hd.d.mts} +1 -1
- package/dist/{local-d1-2CMnpuW_.mjs → local-d1-fGxYrVD6.mjs} +2 -2
- package/dist/login-D7meQg_3.mjs +2 -0
- package/dist/{login-BuiMyUrx.mjs → login-DFuo-RWO.mjs} +9 -7
- package/dist/{logs-CZG9d-ic.mjs → logs-DYgnh6dH.mjs} +7 -8
- package/dist/migrate-CEu2X5DB.mjs +2 -0
- package/dist/{migrate-q4_njtaW.mjs → migrate-CV1on-yJ.mjs} +2 -4
- package/dist/{node-BkyRWRx8.mjs → node-C6Q6e1Es.mjs} +1 -1
- package/dist/{operator-args-B3BTmSoi.mjs → operator-args-DdY54Bgb.mjs} +1 -1
- package/dist/{operator-auth-7erYc6Lt.mjs → operator-auth-2dsGlTT5.mjs} +4 -8
- package/dist/{operator-client-CpHjTd0t.mjs → operator-client-BFqpp6z0.mjs} +3 -3
- package/dist/{operator-cmd-DGqPJUD3.mjs → operator-cmd-CUGHXrQf.mjs} +27 -9
- package/dist/operator-cmd-DRPvhpjM.mjs +2 -0
- package/dist/{output-CbM85T4k.mjs → output-BvdaehtE.mjs} +28 -4
- package/dist/pages/client.d.mts +4 -1
- package/dist/pages/client.mjs +120 -29
- package/dist/pages/index.mjs +1 -1
- package/dist/pages/islands-plugin.mjs +1 -1
- package/dist/pages/protocol.d.mts +2 -2
- package/dist/{plan-NPpwZ_kc.mjs → plan-CJGEeTEI.mjs} +2 -2
- package/dist/plan-COtUvdMA.mjs +2 -0
- package/dist/{platform-args-3k8X9-H_.mjs → platform-args-DSV2p4nY.mjs} +4 -2
- package/dist/platform-args-Dcy_5b_Y.mjs +2 -0
- package/dist/{platform-auth-config-DDrxUy4m.mjs → platform-auth-config-Bosx7U1h.mjs} +20 -19
- package/dist/{platform-auth-protection-BLadnnct.mjs → platform-auth-protection-DcbL_LW_.mjs} +8 -8
- package/dist/{platform-auth-recovery-CmCzX2Fl.mjs → platform-auth-recovery-WfTZ8K6o.mjs} +7 -7
- package/dist/{platform-cmd-DMDEc9uS.mjs → platform-cmd-DbKtQb_4.mjs} +73 -38
- package/dist/{platform-cmd-pMTRhvYs.mjs → platform-cmd-dyFUof0t.mjs} +1 -1
- package/dist/platform-discovery-BC0HCKYt.mjs +41 -0
- package/dist/{platform-domain-Di6EYrQl.mjs → platform-domain-Bsq43AJp.mjs} +5 -4
- package/dist/{platform-lifecycle-BFdSi9Qt.mjs → platform-lifecycle--5gWmDoI.mjs} +1 -1
- package/dist/{platform-lifecycle-BBoNzojY.mjs → platform-lifecycle-Cfi0o6xM.mjs} +4605 -3527
- package/dist/platform-management-Bbwf6-Dq.mjs +2 -0
- package/dist/{platform-management-CWOQOWXm.mjs → platform-management-BrF9STZp.mjs} +211 -31
- package/dist/{platform-plans-config-Vl9BP3H4.mjs → platform-plans-config-DU-8nC2Y.mjs} +3 -3
- package/dist/{platform-recovery-BJnQJEtQ.mjs → platform-recovery-DQAqAQYu.mjs} +3 -3
- package/dist/{platform-registry-DkPPXfp_.mjs → platform-registry-P387v42A.mjs} +18 -11
- package/dist/prepare-BBknoZI1.mjs +2 -0
- package/dist/{prepare-CBLT3CHH.mjs → prepare-BMrRWLwP.mjs} +3 -4
- package/dist/{prepare-DnaKBi--.mjs → prepare-WoUubFKL.mjs} +1 -1
- package/dist/{project-DsblYifa.mjs → project-BiaPQ7ur.mjs} +1 -1
- package/dist/{project-DKG5Ra8p.mjs → project-DQstYTxO.mjs} +1 -1
- package/dist/{project-cmd-DxnXstAq.mjs → project-cmd-BbH2LptN.mjs} +21 -22
- package/dist/{project-team-BmHcaALJ.mjs → project-team-Yiww3-go.mjs} +8 -9
- package/dist/{project-token-GionZlBI.mjs → project-token-BrtT2NkY.mjs} +6 -9
- package/dist/{project-zero-trust-JLCjVQA7.mjs → project-zero-trust-nYJ2V2nc.mjs} +5 -6
- package/dist/{prompts-BNUoTiaf.mjs → prompts-6OSVA7DJ.mjs} +58 -15
- package/dist/{prompts-2TGE6oXx.mjs → prompts-ZAuJlyCj.mjs} +1 -1
- package/dist/{protocol-CjF_iI9X.d.mts → protocol-BX8t2jiw.d.mts} +1 -1
- package/dist/{provision-CVku1JFU.mjs → provision-DMTPG8Rh.mjs} +1 -1
- package/dist/{provision-CaoxO_U7.mjs → provision-VeqAC77A.mjs} +18 -8
- package/dist/{requests-BOjIVAeF.mjs → requests-TIz_jtSu.mjs} +5 -6
- package/dist/{rollback-CwR3pLj3.mjs → rollback-dBqICPzj.mjs} +9 -10
- package/dist/{runner-Ol0TNjk6.mjs → runner--2KF6Kua.mjs} +1 -1
- package/dist/{runner-CXA9Fh8h.mjs → runner-voIltZrY.mjs} +1 -1
- package/dist/runtime/ai.d.mts +10 -11
- package/dist/runtime/ai.mjs +13 -18
- package/dist/runtime/client-react.mjs +1 -1
- package/dist/runtime/client-solid.mjs +1 -1
- package/dist/runtime/client-svelte.mjs +1 -1
- package/dist/runtime/client-vue.mjs +1 -1
- package/dist/runtime/client.mjs +1 -1
- package/dist/runtime/email/testing.mjs +1 -1
- package/dist/runtime/email.mjs +35 -17
- package/dist/runtime/env-public.d.mts +1 -1
- package/dist/runtime/fetch-stream.mjs +1 -1
- package/dist/runtime/handler.d.mts +1 -1
- 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.d.mts +1 -1
- package/dist/runtime/migration-handler.mjs +33 -7
- package/dist/runtime/routing.d.mts +1 -1
- package/dist/runtime/routing.mjs +1 -1
- package/dist/runtime/sandbox.d.mts +1 -1
- package/dist/runtime/sandbox.mjs +12 -22
- package/dist/runtime/validator.d.mts +1 -1
- package/dist/runtime/ws-server.d.mts +1 -1
- package/dist/runtime/ws.d.mts +1 -1
- package/dist/{sandbox-XZAqzFlG.d.mts → sandbox-C5LFoJMf.d.mts} +7 -7
- package/dist/{scan-C7okrLyM.mjs → scan-C8dA7iM4.mjs} +10 -6
- package/dist/{secret-ByWJWBUG.mjs → secret-AKnNXNP5.mjs} +15 -16
- package/dist/{skills-C1PlclPt.mjs → skills-BPQUGClu.mjs} +1 -1
- package/dist/{subcommand-prompt-klFCfcor.mjs → subcommand-prompt-B6WS9Aoz.mjs} +2 -2
- package/dist/sveltekit.d.mts +1 -1
- package/dist/sveltekit.mjs +4 -9
- package/dist/validate-pna7R3Pv.mjs +2 -0
- package/dist/{validate-ctOrgiS3.mjs → validate-ymhap6M_.mjs} +1 -1
- package/dist/{wrangler-7K-bW_DL.mjs → wrangler-DhUerFkW.mjs} +10 -15
- package/dist/{ws-CL1w7GXU.d.mts → ws-C79j4aED.d.mts} +1 -1
- package/package.json +21 -21
- package/sandbox.Dockerfile +1 -1
- package/skills/void/SKILL.md +5 -2
- package/skills/void/docs/guide/ai.md +78 -137
- package/skills/void/docs/guide/app-types.md +1 -1
- package/skills/void/docs/guide/auth.md +0 -2
- package/skills/void/docs/guide/database/d1.md +7 -7
- package/skills/void/docs/guide/database.md +15 -0
- package/skills/void/docs/guide/deployment.md +58 -124
- package/skills/void/docs/guide/env-vars.md +1 -5
- package/skills/void/docs/guide/index.md +19 -18
- package/skills/void/docs/guide/kv.md +0 -2
- package/skills/void/docs/guide/live.md +2 -0
- package/skills/void/docs/guide/pages-routing/actions-and-forms.md +49 -47
- package/skills/void/docs/guide/pages-routing/overview.md +2 -2
- package/skills/void/docs/guide/platform/administration/email.md +0 -2
- package/skills/void/docs/guide/platform/administration/operations.md +11 -22
- package/skills/void/docs/guide/platform/administration/plans.md +1 -5
- package/skills/void/docs/guide/platform/administration/zero-trust.md +1 -4
- package/skills/void/docs/guide/platform/development/schema-ci.md +7 -1
- package/skills/void/docs/guide/platform/installation/credentials.md +2 -2
- package/skills/void/docs/guide/platform/installation/first-deployment.md +5 -1
- package/skills/void/docs/guide/platform/installation/maintenance.md +33 -11
- package/skills/void/docs/guide/platform/installation/prerequisites.md +79 -7
- package/skills/void/docs/guide/platform/installation/setup.md +1 -1
- package/skills/void/docs/guide/platform/installation/uninstall.md +44 -11
- package/skills/void/docs/guide/quickstart.md +37 -80
- package/skills/void/docs/guide/sandboxes.md +75 -66
- package/skills/void/docs/guide/self-hosted-platform.md +20 -0
- package/skills/void/docs/guide/websockets.md +0 -2
- package/skills/void/docs/integrations/frameworks/overview.md +2 -2
- package/skills/void/docs/integrations/frameworks/sveltekit.md +40 -25
- package/skills/void/docs/integrations/nodejs-bun-deno.md +7 -2
- package/skills/void/docs/reference/api/resources.md +38 -14
- package/skills/void/docs/reference/api.md +35 -34
- package/skills/void/docs/reference/cli/auth.md +3 -1
- package/skills/void/docs/reference/cli/deploy.md +1 -1
- package/skills/void/docs/reference/cli/platform-config.md +2 -2
- package/skills/void/docs/reference/cli/platform-installation.md +14 -12
- package/skills/void/docs/reference/cli/platform-operations.md +4 -8
- package/skills/void/docs/reference/cli/platform.md +9 -2
- package/skills/void/docs/reference/cli.md +1 -1
- package/skills/void/docs/reference/resource-inference.md +12 -8
- package/dist/cf-build-output-_0HNWysu.mjs +0 -2
- package/dist/client-B9UBI03V.mjs +0 -2
- package/dist/deploy-irP5q0-x.mjs +0 -2
- package/dist/gen-DvQTWzDU.mjs +0 -2
- package/dist/help-mabuIV98.mjs +0 -2
- package/dist/login-DIy9Sb-U.mjs +0 -2
- package/dist/migrate-BCiJ8w0f.mjs +0 -2
- package/dist/plan-D1Q5rf-r.mjs +0 -2
- package/dist/platform-args-DdnM6WIf.mjs +0 -2
- package/dist/platform-management-DG47jys8.mjs +0 -2
- package/dist/prepare-CnjcTV2s.mjs +0 -2
- package/dist/validate-Dq_L3s0S.mjs +0 -2
- package/skills/void/docs/guide/env-migration.md +0 -109
- package/dist/{cf-build-output-BPqOT964.mjs → cf-build-output-U8o1Gl6X.mjs} +1 -1
- package/dist/{env-validation-C_8tPdhs.mjs → env-validation-vBSQ8gw5.mjs} +1 -1
|
@@ -20,7 +20,7 @@ void platform config plans default <plan-id>
|
|
|
20
20
|
void platform config plans sync
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
Use `--plan` to preview changes and affected accounts; scripted mutations require `--yes`. Every command supports `--connection <
|
|
23
|
+
Use `--plan` to preview changes and affected accounts; scripted mutations require `--yes`. Every command supports `--connection <slug-or-url>` and `--json`. `show` reports the effective limits, default, assignments, and pending account updates. `reset` restores a built-in plan's original limits and build instance size. Archived plans keep their existing accounts but cannot receive new assignments; change the default before archiving it. `remove` requires a replacement for a plan that has accounts or is the default. Changing the default affects only new accounts.
|
|
24
24
|
|
|
25
25
|
For `add` and `set`, `--file` reads a JSON object with optional `name`, `limits`, `buildInstanceType`, and boolean `allowShortSlugs`. `limits` is a partial object of nonnegative whole numbers; `0` means unlimited by the plan. Build timeouts remain capped at the platform maximum of 60 minutes; `0` uses that maximum. Omitted settings keep their current values or the copied plan's values. `buildInstanceType` is `standard-3` or `standard-4`. `allowShortSlugs` permits future assignments of project slugs of five characters or fewer; existing URLs remain available. Storage quotas are not editable. See [Plans and Limits](../../guide/platform/administration/plans.md) for supported limits and examples.
|
|
26
26
|
|
|
@@ -60,7 +60,7 @@ alternative; the last method cannot be disabled. Disabling revokes human session
|
|
|
60
60
|
created through that method, including operator sessions. Scoped deployment tokens
|
|
61
61
|
remain valid; a human login token used as `VOID_TOKEN` is still revoked.
|
|
62
62
|
|
|
63
|
-
Commands accept `--connection <
|
|
63
|
+
Commands accept `--connection <slug-or-url>` and `--json`. Changes accept
|
|
64
64
|
`--plan` or `--yes`. For scripted configuration, use `--file <path>` for the
|
|
65
65
|
nonsecret fields and `--client-secret-env <name>` for the environment variable
|
|
66
66
|
containing the secret. Omit the secret when editing to retain its saved value.
|
|
@@ -101,12 +101,12 @@ void platform rollback [id] --runtime <earlier-path> [--from-runtime <current-pa
|
|
|
101
101
|
void platform repair [id] [--runtime <path>] [--dashboard-url <origin>] [--plan] [--yes]
|
|
102
102
|
void platform disable [id] [--plan] [--yes]
|
|
103
103
|
void platform enable [id] [--runtime <path>] [--plan] [--yes]
|
|
104
|
-
void platform uninstall [id] [--plan] [--purge-data] [--keep-zone] [--yes]
|
|
104
|
+
void platform uninstall [id] [--plan] [--purge-data | --purge-resources] [--keep-zone] [--yes]
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
`discover --installation` limits recovery and endpoint verification to one installation in a shared Cloudflare account.
|
|
108
108
|
|
|
109
|
-
Omit `id` when only one installation is configured, or choose from the interactive picker. Non-interactive commands need
|
|
109
|
+
Use the installation slug shown beside its name in `void platform list`. Installation IDs and saved connection IDs also work. Lifecycle commands require local installation records; use `discover` to restore them on another machine. Omit `id` when only one installation is configured, or choose from the interactive picker. Non-interactive commands need a slug or ID when several installations exist. Commands that make changes also require `--yes`; `--plan` only previews changes.
|
|
110
110
|
|
|
111
111
|
To add or explicitly change a separately deployed dashboard after installation,
|
|
112
112
|
use `repair --dashboard-url <origin>` or `upgrade --dashboard-url <origin>`.
|
|
@@ -115,15 +115,15 @@ dashboard origin before maintenance can proceed. See [Optional Dashboard](../../
|
|
|
115
115
|
|
|
116
116
|
After discovery on another machine, set `VOID_PLATFORM_DATABASE_URL`. An upgrade that preserves every deployed Worker also preserves its secrets. For an email-enabled installation without its encrypted recovery file, restore `VOID_PLATFORM_EMAIL_SIGNING_SECRET`; recreating only the email gateway needs that key and does not need the Cloudflare runtime token or JWT signing key. Recreating the API or proxy also requires the email key when email is enabled, in addition to their normal secrets. Recreating the API requires its original runtime-token, GitHub, R2, JWT, and project-encryption values; recreating the proxy requires the runtime token and JWT signing key.
|
|
117
117
|
|
|
118
|
-
| Command | Behavior
|
|
119
|
-
| ----------- |
|
|
120
|
-
| `discover` | Verifies remote ownership and restores local installation records without downloading secrets
|
|
121
|
-
| `repair` | Recreates missing resources owned by the installer
|
|
122
|
-
| `upgrade` | Deploys the selected runtime and supported pending migrations
|
|
123
|
-
| `rollback` | Restores a declared-compatible earlier runtime without reversing PostgreSQL migrations
|
|
124
|
-
| `disable` | Blocks
|
|
125
|
-
| `enable` |
|
|
126
|
-
| `uninstall` | Blocks traffic and removes eligible resources, retaining data by default
|
|
118
|
+
| Command | Behavior |
|
|
119
|
+
| ----------- | ----------------------------------------------------------------------------------------------------------- |
|
|
120
|
+
| `discover` | Verifies remote ownership and restores local installation records without downloading secrets |
|
|
121
|
+
| `repair` | Recreates missing resources owned by the installer |
|
|
122
|
+
| `upgrade` | Deploys the selected runtime and supported pending migrations |
|
|
123
|
+
| `rollback` | Restores a declared-compatible earlier runtime without reversing PostgreSQL migrations |
|
|
124
|
+
| `disable` | Blocks app traffic and the platform API without removing data; only admin status and sign-in stay available |
|
|
125
|
+
| `enable` | Redeploys and verifies the platform Workers, then restores traffic |
|
|
126
|
+
| `uninstall` | Blocks traffic and removes eligible resources, retaining data by default |
|
|
127
127
|
|
|
128
128
|
Repair and upgrade preserve disabled state. New, resumed, and previously disabled installations block user traffic until all target Workers pass verification; the installer's health probes can still run. Routes and custom domains remain attached.
|
|
129
129
|
|
|
@@ -137,6 +137,8 @@ An upgrade completes after the new Workers pass health checks. If rollout fails,
|
|
|
137
137
|
|
|
138
138
|
`platform rollback` restores a compatible earlier runtime without reversing database migrations. Pass its files with `--runtime`; if the installed version is custom, also supply that version with `--from-runtime`. Void refuses incompatible targets.
|
|
139
139
|
|
|
140
|
-
Uninstall verifies remote ownership before removing anything. Data resources are retained unless you pass `--purge-data`. Workers, the Queues they use, R2, AI Gateway, DNS records, routes, custom domains, adopted resources, external PostgreSQL, and zones are
|
|
140
|
+
Uninstall verifies remote ownership before removing anything. Data resources are retained unless you pass `--purge-data`. Workers, the Queues they use, R2, AI Gateway, DNS records, routes, custom domains, adopted resources, external PostgreSQL, and zones are retained for manual review.
|
|
141
|
+
|
|
142
|
+
`--purge-resources` includes `--purge-data` and also deletes every other resource the installation created, including Workers, Queues, R2, AI Gateway, the platform DNS record, routes, custom domains, and installer-created Access resources. It removes only the Email Routing rules that send mail to the platform email gateway, and keeps zones, adopted resources, external PostgreSQL, other Email Routing settings, and API tokens. A route, custom domain, DNS record, or Access resource that no longer matches the installation's record is kept and listed. It refuses before any change while projects remain or resource reads are denied. Use the Edit permissions listed by `--plan`; read checks cannot verify them, so a denied deletion can stop uninstall after changes have begun. Rerun the same command to continue after an interruption, or after a plain or `--purge-data` uninstall stopped.
|
|
141
143
|
|
|
142
144
|
See [Disable and Uninstall](../../guide/platform/installation/uninstall.md#remove-retained-resources) for the full removal policy and the cleanup order.
|
|
@@ -17,11 +17,7 @@ void platform deployment migrate-assets <id> [--cursor <cursor>] [--plan|--yes]
|
|
|
17
17
|
|
|
18
18
|
Cancellation applies while a deployment is pending, uploading, migrating, or prerendering, and can be requested again while it is canceling. A deployment that has begun switching traffic, is compensating for a failure, or has finished cannot be canceled through this command.
|
|
19
19
|
|
|
20
|
-
`migrate-assets` copies legacy assets to scoped R2 storage
|
|
21
|
-
|
|
22
|
-
Use `--plan` to preview the first batch. Applying authorizes all remaining batches for that deployment; the CLI previews each batch and prints its result, including `nextCursor`. With `--json`, results are JSON Lines. If a later batch fails or the command is interrupted, resume with the cursor from the last successful result. An ambiguous request is never retried automatically; inspect the deployment before resuming. A completed migration reports `complete: true` and `nextCursor: null`.
|
|
23
|
-
|
|
24
|
-
Use [`void platform system asset-migrations`](#operator-system) to find deployments requiring migration. Inspect every inventory page, migrate each deployment with `needsMigration` greater than zero, then inspect every page again. Include retained rollback deployments and stored bundles. Investigate rows marked `invalid` before considering migration complete. Keep the older asset readers until the full inventory is valid and no protected deployment needs migration.
|
|
20
|
+
`migrate-assets` copies a deployment's legacy assets to scoped R2 storage without changing application traffic. Use `--plan` to preview and `--cursor` to resume from a successful batch. Original assets remain in place.
|
|
25
21
|
|
|
26
22
|
Read its runtime logs with:
|
|
27
23
|
|
|
@@ -44,7 +40,7 @@ void platform build logs <id> [--since <sequence>] [--limit <n>] [--follow]
|
|
|
44
40
|
|
|
45
41
|
Build logs start at sequence `0` and return up to 500 lines. Use the returned `lastSeq` as `--since` to continue; `--limit` accepts 1 to 500. Container log retrieval requires managed builds to be enabled. GitHub Actions builds return an external log URL.
|
|
46
42
|
|
|
47
|
-
Following waits for the final logs after the build becomes terminal. If completion cannot be confirmed within two minutes, the command exits with an error.
|
|
43
|
+
Following waits for the final logs after the build becomes terminal. If completion cannot be confirmed within two minutes, the command exits with an error.
|
|
48
44
|
|
|
49
45
|
## System {#operator-system}
|
|
50
46
|
|
|
@@ -62,11 +58,11 @@ void platform system sandbox-drain [--cursor <opaque-cursor>]
|
|
|
62
58
|
|
|
63
59
|
`overview` shows platform totals and recent activity. `health` checks the configured services and database, and exits with a nonzero status if a check fails. `cli-versions` reports the CLI versions used by deployments.
|
|
64
60
|
|
|
65
|
-
`asset-migrations` inventories
|
|
61
|
+
`asset-migrations` inventories stored deployment assets and reports `needsMigration` and `invalid` counts. Use the response's pagination fields to read all entries.
|
|
66
62
|
|
|
67
63
|
`events` shows the administrator, target, and outcome of changes. A pending event means the outcome has not been recorded. Previews and session login/logout do not create these events. `backfill-queue-tokens` repairs older queue entries that are missing authentication tokens and supports `--plan` before applying the repair.
|
|
68
64
|
|
|
69
|
-
|
|
65
|
+
`sandbox-drain` removes legacy tenant-owned Sandbox resources. Use `--plan` to preview and `--yes` to apply, then pass `nextCursor` as `--cursor` to continue. Application traffic stays paused during cleanup.
|
|
70
66
|
|
|
71
67
|
Use the [platform lifecycle commands](./platform-installation.md#lifecycle-commands) to maintain your installation's Workers.
|
|
72
68
|
|
|
@@ -14,13 +14,20 @@ void platform use [id]
|
|
|
14
14
|
void platform status [id]
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
`
|
|
17
|
+
`list` shows the currently selected platform first, followed by other saved platforms. For a platform with local installation records, its installation slug appears beside its name, such as `Cloudflare Void (cloudflare)`. Select it with `void platform use cloudflare`. For a connected platform without a local installation slug, use its printed API URL.
|
|
18
|
+
|
|
19
|
+
`use` and `status` accept an installation slug, display name, saved ID, or API URL. If a slug or name matches several platforms, use the API URL to choose one. They auto-select the only configured platform; with multiple platforms they show a picker interactively and require an explicit selector in non-interactive use. A project with a recorded platform URL keeps using that platform when the global default changes.
|
|
20
|
+
|
|
21
|
+
For a self-hosted installation, `status <installation-id>` prints locally saved
|
|
22
|
+
lifecycle progress before checking the live API. The saved checkpoint may be out
|
|
23
|
+
of date. If live discovery fails during maintenance, the command still shows that
|
|
24
|
+
checkpoint and exits with an error; it does not confirm current availability.
|
|
18
25
|
|
|
19
26
|
## Operator commands {#operator-commands}
|
|
20
27
|
|
|
21
28
|
Use `void platform` to administer the users and apps on your selected platform. Start with the [Platform Administration guide](../../guide/platform-administration.md) for signing in, giving people access, and investigating deployments.
|
|
22
29
|
|
|
23
|
-
Every command below accepts `--connection <
|
|
30
|
+
Every command below accepts `--connection <slug-or-url>` to select a registered platform and `--json` for structured output. Display names and saved IDs also work. Without `--connection`, Void uses `VOID_API_URL` if set, then the active platform connection. Application project files do not change this selection.
|
|
24
31
|
|
|
25
32
|
### Making Changes {#making-changes}
|
|
26
33
|
|
|
@@ -56,7 +56,7 @@ Use this page as a command reference. If you are setting up a project for the fi
|
|
|
56
56
|
| `void account login` | Authenticate with a Void platform |
|
|
57
57
|
| `void cloudflare login` | Authenticate with Cloudflare through Void |
|
|
58
58
|
| `void platform install` | Install a company Void platform in Cloudflare |
|
|
59
|
-
| `void connect <url>` | Connect the CLI to a Void platform
|
|
59
|
+
| `void connect <url>` | Connect the CLI to a Void platform; hostnames default to HTTPS |
|
|
60
60
|
| `void project link` | Link directory to a project |
|
|
61
61
|
| `void project logs` | Show runtime logs from deployed project |
|
|
62
62
|
| `void project requests` | Show request-level traffic (status, method, timing) |
|
|
@@ -17,6 +17,7 @@ Void automatically detects which Cloudflare resources your project uses by scann
|
|
|
17
17
|
| `SANDBOX` | Managed Sandbox capability | `import { getSandbox } from "void/sandbox"` | `getSandbox()`; native Cloudflare also exposes `env.SANDBOX` / `c.env.SANDBOX` |
|
|
18
18
|
| Auth | none | `import { ... } from "void/auth"` or `import { auth } from "void/client"` / `void/client/react` / `void/client/vue` / `void/client/svelte` / `void/client/solid` | none |
|
|
19
19
|
| `QUEUE_*` | `Queue` | `import { queues } from "void/queues"` | `env.QUEUE_*` |
|
|
20
|
+
| `VOID_LIVE` | `DurableObjectNamespace` | `import { defineLiveStream } from "void/live"` | n/a |
|
|
20
21
|
| filename-derived | `DurableObjectNamespace` | A default-exported `defineDurableState()` module in `durable-objects/` | n/a |
|
|
21
22
|
|
|
22
23
|
Auth detection also triggers when importing the `auth` specifier from `void/client` or a framework-specific client subpath such as `void/client/react` (but not when importing only `fetch`).
|
|
@@ -27,7 +28,7 @@ Durable state is inferred from files in `durable-objects/`. For example, `durabl
|
|
|
27
28
|
|
|
28
29
|
### Standard mode
|
|
29
30
|
|
|
30
|
-
|
|
31
|
+
Native Void apps scan these directories by default. With [`sourceDir`](./config.md#sourcedir) configured, Void scans that source tree instead:
|
|
31
32
|
|
|
32
33
|
| Directory | Contains |
|
|
33
34
|
| ------------- | ------------------------------------------- |
|
|
@@ -36,10 +37,12 @@ When using Void's built-in routing (no meta-framework), these directories are sc
|
|
|
36
37
|
| `queues/` | Queue consumers |
|
|
37
38
|
| `pages/` | Page components and `.server.ts` companions |
|
|
38
39
|
| `crons/` | Scheduled job handlers |
|
|
40
|
+
| `email/` | Inbound email handlers |
|
|
41
|
+
| `src/` | Application source |
|
|
39
42
|
|
|
40
43
|
### Framework mode
|
|
41
44
|
|
|
42
|
-
|
|
45
|
+
For [supported meta frameworks](../integrations/frameworks/overview.md), Void scans these directories:
|
|
43
46
|
|
|
44
47
|
| Directory | Contains |
|
|
45
48
|
| --------- | ----------------------- |
|
|
@@ -47,17 +50,18 @@ When a meta-framework is detected (TanStack Start, React Router, SvelteKit, Nuxt
|
|
|
47
50
|
| `app/` | Framework app directory |
|
|
48
51
|
| `routes/` | Framework routes |
|
|
49
52
|
| `server/` | Server-side code |
|
|
53
|
+
| `pages/` | Framework pages |
|
|
54
|
+
| `crons/` | Scheduled job handlers |
|
|
55
|
+
| `queues/` | Queue consumers |
|
|
50
56
|
|
|
51
|
-
Framework detection
|
|
52
|
-
|
|
53
|
-
For SvelteKit, Nuxt, and Astro, add `voidPlugin()` to the framework's Vite config to enable inference during dev. See [Frameworks Integration](../integrations/frameworks/overview.md) for setup details.
|
|
57
|
+
Framework detection uses `package.json` dependencies and dev dependencies. Add `voidPlugin()` to your framework's Vite config to enable inference during development. The integration guides show the setup for each framework.
|
|
54
58
|
|
|
55
59
|
### Always scanned
|
|
56
60
|
|
|
57
61
|
Regardless of mode, these are always checked:
|
|
58
62
|
|
|
59
63
|
- **SSR entry** such as `src/main.ssr.ts`, for SSR apps that access bindings during rendering
|
|
60
|
-
-
|
|
64
|
+
- **Application source** in `src/` or your configured `sourceDir`, including resource and auth imports
|
|
61
65
|
- **`durable-objects/`**, which is scanned for typed Durable Object state modules in native Void apps
|
|
62
66
|
|
|
63
67
|
## Custom Scan Directories
|
|
@@ -72,7 +76,7 @@ If your project organizes code in non-standard directories, you can override whi
|
|
|
72
76
|
}
|
|
73
77
|
```
|
|
74
78
|
|
|
75
|
-
Paths are relative to the project root. When `inference.scanDirs` is set, it replaces the default directories entirely.
|
|
79
|
+
Paths are relative to the project root. When `inference.scanDirs` is set, it replaces the default directories entirely. The SSR entry and application source scan still apply.
|
|
76
80
|
|
|
77
81
|
## Explicit Binding Overrides
|
|
78
82
|
|
|
@@ -95,4 +99,4 @@ Explicit values override only their named bindings. Omitted bindings continue to
|
|
|
95
99
|
|
|
96
100
|
## File Types
|
|
97
101
|
|
|
98
|
-
Inference scans
|
|
102
|
+
Inference scans `.ts`, `.tsx`, `.mts`, `.js`, `.jsx`, `.mjs`, and Astro frontmatter. Put server resource imports in these files or a page's `.server.ts` companion; Vue and Svelte component files are not scanned directly.
|
package/dist/client-B9UBI03V.mjs
DELETED
package/dist/deploy-irP5q0-x.mjs
DELETED
package/dist/gen-DvQTWzDU.mjs
DELETED
package/dist/help-mabuIV98.mjs
DELETED
package/dist/login-DIy9Sb-U.mjs
DELETED
package/dist/plan-D1Q5rf-r.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { c as selectAuthoritativePlatformManifest, s as runInstalledPlatformCommand, u as verifyPlatformInstallationOwnership } from "./platform-management-CWOQOWXm.mjs";
|
|
2
|
-
export { runInstalledPlatformCommand, selectAuthoritativePlatformManifest, verifyPlatformInstallationOwnership };
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
# Environment migration
|
|
2
|
-
|
|
3
|
-
Use `.env` for local development and remote secrets for server-side production values.
|
|
4
|
-
|
|
5
|
-
## 1. Back up and consolidate values
|
|
6
|
-
|
|
7
|
-
Before changing any dotenv files, securely back up the production values you need to migrate outside the project directory. Keep them out of Git. Do not delete the original files until the upload and verification in step 3 succeed.
|
|
8
|
-
|
|
9
|
-
Merge the values you still need locally into `.env`:
|
|
10
|
-
|
|
11
|
-
```text
|
|
12
|
-
.env.local
|
|
13
|
-
.env.development
|
|
14
|
-
.env.development.local
|
|
15
|
-
→ .env
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
Keep the legacy files for now. You will remove them in step 5, after migrating their values.
|
|
19
|
-
|
|
20
|
-
Ensure `.env` is ignored by Git:
|
|
21
|
-
|
|
22
|
-
```text
|
|
23
|
-
.env
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## 2. Update `env.ts`
|
|
27
|
-
|
|
28
|
-
Remove `.secret()` and `.public()` from `env.ts` before running secret commands.
|
|
29
|
-
|
|
30
|
-
Change:
|
|
31
|
-
|
|
32
|
-
```ts
|
|
33
|
-
export default defineEnv({
|
|
34
|
-
STRIPE_KEY: string().secret(),
|
|
35
|
-
VITE_API_ORIGIN: url().public(),
|
|
36
|
-
});
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
to:
|
|
40
|
-
|
|
41
|
-
```ts
|
|
42
|
-
export default defineEnv({
|
|
43
|
-
STRIPE_KEY: string(),
|
|
44
|
-
VITE_API_ORIGIN: url(),
|
|
45
|
-
});
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
Server keys have no `VITE_` prefix; client keys do.
|
|
49
|
-
|
|
50
|
-
## 3. Upload server secrets
|
|
51
|
-
|
|
52
|
-
For managed Void projects, upload each non-client schema key:
|
|
53
|
-
|
|
54
|
-
```sh
|
|
55
|
-
void secret put DATABASE_URL
|
|
56
|
-
void secret put STRIPE_KEY
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
To migrate a production file in one pass, prepare a copy outside the project directory containing only server keys declared in `env.ts`, then upload it:
|
|
60
|
-
|
|
61
|
-
```sh
|
|
62
|
-
void secret sync /secure/path/production-secrets.txt
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
The sync command validates every entry against `env.ts`. It rejects undeclared names, invalid values, and client-prefixed names. Keep client-prefixed values for step 4 instead of including them in this file.
|
|
66
|
-
|
|
67
|
-
For direct Cloudflare deployments, select Cloudflare and use the same commands:
|
|
68
|
-
|
|
69
|
-
```sh
|
|
70
|
-
void connect --platform cloudflare
|
|
71
|
-
void secret put DATABASE_URL
|
|
72
|
-
void secret put STRIPE_KEY
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
After the upload succeeds, confirm that all expected server names appear in the remote store:
|
|
76
|
-
|
|
77
|
-
```sh
|
|
78
|
-
void secret list
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
If an upload fails or a name is missing, keep the source values and retry before continuing.
|
|
82
|
-
|
|
83
|
-
For direct Cloudflare deployments, remove the migrated server keys from `cloudflare.vars` in `void.config.ts` after confirming the upload. Void now treats any schema-declared server key in Worker `vars` as an error.
|
|
84
|
-
|
|
85
|
-
## 4. Set client build values
|
|
86
|
-
|
|
87
|
-
Move `VITE_*` production values to CI/build-shell variables, or make the value an explicit schema default:
|
|
88
|
-
|
|
89
|
-
```sh
|
|
90
|
-
export VITE_API_ORIGIN=https://api.example.com
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
Keep these variables set for the remote check and deployment in step 5. Client values are compiled into browser assets and are public.
|
|
94
|
-
|
|
95
|
-
These values are also available during server rendering. Do not upload them as remote secrets.
|
|
96
|
-
|
|
97
|
-
## 5. Remove old files and verify
|
|
98
|
-
|
|
99
|
-
Once the local values are in `.env`, the server values are uploaded and listed remotely, and the client values are available to the build, delete every `.env.*` file, `.env.example`, and `.dev.vars*` file from the project. Keep the secure backup until verification succeeds. Environment checks and deployment reject these old files.
|
|
100
|
-
|
|
101
|
-
Use `env.ts` as the checked-in list of names, types, defaults, and requiredness. `void env example` is no longer supported.
|
|
102
|
-
|
|
103
|
-
Then verify:
|
|
104
|
-
|
|
105
|
-
```sh
|
|
106
|
-
void env check
|
|
107
|
-
void env check --remote
|
|
108
|
-
void deploy
|
|
109
|
-
```
|
|
@@ -3,8 +3,8 @@ import { copyFileSync, cpSync, existsSync, mkdirSync, mkdtempSync, readFileSync,
|
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
5
5
|
import { tmpdir } from "node:os";
|
|
6
|
-
import { spawn, spawnSync } from "node:child_process";
|
|
7
6
|
import { isDeepStrictEqual } from "node:util";
|
|
7
|
+
import { spawn, spawnSync } from "node:child_process";
|
|
8
8
|
import { getWorkerBundleDir, normalizeDirectoryName, readBuildOutput, writeAssets, writeContainerConfig, writeRootConfig, writeWorkerConfig } from "@cloudflare/build-output-utils";
|
|
9
9
|
import { InputConfigSchema, OutputContainerSchema } from "@cloudflare/config";
|
|
10
10
|
import ignore from "ignore";
|
|
@@ -5,8 +5,8 @@ import { a as loadLocalEnv, i as isClientEnvKey, r as findLegacyEnvFiles } from
|
|
|
5
5
|
import { c as resolveCloudflareOperationArgv, n as decodeCloudflareOperationResult, r as encodeCloudflareOperation } from "./cloudflare-process-B-wekeR6.mjs";
|
|
6
6
|
import { existsSync, readFileSync } from "node:fs";
|
|
7
7
|
import { pathToFileURL } from "node:url";
|
|
8
|
-
import { spawn } from "node:child_process";
|
|
9
8
|
import { parse } from "jsonc-parser";
|
|
9
|
+
import { spawn } from "node:child_process";
|
|
10
10
|
//#region src/host/load-user-env.ts
|
|
11
11
|
/**
|
|
12
12
|
* Loader for the user's `env.ts`.
|