A fully RFC-5545 compliant library for parsing and generating ICS (iCalendar) files.
- Create and edit ICS files
- Input validation
- Complete support for
- Recurring Events
- Alarms and Reminders
- Timezones
- VTODO and VFREEBUSY
- Participants and Organizers
- Attachments and URLs
- Categories and Priorities
npm install full-ics
Generate a valid ICS string from a calendar object. Currently it supports:
- Events (
VEVENT
) - Todos (
VTODO
) - Timezones (
VTIMEZONE
) - Alarms (
VALARM
) - Attachments (
ATTACH
) - Participants/Attendees (
ATTENDEE
) - Recurrence rules (
RRULE
) - Exclusion dates (
EXDATE
)
const FullICS = require("full-ics");
const icsString = FullICS.createEvent(calendarObject, "sync");
// or using a callback
FullICS.createEvent(calendarObject, (error, icsString) => {
if (error) console.error(error);
console.log(icsString);
});
Converts an ICS string into a calendar object. Currently it supports:
- Events (
VEVENT
) - Todos (
VTODO
) - Timezones (
VTIMEZONE
) - Alarms (
VALARM
) - Attachments (
ATTACH
) - Participants/Attendees (
ATTENDEE
) - Recurrence rules (
RRULE
) - Exclusion dates (
EXDATE
)
const parsedCalendar = FullICS.parseEvent(icsString, "sync");
// or using a callback
FullICS.parseEvent(icsString, (error, calendar) => {
if (error) console.error(error);
console.log(calendar);
});
Generate a valid ICS string containing freebusy availability.
const freebusyString = FullICS.createFreeBusy(freebusyObject, "sync");
Parse an ICS string into an object containing availability rules.
const freebusyRules = FullICS.parseFreeBusy(freebusyString, "sync");
All the functions supports sync execution (by passing "sync"
as the second parameter) or async (by passing a callback as the second parameter).
Contributions are always welcome! When contributing we kindly ask to:
- Respect others
- If you make a breaking change update the documentation
- Update the tests
This project is released under the European Union Public License (EUPL) version 1.2, a copyleft license approved by the European Union. It's compatibile with other open source licences (GPL, AGPL, EPL, etc.) but has some legal protections for European laws.
This library was made by the Qboxmail team and it's used in variuos parts of our softwares, such as Webmail.