Add Cloudflare fetch and Hono handlers for advanced routing#16729
Conversation
…r advanced routing
🦋 Changeset detectedLatest commit: 7186049 The changes in this PR will be included in the next version bump. This PR includes changesets to release 36 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 |
|
| 📦 Package | 🔒 Before | 🔓 After |
|---|---|---|
| @clack/core | trusted-with-provenance | none |
| @clack/prompts | trusted-with-provenance | none |
florian-lefebvre
left a comment
There was a problem hiding this comment.
Even if this is in experimental, it should be documented I think. Also I don't remember but how does that work with main in the wrangler config?
ematipico
left a comment
There was a problem hiding this comment.
This new APIs must be documented: https://docs.astro.build/en/guides/integrations-guide/cloudflare/
Doesn't matter if they are used with an experimental feature.
|
Ok, do we have any other examples of this happening? Want to see what it looks like on the docs site. |
Usually everything stays on the same page, also APIs that were added to adapters/integrations as part of the experimental feature. I did this whe I added adapter static headers for CSP |
|
Docs added here: withastro/docs#13912 |
) ## Goal Eliminate the 'new dependencies optimized: astro/fetch' warning during dev in the Cloudflare adapter. The advanced routing feature (d69f858, #16366) introduced astro/fetch and astro/hono exports, and the Cloudflare handler entry points (01aa164, #16729) import from them — but neither commit added these to the optimizeDeps.include list. Vite discovers them at runtime and triggers a late re-optimization. ## Decisions - Added both astro/fetch and astro/hono: the Cloudflare adapter imports from both (hono.ts imports FetchState from astro/fetch, and astro/hono is used similarly). Pre-bundling both prevents the same issue for either entry point. ## Changes - packages/integrations/cloudflare/src/index.ts: added astro/fetch and astro/hono to the server environment optimizeDeps.include array, alongside the existing astro/app and astro/app/fetch/default-handler entries.
* chore(deps): resolve peer dependency issues (#16894) * chore(deps): update eslint to v10 (#16896) * test(vercel): add per-test timeout and raise suite timeout (#16898) * chore: eliminate duplicate pnpm configurations (#16906) * Fix i18n redirectToDefaultLocale not working with prefixDefaultLocale (#16887) * fix(i18n): preserve ROUTE_TYPE_HEADER for i18n post-processing (#16800) * chore: move fix somewhere else * chore: update changeset --------- Co-authored-by: ematipico <estoppa@cloudflare.com> * feat(fonts): better bold fallbacks (#16908) * [ci] format * fix(docs): replace last occurrences of `withastro/adapters` (#16693) * fix: astro() marks all pipeline features as used (#16899) * fix: astro() marks all pipeline features as used AstroHandler is the batteries-included handler that wires up every pipeline feature internally. Mark all PipelineFeatures bits at the top of handle() so the one-shot warnMissingFeatures check in BaseApp never fires a false positive when the first request short-circuits (e.g. a redirect route skips middleware). * add changeset * move allFeatures mask to base-pipeline.ts per review * docs: fix typos in astro:i18n middleware JSDoc (#16574) * docs: fix outdated Partytown link (#16865) * chore(deps): update devalue (#16900) * Pre-bundle astro/fetch and astro/hono in Cloudflare optimizeDeps (#16914) ## Goal Eliminate the 'new dependencies optimized: astro/fetch' warning during dev in the Cloudflare adapter. The advanced routing feature (d69f858, #16366) introduced astro/fetch and astro/hono exports, and the Cloudflare handler entry points (01aa164, #16729) import from them — but neither commit added these to the optimizeDeps.include list. Vite discovers them at runtime and triggers a late re-optimization. ## Decisions - Added both astro/fetch and astro/hono: the Cloudflare adapter imports from both (hono.ts imports FetchState from astro/fetch, and astro/hono is used similarly). Pre-bundling both prevents the same issue for either entry point. ## Changes - packages/integrations/cloudflare/src/index.ts: added astro/fetch and astro/hono to the server environment optimizeDeps.include array, alongside the existing astro/app and astro/app/fetch/default-handler entries. * fix(node): serve prerendered pages with build.format 'file' and 'preserve' by passing extensions option to send (#16922) * [ci] format * chore(deps): update `pnpm/action-setup` to v6 (#16904) * chore(deps): update pnpm to v11.5.0 (#16903) * Fix 404 route resolution for experimental.advancedRouting with astro/hono handlers (#16911) Co-authored-by: Emanuele Stoppa <estoppa@cloudflare.com> Co-authored-by: Matthew Phillips <matthew@matthewphillips.info> * dedupe --------- Co-authored-by: ocavue <ocavue@users.noreply.github.com> Co-authored-by: btea <2356281422@qq.com> Co-authored-by: Houston (Bot) <108291165+astrobot-houston@users.noreply.github.com> Co-authored-by: Florian Lefebvre <contact@florian-lefebvre.dev> Co-authored-by: Florian Lefebvre <florian-lefebvre@users.noreply.github.com> Co-authored-by: Armand Philippot <git@armand.philippot.eu> Co-authored-by: Matthew Phillips <matthewphillips@cloudflare.com> Co-authored-by: dfedoryshchev <64079946+dfedoryshchev@users.noreply.github.com> Co-authored-by: Andreas Deininger <andreas@deininger.net> Co-authored-by: Houston (Bot) <matthewp@users.noreply.github.com> Co-authored-by: Matthew Phillips <matthew@matthewphillips.info>
@astrojs/cloudflare/fetch@astrojs/cloudflare/honoChanges
@astrojs/cloudflare/fetchexporting acf(state, env, ctx)function that applies Cloudflare-specific setup to aFetchState— session KV binding injection, static asset serving via ASSETS,locals.cfContext, client address fromcf-connecting-ip,waitUntil, and prerendered error page fetch. Returns aResponsefor asset hits,undefinedotherwise.@astrojs/cloudflare/honoexporting acf()Hono middleware that does the same setup, readingenvandexecutionCtxfrom the Hono context automatically (no arguments needed).handler.tsintocf-helpers.tsandcf.ts, then refactorshandler.tsto use them. Zero duplication between thehandle()entrypoint and the new exports.Testing
cf-helpers.test.tswith 18 unit tests coveringcreateLocals,getClientAddress,matchStaticAsset,fallbackToAssets, andcreateErrorPageFetch. Tests use mockEnvandExecutionContextobjects — no fixtures or build required.handler.tsrefactor.Docs