summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar bluwy <bjornlu.dev@gmail.com> 2024-10-31 16:43:11 +0800
committerGravatar bluwy <bjornlu.dev@gmail.com> 2024-10-31 16:43:11 +0800
commit6184a9f9040d5e722c176a40ec652d7ebb6a03ea (patch)
treeee35fa84b11cf8f8a2ea07bf144a34e20e9b6167
parent26122aeb62be4887701e3c8665a5b31b0d5b80dc (diff)
parentcda61b80c1727be53640901d39bcb2214770e1ed (diff)
downloadastro-6184a9f9040d5e722c176a40ec652d7ebb6a03ea.tar.gz
astro-6184a9f9040d5e722c176a40ec652d7ebb6a03ea.tar.zst
astro-6184a9f9040d5e722c176a40ec652d7ebb6a03ea.zip
Merge branch 'main' into next
-rw-r--r--packages/integrations/netlify/CHANGELOG.md6
-rw-r--r--packages/integrations/netlify/package.json8
-rw-r--r--packages/integrations/netlify/src/index.ts19
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));