Spaces:
Sleeping
Sleeping
| ; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| Object.defineProperty(exports, "normalizeLocalePath", { | |
| enumerable: true, | |
| get: function() { | |
| return normalizeLocalePath; | |
| } | |
| }); | |
| /** | |
| * 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(); | |
| 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 |