From 6516a2e16e3cc2e341481da01260884c49619546 Mon Sep 17 00:00:00 2001 From: lionel-rowe Date: Thu, 2 Mar 2023 08:25:41 +0800 Subject: [PATCH] Use typesVersions to check existence of Intl.LocalesArgument type --- index-lt-4.7.4.d.ts | 17 ++++++++++++++++ index.d.ts | 47 +++++++++++---------------------------------- package.json | 7 +++++++ 3 files changed, 35 insertions(+), 36 deletions(-) create mode 100644 index-lt-4.7.4.d.ts diff --git a/index-lt-4.7.4.d.ts b/index-lt-4.7.4.d.ts new file mode 100644 index 00000000..d6f83c76 --- /dev/null +++ b/index-lt-4.7.4.d.ts @@ -0,0 +1,17 @@ +export * from './index'; + +declare global { + namespace Intl { + /** + * The locale or locales to use + * + * See [MDN - Intl - locales + * argument](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument) + */ + type LocalesArgument = + | UnicodeBCP47LocaleIdentifier + | globalThis.Intl.Locale + | readonly (UnicodeBCP47LocaleIdentifier | globalThis.Intl.Locale)[] + | undefined; + } +} diff --git a/index.d.ts b/index.d.ts index bba6de6a..2527966f 100644 --- a/index.d.ts +++ b/index.d.ts @@ -548,7 +548,7 @@ export namespace Temporal { subtract(other: Temporal.Duration | DurationLike | string, options?: DurationArithmeticOptions): Temporal.Duration; round(roundTo: DurationRoundTo): Temporal.Duration; total(totalOf: DurationTotalOf): number; - toLocaleString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; + toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; toJSON(): string; toString(options?: ToStringPrecisionOptions): string; valueOf(): never; @@ -601,7 +601,7 @@ export namespace Temporal { ): Temporal.Instant; toZonedDateTime(calendarAndTimeZone: { timeZone: TimeZoneLike; calendar: CalendarLike }): Temporal.ZonedDateTime; toZonedDateTimeISO(tzLike: TimeZoneLike): Temporal.ZonedDateTime; - toLocaleString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; + toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; toJSON(): string; toString(options?: InstantToStringOptions): string; valueOf(): never; @@ -836,7 +836,7 @@ export namespace Temporal { toPlainYearMonth(): Temporal.PlainYearMonth; toPlainMonthDay(): Temporal.PlainMonthDay; getISOFields(): PlainDateISOFields; - toLocaleString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; + toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; toJSON(): string; toString(options?: ShowCalendarOption): string; valueOf(): never; @@ -955,7 +955,7 @@ export namespace Temporal { toPlainMonthDay(): Temporal.PlainMonthDay; toPlainTime(): Temporal.PlainTime; getISOFields(): PlainDateTimeISOFields; - toLocaleString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; + toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; toJSON(): string; toString(options?: CalendarTypeToStringOptions): string; valueOf(): never; @@ -992,7 +992,7 @@ export namespace Temporal { with(monthDayLike: PlainMonthDayLike, options?: AssignmentOptions): Temporal.PlainMonthDay; toPlainDate(year: { year: number }): Temporal.PlainDate; getISOFields(): PlainDateISOFields; - toLocaleString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; + toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; toJSON(): string; toString(options?: ShowCalendarOption): string; valueOf(): never; @@ -1085,7 +1085,7 @@ export namespace Temporal { plainDate: Temporal.PlainDate | PlainDateLike | string; }): Temporal.ZonedDateTime; getISOFields(): PlainTimeISOFields; - toLocaleString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; + toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; toJSON(): string; toString(options?: ToStringPrecisionOptions): string; valueOf(): never; @@ -1199,7 +1199,7 @@ export namespace Temporal { ): Temporal.Duration; toPlainDate(day: { day: number }): Temporal.PlainDate; getISOFields(): PlainDateISOFields; - toLocaleString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; + toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; toJSON(): string; toString(options?: ShowCalendarOption): string; valueOf(): never; @@ -1312,7 +1312,7 @@ export namespace Temporal { toPlainMonthDay(): Temporal.PlainMonthDay; toPlainTime(): Temporal.PlainTime; getISOFields(): ZonedDateTimeISOFields; - toLocaleString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; + toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string; toJSON(): string; toString(options?: ZonedDateTimeToStringOptions): string; valueOf(): never; @@ -1537,41 +1537,16 @@ declare namespace Intl { * Creates `Intl.DateTimeFormat` objects that enable language-sensitive * date and time formatting. */ - new (locales?: Intl.LocalesArgument, options?: DateTimeFormatOptions): DateTimeFormat; - (locales?: Intl.LocalesArgument, options?: DateTimeFormatOptions): DateTimeFormat; + new (locales?: globalThis.Intl.LocalesArgument, options?: DateTimeFormatOptions): DateTimeFormat; + (locales?: globalThis.Intl.LocalesArgument, options?: DateTimeFormatOptions): DateTimeFormat; /** * Get an array containing those of the provided locales that are supported * in date and time formatting without having to fall back to the runtime's * default locale. */ - supportedLocalesOf(locales: Intl.LocalesArgument, options?: DateTimeFormatOptions): string[]; + supportedLocalesOf(locales: globalThis.Intl.LocalesArgument, options?: DateTimeFormatOptions): string[]; }; - - // TODO: remove UnicodeBCP47LocaleIdentifier and LocalesArgument once TS lib declarations for these in widespread use - - /** - * A string that is a valid [Unicode BCP 47 Locale - * Identifier](https://unicode.org/reports/tr35/#Unicode_locale_identifier). - * - * For example: "fa", "es-MX", "zh-Hant-TW". - * - * See [MDN - Intl - locales - * argument](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument). - */ - type UnicodeBCP47LocaleIdentifier = string; - - /** - * The locale or locales to use - * - * See [MDN - Intl - locales - * argument](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument). - */ - type LocalesArgument = - | UnicodeBCP47LocaleIdentifier - | globalThis.Intl.Locale - | readonly (UnicodeBCP47LocaleIdentifier | globalThis.Intl.Locale)[] - | undefined; } export { Intl as Intl }; diff --git a/package.json b/package.json index fb8f6284..0cca7bb9 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,13 @@ ] }, "types": "./index.d.ts", + "typesVersions": { + "<4.7.4": { + "index.d.ts": [ + "index-lt-4.7.4.d.ts" + ] + } + }, "scripts": { "test": "npm run build && node --no-warnings --experimental-modules --experimental-specifier-resolution=node --icu-data-dir node_modules/full-icu --loader ./test/resolve.source.mjs ./test/all.mjs", "test262": "TEST262=1 npm run build && node runtest262.mjs \"$@\"",