Skip to content

Commit a76befe

Browse files
committed
Do not lock transitive deps at exact versions.
1 parent 74a64ac commit a76befe

7 files changed

Lines changed: 95 additions & 94 deletions

File tree

‎AGENTS.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ Full-stack framework for Cloudflare Workers, powered by Vite.
77
- Documentation source lives in `docs/`.
88
- Docs is a Vitepress project using our custom theme. When asked to "link the theme", temporarily edit `docs/package.json` so that `@voidzero-dev/vitepress-theme` point to `link:../../../theme`. Rerun `vp install` to link it. Revert these when asked to "unlink the theme".
99
- Packages publish to npm as `void` and `@void/*`. Consumer-facing code, docs examples, playground source, and package manifests should use only those public package names.
10+
- Published external runtime dependencies use compatible semver ranges. Preserve `workspace:*` for dependencies and peers between Void packages. The lockfile fixes the versions tested in this repository. Keep Miniflare's dated alpha coordinated with the Cloudflare toolchain: a caret does not accept the next date's alpha. Keep the Sandbox SDK version aligned with its packaged Docker helper and verified platform helper layer.
1011

1112
## Important Note for Release Workflows
1213

‎packages/deploy-cloudflare/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
},
2727
"dependencies": {
2828
"@void/deploy-core": "workspace:*",
29-
"jsonc-parser": "3.3.1"
29+
"jsonc-parser": "^3.3.1"
3030
},
3131
"devDependencies": {
3232
"@cloudflare/workers-types": "catalog:",

‎packages/md/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
"@shikijs/engine-javascript": "^4.5.0",
3939
"@shikijs/transformers": "^4.5.0",
4040
"gray-matter": "^4.0.3",
41-
"markdown-exit": "1.3.0",
41+
"markdown-exit": "^1.3.0",
4242
"markdown-it-anchor": "^10.0.0",
4343
"markdown-it-attrs": "^5.0.1",
4444
"markdown-it-container": "^4.0.0",

‎packages/void/AGENTS.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ auth and migrations still require a database. Provider identity and post-build
1515
artifact/SQL validation belong to the target. See the
1616
[shared analysis record](../../platform/meta/design-docs/0086-shared-application-analysis.md).
1717

18-
Project settings live in `void.config.ts` through `void/config` and `defineConfig`. `void init` and `void deploy` migrate legacy `void.json` and root Wrangler JSON/JSONC files before using their settings. The `cloudflare` field is authored and checked in; `.void-wrangler.jsonc` is generated and ignored; `void.lock.json` records provisioned IDs and migration history and is checked in. Cloudflare writers must persist every generated change to the lock. Framework adapters that read Cloudflare config during development must point to the generated file. Direct Cloudflare deploys use pinned `cf` Build Output upload and activation. Deployment, provisioning and installation callers use the typed `CloudflareOperation` contract from `@void/deploy-cloudflare`. The private `cloudflare-operation-process.ts` entry executes pinned `cf` commands or API requests and returns structured process envelopes. Provider presentation is decoded only at the actual CLI boundary; orchestrators consume `data`, codes and process provenance. Secret values travel through stdin or private temporary files. Do not restore historical command arguments, imitation output or a direct Wrangler CLI dependency in `void`.
18+
Project settings live in `void.config.ts` through `void/config` and `defineConfig`. `void init` and `void deploy` migrate legacy `void.json` and root Wrangler JSON/JSONC files before using their settings. The `cloudflare` field is authored and checked in; `.void-wrangler.jsonc` is generated and ignored; `void.lock.json` records provisioned IDs and migration history and is checked in. Cloudflare writers must persist every generated change to the lock. Framework adapters that read Cloudflare config during development must point to the generated file. Direct Cloudflare deploys use installed `cf` Build Output upload and activation. Deployment, provisioning and installation callers use the typed `CloudflareOperation` contract from `@void/deploy-cloudflare`. The private `cloudflare-operation-process.ts` entry executes installed `cf` commands or API requests and returns structured process envelopes. Provider presentation is decoded only at the actual CLI boundary; orchestrators consume `data`, codes and process provenance. Secret values travel through stdin or private temporary files. Do not restore historical command arguments, imitation output or a direct Wrangler CLI dependency in `void`.
1919

20-
Build-output config translation uses the public `@cloudflare/codemods` API pinned to the version used by `cf`. Migration and generated-config evaluation share one disposable, uncredentialed subprocess; unresolved blocking follow-ups must still fail closed. Keep real `cf` prebuilt dry-run coverage.
20+
Build-output config translation uses the public `@cloudflare/codemods` API with a compatible dependency range. Keep the lockfile's Cloudflare toolchain aligned with `cf`, while allowing compatible consumer updates. Migration and generated-config evaluation share one disposable, uncredentialed subprocess; unresolved blocking follow-ups must still fail closed. Keep real `cf` prebuilt dry-run coverage.
2121

22-
Unlinked projects with a root `wrangler.jsonc` or `wrangler.json` get a link-and-deploy prompt from `cli/cloudflare-link.ts` before the hosted fallback in `runDeployInner`. Honor explicit platform/project selections and saved destinations. Acceptance verifies the existing Worker, saves Cloudflare, and continues in the same invocation. `.void/cloudflare-link.json` keeps the handoff guard across failed builds; remove it only after successful activation. The handoff reuses resource IDs and remote secrets, blocks unapproved resource additions and schema/secret changes, and skips trigger/settings publication. `@void/deploy-cloudflare` validates the active and uploaded bindings and handler sets. Because bundled Wrangler inherits secrets from the latest upload, the handoff requires the active version to be latest before upload and verifies that no other candidate appeared during upload. Later deployments with a newer inactive upload and ordinary revisions with inherited active secrets use the version-aware API to inherit opaque secrets from the inspected active version, and upload assets explicitly. The active version must still own all traffic before upload. Deployments without remote secrets and explicit secret replacements retain pinned `cf` uploads. The first handoff still fails closed. Later code-only deployments carry the opaque trigger-preservation marker forward; adding a trigger requires a known traffic snapshot or explicit root `routes`, `workers_dev`, and `preview_urls`. Older versions without complete trigger metadata use traffic-only rollback, retaining current domains and schedules. Existing TOML configs are detected and rejected before generating a competing config; named environments remain unsupported.
22+
Unlinked projects with a root `wrangler.jsonc` or `wrangler.json` get a link-and-deploy prompt from `cli/cloudflare-link.ts` before the hosted fallback in `runDeployInner`. Honor explicit platform/project selections and saved destinations. Acceptance verifies the existing Worker, saves Cloudflare, and continues in the same invocation. `.void/cloudflare-link.json` keeps the handoff guard across failed builds; remove it only after successful activation. The handoff reuses resource IDs and remote secrets, blocks unapproved resource additions and schema/secret changes, and skips trigger/settings publication. `@void/deploy-cloudflare` validates the active and uploaded bindings and handler sets. Because bundled Wrangler inherits secrets from the latest upload, the handoff requires the active version to be latest before upload and verifies that no other candidate appeared during upload. Later deployments with a newer inactive upload and ordinary revisions with inherited active secrets use the version-aware API to inherit opaque secrets from the inspected active version, and upload assets explicitly. The active version must still own all traffic before upload. Deployments without remote secrets and explicit secret replacements retain installed `cf` uploads. The first handoff still fails closed. Later code-only deployments carry the opaque trigger-preservation marker forward; adding a trigger requires a known traffic snapshot or explicit root `routes`, `workers_dev`, and `preview_urls`. Older versions without complete trigger metadata use traffic-only rollback, retaining current domains and schedules. Existing TOML configs are detected and rejected before generating a competing config; named environments remain unsupported.
2323

2424
Assets-only Workers report null or empty handlers alongside `script_runtime.assets`. Accept that shape during handoff; only the static adapter may add its `ASSETS` binding and sole `fetch` handler. Preserve every existing binding and reject name collisions. Missing handler metadata without verified assets must not bypass the handler checks.
2525

‎packages/void/package.json‎

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -337,14 +337,14 @@
337337
"typecheck": "tsc --noEmit --rootDir ../.."
338338
},
339339
"dependencies": {
340-
"@cloudflare/build-output-utils": "0.8.6",
341-
"@cloudflare/codemods": "0.4.1",
342-
"@cloudflare/config": "0.24.0",
340+
"@cloudflare/build-output-utils": "^0.8.6",
341+
"@cloudflare/codemods": "^0.4.1",
342+
"@cloudflare/config": "^0.24.0",
343343
"@cloudflare/sandbox": "1.0.0",
344-
"@cloudflare/vite-plugin": "1.63.0",
345-
"@cloudflare/workers-auth": "0.12.0",
344+
"@cloudflare/vite-plugin": "^1.63.0",
345+
"@cloudflare/workers-auth": "^0.12.0",
346346
"@cloudflare/workers-types": "catalog:",
347-
"@napi-rs/keyring": "2.1.0",
347+
"@napi-rs/keyring": "^2.1.0",
348348
"@void/deploy-cloudflare": "workspace:*",
349349
"@void/deploy-core": "workspace:*",
350350
"@void/edge": "workspace:*",
@@ -365,15 +365,15 @@
365365
"hono": "^4.13.13",
366366
"ignore": "^7.0.12",
367367
"jiti": "^2.7.0",
368-
"jsonc-parser": "3.3.1",
369-
"mime": "4.1.0",
368+
"jsonc-parser": "^3.3.1",
369+
"mime": "^4.1.0",
370370
"miniflare": "5.20261006.0-alpha",
371371
"minimatch": "^10.2.6",
372-
"mysql2": "3.24.5",
373-
"pg": "8.23.1",
372+
"mysql2": "^3.24.5",
373+
"pg": "^8.23.1",
374374
"postal-mime": "^4.0.4",
375375
"proper-lockfile": "^4.1.2",
376-
"undici": "8.11.2"
376+
"undici": "^8.11.2"
377377
},
378378
"devDependencies": {
379379
"@electric-sql/pglite": "0.5.8",

0 commit comments

Comments
 (0)