-
Notifications
You must be signed in to change notification settings - Fork 712
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(wrangler): Add support for placement hints #6625
Conversation
🦋 Changeset detectedLatest commit: 810594e The changes in this PR will be included in the next version bump. This PR includes changesets to release 2 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
A wrangler prerelease is available for testing. You can install this latest build in your project with: npm install --save-dev https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/10777635786/npm-package-wrangler-6625 You can reference the automatically updated head of this PR with: npm install --save-dev https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/prs/6625/npm-package-wrangler-6625 Or you can use npx https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/10777635786/npm-package-wrangler-6625 dev path/to/script.js Additional artifacts:npx https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/10777635786/npm-package-create-cloudflare-6625 --no-auto-update npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/10777635786/npm-package-cloudflare-kv-asset-handler-6625 npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/10777635786/npm-package-miniflare-6625 npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/10777635786/npm-package-cloudflare-pages-shared-6625 npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/10777635786/npm-package-cloudflare-vitest-pool-workers-6625 npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/10777635786/npm-package-cloudflare-workers-editor-shared-6625 npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/10777635786/npm-package-cloudflare-workers-shared-6625 Note that these links will no longer work once the GitHub Actions artifact expires.
Please ensure constraints are pinned, and |
d7ec124
to
61dc0fb
Compare
- Add hint field to smart placement configuration
61dc0fb
to
810594e
Compare
@@ -73,7 +73,9 @@ function createWorkerBundleFormData( | |||
|
|||
// The upload API only accepts an empty string or no specified placement for the "off" mode. | |||
const placement: CfPlacement | undefined = | |||
config?.placement?.mode === "smart" ? { mode: "smart" } : undefined; | |||
config?.placement?.mode === "smart" | |||
? { mode: "smart", hint: config.placement.hint } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could this just be:
? { mode: "smart", hint: config.placement.hint } | |
? config.placement |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just tried this but TypeScript can't narrow config.placement
to CfPlacement
here (the wrangler and API types are slightly different), so I think it's simpler to keep as-is
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK. That's a shame. But fine as it is. Thanks for trying.
@@ -673,7 +673,9 @@ See https://developers.cloudflare.com/workers/platform/compatibility-dates for m | |||
|
|||
// The upload API only accepts an empty string or no specified placement for the "off" mode. | |||
const placement: CfPlacement | undefined = | |||
config.placement?.mode === "smart" ? { mode: "smart" } : undefined; | |||
config.placement?.mode === "smart" | |||
? { mode: "smart", hint: config.placement.hint } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Similarly
? { mode: "smart", hint: config.placement.hint } | |
? config.placement |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
and elsewhere
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It doesn't look like this includes support for init --from-dash—could you add that?
Leaving this for now as it's internal-only
* main: Add pipeline binding to wrangler.toml (#6674) Fix Pages duplicating hash in redirects (#6680) Bradley/r2 event notification get (#6652) feat(wrangler): Add support for placement hints (#6625) fix(wrangler): Validate `routes` for Workers with assets (#6621) chore(deps): bump the workerd-and-workers-types group across 1 directory with 2 updates (#6673) chore(workers-shared): Configure GitHub Actions to deploy Asset Worker (#6542) feat: experimental workers assets can be ignored by adding a .assetsignore file (#6640)
What this PR solves / how to test
Fixes WP-1224. API support for placement hints is currently experimental and gated to Cloudflare employees only.
Manual testing
wrangler.toml
file:wrangler deploy
(using the prerelease) to deploy the test Worker with the placement hint.Testing error cases
Placement mode is "off" instead of "smart" with hint set:
Placement mode is missing with hint set:
Author has addressed the following