ical-generator 4.0.0-develop.2 → 4.1.0-develop.1

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/index.d.ts CHANGED
@@ -408,6 +408,11 @@ declare enum ICalAlarmType {
408
408
  display = "display",
409
409
  audio = "audio"
410
410
  }
411
+ declare const ICalAlarmRelatesTo: {
412
+ readonly end: "END";
413
+ readonly start: "START";
414
+ };
415
+ type ICalAlarmRelatesTo = typeof ICalAlarmRelatesTo[keyof typeof ICalAlarmRelatesTo];
411
416
  type ICalAlarmTypeValue = keyof ICalAlarmType;
412
417
  interface ICalAttachment {
413
418
  uri: string;
@@ -416,6 +421,7 @@ interface ICalAttachment {
416
421
  interface ICalAlarmData {
417
422
  type?: ICalAlarmType | null;
418
423
  trigger?: number | ICalDateTimeValue | null;
424
+ relatesTo?: ICalAlarmRelatesTo | null;
419
425
  triggerBefore?: number | ICalDateTimeValue | null;
420
426
  triggerAfter?: number | ICalDateTimeValue | null;
421
427
  repeat?: number | null;
@@ -430,6 +436,7 @@ interface ICalAlarmData {
430
436
  interface ICalAlarmJSONData {
431
437
  type: ICalAlarmType | null;
432
438
  trigger: string | number | null;
439
+ relatesTo: ICalAlarmRelatesTo | null;
433
440
  repeat: number | null;
434
441
  interval: number | null;
435
442
  attach: ICalAttachment | null;
@@ -508,6 +515,37 @@ declare class ICalAlarm {
508
515
  * @since 0.2.1
509
516
  */
510
517
  trigger(trigger: number | ICalDateTimeValue | Date | null): this;
518
+ /**
519
+ * Get to which time alarm trigger relates to.
520
+ * Can be either `START` or `END`. If the value is
521
+ * `START` the alarm is triggerd relative to the event start time.
522
+ * If the value is `END` the alarm is triggerd relative to the event end time
523
+ *
524
+ * @since 4.0.1
525
+ */
526
+ relatesTo(): ICalAlarmRelatesTo | null;
527
+ /**
528
+ * Use this method to set to which time alarm trigger relates to.
529
+ * Works only if trigger is a `number`
530
+ *
531
+ * ```javascript
532
+ * const cal = ical();
533
+ * const event = cal.createEvent();
534
+ * const alarm = cal.createAlarm();
535
+ *
536
+ * alarm.trigger(600); // -> 10 minutes before event starts
537
+ *
538
+ * alarm.relatesTo('START'); // -> 10 minutes before event starts
539
+ * alarm.relatesTo('END'); // -> 10 minutes before event ends
540
+ *
541
+ * alarm.trigger(-600); // -> 10 minutes after event starts
542
+ *
543
+ * alarm.relatesTo('START'); // -> 10 minutes after event starts
544
+ * alarm.relatesTo('END'); // -> 10 minutes after event ends
545
+ * ```
546
+ * @since 4.0.1
547
+ */
548
+ relatesTo(relatesTo: ICalAlarmRelatesTo | null): this;
511
549
  /**
512
550
  * Get the trigger time for the alarm. Can either
513
551
  * be a date and time value ([[`ICalDateTimeValue`]]) or
package/dist/index.js CHANGED
@@ -1,23 +1,24 @@
1
- "use strict";var H=Object.create;var x=Object.defineProperty;var W=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var X=Object.getPrototypeOf,Z=Object.prototype.hasOwnProperty;var Q=(n,t)=>{for(var e in t)x(n,e,{get:t[e],enumerable:!0})},j=(n,t,e,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of q(t))!Z.call(n,i)&&i!==e&&x(n,i,{get:()=>t[i],enumerable:!(a=W(t,i))||a.enumerable});return n};var K=(n,t,e)=>(e=n!=null?H(X(n)):{},j(t||!n||!n.__esModule?x(e,"default",{value:n,enumerable:!0}):e,n)),$=n=>j(x({},"__esModule",{value:!0}),n);var at={};Q(at,{ICalAlarm:()=>C,ICalAlarmType:()=>U,ICalAttendee:()=>u,ICalAttendeeRole:()=>V,ICalAttendeeStatus:()=>L,ICalAttendeeType:()=>z,ICalCalendar:()=>D,ICalCalendarMethod:()=>Y,ICalCategory:()=>I,ICalEvent:()=>p,ICalEventBusyStatus:()=>B,ICalEventClass:()=>k,ICalEventRepeatingFreq:()=>R,ICalEventStatus:()=>P,ICalEventTransparency:()=>F,ICalWeekday:()=>A,default:()=>nt,escape:()=>l,foldLines:()=>N,formatDate:()=>d,formatDateTZ:()=>E});module.exports=$(at);function d(n,t,e,a){if(n!=null&&n.startsWith("/")&&(n=n.substr(1)),typeof t=="string"||t instanceof Date){let i=new Date(t),s=i.getUTCFullYear()+String(i.getUTCMonth()+1).padStart(2,"0")+i.getUTCDate().toString().padStart(2,"0");return n&&(s=i.getFullYear()+String(i.getMonth()+1).padStart(2,"0")+i.getDate().toString().padStart(2,"0")),e?s:n?(s+="T"+i.getHours().toString().padStart(2,"0")+i.getMinutes().toString().padStart(2,"0")+i.getSeconds().toString().padStart(2,"0"),s):(s+="T"+i.getUTCHours().toString().padStart(2,"0")+i.getUTCMinutes().toString().padStart(2,"0")+i.getUTCSeconds().toString().padStart(2,"0")+(a?"":"Z"),s)}else if(O(t)){let i=n?_(t)&&!t.tz()?t.clone().tz(n):t:a?t:t.utc();return i.format("YYYYMMDD")+(e?"":"T"+i.format("HHmmss")+(a||n?"":"Z"))}else if(w(t)){let i=n?t.setZone(n):a?t:t.setZone("utc");return i.toFormat("yyyyLLdd")+(e?"":"T"+i.toFormat("HHmmss")+(a||n?"":"Z"))}else{let i=t;if(n)i=typeof t.tz=="function"?t.tz(n):t;else if(!a)if(typeof t.utc=="function")i=t.utc();else throw new Error("Unable to convert dayjs object to UTC value: UTC plugin is not available!");return i.format("YYYYMMDD")+(e?"":"T"+i.format("HHmmss")+(a||n?"":"Z"))}}function E(n,t,e,a){let i="",s=(a==null?void 0:a.floating)||!1;return a!=null&&a.timezone&&(i=";TZID="+a.timezone,s=!0),t+i+":"+d(n,e,!1,s)}function l(n,t){return String(n).replace(t?/[\\"]/g:/[\\;,]/g,function(e){return"\\"+e}).replace(/(?:\r\n|\r|\n)/g,"\\n")}function N(n){return n.split(`\r
1
+ function d(n,t,e,a){if(n!=null&&n.startsWith("/")&&(n=n.substr(1)),typeof t=="string"||t instanceof Date){let i=new Date(t),s=i.getUTCFullYear()+String(i.getUTCMonth()+1).padStart(2,"0")+i.getUTCDate().toString().padStart(2,"0");return n&&(s=i.getFullYear()+String(i.getMonth()+1).padStart(2,"0")+i.getDate().toString().padStart(2,"0")),e?s:n?(s+="T"+i.getHours().toString().padStart(2,"0")+i.getMinutes().toString().padStart(2,"0")+i.getSeconds().toString().padStart(2,"0"),s):(s+="T"+i.getUTCHours().toString().padStart(2,"0")+i.getUTCMinutes().toString().padStart(2,"0")+i.getUTCSeconds().toString().padStart(2,"0")+(a?"":"Z"),s)}else if(R(t)){let i=n?Y(t)&&!t.tz()?t.clone().tz(n):t:a?t:t.utc();return i.format("YYYYMMDD")+(e?"":"T"+i.format("HHmmss")+(a||n?"":"Z"))}else if(v(t)){let i=n?t.setZone(n):a?t:t.setZone("utc");return i.toFormat("yyyyLLdd")+(e?"":"T"+i.toFormat("HHmmss")+(a||n?"":"Z"))}else{let i=t;if(n)i=typeof t.tz=="function"?t.tz(n):t;else if(!a)if(typeof t.utc=="function")i=t.utc();else throw new Error("Unable to convert dayjs object to UTC value: UTC plugin is not available!");return i.format("YYYYMMDD")+(e?"":"T"+i.format("HHmmss")+(a||n?"":"Z"))}}function b(n,t,e,a){let i="",s=(a==null?void 0:a.floating)||!1;return a!=null&&a.timezone&&(i=";TZID="+a.timezone,s=!0),t+i+":"+d(n,e,!1,s)}function l(n,t){return String(n).replace(t?/[\\"]/g:/[\\;,]/g,function(e){return"\\"+e}).replace(/(?:\r\n|\r|\n)/g,"\\n")}function O(n){return n.split(`\r
2
2
  `).map(function(t){let e="",a=0;for(let i=0;i<t.length;i++){let s=t.charAt(i);s>="\uD800"&&s<="\uDBFF"&&(s+=t.charAt(++i));let c=new TextEncoder().encode(s).length;a+=c,a>74&&(e+=`\r
3
3
  `,a=c),e+=s}return e}).join(`\r
4
- `)}function o(n,t,e){if(Array.isArray(t))n.x=t.map(a=>{if(Array.isArray(a))return a;if(typeof a.key!="string"||typeof a.value!="string")throw new Error("Either key or value is not a string!");if(a.key.substr(0,2)!=="X-")throw new Error("Key has to start with `X-`!");return[a.key,a.value]});else if(typeof t=="object")n.x=Object.entries(t).map(([a,i])=>{if(typeof a!="string"||typeof i!="string")throw new Error("Either key or value is not a string!");if(a.substr(0,2)!=="X-")throw new Error("Key has to start with `X-`!");return[a,i]});else if(typeof t=="string"&&typeof e=="string"){if(t.substr(0,2)!=="X-")throw new Error("Key has to start with `X-`!");n.x.push([t,e])}else return n.x.map(a=>({key:a[0],value:a[1]}))}function T(n){let t=n.x.map(([e,a])=>e.toUpperCase()+":"+l(a,!1)).join(`\r
4
+ `)}function u(n,t,e){if(Array.isArray(t))n.x=t.map(a=>{if(Array.isArray(a))return a;if(typeof a.key!="string"||typeof a.value!="string")throw new Error("Either key or value is not a string!");if(a.key.substr(0,2)!=="X-")throw new Error("Key has to start with `X-`!");return[a.key,a.value]});else if(typeof t=="object")n.x=Object.entries(t).map(([a,i])=>{if(typeof a!="string"||typeof i!="string")throw new Error("Either key or value is not a string!");if(a.substr(0,2)!=="X-")throw new Error("Key has to start with `X-`!");return[a,i]});else if(typeof t=="string"&&typeof e=="string"){if(t.substr(0,2)!=="X-")throw new Error("Key has to start with `X-`!");n.x.push([t,e])}else return n.x.map(a=>({key:a[0],value:a[1]}))}function D(n){let t=n.x.map(([e,a])=>e.toUpperCase()+":"+l(a,!1)).join(`\r
5
5
  `);return t.length?t+`\r
6
- `:""}function b(n,t){let e=null;if(typeof t=="string"){let a=t.match(/^(.+) ?<([^>]+)>$/);a?e={name:a[1].trim(),email:a[2].trim()}:t.includes("@")&&(e={name:t.trim(),email:t.trim()})}else typeof t=="object"&&(e={name:t.name,email:t.email,mailto:t.mailto,sentBy:t.sentBy});if(!e&&typeof t=="string")throw new Error("`"+n+"` isn't formated correctly. See https://sebbo2002.github.io/ical-generator/develop/reference/interfaces/ICalOrganizer.html");if(!e)throw new Error("`"+n+"` needs to be a valid formed string or an object. See https://sebbo2002.github.io/ical-generator/develop/reference/interfaces/ICalOrganizer.html");if(!e.name)throw new Error("`"+n+".name` is empty!");return e}function h(n,t){let e=Object.values(n),a=String(t).toUpperCase();if(!a||!e.includes(a))throw new Error(`Input must be one of the following: ${e.join(", ")}`);return a}function f(n,t){if(n instanceof Date&&isNaN(n.getTime())||typeof n=="string"&&isNaN(new Date(n).getTime()))throw new Error(`\`${t}\` has to be a valid date!`);if(n instanceof Date||typeof n=="string"||w(n)&&n.isValid===!0||(O(n)||tt(n))&&n.isValid())return n;throw new Error(`\`${t}\` has to be a valid date!`)}function v(n){return typeof n=="string"||n instanceof Date?new Date(n):w(n)?n.toJSDate():n.toDate()}function O(n){return n!=null&&n._isAMomentObject!=null}function _(n){return O(n)&&"tz"in n&&typeof n.tz=="function"}function tt(n){return typeof n=="object"&&n!==null&&!(n instanceof Date)&&!O(n)&&!w(n)}function w(n){return typeof n=="object"&&n!==null&&"toJSDate"in n&&typeof n.toJSDate=="function"}function J(n){return n!==null&&typeof n=="object"&&typeof n.asSeconds=="function"}function M(n){return n!==null&&typeof n=="object"&&typeof n.between=="function"&&typeof n.toString=="function"}function m(n){return n?typeof n=="string"?n:n.toJSON():null}function y(n){let t="";return n<0&&(t="-",n*=-1),t+="P",n>=86400&&(t+=Math.floor(n/86400)+"D",n%=86400),!n&&t.length>1||(t+="T",n>=3600&&(t+=Math.floor(n/3600)+"H",n%=3600),n>=60&&(t+=Math.floor(n/60)+"M",n%=60),n>0?t+=n+"S":t.length<=2&&(t+="0S")),t}var G=K(require("uuid-random"));var V=(i=>(i.CHAIR="CHAIR",i.REQ="REQ-PARTICIPANT",i.OPT="OPT-PARTICIPANT",i.NON="NON-PARTICIPANT",i))(V||{}),L=(s=>(s.ACCEPTED="ACCEPTED",s.TENTATIVE="TENTATIVE",s.DECLINED="DECLINED",s.DELEGATED="DELEGATED",s.NEEDSACTION="NEEDS-ACTION",s))(L||{}),z=(s=>(s.INDIVIDUAL="INDIVIDUAL",s.GROUP="GROUP",s.RESOURCE="RESOURCE",s.ROOM="ROOM",s.UNKNOWN="UNKNOWN",s))(z||{}),u=class{constructor(t,e){if(this.data={name:null,email:null,mailto:null,sentBy:null,status:null,role:"REQ-PARTICIPANT",rsvp:null,type:null,delegatedTo:null,delegatedFrom:null,x:[]},this.event=e,!this.event)throw new Error("`event` option required!");t.name!==void 0&&this.name(t.name),t.email!==void 0&&this.email(t.email),t.mailto!==void 0&&this.mailto(t.mailto),t.sentBy!==void 0&&this.sentBy(t.sentBy),t.status!==void 0&&this.status(t.status),t.role!==void 0&&this.role(t.role),t.rsvp!==void 0&&this.rsvp(t.rsvp),t.type!==void 0&&this.type(t.type),t.delegatedTo!==void 0&&this.delegatedTo(t.delegatedTo),t.delegatedFrom!==void 0&&this.delegatedFrom(t.delegatedFrom),t.delegatesTo&&this.delegatesTo(t.delegatesTo),t.delegatesFrom&&this.delegatesFrom(t.delegatesFrom),t.x!==void 0&&this.x(t.x)}name(t){return t===void 0?this.data.name:(this.data.name=t||null,this)}email(t){return t?(this.data.email=t,this):this.data.email}mailto(t){return t===void 0?this.data.mailto:(this.data.mailto=t||null,this)}sentBy(t){return t?(this.data.sentBy=t,this):this.data.sentBy}role(t){return t===void 0?this.data.role:(this.data.role=h(V,t),this)}rsvp(t){return t===void 0?this.data.rsvp:t===null?(this.data.rsvp=null,this):(this.data.rsvp=!!t,this)}status(t){return t===void 0?this.data.status:t?(this.data.status=h(L,t),this):(this.data.status=null,this)}type(t){return t===void 0?this.data.type:t?(this.data.type=h(z,t),this):(this.data.type=null,this)}delegatedTo(t){return t===void 0?this.data.delegatedTo:t?(typeof t=="string"?this.data.delegatedTo=new u(b("delegatedTo",t),this.event):t instanceof u?this.data.delegatedTo=t:this.data.delegatedTo=new u(t,this.event),this.data.status="DELEGATED",this):(this.data.delegatedTo=null,this.data.status==="DELEGATED"&&(this.data.status=null),this)}delegatedFrom(t){return t===void 0?this.data.delegatedFrom:(t?typeof t=="string"?this.data.delegatedFrom=new u(b("delegatedFrom",t),this.event):t instanceof u?this.data.delegatedFrom=t:this.data.delegatedFrom=new u(t,this.event):this.data.delegatedFrom=null,this)}delegatesTo(t){let e=t instanceof u?t:this.event.createAttendee(t);return this.delegatedTo(e),e.delegatedFrom(this),e}delegatesFrom(t){let e=t instanceof u?t:this.event.createAttendee(t);return this.delegatedFrom(e),e.delegatedTo(this),e}x(t,e){if(t===void 0)return o(this.data);if(typeof t=="string"&&typeof e=="string")o(this.data,t,e);else if(typeof t=="object")o(this.data,t);else throw new Error("Either key or value is not a string!");return this}toJSON(){var t,e;return Object.assign({},this.data,{delegatedTo:((t=this.data.delegatedTo)==null?void 0:t.email())||null,delegatedFrom:((e=this.data.delegatedFrom)==null?void 0:e.email())||null,x:this.x()})}toString(){let t="ATTENDEE";if(!this.data.email)throw new Error("No value for `email` in ICalAttendee given!");return t+=";ROLE="+this.data.role,this.data.type&&(t+=";CUTYPE="+this.data.type),this.data.status&&(t+=";PARTSTAT="+this.data.status),this.data.rsvp!==null&&(t+=";RSVP="+this.data.rsvp.toString().toUpperCase()),this.data.sentBy!==null&&(t+=';SENT-BY="mailto:'+this.data.sentBy+'"'),this.data.delegatedTo&&(t+=';DELEGATED-TO="'+this.data.delegatedTo.email()+'"'),this.data.delegatedFrom&&(t+=';DELEGATED-FROM="'+this.data.delegatedFrom.email()+'"'),this.data.name&&(t+=';CN="'+l(this.data.name,!0)+'"'),this.data.email&&this.data.mailto&&(t+=";EMAIL="+l(this.data.email,!1)),this.data.x.length&&(t+=";"+this.data.x.map(([e,a])=>e.toUpperCase()+"="+l(a,!1)).join(";")),t+=":MAILTO:"+l(this.data.mailto||this.data.email,!1)+`\r
7
- `,t}};var U=(e=>(e.display="display",e.audio="audio",e))(U||{}),C=class{constructor(t,e){if(this.data={type:null,trigger:null,repeat:null,interval:null,attach:null,description:null,x:[]},this.event=e,!e)throw new Error("`event` option required!");t.type!==void 0&&this.type(t.type),t.trigger!==void 0&&this.trigger(t.trigger),t.triggerBefore!==void 0&&this.triggerBefore(t.triggerBefore),t.triggerAfter!==void 0&&this.triggerAfter(t.triggerAfter),t.repeat!==void 0&&this.repeat(t.repeat),t.interval!==void 0&&this.interval(t.interval),t.attach!==void 0&&this.attach(t.attach),t.description!==void 0&&this.description(t.description),t.x!==void 0&&this.x(t.x)}type(t){if(t===void 0)return this.data.type;if(!t)return this.data.type=null,this;if(!Object.keys(U).includes(t))throw new Error("`type` is not correct, must be either `display` or `audio`!");return this.data.type=t,this}trigger(t){if(t===void 0&&typeof this.data.trigger=="number")return-1*this.data.trigger;if(t===void 0&&this.data.trigger)return this.data.trigger;if(t===void 0)return null;if(!t)this.data.trigger=null;else if(typeof t=="number"&&isFinite(t))this.data.trigger=-1*t;else{if(typeof t=="number")throw new Error("`trigger` is not correct, must be a finite number or a supported date!");this.data.trigger=f(t,"trigger")}return this}triggerAfter(t){return t===void 0?this.data.trigger:this.trigger(typeof t=="number"?-1*t:t)}triggerBefore(t){return t===void 0?this.trigger():this.trigger(t)}repeat(t){if(t===void 0)return this.data.repeat;if(!t)return this.data.repeat=null,this;if(typeof t!="number"||!isFinite(t))throw new Error("`repeat` is not correct, must be numeric!");return this.data.repeat=t,this}interval(t){if(t===void 0)return this.data.interval||null;if(!t)return this.data.interval=null,this;if(typeof t!="number"||!isFinite(t))throw new Error("`interval` is not correct, must be numeric!");return this.data.interval=t,this}attach(t){if(t===void 0)return this.data.attach;if(!t)return this.data.attach=null,this;let e=null;if(typeof t=="string")e={uri:t,mime:null};else if(typeof t=="object")e={uri:t.uri,mime:t.mime||null};else throw new Error("`attachment` needs to be a valid formed string or an object. See https://sebbo2002.github.io/ical-generator/develop/reference/classes/ICalAlarm.html#attach");if(!e.uri)throw new Error("`attach.uri` is empty!");return this.data.attach={uri:e.uri,mime:e.mime},this}description(t){return t===void 0?this.data.description:t?(this.data.description=t,this):(this.data.description=null,this)}x(t,e){if(t===void 0)return o(this.data);if(typeof t=="string"&&typeof e=="string")o(this.data,t,e);else if(typeof t=="object")o(this.data,t);else throw new Error("Either key or value is not a string!");return this}toJSON(){let t=this.trigger();return Object.assign({},this.data,{trigger:typeof t=="number"?t:m(t),x:this.x()})}toString(){let t=`BEGIN:VALARM\r
6
+ `:""}function T(n,t){let e=null;if(typeof t=="string"){let a=t.match(/^(.+) ?<([^>]+)>$/);a?e={name:a[1].trim(),email:a[2].trim()}:t.includes("@")&&(e={name:t.trim(),email:t.trim()})}else typeof t=="object"&&(e={name:t.name,email:t.email,mailto:t.mailto,sentBy:t.sentBy});if(!e&&typeof t=="string")throw new Error("`"+n+"` isn't formated correctly. See https://sebbo2002.github.io/ical-generator/develop/reference/interfaces/ICalOrganizer.html");if(!e)throw new Error("`"+n+"` needs to be a valid formed string or an object. See https://sebbo2002.github.io/ical-generator/develop/reference/interfaces/ICalOrganizer.html");if(!e.name)throw new Error("`"+n+".name` is empty!");return e}function h(n,t){let e=Object.values(n),a=String(t).toUpperCase();if(!a||!e.includes(a))throw new Error(`Input must be one of the following: ${e.join(", ")}`);return a}function f(n,t){if(n instanceof Date&&isNaN(n.getTime())||typeof n=="string"&&isNaN(new Date(n).getTime()))throw new Error(`\`${t}\` has to be a valid date!`);if(n instanceof Date||typeof n=="string"||v(n)&&n.isValid===!0||(R(n)||j(n))&&n.isValid())return n;throw new Error(`\`${t}\` has to be a valid date!`)}function A(n){return typeof n=="string"||n instanceof Date?new Date(n):v(n)?n.toJSDate():n.toDate()}function R(n){return n!=null&&n._isAMomentObject!=null}function Y(n){return R(n)&&"tz"in n&&typeof n.tz=="function"}function j(n){return typeof n=="object"&&n!==null&&!(n instanceof Date)&&!R(n)&&!v(n)}function v(n){return typeof n=="object"&&n!==null&&"toJSDate"in n&&typeof n.toJSDate=="function"}function k(n){return n!==null&&typeof n=="object"&&typeof n.asSeconds=="function"}function x(n){return n!==null&&typeof n=="object"&&typeof n.between=="function"&&typeof n.toString=="function"}function m(n){return n?typeof n=="string"?n:n.toJSON():null}function C(n){let t="";return n<0&&(t="-",n*=-1),t+="P",n>=86400&&(t+=Math.floor(n/86400)+"D",n%=86400),!n&&t.length>1||(t+="T",n>=3600&&(t+=Math.floor(n/3600)+"H",n%=3600),n>=60&&(t+=Math.floor(n/60)+"M",n%=60),n>0?t+=n+"S":t.length<=2&&(t+="0S")),t}import G from"uuid-random";var w=(i=>(i.CHAIR="CHAIR",i.REQ="REQ-PARTICIPANT",i.OPT="OPT-PARTICIPANT",i.NON="NON-PARTICIPANT",i))(w||{}),M=(s=>(s.ACCEPTED="ACCEPTED",s.TENTATIVE="TENTATIVE",s.DECLINED="DECLINED",s.DELEGATED="DELEGATED",s.NEEDSACTION="NEEDS-ACTION",s))(M||{}),V=(s=>(s.INDIVIDUAL="INDIVIDUAL",s.GROUP="GROUP",s.RESOURCE="RESOURCE",s.ROOM="ROOM",s.UNKNOWN="UNKNOWN",s))(V||{}),o=class{constructor(t,e){if(this.data={name:null,email:null,mailto:null,sentBy:null,status:null,role:"REQ-PARTICIPANT",rsvp:null,type:null,delegatedTo:null,delegatedFrom:null,x:[]},this.event=e,!this.event)throw new Error("`event` option required!");t.name!==void 0&&this.name(t.name),t.email!==void 0&&this.email(t.email),t.mailto!==void 0&&this.mailto(t.mailto),t.sentBy!==void 0&&this.sentBy(t.sentBy),t.status!==void 0&&this.status(t.status),t.role!==void 0&&this.role(t.role),t.rsvp!==void 0&&this.rsvp(t.rsvp),t.type!==void 0&&this.type(t.type),t.delegatedTo!==void 0&&this.delegatedTo(t.delegatedTo),t.delegatedFrom!==void 0&&this.delegatedFrom(t.delegatedFrom),t.delegatesTo&&this.delegatesTo(t.delegatesTo),t.delegatesFrom&&this.delegatesFrom(t.delegatesFrom),t.x!==void 0&&this.x(t.x)}name(t){return t===void 0?this.data.name:(this.data.name=t||null,this)}email(t){return t?(this.data.email=t,this):this.data.email}mailto(t){return t===void 0?this.data.mailto:(this.data.mailto=t||null,this)}sentBy(t){return t?(this.data.sentBy=t,this):this.data.sentBy}role(t){return t===void 0?this.data.role:(this.data.role=h(w,t),this)}rsvp(t){return t===void 0?this.data.rsvp:t===null?(this.data.rsvp=null,this):(this.data.rsvp=!!t,this)}status(t){return t===void 0?this.data.status:t?(this.data.status=h(M,t),this):(this.data.status=null,this)}type(t){return t===void 0?this.data.type:t?(this.data.type=h(V,t),this):(this.data.type=null,this)}delegatedTo(t){return t===void 0?this.data.delegatedTo:t?(typeof t=="string"?this.data.delegatedTo=new o(T("delegatedTo",t),this.event):t instanceof o?this.data.delegatedTo=t:this.data.delegatedTo=new o(t,this.event),this.data.status="DELEGATED",this):(this.data.delegatedTo=null,this.data.status==="DELEGATED"&&(this.data.status=null),this)}delegatedFrom(t){return t===void 0?this.data.delegatedFrom:(t?typeof t=="string"?this.data.delegatedFrom=new o(T("delegatedFrom",t),this.event):t instanceof o?this.data.delegatedFrom=t:this.data.delegatedFrom=new o(t,this.event):this.data.delegatedFrom=null,this)}delegatesTo(t){let e=t instanceof o?t:this.event.createAttendee(t);return this.delegatedTo(e),e.delegatedFrom(this),e}delegatesFrom(t){let e=t instanceof o?t:this.event.createAttendee(t);return this.delegatedFrom(e),e.delegatedTo(this),e}x(t,e){if(t===void 0)return u(this.data);if(typeof t=="string"&&typeof e=="string")u(this.data,t,e);else if(typeof t=="object")u(this.data,t);else throw new Error("Either key or value is not a string!");return this}toJSON(){var t,e;return Object.assign({},this.data,{delegatedTo:((t=this.data.delegatedTo)==null?void 0:t.email())||null,delegatedFrom:((e=this.data.delegatedFrom)==null?void 0:e.email())||null,x:this.x()})}toString(){let t="ATTENDEE";if(!this.data.email)throw new Error("No value for `email` in ICalAttendee given!");return t+=";ROLE="+this.data.role,this.data.type&&(t+=";CUTYPE="+this.data.type),this.data.status&&(t+=";PARTSTAT="+this.data.status),this.data.rsvp!==null&&(t+=";RSVP="+this.data.rsvp.toString().toUpperCase()),this.data.sentBy!==null&&(t+=';SENT-BY="mailto:'+this.data.sentBy+'"'),this.data.delegatedTo&&(t+=';DELEGATED-TO="'+this.data.delegatedTo.email()+'"'),this.data.delegatedFrom&&(t+=';DELEGATED-FROM="'+this.data.delegatedFrom.email()+'"'),this.data.name&&(t+=';CN="'+l(this.data.name,!0)+'"'),this.data.email&&this.data.mailto&&(t+=";EMAIL="+l(this.data.email,!1)),this.data.x.length&&(t+=";"+this.data.x.map(([e,a])=>e.toUpperCase()+"="+l(a,!1)).join(";")),t+=":MAILTO:"+l(this.data.mailto||this.data.email,!1)+`\r
7
+ `,t}};var L=(e=>(e.display="display",e.audio="audio",e))(L||{}),J={end:"END",start:"START"},I=class{constructor(t,e){if(this.data={type:null,trigger:null,relatesTo:null,repeat:null,interval:null,attach:null,description:null,x:[]},this.event=e,!e)throw new Error("`event` option required!");t.type!==void 0&&this.type(t.type),t.trigger!==void 0&&this.trigger(t.trigger),t.triggerBefore!==void 0&&this.triggerBefore(t.triggerBefore),t.triggerAfter!==void 0&&this.triggerAfter(t.triggerAfter),t.repeat!==void 0&&this.repeat(t.repeat),t.interval!==void 0&&this.interval(t.interval),t.attach!==void 0&&this.attach(t.attach),t.description!==void 0&&this.description(t.description),t.x!==void 0&&this.x(t.x)}type(t){if(t===void 0)return this.data.type;if(!t)return this.data.type=null,this;if(!Object.keys(L).includes(t))throw new Error("`type` is not correct, must be either `display` or `audio`!");return this.data.type=t,this}trigger(t){if(t===void 0&&typeof this.data.trigger=="number")return-1*this.data.trigger;if(t===void 0&&this.data.trigger)return this.data.trigger;if(t===void 0)return null;if(!t)this.data.trigger=null;else if(typeof t=="number"&&isFinite(t))this.data.trigger=-1*t;else{if(typeof t=="number")throw new Error("`trigger` is not correct, must be a finite number or a supported date!");this.data.trigger=f(t,"trigger")}return this}relatesTo(t){if(t===void 0)return this.data.relatesTo;if(!t)return this.data.relatesTo=null,this;if(!Object.values(J).includes(t))throw new Error("`relatesTo` is not correct, must be either `START` or `END`!");return this.data.relatesTo=t,this}triggerAfter(t){return t===void 0?this.data.trigger:this.trigger(typeof t=="number"?-1*t:t)}triggerBefore(t){return t===void 0?this.trigger():this.trigger(t)}repeat(t){if(t===void 0)return this.data.repeat;if(!t)return this.data.repeat=null,this;if(typeof t!="number"||!isFinite(t))throw new Error("`repeat` is not correct, must be numeric!");return this.data.repeat=t,this}interval(t){if(t===void 0)return this.data.interval||null;if(!t)return this.data.interval=null,this;if(typeof t!="number"||!isFinite(t))throw new Error("`interval` is not correct, must be numeric!");return this.data.interval=t,this}attach(t){if(t===void 0)return this.data.attach;if(!t)return this.data.attach=null,this;let e=null;if(typeof t=="string")e={uri:t,mime:null};else if(typeof t=="object")e={uri:t.uri,mime:t.mime||null};else throw new Error("`attachment` needs to be a valid formed string or an object. See https://sebbo2002.github.io/ical-generator/develop/reference/classes/ICalAlarm.html#attach");if(!e.uri)throw new Error("`attach.uri` is empty!");return this.data.attach={uri:e.uri,mime:e.mime},this}description(t){return t===void 0?this.data.description:t?(this.data.description=t,this):(this.data.description=null,this)}x(t,e){if(t===void 0)return u(this.data);if(typeof t=="string"&&typeof e=="string")u(this.data,t,e);else if(typeof t=="object")u(this.data,t);else throw new Error("Either key or value is not a string!");return this}toJSON(){let t=this.trigger();return Object.assign({},this.data,{trigger:typeof t=="number"?t:m(t),x:this.x()})}toString(){let t=`BEGIN:VALARM\r
8
8
  `;if(!this.data.type)throw new Error("No value for `type` in ICalAlarm given!");if(!this.data.trigger)throw new Error("No value for `trigger` in ICalAlarm given!");if(t+="ACTION:"+this.data.type.toUpperCase()+`\r
9
- `,typeof this.data.trigger=="number"&&this.data.trigger>0?t+="TRIGGER;RELATED=END:"+y(this.data.trigger)+`\r
10
- `:typeof this.data.trigger=="number"?t+="TRIGGER:"+y(this.data.trigger)+`\r
9
+ `,typeof this.data.trigger=="number"&&this.data.relatesTo===null?this.data.trigger>0?t+="TRIGGER;RELATED=END:"+C(this.data.trigger)+`\r
10
+ `:t+="TRIGGER:"+C(this.data.trigger)+`\r
11
+ `:typeof this.data.trigger=="number"?t+="TRIGGER;RELATED="+this.data.relatesTo.toUpperCase()+":"+C(this.data.trigger)+`\r
11
12
  `:t+="TRIGGER;VALUE=DATE-TIME:"+d(this.event.timezone(),this.data.trigger)+`\r
12
13
  `,this.data.repeat&&!this.data.interval)throw new Error("No value for `interval` in ICalAlarm given, but required for `repeat`!");if(this.data.repeat&&(t+="REPEAT:"+this.data.repeat+`\r
13
- `),this.data.interval&&!this.data.repeat)throw new Error("No value for `repeat` in ICalAlarm given, but required for `interval`!");return this.data.interval&&(t+="DURATION:"+y(this.data.interval)+`\r
14
+ `),this.data.interval&&!this.data.repeat)throw new Error("No value for `repeat` in ICalAlarm given, but required for `interval`!");return this.data.interval&&(t+="DURATION:"+C(this.data.interval)+`\r
14
15
  `),this.data.type==="audio"&&this.data.attach&&this.data.attach.mime?t+="ATTACH;FMTTYPE="+l(this.data.attach.mime,!1)+":"+l(this.data.attach.uri,!1)+`\r
15
16
  `:this.data.type==="audio"&&this.data.attach?t+="ATTACH;VALUE=URI:"+l(this.data.attach.uri,!1)+`\r
16
17
  `:this.data.type==="audio"&&(t+=`ATTACH;VALUE=URI:Basso\r
17
18
  `),this.data.type==="display"&&this.data.description?t+="DESCRIPTION:"+l(this.data.description,!1)+`\r
18
19
  `:this.data.type==="display"&&(t+="DESCRIPTION:"+l(this.event.summary(),!1)+`\r
19
- `),t+=T(this.data),t+=`END:VALARM\r
20
- `,t}};var I=class{constructor(t){this.data={name:null},t.name!==void 0&&this.name(t.name)}name(t){return t===void 0?this.data.name:(this.data.name=t||null,this)}toJSON(){return Object.assign({},this.data)}toString(){if(!this.data.name)throw new Error("No value for `name` in ICalCategory given!");return l(this.data.name,!1)}};var R=(r=>(r.SECONDLY="SECONDLY",r.MINUTELY="MINUTELY",r.HOURLY="HOURLY",r.DAILY="DAILY",r.WEEKLY="WEEKLY",r.MONTHLY="MONTHLY",r.YEARLY="YEARLY",r))(R||{}),A=(r=>(r.SU="SU",r.MO="MO",r.TU="TU",r.WE="WE",r.TH="TH",r.FR="FR",r.SA="SA",r))(A||{});var P=(a=>(a.CONFIRMED="CONFIRMED",a.TENTATIVE="TENTATIVE",a.CANCELLED="CANCELLED",a))(P||{}),B=(i=>(i.FREE="FREE",i.TENTATIVE="TENTATIVE",i.BUSY="BUSY",i.OOF="OOF",i))(B||{}),F=(e=>(e.TRANSPARENT="TRANSPARENT",e.OPAQUE="OPAQUE",e))(F||{}),k=(a=>(a.PUBLIC="PUBLIC",a.PRIVATE="PRIVATE",a.CONFIDENTIAL="CONFIDENTIAL",a))(k||{}),p=class{constructor(t,e){if(this.data={id:(0,G.default)(),sequence:0,start:null,end:null,recurrenceId:null,timezone:null,stamp:new Date,allDay:!1,floating:!1,repeating:null,summary:"",location:null,description:null,organizer:null,attendees:[],alarms:[],categories:[],status:null,busystatus:null,priority:null,url:null,attachments:[],transparency:null,created:null,lastModified:null,class:null,x:[]},this.calendar=e,!e)throw new Error("`calendar` option required!");t.id&&this.id(t.id),t.sequence!==void 0&&this.sequence(t.sequence),t.start&&this.start(t.start),t.end!==void 0&&this.end(t.end),t.recurrenceId!==void 0&&this.recurrenceId(t.recurrenceId),t.timezone!==void 0&&this.timezone(t.timezone),t.stamp!==void 0&&this.stamp(t.stamp),t.allDay!==void 0&&this.allDay(t.allDay),t.floating!==void 0&&this.floating(t.floating),t.repeating!==void 0&&this.repeating(t.repeating),t.summary!==void 0&&this.summary(t.summary),t.location!==void 0&&this.location(t.location),t.description!==void 0&&this.description(t.description),t.organizer!==void 0&&this.organizer(t.organizer),t.attendees!==void 0&&this.attendees(t.attendees),t.alarms!==void 0&&this.alarms(t.alarms),t.categories!==void 0&&this.categories(t.categories),t.status!==void 0&&this.status(t.status),t.busystatus!==void 0&&this.busystatus(t.busystatus),t.priority!==void 0&&this.priority(t.priority),t.url!==void 0&&this.url(t.url),t.attachments!==void 0&&this.attachments(t.attachments),t.transparency!==void 0&&this.transparency(t.transparency),t.created!==void 0&&this.created(t.created),t.lastModified!==void 0&&this.lastModified(t.lastModified),t.class!==void 0&&this.class(t.class),t.x!==void 0&&this.x(t.x)}id(t){return t===void 0?this.data.id:(this.data.id=String(t),this)}uid(t){return t===void 0?this.id():this.id(t)}sequence(t){if(t===void 0)return this.data.sequence;let e=parseInt(String(t),10);if(isNaN(e))throw new Error("`sequence` must be a number!");return this.data.sequence=t,this}start(t){if(t===void 0)return this.data.start;if(this.data.start=f(t,"start"),this.data.start&&this.data.end&&v(this.data.start).getTime()>v(this.data.end).getTime()){let e=this.data.start;this.data.start=this.data.end,this.data.end=e}return this}end(t){if(t===void 0)return this.data.end;if(t===null)return this.data.end=null,this;if(this.data.end=f(t,"end"),this.data.start&&this.data.end&&v(this.data.start).getTime()>v(this.data.end).getTime()){let e=this.data.start;this.data.start=this.data.end,this.data.end=e}return this}recurrenceId(t){return t===void 0?this.data.recurrenceId:t===null?(this.data.recurrenceId=null,this):(this.data.recurrenceId=f(t,"recurrenceId"),this)}timezone(t){return t===void 0&&this.data.timezone!==null?this.data.timezone:t===void 0?this.calendar.timezone():(this.data.timezone=t&&t!=="UTC"?t.toString():null,this.data.timezone&&(this.data.floating=!1),this)}stamp(t){return t===void 0?this.data.stamp:(this.data.stamp=f(t,"stamp"),this)}timestamp(t){return t===void 0?this.stamp():this.stamp(t)}allDay(t){return t===void 0?this.data.allDay:(this.data.allDay=!!t,this)}floating(t){return t===void 0?this.data.floating:(this.data.floating=!!t,this.data.floating&&(this.data.timezone=null),this)}repeating(t){if(t===void 0)return this.data.repeating;if(!t)return this.data.repeating=null,this;if(M(t)||typeof t=="string")return this.data.repeating=t,this;if(this.data.repeating={freq:h(R,t.freq)},t.count){if(!isFinite(t.count))throw new Error("`repeating.count` must be a finite number!");this.data.repeating.count=t.count}if(t.interval){if(!isFinite(t.interval))throw new Error("`repeating.interval` must be a finite number!");this.data.repeating.interval=t.interval}if(t.until!==void 0&&(this.data.repeating.until=f(t.until,"repeating.until")),t.byDay){let e=Array.isArray(t.byDay)?t.byDay:[t.byDay];this.data.repeating.byDay=e.map(a=>h(A,a))}if(t.byMonth){let e=Array.isArray(t.byMonth)?t.byMonth:[t.byMonth];this.data.repeating.byMonth=e.map(a=>{if(typeof a!="number"||a<1||a>12)throw new Error("`repeating.byMonth` contains invalid value `"+a+"`!");return a})}if(t.byMonthDay){let e=Array.isArray(t.byMonthDay)?t.byMonthDay:[t.byMonthDay];this.data.repeating.byMonthDay=e.map(a=>{if(typeof a!="number"||a<-31||a>31||a===0)throw new Error("`repeating.byMonthDay` contains invalid value `"+a+"`!");return a})}if(t.bySetPos){if(!this.data.repeating.byDay)throw"`repeating.bySetPos` must be used along with `repeating.byDay`!";let e=Array.isArray(t.bySetPos)?t.bySetPos:[t.bySetPos];this.data.repeating.bySetPos=e.map(a=>{if(typeof a!="number"||a<-366||a>366||a===0)throw"`repeating.bySetPos` contains invalid value `"+a+"`!";return a})}if(t.exclude){let e=Array.isArray(t.exclude)?t.exclude:[t.exclude];this.data.repeating.exclude=e.map((a,i)=>f(a,`repeating.exclude[${i}]`))}return t.startOfWeek&&(this.data.repeating.startOfWeek=h(A,t.startOfWeek)),this}summary(t){return t===void 0?this.data.summary:(this.data.summary=t?String(t):"",this)}location(t){if(t===void 0)return this.data.location;if(typeof t=="string")return this.data.location={title:t},this;if(t&&!t.title||t!=null&&t.geo&&(!isFinite(t.geo.lat)||!isFinite(t.geo.lon)))throw new Error("`location` isn't formatted correctly. See https://sebbo2002.github.io/ical-generator/develop/reference/classes/ICalEvent.html#location");return this.data.location=t||null,this}description(t){return t===void 0?this.data.description:t===null?(this.data.description=null,this):(typeof t=="string"?this.data.description={plain:t}:this.data.description=t,this)}organizer(t){return t===void 0?this.data.organizer:t===null?(this.data.organizer=null,this):(this.data.organizer=b("organizer",t),this)}createAttendee(t={}){if(t instanceof u)return this.data.attendees.push(t),t;typeof t=="string"&&(t=b("data",t));let e=new u(t,this);return this.data.attendees.push(e),e}attendees(t){return t?(t.forEach(e=>this.createAttendee(e)),this):this.data.attendees}createAlarm(t={}){let e=t instanceof C?t:new C(t,this);return this.data.alarms.push(e),e}alarms(t){return t?(t.forEach(e=>this.createAlarm(e)),this):this.data.alarms}createCategory(t={}){let e=t instanceof I?t:new I(t);return this.data.categories.push(e),e}categories(t){return t?(t.forEach(e=>this.createCategory(e)),this):this.data.categories}status(t){return t===void 0?this.data.status:t===null?(this.data.status=null,this):(this.data.status=h(P,t),this)}busystatus(t){return t===void 0?this.data.busystatus:t===null?(this.data.busystatus=null,this):(this.data.busystatus=h(B,t),this)}priority(t){if(t===void 0)return this.data.priority;if(t===null)return this.data.priority=null,this;if(t<0||t>9)throw new Error("`priority` is invalid, musst be 0 \u2264 priority \u2264 9.");return this.data.priority=Math.round(t),this}url(t){return t===void 0?this.data.url:(this.data.url=t?String(t):null,this)}createAttachment(t){return this.data.attachments.push(t),this}attachments(t){return t?(t.forEach(e=>this.createAttachment(e)),this):this.data.attachments}transparency(t){return t===void 0?this.data.transparency:t?(this.data.transparency=h(F,t),this):(this.data.transparency=null,this)}created(t){return t===void 0?this.data.created:t===null?(this.data.created=null,this):(this.data.created=f(t,"created"),this)}lastModified(t){return t===void 0?this.data.lastModified:t===null?(this.data.lastModified=null,this):(this.data.lastModified=f(t,"lastModified"),this)}class(t){return t===void 0?this.data.class:t===null?(this.data.class=null,this):(this.data.class=h(k,t),this)}x(t,e){return t===void 0?o(this.data):(typeof t=="string"&&typeof e=="string"&&o(this.data,t,e),typeof t=="object"&&o(this.data,t),this)}toJSON(){var e;let t=null;return M(this.data.repeating)||typeof this.data.repeating=="string"?t=this.data.repeating.toString():this.data.repeating&&(t=Object.assign({},this.data.repeating,{until:m(this.data.repeating.until)||void 0,exclude:(e=this.data.repeating.exclude)==null?void 0:e.map(a=>m(a))})),Object.assign({},this.data,{start:m(this.data.start)||null,end:m(this.data.end)||null,recurrenceId:m(this.data.recurrenceId)||null,stamp:m(this.data.stamp)||null,created:m(this.data.created)||null,lastModified:m(this.data.lastModified)||null,repeating:t,x:this.x()})}toString(){var e,a,i,s,c;let t="";if(!this.data.start)throw new Error("No value for `start` in ICalEvent #"+this.data.id+" given!");if(t+=`BEGIN:VEVENT\r
20
+ `),t+=D(this.data),t+=`END:VALARM\r
21
+ `,t}};var p=class{constructor(t){this.data={name:null},t.name!==void 0&&this.name(t.name)}name(t){return t===void 0?this.data.name:(this.data.name=t||null,this)}toJSON(){return Object.assign({},this.data)}toString(){if(!this.data.name)throw new Error("No value for `name` in ICalCategory given!");return l(this.data.name,!1)}};var N=(r=>(r.SECONDLY="SECONDLY",r.MINUTELY="MINUTELY",r.HOURLY="HOURLY",r.DAILY="DAILY",r.WEEKLY="WEEKLY",r.MONTHLY="MONTHLY",r.YEARLY="YEARLY",r))(N||{}),S=(r=>(r.SU="SU",r.MO="MO",r.TU="TU",r.WE="WE",r.TH="TH",r.FR="FR",r.SA="SA",r))(S||{});var z=(a=>(a.CONFIRMED="CONFIRMED",a.TENTATIVE="TENTATIVE",a.CANCELLED="CANCELLED",a))(z||{}),U=(i=>(i.FREE="FREE",i.TENTATIVE="TENTATIVE",i.BUSY="BUSY",i.OOF="OOF",i))(U||{}),P=(e=>(e.TRANSPARENT="TRANSPARENT",e.OPAQUE="OPAQUE",e))(P||{}),B=(a=>(a.PUBLIC="PUBLIC",a.PRIVATE="PRIVATE",a.CONFIDENTIAL="CONFIDENTIAL",a))(B||{}),y=class{constructor(t,e){if(this.data={id:G(),sequence:0,start:null,end:null,recurrenceId:null,timezone:null,stamp:new Date,allDay:!1,floating:!1,repeating:null,summary:"",location:null,description:null,organizer:null,attendees:[],alarms:[],categories:[],status:null,busystatus:null,priority:null,url:null,attachments:[],transparency:null,created:null,lastModified:null,class:null,x:[]},this.calendar=e,!e)throw new Error("`calendar` option required!");t.id&&this.id(t.id),t.sequence!==void 0&&this.sequence(t.sequence),t.start&&this.start(t.start),t.end!==void 0&&this.end(t.end),t.recurrenceId!==void 0&&this.recurrenceId(t.recurrenceId),t.timezone!==void 0&&this.timezone(t.timezone),t.stamp!==void 0&&this.stamp(t.stamp),t.allDay!==void 0&&this.allDay(t.allDay),t.floating!==void 0&&this.floating(t.floating),t.repeating!==void 0&&this.repeating(t.repeating),t.summary!==void 0&&this.summary(t.summary),t.location!==void 0&&this.location(t.location),t.description!==void 0&&this.description(t.description),t.organizer!==void 0&&this.organizer(t.organizer),t.attendees!==void 0&&this.attendees(t.attendees),t.alarms!==void 0&&this.alarms(t.alarms),t.categories!==void 0&&this.categories(t.categories),t.status!==void 0&&this.status(t.status),t.busystatus!==void 0&&this.busystatus(t.busystatus),t.priority!==void 0&&this.priority(t.priority),t.url!==void 0&&this.url(t.url),t.attachments!==void 0&&this.attachments(t.attachments),t.transparency!==void 0&&this.transparency(t.transparency),t.created!==void 0&&this.created(t.created),t.lastModified!==void 0&&this.lastModified(t.lastModified),t.class!==void 0&&this.class(t.class),t.x!==void 0&&this.x(t.x)}id(t){return t===void 0?this.data.id:(this.data.id=String(t),this)}uid(t){return t===void 0?this.id():this.id(t)}sequence(t){if(t===void 0)return this.data.sequence;let e=parseInt(String(t),10);if(isNaN(e))throw new Error("`sequence` must be a number!");return this.data.sequence=t,this}start(t){if(t===void 0)return this.data.start;if(this.data.start=f(t,"start"),this.data.start&&this.data.end&&A(this.data.start).getTime()>A(this.data.end).getTime()){let e=this.data.start;this.data.start=this.data.end,this.data.end=e}return this}end(t){if(t===void 0)return this.data.end;if(t===null)return this.data.end=null,this;if(this.data.end=f(t,"end"),this.data.start&&this.data.end&&A(this.data.start).getTime()>A(this.data.end).getTime()){let e=this.data.start;this.data.start=this.data.end,this.data.end=e}return this}recurrenceId(t){return t===void 0?this.data.recurrenceId:t===null?(this.data.recurrenceId=null,this):(this.data.recurrenceId=f(t,"recurrenceId"),this)}timezone(t){return t===void 0&&this.data.timezone!==null?this.data.timezone:t===void 0?this.calendar.timezone():(this.data.timezone=t&&t!=="UTC"?t.toString():null,this.data.timezone&&(this.data.floating=!1),this)}stamp(t){return t===void 0?this.data.stamp:(this.data.stamp=f(t,"stamp"),this)}timestamp(t){return t===void 0?this.stamp():this.stamp(t)}allDay(t){return t===void 0?this.data.allDay:(this.data.allDay=!!t,this)}floating(t){return t===void 0?this.data.floating:(this.data.floating=!!t,this.data.floating&&(this.data.timezone=null),this)}repeating(t){if(t===void 0)return this.data.repeating;if(!t)return this.data.repeating=null,this;if(x(t)||typeof t=="string")return this.data.repeating=t,this;if(this.data.repeating={freq:h(N,t.freq)},t.count){if(!isFinite(t.count))throw new Error("`repeating.count` must be a finite number!");this.data.repeating.count=t.count}if(t.interval){if(!isFinite(t.interval))throw new Error("`repeating.interval` must be a finite number!");this.data.repeating.interval=t.interval}if(t.until!==void 0&&(this.data.repeating.until=f(t.until,"repeating.until")),t.byDay){let e=Array.isArray(t.byDay)?t.byDay:[t.byDay];this.data.repeating.byDay=e.map(a=>h(S,a))}if(t.byMonth){let e=Array.isArray(t.byMonth)?t.byMonth:[t.byMonth];this.data.repeating.byMonth=e.map(a=>{if(typeof a!="number"||a<1||a>12)throw new Error("`repeating.byMonth` contains invalid value `"+a+"`!");return a})}if(t.byMonthDay){let e=Array.isArray(t.byMonthDay)?t.byMonthDay:[t.byMonthDay];this.data.repeating.byMonthDay=e.map(a=>{if(typeof a!="number"||a<-31||a>31||a===0)throw new Error("`repeating.byMonthDay` contains invalid value `"+a+"`!");return a})}if(t.bySetPos){if(!this.data.repeating.byDay)throw"`repeating.bySetPos` must be used along with `repeating.byDay`!";let e=Array.isArray(t.bySetPos)?t.bySetPos:[t.bySetPos];this.data.repeating.bySetPos=e.map(a=>{if(typeof a!="number"||a<-366||a>366||a===0)throw"`repeating.bySetPos` contains invalid value `"+a+"`!";return a})}if(t.exclude){let e=Array.isArray(t.exclude)?t.exclude:[t.exclude];this.data.repeating.exclude=e.map((a,i)=>f(a,`repeating.exclude[${i}]`))}return t.startOfWeek&&(this.data.repeating.startOfWeek=h(S,t.startOfWeek)),this}summary(t){return t===void 0?this.data.summary:(this.data.summary=t?String(t):"",this)}location(t){if(t===void 0)return this.data.location;if(typeof t=="string")return this.data.location={title:t},this;if(t&&!t.title||t!=null&&t.geo&&(!isFinite(t.geo.lat)||!isFinite(t.geo.lon)))throw new Error("`location` isn't formatted correctly. See https://sebbo2002.github.io/ical-generator/develop/reference/classes/ICalEvent.html#location");return this.data.location=t||null,this}description(t){return t===void 0?this.data.description:t===null?(this.data.description=null,this):(typeof t=="string"?this.data.description={plain:t}:this.data.description=t,this)}organizer(t){return t===void 0?this.data.organizer:t===null?(this.data.organizer=null,this):(this.data.organizer=T("organizer",t),this)}createAttendee(t={}){if(t instanceof o)return this.data.attendees.push(t),t;typeof t=="string"&&(t=T("data",t));let e=new o(t,this);return this.data.attendees.push(e),e}attendees(t){return t?(t.forEach(e=>this.createAttendee(e)),this):this.data.attendees}createAlarm(t={}){let e=t instanceof I?t:new I(t,this);return this.data.alarms.push(e),e}alarms(t){return t?(t.forEach(e=>this.createAlarm(e)),this):this.data.alarms}createCategory(t={}){let e=t instanceof p?t:new p(t);return this.data.categories.push(e),e}categories(t){return t?(t.forEach(e=>this.createCategory(e)),this):this.data.categories}status(t){return t===void 0?this.data.status:t===null?(this.data.status=null,this):(this.data.status=h(z,t),this)}busystatus(t){return t===void 0?this.data.busystatus:t===null?(this.data.busystatus=null,this):(this.data.busystatus=h(U,t),this)}priority(t){if(t===void 0)return this.data.priority;if(t===null)return this.data.priority=null,this;if(t<0||t>9)throw new Error("`priority` is invalid, musst be 0 \u2264 priority \u2264 9.");return this.data.priority=Math.round(t),this}url(t){return t===void 0?this.data.url:(this.data.url=t?String(t):null,this)}createAttachment(t){return this.data.attachments.push(t),this}attachments(t){return t?(t.forEach(e=>this.createAttachment(e)),this):this.data.attachments}transparency(t){return t===void 0?this.data.transparency:t?(this.data.transparency=h(P,t),this):(this.data.transparency=null,this)}created(t){return t===void 0?this.data.created:t===null?(this.data.created=null,this):(this.data.created=f(t,"created"),this)}lastModified(t){return t===void 0?this.data.lastModified:t===null?(this.data.lastModified=null,this):(this.data.lastModified=f(t,"lastModified"),this)}class(t){return t===void 0?this.data.class:t===null?(this.data.class=null,this):(this.data.class=h(B,t),this)}x(t,e){return t===void 0?u(this.data):(typeof t=="string"&&typeof e=="string"&&u(this.data,t,e),typeof t=="object"&&u(this.data,t),this)}toJSON(){var e;let t=null;return x(this.data.repeating)||typeof this.data.repeating=="string"?t=this.data.repeating.toString():this.data.repeating&&(t=Object.assign({},this.data.repeating,{until:m(this.data.repeating.until)||void 0,exclude:(e=this.data.repeating.exclude)==null?void 0:e.map(a=>m(a))})),Object.assign({},this.data,{start:m(this.data.start)||null,end:m(this.data.end)||null,recurrenceId:m(this.data.recurrenceId)||null,stamp:m(this.data.stamp)||null,created:m(this.data.created)||null,lastModified:m(this.data.lastModified)||null,repeating:t,x:this.x()})}toString(){var e,a,i,s,c;let t="";if(!this.data.start)throw new Error("No value for `start` in ICalEvent #"+this.data.id+" given!");if(t+=`BEGIN:VEVENT\r
21
22
  `,t+="UID:"+this.data.id+`\r
22
23
  `,t+="SEQUENCE:"+this.data.sequence+`\r
23
24
  `,t+="DTSTAMP:"+d(this.calendar.timezone(),this.data.stamp)+`\r
@@ -25,9 +26,9 @@
25
26
  `,this.data.end&&(t+="DTEND;VALUE=DATE:"+d(this.calendar.timezone(),this.data.end,!0)+`\r
26
27
  `),t+=`X-MICROSOFT-CDO-ALLDAYEVENT:TRUE\r
27
28
  `,t+=`X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE\r
28
- `):(t+=E(this.timezone(),"DTSTART",this.data.start,this.data)+`\r
29
- `,this.data.end&&(t+=E(this.timezone(),"DTEND",this.data.end,this.data)+`\r
30
- `)),M(this.data.repeating)||typeof this.data.repeating=="string"){let r=this.data.repeating.toString().replace(/\r\n/g,`
29
+ `):(t+=b(this.timezone(),"DTSTART",this.data.start,this.data)+`\r
30
+ `,this.data.end&&(t+=b(this.timezone(),"DTEND",this.data.end,this.data)+`\r
31
+ `)),x(this.data.repeating)||typeof this.data.repeating=="string"){let r=this.data.repeating.toString().replace(/\r\n/g,`
31
32
  `).split(`
32
33
  `).filter(g=>g&&!g.startsWith("DTSTART:")).join(`\r
33
34
  `);!r.includes(`\r
@@ -36,7 +37,7 @@
36
37
  `,this.data.repeating.exclude&&(this.data.allDay?t+="EXDATE;VALUE=DATE:"+this.data.repeating.exclude.map(r=>d(this.calendar.timezone(),r,!0)).join(",")+`\r
37
38
  `:(t+="EXDATE",this.timezone()?t+=";TZID="+this.timezone()+":"+this.data.repeating.exclude.map(r=>d(this.timezone(),r,!1,!0)).join(",")+`\r
38
39
  `:t+=":"+this.data.repeating.exclude.map(r=>d(this.timezone(),r,!1,this.floating())).join(",")+`\r
39
- `)));return this.data.recurrenceId&&(t+=E(this.timezone(),"RECURRENCE-ID",this.data.recurrenceId,this.data)+`\r
40
+ `)));return this.data.recurrenceId&&(t+=b(this.timezone(),"RECURRENCE-ID",this.data.recurrenceId,this.data)+`\r
40
41
  `),t+="SUMMARY:"+l(this.data.summary,!1)+`\r
41
42
  `,this.data.transparency&&(t+="TRANSP:"+l(this.data.transparency,!1)+`\r
42
43
  `),(e=this.data.location)!=null&&e.title&&(t+="LOCATION:"+l(this.data.location.title+(this.data.location.address?`
@@ -52,11 +53,11 @@
52
53
  `}),this.data.status&&(t+="STATUS:"+this.data.status.toUpperCase()+`\r
53
54
  `),this.data.busystatus&&(t+="X-MICROSOFT-CDO-BUSYSTATUS:"+this.data.busystatus.toUpperCase()+`\r
54
55
  `),this.data.priority!==null&&(t+="PRIORITY:"+this.data.priority+`\r
55
- `),t+=T(this.data),this.data.created&&(t+="CREATED:"+d(this.calendar.timezone(),this.data.created)+`\r
56
+ `),t+=D(this.data),this.data.created&&(t+="CREATED:"+d(this.calendar.timezone(),this.data.created)+`\r
56
57
  `),this.data.lastModified&&(t+="LAST-MODIFIED:"+d(this.calendar.timezone(),this.data.lastModified)+`\r
57
58
  `),this.data.class&&(t+="CLASS:"+this.data.class.toUpperCase()+`\r
58
59
  `),t+=`END:VEVENT\r
59
- `,t}};var S=require("fs"),Y=(g=>(g.PUBLISH="PUBLISH",g.REQUEST="REQUEST",g.REPLY="REPLY",g.ADD="ADD",g.CANCEL="CANCEL",g.REFRESH="REFRESH",g.COUNTER="COUNTER",g.DECLINECOUNTER="DECLINECOUNTER",g))(Y||{}),D=class{constructor(t={}){this.data={prodId:"//sebbo.net//ical-generator//EN",method:null,name:null,description:null,timezone:null,source:null,url:null,scale:null,ttl:null,events:[],x:[]},t.prodId!==void 0&&this.prodId(t.prodId),t.method!==void 0&&this.method(t.method),t.name!==void 0&&this.name(t.name),t.description!==void 0&&this.description(t.description),t.timezone!==void 0&&this.timezone(t.timezone),t.source!==void 0&&this.source(t.source),t.url!==void 0&&this.url(t.url),t.scale!==void 0&&this.scale(t.scale),t.ttl!==void 0&&this.ttl(t.ttl),t.events!==void 0&&this.events(t.events),t.x!==void 0&&this.x(t.x)}prodId(t){if(!t)return this.data.prodId;if(typeof t=="string"&&/^\/\/(.+)\/\/(.+)\/\/([A-Z]{1,4})$/.test(t))return this.data.prodId=t,this;if(typeof t=="string")throw new Error("`prodId` isn't formated correctly. See https://sebbo2002.github.io/ical-generator/develop/reference/classes/ICalCalendar.html#prodId");if(typeof t!="object")throw new Error("`prodid` needs to be a valid formed string or an object!");if(!t.company)throw new Error("`prodid.company` is a mandatory item!");if(!t.product)throw new Error("`prodid.product` is a mandatory item!");let a=(t.language||"EN").toUpperCase();return this.data.prodId="//"+t.company+"//"+t.product+"//"+a,this}method(t){return t===void 0?this.data.method:t?(this.data.method=h(Y,t),this):(this.data.method=null,this)}name(t){return t===void 0?this.data.name:(this.data.name=t?String(t):null,this)}description(t){return t===void 0?this.data.description:(this.data.description=t?String(t):null,this)}timezone(t){var e;return t===void 0?((e=this.data.timezone)==null?void 0:e.name)||null:(t==="UTC"?this.data.timezone=null:typeof t=="string"?this.data.timezone={name:t}:t===null?this.data.timezone=null:this.data.timezone=t,this)}source(t){return t===void 0?this.data.source:(this.data.source=t||null,this)}url(t){return t===void 0?this.data.url:(this.data.url=t||null,this)}scale(t){return t===void 0?this.data.scale:(t===null?this.data.scale=null:this.data.scale=t.toUpperCase(),this)}ttl(t){return t===void 0?this.data.ttl:(J(t)?this.data.ttl=t.asSeconds():t&&t>0?this.data.ttl=t:this.data.ttl=null,this)}createEvent(t){let e=t instanceof p?t:new p(t,this);return this.data.events.push(e),e}events(t){return t?(t.forEach(e=>this.createEvent(e)),this):this.data.events}clear(){return this.data.events=[],this}save(t,e){return e?((0,S.writeFile)(t,this.toString(),e),this):S.promises.writeFile(t,this.toString())}saveSync(t){return(0,S.writeFileSync)(t,this.toString()),this}serve(t,e="calendar.ics"){return t.writeHead(200,{"Content-Type":"text/calendar; charset=utf-8","Content-Disposition":`attachment; filename="${e}"`}),t.end(this.toString()),this}toBlob(){return new Blob([this.toString()],{type:"text/calendar"})}toURL(){return URL.createObjectURL(this.toBlob())}x(t,e){if(t===void 0)return o(this.data);if(typeof t=="string"&&typeof e=="string")o(this.data,t,e);else if(typeof t=="object")o(this.data,t);else throw new Error("Either key or value is not a string!");return this}toJSON(){return Object.assign({},this.data,{timezone:this.timezone(),events:this.data.events.map(t=>t.toJSON()),x:this.x()})}length(){return this.data.events.length}toString(){var e,a;let t="";return t=`BEGIN:VCALENDAR\r
60
+ `,t}};import{writeFile as H,writeFileSync as W,promises as q}from"fs";var F=(g=>(g.PUBLISH="PUBLISH",g.REQUEST="REQUEST",g.REPLY="REPLY",g.ADD="ADD",g.CANCEL="CANCEL",g.REFRESH="REFRESH",g.COUNTER="COUNTER",g.DECLINECOUNTER="DECLINECOUNTER",g))(F||{}),E=class{constructor(t={}){this.data={prodId:"//sebbo.net//ical-generator//EN",method:null,name:null,description:null,timezone:null,source:null,url:null,scale:null,ttl:null,events:[],x:[]},t.prodId!==void 0&&this.prodId(t.prodId),t.method!==void 0&&this.method(t.method),t.name!==void 0&&this.name(t.name),t.description!==void 0&&this.description(t.description),t.timezone!==void 0&&this.timezone(t.timezone),t.source!==void 0&&this.source(t.source),t.url!==void 0&&this.url(t.url),t.scale!==void 0&&this.scale(t.scale),t.ttl!==void 0&&this.ttl(t.ttl),t.events!==void 0&&this.events(t.events),t.x!==void 0&&this.x(t.x)}prodId(t){if(!t)return this.data.prodId;if(typeof t=="string"&&/^\/\/(.+)\/\/(.+)\/\/([A-Z]{1,4})$/.test(t))return this.data.prodId=t,this;if(typeof t=="string")throw new Error("`prodId` isn't formated correctly. See https://sebbo2002.github.io/ical-generator/develop/reference/classes/ICalCalendar.html#prodId");if(typeof t!="object")throw new Error("`prodid` needs to be a valid formed string or an object!");if(!t.company)throw new Error("`prodid.company` is a mandatory item!");if(!t.product)throw new Error("`prodid.product` is a mandatory item!");let a=(t.language||"EN").toUpperCase();return this.data.prodId="//"+t.company+"//"+t.product+"//"+a,this}method(t){return t===void 0?this.data.method:t?(this.data.method=h(F,t),this):(this.data.method=null,this)}name(t){return t===void 0?this.data.name:(this.data.name=t?String(t):null,this)}description(t){return t===void 0?this.data.description:(this.data.description=t?String(t):null,this)}timezone(t){var e;return t===void 0?((e=this.data.timezone)==null?void 0:e.name)||null:(t==="UTC"?this.data.timezone=null:typeof t=="string"?this.data.timezone={name:t}:t===null?this.data.timezone=null:this.data.timezone=t,this)}source(t){return t===void 0?this.data.source:(this.data.source=t||null,this)}url(t){return t===void 0?this.data.url:(this.data.url=t||null,this)}scale(t){return t===void 0?this.data.scale:(t===null?this.data.scale=null:this.data.scale=t.toUpperCase(),this)}ttl(t){return t===void 0?this.data.ttl:(k(t)?this.data.ttl=t.asSeconds():t&&t>0?this.data.ttl=t:this.data.ttl=null,this)}createEvent(t){let e=t instanceof y?t:new y(t,this);return this.data.events.push(e),e}events(t){return t?(t.forEach(e=>this.createEvent(e)),this):this.data.events}clear(){return this.data.events=[],this}save(t,e){return e?(H(t,this.toString(),e),this):q.writeFile(t,this.toString())}saveSync(t){return W(t,this.toString()),this}serve(t,e="calendar.ics"){return t.writeHead(200,{"Content-Type":"text/calendar; charset=utf-8","Content-Disposition":`attachment; filename="${e}"`}),t.end(this.toString()),this}toBlob(){return new Blob([this.toString()],{type:"text/calendar"})}toURL(){return URL.createObjectURL(this.toBlob())}x(t,e){if(t===void 0)return u(this.data);if(typeof t=="string"&&typeof e=="string")u(this.data,t,e);else if(typeof t=="object")u(this.data,t);else throw new Error("Either key or value is not a string!");return this}toJSON(){return Object.assign({},this.data,{timezone:this.timezone(),events:this.data.events.map(t=>t.toJSON()),x:this.x()})}length(){return this.data.events.length}toString(){var e,a;let t="";return t=`BEGIN:VCALENDAR\r
60
61
  VERSION:2.0\r
61
62
  `,t+="PRODID:-"+this.data.prodId+`\r
62
63
  `,this.data.url&&(t+="URL:"+this.data.url+`\r
@@ -71,7 +72,7 @@ VERSION:2.0\r
71
72
  `).trim()+`\r
72
73
  `)}),(a=this.data.timezone)!=null&&a.name&&(t+="TIMEZONE-ID:"+this.data.timezone.name+`\r
73
74
  `,t+="X-WR-TIMEZONE:"+this.data.timezone.name+`\r
74
- `),this.data.ttl&&(t+="REFRESH-INTERVAL;VALUE=DURATION:"+y(this.data.ttl)+`\r
75
- `,t+="X-PUBLISHED-TTL:"+y(this.data.ttl)+`\r
76
- `),this.data.events.forEach(i=>t+=i.toString()),t+=T(this.data),t+="END:VCALENDAR",N(t)}};function et(n){return new D(n)}var nt=et;0&&(module.exports={ICalAlarm,ICalAlarmType,ICalAttendee,ICalAttendeeRole,ICalAttendeeStatus,ICalAttendeeType,ICalCalendar,ICalCalendarMethod,ICalCategory,ICalEvent,ICalEventBusyStatus,ICalEventClass,ICalEventRepeatingFreq,ICalEventStatus,ICalEventTransparency,ICalWeekday,escape,foldLines,formatDate,formatDateTZ});
75
+ `),this.data.ttl&&(t+="REFRESH-INTERVAL;VALUE=DURATION:"+C(this.data.ttl)+`\r
76
+ `,t+="X-PUBLISHED-TTL:"+C(this.data.ttl)+`\r
77
+ `),this.data.events.forEach(i=>t+=i.toString()),t+=D(this.data),t+="END:VCALENDAR",O(t)}};function X(n){return new E(n)}var vt=X;export{I as ICalAlarm,L as ICalAlarmType,o as ICalAttendee,w as ICalAttendeeRole,M as ICalAttendeeStatus,V as ICalAttendeeType,E as ICalCalendar,F as ICalCalendarMethod,p as ICalCategory,y as ICalEvent,U as ICalEventBusyStatus,B as ICalEventClass,N as ICalEventRepeatingFreq,z as ICalEventStatus,P as ICalEventTransparency,S as ICalWeekday,vt as default,l as escape,O as foldLines,d as formatDate,b as formatDateTZ};
77
78
  //# sourceMappingURL=index.js.map