UNPKG

@hyperse/translator

Version:

Translates messages from the given namespace by using the ICU syntax.

1 lines 53 kB
{"version":3,"sources":["../src/utils/joinPath.ts","../src/defaults.ts","../src/IntlError.ts","../src/utils/convertFormatsToIntlMessageFormat.ts","../src/formatter/formatters.ts","../src/utils/createMessageFormatter.ts","../src/utils/resolvePath.ts","../src/utils/getMessagesOrError.ts","../src/utils/getPlainMessage.ts","../src/utils/prepareTranslationValues.ts","../src/createBaseTranslator.ts","../src/utils/resolveNamespace.ts","../src/createTranslatorImpl.ts","../src/createTranslator.ts","../src/formatter/createFormatter.ts"],"names":["IntlMessageFormat","isValidElement"],"mappings":"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","file":"index.mjs","sourcesContent":["export function joinPath(...parts: Array<string | undefined>) {\n return parts.filter(Boolean).join('.');\n}\n","import type { IntlError } from './IntlError.js';\nimport { joinPath } from './utils/joinPath.js';\n\n/**\n * Contains defaults that are used for all entry points into the core.\n * See also `InitializedIntlConfiguration`.\n */\n\nexport function defaultGetMessageFallback(props: {\n error: IntlError;\n key: string;\n namespace?: string;\n}) {\n return joinPath(props.namespace, props.key);\n}\n\nexport function defaultOnError(error: IntlError) {\n console.error(error);\n}\n\n/**\n * Default function to check if a message is plain (has no placeholders).\n * Checks for '<' or '{' characters which indicate rich text or ICU placeholders.\n */\nexport function defaultPlainMessageCheck(message: string): boolean {\n return !/<|{/.test(message);\n}\n","export enum IntlErrorCode {\n MISSING_MESSAGE = 'MISSING_MESSAGE',\n MISSING_FORMAT = 'MISSING_FORMAT',\n ENVIRONMENT_FALLBACK = 'ENVIRONMENT_FALLBACK',\n INSUFFICIENT_PATH = 'INSUFFICIENT_PATH',\n INVALID_MESSAGE = 'INVALID_MESSAGE',\n INVALID_KEY = 'INVALID_KEY',\n FORMATTING_ERROR = 'FORMATTING_ERROR',\n}\n\nexport class IntlError extends Error {\n public readonly code: IntlErrorCode;\n public readonly originalMessage: string | undefined;\n\n constructor(code: IntlErrorCode, originalMessage?: string) {\n let message: string = code;\n if (originalMessage) {\n message += ': ' + originalMessage;\n }\n super(message);\n\n this.code = code;\n if (originalMessage) {\n this.originalMessage = originalMessage;\n }\n }\n}\n","import type { Formats as IntlFormats } from 'intl-messageformat';\nimport { IntlMessageFormat } from 'intl-messageformat';\nimport type { DateTimeFormatOptions } from '../types/DateTimeFormatOptions.js';\nimport type { Formats } from '../types/Formats.js';\nimport type { TimeZone } from '../types/TimeZone.js';\n\nfunction setTimeZoneInFormats(\n formats: Record<string, DateTimeFormatOptions> | undefined,\n timeZone: TimeZone\n) {\n if (!formats) return formats;\n\n // The only way to set a time zone with `intl-messageformat` is to merge it into the formats\n // https://github.com/formatjs/formatjs/blob/8256c5271505cf2606e48e3c97ecdd16ede4f1b5/packages/intl/src/message.ts#L15\n return Object.keys(formats).reduce(\n (acc: Record<string, DateTimeFormatOptions>, key) => {\n acc[key] = {\n timeZone,\n ...formats[key],\n };\n return acc;\n },\n {}\n );\n}\n\n/**\n * `intl-messageformat` uses separate keys for `date` and `time`, but there's\n * only one native API: `Intl.DateTimeFormat`. Additionally you might want to\n * include both a time and a date in a value, therefore the separation doesn't\n * seem so useful. We offer a single `dateTime` namespace instead, but we have\n * to convert the format before `intl-messageformat` can be used.\n */\nexport function convertFormatsToIntlMessageFormat(\n formats: Partial<Formats>,\n timeZone?: TimeZone\n): Partial<IntlFormats> {\n const formatsWithTimeZone = timeZone\n ? { ...formats, dateTime: setTimeZoneInFormats(formats.dateTime, timeZone) }\n : formats;\n\n const mfDateDefaults = IntlMessageFormat.formats.date as Formats['dateTime'];\n const defaultDateFormats = timeZone\n ? setTimeZoneInFormats(mfDateDefaults, timeZone)\n : mfDateDefaults;\n\n const mfTimeDefaults = IntlMessageFormat.formats.time as Formats['dateTime'];\n const defaultTimeFormats = timeZone\n ? setTimeZoneInFormats(mfTimeDefaults, timeZone)\n : mfTimeDefaults;\n\n return {\n ...formatsWithTimeZone,\n date: {\n ...defaultDateFormats,\n ...formatsWithTimeZone?.dateTime,\n },\n time: {\n ...defaultTimeFormats,\n ...formatsWithTimeZone?.dateTime,\n },\n };\n}\n","import type { IntlMessageFormat } from 'intl-messageformat';\nimport type { Cache } from '@formatjs/fast-memoize';\nimport { memoize, strategies } from '@formatjs/fast-memoize';\n\nexport type IntlCache = {\n dateTime: Record<string, Intl.DateTimeFormat>;\n number: Record<string, Intl.NumberFormat>;\n message: Record<string, IntlMessageFormat>;\n relativeTime: Record<string, Intl.RelativeTimeFormat>;\n pluralRules: Record<string, Intl.PluralRules>;\n list: Record<string, Intl.ListFormat>;\n displayNames: Record<string, Intl.DisplayNames>;\n};\n\nexport function createCache(): IntlCache {\n return {\n dateTime: {},\n number: {},\n message: {},\n relativeTime: {},\n pluralRules: {},\n list: {},\n displayNames: {},\n };\n}\n\nfunction createMemoCache<Value>(\n store: Record<string, Value | undefined>\n): Cache<string, Value> {\n return {\n create() {\n return {\n get(key) {\n return store[key];\n },\n set(key, value) {\n store[key] = value;\n },\n };\n },\n };\n}\n\nexport function memoFn<Fn extends (...args: Array<any>) => any>(\n fn: Fn,\n cache: Record<string, ReturnType<Fn> | undefined>\n) {\n return memoize(fn, {\n cache: createMemoCache(cache),\n strategy: strategies.variadic,\n }) as Fn;\n}\n\nfunction memoConstructor<Fn extends new (...args: Array<any>) => unknown>(\n ConstructorFn: Fn,\n cache: Record<string, InstanceType<Fn> | undefined>\n) {\n return memoFn(\n (...args: ConstructorParameters<Fn>) => new ConstructorFn(...args),\n cache\n ) as (...args: ConstructorParameters<Fn>) => InstanceType<Fn>;\n}\n\nexport type IntlFormatters = {\n getDateTimeFormat(\n ...args: ConstructorParameters<typeof Intl.DateTimeFormat>\n ): Intl.DateTimeFormat;\n getNumberFormat(\n ...args: ConstructorParameters<typeof Intl.NumberFormat>\n ): Intl.NumberFormat;\n getPluralRules(\n ...args: ConstructorParameters<typeof Intl.PluralRules>\n ): Intl.PluralRules;\n getRelativeTimeFormat(\n ...args: ConstructorParameters<typeof Intl.RelativeTimeFormat>\n ): Intl.RelativeTimeFormat;\n getListFormat(\n ...args: ConstructorParameters<typeof Intl.ListFormat>\n ): Intl.ListFormat;\n getDisplayNames(\n ...args: ConstructorParameters<typeof Intl.DisplayNames>\n ): Intl.DisplayNames;\n};\n\nexport function createIntlFormatters(cache: IntlCache): IntlFormatters {\n const getDateTimeFormat = memoConstructor(\n Intl.DateTimeFormat,\n cache.dateTime\n );\n const getNumberFormat = memoConstructor(Intl.NumberFormat, cache.number);\n const getPluralRules = memoConstructor(Intl.PluralRules, cache.pluralRules);\n const getRelativeTimeFormat = memoConstructor(\n Intl.RelativeTimeFormat,\n cache.relativeTime\n );\n const getListFormat = memoConstructor(Intl.ListFormat, cache.list);\n const getDisplayNames = memoConstructor(\n Intl.DisplayNames,\n cache.displayNames\n );\n\n return {\n getDateTimeFormat,\n getNumberFormat,\n getPluralRules,\n getRelativeTimeFormat,\n getListFormat,\n getDisplayNames,\n };\n}\n\nexport type MessageFormatter = (\n ...args: ConstructorParameters<typeof IntlMessageFormat>\n) => IntlMessageFormat;\n\nexport type Formatters = IntlFormatters & {\n getMessageFormat?: MessageFormatter;\n};\n","// Placed here for improved tree shaking. Somehow when this is placed in\nimport { IntlMessageFormat } from 'intl-messageformat';\nimport type {\n IntlCache,\n IntlFormatters,\n MessageFormatter,\n} from '../formatter/formatters.js';\nimport { memoFn } from '../formatter/formatters.js';\n\n// `formatters.tsx`, then it can't be shaken off from `next-intl`.\nexport function createMessageFormatter(\n cache: IntlCache,\n intlFormatters: IntlFormatters\n): MessageFormatter {\n const getMessageFormat = memoFn(\n (...args: ConstructorParameters<typeof IntlMessageFormat>) =>\n new IntlMessageFormat(args[0], args[1], args[2], {\n formatters: intlFormatters,\n ...args[3],\n }),\n cache.message\n );\n\n return getMessageFormat;\n}\n","import type { AbstractIntlMessages } from '../types/AbstractIntlMessages.js';\nimport { joinPath } from './joinPath.js';\n\nexport function resolvePath(\n locale: string,\n messages: AbstractIntlMessages | undefined,\n key: string,\n namespace?: string\n): AbstractIntlMessages {\n const fullKey = joinPath(namespace, key);\n\n if (!messages) {\n throw new Error(`No messages available at \\`${namespace}\\`.`);\n }\n\n let message: AbstractIntlMessages | string = messages;\n\n key.split('.').forEach((part) => {\n const next = (message as any)[part];\n\n if (part == null || next == null) {\n throw new Error(\n `Could not resolve \\`${fullKey}\\` in messages for locale \\`${locale}\\`.`\n );\n }\n\n message = next;\n });\n\n return message;\n}\n","import { defaultOnError } from '../defaults.js';\nimport { IntlError, IntlErrorCode } from '../IntlError.js';\nimport type { AbstractIntlMessages } from '../types/AbstractIntlMessages.js';\nimport { resolvePath } from './resolvePath.js';\n\nexport function getMessagesOrError<Messages extends AbstractIntlMessages>(\n locale: string,\n messages?: Messages,\n namespace?: string,\n onError: (error: IntlError) => void = defaultOnError\n) {\n try {\n if (!messages) {\n throw new Error(\n process.env.NODE_ENV !== 'production'\n ? `No messages were configured on the provider.`\n : undefined\n );\n }\n\n const retrievedMessages = namespace\n ? resolvePath(locale, messages, namespace)\n : messages;\n\n if (!retrievedMessages) {\n throw new Error(\n process.env.NODE_ENV !== 'production'\n ? `No messages for namespace \\`${namespace}\\` found.`\n : namespace\n );\n }\n\n return retrievedMessages;\n } catch (error) {\n const intlError = new IntlError(\n IntlErrorCode.MISSING_MESSAGE,\n (error as Error).message\n );\n onError(intlError);\n return intlError;\n }\n}\n","import type { PlainMessageCheck } from '../types/IntlConfig.js';\n\nexport function getPlainMessage(\n candidate: string,\n values?: unknown,\n plainMessageCheck?: PlainMessageCheck\n) {\n if (values) return undefined;\n\n const unescapedMessage = candidate.replace(/'([{}])/gi, '$1');\n\n // Use the provided check function or fall back to the default logic\n const checkFunction =\n plainMessageCheck || ((message: string) => !/<|{/.test(message));\n const isPlain = checkFunction(unescapedMessage);\n\n if (isPlain) {\n return unescapedMessage;\n }\n\n return undefined;\n}\n","import type { ReactNode } from 'react';\nimport { cloneElement, isValidElement } from 'react';\nimport type { RichTranslationValues } from '../types/TranslationValues.js';\n\nexport function prepareTranslationValues(values: RichTranslationValues) {\n if (Object.keys(values).length === 0) return undefined;\n\n // Workaround for https://github.com/formatjs/formatjs/issues/1467\n const transformedValues: RichTranslationValues = {};\n Object.keys(values).forEach((key) => {\n let index = 0;\n const value = values[key];\n\n let transformed;\n if (typeof value === 'function') {\n transformed = (chunks: ReactNode) => {\n const result = value(chunks);\n\n return isValidElement(result)\n ? cloneElement(result, { key: key + index++ })\n : result;\n };\n } else {\n transformed = value;\n }\n\n transformedValues[key] = transformed;\n });\n\n return transformedValues;\n}\n","import type { ReactElement, ReactNode } from 'react';\nimport { isValidElement } from 'react';\nimport type { Formats } from 'intl-messageformat';\nimport type { IntlMessageFormat } from 'intl-messageformat';\nimport { defaultGetMessageFallback } from './defaults.js';\nimport type { Formatters, IntlCache } from './formatter/formatters.js';\nimport { IntlError, IntlErrorCode } from './IntlError.js';\nimport type { AbstractIntlMessages } from './types/AbstractIntlMessages.js';\nimport type { InitializedIntlConfig } from './types/IntlConfig.js';\nimport type { MessageKeys } from './types/MessageKeys.js';\nimport type { NestedKeyOf } from './types/NestedKeyOf.js';\nimport type { NestedValueOf } from './types/NestedValueOf.js';\nimport type { RichTranslationValues } from './types/TranslationValues.js';\nimport { convertFormatsToIntlMessageFormat } from './utils/convertFormatsToIntlMessageFormat.js';\nimport { createMessageFormatter } from './utils/createMessageFormatter.js';\nimport { getMessagesOrError } from './utils/getMessagesOrError.js';\nimport { getPlainMessage } from './utils/getPlainMessage.js';\nimport { joinPath } from './utils/joinPath.js';\nimport { prepareTranslationValues } from './utils/prepareTranslationValues.js';\nimport { resolvePath } from './utils/resolvePath.js';\n\nexport type CreateBaseTranslatorProps<Messages> = InitializedIntlConfig & {\n cache: IntlCache;\n formatters: Formatters;\n defaultTranslationValues?: RichTranslationValues;\n namespace?: string;\n messagesOrError: Messages | IntlError;\n};\n\nexport function createBaseTranslator<\n Messages extends AbstractIntlMessages,\n NestedKey extends NestedKeyOf<Messages>,\n>(config: Omit<CreateBaseTranslatorProps<Messages>, 'messagesOrError'>) {\n const messagesOrError = getMessagesOrError(\n config.locale,\n config.messages,\n config.namespace,\n config.onError\n ) as Messages | IntlError;\n return createBaseTranslatorImpl<Messages, NestedKey>({\n ...config,\n messagesOrError,\n });\n}\n\nexport function createBaseTranslatorImpl<\n Messages extends AbstractIntlMessages,\n NestedKey extends NestedKeyOf<Messages>,\n>({\n cache,\n defaultTranslationValues,\n formats: globalFormats,\n formatters,\n getMessageFallback = defaultGetMessageFallback,\n locale,\n messagesOrError,\n namespace,\n onError,\n plainMessageCheck,\n timeZone,\n}: CreateBaseTranslatorProps<Messages>) {\n function getFallbackFromErrorAndNotify(\n key: string,\n code: IntlErrorCode,\n message?: string\n ) {\n const error = new IntlError(code, message);\n onError(error);\n return getMessageFallback({ error, key, namespace });\n }\n\n function translateBaseFn(\n /** Use a dot to indicate a level of nesting (e.g. `namespace.nestedLabel`). */\n key: string,\n /** Key value pairs for values to interpolate into the message. */\n values?: RichTranslationValues,\n /** Provide custom formats for numbers, dates and times. */\n formats?: Partial<Formats>\n ): string | ReactElement | ReactNode[] {\n if (messagesOrError instanceof IntlError) {\n // We have already warned about this during render\n return getMessageFallback({\n error: messagesOrError,\n key,\n namespace,\n });\n }\n\n const messages = messagesOrError;\n\n let message;\n try {\n message = resolvePath(locale, messages, key, namespace);\n } catch (error) {\n return getFallbackFromErrorAndNotify(\n key,\n IntlErrorCode.MISSING_MESSAGE,\n (error as Error).message\n );\n }\n\n if (typeof message === 'object') {\n let code, errorMessage;\n if (Array.isArray(message)) {\n code = IntlErrorCode.INVALID_MESSAGE;\n if (process.env.NODE_ENV !== 'production') {\n errorMessage = `Message at \\`${joinPath(\n namespace,\n key\n )}\\` resolved to an array, but only strings are supported.`;\n }\n } else {\n code = IntlErrorCode.INSUFFICIENT_PATH;\n if (process.env.NODE_ENV !== 'production') {\n errorMessage = `Message at \\`${joinPath(\n namespace,\n key\n )}\\` resolved to an object, but only strings are supported. Use a \\`.\\` to retrieve nested messages.`;\n }\n }\n\n return getFallbackFromErrorAndNotify(key, code, errorMessage);\n }\n\n let messageFormat: IntlMessageFormat;\n\n // Hot path that avoids creating an `IntlMessageFormat` instance\n const plainMessage = getPlainMessage(\n message as string,\n values,\n plainMessageCheck\n );\n if (plainMessage) return plainMessage;\n\n // Lazy init the message formatter for better tree\n // shaking in case message formatting is not used.\n if (!formatters.getMessageFormat) {\n formatters.getMessageFormat = createMessageFormatter(cache, formatters);\n }\n\n try {\n messageFormat = formatters.getMessageFormat(\n message,\n locale,\n convertFormatsToIntlMessageFormat(\n { ...globalFormats, ...formats },\n timeZone\n ),\n {\n formatters: {\n ...formatters,\n getDateTimeFormat(locales, options) {\n // Workaround for https://github.com/formatjs/formatjs/issues/4279\n return formatters.getDateTimeFormat(locales, {\n timeZone,\n ...options,\n });\n },\n },\n }\n );\n } catch (error) {\n const thrownError = error as Error;\n return getFallbackFromErrorAndNotify(\n key,\n IntlErrorCode.INVALID_MESSAGE,\n process.env.NODE_ENV !== 'production'\n ? thrownError.message +\n ('originalMessage' in thrownError\n ? ` (${thrownError.originalMessage})`\n : '')\n : thrownError.message\n );\n }\n\n try {\n const formattedMessage = messageFormat.format(\n // @ts-expect-error `intl-messageformat` expects a different format\n // for rich text elements since a recent minor update. This\n // needs to be evaluated in detail, possibly also in regards\n // to be able to format to parts.\n prepareTranslationValues({ ...defaultTranslationValues, ...values })\n );\n\n if (formattedMessage == null) {\n throw new Error(\n process.env.NODE_ENV !== 'production'\n ? `Unable to format \\`${key}\\` in ${\n namespace ? `namespace \\`${namespace}\\`` : 'messages'\n }`\n : undefined\n );\n }\n\n // Limit the function signature to return strings or React elements\n return isValidElement(formattedMessage) ||\n // Arrays of React elements\n Array.isArray(formattedMessage) ||\n typeof formattedMessage === 'string'\n ? formattedMessage\n : String(formattedMessage);\n } catch (error) {\n return getFallbackFromErrorAndNotify(\n key,\n IntlErrorCode.FORMATTING_ERROR,\n (error as Error).message\n );\n }\n }\n\n function translateFn<\n TargetKey extends MessageKeys<\n NestedValueOf<Messages, NestedKey>,\n NestedKeyOf<NestedValueOf<Messages, NestedKey>>\n >,\n >(\n /** Use a dot to indicate a level of nesting (e.g. `namespace.nestedLabel`). */\n key: TargetKey,\n /** Key value pairs for values to interpolate into the message. */\n values?: RichTranslationValues,\n /** Provide custom formats for numbers, dates and times. */\n formats?: Partial<Formats>\n ): string {\n const result = translateBaseFn(key, values, formats);\n\n if (typeof result !== 'string') {\n return getFallbackFromErrorAndNotify(\n key,\n IntlErrorCode.INVALID_MESSAGE,\n `The message \\`${key}\\` in ${\n namespace ? `namespace \\`${namespace}\\`` : 'messages'\n } didn't resolve to a string.`\n );\n }\n\n return result;\n }\n translateFn.rich = translateBaseFn;\n\n return translateFn;\n}\n","export function resolveNamespace(namespace: string, namespacePrefix: string) {\n return namespace === namespacePrefix\n ? undefined\n : namespace.slice((namespacePrefix + '.').length);\n}\n","import { createBaseTranslator } from './createBaseTranslator.js';\nimport type { Formatters, IntlCache } from './formatter/formatters.js';\nimport type { AbstractIntlMessages } from './types/AbstractIntlMessages.js';\nimport type { InitializedIntlConfig } from './types/IntlConfig.js';\nimport type { NestedKeyOf } from './types/NestedKeyOf.js';\nimport { resolveNamespace } from './utils/resolveNamespace.js';\n\nexport type CreateTranslatorImplProps<Messages> = Omit<\n InitializedIntlConfig,\n 'messages'\n> & {\n namespace: string;\n messages: Messages;\n formatters: Formatters;\n cache: IntlCache;\n};\n\nexport function createTranslatorImpl<\n Messages extends AbstractIntlMessages,\n NestedKey extends NestedKeyOf<Messages>,\n>(\n { messages, namespace, ...rest }: CreateTranslatorImplProps<Messages>,\n namespacePrefix: string\n) {\n // The `namespacePrefix` is part of the type system.\n // See the comment in the function invocation.\n messages = messages[namespacePrefix] as Messages;\n namespace = resolveNamespace(namespace, namespacePrefix) as NestedKey;\n const translator = createBaseTranslator<Messages, NestedKey>({\n ...rest,\n namespace,\n messages,\n });\n\n function base(...args: Parameters<typeof translator>) {\n return translator(...args);\n }\n base.rich = function (...args: Parameters<typeof translator>) {\n return translator.rich(...args);\n };\n return base;\n}\n","import type { ReactElement, ReactNode } from 'react';\nimport type { Formats } from 'intl-messageformat';\nimport { createTranslatorImpl } from './createTranslatorImpl.js';\nimport {\n defaultGetMessageFallback,\n defaultOnError,\n defaultPlainMessageCheck,\n} from './defaults.js';\nimport type { Formatters, IntlCache } from './formatter/formatters.js';\nimport { createCache, createIntlFormatters } from './formatter/formatters.js';\nimport type { AbstractIntlMessages } from './types/AbstractIntlMessages.js';\nimport type { IntlConfig } from './types/IntlConfig.js';\nimport type { MessageKeys } from './types/MessageKeys.js';\nimport type { NamespaceKeys } from './types/NamespaceKeys.js';\nimport type { NestedKeyOf } from './types/NestedKeyOf.js';\nimport type { NestedValueOf } from './types/NestedValueOf.js';\nimport type { RichTranslationValues } from './types/TranslationValues.js';\n\n/**\n * Translates messages from the given namespace by using the ICU syntax.\n * See https://formatjs.io/docs/core-concepts/icu-syntax.\n *\n * If no namespace is provided, all available messages are returned.\n * The namespace can also indicate nesting by using a dot\n * (e.g. `namespace.Component`).\n */\nexport function createTranslator<\n IntlMessages extends AbstractIntlMessages,\n NestedKey extends NamespaceKeys<IntlMessages, NestedKeyOf<IntlMessages>> =\n never,\n>({\n _cache = createCache(),\n _formatters = createIntlFormatters(_cache),\n messages,\n namespace,\n onError = defaultOnError,\n getMessageFallback = defaultGetMessageFallback,\n plainMessageCheck = defaultPlainMessageCheck,\n ...rest\n}: Omit<IntlConfig<IntlMessages>, 'defaultTranslationValues' | 'messages'> & {\n messages: IntlMessages;\n namespace?: NestedKey;\n /** @private */\n _formatters?: Formatters;\n /** @private */\n _cache?: IntlCache;\n}): // Explicitly defining the return type is necessary as TypeScript would get it wrong\n{\n // Default invocation\n <\n TargetKey extends MessageKeys<\n NestedValueOf<\n { '!': IntlMessages },\n [NestedKey] extends [never] ? '!' : `!.${NestedKey}`\n >,\n NestedKeyOf<\n NestedValueOf<\n { '!': IntlMessages },\n [NestedKey] extends [never] ? '!' : `!.${NestedKey}`\n >\n >\n >,\n >(\n key: TargetKey,\n values?: RichTranslationValues,\n formats?: Partial<Formats>\n ): string;\n // `rich`\n rich<\n TargetKey extends MessageKeys<\n NestedValueOf<\n { '!': IntlMessages },\n [NestedKey] extends [never] ? '!' : `!.${NestedKey}`\n >,\n NestedKeyOf<\n NestedValueOf<\n { '!': IntlMessages },\n [NestedKey] extends [never] ? '!' : `!.${NestedKey}`\n >\n >\n >,\n >(\n key: TargetKey,\n values?: RichTranslationValues,\n formats?: Partial<Formats>\n ): string | ReactElement | ReactNode[];\n} {\n // We have to wrap the actual function so the type inference for the optional\n // namespace works correctly. See https://stackoverflow.com/a/71529575/343045\n // The prefix (\"!\") is arbitrary.\n return createTranslatorImpl<\n { '!': IntlMessages },\n [NestedKey] extends [never] ? '!' : `!.${NestedKey}`\n >(\n {\n ...rest,\n cache: _cache,\n formatters: _formatters,\n onError,\n getMessageFallback,\n plainMessageCheck,\n messages: { '!': messages },\n namespace: namespace ? `!.${namespace}` : '!',\n },\n '!'\n );\n}\n","import type { ReactElement } from 'react';\nimport { defaultOnError } from '../defaults.js';\nimport { IntlError, IntlErrorCode } from '../IntlError.js';\nimport type { DateTimeFormatOptions } from '../types/DateTimeFormatOptions.js';\nimport type { Formats } from '../types/Formats.js';\nimport type { NumberFormatOptions } from '../types/NumberFormatOptions.js';\nimport type { RelativeTimeFormatOptions } from '../types/RelativeTimeFormatOptions.js';\nimport type { TimeZone } from '../types/TimeZone.js';\nimport type { Formatters, IntlCache } from './formatters.js';\nimport { createCache, createIntlFormatters } from './formatters.js';\n\nconst SECOND = 1;\nconst MINUTE = SECOND * 60;\nconst HOUR = MINUTE * 60;\nconst DAY = HOUR * 24;\nconst WEEK = DAY * 7;\nconst MONTH = DAY * (365 / 12); // Approximation\nconst QUARTER = MONTH * 3;\nconst YEAR = DAY * 365;\n\nconst UNIT_SECONDS: Record<Intl.RelativeTimeFormatUnit, number> = {\n second: SECOND,\n seconds: SECOND,\n minute: MINUTE,\n minutes: MINUTE,\n hour: HOUR,\n hours: HOUR,\n day: DAY,\n days: DAY,\n week: WEEK,\n weeks: WEEK,\n month: MONTH,\n months: MONTH,\n quarter: QUARTER,\n quarters: QUARTER,\n year: YEAR,\n years: YEAR,\n} as const;\n\nfunction resolveRelativeTimeUnit(seconds: number) {\n const absValue = Math.abs(seconds);\n\n if (absValue < MINUTE) {\n return 'second';\n } else if (absValue < HOUR) {\n return 'minute';\n } else if (absValue < DAY) {\n return 'hour';\n } else if (absValue < WEEK) {\n return 'day';\n } else if (absValue < MONTH) {\n return 'week';\n } else if (absValue < YEAR) {\n return 'month';\n }\n return 'year';\n}\n\nfunction calculateRelativeTimeValue(\n seconds: number,\n unit: Intl.RelativeTimeFormatUnit\n) {\n // We have to round the resulting values, as `Intl.RelativeTimeFormat`\n // will include fractions like '2.1 hours ago'.\n return Math.round(seconds / UNIT_SECONDS[unit]);\n}\n\ntype Props = {\n locale: string;\n timeZone?: TimeZone;\n onError?(error: IntlError): void;\n formats?: Partial<Formats>;\n now?: Date;\n /** @private */\n _formatters?: Formatters;\n /** @private */\n _cache?: IntlCache;\n};\n\nexport function createFormatter({\n _cache: cache = createCache(),\n _formatters: formatters = createIntlFormatters(cache),\n formats,\n locale,\n now: globalNow,\n onError = defaultOnError,\n timeZone: globalTimeZone,\n}: Props) {\n function applyTimeZone(options?: DateTimeFormatOptions) {\n if (!options?.timeZone) {\n if (globalTimeZone) {\n options = { ...options, timeZone: globalTimeZone };\n } else {\n onError(\n new IntlError(\n IntlErrorCode.ENVIRONMENT_FALLBACK,\n process.env.NODE_ENV !== 'production'\n ? `The \\`timeZone\\` parameter wasn't provided and there is no global default configured. Consider adding a global default to avoid markup mismatches caused by environment differences. Learn more: https://next-intl-docs.vercel.app/docs/configuration#time-zone`\n : undefined\n )\n );\n }\n }\n\n return options;\n }\n\n function resolveFormatOrOptions<Options>(\n typeFormats: Record<string, Options> | undefined,\n formatOrOptions?: string | Options\n ) {\n let options;\n if (typeof formatOrOptions === 'string') {\n const formatName = formatOrOptions;\n options = typeFormats?.[formatName];\n\n if (!options) {\n const error = new IntlError(\n IntlErrorCode.MISSING_FORMAT,\n process.env.NODE_ENV !== 'production'\n ? `Format \\`${formatName}\\` is not available. You can configure it on the provider or provide custom options.`\n : undefined\n );\n onError(error);\n throw error;\n }\n } else {\n options = formatOrOptions;\n }\n\n return options;\n }\n\n function getFormattedValue<Options, Output>(\n formatOrOptions: string | Options | undefined,\n typeFormats: Record<string, Options> | undefined,\n formatter: (options?: Options) => Output,\n getFallback: () => Output\n ) {\n let options;\n try {\n options = resolveFormatOrOptions(typeFormats, formatOrOptions);\n } catch {\n return getFallback();\n }\n\n try {\n return formatter(options);\n } catch (error) {\n onError(\n new IntlError(IntlErrorCode.FORMATTING_ERROR, (error as Error).message)\n );\n return getFallback();\n }\n }\n\n function dateTime(\n /** If a number is supplied, this is interpreted as a UTC timestamp. */\n value: Date | number,\n /** If a time zone is supplied, the `value` is converted to that time zone.\n * Otherwise the user time zone will be used. */\n formatOrOptions?: string | DateTimeFormatOptions\n ) {\n return getFormattedValue(\n formatOrOptions,\n formats?.dateTime,\n (options) => {\n options = applyTimeZone(options);\n return formatters.getDateTimeFormat(locale, options).format(value);\n },\n () => String(value)\n );\n }\n\n function dateTimeRange(\n /** If a number is supplied, this is interpreted as a UTC timestamp. */\n start: Date | number,\n /** If a number is supplied, this is interpreted as a UTC timestamp. */\n end: Date | number,\n /** If a time zone is supplied, the values are converted to that time zone.\n * Otherwise the user time zone will be used. */\n formatOrOptions?: string | DateTimeFormatOptions\n ) {\n return getFormattedValue(\n formatOrOptions,\n formats?.dateTime,\n (options) => {\n options = applyTimeZone(options);\n return formatters\n .getDateTimeFormat(locale, options)\n .formatRange(start, end);\n },\n () => [dateTime(start), dateTime(end)].join(' – ')\n );\n }\n\n function number(\n value: number | bigint,\n formatOrOptions?: string | NumberFormatOptions\n ) {\n return getFormattedValue(\n formatOrOptions,\n formats?.number,\n (options) => formatters.getNumberFormat(locale, options).format(value),\n () => String(value)\n );\n }\n\n function getGlobalNow() {\n if (globalNow) {\n return globalNow;\n } else {\n onError(\n new IntlError(\n IntlErrorCode.ENVIRONMENT_FALLBACK,\n process.env.NODE_ENV !== 'production'\n ? `The \\`now\\` parameter wasn't provided and there is no global default configured. Consider adding a global default to avoid markup mismatches caused by environment differences. Learn more: https://next-intl-docs.vercel.app/docs/configuration#now`\n : undefined\n )\n );\n return new Date();\n }\n }\n\n function relativeTime(\n /** The date time that needs to be formatted. */\n date: number | Date,\n /** The reference point in time to which `date` will be formatted in relation to. */\n nowOrOptions?: RelativeTimeFormatOptions['now'] | RelativeTimeFormatOptions\n ) {\n try {\n let nowDate: Date | undefined,\n unit: Intl.RelativeTimeFormatUnit | undefined;\n const opts: Intl.RelativeTimeFormatOptions = {};\n if (nowOrOptions instanceof Date || typeof nowOrOptions === 'number') {\n nowDate = new Date(nowOrOptions);\n } else if (nowOrOptions) {\n if (nowOrOptions.now != null) {\n nowDate = new Date(nowOrOptions.now);\n } else {\n nowDate = getGlobalNow();\n }\n unit = nowOrOptions.unit;\n opts.style = nowOrOptions.style;\n // @ts-expect-error -- Types are slightly outdated\n opts.numberingSystem = nowOrOptions.numberingSystem;\n }\n\n if (