Rocky_Mountain_Vending/.pnpm-store/v10/files/99/03a6e504d4257ce9f4675d5992184e3e39499360b2325a72e614215797442cc05d13487fb5ca937709196b6a6d3c97b02d059242109512f051270e960d58dc
DMleadgen 46d973904b
Initial commit: Rocky Mountain Vending website
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>
2026-02-12 16:22:15 -07:00

52 lines
No EOL
1.9 KiB
Text

/**
* A cache of lowercased locales for each list of locales. This is stored as a
* WeakMap so if the locales are garbage collected, the cache entry will be
* removed as well.
*/ const cache = new WeakMap();
/**
* For a pathname that may include a locale from a list of locales, it
* removes the locale from the pathname returning it alongside with the
* detected locale.
*
* @param pathname A pathname that may include a locale.
* @param locales A list of locales.
* @returns The detected locale and pathname without locale
*/ export function normalizeLocalePath(pathname, locales) {
// If locales is undefined, return the pathname as is.
if (!locales) return {
pathname
};
// Get the cached lowercased locales or create a new cache entry.
let lowercasedLocales = cache.get(locales);
if (!lowercasedLocales) {
lowercasedLocales = locales.map((locale)=>locale.toLowerCase());
cache.set(locales, lowercasedLocales);
}
let detectedLocale;
// The first segment will be empty, because it has a leading `/`. If
// there is no further segment, there is no locale (or it's the default).
const segments = pathname.split('/', 2);
// If there's no second segment (ie, the pathname is just `/`), there's no
// locale.
if (!segments[1]) return {
pathname
};
// The second segment will contain the locale part if any.
const segment = segments[1].toLowerCase();
// See if the segment matches one of the locales. If it doesn't, there is
// no locale (or it's the default).
const index = lowercasedLocales.indexOf(segment);
if (index < 0) return {
pathname
};
// Return the case-sensitive locale.
detectedLocale = locales[index];
// Remove the `/${locale}` part of the pathname.
pathname = pathname.slice(detectedLocale.length + 1) || '/';
return {
pathname,
detectedLocale
};
}
//# sourceMappingURL=normalize-locale-path.js.map