@procedures/ics 0.27.7 → 0.28.0
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/CHANGELOG.md +26 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/ics.d.ts +11 -5
- package/dist/ics.d.ts.map +1 -1
- package/dist/ics.js +58 -18
- package/dist/ics.js.map +1 -1
- package/package.json +2 -2
- package/src/ics.ts +63 -20
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
|
-
/**
|
|
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`)
|
|
24
|
-
* with the same UID. Use `uid` and `recurrenceId` together as
|
|
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
|
|
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
|
|
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
|
-
|
|
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,
|
|
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 === "
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
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,
|
|
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
|
-
|
|
151
|
-
const
|
|
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(
|
|
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 &&
|
|
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":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AA+CzC,MAAM,OAAO,GAAG,SAAS,CAAC;AAC1B,MAAM,MAAM,GAAG,UAAU,CAAC;AAE1B,uFAAuF;AACvF,MAAM,cAAc,GAAG,MAAM,CAAC;AAE9B,MAAM,KAAK,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAE3F,4EAA4E;AAC5E,MAAM,MAAM,GAAG,CAAC,IAAY,EAAY,EAAE,CACxC,IAAI;KACD,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;KAC1B,KAAK,CAAC,OAAO,CAAC;KACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAEvC;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAU,EAAE,CACpD,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,OAAe,EAAE,IAAY,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAElH,MAAM,SAAS,GAAG,CAAC,IAAY,EAAuB,EAAE;IACtD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACpC,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,KAAK,CAAC,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACrD,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,EAAU,EAAE,CAAS,EAAE,CAAS,EAAE,EAAU,EAAE,CAAS,EAAE,QAAgB,EAAU,EAAE,CACzH,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAElE,MAAM,YAAY,GAAG,CAAC,IAAa,EAA+D,EAAE;IAClG,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9E,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,SAAS,CAAC;QACjC,6FAA6F;QAC7F,wFAAwF;QACxF,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACpE,CAAC;IACD,MAAM,CAAC,GAAG,mDAAmD,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1E,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACjC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACpE,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAqD,CAAC;IAClG,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACjE,CAAC,CAAC;AAEF,gEAAgE;AAChE,MAAM,UAAU,GAAG,CACjB,GAAW,EACX,EAAU,EAC+E,EAAE;IAC3F,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QAC3C,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,OAAO;QAChB,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3F,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;IACrE,MAAM,QAAQ,GAA2B,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IACpG,OAAO;QACL,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC;QACf,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;KAClD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,KAAa,EAAsB,EAAE;IACnD,MAAM,CAAC,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5D,CAAC,CAAC;AAEF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEvF;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAc,EAAE;IACnD,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,IAAI,OAAyC,CAAC;IAC9C,+FAA+F;IAC/F,IAAI,OAAO,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;YAC5B,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;YACpB,OAAO,GAAG,EAAE,CAAC;YACb,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACxC,IAAI,KAAK,KAAK,SAAS;oBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO,GAAG,SAAS,CAAC;YACpB,SAAS;QACX,CAAC;QACD,IAAI,OAAO,KAAK,SAAS;YAAE,SAAS;QACpC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,IAAI,KAAK,SAAS;YAAE,SAAS;QACjC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC3B,IAAI,IAAI,KAAK,SAAS;oBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,KAAmC,EAAE,OAA0B,EAAwB,EAAE;IACxG,iEAAiE;IACjE,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACzC,MAAM,GAAG,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC5E,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IAC7G,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;IAC9C,MAAM,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC;IAC1D,MAAM,YAAY,GAAG,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACzF,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;IACnD,MAAM,QAAQ,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAC9F,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC;IACxC,OAAO;QACL,GAAG;QACH,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,YAAY,CAAC;QAClE,KAAK,EAAE,KAAK,CAAC,GAAG;QAChB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACjF,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,WAAW,GAA2B,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AAQhG;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAe,EAAE,MAAkB,EAAgB,EAAE;IACrF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;IACjD,MAAM,UAAU,GAAG,CAAC,EAAU,EAAc,EAAE,CAAC,CAAC;QAC9C,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;QAChB,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC;QACzB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtE,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,GAAiB,EAAE,CAAC,CAAC,OAAO,GAAG,QAAQ,IAAI,UAAU,IAAI,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAExH,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,EAAE,CAAC;IAE7C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,KAAK,CAAC,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,EAAE,CAAC;IACpG,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,KAAK,GACT,QAAQ,KAAK,SAAS;QACpB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI,CAAC,KAAK,CACR,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;YACtB,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY;YACrF,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAC5J,CAAC;IAER,8FAA8F;IAC9F,2EAA2E;IAC3E,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IACtB,MAAM,KAAK,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,MAAM,YAAY,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;IACzF,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE;QAC3C,IAAI,EAAE,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC;QAC5E,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,KAAK,CACf,UAAU,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAChH,CAAC;IACJ,CAAC,CAAC;IACF,MAAM,IAAI,GACR,KAAK;QACL,CAAC,GAAG,EAAE;YACJ,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9B,OAAO;gBACL,CAAC,EAAE,GAAG,CAAC,cAAc,EAAE;gBACvB,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC;gBACzB,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE;gBACnB,CAAC,EAAE,GAAG,CAAC,WAAW,EAAE;gBACpB,EAAE,EAAE,GAAG,CAAC,aAAa,EAAE;gBACvB,CAAC,EAAE,GAAG,CAAC,aAAa,EAAE;aACvB,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;IACP,4FAA4F;IAC5F,iGAAiG;IACjG,MAAM,aAAa,GAAG,CAAC,MAAc,EAAsB,EAAE;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QAC9D,IAAI,IAAI,CAAC,CAAC,GAAG,WAAW;YAAE,OAAO,SAAS,CAAC;QAC3C,OAAO,EAAE,KAAK,SAAS;YACrB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,6FAA6F;IAC7F,oEAAoE;IACpE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,QAAQ,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACnC,4EAA4E;YAC5E,IAAI,EAAE,KAAK,SAAS;gBAAE,SAAS;YAC/B,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,GAAG,QAAQ;gBAAE,MAAM;YAC7G,OAAO,IAAI,CAAC,CAAC;YACb,IAAI,EAAE,GAAG,QAAQ,IAAI,UAAU;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;SAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,GAAG,QAAQ;gBAAE,MAAM;YACvG,IAAI,EAAE,GAAG,QAAQ,IAAI,UAAU;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACnF,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChF,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,cAAc,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;YAC7D,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,GAAG,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,YAAY,CAAC,CAAC;gBACjE,IAAI,EAAE,GAAG,OAAO;oBAAE,SAAS;gBAC3B,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;oBACtG,IAAI,GAAG,IAAI,CAAC;oBACZ,MAAM;gBACR,CAAC;gBACD,OAAO,IAAI,CAAC,CAAC;gBACb,IAAI,EAAE,GAAG,QAAQ,IAAI,UAAU;oBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACtF,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAA2B,EAAE,MAAkB,EAAgB,EAAE;IACnG,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC,CAChH,CAAC;IACF,MAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,UAAU,IAAI,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;YAC1D,MAAM,YAAY,GAChB,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACpG,IAAI,CAAC,YAAY;gBAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAC"}
|
|
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.
|
|
4
|
+
"version": "0.28.0",
|
|
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.
|
|
62
|
+
"@procedures/client": "0.28.0",
|
|
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
|
-
/**
|
|
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`)
|
|
27
|
-
* with the same UID. Use `uid` and `recurrenceId` together as
|
|
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
|
|
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
|
-
|
|
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,
|
|
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 === "
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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>,
|
|
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
|
-
|
|
206
|
-
const
|
|
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(
|
|
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 &&
|
|
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
|
}
|