Next.js website for Rocky Mountain Vending company featuring: - Product catalog with Stripe integration - Service areas and parts pages - Admin dashboard with Clerk authentication - SEO optimized pages with JSON-LD structured data Co-authored-by: Cursor <cursoragent@cursor.com>
35 lines
No EOL
1.2 KiB
Text
35 lines
No EOL
1.2 KiB
Text
import { DecodeError } from '../../utils';
|
|
import { safeRouteMatcher } from './route-match-utils';
|
|
export function getRouteMatcher({ re, groups }) {
|
|
const rawMatcher = (pathname)=>{
|
|
const routeMatch = re.exec(pathname);
|
|
if (!routeMatch) return false;
|
|
const decode = (param)=>{
|
|
try {
|
|
return decodeURIComponent(param);
|
|
} catch {
|
|
throw Object.defineProperty(new DecodeError('failed to decode param'), "__NEXT_ERROR_CODE", {
|
|
value: "E528",
|
|
enumerable: false,
|
|
configurable: true
|
|
});
|
|
}
|
|
};
|
|
const params = {};
|
|
for (const [key, group] of Object.entries(groups)){
|
|
const match = routeMatch[group.pos];
|
|
if (match !== undefined) {
|
|
if (group.repeat) {
|
|
params[key] = match.split('/').map((entry)=>decode(entry));
|
|
} else {
|
|
params[key] = decode(match);
|
|
}
|
|
}
|
|
}
|
|
return params;
|
|
};
|
|
// Wrap with safe matcher to handle parameter cleaning
|
|
return safeRouteMatcher(rawMatcher);
|
|
}
|
|
|
|
//# sourceMappingURL=route-matcher.js.map |