@procedures/ics 0.27.7 → 0.27.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/ics.d.ts CHANGED
@@ -15,13 +15,17 @@ export interface IcsEvent {
15
15
  /** The recurrence rule (`RRULE`), as the calendar gives it. */
16
16
  readonly rrule?: string | undefined;
17
17
  readonly location?: string | undefined;
18
- /** The dates (`YYYY-MM-DD`) that EXDATE removes from the recurrence. */
18
+ /**
19
+ * The dates (`YYYY-MM-DD`) that EXDATE removes from the recurrence. Each date is in the zone of
20
+ * `tzid`, or in UTC for an event without a TZID. A value in UTC or in another zone changes to it.
21
+ */
19
22
  readonly exdates?: readonly string[] | undefined;
20
23
  /** The TZID of DTSTART. A recurrence keeps the local time of this zone across a DST change. */
21
24
  readonly tzid?: string | undefined;
22
25
  /**
23
- * The RECURRENCE-ID date (`YYYY-MM-DD`). This event replaces that one occurrence of the series
24
- * with the same UID. Use `uid` and `recurrenceId` together as the key of an event.
26
+ * The RECURRENCE-ID date (`YYYY-MM-DD`), in the zone of `tzid` as `exdates`. This event replaces
27
+ * that one occurrence of the series with the same UID. Use `uid` and `recurrenceId` together as
28
+ * the key of an event.
25
29
  */
26
30
  readonly recurrenceId?: string | undefined;
27
31
  /**
@@ -55,7 +59,8 @@ export declare const zonedToUtc: (y: number, mo: number, d: number, h: number, m
55
59
  export declare const isCalendar: (text: string) => boolean;
56
60
  /**
57
61
  * This function gives the events of a calendar. It skips an event without a UID or a start, and
58
- * an event with STATUS:CANCELLED.
62
+ * an event with STATUS:CANCELLED. The properties of a component inside an event (a VALARM) are
63
+ * not properties of the event.
59
64
  */
60
65
  export declare const parseIcs: (text: string) => IcsEvent[];
61
66
  /** A time window: the occurrences that touch it are in the result. */
@@ -71,7 +76,8 @@ export interface TimeWindow {
71
76
  export declare const expandOccurrences: (event: IcsEvent, window: TimeWindow) => Occurrence[];
72
77
  /**
73
78
  * This function gives the occurrences of all events of a calendar in a time window, sorted by
74
- * start. An event with a RECURRENCE-ID replaces the occurrence of its series on that date.
79
+ * start. An event with a RECURRENCE-ID replaces the occurrence of its series on that date, in the
80
+ * zone of the series.
75
81
  */
76
82
  export declare const calendarOccurrences: (events: readonly IcsEvent[], window: TimeWindow) => Occurrence[];
77
83
  //# sourceMappingURL=ics.d.ts.map
package/dist/ics.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ics.d.ts","sourceRoot":"","sources":["../src/ics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,4CAA4C;AAC5C,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,mGAAmG;IACnG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,+FAA+F;IAC/F,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,wEAAwE;IACxE,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACjD,+FAA+F;IAC/F,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C;AAED,mDAAmD;AACnD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC;AAuBD;;;GAGG;AACH,eAAO,MAAM,YAAY,UAAW,MAAM,KAAG,MACoE,CAAC;AAgBlH;;;;GAIG;AACH,eAAO,MAAM,UAAU,MAAO,MAAM,MAAM,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,YAAY,MAAM,KAAG,MACjD,CAAC;AA0DlE,0EAA0E;AAC1E,eAAO,MAAM,UAAU,SAAU,MAAM,KAAG,OAA4C,CAAC;AAEvF;;;GAGG;AACH,eAAO,MAAM,QAAQ,SAAU,MAAM,KAAG,QAAQ,EAgC/C,CAAC;AAoCF,sEAAsE;AACtE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,UAAW,QAAQ,UAAU,UAAU,KAAG,UAAU,EAqHjF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,WAAY,SAAS,QAAQ,EAAE,UAAU,UAAU,KAAG,UAAU,EAa/F,CAAC"}
1
+ {"version":3,"file":"ics.d.ts","sourceRoot":"","sources":["../src/ics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,4CAA4C;AAC5C,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,mGAAmG;IACnG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,+FAA+F;IAC/F,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACjD,+FAA+F;IAC/F,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C;AAED,mDAAmD;AACnD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC;AAuBD;;;GAGG;AACH,eAAO,MAAM,YAAY,UAAW,MAAM,KAAG,MACoE,CAAC;AAgBlH;;;;GAIG;AACH,eAAO,MAAM,UAAU,MAAO,MAAM,MAAM,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,YAAY,MAAM,KAAG,MACjD,CAAC;AAmFlE,0EAA0E;AAC1E,eAAO,MAAM,UAAU,SAAU,MAAM,KAAG,OAA4C,CAAC;AAEvF;;;;GAIG;AACH,eAAO,MAAM,QAAQ,SAAU,MAAM,KAAG,QAAQ,EAuC/C,CAAC;AAwCF,sEAAsE;AACtE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,UAAW,QAAQ,UAAU,UAAU,KAAG,UAAU,EAqHjF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WAAY,SAAS,QAAQ,EAAE,UAAU,UAAU,KAAG,UAAU,EAc/F,CAAC"}
package/dist/ics.js CHANGED
@@ -3,7 +3,7 @@
3
3
  * time window. It has no dependencies. It reads the properties that a calendar of events needs, and
4
4
  * it ignores the others (alarms, attendees, time zone definitions).
5
5
  */
6
- import { zonedInstant } from "./zone.js";
6
+ import { localDate, zonedInstant } from "./zone.js";
7
7
  const HOUR_MS = 3_600_000;
8
8
  const DAY_MS = 86_400_000;
9
9
  /** A recurrence makes at most this number of occurrences. It is a bound for safety. */
@@ -92,26 +92,57 @@ const dateOf = (value) => {
92
92
  const m = /^(\d{4})(\d{2})(\d{2})/.exec(value.trim());
93
93
  return m === null ? undefined : `${m[1]}-${m[2]}-${m[3]}`;
94
94
  };
95
+ /**
96
+ * The date (`YYYY-MM-DD`) of an EXDATE or RECURRENCE-ID value in the zone of its event, or in UTC
97
+ * for an event without a zone. A time in UTC or in another zone changes to that zone. A date, a
98
+ * floating time and a time in the zone of the event keep their own date. (Before, the occurrences
99
+ * of an event with a TZID were compared by their date in UTC: audit O56.)
100
+ */
101
+ const dateInZone = (value, valueTz, eventTz) => {
102
+ const date = dateOf(value);
103
+ const m = /^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})(Z?)$/.exec(value.trim());
104
+ if (date === undefined || m === null)
105
+ return date;
106
+ const utc = m[7] === "Z";
107
+ if (!utc && (valueTz === undefined || valueTz === eventTz))
108
+ return date;
109
+ try {
110
+ const wall = Date.UTC(Number(m[1]), Number(m[2]) - 1, Number(m[3]), Number(m[4]), Number(m[5]), Number(m[6]));
111
+ const instant = utc ? wall : zonedInstant(wall, valueTz);
112
+ return eventTz === undefined ? toIso(instant).slice(0, 10) : localDate(instant, eventTz);
113
+ }
114
+ catch {
115
+ // A zone that Intl does not know: the date as the calendar gives it
116
+ return date;
117
+ }
118
+ };
119
+ /** The date of an occurrence: in the zone of its event, or in UTC for an event without a zone. */
120
+ const occurrenceDate = (ms, tz) => (tz === undefined ? toIso(ms).slice(0, 10) : localDate(ms, tz));
95
121
  /** True when a text is an iCalendar object. A proxy error page is not. */
96
122
  export const isCalendar = (text) => /^\s*BEGIN:VCALENDAR/i.test(text);
97
123
  /**
98
124
  * This function gives the events of a calendar. It skips an event without a UID or a start, and
99
- * an event with STATUS:CANCELLED.
125
+ * an event with STATUS:CANCELLED. The properties of a component inside an event (a VALARM) are
126
+ * not properties of the event.
100
127
  */
101
128
  export const parseIcs = (text) => {
102
129
  const events = [];
103
130
  let current;
104
131
  // EXDATE can occur more than one time, each with a list of dates: keep them apart from the map
105
- let exdates = [];
132
+ let exdateProps = [];
133
+ // The depth of the components inside the event. An alarm has its own UID, SUMMARY and
134
+ // DESCRIPTION. (Before, they replaced those of the event: audit O56.)
135
+ let nested = 0;
106
136
  for (const line of unfold(text)) {
107
137
  if (line === "BEGIN:VEVENT") {
108
138
  current = new Map();
109
- exdates = [];
139
+ exdateProps = [];
140
+ nested = 0;
110
141
  continue;
111
142
  }
112
143
  if (line === "END:VEVENT") {
113
144
  if (current !== undefined) {
114
- const event = eventOf(current, exdates);
145
+ const event = eventOf(current, exdateProps);
115
146
  if (event !== undefined)
116
147
  events.push(event);
117
148
  }
@@ -123,12 +154,17 @@ export const parseIcs = (text) => {
123
154
  const prop = parseProp(line);
124
155
  if (prop === undefined)
125
156
  continue;
126
- if (prop.name === "EXDATE") {
127
- for (const value of prop.value.split(",")) {
128
- const date = dateOf(value);
129
- if (date !== undefined)
130
- exdates.push(date);
131
- }
157
+ if (prop.name === "BEGIN") {
158
+ nested += 1;
159
+ }
160
+ else if (prop.name === "END") {
161
+ nested = Math.max(0, nested - 1);
162
+ }
163
+ else if (nested > 0) {
164
+ continue;
165
+ }
166
+ else if (prop.name === "EXDATE") {
167
+ exdateProps.push(prop);
132
168
  }
133
169
  else {
134
170
  current.set(prop.name, prop);
@@ -136,7 +172,7 @@ export const parseIcs = (text) => {
136
172
  }
137
173
  return events;
138
174
  };
139
- const eventOf = (props, exdates) => {
175
+ const eventOf = (props, exdateProps) => {
140
176
  // UID is a TEXT value (RFC 5545 3.8.4.7), so it can have escapes
141
177
  const uidValue = props.get("UID")?.value;
142
178
  const uid = uidValue === undefined ? undefined : unescapeText(uidValue);
@@ -147,8 +183,10 @@ const eventOf = (props, exdates) => {
147
183
  const endProp = props.get("DTEND");
148
184
  const end = endProp === undefined ? undefined : parseIcsDate(endProp);
149
185
  const location = props.get("LOCATION")?.value;
150
- const recurrenceValue = props.get("RECURRENCE-ID")?.value;
151
- const recurrenceId = recurrenceValue === undefined ? undefined : dateOf(recurrenceValue);
186
+ // EXDATE and RECURRENCE-ID name an occurrence by its date in the zone of the event
187
+ const exdates = exdateProps.flatMap((prop) => prop.value.split(",").flatMap((value) => dateInZone(value, prop.params.get("TZID"), start.tzid) ?? []));
188
+ const recurrenceProp = props.get("RECURRENCE-ID");
189
+ const recurrenceId = recurrenceProp === undefined ? undefined : dateInZone(recurrenceProp.value, recurrenceProp.params.get("TZID"), start.tzid);
152
190
  const sequenceValue = props.get("SEQUENCE")?.value;
153
191
  const sequence = sequenceValue === undefined ? undefined : Number.parseInt(sequenceValue, 10);
154
192
  const lastModified = props.get("LAST-MODIFIED")?.value;
@@ -291,20 +329,22 @@ export const expandOccurrences = (event, window) => {
291
329
  }
292
330
  }
293
331
  }
294
- // EXDATE removes an occurrence by its date
332
+ // EXDATE removes an occurrence by its date in the zone of the event
295
333
  const excluded = new Set(event.exdates ?? []);
296
- return starts.filter((ms) => !excluded.has(toIso(ms).slice(0, 10))).map(occurrence);
334
+ return starts.filter((ms) => !excluded.has(occurrenceDate(ms, tz))).map(occurrence);
297
335
  };
298
336
  /**
299
337
  * This function gives the occurrences of all events of a calendar in a time window, sorted by
300
- * start. An event with a RECURRENCE-ID replaces the occurrence of its series on that date.
338
+ * start. An event with a RECURRENCE-ID replaces the occurrence of its series on that date, in the
339
+ * zone of the series.
301
340
  */
302
341
  export const calendarOccurrences = (events, window) => {
303
342
  const replaced = new Set(events.filter((event) => event.recurrenceId !== undefined).map((event) => `${event.uid}|${event.recurrenceId}`));
304
343
  const out = [];
305
344
  for (const event of events) {
306
345
  for (const occurrence of expandOccurrences(event, window)) {
307
- const replacedHere = event.recurrenceId === undefined && replaced.has(`${event.uid}|${occurrence.start.slice(0, 10)}`);
346
+ const replacedHere = event.recurrenceId === undefined &&
347
+ replaced.has(`${event.uid}|${occurrenceDate(Date.parse(occurrence.start), event.tzid)}`);
308
348
  if (!replacedHere)
309
349
  out.push(occurrence);
310
350
  }
package/dist/ics.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ics.js","sourceRoot":"","sources":["../src/ics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ics.js","sourceRoot":"","sources":["../src/ics.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "@procedures/ics",
4
- "version": "0.27.7",
4
+ "version": "0.27.8",
5
5
  "description": "An iCalendar (RFC 5545) reader and writer without dependencies: the events of a calendar, their occurrences in a time window with the recurrences, and a calendar from events.",
6
6
  "keywords": [
7
7
  "ics",
@@ -59,7 +59,7 @@
59
59
  "provenance": true
60
60
  },
61
61
  "dependencies": {
62
- "@procedures/client": "0.27.7",
62
+ "@procedures/client": "0.27.8",
63
63
  "zod": "^4.6.5"
64
64
  },
65
65
  "devDependencies": {
package/src/ics.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * it ignores the others (alarms, attendees, time zone definitions).
5
5
  */
6
6
 
7
- import { zonedInstant } from "./zone.js";
7
+ import { localDate, zonedInstant } from "./zone.js";
8
8
 
9
9
  /** One event of a calendar (one VEVENT). */
10
10
  export interface IcsEvent {
@@ -18,13 +18,17 @@ export interface IcsEvent {
18
18
  /** The recurrence rule (`RRULE`), as the calendar gives it. */
19
19
  readonly rrule?: string | undefined;
20
20
  readonly location?: string | undefined;
21
- /** The dates (`YYYY-MM-DD`) that EXDATE removes from the recurrence. */
21
+ /**
22
+ * The dates (`YYYY-MM-DD`) that EXDATE removes from the recurrence. Each date is in the zone of
23
+ * `tzid`, or in UTC for an event without a TZID. A value in UTC or in another zone changes to it.
24
+ */
22
25
  readonly exdates?: readonly string[] | undefined;
23
26
  /** The TZID of DTSTART. A recurrence keeps the local time of this zone across a DST change. */
24
27
  readonly tzid?: string | undefined;
25
28
  /**
26
- * The RECURRENCE-ID date (`YYYY-MM-DD`). This event replaces that one occurrence of the series
27
- * with the same UID. Use `uid` and `recurrenceId` together as the key of an event.
29
+ * The RECURRENCE-ID date (`YYYY-MM-DD`), in the zone of `tzid` as `exdates`. This event replaces
30
+ * that one occurrence of the series with the same UID. Use `uid` and `recurrenceId` together as
31
+ * the key of an event.
28
32
  */
29
33
  readonly recurrenceId?: string | undefined;
30
34
  /**
@@ -151,27 +155,57 @@ const dateOf = (value: string): string | undefined => {
151
155
  return m === null ? undefined : `${m[1]}-${m[2]}-${m[3]}`;
152
156
  };
153
157
 
158
+ /**
159
+ * The date (`YYYY-MM-DD`) of an EXDATE or RECURRENCE-ID value in the zone of its event, or in UTC
160
+ * for an event without a zone. A time in UTC or in another zone changes to that zone. A date, a
161
+ * floating time and a time in the zone of the event keep their own date. (Before, the occurrences
162
+ * of an event with a TZID were compared by their date in UTC: audit O56.)
163
+ */
164
+ const dateInZone = (value: string, valueTz: string | undefined, eventTz: string | undefined): string | undefined => {
165
+ const date = dateOf(value);
166
+ const m = /^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})(Z?)$/.exec(value.trim());
167
+ if (date === undefined || m === null) return date;
168
+ const utc = m[7] === "Z";
169
+ if (!utc && (valueTz === undefined || valueTz === eventTz)) return date;
170
+ try {
171
+ const wall = Date.UTC(Number(m[1]), Number(m[2]) - 1, Number(m[3]), Number(m[4]), Number(m[5]), Number(m[6]));
172
+ const instant = utc ? wall : zonedInstant(wall, valueTz as string);
173
+ return eventTz === undefined ? toIso(instant).slice(0, 10) : localDate(instant, eventTz);
174
+ } catch {
175
+ // A zone that Intl does not know: the date as the calendar gives it
176
+ return date;
177
+ }
178
+ };
179
+
180
+ /** The date of an occurrence: in the zone of its event, or in UTC for an event without a zone. */
181
+ const occurrenceDate = (ms: number, tz: string | undefined): string => (tz === undefined ? toIso(ms).slice(0, 10) : localDate(ms, tz));
182
+
154
183
  /** True when a text is an iCalendar object. A proxy error page is not. */
155
184
  export const isCalendar = (text: string): boolean => /^\s*BEGIN:VCALENDAR/i.test(text);
156
185
 
157
186
  /**
158
187
  * This function gives the events of a calendar. It skips an event without a UID or a start, and
159
- * an event with STATUS:CANCELLED.
188
+ * an event with STATUS:CANCELLED. The properties of a component inside an event (a VALARM) are
189
+ * not properties of the event.
160
190
  */
161
191
  export const parseIcs = (text: string): IcsEvent[] => {
162
192
  const events: IcsEvent[] = [];
163
193
  let current: Map<string, IcsProp> | undefined;
164
194
  // EXDATE can occur more than one time, each with a list of dates: keep them apart from the map
165
- let exdates: string[] = [];
195
+ let exdateProps: IcsProp[] = [];
196
+ // The depth of the components inside the event. An alarm has its own UID, SUMMARY and
197
+ // DESCRIPTION. (Before, they replaced those of the event: audit O56.)
198
+ let nested = 0;
166
199
  for (const line of unfold(text)) {
167
200
  if (line === "BEGIN:VEVENT") {
168
201
  current = new Map();
169
- exdates = [];
202
+ exdateProps = [];
203
+ nested = 0;
170
204
  continue;
171
205
  }
172
206
  if (line === "END:VEVENT") {
173
207
  if (current !== undefined) {
174
- const event = eventOf(current, exdates);
208
+ const event = eventOf(current, exdateProps);
175
209
  if (event !== undefined) events.push(event);
176
210
  }
177
211
  current = undefined;
@@ -180,11 +214,14 @@ export const parseIcs = (text: string): IcsEvent[] => {
180
214
  if (current === undefined) continue;
181
215
  const prop = parseProp(line);
182
216
  if (prop === undefined) continue;
183
- if (prop.name === "EXDATE") {
184
- for (const value of prop.value.split(",")) {
185
- const date = dateOf(value);
186
- if (date !== undefined) exdates.push(date);
187
- }
217
+ if (prop.name === "BEGIN") {
218
+ nested += 1;
219
+ } else if (prop.name === "END") {
220
+ nested = Math.max(0, nested - 1);
221
+ } else if (nested > 0) {
222
+ continue;
223
+ } else if (prop.name === "EXDATE") {
224
+ exdateProps.push(prop);
188
225
  } else {
189
226
  current.set(prop.name, prop);
190
227
  }
@@ -192,7 +229,7 @@ export const parseIcs = (text: string): IcsEvent[] => {
192
229
  return events;
193
230
  };
194
231
 
195
- const eventOf = (props: ReadonlyMap<string, IcsProp>, exdates: readonly string[]): IcsEvent | undefined => {
232
+ const eventOf = (props: ReadonlyMap<string, IcsProp>, exdateProps: readonly IcsProp[]): IcsEvent | undefined => {
196
233
  // UID is a TEXT value (RFC 5545 3.8.4.7), so it can have escapes
197
234
  const uidValue = props.get("UID")?.value;
198
235
  const uid = uidValue === undefined ? undefined : unescapeText(uidValue);
@@ -202,8 +239,12 @@ const eventOf = (props: ReadonlyMap<string, IcsProp>, exdates: readonly string[]
202
239
  const endProp = props.get("DTEND");
203
240
  const end = endProp === undefined ? undefined : parseIcsDate(endProp);
204
241
  const location = props.get("LOCATION")?.value;
205
- const recurrenceValue = props.get("RECURRENCE-ID")?.value;
206
- const recurrenceId = recurrenceValue === undefined ? undefined : dateOf(recurrenceValue);
242
+ // EXDATE and RECURRENCE-ID name an occurrence by its date in the zone of the event
243
+ const exdates = exdateProps.flatMap((prop) =>
244
+ prop.value.split(",").flatMap((value) => dateInZone(value, prop.params.get("TZID"), start.tzid) ?? [])
245
+ );
246
+ const recurrenceProp = props.get("RECURRENCE-ID");
247
+ const recurrenceId = recurrenceProp === undefined ? undefined : dateInZone(recurrenceProp.value, recurrenceProp.params.get("TZID"), start.tzid);
207
248
  const sequenceValue = props.get("SEQUENCE")?.value;
208
249
  const sequence = sequenceValue === undefined ? undefined : Number.parseInt(sequenceValue, 10);
209
250
  const lastModified = props.get("LAST-MODIFIED")?.value;
@@ -351,14 +392,15 @@ export const expandOccurrences = (event: IcsEvent, window: TimeWindow): Occurren
351
392
  }
352
393
  }
353
394
 
354
- // EXDATE removes an occurrence by its date
395
+ // EXDATE removes an occurrence by its date in the zone of the event
355
396
  const excluded = new Set(event.exdates ?? []);
356
- return starts.filter((ms) => !excluded.has(toIso(ms).slice(0, 10))).map(occurrence);
397
+ return starts.filter((ms) => !excluded.has(occurrenceDate(ms, tz))).map(occurrence);
357
398
  };
358
399
 
359
400
  /**
360
401
  * This function gives the occurrences of all events of a calendar in a time window, sorted by
361
- * start. An event with a RECURRENCE-ID replaces the occurrence of its series on that date.
402
+ * start. An event with a RECURRENCE-ID replaces the occurrence of its series on that date, in the
403
+ * zone of the series.
362
404
  */
363
405
  export const calendarOccurrences = (events: readonly IcsEvent[], window: TimeWindow): Occurrence[] => {
364
406
  const replaced = new Set(
@@ -368,7 +410,8 @@ export const calendarOccurrences = (events: readonly IcsEvent[], window: TimeWin
368
410
  for (const event of events) {
369
411
  for (const occurrence of expandOccurrences(event, window)) {
370
412
  const replacedHere =
371
- event.recurrenceId === undefined && replaced.has(`${event.uid}|${occurrence.start.slice(0, 10)}`);
413
+ event.recurrenceId === undefined &&
414
+ replaced.has(`${event.uid}|${occurrenceDate(Date.parse(occurrence.start), event.tzid)}`);
372
415
  if (!replacedHere) out.push(occurrence);
373
416
  }
374
417
  }