diff options
author | 2024-10-31 16:43:11 +0800 | |
---|---|---|
committer | 2024-10-31 16:43:11 +0800 | |
commit | 6184a9f9040d5e722c176a40ec652d7ebb6a03ea (patch) | |
tree | ee35fa84b11cf8f8a2ea07bf144a34e20e9b6167 | |
parent | 26122aeb62be4887701e3c8665a5b31b0d5b80dc (diff) | |
parent | cda61b80c1727be53640901d39bcb2214770e1ed (diff) | |
download | astro-6184a9f9040d5e722c176a40ec652d7ebb6a03ea.tar.gz astro-6184a9f9040d5e722c176a40ec652d7ebb6a03ea.tar.zst astro-6184a9f9040d5e722c176a40ec652d7ebb6a03ea.zip |
Merge branch 'main' into next
-rw-r--r-- | packages/integrations/netlify/CHANGELOG.md | 6 | ||||
-rw-r--r-- | packages/integrations/netlify/package.json | 8 | ||||
-rw-r--r-- | packages/integrations/netlify/src/index.ts | 19 |
3 files changed, 29 insertions, 4 deletions
diff --git a/packages/integrations/netlify/CHANGELOG.md b/packages/integrations/netlify/CHANGELOG.md index 7b43d721a..5220ff786 100644 --- a/packages/integrations/netlify/CHANGELOG.md +++ b/packages/integrations/netlify/CHANGELOG.md @@ -52,6 +52,12 @@ - [#385](https://github.com/withastro/adapters/pull/385) [`bb725b7`](https://github.com/withastro/adapters/commit/bb725b7a430a01a3cd197e3e84381be4fa0c945c) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Cleans up `astro:env` support +## 5.5.4 + +### Patch Changes + +- [#413](https://github.com/withastro/adapters/pull/413) [`1b18e67`](https://github.com/withastro/adapters/commit/1b18e671a689b67bde20fdc7fb8cf1d6283e4ec9) Thanks [@ascorbic](https://github.com/ascorbic)! - Fixes `context.rewrite` in edge middleware + ## 5.5.3 ### Patch Changes diff --git a/packages/integrations/netlify/package.json b/packages/integrations/netlify/package.json index f1ca2db60..ffdb68d94 100644 --- a/packages/integrations/netlify/package.json +++ b/packages/integrations/netlify/package.json @@ -34,9 +34,9 @@ "@astrojs/internal-helpers": "0.4.1", "@astrojs/underscore-redirects": "^0.4.0-alpha.0", "@netlify/functions": "^2.8.0", - "@vercel/nft": "^0.27.4", + "@vercel/nft": "^0.27.5", "esbuild": "^0.21.5", - "vite": "^5.4.8" + "vite": "^5.4.10" }, "peerDependencies": { "astro": "^5.0.0-alpha.8" @@ -45,14 +45,14 @@ "@astrojs/test-utils": "workspace:*", "@netlify/edge-functions": "^2.11.0", "@netlify/edge-handler-types": "^0.34.1", - "@types/node": "^20.16.10", + "@types/node": "^20.17.4", "astro": "^5.0.0-alpha.8", "astro-scripts": "workspace:*", "cheerio": "1.0.0", "execa": "^8.0.1", "fast-glob": "^3.3.2", "strip-ansi": "^7.1.0", - "typescript": "^5.6.2" + "typescript": "^5.6.3" }, "astro": { "external": true diff --git a/packages/integrations/netlify/src/index.ts b/packages/integrations/netlify/src/index.ts index 87adc6cab..a64bfb59c 100644 --- a/packages/integrations/netlify/src/index.ts +++ b/packages/integrations/netlify/src/index.ts @@ -292,6 +292,25 @@ export default function netlifyIntegration( params: {} }); ctx.locals = { netlify: { context } } + // https://docs.netlify.com/edge-functions/api/#return-a-rewrite + ctx.rewrite = (target) => { + if(target instanceof Request) { + // We can only mutate headers, so if anything else is different, we need to fetch + // the target URL instead. + if(target.method !== request.method || target.body || target.url.origin !== request.url.origin) { + return fetch(target); + } + // We can't replace the headers object, so we need to delete all headers and set them again + request.headers.forEach((_value, key) => { + request.headers.delete(key); + }); + target.headers.forEach((value, key) => { + request.headers.set(key, value); + }); + return new URL(target.url); + } + return new URL(target, request.url); + }; const next = () => { const { netlify, ...otherLocals } = ctx.locals; request.headers.set("x-astro-locals", trySerializeLocals(otherLocals)); |