vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
33 lines (31 loc) • 4.95 kB
JavaScript
/**
* vite-plugin-react-server
* Copyright (c) Nico Brinkkemper
* MIT License
*/
function requestToRoute(req, handlerOptions) {
let route = req.url?.split("?")[0].replace(
handlerOptions.moduleBaseURL + handlerOptions.build.rscOutputPath,
""
).replace(
handlerOptions.moduleBaseURL + handlerOptions.build.htmlOutputPath,
""
).replace(/^\/index$/, "/");
if (typeof route !== "string") {
return route;
}
if (route.startsWith(handlerOptions.moduleBaseURL)) {
route = route.slice(handlerOptions.moduleBaseURL.length);
}
if (route.endsWith(handlerOptions.build.rscOutputPath)) {
route = route.slice(0, -handlerOptions.build.rscOutputPath.length);
}
if (route.startsWith(handlerOptions.moduleBasePath)) {
route = route.slice(handlerOptions.moduleBasePath.length);
}
const routeWithoutTrailingSlash = route === "" || route === "/" ? "/" : route.endsWith("/") ? route.slice(0, -1) : route;
const routeWithLeadingSlash = !routeWithoutTrailingSlash ? "/" : routeWithoutTrailingSlash.startsWith("/") ? routeWithoutTrailingSlash : `/${routeWithoutTrailingSlash}`;
return routeWithLeadingSlash;
}
export { requestToRoute };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdFRvUm91dGUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BsdWdpbi9oZWxwZXJzL3JlcXVlc3RUb1JvdXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ3JlYXRlSGFuZGxlck9wdGlvbnMgfSBmcm9tIFwiLi4vdHlwZXMuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlcXVlc3RUb1JvdXRlKFxuICByZXE6IHsgdXJsPzogc3RyaW5nIH0sXG4gIGhhbmRsZXJPcHRpb25zOiBQaWNrPFxuICAgIENyZWF0ZUhhbmRsZXJPcHRpb25zLFxuICAgIFwibW9kdWxlQmFzZVBhdGhcIiB8IFwibW9kdWxlQmFzZVVSTFwiIHwgXCJidWlsZFwiXG4gID5cbikge1xuICAvLyBTdHJpcCBxdWVyeSBzdHJpbmcgYmVmb3JlIHJvdXRlIG1hdGNoaW5nXG4gIGxldCByb3V0ZSA9IHJlcS51cmw/LnNwbGl0KFwiP1wiKVswXVxuICAgIC5yZXBsYWNlKFxuICAgICAgaGFuZGxlck9wdGlvbnMubW9kdWxlQmFzZVVSTCArIGhhbmRsZXJPcHRpb25zLmJ1aWxkLnJzY091dHB1dFBhdGgsXG4gICAgICBcIlwiXG4gICAgKVxuICAgIC5yZXBsYWNlKFxuICAgICAgaGFuZGxlck9wdGlvbnMubW9kdWxlQmFzZVVSTCArIGhhbmRsZXJPcHRpb25zLmJ1aWxkLmh0bWxPdXRwdXRQYXRoLFxuICAgICAgXCJcIlxuICAgIClcbiAgICAucmVwbGFjZSgvXlxcL2luZGV4JC8sIFwiL1wiKTtcbiAgaWYgKHR5cGVvZiByb3V0ZSAhPT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiByb3V0ZTtcbiAgfVxuICBcbiAgLy8gU3RyaXAgbW9kdWxlQmFzZVVSTCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHJvdXRlXG4gIGlmIChyb3V0ZS5zdGFydHNXaXRoKGhhbmRsZXJPcHRpb25zLm1vZHVsZUJhc2VVUkwpKSB7XG4gICAgcm91dGUgPSByb3V0ZS5zbGljZShoYW5kbGVyT3B0aW9ucy5tb2R1bGVCYXNlVVJMLmxlbmd0aCk7XG4gIH1cbiAgaWYocm91dGUuZW5kc1dpdGgoaGFuZGxlck9wdGlvbnMuYnVpbGQucnNjT3V0cHV0UGF0aCkpIHtcbiAgICByb3V0ZSA9IHJvdXRlLnNsaWNlKDAsIC1oYW5kbGVyT3B0aW9ucy5idWlsZC5yc2NPdXRwdXRQYXRoLmxlbmd0aCk7XG4gIH1cbiAgXG4gIGlmIChyb3V0ZS5zdGFydHNXaXRoKGhhbmRsZXJPcHRpb25zLm1vZHVsZUJhc2VQYXRoKSkge1xuICAgIHJvdXRlID0gcm91dGUuc2xpY2UoaGFuZGxlck9wdGlvbnMubW9kdWxlQmFzZVBhdGgubGVuZ3RoKTtcbiAgfVxuXG4gIGNvbnN0IHJvdXRlV2l0aG91dFRyYWlsaW5nU2xhc2ggPVxuICAgIHJvdXRlID09PSBcIlwiIHx8IHJvdXRlID09PSBcIi9cIlxuICAgICAgPyBcIi9cIlxuICAgICAgOiByb3V0ZS5lbmRzV2l0aChcIi9cIilcbiAgICAgID8gcm91dGUuc2xpY2UoMCwgLTEpXG4gICAgICA6IHJvdXRlO1xuXG4gIGNvbnN0IHJvdXRlV2l0aExlYWRpbmdTbGFzaCA9ICFyb3V0ZVdpdGhvdXRUcmFpbGluZ1NsYXNoXG4gICAgPyBcIi9cIlxuICAgIDogcm91dGVXaXRob3V0VHJhaWxpbmdTbGFzaC5zdGFydHNXaXRoKFwiL1wiKVxuICAgID8gcm91dGVXaXRob3V0VHJhaWxpbmdTbGFzaFxuICAgIDogYC8ke3JvdXRlV2l0aG91dFRyYWlsaW5nU2xhc2h9YDtcbiAgcmV0dXJuIHJvdXRlV2l0aExlYWRpbmdTbGFzaDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVPLFNBQVMsY0FBQSxDQUNkLEtBQ0EsY0FJQSxFQUFBO0FBRUEsRUFBQSxJQUFJLFFBQVEsR0FBSSxDQUFBLEdBQUEsRUFBSyxNQUFNLEdBQUcsQ0FBQSxDQUFFLENBQUMsQ0FDOUIsQ0FBQSxPQUFBO0FBQUEsSUFDQyxjQUFBLENBQWUsYUFBZ0IsR0FBQSxjQUFBLENBQWUsS0FBTSxDQUFBLGFBQUE7QUFBQSxJQUNwRDtBQUFBLEdBRUQsQ0FBQSxPQUFBO0FBQUEsSUFDQyxjQUFBLENBQWUsYUFBZ0IsR0FBQSxjQUFBLENBQWUsS0FBTSxDQUFBLGNBQUE7QUFBQSxJQUNwRDtBQUFBLEdBQ0YsQ0FDQyxPQUFRLENBQUEsV0FBQSxFQUFhLEdBQUcsQ0FBQTtBQUMzQixFQUFJLElBQUEsT0FBTyxVQUFVLFFBQVUsRUFBQTtBQUM3QixJQUFPLE9BQUEsS0FBQTtBQUFBO0FBSVQsRUFBQSxJQUFJLEtBQU0sQ0FBQSxVQUFBLENBQVcsY0FBZSxDQUFBLGFBQWEsQ0FBRyxFQUFBO0FBQ2xELElBQUEsS0FBQSxHQUFRLEtBQU0sQ0FBQSxLQUFBLENBQU0sY0FBZSxDQUFBLGFBQUEsQ0FBYyxNQUFNLENBQUE7QUFBQTtBQUV6RCxFQUFBLElBQUcsS0FBTSxDQUFBLFFBQUEsQ0FBUyxjQUFlLENBQUEsS0FBQSxDQUFNLGFBQWEsQ0FBRyxFQUFBO0FBQ3JELElBQUEsS0FBQSxHQUFRLE1BQU0sS0FBTSxDQUFBLENBQUEsRUFBRyxDQUFDLGNBQWUsQ0FBQSxLQUFBLENBQU0sY0FBYyxNQUFNLENBQUE7QUFBQTtBQUduRSxFQUFBLElBQUksS0FBTSxDQUFBLFVBQUEsQ0FBVyxjQUFlLENBQUEsY0FBYyxDQUFHLEVBQUE7QUFDbkQsSUFBQSxLQUFBLEdBQVEsS0FBTSxDQUFBLEtBQUEsQ0FBTSxjQUFlLENBQUEsY0FBQSxDQUFlLE1BQU0sQ0FBQTtBQUFBO0FBRzFELEVBQUEsTUFBTSx5QkFDSixHQUFBLEtBQUEsS0FBVSxFQUFNLElBQUEsS0FBQSxLQUFVLE1BQ3RCLEdBQ0EsR0FBQSxLQUFBLENBQU0sUUFBUyxDQUFBLEdBQUcsQ0FDbEIsR0FBQSxLQUFBLENBQU0sS0FBTSxDQUFBLENBQUEsRUFBRyxFQUFFLENBQ2pCLEdBQUEsS0FBQTtBQUVOLEVBQU0sTUFBQSxxQkFBQSxHQUF3QixDQUFDLHlCQUFBLEdBQzNCLEdBQ0EsR0FBQSx5QkFBQSxDQUEwQixXQUFXLEdBQUcsQ0FBQSxHQUN4Qyx5QkFDQSxHQUFBLENBQUEsQ0FBQSxFQUFJLHlCQUF5QixDQUFBLENBQUE7QUFDakMsRUFBTyxPQUFBLHFCQUFBO0FBQ1Q7Ozs7In0=