UNPKG

@intlayer/core

Version:

Includes core Intlayer functions like translation, dictionary, and utility functions shared across multiple packages.

124 lines (122 loc) 4.54 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const require_runtime = require('../_virtual/_rolldown/runtime.cjs'); const require_localization_getPrefix = require('./getPrefix.cjs'); let _intlayer_config_built = require("@intlayer/config/built"); let _intlayer_config_defaultValues = require("@intlayer/config/defaultValues"); //#region src/localization/localeMapper.ts /** * Map the locale data to an array of objects * * @example * ```ts * const routes = localeMap((localizedData) => * ({ * path: localizedData.urlPrefix, * name: localizedData.locale, * isDefault: localizedData.isDefault, * locales: localizedData.locales, * defaultLocale: localizedData.defaultLocale, * }), * ); * * // Result * [ * { path: '/', name: 'en', isDefault: true, locales: ['en'], defaultLocale: 'en', urlPrefix: '' }, * { path: '/fr', name: 'fr', isDefault: false, locales: ['fr'], defaultLocale: 'en', urlPrefix: '/fr' }, * { path: '/es', name: 'es', isDefault: false, locales: ['es'], defaultLocale: 'en', urlPrefix: '/es' }, * ] * ``` * * @param mapper - The mapper function that returns an object * @returns An array of objects */ const localeMap = (mapper, locales = _intlayer_config_built.internationalization.locales ?? [], defaultLocale = _intlayer_config_built.internationalization.defaultLocale ?? _intlayer_config_defaultValues.DEFAULT_LOCALE, mode = _intlayer_config_built.routing?.mode ?? "prefix-no-default") => (locales ?? []).map((locale) => mapper({ locale, defaultLocale, locales, isDefault: locale === defaultLocale, urlPrefix: require_localization_getPrefix.getPrefix(locale, { defaultLocale, mode, locales }).localePrefix ? `/${locale}` : "" })); /** * Flatten the locale map into a single array of objects * * @example * ```ts * const routes = localeMap((localizedData) => * [{ * path: localizedData.urlPrefix, * name: localizedData.locale, * isDefault: localizedData.isDefault, * locales: localizedData.locales, * defaultLocale: localizedData.defaultLocale, * }], * ); * * // Result * [ * path: '/', name: 'en', isDefault: true, locales: ['en'], defaultLocale: 'en', urlPrefix: '' , * path: '/fr', name: 'fr', isDefault: false, locales: ['fr'], defaultLocale: 'en', urlPrefix: '/fr' , * path: '/es', name: 'es', isDefault: false, locales: ['es'], defaultLocale: 'en', urlPrefix: '/es' , * ] * ``` * * @param mapper - The mapper function that returns an array of objects * @returns An array of objects */ const localeFlatMap = (mapper, locales = _intlayer_config_built.internationalization.locales ?? [], defaultLocale = _intlayer_config_built.internationalization.defaultLocale ?? _intlayer_config_defaultValues.DEFAULT_LOCALE, mode = _intlayer_config_built.routing?.mode ?? "prefix-no-default") => locales.flatMap((locale) => mapper({ locale, defaultLocale, locales, isDefault: locale === defaultLocale, urlPrefix: require_localization_getPrefix.getPrefix(locale, { defaultLocale, mode, locales }).localePrefix ? `/${locale}` : "" })); /** * Creates a record object mapping locales to values transformed by the mapper function * * @example * ```ts * const translations = localeRecord(({ locale }) => * require(`./translations/${locale}.json`) * ); * * // Result * * en: ... , // Content of translations/en.json * fr: ... , // Content of translations/fr.json * es: ... * * ``` * * @param mapper - Function that takes locale data and returns a value for that locale * @param locales - Array of locale codes to map over (defaults to configured locales) * @param defaultLocale - The default locale (defaults to configured default) * @param mode - URL routing mode for locale handling (defaults to configured value) * @returns Record mapping locale codes to mapped values */ const localeRecord = (mapper, locales = _intlayer_config_built.internationalization.locales ?? [], defaultLocale = _intlayer_config_built.internationalization.defaultLocale ?? _intlayer_config_defaultValues.DEFAULT_LOCALE, mode = _intlayer_config_built.routing?.mode ?? "prefix-no-default") => (locales ?? []).reduce((acc, locale) => { acc[locale] = mapper({ locale, defaultLocale, locales, isDefault: locale === defaultLocale, urlPrefix: require_localization_getPrefix.getPrefix(locale, { defaultLocale, mode, locales }).localePrefix ? `/${locale}` : "" }); return acc; }, {}); //#endregion exports.localeFlatMap = localeFlatMap; exports.localeMap = localeMap; exports.localeRecord = localeRecord; //# sourceMappingURL=localeMapper.cjs.map