1.0.0 • Published 4 months ago

full-ics v1.0.0

Weekly downloads
-
License
EUPL-1.2+
Repository
github
Last release
4 months ago

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.

1.0.0

4 months ago