/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/node-ical@0.26.0/node-ical.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
const fs=require("node:fs"),ical=require("./ical.js"),{getDateKey:getDateKey}=require("./lib/date-utils.js");function promiseCallback(e,t){const n=new Promise(e);if(!t)return n;let a=null,r=null,s=!1;n.then((e=>{r=e,s=!0})).catch((e=>{a=e})).finally((()=>{a?t(a,null):s&&t(null,r)}))}const sync={},async={},autodetect={};function generateDateKey(e,t){if(t){const t=e.getFullYear(),n=e.getMonth()+1,a=e.getDate();return`${t}-${String(n).padStart(2,"0")}-${String(a).padStart(2,"0")}`}return e.toISOString().slice(0,10)}function copyDateMeta(e,t){return t?.tz&&(e.tz=t.tz),t?.dateOnly&&(e.dateOnly=t.dateOnly),e}function createLocalDateFromUTC(e){if(e?.dateOnly){const t=e.getFullYear(),n=e.getMonth(),a=e.getDate();return new Date(t,n,a,0,0,0,0)}const t=e.getUTCFullYear(),n=e.getUTCMonth(),a=e.getUTCDate();return new Date(t,n,a,0,0,0,0)}function getEventDurationMs(e,t){return e?.start&&e?.end?new Date(e.end).getTime()-new Date(e.start).getTime():t?864e5:0}function calculateEndTime(e,t,n,a){const r=t?.start&&t?.end?getEventDurationMs(t,n):a??(n?864e5:0);return new Date(e.getTime()+r)}function processNonRecurringEvent(e,t){const{from:n,to:a,expandOngoing:r}=t,s="date"===e.datetype||Boolean(e.start?.dateOnly),o=getEventDurationMs(e,s);let c=e.start instanceof Date?e.start:new Date(e.start);s&&(c=createLocalDateFromUTC(c));const i=calculateEndTime(c,e,s,o);if(!(r?i>=n&&c<=a:c>=n&&c<=a))return[];const u={start:c,end:i,summary:e.summary||"",isFullDay:s,isRecurring:!1,isOverride:!1,event:e};return copyDateMeta(u.start,e.start),copyDateMeta(u.end,e.end),[u]}function isExcludedByExdate(e,t,n,a){if(!t.exdate)return!1;if(a){for(const e of new Set(Object.values(t.exdate)))if(e instanceof Date&&getDateKey(e)===n)return!0;return!1}return Boolean(t.exdate[e.toISOString()]||t.exdate[n]?.dateOnly)}function validateDateRange(e,t){if(!(e instanceof Date)||Number.isNaN(e.getTime()))throw new TypeError("options.from must be a valid Date object");if(!(t instanceof Date)||Number.isNaN(t.getTime()))throw new TypeError("options.to must be a valid Date object");if(e>t)throw new RangeError("options.from must be before or equal to options.to")}function adjustSearchRange(e,t,n,a,r){let s,o;if(n)s=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())),o=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),23,59,59,999));else{s=e,o=0===t.getHours()&&0===t.getMinutes()&&0===t.getSeconds()?new Date(t.getFullYear(),t.getMonth(),t.getDate(),23,59,59,999):t}return a&&(s=new Date(s.getTime()-r)),{searchFrom:s,searchTo:o}}function buildRecurringInstance(e,t,n,a,r){const{excludeExdates:s,includeOverrides:o}=r,c=generateDateKey(e,n);if(s&&isExcludedByExdate(e,t,c,n))return null;const i=n?null:e.toISOString(),u=o&&(i?t.recurrences?.[i]:t.recurrences?.[c]),l=Boolean(u),d=l?u:t;let g=l&&d.start?d.start instanceof Date?d.start:new Date(d.start):e;n&&(g=createLocalDateFromUTC(g));const f={start:g,end:calculateEndTime(g,d,n,a),summary:d.summary||t.summary||"",isFullDay:n,isRecurring:!0,isOverride:l,event:d};return copyDateMeta(f.start,l?d.start:t.start),copyDateMeta(f.end,d.end||t.end),f}function isInstanceInRange(e,t,n,a){if(e.isFullDay){const r=new Date(e.start.getFullYear(),e.start.getMonth(),e.start.getDate()),s=new Date(t.getFullYear(),t.getMonth(),t.getDate()),o=new Date(n.getFullYear(),n.getMonth(),n.getDate()),c=new Date(e.end.getFullYear(),e.end.getMonth(),e.end.getDate());return a?c>=s&&r<=o:r>=s&&r<=o}return a?e.end>=t&&e.start<=n:e.start>=t&&e.start<=n}function expandRecurringEvent(e,t){const{from:n,to:a,includeOverrides:r=!0,excludeExdates:s=!0,expandOngoing:o=!1}=t;if(validateDateRange(n,a),!e.rrule)return processNonRecurringEvent(e,{from:n,to:a,expandOngoing:o});const c="date"===e.datetype||Boolean(e.start?.dateOnly),i=getEventDurationMs(e,c),{searchFrom:u,searchTo:l}=adjustSearchRange(n,a,c,o,i),d=e.rrule.between(u,l,!0),g=[];for(const t of d){const u=buildRecurringInstance(t,e,c,i,{excludeExdates:s,includeOverrides:r});u&&isInstanceInRange(u,n,a,o)&&g.push(u)}return g.toSorted(((e,t)=>e.start-t.start))}async.fromURL=function(e,t,n){return"function"==typeof t&&void 0===n&&(n=t,t=void 0),promiseCallback(((n,a)=>{const r=t&&"object"==typeof t?{...t}:{};fetch(e,r).then((e=>{if(!e.ok)throw new Error(`${e.status} ${e.statusText}`);return e.text()})).then((e=>{ical.parseICS(e,((e,t)=>{e?a(e):n(t)}))})).catch((e=>{a(e)}))}),n)},async.parseFile=function(e,t){return promiseCallback(((t,n)=>{fs.readFile(e,"utf8",((e,a)=>{e?n(e):ical.parseICS(a,((e,a)=>{e?n(e):t(a)}))}))}),t)},async.parseICS=function(e,t){return promiseCallback(((t,n)=>{ical.parseICS(e,((e,a)=>{e?n(e):t(a)}))}),t)},sync.parseFile=function(e){const t=fs.readFileSync(e,"utf8");return ical.parseICS(t)},sync.parseICS=function(e){return ical.parseICS(e)},autodetect.parseFile=function(e,t){if(!t)return sync.parseFile(e);async.parseFile(e,t)},autodetect.parseICS=function(e,t){if(!t)return sync.parseICS(e);async.parseICS(e,t)},module.exports={fromURL:async.fromURL,parseFile:autodetect.parseFile,parseICS:autodetect.parseICS,sync:sync,async:async,expandRecurringEvent:expandRecurringEvent,objectHandlers:ical.objectHandlers,handleObject:ical.handleObject,parseLines:ical.parseLines};
//# sourceMappingURL=/sm/6ab1e80f05aab528fca86b39fba85154531c4ea2a9d49355378f825cb02c9612.map