/** * ics-parser.ts, a pure, dependency-free iCalendar (RFC 5545) reader. * * Vendored on purpose. The SDK's `packages/sdk` ships ZERO third-party runtime * dependencies (workspace packages only, see packages/sdk/package.json), and it * guards that with bundle-budget / browser-compat / no-any gates. Pulling a general * ICS library in for the read-focused subset we actually need would break that * convention for little gain; this focused reader matches repo style and is easy to * hold honest. See the decision record for the vendored-vs-dependency ruling and the * exact supported subset. * * Scope of what this reads (documented, not faked): * - VCALENDAR framing, X-WR-CALNAME for a calendar display name. * - VEVENT: UID, SUMMARY, LOCATION, DESCRIPTION, ORGANIZER, DTSTART, DTEND, RRULE. * - DTSTART/DTEND as VALUE=DATE ('YYYYMMDD') or date-time ('YYYYMMDDTHHMMSS'), * with honest zone anchoring: trailing 'Z' => utc; TZID=... => tzid (wall time * kept, NOT offset-converted, because this build has no tz database); otherwise * floating. RRULE is captured raw and handed to the recurrence expander. * - RFC 5545 line unfolding (a leading space/tab continues the previous line) and * TEXT unescaping (\\n \\, \\; \\, \\\\). * * Everything unrecognised is ignored quietly EXCEPT the two things a caller must be * told about: a VEVENT with no usable DTSTART is `skipped` with a reason, and an * RRULE we do not fully expand is flagged on the event (in rrule.ts), never dropped. * * PURE: no fs, no network, no process globals. Input is text; output is data. */ import type { ParsedCalendar } from './types.js'; /** * Parse .ics text into typed events plus honest skip/diagnostic lists. * * @param text raw .ics content (file body or fetched feed body). */ export declare function parseIcs(text: string): ParsedCalendar; //# sourceMappingURL=ics-parser.d.ts.map