fixes lol
All checks were successful
Build and Push / build-all (push) Successful in 1m48s

This commit is contained in:
doomtube 2026-01-10 03:00:41 -05:00
parent 33624d3b02
commit 896a3b77d7
5 changed files with 293 additions and 85 deletions

View file

@ -0,0 +1,110 @@
/**
* Holiday data for terminal calendar
* Includes both Indian national holidays and international holidays
*/
/**
* Fixed holidays - same date every year
* Format: { month: 0-11, day: 1-31, name: string, type: 'indian' | 'international' }
*/
export const fixedHolidays = [
// Indian National Holidays (Fixed)
{ month: 0, day: 26, name: 'Republic Day', type: 'indian' },
{ month: 7, day: 15, name: 'Independence Day', type: 'indian' },
{ month: 9, day: 2, name: 'Gandhi Jayanti', type: 'indian' },
// International Holidays (Fixed)
{ month: 0, day: 1, name: "New Year's Day", type: 'international' },
{ month: 1, day: 14, name: "Valentine's Day", type: 'international' },
{ month: 9, day: 31, name: 'Halloween', type: 'international' },
{ month: 11, day: 25, name: 'Christmas', type: 'international' },
{ month: 11, day: 31, name: "New Year's Eve", type: 'international' },
];
/**
* Variable holidays - different date each year (lunar calendar based)
* Format: { [year]: Array<{ month: 0-11, day: 1-31, name: string, type: string }> }
*/
export const variableHolidays = {
2024: [
{ month: 2, day: 25, name: 'Holi', type: 'indian' },
{ month: 3, day: 10, name: 'Eid ul-Fitr', type: 'indian' },
{ month: 5, day: 17, name: 'Eid ul-Adha', type: 'indian' },
{ month: 7, day: 19, name: 'Raksha Bandhan', type: 'indian' },
{ month: 7, day: 26, name: 'Janmashtami', type: 'indian' },
{ month: 8, day: 7, name: 'Ganesh Chaturthi', type: 'indian' },
{ month: 9, day: 12, name: 'Dussehra', type: 'indian' },
{ month: 10, day: 1, name: 'Diwali', type: 'indian' },
],
2025: [
{ month: 2, day: 14, name: 'Holi', type: 'indian' },
{ month: 2, day: 31, name: 'Eid ul-Fitr', type: 'indian' },
{ month: 5, day: 7, name: 'Eid ul-Adha', type: 'indian' },
{ month: 7, day: 9, name: 'Raksha Bandhan', type: 'indian' },
{ month: 7, day: 16, name: 'Janmashtami', type: 'indian' },
{ month: 7, day: 27, name: 'Ganesh Chaturthi', type: 'indian' },
{ month: 9, day: 2, name: 'Dussehra', type: 'indian' },
{ month: 9, day: 20, name: 'Diwali', type: 'indian' },
],
2026: [
{ month: 2, day: 4, name: 'Holi', type: 'indian' },
{ month: 2, day: 20, name: 'Eid ul-Fitr', type: 'indian' },
{ month: 4, day: 27, name: 'Eid ul-Adha', type: 'indian' },
{ month: 7, day: 28, name: 'Raksha Bandhan', type: 'indian' },
{ month: 8, day: 4, name: 'Janmashtami', type: 'indian' },
{ month: 8, day: 17, name: 'Ganesh Chaturthi', type: 'indian' },
{ month: 8, day: 20, name: 'Dussehra', type: 'indian' },
{ month: 10, day: 8, name: 'Diwali', type: 'indian' },
],
2027: [
{ month: 2, day: 22, name: 'Holi', type: 'indian' },
{ month: 2, day: 10, name: 'Eid ul-Fitr', type: 'indian' },
{ month: 4, day: 17, name: 'Eid ul-Adha', type: 'indian' },
{ month: 7, day: 17, name: 'Raksha Bandhan', type: 'indian' },
{ month: 7, day: 25, name: 'Janmashtami', type: 'indian' },
{ month: 8, day: 6, name: 'Ganesh Chaturthi', type: 'indian' },
{ month: 9, day: 9, name: 'Dussehra', type: 'indian' },
{ month: 9, day: 28, name: 'Diwali', type: 'indian' },
],
};
/**
* Get all holidays for a specific month and year
* @param {number} year - Full year (e.g., 2024)
* @param {number} month - Month (0-11)
* @returns {Map<number, { name: string, type: string }>} - Map of day -> holiday info
*/
export function getHolidaysForMonth(year, month) {
const holidayMap = new Map();
// Add fixed holidays for this month
for (const holiday of fixedHolidays) {
if (holiday.month === month) {
holidayMap.set(holiday.day, { name: holiday.name, type: holiday.type });
}
}
// Add variable holidays for this year and month
const yearHolidays = variableHolidays[year];
if (yearHolidays) {
for (const holiday of yearHolidays) {
if (holiday.month === month) {
holidayMap.set(holiday.day, { name: holiday.name, type: holiday.type });
}
}
}
return holidayMap;
}
/**
* Check if a specific date is a holiday
* @param {number} year - Full year
* @param {number} month - Month (0-11)
* @param {number} day - Day of month (1-31)
* @returns {{ name: string, type: string } | null}
*/
export function getHolidayInfo(year, month, day) {
const monthHolidays = getHolidaysForMonth(year, month);
return monthHolidays.get(day) || null;
}