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
60 lines
2.1 KiB
Plaintext
60 lines
2.1 KiB
Plaintext
import { sanitizeFallbackLocale } from './sanitizeFallbackLocale.js';
|
|
/**
|
|
* Mutates the Request to contain 'locale' and 'fallbackLocale' based on data or searchParams
|
|
*/ export function addLocalesToRequestFromData(req) {
|
|
const { data, payload: { config } } = req;
|
|
if (data) {
|
|
const localeOnReq = req.locale;
|
|
const fallbackLocaleOnReq = req.fallbackLocale;
|
|
let localeFromData;
|
|
let fallbackLocaleFromData;
|
|
if (!localeOnReq && data?.locale && typeof data.locale === 'string') {
|
|
localeFromData = data.locale;
|
|
}
|
|
if (!fallbackLocaleOnReq) {
|
|
if (data?.['fallback-locale'] && typeof data?.['fallback-locale'] === 'string') {
|
|
fallbackLocaleFromData = data['fallback-locale'];
|
|
}
|
|
if (data?.['fallbackLocale'] && typeof data?.['fallbackLocale'] === 'string') {
|
|
fallbackLocaleFromData = data['fallbackLocale'];
|
|
}
|
|
}
|
|
if (!localeOnReq || !fallbackLocaleOnReq) {
|
|
const { fallbackLocale, locale } = sanitizeLocales({
|
|
fallbackLocale: fallbackLocaleFromData,
|
|
locale: localeFromData,
|
|
localization: config.localization
|
|
});
|
|
if (localeFromData) {
|
|
req.locale = locale;
|
|
}
|
|
if (fallbackLocaleFromData) {
|
|
req.fallbackLocale = fallbackLocale;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
export const sanitizeLocales = ({ fallbackLocale, locale, localization })=>{
|
|
// Check if localization has fallback enabled or if a fallback locale is provided
|
|
if (localization) {
|
|
fallbackLocale = sanitizeFallbackLocale({
|
|
fallbackLocale,
|
|
locale,
|
|
localization
|
|
});
|
|
}
|
|
if ([
|
|
'*',
|
|
'all'
|
|
].includes(locale)) {
|
|
locale = 'all';
|
|
} else if (localization && !localization.localeCodes.includes(locale) && localization.fallback) {
|
|
locale = localization.defaultLocale;
|
|
}
|
|
return {
|
|
fallbackLocale,
|
|
locale
|
|
};
|
|
};
|
|
|
|
//# sourceMappingURL=addLocalesToRequest.js.map |