UNPKG

date-vir

Version:

Easy and explicit dates and times.

44 lines (43 loc) 2.59 kB
import { type FullDatePart } from '../full-date/full-date-parts.js'; import { type DatePart, type FullDate, type TimePart } from '../full-date/full-date-shape.js'; import { type Timezone } from '../timezone/timezones.js'; /** * An object containing date and/or time parts or neither. Used for {@link combineDateParts} * * @category Internal */ export type MaybeDateParts<SpecificTimezone extends Timezone> = Partial<{ [FullDatePart.Date]: DatePart<SpecificTimezone> | undefined | Partial<FullDate<SpecificTimezone>>; [FullDatePart.Time]: TimePart<SpecificTimezone> | undefined | Partial<FullDate<SpecificTimezone>>; }>; /** * A full date, time or date parts of a date, or undefined. Used for {@link combineDateParts}. * * @category Internal */ export type MaybeDatePart<SpecificTimezone extends Timezone> = FullDate<SpecificTimezone> | Partial<FullDate<SpecificTimezone>> | DatePart<SpecificTimezone> | TimePart<SpecificTimezone> | undefined; export declare function combineDateParts<const SpecificTimezone extends Timezone>(maybeDateParts: { [FullDatePart.Date]: DatePart<SpecificTimezone>; [FullDatePart.Time]: TimePart<SpecificTimezone>; }): FullDate<SpecificTimezone>; export declare function combineDateParts(maybeDateParts: { [FullDatePart.Date]?: undefined; [FullDatePart.Time]?: undefined; }): undefined; export declare function combineDateParts<const SpecificTimezone extends Timezone>(maybeDateParts: { [FullDatePart.Date]: DatePart<SpecificTimezone>; [FullDatePart.Time]?: undefined; }): DatePart<SpecificTimezone>; export declare function combineDateParts<const SpecificTimezone extends Timezone>(maybeDateParts: { [FullDatePart.Date]: DatePart<SpecificTimezone>; [FullDatePart.Time]?: TimePart<SpecificTimezone> | undefined | Partial<FullDate<SpecificTimezone>>; }): FullDate<SpecificTimezone> | DatePart<SpecificTimezone>; export declare function combineDateParts<const SpecificTimezone extends Timezone>(maybeDateParts: { [FullDatePart.Date]?: undefined; [FullDatePart.Time]: TimePart<SpecificTimezone>; }): TimePart<SpecificTimezone>; export declare function combineDateParts<const SpecificTimezone extends Timezone>(maybeDateParts: { [FullDatePart.Date]?: DatePart<SpecificTimezone> | undefined | Partial<FullDate<SpecificTimezone>>; [FullDatePart.Time]: TimePart<SpecificTimezone>; }): FullDate<SpecificTimezone> | TimePart<SpecificTimezone>; export declare function combineDateParts<const SpecificTimezone extends Timezone>(maybeDateParts: MaybeDateParts<SpecificTimezone>): MaybeDatePart<SpecificTimezone>;