retail-calendar
Version:
A configurable retail calendar
108 lines (107 loc) • 2.88 kB
TypeScript
export declare enum WeekGrouping {
Group445 = 0,
Group544 = 1,
Group454 = 2
}
export declare enum LastDayOfWeek {
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Thursday = 4,
Friday = 5,
Saturday = 6,
Sunday = 7
}
export declare enum LastMonthOfYear {
January = 0,
February = 1,
March = 2,
April = 3,
May = 4,
June = 5,
July = 6,
August = 7,
September = 8,
October = 9,
November = 10,
December = 11
}
export declare enum WeekCalculation {
LastDayBeforeEOM = 0,
LastDayBeforeEomExceptLeapYear = 1,
LastDayNearestEOM = 2,
FirstBOWOfFirstMonth = 3,
PenultimateDayOfWeekNearestEOM = 4,
CustomLeapYear = 5
}
export interface RetailCalendarOptions {
weekGrouping: WeekGrouping;
lastDayOfWeek: LastDayOfWeek;
lastMonthOfYear: LastMonthOfYear | number;
weekCalculation: WeekCalculation;
/**
* If the value of addLeapWeekToMonth is 11, then the 11th month of the years that have 53 weeks will be extended by an additional week
*/
addLeapWeekToMonth?: number;
beginningMonthIndex?: number;
leapYear?: number;
leapYearEndDate?: string;
leapYearFrequency?: number;
}
export declare const NRFCalendarOptions: RetailCalendarOptions;
export declare type RetailCalendarConstructor = {
new (calendarOptions: RetailCalendarOptions, year: number): RetailCalendar;
getRetailCalendar: (calendarOptions: RetailCalendarOptions, year: number) => RetailCalendar;
};
export interface RetailCalendar {
year: number;
numberOfWeeks: number;
months: RetailCalendarMonth[];
weeks: RetailCalendarWeek[];
days: RetailCalendarDay[];
addLeapWeekToMonth: number;
}
export interface RetailCalendarDay {
weekOfYear: number;
monthOfYear: number;
dayOfWeek: number;
dayOfMonth: number;
dayOfYear: number;
gregorianStartDate: Date;
gregorianEndDate: Date;
gregorianMonthOfYear: number;
gregorianDayOfYear: number;
gregorianDayOfMonth: number;
}
export interface RetailCalendarWeek {
weekOfYear: number;
weekOfMonth: number;
weekOfQuarter: number;
monthOfYear: number;
quarterOfYear: number;
gregorianStartDate: Date;
gregorianEndDate: Date;
}
export interface RetailCalendarMonth {
monthOfYear: number;
quarterOfYear: number;
numberOfWeeks: number;
weeks: RetailCalendarWeek[];
gregorianStartDate: Date;
gregorianEndDate: Date;
}
export interface LastDayStrategy {
getLastDayForGregorianLastDay(lastDayOfGregorianYear: Date, isoLastDayOfWeek: number, retailCalendarYear: number): Date;
}
export declare type WeekOfCalendar = {
calendar: RetailCalendar;
week: RetailCalendarWeek;
};
export {};
declare global {
namespace jest {
interface Matchers<R> {
toBeTheSameWeekAs(expected: any): R;
}
}
}