summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLouis <6653109+artonge@users.noreply.github.com>2023-02-08 18:01:17 +0100
committerGitHub <noreply@github.com>2023-02-08 18:01:17 +0100
commit137250ff92bc366385ee96823703a9542c8ad1b6 (patch)
treee503b428cfa4deadd0dc4a3d8c6c9181e3ac235a
parent6dafb6b51d2c1ff96c990efff8427ba1f8c87648 (diff)
parent876bdf75f65389054a316230bf008b2a9ca0bbaf (diff)
Merge pull request #1602 from nextcloud/fix/viewer-in-public-albumsv26.0.0beta3
Fix viewer in public albums
-rw-r--r--js/photos-main.js4
-rw-r--r--js/photos-main.js.map2
-rw-r--r--js/photos-node_modules_vue-material-design-icons_PackageVariant_vue-node_modules_vue-material-design-ic-2ca5cc.js4
-rw-r--r--js/photos-node_modules_vue-material-design-icons_PackageVariant_vue-node_modules_vue-material-design-ic-2ca5cc.js.map2
-rw-r--r--js/photos-public.js4
-rw-r--r--js/photos-public.js.map2
-rw-r--r--lib/Sabre/PublicAlbumAuthBackend.php78
-rw-r--r--lib/Sabre/PublicRootCollection.php14
-rw-r--r--src/views/PublicAlbumContent.vue9
9 files changed, 75 insertions, 44 deletions
diff --git a/js/photos-main.js b/js/photos-main.js
index c543806d..7bac46db 100644
--- a/js/photos-main.js
+++ b/js/photos-main.js
@@ -1,3 +1,3 @@
/*! For license information please see photos-main.js.LICENSE.txt */
-(()=>{var e,n,r={45994:(e,t,n)=>{"use strict";n.d(t,{IH:()=>u,_S:()=>l,ts:()=>m});var r=n(78595),a=n(25108);const i=document.getElementsByTagName("head")[0];let o=i?i.getAttribute("data-requesttoken"):null;const s=[];function u(){return o}function l(e){s.push(e)}(0,r.Ld)("csrf-token-update",(e=>{o=e.token,s.forEach((t=>{try{t(e.token)}catch(e){a.error("error updating CSRF token observer",e)}}))}));const c=(e,t)=>e?e.getAttribute(t):null,d=document.getElementsByTagName("head")[0],f=c(d,"data-user"),h=c(d,"data-user-displayname"),p="undefined"!=typeof OC&&OC.isUserAdmin();function m(){return null===f?null:{uid:f,displayName:h,isAdmin:p}}},22200:(e,t,n)=>{"use strict";var r=n(25108);Object.defineProperty(t,"__esModule",{value:!0});var a=n(74854),i=document.getElementsByTagName("head")[0],o=i?i.getAttribute("data-requesttoken"):null,s=[];a.subscribe("csrf-token-update",(function(e){o=e.token,s.forEach((function(t){try{t(e.token)}catch(e){r.error("error updating CSRF token observer",e)}}))}));var u=function(e,t){return e?e.getAttribute(t):null},l=document.getElementsByTagName("head")[0],c=u(l,"data-user"),d=u(l,"data-user-displayname"),f="undefined"!=typeof OC&&OC.isUserAdmin();t.getCurrentUser=function(){return null===c?null:{uid:c,displayName:d,isAdmin:f}},t.getRequestToken=function(){return o},t.onRequestTokenUpdate=function(e){s.push(e)}},26937:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(9669),a=n.n(r),i=n(45994),o=n(79753),s=n(25108);const u=Symbol("csrf-retry"),l=Symbol("retryDelay"),c=a().create({headers:{requesttoken:(0,i.IH)()??""}}),d=Object.assign(c,{CancelToken:a().CancelToken,isCancel:a().isCancel});var f;d.interceptors.response.use((e=>e),(f=d,async e=>{const{config:t,response:n,request:{responseURL:r}}=e,{status:a}=n;if(412===a&&"CSRF check failed"===n?.data?.message&&void 0===t[u]){s.warn(`Request to ${r} failed because of a CSRF mismatch. Fetching a new token`);const{data:{token:e}}=await f.get((0,o.generateUrl)("/csrftoken"));return s.debug(`New request token ${e} fetched`),f.defaults.headers.requesttoken=e,f({...t,headers:{...t.headers,requesttoken:e},[u]:!0})}return Promise.reject(e)})),d.interceptors.response.use((e=>e),(e=>async t=>{const{config:n,response:r,request:{responseURL:a}}=t,{status:i,headers:o}=r;if(503===i&&"1"===o["x-nextcloud-maintenance-mode"]&&n.retryIfMaintenanceMode&&(!n[l]||n[l]<=32)){const t=2*(n[l]??1);return s.warn(`Request to ${a} failed because of maintenance mode. Retrying in ${t}s`),await new Promise(((e,n)=>{setTimeout(e,1e3*t)})),e({...n,[l]:t})}return Promise.reject(t)})(d)),(0,i._S)((e=>c.defaults.headers.requesttoken=e))},4820:(e,t,n)=>{"use strict";var r=n(25108),a=n(9669),i=n(22200),o=n(79753);function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=s(a),l=function(){return l=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},l.apply(this,arguments)};function c(e,t,n,r){return new(n||(n=Promise))((function(a,i){function o(e){try{u(r.next(e))}catch(e){i(e)}}function s(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}u((r=r.apply(e,t||[])).next())}))}function d(e,t){var n,r,a,i,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(a=2&i[0]?r.return:i[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,i[1])).done)return a;switch(r=0,a&&(i=[2&i[0],a.value]),i[0]){case 0:case 1:a=i;break;case 4:return o.label++,{value:i[1],done:!1};case 5:o.label++,r=i[1],i=[0];continue;case 7:i=o.ops.pop(),o.trys.pop();continue;default:if(!(a=o.trys,(a=a.length>0&&a[a.length-1])||6!==i[0]&&2!==i[0])){o=0;continue}if(3===i[0]&&(!a||i[1]>a[0]&&i[1]<a[3])){o.label=i[1];break}if(6===i[0]&&o.label<a[1]){o.label=a[1],a=i;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(i);break}a[2]&&o.ops.pop(),o.trys.pop();continue}i=t.call(e,o)}catch(e){i=[6,e],r=0}finally{n=a=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}}var f,h,p=Symbol("csrf-retry"),m=Symbol("retryDelay"),g=u.default.create({headers:{requesttoken:null!==(f=i.getRequestToken())&&void 0!==f?f:""}}),_=Object.assign(g,{CancelToken:u.default.CancelToken,isCancel:u.default.isCancel});_.interceptors.response.use((function(e){return e}),(h=_,function(e){return c(void 0,void 0,void 0,(function(){var t,n,a,i,s,u;return d(this,(function(c){switch(c.label){case 0:return t=e.config,n=e.response,a=e.request.responseURL,412!==n.status||"CSRF check failed"!==(null===(u=null==n?void 0:n.data)||void 0===u?void 0:u.message)||void 0!==t[p]?[3,2]:(r.warn("Request to ".concat(a," failed because of a CSRF mismatch. Fetching a new token")),[4,h.get(o.generateUrl("/csrftoken"))]);case 1:return i=c.sent().data.token,r.debug("New request token ".concat(i," fetched")),h.defaults.headers.requesttoken=i,[2,h(l(l({},t),(s={headers:l(l({},t.headers),{requesttoken:i})},s[p]=!0,s)))];case 2:return[2,Promise.reject(e)]}}))}))})),_.interceptors.response.use((function(e){return e}),function(e){return function(t){return c(void 0,void 0,void 0,(function(){var n,a,i,o,s,u,c,f;return d(this,(function(d){switch(d.label){case 0:return n=t.config,a=t.response,i=t.request.responseURL,o=a.status,s=a.headers,503===o&&"1"===s["x-nextcloud-maintenance-mode"]&&n.retryIfMaintenanceMode&&(!n[m]||n[m]<=32)?(u=2*(null!==(f=n[m])&&void 0!==f?f:1),r.warn("Request to ".concat(i," failed because of maintenance mode. Retrying in ").concat(u,"s")),[4,new Promise((function(e,t){setTimeout(e,1e3*u)}))]):[3,2];case 1:return d.sent(),[2,e(l(l({},n),(c={},c[m]=u,c)))];case 2:return[2,Promise.reject(t)]}}))}))}}(_)),i.onRequestTokenUpdate((function(e){return g.defaults.headers.requesttoken=e})),e.exports=_},62556:(e,t,n)=>{"use strict";n(69070),Object.defineProperty(t,"__esModule",{value:!0}),t.clearAll=function(){[window.sessionStorage,window.localStorage].map((function(e){return o(e)}))},t.clearNonPersistent=function(){[window.sessionStorage,window.localStorage].map((function(e){return o(e,(function(e){return!e.startsWith(a.default.GLOBAL_SCOPE_PERSISTENT)}))}))},t.getBuilder=function(e){return new r.default(e)},n(21249),n(57327),n(41539),n(47941),n(23157);var r=i(n(71957)),a=i(n(48971));function i(e){return e&&e.__esModule?e:{default:e}}function o(e,t){Object.keys(e).filter((function(e){return!t||t(e)})).map(e.removeItem.bind(e))}},48971:(e,t,n)=>{"use strict";function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,n(92222),n(21249),n(57327),n(41539),n(47941),n(23157),n(69070);var i=function(){function e(t,n,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),a(this,"scope",void 0),a(this,"wrapped",void 0),this.scope="".concat(r?e.GLOBAL_SCOPE_PERSISTENT:e.GLOBAL_SCOPE_VOLATILE,"_").concat(btoa(t),"_"),this.wrapped=n}var t,n,i;return t=e,(n=[{key:"scopeKey",value:function(e){return"".concat(this.scope).concat(e)}},{key:"setItem",value:function(e,t){this.wrapped.setItem(this.scopeKey(e),t)}},{key:"getItem",value:function(e){return this.wrapped.getItem(this.scopeKey(e))}},{key:"removeItem",value:function(e){this.wrapped.removeItem(this.scopeKey(e))}},{key:"clear",value:function(){var e=this;Object.keys(this.wrapped).filter((function(t){return t.startsWith(e.scope)})).map(this.wrapped.removeItem.bind(this.wrapped))}}])&&r(t.prototype,n),i&&r(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.default=i,a(i,"GLOBAL_SCOPE_VOLATILE","nextcloud_vol"),a(i,"GLOBAL_SCOPE_PERSISTENT","nextcloud_per")},71957:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,n(69070);var r,a=(r=n(48971))&&r.__esModule?r:{default:r};function i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var s=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),o(this,"appId",void 0),o(this,"persisted",!1),o(this,"clearedOnLogout",!1),this.appId=t}var t,n,r;return t=e,n=[{key:"persist",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this.persisted=e,this}},{key:"clearOnLogout",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this.clearedOnLogout=e,this}},{key:"build",value:function(){return new a.default(this.appId,this.persisted?window.localStorage:window.sessionStorage,!this.clearedOnLogout)}}],n&&i(t.prototype,n),r&&i(t,r),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.default=s},46296:(e,t,n)=>{"use strict";n.d(t,{ko:()=>_e});var r,a=n(18350),i=n.n(a),o=new Uint8Array(16);function s(){if(!r&&!(r="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return r(o)}const u=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;const l=function(e){return"string"==typeof e&&u.test(e)};for(var c=[],d=0;d<256;++d)c.push((d+256).toString(16).substr(1));const f=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(c[e[t+0]]+c[e[t+1]]+c[e[t+2]]+c[e[t+3]]+"-"+c[e[t+4]]+c[e[t+5]]+"-"+c[e[t+6]]+c[e[t+7]]+"-"+c[e[t+8]]+c[e[t+9]]+"-"+c[e[t+10]]+c[e[t+11]]+c[e[t+12]]+c[e[t+13]]+c[e[t+14]]+c[e[t+15]]).toLowerCase();if(!l(n))throw TypeError("Stringified UUID is invalid");return n};const h=function(e,t,n){var r=(e=e||{}).random||(e.rng||s)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(var a=0;a<16;++a)t[n+a]=r[a];return t}return f(r)};var p=n(25108);class m extends Error{}function g(e){return class extends e{constructor(...e){super(...e),this._mutable=!0}isLocked(){return!this._mutable}lock(){this._mutable=!1}unlock(){this._mutable=!0}_modify(){if(!this._mutable)throw new m}_modifyContent(){this._modify()}}}class _ extends Error{}function A(e){return e.toLowerCase()}function F(e){return e.toUpperCase()}function b(e){return e.charAt(0).toUpperCase()+e.slice(1)}function y(e,t){return e.startsWith(t)||(e=t+e),e}const v=new Map;function T(e,t){return v.get(e)||t}function D(e){return new(i().Property)(A(e))}function E(e){return class extends e{constructor(...e){super(...e),this._subscribers=[]}subscribe(e){this._subscribers.push(e)}unsubscribe(e){const t=this._subscribers.indexOf(e);-1!==t&&this._subscribers.splice(t,1)}_notifySubscribers(...e){for(const t of this._subscribers)t(...e)}}}class C extends(E(g(class{}))){constructor(e,t=null){super(),this._name=F(e),this._value=t}get name(){return this._name}get value(){return this._value}set value(e){this._modifyContent(),this._value=e}getFirstValue(){return this.isMultiValue()?this.value.length>0?this.value[0]:null:this.value}*getValueIterator(){this.isMultiValue()?yield*this.value.slice()[Symbol.iterator]():yield this.value}isMultiValue(){return Array.isArray(this._value)}clone(){const e=new this.constructor(this._name);return this.isMultiValue()?e.value=this._value.slice():e.value=this._value,e}_modifyContent(){super._modifyContent(),this._notifySubscribers()}}class w extends(E(g(class{}))){constructor(e){if(new.target===w)throw new TypeError("Cannot instantiate abstract class AbstractValue");super(),this._innerValue=e}toICALJs(){return this._innerValue}_modifyContent(){super._modifyContent(),this._notifySubscribers()}}class k extends w{get rawValue(){return this._innerValue.value}set rawValue(e){this._modifyContent(),this._innerValue.value=e}get value(){return this._innerValue.decodeValue()}set value(e){this._modifyContent(),this._innerValue.setEncodedValue(e)}clone(){return k.fromRawValue(this._innerValue.value)}static fromICALJs(e){return new k(e)}static fromRawValue(e){const t=new(i().Binary)(e);return k.fromICALJs(t)}static fromDecodedValue(e){const t=new(i().Binary);return t.setEncodedValue(e),k.fromICALJs(t)}}class x extends w{get weeks(){return this._innerValue.weeks}set weeks(e){if(this._modifyContent(),e<0)throw new TypeError("Weeks cannot be negative, use isNegative instead");this._innerValue.weeks=e}get days(){return this._innerValue.days}set days(e){if(this._modifyContent(),e<0)throw new TypeError("Days cannot be negative, use isNegative instead");this._innerValue.days=e}get hours(){return this._innerValue.hours}set hours(e){if(this._modifyContent(),e<0)throw new TypeError("Hours cannot be negative, use isNegative instead");this._innerValue.hours=e}get minutes(){return this._innerValue.minutes}set minutes(e){if(this._modifyContent(),e<0)throw new TypeError("Minutes cannot be negative, use isNegative instead");this._innerValue.minutes=e}get seconds(){return this._innerValue.seconds}set seconds(e){if(this._modifyContent(),e<0)throw new TypeError("Seconds cannot be negative, use isNegative instead");this._innerValue.seconds=e}get isNegative(){return this._innerValue.isNegative}set isNegative(e){this._modifyContent(),this._innerValue.isNegative=!!e}get totalSeconds(){return this._innerValue.toSeconds()}set totalSeconds(e){this._modifyContent(),this._innerValue.fromSeconds(e)}compare(e){return this._innerValue.compare(e.toICALJs())}addDuration(e){this._modifyContent(),this.totalSeconds+=e.totalSeconds,this._innerValue.normalize()}subtractDuration(e){this._modifyContent(),this.totalSeconds-=e.totalSeconds,this._innerValue.normalize()}clone(){return x.fromICALJs(this._innerValue.clone())}static fromICALJs(e){return new x(e)}static fromSeconds(e){const t=i().Duration.fromSeconds(e);return new x(t)}static fromData(e){const t=i().Duration.fromData(e);return new x(t)}}class S extends w{get year(){return this._innerValue.year}set year(e){this._modifyContent(),this._innerValue.year=e}get month(){return this._innerValue.month}set month(e){if(this._modifyContent(),e<1||e>12)throw new TypeError("Month out of range");this._innerValue.month=e}get day(){return this._innerValue.day}set day(e){if(this._modifyContent(),e<1||e>31)throw new TypeError("Day out of range");this._innerValue.day=e}get hour(){return this._innerValue.hour}set hour(e){if(this._modifyContent(),e<0||e>23)throw new TypeError("Hour out of range");this._innerValue.hour=e}get minute(){return this._innerValue.minute}set minute(e){if(this._modifyContent(),e<0||e>59)throw new TypeError("Minute out of range");this._innerValue.minute=e}get second(){return this._innerValue.second}set second(e){if(this._modifyContent(),e<0||e>59)throw new TypeError("Second out of range");this._innerValue.second=e}get timezoneId(){return this._innerValue.zone.tzid&&"floating"!==this._innerValue.zone.tzid&&"UTC"===this._innerValue.zone.tzid?this._innerValue.zone.tzid:this._innerValue.timezone?this._innerValue.timezone:this._innerValue.zone.tzid||null}get isDate(){return this._innerValue.isDate}set isDate(e){this._modifyContent(),this._innerValue.isDate=!!e,e&&(this._innerValue.hour=0,this._innerValue.minute=0,this._innerValue.second=0)}get unixTime(){return this._innerValue.toUnixTime()}get jsDate(){return this._innerValue.toJSDate()}addDuration(e){this._innerValue.addDuration(e.toICALJs())}subtractDateWithoutTimezone(e){const t=this._innerValue.subtractDate(e.toICALJs());return x.fromICALJs(t)}subtractDateWithTimezone(e){const t=this._innerValue.subtractDateTz(e.toICALJs());return x.fromICALJs(t)}compare(e){return this._innerValue.compare(e.toICALJs())}compareDateOnlyInGivenTimezone(e,t){return this._innerValue.compareDateOnlyTz(e.toICALJs(),t.toICALTimezone())}getInTimezone(e){const t=this._innerValue.convertToZone(e.toICALTimezone());return S.fromICALJs(t)}getICALTimezone(){return this._innerValue.zone}getInICALTimezone(e){const t=this._innerValue.convertToZone(e);return S.fromICALJs(t)}getInUTC(){const e=this._innerValue.convertToZone(i().Timezone.utcTimezone);return S.fromICALJs(e)}silentlyReplaceTimezone(e){this._modify(),this._innerValue=new(i().Time)({year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second,isDate:this.isDate,timezone:e})}replaceTimezone(e){this._modifyContent(),this._innerValue=i().Time.fromData({year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second,isDate:this.isDate},e.toICALTimezone())}utcOffset(){return this._innerValue.utcOffset()}isFloatingTime(){return"floating"===this._innerValue.zone.tzid}clone(){return S.fromICALJs(this._innerValue.clone())}static fromICALJs(e){return new S(e)}static fromJSDate(e,t=!1){const n=i().Time.fromJSDate(e,t);return S.fromICALJs(n)}static fromData(e,t){const n=i().Time.fromData(e,t?t.toICALTimezone():void 0);return S.fromICALJs(n)}}S.SUNDAY=i().Time.SUNDAY,S.MONDAY=i().Time.MONDAY,S.TUESDAY=i().Time.TUESDAY,S.WEDNESDAY=i().Time.WEDNESDAY,S.THURSDAY=i().Time.THURSDAY,S.FRIDAY=i().Time.FRIDAY,S.SATURDAY=i().Time.SATURDAY,S.DEFAULT_WEEK_START=S.MONDAY;class N extends w{constructor(...e){super(...e),this._start=S.fromICALJs(this._innerValue.start),this._end=null,this._duration=null}get start(){return this._start}set start(e){this._modifyContent(),this._start=e,this._innerValue.start=e.toICALJs()}get end(){return this._end||(this._duration&&(this._duration.lock(),this._duration=null),this._innerValue.end=this._innerValue.getEnd(),this._end=S.fromICALJs(this._innerValue.end),this._innerValue.duration=null,this.isLocked()&&this._end.lock()),this._end}set end(e){this._modifyContent(),this._innerValue.duration=null,this._innerValue.end=e.toICALJs(),this._end=e}get duration(){return this._duration||(this._end&&(this._end.lock(),this._end=null),this._innerValue.duration=this._innerValue.getDuration(),this._duration=x.fromICALJs(this._innerValue.duration),this._innerValue.end=null,this.isLocked()&&this._duration.lock()),this._duration}set duration(e){this._modifyContent(),this._innerValue.end=null,this._innerValue.duration=e.toICALJs(),this._duration=e}lock(){super.lock(),this.start.lock(),this._end&&this._end.lock(),this._duration&&this._duration.lock()}unlock(){super.unlock(),this.start.unlock(),this._end&&this._end.unlock(),this._duration&&this._duration.unlock()}clone(){return N.fromICALJs(this._innerValue.clone())}static fromICALJs(e){return new N(e)}static fromDataWithEnd(e){const t=i().Period.fromData({start:e.start.toICALJs(),end:e.end.toICALJs()});return N.fromICALJs(t)}static fromDataWithDuration(e){const t=i().Period.fromData({start:e.start.toICALJs(),duration:e.duration.toICALJs()});return N.fromICALJs(t)}}const O=["SECONDLY","MINUTELY","HOURLY","DAILY","WEEKLY","MONTHLY","YEARLY"];class R extends w{constructor(e,t){super(e),this._until=t}get interval(){return this._innerValue.interval}set interval(e){this._modifyContent(),this._innerValue.interval=parseInt(e,10)}get weekStart(){return this._innerValue.wkst}set weekStart(e){if(this._modifyContent(),e<S.SUNDAY||e>S.SATURDAY)throw new TypeError("Weekstart out of range");this._innerValue.wkst=e}get until(){return!this._until&&this._innerValue.until&&(this._until=S.fromICALJs(this._innerValue.until)),this._until}set until(e){this._modifyContent(),this._until&&this._until.lock(),this._until=e,this._innerValue.count=null,this._innerValue.until=e.toICALJs()}get count(){return this._innerValue.count}set count(e){this._modifyContent(),this._until&&(this._until.lock(),this._until=null),this._innerValue.until=null,this._innerValue.count=parseInt(e,10)}get frequency(){return this._innerValue.freq}set frequency(e){if(this._modifyContent(),!O.includes(e))throw new TypeError("Unknown frequency");this._innerValue.freq=e}setToInfinite(){this._modifyContent(),this._until&&(this._until.lock(),this._until=null),this._innerValue.until=null,this._innerValue.count=null}isFinite(){return this._innerValue.isFinite()}isByCount(){return this._innerValue.isByCount()}addComponent(e,t){this._modifyContent(),this._innerValue.addComponent(e,t)}setComponent(e,t){this._modifyContent(),0===t.length?delete this._innerValue.parts[e.toUpperCase()]:this._innerValue.setComponent(e,t)}removeComponent(e){delete this._innerValue.parts[F(e)]}getComponent(e){return this._innerValue.getComponent(e)}isRuleValid(){return!0}lock(){super.lock(),this._until&&this._until.lock()}unlock(){super.unlock(),this._until&&this._until.unlock()}clone(){return R.fromICALJs(this._innerValue.clone())}static fromICALJs(e,t=null){return new R(e,t)}static fromData(e){let t=null;e.until&&(t=e.until,e.until=e.until.toICALJs());const n=i().Recur.fromData(e);return R.fromICALJs(n,t)}}class B extends w{get hours(){return this._innerValue.hours}set hours(e){this._modifyContent(),this._innerValue.hours=e}get minutes(){return this._innerValue.minutes}set minutes(e){this._modifyContent(),this._innerValue.minutes=e}get factor(){return this._innerValue.factor}set factor(e){if(this._modifyContent(),1!==e&&-1!==e)throw new TypeError("Factor may only be set to 1 or -1");this._innerValue.factor=e}get totalSeconds(){return this._innerValue.toSeconds()}set totalSeconds(e){this._modifyContent(),this._innerValue.fromSeconds(e)}compare(e){return this._innerValue.compare(e.toICALJs())}clone(){return B.fromICALJs(this._innerValue.clone())}static fromICALJs(e){return new B(e)}static fromData(e){const t=new(i().UtcOffset);return t.fromData(e),B.fromICALJs(t)}static fromSeconds(e){const t=i().UtcOffset.fromSeconds(e);return B.fromICALJs(t)}}class M extends Error{}class L extends(E(g(class{}))){constructor(e,t=null,n=[],r=null,a=null){super(),this._name=F(e),this._value=t,this._parameters=new Map,this._root=r,this._parent=a,this._setParametersFromConstructor(n),t instanceof w&&t.subscribe((()=>this._notifySubscribers()))}get name(){return this._name}get value(){return this._value}set value(e){this._modifyContent(),this._value=e,e instanceof w&&e.subscribe((()=>this._notifySubscribers()))}get root(){return this._root}set root(e){this._modify(),this._root=e}get parent(){return this._parent}set parent(e){this._modify(),this._parent=e}getFirstValue(){return this.isMultiValue()?this.value.length>0?this.value[0]:null:this.value}*getValueIterator(){this.isMultiValue()?yield*this.value.slice()[Symbol.iterator]():yield this.value}addValue(e){if(!this.isMultiValue())throw new TypeError("This is not a multivalue property");this._modifyContent(),this.value.push(e)}hasValue(e){if(!this.isMultiValue())throw new TypeError("This is not a multivalue property");return this.value.includes(e)}removeValue(e){if(!this.hasValue(e))return;this._modifyContent();const t=this.value.indexOf(e);this.value.splice(t,1)}setParameter(e){this._modify(),this._parameters.set(e.name,e),e.subscribe((()=>this._notifySubscribers()))}getParameter(e){return this._parameters.get(F(e))}*getParametersIterator(){yield*this._parameters.values()}getParameterFirstValue(e){const t=this.getParameter(e);return t instanceof C?t.isMultiValue()?t.value[0]:t.value:null}hasParameter(e){return this._parameters.has(F(e))}deleteParameter(e){this._modify(),this._parameters.delete(F(e))}updateParameterIfExist(e,t){if(this._modify(),this.hasParameter(e)){this.getParameter(e).value=t}else{const n=new C(F(e),t);this.setParameter(n)}}isMultiValue(){return Array.isArray(this._value)}isDecoratedValue(){return this.isMultiValue()?this._value[0]instanceof w:this._value instanceof w}lock(){super.lock();for(const e of this.getParametersIterator())e.lock();if(this.isDecoratedValue())for(const e of this.getValueIterator())e.lock()}unlock(){super.unlock();for(const e of this.getParametersIterator())e.unlock();if(this.isDecoratedValue())for(const e of this.getValueIterator())e.unlock()}clone(){const e=[];for(const t of this.getParametersIterator())e.push(t.clone());return new this.constructor(this.name,this._cloneValue(),e,this.root,this.parent)}_cloneValue(){return this.isDecoratedValue()?this.isMultiValue()?this._value.map((e=>e.clone())):this._value.clone():this.isMultiValue()?this._value.slice():this._value}_setParametersFromConstructor(e){e.forEach((e=>{e instanceof C||(e=new C(e[0],e[1])),this.setParameter(e)}))}static fromICALJs(e,t=null,n=null){if(!(e instanceof i().Property))throw new _;let r;if(e.isDecorated){const t=function(e){switch(A(e)){case"binary":return k;case"date":case"date-time":return S;case"duration":return x;case"period":return N;case"recur":return R;case"utc-offset":return B;default:throw new M}}(e.getFirstValue().icaltype);r=e.isMultiValue?e.getValues().map((e=>t.fromICALJs(e))):t.fromICALJs(e.getFirstValue())}else r=e.isMultiValue?e.getValues():e.getFirstValue();const a=[];return Object.keys(Object.assign({},e.toJSON()[1])).forEach((t=>{"TZID"!==F(t)&&a.push([t,e.getParameter(t)])})),new this(e.name,r,a,t,n)}toICALJs(){const e=D(A(this.name));this.isMultiValue()?this.isDecoratedValue()?e.setValues(this.value.map((e=>e.toICALJs()))):e.setValues(this.value):this.isDecoratedValue()?e.setValue(this.value.toICALJs()):e.setValue(this.value);for(const t of this.getParametersIterator())e.setParameter(A(t.name),t.value);const t=this.getFirstValue();return t instanceof S&&"floating"!==t.timezoneId&&"UTC"!==t.timezoneId&&!t.isDate&&e.setParameter("tzid",t.timezoneId),e}_modifyContent(){super._modifyContent(),this._notifySubscribers()}}class Y extends L{get formatType(){return this.getParameterFirstValue("FMTTYPE")}set formatType(e){this.updateParameterIfExist("FMTTYPE",e)}get uri(){return this._value instanceof k?null:this._value}set uri(e){this.value=e}get encoding(){return this._value instanceof k?"BASE64":null}get data(){return this._value instanceof k?this._value.value:null}set data(e){this.value instanceof k?this.value.value=e:this.value=k.fromDecodedValue(e)}toICALJs(){const e=super.toICALJs();return this._value instanceof k&&e.setParameter("ENCODING","BASE64"),e}static fromData(e,t=null){const n=k.fromDecodedValue(e),r=new Y("ATTACH",n);return t&&(r.formatType=t),r}static fromLink(e,t=null){const n=new Y("ATTACH",e);return t&&(n.formatType=t),n}}class j extends L{get role(){const e=["CHAIR","REQ-PARTICIPANT","OPT-PARTICIPANT","NON-PARTICIPANT"];if(this.hasParameter("ROLE")){const t=this.getParameterFirstValue("ROLE");if(e.includes(t))return t}return"REQ-PARTICIPANT"}set role(e){this.updateParameterIfExist("ROLE",e)}get userType(){const e=["INDIVIDUAL","GROUP","RESOURCE","ROOM","UNKNOWN"];if(this.hasParameter("CUTYPE")){const t=this.getParameterFirstValue("CUTYPE");return e.includes(t)?t:"UNKNOWN"}return"INDIVIDUAL"}set userType(e){this.updateParameterIfExist("CUTYPE",e)}get rsvp(){if(this.hasParameter("RSVP")){return"TRUE"===F(this.getParameterFirstValue("RSVP"))}return!1}set rsvp(e){this.updateParameterIfExist("RSVP",e?"TRUE":"FALSE")}get commonName(){return this.getParameterFirstValue("CN")}set commonName(e){this.updateParameterIfExist("CN",e)}get participationStatus(){let e;e=this.parent?this.parent.name:"VEVENT";const t={VEVENT:["NEEDS-ACTION","ACCEPTED","DECLINED","TENTATIVE","DELEGATED"],VJOURNAL:["NEEDS-ACTION","ACCEPTED","DECLINED"],VTODO:["NEEDS-ACTION","ACCEPTED","DECLINED","TENTATIVE","DELEGATED","COMPLETED","IN-PROCESS"]};if(this.hasParameter("PARTSTAT")){const n=this.getParameterFirstValue("PARTSTAT");return t[e].includes(n)?n:"NEEDS-ACTION"}return"NEEDS-ACTION"}set participationStatus(e){this.updateParameterIfExist("PARTSTAT",e)}get language(){return this.getParameterFirstValue("LANGUAGE")}set language(e){this.updateParameterIfExist("LANGUAGE",e)}get email(){return this.value}set email(e){this.value=y(e,"mailto:")}isOrganizer(){return"ORGANIZER"===this._name}static fromNameAndEMail(e,t,n=!1){const r=n?"ORGANIZER":"ATTENDEE";return t=y(t,"mailto:"),new j(r,t,[["CN",e]])}static fromNameEMailRoleUserTypeAndRSVP(e,t,n,r,a,i=!1){const o=i?"ORGANIZER":"ATTENDEE";return t=y(t,"mailto:"),new j(o,t,[["CN",e],["ROLE",n],["CUTYPE",r],["RSVP",a?"TRUE":"FALSE"]])}}i().design.icalendar.property.conference={defaultType:"uri"},i().design.icalendar.param.feature={valueType:"cal-address",multiValue:","};class I extends L{*getFeatureIterator(){if(!this.hasParameter("FEATURE"))return;const e=this.getParameter("FEATURE");yield*e.getValueIterator()}listAllFeatures(){return this.hasParameter("FEATURE")?this.getParameter("FEATURE").value.slice():[]}addFeature(e){if(this._modify(),this.hasParameter("FEATURE")){if(this.hasFeature(e))return;this.getParameter("FEATURE").value.push(e)}else this.updateParameterIfExist("FEATURE",[e])}removeFeature(e){if(this._modify(),!this.hasFeature(e))return;const t=this.getParameter("FEATURE"),n=t.value.indexOf(e);t.value.splice(n,1)}clearAllFeatures(){this.deleteParameter("FEATURE")}hasFeature(e){if(!this.hasParameter("FEATURE"))return!1;const t=this.getParameter("FEATURE");return!!Array.isArray(t.value)&&t.value.includes(e)}get label(){return this.getParameterFirstValue("LABEL")}set label(e){this.updateParameterIfExist("LABEL",e)}get uri(){return this.value}set uri(e){this.value=e}toICALJs(){const e=super.toICALJs();return e.setParameter("value","URI"),e}static fromURILabelAndFeatures(e,t=null,n=null){const r=new I("CONFERENCE",e);return t&&r.updateParameterIfExist("label",t),n&&r.updateParameterIfExist("feature",n),r}}class P extends L{get type(){const e=["FREE","BUSY","BUSY-UNAVAILABLE","BUSY-TENTATIVE"];if(this.hasParameter("FBTYPE")){const t=this.getParameterFirstValue("FBTYPE");if(e.includes(t))return t}return"BUSY"}set type(e){this.updateParameterIfExist("FBTYPE",e)}static fromPeriodAndType(e,t){return new P("FREEBUSY",e,[["fbtype",t]])}}class Z extends L{constructor(e,t=[0,0],n=[],r=null,a=null){super(e,t,n,r,a)}get latitude(){return this._value[0]}set latitude(e){this._modifyContent(),"number"!=typeof e&&(e=parseFloat(e)),this._value[0]=e}get longitude(){return this._value[1]}set longitude(e){this._modifyContent(),"number"!=typeof e&&(e=parseFloat(e)),this._value[1]=e}toICALJs(){const e=D(A(this.name));return e.setValue(this.value),this._parameters.forEach((t=>{e.setParameter(A(t.name),t.value)})),e}static fromPosition(e,t){return new Z("GEO",[e,t])}}class U extends Y{get display(){return this.getParameterFirstValue("DISPLAY")||"BADGE"}set display(e){this.updateParameterIfExist("DISPLAY",e)}static fromData(e,t=null,n=null){const r=k.fromDecodedValue(e),a=new U("IMAGE",r);return t&&(a.display=t),n&&(a.formatType=n),a}static fromLink(e,t=null,n=null){const r=new U("IMAGE",e);return t&&(r.display=t),n&&(r.formatType=n),r}}class G extends L{get relationType(){const e=["PARENT","CHILD","SIBLING"],t="PARENT";if(this.hasParameter("RELTYPE")){const n=this.getParameterFirstValue("RELTYPE");return e.includes(n)?n:t}return t}set relationType(e){this.updateParameterIfExist("RELTYPE",e)}get relatedId(){return this.value}set relatedId(e){this.value=e}static fromRelTypeAndId(e,t){return new G("RELATED-TO",t,[["RELTYPE",e]])}}class H extends L{constructor(e,t=["1","Pending"],n=[],r=null,a=null){super(e,t,n,r,a)}get statusCode(){return parseFloat(this.value[0])}set statusCode(e){this._modifyContent(),this.value[0]=e.toString(),e===Math.floor(e)&&(this.value[0]+=".0")}get statusMessage(){return this.value[1]}set statusMessage(e){this._modifyContent(),this.value[1]=e}get exceptionData(){return this.value[2]?this.value[2]:null}set exceptionData(e){this._modifyContent(),this.value[2]=e}isPending(){return this.statusCode>=1&&this.statusCode<2}isSuccessful(){return this.statusCode>=2&&this.statusCode<3}isClientError(){return this.statusCode>=3&&this.statusCode<4}isSchedulingError(){return this.statusCode>=4&&this.statusCode<5}toICALJs(){const e=D(A(this.name));return e.setValue(this.value),this._parameters.forEach((t=>{e.setParameter(A(t.name),t.value)})),e}static fromCodeAndMessage(e,t){return new H("REQUEST-STATUS",[e.toString(),t])}}H.SUCCESS=[2,"Success"],H.SUCCESS_FALLBACK=[2.1,"Success, but fallback taken on one or more property values."],H.SUCCESS_PROP_IGNORED=[2.2,"Success; invalid property ignored."],H.SUCCESS_PROPPARAM_IGNORED=[2.3,"Success; invalid property parameter ignored."],H.SUCCESS_NONSTANDARD_PROP_IGNORED=[2.4,"Success; unknown, non-standard property ignored."],H.SUCCESS_NONSTANDARD_PROPPARAM_IGNORED=[2.5,"Success; unknown, non-standard property value ignored."],H.SUCCESS_COMP_IGNORED=[2.6,"Success; invalid calendar component ignored."],H.SUCCESS_FORWARDED=[2.7,"Success; request forwarded to Calendar User."],H.SUCCESS_REPEATING_IGNORED=[2.8,"Success; repeating event ignored. Scheduled as a single component."],H.SUCCESS_TRUNCATED_END=[2.9,"Success; truncated end date time to date boundary."],H.SUCCESS_REPEATING_VTODO_IGNORED=[2.1,"Success; repeating VTODO ignored. Scheduled as a single VTODO."],H.SUCCESS_UNBOUND_RRULE_CLIPPED=[2.11,"Success; unbounded RRULE clipped at some finite number of instances."],H.CLIENT_INVALID_PROPNAME=[3,"Invalid property name."],H.CLIENT_INVALID_PROPVALUE=[3.1,"Invalid property value."],H.CLIENT_INVALID_PROPPARAM=[3.2,"Invalid property parameter."],H.CLIENT_INVALID_PROPPARAMVALUE=[3.3,"Invalid property parameter value."],H.CLIENT_INVALUD_CALENDAR_COMP_SEQ=[3.4,"Invalid calendar component sequence."],H.CLIENT_INVALID_DATE_TIME=[3.5,"Invalid date or time."],H.CLIENT_INVALID_RRULE=[3.6,"Invalid rule."],H.CLIENT_INVALID_CU=[3.7,"Invalid Calendar User."],H.CLIENT_NO_AUTHORITY=[3.8,"No authority."],H.CLIENT_UNSUPPORTED_VERSION=[3.9,"Unsupported version."],H.CLIENT_TOO_LARGE=[3.1,"Request entity too large."],H.CLIENT_REQUIRED_COMP_OR_PROP_MISSING=[3.11,"Required component or property missing."],H.CLIENT_UNKNOWN_COMP_OR_PROP=[3.12,"Unknown component or property found."],H.CLIENT_UNSUPPORTED_COMP_OR_PROP=[3.13,"Unsupported component or property found."],H.CLIENT_UNSUPPORTED_CAPABILITY=[3.14,"Unsupported capability."],H.SCHEDULING_EVENT_CONFLICT=[4,"Event conflict. Date/time is busy."],H.SERVER_REQUEST_NOT_SUPPORTED=[5,"Request not supported."],H.SERVER_SERVICE_UNAVAILABLE=[5.1,"Service unavailable."],H.SERVER_INVALID_CALENDAR_SERVICE=[5.2,"Invalid calendar service."],H.SERVER_NO_SCHEDULING_FOR_USER=[5.3,"No scheduling support for user."];class q extends L{get alternateText(){return this.getParameterFirstValue("ALTREP")}set alternateText(e){this.updateParameterIfExist("ALTREP",e)}get language(){return this.getParameterFirstValue("LANGUAGE")}set language(e){this.updateParameterIfExist("LANGUAGE",e)}}class z extends L{get related(){return this.hasParameter("RELATED")?this.getParameterFirstValue("RELATED"):"START"}set related(e){this.updateParameterIfExist("RELATED",e)}get value(){return super.value}set value(e){super.value=e,e instanceof S&&(this.deleteParameter("RELATED"),super.value=e.getInUTC())}isRelative(){return this.getFirstValue()instanceof x}static fromAbsolute(e){return new z("TRIGGER",e)}static fromRelativeAndRelated(e,t=!0){return new z("TRIGGER",e,[["RELATED",t?"START":"END"]])}}function $(e){switch(F(e)){case"ATTACH":return Y;case"ATTENDEE":case"ORGANIZER":return j;case"CONFERENCE":return I;case"FREEBUSY":return P;case"GEO":return Z;case"IMAGE":return U;case"RELATED-TO":return G;case"REQUEST-STATUS":return H;case"TRIGGER":return z;case"COMMENT":case"CONTACT":case"DESCRIPTION":case"LOCATION":case"SUMMARY":return q;default:return L}}class W extends(E(g(class{}))){constructor(e,t=[],n=[],r=null,a=null){super(),this._name=F(e),this._properties=new Map,this._components=new Map,this._root=r,this._parent=a,this._setPropertiesFromConstructor(t),this._setComponentsFromConstructor(n)}get name(){return this._name}get root(){return this._root}set root(e){this._modify(),this._root=e;for(const t of this.getPropertyIterator())t.root=e;for(const t of this.getComponentIterator())t.root=e}get parent(){return this._parent}set parent(e){this._modify(),this._parent=e}getFirstProperty(e){return this._properties.has(F(e))?this._properties.get(F(e))[0]:null}getFirstPropertyFirstValue(e){const t=this.getFirstProperty(e);return t?t.getFirstValue():null}updatePropertyWithValue(e,t){this._modify();const n=this.getFirstProperty(e);if(n)n.value=t;else{const n=new($(e))(e,t,[],this,this.root);this.addProperty(n)}}*getPropertyIterator(e=null){if(e){if(!this.hasProperty(e))return;yield*this._properties.get(F(e)).slice()[Symbol.iterator]()}else for(const e of this._properties.keys())yield*this.getPropertyIterator(e)}*_getAllOfPropertyByLang(e,t){for(const n of this.getPropertyIterator(e))n.getParameterFirstValue("LANGUAGE")===t&&(yield n)}_getFirstOfPropertyByLang(e,t){return this._getAllOfPropertyByLang(e,t).next().value||null}addProperty(e){if(this._modify(),e.root=this.root,e.parent=this,this._properties.has(e.name)){const t=this._properties.get(e.name);if(-1!==t.indexOf(e))return!1;t.push(e)}else this._properties.set(e.name,[e]);return e.subscribe((()=>this._notifySubscribers())),!0}hasProperty(e){return this._properties.has(F(e))}deleteProperty(e){if(this._modify(),!this._properties.has(e.name))return!1;const t=this._properties.get(e.name),n=t.indexOf(e);return-1!==n&&(-1!==n&&1===t.length?this._properties.delete(e.name):t.splice(n,1),!0)}deleteAllProperties(e){return this._modify(),this._properties.delete(F(e))}getFirstComponent(e){return this.hasComponent(e)?this._components.get(F(e))[0]:null}*getComponentIterator(e){if(e){if(!this.hasComponent(e))return;yield*this._components.get(F(e)).slice()[Symbol.iterator]()}else for(const e of this._components.keys())yield*this.getComponentIterator(e)}addComponent(e){if(this._modify(),e.root=this.root,e.parent=this,this._components.has(e.name)){const t=this._components.get(e.name);if(-1!==t.indexOf(e))return!1;t.push(e)}else this._components.set(e.name,[e]);return e.subscribe((()=>this._notifySubscribers())),!0}hasComponent(e){return this._components.has(F(e))}deleteComponent(e){if(this._modify(),!this._components.has(e.name))return!1;const t=this._components.get(e.name),n=t.indexOf(e);return-1!==n&&(-1!==n&&1===t.length?this._components.delete(e.name):t.splice(n,1),!0)}deleteAllComponents(e){return this._modify(),this._components.delete(F(e))}lock(){super.lock();for(const e of this.getPropertyIterator())e.lock();for(const e of this.getComponentIterator())e.lock()}unlock(){super.unlock();for(const e of this.getPropertyIterator())e.unlock();for(const e of this.getComponentIterator())e.unlock()}clone(){const e=[];for(const t of this.getPropertyIterator())e.push(t.clone());const t=[];for(const e of this.getComponentIterator())t.push(e.clone());return new this.constructor(this.name,e,t,this.root,this.parent)}_setPropertiesFromConstructor(e){for(let t of e){if(Array.isArray(t)){t=new($(t[0]))(t[0],t[1])}this.addProperty(t)}}_setComponentsFromConstructor(e){for(const t of e)this.addComponent(t)}static fromICALJs(e,t=null,n=null){if(!(e instanceof i().Component))throw new _;const r=new this(e.name,[],[],t,n);for(const n of e.getAllProperties()){const e=$(n.name).fromICALJs(n,t,r);r.addProperty(e)}for(const n of e.getAllSubcomponents()){const e=this._getConstructorForComponentName(n.name).fromICALJs(n,t,r);r.addComponent(e)}return r}static _getConstructorForComponentName(e){return W}toICALJs(){const e=(t=A(this.name),new(i().Component)(A(t)));var t;for(const t of this.getPropertyIterator())e.addProperty(t.toICALJs());for(const t of this.getComponentIterator())e.addSubcomponent(t.toICALJs());return e}}function V(e,t,n=!0){t=function(e){"string"==typeof e&&(e={name:e});return Object.assign({},{iCalendarName:F(e.name),pluralName:e.name+"s",allowedValues:null,defaultValue:null,unknownValue:null},e)}(t),Object.defineProperty(e,t.name,{get(){const e=this.getFirstPropertyFirstValue(t.iCalendarName);return e?Array.isArray(t.allowedValues)&&!t.allowedValues.includes(e)?t.unknownValue:e:t.defaultValue},set(e){if(this._modify(),null!==e){if(Array.isArray(t.allowedValues)&&!t.allowedValues.includes(e))throw new TypeError("Illegal value");this.updatePropertyWithValue(t.iCalendarName,e)}else this.deleteAllProperties(t.iCalendarName)}})}function Q(e,t){e["get"+b((t=K(t)).name)+"Iterator"]=function*(){yield*this.getPropertyIterator(t.iCalendarName)},e["get"+b(t.name)+"List"]=function(){return Array.from(this["get"+b(t.name)+"Iterator"]())},e["remove"+b(t.name)]=function(e){this.deleteProperty(e)},e["clearAll"+b(t.pluralName)]=function(){this.deleteAllProperties(t.iCalendarName)}}function J(e,t){e["get"+b((t=K(t)).name)+"Iterator"]=function*(e=null){for(const n of this._getAllOfPropertyByLang(t.iCalendarName,e))yield*n.getValueIterator()},e["get"+b(t.name)+"List"]=function(e=null){return Array.from(this["get"+b(t.name)+"Iterator"](e))},e["add"+b(t.name)]=function(e,n=null){const r=this._getFirstOfPropertyByLang(t.iCalendarName,n);if(r)r.addValue(e);else{const r=new L(t.iCalendarName,[e]);if(n){const e=new C("LANGUAGE",n);r.setParameter(e)}this.addProperty(r)}},e["remove"+b(t.name)]=function(e,n=null){for(const r of this._getAllOfPropertyByLang(t.iCalendarName,n))if(r.isMultiValue()&&r.hasValue(e))return 1===r.value.length?(this.deleteProperty(r),!0):(r.removeValue(e),!0);return!1},e["clearAll"+b(t.pluralName)]=function(e=null){for(const n of this._getAllOfPropertyByLang(t.iCalendarName,e))this.deleteProperty(n)}}function K(e){return"string"==typeof e&&(e={name:e}),Object.assign({},{iCalendarName:F(e.name),pluralName:e.name+"s"},e)}function X(){return new Date}class ee extends Error{}class te{constructor(e){this._masterItem=e,this._recurrenceExceptionItems=new Map,this._rangeRecurrenceExceptionItemsIndex=[],this._rangeRecurrenceExceptionItemsDiffCache=new Map,this._rangeRecurrenceExceptionItems=new Map}get masterItem(){return this._masterItem}set masterItem(e){this._masterItem=e}*getRecurrenceExceptionIterator(){yield*this._recurrenceExceptionItems.values()}getRecurrenceExceptionList(){return Array.from(this.getRecurrenceExceptionIterator())}hasRecurrenceExceptionForId(e){return e instanceof S?e=e.unixTime:e instanceof i().Time&&(e=e.toUnixTime()),this._recurrenceExceptionItems.has(e)}getRecurrenceException(e){return e instanceof S?e=e.unixTime:e instanceof i().Time&&(e=e.toUnixTime()),this._recurrenceExceptionItems.get(e)||null}hasRangeRecurrenceExceptionForId(e){return e instanceof S?e=e.unixTime:e instanceof i().Time&&(e=e.toUnixTime()),0!==this._rangeRecurrenceExceptionItemsIndex.length&&this._rangeRecurrenceExceptionItemsIndex[0]<e}getRangeRecurrenceExceptionForId(e){e instanceof S?e=e.unixTime:e instanceof i().Time&&(e=e.toUnixTime());const t=i().helpers.binsearchInsert(this._rangeRecurrenceExceptionItemsIndex,e,((e,t)=>e-t));if(0===t)return null;const n=this._rangeRecurrenceExceptionItemsIndex[t-1];return this._rangeRecurrenceExceptionItems.get(n)}getRangeRecurrenceExceptionDiff(e){if(e instanceof S?e=e.unixTime:e instanceof i().Time&&(e=e.toUnixTime()),this._rangeRecurrenceExceptionItemsDiffCache.has(e))return this._rangeRecurrenceExceptionItemsDiffCache.get(e);const t=this.getRangeRecurrenceExceptionForId(e);if(!t)return null;const n=t.recurrenceId,r=t.startDate.subtractDateWithTimezone(n);return r.lock(),this._rangeRecurrenceExceptionItemsDiffCache.set(e,r),r}relateRecurrenceException(e){this._modify();const t=this._getRecurrenceIdKey(e);if(this._recurrenceExceptionItems.set(t,e),e.modifiesFuture()){this._rangeRecurrenceExceptionItems.set(t,e);const n=i().helpers.binsearchInsert(this._rangeRecurrenceExceptionItemsIndex,t,((e,t)=>e-t));this._rangeRecurrenceExceptionItemsIndex.splice(n,0,t)}e.recurrenceManager=this}removeRecurrenceException(e){const t=this._getRecurrenceIdKey(e);this.removeRecurrenceExceptionByRecurrenceId(t)}removeRecurrenceExceptionByRecurrenceId(e){this._modify(),this._recurrenceExceptionItems.delete(e),this._rangeRecurrenceExceptionItems.delete(e),this._rangeRecurrenceExceptionItemsDiffC