diff --git a/index.js b/index.js index 576d425..564af12 100644 --- a/index.js +++ b/index.js @@ -14,7 +14,18 @@ class IcalExpander { this.jCalData = ICAL.parse(opts.ics); this.component = new ICAL.Component(this.jCalData); - this.events = this.component.getAllSubcomponents('vevent').map(vevent => new ICAL.Event(vevent)); + + const allVEvents = this.component.getAllSubcomponents('vevent'); + this.events = allVEvents.map((vevent) => { + const subEvents = vevent.hasProperty('recurrence-id') + ? null + : allVEvents.filter(subEvent => subEvent !== vevent && subEvent.getFirstPropertyValue('uid') === vevent.getFirstPropertyValue('uid')); + try { + return new ICAL.Event(vevent, { exceptions: subEvents }); + } catch (err) { + return new ICAL.Event(vevent); + } + }); if (this.skipInvalidDates) { this.events = this.events.filter((evt) => {