ts-ics v1.4.0
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
Parsing
Parse Ics Calendar
import { parseIcsCalendar, icsCalendarToObject, type VCalendar } from "ts-ics";
const calendarParsed: VCalendar = parseIcsCalendar(icsCalendarString);
// or if you only want to convert it, but not parse it
const calendar: VCalendar = icsCalendarToObject(icsCalendarString);
Parse Ics Event
import { parseIcsEvent, icsEventToObject, type VEvent } from "ts-ics";
const eventParsed: VEvent = parseIcsEvent(icsEventString);
// or if you only want to convert it, but not parse it
const event: VEvent = icsEventToObject(icsEventString);
Generating
Generate Ics Calendar
import { generateIcsCalendar, type VCalendar } from "ts-ics";
const calendar: VCalendar = {...}
const icsCalendarString = generateIcsCalendar(calendar);
Generate Ics Event
import { generateIcsEvent, type VEvent } from "ts-ics";
const event: VEvent = {...}
const icsEventString = generateIcsEvent(event);
RRule
Extending by RRule
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),
});
More
Parse and generate functions are available for every other Ics Type like:
- VAlarm
- VTimezone
- ...
License
MIT - License
Thanks
Thanks to iCalendar.org for the ics documentation and the many examples which are used for testing purposes.
10 days ago
26 days ago
1 month ago
2 months ago
4 months ago
4 months ago
5 months ago
5 months ago
6 months ago
6 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago