UNPKG

date-vir

Version:

Easy and explicit dates and times.

36 lines (35 loc) 1.64 kB
import { type PartialWithUndefined, type SetRequiredAndNotNull } from '@augment-vir/common'; import { type FullDate } from '../full-date/full-date-shape.js'; import { type Timezone } from '../timezone/timezones.js'; /** * Checks that the input has all the requested {@link FullDate} keys. * * @category Util * @example * * ```ts * import {hasFullDateKeys} from 'date-vir'; * * hasFullDateKeys({year: 2024}, ['year']); // `true` * hasFullDateKeys({year: 2024}, ['day']); // `false` * ``` */ export declare function hasFullDateKeys<SpecificTimezone extends Timezone, PartialFullDate extends PartialWithUndefined<FullDate<SpecificTimezone>>, /** A union of strings. */ RequiredKeys extends keyof FullDate<SpecificTimezone>>(partialFullDate: PartialWithUndefined<FullDate<SpecificTimezone>>, keys: ReadonlyArray<RequiredKeys>): partialFullDate is SetRequiredAndNotNull<PartialFullDate, RequiredKeys>; /** * Asserts that the input has all the requested {@link FullDate} keys. * * @category Util * @example * * ```ts * import {assertHasFullDateKeys} from 'date-vir'; * * assertHasFullDateKeys({year: 2024}, ['year']); // passes * assertHasFullDateKeys({year: 2024}, ['day']); // fails * ``` */ export declare function assertHasFullDateKeys<SpecificTimezone extends Timezone, PartialFullDate extends PartialWithUndefined<FullDate<SpecificTimezone>>, /** A union of strings. */ RequiredKeys extends keyof FullDate<SpecificTimezone>>(partialFullDate: PartialWithUndefined<FullDate<SpecificTimezone>>, keys: ReadonlyArray<RequiredKeys>): asserts partialFullDate is SetRequiredAndNotNull<PartialFullDate, RequiredKeys>;