Skip to content

Commit

Permalink
Allow Locale objects in locale list params
Browse files Browse the repository at this point in the history
  • Loading branch information
lionel-rowe committed Feb 24, 2023
1 parent c0f7349 commit 0214e5e
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 13 deletions.
22 changes: 11 additions & 11 deletions index.d.ts
Expand Up @@ -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?: string | string[], options?: Intl.DateTimeFormatOptions): string;
toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string;
toJSON(): string;
toString(options?: ToStringPrecisionOptions): string;
valueOf(): never;
Expand Down Expand Up @@ -601,7 +601,7 @@ export namespace Temporal {
): Temporal.Instant;
toZonedDateTime(calendarAndTimeZone: { timeZone: TimeZoneLike; calendar: CalendarLike }): Temporal.ZonedDateTime;
toZonedDateTimeISO(tzLike: TimeZoneLike): Temporal.ZonedDateTime;
toLocaleString(locales?: string | string[], options?: Intl.DateTimeFormatOptions): string;
toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string;
toJSON(): string;
toString(options?: InstantToStringOptions): string;
valueOf(): never;
Expand Down Expand Up @@ -836,7 +836,7 @@ export namespace Temporal {
toPlainYearMonth(): Temporal.PlainYearMonth;
toPlainMonthDay(): Temporal.PlainMonthDay;
getISOFields(): PlainDateISOFields;
toLocaleString(locales?: string | string[], options?: Intl.DateTimeFormatOptions): string;
toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string;
toJSON(): string;
toString(options?: ShowCalendarOption): string;
valueOf(): never;
Expand Down Expand Up @@ -955,7 +955,7 @@ export namespace Temporal {
toPlainMonthDay(): Temporal.PlainMonthDay;
toPlainTime(): Temporal.PlainTime;
getISOFields(): PlainDateTimeISOFields;
toLocaleString(locales?: string | string[], options?: Intl.DateTimeFormatOptions): string;
toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string;
toJSON(): string;
toString(options?: CalendarTypeToStringOptions): string;
valueOf(): never;
Expand Down Expand Up @@ -992,7 +992,7 @@ export namespace Temporal {
with(monthDayLike: PlainMonthDayLike, options?: AssignmentOptions): Temporal.PlainMonthDay;
toPlainDate(year: { year: number }): Temporal.PlainDate;
getISOFields(): PlainDateISOFields;
toLocaleString(locales?: string | string[], options?: Intl.DateTimeFormatOptions): string;
toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string;
toJSON(): string;
toString(options?: ShowCalendarOption): string;
valueOf(): never;
Expand Down Expand Up @@ -1085,7 +1085,7 @@ export namespace Temporal {
plainDate: Temporal.PlainDate | PlainDateLike | string;
}): Temporal.ZonedDateTime;
getISOFields(): PlainTimeISOFields;
toLocaleString(locales?: string | string[], options?: Intl.DateTimeFormatOptions): string;
toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string;
toJSON(): string;
toString(options?: ToStringPrecisionOptions): string;
valueOf(): never;
Expand Down Expand Up @@ -1199,7 +1199,7 @@ export namespace Temporal {
): Temporal.Duration;
toPlainDate(day: { day: number }): Temporal.PlainDate;
getISOFields(): PlainDateISOFields;
toLocaleString(locales?: string | string[], options?: Intl.DateTimeFormatOptions): string;
toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string;
toJSON(): string;
toString(options?: ShowCalendarOption): string;
valueOf(): never;
Expand Down Expand Up @@ -1312,7 +1312,7 @@ export namespace Temporal {
toPlainMonthDay(): Temporal.PlainMonthDay;
toPlainTime(): Temporal.PlainTime;
getISOFields(): ZonedDateTimeISOFields;
toLocaleString(locales?: string | string[], options?: Intl.DateTimeFormatOptions): string;
toLocaleString(locales?: globalThis.Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string;
toJSON(): string;
toString(options?: ZonedDateTimeToStringOptions): string;
valueOf(): never;
Expand Down Expand Up @@ -1537,15 +1537,15 @@ declare namespace Intl {
* Creates `Intl.DateTimeFormat` objects that enable language-sensitive
* date and time formatting.
*/
new (locales?: string | string[], options?: DateTimeFormatOptions): DateTimeFormat;
(locales?: string | string[], 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: string | string[], options?: DateTimeFormatOptions): string[];
supportedLocalesOf(locales: globalThis.Intl.LocalesArgument, options?: DateTimeFormatOptions): string[];
};
}

Expand Down
10 changes: 8 additions & 2 deletions lib/intl.ts
Expand Up @@ -118,7 +118,10 @@ function DateTimeFormatImpl(
const hasOptions = typeof optionsParam !== 'undefined';
const options = hasOptions ? ObjectAssign({}, optionsParam) : {};
// TODO: remove type assertion after Temporal types land in TS lib types
const original = new IntlDateTimeFormat(locale, options as globalThis.Intl.DateTimeFormatOptions);
const original = new IntlDateTimeFormat(
locale as ConstructorParameters<typeof IntlDateTimeFormat>[0],
options as globalThis.Intl.DateTimeFormatOptions
);
const ro = original.resolvedOptions();

// DateTimeFormat instances are very expensive to create. Therefore, they will
Expand Down Expand Up @@ -169,7 +172,10 @@ DateTimeFormatImpl.supportedLocalesOf = function (
locales: Params['supportedLocalesOf'][0],
options: Params['supportedLocalesOf'][1]
) {
return IntlDateTimeFormat.supportedLocalesOf(locales, options as globalThis.Intl.DateTimeFormatOptions);
return IntlDateTimeFormat.supportedLocalesOf(
locales as Parameters<typeof IntlDateTimeFormat['supportedLocalesOf']>[0],
options as globalThis.Intl.DateTimeFormatOptions
);
};

const propertyDescriptors: Partial<Record<keyof Intl.DateTimeFormat, PropertyDescriptor>> = {
Expand Down

0 comments on commit 0214e5e

Please sign in to comment.