@dcupl/bundle 2.0.0-beta.3 → 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 Ai(r){return r&&DataView.prototype.isPrototypeOf(r)}if(T.arrayBuffer)var wi=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],$i=ArrayBuffer.isView||function(r){return r&&wi.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 Ci(r){var e=new FileReader,t=Yr(e);return e.readAsArrayBuffer(r),t}function _i(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 Di(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&&Ai(r)?(this._bodyArrayBuffer=es(r.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):T.arrayBuffer&&(ArrayBuffer.prototype.isPrototypeOf(r)||$i(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(Ci);throw new Error("could not read as ArrayBuffer")}},this.text=function(){var r=Lt(this);if(r)return r;if(this._bodyBlob)return _i(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(Di(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(ji)}),this.json=function(){return this.text().then(JSON.parse)},this}var xi=["CONNECT","DELETE","GET","HEAD","OPTIONS","PATCH","POST","PUT","TRACE"];function Pi(r){var e=r.toUpperCase();return xi.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=Pi(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 ji(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 Ri(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 W(r,e){if(!(this instanceof W))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(W.prototype),W.prototype.clone=function(){return new W(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new P(this.headers),url:this.url})},W.error=function(){var r=new W(null,{status:200,statusText:""});return r.ok=!1,r.status=0,r.type="error",r};var Ei=[301,302,303,307,308];W.redirect=function(r,e){if(Ei.indexOf(e)===-1)throw new RangeError("Invalid status code");return new W(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:Ri(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 W(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=W);var ss=typeof global=="object"&&global&&global.Object===Object&&global,Mi=typeof self=="object"&&self&&self.Object===Object&&self,H=ss||Mi||Function("return this")(),V=H.Symbol,ns=Object.prototype,Ii=ns.hasOwnProperty,Si=ns.toString,Ue=V?V.toStringTag:void 0;function Ti(r){var e=Ii.call(r,Ue),t=r[Ue];try{r[Ue]=void 0;var s=!0}catch{}var n=Si.call(r);return s&&(e?r[Ue]=t:delete r[Ue]),n}var Oi=Object.prototype,Ki=Oi.toString;function Fi(r){return Ki.call(r)}var qi="[object Null]",Qi="[object Undefined]",os=V?V.toStringTag:void 0;function X(r){return r==null?r===void 0?Qi:qi:os&&os in Object(r)?Ti(r):Fi(r)}function O(r){return r!=null&&typeof r=="object"}var Bi="[object Symbol]";function De(r){return typeof r=="symbol"||O(r)&&X(r)==Bi}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 Vi=/\s/;function Ui(r){for(var e=r.length;e--&&Vi.test(r.charAt(e)););return e}var Gi=/^\s+/;function Ni(r){return r&&r.slice(0,Ui(r)+1).replace(Gi,"")}function N(r){var e=typeof r;return r!=null&&(e=="object"||e=="function")}var ls=NaN,zi=/^[-+]0x[0-9a-f]+$/i,Li=/^0b[01]+$/i,Wi=/^0o[0-7]+$/i,Hi=parseInt;function Ji(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=Ni(r);var t=Li.test(r);return t||Wi.test(r)?Hi(r.slice(2),t?2:8):zi.test(r)?ls:+r}var cs=1/0,Zi=17976931348623157e292;function Xi(r){if(!r)return r===0?r:0;if(r=Ji(r),r===cs||r===-cs){var e=r<0?-1:1;return e*Zi}return r===r?r:0}function vt(r){var e=Xi(r),t=e%1;return e===e?t?e-t:e:0}function bt(r){return r}var Yi="[object AsyncFunction]",ea="[object Function]",ta="[object GeneratorFunction]",ra="[object Proxy]";function Wt(r){if(!N(r))return!1;var e=X(r);return e==ea||e==ta||e==Yi||e==ra}var Ht=H["__core-js_shared__"],us=(function(){var r=/[^.]+$/.exec(Ht&&Ht.keys&&Ht.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""})();function sa(r){return!!us&&us in r}var na=Function.prototype,oa=na.toString;function fe(r){if(r!=null){try{return oa.call(r)}catch{}try{return r+""}catch{}}return""}var ia=/[\\^$.*+?()[\]{}|]/g,aa=/^\[object .+?Constructor\]$/,la=Function.prototype,ca=Object.prototype,ua=la.toString,da=ca.hasOwnProperty,fa=RegExp("^"+ua.call(da).replace(ia,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ha(r){if(!N(r)||sa(r))return!1;var e=Wt(r)?fa:aa;return e.test(fe(r))}function pa(r,e){return r?.[e]}function he(r,e){var t=pa(r,e);return ha(t)?t:void 0}var Jt=he(H,"WeakMap"),ds=Object.create,ya=(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 ga(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 ma=800,va=16,ba=Date.now;function ka(r){var e=0,t=0;return function(){var s=ba(),n=va-(s-t);if(t=s,n>0){if(++e>=ma)return arguments[0]}else e=0;return r.apply(void 0,arguments)}}function Aa(r){return function(){return r}}var kt=(function(){try{var r=he(Object,"defineProperty");return r({},"",{}),r}catch{}})(),wa=kt?function(r,e){return kt(r,"toString",{configurable:!0,enumerable:!1,value:Aa(e),writable:!0})}:bt,$a=ka(wa);function Ca(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 _a(r){return r!==r}function Da(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?Da(r,e,t):fs(r,_a,t)}function xa(r,e){var t=r==null?0:r.length;return!!t&&hs(r,e,0)>-1}var Pa=9007199254740991,ja=/^(?:0|[1-9]\d*)$/;function Zt(r,e){var t=typeof r;return e=e??Pa,!!e&&(t=="number"||t!="symbol"&&ja.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 Ge(r,e){return r===e||r!==r&&e!==e}var Ra=Object.prototype,Ea=Ra.hasOwnProperty;function ps(r,e,t){var s=r[e];(!(Ea.call(r,e)&&Ge(s,t))||t===void 0&&!(e in r))&&At(r,e,t)}var ys=Math.max;function Ma(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),ga(r,this,a)}}function Xt(r,e){return $a(Ma(r,e,bt),r+"")}var Ia=9007199254740991;function Yt(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=Ia}function Y(r){return r!=null&&Yt(r.length)&&!Wt(r)}var Sa=Object.prototype;function er(r){var e=r&&r.constructor,t=typeof e=="function"&&e.prototype||Sa;return r===t}function Ta(r,e){for(var t=-1,s=Array(r);++t<r;)s[t]=e(t);return s}var Oa="[object Arguments]";function gs(r){return O(r)&&X(r)==Oa}var ms=Object.prototype,Ka=ms.hasOwnProperty,Fa=ms.propertyIsEnumerable,Ne=gs((function(){return arguments})())?gs:function(r){return O(r)&&Ka.call(r,"callee")&&!Fa.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,Qa=bs&&bs.exports===vs,ks=Qa?H.Buffer:void 0,Ba=ks?ks.isBuffer:void 0,ze=Ba||qa,Va="[object Arguments]",Ua="[object Array]",Ga="[object Boolean]",Na="[object Date]",za="[object Error]",La="[object Function]",Wa="[object Map]",Ha="[object Number]",Ja="[object Object]",Za="[object RegExp]",Xa="[object Set]",Ya="[object String]",el="[object WeakMap]",tl="[object ArrayBuffer]",rl="[object DataView]",sl="[object Float32Array]",nl="[object Float64Array]",ol="[object Int8Array]",il="[object Int16Array]",al="[object Int32Array]",ll="[object Uint8Array]",cl="[object Uint8ClampedArray]",ul="[object Uint16Array]",dl="[object Uint32Array]",$={};$[sl]=$[nl]=$[ol]=$[il]=$[al]=$[ll]=$[cl]=$[ul]=$[dl]=!0,$[Va]=$[Ua]=$[tl]=$[Ga]=$[rl]=$[Na]=$[za]=$[La]=$[Wa]=$[Ha]=$[Ja]=$[Za]=$[Xa]=$[Ya]=$[el]=!1;function fl(r){return O(r)&&Yt(r.length)&&!!$[X(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,hl=We&&We.exports===As,tr=hl&&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):fl,pl=Object.prototype,yl=pl.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?Ta(r.length,String):[],l=a.length;for(var c in r)(e||yl.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 gl=Cs(Object.keys,Object),ml=Object.prototype,vl=ml.hasOwnProperty;function _s(r){if(!er(r))return gl(r);var e=[];for(var t in Object(r))vl.call(r,t)&&t!="constructor"&&e.push(t);return e}function He(r){return Y(r)?$s(r):_s(r)}var bl=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,kl=/^\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:kl.test(r)||!bl.test(r)||e!=null&&r in Object(e)}var Je=he(Object,"create");function Al(){this.__data__=Je?Je(null):{},this.size=0}function wl(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}var $l="__lodash_hash_undefined__",Cl=Object.prototype,_l=Cl.hasOwnProperty;function Dl(r){var e=this.__data__;if(Je){var t=e[r];return t===$l?void 0:t}return _l.call(e,r)?e[r]:void 0}var xl=Object.prototype,Pl=xl.hasOwnProperty;function jl(r){var e=this.__data__;return Je?e[r]!==void 0:Pl.call(e,r)}var Rl="__lodash_hash_undefined__";function El(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=Je&&e===void 0?Rl: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=Al,pe.prototype.delete=wl,pe.prototype.get=Dl,pe.prototype.has=jl,pe.prototype.set=El;function Ml(){this.__data__=[],this.size=0}function wt(r,e){for(var t=r.length;t--;)if(Ge(r[t][0],e))return t;return-1}var Il=Array.prototype,Sl=Il.splice;function Tl(r){var e=this.__data__,t=wt(e,r);if(t<0)return!1;var s=e.length-1;return t==s?e.pop():Sl.call(e,t,1),--this.size,!0}function Ol(r){var e=this.__data__,t=wt(e,r);return t<0?void 0:e[t][1]}function Kl(r){return wt(this.__data__,r)>-1}function Fl(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 ee(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])}}ee.prototype.clear=Ml,ee.prototype.delete=Tl,ee.prototype.get=Ol,ee.prototype.has=Kl,ee.prototype.set=Fl;var Ze=he(H,"Map");function ql(){this.size=0,this.__data__={hash:new pe,map:new(Ze||ee),string:new pe}}function Ql(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 Ql(e)?t[typeof e=="string"?"string":"hash"]:t.map}function Bl(r){var e=$t(this,r).delete(r);return this.size-=e?1:0,e}function Vl(r){return $t(this,r).get(r)}function Ul(r){return $t(this,r).has(r)}function Gl(r,e){var t=$t(this,r),s=t.size;return t.set(r,e),this.size+=t.size==s?0:1,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=ql,te.prototype.delete=Bl,te.prototype.get=Vl,te.prototype.has=Ul,te.prototype.set=Gl;var Nl="Expected a function";function nr(r,e){if(typeof r!="function"||e!=null&&typeof e!="function")throw new TypeError(Nl);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||te),t}nr.Cache=te;var zl=500;function Ll(r){var e=nr(r,function(s){return t.size===zl&&t.clear(),s}),t=e.cache;return e}var Wl=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Hl=/\\(\\)?/g,Jl=Ll(function(r){var e=[];return r.charCodeAt(0)===46&&e.push(""),r.replace(Wl,function(t,s,n,o){e.push(n?o.replace(Hl,"$1"):s||t)}),e});function or(r){return r==null?"":mt(r)}function Ds(r,e){return j(r)?r:sr(r,e)?[r]:Jl(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 Zl(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=Zl),n||(n=[]);++o<i;){var a=r[o];t(a)&&xs(n,a)}return n}var Rs=Cs(Object.getPrototypeOf,Object),Xl="\\ud800-\\udfff",Yl="\\u0300-\\u036f",ec="\\ufe20-\\ufe2f",tc="\\u20d0-\\u20ff",rc=Yl+ec+tc,sc="\\ufe0e\\ufe0f",nc="\\u200d",oc=RegExp("["+nc+Xl+rc+sc+"]");function ic(r){return oc.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 ac(){this.__data__=new ee,this.size=0}function lc(r){var e=this.__data__,t=e.delete(r);return this.size=e.size,t}function cc(r){return this.__data__.get(r)}function uc(r){return this.__data__.has(r)}var dc=200;function fc(r,e){var t=this.__data__;if(t instanceof ee){var s=t.__data__;if(!Ze||s.length<dc-1)return s.push([r,e]),this.size=++t.size,this;t=this.__data__=new te(s)}return t.set(r,e),this.size=t.size,this}function z(r){var e=this.__data__=new ee(r);this.size=e.size}z.prototype.clear=ac,z.prototype.delete=lc,z.prototype.get=cc,z.prototype.has=uc,z.prototype.set=fc;var Ms=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Is=Ms&&typeof module=="object"&&module&&!module.nodeType&&module,hc=Is&&Is.exports===Ms,Ss=hc?H.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 pc(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 yc(){return[]}var gc=Object.prototype,mc=gc.propertyIsEnumerable,Ks=Object.getOwnPropertySymbols,vc=Ks?function(r){return r==null?[]:(r=Object(r),pc(Ks(r),function(e){return mc.call(r,e)}))}:yc;function bc(r,e,t){var s=e(r);return j(r)?s:xs(s,t(r))}function ar(r){return bc(r,He,vc)}var lr=he(H,"DataView"),cr=he(H,"Promise"),ur=he(H,"Set"),Fs="[object Map]",kc="[object Object]",qs="[object Promise]",Qs="[object Set]",Bs="[object WeakMap]",Vs="[object DataView]",Ac=fe(lr),wc=fe(Ze),$c=fe(cr),Cc=fe(ur),_c=fe(Jt),U=X;(lr&&U(new lr(new ArrayBuffer(1)))!=Vs||Ze&&U(new Ze)!=Fs||cr&&U(cr.resolve())!=qs||ur&&U(new ur)!=Qs||Jt&&U(new Jt)!=Bs)&&(U=function(r){var e=X(r),t=e==kc?r.constructor:void 0,s=t?fe(t):"";if(s)switch(s){case Ac:return Vs;case wc:return Fs;case $c:return qs;case Cc:return Qs;case _c:return Bs}return e});var Dc=Object.prototype,xc=Dc.hasOwnProperty;function Pc(r){var e=r.length,t=new r.constructor(e);return e&&typeof r[0]=="string"&&xc.call(r,"index")&&(t.index=r.index,t.input=r.input),t}var _t=H.Uint8Array;function dr(r){var e=new r.constructor(r.byteLength);return new _t(e).set(new _t(r)),e}function jc(r,e){var t=dr(r.buffer);return new r.constructor(t,r.byteOffset,r.byteLength)}var Rc=/\w*$/;function Ec(r){var e=new r.constructor(r.source,Rc.exec(r));return e.lastIndex=r.lastIndex,e}var Us=V?V.prototype:void 0,Gs=Us?Us.valueOf:void 0;function Mc(r){return Gs?Object(Gs.call(r)):{}}function Ns(r,e){var t=e?dr(r.buffer):r.buffer;return new r.constructor(t,r.byteOffset,r.length)}var Ic="[object Boolean]",Sc="[object Date]",Tc="[object Map]",Oc="[object Number]",Kc="[object RegExp]",Fc="[object Set]",qc="[object String]",Qc="[object Symbol]",Bc="[object ArrayBuffer]",Vc="[object DataView]",Uc="[object Float32Array]",Gc="[object Float64Array]",Nc="[object Int8Array]",zc="[object Int16Array]",Lc="[object Int32Array]",Wc="[object Uint8Array]",Hc="[object Uint8ClampedArray]",Jc="[object Uint16Array]",Zc="[object Uint32Array]";function Xc(r,e,t){var s=r.constructor;switch(e){case Bc:return dr(r);case Ic:case Sc:return new s(+r);case Vc:return jc(r);case Uc:case Gc:case Nc:case zc:case Lc:case Wc:case Hc:case Jc:case Zc:return Ns(r,t);case Tc:return new s;case Oc:case qc:return new s(r);case Kc:return Ec(r);case Fc:return new s;case Qc:return Mc(r)}}function zs(r){return typeof r.constructor=="function"&&!er(r)?ya(Rs(r)):{}}var Yc="[object Map]";function eu(r){return O(r)&&U(r)==Yc}var Ls=Pe&&Pe.isMap,tu=Ls?Le(Ls):eu,ru="[object Set]";function su(r){return O(r)&&U(r)==ru}var Ws=Pe&&Pe.isSet,nu=Ws?Le(Ws):su,ou=1,Hs="[object Arguments]",iu="[object Array]",au="[object Boolean]",lu="[object Date]",cu="[object Error]",Js="[object Function]",uu="[object GeneratorFunction]",du="[object Map]",fu="[object Number]",Zs="[object Object]",hu="[object RegExp]",pu="[object Set]",yu="[object String]",gu="[object Symbol]",mu="[object WeakMap]",vu="[object ArrayBuffer]",bu="[object DataView]",ku="[object Float32Array]",Au="[object Float64Array]",wu="[object Int8Array]",$u="[object Int16Array]",Cu="[object Int32Array]",_u="[object Uint8Array]",Du="[object Uint8ClampedArray]",xu="[object Uint16Array]",Pu="[object Uint32Array]",k={};k[Hs]=k[iu]=k[vu]=k[bu]=k[au]=k[lu]=k[ku]=k[Au]=k[wu]=k[$u]=k[Cu]=k[du]=k[fu]=k[Zs]=k[hu]=k[pu]=k[yu]=k[gu]=k[_u]=k[Du]=k[xu]=k[Pu]=!0,k[cu]=k[Js]=k[mu]=!1;function Dt(r,e,t,s,n,o){var i,a=e&ou;if(i!==void 0)return i;if(!N(r))return r;var l=j(r);if(l)i=Pc(r);else{var c=U(r),u=c==Js||c==uu;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=Xc(r,c,a)}}o||(o=new z);var d=o.get(r);if(d)return d;o.set(r,i),nu(r)?r.forEach(function(p){i.add(Dt(p,e,t,p,r,o))}):tu(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 Ca(h||r,function(p,y){h&&(y=p,p=r[y]),ps(i,y,Dt(p,e,t,y,r,o))}),i}var ju=1,Ru=4;function re(r){return Dt(r,ju|Ru)}var Eu="__lodash_hash_undefined__";function Mu(r){return this.__data__.set(r,Eu),this}function Iu(r){return this.__data__.has(r)}function Ye(r){var e=-1,t=r==null?0:r.length;for(this.__data__=new te;++e<t;)this.add(r[e])}Ye.prototype.add=Ye.prototype.push=Mu,Ye.prototype.has=Iu;function Su(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 Tu=1,Ou=2;function Ys(r,e,t,s,n,o){var i=t&Tu,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&Ou?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(!Su(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 Ku(r){var e=-1,t=Array(r.size);return r.forEach(function(s,n){t[++e]=[n,s]}),t}function Fu(r){var e=-1,t=Array(r.size);return r.forEach(function(s){t[++e]=s}),t}var qu=1,Qu=2,Bu="[object Boolean]",Vu="[object Date]",Uu="[object Error]",Gu="[object Map]",Nu="[object Number]",zu="[object RegExp]",Lu="[object Set]",Wu="[object String]",Hu="[object Symbol]",Ju="[object ArrayBuffer]",Zu="[object DataView]",en=V?V.prototype:void 0,fr=en?en.valueOf:void 0;function Xu(r,e,t,s,n,o,i){switch(t){case Zu:if(r.byteLength!=e.byteLength||r.byteOffset!=e.byteOffset)return!1;r=r.buffer,e=e.buffer;case Ju:return!(r.byteLength!=e.byteLength||!o(new _t(r),new _t(e)));case Bu:case Vu:case Nu:return Ge(+r,+e);case Uu:return r.name==e.name&&r.message==e.message;case zu:case Wu:return r==e+"";case Gu:var a=Ku;case Lu:var l=s&qu;if(a||(a=Fu),r.size!=e.size&&!l)return!1;var c=i.get(r);if(c)return c==e;s|=Qu,i.set(r,e);var u=Ys(a(r),a(e),s,n,o,i);return i.delete(r),u;case Hu:if(fr)return fr.call(r)==fr.call(e)}return!1}var Yu=1,ed=Object.prototype,td=ed.hasOwnProperty;function rd(r,e,t,s,n,o){var i=t&Yu,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:td.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,G=e.constructor;B!=G&&"constructor"in r&&"constructor"in e&&!(typeof B=="function"&&B instanceof B&&typeof G=="function"&&G instanceof G)&&(y=!1)}return o.delete(r),o.delete(e),y}var sd=1,tn="[object Arguments]",rn="[object Array]",xt="[object Object]",nd=Object.prototype,sn=nd.hasOwnProperty;function od(r,e,t,s,n,o){var i=j(r),a=j(e),l=i?rn:U(r),c=a?rn:U(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):Xu(r,e,l,t,s,n,o);if(!(t&sd)){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),rd(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:od(r,e,t,s,et,n)}var id=1,ad=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,id|ad,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 ld(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 cd(r,e){return r!=null&&e in Object(r)}function ud(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 dd(r,e){return r!=null&&ud(r,e,cd)}var fd=1,hd=2;function pd(r,e){return sr(r)&&on(e)?ln(Ct(r),e):function(t){var s=Xe(t,r);return s===void 0&&s===e?dd(t,r):et(e,s,fd|hd)}}function cn(r){return function(e){return e?.[r]}}function yd(r){return function(e){return ir(e,r)}}function gd(r){return sr(r)?cn(Ct(r)):yd(r)}function je(r){return typeof r=="function"?r:r==null?bt:typeof r=="object"?j(r)?pd(r[0],r[1]):ld(r):gd(r)}function md(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=md();function vd(r,e){return r&&un(r,e,He)}function bd(r,e){return function(t,s){if(t==null)return t;if(!Y(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=bd(vd);function Re(r){return O(r)&&Y(r)}var kd=200;function dn(r,e,t,s){var n=-1,o=xa,i=!0,a=r.length,l=[],c=e.length;if(!a)return l;t&&(e=xe(e,Le(t))),e.length>=kd&&(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 Ad(r){var e=r==null?0:r.length;return e?r[e-1]:void 0}var fn=Xt(function(r,e){var t=Ad(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 wd(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 $d(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)?wd:$d;return s(r,je(e))}function Cd(r){return function(e,t,s){var n=Object(e);if(!Y(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 _d=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=_d(s+n,0)),fs(r,je(e),n)}var Dd=Cd(pr);function xd(r,e){var t=-1,s=Y(r)?Array(r.length):[];return hr(r,function(n,o,i){s[++t]=e(n,o,i)}),s}var Pd="[object String]";function Pt(r){return typeof r=="string"||!j(r)&&O(r)&&X(r)==Pd}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 jd(r,e){return r===e||nn(r,e,an(e))}function Rd(r,e){var t=r.length;for(r.sort(e);t--;)r[t]=r[t].value;return r}function Ed(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 Md(r,e,t){for(var s=-1,n=r.criteria,o=e.criteria,i=n.length,a=t.length;++s<i;){var l=Ed(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 Id(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=xd(r,function(o,i,a){var l=xe(e,function(c){return c(o)});return{criteria:l,index:++s,value:o}});return Rd(n,function(o,i){return Md(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]),Id(r,e,t))}var Sd=cn("length"),mn="\\ud800-\\udfff",Td="\\u0300-\\u036f",Od="\\ufe20-\\ufe2f",Kd="\\u20d0-\\u20ff",Fd=Td+Od+Kd,qd="\\ufe0e\\ufe0f",Qd="["+mn+"]",yr="["+Fd+"]",gr="\\ud83c[\\udffb-\\udfff]",Bd="(?:"+yr+"|"+gr+")",vn="[^"+mn+"]",bn="(?:\\ud83c[\\udde6-\\uddff]){2}",kn="[\\ud800-\\udbff][\\udc00-\\udfff]",Vd="\\u200d",An=Bd+"?",wn="["+qd+"]?",Ud="(?:"+Vd+"(?:"+[vn,bn,kn].join("|")+")"+wn+An+")*",Gd=wn+An+Ud,Nd="(?:"+[vn+yr+"?",yr,bn,kn,Qd].join("|")+")",$n=RegExp(gr+"(?="+gr+")|"+Nd+Gd,"g");function zd(r){for(var e=$n.lastIndex=0;$n.test(r);)++e;return e}function Ld(r){return ic(r)?zd(r):Sd(r)}var Wd="[object Map]",Hd="[object Set]";function Jd(r){if(r==null)return 0;if(Y(r))return Pt(r)?Ld(r):r.length;var e=U(r);return e==Wd||e==Hd?r.size:_s(r).length}function Zd(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 Xd(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 Xd(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 Yd{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 ki{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 ki;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 ef{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 tf=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 tf;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 re(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):re(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 rf(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 sf(r){return r instanceof Date}function jn(r){return r instanceof Date&&!isNaN(r.getTime())}const nf={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 of(r){let e="^";const t=[];let s=r;const n=Object.entries(nf).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 af(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 lf(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 cf(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}=of(e),o=r.match(s);if(!o)return new Date(NaN);const i=af(o,n);return lf(i)}class uf{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 df{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 ff{parseCache;circularRefDetector;cacheHits=0;cacheMisses=0;constructor(e=1e3){this.parseCache=new uf(e),this.circularRefDetector=new df}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 ff;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 hf(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=mf(s,e));let i;return(n.types.includes("min")||n.types.includes("max"))&&(i=yf(s,e)),r.types.forEach(a=>{a==="sum"?n.sum=o?.sum:a==="avg"?n.avg=o?.average:a==="count"?n.count=pf(s,e):a==="min"?n.min=i&&i[0]:a==="max"?n.max=i&&i[1]:a==="distinct"?n.distinct=vf(r,e,t):a==="group"&&(n.group=gf(r,e))}),n},pf=(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},yf=(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]},gf=(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},mf=(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:hf(t,s,kr([t,s])),count:s,sum:t}},vf=(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=re(this._defaultQueryOptions);deepQueryService;constructor(e){this.deepQueryService=e||D}init(e){this._initOptions=re(e),this.currentQuery=re(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=re(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 re(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 bf(r,e,t,s,n,o,i){const a=[],l=Ar.removeQuery({groupKey:n},re(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:kf(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 kf=(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=Af(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 Af(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 wf=(r,e)=>{const t=[];for(const s of r){for(const[n,o]of Object.entries(s)){const i=t.find(l=>l.key===n),a=$f(o);if(i)i.type!==a&&(i.type="any");else{const l={key:n,type:a};t.push(l)}}break}return t},Mn=r=>Number(r)===r&&r%1===0,In=r=>Number(r)===r&&r%1!==0,$f=r=>{switch(typeof r){case"string":return"string";case"number":return Mn(r)?"int":In(r)?"float":"any";case"boolean":return"boolean";case"object":return sf(r)?"date":"json";default:return"any"}};class Cf{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:Jd(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"&&Zd(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"?jd(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)):!!Dd(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 _f{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 Df=Xt(function(r,e){return Re(r)?dn(r,js(e,1,Re)):[]});class xf{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=bf(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 Sn{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||Df(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 Pf=Object.defineProperty,jf=Object.getOwnPropertyDescriptor,I=(r,e,t,s)=>{for(var n=jf(e,t),o=r.length-1,i;o>=0;o--)(i=r[o])&&(n=i(e,t,n)||n);return n&&Pf(e,t,n),n};let R=class{constructor(e,t,s){this.dcuplApi=e,this.cdRef=t,this.indicesController=s,this.itemService=new Sn(this.dcuplApi.modelParser,this.dcuplApi.scriptController),this.filter=new xf(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=rf(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 Rf=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 Ef(r,e){var t=-1,s=r.length;for(e||(e=Array(s));++t<s;)e[t]=r[t];return e}function Mf(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 If(r,e,t){if(!N(t))return!1;var s=typeof e;return(s=="number"?Y(t)&&Zt(e,t.length):s=="string"&&e in t)?Ge(t[e],r):!1}function Sf(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&&If(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 Tf(r){var e=[];if(r!=null)for(var t in Object(r))e.push(t);return e}var Of=Object.prototype,Kf=Of.hasOwnProperty;function Ff(r){if(!N(r))return Tf(r);var e=er(r),t=[];for(var s in r)s=="constructor"&&(e||!Kf.call(r,s))||t.push(s);return t}function Tn(r){return Y(r)?$s(r,!0):Ff(r)}var qf="[object Object]",Qf=Function.prototype,Bf=Object.prototype,On=Qf.toString,Vf=Bf.hasOwnProperty,Uf=On.call(Object);function Gf(r){if(!O(r)||X(r)!=qf)return!1;var e=Rs(r);if(e===null)return!0;var t=Vf.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&On.call(t)==Uf}function Nf(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 zf(r,e,t,s){return hr(r,function(n,o,i){e(s,n,t(n),i)}),s}function Lf(r,e){return function(t,s){var n=j(t)?Nf:zf,o={};return n(t,r,je(s),o)}}function Cr(r,e,t){(t!==void 0&&!Ge(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 Wf(r){return Mf(r,Tn(r))}function Hf(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=Ef(a):h?(d=!1,u=Os(l,!0)):p?(d=!1,u=Ns(l,!0)):u=[]:Gf(l)||Ne(l)?(u=a,Ne(a)?u=Wf(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 Kn(r,e,t,s,n){r!==e&&un(e,function(o,i){if(n||(n=new z),N(o))Hf(r,e,i,t,Kn,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)}},Tn)}var Jf=Object.prototype,Zf=Jf.hasOwnProperty,Dr=Lf(function(r,e,t){Zf.call(r,t)?r[t].push(e):At(r,t,[e])}),Xf="[object Boolean]";function Yf(r){return r===!0||r===!1||O(r)&&X(r)==Xf}var st=Sf(function(r,e,t){Kn(r,e,t)});const q=(r,e,t)=>({title:r,type:"model",errorGroup:"ModelDefinitionError",errorType:"InvalidModelDefinition",attribute:e,description:t}),eh=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")},th=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")},rh=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"&&typeof r.autoGenerateProperties!="boolean")throw new Error("Invalid Model: autoGenerateProperties must be a boolean");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},sh=(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(...nh(s,r,e)),"resolve"in s&&t.push(...oh(s,r,e)),"groupBy"in s&&t.push(...ih(s,r))}),r.properties.forEach(s=>{"derive"in s&&t.push(...ah(s,r,e)),"expression"in s&&t.push(...lh(s,r))}),t},nh=(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},oh=(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)},ih=(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},ah=(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},lh=(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},ch={REF_VALUE:"_dcupl_ref_"},uh={required:!0,forceStrictDataType:!1,nullable:!1,validatorHandling:"loose"},xr={enabled:!0,attributes:uh};let dh=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;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=eh(t);s?(s.model=this.key,this.setError(s)):(this.setAttributeQualityConfig(t),this.properties.set(t.key,t))}),e.references?.map(t=>{const s=th(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.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.autoGenerateProperties,quality:this.qualityConfig}:this.initialDefinition}generatePropertiesFromContainer(e){wf(e.data).map(t=>{if(!this.properties.has(t.key)){if(t.key==="key"&&(e.keyProperty==="key"||!e.keyProperty))return;t.filter=!0,this.properties.set(t.key,t)}})}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(!Mn(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(!In(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(!Yf(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=cf(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,ch.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))}}},fh=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}}},hh=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 ph(r){return"query"in r}function Pr(r){return"resolve"in r}function yh(r){return"derive"in r}function gh(r){return"groupBy"in r}var mh=Object.defineProperty,vh=Object.getOwnPropertyDescriptor,Mt=(r,e,t,s)=>{for(var n=vh(e,t),o=r.length-1,i;o>=0;o--)(i=r[o])&&(n=i(e,t,n)||n);return n&&mh(e,t,n),n};let nt=class{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 fh;partialUpdateMetrics=new hh;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 dh(this);t.init(e),t.applyPropertiesAndReferences(e),this.models.set(t.key,t)}})}validateModels(){this.models.forEach(e=>{e.qualityConfig.enabled===!0&&sh(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 ef,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(ph(s))this.processQueryReference(t,n,s.query);else if(Pr(s))this.processResolvedReference(t,n,s.resolve);else if(yh(s))this.processDerivedReference(t,n,s.derive);else if(gh(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{rh(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:!0,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 bh(r,e){return xe(e,function(t){return r[t]})}function kh(r){return r==null?[]:bh(r,He(r))}var Ah=Math.max;function wh(r,e,t,s){r=Y(r)?r:kh(r),t=t?vt(t):0;var n=r.length;return t<0&&(t=Ah(n+t,0)),Pt(r)?t<=n&&r.indexOf(e,t)>-1:!!n&&hs(r,e,t)>-1}var $h=Object.defineProperty,Ch=Object.getOwnPropertyDescriptor,Fn=(r,e,t,s)=>{for(var n=Ch(e,t),o=r.length-1,i;o>=0;o--)(i=r[o])&&(n=i(e,t,n)||n);return n&&$h(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 Rf(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=re(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)}}Fn([v({scope:"list",type:"list_destroyed",connectMessage:!0})],jr.prototype,"_destroy"),Fn([v({scope:"list",type:"list_updated",action:"update",connectMessage:!0})],jr.prototype,"update");var _h=Object.defineProperty,Dh=Object.getOwnPropertyDescriptor,xh=(r,e,t,s)=>{for(var n=Dh(e,t),o=r.length-1,i;o>=0;o--)(i=r[o])&&(n=i(e,t,n)||n);return n&&_h(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}};xh([v({scope:"global",type:"list_created",connectMessage:!0})],qn.prototype,"create");let Ph=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&&!wh(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 jh=Object.defineProperty,Rh=Object.getOwnPropertyDescriptor,Q=(r,e,t,s)=>{for(var n=Rh(e,t),o=r.length-1,i;o>=0;o--)(i=r[o])&&(n=i(e,t,n)||n);return n&&jh(e,t,n),n};let F=class{cdRef=new br;analyticsController=new Yd;scriptController=new _f;qualityController=new Ph(this.scriptController);log=Ee.child({prefix:"Dcupl"});modelParser=new nt(this.cdRef,this.qualityController,this);globalItemService=new Sn(this.modelParser,this.scriptController);cacheCtrl=new Dn(!1);queryManager=new Cf(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 Eh=class extends F{version="2.0.0-beta.2";constructor(e){super(e)}};var Qn=typeof global=="object"&&global&&global.Object===Object&&global,Mh=typeof self=="object"&&self&&self.Object===Object&&self,J=Qn||Mh||Function("return this")(),le=J.Symbol,Bn=Object.prototype,Ih=Bn.hasOwnProperty,Sh=Bn.toString,ot=le?le.toStringTag:void 0;function Th(r){var e=Ih.call(r,ot),t=r[ot];try{r[ot]=void 0;var s=!0}catch{}var n=Sh.call(r);return s&&(e?r[ot]=t:delete r[ot]),n}var Oh=Object.prototype,Kh=Oh.toString;function Fh(r){return Kh.call(r)}var qh="[object Null]",Qh="[object Undefined]",Vn=le?le.toStringTag:void 0;function Ie(r){return r==null?r===void 0?Qh:qh:Vn&&Vn in Object(r)?Th(r):Fh(r)}function Se(r){return r!=null&&typeof r=="object"}var Bh="[object Symbol]";function Rr(r){return typeof r=="symbol"||Se(r)&&Ie(r)==Bh}function Vh(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,Gn=Un?Un.toString:void 0;function Nn(r){if(typeof r=="string")return r;if(Te(r))return Vh(r,Nn)+"";if(Rr(r))return Gn?Gn.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]",Gh="[object Function]",Nh="[object GeneratorFunction]",zh="[object Proxy]";function zn(r){if(!It(r))return!1;var e=Ie(r);return e==Gh||e==Nh||e==Uh||e==zh}var Er=J["__core-js_shared__"],Ln=(function(){var r=/[^.]+$/.exec(Er&&Er.keys&&Er.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""})();function Lh(r){return!!Ln&&Ln in r}var Wh=Function.prototype,Hh=Wh.toString;function ve(r){if(r!=null){try{return Hh.call(r)}catch{}try{return r+""}catch{}}return""}var Jh=/[\\^$.*+?()[\]{}|]/g,Zh=/^\[object .+?Constructor\]$/,Xh=Function.prototype,Yh=Object.prototype,ep=Xh.toString,tp=Yh.hasOwnProperty,rp=RegExp("^"+ep.call(tp).replace(Jh,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function sp(r){if(!It(r)||Lh(r))return!1;var e=zn(r)?rp:Zh;return e.test(ve(r))}function np(r,e){return r?.[e]}function be(r,e){var t=np(r,e);return sp(t)?t:void 0}var Mr=be(J,"WeakMap"),Wn=Object.create,op=(function(){function r(){}return function(e){if(!It(e))return{};if(Wn)return Wn(e);r.prototype=e;var t=new r;return r.prototype=void 0,t}})(),Hn=(function(){try{var r=be(Object,"defineProperty");return r({},"",{}),r}catch{}})();function ip(r,e){for(var t=-1,s=r==null?0:r.length;++t<s&&e(r[t],t,r)!==!1;);return r}var ap=9007199254740991,lp=/^(?:0|[1-9]\d*)$/;function cp(r,e){var t=typeof r;return e=e??ap,!!e&&(t=="number"||t!="symbol"&&lp.test(r))&&r>-1&&r%1==0&&r<e}function up(r,e,t){e=="__proto__"&&Hn?Hn(r,e,{configurable:!0,enumerable:!0,value:t,writable:!0}):r[e]=t}function Jn(r,e){return r===e||r!==r&&e!==e}var dp=Object.prototype,fp=dp.hasOwnProperty;function hp(r,e,t){var s=r[e];(!(fp.call(r,e)&&Jn(s,t))||t===void 0&&!(e in r))&&up(r,e,t)}var pp=9007199254740991;function Zn(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=pp}function yp(r){return r!=null&&Zn(r.length)&&!zn(r)}var gp=Object.prototype;function Xn(r){var e=r&&r.constructor,t=typeof e=="function"&&e.prototype||gp;return r===t}function mp(r,e){for(var t=-1,s=Array(r);++t<r;)s[t]=e(t);return s}var vp="[object Arguments]";function Yn(r){return Se(r)&&Ie(r)==vp}var eo=Object.prototype,bp=eo.hasOwnProperty,kp=eo.propertyIsEnumerable,Ap=Yn((function(){return arguments})())?Yn:function(r){return Se(r)&&bp.call(r,"callee")&&!kp.call(r,"callee")};function wp(){return!1}var to=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ro=to&&typeof module=="object"&&module&&!module.nodeType&&module,$p=ro&&ro.exports===to,so=$p?J.Buffer:void 0,Cp=so?so.isBuffer:void 0,no=Cp||wp,_p="[object Arguments]",Dp="[object Array]",xp="[object Boolean]",Pp="[object Date]",jp="[object Error]",Rp="[object Function]",Ep="[object Map]",Mp="[object Number]",Ip="[object Object]",Sp="[object RegExp]",Tp="[object Set]",Op="[object String]",Kp="[object WeakMap]",Fp="[object ArrayBuffer]",qp="[object DataView]",Qp="[object Float32Array]",Bp="[object Float64Array]",Vp="[object Int8Array]",Up="[object Int16Array]",Gp="[object Int32Array]",Np="[object Uint8Array]",zp="[object Uint8ClampedArray]",Lp="[object Uint16Array]",Wp="[object Uint32Array]",C={};C[Qp]=C[Bp]=C[Vp]=C[Up]=C[Gp]=C[Np]=C[zp]=C[Lp]=C[Wp]=!0,C[_p]=C[Dp]=C[Fp]=C[xp]=C[qp]=C[Pp]=C[jp]=C[Rp]=C[Ep]=C[Mp]=C[Ip]=C[Sp]=C[Tp]=C[Op]=C[Kp]=!1;function Hp(r){return Se(r)&&Zn(r.length)&&!!C[Ie(r)]}function Ir(r){return function(e){return r(e)}}var oo=typeof exports=="object"&&exports&&!exports.nodeType&&exports,it=oo&&typeof module=="object"&&module&&!module.nodeType&&module,Jp=it&&it.exports===oo,Sr=Jp&&Qn.process,Oe=(function(){try{var r=it&&it.require&&it.require("util").types;return r||Sr&&Sr.binding&&Sr.binding("util")}catch{}})(),io=Oe&&Oe.isTypedArray,Zp=io?Ir(io):Hp,Xp=Object.prototype,Yp=Xp.hasOwnProperty;function ey(r,e){var t=Te(r),s=!t&&Ap(r),n=!t&&!s&&no(r),o=!t&&!s&&!n&&Zp(r),i=t||s||n||o,a=i?mp(r.length,String):[],l=a.length;for(var c in r)Yp.call(r,c)&&!(i&&(c=="length"||n&&(c=="offset"||c=="parent")||o&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||cp(c,l)))&&a.push(c);return a}function ao(r,e){return function(t){return r(e(t))}}var ty=ao(Object.keys,Object),ry=Object.prototype,sy=ry.hasOwnProperty;function ny(r){if(!Xn(r))return ty(r);var e=[];for(var t in Object(r))sy.call(r,t)&&t!="constructor"&&e.push(t);return e}function oy(r){return yp(r)?ey(r):ny(r)}var iy=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ay=/^\w*$/;function ly(r,e){if(Te(r))return!1;var t=typeof r;return t=="number"||t=="symbol"||t=="boolean"||r==null||Rr(r)?!0:ay.test(r)||!iy.test(r)||e!=null&&r in Object(e)}var at=be(Object,"create");function cy(){this.__data__=at?at(null):{},this.size=0}function uy(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}var dy="__lodash_hash_undefined__",fy=Object.prototype,hy=fy.hasOwnProperty;function py(r){var e=this.__data__;if(at){var t=e[r];return t===dy?void 0:t}return hy.call(e,r)?e[r]:void 0}var yy=Object.prototype,gy=yy.hasOwnProperty;function my(r){var e=this.__data__;return at?e[r]!==void 0:gy.call(e,r)}var vy="__lodash_hash_undefined__";function by(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=at&&e===void 0?vy: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=cy,ke.prototype.delete=uy,ke.prototype.get=py,ke.prototype.has=my,ke.prototype.set=by;function ky(){this.__data__=[],this.size=0}function St(r,e){for(var t=r.length;t--;)if(Jn(r[t][0],e))return t;return-1}var Ay=Array.prototype,wy=Ay.splice;function $y(r){var e=this.__data__,t=St(e,r);if(t<0)return!1;var s=e.length-1;return t==s?e.pop():wy.call(e,t,1),--this.size,!0}function Cy(r){var e=this.__data__,t=St(e,r);return t<0?void 0:e[t][1]}function _y(r){return St(this.__data__,r)>-1}function Dy(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 se(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])}}se.prototype.clear=ky,se.prototype.delete=$y,se.prototype.get=Cy,se.prototype.has=_y,se.prototype.set=Dy;var lt=be(J,"Map");function xy(){this.size=0,this.__data__={hash:new ke,map:new(lt||se),string:new ke}}function Py(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 Py(e)?t[typeof e=="string"?"string":"hash"]:t.map}function jy(r){var e=Tt(this,r).delete(r);return this.size-=e?1:0,e}function Ry(r){return Tt(this,r).get(r)}function Ey(r){return Tt(this,r).has(r)}function My(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=xy,ce.prototype.delete=jy,ce.prototype.get=Ry,ce.prototype.has=Ey,ce.prototype.set=My;var Iy="Expected a function";function Tr(r,e){if(typeof r!="function"||e!=null&&typeof e!="function")throw new TypeError(Iy);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 Sy=500;function Ty(r){var e=Tr(r,function(s){return t.size===Sy&&t.clear(),s}),t=e.cache;return e}var Oy=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ky=/\\(\\)?/g,Fy=Ty(function(r){var e=[];return r.charCodeAt(0)===46&&e.push(""),r.replace(Oy,function(t,s,n,o){e.push(n?o.replace(Ky,"$1"):s||t)}),e});function qy(r){return r==null?"":Nn(r)}function Qy(r,e){return Te(r)?r:ly(r,e)?[r]:Fy(qy(r))}function By(r){if(typeof r=="string"||Rr(r))return r;var e=r+"";return e=="0"&&1/r==-1/0?"-0":e}function Vy(r,e){e=Qy(e,r);for(var t=0,s=e.length;r!=null&&t<s;)r=r[By(e[t++])];return t&&t==s?r:void 0}function Uy(r,e,t){var s=r==null?void 0:Vy(r,e);return s===void 0?t:s}function Gy(r,e){for(var t=-1,s=e.length,n=r.length;++t<s;)r[n+t]=e[t];return r}var Ny=ao(Object.getPrototypeOf,Object);function zy(){this.__data__=new se,this.size=0}function Ly(r){var e=this.__data__,t=e.delete(r);return this.size=e.size,t}function Wy(r){return this.__data__.get(r)}function Hy(r){return this.__data__.has(r)}var Jy=200;function Zy(r,e){var t=this.__data__;if(t instanceof se){var s=t.__data__;if(!lt||s.length<Jy-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 se(r);this.size=e.size}Ke.prototype.clear=zy,Ke.prototype.delete=Ly,Ke.prototype.get=Wy,Ke.prototype.has=Hy,Ke.prototype.set=Zy;var lo=typeof exports=="object"&&exports&&!exports.nodeType&&exports,co=lo&&typeof module=="object"&&module&&!module.nodeType&&module,Xy=co&&co.exports===lo,uo=Xy?J.Buffer:void 0;uo&&uo.allocUnsafe;function Yy(r,e){return r.slice()}function eg(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 tg(){return[]}var rg=Object.prototype,sg=rg.propertyIsEnumerable,fo=Object.getOwnPropertySymbols,ng=fo?function(r){return r==null?[]:(r=Object(r),eg(fo(r),function(e){return sg.call(r,e)}))}:tg;function og(r,e,t){var s=e(r);return Te(r)?s:Gy(s,t(r))}function ig(r){return og(r,oy,ng)}var Or=be(J,"DataView"),Kr=be(J,"Promise"),Fr=be(J,"Set"),ho="[object Map]",ag="[object Object]",po="[object Promise]",yo="[object Set]",go="[object WeakMap]",mo="[object DataView]",lg=ve(Or),cg=ve(lt),ug=ve(Kr),dg=ve(Fr),fg=ve(Mr),ne=Ie;(Or&&ne(new Or(new ArrayBuffer(1)))!=mo||lt&&ne(new lt)!=ho||Kr&&ne(Kr.resolve())!=po||Fr&&ne(new Fr)!=yo||Mr&&ne(new Mr)!=go)&&(ne=function(r){var e=Ie(r),t=e==ag?r.constructor:void 0,s=t?ve(t):"";if(s)switch(s){case lg:return mo;case cg:return ho;case ug:return po;case dg:return yo;case fg:return go}return e});var hg=Object.prototype,pg=hg.hasOwnProperty;function yg(r){var e=r.length,t=new r.constructor(e);return e&&typeof r[0]=="string"&&pg.call(r,"index")&&(t.index=r.index,t.input=r.input),t}var vo=J.Uint8Array;function qr(r){var e=new r.constructor(r.byteLength);return new vo(e).set(new vo(r)),e}function gg(r,e){var t=qr(r.buffer);return new r.constructor(t,r.byteOffset,r.byteLength)}var mg=/\w*$/;function vg(r){var e=new r.constructor(r.source,mg.exec(r));return e.lastIndex=r.lastIndex,e}var bo=le?le.prototype:void 0,ko=bo?bo.valueOf:void 0;function bg(r){return ko?Object(ko.call(r)):{}}function kg(r,e){var t=qr(r.buffer);return new r.constructor(t,r.byteOffset,r.length)}var Ag="[object Boolean]",wg="[object Date]",$g="[object Map]",Cg="[object Number]",_g="[object RegExp]",Dg="[object Set]",xg="[object String]",Pg="[object Symbol]",jg="[object ArrayBuffer]",Rg="[object DataView]",Eg="[object Float32Array]",Mg="[object Float64Array]",Ig="[object Int8Array]",Sg="[object Int16Array]",Tg="[object Int32Array]",Og="[object Uint8Array]",Kg="[object Uint8ClampedArray]",Fg="[object Uint16Array]",qg="[object Uint32Array]";function Qg(r,e,t){var s=r.constructor;switch(e){case jg:return qr(r);case Ag:case wg:return new s(+r);case Rg:return gg(r);case Eg:case Mg:case Ig:case Sg:case Tg:case Og:case Kg:case Fg:case qg:return kg(r);case $g:return new s;case Cg:case xg:return new s(r);case _g:return vg(r);case Dg:return new s;case Pg:return bg(r)}}function Bg(r){return typeof r.constructor=="function"&&!Xn(r)?op(Ny(r)):{}}var Vg="[object Map]";function Ug(r){return Se(r)&&ne(r)==Vg}var Ao=Oe&&Oe.isMap,Gg=Ao?Ir(Ao):Ug,Ng="[object Set]";function zg(r){return Se(r)&&ne(r)==Ng}var wo=Oe&&Oe.isSet,Lg=wo?Ir(wo):zg,$o="[object Arguments]",Wg="[object Array]",Hg="[object Boolean]",Jg="[object Date]",Zg="[object Error]",Co="[object Function]",Xg="[object GeneratorFunction]",Yg="[object Map]",em="[object Number]",_o="[object Object]",tm="[object RegExp]",rm="[object Set]",sm="[object String]",nm="[object Symbol]",om="[object WeakMap]",im="[object ArrayBuffer]",am="[object DataView]",lm="[object Float32Array]",cm="[object Float64Array]",um="[object Int8Array]",dm="[object Int16Array]",fm="[object Int32Array]",hm="[object Uint8Array]",pm="[object Uint8ClampedArray]",ym="[object Uint16Array]",gm="[object Uint32Array]",A={};A[$o]=A[Wg]=A[im]=A[am]=A[Hg]=A[Jg]=A[lm]=A[cm]=A[um]=A[dm]=A[fm]=A[Yg]=A[em]=A[_o]=A[tm]=A[rm]=A[sm]=A[nm]=A[hm]=A[pm]=A[ym]=A[gm]=!0,A[Zg]=A[Co]=A[om]=!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=yg(r);else{var l=ne(r),c=l==Co||l==Xg;if(no(r))return Yy(r);if(l==_o||l==$o||c&&!n)i=c?{}:Bg(r);else{if(!A[l])return n?r:{};i=Qg(r,l)}}o||(o=new Ke);var u=o.get(r);if(u)return u;o.set(r,i),Lg(r)?r.forEach(function(h){i.add(Ot(h,e,t,h,r,o))}):Gg(r)&&r.forEach(function(h,p){i.set(p,Ot(h,e,t,p,r,o))});var d=ig,f=a?void 0:d(r);return ip(f||r,function(h,p){f&&(p=h,h=r[p]),hp(i,p,Ot(h,e,t,p,r,o))}),i}var mm=1,vm=4;function bm(r){return Ot(r,mm|vm)}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)}},Do={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 Do[e]<=Do[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 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=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 xo=(r,e)=>e?typeof structuredClone<"u"?structuredClone(r):bm(r):r,Po=(r,e,t,s,n,o)=>{try{const i=!!e.dcuplInitOptions.performance?.clone?.enabled&&!!t.cloneResult,a=xo(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}},jo=r=>(e,t,s)=>{const n=s.value;return s.value=function(...o){const i=K.now(),a=this.cdRef,l=xo(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=>Po(this,a,l,i,c,f)):Po(this,a,l,i,c,d)},s},Kt=(r,e)=>r?(e||(e={}),r.replace(/\$\{(.*?)\}/g,(t,s)=>Uy(e,s.trim(),""))):"";let Am=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(G=>d.push(l?l(G):G)):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 G=this.extractJson(r,g,b);p+=G.value,g+=G.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 Ro(r,e=","){return r&&typeof r=="string"?r.split(e).map(t=>t.trim()):[]}class wm{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"?Ro(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"?Ro(u,h?.separator):void 0;default:return u}}}}getJsonFromCSVString(e,t,s){const n=this.getParserConfig(t,s.options);return new Am().parse(e,n)}}var Eo=typeof global=="object"&&global&&global.Object===Object&&global,$m=typeof self=="object"&&self&&self.Object===Object&&self,Z=Eo||$m||Function("return this")(),Fe=Z.Symbol,Mo=Object.prototype,Cm=Mo.hasOwnProperty,_m=Mo.toString,ct=Fe?Fe.toStringTag:void 0;function Dm(r){var e=Cm.call(r,ct),t=r[ct];try{r[ct]=void 0;var s=!0}catch{}var n=_m.call(r);return s&&(e?r[ct]=t:delete r[ct]),n}var xm=Object.prototype,Pm=xm.toString;function jm(r){return Pm.call(r)}var Rm="[object Null]",Em="[object Undefined]",Io=Fe?Fe.toStringTag:void 0;function ut(r){return r==null?r===void 0?Em:Rm:Io&&Io in Object(r)?Dm(r):jm(r)}function qe(r){return r!=null&&typeof r=="object"}function Mm(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 So(r){return r}var Im="[object AsyncFunction]",Sm="[object Function]",Tm="[object GeneratorFunction]",Om="[object Proxy]";function To(r){if(!Ft(r))return!1;var e=ut(r);return e==Sm||e==Tm||e==Im||e==Om}var Ur=Z["__core-js_shared__"],Oo=(function(){var r=/[^.]+$/.exec(Ur&&Ur.keys&&Ur.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""})();function Km(r){return!!Oo&&Oo in r}var Fm=Function.prototype,qm=Fm.toString;function Ae(r){if(r!=null){try{return qm.call(r)}catch{}try{return r+""}catch{}}return""}var Qm=/[\\^$.*+?()[\]{}|]/g,Bm=/^\[object .+?Constructor\]$/,Vm=Function.prototype,Um=Object.prototype,Gm=Vm.toString,Nm=Um.hasOwnProperty,zm=RegExp("^"+Gm.call(Nm).replace(Qm,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Lm(r){if(!Ft(r)||Km(r))return!1;var e=To(r)?zm:Bm;return e.test(Ae(r))}function Wm(r,e){return r?.[e]}function we(r,e){var t=Wm(r,e);return Lm(t)?t:void 0}var Gr=we(Z,"WeakMap"),Ko=Object.create,Hm=(function(){function r(){}return function(e){if(!Ft(e))return{};if(Ko)return Ko(e);r.prototype=e;var t=new r;return r.prototype=void 0,t}})();function Jm(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 Zm=800,Xm=16,Ym=Date.now;function ev(r){var e=0,t=0;return function(){var s=Ym(),n=Xm-(s-t);if(t=s,n>0){if(++e>=Zm)return arguments[0]}else e=0;return r.apply(void 0,arguments)}}function tv(r){return function(){return r}}var qt=(function(){try{var r=we(Object,"defineProperty");return r({},"",{}),r}catch{}})(),rv=qt?function(r,e){return qt(r,"toString",{configurable:!0,enumerable:!1,value:tv(e),writable:!0})}:So,sv=ev(rv);function nv(r,e){for(var t=-1,s=r==null?0:r.length;++t<s&&e(r[t],t,r)!==!1;);return r}function ov(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 iv(r){return r!==r}function av(r,e,t){for(var s=t-1,n=r.length;++s<n;)if(r[s]===e)return s;return-1}function lv(r,e,t){return e===e?av(r,e,t):ov(r,iv,t)}function cv(r,e){var t=r==null?0:r.length;return!!t&&lv(r,e,0)>-1}var uv=9007199254740991,dv=/^(?:0|[1-9]\d*)$/;function fv(r,e){var t=typeof r;return e=e??uv,!!e&&(t=="number"||t!="symbol"&&dv.test(r))&&r>-1&&r%1==0&&r<e}function hv(r,e,t){e=="__proto__"&&qt?qt(r,e,{configurable:!0,enumerable:!0,value:t,writable:!0}):r[e]=t}function Fo(r,e){return r===e||r!==r&&e!==e}var pv=Object.prototype,yv=pv.hasOwnProperty;function gv(r,e,t){var s=r[e];(!(yv.call(r,e)&&Fo(s,t))||t===void 0&&!(e in r))&&hv(r,e,t)}var qo=Math.max;function mv(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),Jm(r,this,a)}}function vv(r,e){return sv(mv(r,e,So),r+"")}var bv=9007199254740991;function Qo(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=bv}function Bo(r){return r!=null&&Qo(r.length)&&!To(r)}var kv=Object.prototype;function Vo(r){var e=r&&r.constructor,t=typeof e=="function"&&e.prototype||kv;return r===t}function Av(r,e){for(var t=-1,s=Array(r);++t<r;)s[t]=e(t);return s}var wv="[object Arguments]";function Uo(r){return qe(r)&&ut(r)==wv}var Go=Object.prototype,$v=Go.hasOwnProperty,Cv=Go.propertyIsEnumerable,_v=Uo((function(){return arguments})())?Uo:function(r){return qe(r)&&$v.call(r,"callee")&&!Cv.call(r,"callee")};function Dv(){return!1}var No=typeof exports=="object"&&exports&&!exports.nodeType&&exports,zo=No&&typeof module=="object"&&module&&!module.nodeType&&module,xv=zo&&zo.exports===No,Lo=xv?Z.Buffer:void 0,Pv=Lo?Lo.isBuffer:void 0,Wo=Pv||Dv,jv="[object Arguments]",Rv="[object Array]",Ev="[object Boolean]",Mv="[object Date]",Iv="[object Error]",Sv="[object Function]",Tv="[object Map]",Ov="[object Number]",Kv="[object Object]",Fv="[object RegExp]",qv="[object Set]",Qv="[object String]",Bv="[object WeakMap]",Vv="[object ArrayBuffer]",Uv="[object DataView]",Gv="[object Float32Array]",Nv="[object Float64Array]",zv="[object Int8Array]",Lv="[object Int16Array]",Wv="[object Int32Array]",Hv="[object Uint8Array]",Jv="[object Uint8ClampedArray]",Zv="[object Uint16Array]",Xv="[object Uint32Array]",_={};_[Gv]=_[Nv]=_[zv]=_[Lv]=_[Wv]=_[Hv]=_[Jv]=_[Zv]=_[Xv]=!0,_[jv]=_[Rv]=_[Vv]=_[Ev]=_[Uv]=_[Mv]=_[Iv]=_[Sv]=_[Tv]=_[Ov]=_[Kv]=_[Fv]=_[qv]=_[Qv]=_[Bv]=!1;function Yv(r){return qe(r)&&Qo(r.length)&&!!_[ut(r)]}function Nr(r){return function(e){return r(e)}}var Ho=typeof exports=="object"&&exports&&!exports.nodeType&&exports,dt=Ho&&typeof module=="object"&&module&&!module.nodeType&&module,eb=dt&&dt.exports===Ho,zr=eb&&Eo.process,Qe=(function(){try{var r=dt&&dt.require&&dt.require("util").types;return r||zr&&zr.binding&&zr.binding("util")}catch{}})(),Jo=Qe&&Qe.isTypedArray,tb=Jo?Nr(Jo):Yv,rb=Object.prototype,sb=rb.hasOwnProperty;function nb(r,e){var t=Vr(r),s=!t&&_v(r),n=!t&&!s&&Wo(r),o=!t&&!s&&!n&&tb(r),i=t||s||n||o,a=i?Av(r.length,String):[],l=a.length;for(var c in r)sb.call(r,c)&&!(i&&(c=="length"||n&&(c=="offset"||c=="parent")||o&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||fv(c,l)))&&a.push(c);return a}function Zo(r,e){return function(t){return r(e(t))}}var ob=Zo(Object.keys,Object),ib=Object.prototype,ab=ib.hasOwnProperty;function lb(r){if(!Vo(r))return ob(r);var e=[];for(var t in Object(r))ab.call(r,t)&&t!="constructor"&&e.push(t);return e}function cb(r){return Bo(r)?nb(r):lb(r)}var ft=we(Object,"create");function ub(){this.__data__=ft?ft(null):{},this.size=0}function db(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}var fb="__lodash_hash_undefined__",hb=Object.prototype,pb=hb.hasOwnProperty;function yb(r){var e=this.__data__;if(ft){var t=e[r];return t===fb?void 0:t}return pb.call(e,r)?e[r]:void 0}var gb=Object.prototype,mb=gb.hasOwnProperty;function vb(r){var e=this.__data__;return ft?e[r]!==void 0:mb.call(e,r)}var bb="__lodash_hash_undefined__";function kb(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=ft&&e===void 0?bb: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=ub,$e.prototype.delete=db,$e.prototype.get=yb,$e.prototype.has=vb,$e.prototype.set=kb;function Ab(){this.__data__=[],this.size=0}function Qt(r,e){for(var t=r.length;t--;)if(Fo(r[t][0],e))return t;return-1}var wb=Array.prototype,$b=wb.splice;function Cb(r){var e=this.__data__,t=Qt(e,r);if(t<0)return!1;var s=e.length-1;return t==s?e.pop():$b.call(e,t,1),--this.size,!0}function _b(r){var e=this.__data__,t=Qt(e,r);return t<0?void 0:e[t][1]}function Db(r){return Qt(this.__data__,r)>-1}function xb(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 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=Ab,oe.prototype.delete=Cb,oe.prototype.get=_b,oe.prototype.has=Db,oe.prototype.set=xb;var ht=we(Z,"Map");function Pb(){this.size=0,this.__data__={hash:new $e,map:new(ht||oe),string:new $e}}function jb(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 jb(e)?t[typeof e=="string"?"string":"hash"]:t.map}function Rb(r){var e=Bt(this,r).delete(r);return this.size-=e?1:0,e}function Eb(r){return Bt(this,r).get(r)}function Mb(r){return Bt(this,r).has(r)}function Ib(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=Pb,Ce.prototype.delete=Rb,Ce.prototype.get=Eb,Ce.prototype.has=Mb,Ce.prototype.set=Ib;function Sb(r,e){for(var t=-1,s=e.length,n=r.length;++t<s;)r[n+t]=e[t];return r}var Tb=Zo(Object.getPrototypeOf,Object);function Ob(){this.__data__=new oe,this.size=0}function Kb(r){var e=this.__data__,t=e.delete(r);return this.size=e.size,t}function Fb(r){return this.__data__.get(r)}function qb(r){return this.__data__.has(r)}var Qb=200;function Bb(r,e){var t=this.__data__;if(t instanceof oe){var s=t.__data__;if(!ht||s.length<Qb-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 oe(r);this.size=e.size}Be.prototype.clear=Ob,Be.prototype.delete=Kb,Be.prototype.get=Fb,Be.prototype.has=qb,Be.prototype.set=Bb;var Xo=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Yo=Xo&&typeof module=="object"&&module&&!module.nodeType&&module,Vb=Yo&&Yo.exports===Xo,ei=Vb?Z.Buffer:void 0;ei&&ei.allocUnsafe;function Ub(r,e){return r.slice()}function Gb(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 Nb(){return[]}var zb=Object.prototype,Lb=zb.propertyIsEnumerable,ti=Object.getOwnPropertySymbols,Wb=ti?function(r){return r==null?[]:(r=Object(r),Gb(ti(r),function(e){return Lb.call(r,e)}))}:Nb;function Hb(r,e,t){var s=e(r);return Vr(r)?s:Sb(s,t(r))}function Jb(r){return Hb(r,cb,Wb)}var Lr=we(Z,"DataView"),Wr=we(Z,"Promise"),Hr=we(Z,"Set"),ri="[object Map]",Zb="[object Object]",si="[object Promise]",ni="[object Set]",oi="[object WeakMap]",ii="[object DataView]",Xb=Ae(Lr),Yb=Ae(ht),ek=Ae(Wr),tk=Ae(Hr),rk=Ae(Gr),ie=ut;(Lr&&ie(new Lr(new ArrayBuffer(1)))!=ii||ht&&ie(new ht)!=ri||Wr&&ie(Wr.resolve())!=si||Hr&&ie(new Hr)!=ni||Gr&&ie(new Gr)!=oi)&&(ie=function(r){var e=ut(r),t=e==Zb?r.constructor:void 0,s=t?Ae(t):"";if(s)switch(s){case Xb:return ii;case Yb:return ri;case ek:return si;case tk:return ni;case rk:return oi}return e});var sk=Object.prototype,nk=sk.hasOwnProperty;function ok(r){var e=r.length,t=new r.constructor(e);return e&&typeof r[0]=="string"&&nk.call(r,"index")&&(t.index=r.index,t.input=r.input),t}var ai=Z.Uint8Array;function Jr(r){var e=new r.constructor(r.byteLength);return new ai(e).set(new ai(r)),e}function ik(r,e){var t=Jr(r.buffer);return new r.constructor(t,r.byteOffset,r.byteLength)}var ak=/\w*$/;function lk(r){var e=new r.constructor(r.source,ak.exec(r));return e.lastIndex=r.lastIndex,e}var li=Fe?Fe.prototype:void 0,ci=li?li.valueOf:void 0;function ck(r){return ci?Object(ci.call(r)):{}}function uk(r,e){var t=Jr(r.buffer);return new r.constructor(t,r.byteOffset,r.length)}var dk="[object Boolean]",fk="[object Date]",hk="[object Map]",pk="[object Number]",yk="[object RegExp]",gk="[object Set]",mk="[object String]",vk="[object Symbol]",bk="[object ArrayBuffer]",kk="[object DataView]",Ak="[object Float32Array]",wk="[object Float64Array]",$k="[object Int8Array]",Ck="[object Int16Array]",_k="[object Int32Array]",Dk="[object Uint8Array]",xk="[object Uint8ClampedArray]",Pk="[object Uint16Array]",jk="[object Uint32Array]";function Rk(r,e,t){var s=r.constructor;switch(e){case bk:return Jr(r);case dk:case fk:return new s(+r);case kk:return ik(r);case Ak:case wk:case $k:case Ck:case _k:case Dk:case xk:case Pk:case jk:return uk(r);case hk:return new s;case pk:case mk:return new s(r);case yk:return lk(r);case gk:return new s;case vk:return ck(r)}}function Ek(r){return typeof r.constructor=="function"&&!Vo(r)?Hm(Tb(r)):{}}var Mk="[object Map]";function Ik(r){return qe(r)&&ie(r)==Mk}var ui=Qe&&Qe.isMap,Sk=ui?Nr(ui):Ik,Tk="[object Set]";function Ok(r){return qe(r)&&ie(r)==Tk}var di=Qe&&Qe.isSet,Kk=di?Nr(di):Ok,fi="[object Arguments]",Fk="[object Array]",qk="[object Boolean]",Qk="[object Date]",Bk="[object Error]",hi="[object Function]",Vk="[object GeneratorFunction]",Uk="[object Map]",Gk="[object Number]",pi="[object Object]",Nk="[object RegExp]",zk="[object Set]",Lk="[object String]",Wk="[object Symbol]",Hk="[object WeakMap]",Jk="[object ArrayBuffer]",Zk="[object DataView]",Xk="[object Float32Array]",Yk="[object Float64Array]",eA="[object Int8Array]",tA="[object Int16Array]",rA="[object Int32Array]",sA="[object Uint8Array]",nA="[object Uint8ClampedArray]",oA="[object Uint16Array]",iA="[object Uint32Array]",w={};w[fi]=w[Fk]=w[Jk]=w[Zk]=w[qk]=w[Qk]=w[Xk]=w[Yk]=w[eA]=w[tA]=w[rA]=w[Uk]=w[Gk]=w[pi]=w[Nk]=w[zk]=w[Lk]=w[Wk]=w[sA]=w[nA]=w[oA]=w[iA]=!0,w[Bk]=w[hi]=w[Hk]=!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=ok(r);else{var l=ie(r),c=l==hi||l==Vk;if(Wo(r))return Ub(r);if(l==pi||l==fi||c&&!n)i=c?{}:Ek(r);else{if(!w[l])return n?r:{};i=Rk(r,l)}}o||(o=new Be);var u=o.get(r);if(u)return u;o.set(r,i),Kk(r)?r.forEach(function(h){i.add(Vt(h,e,t,h,r,o))}):Sk(r)&&r.forEach(function(h,p){i.set(p,Vt(h,e,t,p,r,o))});var d=Jb,f=a?void 0:d(r);return nv(f||r,function(h,p){f&&(p=h,h=r[p]),gv(i,p,Vt(h,e,t,p,r,o))}),i}var aA=1,lA=4;function pt(r){return Vt(r,aA|lA)}var cA="__lodash_hash_undefined__";function uA(r){return this.__data__.set(r,cA),this}function dA(r){return this.__data__.has(r)}function Ut(r){var e=-1,t=r==null?0:r.length;for(this.__data__=new Ce;++e<t;)this.add(r[e])}Ut.prototype.add=Ut.prototype.push=uA,Ut.prototype.has=dA;function yi(r,e){return r.has(e)}function fA(r){return qe(r)&&Bo(r)}var hA=Math.min;function pA(r,e,t){for(var s=cv,n=r[0].length,o=r.length,i=o,a=Array(o),l=1/0,c=[];i--;){var u=r[i];l=hA(u.length,l),a[i]=n>=120&&u.length>=120?new Ut(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?yi(f,p):s(c,p))){for(i=o;--i;){var y=a[i];if(!(y?yi(y,p):s(r[i],p)))continue e}f&&f.push(p),c.push(h)}}return c}function yA(r){return fA(r)?r:[]}var gi=vv(function(r){var e=Mm(r,yA);return e.length&&e[0]===r[0]?pA(e):[]});class mi{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 gA=Object.defineProperty,mA=Object.getOwnPropertyDescriptor,vi=(r,e,t,s)=>{for(var n=mA(e,t),o=r.length-1,i;o>=0;o--)(i=r[o])&&(n=i(e,t,n)||n);return n&&gA(e,t,n),n};const vA={missingModelHandling:{autoGenerateProperties:!0},defaultDataContainerUpdateType:"set",csvParserOptions:{delimiter:"",quoteChar:'"',escapeChar:'"',commentChar:void 0}};let Zr=class{key;core;cdRef=new km;log=Qr.child({prefix:"AppLoader"});registeredTransformers=[];options=vA;csvParser=new wm(this);currentConfig;globalVariables=new Map;defaultVariables=new Map;progressListeners=new Set;currentProcessOptions;currentContext="";progressHandler=new mi;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=>gi(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||[]),G=K.now();let gt=[],Gt=this.core.modelParser.unprocessedModelDescriptions.get(a.model);!Gt&&(t?.missingModelHandling?.autoGenerateProperties||a.options?.autoGenerateProperties)&&(this.addModelOrView(a,{key:a.model,autoGenerateProperties:!0,autoGenerateKey:a.options?.autoGenerateKey||!1,keyProperty:a?.options?.keyProperty||"key"}),Gt=this.core.modelParser.unprocessedModelDescriptions.get(a.model));const AA=K.now();a.url.endsWith(".csv")||y?.includes("text/csv")?Gt&&(gt=this.csvParser.getJsonFromCSVString(B,Gt,a)):gt=B;const wA=K.now(),$A=K.now();try{gt=this.handleTransformerLogic(gt,a,"parsedFileTransformer",o||[])}catch(ae){this.log.error("Transformer error",ae,{resource:a.url,model:a.model})}const CA=K.now(),bi={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 ae=Xr[0],DA={name:a.url,type:"resource",createdAt:new Date().getTime(),value:{model:a.model,type:"data",start:u,startTime:ae.startTime,requestStart:ae.requestStart,responseEnd:ae.responseEnd,responseStart:ae.responseStart,duration:ae.duration,parseEnd:b,rawTransformStart:x,rawTransformEnd:G,parseStart:m,csvToJsonStart:AA,csvToJsonEnd:wA,parsedTransformStart:$A,parsedTransformEnd:CA,decodedBodySize:ae.decodedBodySize,encodedBodySize:ae.encodedBodySize,end:b}};this.core.analyticsController.set({value:DA,context:this.currentContext})}this.core.updateRegisteredContainer(bi);const _A=this.progressHandler.update(a,!0,"data",d);return this.updateProgressListeners(_A),Promise.resolve(bi)}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 mi,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)),gi(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)}};vi([jo({scope:"global",origin:"loader",type:"loader_config_fetched",connectMessage:!0,connectMessageResult:!0})],Zr.prototype,"fetchConfig"),vi([jo({scope:"global",origin:"loader",type:"loader_processed",connectMessage:!0})],Zr.prototype,"process");const bA=Zr;let yt,Ve;async function kA(r){return yt=new Eh(r.options),Ve=new bA,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=kA})();
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