ics-standard-builder

1.0.12 • Public • Published

ICS Standard Builder

npm version

This package is a standards compliant generator of ICS files.

In the end, you will be able to use this package to generate events, to-dos, journal entries, and free/busy entries.

Table of Contents

  1. Examples
  2. Api
        2.1 Builders
            2.1.1 Calendar Builder
            2.1.2 Event Builder
            2.1.3 Timespan Builder
        2.2 Objects
            2.2.1 Attendee
            2.2.2 Conference
            2.2.3 Organizer
        2.3 Constants
            2.3.1 Availability
            2.3.2 Calendar User Type
            2.3.3 Display
            2.3.4 Feature Type
            2.3.5 Role
            2.3.6 Rsvp Type
        2.4 Utility Methods
            2.4.1 formatDate
            2.4.2 validateEmail

Examples

Simple Event

const {
    CalendarBuilder,
    EventBuilder,
    Attendee,
    Organizer,
    Role,
    CalendarUserType,
    RSVPType
} = require('ics-standard-builder')

/*

    The Calendar Builder is the container and the actual generator of the *.ics file

*/
var c = new CalendarBuilder()
    .setUrl('http://www.mycalendar.com')
    .setSource('http://www.mycalendar.com/test.ics')
    .setColor('red')
    .addCategory('Meeting')
    .addCategories('my meeting, you meeting')
    .setName('HOME')

/*

    Now lets build a single event by instantiating an Event Builder
    We can create the bare minimum required for an event

*/
var eb = new EventBuilder()
eb.setDescription('Here is a test description')
    .addOrganizer(new Organizer('testOrganizer@gmail.com', 'Test Organizer', null, 'sent-by@test.com'))
    .addAttendee(
        new Attendee(
            'testAttendee@gmail.com',
            'Test Attendee',
            null,
            'test-delegate-from@test.com',
            'test-delegate-to@test.com',
            'member@test.com',
            'test-sent-by@test.com',
            Role.CHAIR,
            CalendarUserType.INDIVIDUAL,
            RSVPType.TRUE
        )
    )
    .setStart(new Date(2021, 0, 1, 20, 00))
    .setEnd(new Date(2021, 0, 2, 20, 00))
    .setSummary('Party Time')
    .setDescription("We're having a pool party")
    .setImageUrl('http://www.myimage.com/thumbnail.jpg')
    .addConferenceInfo(new Conference(FeatureType.AUDIO, 'Moderator dial-in:tel:+1-412-555-0123,,,654321'))
    .addConferenceInfo(
        new Conference([FeatureType.AUDIO, FeatureType.MODERATOR], 'Moderator dial-in:tel:+1-412-555-0123,,,654321')
    )

//Now that we have described our event, we can add it to the Calendar Builder
c.addEventBuilder(eb)

//All that is left is to call the build the file contents
let icsContent = c.build()

//At this point you use which ever method you want to use to create the file
//For testing I just pushed the console output to a file
console.log(icsContent)

//The call from the terminal then becomes:
// node index.js > test.ics

Builders

Calendar Builder

Reference https://tools.ietf.org/html/rfc5545#section-3.4

Methods

addEventBuilder
builder represents a single event that has been constructed using the Event Builder
Params:

Name Type Required for Calendar
builder EventBuilder Yes

  

build
Compiles configuration and returns a ICalendar compliant string
Params: None
  

addCategory
Adds the category for the calendar
Params:

Name Type Required for Calendar
category string No

  

addCategories
Adds 1 or more categories for the calendar
Params:

Name Type Required for Calendar
categories string array No

  

setColor Sets the color of the calendar in the client
Params:

Name Type Required for Calendar
cssColorName string array No

  
NOTE: This string value must be a valid CSS3 Color Name
Reference: https://developer.mozilla.org/en-US/docs/Web/CSS/color_value   

setDescription
Sets the description of the calendar that can be shown in the client
Params:

Name Type Required for Calendar
description string No

  

setLastModified
Sets the last modified date, allowing the client to check for more recent versions
Params:

Name Type Required for Calendar
date Date No

  

setName
Sets the name of the calendar that can be shown in the client
Params:

Name Type Required for Calendar
name string No

  

setSource
Sets the SOURCE property for the ICalendar core object Params:

Name Type Required for Calendar
url string No

  

setRefreshInterval
Sets the refresh interval determines the frequency of update checking
Params:

Name Type Required for Calendar
intervalType Timespan No
value integer No

  

setUrl Sets the URL property for the ICalendar core object Params:

Name Type Required for Calendar
url string No

  

Event Builder

Reference: https://tools.ietf.org/html/rfc5545#section-3.6.1

addAttendee
Add an attendee to the event object Params:

Name Type Required for Event
attendee Attendee No

  

addAttendees
Add 1 or more attendees to the event object Params:

Name Type Required for Event
attendees Attendee array No

  

addCategory
Adds the category for the calendar
Params:

Name Type Required for Event
category string No

  

addCategories
Adds 1 or more categories for the calendar
Params:

Name Type Required for Event
categories string array No

  

addConferenceInfo
Adds conference reference to the event
Params:

Name Type Required for Event
conference Conference No

  

addOrganizer
Adds an organizer to the event
Params:

Name Type Required for Event
organizer Organizer No

  

addOrganizers
Adds an organizer to the event
Params:

Name Type Required for Event
organizers Organizer array No

  

setColor Sets the color of the event in the client
Params:

Name Type Required for Calendar
cssColorName string No

  
NOTE: This string value must be a valid CSS3 Color Name
Reference: https://developer.mozilla.org/en-US/docs/Web/CSS/color_value   

setDescription Sets a description of the event Params:

Name Type Required for Event
description string No

  

setDuration
Sets a duration of the event Params:

Name Type Required for Event
description string No

NOTE: You cannot specify a duration and a end date time, you must choose 1
  
  
setEnd
Sets the end date of the event Params:

Name Type Required for Event
date Date No

NOTE: You cannot specify a duration and a end date time, you must choose 1

  

setLastModified
Allows to override the last modified date which is defaulted to new Date()
Params:

Name Type Required for Event
date Date No

  

setStart
Sets the start date for the event Params:

Name Type Required for Event
date Date Yes

  

setSummary Sets a summary of the event Params:

Name Type Required for Event
summary string No

  

Timespan Builder

Reference https://tools.ietf.org/html/rfc5545#section-3.3.6

Methods

addSeconds
Add seconds to the timespan Params:

Name Type
second integer

  

addMinutes
Add minutes to the timespan
Params:

Name Type
minutes integer

  

addHours
Add hours to the timespan Params:

Name Type
hours integer

  

addDays
Add days to the timespan
Params:

Name Type
days integer

  

addWeeks
Add weeks to the timespan
Params:

Name Type
weeks integer

  

Objects

Attendee

Properties

Name Type
email string
cn string
directoryEntry string
delegateFromEmail string
delegateToEmail string
member string
sentBy string
userType CalendarUserType
role Role
rsvpType RSVPType

  

Conference

Properties

Name Type
feature string array
label string

  

Organizer

Properties

Name Type
email string
cn string
directoryEntry string
sentBy string

  

Constants

Availability

Name Value
FREE FREE
BUSY BUSY
BUSYUNAVAILABLE BUSY-UNAVAILABLE
BUSYTENTATIVE BUSY-TENTATIVE

  

CalendarUserType

Name Value
INDIVIDUAL INDIVIDUAL
GROUP GROUP
RESOURCE RESOURCE
ROOM ROOM
UNKNOWN UNKNOWN

  

DisplayType

Name Value
BADGE BADGE
GRAPHIC GRAPHIC
FULLSIZE FULLSIZE
THUMBNAIL THUMBNAIL

  

FeatureType

Name Value
AUDIO AUDIO
CHAT CHAT
FEED FEED
MODERATOR MODERATOR
PHONE PHONE
SCREEN SCREEN
VIDEO VIDEO

  

Role

Name Value
CHAIR CHAIR
REQPARTICIPANT REQ-PARTICIPANT
OPTPARTICIPANT OPT-PARTICIPANT
NONPARTICIPANT NON-PARTICIPANT

  

RSVPType

Name Value
TRUE TRUE
FALSE FALSE

  

Utilities

formatDate Formats a valid date to the required date format
Params:

Name Type
date Date

  

isValidEmail Validates an email Params:

Name Type
email string

  

Package Sidebar

Install

npm i ics-standard-builder

Weekly Downloads

1

Version

1.0.12

License

Apache-2.0 License

Unpacked Size

44.3 kB

Total Files

4

Last publish

Collaborators

  • hivie7510