UNPKG

@decaf-ts/decorator-validation

Version:
122 lines (121 loc) 5.3 kB
type DateBuilderField = "Years" | "Months" | "Days" | "Hours" | "Minutes" | "Seconds"; export type DateBuilderInstance = DateBuilder<DateBuilderField>; export type DateTarget = Date | DateBuilderInstance; export type OffsetValues = { years: number; months: number; days: number; hours: number; minutes: number; seconds: number; }; export declare function offsetDate(date: Date, direction: 1 | -1, values: OffsetValues): Date; type RemoveField<Input extends DateBuilderField, Field extends DateBuilderField> = Input extends Field ? never : Input; interface DateBuilderUtilityMethods { Now(): Date; Tomorrow(): Date; Yesterday(): Date; DaysAgo(count: number): Date; NextDays(count: number): Date; YearsAgo(count: number): Date; NextYears(count: number): Date; MonthsAgo(count: number): Date; NextMonths(count: number): Date; HoursAgo(count: number): Date; NextHours(count: number): Date; MinutesAgo(count: number): Date; NextMinutes(count: number): Date; SecondsAgo(count: number): Date; NextSeconds(count: number): Date; } interface DateBuilderCoreMethods extends DateBuilderUtilityMethods { build(reference?: DateTarget): Date; from(reference: DateTarget): Date; past(reference: DateTarget): Date; after(reference: DateTarget): Date; until(reference: DateTarget): Date; before(reference: DateTarget): Date; ago(reference?: DateTarget): Date; } export type DateBuilderChain<Remaining extends DateBuilderField = DateBuilderField> = DateBuilderCoreMethods & { [Field in Remaining]: (value: number) => DateBuilderChain<RemoveField<Remaining, Field>>; }; /** * Fluent builder for producing dates relative to a reference point. */ export declare class DateBuilder<Remaining extends DateBuilderField = DateBuilderField> implements DateBuilderCoreMethods { private years; private months; private days; private hours; private minutes; private seconds; private constructor(); static Years(value: number): DateBuilderChain<RemoveField<DateBuilderField, "Years">>; static Months(value: number): DateBuilderChain<RemoveField<DateBuilderField, "Months">>; static Days(value: number): DateBuilderChain<RemoveField<DateBuilderField, "Days">>; static Hours(value: number): DateBuilderChain<RemoveField<DateBuilderField, "Hours">>; static Minutes(value: number): DateBuilderChain<RemoveField<DateBuilderField, "Minutes">>; static Seconds(value: number): DateBuilderChain<RemoveField<DateBuilderField, "Seconds">>; static Now(): Date; static Tomorrow(): Date; static Yesterday(): Date; static DaysAgo(count: number): Date; static NextDays(count: number): Date; static YearsAgo(count: number): Date; static NextYears(count: number): Date; static MonthsAgo(count: number): Date; static NextMonths(count: number): Date; static HoursAgo(count: number): Date; static NextHours(count: number): Date; static MinutesAgo(count: number): Date; static NextMinutes(count: number): Date; static SecondsAgo(count: number): Date; static NextSeconds(count: number): Date; Years(value: number): DateBuilderChain<RemoveField<Remaining, "Years">>; Months(value: number): DateBuilderChain<RemoveField<Remaining, "Months">>; Days(value: number): DateBuilderChain<RemoveField<Remaining, "Days">>; Hours(value: number): DateBuilderChain<RemoveField<Remaining, "Hours">>; Minutes(value: number): DateBuilderChain<RemoveField<Remaining, "Minutes">>; Seconds(value: number): DateBuilderChain<RemoveField<Remaining, "Seconds">>; build(reference?: DateTarget): Date; from(reference: DateTarget): Date; past(reference: DateTarget): Date; after(reference: DateTarget): Date; until(reference: DateTarget): Date; before(reference: DateTarget): Date; ago(reference?: DateTarget): Date; Now(): Date; Tomorrow(): Date; Yesterday(): Date; DaysAgo(count: number): Date; NextDays(count: number): Date; YearsAgo(count: number): Date; NextYears(count: number): Date; MonthsAgo(count: number): Date; NextMonths(count: number): Date; HoursAgo(count: number): Date; NextHours(count: number): Date; MinutesAgo(count: number): Date; NextMinutes(count: number): Date; SecondsAgo(count: number): Date; NextSeconds(count: number): Date; private offsets; } export declare const Dates: typeof DateBuilder; export declare const Now: () => Date; export declare const Tomorrow: () => Date; export declare const Yesterday: () => Date; export declare const DaysAgo: (count: number) => Date; export declare const NextDays: (count: number) => Date; export declare const YearsAgo: (count: number) => Date; export declare const NextYears: (count: number) => Date; export declare const MonthsAgo: (count: number) => Date; export declare const NextMonths: (count: number) => Date; export declare const HoursAgo: (count: number) => Date; export declare const NextHours: (count: number) => Date; export declare const MinutesAgo: (count: number) => Date; export declare const NextMinutes: (count: number) => Date; export declare const SecondsAgo: (count: number) => Date; export declare const NextSeconds: (count: number) => Date; export {};