UNPKG

payload

Version:

Node, React, Headless CMS and Application Framework built on Next.js

61 lines (60 loc) 2.16 kB
// @ts-strict-ignore 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