alapa
Version:
A cutting-edge web development framework designed to revolutionize the way developers build modern web applications.
31 lines (30 loc) • 1.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getRouteByName = exports.RoutesNames = void 0;
exports.RoutesNames = {};
const getRouteByName = (name, ...params) => {
const route = exports.RoutesNames[name.trim().toLowerCase()];
if (route === "")
return "/";
if (route === undefined || route === null) {
throw new Error(`Route name '${name}' not found, the available urls names are ${JSON.stringify(exports.RoutesNames)}`);
}
let url = route;
const routeList = route.split("/");
const paramsCount = routeList.filter((routeSegment) => routeSegment.startsWith(":")).length;
if (params.length !== paramsCount) {
throw new Error(`Route '${name}' expects ${paramsCount} parameters, received ${params.length}`);
}
params.forEach((param) => {
const paramPlaceholder = routeList.find((segment) => segment.startsWith(":"));
if (paramPlaceholder) {
url = url.replace(paramPlaceholder, param.toString());
}
});
url = url
.split("/")
.filter((urlSegment) => urlSegment.trim().length > 0)
.join("/");
return url;
};
exports.getRouteByName = getRouteByName;