astro-ghostcms/.pnpm-store/v3/files/f5/693967c83e2969bf33b56a934d7...

40 lines
1.1 KiB
Plaintext

function routeIsRedirect(route) {
return route?.type === "redirect";
}
function routeIsFallback(route) {
return route?.type === "fallback";
}
function redirectRouteGenerate(redirectRoute, data) {
const routeData = redirectRoute.redirectRoute;
const route = redirectRoute.redirect;
if (typeof routeData !== "undefined") {
return routeData?.generate(data) || routeData?.pathname || "/";
} else if (typeof route === "string") {
let target = route;
for (const param of Object.keys(data)) {
const paramValue = data[param];
target = target.replace(`[${param}]`, paramValue);
target = target.replace(`[...${param}]`, paramValue);
}
return target;
} else if (typeof route === "undefined") {
return "/";
}
return route.destination;
}
function redirectRouteStatus(redirectRoute, method = "GET") {
const routeData = redirectRoute.redirectRoute;
if (routeData && typeof redirectRoute.redirect === "object") {
return redirectRoute.redirect.status;
} else if (method !== "GET") {
return 308;
}
return 301;
}
export {
redirectRouteGenerate,
redirectRouteStatus,
routeIsFallback,
routeIsRedirect
};