ics-service

1.4.0 • Public • Published

ics-service

Create a calendar feed people can subscribe to.

npm version ISC-licensed minimum Node.js version support me via GitHub Sponsors chat with me on Twitter

Installation

npm install ics-service

Usage

const express = require('express')
const generateIcs = require('ics-service/generate-ics')
const aboutRoute = require('ics-service/about')
const feedRoute = require('ics-service/feed')

const TITLE = 'some calendar feed'
const GENERATOR = 'my feed generator'

const events = [{
	uid: 'a', title: 'A', description: 'A.',
	location: 'Alamo Square, San Francisco, CA',
	url: 'https://example.org/',
	geo: {lat: 37.774703, lon: -122.432642, radius: 20},
	categories: ['event'],
	start: [2020, 8, 8, 8, 8],
	duration: {hours: 1, minutes: 30},
	status: 'CONFIRMED',
	sequence: 1,
	productId: GENERATOR,
}, {
	uid: 'b',
	title: 'B', description: 'B.',
	start: [2020, 9, 9, 9, 9],
	duration: {hours: 0, minutes: 45},
	status: 'CONFIRMED',
	sequence: 2,
	productId: GENERATOR,
}]

const getIcs = feedUrl => generateIcs(TITLE, events, feedUrl)

const app = express()
app.use('/feed', feedRoute(getIcs))
app.use('/', aboutRoute(TITLE))

The events array is passed into ics@3 almost unaltered, so check ics's docs for more information on the format.

Optionally, you can pass an options object into generateIcs, whose fields selectively override the following defaults:

{
	// Send a Cache-Control header to let clients and/or shared caches (a.k.a. CDNS)
	// cache the calendar feed. If you set this option to false, it won't be sent.
	// see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control
	cacheControl: true,
	// The number of seconds that a the calendar-feed is allowed to be cached.
	// Note: With ics-service's next major version dump, this will be increased.
	maxAge: 0,
	// Send an ETag header, so that clients don't have to redownload the calendar feed.
	// see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag
	etag: true,
}

Contributing

If you have a question or need support using ics-service, please double-check your code and setup first. If you think you have found a bug or want to propose a feature, use the issues page.

Dependencies (3)

Dev Dependencies (2)

Package Sidebar

Install

npm i ics-service

Weekly Downloads

84

Version

1.4.0

License

ISC

Unpacked Size

11 kB

Total Files

8

Last publish

Collaborators

  • derhuerst