Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
// @flow
import ical from 'ical-generator';
const calendar = ical({
domain: 'foo',
});
ical({
name: '',
});
// $ExpectError - domain should be string
ical({ domain: 1 });
calendar.clear();
const event = calendar.createEvent();
// $ExpectError
calendar.createEvent('event');
(calendar.domain(): string)
// $ExpectError
.populate('interviewerId')
.populate('userId')
const date = moment(interviewDetails.dateTime).format(`${ params.date.format.nice.date }, ${ params.date.format.nice.time }`)
if(invite) {
const mode = params.interview.modes.filter(item => item.key === interviewDetails.mode)[0].name
const subjectAction = {
invite: 'Invitation',
update: 'Updated',
remind: 'Reminder',
}[type]
const subject = `${ interviewDetails.organizationId.name } Interview ${ subjectAction } - ${ date }`
// Calendar
const calendar = ical({
method: 'publish',
domain: interviewDetails.organizationId.domain,
name: subject
})
const event = calendar.createEvent({
domain: interviewDetails.organizationId.domain,
start: moment(interviewDetails.dateTime).toDate(),
end: moment(interviewDetails.dateTime).add(1, 'hour').toDate(),
summary: subject,
location: mode,
description: interviewDetails.note
})
event.organizer({
name: auth.user.name,
email: auth.user.email,
})
export const exportICS = (courses, keys) => {
const cal = ical();
for (const key of keys) {
const course = courses.get(key);
for (const slot of course.get("schedule")) {
const listedStartDay = new Date(course.get("startDate"));
const listedStartWeekday = listedStartDay.getDay();
const listedEndDay = new Date(course.get("endDate"));
// Determine the first day of class. We want to pick the
// weekday that occurs the soonest after (possibly on the same
// day as) the listed start date.
let weekdayDifference = 7;
for (const weekday of slot.get("days")) {
const possibleStartWeekday = dayIndex[weekday];
const possibleWeekdayDifference =
(possibleStartWeekday - listedStartWeekday) % 7;
function calendar({
filename,
title,
schedules,
}: {
filename: string;
title: string;
schedules: Schedule[];
}) {
const timezone = "+03:00"; // EEST
const domain = "https://react-finland.fi";
const cal = ical({ domain, name: title });
if (Array.isArray(schedules)) {
schedules.forEach(({ day, intervals }) => {
intervals.forEach(({ begin, end, sessions }) => {
sessions.forEach(({ title: summary, description, location }) => {
cal.createEvent({
start: new Date(`${day}T${begin}${timezone}`),
end: new Date(`${day}T${end}${timezone}`),
summary,
description,
location: resolveLocation(location),
url: domain,
});
});
});
});
export function downloadAsIcal(
semester: Semester,
timetable: SemTimetableConfigWithLessons,
moduleData: { [ModuleCode]: Module },
) {
const events = iCalForTimetable(semester, timetable, moduleData);
const cal = ical({
domain: 'nusmods.com',
prodId: '//NUSMods//NUSMods//EN',
events,
});
const blob = new Blob([cal.toString()], { type: 'text/plain' });
downloadUrl(blob, 'nusmods_calendar.ics');
return {
type: DOWNLOAD_AS_ICAL,
payload: cal.toString(),
};
}