ical-generator-lite
v1.0.0
Published
ical-generator-lite is a fork of ical-generator specifically for edge runtimes like Cloudflare Workers.
Downloads
3
Maintainers
Readme
ical-generator-lite
is a fork of the ical-generator library specifically made for working on platforms like cloudflare workers. This package removes things like 'fs' and other unneeded things for edge-runtimes.
📦 Installation
npm install ical-generator-lite
# For TypeScript Users
# (see "I use Typescript and get TS2307: Cannot find module errors" section below)
npm i -D @types/node rrule moment-timezone moment dayjs @types/luxon
⚡️ Quick Start
import ical from "ical-generator-lite";
import http from "node:http";
const calendar = ical({ name: "my first iCal" });
const startTime = new Date();
const endTime = new Date();
endTime.setHours(startTime.getHours() + 1);
calendar.createEvent({
start: startTime,
end: endTime,
summary: "Example Event",
description: "It works ;)",
location: "my room",
url: "http://sebbo.net/",
});
http.createServer((req, res) => calendar.serve(res)).listen(
3000,
"127.0.0.1",
() => {
console.log("Server running at http://127.0.0.1:3000/");
}
);
See the examples folder for more examples.
📑 API-Reference
🕒 Date, Time & Timezones
ical-generator-lite supports native Date,
Day.js, Luxon's DateTime
and the older moment.js and moment-timezone
objects. You can also pass a string which is then passed to javascript's Date
internally.
It is recommended to use UTC time as far as possible. ical-generator-lite
will output all time information as UTC time as
long as no time zone is defined. For day.js, a plugin is necessary for this, which is a prerequisite. If a time zone is
set, ical-generator-lite
assumes that the given time matches the time zone. If a time zone is used, it is also recommended
to use a VTimezone generator. Such a function generates a VTimezone entry and returns it. For example, ical-timezones can
be used for this:
import ical from "ical-generator-lite";
import { getVtimezoneComponent } from "@touch4it/ical-timezones";
const cal = new ICalCalendar();
cal.timezone({
name: "FOO",
generator: getVtimezoneComponent,
});
cal.createEvent({
start: new Date(),
timezone: "Europe/London",
});
If a moment-timezone
object or Luxon's setZone
method works, ical-generator-lite
sets it according to the time zone set
in the calendar/event.
🚦 Tests
npm test
npm run coverage
npm run browser-test
🙆🏼♂️ Credits
Original author Sebastian Pekarek