From a7cbd9bb1d42aacb17e7a5500b7054c8bc76799b Mon Sep 17 00:00:00 2001 From: Jan Amann Date: Tue, 24 Sep 2024 11:56:41 +0200 Subject: [PATCH] fix: Make all keys of `Formats` type optional for easier usage (#1367) ```diff import {Formats} from 'next-intl'; - Partial + Formats ``` --- .../next-intl/src/react-server/getTranslator.tsx | 6 +++--- .../src/server/react-server/getTranslations.tsx | 12 ++++++------ packages/use-intl/src/core/Formats.tsx | 6 +++--- packages/use-intl/src/core/IntlConfig.tsx | 2 +- .../src/core/convertFormatsToIntlMessageFormat.tsx | 2 +- packages/use-intl/src/core/createBaseTranslator.tsx | 4 ++-- packages/use-intl/src/core/createFormatter.tsx | 2 +- packages/use-intl/src/core/createTranslator.tsx | 6 +++--- packages/use-intl/src/react/useTranslations.test.tsx | 12 ++++++------ packages/use-intl/src/react/useTranslations.tsx | 6 +++--- 10 files changed, 29 insertions(+), 29 deletions(-) diff --git a/packages/next-intl/src/react-server/getTranslator.tsx b/packages/next-intl/src/react-server/getTranslator.tsx index cc0a880b6..2a6f024c7 100644 --- a/packages/next-intl/src/react-server/getTranslator.tsx +++ b/packages/next-intl/src/react-server/getTranslator.tsx @@ -38,7 +38,7 @@ function getTranslatorImpl< >( key: TargetKey, values?: TranslationValues, - formats?: Partial + formats?: Formats ): string; // `rich` @@ -58,7 +58,7 @@ function getTranslatorImpl< >( key: TargetKey, values?: RichTranslationValues, - formats?: Partial + formats?: Formats ): string | ReactElement | ReactNodeArray; // `markup` @@ -78,7 +78,7 @@ function getTranslatorImpl< >( key: TargetKey, values?: MarkupTranslationValues, - formats?: Partial + formats?: Formats ): string; // `raw` diff --git a/packages/next-intl/src/server/react-server/getTranslations.tsx b/packages/next-intl/src/server/react-server/getTranslations.tsx index e65eb0ab6..1e8fa2ded 100644 --- a/packages/next-intl/src/server/react-server/getTranslations.tsx +++ b/packages/next-intl/src/server/react-server/getTranslations.tsx @@ -43,7 +43,7 @@ Promise<{ >( key: [TargetKey] extends [never] ? string : TargetKey, values?: TranslationValues, - formats?: Partial + formats?: Formats ): string; // `rich` @@ -63,7 +63,7 @@ Promise<{ >( key: [TargetKey] extends [never] ? string : TargetKey, values?: RichTranslationValues, - formats?: Partial + formats?: Formats ): string | ReactElement | ReactNodeArray; // `markup` @@ -83,7 +83,7 @@ Promise<{ >( key: [TargetKey] extends [never] ? string : TargetKey, values?: MarkupTranslationValues, - formats?: Partial + formats?: Formats ): string; // `raw` @@ -132,7 +132,7 @@ Promise<{ >( key: TargetKey, values?: TranslationValues, - formats?: Partial + formats?: Formats ): string; // `rich` @@ -152,7 +152,7 @@ Promise<{ >( key: TargetKey, values?: RichTranslationValues, - formats?: Partial + formats?: Formats ): string | ReactElement | ReactNodeArray; // `markup` @@ -172,7 +172,7 @@ Promise<{ >( key: TargetKey, values?: MarkupTranslationValues, - formats?: Partial + formats?: Formats ): string; // `raw` diff --git a/packages/use-intl/src/core/Formats.tsx b/packages/use-intl/src/core/Formats.tsx index 69d0fecef..108da3103 100644 --- a/packages/use-intl/src/core/Formats.tsx +++ b/packages/use-intl/src/core/Formats.tsx @@ -2,9 +2,9 @@ import DateTimeFormatOptions from './DateTimeFormatOptions'; import NumberFormatOptions from './NumberFormatOptions'; type Formats = { - number: Record; - dateTime: Record; - list: Record; + number?: Record; + dateTime?: Record; + list?: Record; }; export default Formats; diff --git a/packages/use-intl/src/core/IntlConfig.tsx b/packages/use-intl/src/core/IntlConfig.tsx index fedaf7f78..7b4ce5db1 100644 --- a/packages/use-intl/src/core/IntlConfig.tsx +++ b/packages/use-intl/src/core/IntlConfig.tsx @@ -13,7 +13,7 @@ type IntlConfig = { locale: string; /** Global formats can be provided to achieve consistent * formatting across components. */ - formats?: Partial; + formats?: Formats; /** A time zone as defined in [the tz database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) which will be applied when formatting dates and times. If this is absent, the user time zone will be used. You can override this by supplying an explicit time zone to `formatDateTime`. */ timeZone?: TimeZone; /** This callback will be invoked when an error is encountered during diff --git a/packages/use-intl/src/core/convertFormatsToIntlMessageFormat.tsx b/packages/use-intl/src/core/convertFormatsToIntlMessageFormat.tsx index 868a7ae3a..d34c1734e 100644 --- a/packages/use-intl/src/core/convertFormatsToIntlMessageFormat.tsx +++ b/packages/use-intl/src/core/convertFormatsToIntlMessageFormat.tsx @@ -32,7 +32,7 @@ function setTimeZoneInFormats( * to convert the format before `intl-messageformat` can be used. */ export default function convertFormatsToIntlMessageFormat( - formats: Partial, + formats: Formats, timeZone?: TimeZone ): Partial { const formatsWithTimeZone = timeZone diff --git a/packages/use-intl/src/core/createBaseTranslator.tsx b/packages/use-intl/src/core/createBaseTranslator.tsx index 4e46daca6..dd66b1179 100644 --- a/packages/use-intl/src/core/createBaseTranslator.tsx +++ b/packages/use-intl/src/core/createBaseTranslator.tsx @@ -221,7 +221,7 @@ function createBaseTranslatorImpl< /** Key value pairs for values to interpolate into the message. */ values?: RichTranslationValues, /** Provide custom formats for numbers, dates and times. */ - formats?: Partial + formats?: Formats ): string | ReactElement | ReactNodeArray { if (messagesOrError instanceof IntlError) { // We have already warned about this during render @@ -360,7 +360,7 @@ function createBaseTranslatorImpl< /** Key value pairs for values to interpolate into the message. */ values?: TranslationValues, /** Provide custom formats for numbers, dates and times. */ - formats?: Partial + formats?: Formats ): string { const result = translateBaseFn(key, values, formats); diff --git a/packages/use-intl/src/core/createFormatter.tsx b/packages/use-intl/src/core/createFormatter.tsx index 95b7e18f0..da80b6588 100644 --- a/packages/use-intl/src/core/createFormatter.tsx +++ b/packages/use-intl/src/core/createFormatter.tsx @@ -73,7 +73,7 @@ type Props = { locale: string; timeZone?: TimeZone; onError?(error: IntlError): void; - formats?: Partial; + formats?: Formats; now?: Date; /** @private */ _formatters?: Formatters; diff --git a/packages/use-intl/src/core/createTranslator.tsx b/packages/use-intl/src/core/createTranslator.tsx index ad95fb832..5f80c4f55 100644 --- a/packages/use-intl/src/core/createTranslator.tsx +++ b/packages/use-intl/src/core/createTranslator.tsx @@ -65,7 +65,7 @@ export default function createTranslator< >( key: TargetKey, values?: TranslationValues, - formats?: Partial + formats?: Formats ): string; // `rich` @@ -85,7 +85,7 @@ export default function createTranslator< >( key: TargetKey, values?: RichTranslationValues, - formats?: Partial + formats?: Formats ): string | ReactElement | ReactNodeArray; // `markup` @@ -105,7 +105,7 @@ export default function createTranslator< >( key: TargetKey, values?: MarkupTranslationValues, - formats?: Partial + formats?: Formats ): string; // `raw` diff --git a/packages/use-intl/src/react/useTranslations.test.tsx b/packages/use-intl/src/react/useTranslations.test.tsx index 79d0e8c03..7d9a92168 100644 --- a/packages/use-intl/src/react/useTranslations.test.tsx +++ b/packages/use-intl/src/react/useTranslations.test.tsx @@ -44,7 +44,7 @@ vi.mock('intl-messageformat', async (importOriginal) => { function renderMessage( message: string, values?: TranslationValues, - formats?: Partial, + formats?: Formats, providerProps?: Partial> ) { function Component() { @@ -404,7 +404,7 @@ describe('t.rich', () => { function renderRichTextMessage( message: string, values?: RichTranslationValues, - formats?: Partial + formats?: Formats ) { function Component() { const t = useTranslations(); @@ -884,8 +884,8 @@ describe('error handling', () => { describe('global formats', () => { function renderDate( message: string, - globalFormats?: Partial, - overrideFormats?: Partial + globalFormats?: Formats, + overrideFormats?: Formats ) { function Component() { const t = useTranslations(); @@ -952,7 +952,7 @@ describe('default translation values', () => { function renderRichTextMessageWithDefault( message: string, values?: RichTranslationValues, - formats?: Partial + formats?: Formats ) { function Component() { const t = useTranslations(); @@ -977,7 +977,7 @@ describe('default translation values', () => { function renderMessageWithDefault( message: string, values?: TranslationValues, - formats?: Partial + formats?: Formats ) { function Component() { const t = useTranslations(); diff --git a/packages/use-intl/src/react/useTranslations.tsx b/packages/use-intl/src/react/useTranslations.tsx index 729bfacf6..03b37287a 100644 --- a/packages/use-intl/src/react/useTranslations.tsx +++ b/packages/use-intl/src/react/useTranslations.tsx @@ -45,7 +45,7 @@ export default function useTranslations< >( key: TargetKey, values?: TranslationValues, - formats?: Partial + formats?: Formats ): string; // `rich` @@ -65,7 +65,7 @@ export default function useTranslations< >( key: TargetKey, values?: RichTranslationValues, - formats?: Partial + formats?: Formats ): string | ReactElement | ReactNodeArray; // `markup` @@ -85,7 +85,7 @@ export default function useTranslations< >( key: TargetKey, values?: MarkupTranslationValues, - formats?: Partial + formats?: Formats ): string; // `raw`