@openinc/parse-server-opendash
Version:
Parse Server Cloud Code for open.INC Stack.
60 lines (59 loc) • 1.76 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.eventToSchedule = eventToSchedule;
function eventToSchedule(event) {
const recurrence = event?.recurrence;
if (!recurrence)
return undefined;
const pattern = recurrence.pattern;
const range = recurrence.range;
if (!pattern || !range || !pattern.type)
return undefined;
let unit;
switch (pattern.type) {
case "daily":
unit = "days";
break;
case "weekly":
unit = "weeks";
break;
case "absoluteMonthly":
case "relativeMonthly":
unit = "months";
break;
default:
// unsupported recurrence type
return undefined;
}
const interval = typeof pattern.interval === "number" && pattern.interval > 0
? pattern.interval
: 1;
// Prefer explicit range.startDate, fallback to event.start.dateTime
let startData;
if (range?.startDate) {
// range.startDate is YYYY-MM-DD
startData = new Date(range.startDate + "T00:00:00Z");
}
else if (event.start?.dateTime) {
startData = new Date(event.start.dateTime);
}
// For end, prefer range.endDate. If range.type === 'noEnd' leave undefined.
let endData;
if (range?.type === "endDate" && range?.endDate) {
endData = new Date(range.endDate + "T00:00:00Z");
}
else if (event.end?.dateTime) {
endData = new Date(event.end.dateTime);
}
if (!startData)
return undefined;
return {
schedule_type: "timestamp",
timestamp: {
startData,
endData,
number: interval,
unit,
},
};
}