Work Days
Overview
The work_days
module is a Deno module designed to calculate workdays within a specified date range, excluding public holidays. It utilizes the dayjs library for date manipulation and node-ical for parsing iCalendar files containing public holiday information.
Usage
Import it into your project via URL:
import { getWorkDaysForDateRange } from "https://deno.land/x/work_days/mod.ts"
Example
import { getWorkDaysForDateRange } from "work_days";
const SLOVAK_PUBLIC_HOLIDAY_ICAL_URL =
"https://calendar.google.com/calendar/ical/en.slovak%23holiday%40group.v.calendar.google.com/public/basic.ics";
const workDays = await getWorkDaysForDateRange({
holidaysIcalUrl: SLOVAK_PUBLIC_HOLIDAY_ICAL_URL,
startDate: new Date("2023-11-01"),
});
console.log(workDays);
API
Types
PublicHoliday
date: Date
: The date of the public holiday.name: string
: The name of the public holiday.
WeekDay
A numeric representation of a week day (0 to 6, where 0 is Sunday and 6 is Saturday).
GetWorkDaysForDateRangeParameters
holidaysIcalUrl: string
: URL of the public holidays iCalendar file.startDate: DateArg
: Starting date for the period (inclusive).endDate?: DateArg
: Ending date for the period (inclusive). Defaults to the end of thestartDate
month.businessDays?: WeekDay[]
: Week day numbers treated as business (work) days. Defaults to Monday to Friday.
Functions
isBusinessDay(businessDays: WeekDay[], value: DateArg): boolean
Checks whether the given date is a business (work) day.
getWorkDaysForDateRange(params: GetWorkDaysForDateRangeParameters): Promise<Date[]>
Retrieves a list of work days for the specified parameters, excluding public holidays.
fetchPublicHolidays(url: string): Promise<PublicHoliday[]>
Fetches a list of public holidays from the provided iCalendar URL.
Testing
The module includes a test file (main_test.ts
) using Deno's built-in testing framework. Run tests with the following command:
deno test --allow-read --allow-net --allow-env
License
This module is licensed under the MIT License.