@dcupl/bundle 2.0.0-beta.3 → 2.0.0-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dcupl.bundle.js +350 -334
- package/dist/dcupl.bundle.js.map +1 -1
- package/dist/dcupl.bundle.min.js +8 -8
- package/dist/dcupl.bundle.min.js.map +1 -1
- package/package.json +4 -4
package/dist/dcupl.bundle.min.js
CHANGED
|
@@ -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
|
|
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 M=typeof globalThis<"u"&&globalThis||typeof self<"u"&&self||typeof global<"u"&&global||{},T={searchParams:"URLSearchParams"in M,iterable:"Symbol"in M&&"iterator"in Symbol,blob:"FileReader"in M&&"Blob"in M&&(function(){try{return new Blob,!0}catch{return!1}})(),formData:"FormData"in M,arrayBuffer:"ArrayBuffer"in M};function wi(r){return r&&DataView.prototype.isPrototypeOf(r)}if(T.arrayBuffer)var $i=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],Ci=ArrayBuffer.isView||function(r){return r&&$i.indexOf(Object.prototype.toString.call(r))>-1};function _e(r){if(typeof r!="string"&&(r=String(r)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(r)||r==="")throw new TypeError('Invalid character in header field name: "'+r+'"');return r.toLowerCase()}function Nt(r){return typeof r!="string"&&(r=String(r)),r}function zt(r){var e={next:function(){var t=r.shift();return{done:t===void 0,value:t}}};return T.iterable&&(e[Symbol.iterator]=function(){return e}),e}function P(r){this.map={},r instanceof P?r.forEach(function(e,t){this.append(t,e)},this):Array.isArray(r)?r.forEach(function(e){if(e.length!=2)throw new TypeError("Headers constructor: expected name/value pair to be length 2, found"+e.length);this.append(e[0],e[1])},this):r&&Object.getOwnPropertyNames(r).forEach(function(e){this.append(e,r[e])},this)}P.prototype.append=function(r,e){r=_e(r),e=Nt(e);var t=this.map[r];this.map[r]=t?t+", "+e:e},P.prototype.delete=function(r){delete this.map[_e(r)]},P.prototype.get=function(r){return r=_e(r),this.has(r)?this.map[r]:null},P.prototype.has=function(r){return this.map.hasOwnProperty(_e(r))},P.prototype.set=function(r,e){this.map[_e(r)]=Nt(e)},P.prototype.forEach=function(r,e){for(var t in this.map)this.map.hasOwnProperty(t)&&r.call(e,this.map[t],t,this)},P.prototype.keys=function(){var r=[];return this.forEach(function(e,t){r.push(t)}),zt(r)},P.prototype.values=function(){var r=[];return this.forEach(function(e){r.push(e)}),zt(r)},P.prototype.entries=function(){var r=[];return this.forEach(function(e,t){r.push([t,e])}),zt(r)},T.iterable&&(P.prototype[Symbol.iterator]=P.prototype.entries);function Lt(r){if(!r._noBody){if(r.bodyUsed)return Promise.reject(new TypeError("Already read"));r.bodyUsed=!0}}function Yr(r){return new Promise(function(e,t){r.onload=function(){e(r.result)},r.onerror=function(){t(r.error)}})}function _i(r){var e=new FileReader,t=Yr(e);return e.readAsArrayBuffer(r),t}function Di(r){var e=new FileReader,t=Yr(e),s=/charset=([A-Za-z0-9_-]+)/.exec(r.type),n=s?s[1]:"utf-8";return e.readAsText(r,n),t}function xi(r){for(var e=new Uint8Array(r),t=new Array(e.length),s=0;s<e.length;s++)t[s]=String.fromCharCode(e[s]);return t.join("")}function es(r){if(r.slice)return r.slice(0);var e=new Uint8Array(r.byteLength);return e.set(new Uint8Array(r)),e.buffer}function ts(){return this.bodyUsed=!1,this._initBody=function(r){this.bodyUsed=this.bodyUsed,this._bodyInit=r,r?typeof r=="string"?this._bodyText=r:T.blob&&Blob.prototype.isPrototypeOf(r)?this._bodyBlob=r:T.formData&&FormData.prototype.isPrototypeOf(r)?this._bodyFormData=r:T.searchParams&&URLSearchParams.prototype.isPrototypeOf(r)?this._bodyText=r.toString():T.arrayBuffer&&T.blob&&wi(r)?(this._bodyArrayBuffer=es(r.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):T.arrayBuffer&&(ArrayBuffer.prototype.isPrototypeOf(r)||Ci(r))?this._bodyArrayBuffer=es(r):this._bodyText=r=Object.prototype.toString.call(r):(this._noBody=!0,this._bodyText=""),this.headers.get("content-type")||(typeof r=="string"?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):T.searchParams&&URLSearchParams.prototype.isPrototypeOf(r)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},T.blob&&(this.blob=function(){var r=Lt(this);if(r)return r;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))}),this.arrayBuffer=function(){if(this._bodyArrayBuffer){var r=Lt(this);return r||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer))}else{if(T.blob)return this.blob().then(_i);throw new Error("could not read as ArrayBuffer")}},this.text=function(){var r=Lt(this);if(r)return r;if(this._bodyBlob)return Di(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(xi(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},T.formData&&(this.formData=function(){return this.text().then(Ri)}),this.json=function(){return this.text().then(JSON.parse)},this}var Pi=["CONNECT","DELETE","GET","HEAD","OPTIONS","PATCH","POST","PUT","TRACE"];function ji(r){var e=r.toUpperCase();return Pi.indexOf(e)>-1?e:r}function ue(r,e){if(!(this instanceof ue))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');e=e||{};var t=e.body;if(r instanceof ue){if(r.bodyUsed)throw new TypeError("Already read");this.url=r.url,this.credentials=r.credentials,e.headers||(this.headers=new P(r.headers)),this.method=r.method,this.mode=r.mode,this.signal=r.signal,!t&&r._bodyInit!=null&&(t=r._bodyInit,r.bodyUsed=!0)}else this.url=String(r);if(this.credentials=e.credentials||this.credentials||"same-origin",(e.headers||!this.headers)&&(this.headers=new P(e.headers)),this.method=ji(e.method||this.method||"GET"),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal||(function(){if("AbortController"in M){var o=new AbortController;return o.signal}})(),this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&t)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(t),(this.method==="GET"||this.method==="HEAD")&&(e.cache==="no-store"||e.cache==="no-cache")){var s=/([?&])_=[^&]*/;if(s.test(this.url))this.url=this.url.replace(s,"$1_="+new Date().getTime());else{var n=/\?/;this.url+=(n.test(this.url)?"&":"?")+"_="+new Date().getTime()}}}ue.prototype.clone=function(){return new ue(this,{body:this._bodyInit})};function Ri(r){var e=new FormData;return r.trim().split("&").forEach(function(t){if(t){var s=t.split("="),n=s.shift().replace(/\+/g," "),o=s.join("=").replace(/\+/g," ");e.append(decodeURIComponent(n),decodeURIComponent(o))}}),e}function Ei(r){var e=new P,t=r.replace(/\r?\n[\t ]+/g," ");return t.split("\r").map(function(s){return s.indexOf(`
|
|
2
|
+
`)===0?s.substr(1,s.length):s}).forEach(function(s){var n=s.split(":"),o=n.shift().trim();if(o){var i=n.join(":").trim();try{e.append(o,i)}catch(a){console.warn("Response "+a.message)}}}),e}ts.call(ue.prototype);function H(r,e){if(!(this instanceof H))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');if(e||(e={}),this.type="default",this.status=e.status===void 0?200:e.status,this.status<200||this.status>599)throw new RangeError("Failed to construct 'Response': The status provided (0) is outside the range [200, 599].");this.ok=this.status>=200&&this.status<300,this.statusText=e.statusText===void 0?"":""+e.statusText,this.headers=new P(e.headers),this.url=e.url||"",this._initBody(r)}ts.call(H.prototype),H.prototype.clone=function(){return new H(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new P(this.headers),url:this.url})},H.error=function(){var r=new H(null,{status:200,statusText:""});return r.ok=!1,r.status=0,r.type="error",r};var Mi=[301,302,303,307,308];H.redirect=function(r,e){if(Mi.indexOf(e)===-1)throw new RangeError("Invalid status code");return new H(null,{status:e,headers:{location:r}})};var de=M.DOMException;try{new de}catch{de=function(e,t){this.message=e,this.name=t;var s=Error(e);this.stack=s.stack},de.prototype=Object.create(Error.prototype),de.prototype.constructor=de}function rs(r,e){return new Promise(function(t,s){var n=new ue(r,e);if(n.signal&&n.signal.aborted)return s(new de("Aborted","AbortError"));var o=new XMLHttpRequest;function i(){o.abort()}o.onload=function(){var c={statusText:o.statusText,headers:Ei(o.getAllResponseHeaders()||"")};n.url.indexOf("file://")===0&&(o.status<200||o.status>599)?c.status=200:c.status=o.status,c.url="responseURL"in o?o.responseURL:c.headers.get("X-Request-URL");var u="response"in o?o.response:o.responseText;setTimeout(function(){t(new H(u,c))},0)},o.onerror=function(){setTimeout(function(){s(new TypeError("Network request failed"))},0)},o.ontimeout=function(){setTimeout(function(){s(new TypeError("Network request timed out"))},0)},o.onabort=function(){setTimeout(function(){s(new de("Aborted","AbortError"))},0)};function a(c){try{return c===""&&M.location.href?M.location.href:c}catch{return c}}if(o.open(n.method,a(n.url),!0),n.credentials==="include"?o.withCredentials=!0:n.credentials==="omit"&&(o.withCredentials=!1),"responseType"in o&&(T.blob?o.responseType="blob":T.arrayBuffer&&(o.responseType="arraybuffer")),e&&typeof e.headers=="object"&&!(e.headers instanceof P||M.Headers&&e.headers instanceof M.Headers)){var l=[];Object.getOwnPropertyNames(e.headers).forEach(function(c){l.push(_e(c)),o.setRequestHeader(c,Nt(e.headers[c]))}),n.headers.forEach(function(c,u){l.indexOf(u)===-1&&o.setRequestHeader(u,c)})}else n.headers.forEach(function(c,u){o.setRequestHeader(u,c)});n.signal&&(n.signal.addEventListener("abort",i),o.onreadystatechange=function(){o.readyState===4&&n.signal.removeEventListener("abort",i)}),o.send(typeof n._bodyInit>"u"?null:n._bodyInit)})}rs.polyfill=!0,M.fetch||(M.fetch=rs,M.Headers=P,M.Request=ue,M.Response=H);var ss=typeof global=="object"&&global&&global.Object===Object&&global,Ii=typeof self=="object"&&self&&self.Object===Object&&self,J=ss||Ii||Function("return this")(),V=J.Symbol,ns=Object.prototype,Si=ns.hasOwnProperty,Ti=ns.toString,Ge=V?V.toStringTag:void 0;function Oi(r){var e=Si.call(r,Ge),t=r[Ge];try{r[Ge]=void 0;var s=!0}catch{}var n=Ti.call(r);return s&&(e?r[Ge]=t:delete r[Ge]),n}var Ki=Object.prototype,Fi=Ki.toString;function qi(r){return Fi.call(r)}var Qi="[object Null]",Bi="[object Undefined]",os=V?V.toStringTag:void 0;function Y(r){return r==null?r===void 0?Bi:Qi:os&&os in Object(r)?Oi(r):qi(r)}function O(r){return r!=null&&typeof r=="object"}var Vi="[object Symbol]";function De(r){return typeof r=="symbol"||O(r)&&Y(r)==Vi}function xe(r,e){for(var t=-1,s=r==null?0:r.length,n=Array(s);++t<s;)n[t]=e(r[t],t,r);return n}var j=Array.isArray,is=V?V.prototype:void 0,as=is?is.toString:void 0;function mt(r){if(typeof r=="string")return r;if(j(r))return xe(r,mt)+"";if(De(r))return as?as.call(r):"";var e=r+"";return e=="0"&&1/r==-1/0?"-0":e}var Gi=/\s/;function Ui(r){for(var e=r.length;e--&&Gi.test(r.charAt(e)););return e}var Ni=/^\s+/;function zi(r){return r&&r.slice(0,Ui(r)+1).replace(Ni,"")}function N(r){var e=typeof r;return r!=null&&(e=="object"||e=="function")}var ls=NaN,Li=/^[-+]0x[0-9a-f]+$/i,Wi=/^0b[01]+$/i,Hi=/^0o[0-7]+$/i,Ji=parseInt;function Zi(r){if(typeof r=="number")return r;if(De(r))return ls;if(N(r)){var e=typeof r.valueOf=="function"?r.valueOf():r;r=N(e)?e+"":e}if(typeof r!="string")return r===0?r:+r;r=zi(r);var t=Wi.test(r);return t||Hi.test(r)?Ji(r.slice(2),t?2:8):Li.test(r)?ls:+r}var cs=1/0,Xi=17976931348623157e292;function Yi(r){if(!r)return r===0?r:0;if(r=Zi(r),r===cs||r===-cs){var e=r<0?-1:1;return e*Xi}return r===r?r:0}function vt(r){var e=Yi(r),t=e%1;return e===e?t?e-t:e:0}function bt(r){return r}var ea="[object AsyncFunction]",ta="[object Function]",ra="[object GeneratorFunction]",sa="[object Proxy]";function Wt(r){if(!N(r))return!1;var e=Y(r);return e==ta||e==ra||e==ea||e==sa}var Ht=J["__core-js_shared__"],us=(function(){var r=/[^.]+$/.exec(Ht&&Ht.keys&&Ht.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""})();function na(r){return!!us&&us in r}var oa=Function.prototype,ia=oa.toString;function fe(r){if(r!=null){try{return ia.call(r)}catch{}try{return r+""}catch{}}return""}var aa=/[\\^$.*+?()[\]{}|]/g,la=/^\[object .+?Constructor\]$/,ca=Function.prototype,ua=Object.prototype,da=ca.toString,fa=ua.hasOwnProperty,ha=RegExp("^"+da.call(fa).replace(aa,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function pa(r){if(!N(r)||na(r))return!1;var e=Wt(r)?ha:la;return e.test(fe(r))}function ya(r,e){return r?.[e]}function he(r,e){var t=ya(r,e);return pa(t)?t:void 0}var Jt=he(J,"WeakMap"),ds=Object.create,ga=(function(){function r(){}return function(e){if(!N(e))return{};if(ds)return ds(e);r.prototype=e;var t=new r;return r.prototype=void 0,t}})();function ma(r,e,t){switch(t.length){case 0:return r.call(e);case 1:return r.call(e,t[0]);case 2:return r.call(e,t[0],t[1]);case 3:return r.call(e,t[0],t[1],t[2])}return r.apply(e,t)}var va=800,ba=16,ka=Date.now;function Aa(r){var e=0,t=0;return function(){var s=ka(),n=ba-(s-t);if(t=s,n>0){if(++e>=va)return arguments[0]}else e=0;return r.apply(void 0,arguments)}}function wa(r){return function(){return r}}var kt=(function(){try{var r=he(Object,"defineProperty");return r({},"",{}),r}catch{}})(),$a=kt?function(r,e){return kt(r,"toString",{configurable:!0,enumerable:!1,value:wa(e),writable:!0})}:bt,Ca=Aa($a);function _a(r,e){for(var t=-1,s=r==null?0:r.length;++t<s&&e(r[t],t,r)!==!1;);return r}function fs(r,e,t,s){for(var n=r.length,o=t+-1;++o<n;)if(e(r[o],o,r))return o;return-1}function Da(r){return r!==r}function xa(r,e,t){for(var s=t-1,n=r.length;++s<n;)if(r[s]===e)return s;return-1}function hs(r,e,t){return e===e?xa(r,e,t):fs(r,Da,t)}function Pa(r,e){var t=r==null?0:r.length;return!!t&&hs(r,e,0)>-1}var ja=9007199254740991,Ra=/^(?:0|[1-9]\d*)$/;function Zt(r,e){var t=typeof r;return e=e??ja,!!e&&(t=="number"||t!="symbol"&&Ra.test(r))&&r>-1&&r%1==0&&r<e}function At(r,e,t){e=="__proto__"&&kt?kt(r,e,{configurable:!0,enumerable:!0,value:t,writable:!0}):r[e]=t}function Ue(r,e){return r===e||r!==r&&e!==e}var Ea=Object.prototype,Ma=Ea.hasOwnProperty;function ps(r,e,t){var s=r[e];(!(Ma.call(r,e)&&Ue(s,t))||t===void 0&&!(e in r))&&At(r,e,t)}var ys=Math.max;function Ia(r,e,t){return e=ys(e===void 0?r.length-1:e,0),function(){for(var s=arguments,n=-1,o=ys(s.length-e,0),i=Array(o);++n<o;)i[n]=s[e+n];n=-1;for(var a=Array(e+1);++n<e;)a[n]=s[n];return a[e]=t(i),ma(r,this,a)}}function Xt(r,e){return Ca(Ia(r,e,bt),r+"")}var Sa=9007199254740991;function Yt(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=Sa}function ee(r){return r!=null&&Yt(r.length)&&!Wt(r)}var Ta=Object.prototype;function er(r){var e=r&&r.constructor,t=typeof e=="function"&&e.prototype||Ta;return r===t}function Oa(r,e){for(var t=-1,s=Array(r);++t<r;)s[t]=e(t);return s}var Ka="[object Arguments]";function gs(r){return O(r)&&Y(r)==Ka}var ms=Object.prototype,Fa=ms.hasOwnProperty,qa=ms.propertyIsEnumerable,Ne=gs((function(){return arguments})())?gs:function(r){return O(r)&&Fa.call(r,"callee")&&!qa.call(r,"callee")};function Qa(){return!1}var vs=typeof exports=="object"&&exports&&!exports.nodeType&&exports,bs=vs&&typeof module=="object"&&module&&!module.nodeType&&module,Ba=bs&&bs.exports===vs,ks=Ba?J.Buffer:void 0,Va=ks?ks.isBuffer:void 0,ze=Va||Qa,Ga="[object Arguments]",Ua="[object Array]",Na="[object Boolean]",za="[object Date]",La="[object Error]",Wa="[object Function]",Ha="[object Map]",Ja="[object Number]",Za="[object Object]",Xa="[object RegExp]",Ya="[object Set]",el="[object String]",tl="[object WeakMap]",rl="[object ArrayBuffer]",sl="[object DataView]",nl="[object Float32Array]",ol="[object Float64Array]",il="[object Int8Array]",al="[object Int16Array]",ll="[object Int32Array]",cl="[object Uint8Array]",ul="[object Uint8ClampedArray]",dl="[object Uint16Array]",fl="[object Uint32Array]",$={};$[nl]=$[ol]=$[il]=$[al]=$[ll]=$[cl]=$[ul]=$[dl]=$[fl]=!0,$[Ga]=$[Ua]=$[rl]=$[Na]=$[sl]=$[za]=$[La]=$[Wa]=$[Ha]=$[Ja]=$[Za]=$[Xa]=$[Ya]=$[el]=$[tl]=!1;function hl(r){return O(r)&&Yt(r.length)&&!!$[Y(r)]}function Le(r){return function(e){return r(e)}}var As=typeof exports=="object"&&exports&&!exports.nodeType&&exports,We=As&&typeof module=="object"&&module&&!module.nodeType&&module,pl=We&&We.exports===As,tr=pl&&ss.process,Pe=(function(){try{var r=We&&We.require&&We.require("util").types;return r||tr&&tr.binding&&tr.binding("util")}catch{}})(),ws=Pe&&Pe.isTypedArray,rr=ws?Le(ws):hl,yl=Object.prototype,gl=yl.hasOwnProperty;function $s(r,e){var t=j(r),s=!t&&Ne(r),n=!t&&!s&&ze(r),o=!t&&!s&&!n&&rr(r),i=t||s||n||o,a=i?Oa(r.length,String):[],l=a.length;for(var c in r)(e||gl.call(r,c))&&!(i&&(c=="length"||n&&(c=="offset"||c=="parent")||o&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Zt(c,l)))&&a.push(c);return a}function Cs(r,e){return function(t){return r(e(t))}}var ml=Cs(Object.keys,Object),vl=Object.prototype,bl=vl.hasOwnProperty;function _s(r){if(!er(r))return ml(r);var e=[];for(var t in Object(r))bl.call(r,t)&&t!="constructor"&&e.push(t);return e}function He(r){return ee(r)?$s(r):_s(r)}var kl=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Al=/^\w*$/;function sr(r,e){if(j(r))return!1;var t=typeof r;return t=="number"||t=="symbol"||t=="boolean"||r==null||De(r)?!0:Al.test(r)||!kl.test(r)||e!=null&&r in Object(e)}var Je=he(Object,"create");function wl(){this.__data__=Je?Je(null):{},this.size=0}function $l(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}var Cl="__lodash_hash_undefined__",_l=Object.prototype,Dl=_l.hasOwnProperty;function xl(r){var e=this.__data__;if(Je){var t=e[r];return t===Cl?void 0:t}return Dl.call(e,r)?e[r]:void 0}var Pl=Object.prototype,jl=Pl.hasOwnProperty;function Rl(r){var e=this.__data__;return Je?e[r]!==void 0:jl.call(e,r)}var El="__lodash_hash_undefined__";function Ml(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=Je&&e===void 0?El:e,this}function pe(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}pe.prototype.clear=wl,pe.prototype.delete=$l,pe.prototype.get=xl,pe.prototype.has=Rl,pe.prototype.set=Ml;function Il(){this.__data__=[],this.size=0}function wt(r,e){for(var t=r.length;t--;)if(Ue(r[t][0],e))return t;return-1}var Sl=Array.prototype,Tl=Sl.splice;function Ol(r){var e=this.__data__,t=wt(e,r);if(t<0)return!1;var s=e.length-1;return t==s?e.pop():Tl.call(e,t,1),--this.size,!0}function Kl(r){var e=this.__data__,t=wt(e,r);return t<0?void 0:e[t][1]}function Fl(r){return wt(this.__data__,r)>-1}function ql(r,e){var t=this.__data__,s=wt(t,r);return s<0?(++this.size,t.push([r,e])):t[s][1]=e,this}function te(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}te.prototype.clear=Il,te.prototype.delete=Ol,te.prototype.get=Kl,te.prototype.has=Fl,te.prototype.set=ql;var Ze=he(J,"Map");function Ql(){this.size=0,this.__data__={hash:new pe,map:new(Ze||te),string:new pe}}function Bl(r){var e=typeof r;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?r!=="__proto__":r===null}function $t(r,e){var t=r.__data__;return Bl(e)?t[typeof e=="string"?"string":"hash"]:t.map}function Vl(r){var e=$t(this,r).delete(r);return this.size-=e?1:0,e}function Gl(r){return $t(this,r).get(r)}function Ul(r){return $t(this,r).has(r)}function Nl(r,e){var t=$t(this,r),s=t.size;return t.set(r,e),this.size+=t.size==s?0:1,this}function re(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}re.prototype.clear=Ql,re.prototype.delete=Vl,re.prototype.get=Gl,re.prototype.has=Ul,re.prototype.set=Nl;var zl="Expected a function";function nr(r,e){if(typeof r!="function"||e!=null&&typeof e!="function")throw new TypeError(zl);var t=function(){var s=arguments,n=e?e.apply(this,s):s[0],o=t.cache;if(o.has(n))return o.get(n);var i=r.apply(this,s);return t.cache=o.set(n,i)||o,i};return t.cache=new(nr.Cache||re),t}nr.Cache=re;var Ll=500;function Wl(r){var e=nr(r,function(s){return t.size===Ll&&t.clear(),s}),t=e.cache;return e}var Hl=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Jl=/\\(\\)?/g,Zl=Wl(function(r){var e=[];return r.charCodeAt(0)===46&&e.push(""),r.replace(Hl,function(t,s,n,o){e.push(n?o.replace(Jl,"$1"):s||t)}),e});function or(r){return r==null?"":mt(r)}function Ds(r,e){return j(r)?r:sr(r,e)?[r]:Zl(or(r))}function Ct(r){if(typeof r=="string"||De(r))return r;var e=r+"";return e=="0"&&1/r==-1/0?"-0":e}function ir(r,e){e=Ds(e,r);for(var t=0,s=e.length;r!=null&&t<s;)r=r[Ct(e[t++])];return t&&t==s?r:void 0}function Xe(r,e,t){var s=r==null?void 0:ir(r,e);return s===void 0?t:s}function xs(r,e){for(var t=-1,s=e.length,n=r.length;++t<s;)r[n+t]=e[t];return r}var Ps=V?V.isConcatSpreadable:void 0;function Xl(r){return j(r)||Ne(r)||!!(Ps&&r&&r[Ps])}function js(r,e,t,s,n){var o=-1,i=r.length;for(t||(t=Xl),n||(n=[]);++o<i;){var a=r[o];t(a)&&xs(n,a)}return n}var Rs=Cs(Object.getPrototypeOf,Object),Yl="\\ud800-\\udfff",ec="\\u0300-\\u036f",tc="\\ufe20-\\ufe2f",rc="\\u20d0-\\u20ff",sc=ec+tc+rc,nc="\\ufe0e\\ufe0f",oc="\\u200d",ic=RegExp("["+oc+Yl+sc+nc+"]");function ac(r){return ic.test(r)}function Es(r,e,t){return r===r&&(t!==void 0&&(r=r<=t?r:t),r=r>=e?r:e),r}function lc(){this.__data__=new te,this.size=0}function cc(r){var e=this.__data__,t=e.delete(r);return this.size=e.size,t}function uc(r){return this.__data__.get(r)}function dc(r){return this.__data__.has(r)}var fc=200;function hc(r,e){var t=this.__data__;if(t instanceof te){var s=t.__data__;if(!Ze||s.length<fc-1)return s.push([r,e]),this.size=++t.size,this;t=this.__data__=new re(s)}return t.set(r,e),this.size=t.size,this}function z(r){var e=this.__data__=new te(r);this.size=e.size}z.prototype.clear=lc,z.prototype.delete=cc,z.prototype.get=uc,z.prototype.has=dc,z.prototype.set=hc;var Ms=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Is=Ms&&typeof module=="object"&&module&&!module.nodeType&&module,pc=Is&&Is.exports===Ms,Ss=pc?J.Buffer:void 0,Ts=Ss?Ss.allocUnsafe:void 0;function Os(r,e){if(e)return r.slice();var t=r.length,s=Ts?Ts(t):new r.constructor(t);return r.copy(s),s}function yc(r,e){for(var t=-1,s=r==null?0:r.length,n=0,o=[];++t<s;){var i=r[t];e(i,t,r)&&(o[n++]=i)}return o}function gc(){return[]}var mc=Object.prototype,vc=mc.propertyIsEnumerable,Ks=Object.getOwnPropertySymbols,bc=Ks?function(r){return r==null?[]:(r=Object(r),yc(Ks(r),function(e){return vc.call(r,e)}))}:gc;function kc(r,e,t){var s=e(r);return j(r)?s:xs(s,t(r))}function ar(r){return kc(r,He,bc)}var lr=he(J,"DataView"),cr=he(J,"Promise"),ur=he(J,"Set"),Fs="[object Map]",Ac="[object Object]",qs="[object Promise]",Qs="[object Set]",Bs="[object WeakMap]",Vs="[object DataView]",wc=fe(lr),$c=fe(Ze),Cc=fe(cr),_c=fe(ur),Dc=fe(Jt),G=Y;(lr&&G(new lr(new ArrayBuffer(1)))!=Vs||Ze&&G(new Ze)!=Fs||cr&&G(cr.resolve())!=qs||ur&&G(new ur)!=Qs||Jt&&G(new Jt)!=Bs)&&(G=function(r){var e=Y(r),t=e==Ac?r.constructor:void 0,s=t?fe(t):"";if(s)switch(s){case wc:return Vs;case $c:return Fs;case Cc:return qs;case _c:return Qs;case Dc:return Bs}return e});var xc=Object.prototype,Pc=xc.hasOwnProperty;function jc(r){var e=r.length,t=new r.constructor(e);return e&&typeof r[0]=="string"&&Pc.call(r,"index")&&(t.index=r.index,t.input=r.input),t}var _t=J.Uint8Array;function dr(r){var e=new r.constructor(r.byteLength);return new _t(e).set(new _t(r)),e}function Rc(r,e){var t=dr(r.buffer);return new r.constructor(t,r.byteOffset,r.byteLength)}var Ec=/\w*$/;function Mc(r){var e=new r.constructor(r.source,Ec.exec(r));return e.lastIndex=r.lastIndex,e}var Gs=V?V.prototype:void 0,Us=Gs?Gs.valueOf:void 0;function Ic(r){return Us?Object(Us.call(r)):{}}function Ns(r,e){var t=e?dr(r.buffer):r.buffer;return new r.constructor(t,r.byteOffset,r.length)}var Sc="[object Boolean]",Tc="[object Date]",Oc="[object Map]",Kc="[object Number]",Fc="[object RegExp]",qc="[object Set]",Qc="[object String]",Bc="[object Symbol]",Vc="[object ArrayBuffer]",Gc="[object DataView]",Uc="[object Float32Array]",Nc="[object Float64Array]",zc="[object Int8Array]",Lc="[object Int16Array]",Wc="[object Int32Array]",Hc="[object Uint8Array]",Jc="[object Uint8ClampedArray]",Zc="[object Uint16Array]",Xc="[object Uint32Array]";function Yc(r,e,t){var s=r.constructor;switch(e){case Vc:return dr(r);case Sc:case Tc:return new s(+r);case Gc:return Rc(r);case Uc:case Nc:case zc:case Lc:case Wc:case Hc:case Jc:case Zc:case Xc:return Ns(r,t);case Oc:return new s;case Kc:case Qc:return new s(r);case Fc:return Mc(r);case qc:return new s;case Bc:return Ic(r)}}function zs(r){return typeof r.constructor=="function"&&!er(r)?ga(Rs(r)):{}}var eu="[object Map]";function tu(r){return O(r)&&G(r)==eu}var Ls=Pe&&Pe.isMap,ru=Ls?Le(Ls):tu,su="[object Set]";function nu(r){return O(r)&&G(r)==su}var Ws=Pe&&Pe.isSet,ou=Ws?Le(Ws):nu,iu=1,Hs="[object Arguments]",au="[object Array]",lu="[object Boolean]",cu="[object Date]",uu="[object Error]",Js="[object Function]",du="[object GeneratorFunction]",fu="[object Map]",hu="[object Number]",Zs="[object Object]",pu="[object RegExp]",yu="[object Set]",gu="[object String]",mu="[object Symbol]",vu="[object WeakMap]",bu="[object ArrayBuffer]",ku="[object DataView]",Au="[object Float32Array]",wu="[object Float64Array]",$u="[object Int8Array]",Cu="[object Int16Array]",_u="[object Int32Array]",Du="[object Uint8Array]",xu="[object Uint8ClampedArray]",Pu="[object Uint16Array]",ju="[object Uint32Array]",k={};k[Hs]=k[au]=k[bu]=k[ku]=k[lu]=k[cu]=k[Au]=k[wu]=k[$u]=k[Cu]=k[_u]=k[fu]=k[hu]=k[Zs]=k[pu]=k[yu]=k[gu]=k[mu]=k[Du]=k[xu]=k[Pu]=k[ju]=!0,k[uu]=k[Js]=k[vu]=!1;function Dt(r,e,t,s,n,o){var i,a=e&iu;if(i!==void 0)return i;if(!N(r))return r;var l=j(r);if(l)i=jc(r);else{var c=G(r),u=c==Js||c==du;if(ze(r))return Os(r,a);if(c==Zs||c==Hs||u&&!n)i=u?{}:zs(r);else{if(!k[c])return n?r:{};i=Yc(r,c,a)}}o||(o=new z);var d=o.get(r);if(d)return d;o.set(r,i),ou(r)?r.forEach(function(p){i.add(Dt(p,e,t,p,r,o))}):ru(r)&&r.forEach(function(p,y){i.set(y,Dt(p,e,t,y,r,o))});var f=ar,h=l?void 0:f(r);return _a(h||r,function(p,y){h&&(y=p,p=r[y]),ps(i,y,Dt(p,e,t,y,r,o))}),i}var Ru=1,Eu=4;function se(r){return Dt(r,Ru|Eu)}var Mu="__lodash_hash_undefined__";function Iu(r){return this.__data__.set(r,Mu),this}function Su(r){return this.__data__.has(r)}function Ye(r){var e=-1,t=r==null?0:r.length;for(this.__data__=new re;++e<t;)this.add(r[e])}Ye.prototype.add=Ye.prototype.push=Iu,Ye.prototype.has=Su;function Tu(r,e){for(var t=-1,s=r==null?0:r.length;++t<s;)if(e(r[t],t,r))return!0;return!1}function Xs(r,e){return r.has(e)}var Ou=1,Ku=2;function Ys(r,e,t,s,n,o){var i=t&Ou,a=r.length,l=e.length;if(a!=l&&!(i&&l>a))return!1;var c=o.get(r),u=o.get(e);if(c&&u)return c==e&&u==r;var d=-1,f=!0,h=t&Ku?new Ye:void 0;for(o.set(r,e),o.set(e,r);++d<a;){var p=r[d],y=e[d];if(s)var m=i?s(y,p,d,e,r,o):s(p,y,d,r,e,o);if(m!==void 0){if(m)continue;f=!1;break}if(h){if(!Tu(e,function(g,b){if(!Xs(h,b)&&(p===g||n(p,g,t,s,o)))return h.push(b)})){f=!1;break}}else if(!(p===y||n(p,y,t,s,o))){f=!1;break}}return o.delete(r),o.delete(e),f}function Fu(r){var e=-1,t=Array(r.size);return r.forEach(function(s,n){t[++e]=[n,s]}),t}function qu(r){var e=-1,t=Array(r.size);return r.forEach(function(s){t[++e]=s}),t}var Qu=1,Bu=2,Vu="[object Boolean]",Gu="[object Date]",Uu="[object Error]",Nu="[object Map]",zu="[object Number]",Lu="[object RegExp]",Wu="[object Set]",Hu="[object String]",Ju="[object Symbol]",Zu="[object ArrayBuffer]",Xu="[object DataView]",en=V?V.prototype:void 0,fr=en?en.valueOf:void 0;function Yu(r,e,t,s,n,o,i){switch(t){case Xu:if(r.byteLength!=e.byteLength||r.byteOffset!=e.byteOffset)return!1;r=r.buffer,e=e.buffer;case Zu:return!(r.byteLength!=e.byteLength||!o(new _t(r),new _t(e)));case Vu:case Gu:case zu:return Ue(+r,+e);case Uu:return r.name==e.name&&r.message==e.message;case Lu:case Hu:return r==e+"";case Nu:var a=Fu;case Wu:var l=s&Qu;if(a||(a=qu),r.size!=e.size&&!l)return!1;var c=i.get(r);if(c)return c==e;s|=Bu,i.set(r,e);var u=Ys(a(r),a(e),s,n,o,i);return i.delete(r),u;case Ju:if(fr)return fr.call(r)==fr.call(e)}return!1}var ed=1,td=Object.prototype,rd=td.hasOwnProperty;function sd(r,e,t,s,n,o){var i=t&ed,a=ar(r),l=a.length,c=ar(e),u=c.length;if(l!=u&&!i)return!1;for(var d=l;d--;){var f=a[d];if(!(i?f in e:rd.call(e,f)))return!1}var h=o.get(r),p=o.get(e);if(h&&p)return h==e&&p==r;var y=!0;o.set(r,e),o.set(e,r);for(var m=i;++d<l;){f=a[d];var g=r[f],b=e[f];if(s)var x=i?s(b,g,f,e,r,o):s(g,b,f,r,e,o);if(!(x===void 0?g===b||n(g,b,t,s,o):x)){y=!1;break}m||(m=f=="constructor")}if(y&&!m){var B=r.constructor,U=e.constructor;B!=U&&"constructor"in r&&"constructor"in e&&!(typeof B=="function"&&B instanceof B&&typeof U=="function"&&U instanceof U)&&(y=!1)}return o.delete(r),o.delete(e),y}var nd=1,tn="[object Arguments]",rn="[object Array]",xt="[object Object]",od=Object.prototype,sn=od.hasOwnProperty;function id(r,e,t,s,n,o){var i=j(r),a=j(e),l=i?rn:G(r),c=a?rn:G(e);l=l==tn?xt:l,c=c==tn?xt:c;var u=l==xt,d=c==xt,f=l==c;if(f&&ze(r)){if(!ze(e))return!1;i=!0,u=!1}if(f&&!u)return o||(o=new z),i||rr(r)?Ys(r,e,t,s,n,o):Yu(r,e,l,t,s,n,o);if(!(t&nd)){var h=u&&sn.call(r,"__wrapped__"),p=d&&sn.call(e,"__wrapped__");if(h||p){var y=h?r.value():r,m=p?e.value():e;return o||(o=new z),n(y,m,t,s,o)}}return f?(o||(o=new z),sd(r,e,t,s,n,o)):!1}function et(r,e,t,s,n){return r===e?!0:r==null||e==null||!O(r)&&!O(e)?r!==r&&e!==e:id(r,e,t,s,et,n)}var ad=1,ld=2;function nn(r,e,t,s){var n=t.length,o=n;if(r==null)return!o;for(r=Object(r);n--;){var i=t[n];if(i[2]?i[1]!==r[i[0]]:!(i[0]in r))return!1}for(;++n<o;){i=t[n];var a=i[0],l=r[a],c=i[1];if(i[2]){if(l===void 0&&!(a in r))return!1}else{var u=new z,d;if(!(d===void 0?et(c,l,ad|ld,s,u):d))return!1}}return!0}function on(r){return r===r&&!N(r)}function an(r){for(var e=He(r),t=e.length;t--;){var s=e[t],n=r[s];e[t]=[s,n,on(n)]}return e}function ln(r,e){return function(t){return t==null?!1:t[r]===e&&(e!==void 0||r in Object(t))}}function cd(r){var e=an(r);return e.length==1&&e[0][2]?ln(e[0][0],e[0][1]):function(t){return t===r||nn(t,r,e)}}function ud(r,e){return r!=null&&e in Object(r)}function dd(r,e,t){e=Ds(e,r);for(var s=-1,n=e.length,o=!1;++s<n;){var i=Ct(e[s]);if(!(o=r!=null&&t(r,i)))break;r=r[i]}return o||++s!=n?o:(n=r==null?0:r.length,!!n&&Yt(n)&&Zt(i,n)&&(j(r)||Ne(r)))}function fd(r,e){return r!=null&&dd(r,e,ud)}var hd=1,pd=2;function yd(r,e){return sr(r)&&on(e)?ln(Ct(r),e):function(t){var s=Xe(t,r);return s===void 0&&s===e?fd(t,r):et(e,s,hd|pd)}}function cn(r){return function(e){return e?.[r]}}function gd(r){return function(e){return ir(e,r)}}function md(r){return sr(r)?cn(Ct(r)):gd(r)}function je(r){return typeof r=="function"?r:r==null?bt:typeof r=="object"?j(r)?yd(r[0],r[1]):cd(r):md(r)}function vd(r){return function(e,t,s){for(var n=-1,o=Object(e),i=s(e),a=i.length;a--;){var l=i[++n];if(t(o[l],l,o)===!1)break}return e}}var un=vd();function bd(r,e){return r&&un(r,e,He)}function kd(r,e){return function(t,s){if(t==null)return t;if(!ee(t))return r(t,s);for(var n=t.length,o=-1,i=Object(t);++o<n&&s(i[o],o,i)!==!1;);return t}}var hr=kd(bd);function Re(r){return O(r)&&ee(r)}var Ad=200;function dn(r,e,t,s){var n=-1,o=Pa,i=!0,a=r.length,l=[],c=e.length;if(!a)return l;t&&(e=xe(e,Le(t))),e.length>=Ad&&(o=Xs,i=!1,e=new Ye(e));e:for(;++n<a;){var u=r[n],d=t==null?u:t(u);if(u=u!==0?u:0,i&&d===d){for(var f=c;f--;)if(e[f]===d)continue e;l.push(u)}else o(e,d,s)||l.push(u)}return l}function wd(r){var e=r==null?0:r.length;return e?r[e-1]:void 0}var fn=Xt(function(r,e){var t=wd(e);return Re(t)&&(t=void 0),Re(r)?dn(r,js(e,1,Re),je(t)):[]});function hn(r,e,t){r=or(r),e=mt(e);var s=r.length;t=t===void 0?s:Es(vt(t),0,s);var n=t;return t-=e.length,t>=0&&r.slice(t,n)==e}function $d(r,e){for(var t=-1,s=r==null?0:r.length;++t<s;)if(!e(r[t],t,r))return!1;return!0}function Cd(r,e){var t=!0;return hr(r,function(s,n,o){return t=!!e(s,n,o),t}),t}function pn(r,e,t){var s=j(r)?$d:Cd;return s(r,je(e))}function _d(r){return function(e,t,s){var n=Object(e);if(!ee(e)){var o=je(t);e=He(e),t=function(a){return o(n[a],a,n)}}var i=r(e,t,s);return i>-1?n[o?e[i]:i]:void 0}}var Dd=Math.max;function pr(r,e,t){var s=r==null?0:r.length;if(!s)return-1;var n=t==null?0:vt(t);return n<0&&(n=Dd(s+n,0)),fs(r,je(e),n)}var xd=_d(pr);function Pd(r,e){var t=-1,s=ee(r)?Array(r.length):[];return hr(r,function(n,o,i){s[++t]=e(n,o,i)}),s}var jd="[object String]";function Pt(r){return typeof r=="string"||!j(r)&&O(r)&&Y(r)==jd}function yn(r,e){return et(r,e)}function jt(r,e,t){t=typeof t=="function"?t:void 0;var s=t?t(r,e):void 0;return s===void 0?et(r,e,void 0,t):!!s}function Rd(r,e){return r===e||nn(r,e,an(e))}function Ed(r,e){var t=r.length;for(r.sort(e);t--;)r[t]=r[t].value;return r}function Md(r,e){if(r!==e){var t=r!==void 0,s=r===null,n=r===r,o=De(r),i=e!==void 0,a=e===null,l=e===e,c=De(e);if(!a&&!c&&!o&&r>e||o&&i&&l&&!a&&!c||s&&i&&l||!t&&l||!n)return 1;if(!s&&!o&&!c&&r<e||c&&t&&n&&!s&&!o||a&&t&&n||!i&&n||!l)return-1}return 0}function Id(r,e,t){for(var s=-1,n=r.criteria,o=e.criteria,i=n.length,a=t.length;++s<i;){var l=Md(n[s],o[s]);if(l){if(s>=a)return l;var c=t[s];return l*(c=="desc"?-1:1)}}return r.index-e.index}function Sd(r,e,t){e.length?e=xe(e,function(o){return j(o)?function(i){return ir(i,o.length===1?o[0]:o)}:o}):e=[bt];var s=-1;e=xe(e,Le(je));var n=Pd(r,function(o,i,a){var l=xe(e,function(c){return c(o)});return{criteria:l,index:++s,value:o}});return Ed(n,function(o,i){return Id(o,i,t)})}function gn(r,e,t,s){return r==null?[]:(j(e)||(e=e==null?[]:[e]),t=t,j(t)||(t=t==null?[]:[t]),Sd(r,e,t))}var Td=cn("length"),mn="\\ud800-\\udfff",Od="\\u0300-\\u036f",Kd="\\ufe20-\\ufe2f",Fd="\\u20d0-\\u20ff",qd=Od+Kd+Fd,Qd="\\ufe0e\\ufe0f",Bd="["+mn+"]",yr="["+qd+"]",gr="\\ud83c[\\udffb-\\udfff]",Vd="(?:"+yr+"|"+gr+")",vn="[^"+mn+"]",bn="(?:\\ud83c[\\udde6-\\uddff]){2}",kn="[\\ud800-\\udbff][\\udc00-\\udfff]",Gd="\\u200d",An=Vd+"?",wn="["+Qd+"]?",Ud="(?:"+Gd+"(?:"+[vn,bn,kn].join("|")+")"+wn+An+")*",Nd=wn+An+Ud,zd="(?:"+[vn+yr+"?",yr,bn,kn,Bd].join("|")+")",$n=RegExp(gr+"(?="+gr+")|"+zd+Nd,"g");function Ld(r){for(var e=$n.lastIndex=0;$n.test(r);)++e;return e}function Wd(r){return ac(r)?Ld(r):Td(r)}var Hd="[object Map]",Jd="[object Set]";function Zd(r){if(r==null)return 0;if(ee(r))return Pt(r)?Wd(r):r.length;var e=G(r);return e==Hd||e==Jd?r.size:_s(r).length}function Xd(r,e,t){return r=or(r),t=t==null?0:Es(vt(t),0,r.length),e=mt(e),r.slice(t,t+e.length)==e}function mr(r){const e=vr(r);return Yd(e)}function vr(r){if(typeof r!="object"||r===null)return String(r);if(Array.isArray(r))return"["+r.map(vr).join(",")+"]";const e=Object.keys(r).sort();let t="{";for(let s=0;s<e.length;s++){const n=e[s];t+=n+":"+vr(r[n]),s<e.length-1&&(t+=",")}return t+="}",t}function Yd(r){let e=0;for(let t=0;t<r.length;t++){const s=r.charCodeAt(t);e=(e<<5)-e+s,e|=0}return e.toString(16)}const ye={now:()=>typeof performance<"u"&&performance.now?performance.now():new Date().getTime(),mark:r=>{typeof performance<"u"&&performance.mark&&performance.mark(r)},measure:(r,e,t)=>{typeof performance<"u"&&performance.measure&&performance.measure(r,e,t)},getEntriesByName(r){if(typeof performance<"u"&&performance.getEntriesByName)return performance.getEntriesByName(r)},getEntriesByType(r){if(typeof performance<"u"&&performance.getEntriesByType)return performance.getEntriesByType(r)}};class ef{data;enabled=!1;constructor(){}init(e){this.data=new Map,this.enabled=e}set(e){if(!this.enabled)return e.value;const t=this.getKey(e.value.name,e.context);return this.data.set(t,e.value),this.data.get(t)}mark(e){if(!this.enabled)return;const t=this.getKey(e.name,e.context),s={name:e.name,type:"mark",value:ye.now(),createdAt:Date.now()};return this.data.set(t,s),s}measure(e){if(!this.enabled)return;const t=this.getKey(e.name,e.context),s=this.data.get(this.getKey(e.start,e.context)),n=this.data.get(this.getKey(e.end,e.context));if(!s||!n)return;const o=n.value-s.value,i=Math.round(o*100)/100,a=this.data.get(t);if(a&&e.sum){const c=a.value+i,u={...a,value:c};return this.data.set(t,u),u}const l={name:e.name,type:"measure",value:i,createdAt:Date.now()};return e.detail&&(l.detail=e.detail),this.data.set(t,l),l}update(e){if(!this.enabled)return e.value;const t=this.getKey(e.value.name,e.context),s=this.data.get(t);if(s){const n={...s,...e.value};this.data.set(t,n)}else this.data.set(t,e.value);return this.data.get(t)}getResourceInfosFromPerformanceAPI(){return typeof performance>"u"?[]:ye.getEntriesByType("resource")}get(e){const t=this.getKey(e.name,e.context);return this.data.get(t)}getByType(e){return Array.from(this.data.values()).filter(t=>t.type===e)}getByName(e){return Array.from(this.data.values()).filter(t=>t.name===e)}clear(){this.data.clear()}getKey(e,t){if(!t)return e;const s=mr(t);return e+"_"+s}}let Cn=class Ai{nodes;edges;nodeKinds=new Map;nodeMeta=new Map;edgePolicy;constructor(){this.nodes=new Set,this.edges=new Map}addNode(e,t){this.nodes.has(e)||(this.nodes.add(e),this.edges.set(e,new Set)),t?.kind!==void 0&&this.nodeKinds.set(e,t.kind),t?.meta!==void 0&&this.nodeMeta.set(e,t.meta)}addDependency(e,t){if(!this.nodes.has(e)||!this.nodes.has(t))throw new Error("Both nodes must exist before adding a dependency.");if(this.edgePolicy&&!this.edgePolicy({name:e,kind:this.nodeKinds.get(e)},{name:t,kind:this.nodeKinds.get(t)}))throw new Error(`Edge policy rejected dependency from "${e}" to "${t}".`);this.edges.get(e).add(t)}setEdgePolicy(e){this.edgePolicy=e}setNodeKind(e,t){if(!this.nodes.has(e))throw new Error("Node does not exist.");t===void 0?this.nodeKinds.delete(e):this.nodeKinds.set(e,t)}getNodeKind(e){return this.nodeKinds.get(e)}setNodeMeta(e,t){if(!this.nodes.has(e))throw new Error("Node does not exist.");this.nodeMeta.set(e,t)}getNodeMeta(e){return this.nodeMeta.get(e)}removeNode(e){if(!this.nodes.has(e))throw new Error("Node does not exist.");this.nodes.delete(e),this.edges.delete(e);for(let t of this.edges.values())t.delete(e)}removeDependency(e,t){if(!this.edges.has(e))throw new Error("From node does not exist.");this.edges.get(e).delete(t)}hasNode(e){return this.nodes.has(e)}hasDependency(e,t){return this.edges.has(e)?this.edges.get(e).has(t):!1}getDependencies(e){if(!this.edges.has(e))throw new Error("Node does not exist.");return Array.from(this.edges.get(e))}getDependents(e){const t=[];for(let[s,n]of this.edges)n.has(e)&&t.push(s);return t}isCyclic(){const e=new Set,t=new Set,s=n=>{if(e.has(n))return!1;if(t.has(n))return!0;t.add(n);const o=this.edges.get(n);if(o){for(let i of o)if(s(i))return!0}return t.delete(n),e.add(n),!1};for(let n of this.nodes)if(s(n))return!0;return!1}validateNoCycles(){const e=new Set,t=new Set,s=[],n=o=>{if(e.has(o))return null;if(t.has(o)){const a=s.indexOf(o);return s.slice(a).concat([o])}t.add(o),s.push(o);const i=this.edges.get(o);if(i)for(let a of i){const l=n(a);if(l)return l}return s.pop(),t.delete(o),e.add(o),null};for(let o of this.nodes){const i=n(o);if(i)return{hasCycle:!0,path:i}}return{hasCycle:!1}}order(e){const t=new Set,s=new Set,n=[],o=e?.allowCycles??!1,i=a=>{if(t.has(a))return;if(s.has(a)){if(o)return;throw new Error("Graph has a cycle.")}s.add(a);const l=this.edges.get(a);if(l)for(let c of l)i(c);s.delete(a),t.add(a),n.push(a)};for(let a of this.nodes)t.has(a)||i(a);return n}clear(){this.nodes.clear(),this.edges.clear()}getNodes(){return Array.from(this.nodes)}getAllEdges(){const e=[];for(let[t,s]of this.edges)for(let n of s)e.push([t,n]);return e}getNodesWithNoDependants(){if(this.nodes.size===0)return[];const e=new Set;for(const s of this.edges.values())for(const n of s)e.add(n);const t=[];for(const s of this.nodes)e.has(s)||t.push(s);return t}getNodesByKind(e){const t=[];for(const s of this.nodes)this.nodeKinds.get(s)===e&&t.push(s);return t}getRootsByKind(e){const t=new Set(this.getNodesWithNoDependants()),s=Array.from(t);return e?s.filter(n=>this.nodeKinds.get(n)===e):s}getLeavesByKind(e){const t=[];for(const s of this.nodes){const n=this.edges.get(s);(!n||n.size===0)&&(!e||this.nodeKinds.get(s)===e)&&t.push(s)}return t}getDependenciesOfKind(e,t){return this.getDependencies(e).filter(s=>this.nodeKinds.get(s)===t)}getDependentsOfKind(e,t){return this.getDependents(e).filter(s=>this.nodeKinds.get(s)===t)}plan(e){const t=new Map;for(const i of this.nodes)t.set(i,0);for(const i of this.edges.values())for(const a of i)t.set(a,(t.get(a)||0)+1);const s=[];let n=Array.from(this.nodes).filter(i=>(t.get(i)||0)===0);const o=new Set;for(;n.length>0;){const i=n.slice();s.push(i),n=[];for(const a of i){if(o.has(a))continue;o.add(a);const l=this.edges.get(a);if(l)for(const c of l)t.set(c,(t.get(c)||0)-1),(t.get(c)||0)===0&&n.push(c)}}if(o.size!==this.nodes.size)throw new Error("Graph has a cycle.");if(e?.filterKinds&&e.filterKinds.length>0){const i=new Set(e.filterKinds);return{batches:s.map(a=>a.filter(l=>i.has(this.nodeKinds.get(l))))}}return{batches:s}}getImpactedNodes(e,t="downstream",s){const n=new Set(e),o=c=>!s||s.length===0||s.includes(this.nodeKinds.get(c)??void 0),i=()=>{const c=new Set,u=Array.from(n);for(;u.length;){const d=u.shift();for(const[f,h]of this.edges)h.has(d)&&!c.has(f)&&(c.add(f),u.push(f))}return c},a=()=>{const c=new Set,u=Array.from(n);for(;u.length;){const d=u.shift(),f=this.edges.get(d);if(f)for(const h of f)c.has(h)||(c.add(h),u.push(h))}return c};let l;return t==="both"?l=new Set([...i(),...a()]):t==="upstream"?l=a():l=i(),Array.from(l).filter(o)}toJSON(){const e=Array.from(this.nodes).map(s=>({name:s,kind:this.nodeKinds.get(s),meta:this.nodeMeta.get(s)})),t=this.getAllEdges().map(([s,n])=>({from:s,to:n}));return{nodes:e,edges:t}}static fromJSON(e){const t=new Ai;for(const s of e.nodes)t.addNode(s.name,{kind:s.kind,meta:s.meta});for(const s of e.edges)t.addDependency(s.from,s.to);return t}diff(e){const t=new Set(this.getNodes()),s=new Set(e.getNodes()),n=Array.from(s).filter(d=>!t.has(d)),o=Array.from(t).filter(d=>!s.has(d)),i=new Set(this.getAllEdges().map(d=>d.join("→"))),a=new Set(e.getAllEdges().map(d=>d.join("→"))),l=Array.from(a).filter(d=>!i.has(d)).map(d=>d.split("→")),c=Array.from(i).filter(d=>!a.has(d)).map(d=>d.split("→")),u=[];for(const d of new Set([...t,...s])){const f=this.nodeKinds.get(d),h=e.nodeKinds.get(d);f!==h&&u.push({name:d,from:f,to:h})}return{addedNodes:n,removedNodes:o,addedEdges:l,removedEdges:c,kindChanges:u}}};class tf{graph;nodeIndex;constructor(){this.graph=new Cn,this.nodeIndex=new Map}getNodeId(e,t){return`${e}.${t}`}parseNodeId(e){const t=e.split(".");return{modelKey:t[0],attributeKey:t.slice(1).join(".")}}addAttribute(e){const t=this.getNodeId(e.modelKey,e.attributeKey);this.nodeIndex.has(t)||(this.graph.addNode(t,{meta:e}),this.nodeIndex.set(t,e))}addAttributeDependency(e,t){this.addAttribute(e),this.addAttribute(t);const s=this.getNodeId(e.modelKey,e.attributeKey),n=this.getNodeId(t.modelKey,t.attributeKey);this.graph.hasDependency(s,n)||this.graph.addDependency(s,n)}getImpactedAttributes(e){const t=e.map(i=>this.getNodeId(i.modelKey,i.attributeKey)),s=this.graph.getImpactedNodes(t,"downstream").map(i=>this.nodeIndex.get(i)).filter(i=>i!==void 0),n=[...e,...s],o=new Set;return n.filter(i=>{const a=this.getNodeId(i.modelKey,i.attributeKey);return o.has(a)?!1:(o.add(a),!0)})}getProcessingOrder(e){const t=new Map,s=[...e].sort((n,o)=>n.processingStep-o.processingStep);for(const n of s){const{modelKey:o,attributeKey:i,processingStep:a}=n;t.has(o)||t.set(o,new Map);const l=t.get(o);l.has(a)||l.set(a,new Set),l.get(a).add(i)}return t}getAttributesForModel(e){const t=[];for(const s of this.nodeIndex.values())s.modelKey===e&&t.push(s);return t}getDependencies(e){const t=this.getNodeId(e.modelKey,e.attributeKey);return this.graph.hasNode(t)?this.graph.getDependencies(t).map(s=>this.nodeIndex.get(s)).filter(s=>s!==void 0):[]}getDependents(e){const t=this.getNodeId(e.modelKey,e.attributeKey);return this.graph.hasNode(t)?this.graph.getDependents(t).map(s=>this.nodeIndex.get(s)).filter(s=>s!==void 0):[]}hasDependencies(e){const t=this.getNodeId(e.modelKey,e.attributeKey);return this.graph.hasNode(t)?this.graph.getDependencies(t).length>0:!1}hasNode(e){return this.nodeIndex.has(e)}getAllAttributes(){return Array.from(this.nodeIndex.values())}getMaxDepth(){let e=0;const t=(s,n=new Set)=>{if(n.has(s))return 0;n.add(s);const o=this.graph.getDependencies(s);if(o.length===0)return 1;let i=0;for(const a of o){const l=t(a,new Set(n));i=Math.max(i,l)}return i+1};for(const s of this.graph.getNodes()){const n=t(s);e=Math.max(e,n)}return e}validateCompleteness(e){const t=[];for(const[s,n]of e)for(const o of n){const i=this.getNodeId(s,o);this.hasNode(i)||t.push({modelKey:s,attributeKey:o})}return{isComplete:t.length===0,missing:t}}clear(){this.graph.clear(),this.nodeIndex.clear()}getStats(){const e=new Map,t=new Map;for(const s of this.nodeIndex.values())e.set(s.modelKey,(e.get(s.modelKey)||0)+1),t.set(s.processingStep,(t.get(s.processingStep)||0)+1);return{totalAttributes:this.nodeIndex.size,totalDependencies:this.graph.getAllEdges().length,maxDepth:this.getMaxDepth(),attributesByModel:e,attributesByStep:t}}toJSON(){return{nodes:Array.from(this.nodeIndex.values()),edges:this.graph.getAllEdges().map(([e,t])=>{const s=this.parseNodeId(e),n=this.parseNodeId(t);return{from:s,to:n}})}}}const _n={silent:0,error:1,warn:2,info:3,debug:4};let rf=class S{config;static globalConfig={};constructor(e={}){this.config={level:e.level??S.globalConfig.level??this.getDefaultLevel(),format:e.format??S.globalConfig.format??this.getDefaultFormat(),prefix:e.prefix,onLog:e.onLog??S.globalConfig.onLog,onTrackError:e.onTrackError??S.globalConfig.onTrackError}}static setGlobalConfig(e){S.globalConfig={...S.globalConfig,...e}}static getGlobalConfig(){return{...S.globalConfig}}static setModuleLevel(e,t){S.globalConfig.onLog||(S.globalConfig.onLog=void 0),S._moduleOverrides||(S._moduleOverrides=new Map),S._moduleOverrides.set(e,t)}static getModuleLevel(e){if(!(!e||!S._moduleOverrides))return S._moduleOverrides.get(e)}getDefaultLevel(){return"info"}getDefaultFormat(){return"pretty"}getEffectiveLevel(){if(this.config.prefix){const e=S.getModuleLevel(this.config.prefix);if(e)return e}return this.config.level}shouldLog(e){const t=this.getEffectiveLevel();return _n[e]<=_n[t]}formatMessage(e){if(this.config.format==="json"){const i={timestamp:new Date(e.timestamp).toISOString(),level:e.level,message:e.message};return e.prefix&&(i.module=e.prefix),e.context&&(i.context=e.context),e.error&&(i.error={name:e.error.name,message:e.error.message,stack:e.error.stack}),JSON.stringify(i)}const t=new Date(e.timestamp).toISOString().substring(11,23),s=e.prefix?`[${e.prefix}]`:"",n=this.getLevelIcon(e.level),o=e.context?` ${JSON.stringify(e.context)}`:"";return`${t} ${n} ${s} ${e.message}${o}`.trim()}getLevelIcon(e){switch(e){case"error":return"✖";case"warn":return"⚠";case"info":return"ℹ";case"debug":return"⚙";default:return" "}}log(e,t,s,n){if(!this.shouldLog(e))return;const o={level:e,message:t,timestamp:Date.now(),prefix:this.config.prefix,context:s,error:n};if(this.config.onLog){this.config.onLog(o);return}const i=this.formatMessage(o);if(typeof console<"u")switch(e){case"error":n?console.error(i,n):console.error(i);break;case"warn":console.warn(i);break;case"debug":console.debug?console.debug(i):console.log(i);break;default:console.log(i)}}error(e,t,s){const n=t instanceof Error?t:void 0,o=t instanceof Error?s:t;this.log("error",e,o,n)}trackError(e,t,s){if(this.error(e,t,s?.context),this.config.onTrackError){const n={level:"error",message:e,timestamp:Date.now(),prefix:this.config.prefix,context:s?.context,error:t,errorType:s?.errorType,errorGroup:s?.errorGroup};this.config.onTrackError(n)}}warn(e,t){this.log("warn",e,t)}info(e,t){this.log("info",e,t)}debug(e,t){this.log("debug",e,t)}child(e){const t={...this.config,...e,prefix:e.prefix?this.config.prefix?`${this.config.prefix}:${e.prefix}`:e.prefix:this.config.prefix};return new S(t)}configure(e){Object.assign(this.config,e)}};const Ee=new rf;class Dn{constructor(e){this.enabled=e,this.cache=new Map,this.cacheDependencies=new Map}cache;cacheDependencies;hitCount=0;missCount=0;log=Ee.child({prefix:"CacheController"});get(e,t){if(!this.enabled)return;const s=this.getCacheName(e,t);return this.cache.has(s)?this.hitCount++:this.missCount++,this.cache.get(s)}set(e,t,s,n){if(!this.enabled)return;const o=this.getCacheName(e,t);this.cache.set(o,s),n?this.cacheDependencies.set(o,n):this.log.debug(`Cache entry '${e}' stored without dependencies. This prevents granular invalidation and may cause stale data.`)}has(e,t){return this.cache.has(this.getCacheName(e,t))}clear(){this.cache.clear(),this.cacheDependencies.clear(),this.hitCount=0,this.missCount=0}invalidateByDependencies(e){if(!this.enabled)return;const t=[];for(const[s,n]of this.cacheDependencies){let o=!1;for(const[i,a]of e){if(n.models.has(i))if(n.modelAttributes.has(i)){const l=n.modelAttributes.get(i);for(const c of a)if(l.has(c)){o=!0;break}}else o=!0;if(o)break}o&&t.push(s)}for(const s of t)this.cache.delete(s),this.cacheDependencies.delete(s)}invalidateByModels(e){if(!this.enabled)return;const t=new Set(e),s=[];for(const[n,o]of this.cacheDependencies)for(const i of t)if(o.models.has(i)){s.push(n);break}for(const n of s)this.cache.delete(n),this.cacheDependencies.delete(n)}invalidateByKeyPrefix(e){if(!this.enabled)return;const t=[];for(const s of this.cache.keys())s.startsWith(e+"_")&&t.push(s);for(const s of t)this.cache.delete(s),this.cacheDependencies.delete(s)}invalidateForModel(e){this.invalidateByModels([e])}invalidateForAttribute(e,t){if(!this.enabled)return;const s=new Map;s.set(e,new Set([t])),this.invalidateByDependencies(s)}invalidateMatching(e){if(!this.enabled)return;const t=[];for(const s of this.cache.keys())e(s)&&t.push(s);for(const s of t)this.cache.delete(s),this.cacheDependencies.delete(s)}generateContext(e){try{return se(e)}catch(t){return this.log.error("Error in cache generateContext",t),e}}getCacheName(e,t){const s=mr(t);return e+"_"+s}getStats(){const e=this.hitCount+this.missCount,t=e>0?this.hitCount/e:0;return{size:this.cache.size,hitRate:t,totalEntries:this.cache.size,entriesWithDependencies:this.cacheDependencies.size,hits:this.hitCount,misses:this.missCount}}}function L(r=10){let e="";const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";for(let s=0;s<r;s++)e+=t.charAt(Math.floor(Math.random()*t.length));return e}class br{key;parentCd;dcuplInitOptions;analyticsController;off;updateListener=new Set;counter=0;constructor(){}_init(e){this.key=e.cdRefKey,this.analyticsController=e.analyticsController,this.parentCd=e.parentCd,this.dcuplInitOptions=e.dcuplInitOptions,this.parentCd&&(this.off=this.parentCd.on(t=>{t.action==="update"&&t.originCdRefKey===this.parentCd?.key&&(t.connectMessage=!1,this.trigger(t))}))}getCounter(){return this.parentCd?this.parentCd.getCounter():this.counter}increaseCounter(){this.parentCd?this.parentCd.increaseCounter():this.counter++}destroy(){this.off&&this.off()}trigger(e){e.originCdRefKey||(e.originCdRefKey=this.key),e.key||(this.increaseCounter(),e.key=this.getCounter()),e.end||(e.end=ye.now(),e.duration=e.start-e.end),this.updateListener.forEach(t=>{t(e)})}on(e){return this.updateListener.add(e),()=>{this.updateListener.delete(e)}}}const xn=(r,e)=>e?typeof structuredClone<"u"?structuredClone(r):se(r):r,Pn=(r,e,t,s,n,o)=>{try{const i=!!e.dcuplInitOptions.performance?.clone?.enabled&&!!t.cloneResult,a=xn(o,i);if(t.scope==="list"&&(t.listKey=r.cdRef?.key||r.key,t.modelKey=r.model?.key||r.modelKey),t.type==="list_created"&&t.args[0].listKey.startsWith("__global_list__")||t.listKey?.startsWith("__global_list__"))return a;const l=ye.now(),c=l-s,u=Math.round(c*1e3)/1e3;t.duration=u,t.start=s,t.end=l;const d={duration:t.duration};return t.modelKey&&(d.model=t.modelKey),t.connectMessageResult&&(t.result=a),t.args&&(d.args=t.args),e?.trigger(t),e.analyticsController.mark({name:`${t.type}:end`,context:n}),e.analyticsController.measure({name:t.type,start:`${t.type}:start`,end:`${t.type}:end`,context:n,detail:d}),a}catch{return o}},v=r=>(e,t,s)=>{const n=s.value;return s.value=function(...o){const i=ye.now(),a=this.cdRef,l=xn(r,!0);l.key||(a.increaseCounter(),l.key=a.getCounter());const c=L();a.analyticsController.mark({name:`${l.type}:start`,context:c});const u=this.model?.key;!l.originCdRefKey&&a.key&&(l.originCdRefKey=a.key),u&&(l.modelKey=u);const d=n.apply(this,o);return l.method=t,l.args=o,d&&typeof d=="object"&&"then"in d?d.then(f=>Pn(this,a,l,i,c,f)):Pn(this,a,l,i,c,d)},s};function sf(r,e,t,s){t.max||(t.max=20);const n=[],o=t.transform?s.transformValue(t.value,t.transform):t.value;for(const[i,a]of e.entries()){const l=Array.from(a).some(u=>r.has(u)),c=t.transform?s.transformValue(i,t.transform):i;if(!(t.excludeUndefineds&&typeof i>"u")&&!(t.excludeNulls&&i===null)){if(l&&(o===""||o==="//")){const u={value:i,keys:t.calculateResultKeys?Array.from(a):[]};n.push(u)}else if(l&&typeof o=="string"&&o.startsWith("/")&&o.endsWith("/")){if(s.queryFind(c,o,"some")){const u={value:i,keys:t.calculateResultKeys?Array.from(a):[]};n.push(u)}}else if(l&&typeof o=="string"){const u=String(c??""),d=o;if(u.toLowerCase().startsWith(d.toLowerCase())){const f={value:i,keys:t.calculateResultKeys?Array.from(a):[]};n.push(f)}}else if(l&&s.queryFind(c,o,"some")){const u={value:i,keys:t.calculateResultKeys?Array.from(a):[]};n.push(u)}if(n.length===t.max)break}}return n}function nf(r){return r instanceof Date}function jn(r){return r instanceof Date&&!isNaN(r.getTime())}const of={yyyy:{type:"year",pattern:"yyyy",regex:"(\\d{4})"},yy:{type:"year",pattern:"yy",regex:"(\\d{2})"},MM:{type:"month",pattern:"MM",regex:"(\\d{2})"},M:{type:"month",pattern:"M",regex:"(\\d{1,2})"},dd:{type:"day",pattern:"dd",regex:"(\\d{2})"},d:{type:"day",pattern:"d",regex:"(\\d{1,2})"},HH:{type:"hour",pattern:"HH",regex:"(\\d{2})"},H:{type:"hour",pattern:"H",regex:"(\\d{1,2})"},mm:{type:"minute",pattern:"mm",regex:"(\\d{2})"},m:{type:"minute",pattern:"m",regex:"(\\d{1,2})"},ss:{type:"second",pattern:"ss",regex:"(\\d{2})"},s:{type:"second",pattern:"s",regex:"(\\d{1,2})"},SSS:{type:"millisecond",pattern:"SSS",regex:"(\\d{3})"}};function af(r){let e="^";const t=[];let s=r;const n=Object.entries(of).sort((o,i)=>i[0].length-o[0].length);for(;s.length>0;){let o=!1;for(const[i,a]of n)if(s.startsWith(i)){e+=a.regex,t.push({type:a.type,pattern:i}),s=s.slice(i.length),o=!0;break}if(!o){const i=s[0];if(!i)break;e+=i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),s=s.slice(1)}}return e+="$",{regex:new RegExp(e),tokenOrder:t}}function lf(r,e){const t={year:1970,month:1,day:1,hour:0,minute:0,second:0,millisecond:0};for(let s=0;s<e.length;s++){const n=r[s+1];if(!n)continue;const o=parseInt(n,10),i=e[s];i&&(i.type==="year"&&i.pattern==="yy"?t.year=2e3+o:t[i.type]=o)}return t}function cf(r){if(r.month<1||r.month>12)return new Date(NaN);if(r.day<1||r.day>31)return new Date(NaN);if(r.hour<0||r.hour>23)return new Date(NaN);if(r.minute<0||r.minute>59)return new Date(NaN);if(r.second<0||r.second>59)return new Date(NaN);if(r.millisecond<0||r.millisecond>999)return new Date(NaN);const e=new Date(r.year,r.month-1,r.day,r.hour,r.minute,r.second,r.millisecond);return jn(e)?e.getFullYear()!==r.year||e.getMonth()!==r.month-1||e.getDate()!==r.day?new Date(NaN):e:new Date(NaN)}function uf(r,e,t){if(r=r.trim(),e==="t"){const a=Number(r);return isNaN(a)?new Date(NaN):new Date(a*1e3)}if(e==="T"){const a=Number(r);return isNaN(a)?new Date(NaN):new Date(a)}const{regex:s,tokenOrder:n}=af(e),o=r.match(s);if(!o)return new Date(NaN);const i=lf(o,n);return cf(i)}class df{cache;maxSize;accessOrder;constructor(e){this.cache=new Map,this.maxSize=e,this.accessOrder=[]}get(e){const t=this.cache.get(e);return t!==void 0&&this.updateAccessOrder(e),t}set(e,t){if(this.cache.has(e))this.cache.set(e,t),this.updateAccessOrder(e);else{if(this.cache.size>=this.maxSize){const s=this.accessOrder.shift();s!==void 0&&this.cache.delete(s)}this.cache.set(e,t),this.accessOrder.push(e)}}has(e){return this.cache.has(e)}clear(){this.cache.clear(),this.accessOrder=[]}get size(){return this.cache.size}updateAccessOrder(e){const t=this.accessOrder.indexOf(e);t>-1&&this.accessOrder.splice(t,1),this.accessOrder.push(e)}getStats(){return{size:this.cache.size,maxSize:this.maxSize}}}class ff{graph;constructor(){this.graph=new Map}addDependency(e,t){this.graph.has(e)||this.graph.set(e,new Set),this.graph.get(e).add(t)}hasCycle(e){if(e.length===0)return!1;const t=new Set,s=new Set,n=o=>{t.add(o),s.add(o);const i=this.graph.get(o);if(i){for(const a of i)if(t.has(a)){if(s.has(a))return!0}else if(n(a))return!0}return s.delete(o),!1};for(let o=0;o<e.length-1;o++){const i=e[o],a=e[o+1];i&&a&&this.addDependency(i,a)}for(const o of e)if(!t.has(o)&&n(o))return!0;return!1}clear(){this.graph.clear()}}class hf{parseCache;circularRefDetector;cacheHits=0;cacheMisses=0;constructor(e=1e3){this.parseCache=new df(e),this.circularRefDetector=new ff}parse(e){if(this.parseCache.has(e))return this.cacheHits++,this.parseCache.get(e);this.cacheMisses++;let t,s;const n=e.includes("."),o=e.includes("["),i=n||o;if(i)if(s=e.split(/[.[]/)[0],o){const l=e.indexOf("]");if(l>-1){const c=e.indexOf(".",l+1);c>-1?t=e.substring(c+1):t=void 0}else n&&(t=e.substring(e.indexOf(".")+1))}else n&&(t=e.substring(e.indexOf(".")+1));const a={attribute:e,isDeepQuery:i};return s&&(a.reference=s),typeof t<"u"&&t!==""&&(a.referenceAttribute=t),this.parseCache.set(e,a),a}detectCircular(e){return e.length===0?!1:new Set(e).size!==e.length?!0:this.circularRefDetector.hasCycle(e)}validatePath(e,t=10){const s=[];if(!e||e.trim().length===0)return s.push("Attribute path cannot be empty"),{valid:!1,errors:s};(e.startsWith(".")||e.endsWith("."))&&s.push(`Invalid path: Leading or trailing dots are not allowed: ${e}`),e.includes("..")&&s.push(`Invalid path: Consecutive dots are not allowed: ${e}`);const n=(e.match(/\[/g)||[]).length,o=(e.match(/]/g)||[]).length;n!==o&&s.push(`Invalid bracket notation: Mismatched brackets in ${e}`),e.includes("[]")&&s.push(`Invalid bracket notation: Empty brackets not allowed: ${e}`);const i=/\[([^\]]+)\]/g;let a;for(;(a=i.exec(e))!==null;){const u=a[1];u&&u!=="*"&&!/^\d+$/.test(u)&&s.push(`Invalid bracket content: Must be a number or '*', got '${u}' in ${e}`)}const l=(e.match(/\./g)||[]).length+1;l>t&&s.push(`Path too deep: Maximum depth is ${t}, got ${l} in ${e}`);const c=e.match(/[^a-zA-Z0-9._[\]*-]/g);return c&&s.push(`Invalid characters in path: ${c.join(", ")} in ${e}`),{valid:s.length===0,errors:s.length>0?s:void 0}}clearCache(){this.parseCache.clear(),this.cacheHits=0,this.cacheMisses=0}clearCircularDetector(){this.circularRefDetector.clear()}getCacheStats(){const e=this.parseCache.getStats(),t=this.cacheHits+this.cacheMisses,s=t>0?this.cacheHits/t:0;return{...e,hits:this.cacheHits,misses:this.cacheMisses,hitRate:s}}getPathSegments(e){return e.replace(/\[[^\]]+\]/g,"").split(".").filter(t=>t.length>0)}getPathDepth(e){return this.getPathSegments(e).length}}const D=new hf;function ge(r,e){if(e.includes("[*]")){const o=e.indexOf("[*]"),i=e.substring(0,o),a=e.substring(o+3),l=i?Xe(r,i):r;if(!Array.isArray(l))return[];const c=[];for(const u of l)!a||a===""?u!==void 0&&c.push(u):a.startsWith(".")&&c.push(...ge(u,a.slice(1)));return c}const t=e.split(".");let s=[r];for(const o of t){const i=[];for(const a of s)if(a!=null)if(Array.isArray(a))for(const l of a){if(l==null)continue;const c=l[o];c!==void 0&&i.push(c)}else{const l=a[o];l!==void 0&&i.push(l)}if(s=i,s.length===0)return[]}const n=[];for(const o of s)if(Array.isArray(o))for(const i of o)i!==void 0&&n.push(i);else o!==void 0&&n.push(o);return n}function kr(r){let e=0;for(let t of r){const s=t.toString().split(".")[1];s&&(e=Math.max(e,s.length))}return Math.pow(10,e)}function Rn(r,e,t){return(r*t+e*t)/t}function pf(r,e,t){return r*t/(e*t)}const tt=(r,e,t,s)=>{if(!s)throw new Error("Attribute not found");const n={attribute:s,types:r.types};let o;(n.types.includes("sum")||n.types.includes("avg"))&&(o=vf(s,e));let i;return(n.types.includes("min")||n.types.includes("max"))&&(i=gf(s,e)),r.types.forEach(a=>{a==="sum"?n.sum=o?.sum:a==="avg"?n.avg=o?.average:a==="count"?n.count=yf(s,e):a==="min"?n.min=i&&i[0]:a==="max"?n.max=i&&i[1]:a==="distinct"?n.distinct=bf(r,e,t):a==="group"&&(n.group=mf(r,e))}),n},yf=(r,e)=>{const t=D.parse(r).isDeepQuery;let s=0;for(const n of e.values())if(n)if(t)s+=ge(n,r).filter(o=>o!=null).length;else{const o=n[r];if(o==null)continue;Array.isArray(o)?s+=o.filter(i=>i!=null).length:s++}return s},gf=(r,e)=>{let t,s;const n=D.parse(r).isDeepQuery;for(const o of e.values()){if(!o)continue;let i;if(n)i=ge(o,r);else{const a=o[r];a===void 0?i=[]:Array.isArray(a)?i=a.filter(l=>l!==void 0):i=[a]}for(const a of i)a==null||typeof a=="object"||((t===void 0||a<t)&&(t=a),(s===void 0||a>s)&&(s=a))}if(!(t===void 0||s===void 0))return[t,s]},mf=(r,e)=>{const t=[];r.groupOptions?.groups?.forEach(o=>{t.push({option:o,count:0,keys:[]})});const s={option:{value:["$dcupl_not_found"]},count:0,keys:[]},n=D.parse(r.attribute).isDeepQuery;for(const o of e.values()){let i;n?i=ge(o,r.attribute):i=[o[r.attribute]];let a=!1;for(const l of i)for(const c of t)(typeof c.option.value<"u"&&c.option.value.includes(l)||typeof c.option.from<"u"&&c.option.from<l&&typeof c.option.to<"u"&&c.option.to>l)&&(c.keys.includes(o.key)||(c.count++,c.keys.push(o.key)),a=!0);!a&&r?.groupOptions?.calculateNotFound&&(s.count++,s.keys.push(o.key))}return r?.groupOptions?.calculateNotFound&&t.push(s),t},vf=(r,e)=>{let t=0,s=0;const n=D.parse(r).isDeepQuery;for(const o of e.values()){if(!o)continue;let i;if(n)i=ge(o,r);else{const a=o[r];a===void 0?i=[]:Array.isArray(a)?i=a:i=[a]}for(const a of i)if(Array.isArray(a))for(const l of a)typeof l=="number"&&(t=Rn(t,l,kr([t,l])),s++);else typeof a=="number"&&(t=Rn(t,a,kr([t,a])),s++)}return s===0?void 0:{average:pf(t,s,kr([t,s])),count:s,sum:t}},bf=(r,e,t)=>{const s=[];for(const[n,o]of t)if(!(r.excludeUndefineds&&typeof n>"u")&&Array.from(o).find(i=>e.has(i))){const i={value:n,count:o.size};if(r.distinctOptions?.skipKeys||(i.keys=Array.from(o)),s.push(i),r.distinctOptions?.limit&&s.length>=r.distinctOptions.limit)break}return s};let rt=class extends Error{query;constructor(e,t){const s=`Query Error: ${e} in ${JSON.stringify(t,null,2)}`;super(s),this.query=t,this.name="DcuplQueryError"}},me=class{_defaultQueryOptions={modelKey:"",groupKey:"root",groupType:"and",queries:[]};_initOptions;currentQuery=se(this._defaultQueryOptions);deepQueryService;constructor(e){this.deepQueryService=e||D}init(e){this._initOptions=se(e),this.currentQuery=se(this._defaultQueryOptions),this.currentQuery.modelKey=e.modelKey,"queries"in e&&Array.isArray(e.queries)&&(e.groupType&&(this.currentQuery.groupType=e.groupType),e.queries&&(this.currentQuery.queries=se(e.queries)),e.count!==void 0&&(this.currentQuery.count=e.count),e.start!==void 0&&(this.currentQuery.start=e.start),e.sort&&(this.currentQuery.sort=e.sort),e.projection&&(this.currentQuery.projection=e.projection))}reset(){return this.init(this._initOptions),this.getQuery()}isQuery(e){return"attribute"in e}isQueryGroup(e){return"groupKey"in e}isRootQueryGroup(e){return this.isQueryGroup(e)&&e.groupKey==="root"}getQueryGroup(e){return this.currentQuery.queries.find(t=>this.isQueryGroup(t)&&t.groupKey===e)}getQuery(){return se(this.currentQuery)}hasQueryGroup(e){return this.currentQuery.queries.some(t=>this.isQueryGroup(t)&&t.groupKey===e)}has(e){if(e.groupKey&&e.queryKey){const t=this.getQueryGroup(e.groupKey);if(t)return t.queries.some(s=>this.isQuery(s)&&s.queryKey===e.queryKey)}else if(e.groupKey)return this.hasQueryGroup(e.groupKey);return!1}validate(e){const t=e.queries.map(s=>this.validateQuery(s));return{valid:pn(t,s=>s.valid),errors:t.map(s=>s.errors).flat()}}applyOptions(e,t="update"){return t==="set"?(this.currentQuery.count=e.count,this.currentQuery.start=e.start,this.currentQuery.sort=e.sort,this.currentQuery.projection=e.projection):(typeof e?.sort<"u"&&(this.currentQuery.sort=e.sort),typeof e?.count<"u"&&(this.currentQuery.count=e.count),typeof e?.start<"u"&&(this.currentQuery.start=e?.start),typeof e?.projection<"u"&&(this.currentQuery.projection=e?.projection)),this.getQuery()}applyQuery(e,t,s){if(s||(s=this.currentQuery),Array.isArray(e))for(const n of e)this.applyQuery(n,t,s);else if(this.isRootQueryGroup(e))e.groupType&&(s.groupType=e.groupType),t?.mode==="set"?s.queries=e.queries:s.queries=[...s.queries,...e.queries],this.applyOptions(e,"set");else if(this.isQuery(e)){const n=s.queries.findIndex(o=>this.isQueryGroup(o)&&o.groupKey===e.attribute);if(n>-1){const o=s.queries[n];t?.mode==="set"?o.queries=[e]:o.queries.push(e)}else s.queries.push({groupKey:e.attribute,groupType:"or",queries:[e]})}else if(this.isQueryGroup(e)){const n=s.queries.findIndex(o=>this.isQueryGroup(o)&&o.groupKey===e.groupKey);if(n>-1){const o=s.queries[n];e.groupType&&(o.groupType=e.groupType),t?.mode==="set"?s.queries[n]=e:o.queries=[...o.queries,...e.queries]}else s.queries.push({groupKey:e.groupKey,groupType:e.groupType||"or",queries:e.queries})}return s}removeAllQueries(){return this.currentQuery.queries=[],this.getQuery()}removeQuery(e,t){if(t||(t=this.currentQuery),this.isQuery(e)){const s=t.queries.findIndex(n=>this.isQueryGroup(n)&&n.groupKey===e.attribute);if(s>-1){const n=t.queries[s],o=pr(n.queries,e);o>-1&&n.queries.splice(o,1),n.queries.length===0&&t.queries.splice(s,1)}}else if(this.isQueryGroup(e)){const s=t.queries.findIndex(n=>this.isQueryGroup(n)&&n.groupKey===e.groupKey);if(s>-1)if(!e.queries)t.queries.splice(s,1);else{const n=t.queries[s];for(const o of e.queries){const i=pr(n.queries,o);i>-1&&n.queries.splice(i,1)}n.queries.length===0&&t.queries.splice(s,1)}}return t}validateQuery(e){const t=[];if(this.isQuery(e))return e.attribute||t.push(new rt("Missing attribute",e)),e.operator||t.push(new rt("Missing operator",e)),typeof e.value>"u"&&t.push(new rt("Missing value",e)),e.operator==="find"&&Array.isArray(e.value)&&t.push(new rt("find operator cannot have array value",e)),t.length>0?{valid:!1,errors:t}:{valid:!0};if(this.isQueryGroup(e)){const s=e.queries.map(n=>this.validateQuery(n)).filter(n=>!n.valid).map(n=>n.errors).flat();return s.length>0?{valid:!1,errors:s}:{valid:!0}}return t.push(new rt("Invalid query definition",e)),{valid:!1,errors:t}}getQueryAttributes(e){const t=[],s=new Set,n=o=>{for(const i of o)this.isQuery(i)?i.attribute&&!s.has(i.attribute)&&(t.push(i.attribute),s.add(i.attribute)):this.isQueryGroup(i)&&n(i.queries)};return n(e?.queries||this.currentQuery.queries),t}extractQueryAttributes(e){const t=[],s=new Set,n=o=>{for(const i of o)if(this.isQuery(i)){if(i.attribute&&!s.has(i.attribute)){const a=this.getQueryAttributeForString(i.attribute);t.push(a),s.add(i.attribute)}}else this.isQueryGroup(i)&&n(i.queries)};return n(e?.queries||this.currentQuery.queries),t}getQueryAttributeForString(e){return this.deepQueryService.parse(e)}getDeepQueryService(){return this.deepQueryService}getProjectionForAttributes(e){const t={};return e.forEach(s=>{t[s]=!0}),t}getProjectionForAttributeEntries(e){const t={$:!0};return e.forEach(s=>{if(s.isDeepQuery){if(s.reference)if(s.referenceAttribute&&s.referenceAttribute.length>0){t[s.reference]||(t[s.reference]={$:!0});const n=this.deepQueryService.parse(s.referenceAttribute);if(n.isDeepQuery&&s.reference){const o=this.getProjectionForAttributeEntries([n]);Object.keys(o).forEach(i=>{i!=="$"&&s.reference&&(t[s.reference][i]=o[i])})}else s.reference&&(t[s.reference][s.referenceAttribute]=!0)}else t[s.reference]=!0}else t[s.attribute]=!0}),t}getAttributeNames(e){return this.getQueryAttributes(e)}getAttributeDetails(e){return this.extractQueryAttributes(e||this.currentQuery)}getCurrentAttributeNames(){return this.getAttributeNames(this.currentQuery)}getCurrentAttributeDetails(){return this.getAttributeDetails(this.currentQuery)}addCondition(e){return this.applyQuery(e,{mode:"add"})}addGroup(e){return this.applyQuery(e,{mode:"add"})}setCondition(e){return this.applyQuery(e,{mode:"set"})}setGroup(e){return this.applyQuery(e,{mode:"set"})}mergeQuery(e){if(e.queries&&Array.isArray(e.queries))for(const t of e.queries)this.applyQuery(t,{mode:"add"});return this.currentQuery}replaceQuery(e){return this.currentQuery.queries=[],e.groupType&&(this.currentQuery.groupType=e.groupType),e.queries&&Array.isArray(e.queries)&&(this.currentQuery.queries=e.queries),this.currentQuery}clear(){return this.reset()}clearConditions(){return this.removeAllQueries()}getCurrentQuery(){return this.getQuery()}isEmpty(){return this.currentQuery.queries.length===0}hasCondition(e){const t=s=>{for(const n of s)if(this.isQuery(n)){let o=!0;for(const i in e)if(n[i]!==e[i]){o=!1;break}if(o)return!0}else if(this.isQueryGroup(n)&&t(n.queries))return!0;return!1};return t(this.currentQuery.queries)}hasGroup(e){return this.hasQueryGroup(e)}getUsedAttributes(){return this.getAttributeNames()}getDeepQueryAttributes(){return this.getAttributeDetails().filter(e=>e.isDeepQuery)}getGroups(){return this.currentQuery.queries.filter(e=>this.isQueryGroup(e))}getTopLevelConditions(){return this.currentQuery.queries.filter(e=>this.isQuery(e))}getGroup(e){return this.getQueryGroup(e)}getConditionCount(){const e=t=>{let s=0;for(const n of t)this.isQuery(n)?s++:this.isQueryGroup(n)&&(s+=e(n.queries));return s};return e(this.currentQuery.queries)}};const Ar=new me;function kf(r,e,t,s,n,o,i){const a=[],l=Ar.removeQuery({groupKey:n},se(s)),c=i.queryData(r,l,!1,o),u=e?[...e.keys()]:[],d=new Set(u),f=o.get(n);if(!t.excludeUnresolved)for(const h of f.keys())d.add(h);t.excludeUndefineds?d.delete(void 0):d.add(void 0);for(const h of d.values()){const p=new Map,y=f.get(h)||new Set;for(const g of y){const b=c.get(g);if(b&&(p.set(g,b),!t?.calculateFacets))break}const m={key:String(h),value:h,selected:Af(n,h,s),enabled:p.size>0,size:p.size,entry:e.get(h),resultKeys:Array.from(p.keys())};if(!(t?.excludeZeros&&m.size===0)){if(t?.count&&a.length===t?.count)return a;a.push(m)}}return a}const Af=(r,e,t)=>{const s=t.queries.findIndex(n=>Ar.isQueryGroup(n)&&n.groupKey===r);return s>-1?!!t.queries[s].queries.find(n=>{if(Ar.isQuery(n)){const o=n.value?.key||n.value;return n.attribute===r&&o===e}return!1}):!1};class Rt{indexMap=new Map;dataMap=new Map;indexMetadata=new Map;constructor(){}reset(e){e?(this.indexMap.delete(e),this.dataMap.delete(e),this.indexMetadata.delete(e)):(this.indexMap.clear(),this.dataMap.clear(),this.indexMetadata.clear())}fillDataMap(e,t){let s=this.dataMap.get(e);s||(s=new Map,this.dataMap.set(e,s));for(const n of t){let o;if(typeof n=="object"&&n&&n.key)o=n.key;else if(Array.isArray(n)){for(const a of n)this.fillDataMap(e,[a]);return}else n instanceof Date?o=n.toISOString():o=n;let i=s.get(o);i||(i={key:o},this.dataMap.get(e)?.set(o,i))}}fillInverseIndex(e,t,s){if(!e||!t||!s||!Array.isArray(s))return;const n=this.indexMap.get(e)||new Map;for(const o of s){let i;if(typeof o=="object"&&o&&o.key)i=o.key;else if(Array.isArray(o)){for(const l of o)this.fillInverseIndex(e,t,[l]);return}else o instanceof Date?i=o.toISOString():i=o;let a=n.get(i);a||(a=new Set,n.set(i,a)),a.add(t)}this.indexMap.set(e,n)}getIndex(e,t){const s=this.getIndexName(e,t);return this.indexMap.get(s)}getData(e,t){const s=this.getIndexName(e,t);return this.dataMap.get(s)}getOrCreateIndex(e,t,s){const n=this.getIndexName(e,s);let o=this.getIndex(n);const i=this.indexMetadata.get(n);if(i)i.lastAccessedAt=Date.now();else if(!o){const a=D.parse(e).isDeepQuery??!1;this.indexMetadata.set(n,{createdAt:Date.now(),lastAccessedAt:Date.now(),context:s,type:a?"deep":"shallow"})}if(!o){this.reset(n),this.indexMap.set(n,new Map);const a=D.parse(e).isDeepQuery;for(const l of t.values()){let c;a?(c=ge(l,e),c.length===0&&(c=[void 0])):c=[l[e]],this.fillInverseIndex(n,l.key,c),this.fillDataMap(n,c)}o=this.getIndex(n)||new Map}return o}getIndexName(e,t){return t?e+"_"+mr(t):e}removeFromInverseIndex(e,t,s){const n=this.indexMap.get(e);if(n)for(const o of s){let i;if(typeof o=="object"&&o&&o.key)i=o.key;else if(Array.isArray(o)){for(const l of o)this.removeFromInverseIndex(e,t,[l]);return}else o instanceof Date?i=o.toISOString():i=o;const a=n.get(i);a&&(a.delete(t),a.size===0&&n.delete(i))}}updateInverseIndex(e,t,s,n){this.removeFromInverseIndex(e,t,s),this.fillInverseIndex(e,t,n)}removeFromDataMap(e,t){const s=this.dataMap.get(e);if(s)for(const n of t){let o;if(typeof n=="object"&&n&&n.key)o=n.key;else if(Array.isArray(n)){for(const i of n)this.removeFromDataMap(e,[i]);return}else n instanceof Date?o=n.toISOString():o=n;s.delete(o)}}updateDataMap(e,t,s){this.removeFromDataMap(e,t),this.fillDataMap(e,s)}removeItemFromAllIndices(e){for(const t of this.indexMap.values())for(const[s,n]of t)n.delete(e)&&n.size===0&&t.delete(s);for(const t of this.dataMap.values())t.has(e)&&t.delete(e)}resetAttributes(e){for(const t of e)this.reset(t)}isDeepQueryIndex(e){const t=e.includes("_")?e.split("_")[0]:e;try{return D.parse(t).isDeepQuery??!1}catch{return!1}}getDeepIndexKeys(){const e=[];for(const t of this.indexMap.keys())this.isDeepQueryIndex(t)&&e.push(t);return e}resetAllDeepIndices(){const e=this.getDeepIndexKeys();for(const t of e)this.indexMap.delete(t),this.dataMap.delete(t)}getIndexCount(){let e=0,t=0;for(const s of this.indexMap.keys())this.isDeepQueryIndex(s)?t++:e++;return{shallow:e,deep:t,total:e+t}}cleanupStaleIndices(e=300*1e3){const t=Date.now();let s=0;for(const[n,o]of this.indexMetadata)t-o.lastAccessedAt>e&&(this.reset(n),s++);return s}getStats(){const e=this.getIndexCount(),t=Date.now();let s=0,n=0;for(const i of this.indexMetadata.values()){const a=t-i.createdAt;s+=a,a>n&&(n=a)}const o=this.indexMetadata.size>0?s/this.indexMetadata.size:0;return{shallow:e.shallow,deep:e.deep,total:e.total,oldestAge:n,avgAge:o}}}const Me="__";function wr(r,e,t={key:"root"},s="root",n=new Rt,o){const i=o||r;for(const a of e.columns)a.attribute&&(D.parse(a.attribute),n.getOrCreateIndex(a.attribute,i));for(const a of e.rows)a.attribute&&(D.parse(a.attribute),n.getOrCreateIndex(a.attribute,i));for(const a of e.values)a.attribute&&(D.parse(a.attribute),n.getOrCreateIndex(a.attribute,i));if(e.rows&&e.rows.length>0){t.rows=t.rows||[];const a=wf(r,e.rows[0],e,n,s,o);t.rows.push(a)}if(e.columns&&e.columns.length>0){t.columns=t.columns||[];const a=En(r,e.columns[0],e,n,s,o);t.columns.push(a)}if(t.key==="root")for(const a of e.values){if(t.values=t.values||[],s==="root"&&e.options?.calculateTotals===!1)continue;const l=tt(a,r,n.getIndex(a.attribute),a.attribute);t.values.push(l)}return t}function wf(r,e,t,s,n="",o){const i={key:e.attribute},a=s.getIndex(e.attribute);if(!a)return i;for(const[l,c]of a.entries()){const u={key:l,value:l},d=new Map;for(const f of c)r.has(f)&&d.set(f,r.get(f));if(d.size){for(const f of t.values){if(u.values=u.values||[],n==="root"&&e?.calculateTotals===!1)continue;const h=tt(f,d,s.getIndex(f.attribute),f.attribute);u.values.push(h)}if(i.rows=i.rows||[],i.rows.push(u),t.rows.length>1){const f={...t,rows:t.rows.slice(1)};wr(d,f,u,n+Me+e.attribute+Me+l,s,o)}else if(t.columns)for(const f of t.columns){u.columns=u.columns||[];const h=En(d,f,t,s,n+Me+e.attribute+Me+l,o);u.columns.push(h)}}}return i}function En(r,e,t,s,n="",o){const i={key:e.attribute},a=s.getIndex(e.attribute);if(!a)return i;for(const[l,c]of a.entries()){const u={key:l,value:l},d=new Map;for(const f of c)r.has(f)&&d.set(f,r.get(f));if(d.size){for(const f of t.values){if(u.values=u.values||[],n==="root"&&e?.calculateTotals===!1)continue;const h=tt(f,d,s.getIndex(f.attribute),f.attribute);u.values.push(h)}if(i.columns=i.columns||[],i.columns.push(u),t.columns.length>1){const f={...t,columns:t.columns.slice(1)};wr(d,f,u,n+Me+e.attribute+Me+l,s,o)}}}return i}const $f=r=>r==null||r==="",Mn=(r,e=!1)=>{const t=typeof e=="boolean"?{deep:e}:e,s=t.deep??(t.sampleSize!==void 0&&t.sampleSize>1)?t.sampleSize??1/0:1,n=t.ignoreEmpty??s>1,o=[],i=Math.min(r.length,s);for(let a=0;a<i;a++){const l=r[a];if(l)for(const[c,u]of Object.entries(l)){if(n&&$f(u))continue;const d=Cf(u),f=o.find(h=>h.key===c);if(f)f.type!==d&&(f.type="any");else{const h={key:c,type:d};o.push(h)}}}return o},In=r=>Number(r)===r&&r%1===0,Sn=r=>Number(r)===r&&r%1!==0,Cf=r=>{switch(typeof r){case"string":return"string";case"number":return In(r)?"int":Sn(r)?"float":"any";case"boolean":return"boolean";case"object":return nf(r)?"date":"json";default:return"any"}};class _f{constructor(e,t,s){this.scriptController=e,this.globalItemService=t,this.modelParser=s}registeredCustomOperator=new Map;queryBuilder=new me;registerCustomOperator(e,t){this.registeredCustomOperator.set(e,t)}transformValue(e,t){if(Array.isArray(e))return e.map(s=>this.transformValue(s,t));if(typeof e!="string")return e;for(const s of t)s==="lowercase"?e=e.toLowerCase():s==="trim"?e=e.trim():s==="removeWhitespace"&&(e=e.replace(/\s/g,""));return e}evaluateQuery(e,t){let s,n=e.value;const o=e.options?.arrayValueHandling||"some";if(Array.isArray(e.options?.transform)&&e.options.transform.length>0&&(n=this.transformValue(n,e.options.transform)),e.attribute.includes(".")||e.attribute.includes("[")?s=Xe(t,e.attribute):s=t[e.attribute],Array.isArray(e.options?.transform)&&e.options.transform.length>0&&(s=this.transformValue(s,e.options.transform)),(typeof s>"u"||s===null)&&!["typeof","isTruthy","eq"].includes(e.operator))return!1;switch(e.operator){case"eq":return e.options?.invert?!yn(s,n):yn(s,n);case"find":return e.options?.invert?!this.queryFind(s,n,o):this.queryFind(s,n,o);case"lt":return Array.isArray(s)?o==="some"?s.some(i=>i<n):s.every(i=>i<n):s<n;case"gt":return Array.isArray(s)?o==="some"?s.some(i=>i>n):s.every(i=>i>n):s>n;case"lte":return Array.isArray(s)?o==="some"?s.some(i=>i<=n):s.every(i=>i<=n):s<=n;case"gte":return Array.isArray(s)?o==="some"?s.some(i=>i>=n):s.every(i=>i>=n):s>=n;case"typeof":return e.options?.invert?typeof s!==n:Array.isArray(s)?o==="some"?s.some(i=>typeof i===n):s.every(i=>typeof i===n):typeof s===n;case"isTruthy":return n===!0?Array.isArray(s)?o==="some"?s.some(i=>typeof!!i):s.every(i=>typeof!!i):!!s:!s;case"size":return typeof s=="string"?s.length===n:Zd(s)===n;default:if(this.scriptController.hasScript(e.operator))return this.scriptController.executeScript(e.operator,"operator",{query:e,item:t});if(this.registeredCustomOperator.has(e.operator)){const i=this.registeredCustomOperator.get(e.operator);if(typeof i=="function")return i(e,t)}}return!1}evaluateEqOperator(e,t,s,n){const o=new Map,i=n.get(t.attribute);if(i){let a;if(typeof t.value=="string"?a=t.value:t.value?.key&&Object.keys(t.value).length===1&&(a=t.value.key),typeof a<"u"){const l=i.get(a);if(l)if(l.forEach(c=>{s.has(c)&&o.set(c,s.get(c))}),t.options?.invert){const c=fn(Array.from(s.values()),Array.from(o.values()),"key"),u=new Map;return c.forEach(d=>{u.set(d.key,d)}),u}else return o}}for(let[a,l]of s){const c=this.queryBuilder.extractQueryAttributes({queries:[t]});if(c.some(u=>u.isDeepQuery)){const u=this.queryBuilder.getProjectionForAttributeEntries(c.filter(d=>d.isDeepQuery));l=this.globalItemService.getProjectedData(u,this.modelParser.models.get(e.modelKey),l)}this.evaluateQuery(t,l)&&o.set(a,l)}return o}equalRegexFn(e,t){if(typeof t=="string"&&Xd(t,"/")&&hn(t,"/"))try{return new RegExp(t.slice(1,-1)).test(e)}catch{return!1}else return Array.isArray(e)?!!e.find(s=>jt(s,t,this.equalRegexFn)):typeof t=="object"?Rd(e,t):e===t}queryFind(e,t,s){return Array.isArray(e)?typeof t=="string"||typeof t=="number"||typeof t=="boolean"?s==="some"?e.some(n=>jt(n,t,this.equalRegexFn)):e.every(n=>jt(n,t,this.equalRegexFn)):!!xd(e,t):jt(e,t,this.equalRegexFn)}validateQuery(e){if(this.queryBuilder.isQuery(e)){if(!e.attribute||!e.operator)throw new Error("invalid query - missing attribute or operator");if(e.operator==="find"&&Array.isArray(e.value))throw new Error("invalid query - find operator cannot have array value");return!0}else{if(this.queryBuilder.isQueryGroup(e))return pn(e.queries,t=>this.validateQuery(t));throw new Error("invalid query - missing query or attribute")}}getEvaluatedQueryDataset(e,t,s,n){const o=new Map;if(t.attribute.includes("[*]")){const i=t.options?.invert===!0,a=new Set;for(let l of s.values()){const c=this.queryBuilder.extractQueryAttributes({queries:[t]});if(c.some(f=>f.isDeepQuery)){const f=this.queryBuilder.getProjectionForAttributeEntries(c.filter(h=>h.isDeepQuery));l=this.globalItemService.getProjectedData(f,this.modelParser.models.get(e.modelKey),l)}const u=this.handleArrayStarQuery(t,l);let d=!1;for(const f of u.queries){const h={...f,options:{...f.options,invert:!1}};if(this.evaluateQuery(h,l)){d=!0;break}}d&&(a.add(l.key),i||o.set(l.key,l))}if(i)for(const[l,c]of s)a.has(l)||o.set(l,c)}else{if(t.operator==="eq")return this.evaluateEqOperator(e,t,s,n);for(let[i,a]of s){const l=this.queryBuilder.extractQueryAttributes({queries:[t]});if(l.some(c=>c.isDeepQuery)){const c=this.queryBuilder.getProjectionForAttributeEntries(l.filter(u=>u.isDeepQuery));a=this.globalItemService.getProjectedData(c,this.modelParser.models.get(e.modelKey),a)}this.evaluateQuery(t,a)&&o.set(i,a)}}return o}handleArrayStarQuery(e,t){const s=e.attribute.indexOf("[*]"),n={groupKey:e.queryKey||e.attribute+"[*]",groupType:"or",queries:[]};if(s!==-1){const o=e.attribute.substring(0,s),i=o.includes(".")?Xe(t,o):t[o];if(Array.isArray(i))for(let a=0;a<i.length;a++){const l=e.attribute.replace("[*]",`[${a}]`);n.queries.push({attribute:l,operator:e.operator,value:e.value,options:e.options})}}return n}evaluateQueryGroup(e,t,s,n,o){let i=new Map,a=s;if(!t.queries||t.queries?.length===0)return a;for(const l of t.queries){let c=new Map;if(this.queryBuilder.isQuery(l)?c=this.getEvaluatedQueryDataset(e,l,a,o):c=this.evaluateQueryGroup(e,l,a,n,o),i.size===0&&(i=c),t.groupType==="or")c.forEach(u=>{i.set(u.key,u)});else{const u=fn(Array.from(i.values()),Array.from(c.values()),"key");for(const d of u)i.delete(d.key)}t.groupType==="and"?a=i:a=s}return i}queryData(e,t,s,n){const o=new Map(e);return t.queries.length===0?e:(t.groupKey||(t.groupKey="root"),t.groupType||(t.groupType="and"),t.queries||(t.queries=[]),this.validateQuery(t),this.evaluateQueryGroup(t,t,o,s,n))}}class Df{scripts=new Map;scriptFunctions=new Map;constructor(){}keys(){return Array.from(this.scripts.keys())}setScript(e,t){this.scripts.set(e,t)}removeScript(e){this.scripts.delete(e)}getScript(e){return this.scripts.get(e)}hasScript(e){return this.scripts.has(e)}getScriptAsFn(e,t){if(this.scriptFunctions.has(e))return this.scriptFunctions.get(e);const s=this.getScript(e);if(!s)throw new Error(`Script ${e} not found`);const n=this.getWrapperScript(s),o=new Function("script_type",...t,n);return this.scriptFunctions.set(e,o),o}getWrapperScript(e){return`
|
|
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 n=Object.keys(s),o=Object.values(s);return this.getScriptAsFn(e,n)(t,...o)}}const Et=(r,e)=>r?(e||(e={}),r.replace(/\$\{(.*?)\}/g,(t,s)=>Xe(e,s.trim(),""))):"",$r=r=>{const e=new Set;return r.replace(/\$\{(.*?)\}/g,(t,s)=>(e.add(s.trim()),"")),{variables:Array.from(e).map(t=>({name:t}))}};var xf=Xt(function(r,e){return Re(r)?dn(r,js(e,1,Re)):[]});class Pf{constructor(e,t,s,n,o){this.modelParser=e,this.cdRef=t,this.item=s,this.indicesController=n,this.queryManager=o,this.cacheCtrl=new Dn(!!this.cdRef.dcuplInitOptions.performance?.cache?.enabled)}initialData;filteredData;model;filterItems=new Map;queryBuilder;cacheCtrl;projectionCache=new Map;init(e,t){this.model=e,this.initialData=t,this.filteredData=this.initialData,this.queryBuilder=new me,this.queryBuilder.init({modelKey:e.key}),this.initFilterItems({skipProcessing:!0})}indexDependsOnAttributes(e,t){const s=e.includes("_")?e.split("_")[0]:e;try{const n=D.parse(s);if(!n.isDeepQuery)return!1;const o=n.attribute.split(".");for(let i=0;i<o.length-1;i++)if(t.has(o[i]))return!0;return!1}catch{return!0}}invalidateAllCaches(e){this.cacheCtrl.clear(),this.projectionCache.clear();let t=0;if(e&&e.size>0){const n=this.indicesController.getDeepIndexKeys(),o=[];for(const i of n)this.indexDependsOnAttributes(i,e)&&o.push(i);for(const i of o)this.indicesController.reset(i);t=o.length}else{const n=this.indicesController.getIndexCount().deep;this.indicesController.resetAllDeepIndices(),t=n}const s=this.cdRef.dcuplInitOptions.logging;if(s&&s.level==="debug"){const n=this.indicesController.getIndexCount();console.debug("[Filter] Caches invalidated",{granular:e!==void 0,changedAttributes:e?Array.from(e):"all",deepIndicesReset:t,shallowIndicesPreserved:n.shallow,totalIndices:n.total})}}update(e,t,s){this.model=e,this.initialData=t,this.indicesController=s,this.invalidateAllCaches(),this.filteredData=this.getFilteredData(this.initialData,!1),this.initFilterItems({skipProcessing:!0})}updateWithChanges(e,t,s,n){this.model=e,this.initialData=t,this.indicesController=s,this.invalidateAllCaches(n),this.filteredData=this.getFilteredData(this.initialData,!1),this.initFilterItems({skipProcessing:!0})}resetCache(){this.invalidateAllCaches()}getDeepQueryAttributes(e){const t=new Set;if(!e||!e.queries)return[];for(const s of e.queries)if(s.queries)for(const n of s.queries)n.attribute&&D.parse(n.attribute).isDeepQuery&&t.add(n.attribute);return Array.from(t)}getProjectionForQuery(e){const t=this.getDeepQueryAttributes(e);if(t.length===0)return null;const s=t.map(n=>D.parse(n));return this.queryBuilder.getProjectionForAttributeEntries(s)}getProjectionCacheKey(e){const t=this.getDeepQueryAttributes(e);return t.length===0?"":t.sort().join("|")}getProjectedData(e,t,s){if(s&&this.projectionCache.has(s))return this.projectionCache.get(s);const n=new Map;for(const[o,i]of e){const a=this.item.getProjectedData(t,this.model,i);n.set(o,a)}return s&&this.projectionCache.set(s,n),n}initFilterItems(e){[...this.model.properties.values(),...this.model.references.values()].forEach(t=>{t.filter&&(Array.isArray(e?.filterKeys)?e?.filterKeys.includes(t.key)&&this.updateFilterItem(t.key,e):this.updateFilterItem(t.key,e))})}getAggregate(e,t,s){if(D.parse(e.attribute).isDeepQuery)return tt(e,t,s,e.attribute);{const n=this.model.getAttribute(e.attribute);if(!n)throw new Error("Attribute not found");return tt(e,t,s,n.key)}}getSections(e){const t={_meta:{currentSize:0,initialSize:0},items:[]},s=D.parse(e.attribute),n=s.isDeepQuery;let o;if(!n&&(o=this.model.getAttribute(e.attribute),!o))throw new Error("Attribute not found");let i=new Map,a;!n&&o&&(o.type==="singleValued"||o.type==="multiValued")&&(a=this.modelParser.models.get(o.model));const l={},c=this.getSortingProjectionForModel(e,this.model);l.sort=c;let u=this.item.getItemsAsMap(this.filteredData,this.model,l);if(n){const p=this.queryBuilder.getProjectionForAttributeEntries([s]),y=new Map;for(const[m,g]of u){const b=this.item.getProjectedData(p,this.model,g);y.set(m,b)}u=y}const d=this.indicesController.getOrCreateIndex(`${e.attribute}`,u,{childLevelSorting:c,query:this.queryBuilder.getQuery()}),f=this.getAggregate({attribute:e.attribute,types:["distinct"],excludeUndefineds:!0},u,d);if(f.distinct)for(const p of f.distinct){let y={key:p.value,value:p.value};const m=p.keys.filter(b=>u.has(b));if(a){const b=a.data.get(p.value);b&&(y=b)}const g={...y,key:p.value,_items:[],_aggregates:[],_meta:{size:m.length}};i.set(p.value,g)}const h={count:e.count,start:e.start,projection:e.projection};if(a){const p=this.getSortingProjectionForModel(e,a);h.sort=p}if(t._meta.currentSize=i.size,t._meta.initialSize=f.distinct.length,i=this.item.getItemsAsMap(i,a,h),Array.isArray(e?.aggregates)&&i.forEach(p=>{const y=f.distinct.find(g=>g.value===p.key),m=this.getDataByKeys(u,y.keys);p._aggregates=e.aggregates.map(g=>this.getAggregate(g,m,d))}),e?.items){const p=e.items?.find(y=>y.key==="*");p?i.forEach(y=>{const m=f.distinct.find(x=>x.value===y.key),g=this.getDataByKeys(u,m.keys),b=this.item.getItems(g,this.model,p);y._items=b}):i.forEach(y=>{const m=e.items?.find(g=>g.key===y.key);if(m){const g=f.distinct.find(B=>B.value===y.key),b=this.getDataByKeys(u,g.keys),x=this.item.getItems(b,this.model,m);y._items=x}})}return t.items=Array.from(i.values()),t}getSortingProjectionForModel(e,t){const s={attributes:[],order:[]};return e?.sort?.attributes.forEach((n,o)=>{if(t.properties.has(n)){s.attributes.push(n);const i=e.sort?.order;s.order.push(i[o])}}),s}getReferenceKeyForFilterKey(e){const t=this.filterItems.get(e);return t?.attributeKey||t?.key||e}updateFilterItem(e,t={}){const s={calculateFacets:!1,excludeZeros:!0,excludeUndefineds:!0,excludeUnresolved:!0,skipProcessing:!1},n=this.getReferenceKeyForFilterKey(e);if(!n)return;const o=this.model.references.get(n);let i={};if(typeof o?.filter=="object"?i=Object.assign(s,o.filter,t):i=Object.assign(s,t),o){this.updateFilterItemReference(o.key,o.key,i);return}const a=this.model.properties.get(n);if(a)if(Array.isArray(a.filter)){a.filter.forEach(l=>{const c=l?.comparisonType||"containsIgnoreCase";this.updateFilterItemProperty(l.key,a.key,a.type,c,i)});return}else{const l=a.filter?.comparisonType||"containsIgnoreCase";this.updateFilterItemProperty(a.key,a.key,a.type,l,i);return}if(e==="key"){this.updateFilterItemProperty("key","key","string","containsIgnoreCase",i);return}}updateFilterItemReference(e,t,s){let n=[];const o=this.model.references.get(t);if(o&&!s.skipProcessing){const a=this.modelParser.models.get(o.model);n=this.getFacets(o.key,a,s)}const i={key:e,attributeKey:t,enabled:!!n.find(a=>a.enabled),selected:!!n.find(a=>a.selected),type:"reference",entries:n};this.filterItems.set(i.key,i)}updateFilterItemProperty(e,t,s,n,o){const i=this.getFilterTypeForPropertyType(s),a=this.queryBuilder.hasQueryGroup(e),l={key:e,attributeKey:t,enabled:!0,selected:!!a,type:i};if(l.type==="text"&&(l.comparisonType=n),l.type==="boolean"){const c=this.getFacets(l.attributeKey,void 0,o);l.entries=c}o.skipProcessing||(l.type==="number"&&(l.range=this.getNumberRangesForFilterItem(l)),l.type==="date"&&(l.range=this.getDateRangesForFilterItem(l))),this.filterItems.set(l.key,l)}getNumberRange(e,t=e){let s=1/0,n=-1/0;for(const a of this.filteredData.values()){const l=a[e];if(!(typeof l>"u"||l===null))if(Array.isArray(l))for(const c of l)typeof c=="number"&&(c<s&&(s=c),c>n&&(n=c));else typeof l=="number"&&(l<s&&(s=l),l>n&&(n=l))}let o=1/0,i=-1/0;for(const a of this.initialData.values()){const l=a[e];if(!(typeof l>"u"||l===null))if(Array.isArray(l))for(const c of l)typeof c=="number"&&(c<o&&(o=c),c>i&&(i=c));else typeof l=="number"&&(l<o&&(o=l),l>i&&(i=l))}return s===1/0&&(s=0),n===-1/0&&(n=0),o===1/0&&(o=0),i===-1/0&&(i=0),{available:{min:s,max:n},initial:{min:o,max:i},relatedQuery:this.queryBuilder.getQueryGroup(t)}}getNumberRangesForFilterItem(e){return this.getNumberRange(e.attributeKey,e.key)}getDateRangesForFilterItem(e){return this.getDateRange(e.attributeKey,e.key)}getDateRange(e,t=e){let s=null,n=null;for(const l of this.filteredData.values()){const c=l[e];if(typeof c>"u"||c===null)continue;const u=Array.isArray(c)?c:[c];for(const d of u)d instanceof Date&&((!s||d<s)&&(s=d),(!n||d>n)&&(n=d))}let o=null,i=null;for(const l of this.initialData.values()){const c=l[e];if(typeof c>"u"||c===null)continue;const u=Array.isArray(c)?c:[c];for(const d of u)d instanceof Date&&((!o||d<o)&&(o=d),(!i||d>i)&&(i=d))}const a=new Date;return s||(s=a),n||(n=a),o||(o=a),i||(i=a),{available:{min:s,max:n},initial:{min:o,max:i},relatedQuery:this.queryBuilder.getQueryGroup(t)}}getFacets(e,t,s,n){let o;const i=this.cacheCtrl.generateContext({attributeKey:e,query:this.queryBuilder.getQuery(),options:s}),a=this.cacheCtrl.get("facets",i);if(a)return a;let l=new Map;o=this.indicesController.getIndex(e),t?l=t.getData():l=this.indicesController.getData(e);let c=n||this.initialData;if(!n){const d=this.queryBuilder.getQueryAttributeForString(e);if(d.isDeepQuery){const f=this.queryBuilder.getProjectionForAttributeEntries([d]);c=this.item.getItemsAsMap(c,this.model,{projection:f})}}if(!o||!l){this.indicesController.reset(e);const d=D.parse(e),f=d.isDeepQuery;let h=c;if(f){const p=this.queryBuilder.getProjectionForAttributeEntries([d]);h=new Map;for(const[y,m]of c){const g=this.item.getProjectedData(p,this.model,m);h.set(y,g)}}h.forEach(p=>{let y;f?(y=ge(p,e),y.length===0&&(y=[void 0])):y=[p[e]],this.indicesController.fillInverseIndex(e,p.key,y),this.indicesController.fillDataMap(e,y)}),o=this.indicesController.getIndex(e),l=this.indicesController.getData(e)}const u=kf(c,l,s,this.queryBuilder.getQuery(),e,this.indicesController.indexMap,this.queryManager);return this.cacheCtrl.set("facets",i,u,{models:new Set([this.model.key]),modelAttributes:new Map([[this.model.key,new Set([e])]])}),u}getDataByKeys(e,t){if(t){const s=new Map;return t.forEach(n=>{const o=e.get(n);o&&s.set(o.key,o)}),s}return e}getFilterTypeForPropertyType(e){switch(e){case"string":return"text";case"int":return"number";case"float":return"number";case"date":return"date";case"boolean":return"boolean";case"json":return"text";case"any":return"text";case"Array<string>":return"text";case"Array<int>":return"number";case"Array<float>":return"number";case"Array<date>":return"date"}}updateFilteredData(e){const t=ye.now();e?.skipProcessing||(this.filteredData=this.getFilteredData(this.initialData,!1),this.cdRef.trigger({scope:"list",type:"result_updated",action:"update",connectMessage:!0,listKey:this.cdRef.key,modelKey:this.model.key,start:t}))}getFilteredData(e,t){const s=this.cacheCtrl.generateContext({query:this.queryBuilder.getQuery(),earlyReturn:t}),n=this.cacheCtrl.get("data",s);if(n)return n;const o=this.queryBuilder.getQuery(),i=this.getProjectionForQuery(o);let a;if(i){const l=this.getProjectionCacheKey(o),c=this.getProjectedData(e,i,l),u=this.queryManager.queryData(c,o,t,this.indicesController.indexMap);a=new Map;for(const d of u.keys())e.has(d)&&a.set(d,e.get(d))}else a=this.queryManager.queryData(e,o,t,this.indicesController.indexMap);return this.cacheCtrl.set("data",s,a,{models:new Set([this.model.key]),modelAttributes:new Map}),a}getFilterItems(e){if(Array.isArray(e?.filterKeys)){const t=[];return e?.filterKeys.forEach(s=>{const n=this.getFilterItem(s,e);n&&t.push(n)}),t}else return e?.skipProcessing||this.initFilterItems(e),Array.from(this.filterItems.values())}getFilterItem(e,t){return this.filterItems.has(e)&&(t?.skipProcessing||this.updateFilterItem(e,t)),this.filterItems.get(e)}}class Tn{constructor(e,t){this.modelParser=e,this.scriptController=t}getItem(e,t,s,n){const o=n?.projection||{$:!0},i=t.get(e);return i?this.getProjectedData(o,s,i):null}getManyItems(e,t,s,n){const o=[];for(const i of e){const a=n?.projection||{$:!0},l=t.get(i);if(!l)continue;const c=this.getProjectedData(a,s,l);o.push(c)}return o}getItems(e,t,s){const n=this.getItemsAsMap(e,t,s);return Array.from(n.values())}getItemsAsMap(e,t,s){const n=s?.start||0,o=s?.count||e.size,i=s?.projection||{$:!0};return this.isValidSortProjection(s?.sort)&&(e=this.getSortedItems(e,s,t)),this.isValidScriptSorting(s?.sort)&&(e=this.getSortedItemsBasedOnScript(e,s)),this.getPagedData(e,n,o,i,t)}getSortedItemsBasedOnScript(e,t){const s=Array.from(e.values()),n=t?.sort?.script?.key||"",o=t?.sort?.script?.options||void 0;if(!this.scriptController.hasScript(n))return e;const i=this.scriptController.executeScript(n,"sort",{options:o,items:s});return new Map(i.map(a=>[a.key,a]))}getSortedItems(e,t,s){const n=[...t.sort.attributes],o=Array.from(e.values()),i=(u,d,f)=>{const h=u[d];return typeof h>"u"||h===null?f:typeof h=="string"?h.toLowerCase():typeof h=="object"&&typeof h?.key=="string"?h.key.toLowerCase():h},a=n.map((u,d)=>f=>{const h=t.sort.order.at(d),p=this.getUndefinedValueForSorting(u,h,s);return i(f,u,p)}),l=[...t.sort.order].map(u=>u.toLowerCase()),c=gn(o,[...a],l);return new Map(c.map(u=>[u.key,u]))}getUndefinedValueForSorting(e,t,s){const n=s?.properties.get(e);if(n){if(n.type==="string"){if(t=="ASC")return;if(t=="DESC")return""}if(n.type==="int"||n.type==="float"||n.type==="date"||n.type==="boolean"){if(t=="ASC")return 1/0;if(t=="DESC")return-1/0}}}isValidProjection(e){return!(!e||e.$===!0&&Object.keys(e).length===1)}getPagedData(e,t,s,n,o){const i=e.entries(),a=new Map;if(t===0&&s===e.size&&n?.$===!0&&Object.keys(n).length===1)return e;for(let l=0;l<t+s;l++){if(l<t){i.next();continue}if(l>t+s)break;const c=i.next().value;if(c)if(o&&n&&this.isValidProjection(n)){const u=this.getProjectedData(n,o,c[1]);a.set(c[0],u)}else a.set(c[0],c[1])}return a}isValidScriptSorting(e){return!(!e||!e.script)}isValidSortProjection(e){const t=["ASC","DESC"];return!(!e||!Array.isArray(e.attributes)||e.attributes.length===0||!Array.isArray(e.order)||e.attributes.length!==e.order.length||xf(e.order,t).length>0)}getProjectedData(e,t,s){let n={key:s.key};return e.$===!0&&(n=Object.assign({},s)),e.$$===!0&&(n=Object.assign({},s),t.references.forEach(o=>{e[o.key]||(e[o.key]={$:!0})})),Object.keys(e).filter(o=>o!=="$"&&o!=="$$").forEach(o=>{const i=e[o];if(i===!1){delete n[o];return}if(i===!0){n[o]=s[o];return}if(typeof i=="object"){const a=t.references.get(o);if(a){const l=this.modelParser.models.get(a.model);if(l){if(a.type==="multiValued"){const c=s[o]||[];n[o]=c.map(u=>{const d=typeof u=="string"?u:u.key,f=l.getEntry(d);return f?this.getProjectedData(i,l,f):this.modelParser.initOptions.referenceMetadata?.enabled?{key:d,_dcupl_ref_:"miss"}:null}).filter(Boolean)}else if(a.type==="singleValued"){const c=s[o];if(c){const u=typeof c=="string"?c:c.key,d=l?.getEntry(u);d?n[o]=this.getProjectedData(i,l,d):this.modelParser.initOptions.referenceMetadata?.enabled?n[o]={key:u,_dcupl_ref_:"miss"}:delete n[o]}}}}}}),n}}var jf=Object.defineProperty,Rf=Object.getOwnPropertyDescriptor,I=(r,e,t,s)=>{for(var n=Rf(e,t),o=r.length-1,i;o>=0;o--)(i=r[o])&&(n=i(e,t,n)||n);return n&&jf(e,t,n),n};let R=class{constructor(e,t,s){this.dcuplApi=e,this.cdRef=t,this.indicesController=s,this.itemService=new Tn(this.dcuplApi.modelParser,this.dcuplApi.scriptController),this.filter=new Pf(this.dcuplApi.modelParser,this.cdRef,this.itemService,this.indicesController,this.dcuplApi.queryManager)}metadata;model;filter;itemService;log=Ee.child({prefix:"Catalog"});initListeners(){this.initListMetadata()}initListMetadata(){this.metadata={key:this.model.key,currentSize:this.filter.filteredData.size,initialSize:this.filter.initialData.size,attributes:this.getModelAttributes(),views:this.getViews(),appliedQuery:this.filter.queryBuilder.getQuery()}}getModelAttributes(){return[...this.model.references.values(),...this.model.properties.values()]}query={apply:(e,t)=>this.applyQuery(e,t),applyOptions:(e,t)=>this.applyOptions(e,t),remove:e=>this.removeQuery(e),reset:(e={skipProcessing:!1})=>this.resetQuery(e),execute:e=>this.executeQuery(e),one:e=>this._getItem(e),many:e=>this._getManyItems(e),get:()=>this.getQuery(),has:e=>this.hasGroupOrQueryKey(e),addCondition:(e,t)=>this.applyQuery(e,{mode:"add",skipProcessing:t?.skipProcessing}),setCondition:(e,t)=>this.applyQuery(e,{mode:"set",skipProcessing:t?.skipProcessing}),addGroup:(e,t)=>this.applyQuery(e,{mode:"add",skipProcessing:t?.skipProcessing}),setGroup:(e,t)=>this.applyQuery(e,{mode:"set",skipProcessing:t?.skipProcessing}),removeCondition:(e,t)=>{if(Array.isArray(e)){for(const s of e)this.removeQuery(s,t);return this.getQuery()}return this.removeQuery(e,t)},removeGroup:(e,t)=>this.removeQuery({groupKey:e},t),clear:e=>this.resetQuery(e),current:()=>this.getQuery(),isEmpty:()=>this.getQuery().queries.length===0,items:e=>this.executeQuery(e),first:e=>{const t=e?{...e,count:1}:{count:1};return this.executeQuery(t)[0]},any:e=>{const t=e?{...e,count:1}:{count:1};return this.executeQuery(t).length>0},count:e=>this.executeQuery(e).length};filters={get:e=>this.getFilter(e),getAll:e=>this.getFilters(e)};fn={pivot:e=>this._getPivot(e),aggregate:e=>this.getAggregate(e),suggest:e=>this._getSuggestions(e),groupBy:e=>this._getSections(e),facets:e=>this._getFacets(e),metadata:()=>this._getMetadata()};getViews(){const e=[];return this.filter.modelParser.views.forEach(t=>{t.model===this.model.key&&e.push(t)}),e}_getMetadata(){return this.initListMetadata(),this.metadata}getFilters(e){return this._getFilters(e)}_getFilters(e){const t=this.filter.getFilterItems(e);return e?.filterKeys?e.filterKeys.map(s=>{const n=t.find(o=>o.key===s);return n||this.log.error("Filter not found",void 0,{filterKey:s,model:this.model.key}),n}).filter(Boolean):t}getFilter(e){return this._getFilter(e)}_getFilter(e){return this.filter.getFilterItem(e.filterKey,e)}getQuery(){return this.filter.queryBuilder.getQuery()}hasGroupOrQueryKey(e){return this.filter.queryBuilder.has(e)}applyQuery(e,t){const s=this.filter.queryBuilder.applyQuery(e,t);return this.filter.updateFilteredData({skipProcessing:t?.skipProcessing}),s}applyOptions(e,t){const s=this.filter.queryBuilder.applyOptions(e,t?.mode);return this.filter.updateFilteredData({skipProcessing:t?.skipProcessing}),s}removeQuery(e,t){let s;return e?s=this.filter.queryBuilder.removeQuery(e):s=this.filter.queryBuilder.removeAllQueries(),this.filter.updateFilteredData({skipProcessing:t?.skipProcessing}),s}resetQuery(e){const t=this.filter.queryBuilder.reset();return this.filter.updateFilteredData({skipProcessing:e?.skipProcessing}),t}executeQuery(e){if(!e)e=this.filter.queryBuilder.getQuery();else if(!e.queries){const i=this.filter.queryBuilder.getQuery();e=Object.assign({},i,e)}const t=this.filter.cacheCtrl.generateContext({options:e});if(this.filter.cacheCtrl.has("query",t))return this.filter.cacheCtrl.get("query",t);const s=Object.assign({},e,{modelKey:this.model.key}),n=this.dcuplApi.queryManager.queryData(this.filter.filteredData,s,!1,this.filter.indicesController.indexMap),o=this.itemService.getItems(n,this.model,e);return this.filter.cacheCtrl.set("query",t,o),o}_getSections(e){const t=this.filter.cacheCtrl.generateContext({options:e,query:this.filter.queryBuilder.getQuery()});if(this.filter.cacheCtrl.has("sections",t))return this.filter.cacheCtrl.get("sections",t);const s=this.filter.getSections(e);return this.filter.cacheCtrl.set("sections",t,s),s}_getItem(e){return this.itemService.getItem(e.itemKey,this.filter.filteredData,this.model,e)}_getManyItems(e){return this.itemService.getManyItems(e.itemKeys,this.filter.filteredData,this.model,e)}_getSuggestions(e){typeof e.excludeUndefineds>"u"&&(e.excludeUndefineds=!0),typeof e.excludeNulls>"u"&&(e.excludeNulls=!0),typeof e.calculateResultKeys>"u"&&(e.calculateResultKeys=!0);const t=this.filter.cacheCtrl.generateContext({options:e,query:this.filter.queryBuilder.getQuery()});if(this.filter.cacheCtrl.has("suggestions",t))return this.filter.cacheCtrl.get("suggestions",t);const s=D.parse(e.attribute).isDeepQuery;if(!s&&!this.model.getAttribute(e.attribute))throw new Error(`Attribute ${e.attribute} does not exist`);if(typeof e.value=="string"&&e.value.startsWith("/")&&e.value.endsWith("/"))try{new RegExp(e.value.slice(1,-1))}catch{return[]}let n,o;if(e.relevantData==="all")n=this.filter.initialData,o={modelKey:this.model.key,queries:[]};else if(e.relevantData==="filtered")n=this.filter.filteredData,o=this.filter.queryBuilder.getQuery();else if(e.relevantData==="excludeQuery"&&e.excludeQuery){const c=new me;c.init(this.filter.queryBuilder.getQuery()),c.removeQuery(e.excludeQuery),o=c.getQuery(),n=this.dcuplApi.queryManager.queryData(this.filter.initialData,o,!1,this.filter.indicesController.indexMap)}else n=this.filter.filteredData,o=this.filter.queryBuilder.getQuery();let i=n;if(s){const c=D.parse(e.attribute),u=this.filter.queryBuilder.getProjectionForAttributeEntries([c]),d=new Map;for(const[f,h]of n){const p=this.filter.item.getProjectedData(u,this.model,h);d.set(f,p)}i=d}const a=this.filter.indicesController.getOrCreateIndex(e.attribute,i,{query:o}),l=sf(i,a,e,this.dcuplApi.queryManager);return this.filter.cacheCtrl.set("suggestions",t,l),l}_getFacets(e){const t=this.filter.cacheCtrl.generateContext({options:e,query:this.filter.queryBuilder.getQuery()});if(this.filter.cacheCtrl.has("facets",t))return this.filter.cacheCtrl.get("facets",t);const s=D.parse(e.attribute).isDeepQuery;let n=e.attribute;e.attribute.split(".").length>1&&(n=e.attribute.split(".")[0]);const o=this.model.references.get(n);let i;o&&(i=this.filter.modelParser.models.get(o.model));let a;if(s){const l=D.parse(e.attribute),c=this.filter.queryBuilder.getProjectionForAttributeEntries([l]);a=new Map;for(const[u,d]of this.filter.filteredData){const f=this.filter.item.getProjectedData(c,this.model,d);a.set(u,f)}}return this.computeFacetsInternal(e,i,t,a)}computeFacetsInternal(e,t,s,n){typeof e.excludeZeros>"u"&&(e.excludeZeros=!0),typeof e.excludeUndefineds>"u"&&(e.excludeUndefineds=!0),typeof e.excludeUnresolved>"u"&&(e.excludeUnresolved=!0),typeof e.calculateResults>"u"&&(e.calculateResults=!0);const o=this.filter.getFacets(e.attribute,t,{calculateFacets:e.calculateResults,count:e.count,excludeZeros:e.excludeZeros,excludeUndefineds:e.excludeUndefineds,excludeUnresolved:e.excludeUnresolved,skipProcessing:!1},n);return this.filter.cacheCtrl.set("facets",s,o),o}getAggregate(e){const t=this.filter.cacheCtrl.generateContext({options:e,query:this.filter.queryBuilder.getQuery()});if(this.filter.cacheCtrl.has("aggregation",t))return this.filter.cacheCtrl.get("aggregation",t);const s=D.parse(e.attribute);let n=this.filter.filteredData;if(s.isDeepQuery){const i=this.filter.queryBuilder.getProjectionForAttributeEntries([s]),a=new Map;for(const[l,c]of this.filter.filteredData){const u=this.filter.item.getProjectedData(i,this.model,c);a.set(l,u)}n=a}const o=this.filter.getAggregate(e,n,this.filter.indicesController.getOrCreateIndex(e.attribute,n,this.filter.queryBuilder.getQuery()));return this.filter.cacheCtrl.set("aggregation",t,o),o}_getPivot(e){if(!e||!Array.isArray(e.columns)||!Array.isArray(e.rows)||!e.values||!e.values.length)return this.log.error("Invalid pivot options",void 0,{model:this.model.key}),{key:"invalid_options"};const t=this.filter.cacheCtrl.generateContext({options:e,query:this.filter.queryBuilder.getQuery()});if(this.filter.cacheCtrl.has("pivot",t))return this.filter.cacheCtrl.get("pivot",t);let s=new Rt;this.filter.filteredData.size===this.filter.initialData.size&&(s=this.filter.indicesController);const n=[...e.rows.map(a=>a.attribute),...e.columns.map(a=>a.attribute),...e.values.map(a=>a.attribute)].map(a=>D.parse(a)).filter(a=>a.isDeepQuery);let o;if(n.length>0){const a=this.filter.queryBuilder.getProjectionForAttributeEntries(n);o=new Map;for(const[l,c]of this.filter.filteredData){const u=this.filter.item.getProjectedData(a,this.model,c);o.set(l,u)}}const i=wr(this.filter.filteredData,e,{key:"root"},"root",s,o);return this.filter.cacheCtrl.set("pivot",t,i),i}};I([v({scope:"list",type:"fn_metadata",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"_getMetadata"),I([v({scope:"list",type:"filter_many",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"_getFilters"),I([v({scope:"list",type:"filter_one",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"_getFilter"),I([v({scope:"list",type:"query_get",cloneResult:!0})],R.prototype,"getQuery"),I([v({scope:"list",type:"query_has"})],R.prototype,"hasGroupOrQueryKey"),I([v({scope:"list",type:"query_apply",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"applyQuery"),I([v({scope:"list",type:"query_apply_options",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"applyOptions"),I([v({scope:"list",type:"query_remove",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"removeQuery"),I([v({scope:"list",type:"query_reset",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"resetQuery"),I([v({scope:"list",type:"query_execute",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"executeQuery"),I([v({scope:"list",type:"fn_groupBy",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"_getSections"),I([v({scope:"list",type:"query_one",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"_getItem"),I([v({scope:"list",type:"query_many",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"_getManyItems"),I([v({scope:"list",type:"fn_suggest",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"_getSuggestions"),I([v({scope:"list",type:"fn_facets",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"_getFacets"),I([v({scope:"list",type:"fn_aggregate",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"getAggregate"),I([v({scope:"list",type:"fn_pivot",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],R.prototype,"_getPivot");let Ef=class extends R{constructor(e,t,s){super(e,t,s),this.dcuplApi=e,this.cdRef=t,this.indicesController=s}listKey;init(e,t,s){this.listKey=e,this.model=t,this.filter.init(t,s),super.initListeners()}update(e,t,s){this.model=e,this.filter.update(e,t,s)}};function Mf(r,e){var t=-1,s=r.length;for(e||(e=Array(s));++t<s;)e[t]=r[t];return e}function If(r,e,t,s){var n=!t;t||(t={});for(var o=-1,i=e.length;++o<i;){var a=e[o],l=void 0;l===void 0&&(l=r[a]),n?At(t,a,l):ps(t,a,l)}return t}function Sf(r,e,t){if(!N(t))return!1;var s=typeof e;return(s=="number"?ee(t)&&Zt(e,t.length):s=="string"&&e in t)?Ue(t[e],r):!1}function Tf(r){return Xt(function(e,t){var s=-1,n=t.length,o=n>1?t[n-1]:void 0,i=n>2?t[2]:void 0;for(o=r.length>3&&typeof o=="function"?(n--,o):void 0,i&&Sf(t[0],t[1],i)&&(o=n<3?void 0:o,n=1),e=Object(e);++s<n;){var a=t[s];a&&r(e,a,s,o)}return e})}function Of(r){var e=[];if(r!=null)for(var t in Object(r))e.push(t);return e}var Kf=Object.prototype,Ff=Kf.hasOwnProperty;function qf(r){if(!N(r))return Of(r);var e=er(r),t=[];for(var s in r)s=="constructor"&&(e||!Ff.call(r,s))||t.push(s);return t}function On(r){return ee(r)?$s(r,!0):qf(r)}var Qf="[object Object]",Bf=Function.prototype,Vf=Object.prototype,Kn=Bf.toString,Gf=Vf.hasOwnProperty,Uf=Kn.call(Object);function Nf(r){if(!O(r)||Y(r)!=Qf)return!1;var e=Rs(r);if(e===null)return!0;var t=Gf.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&Kn.call(t)==Uf}function zf(r,e,t,s){for(var n=-1,o=r==null?0:r.length;++n<o;){var i=r[n];e(s,i,t(i),r)}return s}function Lf(r,e,t,s){return hr(r,function(n,o,i){e(s,n,t(n),i)}),s}function Wf(r,e){return function(t,s){var n=j(t)?zf:Lf,o={};return n(t,r,je(s),o)}}function Cr(r,e,t){(t!==void 0&&!Ue(r[e],t)||t===void 0&&!(e in r))&&At(r,e,t)}function _r(r,e){if(!(e==="constructor"&&typeof r[e]=="function")&&e!="__proto__")return r[e]}function Hf(r){return If(r,On(r))}function Jf(r,e,t,s,n,o,i){var a=_r(r,t),l=_r(e,t),c=i.get(l);if(c){Cr(r,t,c);return}var u=o?o(a,l,t+"",r,e,i):void 0,d=u===void 0;if(d){var f=j(l),h=!f&&ze(l),p=!f&&!h&&rr(l);u=l,f||h||p?j(a)?u=a:Re(a)?u=Mf(a):h?(d=!1,u=Os(l,!0)):p?(d=!1,u=Ns(l,!0)):u=[]:Nf(l)||Ne(l)?(u=a,Ne(a)?u=Hf(a):(!N(a)||Wt(a))&&(u=zs(l))):d=!1}d&&(i.set(l,u),n(u,l,s,o,i),i.delete(l)),Cr(r,t,u)}function Fn(r,e,t,s,n){r!==e&&un(e,function(o,i){if(n||(n=new z),N(o))Jf(r,e,i,t,Fn,s,n);else{var a=s?s(_r(r,i),o,i+"",r,e,n):void 0;a===void 0&&(a=o),Cr(r,i,a)}},On)}var Zf=Object.prototype,Xf=Zf.hasOwnProperty,Dr=Wf(function(r,e,t){Xf.call(r,t)?r[t].push(e):At(r,t,[e])}),Yf="[object Boolean]";function eh(r){return r===!0||r===!1||O(r)&&Y(r)==Yf}var st=Tf(function(r,e,t){Fn(r,e,t)});const q=(r,e,t)=>({title:r,type:"model",errorGroup:"ModelDefinitionError",errorType:"InvalidModelDefinition",attribute:e,description:t}),th=r=>{const e=["any","Array<date>","Array<float>","Array<int>","Array<string>","boolean","date","float","int","json","string"];if(!r.key)return q("Invalid Property",r.key,"Property key is missing");if(!r.type||e.indexOf(r.type)===-1)return q("Invalid Property",r.key,"Property type is invalid");if("derive"in r){if(!r.derive?.localReference)return q("Invalid Property",r.key,"Derived Property localReference is missing");if(!r.derive.remoteProperty)return q("Invalid Property",r.key,"Derived Property remoteProperty is missing")}if("expression"in r&&typeof r.expression!="string")return q("Invalid Property",r.key,"Expression is invalid")},rh=r=>{const e=["multiValued","singleValued"];if(!r.key)return q("Invalid Reference",r.key,"Reference key is missing");if(!r.type||e.indexOf(r.type)===-1)return q("Invalid Reference",r.key,"Reference type is invalid");if(!r.model)return q("Invalid Reference",r.key,"Reference model is missing");if("derive"in r){if(!r.derive.localReference)return q("Invalid Reference",r.key,"Derived Reference localReference is missing");if(!r.derive.remoteReference)return q("Invalid Reference",r.key,"Derived Reference remoteReference is missing")}if("resolve"in r){if(!r.resolve.reference)return q("Invalid Reference",r.key,"Resolved Reference reference is missing");if(!r.resolve.model)return q("Invalid Reference",r.key,"Resolved Reference model is missing")}if("groupBy"in r&&!r.groupBy.reference)return q("Invalid Reference",r.key,"Grouped Reference reference is missing")},sh=r=>{if(!r.key)throw new Error("Invalid Model: key is missing");if(typeof r.keyProperty<"u"&&typeof r.keyProperty!="string")throw new Error("Invalid Model: keyProperty must be a string");if(typeof r.autoGenerateKey<"u"&&typeof r.autoGenerateKey!="boolean")throw new Error("Invalid Model: autoGenerateKey must be a boolean");if(typeof r.autoGenerateProperties<"u"){const e=r.autoGenerateProperties;if(typeof e!="boolean"){if(typeof e!="object"||e===null||Array.isArray(e))throw new Error("Invalid Model: autoGenerateProperties must be a boolean or an options object");if(typeof e.deep<"u"&&typeof e.deep!="boolean")throw new Error("Invalid Model: autoGenerateProperties.deep must be a boolean");if(typeof e.sampleSize<"u"&&(typeof e.sampleSize!="number"||!Number.isFinite(e.sampleSize)||e.sampleSize<1))throw new Error("Invalid Model: autoGenerateProperties.sampleSize must be a positive number")}}if(r.properties&&!Array.isArray(r.properties))throw new Error("Invalid Model: properties must be an array");if(r.references&&!Array.isArray(r.references))throw new Error("Invalid Model: references must be an array");return!0},nh=(r,e)=>{const t=[];return r.references.forEach(s=>{e.has(s.model)||t.push({title:"Missing Model",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingModel",attribute:s.key,model:r.key,description:`Referenced model ${s.model} does not exist`}),"derive"in s&&t.push(...oh(s,r,e)),"resolve"in s&&t.push(...ih(s,r,e)),"groupBy"in s&&t.push(...ah(s,r))}),r.properties.forEach(s=>{"derive"in s&&t.push(...lh(s,r,e)),"expression"in s&&t.push(...ch(s,r))}),t},oh=(r,e,t)=>{const s=[],n=e.references.get(r.derive.localReference);if(!n)return s.push({title:"Missing Reference",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingReference",attribute:r.key,model:e.key,description:`Local Referenced ${r.derive.localReference} does not exist in model ${e.key}`}),s;const o=t.get(n.model);return o&&(o.references.get(r.derive.remoteReference)||s.push({title:"Missing Reference",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingReference",attribute:r.key,model:e.key,description:`Remote Reference ${r.derive.remoteReference} does not exist in model ${o.key}`})),s},ih=(r,e,t)=>{const s=[],n=t.get(r.resolve.model);return n?(n.references.get(r.resolve.reference)||s.push({title:"Missing Reference",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingReference",attribute:r.key,model:e.key,description:`Resolved Reference ${r.resolve.reference} does not exist in model ${n.key}`}),s):(s.push({title:"Missing Model",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingModel",attribute:r.key,model:e.key,description:`Referenced model ${r.model} does not exist`}),s)},ah=(r,e)=>{const t=[];return e.references.get(r.groupBy.reference)||t.push({title:"Missing Reference",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingReference",attribute:r.key,model:e.key,description:`Resolved Reference ${r.groupBy.reference} does not exist in model ${e.key}`}),t},lh=(r,e,t)=>{const s=[],n=e.references.get(r.derive.localReference);if(!n)return s.push({title:"Missing Reference",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingReference",attribute:r.key,model:e.key,description:`Local Referenced ${r.derive.localReference} does not exist in model ${e.key}`}),s;const o=t.get(n.model);if(o){if(r.derive.remoteProperty==="key")return s;o.properties.get(r.derive.remoteProperty)||s.push({title:"Missing Property",type:"model",errorGroup:"ModelDefinitionError",errorType:"MissingProperty",attribute:r.key,model:e.key,description:`Remote Property ${r.derive.remoteProperty} does not exist in model ${o.key}`})}return s},ch=(r,e)=>{const t=[];return $r(r.expression).variables.forEach(s=>{s.name==="key"||s.name.endsWith(".key")||!e.properties.get(s.name)&&!e.references.get(s.name)&&t.push({title:"Unknown Expression Variable",type:"model",errorGroup:"ModelDefinitionError",errorType:"UnknownExpressionVariable",attribute:r.key,model:e.key,description:`Expression Variable ${s.name} not found in expression ${r.key} in ${e.key}`})}),t},uh={REF_VALUE:"_dcupl_ref_"},dh={required:!0,forceStrictDataType:!1,nullable:!1,validatorHandling:"loose"},xr={enabled:!0,attributes:dh};let fh=class{constructor(e){this.modelParser=e,this.cdRef=e.cdRef}properties=new Map;references=new Map;attributeQualityConfigs=new Map;key;log=Ee.child({prefix:"Model"});initialDefinition;data=new Map;supportsAutoCreation=!1;autoGenerateKey=!1;autoGenerateProperties=!1;autoGeneratePropertiesOption=!1;keyProperty="key";valueMappings=[];meta;qualityConfig=xr;indicesController=new Rt;cdRef;groupedRefReverseIndex=new Map;init(e){this.key=e.key,this.initialDefinition=e,e.quality&&(this.qualityConfig=st({},xr,e.quality))}applyPropertiesAndReferences(e){e.properties?.map(t=>{const s=th(t);s?(s.model=this.key,this.setError(s)):(this.setAttributeQualityConfig(t),this.properties.set(t.key,t))}),e.references?.map(t=>{const s=rh(t);s?(s.model=this.key,this.setError(s)):(t.validity=t.validity||"loose",this.setAttributeQualityConfig(t),this.references.set(t.key,t))}),this.supportsAutoCreation=!!e.supportsAutoCreation,this.keyProperty=e.keyProperty||"key",this.autoGenerateKey=!!e.autoGenerateKey,this.autoGenerateProperties=!!e.autoGenerateProperties,this.autoGeneratePropertiesOption=e.autoGenerateProperties??!1,this.valueMappings=e.valueMappings||[],this.meta=e.meta}setAttributeQualityConfig(e){const t=this.qualityConfig.attributes,s=st({},xr,t,e.quality);this.attributeQualityConfigs.set(e.key,s)}getModelDefinition(){return this.autoGenerateProperties?{key:this.key,keyProperty:this.keyProperty,references:Array.from(this.references.values()),properties:Array.from(this.properties.values()),autoGenerateKey:this.autoGenerateKey,supportsAutoCreation:this.supportsAutoCreation,valueMappings:this.valueMappings,meta:this.meta,autoGenerateProperties:this.autoGeneratePropertiesOption,quality:this.qualityConfig}:this.initialDefinition}generatePropertiesFromContainer(e){const t=this.autoGeneratePropertiesOption;(typeof t=="object"&&t!==null?Mn(e.data,t):Mn(e.data,!1)).map(s=>{if(!this.properties.has(s.key)){if(s.key==="key"&&(e.keyProperty==="key"||!e.keyProperty))return;s.filter=!0,this.properties.set(s.key,s)}})}getReferenceKeys(e){return e.map(t=>{if(typeof t=="string")return String(t.trim());if(typeof t=="number")return String(t);if(t===null)return"null";if(typeof t=="object"&&t&&t.key)return t.key})}setError(e){this.modelParser.qualityController.enabled&&this.qualityConfig.enabled===!0&&(e.model=this.key,this.modelParser.qualityController.setError(e))}processBasicProperty(e,t,s){const n=t[e.key],o=this.attributeQualityConfigs.get(e.key);let i;if(typeof n>"u"){o?.required&&this.setError({title:"Undefined Value",type:"model",errorGroup:"PropertyDataError",errorType:"UndefinedValue",description:`The property "${e.key}" in the "${this.key}" model is required but is undefined`,itemKey:t.key,attribute:e.key,model:this.key});return}else{if(n===null)o?.nullable||this.setError({title:"Null Value",description:`The value of the property "${e.key}" in the "${this.key}" model should not be null`,type:"model",errorGroup:"PropertyDataError",errorType:"NullValue",itemKey:t.key,attribute:e.key,model:this.key}),i=n;else if(e.type==="string"){if(i=this.processStringProperty(e,n,t),typeof i>"u")return}else if(e.type==="int"){if(i=this.processIntProperty(e,n,t),typeof i>"u")return}else if(e.type==="float"){if(i=this.processFloatProperty(e,n,t),typeof i>"u")return}else if(e.type==="date"){if(i=this.processDateProperty(e,n,t),typeof i>"u")return}else if(e.type==="json"){if(i=this.processJSONProperty(e,n,t),typeof i>"u")return}else if(e.type==="boolean"){if(i=this.processBooleanProperty(e,n,t),typeof i>"u")return}else if(e.type==="any")i=n;else if(e.type==="Array<string>"){const a=this.getValueAsArray(n,e?.separator);Array.isArray(a)&&(i=[],a.forEach(l=>{const c=this.processStringProperty(e,l,t);typeof c<"u"&&i.push(c)}))}else if(e.type==="Array<int>"){const a=this.getValueAsArray(n,e?.separator);Array.isArray(a)&&(i=[],a.forEach(l=>{const c=this.processIntProperty(e,l,t);typeof c<"u"&&i.push(c)}))}else if(e.type==="Array<float>"){const a=this.getValueAsArray(n,e?.separator);Array.isArray(a)&&(i=[],a.forEach(l=>{const c=this.processFloatProperty(e,l,t);typeof c<"u"&&i.push(c)}))}else if(e.type==="Array<date>"){const a=this.getValueAsArray(n,e?.separator);Array.isArray(a)&&(i=[],a.forEach(l=>{const c=this.processDateProperty(e,l,t);typeof c<"u"&&i.push(c)}))}s[e.key]=i}e.index&&(this.indicesController.fillInverseIndex(e.key,s.key,[i]),this.indicesController.fillDataMap(e.key,[i]))}handleValidators(e,t,s){if(!this.modelParser.qualityController.enabled||this.qualityConfig.enabled!==!0)return!0;let n=!0;try{if(t.quality?.validators){const o=this.modelParser.qualityController.validateAttribute(e,t.quality.validators,t.key);for(const i of o)n=!1,i.attribute=t.key,i.itemKey=s.key,i.model=this.key,this.setError(i)}}catch(o){this.log.error("Validator definition error",o)}return n}getWrongDataTypeError(e,t,s){return{title:"Wrong Data Type",type:"model",errorGroup:"PropertyDataError",errorType:"WrongDataType",itemKey:s.key,attribute:e.key,model:this.key,description:`Expect ${e.type} but got ${typeof t} with value ${t}`,meta:{expected:e.type,rawValue:t,typeof:typeof t}}}getValueAsArray(e,t=","){if(e)return Array.isArray(e)?e:e&&typeof e=="string"?e.split(t).map(s=>s.trim()):[]}processStringProperty(e,t,s){const n=this.attributeQualityConfigs.get(e.key);let o=t;if(n?.forceStrictDataType){if(!Pt(t)){this.setError(this.getWrongDataTypeError(e,t,s));return}}else if(o=String(t),!Pt(o)&&o!=t){this.setError(this.getWrongDataTypeError(e,t,s));return}if(!(!this.handleValidators(o,e,s)&&n?.validatorHandling!=="loose"))return o}processIntProperty(e,t,s){const n=this.attributeQualityConfigs.get(e.key);if(n?.forceStrictDataType){if(!In(t)){this.setError(this.getWrongDataTypeError(e,t,s));return}return t}const o=parseInt(t,10);if(isNaN(o)){this.setError(this.getWrongDataTypeError(e,t,s));return}if(!(!this.handleValidators(o,e,s)&&n?.validatorHandling!=="loose"))return o}processFloatProperty(e,t,s){const n=this.attributeQualityConfigs.get(e.key);if(n?.forceStrictDataType){if(!Sn(t)){this.setError(this.getWrongDataTypeError(e,t,s));return}return t}let o;const i=e.fractionDigits;if(typeof i>"u"?o=parseFloat(t):o=parseFloat(parseFloat(t).toFixed(i)),isNaN(o)){this.setError(this.getWrongDataTypeError(e,t,s));return}if(!(!this.handleValidators(o,e,s)&&n?.validatorHandling!=="loose"))return o}processJSONProperty(e,t,s){if(this.attributeQualityConfigs.get(e.key)?.forceStrictDataType){if(!O(t)){this.setError(this.getWrongDataTypeError(e,t,s));return}return t}if(O(t))return t;if(!O(t)&&typeof t=="string")try{return JSON.parse(t)}catch{this.setError(this.getWrongDataTypeError(e,t,s));return}}processBooleanProperty(e,t,s){if(this.attributeQualityConfigs.get(e.key)?.forceStrictDataType){if(!eh(t)){this.setError(this.getWrongDataTypeError(e,t,s));return}return t}return!!t}processDateProperty(e,t,s){if(t===""){this.setError(this.getWrongDataTypeError(e,t,s));return}const n=e.inputFormat;let o;try{if(n&&typeof n=="string"){let i=t;typeof i!="string"&&(i=String(i)),o=uf(i,n,new Date)}else o=new Date(t)}catch(i){this.log.error("Property extraction error",i,{property:e.key,model:this.key}),this.setError(this.getWrongDataTypeError(e,t,s));return}if(!jn(o)){this.setError(this.getWrongDataTypeError(e,t,s));return}return e.UTC&&(o=new Date(Date.UTC(o.getFullYear(),o.getMonth(),o.getDate(),o.getHours(),o.getMinutes(),o.getSeconds(),o.getMilliseconds()))),o}processSingleValuedReference(e,t,s){const n=this.modelParser.models.get(e.model);if(!n)return;let o="";typeof t=="string"?o=t:typeof t=="object"&&t&&t.key&&(o=t.key);const i=n.getEntry(o);if(!i){if(n.supportsAutoCreation){const l=this.handleAutoCreationAndReturnKey(n,t);this.indicesController.fillInverseIndex(e.key,s.key,[t]),s[e.key]=l,this.setRefValue(l,"auto_hit");return}else if(this.indicesController.fillInverseIndex(e.key,s.key,[o]),this.setError({title:"Remote Reference Key Not Found",type:"model",errorGroup:"ReferenceDataError",errorType:"RemoteReferenceKeyNotFound",itemKey:s.key,attribute:e.key,description:`The reference "${e.key}" in the "${this.key}" model can not find the value "${t}" in the remote model "${e.model}"`,meta:{remoteModel:e.model,remoteKey:t}}),e.validity==="strict")return}this.indicesController.fillInverseIndex(e.key,s.key,[o]);const a={key:String(o)};s[e.key]=a,!i&&!n.supportsAutoCreation&&e.validity!=="strict"?this.setRefValue(a,"miss"):this.setRefValue(a,"hit")}processMultiValuedReference(e,t,s){const n=this.modelParser.models.get(e.model);if(!n)return;const o=this.getReferenceKeys(t),i=[];o.forEach((a,l)=>{const c=n.getEntry(a);if(!c){if(n.supportsAutoCreation){const d=this.handleAutoCreationAndReturnKey(n,t[l]);this.setRefValue(d,"auto_hit"),i.push(d);return}else if(this.setError({title:"Remote Reference Key Not Found",type:"model",errorGroup:"ReferenceDataError",errorType:"RemoteReferenceKeyNotFound",itemKey:s.key,attribute:e.key,description:`The reference "${e.key}" in the "${this.key}" model can not find the value "${a}" in the remote model "${e.model}"`,meta:{remoteModel:e.model,remoteKey:a}}),e.validity==="strict")return}const u={key:a};!c&&!n.supportsAutoCreation&&e.validity!=="strict"?this.setRefValue(u,"miss"):this.setRefValue(u,"hit"),i.push(u)}),this.indicesController.fillInverseIndex(e.key,s.key,i.map(a=>a.key)),s[e.key]=i}getViewKeys(){return this.modelParser._getViewKeys({modelKey:this.key})}addBasicPropertiesAndReferences(e){const t=this.getBasicProperties(),s=this.getBasicReferences();for(let n of e.data){let o=this.data.get(String(n.key));o?e.type==="set"&&this.setError({title:"Non Unique Key",type:"model",errorGroup:"DataContainerError",errorType:"NonUniqueKey",itemKey:n.key,model:e.model}):o={key:String(n.key)};for(const i of t){i.origin&&(n[i.key]=n[i.origin]);const a=this.valueMappings.find(l=>l.attributes.includes(i.key));this.isValidValueMapping(a)&&(n=this.mapRawValueUsingValueMapping(n,i.key,a)),this.processBasicProperty(i,n,o)}for(const i of s){const a=this.attributeQualityConfigs.get(i.key);i.origin&&(n[i.key]=n[i.origin]);const l=this.valueMappings.find(u=>u.attributes.includes(i.key));this.isValidValueMapping(l)&&(n=this.mapRawValueUsingValueMapping(n,i.key,l));let c=n[i.key];if(typeof c=="number"&&(c=String(c)),!c){this.indicesController.fillInverseIndex(i.key,o.key,[void 0]),a?.required&&this.setError({title:"Undefined Value",type:"model",errorGroup:"ReferenceDataError",errorType:"UndefinedValue",itemKey:n.key,attribute:i.key,model:e.model});continue}if(i.type==="singleValued")(typeof c=="object"||typeof c=="string")&&!Array.isArray(c)?this.processSingleValuedReference(i,c,o):this.setError({title:"Wrong Data Type",type:"model",errorGroup:"ReferenceDataError",errorType:"WrongDataType",description:`Expect ${i.type} but got ${typeof c} with value ${c}`,itemKey:n.key,attribute:i.key,meta:{value:c}});else if(i.type==="multiValued"){const u=this.getValueAsArray(c,i?.separator);Array.isArray(u)?this.processMultiValuedReference(i,u,o):this.setError({title:"Wrong Data Type",type:"model",errorGroup:"ReferenceDataError",errorType:"WrongDataType",description:`Expect ${i.type} but got ${typeof c} with value ${c}`,itemKey:n.key,attribute:i.key,meta:{value:c}})}}this.data.set(o.key,o)}}addQueryReferences(e){const t=this.getQueryReferences();for(let s of t){const n=JSON.stringify(s.query);for(let o of e.data){let i=this.data.get(String(o.key));const a=Et(n,{...o}),l=JSON.parse(a),c=new me;c.init({modelKey:s.model}),c.applyQuery(l,{mode:"set"}),l.projection||c.applyOptions({projection:{$:!1}});const u=c.getQuery();if(u.queries.length>0){const d=this.modelParser.dcuplInstance.query.execute(u);s.type==="singleValued"?d[0]&&(i[s.key]={key:d[0].key,_dcupl_ref_:"hit"}):s.type==="multiValued"&&(d.forEach(f=>{f._dcupl_ref_="hit"}),i[s.key]=d)}else s.type==="singleValued"?i[s.key]=null:s.type==="multiValued"&&(i[s.key]=[]);this.data.set(i.key,i)}}}isValidValueMapping(e){if(!e||!Array.isArray(e.attributes)||!Array.isArray(e.values))return!1;const t=e.values.find(n=>!Array.isArray(n.from)),s=e.values.find(n=>!n.to);return!(t||s)}mapRawValueUsingValueMapping(e,t,s){for(const n of s.values){if(n.from.includes("$dcupl_falsy")){if(typeof e[t]>"u"||e[t]===null||e[t]===""){e[t]=n.to;continue}continue}if(n.from.includes(e[t])){e[t]=n.to;continue}}return e}handleAutoCreationAndReturnKey(e,t){if(Array.isArray(t))return[];if(t===null)return{key:"null"};if(typeof t=="object"){const s=e.keyProperty,n=e.autoGenerateKey?L():String(t[s]);e.data.set(n,{key:n}),t.key=n;const o={model:e.key,data:[t]};return setTimeout(()=>{e.addContainer(o)},0),{key:n}}if(typeof t=="string"){e.data.set(t,{key:t});const s={model:e.key,data:[{key:t}]};setTimeout(()=>{e.addContainer(s)},0)}return{key:String(t)}}addContainer(e){if(this.cdRef.analyticsController.mark({name:"model:autogenerate_data:start",context:e.model}),this.modelParser.handleAlternativeKey([e]),!Array.isArray(e.data)){this.setError({title:"Invalid Data",type:"model",errorGroup:"DataContainerError",errorType:"WrongDataType",description:`Expect the data to be an Array but got ${typeof e.data}`,model:e.model});return}this.autoGenerateProperties&&this.generatePropertiesFromContainer(e),this.addBasicPropertiesAndReferences(e),this.addQueryReferences(e),this.addResolvedReferences(e),this.addDerivedReferencesGroupedReferencesDerivedPropertiesAndExpressionProperties(e),(this.hasDerivedPropertiesBasedOnResolvedReferences()||this?.hasDerivedReferencesBasedOnResolvedReferences())&&this.reRunDerivedPropertiesBasedOnResolves(e),this.cdRef.analyticsController.mark({name:"model:autogenerate_data:end",context:e.model}),this.cdRef.analyticsController.measure({name:"model:autogenerate_data",start:"model:autogenerate_data:start",end:"model:autogenerate_data:end",sum:!0,context:e.model,detail:{model:e.model,origin:this.key}})}addResolvedReferences(e){const t=this.getResolvedReferences().map(s=>{const n=this.modelParser.models.get(s.resolve.model);if(!n)return;const o=n.getDataAsArray(),i=n.indicesController.getIndex(s.resolve.reference);return{reference:s,model:n,remoteData:o,inverseKeys:i}}).filter(s=>!!s);for(const s of e.data){const n=String(s.key),o=this.data.get(n);for(const i of t){const a=i.reference.key;let l;if(i.inverseKeys){if(i.reference.type==="multiValued"){const c=i.inverseKeys.get(o.key)||new Set;l=Array.from(c).map(u=>({key:u}))}else{const c=i.inverseKeys.get(o.key),u=c&&Array.from(c)[0]||null;u?l={key:u}:l=null}o[a]=l,this.indicesController.fillInverseIndex(a,n,o[a])}}this.data.set(o.key,o)}}rebuildResolvedReferencesForAllItems(e){let t=this.getResolvedReferences();if(t.length===0||e&&(t=t.filter(n=>e.has(n.key)),t.length===0))return;const s=t.map(n=>{const o=this.modelParser.models.get(n.resolve.model);if(!o)return;const i=o.indicesController.getIndex(n.resolve.reference);return{reference:n,model:o,remoteData:[],inverseKeys:i}}).filter(n=>!!n);for(const n of this.data.values())for(const o of s){const i=o.reference.key;let a;if(o.inverseKeys){if(o.reference.type==="multiValued"){const l=o.inverseKeys.get(n.key)||new Set;a=Array.from(l).map(c=>({key:c}))}else{const l=o.inverseKeys.get(n.key),c=l?Array.from(l)[0]:null;c?a={key:c}:a=null}n[i]=a,this.indicesController.fillInverseIndex(i,n.key,n[i])}}}addDerivedReferencesGroupedReferencesDerivedPropertiesAndExpressionProperties(e){const t=this.getDerivedPropertiesForBasicAndDerivedReferences(),s=this.getExpressionProperties(),n=this.getDerivedReferences(),o=this.getGroupedReferences();for(const i of e.data){const a=this.data.get(String(i.key));n.length>0&&n.forEach(l=>{this.handleDerivedReferences(l,a)}),o.length>0&&o.forEach(l=>{this.handleGroupedReferences(l,a)}),t.length>0&&t.forEach(l=>{this.handleDerivedProperties(l,a)}),s.length>0&&s.forEach(l=>{const c=this.createExpressionContext(a),u=Et(l.expression,c);a[l.key]=u}),this.data.set(a.key,a)}}handleDerivedProperties(e,t){const s=this.references.get(e.derive.localReference);if(s){const n=this.modelParser.models.get(s.model);n&&(s.type==="singleValued"?this.handleSingleValuedDerivedProperties(n,t,s,e):s.type==="multiValued"&&this.handleMultiValuedDerivedProperties(n,t,s,e))}}reRunDerivedPropertiesBasedOnResolves(e){const t=this.getDerivedProperties(),s=this.getDerivedReferences();for(const n of e.data){const o=this.data.get(String(n.key));s.forEach(i=>{this.handleDerivedReferences(i,o)}),t.forEach(i=>{const a=this.references.get(i.derive.localReference);if(a){const l=this.modelParser.models.get(a.model);l&&(a.type==="singleValued"?this.handleSingleValuedDerivedProperties(l,o,a,i):a.type==="multiValued"&&this.handleMultiValuedDerivedProperties(l,o,a,i))}}),this.data.set(o.key,o)}}handleSingleValuedDerivedProperties(e,t,s,n){const o=t[s.key];if(!o){delete t[n.key];return}const i=e?.getData().get(o.key);if(i){const a=i[n.derive.remoteProperty];typeof a<"u"&&(t[n.key]=a),n.index&&this.indicesController.fillInverseIndex(n.key,t.key,[a])}else delete t[n.key]}handleMultiValuedDerivedProperties(e,t,s,n){const o=t[s.key];let i;o?Array.isArray(o)?i=[...o]:o&&typeof o.key=="string"?i=[{key:o.key}]:i=[]:i=[];const a=n.derive?.separator||", ",l=i.map(u=>{const d=e?.getData().get(u.key);if(d)return d[n.derive.remoteProperty]}).filter(Boolean);let c;n.type.includes("Array<")?c=l:n.type==="string"||n.type==="int"||n.type==="float"||n.type==="date"?c=l.join(a):(n.type,c=l),t[n.key]=c}handleDerivedReferences(e,t){const s=this.references.get(e.derive.localReference);if(!s)return;const n=this.modelParser.models.get(s.model);if(!n)return;const o=t[s.key];if(!o)return;let i=[];if(Array.isArray(o)){const l=new Set;o.forEach(c=>{const u=n?.data.get(c.key);if(u){const d=u[e.derive.remoteReference];d&&(Array.isArray(d)?d.forEach(f=>{l.add(f.key)}):l.add(d.key))}}),i=Array.from(l.values())}else{const l=n?.data.get(o.key);if(l){const c=l[e.derive.remoteReference];c?Array.isArray(c)?i=c.map(u=>u.key):"key"in c&&(i=[c.key]):i=[]}}let a;e.type==="singleValued"?a={key:i[0]}:a=i.map(l=>({key:l})),this.indicesController.fillInverseIndex(e.key,t.key,i),t[e.key]=a}asStringArray(e){return e?Array.isArray(e)?e.map(t=>t.key):[e.key]:[]}buildReverseIndexForReference(e){const t=new Map;this.data.forEach(s=>{const n=this.asStringArray(s[e]);for(const o of n)t.has(o)||t.set(o,new Set),t.get(o).add(s.key)}),this.groupedRefReverseIndex.set(e,t)}ensureReverseIndex(e){return this.groupedRefReverseIndex.has(e)||this.buildReverseIndexForReference(e),this.groupedRefReverseIndex.get(e)}handleGroupedReferences(e,t){const s=[],n=this.references.get(e.groupBy.reference);if(n){const o=this.asStringArray(t[n.key]);if(!o.length)return;const i=this.ensureReverseIndex(n.key),a=new Set;for(const l of o){const c=i.get(l);c&&c.forEach(u=>a.add(u))}for(const l of a)e.groupBy.includeSelfInGroup?s.push({key:l}):t.key!==l&&s.push({key:l})}t[e.key]=s}resetData(){this.data.clear(),this.groupedRefReverseIndex.clear()}resetIndexMap(){this.indicesController.reset()}deleteDataEntries(e){for(const t of e.data){const s=String(t.key);this.data.delete(s),this.indicesController.removeItemFromAllIndices(s),this.groupedRefReverseIndex.forEach(n=>{n.forEach(o=>{o.delete(s)})})}}getItemCount(){return this.data.size}getAttributes(){return[...this.references.values(),...this.properties.values()]}getAttribute(e){return e==="key"?{key:"key",type:"string"}:this.references.get(e)||this.properties.get(e)}getReferencesRelevantForDependencyGraph(){return Array.from(this.references.values()).filter(e=>!("derive"in e)&&!("resolve"in e))}getBasicReferences(){return Array.from(this.references.values()).filter(e=>!("derive"in e)&&!("resolve"in e)&&!("query"in e)&&!("groupBy"in e))}getQueryReferences(){return Array.from(this.references.values()).filter(e=>"query"in e)}getResolvedReferences(){return Array.from(this.references.values()).filter(e=>"resolve"in e)}getGroupedReferences(){return Array.from(this.references.values()).filter(e=>"groupBy"in e)}getDerivedReferences(){return Array.from(this.references.values()).filter(e=>"derive"in e)}getAggregatedReferences(){return Array.from(this.references.values()).filter(e=>"aggregate"in e)}getBasicProperties(){return Array.from(this.properties.values()).filter(e=>!("derive"in e)&&!("expression"in e))}getDerivedProperties(){return Array.from(this.properties.values()).filter(e=>"derive"in e)}getDerivedPropertiesForBasicAndDerivedReferences(){const e=this.getBasicReferences(),t=this.getDerivedReferences(),s=this.getQueryReferences(),n=this.getDerivedProperties(),o=[...e,...t,...s];return n.filter(i=>o.find(a=>a.key===i.derive?.localReference))}getDerivedPropertiesForResolvedReferences(){const e=this.getResolvedReferences();return this.getDerivedProperties().filter(t=>e.find(s=>s.key===t.derive?.localReference))}getDerivedReferencesForResolvedReferences(){const e=this.getResolvedReferences();return this.getDerivedReferences().filter(t=>e.find(s=>s.key===t.derive.localReference))}getExpressionProperties(){return Array.from(this.properties.values()).filter(e=>"expression"in e)}getAggregatedProperties(){return Array.from(this.properties.values()).filter(e=>"aggregate"in e)}hasBasicReferences(){return this.getBasicReferences().length>0}hasQueryReferences(){return this.getQueryReferences().length>0}hasResolvedReferences(){return this.getResolvedReferences().length>0}hasGroupedReferences(){return this.getGroupedReferences().length>0}hasDerivedReferences(){return this.getDerivedReferences().length>0}hasBasicProperties(){return this.getBasicProperties().length>0}hasDerivedProperties(){return this.getDerivedProperties().length>0}hasDerivedPropertiesForBasicReferences(){return this.getDerivedPropertiesForBasicAndDerivedReferences().length>0}hasDerivedPropertiesBasedOnResolvedReferences(){return this.getDerivedPropertiesForResolvedReferences().length>0}hasDerivedReferencesBasedOnResolvedReferences(){return this.getDerivedReferencesForResolvedReferences().length>0}hasExpressionProperties(){return this.getExpressionProperties().length>0}hasAggregatedProperties(){return this.getAggregatedProperties().length>0}getData(e){if(e?.itemKeys){const t=new Map;return e.itemKeys.forEach(s=>{const n=this.data.get(s);n&&t.set(n.key,n)}),t}return this.data}getDataAsArray(){return Array.from(this.data.values())}getEntry(e){return this.data.get(e)}setRefValue(e,t){this.modelParser.initOptions.referenceMetadata?.enabled&&Object.defineProperty(e,uh.REF_VALUE,{value:t,enumerable:!0,writable:!1,configurable:!1})}addBasicPropertiesAndReferencesPartial(e,t){const s=this.getBasicProperties().filter(o=>t.has(o.key)),n=this.getBasicReferences().filter(o=>t.has(o.key));for(let o of e.data){let i=this.data.get(String(o.key));i||(i={key:String(o.key)});for(const a of s){a.origin&&(o[a.key]=o[a.origin]);const l=this.valueMappings.find(c=>c.attributes.includes(a.key));this.isValidValueMapping(l)&&(o=this.mapRawValueUsingValueMapping(o,a.key,l)),this.processBasicProperty(a,o,i)}for(const a of n){const l=this.attributeQualityConfigs.get(a.key);a.origin&&(o[a.key]=o[a.origin]);const c=this.valueMappings.find(f=>f.attributes.includes(a.key));this.isValidValueMapping(c)&&(o=this.mapRawValueUsingValueMapping(o,a.key,c));let u=o[a.key];typeof u=="number"&&(u=String(u));const d=i[a.key];if(!u){d&&this.indicesController.removeFromInverseIndex(a.key,i.key,[d]),this.indicesController.fillInverseIndex(a.key,i.key,[void 0]),delete i[a.key],l?.required&&this.setError({title:"Undefined Value",type:"model",errorGroup:"ReferenceDataError",errorType:"UndefinedValue",itemKey:o.key,attribute:a.key,model:e.model});continue}if(a.type==="singleValued")(typeof u=="object"||typeof u=="string")&&!Array.isArray(u)?(d&&d.key!==u&&this.indicesController.removeFromInverseIndex(a.key,i.key,[d]),this.processSingleValuedReference(a,u,i)):this.setError({title:"Wrong Data Type",type:"model",errorGroup:"ReferenceDataError",errorType:"WrongDataType",description:`Expect ${a.type} but got ${typeof u} with value ${u}`,itemKey:o.key,attribute:a.key,meta:{value:u}});else if(a.type==="multiValued"){const f=this.getValueAsArray(u,a?.separator);Array.isArray(f)?(d&&Array.isArray(d)&&this.indicesController.removeFromInverseIndex(a.key,i.key,d),this.processMultiValuedReference(a,f,i)):this.setError({title:"Wrong Data Type",type:"model",errorGroup:"ReferenceDataError",errorType:"WrongDataType",description:`Expect ${a.type} but got ${typeof u} with value ${u}`,itemKey:o.key,attribute:a.key,meta:{value:u}})}}this.data.set(i.key,i)}}addQueryAndResolvedReferencesPartial(e,t){if(this.hasQueryReferences()){const s=this.getQueryReferences().filter(n=>t.has(n.key));for(let n of s){const o=JSON.stringify(n.query);for(let i of e.data){let a=this.data.get(String(i.key));if(!a)continue;const l=Et(o,{...i}),c=JSON.parse(l),u=new me;u.init({modelKey:n.model}),u.applyQuery(c,{mode:"set"}),c.projection||u.applyOptions({projection:{$:!1}});const d=u.getQuery();if(d.queries.length>0){const f=this.modelParser.dcuplInstance.query.execute(d);n.type==="singleValued"?f[0]&&(a[n.key]={key:f[0].key,_dcupl_ref_:"hit"}):n.type==="multiValued"&&(f.forEach(h=>{h._dcupl_ref_="hit"}),a[n.key]=f)}else n.type==="singleValued"?a[n.key]=null:n.type==="multiValued"&&(a[n.key]=[]);this.data.set(a.key,a)}}}this.hasResolvedReferences()&&this.getResolvedReferences().filter(s=>t.has(s.key)).length>0&&this.rebuildResolvedReferencesForAllItems()}createExpressionContext(e){const t={...e};return this.references.forEach((s,n)=>{const o=e[n];if(!o)return;const i=this.modelParser.models.get(s.model);if(i)if(s.type==="singleValued"&&typeof o=="object"&&"key"in o){const a=i.getData().get(o.key);a&&(t[n]=this.createNestedContext(a,i))}else s.type==="multiValued"&&Array.isArray(o)&&(t[n]=o.map(a=>{const l=i.getData().get(a.key);return l?this.createNestedContext(l,i):null}).filter(Boolean))}),t}createNestedContext(e,t){const s={...e};return t.references.forEach((n,o)=>{const i=e[o];if(!i)return;const a=this.modelParser.models.get(n.model);if(a&&n.type==="singleValued"&&typeof i=="object"&&"key"in i){const l=a.getData().get(i.key);l&&(s[o]={...l})}}),s}addDerivedAndExpressionAttributesPartial(e,t){const s=this.getDerivedPropertiesForBasicAndDerivedReferences().filter(a=>t.has(a.key)),n=this.getDerivedReferences().filter(a=>t.has(a.key)),o=this.getGroupedReferences().filter(a=>t.has(a.key)),i=this.getExpressionProperties().filter(a=>t.has(a.key));for(const a of e.data){const l=this.data.get(String(a.key));l&&(n.forEach(c=>{this.handleDerivedReferences(c,l)}),o.forEach(c=>{this.handleGroupedReferences(c,l)}),s.forEach(c=>{this.handleDerivedProperties(c,l)}),i.forEach(c=>{const u=this.createExpressionContext(l),d=Et(c.expression,u);l[c.key]=d}),this.data.set(l.key,l))}}reRunDerivedPropertiesBasedOnResolvesPartial(e,t){const s=this.getDerivedProperties().filter(o=>t.has(o.key)),n=this.getDerivedReferences().filter(o=>t.has(o.key));for(const o of e.data){const i=this.data.get(String(o.key));i&&(n.forEach(a=>{this.handleDerivedReferences(a,i)}),s.forEach(a=>{this.handleDerivedProperties(a,i)}),this.data.set(i.key,i))}}},hh=class{changedAttributes;changedItems;deletedItems;modelFullReset;state="clean";constructor(){this.changedAttributes=new Map,this.changedItems=new Map,this.deletedItems=new Map,this.modelFullReset=new Set}recordDataChange(e){const t=e.model;if(!(!e.data||e.data.length===0))if(e.type==="set")this.state==="clean"?this.state="full-reset":this.state==="tracking"&&(this.state="full-reset",this.changedAttributes.delete(t),this.changedItems.delete(t),this.deletedItems.delete(t)),this.modelFullReset.add(t);else{if(this.modelFullReset.has(t))return;this.state==="clean"?this.state="tracking":this.state==="full-reset"&&(this.state="tracking"),e.type==="remove"?this.recordDeletedItems(t,e.data):this.recordChangedData(t,e.data)}}recordAttributeChange(e,t){this.changedAttributes.has(e)||this.changedAttributes.set(e,new Set),this.changedAttributes.get(e).add(t)}recordChangedData(e,t){this.changedAttributes.has(e)||this.changedAttributes.set(e,new Set),this.changedItems.has(e)||this.changedItems.set(e,new Set);const s=this.changedAttributes.get(e),n=this.changedItems.get(e);for(const o of t){o.key&&n.add(String(o.key));for(const i in o)i!=="key"&&s.add(i)}}recordDeletedItems(e,t){this.deletedItems.has(e)||this.deletedItems.set(e,new Set);const s=this.deletedItems.get(e);for(const n of t)n.key&&s.add(String(n.key))}getChangedAttributes(){return this.changedAttributes}getChangedAttributesForModel(e){return this.changedAttributes.get(e)}getChangedItems(e){return this.changedItems.get(e)||new Set}getDeletedItems(e){return this.deletedItems.get(e)||new Set}getModelsWithChanges(){const e=new Set;for(const t of this.changedAttributes.keys())e.add(t);for(const t of this.changedItems.keys())e.add(t);for(const t of this.deletedItems.keys())e.add(t);return Array.from(e)}getModelsWithFullReset(){return this.modelFullReset}hasFullReset(e){return this.modelFullReset.has(e)}hasChanges(){return this.changedAttributes.size>0||this.changedItems.size>0||this.deletedItems.size>0||this.modelFullReset.size>0}getTotalChangedItemCount(){let e=0;for(const t of this.changedItems.values())e+=t.size;return e}getAffectedModelRatio(e){return e===0?0:(this.getModelsWithChanges().length+this.modelFullReset.size)/e}getAffectedItemRatio(e,t){return t===0?0:this.getChangedItems(e).size/t}clear(){this.changedAttributes.clear(),this.changedItems.clear(),this.deletedItems.clear(),this.modelFullReset.clear(),this.state="clean"}requiresFullReset(){return this.state==="full-reset"}getState(){return this.state}getStats(){let e=0,t=0,s=0;for(const n of this.changedItems.values())e+=n.size;for(const n of this.deletedItems.values())t+=n.size;for(const n of this.changedAttributes.values())s+=n.size;return{modelsWithChanges:this.getModelsWithChanges().length,modelsWithFullReset:this.modelFullReset.size,totalChangedItems:e,totalDeletedItems:t,totalChangedAttributes:s}}},ph=class{metrics=[];enabled=!1;constructor(){}enable(){this.enabled=!0}disable(){this.enabled=!1}isEnabled(){return this.enabled}recordUpdate(e){this.enabled&&(this.metrics.push({...e,timestamp:Date.now()}),this.metrics.length>100&&this.metrics.shift())}getMetrics(){return[...this.metrics]}getSummary(){if(this.metrics.length===0)return{totalUpdates:0,partialUpdates:0,fullUpdates:0,avgPartialUpdateTime:0,avgFullUpdateTime:0,avgAttributesProcessed:0,avgModelsAffected:0,totalTimeSaved:0};const e=this.metrics.filter(l=>l.type==="partial"),t=this.metrics.filter(l=>l.type==="full"),s=e.length>0?e.reduce((l,c)=>l+c.durationMs,0)/e.length:0,n=t.length>0?t.reduce((l,c)=>l+c.durationMs,0)/t.length:0,o=e.length>0?e.reduce((l,c)=>l+(c.attributesProcessed||0),0)/e.length:0,i=e.length>0?e.reduce((l,c)=>l+(c.modelsAffected||0),0)/e.length:0,a=n>0?e.reduce((l,c)=>l+(n-c.durationMs),0):0;return{totalUpdates:this.metrics.length,partialUpdates:e.length,fullUpdates:t.length,avgPartialUpdateTime:s,avgFullUpdateTime:n,avgAttributesProcessed:o,avgModelsAffected:i,totalTimeSaved:a}}getLastUpdates(e=10){return this.metrics.slice(-e)}clear(){this.metrics=[]}getMetricsInRange(e,t){return this.metrics.filter(s=>s.timestamp>=e&&s.timestamp<=t)}};function yh(r){return"query"in r}function Pr(r){return"resolve"in r}function gh(r){return"derive"in r}function mh(r){return"groupBy"in r}var vh=Object.defineProperty,bh=Object.getOwnPropertyDescriptor,Mt=(r,e,t,s)=>{for(var n=bh(e,t),o=r.length-1,i;o>=0;o--)(i=r[o])&&(n=i(e,t,n)||n);return n&&vh(e,t,n),n};class nt{constructor(e,t,s){this.cdRef=e,this.qualityController=t,this.dcuplInstance=s,this.qualityController.modelParser=this}unprocessedModelDescriptions=new Map;unprocessedData=[];dependencyGraph;attributeDependencyGraph;changeTracker=new hh;partialUpdateMetrics=new ph;views=new Map;models=new Map;initOptions;calculationTimings=[];log=Ee.child({prefix:"ModelParser"});async init(){this.changeTracker.clear(),this.qualityController.enabled&&(this.qualityController.resetValidationErrors(),this.models.get("$DcuplErrorTrackingErrors")||this.qualityController.initErrorTrackingModels()),this.prepareModels(),this.qualityController.enabled&&this.validateModels(),this.initDependencyGraph(),this.buildAttributeDependencyGraph(),this.validateAttributeDependencyGraph();const e=this.getMergedContainers(this.unprocessedData);await this.connectDataWithModels(e),this.qualityController.enabled&&await this.qualityController.initData(),this.changeTracker.clear()}prepareModels(){this.unprocessedModelDescriptions.forEach(e=>{if(this.models.has(e.key))this.models.get(e.key).resetData(),this.models.get(e.key).resetIndexMap(),this.models.get(e.key).applyPropertiesAndReferences(e);else{const t=new fh(this);t.init(e),t.applyPropertiesAndReferences(e),this.models.set(t.key,t)}})}validateModels(){this.models.forEach(e=>{e.qualityConfig.enabled===!0&&nh(e,this.models).forEach(t=>{this.setError(t,e)})})}initDependencyGraph(){this.dependencyGraph=new Cn,this.models.forEach(t=>{this.dependencyGraph.addNode(t.key)}),this.models.forEach(t=>{t.getReferencesRelevantForDependencyGraph().forEach(s=>{t.key!==s.model&&(this.dependencyGraph.addNode(s.model),this.dependencyGraph.addDependency(t.key,s.model))})});const e=this.dependencyGraph.validateNoCycles();if(e.hasCycle){const t=e.path.join(" → ");throw this.log.error(`Circular dependency detected in model references: ${t}
|
|
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
|
|
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]===`
|
|
7
|
+
Models cannot have circular references as this leads to unpredictable behavior during updates.`)}}buildAttributeDependencyGraph(){this.attributeDependencyGraph=new tf,this.models.forEach(e=>{const t=e.key;e.properties.forEach((s,n)=>{if(s.expression)this.processExpressionProperty(t,n,s.expression);else if(s.derive)this.processDerivedProperty(t,n,s.derive);else{const o={modelKey:t,attributeKey:n,type:"property",processingStep:1};this.attributeDependencyGraph.addAttribute(o)}}),e.references.forEach((s,n)=>{if(yh(s))this.processQueryReference(t,n,s.query);else if(Pr(s))this.processResolvedReference(t,n,s.resolve);else if(gh(s))this.processDerivedReference(t,n,s.derive);else if(mh(s))this.processGroupedReference(t,n,s.groupBy);else{const o={modelKey:t,attributeKey:n,type:"reference",processingStep:1};this.attributeDependencyGraph.addAttribute(o)}})})}validateAttributeDependencyGraph(){const e=new Map;this.models.forEach(s=>{const n=[];s.properties.forEach((o,i)=>{n.push(i)}),s.references.forEach((o,i)=>{n.push(i)}),n.length>0&&e.set(s.key,n)});const t=this.attributeDependencyGraph.validateCompleteness(e);if(!t.isComplete){const s=t.missing.length,n=t.missing.map(({modelKey:i,attributeKey:a})=>`${i}.${a}`).slice(0,10).join(", "),o=`Attribute dependency graph incomplete. ${s} attribute(s) missing: ${n}${s>10?` ... and ${s-10} more`:""}`;this.log.warn(`${o}
|
|
8
|
+
These attributes will default to Step 1 processing which may be incorrect. This usually indicates a problem during expression or reference parsing.`)}}processExpressionProperty(e,t,s){const n={modelKey:e,attributeKey:t,type:"property",processingStep:3};this.attributeDependencyGraph.addAttribute(n);const{variables:o}=$r(s);o.forEach(i=>{const a=i.name.split("."),l=this.models.get(e);if(!l)return;const c=a[0];if(l.properties.has(c)){const u={modelKey:e,attributeKey:c,type:"property",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(n,u)}else if(l.references.has(c)){const u={modelKey:e,attributeKey:c,type:"reference",processingStep:1};if(this.attributeDependencyGraph.addAttributeDependency(n,u),a.length>1){let d=l,f=e;for(let h=0;h<a.length-1;h++){const p=a[h],y=d.references.get(p);if(y){const m=this.models.get(y.model);if(m&&(d=m,f=y.model,h===a.length-2)){const g=a[a.length-1],b={modelKey:f,attributeKey:g,type:"property",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(n,b)}}}}}})}processDerivedProperty(e,t,s){const n={modelKey:e,attributeKey:t,type:"property",processingStep:3};this.attributeDependencyGraph.addAttribute(n);const o={modelKey:e,attributeKey:s.localReference,type:"reference",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(n,o);const i=this.models.get(e);if(i){const a=i.references.get(s.localReference);if(a){const l={modelKey:a.model,attributeKey:s.remoteProperty,type:"property",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(n,l)}}}processQueryReference(e,t,s){const n={modelKey:e,attributeKey:t,type:"reference",processingStep:2};this.attributeDependencyGraph.addAttribute(n);try{const o=JSON.stringify(s),{variables:i}=$r(o);i.forEach(a=>{const l=a.name,c=this.models.get(e);if(c){if(c.properties.has(l)){const u={modelKey:e,attributeKey:l,type:"property",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(n,u)}else if(c.references.has(l)){const u={modelKey:e,attributeKey:l,type:"reference",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(n,u)}}})}catch{}}processResolvedReference(e,t,s){const n={modelKey:e,attributeKey:t,type:"reference",processingStep:2};this.attributeDependencyGraph.addAttribute(n);const o={modelKey:s.model,attributeKey:s.reference,type:"reference",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(n,o)}processDerivedReference(e,t,s){const n={modelKey:e,attributeKey:t,type:"reference",processingStep:3};this.attributeDependencyGraph.addAttribute(n);const o={modelKey:e,attributeKey:s.localReference,type:"reference",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(n,o);const i=this.models.get(e);if(i){const a=i.references.get(s.localReference);if(a){const l={modelKey:a.model,attributeKey:s.remoteReference,type:"reference",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(n,l)}}}processGroupedReference(e,t,s){const n={modelKey:e,attributeKey:t,type:"reference",processingStep:3};this.attributeDependencyGraph.addAttribute(n);const o={modelKey:e,attributeKey:s.reference,type:"reference",processingStep:1};this.attributeDependencyGraph.addAttributeDependency(n,o)}async update(){const e=performance.now(),t=this.shouldUsePartialUpdate();if(t.decision){const s=this.changeTracker.getModelsWithChanges().length,n=Array.from(this.changeTracker.getChangedAttributes().values()).reduce((a,l)=>a+l.size,0),o=this.changeTracker.getTotalChangedItemCount();await this.partialUpdate();const i=performance.now()-e;this.partialUpdateMetrics.recordUpdate({type:"partial",durationMs:i,modelsAffected:s,attributesProcessed:n,itemsChanged:o,decisionReason:t.reason,timestamp:Date.now()})}else{await this.init();const s=performance.now()-e;this.partialUpdateMetrics.recordUpdate({type:"full",durationMs:s,decisionReason:t.reason,timestamp:Date.now()})}}shouldUsePartialUpdate(){const e=this.dcuplInstance.initOptions.performance?.partialUpdates,t=e?.modelRatioThreshold??.5,s=e?.itemRatioThreshold??.5,n=e?.enableDetailedLogging??!1;if(!this.changeTracker.hasChanges())return n&&this.log.debug("Partial update decision: SKIP",{reason:"no_changes_detected"}),{decision:!1,reason:"no_changes_detected"};if(this.changeTracker.getModelsWithFullReset().size>0)return n&&this.log.debug("Partial update decision: FULL",{reason:"full_reset_detected"}),{decision:!1,reason:"full_reset_detected"};const o=Array.from(this.models.keys()).filter(u=>!u.startsWith("$")).length,i=this.changeTracker.getAffectedModelRatio(o);let a=0,l=0;for(const u of this.changeTracker.getModelsWithChanges()){const d=this.models.get(u);if(d){const f=d.getData().size;a+=f,l+=this.changeTracker.getChangedItems(u).size,l+=this.changeTracker.getDeletedItems(u).size}}const c=a>0?l/a:0;return i>t&&c>s?(n&&this.log.debug("Partial update decision: FULL",{reason:"both_ratios_high",modelRatio:i.toFixed(2),itemRatio:c.toFixed(2)}),{decision:!1,reason:`both_ratios_high:models=${i.toFixed(2)},items=${c.toFixed(2)}`}):(n&&this.log.debug("Partial update decision: PARTIAL",{modelRatio:i.toFixed(2),itemRatio:c.toFixed(2),modelThreshold:t,itemThreshold:s}),{decision:!0,reason:`optimal:models=${i.toFixed(2)},items=${c.toFixed(2)}`})}async partialUpdate(){const e=this.handleAlternativeKey(this.unprocessedData).filter(s=>!s.placeholderUid);for(const s of e)if(s.type==="remove"){const n=this.models.get(s.model);if(n){n.deleteDataEntries(s);for(const o of n.properties.values())this.changeTracker.recordAttributeChange(s.model,o.key);for(const o of n.references.values())this.changeTracker.recordAttributeChange(s.model,o.key)}}const t=this.getMergedContainers(this.unprocessedData);await this.connectDataWithModelsPartial(t)}async reprocessData(){this.qualityController.enabled&&this.qualityController.resetModelErrors();const e=this.getMergedContainers(this.unprocessedData);await this.connectDataWithModels(e)}getSortedCalculationTimings(){return gn(this.calculationTimings,"value")}addModel(e){if(e?.quality?.enabled!==!1)try{sh(e)}catch(t){this.qualityController.enabled&&this.qualityController.setError({title:"Invalid Model Definition",type:"model",errorGroup:"ModelDefinitionError",errorType:"InvalidModelDefinition",model:e.key,description:t.message});return}if(this.unprocessedModelDescriptions.has(e.key)){const t=this.unprocessedModelDescriptions.get(e.key),s=this.mergeModels(t,e);this.unprocessedModelDescriptions.set(e.key,s)}else this.unprocessedModelDescriptions.set(e.key,e);e.data&&this.addData({model:e.key,data:e.data,autoGenerateProperties:e.autoGenerateProperties,autoGenerateKey:e.autoGenerateKey,keyProperty:e.keyProperty})}mergeModels(e,t){const s=Object.assign({},e);return Array.isArray(e.properties)&&(s.properties=[...e.properties]),Array.isArray(e.references)&&(s.references=[...e.references]),Array.isArray(t.properties)&&s.properties?.push(...t.properties),Array.isArray(t.references)&&s.references?.push(...t.references),s}addData(e){if(!e||!e.model||!e.data)throw new Error("Invalid Data Container");if(!Array.isArray(e.data))throw new Error("Invalid Data - Data must be an Array");e.type||(e.type="set"),e.autoGenerateProperties&&this.addModel({key:e.model,autoGenerateProperties:e.autoGenerateProperties,autoGenerateKey:e.autoGenerateKey,keyProperty:e.keyProperty||"key"}),this.changeTracker.recordDataChange(e),this.unprocessedData.push(e)}addView(e){this.views.set(e.key,e)}setError(e,t){this.qualityController.enabled&&t.qualityConfig.enabled===!0&&this.qualityController.setError(e)}getMergedContainers(e){const t=this.handleAlternativeKey(e).filter(o=>!o.placeholderUid),s=[],n=Dr(t,"model");for(const o in n){const i=n[o];if(i.length>1){const a=this.mergeContainers(i);s.push(a)}else s.push(i[0])}return s}mergeContainers(e){let t;return e?.forEach(s=>{if(!t){if(s.type==="remove")return;t=new Map(s.data.map(n=>[n.key,n]));return}switch(s.type){case"upsert":s.data.forEach(n=>{if(t.has(n.key)){let o=t.get(n.key);o=st(o,n),t.set(n.key,o)}else t.set(n.key,n)});break;case"update":s.data.forEach(n=>{if(t.has(n.key)){let o=t.get(n.key);o=st(o,n),t.set(n.key,o)}});break;case"remove":s.data.forEach(n=>{t.delete(n.key)});break;case"set":t=new Map(s.data.map(n=>[n.key,n]));break;default:t=new Map(s.data.map(n=>[n.key,n]));break}}),{model:e[0].model,data:Array.from(t.values()),type:"set"}}async connectDataWithModels(e){try{this.dependencyGraph.order()}catch(s){this.log.warn("Your models have circular dependencies which might lead to errors. Please consider changing your models"),this.log.error("Dependency graph error",s)}const t=this.dependencyGraph.order({allowCycles:!0});e.sort((s,n)=>t.indexOf(s.model)-t.indexOf(n.model)),await this.handleDataContainer(e)}async connectDataWithModelsPartial(e){const t=this.dependencyGraph.order({allowCycles:!0});e.sort((i,a)=>t.indexOf(i.model)-t.indexOf(a.model));const s=[];for(const[i,a]of this.changeTracker.getChangedAttributes())for(const l of a){const c=this.attributeDependencyGraph.getAttributesForModel(i).find(u=>u.attributeKey===l);if(c)s.push(c);else{const u=this.models.get(i);if(u){const d=u.properties.get(l),f=u.references.get(l);(d||f)&&s.push({modelKey:i,attributeKey:l,type:d?"property":"reference",processingStep:1})}}}const n=this.attributeDependencyGraph.getImpactedAttributes(s),o=this.attributeDependencyGraph.getProcessingOrder(n);for(const i of e){const a=this.models.get(i.model);a?.autoGenerateProperties&&a.generatePropertiesFromContainer(i)}for(const i of[1,2,3,4])await this.processAttributesForStep(i,o,e);for(const i of e){const a=this.models.get(i.model);if(a&&this.qualityController.enabled){const l=this.changeTracker.getChangedItems(a.key),c=this.changeTracker.getChangedAttributes().get(a.key);l.size>0&&c&&(this.qualityController.cleanUpErrorsForItems(a,l,c),this.qualityController.validateItemsPartial(a,l,c).forEach(u=>{this.setError(u,a)}))}}this.changeTracker.clear()}getResolvedReferenceProcessingOrder(e){const t=new Map,s=new Set;for(const[l,c]of e.entries()){const u=c.get(2);u&&u.size>0&&(s.add(l),t.set(l,new Set))}if(s.size===0)return this.dependencyGraph.order();for(const l of s){const c=this.models.get(l);if(!c)continue;const u=e.get(l)?.get(2);if(u)for(const d of u){const f=c.references.get(d);if(f&&Pr(f)){const h=f.resolve.model,p=f.resolve.reference,y=this.models.get(h);if(y){const m=y.references.get(p);m&&Pr(m)&&t.get(l).add(h)}}}}const n=[],o=new Set,i=new Set,a=l=>{if(i.has(l)||o.has(l))return;o.add(l);const c=t.get(l);if(c)for(const u of c)a(u);o.delete(l),i.add(l),n.push(l)};for(const l of s)a(l);return n}async processAttributesForStep(e,t,s){let n=this.dependencyGraph.order({allowCycles:!0});e===2&&(n=this.getResolvedReferenceProcessingOrder(t));for(const o of n){const i=t.get(o);if(!i)continue;const a=i.get(e);if(!a||a.size===0)continue;const l=this.models.get(o);if(!l)continue;const c=L(),u=`dcupl:partial_process_data:step_${e}`;if(this.cdRef.analyticsController.mark({name:`${u}:start`,context:c}),e===2)l.rebuildResolvedReferencesForAllItems(a);else{const d=s.find(f=>f.model===o);if(!d)continue;switch(e){case 1:l.addBasicPropertiesAndReferencesPartial(d,a);break;case 3:l.addDerivedAndExpressionAttributesPartial(d,a);break;case 4:l.reRunDerivedPropertiesBasedOnResolvesPartial(d,a);break}}this.cdRef.analyticsController.mark({name:`${u}:end`,context:c}),this.cdRef.analyticsController.measure({name:u,start:`${u}:start`,end:`${u}:end`,context:c,detail:{model:o,attributeCount:a.size}})}}handleAlternativeKey(e){return e.forEach(t=>{const s=this.models.get(t.model),n=t.keyProperty||s?.keyProperty,o=t.autoGenerateKey||s?.autoGenerateKey;n&&n!=="key"?t.data.forEach(i=>{i.key=String(i[n])}):o&&t.data.forEach(i=>{i.key||(i.key=L())})}),e}async handleDataContainer(e){for(const n of e){const o=this.models.get(n.model);o?.autoGenerateProperties&&o.generatePropertiesFromContainer(n)}const t=this.initOptions.performance?.containerBatchSize,s=t!==void 0;for(let n=0;n<e.length;n++){const o=e[n],i=this.models.get(o.model),a=L();this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_1:start",context:a}),i&&(i.addBasicPropertiesAndReferences(o),this.qualityController.enabled&&i.qualityConfig.enabled===!0&&this.qualityController.cleanUpErrors(i,o,"UndefinedValue")),this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_1:end",context:a}),this.cdRef.analyticsController.measure({name:"dcupl:process_data:step_1",start:"dcupl:process_data:step_1:start",end:"dcupl:process_data:step_1:end",context:a,detail:{model:o.model}}),s?t>0&&n>0&&n%t===0&&await new Promise(l=>setTimeout(l,0)):await new Promise(l=>setTimeout(l,0))}for(let n=0;n<e.length;n++){const o=e[n],i=this.models.get(o.model),a=L();this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_2:start",context:a}),i&&i.hasQueryReferences()&&i.addQueryReferences(o),i&&i.hasResolvedReferences()&&i.addResolvedReferences(o),this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_2:end",context:a}),this.cdRef.analyticsController.measure({name:"dcupl:process_data:step_2",start:"dcupl:process_data:step_2:start",end:"dcupl:process_data:step_2:end",context:a,detail:{model:o.model}}),s?t>0&&n>0&&n%t===0&&await new Promise(l=>setTimeout(l,0)):await new Promise(l=>setTimeout(l,0))}for(let n=0;n<e.length;n++){const o=e[n],i=this.models.get(o.model),a=L();this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_3:start",context:a}),i&&(i.hasDerivedPropertiesForBasicReferences()||i?.hasDerivedReferences()||i?.hasGroupedReferences()||i?.hasExpressionProperties())&&i.addDerivedReferencesGroupedReferencesDerivedPropertiesAndExpressionProperties(o),this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_3:end",context:a}),this.cdRef.analyticsController.measure({name:"dcupl:process_data:step_3",start:"dcupl:process_data:step_3:start",end:"dcupl:process_data:step_3:end",context:a,detail:{model:o.model}}),s?t>0&&n>0&&n%t===0&&await new Promise(l=>setTimeout(l,0)):await new Promise(l=>setTimeout(l,0))}for(let n=0;n<e.length;n++){const o=e[n],i=this.models.get(o.model);if(!i){this.log.error("Model not found during data processing",void 0,{model:o.model,step:4});continue}const a=L();this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_4:start",context:a}),(i.hasDerivedPropertiesBasedOnResolvedReferences()||i.hasDerivedReferencesBasedOnResolvedReferences())&&i.reRunDerivedPropertiesBasedOnResolves(o),this.cdRef.analyticsController.mark({name:"dcupl:process_data:step_4:end",context:a}),this.cdRef.analyticsController.measure({name:"dcupl:process_data:step_4",start:"dcupl:process_data:step_4:start",end:"dcupl:process_data:step_4:end",context:a,detail:{model:o.model}}),this.qualityController.enabled&&i.qualityConfig.enabled===!0&&this.qualityController.validateAttributesAfterInitialization(i).forEach(l=>{this.setError(l,i)}),s?t>0&&n>0&&n%t===0&&await new Promise(l=>setTimeout(l,0)):await new Promise(l=>setTimeout(l,0))}}_getModelKeys(){return Array.from(this.models.values()).map(e=>e.key).filter(e=>e&&!e.startsWith("$Dcupl"))}_getViewKeys(e){const t=e?.modelKey;return Array.from(this.views.values()).filter(s=>t?s.model===t:!0).map(s=>s.key)}getTotalItemCount(){let e=0;for(const t of this.models.values())e+=t.getItemCount();return e}}Mt([v({scope:"global",type:"model_add",connectMessage:!0})],nt.prototype,"addModel"),Mt([v({scope:"global",type:"data_change",connectMessage:!0})],nt.prototype,"addData"),Mt([v({scope:"global",type:"view_add",connectMessage:!0})],nt.prototype,"addView"),Mt([v({scope:"global",type:"dcupl_handle_datacontainer"})],nt.prototype,"handleDataContainer");function kh(r,e){return xe(e,function(t){return r[t]})}function Ah(r){return r==null?[]:kh(r,He(r))}var wh=Math.max;function $h(r,e,t,s){r=ee(r)?r:Ah(r),t=t?vt(t):0;var n=r.length;return t<0&&(t=wh(n+t,0)),Pt(r)?t<=n&&r.indexOf(e,t)>-1:!!n&&hs(r,e,t)>-1}var Ch=Object.defineProperty,_h=Object.getOwnPropertyDescriptor,qn=(r,e,t,s)=>{for(var n=_h(e,t),o=r.length-1,i;o>=0;o--)(i=r[o])&&(n=i(e,t,n)||n);return n&&Ch(e,t,n),n};class jr{constructor(e,t){this.dcuplApi=e,this.cdRef=t}options;key;modelKey;catalog;setup(e){const t=this.dcuplApi.modelParser.models.get(e.modelKey);if(!t)throw new Error(`Model with key ${e.modelKey} not found`);const s=this.getListItemKeys(e),n=this.getRelevantData(t,s),o=this.initIndicesController(s,t,n);this.catalog?this.catalog.filter.update(t,n,o):(this.catalog=new Ef(this.dcuplApi,this.cdRef,o),this.catalog.init(this.modelKey,t,n))}initIndicesController(e,t,s){let n;if(e){n=new Rt;for(const o of t.indicesController.indexMap.keys())n.getOrCreateIndex(o,s)}else n=t.indicesController;return n}getListItemKeys(e){let t;return e.listItemKeys?t=e.listItemKeys:e.query&&(t=this.dcuplApi.query.execute(e.query).map(s=>s.key)),t}getRelevantData(e,t){const s=e.getData();return t?this.initFromItemKeys(s,t):s}init(e){this.options=se(e),this.key=this.options.listKey,this.modelKey=this.options.modelKey,this.setup(this.options)}initFromItemKeys(e,t){const s=new Map;return t.forEach(n=>{if(e.has(n)){const o=e.get(n);o&&s.set(n,o)}}),s}destroy(){try{this.dcuplApi.lists.destroy({listKey:this.key})}catch{}}_destroy(){this.catalog.filter.cdRef?.destroy()}update(e){(e&&e.reprocessData||!e)&&this.setup(this.options)}on(e){return this.cdRef.on(e)}}qn([v({scope:"list",type:"list_destroyed",connectMessage:!0})],jr.prototype,"_destroy"),qn([v({scope:"list",type:"list_updated",action:"update",connectMessage:!0})],jr.prototype,"update");var Dh=Object.defineProperty,xh=Object.getOwnPropertyDescriptor,Ph=(r,e,t,s)=>{for(var n=xh(e,t),o=r.length-1,i;o>=0;o--)(i=r[o])&&(n=i(e,t,n)||n);return n&&Dh(e,t,n),n};let Qn=class{constructor(e,t){this.dcuplInstance=e,this.cdRef=t}lists=[];get(e){if(e)return this.lists.find(t=>t.key===e)}getAll(e){return e?this.lists.filter(t=>t.modelKey===e?.modelKey):this.lists}destroy(e){if(!e)this.lists.forEach(t=>t._destroy()),this.lists=[];else if(e.listKey){const t=this.lists.findIndex(s=>s.key===e.listKey);t>-1&&(this.lists[t]._destroy(),this.lists.splice(t,1))}else e.modelKey&&(this.lists=this.lists.filter(t=>t.modelKey===e.modelKey?(t._destroy(),!1):!0))}create(e){e.listKey=e.listKey||L();const t=new br;t._init({cdRefKey:e.listKey,parentCd:this.dcuplInstance.cdRef,dcuplInitOptions:this.dcuplInstance.initOptions,analyticsController:this.dcuplInstance.analyticsController});const s=new jr(this.dcuplInstance,t);return s.init(e),this.lists.push(s),s}};Ph([v({scope:"global",type:"list_created",connectMessage:!0})],Qn.prototype,"create");let jh=class{constructor(e){this.scriptsController=e}enabled=!1;errors=new Map;log=Ee.child({prefix:"QualityController"});values={loading:0,processing:0,startup:0,counts:{resources:0,modelFiles:0,dataFiles:0,models:0,rows:0,attributes:0,dataEntries:0},unusedAttributes:[],errors:{size:0,UndefinedValue:0,UndefinedAttribute:0,WrongDataType:0,MissingModel:0,InvalidModelDescription:0,RemoteReferenceKeyNotFound:0},sizes:{totalEncoded:0,totalDecoded:0,unusedDecoded:0,models:[]}};modelParser;dcupl;setError(e){e.key||(e.key=L()),this.errors.set(e.key,e)}removeError(e){this.errors.delete(e)}getError(e){return this.errors.get(e)}getErrors(){return Array.from(this.errors.values())}resetErrors(){this.errors.clear()}resetModelErrors(){this.getErrors().forEach(e=>{e.type==="model"&&this.removeError(e.key)})}resetValidationErrors(){this.getErrors().forEach(e=>{e.type==="model"&&e.errorType==="InvalidValidator"&&this.removeError(e.key)})}cleanUpErrors(e,t,s){const n=this.getModelErrors(e.key).filter(o=>o.errorType===s);if(n.length>0){const o=Dr(n,"attribute");for(const i in o){const a=o[i];if(a?.length===t.data.length){for(const c of a)this.removeError(c.key);const l={title:"Missing Data",type:"model",errorGroup:"DataContainerError",errorType:"UndefinedAttribute",model:t.model,attribute:i,description:`The Attribute "${i}" is not present in the dataset for model "${t.model}"`};this.setError(l)}}}}getModelErrors(e){return this.getErrors().filter(t=>t.type==="model"&&t.model===e)}cleanUpErrorsForItems(e,t,s,n){let o,i;typeof s=="string"?i=s:s instanceof Set&&(o=s,i=n);const a=this.getModelErrors(e.key),l=i?a.filter(c=>c.errorType===i):a;for(const c of l)if(c.itemKey&&t.has(c.itemKey)){if(o&&c.attribute&&!o.has(c.attribute))continue;this.removeError(c.key)}}getErrorsForItems(e,t){return this.getModelErrors(e).filter(s=>s.itemKey&&t.has(s.itemKey))}validateItemsPartial(e,t,s){if(!e)return[];const n=[],o=e.getData(),i=e.getAttributes();for(const a of i){if(!s.has(a.key))continue;const l=a.quality?.validators;if(l)for(const c of t){const u=o.get(c);if(!u)continue;const d=u[a.key],f=this.validateAttribute(d,l,a.key);for(const h of f)h.model=e.key,h.itemKey=u.key,n.push(h)}}return n}async initData(){this.modelParser?.addData({data:this.getErrors(),model:"$DcuplErrorTrackingErrors",type:"set"});const e=this.modelParser.unprocessedData.find(t=>t.model==="$DcuplErrorTrackingErrors");e&&await this.modelParser.handleDataContainer([e])}initErrorTrackingModels(){this.modelParser?.addModel({key:"$DcuplErrorTrackingErrors",autoGenerateKey:!0,supportsAutoCreation:!0,references:[{key:"model",type:"singleValued",model:"$DcuplErrorTrackingModel",filter:{calculateFacets:!0}},{key:"errorGroup",type:"singleValued",model:"$DcuplErrorTrackingGroup",filter:{calculateFacets:!0}},{key:"errorType",type:"singleValued",model:"$DcuplErrorTrackingType",filter:{calculateFacets:!0}}],properties:[{key:"title",type:"string",filter:!0},{key:"itemKey",type:"string",filter:!0},{key:"attribute",type:"string",filter:!0},{key:"description",type:"string"},{key:"meta",type:"json"}],quality:{enabled:!1}}),this.modelParser?.addModel({key:"$DcuplErrorTrackingType",data:[{key:"UndefinedAttribute"},{key:"InvalidValidator"},{key:"UndefinedValue"},{key:"NullValue"},{key:"WrongDataType"},{key:"MissingModel"},{key:"NonUniqueKey"},{key:"RemoteReferenceKeyNotFound"},{key:"InvalidModelDescription"},{key:"InvalidResource"},{key:"InvalidModelDefinition"}],quality:{enabled:!1}}),this.modelParser?.addModel({key:"$DcuplErrorTrackingGroup",data:[{key:"ReferenceDataError"},{key:"PropertyDataError"},{key:"DataContainerError"},{key:"ModelDescriptionError"},{key:"LoaderError"},{key:"ResourceError"},{key:"ModelDefinitionError"}],quality:{enabled:!1}}),this.modelParser?.addModel({key:"$DcuplErrorTrackingModel",supportsAutoCreation:!0,quality:{enabled:!1}})}initAnalyticsValues(){this.calculateTiming(),this.calculateSizes(),this.calculateErrorTrackingFacet(),this.calculateCounts(),this.calculateUnusedAttributes()}calculateUnusedAttributes(){this.values.unusedAttributes=[];const e=this.dcupl.models.keys();for(const t of e){const s=this.getUnusedAttributesFromModel(this.dcupl,t);for(const n of s)this.values.unusedAttributes?.push({model:t,attribute:n})}}calculateCounts(){this.values.counts={},this.values.counts.modelFiles=this.dcupl.modelParser.unprocessedModelDescriptions.size,this.values.counts.dataFiles=this.dcupl.modelParser.unprocessedData.length,this.values.counts.models=this.dcupl.models.keys().length;let e=0,t=0,s=0;this.dcupl.models.keys().forEach(n=>{const o=this.dcupl.modelParser.models.get(n);if(!o)return;const i=o?.getBasicProperties()||[],a=o?.getBasicReferences()||[],l=i.length+a.length;t+=l;const c=o.data?.size||0;e+=c,s+=l*c}),this.values.counts.rows=e,this.values.counts.attributes=t,this.values.counts.dataEntries=s}calculateTiming(){const e=this.dcupl.analyticsController.getByName("loader_processed");e&&e[0]&&(this.values.loading=e[0].value);const t=this.dcupl.analyticsController.getByName("dcupl_initialized");t&&t[0]&&(this.values.processing=t[0].value),this.values.startup=this.values.loading+this.values.processing}calculateSizes(){const e=this.calculateSizesForModels();this.values.sizes={},this.values.sizes.totalEncoded=e.reduce((t,s)=>t+s.encodedBodySize,0),this.values.sizes.totalDecoded=e.reduce((t,s)=>t+s.decodedBodySize,0),this.values.sizes.unusedDecoded=this.calculateUnusedData(),this.values.sizes.models=e.map(t=>({model:t.model,decodedBodySize:t.decodedBodySize,encodedBodySize:t.encodedBodySize})),this.values.sizes.models?.sort((t,s)=>(s.encodedBodySize||0)-(t.encodedBodySize||0))}calculateErrorTrackingFacet(){try{if(!this.enabled)return;const e=this.dcupl.lists.create({modelKey:"$DcuplErrorTrackingErrors"}),t=e.catalog.fn.facets({attribute:"errorType",calculateResults:!0,excludeUndefineds:!1,excludeUnresolved:!1,excludeZeros:!1});this.values.errors={},t&&(this.values.errors.size=e.catalog.fn.metadata().currentSize,this.values.errors.UndefinedValue=t.find(s=>s.key==="UndefinedValue")?.size||0,this.values.errors.UndefinedAttribute=t.find(s=>s.key==="UndefinedAttribute")?.size||0,this.values.errors.WrongDataType=t.find(s=>s.key==="WrongDataType")?.size||0,this.values.errors.MissingModel=t.find(s=>s.key==="MissingModel")?.size||0,this.values.errors.InvalidModelDescription=t.find(s=>s.key==="InvalidModelDescription")?.size||0,this.values.errors.RemoteReferenceKeyNotFound=t.find(s=>s.key==="RemoteReferenceKeyNotFound")?.size||0)}catch(e){this.log.error("Error calculating error tracking facet",e)}}calculateSizesForModels(){const e=this.dcupl.analyticsController.getByType("resource").filter(s=>s.value?.type==="data"),t=Dr(e,s=>s.value?.model);return Object.keys(t).map(s=>{const n=t[s]?.reduce((i,a)=>{const l=a.value.encodedBodySize;return i+l},0),o=t[s]?.reduce((i,a)=>{const l=a.value.decodedBodySize;return i+l},0);return{model:s,decodedBodySize:o,encodedBodySize:n}})}calculateUnusedData(){const e=this.dcupl.models.keys();let t=0;return e.forEach(s=>{const n=this.dcupl.modelParser.unprocessedData.find(a=>a.model===s)?.data||[],o=this.getUnusedAttributesFromModel(this.dcupl,s);if(!o.length)return;const i=this.getDataWithAttributes(n,o);t+=JSON.stringify(i).length}),t}getDataWithAttributes(e,t){return e.map(s=>{const n={};return t.forEach(o=>{n[o]=s[o]}),n})}getUnusedAttributesFromModel(e,t){const s=e.modelParser.models.get(t),n=s?.getBasicProperties()||[],o=s?.getBasicReferences()||[],i=s?.keyProperty||"key",a=[...n,...o].map(c=>c.key);a.push(i),a.push("key");const l=e.modelParser.unprocessedData.find(c=>c.model===t)?.data||[];return this.getUnusedAttributes(l,a)}getUnusedAttributes(e,t){const s=new Set;return e.forEach(n=>{Object.keys(n).forEach(o=>{t.includes(o)||s.add(o)})}),Array.from(s.values())}validateAttribute(e,t,s){const n=[];if(t.email){const o=this.validateEmail(e,s);o&&n.push(o)}if(t.endsWith){const o=this.validateEndsWith(e,t.endsWith,s);o&&n.push(o)}if(t.enum){const o=this.validateEnum(e,t.enum,s);o&&n.push(o)}if(t.includes){const o=this.validateIncludes(e,t.includes,s);o&&n.push(o)}if(t.max){const o=this.validateMax(e,t.max,s);o&&n.push(o)}if(t.maxLength){const o=this.validateMaxLength(e,t.maxLength,s);o&&n.push(o)}if(t.min){const o=this.validateMin(e,t.min,s);o&&n.push(o)}if(t.minLength){const o=this.validateMinLength(e,t.minLength,s);o&&n.push(o)}if(t.pattern){const o=this.validatePattern(e,t.pattern,s);o&&n.push(o)}if(t.startsWith){const o=this.validateStartsWith(e,t.startsWith,s);o&&n.push(o)}return n}validateAttributesAfterInitialization(e){if(!e)return[];const t=e.getAttributes(),s=e.getDataAsArray(),n=[];for(const o of t){const i=o.quality?.validators;if(i&&i.unique){const a=this.validateUnique(s,o.key,e);n.push(...a)}}return n}validateUnique(e,t,s){const n=[],o=new Set,i=s.attributeQualityConfigs?.get(t)?.validatorHandling!=="loose";for(const a of e){const l=a[t];if(o.has(l)){const c={title:"Validator Error - Unique",type:"model",errorGroup:"PropertyDataError",model:s.key,errorType:"InvalidValidator",attribute:t,itemKey:a.key,description:`The value "${l}" is not unique`};n.push(c),i&&delete a[t]}else o.add(l)}return n}validateEmail(e,t){if(e!=null&&!/^[\w.-]+@[a-zA-Z\d.-]+\.[a-zA-Z]{2,6}$/.test(e))return{title:"Validator Error - Invalid Email",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:t,description:`The value "${e}" is not a valid email address`}}validateMin(e,t,s){if(e<t.value)return{title:"Validator Error - Min Value",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" is smaller than the minimum value of "${t.value}"`}}validateMax(e,t,s){if(e>t.value)return{title:"Validator Error - Max Value",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" is larger than the maximum value of "${t.value}"`}}validateStartsWith(e,t,s){if(e!=null&&!e.startsWith(t.value))return{title:"Validator Error - StartsWith",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" does not start with "${t.value}"`}}validateEndsWith(e,t,s){if(e!=null&&!hn(e,t.value))return{title:"Validator Error - EndsWith",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" does not end with "${t.value}"`}}validateIncludes(e,t,s){if(e!=null&&!$h(e,t.value))return{title:"Validator Error - Includes",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" does not include "${t.value}"`}}validateMinLength(e,t,s){if(e!=null&&e.length<t.value)return{title:"Validator Error - Min Length",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" is shorter than the minimum length of "${t.value}"`}}validateMaxLength(e,t,s){if(e!=null&&e.length>t.value)return{title:"Validator Error - Max Length",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" is longer than the maximum length of "${t.value}"`}}validateEnum(e,t,s){if(!t.value.includes(e))return{title:"Validator Error - Enum",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" is not in the enum values`}}validatePattern(e,t,s){if(e!=null)try{if(!new RegExp(t.value).test(e))return{title:"Validator Error - Pattern",type:"model",errorGroup:"PropertyDataError",errorType:"InvalidValidator",attribute:s,description:`The value "${e}" does not match the pattern "${t.value}"`}}catch(n){this.log.error("Invalid pattern validation",n)}}};var Rh=Object.defineProperty,Eh=Object.getOwnPropertyDescriptor,Q=(r,e,t,s)=>{for(var n=Eh(e,t),o=r.length-1,i;o>=0;o--)(i=r[o])&&(n=i(e,t,n)||n);return n&&Rh(e,t,n),n};let F=class{cdRef=new br;analyticsController=new ef;scriptController=new Df;qualityController=new jh(this.scriptController);log=Ee.child({prefix:"Dcupl"});modelParser=new nt(this.cdRef,this.qualityController,this);globalItemService=new Tn(this.modelParser,this.scriptController);cacheCtrl=new Dn(!1);queryManager=new _f(this.scriptController,this.globalItemService,this.modelParser);_loaders=new Map;rootQueryBuilder=new me;_defaultInitOptions={config:{projectId:void 0,apiKey:void 0,version:"draft"},errorTracking:{enabled:!1},quality:{enabled:!0},analytics:{enabled:!1},performance:{cache:{enabled:!0},clone:{enabled:!0},partialUpdates:{modelRatioThreshold:.5,itemRatioThreshold:.5,cacheInvalidationThreshold:.7,enableDetailedLogging:!1},autoUpdateLists:{enabled:!1}},referenceMetadata:{enabled:!1}};initOptions;lists=new Qn(this,this.cdRef);busy=!1;updateQueue=[];constructor(e){this.analyticsController.init(!!e?.analytics?.enabled),this.qualityController.dcupl=this,this.analyticsController.mark({name:"dcupl:constructor"}),this.initOptions=st({},this._defaultInitOptions,e),this.qualityController.enabled=this.initOptions.errorTracking?.enabled||this.initOptions.quality?.enabled||!1,this.modelParser.initOptions=Object.assign({},this.initOptions),this.cdRef._init({cdRefKey:"root",dcuplInitOptions:this.initOptions,analyticsController:this.analyticsController}),this.cacheCtrl.enabled=!!this.initOptions.performance?.cache?.enabled}models={get:e=>this.modelParser.models.get(e)?.getModelDefinition(),set:e=>(this.modelParser.models.delete(e.key),this.modelParser.addModel(e)),update:e=>this.modelParser.addModel(e),remove:e=>{this.modelParser.models.delete(e)},keys:()=>this.modelParser._getModelKeys()};views={get:e=>this.modelParser.views.get(e),keys:e=>this.modelParser._getViewKeys(e),set:e=>this.modelParser.addView(e)};data={update:(e,t)=>{this.modelParser.addData({data:e,model:t.model,type:"update",keyProperty:t.keyProperty,autoGenerateKey:t.autoGenerateKey})},upsert:(e,t)=>{this.modelParser.addData({data:e,model:t.model,type:"upsert",keyProperty:t.keyProperty,autoGenerateKey:t.autoGenerateKey})},set:(e,t)=>{this.modelParser.addData({data:e,model:t.model,type:"set",keyProperty:t.keyProperty,autoGenerateKey:t.autoGenerateKey})},remove:(e,t)=>{this.modelParser.addData({data:e,model:t.model,type:"remove",keyProperty:t.keyProperty,autoGenerateKey:t.autoGenerateKey})},reset:e=>{e.model&&(this.modelParser.models.get(e.model)?.resetData(),this.modelParser.models.get(e.model)?.resetIndexMap())},apply:e=>this.modelParser.addData(e)};loaders={add:(e,t)=>{this.addLoader(e,t)},remove:e=>{this.removeLoader(e)},get:e=>this._loaders.get(e)};scripts={set:(e,t)=>{this.scriptController.setScript(e,t)},remove:e=>{this.scriptController.removeScript(e)},get:e=>{this.scriptController.getScript(e)},keys:()=>this.scriptController.keys(),execute:(e,t)=>{const s={dcupl:this,options:t};return this.scriptController.executeScript(e,"script",s)},executeAsync:(e,t)=>new Promise((s,n)=>{const o={dcupl:this,options:t,resolve:s,reject:n};return this.scriptController.executeScript(e,"async_script",o)})};fn={pivot:e=>this._pivot(e),aggregate:e=>this._aggregate(e),suggest:e=>this._suggest(e),groupBy:e=>this._groupBy(e),facets:e=>this._facets(e),metadata:e=>this._metadata(e)};_pivot(e){return this.getFnList(e).catalog.fn.pivot(e.options)}_aggregate(e){return this.getFnList(e).catalog.fn.aggregate(e.options)}_suggest(e){return this.getFnList(e).catalog.fn.suggest(e.options)}_groupBy(e){return this.getFnList(e).catalog.fn.groupBy(e.options)}_facets(e){return this.getFnList(e).catalog.fn.facets(e.options)}_metadata(e){return this.getFnList(e).catalog.fn.metadata()}registerContainer(e){this.modelParser.addData(e)}updateRegisteredContainer(e){const t=this.modelParser.unprocessedData.findIndex(s=>s.placeholderUid===e.placeholderUid);t>-1&&(delete e.placeholderUid,this.modelParser.unprocessedData[t]=e)}removeRegisteredContainer(e){const t=this.modelParser.unprocessedData.findIndex(s=>s.placeholderUid===e.placeholderUid);t>-1&&this.modelParser.unprocessedData.splice(t,1)}getFnList(e){let t=this.lists.get(`__global_list__${e.modelKey}`);return t||(t=this.lists.create({modelKey:e.modelKey,listKey:`__global_list__${e.modelKey}`})),e.query?t.catalog.query.apply(e.query,{mode:"set"}):t.catalog.query.reset(),t}getAffectedModels(e){const t=new Set;for(const n of e.keys())t.add(n);const s=this.modelParser.dependencyGraph;if(s)for(const n of e.keys())this.getDownstreamDependencies(n,s).forEach(o=>t.add(o));return Array.from(t)}getDownstreamDependencies(e,t){const s=new Set,n=new Set,o=i=>{if(!n.has(i)){n.add(i);for(const[a,l]of Object.entries(t.dependencies||{}))Array.isArray(l)&&l.includes(i)&&(s.add(a),o(a))}};return o(e),s}updateFnLists(e,t){const s=this.initOptions.performance?.partialUpdates?.enableDetailedLogging??!1;for(const n of this.lists.getAll()){if(!this.shouldAutoUpdateList(n,t)){s&&this.log.debug("List skipped (auto-update disabled)",{listKey:n.key,modelKey:n.modelKey});continue}e?this.isListAffectedByChanges(n,e.affectedModels)?(s&&this.log.debug("List auto-updating (affected by changes)",{listKey:n.key,modelKey:n.modelKey,affectedModels:e.affectedModels}),n.update()):s&&this.log.debug("List skipped (not affected)",{listKey:n.key,modelKey:n.modelKey}):(s&&this.log.debug("List auto-updating (full update)",{listKey:n.key,modelKey:n.modelKey}),n.update())}}isListAffectedByChanges(e,t){const s=e.modelKey;return t.includes(s)}shouldAutoUpdateList(e,t){return e.key.startsWith("__global_list__")?!0:t!==void 0?t:e.options.autoUpdate!==void 0?e.options.autoUpdate:this.initOptions.performance?.autoUpdateLists?.enabled??!1}query={one:e=>this.getItem(e),many:e=>this._getManyItems(e),execute:e=>this.executeQuery(e),generate:(e,t)=>(this.rootQueryBuilder.init({modelKey:e}),this.rootQueryBuilder.applyQuery(t)),registerCustomOperator:(e,t)=>{this.queryManager.registerCustomOperator(e,t)}};on(e){return this.cdRef.on(e)}async init(){try{return await this.performUpdate(()=>this.modelParser.init()),this.cacheCtrl.clear(),!0}catch(e){return this.log.error("Initialization failed",e),!1}}async update(e){try{const t=this.modelParser.changeTracker,s=t.hasChanges(),n=s?new Map(t.getChangedAttributes()):null,o=s?new Set(t.getModelsWithFullReset()):null,i=this.cacheCtrl.getStats();if(await this.performUpdate(()=>this.modelParser.update()),s&&this.cacheCtrl.enabled&&n){const a=this.modelParser.getTotalItemCount(),l=t.getTotalChangedItemCount(),c=a>0?l/a:0,u=this.initOptions.performance?.partialUpdates?.cacheInvalidationThreshold??.7,d=this.initOptions.performance?.partialUpdates?.enableDetailedLogging??!1;o&&o.size>0?(d&&this.log.debug("Cache invalidation: Full clear",{reason:"full_reset_detected"}),this.cacheCtrl.clear()):c>u?(d&&this.log.debug("Cache invalidation: Full clear",{reason:"high_item_ratio",ratio:c.toFixed(2),threshold:u,changedItems:l,totalItems:a}),this.cacheCtrl.clear()):(d&&this.log.debug("Cache invalidation: Selective",{changedItems:l,totalItems:a,ratio:c.toFixed(2)}),this.cacheCtrl.invalidateByDependencies(n))}else(this.initOptions.performance?.partialUpdates?.enableDetailedLogging??!1)&&this.log.debug("Cache invalidation: Full clear",{reason:"full_update"}),this.cacheCtrl.clear();if(this.cacheCtrl.getStats){const a=this.cacheCtrl.getStats(),l=this.modelParser.partialUpdateMetrics.getLastUpdates(1);if(l.length>0&&l[0]){const c=l[0];c.cacheStats={entriesInvalidated:i.totalEntries-a.totalEntries,totalEntries:i.totalEntries}}}if(s&&n){const a={isPartialUpdate:!0,changedModels:Array.from(n.keys()),changedAttributes:n,affectedModels:this.getAffectedModels(n)};this.cdRef.trigger({scope:"global",type:"dcupl_partial_update",args:[a]}),this.updateFnLists(a,e?.autoUpdateLists)}else this.updateFnLists(null,e?.autoUpdateLists);return!0}catch(t){return this.log.error("Update failed",t),!1}}destroy(){try{this.lists.destroy(),this._loaders.forEach(e=>{e.destroy()})}catch{}}getItem(e){const t=this.modelParser.models.get(e.modelKey);if(!t)throw new Error;return this.globalItemService.getItem(e.itemKey,t.data,t,e)}_getManyItems(e){const t=this.modelParser.models.get(e.modelKey);if(!t)throw new Error;return this.globalItemService.getManyItems(e.itemKeys,t.data,t,e)}executeQuery(e){if(!e?.modelKey)throw new Error("No modelKey provided");return this.getFnList({modelKey:e?.modelKey}).catalog.query.execute(e)}addLoader(e,t){const s=ye.now(),n=t||L();this._loaders.set(n,e),e.core=this,e.key=n;const o=new br;o._init({cdRefKey:n,parentCd:this.cdRef,dcuplInitOptions:this.initOptions,analyticsController:this.analyticsController}),e.cdRef=o,this.initOptions.config?.projectId&&e.defaultVariables.set("projectId",{key:"projectId",value:this.initOptions.config?.projectId}),this.initOptions.config?.apiKey&&e.defaultVariables.set("apiKey",{key:"apiKey",value:this.initOptions.config?.apiKey}),this.initOptions.config?.version&&e.defaultVariables.set("version",{key:"version",value:this.initOptions.config?.version}),this.cdRef.trigger({scope:"global",type:"loader_added",connectMessage:!0,args:[n],start:s})}removeLoader(e){const t=this._loaders.get(e);t&&t.destroy(),this._loaders.delete(e)}async performUpdate(e){if(this.busy)return new Promise(t=>{this.updateQueue.push(()=>e().then(t))});try{this.busy=!0,await e()}finally{this.busy=!1,this.processQueue()}}async processQueue(){if(this.updateQueue.length>0){const e=this.updateQueue.shift();e&&(await e(),this.processQueue())}}};Q([v({scope:"global",type:"fn_pivot",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],F.prototype,"_pivot"),Q([v({scope:"global",type:"fn_aggregate",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],F.prototype,"_aggregate"),Q([v({scope:"global",type:"fn_suggest",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],F.prototype,"_suggest"),Q([v({scope:"global",type:"fn_groupBy",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],F.prototype,"_groupBy"),Q([v({scope:"global",type:"fn_facets",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],F.prototype,"_facets"),Q([v({scope:"global",type:"fn_metadata",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],F.prototype,"_metadata"),Q([v({scope:"global",type:"dcupl_initialized",connectMessage:!0})],F.prototype,"init"),Q([v({scope:"global",type:"dcupl_updated_manually",action:"update",connectMessage:!0})],F.prototype,"update"),Q([v({scope:"global",type:"dcupl_destroyed",connectMessage:!0})],F.prototype,"destroy"),Q([v({scope:"global",type:"query_one",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],F.prototype,"getItem"),Q([v({scope:"global",type:"query_many",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],F.prototype,"_getManyItems"),Q([v({scope:"global",type:"query_execute",cloneResult:!0,connectMessage:!0,connectMessageResult:!0})],F.prototype,"executeQuery"),Q([v({scope:"global",type:"loader_removed",connectMessage:!0})],F.prototype,"removeLoader");let Mh=class extends F{version="2.0.0-beta.2";constructor(e){super(e)}};var Bn=typeof global=="object"&&global&&global.Object===Object&&global,Ih=typeof self=="object"&&self&&self.Object===Object&&self,Z=Bn||Ih||Function("return this")(),le=Z.Symbol,Vn=Object.prototype,Sh=Vn.hasOwnProperty,Th=Vn.toString,ot=le?le.toStringTag:void 0;function Oh(r){var e=Sh.call(r,ot),t=r[ot];try{r[ot]=void 0;var s=!0}catch{}var n=Th.call(r);return s&&(e?r[ot]=t:delete r[ot]),n}var Kh=Object.prototype,Fh=Kh.toString;function qh(r){return Fh.call(r)}var Qh="[object Null]",Bh="[object Undefined]",Gn=le?le.toStringTag:void 0;function Ie(r){return r==null?r===void 0?Bh:Qh:Gn&&Gn in Object(r)?Oh(r):qh(r)}function Se(r){return r!=null&&typeof r=="object"}var Vh="[object Symbol]";function Rr(r){return typeof r=="symbol"||Se(r)&&Ie(r)==Vh}function Gh(r,e){for(var t=-1,s=r==null?0:r.length,n=Array(s);++t<s;)n[t]=e(r[t],t,r);return n}var Te=Array.isArray,Un=le?le.prototype:void 0,Nn=Un?Un.toString:void 0;function zn(r){if(typeof r=="string")return r;if(Te(r))return Gh(r,zn)+"";if(Rr(r))return Nn?Nn.call(r):"";var e=r+"";return e=="0"&&1/r==-1/0?"-0":e}function It(r){var e=typeof r;return r!=null&&(e=="object"||e=="function")}var Uh="[object AsyncFunction]",Nh="[object Function]",zh="[object GeneratorFunction]",Lh="[object Proxy]";function Ln(r){if(!It(r))return!1;var e=Ie(r);return e==Nh||e==zh||e==Uh||e==Lh}var Er=Z["__core-js_shared__"],Wn=(function(){var r=/[^.]+$/.exec(Er&&Er.keys&&Er.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""})();function Wh(r){return!!Wn&&Wn in r}var Hh=Function.prototype,Jh=Hh.toString;function ve(r){if(r!=null){try{return Jh.call(r)}catch{}try{return r+""}catch{}}return""}var Zh=/[\\^$.*+?()[\]{}|]/g,Xh=/^\[object .+?Constructor\]$/,Yh=Function.prototype,ep=Object.prototype,tp=Yh.toString,rp=ep.hasOwnProperty,sp=RegExp("^"+tp.call(rp).replace(Zh,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function np(r){if(!It(r)||Wh(r))return!1;var e=Ln(r)?sp:Xh;return e.test(ve(r))}function op(r,e){return r?.[e]}function be(r,e){var t=op(r,e);return np(t)?t:void 0}var Mr=be(Z,"WeakMap"),Hn=Object.create,ip=(function(){function r(){}return function(e){if(!It(e))return{};if(Hn)return Hn(e);r.prototype=e;var t=new r;return r.prototype=void 0,t}})(),Jn=(function(){try{var r=be(Object,"defineProperty");return r({},"",{}),r}catch{}})();function ap(r,e){for(var t=-1,s=r==null?0:r.length;++t<s&&e(r[t],t,r)!==!1;);return r}var lp=9007199254740991,cp=/^(?:0|[1-9]\d*)$/;function up(r,e){var t=typeof r;return e=e??lp,!!e&&(t=="number"||t!="symbol"&&cp.test(r))&&r>-1&&r%1==0&&r<e}function dp(r,e,t){e=="__proto__"&&Jn?Jn(r,e,{configurable:!0,enumerable:!0,value:t,writable:!0}):r[e]=t}function Zn(r,e){return r===e||r!==r&&e!==e}var fp=Object.prototype,hp=fp.hasOwnProperty;function pp(r,e,t){var s=r[e];(!(hp.call(r,e)&&Zn(s,t))||t===void 0&&!(e in r))&&dp(r,e,t)}var yp=9007199254740991;function Xn(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=yp}function gp(r){return r!=null&&Xn(r.length)&&!Ln(r)}var mp=Object.prototype;function Yn(r){var e=r&&r.constructor,t=typeof e=="function"&&e.prototype||mp;return r===t}function vp(r,e){for(var t=-1,s=Array(r);++t<r;)s[t]=e(t);return s}var bp="[object Arguments]";function eo(r){return Se(r)&&Ie(r)==bp}var to=Object.prototype,kp=to.hasOwnProperty,Ap=to.propertyIsEnumerable,wp=eo((function(){return arguments})())?eo:function(r){return Se(r)&&kp.call(r,"callee")&&!Ap.call(r,"callee")};function $p(){return!1}var ro=typeof exports=="object"&&exports&&!exports.nodeType&&exports,so=ro&&typeof module=="object"&&module&&!module.nodeType&&module,Cp=so&&so.exports===ro,no=Cp?Z.Buffer:void 0,_p=no?no.isBuffer:void 0,oo=_p||$p,Dp="[object Arguments]",xp="[object Array]",Pp="[object Boolean]",jp="[object Date]",Rp="[object Error]",Ep="[object Function]",Mp="[object Map]",Ip="[object Number]",Sp="[object Object]",Tp="[object RegExp]",Op="[object Set]",Kp="[object String]",Fp="[object WeakMap]",qp="[object ArrayBuffer]",Qp="[object DataView]",Bp="[object Float32Array]",Vp="[object Float64Array]",Gp="[object Int8Array]",Up="[object Int16Array]",Np="[object Int32Array]",zp="[object Uint8Array]",Lp="[object Uint8ClampedArray]",Wp="[object Uint16Array]",Hp="[object Uint32Array]",C={};C[Bp]=C[Vp]=C[Gp]=C[Up]=C[Np]=C[zp]=C[Lp]=C[Wp]=C[Hp]=!0,C[Dp]=C[xp]=C[qp]=C[Pp]=C[Qp]=C[jp]=C[Rp]=C[Ep]=C[Mp]=C[Ip]=C[Sp]=C[Tp]=C[Op]=C[Kp]=C[Fp]=!1;function Jp(r){return Se(r)&&Xn(r.length)&&!!C[Ie(r)]}function Ir(r){return function(e){return r(e)}}var io=typeof exports=="object"&&exports&&!exports.nodeType&&exports,it=io&&typeof module=="object"&&module&&!module.nodeType&&module,Zp=it&&it.exports===io,Sr=Zp&&Bn.process,Oe=(function(){try{var r=it&&it.require&&it.require("util").types;return r||Sr&&Sr.binding&&Sr.binding("util")}catch{}})(),ao=Oe&&Oe.isTypedArray,Xp=ao?Ir(ao):Jp,Yp=Object.prototype,ey=Yp.hasOwnProperty;function ty(r,e){var t=Te(r),s=!t&&wp(r),n=!t&&!s&&oo(r),o=!t&&!s&&!n&&Xp(r),i=t||s||n||o,a=i?vp(r.length,String):[],l=a.length;for(var c in r)ey.call(r,c)&&!(i&&(c=="length"||n&&(c=="offset"||c=="parent")||o&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||up(c,l)))&&a.push(c);return a}function lo(r,e){return function(t){return r(e(t))}}var ry=lo(Object.keys,Object),sy=Object.prototype,ny=sy.hasOwnProperty;function oy(r){if(!Yn(r))return ry(r);var e=[];for(var t in Object(r))ny.call(r,t)&&t!="constructor"&&e.push(t);return e}function iy(r){return gp(r)?ty(r):oy(r)}var ay=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ly=/^\w*$/;function cy(r,e){if(Te(r))return!1;var t=typeof r;return t=="number"||t=="symbol"||t=="boolean"||r==null||Rr(r)?!0:ly.test(r)||!ay.test(r)||e!=null&&r in Object(e)}var at=be(Object,"create");function uy(){this.__data__=at?at(null):{},this.size=0}function dy(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}var fy="__lodash_hash_undefined__",hy=Object.prototype,py=hy.hasOwnProperty;function yy(r){var e=this.__data__;if(at){var t=e[r];return t===fy?void 0:t}return py.call(e,r)?e[r]:void 0}var gy=Object.prototype,my=gy.hasOwnProperty;function vy(r){var e=this.__data__;return at?e[r]!==void 0:my.call(e,r)}var by="__lodash_hash_undefined__";function ky(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=at&&e===void 0?by:e,this}function ke(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}ke.prototype.clear=uy,ke.prototype.delete=dy,ke.prototype.get=yy,ke.prototype.has=vy,ke.prototype.set=ky;function Ay(){this.__data__=[],this.size=0}function St(r,e){for(var t=r.length;t--;)if(Zn(r[t][0],e))return t;return-1}var wy=Array.prototype,$y=wy.splice;function Cy(r){var e=this.__data__,t=St(e,r);if(t<0)return!1;var s=e.length-1;return t==s?e.pop():$y.call(e,t,1),--this.size,!0}function _y(r){var e=this.__data__,t=St(e,r);return t<0?void 0:e[t][1]}function Dy(r){return St(this.__data__,r)>-1}function xy(r,e){var t=this.__data__,s=St(t,r);return s<0?(++this.size,t.push([r,e])):t[s][1]=e,this}function ne(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}ne.prototype.clear=Ay,ne.prototype.delete=Cy,ne.prototype.get=_y,ne.prototype.has=Dy,ne.prototype.set=xy;var lt=be(Z,"Map");function Py(){this.size=0,this.__data__={hash:new ke,map:new(lt||ne),string:new ke}}function jy(r){var e=typeof r;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?r!=="__proto__":r===null}function Tt(r,e){var t=r.__data__;return jy(e)?t[typeof e=="string"?"string":"hash"]:t.map}function Ry(r){var e=Tt(this,r).delete(r);return this.size-=e?1:0,e}function Ey(r){return Tt(this,r).get(r)}function My(r){return Tt(this,r).has(r)}function Iy(r,e){var t=Tt(this,r),s=t.size;return t.set(r,e),this.size+=t.size==s?0:1,this}function ce(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}ce.prototype.clear=Py,ce.prototype.delete=Ry,ce.prototype.get=Ey,ce.prototype.has=My,ce.prototype.set=Iy;var Sy="Expected a function";function Tr(r,e){if(typeof r!="function"||e!=null&&typeof e!="function")throw new TypeError(Sy);var t=function(){var s=arguments,n=e?e.apply(this,s):s[0],o=t.cache;if(o.has(n))return o.get(n);var i=r.apply(this,s);return t.cache=o.set(n,i)||o,i};return t.cache=new(Tr.Cache||ce),t}Tr.Cache=ce;var Ty=500;function Oy(r){var e=Tr(r,function(s){return t.size===Ty&&t.clear(),s}),t=e.cache;return e}var Ky=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Fy=/\\(\\)?/g,qy=Oy(function(r){var e=[];return r.charCodeAt(0)===46&&e.push(""),r.replace(Ky,function(t,s,n,o){e.push(n?o.replace(Fy,"$1"):s||t)}),e});function Qy(r){return r==null?"":zn(r)}function By(r,e){return Te(r)?r:cy(r,e)?[r]:qy(Qy(r))}function Vy(r){if(typeof r=="string"||Rr(r))return r;var e=r+"";return e=="0"&&1/r==-1/0?"-0":e}function Gy(r,e){e=By(e,r);for(var t=0,s=e.length;r!=null&&t<s;)r=r[Vy(e[t++])];return t&&t==s?r:void 0}function Uy(r,e,t){var s=r==null?void 0:Gy(r,e);return s===void 0?t:s}function Ny(r,e){for(var t=-1,s=e.length,n=r.length;++t<s;)r[n+t]=e[t];return r}var zy=lo(Object.getPrototypeOf,Object);function Ly(){this.__data__=new ne,this.size=0}function Wy(r){var e=this.__data__,t=e.delete(r);return this.size=e.size,t}function Hy(r){return this.__data__.get(r)}function Jy(r){return this.__data__.has(r)}var Zy=200;function Xy(r,e){var t=this.__data__;if(t instanceof ne){var s=t.__data__;if(!lt||s.length<Zy-1)return s.push([r,e]),this.size=++t.size,this;t=this.__data__=new ce(s)}return t.set(r,e),this.size=t.size,this}function Ke(r){var e=this.__data__=new ne(r);this.size=e.size}Ke.prototype.clear=Ly,Ke.prototype.delete=Wy,Ke.prototype.get=Hy,Ke.prototype.has=Jy,Ke.prototype.set=Xy;var co=typeof exports=="object"&&exports&&!exports.nodeType&&exports,uo=co&&typeof module=="object"&&module&&!module.nodeType&&module,Yy=uo&&uo.exports===co,fo=Yy?Z.Buffer:void 0;fo&&fo.allocUnsafe;function eg(r,e){return r.slice()}function tg(r,e){for(var t=-1,s=r==null?0:r.length,n=0,o=[];++t<s;){var i=r[t];e(i,t,r)&&(o[n++]=i)}return o}function rg(){return[]}var sg=Object.prototype,ng=sg.propertyIsEnumerable,ho=Object.getOwnPropertySymbols,og=ho?function(r){return r==null?[]:(r=Object(r),tg(ho(r),function(e){return ng.call(r,e)}))}:rg;function ig(r,e,t){var s=e(r);return Te(r)?s:Ny(s,t(r))}function ag(r){return ig(r,iy,og)}var Or=be(Z,"DataView"),Kr=be(Z,"Promise"),Fr=be(Z,"Set"),po="[object Map]",lg="[object Object]",yo="[object Promise]",go="[object Set]",mo="[object WeakMap]",vo="[object DataView]",cg=ve(Or),ug=ve(lt),dg=ve(Kr),fg=ve(Fr),hg=ve(Mr),oe=Ie;(Or&&oe(new Or(new ArrayBuffer(1)))!=vo||lt&&oe(new lt)!=po||Kr&&oe(Kr.resolve())!=yo||Fr&&oe(new Fr)!=go||Mr&&oe(new Mr)!=mo)&&(oe=function(r){var e=Ie(r),t=e==lg?r.constructor:void 0,s=t?ve(t):"";if(s)switch(s){case cg:return vo;case ug:return po;case dg:return yo;case fg:return go;case hg:return mo}return e});var pg=Object.prototype,yg=pg.hasOwnProperty;function gg(r){var e=r.length,t=new r.constructor(e);return e&&typeof r[0]=="string"&&yg.call(r,"index")&&(t.index=r.index,t.input=r.input),t}var bo=Z.Uint8Array;function qr(r){var e=new r.constructor(r.byteLength);return new bo(e).set(new bo(r)),e}function mg(r,e){var t=qr(r.buffer);return new r.constructor(t,r.byteOffset,r.byteLength)}var vg=/\w*$/;function bg(r){var e=new r.constructor(r.source,vg.exec(r));return e.lastIndex=r.lastIndex,e}var ko=le?le.prototype:void 0,Ao=ko?ko.valueOf:void 0;function kg(r){return Ao?Object(Ao.call(r)):{}}function Ag(r,e){var t=qr(r.buffer);return new r.constructor(t,r.byteOffset,r.length)}var wg="[object Boolean]",$g="[object Date]",Cg="[object Map]",_g="[object Number]",Dg="[object RegExp]",xg="[object Set]",Pg="[object String]",jg="[object Symbol]",Rg="[object ArrayBuffer]",Eg="[object DataView]",Mg="[object Float32Array]",Ig="[object Float64Array]",Sg="[object Int8Array]",Tg="[object Int16Array]",Og="[object Int32Array]",Kg="[object Uint8Array]",Fg="[object Uint8ClampedArray]",qg="[object Uint16Array]",Qg="[object Uint32Array]";function Bg(r,e,t){var s=r.constructor;switch(e){case Rg:return qr(r);case wg:case $g:return new s(+r);case Eg:return mg(r);case Mg:case Ig:case Sg:case Tg:case Og:case Kg:case Fg:case qg:case Qg:return Ag(r);case Cg:return new s;case _g:case Pg:return new s(r);case Dg:return bg(r);case xg:return new s;case jg:return kg(r)}}function Vg(r){return typeof r.constructor=="function"&&!Yn(r)?ip(zy(r)):{}}var Gg="[object Map]";function Ug(r){return Se(r)&&oe(r)==Gg}var wo=Oe&&Oe.isMap,Ng=wo?Ir(wo):Ug,zg="[object Set]";function Lg(r){return Se(r)&&oe(r)==zg}var $o=Oe&&Oe.isSet,Wg=$o?Ir($o):Lg,Co="[object Arguments]",Hg="[object Array]",Jg="[object Boolean]",Zg="[object Date]",Xg="[object Error]",_o="[object Function]",Yg="[object GeneratorFunction]",em="[object Map]",tm="[object Number]",Do="[object Object]",rm="[object RegExp]",sm="[object Set]",nm="[object String]",om="[object Symbol]",im="[object WeakMap]",am="[object ArrayBuffer]",lm="[object DataView]",cm="[object Float32Array]",um="[object Float64Array]",dm="[object Int8Array]",fm="[object Int16Array]",hm="[object Int32Array]",pm="[object Uint8Array]",ym="[object Uint8ClampedArray]",gm="[object Uint16Array]",mm="[object Uint32Array]",A={};A[Co]=A[Hg]=A[am]=A[lm]=A[Jg]=A[Zg]=A[cm]=A[um]=A[dm]=A[fm]=A[hm]=A[em]=A[tm]=A[Do]=A[rm]=A[sm]=A[nm]=A[om]=A[pm]=A[ym]=A[gm]=A[mm]=!0,A[Xg]=A[_o]=A[im]=!1;function Ot(r,e,t,s,n,o){var i;if(i!==void 0)return i;if(!It(r))return r;var a=Te(r);if(a)i=gg(r);else{var l=oe(r),c=l==_o||l==Yg;if(oo(r))return eg(r);if(l==Do||l==Co||c&&!n)i=c?{}:Vg(r);else{if(!A[l])return n?r:{};i=Bg(r,l)}}o||(o=new Ke);var u=o.get(r);if(u)return u;o.set(r,i),Wg(r)?r.forEach(function(h){i.add(Ot(h,e,t,h,r,o))}):Ng(r)&&r.forEach(function(h,p){i.set(p,Ot(h,e,t,p,r,o))});var d=ag,f=a?void 0:d(r);return ap(f||r,function(h,p){f&&(p=h,h=r[p]),pp(i,p,Ot(h,e,t,p,r,o))}),i}var vm=1,bm=4;function km(r){return Ot(r,vm|bm)}const K={now:()=>typeof performance<"u"&&performance.now?performance.now():new Date().getTime(),mark:r=>{typeof performance<"u"&&performance.mark&&performance.mark(r)},measure:(r,e,t)=>{typeof performance<"u"&&performance.measure&&performance.measure(r,e,t)},getEntriesByName(r){if(typeof performance<"u"&&performance.getEntriesByName)return performance.getEntriesByName(r)},getEntriesByType(r){if(typeof performance<"u"&&performance.getEntriesByType)return performance.getEntriesByType(r)}},xo={silent:0,error:1,warn:2,info:3,debug:4};class E{config;static globalConfig={};constructor(e={}){this.config={level:e.level??E.globalConfig.level??this.getDefaultLevel(),format:e.format??E.globalConfig.format??this.getDefaultFormat(),prefix:e.prefix,onLog:e.onLog??E.globalConfig.onLog,onTrackError:e.onTrackError??E.globalConfig.onTrackError}}static setGlobalConfig(e){E.globalConfig={...E.globalConfig,...e}}static getGlobalConfig(){return{...E.globalConfig}}static setModuleLevel(e,t){E.globalConfig.onLog||(E.globalConfig.onLog=void 0),E._moduleOverrides||(E._moduleOverrides=new Map),E._moduleOverrides.set(e,t)}static getModuleLevel(e){if(!(!e||!E._moduleOverrides))return E._moduleOverrides.get(e)}getDefaultLevel(){return"info"}getDefaultFormat(){return"pretty"}getEffectiveLevel(){if(this.config.prefix){const e=E.getModuleLevel(this.config.prefix);if(e)return e}return this.config.level}shouldLog(e){const t=this.getEffectiveLevel();return xo[e]<=xo[t]}formatMessage(e){if(this.config.format==="json"){const i={timestamp:new Date(e.timestamp).toISOString(),level:e.level,message:e.message};return e.prefix&&(i.module=e.prefix),e.context&&(i.context=e.context),e.error&&(i.error={name:e.error.name,message:e.error.message,stack:e.error.stack}),JSON.stringify(i)}const t=new Date(e.timestamp).toISOString().substring(11,23),s=e.prefix?`[${e.prefix}]`:"",n=this.getLevelIcon(e.level),o=e.context?` ${JSON.stringify(e.context)}`:"";return`${t} ${n} ${s} ${e.message}${o}`.trim()}getLevelIcon(e){switch(e){case"error":return"✖";case"warn":return"⚠";case"info":return"ℹ";case"debug":return"⚙";default:return" "}}log(e,t,s,n){if(!this.shouldLog(e))return;const o={level:e,message:t,timestamp:Date.now(),prefix:this.config.prefix,context:s,error:n};if(this.config.onLog){this.config.onLog(o);return}const i=this.formatMessage(o);if(typeof console<"u")switch(e){case"error":n?console.error(i,n):console.error(i);break;case"warn":console.warn(i);break;case"debug":console.debug?console.debug(i):console.log(i);break;default:console.log(i)}}error(e,t,s){const n=t instanceof Error?t:void 0,o=t instanceof Error?s:t;this.log("error",e,o,n)}trackError(e,t,s){if(this.error(e,t,s?.context),this.config.onTrackError){const n={level:"error",message:e,timestamp:Date.now(),prefix:this.config.prefix,context:s?.context,error:t,errorType:s?.errorType,errorGroup:s?.errorGroup};this.config.onTrackError(n)}}warn(e,t){this.log("warn",e,t)}info(e,t){this.log("info",e,t)}debug(e,t){this.log("debug",e,t)}child(e){const t={...this.config,...e,prefix:e.prefix?this.config.prefix?`${this.config.prefix}:${e.prefix}`:e.prefix:this.config.prefix};return new E(t)}configure(e){Object.assign(this.config,e)}}const Qr=new E;function Br(r=10){let e="";const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";for(let s=0;s<r;s++)e+=t.charAt(Math.floor(Math.random()*t.length));return e}let Am=class{key;parentCd;dcuplInitOptions;analyticsController;off;updateListener=new Set;counter=0;constructor(){}_init(e){this.key=e.cdRefKey,this.analyticsController=e.analyticsController,this.parentCd=e.parentCd,this.dcuplInitOptions=e.dcuplInitOptions,this.parentCd&&(this.off=this.parentCd.on(t=>{t.action==="update"&&t.originCdRefKey===this.parentCd?.key&&(t.connectMessage=!1,this.trigger(t))}))}getCounter(){return this.parentCd?this.parentCd.getCounter():this.counter}increaseCounter(){this.parentCd?this.parentCd.increaseCounter():this.counter++}destroy(){this.off&&this.off()}trigger(e){e.originCdRefKey||(e.originCdRefKey=this.key),e.key||(this.increaseCounter(),e.key=this.getCounter()),e.end||(e.end=K.now(),e.duration=e.start-e.end),this.updateListener.forEach(t=>{t(e)})}on(e){return this.updateListener.add(e),()=>{this.updateListener.delete(e)}}};const Po=(r,e)=>e?typeof structuredClone<"u"?structuredClone(r):km(r):r,jo=(r,e,t,s,n,o)=>{try{const i=!!e.dcuplInitOptions.performance?.clone?.enabled&&!!t.cloneResult,a=Po(o,i);if(t.scope==="list"&&(t.listKey=r.cdRef?.key||r.key,t.modelKey=r.model?.key||r.modelKey),t.type==="list_created"&&t.args[0].listKey.startsWith("__global_list__")||t.listKey?.startsWith("__global_list__"))return a;const l=K.now(),c=l-s,u=Math.round(c*1e3)/1e3;t.duration=u,t.start=s,t.end=l;const d={duration:t.duration};return t.modelKey&&(d.model=t.modelKey),t.connectMessageResult&&(t.result=a),t.args&&(d.args=t.args),e?.trigger(t),e.analyticsController.mark({name:`${t.type}:end`,context:n}),e.analyticsController.measure({name:t.type,start:`${t.type}:start`,end:`${t.type}:end`,context:n,detail:d}),a}catch{return o}},Ro=r=>(e,t,s)=>{const n=s.value;return s.value=function(...o){const i=K.now(),a=this.cdRef,l=Po(r,!0);l.key||(a.increaseCounter(),l.key=a.getCounter());const c=Br();a.analyticsController.mark({name:`${l.type}:start`,context:c});const u=this.model?.key;!l.originCdRefKey&&a.key&&(l.originCdRefKey=a.key),u&&(l.modelKey=u);const d=n.apply(this,o);return l.method=t,l.args=o,d&&typeof d=="object"&&"then"in d?d.then(f=>jo(this,a,l,i,c,f)):jo(this,a,l,i,c,d)},s},Kt=(r,e)=>r?(e||(e={}),r.replace(/\$\{(.*?)\}/g,(t,s)=>Uy(e,s.trim(),""))):"";let wm=class{log=Qr.child({prefix:"DcuplCsvParser"});parse(r,e={}){const{quoteChar:t=e.quoteChar||'"',escapeChar:s=e.escapeChar||'"',comments:n=e.comments||void 0,dynamicTyping:o=!1,header:i=!0,skipEmptyLines:a=!0,transformHeader:l,transform:c}=e,u=[],d=i?[]:null;let f=r.length,h=[],p="",y=!1,m=!0,g=0;if(a){for(;g<f&&(r[g]===`
|
|
9
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
10
|
`;)g++;continue}if(x===`
|
|
11
11
|
`||x==="\r"&&B===`
|
|
12
|
-
`)if(y)p+=x;else{(p.length>0||!a)&&h.push(p),m&&d?h.forEach(
|
|
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
|
|
12
|
+
`)if(y)p+=x;else{(p.length>0||!a)&&h.push(p),m&&d?h.forEach(U=>d.push(l?l(U):U)):d?u.push(this.buildObjectRow(d,h,o,c)):u.push([...h]),h=[],p="",m=!1,g+=x==="\r"&&B===`
|
|
13
|
+
`?1:0;continue}else if(x===b&&!y)h.push(p),p="";else if(x===t)y?B===s?(p+=t,g++):y=!1:p.length===0?y=!0:p+=x;else if((y||p.length===0)&&(x==="{"||x==="[")){const U=this.extractJson(r,g,b);p+=U.value,g+=U.length-1}else p+=x}return(p.length>0||!a)&&h.push(p),h.length&&(m&&d?h.forEach(x=>d.push(l?l(x):x)):d?u.push(this.buildObjectRow(d,h,o,c)):u.push([...h])),u}buildObjectRow(r,e,t,s){const n={};for(let o=0;o<r.length;o++){const i=r[o];let a=e[o];t&&(a=this.dynamicType(a)),n[i]=s?s(a,i):a}return n}detectDelimiter(r){const e=r.slice(0,r.indexOf(`
|
|
14
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})();
|
|
15
|
+
`||a==="\r")){this.log.error("JSON block spans multiple lines",void 0,{startIndex:e,endIndex:n});break}if(a==='"'&&i!=="\\"&&(o=!o),o||(a==="{"||a==="["?s.push(a):(a==="}"&&s[s.length-1]==="{"||a==="]"&&s[s.length-1]==="[")&&s.pop()),n++,i=a,s.length===0&&!o)break}return{value:r.slice(e,n),length:n-e}}};function Eo(r,e=","){return r&&typeof r=="string"?r.split(e).map(t=>t.trim()):[]}class $m{loader;log=Qr.child({prefix:"CsvParser"});constructor(e){this.loader=e}getParserConfig(e,t){const s=this.loader.config.get()?.options,n=this.loader.options,o=this.log,i={};typeof t?.csvParserOptions?.quoteChar<"u"?i.quoteChar=t?.csvParserOptions?.quoteChar:typeof s?.csvParserOptions?.quoteChar<"u"?i.quoteChar=s?.csvParserOptions?.quoteChar:i.quoteChar=n.csvParserOptions?.quoteChar,typeof t?.csvParserOptions?.delimiter<"u"?i.delimiter=t?.csvParserOptions?.delimiter:typeof s?.csvParserOptions?.delimiter<"u"?i.delimiter=s?.csvParserOptions?.delimiter:i.delimiter=n.csvParserOptions?.delimiter,typeof t?.csvParserOptions?.escapeChar<"u"?i.escapeChar=t?.csvParserOptions?.escapeChar:typeof s?.csvParserOptions?.escapeChar<"u"?i.escapeChar=s?.csvParserOptions?.escapeChar:i.escapeChar=n.csvParserOptions?.escapeChar,typeof t?.csvParserOptions?.commentChar<"u"?i.commentChar=t?.csvParserOptions?.commentChar:typeof s?.csvParserOptions?.commentChar<"u"?i.commentChar=s?.csvParserOptions?.commentChar:i.commentChar=n.csvParserOptions?.commentChar;const a=new Map,l=new Map;if(e.references)for(const u of e.references)a.set(u.key,u),u.origin&&a.set(u.origin,u);if(e.properties)for(const u of e.properties)l.set(u.key,u),u.origin&&l.set(u.origin,u);const c=t?.keyProperty||e.keyProperty||"key";return{delimiter:i?.delimiter,quoteChar:i?.quoteChar,escapeChar:i?.escapeChar,comments:i.commentChar,dynamicTyping:!1,header:!0,skipEmptyLines:!0,transformHeader:u=>u?.trim().replace(/"/g,""),transform:function(u,d){if(u==="null")return null;if(u===""||typeof u>"u")return;if(typeof d>"u")return u;const f=a.get(d);if(c===d)return u;if(f)if(u[0]==="{"||u[0]==="[")try{return JSON.parse(u)}catch(p){o.error("Failed to parse JSON in CSV reference field",p,{header:d,value:u});return}else return f.type==="singleValued"?u:u?.length>0&&f.type==="multiValued"?Eo(u,f?.separator):u;const h=l.get(d);if(!(!e.autoGenerateProperties&&!h))switch(h?.type){case"string":return u;case"int":{const p=parseInt(u,10);return isNaN(p)?void 0:p}case"float":{const p=parseFloat(u);return isNaN(p)?void 0:p}case"boolean":return u==="true"?!0:u==="false"?!1:void 0;case"json":try{return u=u.replace(/[\x00-\x1F\x7F-\x9F]/g,""),JSON.parse(u)}catch(p){o.error("Failed to parse JSON in CSV property field",p,{header:d,value:u});return}case"Array<string>":case"Array<int>":case"Array<float>":case"Array<date>":if(u&&typeof u=="string"&&u[0]==="[")try{return JSON.parse(u)}catch{return}return u&&typeof u=="string"?Eo(u,h?.separator):void 0;default:return u}}}}getJsonFromCSVString(e,t,s){const n=this.getParserConfig(t,s.options);return new wm().parse(e,n)}}var Mo=typeof global=="object"&&global&&global.Object===Object&&global,Cm=typeof self=="object"&&self&&self.Object===Object&&self,X=Mo||Cm||Function("return this")(),Fe=X.Symbol,Io=Object.prototype,_m=Io.hasOwnProperty,Dm=Io.toString,ct=Fe?Fe.toStringTag:void 0;function xm(r){var e=_m.call(r,ct),t=r[ct];try{r[ct]=void 0;var s=!0}catch{}var n=Dm.call(r);return s&&(e?r[ct]=t:delete r[ct]),n}var Pm=Object.prototype,jm=Pm.toString;function Rm(r){return jm.call(r)}var Em="[object Null]",Mm="[object Undefined]",So=Fe?Fe.toStringTag:void 0;function ut(r){return r==null?r===void 0?Mm:Em:So&&So in Object(r)?xm(r):Rm(r)}function qe(r){return r!=null&&typeof r=="object"}function Im(r,e){for(var t=-1,s=r==null?0:r.length,n=Array(s);++t<s;)n[t]=e(r[t],t,r);return n}var Vr=Array.isArray;function Ft(r){var e=typeof r;return r!=null&&(e=="object"||e=="function")}function To(r){return r}var Sm="[object AsyncFunction]",Tm="[object Function]",Om="[object GeneratorFunction]",Km="[object Proxy]";function Oo(r){if(!Ft(r))return!1;var e=ut(r);return e==Tm||e==Om||e==Sm||e==Km}var Gr=X["__core-js_shared__"],Ko=(function(){var r=/[^.]+$/.exec(Gr&&Gr.keys&&Gr.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""})();function Fm(r){return!!Ko&&Ko in r}var qm=Function.prototype,Qm=qm.toString;function Ae(r){if(r!=null){try{return Qm.call(r)}catch{}try{return r+""}catch{}}return""}var Bm=/[\\^$.*+?()[\]{}|]/g,Vm=/^\[object .+?Constructor\]$/,Gm=Function.prototype,Um=Object.prototype,Nm=Gm.toString,zm=Um.hasOwnProperty,Lm=RegExp("^"+Nm.call(zm).replace(Bm,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Wm(r){if(!Ft(r)||Fm(r))return!1;var e=Oo(r)?Lm:Vm;return e.test(Ae(r))}function Hm(r,e){return r?.[e]}function we(r,e){var t=Hm(r,e);return Wm(t)?t:void 0}var Ur=we(X,"WeakMap"),Fo=Object.create,Jm=(function(){function r(){}return function(e){if(!Ft(e))return{};if(Fo)return Fo(e);r.prototype=e;var t=new r;return r.prototype=void 0,t}})();function Zm(r,e,t){switch(t.length){case 0:return r.call(e);case 1:return r.call(e,t[0]);case 2:return r.call(e,t[0],t[1]);case 3:return r.call(e,t[0],t[1],t[2])}return r.apply(e,t)}var Xm=800,Ym=16,ev=Date.now;function tv(r){var e=0,t=0;return function(){var s=ev(),n=Ym-(s-t);if(t=s,n>0){if(++e>=Xm)return arguments[0]}else e=0;return r.apply(void 0,arguments)}}function rv(r){return function(){return r}}var qt=(function(){try{var r=we(Object,"defineProperty");return r({},"",{}),r}catch{}})(),sv=qt?function(r,e){return qt(r,"toString",{configurable:!0,enumerable:!1,value:rv(e),writable:!0})}:To,nv=tv(sv);function ov(r,e){for(var t=-1,s=r==null?0:r.length;++t<s&&e(r[t],t,r)!==!1;);return r}function iv(r,e,t,s){for(var n=r.length,o=t+-1;++o<n;)if(e(r[o],o,r))return o;return-1}function av(r){return r!==r}function lv(r,e,t){for(var s=t-1,n=r.length;++s<n;)if(r[s]===e)return s;return-1}function cv(r,e,t){return e===e?lv(r,e,t):iv(r,av,t)}function uv(r,e){var t=r==null?0:r.length;return!!t&&cv(r,e,0)>-1}var dv=9007199254740991,fv=/^(?:0|[1-9]\d*)$/;function hv(r,e){var t=typeof r;return e=e??dv,!!e&&(t=="number"||t!="symbol"&&fv.test(r))&&r>-1&&r%1==0&&r<e}function pv(r,e,t){e=="__proto__"&&qt?qt(r,e,{configurable:!0,enumerable:!0,value:t,writable:!0}):r[e]=t}function qo(r,e){return r===e||r!==r&&e!==e}var yv=Object.prototype,gv=yv.hasOwnProperty;function mv(r,e,t){var s=r[e];(!(gv.call(r,e)&&qo(s,t))||t===void 0&&!(e in r))&&pv(r,e,t)}var Qo=Math.max;function vv(r,e,t){return e=Qo(e===void 0?r.length-1:e,0),function(){for(var s=arguments,n=-1,o=Qo(s.length-e,0),i=Array(o);++n<o;)i[n]=s[e+n];n=-1;for(var a=Array(e+1);++n<e;)a[n]=s[n];return a[e]=t(i),Zm(r,this,a)}}function bv(r,e){return nv(vv(r,e,To),r+"")}var kv=9007199254740991;function Bo(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=kv}function Vo(r){return r!=null&&Bo(r.length)&&!Oo(r)}var Av=Object.prototype;function Go(r){var e=r&&r.constructor,t=typeof e=="function"&&e.prototype||Av;return r===t}function wv(r,e){for(var t=-1,s=Array(r);++t<r;)s[t]=e(t);return s}var $v="[object Arguments]";function Uo(r){return qe(r)&&ut(r)==$v}var No=Object.prototype,Cv=No.hasOwnProperty,_v=No.propertyIsEnumerable,Dv=Uo((function(){return arguments})())?Uo:function(r){return qe(r)&&Cv.call(r,"callee")&&!_v.call(r,"callee")};function xv(){return!1}var zo=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Lo=zo&&typeof module=="object"&&module&&!module.nodeType&&module,Pv=Lo&&Lo.exports===zo,Wo=Pv?X.Buffer:void 0,jv=Wo?Wo.isBuffer:void 0,Ho=jv||xv,Rv="[object Arguments]",Ev="[object Array]",Mv="[object Boolean]",Iv="[object Date]",Sv="[object Error]",Tv="[object Function]",Ov="[object Map]",Kv="[object Number]",Fv="[object Object]",qv="[object RegExp]",Qv="[object Set]",Bv="[object String]",Vv="[object WeakMap]",Gv="[object ArrayBuffer]",Uv="[object DataView]",Nv="[object Float32Array]",zv="[object Float64Array]",Lv="[object Int8Array]",Wv="[object Int16Array]",Hv="[object Int32Array]",Jv="[object Uint8Array]",Zv="[object Uint8ClampedArray]",Xv="[object Uint16Array]",Yv="[object Uint32Array]",_={};_[Nv]=_[zv]=_[Lv]=_[Wv]=_[Hv]=_[Jv]=_[Zv]=_[Xv]=_[Yv]=!0,_[Rv]=_[Ev]=_[Gv]=_[Mv]=_[Uv]=_[Iv]=_[Sv]=_[Tv]=_[Ov]=_[Kv]=_[Fv]=_[qv]=_[Qv]=_[Bv]=_[Vv]=!1;function eb(r){return qe(r)&&Bo(r.length)&&!!_[ut(r)]}function Nr(r){return function(e){return r(e)}}var Jo=typeof exports=="object"&&exports&&!exports.nodeType&&exports,dt=Jo&&typeof module=="object"&&module&&!module.nodeType&&module,tb=dt&&dt.exports===Jo,zr=tb&&Mo.process,Qe=(function(){try{var r=dt&&dt.require&&dt.require("util").types;return r||zr&&zr.binding&&zr.binding("util")}catch{}})(),Zo=Qe&&Qe.isTypedArray,rb=Zo?Nr(Zo):eb,sb=Object.prototype,nb=sb.hasOwnProperty;function ob(r,e){var t=Vr(r),s=!t&&Dv(r),n=!t&&!s&&Ho(r),o=!t&&!s&&!n&&rb(r),i=t||s||n||o,a=i?wv(r.length,String):[],l=a.length;for(var c in r)nb.call(r,c)&&!(i&&(c=="length"||n&&(c=="offset"||c=="parent")||o&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||hv(c,l)))&&a.push(c);return a}function Xo(r,e){return function(t){return r(e(t))}}var ib=Xo(Object.keys,Object),ab=Object.prototype,lb=ab.hasOwnProperty;function cb(r){if(!Go(r))return ib(r);var e=[];for(var t in Object(r))lb.call(r,t)&&t!="constructor"&&e.push(t);return e}function ub(r){return Vo(r)?ob(r):cb(r)}var ft=we(Object,"create");function db(){this.__data__=ft?ft(null):{},this.size=0}function fb(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}var hb="__lodash_hash_undefined__",pb=Object.prototype,yb=pb.hasOwnProperty;function gb(r){var e=this.__data__;if(ft){var t=e[r];return t===hb?void 0:t}return yb.call(e,r)?e[r]:void 0}var mb=Object.prototype,vb=mb.hasOwnProperty;function bb(r){var e=this.__data__;return ft?e[r]!==void 0:vb.call(e,r)}var kb="__lodash_hash_undefined__";function Ab(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=ft&&e===void 0?kb:e,this}function $e(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}$e.prototype.clear=db,$e.prototype.delete=fb,$e.prototype.get=gb,$e.prototype.has=bb,$e.prototype.set=Ab;function wb(){this.__data__=[],this.size=0}function Qt(r,e){for(var t=r.length;t--;)if(qo(r[t][0],e))return t;return-1}var $b=Array.prototype,Cb=$b.splice;function _b(r){var e=this.__data__,t=Qt(e,r);if(t<0)return!1;var s=e.length-1;return t==s?e.pop():Cb.call(e,t,1),--this.size,!0}function Db(r){var e=this.__data__,t=Qt(e,r);return t<0?void 0:e[t][1]}function xb(r){return Qt(this.__data__,r)>-1}function Pb(r,e){var t=this.__data__,s=Qt(t,r);return s<0?(++this.size,t.push([r,e])):t[s][1]=e,this}function ie(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}ie.prototype.clear=wb,ie.prototype.delete=_b,ie.prototype.get=Db,ie.prototype.has=xb,ie.prototype.set=Pb;var ht=we(X,"Map");function jb(){this.size=0,this.__data__={hash:new $e,map:new(ht||ie),string:new $e}}function Rb(r){var e=typeof r;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?r!=="__proto__":r===null}function Bt(r,e){var t=r.__data__;return Rb(e)?t[typeof e=="string"?"string":"hash"]:t.map}function Eb(r){var e=Bt(this,r).delete(r);return this.size-=e?1:0,e}function Mb(r){return Bt(this,r).get(r)}function Ib(r){return Bt(this,r).has(r)}function Sb(r,e){var t=Bt(this,r),s=t.size;return t.set(r,e),this.size+=t.size==s?0:1,this}function Ce(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var s=r[e];this.set(s[0],s[1])}}Ce.prototype.clear=jb,Ce.prototype.delete=Eb,Ce.prototype.get=Mb,Ce.prototype.has=Ib,Ce.prototype.set=Sb;function Tb(r,e){for(var t=-1,s=e.length,n=r.length;++t<s;)r[n+t]=e[t];return r}var Ob=Xo(Object.getPrototypeOf,Object);function Kb(){this.__data__=new ie,this.size=0}function Fb(r){var e=this.__data__,t=e.delete(r);return this.size=e.size,t}function qb(r){return this.__data__.get(r)}function Qb(r){return this.__data__.has(r)}var Bb=200;function Vb(r,e){var t=this.__data__;if(t instanceof ie){var s=t.__data__;if(!ht||s.length<Bb-1)return s.push([r,e]),this.size=++t.size,this;t=this.__data__=new Ce(s)}return t.set(r,e),this.size=t.size,this}function Be(r){var e=this.__data__=new ie(r);this.size=e.size}Be.prototype.clear=Kb,Be.prototype.delete=Fb,Be.prototype.get=qb,Be.prototype.has=Qb,Be.prototype.set=Vb;var Yo=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ei=Yo&&typeof module=="object"&&module&&!module.nodeType&&module,Gb=ei&&ei.exports===Yo,ti=Gb?X.Buffer:void 0;ti&&ti.allocUnsafe;function Ub(r,e){return r.slice()}function Nb(r,e){for(var t=-1,s=r==null?0:r.length,n=0,o=[];++t<s;){var i=r[t];e(i,t,r)&&(o[n++]=i)}return o}function zb(){return[]}var Lb=Object.prototype,Wb=Lb.propertyIsEnumerable,ri=Object.getOwnPropertySymbols,Hb=ri?function(r){return r==null?[]:(r=Object(r),Nb(ri(r),function(e){return Wb.call(r,e)}))}:zb;function Jb(r,e,t){var s=e(r);return Vr(r)?s:Tb(s,t(r))}function Zb(r){return Jb(r,ub,Hb)}var Lr=we(X,"DataView"),Wr=we(X,"Promise"),Hr=we(X,"Set"),si="[object Map]",Xb="[object Object]",ni="[object Promise]",oi="[object Set]",ii="[object WeakMap]",ai="[object DataView]",Yb=Ae(Lr),ek=Ae(ht),tk=Ae(Wr),rk=Ae(Hr),sk=Ae(Ur),ae=ut;(Lr&&ae(new Lr(new ArrayBuffer(1)))!=ai||ht&&ae(new ht)!=si||Wr&&ae(Wr.resolve())!=ni||Hr&&ae(new Hr)!=oi||Ur&&ae(new Ur)!=ii)&&(ae=function(r){var e=ut(r),t=e==Xb?r.constructor:void 0,s=t?Ae(t):"";if(s)switch(s){case Yb:return ai;case ek:return si;case tk:return ni;case rk:return oi;case sk:return ii}return e});var nk=Object.prototype,ok=nk.hasOwnProperty;function ik(r){var e=r.length,t=new r.constructor(e);return e&&typeof r[0]=="string"&&ok.call(r,"index")&&(t.index=r.index,t.input=r.input),t}var li=X.Uint8Array;function Jr(r){var e=new r.constructor(r.byteLength);return new li(e).set(new li(r)),e}function ak(r,e){var t=Jr(r.buffer);return new r.constructor(t,r.byteOffset,r.byteLength)}var lk=/\w*$/;function ck(r){var e=new r.constructor(r.source,lk.exec(r));return e.lastIndex=r.lastIndex,e}var ci=Fe?Fe.prototype:void 0,ui=ci?ci.valueOf:void 0;function uk(r){return ui?Object(ui.call(r)):{}}function dk(r,e){var t=Jr(r.buffer);return new r.constructor(t,r.byteOffset,r.length)}var fk="[object Boolean]",hk="[object Date]",pk="[object Map]",yk="[object Number]",gk="[object RegExp]",mk="[object Set]",vk="[object String]",bk="[object Symbol]",kk="[object ArrayBuffer]",Ak="[object DataView]",wk="[object Float32Array]",$k="[object Float64Array]",Ck="[object Int8Array]",_k="[object Int16Array]",Dk="[object Int32Array]",xk="[object Uint8Array]",Pk="[object Uint8ClampedArray]",jk="[object Uint16Array]",Rk="[object Uint32Array]";function Ek(r,e,t){var s=r.constructor;switch(e){case kk:return Jr(r);case fk:case hk:return new s(+r);case Ak:return ak(r);case wk:case $k:case Ck:case _k:case Dk:case xk:case Pk:case jk:case Rk:return dk(r);case pk:return new s;case yk:case vk:return new s(r);case gk:return ck(r);case mk:return new s;case bk:return uk(r)}}function Mk(r){return typeof r.constructor=="function"&&!Go(r)?Jm(Ob(r)):{}}var Ik="[object Map]";function Sk(r){return qe(r)&&ae(r)==Ik}var di=Qe&&Qe.isMap,Tk=di?Nr(di):Sk,Ok="[object Set]";function Kk(r){return qe(r)&&ae(r)==Ok}var fi=Qe&&Qe.isSet,Fk=fi?Nr(fi):Kk,hi="[object Arguments]",qk="[object Array]",Qk="[object Boolean]",Bk="[object Date]",Vk="[object Error]",pi="[object Function]",Gk="[object GeneratorFunction]",Uk="[object Map]",Nk="[object Number]",yi="[object Object]",zk="[object RegExp]",Lk="[object Set]",Wk="[object String]",Hk="[object Symbol]",Jk="[object WeakMap]",Zk="[object ArrayBuffer]",Xk="[object DataView]",Yk="[object Float32Array]",eA="[object Float64Array]",tA="[object Int8Array]",rA="[object Int16Array]",sA="[object Int32Array]",nA="[object Uint8Array]",oA="[object Uint8ClampedArray]",iA="[object Uint16Array]",aA="[object Uint32Array]",w={};w[hi]=w[qk]=w[Zk]=w[Xk]=w[Qk]=w[Bk]=w[Yk]=w[eA]=w[tA]=w[rA]=w[sA]=w[Uk]=w[Nk]=w[yi]=w[zk]=w[Lk]=w[Wk]=w[Hk]=w[nA]=w[oA]=w[iA]=w[aA]=!0,w[Vk]=w[pi]=w[Jk]=!1;function Vt(r,e,t,s,n,o){var i;if(i!==void 0)return i;if(!Ft(r))return r;var a=Vr(r);if(a)i=ik(r);else{var l=ae(r),c=l==pi||l==Gk;if(Ho(r))return Ub(r);if(l==yi||l==hi||c&&!n)i=c?{}:Mk(r);else{if(!w[l])return n?r:{};i=Ek(r,l)}}o||(o=new Be);var u=o.get(r);if(u)return u;o.set(r,i),Fk(r)?r.forEach(function(h){i.add(Vt(h,e,t,h,r,o))}):Tk(r)&&r.forEach(function(h,p){i.set(p,Vt(h,e,t,p,r,o))});var d=Zb,f=a?void 0:d(r);return ov(f||r,function(h,p){f&&(p=h,h=r[p]),mv(i,p,Vt(h,e,t,p,r,o))}),i}var lA=1,cA=4;function pt(r){return Vt(r,lA|cA)}var uA="__lodash_hash_undefined__";function dA(r){return this.__data__.set(r,uA),this}function fA(r){return this.__data__.has(r)}function Gt(r){var e=-1,t=r==null?0:r.length;for(this.__data__=new Ce;++e<t;)this.add(r[e])}Gt.prototype.add=Gt.prototype.push=dA,Gt.prototype.has=fA;function gi(r,e){return r.has(e)}function hA(r){return qe(r)&&Vo(r)}var pA=Math.min;function yA(r,e,t){for(var s=uv,n=r[0].length,o=r.length,i=o,a=Array(o),l=1/0,c=[];i--;){var u=r[i];l=pA(u.length,l),a[i]=n>=120&&u.length>=120?new Gt(i&&u):void 0}u=r[0];var d=-1,f=a[0];e:for(;++d<n&&c.length<l;){var h=u[d],p=h;if(h=h!==0?h:0,!(f?gi(f,p):s(c,p))){for(i=o;--i;){var y=a[i];if(!(y?gi(y,p):s(r[i],p)))continue e}f&&f.push(p),c.push(h)}}return c}function gA(r){return hA(r)?r:[]}var mi=bv(function(r){var e=Im(r,gA);return e.length&&e[0]===r[0]?yA(e):[]});class vi{context="";total=0;totalItems=[];processedItems=new Set;downloadedItems=new Set;failedItems=new Set;remainingItems=new Set;processed=0;remaining=0;progress=0;currentItem;constructor(){}init(e){return this.total=e.length,this.totalItems=[...e],this.remaining=e.length,this.remainingItems=new Set(e),this.getProgress()}update(e,t,s,n){const o=pt(e);return o.success=t,n&&(o.status=n),t?this.downloadedItems.add(o):this.failedItems.add(o),this.currentItem=o,this.context=s,this.processed++,this.remaining--,this.progress=Math.round(this.processed*100/this.total),this.currentItem=o,this.processedItems.add(o),this.remainingItems.delete(e),this.getProgress()}getProgress(){return{total:this.total,processed:this.processed,remaining:this.remaining,downloadedItems:Array.from(this.downloadedItems.values()),failedItems:Array.from(this.failedItems.values()),progress:this.progress,context:this.context,currentItem:this.currentItem,totalItems:this.totalItems,processedItems:Array.from(this.processedItems.values()),remainingItems:Array.from(this.remainingItems.values())}}}var mA=Object.defineProperty,vA=Object.getOwnPropertyDescriptor,bi=(r,e,t,s)=>{for(var n=vA(e,t),o=r.length-1,i;o>=0;o--)(i=r[o])&&(n=i(e,t,n)||n);return n&&mA(e,t,n),n};const bA={missingModelHandling:{autoGenerateProperties:!0},defaultDataContainerUpdateType:"set",csvParserOptions:{delimiter:"",quoteChar:'"',escapeChar:'"',commentChar:void 0}};let Zr=class{key;core;cdRef=new Am;log=Qr.child({prefix:"AppLoader"});registeredTransformers=[];options=bA;csvParser=new $m(this);currentConfig;globalVariables=new Map;defaultVariables=new Map;progressListeners=new Set;currentProcessOptions;currentContext="";progressHandler=new vi;constructor(){this.initDefaultVariables()}destroy(){this.core=null,this.cdRef=null,this.csvParser=null,this.progressListeners=null,this.progressHandler=null}initDefaultVariables(){this.defaultVariables.set("projectId",{key:"projectId",value:void 0,description:"Your dcupl console project id"}),this.defaultVariables.set("apiKey",{key:"apiKey",value:void 0,description:"Your dcupl console project API key"}),this.defaultVariables.set("version",{key:"version",value:"draft",description:"The version of uploaded files to the dcupl CDN - draft/published/..."}),this.defaultVariables.set("cdnBaseUrl",{key:"cdnBaseUrl",value:"https://cdn.dcupl.com/files/projects",description:"The url to your dcupl folder - might be the dcupl CDN or any other "}),this.defaultVariables.set("baseUrl",{key:"baseUrl",value:"${cdnBaseUrl}/${projectId}/${version}",description:"The base url to your hosted models and data files"}),this.defaultVariables.set("modelUrl",{key:"modelUrl",value:"${baseUrl}/models",description:"The url to the your model files"}),this.defaultVariables.set("dataUrl",{key:"dataUrl",value:"${baseUrl}/data",description:"The url to the your data files"}),this.defaultVariables.set("transformerUrl",{key:"transformerUrl",value:"${baseUrl}/transformers",description:"The url to the your data files"}),this.defaultVariables.set("loaderFileName",{key:"loaderFileName",value:"dcupl.lc.json",description:"The file name of the loader json"}),this.defaultVariables.set("cdnVersion",{key:"cdnVersion",value:void 0,description:"The file-version of the CDN data"}),this.defaultVariables.set("consoleApiUrl",{key:"consoleApiUrl",value:"https://api.dcupl.com",description:"The dcupl console API Url"})}resources={get:r=>this.currentConfig?.resources.find(e=>e.key===r),getAll:()=>this.currentConfig?.resources||[],getWithTag:r=>this.currentConfig?.resources.filter(e=>e.tags?.includes(r))||[],set:r=>{this.currentConfig.resources=r},add:r=>{this.currentConfig.resources.push(r)},delete:r=>{const e=this.currentConfig.resources.findIndex(t=>t.key===r);e>-1&&this.currentConfig.resources.splice(e,1)}};variables={get:(r,e)=>{const t=this.currentConfig?.environments?.filter(s=>s.key===e);return this.evaluateVariables(t,this.currentProcessOptions).find(s=>s.key===r)},getAll:r=>{const e=this.currentConfig?.environments?.filter(t=>t.key===r);return this.evaluateVariables(e,this.currentProcessOptions)},getAllAsObject:r=>{const e=this.currentConfig?.environments?.filter(t=>t.key===r);return this.getEvaluatedVariablesAsRecord(e,this.currentProcessOptions)},default:{get:r=>this.defaultVariables.get(r),getAll:()=>Array.from(this.defaultVariables.values())},environment:{get:(r,e)=>{if(!r)return;const t=this.currentConfig?.environments?.find(s=>s.key===r);if(t)return t.variables?.find(s=>s.key===e)},getAll:r=>this.currentConfig?.environments?.find(e=>e.key===r)?.variables||[]},process:{get:r=>this.currentProcessOptions?.variables?.find(e=>e.key===r),getAll:()=>this.currentProcessOptions?.variables||[]},global:{get:r=>this.globalVariables.get(r),getAll:()=>Array.from(this.globalVariables.values()),set:(r,e)=>{this.globalVariables.set(r,{key:r,value:e})},delete:r=>{this.globalVariables.delete(r)}}};transformers={get:r=>this.registeredTransformers.filter(e=>mi(e.applyTo,r.appyTo).length>0),getAll:()=>this.registeredTransformers,set:r=>{this.transformers.remove(r.key),this.registeredTransformers.push(r)},remove:r=>{const e=this.registeredTransformers.findIndex(t=>t.key===r);e>-1&&this.registeredTransformers.splice(e,1)}};config={get:()=>pt(this.currentConfig),set:r=>{this.currentConfig=pt(r)},fetch:async r=>this.fetchConfig(r)};async fetchConfig(r){if(!this.core)throw this.log.error("dcupl not connected. Did you add your loader to dcupl? -> dcupl.addRunner(loader)"),new Error;let e;r?.baseUrl&&this.defaultVariables.set("baseUrl",{key:"baseUrl",value:String(r.baseUrl)}),r?.loaderFileName&&this.defaultVariables.set("loaderFileName",{key:"loaderFileName",value:String(r.loaderFileName)});const t=this.variables.get("baseUrl")?.value;if(t&&this.isDcuplCdn(t))await this.setCdnVersion(),e=await this.loadConfigFromApi();else{const s=this.variables.get("loaderFileName")?.value,n=`${t}/${s}`;e=await this.loadConfigFromUrl(n,r?.headers)}if(this.isValidConfig(e))return r?.skipApply||this.config.set(e),e;throw new Error("Invalid Loader Configuration")}isValidConfig(r){return!!r}async loadConfigFromUrl(r,e){try{const t={};e&&(t.headers=e.reduce((n,o)=>(n[o.key]=o.value,n),{}));const s=await fetch(r,t);if(!s.ok)throw new Error(`Failed to fetch loader configuration from ${r}`);return s.json()}catch(t){this.log.error("Could not fetch loader configuration",t,{url:r});return}}async loadConfigFromApi(){const r=this.variables.get("baseUrl")?.value,e=this.variables.get("loaderFileName")?.value,t=this.variables.get("cdnVersion")?.value,s=this.variables.get("apiKey")?.value;try{let n=`${r}/${e}`;this.isDcuplCdn(n)&&(t&&(n=this.appendSearchParamToUrl(n,"v",String(t))),s&&(n=this.appendSearchParamToUrl(n,"api-key",s)));const o=await fetch(n);if(!o.ok)throw new Error(`Failed to fetch loader configuration from ${n}`);return o.json()}catch(n){this.log.error("Could not fetch loader configuration. Are you sure your projectId + apiKey are correct?",n,{baseUrl:r,loaderFileName:e});return}}appendSearchParamToUrl(r,e,t){const s=r.includes("?")?"&":"?";return`${r}${s}${e}=${t}`}async setCdnVersion(){let r;try{const e=this.variables.get("consoleApiUrl")?.value,t=this.variables.get("projectId")?.value,s=this.variables.get("version")?.value;r=`${e}/projects/${t}/files/versions/${s}/status`;const n=await(await fetch(r)).json();n&&n.changedAt&&this.defaultVariables.set("cdnVersion",{key:"cdnVersion",value:String(n.changedAt)})}catch(e){this.log.error("Could not fetch version status",e,{url:r})}}async process(r){if(!this.config)throw new Error("There is no config present. Make sure to call loader.setConfig(..) or loader.fetchConfig(...)");this.currentContext=Br();const e=pt(r),t=pt(this.currentConfig);if(e?.applicationKey){const u=this.getAppPreset(t,e);if(!u)throw new Error(`The applicationKey ${e.applicationKey} does not exist`);e.resourceTags=e.resourceTags||u?.resourceTags,e.variables=e.variables||u?.variables}const s=this.getEnvironments(t,e),n=this.getEvaluatedVariablesAsRecord(s,e),o=this.getHeaderConfigs(s),i=this.getQueryParamConfigs(s),a=this.getResourcesForConfigOptions(t,n,e),l=this.getLoaderOptions(t,e),c=await this.fetchResources(a,n,l,o,i);return this.currentProcessOptions=e,c}getHeaderConfigs(r){if(!r)return[];const e=[];return r.forEach(t=>{t.headers&&e.push(...t.headers)}),e}getQueryParamConfigs(r){if(!r)return[];const e=[];return r.forEach(t=>{t.queryParams&&e.push(...t.queryParams)}),e}getLoaderOptions(r,e){return e?.options?Object.assign({},this.options,e.options):r?.options?Object.assign({},this.options,r.options):Object.assign({},this.options)}getResourcesForConfigOptions(r,e,t){const s=[];if(!r.resources)return[];if(!Array.isArray(t?.resourceTags)||!t?.resourceTags.length)s.push(...r.resources);else for(const n of r.resources)!Array.isArray(n.tags)||!n.tags.length||this.isValidResourceForTags(n.tags,t.resourceTags)&&s.push(n);return s.map(n=>{if(e){const o=Kt(n.url,{...e});return n.url=o,n}else return n})}isValidResourceForTags(r,e){for(const t of e)if(Array.isArray(t)){if(t.every(s=>r.includes(s)))return!0}else if(r.includes(t))return!0;return!1}evaluateVariables(r,e){const t=new Map;this.defaultVariables&&this.defaultVariables.forEach(o=>{t.set(o.key,o)}),r?.forEach(o=>{o?.variables&&o.variables.forEach(i=>{t.set(i.key,i)})}),e?.variables&&e.variables.forEach(o=>{t.set(o.key,o)}),this.globalVariables&&this.globalVariables.forEach(o=>{t.set(o.key,o)});const s=Array.from(t.values()),n={};for(const o of s)n[o.key]=o.value||"";for(const o of s)o.value=Kt(o.value,n);return s}getEvaluatedVariablesAsRecord(r,e){const t=this.evaluateVariables(r,e),s={};for(const n of t)s[n.key]=n.value||"";return s}getEnvironments(r,e){if(!(!r.environments||!r.environments[0])&&e&&e.environmentKeys&&e.environmentKeys.length>0)return r.environments.filter(t=>e.environmentKeys.indexOf(t.key)>-1)}getAppPreset(r,e){if(!(!r.applications||!r.applications[0])&&e?.applicationKey)return r.applications?.find(t=>t.key===e.applicationKey)}getHeaderForUrl(r,e,t){if(!t||!t.length||!r.tags?.length)return;const s=[];t?.forEach(o=>{if(!o.tags?.length){this.isValidCondition(o,e)&&s.push(o);return}o.tags.find(i=>r.tags?.includes(i))&&this.isValidCondition(o,e)&&s.push(o)});const n={};if(s.forEach(o=>{const i=Kt(o.value,{...e});n[o.key]=i}),Object.keys(n).length!==0)return n}getQueryParamsForUrl(r,e,t){const s=[];if(t?.forEach(n=>{if(!n.tags?.length){this.isValidCondition(n,e)&&s.push(n);return}n.tags.find(o=>r.tags?.includes(o))&&this.isValidCondition(n,e)&&s.push(n)}),this.isDcuplCdn(r.url)){const n=e.cdnVersion;n&&s.push({key:"v",value:n}),e.apiKey&&s?.push({key:"api-key",value:e.apiKey})}return s.map(n=>(n.value=Kt(n.value,{...e}),n))}isDcuplCdn(r){return r.includes("cdn.dcupl.com")}isValidCondition(r,e){return r.condition?.applyIfVariableHasValue?typeof e[r.condition?.applyIfVariableHasValue]<"u"&&e[r.condition?.applyIfVariableHasValue]!=="":!0}async handleScriptResources(r,e,t,s){return await Promise.all(r.map(async n=>{try{const o=n.scriptKey;if(this.core.scriptController.hasScript(o)){const l=this.progressHandler.update(n,!0,"script");return this.updateProgressListeners(l),null}const i=await this.fetchScript(n,e,t,s);this.core.scriptController.setScript(o,i);const a=this.progressHandler.update(n,!0,"script");this.updateProgressListeners(a);return}catch(o){this.log.error("Failed to load script resource",o,{url:n.url,scriptKey:n.scriptKey});const i={title:n.url,type:"loader",errorGroup:"ResourceError",errorType:"InvalidResource",meta:n,description:o?.message};this.setError(i);const a=this.progressHandler.update(n,!1,"script");this.updateProgressListeners(a);return}})),!0}async handleOperatorResources(r,e,t,s){return await Promise.all(r.map(async n=>{try{const o=n.operator;if(this.core.queryManager.registeredCustomOperator.has(o)){const l=this.progressHandler.update(n,!0,"operator");return this.updateProgressListeners(l),null}const i=await this.fetchJavascriptFile(n,e,t,s);this.core.query.registerCustomOperator(o,i);const a=this.progressHandler.update(n,!0,"operator");this.updateProgressListeners(a);return}catch(o){this.log.error("Failed to load operator resource",o,{url:n.url,operator:n.operator});const i={title:n.url,type:"loader",errorGroup:"ResourceError",errorType:"InvalidResource",meta:n,description:o?.message};this.setError(i);const a=this.progressHandler.update(n,!1,"operator");this.updateProgressListeners(a);return}})),!0}async handleTransformerResources(r,e,t,s){const n=[];return await Promise.all(r.map(async o=>{try{const i=this.registeredTransformers.find(u=>u.key===o.url);if(i){n.push(i);const u=this.progressHandler.update(o,!0,"transformer");this.updateProgressListeners(u);return}const a=await this.fetchJavascriptFile(o,e,t,s),l={key:o.url,applyTo:o.applyTo||[],type:o.transformerType||"parsedFileTransformer",transformer:a};this.registeredTransformers.push(l),n.push(l);const c=this.progressHandler.update(o,!0,"transformer");this.updateProgressListeners(c)}catch(i){this.log.error("Failed to load transformer resource",i,{url:o.url,transformerType:o.transformerType});const a={title:o.url,type:"loader",errorGroup:"ResourceError",errorType:"InvalidResource",meta:o,description:i?.message};this.setError(a);const l=this.progressHandler.update(o,!1,"transformer");this.updateProgressListeners(l)}})),n}getRequestOptions(r,e,t,s){const n=this.getHeaderForUrl(r,e,t),o=this.getQueryParamsForUrl(r,e,s);return{url:this.appendQueryParamsToUrl(r.url,o),headers:n}}async fetchScript(r,e,t,s){const{url:n,headers:o}=this.getRequestOptions(r,e,t,s),i=await fetch(n,{headers:o});if(!i.ok)throw new Error(`Failed to fetch data from ${n}`);return await i.text()}async fetchJavascriptFile(r,e,t,s){const{url:n,headers:o}=this.getRequestOptions(r,e,t,s),i=await fetch(n,{headers:o});if(!i.ok)throw new Error(`Failed to fetch data from ${n}`);const a=await i.text();return new Function(a)()}async handleModelResources(r,e,t,s){const n=r.map(async o=>{const i=new Date().getTime();let a;try{const{url:l,headers:c}=this.getRequestOptions(o,e,t,s),u=await fetch(l,{headers:c});if(a=u.status,!u.ok)throw new Error(`Failed to fetch data from ${l}`);const d=K.now(),f=await u.json(),h=K.now();let p="";Array.isArray(f)?p=f.map(g=>g?.key).join("__"):p=f.key;const y=K.getEntriesByName(l.toString());if(Array.isArray(y)&&y[0]){const g=y[0],b={name:o.url,type:"resource",createdAt:new Date().getTime(),value:{model:p,type:"model",start:i,startTime:g.startTime,requestStart:g.requestStart,responseEnd:g.responseEnd,responseStart:g.responseStart,duration:g.duration,parseEnd:h,parseStart:d,decodedBodySize:g.decodedBodySize,encodedBodySize:g.encodedBodySize,end:h}};this.core.analyticsController.set({value:b,context:this.currentContext})}Array.isArray(f)?f.map(g=>this.addModelOrView(o,g)):this.addModelOrView(o,f);const m=this.progressHandler.update(o,!0,"model");return this.updateProgressListeners(m),Promise.resolve(f)}catch(l){this.log.error("Failed to load model resource",l,{url:o.url});const c={title:o.url,type:"loader",errorGroup:"ResourceError",errorType:"InvalidResource",meta:o,description:l?.message};this.setError(c);const u=this.progressHandler.update(o,!1,"model",a);return this.updateProgressListeners(u),Promise.resolve(null)}});return await Promise.all(n),!0}appendQueryParamsToUrl(r,e){const t=r.includes("?");let s=r;return e&&e.forEach((n,o)=>{s+=`${o===0&&!t?"?":"&"}${encodeURIComponent(n.key)}=${encodeURIComponent(n.value)}`}),s}async handleDataResources(r,e,t,s,n,o){const i=r.map(async a=>{const l=Br(),c={placeholderUid:l,data:[],model:a.model};this.core.registerContainer(c);const u=new Date().getTime();let d;try{const{url:f,headers:h}=this.getRequestOptions(a,e,s,n),p=await fetch(f,{headers:h});if(d=p.status,!p.ok)throw new Error(`Failed to fetch data from ${f}`);const y=p.headers.get("content-type"),m=K.now();let g;a.url.endsWith(".csv")||y?.includes("text/csv")?g=await p.text():g=await p.json();const b=K.now(),x=K.now(),B=this.handleTransformerLogic(g,a,"rawFileTransformer",o||[]),U=K.now();let gt=[],Ut=this.core.modelParser.unprocessedModelDescriptions.get(a.model);if(!Ut&&(t?.missingModelHandling?.autoGenerateProperties||a.options?.autoGenerateProperties)){const W=a.options?.autoGenerateProperties??t?.missingModelHandling?.autoGenerateProperties??!0;this.addModelOrView(a,{key:a.model,autoGenerateProperties:W,autoGenerateKey:a.options?.autoGenerateKey||!1,keyProperty:a?.options?.keyProperty||"key"}),Ut=this.core.modelParser.unprocessedModelDescriptions.get(a.model)}const wA=K.now();a.url.endsWith(".csv")||y?.includes("text/csv")?Ut&&(gt=this.csvParser.getJsonFromCSVString(B,Ut,a)):gt=B;const $A=K.now(),CA=K.now();try{gt=this.handleTransformerLogic(gt,a,"parsedFileTransformer",o||[])}catch(W){this.log.error("Transformer error",W,{resource:a.url,model:a.model})}const _A=K.now(),ki={placeholderUid:l,model:a.model,data:gt,type:a.options?.updateType||t.defaultDataContainerUpdateType,keyProperty:a?.options?.keyProperty,autoGenerateKey:a.options?.autoGenerateKey,autoGenerateProperties:a.options?.autoGenerateProperties},Xr=K.getEntriesByName(f.toString());if(Array.isArray(Xr)&&Xr[0]){const W=Xr[0],xA={name:a.url,type:"resource",createdAt:new Date().getTime(),value:{model:a.model,type:"data",start:u,startTime:W.startTime,requestStart:W.requestStart,responseEnd:W.responseEnd,responseStart:W.responseStart,duration:W.duration,parseEnd:b,rawTransformStart:x,rawTransformEnd:U,parseStart:m,csvToJsonStart:wA,csvToJsonEnd:$A,parsedTransformStart:CA,parsedTransformEnd:_A,decodedBodySize:W.decodedBodySize,encodedBodySize:W.encodedBodySize,end:b}};this.core.analyticsController.set({value:xA,context:this.currentContext})}this.core.updateRegisteredContainer(ki);const DA=this.progressHandler.update(a,!0,"data",d);return this.updateProgressListeners(DA),Promise.resolve(ki)}catch(f){this.log.error("Failed to load data resource",f,{url:a.url,model:a.model});const h={title:a.url,type:"loader",errorGroup:"ResourceError",errorType:"InvalidResource",meta:a,model:a.model,description:f?.message};this.setError(h),this.core.removeRegisteredContainer(c);const p=this.progressHandler.update(a,!1,"data",d);return this.updateProgressListeners(p),Promise.resolve()}});return await Promise.all(i),!0}async fetchResources(r,e,t,s,n){this.progressHandler=new vi,this.progressHandler.init(r),this.updateProgressListeners(this.progressHandler.getProgress());try{if(!this.core)throw this.log.error("dcupl not connected. Did you add your loader to dcupl? -> dcupl.addRunner(loader)"),new Error;const o=r.filter(d=>d.type==="script");await this.handleScriptResources(o,e,s,n);const i=r.filter(d=>d.type==="operator");await this.handleOperatorResources(i,e,s,n);const a=r.filter(d=>d.type==="transformer"),l=await this.handleTransformerResources(a,e,s,n),c=r.filter(d=>d.type==="model");await this.handleModelResources(c,e,s,n);const u=r.filter(d=>d.type==="data");return await this.handleDataResources(u,e,t,s,n,l),!0}catch(o){return this.log.error("Failed to fetch resources",o),!1}}addModelOrView(r,e){try{"model"in e?this.core.views.set(e):this.core.models.set(e)}catch(t){const s={title:r.url,type:"model",errorGroup:"ModelDefinitionError",errorType:"InvalidModelDefinition",model:e.key,meta:r,description:t?.message};this.setError(s)}}handleTransformerLogic(r,e,t,s){for(const n of s)n.type===t&&n.transformer&&(!n.applyTo.length&&!e.tags?.length&&(r=n.transformer(e,r)),mi(n.applyTo,e.tags||[]).length&&(r=n.transformer(e,r)));return r}updateProgressListeners(r){this.progressListeners.forEach(e=>e(r))}on(r){return this.progressListeners.add(r),()=>{this.progressListeners.delete(r)}}setError(r){this.core.modelParser.qualityController.enabled&&this.core.modelParser.qualityController.setError(r)}};bi([Ro({scope:"global",origin:"loader",type:"loader_config_fetched",connectMessage:!0,connectMessageResult:!0})],Zr.prototype,"fetchConfig"),bi([Ro({scope:"global",origin:"loader",type:"loader_processed",connectMessage:!0})],Zr.prototype,"process");const kA=Zr;let yt,Ve;async function AA(r){return yt=new Mh(r.options),Ve=new kA,yt.loaders.add(Ve,"default"),r.appLoaderConfig?await Ve.config.fetch(r.appLoaderConfig):await Ve.config.fetch(),await Ve.process(r.processOptions),await yt.init(),globalThis.dcupl=yt,{dcupl:yt,loader:Ve}}globalThis.initDcupl=AA})();
|
|
16
16
|
//# sourceMappingURL=dcupl.bundle.min.js.map
|