UNPKG

astro

Version:

Astro is a modern site builder with web best practices, performance, and DX front-of-mind.

33 lines (32 loc) 1.08 kB
async function renderRedirect(renderContext) { const { request: { method }, routeData } = renderContext; const { redirect, redirectRoute } = routeData; const status = redirectRoute && typeof redirect === "object" ? redirect.status : method === "GET" ? 301 : 308; const headers = { location: encodeURI(redirectRouteGenerate(renderContext)) }; return new Response(null, { status, headers }); } function redirectRouteGenerate(renderContext) { const { params, routeData: { redirect, redirectRoute } } = renderContext; if (typeof redirectRoute !== "undefined") { return redirectRoute?.generate(params) || redirectRoute?.pathname || "/"; } else if (typeof redirect === "string") { let target = redirect; for (const param of Object.keys(params)) { const paramValue = params[param]; target = target.replace(`[${param}]`, paramValue).replace(`[...${param}]`, paramValue); } return target; } else if (typeof redirect === "undefined") { return "/"; } return redirect.destination; } export { renderRedirect };