From 967f903594d143575d0530f93740bfc9e8816320 Mon Sep 17 00:00:00 2001 From: Jan Amann Date: Tue, 14 Nov 2023 14:56:08 +0100 Subject: [PATCH] Remove deprecations --- .../next-intl/src/server/getFormatter.tsx | 4 +- packages/next-intl/src/server/getMessages.tsx | 4 +- packages/next-intl/src/server/getNow.tsx | 4 +- packages/next-intl/src/server/getTimeZone.tsx | 4 +- .../next-intl/src/server/getTranslator.tsx | 124 ------------------ packages/next-intl/src/server/index.tsx | 3 - .../next-intl/src/server/resolveLocaleArg.tsx | 33 +---- 7 files changed, 15 insertions(+), 161 deletions(-) delete mode 100644 packages/next-intl/src/server/getTranslator.tsx diff --git a/packages/next-intl/src/server/getFormatter.tsx b/packages/next-intl/src/server/getFormatter.tsx index 8d48e3d39..ed36f11a6 100644 --- a/packages/next-intl/src/server/getFormatter.tsx +++ b/packages/next-intl/src/server/getFormatter.tsx @@ -14,7 +14,7 @@ const getFormatterImpl = cache(async (locale: string) => { * The formatter automatically receives the request config, but * you can override it by passing in additional options. */ -export default async function getFormatter(opts?: {locale?: string} | string) { - const locale = await resolveLocaleArg('getFormatter', opts); +export default async function getFormatter(opts?: {locale?: string}) { + const locale = await resolveLocaleArg(opts); return getFormatterImpl(locale); } diff --git a/packages/next-intl/src/server/getMessages.tsx b/packages/next-intl/src/server/getMessages.tsx index 4be0b86c8..0ccdf556d 100644 --- a/packages/next-intl/src/server/getMessages.tsx +++ b/packages/next-intl/src/server/getMessages.tsx @@ -14,7 +14,7 @@ const getMessagesImpl = cache(async (locale: string) => { return config.messages; }); -export default async function getMessages(opts?: {locale?: string} | string) { - const locale = await resolveLocaleArg('getMessages', opts); +export default async function getMessages(opts?: {locale?: string}) { + const locale = await resolveLocaleArg(opts); return getMessagesImpl(locale); } diff --git a/packages/next-intl/src/server/getNow.tsx b/packages/next-intl/src/server/getNow.tsx index fd06e7387..868420e62 100644 --- a/packages/next-intl/src/server/getNow.tsx +++ b/packages/next-intl/src/server/getNow.tsx @@ -7,7 +7,7 @@ const getNowImpl = cache(async (locale: string) => { return config.now; }); -export default async function getNow(opts?: {locale?: string} | string) { - const locale = await resolveLocaleArg('getNow', opts); +export default async function getNow(opts?: {locale?: string}) { + const locale = await resolveLocaleArg(opts); return getNowImpl(locale); } diff --git a/packages/next-intl/src/server/getTimeZone.tsx b/packages/next-intl/src/server/getTimeZone.tsx index 5f4de5b0e..862a5e2cf 100644 --- a/packages/next-intl/src/server/getTimeZone.tsx +++ b/packages/next-intl/src/server/getTimeZone.tsx @@ -7,7 +7,7 @@ const getTimeZoneImpl = cache(async (locale: string) => { return config.timeZone; }); -export default async function getTimeZone(opts?: {locale?: string} | string) { - const locale = await resolveLocaleArg('getTimeZone', opts); +export default async function getTimeZone(opts?: {locale?: string}) { + const locale = await resolveLocaleArg(opts); return getTimeZoneImpl(locale); } diff --git a/packages/next-intl/src/server/getTranslator.tsx b/packages/next-intl/src/server/getTranslator.tsx deleted file mode 100644 index 5d5800487..000000000 --- a/packages/next-intl/src/server/getTranslator.tsx +++ /dev/null @@ -1,124 +0,0 @@ -import {ReactElement, ReactNodeArray, cache} from 'react'; -import { - Formats, - TranslationValues, - MessageKeys, - NamespaceKeys, - NestedKeyOf, - NestedValueOf, - RichTranslationValues, - MarkupTranslationValues -} from 'use-intl/core'; -import getTranslations from './getTranslations'; - -// TODO: Remove -const getDeprecation = cache(() => ({hasWarned: false})); - -/** @deprecated Deprecated in favor of `getTranslations`. See https://github.com/amannn/next-intl/pull/600 */ -export default async function getTranslator< - NestedKey extends NamespaceKeys< - IntlMessages, - NestedKeyOf - > = never ->( - locale: string, - namespace?: NestedKey -): // Explicitly defining the return type is necessary as TypeScript would get it wrong -Promise<{ - // Default invocation - < - TargetKey extends MessageKeys< - NestedValueOf< - {'!': IntlMessages}, - [NestedKey] extends [never] ? '!' : `!.${NestedKey}` - >, - NestedKeyOf< - NestedValueOf< - {'!': IntlMessages}, - [NestedKey] extends [never] ? '!' : `!.${NestedKey}` - > - > - > - >( - key: TargetKey, - values?: TranslationValues, - formats?: Partial - ): string; - - // `rich` - rich< - TargetKey extends MessageKeys< - NestedValueOf< - {'!': IntlMessages}, - [NestedKey] extends [never] ? '!' : `!.${NestedKey}` - >, - NestedKeyOf< - NestedValueOf< - {'!': IntlMessages}, - [NestedKey] extends [never] ? '!' : `!.${NestedKey}` - > - > - > - >( - key: TargetKey, - values?: RichTranslationValues, - formats?: Partial - ): string | ReactElement | ReactNodeArray; - - // `markup` - markup< - TargetKey extends MessageKeys< - NestedValueOf< - {'!': IntlMessages}, - [NestedKey] extends [never] ? '!' : `!.${NestedKey}` - >, - NestedKeyOf< - NestedValueOf< - {'!': IntlMessages}, - [NestedKey] extends [never] ? '!' : `!.${NestedKey}` - > - > - > - >( - key: TargetKey, - values?: MarkupTranslationValues, - formats?: Partial - ): string; - - // `raw` - raw< - TargetKey extends MessageKeys< - NestedValueOf< - {'!': IntlMessages}, - [NestedKey] extends [never] ? '!' : `!.${NestedKey}` - >, - NestedKeyOf< - NestedValueOf< - {'!': IntlMessages}, - [NestedKey] extends [never] ? '!' : `!.${NestedKey}` - > - > - > - >( - key: TargetKey - ): any; -}> { - if (!getDeprecation().hasWarned) { - console.error( - `\nDEPRECATION WARNING: \`getTranslator\` has been deprecated in favor of \`getTranslations\`: - -import {getTranslations} from 'next-intl/server'; - -// With implicit request locale -const t = await getTranslator('${namespace}'); - -// With explicit locale -const t = await getTranslator({locale: '${locale}', namespace: '${namespace}'}); - -See https://github.com/amannn/next-intl/pull/600\n` - ); - getDeprecation().hasWarned = true; - } - - return getTranslations({locale, namespace}); -} diff --git a/packages/next-intl/src/server/index.tsx b/packages/next-intl/src/server/index.tsx index be2f88348..3d30e3968 100644 --- a/packages/next-intl/src/server/index.tsx +++ b/packages/next-intl/src/server/index.tsx @@ -12,6 +12,3 @@ export {default as getMessages} from './getMessages'; export {default as getLocale} from './getLocale'; export {setRequestLocale as unstable_setRequestLocale} from './RequestLocale'; - -// TODO: Remove -export {default as getTranslator} from './getTranslator'; diff --git a/packages/next-intl/src/server/resolveLocaleArg.tsx b/packages/next-intl/src/server/resolveLocaleArg.tsx index 2634000a9..d4828e69f 100644 --- a/packages/next-intl/src/server/resolveLocaleArg.tsx +++ b/packages/next-intl/src/server/resolveLocaleArg.tsx @@ -1,30 +1,11 @@ -import {cache} from 'react'; import getLocale from './getLocale'; -// TODO: Remove - -const deprecate = cache((fnName: string, locale: string) => { - console.error( - `\nDEPRECATION WARNING: Passing a locale as a string to \`${fnName}\` has been deprecated in favor of passing an object with a \`locale\` property instead: - -${fnName}({locale: '${locale}'}); - -See https://github.com/amannn/next-intl/pull/600\n` - ); -}); - -export default function resolveLocaleArg( - fnName: string, - optsOrDeprecatedLocale?: {locale?: string} | string -) { - if (typeof optsOrDeprecatedLocale === 'string') { - deprecate(fnName, optsOrDeprecatedLocale); - return optsOrDeprecatedLocale; +export default function resolveLocaleArg(opts?: { + locale?: string; +}): Promise { + if (opts?.locale) { + return Promise.resolve(opts.locale); + } else { + return getLocale(); } - - if (optsOrDeprecatedLocale?.locale) { - return optsOrDeprecatedLocale.locale; - } - - return getLocale(); }