TS-ICS
This package can parse and create Ics files and provides TypeScript types for easy handling.
Motivation
Many of the Ics packages provide good functionality, however none of these are type safe. This package can parse Ics strings with Zod. Also, many packages are not actively maintained.
Installation
npm i ts-ics
generate
generateIcsCalendar
import { generateIcsCalendar, type VCalendar } from "ts-ics";
const calendar: VCalendar = {...}
const icsCalendarString = generateIcsCalendar(calendar);
generateIcsEvent
import { generateIcsEvent, type VEvent } from "ts-ics";
const event: VEvent = {...}
const icsEventString = generateIcsEvent(event);
parse
parseIcsCalendar
parse with zod
import { parseIcsCalendar, type VCalendar } from "ts-ics";
const calendarParsed: VCalendar = parseIcsCalendar(icsCalendarString);
without zod parsing
import { icsCalendarToObject, type VCalendar } from "ts-ics";
const calendar: VCalendar = icsCalendarToObject(icsCalendarString);
parseIcsEvent
parse with zod
import { parseIcsEvent, type VEvent } from "ts-ics";
const eventParsed: VEvent = parseIcsEvent(icsEventString);
without zod parsing
import { icsEventToObject, type VEvent } from "ts-ics";
const event: VEvent = icsEventToObject(icsEventString);
utils
extendByRecurrenceRule
import { extendByRecurrenceRule } from "ts-ics";
const start = new Date(Date.UTC(2023, 9, 5));
const ruleString = "FREQ=DAILY;BYMINUTE=15,16,17,18,19;BYSECOND=0,20,40";
const rule = parseIcsRecurrenceRule(ruleString);
const dates = extendByRecurrenceRule(rule, {
start,
end: addDays(start, 1),
});
License
MIT - License
Thanks
Thanks to iCalendar.org for the ics documentation and the many examples which are used for testing purposes.