@dcupl/bundle 2.0.0-beta.5 → 2.0.0-beta.6

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.
@@ -1,16 +1,16 @@
1
- (function(){"use strict";var M=typeof globalThis<"u"&&globalThis||typeof self<"u"&&self||typeof global<"u"&&global||{},T={searchParams:"URLSearchParams"in M,iterable:"Symbol"in M&&"iterator"in Symbol,blob:"FileReader"in M&&"Blob"in M&&(function(){try{return new Blob,!0}catch{return!1}})(),formData:"FormData"in M,arrayBuffer:"ArrayBuffer"in M};function wi(r){return r&&DataView.prototype.isPrototypeOf(r)}if(T.arrayBuffer)var $i=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],Ci=ArrayBuffer.isView||function(r){return r&&$i.indexOf(Object.prototype.toString.call(r))>-1};function _e(r){if(typeof r!="string"&&(r=String(r)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(r)||r==="")throw new TypeError('Invalid character in header field name: "'+r+'"');return r.toLowerCase()}function Nt(r){return typeof r!="string"&&(r=String(r)),r}function zt(r){var e={next:function(){var t=r.shift();return{done:t===void 0,value:t}}};return T.iterable&&(e[Symbol.iterator]=function(){return e}),e}function P(r){this.map={},r instanceof P?r.forEach(function(e,t){this.append(t,e)},this):Array.isArray(r)?r.forEach(function(e){if(e.length!=2)throw new TypeError("Headers constructor: expected name/value pair to be length 2, found"+e.length);this.append(e[0],e[1])},this):r&&Object.getOwnPropertyNames(r).forEach(function(e){this.append(e,r[e])},this)}P.prototype.append=function(r,e){r=_e(r),e=Nt(e);var t=this.map[r];this.map[r]=t?t+", "+e:e},P.prototype.delete=function(r){delete this.map[_e(r)]},P.prototype.get=function(r){return r=_e(r),this.has(r)?this.map[r]:null},P.prototype.has=function(r){return this.map.hasOwnProperty(_e(r))},P.prototype.set=function(r,e){this.map[_e(r)]=Nt(e)},P.prototype.forEach=function(r,e){for(var t in this.map)this.map.hasOwnProperty(t)&&r.call(e,this.map[t],t,this)},P.prototype.keys=function(){var r=[];return this.forEach(function(e,t){r.push(t)}),zt(r)},P.prototype.values=function(){var r=[];return this.forEach(function(e){r.push(e)}),zt(r)},P.prototype.entries=function(){var r=[];return this.forEach(function(e,t){r.push([t,e])}),zt(r)},T.iterable&&(P.prototype[Symbol.iterator]=P.prototype.entries);function Lt(r){if(!r._noBody){if(r.bodyUsed)return Promise.reject(new TypeError("Already read"));r.bodyUsed=!0}}function Yr(r){return new Promise(function(e,t){r.onload=function(){e(r.result)},r.onerror=function(){t(r.error)}})}function _i(r){var e=new FileReader,t=Yr(e);return e.readAsArrayBuffer(r),t}function Di(r){var e=new FileReader,t=Yr(e),s=/charset=([A-Za-z0-9_-]+)/.exec(r.type),n=s?s[1]:"utf-8";return e.readAsText(r,n),t}function xi(r){for(var e=new Uint8Array(r),t=new Array(e.length),s=0;s<e.length;s++)t[s]=String.fromCharCode(e[s]);return t.join("")}function es(r){if(r.slice)return r.slice(0);var e=new Uint8Array(r.byteLength);return e.set(new Uint8Array(r)),e.buffer}function ts(){return this.bodyUsed=!1,this._initBody=function(r){this.bodyUsed=this.bodyUsed,this._bodyInit=r,r?typeof r=="string"?this._bodyText=r:T.blob&&Blob.prototype.isPrototypeOf(r)?this._bodyBlob=r:T.formData&&FormData.prototype.isPrototypeOf(r)?this._bodyFormData=r:T.searchParams&&URLSearchParams.prototype.isPrototypeOf(r)?this._bodyText=r.toString():T.arrayBuffer&&T.blob&&wi(r)?(this._bodyArrayBuffer=es(r.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):T.arrayBuffer&&(ArrayBuffer.prototype.isPrototypeOf(r)||Ci(r))?this._bodyArrayBuffer=es(r):this._bodyText=r=Object.prototype.toString.call(r):(this._noBody=!0,this._bodyText=""),this.headers.get("content-type")||(typeof r=="string"?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):T.searchParams&&URLSearchParams.prototype.isPrototypeOf(r)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},T.blob&&(this.blob=function(){var r=Lt(this);if(r)return r;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))}),this.arrayBuffer=function(){if(this._bodyArrayBuffer){var r=Lt(this);return r||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer))}else{if(T.blob)return this.blob().then(_i);throw new Error("could not read as ArrayBuffer")}},this.text=function(){var r=Lt(this);if(r)return r;if(this._bodyBlob)return Di(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(xi(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},T.formData&&(this.formData=function(){return this.text().then(Ri)}),this.json=function(){return this.text().then(JSON.parse)},this}var Pi=["CONNECT","DELETE","GET","HEAD","OPTIONS","PATCH","POST","PUT","TRACE"];function ji(r){var e=r.toUpperCase();return Pi.indexOf(e)>-1?e:r}function ue(r,e){if(!(this instanceof ue))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');e=e||{};var t=e.body;if(r instanceof ue){if(r.bodyUsed)throw new TypeError("Already read");this.url=r.url,this.credentials=r.credentials,e.headers||(this.headers=new P(r.headers)),this.method=r.method,this.mode=r.mode,this.signal=r.signal,!t&&r._bodyInit!=null&&(t=r._bodyInit,r.bodyUsed=!0)}else this.url=String(r);if(this.credentials=e.credentials||this.credentials||"same-origin",(e.headers||!this.headers)&&(this.headers=new P(e.headers)),this.method=ji(e.method||this.method||"GET"),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal||(function(){if("AbortController"in M){var o=new AbortController;return o.signal}})(),this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&t)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(t),(this.method==="GET"||this.method==="HEAD")&&(e.cache==="no-store"||e.cache==="no-cache")){var s=/([?&])_=[^&]*/;if(s.test(this.url))this.url=this.url.replace(s,"$1_="+new Date().getTime());else{var n=/\?/;this.url+=(n.test(this.url)?"&":"?")+"_="+new Date().getTime()}}}ue.prototype.clone=function(){return new ue(this,{body:this._bodyInit})};function Ri(r){var e=new FormData;return r.trim().split("&").forEach(function(t){if(t){var s=t.split("="),n=s.shift().replace(/\+/g," "),o=s.join("=").replace(/\+/g," ");e.append(decodeURIComponent(n),decodeURIComponent(o))}}),e}function Ei(r){var e=new P,t=r.replace(/\r?\n[\t ]+/g," ");return t.split("\r").map(function(s){return s.indexOf(`
2
- `)===0?s.substr(1,s.length):s}).forEach(function(s){var n=s.split(":"),o=n.shift().trim();if(o){var i=n.join(":").trim();try{e.append(o,i)}catch(a){console.warn("Response "+a.message)}}}),e}ts.call(ue.prototype);function H(r,e){if(!(this instanceof H))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');if(e||(e={}),this.type="default",this.status=e.status===void 0?200:e.status,this.status<200||this.status>599)throw new RangeError("Failed to construct 'Response': The status provided (0) is outside the range [200, 599].");this.ok=this.status>=200&&this.status<300,this.statusText=e.statusText===void 0?"":""+e.statusText,this.headers=new P(e.headers),this.url=e.url||"",this._initBody(r)}ts.call(H.prototype),H.prototype.clone=function(){return new H(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new P(this.headers),url:this.url})},H.error=function(){var r=new H(null,{status:200,statusText:""});return r.ok=!1,r.status=0,r.type="error",r};var Mi=[301,302,303,307,308];H.redirect=function(r,e){if(Mi.indexOf(e)===-1)throw new RangeError("Invalid status code");return new H(null,{status:e,headers:{location:r}})};var de=M.DOMException;try{new de}catch{de=function(e,t){this.message=e,this.name=t;var s=Error(e);this.stack=s.stack},de.prototype=Object.create(Error.prototype),de.prototype.constructor=de}function rs(r,e){return new Promise(function(t,s){var n=new ue(r,e);if(n.signal&&n.signal.aborted)return s(new de("Aborted","AbortError"));var o=new XMLHttpRequest;function i(){o.abort()}o.onload=function(){var c={statusText:o.statusText,headers:Ei(o.getAllResponseHeaders()||"")};n.url.indexOf("file://")===0&&(o.status<200||o.status>599)?c.status=200:c.status=o.status,c.url="responseURL"in o?o.responseURL:c.headers.get("X-Request-URL");var u="response"in o?o.response:o.responseText;setTimeout(function(){t(new H(u,c))},0)},o.onerror=function(){setTimeout(function(){s(new TypeError("Network request failed"))},0)},o.ontimeout=function(){setTimeout(function(){s(new TypeError("Network request timed out"))},0)},o.onabort=function(){setTimeout(function(){s(new de("Aborted","AbortError"))},0)};function a(c){try{return c===""&&M.location.href?M.location.href:c}catch{return c}}if(o.open(n.method,a(n.url),!0),n.credentials==="include"?o.withCredentials=!0:n.credentials==="omit"&&(o.withCredentials=!1),"responseType"in o&&(T.blob?o.responseType="blob":T.arrayBuffer&&(o.responseType="arraybuffer")),e&&typeof e.headers=="object"&&!(e.headers instanceof P||M.Headers&&e.headers instanceof M.Headers)){var l=[];Object.getOwnPropertyNames(e.headers).forEach(function(c){l.push(_e(c)),o.setRequestHeader(c,Nt(e.headers[c]))}),n.headers.forEach(function(c,u){l.indexOf(u)===-1&&o.setRequestHeader(u,c)})}else n.headers.forEach(function(c,u){o.setRequestHeader(u,c)});n.signal&&(n.signal.addEventListener("abort",i),o.onreadystatechange=function(){o.readyState===4&&n.signal.removeEventListener("abort",i)}),o.send(typeof n._bodyInit>"u"?null:n._bodyInit)})}rs.polyfill=!0,M.fetch||(M.fetch=rs,M.Headers=P,M.Request=ue,M.Response=H);var ss=typeof global=="object"&&global&&global.Object===Object&&global,Ii=typeof self=="object"&&self&&self.Object===Object&&self,J=ss||Ii||Function("return this")(),V=J.Symbol,ns=Object.prototype,Si=ns.hasOwnProperty,Ti=ns.toString,Ge=V?V.toStringTag:void 0;function Oi(r){var e=Si.call(r,Ge),t=r[Ge];try{r[Ge]=void 0;var s=!0}catch{}var n=Ti.call(r);return s&&(e?r[Ge]=t:delete r[Ge]),n}var Ki=Object.prototype,Fi=Ki.toString;function qi(r){return Fi.call(r)}var Qi="[object Null]",Bi="[object Undefined]",os=V?V.toStringTag:void 0;function Y(r){return r==null?r===void 0?Bi:Qi:os&&os in Object(r)?Oi(r):qi(r)}function O(r){return r!=null&&typeof r=="object"}var Vi="[object Symbol]";function De(r){return typeof r=="symbol"||O(r)&&Y(r)==Vi}function xe(r,e){for(var t=-1,s=r==null?0:r.length,n=Array(s);++t<s;)n[t]=e(r[t],t,r);return n}var j=Array.isArray,is=V?V.prototype:void 0,as=is?is.toString:void 0;function mt(r){if(typeof r=="string")return r;if(j(r))return xe(r,mt)+"";if(De(r))return as?as.call(r):"";var e=r+"";return e=="0"&&1/r==-1/0?"-0":e}var Gi=/\s/;function Ui(r){for(var e=r.length;e--&&Gi.test(r.charAt(e)););return e}var Ni=/^\s+/;function zi(r){return r&&r.slice(0,Ui(r)+1).replace(Ni,"")}function N(r){var e=typeof r;return r!=null&&(e=="object"||e=="function")}var ls=NaN,Li=/^[-+]0x[0-9a-f]+$/i,Wi=/^0b[01]+$/i,Hi=/^0o[0-7]+$/i,Ji=parseInt;function Zi(r){if(typeof r=="number")return r;if(De(r))return ls;if(N(r)){var e=typeof r.valueOf=="function"?r.valueOf():r;r=N(e)?e+"":e}if(typeof r!="string")return r===0?r:+r;r=zi(r);var t=Wi.test(r);return t||Hi.test(r)?Ji(r.slice(2),t?2:8):Li.test(r)?ls:+r}var cs=1/0,Xi=17976931348623157e292;function Yi(r){if(!r)return r===0?r:0;if(r=Zi(r),r===cs||r===-cs){var e=r<0?-1:1;return e*Xi}return r===r?r:0}function vt(r){var e=Yi(r),t=e%1;return e===e?t?e-t:e:0}function bt(r){return r}var ea="[object AsyncFunction]",ta="[object Function]",ra="[object GeneratorFunction]",sa="[object Proxy]";function Wt(r){if(!N(r))return!1;var e=Y(r);return e==ta||e==ra||e==ea||e==sa}var Ht=J["__core-js_shared__"],us=(function(){var r=/[^.]+$/.exec(Ht&&Ht.keys&&Ht.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""})();function na(r){return!!us&&us in r}var oa=Function.prototype,ia=oa.toString;function fe(r){if(r!=null){try{return ia.call(r)}catch{}try{return r+""}catch{}}return""}var aa=/[\\^$.*+?()[\]{}|]/g,la=/^\[object .+?Constructor\]$/,ca=Function.prototype,ua=Object.prototype,da=ca.toString,fa=ua.hasOwnProperty,ha=RegExp("^"+da.call(fa).replace(aa,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function pa(r){if(!N(r)||na(r))return!1;var e=Wt(r)?ha:la;return e.test(fe(r))}function ya(r,e){return r?.[e]}function he(r,e){var t=ya(r,e);return pa(t)?t:void 0}var Jt=he(J,"WeakMap"),ds=Object.create,ga=(function(){function r(){}return function(e){if(!N(e))return{};if(ds)return ds(e);r.prototype=e;var t=new r;return r.prototype=void 0,t}})();function ma(r,e,t){switch(t.length){case 0:return r.call(e);case 1:return r.call(e,t[0]);case 2:return r.call(e,t[0],t[1]);case 3:return r.call(e,t[0],t[1],t[2])}return r.apply(e,t)}var va=800,ba=16,ka=Date.now;function Aa(r){var e=0,t=0;return function(){var s=ka(),n=ba-(s-t);if(t=s,n>0){if(++e>=va)return arguments[0]}else e=0;return r.apply(void 0,arguments)}}function wa(r){return function(){return r}}var kt=(function(){try{var r=he(Object,"defineProperty");return r({},"",{}),r}catch{}})(),$a=kt?function(r,e){return kt(r,"toString",{configurable:!0,enumerable:!1,value:wa(e),writable:!0})}:bt,Ca=Aa($a);function _a(r,e){for(var t=-1,s=r==null?0:r.length;++t<s&&e(r[t],t,r)!==!1;);return r}function fs(r,e,t,s){for(var n=r.length,o=t+-1;++o<n;)if(e(r[o],o,r))return o;return-1}function Da(r){return r!==r}function xa(r,e,t){for(var s=t-1,n=r.length;++s<n;)if(r[s]===e)return s;return-1}function hs(r,e,t){return e===e?xa(r,e,t):fs(r,Da,t)}function Pa(r,e){var t=r==null?0:r.length;return!!t&&hs(r,e,0)>-1}var ja=9007199254740991,Ra=/^(?:0|[1-9]\d*)$/;function Zt(r,e){var t=typeof r;return e=e??ja,!!e&&(t=="number"||t!="symbol"&&Ra.test(r))&&r>-1&&r%1==0&&r<e}function At(r,e,t){e=="__proto__"&&kt?kt(r,e,{configurable:!0,enumerable:!0,value:t,writable:!0}):r[e]=t}function Ue(r,e){return r===e||r!==r&&e!==e}var Ea=Object.prototype,Ma=Ea.hasOwnProperty;function ps(r,e,t){var s=r[e];(!(Ma.call(r,e)&&Ue(s,t))||t===void 0&&!(e in r))&&At(r,e,t)}var ys=Math.max;function Ia(r,e,t){return e=ys(e===void 0?r.length-1:e,0),function(){for(var s=arguments,n=-1,o=ys(s.length-e,0),i=Array(o);++n<o;)i[n]=s[e+n];n=-1;for(var a=Array(e+1);++n<e;)a[n]=s[n];return a[e]=t(i),ma(r,this,a)}}function Xt(r,e){return Ca(Ia(r,e,bt),r+"")}var Sa=9007199254740991;function Yt(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=Sa}function ee(r){return r!=null&&Yt(r.length)&&!Wt(r)}var Ta=Object.prototype;function er(r){var e=r&&r.constructor,t=typeof e=="function"&&e.prototype||Ta;return r===t}function Oa(r,e){for(var t=-1,s=Array(r);++t<r;)s[t]=e(t);return s}var Ka="[object Arguments]";function gs(r){return O(r)&&Y(r)==Ka}var ms=Object.prototype,Fa=ms.hasOwnProperty,qa=ms.propertyIsEnumerable,Ne=gs((function(){return arguments})())?gs:function(r){return O(r)&&Fa.call(r,"callee")&&!qa.call(r,"callee")};function Qa(){return!1}var vs=typeof exports=="object"&&exports&&!exports.nodeType&&exports,bs=vs&&typeof module=="object"&&module&&!module.nodeType&&module,Ba=bs&&bs.exports===vs,ks=Ba?J.Buffer:void 0,Va=ks?ks.isBuffer:void 0,ze=Va||Qa,Ga="[object Arguments]",Ua="[object Array]",Na="[object Boolean]",za="[object Date]",La="[object Error]",Wa="[object Function]",Ha="[object Map]",Ja="[object Number]",Za="[object Object]",Xa="[object RegExp]",Ya="[object Set]",el="[object String]",tl="[object WeakMap]",rl="[object ArrayBuffer]",sl="[object DataView]",nl="[object Float32Array]",ol="[object Float64Array]",il="[object Int8Array]",al="[object Int16Array]",ll="[object Int32Array]",cl="[object Uint8Array]",ul="[object Uint8ClampedArray]",dl="[object Uint16Array]",fl="[object Uint32Array]",$={};$[nl]=$[ol]=$[il]=$[al]=$[ll]=$[cl]=$[ul]=$[dl]=$[fl]=!0,$[Ga]=$[Ua]=$[rl]=$[Na]=$[sl]=$[za]=$[La]=$[Wa]=$[Ha]=$[Ja]=$[Za]=$[Xa]=$[Ya]=$[el]=$[tl]=!1;function hl(r){return O(r)&&Yt(r.length)&&!!$[Y(r)]}function Le(r){return function(e){return r(e)}}var As=typeof exports=="object"&&exports&&!exports.nodeType&&exports,We=As&&typeof module=="object"&&module&&!module.nodeType&&module,pl=We&&We.exports===As,tr=pl&&ss.process,Pe=(function(){try{var r=We&&We.require&&We.require("util").types;return r||tr&&tr.binding&&tr.binding("util")}catch{}})(),ws=Pe&&Pe.isTypedArray,rr=ws?Le(ws):hl,yl=Object.prototype,gl=yl.hasOwnProperty;function $s(r,e){var t=j(r),s=!t&&Ne(r),n=!t&&!s&&ze(r),o=!t&&!s&&!n&&rr(r),i=t||s||n||o,a=i?Oa(r.length,String):[],l=a.length;for(var c in r)(e||gl.call(r,c))&&!(i&&(c=="length"||n&&(c=="offset"||c=="parent")||o&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Zt(c,l)))&&a.push(c);return a}function Cs(r,e){return function(t){return r(e(t))}}var ml=Cs(Object.keys,Object),vl=Object.prototype,bl=vl.hasOwnProperty;function _s(r){if(!er(r))return ml(r);var e=[];for(var t in Object(r))bl.call(r,t)&&t!="constructor"&&e.push(t);return e}function He(r){return ee(r)?$s(r):_s(r)}var kl=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Al=/^\w*$/;function sr(r,e){if(j(r))return!1;var t=typeof r;return t=="number"||t=="symbol"||t=="boolean"||r==null||De(r)?!0:Al.test(r)||!kl.test(r)||e!=null&&r in Object(e)}var Je=he(Object,"create");function wl(){this.__data__=Je?Je(null):{},this.size=0}function $l(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}var Cl="__lodash_hash_undefined__",_l=Object.prototype,Dl=_l.hasOwnProperty;function xl(r){var e=this.__data__;if(Je){var t=e[r];return t===Cl?void 0:t}return Dl.call(e,r)?e[r]:void 0}var Pl=Object.prototype,jl=Pl.hasOwnProperty;function Rl(r){var e=this.__data__;return Je?e[r]!==void 0:jl.call(e,r)}var El="__lodash_hash_undefined__";function Ml(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=Je&&e===void 0?El:e,this}function pe(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}pe.prototype.clear=wl,pe.prototype.delete=$l,pe.prototype.get=xl,pe.prototype.has=Rl,pe.prototype.set=Ml;function Il(){this.__data__=[],this.size=0}function wt(r,e){for(var t=r.length;t--;)if(Ue(r[t][0],e))return t;return-1}var Sl=Array.prototype,Tl=Sl.splice;function Ol(r){var e=this.__data__,t=wt(e,r);if(t<0)return!1;var s=e.length-1;return t==s?e.pop():Tl.call(e,t,1),--this.size,!0}function Kl(r){var e=this.__data__,t=wt(e,r);return t<0?void 0:e[t][1]}function Fl(r){return wt(this.__data__,r)>-1}function ql(r,e){var t=this.__data__,s=wt(t,r);return s<0?(++this.size,t.push([r,e])):t[s][1]=e,this}function te(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}te.prototype.clear=Il,te.prototype.delete=Ol,te.prototype.get=Kl,te.prototype.has=Fl,te.prototype.set=ql;var Ze=he(J,"Map");function Ql(){this.size=0,this.__data__={hash:new pe,map:new(Ze||te),string:new pe}}function Bl(r){var e=typeof r;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?r!=="__proto__":r===null}function $t(r,e){var t=r.__data__;return Bl(e)?t[typeof e=="string"?"string":"hash"]:t.map}function Vl(r){var e=$t(this,r).delete(r);return this.size-=e?1:0,e}function Gl(r){return $t(this,r).get(r)}function Ul(r){return $t(this,r).has(r)}function Nl(r,e){var t=$t(this,r),s=t.size;return t.set(r,e),this.size+=t.size==s?0:1,this}function re(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}re.prototype.clear=Ql,re.prototype.delete=Vl,re.prototype.get=Gl,re.prototype.has=Ul,re.prototype.set=Nl;var zl="Expected a function";function nr(r,e){if(typeof r!="function"||e!=null&&typeof e!="function")throw new TypeError(zl);var t=function(){var s=arguments,n=e?e.apply(this,s):s[0],o=t.cache;if(o.has(n))return o.get(n);var i=r.apply(this,s);return t.cache=o.set(n,i)||o,i};return t.cache=new(nr.Cache||re),t}nr.Cache=re;var Ll=500;function Wl(r){var e=nr(r,function(s){return t.size===Ll&&t.clear(),s}),t=e.cache;return e}var Hl=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Jl=/\\(\\)?/g,Zl=Wl(function(r){var e=[];return r.charCodeAt(0)===46&&e.push(""),r.replace(Hl,function(t,s,n,o){e.push(n?o.replace(Jl,"$1"):s||t)}),e});function or(r){return r==null?"":mt(r)}function Ds(r,e){return j(r)?r:sr(r,e)?[r]:Zl(or(r))}function Ct(r){if(typeof r=="string"||De(r))return r;var e=r+"";return e=="0"&&1/r==-1/0?"-0":e}function ir(r,e){e=Ds(e,r);for(var t=0,s=e.length;r!=null&&t<s;)r=r[Ct(e[t++])];return t&&t==s?r:void 0}function Xe(r,e,t){var s=r==null?void 0:ir(r,e);return s===void 0?t:s}function xs(r,e){for(var t=-1,s=e.length,n=r.length;++t<s;)r[n+t]=e[t];return r}var Ps=V?V.isConcatSpreadable:void 0;function Xl(r){return j(r)||Ne(r)||!!(Ps&&r&&r[Ps])}function js(r,e,t,s,n){var o=-1,i=r.length;for(t||(t=Xl),n||(n=[]);++o<i;){var a=r[o];t(a)&&xs(n,a)}return n}var Rs=Cs(Object.getPrototypeOf,Object),Yl="\\ud800-\\udfff",ec="\\u0300-\\u036f",tc="\\ufe20-\\ufe2f",rc="\\u20d0-\\u20ff",sc=ec+tc+rc,nc="\\ufe0e\\ufe0f",oc="\\u200d",ic=RegExp("["+oc+Yl+sc+nc+"]");function ac(r){return ic.test(r)}function Es(r,e,t){return r===r&&(t!==void 0&&(r=r<=t?r:t),r=r>=e?r:e),r}function lc(){this.__data__=new te,this.size=0}function cc(r){var e=this.__data__,t=e.delete(r);return this.size=e.size,t}function uc(r){return this.__data__.get(r)}function dc(r){return this.__data__.has(r)}var fc=200;function hc(r,e){var t=this.__data__;if(t instanceof te){var s=t.__data__;if(!Ze||s.length<fc-1)return s.push([r,e]),this.size=++t.size,this;t=this.__data__=new re(s)}return t.set(r,e),this.size=t.size,this}function z(r){var e=this.__data__=new te(r);this.size=e.size}z.prototype.clear=lc,z.prototype.delete=cc,z.prototype.get=uc,z.prototype.has=dc,z.prototype.set=hc;var Ms=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Is=Ms&&typeof module=="object"&&module&&!module.nodeType&&module,pc=Is&&Is.exports===Ms,Ss=pc?J.Buffer:void 0,Ts=Ss?Ss.allocUnsafe:void 0;function Os(r,e){if(e)return r.slice();var t=r.length,s=Ts?Ts(t):new r.constructor(t);return r.copy(s),s}function yc(r,e){for(var t=-1,s=r==null?0:r.length,n=0,o=[];++t<s;){var i=r[t];e(i,t,r)&&(o[n++]=i)}return o}function gc(){return[]}var mc=Object.prototype,vc=mc.propertyIsEnumerable,Ks=Object.getOwnPropertySymbols,bc=Ks?function(r){return r==null?[]:(r=Object(r),yc(Ks(r),function(e){return vc.call(r,e)}))}:gc;function kc(r,e,t){var s=e(r);return j(r)?s:xs(s,t(r))}function ar(r){return kc(r,He,bc)}var lr=he(J,"DataView"),cr=he(J,"Promise"),ur=he(J,"Set"),Fs="[object Map]",Ac="[object Object]",qs="[object Promise]",Qs="[object Set]",Bs="[object WeakMap]",Vs="[object DataView]",wc=fe(lr),$c=fe(Ze),Cc=fe(cr),_c=fe(ur),Dc=fe(Jt),G=Y;(lr&&G(new lr(new ArrayBuffer(1)))!=Vs||Ze&&G(new Ze)!=Fs||cr&&G(cr.resolve())!=qs||ur&&G(new ur)!=Qs||Jt&&G(new Jt)!=Bs)&&(G=function(r){var e=Y(r),t=e==Ac?r.constructor:void 0,s=t?fe(t):"";if(s)switch(s){case wc:return Vs;case $c:return Fs;case Cc:return qs;case _c:return Qs;case Dc:return Bs}return e});var xc=Object.prototype,Pc=xc.hasOwnProperty;function jc(r){var e=r.length,t=new r.constructor(e);return e&&typeof r[0]=="string"&&Pc.call(r,"index")&&(t.index=r.index,t.input=r.input),t}var _t=J.Uint8Array;function dr(r){var e=new r.constructor(r.byteLength);return new _t(e).set(new _t(r)),e}function Rc(r,e){var t=dr(r.buffer);return new r.constructor(t,r.byteOffset,r.byteLength)}var Ec=/\w*$/;function Mc(r){var e=new r.constructor(r.source,Ec.exec(r));return e.lastIndex=r.lastIndex,e}var Gs=V?V.prototype:void 0,Us=Gs?Gs.valueOf:void 0;function Ic(r){return Us?Object(Us.call(r)):{}}function Ns(r,e){var t=e?dr(r.buffer):r.buffer;return new r.constructor(t,r.byteOffset,r.length)}var Sc="[object Boolean]",Tc="[object Date]",Oc="[object Map]",Kc="[object Number]",Fc="[object RegExp]",qc="[object Set]",Qc="[object String]",Bc="[object Symbol]",Vc="[object ArrayBuffer]",Gc="[object DataView]",Uc="[object Float32Array]",Nc="[object Float64Array]",zc="[object Int8Array]",Lc="[object Int16Array]",Wc="[object Int32Array]",Hc="[object Uint8Array]",Jc="[object Uint8ClampedArray]",Zc="[object Uint16Array]",Xc="[object Uint32Array]";function Yc(r,e,t){var s=r.constructor;switch(e){case Vc:return dr(r);case Sc:case Tc:return new s(+r);case Gc:return Rc(r);case Uc:case Nc:case zc:case Lc:case Wc:case Hc:case Jc:case Zc:case Xc:return Ns(r,t);case Oc:return new s;case Kc:case Qc:return new s(r);case Fc:return Mc(r);case qc:return new s;case Bc:return Ic(r)}}function zs(r){return typeof r.constructor=="function"&&!er(r)?ga(Rs(r)):{}}var eu="[object Map]";function tu(r){return O(r)&&G(r)==eu}var Ls=Pe&&Pe.isMap,ru=Ls?Le(Ls):tu,su="[object Set]";function nu(r){return O(r)&&G(r)==su}var Ws=Pe&&Pe.isSet,ou=Ws?Le(Ws):nu,iu=1,Hs="[object Arguments]",au="[object Array]",lu="[object Boolean]",cu="[object Date]",uu="[object Error]",Js="[object Function]",du="[object GeneratorFunction]",fu="[object Map]",hu="[object Number]",Zs="[object Object]",pu="[object RegExp]",yu="[object Set]",gu="[object String]",mu="[object Symbol]",vu="[object WeakMap]",bu="[object ArrayBuffer]",ku="[object DataView]",Au="[object Float32Array]",wu="[object Float64Array]",$u="[object Int8Array]",Cu="[object Int16Array]",_u="[object Int32Array]",Du="[object Uint8Array]",xu="[object Uint8ClampedArray]",Pu="[object Uint16Array]",ju="[object Uint32Array]",k={};k[Hs]=k[au]=k[bu]=k[ku]=k[lu]=k[cu]=k[Au]=k[wu]=k[$u]=k[Cu]=k[_u]=k[fu]=k[hu]=k[Zs]=k[pu]=k[yu]=k[gu]=k[mu]=k[Du]=k[xu]=k[Pu]=k[ju]=!0,k[uu]=k[Js]=k[vu]=!1;function Dt(r,e,t,s,n,o){var i,a=e&iu;if(i!==void 0)return i;if(!N(r))return r;var l=j(r);if(l)i=jc(r);else{var c=G(r),u=c==Js||c==du;if(ze(r))return Os(r,a);if(c==Zs||c==Hs||u&&!n)i=u?{}:zs(r);else{if(!k[c])return n?r:{};i=Yc(r,c,a)}}o||(o=new z);var d=o.get(r);if(d)return d;o.set(r,i),ou(r)?r.forEach(function(p){i.add(Dt(p,e,t,p,r,o))}):ru(r)&&r.forEach(function(p,y){i.set(y,Dt(p,e,t,y,r,o))});var f=ar,h=l?void 0:f(r);return _a(h||r,function(p,y){h&&(y=p,p=r[y]),ps(i,y,Dt(p,e,t,y,r,o))}),i}var Ru=1,Eu=4;function se(r){return Dt(r,Ru|Eu)}var Mu="__lodash_hash_undefined__";function Iu(r){return this.__data__.set(r,Mu),this}function Su(r){return this.__data__.has(r)}function Ye(r){var e=-1,t=r==null?0:r.length;for(this.__data__=new re;++e<t;)this.add(r[e])}Ye.prototype.add=Ye.prototype.push=Iu,Ye.prototype.has=Su;function Tu(r,e){for(var t=-1,s=r==null?0:r.length;++t<s;)if(e(r[t],t,r))return!0;return!1}function Xs(r,e){return r.has(e)}var Ou=1,Ku=2;function Ys(r,e,t,s,n,o){var i=t&Ou,a=r.length,l=e.length;if(a!=l&&!(i&&l>a))return!1;var c=o.get(r),u=o.get(e);if(c&&u)return c==e&&u==r;var d=-1,f=!0,h=t&Ku?new Ye:void 0;for(o.set(r,e),o.set(e,r);++d<a;){var p=r[d],y=e[d];if(s)var m=i?s(y,p,d,e,r,o):s(p,y,d,r,e,o);if(m!==void 0){if(m)continue;f=!1;break}if(h){if(!Tu(e,function(g,b){if(!Xs(h,b)&&(p===g||n(p,g,t,s,o)))return h.push(b)})){f=!1;break}}else if(!(p===y||n(p,y,t,s,o))){f=!1;break}}return o.delete(r),o.delete(e),f}function Fu(r){var e=-1,t=Array(r.size);return r.forEach(function(s,n){t[++e]=[n,s]}),t}function qu(r){var e=-1,t=Array(r.size);return r.forEach(function(s){t[++e]=s}),t}var Qu=1,Bu=2,Vu="[object Boolean]",Gu="[object Date]",Uu="[object Error]",Nu="[object Map]",zu="[object Number]",Lu="[object RegExp]",Wu="[object Set]",Hu="[object String]",Ju="[object Symbol]",Zu="[object ArrayBuffer]",Xu="[object DataView]",en=V?V.prototype:void 0,fr=en?en.valueOf:void 0;function Yu(r,e,t,s,n,o,i){switch(t){case Xu:if(r.byteLength!=e.byteLength||r.byteOffset!=e.byteOffset)return!1;r=r.buffer,e=e.buffer;case Zu:return!(r.byteLength!=e.byteLength||!o(new _t(r),new _t(e)));case Vu:case Gu:case zu:return Ue(+r,+e);case Uu:return r.name==e.name&&r.message==e.message;case Lu:case Hu:return r==e+"";case Nu:var a=Fu;case Wu:var l=s&Qu;if(a||(a=qu),r.size!=e.size&&!l)return!1;var c=i.get(r);if(c)return c==e;s|=Bu,i.set(r,e);var u=Ys(a(r),a(e),s,n,o,i);return i.delete(r),u;case Ju:if(fr)return fr.call(r)==fr.call(e)}return!1}var ed=1,td=Object.prototype,rd=td.hasOwnProperty;function sd(r,e,t,s,n,o){var i=t&ed,a=ar(r),l=a.length,c=ar(e),u=c.length;if(l!=u&&!i)return!1;for(var d=l;d--;){var f=a[d];if(!(i?f in e:rd.call(e,f)))return!1}var h=o.get(r),p=o.get(e);if(h&&p)return h==e&&p==r;var y=!0;o.set(r,e),o.set(e,r);for(var m=i;++d<l;){f=a[d];var g=r[f],b=e[f];if(s)var x=i?s(b,g,f,e,r,o):s(g,b,f,r,e,o);if(!(x===void 0?g===b||n(g,b,t,s,o):x)){y=!1;break}m||(m=f=="constructor")}if(y&&!m){var B=r.constructor,U=e.constructor;B!=U&&"constructor"in r&&"constructor"in e&&!(typeof B=="function"&&B instanceof B&&typeof U=="function"&&U instanceof U)&&(y=!1)}return o.delete(r),o.delete(e),y}var nd=1,tn="[object Arguments]",rn="[object Array]",xt="[object Object]",od=Object.prototype,sn=od.hasOwnProperty;function id(r,e,t,s,n,o){var i=j(r),a=j(e),l=i?rn:G(r),c=a?rn:G(e);l=l==tn?xt:l,c=c==tn?xt:c;var u=l==xt,d=c==xt,f=l==c;if(f&&ze(r)){if(!ze(e))return!1;i=!0,u=!1}if(f&&!u)return o||(o=new z),i||rr(r)?Ys(r,e,t,s,n,o):Yu(r,e,l,t,s,n,o);if(!(t&nd)){var h=u&&sn.call(r,"__wrapped__"),p=d&&sn.call(e,"__wrapped__");if(h||p){var y=h?r.value():r,m=p?e.value():e;return o||(o=new z),n(y,m,t,s,o)}}return f?(o||(o=new z),sd(r,e,t,s,n,o)):!1}function et(r,e,t,s,n){return r===e?!0:r==null||e==null||!O(r)&&!O(e)?r!==r&&e!==e:id(r,e,t,s,et,n)}var ad=1,ld=2;function nn(r,e,t,s){var n=t.length,o=n;if(r==null)return!o;for(r=Object(r);n--;){var i=t[n];if(i[2]?i[1]!==r[i[0]]:!(i[0]in r))return!1}for(;++n<o;){i=t[n];var a=i[0],l=r[a],c=i[1];if(i[2]){if(l===void 0&&!(a in r))return!1}else{var u=new z,d;if(!(d===void 0?et(c,l,ad|ld,s,u):d))return!1}}return!0}function on(r){return r===r&&!N(r)}function an(r){for(var e=He(r),t=e.length;t--;){var s=e[t],n=r[s];e[t]=[s,n,on(n)]}return e}function ln(r,e){return function(t){return t==null?!1:t[r]===e&&(e!==void 0||r in Object(t))}}function cd(r){var e=an(r);return e.length==1&&e[0][2]?ln(e[0][0],e[0][1]):function(t){return t===r||nn(t,r,e)}}function ud(r,e){return r!=null&&e in Object(r)}function dd(r,e,t){e=Ds(e,r);for(var s=-1,n=e.length,o=!1;++s<n;){var i=Ct(e[s]);if(!(o=r!=null&&t(r,i)))break;r=r[i]}return o||++s!=n?o:(n=r==null?0:r.length,!!n&&Yt(n)&&Zt(i,n)&&(j(r)||Ne(r)))}function fd(r,e){return r!=null&&dd(r,e,ud)}var hd=1,pd=2;function yd(r,e){return sr(r)&&on(e)?ln(Ct(r),e):function(t){var s=Xe(t,r);return s===void 0&&s===e?fd(t,r):et(e,s,hd|pd)}}function cn(r){return function(e){return e?.[r]}}function gd(r){return function(e){return ir(e,r)}}function md(r){return sr(r)?cn(Ct(r)):gd(r)}function je(r){return typeof r=="function"?r:r==null?bt:typeof r=="object"?j(r)?yd(r[0],r[1]):cd(r):md(r)}function vd(r){return function(e,t,s){for(var n=-1,o=Object(e),i=s(e),a=i.length;a--;){var l=i[++n];if(t(o[l],l,o)===!1)break}return e}}var un=vd();function bd(r,e){return r&&un(r,e,He)}function kd(r,e){return function(t,s){if(t==null)return t;if(!ee(t))return r(t,s);for(var n=t.length,o=-1,i=Object(t);++o<n&&s(i[o],o,i)!==!1;);return t}}var hr=kd(bd);function Re(r){return O(r)&&ee(r)}var Ad=200;function dn(r,e,t,s){var n=-1,o=Pa,i=!0,a=r.length,l=[],c=e.length;if(!a)return l;t&&(e=xe(e,Le(t))),e.length>=Ad&&(o=Xs,i=!1,e=new Ye(e));e:for(;++n<a;){var u=r[n],d=t==null?u:t(u);if(u=u!==0?u:0,i&&d===d){for(var f=c;f--;)if(e[f]===d)continue e;l.push(u)}else o(e,d,s)||l.push(u)}return l}function wd(r){var e=r==null?0:r.length;return e?r[e-1]:void 0}var fn=Xt(function(r,e){var t=wd(e);return Re(t)&&(t=void 0),Re(r)?dn(r,js(e,1,Re),je(t)):[]});function hn(r,e,t){r=or(r),e=mt(e);var s=r.length;t=t===void 0?s:Es(vt(t),0,s);var n=t;return t-=e.length,t>=0&&r.slice(t,n)==e}function $d(r,e){for(var t=-1,s=r==null?0:r.length;++t<s;)if(!e(r[t],t,r))return!1;return!0}function Cd(r,e){var t=!0;return hr(r,function(s,n,o){return t=!!e(s,n,o),t}),t}function pn(r,e,t){var s=j(r)?$d:Cd;return s(r,je(e))}function _d(r){return function(e,t,s){var n=Object(e);if(!ee(e)){var o=je(t);e=He(e),t=function(a){return o(n[a],a,n)}}var i=r(e,t,s);return i>-1?n[o?e[i]:i]:void 0}}var Dd=Math.max;function pr(r,e,t){var s=r==null?0:r.length;if(!s)return-1;var n=t==null?0:vt(t);return n<0&&(n=Dd(s+n,0)),fs(r,je(e),n)}var xd=_d(pr);function Pd(r,e){var t=-1,s=ee(r)?Array(r.length):[];return hr(r,function(n,o,i){s[++t]=e(n,o,i)}),s}var jd="[object String]";function Pt(r){return typeof r=="string"||!j(r)&&O(r)&&Y(r)==jd}function yn(r,e){return et(r,e)}function jt(r,e,t){t=typeof t=="function"?t:void 0;var s=t?t(r,e):void 0;return s===void 0?et(r,e,void 0,t):!!s}function Rd(r,e){return r===e||nn(r,e,an(e))}function Ed(r,e){var t=r.length;for(r.sort(e);t--;)r[t]=r[t].value;return r}function Md(r,e){if(r!==e){var t=r!==void 0,s=r===null,n=r===r,o=De(r),i=e!==void 0,a=e===null,l=e===e,c=De(e);if(!a&&!c&&!o&&r>e||o&&i&&l&&!a&&!c||s&&i&&l||!t&&l||!n)return 1;if(!s&&!o&&!c&&r<e||c&&t&&n&&!s&&!o||a&&t&&n||!i&&n||!l)return-1}return 0}function Id(r,e,t){for(var s=-1,n=r.criteria,o=e.criteria,i=n.length,a=t.length;++s<i;){var l=Md(n[s],o[s]);if(l){if(s>=a)return l;var c=t[s];return l*(c=="desc"?-1:1)}}return r.index-e.index}function Sd(r,e,t){e.length?e=xe(e,function(o){return j(o)?function(i){return ir(i,o.length===1?o[0]:o)}:o}):e=[bt];var s=-1;e=xe(e,Le(je));var n=Pd(r,function(o,i,a){var l=xe(e,function(c){return c(o)});return{criteria:l,index:++s,value:o}});return Ed(n,function(o,i){return Id(o,i,t)})}function gn(r,e,t,s){return r==null?[]:(j(e)||(e=e==null?[]:[e]),t=t,j(t)||(t=t==null?[]:[t]),Sd(r,e,t))}var Td=cn("length"),mn="\\ud800-\\udfff",Od="\\u0300-\\u036f",Kd="\\ufe20-\\ufe2f",Fd="\\u20d0-\\u20ff",qd=Od+Kd+Fd,Qd="\\ufe0e\\ufe0f",Bd="["+mn+"]",yr="["+qd+"]",gr="\\ud83c[\\udffb-\\udfff]",Vd="(?:"+yr+"|"+gr+")",vn="[^"+mn+"]",bn="(?:\\ud83c[\\udde6-\\uddff]){2}",kn="[\\ud800-\\udbff][\\udc00-\\udfff]",Gd="\\u200d",An=Vd+"?",wn="["+Qd+"]?",Ud="(?:"+Gd+"(?:"+[vn,bn,kn].join("|")+")"+wn+An+")*",Nd=wn+An+Ud,zd="(?:"+[vn+yr+"?",yr,bn,kn,Bd].join("|")+")",$n=RegExp(gr+"(?="+gr+")|"+zd+Nd,"g");function Ld(r){for(var e=$n.lastIndex=0;$n.test(r);)++e;return e}function Wd(r){return ac(r)?Ld(r):Td(r)}var Hd="[object Map]",Jd="[object Set]";function Zd(r){if(r==null)return 0;if(ee(r))return Pt(r)?Wd(r):r.length;var e=G(r);return e==Hd||e==Jd?r.size:_s(r).length}function Xd(r,e,t){return r=or(r),t=t==null?0:Es(vt(t),0,r.length),e=mt(e),r.slice(t,t+e.length)==e}function mr(r){const e=vr(r);return Yd(e)}function vr(r){if(typeof r!="object"||r===null)return String(r);if(Array.isArray(r))return"["+r.map(vr).join(",")+"]";const e=Object.keys(r).sort();let t="{";for(let s=0;s<e.length;s++){const n=e[s];t+=n+":"+vr(r[n]),s<e.length-1&&(t+=",")}return t+="}",t}function Yd(r){let e=0;for(let t=0;t<r.length;t++){const s=r.charCodeAt(t);e=(e<<5)-e+s,e|=0}return e.toString(16)}const ye={now:()=>typeof performance<"u"&&performance.now?performance.now():new Date().getTime(),mark:r=>{typeof performance<"u"&&performance.mark&&performance.mark(r)},measure:(r,e,t)=>{typeof performance<"u"&&performance.measure&&performance.measure(r,e,t)},getEntriesByName(r){if(typeof performance<"u"&&performance.getEntriesByName)return performance.getEntriesByName(r)},getEntriesByType(r){if(typeof performance<"u"&&performance.getEntriesByType)return performance.getEntriesByType(r)}};class ef{data;enabled=!1;constructor(){}init(e){this.data=new Map,this.enabled=e}set(e){if(!this.enabled)return e.value;const t=this.getKey(e.value.name,e.context);return this.data.set(t,e.value),this.data.get(t)}mark(e){if(!this.enabled)return;const t=this.getKey(e.name,e.context),s={name:e.name,type:"mark",value:ye.now(),createdAt:Date.now()};return this.data.set(t,s),s}measure(e){if(!this.enabled)return;const t=this.getKey(e.name,e.context),s=this.data.get(this.getKey(e.start,e.context)),n=this.data.get(this.getKey(e.end,e.context));if(!s||!n)return;const o=n.value-s.value,i=Math.round(o*100)/100,a=this.data.get(t);if(a&&e.sum){const c=a.value+i,u={...a,value:c};return this.data.set(t,u),u}const l={name:e.name,type:"measure",value:i,createdAt:Date.now()};return e.detail&&(l.detail=e.detail),this.data.set(t,l),l}update(e){if(!this.enabled)return e.value;const t=this.getKey(e.value.name,e.context),s=this.data.get(t);if(s){const n={...s,...e.value};this.data.set(t,n)}else this.data.set(t,e.value);return this.data.get(t)}getResourceInfosFromPerformanceAPI(){return typeof performance>"u"?[]:ye.getEntriesByType("resource")}get(e){const t=this.getKey(e.name,e.context);return this.data.get(t)}getByType(e){return Array.from(this.data.values()).filter(t=>t.type===e)}getByName(e){return Array.from(this.data.values()).filter(t=>t.name===e)}clear(){this.data.clear()}getKey(e,t){if(!t)return e;const s=mr(t);return e+"_"+s}}let Cn=class Ai{nodes;edges;nodeKinds=new Map;nodeMeta=new Map;edgePolicy;constructor(){this.nodes=new Set,this.edges=new Map}addNode(e,t){this.nodes.has(e)||(this.nodes.add(e),this.edges.set(e,new Set)),t?.kind!==void 0&&this.nodeKinds.set(e,t.kind),t?.meta!==void 0&&this.nodeMeta.set(e,t.meta)}addDependency(e,t){if(!this.nodes.has(e)||!this.nodes.has(t))throw new Error("Both nodes must exist before adding a dependency.");if(this.edgePolicy&&!this.edgePolicy({name:e,kind:this.nodeKinds.get(e)},{name:t,kind:this.nodeKinds.get(t)}))throw new Error(`Edge policy rejected dependency from "${e}" to "${t}".`);this.edges.get(e).add(t)}setEdgePolicy(e){this.edgePolicy=e}setNodeKind(e,t){if(!this.nodes.has(e))throw new Error("Node does not exist.");t===void 0?this.nodeKinds.delete(e):this.nodeKinds.set(e,t)}getNodeKind(e){return this.nodeKinds.get(e)}setNodeMeta(e,t){if(!this.nodes.has(e))throw new Error("Node does not exist.");this.nodeMeta.set(e,t)}getNodeMeta(e){return this.nodeMeta.get(e)}removeNode(e){if(!this.nodes.has(e))throw new Error("Node does not exist.");this.nodes.delete(e),this.edges.delete(e);for(let t of this.edges.values())t.delete(e)}removeDependency(e,t){if(!this.edges.has(e))throw new Error("From node does not exist.");this.edges.get(e).delete(t)}hasNode(e){return this.nodes.has(e)}hasDependency(e,t){return this.edges.has(e)?this.edges.get(e).has(t):!1}getDependencies(e){if(!this.edges.has(e))throw new Error("Node does not exist.");return Array.from(this.edges.get(e))}getDependents(e){const t=[];for(let[s,n]of this.edges)n.has(e)&&t.push(s);return t}isCyclic(){const e=new Set,t=new Set,s=n=>{if(e.has(n))return!1;if(t.has(n))return!0;t.add(n);const o=this.edges.get(n);if(o){for(let i of o)if(s(i))return!0}return t.delete(n),e.add(n),!1};for(let n of this.nodes)if(s(n))return!0;return!1}validateNoCycles(){const e=new Set,t=new Set,s=[],n=o=>{if(e.has(o))return null;if(t.has(o)){const a=s.indexOf(o);return s.slice(a).concat([o])}t.add(o),s.push(o);const i=this.edges.get(o);if(i)for(let a of i){const l=n(a);if(l)return l}return s.pop(),t.delete(o),e.add(o),null};for(let o of this.nodes){const i=n(o);if(i)return{hasCycle:!0,path:i}}return{hasCycle:!1}}order(e){const t=new Set,s=new Set,n=[],o=e?.allowCycles??!1,i=a=>{if(t.has(a))return;if(s.has(a)){if(o)return;throw new Error("Graph has a cycle.")}s.add(a);const l=this.edges.get(a);if(l)for(let c of l)i(c);s.delete(a),t.add(a),n.push(a)};for(let a of this.nodes)t.has(a)||i(a);return n}clear(){this.nodes.clear(),this.edges.clear()}getNodes(){return Array.from(this.nodes)}getAllEdges(){const e=[];for(let[t,s]of this.edges)for(let n of s)e.push([t,n]);return e}getNodesWithNoDependants(){if(this.nodes.size===0)return[];const e=new Set;for(const s of this.edges.values())for(const n of s)e.add(n);const t=[];for(const s of this.nodes)e.has(s)||t.push(s);return t}getNodesByKind(e){const t=[];for(const s of this.nodes)this.nodeKinds.get(s)===e&&t.push(s);return t}getRootsByKind(e){const t=new Set(this.getNodesWithNoDependants()),s=Array.from(t);return e?s.filter(n=>this.nodeKinds.get(n)===e):s}getLeavesByKind(e){const t=[];for(const s of this.nodes){const n=this.edges.get(s);(!n||n.size===0)&&(!e||this.nodeKinds.get(s)===e)&&t.push(s)}return t}getDependenciesOfKind(e,t){return this.getDependencies(e).filter(s=>this.nodeKinds.get(s)===t)}getDependentsOfKind(e,t){return this.getDependents(e).filter(s=>this.nodeKinds.get(s)===t)}plan(e){const t=new Map;for(const i of this.nodes)t.set(i,0);for(const i of this.edges.values())for(const a of i)t.set(a,(t.get(a)||0)+1);const s=[];let n=Array.from(this.nodes).filter(i=>(t.get(i)||0)===0);const o=new Set;for(;n.length>0;){const i=n.slice();s.push(i),n=[];for(const a of i){if(o.has(a))continue;o.add(a);const l=this.edges.get(a);if(l)for(const c of l)t.set(c,(t.get(c)||0)-1),(t.get(c)||0)===0&&n.push(c)}}if(o.size!==this.nodes.size)throw new Error("Graph has a cycle.");if(e?.filterKinds&&e.filterKinds.length>0){const i=new Set(e.filterKinds);return{batches:s.map(a=>a.filter(l=>i.has(this.nodeKinds.get(l))))}}return{batches:s}}getImpactedNodes(e,t="downstream",s){const n=new Set(e),o=c=>!s||s.length===0||s.includes(this.nodeKinds.get(c)??void 0),i=()=>{const c=new Set,u=Array.from(n);for(;u.length;){const d=u.shift();for(const[f,h]of this.edges)h.has(d)&&!c.has(f)&&(c.add(f),u.push(f))}return c},a=()=>{const c=new Set,u=Array.from(n);for(;u.length;){const d=u.shift(),f=this.edges.get(d);if(f)for(const h of f)c.has(h)||(c.add(h),u.push(h))}return c};let l;return t==="both"?l=new Set([...i(),...a()]):t==="upstream"?l=a():l=i(),Array.from(l).filter(o)}toJSON(){const e=Array.from(this.nodes).map(s=>({name:s,kind:this.nodeKinds.get(s),meta:this.nodeMeta.get(s)})),t=this.getAllEdges().map(([s,n])=>({from:s,to:n}));return{nodes:e,edges:t}}static fromJSON(e){const t=new Ai;for(const s of e.nodes)t.addNode(s.name,{kind:s.kind,meta:s.meta});for(const s of e.edges)t.addDependency(s.from,s.to);return t}diff(e){const t=new Set(this.getNodes()),s=new Set(e.getNodes()),n=Array.from(s).filter(d=>!t.has(d)),o=Array.from(t).filter(d=>!s.has(d)),i=new Set(this.getAllEdges().map(d=>d.join("→"))),a=new Set(e.getAllEdges().map(d=>d.join("→"))),l=Array.from(a).filter(d=>!i.has(d)).map(d=>d.split("→")),c=Array.from(i).filter(d=>!a.has(d)).map(d=>d.split("→")),u=[];for(const d of new Set([...t,...s])){const f=this.nodeKinds.get(d),h=e.nodeKinds.get(d);f!==h&&u.push({name:d,from:f,to:h})}return{addedNodes:n,removedNodes:o,addedEdges:l,removedEdges:c,kindChanges:u}}};class tf{graph;nodeIndex;constructor(){this.graph=new Cn,this.nodeIndex=new Map}getNodeId(e,t){return`${e}.${t}`}parseNodeId(e){const t=e.split(".");return{modelKey:t[0],attributeKey:t.slice(1).join(".")}}addAttribute(e){const t=this.getNodeId(e.modelKey,e.attributeKey);this.nodeIndex.has(t)||(this.graph.addNode(t,{meta:e}),this.nodeIndex.set(t,e))}addAttributeDependency(e,t){this.addAttribute(e),this.addAttribute(t);const s=this.getNodeId(e.modelKey,e.attributeKey),n=this.getNodeId(t.modelKey,t.attributeKey);this.graph.hasDependency(s,n)||this.graph.addDependency(s,n)}getImpactedAttributes(e){const t=e.map(i=>this.getNodeId(i.modelKey,i.attributeKey)),s=this.graph.getImpactedNodes(t,"downstream").map(i=>this.nodeIndex.get(i)).filter(i=>i!==void 0),n=[...e,...s],o=new Set;return n.filter(i=>{const a=this.getNodeId(i.modelKey,i.attributeKey);return o.has(a)?!1:(o.add(a),!0)})}getProcessingOrder(e){const t=new Map,s=[...e].sort((n,o)=>n.processingStep-o.processingStep);for(const n of s){const{modelKey:o,attributeKey:i,processingStep:a}=n;t.has(o)||t.set(o,new Map);const l=t.get(o);l.has(a)||l.set(a,new Set),l.get(a).add(i)}return t}getAttributesForModel(e){const t=[];for(const s of this.nodeIndex.values())s.modelKey===e&&t.push(s);return t}getDependencies(e){const t=this.getNodeId(e.modelKey,e.attributeKey);return this.graph.hasNode(t)?this.graph.getDependencies(t).map(s=>this.nodeIndex.get(s)).filter(s=>s!==void 0):[]}getDependents(e){const t=this.getNodeId(e.modelKey,e.attributeKey);return this.graph.hasNode(t)?this.graph.getDependents(t).map(s=>this.nodeIndex.get(s)).filter(s=>s!==void 0):[]}hasDependencies(e){const t=this.getNodeId(e.modelKey,e.attributeKey);return this.graph.hasNode(t)?this.graph.getDependencies(t).length>0:!1}hasNode(e){return this.nodeIndex.has(e)}getAllAttributes(){return Array.from(this.nodeIndex.values())}getMaxDepth(){let e=0;const t=(s,n=new Set)=>{if(n.has(s))return 0;n.add(s);const o=this.graph.getDependencies(s);if(o.length===0)return 1;let i=0;for(const a of o){const l=t(a,new Set(n));i=Math.max(i,l)}return i+1};for(const s of this.graph.getNodes()){const n=t(s);e=Math.max(e,n)}return e}validateCompleteness(e){const t=[];for(const[s,n]of e)for(const o of n){const i=this.getNodeId(s,o);this.hasNode(i)||t.push({modelKey:s,attributeKey:o})}return{isComplete:t.length===0,missing:t}}clear(){this.graph.clear(),this.nodeIndex.clear()}getStats(){const e=new Map,t=new Map;for(const s of this.nodeIndex.values())e.set(s.modelKey,(e.get(s.modelKey)||0)+1),t.set(s.processingStep,(t.get(s.processingStep)||0)+1);return{totalAttributes:this.nodeIndex.size,totalDependencies:this.graph.getAllEdges().length,maxDepth:this.getMaxDepth(),attributesByModel:e,attributesByStep:t}}toJSON(){return{nodes:Array.from(this.nodeIndex.values()),edges:this.graph.getAllEdges().map(([e,t])=>{const s=this.parseNodeId(e),n=this.parseNodeId(t);return{from:s,to:n}})}}}const _n={silent:0,error:1,warn:2,info:3,debug:4};let rf=class S{config;static globalConfig={};constructor(e={}){this.config={level:e.level??S.globalConfig.level??this.getDefaultLevel(),format:e.format??S.globalConfig.format??this.getDefaultFormat(),prefix:e.prefix,onLog:e.onLog??S.globalConfig.onLog,onTrackError:e.onTrackError??S.globalConfig.onTrackError}}static setGlobalConfig(e){S.globalConfig={...S.globalConfig,...e}}static getGlobalConfig(){return{...S.globalConfig}}static setModuleLevel(e,t){S.globalConfig.onLog||(S.globalConfig.onLog=void 0),S._moduleOverrides||(S._moduleOverrides=new Map),S._moduleOverrides.set(e,t)}static getModuleLevel(e){if(!(!e||!S._moduleOverrides))return S._moduleOverrides.get(e)}getDefaultLevel(){return"info"}getDefaultFormat(){return"pretty"}getEffectiveLevel(){if(this.config.prefix){const e=S.getModuleLevel(this.config.prefix);if(e)return e}return this.config.level}shouldLog(e){const t=this.getEffectiveLevel();return _n[e]<=_n[t]}formatMessage(e){if(this.config.format==="json"){const i={timestamp:new Date(e.timestamp).toISOString(),level:e.level,message:e.message};return e.prefix&&(i.module=e.prefix),e.context&&(i.context=e.context),e.error&&(i.error={name:e.error.name,message:e.error.message,stack:e.error.stack}),JSON.stringify(i)}const t=new Date(e.timestamp).toISOString().substring(11,23),s=e.prefix?`[${e.prefix}]`:"",n=this.getLevelIcon(e.level),o=e.context?` ${JSON.stringify(e.context)}`:"";return`${t} ${n} ${s} ${e.message}${o}`.trim()}getLevelIcon(e){switch(e){case"error":return"✖";case"warn":return"⚠";case"info":return"ℹ";case"debug":return"⚙";default:return" "}}log(e,t,s,n){if(!this.shouldLog(e))return;const o={level:e,message:t,timestamp:Date.now(),prefix:this.config.prefix,context:s,error:n};if(this.config.onLog){this.config.onLog(o);return}const i=this.formatMessage(o);if(typeof console<"u")switch(e){case"error":n?console.error(i,n):console.error(i);break;case"warn":console.warn(i);break;case"debug":console.debug?console.debug(i):console.log(i);break;default:console.log(i)}}error(e,t,s){const n=t instanceof Error?t:void 0,o=t instanceof Error?s:t;this.log("error",e,o,n)}trackError(e,t,s){if(this.error(e,t,s?.context),this.config.onTrackError){const n={level:"error",message:e,timestamp:Date.now(),prefix:this.config.prefix,context:s?.context,error:t,errorType:s?.errorType,errorGroup:s?.errorGroup};this.config.onTrackError(n)}}warn(e,t){this.log("warn",e,t)}info(e,t){this.log("info",e,t)}debug(e,t){this.log("debug",e,t)}child(e){const t={...this.config,...e,prefix:e.prefix?this.config.prefix?`${this.config.prefix}:${e.prefix}`:e.prefix:this.config.prefix};return new S(t)}configure(e){Object.assign(this.config,e)}};const Ee=new rf;class Dn{constructor(e){this.enabled=e,this.cache=new Map,this.cacheDependencies=new Map}cache;cacheDependencies;hitCount=0;missCount=0;log=Ee.child({prefix:"CacheController"});get(e,t){if(!this.enabled)return;const s=this.getCacheName(e,t);return this.cache.has(s)?this.hitCount++:this.missCount++,this.cache.get(s)}set(e,t,s,n){if(!this.enabled)return;const o=this.getCacheName(e,t);this.cache.set(o,s),n?this.cacheDependencies.set(o,n):this.log.debug(`Cache entry '${e}' stored without dependencies. This prevents granular invalidation and may cause stale data.`)}has(e,t){return this.cache.has(this.getCacheName(e,t))}clear(){this.cache.clear(),this.cacheDependencies.clear(),this.hitCount=0,this.missCount=0}invalidateByDependencies(e){if(!this.enabled)return;const t=[];for(const[s,n]of this.cacheDependencies){let o=!1;for(const[i,a]of e){if(n.models.has(i))if(n.modelAttributes.has(i)){const l=n.modelAttributes.get(i);for(const c of a)if(l.has(c)){o=!0;break}}else o=!0;if(o)break}o&&t.push(s)}for(const s of t)this.cache.delete(s),this.cacheDependencies.delete(s)}invalidateByModels(e){if(!this.enabled)return;const t=new Set(e),s=[];for(const[n,o]of this.cacheDependencies)for(const i of t)if(o.models.has(i)){s.push(n);break}for(const n of s)this.cache.delete(n),this.cacheDependencies.delete(n)}invalidateByKeyPrefix(e){if(!this.enabled)return;const t=[];for(const s of this.cache.keys())s.startsWith(e+"_")&&t.push(s);for(const s of t)this.cache.delete(s),this.cacheDependencies.delete(s)}invalidateForModel(e){this.invalidateByModels([e])}invalidateForAttribute(e,t){if(!this.enabled)return;const s=new Map;s.set(e,new Set([t])),this.invalidateByDependencies(s)}invalidateMatching(e){if(!this.enabled)return;const t=[];for(const s of this.cache.keys())e(s)&&t.push(s);for(const s of t)this.cache.delete(s),this.cacheDependencies.delete(s)}generateContext(e){try{return se(e)}catch(t){return this.log.error("Error in cache generateContext",t),e}}getCacheName(e,t){const s=mr(t);return e+"_"+s}getStats(){const e=this.hitCount+this.missCount,t=e>0?this.hitCount/e:0;return{size:this.cache.size,hitRate:t,totalEntries:this.cache.size,entriesWithDependencies:this.cacheDependencies.size,hits:this.hitCount,misses:this.missCount}}}function L(r=10){let e="";const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";for(let s=0;s<r;s++)e+=t.charAt(Math.floor(Math.random()*t.length));return e}class br{key;parentCd;dcuplInitOptions;analyticsController;off;updateListener=new Set;counter=0;constructor(){}_init(e){this.key=e.cdRefKey,this.analyticsController=e.analyticsController,this.parentCd=e.parentCd,this.dcuplInitOptions=e.dcuplInitOptions,this.parentCd&&(this.off=this.parentCd.on(t=>{t.action==="update"&&t.originCdRefKey===this.parentCd?.key&&(t.connectMessage=!1,this.trigger(t))}))}getCounter(){return this.parentCd?this.parentCd.getCounter():this.counter}increaseCounter(){this.parentCd?this.parentCd.increaseCounter():this.counter++}destroy(){this.off&&this.off()}trigger(e){e.originCdRefKey||(e.originCdRefKey=this.key),e.key||(this.increaseCounter(),e.key=this.getCounter()),e.end||(e.end=ye.now(),e.duration=e.start-e.end),this.updateListener.forEach(t=>{t(e)})}on(e){return this.updateListener.add(e),()=>{this.updateListener.delete(e)}}}const xn=(r,e)=>e?typeof structuredClone<"u"?structuredClone(r):se(r):r,Pn=(r,e,t,s,n,o)=>{try{const i=!!e.dcuplInitOptions.performance?.clone?.enabled&&!!t.cloneResult,a=xn(o,i);if(t.scope==="list"&&(t.listKey=r.cdRef?.key||r.key,t.modelKey=r.model?.key||r.modelKey),t.type==="list_created"&&t.args[0].listKey.startsWith("__global_list__")||t.listKey?.startsWith("__global_list__"))return a;const l=ye.now(),c=l-s,u=Math.round(c*1e3)/1e3;t.duration=u,t.start=s,t.end=l;const d={duration:t.duration};return t.modelKey&&(d.model=t.modelKey),t.connectMessageResult&&(t.result=a),t.args&&(d.args=t.args),e?.trigger(t),e.analyticsController.mark({name:`${t.type}:end`,context:n}),e.analyticsController.measure({name:t.type,start:`${t.type}:start`,end:`${t.type}:end`,context:n,detail:d}),a}catch{return o}},v=r=>(e,t,s)=>{const n=s.value;return s.value=function(...o){const i=ye.now(),a=this.cdRef,l=xn(r,!0);l.key||(a.increaseCounter(),l.key=a.getCounter());const c=L();a.analyticsController.mark({name:`${l.type}:start`,context:c});const u=this.model?.key;!l.originCdRefKey&&a.key&&(l.originCdRefKey=a.key),u&&(l.modelKey=u);const d=n.apply(this,o);return l.method=t,l.args=o,d&&typeof d=="object"&&"then"in d?d.then(f=>Pn(this,a,l,i,c,f)):Pn(this,a,l,i,c,d)},s};function sf(r,e,t,s){t.max||(t.max=20);const n=[],o=t.transform?s.transformValue(t.value,t.transform):t.value;for(const[i,a]of e.entries()){const l=Array.from(a).some(u=>r.has(u)),c=t.transform?s.transformValue(i,t.transform):i;if(!(t.excludeUndefineds&&typeof i>"u")&&!(t.excludeNulls&&i===null)){if(l&&(o===""||o==="//")){const u={value:i,keys:t.calculateResultKeys?Array.from(a):[]};n.push(u)}else if(l&&typeof o=="string"&&o.startsWith("/")&&o.endsWith("/")){if(s.queryFind(c,o,"some")){const u={value:i,keys:t.calculateResultKeys?Array.from(a):[]};n.push(u)}}else if(l&&typeof o=="string"){const u=String(c??""),d=o;if(u.toLowerCase().startsWith(d.toLowerCase())){const f={value:i,keys:t.calculateResultKeys?Array.from(a):[]};n.push(f)}}else if(l&&s.queryFind(c,o,"some")){const u={value:i,keys:t.calculateResultKeys?Array.from(a):[]};n.push(u)}if(n.length===t.max)break}}return n}function nf(r){return r instanceof Date}function jn(r){return r instanceof Date&&!isNaN(r.getTime())}const of={yyyy:{type:"year",pattern:"yyyy",regex:"(\\d{4})"},yy:{type:"year",pattern:"yy",regex:"(\\d{2})"},MM:{type:"month",pattern:"MM",regex:"(\\d{2})"},M:{type:"month",pattern:"M",regex:"(\\d{1,2})"},dd:{type:"day",pattern:"dd",regex:"(\\d{2})"},d:{type:"day",pattern:"d",regex:"(\\d{1,2})"},HH:{type:"hour",pattern:"HH",regex:"(\\d{2})"},H:{type:"hour",pattern:"H",regex:"(\\d{1,2})"},mm:{type:"minute",pattern:"mm",regex:"(\\d{2})"},m:{type:"minute",pattern:"m",regex:"(\\d{1,2})"},ss:{type:"second",pattern:"ss",regex:"(\\d{2})"},s:{type:"second",pattern:"s",regex:"(\\d{1,2})"},SSS:{type:"millisecond",pattern:"SSS",regex:"(\\d{3})"}};function af(r){let e="^";const t=[];let s=r;const n=Object.entries(of).sort((o,i)=>i[0].length-o[0].length);for(;s.length>0;){let o=!1;for(const[i,a]of n)if(s.startsWith(i)){e+=a.regex,t.push({type:a.type,pattern:i}),s=s.slice(i.length),o=!0;break}if(!o){const i=s[0];if(!i)break;e+=i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),s=s.slice(1)}}return e+="$",{regex:new RegExp(e),tokenOrder:t}}function lf(r,e){const t={year:1970,month:1,day:1,hour:0,minute:0,second:0,millisecond:0};for(let s=0;s<e.length;s++){const n=r[s+1];if(!n)continue;const o=parseInt(n,10),i=e[s];i&&(i.type==="year"&&i.pattern==="yy"?t.year=2e3+o:t[i.type]=o)}return t}function cf(r){if(r.month<1||r.month>12)return new Date(NaN);if(r.day<1||r.day>31)return new Date(NaN);if(r.hour<0||r.hour>23)return new Date(NaN);if(r.minute<0||r.minute>59)return new Date(NaN);if(r.second<0||r.second>59)return new Date(NaN);if(r.millisecond<0||r.millisecond>999)return new Date(NaN);const e=new Date(r.year,r.month-1,r.day,r.hour,r.minute,r.second,r.millisecond);return jn(e)?e.getFullYear()!==r.year||e.getMonth()!==r.month-1||e.getDate()!==r.day?new Date(NaN):e:new Date(NaN)}function uf(r,e,t){if(r=r.trim(),e==="t"){const a=Number(r);return isNaN(a)?new Date(NaN):new Date(a*1e3)}if(e==="T"){const a=Number(r);return isNaN(a)?new Date(NaN):new Date(a)}const{regex:s,tokenOrder:n}=af(e),o=r.match(s);if(!o)return new Date(NaN);const i=lf(o,n);return cf(i)}class df{cache;maxSize;accessOrder;constructor(e){this.cache=new Map,this.maxSize=e,this.accessOrder=[]}get(e){const t=this.cache.get(e);return t!==void 0&&this.updateAccessOrder(e),t}set(e,t){if(this.cache.has(e))this.cache.set(e,t),this.updateAccessOrder(e);else{if(this.cache.size>=this.maxSize){const s=this.accessOrder.shift();s!==void 0&&this.cache.delete(s)}this.cache.set(e,t),this.accessOrder.push(e)}}has(e){return this.cache.has(e)}clear(){this.cache.clear(),this.accessOrder=[]}get size(){return this.cache.size}updateAccessOrder(e){const t=this.accessOrder.indexOf(e);t>-1&&this.accessOrder.splice(t,1),this.accessOrder.push(e)}getStats(){return{size:this.cache.size,maxSize:this.maxSize}}}class ff{graph;constructor(){this.graph=new Map}addDependency(e,t){this.graph.has(e)||this.graph.set(e,new Set),this.graph.get(e).add(t)}hasCycle(e){if(e.length===0)return!1;const t=new Set,s=new Set,n=o=>{t.add(o),s.add(o);const i=this.graph.get(o);if(i){for(const a of i)if(t.has(a)){if(s.has(a))return!0}else if(n(a))return!0}return s.delete(o),!1};for(let o=0;o<e.length-1;o++){const i=e[o],a=e[o+1];i&&a&&this.addDependency(i,a)}for(const o of e)if(!t.has(o)&&n(o))return!0;return!1}clear(){this.graph.clear()}}class hf{parseCache;circularRefDetector;cacheHits=0;cacheMisses=0;constructor(e=1e3){this.parseCache=new df(e),this.circularRefDetector=new ff}parse(e){if(this.parseCache.has(e))return this.cacheHits++,this.parseCache.get(e);this.cacheMisses++;let t,s;const n=e.includes("."),o=e.includes("["),i=n||o;if(i)if(s=e.split(/[.[]/)[0],o){const l=e.indexOf("]");if(l>-1){const c=e.indexOf(".",l+1);c>-1?t=e.substring(c+1):t=void 0}else n&&(t=e.substring(e.indexOf(".")+1))}else n&&(t=e.substring(e.indexOf(".")+1));const a={attribute:e,isDeepQuery:i};return s&&(a.reference=s),typeof t<"u"&&t!==""&&(a.referenceAttribute=t),this.parseCache.set(e,a),a}detectCircular(e){return e.length===0?!1:new Set(e).size!==e.length?!0:this.circularRefDetector.hasCycle(e)}validatePath(e,t=10){const s=[];if(!e||e.trim().length===0)return s.push("Attribute path cannot be empty"),{valid:!1,errors:s};(e.startsWith(".")||e.endsWith("."))&&s.push(`Invalid path: Leading or trailing dots are not allowed: ${e}`),e.includes("..")&&s.push(`Invalid path: Consecutive dots are not allowed: ${e}`);const n=(e.match(/\[/g)||[]).length,o=(e.match(/]/g)||[]).length;n!==o&&s.push(`Invalid bracket notation: Mismatched brackets in ${e}`),e.includes("[]")&&s.push(`Invalid bracket notation: Empty brackets not allowed: ${e}`);const i=/\[([^\]]+)\]/g;let a;for(;(a=i.exec(e))!==null;){const u=a[1];u&&u!=="*"&&!/^\d+$/.test(u)&&s.push(`Invalid bracket content: Must be a number or '*', got '${u}' in ${e}`)}const l=(e.match(/\./g)||[]).length+1;l>t&&s.push(`Path too deep: Maximum depth is ${t}, got ${l} in ${e}`);const c=e.match(/[^a-zA-Z0-9._[\]*-]/g);return c&&s.push(`Invalid characters in path: ${c.join(", ")} in ${e}`),{valid:s.length===0,errors:s.length>0?s:void 0}}clearCache(){this.parseCache.clear(),this.cacheHits=0,this.cacheMisses=0}clearCircularDetector(){this.circularRefDetector.clear()}getCacheStats(){const e=this.parseCache.getStats(),t=this.cacheHits+this.cacheMisses,s=t>0?this.cacheHits/t:0;return{...e,hits:this.cacheHits,misses:this.cacheMisses,hitRate:s}}getPathSegments(e){return e.replace(/\[[^\]]+\]/g,"").split(".").filter(t=>t.length>0)}getPathDepth(e){return this.getPathSegments(e).length}}const D=new hf;function ge(r,e){if(e.includes("[*]")){const o=e.indexOf("[*]"),i=e.substring(0,o),a=e.substring(o+3),l=i?Xe(r,i):r;if(!Array.isArray(l))return[];const c=[];for(const u of l)!a||a===""?u!==void 0&&c.push(u):a.startsWith(".")&&c.push(...ge(u,a.slice(1)));return c}const t=e.split(".");let s=[r];for(const o of t){const i=[];for(const a of s)if(a!=null)if(Array.isArray(a))for(const l of a){if(l==null)continue;const c=l[o];c!==void 0&&i.push(c)}else{const l=a[o];l!==void 0&&i.push(l)}if(s=i,s.length===0)return[]}const n=[];for(const o of s)if(Array.isArray(o))for(const i of o)i!==void 0&&n.push(i);else o!==void 0&&n.push(o);return n}function kr(r){let e=0;for(let t of r){const s=t.toString().split(".")[1];s&&(e=Math.max(e,s.length))}return Math.pow(10,e)}function Rn(r,e,t){return(r*t+e*t)/t}function pf(r,e,t){return r*t/(e*t)}const tt=(r,e,t,s)=>{if(!s)throw new Error("Attribute not found");const n={attribute:s,types:r.types};let o;(n.types.includes("sum")||n.types.includes("avg"))&&(o=vf(s,e));let i;return(n.types.includes("min")||n.types.includes("max"))&&(i=gf(s,e)),r.types.forEach(a=>{a==="sum"?n.sum=o?.sum:a==="avg"?n.avg=o?.average:a==="count"?n.count=yf(s,e):a==="min"?n.min=i&&i[0]:a==="max"?n.max=i&&i[1]:a==="distinct"?n.distinct=bf(r,e,t):a==="group"&&(n.group=mf(r,e))}),n},yf=(r,e)=>{const t=D.parse(r).isDeepQuery;let s=0;for(const n of e.values())if(n)if(t)s+=ge(n,r).filter(o=>o!=null).length;else{const o=n[r];if(o==null)continue;Array.isArray(o)?s+=o.filter(i=>i!=null).length:s++}return s},gf=(r,e)=>{let t,s;const n=D.parse(r).isDeepQuery;for(const o of e.values()){if(!o)continue;let i;if(n)i=ge(o,r);else{const a=o[r];a===void 0?i=[]:Array.isArray(a)?i=a.filter(l=>l!==void 0):i=[a]}for(const a of i)a==null||typeof a=="object"||((t===void 0||a<t)&&(t=a),(s===void 0||a>s)&&(s=a))}if(!(t===void 0||s===void 0))return[t,s]},mf=(r,e)=>{const t=[];r.groupOptions?.groups?.forEach(o=>{t.push({option:o,count:0,keys:[]})});const s={option:{value:["$dcupl_not_found"]},count:0,keys:[]},n=D.parse(r.attribute).isDeepQuery;for(const o of e.values()){let i;n?i=ge(o,r.attribute):i=[o[r.attribute]];let a=!1;for(const l of i)for(const c of t)(typeof c.option.value<"u"&&c.option.value.includes(l)||typeof c.option.from<"u"&&c.option.from<l&&typeof c.option.to<"u"&&c.option.to>l)&&(c.keys.includes(o.key)||(c.count++,c.keys.push(o.key)),a=!0);!a&&r?.groupOptions?.calculateNotFound&&(s.count++,s.keys.push(o.key))}return r?.groupOptions?.calculateNotFound&&t.push(s),t},vf=(r,e)=>{let t=0,s=0;const n=D.parse(r).isDeepQuery;for(const o of e.values()){if(!o)continue;let i;if(n)i=ge(o,r);else{const a=o[r];a===void 0?i=[]:Array.isArray(a)?i=a:i=[a]}for(const a of i)if(Array.isArray(a))for(const l of a)typeof l=="number"&&(t=Rn(t,l,kr([t,l])),s++);else typeof a=="number"&&(t=Rn(t,a,kr([t,a])),s++)}return s===0?void 0:{average:pf(t,s,kr([t,s])),count:s,sum:t}},bf=(r,e,t)=>{const s=[];for(const[n,o]of t)if(!(r.excludeUndefineds&&typeof n>"u")&&Array.from(o).find(i=>e.has(i))){const i={value:n,count:o.size};if(r.distinctOptions?.skipKeys||(i.keys=Array.from(o)),s.push(i),r.distinctOptions?.limit&&s.length>=r.distinctOptions.limit)break}return s};let rt=class extends Error{query;constructor(e,t){const s=`Query Error: ${e} in ${JSON.stringify(t,null,2)}`;super(s),this.query=t,this.name="DcuplQueryError"}},me=class{_defaultQueryOptions={modelKey:"",groupKey:"root",groupType:"and",queries:[]};_initOptions;currentQuery=se(this._defaultQueryOptions);deepQueryService;constructor(e){this.deepQueryService=e||D}init(e){this._initOptions=se(e),this.currentQuery=se(this._defaultQueryOptions),this.currentQuery.modelKey=e.modelKey,"queries"in e&&Array.isArray(e.queries)&&(e.groupType&&(this.currentQuery.groupType=e.groupType),e.queries&&(this.currentQuery.queries=se(e.queries)),e.count!==void 0&&(this.currentQuery.count=e.count),e.start!==void 0&&(this.currentQuery.start=e.start),e.sort&&(this.currentQuery.sort=e.sort),e.projection&&(this.currentQuery.projection=e.projection))}reset(){return this.init(this._initOptions),this.getQuery()}isQuery(e){return"attribute"in e}isQueryGroup(e){return"groupKey"in e}isRootQueryGroup(e){return this.isQueryGroup(e)&&e.groupKey==="root"}getQueryGroup(e){return this.currentQuery.queries.find(t=>this.isQueryGroup(t)&&t.groupKey===e)}getQuery(){return se(this.currentQuery)}hasQueryGroup(e){return this.currentQuery.queries.some(t=>this.isQueryGroup(t)&&t.groupKey===e)}has(e){if(e.groupKey&&e.queryKey){const t=this.getQueryGroup(e.groupKey);if(t)return t.queries.some(s=>this.isQuery(s)&&s.queryKey===e.queryKey)}else if(e.groupKey)return this.hasQueryGroup(e.groupKey);return!1}validate(e){const t=e.queries.map(s=>this.validateQuery(s));return{valid:pn(t,s=>s.valid),errors:t.map(s=>s.errors).flat()}}applyOptions(e,t="update"){return t==="set"?(this.currentQuery.count=e.count,this.currentQuery.start=e.start,this.currentQuery.sort=e.sort,this.currentQuery.projection=e.projection):(typeof e?.sort<"u"&&(this.currentQuery.sort=e.sort),typeof e?.count<"u"&&(this.currentQuery.count=e.count),typeof e?.start<"u"&&(this.currentQuery.start=e?.start),typeof e?.projection<"u"&&(this.currentQuery.projection=e?.projection)),this.getQuery()}applyQuery(e,t,s){if(s||(s=this.currentQuery),Array.isArray(e))for(const n of e)this.applyQuery(n,t,s);else if(this.isRootQueryGroup(e))e.groupType&&(s.groupType=e.groupType),t?.mode==="set"?s.queries=e.queries:s.queries=[...s.queries,...e.queries],this.applyOptions(e,"set");else if(this.isQuery(e)){const n=s.queries.findIndex(o=>this.isQueryGroup(o)&&o.groupKey===e.attribute);if(n>-1){const o=s.queries[n];t?.mode==="set"?o.queries=[e]:o.queries.push(e)}else s.queries.push({groupKey:e.attribute,groupType:"or",queries:[e]})}else if(this.isQueryGroup(e)){const n=s.queries.findIndex(o=>this.isQueryGroup(o)&&o.groupKey===e.groupKey);if(n>-1){const o=s.queries[n];e.groupType&&(o.groupType=e.groupType),t?.mode==="set"?s.queries[n]=e:o.queries=[...o.queries,...e.queries]}else s.queries.push({groupKey:e.groupKey,groupType:e.groupType||"or",queries:e.queries})}return s}removeAllQueries(){return this.currentQuery.queries=[],this.getQuery()}removeQuery(e,t){if(t||(t=this.currentQuery),this.isQuery(e)){const s=t.queries.findIndex(n=>this.isQueryGroup(n)&&n.groupKey===e.attribute);if(s>-1){const n=t.queries[s],o=pr(n.queries,e);o>-1&&n.queries.splice(o,1),n.queries.length===0&&t.queries.splice(s,1)}}else if(this.isQueryGroup(e)){const s=t.queries.findIndex(n=>this.isQueryGroup(n)&&n.groupKey===e.groupKey);if(s>-1)if(!e.queries)t.queries.splice(s,1);else{const n=t.queries[s];for(const o of e.queries){const i=pr(n.queries,o);i>-1&&n.queries.splice(i,1)}n.queries.length===0&&t.queries.splice(s,1)}}return t}validateQuery(e){const t=[];if(this.isQuery(e))return e.attribute||t.push(new rt("Missing attribute",e)),e.operator||t.push(new rt("Missing operator",e)),typeof e.value>"u"&&t.push(new rt("Missing value",e)),e.operator==="find"&&Array.isArray(e.value)&&t.push(new rt("find operator cannot have array value",e)),t.length>0?{valid:!1,errors:t}:{valid:!0};if(this.isQueryGroup(e)){const s=e.queries.map(n=>this.validateQuery(n)).filter(n=>!n.valid).map(n=>n.errors).flat();return s.length>0?{valid:!1,errors:s}:{valid:!0}}return t.push(new rt("Invalid query definition",e)),{valid:!1,errors:t}}getQueryAttributes(e){const t=[],s=new Set,n=o=>{for(const i of o)this.isQuery(i)?i.attribute&&!s.has(i.attribute)&&(t.push(i.attribute),s.add(i.attribute)):this.isQueryGroup(i)&&n(i.queries)};return n(e?.queries||this.currentQuery.queries),t}extractQueryAttributes(e){const t=[],s=new Set,n=o=>{for(const i of o)if(this.isQuery(i)){if(i.attribute&&!s.has(i.attribute)){const a=this.getQueryAttributeForString(i.attribute);t.push(a),s.add(i.attribute)}}else this.isQueryGroup(i)&&n(i.queries)};return n(e?.queries||this.currentQuery.queries),t}getQueryAttributeForString(e){return this.deepQueryService.parse(e)}getDeepQueryService(){return this.deepQueryService}getProjectionForAttributes(e){const t={};return e.forEach(s=>{t[s]=!0}),t}getProjectionForAttributeEntries(e){const t={$:!0};return e.forEach(s=>{if(s.isDeepQuery){if(s.reference)if(s.referenceAttribute&&s.referenceAttribute.length>0){t[s.reference]||(t[s.reference]={$:!0});const n=this.deepQueryService.parse(s.referenceAttribute);if(n.isDeepQuery&&s.reference){const o=this.getProjectionForAttributeEntries([n]);Object.keys(o).forEach(i=>{i!=="$"&&s.reference&&(t[s.reference][i]=o[i])})}else s.reference&&(t[s.reference][s.referenceAttribute]=!0)}else t[s.reference]=!0}else t[s.attribute]=!0}),t}getAttributeNames(e){return this.getQueryAttributes(e)}getAttributeDetails(e){return this.extractQueryAttributes(e||this.currentQuery)}getCurrentAttributeNames(){return this.getAttributeNames(this.currentQuery)}getCurrentAttributeDetails(){return this.getAttributeDetails(this.currentQuery)}addCondition(e){return this.applyQuery(e,{mode:"add"})}addGroup(e){return this.applyQuery(e,{mode:"add"})}setCondition(e){return this.applyQuery(e,{mode:"set"})}setGroup(e){return this.applyQuery(e,{mode:"set"})}mergeQuery(e){if(e.queries&&Array.isArray(e.queries))for(const t of e.queries)this.applyQuery(t,{mode:"add"});return this.currentQuery}replaceQuery(e){return this.currentQuery.queries=[],e.groupType&&(this.currentQuery.groupType=e.groupType),e.queries&&Array.isArray(e.queries)&&(this.currentQuery.queries=e.queries),this.currentQuery}clear(){return this.reset()}clearConditions(){return this.removeAllQueries()}getCurrentQuery(){return this.getQuery()}isEmpty(){return this.currentQuery.queries.length===0}hasCondition(e){const t=s=>{for(const n of s)if(this.isQuery(n)){let o=!0;for(const i in e)if(n[i]!==e[i]){o=!1;break}if(o)return!0}else if(this.isQueryGroup(n)&&t(n.queries))return!0;return!1};return t(this.currentQuery.queries)}hasGroup(e){return this.hasQueryGroup(e)}getUsedAttributes(){return this.getAttributeNames()}getDeepQueryAttributes(){return this.getAttributeDetails().filter(e=>e.isDeepQuery)}getGroups(){return this.currentQuery.queries.filter(e=>this.isQueryGroup(e))}getTopLevelConditions(){return this.currentQuery.queries.filter(e=>this.isQuery(e))}getGroup(e){return this.getQueryGroup(e)}getConditionCount(){const e=t=>{let s=0;for(const n of t)this.isQuery(n)?s++:this.isQueryGroup(n)&&(s+=e(n.queries));return s};return e(this.currentQuery.queries)}};const Ar=new me;function kf(r,e,t,s,n,o,i){const a=[],l=Ar.removeQuery({groupKey:n},se(s)),c=i.queryData(r,l,!1,o),u=e?[...e.keys()]:[],d=new Set(u),f=o.get(n);if(!t.excludeUnresolved)for(const h of f.keys())d.add(h);t.excludeUndefineds?d.delete(void 0):d.add(void 0);for(const h of d.values()){const p=new Map,y=f.get(h)||new Set;for(const g of y){const b=c.get(g);if(b&&(p.set(g,b),!t?.calculateFacets))break}const m={key:String(h),value:h,selected:Af(n,h,s),enabled:p.size>0,size:p.size,entry:e.get(h),resultKeys:Array.from(p.keys())};if(!(t?.excludeZeros&&m.size===0)){if(t?.count&&a.length===t?.count)return a;a.push(m)}}return a}const Af=(r,e,t)=>{const s=t.queries.findIndex(n=>Ar.isQueryGroup(n)&&n.groupKey===r);return s>-1?!!t.queries[s].queries.find(n=>{if(Ar.isQuery(n)){const o=n.value?.key||n.value;return n.attribute===r&&o===e}return!1}):!1};class Rt{indexMap=new Map;dataMap=new Map;indexMetadata=new Map;constructor(){}reset(e){e?(this.indexMap.delete(e),this.dataMap.delete(e),this.indexMetadata.delete(e)):(this.indexMap.clear(),this.dataMap.clear(),this.indexMetadata.clear())}fillDataMap(e,t){let s=this.dataMap.get(e);s||(s=new Map,this.dataMap.set(e,s));for(const n of t){let o;if(typeof n=="object"&&n&&n.key)o=n.key;else if(Array.isArray(n)){for(const a of n)this.fillDataMap(e,[a]);return}else n instanceof Date?o=n.toISOString():o=n;let i=s.get(o);i||(i={key:o},this.dataMap.get(e)?.set(o,i))}}fillInverseIndex(e,t,s){if(!e||!t||!s||!Array.isArray(s))return;const n=this.indexMap.get(e)||new Map;for(const o of s){let i;if(typeof o=="object"&&o&&o.key)i=o.key;else if(Array.isArray(o)){for(const l of o)this.fillInverseIndex(e,t,[l]);return}else o instanceof Date?i=o.toISOString():i=o;let a=n.get(i);a||(a=new Set,n.set(i,a)),a.add(t)}this.indexMap.set(e,n)}getIndex(e,t){const s=this.getIndexName(e,t);return this.indexMap.get(s)}getData(e,t){const s=this.getIndexName(e,t);return this.dataMap.get(s)}getOrCreateIndex(e,t,s){const n=this.getIndexName(e,s);let o=this.getIndex(n);const i=this.indexMetadata.get(n);if(i)i.lastAccessedAt=Date.now();else if(!o){const a=D.parse(e).isDeepQuery??!1;this.indexMetadata.set(n,{createdAt:Date.now(),lastAccessedAt:Date.now(),context:s,type:a?"deep":"shallow"})}if(!o){this.reset(n),this.indexMap.set(n,new Map);const a=D.parse(e).isDeepQuery;for(const l of t.values()){let c;a?(c=ge(l,e),c.length===0&&(c=[void 0])):c=[l[e]],this.fillInverseIndex(n,l.key,c),this.fillDataMap(n,c)}o=this.getIndex(n)||new Map}return o}getIndexName(e,t){return t?e+"_"+mr(t):e}removeFromInverseIndex(e,t,s){const n=this.indexMap.get(e);if(n)for(const o of s){let i;if(typeof o=="object"&&o&&o.key)i=o.key;else if(Array.isArray(o)){for(const l of o)this.removeFromInverseIndex(e,t,[l]);return}else o instanceof Date?i=o.toISOString():i=o;const a=n.get(i);a&&(a.delete(t),a.size===0&&n.delete(i))}}updateInverseIndex(e,t,s,n){this.removeFromInverseIndex(e,t,s),this.fillInverseIndex(e,t,n)}removeFromDataMap(e,t){const s=this.dataMap.get(e);if(s)for(const n of t){let o;if(typeof n=="object"&&n&&n.key)o=n.key;else if(Array.isArray(n)){for(const i of n)this.removeFromDataMap(e,[i]);return}else n instanceof Date?o=n.toISOString():o=n;s.delete(o)}}updateDataMap(e,t,s){this.removeFromDataMap(e,t),this.fillDataMap(e,s)}removeItemFromAllIndices(e){for(const t of this.indexMap.values())for(const[s,n]of t)n.delete(e)&&n.size===0&&t.delete(s);for(const t of this.dataMap.values())t.has(e)&&t.delete(e)}resetAttributes(e){for(const t of e)this.reset(t)}isDeepQueryIndex(e){const t=e.includes("_")?e.split("_")[0]:e;try{return D.parse(t).isDeepQuery??!1}catch{return!1}}getDeepIndexKeys(){const e=[];for(const t of this.indexMap.keys())this.isDeepQueryIndex(t)&&e.push(t);return e}resetAllDeepIndices(){const e=this.getDeepIndexKeys();for(const t of e)this.indexMap.delete(t),this.dataMap.delete(t)}getIndexCount(){let e=0,t=0;for(const s of this.indexMap.keys())this.isDeepQueryIndex(s)?t++:e++;return{shallow:e,deep:t,total:e+t}}cleanupStaleIndices(e=300*1e3){const t=Date.now();let s=0;for(const[n,o]of this.indexMetadata)t-o.lastAccessedAt>e&&(this.reset(n),s++);return s}getStats(){const e=this.getIndexCount(),t=Date.now();let s=0,n=0;for(const i of this.indexMetadata.values()){const a=t-i.createdAt;s+=a,a>n&&(n=a)}const o=this.indexMetadata.size>0?s/this.indexMetadata.size:0;return{shallow:e.shallow,deep:e.deep,total:e.total,oldestAge:n,avgAge:o}}}const Me="__";function wr(r,e,t={key:"root"},s="root",n=new Rt,o){const i=o||r;for(const a of e.columns)a.attribute&&(D.parse(a.attribute),n.getOrCreateIndex(a.attribute,i));for(const a of e.rows)a.attribute&&(D.parse(a.attribute),n.getOrCreateIndex(a.attribute,i));for(const a of e.values)a.attribute&&(D.parse(a.attribute),n.getOrCreateIndex(a.attribute,i));if(e.rows&&e.rows.length>0){t.rows=t.rows||[];const a=wf(r,e.rows[0],e,n,s,o);t.rows.push(a)}if(e.columns&&e.columns.length>0){t.columns=t.columns||[];const a=En(r,e.columns[0],e,n,s,o);t.columns.push(a)}if(t.key==="root")for(const a of e.values){if(t.values=t.values||[],s==="root"&&e.options?.calculateTotals===!1)continue;const l=tt(a,r,n.getIndex(a.attribute),a.attribute);t.values.push(l)}return t}function wf(r,e,t,s,n="",o){const i={key:e.attribute},a=s.getIndex(e.attribute);if(!a)return i;for(const[l,c]of a.entries()){const u={key:l,value:l},d=new Map;for(const f of c)r.has(f)&&d.set(f,r.get(f));if(d.size){for(const f of t.values){if(u.values=u.values||[],n==="root"&&e?.calculateTotals===!1)continue;const h=tt(f,d,s.getIndex(f.attribute),f.attribute);u.values.push(h)}if(i.rows=i.rows||[],i.rows.push(u),t.rows.length>1){const f={...t,rows:t.rows.slice(1)};wr(d,f,u,n+Me+e.attribute+Me+l,s,o)}else if(t.columns)for(const f of t.columns){u.columns=u.columns||[];const h=En(d,f,t,s,n+Me+e.attribute+Me+l,o);u.columns.push(h)}}}return i}function En(r,e,t,s,n="",o){const i={key:e.attribute},a=s.getIndex(e.attribute);if(!a)return i;for(const[l,c]of a.entries()){const u={key:l,value:l},d=new Map;for(const f of c)r.has(f)&&d.set(f,r.get(f));if(d.size){for(const f of t.values){if(u.values=u.values||[],n==="root"&&e?.calculateTotals===!1)continue;const h=tt(f,d,s.getIndex(f.attribute),f.attribute);u.values.push(h)}if(i.columns=i.columns||[],i.columns.push(u),t.columns.length>1){const f={...t,columns:t.columns.slice(1)};wr(d,f,u,n+Me+e.attribute+Me+l,s,o)}}}return i}const $f=r=>r==null||r==="",Mn=(r,e=!1)=>{const t=typeof e=="boolean"?{deep:e}:e,s=t.deep??(t.sampleSize!==void 0&&t.sampleSize>1)?t.sampleSize??1/0:1,n=t.ignoreEmpty??s>1,o=[],i=Math.min(r.length,s);for(let a=0;a<i;a++){const l=r[a];if(l)for(const[c,u]of Object.entries(l)){if(n&&$f(u))continue;const d=Cf(u),f=o.find(h=>h.key===c);if(f)f.type!==d&&(f.type="any");else{const h={key:c,type:d};o.push(h)}}}return o},In=r=>Number(r)===r&&r%1===0,Sn=r=>Number(r)===r&&r%1!==0,Cf=r=>{switch(typeof r){case"string":return"string";case"number":return In(r)?"int":Sn(r)?"float":"any";case"boolean":return"boolean";case"object":return nf(r)?"date":"json";default:return"any"}};class _f{constructor(e,t,s){this.scriptController=e,this.globalItemService=t,this.modelParser=s}registeredCustomOperator=new Map;queryBuilder=new me;registerCustomOperator(e,t){this.registeredCustomOperator.set(e,t)}transformValue(e,t){if(Array.isArray(e))return e.map(s=>this.transformValue(s,t));if(typeof e!="string")return e;for(const s of t)s==="lowercase"?e=e.toLowerCase():s==="trim"?e=e.trim():s==="removeWhitespace"&&(e=e.replace(/\s/g,""));return e}evaluateQuery(e,t){let s,n=e.value;const o=e.options?.arrayValueHandling||"some";if(Array.isArray(e.options?.transform)&&e.options.transform.length>0&&(n=this.transformValue(n,e.options.transform)),e.attribute.includes(".")||e.attribute.includes("[")?s=Xe(t,e.attribute):s=t[e.attribute],Array.isArray(e.options?.transform)&&e.options.transform.length>0&&(s=this.transformValue(s,e.options.transform)),(typeof s>"u"||s===null)&&!["typeof","isTruthy","eq"].includes(e.operator))return!1;switch(e.operator){case"eq":return e.options?.invert?!yn(s,n):yn(s,n);case"find":return e.options?.invert?!this.queryFind(s,n,o):this.queryFind(s,n,o);case"lt":return Array.isArray(s)?o==="some"?s.some(i=>i<n):s.every(i=>i<n):s<n;case"gt":return Array.isArray(s)?o==="some"?s.some(i=>i>n):s.every(i=>i>n):s>n;case"lte":return Array.isArray(s)?o==="some"?s.some(i=>i<=n):s.every(i=>i<=n):s<=n;case"gte":return Array.isArray(s)?o==="some"?s.some(i=>i>=n):s.every(i=>i>=n):s>=n;case"typeof":return e.options?.invert?typeof s!==n:Array.isArray(s)?o==="some"?s.some(i=>typeof i===n):s.every(i=>typeof i===n):typeof s===n;case"isTruthy":return n===!0?Array.isArray(s)?o==="some"?s.some(i=>typeof!!i):s.every(i=>typeof!!i):!!s:!s;case"size":return typeof s=="string"?s.length===n:Zd(s)===n;default:if(this.scriptController.hasScript(e.operator))return this.scriptController.executeScript(e.operator,"operator",{query:e,item:t});if(this.registeredCustomOperator.has(e.operator)){const i=this.registeredCustomOperator.get(e.operator);if(typeof i=="function")return i(e,t)}}return!1}evaluateEqOperator(e,t,s,n){const o=new Map,i=n.get(t.attribute);if(i){let a;if(typeof t.value=="string"?a=t.value:t.value?.key&&Object.keys(t.value).length===1&&(a=t.value.key),typeof a<"u"){const l=i.get(a);if(l)if(l.forEach(c=>{s.has(c)&&o.set(c,s.get(c))}),t.options?.invert){const c=fn(Array.from(s.values()),Array.from(o.values()),"key"),u=new Map;return c.forEach(d=>{u.set(d.key,d)}),u}else return o}}for(let[a,l]of s){const c=this.queryBuilder.extractQueryAttributes({queries:[t]});if(c.some(u=>u.isDeepQuery)){const u=this.queryBuilder.getProjectionForAttributeEntries(c.filter(d=>d.isDeepQuery));l=this.globalItemService.getProjectedData(u,this.modelParser.models.get(e.modelKey),l)}this.evaluateQuery(t,l)&&o.set(a,l)}return o}equalRegexFn(e,t){if(typeof t=="string"&&Xd(t,"/")&&hn(t,"/"))try{return new RegExp(t.slice(1,-1)).test(e)}catch{return!1}else return Array.isArray(e)?!!e.find(s=>jt(s,t,this.equalRegexFn)):typeof t=="object"?Rd(e,t):e===t}queryFind(e,t,s){return Array.isArray(e)?typeof t=="string"||typeof t=="number"||typeof t=="boolean"?s==="some"?e.some(n=>jt(n,t,this.equalRegexFn)):e.every(n=>jt(n,t,this.equalRegexFn)):!!xd(e,t):jt(e,t,this.equalRegexFn)}validateQuery(e){if(this.queryBuilder.isQuery(e)){if(!e.attribute||!e.operator)throw new Error("invalid query - missing attribute or operator");if(e.operator==="find"&&Array.isArray(e.value))throw new Error("invalid query - find operator cannot have array value");return!0}else{if(this.queryBuilder.isQueryGroup(e))return pn(e.queries,t=>this.validateQuery(t));throw new Error("invalid query - missing query or attribute")}}getEvaluatedQueryDataset(e,t,s,n){const o=new Map;if(t.attribute.includes("[*]")){const i=t.options?.invert===!0,a=new Set;for(let l of s.values()){const c=this.queryBuilder.extractQueryAttributes({queries:[t]});if(c.some(f=>f.isDeepQuery)){const f=this.queryBuilder.getProjectionForAttributeEntries(c.filter(h=>h.isDeepQuery));l=this.globalItemService.getProjectedData(f,this.modelParser.models.get(e.modelKey),l)}const u=this.handleArrayStarQuery(t,l);let d=!1;for(const f of u.queries){const h={...f,options:{...f.options,invert:!1}};if(this.evaluateQuery(h,l)){d=!0;break}}d&&(a.add(l.key),i||o.set(l.key,l))}if(i)for(const[l,c]of s)a.has(l)||o.set(l,c)}else{if(t.operator==="eq")return this.evaluateEqOperator(e,t,s,n);for(let[i,a]of s){const l=this.queryBuilder.extractQueryAttributes({queries:[t]});if(l.some(c=>c.isDeepQuery)){const c=this.queryBuilder.getProjectionForAttributeEntries(l.filter(u=>u.isDeepQuery));a=this.globalItemService.getProjectedData(c,this.modelParser.models.get(e.modelKey),a)}this.evaluateQuery(t,a)&&o.set(i,a)}}return o}handleArrayStarQuery(e,t){const s=e.attribute.indexOf("[*]"),n={groupKey:e.queryKey||e.attribute+"[*]",groupType:"or",queries:[]};if(s!==-1){const o=e.attribute.substring(0,s),i=o.includes(".")?Xe(t,o):t[o];if(Array.isArray(i))for(let a=0;a<i.length;a++){const l=e.attribute.replace("[*]",`[${a}]`);n.queries.push({attribute:l,operator:e.operator,value:e.value,options:e.options})}}return n}evaluateQueryGroup(e,t,s,n,o){let i=new Map,a=s;if(!t.queries||t.queries?.length===0)return a;for(const l of t.queries){let c=new Map;if(this.queryBuilder.isQuery(l)?c=this.getEvaluatedQueryDataset(e,l,a,o):c=this.evaluateQueryGroup(e,l,a,n,o),i.size===0&&(i=c),t.groupType==="or")c.forEach(u=>{i.set(u.key,u)});else{const u=fn(Array.from(i.values()),Array.from(c.values()),"key");for(const d of u)i.delete(d.key)}t.groupType==="and"?a=i:a=s}return i}queryData(e,t,s,n){const o=new Map(e);return t.queries.length===0?e:(t.groupKey||(t.groupKey="root"),t.groupType||(t.groupType="and"),t.queries||(t.queries=[]),this.validateQuery(t),this.evaluateQueryGroup(t,t,o,s,n))}}class Df{scripts=new Map;scriptFunctions=new Map;constructor(){}keys(){return Array.from(this.scripts.keys())}setScript(e,t){this.scripts.set(e,t)}removeScript(e){this.scripts.delete(e)}getScript(e){return this.scripts.get(e)}hasScript(e){return this.scripts.has(e)}getScriptAsFn(e,t){if(this.scriptFunctions.has(e))return this.scriptFunctions.get(e);const s=this.getScript(e);if(!s)throw new Error(`Script ${e} not found`);const n=this.getWrapperScript(s),o=new Function("script_type",...t,n);return this.scriptFunctions.set(e,o),o}getWrapperScript(e){return`
1
+ (function(){"use strict";var R=typeof globalThis<"u"&&globalThis||typeof self<"u"&&self||typeof global<"u"&&global||{},O={searchParams:"URLSearchParams"in R,iterable:"Symbol"in R&&"iterator"in Symbol,blob:"FileReader"in R&&"Blob"in R&&(function(){try{return new Blob,!0}catch{return!1}})(),formData:"FormData"in R,arrayBuffer:"ArrayBuffer"in R};function Pi(r){return r&&DataView.prototype.isPrototypeOf(r)}if(O.arrayBuffer)var xi=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],Ei=ArrayBuffer.isView||function(r){return r&&xi.indexOf(Object.prototype.toString.call(r))>-1};function De(r){if(typeof r!="string"&&(r=String(r)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(r)||r==="")throw new TypeError('Invalid character in header field name: "'+r+'"');return r.toLowerCase()}function Lt(r){return typeof r!="string"&&(r=String(r)),r}function Wt(r){var e={next:function(){var t=r.shift();return{done:t===void 0,value:t}}};return O.iterable&&(e[Symbol.iterator]=function(){return e}),e}function x(r){this.map={},r instanceof x?r.forEach(function(e,t){this.append(t,e)},this):Array.isArray(r)?r.forEach(function(e){if(e.length!=2)throw new TypeError("Headers constructor: expected name/value pair to be length 2, found"+e.length);this.append(e[0],e[1])},this):r&&Object.getOwnPropertyNames(r).forEach(function(e){this.append(e,r[e])},this)}x.prototype.append=function(r,e){r=De(r),e=Lt(e);var t=this.map[r];this.map[r]=t?t+", "+e:e},x.prototype.delete=function(r){delete this.map[De(r)]},x.prototype.get=function(r){return r=De(r),this.has(r)?this.map[r]:null},x.prototype.has=function(r){return this.map.hasOwnProperty(De(r))},x.prototype.set=function(r,e){this.map[De(r)]=Lt(e)},x.prototype.forEach=function(r,e){for(var t in this.map)this.map.hasOwnProperty(t)&&r.call(e,this.map[t],t,this)},x.prototype.keys=function(){var r=[];return this.forEach(function(e,t){r.push(t)}),Wt(r)},x.prototype.values=function(){var r=[];return this.forEach(function(e){r.push(e)}),Wt(r)},x.prototype.entries=function(){var r=[];return this.forEach(function(e,t){r.push([t,e])}),Wt(r)},O.iterable&&(x.prototype[Symbol.iterator]=x.prototype.entries);function Ht(r){if(!r._noBody){if(r.bodyUsed)return Promise.reject(new TypeError("Already read"));r.bodyUsed=!0}}function ts(r){return new Promise(function(e,t){r.onload=function(){e(r.result)},r.onerror=function(){t(r.error)}})}function ji(r){var e=new FileReader,t=ts(e);return e.readAsArrayBuffer(r),t}function Si(r){var e=new FileReader,t=ts(e),s=/charset=([A-Za-z0-9_-]+)/.exec(r.type),o=s?s[1]:"utf-8";return e.readAsText(r,o),t}function Mi(r){for(var e=new Uint8Array(r),t=new Array(e.length),s=0;s<e.length;s++)t[s]=String.fromCharCode(e[s]);return t.join("")}function rs(r){if(r.slice)return r.slice(0);var e=new Uint8Array(r.byteLength);return e.set(new Uint8Array(r)),e.buffer}function ss(){return this.bodyUsed=!1,this._initBody=function(r){this.bodyUsed=this.bodyUsed,this._bodyInit=r,r?typeof r=="string"?this._bodyText=r:O.blob&&Blob.prototype.isPrototypeOf(r)?this._bodyBlob=r:O.formData&&FormData.prototype.isPrototypeOf(r)?this._bodyFormData=r:O.searchParams&&URLSearchParams.prototype.isPrototypeOf(r)?this._bodyText=r.toString():O.arrayBuffer&&O.blob&&Pi(r)?(this._bodyArrayBuffer=rs(r.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):O.arrayBuffer&&(ArrayBuffer.prototype.isPrototypeOf(r)||Ei(r))?this._bodyArrayBuffer=rs(r):this._bodyText=r=Object.prototype.toString.call(r):(this._noBody=!0,this._bodyText=""),this.headers.get("content-type")||(typeof r=="string"?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):O.searchParams&&URLSearchParams.prototype.isPrototypeOf(r)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},O.blob&&(this.blob=function(){var r=Ht(this);if(r)return r;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))}),this.arrayBuffer=function(){if(this._bodyArrayBuffer){var r=Ht(this);return r||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer))}else{if(O.blob)return this.blob().then(ji);throw new Error("could not read as ArrayBuffer")}},this.text=function(){var r=Ht(this);if(r)return r;if(this._bodyBlob)return Si(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(Mi(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},O.formData&&(this.formData=function(){return this.text().then(Ii)}),this.json=function(){return this.text().then(JSON.parse)},this}var Ri=["CONNECT","DELETE","GET","HEAD","OPTIONS","PATCH","POST","PUT","TRACE"];function Ti(r){var e=r.toUpperCase();return Ri.indexOf(e)>-1?e:r}function le(r,e){if(!(this instanceof le))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');e=e||{};var t=e.body;if(r instanceof le){if(r.bodyUsed)throw new TypeError("Already read");this.url=r.url,this.credentials=r.credentials,e.headers||(this.headers=new x(r.headers)),this.method=r.method,this.mode=r.mode,this.signal=r.signal,!t&&r._bodyInit!=null&&(t=r._bodyInit,r.bodyUsed=!0)}else this.url=String(r);if(this.credentials=e.credentials||this.credentials||"same-origin",(e.headers||!this.headers)&&(this.headers=new x(e.headers)),this.method=Ti(e.method||this.method||"GET"),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal||(function(){if("AbortController"in R){var n=new AbortController;return n.signal}})(),this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&t)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(t),(this.method==="GET"||this.method==="HEAD")&&(e.cache==="no-store"||e.cache==="no-cache")){var s=/([?&])_=[^&]*/;if(s.test(this.url))this.url=this.url.replace(s,"$1_="+new Date().getTime());else{var o=/\?/;this.url+=(o.test(this.url)?"&":"?")+"_="+new Date().getTime()}}}le.prototype.clone=function(){return new le(this,{body:this._bodyInit})};function Ii(r){var e=new FormData;return r.trim().split("&").forEach(function(t){if(t){var s=t.split("="),o=s.shift().replace(/\+/g," "),n=s.join("=").replace(/\+/g," ");e.append(decodeURIComponent(o),decodeURIComponent(n))}}),e}function Oi(r){var e=new x,t=r.replace(/\r?\n[\t ]+/g," ");return t.split("\r").map(function(s){return s.indexOf(`
2
+ `)===0?s.substr(1,s.length):s}).forEach(function(s){var o=s.split(":"),n=o.shift().trim();if(n){var i=o.join(":").trim();try{e.append(n,i)}catch(a){console.warn("Response "+a.message)}}}),e}ss.call(le.prototype);function H(r,e){if(!(this instanceof H))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');if(e||(e={}),this.type="default",this.status=e.status===void 0?200:e.status,this.status<200||this.status>599)throw new RangeError("Failed to construct 'Response': The status provided (0) is outside the range [200, 599].");this.ok=this.status>=200&&this.status<300,this.statusText=e.statusText===void 0?"":""+e.statusText,this.headers=new x(e.headers),this.url=e.url||"",this._initBody(r)}ss.call(H.prototype),H.prototype.clone=function(){return new H(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new x(this.headers),url:this.url})},H.error=function(){var r=new H(null,{status:200,statusText:""});return r.ok=!1,r.status=0,r.type="error",r};var Ki=[301,302,303,307,308];H.redirect=function(r,e){if(Ki.indexOf(e)===-1)throw new RangeError("Invalid status code");return new H(null,{status:e,headers:{location:r}})};var de=R.DOMException;try{new de}catch{de=function(e,t){this.message=e,this.name=t;var s=Error(e);this.stack=s.stack},de.prototype=Object.create(Error.prototype),de.prototype.constructor=de}function os(r,e){return new Promise(function(t,s){var o=new le(r,e);if(o.signal&&o.signal.aborted)return s(new de("Aborted","AbortError"));var n=new XMLHttpRequest;function i(){n.abort()}n.onload=function(){var c={statusText:n.statusText,headers:Oi(n.getAllResponseHeaders()||"")};o.url.indexOf("file://")===0&&(n.status<200||n.status>599)?c.status=200:c.status=n.status,c.url="responseURL"in n?n.responseURL:c.headers.get("X-Request-URL");var l="response"in n?n.response:n.responseText;setTimeout(function(){t(new H(l,c))},0)},n.onerror=function(){setTimeout(function(){s(new TypeError("Network request failed"))},0)},n.ontimeout=function(){setTimeout(function(){s(new TypeError("Network request timed out"))},0)},n.onabort=function(){setTimeout(function(){s(new de("Aborted","AbortError"))},0)};function a(c){try{return c===""&&R.location.href?R.location.href:c}catch{return c}}if(n.open(o.method,a(o.url),!0),o.credentials==="include"?n.withCredentials=!0:o.credentials==="omit"&&(n.withCredentials=!1),"responseType"in n&&(O.blob?n.responseType="blob":O.arrayBuffer&&(n.responseType="arraybuffer")),e&&typeof e.headers=="object"&&!(e.headers instanceof x||R.Headers&&e.headers instanceof R.Headers)){var u=[];Object.getOwnPropertyNames(e.headers).forEach(function(c){u.push(De(c)),n.setRequestHeader(c,Lt(e.headers[c]))}),o.headers.forEach(function(c,l){u.indexOf(l)===-1&&n.setRequestHeader(l,c)})}else o.headers.forEach(function(c,l){n.setRequestHeader(l,c)});o.signal&&(o.signal.addEventListener("abort",i),n.onreadystatechange=function(){n.readyState===4&&o.signal.removeEventListener("abort",i)}),n.send(typeof o._bodyInit>"u"?null:o._bodyInit)})}os.polyfill=!0,R.fetch||(R.fetch=os,R.Headers=x,R.Request=le,R.Response=H);var ns=typeof global=="object"&&global&&global.Object===Object&&global,Fi=typeof self=="object"&&self&&self.Object===Object&&self,J=ns||Fi||Function("return this")(),G=J.Symbol,is=Object.prototype,qi=is.hasOwnProperty,Qi=is.toString,Ge=G?G.toStringTag:void 0;function Bi(r){var e=qi.call(r,Ge),t=r[Ge];try{r[Ge]=void 0;var s=!0}catch{}var o=Qi.call(r);return s&&(e?r[Ge]=t:delete r[Ge]),o}var Vi=Object.prototype,Gi=Vi.toString;function Ui(r){return Gi.call(r)}var Ni="[object Null]",zi="[object Undefined]",as=G?G.toStringTag:void 0;function Y(r){return r==null?r===void 0?zi:Ni:as&&as in Object(r)?Bi(r):Ui(r)}function K(r){return r!=null&&typeof r=="object"}var Li="[object Symbol]";function _e(r){return typeof r=="symbol"||K(r)&&Y(r)==Li}function Pe(r,e){for(var t=-1,s=r==null?0:r.length,o=Array(s);++t<s;)o[t]=e(r[t],t,r);return o}var E=Array.isArray,us=G?G.prototype:void 0,cs=us?us.toString:void 0;function vt(r){if(typeof r=="string")return r;if(E(r))return Pe(r,vt)+"";if(_e(r))return cs?cs.call(r):"";var e=r+"";return e=="0"&&1/r==-1/0?"-0":e}var Wi=/\s/;function Hi(r){for(var e=r.length;e--&&Wi.test(r.charAt(e)););return e}var Ji=/^\s+/;function Zi(r){return r&&r.slice(0,Hi(r)+1).replace(Ji,"")}function z(r){var e=typeof r;return r!=null&&(e=="object"||e=="function")}var ls=NaN,Xi=/^[-+]0x[0-9a-f]+$/i,Yi=/^0b[01]+$/i,ea=/^0o[0-7]+$/i,ta=parseInt;function ra(r){if(typeof r=="number")return r;if(_e(r))return ls;if(z(r)){var e=typeof r.valueOf=="function"?r.valueOf():r;r=z(e)?e+"":e}if(typeof r!="string")return r===0?r:+r;r=Zi(r);var t=Yi.test(r);return t||ea.test(r)?ta(r.slice(2),t?2:8):Xi.test(r)?ls:+r}var ds=1/0,sa=17976931348623157e292;function oa(r){if(!r)return r===0?r:0;if(r=ra(r),r===ds||r===-ds){var e=r<0?-1:1;return e*sa}return r===r?r:0}function bt(r){var e=oa(r),t=e%1;return e===e?t?e-t:e:0}function kt(r){return r}var na="[object AsyncFunction]",ia="[object Function]",aa="[object GeneratorFunction]",ua="[object Proxy]";function Jt(r){if(!z(r))return!1;var e=Y(r);return e==ia||e==aa||e==na||e==ua}var Zt=J["__core-js_shared__"],fs=(function(){var r=/[^.]+$/.exec(Zt&&Zt.keys&&Zt.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""})();function ca(r){return!!fs&&fs in r}var la=Function.prototype,da=la.toString;function fe(r){if(r!=null){try{return da.call(r)}catch{}try{return r+""}catch{}}return""}var fa=/[\\^$.*+?()[\]{}|]/g,pa=/^\[object .+?Constructor\]$/,ha=Function.prototype,ya=Object.prototype,ga=ha.toString,ma=ya.hasOwnProperty,va=RegExp("^"+ga.call(ma).replace(fa,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ba(r){if(!z(r)||ca(r))return!1;var e=Jt(r)?va:pa;return e.test(fe(r))}function ka(r,e){return r?.[e]}function pe(r,e){var t=ka(r,e);return ba(t)?t:void 0}var Xt=pe(J,"WeakMap"),ps=Object.create,wa=(function(){function r(){}return function(e){if(!z(e))return{};if(ps)return ps(e);r.prototype=e;var t=new r;return r.prototype=void 0,t}})();function Aa(r,e,t){switch(t.length){case 0:return r.call(e);case 1:return r.call(e,t[0]);case 2:return r.call(e,t[0],t[1]);case 3:return r.call(e,t[0],t[1],t[2])}return r.apply(e,t)}var Ca=800,$a=16,Da=Date.now;function _a(r){var e=0,t=0;return function(){var s=Da(),o=$a-(s-t);if(t=s,o>0){if(++e>=Ca)return arguments[0]}else e=0;return r.apply(void 0,arguments)}}function Pa(r){return function(){return r}}var wt=(function(){try{var r=pe(Object,"defineProperty");return r({},"",{}),r}catch{}})(),xa=wt?function(r,e){return wt(r,"toString",{configurable:!0,enumerable:!1,value:Pa(e),writable:!0})}:kt,Ea=_a(xa);function ja(r,e){for(var t=-1,s=r==null?0:r.length;++t<s&&e(r[t],t,r)!==!1;);return r}function hs(r,e,t,s){for(var o=r.length,n=t+-1;++n<o;)if(e(r[n],n,r))return n;return-1}function Sa(r){return r!==r}function Ma(r,e,t){for(var s=t-1,o=r.length;++s<o;)if(r[s]===e)return s;return-1}function ys(r,e,t){return e===e?Ma(r,e,t):hs(r,Sa,t)}function Ra(r,e){var t=r==null?0:r.length;return!!t&&ys(r,e,0)>-1}var Ta=9007199254740991,Ia=/^(?:0|[1-9]\d*)$/;function Yt(r,e){var t=typeof r;return e=e??Ta,!!e&&(t=="number"||t!="symbol"&&Ia.test(r))&&r>-1&&r%1==0&&r<e}function At(r,e,t){e=="__proto__"&&wt?wt(r,e,{configurable:!0,enumerable:!0,value:t,writable:!0}):r[e]=t}function Ue(r,e){return r===e||r!==r&&e!==e}var Oa=Object.prototype,Ka=Oa.hasOwnProperty;function gs(r,e,t){var s=r[e];(!(Ka.call(r,e)&&Ue(s,t))||t===void 0&&!(e in r))&&At(r,e,t)}var ms=Math.max;function Fa(r,e,t){return e=ms(e===void 0?r.length-1:e,0),function(){for(var s=arguments,o=-1,n=ms(s.length-e,0),i=Array(n);++o<n;)i[o]=s[e+o];o=-1;for(var a=Array(e+1);++o<e;)a[o]=s[o];return a[e]=t(i),Aa(r,this,a)}}function er(r,e){return Ea(Fa(r,e,kt),r+"")}var qa=9007199254740991;function tr(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=qa}function ee(r){return r!=null&&tr(r.length)&&!Jt(r)}var Qa=Object.prototype;function rr(r){var e=r&&r.constructor,t=typeof e=="function"&&e.prototype||Qa;return r===t}function Ba(r,e){for(var t=-1,s=Array(r);++t<r;)s[t]=e(t);return s}var Va="[object Arguments]";function vs(r){return K(r)&&Y(r)==Va}var bs=Object.prototype,Ga=bs.hasOwnProperty,Ua=bs.propertyIsEnumerable,Ne=vs((function(){return arguments})())?vs:function(r){return K(r)&&Ga.call(r,"callee")&&!Ua.call(r,"callee")};function Na(){return!1}var ks=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ws=ks&&typeof module=="object"&&module&&!module.nodeType&&module,za=ws&&ws.exports===ks,As=za?J.Buffer:void 0,La=As?As.isBuffer:void 0,ze=La||Na,Wa="[object Arguments]",Ha="[object Array]",Ja="[object Boolean]",Za="[object Date]",Xa="[object Error]",Ya="[object Function]",eu="[object Map]",tu="[object Number]",ru="[object Object]",su="[object RegExp]",ou="[object Set]",nu="[object String]",iu="[object WeakMap]",au="[object ArrayBuffer]",uu="[object DataView]",cu="[object Float32Array]",lu="[object Float64Array]",du="[object Int8Array]",fu="[object Int16Array]",pu="[object Int32Array]",hu="[object Uint8Array]",yu="[object Uint8ClampedArray]",gu="[object Uint16Array]",mu="[object Uint32Array]",$={};$[cu]=$[lu]=$[du]=$[fu]=$[pu]=$[hu]=$[yu]=$[gu]=$[mu]=!0,$[Wa]=$[Ha]=$[au]=$[Ja]=$[uu]=$[Za]=$[Xa]=$[Ya]=$[eu]=$[tu]=$[ru]=$[su]=$[ou]=$[nu]=$[iu]=!1;function vu(r){return K(r)&&tr(r.length)&&!!$[Y(r)]}function Le(r){return function(e){return r(e)}}var Cs=typeof exports=="object"&&exports&&!exports.nodeType&&exports,We=Cs&&typeof module=="object"&&module&&!module.nodeType&&module,bu=We&&We.exports===Cs,sr=bu&&ns.process,xe=(function(){try{var r=We&&We.require&&We.require("util").types;return r||sr&&sr.binding&&sr.binding("util")}catch{}})(),$s=xe&&xe.isTypedArray,or=$s?Le($s):vu,ku=Object.prototype,wu=ku.hasOwnProperty;function Ds(r,e){var t=E(r),s=!t&&Ne(r),o=!t&&!s&&ze(r),n=!t&&!s&&!o&&or(r),i=t||s||o||n,a=i?Ba(r.length,String):[],u=a.length;for(var c in r)(e||wu.call(r,c))&&!(i&&(c=="length"||o&&(c=="offset"||c=="parent")||n&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Yt(c,u)))&&a.push(c);return a}function _s(r,e){return function(t){return r(e(t))}}var Au=_s(Object.keys,Object),Cu=Object.prototype,$u=Cu.hasOwnProperty;function Ps(r){if(!rr(r))return Au(r);var e=[];for(var t in Object(r))$u.call(r,t)&&t!="constructor"&&e.push(t);return e}function He(r){return ee(r)?Ds(r):Ps(r)}var Du=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,_u=/^\w*$/;function nr(r,e){if(E(r))return!1;var t=typeof r;return t=="number"||t=="symbol"||t=="boolean"||r==null||_e(r)?!0:_u.test(r)||!Du.test(r)||e!=null&&r in Object(e)}var Je=pe(Object,"create");function Pu(){this.__data__=Je?Je(null):{},this.size=0}function xu(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}var Eu="__lodash_hash_undefined__",ju=Object.prototype,Su=ju.hasOwnProperty;function Mu(r){var e=this.__data__;if(Je){var t=e[r];return t===Eu?void 0:t}return Su.call(e,r)?e[r]:void 0}var Ru=Object.prototype,Tu=Ru.hasOwnProperty;function Iu(r){var e=this.__data__;return Je?e[r]!==void 0:Tu.call(e,r)}var Ou="__lodash_hash_undefined__";function Ku(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=Je&&e===void 0?Ou:e,this}function he(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}he.prototype.clear=Pu,he.prototype.delete=xu,he.prototype.get=Mu,he.prototype.has=Iu,he.prototype.set=Ku;function Fu(){this.__data__=[],this.size=0}function Ct(r,e){for(var t=r.length;t--;)if(Ue(r[t][0],e))return t;return-1}var qu=Array.prototype,Qu=qu.splice;function Bu(r){var e=this.__data__,t=Ct(e,r);if(t<0)return!1;var s=e.length-1;return t==s?e.pop():Qu.call(e,t,1),--this.size,!0}function Vu(r){var e=this.__data__,t=Ct(e,r);return t<0?void 0:e[t][1]}function Gu(r){return Ct(this.__data__,r)>-1}function Uu(r,e){var t=this.__data__,s=Ct(t,r);return s<0?(++this.size,t.push([r,e])):t[s][1]=e,this}function te(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}te.prototype.clear=Fu,te.prototype.delete=Bu,te.prototype.get=Vu,te.prototype.has=Gu,te.prototype.set=Uu;var Ze=pe(J,"Map");function Nu(){this.size=0,this.__data__={hash:new he,map:new(Ze||te),string:new he}}function zu(r){var e=typeof r;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?r!=="__proto__":r===null}function $t(r,e){var t=r.__data__;return zu(e)?t[typeof e=="string"?"string":"hash"]:t.map}function Lu(r){var e=$t(this,r).delete(r);return this.size-=e?1:0,e}function Wu(r){return $t(this,r).get(r)}function Hu(r){return $t(this,r).has(r)}function Ju(r,e){var t=$t(this,r),s=t.size;return t.set(r,e),this.size+=t.size==s?0:1,this}function re(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}re.prototype.clear=Nu,re.prototype.delete=Lu,re.prototype.get=Wu,re.prototype.has=Hu,re.prototype.set=Ju;var Zu="Expected a function";function ir(r,e){if(typeof r!="function"||e!=null&&typeof e!="function")throw new TypeError(Zu);var t=function(){var s=arguments,o=e?e.apply(this,s):s[0],n=t.cache;if(n.has(o))return n.get(o);var i=r.apply(this,s);return t.cache=n.set(o,i)||n,i};return t.cache=new(ir.Cache||re),t}ir.Cache=re;var Xu=500;function Yu(r){var e=ir(r,function(s){return t.size===Xu&&t.clear(),s}),t=e.cache;return e}var ec=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,tc=/\\(\\)?/g,rc=Yu(function(r){var e=[];return r.charCodeAt(0)===46&&e.push(""),r.replace(ec,function(t,s,o,n){e.push(o?n.replace(tc,"$1"):s||t)}),e});function ar(r){return r==null?"":vt(r)}function xs(r,e){return E(r)?r:nr(r,e)?[r]:rc(ar(r))}function Dt(r){if(typeof r=="string"||_e(r))return r;var e=r+"";return e=="0"&&1/r==-1/0?"-0":e}function ur(r,e){e=xs(e,r);for(var t=0,s=e.length;r!=null&&t<s;)r=r[Dt(e[t++])];return t&&t==s?r:void 0}function Xe(r,e,t){var s=r==null?void 0:ur(r,e);return s===void 0?t:s}function Es(r,e){for(var t=-1,s=e.length,o=r.length;++t<s;)r[o+t]=e[t];return r}var js=G?G.isConcatSpreadable:void 0;function sc(r){return E(r)||Ne(r)||!!(js&&r&&r[js])}function Ss(r,e,t,s,o){var n=-1,i=r.length;for(t||(t=sc),o||(o=[]);++n<i;){var a=r[n];t(a)&&Es(o,a)}return o}var Ms=_s(Object.getPrototypeOf,Object),oc="\\ud800-\\udfff",nc="\\u0300-\\u036f",ic="\\ufe20-\\ufe2f",ac="\\u20d0-\\u20ff",uc=nc+ic+ac,cc="\\ufe0e\\ufe0f",lc="\\u200d",dc=RegExp("["+lc+oc+uc+cc+"]");function fc(r){return dc.test(r)}function Rs(r,e,t){return r===r&&(t!==void 0&&(r=r<=t?r:t),r=r>=e?r:e),r}function pc(){this.__data__=new te,this.size=0}function hc(r){var e=this.__data__,t=e.delete(r);return this.size=e.size,t}function yc(r){return this.__data__.get(r)}function gc(r){return this.__data__.has(r)}var mc=200;function vc(r,e){var t=this.__data__;if(t instanceof te){var s=t.__data__;if(!Ze||s.length<mc-1)return s.push([r,e]),this.size=++t.size,this;t=this.__data__=new re(s)}return t.set(r,e),this.size=t.size,this}function L(r){var e=this.__data__=new te(r);this.size=e.size}L.prototype.clear=pc,L.prototype.delete=hc,L.prototype.get=yc,L.prototype.has=gc,L.prototype.set=vc;var Ts=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Is=Ts&&typeof module=="object"&&module&&!module.nodeType&&module,bc=Is&&Is.exports===Ts,Os=bc?J.Buffer:void 0,Ks=Os?Os.allocUnsafe:void 0;function Fs(r,e){if(e)return r.slice();var t=r.length,s=Ks?Ks(t):new r.constructor(t);return r.copy(s),s}function kc(r,e){for(var t=-1,s=r==null?0:r.length,o=0,n=[];++t<s;){var i=r[t];e(i,t,r)&&(n[o++]=i)}return n}function wc(){return[]}var Ac=Object.prototype,Cc=Ac.propertyIsEnumerable,qs=Object.getOwnPropertySymbols,$c=qs?function(r){return r==null?[]:(r=Object(r),kc(qs(r),function(e){return Cc.call(r,e)}))}:wc;function Dc(r,e,t){var s=e(r);return E(r)?s:Es(s,t(r))}function cr(r){return Dc(r,He,$c)}var lr=pe(J,"DataView"),dr=pe(J,"Promise"),fr=pe(J,"Set"),Qs="[object Map]",_c="[object Object]",Bs="[object Promise]",Vs="[object Set]",Gs="[object WeakMap]",Us="[object DataView]",Pc=fe(lr),xc=fe(Ze),Ec=fe(dr),jc=fe(fr),Sc=fe(Xt),U=Y;(lr&&U(new lr(new ArrayBuffer(1)))!=Us||Ze&&U(new Ze)!=Qs||dr&&U(dr.resolve())!=Bs||fr&&U(new fr)!=Vs||Xt&&U(new Xt)!=Gs)&&(U=function(r){var e=Y(r),t=e==_c?r.constructor:void 0,s=t?fe(t):"";if(s)switch(s){case Pc:return Us;case xc:return Qs;case Ec:return Bs;case jc:return Vs;case Sc:return Gs}return e});var Mc=Object.prototype,Rc=Mc.hasOwnProperty;function Tc(r){var e=r.length,t=new r.constructor(e);return e&&typeof r[0]=="string"&&Rc.call(r,"index")&&(t.index=r.index,t.input=r.input),t}var _t=J.Uint8Array;function pr(r){var e=new r.constructor(r.byteLength);return new _t(e).set(new _t(r)),e}function Ic(r,e){var t=pr(r.buffer);return new r.constructor(t,r.byteOffset,r.byteLength)}var Oc=/\w*$/;function Kc(r){var e=new r.constructor(r.source,Oc.exec(r));return e.lastIndex=r.lastIndex,e}var Ns=G?G.prototype:void 0,zs=Ns?Ns.valueOf:void 0;function Fc(r){return zs?Object(zs.call(r)):{}}function Ls(r,e){var t=e?pr(r.buffer):r.buffer;return new r.constructor(t,r.byteOffset,r.length)}var qc="[object Boolean]",Qc="[object Date]",Bc="[object Map]",Vc="[object Number]",Gc="[object RegExp]",Uc="[object Set]",Nc="[object String]",zc="[object Symbol]",Lc="[object ArrayBuffer]",Wc="[object DataView]",Hc="[object Float32Array]",Jc="[object Float64Array]",Zc="[object Int8Array]",Xc="[object Int16Array]",Yc="[object Int32Array]",el="[object Uint8Array]",tl="[object Uint8ClampedArray]",rl="[object Uint16Array]",sl="[object Uint32Array]";function ol(r,e,t){var s=r.constructor;switch(e){case Lc:return pr(r);case qc:case Qc:return new s(+r);case Wc:return Ic(r);case Hc:case Jc:case Zc:case Xc:case Yc:case el:case tl:case rl:case sl:return Ls(r,t);case Bc:return new s;case Vc:case Nc:return new s(r);case Gc:return Kc(r);case Uc:return new s;case zc:return Fc(r)}}function Ws(r){return typeof r.constructor=="function"&&!rr(r)?wa(Ms(r)):{}}var nl="[object Map]";function il(r){return K(r)&&U(r)==nl}var Hs=xe&&xe.isMap,al=Hs?Le(Hs):il,ul="[object Set]";function cl(r){return K(r)&&U(r)==ul}var Js=xe&&xe.isSet,ll=Js?Le(Js):cl,dl=1,Zs="[object Arguments]",fl="[object Array]",pl="[object Boolean]",hl="[object Date]",yl="[object Error]",Xs="[object Function]",gl="[object GeneratorFunction]",ml="[object Map]",vl="[object Number]",Ys="[object Object]",bl="[object RegExp]",kl="[object Set]",wl="[object String]",Al="[object Symbol]",Cl="[object WeakMap]",$l="[object ArrayBuffer]",Dl="[object DataView]",_l="[object Float32Array]",Pl="[object Float64Array]",xl="[object Int8Array]",El="[object Int16Array]",jl="[object Int32Array]",Sl="[object Uint8Array]",Ml="[object Uint8ClampedArray]",Rl="[object Uint16Array]",Tl="[object Uint32Array]",w={};w[Zs]=w[fl]=w[$l]=w[Dl]=w[pl]=w[hl]=w[_l]=w[Pl]=w[xl]=w[El]=w[jl]=w[ml]=w[vl]=w[Ys]=w[bl]=w[kl]=w[wl]=w[Al]=w[Sl]=w[Ml]=w[Rl]=w[Tl]=!0,w[yl]=w[Xs]=w[Cl]=!1;function Pt(r,e,t,s,o,n){var i,a=e&dl;if(i!==void 0)return i;if(!z(r))return r;var u=E(r);if(u)i=Tc(r);else{var c=U(r),l=c==Xs||c==gl;if(ze(r))return Fs(r,a);if(c==Ys||c==Zs||l&&!o)i=l?{}:Ws(r);else{if(!w[c])return o?r:{};i=ol(r,c,a)}}n||(n=new L);var d=n.get(r);if(d)return d;n.set(r,i),ll(r)?r.forEach(function(p){i.add(Pt(p,e,t,p,r,n))}):al(r)&&r.forEach(function(p,y){i.set(y,Pt(p,e,t,y,r,n))});var f=cr,h=u?void 0:f(r);return ja(h||r,function(p,y){h&&(y=p,p=r[y]),gs(i,y,Pt(p,e,t,y,r,n))}),i}var Il=1,Ol=4;function se(r){return Pt(r,Il|Ol)}var Kl="__lodash_hash_undefined__";function Fl(r){return this.__data__.set(r,Kl),this}function ql(r){return this.__data__.has(r)}function Ye(r){var e=-1,t=r==null?0:r.length;for(this.__data__=new re;++e<t;)this.add(r[e])}Ye.prototype.add=Ye.prototype.push=Fl,Ye.prototype.has=ql;function Ql(r,e){for(var t=-1,s=r==null?0:r.length;++t<s;)if(e(r[t],t,r))return!0;return!1}function eo(r,e){return r.has(e)}var Bl=1,Vl=2;function to(r,e,t,s,o,n){var i=t&Bl,a=r.length,u=e.length;if(a!=u&&!(i&&u>a))return!1;var c=n.get(r),l=n.get(e);if(c&&l)return c==e&&l==r;var d=-1,f=!0,h=t&Vl?new Ye:void 0;for(n.set(r,e),n.set(e,r);++d<a;){var p=r[d],y=e[d];if(s)var v=i?s(y,p,d,e,r,n):s(p,y,d,r,e,n);if(v!==void 0){if(v)continue;f=!1;break}if(h){if(!Ql(e,function(g,k){if(!eo(h,k)&&(p===g||o(p,g,t,s,n)))return h.push(k)})){f=!1;break}}else if(!(p===y||o(p,y,t,s,n))){f=!1;break}}return n.delete(r),n.delete(e),f}function Gl(r){var e=-1,t=Array(r.size);return r.forEach(function(s,o){t[++e]=[o,s]}),t}function Ul(r){var e=-1,t=Array(r.size);return r.forEach(function(s){t[++e]=s}),t}var Nl=1,zl=2,Ll="[object Boolean]",Wl="[object Date]",Hl="[object Error]",Jl="[object Map]",Zl="[object Number]",Xl="[object RegExp]",Yl="[object Set]",ed="[object String]",td="[object Symbol]",rd="[object ArrayBuffer]",sd="[object DataView]",ro=G?G.prototype:void 0,hr=ro?ro.valueOf:void 0;function od(r,e,t,s,o,n,i){switch(t){case sd:if(r.byteLength!=e.byteLength||r.byteOffset!=e.byteOffset)return!1;r=r.buffer,e=e.buffer;case rd:return!(r.byteLength!=e.byteLength||!n(new _t(r),new _t(e)));case Ll:case Wl:case Zl:return Ue(+r,+e);case Hl:return r.name==e.name&&r.message==e.message;case Xl:case ed:return r==e+"";case Jl:var a=Gl;case Yl:var u=s&Nl;if(a||(a=Ul),r.size!=e.size&&!u)return!1;var c=i.get(r);if(c)return c==e;s|=zl,i.set(r,e);var l=to(a(r),a(e),s,o,n,i);return i.delete(r),l;case td:if(hr)return hr.call(r)==hr.call(e)}return!1}var nd=1,id=Object.prototype,ad=id.hasOwnProperty;function ud(r,e,t,s,o,n){var i=t&nd,a=cr(r),u=a.length,c=cr(e),l=c.length;if(u!=l&&!i)return!1;for(var d=u;d--;){var f=a[d];if(!(i?f in e:ad.call(e,f)))return!1}var h=n.get(r),p=n.get(e);if(h&&p)return h==e&&p==r;var y=!0;n.set(r,e),n.set(e,r);for(var v=i;++d<u;){f=a[d];var g=r[f],k=e[f];if(s)var m=i?s(k,g,f,e,r,n):s(g,k,f,r,e,n);if(!(m===void 0?g===k||o(g,k,t,s,n):m)){y=!1;break}v||(v=f=="constructor")}if(y&&!v){var M=r.constructor,N=e.constructor;M!=N&&"constructor"in r&&"constructor"in e&&!(typeof M=="function"&&M instanceof M&&typeof N=="function"&&N instanceof N)&&(y=!1)}return n.delete(r),n.delete(e),y}var cd=1,so="[object Arguments]",oo="[object Array]",xt="[object Object]",ld=Object.prototype,no=ld.hasOwnProperty;function dd(r,e,t,s,o,n){var i=E(r),a=E(e),u=i?oo:U(r),c=a?oo:U(e);u=u==so?xt:u,c=c==so?xt:c;var l=u==xt,d=c==xt,f=u==c;if(f&&ze(r)){if(!ze(e))return!1;i=!0,l=!1}if(f&&!l)return n||(n=new L),i||or(r)?to(r,e,t,s,o,n):od(r,e,u,t,s,o,n);if(!(t&cd)){var h=l&&no.call(r,"__wrapped__"),p=d&&no.call(e,"__wrapped__");if(h||p){var y=h?r.value():r,v=p?e.value():e;return n||(n=new L),o(y,v,t,s,n)}}return f?(n||(n=new L),ud(r,e,t,s,o,n)):!1}function et(r,e,t,s,o){return r===e?!0:r==null||e==null||!K(r)&&!K(e)?r!==r&&e!==e:dd(r,e,t,s,et,o)}var fd=1,pd=2;function io(r,e,t,s){var o=t.length,n=o;if(r==null)return!n;for(r=Object(r);o--;){var i=t[o];if(i[2]?i[1]!==r[i[0]]:!(i[0]in r))return!1}for(;++o<n;){i=t[o];var a=i[0],u=r[a],c=i[1];if(i[2]){if(u===void 0&&!(a in r))return!1}else{var l=new L,d;if(!(d===void 0?et(c,u,fd|pd,s,l):d))return!1}}return!0}function ao(r){return r===r&&!z(r)}function uo(r){for(var e=He(r),t=e.length;t--;){var s=e[t],o=r[s];e[t]=[s,o,ao(o)]}return e}function co(r,e){return function(t){return t==null?!1:t[r]===e&&(e!==void 0||r in Object(t))}}function hd(r){var e=uo(r);return e.length==1&&e[0][2]?co(e[0][0],e[0][1]):function(t){return t===r||io(t,r,e)}}function yd(r,e){return r!=null&&e in Object(r)}function gd(r,e,t){e=xs(e,r);for(var s=-1,o=e.length,n=!1;++s<o;){var i=Dt(e[s]);if(!(n=r!=null&&t(r,i)))break;r=r[i]}return n||++s!=o?n:(o=r==null?0:r.length,!!o&&tr(o)&&Yt(i,o)&&(E(r)||Ne(r)))}function md(r,e){return r!=null&&gd(r,e,yd)}var vd=1,bd=2;function kd(r,e){return nr(r)&&ao(e)?co(Dt(r),e):function(t){var s=Xe(t,r);return s===void 0&&s===e?md(t,r):et(e,s,vd|bd)}}function lo(r){return function(e){return e?.[r]}}function wd(r){return function(e){return ur(e,r)}}function Ad(r){return nr(r)?lo(Dt(r)):wd(r)}function Ee(r){return typeof r=="function"?r:r==null?kt:typeof r=="object"?E(r)?kd(r[0],r[1]):hd(r):Ad(r)}function Cd(r){return function(e,t,s){for(var o=-1,n=Object(e),i=s(e),a=i.length;a--;){var u=i[++o];if(t(n[u],u,n)===!1)break}return e}}var fo=Cd();function $d(r,e){return r&&fo(r,e,He)}function Dd(r,e){return function(t,s){if(t==null)return t;if(!ee(t))return r(t,s);for(var o=t.length,n=-1,i=Object(t);++n<o&&s(i[n],n,i)!==!1;);return t}}var yr=Dd($d);function je(r){return K(r)&&ee(r)}var _d=200;function po(r,e,t,s){var o=-1,n=Ra,i=!0,a=r.length,u=[],c=e.length;if(!a)return u;t&&(e=Pe(e,Le(t))),e.length>=_d&&(n=eo,i=!1,e=new Ye(e));e:for(;++o<a;){var l=r[o],d=t==null?l:t(l);if(l=l!==0?l:0,i&&d===d){for(var f=c;f--;)if(e[f]===d)continue e;u.push(l)}else n(e,d,s)||u.push(l)}return u}function Pd(r){var e=r==null?0:r.length;return e?r[e-1]:void 0}var ho=er(function(r,e){var t=Pd(e);return je(t)&&(t=void 0),je(r)?po(r,Ss(e,1,je),Ee(t)):[]});function yo(r,e,t){r=ar(r),e=vt(e);var s=r.length;t=t===void 0?s:Rs(bt(t),0,s);var o=t;return t-=e.length,t>=0&&r.slice(t,o)==e}function xd(r,e){for(var t=-1,s=r==null?0:r.length;++t<s;)if(!e(r[t],t,r))return!1;return!0}function Ed(r,e){var t=!0;return yr(r,function(s,o,n){return t=!!e(s,o,n),t}),t}function go(r,e,t){var s=E(r)?xd:Ed;return s(r,Ee(e))}function jd(r){return function(e,t,s){var o=Object(e);if(!ee(e)){var n=Ee(t);e=He(e),t=function(a){return n(o[a],a,o)}}var i=r(e,t,s);return i>-1?o[n?e[i]:i]:void 0}}var Sd=Math.max;function gr(r,e,t){var s=r==null?0:r.length;if(!s)return-1;var o=t==null?0:bt(t);return o<0&&(o=Sd(s+o,0)),hs(r,Ee(e),o)}var Md=jd(gr);function Rd(r,e){var t=-1,s=ee(r)?Array(r.length):[];return yr(r,function(o,n,i){s[++t]=e(o,n,i)}),s}var Td="[object String]";function Et(r){return typeof r=="string"||!E(r)&&K(r)&&Y(r)==Td}function mo(r,e){return et(r,e)}function jt(r,e,t){t=typeof t=="function"?t:void 0;var s=t?t(r,e):void 0;return s===void 0?et(r,e,void 0,t):!!s}function Id(r,e){return r===e||io(r,e,uo(e))}function Od(r,e){var t=r.length;for(r.sort(e);t--;)r[t]=r[t].value;return r}function Kd(r,e){if(r!==e){var t=r!==void 0,s=r===null,o=r===r,n=_e(r),i=e!==void 0,a=e===null,u=e===e,c=_e(e);if(!a&&!c&&!n&&r>e||n&&i&&u&&!a&&!c||s&&i&&u||!t&&u||!o)return 1;if(!s&&!n&&!c&&r<e||c&&t&&o&&!s&&!n||a&&t&&o||!i&&o||!u)return-1}return 0}function Fd(r,e,t){for(var s=-1,o=r.criteria,n=e.criteria,i=o.length,a=t.length;++s<i;){var u=Kd(o[s],n[s]);if(u){if(s>=a)return u;var c=t[s];return u*(c=="desc"?-1:1)}}return r.index-e.index}function qd(r,e,t){e.length?e=Pe(e,function(n){return E(n)?function(i){return ur(i,n.length===1?n[0]:n)}:n}):e=[kt];var s=-1;e=Pe(e,Le(Ee));var o=Rd(r,function(n,i,a){var u=Pe(e,function(c){return c(n)});return{criteria:u,index:++s,value:n}});return Od(o,function(n,i){return Fd(n,i,t)})}function vo(r,e,t,s){return r==null?[]:(E(e)||(e=e==null?[]:[e]),t=t,E(t)||(t=t==null?[]:[t]),qd(r,e,t))}var Qd=lo("length"),bo="\\ud800-\\udfff",Bd="\\u0300-\\u036f",Vd="\\ufe20-\\ufe2f",Gd="\\u20d0-\\u20ff",Ud=Bd+Vd+Gd,Nd="\\ufe0e\\ufe0f",zd="["+bo+"]",mr="["+Ud+"]",vr="\\ud83c[\\udffb-\\udfff]",Ld="(?:"+mr+"|"+vr+")",ko="[^"+bo+"]",wo="(?:\\ud83c[\\udde6-\\uddff]){2}",Ao="[\\ud800-\\udbff][\\udc00-\\udfff]",Wd="\\u200d",Co=Ld+"?",$o="["+Nd+"]?",Hd="(?:"+Wd+"(?:"+[ko,wo,Ao].join("|")+")"+$o+Co+")*",Jd=$o+Co+Hd,Zd="(?:"+[ko+mr+"?",mr,wo,Ao,zd].join("|")+")",Do=RegExp(vr+"(?="+vr+")|"+Zd+Jd,"g");function Xd(r){for(var e=Do.lastIndex=0;Do.test(r);)++e;return e}function Yd(r){return fc(r)?Xd(r):Qd(r)}var ef="[object Map]",tf="[object Set]";function rf(r){if(r==null)return 0;if(ee(r))return Et(r)?Yd(r):r.length;var e=U(r);return e==ef||e==tf?r.size:Ps(r).length}function sf(r,e,t){return r=ar(r),t=t==null?0:Rs(bt(t),0,r.length),e=vt(e),r.slice(t,t+e.length)==e}function br(r){const e=kr(r);return of(e)}function kr(r){if(typeof r!="object"||r===null)return String(r);if(Array.isArray(r))return"["+r.map(kr).join(",")+"]";const e=Object.keys(r).sort();let t="{";for(let s=0;s<e.length;s++){const o=e[s];t+=o+":"+kr(r[o]),s<e.length-1&&(t+=",")}return t+="}",t}function of(r){let e=0;for(let t=0;t<r.length;t++){const s=r.charCodeAt(t);e=(e<<5)-e+s,e|=0}return e.toString(16)}const ye={now:()=>typeof performance<"u"&&performance.now?performance.now():new Date().getTime(),mark:r=>{typeof performance<"u"&&performance.mark&&performance.mark(r)},measure:(r,e,t)=>{typeof performance<"u"&&performance.measure&&performance.measure(r,e,t)},getEntriesByName(r){if(typeof performance<"u"&&performance.getEntriesByName)return performance.getEntriesByName(r)},getEntriesByType(r){if(typeof performance<"u"&&performance.getEntriesByType)return performance.getEntriesByType(r)}};class nf{data;enabled=!1;constructor(){}init(e){this.data=new Map,this.enabled=e}set(e){if(!this.enabled)return e.value;const t=this.getKey(e.value.name,e.context);return this.data.set(t,e.value),this.data.get(t)}mark(e){if(!this.enabled)return;const t=this.getKey(e.name,e.context),s={name:e.name,type:"mark",value:ye.now(),createdAt:Date.now()};return this.data.set(t,s),s}measure(e){if(!this.enabled)return;const t=this.getKey(e.name,e.context),s=this.data.get(this.getKey(e.start,e.context)),o=this.data.get(this.getKey(e.end,e.context));if(!s||!o)return;const n=o.value-s.value,i=Math.round(n*100)/100,a=this.data.get(t);if(a&&e.sum){const c=a.value+i,l={...a,value:c};return this.data.set(t,l),l}const u={name:e.name,type:"measure",value:i,createdAt:Date.now()};return e.detail&&(u.detail=e.detail),this.data.set(t,u),u}update(e){if(!this.enabled)return e.value;const t=this.getKey(e.value.name,e.context),s=this.data.get(t);if(s){const o={...s,...e.value};this.data.set(t,o)}else this.data.set(t,e.value);return this.data.get(t)}getResourceInfosFromPerformanceAPI(){return typeof performance>"u"?[]:ye.getEntriesByType("resource")}get(e){const t=this.getKey(e.name,e.context);return this.data.get(t)}getByType(e){return Array.from(this.data.values()).filter(t=>t.type===e)}getByName(e){return Array.from(this.data.values()).filter(t=>t.name===e)}clear(){this.data.clear()}getKey(e,t){if(!t)return e;const s=br(t);return e+"_"+s}}let _o=class _i{nodes;edges;nodeKinds=new Map;nodeMeta=new Map;edgePolicy;constructor(){this.nodes=new Set,this.edges=new Map}addNode(e,t){this.nodes.has(e)||(this.nodes.add(e),this.edges.set(e,new Set)),t?.kind!==void 0&&this.nodeKinds.set(e,t.kind),t?.meta!==void 0&&this.nodeMeta.set(e,t.meta)}addDependency(e,t){if(!this.nodes.has(e)||!this.nodes.has(t))throw new Error("Both nodes must exist before adding a dependency.");if(this.edgePolicy&&!this.edgePolicy({name:e,kind:this.nodeKinds.get(e)},{name:t,kind:this.nodeKinds.get(t)}))throw new Error(`Edge policy rejected dependency from "${e}" to "${t}".`);this.edges.get(e).add(t)}setEdgePolicy(e){this.edgePolicy=e}setNodeKind(e,t){if(!this.nodes.has(e))throw new Error("Node does not exist.");t===void 0?this.nodeKinds.delete(e):this.nodeKinds.set(e,t)}getNodeKind(e){return this.nodeKinds.get(e)}setNodeMeta(e,t){if(!this.nodes.has(e))throw new Error("Node does not exist.");this.nodeMeta.set(e,t)}getNodeMeta(e){return this.nodeMeta.get(e)}removeNode(e){if(!this.nodes.has(e))throw new Error("Node does not exist.");this.nodes.delete(e),this.edges.delete(e);for(let t of this.edges.values())t.delete(e)}removeDependency(e,t){if(!this.edges.has(e))throw new Error("From node does not exist.");this.edges.get(e).delete(t)}hasNode(e){return this.nodes.has(e)}hasDependency(e,t){return this.edges.has(e)?this.edges.get(e).has(t):!1}getDependencies(e){if(!this.edges.has(e))throw new Error("Node does not exist.");return Array.from(this.edges.get(e))}getDependents(e){const t=[];for(let[s,o]of this.edges)o.has(e)&&t.push(s);return t}isCyclic(){const e=new Set,t=new Set,s=o=>{if(e.has(o))return!1;if(t.has(o))return!0;t.add(o);const n=this.edges.get(o);if(n){for(let i of n)if(s(i))return!0}return t.delete(o),e.add(o),!1};for(let o of this.nodes)if(s(o))return!0;return!1}validateNoCycles(){const e=new Set,t=new Set,s=[],o=n=>{if(e.has(n))return null;if(t.has(n)){const a=s.indexOf(n);return s.slice(a).concat([n])}t.add(n),s.push(n);const i=this.edges.get(n);if(i)for(let a of i){const u=o(a);if(u)return u}return s.pop(),t.delete(n),e.add(n),null};for(let n of this.nodes){const i=o(n);if(i)return{hasCycle:!0,path:i}}return{hasCycle:!1}}order(e){const t=new Set,s=new Set,o=[],n=e?.allowCycles??!1,i=a=>{if(t.has(a))return;if(s.has(a)){if(n)return;throw new Error("Graph has a cycle.")}s.add(a);const u=this.edges.get(a);if(u)for(let c of u)i(c);s.delete(a),t.add(a),o.push(a)};for(let a of this.nodes)t.has(a)||i(a);return o}clear(){this.nodes.clear(),this.edges.clear()}getNodes(){return Array.from(this.nodes)}getAllEdges(){const e=[];for(let[t,s]of this.edges)for(let o of s)e.push([t,o]);return e}getNodesWithNoDependants(){if(this.nodes.size===0)return[];const e=new Set;for(const s of this.edges.values())for(const o of s)e.add(o);const t=[];for(const s of this.nodes)e.has(s)||t.push(s);return t}getNodesByKind(e){const t=[];for(const s of this.nodes)this.nodeKinds.get(s)===e&&t.push(s);return t}getRootsByKind(e){const t=new Set(this.getNodesWithNoDependants()),s=Array.from(t);return e?s.filter(o=>this.nodeKinds.get(o)===e):s}getLeavesByKind(e){const t=[];for(const s of this.nodes){const o=this.edges.get(s);(!o||o.size===0)&&(!e||this.nodeKinds.get(s)===e)&&t.push(s)}return t}getDependenciesOfKind(e,t){return this.getDependencies(e).filter(s=>this.nodeKinds.get(s)===t)}getDependentsOfKind(e,t){return this.getDependents(e).filter(s=>this.nodeKinds.get(s)===t)}plan(e){const t=new Map;for(const i of this.nodes)t.set(i,0);for(const i of this.edges.values())for(const a of i)t.set(a,(t.get(a)||0)+1);const s=[];let o=Array.from(this.nodes).filter(i=>(t.get(i)||0)===0);const n=new Set;for(;o.length>0;){const i=o.slice();s.push(i),o=[];for(const a of i){if(n.has(a))continue;n.add(a);const u=this.edges.get(a);if(u)for(const c of u)t.set(c,(t.get(c)||0)-1),(t.get(c)||0)===0&&o.push(c)}}if(n.size!==this.nodes.size)throw new Error("Graph has a cycle.");if(e?.filterKinds&&e.filterKinds.length>0){const i=new Set(e.filterKinds);return{batches:s.map(a=>a.filter(u=>i.has(this.nodeKinds.get(u))))}}return{batches:s}}getImpactedNodes(e,t="downstream",s){const o=new Set(e),n=c=>!s||s.length===0||s.includes(this.nodeKinds.get(c)??void 0),i=()=>{const c=new Set,l=Array.from(o);for(;l.length;){const d=l.shift();for(const[f,h]of this.edges)h.has(d)&&!c.has(f)&&(c.add(f),l.push(f))}return c},a=()=>{const c=new Set,l=Array.from(o);for(;l.length;){const d=l.shift(),f=this.edges.get(d);if(f)for(const h of f)c.has(h)||(c.add(h),l.push(h))}return c};let u;return t==="both"?u=new Set([...i(),...a()]):t==="upstream"?u=a():u=i(),Array.from(u).filter(n)}toJSON(){const e=Array.from(this.nodes).map(s=>({name:s,kind:this.nodeKinds.get(s),meta:this.nodeMeta.get(s)})),t=this.getAllEdges().map(([s,o])=>({from:s,to:o}));return{nodes:e,edges:t}}static fromJSON(e){const t=new _i;for(const s of e.nodes)t.addNode(s.name,{kind:s.kind,meta:s.meta});for(const s of e.edges)t.addDependency(s.from,s.to);return t}diff(e){const t=new Set(this.getNodes()),s=new Set(e.getNodes()),o=Array.from(s).filter(d=>!t.has(d)),n=Array.from(t).filter(d=>!s.has(d)),i=new Set(this.getAllEdges().map(d=>d.join("→"))),a=new Set(e.getAllEdges().map(d=>d.join("→"))),u=Array.from(a).filter(d=>!i.has(d)).map(d=>d.split("→")),c=Array.from(i).filter(d=>!a.has(d)).map(d=>d.split("→")),l=[];for(const d of new Set([...t,...s])){const f=this.nodeKinds.get(d),h=e.nodeKinds.get(d);f!==h&&l.push({name:d,from:f,to:h})}return{addedNodes:o,removedNodes:n,addedEdges:u,removedEdges:c,kindChanges:l}}};class af{graph;nodeIndex;constructor(){this.graph=new _o,this.nodeIndex=new Map}getNodeId(e,t){return`${e}.${t}`}parseNodeId(e){const t=e.split(".");return{modelKey:t[0],attributeKey:t.slice(1).join(".")}}addAttribute(e){const t=this.getNodeId(e.modelKey,e.attributeKey);this.nodeIndex.has(t)||(this.graph.addNode(t,{meta:e}),this.nodeIndex.set(t,e))}addAttributeDependency(e,t){this.addAttribute(e),this.addAttribute(t);const s=this.getNodeId(e.modelKey,e.attributeKey),o=this.getNodeId(t.modelKey,t.attributeKey);this.graph.hasDependency(s,o)||this.graph.addDependency(s,o)}getImpactedAttributes(e){const t=e.map(i=>this.getNodeId(i.modelKey,i.attributeKey)),s=this.graph.getImpactedNodes(t,"downstream").map(i=>this.nodeIndex.get(i)).filter(i=>i!==void 0),o=[...e,...s],n=new Set;return o.filter(i=>{const a=this.getNodeId(i.modelKey,i.attributeKey);return n.has(a)?!1:(n.add(a),!0)})}getProcessingOrder(e){const t=new Map,s=[...e].sort((o,n)=>o.processingStep-n.processingStep);for(const o of s){const{modelKey:n,attributeKey:i,processingStep:a}=o;t.has(n)||t.set(n,new Map);const u=t.get(n);u.has(a)||u.set(a,new Set),u.get(a).add(i)}return t}getAttributesForModel(e){const t=[];for(const s of this.nodeIndex.values())s.modelKey===e&&t.push(s);return t}getDependencies(e){const t=this.getNodeId(e.modelKey,e.attributeKey);return this.graph.hasNode(t)?this.graph.getDependencies(t).map(s=>this.nodeIndex.get(s)).filter(s=>s!==void 0):[]}getDependents(e){const t=this.getNodeId(e.modelKey,e.attributeKey);return this.graph.hasNode(t)?this.graph.getDependents(t).map(s=>this.nodeIndex.get(s)).filter(s=>s!==void 0):[]}hasDependencies(e){const t=this.getNodeId(e.modelKey,e.attributeKey);return this.graph.hasNode(t)?this.graph.getDependencies(t).length>0:!1}hasNode(e){return this.nodeIndex.has(e)}getAllAttributes(){return Array.from(this.nodeIndex.values())}getMaxDepth(){let e=0;const t=(s,o=new Set)=>{if(o.has(s))return 0;o.add(s);const n=this.graph.getDependencies(s);if(n.length===0)return 1;let i=0;for(const a of n){const u=t(a,new Set(o));i=Math.max(i,u)}return i+1};for(const s of this.graph.getNodes()){const o=t(s);e=Math.max(e,o)}return e}validateCompleteness(e){const t=[];for(const[s,o]of e)for(const n of o){const i=this.getNodeId(s,n);this.hasNode(i)||t.push({modelKey:s,attributeKey:n})}return{isComplete:t.length===0,missing:t}}clear(){this.graph.clear(),this.nodeIndex.clear()}getStats(){const e=new Map,t=new Map;for(const s of this.nodeIndex.values())e.set(s.modelKey,(e.get(s.modelKey)||0)+1),t.set(s.processingStep,(t.get(s.processingStep)||0)+1);return{totalAttributes:this.nodeIndex.size,totalDependencies:this.graph.getAllEdges().length,maxDepth:this.getMaxDepth(),attributesByModel:e,attributesByStep:t}}toJSON(){return{nodes:Array.from(this.nodeIndex.values()),edges:this.graph.getAllEdges().map(([e,t])=>{const s=this.parseNodeId(e),o=this.parseNodeId(t);return{from:s,to:o}})}}}const Po={silent:0,error:1,warn:2,info:3,debug:4};let uf=class I{config;static globalConfig={};constructor(e={}){this.config={level:e.level??I.globalConfig.level??this.getDefaultLevel(),format:e.format??I.globalConfig.format??this.getDefaultFormat(),prefix:e.prefix,onLog:e.onLog??I.globalConfig.onLog,onTrackError:e.onTrackError??I.globalConfig.onTrackError}}static setGlobalConfig(e){I.globalConfig={...I.globalConfig,...e}}static getGlobalConfig(){return{...I.globalConfig}}static setModuleLevel(e,t){I.globalConfig.onLog||(I.globalConfig.onLog=void 0),I._moduleOverrides||(I._moduleOverrides=new Map),I._moduleOverrides.set(e,t)}static getModuleLevel(e){if(!(!e||!I._moduleOverrides))return I._moduleOverrides.get(e)}getDefaultLevel(){return"info"}getDefaultFormat(){return"pretty"}getEffectiveLevel(){if(this.config.prefix){const e=I.getModuleLevel(this.config.prefix);if(e)return e}return this.config.level}shouldLog(e){const t=this.getEffectiveLevel();return Po[e]<=Po[t]}formatMessage(e){if(this.config.format==="json"){const i={timestamp:new Date(e.timestamp).toISOString(),level:e.level,message:e.message};return e.prefix&&(i.module=e.prefix),e.context&&(i.context=e.context),e.error&&(i.error={name:e.error.name,message:e.error.message,stack:e.error.stack}),JSON.stringify(i)}const t=new Date(e.timestamp).toISOString().substring(11,23),s=e.prefix?`[${e.prefix}]`:"",o=this.getLevelIcon(e.level),n=e.context?` ${JSON.stringify(e.context)}`:"";return`${t} ${o} ${s} ${e.message}${n}`.trim()}getLevelIcon(e){switch(e){case"error":return"✖";case"warn":return"⚠";case"info":return"ℹ";case"debug":return"⚙";default:return" "}}log(e,t,s,o){if(!this.shouldLog(e))return;const n={level:e,message:t,timestamp:Date.now(),prefix:this.config.prefix,context:s,error:o};if(this.config.onLog){this.config.onLog(n);return}const i=this.formatMessage(n);if(typeof console<"u")switch(e){case"error":o?console.error(i,o):console.error(i);break;case"warn":console.warn(i);break;case"debug":console.debug?console.debug(i):console.log(i);break;default:console.log(i)}}error(e,t,s){const o=t instanceof Error?t:void 0,n=t instanceof Error?s:t;this.log("error",e,n,o)}trackError(e,t,s){if(this.error(e,t,s?.context),this.config.onTrackError){const o={level:"error",message:e,timestamp:Date.now(),prefix:this.config.prefix,context:s?.context,error:t,errorType:s?.errorType,errorGroup:s?.errorGroup};this.config.onTrackError(o)}}warn(e,t){this.log("warn",e,t)}info(e,t){this.log("info",e,t)}debug(e,t){this.log("debug",e,t)}child(e){const t={...this.config,...e,prefix:e.prefix?this.config.prefix?`${this.config.prefix}:${e.prefix}`:e.prefix:this.config.prefix};return new I(t)}configure(e){Object.assign(this.config,e)}};const Se=new uf;class xo{constructor(e){this.enabled=e,this.cache=new Map,this.cacheDependencies=new Map}cache;cacheDependencies;hitCount=0;missCount=0;log=Se.child({prefix:"CacheController"});get(e,t){if(!this.enabled)return;const s=this.getCacheName(e,t);return this.cache.has(s)?this.hitCount++:this.missCount++,this.cache.get(s)}set(e,t,s,o){if(!this.enabled)return;const n=this.getCacheName(e,t);this.cache.set(n,s),o?this.cacheDependencies.set(n,o):this.log.debug(`Cache entry '${e}' stored without dependencies. This prevents granular invalidation and may cause stale data.`)}has(e,t){return this.cache.has(this.getCacheName(e,t))}clear(){this.cache.clear(),this.cacheDependencies.clear(),this.hitCount=0,this.missCount=0}invalidateByDependencies(e){if(!this.enabled)return;const t=[];for(const[s,o]of this.cacheDependencies){let n=!1;for(const[i,a]of e){if(o.models.has(i))if(o.modelAttributes.has(i)){const u=o.modelAttributes.get(i);for(const c of a)if(u.has(c)){n=!0;break}}else n=!0;if(n)break}n&&t.push(s)}for(const s of t)this.cache.delete(s),this.cacheDependencies.delete(s)}invalidateByModels(e){if(!this.enabled)return;const t=new Set(e),s=[];for(const[o,n]of this.cacheDependencies)for(const i of t)if(n.models.has(i)){s.push(o);break}for(const o of s)this.cache.delete(o),this.cacheDependencies.delete(o)}invalidateByKeyPrefix(e){if(!this.enabled)return;const t=[];for(const s of this.cache.keys())s.startsWith(e+"_")&&t.push(s);for(const s of t)this.cache.delete(s),this.cacheDependencies.delete(s)}invalidateForModel(e){this.invalidateByModels([e])}invalidateForAttribute(e,t){if(!this.enabled)return;const s=new Map;s.set(e,new Set([t])),this.invalidateByDependencies(s)}invalidateMatching(e){if(!this.enabled)return;const t=[];for(const s of this.cache.keys())e(s)&&t.push(s);for(const s of t)this.cache.delete(s),this.cacheDependencies.delete(s)}generateContext(e){try{return se(e)}catch(t){return this.log.error("Error in cache generateContext",t),e}}getCacheName(e,t){const s=br(t);return e+"_"+s}getStats(){const e=this.hitCount+this.missCount,t=e>0?this.hitCount/e:0;return{size:this.cache.size,hitRate:t,totalEntries:this.cache.size,entriesWithDependencies:this.cacheDependencies.size,hits:this.hitCount,misses:this.missCount}}}function W(r=10){let e="";const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";for(let s=0;s<r;s++)e+=t.charAt(Math.floor(Math.random()*t.length));return e}class wr{key;parentCd;dcuplInitOptions;analyticsController;off;updateListener=new Set;counter=0;constructor(){}_init(e){this.key=e.cdRefKey,this.analyticsController=e.analyticsController,this.parentCd=e.parentCd,this.dcuplInitOptions=e.dcuplInitOptions,this.parentCd&&(this.off=this.parentCd.on(t=>{t.action==="update"&&t.originCdRefKey===this.parentCd?.key&&(t.connectMessage=!1,this.trigger(t))}))}getCounter(){return this.parentCd?this.parentCd.getCounter():this.counter}increaseCounter(){this.parentCd?this.parentCd.increaseCounter():this.counter++}destroy(){this.off&&this.off()}trigger(e){e.originCdRefKey||(e.originCdRefKey=this.key),e.key||(this.increaseCounter(),e.key=this.getCounter()),e.end||(e.end=ye.now(),e.duration=e.start-e.end),this.updateListener.forEach(t=>{t(e)})}on(e){return this.updateListener.add(e),()=>{this.updateListener.delete(e)}}}const Eo=(r,e)=>e?typeof structuredClone<"u"?structuredClone(r):se(r):r,jo=(r,e,t,s,o,n)=>{try{const i=!!e.dcuplInitOptions.performance?.clone?.enabled&&!!t.cloneResult,a=Eo(n,i);if(t.scope==="list"&&(t.listKey=r.cdRef?.key||r.key,t.modelKey=r.model?.key||r.modelKey),t.type==="list_created"&&t.args[0].listKey.startsWith("__global_list__")||t.listKey?.startsWith("__global_list__"))return a;const u=ye.now(),c=u-s,l=Math.round(c*1e3)/1e3;t.duration=l,t.start=s,t.end=u;const d={duration:t.duration};return t.modelKey&&(d.model=t.modelKey),t.connectMessageResult&&(t.result=a),t.args&&(d.args=t.args),e?.trigger(t),e.analyticsController.mark({name:`${t.type}:end`,context:o}),e.analyticsController.measure({name:t.type,start:`${t.type}:start`,end:`${t.type}:end`,context:o,detail:d}),a}catch{return n}},b=r=>(e,t,s)=>{const o=s.value;return s.value=function(...n){const i=ye.now(),a=this.cdRef,u=Eo(r,!0);u.key||(a.increaseCounter(),u.key=a.getCounter());const c=W();a.analyticsController.mark({name:`${u.type}:start`,context:c});const l=this.model?.key;!u.originCdRefKey&&a.key&&(u.originCdRefKey=a.key),l&&(u.modelKey=l);const d=o.apply(this,n);return u.method=t,u.args=n,d&&typeof d=="object"&&"then"in d?d.then(f=>jo(this,a,u,i,c,f)):jo(this,a,u,i,c,d)},s};function cf(r,e,t,s){t.max||(t.max=20);const o=[],n=t.transform?s.transformValue(t.value,t.transform):t.value;for(const[i,a]of e.entries()){const u=Array.from(a).some(l=>r.has(l)),c=t.transform?s.transformValue(i,t.transform):i;if(!(t.excludeUndefineds&&typeof i>"u")&&!(t.excludeNulls&&i===null)){if(u&&(n===""||n==="//")){const l={value:i,keys:t.calculateResultKeys?Array.from(a):[]};o.push(l)}else if(u&&typeof n=="string"&&n.startsWith("/")&&n.endsWith("/")){if(s.queryFind(c,n,"some")){const l={value:i,keys:t.calculateResultKeys?Array.from(a):[]};o.push(l)}}else if(u&&typeof n=="string"){const l=String(c??""),d=n;if(l.toLowerCase().startsWith(d.toLowerCase())){const f={value:i,keys:t.calculateResultKeys?Array.from(a):[]};o.push(f)}}else if(u&&s.queryFind(c,n,"some")){const l={value:i,keys:t.calculateResultKeys?Array.from(a):[]};o.push(l)}if(o.length===t.max)break}}return o}function lf(r){return r instanceof Date}function So(r){return r instanceof Date&&!isNaN(r.getTime())}const df={yyyy:{type:"year",pattern:"yyyy",regex:"(\\d{4})"},yy:{type:"year",pattern:"yy",regex:"(\\d{2})"},MM:{type:"month",pattern:"MM",regex:"(\\d{2})"},M:{type:"month",pattern:"M",regex:"(\\d{1,2})"},dd:{type:"day",pattern:"dd",regex:"(\\d{2})"},d:{type:"day",pattern:"d",regex:"(\\d{1,2})"},HH:{type:"hour",pattern:"HH",regex:"(\\d{2})"},H:{type:"hour",pattern:"H",regex:"(\\d{1,2})"},mm:{type:"minute",pattern:"mm",regex:"(\\d{2})"},m:{type:"minute",pattern:"m",regex:"(\\d{1,2})"},ss:{type:"second",pattern:"ss",regex:"(\\d{2})"},s:{type:"second",pattern:"s",regex:"(\\d{1,2})"},SSS:{type:"millisecond",pattern:"SSS",regex:"(\\d{3})"}};function ff(r){let e="^";const t=[];let s=r;const o=Object.entries(df).sort((n,i)=>i[0].length-n[0].length);for(;s.length>0;){let n=!1;for(const[i,a]of o)if(s.startsWith(i)){e+=a.regex,t.push({type:a.type,pattern:i}),s=s.slice(i.length),n=!0;break}if(!n){const i=s[0];if(!i)break;e+=i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),s=s.slice(1)}}return e+="$",{regex:new RegExp(e),tokenOrder:t}}function pf(r,e){const t={year:1970,month:1,day:1,hour:0,minute:0,second:0,millisecond:0};for(let s=0;s<e.length;s++){const o=r[s+1];if(!o)continue;const n=parseInt(o,10),i=e[s];i&&(i.type==="year"&&i.pattern==="yy"?t.year=2e3+n:t[i.type]=n)}return t}function hf(r){if(r.month<1||r.month>12)return new Date(NaN);if(r.day<1||r.day>31)return new Date(NaN);if(r.hour<0||r.hour>23)return new Date(NaN);if(r.minute<0||r.minute>59)return new Date(NaN);if(r.second<0||r.second>59)return new Date(NaN);if(r.millisecond<0||r.millisecond>999)return new Date(NaN);const e=new Date(r.year,r.month-1,r.day,r.hour,r.minute,r.second,r.millisecond);return So(e)?e.getFullYear()!==r.year||e.getMonth()!==r.month-1||e.getDate()!==r.day?new Date(NaN):e:new Date(NaN)}function yf(r,e,t){if(r=r.trim(),e==="t"){const a=Number(r);return isNaN(a)?new Date(NaN):new Date(a*1e3)}if(e==="T"){const a=Number(r);return isNaN(a)?new Date(NaN):new Date(a)}const{regex:s,tokenOrder:o}=ff(e),n=r.match(s);if(!n)return new Date(NaN);const i=pf(n,o);return hf(i)}class gf{cache;maxSize;accessOrder;constructor(e){this.cache=new Map,this.maxSize=e,this.accessOrder=[]}get(e){const t=this.cache.get(e);return t!==void 0&&this.updateAccessOrder(e),t}set(e,t){if(this.cache.has(e))this.cache.set(e,t),this.updateAccessOrder(e);else{if(this.cache.size>=this.maxSize){const s=this.accessOrder.shift();s!==void 0&&this.cache.delete(s)}this.cache.set(e,t),this.accessOrder.push(e)}}has(e){return this.cache.has(e)}clear(){this.cache.clear(),this.accessOrder=[]}get size(){return this.cache.size}updateAccessOrder(e){const t=this.accessOrder.indexOf(e);t>-1&&this.accessOrder.splice(t,1),this.accessOrder.push(e)}getStats(){return{size:this.cache.size,maxSize:this.maxSize}}}class mf{graph;constructor(){this.graph=new Map}addDependency(e,t){this.graph.has(e)||this.graph.set(e,new Set),this.graph.get(e).add(t)}hasCycle(e){if(e.length===0)return!1;const t=new Set,s=new Set,o=n=>{t.add(n),s.add(n);const i=this.graph.get(n);if(i){for(const a of i)if(t.has(a)){if(s.has(a))return!0}else if(o(a))return!0}return s.delete(n),!1};for(let n=0;n<e.length-1;n++){const i=e[n],a=e[n+1];i&&a&&this.addDependency(i,a)}for(const n of e)if(!t.has(n)&&o(n))return!0;return!1}clear(){this.graph.clear()}}class vf{parseCache;circularRefDetector;cacheHits=0;cacheMisses=0;constructor(e=1e3){this.parseCache=new gf(e),this.circularRefDetector=new mf}parse(e){if(this.parseCache.has(e))return this.cacheHits++,this.parseCache.get(e);this.cacheMisses++;let t,s;const o=e.includes("."),n=e.includes("["),i=o||n;if(i)if(s=e.split(/[.[]/)[0],n){const u=e.indexOf("]");if(u>-1){const c=e.indexOf(".",u+1);c>-1?t=e.substring(c+1):t=void 0}else o&&(t=e.substring(e.indexOf(".")+1))}else o&&(t=e.substring(e.indexOf(".")+1));const a={attribute:e,isDeepQuery:i};return s&&(a.reference=s),typeof t<"u"&&t!==""&&(a.referenceAttribute=t),this.parseCache.set(e,a),a}detectCircular(e){return e.length===0?!1:new Set(e).size!==e.length?!0:this.circularRefDetector.hasCycle(e)}validatePath(e,t=10){const s=[];if(!e||e.trim().length===0)return s.push("Attribute path cannot be empty"),{valid:!1,errors:s};(e.startsWith(".")||e.endsWith("."))&&s.push(`Invalid path: Leading or trailing dots are not allowed: ${e}`),e.includes("..")&&s.push(`Invalid path: Consecutive dots are not allowed: ${e}`);const o=(e.match(/\[/g)||[]).length,n=(e.match(/]/g)||[]).length;o!==n&&s.push(`Invalid bracket notation: Mismatched brackets in ${e}`),e.includes("[]")&&s.push(`Invalid bracket notation: Empty brackets not allowed: ${e}`);const i=/\[([^\]]+)\]/g;let a;for(;(a=i.exec(e))!==null;){const l=a[1];l&&l!=="*"&&!/^\d+$/.test(l)&&s.push(`Invalid bracket content: Must be a number or '*', got '${l}' in ${e}`)}const u=(e.match(/\./g)||[]).length+1;u>t&&s.push(`Path too deep: Maximum depth is ${t}, got ${u} in ${e}`);const c=e.match(/[^a-zA-Z0-9._[\]*-]/g);return c&&s.push(`Invalid characters in path: ${c.join(", ")} in ${e}`),{valid:s.length===0,errors:s.length>0?s:void 0}}clearCache(){this.parseCache.clear(),this.cacheHits=0,this.cacheMisses=0}clearCircularDetector(){this.circularRefDetector.clear()}getCacheStats(){const e=this.parseCache.getStats(),t=this.cacheHits+this.cacheMisses,s=t>0?this.cacheHits/t:0;return{...e,hits:this.cacheHits,misses:this.cacheMisses,hitRate:s}}getPathSegments(e){return e.replace(/\[[^\]]+\]/g,"").split(".").filter(t=>t.length>0)}getPathDepth(e){return this.getPathSegments(e).length}}const P=new vf;function ge(r,e){if(e.includes("[*]")){const n=e.indexOf("[*]"),i=e.substring(0,n),a=e.substring(n+3),u=i?Xe(r,i):r;if(!Array.isArray(u))return[];const c=[];for(const l of u)!a||a===""?l!==void 0&&c.push(l):a.startsWith(".")&&c.push(...ge(l,a.slice(1)));return c}const t=e.split(".");let s=[r];for(const n of t){const i=[];for(const a of s)if(a!=null)if(Array.isArray(a))for(const u of a){if(u==null)continue;const c=u[n];c!==void 0&&i.push(c)}else{const u=a[n];u!==void 0&&i.push(u)}if(s=i,s.length===0)return[]}const o=[];for(const n of s)if(Array.isArray(n))for(const i of n)i!==void 0&&o.push(i);else n!==void 0&&o.push(n);return o}function Ar(r){let e=0;for(let t of r){const s=t.toString().split(".")[1];s&&(e=Math.max(e,s.length))}return Math.pow(10,e)}function Mo(r,e,t){return(r*t+e*t)/t}function bf(r,e,t){return r*t/(e*t)}const tt=(r,e,t,s)=>{if(!s)throw new Error("Attribute not found");const o={attribute:s,types:r.types};let n;(o.types.includes("sum")||o.types.includes("avg"))&&(n=Cf(s,e));let i;return(o.types.includes("min")||o.types.includes("max"))&&(i=wf(s,e)),r.types.forEach(a=>{a==="sum"?o.sum=n?.sum:a==="avg"?o.avg=n?.average:a==="count"?o.count=kf(s,e):a==="min"?o.min=i&&i[0]:a==="max"?o.max=i&&i[1]:a==="distinct"?o.distinct=$f(r,e,t):a==="group"&&(o.group=Af(r,e))}),o},kf=(r,e)=>{const t=P.parse(r).isDeepQuery;let s=0;for(const o of e.values())if(o)if(t)s+=ge(o,r).filter(n=>n!=null).length;else{const n=o[r];if(n==null)continue;Array.isArray(n)?s+=n.filter(i=>i!=null).length:s++}return s},wf=(r,e)=>{let t,s;const o=P.parse(r).isDeepQuery;for(const n of e.values()){if(!n)continue;let i;if(o)i=ge(n,r);else{const a=n[r];a===void 0?i=[]:Array.isArray(a)?i=a.filter(u=>u!==void 0):i=[a]}for(const a of i)a==null||typeof a=="object"||((t===void 0||a<t)&&(t=a),(s===void 0||a>s)&&(s=a))}if(!(t===void 0||s===void 0))return[t,s]},Af=(r,e)=>{const t=[];r.groupOptions?.groups?.forEach(n=>{t.push({option:n,count:0,keys:[]})});const s={option:{value:["$dcupl_not_found"]},count:0,keys:[]},o=P.parse(r.attribute).isDeepQuery;for(const n of e.values()){let i;o?i=ge(n,r.attribute):i=[n[r.attribute]];let a=!1;for(const u of i)for(const c of t)(typeof c.option.value<"u"&&c.option.value.includes(u)||typeof c.option.from<"u"&&c.option.from<u&&typeof c.option.to<"u"&&c.option.to>u)&&(c.keys.includes(n.key)||(c.count++,c.keys.push(n.key)),a=!0);!a&&r?.groupOptions?.calculateNotFound&&(s.count++,s.keys.push(n.key))}return r?.groupOptions?.calculateNotFound&&t.push(s),t},Cf=(r,e)=>{let t=0,s=0;const o=P.parse(r).isDeepQuery;for(const n of e.values()){if(!n)continue;let i;if(o)i=ge(n,r);else{const a=n[r];a===void 0?i=[]:Array.isArray(a)?i=a:i=[a]}for(const a of i)if(Array.isArray(a))for(const u of a)typeof u=="number"&&(t=Mo(t,u,Ar([t,u])),s++);else typeof a=="number"&&(t=Mo(t,a,Ar([t,a])),s++)}return s===0?void 0:{average:bf(t,s,Ar([t,s])),count:s,sum:t}},$f=(r,e,t)=>{const s=[];for(const[o,n]of t)if(!(r.excludeUndefineds&&typeof o>"u")&&Array.from(n).find(i=>e.has(i))){const i={value:o,count:n.size};if(r.distinctOptions?.skipKeys||(i.keys=Array.from(n)),s.push(i),r.distinctOptions?.limit&&s.length>=r.distinctOptions.limit)break}return s};let rt=class extends Error{query;constructor(e,t){const s=`Query Error: ${e} in ${JSON.stringify(t,null,2)}`;super(s),this.query=t,this.name="DcuplQueryError"}},me=class{_defaultQueryOptions={modelKey:"",groupKey:"root",groupType:"and",queries:[]};_initOptions;currentQuery=se(this._defaultQueryOptions);deepQueryService;constructor(e){this.deepQueryService=e||P}init(e){this._initOptions=se(e),this.currentQuery=se(this._defaultQueryOptions),this.currentQuery.modelKey=e.modelKey,"queries"in e&&Array.isArray(e.queries)&&(e.groupType&&(this.currentQuery.groupType=e.groupType),e.queries&&(this.currentQuery.queries=se(e.queries)),e.count!==void 0&&(this.currentQuery.count=e.count),e.start!==void 0&&(this.currentQuery.start=e.start),e.sort&&(this.currentQuery.sort=e.sort),e.projection&&(this.currentQuery.projection=e.projection))}reset(){return this.init(this._initOptions),this.getQuery()}isQuery(e){return"attribute"in e}isQueryGroup(e){return"groupKey"in e}isRootQueryGroup(e){return this.isQueryGroup(e)&&e.groupKey==="root"}getQueryGroup(e){return this.currentQuery.queries.find(t=>this.isQueryGroup(t)&&t.groupKey===e)}getQuery(){return se(this.currentQuery)}hasQueryGroup(e){return this.currentQuery.queries.some(t=>this.isQueryGroup(t)&&t.groupKey===e)}has(e){if(e.groupKey&&e.queryKey){const t=this.getQueryGroup(e.groupKey);if(t)return t.queries.some(s=>this.isQuery(s)&&s.queryKey===e.queryKey)}else if(e.groupKey)return this.hasQueryGroup(e.groupKey);return!1}validate(e){const t=e.queries.map(s=>this.validateQuery(s));return{valid:go(t,s=>s.valid),errors:t.map(s=>s.errors).flat()}}applyOptions(e,t="update"){return t==="set"?(this.currentQuery.count=e.count,this.currentQuery.start=e.start,this.currentQuery.sort=e.sort,this.currentQuery.projection=e.projection):(typeof e?.sort<"u"&&(this.currentQuery.sort=e.sort),typeof e?.count<"u"&&(this.currentQuery.count=e.count),typeof e?.start<"u"&&(this.currentQuery.start=e?.start),typeof e?.projection<"u"&&(this.currentQuery.projection=e?.projection)),this.getQuery()}applyQuery(e,t,s){if(s||(s=this.currentQuery),Array.isArray(e))for(const o of e)this.applyQuery(o,t,s);else if(this.isRootQueryGroup(e))e.groupType&&(s.groupType=e.groupType),t?.mode==="set"?s.queries=e.queries:s.queries=[...s.queries,...e.queries],this.applyOptions(e,"set");else if(this.isQuery(e)){const o=s.queries.findIndex(n=>this.isQueryGroup(n)&&n.groupKey===e.attribute);if(o>-1){const n=s.queries[o];t?.mode==="set"?n.queries=[e]:n.queries.push(e)}else s.queries.push({groupKey:e.attribute,groupType:"or",queries:[e]})}else if(this.isQueryGroup(e)){const o=s.queries.findIndex(n=>this.isQueryGroup(n)&&n.groupKey===e.groupKey);if(o>-1){const n=s.queries[o];e.groupType&&(n.groupType=e.groupType),t?.mode==="set"?s.queries[o]=e:n.queries=[...n.queries,...e.queries]}else s.queries.push({groupKey:e.groupKey,groupType:e.groupType||"or",queries:e.queries})}return s}removeAllQueries(){return this.currentQuery.queries=[],this.getQuery()}removeQuery(e,t){if(t||(t=this.currentQuery),this.isQuery(e)){const s=t.queries.findIndex(o=>this.isQueryGroup(o)&&o.groupKey===e.attribute);if(s>-1){const o=t.queries[s],n=gr(o.queries,e);n>-1&&o.queries.splice(n,1),o.queries.length===0&&t.queries.splice(s,1)}}else if(this.isQueryGroup(e)){const s=t.queries.findIndex(o=>this.isQueryGroup(o)&&o.groupKey===e.groupKey);if(s>-1)if(!e.queries)t.queries.splice(s,1);else{const o=t.queries[s];for(const n of e.queries){const i=gr(o.queries,n);i>-1&&o.queries.splice(i,1)}o.queries.length===0&&t.queries.splice(s,1)}}return t}validateQuery(e){const t=[];if(this.isQuery(e))return e.attribute||t.push(new rt("Missing attribute",e)),e.operator||t.push(new rt("Missing operator",e)),typeof e.value>"u"&&t.push(new rt("Missing value",e)),e.operator==="find"&&Array.isArray(e.value)&&t.push(new rt("find operator cannot have array value",e)),t.length>0?{valid:!1,errors:t}:{valid:!0};if(this.isQueryGroup(e)){const s=e.queries.map(o=>this.validateQuery(o)).filter(o=>!o.valid).map(o=>o.errors).flat();return s.length>0?{valid:!1,errors:s}:{valid:!0}}return t.push(new rt("Invalid query definition",e)),{valid:!1,errors:t}}getQueryAttributes(e){const t=[],s=new Set,o=n=>{for(const i of n)this.isQuery(i)?i.attribute&&!s.has(i.attribute)&&(t.push(i.attribute),s.add(i.attribute)):this.isQueryGroup(i)&&o(i.queries)};return o(e?.queries||this.currentQuery.queries),t}extractQueryAttributes(e){const t=[],s=new Set,o=n=>{for(const i of n)if(this.isQuery(i)){if(i.attribute&&!s.has(i.attribute)){const a=this.getQueryAttributeForString(i.attribute);t.push(a),s.add(i.attribute)}}else this.isQueryGroup(i)&&o(i.queries)};return o(e?.queries||this.currentQuery.queries),t}getQueryAttributeForString(e){return this.deepQueryService.parse(e)}getDeepQueryService(){return this.deepQueryService}getProjectionForAttributes(e){const t={};return e.forEach(s=>{t[s]=!0}),t}getProjectionForAttributeEntries(e){const t={$:!0};return e.forEach(s=>{if(s.isDeepQuery){if(s.reference)if(s.referenceAttribute&&s.referenceAttribute.length>0){t[s.reference]||(t[s.reference]={$:!0});const o=this.deepQueryService.parse(s.referenceAttribute);if(o.isDeepQuery&&s.reference){const n=this.getProjectionForAttributeEntries([o]);Object.keys(n).forEach(i=>{i!=="$"&&s.reference&&(t[s.reference][i]=n[i])})}else s.reference&&(t[s.reference][s.referenceAttribute]=!0)}else t[s.reference]=!0}else t[s.attribute]=!0}),t}getAttributeNames(e){return this.getQueryAttributes(e)}getAttributeDetails(e){return this.extractQueryAttributes(e||this.currentQuery)}getCurrentAttributeNames(){return this.getAttributeNames(this.currentQuery)}getCurrentAttributeDetails(){return this.getAttributeDetails(this.currentQuery)}addCondition(e){return this.applyQuery(e,{mode:"add"})}addGroup(e){return this.applyQuery(e,{mode:"add"})}setCondition(e){return this.applyQuery(e,{mode:"set"})}setGroup(e){return this.applyQuery(e,{mode:"set"})}mergeQuery(e){if(e.queries&&Array.isArray(e.queries))for(const t of e.queries)this.applyQuery(t,{mode:"add"});return this.currentQuery}replaceQuery(e){return this.currentQuery.queries=[],e.groupType&&(this.currentQuery.groupType=e.groupType),e.queries&&Array.isArray(e.queries)&&(this.currentQuery.queries=e.queries),this.currentQuery}clear(){return this.reset()}clearConditions(){return this.removeAllQueries()}getCurrentQuery(){return this.getQuery()}isEmpty(){return this.currentQuery.queries.length===0}hasCondition(e){const t=s=>{for(const o of s)if(this.isQuery(o)){let n=!0;for(const i in e)if(o[i]!==e[i]){n=!1;break}if(n)return!0}else if(this.isQueryGroup(o)&&t(o.queries))return!0;return!1};return t(this.currentQuery.queries)}hasGroup(e){return this.hasQueryGroup(e)}getUsedAttributes(){return this.getAttributeNames()}getDeepQueryAttributes(){return this.getAttributeDetails().filter(e=>e.isDeepQuery)}getGroups(){return this.currentQuery.queries.filter(e=>this.isQueryGroup(e))}getTopLevelConditions(){return this.currentQuery.queries.filter(e=>this.isQuery(e))}getGroup(e){return this.getQueryGroup(e)}getConditionCount(){const e=t=>{let s=0;for(const o of t)this.isQuery(o)?s++:this.isQueryGroup(o)&&(s+=e(o.queries));return s};return e(this.currentQuery.queries)}};const Cr=new me;function Df(r,e,t,s,o,n,i){const a=Cr.removeQuery({groupKey:o},se(s)),u=i.queryData(r,a,!1,n),c=e?[...e.keys()]:[],l=new Set(c),d=n.get(o);if(!t.excludeUnresolved)for(const h of d.keys())l.add(h);if(t.excludeUndefineds?l.delete(void 0):l.add(void 0),t.sort){const h=[];for(const y of l.values())h.push(Ro(y,d,u,e,o,s,!0));const p=t.excludeZeros?h.filter(y=>y.size>0):h;return p.sort(_f(t.sort)),t.count?p.slice(0,t.count):p}const f=[];for(const h of l.values()){const p=Ro(h,d,u,e,o,s,!!t?.calculateFacets);if(!(t?.excludeZeros&&p.size===0)){if(t?.count&&f.length===t?.count)return f;f.push(p)}}return f}function Ro(r,e,t,s,o,n,i){const a=new Map,u=e.get(r)||new Set;for(const c of u){const l=t.get(c);if(l&&(a.set(c,l),!i))break}return{key:String(r),value:r,selected:Pf(o,r,n),enabled:a.size>0,size:a.size,entry:s.get(r),resultKeys:Array.from(a.keys())}}function St(r,e){if(r===void 0&&e===void 0)return 0;if(r===void 0)return 1;if(e===void 0)return-1;const t=typeof r,s=typeof e;if(t!==s)return t<s?-1:1;if(t==="number")return r-e;if(t==="string")return r.localeCompare(e);const o=String(r),n=String(e);return o<n?-1:o>n?1:0}function _f(r){switch(r){case"size-desc":return(e,t)=>t.size-e.size||St(e.value,t.value);case"size-asc":return(e,t)=>e.size-t.size||St(e.value,t.value);case"value-asc":return(e,t)=>St(e.value,t.value);case"value-desc":return(e,t)=>e.value===void 0&&t.value===void 0?0:e.value===void 0?1:t.value===void 0?-1:-St(e.value,t.value)}}const Pf=(r,e,t)=>{const s=t.queries.findIndex(o=>Cr.isQueryGroup(o)&&o.groupKey===r);return s>-1?!!t.queries[s].queries.find(o=>{if(Cr.isQuery(o)){const n=o.value?.key||o.value;return o.attribute===r&&n===e}return!1}):!1};class Mt{indexMap=new Map;dataMap=new Map;indexMetadata=new Map;constructor(){}reset(e){e?(this.indexMap.delete(e),this.dataMap.delete(e),this.indexMetadata.delete(e)):(this.indexMap.clear(),this.dataMap.clear(),this.indexMetadata.clear())}fillDataMap(e,t){let s=this.dataMap.get(e);s||(s=new Map,this.dataMap.set(e,s));for(const o of t){let n;if(typeof o=="object"&&o&&o.key)n=o.key;else if(Array.isArray(o)){for(const a of o)this.fillDataMap(e,[a]);return}else o instanceof Date?n=o.toISOString():n=o;let i=s.get(n);i||(i={key:n},this.dataMap.get(e)?.set(n,i))}}fillInverseIndex(e,t,s){if(!e||!t||!s||!Array.isArray(s))return;const o=this.indexMap.get(e)||new Map;for(const n of s){let i;if(typeof n=="object"&&n&&n.key)i=n.key;else if(Array.isArray(n)){for(const u of n)this.fillInverseIndex(e,t,[u]);return}else n instanceof Date?i=n.toISOString():i=n;let a=o.get(i);a||(a=new Set,o.set(i,a)),a.add(t)}this.indexMap.set(e,o)}getIndex(e,t){const s=this.getIndexName(e,t);return this.indexMap.get(s)}getData(e,t){const s=this.getIndexName(e,t);return this.dataMap.get(s)}getOrCreateIndex(e,t,s){const o=this.getIndexName(e,s);let n=this.getIndex(o);const i=this.indexMetadata.get(o);if(i)i.lastAccessedAt=Date.now();else if(!n){const a=P.parse(e).isDeepQuery??!1;this.indexMetadata.set(o,{createdAt:Date.now(),lastAccessedAt:Date.now(),context:s,type:a?"deep":"shallow"})}if(!n){this.reset(o),this.indexMap.set(o,new Map);const a=P.parse(e).isDeepQuery;for(const u of t.values()){let c;a?(c=ge(u,e),c.length===0&&(c=[void 0])):c=[u[e]],this.fillInverseIndex(o,u.key,c),this.fillDataMap(o,c)}n=this.getIndex(o)||new Map}return n}getIndexName(e,t){return t?e+"_"+br(t):e}removeFromInverseIndex(e,t,s){const o=this.indexMap.get(e);if(o)for(const n of s){let i;if(typeof n=="object"&&n&&n.key)i=n.key;else if(Array.isArray(n)){for(const u of n)this.removeFromInverseIndex(e,t,[u]);return}else n instanceof Date?i=n.toISOString():i=n;const a=o.get(i);a&&(a.delete(t),a.size===0&&o.delete(i))}}updateInverseIndex(e,t,s,o){this.removeFromInverseIndex(e,t,s),this.fillInverseIndex(e,t,o)}removeFromDataMap(e,t){const s=this.dataMap.get(e);if(s)for(const o of t){let n;if(typeof o=="object"&&o&&o.key)n=o.key;else if(Array.isArray(o)){for(const i of o)this.removeFromDataMap(e,[i]);return}else o instanceof Date?n=o.toISOString():n=o;s.delete(n)}}updateDataMap(e,t,s){this.removeFromDataMap(e,t),this.fillDataMap(e,s)}removeItemFromAllIndices(e){for(const t of this.indexMap.values())for(const[s,o]of t)o.delete(e)&&o.size===0&&t.delete(s);for(const t of this.dataMap.values())t.has(e)&&t.delete(e)}resetAttributes(e){for(const t of e)this.reset(t)}isDeepQueryIndex(e){const t=e.includes("_")?e.split("_")[0]:e;try{return P.parse(t).isDeepQuery??!1}catch{return!1}}getDeepIndexKeys(){const e=[];for(const t of this.indexMap.keys())this.isDeepQueryIndex(t)&&e.push(t);return e}resetAllDeepIndices(){const e=this.getDeepIndexKeys();for(const t of e)this.indexMap.delete(t),this.dataMap.delete(t)}getIndexCount(){let e=0,t=0;for(const s of this.indexMap.keys())this.isDeepQueryIndex(s)?t++:e++;return{shallow:e,deep:t,total:e+t}}cleanupStaleIndices(e=300*1e3){const t=Date.now();let s=0;for(const[o,n]of this.indexMetadata)t-n.lastAccessedAt>e&&(this.reset(o),s++);return s}getStats(){const e=this.getIndexCount(),t=Date.now();let s=0,o=0;for(const i of this.indexMetadata.values()){const a=t-i.createdAt;s+=a,a>o&&(o=a)}const n=this.indexMetadata.size>0?s/this.indexMetadata.size:0;return{shallow:e.shallow,deep:e.deep,total:e.total,oldestAge:o,avgAge:n}}}const Me="__";function $r(r,e,t={key:"root"},s="root",o=new Mt,n){const i=n||r;for(const a of e.columns)a.attribute&&(P.parse(a.attribute),o.getOrCreateIndex(a.attribute,i));for(const a of e.rows)a.attribute&&(P.parse(a.attribute),o.getOrCreateIndex(a.attribute,i));for(const a of e.values)a.attribute&&(P.parse(a.attribute),o.getOrCreateIndex(a.attribute,i));if(e.rows&&e.rows.length>0){t.rows=t.rows||[];const a=xf(r,e.rows[0],e,o,s,n);t.rows.push(a)}if(e.columns&&e.columns.length>0){t.columns=t.columns||[];const a=To(r,e.columns[0],e,o,s,n);t.columns.push(a)}if(t.key==="root")for(const a of e.values){if(t.values=t.values||[],s==="root"&&e.options?.calculateTotals===!1)continue;const u=tt(a,r,o.getIndex(a.attribute),a.attribute);t.values.push(u)}return t}function xf(r,e,t,s,o="",n){const i={key:e.attribute},a=s.getIndex(e.attribute);if(!a)return i;for(const[u,c]of a.entries()){const l={key:u,value:u},d=new Map;for(const f of c)r.has(f)&&d.set(f,r.get(f));if(d.size){for(const f of t.values){if(l.values=l.values||[],o==="root"&&e?.calculateTotals===!1)continue;const h=tt(f,d,s.getIndex(f.attribute),f.attribute);l.values.push(h)}if(i.rows=i.rows||[],i.rows.push(l),t.rows.length>1){const f={...t,rows:t.rows.slice(1)};$r(d,f,l,o+Me+e.attribute+Me+u,s,n)}else if(t.columns)for(const f of t.columns){l.columns=l.columns||[];const h=To(d,f,t,s,o+Me+e.attribute+Me+u,n);l.columns.push(h)}}}return i}function To(r,e,t,s,o="",n){const i={key:e.attribute},a=s.getIndex(e.attribute);if(!a)return i;for(const[u,c]of a.entries()){const l={key:u,value:u},d=new Map;for(const f of c)r.has(f)&&d.set(f,r.get(f));if(d.size){for(const f of t.values){if(l.values=l.values||[],o==="root"&&e?.calculateTotals===!1)continue;const h=tt(f,d,s.getIndex(f.attribute),f.attribute);l.values.push(h)}if(i.columns=i.columns||[],i.columns.push(l),t.columns.length>1){const f={...t,columns:t.columns.slice(1)};$r(d,f,l,o+Me+e.attribute+Me+u,s,n)}}}return i}const Ef=/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})?)?$/,jf=/^-?\d+$/,Sf=/^-?\d+\.\d+$/,Mf=/^\d{1,2}([/.-])\d{1,2}\1\d{2,4}$/,Rf=r=>r==="true"||r==="false"?"boolean":jf.test(r)?"int":Sf.test(r)?"float":Ef.test(r)&&!Number.isNaN(Date.parse(r))?"date":"string",Tf=r=>Mf.test(r),If=r=>r==null||r==="",Of=r=>{const e=[...r];return e.length<=1?{type:e[0]??"any",conflict:!1}:e.every(t=>t==="int"||t==="float")?{type:"float",conflict:!1}:{type:"any",conflict:!0}},Kf=(r,e={})=>{const t=e.deep??(e.sampleSize!==void 0&&e.sampleSize>1)?e.sampleSize??1/0:1,s=e.coerceStrings??!0,o=new Map,n=[],i=Math.min(r.length,t);for(let c=0;c<i;c++){const l=r[c];if(l)for(const[d,f]of Object.entries(l)){let h=o.get(d);if(h||(h={observed:new Set,empty:0,scanned:0},o.set(d,h),n.push(d)),h.scanned++,If(f)){h.empty++;continue}let p;typeof f=="string"&&s?(p=Rf(f),p==="string"&&!h.hint&&Tf(f)&&(h.hint="column looks date-like (non-ISO) — review manually")):p=Ff(f),h.observed.add(p)}}const a=[],u=[];for(const c of n){const l=o.get(c),{type:d,conflict:f}=Of(l.observed.size?l.observed:new Set(["string"]));a.push({key:c,type:d}),u.push({column:c,inferredType:d,observedTypes:[...l.observed].sort(),emptyRate:l.scanned===0?0:l.empty/l.scanned,conflict:f,hint:l.hint})}return{properties:a,diagnostics:u}},Io=(r,e=!1)=>Kf(r,typeof e=="boolean"?{deep:e}:e).properties,Oo=r=>Number(r)===r&&r%1===0,Ko=r=>Number(r)===r&&r%1!==0,Ff=r=>{switch(typeof r){case"string":return"string";case"number":return Oo(r)?"int":Ko(r)?"float":"any";case"boolean":return"boolean";case"object":return lf(r)?"date":"json";default:return"any"}};class qf{constructor(e,t,s){this.scriptController=e,this.globalItemService=t,this.modelParser=s}registeredCustomOperator=new Map;queryBuilder=new me;registerCustomOperator(e,t){this.registeredCustomOperator.set(e,t)}transformValue(e,t){if(Array.isArray(e))return e.map(s=>this.transformValue(s,t));if(typeof e!="string")return e;for(const s of t)s==="lowercase"?e=e.toLowerCase():s==="trim"?e=e.trim():s==="removeWhitespace"&&(e=e.replace(/\s/g,""));return e}evaluateQuery(e,t){let s,o=e.value;const n=e.options?.arrayValueHandling||"some";if(Array.isArray(e.options?.transform)&&e.options.transform.length>0&&(o=this.transformValue(o,e.options.transform)),e.attribute.includes(".")||e.attribute.includes("[")?s=Xe(t,e.attribute):s=t[e.attribute],Array.isArray(e.options?.transform)&&e.options.transform.length>0&&(s=this.transformValue(s,e.options.transform)),(typeof s>"u"||s===null)&&!["typeof","isTruthy","eq"].includes(e.operator))return!1;switch(e.operator){case"eq":return e.options?.invert?!mo(s,o):mo(s,o);case"find":return e.options?.invert?!this.queryFind(s,o,n):this.queryFind(s,o,n);case"lt":return Array.isArray(s)?n==="some"?s.some(i=>i<o):s.every(i=>i<o):s<o;case"gt":return Array.isArray(s)?n==="some"?s.some(i=>i>o):s.every(i=>i>o):s>o;case"lte":return Array.isArray(s)?n==="some"?s.some(i=>i<=o):s.every(i=>i<=o):s<=o;case"gte":return Array.isArray(s)?n==="some"?s.some(i=>i>=o):s.every(i=>i>=o):s>=o;case"typeof":return e.options?.invert?typeof s!==o:Array.isArray(s)?n==="some"?s.some(i=>typeof i===o):s.every(i=>typeof i===o):typeof s===o;case"isTruthy":return o===!0?Array.isArray(s)?n==="some"?s.some(i=>typeof!!i):s.every(i=>typeof!!i):!!s:!s;case"size":return typeof s=="string"?s.length===o:rf(s)===o;default:if(this.scriptController.hasScript(e.operator))return this.scriptController.executeScript(e.operator,"operator",{query:e,item:t});if(this.registeredCustomOperator.has(e.operator)){const i=this.registeredCustomOperator.get(e.operator);if(typeof i=="function")return i(e,t)}}return!1}evaluateEqOperator(e,t,s,o){const n=new Map,i=o.get(t.attribute);if(i){let a;if(typeof t.value=="string"?a=t.value:t.value?.key&&Object.keys(t.value).length===1&&(a=t.value.key),typeof a<"u"){const u=i.get(a);if(u)if(u.forEach(c=>{s.has(c)&&n.set(c,s.get(c))}),t.options?.invert){const c=ho(Array.from(s.values()),Array.from(n.values()),"key"),l=new Map;return c.forEach(d=>{l.set(d.key,d)}),l}else return n}}for(let[a,u]of s){const c=this.queryBuilder.extractQueryAttributes({queries:[t]});if(c.some(l=>l.isDeepQuery)){const l=this.queryBuilder.getProjectionForAttributeEntries(c.filter(d=>d.isDeepQuery));u=this.globalItemService.getProjectedData(l,this.modelParser.models.get(e.modelKey),u)}this.evaluateQuery(t,u)&&n.set(a,u)}return n}equalRegexFn(e,t){if(typeof t=="string"&&sf(t,"/")&&yo(t,"/"))try{return new RegExp(t.slice(1,-1)).test(e)}catch{return!1}else return Array.isArray(e)?!!e.find(s=>jt(s,t,this.equalRegexFn)):typeof t=="object"?Id(e,t):e===t}queryFind(e,t,s){return Array.isArray(e)?typeof t=="string"||typeof t=="number"||typeof t=="boolean"?s==="some"?e.some(o=>jt(o,t,this.equalRegexFn)):e.every(o=>jt(o,t,this.equalRegexFn)):!!Md(e,t):jt(e,t,this.equalRegexFn)}validateQuery(e){if(this.queryBuilder.isQuery(e)){if(!e.attribute||!e.operator)throw new Error("invalid query - missing attribute or operator");if(e.operator==="find"&&Array.isArray(e.value))throw new Error("invalid query - find operator cannot have array value");return!0}else{if(this.queryBuilder.isQueryGroup(e))return go(e.queries,t=>this.validateQuery(t));throw new Error("invalid query - missing query or attribute")}}getEvaluatedQueryDataset(e,t,s,o){const n=new Map;if(t.attribute.includes("[*]")){const i=t.options?.invert===!0,a=new Set;for(let u of s.values()){const c=this.queryBuilder.extractQueryAttributes({queries:[t]});if(c.some(f=>f.isDeepQuery)){const f=this.queryBuilder.getProjectionForAttributeEntries(c.filter(h=>h.isDeepQuery));u=this.globalItemService.getProjectedData(f,this.modelParser.models.get(e.modelKey),u)}const l=this.handleArrayStarQuery(t,u);let d=!1;for(const f of l.queries){const h={...f,options:{...f.options,invert:!1}};if(this.evaluateQuery(h,u)){d=!0;break}}d&&(a.add(u.key),i||n.set(u.key,u))}if(i)for(const[u,c]of s)a.has(u)||n.set(u,c)}else{if(t.operator==="eq")return this.evaluateEqOperator(e,t,s,o);for(let[i,a]of s){const u=this.queryBuilder.extractQueryAttributes({queries:[t]});if(u.some(c=>c.isDeepQuery)){const c=this.queryBuilder.getProjectionForAttributeEntries(u.filter(l=>l.isDeepQuery));a=this.globalItemService.getProjectedData(c,this.modelParser.models.get(e.modelKey),a)}this.evaluateQuery(t,a)&&n.set(i,a)}}return n}handleArrayStarQuery(e,t){const s=e.attribute.indexOf("[*]"),o={groupKey:e.queryKey||e.attribute+"[*]",groupType:"or",queries:[]};if(s!==-1){const n=e.attribute.substring(0,s),i=n.includes(".")?Xe(t,n):t[n];if(Array.isArray(i))for(let a=0;a<i.length;a++){const u=e.attribute.replace("[*]",`[${a}]`);o.queries.push({attribute:u,operator:e.operator,value:e.value,options:e.options})}}return o}evaluateQueryGroup(e,t,s,o,n){let i=new Map,a=s;if(!t.queries||t.queries?.length===0)return a;for(const u of t.queries){let c=new Map;if(this.queryBuilder.isQuery(u)?c=this.getEvaluatedQueryDataset(e,u,a,n):c=this.evaluateQueryGroup(e,u,a,o,n),i.size===0&&(i=c),t.groupType==="or")c.forEach(l=>{i.set(l.key,l)});else{const l=ho(Array.from(i.values()),Array.from(c.values()),"key");for(const d of l)i.delete(d.key)}t.groupType==="and"?a=i:a=s}return i}queryData(e,t,s,o){const n=new Map(e);return t.queries.length===0?e:(t.groupKey||(t.groupKey="root"),t.groupType||(t.groupType="and"),t.queries||(t.queries=[]),this.validateQuery(t),this.evaluateQueryGroup(t,t,n,s,o))}}class Qf{scripts=new Map;scriptFunctions=new Map;constructor(){}keys(){return Array.from(this.scripts.keys())}setScript(e,t){this.scripts.set(e,t)}removeScript(e){this.scripts.delete(e)}getScript(e){return this.scripts.get(e)}hasScript(e){return this.scripts.has(e)}getScriptAsFn(e,t){if(this.scriptFunctions.has(e))return this.scriptFunctions.get(e);const s=this.getScript(e);if(!s)throw new Error(`Script ${e} not found`);const o=this.getWrapperScript(s),n=new Function("script_type",...t,o);return this.scriptFunctions.set(e,n),n}getWrapperScript(e){return`
3
3
  "use strict";
4
4
  ${e}
5
- `}executeScript(e,t,s){if(!this.getScript(e))throw new Error(`Script ${e} not found`);s.context||(s.context=s.options||{});const n=Object.keys(s),o=Object.values(s);return this.getScriptAsFn(e,n)(t,...o)}}const Et=(r,e)=>r?(e||(e={}),r.replace(/\$\{(.*?)\}/g,(t,s)=>Xe(e,s.trim(),""))):"",$r=r=>{const e=new Set;return r.replace(/\$\{(.*?)\}/g,(t,s)=>(e.add(s.trim()),"")),{variables:Array.from(e).map(t=>({name:t}))}};var xf=Xt(function(r,e){return Re(r)?dn(r,js(e,1,Re)):[]});class Pf{constructor(e,t,s,n,o){this.modelParser=e,this.cdRef=t,this.item=s,this.indicesController=n,this.queryManager=o,this.cacheCtrl=new Dn(!!this.cdRef.dcuplInitOptions.performance?.cache?.enabled)}initialData;filteredData;model;filterItems=new Map;queryBuilder;cacheCtrl;projectionCache=new Map;init(e,t){this.model=e,this.initialData=t,this.filteredData=this.initialData,this.queryBuilder=new me,this.queryBuilder.init({modelKey:e.key}),this.initFilterItems({skipProcessing:!0})}indexDependsOnAttributes(e,t){const s=e.includes("_")?e.split("_")[0]:e;try{const n=D.parse(s);if(!n.isDeepQuery)return!1;const o=n.attribute.split(".");for(let i=0;i<o.length-1;i++)if(t.has(o[i]))return!0;return!1}catch{return!0}}invalidateAllCaches(e){this.cacheCtrl.clear(),this.projectionCache.clear();let t=0;if(e&&e.size>0){const n=this.indicesController.getDeepIndexKeys(),o=[];for(const i of n)this.indexDependsOnAttributes(i,e)&&o.push(i);for(const i of o)this.indicesController.reset(i);t=o.length}else{const n=this.indicesController.getIndexCount().deep;this.indicesController.resetAllDeepIndices(),t=n}const s=this.cdRef.dcuplInitOptions.logging;if(s&&s.level==="debug"){const n=this.indicesController.getIndexCount();console.debug("[Filter] Caches invalidated",{granular:e!==void 0,changedAttributes:e?Array.from(e):"all",deepIndicesReset:t,shallowIndicesPreserved:n.shallow,totalIndices:n.total})}}update(e,t,s){this.model=e,this.initialData=t,this.indicesController=s,this.invalidateAllCaches(),this.filteredData=this.getFilteredData(this.initialData,!1),this.initFilterItems({skipProcessing:!0})}updateWithChanges(e,t,s,n){this.model=e,this.initialData=t,this.indicesController=s,this.invalidateAllCaches(n),this.filteredData=this.getFilteredData(this.initialData,!1),this.initFilterItems({skipProcessing:!0})}resetCache(){this.invalidateAllCaches()}getDeepQueryAttributes(e){const t=new Set;if(!e||!e.queries)return[];for(const s of e.queries)if(s.queries)for(const n of s.queries)n.attribute&&D.parse(n.attribute).isDeepQuery&&t.add(n.attribute);return Array.from(t)}getProjectionForQuery(e){const t=this.getDeepQueryAttributes(e);if(t.length===0)return null;const s=t.map(n=>D.parse(n));return this.queryBuilder.getProjectionForAttributeEntries(s)}getProjectionCacheKey(e){const t=this.getDeepQueryAttributes(e);return t.length===0?"":t.sort().join("|")}getProjectedData(e,t,s){if(s&&this.projectionCache.has(s))return this.projectionCache.get(s);const n=new Map;for(const[o,i]of e){const a=this.item.getProjectedData(t,this.model,i);n.set(o,a)}return s&&this.projectionCache.set(s,n),n}initFilterItems(e){[...this.model.properties.values(),...this.model.references.values()].forEach(t=>{t.filter&&(Array.isArray(e?.filterKeys)?e?.filterKeys.includes(t.key)&&this.updateFilterItem(t.key,e):this.updateFilterItem(t.key,e))})}getAggregate(e,t,s){if(D.parse(e.attribute).isDeepQuery)return tt(e,t,s,e.attribute);{const n=this.model.getAttribute(e.attribute);if(!n)throw new Error("Attribute not found");return tt(e,t,s,n.key)}}getSections(e){const t={_meta:{currentSize:0,initialSize:0},items:[]},s=D.parse(e.attribute),n=s.isDeepQuery;let o;if(!n&&(o=this.model.getAttribute(e.attribute),!o))throw new Error("Attribute not found");let i=new Map,a;!n&&o&&(o.type==="singleValued"||o.type==="multiValued")&&(a=this.modelParser.models.get(o.model));const l={},c=this.getSortingProjectionForModel(e,this.model);l.sort=c;let u=this.item.getItemsAsMap(this.filteredData,this.model,l);if(n){const p=this.queryBuilder.getProjectionForAttributeEntries([s]),y=new Map;for(const[m,g]of u){const b=this.item.getProjectedData(p,this.model,g);y.set(m,b)}u=y}const d=this.indicesController.getOrCreateIndex(`${e.attribute}`,u,{childLevelSorting:c,query:this.queryBuilder.getQuery()}),f=this.getAggregate({attribute:e.attribute,types:["distinct"],excludeUndefineds:!0},u,d);if(f.distinct)for(const p of f.distinct){let y={key:p.value,value:p.value};const m=p.keys.filter(b=>u.has(b));if(a){const b=a.data.get(p.value);b&&(y=b)}const g={...y,key:p.value,_items:[],_aggregates:[],_meta:{size:m.length}};i.set(p.value,g)}const h={count:e.count,start:e.start,projection:e.projection};if(a){const p=this.getSortingProjectionForModel(e,a);h.sort=p}if(t._meta.currentSize=i.size,t._meta.initialSize=f.distinct.length,i=this.item.getItemsAsMap(i,a,h),Array.isArray(e?.aggregates)&&i.forEach(p=>{const y=f.distinct.find(g=>g.value===p.key),m=this.getDataByKeys(u,y.keys);p._aggregates=e.aggregates.map(g=>this.getAggregate(g,m,d))}),e?.items){const p=e.items?.find(y=>y.key==="*");p?i.forEach(y=>{const m=f.distinct.find(x=>x.value===y.key),g=this.getDataByKeys(u,m.keys),b=this.item.getItems(g,this.model,p);y._items=b}):i.forEach(y=>{const m=e.items?.find(g=>g.key===y.key);if(m){const g=f.distinct.find(B=>B.value===y.key),b=this.getDataByKeys(u,g.keys),x=this.item.getItems(b,this.model,m);y._items=x}})}return t.items=Array.from(i.values()),t}getSortingProjectionForModel(e,t){const s={attributes:[],order:[]};return e?.sort?.attributes.forEach((n,o)=>{if(t.properties.has(n)){s.attributes.push(n);const i=e.sort?.order;s.order.push(i[o])}}),s}getReferenceKeyForFilterKey(e){const t=this.filterItems.get(e);return t?.attributeKey||t?.key||e}updateFilterItem(e,t={}){const s={calculateFacets:!1,excludeZeros:!0,excludeUndefineds:!0,excludeUnresolved:!0,skipProcessing:!1},n=this.getReferenceKeyForFilterKey(e);if(!n)return;const o=this.model.references.get(n);let i={};if(typeof o?.filter=="object"?i=Object.assign(s,o.filter,t):i=Object.assign(s,t),o){this.updateFilterItemReference(o.key,o.key,i);return}const a=this.model.properties.get(n);if(a)if(Array.isArray(a.filter)){a.filter.forEach(l=>{const c=l?.comparisonType||"containsIgnoreCase";this.updateFilterItemProperty(l.key,a.key,a.type,c,i)});return}else{const l=a.filter?.comparisonType||"containsIgnoreCase";this.updateFilterItemProperty(a.key,a.key,a.type,l,i);return}if(e==="key"){this.updateFilterItemProperty("key","key","string","containsIgnoreCase",i);return}}updateFilterItemReference(e,t,s){let n=[];const o=this.model.references.get(t);if(o&&!s.skipProcessing){const a=this.modelParser.models.get(o.model);n=this.getFacets(o.key,a,s)}const i={key:e,attributeKey:t,enabled:!!n.find(a=>a.enabled),selected:!!n.find(a=>a.selected),type:"reference",entries:n};this.filterItems.set(i.key,i)}updateFilterItemProperty(e,t,s,n,o){const i=this.getFilterTypeForPropertyType(s),a=this.queryBuilder.hasQueryGroup(e),l={key:e,attributeKey:t,enabled:!0,selected:!!a,type:i};if(l.type==="text"&&(l.comparisonType=n),l.type==="boolean"){const c=this.getFacets(l.attributeKey,void 0,o);l.entries=c}o.skipProcessing||(l.type==="number"&&(l.range=this.getNumberRangesForFilterItem(l)),l.type==="date"&&(l.range=this.getDateRangesForFilterItem(l))),this.filterItems.set(l.key,l)}getNumberRange(e,t=e){let s=1/0,n=-1/0;for(const a of this.filteredData.values()){const l=a[e];if(!(typeof l>"u"||l===null))if(Array.isArray(l))for(const c of l)typeof c=="number"&&(c<s&&(s=c),c>n&&(n=c));else typeof l=="number"&&(l<s&&(s=l),l>n&&(n=l))}let o=1/0,i=-1/0;for(const a of this.initialData.values()){const l=a[e];if(!(typeof l>"u"||l===null))if(Array.isArray(l))for(const c of l)typeof c=="number"&&(c<o&&(o=c),c>i&&(i=c));else typeof l=="number"&&(l<o&&(o=l),l>i&&(i=l))}return s===1/0&&(s=0),n===-1/0&&(n=0),o===1/0&&(o=0),i===-1/0&&(i=0),{available:{min:s,max:n},initial:{min:o,max:i},relatedQuery:this.queryBuilder.getQueryGroup(t)}}getNumberRangesForFilterItem(e){return this.getNumberRange(e.attributeKey,e.key)}getDateRangesForFilterItem(e){return this.getDateRange(e.attributeKey,e.key)}getDateRange(e,t=e){let s=null,n=null;for(const l of this.filteredData.values()){const c=l[e];if(typeof c>"u"||c===null)continue;const u=Array.isArray(c)?c:[c];for(const d of u)d instanceof Date&&((!s||d<s)&&(s=d),(!n||d>n)&&(n=d))}let o=null,i=null;for(const l of this.initialData.values()){const c=l[e];if(typeof c>"u"||c===null)continue;const u=Array.isArray(c)?c:[c];for(const d of u)d instanceof Date&&((!o||d<o)&&(o=d),(!i||d>i)&&(i=d))}const a=new Date;return s||(s=a),n||(n=a),o||(o=a),i||(i=a),{available:{min:s,max:n},initial:{min:o,max:i},relatedQuery:this.queryBuilder.getQueryGroup(t)}}getFacets(e,t,s,n){let o;const i=this.cacheCtrl.generateContext({attributeKey:e,query:this.queryBuilder.getQuery(),options:s}),a=this.cacheCtrl.get("facets",i);if(a)return a;let l=new Map;o=this.indicesController.getIndex(e),t?l=t.getData():l=this.indicesController.getData(e);let c=n||this.initialData;if(!n){const d=this.queryBuilder.getQueryAttributeForString(e);if(d.isDeepQuery){const f=this.queryBuilder.getProjectionForAttributeEntries([d]);c=this.item.getItemsAsMap(c,this.model,{projection:f})}}if(!o||!l){this.indicesController.reset(e);const d=D.parse(e),f=d.isDeepQuery;let h=c;if(f){const p=this.queryBuilder.getProjectionForAttributeEntries([d]);h=new Map;for(const[y,m]of c){const g=this.item.getProjectedData(p,this.model,m);h.set(y,g)}}h.forEach(p=>{let y;f?(y=ge(p,e),y.length===0&&(y=[void 0])):y=[p[e]],this.indicesController.fillInverseIndex(e,p.key,y),this.indicesController.fillDataMap(e,y)}),o=this.indicesController.getIndex(e),l=this.indicesController.getData(e)}const u=kf(c,l,s,this.queryBuilder.getQuery(),e,this.indicesController.indexMap,this.queryManager);return this.cacheCtrl.set("facets",i,u,{models:new Set([this.model.key]),modelAttributes:new Map([[this.model.key,new Set([e])]])}),u}getDataByKeys(e,t){if(t){const s=new Map;return t.forEach(n=>{const o=e.get(n);o&&s.set(o.key,o)}),s}return e}getFilterTypeForPropertyType(e){switch(e){case"string":return"text";case"int":return"number";case"float":return"number";case"date":return"date";case"boolean":return"boolean";case"json":return"text";case"any":return"text";case"Array<string>":return"text";case"Array<int>":return"number";case"Array<float>":return"number";case"Array<date>":return"date"}}updateFilteredData(e){const t=ye.now();e?.skipProcessing||(this.filteredData=this.getFilteredData(this.initialData,!1),this.cdRef.trigger({scope:"list",type:"result_updated",action:"update",connectMessage:!0,listKey:this.cdRef.key,modelKey:this.model.key,start:t}))}getFilteredData(e,t){const s=this.cacheCtrl.generateContext({query:this.queryBuilder.getQuery(),earlyReturn:t}),n=this.cacheCtrl.get("data",s);if(n)return n;const o=this.queryBuilder.getQuery(),i=this.getProjectionForQuery(o);let a;if(i){const l=this.getProjectionCacheKey(o),c=this.getProjectedData(e,i,l),u=this.queryManager.queryData(c,o,t,this.indicesController.indexMap);a=new Map;for(const d of u.keys())e.has(d)&&a.set(d,e.get(d))}else a=this.queryManager.queryData(e,o,t,this.indicesController.indexMap);return this.cacheCtrl.set("data",s,a,{models:new Set([this.model.key]),modelAttributes:new Map}),a}getFilterItems(e){if(Array.isArray(e?.filterKeys)){const t=[];return e?.filterKeys.forEach(s=>{const n=this.getFilterItem(s,e);n&&t.push(n)}),t}else return e?.skipProcessing||this.initFilterItems(e),Array.from(this.filterItems.values())}getFilterItem(e,t){return this.filterItems.has(e)&&(t?.skipProcessing||this.updateFilterItem(e,t)),this.filterItems.get(e)}}class Tn{constructor(e,t){this.modelParser=e,this.scriptController=t}getItem(e,t,s,n){const o=n?.projection||{$:!0},i=t.get(e);return i?this.getProjectedData(o,s,i):null}getManyItems(e,t,s,n){const o=[];for(const i of e){const a=n?.projection||{$:!0},l=t.get(i);if(!l)continue;const c=this.getProjectedData(a,s,l);o.push(c)}return o}getItems(e,t,s){const n=this.getItemsAsMap(e,t,s);return Array.from(n.values())}getItemsAsMap(e,t,s){const n=s?.start||0,o=s?.count||e.size,i=s?.projection||{$:!0};return this.isValidSortProjection(s?.sort)&&(e=this.getSortedItems(e,s,t)),this.isValidScriptSorting(s?.sort)&&(e=this.getSortedItemsBasedOnScript(e,s)),this.getPagedData(e,n,o,i,t)}getSortedItemsBasedOnScript(e,t){const s=Array.from(e.values()),n=t?.sort?.script?.key||"",o=t?.sort?.script?.options||void 0;if(!this.scriptController.hasScript(n))return e;const i=this.scriptController.executeScript(n,"sort",{options:o,items:s});return new Map(i.map(a=>[a.key,a]))}getSortedItems(e,t,s){const n=[...t.sort.attributes],o=Array.from(e.values()),i=(u,d,f)=>{const h=u[d];return typeof h>"u"||h===null?f:typeof h=="string"?h.toLowerCase():typeof h=="object"&&typeof h?.key=="string"?h.key.toLowerCase():h},a=n.map((u,d)=>f=>{const h=t.sort.order.at(d),p=this.getUndefinedValueForSorting(u,h,s);return i(f,u,p)}),l=[...t.sort.order].map(u=>u.toLowerCase()),c=gn(o,[...a],l);return new Map(c.map(u=>[u.key,u]))}getUndefinedValueForSorting(e,t,s){const n=s?.properties.get(e);if(n){if(n.type==="string"){if(t=="ASC")return;if(t=="DESC")return""}if(n.type==="int"||n.type==="float"||n.type==="date"||n.type==="boolean"){if(t=="ASC")return 1/0;if(t=="DESC")return-1/0}}}isValidProjection(e){return!(!e||e.$===!0&&Object.keys(e).length===1)}getPagedData(e,t,s,n,o){const i=e.entries(),a=new Map;if(t===0&&s===e.size&&n?.$===!0&&Object.keys(n).length===1)return e;for(let l=0;l<t+s;l++){if(l<t){i.next();continue}if(l>t+s)break;const c=i.next().value;if(c)if(o&&n&&this.isValidProjection(n)){const u=this.getProjectedData(n,o,c[1]);a.set(c[0],u)}else a.set(c[0],c[1])}return a}isValidScriptSorting(e){return!(!e||!e.script)}isValidSortProjection(e){const t=["ASC","DESC"];return!(!e||!Array.isArray(e.attributes)||e.attributes.length===0||!Array.isArray(e.order)||e.attributes.length!==e.order.length||xf(e.order,t).length>0)}getProjectedData(e,t,s){let n={key:s.key};return e.$===!0&&(n=Object.assign({},s)),e.$$===!0&&(n=Object.assign({},s),t.references.forEach(o=>{e[o.key]||(e[o.key]={$:!0})})),Object.keys(e).filter(o=>o!=="$"&&o!=="$$").forEach(o=>{const i=e[o];if(i===!1){delete n[o];return}if(i===!0){n[o]=s[o];return}if(typeof i=="object"){const a=t.references.get(o);if(a){const l=this.modelParser.models.get(a.model);if(l){if(a.type==="multiValued"){const c=s[o]||[];n[o]=c.map(u=>{const d=typeof u=="string"?u:u.key,f=l.getEntry(d);return f?this.getProjectedData(i,l,f):this.modelParser.initOptions.referenceMetadata?.enabled?{key:d,_dcupl_ref_:"miss"}:null}).filter(Boolean)}else if(a.type==="singleValued"){const c=s[o];if(c){const u=typeof c=="string"?c:c.key,d=l?.getEntry(u);d?n[o]=this.getProjectedData(i,l,d):this.modelParser.initOptions.referenceMetadata?.enabled?n[o]={key:u,_dcupl_ref_:"miss"}:delete n[o]}}}}}}),n}}var jf=Object.defineProperty,Rf=Object.getOwnPropertyDescriptor,I=(r,e,t,s)=>{for(var n=Rf(e,t),o=r.length-1,i;o>=0;o--)(i=r[o])&&(n=i(e,t,n)||n);return n&&jf(e,t,n),n};let R=class{constructor(e,t,s){this.dcuplApi=e,this.cdRef=t,this.indicesController=s,this.itemService=new Tn(this.dcuplApi.modelParser,this.dcuplApi.scriptController),this.filter=new Pf(this.dcuplApi.modelParser,this.cdRef,this.itemService,this.indicesController,this.dcuplApi.queryManager)}metadata;model;filter;itemService;log=Ee.child({prefix:"Catalog"});initListeners(){this.initListMetadata()}initListMetadata(){this.metadata={key:this.model.key,currentSize:this.filter.filteredData.size,initialSize:this.filter.initialData.size,attributes:this.getModelAttributes(),views:this.getViews(),appliedQuery:this.filter.queryBuilder.getQuery()}}getModelAttributes(){return[...this.model.references.values(),...this.model.properties.values()]}query={apply:(e,t)=>this.applyQuery(e,t),applyOptions:(e,t)=>this.applyOptions(e,t),remove:e=>this.removeQuery(e),reset:(e={skipProcessing:!1})=>this.resetQuery(e),execute:e=>this.executeQuery(e),one:e=>this._getItem(e),many:e=>this._getManyItems(e),get:()=>this.getQuery(),has:e=>this.hasGroupOrQueryKey(e),addCondition:(e,t)=>this.applyQuery(e,{mode:"add",skipProcessing:t?.skipProcessing}),setCondition:(e,t)=>this.applyQuery(e,{mode:"set",skipProcessing:t?.skipProcessing}),addGroup:(e,t)=>this.applyQuery(e,{mode:"add",skipProcessing:t?.skipProcessing}),setGroup:(e,t)=>this.applyQuery(e,{mode:"set",skipProcessing:t?.skipProcessing}),removeCondition:(e,t)=>{if(Array.isArray(e)){for(const s of e)this.removeQuery(s,t);return this.getQuery()}return this.removeQuery(e,t)},removeGroup:(e,t)=>this.removeQuery({groupKey:e},t),clear:e=>this.resetQuery(e),current:()=>this.getQuery(),isEmpty:()=>this.getQuery().queries.length===0,items:e=>this.executeQuery(e),first:e=>{const t=e?{...e,count:1}:{count:1};return this.executeQuery(t)[0]},any:e=>{const t=e?{...e,count:1}:{count:1};return this.executeQuery(t).length>0},count:e=>this.executeQuery(e).length};filters={get:e=>this.getFilter(e),getAll:e=>this.getFilters(e)};fn={pivot:e=>this._getPivot(e),aggregate:e=>this.getAggregate(e),suggest:e=>this._getSuggestions(e),groupBy:e=>this._getSections(e),facets:e=>this._getFacets(e),metadata:()=>this._getMetadata()};getViews(){const e=[];return this.filter.modelParser.views.forEach(t=>{t.model===this.model.key&&e.push(t)}),e}_getMetadata(){return this.initListMetadata(),this.metadata}getFilters(e){return this._getFilters(e)}_getFilters(e){const t=this.filter.getFilterItems(e);return e?.filterKeys?e.filterKeys.map(s=>{const n=t.find(o=>o.key===s);return n||this.log.error("Filter not found",void 0,{filterKey:s,model:this.model.key}),n}).filter(Boolean):t}getFilter(e){return this._getFilter(e)}_getFilter(e){return this.filter.getFilterItem(e.filterKey,e)}getQuery(){return this.filter.queryBuilder.getQuery()}hasGroupOrQueryKey(e){return this.filter.queryBuilder.has(e)}applyQuery(e,t){const s=this.filter.queryBuilder.applyQuery(e,t);return this.filter.updateFilteredData({skipProcessing:t?.skipProcessing}),s}applyOptions(e,t){const s=this.filter.queryBuilder.applyOptions(e,t?.mode);return this.filter.updateFilteredData({skipProcessing:t?.skipProcessing}),s}removeQuery(e,t){let s;return e?s=this.filter.queryBuilder.removeQuery(e):s=this.filter.queryBuilder.removeAllQueries(),this.filter.updateFilteredData({skipProcessing:t?.skipProcessing}),s}resetQuery(e){const t=this.filter.queryBuilder.reset();return this.filter.updateFilteredData({skipProcessing:e?.skipProcessing}),t}executeQuery(e){if(!e)e=this.filter.queryBuilder.getQuery();else if(!e.queries){const i=this.filter.queryBuilder.getQuery();e=Object.assign({},i,e)}const t=this.filter.cacheCtrl.generateContext({options:e});if(this.filter.cacheCtrl.has("query",t))return this.filter.cacheCtrl.get("query",t);const s=Object.assign({},e,{modelKey:this.model.key}),n=this.dcuplApi.queryManager.queryData(this.filter.filteredData,s,!1,this.filter.indicesController.indexMap),o=this.itemService.getItems(n,this.model,e);return this.filter.cacheCtrl.set("query",t,o),o}_getSections(e){const t=this.filter.cacheCtrl.generateContext({options:e,query:this.filter.queryBuilder.getQuery()});if(this.filter.cacheCtrl.has("sections",t))return this.filter.cacheCtrl.get("sections",t);const s=this.filter.getSections(e);return this.filter.cacheCtrl.set("sections",t,s),s}_getItem(e){return this.itemService.getItem(e.itemKey,this.filter.filteredData,this.model,e)}_getManyItems(e){return this.itemService.getManyItems(e.itemKeys,this.filter.filteredData,this.model,e)}_getSuggestions(e){typeof e.excludeUndefineds>"u"&&(e.excludeUndefineds=!0),typeof e.excludeNulls>"u"&&(e.excludeNulls=!0),typeof e.calculateResultKeys>"u"&&(e.calculateResultKeys=!0);const t=this.filter.cacheCtrl.generateContext({options:e,query:this.filter.queryBuilder.getQuery()});if(this.filter.cacheCtrl.has("suggestions",t))return this.filter.cacheCtrl.get("suggestions",t);const s=D.parse(e.attribute).isDeepQuery;if(!s&&!this.model.getAttribute(e.attribute))throw new Error(`Attribute ${e.attribute} does not exist`);if(typeof e.value=="string"&&e.value.startsWith("/")&&e.value.endsWith("/"))try{new RegExp(e.value.slice(1,-1))}catch{return[]}let n,o;if(e.relevantData==="all")n=this.filter.initialData,o={modelKey:this.model.key,queries:[]};else if(e.relevantData==="filtered")n=this.filter.filteredData,o=this.filter.queryBuilder.getQuery();else if(e.relevantData==="excludeQuery"&&e.excludeQuery){const c=new me;c.init(this.filter.queryBuilder.getQuery()),c.removeQuery(e.excludeQuery),o=c.getQuery(),n=this.dcuplApi.queryManager.queryData(this.filter.initialData,o,!1,this.filter.indicesController.indexMap)}else n=this.filter.filteredData,o=this.filter.queryBuilder.getQuery();let i=n;if(s){const c=D.parse(e.attribute),u=this.filter.queryBuilder.getProjectionForAttributeEntries([c]),d=new Map;for(const[f,h]of n){const p=this.filter.item.getProjectedData(u,this.model,h);d.set(f,p)}i=d}const a=this.filter.indicesController.getOrCreateIndex(e.attribute,i,{query:o}),l=sf(i,a,e,this.dcuplApi.queryManager);return this.filter.cacheCtrl.set("suggestions",t,l),l}_getFacets(e){const t=this.filter.cacheCtrl.generateContext({options:e,query:this.filter.queryBuilder.getQuery()});if(this.filter.cacheCtrl.has("facets",t))return this.filter.cacheCtrl.get("facets",t);const s=D.parse(e.attribute).isDeepQuery;let n=e.attribute;e.attribute.split(".").length>1&&(n=e.attribute.split(".")[0]);const o=this.model.references.get(n);let i;o&&(i=this.filter.modelParser.models.get(o.model));let a;if(s){const l=D.parse(e.attribute),c=this.filter.queryBuilder.getProjectionForAttributeEntries([l]);a=new Map;for(const[u,d]of this.filter.filteredData){const f=this.filter.item.getProjectedData(c,this.model,d);a.set(u,f)}}return this.computeFacetsInternal(e,i,t,a)}computeFacetsInternal(e,t,s,n){typeof e.excludeZeros>"u"&&(e.excludeZeros=!0),typeof e.excludeUndefineds>"u"&&(e.excludeUndefineds=!0),typeof e.excludeUnresolved>"u"&&(e.excludeUnresolved=!0),typeof e.calculateResults>"u"&&(e.calculateResults=!0);const o=this.filter.getFacets(e.attribute,t,{calculateFacets:e.calculateResults,count:e.count,excludeZeros:e.excludeZeros,excludeUndefineds:e.excludeUndefineds,excludeUnresolved:e.excludeUnresolved,skipProcessing:!1},n);return this.filter.cacheCtrl.set("facets",s,o),o}getAggregate(e){const t=this.filter.cacheCtrl.generateContext({options:e,query:this.filter.queryBuilder.getQuery()});if(this.filter.cacheCtrl.has("aggregation",t))return this.filter.cacheCtrl.get("aggregation",t);const s=D.parse(e.attribute);let n=this.filter.filteredData;if(s.isDeepQuery){const i=this.filter.queryBuilder.getProjectionForAttributeEntries([s]),a=new Map;for(const[l,c]of this.filter.filteredData){const u=this.filter.item.getProjectedData(i,this.model,c);a.set(l,u)}n=a}const o=this.filter.getAggregate(e,n,this.filter.indicesController.getOrCreateIndex(e.attribute,n,this.filter.queryBuilder.getQuery()));return this.filter.cacheCtrl.set("aggregation",t,o),o}_getPivot(e){if(!e||!Array.isArray(e.columns)||!Array.isArray(e.rows)||!e.values||!e.values.length)return this.log.error("Invalid pivot options",void 0,{model:this.model.key}),{key:"invalid_options"};const t=this.filter.cacheCtrl.generateContext({options:e,query:this.filter.queryBuilder.getQuery()});if(this.filter.cacheCtrl.has("pivot",t))return this.filter.cacheCtrl.get("pivot",t);let s=new Rt;this.filter.filteredData.size===this.filter.initialData.size&&(s=this.filter.indicesController);const n=[...e.rows.map(a=>a.attribute),...e.columns.map(a=>a.attribute),...e.values.map(a=>a.attribute)].map(a=>D.parse(a)).filter(a=>a.isDeepQuery);let o;if(n.length>0){const a=this.filter.queryBuilder.getProjectionForAttributeEntries(n);o=new Map;for(const[l,c]of this.filter.filteredData){const u=this.filter.item.getProjectedData(a,this.model,c);o.set(l,u)}}const i=wr(this.filter.filteredData,e,{key:"root"},"root",s,o);return this.filter.cacheCtrl.set("pivot",t,i),i}};I([v({scope:"list",type:"fn_metadata",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"_getMetadata"),I([v({scope:"list",type:"filter_many",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"_getFilters"),I([v({scope:"list",type:"filter_one",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"_getFilter"),I([v({scope:"list",type:"query_get",cloneResult:!0})],R.prototype,"getQuery"),I([v({scope:"list",type:"query_has"})],R.prototype,"hasGroupOrQueryKey"),I([v({scope:"list",type:"query_apply",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"applyQuery"),I([v({scope:"list",type:"query_apply_options",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"applyOptions"),I([v({scope:"list",type:"query_remove",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"removeQuery"),I([v({scope:"list",type:"query_reset",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"resetQuery"),I([v({scope:"list",type:"query_execute",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"executeQuery"),I([v({scope:"list",type:"fn_groupBy",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"_getSections"),I([v({scope:"list",type:"query_one",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"_getItem"),I([v({scope:"list",type:"query_many",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"_getManyItems"),I([v({scope:"list",type:"fn_suggest",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"_getSuggestions"),I([v({scope:"list",type:"fn_facets",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"_getFacets"),I([v({scope:"list",type:"fn_aggregate",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"getAggregate"),I([v({scope:"list",type:"fn_pivot",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"_getPivot");let Ef=class extends R{constructor(e,t,s){super(e,t,s),this.dcuplApi=e,this.cdRef=t,this.indicesController=s}listKey;init(e,t,s){this.listKey=e,this.model=t,this.filter.init(t,s),super.initListeners()}update(e,t,s){this.model=e,this.filter.update(e,t,s)}};function Mf(r,e){var t=-1,s=r.length;for(e||(e=Array(s));++t<s;)e[t]=r[t];return e}function If(r,e,t,s){var n=!t;t||(t={});for(var o=-1,i=e.length;++o<i;){var a=e[o],l=void 0;l===void 0&&(l=r[a]),n?At(t,a,l):ps(t,a,l)}return t}function Sf(r,e,t){if(!N(t))return!1;var s=typeof e;return(s=="number"?ee(t)&&Zt(e,t.length):s=="string"&&e in t)?Ue(t[e],r):!1}function Tf(r){return Xt(function(e,t){var s=-1,n=t.length,o=n>1?t[n-1]:void 0,i=n>2?t[2]:void 0;for(o=r.length>3&&typeof o=="function"?(n--,o):void 0,i&&Sf(t[0],t[1],i)&&(o=n<3?void 0:o,n=1),e=Object(e);++s<n;){var a=t[s];a&&r(e,a,s,o)}return e})}function Of(r){var e=[];if(r!=null)for(var t in Object(r))e.push(t);return e}var Kf=Object.prototype,Ff=Kf.hasOwnProperty;function qf(r){if(!N(r))return Of(r);var e=er(r),t=[];for(var s in r)s=="constructor"&&(e||!Ff.call(r,s))||t.push(s);return t}function On(r){return ee(r)?$s(r,!0):qf(r)}var Qf="[object Object]",Bf=Function.prototype,Vf=Object.prototype,Kn=Bf.toString,Gf=Vf.hasOwnProperty,Uf=Kn.call(Object);function Nf(r){if(!O(r)||Y(r)!=Qf)return!1;var e=Rs(r);if(e===null)return!0;var t=Gf.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&Kn.call(t)==Uf}function zf(r,e,t,s){for(var n=-1,o=r==null?0:r.length;++n<o;){var i=r[n];e(s,i,t(i),r)}return s}function Lf(r,e,t,s){return hr(r,function(n,o,i){e(s,n,t(n),i)}),s}function Wf(r,e){return function(t,s){var n=j(t)?zf:Lf,o={};return n(t,r,je(s),o)}}function Cr(r,e,t){(t!==void 0&&!Ue(r[e],t)||t===void 0&&!(e in r))&&At(r,e,t)}function _r(r,e){if(!(e==="constructor"&&typeof r[e]=="function")&&e!="__proto__")return r[e]}function Hf(r){return If(r,On(r))}function Jf(r,e,t,s,n,o,i){var a=_r(r,t),l=_r(e,t),c=i.get(l);if(c){Cr(r,t,c);return}var u=o?o(a,l,t+"",r,e,i):void 0,d=u===void 0;if(d){var f=j(l),h=!f&&ze(l),p=!f&&!h&&rr(l);u=l,f||h||p?j(a)?u=a:Re(a)?u=Mf(a):h?(d=!1,u=Os(l,!0)):p?(d=!1,u=Ns(l,!0)):u=[]:Nf(l)||Ne(l)?(u=a,Ne(a)?u=Hf(a):(!N(a)||Wt(a))&&(u=zs(l))):d=!1}d&&(i.set(l,u),n(u,l,s,o,i),i.delete(l)),Cr(r,t,u)}function Fn(r,e,t,s,n){r!==e&&un(e,function(o,i){if(n||(n=new z),N(o))Jf(r,e,i,t,Fn,s,n);else{var a=s?s(_r(r,i),o,i+"",r,e,n):void 0;a===void 0&&(a=o),Cr(r,i,a)}},On)}var Zf=Object.prototype,Xf=Zf.hasOwnProperty,Dr=Wf(function(r,e,t){Xf.call(r,t)?r[t].push(e):At(r,t,[e])}),Yf="[object Boolean]";function eh(r){return r===!0||r===!1||O(r)&&Y(r)==Yf}var st=Tf(function(r,e,t){Fn(r,e,t)});const q=(r,e,t)=>({title:r,type:"model",errorGroup:"ModelDefinitionError",errorType:"InvalidModelDefinition",attribute:e,description:t}),th=r=>{const e=["any","Array<date>","Array<float>","Array<int>","Array<string>","boolean","date","float","int","json","string"];if(!r.key)return q("Invalid Property",r.key,"Property key is missing");if(!r.type||e.indexOf(r.type)===-1)return q("Invalid Property",r.key,"Property type is invalid");if("derive"in r){if(!r.derive?.localReference)return q("Invalid Property",r.key,"Derived Property localReference is missing");if(!r.derive.remoteProperty)return q("Invalid Property",r.key,"Derived Property remoteProperty is missing")}if("expression"in r&&typeof r.expression!="string")return q("Invalid Property",r.key,"Expression is invalid")},rh=r=>{const e=["multiValued","singleValued"];if(!r.key)return q("Invalid Reference",r.key,"Reference key is missing");if(!r.type||e.indexOf(r.type)===-1)return q("Invalid Reference",r.key,"Reference type is invalid");if(!r.model)return q("Invalid Reference",r.key,"Reference model is missing");if("derive"in r){if(!r.derive.localReference)return q("Invalid Reference",r.key,"Derived Reference localReference is missing");if(!r.derive.remoteReference)return q("Invalid Reference",r.key,"Derived Reference remoteReference is missing")}if("resolve"in r){if(!r.resolve.reference)return q("Invalid Reference",r.key,"Resolved Reference reference is missing");if(!r.resolve.model)return q("Invalid Reference",r.key,"Resolved Reference model is missing")}if("groupBy"in r&&!r.groupBy.reference)return q("Invalid Reference",r.key,"Grouped Reference reference is missing")},sh=r=>{if(!r.key)throw new Error("Invalid Model: key is missing");if(typeof r.keyProperty<"u"&&typeof r.keyProperty!="string")throw new Error("Invalid Model: keyProperty must be a string");if(typeof r.autoGenerateKey<"u"&&typeof r.autoGenerateKey!="boolean")throw new Error("Invalid Model: autoGenerateKey must be a boolean");if(typeof r.autoGenerateProperties<"u"){const e=r.autoGenerateProperties;if(typeof e!="boolean"){if(typeof e!="object"||e===null||Array.isArray(e))throw new Error("Invalid Model: autoGenerateProperties must be a boolean or an options object");if(typeof e.deep<"u"&&typeof e.deep!="boolean")throw new Error("Invalid Model: autoGenerateProperties.deep must be a boolean");if(typeof e.sampleSize<"u"&&(typeof e.sampleSize!="number"||!Number.isFinite(e.sampleSize)||e.sampleSize<1))throw new Error("Invalid Model: autoGenerateProperties.sampleSize must be a positive number")}}if(r.properties&&!Array.isArray(r.properties))throw new Error("Invalid Model: properties must be an array");if(r.references&&!Array.isArray(r.references))throw new Error("Invalid Model: references must be an array");return!0},nh=(r,e)=>{const t=[];return r.references.forEach(s=>{e.has(s.model)||t.push({title:"Missing Model",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingModel",attribute:s.key,model:r.key,description:`Referenced model ${s.model} does not exist`}),"derive"in s&&t.push(...oh(s,r,e)),"resolve"in s&&t.push(...ih(s,r,e)),"groupBy"in s&&t.push(...ah(s,r))}),r.properties.forEach(s=>{"derive"in s&&t.push(...lh(s,r,e)),"expression"in s&&t.push(...ch(s,r))}),t},oh=(r,e,t)=>{const s=[],n=e.references.get(r.derive.localReference);if(!n)return s.push({title:"Missing Reference",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingReference",attribute:r.key,model:e.key,description:`Local Referenced ${r.derive.localReference} does not exist in model ${e.key}`}),s;const o=t.get(n.model);return o&&(o.references.get(r.derive.remoteReference)||s.push({title:"Missing Reference",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingReference",attribute:r.key,model:e.key,description:`Remote Reference ${r.derive.remoteReference} does not exist in model ${o.key}`})),s},ih=(r,e,t)=>{const s=[],n=t.get(r.resolve.model);return n?(n.references.get(r.resolve.reference)||s.push({title:"Missing Reference",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingReference",attribute:r.key,model:e.key,description:`Resolved Reference ${r.resolve.reference} does not exist in model ${n.key}`}),s):(s.push({title:"Missing Model",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingModel",attribute:r.key,model:e.key,description:`Referenced model ${r.model} does not exist`}),s)},ah=(r,e)=>{const t=[];return e.references.get(r.groupBy.reference)||t.push({title:"Missing Reference",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingReference",attribute:r.key,model:e.key,description:`Resolved Reference ${r.groupBy.reference} does not exist in model ${e.key}`}),t},lh=(r,e,t)=>{const s=[],n=e.references.get(r.derive.localReference);if(!n)return s.push({title:"Missing Reference",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingReference",attribute:r.key,model:e.key,description:`Local Referenced ${r.derive.localReference} does not exist in model ${e.key}`}),s;const o=t.get(n.model);if(o){if(r.derive.remoteProperty==="key")return s;o.properties.get(r.derive.remoteProperty)||s.push({title:"Missing Property",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingProperty",attribute:r.key,model:e.key,description:`Remote Property ${r.derive.remoteProperty} does not exist in model ${o.key}`})}return s},ch=(r,e)=>{const t=[];return $r(r.expression).variables.forEach(s=>{s.name==="key"||s.name.endsWith(".key")||!e.properties.get(s.name)&&!e.references.get(s.name)&&t.push({title:"Unknown Expression Variable",type:"model",errorGroup:"ModelDefinitionError",errorType:"UnknownExpressionVariable",attribute:r.key,model:e.key,description:`Expression Variable ${s.name} not found in expression ${r.key} in ${e.key}`})}),t},uh={REF_VALUE:"_dcupl_ref_"},dh={required:!0,forceStrictDataType:!1,nullable:!1,validatorHandling:"loose"},xr={enabled:!0,attributes:dh};let fh=class{constructor(e){this.modelParser=e,this.cdRef=e.cdRef}properties=new Map;references=new Map;attributeQualityConfigs=new Map;key;log=Ee.child({prefix:"Model"});initialDefinition;data=new Map;supportsAutoCreation=!1;autoGenerateKey=!1;autoGenerateProperties=!1;autoGeneratePropertiesOption=!1;keyProperty="key";valueMappings=[];meta;qualityConfig=xr;indicesController=new Rt;cdRef;groupedRefReverseIndex=new Map;init(e){this.key=e.key,this.initialDefinition=e,e.quality&&(this.qualityConfig=st({},xr,e.quality))}applyPropertiesAndReferences(e){e.properties?.map(t=>{const s=th(t);s?(s.model=this.key,this.setError(s)):(this.setAttributeQualityConfig(t),this.properties.set(t.key,t))}),e.references?.map(t=>{const s=rh(t);s?(s.model=this.key,this.setError(s)):(t.validity=t.validity||"loose",this.setAttributeQualityConfig(t),this.references.set(t.key,t))}),this.supportsAutoCreation=!!e.supportsAutoCreation,this.keyProperty=e.keyProperty||"key",this.autoGenerateKey=!!e.autoGenerateKey,this.autoGenerateProperties=!!e.autoGenerateProperties,this.autoGeneratePropertiesOption=e.autoGenerateProperties??!1,this.valueMappings=e.valueMappings||[],this.meta=e.meta}setAttributeQualityConfig(e){const t=this.qualityConfig.attributes,s=st({},xr,t,e.quality);this.attributeQualityConfigs.set(e.key,s)}getModelDefinition(){return this.autoGenerateProperties?{key:this.key,keyProperty:this.keyProperty,references:Array.from(this.references.values()),properties:Array.from(this.properties.values()),autoGenerateKey:this.autoGenerateKey,supportsAutoCreation:this.supportsAutoCreation,valueMappings:this.valueMappings,meta:this.meta,autoGenerateProperties:this.autoGeneratePropertiesOption,quality:this.qualityConfig}:this.initialDefinition}generatePropertiesFromContainer(e){const t=this.autoGeneratePropertiesOption;(typeof t=="object"&&t!==null?Mn(e.data,t):Mn(e.data,!1)).map(s=>{if(!this.properties.has(s.key)){if(s.key==="key"&&(e.keyProperty==="key"||!e.keyProperty))return;s.filter=!0,this.properties.set(s.key,s)}})}getReferenceKeys(e){return e.map(t=>{if(typeof t=="string")return String(t.trim());if(typeof t=="number")return String(t);if(t===null)return"null";if(typeof t=="object"&&t&&t.key)return t.key})}setError(e){this.modelParser.qualityController.enabled&&this.qualityConfig.enabled===!0&&(e.model=this.key,this.modelParser.qualityController.setError(e))}processBasicProperty(e,t,s){const n=t[e.key],o=this.attributeQualityConfigs.get(e.key);let i;if(typeof n>"u"){o?.required&&this.setError({title:"Undefined Value",type:"model",errorGroup:"PropertyDataError",errorType:"UndefinedValue",description:`The property "${e.key}" in the "${this.key}" model is required but is undefined`,itemKey:t.key,attribute:e.key,model:this.key});return}else{if(n===null)o?.nullable||this.setError({title:"Null Value",description:`The value of the property "${e.key}" in the "${this.key}" model should not be null`,type:"model",errorGroup:"PropertyDataError",errorType:"NullValue",itemKey:t.key,attribute:e.key,model:this.key}),i=n;else if(e.type==="string"){if(i=this.processStringProperty(e,n,t),typeof i>"u")return}else if(e.type==="int"){if(i=this.processIntProperty(e,n,t),typeof i>"u")return}else if(e.type==="float"){if(i=this.processFloatProperty(e,n,t),typeof i>"u")return}else if(e.type==="date"){if(i=this.processDateProperty(e,n,t),typeof i>"u")return}else if(e.type==="json"){if(i=this.processJSONProperty(e,n,t),typeof i>"u")return}else if(e.type==="boolean"){if(i=this.processBooleanProperty(e,n,t),typeof i>"u")return}else if(e.type==="any")i=n;else if(e.type==="Array<string>"){const a=this.getValueAsArray(n,e?.separator);Array.isArray(a)&&(i=[],a.forEach(l=>{const c=this.processStringProperty(e,l,t);typeof c<"u"&&i.push(c)}))}else if(e.type==="Array<int>"){const a=this.getValueAsArray(n,e?.separator);Array.isArray(a)&&(i=[],a.forEach(l=>{const c=this.processIntProperty(e,l,t);typeof c<"u"&&i.push(c)}))}else if(e.type==="Array<float>"){const a=this.getValueAsArray(n,e?.separator);Array.isArray(a)&&(i=[],a.forEach(l=>{const c=this.processFloatProperty(e,l,t);typeof c<"u"&&i.push(c)}))}else if(e.type==="Array<date>"){const a=this.getValueAsArray(n,e?.separator);Array.isArray(a)&&(i=[],a.forEach(l=>{const c=this.processDateProperty(e,l,t);typeof c<"u"&&i.push(c)}))}s[e.key]=i}e.index&&(this.indicesController.fillInverseIndex(e.key,s.key,[i]),this.indicesController.fillDataMap(e.key,[i]))}handleValidators(e,t,s){if(!this.modelParser.qualityController.enabled||this.qualityConfig.enabled!==!0)return!0;let n=!0;try{if(t.quality?.validators){const o=this.modelParser.qualityController.validateAttribute(e,t.quality.validators,t.key);for(const i of o)n=!1,i.attribute=t.key,i.itemKey=s.key,i.model=this.key,this.setError(i)}}catch(o){this.log.error("Validator definition error",o)}return n}getWrongDataTypeError(e,t,s){return{title:"Wrong Data Type",type:"model",errorGroup:"PropertyDataError",errorType:"WrongDataType",itemKey:s.key,attribute:e.key,model:this.key,description:`Expect ${e.type} but got ${typeof t} with value ${t}`,meta:{expected:e.type,rawValue:t,typeof:typeof t}}}getValueAsArray(e,t=","){if(e)return Array.isArray(e)?e:e&&typeof e=="string"?e.split(t).map(s=>s.trim()):[]}processStringProperty(e,t,s){const n=this.attributeQualityConfigs.get(e.key);let o=t;if(n?.forceStrictDataType){if(!Pt(t)){this.setError(this.getWrongDataTypeError(e,t,s));return}}else if(o=String(t),!Pt(o)&&o!=t){this.setError(this.getWrongDataTypeError(e,t,s));return}if(!(!this.handleValidators(o,e,s)&&n?.validatorHandling!=="loose"))return o}processIntProperty(e,t,s){const n=this.attributeQualityConfigs.get(e.key);if(n?.forceStrictDataType){if(!In(t)){this.setError(this.getWrongDataTypeError(e,t,s));return}return t}const o=parseInt(t,10);if(isNaN(o)){this.setError(this.getWrongDataTypeError(e,t,s));return}if(!(!this.handleValidators(o,e,s)&&n?.validatorHandling!=="loose"))return o}processFloatProperty(e,t,s){const n=this.attributeQualityConfigs.get(e.key);if(n?.forceStrictDataType){if(!Sn(t)){this.setError(this.getWrongDataTypeError(e,t,s));return}return t}let o;const i=e.fractionDigits;if(typeof i>"u"?o=parseFloat(t):o=parseFloat(parseFloat(t).toFixed(i)),isNaN(o)){this.setError(this.getWrongDataTypeError(e,t,s));return}if(!(!this.handleValidators(o,e,s)&&n?.validatorHandling!=="loose"))return o}processJSONProperty(e,t,s){if(this.attributeQualityConfigs.get(e.key)?.forceStrictDataType){if(!O(t)){this.setError(this.getWrongDataTypeError(e,t,s));return}return t}if(O(t))return t;if(!O(t)&&typeof t=="string")try{return JSON.parse(t)}catch{this.setError(this.getWrongDataTypeError(e,t,s));return}}processBooleanProperty(e,t,s){if(this.attributeQualityConfigs.get(e.key)?.forceStrictDataType){if(!eh(t)){this.setError(this.getWrongDataTypeError(e,t,s));return}return t}return!!t}processDateProperty(e,t,s){if(t===""){this.setError(this.getWrongDataTypeError(e,t,s));return}const n=e.inputFormat;let o;try{if(n&&typeof n=="string"){let i=t;typeof i!="string"&&(i=String(i)),o=uf(i,n,new Date)}else o=new Date(t)}catch(i){this.log.error("Property extraction error",i,{property:e.key,model:this.key}),this.setError(this.getWrongDataTypeError(e,t,s));return}if(!jn(o)){this.setError(this.getWrongDataTypeError(e,t,s));return}return e.UTC&&(o=new Date(Date.UTC(o.getFullYear(),o.getMonth(),o.getDate(),o.getHours(),o.getMinutes(),o.getSeconds(),o.getMilliseconds()))),o}processSingleValuedReference(e,t,s){const n=this.modelParser.models.get(e.model);if(!n)return;let o="";typeof t=="string"?o=t:typeof t=="object"&&t&&t.key&&(o=t.key);const i=n.getEntry(o);if(!i){if(n.supportsAutoCreation){const l=this.handleAutoCreationAndReturnKey(n,t);this.indicesController.fillInverseIndex(e.key,s.key,[t]),s[e.key]=l,this.setRefValue(l,"auto_hit");return}else if(this.indicesController.fillInverseIndex(e.key,s.key,[o]),this.setError({title:"Remote Reference Key Not Found",type:"model",errorGroup:"ReferenceDataError",errorType:"RemoteReferenceKeyNotFound",itemKey:s.key,attribute:e.key,description:`The reference "${e.key}" in the "${this.key}" model can not find the value "${t}" in the remote model "${e.model}"`,meta:{remoteModel:e.model,remoteKey:t}}),e.validity==="strict")return}this.indicesController.fillInverseIndex(e.key,s.key,[o]);const a={key:String(o)};s[e.key]=a,!i&&!n.supportsAutoCreation&&e.validity!=="strict"?this.setRefValue(a,"miss"):this.setRefValue(a,"hit")}processMultiValuedReference(e,t,s){const n=this.modelParser.models.get(e.model);if(!n)return;const o=this.getReferenceKeys(t),i=[];o.forEach((a,l)=>{const c=n.getEntry(a);if(!c){if(n.supportsAutoCreation){const d=this.handleAutoCreationAndReturnKey(n,t[l]);this.setRefValue(d,"auto_hit"),i.push(d);return}else if(this.setError({title:"Remote Reference Key Not Found",type:"model",errorGroup:"ReferenceDataError",errorType:"RemoteReferenceKeyNotFound",itemKey:s.key,attribute:e.key,description:`The reference "${e.key}" in the "${this.key}" model can not find the value "${a}" in the remote model "${e.model}"`,meta:{remoteModel:e.model,remoteKey:a}}),e.validity==="strict")return}const u={key:a};!c&&!n.supportsAutoCreation&&e.validity!=="strict"?this.setRefValue(u,"miss"):this.setRefValue(u,"hit"),i.push(u)}),this.indicesController.fillInverseIndex(e.key,s.key,i.map(a=>a.key)),s[e.key]=i}getViewKeys(){return this.modelParser._getViewKeys({modelKey:this.key})}addBasicPropertiesAndReferences(e){const t=this.getBasicProperties(),s=this.getBasicReferences();for(let n of e.data){let o=this.data.get(String(n.key));o?e.type==="set"&&this.setError({title:"Non Unique Key",type:"model",errorGroup:"DataContainerError",errorType:"NonUniqueKey",itemKey:n.key,model:e.model}):o={key:String(n.key)};for(const i of t){i.origin&&(n[i.key]=n[i.origin]);const a=this.valueMappings.find(l=>l.attributes.includes(i.key));this.isValidValueMapping(a)&&(n=this.mapRawValueUsingValueMapping(n,i.key,a)),this.processBasicProperty(i,n,o)}for(const i of s){const a=this.attributeQualityConfigs.get(i.key);i.origin&&(n[i.key]=n[i.origin]);const l=this.valueMappings.find(u=>u.attributes.includes(i.key));this.isValidValueMapping(l)&&(n=this.mapRawValueUsingValueMapping(n,i.key,l));let c=n[i.key];if(typeof c=="number"&&(c=String(c)),!c){this.indicesController.fillInverseIndex(i.key,o.key,[void 0]),a?.required&&this.setError({title:"Undefined Value",type:"model",errorGroup:"ReferenceDataError",errorType:"UndefinedValue",itemKey:n.key,attribute:i.key,model:e.model});continue}if(i.type==="singleValued")(typeof c=="object"||typeof c=="string")&&!Array.isArray(c)?this.processSingleValuedReference(i,c,o):this.setError({title:"Wrong Data Type",type:"model",errorGroup:"ReferenceDataError",errorType:"WrongDataType",description:`Expect ${i.type} but got ${typeof c} with value ${c}`,itemKey:n.key,attribute:i.key,meta:{value:c}});else if(i.type==="multiValued"){const u=this.getValueAsArray(c,i?.separator);Array.isArray(u)?this.processMultiValuedReference(i,u,o):this.setError({title:"Wrong Data Type",type:"model",errorGroup:"ReferenceDataError",errorType:"WrongDataType",description:`Expect ${i.type} but got ${typeof c} with value ${c}`,itemKey:n.key,attribute:i.key,meta:{value:c}})}}this.data.set(o.key,o)}}addQueryReferences(e){const t=this.getQueryReferences();for(let s of t){const n=JSON.stringify(s.query);for(let o of e.data){let i=this.data.get(String(o.key));const a=Et(n,{...o}),l=JSON.parse(a),c=new me;c.init({modelKey:s.model}),c.applyQuery(l,{mode:"set"}),l.projection||c.applyOptions({projection:{$:!1}});const u=c.getQuery();if(u.queries.length>0){const d=this.modelParser.dcuplInstance.query.execute(u);s.type==="singleValued"?d[0]&&(i[s.key]={key:d[0].key,_dcupl_ref_:"hit"}):s.type==="multiValued"&&(d.forEach(f=>{f._dcupl_ref_="hit"}),i[s.key]=d)}else s.type==="singleValued"?i[s.key]=null:s.type==="multiValued"&&(i[s.key]=[]);this.data.set(i.key,i)}}}isValidValueMapping(e){if(!e||!Array.isArray(e.attributes)||!Array.isArray(e.values))return!1;const t=e.values.find(n=>!Array.isArray(n.from)),s=e.values.find(n=>!n.to);return!(t||s)}mapRawValueUsingValueMapping(e,t,s){for(const n of s.values){if(n.from.includes("$dcupl_falsy")){if(typeof e[t]>"u"||e[t]===null||e[t]===""){e[t]=n.to;continue}continue}if(n.from.includes(e[t])){e[t]=n.to;continue}}return e}handleAutoCreationAndReturnKey(e,t){if(Array.isArray(t))return[];if(t===null)return{key:"null"};if(typeof t=="object"){const s=e.keyProperty,n=e.autoGenerateKey?L():String(t[s]);e.data.set(n,{key:n}),t.key=n;const o={model:e.key,data:[t]};return setTimeout(()=>{e.addContainer(o)},0),{key:n}}if(typeof t=="string"){e.data.set(t,{key:t});const s={model:e.key,data:[{key:t}]};setTimeout(()=>{e.addContainer(s)},0)}return{key:String(t)}}addContainer(e){if(this.cdRef.analyticsController.mark({name:"model:autogenerate_data:start",context:e.model}),this.modelParser.handleAlternativeKey([e]),!Array.isArray(e.data)){this.setError({title:"Invalid Data",type:"model",errorGroup:"DataContainerError",errorType:"WrongDataType",description:`Expect the data to be an Array but got ${typeof e.data}`,model:e.model});return}this.autoGenerateProperties&&this.generatePropertiesFromContainer(e),this.addBasicPropertiesAndReferences(e),this.addQueryReferences(e),this.addResolvedReferences(e),this.addDerivedReferencesGroupedReferencesDerivedPropertiesAndExpressionProperties(e),(this.hasDerivedPropertiesBasedOnResolvedReferences()||this?.hasDerivedReferencesBasedOnResolvedReferences())&&this.reRunDerivedPropertiesBasedOnResolves(e),this.cdRef.analyticsController.mark({name:"model:autogenerate_data:end",context:e.model}),this.cdRef.analyticsController.measure({name:"model:autogenerate_data",start:"model:autogenerate_data:start",end:"model:autogenerate_data:end",sum:!0,context:e.model,detail:{model:e.model,origin:this.key}})}addResolvedReferences(e){const t=this.getResolvedReferences().map(s=>{const n=this.modelParser.models.get(s.resolve.model);if(!n)return;const o=n.getDataAsArray(),i=n.indicesController.getIndex(s.resolve.reference);return{reference:s,model:n,remoteData:o,inverseKeys:i}}).filter(s=>!!s);for(const s of e.data){const n=String(s.key),o=this.data.get(n);for(const i of t){const a=i.reference.key;let l;if(i.inverseKeys){if(i.reference.type==="multiValued"){const c=i.inverseKeys.get(o.key)||new Set;l=Array.from(c).map(u=>({key:u}))}else{const c=i.inverseKeys.get(o.key),u=c&&Array.from(c)[0]||null;u?l={key:u}:l=null}o[a]=l,this.indicesController.fillInverseIndex(a,n,o[a])}}this.data.set(o.key,o)}}rebuildResolvedReferencesForAllItems(e){let t=this.getResolvedReferences();if(t.length===0||e&&(t=t.filter(n=>e.has(n.key)),t.length===0))return;const s=t.map(n=>{const o=this.modelParser.models.get(n.resolve.model);if(!o)return;const i=o.indicesController.getIndex(n.resolve.reference);return{reference:n,model:o,remoteData:[],inverseKeys:i}}).filter(n=>!!n);for(const n of this.data.values())for(const o of s){const i=o.reference.key;let a;if(o.inverseKeys){if(o.reference.type==="multiValued"){const l=o.inverseKeys.get(n.key)||new Set;a=Array.from(l).map(c=>({key:c}))}else{const l=o.inverseKeys.get(n.key),c=l?Array.from(l)[0]:null;c?a={key:c}:a=null}n[i]=a,this.indicesController.fillInverseIndex(i,n.key,n[i])}}}addDerivedReferencesGroupedReferencesDerivedPropertiesAndExpressionProperties(e){const t=this.getDerivedPropertiesForBasicAndDerivedReferences(),s=this.getExpressionProperties(),n=this.getDerivedReferences(),o=this.getGroupedReferences();for(const i of e.data){const a=this.data.get(String(i.key));n.length>0&&n.forEach(l=>{this.handleDerivedReferences(l,a)}),o.length>0&&o.forEach(l=>{this.handleGroupedReferences(l,a)}),t.length>0&&t.forEach(l=>{this.handleDerivedProperties(l,a)}),s.length>0&&s.forEach(l=>{const c=this.createExpressionContext(a),u=Et(l.expression,c);a[l.key]=u}),this.data.set(a.key,a)}}handleDerivedProperties(e,t){const s=this.references.get(e.derive.localReference);if(s){const n=this.modelParser.models.get(s.model);n&&(s.type==="singleValued"?this.handleSingleValuedDerivedProperties(n,t,s,e):s.type==="multiValued"&&this.handleMultiValuedDerivedProperties(n,t,s,e))}}reRunDerivedPropertiesBasedOnResolves(e){const t=this.getDerivedProperties(),s=this.getDerivedReferences();for(const n of e.data){const o=this.data.get(String(n.key));s.forEach(i=>{this.handleDerivedReferences(i,o)}),t.forEach(i=>{const a=this.references.get(i.derive.localReference);if(a){const l=this.modelParser.models.get(a.model);l&&(a.type==="singleValued"?this.handleSingleValuedDerivedProperties(l,o,a,i):a.type==="multiValued"&&this.handleMultiValuedDerivedProperties(l,o,a,i))}}),this.data.set(o.key,o)}}handleSingleValuedDerivedProperties(e,t,s,n){const o=t[s.key];if(!o){delete t[n.key];return}const i=e?.getData().get(o.key);if(i){const a=i[n.derive.remoteProperty];typeof a<"u"&&(t[n.key]=a),n.index&&this.indicesController.fillInverseIndex(n.key,t.key,[a])}else delete t[n.key]}handleMultiValuedDerivedProperties(e,t,s,n){const o=t[s.key];let i;o?Array.isArray(o)?i=[...o]:o&&typeof o.key=="string"?i=[{key:o.key}]:i=[]:i=[];const a=n.derive?.separator||", ",l=i.map(u=>{const d=e?.getData().get(u.key);if(d)return d[n.derive.remoteProperty]}).filter(Boolean);let c;n.type.includes("Array<")?c=l:n.type==="string"||n.type==="int"||n.type==="float"||n.type==="date"?c=l.join(a):(n.type,c=l),t[n.key]=c}handleDerivedReferences(e,t){const s=this.references.get(e.derive.localReference);if(!s)return;const n=this.modelParser.models.get(s.model);if(!n)return;const o=t[s.key];if(!o)return;let i=[];if(Array.isArray(o)){const l=new Set;o.forEach(c=>{const u=n?.data.get(c.key);if(u){const d=u[e.derive.remoteReference];d&&(Array.isArray(d)?d.forEach(f=>{l.add(f.key)}):l.add(d.key))}}),i=Array.from(l.values())}else{const l=n?.data.get(o.key);if(l){const c=l[e.derive.remoteReference];c?Array.isArray(c)?i=c.map(u=>u.key):"key"in c&&(i=[c.key]):i=[]}}let a;e.type==="singleValued"?a={key:i[0]}:a=i.map(l=>({key:l})),this.indicesController.fillInverseIndex(e.key,t.key,i),t[e.key]=a}asStringArray(e){return e?Array.isArray(e)?e.map(t=>t.key):[e.key]:[]}buildReverseIndexForReference(e){const t=new Map;this.data.forEach(s=>{const n=this.asStringArray(s[e]);for(const o of n)t.has(o)||t.set(o,new Set),t.get(o).add(s.key)}),this.groupedRefReverseIndex.set(e,t)}ensureReverseIndex(e){return this.groupedRefReverseIndex.has(e)||this.buildReverseIndexForReference(e),this.groupedRefReverseIndex.get(e)}handleGroupedReferences(e,t){const s=[],n=this.references.get(e.groupBy.reference);if(n){const o=this.asStringArray(t[n.key]);if(!o.length)return;const i=this.ensureReverseIndex(n.key),a=new Set;for(const l of o){const c=i.get(l);c&&c.forEach(u=>a.add(u))}for(const l of a)e.groupBy.includeSelfInGroup?s.push({key:l}):t.key!==l&&s.push({key:l})}t[e.key]=s}resetData(){this.data.clear(),this.groupedRefReverseIndex.clear()}resetIndexMap(){this.indicesController.reset()}deleteDataEntries(e){for(const t of e.data){const s=String(t.key);this.data.delete(s),this.indicesController.removeItemFromAllIndices(s),this.groupedRefReverseIndex.forEach(n=>{n.forEach(o=>{o.delete(s)})})}}getItemCount(){return this.data.size}getAttributes(){return[...this.references.values(),...this.properties.values()]}getAttribute(e){return e==="key"?{key:"key",type:"string"}:this.references.get(e)||this.properties.get(e)}getReferencesRelevantForDependencyGraph(){return Array.from(this.references.values()).filter(e=>!("derive"in e)&&!("resolve"in e))}getBasicReferences(){return Array.from(this.references.values()).filter(e=>!("derive"in e)&&!("resolve"in e)&&!("query"in e)&&!("groupBy"in e))}getQueryReferences(){return Array.from(this.references.values()).filter(e=>"query"in e)}getResolvedReferences(){return Array.from(this.references.values()).filter(e=>"resolve"in e)}getGroupedReferences(){return Array.from(this.references.values()).filter(e=>"groupBy"in e)}getDerivedReferences(){return Array.from(this.references.values()).filter(e=>"derive"in e)}getAggregatedReferences(){return Array.from(this.references.values()).filter(e=>"aggregate"in e)}getBasicProperties(){return Array.from(this.properties.values()).filter(e=>!("derive"in e)&&!("expression"in e))}getDerivedProperties(){return Array.from(this.properties.values()).filter(e=>"derive"in e)}getDerivedPropertiesForBasicAndDerivedReferences(){const e=this.getBasicReferences(),t=this.getDerivedReferences(),s=this.getQueryReferences(),n=this.getDerivedProperties(),o=[...e,...t,...s];return n.filter(i=>o.find(a=>a.key===i.derive?.localReference))}getDerivedPropertiesForResolvedReferences(){const e=this.getResolvedReferences();return this.getDerivedProperties().filter(t=>e.find(s=>s.key===t.derive?.localReference))}getDerivedReferencesForResolvedReferences(){const e=this.getResolvedReferences();return this.getDerivedReferences().filter(t=>e.find(s=>s.key===t.derive.localReference))}getExpressionProperties(){return Array.from(this.properties.values()).filter(e=>"expression"in e)}getAggregatedProperties(){return Array.from(this.properties.values()).filter(e=>"aggregate"in e)}hasBasicReferences(){return this.getBasicReferences().length>0}hasQueryReferences(){return this.getQueryReferences().length>0}hasResolvedReferences(){return this.getResolvedReferences().length>0}hasGroupedReferences(){return this.getGroupedReferences().length>0}hasDerivedReferences(){return this.getDerivedReferences().length>0}hasBasicProperties(){return this.getBasicProperties().length>0}hasDerivedProperties(){return this.getDerivedProperties().length>0}hasDerivedPropertiesForBasicReferences(){return this.getDerivedPropertiesForBasicAndDerivedReferences().length>0}hasDerivedPropertiesBasedOnResolvedReferences(){return this.getDerivedPropertiesForResolvedReferences().length>0}hasDerivedReferencesBasedOnResolvedReferences(){return this.getDerivedReferencesForResolvedReferences().length>0}hasExpressionProperties(){return this.getExpressionProperties().length>0}hasAggregatedProperties(){return this.getAggregatedProperties().length>0}getData(e){if(e?.itemKeys){const t=new Map;return e.itemKeys.forEach(s=>{const n=this.data.get(s);n&&t.set(n.key,n)}),t}return this.data}getDataAsArray(){return Array.from(this.data.values())}getEntry(e){return this.data.get(e)}setRefValue(e,t){this.modelParser.initOptions.referenceMetadata?.enabled&&Object.defineProperty(e,uh.REF_VALUE,{value:t,enumerable:!0,writable:!1,configurable:!1})}addBasicPropertiesAndReferencesPartial(e,t){const s=this.getBasicProperties().filter(o=>t.has(o.key)),n=this.getBasicReferences().filter(o=>t.has(o.key));for(let o of e.data){let i=this.data.get(String(o.key));i||(i={key:String(o.key)});for(const a of s){a.origin&&(o[a.key]=o[a.origin]);const l=this.valueMappings.find(c=>c.attributes.includes(a.key));this.isValidValueMapping(l)&&(o=this.mapRawValueUsingValueMapping(o,a.key,l)),this.processBasicProperty(a,o,i)}for(const a of n){const l=this.attributeQualityConfigs.get(a.key);a.origin&&(o[a.key]=o[a.origin]);const c=this.valueMappings.find(f=>f.attributes.includes(a.key));this.isValidValueMapping(c)&&(o=this.mapRawValueUsingValueMapping(o,a.key,c));let u=o[a.key];typeof u=="number"&&(u=String(u));const d=i[a.key];if(!u){d&&this.indicesController.removeFromInverseIndex(a.key,i.key,[d]),this.indicesController.fillInverseIndex(a.key,i.key,[void 0]),delete i[a.key],l?.required&&this.setError({title:"Undefined Value",type:"model",errorGroup:"ReferenceDataError",errorType:"UndefinedValue",itemKey:o.key,attribute:a.key,model:e.model});continue}if(a.type==="singleValued")(typeof u=="object"||typeof u=="string")&&!Array.isArray(u)?(d&&d.key!==u&&this.indicesController.removeFromInverseIndex(a.key,i.key,[d]),this.processSingleValuedReference(a,u,i)):this.setError({title:"Wrong Data Type",type:"model",errorGroup:"ReferenceDataError",errorType:"WrongDataType",description:`Expect ${a.type} but got ${typeof u} with value ${u}`,itemKey:o.key,attribute:a.key,meta:{value:u}});else if(a.type==="multiValued"){const f=this.getValueAsArray(u,a?.separator);Array.isArray(f)?(d&&Array.isArray(d)&&this.indicesController.removeFromInverseIndex(a.key,i.key,d),this.processMultiValuedReference(a,f,i)):this.setError({title:"Wrong Data Type",type:"model",errorGroup:"ReferenceDataError",errorType:"WrongDataType",description:`Expect ${a.type} but got ${typeof u} with value ${u}`,itemKey:o.key,attribute:a.key,meta:{value:u}})}}this.data.set(i.key,i)}}addQueryAndResolvedReferencesPartial(e,t){if(this.hasQueryReferences()){const s=this.getQueryReferences().filter(n=>t.has(n.key));for(let n of s){const o=JSON.stringify(n.query);for(let i of e.data){let a=this.data.get(String(i.key));if(!a)continue;const l=Et(o,{...i}),c=JSON.parse(l),u=new me;u.init({modelKey:n.model}),u.applyQuery(c,{mode:"set"}),c.projection||u.applyOptions({projection:{$:!1}});const d=u.getQuery();if(d.queries.length>0){const f=this.modelParser.dcuplInstance.query.execute(d);n.type==="singleValued"?f[0]&&(a[n.key]={key:f[0].key,_dcupl_ref_:"hit"}):n.type==="multiValued"&&(f.forEach(h=>{h._dcupl_ref_="hit"}),a[n.key]=f)}else n.type==="singleValued"?a[n.key]=null:n.type==="multiValued"&&(a[n.key]=[]);this.data.set(a.key,a)}}}this.hasResolvedReferences()&&this.getResolvedReferences().filter(s=>t.has(s.key)).length>0&&this.rebuildResolvedReferencesForAllItems()}createExpressionContext(e){const t={...e};return this.references.forEach((s,n)=>{const o=e[n];if(!o)return;const i=this.modelParser.models.get(s.model);if(i)if(s.type==="singleValued"&&typeof o=="object"&&"key"in o){const a=i.getData().get(o.key);a&&(t[n]=this.createNestedContext(a,i))}else s.type==="multiValued"&&Array.isArray(o)&&(t[n]=o.map(a=>{const l=i.getData().get(a.key);return l?this.createNestedContext(l,i):null}).filter(Boolean))}),t}createNestedContext(e,t){const s={...e};return t.references.forEach((n,o)=>{const i=e[o];if(!i)return;const a=this.modelParser.models.get(n.model);if(a&&n.type==="singleValued"&&typeof i=="object"&&"key"in i){const l=a.getData().get(i.key);l&&(s[o]={...l})}}),s}addDerivedAndExpressionAttributesPartial(e,t){const s=this.getDerivedPropertiesForBasicAndDerivedReferences().filter(a=>t.has(a.key)),n=this.getDerivedReferences().filter(a=>t.has(a.key)),o=this.getGroupedReferences().filter(a=>t.has(a.key)),i=this.getExpressionProperties().filter(a=>t.has(a.key));for(const a of e.data){const l=this.data.get(String(a.key));l&&(n.forEach(c=>{this.handleDerivedReferences(c,l)}),o.forEach(c=>{this.handleGroupedReferences(c,l)}),s.forEach(c=>{this.handleDerivedProperties(c,l)}),i.forEach(c=>{const u=this.createExpressionContext(l),d=Et(c.expression,u);l[c.key]=d}),this.data.set(l.key,l))}}reRunDerivedPropertiesBasedOnResolvesPartial(e,t){const s=this.getDerivedProperties().filter(o=>t.has(o.key)),n=this.getDerivedReferences().filter(o=>t.has(o.key));for(const o of e.data){const i=this.data.get(String(o.key));i&&(n.forEach(a=>{this.handleDerivedReferences(a,i)}),s.forEach(a=>{this.handleDerivedProperties(a,i)}),this.data.set(i.key,i))}}},hh=class{changedAttributes;changedItems;deletedItems;modelFullReset;state="clean";constructor(){this.changedAttributes=new Map,this.changedItems=new Map,this.deletedItems=new Map,this.modelFullReset=new Set}recordDataChange(e){const t=e.model;if(!(!e.data||e.data.length===0))if(e.type==="set")this.state==="clean"?this.state="full-reset":this.state==="tracking"&&(this.state="full-reset",this.changedAttributes.delete(t),this.changedItems.delete(t),this.deletedItems.delete(t)),this.modelFullReset.add(t);else{if(this.modelFullReset.has(t))return;this.state==="clean"?this.state="tracking":this.state==="full-reset"&&(this.state="tracking"),e.type==="remove"?this.recordDeletedItems(t,e.data):this.recordChangedData(t,e.data)}}recordAttributeChange(e,t){this.changedAttributes.has(e)||this.changedAttributes.set(e,new Set),this.changedAttributes.get(e).add(t)}recordChangedData(e,t){this.changedAttributes.has(e)||this.changedAttributes.set(e,new Set),this.changedItems.has(e)||this.changedItems.set(e,new Set);const s=this.changedAttributes.get(e),n=this.changedItems.get(e);for(const o of t){o.key&&n.add(String(o.key));for(const i in o)i!=="key"&&s.add(i)}}recordDeletedItems(e,t){this.deletedItems.has(e)||this.deletedItems.set(e,new Set);const s=this.deletedItems.get(e);for(const n of t)n.key&&s.add(String(n.key))}getChangedAttributes(){return this.changedAttributes}getChangedAttributesForModel(e){return this.changedAttributes.get(e)}getChangedItems(e){return this.changedItems.get(e)||new Set}getDeletedItems(e){return this.deletedItems.get(e)||new Set}getModelsWithChanges(){const e=new Set;for(const t of this.changedAttributes.keys())e.add(t);for(const t of this.changedItems.keys())e.add(t);for(const t of this.deletedItems.keys())e.add(t);return Array.from(e)}getModelsWithFullReset(){return this.modelFullReset}hasFullReset(e){return this.modelFullReset.has(e)}hasChanges(){return this.changedAttributes.size>0||this.changedItems.size>0||this.deletedItems.size>0||this.modelFullReset.size>0}getTotalChangedItemCount(){let e=0;for(const t of this.changedItems.values())e+=t.size;return e}getAffectedModelRatio(e){return e===0?0:(this.getModelsWithChanges().length+this.modelFullReset.size)/e}getAffectedItemRatio(e,t){return t===0?0:this.getChangedItems(e).size/t}clear(){this.changedAttributes.clear(),this.changedItems.clear(),this.deletedItems.clear(),this.modelFullReset.clear(),this.state="clean"}requiresFullReset(){return this.state==="full-reset"}getState(){return this.state}getStats(){let e=0,t=0,s=0;for(const n of this.changedItems.values())e+=n.size;for(const n of this.deletedItems.values())t+=n.size;for(const n of this.changedAttributes.values())s+=n.size;return{modelsWithChanges:this.getModelsWithChanges().length,modelsWithFullReset:this.modelFullReset.size,totalChangedItems:e,totalDeletedItems:t,totalChangedAttributes:s}}},ph=class{metrics=[];enabled=!1;constructor(){}enable(){this.enabled=!0}disable(){this.enabled=!1}isEnabled(){return this.enabled}recordUpdate(e){this.enabled&&(this.metrics.push({...e,timestamp:Date.now()}),this.metrics.length>100&&this.metrics.shift())}getMetrics(){return[...this.metrics]}getSummary(){if(this.metrics.length===0)return{totalUpdates:0,partialUpdates:0,fullUpdates:0,avgPartialUpdateTime:0,avgFullUpdateTime:0,avgAttributesProcessed:0,avgModelsAffected:0,totalTimeSaved:0};const e=this.metrics.filter(l=>l.type==="partial"),t=this.metrics.filter(l=>l.type==="full"),s=e.length>0?e.reduce((l,c)=>l+c.durationMs,0)/e.length:0,n=t.length>0?t.reduce((l,c)=>l+c.durationMs,0)/t.length:0,o=e.length>0?e.reduce((l,c)=>l+(c.attributesProcessed||0),0)/e.length:0,i=e.length>0?e.reduce((l,c)=>l+(c.modelsAffected||0),0)/e.length:0,a=n>0?e.reduce((l,c)=>l+(n-c.durationMs),0):0;return{totalUpdates:this.metrics.length,partialUpdates:e.length,fullUpdates:t.length,avgPartialUpdateTime:s,avgFullUpdateTime:n,avgAttributesProcessed:o,avgModelsAffected:i,totalTimeSaved:a}}getLastUpdates(e=10){return this.metrics.slice(-e)}clear(){this.metrics=[]}getMetricsInRange(e,t){return this.metrics.filter(s=>s.timestamp>=e&&s.timestamp<=t)}};function yh(r){return"query"in r}function Pr(r){return"resolve"in r}function gh(r){return"derive"in r}function mh(r){return"groupBy"in r}var vh=Object.defineProperty,bh=Object.getOwnPropertyDescriptor,Mt=(r,e,t,s)=>{for(var n=bh(e,t),o=r.length-1,i;o>=0;o--)(i=r[o])&&(n=i(e,t,n)||n);return n&&vh(e,t,n),n};class nt{constructor(e,t,s){this.cdRef=e,this.qualityController=t,this.dcuplInstance=s,this.qualityController.modelParser=this}unprocessedModelDescriptions=new Map;unprocessedData=[];dependencyGraph;attributeDependencyGraph;changeTracker=new hh;partialUpdateMetrics=new ph;views=new Map;models=new Map;initOptions;calculationTimings=[];log=Ee.child({prefix:"ModelParser"});async init(){this.changeTracker.clear(),this.qualityController.enabled&&(this.qualityController.resetValidationErrors(),this.models.get("$DcuplErrorTrackingErrors")||this.qualityController.initErrorTrackingModels()),this.prepareModels(),this.qualityController.enabled&&this.validateModels(),this.initDependencyGraph(),this.buildAttributeDependencyGraph(),this.validateAttributeDependencyGraph();const e=this.getMergedContainers(this.unprocessedData);await this.connectDataWithModels(e),this.qualityController.enabled&&await this.qualityController.initData(),this.changeTracker.clear()}prepareModels(){this.unprocessedModelDescriptions.forEach(e=>{if(this.models.has(e.key))this.models.get(e.key).resetData(),this.models.get(e.key).resetIndexMap(),this.models.get(e.key).applyPropertiesAndReferences(e);else{const t=new fh(this);t.init(e),t.applyPropertiesAndReferences(e),this.models.set(t.key,t)}})}validateModels(){this.models.forEach(e=>{e.qualityConfig.enabled===!0&&nh(e,this.models).forEach(t=>{this.setError(t,e)})})}initDependencyGraph(){this.dependencyGraph=new Cn,this.models.forEach(t=>{this.dependencyGraph.addNode(t.key)}),this.models.forEach(t=>{t.getReferencesRelevantForDependencyGraph().forEach(s=>{t.key!==s.model&&(this.dependencyGraph.addNode(s.model),this.dependencyGraph.addDependency(t.key,s.model))})});const e=this.dependencyGraph.validateNoCycles();if(e.hasCycle){const t=e.path.join(" → ");throw this.log.error(`Circular dependency detected in model references: ${t}
5
+ `}executeScript(e,t,s){if(!this.getScript(e))throw new Error(`Script ${e} not found`);s.context||(s.context=s.options||{});const o=Object.keys(s),n=Object.values(s);return this.getScriptAsFn(e,o)(t,...n)}}const Rt=(r,e)=>r?(e||(e={}),r.replace(/\$\{(.*?)\}/g,(t,s)=>Xe(e,s.trim(),""))):"",Dr=r=>{const e=new Set;return r.replace(/\$\{(.*?)\}/g,(t,s)=>(e.add(s.trim()),"")),{variables:Array.from(e).map(t=>({name:t}))}};var Bf=er(function(r,e){return je(r)?po(r,Ss(e,1,je)):[]});let Vf=class{constructor(e,t,s,o,n){this.modelParser=e,this.cdRef=t,this.item=s,this.indicesController=o,this.queryManager=n,this.cacheCtrl=new xo(!!this.cdRef.dcuplInitOptions.performance?.cache?.enabled)}initialData;filteredData;model;filterItems=new Map;queryBuilder;cacheCtrl;projectionCache=new Map;init(e,t){this.model=e,this.initialData=t,this.filteredData=this.initialData,this.queryBuilder=new me,this.queryBuilder.init({modelKey:e.key}),this.initFilterItems({skipProcessing:!0})}indexDependsOnAttributes(e,t){const s=e.includes("_")?e.split("_")[0]:e;try{const o=P.parse(s);if(!o.isDeepQuery)return!1;const n=o.attribute.split(".");for(let i=0;i<n.length-1;i++)if(t.has(n[i]))return!0;return!1}catch{return!0}}invalidateAllCaches(e){this.cacheCtrl.clear(),this.projectionCache.clear();let t=0;if(e&&e.size>0){const o=this.indicesController.getDeepIndexKeys(),n=[];for(const i of o)this.indexDependsOnAttributes(i,e)&&n.push(i);for(const i of n)this.indicesController.reset(i);t=n.length}else{const o=this.indicesController.getIndexCount().deep;this.indicesController.resetAllDeepIndices(),t=o}const s=this.cdRef.dcuplInitOptions.logging;if(s&&s.level==="debug"){const o=this.indicesController.getIndexCount();console.debug("[Filter] Caches invalidated",{granular:e!==void 0,changedAttributes:e?Array.from(e):"all",deepIndicesReset:t,shallowIndicesPreserved:o.shallow,totalIndices:o.total})}}update(e,t,s){this.model=e,this.initialData=t,this.indicesController=s,this.invalidateAllCaches(),this.filteredData=this.getFilteredData(this.initialData,!1),this.initFilterItems({skipProcessing:!0})}updateWithChanges(e,t,s,o){this.model=e,this.initialData=t,this.indicesController=s,this.invalidateAllCaches(o),this.filteredData=this.getFilteredData(this.initialData,!1),this.initFilterItems({skipProcessing:!0})}resetCache(){this.invalidateAllCaches()}getDeepQueryAttributes(e){const t=new Set;if(!e||!e.queries)return[];for(const s of e.queries)if(s.queries)for(const o of s.queries)o.attribute&&P.parse(o.attribute).isDeepQuery&&t.add(o.attribute);return Array.from(t)}getProjectionForQuery(e){const t=this.getDeepQueryAttributes(e);if(t.length===0)return null;const s=t.map(o=>P.parse(o));return this.queryBuilder.getProjectionForAttributeEntries(s)}getProjectionCacheKey(e){const t=this.getDeepQueryAttributes(e);return t.length===0?"":t.sort().join("|")}getProjectedData(e,t,s){if(s&&this.projectionCache.has(s))return this.projectionCache.get(s);const o=new Map;for(const[n,i]of e){const a=this.item.getProjectedData(t,this.model,i);o.set(n,a)}return s&&this.projectionCache.set(s,o),o}initFilterItems(e){[...this.model.properties.values(),...this.model.references.values()].forEach(t=>{t.filter&&(Array.isArray(e?.filterKeys)?e?.filterKeys.includes(t.key)&&this.updateFilterItem(t.key,e):this.updateFilterItem(t.key,e))})}getAggregate(e,t,s){if(P.parse(e.attribute).isDeepQuery)return tt(e,t,s,e.attribute);{const o=this.model.getAttribute(e.attribute);if(!o)throw new Error("Attribute not found");return tt(e,t,s,o.key)}}getSections(e){const t={_meta:{currentSize:0,initialSize:0},items:[]},s=P.parse(e.attribute),o=s.isDeepQuery;let n;if(!o&&(n=this.model.getAttribute(e.attribute),!n))throw new Error("Attribute not found");let i=new Map,a;!o&&n&&(n.type==="singleValued"||n.type==="multiValued")&&(a=this.modelParser.models.get(n.model));const u={},c=this.getSortingProjectionForModel(e,this.model);u.sort=c;let l=this.item.getItemsAsMap(this.filteredData,this.model,u);if(o){const p=this.queryBuilder.getProjectionForAttributeEntries([s]),y=new Map;for(const[v,g]of l){const k=this.item.getProjectedData(p,this.model,g);y.set(v,k)}l=y}const d=this.indicesController.getOrCreateIndex(`${e.attribute}`,l,{childLevelSorting:c,query:this.queryBuilder.getQuery()}),f=this.getAggregate({attribute:e.attribute,types:["distinct"],excludeUndefineds:!0},l,d);if(f.distinct)for(const p of f.distinct){let y={key:p.value,value:p.value};const v=p.keys.filter(k=>l.has(k));if(a){const k=a.data.get(p.value);k&&(y=k)}const g={...y,key:p.value,_items:[],_aggregates:[],_meta:{size:v.length}};i.set(p.value,g)}const h={count:e.count,start:e.start,projection:e.projection};if(a){const p=this.getSortingProjectionForModel(e,a);h.sort=p}if(t._meta.currentSize=i.size,t._meta.initialSize=f.distinct.length,i=this.item.getItemsAsMap(i,a,h),Array.isArray(e?.aggregates)&&i.forEach(p=>{const y=f.distinct.find(g=>g.value===p.key),v=this.getDataByKeys(l,y.keys);p._aggregates=e.aggregates.map(g=>this.getAggregate(g,v,d))}),e?.items){const p=e.items?.find(y=>y.key==="*");p?i.forEach(y=>{const v=f.distinct.find(m=>m.value===y.key),g=this.getDataByKeys(l,v.keys),k=this.item.getItems(g,this.model,p);y._items=k}):i.forEach(y=>{const v=e.items?.find(g=>g.key===y.key);if(v){const g=f.distinct.find(M=>M.value===y.key),k=this.getDataByKeys(l,g.keys),m=this.item.getItems(k,this.model,v);y._items=m}})}return t.items=Array.from(i.values()),t}getSortingProjectionForModel(e,t){const s={attributes:[],order:[]};return e?.sort?.attributes.forEach((o,n)=>{if(t.properties.has(o)){s.attributes.push(o);const i=e.sort?.order;s.order.push(i[n])}}),s}getReferenceKeyForFilterKey(e){const t=this.filterItems.get(e);return t?.attributeKey||t?.key||e}updateFilterItem(e,t={}){const s={calculateFacets:!1,excludeZeros:!0,excludeUndefineds:!0,excludeUnresolved:!0,skipProcessing:!1},o=this.getReferenceKeyForFilterKey(e);if(!o)return;const n=this.model.references.get(o);let i={};if(typeof n?.filter=="object"?i=Object.assign(s,n.filter,t):i=Object.assign(s,t),n){this.updateFilterItemReference(n.key,n.key,i);return}const a=this.model.properties.get(o);if(a)if(Array.isArray(a.filter)){a.filter.forEach(u=>{const c=u?.comparisonType||"containsIgnoreCase";this.updateFilterItemProperty(u.key,a.key,a.type,c,i)});return}else{const u=a.filter?.comparisonType||"containsIgnoreCase";this.updateFilterItemProperty(a.key,a.key,a.type,u,i);return}if(e==="key"){this.updateFilterItemProperty("key","key","string","containsIgnoreCase",i);return}}updateFilterItemReference(e,t,s){let o=[];const n=this.model.references.get(t);if(n&&!s.skipProcessing){const a=this.modelParser.models.get(n.model);o=this.getFacets(n.key,a,s)}const i={key:e,attributeKey:t,enabled:!!o.find(a=>a.enabled),selected:!!o.find(a=>a.selected),type:"reference",entries:o};this.filterItems.set(i.key,i)}updateFilterItemProperty(e,t,s,o,n){const i=this.getFilterTypeForPropertyType(s),a=this.queryBuilder.hasQueryGroup(e),u={key:e,attributeKey:t,enabled:!0,selected:!!a,type:i};if(u.type==="text"&&(u.comparisonType=o),u.type==="boolean"){const c=this.getFacets(u.attributeKey,void 0,n);u.entries=c}n.skipProcessing||(u.type==="number"&&(u.range=this.getNumberRangesForFilterItem(u)),u.type==="date"&&(u.range=this.getDateRangesForFilterItem(u))),this.filterItems.set(u.key,u)}getNumberRange(e,t=e){let s=1/0,o=-1/0;for(const a of this.filteredData.values()){const u=a[e];if(!(typeof u>"u"||u===null))if(Array.isArray(u))for(const c of u)typeof c=="number"&&(c<s&&(s=c),c>o&&(o=c));else typeof u=="number"&&(u<s&&(s=u),u>o&&(o=u))}let n=1/0,i=-1/0;for(const a of this.initialData.values()){const u=a[e];if(!(typeof u>"u"||u===null))if(Array.isArray(u))for(const c of u)typeof c=="number"&&(c<n&&(n=c),c>i&&(i=c));else typeof u=="number"&&(u<n&&(n=u),u>i&&(i=u))}return s===1/0&&(s=0),o===-1/0&&(o=0),n===1/0&&(n=0),i===-1/0&&(i=0),{available:{min:s,max:o},initial:{min:n,max:i},relatedQuery:this.queryBuilder.getQueryGroup(t)}}getNumberRangesForFilterItem(e){return this.getNumberRange(e.attributeKey,e.key)}getDateRangesForFilterItem(e){return this.getDateRange(e.attributeKey,e.key)}getDateRange(e,t=e){let s=null,o=null;for(const u of this.filteredData.values()){const c=u[e];if(typeof c>"u"||c===null)continue;const l=Array.isArray(c)?c:[c];for(const d of l)d instanceof Date&&((!s||d<s)&&(s=d),(!o||d>o)&&(o=d))}let n=null,i=null;for(const u of this.initialData.values()){const c=u[e];if(typeof c>"u"||c===null)continue;const l=Array.isArray(c)?c:[c];for(const d of l)d instanceof Date&&((!n||d<n)&&(n=d),(!i||d>i)&&(i=d))}const a=new Date;return s||(s=a),o||(o=a),n||(n=a),i||(i=a),{available:{min:s,max:o},initial:{min:n,max:i},relatedQuery:this.queryBuilder.getQueryGroup(t)}}getFacets(e,t,s,o){let n;const i=this.cacheCtrl.generateContext({attributeKey:e,query:this.queryBuilder.getQuery(),options:s}),a=this.cacheCtrl.get("facets",i);if(a)return a;let u=new Map;n=this.indicesController.getIndex(e),t?u=t.getData():u=this.indicesController.getData(e);let c=o||this.initialData;if(!o){const d=this.queryBuilder.getQueryAttributeForString(e);if(d.isDeepQuery){const f=this.queryBuilder.getProjectionForAttributeEntries([d]);c=this.item.getItemsAsMap(c,this.model,{projection:f})}}if(!n||!u){this.indicesController.reset(e);const d=P.parse(e),f=d.isDeepQuery;let h=c;if(f){const p=this.queryBuilder.getProjectionForAttributeEntries([d]);h=new Map;for(const[y,v]of c){const g=this.item.getProjectedData(p,this.model,v);h.set(y,g)}}h.forEach(p=>{let y;f?(y=ge(p,e),y.length===0&&(y=[void 0])):y=[p[e]],this.indicesController.fillInverseIndex(e,p.key,y),this.indicesController.fillDataMap(e,y)}),n=this.indicesController.getIndex(e),u=this.indicesController.getData(e)}const l=Df(c,u,s,this.queryBuilder.getQuery(),e,this.indicesController.indexMap,this.queryManager);return this.cacheCtrl.set("facets",i,l,{models:new Set([this.model.key]),modelAttributes:new Map([[this.model.key,new Set([e])]])}),l}getDataByKeys(e,t){if(t){const s=new Map;return t.forEach(o=>{const n=e.get(o);n&&s.set(n.key,n)}),s}return e}getFilterTypeForPropertyType(e){switch(e){case"string":return"text";case"int":return"number";case"float":return"number";case"date":return"date";case"boolean":return"boolean";case"json":return"text";case"any":return"text";case"Array<string>":return"text";case"Array<int>":return"number";case"Array<float>":return"number";case"Array<date>":return"date"}}updateFilteredData(e){const t=ye.now();e?.skipProcessing||(this.filteredData=this.getFilteredData(this.initialData,!1),this.cdRef.trigger({scope:"list",type:"result_updated",action:"update",connectMessage:!0,listKey:this.cdRef.key,modelKey:this.model.key,start:t}))}getFilteredData(e,t){const s=this.cacheCtrl.generateContext({query:this.queryBuilder.getQuery(),earlyReturn:t}),o=this.cacheCtrl.get("data",s);if(o)return o;const n=this.queryBuilder.getQuery(),i=this.getProjectionForQuery(n);let a;if(i){const u=this.getProjectionCacheKey(n),c=this.getProjectedData(e,i,u),l=this.queryManager.queryData(c,n,t,this.indicesController.indexMap);a=new Map;for(const d of l.keys())e.has(d)&&a.set(d,e.get(d))}else a=this.queryManager.queryData(e,n,t,this.indicesController.indexMap);return this.cacheCtrl.set("data",s,a,{models:new Set([this.model.key]),modelAttributes:new Map}),a}getFilterItems(e){if(Array.isArray(e?.filterKeys)){const t=[];return e?.filterKeys.forEach(s=>{const o=this.getFilterItem(s,e);o&&t.push(o)}),t}else return e?.skipProcessing||this.initFilterItems(e),Array.from(this.filterItems.values())}getFilterItem(e,t){return this.filterItems.has(e)&&(t?.skipProcessing||this.updateFilterItem(e,t)),this.filterItems.get(e)}},Fo=class{constructor(e,t){this.modelParser=e,this.scriptController=t}getItem(e,t,s,o){const n=o?.projection||{$:!0},i=t.get(e);return i?this.getProjectedData(n,s,i):null}getManyItems(e,t,s,o){const n=[];for(const i of e){const a=o?.projection||{$:!0},u=t.get(i);if(!u)continue;const c=this.getProjectedData(a,s,u);n.push(c)}return n}getItems(e,t,s){const o=this.getItemsAsMap(e,t,s);return Array.from(o.values())}getItemsAsMap(e,t,s){const o=s?.start||0,n=s?.count||e.size,i=s?.projection||{$:!0};return this.isValidSortProjection(s?.sort)&&(e=this.getSortedItems(e,s,t)),this.isValidScriptSorting(s?.sort)&&(e=this.getSortedItemsBasedOnScript(e,s)),this.getPagedData(e,o,n,i,t)}getSortedItemsBasedOnScript(e,t){const s=Array.from(e.values()),o=t?.sort?.script?.key||"",n=t?.sort?.script?.options||void 0;if(!this.scriptController.hasScript(o))return e;const i=this.scriptController.executeScript(o,"sort",{options:n,items:s});return new Map(i.map(a=>[a.key,a]))}getSortedItems(e,t,s){const o=[...t.sort.attributes],n=Array.from(e.values()),i=(l,d,f)=>{const h=l[d];return typeof h>"u"||h===null?f:typeof h=="string"?h.toLowerCase():typeof h=="object"&&typeof h?.key=="string"?h.key.toLowerCase():h},a=o.map((l,d)=>f=>{const h=t.sort.order.at(d),p=this.getUndefinedValueForSorting(l,h,s);return i(f,l,p)}),u=[...t.sort.order].map(l=>l.toLowerCase()),c=vo(n,[...a],u);return new Map(c.map(l=>[l.key,l]))}getUndefinedValueForSorting(e,t,s){const o=s?.properties.get(e);if(o){if(o.type==="string"){if(t=="ASC")return;if(t=="DESC")return""}if(o.type==="int"||o.type==="float"||o.type==="date"||o.type==="boolean"){if(t=="ASC")return 1/0;if(t=="DESC")return-1/0}}}isValidProjection(e){return!(!e||e.$===!0&&Object.keys(e).length===1)}getPagedData(e,t,s,o,n){const i=e.entries(),a=new Map;if(t===0&&s===e.size&&o?.$===!0&&Object.keys(o).length===1)return e;for(let u=0;u<t+s;u++){if(u<t){i.next();continue}if(u>t+s)break;const c=i.next().value;if(c)if(n&&o&&this.isValidProjection(o)){const l=this.getProjectedData(o,n,c[1]);a.set(c[0],l)}else a.set(c[0],c[1])}return a}isValidScriptSorting(e){return!(!e||!e.script)}isValidSortProjection(e){const t=["ASC","DESC"];return!(!e||!Array.isArray(e.attributes)||e.attributes.length===0||!Array.isArray(e.order)||e.attributes.length!==e.order.length||Bf(e.order,t).length>0)}getProjectedData(e,t,s){let o={key:s.key};return e.$===!0&&(o=Object.assign({},s)),e.$$===!0&&(o=Object.assign({},s),t.references.forEach(n=>{e[n.key]||(e[n.key]={$:!0})})),Object.keys(e).filter(n=>n!=="$"&&n!=="$$").forEach(n=>{const i=e[n];if(i===!1){delete o[n];return}if(i===!0){o[n]=s[n];return}if(typeof i=="object"){const a=t.references.get(n);if(a){const u=this.modelParser.models.get(a.model);if(u){if(a.type==="multiValued"){const c=s[n]||[];o[n]=c.map(l=>{const d=typeof l=="string"?l:l.key,f=u.getEntry(d);return f?this.getProjectedData(i,u,f):this.modelParser.initOptions.referenceMetadata?.enabled?{key:d,_dcupl_ref_:"miss"}:null}).filter(Boolean)}else if(a.type==="singleValued"){const c=s[n];if(c){const l=typeof c=="string"?c:c.key,d=u?.getEntry(l);d?o[n]=this.getProjectedData(i,u,d):this.modelParser.initOptions.referenceMetadata?.enabled?o[n]={key:l,_dcupl_ref_:"miss"}:delete o[n]}}}}}}),o}};var Gf=Object.defineProperty,Uf=Object.getOwnPropertyDescriptor,T=(r,e,t,s)=>{for(var o=Uf(e,t),n=r.length-1,i;n>=0;n--)(i=r[n])&&(o=i(e,t,o)||o);return o&&Gf(e,t,o),o};let j=class{constructor(e,t,s){this.dcuplApi=e,this.cdRef=t,this.indicesController=s,this.itemService=new Fo(this.dcuplApi.modelParser,this.dcuplApi.scriptController),this.filter=new Vf(this.dcuplApi.modelParser,this.cdRef,this.itemService,this.indicesController,this.dcuplApi.queryManager)}metadata;model;filter;itemService;log=Se.child({prefix:"Catalog"});initListeners(){this.initListMetadata()}initListMetadata(){this.metadata={key:this.model.key,currentSize:this.filter.filteredData.size,initialSize:this.filter.initialData.size,attributes:this.getModelAttributes(),views:this.getViews(),appliedQuery:this.filter.queryBuilder.getQuery()}}getModelAttributes(){return[...this.model.references.values(),...this.model.properties.values()]}query={apply:(e,t)=>this.applyQuery(e,t),applyOptions:(e,t)=>this.applyOptions(e,t),remove:e=>this.removeQuery(e),reset:(e={skipProcessing:!1})=>this.resetQuery(e),execute:e=>this.executeQuery(e),one:e=>this._getItem(e),many:e=>this._getManyItems(e),get:()=>this.getQuery(),has:e=>this.hasGroupOrQueryKey(e),addCondition:(e,t)=>this.applyQuery(e,{mode:"add",skipProcessing:t?.skipProcessing}),setCondition:(e,t)=>this.applyQuery(e,{mode:"set",skipProcessing:t?.skipProcessing}),addGroup:(e,t)=>this.applyQuery(e,{mode:"add",skipProcessing:t?.skipProcessing}),setGroup:(e,t)=>this.applyQuery(e,{mode:"set",skipProcessing:t?.skipProcessing}),removeCondition:(e,t)=>{if(Array.isArray(e)){for(const s of e)this.removeQuery(s,t);return this.getQuery()}return this.removeQuery(e,t)},removeGroup:(e,t)=>this.removeQuery({groupKey:e},t),clear:e=>this.resetQuery(e),current:()=>this.getQuery(),isEmpty:()=>this.getQuery().queries.length===0,items:e=>this.executeQuery(e),first:e=>{const t=e?{...e,count:1}:{count:1};return this.executeQuery(t)[0]},any:e=>{const t=e?{...e,count:1}:{count:1};return this.executeQuery(t).length>0},count:e=>this.executeQuery(e).length};filters={get:e=>this.getFilter(e),getAll:e=>this.getFilters(e)};fn={pivot:e=>this._getPivot(e),aggregate:e=>this.getAggregate(e),suggest:e=>this._getSuggestions(e),groupBy:e=>this._getSections(e),facets:e=>this._getFacets(e),metadata:()=>this._getMetadata()};getViews(){const e=[];return this.filter.modelParser.views.forEach(t=>{t.model===this.model.key&&e.push(t)}),e}_getMetadata(){return this.initListMetadata(),this.metadata}getFilters(e){return this._getFilters(e)}_getFilters(e){const t=this.filter.getFilterItems(e);return e?.filterKeys?e.filterKeys.map(s=>{const o=t.find(n=>n.key===s);return o||this.log.error("Filter not found",void 0,{filterKey:s,model:this.model.key}),o}).filter(Boolean):t}getFilter(e){return this._getFilter(e)}_getFilter(e){return this.filter.getFilterItem(e.filterKey,e)}getQuery(){return this.filter.queryBuilder.getQuery()}hasGroupOrQueryKey(e){return this.filter.queryBuilder.has(e)}applyQuery(e,t){const s=this.filter.queryBuilder.applyQuery(e,t);return this.filter.updateFilteredData({skipProcessing:t?.skipProcessing}),s}applyOptions(e,t){const s=this.filter.queryBuilder.applyOptions(e,t?.mode);return this.filter.updateFilteredData({skipProcessing:t?.skipProcessing}),s}removeQuery(e,t){let s;return e?s=this.filter.queryBuilder.removeQuery(e):s=this.filter.queryBuilder.removeAllQueries(),this.filter.updateFilteredData({skipProcessing:t?.skipProcessing}),s}resetQuery(e){const t=this.filter.queryBuilder.reset();return this.filter.updateFilteredData({skipProcessing:e?.skipProcessing}),t}executeQuery(e){if(!e)e=this.filter.queryBuilder.getQuery();else if(!e.queries){const i=this.filter.queryBuilder.getQuery();e=Object.assign({},i,e)}const t=this.filter.cacheCtrl.generateContext({options:e});if(this.filter.cacheCtrl.has("query",t))return this.filter.cacheCtrl.get("query",t);const s=Object.assign({},e,{modelKey:this.model.key}),o=this.dcuplApi.queryManager.queryData(this.filter.filteredData,s,!1,this.filter.indicesController.indexMap),n=this.itemService.getItems(o,this.model,e);return this.filter.cacheCtrl.set("query",t,n),n}_getSections(e){const t=this.filter.cacheCtrl.generateContext({options:e,query:this.filter.queryBuilder.getQuery()});if(this.filter.cacheCtrl.has("sections",t))return this.filter.cacheCtrl.get("sections",t);const s=this.filter.getSections(e);return this.filter.cacheCtrl.set("sections",t,s),s}_getItem(e){return this.itemService.getItem(e.itemKey,this.filter.filteredData,this.model,e)}_getManyItems(e){return this.itemService.getManyItems(e.itemKeys,this.filter.filteredData,this.model,e)}_getSuggestions(e){typeof e.excludeUndefineds>"u"&&(e.excludeUndefineds=!0),typeof e.excludeNulls>"u"&&(e.excludeNulls=!0),typeof e.calculateResultKeys>"u"&&(e.calculateResultKeys=!0);const t=this.filter.cacheCtrl.generateContext({options:e,query:this.filter.queryBuilder.getQuery()});if(this.filter.cacheCtrl.has("suggestions",t))return this.filter.cacheCtrl.get("suggestions",t);const s=P.parse(e.attribute).isDeepQuery;if(!s&&!this.model.getAttribute(e.attribute))throw new Error(`Attribute ${e.attribute} does not exist`);if(typeof e.value=="string"&&e.value.startsWith("/")&&e.value.endsWith("/"))try{new RegExp(e.value.slice(1,-1))}catch{return[]}let o,n;if(e.relevantData==="all")o=this.filter.initialData,n={modelKey:this.model.key,queries:[]};else if(e.relevantData==="filtered")o=this.filter.filteredData,n=this.filter.queryBuilder.getQuery();else if(e.relevantData==="excludeQuery"&&e.excludeQuery){const c=new me;c.init(this.filter.queryBuilder.getQuery()),c.removeQuery(e.excludeQuery),n=c.getQuery(),o=this.dcuplApi.queryManager.queryData(this.filter.initialData,n,!1,this.filter.indicesController.indexMap)}else o=this.filter.filteredData,n=this.filter.queryBuilder.getQuery();let i=o;if(s){const c=P.parse(e.attribute),l=this.filter.queryBuilder.getProjectionForAttributeEntries([c]),d=new Map;for(const[f,h]of o){const p=this.filter.item.getProjectedData(l,this.model,h);d.set(f,p)}i=d}const a=this.filter.indicesController.getOrCreateIndex(e.attribute,i,{query:n}),u=cf(i,a,e,this.dcuplApi.queryManager);return this.filter.cacheCtrl.set("suggestions",t,u),u}_getFacets(e){const t=this.filter.cacheCtrl.generateContext({options:e,query:this.filter.queryBuilder.getQuery()});if(this.filter.cacheCtrl.has("facets",t))return this.filter.cacheCtrl.get("facets",t);const s=P.parse(e.attribute).isDeepQuery;let o;if(!s){const i=this.model.references.get(e.attribute);i&&(o=this.filter.modelParser.models.get(i.model))}let n;if(s){const i=P.parse(e.attribute),a=this.filter.queryBuilder.getProjectionForAttributeEntries([i]);n=new Map;for(const[u,c]of this.filter.filteredData){const l=this.filter.item.getProjectedData(a,this.model,c);n.set(u,l)}}return this.computeFacetsInternal(e,o,t,n)}computeFacetsInternal(e,t,s,o){typeof e.excludeZeros>"u"&&(e.excludeZeros=!0),typeof e.excludeUndefineds>"u"&&(e.excludeUndefineds=!0),typeof e.excludeUnresolved>"u"&&(e.excludeUnresolved=!0),typeof e.calculateResults>"u"&&(e.calculateResults=!0);const n=this.filter.getFacets(e.attribute,t,{calculateFacets:e.calculateResults,count:e.count,excludeZeros:e.excludeZeros,excludeUndefineds:e.excludeUndefineds,excludeUnresolved:e.excludeUnresolved,sort:e.sort,skipProcessing:!1},o);return this.filter.cacheCtrl.set("facets",s,n),n}getAggregate(e){const t=this.filter.cacheCtrl.generateContext({options:e,query:this.filter.queryBuilder.getQuery()});if(this.filter.cacheCtrl.has("aggregation",t))return this.filter.cacheCtrl.get("aggregation",t);const s=P.parse(e.attribute);let o=this.filter.filteredData;if(s.isDeepQuery){const i=this.filter.queryBuilder.getProjectionForAttributeEntries([s]),a=new Map;for(const[u,c]of this.filter.filteredData){const l=this.filter.item.getProjectedData(i,this.model,c);a.set(u,l)}o=a}const n=this.filter.getAggregate(e,o,this.filter.indicesController.getOrCreateIndex(e.attribute,o,this.filter.queryBuilder.getQuery()));return this.filter.cacheCtrl.set("aggregation",t,n),n}_getPivot(e){if(!e||!Array.isArray(e.columns)||!Array.isArray(e.rows)||!e.values||!e.values.length)return this.log.error("Invalid pivot options",void 0,{model:this.model.key}),{key:"invalid_options"};const t=this.filter.cacheCtrl.generateContext({options:e,query:this.filter.queryBuilder.getQuery()});if(this.filter.cacheCtrl.has("pivot",t))return this.filter.cacheCtrl.get("pivot",t);let s=new Mt;this.filter.filteredData.size===this.filter.initialData.size&&(s=this.filter.indicesController);const o=[...e.rows.map(a=>a.attribute),...e.columns.map(a=>a.attribute),...e.values.map(a=>a.attribute)].map(a=>P.parse(a)).filter(a=>a.isDeepQuery);let n;if(o.length>0){const a=this.filter.queryBuilder.getProjectionForAttributeEntries(o);n=new Map;for(const[u,c]of this.filter.filteredData){const l=this.filter.item.getProjectedData(a,this.model,c);n.set(u,l)}}const i=$r(this.filter.filteredData,e,{key:"root"},"root",s,n);return this.filter.cacheCtrl.set("pivot",t,i),i}};T([b({scope:"list",type:"fn_metadata",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],j.prototype,"_getMetadata"),T([b({scope:"list",type:"filter_many",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],j.prototype,"_getFilters"),T([b({scope:"list",type:"filter_one",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],j.prototype,"_getFilter"),T([b({scope:"list",type:"query_get",cloneResult:!0})],j.prototype,"getQuery"),T([b({scope:"list",type:"query_has"})],j.prototype,"hasGroupOrQueryKey"),T([b({scope:"list",type:"query_apply",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],j.prototype,"applyQuery"),T([b({scope:"list",type:"query_apply_options",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],j.prototype,"applyOptions"),T([b({scope:"list",type:"query_remove",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],j.prototype,"removeQuery"),T([b({scope:"list",type:"query_reset",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],j.prototype,"resetQuery"),T([b({scope:"list",type:"query_execute",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],j.prototype,"executeQuery"),T([b({scope:"list",type:"fn_groupBy",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],j.prototype,"_getSections"),T([b({scope:"list",type:"query_one",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],j.prototype,"_getItem"),T([b({scope:"list",type:"query_many",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],j.prototype,"_getManyItems"),T([b({scope:"list",type:"fn_suggest",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],j.prototype,"_getSuggestions"),T([b({scope:"list",type:"fn_facets",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],j.prototype,"_getFacets"),T([b({scope:"list",type:"fn_aggregate",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],j.prototype,"getAggregate"),T([b({scope:"list",type:"fn_pivot",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],j.prototype,"_getPivot");let Nf=class extends j{constructor(e,t,s){super(e,t,s),this.dcuplApi=e,this.cdRef=t,this.indicesController=s}listKey;init(e,t,s){this.listKey=e,this.model=t,this.filter.init(t,s),super.initListeners()}update(e,t,s){this.model=e,this.filter.update(e,t,s)}};function zf(r,e){var t=-1,s=r.length;for(e||(e=Array(s));++t<s;)e[t]=r[t];return e}function Lf(r,e,t,s){var o=!t;t||(t={});for(var n=-1,i=e.length;++n<i;){var a=e[n],u=void 0;u===void 0&&(u=r[a]),o?At(t,a,u):gs(t,a,u)}return t}function Wf(r,e,t){if(!z(t))return!1;var s=typeof e;return(s=="number"?ee(t)&&Yt(e,t.length):s=="string"&&e in t)?Ue(t[e],r):!1}function Hf(r){return er(function(e,t){var s=-1,o=t.length,n=o>1?t[o-1]:void 0,i=o>2?t[2]:void 0;for(n=r.length>3&&typeof n=="function"?(o--,n):void 0,i&&Wf(t[0],t[1],i)&&(n=o<3?void 0:n,o=1),e=Object(e);++s<o;){var a=t[s];a&&r(e,a,s,n)}return e})}function Jf(r){var e=[];if(r!=null)for(var t in Object(r))e.push(t);return e}var Zf=Object.prototype,Xf=Zf.hasOwnProperty;function Yf(r){if(!z(r))return Jf(r);var e=rr(r),t=[];for(var s in r)s=="constructor"&&(e||!Xf.call(r,s))||t.push(s);return t}function qo(r){return ee(r)?Ds(r,!0):Yf(r)}var ep="[object Object]",tp=Function.prototype,rp=Object.prototype,Qo=tp.toString,sp=rp.hasOwnProperty,op=Qo.call(Object);function np(r){if(!K(r)||Y(r)!=ep)return!1;var e=Ms(r);if(e===null)return!0;var t=sp.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&Qo.call(t)==op}function ip(r,e,t,s){for(var o=-1,n=r==null?0:r.length;++o<n;){var i=r[o];e(s,i,t(i),r)}return s}function ap(r,e,t,s){return yr(r,function(o,n,i){e(s,o,t(o),i)}),s}function up(r,e){return function(t,s){var o=E(t)?ip:ap,n={};return o(t,r,Ee(s),n)}}function _r(r,e,t){(t!==void 0&&!Ue(r[e],t)||t===void 0&&!(e in r))&&At(r,e,t)}function Pr(r,e){if(!(e==="constructor"&&typeof r[e]=="function")&&e!="__proto__")return r[e]}function cp(r){return Lf(r,qo(r))}function lp(r,e,t,s,o,n,i){var a=Pr(r,t),u=Pr(e,t),c=i.get(u);if(c){_r(r,t,c);return}var l=n?n(a,u,t+"",r,e,i):void 0,d=l===void 0;if(d){var f=E(u),h=!f&&ze(u),p=!f&&!h&&or(u);l=u,f||h||p?E(a)?l=a:je(a)?l=zf(a):h?(d=!1,l=Fs(u,!0)):p?(d=!1,l=Ls(u,!0)):l=[]:np(u)||Ne(u)?(l=a,Ne(a)?l=cp(a):(!z(a)||Jt(a))&&(l=Ws(u))):d=!1}d&&(i.set(u,l),o(l,u,s,n,i),i.delete(u)),_r(r,t,l)}function Bo(r,e,t,s,o){r!==e&&fo(e,function(n,i){if(o||(o=new L),z(n))lp(r,e,i,t,Bo,s,o);else{var a=s?s(Pr(r,i),n,i+"",r,e,o):void 0;a===void 0&&(a=n),_r(r,i,a)}},qo)}var dp=Object.prototype,fp=dp.hasOwnProperty,xr=up(function(r,e,t){fp.call(r,t)?r[t].push(e):At(r,t,[e])}),pp="[object Boolean]";function hp(r){return r===!0||r===!1||K(r)&&Y(r)==pp}var st=Hf(function(r,e,t){Bo(r,e,t)});const B=(r,e,t)=>({title:r,type:"model",errorGroup:"ModelDefinitionError",errorType:"InvalidModelDefinition",attribute:e,description:t}),yp=r=>{const e=["any","Array<date>","Array<float>","Array<int>","Array<string>","boolean","date","float","int","json","string"];if(!r.key)return B("Invalid Property",r.key,"Property key is missing");if(!r.type||e.indexOf(r.type)===-1)return B("Invalid Property",r.key,"Property type is invalid");if("derive"in r){if(!r.derive?.localReference)return B("Invalid Property",r.key,"Derived Property localReference is missing");if(!r.derive.remoteProperty)return B("Invalid Property",r.key,"Derived Property remoteProperty is missing")}if("expression"in r&&typeof r.expression!="string")return B("Invalid Property",r.key,"Expression is invalid")},gp=r=>{const e=["multiValued","singleValued"];if(!r.key)return B("Invalid Reference",r.key,"Reference key is missing");if(!r.type||e.indexOf(r.type)===-1)return B("Invalid Reference",r.key,"Reference type is invalid");if(!r.model)return B("Invalid Reference",r.key,"Reference model is missing");if("derive"in r){if(!r.derive.localReference)return B("Invalid Reference",r.key,"Derived Reference localReference is missing");if(!r.derive.remoteReference)return B("Invalid Reference",r.key,"Derived Reference remoteReference is missing")}if("resolve"in r){if(!r.resolve.reference)return B("Invalid Reference",r.key,"Resolved Reference reference is missing");if(!r.resolve.model)return B("Invalid Reference",r.key,"Resolved Reference model is missing")}if("groupBy"in r&&!r.groupBy.reference)return B("Invalid Reference",r.key,"Grouped Reference reference is missing")},mp=r=>{if(typeof r.key!="string"||r.key.length===0)throw new Error("Invalid Model: key must be a non-empty string");if(typeof r.keyProperty<"u"){const e=r.keyProperty,t=typeof e=="string"&&e.length>0,s=Array.isArray(e)&&e.length>0&&e.every(o=>typeof o=="string"&&o.length>0);if(!t&&!s)throw new Error("Invalid Model: keyProperty must be a non-empty string or a non-empty array of non-empty strings")}if(typeof r.keyPropertySeparator<"u"&&(typeof r.keyPropertySeparator!="string"||r.keyPropertySeparator.length===0))throw new Error("Invalid Model: keyPropertySeparator must be a non-empty string");if(typeof r.autoGenerateKey<"u"&&typeof r.autoGenerateKey!="boolean")throw new Error("Invalid Model: autoGenerateKey must be a boolean");if(typeof r.autoGenerateProperties<"u"){const e=r.autoGenerateProperties;if(typeof e!="boolean"){if(typeof e!="object"||e===null||Array.isArray(e))throw new Error("Invalid Model: autoGenerateProperties must be a boolean or an options object");if(typeof e.deep<"u"&&typeof e.deep!="boolean")throw new Error("Invalid Model: autoGenerateProperties.deep must be a boolean");if(typeof e.sampleSize<"u"&&(typeof e.sampleSize!="number"||!Number.isFinite(e.sampleSize)||e.sampleSize<1))throw new Error("Invalid Model: autoGenerateProperties.sampleSize must be a positive number")}}if(r.properties&&!Array.isArray(r.properties))throw new Error("Invalid Model: properties must be an array");if(r.references&&!Array.isArray(r.references))throw new Error("Invalid Model: references must be an array");return!0},vp=(r,e)=>{const t=[];return r.references.forEach(s=>{e.has(s.model)||t.push({title:"Missing Model",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingModel",attribute:s.key,model:r.key,description:`Referenced model ${s.model} does not exist`}),"derive"in s&&t.push(...bp(s,r,e)),"resolve"in s&&t.push(...kp(s,r,e)),"groupBy"in s&&t.push(...wp(s,r))}),r.properties.forEach(s=>{"derive"in s&&t.push(...Ap(s,r,e)),"expression"in s&&t.push(...Cp(s,r))}),t},bp=(r,e,t)=>{const s=[],o=e.references.get(r.derive.localReference);if(!o)return s.push({title:"Missing Reference",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingReference",attribute:r.key,model:e.key,description:`Local Referenced ${r.derive.localReference} does not exist in model ${e.key}`}),s;const n=t.get(o.model);return n&&(n.references.get(r.derive.remoteReference)||s.push({title:"Missing Reference",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingReference",attribute:r.key,model:e.key,description:`Remote Reference ${r.derive.remoteReference} does not exist in model ${n.key}`})),s},kp=(r,e,t)=>{const s=[],o=t.get(r.resolve.model);return o?(o.references.get(r.resolve.reference)||s.push({title:"Missing Reference",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingReference",attribute:r.key,model:e.key,description:`Resolved Reference ${r.resolve.reference} does not exist in model ${o.key}`}),s):(s.push({title:"Missing Model",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingModel",attribute:r.key,model:e.key,description:`Referenced model ${r.model} does not exist`}),s)},wp=(r,e)=>{const t=[];return e.references.get(r.groupBy.reference)||t.push({title:"Missing Reference",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingReference",attribute:r.key,model:e.key,description:`Resolved Reference ${r.groupBy.reference} does not exist in model ${e.key}`}),t},Ap=(r,e,t)=>{const s=[],o=e.references.get(r.derive.localReference);if(!o)return s.push({title:"Missing Reference",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingReference",attribute:r.key,model:e.key,description:`Local Referenced ${r.derive.localReference} does not exist in model ${e.key}`}),s;const n=t.get(o.model);if(n){if(r.derive.remoteProperty==="key")return s;n.properties.get(r.derive.remoteProperty)||s.push({title:"Missing Property",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingProperty",attribute:r.key,model:e.key,description:`Remote Property ${r.derive.remoteProperty} does not exist in model ${n.key}`})}return s},Cp=(r,e)=>{const t=[];return Dr(r.expression).variables.forEach(s=>{s.name==="key"||s.name.endsWith(".key")||!e.properties.get(s.name)&&!e.references.get(s.name)&&t.push({title:"Unknown Expression Variable",type:"model",errorGroup:"ModelDefinitionError",errorType:"UnknownExpressionVariable",attribute:r.key,model:e.key,description:`Expression Variable ${s.name} not found in expression ${r.key} in ${e.key}`})}),t},ot="::";function $p(r){return typeof r=="string"?[r]:Array.isArray(r)?r:[]}function Vo(r,e,t=ot){return typeof e=="string"?String(r[e]):e.length===1?String(r[e[0]]):e.map(s=>String(r[s])).join(t)}function Dp(r,e=ot){if(r!==void 0)return typeof r=="string"?r:r.join(e)}const _p={REF_VALUE:"_dcupl_ref_"},Pp={required:!0,forceStrictDataType:!1,nullable:!1,validatorHandling:"loose"},Er={enabled:!0,attributes:Pp};let xp=class{constructor(e){this.modelParser=e,this.cdRef=e.cdRef}properties=new Map;references=new Map;attributeQualityConfigs=new Map;key;log=Se.child({prefix:"Model"});initialDefinition;data=new Map;supportsAutoCreation=!1;autoGenerateKey=!1;autoGenerateProperties=!1;autoGeneratePropertiesOption=!1;keyProperty="key";keyPropertySeparator;valueMappings=[];meta;qualityConfig=Er;indicesController=new Mt;cdRef;groupedRefReverseIndex=new Map;init(e){this.key=e.key,this.initialDefinition=e,e.quality&&(this.qualityConfig=st({},Er,e.quality))}applyPropertiesAndReferences(e){e.properties?.map(t=>{const s=yp(t);s?(s.model=this.key,this.setError(s)):(this.setAttributeQualityConfig(t),this.properties.set(t.key,t))}),e.references?.map(t=>{const s=gp(t);s?(s.model=this.key,this.setError(s)):(t.validity=t.validity||"loose",this.setAttributeQualityConfig(t),this.references.set(t.key,t))}),this.supportsAutoCreation=!!e.supportsAutoCreation,this.keyProperty=e.keyProperty||"key",this.keyPropertySeparator=e.keyPropertySeparator,this.autoGenerateKey=!!e.autoGenerateKey,this.autoGenerateProperties=!!e.autoGenerateProperties,this.autoGeneratePropertiesOption=e.autoGenerateProperties??!1,this.valueMappings=e.valueMappings||[],this.meta=e.meta}setAttributeQualityConfig(e){const t=this.qualityConfig.attributes,s=st({},Er,t,e.quality);this.attributeQualityConfigs.set(e.key,s)}getModelDefinition(){return this.autoGenerateProperties?{key:this.key,keyProperty:this.keyProperty,keyPropertySeparator:this.keyPropertySeparator,references:Array.from(this.references.values()),properties:Array.from(this.properties.values()),autoGenerateKey:this.autoGenerateKey,supportsAutoCreation:this.supportsAutoCreation,valueMappings:this.valueMappings,meta:this.meta,autoGenerateProperties:this.autoGeneratePropertiesOption,quality:this.qualityConfig}:this.initialDefinition}generatePropertiesFromContainer(e){const t=this.autoGeneratePropertiesOption;(typeof t=="object"&&t!==null?Io(e.data,t):Io(e.data,!1)).map(s=>{if(!this.properties.has(s.key)){if(s.key==="key")return;const o=e.keyProperty??this.keyProperty;$p(o).some(n=>n&&n!=="key"&&n===s.key)&&(s.type="string"),s.filter=!0,this.properties.set(s.key,s)}})}getReferenceKeys(e){return e.map(t=>{if(typeof t=="string")return String(t.trim());if(typeof t=="number")return String(t);if(t===null)return"null";if(typeof t=="object"&&t&&t.key)return t.key})}setError(e){this.modelParser.qualityController.enabled&&this.qualityConfig.enabled===!0&&(e.model=this.key,this.modelParser.qualityController.setError(e))}emitUnknownColumnErrors(e,t,s,o,n){const i=new Set;for(const u of s)i.add(u.key);for(const u of o)i.add(u.key);const a=e.keyProperty??this.keyProperty;if(typeof a=="string")i.add(a);else if(Array.isArray(a))for(const u of a)i.add(u);i.add("key");for(const u of t)i.has(u)||this.setError({title:"Unknown Column",type:"model",errorGroup:"DataContainerError",errorType:"UnknownColumn",description:`Column "${u}" in the source for model "${e.model}" is not declared on the model; its values are dropped during ingest`,attribute:u,model:e.model,meta:{column:u,origin:n}})}processBasicProperty(e,t,s,o="inline"){const n=t[e.key],i=this.attributeQualityConfigs.get(e.key);let a;if(typeof n>"u"){if(i?.required){const u=e.type;this.setError({title:"Undefined Value",type:"model",errorGroup:"PropertyDataError",errorType:"UndefinedValue",description:`The required ${u??""} property "${e.key}" in the "${this.key}" model is undefined (no value)`.replace(/\s+/g," "),itemKey:t.key,attribute:e.key,model:this.key,meta:{rawValue:n,declaredType:u,origin:o}})}return}else{if(n===null)i?.nullable||this.setError({title:"Null Value",description:`The value of the property "${e.key}" in the "${this.key}" model should not be null`,type:"model",errorGroup:"PropertyDataError",errorType:"NullValue",itemKey:t.key,attribute:e.key,model:this.key}),a=n;else if(e.type==="string"){if(a=this.processStringProperty(e,n,t),typeof a>"u")return}else if(e.type==="int"){if(a=this.processIntProperty(e,n,t),typeof a>"u")return}else if(e.type==="float"){if(a=this.processFloatProperty(e,n,t),typeof a>"u")return}else if(e.type==="date"){if(a=this.processDateProperty(e,n,t),typeof a>"u")return}else if(e.type==="json"){if(a=this.processJSONProperty(e,n,t),typeof a>"u")return}else if(e.type==="boolean"){if(a=this.processBooleanProperty(e,n,t),typeof a>"u")return}else if(e.type==="any")a=n;else if(e.type==="Array<string>"){const u=this.getValueAsArray(n,e?.separator);Array.isArray(u)&&(a=[],u.forEach(c=>{const l=this.processStringProperty(e,c,t);typeof l<"u"&&a.push(l)}))}else if(e.type==="Array<int>"){const u=this.getValueAsArray(n,e?.separator);Array.isArray(u)&&(a=[],u.forEach(c=>{const l=this.processIntProperty(e,c,t);typeof l<"u"&&a.push(l)}))}else if(e.type==="Array<float>"){const u=this.getValueAsArray(n,e?.separator);Array.isArray(u)&&(a=[],u.forEach(c=>{const l=this.processFloatProperty(e,c,t);typeof l<"u"&&a.push(l)}))}else if(e.type==="Array<date>"){const u=this.getValueAsArray(n,e?.separator);Array.isArray(u)&&(a=[],u.forEach(c=>{const l=this.processDateProperty(e,c,t);typeof l<"u"&&a.push(l)}))}s[e.key]=a}e.index&&(this.indicesController.fillInverseIndex(e.key,s.key,[a]),this.indicesController.fillDataMap(e.key,[a]))}handleValidators(e,t,s){if(!this.modelParser.qualityController.enabled||this.qualityConfig.enabled!==!0)return!0;let o=!0;try{if(t.quality?.validators){const n=this.modelParser.qualityController.validateAttribute(e,t.quality.validators,t.key);for(const i of n)o=!1,i.attribute=t.key,i.itemKey=s.key,i.model=this.key,this.setError(i)}}catch(n){this.log.error("Validator definition error",n)}return o}getWrongDataTypeError(e,t,s){return{title:"Wrong Data Type",type:"model",errorGroup:"PropertyDataError",errorType:"WrongDataType",itemKey:s.key,attribute:e.key,model:this.key,description:`Expect ${e.type} but got ${typeof t} with value ${t}`,meta:{expected:e.type,rawValue:t,typeof:typeof t}}}isLossyNumericCoercion(e,t,s){const o=Number(typeof e=="string"?e.trim():e);return isNaN(o)?!0:s?o!==t:!1}getLossyCoercionError(e,t,s,o){return{title:"Lossy Data Coercion",type:"model",errorGroup:"PropertyDataError",errorType:"WrongDataType",itemKey:o.key,attribute:e.key,model:this.key,description:`Lossy coercion to ${e.type}: raw value "${t}" was coerced to ${s}`,meta:{expected:e.type,rawValue:t,coercedValue:s,typeof:typeof t,lossy:!0}}}getValueAsArray(e,t=","){if(e)return Array.isArray(e)?e:e&&typeof e=="string"?e.split(t).map(s=>s.trim()):[]}processStringProperty(e,t,s){const o=this.attributeQualityConfigs.get(e.key);let n=t;if(o?.forceStrictDataType){if(!Et(t)){this.setError(this.getWrongDataTypeError(e,t,s));return}}else if(n=String(t),!Et(n)&&n!=t){this.setError(this.getWrongDataTypeError(e,t,s));return}if(!(!this.handleValidators(n,e,s)&&o?.validatorHandling!=="loose"))return n}processIntProperty(e,t,s){const o=this.attributeQualityConfigs.get(e.key);if(o?.forceStrictDataType){if(!Oo(t)){this.setError(this.getWrongDataTypeError(e,t,s));return}return t}const n=parseInt(t,10);if(isNaN(n)){this.setError(this.getWrongDataTypeError(e,t,s));return}if(this.isLossyNumericCoercion(t,n,!0)&&this.setError(this.getLossyCoercionError(e,t,n,s)),!(!this.handleValidators(n,e,s)&&o?.validatorHandling!=="loose"))return n}processFloatProperty(e,t,s){const o=this.attributeQualityConfigs.get(e.key);if(o?.forceStrictDataType){if(!Ko(t)){this.setError(this.getWrongDataTypeError(e,t,s));return}return t}let n;const i=e.fractionDigits;if(typeof i>"u"?n=parseFloat(t):n=parseFloat(parseFloat(t).toFixed(i)),isNaN(n)){this.setError(this.getWrongDataTypeError(e,t,s));return}if(this.isLossyNumericCoercion(t,n,!1)&&this.setError(this.getLossyCoercionError(e,t,n,s)),!(!this.handleValidators(n,e,s)&&o?.validatorHandling!=="loose"))return n}processJSONProperty(e,t,s){if(this.attributeQualityConfigs.get(e.key)?.forceStrictDataType){if(!K(t)){this.setError(this.getWrongDataTypeError(e,t,s));return}return t}if(K(t))return t;if(!K(t)&&typeof t=="string")try{return JSON.parse(t)}catch{this.setError(this.getWrongDataTypeError(e,t,s));return}}processBooleanProperty(e,t,s){if(this.attributeQualityConfigs.get(e.key)?.forceStrictDataType){if(!hp(t)){this.setError(this.getWrongDataTypeError(e,t,s));return}return t}return!!t}processDateProperty(e,t,s){if(t===""){this.setError(this.getWrongDataTypeError(e,t,s));return}const o=e.inputFormat;let n;try{if(o&&typeof o=="string"){let i=t;typeof i!="string"&&(i=String(i)),n=yf(i,o,new Date)}else n=new Date(t)}catch(i){this.log.error("Property extraction error",i,{property:e.key,model:this.key}),this.setError(this.getWrongDataTypeError(e,t,s));return}if(!So(n)){this.setError(this.getWrongDataTypeError(e,t,s));return}return e.UTC&&(n=new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()))),n}processSingleValuedReference(e,t,s){const o=this.modelParser.models.get(e.model);if(!o)return;let n="";typeof t=="string"?n=t:typeof t=="object"&&t&&t.key&&(n=t.key);const i=o.getEntry(String(n));if(!i){if(o.supportsAutoCreation){const u=this.handleAutoCreationAndReturnKey(o,t);this.indicesController.fillInverseIndex(e.key,s.key,[t]),s[e.key]=u,this.setRefValue(u,"auto_hit");return}else if(this.indicesController.fillInverseIndex(e.key,s.key,[n]),this.setError({title:"Remote Reference Key Not Found",type:"model",errorGroup:"ReferenceDataError",errorType:"RemoteReferenceKeyNotFound",itemKey:s.key,attribute:e.key,description:`The reference "${e.key}" in the "${this.key}" model can not find the value "${t}" in the remote model "${e.model}"`,meta:{remoteModel:e.model,remoteKey:t}}),e.validity==="strict")return}this.indicesController.fillInverseIndex(e.key,s.key,[n]);const a={key:String(n)};s[e.key]=a,!i&&!o.supportsAutoCreation&&e.validity!=="strict"?this.setRefValue(a,"miss"):this.setRefValue(a,"hit")}processMultiValuedReference(e,t,s){const o=this.modelParser.models.get(e.model);if(!o)return;const n=this.getReferenceKeys(t),i=[];n.forEach((a,u)=>{const c=o.getEntry(String(a));if(!c){if(o.supportsAutoCreation){const d=this.handleAutoCreationAndReturnKey(o,t[u]);this.setRefValue(d,"auto_hit"),i.push(d);return}else if(this.setError({title:"Remote Reference Key Not Found",type:"model",errorGroup:"ReferenceDataError",errorType:"RemoteReferenceKeyNotFound",itemKey:s.key,attribute:e.key,description:`The reference "${e.key}" in the "${this.key}" model can not find the value "${a}" in the remote model "${e.model}"`,meta:{remoteModel:e.model,remoteKey:a}}),e.validity==="strict")return}const l={key:a};!c&&!o.supportsAutoCreation&&e.validity!=="strict"?this.setRefValue(l,"miss"):this.setRefValue(l,"hit"),i.push(l)}),this.indicesController.fillInverseIndex(e.key,s.key,i.map(a=>a.key)),s[e.key]=i}getViewKeys(){return this.modelParser._getViewKeys({modelKey:this.key})}addBasicPropertiesAndReferences(e){const t=this.getBasicProperties(),s=this.getBasicReferences(),o=this.modelParser.qualityController.dcupl?.getContainerSourceMetadata(e),n=o?.origin??"inline";o&&o.sourceColumns.length>0&&this.emitUnknownColumnErrors(e,o.sourceColumns,t,s,n);for(let i of e.data){let a=this.data.get(String(i.key));if(!a)a={key:String(i.key)};else if(e.type==="set"){const c=e.keyProperty??this.keyProperty,l=e.keyPropertySeparator??this.keyPropertySeparator??ot,d=Dp(c,l),f=String(i.key);this.setError({title:"Non Unique Key",type:"model",errorGroup:"DataContainerError",errorType:"NonUniqueKey",description:`Row with key "${f}" in model "${e.model}" collides with an existing entry (key attribute "${d}"); the duplicate row is dropped`,itemKey:i.key,attribute:d,model:e.model,meta:{duplicateCount:1,droppedRows:[f]}})}for(const c of t){c.origin&&(i[c.key]=i[c.origin]);const l=this.valueMappings.find(d=>d.attributes.includes(c.key));this.isValidValueMapping(l)&&(i=this.mapRawValueUsingValueMapping(i,c.key,l)),this.processBasicProperty(c,i,a,n)}for(const c of s){const l=this.attributeQualityConfigs.get(c.key);c.origin&&(i[c.key]=i[c.origin]);const d=this.valueMappings.find(h=>h.attributes.includes(c.key));this.isValidValueMapping(d)&&(i=this.mapRawValueUsingValueMapping(i,c.key,d));let f=i[c.key];if(typeof f=="number"&&(f=String(f)),!f){this.indicesController.fillInverseIndex(c.key,a.key,[void 0]),l?.required&&this.setError({title:"Undefined Value",type:"model",errorGroup:"ReferenceDataError",errorType:"UndefinedValue",description:`The required ${c.type} reference "${c.key}" in the "${this.key}" model is undefined`,itemKey:i.key,attribute:c.key,model:e.model,meta:{rawValue:f,declaredType:c.type,origin:n}});continue}if(c.type==="singleValued")(typeof f=="object"||typeof f=="string")&&!Array.isArray(f)?this.processSingleValuedReference(c,f,a):this.setError({title:"Wrong Data Type",type:"model",errorGroup:"ReferenceDataError",errorType:"WrongDataType",description:`Expect ${c.type} but got ${typeof f} with value ${f}`,itemKey:i.key,attribute:c.key,meta:{value:f}});else if(c.type==="multiValued"){const h=this.getValueAsArray(f,c?.separator);Array.isArray(h)?this.processMultiValuedReference(c,h,a):this.setError({title:"Wrong Data Type",type:"model",errorGroup:"ReferenceDataError",errorType:"WrongDataType",description:`Expect ${c.type} but got ${typeof f} with value ${f}`,itemKey:i.key,attribute:c.key,meta:{value:f}})}}const u=String(a.key);a.key=u,this.data.set(u,a)}}addQueryReferences(e){const t=this.getQueryReferences();for(let s of t){const o=JSON.stringify(s.query);for(let n of e.data){let i=this.data.get(String(n.key));const a=Rt(o,{...n}),u=JSON.parse(a),c=new me;c.init({modelKey:s.model}),c.applyQuery(u,{mode:"set"}),u.projection||c.applyOptions({projection:{$:!1}});const l=c.getQuery();if(l.queries.length>0){const f=this.modelParser.dcuplInstance.query.execute(l);s.type==="singleValued"?f[0]&&(i[s.key]={key:f[0].key,_dcupl_ref_:"hit"}):s.type==="multiValued"&&(f.forEach(h=>{h._dcupl_ref_="hit"}),i[s.key]=f)}else s.type==="singleValued"?i[s.key]=null:s.type==="multiValued"&&(i[s.key]=[]);const d=String(i.key);i.key=d,this.data.set(d,i)}}}isValidValueMapping(e){if(!e||!Array.isArray(e.attributes)||!Array.isArray(e.values))return!1;const t=e.values.find(o=>!Array.isArray(o.from)),s=e.values.find(o=>!o.to);return!(t||s)}mapRawValueUsingValueMapping(e,t,s){for(const o of s.values){if(o.from.includes("$dcupl_falsy")){if(typeof e[t]>"u"||e[t]===null||e[t]===""){e[t]=o.to;continue}continue}if(o.from.includes(e[t])){e[t]=o.to;continue}}return e}handleAutoCreationAndReturnKey(e,t){if(Array.isArray(t))return[];if(t===null)return{key:"null"};if(typeof t=="object"){const s=e.keyProperty,o=e.keyPropertySeparator??ot;let n;e.autoGenerateKey?n=W():typeof s=="string"||Array.isArray(s)&&s.length>0?n=Vo(t,s,o):n=String(t.key),e.data.set(n,{key:n}),t.key=n;const i={model:e.key,data:[t]};return setTimeout(()=>{e.addContainer(i)},0),{key:n}}if(typeof t=="string"){e.data.set(t,{key:t});const s={model:e.key,data:[{key:t}]};setTimeout(()=>{e.addContainer(s)},0)}return{key:String(t)}}addContainer(e){if(this.cdRef.analyticsController.mark({name:"model:autogenerate_data:start",context:e.model}),this.modelParser.handleAlternativeKey([e]),!Array.isArray(e.data)){this.setError({title:"Invalid Data",type:"model",errorGroup:"DataContainerError",errorType:"WrongDataType",description:`Expect the data to be an Array but got ${typeof e.data}`,model:e.model});return}this.autoGenerateProperties&&this.generatePropertiesFromContainer(e),this.addBasicPropertiesAndReferences(e),this.addQueryReferences(e),this.addResolvedReferences(e),this.addDerivedReferencesGroupedReferencesDerivedPropertiesAndExpressionProperties(e),(this.hasDerivedPropertiesBasedOnResolvedReferences()||this?.hasDerivedReferencesBasedOnResolvedReferences())&&this.reRunDerivedPropertiesBasedOnResolves(e),this.cdRef.analyticsController.mark({name:"model:autogenerate_data:end",context:e.model}),this.cdRef.analyticsController.measure({name:"model:autogenerate_data",start:"model:autogenerate_data:start",end:"model:autogenerate_data:end",sum:!0,context:e.model,detail:{model:e.model,origin:this.key}})}addResolvedReferences(e){const t=this.getResolvedReferences().map(s=>{const o=this.modelParser.models.get(s.resolve.model);if(!o)return;const n=o.getDataAsArray(),i=o.indicesController.getIndex(s.resolve.reference);return{reference:s,model:o,remoteData:n,inverseKeys:i}}).filter(s=>!!s);for(const s of e.data){const o=String(s.key),n=this.data.get(o);for(const a of t){const u=a.reference.key;let c;if(a.inverseKeys){if(a.reference.type==="multiValued"){const l=a.inverseKeys.get(n.key)||new Set;c=Array.from(l).map(d=>({key:d}))}else{const l=a.inverseKeys.get(n.key),d=l&&Array.from(l)[0]||null;d?c={key:d}:c=null}n[u]=c,this.indicesController.fillInverseIndex(u,o,n[u])}}const i=String(n.key);n.key=i,this.data.set(i,n)}}rebuildResolvedReferencesForAllItems(e){let t=this.getResolvedReferences();if(t.length===0||e&&(t=t.filter(o=>e.has(o.key)),t.length===0))return;const s=t.map(o=>{const n=this.modelParser.models.get(o.resolve.model);if(!n)return;const i=n.indicesController.getIndex(o.resolve.reference);return{reference:o,model:n,remoteData:[],inverseKeys:i}}).filter(o=>!!o);for(const o of this.data.values())for(const n of s){const i=n.reference.key;let a;if(n.inverseKeys){if(n.reference.type==="multiValued"){const u=n.inverseKeys.get(o.key)||new Set;a=Array.from(u).map(c=>({key:c}))}else{const u=n.inverseKeys.get(o.key),c=u?Array.from(u)[0]:null;c?a={key:c}:a=null}o[i]=a,this.indicesController.fillInverseIndex(i,o.key,o[i])}}}addDerivedReferencesGroupedReferencesDerivedPropertiesAndExpressionProperties(e){const t=this.getDerivedPropertiesForBasicAndDerivedReferences(),s=this.getExpressionProperties(),o=this.getDerivedReferences(),n=this.getGroupedReferences();for(const i of e.data){const a=this.data.get(String(i.key));o.length>0&&o.forEach(c=>{this.handleDerivedReferences(c,a)}),n.length>0&&n.forEach(c=>{this.handleGroupedReferences(c,a)}),t.length>0&&t.forEach(c=>{this.handleDerivedProperties(c,a)}),s.length>0&&s.forEach(c=>{const l=this.createExpressionContext(a),d=Rt(c.expression,l);a[c.key]=d});const u=String(a.key);a.key=u,this.data.set(u,a)}}handleDerivedProperties(e,t){const s=this.references.get(e.derive.localReference);if(s){const o=this.modelParser.models.get(s.model);o&&(s.type==="singleValued"?this.handleSingleValuedDerivedProperties(o,t,s,e):s.type==="multiValued"&&this.handleMultiValuedDerivedProperties(o,t,s,e))}}reRunDerivedPropertiesBasedOnResolves(e){const t=this.getDerivedProperties(),s=this.getDerivedReferences();for(const o of e.data){const n=this.data.get(String(o.key));s.forEach(a=>{this.handleDerivedReferences(a,n)}),t.forEach(a=>{const u=this.references.get(a.derive.localReference);if(u){const c=this.modelParser.models.get(u.model);c&&(u.type==="singleValued"?this.handleSingleValuedDerivedProperties(c,n,u,a):u.type==="multiValued"&&this.handleMultiValuedDerivedProperties(c,n,u,a))}});const i=String(n.key);n.key=i,this.data.set(i,n)}}handleSingleValuedDerivedProperties(e,t,s,o){const n=t[s.key];if(!n){delete t[o.key];return}const i=e?.getData().get(n.key);if(i){const a=i[o.derive.remoteProperty];typeof a<"u"&&(t[o.key]=a),o.index&&this.indicesController.fillInverseIndex(o.key,t.key,[a])}else delete t[o.key]}handleMultiValuedDerivedProperties(e,t,s,o){const n=t[s.key];let i;n?Array.isArray(n)?i=[...n]:n&&typeof n.key=="string"?i=[{key:n.key}]:i=[]:i=[];const a=o.derive?.separator||", ",u=i.map(l=>{const d=e?.getData().get(l.key);if(d)return d[o.derive.remoteProperty]}).filter(Boolean);let c;o.type.includes("Array<")?c=u:o.type==="string"||o.type==="int"||o.type==="float"||o.type==="date"?c=u.join(a):(o.type,c=u),t[o.key]=c}handleDerivedReferences(e,t){const s=this.references.get(e.derive.localReference);if(!s)return;const o=this.modelParser.models.get(s.model);if(!o)return;const n=t[s.key];if(!n)return;let i=[];if(Array.isArray(n)){const u=new Set;n.forEach(c=>{const l=o?.data.get(c.key);if(l){const d=l[e.derive.remoteReference];d&&(Array.isArray(d)?d.forEach(f=>{u.add(f.key)}):u.add(d.key))}}),i=Array.from(u.values())}else{const u=o?.data.get(n.key);if(u){const c=u[e.derive.remoteReference];c?Array.isArray(c)?i=c.map(l=>l.key):"key"in c&&(i=[c.key]):i=[]}}let a;e.type==="singleValued"?a={key:i[0]}:a=i.map(u=>({key:u})),this.indicesController.fillInverseIndex(e.key,t.key,i),t[e.key]=a}asStringArray(e){return e?Array.isArray(e)?e.map(t=>t.key):[e.key]:[]}buildReverseIndexForReference(e){const t=new Map;this.data.forEach(s=>{const o=this.asStringArray(s[e]);for(const n of o)t.has(n)||t.set(n,new Set),t.get(n).add(s.key)}),this.groupedRefReverseIndex.set(e,t)}ensureReverseIndex(e){return this.groupedRefReverseIndex.has(e)||this.buildReverseIndexForReference(e),this.groupedRefReverseIndex.get(e)}handleGroupedReferences(e,t){const s=[],o=this.references.get(e.groupBy.reference);if(o){const n=this.asStringArray(t[o.key]);if(!n.length)return;const i=this.ensureReverseIndex(o.key),a=new Set;for(const u of n){const c=i.get(u);c&&c.forEach(l=>a.add(l))}for(const u of a)e.groupBy.includeSelfInGroup?s.push({key:u}):t.key!==u&&s.push({key:u})}t[e.key]=s}resetData(){this.data.clear(),this.groupedRefReverseIndex.clear()}resetIndexMap(){this.indicesController.reset()}deleteDataEntries(e){for(const t of e.data){const s=String(t.key);this.data.delete(s),this.indicesController.removeItemFromAllIndices(s),this.groupedRefReverseIndex.forEach(o=>{o.forEach(n=>{n.delete(s)})})}}getItemCount(){return this.data.size}getAttributes(){return[...this.references.values(),...this.properties.values()]}getAttribute(e){return e==="key"?{key:"key",type:"string"}:this.references.get(e)||this.properties.get(e)}getReferencesRelevantForDependencyGraph(){return Array.from(this.references.values()).filter(e=>!("derive"in e)&&!("resolve"in e))}getBasicReferences(){return Array.from(this.references.values()).filter(e=>!("derive"in e)&&!("resolve"in e)&&!("query"in e)&&!("groupBy"in e))}getQueryReferences(){return Array.from(this.references.values()).filter(e=>"query"in e)}getResolvedReferences(){return Array.from(this.references.values()).filter(e=>"resolve"in e)}getGroupedReferences(){return Array.from(this.references.values()).filter(e=>"groupBy"in e)}getDerivedReferences(){return Array.from(this.references.values()).filter(e=>"derive"in e)}getAggregatedReferences(){return Array.from(this.references.values()).filter(e=>"aggregate"in e)}getBasicProperties(){return Array.from(this.properties.values()).filter(e=>!("derive"in e)&&!("expression"in e))}getDerivedProperties(){return Array.from(this.properties.values()).filter(e=>"derive"in e)}getDerivedPropertiesForBasicAndDerivedReferences(){const e=this.getBasicReferences(),t=this.getDerivedReferences(),s=this.getQueryReferences(),o=this.getDerivedProperties(),n=[...e,...t,...s];return o.filter(i=>n.find(a=>a.key===i.derive?.localReference))}getDerivedPropertiesForResolvedReferences(){const e=this.getResolvedReferences();return this.getDerivedProperties().filter(t=>e.find(s=>s.key===t.derive?.localReference))}getDerivedReferencesForResolvedReferences(){const e=this.getResolvedReferences();return this.getDerivedReferences().filter(t=>e.find(s=>s.key===t.derive.localReference))}getExpressionProperties(){return Array.from(this.properties.values()).filter(e=>"expression"in e)}getAggregatedProperties(){return Array.from(this.properties.values()).filter(e=>"aggregate"in e)}hasBasicReferences(){return this.getBasicReferences().length>0}hasQueryReferences(){return this.getQueryReferences().length>0}hasResolvedReferences(){return this.getResolvedReferences().length>0}hasGroupedReferences(){return this.getGroupedReferences().length>0}hasDerivedReferences(){return this.getDerivedReferences().length>0}hasBasicProperties(){return this.getBasicProperties().length>0}hasDerivedProperties(){return this.getDerivedProperties().length>0}hasDerivedPropertiesForBasicReferences(){return this.getDerivedPropertiesForBasicAndDerivedReferences().length>0}hasDerivedPropertiesBasedOnResolvedReferences(){return this.getDerivedPropertiesForResolvedReferences().length>0}hasDerivedReferencesBasedOnResolvedReferences(){return this.getDerivedReferencesForResolvedReferences().length>0}hasExpressionProperties(){return this.getExpressionProperties().length>0}hasAggregatedProperties(){return this.getAggregatedProperties().length>0}getData(e){if(e?.itemKeys){const t=new Map;return e.itemKeys.forEach(s=>{const o=this.data.get(s);o&&t.set(o.key,o)}),t}return this.data}getDataAsArray(){return Array.from(this.data.values())}getEntry(e){return this.data.get(e)}setRefValue(e,t){this.modelParser.initOptions.referenceMetadata?.enabled&&Object.defineProperty(e,_p.REF_VALUE,{value:t,enumerable:!0,writable:!1,configurable:!1})}addBasicPropertiesAndReferencesPartial(e,t){const s=this.getBasicProperties().filter(i=>t.has(i.key)),o=this.getBasicReferences().filter(i=>t.has(i.key)),n=this.modelParser.qualityController.dcupl?.getContainerSourceMetadata(e)?.origin??"inline";for(let i of e.data){let a=this.data.get(String(i.key));a||(a={key:String(i.key)});for(const c of s){c.origin&&(i[c.key]=i[c.origin]);const l=this.valueMappings.find(d=>d.attributes.includes(c.key));this.isValidValueMapping(l)&&(i=this.mapRawValueUsingValueMapping(i,c.key,l)),this.processBasicProperty(c,i,a,n)}for(const c of o){const l=this.attributeQualityConfigs.get(c.key);c.origin&&(i[c.key]=i[c.origin]);const d=this.valueMappings.find(p=>p.attributes.includes(c.key));this.isValidValueMapping(d)&&(i=this.mapRawValueUsingValueMapping(i,c.key,d));let f=i[c.key];typeof f=="number"&&(f=String(f));const h=a[c.key];if(!f){h&&this.indicesController.removeFromInverseIndex(c.key,a.key,[h]),this.indicesController.fillInverseIndex(c.key,a.key,[void 0]),delete a[c.key],l?.required&&this.setError({title:"Undefined Value",type:"model",errorGroup:"ReferenceDataError",errorType:"UndefinedValue",description:`The required ${c.type} reference "${c.key}" in the "${this.key}" model is undefined`,itemKey:i.key,attribute:c.key,model:e.model,meta:{rawValue:f,declaredType:c.type,origin:n}});continue}if(c.type==="singleValued")(typeof f=="object"||typeof f=="string")&&!Array.isArray(f)?(h&&h.key!==f&&this.indicesController.removeFromInverseIndex(c.key,a.key,[h]),this.processSingleValuedReference(c,f,a)):this.setError({title:"Wrong Data Type",type:"model",errorGroup:"ReferenceDataError",errorType:"WrongDataType",description:`Expect ${c.type} but got ${typeof f} with value ${f}`,itemKey:i.key,attribute:c.key,meta:{value:f}});else if(c.type==="multiValued"){const p=this.getValueAsArray(f,c?.separator);Array.isArray(p)?(h&&Array.isArray(h)&&this.indicesController.removeFromInverseIndex(c.key,a.key,h),this.processMultiValuedReference(c,p,a)):this.setError({title:"Wrong Data Type",type:"model",errorGroup:"ReferenceDataError",errorType:"WrongDataType",description:`Expect ${c.type} but got ${typeof f} with value ${f}`,itemKey:i.key,attribute:c.key,meta:{value:f}})}}const u=String(a.key);a.key=u,this.data.set(u,a)}}addQueryAndResolvedReferencesPartial(e,t){if(this.hasQueryReferences()){const s=this.getQueryReferences().filter(o=>t.has(o.key));for(let o of s){const n=JSON.stringify(o.query);for(let i of e.data){let a=this.data.get(String(i.key));if(!a)continue;const u=Rt(n,{...i}),c=JSON.parse(u),l=new me;l.init({modelKey:o.model}),l.applyQuery(c,{mode:"set"}),c.projection||l.applyOptions({projection:{$:!1}});const d=l.getQuery();if(d.queries.length>0){const h=this.modelParser.dcuplInstance.query.execute(d);o.type==="singleValued"?h[0]&&(a[o.key]={key:h[0].key,_dcupl_ref_:"hit"}):o.type==="multiValued"&&(h.forEach(p=>{p._dcupl_ref_="hit"}),a[o.key]=h)}else o.type==="singleValued"?a[o.key]=null:o.type==="multiValued"&&(a[o.key]=[]);const f=String(a.key);a.key=f,this.data.set(f,a)}}}this.hasResolvedReferences()&&this.getResolvedReferences().filter(s=>t.has(s.key)).length>0&&this.rebuildResolvedReferencesForAllItems()}createExpressionContext(e){const t={...e};return this.references.forEach((s,o)=>{const n=e[o];if(!n)return;const i=this.modelParser.models.get(s.model);if(i)if(s.type==="singleValued"&&typeof n=="object"&&"key"in n){const a=i.getData().get(n.key);a&&(t[o]=this.createNestedContext(a,i))}else s.type==="multiValued"&&Array.isArray(n)&&(t[o]=n.map(a=>{const u=i.getData().get(a.key);return u?this.createNestedContext(u,i):null}).filter(Boolean))}),t}createNestedContext(e,t){const s={...e};return t.references.forEach((o,n)=>{const i=e[n];if(!i)return;const a=this.modelParser.models.get(o.model);if(a&&o.type==="singleValued"&&typeof i=="object"&&"key"in i){const u=a.getData().get(i.key);u&&(s[n]={...u})}}),s}addDerivedAndExpressionAttributesPartial(e,t){const s=this.getDerivedPropertiesForBasicAndDerivedReferences().filter(a=>t.has(a.key)),o=this.getDerivedReferences().filter(a=>t.has(a.key)),n=this.getGroupedReferences().filter(a=>t.has(a.key)),i=this.getExpressionProperties().filter(a=>t.has(a.key));for(const a of e.data){const u=this.data.get(String(a.key));if(!u)continue;o.forEach(l=>{this.handleDerivedReferences(l,u)}),n.forEach(l=>{this.handleGroupedReferences(l,u)}),s.forEach(l=>{this.handleDerivedProperties(l,u)}),i.forEach(l=>{const d=this.createExpressionContext(u),f=Rt(l.expression,d);u[l.key]=f});const c=String(u.key);u.key=c,this.data.set(c,u)}}reRunDerivedPropertiesBasedOnResolvesPartial(e,t){const s=this.getDerivedProperties().filter(n=>t.has(n.key)),o=this.getDerivedReferences().filter(n=>t.has(n.key));for(const n of e.data){const i=this.data.get(String(n.key));if(!i)continue;o.forEach(u=>{this.handleDerivedReferences(u,i)}),s.forEach(u=>{this.handleDerivedProperties(u,i)});const a=String(i.key);i.key=a,this.data.set(a,i)}}};class Ep{changedAttributes;changedItems;deletedItems;modelFullReset;state="clean";constructor(){this.changedAttributes=new Map,this.changedItems=new Map,this.deletedItems=new Map,this.modelFullReset=new Set}recordDataChange(e){const t=e.model;if(!(!e.data||e.data.length===0))if(e.type==="set")this.state==="clean"?this.state="full-reset":this.state==="tracking"&&(this.state="full-reset",this.changedAttributes.delete(t),this.changedItems.delete(t),this.deletedItems.delete(t)),this.modelFullReset.add(t);else{if(this.modelFullReset.has(t))return;this.state==="clean"?this.state="tracking":this.state==="full-reset"&&(this.state="tracking"),e.type==="remove"?this.recordDeletedItems(t,e.data):this.recordChangedData(t,e.data)}}recordAttributeChange(e,t){this.changedAttributes.has(e)||this.changedAttributes.set(e,new Set),this.changedAttributes.get(e).add(t)}recordChangedData(e,t){this.changedAttributes.has(e)||this.changedAttributes.set(e,new Set),this.changedItems.has(e)||this.changedItems.set(e,new Set);const s=this.changedAttributes.get(e),o=this.changedItems.get(e);for(const n of t){n.key&&o.add(String(n.key));for(const i in n)i!=="key"&&s.add(i)}}recordDeletedItems(e,t){this.deletedItems.has(e)||this.deletedItems.set(e,new Set);const s=this.deletedItems.get(e);for(const o of t)o.key&&s.add(String(o.key))}getChangedAttributes(){return this.changedAttributes}getChangedAttributesForModel(e){return this.changedAttributes.get(e)}getChangedItems(e){return this.changedItems.get(e)||new Set}getDeletedItems(e){return this.deletedItems.get(e)||new Set}getModelsWithChanges(){const e=new Set;for(const t of this.changedAttributes.keys())e.add(t);for(const t of this.changedItems.keys())e.add(t);for(const t of this.deletedItems.keys())e.add(t);return Array.from(e)}getModelsWithFullReset(){return this.modelFullReset}hasFullReset(e){return this.modelFullReset.has(e)}hasChanges(){return this.changedAttributes.size>0||this.changedItems.size>0||this.deletedItems.size>0||this.modelFullReset.size>0}getTotalChangedItemCount(){let e=0;for(const t of this.changedItems.values())e+=t.size;return e}getAffectedModelRatio(e){return e===0?0:(this.getModelsWithChanges().length+this.modelFullReset.size)/e}getAffectedItemRatio(e,t){return t===0?0:this.getChangedItems(e).size/t}clear(){this.changedAttributes.clear(),this.changedItems.clear(),this.deletedItems.clear(),this.modelFullReset.clear(),this.state="clean"}requiresFullReset(){return this.state==="full-reset"}getState(){return this.state}getStats(){let e=0,t=0,s=0;for(const o of this.changedItems.values())e+=o.size;for(const o of this.deletedItems.values())t+=o.size;for(const o of this.changedAttributes.values())s+=o.size;return{modelsWithChanges:this.getModelsWithChanges().length,modelsWithFullReset:this.modelFullReset.size,totalChangedItems:e,totalDeletedItems:t,totalChangedAttributes:s}}}let jp=class{metrics=[];enabled=!1;constructor(){}enable(){this.enabled=!0}disable(){this.enabled=!1}isEnabled(){return this.enabled}recordUpdate(e){this.enabled&&(this.metrics.push({...e,timestamp:Date.now()}),this.metrics.length>100&&this.metrics.shift())}getMetrics(){return[...this.metrics]}getSummary(){if(this.metrics.length===0)return{totalUpdates:0,partialUpdates:0,fullUpdates:0,avgPartialUpdateTime:0,avgFullUpdateTime:0,avgAttributesProcessed:0,avgModelsAffected:0,totalTimeSaved:0};const e=this.metrics.filter(u=>u.type==="partial"),t=this.metrics.filter(u=>u.type==="full"),s=e.length>0?e.reduce((u,c)=>u+c.durationMs,0)/e.length:0,o=t.length>0?t.reduce((u,c)=>u+c.durationMs,0)/t.length:0,n=e.length>0?e.reduce((u,c)=>u+(c.attributesProcessed||0),0)/e.length:0,i=e.length>0?e.reduce((u,c)=>u+(c.modelsAffected||0),0)/e.length:0,a=o>0?e.reduce((u,c)=>u+(o-c.durationMs),0):0;return{totalUpdates:this.metrics.length,partialUpdates:e.length,fullUpdates:t.length,avgPartialUpdateTime:s,avgFullUpdateTime:o,avgAttributesProcessed:n,avgModelsAffected:i,totalTimeSaved:a}}getLastUpdates(e=10){return this.metrics.slice(-e)}clear(){this.metrics=[]}getMetricsInRange(e,t){return this.metrics.filter(s=>s.timestamp>=e&&s.timestamp<=t)}};function Sp(r){return"query"in r}function jr(r){return"resolve"in r}function Mp(r){return"derive"in r}function Rp(r){return"groupBy"in r}var Tp=Object.defineProperty,Ip=Object.getOwnPropertyDescriptor,Tt=(r,e,t,s)=>{for(var o=Ip(e,t),n=r.length-1,i;n>=0;n--)(i=r[n])&&(o=i(e,t,o)||o);return o&&Tp(e,t,o),o};let nt=class{constructor(e,t,s){this.cdRef=e,this.qualityController=t,this.dcuplInstance=s,this.qualityController.modelParser=this}unprocessedModelDescriptions=new Map;unprocessedData=[];keyedContainers=new WeakSet;dependencyGraph;attributeDependencyGraph;changeTracker=new Ep;partialUpdateMetrics=new jp;views=new Map;models=new Map;initOptions;calculationTimings=[];log=Se.child({prefix:"ModelParser"});async init(){this.changeTracker.clear(),this.qualityController.enabled&&(this.qualityController.resetDataErrors(),this.models.get("$DcuplErrorTrackingErrors")||this.qualityController.initErrorTrackingModels()),this.prepareModels(),this.qualityController.enabled&&this.validateModels(),this.initDependencyGraph(),this.buildAttributeDependencyGraph(),this.validateAttributeDependencyGraph();const e=this.getMergedContainers(this.unprocessedData);await this.connectDataWithModels(e),this.qualityController.enabled&&await this.qualityController.initData(),this.changeTracker.clear()}prepareModels(){this.unprocessedModelDescriptions.forEach(e=>{if(this.models.has(e.key))this.models.get(e.key).resetData(),this.models.get(e.key).resetIndexMap(),this.models.get(e.key).applyPropertiesAndReferences(e);else{const t=new xp(this);t.init(e),t.applyPropertiesAndReferences(e),this.models.set(t.key,t)}})}validateModels(){this.models.forEach(e=>{e.qualityConfig.enabled===!0&&vp(e,this.models).forEach(t=>{this.setError(t,e)})})}initDependencyGraph(){this.dependencyGraph=new _o,this.models.forEach(t=>{this.dependencyGraph.addNode(t.key)}),this.models.forEach(t=>{t.getReferencesRelevantForDependencyGraph().forEach(s=>{t.key!==s.model&&(this.dependencyGraph.addNode(s.model),this.dependencyGraph.addDependency(t.key,s.model))})});const e=this.dependencyGraph.validateNoCycles();if(e.hasCycle){const t=e.path.join(" → ");throw this.log.error(`Circular dependency detected in model references: ${t}
6
6
  This will cause unpredictable update ordering. Please restructure your models to remove the circular dependency.`),new Error(`Circular dependency detected: ${t}
7
- Models cannot have circular references as this leads to unpredictable behavior during updates.`)}}buildAttributeDependencyGraph(){this.attributeDependencyGraph=new tf,this.models.forEach(e=>{const t=e.key;e.properties.forEach((s,n)=>{if(s.expression)this.processExpressionProperty(t,n,s.expression);else if(s.derive)this.processDerivedProperty(t,n,s.derive);else{const o={modelKey:t,attributeKey:n,type:"property",processingStep:1};this.attributeDependencyGraph.addAttribute(o)}}),e.references.forEach((s,n)=>{if(yh(s))this.processQueryReference(t,n,s.query);else if(Pr(s))this.processResolvedReference(t,n,s.resolve);else if(gh(s))this.processDerivedReference(t,n,s.derive);else if(mh(s))this.processGroupedReference(t,n,s.groupBy);else{const o={modelKey:t,attributeKey:n,type:"reference",processingStep:1};this.attributeDependencyGraph.addAttribute(o)}})})}validateAttributeDependencyGraph(){const e=new Map;this.models.forEach(s=>{const n=[];s.properties.forEach((o,i)=>{n.push(i)}),s.references.forEach((o,i)=>{n.push(i)}),n.length>0&&e.set(s.key,n)});const t=this.attributeDependencyGraph.validateCompleteness(e);if(!t.isComplete){const s=t.missing.length,n=t.missing.map(({modelKey:i,attributeKey:a})=>`${i}.${a}`).slice(0,10).join(", "),o=`Attribute dependency graph incomplete. ${s} attribute(s) missing: ${n}${s>10?` ... and ${s-10} more`:""}`;this.log.warn(`${o}
8
- These attributes will default to Step 1 processing which may be incorrect. This usually indicates a problem during expression or reference parsing.`)}}processExpressionProperty(e,t,s){const n={modelKey:e,attributeKey:t,type:"property",processingStep:3};this.attributeDependencyGraph.addAttribute(n);const{variables:o}=$r(s);o.forEach(i=>{const a=i.name.split("."),l=this.models.get(e);if(!l)return;const c=a[0];if(l.properties.has(c)){const u={modelKey:e,attributeKey:c,type:"property",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(n,u)}else if(l.references.has(c)){const u={modelKey:e,attributeKey:c,type:"reference",processingStep:1};if(this.attributeDependencyGraph.addAttributeDependency(n,u),a.length>1){let d=l,f=e;for(let h=0;h<a.length-1;h++){const p=a[h],y=d.references.get(p);if(y){const m=this.models.get(y.model);if(m&&(d=m,f=y.model,h===a.length-2)){const g=a[a.length-1],b={modelKey:f,attributeKey:g,type:"property",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(n,b)}}}}}})}processDerivedProperty(e,t,s){const n={modelKey:e,attributeKey:t,type:"property",processingStep:3};this.attributeDependencyGraph.addAttribute(n);const o={modelKey:e,attributeKey:s.localReference,type:"reference",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(n,o);const i=this.models.get(e);if(i){const a=i.references.get(s.localReference);if(a){const l={modelKey:a.model,attributeKey:s.remoteProperty,type:"property",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(n,l)}}}processQueryReference(e,t,s){const n={modelKey:e,attributeKey:t,type:"reference",processingStep:2};this.attributeDependencyGraph.addAttribute(n);try{const o=JSON.stringify(s),{variables:i}=$r(o);i.forEach(a=>{const l=a.name,c=this.models.get(e);if(c){if(c.properties.has(l)){const u={modelKey:e,attributeKey:l,type:"property",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(n,u)}else if(c.references.has(l)){const u={modelKey:e,attributeKey:l,type:"reference",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(n,u)}}})}catch{}}processResolvedReference(e,t,s){const n={modelKey:e,attributeKey:t,type:"reference",processingStep:2};this.attributeDependencyGraph.addAttribute(n);const o={modelKey:s.model,attributeKey:s.reference,type:"reference",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(n,o)}processDerivedReference(e,t,s){const n={modelKey:e,attributeKey:t,type:"reference",processingStep:3};this.attributeDependencyGraph.addAttribute(n);const o={modelKey:e,attributeKey:s.localReference,type:"reference",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(n,o);const i=this.models.get(e);if(i){const a=i.references.get(s.localReference);if(a){const l={modelKey:a.model,attributeKey:s.remoteReference,type:"reference",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(n,l)}}}processGroupedReference(e,t,s){const n={modelKey:e,attributeKey:t,type:"reference",processingStep:3};this.attributeDependencyGraph.addAttribute(n);const o={modelKey:e,attributeKey:s.reference,type:"reference",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(n,o)}async update(){const e=performance.now(),t=this.shouldUsePartialUpdate();if(t.decision){const s=this.changeTracker.getModelsWithChanges().length,n=Array.from(this.changeTracker.getChangedAttributes().values()).reduce((a,l)=>a+l.size,0),o=this.changeTracker.getTotalChangedItemCount();await this.partialUpdate();const i=performance.now()-e;this.partialUpdateMetrics.recordUpdate({type:"partial",durationMs:i,modelsAffected:s,attributesProcessed:n,itemsChanged:o,decisionReason:t.reason,timestamp:Date.now()})}else{await this.init();const s=performance.now()-e;this.partialUpdateMetrics.recordUpdate({type:"full",durationMs:s,decisionReason:t.reason,timestamp:Date.now()})}}shouldUsePartialUpdate(){const e=this.dcuplInstance.initOptions.performance?.partialUpdates,t=e?.modelRatioThreshold??.5,s=e?.itemRatioThreshold??.5,n=e?.enableDetailedLogging??!1;if(!this.changeTracker.hasChanges())return n&&this.log.debug("Partial update decision: SKIP",{reason:"no_changes_detected"}),{decision:!1,reason:"no_changes_detected"};if(this.changeTracker.getModelsWithFullReset().size>0)return n&&this.log.debug("Partial update decision: FULL",{reason:"full_reset_detected"}),{decision:!1,reason:"full_reset_detected"};const o=Array.from(this.models.keys()).filter(u=>!u.startsWith("$")).length,i=this.changeTracker.getAffectedModelRatio(o);let a=0,l=0;for(const u of this.changeTracker.getModelsWithChanges()){const d=this.models.get(u);if(d){const f=d.getData().size;a+=f,l+=this.changeTracker.getChangedItems(u).size,l+=this.changeTracker.getDeletedItems(u).size}}const c=a>0?l/a:0;return i>t&&c>s?(n&&this.log.debug("Partial update decision: FULL",{reason:"both_ratios_high",modelRatio:i.toFixed(2),itemRatio:c.toFixed(2)}),{decision:!1,reason:`both_ratios_high:models=${i.toFixed(2)},items=${c.toFixed(2)}`}):(n&&this.log.debug("Partial update decision: PARTIAL",{modelRatio:i.toFixed(2),itemRatio:c.toFixed(2),modelThreshold:t,itemThreshold:s}),{decision:!0,reason:`optimal:models=${i.toFixed(2)},items=${c.toFixed(2)}`})}async partialUpdate(){const e=this.handleAlternativeKey(this.unprocessedData).filter(s=>!s.placeholderUid);for(const s of e)if(s.type==="remove"){const n=this.models.get(s.model);if(n){n.deleteDataEntries(s);for(const o of n.properties.values())this.changeTracker.recordAttributeChange(s.model,o.key);for(const o of n.references.values())this.changeTracker.recordAttributeChange(s.model,o.key)}}const t=this.getMergedContainers(this.unprocessedData);await this.connectDataWithModelsPartial(t)}async reprocessData(){this.qualityController.enabled&&this.qualityController.resetModelErrors();const e=this.getMergedContainers(this.unprocessedData);await this.connectDataWithModels(e)}getSortedCalculationTimings(){return gn(this.calculationTimings,"value")}addModel(e){if(e?.quality?.enabled!==!1)try{sh(e)}catch(t){this.qualityController.enabled&&this.qualityController.setError({title:"Invalid Model Definition",type:"model",errorGroup:"ModelDefinitionError",errorType:"InvalidModelDefinition",model:e.key,description:t.message});return}if(this.unprocessedModelDescriptions.has(e.key)){const t=this.unprocessedModelDescriptions.get(e.key),s=this.mergeModels(t,e);this.unprocessedModelDescriptions.set(e.key,s)}else this.unprocessedModelDescriptions.set(e.key,e);e.data&&this.addData({model:e.key,data:e.data,autoGenerateProperties:e.autoGenerateProperties,autoGenerateKey:e.autoGenerateKey,keyProperty:e.keyProperty})}mergeModels(e,t){const s=Object.assign({},e);return Array.isArray(e.properties)&&(s.properties=[...e.properties]),Array.isArray(e.references)&&(s.references=[...e.references]),Array.isArray(t.properties)&&s.properties?.push(...t.properties),Array.isArray(t.references)&&s.references?.push(...t.references),s}addData(e){if(!e||!e.model||!e.data)throw new Error("Invalid Data Container");if(!Array.isArray(e.data))throw new Error("Invalid Data - Data must be an Array");e.type||(e.type="set"),e.autoGenerateProperties&&this.addModel({key:e.model,autoGenerateProperties:e.autoGenerateProperties,autoGenerateKey:e.autoGenerateKey,keyProperty:e.keyProperty||"key"}),this.changeTracker.recordDataChange(e),this.unprocessedData.push(e)}addView(e){this.views.set(e.key,e)}setError(e,t){this.qualityController.enabled&&t.qualityConfig.enabled===!0&&this.qualityController.setError(e)}getMergedContainers(e){const t=this.handleAlternativeKey(e).filter(o=>!o.placeholderUid),s=[],n=Dr(t,"model");for(const o in n){const i=n[o];if(i.length>1){const a=this.mergeContainers(i);s.push(a)}else s.push(i[0])}return s}mergeContainers(e){let t;return e?.forEach(s=>{if(!t){if(s.type==="remove")return;t=new Map(s.data.map(n=>[n.key,n]));return}switch(s.type){case"upsert":s.data.forEach(n=>{if(t.has(n.key)){let o=t.get(n.key);o=st(o,n),t.set(n.key,o)}else t.set(n.key,n)});break;case"update":s.data.forEach(n=>{if(t.has(n.key)){let o=t.get(n.key);o=st(o,n),t.set(n.key,o)}});break;case"remove":s.data.forEach(n=>{t.delete(n.key)});break;case"set":t=new Map(s.data.map(n=>[n.key,n]));break;default:t=new Map(s.data.map(n=>[n.key,n]));break}}),{model:e[0].model,data:Array.from(t.values()),type:"set"}}async connectDataWithModels(e){try{this.dependencyGraph.order()}catch(s){this.log.warn("Your models have circular dependencies which might lead to errors. Please consider changing your models"),this.log.error("Dependency graph error",s)}const t=this.dependencyGraph.order({allowCycles:!0});e.sort((s,n)=>t.indexOf(s.model)-t.indexOf(n.model)),await this.handleDataContainer(e)}async connectDataWithModelsPartial(e){const t=this.dependencyGraph.order({allowCycles:!0});e.sort((i,a)=>t.indexOf(i.model)-t.indexOf(a.model));const s=[];for(const[i,a]of this.changeTracker.getChangedAttributes())for(const l of a){const c=this.attributeDependencyGraph.getAttributesForModel(i).find(u=>u.attributeKey===l);if(c)s.push(c);else{const u=this.models.get(i);if(u){const d=u.properties.get(l),f=u.references.get(l);(d||f)&&s.push({modelKey:i,attributeKey:l,type:d?"property":"reference",processingStep:1})}}}const n=this.attributeDependencyGraph.getImpactedAttributes(s),o=this.attributeDependencyGraph.getProcessingOrder(n);for(const i of e){const a=this.models.get(i.model);a?.autoGenerateProperties&&a.generatePropertiesFromContainer(i)}for(const i of[1,2,3,4])await this.processAttributesForStep(i,o,e);for(const i of e){const a=this.models.get(i.model);if(a&&this.qualityController.enabled){const l=this.changeTracker.getChangedItems(a.key),c=this.changeTracker.getChangedAttributes().get(a.key);l.size>0&&c&&(this.qualityController.cleanUpErrorsForItems(a,l,c),this.qualityController.validateItemsPartial(a,l,c).forEach(u=>{this.setError(u,a)}))}}this.changeTracker.clear()}getResolvedReferenceProcessingOrder(e){const t=new Map,s=new Set;for(const[l,c]of e.entries()){const u=c.get(2);u&&u.size>0&&(s.add(l),t.set(l,new Set))}if(s.size===0)return this.dependencyGraph.order();for(const l of s){const c=this.models.get(l);if(!c)continue;const u=e.get(l)?.get(2);if(u)for(const d of u){const f=c.references.get(d);if(f&&Pr(f)){const h=f.resolve.model,p=f.resolve.reference,y=this.models.get(h);if(y){const m=y.references.get(p);m&&Pr(m)&&t.get(l).add(h)}}}}const n=[],o=new Set,i=new Set,a=l=>{if(i.has(l)||o.has(l))return;o.add(l);const c=t.get(l);if(c)for(const u of c)a(u);o.delete(l),i.add(l),n.push(l)};for(const l of s)a(l);return n}async processAttributesForStep(e,t,s){let n=this.dependencyGraph.order({allowCycles:!0});e===2&&(n=this.getResolvedReferenceProcessingOrder(t));for(const o of n){const i=t.get(o);if(!i)continue;const a=i.get(e);if(!a||a.size===0)continue;const l=this.models.get(o);if(!l)continue;const c=L(),u=`dcupl:partial_process_data:step_${e}`;if(this.cdRef.analyticsController.mark({name:`${u}:start`,context:c}),e===2)l.rebuildResolvedReferencesForAllItems(a);else{const d=s.find(f=>f.model===o);if(!d)continue;switch(e){case 1:l.addBasicPropertiesAndReferencesPartial(d,a);break;case 3:l.addDerivedAndExpressionAttributesPartial(d,a);break;case 4:l.reRunDerivedPropertiesBasedOnResolvesPartial(d,a);break}}this.cdRef.analyticsController.mark({name:`${u}:end`,context:c}),this.cdRef.analyticsController.measure({name:u,start:`${u}:start`,end:`${u}:end`,context:c,detail:{model:o,attributeCount:a.size}})}}handleAlternativeKey(e){return e.forEach(t=>{const s=this.models.get(t.model),n=t.keyProperty||s?.keyProperty,o=t.autoGenerateKey||s?.autoGenerateKey;n&&n!=="key"?t.data.forEach(i=>{i.key=String(i[n])}):o&&t.data.forEach(i=>{i.key||(i.key=L())})}),e}async handleDataContainer(e){for(const n of e){const o=this.models.get(n.model);o?.autoGenerateProperties&&o.generatePropertiesFromContainer(n)}const t=this.initOptions.performance?.containerBatchSize,s=t!==void 0;for(let n=0;n<e.length;n++){const o=e[n],i=this.models.get(o.model),a=L();this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_1:start",context:a}),i&&(i.addBasicPropertiesAndReferences(o),this.qualityController.enabled&&i.qualityConfig.enabled===!0&&this.qualityController.cleanUpErrors(i,o,"UndefinedValue")),this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_1:end",context:a}),this.cdRef.analyticsController.measure({name:"dcupl:process_data:step_1",start:"dcupl:process_data:step_1:start",end:"dcupl:process_data:step_1:end",context:a,detail:{model:o.model}}),s?t>0&&n>0&&n%t===0&&await new Promise(l=>setTimeout(l,0)):await new Promise(l=>setTimeout(l,0))}for(let n=0;n<e.length;n++){const o=e[n],i=this.models.get(o.model),a=L();this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_2:start",context:a}),i&&i.hasQueryReferences()&&i.addQueryReferences(o),i&&i.hasResolvedReferences()&&i.addResolvedReferences(o),this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_2:end",context:a}),this.cdRef.analyticsController.measure({name:"dcupl:process_data:step_2",start:"dcupl:process_data:step_2:start",end:"dcupl:process_data:step_2:end",context:a,detail:{model:o.model}}),s?t>0&&n>0&&n%t===0&&await new Promise(l=>setTimeout(l,0)):await new Promise(l=>setTimeout(l,0))}for(let n=0;n<e.length;n++){const o=e[n],i=this.models.get(o.model),a=L();this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_3:start",context:a}),i&&(i.hasDerivedPropertiesForBasicReferences()||i?.hasDerivedReferences()||i?.hasGroupedReferences()||i?.hasExpressionProperties())&&i.addDerivedReferencesGroupedReferencesDerivedPropertiesAndExpressionProperties(o),this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_3:end",context:a}),this.cdRef.analyticsController.measure({name:"dcupl:process_data:step_3",start:"dcupl:process_data:step_3:start",end:"dcupl:process_data:step_3:end",context:a,detail:{model:o.model}}),s?t>0&&n>0&&n%t===0&&await new Promise(l=>setTimeout(l,0)):await new Promise(l=>setTimeout(l,0))}for(let n=0;n<e.length;n++){const o=e[n],i=this.models.get(o.model);if(!i){this.log.error("Model not found during data processing",void 0,{model:o.model,step:4});continue}const a=L();this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_4:start",context:a}),(i.hasDerivedPropertiesBasedOnResolvedReferences()||i.hasDerivedReferencesBasedOnResolvedReferences())&&i.reRunDerivedPropertiesBasedOnResolves(o),this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_4:end",context:a}),this.cdRef.analyticsController.measure({name:"dcupl:process_data:step_4",start:"dcupl:process_data:step_4:start",end:"dcupl:process_data:step_4:end",context:a,detail:{model:o.model}}),this.qualityController.enabled&&i.qualityConfig.enabled===!0&&this.qualityController.validateAttributesAfterInitialization(i).forEach(l=>{this.setError(l,i)}),s?t>0&&n>0&&n%t===0&&await new Promise(l=>setTimeout(l,0)):await new Promise(l=>setTimeout(l,0))}}_getModelKeys(){return Array.from(this.models.values()).map(e=>e.key).filter(e=>e&&!e.startsWith("$Dcupl"))}_getViewKeys(e){const t=e?.modelKey;return Array.from(this.views.values()).filter(s=>t?s.model===t:!0).map(s=>s.key)}getTotalItemCount(){let e=0;for(const t of this.models.values())e+=t.getItemCount();return e}}Mt([v({scope:"global",type:"model_add",connectMessage:!0})],nt.prototype,"addModel"),Mt([v({scope:"global",type:"data_change",connectMessage:!0})],nt.prototype,"addData"),Mt([v({scope:"global",type:"view_add",connectMessage:!0})],nt.prototype,"addView"),Mt([v({scope:"global",type:"dcupl_handle_datacontainer"})],nt.prototype,"handleDataContainer");function kh(r,e){return xe(e,function(t){return r[t]})}function Ah(r){return r==null?[]:kh(r,He(r))}var wh=Math.max;function $h(r,e,t,s){r=ee(r)?r:Ah(r),t=t?vt(t):0;var n=r.length;return t<0&&(t=wh(n+t,0)),Pt(r)?t<=n&&r.indexOf(e,t)>-1:!!n&&hs(r,e,t)>-1}var Ch=Object.defineProperty,_h=Object.getOwnPropertyDescriptor,qn=(r,e,t,s)=>{for(var n=_h(e,t),o=r.length-1,i;o>=0;o--)(i=r[o])&&(n=i(e,t,n)||n);return n&&Ch(e,t,n),n};class jr{constructor(e,t){this.dcuplApi=e,this.cdRef=t}options;key;modelKey;catalog;setup(e){const t=this.dcuplApi.modelParser.models.get(e.modelKey);if(!t)throw new Error(`Model with key ${e.modelKey} not found`);const s=this.getListItemKeys(e),n=this.getRelevantData(t,s),o=this.initIndicesController(s,t,n);this.catalog?this.catalog.filter.update(t,n,o):(this.catalog=new Ef(this.dcuplApi,this.cdRef,o),this.catalog.init(this.modelKey,t,n))}initIndicesController(e,t,s){let n;if(e){n=new Rt;for(const o of t.indicesController.indexMap.keys())n.getOrCreateIndex(o,s)}else n=t.indicesController;return n}getListItemKeys(e){let t;return e.listItemKeys?t=e.listItemKeys:e.query&&(t=this.dcuplApi.query.execute(e.query).map(s=>s.key)),t}getRelevantData(e,t){const s=e.getData();return t?this.initFromItemKeys(s,t):s}init(e){this.options=se(e),this.key=this.options.listKey,this.modelKey=this.options.modelKey,this.setup(this.options)}initFromItemKeys(e,t){const s=new Map;return t.forEach(n=>{if(e.has(n)){const o=e.get(n);o&&s.set(n,o)}}),s}destroy(){try{this.dcuplApi.lists.destroy({listKey:this.key})}catch{}}_destroy(){this.catalog.filter.cdRef?.destroy()}update(e){(e&&e.reprocessData||!e)&&this.setup(this.options)}on(e){return this.cdRef.on(e)}}qn([v({scope:"list",type:"list_destroyed",connectMessage:!0})],jr.prototype,"_destroy"),qn([v({scope:"list",type:"list_updated",action:"update",connectMessage:!0})],jr.prototype,"update");var Dh=Object.defineProperty,xh=Object.getOwnPropertyDescriptor,Ph=(r,e,t,s)=>{for(var n=xh(e,t),o=r.length-1,i;o>=0;o--)(i=r[o])&&(n=i(e,t,n)||n);return n&&Dh(e,t,n),n};let Qn=class{constructor(e,t){this.dcuplInstance=e,this.cdRef=t}lists=[];get(e){if(e)return this.lists.find(t=>t.key===e)}getAll(e){return e?this.lists.filter(t=>t.modelKey===e?.modelKey):this.lists}destroy(e){if(!e)this.lists.forEach(t=>t._destroy()),this.lists=[];else if(e.listKey){const t=this.lists.findIndex(s=>s.key===e.listKey);t>-1&&(this.lists[t]._destroy(),this.lists.splice(t,1))}else e.modelKey&&(this.lists=this.lists.filter(t=>t.modelKey===e.modelKey?(t._destroy(),!1):!0))}create(e){e.listKey=e.listKey||L();const t=new br;t._init({cdRefKey:e.listKey,parentCd:this.dcuplInstance.cdRef,dcuplInitOptions:this.dcuplInstance.initOptions,analyticsController:this.dcuplInstance.analyticsController});const s=new jr(this.dcuplInstance,t);return s.init(e),this.lists.push(s),s}};Ph([v({scope:"global",type:"list_created",connectMessage:!0})],Qn.prototype,"create");let jh=class{constructor(e){this.scriptsController=e}enabled=!1;errors=new Map;log=Ee.child({prefix:"QualityController"});values={loading:0,processing:0,startup:0,counts:{resources:0,modelFiles:0,dataFiles:0,models:0,rows:0,attributes:0,dataEntries:0},unusedAttributes:[],errors:{size:0,UndefinedValue:0,UndefinedAttribute:0,WrongDataType:0,MissingModel:0,InvalidModelDescription:0,RemoteReferenceKeyNotFound:0},sizes:{totalEncoded:0,totalDecoded:0,unusedDecoded:0,models:[]}};modelParser;dcupl;setError(e){e.key||(e.key=L()),this.errors.set(e.key,e)}removeError(e){this.errors.delete(e)}getError(e){return this.errors.get(e)}getErrors(){return Array.from(this.errors.values())}resetErrors(){this.errors.clear()}resetModelErrors(){this.getErrors().forEach(e=>{e.type==="model"&&this.removeError(e.key)})}resetValidationErrors(){this.getErrors().forEach(e=>{e.type==="model"&&e.errorType==="InvalidValidator"&&this.removeError(e.key)})}cleanUpErrors(e,t,s){const n=this.getModelErrors(e.key).filter(o=>o.errorType===s);if(n.length>0){const o=Dr(n,"attribute");for(const i in o){const a=o[i];if(a?.length===t.data.length){for(const c of a)this.removeError(c.key);const l={title:"Missing Data",type:"model",errorGroup:"DataContainerError",errorType:"UndefinedAttribute",model:t.model,attribute:i,description:`The Attribute "${i}" is not present in the dataset for model "${t.model}"`};this.setError(l)}}}}getModelErrors(e){return this.getErrors().filter(t=>t.type==="model"&&t.model===e)}cleanUpErrorsForItems(e,t,s,n){let o,i;typeof s=="string"?i=s:s instanceof Set&&(o=s,i=n);const a=this.getModelErrors(e.key),l=i?a.filter(c=>c.errorType===i):a;for(const c of l)if(c.itemKey&&t.has(c.itemKey)){if(o&&c.attribute&&!o.has(c.attribute))continue;this.removeError(c.key)}}getErrorsForItems(e,t){return this.getModelErrors(e).filter(s=>s.itemKey&&t.has(s.itemKey))}validateItemsPartial(e,t,s){if(!e)return[];const n=[],o=e.getData(),i=e.getAttributes();for(const a of i){if(!s.has(a.key))continue;const l=a.quality?.validators;if(l)for(const c of t){const u=o.get(c);if(!u)continue;const d=u[a.key],f=this.validateAttribute(d,l,a.key);for(const h of f)h.model=e.key,h.itemKey=u.key,n.push(h)}}return n}async initData(){this.modelParser?.addData({data:this.getErrors(),model:"$DcuplErrorTrackingErrors",type:"set"});const e=this.modelParser.unprocessedData.find(t=>t.model==="$DcuplErrorTrackingErrors");e&&await this.modelParser.handleDataContainer([e])}initErrorTrackingModels(){this.modelParser?.addModel({key:"$DcuplErrorTrackingErrors",autoGenerateKey:!0,supportsAutoCreation:!0,references:[{key:"model",type:"singleValued",model:"$DcuplErrorTrackingModel",filter:{calculateFacets:!0}},{key:"errorGroup",type:"singleValued",model:"$DcuplErrorTrackingGroup",filter:{calculateFacets:!0}},{key:"errorType",type:"singleValued",model:"$DcuplErrorTrackingType",filter:{calculateFacets:!0}}],properties:[{key:"title",type:"string",filter:!0},{key:"itemKey",type:"string",filter:!0},{key:"attribute",type:"string",filter:!0},{key:"description",type:"string"},{key:"meta",type:"json"}],quality:{enabled:!1}}),this.modelParser?.addModel({key:"$DcuplErrorTrackingType",data:[{key:"UndefinedAttribute"},{key:"InvalidValidator"},{key:"UndefinedValue"},{key:"NullValue"},{key:"WrongDataType"},{key:"MissingModel"},{key:"NonUniqueKey"},{key:"RemoteReferenceKeyNotFound"},{key:"InvalidModelDescription"},{key:"InvalidResource"},{key:"InvalidModelDefinition"}],quality:{enabled:!1}}),this.modelParser?.addModel({key:"$DcuplErrorTrackingGroup",data:[{key:"ReferenceDataError"},{key:"PropertyDataError"},{key:"DataContainerError"},{key:"ModelDescriptionError"},{key:"LoaderError"},{key:"ResourceError"},{key:"ModelDefinitionError"}],quality:{enabled:!1}}),this.modelParser?.addModel({key:"$DcuplErrorTrackingModel",supportsAutoCreation:!0,quality:{enabled:!1}})}initAnalyticsValues(){this.calculateTiming(),this.calculateSizes(),this.calculateErrorTrackingFacet(),this.calculateCounts(),this.calculateUnusedAttributes()}calculateUnusedAttributes(){this.values.unusedAttributes=[];const e=this.dcupl.models.keys();for(const t of e){const s=this.getUnusedAttributesFromModel(this.dcupl,t);for(const n of s)this.values.unusedAttributes?.push({model:t,attribute:n})}}calculateCounts(){this.values.counts={},this.values.counts.modelFiles=this.dcupl.modelParser.unprocessedModelDescriptions.size,this.values.counts.dataFiles=this.dcupl.modelParser.unprocessedData.length,this.values.counts.models=this.dcupl.models.keys().length;let e=0,t=0,s=0;this.dcupl.models.keys().forEach(n=>{const o=this.dcupl.modelParser.models.get(n);if(!o)return;const i=o?.getBasicProperties()||[],a=o?.getBasicReferences()||[],l=i.length+a.length;t+=l;const c=o.data?.size||0;e+=c,s+=l*c}),this.values.counts.rows=e,this.values.counts.attributes=t,this.values.counts.dataEntries=s}calculateTiming(){const e=this.dcupl.analyticsController.getByName("loader_processed");e&&e[0]&&(this.values.loading=e[0].value);const t=this.dcupl.analyticsController.getByName("dcupl_initialized");t&&t[0]&&(this.values.processing=t[0].value),this.values.startup=this.values.loading+this.values.processing}calculateSizes(){const e=this.calculateSizesForModels();this.values.sizes={},this.values.sizes.totalEncoded=e.reduce((t,s)=>t+s.encodedBodySize,0),this.values.sizes.totalDecoded=e.reduce((t,s)=>t+s.decodedBodySize,0),this.values.sizes.unusedDecoded=this.calculateUnusedData(),this.values.sizes.models=e.map(t=>({model:t.model,decodedBodySize:t.decodedBodySize,encodedBodySize:t.encodedBodySize})),this.values.sizes.models?.sort((t,s)=>(s.encodedBodySize||0)-(t.encodedBodySize||0))}calculateErrorTrackingFacet(){try{if(!this.enabled)return;const e=this.dcupl.lists.create({modelKey:"$DcuplErrorTrackingErrors"}),t=e.catalog.fn.facets({attribute:"errorType",calculateResults:!0,excludeUndefineds:!1,excludeUnresolved:!1,excludeZeros:!1});this.values.errors={},t&&(this.values.errors.size=e.catalog.fn.metadata().currentSize,this.values.errors.UndefinedValue=t.find(s=>s.key==="UndefinedValue")?.size||0,this.values.errors.UndefinedAttribute=t.find(s=>s.key==="UndefinedAttribute")?.size||0,this.values.errors.WrongDataType=t.find(s=>s.key==="WrongDataType")?.size||0,this.values.errors.MissingModel=t.find(s=>s.key==="MissingModel")?.size||0,this.values.errors.InvalidModelDescription=t.find(s=>s.key==="InvalidModelDescription")?.size||0,this.values.errors.RemoteReferenceKeyNotFound=t.find(s=>s.key==="RemoteReferenceKeyNotFound")?.size||0)}catch(e){this.log.error("Error calculating error tracking facet",e)}}calculateSizesForModels(){const e=this.dcupl.analyticsController.getByType("resource").filter(s=>s.value?.type==="data"),t=Dr(e,s=>s.value?.model);return Object.keys(t).map(s=>{const n=t[s]?.reduce((i,a)=>{const l=a.value.encodedBodySize;return i+l},0),o=t[s]?.reduce((i,a)=>{const l=a.value.decodedBodySize;return i+l},0);return{model:s,decodedBodySize:o,encodedBodySize:n}})}calculateUnusedData(){const e=this.dcupl.models.keys();let t=0;return e.forEach(s=>{const n=this.dcupl.modelParser.unprocessedData.find(a=>a.model===s)?.data||[],o=this.getUnusedAttributesFromModel(this.dcupl,s);if(!o.length)return;const i=this.getDataWithAttributes(n,o);t+=JSON.stringify(i).length}),t}getDataWithAttributes(e,t){return e.map(s=>{const n={};return t.forEach(o=>{n[o]=s[o]}),n})}getUnusedAttributesFromModel(e,t){const s=e.modelParser.models.get(t),n=s?.getBasicProperties()||[],o=s?.getBasicReferences()||[],i=s?.keyProperty||"key",a=[...n,...o].map(c=>c.key);a.push(i),a.push("key");const l=e.modelParser.unprocessedData.find(c=>c.model===t)?.data||[];return this.getUnusedAttributes(l,a)}getUnusedAttributes(e,t){const s=new Set;return e.forEach(n=>{Object.keys(n).forEach(o=>{t.includes(o)||s.add(o)})}),Array.from(s.values())}validateAttribute(e,t,s){const n=[];if(t.email){const o=this.validateEmail(e,s);o&&n.push(o)}if(t.endsWith){const o=this.validateEndsWith(e,t.endsWith,s);o&&n.push(o)}if(t.enum){const o=this.validateEnum(e,t.enum,s);o&&n.push(o)}if(t.includes){const o=this.validateIncludes(e,t.includes,s);o&&n.push(o)}if(t.max){const o=this.validateMax(e,t.max,s);o&&n.push(o)}if(t.maxLength){const o=this.validateMaxLength(e,t.maxLength,s);o&&n.push(o)}if(t.min){const o=this.validateMin(e,t.min,s);o&&n.push(o)}if(t.minLength){const o=this.validateMinLength(e,t.minLength,s);o&&n.push(o)}if(t.pattern){const o=this.validatePattern(e,t.pattern,s);o&&n.push(o)}if(t.startsWith){const o=this.validateStartsWith(e,t.startsWith,s);o&&n.push(o)}return n}validateAttributesAfterInitialization(e){if(!e)return[];const t=e.getAttributes(),s=e.getDataAsArray(),n=[];for(const o of t){const i=o.quality?.validators;if(i&&i.unique){const a=this.validateUnique(s,o.key,e);n.push(...a)}}return n}validateUnique(e,t,s){const n=[],o=new Set,i=s.attributeQualityConfigs?.get(t)?.validatorHandling!=="loose";for(const a of e){const l=a[t];if(o.has(l)){const c={title:"Validator Error - Unique",type:"model",errorGroup:"PropertyDataError",model:s.key,errorType:"InvalidValidator",attribute:t,itemKey:a.key,description:`The value "${l}" is not unique`};n.push(c),i&&delete a[t]}else o.add(l)}return n}validateEmail(e,t){if(e!=null&&!/^[\w.-]+@[a-zA-Z\d.-]+\.[a-zA-Z]{2,6}$/.test(e))return{title:"Validator Error - Invalid Email",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:t,description:`The value "${e}" is not a valid email address`}}validateMin(e,t,s){if(e<t.value)return{title:"Validator Error - Min Value",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" is smaller than the minimum value of "${t.value}"`}}validateMax(e,t,s){if(e>t.value)return{title:"Validator Error - Max Value",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" is larger than the maximum value of "${t.value}"`}}validateStartsWith(e,t,s){if(e!=null&&!e.startsWith(t.value))return{title:"Validator Error - StartsWith",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" does not start with "${t.value}"`}}validateEndsWith(e,t,s){if(e!=null&&!hn(e,t.value))return{title:"Validator Error - EndsWith",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" does not end with "${t.value}"`}}validateIncludes(e,t,s){if(e!=null&&!$h(e,t.value))return{title:"Validator Error - Includes",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" does not include "${t.value}"`}}validateMinLength(e,t,s){if(e!=null&&e.length<t.value)return{title:"Validator Error - Min Length",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" is shorter than the minimum length of "${t.value}"`}}validateMaxLength(e,t,s){if(e!=null&&e.length>t.value)return{title:"Validator Error - Max Length",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" is longer than the maximum length of "${t.value}"`}}validateEnum(e,t,s){if(!t.value.includes(e))return{title:"Validator Error - Enum",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" is not in the enum values`}}validatePattern(e,t,s){if(e!=null)try{if(!new RegExp(t.value).test(e))return{title:"Validator Error - Pattern",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" does not match the pattern "${t.value}"`}}catch(n){this.log.error("Invalid pattern validation",n)}}};var Rh=Object.defineProperty,Eh=Object.getOwnPropertyDescriptor,Q=(r,e,t,s)=>{for(var n=Eh(e,t),o=r.length-1,i;o>=0;o--)(i=r[o])&&(n=i(e,t,n)||n);return n&&Rh(e,t,n),n};let F=class{cdRef=new br;analyticsController=new ef;scriptController=new Df;qualityController=new jh(this.scriptController);log=Ee.child({prefix:"Dcupl"});modelParser=new nt(this.cdRef,this.qualityController,this);globalItemService=new Tn(this.modelParser,this.scriptController);cacheCtrl=new Dn(!1);queryManager=new _f(this.scriptController,this.globalItemService,this.modelParser);_loaders=new Map;rootQueryBuilder=new me;_defaultInitOptions={config:{projectId:void 0,apiKey:void 0,version:"draft"},errorTracking:{enabled:!1},quality:{enabled:!0},analytics:{enabled:!1},performance:{cache:{enabled:!0},clone:{enabled:!0},partialUpdates:{modelRatioThreshold:.5,itemRatioThreshold:.5,cacheInvalidationThreshold:.7,enableDetailedLogging:!1},autoUpdateLists:{enabled:!1}},referenceMetadata:{enabled:!1}};initOptions;lists=new Qn(this,this.cdRef);busy=!1;updateQueue=[];constructor(e){this.analyticsController.init(!!e?.analytics?.enabled),this.qualityController.dcupl=this,this.analyticsController.mark({name:"dcupl:constructor"}),this.initOptions=st({},this._defaultInitOptions,e),this.qualityController.enabled=this.initOptions.errorTracking?.enabled||this.initOptions.quality?.enabled||!1,this.modelParser.initOptions=Object.assign({},this.initOptions),this.cdRef._init({cdRefKey:"root",dcuplInitOptions:this.initOptions,analyticsController:this.analyticsController}),this.cacheCtrl.enabled=!!this.initOptions.performance?.cache?.enabled}models={get:e=>this.modelParser.models.get(e)?.getModelDefinition(),set:e=>(this.modelParser.models.delete(e.key),this.modelParser.addModel(e)),update:e=>this.modelParser.addModel(e),remove:e=>{this.modelParser.models.delete(e)},keys:()=>this.modelParser._getModelKeys()};views={get:e=>this.modelParser.views.get(e),keys:e=>this.modelParser._getViewKeys(e),set:e=>this.modelParser.addView(e)};data={update:(e,t)=>{this.modelParser.addData({data:e,model:t.model,type:"update",keyProperty:t.keyProperty,autoGenerateKey:t.autoGenerateKey})},upsert:(e,t)=>{this.modelParser.addData({data:e,model:t.model,type:"upsert",keyProperty:t.keyProperty,autoGenerateKey:t.autoGenerateKey})},set:(e,t)=>{this.modelParser.addData({data:e,model:t.model,type:"set",keyProperty:t.keyProperty,autoGenerateKey:t.autoGenerateKey})},remove:(e,t)=>{this.modelParser.addData({data:e,model:t.model,type:"remove",keyProperty:t.keyProperty,autoGenerateKey:t.autoGenerateKey})},reset:e=>{e.model&&(this.modelParser.models.get(e.model)?.resetData(),this.modelParser.models.get(e.model)?.resetIndexMap())},apply:e=>this.modelParser.addData(e)};loaders={add:(e,t)=>{this.addLoader(e,t)},remove:e=>{this.removeLoader(e)},get:e=>this._loaders.get(e)};scripts={set:(e,t)=>{this.scriptController.setScript(e,t)},remove:e=>{this.scriptController.removeScript(e)},get:e=>{this.scriptController.getScript(e)},keys:()=>this.scriptController.keys(),execute:(e,t)=>{const s={dcupl:this,options:t};return this.scriptController.executeScript(e,"script",s)},executeAsync:(e,t)=>new Promise((s,n)=>{const o={dcupl:this,options:t,resolve:s,reject:n};return this.scriptController.executeScript(e,"async_script",o)})};fn={pivot:e=>this._pivot(e),aggregate:e=>this._aggregate(e),suggest:e=>this._suggest(e),groupBy:e=>this._groupBy(e),facets:e=>this._facets(e),metadata:e=>this._metadata(e)};_pivot(e){return this.getFnList(e).catalog.fn.pivot(e.options)}_aggregate(e){return this.getFnList(e).catalog.fn.aggregate(e.options)}_suggest(e){return this.getFnList(e).catalog.fn.suggest(e.options)}_groupBy(e){return this.getFnList(e).catalog.fn.groupBy(e.options)}_facets(e){return this.getFnList(e).catalog.fn.facets(e.options)}_metadata(e){return this.getFnList(e).catalog.fn.metadata()}registerContainer(e){this.modelParser.addData(e)}updateRegisteredContainer(e){const t=this.modelParser.unprocessedData.findIndex(s=>s.placeholderUid===e.placeholderUid);t>-1&&(delete e.placeholderUid,this.modelParser.unprocessedData[t]=e)}removeRegisteredContainer(e){const t=this.modelParser.unprocessedData.findIndex(s=>s.placeholderUid===e.placeholderUid);t>-1&&this.modelParser.unprocessedData.splice(t,1)}getFnList(e){let t=this.lists.get(`__global_list__${e.modelKey}`);return t||(t=this.lists.create({modelKey:e.modelKey,listKey:`__global_list__${e.modelKey}`})),e.query?t.catalog.query.apply(e.query,{mode:"set"}):t.catalog.query.reset(),t}getAffectedModels(e){const t=new Set;for(const n of e.keys())t.add(n);const s=this.modelParser.dependencyGraph;if(s)for(const n of e.keys())this.getDownstreamDependencies(n,s).forEach(o=>t.add(o));return Array.from(t)}getDownstreamDependencies(e,t){const s=new Set,n=new Set,o=i=>{if(!n.has(i)){n.add(i);for(const[a,l]of Object.entries(t.dependencies||{}))Array.isArray(l)&&l.includes(i)&&(s.add(a),o(a))}};return o(e),s}updateFnLists(e,t){const s=this.initOptions.performance?.partialUpdates?.enableDetailedLogging??!1;for(const n of this.lists.getAll()){if(!this.shouldAutoUpdateList(n,t)){s&&this.log.debug("List skipped (auto-update disabled)",{listKey:n.key,modelKey:n.modelKey});continue}e?this.isListAffectedByChanges(n,e.affectedModels)?(s&&this.log.debug("List auto-updating (affected by changes)",{listKey:n.key,modelKey:n.modelKey,affectedModels:e.affectedModels}),n.update()):s&&this.log.debug("List skipped (not affected)",{listKey:n.key,modelKey:n.modelKey}):(s&&this.log.debug("List auto-updating (full update)",{listKey:n.key,modelKey:n.modelKey}),n.update())}}isListAffectedByChanges(e,t){const s=e.modelKey;return t.includes(s)}shouldAutoUpdateList(e,t){return e.key.startsWith("__global_list__")?!0:t!==void 0?t:e.options.autoUpdate!==void 0?e.options.autoUpdate:this.initOptions.performance?.autoUpdateLists?.enabled??!1}query={one:e=>this.getItem(e),many:e=>this._getManyItems(e),execute:e=>this.executeQuery(e),generate:(e,t)=>(this.rootQueryBuilder.init({modelKey:e}),this.rootQueryBuilder.applyQuery(t)),registerCustomOperator:(e,t)=>{this.queryManager.registerCustomOperator(e,t)}};on(e){return this.cdRef.on(e)}async init(){try{return await this.performUpdate(()=>this.modelParser.init()),this.cacheCtrl.clear(),!0}catch(e){return this.log.error("Initialization failed",e),!1}}async update(e){try{const t=this.modelParser.changeTracker,s=t.hasChanges(),n=s?new Map(t.getChangedAttributes()):null,o=s?new Set(t.getModelsWithFullReset()):null,i=this.cacheCtrl.getStats();if(await this.performUpdate(()=>this.modelParser.update()),s&&this.cacheCtrl.enabled&&n){const a=this.modelParser.getTotalItemCount(),l=t.getTotalChangedItemCount(),c=a>0?l/a:0,u=this.initOptions.performance?.partialUpdates?.cacheInvalidationThreshold??.7,d=this.initOptions.performance?.partialUpdates?.enableDetailedLogging??!1;o&&o.size>0?(d&&this.log.debug("Cache invalidation: Full clear",{reason:"full_reset_detected"}),this.cacheCtrl.clear()):c>u?(d&&this.log.debug("Cache invalidation: Full clear",{reason:"high_item_ratio",ratio:c.toFixed(2),threshold:u,changedItems:l,totalItems:a}),this.cacheCtrl.clear()):(d&&this.log.debug("Cache invalidation: Selective",{changedItems:l,totalItems:a,ratio:c.toFixed(2)}),this.cacheCtrl.invalidateByDependencies(n))}else(this.initOptions.performance?.partialUpdates?.enableDetailedLogging??!1)&&this.log.debug("Cache invalidation: Full clear",{reason:"full_update"}),this.cacheCtrl.clear();if(this.cacheCtrl.getStats){const a=this.cacheCtrl.getStats(),l=this.modelParser.partialUpdateMetrics.getLastUpdates(1);if(l.length>0&&l[0]){const c=l[0];c.cacheStats={entriesInvalidated:i.totalEntries-a.totalEntries,totalEntries:i.totalEntries}}}if(s&&n){const a={isPartialUpdate:!0,changedModels:Array.from(n.keys()),changedAttributes:n,affectedModels:this.getAffectedModels(n)};this.cdRef.trigger({scope:"global",type:"dcupl_partial_update",args:[a]}),this.updateFnLists(a,e?.autoUpdateLists)}else this.updateFnLists(null,e?.autoUpdateLists);return!0}catch(t){return this.log.error("Update failed",t),!1}}destroy(){try{this.lists.destroy(),this._loaders.forEach(e=>{e.destroy()})}catch{}}getItem(e){const t=this.modelParser.models.get(e.modelKey);if(!t)throw new Error;return this.globalItemService.getItem(e.itemKey,t.data,t,e)}_getManyItems(e){const t=this.modelParser.models.get(e.modelKey);if(!t)throw new Error;return this.globalItemService.getManyItems(e.itemKeys,t.data,t,e)}executeQuery(e){if(!e?.modelKey)throw new Error("No modelKey provided");return this.getFnList({modelKey:e?.modelKey}).catalog.query.execute(e)}addLoader(e,t){const s=ye.now(),n=t||L();this._loaders.set(n,e),e.core=this,e.key=n;const o=new br;o._init({cdRefKey:n,parentCd:this.cdRef,dcuplInitOptions:this.initOptions,analyticsController:this.analyticsController}),e.cdRef=o,this.initOptions.config?.projectId&&e.defaultVariables.set("projectId",{key:"projectId",value:this.initOptions.config?.projectId}),this.initOptions.config?.apiKey&&e.defaultVariables.set("apiKey",{key:"apiKey",value:this.initOptions.config?.apiKey}),this.initOptions.config?.version&&e.defaultVariables.set("version",{key:"version",value:this.initOptions.config?.version}),this.cdRef.trigger({scope:"global",type:"loader_added",connectMessage:!0,args:[n],start:s})}removeLoader(e){const t=this._loaders.get(e);t&&t.destroy(),this._loaders.delete(e)}async performUpdate(e){if(this.busy)return new Promise(t=>{this.updateQueue.push(()=>e().then(t))});try{this.busy=!0,await e()}finally{this.busy=!1,this.processQueue()}}async processQueue(){if(this.updateQueue.length>0){const e=this.updateQueue.shift();e&&(await e(),this.processQueue())}}};Q([v({scope:"global",type:"fn_pivot",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],F.prototype,"_pivot"),Q([v({scope:"global",type:"fn_aggregate",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],F.prototype,"_aggregate"),Q([v({scope:"global",type:"fn_suggest",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],F.prototype,"_suggest"),Q([v({scope:"global",type:"fn_groupBy",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],F.prototype,"_groupBy"),Q([v({scope:"global",type:"fn_facets",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],F.prototype,"_facets"),Q([v({scope:"global",type:"fn_metadata",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],F.prototype,"_metadata"),Q([v({scope:"global",type:"dcupl_initialized",connectMessage:!0})],F.prototype,"init"),Q([v({scope:"global",type:"dcupl_updated_manually",action:"update",connectMessage:!0})],F.prototype,"update"),Q([v({scope:"global",type:"dcupl_destroyed",connectMessage:!0})],F.prototype,"destroy"),Q([v({scope:"global",type:"query_one",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],F.prototype,"getItem"),Q([v({scope:"global",type:"query_many",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],F.prototype,"_getManyItems"),Q([v({scope:"global",type:"query_execute",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],F.prototype,"executeQuery"),Q([v({scope:"global",type:"loader_removed",connectMessage:!0})],F.prototype,"removeLoader");let Mh=class extends F{version="2.0.0-beta.2";constructor(e){super(e)}};var Bn=typeof global=="object"&&global&&global.Object===Object&&global,Ih=typeof self=="object"&&self&&self.Object===Object&&self,Z=Bn||Ih||Function("return this")(),le=Z.Symbol,Vn=Object.prototype,Sh=Vn.hasOwnProperty,Th=Vn.toString,ot=le?le.toStringTag:void 0;function Oh(r){var e=Sh.call(r,ot),t=r[ot];try{r[ot]=void 0;var s=!0}catch{}var n=Th.call(r);return s&&(e?r[ot]=t:delete r[ot]),n}var Kh=Object.prototype,Fh=Kh.toString;function qh(r){return Fh.call(r)}var Qh="[object Null]",Bh="[object Undefined]",Gn=le?le.toStringTag:void 0;function Ie(r){return r==null?r===void 0?Bh:Qh:Gn&&Gn in Object(r)?Oh(r):qh(r)}function Se(r){return r!=null&&typeof r=="object"}var Vh="[object Symbol]";function Rr(r){return typeof r=="symbol"||Se(r)&&Ie(r)==Vh}function Gh(r,e){for(var t=-1,s=r==null?0:r.length,n=Array(s);++t<s;)n[t]=e(r[t],t,r);return n}var Te=Array.isArray,Un=le?le.prototype:void 0,Nn=Un?Un.toString:void 0;function zn(r){if(typeof r=="string")return r;if(Te(r))return Gh(r,zn)+"";if(Rr(r))return Nn?Nn.call(r):"";var e=r+"";return e=="0"&&1/r==-1/0?"-0":e}function It(r){var e=typeof r;return r!=null&&(e=="object"||e=="function")}var Uh="[object AsyncFunction]",Nh="[object Function]",zh="[object GeneratorFunction]",Lh="[object Proxy]";function Ln(r){if(!It(r))return!1;var e=Ie(r);return e==Nh||e==zh||e==Uh||e==Lh}var Er=Z["__core-js_shared__"],Wn=(function(){var r=/[^.]+$/.exec(Er&&Er.keys&&Er.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""})();function Wh(r){return!!Wn&&Wn in r}var Hh=Function.prototype,Jh=Hh.toString;function ve(r){if(r!=null){try{return Jh.call(r)}catch{}try{return r+""}catch{}}return""}var Zh=/[\\^$.*+?()[\]{}|]/g,Xh=/^\[object .+?Constructor\]$/,Yh=Function.prototype,ep=Object.prototype,tp=Yh.toString,rp=ep.hasOwnProperty,sp=RegExp("^"+tp.call(rp).replace(Zh,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function np(r){if(!It(r)||Wh(r))return!1;var e=Ln(r)?sp:Xh;return e.test(ve(r))}function op(r,e){return r?.[e]}function be(r,e){var t=op(r,e);return np(t)?t:void 0}var Mr=be(Z,"WeakMap"),Hn=Object.create,ip=(function(){function r(){}return function(e){if(!It(e))return{};if(Hn)return Hn(e);r.prototype=e;var t=new r;return r.prototype=void 0,t}})(),Jn=(function(){try{var r=be(Object,"defineProperty");return r({},"",{}),r}catch{}})();function ap(r,e){for(var t=-1,s=r==null?0:r.length;++t<s&&e(r[t],t,r)!==!1;);return r}var lp=9007199254740991,cp=/^(?:0|[1-9]\d*)$/;function up(r,e){var t=typeof r;return e=e??lp,!!e&&(t=="number"||t!="symbol"&&cp.test(r))&&r>-1&&r%1==0&&r<e}function dp(r,e,t){e=="__proto__"&&Jn?Jn(r,e,{configurable:!0,enumerable:!0,value:t,writable:!0}):r[e]=t}function Zn(r,e){return r===e||r!==r&&e!==e}var fp=Object.prototype,hp=fp.hasOwnProperty;function pp(r,e,t){var s=r[e];(!(hp.call(r,e)&&Zn(s,t))||t===void 0&&!(e in r))&&dp(r,e,t)}var yp=9007199254740991;function Xn(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=yp}function gp(r){return r!=null&&Xn(r.length)&&!Ln(r)}var mp=Object.prototype;function Yn(r){var e=r&&r.constructor,t=typeof e=="function"&&e.prototype||mp;return r===t}function vp(r,e){for(var t=-1,s=Array(r);++t<r;)s[t]=e(t);return s}var bp="[object Arguments]";function eo(r){return Se(r)&&Ie(r)==bp}var to=Object.prototype,kp=to.hasOwnProperty,Ap=to.propertyIsEnumerable,wp=eo((function(){return arguments})())?eo:function(r){return Se(r)&&kp.call(r,"callee")&&!Ap.call(r,"callee")};function $p(){return!1}var ro=typeof exports=="object"&&exports&&!exports.nodeType&&exports,so=ro&&typeof module=="object"&&module&&!module.nodeType&&module,Cp=so&&so.exports===ro,no=Cp?Z.Buffer:void 0,_p=no?no.isBuffer:void 0,oo=_p||$p,Dp="[object Arguments]",xp="[object Array]",Pp="[object Boolean]",jp="[object Date]",Rp="[object Error]",Ep="[object Function]",Mp="[object Map]",Ip="[object Number]",Sp="[object Object]",Tp="[object RegExp]",Op="[object Set]",Kp="[object String]",Fp="[object WeakMap]",qp="[object ArrayBuffer]",Qp="[object DataView]",Bp="[object Float32Array]",Vp="[object Float64Array]",Gp="[object Int8Array]",Up="[object Int16Array]",Np="[object Int32Array]",zp="[object Uint8Array]",Lp="[object Uint8ClampedArray]",Wp="[object Uint16Array]",Hp="[object Uint32Array]",C={};C[Bp]=C[Vp]=C[Gp]=C[Up]=C[Np]=C[zp]=C[Lp]=C[Wp]=C[Hp]=!0,C[Dp]=C[xp]=C[qp]=C[Pp]=C[Qp]=C[jp]=C[Rp]=C[Ep]=C[Mp]=C[Ip]=C[Sp]=C[Tp]=C[Op]=C[Kp]=C[Fp]=!1;function Jp(r){return Se(r)&&Xn(r.length)&&!!C[Ie(r)]}function Ir(r){return function(e){return r(e)}}var io=typeof exports=="object"&&exports&&!exports.nodeType&&exports,it=io&&typeof module=="object"&&module&&!module.nodeType&&module,Zp=it&&it.exports===io,Sr=Zp&&Bn.process,Oe=(function(){try{var r=it&&it.require&&it.require("util").types;return r||Sr&&Sr.binding&&Sr.binding("util")}catch{}})(),ao=Oe&&Oe.isTypedArray,Xp=ao?Ir(ao):Jp,Yp=Object.prototype,ey=Yp.hasOwnProperty;function ty(r,e){var t=Te(r),s=!t&&wp(r),n=!t&&!s&&oo(r),o=!t&&!s&&!n&&Xp(r),i=t||s||n||o,a=i?vp(r.length,String):[],l=a.length;for(var c in r)ey.call(r,c)&&!(i&&(c=="length"||n&&(c=="offset"||c=="parent")||o&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||up(c,l)))&&a.push(c);return a}function lo(r,e){return function(t){return r(e(t))}}var ry=lo(Object.keys,Object),sy=Object.prototype,ny=sy.hasOwnProperty;function oy(r){if(!Yn(r))return ry(r);var e=[];for(var t in Object(r))ny.call(r,t)&&t!="constructor"&&e.push(t);return e}function iy(r){return gp(r)?ty(r):oy(r)}var ay=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ly=/^\w*$/;function cy(r,e){if(Te(r))return!1;var t=typeof r;return t=="number"||t=="symbol"||t=="boolean"||r==null||Rr(r)?!0:ly.test(r)||!ay.test(r)||e!=null&&r in Object(e)}var at=be(Object,"create");function uy(){this.__data__=at?at(null):{},this.size=0}function dy(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}var fy="__lodash_hash_undefined__",hy=Object.prototype,py=hy.hasOwnProperty;function yy(r){var e=this.__data__;if(at){var t=e[r];return t===fy?void 0:t}return py.call(e,r)?e[r]:void 0}var gy=Object.prototype,my=gy.hasOwnProperty;function vy(r){var e=this.__data__;return at?e[r]!==void 0:my.call(e,r)}var by="__lodash_hash_undefined__";function ky(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=at&&e===void 0?by:e,this}function ke(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}ke.prototype.clear=uy,ke.prototype.delete=dy,ke.prototype.get=yy,ke.prototype.has=vy,ke.prototype.set=ky;function Ay(){this.__data__=[],this.size=0}function St(r,e){for(var t=r.length;t--;)if(Zn(r[t][0],e))return t;return-1}var wy=Array.prototype,$y=wy.splice;function Cy(r){var e=this.__data__,t=St(e,r);if(t<0)return!1;var s=e.length-1;return t==s?e.pop():$y.call(e,t,1),--this.size,!0}function _y(r){var e=this.__data__,t=St(e,r);return t<0?void 0:e[t][1]}function Dy(r){return St(this.__data__,r)>-1}function xy(r,e){var t=this.__data__,s=St(t,r);return s<0?(++this.size,t.push([r,e])):t[s][1]=e,this}function ne(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}ne.prototype.clear=Ay,ne.prototype.delete=Cy,ne.prototype.get=_y,ne.prototype.has=Dy,ne.prototype.set=xy;var lt=be(Z,"Map");function Py(){this.size=0,this.__data__={hash:new ke,map:new(lt||ne),string:new ke}}function jy(r){var e=typeof r;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?r!=="__proto__":r===null}function Tt(r,e){var t=r.__data__;return jy(e)?t[typeof e=="string"?"string":"hash"]:t.map}function Ry(r){var e=Tt(this,r).delete(r);return this.size-=e?1:0,e}function Ey(r){return Tt(this,r).get(r)}function My(r){return Tt(this,r).has(r)}function Iy(r,e){var t=Tt(this,r),s=t.size;return t.set(r,e),this.size+=t.size==s?0:1,this}function ce(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}ce.prototype.clear=Py,ce.prototype.delete=Ry,ce.prototype.get=Ey,ce.prototype.has=My,ce.prototype.set=Iy;var Sy="Expected a function";function Tr(r,e){if(typeof r!="function"||e!=null&&typeof e!="function")throw new TypeError(Sy);var t=function(){var s=arguments,n=e?e.apply(this,s):s[0],o=t.cache;if(o.has(n))return o.get(n);var i=r.apply(this,s);return t.cache=o.set(n,i)||o,i};return t.cache=new(Tr.Cache||ce),t}Tr.Cache=ce;var Ty=500;function Oy(r){var e=Tr(r,function(s){return t.size===Ty&&t.clear(),s}),t=e.cache;return e}var Ky=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Fy=/\\(\\)?/g,qy=Oy(function(r){var e=[];return r.charCodeAt(0)===46&&e.push(""),r.replace(Ky,function(t,s,n,o){e.push(n?o.replace(Fy,"$1"):s||t)}),e});function Qy(r){return r==null?"":zn(r)}function By(r,e){return Te(r)?r:cy(r,e)?[r]:qy(Qy(r))}function Vy(r){if(typeof r=="string"||Rr(r))return r;var e=r+"";return e=="0"&&1/r==-1/0?"-0":e}function Gy(r,e){e=By(e,r);for(var t=0,s=e.length;r!=null&&t<s;)r=r[Vy(e[t++])];return t&&t==s?r:void 0}function Uy(r,e,t){var s=r==null?void 0:Gy(r,e);return s===void 0?t:s}function Ny(r,e){for(var t=-1,s=e.length,n=r.length;++t<s;)r[n+t]=e[t];return r}var zy=lo(Object.getPrototypeOf,Object);function Ly(){this.__data__=new ne,this.size=0}function Wy(r){var e=this.__data__,t=e.delete(r);return this.size=e.size,t}function Hy(r){return this.__data__.get(r)}function Jy(r){return this.__data__.has(r)}var Zy=200;function Xy(r,e){var t=this.__data__;if(t instanceof ne){var s=t.__data__;if(!lt||s.length<Zy-1)return s.push([r,e]),this.size=++t.size,this;t=this.__data__=new ce(s)}return t.set(r,e),this.size=t.size,this}function Ke(r){var e=this.__data__=new ne(r);this.size=e.size}Ke.prototype.clear=Ly,Ke.prototype.delete=Wy,Ke.prototype.get=Hy,Ke.prototype.has=Jy,Ke.prototype.set=Xy;var co=typeof exports=="object"&&exports&&!exports.nodeType&&exports,uo=co&&typeof module=="object"&&module&&!module.nodeType&&module,Yy=uo&&uo.exports===co,fo=Yy?Z.Buffer:void 0;fo&&fo.allocUnsafe;function eg(r,e){return r.slice()}function tg(r,e){for(var t=-1,s=r==null?0:r.length,n=0,o=[];++t<s;){var i=r[t];e(i,t,r)&&(o[n++]=i)}return o}function rg(){return[]}var sg=Object.prototype,ng=sg.propertyIsEnumerable,ho=Object.getOwnPropertySymbols,og=ho?function(r){return r==null?[]:(r=Object(r),tg(ho(r),function(e){return ng.call(r,e)}))}:rg;function ig(r,e,t){var s=e(r);return Te(r)?s:Ny(s,t(r))}function ag(r){return ig(r,iy,og)}var Or=be(Z,"DataView"),Kr=be(Z,"Promise"),Fr=be(Z,"Set"),po="[object Map]",lg="[object Object]",yo="[object Promise]",go="[object Set]",mo="[object WeakMap]",vo="[object DataView]",cg=ve(Or),ug=ve(lt),dg=ve(Kr),fg=ve(Fr),hg=ve(Mr),oe=Ie;(Or&&oe(new Or(new ArrayBuffer(1)))!=vo||lt&&oe(new lt)!=po||Kr&&oe(Kr.resolve())!=yo||Fr&&oe(new Fr)!=go||Mr&&oe(new Mr)!=mo)&&(oe=function(r){var e=Ie(r),t=e==lg?r.constructor:void 0,s=t?ve(t):"";if(s)switch(s){case cg:return vo;case ug:return po;case dg:return yo;case fg:return go;case hg:return mo}return e});var pg=Object.prototype,yg=pg.hasOwnProperty;function gg(r){var e=r.length,t=new r.constructor(e);return e&&typeof r[0]=="string"&&yg.call(r,"index")&&(t.index=r.index,t.input=r.input),t}var bo=Z.Uint8Array;function qr(r){var e=new r.constructor(r.byteLength);return new bo(e).set(new bo(r)),e}function mg(r,e){var t=qr(r.buffer);return new r.constructor(t,r.byteOffset,r.byteLength)}var vg=/\w*$/;function bg(r){var e=new r.constructor(r.source,vg.exec(r));return e.lastIndex=r.lastIndex,e}var ko=le?le.prototype:void 0,Ao=ko?ko.valueOf:void 0;function kg(r){return Ao?Object(Ao.call(r)):{}}function Ag(r,e){var t=qr(r.buffer);return new r.constructor(t,r.byteOffset,r.length)}var wg="[object Boolean]",$g="[object Date]",Cg="[object Map]",_g="[object Number]",Dg="[object RegExp]",xg="[object Set]",Pg="[object String]",jg="[object Symbol]",Rg="[object ArrayBuffer]",Eg="[object DataView]",Mg="[object Float32Array]",Ig="[object Float64Array]",Sg="[object Int8Array]",Tg="[object Int16Array]",Og="[object Int32Array]",Kg="[object Uint8Array]",Fg="[object Uint8ClampedArray]",qg="[object Uint16Array]",Qg="[object Uint32Array]";function Bg(r,e,t){var s=r.constructor;switch(e){case Rg:return qr(r);case wg:case $g:return new s(+r);case Eg:return mg(r);case Mg:case Ig:case Sg:case Tg:case Og:case Kg:case Fg:case qg:case Qg:return Ag(r);case Cg:return new s;case _g:case Pg:return new s(r);case Dg:return bg(r);case xg:return new s;case jg:return kg(r)}}function Vg(r){return typeof r.constructor=="function"&&!Yn(r)?ip(zy(r)):{}}var Gg="[object Map]";function Ug(r){return Se(r)&&oe(r)==Gg}var wo=Oe&&Oe.isMap,Ng=wo?Ir(wo):Ug,zg="[object Set]";function Lg(r){return Se(r)&&oe(r)==zg}var $o=Oe&&Oe.isSet,Wg=$o?Ir($o):Lg,Co="[object Arguments]",Hg="[object Array]",Jg="[object Boolean]",Zg="[object Date]",Xg="[object Error]",_o="[object Function]",Yg="[object GeneratorFunction]",em="[object Map]",tm="[object Number]",Do="[object Object]",rm="[object RegExp]",sm="[object Set]",nm="[object String]",om="[object Symbol]",im="[object WeakMap]",am="[object ArrayBuffer]",lm="[object DataView]",cm="[object Float32Array]",um="[object Float64Array]",dm="[object Int8Array]",fm="[object Int16Array]",hm="[object Int32Array]",pm="[object Uint8Array]",ym="[object Uint8ClampedArray]",gm="[object Uint16Array]",mm="[object Uint32Array]",A={};A[Co]=A[Hg]=A[am]=A[lm]=A[Jg]=A[Zg]=A[cm]=A[um]=A[dm]=A[fm]=A[hm]=A[em]=A[tm]=A[Do]=A[rm]=A[sm]=A[nm]=A[om]=A[pm]=A[ym]=A[gm]=A[mm]=!0,A[Xg]=A[_o]=A[im]=!1;function Ot(r,e,t,s,n,o){var i;if(i!==void 0)return i;if(!It(r))return r;var a=Te(r);if(a)i=gg(r);else{var l=oe(r),c=l==_o||l==Yg;if(oo(r))return eg(r);if(l==Do||l==Co||c&&!n)i=c?{}:Vg(r);else{if(!A[l])return n?r:{};i=Bg(r,l)}}o||(o=new Ke);var u=o.get(r);if(u)return u;o.set(r,i),Wg(r)?r.forEach(function(h){i.add(Ot(h,e,t,h,r,o))}):Ng(r)&&r.forEach(function(h,p){i.set(p,Ot(h,e,t,p,r,o))});var d=ag,f=a?void 0:d(r);return ap(f||r,function(h,p){f&&(p=h,h=r[p]),pp(i,p,Ot(h,e,t,p,r,o))}),i}var vm=1,bm=4;function km(r){return Ot(r,vm|bm)}const K={now:()=>typeof performance<"u"&&performance.now?performance.now():new Date().getTime(),mark:r=>{typeof performance<"u"&&performance.mark&&performance.mark(r)},measure:(r,e,t)=>{typeof performance<"u"&&performance.measure&&performance.measure(r,e,t)},getEntriesByName(r){if(typeof performance<"u"&&performance.getEntriesByName)return performance.getEntriesByName(r)},getEntriesByType(r){if(typeof performance<"u"&&performance.getEntriesByType)return performance.getEntriesByType(r)}},xo={silent:0,error:1,warn:2,info:3,debug:4};class E{config;static globalConfig={};constructor(e={}){this.config={level:e.level??E.globalConfig.level??this.getDefaultLevel(),format:e.format??E.globalConfig.format??this.getDefaultFormat(),prefix:e.prefix,onLog:e.onLog??E.globalConfig.onLog,onTrackError:e.onTrackError??E.globalConfig.onTrackError}}static setGlobalConfig(e){E.globalConfig={...E.globalConfig,...e}}static getGlobalConfig(){return{...E.globalConfig}}static setModuleLevel(e,t){E.globalConfig.onLog||(E.globalConfig.onLog=void 0),E._moduleOverrides||(E._moduleOverrides=new Map),E._moduleOverrides.set(e,t)}static getModuleLevel(e){if(!(!e||!E._moduleOverrides))return E._moduleOverrides.get(e)}getDefaultLevel(){return"info"}getDefaultFormat(){return"pretty"}getEffectiveLevel(){if(this.config.prefix){const e=E.getModuleLevel(this.config.prefix);if(e)return e}return this.config.level}shouldLog(e){const t=this.getEffectiveLevel();return xo[e]<=xo[t]}formatMessage(e){if(this.config.format==="json"){const i={timestamp:new Date(e.timestamp).toISOString(),level:e.level,message:e.message};return e.prefix&&(i.module=e.prefix),e.context&&(i.context=e.context),e.error&&(i.error={name:e.error.name,message:e.error.message,stack:e.error.stack}),JSON.stringify(i)}const t=new Date(e.timestamp).toISOString().substring(11,23),s=e.prefix?`[${e.prefix}]`:"",n=this.getLevelIcon(e.level),o=e.context?` ${JSON.stringify(e.context)}`:"";return`${t} ${n} ${s} ${e.message}${o}`.trim()}getLevelIcon(e){switch(e){case"error":return"✖";case"warn":return"⚠";case"info":return"ℹ";case"debug":return"⚙";default:return" "}}log(e,t,s,n){if(!this.shouldLog(e))return;const o={level:e,message:t,timestamp:Date.now(),prefix:this.config.prefix,context:s,error:n};if(this.config.onLog){this.config.onLog(o);return}const i=this.formatMessage(o);if(typeof console<"u")switch(e){case"error":n?console.error(i,n):console.error(i);break;case"warn":console.warn(i);break;case"debug":console.debug?console.debug(i):console.log(i);break;default:console.log(i)}}error(e,t,s){const n=t instanceof Error?t:void 0,o=t instanceof Error?s:t;this.log("error",e,o,n)}trackError(e,t,s){if(this.error(e,t,s?.context),this.config.onTrackError){const n={level:"error",message:e,timestamp:Date.now(),prefix:this.config.prefix,context:s?.context,error:t,errorType:s?.errorType,errorGroup:s?.errorGroup};this.config.onTrackError(n)}}warn(e,t){this.log("warn",e,t)}info(e,t){this.log("info",e,t)}debug(e,t){this.log("debug",e,t)}child(e){const t={...this.config,...e,prefix:e.prefix?this.config.prefix?`${this.config.prefix}:${e.prefix}`:e.prefix:this.config.prefix};return new E(t)}configure(e){Object.assign(this.config,e)}}const Qr=new E;function Br(r=10){let e="";const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";for(let s=0;s<r;s++)e+=t.charAt(Math.floor(Math.random()*t.length));return e}let Am=class{key;parentCd;dcuplInitOptions;analyticsController;off;updateListener=new Set;counter=0;constructor(){}_init(e){this.key=e.cdRefKey,this.analyticsController=e.analyticsController,this.parentCd=e.parentCd,this.dcuplInitOptions=e.dcuplInitOptions,this.parentCd&&(this.off=this.parentCd.on(t=>{t.action==="update"&&t.originCdRefKey===this.parentCd?.key&&(t.connectMessage=!1,this.trigger(t))}))}getCounter(){return this.parentCd?this.parentCd.getCounter():this.counter}increaseCounter(){this.parentCd?this.parentCd.increaseCounter():this.counter++}destroy(){this.off&&this.off()}trigger(e){e.originCdRefKey||(e.originCdRefKey=this.key),e.key||(this.increaseCounter(),e.key=this.getCounter()),e.end||(e.end=K.now(),e.duration=e.start-e.end),this.updateListener.forEach(t=>{t(e)})}on(e){return this.updateListener.add(e),()=>{this.updateListener.delete(e)}}};const Po=(r,e)=>e?typeof structuredClone<"u"?structuredClone(r):km(r):r,jo=(r,e,t,s,n,o)=>{try{const i=!!e.dcuplInitOptions.performance?.clone?.enabled&&!!t.cloneResult,a=Po(o,i);if(t.scope==="list"&&(t.listKey=r.cdRef?.key||r.key,t.modelKey=r.model?.key||r.modelKey),t.type==="list_created"&&t.args[0].listKey.startsWith("__global_list__")||t.listKey?.startsWith("__global_list__"))return a;const l=K.now(),c=l-s,u=Math.round(c*1e3)/1e3;t.duration=u,t.start=s,t.end=l;const d={duration:t.duration};return t.modelKey&&(d.model=t.modelKey),t.connectMessageResult&&(t.result=a),t.args&&(d.args=t.args),e?.trigger(t),e.analyticsController.mark({name:`${t.type}:end`,context:n}),e.analyticsController.measure({name:t.type,start:`${t.type}:start`,end:`${t.type}:end`,context:n,detail:d}),a}catch{return o}},Ro=r=>(e,t,s)=>{const n=s.value;return s.value=function(...o){const i=K.now(),a=this.cdRef,l=Po(r,!0);l.key||(a.increaseCounter(),l.key=a.getCounter());const c=Br();a.analyticsController.mark({name:`${l.type}:start`,context:c});const u=this.model?.key;!l.originCdRefKey&&a.key&&(l.originCdRefKey=a.key),u&&(l.modelKey=u);const d=n.apply(this,o);return l.method=t,l.args=o,d&&typeof d=="object"&&"then"in d?d.then(f=>jo(this,a,l,i,c,f)):jo(this,a,l,i,c,d)},s},Kt=(r,e)=>r?(e||(e={}),r.replace(/\$\{(.*?)\}/g,(t,s)=>Uy(e,s.trim(),""))):"";let wm=class{log=Qr.child({prefix:"DcuplCsvParser"});parse(r,e={}){const{quoteChar:t=e.quoteChar||'"',escapeChar:s=e.escapeChar||'"',comments:n=e.comments||void 0,dynamicTyping:o=!1,header:i=!0,skipEmptyLines:a=!0,transformHeader:l,transform:c}=e,u=[],d=i?[]:null;let f=r.length,h=[],p="",y=!1,m=!0,g=0;if(a){for(;g<f&&(r[g]===`
9
- `||r[g]==="\r"||r[g]===""||r[g]==="'"||r[g]==='"');)g++;r=r.slice(g),f=r.length,g=0}const b=e.delimiter||this.detectDelimiter(r);for(;g<f;g++){const x=r[g],B=r[g+1];if(n&&x===n&&!y&&p.length===0){for(;g<f&&r[g]!==`
10
- `;)g++;continue}if(x===`
11
- `||x==="\r"&&B===`
12
- `)if(y)p+=x;else{(p.length>0||!a)&&h.push(p),m&&d?h.forEach(U=>d.push(l?l(U):U)):d?u.push(this.buildObjectRow(d,h,o,c)):u.push([...h]),h=[],p="",m=!1,g+=x==="\r"&&B===`
13
- `?1:0;continue}else if(x===b&&!y)h.push(p),p="";else if(x===t)y?B===s?(p+=t,g++):y=!1:p.length===0?y=!0:p+=x;else if((y||p.length===0)&&(x==="{"||x==="[")){const U=this.extractJson(r,g,b);p+=U.value,g+=U.length-1}else p+=x}return(p.length>0||!a)&&h.push(p),h.length&&(m&&d?h.forEach(x=>d.push(l?l(x):x)):d?u.push(this.buildObjectRow(d,h,o,c)):u.push([...h])),u}buildObjectRow(r,e,t,s){const n={};for(let o=0;o<r.length;o++){const i=r[o];let a=e[o];t&&(a=this.dynamicType(a)),n[i]=s?s(a,i):a}return n}detectDelimiter(r){const e=r.slice(0,r.indexOf(`
14
- `)),t=[",",";"," ","|"],s=t.map(n=>{const o=new RegExp(`\\${n}`,"g");return(e.match(o)||[]).length});return t[s.indexOf(Math.max(...s))]||","}dynamicType(r){if(r==="true")return!0;if(r==="false")return!1;if(!isNaN(Number(r)))return Number(r);try{return JSON.parse(r)}catch{return r}}extractJson(r,e,t){const s=[];let n=e,o=!1,i="";for(;n<r.length;){const a=r[n];if(!o&&a===t)break;if(!o&&(a===`
15
- `||a==="\r")){this.log.error("JSON block spans multiple lines",void 0,{startIndex:e,endIndex:n});break}if(a==='"'&&i!=="\\"&&(o=!o),o||(a==="{"||a==="["?s.push(a):(a==="}"&&s[s.length-1]==="{"||a==="]"&&s[s.length-1]==="[")&&s.pop()),n++,i=a,s.length===0&&!o)break}return{value:r.slice(e,n),length:n-e}}};function Eo(r,e=","){return r&&typeof r=="string"?r.split(e).map(t=>t.trim()):[]}class $m{loader;log=Qr.child({prefix:"CsvParser"});constructor(e){this.loader=e}getParserConfig(e,t){const s=this.loader.config.get()?.options,n=this.loader.options,o=this.log,i={};typeof t?.csvParserOptions?.quoteChar<"u"?i.quoteChar=t?.csvParserOptions?.quoteChar:typeof s?.csvParserOptions?.quoteChar<"u"?i.quoteChar=s?.csvParserOptions?.quoteChar:i.quoteChar=n.csvParserOptions?.quoteChar,typeof t?.csvParserOptions?.delimiter<"u"?i.delimiter=t?.csvParserOptions?.delimiter:typeof s?.csvParserOptions?.delimiter<"u"?i.delimiter=s?.csvParserOptions?.delimiter:i.delimiter=n.csvParserOptions?.delimiter,typeof t?.csvParserOptions?.escapeChar<"u"?i.escapeChar=t?.csvParserOptions?.escapeChar:typeof s?.csvParserOptions?.escapeChar<"u"?i.escapeChar=s?.csvParserOptions?.escapeChar:i.escapeChar=n.csvParserOptions?.escapeChar,typeof t?.csvParserOptions?.commentChar<"u"?i.commentChar=t?.csvParserOptions?.commentChar:typeof s?.csvParserOptions?.commentChar<"u"?i.commentChar=s?.csvParserOptions?.commentChar:i.commentChar=n.csvParserOptions?.commentChar;const a=new Map,l=new Map;if(e.references)for(const u of e.references)a.set(u.key,u),u.origin&&a.set(u.origin,u);if(e.properties)for(const u of e.properties)l.set(u.key,u),u.origin&&l.set(u.origin,u);const c=t?.keyProperty||e.keyProperty||"key";return{delimiter:i?.delimiter,quoteChar:i?.quoteChar,escapeChar:i?.escapeChar,comments:i.commentChar,dynamicTyping:!1,header:!0,skipEmptyLines:!0,transformHeader:u=>u?.trim().replace(/"/g,""),transform:function(u,d){if(u==="null")return null;if(u===""||typeof u>"u")return;if(typeof d>"u")return u;const f=a.get(d);if(c===d)return u;if(f)if(u[0]==="{"||u[0]==="[")try{return JSON.parse(u)}catch(p){o.error("Failed to parse JSON in CSV reference field",p,{header:d,value:u});return}else return f.type==="singleValued"?u:u?.length>0&&f.type==="multiValued"?Eo(u,f?.separator):u;const h=l.get(d);if(!(!e.autoGenerateProperties&&!h))switch(h?.type){case"string":return u;case"int":{const p=parseInt(u,10);return isNaN(p)?void 0:p}case"float":{const p=parseFloat(u);return isNaN(p)?void 0:p}case"boolean":return u==="true"?!0:u==="false"?!1:void 0;case"json":try{return u=u.replace(/[\x00-\x1F\x7F-\x9F]/g,""),JSON.parse(u)}catch(p){o.error("Failed to parse JSON in CSV property field",p,{header:d,value:u});return}case"Array<string>":case"Array<int>":case"Array<float>":case"Array<date>":if(u&&typeof u=="string"&&u[0]==="[")try{return JSON.parse(u)}catch{return}return u&&typeof u=="string"?Eo(u,h?.separator):void 0;default:return u}}}}getJsonFromCSVString(e,t,s){const n=this.getParserConfig(t,s.options);return new wm().parse(e,n)}}var Mo=typeof global=="object"&&global&&global.Object===Object&&global,Cm=typeof self=="object"&&self&&self.Object===Object&&self,X=Mo||Cm||Function("return this")(),Fe=X.Symbol,Io=Object.prototype,_m=Io.hasOwnProperty,Dm=Io.toString,ct=Fe?Fe.toStringTag:void 0;function xm(r){var e=_m.call(r,ct),t=r[ct];try{r[ct]=void 0;var s=!0}catch{}var n=Dm.call(r);return s&&(e?r[ct]=t:delete r[ct]),n}var Pm=Object.prototype,jm=Pm.toString;function Rm(r){return jm.call(r)}var Em="[object Null]",Mm="[object Undefined]",So=Fe?Fe.toStringTag:void 0;function ut(r){return r==null?r===void 0?Mm:Em:So&&So in Object(r)?xm(r):Rm(r)}function qe(r){return r!=null&&typeof r=="object"}function Im(r,e){for(var t=-1,s=r==null?0:r.length,n=Array(s);++t<s;)n[t]=e(r[t],t,r);return n}var Vr=Array.isArray;function Ft(r){var e=typeof r;return r!=null&&(e=="object"||e=="function")}function To(r){return r}var Sm="[object AsyncFunction]",Tm="[object Function]",Om="[object GeneratorFunction]",Km="[object Proxy]";function Oo(r){if(!Ft(r))return!1;var e=ut(r);return e==Tm||e==Om||e==Sm||e==Km}var Gr=X["__core-js_shared__"],Ko=(function(){var r=/[^.]+$/.exec(Gr&&Gr.keys&&Gr.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""})();function Fm(r){return!!Ko&&Ko in r}var qm=Function.prototype,Qm=qm.toString;function Ae(r){if(r!=null){try{return Qm.call(r)}catch{}try{return r+""}catch{}}return""}var Bm=/[\\^$.*+?()[\]{}|]/g,Vm=/^\[object .+?Constructor\]$/,Gm=Function.prototype,Um=Object.prototype,Nm=Gm.toString,zm=Um.hasOwnProperty,Lm=RegExp("^"+Nm.call(zm).replace(Bm,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Wm(r){if(!Ft(r)||Fm(r))return!1;var e=Oo(r)?Lm:Vm;return e.test(Ae(r))}function Hm(r,e){return r?.[e]}function we(r,e){var t=Hm(r,e);return Wm(t)?t:void 0}var Ur=we(X,"WeakMap"),Fo=Object.create,Jm=(function(){function r(){}return function(e){if(!Ft(e))return{};if(Fo)return Fo(e);r.prototype=e;var t=new r;return r.prototype=void 0,t}})();function Zm(r,e,t){switch(t.length){case 0:return r.call(e);case 1:return r.call(e,t[0]);case 2:return r.call(e,t[0],t[1]);case 3:return r.call(e,t[0],t[1],t[2])}return r.apply(e,t)}var Xm=800,Ym=16,ev=Date.now;function tv(r){var e=0,t=0;return function(){var s=ev(),n=Ym-(s-t);if(t=s,n>0){if(++e>=Xm)return arguments[0]}else e=0;return r.apply(void 0,arguments)}}function rv(r){return function(){return r}}var qt=(function(){try{var r=we(Object,"defineProperty");return r({},"",{}),r}catch{}})(),sv=qt?function(r,e){return qt(r,"toString",{configurable:!0,enumerable:!1,value:rv(e),writable:!0})}:To,nv=tv(sv);function ov(r,e){for(var t=-1,s=r==null?0:r.length;++t<s&&e(r[t],t,r)!==!1;);return r}function iv(r,e,t,s){for(var n=r.length,o=t+-1;++o<n;)if(e(r[o],o,r))return o;return-1}function av(r){return r!==r}function lv(r,e,t){for(var s=t-1,n=r.length;++s<n;)if(r[s]===e)return s;return-1}function cv(r,e,t){return e===e?lv(r,e,t):iv(r,av,t)}function uv(r,e){var t=r==null?0:r.length;return!!t&&cv(r,e,0)>-1}var dv=9007199254740991,fv=/^(?:0|[1-9]\d*)$/;function hv(r,e){var t=typeof r;return e=e??dv,!!e&&(t=="number"||t!="symbol"&&fv.test(r))&&r>-1&&r%1==0&&r<e}function pv(r,e,t){e=="__proto__"&&qt?qt(r,e,{configurable:!0,enumerable:!0,value:t,writable:!0}):r[e]=t}function qo(r,e){return r===e||r!==r&&e!==e}var yv=Object.prototype,gv=yv.hasOwnProperty;function mv(r,e,t){var s=r[e];(!(gv.call(r,e)&&qo(s,t))||t===void 0&&!(e in r))&&pv(r,e,t)}var Qo=Math.max;function vv(r,e,t){return e=Qo(e===void 0?r.length-1:e,0),function(){for(var s=arguments,n=-1,o=Qo(s.length-e,0),i=Array(o);++n<o;)i[n]=s[e+n];n=-1;for(var a=Array(e+1);++n<e;)a[n]=s[n];return a[e]=t(i),Zm(r,this,a)}}function bv(r,e){return nv(vv(r,e,To),r+"")}var kv=9007199254740991;function Bo(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=kv}function Vo(r){return r!=null&&Bo(r.length)&&!Oo(r)}var Av=Object.prototype;function Go(r){var e=r&&r.constructor,t=typeof e=="function"&&e.prototype||Av;return r===t}function wv(r,e){for(var t=-1,s=Array(r);++t<r;)s[t]=e(t);return s}var $v="[object Arguments]";function Uo(r){return qe(r)&&ut(r)==$v}var No=Object.prototype,Cv=No.hasOwnProperty,_v=No.propertyIsEnumerable,Dv=Uo((function(){return arguments})())?Uo:function(r){return qe(r)&&Cv.call(r,"callee")&&!_v.call(r,"callee")};function xv(){return!1}var zo=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Lo=zo&&typeof module=="object"&&module&&!module.nodeType&&module,Pv=Lo&&Lo.exports===zo,Wo=Pv?X.Buffer:void 0,jv=Wo?Wo.isBuffer:void 0,Ho=jv||xv,Rv="[object Arguments]",Ev="[object Array]",Mv="[object Boolean]",Iv="[object Date]",Sv="[object Error]",Tv="[object Function]",Ov="[object Map]",Kv="[object Number]",Fv="[object Object]",qv="[object RegExp]",Qv="[object Set]",Bv="[object String]",Vv="[object WeakMap]",Gv="[object ArrayBuffer]",Uv="[object DataView]",Nv="[object Float32Array]",zv="[object Float64Array]",Lv="[object Int8Array]",Wv="[object Int16Array]",Hv="[object Int32Array]",Jv="[object Uint8Array]",Zv="[object Uint8ClampedArray]",Xv="[object Uint16Array]",Yv="[object Uint32Array]",_={};_[Nv]=_[zv]=_[Lv]=_[Wv]=_[Hv]=_[Jv]=_[Zv]=_[Xv]=_[Yv]=!0,_[Rv]=_[Ev]=_[Gv]=_[Mv]=_[Uv]=_[Iv]=_[Sv]=_[Tv]=_[Ov]=_[Kv]=_[Fv]=_[qv]=_[Qv]=_[Bv]=_[Vv]=!1;function eb(r){return qe(r)&&Bo(r.length)&&!!_[ut(r)]}function Nr(r){return function(e){return r(e)}}var Jo=typeof exports=="object"&&exports&&!exports.nodeType&&exports,dt=Jo&&typeof module=="object"&&module&&!module.nodeType&&module,tb=dt&&dt.exports===Jo,zr=tb&&Mo.process,Qe=(function(){try{var r=dt&&dt.require&&dt.require("util").types;return r||zr&&zr.binding&&zr.binding("util")}catch{}})(),Zo=Qe&&Qe.isTypedArray,rb=Zo?Nr(Zo):eb,sb=Object.prototype,nb=sb.hasOwnProperty;function ob(r,e){var t=Vr(r),s=!t&&Dv(r),n=!t&&!s&&Ho(r),o=!t&&!s&&!n&&rb(r),i=t||s||n||o,a=i?wv(r.length,String):[],l=a.length;for(var c in r)nb.call(r,c)&&!(i&&(c=="length"||n&&(c=="offset"||c=="parent")||o&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||hv(c,l)))&&a.push(c);return a}function Xo(r,e){return function(t){return r(e(t))}}var ib=Xo(Object.keys,Object),ab=Object.prototype,lb=ab.hasOwnProperty;function cb(r){if(!Go(r))return ib(r);var e=[];for(var t in Object(r))lb.call(r,t)&&t!="constructor"&&e.push(t);return e}function ub(r){return Vo(r)?ob(r):cb(r)}var ft=we(Object,"create");function db(){this.__data__=ft?ft(null):{},this.size=0}function fb(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}var hb="__lodash_hash_undefined__",pb=Object.prototype,yb=pb.hasOwnProperty;function gb(r){var e=this.__data__;if(ft){var t=e[r];return t===hb?void 0:t}return yb.call(e,r)?e[r]:void 0}var mb=Object.prototype,vb=mb.hasOwnProperty;function bb(r){var e=this.__data__;return ft?e[r]!==void 0:vb.call(e,r)}var kb="__lodash_hash_undefined__";function Ab(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=ft&&e===void 0?kb:e,this}function $e(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}$e.prototype.clear=db,$e.prototype.delete=fb,$e.prototype.get=gb,$e.prototype.has=bb,$e.prototype.set=Ab;function wb(){this.__data__=[],this.size=0}function Qt(r,e){for(var t=r.length;t--;)if(qo(r[t][0],e))return t;return-1}var $b=Array.prototype,Cb=$b.splice;function _b(r){var e=this.__data__,t=Qt(e,r);if(t<0)return!1;var s=e.length-1;return t==s?e.pop():Cb.call(e,t,1),--this.size,!0}function Db(r){var e=this.__data__,t=Qt(e,r);return t<0?void 0:e[t][1]}function xb(r){return Qt(this.__data__,r)>-1}function Pb(r,e){var t=this.__data__,s=Qt(t,r);return s<0?(++this.size,t.push([r,e])):t[s][1]=e,this}function ie(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}ie.prototype.clear=wb,ie.prototype.delete=_b,ie.prototype.get=Db,ie.prototype.has=xb,ie.prototype.set=Pb;var ht=we(X,"Map");function jb(){this.size=0,this.__data__={hash:new $e,map:new(ht||ie),string:new $e}}function Rb(r){var e=typeof r;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?r!=="__proto__":r===null}function Bt(r,e){var t=r.__data__;return Rb(e)?t[typeof e=="string"?"string":"hash"]:t.map}function Eb(r){var e=Bt(this,r).delete(r);return this.size-=e?1:0,e}function Mb(r){return Bt(this,r).get(r)}function Ib(r){return Bt(this,r).has(r)}function Sb(r,e){var t=Bt(this,r),s=t.size;return t.set(r,e),this.size+=t.size==s?0:1,this}function Ce(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}Ce.prototype.clear=jb,Ce.prototype.delete=Eb,Ce.prototype.get=Mb,Ce.prototype.has=Ib,Ce.prototype.set=Sb;function Tb(r,e){for(var t=-1,s=e.length,n=r.length;++t<s;)r[n+t]=e[t];return r}var Ob=Xo(Object.getPrototypeOf,Object);function Kb(){this.__data__=new ie,this.size=0}function Fb(r){var e=this.__data__,t=e.delete(r);return this.size=e.size,t}function qb(r){return this.__data__.get(r)}function Qb(r){return this.__data__.has(r)}var Bb=200;function Vb(r,e){var t=this.__data__;if(t instanceof ie){var s=t.__data__;if(!ht||s.length<Bb-1)return s.push([r,e]),this.size=++t.size,this;t=this.__data__=new Ce(s)}return t.set(r,e),this.size=t.size,this}function Be(r){var e=this.__data__=new ie(r);this.size=e.size}Be.prototype.clear=Kb,Be.prototype.delete=Fb,Be.prototype.get=qb,Be.prototype.has=Qb,Be.prototype.set=Vb;var Yo=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ei=Yo&&typeof module=="object"&&module&&!module.nodeType&&module,Gb=ei&&ei.exports===Yo,ti=Gb?X.Buffer:void 0;ti&&ti.allocUnsafe;function Ub(r,e){return r.slice()}function Nb(r,e){for(var t=-1,s=r==null?0:r.length,n=0,o=[];++t<s;){var i=r[t];e(i,t,r)&&(o[n++]=i)}return o}function zb(){return[]}var Lb=Object.prototype,Wb=Lb.propertyIsEnumerable,ri=Object.getOwnPropertySymbols,Hb=ri?function(r){return r==null?[]:(r=Object(r),Nb(ri(r),function(e){return Wb.call(r,e)}))}:zb;function Jb(r,e,t){var s=e(r);return Vr(r)?s:Tb(s,t(r))}function Zb(r){return Jb(r,ub,Hb)}var Lr=we(X,"DataView"),Wr=we(X,"Promise"),Hr=we(X,"Set"),si="[object Map]",Xb="[object Object]",ni="[object Promise]",oi="[object Set]",ii="[object WeakMap]",ai="[object DataView]",Yb=Ae(Lr),ek=Ae(ht),tk=Ae(Wr),rk=Ae(Hr),sk=Ae(Ur),ae=ut;(Lr&&ae(new Lr(new ArrayBuffer(1)))!=ai||ht&&ae(new ht)!=si||Wr&&ae(Wr.resolve())!=ni||Hr&&ae(new Hr)!=oi||Ur&&ae(new Ur)!=ii)&&(ae=function(r){var e=ut(r),t=e==Xb?r.constructor:void 0,s=t?Ae(t):"";if(s)switch(s){case Yb:return ai;case ek:return si;case tk:return ni;case rk:return oi;case sk:return ii}return e});var nk=Object.prototype,ok=nk.hasOwnProperty;function ik(r){var e=r.length,t=new r.constructor(e);return e&&typeof r[0]=="string"&&ok.call(r,"index")&&(t.index=r.index,t.input=r.input),t}var li=X.Uint8Array;function Jr(r){var e=new r.constructor(r.byteLength);return new li(e).set(new li(r)),e}function ak(r,e){var t=Jr(r.buffer);return new r.constructor(t,r.byteOffset,r.byteLength)}var lk=/\w*$/;function ck(r){var e=new r.constructor(r.source,lk.exec(r));return e.lastIndex=r.lastIndex,e}var ci=Fe?Fe.prototype:void 0,ui=ci?ci.valueOf:void 0;function uk(r){return ui?Object(ui.call(r)):{}}function dk(r,e){var t=Jr(r.buffer);return new r.constructor(t,r.byteOffset,r.length)}var fk="[object Boolean]",hk="[object Date]",pk="[object Map]",yk="[object Number]",gk="[object RegExp]",mk="[object Set]",vk="[object String]",bk="[object Symbol]",kk="[object ArrayBuffer]",Ak="[object DataView]",wk="[object Float32Array]",$k="[object Float64Array]",Ck="[object Int8Array]",_k="[object Int16Array]",Dk="[object Int32Array]",xk="[object Uint8Array]",Pk="[object Uint8ClampedArray]",jk="[object Uint16Array]",Rk="[object Uint32Array]";function Ek(r,e,t){var s=r.constructor;switch(e){case kk:return Jr(r);case fk:case hk:return new s(+r);case Ak:return ak(r);case wk:case $k:case Ck:case _k:case Dk:case xk:case Pk:case jk:case Rk:return dk(r);case pk:return new s;case yk:case vk:return new s(r);case gk:return ck(r);case mk:return new s;case bk:return uk(r)}}function Mk(r){return typeof r.constructor=="function"&&!Go(r)?Jm(Ob(r)):{}}var Ik="[object Map]";function Sk(r){return qe(r)&&ae(r)==Ik}var di=Qe&&Qe.isMap,Tk=di?Nr(di):Sk,Ok="[object Set]";function Kk(r){return qe(r)&&ae(r)==Ok}var fi=Qe&&Qe.isSet,Fk=fi?Nr(fi):Kk,hi="[object Arguments]",qk="[object Array]",Qk="[object Boolean]",Bk="[object Date]",Vk="[object Error]",pi="[object Function]",Gk="[object GeneratorFunction]",Uk="[object Map]",Nk="[object Number]",yi="[object Object]",zk="[object RegExp]",Lk="[object Set]",Wk="[object String]",Hk="[object Symbol]",Jk="[object WeakMap]",Zk="[object ArrayBuffer]",Xk="[object DataView]",Yk="[object Float32Array]",eA="[object Float64Array]",tA="[object Int8Array]",rA="[object Int16Array]",sA="[object Int32Array]",nA="[object Uint8Array]",oA="[object Uint8ClampedArray]",iA="[object Uint16Array]",aA="[object Uint32Array]",w={};w[hi]=w[qk]=w[Zk]=w[Xk]=w[Qk]=w[Bk]=w[Yk]=w[eA]=w[tA]=w[rA]=w[sA]=w[Uk]=w[Nk]=w[yi]=w[zk]=w[Lk]=w[Wk]=w[Hk]=w[nA]=w[oA]=w[iA]=w[aA]=!0,w[Vk]=w[pi]=w[Jk]=!1;function Vt(r,e,t,s,n,o){var i;if(i!==void 0)return i;if(!Ft(r))return r;var a=Vr(r);if(a)i=ik(r);else{var l=ae(r),c=l==pi||l==Gk;if(Ho(r))return Ub(r);if(l==yi||l==hi||c&&!n)i=c?{}:Mk(r);else{if(!w[l])return n?r:{};i=Ek(r,l)}}o||(o=new Be);var u=o.get(r);if(u)return u;o.set(r,i),Fk(r)?r.forEach(function(h){i.add(Vt(h,e,t,h,r,o))}):Tk(r)&&r.forEach(function(h,p){i.set(p,Vt(h,e,t,p,r,o))});var d=Zb,f=a?void 0:d(r);return ov(f||r,function(h,p){f&&(p=h,h=r[p]),mv(i,p,Vt(h,e,t,p,r,o))}),i}var lA=1,cA=4;function pt(r){return Vt(r,lA|cA)}var uA="__lodash_hash_undefined__";function dA(r){return this.__data__.set(r,uA),this}function fA(r){return this.__data__.has(r)}function Gt(r){var e=-1,t=r==null?0:r.length;for(this.__data__=new Ce;++e<t;)this.add(r[e])}Gt.prototype.add=Gt.prototype.push=dA,Gt.prototype.has=fA;function gi(r,e){return r.has(e)}function hA(r){return qe(r)&&Vo(r)}var pA=Math.min;function yA(r,e,t){for(var s=uv,n=r[0].length,o=r.length,i=o,a=Array(o),l=1/0,c=[];i--;){var u=r[i];l=pA(u.length,l),a[i]=n>=120&&u.length>=120?new Gt(i&&u):void 0}u=r[0];var d=-1,f=a[0];e:for(;++d<n&&c.length<l;){var h=u[d],p=h;if(h=h!==0?h:0,!(f?gi(f,p):s(c,p))){for(i=o;--i;){var y=a[i];if(!(y?gi(y,p):s(r[i],p)))continue e}f&&f.push(p),c.push(h)}}return c}function gA(r){return hA(r)?r:[]}var mi=bv(function(r){var e=Im(r,gA);return e.length&&e[0]===r[0]?yA(e):[]});class vi{context="";total=0;totalItems=[];processedItems=new Set;downloadedItems=new Set;failedItems=new Set;remainingItems=new Set;processed=0;remaining=0;progress=0;currentItem;constructor(){}init(e){return this.total=e.length,this.totalItems=[...e],this.remaining=e.length,this.remainingItems=new Set(e),this.getProgress()}update(e,t,s,n){const o=pt(e);return o.success=t,n&&(o.status=n),t?this.downloadedItems.add(o):this.failedItems.add(o),this.currentItem=o,this.context=s,this.processed++,this.remaining--,this.progress=Math.round(this.processed*100/this.total),this.currentItem=o,this.processedItems.add(o),this.remainingItems.delete(e),this.getProgress()}getProgress(){return{total:this.total,processed:this.processed,remaining:this.remaining,downloadedItems:Array.from(this.downloadedItems.values()),failedItems:Array.from(this.failedItems.values()),progress:this.progress,context:this.context,currentItem:this.currentItem,totalItems:this.totalItems,processedItems:Array.from(this.processedItems.values()),remainingItems:Array.from(this.remainingItems.values())}}}var mA=Object.defineProperty,vA=Object.getOwnPropertyDescriptor,bi=(r,e,t,s)=>{for(var n=vA(e,t),o=r.length-1,i;o>=0;o--)(i=r[o])&&(n=i(e,t,n)||n);return n&&mA(e,t,n),n};const bA={missingModelHandling:{autoGenerateProperties:!0},defaultDataContainerUpdateType:"set",csvParserOptions:{delimiter:"",quoteChar:'"',escapeChar:'"',commentChar:void 0}};let Zr=class{key;core;cdRef=new Am;log=Qr.child({prefix:"AppLoader"});registeredTransformers=[];options=bA;csvParser=new $m(this);currentConfig;globalVariables=new Map;defaultVariables=new Map;progressListeners=new Set;currentProcessOptions;currentContext="";progressHandler=new vi;constructor(){this.initDefaultVariables()}destroy(){this.core=null,this.cdRef=null,this.csvParser=null,this.progressListeners=null,this.progressHandler=null}initDefaultVariables(){this.defaultVariables.set("projectId",{key:"projectId",value:void 0,description:"Your dcupl console project id"}),this.defaultVariables.set("apiKey",{key:"apiKey",value:void 0,description:"Your dcupl console project API key"}),this.defaultVariables.set("version",{key:"version",value:"draft",description:"The version of uploaded files to the dcupl CDN - draft/published/..."}),this.defaultVariables.set("cdnBaseUrl",{key:"cdnBaseUrl",value:"https://cdn.dcupl.com/files/projects",description:"The url to your dcupl folder - might be the dcupl CDN or any other "}),this.defaultVariables.set("baseUrl",{key:"baseUrl",value:"${cdnBaseUrl}/${projectId}/${version}",description:"The base url to your hosted models and data files"}),this.defaultVariables.set("modelUrl",{key:"modelUrl",value:"${baseUrl}/models",description:"The url to the your model files"}),this.defaultVariables.set("dataUrl",{key:"dataUrl",value:"${baseUrl}/data",description:"The url to the your data files"}),this.defaultVariables.set("transformerUrl",{key:"transformerUrl",value:"${baseUrl}/transformers",description:"The url to the your data files"}),this.defaultVariables.set("loaderFileName",{key:"loaderFileName",value:"dcupl.lc.json",description:"The file name of the loader json"}),this.defaultVariables.set("cdnVersion",{key:"cdnVersion",value:void 0,description:"The file-version of the CDN data"}),this.defaultVariables.set("consoleApiUrl",{key:"consoleApiUrl",value:"https://api.dcupl.com",description:"The dcupl console API Url"})}resources={get:r=>this.currentConfig?.resources.find(e=>e.key===r),getAll:()=>this.currentConfig?.resources||[],getWithTag:r=>this.currentConfig?.resources.filter(e=>e.tags?.includes(r))||[],set:r=>{this.currentConfig.resources=r},add:r=>{this.currentConfig.resources.push(r)},delete:r=>{const e=this.currentConfig.resources.findIndex(t=>t.key===r);e>-1&&this.currentConfig.resources.splice(e,1)}};variables={get:(r,e)=>{const t=this.currentConfig?.environments?.filter(s=>s.key===e);return this.evaluateVariables(t,this.currentProcessOptions).find(s=>s.key===r)},getAll:r=>{const e=this.currentConfig?.environments?.filter(t=>t.key===r);return this.evaluateVariables(e,this.currentProcessOptions)},getAllAsObject:r=>{const e=this.currentConfig?.environments?.filter(t=>t.key===r);return this.getEvaluatedVariablesAsRecord(e,this.currentProcessOptions)},default:{get:r=>this.defaultVariables.get(r),getAll:()=>Array.from(this.defaultVariables.values())},environment:{get:(r,e)=>{if(!r)return;const t=this.currentConfig?.environments?.find(s=>s.key===r);if(t)return t.variables?.find(s=>s.key===e)},getAll:r=>this.currentConfig?.environments?.find(e=>e.key===r)?.variables||[]},process:{get:r=>this.currentProcessOptions?.variables?.find(e=>e.key===r),getAll:()=>this.currentProcessOptions?.variables||[]},global:{get:r=>this.globalVariables.get(r),getAll:()=>Array.from(this.globalVariables.values()),set:(r,e)=>{this.globalVariables.set(r,{key:r,value:e})},delete:r=>{this.globalVariables.delete(r)}}};transformers={get:r=>this.registeredTransformers.filter(e=>mi(e.applyTo,r.appyTo).length>0),getAll:()=>this.registeredTransformers,set:r=>{this.transformers.remove(r.key),this.registeredTransformers.push(r)},remove:r=>{const e=this.registeredTransformers.findIndex(t=>t.key===r);e>-1&&this.registeredTransformers.splice(e,1)}};config={get:()=>pt(this.currentConfig),set:r=>{this.currentConfig=pt(r)},fetch:async r=>this.fetchConfig(r)};async fetchConfig(r){if(!this.core)throw this.log.error("dcupl not connected. Did you add your loader to dcupl? -> dcupl.addRunner(loader)"),new Error;let e;r?.baseUrl&&this.defaultVariables.set("baseUrl",{key:"baseUrl",value:String(r.baseUrl)}),r?.loaderFileName&&this.defaultVariables.set("loaderFileName",{key:"loaderFileName",value:String(r.loaderFileName)});const t=this.variables.get("baseUrl")?.value;if(t&&this.isDcuplCdn(t))await this.setCdnVersion(),e=await this.loadConfigFromApi();else{const s=this.variables.get("loaderFileName")?.value,n=`${t}/${s}`;e=await this.loadConfigFromUrl(n,r?.headers)}if(this.isValidConfig(e))return r?.skipApply||this.config.set(e),e;throw new Error("Invalid Loader Configuration")}isValidConfig(r){return!!r}async loadConfigFromUrl(r,e){try{const t={};e&&(t.headers=e.reduce((n,o)=>(n[o.key]=o.value,n),{}));const s=await fetch(r,t);if(!s.ok)throw new Error(`Failed to fetch loader configuration from ${r}`);return s.json()}catch(t){this.log.error("Could not fetch loader configuration",t,{url:r});return}}async loadConfigFromApi(){const r=this.variables.get("baseUrl")?.value,e=this.variables.get("loaderFileName")?.value,t=this.variables.get("cdnVersion")?.value,s=this.variables.get("apiKey")?.value;try{let n=`${r}/${e}`;this.isDcuplCdn(n)&&(t&&(n=this.appendSearchParamToUrl(n,"v",String(t))),s&&(n=this.appendSearchParamToUrl(n,"api-key",s)));const o=await fetch(n);if(!o.ok)throw new Error(`Failed to fetch loader configuration from ${n}`);return o.json()}catch(n){this.log.error("Could not fetch loader configuration. Are you sure your projectId + apiKey are correct?",n,{baseUrl:r,loaderFileName:e});return}}appendSearchParamToUrl(r,e,t){const s=r.includes("?")?"&":"?";return`${r}${s}${e}=${t}`}async setCdnVersion(){let r;try{const e=this.variables.get("consoleApiUrl")?.value,t=this.variables.get("projectId")?.value,s=this.variables.get("version")?.value;r=`${e}/projects/${t}/files/versions/${s}/status`;const n=await(await fetch(r)).json();n&&n.changedAt&&this.defaultVariables.set("cdnVersion",{key:"cdnVersion",value:String(n.changedAt)})}catch(e){this.log.error("Could not fetch version status",e,{url:r})}}async process(r){if(!this.config)throw new Error("There is no config present. Make sure to call loader.setConfig(..) or loader.fetchConfig(...)");this.currentContext=Br();const e=pt(r),t=pt(this.currentConfig);if(e?.applicationKey){const u=this.getAppPreset(t,e);if(!u)throw new Error(`The applicationKey ${e.applicationKey} does not exist`);e.resourceTags=e.resourceTags||u?.resourceTags,e.variables=e.variables||u?.variables}const s=this.getEnvironments(t,e),n=this.getEvaluatedVariablesAsRecord(s,e),o=this.getHeaderConfigs(s),i=this.getQueryParamConfigs(s),a=this.getResourcesForConfigOptions(t,n,e),l=this.getLoaderOptions(t,e),c=await this.fetchResources(a,n,l,o,i);return this.currentProcessOptions=e,c}getHeaderConfigs(r){if(!r)return[];const e=[];return r.forEach(t=>{t.headers&&e.push(...t.headers)}),e}getQueryParamConfigs(r){if(!r)return[];const e=[];return r.forEach(t=>{t.queryParams&&e.push(...t.queryParams)}),e}getLoaderOptions(r,e){return e?.options?Object.assign({},this.options,e.options):r?.options?Object.assign({},this.options,r.options):Object.assign({},this.options)}getResourcesForConfigOptions(r,e,t){const s=[];if(!r.resources)return[];if(!Array.isArray(t?.resourceTags)||!t?.resourceTags.length)s.push(...r.resources);else for(const n of r.resources)!Array.isArray(n.tags)||!n.tags.length||this.isValidResourceForTags(n.tags,t.resourceTags)&&s.push(n);return s.map(n=>{if(e){const o=Kt(n.url,{...e});return n.url=o,n}else return n})}isValidResourceForTags(r,e){for(const t of e)if(Array.isArray(t)){if(t.every(s=>r.includes(s)))return!0}else if(r.includes(t))return!0;return!1}evaluateVariables(r,e){const t=new Map;this.defaultVariables&&this.defaultVariables.forEach(o=>{t.set(o.key,o)}),r?.forEach(o=>{o?.variables&&o.variables.forEach(i=>{t.set(i.key,i)})}),e?.variables&&e.variables.forEach(o=>{t.set(o.key,o)}),this.globalVariables&&this.globalVariables.forEach(o=>{t.set(o.key,o)});const s=Array.from(t.values()),n={};for(const o of s)n[o.key]=o.value||"";for(const o of s)o.value=Kt(o.value,n);return s}getEvaluatedVariablesAsRecord(r,e){const t=this.evaluateVariables(r,e),s={};for(const n of t)s[n.key]=n.value||"";return s}getEnvironments(r,e){if(!(!r.environments||!r.environments[0])&&e&&e.environmentKeys&&e.environmentKeys.length>0)return r.environments.filter(t=>e.environmentKeys.indexOf(t.key)>-1)}getAppPreset(r,e){if(!(!r.applications||!r.applications[0])&&e?.applicationKey)return r.applications?.find(t=>t.key===e.applicationKey)}getHeaderForUrl(r,e,t){if(!t||!t.length||!r.tags?.length)return;const s=[];t?.forEach(o=>{if(!o.tags?.length){this.isValidCondition(o,e)&&s.push(o);return}o.tags.find(i=>r.tags?.includes(i))&&this.isValidCondition(o,e)&&s.push(o)});const n={};if(s.forEach(o=>{const i=Kt(o.value,{...e});n[o.key]=i}),Object.keys(n).length!==0)return n}getQueryParamsForUrl(r,e,t){const s=[];if(t?.forEach(n=>{if(!n.tags?.length){this.isValidCondition(n,e)&&s.push(n);return}n.tags.find(o=>r.tags?.includes(o))&&this.isValidCondition(n,e)&&s.push(n)}),this.isDcuplCdn(r.url)){const n=e.cdnVersion;n&&s.push({key:"v",value:n}),e.apiKey&&s?.push({key:"api-key",value:e.apiKey})}return s.map(n=>(n.value=Kt(n.value,{...e}),n))}isDcuplCdn(r){return r.includes("cdn.dcupl.com")}isValidCondition(r,e){return r.condition?.applyIfVariableHasValue?typeof e[r.condition?.applyIfVariableHasValue]<"u"&&e[r.condition?.applyIfVariableHasValue]!=="":!0}async handleScriptResources(r,e,t,s){return await Promise.all(r.map(async n=>{try{const o=n.scriptKey;if(this.core.scriptController.hasScript(o)){const l=this.progressHandler.update(n,!0,"script");return this.updateProgressListeners(l),null}const i=await this.fetchScript(n,e,t,s);this.core.scriptController.setScript(o,i);const a=this.progressHandler.update(n,!0,"script");this.updateProgressListeners(a);return}catch(o){this.log.error("Failed to load script resource",o,{url:n.url,scriptKey:n.scriptKey});const i={title:n.url,type:"loader",errorGroup:"ResourceError",errorType:"InvalidResource",meta:n,description:o?.message};this.setError(i);const a=this.progressHandler.update(n,!1,"script");this.updateProgressListeners(a);return}})),!0}async handleOperatorResources(r,e,t,s){return await Promise.all(r.map(async n=>{try{const o=n.operator;if(this.core.queryManager.registeredCustomOperator.has(o)){const l=this.progressHandler.update(n,!0,"operator");return this.updateProgressListeners(l),null}const i=await this.fetchJavascriptFile(n,e,t,s);this.core.query.registerCustomOperator(o,i);const a=this.progressHandler.update(n,!0,"operator");this.updateProgressListeners(a);return}catch(o){this.log.error("Failed to load operator resource",o,{url:n.url,operator:n.operator});const i={title:n.url,type:"loader",errorGroup:"ResourceError",errorType:"InvalidResource",meta:n,description:o?.message};this.setError(i);const a=this.progressHandler.update(n,!1,"operator");this.updateProgressListeners(a);return}})),!0}async handleTransformerResources(r,e,t,s){const n=[];return await Promise.all(r.map(async o=>{try{const i=this.registeredTransformers.find(u=>u.key===o.url);if(i){n.push(i);const u=this.progressHandler.update(o,!0,"transformer");this.updateProgressListeners(u);return}const a=await this.fetchJavascriptFile(o,e,t,s),l={key:o.url,applyTo:o.applyTo||[],type:o.transformerType||"parsedFileTransformer",transformer:a};this.registeredTransformers.push(l),n.push(l);const c=this.progressHandler.update(o,!0,"transformer");this.updateProgressListeners(c)}catch(i){this.log.error("Failed to load transformer resource",i,{url:o.url,transformerType:o.transformerType});const a={title:o.url,type:"loader",errorGroup:"ResourceError",errorType:"InvalidResource",meta:o,description:i?.message};this.setError(a);const l=this.progressHandler.update(o,!1,"transformer");this.updateProgressListeners(l)}})),n}getRequestOptions(r,e,t,s){const n=this.getHeaderForUrl(r,e,t),o=this.getQueryParamsForUrl(r,e,s);return{url:this.appendQueryParamsToUrl(r.url,o),headers:n}}async fetchScript(r,e,t,s){const{url:n,headers:o}=this.getRequestOptions(r,e,t,s),i=await fetch(n,{headers:o});if(!i.ok)throw new Error(`Failed to fetch data from ${n}`);return await i.text()}async fetchJavascriptFile(r,e,t,s){const{url:n,headers:o}=this.getRequestOptions(r,e,t,s),i=await fetch(n,{headers:o});if(!i.ok)throw new Error(`Failed to fetch data from ${n}`);const a=await i.text();return new Function(a)()}async handleModelResources(r,e,t,s){const n=r.map(async o=>{const i=new Date().getTime();let a;try{const{url:l,headers:c}=this.getRequestOptions(o,e,t,s),u=await fetch(l,{headers:c});if(a=u.status,!u.ok)throw new Error(`Failed to fetch data from ${l}`);const d=K.now(),f=await u.json(),h=K.now();let p="";Array.isArray(f)?p=f.map(g=>g?.key).join("__"):p=f.key;const y=K.getEntriesByName(l.toString());if(Array.isArray(y)&&y[0]){const g=y[0],b={name:o.url,type:"resource",createdAt:new Date().getTime(),value:{model:p,type:"model",start:i,startTime:g.startTime,requestStart:g.requestStart,responseEnd:g.responseEnd,responseStart:g.responseStart,duration:g.duration,parseEnd:h,parseStart:d,decodedBodySize:g.decodedBodySize,encodedBodySize:g.encodedBodySize,end:h}};this.core.analyticsController.set({value:b,context:this.currentContext})}Array.isArray(f)?f.map(g=>this.addModelOrView(o,g)):this.addModelOrView(o,f);const m=this.progressHandler.update(o,!0,"model");return this.updateProgressListeners(m),Promise.resolve(f)}catch(l){this.log.error("Failed to load model resource",l,{url:o.url});const c={title:o.url,type:"loader",errorGroup:"ResourceError",errorType:"InvalidResource",meta:o,description:l?.message};this.setError(c);const u=this.progressHandler.update(o,!1,"model",a);return this.updateProgressListeners(u),Promise.resolve(null)}});return await Promise.all(n),!0}appendQueryParamsToUrl(r,e){const t=r.includes("?");let s=r;return e&&e.forEach((n,o)=>{s+=`${o===0&&!t?"?":"&"}${encodeURIComponent(n.key)}=${encodeURIComponent(n.value)}`}),s}async handleDataResources(r,e,t,s,n,o){const i=r.map(async a=>{const l=Br(),c={placeholderUid:l,data:[],model:a.model};this.core.registerContainer(c);const u=new Date().getTime();let d;try{const{url:f,headers:h}=this.getRequestOptions(a,e,s,n),p=await fetch(f,{headers:h});if(d=p.status,!p.ok)throw new Error(`Failed to fetch data from ${f}`);const y=p.headers.get("content-type"),m=K.now();let g;a.url.endsWith(".csv")||y?.includes("text/csv")?g=await p.text():g=await p.json();const b=K.now(),x=K.now(),B=this.handleTransformerLogic(g,a,"rawFileTransformer",o||[]),U=K.now();let gt=[],Ut=this.core.modelParser.unprocessedModelDescriptions.get(a.model);if(!Ut&&(t?.missingModelHandling?.autoGenerateProperties||a.options?.autoGenerateProperties)){const W=a.options?.autoGenerateProperties??t?.missingModelHandling?.autoGenerateProperties??!0;this.addModelOrView(a,{key:a.model,autoGenerateProperties:W,autoGenerateKey:a.options?.autoGenerateKey||!1,keyProperty:a?.options?.keyProperty||"key"}),Ut=this.core.modelParser.unprocessedModelDescriptions.get(a.model)}const wA=K.now();a.url.endsWith(".csv")||y?.includes("text/csv")?Ut&&(gt=this.csvParser.getJsonFromCSVString(B,Ut,a)):gt=B;const $A=K.now(),CA=K.now();try{gt=this.handleTransformerLogic(gt,a,"parsedFileTransformer",o||[])}catch(W){this.log.error("Transformer error",W,{resource:a.url,model:a.model})}const _A=K.now(),ki={placeholderUid:l,model:a.model,data:gt,type:a.options?.updateType||t.defaultDataContainerUpdateType,keyProperty:a?.options?.keyProperty,autoGenerateKey:a.options?.autoGenerateKey,autoGenerateProperties:a.options?.autoGenerateProperties},Xr=K.getEntriesByName(f.toString());if(Array.isArray(Xr)&&Xr[0]){const W=Xr[0],xA={name:a.url,type:"resource",createdAt:new Date().getTime(),value:{model:a.model,type:"data",start:u,startTime:W.startTime,requestStart:W.requestStart,responseEnd:W.responseEnd,responseStart:W.responseStart,duration:W.duration,parseEnd:b,rawTransformStart:x,rawTransformEnd:U,parseStart:m,csvToJsonStart:wA,csvToJsonEnd:$A,parsedTransformStart:CA,parsedTransformEnd:_A,decodedBodySize:W.decodedBodySize,encodedBodySize:W.encodedBodySize,end:b}};this.core.analyticsController.set({value:xA,context:this.currentContext})}this.core.updateRegisteredContainer(ki);const DA=this.progressHandler.update(a,!0,"data",d);return this.updateProgressListeners(DA),Promise.resolve(ki)}catch(f){this.log.error("Failed to load data resource",f,{url:a.url,model:a.model});const h={title:a.url,type:"loader",errorGroup:"ResourceError",errorType:"InvalidResource",meta:a,model:a.model,description:f?.message};this.setError(h),this.core.removeRegisteredContainer(c);const p=this.progressHandler.update(a,!1,"data",d);return this.updateProgressListeners(p),Promise.resolve()}});return await Promise.all(i),!0}async fetchResources(r,e,t,s,n){this.progressHandler=new vi,this.progressHandler.init(r),this.updateProgressListeners(this.progressHandler.getProgress());try{if(!this.core)throw this.log.error("dcupl not connected. Did you add your loader to dcupl? -> dcupl.addRunner(loader)"),new Error;const o=r.filter(d=>d.type==="script");await this.handleScriptResources(o,e,s,n);const i=r.filter(d=>d.type==="operator");await this.handleOperatorResources(i,e,s,n);const a=r.filter(d=>d.type==="transformer"),l=await this.handleTransformerResources(a,e,s,n),c=r.filter(d=>d.type==="model");await this.handleModelResources(c,e,s,n);const u=r.filter(d=>d.type==="data");return await this.handleDataResources(u,e,t,s,n,l),!0}catch(o){return this.log.error("Failed to fetch resources",o),!1}}addModelOrView(r,e){try{"model"in e?this.core.views.set(e):this.core.models.set(e)}catch(t){const s={title:r.url,type:"model",errorGroup:"ModelDefinitionError",errorType:"InvalidModelDefinition",model:e.key,meta:r,description:t?.message};this.setError(s)}}handleTransformerLogic(r,e,t,s){for(const n of s)n.type===t&&n.transformer&&(!n.applyTo.length&&!e.tags?.length&&(r=n.transformer(e,r)),mi(n.applyTo,e.tags||[]).length&&(r=n.transformer(e,r)));return r}updateProgressListeners(r){this.progressListeners.forEach(e=>e(r))}on(r){return this.progressListeners.add(r),()=>{this.progressListeners.delete(r)}}setError(r){this.core.modelParser.qualityController.enabled&&this.core.modelParser.qualityController.setError(r)}};bi([Ro({scope:"global",origin:"loader",type:"loader_config_fetched",connectMessage:!0,connectMessageResult:!0})],Zr.prototype,"fetchConfig"),bi([Ro({scope:"global",origin:"loader",type:"loader_processed",connectMessage:!0})],Zr.prototype,"process");const kA=Zr;let yt,Ve;async function AA(r){return yt=new Mh(r.options),Ve=new kA,yt.loaders.add(Ve,"default"),r.appLoaderConfig?await Ve.config.fetch(r.appLoaderConfig):await Ve.config.fetch(),await Ve.process(r.processOptions),await yt.init(),globalThis.dcupl=yt,{dcupl:yt,loader:Ve}}globalThis.initDcupl=AA})();
7
+ Models cannot have circular references as this leads to unpredictable behavior during updates.`)}}buildAttributeDependencyGraph(){this.attributeDependencyGraph=new af,this.models.forEach(e=>{const t=e.key;e.properties.forEach((s,o)=>{if(s.expression)this.processExpressionProperty(t,o,s.expression);else if(s.derive)this.processDerivedProperty(t,o,s.derive);else{const n={modelKey:t,attributeKey:o,type:"property",processingStep:1};this.attributeDependencyGraph.addAttribute(n)}}),e.references.forEach((s,o)=>{if(Sp(s))this.processQueryReference(t,o,s.query);else if(jr(s))this.processResolvedReference(t,o,s.resolve);else if(Mp(s))this.processDerivedReference(t,o,s.derive);else if(Rp(s))this.processGroupedReference(t,o,s.groupBy);else{const n={modelKey:t,attributeKey:o,type:"reference",processingStep:1};this.attributeDependencyGraph.addAttribute(n)}})})}validateAttributeDependencyGraph(){const e=new Map;this.models.forEach(s=>{const o=[];s.properties.forEach((n,i)=>{o.push(i)}),s.references.forEach((n,i)=>{o.push(i)}),o.length>0&&e.set(s.key,o)});const t=this.attributeDependencyGraph.validateCompleteness(e);if(!t.isComplete){const s=t.missing.length,o=t.missing.map(({modelKey:i,attributeKey:a})=>`${i}.${a}`).slice(0,10).join(", "),n=`Attribute dependency graph incomplete. ${s} attribute(s) missing: ${o}${s>10?` ... and ${s-10} more`:""}`;this.log.warn(`${n}
8
+ These attributes will default to Step 1 processing which may be incorrect. This usually indicates a problem during expression or reference parsing.`)}}processExpressionProperty(e,t,s){const o={modelKey:e,attributeKey:t,type:"property",processingStep:3};this.attributeDependencyGraph.addAttribute(o);const{variables:n}=Dr(s);n.forEach(i=>{const a=i.name.split("."),u=this.models.get(e);if(!u)return;const c=a[0];if(u.properties.has(c)){const l={modelKey:e,attributeKey:c,type:"property",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(o,l)}else if(u.references.has(c)){const l={modelKey:e,attributeKey:c,type:"reference",processingStep:1};if(this.attributeDependencyGraph.addAttributeDependency(o,l),a.length>1){let d=u,f=e;for(let h=0;h<a.length-1;h++){const p=a[h],y=d.references.get(p);if(y){const v=this.models.get(y.model);if(v&&(d=v,f=y.model,h===a.length-2)){const g=a[a.length-1],k={modelKey:f,attributeKey:g,type:"property",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(o,k)}}}}}})}processDerivedProperty(e,t,s){const o={modelKey:e,attributeKey:t,type:"property",processingStep:3};this.attributeDependencyGraph.addAttribute(o);const n={modelKey:e,attributeKey:s.localReference,type:"reference",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(o,n);const i=this.models.get(e);if(i){const a=i.references.get(s.localReference);if(a){const u={modelKey:a.model,attributeKey:s.remoteProperty,type:"property",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(o,u)}}}processQueryReference(e,t,s){const o={modelKey:e,attributeKey:t,type:"reference",processingStep:2};this.attributeDependencyGraph.addAttribute(o);try{const n=JSON.stringify(s),{variables:i}=Dr(n);i.forEach(a=>{const u=a.name,c=this.models.get(e);if(c){if(c.properties.has(u)){const l={modelKey:e,attributeKey:u,type:"property",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(o,l)}else if(c.references.has(u)){const l={modelKey:e,attributeKey:u,type:"reference",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(o,l)}}})}catch{}}processResolvedReference(e,t,s){const o={modelKey:e,attributeKey:t,type:"reference",processingStep:2};this.attributeDependencyGraph.addAttribute(o);const n={modelKey:s.model,attributeKey:s.reference,type:"reference",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(o,n)}processDerivedReference(e,t,s){const o={modelKey:e,attributeKey:t,type:"reference",processingStep:3};this.attributeDependencyGraph.addAttribute(o);const n={modelKey:e,attributeKey:s.localReference,type:"reference",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(o,n);const i=this.models.get(e);if(i){const a=i.references.get(s.localReference);if(a){const u={modelKey:a.model,attributeKey:s.remoteReference,type:"reference",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(o,u)}}}processGroupedReference(e,t,s){const o={modelKey:e,attributeKey:t,type:"reference",processingStep:3};this.attributeDependencyGraph.addAttribute(o);const n={modelKey:e,attributeKey:s.reference,type:"reference",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(o,n)}async update(){const e=performance.now(),t=this.shouldUsePartialUpdate();if(t.decision){const s=this.changeTracker.getModelsWithChanges().length,o=Array.from(this.changeTracker.getChangedAttributes().values()).reduce((a,u)=>a+u.size,0),n=this.changeTracker.getTotalChangedItemCount();await this.partialUpdate();const i=performance.now()-e;this.partialUpdateMetrics.recordUpdate({type:"partial",durationMs:i,modelsAffected:s,attributesProcessed:o,itemsChanged:n,decisionReason:t.reason,timestamp:Date.now()})}else{await this.init();const s=performance.now()-e;this.partialUpdateMetrics.recordUpdate({type:"full",durationMs:s,decisionReason:t.reason,timestamp:Date.now()})}}shouldUsePartialUpdate(){const e=this.dcuplInstance.initOptions.performance?.partialUpdates,t=e?.modelRatioThreshold??.5,s=e?.itemRatioThreshold??.5,o=e?.enableDetailedLogging??!1;if(!this.changeTracker.hasChanges())return o&&this.log.debug("Partial update decision: SKIP",{reason:"no_changes_detected"}),{decision:!1,reason:"no_changes_detected"};if(this.changeTracker.getModelsWithFullReset().size>0)return o&&this.log.debug("Partial update decision: FULL",{reason:"full_reset_detected"}),{decision:!1,reason:"full_reset_detected"};const n=Array.from(this.models.keys()).filter(l=>!l.startsWith("$")).length,i=this.changeTracker.getAffectedModelRatio(n);let a=0,u=0;for(const l of this.changeTracker.getModelsWithChanges()){const d=this.models.get(l);if(d){const f=d.getData().size;a+=f,u+=this.changeTracker.getChangedItems(l).size,u+=this.changeTracker.getDeletedItems(l).size}}const c=a>0?u/a:0;return i>t&&c>s?(o&&this.log.debug("Partial update decision: FULL",{reason:"both_ratios_high",modelRatio:i.toFixed(2),itemRatio:c.toFixed(2)}),{decision:!1,reason:`both_ratios_high:models=${i.toFixed(2)},items=${c.toFixed(2)}`}):(o&&this.log.debug("Partial update decision: PARTIAL",{modelRatio:i.toFixed(2),itemRatio:c.toFixed(2),modelThreshold:t,itemThreshold:s}),{decision:!0,reason:`optimal:models=${i.toFixed(2)},items=${c.toFixed(2)}`})}async partialUpdate(){const e=this.handleAlternativeKey(this.unprocessedData).filter(s=>!s.placeholderUid);for(const s of e)if(s.type==="remove"){const o=this.models.get(s.model);if(o){o.deleteDataEntries(s);for(const n of o.properties.values())this.changeTracker.recordAttributeChange(s.model,n.key);for(const n of o.references.values())this.changeTracker.recordAttributeChange(s.model,n.key)}}const t=this.getMergedContainers(this.unprocessedData);await this.connectDataWithModelsPartial(t)}async reprocessData(){this.qualityController.enabled&&this.qualityController.resetModelErrors();const e=this.getMergedContainers(this.unprocessedData);await this.connectDataWithModels(e)}getSortedCalculationTimings(){return vo(this.calculationTimings,"value")}addModel(e){if(e?.quality?.enabled!==!1)try{mp(e)}catch(t){this.qualityController.enabled&&this.qualityController.setError({title:"Invalid Model Definition",type:"model",errorGroup:"ModelDefinitionError",errorType:"InvalidModelDefinition",model:e.key,description:t.message});return}if(this.unprocessedModelDescriptions.has(e.key)){const t=this.unprocessedModelDescriptions.get(e.key),s=this.mergeModels(t,e);this.unprocessedModelDescriptions.set(e.key,s)}else this.unprocessedModelDescriptions.set(e.key,e);e.data&&this.addData({model:e.key,data:e.data,autoGenerateProperties:e.autoGenerateProperties,autoGenerateKey:e.autoGenerateKey,keyProperty:e.keyProperty})}mergeModels(e,t){const s=Object.assign({},e,t);return(Array.isArray(e.properties)||Array.isArray(t.properties))&&(s.properties=[...Array.isArray(e.properties)?e.properties:[],...Array.isArray(t.properties)?t.properties:[]]),(Array.isArray(e.references)||Array.isArray(t.references))&&(s.references=[...Array.isArray(e.references)?e.references:[],...Array.isArray(t.references)?t.references:[]]),s}addData(e){if(!e||!e.model||!e.data)throw new Error("Invalid Data Container");if(!Array.isArray(e.data))throw new Error("Invalid Data - Data must be an Array");e.type||(e.type="set"),e.autoGenerateProperties&&this.addModel({key:e.model,autoGenerateProperties:e.autoGenerateProperties,autoGenerateKey:e.autoGenerateKey,keyProperty:e.keyProperty||"key"}),this.changeTracker.recordDataChange(e),this.unprocessedData.push(e)}addView(e){this.views.set(e.key,e)}setError(e,t){this.qualityController.enabled&&t.qualityConfig.enabled===!0&&this.qualityController.setError(e)}getMergedContainers(e){const t=this.handleAlternativeKey(e).filter(n=>!n.placeholderUid),s=[],o=xr(t,"model");for(const n in o){const i=o[n];if(i.length>1){const a=this.mergeContainers(i),u=this.mergeContainerSourceMetadata(i);u&&this.dcuplInstance.setContainerSourceMetadata(a,u),s.push(a)}else s.push(i[0])}return s}mergeContainers(e){let t;return e?.forEach(s=>{if(!t){if(s.type==="remove")return;t=new Map(s.data.map(o=>[o.key,o]));return}switch(s.type){case"upsert":s.data.forEach(o=>{if(t.has(o.key)){let n=t.get(o.key);n=st(n,o),t.set(o.key,n)}else t.set(o.key,o)});break;case"update":s.data.forEach(o=>{if(t.has(o.key)){let n=t.get(o.key);n=st(n,o),t.set(o.key,n)}});break;case"remove":s.data.forEach(o=>{t.delete(o.key)});break;case"set":t=new Map(s.data.map(o=>[o.key,o]));break;default:t=new Map(s.data.map(o=>[o.key,o]));break}}),{model:e[0].model,data:Array.from(t.values()),type:"set"}}mergeContainerSourceMetadata(e){let t;for(const s of e){const o=this.dcuplInstance.getContainerSourceMetadata(s),n=s.type??"set";if(n==="set")t=o?{columns:new Set(o.sourceColumns),samples:this.cloneCoercionSamples(o.coercionFailureSamples),origin:o.origin}:void 0;else if((n==="upsert"||n==="update")&&o){t||(t={columns:new Set,samples:{},origin:o.origin}),o.sourceColumns.forEach(i=>t.columns.add(i));for(const i of Object.keys(o.coercionFailureSamples)){const a=o.coercionFailureSamples[i],u=t.samples[i];u?u.count+=a.count:t.samples[i]={...a}}}}if(t)return{sourceColumns:Array.from(t.columns),coercionFailureSamples:t.samples,origin:t.origin}}cloneCoercionSamples(e){const t={};for(const s of Object.keys(e))t[s]={...e[s]};return t}async connectDataWithModels(e){try{this.dependencyGraph.order()}catch(s){this.log.warn("Your models have circular dependencies which might lead to errors. Please consider changing your models"),this.log.error("Dependency graph error",s)}const t=this.dependencyGraph.order({allowCycles:!0});e.sort((s,o)=>t.indexOf(s.model)-t.indexOf(o.model)),await this.handleDataContainer(e)}async connectDataWithModelsPartial(e){const t=this.dependencyGraph.order({allowCycles:!0});e.sort((i,a)=>t.indexOf(i.model)-t.indexOf(a.model));const s=[];for(const[i,a]of this.changeTracker.getChangedAttributes())for(const u of a){const c=this.attributeDependencyGraph.getAttributesForModel(i).find(l=>l.attributeKey===u);if(c)s.push(c);else{const l=this.models.get(i);if(l){const d=l.properties.get(u),f=l.references.get(u);(d||f)&&s.push({modelKey:i,attributeKey:u,type:d?"property":"reference",processingStep:1})}}}const o=this.attributeDependencyGraph.getImpactedAttributes(s),n=this.attributeDependencyGraph.getProcessingOrder(o);for(const i of e){const a=this.models.get(i.model);a?.autoGenerateProperties&&a.generatePropertiesFromContainer(i)}for(const i of[1,2,3,4])await this.processAttributesForStep(i,n,e);for(const i of e){const a=this.models.get(i.model);if(a&&this.qualityController.enabled){const u=this.changeTracker.getChangedItems(a.key),c=this.changeTracker.getChangedAttributes().get(a.key);u.size>0&&c&&(this.qualityController.cleanUpErrorsForItems(a,u,c),this.qualityController.validateItemsPartial(a,u,c).forEach(l=>{this.setError(l,a)}))}}this.changeTracker.clear()}getResolvedReferenceProcessingOrder(e){const t=new Map,s=new Set;for(const[u,c]of e.entries()){const l=c.get(2);l&&l.size>0&&(s.add(u),t.set(u,new Set))}if(s.size===0)return this.dependencyGraph.order();for(const u of s){const c=this.models.get(u);if(!c)continue;const l=e.get(u)?.get(2);if(l)for(const d of l){const f=c.references.get(d);if(f&&jr(f)){const h=f.resolve.model,p=f.resolve.reference,y=this.models.get(h);if(y){const v=y.references.get(p);v&&jr(v)&&t.get(u).add(h)}}}}const o=[],n=new Set,i=new Set,a=u=>{if(i.has(u)||n.has(u))return;n.add(u);const c=t.get(u);if(c)for(const l of c)a(l);n.delete(u),i.add(u),o.push(u)};for(const u of s)a(u);return o}async processAttributesForStep(e,t,s){let o=this.dependencyGraph.order({allowCycles:!0});e===2&&(o=this.getResolvedReferenceProcessingOrder(t));for(const n of o){const i=t.get(n);if(!i)continue;const a=i.get(e);if(!a||a.size===0)continue;const u=this.models.get(n);if(!u)continue;const c=W(),l=`dcupl:partial_process_data:step_${e}`;if(this.cdRef.analyticsController.mark({name:`${l}:start`,context:c}),e===2)u.rebuildResolvedReferencesForAllItems(a);else{const d=s.find(f=>f.model===n);if(!d)continue;switch(e){case 1:u.addBasicPropertiesAndReferencesPartial(d,a);break;case 3:u.addDerivedAndExpressionAttributesPartial(d,a);break;case 4:u.reRunDerivedPropertiesBasedOnResolvesPartial(d,a);break}}this.cdRef.analyticsController.mark({name:`${l}:end`,context:c}),this.cdRef.analyticsController.measure({name:l,start:`${l}:start`,end:`${l}:end`,context:c,detail:{model:n,attributeCount:a.size}})}}handleAlternativeKey(e){return e.forEach(t=>{if(this.keyedContainers.has(t))return;const s=this.models.get(t.model),o=t.keyProperty??s?.keyProperty,n=t.keyPropertySeparator??s?.keyPropertySeparator??ot,i=t.autoGenerateKey||s?.autoGenerateKey;(typeof o=="string"?o!==""&&o!=="key":Array.isArray(o)&&o.length>0)?t.data.forEach(a=>{a.key=Vo(a,o,n)}):i&&t.data.forEach(a=>{a.key||(a.key=W())}),this.keyedContainers.add(t)}),e}async handleDataContainer(e){for(const o of e){const n=this.models.get(o.model);n?.autoGenerateProperties&&n.generatePropertiesFromContainer(o)}const t=this.initOptions.performance?.containerBatchSize,s=t!==void 0;for(let o=0;o<e.length;o++){const n=e[o],i=this.models.get(n.model),a=W();this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_1:start",context:a}),i&&(i.addBasicPropertiesAndReferences(n),this.qualityController.enabled&&i.qualityConfig.enabled===!0&&this.qualityController.cleanUpErrors(i,n)),this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_1:end",context:a}),this.cdRef.analyticsController.measure({name:"dcupl:process_data:step_1",start:"dcupl:process_data:step_1:start",end:"dcupl:process_data:step_1:end",context:a,detail:{model:n.model}}),s?t>0&&o>0&&o%t===0&&await new Promise(u=>setTimeout(u,0)):await new Promise(u=>setTimeout(u,0))}for(let o=0;o<e.length;o++){const n=e[o],i=this.models.get(n.model),a=W();this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_2:start",context:a}),i&&i.hasQueryReferences()&&i.addQueryReferences(n),i&&i.hasResolvedReferences()&&i.addResolvedReferences(n),this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_2:end",context:a}),this.cdRef.analyticsController.measure({name:"dcupl:process_data:step_2",start:"dcupl:process_data:step_2:start",end:"dcupl:process_data:step_2:end",context:a,detail:{model:n.model}}),s?t>0&&o>0&&o%t===0&&await new Promise(u=>setTimeout(u,0)):await new Promise(u=>setTimeout(u,0))}for(let o=0;o<e.length;o++){const n=e[o],i=this.models.get(n.model),a=W();this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_3:start",context:a}),i&&(i.hasDerivedPropertiesForBasicReferences()||i?.hasDerivedReferences()||i?.hasGroupedReferences()||i?.hasExpressionProperties())&&i.addDerivedReferencesGroupedReferencesDerivedPropertiesAndExpressionProperties(n),this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_3:end",context:a}),this.cdRef.analyticsController.measure({name:"dcupl:process_data:step_3",start:"dcupl:process_data:step_3:start",end:"dcupl:process_data:step_3:end",context:a,detail:{model:n.model}}),s?t>0&&o>0&&o%t===0&&await new Promise(u=>setTimeout(u,0)):await new Promise(u=>setTimeout(u,0))}for(let o=0;o<e.length;o++){const n=e[o],i=this.models.get(n.model);if(!i){this.log.error("Model not found during data processing",void 0,{model:n.model,step:4});continue}const a=W();this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_4:start",context:a}),(i.hasDerivedPropertiesBasedOnResolvedReferences()||i.hasDerivedReferencesBasedOnResolvedReferences())&&i.reRunDerivedPropertiesBasedOnResolves(n),this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_4:end",context:a}),this.cdRef.analyticsController.measure({name:"dcupl:process_data:step_4",start:"dcupl:process_data:step_4:start",end:"dcupl:process_data:step_4:end",context:a,detail:{model:n.model}}),this.qualityController.enabled&&i.qualityConfig.enabled===!0&&this.qualityController.validateAttributesAfterInitialization(i).forEach(u=>{this.setError(u,i)}),s?t>0&&o>0&&o%t===0&&await new Promise(u=>setTimeout(u,0)):await new Promise(u=>setTimeout(u,0))}}_getModelKeys(){return Array.from(this.models.values()).map(e=>e.key).filter(e=>e&&!e.startsWith("$Dcupl"))}_getViewKeys(e){const t=e?.modelKey;return Array.from(this.views.values()).filter(s=>t?s.model===t:!0).map(s=>s.key)}getTotalItemCount(){let e=0;for(const t of this.models.values())e+=t.getItemCount();return e}};Tt([b({scope:"global",type:"model_add",connectMessage:!0})],nt.prototype,"addModel"),Tt([b({scope:"global",type:"data_change",connectMessage:!0})],nt.prototype,"addData"),Tt([b({scope:"global",type:"view_add",connectMessage:!0})],nt.prototype,"addView"),Tt([b({scope:"global",type:"dcupl_handle_datacontainer"})],nt.prototype,"handleDataContainer");function Op(r,e){return Pe(e,function(t){return r[t]})}function Kp(r){return r==null?[]:Op(r,He(r))}var Fp=Math.max;function qp(r,e,t,s){r=ee(r)?r:Kp(r),t=t?bt(t):0;var o=r.length;return t<0&&(t=Fp(o+t,0)),Et(r)?t<=o&&r.indexOf(e,t)>-1:!!o&&ys(r,e,t)>-1}var Qp=Object.defineProperty,Bp=Object.getOwnPropertyDescriptor,Go=(r,e,t,s)=>{for(var o=Bp(e,t),n=r.length-1,i;n>=0;n--)(i=r[n])&&(o=i(e,t,o)||o);return o&&Qp(e,t,o),o};let Sr=class{constructor(e,t){this.dcuplApi=e,this.cdRef=t}options;key;modelKey;catalog;setup(e){const t=this.dcuplApi.modelParser.models.get(e.modelKey);if(!t)throw new Error(`Model with key ${e.modelKey} not found`);const s=this.getListItemKeys(e),o=this.getRelevantData(t,s),n=this.initIndicesController(s,t,o);this.catalog?this.catalog.filter.update(t,o,n):(this.catalog=new Nf(this.dcuplApi,this.cdRef,n),this.catalog.init(this.modelKey,t,o))}initIndicesController(e,t,s){let o;if(e){o=new Mt;for(const n of t.indicesController.indexMap.keys())o.getOrCreateIndex(n,s)}else o=t.indicesController;return o}getListItemKeys(e){let t;return e.listItemKeys?t=e.listItemKeys:e.query&&(t=this.dcuplApi.query.execute(e.query).map(s=>s.key)),t}getRelevantData(e,t){const s=e.getData();return t?this.initFromItemKeys(s,t):s}init(e){this.options=se(e),this.key=this.options.listKey,this.modelKey=this.options.modelKey,this.setup(this.options)}initFromItemKeys(e,t){const s=new Map;return t.forEach(o=>{if(e.has(o)){const n=e.get(o);n&&s.set(o,n)}}),s}destroy(){try{this.dcuplApi.lists.destroy({listKey:this.key})}catch{}}_destroy(){this.catalog.filter.cdRef?.destroy()}update(e){(e&&e.reprocessData||!e)&&this.setup(this.options)}on(e){return this.cdRef.on(e)}};Go([b({scope:"list",type:"list_destroyed",connectMessage:!0})],Sr.prototype,"_destroy"),Go([b({scope:"list",type:"list_updated",action:"update",connectMessage:!0})],Sr.prototype,"update");var Vp=Object.defineProperty,Gp=Object.getOwnPropertyDescriptor,Up=(r,e,t,s)=>{for(var o=Gp(e,t),n=r.length-1,i;n>=0;n--)(i=r[n])&&(o=i(e,t,o)||o);return o&&Vp(e,t,o),o};class Uo{constructor(e,t){this.dcuplInstance=e,this.cdRef=t}lists=[];get(e){if(e)return this.lists.find(t=>t.key===e)}getAll(e){return e?this.lists.filter(t=>t.modelKey===e?.modelKey):this.lists}destroy(e){if(!e)this.lists.forEach(t=>t._destroy()),this.lists=[];else if(e.listKey){const t=this.lists.findIndex(s=>s.key===e.listKey);t>-1&&(this.lists[t]._destroy(),this.lists.splice(t,1))}else e.modelKey&&(this.lists=this.lists.filter(t=>t.modelKey===e.modelKey?(t._destroy(),!1):!0))}create(e){e.listKey=e.listKey||W();const t=new wr;t._init({cdRefKey:e.listKey,parentCd:this.dcuplInstance.cdRef,dcuplInitOptions:this.dcuplInstance.initOptions,analyticsController:this.dcuplInstance.analyticsController});const s=new Sr(this.dcuplInstance,t);return s.init(e),this.lists.push(s),s}}Up([b({scope:"global",type:"list_created",connectMessage:!0})],Uo.prototype,"create");let Np=class{constructor(e){this.scriptsController=e}enabled=!1;maxErrorsPerGroup=1e3;errors=new Map;errorCounts=new Map;log=Se.child({prefix:"QualityController"});values={loading:0,processing:0,startup:0,counts:{resources:0,modelFiles:0,dataFiles:0,models:0,rows:0,attributes:0,dataEntries:0},unusedAttributes:[],errors:{size:0,UndefinedValue:0,UndefinedAttribute:0,WrongDataType:0,MissingModel:0,InvalidModelDescription:0,RemoteReferenceKeyNotFound:0},sizes:{totalEncoded:0,totalDecoded:0,unusedDecoded:0,models:[]}};modelParser;dcupl;getErrorGroupKey(e){const t="attribute"in e?e.attribute:void 0;return`${e.model??""}::${t??""}::${e.errorType}`}getGroupCount(e,t,s){const o=`${e??""}::${t??""}::${s}`;return this.errorCounts.get(o)?.count??0}setError(e){const t=this.getErrorGroupKey(e);let s=this.errorCounts.get(t);s||(s={model:e.model,attribute:"attribute"in e?e.attribute:void 0,errorGroup:e.errorGroup,errorType:e.errorType,type:e.type,count:0},this.errorCounts.set(t,s)),s.count+=1,!(s.count>this.maxErrorsPerGroup)&&(e.key||(e.key=W()),this.errors.set(e.key,e))}getErrorCounts(){return Array.from(this.errorCounts.values()).map(({model:e,attribute:t,errorType:s,count:o})=>({model:e,attribute:t,errorType:s,count:o}))}removeError(e){const t=this.errors.get(e);if(t){const s=this.getErrorGroupKey(t),o=this.errorCounts.get(s);o&&(o.count-=1,o.count<=0&&this.errorCounts.delete(s))}this.errors.delete(e)}getError(e){return this.errors.get(e)}getErrors(){return Array.from(this.errors.values())}resetErrors(){this.errors.clear(),this.errorCounts.clear()}resetModelErrors(){this.getErrors().forEach(e=>{e.type==="model"&&this.removeError(e.key)});for(const[e,t]of this.errorCounts)t.type==="model"&&this.errorCounts.delete(e)}resetValidationErrors(){this.getErrors().forEach(e=>{e.type==="model"&&e.errorType==="InvalidValidator"&&this.removeError(e.key)});for(const[e,t]of this.errorCounts)t.type==="model"&&t.errorType==="InvalidValidator"&&this.errorCounts.delete(e)}resetDataErrors(){const e=["ReferenceDataError","PropertyDataError","DataContainerError"];this.getErrors().forEach(t=>{t.type==="model"&&e.includes(t.errorGroup)&&this.removeError(t.key)});for(const[t,s]of this.errorCounts)s.type==="model"&&e.includes(s.errorGroup)&&this.errorCounts.delete(t)}cleanUpErrors(e,t){const s=this.dcupl?.getContainerSourceMetadata(t),o=t.model;if(s){const n=s.coercionFailureSamples??{};for(const i of Object.keys(n)){const a=n[i];if(!a||a.count<=0)continue;for(const c of this.getModelErrors(o))c.attribute===i&&c.itemKey!=null&&(c.errorType==="UndefinedValue"||c.errorType==="WrongDataType")&&this.removeError(c.key);const u=e.properties.get(i)?.type??a.expected;this.setError(this.buildColumnCoercionError(o,i,a.rawValue,u,a.count))}for(const[i]of e.properties){if(n[i]||s.sourceColumns.includes(i))continue;const a=this.getGroupCount(o,i,"UndefinedValue");if(a>0&&a===t.data.length){for(const u of this.getModelErrors(o))u.attribute===i&&u.itemKey!=null&&u.errorType==="UndefinedValue"&&this.removeError(u.key);this.setError(this.buildAbsentColumnError(o,i))}}}else{const n=new Set(this.getModelErrors(o).filter(u=>u.errorType==="UndefinedValue"&&u.attribute!=null).map(u=>u.attribute));for(const u of n){const c=this.getGroupCount(o,u,"UndefinedValue");if(c>0&&c===t.data.length){for(const l of this.getModelErrors(o))l.attribute===u&&l.itemKey!=null&&l.errorType==="UndefinedValue"&&this.removeError(l.key);this.setError(this.buildAbsentColumnError(o,u))}}const i=this.getModelErrors(o).filter(u=>u.errorType==="WrongDataType"&&u.errorGroup==="PropertyDataError"&&u.title==="Wrong Data Type"&&u.itemKey!=null),a=xr(i,"attribute");for(const u in a){const c=a[u];if(!c?.length)continue;const l=c[0].meta,d=e.properties.get(u)?.type??l?.expected??"unknown";for(const f of c)this.removeError(f.key);this.setError(this.buildColumnCoercionError(o,u,String(l?.rawValue??""),d,c.length))}}}buildColumnCoercionError(e,t,s,o,n){return{title:"Wrong Data Type",type:"model",errorGroup:"DataContainerError",errorType:"WrongDataType",model:e,attribute:t,description:`${n} value(s) in column "${t}" of model "${e}" failed to coerce to the declared type "${o}" (e.g. "${s}")`,meta:{rawValue:s,declaredType:o,rowCount:n}}}buildAbsentColumnError(e,t){return{title:"Missing Data",type:"model",errorGroup:"DataContainerError",errorType:"UndefinedAttribute",model:e,attribute:t,description:`The Attribute "${t}" is not present in the dataset for model "${e}"`}}getModelErrors(e){return this.getErrors().filter(t=>t.type==="model"&&t.model===e)}cleanUpErrorsForItems(e,t,s,o){let n,i;typeof s=="string"?i=s:s instanceof Set&&(n=s,i=o);const a=this.getModelErrors(e.key),u=i?a.filter(c=>c.errorType===i):a;for(const c of u)if(c.itemKey&&t.has(c.itemKey)){if(n&&c.attribute&&!n.has(c.attribute))continue;this.removeError(c.key)}}getErrorsForItems(e,t){return this.getModelErrors(e).filter(s=>s.itemKey&&t.has(s.itemKey))}validateItemsPartial(e,t,s){if(!e)return[];const o=[],n=e.getData(),i=e.getAttributes();for(const a of i){if(!s.has(a.key))continue;const u=a.quality?.validators;if(u)for(const c of t){const l=n.get(c);if(!l)continue;const d=l[a.key],f=this.validateAttribute(d,u,a.key);for(const h of f)h.model=e.key,h.itemKey=l.key,o.push(h)}}return o}async initData(){if(!this.modelParser)return;this.modelParser.unprocessedData=this.modelParser.unprocessedData.filter(s=>s.model!=="$DcuplErrorTrackingErrors");const e=this.modelParser.models.get("$DcuplErrorTrackingErrors");e?.resetData(),e?.resetIndexMap(),this.modelParser.addData({data:this.getErrors(),model:"$DcuplErrorTrackingErrors",type:"set"});const t=this.modelParser.unprocessedData.find(s=>s.model==="$DcuplErrorTrackingErrors");t&&await this.modelParser.handleDataContainer([t])}initErrorTrackingModels(){this.modelParser?.addModel({key:"$DcuplErrorTrackingErrors",autoGenerateKey:!0,supportsAutoCreation:!0,references:[{key:"model",type:"singleValued",model:"$DcuplErrorTrackingModel",filter:{calculateFacets:!0}},{key:"errorGroup",type:"singleValued",model:"$DcuplErrorTrackingGroup",filter:{calculateFacets:!0}},{key:"errorType",type:"singleValued",model:"$DcuplErrorTrackingType",filter:{calculateFacets:!0}}],properties:[{key:"title",type:"string",filter:!0},{key:"itemKey",type:"string",filter:!0},{key:"attribute",type:"string",filter:!0},{key:"description",type:"string"},{key:"meta",type:"json"}],quality:{enabled:!1}}),this.modelParser?.addModel({key:"$DcuplErrorTrackingType",data:[{key:"UndefinedAttribute"},{key:"InvalidValidator"},{key:"UndefinedValue"},{key:"NullValue"},{key:"WrongDataType"},{key:"MissingModel"},{key:"NonUniqueKey"},{key:"RemoteReferenceKeyNotFound"},{key:"InvalidModelDescription"},{key:"InvalidResource"},{key:"InvalidModelDefinition"}],quality:{enabled:!1}}),this.modelParser?.addModel({key:"$DcuplErrorTrackingGroup",data:[{key:"ReferenceDataError"},{key:"PropertyDataError"},{key:"DataContainerError"},{key:"ModelDescriptionError"},{key:"LoaderError"},{key:"ResourceError"},{key:"ModelDefinitionError"}],quality:{enabled:!1}}),this.modelParser?.addModel({key:"$DcuplErrorTrackingModel",supportsAutoCreation:!0,quality:{enabled:!1}})}initAnalyticsValues(){this.calculateTiming(),this.calculateSizes(),this.calculateErrorTrackingFacet(),this.calculateCounts(),this.calculateUnusedAttributes()}calculateUnusedAttributes(){this.values.unusedAttributes=[];const e=this.dcupl.models.keys();for(const t of e){const s=this.getUnusedAttributesFromModel(this.dcupl,t);for(const o of s)this.values.unusedAttributes?.push({model:t,attribute:o})}}calculateCounts(){this.values.counts={},this.values.counts.modelFiles=this.dcupl.modelParser.unprocessedModelDescriptions.size,this.values.counts.dataFiles=this.dcupl.modelParser.unprocessedData.length,this.values.counts.models=this.dcupl.models.keys().length;let e=0,t=0,s=0;this.dcupl.models.keys().forEach(o=>{const n=this.dcupl.modelParser.models.get(o);if(!n)return;const i=n?.getBasicProperties()||[],a=n?.getBasicReferences()||[],u=i.length+a.length;t+=u;const c=n.data?.size||0;e+=c,s+=u*c}),this.values.counts.rows=e,this.values.counts.attributes=t,this.values.counts.dataEntries=s}calculateTiming(){const e=this.dcupl.analyticsController.getByName("loader_processed");e&&e[0]&&(this.values.loading=e[0].value);const t=this.dcupl.analyticsController.getByName("dcupl_initialized");t&&t[0]&&(this.values.processing=t[0].value),this.values.startup=this.values.loading+this.values.processing}calculateSizes(){const e=this.calculateSizesForModels();this.values.sizes={},this.values.sizes.totalEncoded=e.reduce((t,s)=>t+s.encodedBodySize,0),this.values.sizes.totalDecoded=e.reduce((t,s)=>t+s.decodedBodySize,0),this.values.sizes.unusedDecoded=this.calculateUnusedData(),this.values.sizes.models=e.map(t=>({model:t.model,decodedBodySize:t.decodedBodySize,encodedBodySize:t.encodedBodySize})),this.values.sizes.models?.sort((t,s)=>(s.encodedBodySize||0)-(t.encodedBodySize||0))}calculateErrorTrackingFacet(){try{if(!this.enabled)return;const e=this.dcupl.lists.create({modelKey:"$DcuplErrorTrackingErrors"}),t=e.catalog.fn.facets({attribute:"errorType",calculateResults:!0,excludeUndefineds:!1,excludeUnresolved:!1,excludeZeros:!1});this.values.errors={},t&&(this.values.errors.size=e.catalog.fn.metadata().currentSize,this.values.errors.UndefinedValue=t.find(s=>s.key==="UndefinedValue")?.size||0,this.values.errors.UndefinedAttribute=t.find(s=>s.key==="UndefinedAttribute")?.size||0,this.values.errors.WrongDataType=t.find(s=>s.key==="WrongDataType")?.size||0,this.values.errors.MissingModel=t.find(s=>s.key==="MissingModel")?.size||0,this.values.errors.InvalidModelDescription=t.find(s=>s.key==="InvalidModelDescription")?.size||0,this.values.errors.RemoteReferenceKeyNotFound=t.find(s=>s.key==="RemoteReferenceKeyNotFound")?.size||0)}catch(e){this.log.error("Error calculating error tracking facet",e)}}calculateSizesForModels(){const e=this.dcupl.analyticsController.getByType("resource").filter(s=>s.value?.type==="data"),t=xr(e,s=>s.value?.model);return Object.keys(t).map(s=>{const o=t[s]?.reduce((i,a)=>{const u=a.value.encodedBodySize;return i+u},0),n=t[s]?.reduce((i,a)=>{const u=a.value.decodedBodySize;return i+u},0);return{model:s,decodedBodySize:n,encodedBodySize:o}})}calculateUnusedData(){const e=this.dcupl.models.keys();let t=0;return e.forEach(s=>{const o=this.dcupl.modelParser.unprocessedData.find(a=>a.model===s)?.data||[],n=this.getUnusedAttributesFromModel(this.dcupl,s);if(!n.length)return;const i=this.getDataWithAttributes(o,n);t+=JSON.stringify(i).length}),t}getDataWithAttributes(e,t){return e.map(s=>{const o={};return t.forEach(n=>{o[n]=s[n]}),o})}getUnusedAttributesFromModel(e,t){const s=e.modelParser.models.get(t),o=s?.getBasicProperties()||[],n=s?.getBasicReferences()||[],i=s?.keyProperty,a=[...o,...n].map(c=>c.key);typeof i=="string"?a.push(i):Array.isArray(i)?a.push(...i):a.push("key"),a.push("key");const u=e.modelParser.unprocessedData.find(c=>c.model===t)?.data||[];return this.getUnusedAttributes(u,a)}getUnusedAttributes(e,t){const s=new Set;return e.forEach(o=>{Object.keys(o).forEach(n=>{t.includes(n)||s.add(n)})}),Array.from(s.values())}validateAttribute(e,t,s){const o=[];if(t.email){const n=this.validateEmail(e,s);n&&o.push(n)}if(t.endsWith){const n=this.validateEndsWith(e,t.endsWith,s);n&&o.push(n)}if(t.enum){const n=this.validateEnum(e,t.enum,s);n&&o.push(n)}if(t.includes){const n=this.validateIncludes(e,t.includes,s);n&&o.push(n)}if(t.max){const n=this.validateMax(e,t.max,s);n&&o.push(n)}if(t.maxLength){const n=this.validateMaxLength(e,t.maxLength,s);n&&o.push(n)}if(t.min){const n=this.validateMin(e,t.min,s);n&&o.push(n)}if(t.minLength){const n=this.validateMinLength(e,t.minLength,s);n&&o.push(n)}if(t.pattern){const n=this.validatePattern(e,t.pattern,s);n&&o.push(n)}if(t.startsWith){const n=this.validateStartsWith(e,t.startsWith,s);n&&o.push(n)}return o}validateAttributesAfterInitialization(e){if(!e)return[];const t=e.getAttributes(),s=e.getDataAsArray(),o=[];for(const n of t){const i=n.quality?.validators;if(i&&i.unique){const a=this.validateUnique(s,n.key,e);o.push(...a)}}return o}validateUnique(e,t,s){const o=[],n=new Set,i=s.attributeQualityConfigs?.get(t)?.validatorHandling!=="loose";for(const a of e){const u=a[t];if(n.has(u)){const c={title:"Validator Error - Unique",type:"model",errorGroup:"PropertyDataError",model:s.key,errorType:"InvalidValidator",attribute:t,itemKey:a.key,description:`The value "${u}" is not unique`};o.push(c),i&&delete a[t]}else n.add(u)}return o}validateEmail(e,t){if(e!=null&&!/^[\w.-]+@[a-zA-Z\d.-]+\.[a-zA-Z]{2,6}$/.test(e))return{title:"Validator Error - Invalid Email",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:t,description:`The value "${e}" is not a valid email address`}}validateMin(e,t,s){if(e<t.value)return{title:"Validator Error - Min Value",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" is smaller than the minimum value of "${t.value}"`}}validateMax(e,t,s){if(e>t.value)return{title:"Validator Error - Max Value",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" is larger than the maximum value of "${t.value}"`}}validateStartsWith(e,t,s){if(e!=null&&!e.startsWith(t.value))return{title:"Validator Error - StartsWith",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" does not start with "${t.value}"`}}validateEndsWith(e,t,s){if(e!=null&&!yo(e,t.value))return{title:"Validator Error - EndsWith",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" does not end with "${t.value}"`}}validateIncludes(e,t,s){if(e!=null&&!qp(e,t.value))return{title:"Validator Error - Includes",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" does not include "${t.value}"`}}validateMinLength(e,t,s){if(e!=null&&e.length<t.value)return{title:"Validator Error - Min Length",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" is shorter than the minimum length of "${t.value}"`}}validateMaxLength(e,t,s){if(e!=null&&e.length>t.value)return{title:"Validator Error - Max Length",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" is longer than the maximum length of "${t.value}"`}}validateEnum(e,t,s){if(!t.value.includes(e))return{title:"Validator Error - Enum",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" is not in the enum values`}}validatePattern(e,t,s){if(e!=null)try{if(!new RegExp(t.value).test(e))return{title:"Validator Error - Pattern",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" does not match the pattern "${t.value}"`}}catch(o){this.log.error("Invalid pattern validation",o)}}};var zp=Object.defineProperty,Lp=Object.getOwnPropertyDescriptor,V=(r,e,t,s)=>{for(var o=Lp(e,t),n=r.length-1,i;n>=0;n--)(i=r[n])&&(o=i(e,t,o)||o);return o&&zp(e,t,o),o};let Q=class{cdRef=new wr;analyticsController=new nf;containerSourceMetadata=new WeakMap;scriptController=new Qf;qualityController=new Np(this.scriptController);log=Se.child({prefix:"Dcupl"});modelParser=new nt(this.cdRef,this.qualityController,this);globalItemService=new Fo(this.modelParser,this.scriptController);cacheCtrl=new xo(!1);queryManager=new qf(this.scriptController,this.globalItemService,this.modelParser);_loaders=new Map;rootQueryBuilder=new me;_defaultInitOptions={config:{projectId:void 0,apiKey:void 0,version:"draft"},errorTracking:{enabled:!1},quality:{enabled:!0},analytics:{enabled:!1},performance:{cache:{enabled:!0},clone:{enabled:!0},partialUpdates:{modelRatioThreshold:.5,itemRatioThreshold:.5,cacheInvalidationThreshold:.7,enableDetailedLogging:!1},autoUpdateLists:{enabled:!1}},referenceMetadata:{enabled:!1}};initOptions;lists=new Uo(this,this.cdRef);busy=!1;updateQueue=[];constructor(e){this.analyticsController.init(!!e?.analytics?.enabled),this.qualityController.dcupl=this,this.analyticsController.mark({name:"dcupl:constructor"}),this.initOptions=st({},this._defaultInitOptions,e),this.qualityController.enabled=this.initOptions.errorTracking?.enabled||this.initOptions.quality?.enabled||!1,this.qualityController.maxErrorsPerGroup=this.initOptions.quality?.maxErrorsPerGroup??1e3,this.modelParser.initOptions=Object.assign({},this.initOptions),this.cdRef._init({cdRefKey:"root",dcuplInitOptions:this.initOptions,analyticsController:this.analyticsController}),this.cacheCtrl.enabled=!!this.initOptions.performance?.cache?.enabled}models={get:e=>this.modelParser.models.get(e)?.getModelDefinition(),set:e=>(this.modelParser.models.delete(e.key),this.modelParser.addModel(e)),update:e=>this.modelParser.addModel(e),remove:e=>{this.modelParser.models.delete(e)},keys:()=>this.modelParser._getModelKeys()};views={get:e=>this.modelParser.views.get(e),keys:e=>this.modelParser._getViewKeys(e),set:e=>this.modelParser.addView(e)};data={update:(e,t)=>{this.modelParser.addData({data:e,model:t.model,type:"update",keyProperty:t.keyProperty,keyPropertySeparator:t.keyPropertySeparator,autoGenerateKey:t.autoGenerateKey})},upsert:(e,t)=>{this.modelParser.addData({data:e,model:t.model,type:"upsert",keyProperty:t.keyProperty,keyPropertySeparator:t.keyPropertySeparator,autoGenerateKey:t.autoGenerateKey})},set:(e,t)=>{this.modelParser.addData({data:e,model:t.model,type:"set",keyProperty:t.keyProperty,keyPropertySeparator:t.keyPropertySeparator,autoGenerateKey:t.autoGenerateKey})},remove:(e,t)=>{this.modelParser.addData({data:e,model:t.model,type:"remove",keyProperty:t.keyProperty,keyPropertySeparator:t.keyPropertySeparator,autoGenerateKey:t.autoGenerateKey})},reset:e=>{e.model&&(this.modelParser.models.get(e.model)?.resetData(),this.modelParser.models.get(e.model)?.resetIndexMap())},apply:e=>this.modelParser.addData(e)};loaders={add:(e,t)=>{this.addLoader(e,t)},remove:e=>{this.removeLoader(e)},get:e=>this._loaders.get(e)};scripts={set:(e,t)=>{this.scriptController.setScript(e,t)},remove:e=>{this.scriptController.removeScript(e)},get:e=>{this.scriptController.getScript(e)},keys:()=>this.scriptController.keys(),execute:(e,t)=>{const s={dcupl:this,options:t};return this.scriptController.executeScript(e,"script",s)},executeAsync:(e,t)=>new Promise((s,o)=>{const n={dcupl:this,options:t,resolve:s,reject:o};return this.scriptController.executeScript(e,"async_script",n)})};fn={pivot:e=>this._pivot(e),aggregate:e=>this._aggregate(e),suggest:e=>this._suggest(e),groupBy:e=>this._groupBy(e),facets:e=>this._facets(e),metadata:e=>this._metadata(e)};_pivot(e){return this.getFnList(e).catalog.fn.pivot(e.options)}_aggregate(e){return this.getFnList(e).catalog.fn.aggregate(e.options)}_suggest(e){return this.getFnList(e).catalog.fn.suggest(e.options)}_groupBy(e){return this.getFnList(e).catalog.fn.groupBy(e.options)}_facets(e){return this.getFnList(e).catalog.fn.facets(e.options)}_metadata(e){return this.getFnList(e).catalog.fn.metadata()}registerContainer(e){this.modelParser.addData(e)}updateRegisteredContainer(e,t){const s=this.modelParser.unprocessedData.findIndex(o=>o.placeholderUid===e.placeholderUid);s>-1&&(delete e.placeholderUid,this.modelParser.unprocessedData[s]=e,t&&this.containerSourceMetadata.set(e,t))}removeRegisteredContainer(e){const t=this.modelParser.unprocessedData.findIndex(s=>s.placeholderUid===e.placeholderUid);t>-1&&this.modelParser.unprocessedData.splice(t,1)}getContainerSourceMetadata(e){return this.containerSourceMetadata.get(e)}setContainerSourceMetadata(e,t){this.containerSourceMetadata.set(e,t)}getFnList(e){let t=this.lists.get(`__global_list__${e.modelKey}`);return t||(t=this.lists.create({modelKey:e.modelKey,listKey:`__global_list__${e.modelKey}`})),e.query?t.catalog.query.apply(e.query,{mode:"set"}):t.catalog.query.reset(),t}getAffectedModels(e){const t=new Set;for(const o of e.keys())t.add(o);const s=this.modelParser.dependencyGraph;if(s)for(const o of e.keys())this.getDownstreamDependencies(o,s).forEach(n=>t.add(n));return Array.from(t)}getDownstreamDependencies(e,t){const s=new Set,o=new Set,n=i=>{if(!o.has(i)){o.add(i);for(const[a,u]of Object.entries(t.dependencies||{}))Array.isArray(u)&&u.includes(i)&&(s.add(a),n(a))}};return n(e),s}updateFnLists(e,t){const s=this.initOptions.performance?.partialUpdates?.enableDetailedLogging??!1;for(const o of this.lists.getAll()){if(!this.shouldAutoUpdateList(o,t)){s&&this.log.debug("List skipped (auto-update disabled)",{listKey:o.key,modelKey:o.modelKey});continue}e?this.isListAffectedByChanges(o,e.affectedModels)?(s&&this.log.debug("List auto-updating (affected by changes)",{listKey:o.key,modelKey:o.modelKey,affectedModels:e.affectedModels}),o.update()):s&&this.log.debug("List skipped (not affected)",{listKey:o.key,modelKey:o.modelKey}):(s&&this.log.debug("List auto-updating (full update)",{listKey:o.key,modelKey:o.modelKey}),o.update())}}isListAffectedByChanges(e,t){const s=e.modelKey;return t.includes(s)}shouldAutoUpdateList(e,t){return e.key.startsWith("__global_list__")?!0:t!==void 0?t:e.options.autoUpdate!==void 0?e.options.autoUpdate:this.initOptions.performance?.autoUpdateLists?.enabled??!1}query={one:e=>this.getItem(e),many:e=>this._getManyItems(e),execute:e=>this.executeQuery(e),generate:(e,t)=>(this.rootQueryBuilder.init({modelKey:e}),this.rootQueryBuilder.applyQuery(t)),registerCustomOperator:(e,t)=>{this.queryManager.registerCustomOperator(e,t)}};on(e){return this.cdRef.on(e)}async init(){try{return await this.performUpdate(()=>this.modelParser.init()),this.cacheCtrl.clear(),!0}catch(e){return this.log.error("Initialization failed",e),!1}}async update(e){try{const t=this.modelParser.changeTracker,s=t.hasChanges(),o=s?new Map(t.getChangedAttributes()):null,n=s?new Set(t.getModelsWithFullReset()):null,i=this.cacheCtrl.getStats();if(await this.performUpdate(()=>this.modelParser.update()),s&&this.cacheCtrl.enabled&&o){const a=this.modelParser.getTotalItemCount(),u=t.getTotalChangedItemCount(),c=a>0?u/a:0,l=this.initOptions.performance?.partialUpdates?.cacheInvalidationThreshold??.7,d=this.initOptions.performance?.partialUpdates?.enableDetailedLogging??!1;n&&n.size>0?(d&&this.log.debug("Cache invalidation: Full clear",{reason:"full_reset_detected"}),this.cacheCtrl.clear()):c>l?(d&&this.log.debug("Cache invalidation: Full clear",{reason:"high_item_ratio",ratio:c.toFixed(2),threshold:l,changedItems:u,totalItems:a}),this.cacheCtrl.clear()):(d&&this.log.debug("Cache invalidation: Selective",{changedItems:u,totalItems:a,ratio:c.toFixed(2)}),this.cacheCtrl.invalidateByDependencies(o))}else(this.initOptions.performance?.partialUpdates?.enableDetailedLogging??!1)&&this.log.debug("Cache invalidation: Full clear",{reason:"full_update"}),this.cacheCtrl.clear();if(this.cacheCtrl.getStats){const a=this.cacheCtrl.getStats(),u=this.modelParser.partialUpdateMetrics.getLastUpdates(1);if(u.length>0&&u[0]){const c=u[0];c.cacheStats={entriesInvalidated:i.totalEntries-a.totalEntries,totalEntries:i.totalEntries}}}if(s&&o){const a={isPartialUpdate:!0,changedModels:Array.from(o.keys()),changedAttributes:o,affectedModels:this.getAffectedModels(o)};this.cdRef.trigger({scope:"global",type:"dcupl_partial_update",args:[a]}),this.updateFnLists(a,e?.autoUpdateLists)}else this.updateFnLists(null,e?.autoUpdateLists);return!0}catch(t){return this.log.error("Update failed",t),!1}}destroy(){try{this.lists.destroy(),this._loaders.forEach(e=>{e.destroy()})}catch{}}getItem(e){const t=this.modelParser.models.get(e.modelKey);if(!t)throw new Error;return this.globalItemService.getItem(e.itemKey,t.data,t,e)}_getManyItems(e){const t=this.modelParser.models.get(e.modelKey);if(!t)throw new Error;return this.globalItemService.getManyItems(e.itemKeys,t.data,t,e)}executeQuery(e){if(!e?.modelKey)throw new Error("No modelKey provided");return this.getFnList({modelKey:e?.modelKey}).catalog.query.execute(e)}addLoader(e,t){const s=ye.now(),o=t||W();this._loaders.set(o,e),e.core=this,e.key=o;const n=new wr;n._init({cdRefKey:o,parentCd:this.cdRef,dcuplInitOptions:this.initOptions,analyticsController:this.analyticsController}),e.cdRef=n,this.initOptions.config?.projectId&&e.defaultVariables.set("projectId",{key:"projectId",value:this.initOptions.config?.projectId}),this.initOptions.config?.apiKey&&e.defaultVariables.set("apiKey",{key:"apiKey",value:this.initOptions.config?.apiKey}),this.initOptions.config?.version&&e.defaultVariables.set("version",{key:"version",value:this.initOptions.config?.version}),this.cdRef.trigger({scope:"global",type:"loader_added",connectMessage:!0,args:[o],start:s})}removeLoader(e){const t=this._loaders.get(e);t&&t.destroy(),this._loaders.delete(e)}async performUpdate(e){if(this.busy)return new Promise(t=>{this.updateQueue.push(()=>e().then(t))});try{this.busy=!0,await e()}finally{this.busy=!1,this.processQueue()}}async processQueue(){if(this.updateQueue.length>0){const e=this.updateQueue.shift();e&&(await e(),this.processQueue())}}};V([b({scope:"global",type:"fn_pivot",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],Q.prototype,"_pivot"),V([b({scope:"global",type:"fn_aggregate",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],Q.prototype,"_aggregate"),V([b({scope:"global",type:"fn_suggest",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],Q.prototype,"_suggest"),V([b({scope:"global",type:"fn_groupBy",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],Q.prototype,"_groupBy"),V([b({scope:"global",type:"fn_facets",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],Q.prototype,"_facets"),V([b({scope:"global",type:"fn_metadata",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],Q.prototype,"_metadata"),V([b({scope:"global",type:"dcupl_initialized",connectMessage:!0})],Q.prototype,"init"),V([b({scope:"global",type:"dcupl_updated_manually",action:"update",connectMessage:!0})],Q.prototype,"update"),V([b({scope:"global",type:"dcupl_destroyed",connectMessage:!0})],Q.prototype,"destroy"),V([b({scope:"global",type:"query_one",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],Q.prototype,"getItem"),V([b({scope:"global",type:"query_many",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],Q.prototype,"_getManyItems"),V([b({scope:"global",type:"query_execute",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],Q.prototype,"executeQuery"),V([b({scope:"global",type:"loader_removed",connectMessage:!0})],Q.prototype,"removeLoader");let Wp=class extends Q{version="2.0.0-beta.6";constructor(e){super(e)}};var No=typeof global=="object"&&global&&global.Object===Object&&global,Hp=typeof self=="object"&&self&&self.Object===Object&&self,Z=No||Hp||Function("return this")(),ue=Z.Symbol,zo=Object.prototype,Jp=zo.hasOwnProperty,Zp=zo.toString,it=ue?ue.toStringTag:void 0;function Xp(r){var e=Jp.call(r,it),t=r[it];try{r[it]=void 0;var s=!0}catch{}var o=Zp.call(r);return s&&(e?r[it]=t:delete r[it]),o}var Yp=Object.prototype,eh=Yp.toString;function th(r){return eh.call(r)}var rh="[object Null]",sh="[object Undefined]",Lo=ue?ue.toStringTag:void 0;function Re(r){return r==null?r===void 0?sh:rh:Lo&&Lo in Object(r)?Xp(r):th(r)}function Te(r){return r!=null&&typeof r=="object"}var oh="[object Symbol]";function Mr(r){return typeof r=="symbol"||Te(r)&&Re(r)==oh}function nh(r,e){for(var t=-1,s=r==null?0:r.length,o=Array(s);++t<s;)o[t]=e(r[t],t,r);return o}var Ie=Array.isArray,Wo=ue?ue.prototype:void 0,Ho=Wo?Wo.toString:void 0;function Jo(r){if(typeof r=="string")return r;if(Ie(r))return nh(r,Jo)+"";if(Mr(r))return Ho?Ho.call(r):"";var e=r+"";return e=="0"&&1/r==-1/0?"-0":e}function It(r){var e=typeof r;return r!=null&&(e=="object"||e=="function")}var ih="[object AsyncFunction]",ah="[object Function]",uh="[object GeneratorFunction]",ch="[object Proxy]";function Zo(r){if(!It(r))return!1;var e=Re(r);return e==ah||e==uh||e==ih||e==ch}var Rr=Z["__core-js_shared__"],Xo=(function(){var r=/[^.]+$/.exec(Rr&&Rr.keys&&Rr.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""})();function lh(r){return!!Xo&&Xo in r}var dh=Function.prototype,fh=dh.toString;function ve(r){if(r!=null){try{return fh.call(r)}catch{}try{return r+""}catch{}}return""}var ph=/[\\^$.*+?()[\]{}|]/g,hh=/^\[object .+?Constructor\]$/,yh=Function.prototype,gh=Object.prototype,mh=yh.toString,vh=gh.hasOwnProperty,bh=RegExp("^"+mh.call(vh).replace(ph,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function kh(r){if(!It(r)||lh(r))return!1;var e=Zo(r)?bh:hh;return e.test(ve(r))}function wh(r,e){return r?.[e]}function be(r,e){var t=wh(r,e);return kh(t)?t:void 0}var Tr=be(Z,"WeakMap"),Yo=Object.create,Ah=(function(){function r(){}return function(e){if(!It(e))return{};if(Yo)return Yo(e);r.prototype=e;var t=new r;return r.prototype=void 0,t}})(),en=(function(){try{var r=be(Object,"defineProperty");return r({},"",{}),r}catch{}})();function Ch(r,e){for(var t=-1,s=r==null?0:r.length;++t<s&&e(r[t],t,r)!==!1;);return r}var $h=9007199254740991,Dh=/^(?:0|[1-9]\d*)$/;function _h(r,e){var t=typeof r;return e=e??$h,!!e&&(t=="number"||t!="symbol"&&Dh.test(r))&&r>-1&&r%1==0&&r<e}function Ph(r,e,t){e=="__proto__"&&en?en(r,e,{configurable:!0,enumerable:!0,value:t,writable:!0}):r[e]=t}function tn(r,e){return r===e||r!==r&&e!==e}var xh=Object.prototype,Eh=xh.hasOwnProperty;function jh(r,e,t){var s=r[e];(!(Eh.call(r,e)&&tn(s,t))||t===void 0&&!(e in r))&&Ph(r,e,t)}var Sh=9007199254740991;function rn(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=Sh}function Mh(r){return r!=null&&rn(r.length)&&!Zo(r)}var Rh=Object.prototype;function sn(r){var e=r&&r.constructor,t=typeof e=="function"&&e.prototype||Rh;return r===t}function Th(r,e){for(var t=-1,s=Array(r);++t<r;)s[t]=e(t);return s}var Ih="[object Arguments]";function on(r){return Te(r)&&Re(r)==Ih}var nn=Object.prototype,Oh=nn.hasOwnProperty,Kh=nn.propertyIsEnumerable,Fh=on((function(){return arguments})())?on:function(r){return Te(r)&&Oh.call(r,"callee")&&!Kh.call(r,"callee")};function qh(){return!1}var an=typeof exports=="object"&&exports&&!exports.nodeType&&exports,un=an&&typeof module=="object"&&module&&!module.nodeType&&module,Qh=un&&un.exports===an,cn=Qh?Z.Buffer:void 0,Bh=cn?cn.isBuffer:void 0,ln=Bh||qh,Vh="[object Arguments]",Gh="[object Array]",Uh="[object Boolean]",Nh="[object Date]",zh="[object Error]",Lh="[object Function]",Wh="[object Map]",Hh="[object Number]",Jh="[object Object]",Zh="[object RegExp]",Xh="[object Set]",Yh="[object String]",ey="[object WeakMap]",ty="[object ArrayBuffer]",ry="[object DataView]",sy="[object Float32Array]",oy="[object Float64Array]",ny="[object Int8Array]",iy="[object Int16Array]",ay="[object Int32Array]",uy="[object Uint8Array]",cy="[object Uint8ClampedArray]",ly="[object Uint16Array]",dy="[object Uint32Array]",D={};D[sy]=D[oy]=D[ny]=D[iy]=D[ay]=D[uy]=D[cy]=D[ly]=D[dy]=!0,D[Vh]=D[Gh]=D[ty]=D[Uh]=D[ry]=D[Nh]=D[zh]=D[Lh]=D[Wh]=D[Hh]=D[Jh]=D[Zh]=D[Xh]=D[Yh]=D[ey]=!1;function fy(r){return Te(r)&&rn(r.length)&&!!D[Re(r)]}function Ir(r){return function(e){return r(e)}}var dn=typeof exports=="object"&&exports&&!exports.nodeType&&exports,at=dn&&typeof module=="object"&&module&&!module.nodeType&&module,py=at&&at.exports===dn,Or=py&&No.process,Oe=(function(){try{var r=at&&at.require&&at.require("util").types;return r||Or&&Or.binding&&Or.binding("util")}catch{}})(),fn=Oe&&Oe.isTypedArray,hy=fn?Ir(fn):fy,yy=Object.prototype,gy=yy.hasOwnProperty;function my(r,e){var t=Ie(r),s=!t&&Fh(r),o=!t&&!s&&ln(r),n=!t&&!s&&!o&&hy(r),i=t||s||o||n,a=i?Th(r.length,String):[],u=a.length;for(var c in r)gy.call(r,c)&&!(i&&(c=="length"||o&&(c=="offset"||c=="parent")||n&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||_h(c,u)))&&a.push(c);return a}function pn(r,e){return function(t){return r(e(t))}}var vy=pn(Object.keys,Object),by=Object.prototype,ky=by.hasOwnProperty;function wy(r){if(!sn(r))return vy(r);var e=[];for(var t in Object(r))ky.call(r,t)&&t!="constructor"&&e.push(t);return e}function Ay(r){return Mh(r)?my(r):wy(r)}var Cy=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,$y=/^\w*$/;function Dy(r,e){if(Ie(r))return!1;var t=typeof r;return t=="number"||t=="symbol"||t=="boolean"||r==null||Mr(r)?!0:$y.test(r)||!Cy.test(r)||e!=null&&r in Object(e)}var ut=be(Object,"create");function _y(){this.__data__=ut?ut(null):{},this.size=0}function Py(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}var xy="__lodash_hash_undefined__",Ey=Object.prototype,jy=Ey.hasOwnProperty;function Sy(r){var e=this.__data__;if(ut){var t=e[r];return t===xy?void 0:t}return jy.call(e,r)?e[r]:void 0}var My=Object.prototype,Ry=My.hasOwnProperty;function Ty(r){var e=this.__data__;return ut?e[r]!==void 0:Ry.call(e,r)}var Iy="__lodash_hash_undefined__";function Oy(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=ut&&e===void 0?Iy:e,this}function ke(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}ke.prototype.clear=_y,ke.prototype.delete=Py,ke.prototype.get=Sy,ke.prototype.has=Ty,ke.prototype.set=Oy;function Ky(){this.__data__=[],this.size=0}function Ot(r,e){for(var t=r.length;t--;)if(tn(r[t][0],e))return t;return-1}var Fy=Array.prototype,qy=Fy.splice;function Qy(r){var e=this.__data__,t=Ot(e,r);if(t<0)return!1;var s=e.length-1;return t==s?e.pop():qy.call(e,t,1),--this.size,!0}function By(r){var e=this.__data__,t=Ot(e,r);return t<0?void 0:e[t][1]}function Vy(r){return Ot(this.__data__,r)>-1}function Gy(r,e){var t=this.__data__,s=Ot(t,r);return s<0?(++this.size,t.push([r,e])):t[s][1]=e,this}function oe(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}oe.prototype.clear=Ky,oe.prototype.delete=Qy,oe.prototype.get=By,oe.prototype.has=Vy,oe.prototype.set=Gy;var ct=be(Z,"Map");function Uy(){this.size=0,this.__data__={hash:new ke,map:new(ct||oe),string:new ke}}function Ny(r){var e=typeof r;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?r!=="__proto__":r===null}function Kt(r,e){var t=r.__data__;return Ny(e)?t[typeof e=="string"?"string":"hash"]:t.map}function zy(r){var e=Kt(this,r).delete(r);return this.size-=e?1:0,e}function Ly(r){return Kt(this,r).get(r)}function Wy(r){return Kt(this,r).has(r)}function Hy(r,e){var t=Kt(this,r),s=t.size;return t.set(r,e),this.size+=t.size==s?0:1,this}function ce(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}ce.prototype.clear=Uy,ce.prototype.delete=zy,ce.prototype.get=Ly,ce.prototype.has=Wy,ce.prototype.set=Hy;var Jy="Expected a function";function Kr(r,e){if(typeof r!="function"||e!=null&&typeof e!="function")throw new TypeError(Jy);var t=function(){var s=arguments,o=e?e.apply(this,s):s[0],n=t.cache;if(n.has(o))return n.get(o);var i=r.apply(this,s);return t.cache=n.set(o,i)||n,i};return t.cache=new(Kr.Cache||ce),t}Kr.Cache=ce;var Zy=500;function Xy(r){var e=Kr(r,function(s){return t.size===Zy&&t.clear(),s}),t=e.cache;return e}var Yy=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,eg=/\\(\\)?/g,tg=Xy(function(r){var e=[];return r.charCodeAt(0)===46&&e.push(""),r.replace(Yy,function(t,s,o,n){e.push(o?n.replace(eg,"$1"):s||t)}),e});function rg(r){return r==null?"":Jo(r)}function sg(r,e){return Ie(r)?r:Dy(r,e)?[r]:tg(rg(r))}function og(r){if(typeof r=="string"||Mr(r))return r;var e=r+"";return e=="0"&&1/r==-1/0?"-0":e}function ng(r,e){e=sg(e,r);for(var t=0,s=e.length;r!=null&&t<s;)r=r[og(e[t++])];return t&&t==s?r:void 0}function ig(r,e,t){var s=r==null?void 0:ng(r,e);return s===void 0?t:s}function ag(r,e){for(var t=-1,s=e.length,o=r.length;++t<s;)r[o+t]=e[t];return r}var ug=pn(Object.getPrototypeOf,Object);function cg(){this.__data__=new oe,this.size=0}function lg(r){var e=this.__data__,t=e.delete(r);return this.size=e.size,t}function dg(r){return this.__data__.get(r)}function fg(r){return this.__data__.has(r)}var pg=200;function hg(r,e){var t=this.__data__;if(t instanceof oe){var s=t.__data__;if(!ct||s.length<pg-1)return s.push([r,e]),this.size=++t.size,this;t=this.__data__=new ce(s)}return t.set(r,e),this.size=t.size,this}function Ke(r){var e=this.__data__=new oe(r);this.size=e.size}Ke.prototype.clear=cg,Ke.prototype.delete=lg,Ke.prototype.get=dg,Ke.prototype.has=fg,Ke.prototype.set=hg;var hn=typeof exports=="object"&&exports&&!exports.nodeType&&exports,yn=hn&&typeof module=="object"&&module&&!module.nodeType&&module,yg=yn&&yn.exports===hn,gn=yg?Z.Buffer:void 0;gn&&gn.allocUnsafe;function gg(r,e){return r.slice()}function mg(r,e){for(var t=-1,s=r==null?0:r.length,o=0,n=[];++t<s;){var i=r[t];e(i,t,r)&&(n[o++]=i)}return n}function vg(){return[]}var bg=Object.prototype,kg=bg.propertyIsEnumerable,mn=Object.getOwnPropertySymbols,wg=mn?function(r){return r==null?[]:(r=Object(r),mg(mn(r),function(e){return kg.call(r,e)}))}:vg;function Ag(r,e,t){var s=e(r);return Ie(r)?s:ag(s,t(r))}function Cg(r){return Ag(r,Ay,wg)}var Fr=be(Z,"DataView"),qr=be(Z,"Promise"),Qr=be(Z,"Set"),vn="[object Map]",$g="[object Object]",bn="[object Promise]",kn="[object Set]",wn="[object WeakMap]",An="[object DataView]",Dg=ve(Fr),_g=ve(ct),Pg=ve(qr),xg=ve(Qr),Eg=ve(Tr),ne=Re;(Fr&&ne(new Fr(new ArrayBuffer(1)))!=An||ct&&ne(new ct)!=vn||qr&&ne(qr.resolve())!=bn||Qr&&ne(new Qr)!=kn||Tr&&ne(new Tr)!=wn)&&(ne=function(r){var e=Re(r),t=e==$g?r.constructor:void 0,s=t?ve(t):"";if(s)switch(s){case Dg:return An;case _g:return vn;case Pg:return bn;case xg:return kn;case Eg:return wn}return e});var jg=Object.prototype,Sg=jg.hasOwnProperty;function Mg(r){var e=r.length,t=new r.constructor(e);return e&&typeof r[0]=="string"&&Sg.call(r,"index")&&(t.index=r.index,t.input=r.input),t}var Cn=Z.Uint8Array;function Br(r){var e=new r.constructor(r.byteLength);return new Cn(e).set(new Cn(r)),e}function Rg(r,e){var t=Br(r.buffer);return new r.constructor(t,r.byteOffset,r.byteLength)}var Tg=/\w*$/;function Ig(r){var e=new r.constructor(r.source,Tg.exec(r));return e.lastIndex=r.lastIndex,e}var $n=ue?ue.prototype:void 0,Dn=$n?$n.valueOf:void 0;function Og(r){return Dn?Object(Dn.call(r)):{}}function Kg(r,e){var t=Br(r.buffer);return new r.constructor(t,r.byteOffset,r.length)}var Fg="[object Boolean]",qg="[object Date]",Qg="[object Map]",Bg="[object Number]",Vg="[object RegExp]",Gg="[object Set]",Ug="[object String]",Ng="[object Symbol]",zg="[object ArrayBuffer]",Lg="[object DataView]",Wg="[object Float32Array]",Hg="[object Float64Array]",Jg="[object Int8Array]",Zg="[object Int16Array]",Xg="[object Int32Array]",Yg="[object Uint8Array]",em="[object Uint8ClampedArray]",tm="[object Uint16Array]",rm="[object Uint32Array]";function sm(r,e,t){var s=r.constructor;switch(e){case zg:return Br(r);case Fg:case qg:return new s(+r);case Lg:return Rg(r);case Wg:case Hg:case Jg:case Zg:case Xg:case Yg:case em:case tm:case rm:return Kg(r);case Qg:return new s;case Bg:case Ug:return new s(r);case Vg:return Ig(r);case Gg:return new s;case Ng:return Og(r)}}function om(r){return typeof r.constructor=="function"&&!sn(r)?Ah(ug(r)):{}}var nm="[object Map]";function im(r){return Te(r)&&ne(r)==nm}var _n=Oe&&Oe.isMap,am=_n?Ir(_n):im,um="[object Set]";function cm(r){return Te(r)&&ne(r)==um}var Pn=Oe&&Oe.isSet,lm=Pn?Ir(Pn):cm,xn="[object Arguments]",dm="[object Array]",fm="[object Boolean]",pm="[object Date]",hm="[object Error]",En="[object Function]",ym="[object GeneratorFunction]",gm="[object Map]",mm="[object Number]",jn="[object Object]",vm="[object RegExp]",bm="[object Set]",km="[object String]",wm="[object Symbol]",Am="[object WeakMap]",Cm="[object ArrayBuffer]",$m="[object DataView]",Dm="[object Float32Array]",_m="[object Float64Array]",Pm="[object Int8Array]",xm="[object Int16Array]",Em="[object Int32Array]",jm="[object Uint8Array]",Sm="[object Uint8ClampedArray]",Mm="[object Uint16Array]",Rm="[object Uint32Array]",A={};A[xn]=A[dm]=A[Cm]=A[$m]=A[fm]=A[pm]=A[Dm]=A[_m]=A[Pm]=A[xm]=A[Em]=A[gm]=A[mm]=A[jn]=A[vm]=A[bm]=A[km]=A[wm]=A[jm]=A[Sm]=A[Mm]=A[Rm]=!0,A[hm]=A[En]=A[Am]=!1;function Ft(r,e,t,s,o,n){var i;if(i!==void 0)return i;if(!It(r))return r;var a=Ie(r);if(a)i=Mg(r);else{var u=ne(r),c=u==En||u==ym;if(ln(r))return gg(r);if(u==jn||u==xn||c&&!o)i=c?{}:om(r);else{if(!A[u])return o?r:{};i=sm(r,u)}}n||(n=new Ke);var l=n.get(r);if(l)return l;n.set(r,i),lm(r)?r.forEach(function(h){i.add(Ft(h,e,t,h,r,n))}):am(r)&&r.forEach(function(h,p){i.set(p,Ft(h,e,t,p,r,n))});var d=Cg,f=a?void 0:d(r);return Ch(f||r,function(h,p){f&&(p=h,h=r[p]),jh(i,p,Ft(h,e,t,p,r,n))}),i}var Tm=1,Im=4;function Om(r){return Ft(r,Tm|Im)}const F={now:()=>typeof performance<"u"&&performance.now?performance.now():new Date().getTime(),mark:r=>{typeof performance<"u"&&performance.mark&&performance.mark(r)},measure:(r,e,t)=>{typeof performance<"u"&&performance.measure&&performance.measure(r,e,t)},getEntriesByName(r){if(typeof performance<"u"&&performance.getEntriesByName)return performance.getEntriesByName(r)},getEntriesByType(r){if(typeof performance<"u"&&performance.getEntriesByType)return performance.getEntriesByType(r)}},Sn={silent:0,error:1,warn:2,info:3,debug:4};class S{config;static globalConfig={};constructor(e={}){this.config={level:e.level??S.globalConfig.level??this.getDefaultLevel(),format:e.format??S.globalConfig.format??this.getDefaultFormat(),prefix:e.prefix,onLog:e.onLog??S.globalConfig.onLog,onTrackError:e.onTrackError??S.globalConfig.onTrackError}}static setGlobalConfig(e){S.globalConfig={...S.globalConfig,...e}}static getGlobalConfig(){return{...S.globalConfig}}static setModuleLevel(e,t){S.globalConfig.onLog||(S.globalConfig.onLog=void 0),S._moduleOverrides||(S._moduleOverrides=new Map),S._moduleOverrides.set(e,t)}static getModuleLevel(e){if(!(!e||!S._moduleOverrides))return S._moduleOverrides.get(e)}getDefaultLevel(){return"info"}getDefaultFormat(){return"pretty"}getEffectiveLevel(){if(this.config.prefix){const e=S.getModuleLevel(this.config.prefix);if(e)return e}return this.config.level}shouldLog(e){const t=this.getEffectiveLevel();return Sn[e]<=Sn[t]}formatMessage(e){if(this.config.format==="json"){const i={timestamp:new Date(e.timestamp).toISOString(),level:e.level,message:e.message};return e.prefix&&(i.module=e.prefix),e.context&&(i.context=e.context),e.error&&(i.error={name:e.error.name,message:e.error.message,stack:e.error.stack}),JSON.stringify(i)}const t=new Date(e.timestamp).toISOString().substring(11,23),s=e.prefix?`[${e.prefix}]`:"",o=this.getLevelIcon(e.level),n=e.context?` ${JSON.stringify(e.context)}`:"";return`${t} ${o} ${s} ${e.message}${n}`.trim()}getLevelIcon(e){switch(e){case"error":return"✖";case"warn":return"⚠";case"info":return"ℹ";case"debug":return"⚙";default:return" "}}log(e,t,s,o){if(!this.shouldLog(e))return;const n={level:e,message:t,timestamp:Date.now(),prefix:this.config.prefix,context:s,error:o};if(this.config.onLog){this.config.onLog(n);return}const i=this.formatMessage(n);if(typeof console<"u")switch(e){case"error":o?console.error(i,o):console.error(i);break;case"warn":console.warn(i);break;case"debug":console.debug?console.debug(i):console.log(i);break;default:console.log(i)}}error(e,t,s){const o=t instanceof Error?t:void 0,n=t instanceof Error?s:t;this.log("error",e,n,o)}trackError(e,t,s){if(this.error(e,t,s?.context),this.config.onTrackError){const o={level:"error",message:e,timestamp:Date.now(),prefix:this.config.prefix,context:s?.context,error:t,errorType:s?.errorType,errorGroup:s?.errorGroup};this.config.onTrackError(o)}}warn(e,t){this.log("warn",e,t)}info(e,t){this.log("info",e,t)}debug(e,t){this.log("debug",e,t)}child(e){const t={...this.config,...e,prefix:e.prefix?this.config.prefix?`${this.config.prefix}:${e.prefix}`:e.prefix:this.config.prefix};return new S(t)}configure(e){Object.assign(this.config,e)}}const Vr=new S;function Gr(r=10){let e="";const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";for(let s=0;s<r;s++)e+=t.charAt(Math.floor(Math.random()*t.length));return e}let Km=class{key;parentCd;dcuplInitOptions;analyticsController;off;updateListener=new Set;counter=0;constructor(){}_init(e){this.key=e.cdRefKey,this.analyticsController=e.analyticsController,this.parentCd=e.parentCd,this.dcuplInitOptions=e.dcuplInitOptions,this.parentCd&&(this.off=this.parentCd.on(t=>{t.action==="update"&&t.originCdRefKey===this.parentCd?.key&&(t.connectMessage=!1,this.trigger(t))}))}getCounter(){return this.parentCd?this.parentCd.getCounter():this.counter}increaseCounter(){this.parentCd?this.parentCd.increaseCounter():this.counter++}destroy(){this.off&&this.off()}trigger(e){e.originCdRefKey||(e.originCdRefKey=this.key),e.key||(this.increaseCounter(),e.key=this.getCounter()),e.end||(e.end=F.now(),e.duration=e.start-e.end),this.updateListener.forEach(t=>{t(e)})}on(e){return this.updateListener.add(e),()=>{this.updateListener.delete(e)}}};const Mn=(r,e)=>e?typeof structuredClone<"u"?structuredClone(r):Om(r):r,Rn=(r,e,t,s,o,n)=>{try{const i=!!e.dcuplInitOptions.performance?.clone?.enabled&&!!t.cloneResult,a=Mn(n,i);if(t.scope==="list"&&(t.listKey=r.cdRef?.key||r.key,t.modelKey=r.model?.key||r.modelKey),t.type==="list_created"&&t.args[0].listKey.startsWith("__global_list__")||t.listKey?.startsWith("__global_list__"))return a;const u=F.now(),c=u-s,l=Math.round(c*1e3)/1e3;t.duration=l,t.start=s,t.end=u;const d={duration:t.duration};return t.modelKey&&(d.model=t.modelKey),t.connectMessageResult&&(t.result=a),t.args&&(d.args=t.args),e?.trigger(t),e.analyticsController.mark({name:`${t.type}:end`,context:o}),e.analyticsController.measure({name:t.type,start:`${t.type}:start`,end:`${t.type}:end`,context:o,detail:d}),a}catch{return n}},Tn=r=>(e,t,s)=>{const o=s.value;return s.value=function(...n){const i=F.now(),a=this.cdRef,u=Mn(r,!0);u.key||(a.increaseCounter(),u.key=a.getCounter());const c=Gr();a.analyticsController.mark({name:`${u.type}:start`,context:c});const l=this.model?.key;!u.originCdRefKey&&a.key&&(u.originCdRefKey=a.key),l&&(u.modelKey=l);const d=o.apply(this,n);return u.method=t,u.args=n,d&&typeof d=="object"&&"then"in d?d.then(f=>Rn(this,a,u,i,c,f)):Rn(this,a,u,i,c,d)},s},qt=(r,e)=>r?(e||(e={}),r.replace(/\$\{(.*?)\}/g,(t,s)=>ig(e,s.trim(),""))):"";let Fm=class{log=Vr.child({prefix:"DcuplCsvParser"});parse(r,e={}){const{quoteChar:t=e.quoteChar||'"',escapeChar:s=e.escapeChar||'"',comments:o=e.comments||void 0,dynamicTyping:n=!1,header:i=!0,skipEmptyLines:a=!0,transformHeader:u,transform:c}=e,l=[],d=i?[]:null;let f=r.length,h=[],p="",y=!1,v=!0,g=0;if(a){for(;g<f&&(r[g]===`
9
+ `||r[g]==="\r"||r[g]===""||r[g]==="'"||r[g]==='"');)g++;r=r.slice(g),f=r.length,g=0}const k=e.delimiter||this.detectDelimiter(r);for(;g<f;g++){const m=r[g],M=r[g+1];if(o&&m===o&&!y&&p.length===0){for(;g<f&&r[g]!==`
10
+ `;)g++;continue}if(m===`
11
+ `||m==="\r"&&M===`
12
+ `)if(y)p+=m;else{(p.length>0||!a)&&h.push(p),v&&d?h.forEach(N=>d.push(u?u(N):N)):d?l.push(this.buildObjectRow(d,h,n,c)):l.push([...h]),h=[],p="",v=!1,g+=m==="\r"&&M===`
13
+ `?1:0;continue}else if(m===k&&!y)h.push(p),p="";else if(m===t)y?M===s?(p+=t,g++):y=!1:p.length===0?y=!0:p+=m;else if((y||p.length===0)&&(m==="{"||m==="[")){const N=this.extractJson(r,g,k);p+=N.value,g+=N.length-1}else p+=m}return(p.length>0||!a)&&h.push(p),h.length&&(v&&d?h.forEach(m=>d.push(u?u(m):m)):d?l.push(this.buildObjectRow(d,h,n,c)):l.push([...h])),l}buildObjectRow(r,e,t,s){const o={};for(let n=0;n<r.length;n++){const i=r[n];let a=e[n];t&&(a=this.dynamicType(a)),o[i]=s?s(a,i):a}return o}detectDelimiter(r){const e=r.slice(0,r.indexOf(`
14
+ `)),t=[",",";"," ","|"],s=t.map(o=>{const n=new RegExp(`\\${o}`,"g");return(e.match(n)||[]).length});return t[s.indexOf(Math.max(...s))]||","}dynamicType(r){if(r==="true")return!0;if(r==="false")return!1;if(!isNaN(Number(r)))return Number(r);try{return JSON.parse(r)}catch{return r}}extractJson(r,e,t){const s=[];let o=e,n=!1,i="";for(;o<r.length;){const a=r[o];if(!n&&a===t)break;if(!n&&(a===`
15
+ `||a==="\r")){this.log.error("JSON block spans multiple lines",void 0,{startIndex:e,endIndex:o});break}if(a==='"'&&i!=="\\"&&(n=!n),n||(a==="{"||a==="["?s.push(a):(a==="}"&&s[s.length-1]==="{"||a==="]"&&s[s.length-1]==="[")&&s.pop()),o++,i=a,s.length===0&&!n)break}return{value:r.slice(e,o),length:o-e}}};function In(r,e=","){return r&&typeof r=="string"?r.split(e).map(t=>t.trim()):[]}class qm{loader;log=Vr.child({prefix:"CsvParser"});constructor(e){this.loader=e}getParserConfig(e,t,s,o){const n=this.loader.config.get()?.options,i=this.loader.options,a=this.log,u={};typeof t?.csvParserOptions?.quoteChar<"u"?u.quoteChar=t?.csvParserOptions?.quoteChar:typeof n?.csvParserOptions?.quoteChar<"u"?u.quoteChar=n?.csvParserOptions?.quoteChar:u.quoteChar=i.csvParserOptions?.quoteChar,typeof t?.csvParserOptions?.delimiter<"u"?u.delimiter=t?.csvParserOptions?.delimiter:typeof n?.csvParserOptions?.delimiter<"u"?u.delimiter=n?.csvParserOptions?.delimiter:u.delimiter=i.csvParserOptions?.delimiter,typeof t?.csvParserOptions?.escapeChar<"u"?u.escapeChar=t?.csvParserOptions?.escapeChar:typeof n?.csvParserOptions?.escapeChar<"u"?u.escapeChar=n?.csvParserOptions?.escapeChar:u.escapeChar=i.csvParserOptions?.escapeChar,typeof t?.csvParserOptions?.commentChar<"u"?u.commentChar=t?.csvParserOptions?.commentChar:typeof n?.csvParserOptions?.commentChar<"u"?u.commentChar=n?.csvParserOptions?.commentChar:u.commentChar=i.csvParserOptions?.commentChar;const c=new Map,l=new Map;if(e.references)for(const p of e.references)c.set(p.key,p),p.origin&&c.set(p.origin,p);if(e.properties)for(const p of e.properties)l.set(p.key,p),p.origin&&l.set(p.origin,p);const d=t?.keyProperty??e.keyProperty??"key",f=Array.isArray(d)?d:[d],h=new Set(f);return{delimiter:u?.delimiter,quoteChar:u?.quoteChar,escapeChar:u?.escapeChar,comments:u.commentChar,dynamicTyping:!1,header:!0,skipEmptyLines:!0,transformHeader:p=>{const y=p?.trim().replace(/"/g,"");return s&&y&&s.push(y),y},transform:function(p,y){if(typeof y>"u"||h.has(y))return p;if(p==="null")return null;if(p===""||typeof p>"u")return;const v=m=>{if(!o)return;const M=o[y];M?M.count+=1:o[y]={rawValue:p,expected:m,count:1}},g=c.get(y);if(g)if(p[0]==="{"||p[0]==="[")try{return JSON.parse(p)}catch(m){a.error("Failed to parse JSON in CSV reference field",m,{header:y,value:p});return}else return g.type==="singleValued"?p:p?.length>0&&g.type==="multiValued"?In(p,g?.separator):p;const k=l.get(y);if(!(!e.autoGenerateProperties&&!k))switch(k?.type){case"string":return p;case"int":{const m=parseInt(p,10);if(isNaN(m)){v("int");return}return m}case"float":{const m=parseFloat(p);if(isNaN(m)){v("float");return}return m}case"boolean":if(p==="true")return!0;if(p==="false")return!1;v("boolean");return;case"json":try{return p=p.replace(/[\x00-\x1F\x7F-\x9F]/g,""),JSON.parse(p)}catch(m){a.error("Failed to parse JSON in CSV property field",m,{header:y,value:p}),v("json");return}case"Array<string>":case"Array<int>":case"Array<float>":case"Array<date>":if(p&&typeof p=="string"&&p[0]==="[")try{return JSON.parse(p)}catch{v(k.type);return}if(p&&typeof p=="string")return In(p,k?.separator);v(k.type);return;default:return p}}}}getJsonFromCSVString(e,t,s){return this.getJsonFromCSVStringWithMetadata(e,t,s).data}getJsonFromCSVStringWithMetadata(e,t,s){const o=[],n={},i=this.getParserConfig(t,s.options,o,n);return{data:new Fm().parse(e,i),sourceColumns:o,coercionFailureSamples:n}}}var On=typeof global=="object"&&global&&global.Object===Object&&global,Qm=typeof self=="object"&&self&&self.Object===Object&&self,X=On||Qm||Function("return this")(),Fe=X.Symbol,Kn=Object.prototype,Bm=Kn.hasOwnProperty,Vm=Kn.toString,lt=Fe?Fe.toStringTag:void 0;function Gm(r){var e=Bm.call(r,lt),t=r[lt];try{r[lt]=void 0;var s=!0}catch{}var o=Vm.call(r);return s&&(e?r[lt]=t:delete r[lt]),o}var Um=Object.prototype,Nm=Um.toString;function zm(r){return Nm.call(r)}var Lm="[object Null]",Wm="[object Undefined]",Fn=Fe?Fe.toStringTag:void 0;function dt(r){return r==null?r===void 0?Wm:Lm:Fn&&Fn in Object(r)?Gm(r):zm(r)}function qe(r){return r!=null&&typeof r=="object"}function Hm(r,e){for(var t=-1,s=r==null?0:r.length,o=Array(s);++t<s;)o[t]=e(r[t],t,r);return o}var Ur=Array.isArray;function Qt(r){var e=typeof r;return r!=null&&(e=="object"||e=="function")}function qn(r){return r}var Jm="[object AsyncFunction]",Zm="[object Function]",Xm="[object GeneratorFunction]",Ym="[object Proxy]";function Qn(r){if(!Qt(r))return!1;var e=dt(r);return e==Zm||e==Xm||e==Jm||e==Ym}var Nr=X["__core-js_shared__"],Bn=(function(){var r=/[^.]+$/.exec(Nr&&Nr.keys&&Nr.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""})();function ev(r){return!!Bn&&Bn in r}var tv=Function.prototype,rv=tv.toString;function we(r){if(r!=null){try{return rv.call(r)}catch{}try{return r+""}catch{}}return""}var sv=/[\\^$.*+?()[\]{}|]/g,ov=/^\[object .+?Constructor\]$/,nv=Function.prototype,iv=Object.prototype,av=nv.toString,uv=iv.hasOwnProperty,cv=RegExp("^"+av.call(uv).replace(sv,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function lv(r){if(!Qt(r)||ev(r))return!1;var e=Qn(r)?cv:ov;return e.test(we(r))}function dv(r,e){return r?.[e]}function Ae(r,e){var t=dv(r,e);return lv(t)?t:void 0}var zr=Ae(X,"WeakMap"),Vn=Object.create,fv=(function(){function r(){}return function(e){if(!Qt(e))return{};if(Vn)return Vn(e);r.prototype=e;var t=new r;return r.prototype=void 0,t}})();function pv(r,e,t){switch(t.length){case 0:return r.call(e);case 1:return r.call(e,t[0]);case 2:return r.call(e,t[0],t[1]);case 3:return r.call(e,t[0],t[1],t[2])}return r.apply(e,t)}var hv=800,yv=16,gv=Date.now;function mv(r){var e=0,t=0;return function(){var s=gv(),o=yv-(s-t);if(t=s,o>0){if(++e>=hv)return arguments[0]}else e=0;return r.apply(void 0,arguments)}}function vv(r){return function(){return r}}var Bt=(function(){try{var r=Ae(Object,"defineProperty");return r({},"",{}),r}catch{}})(),bv=Bt?function(r,e){return Bt(r,"toString",{configurable:!0,enumerable:!1,value:vv(e),writable:!0})}:qn,kv=mv(bv);function wv(r,e){for(var t=-1,s=r==null?0:r.length;++t<s&&e(r[t],t,r)!==!1;);return r}function Av(r,e,t,s){for(var o=r.length,n=t+-1;++n<o;)if(e(r[n],n,r))return n;return-1}function Cv(r){return r!==r}function $v(r,e,t){for(var s=t-1,o=r.length;++s<o;)if(r[s]===e)return s;return-1}function Dv(r,e,t){return e===e?$v(r,e,t):Av(r,Cv,t)}function _v(r,e){var t=r==null?0:r.length;return!!t&&Dv(r,e,0)>-1}var Pv=9007199254740991,xv=/^(?:0|[1-9]\d*)$/;function Ev(r,e){var t=typeof r;return e=e??Pv,!!e&&(t=="number"||t!="symbol"&&xv.test(r))&&r>-1&&r%1==0&&r<e}function jv(r,e,t){e=="__proto__"&&Bt?Bt(r,e,{configurable:!0,enumerable:!0,value:t,writable:!0}):r[e]=t}function Gn(r,e){return r===e||r!==r&&e!==e}var Sv=Object.prototype,Mv=Sv.hasOwnProperty;function Rv(r,e,t){var s=r[e];(!(Mv.call(r,e)&&Gn(s,t))||t===void 0&&!(e in r))&&jv(r,e,t)}var Un=Math.max;function Tv(r,e,t){return e=Un(e===void 0?r.length-1:e,0),function(){for(var s=arguments,o=-1,n=Un(s.length-e,0),i=Array(n);++o<n;)i[o]=s[e+o];o=-1;for(var a=Array(e+1);++o<e;)a[o]=s[o];return a[e]=t(i),pv(r,this,a)}}function Iv(r,e){return kv(Tv(r,e,qn),r+"")}var Ov=9007199254740991;function Nn(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=Ov}function zn(r){return r!=null&&Nn(r.length)&&!Qn(r)}var Kv=Object.prototype;function Ln(r){var e=r&&r.constructor,t=typeof e=="function"&&e.prototype||Kv;return r===t}function Fv(r,e){for(var t=-1,s=Array(r);++t<r;)s[t]=e(t);return s}var qv="[object Arguments]";function Wn(r){return qe(r)&&dt(r)==qv}var Hn=Object.prototype,Qv=Hn.hasOwnProperty,Bv=Hn.propertyIsEnumerable,Vv=Wn((function(){return arguments})())?Wn:function(r){return qe(r)&&Qv.call(r,"callee")&&!Bv.call(r,"callee")};function Gv(){return!1}var Jn=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Zn=Jn&&typeof module=="object"&&module&&!module.nodeType&&module,Uv=Zn&&Zn.exports===Jn,Xn=Uv?X.Buffer:void 0,Nv=Xn?Xn.isBuffer:void 0,Yn=Nv||Gv,zv="[object Arguments]",Lv="[object Array]",Wv="[object Boolean]",Hv="[object Date]",Jv="[object Error]",Zv="[object Function]",Xv="[object Map]",Yv="[object Number]",eb="[object Object]",tb="[object RegExp]",rb="[object Set]",sb="[object String]",ob="[object WeakMap]",nb="[object ArrayBuffer]",ib="[object DataView]",ab="[object Float32Array]",ub="[object Float64Array]",cb="[object Int8Array]",lb="[object Int16Array]",db="[object Int32Array]",fb="[object Uint8Array]",pb="[object Uint8ClampedArray]",hb="[object Uint16Array]",yb="[object Uint32Array]",_={};_[ab]=_[ub]=_[cb]=_[lb]=_[db]=_[fb]=_[pb]=_[hb]=_[yb]=!0,_[zv]=_[Lv]=_[nb]=_[Wv]=_[ib]=_[Hv]=_[Jv]=_[Zv]=_[Xv]=_[Yv]=_[eb]=_[tb]=_[rb]=_[sb]=_[ob]=!1;function gb(r){return qe(r)&&Nn(r.length)&&!!_[dt(r)]}function Lr(r){return function(e){return r(e)}}var ei=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ft=ei&&typeof module=="object"&&module&&!module.nodeType&&module,mb=ft&&ft.exports===ei,Wr=mb&&On.process,Qe=(function(){try{var r=ft&&ft.require&&ft.require("util").types;return r||Wr&&Wr.binding&&Wr.binding("util")}catch{}})(),ti=Qe&&Qe.isTypedArray,vb=ti?Lr(ti):gb,bb=Object.prototype,kb=bb.hasOwnProperty;function wb(r,e){var t=Ur(r),s=!t&&Vv(r),o=!t&&!s&&Yn(r),n=!t&&!s&&!o&&vb(r),i=t||s||o||n,a=i?Fv(r.length,String):[],u=a.length;for(var c in r)kb.call(r,c)&&!(i&&(c=="length"||o&&(c=="offset"||c=="parent")||n&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Ev(c,u)))&&a.push(c);return a}function ri(r,e){return function(t){return r(e(t))}}var Ab=ri(Object.keys,Object),Cb=Object.prototype,$b=Cb.hasOwnProperty;function Db(r){if(!Ln(r))return Ab(r);var e=[];for(var t in Object(r))$b.call(r,t)&&t!="constructor"&&e.push(t);return e}function _b(r){return zn(r)?wb(r):Db(r)}var pt=Ae(Object,"create");function Pb(){this.__data__=pt?pt(null):{},this.size=0}function xb(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}var Eb="__lodash_hash_undefined__",jb=Object.prototype,Sb=jb.hasOwnProperty;function Mb(r){var e=this.__data__;if(pt){var t=e[r];return t===Eb?void 0:t}return Sb.call(e,r)?e[r]:void 0}var Rb=Object.prototype,Tb=Rb.hasOwnProperty;function Ib(r){var e=this.__data__;return pt?e[r]!==void 0:Tb.call(e,r)}var Ob="__lodash_hash_undefined__";function Kb(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=pt&&e===void 0?Ob:e,this}function Ce(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}Ce.prototype.clear=Pb,Ce.prototype.delete=xb,Ce.prototype.get=Mb,Ce.prototype.has=Ib,Ce.prototype.set=Kb;function Fb(){this.__data__=[],this.size=0}function Vt(r,e){for(var t=r.length;t--;)if(Gn(r[t][0],e))return t;return-1}var qb=Array.prototype,Qb=qb.splice;function Bb(r){var e=this.__data__,t=Vt(e,r);if(t<0)return!1;var s=e.length-1;return t==s?e.pop():Qb.call(e,t,1),--this.size,!0}function Vb(r){var e=this.__data__,t=Vt(e,r);return t<0?void 0:e[t][1]}function Gb(r){return Vt(this.__data__,r)>-1}function Ub(r,e){var t=this.__data__,s=Vt(t,r);return s<0?(++this.size,t.push([r,e])):t[s][1]=e,this}function ie(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}ie.prototype.clear=Fb,ie.prototype.delete=Bb,ie.prototype.get=Vb,ie.prototype.has=Gb,ie.prototype.set=Ub;var ht=Ae(X,"Map");function Nb(){this.size=0,this.__data__={hash:new Ce,map:new(ht||ie),string:new Ce}}function zb(r){var e=typeof r;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?r!=="__proto__":r===null}function Gt(r,e){var t=r.__data__;return zb(e)?t[typeof e=="string"?"string":"hash"]:t.map}function Lb(r){var e=Gt(this,r).delete(r);return this.size-=e?1:0,e}function Wb(r){return Gt(this,r).get(r)}function Hb(r){return Gt(this,r).has(r)}function Jb(r,e){var t=Gt(this,r),s=t.size;return t.set(r,e),this.size+=t.size==s?0:1,this}function $e(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}$e.prototype.clear=Nb,$e.prototype.delete=Lb,$e.prototype.get=Wb,$e.prototype.has=Hb,$e.prototype.set=Jb;function Zb(r,e){for(var t=-1,s=e.length,o=r.length;++t<s;)r[o+t]=e[t];return r}var Xb=ri(Object.getPrototypeOf,Object);function Yb(){this.__data__=new ie,this.size=0}function ek(r){var e=this.__data__,t=e.delete(r);return this.size=e.size,t}function tk(r){return this.__data__.get(r)}function rk(r){return this.__data__.has(r)}var sk=200;function ok(r,e){var t=this.__data__;if(t instanceof ie){var s=t.__data__;if(!ht||s.length<sk-1)return s.push([r,e]),this.size=++t.size,this;t=this.__data__=new $e(s)}return t.set(r,e),this.size=t.size,this}function Be(r){var e=this.__data__=new ie(r);this.size=e.size}Be.prototype.clear=Yb,Be.prototype.delete=ek,Be.prototype.get=tk,Be.prototype.has=rk,Be.prototype.set=ok;var si=typeof exports=="object"&&exports&&!exports.nodeType&&exports,oi=si&&typeof module=="object"&&module&&!module.nodeType&&module,nk=oi&&oi.exports===si,ni=nk?X.Buffer:void 0;ni&&ni.allocUnsafe;function ik(r,e){return r.slice()}function ak(r,e){for(var t=-1,s=r==null?0:r.length,o=0,n=[];++t<s;){var i=r[t];e(i,t,r)&&(n[o++]=i)}return n}function uk(){return[]}var ck=Object.prototype,lk=ck.propertyIsEnumerable,ii=Object.getOwnPropertySymbols,dk=ii?function(r){return r==null?[]:(r=Object(r),ak(ii(r),function(e){return lk.call(r,e)}))}:uk;function fk(r,e,t){var s=e(r);return Ur(r)?s:Zb(s,t(r))}function pk(r){return fk(r,_b,dk)}var Hr=Ae(X,"DataView"),Jr=Ae(X,"Promise"),Zr=Ae(X,"Set"),ai="[object Map]",hk="[object Object]",ui="[object Promise]",ci="[object Set]",li="[object WeakMap]",di="[object DataView]",yk=we(Hr),gk=we(ht),mk=we(Jr),vk=we(Zr),bk=we(zr),ae=dt;(Hr&&ae(new Hr(new ArrayBuffer(1)))!=di||ht&&ae(new ht)!=ai||Jr&&ae(Jr.resolve())!=ui||Zr&&ae(new Zr)!=ci||zr&&ae(new zr)!=li)&&(ae=function(r){var e=dt(r),t=e==hk?r.constructor:void 0,s=t?we(t):"";if(s)switch(s){case yk:return di;case gk:return ai;case mk:return ui;case vk:return ci;case bk:return li}return e});var kk=Object.prototype,wk=kk.hasOwnProperty;function Ak(r){var e=r.length,t=new r.constructor(e);return e&&typeof r[0]=="string"&&wk.call(r,"index")&&(t.index=r.index,t.input=r.input),t}var fi=X.Uint8Array;function Xr(r){var e=new r.constructor(r.byteLength);return new fi(e).set(new fi(r)),e}function Ck(r,e){var t=Xr(r.buffer);return new r.constructor(t,r.byteOffset,r.byteLength)}var $k=/\w*$/;function Dk(r){var e=new r.constructor(r.source,$k.exec(r));return e.lastIndex=r.lastIndex,e}var pi=Fe?Fe.prototype:void 0,hi=pi?pi.valueOf:void 0;function _k(r){return hi?Object(hi.call(r)):{}}function Pk(r,e){var t=Xr(r.buffer);return new r.constructor(t,r.byteOffset,r.length)}var xk="[object Boolean]",Ek="[object Date]",jk="[object Map]",Sk="[object Number]",Mk="[object RegExp]",Rk="[object Set]",Tk="[object String]",Ik="[object Symbol]",Ok="[object ArrayBuffer]",Kk="[object DataView]",Fk="[object Float32Array]",qk="[object Float64Array]",Qk="[object Int8Array]",Bk="[object Int16Array]",Vk="[object Int32Array]",Gk="[object Uint8Array]",Uk="[object Uint8ClampedArray]",Nk="[object Uint16Array]",zk="[object Uint32Array]";function Lk(r,e,t){var s=r.constructor;switch(e){case Ok:return Xr(r);case xk:case Ek:return new s(+r);case Kk:return Ck(r);case Fk:case qk:case Qk:case Bk:case Vk:case Gk:case Uk:case Nk:case zk:return Pk(r);case jk:return new s;case Sk:case Tk:return new s(r);case Mk:return Dk(r);case Rk:return new s;case Ik:return _k(r)}}function Wk(r){return typeof r.constructor=="function"&&!Ln(r)?fv(Xb(r)):{}}var Hk="[object Map]";function Jk(r){return qe(r)&&ae(r)==Hk}var yi=Qe&&Qe.isMap,Zk=yi?Lr(yi):Jk,Xk="[object Set]";function Yk(r){return qe(r)&&ae(r)==Xk}var gi=Qe&&Qe.isSet,ew=gi?Lr(gi):Yk,mi="[object Arguments]",tw="[object Array]",rw="[object Boolean]",sw="[object Date]",ow="[object Error]",vi="[object Function]",nw="[object GeneratorFunction]",iw="[object Map]",aw="[object Number]",bi="[object Object]",uw="[object RegExp]",cw="[object Set]",lw="[object String]",dw="[object Symbol]",fw="[object WeakMap]",pw="[object ArrayBuffer]",hw="[object DataView]",yw="[object Float32Array]",gw="[object Float64Array]",mw="[object Int8Array]",vw="[object Int16Array]",bw="[object Int32Array]",kw="[object Uint8Array]",ww="[object Uint8ClampedArray]",Aw="[object Uint16Array]",Cw="[object Uint32Array]",C={};C[mi]=C[tw]=C[pw]=C[hw]=C[rw]=C[sw]=C[yw]=C[gw]=C[mw]=C[vw]=C[bw]=C[iw]=C[aw]=C[bi]=C[uw]=C[cw]=C[lw]=C[dw]=C[kw]=C[ww]=C[Aw]=C[Cw]=!0,C[ow]=C[vi]=C[fw]=!1;function Ut(r,e,t,s,o,n){var i;if(i!==void 0)return i;if(!Qt(r))return r;var a=Ur(r);if(a)i=Ak(r);else{var u=ae(r),c=u==vi||u==nw;if(Yn(r))return ik(r);if(u==bi||u==mi||c&&!o)i=c?{}:Wk(r);else{if(!C[u])return o?r:{};i=Lk(r,u)}}n||(n=new Be);var l=n.get(r);if(l)return l;n.set(r,i),ew(r)?r.forEach(function(h){i.add(Ut(h,e,t,h,r,n))}):Zk(r)&&r.forEach(function(h,p){i.set(p,Ut(h,e,t,p,r,n))});var d=pk,f=a?void 0:d(r);return wv(f||r,function(h,p){f&&(p=h,h=r[p]),Rv(i,p,Ut(h,e,t,p,r,n))}),i}var $w=1,Dw=4;function yt(r){return Ut(r,$w|Dw)}var _w="__lodash_hash_undefined__";function Pw(r){return this.__data__.set(r,_w),this}function xw(r){return this.__data__.has(r)}function Nt(r){var e=-1,t=r==null?0:r.length;for(this.__data__=new $e;++e<t;)this.add(r[e])}Nt.prototype.add=Nt.prototype.push=Pw,Nt.prototype.has=xw;function ki(r,e){return r.has(e)}function Ew(r){return qe(r)&&zn(r)}var jw=Math.min;function Sw(r,e,t){for(var s=_v,o=r[0].length,n=r.length,i=n,a=Array(n),u=1/0,c=[];i--;){var l=r[i];u=jw(l.length,u),a[i]=o>=120&&l.length>=120?new Nt(i&&l):void 0}l=r[0];var d=-1,f=a[0];e:for(;++d<o&&c.length<u;){var h=l[d],p=h;if(h=h!==0?h:0,!(f?ki(f,p):s(c,p))){for(i=n;--i;){var y=a[i];if(!(y?ki(y,p):s(r[i],p)))continue e}f&&f.push(p),c.push(h)}}return c}function Mw(r){return Ew(r)?r:[]}var wi=Iv(function(r){var e=Hm(r,Mw);return e.length&&e[0]===r[0]?Sw(e):[]});class Ai{context="";total=0;totalItems=[];processedItems=new Set;downloadedItems=new Set;failedItems=new Set;remainingItems=new Set;processed=0;remaining=0;progress=0;currentItem;constructor(){}init(e){return this.total=e.length,this.totalItems=[...e],this.remaining=e.length,this.remainingItems=new Set(e),this.getProgress()}update(e,t,s,o){const n=yt(e);return n.success=t,o&&(n.status=o),t?this.downloadedItems.add(n):this.failedItems.add(n),this.currentItem=n,this.context=s,this.processed++,this.remaining--,this.progress=Math.round(this.processed*100/this.total),this.currentItem=n,this.processedItems.add(n),this.remainingItems.delete(e),this.getProgress()}getProgress(){return{total:this.total,processed:this.processed,remaining:this.remaining,downloadedItems:Array.from(this.downloadedItems.values()),failedItems:Array.from(this.failedItems.values()),progress:this.progress,context:this.context,currentItem:this.currentItem,totalItems:this.totalItems,processedItems:Array.from(this.processedItems.values()),remainingItems:Array.from(this.remainingItems.values())}}}var Rw=Object.defineProperty,Tw=Object.getOwnPropertyDescriptor,Ci=(r,e,t,s)=>{for(var o=Tw(e,t),n=r.length-1,i;n>=0;n--)(i=r[n])&&(o=i(e,t,o)||o);return o&&Rw(e,t,o),o};const Iw={missingModelHandling:{autoGenerateProperties:!0},defaultDataContainerUpdateType:"set",csvParserOptions:{delimiter:"",quoteChar:'"',escapeChar:'"',commentChar:void 0}};let Yr=class{key;core;cdRef=new Km;log=Vr.child({prefix:"AppLoader"});registeredTransformers=[];options=Iw;csvParser=new qm(this);currentConfig;globalVariables=new Map;defaultVariables=new Map;progressListeners=new Set;currentProcessOptions;currentContext="";progressHandler=new Ai;constructor(){this.initDefaultVariables()}destroy(){this.core=null,this.cdRef=null,this.csvParser=null,this.progressListeners=null,this.progressHandler=null}initDefaultVariables(){this.defaultVariables.set("projectId",{key:"projectId",value:void 0,description:"Your dcupl console project id"}),this.defaultVariables.set("apiKey",{key:"apiKey",value:void 0,description:"Your dcupl console project API key"}),this.defaultVariables.set("version",{key:"version",value:"draft",description:"The version of uploaded files to the dcupl CDN - draft/published/..."}),this.defaultVariables.set("cdnBaseUrl",{key:"cdnBaseUrl",value:"https://cdn.dcupl.com/files/projects",description:"The url to your dcupl folder - might be the dcupl CDN or any other "}),this.defaultVariables.set("baseUrl",{key:"baseUrl",value:"${cdnBaseUrl}/${projectId}/${version}",description:"The base url to your hosted models and data files"}),this.defaultVariables.set("modelUrl",{key:"modelUrl",value:"${baseUrl}/models",description:"The url to the your model files"}),this.defaultVariables.set("dataUrl",{key:"dataUrl",value:"${baseUrl}/data",description:"The url to the your data files"}),this.defaultVariables.set("transformerUrl",{key:"transformerUrl",value:"${baseUrl}/transformers",description:"The url to the your data files"}),this.defaultVariables.set("loaderFileName",{key:"loaderFileName",value:"dcupl.lc.json",description:"The file name of the loader json"}),this.defaultVariables.set("cdnVersion",{key:"cdnVersion",value:void 0,description:"The file-version of the CDN data"}),this.defaultVariables.set("consoleApiUrl",{key:"consoleApiUrl",value:"https://api.dcupl.com",description:"The dcupl console API Url"})}resources={get:r=>this.currentConfig?.resources.find(e=>e.key===r),getAll:()=>this.currentConfig?.resources||[],getWithTag:r=>this.currentConfig?.resources.filter(e=>e.tags?.includes(r))||[],set:r=>{this.currentConfig.resources=r},add:r=>{this.currentConfig.resources.push(r)},delete:r=>{const e=this.currentConfig.resources.findIndex(t=>t.key===r);e>-1&&this.currentConfig.resources.splice(e,1)}};variables={get:(r,e)=>{const t=this.currentConfig?.environments?.filter(s=>s.key===e);return this.evaluateVariables(t,this.currentProcessOptions).find(s=>s.key===r)},getAll:r=>{const e=this.currentConfig?.environments?.filter(t=>t.key===r);return this.evaluateVariables(e,this.currentProcessOptions)},getAllAsObject:r=>{const e=this.currentConfig?.environments?.filter(t=>t.key===r);return this.getEvaluatedVariablesAsRecord(e,this.currentProcessOptions)},default:{get:r=>this.defaultVariables.get(r),getAll:()=>Array.from(this.defaultVariables.values())},environment:{get:(r,e)=>{if(!r)return;const t=this.currentConfig?.environments?.find(s=>s.key===r);if(t)return t.variables?.find(s=>s.key===e)},getAll:r=>this.currentConfig?.environments?.find(e=>e.key===r)?.variables||[]},process:{get:r=>this.currentProcessOptions?.variables?.find(e=>e.key===r),getAll:()=>this.currentProcessOptions?.variables||[]},global:{get:r=>this.globalVariables.get(r),getAll:()=>Array.from(this.globalVariables.values()),set:(r,e)=>{this.globalVariables.set(r,{key:r,value:e})},delete:r=>{this.globalVariables.delete(r)}}};transformers={get:r=>this.registeredTransformers.filter(e=>wi(e.applyTo,r.appyTo).length>0),getAll:()=>this.registeredTransformers,set:r=>{this.transformers.remove(r.key),this.registeredTransformers.push(r)},remove:r=>{const e=this.registeredTransformers.findIndex(t=>t.key===r);e>-1&&this.registeredTransformers.splice(e,1)}};config={get:()=>yt(this.currentConfig),set:r=>{this.currentConfig=yt(r)},fetch:async r=>this.fetchConfig(r)};async fetchConfig(r){if(!this.core)throw this.log.error("dcupl not connected. Did you add your loader to dcupl? -> dcupl.addRunner(loader)"),new Error;let e;r?.baseUrl&&this.defaultVariables.set("baseUrl",{key:"baseUrl",value:String(r.baseUrl)}),r?.loaderFileName&&this.defaultVariables.set("loaderFileName",{key:"loaderFileName",value:String(r.loaderFileName)});const t=this.variables.get("baseUrl")?.value;if(t&&this.isDcuplCdn(t))await this.setCdnVersion(),e=await this.loadConfigFromApi();else{const s=this.variables.get("loaderFileName")?.value,o=`${t}/${s}`;e=await this.loadConfigFromUrl(o,r?.headers)}if(this.isValidConfig(e))return r?.skipApply||this.config.set(e),e;throw new Error("Invalid Loader Configuration")}isValidConfig(r){return!!r}async loadConfigFromUrl(r,e){try{const t={};e&&(t.headers=e.reduce((o,n)=>(o[n.key]=n.value,o),{}));const s=await fetch(r,t);if(!s.ok)throw new Error(`Failed to fetch loader configuration from ${r}`);return s.json()}catch(t){this.log.error("Could not fetch loader configuration",t,{url:r});return}}async loadConfigFromApi(){const r=this.variables.get("baseUrl")?.value,e=this.variables.get("loaderFileName")?.value,t=this.variables.get("cdnVersion")?.value,s=this.variables.get("apiKey")?.value;try{let o=`${r}/${e}`;this.isDcuplCdn(o)&&(t&&(o=this.appendSearchParamToUrl(o,"v",String(t))),s&&(o=this.appendSearchParamToUrl(o,"api-key",s)));const n=await fetch(o);if(!n.ok)throw new Error(`Failed to fetch loader configuration from ${o}`);return n.json()}catch(o){this.log.error("Could not fetch loader configuration. Are you sure your projectId + apiKey are correct?",o,{baseUrl:r,loaderFileName:e});return}}appendSearchParamToUrl(r,e,t){const s=r.includes("?")?"&":"?";return`${r}${s}${e}=${t}`}async setCdnVersion(){let r;try{const e=this.variables.get("consoleApiUrl")?.value,t=this.variables.get("projectId")?.value,s=this.variables.get("version")?.value;r=`${e}/projects/${t}/files/versions/${s}/status`;const o=await(await fetch(r)).json();o&&o.changedAt&&this.defaultVariables.set("cdnVersion",{key:"cdnVersion",value:String(o.changedAt)})}catch(e){this.log.error("Could not fetch version status",e,{url:r})}}async process(r){if(!this.config)throw new Error("There is no config present. Make sure to call loader.setConfig(..) or loader.fetchConfig(...)");this.currentContext=Gr();const e=yt(r),t=yt(this.currentConfig);if(e?.applicationKey){const l=this.getAppPreset(t,e);if(!l)throw new Error(`The applicationKey ${e.applicationKey} does not exist`);e.resourceTags=e.resourceTags||l?.resourceTags,e.variables=e.variables||l?.variables}const s=this.getEnvironments(t,e),o=this.getEvaluatedVariablesAsRecord(s,e),n=this.getHeaderConfigs(s),i=this.getQueryParamConfigs(s),a=this.getResourcesForConfigOptions(t,o,e),u=this.getLoaderOptions(t,e),c=await this.fetchResources(a,o,u,n,i);return this.currentProcessOptions=e,c}getHeaderConfigs(r){if(!r)return[];const e=[];return r.forEach(t=>{t.headers&&e.push(...t.headers)}),e}getQueryParamConfigs(r){if(!r)return[];const e=[];return r.forEach(t=>{t.queryParams&&e.push(...t.queryParams)}),e}getLoaderOptions(r,e){return e?.options?Object.assign({},this.options,e.options):r?.options?Object.assign({},this.options,r.options):Object.assign({},this.options)}getResourcesForConfigOptions(r,e,t){const s=[];if(!r.resources)return[];if(!Array.isArray(t?.resourceTags)||!t?.resourceTags.length)s.push(...r.resources);else for(const o of r.resources)!Array.isArray(o.tags)||!o.tags.length||this.isValidResourceForTags(o.tags,t.resourceTags)&&s.push(o);return s.map(o=>{if(e){const n=qt(o.url,{...e});return o.url=n,o}else return o})}isValidResourceForTags(r,e){for(const t of e)if(Array.isArray(t)){if(t.every(s=>r.includes(s)))return!0}else if(r.includes(t))return!0;return!1}evaluateVariables(r,e){const t=new Map;this.defaultVariables&&this.defaultVariables.forEach(n=>{t.set(n.key,n)}),r?.forEach(n=>{n?.variables&&n.variables.forEach(i=>{t.set(i.key,i)})}),e?.variables&&e.variables.forEach(n=>{t.set(n.key,n)}),this.globalVariables&&this.globalVariables.forEach(n=>{t.set(n.key,n)});const s=Array.from(t.values()),o={};for(const n of s)o[n.key]=n.value||"";for(const n of s)n.value=qt(n.value,o);return s}getEvaluatedVariablesAsRecord(r,e){const t=this.evaluateVariables(r,e),s={};for(const o of t)s[o.key]=o.value||"";return s}getEnvironments(r,e){if(!(!r.environments||!r.environments[0])&&e&&e.environmentKeys&&e.environmentKeys.length>0)return r.environments.filter(t=>e.environmentKeys.indexOf(t.key)>-1)}getAppPreset(r,e){if(!(!r.applications||!r.applications[0])&&e?.applicationKey)return r.applications?.find(t=>t.key===e.applicationKey)}getHeaderForUrl(r,e,t){if(!t||!t.length||!r.tags?.length)return;const s=[];t?.forEach(n=>{if(!n.tags?.length){this.isValidCondition(n,e)&&s.push(n);return}n.tags.find(i=>r.tags?.includes(i))&&this.isValidCondition(n,e)&&s.push(n)});const o={};if(s.forEach(n=>{const i=qt(n.value,{...e});o[n.key]=i}),Object.keys(o).length!==0)return o}getQueryParamsForUrl(r,e,t){const s=[];if(t?.forEach(o=>{if(!o.tags?.length){this.isValidCondition(o,e)&&s.push(o);return}o.tags.find(n=>r.tags?.includes(n))&&this.isValidCondition(o,e)&&s.push(o)}),this.isDcuplCdn(r.url)){const o=e.cdnVersion;o&&s.push({key:"v",value:o}),e.apiKey&&s?.push({key:"api-key",value:e.apiKey})}return s.map(o=>(o.value=qt(o.value,{...e}),o))}isDcuplCdn(r){return r.includes("cdn.dcupl.com")}isValidCondition(r,e){return r.condition?.applyIfVariableHasValue?typeof e[r.condition?.applyIfVariableHasValue]<"u"&&e[r.condition?.applyIfVariableHasValue]!=="":!0}async handleScriptResources(r,e,t,s){return await Promise.all(r.map(async o=>{try{const n=o.scriptKey;if(this.core.scriptController.hasScript(n)){const u=this.progressHandler.update(o,!0,"script");return this.updateProgressListeners(u),null}const i=await this.fetchScript(o,e,t,s);this.core.scriptController.setScript(n,i);const a=this.progressHandler.update(o,!0,"script");this.updateProgressListeners(a);return}catch(n){this.log.error("Failed to load script resource",n,{url:o.url,scriptKey:o.scriptKey});const i={title:o.url,type:"loader",errorGroup:"ResourceError",errorType:"InvalidResource",meta:o,description:n?.message};this.setError(i);const a=this.progressHandler.update(o,!1,"script");this.updateProgressListeners(a);return}})),!0}async handleOperatorResources(r,e,t,s){return await Promise.all(r.map(async o=>{try{const n=o.operator;if(this.core.queryManager.registeredCustomOperator.has(n)){const u=this.progressHandler.update(o,!0,"operator");return this.updateProgressListeners(u),null}const i=await this.fetchJavascriptFile(o,e,t,s);this.core.query.registerCustomOperator(n,i);const a=this.progressHandler.update(o,!0,"operator");this.updateProgressListeners(a);return}catch(n){this.log.error("Failed to load operator resource",n,{url:o.url,operator:o.operator});const i={title:o.url,type:"loader",errorGroup:"ResourceError",errorType:"InvalidResource",meta:o,description:n?.message};this.setError(i);const a=this.progressHandler.update(o,!1,"operator");this.updateProgressListeners(a);return}})),!0}async handleTransformerResources(r,e,t,s){const o=[];return await Promise.all(r.map(async n=>{try{const i=this.registeredTransformers.find(l=>l.key===n.url);if(i){o.push(i);const l=this.progressHandler.update(n,!0,"transformer");this.updateProgressListeners(l);return}const a=await this.fetchJavascriptFile(n,e,t,s),u={key:n.url,applyTo:n.applyTo||[],type:n.transformerType||"parsedFileTransformer",transformer:a};this.registeredTransformers.push(u),o.push(u);const c=this.progressHandler.update(n,!0,"transformer");this.updateProgressListeners(c)}catch(i){this.log.error("Failed to load transformer resource",i,{url:n.url,transformerType:n.transformerType});const a={title:n.url,type:"loader",errorGroup:"ResourceError",errorType:"InvalidResource",meta:n,description:i?.message};this.setError(a);const u=this.progressHandler.update(n,!1,"transformer");this.updateProgressListeners(u)}})),o}getRequestOptions(r,e,t,s){const o=this.getHeaderForUrl(r,e,t),n=this.getQueryParamsForUrl(r,e,s);return{url:this.appendQueryParamsToUrl(r.url,n),headers:o}}async fetchScript(r,e,t,s){const{url:o,headers:n}=this.getRequestOptions(r,e,t,s),i=await fetch(o,{headers:n});if(!i.ok)throw new Error(`Failed to fetch data from ${o}`);return await i.text()}async fetchJavascriptFile(r,e,t,s){const{url:o,headers:n}=this.getRequestOptions(r,e,t,s),i=await fetch(o,{headers:n});if(!i.ok)throw new Error(`Failed to fetch data from ${o}`);const a=await i.text();return new Function(a)()}isValidModelDefinitionShape(r){if(typeof r!="object"||r===null||Array.isArray(r))return!1;const e=r;return!(typeof e.key!="string"||e.key.length===0||typeof e.properties<"u"&&!Array.isArray(e.properties))}emitInvalidModelDefinitionError(r,e,t){const s={title:r.url,type:"model",errorGroup:"ModelDefinitionError",errorType:"InvalidModelDefinition",model:t??"",meta:r,description:e};this.setError(s)}async handleModelResources(r,e,t,s){const o=r.map(async n=>{const i=new Date().getTime();let a;try{const{url:u,headers:c}=this.getRequestOptions(n,e,t,s),l=await fetch(u,{headers:c});if(a=l.status,!l.ok)throw new Error(`Failed to fetch data from ${u}`);const d=F.now(),f=await l.json(),h=F.now(),p=Array.isArray(f)?f:[f],y=[];for(const m of p)this.isValidModelDefinitionShape(m)?y.push(m):this.emitInvalidModelDefinitionError(n,"Resource body is not a valid ModelDefinition (missing or invalid `key`/`properties`)",typeof m?.key=="string"?m.key:void 0);if(y.length===0){const m=this.progressHandler.update(n,!1,"model",a);return this.updateProgressListeners(m),Promise.resolve(null)}const v=y.map(m=>m.key).join("__"),g=F.getEntriesByName(u.toString());if(Array.isArray(g)&&g[0]){const m=g[0],M={name:n.url,type:"resource",createdAt:new Date().getTime(),value:{model:v,type:"model",start:i,startTime:m.startTime,requestStart:m.requestStart,responseEnd:m.responseEnd,responseStart:m.responseStart,duration:m.duration,parseEnd:h,parseStart:d,decodedBodySize:m.decodedBodySize,encodedBodySize:m.encodedBodySize,end:h}};this.core.analyticsController.set({value:M,context:this.currentContext})}for(const m of y)this.addModelOrView(n,m);const k=this.progressHandler.update(n,!0,"model");return this.updateProgressListeners(k),Promise.resolve(f)}catch(u){this.log.error("Failed to load model resource",u,{url:n.url});const c={title:n.url,type:"loader",errorGroup:"ResourceError",errorType:"InvalidResource",meta:n,description:u?.message};this.setError(c);const l=this.progressHandler.update(n,!1,"model",a);return this.updateProgressListeners(l),Promise.resolve(null)}});return await Promise.all(o),!0}appendQueryParamsToUrl(r,e){const t=r.includes("?");let s=r;return e&&e.forEach((o,n)=>{s+=`${n===0&&!t?"?":"&"}${encodeURIComponent(o.key)}=${encodeURIComponent(o.value)}`}),s}async handleDataResources(r,e,t,s,o,n){const i=r.map(async a=>{const u=Gr(),c={placeholderUid:u,data:[],model:a.model};this.core.registerContainer(c);const l=new Date().getTime();let d;try{const{url:f,headers:h}=this.getRequestOptions(a,e,s,o),p=await fetch(f,{headers:h});if(d=p.status,!p.ok)throw new Error(`Failed to fetch data from ${f}`);const y=p.headers.get("content-type"),v=F.now();let g;a.url.endsWith(".csv")||y?.includes("text/csv")?g=await p.text():g=await p.json();const k=F.now(),m=F.now(),M=this.handleTransformerLogic(g,a,"rawFileTransformer",n||[]),N=F.now();let mt=[],zt=this.core.modelParser.unprocessedModelDescriptions.get(a.model);if(!zt&&(t?.missingModelHandling?.autoGenerateProperties||a.options?.autoGenerateProperties)){const q=a.options?.autoGenerateProperties??t?.missingModelHandling?.autoGenerateProperties??!0;this.addModelOrView(a,{key:a.model,autoGenerateProperties:q,autoGenerateKey:a.options?.autoGenerateKey||!1,keyProperty:a?.options?.keyProperty||"key",keyPropertySeparator:a?.options?.keyPropertySeparator}),zt=this.core.modelParser.unprocessedModelDescriptions.get(a.model)}const Fw=F.now();let $i={sourceColumns:[],coercionFailureSamples:{},origin:a.url};if(a.url.endsWith(".csv")||y?.includes("text/csv")){if(zt){const q=this.csvParser.getJsonFromCSVStringWithMetadata(M,zt,a);mt=q.data,$i={sourceColumns:q.sourceColumns,coercionFailureSamples:q.coercionFailureSamples,origin:a.url}}}else mt=M;const qw=F.now(),Qw=F.now();try{mt=this.handleTransformerLogic(mt,a,"parsedFileTransformer",n||[])}catch(q){this.log.error("Transformer error",q,{resource:a.url,model:a.model})}const Bw=F.now(),Di={placeholderUid:u,model:a.model,data:mt,type:a.options?.updateType||t.defaultDataContainerUpdateType,keyProperty:a?.options?.keyProperty,keyPropertySeparator:a?.options?.keyPropertySeparator,autoGenerateKey:a.options?.autoGenerateKey,autoGenerateProperties:a.options?.autoGenerateProperties},es=F.getEntriesByName(f.toString());if(Array.isArray(es)&&es[0]){const q=es[0],Gw={name:a.url,type:"resource",createdAt:new Date().getTime(),value:{model:a.model,type:"data",start:l,startTime:q.startTime,requestStart:q.requestStart,responseEnd:q.responseEnd,responseStart:q.responseStart,duration:q.duration,parseEnd:k,rawTransformStart:m,rawTransformEnd:N,parseStart:v,csvToJsonStart:Fw,csvToJsonEnd:qw,parsedTransformStart:Qw,parsedTransformEnd:Bw,decodedBodySize:q.decodedBodySize,encodedBodySize:q.encodedBodySize,end:k}};this.core.analyticsController.set({value:Gw,context:this.currentContext})}this.core.updateRegisteredContainer(Di,$i);const Vw=this.progressHandler.update(a,!0,"data",d);return this.updateProgressListeners(Vw),Promise.resolve(Di)}catch(f){this.log.error("Failed to load data resource",f,{url:a.url,model:a.model});const h={title:a.url,type:"loader",errorGroup:"ResourceError",errorType:"InvalidResource",meta:a,model:a.model,description:f?.message};this.setError(h),this.core.removeRegisteredContainer(c);const p=this.progressHandler.update(a,!1,"data",d);return this.updateProgressListeners(p),Promise.resolve()}});return await Promise.all(i),!0}async fetchResources(r,e,t,s,o){this.progressHandler=new Ai,this.progressHandler.init(r),this.updateProgressListeners(this.progressHandler.getProgress());try{if(!this.core)throw this.log.error("dcupl not connected. Did you add your loader to dcupl? -> dcupl.addRunner(loader)"),new Error;const n=r.filter(d=>d.type==="script");await this.handleScriptResources(n,e,s,o);const i=r.filter(d=>d.type==="operator");await this.handleOperatorResources(i,e,s,o);const a=r.filter(d=>d.type==="transformer"),u=await this.handleTransformerResources(a,e,s,o),c=r.filter(d=>d.type==="model");await this.handleModelResources(c,e,s,o);const l=r.filter(d=>d.type==="data");return await this.handleDataResources(l,e,t,s,o,u),!0}catch(n){return this.log.error("Failed to fetch resources",n),!1}}addModelOrView(r,e){try{"model"in e?this.core.views.set(e):this.core.models.set(e)}catch(t){const s={title:r.url,type:"model",errorGroup:"ModelDefinitionError",errorType:"InvalidModelDefinition",model:e.key,meta:r,description:t?.message};this.setError(s)}}handleTransformerLogic(r,e,t,s){for(const o of s)o.type===t&&o.transformer&&(!o.applyTo.length&&!e.tags?.length&&(r=o.transformer(e,r)),wi(o.applyTo,e.tags||[]).length&&(r=o.transformer(e,r)));return r}updateProgressListeners(r){this.progressListeners.forEach(e=>e(r))}on(r){return this.progressListeners.add(r),()=>{this.progressListeners.delete(r)}}setError(r){this.core.modelParser.qualityController.enabled&&this.core.modelParser.qualityController.setError(r)}};Ci([Tn({scope:"global",origin:"loader",type:"loader_config_fetched",connectMessage:!0,connectMessageResult:!0})],Yr.prototype,"fetchConfig"),Ci([Tn({scope:"global",origin:"loader",type:"loader_processed",connectMessage:!0})],Yr.prototype,"process");const Ow=Yr;let gt,Ve;async function Kw(r){return gt=new Wp(r.options),Ve=new Ow,gt.loaders.add(Ve,"default"),r.appLoaderConfig?await Ve.config.fetch(r.appLoaderConfig):await Ve.config.fetch(),await Ve.process(r.processOptions),await gt.init(),globalThis.dcupl=gt,{dcupl:gt,loader:Ve}}globalThis.initDcupl=Kw})();
16
16
  //# sourceMappingURL=dcupl.bundle.min.js.map