date-vir
Version:
Easy and explicit dates and times.
44 lines (43 loc) • 2.59 kB
TypeScript
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>;