UNPKG

poland-public-holidays

Version:
57 lines (50 loc) 1.46 kB
import { isSameDay, addDays, getEasterDate, validateDate, validateYear, } from './helpers'; import holidayRules from './holidays'; import { Holiday } from './types'; export function getHolidaysInYear(year: any): Holiday[] { const yearDate = validateYear(year); const yearString = yearDate.getFullYear().toString().padStart(4, '0'); const yearNumber = parseInt(yearString); const easterDate = getEasterDate(yearNumber); return holidayRules .map((holiday) => { let date; if (holiday.type === 'fixed') { date = new Date(`${yearString}-${holiday.date}`); } else { date = new Date(addDays(easterDate, holiday.afterEaster)); } const { name, namePL } = holiday; return { name, namePL, date, }; }) .sort((a, b) => (a.date < b.date ? -1 : 1)); } export function getHolidayOnDate(dateInput: any) { const date = validateDate(dateInput); return getHolidaysInYear(date.getFullYear()).find((holiday) => isSameDay(holiday.date, date) ); } export function isHoliday(dateInput: any) { const date = validateDate(dateInput); return getHolidayOnDate(date) !== undefined; } export function isWeekend(date: Date): boolean { return [0, 6].includes(date.getDay()); } export function isWeekendOrHoliday(date: Date): boolean { return isWeekend(date) || isHoliday(date); } export function isWorkingDay(date: Date): boolean { return !isWeekendOrHoliday(date); }