retail-calendar
Version:
A configurable retail calendar
24 lines (23 loc) • 1.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var retail_calendar_1 = require("./retail_calendar");
function weekOfGregorianDate(date, calendarOptions) {
var year = date.getFullYear();
var candidateYears = [year - 1, year, year + 1];
for (var _i = 0, candidateYears_1 = candidateYears; _i < candidateYears_1.length; _i++) {
var candidateYear = candidateYears_1[_i];
var calendar = retail_calendar_1.RetailCalendarFactory.getRetailCalendar(calendarOptions, candidateYear);
var week = calendar.weeks.find(function (calendarWeek) {
return calendarWeek.gregorianStartDate <= date &&
calendarWeek.gregorianEndDate >= date;
});
if (week) {
return {
calendar: calendar,
week: week,
};
}
}
throw new Error("No retail calendar week found for " + date.toDateString() + ". This should never be the case. Please report this to calendar authorities.");
}
exports.weekOfGregorianDate = weekOfGregorianDate;