272 lines
7.7 KiB
TypeScript
272 lines
7.7 KiB
TypeScript
import type { Locale } from "./locale/types.js";
|
|
export type * from "./locale/types.js";
|
|
export type * from "./fp/types.js";
|
|
/**
|
|
* The generic date constructor. Replicates the Date constructor. Used to build
|
|
* generic functions.
|
|
*
|
|
* @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).
|
|
*/
|
|
export interface GenericDateConstructor<DateType extends Date = Date> {
|
|
/**
|
|
* The date constructor. Creates date with the current date and time.
|
|
*
|
|
* @returns The date instance
|
|
*/
|
|
new (): DateType;
|
|
/**
|
|
* The date constructor. Creates date with the passed date, number of
|
|
* milliseconds or string to parse.
|
|
*
|
|
* @param value - The date, number of milliseconds or string to parse
|
|
*
|
|
* @returns The date instance
|
|
*/
|
|
new (value: Date | number | string): DateType;
|
|
/**
|
|
* The date constructor. Creates date with the passed date values (year,
|
|
* month, etc.) Note that the month is 0-indexed.
|
|
*
|
|
* @param year - The year
|
|
* @param month - The month. Note that the month is 0-indexed.
|
|
* @param date - The day of the month
|
|
* @param hours - The hours
|
|
* @param minutes - The minutes
|
|
* @param seconds - The seconds
|
|
* @param ms - The milliseconds
|
|
*
|
|
* @returns The date instance
|
|
*/
|
|
new (
|
|
year: number,
|
|
month: number,
|
|
date?: number,
|
|
hours?: number,
|
|
minutes?: number,
|
|
seconds?: number,
|
|
ms?: number,
|
|
): DateType;
|
|
}
|
|
/**
|
|
* The duration object. Contains the duration in the units specified by the
|
|
* object.
|
|
*/
|
|
export interface Duration {
|
|
/** The number of years in the duration */
|
|
years?: number;
|
|
/** The number of months in the duration */
|
|
months?: number;
|
|
/** The number of weeks in the duration */
|
|
weeks?: number;
|
|
/** The number of days in the duration */
|
|
days?: number;
|
|
/** The number of hours in the duration */
|
|
hours?: number;
|
|
/** The number of minutes in the duration */
|
|
minutes?: number;
|
|
/** The number of seconds in the duration */
|
|
seconds?: number;
|
|
}
|
|
/**
|
|
* The duration unit type alias.
|
|
*/
|
|
export type DurationUnit = keyof Duration;
|
|
/**
|
|
* An object that combines two dates to represent the time interval.
|
|
*
|
|
* @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).
|
|
*/
|
|
export interface Interval<DateType extends Date = Date> {
|
|
/** The start of the interval. */
|
|
start: DateType | number | string;
|
|
/** The end of the interval. */
|
|
end: DateType | number | string;
|
|
}
|
|
/**
|
|
* A version of {@link Interval} that has both start and end resolved to Date.
|
|
*/
|
|
export interface NormalizedInterval<DateType extends Date = Date> {
|
|
/** The start of the interval. */
|
|
start: DateType;
|
|
/** The end of the interval. */
|
|
end: DateType;
|
|
}
|
|
/**
|
|
* The era. Can be either 0 (AD - Anno Domini) or 1 (BC - Before Christ).
|
|
*/
|
|
export type Era = 0 | 1;
|
|
/**
|
|
* The year quarter. Goes from 1 to 4.
|
|
*/
|
|
export type Quarter = 1 | 2 | 3 | 4;
|
|
/**
|
|
* The day of the week type alias. Unlike the date (the number of days since
|
|
* the beginning of the month), which begins with 1 and is dynamic (can go up to
|
|
* 28, 30, or 31), the day starts with 0 and static (always ends at 6). Look at
|
|
* it as an index in an array where Sunday is the first element and Saturday
|
|
* is the last.
|
|
*/
|
|
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
/**
|
|
* The month type alias. Goes from 0 to 11, where 0 is January and 11 is
|
|
* December.
|
|
*/
|
|
export type Month = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11;
|
|
/**
|
|
* FirstWeekContainsDate is used to determine which week is the first week of
|
|
* the year, based on what day the January, 1 is in that week.
|
|
*
|
|
* The day in that week can only be 1 (Monday) or 4 (Thursday).
|
|
*
|
|
* Please see https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system for more information.
|
|
*/
|
|
export type FirstWeekContainsDate = 1 | 4;
|
|
/**
|
|
* The date values, used to set or get date object values.
|
|
*/
|
|
export interface DateValues {
|
|
/** The year */
|
|
year?: number;
|
|
/** The month */
|
|
month?: number;
|
|
/** The day of the month */
|
|
date?: number;
|
|
/** The hours */
|
|
hours?: number;
|
|
/** The minutes */
|
|
minutes?: number;
|
|
/** The seconds */
|
|
seconds?: number;
|
|
/** The milliseconds */
|
|
milliseconds?: number;
|
|
}
|
|
/**
|
|
* The number rounding method.
|
|
*/
|
|
export type RoundingMethod = "ceil" | "floor" | "round" | "trunc";
|
|
/**
|
|
* The ISO string format.
|
|
*
|
|
* - basic: Minimal number of separators
|
|
* - extended: With separators added to enhance human readability
|
|
*/
|
|
export type ISOStringFormat = "extended" | "basic";
|
|
/**
|
|
* The ISO date representation. Represents which component the string includes,
|
|
* date, time or both.
|
|
*/
|
|
export type ISOStringRepresentation = "complete" | "date" | "time";
|
|
/**
|
|
* The step function options. Used to build function options.
|
|
*/
|
|
export interface StepOptions {
|
|
/** The step to use when iterating */
|
|
step?: number;
|
|
}
|
|
/**
|
|
* The week function options. Used to build function options.
|
|
*/
|
|
export interface WeekOptions {
|
|
/** Which day the week starts on. */
|
|
weekStartsOn?: Day;
|
|
}
|
|
/**
|
|
* The first week contains date options. Used to build function options.
|
|
*/
|
|
export interface FirstWeekContainsDateOptions {
|
|
/** See {@link FirstWeekContainsDate} for more details. */
|
|
firstWeekContainsDate?: FirstWeekContainsDate;
|
|
}
|
|
/**
|
|
* The localized function options. Used to build function options.
|
|
*
|
|
* @typeParam LocaleFields - The locale fields used in the relevant function. Defines the minimum set of locale fields that must be provided.
|
|
*/
|
|
export interface LocalizedOptions<LocaleFields extends keyof Locale> {
|
|
/** The locale to use in the function. */
|
|
locale?: Pick<Locale, LocaleFields>;
|
|
}
|
|
/**
|
|
* The ISO format function options. Used to build function options.
|
|
*/
|
|
export interface ISOFormatOptions {
|
|
/** The format to use: basic with minimal number of separators or extended
|
|
* with separators added to enhance human readability */
|
|
format?: ISOStringFormat;
|
|
/** The date representation - what component to format: date, time\
|
|
* or both (complete) */
|
|
representation?: ISOStringRepresentation;
|
|
}
|
|
/**
|
|
* The rounding options. Used to build function options.
|
|
*/
|
|
export interface RoundingOptions {
|
|
/** The rounding method to use */
|
|
roundingMethod?: RoundingMethod;
|
|
}
|
|
/**
|
|
* Additional tokens options. Used to build function options.
|
|
*/
|
|
export interface AdditionalTokensOptions {
|
|
/** If true, allows usage of the week-numbering year tokens `YY` and `YYYY`.
|
|
* See: https://date-fns.org/docs/Unicode-Tokens */
|
|
useAdditionalWeekYearTokens?: boolean;
|
|
/** If true, allows usage of the day of year tokens `D` and `DD`.
|
|
* See: https://date-fns.org/docs/Unicode-Tokens */
|
|
useAdditionalDayOfYearTokens?: boolean;
|
|
}
|
|
/**
|
|
* Nearest minute type. Goes from 1 to 30, where 1 is the nearest minute and 30
|
|
* is nearest half an hour.
|
|
*/
|
|
export type NearestMinutes =
|
|
| 1
|
|
| 2
|
|
| 3
|
|
| 4
|
|
| 5
|
|
| 6
|
|
| 7
|
|
| 8
|
|
| 9
|
|
| 10
|
|
| 11
|
|
| 12
|
|
| 13
|
|
| 14
|
|
| 15
|
|
| 16
|
|
| 17
|
|
| 18
|
|
| 19
|
|
| 20
|
|
| 21
|
|
| 22
|
|
| 23
|
|
| 24
|
|
| 25
|
|
| 26
|
|
| 27
|
|
| 28
|
|
| 29
|
|
| 30;
|
|
/**
|
|
* Nearest hour type. Goes from 1 to 12, where 1 is the nearest hour and 12
|
|
* is nearest half a day.
|
|
*/
|
|
export type NearestHours = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
|
|
/**
|
|
* The nearest minutes function options. Used to build function options.
|
|
*
|
|
* @deprecated Use {@link NearestToUnitOptions} instead.
|
|
*/
|
|
export type NearestMinutesOptions = NearestToUnitOptions<NearestMinutes>;
|
|
/**
|
|
* The nearest unit function options. Used to build function options.
|
|
*/
|
|
export interface NearestToUnitOptions<Unit extends number> {
|
|
/** The nearest unit to round to. E.g. for minutes `15` to round to quarter
|
|
* hours. */
|
|
nearestTo?: Unit;
|
|
}
|