Files
klz-cables.com/.pnpm-store/v10/files/91/adb4f3083ffca1de138201c462a9ca5f4096e0af92771a007a7d50598c28c2ab005931ad30ce1bff2669b3fb22c0e6dde3b8d0cc04be4be873cdbeb5894500
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

30 lines
839 B
Plaintext

// Cache for Set conversions to avoid repeated array->Set conversions
const availableLocalesSetCache = new WeakMap();
/**
* https://tc39.es/ecma402/#sec-bestavailablelocale
* @param availableLocales
* @param locale
*/
export function BestAvailableLocale(availableLocales, locale) {
// Fast path: use Set for O(1) lookups instead of O(n) indexOf
let availableSet = availableLocalesSetCache.get(availableLocales);
if (!availableSet) {
availableSet = new Set(availableLocales);
availableLocalesSetCache.set(availableLocales, availableSet);
}
let candidate = locale;
while (true) {
if (availableSet.has(candidate)) {
return candidate;
}
let pos = candidate.lastIndexOf("-");
if (!~pos) {
return undefined;
}
if (pos >= 2 && candidate[pos - 2] === "-") {
pos -= 2;
}
candidate = candidate.slice(0, pos);
}
}