summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/integrations/vercel/CHANGELOG.md6
-rw-r--r--packages/integrations/vercel/package.json4
-rw-r--r--packages/integrations/vercel/src/lib/redirects.ts40
-rw-r--r--packages/integrations/vercel/test/fixtures/isr/astro.config.mjs2
-rw-r--r--packages/integrations/vercel/test/fixtures/isr/src/pages/excluded/[...rest].astro8
-rw-r--r--packages/integrations/vercel/test/isr.test.js8
6 files changed, 48 insertions, 20 deletions
diff --git a/packages/integrations/vercel/CHANGELOG.md b/packages/integrations/vercel/CHANGELOG.md
index ff066de63..cb2556add 100644
--- a/packages/integrations/vercel/CHANGELOG.md
+++ b/packages/integrations/vercel/CHANGELOG.md
@@ -20,6 +20,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
+## 7.8.2
+
+### Patch Changes
+
+- [#373](https://github.com/withastro/adapters/pull/373) [`5b802a4`](https://github.com/withastro/adapters/commit/5b802a4099743c86418747872171bbe224caaa6d) Thanks [@hrabiel](https://github.com/hrabiel)! - Fix excluding routes with rest parameters from ISR
+
## 7.8.1
### Patch Changes
diff --git a/packages/integrations/vercel/package.json b/packages/integrations/vercel/package.json
index bbdb967ac..4f9ca6c55 100644
--- a/packages/integrations/vercel/package.json
+++ b/packages/integrations/vercel/package.json
@@ -37,9 +37,9 @@
},
"dependencies": {
"@astrojs/internal-helpers": "^0.4.1",
- "@vercel/analytics": "^1.3.1",
+ "@vercel/analytics": "^1.3.2",
"@vercel/edge": "^1.1.2",
- "@vercel/nft": "^0.27.4",
+ "@vercel/nft": "^0.27.5",
"esbuild": "^0.21.5",
"fast-glob": "^3.3.2"
},
diff --git a/packages/integrations/vercel/src/lib/redirects.ts b/packages/integrations/vercel/src/lib/redirects.ts
index 9a7a503aa..7ef4d5045 100644
--- a/packages/integrations/vercel/src/lib/redirects.ts
+++ b/packages/integrations/vercel/src/lib/redirects.ts
@@ -45,25 +45,31 @@ function getParts(part: string, file: string) {
// 2022-04-26
function getMatchPattern(segments: RoutePart[][]) {
return segments
- .map((segment) => {
- return segment[0].spread
+ .map((segment, segmentIndex) => {
+ return segment.length === 1 && segment[0].spread
? '(?:\\/(.*?))?'
- : segment
- .map((part) => {
- if (part)
- return part.dynamic
- ? '([^/]+?)'
- : part.content
- .normalize()
- .replace(/\?/g, '%3F')
- .replace(/#/g, '%23')
- .replace(/%5B/g, '[')
- .replace(/%5D/g, ']')
- .replace(/[*+?^${}()|[\]\\]/g, '\\$&');
- })
- .join('');
+ : // Omit leading slash if segment is a spread.
+ // This is handled using a regex in Astro core.
+ // To avoid complex data massaging, we handle in-place here.
+ (segmentIndex === 0 ? '' : '/') +
+ segment
+ .map((part) => {
+ if (part)
+ return part.spread
+ ? '(.*?)'
+ : part.dynamic
+ ? '([^/]+?)'
+ : part.content
+ .normalize()
+ .replace(/\?/g, '%3F')
+ .replace(/#/g, '%23')
+ .replace(/%5B/g, '[')
+ .replace(/%5D/g, ']')
+ .replace(/[*+?^${}()|[\]\\]/g, '\\$&');
+ })
+ .join('');
})
- .join('/');
+ .join('');
}
function getReplacePattern(segments: RoutePart[][]) {
diff --git a/packages/integrations/vercel/test/fixtures/isr/astro.config.mjs b/packages/integrations/vercel/test/fixtures/isr/astro.config.mjs
index 4b675ab6c..97626d60b 100644
--- a/packages/integrations/vercel/test/fixtures/isr/astro.config.mjs
+++ b/packages/integrations/vercel/test/fixtures/isr/astro.config.mjs
@@ -7,7 +7,7 @@ export default defineConfig({
isr: {
bypassToken: "1c9e601d-9943-4e7c-9575-005556d774a8",
expiration: 120,
- exclude: ["/two", "/excluded/[dynamic]"]
+ exclude: ["/two", "/excluded/[dynamic]", "/excluded/[...rest]"]
}
})
});
diff --git a/packages/integrations/vercel/test/fixtures/isr/src/pages/excluded/[...rest].astro b/packages/integrations/vercel/test/fixtures/isr/src/pages/excluded/[...rest].astro
new file mode 100644
index 000000000..caf4f5416
--- /dev/null
+++ b/packages/integrations/vercel/test/fixtures/isr/src/pages/excluded/[...rest].astro
@@ -0,0 +1,8 @@
+<html>
+ <head>
+ <title>Rest</title>
+ </head>
+ <body>
+ <h1>Rest</h1>
+ </body>
+</html>
diff --git a/packages/integrations/vercel/test/isr.test.js b/packages/integrations/vercel/test/isr.test.js
index 6c88d0081..e3af25d66 100644
--- a/packages/integrations/vercel/test/isr.test.js
+++ b/packages/integrations/vercel/test/isr.test.js
@@ -38,10 +38,18 @@ describe('ISR', () => {
dest: '_render',
},
{
+ src: '^/excluded(?:\\/(.*?))?$',
+ dest: '_render',
+ },
+ {
src: '^\\/excluded\\/([^/]+?)\\/?$',
dest: '/_isr?x_astro_path=$0',
},
{
+ src: '^\\/excluded(?:\\/(.*?))?\\/?$',
+ dest: '/_isr?x_astro_path=$0',
+ },
+ {
src: '^\\/one\\/?$',
dest: '/_isr?x_astro_path=$0',
},