summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/integrations/vercel/src/lib/redirects.ts21
-rw-r--r--packages/integrations/vercel/test/redirects.test.js12
2 files changed, 15 insertions, 18 deletions
diff --git a/packages/integrations/vercel/src/lib/redirects.ts b/packages/integrations/vercel/src/lib/redirects.ts
index 1ec19bfac..5c6bb605b 100644
--- a/packages/integrations/vercel/src/lib/redirects.ts
+++ b/packages/integrations/vercel/src/lib/redirects.ts
@@ -1,10 +1,9 @@
-import type { AstroConfig, RouteData, RoutePart } from 'astro';
import { appendForwardSlash } from '@astrojs/internal-helpers/path';
+import type { AstroConfig, RouteData, RoutePart } from 'astro';
import nodePath from 'node:path';
const pathJoin = nodePath.posix.join;
-
// https://vercel.com/docs/project-configuration#legacy/routes
interface VercelRoute {
src: string;
@@ -60,19 +59,19 @@ function getReplacePattern(segments: RoutePart[][]) {
}
function getRedirectLocation(route: RouteData, config: AstroConfig): string {
- if(route.redirectRoute) {
+ if (route.redirectRoute) {
const pattern = getReplacePattern(route.redirectRoute.segments);
- const path = (config.trailingSlash === 'always' ? appendForwardSlash(pattern) : pattern);
+ const path = config.trailingSlash === 'always' ? appendForwardSlash(pattern) : pattern;
return pathJoin(config.base, path);
- } else if(typeof route.redirect === 'object') {
+ } else if (typeof route.redirect === 'object') {
return pathJoin(config.base, route.redirect.destination);
} else {
return pathJoin(config.base, route.redirect || '');
- }
+ }
}
function getRedirectStatus(route: RouteData): number {
- if(typeof route.redirect === 'object') {
+ if (typeof route.redirect === 'object') {
return route.redirect.status;
}
return 301;
@@ -81,14 +80,12 @@ function getRedirectStatus(route: RouteData): number {
export function getRedirects(routes: RouteData[], config: AstroConfig): VercelRoute[] {
let redirects: VercelRoute[] = [];
-
-
- for(const route of routes) {
- if(route.type === 'redirect') {
+ for (const route of routes) {
+ if (route.type === 'redirect') {
redirects.push({
src: config.base + getMatchPattern(route.segments),
headers: { Location: getRedirectLocation(route, config) },
- status: getRedirectStatus(route)
+ status: getRedirectStatus(route),
});
} else if (route.type === 'page') {
if (config.trailingSlash === 'always') {
diff --git a/packages/integrations/vercel/test/redirects.test.js b/packages/integrations/vercel/test/redirects.test.js
index 0d54589fc..16d845b04 100644
--- a/packages/integrations/vercel/test/redirects.test.js
+++ b/packages/integrations/vercel/test/redirects.test.js
@@ -14,7 +14,7 @@ describe('Redirects', () => {
'/two': '/',
'/three': {
status: 302,
- destination: '/'
+ destination: '/',
},
'/blog/[...slug]': '/team/articles/[...slug]',
},
@@ -35,15 +35,15 @@ describe('Redirects', () => {
it('define static routes', async () => {
const config = await getConfig();
- const oneRoute = config.routes.find(r => r.src === '/\\/one');
+ const oneRoute = config.routes.find((r) => r.src === '/\\/one');
expect(oneRoute.headers.Location).to.equal('/');
expect(oneRoute.status).to.equal(301);
-
- const twoRoute = config.routes.find(r => r.src === '/\\/two');
+
+ const twoRoute = config.routes.find((r) => r.src === '/\\/two');
expect(twoRoute.headers.Location).to.equal('/');
expect(twoRoute.status).to.equal(301);
- const threeRoute = config.routes.find(r => r.src === '/\\/three');
+ const threeRoute = config.routes.find((r) => r.src === '/\\/three');
expect(threeRoute.headers.Location).to.equal('/');
expect(threeRoute.status).to.equal(302);
});
@@ -51,7 +51,7 @@ describe('Redirects', () => {
it('defines dynamic routes', async () => {
const config = await getConfig();
- const blogRoute = config.routes.find(r => r.src.startsWith('/\\/blog'));
+ const blogRoute = config.routes.find((r) => r.src.startsWith('/\\/blog'));
expect(blogRoute).to.not.be.undefined;
expect(blogRoute.headers.Location.startsWith('/team/articles')).to.equal(true);
expect(blogRoute.status).to.equal(301);