full-ics v1.0.0
Full ICS
A fully RFC-5545 compliant library for parsing and generating ICS (iCalendar) files.
⚡ Features
- 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
🚀 Getting Started
npm install full-ics
🔧 API Reference
createEvent(calendarObject, callback)
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);
});
parseEvent(icsString, callback)
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);
});
createFreeBusy(freebusyObject, callback)
Generate a valid ICS string containing freebusy availability.
const freebusyString = FullICS.createFreeBusy(freebusyObject, "sync");
parseFreeBusy(freebusyString, callback)
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
Contributions are always welcome! When contributing we kindly ask to:
- Respect others
- If you make a breaking change update the documentation
- Update the tests
📄 License
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.
👥 Authors
This library was made by the Qboxmail team and it's used in variuos parts of our softwares, such as Webmail.
4 months ago