{"version":3,"file":"profile-context-keys.mjs","sources":["../../../../node_modules/.pnpm/@owc+translations-util@1.7.0/node_modules/@owc/translations-util/dist/index.mjs","../../src/translations/get-supported-locales.ts","../../src/translations/load-translations.ts","../../src/translations/use-translations.ts","../../src/translations/keys/profile-context-keys.ts"],"sourcesContent":["const e=class e{static instance;translationsCache=new Map;manifestCache=new Map;static BASE_URL=`https://i18n.oneweb.mercedes-benz.com`;static BASE_PHRASE_URL=`${this.BASE_URL}/projects/`;static isBrowser=typeof window<`u`;constructor(){}static getInstance(){return e.instance||=new e,e.instance}async fetchCrowdinManifest(t){if(e.isBrowser&&this.manifestCache.has(t))return this.manifestCache.get(t);let n=`${e.BASE_URL}/${t}/manifest.json`;try{let r=await fetch(n);if(!r.ok)throw Error(`Error fetching Crowdin manifest: ${r.statusText}`);let i=await r.json(),a={files:i.files,languages:i.languages,custom_languages:i.custom_languages,timestamp:i.timestamp,content:i.content};return e.isBrowser&&this.manifestCache.set(t,a),a}catch(e){throw console.error(e),e}}async buildCrowdinTranslationUrl(t,n,r){let i=new URL(`${e.BASE_URL}/${n}${t}`);return i.searchParams.append(`timestamp`,r),i}async fetchCrowdinTranslation(t,n,r){if(!e.isBrowser){let e=await this.buildCrowdinTranslationUrl(t,n,r);return await this.fetchTranslation(e)}this.translationsCache.has(n)||this.translationsCache.set(n,{});let i=this.translationsCache.get(n);if(!i[t]){let e=await this.buildCrowdinTranslationUrl(t,n,r);i[t]=await this.fetchTranslation(e)}return i[t]}buildPhraseTranslationUrl(t,n,r,i){let a=new URL(`${e.BASE_PHRASE_URL}${n}/locales/${t}/download`);return a.searchParams.append(`file_format`,r),i&&Object.keys(i).forEach(e=>{a.searchParams.append(e,i[e])}),a}async fetchPhraseTranslation(t,n,r,i){if(!e.isBrowser){let e=this.buildPhraseTranslationUrl(t,n,r,i);return await this.fetchTranslation(e)}this.translationsCache.has(n)||this.translationsCache.set(n,{});let a=this.translationsCache.get(n);if(!a[t]){let e=this.buildPhraseTranslationUrl(t,n,r,i);a[t]=await this.fetchTranslation(e)}return a[t]}async fetchTranslation(e){try{let t=await fetch(e);if(!t.ok)throw Error(`Error fetching translation: ${t.statusText}`);return await t.json()}catch(e){throw console.error(`Error fetching translation: ${e}`),e}}async getFileTranslations(e,t,n){let{content:r,timestamp:i}=await this.fetchCrowdinManifest(t);e=Array.isArray(e)?e:[e];let a={};for(let o of e){if(r&&!Object.values(r).some(e=>e.includes(o)))throw Error(`File ${o} not found in the manifest`);let e=await this.fetchCrowdinTranslation(o,t,i);n?.merge?a={...a,...e}:a[o]=e}return a}async getLocaleTranslations(e,t,n,r){if(n)return this.fetchPhraseTranslation(e,t,n,r);let{languages:i,content:a,custom_languages:o,timestamp:s}=await this.fetchCrowdinManifest(t),c=this.findMatchingLocale(e,[...i,...o?Object.keys(o):[]]),l=a[c];if(l.length===0)throw Error(`No translation files found for locale ${c}`);let u={};return await Promise.all(l.map(async e=>{let n=await this.fetchCrowdinTranslation(e,t,s);u={...u,...n}})),u}findMatchingLocale(e,t){if(t.includes(e))return e;if(t.includes(e.toLowerCase()))return e.toLowerCase();let[n]=e.split(`-`),r=t.find(e=>e===n);if(!r)throw Error(`Locale ${e} not found in the manifest. Available languages: ${t.join(`, `)}`);return r}}.getInstance();function t(t,n,r,i){return e.getLocaleTranslations(t,n,r,i)}function n(t,n,r){return e.getFileTranslations(t,n,r)}export{n as getFileTranslation,t as getTranslation};\n//# sourceMappingURL=index.mjs.map","import { LOG_GROUPS, LOG_LEVEL } from '@/logger';\nimport { getSharedLogger } from '@/logger/shared-logger';\nimport { storage } from '@/storage';\nimport { tryCatch } from '@/utilities';\n\nconst CROWDIN_PROJECT_BASE_URL = 'https://i18n.oneweb.mercedes-benz.com';\n\nconst storageLocalesKey = 'locales';\nconst storagePrefix = 'translations';\nconst storageLocalesTimestampKey = 'localesTimestamp';\nconst localesStorageDuration = 24 * 60 * 60 * 1000; // one day\n\nfunction getStorageKeys(projectId: string) {\n  return {\n    storedLocalesStorageKey: `${storagePrefix}.${projectId}.${storageLocalesKey}`,\n    storedLocalesStorageTimestampKey: `${storagePrefix}.${projectId}.${storageLocalesTimestampKey}`,\n  };\n}\n\n/**\n * Returns supported locales for a Crowdin project, using a one-day cache when available.\n */\nexport async function getSupportedLocales(projectId: string) {\n  const { storedLocalesStorageKey, storedLocalesStorageTimestampKey } = getStorageKeys(projectId);\n\n  const storedLocales = storage.local.get<string[]>(storedLocalesStorageKey);\n  const storedTimestamp = storage.local.get<string>(storedLocalesStorageTimestampKey);\n\n  if (storedLocales && storedTimestamp) {\n    const lastFetched = new Date(storedTimestamp);\n    const now = new Date();\n\n    if (now.getTime() - lastFetched.getTime() < localesStorageDuration) {\n      return storedLocales;\n    }\n  }\n\n  return await fetchSupportedLocales(projectId);\n}\n\n/**\n * Fetches the supported locales manifest for a Crowdin project.\n */\nexport async function fetchSupportedLocales(projectId: string) {\n  const logger = getSharedLogger();\n  const { storedLocalesStorageKey, storedLocalesStorageTimestampKey } = getStorageKeys(projectId);\n  const url = `${CROWDIN_PROJECT_BASE_URL}/${projectId}/manifest.json`;\n\n  const { data, error } = await tryCatch<{ languages: string[] }>(\n    (async () =>\n      (\n        await fetch(url, {\n          method: 'GET',\n          headers: {\n            'Content-Type': 'application/json',\n          },\n        })\n      ).json())(),\n  );\n\n  const i18nLocales = data?.languages ?? [];\n\n  if (error || !i18nLocales.length) {\n    logger('Error fetching i18n locales', {\n      args: [error ?? 'Locales require to be fetched after a timeout'],\n      group: LOG_GROUPS.TRANSLATION,\n      level: error ? LOG_LEVEL.ERROR : LOG_LEVEL.INFO,\n    });\n    return [];\n  }\n\n  storage.local.set(storedLocalesStorageKey, i18nLocales);\n  storage.local.set(storedLocalesStorageTimestampKey, new Date().toISOString());\n\n  return i18nLocales;\n}\n\n/**\n * Checks whether a locale is supported either exactly or by language prefix.\n */\nexport async function isLocaleSupported(locale: string, projectId: string): Promise<boolean> {\n  const availableLocales = await getSupportedLocales(projectId);\n  const [language] = locale.split('-');\n\n  return availableLocales.includes(locale) || availableLocales.includes(language);\n}\n","import { getTranslation } from '@owc/translations-util';\n\nimport { LOG_GROUPS, LOG_LEVEL } from '@/logger';\nimport { getSharedLogger } from '@/logger/shared-logger';\nimport { getEnvironmentData, tryCatch } from '@/utilities';\n\nimport { isLocaleSupported } from './get-supported-locales';\n\nexport type Translations = {\n  locale: string;\n  messages: Record<string, Record<string, string>>;\n};\n\nconst fallbackCountry = 'GB';\nconst fallbackLanguage = 'en';\n\nexport const fallbackLocale = `${fallbackLanguage}-${fallbackCountry}`;\nlet locale = fallbackLocale;\nexport const translations = new Map<string, Translations>();\n\nexport function getLocale() {\n  return locale;\n}\n\n/**\n * Loads the active and fallback translation bundles for the given project.\n */\nexport async function loadTranslations(projectId: string, componentName: string) {\n  const logger = getSharedLogger();\n  const { country = fallbackCountry, language = fallbackLanguage } = (await getEnvironmentData(componentName))\n    .pageEnvironmentVariables;\n  locale = `${language}-${country}`;\n  const requestedLocale = locale;\n\n  let isSupported = await isLocaleSupported(locale, projectId);\n\n  if (!isSupported) {\n    locale = fallbackLocale;\n\n    // check also if default locale is supported\n    isSupported = await isLocaleSupported(locale, projectId);\n\n    if (!isSupported) {\n      logger(\n        `Neither ${locale} nor the default locale ${fallbackLocale} translations were found. No translations will be loaded.`,\n        {\n          args: [],\n          level: LOG_LEVEL.INFO,\n          group: LOG_GROUPS.TRANSLATION,\n        },\n      );\n      return translations;\n    }\n\n    logger(`Translations for ${requestedLocale} were not found, falling back to default locale ${fallbackLocale}.`, {\n      args: [],\n      level: LOG_LEVEL.INFO,\n      group: LOG_GROUPS.TRANSLATION,\n    });\n  }\n\n  await fetchTranslations(fallbackLocale, projectId);\n  if (locale === fallbackLocale) {\n    return translations;\n  }\n\n  await fetchTranslations(locale, projectId);\n  return translations;\n}\n\n/**\n * Converts nested translation objects to a flat dot-separated key map.\n */\nfunction flattenTranslations(obj: Record<string, unknown>, prefix = ''): Record<string, string> {\n  const result: Record<string, string> = {};\n\n  for (const [key, value] of Object.entries(obj)) {\n    const newKey = prefix ? `${prefix}.${key}` : key;\n\n    if (typeof value === 'string') {\n      result[newKey] = value;\n    } else if (isRecord(value)) {\n      Object.assign(result, flattenTranslations(value, newKey));\n    }\n  }\n\n  return result;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n  return typeof value === 'object' && value !== null;\n}\n\nasync function fetchTranslations(locale: string, projectId: string) {\n  const logger = getSharedLogger();\n\n  const { data, error } = await tryCatch<Record<string, unknown>>(getTranslation(locale, projectId));\n\n  if (error) {\n    logger(`Error fetching translations for ${locale}.`, {\n      args: [error],\n      level: LOG_LEVEL.ERROR,\n      group: LOG_GROUPS.TRANSLATION,\n    });\n\n    return;\n  }\n\n  const flattened = flattenTranslations(data);\n\n  translations.set(locale, {\n    locale,\n    messages: {\n      [locale]: flattened,\n    },\n  });\n}\n","import { fallbackLocale, getLocale, translations } from './load-translations';\n\n/**\n * Returns translation lookup helpers backed by the loaded translation cache.\n */\nexport function useTranslations() {\n  const currentLocale = getLocale();\n  const { locale, messages } = translations.get(currentLocale) ?? { locale: 'unknown', messages: {} };\n  const { locale: defaultLocale, messages: defaultMessages } = translations.get(fallbackLocale) ?? {\n    locale: 'unknown',\n    messages: {},\n  };\n\n  const translatedMessages = messages[locale] || {};\n  const defaultTranslatedMessages = defaultMessages[defaultLocale] || {};\n\n  return {\n    exist: (key: string) => key in translatedMessages || key in defaultTranslatedMessages,\n    t: (key: string) => translatedMessages[key] || defaultTranslatedMessages[key] || key,\n    availableLocales: Array.from(translations.keys()),\n    locale,\n  };\n}\n","/* v8 ignore start -- static translation key registry with no behavioral logic */\nexport const PROFILE_CONTEXT_KEYS = {\n  PRIVATE: 'profile.context.private.registered',\n  COMPANY: 'profile.context.company.registered',\n  GUEST_PRIVATE: 'profile.context.private.guest',\n  GUEST_COMPANY: 'profile.context.company.guest',\n  ADD_COMPANY: 'profile.context.company.add',\n  NOT_AVAILABLE: 'profile.context.not.available',\n  NOTIFICATIONS_PROFILES_NOT_AVAILABLE: 'profile.context.notifications.profilesNotAvailable',\n  PROFILE_NOT_AVAILABLE: 'profile.context.not.available',\n  NOTIFICATIONS_CONTEXT_CHANGE_PRIVATE: 'profile.context.notification.change.private',\n  NOTIFICATIONS_CONTEXT_CHANGE_BUSINESS: 'profile.context.notification.change.business',\n  NOTIFICATIONS_CONTEXT_CHANGE_BUSINESS_GUEST: 'profile.context.notification.change.business.guest',\n  LOGIN: 'profile.context.navigation.login',\n  DROPDOWN_LABEL: 'profile.context.dropdown.label',\n} as const;\n/* v8 ignore stop */\n"],"names":["e","n","r","i","a","t","o","s","c","l","u","CROWDIN_PROJECT_BASE_URL","storageLocalesKey","storagePrefix","storageLocalesTimestampKey","localesStorageDuration","getStorageKeys","projectId","getSupportedLocales","storedLocalesStorageKey","storedLocalesStorageTimestampKey","storedLocales","storage","storedTimestamp","lastFetched","fetchSupportedLocales","logger","getSharedLogger","url","data","error","tryCatch","i18nLocales","LOG_GROUPS","LOG_LEVEL","isLocaleSupported","locale","availableLocales","language","fallbackCountry","fallbackLanguage","fallbackLocale","translations","getLocale","loadTranslations","componentName","country","getEnvironmentData","requestedLocale","isSupported","fetchTranslations","flattenTranslations","obj","prefix","result","key","value","newKey","isRecord","getTranslation","flattened","useTranslations","currentLocale","messages","defaultLocale","defaultMessages","translatedMessages","defaultTranslatedMessages","PROFILE_CONTEXT_KEYS"],"mappings":"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","x_google_ignoreList":[0]}