@ffsm/napi
Version:
Napi - A framework using with Next.js for building APIs.
29 lines (28 loc) • 832 B
JavaScript
export function matchRoute(route, path) {
if (!route && !path) {
return {};
}
if (!route || !path) {
return null;
}
const routeParts = route.replace(/^\/|\/$/g, '').split('/').filter(Boolean);
const pathParts = path.replace(/^\/|\/$/g, '').split('/').filter(Boolean);
const routeLength = routeParts.length;
if (pathParts.length > routeLength) {
return null;
}
const params = {};
for (let i = 0; i < routeLength; i++) {
const routePart = routeParts[i];
const pathPart = pathParts[i];
if (routePart.startsWith(':')) {
const paramName = routePart.slice(1);
params[paramName] = pathPart;
continue;
}
if (routePart !== pathPart) {
return null;
}
}
return params;
}