@inixiative/json-rules 3.3.0 → 3.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/package.json +11 -6
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import Be from'dayjs';import qw from'dayjs/plugin/isoWeek.js';import Ww from'dayjs/plugin/quarterOfYear.js';import Uw from'dayjs/plugin/timezone.js';import Gw from'dayjs/plugin/utc.js';import Yw from'dayjs/plugin/isSameOrAfter.js';import Xw from'dayjs/plugin/isSameOrBefore.js';import {distance}from'fastest-levenshtein';import {RE2JS}from're2js';import {createRequire}from'module';var Li=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var yu=typeof global=="object"&&global&&global.Object===Object&&global,Jo=yu;var hu=typeof self=="object"&&self&&self.Object===Object&&self,wu=Jo||hu||Function("return this")(),W=wu;var Su=W.Symbol,re=Su;var Gs=Object.prototype,bu=Gs.hasOwnProperty,xu=Gs.toString,So=re?re.toStringTag:void 0;function Ru(e){var t=bu.call(e,So),r=e[So];try{e[So]=void 0;var o=!0;}catch{}var n=xu.call(e);return o&&(t?e[So]=r:delete e[So]),n}var Ks=Ru;var Ou=Object.prototype,Eu=Ou.toString;function vu(e){return Eu.call(e)}var zs=vu;var Au="[object Null]",$u="[object Undefined]",Hs=re?re.toStringTag:void 0;function Pu(e){return e==null?e===void 0?$u:Au:Hs&&Hs in Object(e)?Ks(e):zs(e)}var pe=Pu;function Tu(e){return e!=null&&typeof e=="object"}var K=Tu;var Nu="[object Symbol]";function Cu(e){return typeof e=="symbol"||K(e)&&pe(e)==Nu}var hr=Cu;function Mu(e,t){for(var r=-1,o=e==null?0:e.length,n=Array(o);++r<o;)n[r]=t(e[r],r,e);return n}var Js=Mu;var _u=Array.isArray,F=_u;var Qs=re?re.prototype:void 0,Zs=Qs?Qs.toString:void 0;function Ys(e){if(typeof e=="string")return e;if(F(e))return Js(e,Ys)+"";if(hr(e))return Zs?Zs.call(e):"";var t=e+"";return t=="0"&&1/e==-Infinity?"-0":t}var Xs=Ys;function ku(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var j=ku;function Du(e){return e}var wr=Du;var Fu="[object AsyncFunction]",ju="[object Function]",Iu="[object GeneratorFunction]",Bu="[object Proxy]";function Vu(e){if(!j(e))return false;var t=pe(e);return t==ju||t==Iu||t==Fu||t==Bu}var Sr=Vu;var qu=W["__core-js_shared__"],Qo=qu;var ea=(function(){var e=/[^.]+$/.exec(Qo&&Qo.keys&&Qo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})();function Wu(e){return !!ea&&ea in e}var ta=Wu;var Uu=Function.prototype,Gu=Uu.toString;function Ku(e){if(e!=null){try{return Gu.call(e)}catch{}try{return e+""}catch{}}return ""}var Ze=Ku;var zu=/[\\^$.*+?()[\]{}|]/g,Hu=/^\[object .+?Constructor\]$/,Ju=Function.prototype,Qu=Object.prototype,Zu=Ju.toString,Yu=Qu.hasOwnProperty,Xu=RegExp("^"+Zu.call(Yu).replace(zu,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ec(e){if(!j(e)||ta(e))return false;var t=Sr(e)?Xu:Hu;return t.test(Ze(e))}var ra=ec;function tc(e,t){return e?.[t]}var oa=tc;function rc(e,t){var r=oa(e,t);return ra(r)?r:void 0}var ie=rc;var oc=ie(W,"WeakMap"),Zo=oc;var na=Object.create,nc=(function(){function e(){}return function(t){if(!j(t))return {};if(na)return na(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}})(),ia=nc;function ic(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}var sa=ic;function sc(e,t){var r=-1,o=e.length;for(t||(t=Array(o));++r<o;)t[r]=e[r];return t}var Yo=sc;var ac=800,lc=16,pc=Date.now;function fc(e){var t=0,r=0;return function(){var o=pc(),n=lc-(o-r);if(r=o,n>0){if(++t>=ac)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var aa=fc;function dc(e){return function(){return e}}var la=dc;var uc=(function(){try{var e=ie(Object,"defineProperty");return e({},"",{}),e}catch{}})(),br=uc;var cc=br?function(e,t){return br(e,"toString",{configurable:true,enumerable:false,value:la(t),writable:true})}:wr,pa=cc;var mc=aa(pa),fa=mc;function gc(e,t){for(var r=-1,o=e==null?0:e.length;++r<o&&t(e[r],r,e)!==false;);return e}var da=gc;var yc=9007199254740991,hc=/^(?:0|[1-9]\d*)$/;function wc(e,t){var r=typeof e;return t=t??yc,!!t&&(r=="number"||r!="symbol"&&hc.test(e))&&e>-1&&e%1==0&&e<t}var St=wc;function Sc(e,t,r){t=="__proto__"&&br?br(e,t,{configurable:true,enumerable:true,value:r,writable:true}):e[t]=r;}var xr=Sc;function bc(e,t){return e===t||e!==e&&t!==t}var Te=bc;var xc=Object.prototype,Rc=xc.hasOwnProperty;function Oc(e,t,r){var o=e[t];(!(Rc.call(e,t)&&Te(o,r))||r===void 0&&!(t in e))&&xr(e,t,r);}var Rr=Oc;function Ec(e,t,r,o){var n=!r;r||(r={});for(var i=-1,s=t.length;++i<s;){var a=t[i],p=o?o(r[a],e[a],a,r,e):void 0;p===void 0&&(p=e[a]),n?xr(r,a,p):Rr(r,a,p);}return r}var Ne=Ec;var ua=Math.max;function vc(e,t,r){return t=ua(t===void 0?e.length-1:t,0),function(){for(var o=arguments,n=-1,i=ua(o.length-t,0),s=Array(i);++n<i;)s[n]=o[t+n];n=-1;for(var a=Array(t+1);++n<t;)a[n]=o[n];return a[t]=r(s),sa(e,this,a)}}var ca=vc;function Ac(e,t){return fa(ca(e,t,wr),e+"")}var ma=Ac;var $c=9007199254740991;function Pc(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=$c}var Or=Pc;function Tc(e){return e!=null&&Or(e.length)&&!Sr(e)}var Ce=Tc;function Nc(e,t,r){if(!j(r))return false;var o=typeof t;return (o=="number"?Ce(r)&&St(t,r.length):o=="string"&&t in r)?Te(r[t],e):false}var Xo=Nc;function Cc(e){return ma(function(t,r){var o=-1,n=r.length,i=n>1?r[n-1]:void 0,s=n>2?r[2]:void 0;for(i=e.length>3&&typeof i=="function"?(n--,i):void 0,s&&Xo(r[0],r[1],s)&&(i=n<3?void 0:i,n=1),t=Object(t);++o<n;){var a=r[o];a&&e(t,a,o,i);}return t})}var ga=Cc;var Mc=Object.prototype;function _c(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||Mc;return e===r}var Er=_c;function Lc(e,t){for(var r=-1,o=Array(e);++r<e;)o[r]=t(r);return o}var ya=Lc;var kc="[object Arguments]";function Dc(e){return K(e)&&pe(e)==kc}var ki=Dc;var ha=Object.prototype,Fc=ha.hasOwnProperty,jc=ha.propertyIsEnumerable,Ic=ki((function(){return arguments})())?ki:function(e){return K(e)&&Fc.call(e,"callee")&&!jc.call(e,"callee")},Kt=Ic;function Bc(){return false}var wa=Bc;var xa=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Sa=xa&&typeof module=="object"&&module&&!module.nodeType&&module,Vc=Sa&&Sa.exports===xa,ba=Vc?W.Buffer:void 0,qc=ba?ba.isBuffer:void 0,Wc=qc||wa,Ye=Wc;var Uc="[object Arguments]",Gc="[object Array]",Kc="[object Boolean]",zc="[object Date]",Hc="[object Error]",Jc="[object Function]",Qc="[object Map]",Zc="[object Number]",Yc="[object Object]",Xc="[object RegExp]",em="[object Set]",tm="[object String]",rm="[object WeakMap]",om="[object ArrayBuffer]",nm="[object DataView]",im="[object Float32Array]",sm="[object Float64Array]",am="[object Int8Array]",lm="[object Int16Array]",pm="[object Int32Array]",fm="[object Uint8Array]",dm="[object Uint8ClampedArray]",um="[object Uint16Array]",cm="[object Uint32Array]",L={};L[im]=L[sm]=L[am]=L[lm]=L[pm]=L[fm]=L[dm]=L[um]=L[cm]=true;L[Uc]=L[Gc]=L[om]=L[Kc]=L[nm]=L[zc]=L[Hc]=L[Jc]=L[Qc]=L[Zc]=L[Yc]=L[Xc]=L[em]=L[tm]=L[rm]=false;function mm(e){return K(e)&&Or(e.length)&&!!L[pe(e)]}var Ra=mm;function gm(e){return function(t){return e(t)}}var vr=gm;var Oa=typeof exports=="object"&&exports&&!exports.nodeType&&exports,bo=Oa&&typeof module=="object"&&module&&!module.nodeType&&module,ym=bo&&bo.exports===Oa,Di=ym&&Jo.process,hm=(function(){try{var e=bo&&bo.require&&bo.require("util").types;return e||Di&&Di.binding&&Di.binding("util")}catch{}})(),Xe=hm;var Ea=Xe&&Xe.isTypedArray,wm=Ea?vr(Ea):Ra,Ar=wm;var Sm=Object.prototype,bm=Sm.hasOwnProperty;function xm(e,t){var r=F(e),o=!r&&Kt(e),n=!r&&!o&&Ye(e),i=!r&&!o&&!n&&Ar(e),s=r||o||n||i,a=s?ya(e.length,String):[],p=a.length;for(var l in e)(t||bm.call(e,l))&&!(s&&(l=="length"||n&&(l=="offset"||l=="parent")||i&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||St(l,p)))&&a.push(l);return a}var en=xm;function Rm(e,t){return function(r){return e(t(r))}}var tn=Rm;var Om=tn(Object.keys,Object),va=Om;var Em=Object.prototype,vm=Em.hasOwnProperty;function Am(e){if(!Er(e))return va(e);var t=[];for(var r in Object(e))vm.call(e,r)&&r!="constructor"&&t.push(r);return t}var Aa=Am;function $m(e){return Ce(e)?en(e):Aa(e)}var Me=$m;function Pm(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}var $a=Pm;var Tm=Object.prototype,Nm=Tm.hasOwnProperty;function Cm(e){if(!j(e))return $a(e);var t=Er(e),r=[];for(var o in e)o=="constructor"&&(t||!Nm.call(e,o))||r.push(o);return r}var Pa=Cm;function Mm(e){return Ce(e)?en(e,true):Pa(e)}var _e=Mm;var _m=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Lm=/^\w*$/;function km(e,t){if(F(e))return false;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||hr(e)?true:Lm.test(e)||!_m.test(e)||t!=null&&e in Object(t)}var $r=km;var Dm=ie(Object,"create"),et=Dm;function Fm(){this.__data__=et?et(null):{},this.size=0;}var Ta=Fm;function jm(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var Na=jm;var Im="__lodash_hash_undefined__",Bm=Object.prototype,Vm=Bm.hasOwnProperty;function qm(e){var t=this.__data__;if(et){var r=t[e];return r===Im?void 0:r}return Vm.call(t,e)?t[e]:void 0}var Ca=qm;var Wm=Object.prototype,Um=Wm.hasOwnProperty;function Gm(e){var t=this.__data__;return et?t[e]!==void 0:Um.call(t,e)}var Ma=Gm;var Km="__lodash_hash_undefined__";function zm(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=et&&t===void 0?Km:t,this}var _a=zm;function Pr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var o=e[t];this.set(o[0],o[1]);}}Pr.prototype.clear=Ta;Pr.prototype.delete=Na;Pr.prototype.get=Ca;Pr.prototype.has=Ma;Pr.prototype.set=_a;var Fi=Pr;function Hm(){this.__data__=[],this.size=0;}var La=Hm;function Jm(e,t){for(var r=e.length;r--;)if(Te(e[r][0],t))return r;return -1}var bt=Jm;var Qm=Array.prototype,Zm=Qm.splice;function Ym(e){var t=this.__data__,r=bt(t,e);if(r<0)return false;var o=t.length-1;return r==o?t.pop():Zm.call(t,r,1),--this.size,true}var ka=Ym;function Xm(e){var t=this.__data__,r=bt(t,e);return r<0?void 0:t[r][1]}var Da=Xm;function eg(e){return bt(this.__data__,e)>-1}var Fa=eg;function tg(e,t){var r=this.__data__,o=bt(r,e);return o<0?(++this.size,r.push([e,t])):r[o][1]=t,this}var ja=tg;function Tr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var o=e[t];this.set(o[0],o[1]);}}Tr.prototype.clear=La;Tr.prototype.delete=ka;Tr.prototype.get=Da;Tr.prototype.has=Fa;Tr.prototype.set=ja;var xt=Tr;var rg=ie(W,"Map"),Rt=rg;function og(){this.size=0,this.__data__={hash:new Fi,map:new(Rt||xt),string:new Fi};}var Ia=og;function ng(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var Ba=ng;function ig(e,t){var r=e.__data__;return Ba(t)?r[typeof t=="string"?"string":"hash"]:r.map}var Ot=ig;function sg(e){var t=Ot(this,e).delete(e);return this.size-=t?1:0,t}var Va=sg;function ag(e){return Ot(this,e).get(e)}var qa=ag;function lg(e){return Ot(this,e).has(e)}var Wa=lg;function pg(e,t){var r=Ot(this,e),o=r.size;return r.set(e,t),this.size+=r.size==o?0:1,this}var Ua=pg;function Nr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var o=e[t];this.set(o[0],o[1]);}}Nr.prototype.clear=Ia;Nr.prototype.delete=Va;Nr.prototype.get=qa;Nr.prototype.has=Wa;Nr.prototype.set=Ua;var zt=Nr;var fg="Expected a function";function ji(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(fg);var r=function(){var o=arguments,n=t?t.apply(this,o):o[0],i=r.cache;if(i.has(n))return i.get(n);var s=e.apply(this,o);return r.cache=i.set(n,s)||i,s};return r.cache=new(ji.Cache||zt),r}ji.Cache=zt;var Ga=ji;var dg=500;function ug(e){var t=Ga(e,function(o){return r.size===dg&&r.clear(),o}),r=t.cache;return t}var Ka=ug;var cg=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,mg=/\\(\\)?/g,gg=Ka(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(cg,function(r,o,n,i){t.push(n?i.replace(mg,"$1"):o||r);}),t}),za=gg;function yg(e){return e==null?"":Xs(e)}var Ha=yg;function hg(e,t){return F(e)?e:$r(e,t)?[e]:za(Ha(e))}var Cr=hg;function Sg(e){if(typeof e=="string"||hr(e))return e;var t=e+"";return t=="0"&&1/e==-Infinity?"-0":t}var Le=Sg;function bg(e,t){t=Cr(t,e);for(var r=0,o=t.length;e!=null&&r<o;)e=e[Le(t[r++])];return r&&r==o?e:void 0}var rn=bg;function xg(e,t,r){var o=e==null?void 0:rn(e,t);return o===void 0?r:o}var Ja=xg;function Rg(e,t){for(var r=-1,o=t.length,n=e.length;++r<o;)e[n+r]=t[r];return e}var on=Rg;var Og=tn(Object.getPrototypeOf,Object),Mr=Og;var Eg="[object Object]",vg=Function.prototype,Ag=Object.prototype,Qa=vg.toString,$g=Ag.hasOwnProperty,Pg=Qa.call(Object);function Tg(e){if(!K(e)||pe(e)!=Eg)return false;var t=Mr(e);if(t===null)return true;var r=$g.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Qa.call(r)==Pg}var fe=Tg;function Ng(){this.__data__=new xt,this.size=0;}var Za=Ng;function Cg(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var Ya=Cg;function Mg(e){return this.__data__.get(e)}var Xa=Mg;function _g(e){return this.__data__.has(e)}var el=_g;var Lg=200;function kg(e,t){var r=this.__data__;if(r instanceof xt){var o=r.__data__;if(!Rt||o.length<Lg-1)return o.push([e,t]),this.size=++r.size,this;r=this.__data__=new zt(o);}return r.set(e,t),this.size=r.size,this}var tl=kg;function _r(e){var t=this.__data__=new xt(e);this.size=t.size;}_r.prototype.clear=Za;_r.prototype.delete=Ya;_r.prototype.get=Xa;_r.prototype.has=el;_r.prototype.set=tl;var ke=_r;function Dg(e,t){return e&&Ne(t,Me(t),e)}var rl=Dg;function Fg(e,t){return e&&Ne(t,_e(t),e)}var ol=Fg;var al=typeof exports=="object"&&exports&&!exports.nodeType&&exports,nl=al&&typeof module=="object"&&module&&!module.nodeType&&module,jg=nl&&nl.exports===al,il=jg?W.Buffer:void 0,sl=il?il.allocUnsafe:void 0;function Ig(e,t){if(t)return e.slice();var r=e.length,o=sl?sl(r):new e.constructor(r);return e.copy(o),o}var nn=Ig;function Bg(e,t){for(var r=-1,o=e==null?0:e.length,n=0,i=[];++r<o;){var s=e[r];t(s,r,e)&&(i[n++]=s);}return i}var ll=Bg;function Vg(){return []}var sn=Vg;var qg=Object.prototype,Wg=qg.propertyIsEnumerable,pl=Object.getOwnPropertySymbols,Ug=pl?function(e){return e==null?[]:(e=Object(e),ll(pl(e),function(t){return Wg.call(e,t)}))}:sn,Lr=Ug;function Gg(e,t){return Ne(e,Lr(e),t)}var fl=Gg;var Kg=Object.getOwnPropertySymbols,zg=Kg?function(e){for(var t=[];e;)on(t,Lr(e)),e=Mr(e);return t}:sn,an=zg;function Hg(e,t){return Ne(e,an(e),t)}var dl=Hg;function Jg(e,t,r){var o=t(e);return F(e)?o:on(o,r(e))}var ln=Jg;function Qg(e){return ln(e,Me,Lr)}var xo=Qg;function Zg(e){return ln(e,_e,an)}var ul=Zg;var Yg=ie(W,"DataView"),pn=Yg;var Xg=ie(W,"Promise"),fn=Xg;var ey=ie(W,"Set"),dn=ey;var cl="[object Map]",ty="[object Object]",ml="[object Promise]",gl="[object Set]",yl="[object WeakMap]",hl="[object DataView]",ry=Ze(pn),oy=Ze(Rt),ny=Ze(fn),iy=Ze(dn),sy=Ze(Zo),Ht=pe;(pn&&Ht(new pn(new ArrayBuffer(1)))!=hl||Rt&&Ht(new Rt)!=cl||fn&&Ht(fn.resolve())!=ml||dn&&Ht(new dn)!=gl||Zo&&Ht(new Zo)!=yl)&&(Ht=function(e){var t=pe(e),r=t==ty?e.constructor:void 0,o=r?Ze(r):"";if(o)switch(o){case ry:return hl;case oy:return cl;case ny:return ml;case iy:return gl;case sy:return yl}return t});var tt=Ht;var ay=Object.prototype,ly=ay.hasOwnProperty;function py(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&ly.call(e,"index")&&(r.index=e.index,r.input=e.input),r}var wl=py;var fy=W.Uint8Array,kr=fy;function dy(e){var t=new e.constructor(e.byteLength);return new kr(t).set(new kr(e)),t}var Dr=dy;function uy(e,t){var r=t?Dr(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}var Sl=uy;var cy=/\w*$/;function my(e){var t=new e.constructor(e.source,cy.exec(e));return t.lastIndex=e.lastIndex,t}var bl=my;var xl=re?re.prototype:void 0,Rl=xl?xl.valueOf:void 0;function gy(e){return Rl?Object(Rl.call(e)):{}}var Ol=gy;function yy(e,t){var r=t?Dr(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}var un=yy;var hy="[object Boolean]",wy="[object Date]",Sy="[object Map]",by="[object Number]",xy="[object RegExp]",Ry="[object Set]",Oy="[object String]",Ey="[object Symbol]",vy="[object ArrayBuffer]",Ay="[object DataView]",$y="[object Float32Array]",Py="[object Float64Array]",Ty="[object Int8Array]",Ny="[object Int16Array]",Cy="[object Int32Array]",My="[object Uint8Array]",_y="[object Uint8ClampedArray]",Ly="[object Uint16Array]",ky="[object Uint32Array]";function Dy(e,t,r){var o=e.constructor;switch(t){case vy:return Dr(e);case hy:case wy:return new o(+e);case Ay:return Sl(e,r);case $y:case Py:case Ty:case Ny:case Cy:case My:case _y:case Ly:case ky:return un(e,r);case Sy:return new o;case by:case Oy:return new o(e);case xy:return bl(e);case Ry:return new o;case Ey:return Ol(e)}}var El=Dy;function Fy(e){return typeof e.constructor=="function"&&!Er(e)?ia(Mr(e)):{}}var cn=Fy;var jy="[object Map]";function Iy(e){return K(e)&&tt(e)==jy}var vl=Iy;var Al=Xe&&Xe.isMap,By=Al?vr(Al):vl,$l=By;var Vy="[object Set]";function qy(e){return K(e)&&tt(e)==Vy}var Pl=qy;var Tl=Xe&&Xe.isSet,Wy=Tl?vr(Tl):Pl,Nl=Wy;var Uy=1,Gy=2,Ky=4,Cl="[object Arguments]",zy="[object Array]",Hy="[object Boolean]",Jy="[object Date]",Qy="[object Error]",Ml="[object Function]",Zy="[object GeneratorFunction]",Yy="[object Map]",Xy="[object Number]",_l="[object Object]",eh="[object RegExp]",th="[object Set]",rh="[object String]",oh="[object Symbol]",nh="[object WeakMap]",ih="[object ArrayBuffer]",sh="[object DataView]",ah="[object Float32Array]",lh="[object Float64Array]",ph="[object Int8Array]",fh="[object Int16Array]",dh="[object Int32Array]",uh="[object Uint8Array]",ch="[object Uint8ClampedArray]",mh="[object Uint16Array]",gh="[object Uint32Array]",_={};_[Cl]=_[zy]=_[ih]=_[sh]=_[Hy]=_[Jy]=_[ah]=_[lh]=_[ph]=_[fh]=_[dh]=_[Yy]=_[Xy]=_[_l]=_[eh]=_[th]=_[rh]=_[oh]=_[uh]=_[ch]=_[mh]=_[gh]=true;_[Qy]=_[Ml]=_[nh]=false;function mn(e,t,r,o,n,i){var s,a=t&Uy,p=t&Gy,l=t&Ky;if(r&&(s=n?r(e,o,n,i):r(e)),s!==void 0)return s;if(!j(e))return e;var f=F(e);if(f){if(s=wl(e),!a)return Yo(e,s)}else {var d=tt(e),u=d==Ml||d==Zy;if(Ye(e))return nn(e,a);if(d==_l||d==Cl||u&&!n){if(s=p||u?{}:cn(e),!a)return p?dl(e,ol(s,e)):fl(e,rl(s,e))}else {if(!_[d])return n?e:{};s=El(e,d,a);}}i||(i=new ke);var g=i.get(e);if(g)return g;i.set(e,s),Nl(e)?e.forEach(function(S){s.add(mn(S,t,r,S,e,i));}):$l(e)&&e.forEach(function(S,b){s.set(b,mn(S,t,r,b,e,i));});var y=l?p?ul:xo:p?_e:Me,m=f?void 0:y(e);return da(m||e,function(S,b){m&&(b=S,S=e[b]),Rr(s,b,mn(S,t,r,b,e,i));}),s}var gn=mn;var yh=1,hh=4;function wh(e){return gn(e,yh|hh)}var yn=wh;var Sh=1,bh=4;function xh(e,t){return t=typeof t=="function"?t:void 0,gn(e,Sh|bh,t)}var Ii=xh;var Rh="__lodash_hash_undefined__";function Oh(e){return this.__data__.set(e,Rh),this}var Ll=Oh;function Eh(e){return this.__data__.has(e)}var kl=Eh;function hn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new zt;++t<r;)this.add(e[t]);}hn.prototype.add=hn.prototype.push=Ll;hn.prototype.has=kl;var Dl=hn;function vh(e,t){for(var r=-1,o=e==null?0:e.length;++r<o;)if(t(e[r],r,e))return true;return false}var wn=vh;function Ah(e,t){return e.has(t)}var Fl=Ah;var $h=1,Ph=2;function Th(e,t,r,o,n,i){var s=r&$h,a=e.length,p=t.length;if(a!=p&&!(s&&p>a))return false;var l=i.get(e),f=i.get(t);if(l&&f)return l==t&&f==e;var d=-1,u=true,g=r&Ph?new Dl:void 0;for(i.set(e,t),i.set(t,e);++d<a;){var y=e[d],m=t[d];if(o)var S=s?o(m,y,d,t,e,i):o(y,m,d,e,t,i);if(S!==void 0){if(S)continue;u=false;break}if(g){if(!wn(t,function(b,w){if(!Fl(g,w)&&(y===b||n(y,b,r,o,i)))return g.push(w)})){u=false;break}}else if(!(y===m||n(y,m,r,o,i))){u=false;break}}return i.delete(e),i.delete(t),u}var Sn=Th;function Nh(e){var t=-1,r=Array(e.size);return e.forEach(function(o,n){r[++t]=[n,o];}),r}var jl=Nh;function Ch(e){var t=-1,r=Array(e.size);return e.forEach(function(o){r[++t]=o;}),r}var Il=Ch;var Mh=1,_h=2,Lh="[object Boolean]",kh="[object Date]",Dh="[object Error]",Fh="[object Map]",jh="[object Number]",Ih="[object RegExp]",Bh="[object Set]",Vh="[object String]",qh="[object Symbol]",Wh="[object ArrayBuffer]",Uh="[object DataView]",Bl=re?re.prototype:void 0,Bi=Bl?Bl.valueOf:void 0;function Gh(e,t,r,o,n,i,s){switch(r){case Uh:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return false;e=e.buffer,t=t.buffer;case Wh:return !(e.byteLength!=t.byteLength||!i(new kr(e),new kr(t)));case Lh:case kh:case jh:return Te(+e,+t);case Dh:return e.name==t.name&&e.message==t.message;case Ih:case Vh:return e==t+"";case Fh:var a=jl;case Bh:var p=o&Mh;if(a||(a=Il),e.size!=t.size&&!p)return false;var l=s.get(e);if(l)return l==t;o|=_h,s.set(e,t);var f=Sn(a(e),a(t),o,n,i,s);return s.delete(e),f;case qh:if(Bi)return Bi.call(e)==Bi.call(t)}return false}var Vl=Gh;var Kh=1,zh=Object.prototype,Hh=zh.hasOwnProperty;function Jh(e,t,r,o,n,i){var s=r&Kh,a=xo(e),p=a.length,l=xo(t),f=l.length;if(p!=f&&!s)return false;for(var d=p;d--;){var u=a[d];if(!(s?u in t:Hh.call(t,u)))return false}var g=i.get(e),y=i.get(t);if(g&&y)return g==t&&y==e;var m=true;i.set(e,t),i.set(t,e);for(var S=s;++d<p;){u=a[d];var b=e[u],w=t[u];if(o)var c=s?o(w,b,u,t,e,i):o(b,w,u,e,t,i);if(!(c===void 0?b===w||n(b,w,r,o,i):c)){m=false;break}S||(S=u=="constructor");}if(m&&!S){var x=e.constructor,O=t.constructor;x!=O&&"constructor"in e&&"constructor"in t&&!(typeof x=="function"&&x instanceof x&&typeof O=="function"&&O instanceof O)&&(m=false);}return i.delete(e),i.delete(t),m}var ql=Jh;var Qh=1,Wl="[object Arguments]",Ul="[object Array]",bn="[object Object]",Zh=Object.prototype,Gl=Zh.hasOwnProperty;function Yh(e,t,r,o,n,i){var s=F(e),a=F(t),p=s?Ul:tt(e),l=a?Ul:tt(t);p=p==Wl?bn:p,l=l==Wl?bn:l;var f=p==bn,d=l==bn,u=p==l;if(u&&Ye(e)){if(!Ye(t))return false;s=true,f=false;}if(u&&!f)return i||(i=new ke),s||Ar(e)?Sn(e,t,r,o,n,i):Vl(e,t,p,r,o,n,i);if(!(r&Qh)){var g=f&&Gl.call(e,"__wrapped__"),y=d&&Gl.call(t,"__wrapped__");if(g||y){var m=g?e.value():e,S=y?t.value():t;return i||(i=new ke),n(m,S,r,o,i)}}return u?(i||(i=new ke),ql(e,t,r,o,n,i)):false}var Kl=Yh;function zl(e,t,r,o,n){return e===t?true:e==null||t==null||!K(e)&&!K(t)?e!==e&&t!==t:Kl(e,t,r,o,zl,n)}var Fr=zl;var Xh=1,ew=2;function tw(e,t,r,o){var n=r.length,i=n,s=!o;if(e==null)return !i;for(e=Object(e);n--;){var a=r[n];if(s&&a[2]?a[1]!==e[a[0]]:!(a[0]in e))return false}for(;++n<i;){a=r[n];var p=a[0],l=e[p],f=a[1];if(s&&a[2]){if(l===void 0&&!(p in e))return false}else {var d=new ke;if(o)var u=o(l,f,p,e,t,d);if(!(u===void 0?Fr(f,l,Xh|ew,o,d):u))return false}}return true}var Hl=tw;function rw(e){return e===e&&!j(e)}var xn=rw;function ow(e){for(var t=Me(e),r=t.length;r--;){var o=t[r],n=e[o];t[r]=[o,n,xn(n)];}return t}var Jl=ow;function nw(e,t){return function(r){return r==null?false:r[e]===t&&(t!==void 0||e in Object(r))}}var Rn=nw;function iw(e){var t=Jl(e);return t.length==1&&t[0][2]?Rn(t[0][0],t[0][1]):function(r){return r===e||Hl(r,e,t)}}var Ql=iw;function sw(e,t){return e!=null&&t in Object(e)}var Zl=sw;function aw(e,t,r){t=Cr(t,e);for(var o=-1,n=t.length,i=false;++o<n;){var s=Le(t[o]);if(!(i=e!=null&&r(e,s)))break;e=e[s];}return i||++o!=n?i:(n=e==null?0:e.length,!!n&&Or(n)&&St(s,n)&&(F(e)||Kt(e)))}var Yl=aw;function lw(e,t){return e!=null&&Yl(e,t,Zl)}var Xl=lw;var pw=1,fw=2;function dw(e,t){return $r(e)&&xn(t)?Rn(Le(e),t):function(r){var o=Ja(r,e);return o===void 0&&o===t?Xl(r,e):Fr(t,o,pw|fw)}}var ep=dw;function uw(e){return function(t){return t?.[e]}}var tp=uw;function cw(e){return function(t){return rn(t,e)}}var rp=cw;function mw(e){return $r(e)?tp(Le(e)):rp(e)}var op=mw;function gw(e){return typeof e=="function"?e:e==null?wr:typeof e=="object"?F(e)?ep(e[0],e[1]):Ql(e):op(e)}var np=gw;function yw(e){return function(t,r,o){for(var n=-1,i=Object(t),s=o(t),a=s.length;a--;){var p=s[e?a:++n];if(r(i[p],p,i)===false)break}return t}}var ip=yw;var hw=ip(),On=hw;function ww(e,t){return e&&On(e,t,Me)}var sp=ww;function Sw(e,t){return function(r,o){if(r==null)return r;if(!Ce(r))return e(r,o);for(var n=r.length,i=t?n:-1,s=Object(r);(t?i--:++i<n)&&o(s[i],i,s)!==false;);return r}}var ap=Sw;var bw=ap(sp),lp=bw;function xw(e,t,r){(r!==void 0&&!Te(e[t],r)||r===void 0&&!(t in e))&&xr(e,t,r);}var Ro=xw;function Rw(e){return K(e)&&Ce(e)}var pp=Rw;function Ow(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}var Oo=Ow;function Ew(e){return Ne(e,_e(e))}var fp=Ew;function vw(e,t,r,o,n,i,s){var a=Oo(e,r),p=Oo(t,r),l=s.get(p);if(l){Ro(e,r,l);return}var f=i?i(a,p,r+"",e,t,s):void 0,d=f===void 0;if(d){var u=F(p),g=!u&&Ye(p),y=!u&&!g&&Ar(p);f=p,u||g||y?F(a)?f=a:pp(a)?f=Yo(a):g?(d=false,f=nn(p,true)):y?(d=false,f=un(p,true)):f=[]:fe(p)||Kt(p)?(f=a,Kt(a)?f=fp(a):(!j(a)||Sr(a))&&(f=cn(p))):d=false;}d&&(s.set(p,f),n(f,p,o,i,s),s.delete(p)),Ro(e,r,f);}var dp=vw;function up(e,t,r,o,n){e!==t&&On(t,function(i,s){if(n||(n=new ke),j(i))dp(e,t,s,r,up,o,n);else {var a=o?o(Oo(e,s),i,s+"",e,t,n):void 0;a===void 0&&(a=i),Ro(e,s,a);}},_e);}var cp=up;function Aw(e,t){return Fr(e,t)}var Jt=Aw;var $w=ga(function(e,t,r){cp(e,t,r);}),Vi=$w;function Pw(e,t,r,o){if(!j(e))return e;t=Cr(t,e);for(var n=-1,i=t.length,s=i-1,a=e;a!=null&&++n<i;){var p=Le(t[n]),l=r;if(p==="__proto__"||p==="constructor"||p==="prototype")return e;if(n!=s){var f=a[p];l=o?o(f,p,a):void 0,l===void 0&&(l=j(f)?f:St(t[n+1])?[]:{});}Rr(a,p,l),a=a[p];}return e}var mp=Pw;function Tw(e,t,r){return e==null?e:mp(e,t,r)}var qi=Tw;function Nw(e,t){var r;return lp(e,function(o,n,i){return r=t(o,n,i),!r}),!!r}var gp=Nw;function Cw(e,t,r){var o=F(e)?wn:gp;return r&&Xo(e,t,r)&&(t=void 0),o(e,np(t))}var Wi=Cw;var Mw=/^(\$+)\.(.*)$/,q=e=>{let t=Mw.exec(e);return t?{depth:t[1].length,path:t[2]}:null},Ui=(e,t,r)=>`Scope ref '${e}' needs depth ${t} but only ${r} ${r===1?"scope is":"scopes are"} in reach`,ye=(e,t)=>{let r=q(e);return r?r.depth>t.length?{outOfBounds:Ui(e,r.depth,t.length)}:{scope:t[t.length-r.depth],path:r.path}:{scope:t[t.length-1],path:e}},_w=/\[(\d+)\]|\[(["'])(.*?)\2\]|([^.[\]]+)/g,Lw=e=>e===""?[""]:[...e.matchAll(_w)].map(t=>t[1]??t[3]??t[4]),kw=(e,t)=>{if(e==null)return;let r=Object(e);if(Object.hasOwn(r,t))return r[t];if(t in Object.prototype||!(t in r))return;let o=r[t];return typeof o=="function"?void 0:o},J=(e,t)=>Lw(t).reduce(kw,e),Et=(e,t)=>{let r=ye(e,t);if("outOfBounds"in r)throw new Error(r.outOfBounds);return J(r.scope,r.path)},yp=(e,t,r)=>q(e)?Et(e,t):J(r,e),Eo=(e,t)=>`Scope ref '${e}' is not supported by ${t}(); evaluate with check()`,En=(e,t)=>{if(!(!("field"in e)||typeof e.field!="string")&&q(e.field))throw new Error(Eo(e.field,t))},vn=(e,t,r)=>{if(!t)throw new Error(`context is required to resolve path '${e}'. Pass context when calling ${r}().`);return J(t,e)??null};var hp={string:{caseInsensitive:false,fuzzy:false},prismaOptions:{datasource:{provider:"postgresql"}}},jr=yn(hp),Gi=e=>Ii(e,t=>typeof t=="object"&&t!==null&&!Array.isArray(t)&&!fe(t)?t:void 0),Dw=e=>e!=null&&typeof e.then=="function",Qt={set:(e,t)=>{qi(jr,e,Gi(t));},get:e=>J(jr,e),reset:()=>{jr=yn(hp);},with:(e,t)=>{let r=jr;jr=Vi(Gi(r),Gi(e));try{let o=t();if(Dw(o))throw new Error("engineGlobals.with() callback must be synchronous (it returned a Promise).");return o}finally{jr=r;}}},Fw=new Set(["postgresql","cockroachdb","mongodb"]),wp=e=>Fw.has(e),de=e=>e??Qt.get("string.caseInsensitive")??false,An=e=>{let t=e??Qt.get("string.fuzzy")??false;return t?t===true?{}:t:false};var h={equals:"equals",notEquals:"notEquals",lessThan:"lessThan",lessThanEquals:"lessThanEquals",greaterThan:"greaterThan",greaterThanEquals:"greaterThanEquals",contains:"contains",notContains:"notContains",in:"in",notIn:"notIn",matches:"matches",notMatches:"notMatches",between:"between",notBetween:"notBetween",isEmpty:"isEmpty",notEmpty:"notEmpty",exists:"exists",notExists:"notExists",startsWith:"startsWith",notStartsWith:"notStartsWith",endsWith:"endsWith",notEndsWith:"notEndsWith"},E={all:"all",any:"any",none:"none",atLeast:"atLeast",atMost:"atMost",exactly:"exactly",empty:"empty",notEmpty:"notEmpty"},$={before:"before",after:"after",onOrBefore:"onOrBefore",onOrAfter:"onOrAfter",notBefore:"notBefore",notAfter:"notAfter",within:"within",notWithin:"notWithin",between:"between",notBetween:"notBetween",dayIn:"dayIn",dayNotIn:"dayNotIn"};var I={String:"String",Boolean:"Boolean",Int:"Int",BigInt:"BigInt",Float:"Float",Decimal:"Decimal",DateTime:"DateTime",Json:"Json",Bytes:"Bytes",Enum:"Enum"},xe=["Int","Float","Decimal","BigInt"],Ir=["String",...xe,"DateTime"],vt=["String"],$n=["String","Boolean","Int","BigInt","Float","Decimal","DateTime","Enum"],Pn=Object.values(I),Sp=Pn,jw={check:"check",toPrisma:"toPrisma",toSql:"toSql"},Cn=e=>typeof e=="string"&&Object.hasOwn(I,e),P=["check","toPrisma","toSql"],Br=["check","toPrisma"],Tn=["check","toSql"],ot={none:"none",scalar:"scalar",ordered:"ordered",array:"array",string:"string",pattern:"pattern",range:"range",dateValue:"dateValue",dateRange:"dateRange",dateWindow:"dateWindow",dayList:"dayList",count:"count",predicate:"predicate"},Vr={[h.equals]:{kinds:$n,targets:P,valueShape:"scalar"},[h.notEquals]:{negates:h.equals,kinds:$n,targets:P,valueShape:"scalar"},[h.lessThan]:{kinds:Ir,targets:P,valueShape:"ordered",comparator:"lt"},[h.lessThanEquals]:{kinds:Ir,targets:P,valueShape:"ordered",comparator:"lte"},[h.greaterThan]:{kinds:Ir,targets:P,valueShape:"ordered",comparator:"gt"},[h.greaterThanEquals]:{kinds:Ir,targets:P,valueShape:"ordered",comparator:"gte"},[h.in]:{kinds:$n,targets:P,valueShape:"array"},[h.notIn]:{negates:h.in,kinds:$n,targets:P,valueShape:"array"},[h.contains]:{kinds:vt,targets:P,valueShape:"string"},[h.notContains]:{negates:h.contains,kinds:vt,targets:P,valueShape:"string"},[h.startsWith]:{kinds:vt,targets:P,valueShape:"string"},[h.notStartsWith]:{negates:h.startsWith,kinds:vt,targets:P,valueShape:"string"},[h.endsWith]:{kinds:vt,targets:P,valueShape:"string"},[h.notEndsWith]:{negates:h.endsWith,kinds:vt,targets:P,valueShape:"string"},[h.matches]:{kinds:vt,targets:Tn,valueShape:"pattern"},[h.notMatches]:{negates:h.matches,kinds:vt,targets:Tn,valueShape:"pattern"},[h.between]:{kinds:Ir,targets:P,valueShape:"range"},[h.notBetween]:{negates:h.between,kinds:Ir,targets:P,valueShape:"range"},[h.isEmpty]:{kinds:Sp,targets:P,valueShape:"none"},[h.notEmpty]:{kinds:Sp,targets:P,valueShape:"none"},[h.exists]:{kinds:Pn,targets:P,valueShape:"none"},[h.notExists]:{kinds:Pn,targets:P,valueShape:"none"}},qr={[$.before]:{kinds:["DateTime"],targets:P,valueShape:"dateValue",acceptsExpr:true,comparator:"lt"},[$.after]:{kinds:["DateTime"],targets:P,valueShape:"dateValue",acceptsExpr:true,comparator:"gt"},[$.onOrBefore]:{kinds:["DateTime"],targets:P,valueShape:"dateValue",acceptsExpr:true,comparator:"lte"},[$.onOrAfter]:{kinds:["DateTime"],targets:P,valueShape:"dateValue",acceptsExpr:true,comparator:"gte"},[$.notBefore]:{negates:$.before,kinds:["DateTime"],targets:P,valueShape:"dateValue",acceptsExpr:true,comparator:"gte"},[$.notAfter]:{negates:$.after,kinds:["DateTime"],targets:P,valueShape:"dateValue",acceptsExpr:true,comparator:"lte"},[$.within]:{kinds:["DateTime"],targets:P,valueShape:"dateWindow",acceptsExpr:true},[$.notWithin]:{negates:$.within,kinds:["DateTime"],targets:P,valueShape:"dateWindow",acceptsExpr:true},[$.between]:{kinds:["DateTime"],targets:P,valueShape:"dateRange",acceptsExpr:true},[$.notBetween]:{negates:$.between,kinds:["DateTime"],targets:P,valueShape:"dateRange",acceptsExpr:true},[$.dayIn]:{kinds:["DateTime"],targets:Tn,valueShape:"dayList",acceptsExpr:false},[$.dayNotIn]:{negates:$.dayIn,kinds:["DateTime"],targets:Tn,valueShape:"dayList",acceptsExpr:false}},Nn={[E.all]:{targets:Br,valueShape:"predicate"},[E.any]:{targets:Br,valueShape:"predicate"},[E.none]:{targets:Br,valueShape:"predicate"},[E.atLeast]:{targets:Br,valueShape:"count",comparator:"gte"},[E.atMost]:{targets:Br,valueShape:"count",comparator:"lte"},[E.exactly]:{targets:Br,valueShape:"count",comparator:"equals"},[E.empty]:{targets:P,valueShape:"none"},[E.notEmpty]:{targets:P,valueShape:"none"}},bp={field:Vr,date:qr,array:Nn},rt=(e,t)=>Object.hasOwn(bp[t],e)?bp[t][e]:void 0,Wr=e=>typeof e.operator=="string"?rt(e.operator,"field"):typeof e.dateOperator=="string"?rt(e.dateOperator,"date"):void 0,At=(e,t)=>rt(e,t)?.comparator,nt=(e,t)=>{let r=rt(e,t);if(!r)throw H(e,t);return r.valueShape},Mn=(e,t,r)=>rt(e,t)?.targets.includes(r)??false,Iw=(e,t)=>{let r=Object.keys(Vr).filter(n=>{let i=Vr[n];return !(!i.kinds.includes(e)||t&&!i.targets.includes(t))}),o=Object.keys(qr).filter(n=>{let i=qr[n];return !(!i.kinds.includes(e)||t&&!i.targets.includes(t))});return {field:r,date:o}},Bw=e=>Object.keys(Nn).filter(t=>e?Nn[t].targets.includes(e):true),xp=[...Object.entries(Vr),...Object.entries(qr)],ue=(...e)=>xp.flatMap(([t,r])=>e.includes(r.valueShape)?[t]:[]),$t=ue("none"),Ur=ue("ordered"),vo=ue("dateWindow"),he=ue("range","dateRange","dateWindow"),Rp=ue("ordered","string","pattern","array"),Gr=[h.contains,h.notContains],_n=ue("scalar","ordered","range"),De=["sum","avg"],Vw=()=>_n,Pt=ue("scalar"),Kr=ue("array"),Op=ue("scalar","array"),Ep=ue("dayList"),vp=ue("dateRange"),Ap=ue("scalar","ordered","range","dateValue","dateRange"),$p=(...e)=>Object.entries(Nn).flatMap(([t,r])=>e.includes(r.valueShape)?[t]:[]),Ln=$p("count"),Pp=$p("predicate","count"),Tp=[E.any,E.atLeast],k=[...Object.entries(Vr),...Object.entries(qr)].flatMap(([e,t])=>t.negates?[e]:[]),Np=k.filter(e=>ue("string").includes(e)),zr=k.filter(e=>he.includes(e)),Cp=(...e)=>xp.flatMap(([t,r])=>r.comparator&&e.includes(r.comparator)&&!k.includes(t)?[t]:[]),kn=Cp("lt","lte"),Mp=Cp("gt","gte"),_p=["Int","BigInt"],Lp=[...xe,"DateTime","Boolean","String"],kp=["Int","BigInt","Float","Boolean","String"],Dp=["scalar","ordered","string"],Tt={years:{interval:"months",factor:12,calendar:true},quarters:{interval:"months",factor:3,calendar:true},months:{interval:"months",factor:1,calendar:true},weeks:{interval:"days",factor:7,calendar:true},days:{interval:"days",factor:1,calendar:true},hours:{interval:"secs",factor:3600,calendar:false},minutes:{interval:"secs",factor:60,calendar:false},seconds:{interval:"secs",factor:1,calendar:false}},Fp=["months","days","secs"],Ki=e=>Object.hasOwn(Tt,e),Zt=e=>Ki(e)&&Tt[e].calendar,Dn=["year","quarter","month","week","isoWeek","day","hour","minute","second"],Hr=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],jp=e=>Hr.includes(e.toLowerCase()),Ip=(e,t=[])=>Object.fromEntries([...Object.entries(e).flatMap(([r,o])=>o.negates?[[o.negates,r]]:[]),...t].flatMap(([r,o])=>[[r,o],[o,r]])),Ao=Ip(Vr,[[h.isEmpty,h.notEmpty],[h.exists,h.notExists]]),Bp=Ip(qr),Fn={[h.lessThan]:h.greaterThanEquals,[h.lessThanEquals]:h.greaterThan,[h.greaterThan]:h.lessThanEquals,[h.greaterThanEquals]:h.lessThan,[$.onOrBefore]:$.after,[$.onOrAfter]:$.before};var jn=e=>new Error(`${e}: ArrayRule.field is required (fieldless arrayOps are check-only)`),H=(e,t)=>new Error(`Unknown ${t} operator: ${String(e)}`),Jr=e=>new Error(`${e} requires a count`),Re=e=>new Error(`${e} requires a range date expression (a period or rolling window), not a single point`),Oe=e=>new Error(`${e} requires a condition to check against array elements`),Qr=e=>new Error(`'${e}' is a relation: it exists or not; compare its fields with '${e}.<field>'.`),In=e=>new Error(`'${e}' is a list of rows: compare it with an arrayOperator (any / all / none / empty / atLeast \u2026).`),Bn=e=>Gr.includes(e.operator)&&An(e.fuzzy)?new Error("Fuzzy matching has no compiled form \u2014 evaluate it in memory with check()."):null,Vn=(e,t)=>!Ur.includes(e)&&!he.includes(e)?null:(he.includes(e)&&Array.isArray(t)?t:[t]).some(o=>typeof o=="boolean"||typeof o=="object"&&o!==null&&!(o instanceof Date))?new Error(`'${e}' orders numbers, strings and dates; it can't compare ${JSON.stringify(t)}`):null,Nt=e=>new Error(`aggregate.mode must be one of ${De.join(" / ")}, not '${String(e)}'`),Fe=()=>new Error("A condition is exactly one of: a field, date, array or aggregate rule, all, any, or if/then[/else]"),C=(e,t,r)=>new Error(`${t} has no ${e==="toSql"?"SQL":"Prisma"} form${r?` (${r})`:""}; use ${e==="toSql"?"check()":"toSql() or check()"}.`),je=e=>new Error(`Windowing (filter/orderBy/take/skip) is not supported by ${e}() for this rule; evaluate with check()${e==="toPrisma"?" \u2014 toPrisma compiles a filter alone and an extremal take: 1":""}.`),qn=(e,t)=>new Error(`'${e}' reads through the to-many relation '${t.prefix}'; compare its rows with an arrayOperator rule on '${t.prefix}'.`),Wn=(e,t)=>new Error(`'${e}' continues past '${t}', which is not a Json column`);Be.extend(Gw);Be.extend(Uw);Be.extend(Ww);Be.extend(qw);var U=e=>{if(!fe(e))return false;let t=e;return "ago"in t||"ahead"in t||"this"in t||"last"in t||"next"in t||"start"in t||"end"in t},it="UTC",$o=e=>{if(e.now===void 0)throw new Error("date expressions require `now` to be supplied to the evaluator");let t=Be(e.now).tz(e.timeZone);if(!t.isValid())throw new Error(`invalid \`now\`: ${String(e.now)}`);return t},zi=(e,t)=>Object.entries(e).reduce((r,[o,n])=>Tt[o].interval===t?r+n*Tt[o].factor:r,0),Vp="YYYY-MM-DDTHH:mm:ss.SSS",Ct=(e,t,r,o)=>{let n=zi(t,"months"),i=zi(t,"days"),s=zi(t,"secs"),a=Be.utc(e.tz(o).format(Vp));return n&&(a=a.add(r*n,"month")),i&&(a=a.add(r*i,"day")),s&&(a=a.add(r*s*1e3,"millisecond")),Be.tz(a.format(Vp),o)},Kw=e=>"ago"in e||"ahead"in e,Un=(e,t)=>t===-1?{ago:e}:{ahead:e},se=e=>Kw(e)?"ago"in e?[e.ago,-1]:[e.ahead,1]:null,Po=e=>"this"in e||"last"in e||"next"in e,Hi=e=>"start"in e||"end"in e,Gn=e=>"this"in e?e.this:"last"in e?e.last:e.next,zw=e=>{let t=Gn(e);if(typeof t!="string"||!Dn.includes(t))throw new Error(`Unknown period unit '${String(t)}'`);return t},Hw=(e,t)=>e==="week"?t.weekStart==="sunday"?"week":"isoWeek":e,Ji=(e,t)=>{let r=$o(t),o=zw(e),n=o==="isoWeek"?"week":o,i=r;"last"in e?i=r.subtract(1,n):"next"in e&&(i=r.add(1,n));let s=Hw(o,t);return [i.startOf(s),i.endOf(s)]},Qi=(e,t)=>{let r=se(e);if(r)return Ct($o(t),...r,t.timeZone);if(Hi(e)){let o="start"in e?e.start:e.end,[n,i]=Ji(o,t);return "start"in e?n:i}throw new Error("a point operator requires a rolling or start/end edge expression, not a bare period")},Zr=(e,t,r)=>{if(Po(e)){let[o,n]=Ji(e,r),i=Wr({dateOperator:t})?.negates??t;return kn.includes(i)?o:n}return Qi(e,r)},Yr=(e,t)=>{if(Po(e))return Ji(e,t);let r=se(e);if(r){let o=$o(t),n=Ct(o,...r,t.timeZone);return r[1]===-1?[n,o]:[o,n]}throw Re("within")};var qp=["value","bind","path"],Xt=e=>typeof e.path=="string"&&e.path!=="",er=e=>Xt(e)?q(e.path):null,To=(e,t)=>{if(e.value!==void 0)return t.value(e.value);if(e.bind!==void 0)return t.bind(e.bind,e.bindOptional);if(Xt(e))return t.path(e.path);throw new Error("No value, path or bind specified")},Kn=e=>fe(e)&&(e.value!==void 0||Xt(e)||typeof e.bind=="string"),Zi=(e,t,r)=>{if(!r||!Object.hasOwn(r,e)){if(t===true)return null;throw new Error(`Missing binding for "${e}"`)}let o=r[e];return o===void 0?null:o},zn=(e,t,r)=>{if(t===true)return null;throw new Error(`Unresolved binding '${e}' \u2014 resolve bindings (bindRule / bindLens) before compiling with ${r}().`)},st=(e,t,r,o)=>To(e,{value:n=>n,bind:(n,i)=>Zi(n,i,o),path:n=>yp(n,t,r)??null});var Wp=e=>typeof e=="object"&&e!==null,Xi=e=>"if"in e||"then"in e||"else"in e,at=e=>"arrayOperator"in e||"aggregate"in e,Up=e=>[...["all","any"].flatMap(t=>Array.isArray(e[t])?e[t].map((r,o)=>({key:t,index:o,child:r,nested:false})):[]),...Xi(e)?["if","then","else"].flatMap(t=>e[t]!==void 0?[{key:t,child:e[t],nested:false}]:[]):[],...["condition","filter"].flatMap(t=>e[t]!==void 0?[{key:t,child:e[t],nested:true}]:[])],Ee=e=>"all"in e||"any"in e||Xi(e),Q=(e,t,r)=>{if(!Wp(e))return;let o=e,n=t(o,r),i=n===void 0?r:n;for(let{child:s,nested:a}of Up(o))a?i!==false&&Q(s,t,i):Q(s,t,r);},Gp=(e,t,r,o)=>{let n=false;return Q(e,(i,s)=>(!n&&t(i,s)&&(n=true),n?false:r?.(i,s)),o),n},Mt=(e,t,r)=>{if(!Wp(e))return e;let o=r,n={...e},i=t.rewrite?t.rewrite(n,o):n,s=Up(i),a=s.some(l=>l.nested)&&t.below?t.below(i,o):o;for(let l of ["all","any"])Array.isArray(i[l])&&(i[l]=[...i[l]]);for(let{key:l,index:f,child:d,nested:u}of s){if(u&&a===false)continue;let g=Mt(d,t,u?a:o);f===void 0?i[l]=g:i[l][f]=g;}let p=t.after?t.after(i,o):i;return p===i&&Jw(i,e)?e:p},Jw=(e,t)=>{let r=Object.keys(e);return r.length!==Object.keys(t).length?false:r.every(o=>{let[n,i]=[e[o],t[o]];return n===i?true:Array.isArray(n)&&Array.isArray(i)&&n.length===i.length&&n.every((s,a)=>s===i[a])})},Qw=(e,t)=>fe(e)?Object.fromEntries(Object.entries(e).map(([r,o])=>[r,Kn(o)?t(o,Zt(r)?"whole":"number"):o])):e,Yi=(e,t)=>{let r=U(e)?se(e):null;return r?Un(Qw(r[0],t),r[1]):e},Hn=(e,t)=>{let r="dateOperator"in e;if(!r&&!("operator"in e))return e;let o=e;if(r&&e.value!==void 0){let n=Array.isArray(e.value)?e.value.map(i=>Yi(i,t)):Yi(e.value,t);o={...o,value:n};}if(Kn(e.offset)){let n=r?{...e.offset,...e.offset.value!==void 0&&{value:Yi(e.offset.value,t)}}:e.offset;o={...o,offset:t(n,r?"shift":"number")};}return Kn(o)&&(o=t(o,"value")),o},No=e=>{let t=[];return Hn(e,(r,o)=>(t.push({source:r,role:o}),r)),t},es=e=>No(e).flatMap(({source:t,role:r})=>Xt(t)?[{ref:t.path,role:r}]:[]),Xr=e=>es(e).map(t=>t.ref),eo=e=>[...Array.isArray(e.orderBy)?e.orderBy.flatMap(t=>typeof t?.field=="string"?[t.field]:[]):[],...typeof e.aggregate?.field=="string"?[e.aggregate.field]:[]],Z=e=>{let t=new Set;return "all"in e&&t.add("all"),"any"in e&&t.add("any"),Xi(e)&&t.add("if"),"arrayOperator"in e&&t.add("array"),"dateOperator"in e&&t.add("date"),"aggregate"in e?t.add("aggregate"):"operator"in e&&t.add("field"),t.size===1?[...t][0]:null},D=e=>e.length===0?true:e.length===1?e[0]:{all:[...e]},lt=e=>e.length===0?false:e.length===1?e[0]:{any:[...e]};var Zw=e=>No(e).flatMap(({source:t})=>typeof t.bind=="string"?[t]:[]),Co=(e,{required:t=false}={})=>{let r=new Set;return Q(e,o=>{for(let n of Zw(o))(!t||n.bindOptional!==true)&&r.add(n.bind);}),[...r].sort()},ts=(e,t)=>{let r=o=>{if(typeof o.bind!="string"||!Object.hasOwn(t,o.bind))return o;let{bind:n,bindOptional:i,...s}=o;return {...s,value:Zi(n,true,t)}};return Mt(e,{rewrite:o=>Hn(Hn(o,r),r)})};var Kp=BigInt(Number.MAX_SAFE_INTEGER),Mo=e=>{if(e>Kp||e<-Kp)throw new RangeError(`BigInt ${e} is outside the safe integer range (\xB12^53); json-rules compares BigInt as Int.`);return Number(e)},rs=e=>typeof e=="bigint"?Mo(e):typeof e=="string"&&e.trim()!==""&&Number.isFinite(Number(e))?Number(e):e,Jn=(e,t)=>{if(e==null)return null;let r=rs(e);if(typeof r!="number"||!Number.isFinite(r))throw new Error(`${t} reads a number (got ${String(e)})`);return r},we=([e,t])=>t<e?[t,e]:[e,t],ve=(e,t)=>{if(!Array.isArray(e)||e.length!==2)throw new Error(`${t} operator requires an array of two values`);return [e[0],e[1]]},to=(e,t)=>{let r=ve(e,t);if(!r.every(Y))throw new Error(`${t} requires two ends that order \u2014 numbers, strings or dates (got ${JSON.stringify(e)})`);return r},Qn=e=>{if(!Array.isArray(e))throw new Error(`in / notIn requires a list (got ${JSON.stringify(e)})`);return e},pt=e=>{let t=Qn(e),r=t.filter(o=>o!==null);return {values:r,hasNull:r.length!==t.length}},Y=e=>typeof e=="string"||typeof e=="number"||e instanceof Date;var os=(e,t)=>typeof e=="number"&&Number.isFinite(e)&&e>=0&&(!Zt(t)||Number.isInteger(e))?null:`${t} must be a non-negative${Zt(t)?" whole":""} number (got ${String(e)})`,ns=(e,t,r)=>{let o=typeof e=="number"?e:Jn(t(e),e.path?`'${e.path}' (${r})`:r),n=o===null?null:os(o,r);if(n===null)return o;if(typeof e!="number"&&Xt(e))return null;throw new Error(n)},tr=(e,t)=>{let r={};for(let[o,n]of Object.entries(e)){if(n===void 0)continue;let i=ns(n,t,o);if(i===null)return null;r[o]=i;}return r},Ie=(e,t)=>{let r=se(e);if(!r)return e;let o=tr(r[0],t);return o?Un(o,r[1]):null};var rr=(e,t)=>{if(e==null)return null;if(Array.isArray(e)){let o=e.map(n=>rr(n,t));return o.some(n=>n===null)?null:o}let r=rs(e);if(typeof r!="number"||!Number.isFinite(r))throw new Error(`offset needs a numeric comparison value (got ${String(e)})`);return r+t},or=e=>Jn(e,"an offset"),ro=e=>{if(e==null)return null;let t=U(e)?se(e):null;if(!t)throw new Error(`a date offset reads { ago } or { ahead } (got ${JSON.stringify(e)})`);return t};Be.extend(Gw);Be.extend(Uw);Be.extend(Xw);Be.extend(Yw);var zp=(e,t,r,o={},n)=>{let i=Et(e.field,t),s=nr(o,g=>st(g,t,r,n)),a=s.timeZone;if(i==null)return k.includes(e.dateOperator)?true:e.error||`${e.field} has no value`;let p=Y(i)?_t(i,a):null;if(!p?.isValid())throw new Error(`${e.field} is not a valid date: ${String(i)}`);let l=g=>e.error||`${e.field} ${g}`;if(Ep.includes(e.dateOperator)){let g=is(st(e,t,r,n));if(g===null)return e.error||`${e.field} has no comparison value`;let y=g.includes(p.tz(a).day()),m=g.map(S=>Hr[S]).join(" or ");return e.dateOperator===$.dayIn?y||l(`must be on ${m}`):!y||l(`must not be on ${m}`)}let f=rS(e,t,r,s,a,n);if(f===null)return e.error||`${e.field} has no comparison value`;let[d,u=d]=f;switch(e.dateOperator){case $.before:return p.isBefore(d)||l(`must be before ${d.format()}`);case $.after:return p.isAfter(d)||l(`must be after ${d.format()}`);case $.onOrBefore:return p.isSameOrBefore(d)||l(`must be on or before ${d.format()}`);case $.onOrAfter:return p.isSameOrAfter(d)||l(`must be on or after ${d.format()}`);case $.within:return p.isSameOrAfter(d)&&p.isSameOrBefore(u)||l(`must be within ${d.format()} and ${u.format()}`);case $.notBefore:return p.isSameOrAfter(d)||l(`must not be before ${d.format()}`);case $.notAfter:return p.isSameOrBefore(d)||l(`must not be after ${d.format()}`);case $.notWithin:return p.isBefore(d)||p.isAfter(u)||l(`must not be within ${d.format()} and ${u.format()}`);case $.between:return p.isSameOrAfter(d)&&p.isSameOrBefore(u)||l(`must be between ${d.format()} and ${u.format()}`);case $.notBetween:return p.isBefore(d)||p.isAfter(u)||l(`must not be between ${d.format()} and ${u.format()}`);default:throw H(e.dateOperator,"date")}},rS=(e,t,r,o,n,i)=>{let s=e.dateOperator,a=m=>st(m,t,r,i),p=st(e,t,r,i);if(p==null)return null;let l=e.offset===void 0?void 0:ro(a(e.offset));if(l===null)return null;let f=m=>{if(l===void 0)return m;let S=tr(l[0],a);return S&&Ct(m,S,l[1],n)};if(vo.includes(s)){if(!U(p))throw Re(s);let m=Ie(p,a);return m&&Yr(m,o)}let d=(m,S)=>{if(m==null)return null;if(U(m)){let w=Ie(m,a);return w&&Qi(w,o)}let b=_t(m,n);if(!b.isValid())throw new Error(`Invalid ${S}: ${String(m)}`);return b};if(vp.includes(s)){let[m,S]=ve(p,s),b=d(m,"start date"),w=d(S,"end date");if(!b||!w)return null;let[c,x]=we([b,w]),O=f(c),A=f(x);return O&&A?[O,A]:null}if(Array.isArray(p))throw new Error(`${s} operator requires a single date value`);let u=m=>{let S=Ie(m,a);return S&&Zr(S,s,o)},g=U(p)?u(p):d(p,"comparison date");if(!g)return null;let y=f(g);return y&&[y]},nr=(e,t)=>{let r=e.timeZone;if(r===void 0||typeof r=="string")return {...e,timeZone:r??it};if(er(r))throw new Error(`timeZone is one per evaluation; read it from context, not '${r.path}'`);let o=t(r);if(o!=null&&typeof o!="string")throw new Error(`timeZone reads a zone name (got ${String(o)})`);return {...e,timeZone:o??it}},oS=/\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?\s*(?:[zZ]|[+-]\d{2}(?::?\d{2})?)$/,nS=e=>oS.test(e.trim())||/\b(?:GMT|UTC)\b/.test(e),_t=(e,t)=>{if(typeof e=="string"&&/^-?\d+$/.test(e.trim()))return Be(Number(e));if(typeof e=="string"&&!nS(e)){let r=Be(e);return r.isValid()?Be.tz(e,t):r}return typeof e=="string"?Be(new Date(e.trim())):Be(e)},Zn=(e,t)=>{let r=Y(e)?_t(e,t):Be(Number.NaN);if(!r.isValid())throw new Error(`Invalid date value: ${String(e)}`);return r.toDate()},is=e=>{if(e==null)return null;if(!Array.isArray(e))throw new Error("a weekday operator requires an array of day names");return e.map(t=>{let r=Hr.indexOf(String(t).toLowerCase());if(r===-1)throw new Error(`Unknown day name: ${String(t)}`);return r})};var sS=e=>e<=3?0:e<=6?1:2,aS=(e,t)=>{let{maxDistance:r,maxRatio:o}=e,n=[];return typeof r=="number"&&n.push(r),typeof o=="number"&&n.push(Math.floor(t*o)),n.length>0?Math.min(...n):sS(t)},Hp=e=>e.split(/[^a-z0-9\p{L}]+/u).filter(Boolean),lS=e=>/^\d+$/.test(e),pS=(e,t,r)=>e===t?true:Math.abs(e.length-t.length)>r?false:distance(e,t)<=r,Jp=(e,t,r={})=>{let o=t.trim().toLowerCase();if(!o)return true;let n=e.toLowerCase();if(n.includes(o))return true;let i=Hp(o);if(i.length===0)return false;let s=Hp(n);return s.length===0?false:i.every(a=>{let p=aS(r,a.length);return p===0||lS(a)?s.includes(a):s.some(l=>pS(a,l,p))})};var Lt=e=>{let t=e instanceof RegExp?e.source:e,r=e instanceof RegExp?e.flags:"";if(/[^i]/.test(r))throw new Error(`Refused pattern /${t}/${r}: only the 'i' flag is supported`);let o=r==="i";try{return {source:t,caseInsensitive:o,re:RE2JS.compile(t,o?RE2JS.CASE_INSENSITIVE:0)}}catch(n){throw new Error(`Refused pattern /${t}/: ${n.message}`)}},oo={d:"0-9",w:"0-9A-Za-z_",s:"\\t\\n\\f\\r "},Zp={alnum:"0-9A-Za-z",alpha:"A-Za-z",ascii:"\\u0000-\\u007f",blank:"\\t ",cntrl:"\\u0000-\\u001f\\u007f",digit:"0-9",graph:"!-~",lower:"a-z",print:" -~",punct:"!-/:-@\\[-`{-~",space:"\\t\\n\\v\\f\\r ",upper:"A-Z",word:"0-9A-Za-z_",xdigit:"0-9A-Fa-f"},fS=/[\\^$.|?*+()[\]{}]/,ss=255,Yp=e=>e<=65535?`\\u${e.toString(16).padStart(4,"0")}`:`\\U${e.toString(16).padStart(8,"0")}`,dS=e=>fS.test(e)?`\\${e}`:e,_o=e=>{let t=s=>{throw new Error(`Refused pattern /${e}/: ${s} has no Postgres form`)},r="",o=0,n=()=>{/^([*+?]|\{\d)/.test(e.slice(o))&&t("a quantified anchor");},i=s=>{let a=e[o+1];if(o+=2,Object.hasOwn(oo,a))return s?oo[a]:`[${oo[a]}]`;let p=a.toLowerCase();if(a!==p&&Object.hasOwn(oo,p))return s&&t(`a negated class \\${a} inside brackets`),`[^${oo[p]}]`;if(a==="p"||a==="P")return t("a Unicode class");if(a==="C")return t("\\C");if(a==="x"){let l=e[o]==="{",f=l?e.indexOf("}",o):o+2,d=e.slice(l?o+1:o,f);return o=l?f+1:f,Yp(Number.parseInt(d,16))}if(a>="0"&&a<="7"){let l=a;for(;l.length<3&&e[o]>="0"&&e[o]<="7";)l+=e[o++];return Yp(Number.parseInt(l,8))}if(!s&&(a==="b"||a==="B")){let l=`[${oo.w}]`;return a==="b"?`(?:(?<=${l})(?!${l})|(?<!${l})(?=${l}))`:`(?:(?<=${l})(?=${l})|(?<!${l})(?!${l}))`}if(!s&&(a==="z"||a==="A"))return n(),a==="z"?"\\Z":"\\A";if(a==="Q"){let l=e.indexOf("\\E",o),f=e.slice(o,l===-1?void 0:l);return o=l===-1?e.length:l+2,[...f].map(s?d=>/[\\\]^-]/.test(d)?`\\${d}`:d:dS).join("")}return `\\${a}`};for(;o<e.length;){let s=e[o];if(s==="\\")r+=i(false);else if(s===".")r+="[^\\n]",o++;else if(s==="("&&e[o+1]==="?"){let a=/^\(\?P?<[^>]+>/.exec(e.slice(o));a?(r+="(",o+=a[0].length):e[o+2]===":"?(r+="(?:",o+=3):t("a flag group");}else if(s==="{"){let a=/^\{(0|[1-9]\d*)(?:,(0|[1-9]\d*)?)?\}/.exec(e.slice(o));if(!a){r+="\\{",o++;continue}(Number(a[1])>ss||Number(a[2]??0)>ss)&&t(`a repeat count past ${ss}`),r+=a[0],o+=a[0].length;}else if(s==="["){r+="[",o++,e[o]==="^"&&(r+="^",o++),e[o]==="]"&&(r+="\\]",o++);let a=false,p=false,l=0;for(;o<e.length&&e[o]!=="]";){let f=p?null:/^\[:(\^?)([a-z]+):\]/.exec(e.slice(o)),d=!!f||/^\\[dswDSW]/.test(e.slice(o)),u=e[o]==="-"&&l>0&&e[o+1]!=="]"&&!p;f?(f[1]&&t(`a negated class [:^${f[2]}:]`),Object.hasOwn(Zp,f[2])||t(`the class [:${f[2]}:]`),r+=Zp[f[2]],o+=f[0].length):e[o]==="\\"?r+=i(true):u&&a?(r+="\\-",o++):(r+=e[o]==="["?"\\[":e[o],o++);let g=p;p=u&&!a,a=d||g,l++;}r+="]",o++;}else r+=s,o++,(s==="^"||s==="$")&&n();}return r},Xp=(e,t)=>{try{let{source:r}=Lt(e);return t==="toSql"&&_o(r),null}catch(r){return r.message}};var ef=e=>e==null||e===""||Array.isArray(e)&&e.length===0,ae=(e,t)=>{let r=t==null;return r&&(e.offset!==void 0||Rp.includes(e.operator))?true:he.includes(e.operator)?r||Array.isArray(t)&&t.some(o=>o==null):false},sr=e=>$t.includes(e.operator)||Pt.includes(e.operator)&&e.value===null&&e.path===void 0&&e.bind===void 0,Xn=(e,t)=>{let r=t.filter(n=>Array.isArray(n)||n===null),o=n=>r.map(i=>({...e,operator:n,value:i}));return e.operator===h.in?lt(o(h.equals)):D(o(h.notEquals))},ar=e=>typeof e=="string"?e.toLowerCase():Array.isArray(e)?e.map(ar):e,tf=e=>typeof e=="bigint"?Mo(e):Array.isArray(e)&&e.some(t=>typeof t=="bigint")?e.map(t=>typeof t=="bigint"?Mo(t):t):e,rf=(e,t,r)=>{if(e==null)return e;if(xe.includes(t)){if(typeof e!="string"||e.trim()==="")return e;if(t==="BigInt"&&/^-?\d+$/.test(e.trim()))return Mo(BigInt(e.trim()));let o=Number(e);return Number.isFinite(o)?o:e}switch(t){case "DateTime":{if(e instanceof Date)return e.getTime();if(typeof e=="number"||typeof e!="string")return e;let o=_t(e,r);return o.isValid()?o.valueOf():e}case "Boolean":return e==="true"?true:e==="false"?false:e;case "String":return typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"?String(e):e;default:return e}},ir=(e,t,r=it)=>t===void 0?e:Array.isArray(e)?e.map(o=>rf(o,t,r)):rf(e,t,r),Lo=(e,t,r,o,n={},i)=>{let s=i?i.value:Et(e.field,t)??null,a=e.coerceType??(s instanceof Date?"DateTime":void 0),p=a==="DateTime"?nr(n,c=>st(c,t,r,o)).timeZone:it,l=ir(tf(s),a,p),f=!$t.includes(e.operator),d=f?uS(ir(tf(st(e,t,r,o)??null),a,p),e,t,r,o):void 0;if(f&&ae(e,d))return k.includes(e.operator)&&l==null?true:e.error||`${e.field} has no comparison value`;let u=c=>e.error||`${e.field} ${c}${f?` ${d instanceof RegExp?String(d):JSON.stringify(d)}`:""}`,g=de(e.caseInsensitive),y=c=>g?ar(c):c,m=y(l),S=y(d),b=An(e.fuzzy),w=()=>b&&typeof l=="string"&&typeof d=="string"?Jp(l,d,b):Array.isArray(l)?m.some(c=>Jt(c,S)):cS(m,S);switch(e.operator){case h.equals:return Jt(m,S)||u("must equal");case h.notEquals:return !Jt(m,S)||u("must not equal");case h.lessThan:return Yn(l,d,"lt")||u("must be less than");case h.lessThanEquals:return Yn(l,d,"lte")||u("must be less than or equal to");case h.greaterThan:return Yn(l,d,"gt")||u("must be greater than");case h.greaterThanEquals:return Yn(l,d,"gte")||u("must be greater than or equal to");case h.in:return Qn(S).some(c=>Jt(c,m))||u("must be one of");case h.notIn:return !Qn(S).some(c=>Jt(c,m))||u("must not be one of");case h.contains:return w()||u("must contain");case h.notContains:return !w()||u("must not contain");case h.matches:return of(l)&&nf(d)&&Lt(d).re.test(l)||u("must match pattern");case h.notMatches:return !of(l)||!nf(d)||!Lt(d).re.test(l)||u("must not match pattern");case h.between:{let c=sf(d,e.operator);if(!lf(l,c))return u("must be between");let x=no(l),[O,A]=c;return x>=O&&x<=A||u("must be between")}case h.notBetween:{let c=sf(d,e.operator);if(!lf(l,c))return true;let x=no(l),[O,A]=c;return x<O||x>A||u("must not be between")}case h.isEmpty:return ef(l)||u("must be empty");case h.notEmpty:return !ef(l)||u("must not be empty");case h.exists:return l!=null||u("must exist");case h.notExists:return l==null||u("must not exist");case h.startsWith:return typeof m=="string"&&typeof S=="string"&&m.startsWith(S)||u("must start with");case h.endsWith:return typeof m=="string"&&typeof S=="string"&&m.endsWith(S)||u("must end with");case h.notStartsWith:return !(typeof m=="string"&&typeof S=="string"&&m.startsWith(S))||u("must not start with");case h.notEndsWith:return !(typeof m=="string"&&typeof S=="string"&&m.endsWith(S))||u("must not end with");default:throw new Error("Unknown operator")}},uS=(e,t,r,o,n)=>{if(t.offset===void 0)return e;let i=or(st(t.offset,r,o,n));return i===null?null:rr(e,i)},no=e=>e instanceof Date?e.getTime():e,Yn=(e,t,r)=>{if(!mS(e,t)||!Y(t))return false;let o=no(e),n=no(t);switch(r){case "lt":return o<n;case "lte":return o<=n;case "gt":return o>n;case "gte":return o>=n}},of=e=>typeof e=="string",nf=e=>typeof e=="string"||e instanceof RegExp,sf=(e,t)=>we(to(e,t).map(r=>no(r))),cS=(e,t)=>typeof e=="string"&&typeof t=="string"&&e.includes(t),mS=(e,t)=>Y(e)&&Y(t)&&af(e)===af(t),af=e=>e instanceof Date?"date":typeof e,lf=(e,t)=>Y(e)&&typeof no(e)==typeof t[0];var ce=e=>e.filter!==void 0||!!e.orderBy?.length||e.take!==void 0||e.skip!==void 0,gS=e=>{if(typeof e!="object"||e===null)return null;let t=e,r=Z(t);return r!=="field"&&r!=="date"||typeof t.field!="string"?null:{op:String(r==="date"?t.dateOperator:t.operator),field:t.field}},yS=e=>{if(e.filter!==void 0||e.skip!==void 0&&e.skip!==0||e.take!==1||e.orderBy?.length!==1)return null;let{field:t,dir:r}=e.orderBy[0];if(r!=="asc"&&r!=="desc")return null;let o=null;if(e.arrayOperator===E.all?o="all":(e.arrayOperator===E.any||e.arrayOperator===E.atLeast&&e.count===1)&&(o="any"),!o)return null;let n=gS(e.condition);if(!n||n.field!==t)return null;let i=kn.includes(n.op),s=Mp.includes(n.op);if(!i&&!s)return null;let a=r==="desc";if(!(o==="all"?a&&i||!a&&s:a&&s||!a&&i))return null;let{orderBy:l,take:f,skip:d,count:u,...g}=e;if(o==="any")return {...g,arrayOperator:E.any};let y={field:t,operator:h.exists};return {any:[{field:e.field,arrayOperator:E.empty},{all:[{field:e.field,arrayOperator:E.any,condition:y},{...g,arrayOperator:E.all,condition:{if:y,then:e.condition}}]}]}},as=(e,t,r)=>{let o=e;if(t.filter!==void 0&&r&&(o=o.filter(r)),t.orderBy?.length){let n=t.orderBy;o=[...o].sort((i,s)=>{for(let{field:a,dir:p}of n){let l=hS(J(i,a),J(s,a),p);if(l!==0)return l}return 0});}return t.skip!==void 0&&(o=o.slice(t.skip)),t.take!==void 0&&(o=o.slice(0,t.take)),o},hS=(e,t,r)=>{let o=e==null,n=t==null;if(o||n)return o===n?0:o?1:-1;let i=e instanceof Date?e.getTime():e,s=t instanceof Date?t.getTime():t,a=i<s?-1:i>s?1:0;return r==="asc"?a:-a},io=e=>{if(!ce(e))return e;let t=!!e.orderBy?.length||e.take!==void 0||e.skip!==void 0;if(e.filter!==void 0&&!t){let{filter:r,...o}=e;if("aggregate"in e)return {...o,condition:e.condition===void 0?r:D([r,e.condition])};switch(e.arrayOperator){case "all":return {...o,condition:{if:r,then:e.condition??true}};case "empty":return {...o,arrayOperator:"none",condition:r};case "notEmpty":return {...o,arrayOperator:"any",condition:r};default:return {...o,condition:e.condition===void 0?r:D([r,e.condition])}}}return "aggregate"in e||e.filter!==void 0?null:yS(e)};var wS=e=>Q(e,t=>{let r=Z(t);if(!(r==="all"||r==="any")){if(r==="array"&&!("field"in t))return false;throw new Error("check: when data is an array, every leaf must be a fieldless arrayOperator (composable with all/any)")}}),le=(e,t,r)=>(Array.isArray(t)&&wS(e),Ve(e,t,{...r,context:r?.context??t,scopes:[t]})),Ve=(e,t,r)=>{if(typeof e=="boolean")return e;let o=e;switch(Z(e)){case "all":return SS(o.all,t,r,o.error);case "any":return bS(o.any,t,r,o.error);case "if":return xS(o,t,r);case "array":return OS(o,r);case "aggregate":return RS(o,r);case "date":return zp(o,r.scopes,r.context,r,r.bindings);case "field":return Lo(o,r.scopes,r.context,r.bindings,r);default:throw Fe()}},ei=(e,t)=>({...e,scopes:[...e.scopes,t]}),SS=(e,t,r,o)=>{let n=[];for(let i of e){let s=Ve(i,t,r);s!==true&&(typeof s=="string"?n.push(s):n.push("false"));}return n.length?o||(n.length===1?n[0]:`All conditions must pass: ${n.join(" AND ")}`):true},bS=(e,t,r,o)=>{let n=[];for(let i of e){let s=Ve(i,t,r);if(s===true)return true;typeof s=="string"&&n.push(s);}return o||(n.length===1?n[0]:`At least one condition must pass: ${n.join(" OR ")}`)},xS=(e,t,r)=>Ve(e.if,t,r)===true?Ve(e.then,t,r):e.else!==void 0?Ve(e.else,t,r):true,pf=(e,t)=>{if(e==null)return [];if(!Array.isArray(e))throw new Error(`${t} must be an array`);return e},RS=(e,t)=>{let r=pf(Et(e.field,t.scopes),e.field),o=e.filter,n=as(r,e,o?g=>Ve(o,g,ei(t,g))===true:void 0),{mode:i,field:s}=e.aggregate;if(!De.includes(i))throw Nt(i);let a=e.condition,l=(a?n.filter(g=>Ve(a,g,ei(t,g))===true):n).flatMap((g,y)=>{let m=s?J(g,s):g;if(m==null)return [];if(typeof m!="number"||!Number.isFinite(m)){let S=`${e.field}[${y}]${s?`.${s}`:""}`;throw new Error(`${S} must be a finite number`)}return [m]}),f=l.reduce((g,y)=>g+y,0),d=i==="sum"||l.length===0?f:f/l.length,u={...e,field:`${e.field} ${i}`};return Lo(u,t.scopes,t.context,t.bindings,t,{value:d})},OS=(e,t)=>{let r=pf(e.field?Et(e.field,t.scopes):t.scopes[t.scopes.length-1],e.field||"(root)"),o=e.filter,n=as(r,e,o?d=>Ve(o,d,ei(t,d))===true:void 0),i=d=>e.error||`${e.field} ${d}`,s=e.condition,a=Pp.includes(e.arrayOperator);if(a&&s===void 0)throw Oe(e.arrayOperator);let p=e.count??0;if(Ln.includes(e.arrayOperator)&&e.count===void 0)throw Jr(e.arrayOperator);let l=0,f=0;if(a&&s!==void 0){if(n.length>0&&!Wi(n,j))return i("contains only primitive values; use 'in' or 'contains' instead of array operators on primitive arrays");let d=n.map(u=>Ve(s,u,ei(t,u)));l=d.filter(u=>u===true).length,f=d.filter(u=>typeof u=="string").length;}switch(e.arrayOperator){case E.empty:return !n.length||i("must be empty");case E.notEmpty:return !!n.length||i("must not be empty");case E.all:return l===n.length||i(`all elements must match (${f} failed)`);case E.any:return !!l||i("at least one element must match");case E.none:return !l||i(`no elements should match (${l} matched)`);case E.atLeast:return l>=p||i(`at least ${p} elements must match (${l} matched)`);case E.atMost:return l<=p||i(`at most ${p} elements must match (${l} matched)`);case E.exactly:return l===p||i(`exactly ${p} elements must match (${l} matched)`);default:throw H(e.arrayOperator,"array")}};var R=(e,t)=>e!==void 0&&Object.hasOwn(e,t)?e[t]:void 0,lr=(e,t,r)=>(Object.hasOwn(e,t)||(e[t]=r()),e[t]),M=(e,t)=>R(e?.models,t),Ae=(e,t,r)=>R(M(e,t)?.fields,r);var $e=({fieldMap:e,model:t})=>`${e}:${t}`,ff=(e,t)=>{let r=e.indexOf(":");return r===-1?{mapName:t,modelName:e}:{mapName:e.slice(0,r),modelName:e.slice(r+1)}};var df=(e,t,r,o)=>{let n={};for(let i of e){let s=R(i,t);if(s==null)continue;let a=String(s);if(Object.hasOwn(n,a)){let p=o==="one"?`endpoint[0] must be the "one" side of a oneToMany bridge \u2014 swap endpoints if '${r}' is the "many" side`:`oneToOne bridges require unique '${t}' on both endpoints`;throw new Error(`indexBridges: duplicate '${t}' value '${a}' on '${r}' \u2014 ${p}.`)}n[a]=i;}return n},ES=(e,t)=>{let r={};for(let o of e){let n=R(o,t);n!=null&&lr(r,String(n),()=>[]).push(o);}return r},uf=(e,t)=>{let r={};for(let o of e.bridges??[]){let[n,i]=o.endpoints,s=$e(n),a=$e(i),p=o.cardinality==="oneToMany"?"one":"oneToOne",l=(u,g)=>lr(lr(r,u,()=>({})),g,()=>({})),f=R(t,s);f&&(l(n.fieldMap,n.model)[n.on]=df(f,n.on,s,p));let d=R(t,a);d&&(o.cardinality==="oneToMany"?l(i.fieldMap,i.model)[i.on]=ES(d,i.on):l(i.fieldMap,i.model)[i.on]=df(d,i.on,a,"oneToOne"));}return r};var ti=e=>{let t={maps:structuredClone(e.maps),bridges:e.bridges?structuredClone(e.bridges):void 0};for(let r of e.bridges??[]){let[o,n]=r.endpoints,i=$e(o),s=$e(n),a=M(R(t.maps,o.fieldMap),o.model),p=M(R(t.maps,n.fieldMap),n.model);if(!a)throw new Error(`stitchFieldMaps: endpoint '${i}' not found`);if(!p)throw new Error(`stitchFieldMaps: endpoint '${s}' not found`);if(o.fieldMap===n.fieldMap&&o.model===n.model)throw new Error(`stitchFieldMaps: self-bridge '${i}' to itself is not supported`);if(!R(a.fields,o.on))throw new Error(`stitchFieldMaps: endpoint '${i}' has no field '${o.on}' for join`);if(!R(p.fields,n.on))throw new Error(`stitchFieldMaps: endpoint '${s}' has no field '${n.on}' for join`);if(R(a.fields,s))throw new Error(`stitchFieldMaps: bridge '${s}' already injected on '${i}'`);if(R(p.fields,i))throw new Error(`stitchFieldMaps: bridge '${i}' already injected on '${s}'`);let l=r.cardinality==="oneToMany";a.fields[s]={kind:"bridge",type:s,isList:l},p.fields[i]={kind:"bridge",type:i,isList:false};}return t};var Dt=e=>({ok:e.length===0,errors:e}),ko=(e,t)=>{if(!e.ok)throw new Error(`${t}:
|
|
1
|
+
import Be from'dayjs';import qw from'dayjs/plugin/isoWeek.js';import Ww from'dayjs/plugin/quarterOfYear.js';import Uw from'dayjs/plugin/timezone.js';import Gw from'dayjs/plugin/utc.js';import Yw from'dayjs/plugin/isSameOrAfter.js';import Xw from'dayjs/plugin/isSameOrBefore.js';import {distance}from'fastest-levenshtein';import {RE2JS}from're2js';var ki=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var yu=typeof global=="object"&&global&&global.Object===Object&&global,Jo=yu;var hu=typeof self=="object"&&self&&self.Object===Object&&self,wu=Jo||hu||Function("return this")(),W=wu;var Su=W.Symbol,re=Su;var Gs=Object.prototype,bu=Gs.hasOwnProperty,Ru=Gs.toString,So=re?re.toStringTag:void 0;function xu(e){var t=bu.call(e,So),r=e[So];try{e[So]=void 0;var o=!0;}catch{}var n=Ru.call(e);return o&&(t?e[So]=r:delete e[So]),n}var Ks=xu;var Ou=Object.prototype,Eu=Ou.toString;function vu(e){return Eu.call(e)}var zs=vu;var Au="[object Null]",$u="[object Undefined]",Hs=re?re.toStringTag:void 0;function Pu(e){return e==null?e===void 0?$u:Au:Hs&&Hs in Object(e)?Ks(e):zs(e)}var pe=Pu;function Tu(e){return e!=null&&typeof e=="object"}var K=Tu;var Nu="[object Symbol]";function Cu(e){return typeof e=="symbol"||K(e)&&pe(e)==Nu}var hr=Cu;function Mu(e,t){for(var r=-1,o=e==null?0:e.length,n=Array(o);++r<o;)n[r]=t(e[r],r,e);return n}var Js=Mu;var _u=Array.isArray,F=_u;var Qs=re?re.prototype:void 0,Zs=Qs?Qs.toString:void 0;function Ys(e){if(typeof e=="string")return e;if(F(e))return Js(e,Ys)+"";if(hr(e))return Zs?Zs.call(e):"";var t=e+"";return t=="0"&&1/e==-Infinity?"-0":t}var Xs=Ys;function Lu(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var j=Lu;function Du(e){return e}var wr=Du;var Fu="[object AsyncFunction]",ju="[object Function]",Iu="[object GeneratorFunction]",Bu="[object Proxy]";function Vu(e){if(!j(e))return false;var t=pe(e);return t==ju||t==Iu||t==Fu||t==Bu}var Sr=Vu;var qu=W["__core-js_shared__"],Qo=qu;var ea=(function(){var e=/[^.]+$/.exec(Qo&&Qo.keys&&Qo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})();function Wu(e){return !!ea&&ea in e}var ta=Wu;var Uu=Function.prototype,Gu=Uu.toString;function Ku(e){if(e!=null){try{return Gu.call(e)}catch{}try{return e+""}catch{}}return ""}var Ze=Ku;var zu=/[\\^$.*+?()[\]{}|]/g,Hu=/^\[object .+?Constructor\]$/,Ju=Function.prototype,Qu=Object.prototype,Zu=Ju.toString,Yu=Qu.hasOwnProperty,Xu=RegExp("^"+Zu.call(Yu).replace(zu,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ec(e){if(!j(e)||ta(e))return false;var t=Sr(e)?Xu:Hu;return t.test(Ze(e))}var ra=ec;function tc(e,t){return e?.[t]}var oa=tc;function rc(e,t){var r=oa(e,t);return ra(r)?r:void 0}var ie=rc;var oc=ie(W,"WeakMap"),Zo=oc;var na=Object.create,nc=(function(){function e(){}return function(t){if(!j(t))return {};if(na)return na(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}})(),ia=nc;function ic(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}var sa=ic;function sc(e,t){var r=-1,o=e.length;for(t||(t=Array(o));++r<o;)t[r]=e[r];return t}var Yo=sc;var ac=800,lc=16,pc=Date.now;function fc(e){var t=0,r=0;return function(){var o=pc(),n=lc-(o-r);if(r=o,n>0){if(++t>=ac)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var aa=fc;function dc(e){return function(){return e}}var la=dc;var uc=(function(){try{var e=ie(Object,"defineProperty");return e({},"",{}),e}catch{}})(),br=uc;var cc=br?function(e,t){return br(e,"toString",{configurable:true,enumerable:false,value:la(t),writable:true})}:wr,pa=cc;var mc=aa(pa),fa=mc;function gc(e,t){for(var r=-1,o=e==null?0:e.length;++r<o&&t(e[r],r,e)!==false;);return e}var da=gc;var yc=9007199254740991,hc=/^(?:0|[1-9]\d*)$/;function wc(e,t){var r=typeof e;return t=t??yc,!!t&&(r=="number"||r!="symbol"&&hc.test(e))&&e>-1&&e%1==0&&e<t}var St=wc;function Sc(e,t,r){t=="__proto__"&&br?br(e,t,{configurable:true,enumerable:true,value:r,writable:true}):e[t]=r;}var Rr=Sc;function bc(e,t){return e===t||e!==e&&t!==t}var Te=bc;var Rc=Object.prototype,xc=Rc.hasOwnProperty;function Oc(e,t,r){var o=e[t];(!(xc.call(e,t)&&Te(o,r))||r===void 0&&!(t in e))&&Rr(e,t,r);}var xr=Oc;function Ec(e,t,r,o){var n=!r;r||(r={});for(var i=-1,s=t.length;++i<s;){var a=t[i],p=o?o(r[a],e[a],a,r,e):void 0;p===void 0&&(p=e[a]),n?Rr(r,a,p):xr(r,a,p);}return r}var Ne=Ec;var ua=Math.max;function vc(e,t,r){return t=ua(t===void 0?e.length-1:t,0),function(){for(var o=arguments,n=-1,i=ua(o.length-t,0),s=Array(i);++n<i;)s[n]=o[t+n];n=-1;for(var a=Array(t+1);++n<t;)a[n]=o[n];return a[t]=r(s),sa(e,this,a)}}var ca=vc;function Ac(e,t){return fa(ca(e,t,wr),e+"")}var ma=Ac;var $c=9007199254740991;function Pc(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=$c}var Or=Pc;function Tc(e){return e!=null&&Or(e.length)&&!Sr(e)}var Ce=Tc;function Nc(e,t,r){if(!j(r))return false;var o=typeof t;return (o=="number"?Ce(r)&&St(t,r.length):o=="string"&&t in r)?Te(r[t],e):false}var Xo=Nc;function Cc(e){return ma(function(t,r){var o=-1,n=r.length,i=n>1?r[n-1]:void 0,s=n>2?r[2]:void 0;for(i=e.length>3&&typeof i=="function"?(n--,i):void 0,s&&Xo(r[0],r[1],s)&&(i=n<3?void 0:i,n=1),t=Object(t);++o<n;){var a=r[o];a&&e(t,a,o,i);}return t})}var ga=Cc;var Mc=Object.prototype;function _c(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||Mc;return e===r}var Er=_c;function kc(e,t){for(var r=-1,o=Array(e);++r<e;)o[r]=t(r);return o}var ya=kc;var Lc="[object Arguments]";function Dc(e){return K(e)&&pe(e)==Lc}var Li=Dc;var ha=Object.prototype,Fc=ha.hasOwnProperty,jc=ha.propertyIsEnumerable,Ic=Li((function(){return arguments})())?Li:function(e){return K(e)&&Fc.call(e,"callee")&&!jc.call(e,"callee")},Kt=Ic;function Bc(){return false}var wa=Bc;var Ra=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Sa=Ra&&typeof module=="object"&&module&&!module.nodeType&&module,Vc=Sa&&Sa.exports===Ra,ba=Vc?W.Buffer:void 0,qc=ba?ba.isBuffer:void 0,Wc=qc||wa,Ye=Wc;var Uc="[object Arguments]",Gc="[object Array]",Kc="[object Boolean]",zc="[object Date]",Hc="[object Error]",Jc="[object Function]",Qc="[object Map]",Zc="[object Number]",Yc="[object Object]",Xc="[object RegExp]",em="[object Set]",tm="[object String]",rm="[object WeakMap]",om="[object ArrayBuffer]",nm="[object DataView]",im="[object Float32Array]",sm="[object Float64Array]",am="[object Int8Array]",lm="[object Int16Array]",pm="[object Int32Array]",fm="[object Uint8Array]",dm="[object Uint8ClampedArray]",um="[object Uint16Array]",cm="[object Uint32Array]",k={};k[im]=k[sm]=k[am]=k[lm]=k[pm]=k[fm]=k[dm]=k[um]=k[cm]=true;k[Uc]=k[Gc]=k[om]=k[Kc]=k[nm]=k[zc]=k[Hc]=k[Jc]=k[Qc]=k[Zc]=k[Yc]=k[Xc]=k[em]=k[tm]=k[rm]=false;function mm(e){return K(e)&&Or(e.length)&&!!k[pe(e)]}var xa=mm;function gm(e){return function(t){return e(t)}}var vr=gm;var Oa=typeof exports=="object"&&exports&&!exports.nodeType&&exports,bo=Oa&&typeof module=="object"&&module&&!module.nodeType&&module,ym=bo&&bo.exports===Oa,Di=ym&&Jo.process,hm=(function(){try{var e=bo&&bo.require&&bo.require("util").types;return e||Di&&Di.binding&&Di.binding("util")}catch{}})(),Xe=hm;var Ea=Xe&&Xe.isTypedArray,wm=Ea?vr(Ea):xa,Ar=wm;var Sm=Object.prototype,bm=Sm.hasOwnProperty;function Rm(e,t){var r=F(e),o=!r&&Kt(e),n=!r&&!o&&Ye(e),i=!r&&!o&&!n&&Ar(e),s=r||o||n||i,a=s?ya(e.length,String):[],p=a.length;for(var l in e)(t||bm.call(e,l))&&!(s&&(l=="length"||n&&(l=="offset"||l=="parent")||i&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||St(l,p)))&&a.push(l);return a}var en=Rm;function xm(e,t){return function(r){return e(t(r))}}var tn=xm;var Om=tn(Object.keys,Object),va=Om;var Em=Object.prototype,vm=Em.hasOwnProperty;function Am(e){if(!Er(e))return va(e);var t=[];for(var r in Object(e))vm.call(e,r)&&r!="constructor"&&t.push(r);return t}var Aa=Am;function $m(e){return Ce(e)?en(e):Aa(e)}var Me=$m;function Pm(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}var $a=Pm;var Tm=Object.prototype,Nm=Tm.hasOwnProperty;function Cm(e){if(!j(e))return $a(e);var t=Er(e),r=[];for(var o in e)o=="constructor"&&(t||!Nm.call(e,o))||r.push(o);return r}var Pa=Cm;function Mm(e){return Ce(e)?en(e,true):Pa(e)}var _e=Mm;var _m=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,km=/^\w*$/;function Lm(e,t){if(F(e))return false;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||hr(e)?true:km.test(e)||!_m.test(e)||t!=null&&e in Object(t)}var $r=Lm;var Dm=ie(Object,"create"),et=Dm;function Fm(){this.__data__=et?et(null):{},this.size=0;}var Ta=Fm;function jm(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var Na=jm;var Im="__lodash_hash_undefined__",Bm=Object.prototype,Vm=Bm.hasOwnProperty;function qm(e){var t=this.__data__;if(et){var r=t[e];return r===Im?void 0:r}return Vm.call(t,e)?t[e]:void 0}var Ca=qm;var Wm=Object.prototype,Um=Wm.hasOwnProperty;function Gm(e){var t=this.__data__;return et?t[e]!==void 0:Um.call(t,e)}var Ma=Gm;var Km="__lodash_hash_undefined__";function zm(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=et&&t===void 0?Km:t,this}var _a=zm;function Pr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var o=e[t];this.set(o[0],o[1]);}}Pr.prototype.clear=Ta;Pr.prototype.delete=Na;Pr.prototype.get=Ca;Pr.prototype.has=Ma;Pr.prototype.set=_a;var Fi=Pr;function Hm(){this.__data__=[],this.size=0;}var ka=Hm;function Jm(e,t){for(var r=e.length;r--;)if(Te(e[r][0],t))return r;return -1}var bt=Jm;var Qm=Array.prototype,Zm=Qm.splice;function Ym(e){var t=this.__data__,r=bt(t,e);if(r<0)return false;var o=t.length-1;return r==o?t.pop():Zm.call(t,r,1),--this.size,true}var La=Ym;function Xm(e){var t=this.__data__,r=bt(t,e);return r<0?void 0:t[r][1]}var Da=Xm;function eg(e){return bt(this.__data__,e)>-1}var Fa=eg;function tg(e,t){var r=this.__data__,o=bt(r,e);return o<0?(++this.size,r.push([e,t])):r[o][1]=t,this}var ja=tg;function Tr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var o=e[t];this.set(o[0],o[1]);}}Tr.prototype.clear=ka;Tr.prototype.delete=La;Tr.prototype.get=Da;Tr.prototype.has=Fa;Tr.prototype.set=ja;var Rt=Tr;var rg=ie(W,"Map"),xt=rg;function og(){this.size=0,this.__data__={hash:new Fi,map:new(xt||Rt),string:new Fi};}var Ia=og;function ng(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var Ba=ng;function ig(e,t){var r=e.__data__;return Ba(t)?r[typeof t=="string"?"string":"hash"]:r.map}var Ot=ig;function sg(e){var t=Ot(this,e).delete(e);return this.size-=t?1:0,t}var Va=sg;function ag(e){return Ot(this,e).get(e)}var qa=ag;function lg(e){return Ot(this,e).has(e)}var Wa=lg;function pg(e,t){var r=Ot(this,e),o=r.size;return r.set(e,t),this.size+=r.size==o?0:1,this}var Ua=pg;function Nr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var o=e[t];this.set(o[0],o[1]);}}Nr.prototype.clear=Ia;Nr.prototype.delete=Va;Nr.prototype.get=qa;Nr.prototype.has=Wa;Nr.prototype.set=Ua;var zt=Nr;var fg="Expected a function";function ji(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(fg);var r=function(){var o=arguments,n=t?t.apply(this,o):o[0],i=r.cache;if(i.has(n))return i.get(n);var s=e.apply(this,o);return r.cache=i.set(n,s)||i,s};return r.cache=new(ji.Cache||zt),r}ji.Cache=zt;var Ga=ji;var dg=500;function ug(e){var t=Ga(e,function(o){return r.size===dg&&r.clear(),o}),r=t.cache;return t}var Ka=ug;var cg=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,mg=/\\(\\)?/g,gg=Ka(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(cg,function(r,o,n,i){t.push(n?i.replace(mg,"$1"):o||r);}),t}),za=gg;function yg(e){return e==null?"":Xs(e)}var Ha=yg;function hg(e,t){return F(e)?e:$r(e,t)?[e]:za(Ha(e))}var Cr=hg;function Sg(e){if(typeof e=="string"||hr(e))return e;var t=e+"";return t=="0"&&1/e==-Infinity?"-0":t}var ke=Sg;function bg(e,t){t=Cr(t,e);for(var r=0,o=t.length;e!=null&&r<o;)e=e[ke(t[r++])];return r&&r==o?e:void 0}var rn=bg;function Rg(e,t,r){var o=e==null?void 0:rn(e,t);return o===void 0?r:o}var Ja=Rg;function xg(e,t){for(var r=-1,o=t.length,n=e.length;++r<o;)e[n+r]=t[r];return e}var on=xg;var Og=tn(Object.getPrototypeOf,Object),Mr=Og;var Eg="[object Object]",vg=Function.prototype,Ag=Object.prototype,Qa=vg.toString,$g=Ag.hasOwnProperty,Pg=Qa.call(Object);function Tg(e){if(!K(e)||pe(e)!=Eg)return false;var t=Mr(e);if(t===null)return true;var r=$g.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Qa.call(r)==Pg}var fe=Tg;function Ng(){this.__data__=new Rt,this.size=0;}var Za=Ng;function Cg(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var Ya=Cg;function Mg(e){return this.__data__.get(e)}var Xa=Mg;function _g(e){return this.__data__.has(e)}var el=_g;var kg=200;function Lg(e,t){var r=this.__data__;if(r instanceof Rt){var o=r.__data__;if(!xt||o.length<kg-1)return o.push([e,t]),this.size=++r.size,this;r=this.__data__=new zt(o);}return r.set(e,t),this.size=r.size,this}var tl=Lg;function _r(e){var t=this.__data__=new Rt(e);this.size=t.size;}_r.prototype.clear=Za;_r.prototype.delete=Ya;_r.prototype.get=Xa;_r.prototype.has=el;_r.prototype.set=tl;var Le=_r;function Dg(e,t){return e&&Ne(t,Me(t),e)}var rl=Dg;function Fg(e,t){return e&&Ne(t,_e(t),e)}var ol=Fg;var al=typeof exports=="object"&&exports&&!exports.nodeType&&exports,nl=al&&typeof module=="object"&&module&&!module.nodeType&&module,jg=nl&&nl.exports===al,il=jg?W.Buffer:void 0,sl=il?il.allocUnsafe:void 0;function Ig(e,t){if(t)return e.slice();var r=e.length,o=sl?sl(r):new e.constructor(r);return e.copy(o),o}var nn=Ig;function Bg(e,t){for(var r=-1,o=e==null?0:e.length,n=0,i=[];++r<o;){var s=e[r];t(s,r,e)&&(i[n++]=s);}return i}var ll=Bg;function Vg(){return []}var sn=Vg;var qg=Object.prototype,Wg=qg.propertyIsEnumerable,pl=Object.getOwnPropertySymbols,Ug=pl?function(e){return e==null?[]:(e=Object(e),ll(pl(e),function(t){return Wg.call(e,t)}))}:sn,kr=Ug;function Gg(e,t){return Ne(e,kr(e),t)}var fl=Gg;var Kg=Object.getOwnPropertySymbols,zg=Kg?function(e){for(var t=[];e;)on(t,kr(e)),e=Mr(e);return t}:sn,an=zg;function Hg(e,t){return Ne(e,an(e),t)}var dl=Hg;function Jg(e,t,r){var o=t(e);return F(e)?o:on(o,r(e))}var ln=Jg;function Qg(e){return ln(e,Me,kr)}var Ro=Qg;function Zg(e){return ln(e,_e,an)}var ul=Zg;var Yg=ie(W,"DataView"),pn=Yg;var Xg=ie(W,"Promise"),fn=Xg;var ey=ie(W,"Set"),dn=ey;var cl="[object Map]",ty="[object Object]",ml="[object Promise]",gl="[object Set]",yl="[object WeakMap]",hl="[object DataView]",ry=Ze(pn),oy=Ze(xt),ny=Ze(fn),iy=Ze(dn),sy=Ze(Zo),Ht=pe;(pn&&Ht(new pn(new ArrayBuffer(1)))!=hl||xt&&Ht(new xt)!=cl||fn&&Ht(fn.resolve())!=ml||dn&&Ht(new dn)!=gl||Zo&&Ht(new Zo)!=yl)&&(Ht=function(e){var t=pe(e),r=t==ty?e.constructor:void 0,o=r?Ze(r):"";if(o)switch(o){case ry:return hl;case oy:return cl;case ny:return ml;case iy:return gl;case sy:return yl}return t});var tt=Ht;var ay=Object.prototype,ly=ay.hasOwnProperty;function py(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&ly.call(e,"index")&&(r.index=e.index,r.input=e.input),r}var wl=py;var fy=W.Uint8Array,Lr=fy;function dy(e){var t=new e.constructor(e.byteLength);return new Lr(t).set(new Lr(e)),t}var Dr=dy;function uy(e,t){var r=t?Dr(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}var Sl=uy;var cy=/\w*$/;function my(e){var t=new e.constructor(e.source,cy.exec(e));return t.lastIndex=e.lastIndex,t}var bl=my;var Rl=re?re.prototype:void 0,xl=Rl?Rl.valueOf:void 0;function gy(e){return xl?Object(xl.call(e)):{}}var Ol=gy;function yy(e,t){var r=t?Dr(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}var un=yy;var hy="[object Boolean]",wy="[object Date]",Sy="[object Map]",by="[object Number]",Ry="[object RegExp]",xy="[object Set]",Oy="[object String]",Ey="[object Symbol]",vy="[object ArrayBuffer]",Ay="[object DataView]",$y="[object Float32Array]",Py="[object Float64Array]",Ty="[object Int8Array]",Ny="[object Int16Array]",Cy="[object Int32Array]",My="[object Uint8Array]",_y="[object Uint8ClampedArray]",ky="[object Uint16Array]",Ly="[object Uint32Array]";function Dy(e,t,r){var o=e.constructor;switch(t){case vy:return Dr(e);case hy:case wy:return new o(+e);case Ay:return Sl(e,r);case $y:case Py:case Ty:case Ny:case Cy:case My:case _y:case ky:case Ly:return un(e,r);case Sy:return new o;case by:case Oy:return new o(e);case Ry:return bl(e);case xy:return new o;case Ey:return Ol(e)}}var El=Dy;function Fy(e){return typeof e.constructor=="function"&&!Er(e)?ia(Mr(e)):{}}var cn=Fy;var jy="[object Map]";function Iy(e){return K(e)&&tt(e)==jy}var vl=Iy;var Al=Xe&&Xe.isMap,By=Al?vr(Al):vl,$l=By;var Vy="[object Set]";function qy(e){return K(e)&&tt(e)==Vy}var Pl=qy;var Tl=Xe&&Xe.isSet,Wy=Tl?vr(Tl):Pl,Nl=Wy;var Uy=1,Gy=2,Ky=4,Cl="[object Arguments]",zy="[object Array]",Hy="[object Boolean]",Jy="[object Date]",Qy="[object Error]",Ml="[object Function]",Zy="[object GeneratorFunction]",Yy="[object Map]",Xy="[object Number]",_l="[object Object]",eh="[object RegExp]",th="[object Set]",rh="[object String]",oh="[object Symbol]",nh="[object WeakMap]",ih="[object ArrayBuffer]",sh="[object DataView]",ah="[object Float32Array]",lh="[object Float64Array]",ph="[object Int8Array]",fh="[object Int16Array]",dh="[object Int32Array]",uh="[object Uint8Array]",ch="[object Uint8ClampedArray]",mh="[object Uint16Array]",gh="[object Uint32Array]",_={};_[Cl]=_[zy]=_[ih]=_[sh]=_[Hy]=_[Jy]=_[ah]=_[lh]=_[ph]=_[fh]=_[dh]=_[Yy]=_[Xy]=_[_l]=_[eh]=_[th]=_[rh]=_[oh]=_[uh]=_[ch]=_[mh]=_[gh]=true;_[Qy]=_[Ml]=_[nh]=false;function mn(e,t,r,o,n,i){var s,a=t&Uy,p=t&Gy,l=t&Ky;if(r&&(s=n?r(e,o,n,i):r(e)),s!==void 0)return s;if(!j(e))return e;var f=F(e);if(f){if(s=wl(e),!a)return Yo(e,s)}else {var d=tt(e),u=d==Ml||d==Zy;if(Ye(e))return nn(e,a);if(d==_l||d==Cl||u&&!n){if(s=p||u?{}:cn(e),!a)return p?dl(e,ol(s,e)):fl(e,rl(s,e))}else {if(!_[d])return n?e:{};s=El(e,d,a);}}i||(i=new Le);var g=i.get(e);if(g)return g;i.set(e,s),Nl(e)?e.forEach(function(S){s.add(mn(S,t,r,S,e,i));}):$l(e)&&e.forEach(function(S,b){s.set(b,mn(S,t,r,b,e,i));});var y=l?p?ul:Ro:p?_e:Me,m=f?void 0:y(e);return da(m||e,function(S,b){m&&(b=S,S=e[b]),xr(s,b,mn(S,t,r,b,e,i));}),s}var gn=mn;var yh=1,hh=4;function wh(e){return gn(e,yh|hh)}var yn=wh;var Sh=1,bh=4;function Rh(e,t){return t=typeof t=="function"?t:void 0,gn(e,Sh|bh,t)}var Ii=Rh;var xh="__lodash_hash_undefined__";function Oh(e){return this.__data__.set(e,xh),this}var kl=Oh;function Eh(e){return this.__data__.has(e)}var Ll=Eh;function hn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new zt;++t<r;)this.add(e[t]);}hn.prototype.add=hn.prototype.push=kl;hn.prototype.has=Ll;var Dl=hn;function vh(e,t){for(var r=-1,o=e==null?0:e.length;++r<o;)if(t(e[r],r,e))return true;return false}var wn=vh;function Ah(e,t){return e.has(t)}var Fl=Ah;var $h=1,Ph=2;function Th(e,t,r,o,n,i){var s=r&$h,a=e.length,p=t.length;if(a!=p&&!(s&&p>a))return false;var l=i.get(e),f=i.get(t);if(l&&f)return l==t&&f==e;var d=-1,u=true,g=r&Ph?new Dl:void 0;for(i.set(e,t),i.set(t,e);++d<a;){var y=e[d],m=t[d];if(o)var S=s?o(m,y,d,t,e,i):o(y,m,d,e,t,i);if(S!==void 0){if(S)continue;u=false;break}if(g){if(!wn(t,function(b,w){if(!Fl(g,w)&&(y===b||n(y,b,r,o,i)))return g.push(w)})){u=false;break}}else if(!(y===m||n(y,m,r,o,i))){u=false;break}}return i.delete(e),i.delete(t),u}var Sn=Th;function Nh(e){var t=-1,r=Array(e.size);return e.forEach(function(o,n){r[++t]=[n,o];}),r}var jl=Nh;function Ch(e){var t=-1,r=Array(e.size);return e.forEach(function(o){r[++t]=o;}),r}var Il=Ch;var Mh=1,_h=2,kh="[object Boolean]",Lh="[object Date]",Dh="[object Error]",Fh="[object Map]",jh="[object Number]",Ih="[object RegExp]",Bh="[object Set]",Vh="[object String]",qh="[object Symbol]",Wh="[object ArrayBuffer]",Uh="[object DataView]",Bl=re?re.prototype:void 0,Bi=Bl?Bl.valueOf:void 0;function Gh(e,t,r,o,n,i,s){switch(r){case Uh:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return false;e=e.buffer,t=t.buffer;case Wh:return !(e.byteLength!=t.byteLength||!i(new Lr(e),new Lr(t)));case kh:case Lh:case jh:return Te(+e,+t);case Dh:return e.name==t.name&&e.message==t.message;case Ih:case Vh:return e==t+"";case Fh:var a=jl;case Bh:var p=o&Mh;if(a||(a=Il),e.size!=t.size&&!p)return false;var l=s.get(e);if(l)return l==t;o|=_h,s.set(e,t);var f=Sn(a(e),a(t),o,n,i,s);return s.delete(e),f;case qh:if(Bi)return Bi.call(e)==Bi.call(t)}return false}var Vl=Gh;var Kh=1,zh=Object.prototype,Hh=zh.hasOwnProperty;function Jh(e,t,r,o,n,i){var s=r&Kh,a=Ro(e),p=a.length,l=Ro(t),f=l.length;if(p!=f&&!s)return false;for(var d=p;d--;){var u=a[d];if(!(s?u in t:Hh.call(t,u)))return false}var g=i.get(e),y=i.get(t);if(g&&y)return g==t&&y==e;var m=true;i.set(e,t),i.set(t,e);for(var S=s;++d<p;){u=a[d];var b=e[u],w=t[u];if(o)var c=s?o(w,b,u,t,e,i):o(b,w,u,e,t,i);if(!(c===void 0?b===w||n(b,w,r,o,i):c)){m=false;break}S||(S=u=="constructor");}if(m&&!S){var R=e.constructor,O=t.constructor;R!=O&&"constructor"in e&&"constructor"in t&&!(typeof R=="function"&&R instanceof R&&typeof O=="function"&&O instanceof O)&&(m=false);}return i.delete(e),i.delete(t),m}var ql=Jh;var Qh=1,Wl="[object Arguments]",Ul="[object Array]",bn="[object Object]",Zh=Object.prototype,Gl=Zh.hasOwnProperty;function Yh(e,t,r,o,n,i){var s=F(e),a=F(t),p=s?Ul:tt(e),l=a?Ul:tt(t);p=p==Wl?bn:p,l=l==Wl?bn:l;var f=p==bn,d=l==bn,u=p==l;if(u&&Ye(e)){if(!Ye(t))return false;s=true,f=false;}if(u&&!f)return i||(i=new Le),s||Ar(e)?Sn(e,t,r,o,n,i):Vl(e,t,p,r,o,n,i);if(!(r&Qh)){var g=f&&Gl.call(e,"__wrapped__"),y=d&&Gl.call(t,"__wrapped__");if(g||y){var m=g?e.value():e,S=y?t.value():t;return i||(i=new Le),n(m,S,r,o,i)}}return u?(i||(i=new Le),ql(e,t,r,o,n,i)):false}var Kl=Yh;function zl(e,t,r,o,n){return e===t?true:e==null||t==null||!K(e)&&!K(t)?e!==e&&t!==t:Kl(e,t,r,o,zl,n)}var Fr=zl;var Xh=1,ew=2;function tw(e,t,r,o){var n=r.length,i=n,s=!o;if(e==null)return !i;for(e=Object(e);n--;){var a=r[n];if(s&&a[2]?a[1]!==e[a[0]]:!(a[0]in e))return false}for(;++n<i;){a=r[n];var p=a[0],l=e[p],f=a[1];if(s&&a[2]){if(l===void 0&&!(p in e))return false}else {var d=new Le;if(o)var u=o(l,f,p,e,t,d);if(!(u===void 0?Fr(f,l,Xh|ew,o,d):u))return false}}return true}var Hl=tw;function rw(e){return e===e&&!j(e)}var Rn=rw;function ow(e){for(var t=Me(e),r=t.length;r--;){var o=t[r],n=e[o];t[r]=[o,n,Rn(n)];}return t}var Jl=ow;function nw(e,t){return function(r){return r==null?false:r[e]===t&&(t!==void 0||e in Object(r))}}var xn=nw;function iw(e){var t=Jl(e);return t.length==1&&t[0][2]?xn(t[0][0],t[0][1]):function(r){return r===e||Hl(r,e,t)}}var Ql=iw;function sw(e,t){return e!=null&&t in Object(e)}var Zl=sw;function aw(e,t,r){t=Cr(t,e);for(var o=-1,n=t.length,i=false;++o<n;){var s=ke(t[o]);if(!(i=e!=null&&r(e,s)))break;e=e[s];}return i||++o!=n?i:(n=e==null?0:e.length,!!n&&Or(n)&&St(s,n)&&(F(e)||Kt(e)))}var Yl=aw;function lw(e,t){return e!=null&&Yl(e,t,Zl)}var Xl=lw;var pw=1,fw=2;function dw(e,t){return $r(e)&&Rn(t)?xn(ke(e),t):function(r){var o=Ja(r,e);return o===void 0&&o===t?Xl(r,e):Fr(t,o,pw|fw)}}var ep=dw;function uw(e){return function(t){return t?.[e]}}var tp=uw;function cw(e){return function(t){return rn(t,e)}}var rp=cw;function mw(e){return $r(e)?tp(ke(e)):rp(e)}var op=mw;function gw(e){return typeof e=="function"?e:e==null?wr:typeof e=="object"?F(e)?ep(e[0],e[1]):Ql(e):op(e)}var np=gw;function yw(e){return function(t,r,o){for(var n=-1,i=Object(t),s=o(t),a=s.length;a--;){var p=s[e?a:++n];if(r(i[p],p,i)===false)break}return t}}var ip=yw;var hw=ip(),On=hw;function ww(e,t){return e&&On(e,t,Me)}var sp=ww;function Sw(e,t){return function(r,o){if(r==null)return r;if(!Ce(r))return e(r,o);for(var n=r.length,i=t?n:-1,s=Object(r);(t?i--:++i<n)&&o(s[i],i,s)!==false;);return r}}var ap=Sw;var bw=ap(sp),lp=bw;function Rw(e,t,r){(r!==void 0&&!Te(e[t],r)||r===void 0&&!(t in e))&&Rr(e,t,r);}var xo=Rw;function xw(e){return K(e)&&Ce(e)}var pp=xw;function Ow(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}var Oo=Ow;function Ew(e){return Ne(e,_e(e))}var fp=Ew;function vw(e,t,r,o,n,i,s){var a=Oo(e,r),p=Oo(t,r),l=s.get(p);if(l){xo(e,r,l);return}var f=i?i(a,p,r+"",e,t,s):void 0,d=f===void 0;if(d){var u=F(p),g=!u&&Ye(p),y=!u&&!g&&Ar(p);f=p,u||g||y?F(a)?f=a:pp(a)?f=Yo(a):g?(d=false,f=nn(p,true)):y?(d=false,f=un(p,true)):f=[]:fe(p)||Kt(p)?(f=a,Kt(a)?f=fp(a):(!j(a)||Sr(a))&&(f=cn(p))):d=false;}d&&(s.set(p,f),n(f,p,o,i,s),s.delete(p)),xo(e,r,f);}var dp=vw;function up(e,t,r,o,n){e!==t&&On(t,function(i,s){if(n||(n=new Le),j(i))dp(e,t,s,r,up,o,n);else {var a=o?o(Oo(e,s),i,s+"",e,t,n):void 0;a===void 0&&(a=i),xo(e,s,a);}},_e);}var cp=up;function Aw(e,t){return Fr(e,t)}var Jt=Aw;var $w=ga(function(e,t,r){cp(e,t,r);}),Vi=$w;function Pw(e,t,r,o){if(!j(e))return e;t=Cr(t,e);for(var n=-1,i=t.length,s=i-1,a=e;a!=null&&++n<i;){var p=ke(t[n]),l=r;if(p==="__proto__"||p==="constructor"||p==="prototype")return e;if(n!=s){var f=a[p];l=o?o(f,p,a):void 0,l===void 0&&(l=j(f)?f:St(t[n+1])?[]:{});}xr(a,p,l),a=a[p];}return e}var mp=Pw;function Tw(e,t,r){return e==null?e:mp(e,t,r)}var qi=Tw;function Nw(e,t){var r;return lp(e,function(o,n,i){return r=t(o,n,i),!r}),!!r}var gp=Nw;function Cw(e,t,r){var o=F(e)?wn:gp;return r&&Xo(e,t,r)&&(t=void 0),o(e,np(t))}var Wi=Cw;var Mw=/^(\$+)\.(.*)$/,q=e=>{let t=Mw.exec(e);return t?{depth:t[1].length,path:t[2]}:null},Ui=(e,t,r)=>`Scope ref '${e}' needs depth ${t} but only ${r} ${r===1?"scope is":"scopes are"} in reach`,ye=(e,t)=>{let r=q(e);return r?r.depth>t.length?{outOfBounds:Ui(e,r.depth,t.length)}:{scope:t[t.length-r.depth],path:r.path}:{scope:t[t.length-1],path:e}},_w=/\[(\d+)\]|\[(["'])(.*?)\2\]|([^.[\]]+)/g,kw=e=>e===""?[""]:[...e.matchAll(_w)].map(t=>t[1]??t[3]??t[4]),Lw=(e,t)=>{if(e==null)return;let r=Object(e);return Object.hasOwn(r,t)?r[t]:void 0},J=(e,t)=>kw(t).reduce(Lw,e),Et=(e,t)=>{let r=ye(e,t);if("outOfBounds"in r)throw new Error(r.outOfBounds);return J(r.scope,r.path)},yp=(e,t,r)=>q(e)?Et(e,t):J(r,e),Eo=(e,t)=>`Scope ref '${e}' is not supported by ${t}(); evaluate with check()`,En=(e,t)=>{if(!(!("field"in e)||typeof e.field!="string")&&q(e.field))throw new Error(Eo(e.field,t))},vn=(e,t,r)=>{if(!t)throw new Error(`context is required to resolve path '${e}'. Pass context when calling ${r}().`);return J(t,e)??null};var hp={string:{caseInsensitive:false,fuzzy:false},prismaOptions:{datasource:{provider:"postgresql"}}},jr=yn(hp),Gi=e=>Ii(e,t=>typeof t=="object"&&t!==null&&!Array.isArray(t)&&!fe(t)?t:void 0),Dw=e=>e!=null&&typeof e.then=="function",Qt={set:(e,t)=>{qi(jr,e,Gi(t));},get:e=>J(jr,e),reset:()=>{jr=yn(hp);},with:(e,t)=>{let r=jr;jr=Vi(Gi(r),Gi(e));try{let o=t();if(Dw(o))throw new Error("engineGlobals.with() callback must be synchronous (it returned a Promise).");return o}finally{jr=r;}}},Fw=new Set(["postgresql","cockroachdb","mongodb"]),wp=e=>Fw.has(e),de=e=>e??Qt.get("string.caseInsensitive")??false,An=e=>{let t=e??Qt.get("string.fuzzy")??false;return t?t===true?{}:t:false};var h={equals:"equals",notEquals:"notEquals",lessThan:"lessThan",lessThanEquals:"lessThanEquals",greaterThan:"greaterThan",greaterThanEquals:"greaterThanEquals",contains:"contains",notContains:"notContains",in:"in",notIn:"notIn",matches:"matches",notMatches:"notMatches",between:"between",notBetween:"notBetween",isEmpty:"isEmpty",notEmpty:"notEmpty",exists:"exists",notExists:"notExists",startsWith:"startsWith",notStartsWith:"notStartsWith",endsWith:"endsWith",notEndsWith:"notEndsWith"},E={all:"all",any:"any",none:"none",atLeast:"atLeast",atMost:"atMost",exactly:"exactly",empty:"empty",notEmpty:"notEmpty"},$={before:"before",after:"after",onOrBefore:"onOrBefore",onOrAfter:"onOrAfter",notBefore:"notBefore",notAfter:"notAfter",within:"within",notWithin:"notWithin",between:"between",notBetween:"notBetween",dayIn:"dayIn",dayNotIn:"dayNotIn"};var I={String:"String",Boolean:"Boolean",Int:"Int",BigInt:"BigInt",Float:"Float",Decimal:"Decimal",DateTime:"DateTime",Json:"Json",Bytes:"Bytes",Enum:"Enum"},Re=["Int","Float","Decimal","BigInt"],Ir=["String",...Re,"DateTime"],vt=["String"],$n=["String","Boolean","Int","BigInt","Float","Decimal","DateTime","Enum"],Pn=Object.values(I),Sp=Pn,jw={check:"check",toPrisma:"toPrisma",toSql:"toSql"},Cn=e=>typeof e=="string"&&Object.hasOwn(I,e),P=["check","toPrisma","toSql"],Br=["check","toPrisma"],Tn=["check","toSql"],ot={none:"none",scalar:"scalar",ordered:"ordered",array:"array",string:"string",pattern:"pattern",range:"range",dateValue:"dateValue",dateRange:"dateRange",dateWindow:"dateWindow",dayList:"dayList",count:"count",predicate:"predicate"},Vr={[h.equals]:{kinds:$n,targets:P,valueShape:"scalar"},[h.notEquals]:{negates:h.equals,kinds:$n,targets:P,valueShape:"scalar"},[h.lessThan]:{kinds:Ir,targets:P,valueShape:"ordered",comparator:"lt"},[h.lessThanEquals]:{kinds:Ir,targets:P,valueShape:"ordered",comparator:"lte"},[h.greaterThan]:{kinds:Ir,targets:P,valueShape:"ordered",comparator:"gt"},[h.greaterThanEquals]:{kinds:Ir,targets:P,valueShape:"ordered",comparator:"gte"},[h.in]:{kinds:$n,targets:P,valueShape:"array"},[h.notIn]:{negates:h.in,kinds:$n,targets:P,valueShape:"array"},[h.contains]:{kinds:vt,targets:P,valueShape:"string"},[h.notContains]:{negates:h.contains,kinds:vt,targets:P,valueShape:"string"},[h.startsWith]:{kinds:vt,targets:P,valueShape:"string"},[h.notStartsWith]:{negates:h.startsWith,kinds:vt,targets:P,valueShape:"string"},[h.endsWith]:{kinds:vt,targets:P,valueShape:"string"},[h.notEndsWith]:{negates:h.endsWith,kinds:vt,targets:P,valueShape:"string"},[h.matches]:{kinds:vt,targets:Tn,valueShape:"pattern"},[h.notMatches]:{negates:h.matches,kinds:vt,targets:Tn,valueShape:"pattern"},[h.between]:{kinds:Ir,targets:P,valueShape:"range"},[h.notBetween]:{negates:h.between,kinds:Ir,targets:P,valueShape:"range"},[h.isEmpty]:{kinds:Sp,targets:P,valueShape:"none"},[h.notEmpty]:{kinds:Sp,targets:P,valueShape:"none"},[h.exists]:{kinds:Pn,targets:P,valueShape:"none"},[h.notExists]:{kinds:Pn,targets:P,valueShape:"none"}},qr={[$.before]:{kinds:["DateTime"],targets:P,valueShape:"dateValue",acceptsExpr:true,comparator:"lt"},[$.after]:{kinds:["DateTime"],targets:P,valueShape:"dateValue",acceptsExpr:true,comparator:"gt"},[$.onOrBefore]:{kinds:["DateTime"],targets:P,valueShape:"dateValue",acceptsExpr:true,comparator:"lte"},[$.onOrAfter]:{kinds:["DateTime"],targets:P,valueShape:"dateValue",acceptsExpr:true,comparator:"gte"},[$.notBefore]:{negates:$.before,kinds:["DateTime"],targets:P,valueShape:"dateValue",acceptsExpr:true,comparator:"gte"},[$.notAfter]:{negates:$.after,kinds:["DateTime"],targets:P,valueShape:"dateValue",acceptsExpr:true,comparator:"lte"},[$.within]:{kinds:["DateTime"],targets:P,valueShape:"dateWindow",acceptsExpr:true},[$.notWithin]:{negates:$.within,kinds:["DateTime"],targets:P,valueShape:"dateWindow",acceptsExpr:true},[$.between]:{kinds:["DateTime"],targets:P,valueShape:"dateRange",acceptsExpr:true},[$.notBetween]:{negates:$.between,kinds:["DateTime"],targets:P,valueShape:"dateRange",acceptsExpr:true},[$.dayIn]:{kinds:["DateTime"],targets:Tn,valueShape:"dayList",acceptsExpr:false},[$.dayNotIn]:{negates:$.dayIn,kinds:["DateTime"],targets:Tn,valueShape:"dayList",acceptsExpr:false}},Nn={[E.all]:{targets:Br,valueShape:"predicate"},[E.any]:{targets:Br,valueShape:"predicate"},[E.none]:{targets:Br,valueShape:"predicate"},[E.atLeast]:{targets:Br,valueShape:"count",comparator:"gte"},[E.atMost]:{targets:Br,valueShape:"count",comparator:"lte"},[E.exactly]:{targets:Br,valueShape:"count",comparator:"equals"},[E.empty]:{targets:P,valueShape:"none"},[E.notEmpty]:{targets:P,valueShape:"none"}},bp={field:Vr,date:qr,array:Nn},rt=(e,t)=>Object.hasOwn(bp[t],e)?bp[t][e]:void 0,Wr=e=>typeof e.operator=="string"?rt(e.operator,"field"):typeof e.dateOperator=="string"?rt(e.dateOperator,"date"):void 0,At=(e,t)=>rt(e,t)?.comparator,nt=(e,t)=>{let r=rt(e,t);if(!r)throw H(e,t);return r.valueShape},Mn=(e,t,r)=>rt(e,t)?.targets.includes(r)??false,Iw=(e,t)=>{let r=Object.keys(Vr).filter(n=>{let i=Vr[n];return !(!i.kinds.includes(e)||t&&!i.targets.includes(t))}),o=Object.keys(qr).filter(n=>{let i=qr[n];return !(!i.kinds.includes(e)||t&&!i.targets.includes(t))});return {field:r,date:o}},Bw=e=>Object.keys(Nn).filter(t=>e?Nn[t].targets.includes(e):true),Rp=[...Object.entries(Vr),...Object.entries(qr)],ue=(...e)=>Rp.flatMap(([t,r])=>e.includes(r.valueShape)?[t]:[]),$t=ue("none"),Ur=ue("ordered"),vo=ue("dateWindow"),he=ue("range","dateRange","dateWindow"),xp=ue("ordered","string","pattern","array"),Gr=[h.contains,h.notContains],_n=ue("scalar","ordered","range"),De=["sum","avg"],Vw=()=>_n,Pt=ue("scalar"),Kr=ue("array"),Op=ue("scalar","array"),Ep=ue("dayList"),vp=ue("dateRange"),Ap=ue("scalar","ordered","range","dateValue","dateRange"),$p=(...e)=>Object.entries(Nn).flatMap(([t,r])=>e.includes(r.valueShape)?[t]:[]),kn=$p("count"),Pp=$p("predicate","count"),Tp=[E.any,E.atLeast],L=[...Object.entries(Vr),...Object.entries(qr)].flatMap(([e,t])=>t.negates?[e]:[]),Np=L.filter(e=>ue("string").includes(e)),zr=L.filter(e=>he.includes(e)),Cp=(...e)=>Rp.flatMap(([t,r])=>r.comparator&&e.includes(r.comparator)&&!L.includes(t)?[t]:[]),Ln=Cp("lt","lte"),Mp=Cp("gt","gte"),_p=["Int","BigInt"],kp=[...Re,"DateTime","Boolean","String"],Lp=["Int","BigInt","Float","Boolean","String"],Dp=["scalar","ordered","string"],Tt={years:{interval:"months",factor:12,calendar:true},quarters:{interval:"months",factor:3,calendar:true},months:{interval:"months",factor:1,calendar:true},weeks:{interval:"days",factor:7,calendar:true},days:{interval:"days",factor:1,calendar:true},hours:{interval:"secs",factor:3600,calendar:false},minutes:{interval:"secs",factor:60,calendar:false},seconds:{interval:"secs",factor:1,calendar:false}},Fp=["months","days","secs"],Ki=e=>Object.hasOwn(Tt,e),Zt=e=>Ki(e)&&Tt[e].calendar,Dn=["year","quarter","month","week","isoWeek","day","hour","minute","second"],Hr=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],jp=e=>Hr.includes(e.toLowerCase()),Ip=(e,t=[])=>Object.fromEntries([...Object.entries(e).flatMap(([r,o])=>o.negates?[[o.negates,r]]:[]),...t].flatMap(([r,o])=>[[r,o],[o,r]])),Ao=Ip(Vr,[[h.isEmpty,h.notEmpty],[h.exists,h.notExists]]),Bp=Ip(qr),Fn={[h.lessThan]:h.greaterThanEquals,[h.lessThanEquals]:h.greaterThan,[h.greaterThan]:h.lessThanEquals,[h.greaterThanEquals]:h.lessThan,[$.onOrBefore]:$.after,[$.onOrAfter]:$.before};var jn=e=>new Error(`${e}: ArrayRule.field is required (fieldless arrayOps are check-only)`),H=(e,t)=>new Error(`Unknown ${t} operator: ${String(e)}`),Jr=e=>new Error(`${e} requires a count`),xe=e=>new Error(`${e} requires a range date expression (a period or rolling window), not a single point`),Oe=e=>new Error(`${e} requires a condition to check against array elements`),Qr=e=>new Error(`'${e}' is a relation: it exists or not; compare its fields with '${e}.<field>'.`),In=e=>new Error(`'${e}' is a list of rows: compare it with an arrayOperator (any / all / none / empty / atLeast \u2026).`),Bn=e=>Gr.includes(e.operator)&&An(e.fuzzy)?new Error("Fuzzy matching has no compiled form \u2014 evaluate it in memory with check()."):null,Vn=(e,t)=>!Ur.includes(e)&&!he.includes(e)?null:(he.includes(e)&&Array.isArray(t)?t:[t]).some(o=>typeof o=="boolean"||typeof o=="object"&&o!==null&&!(o instanceof Date))?new Error(`'${e}' orders numbers, strings and dates; it can't compare ${JSON.stringify(t)}`):null,Nt=e=>new Error(`aggregate.mode must be one of ${De.join(" / ")}, not '${String(e)}'`),Fe=()=>new Error("A condition is exactly one of: a field, date, array or aggregate rule, all, any, or if/then[/else]"),C=(e,t,r)=>new Error(`${t} has no ${e==="toSql"?"SQL":"Prisma"} form${r?` (${r})`:""}; use ${e==="toSql"?"check()":"toSql() or check()"}.`),je=e=>new Error(`Windowing (filter/orderBy/take/skip) is not supported by ${e}() for this rule; evaluate with check()${e==="toPrisma"?" \u2014 toPrisma compiles a filter alone and an extremal take: 1":""}.`),qn=(e,t)=>new Error(`'${e}' reads through the to-many relation '${t.prefix}'; compare its rows with an arrayOperator rule on '${t.prefix}'.`),Wn=(e,t)=>new Error(`'${e}' continues past '${t}', which is not a Json column`);Be.extend(Gw);Be.extend(Uw);Be.extend(Ww);Be.extend(qw);var U=e=>{if(!fe(e))return false;let t=e;return "ago"in t||"ahead"in t||"this"in t||"last"in t||"next"in t||"start"in t||"end"in t},it="UTC",$o=e=>{if(e.now===void 0)throw new Error("date expressions require `now` to be supplied to the evaluator");let t=Be(e.now).tz(e.timeZone);if(!t.isValid())throw new Error(`invalid \`now\`: ${String(e.now)}`);return t},zi=(e,t)=>Object.entries(e).reduce((r,[o,n])=>Tt[o].interval===t?r+n*Tt[o].factor:r,0),Vp="YYYY-MM-DDTHH:mm:ss.SSS",Ct=(e,t,r,o)=>{let n=zi(t,"months"),i=zi(t,"days"),s=zi(t,"secs"),a=Be.utc(e.tz(o).format(Vp));return n&&(a=a.add(r*n,"month")),i&&(a=a.add(r*i,"day")),s&&(a=a.add(r*s*1e3,"millisecond")),Be.tz(a.format(Vp),o)},Kw=e=>"ago"in e||"ahead"in e,Un=(e,t)=>t===-1?{ago:e}:{ahead:e},se=e=>Kw(e)?"ago"in e?[e.ago,-1]:[e.ahead,1]:null,Po=e=>"this"in e||"last"in e||"next"in e,Hi=e=>"start"in e||"end"in e,Gn=e=>"this"in e?e.this:"last"in e?e.last:e.next,zw=e=>{let t=Gn(e);if(typeof t!="string"||!Dn.includes(t))throw new Error(`Unknown period unit '${String(t)}'`);return t},Hw=(e,t)=>e==="week"?t.weekStart==="sunday"?"week":"isoWeek":e,Ji=(e,t)=>{let r=$o(t),o=zw(e),n=o==="isoWeek"?"week":o,i=r;"last"in e?i=r.subtract(1,n):"next"in e&&(i=r.add(1,n));let s=Hw(o,t);return [i.startOf(s),i.endOf(s)]},Qi=(e,t)=>{let r=se(e);if(r)return Ct($o(t),...r,t.timeZone);if(Hi(e)){let o="start"in e?e.start:e.end,[n,i]=Ji(o,t);return "start"in e?n:i}throw new Error("a point operator requires a rolling or start/end edge expression, not a bare period")},Zr=(e,t,r)=>{if(Po(e)){let[o,n]=Ji(e,r),i=Wr({dateOperator:t})?.negates??t;return Ln.includes(i)?o:n}return Qi(e,r)},Yr=(e,t)=>{if(Po(e))return Ji(e,t);let r=se(e);if(r){let o=$o(t),n=Ct(o,...r,t.timeZone);return r[1]===-1?[n,o]:[o,n]}throw xe("within")};var qp=["value","bind","path"],Xt=e=>typeof e.path=="string"&&e.path!=="",er=e=>Xt(e)?q(e.path):null,To=(e,t)=>{if(e.value!==void 0)return t.value(e.value);if(e.bind!==void 0)return t.bind(e.bind,e.bindOptional);if(Xt(e))return t.path(e.path);throw new Error("No value, path or bind specified")},Kn=e=>fe(e)&&(e.value!==void 0||Xt(e)||typeof e.bind=="string"),Zi=(e,t,r)=>{if(!r||!Object.hasOwn(r,e)){if(t===true)return null;throw new Error(`Missing binding for "${e}"`)}let o=r[e];return o===void 0?null:o},zn=(e,t,r)=>{if(t===true)return null;throw new Error(`Unresolved binding '${e}' \u2014 resolve bindings (bindRule / bindLens) before compiling with ${r}().`)},st=(e,t,r,o)=>To(e,{value:n=>n,bind:(n,i)=>Zi(n,i,o),path:n=>yp(n,t,r)??null});var Wp=e=>typeof e=="object"&&e!==null,Xi=e=>"if"in e||"then"in e||"else"in e,at=e=>"arrayOperator"in e||"aggregate"in e,Up=e=>[...["all","any"].flatMap(t=>Array.isArray(e[t])?e[t].map((r,o)=>({key:t,index:o,child:r,nested:false})):[]),...Xi(e)?["if","then","else"].flatMap(t=>e[t]!==void 0?[{key:t,child:e[t],nested:false}]:[]):[],...["condition","filter"].flatMap(t=>e[t]!==void 0?[{key:t,child:e[t],nested:true}]:[])],Ee=e=>"all"in e||"any"in e||Xi(e),Q=(e,t,r)=>{if(!Wp(e))return;let o=e,n=t(o,r),i=n===void 0?r:n;for(let{child:s,nested:a}of Up(o))a?i!==false&&Q(s,t,i):Q(s,t,r);},Gp=(e,t,r,o)=>{let n=false;return Q(e,(i,s)=>(!n&&t(i,s)&&(n=true),n?false:r?.(i,s)),o),n},Mt=(e,t,r)=>{if(!Wp(e))return e;let o=r,n={...e},i=t.rewrite?t.rewrite(n,o):n,s=Up(i),a=s.some(l=>l.nested)&&t.below?t.below(i,o):o;for(let l of ["all","any"])Array.isArray(i[l])&&(i[l]=[...i[l]]);for(let{key:l,index:f,child:d,nested:u}of s){if(u&&a===false)continue;let g=Mt(d,t,u?a:o);f===void 0?i[l]=g:i[l][f]=g;}let p=t.after?t.after(i,o):i;return p===i&&Jw(i,e)?e:p},Jw=(e,t)=>{let r=Object.keys(e);return r.length!==Object.keys(t).length?false:r.every(o=>{let[n,i]=[e[o],t[o]];return n===i?true:Array.isArray(n)&&Array.isArray(i)&&n.length===i.length&&n.every((s,a)=>s===i[a])})},Qw=(e,t)=>fe(e)?Object.fromEntries(Object.entries(e).map(([r,o])=>[r,Kn(o)?t(o,Zt(r)?"whole":"number"):o])):e,Yi=(e,t)=>{let r=U(e)?se(e):null;return r?Un(Qw(r[0],t),r[1]):e},Hn=(e,t)=>{let r="dateOperator"in e;if(!r&&!("operator"in e))return e;let o=e;if(r&&e.value!==void 0){let n=Array.isArray(e.value)?e.value.map(i=>Yi(i,t)):Yi(e.value,t);o={...o,value:n};}if(Kn(e.offset)){let n=r?{...e.offset,...e.offset.value!==void 0&&{value:Yi(e.offset.value,t)}}:e.offset;o={...o,offset:t(n,r?"shift":"number")};}return Kn(o)&&(o=t(o,"value")),o},No=e=>{let t=[];return Hn(e,(r,o)=>(t.push({source:r,role:o}),r)),t},es=e=>No(e).flatMap(({source:t,role:r})=>Xt(t)?[{ref:t.path,role:r}]:[]),Xr=e=>es(e).map(t=>t.ref),eo=e=>[...Array.isArray(e.orderBy)?e.orderBy.flatMap(t=>typeof t?.field=="string"?[t.field]:[]):[],...typeof e.aggregate?.field=="string"?[e.aggregate.field]:[]],Z=e=>{let t=new Set;return "all"in e&&t.add("all"),"any"in e&&t.add("any"),Xi(e)&&t.add("if"),"arrayOperator"in e&&t.add("array"),"dateOperator"in e&&t.add("date"),"aggregate"in e?t.add("aggregate"):"operator"in e&&t.add("field"),t.size===1?[...t][0]:null},D=e=>e.length===0?true:e.length===1?e[0]:{all:[...e]},lt=e=>e.length===0?false:e.length===1?e[0]:{any:[...e]};var Zw=e=>No(e).flatMap(({source:t})=>typeof t.bind=="string"?[t]:[]),Co=(e,{required:t=false}={})=>{let r=new Set;return Q(e,o=>{for(let n of Zw(o))(!t||n.bindOptional!==true)&&r.add(n.bind);}),[...r].sort()},ts=(e,t)=>{let r=o=>{if(typeof o.bind!="string"||!Object.hasOwn(t,o.bind))return o;let{bind:n,bindOptional:i,...s}=o;return {...s,value:Zi(n,true,t)}};return Mt(e,{rewrite:o=>Hn(Hn(o,r),r)})};var Kp=BigInt(Number.MAX_SAFE_INTEGER),Mo=e=>{if(e>Kp||e<-Kp)throw new RangeError(`BigInt ${e} is outside the safe integer range (\xB12^53); json-rules compares BigInt as Int.`);return Number(e)},rs=e=>typeof e=="bigint"?Mo(e):typeof e=="string"&&e.trim()!==""&&Number.isFinite(Number(e))?Number(e):e,Jn=(e,t)=>{if(e==null)return null;let r=rs(e);if(typeof r!="number"||!Number.isFinite(r))throw new Error(`${t} reads a number (got ${String(e)})`);return r},we=([e,t])=>t<e?[t,e]:[e,t],ve=(e,t)=>{if(!Array.isArray(e)||e.length!==2)throw new Error(`${t} operator requires an array of two values`);return [e[0],e[1]]},to=(e,t)=>{let r=ve(e,t);if(!r.every(Y))throw new Error(`${t} requires two ends that order \u2014 numbers, strings or dates (got ${JSON.stringify(e)})`);return r},Qn=e=>{if(!Array.isArray(e))throw new Error(`in / notIn requires a list (got ${JSON.stringify(e)})`);return e},pt=e=>{let t=Qn(e),r=t.filter(o=>o!==null);return {values:r,hasNull:r.length!==t.length}},Y=e=>typeof e=="string"||typeof e=="number"||e instanceof Date;var os=(e,t)=>typeof e=="number"&&Number.isFinite(e)&&e>=0&&(!Zt(t)||Number.isInteger(e))?null:`${t} must be a non-negative${Zt(t)?" whole":""} number (got ${String(e)})`,ns=(e,t,r)=>{let o=typeof e=="number"?e:Jn(t(e),e.path?`'${e.path}' (${r})`:r),n=o===null?null:os(o,r);if(n===null)return o;if(typeof e!="number"&&Xt(e))return null;throw new Error(n)},tr=(e,t)=>{let r={};for(let[o,n]of Object.entries(e)){if(n===void 0)continue;let i=ns(n,t,o);if(i===null)return null;r[o]=i;}return r},Ie=(e,t)=>{let r=se(e);if(!r)return e;let o=tr(r[0],t);return o?Un(o,r[1]):null};var rr=(e,t)=>{if(e==null)return null;if(Array.isArray(e)){let o=e.map(n=>rr(n,t));return o.some(n=>n===null)?null:o}let r=rs(e);if(typeof r!="number"||!Number.isFinite(r))throw new Error(`offset needs a numeric comparison value (got ${String(e)})`);return r+t},or=e=>Jn(e,"an offset"),ro=e=>{if(e==null)return null;let t=U(e)?se(e):null;if(!t)throw new Error(`a date offset reads { ago } or { ahead } (got ${JSON.stringify(e)})`);return t};Be.extend(Gw);Be.extend(Uw);Be.extend(Xw);Be.extend(Yw);var zp=(e,t,r,o={},n)=>{let i=Et(e.field,t),s=nr(o,g=>st(g,t,r,n)),a=s.timeZone;if(i==null)return L.includes(e.dateOperator)?true:e.error||`${e.field} has no value`;let p=Y(i)?_t(i,a):null;if(!p?.isValid())throw new Error(`${e.field} is not a valid date: ${String(i)}`);let l=g=>e.error||`${e.field} ${g}`;if(Ep.includes(e.dateOperator)){let g=is(st(e,t,r,n));if(g===null)return e.error||`${e.field} has no comparison value`;let y=g.includes(p.tz(a).day()),m=g.map(S=>Hr[S]).join(" or ");return e.dateOperator===$.dayIn?y||l(`must be on ${m}`):!y||l(`must not be on ${m}`)}let f=rS(e,t,r,s,a,n);if(f===null)return e.error||`${e.field} has no comparison value`;let[d,u=d]=f;switch(e.dateOperator){case $.before:return p.isBefore(d)||l(`must be before ${d.format()}`);case $.after:return p.isAfter(d)||l(`must be after ${d.format()}`);case $.onOrBefore:return p.isSameOrBefore(d)||l(`must be on or before ${d.format()}`);case $.onOrAfter:return p.isSameOrAfter(d)||l(`must be on or after ${d.format()}`);case $.within:return p.isSameOrAfter(d)&&p.isSameOrBefore(u)||l(`must be within ${d.format()} and ${u.format()}`);case $.notBefore:return p.isSameOrAfter(d)||l(`must not be before ${d.format()}`);case $.notAfter:return p.isSameOrBefore(d)||l(`must not be after ${d.format()}`);case $.notWithin:return p.isBefore(d)||p.isAfter(u)||l(`must not be within ${d.format()} and ${u.format()}`);case $.between:return p.isSameOrAfter(d)&&p.isSameOrBefore(u)||l(`must be between ${d.format()} and ${u.format()}`);case $.notBetween:return p.isBefore(d)||p.isAfter(u)||l(`must not be between ${d.format()} and ${u.format()}`);default:throw H(e.dateOperator,"date")}},rS=(e,t,r,o,n,i)=>{let s=e.dateOperator,a=m=>st(m,t,r,i),p=st(e,t,r,i);if(p==null)return null;let l=e.offset===void 0?void 0:ro(a(e.offset));if(l===null)return null;let f=m=>{if(l===void 0)return m;let S=tr(l[0],a);return S&&Ct(m,S,l[1],n)};if(vo.includes(s)){if(!U(p))throw xe(s);let m=Ie(p,a);return m&&Yr(m,o)}let d=(m,S)=>{if(m==null)return null;if(U(m)){let w=Ie(m,a);return w&&Qi(w,o)}let b=_t(m,n);if(!b.isValid())throw new Error(`Invalid ${S}: ${String(m)}`);return b};if(vp.includes(s)){let[m,S]=ve(p,s),b=d(m,"start date"),w=d(S,"end date");if(!b||!w)return null;let[c,R]=we([b,w]),O=f(c),A=f(R);return O&&A?[O,A]:null}if(Array.isArray(p))throw new Error(`${s} operator requires a single date value`);let u=m=>{let S=Ie(m,a);return S&&Zr(S,s,o)},g=U(p)?u(p):d(p,"comparison date");if(!g)return null;let y=f(g);return y&&[y]},nr=(e,t)=>{let r=e.timeZone;if(r===void 0||typeof r=="string")return {...e,timeZone:r??it};if(er(r))throw new Error(`timeZone is one per evaluation; read it from context, not '${r.path}'`);let o=t(r);if(o!=null&&typeof o!="string")throw new Error(`timeZone reads a zone name (got ${String(o)})`);return {...e,timeZone:o??it}},oS=/\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?\s*(?:[zZ]|[+-]\d{2}(?::?\d{2})?)$/,nS=e=>oS.test(e.trim())||/\b(?:GMT|UTC)\b/.test(e),_t=(e,t)=>{if(typeof e=="string"&&/^-?\d+$/.test(e.trim()))return Be(Number(e));if(typeof e=="string"&&!nS(e)){let r=Be(e);return r.isValid()?Be.tz(e,t):r}return typeof e=="string"?Be(new Date(e.trim())):Be(e)},Zn=(e,t)=>{let r=Y(e)?_t(e,t):Be(Number.NaN);if(!r.isValid())throw new Error(`Invalid date value: ${String(e)}`);return r.toDate()},is=e=>{if(e==null)return null;if(!Array.isArray(e))throw new Error("a weekday operator requires an array of day names");return e.map(t=>{let r=Hr.indexOf(String(t).toLowerCase());if(r===-1)throw new Error(`Unknown day name: ${String(t)}`);return r})};var sS=e=>e<=3?0:e<=6?1:2,aS=(e,t)=>{let{maxDistance:r,maxRatio:o}=e,n=[];return typeof r=="number"&&n.push(r),typeof o=="number"&&n.push(Math.floor(t*o)),n.length>0?Math.min(...n):sS(t)},Hp=e=>e.split(/[^a-z0-9\p{L}]+/u).filter(Boolean),lS=e=>/^\d+$/.test(e),pS=(e,t,r)=>e===t?true:Math.abs(e.length-t.length)>r?false:distance(e,t)<=r,Jp=(e,t,r={})=>{let o=t.trim().toLowerCase();if(!o)return true;let n=e.toLowerCase();if(n.includes(o))return true;let i=Hp(o);if(i.length===0)return false;let s=Hp(n);return s.length===0?false:i.every(a=>{let p=aS(r,a.length);return p===0||lS(a)?s.includes(a):s.some(l=>pS(a,l,p))})};var kt=e=>{let t=e instanceof RegExp?e.source:e,r=e instanceof RegExp?e.flags:"";if(/[^i]/.test(r))throw new Error(`Refused pattern /${t}/${r}: only the 'i' flag is supported`);let o=r==="i";try{return {source:t,caseInsensitive:o,re:RE2JS.compile(t,o?RE2JS.CASE_INSENSITIVE:0)}}catch(n){throw new Error(`Refused pattern /${t}/: ${n.message}`)}},oo={d:"0-9",w:"0-9A-Za-z_",s:"\\t\\n\\f\\r "},Zp={alnum:"0-9A-Za-z",alpha:"A-Za-z",ascii:"\\u0000-\\u007f",blank:"\\t ",cntrl:"\\u0000-\\u001f\\u007f",digit:"0-9",graph:"!-~",lower:"a-z",print:" -~",punct:"!-/:-@\\[-`{-~",space:"\\t\\n\\v\\f\\r ",upper:"A-Z",word:"0-9A-Za-z_",xdigit:"0-9A-Fa-f"},fS=/[\\^$.|?*+()[\]{}]/,ss=255,Yp=e=>e<=65535?`\\u${e.toString(16).padStart(4,"0")}`:`\\U${e.toString(16).padStart(8,"0")}`,dS=e=>fS.test(e)?`\\${e}`:e,_o=e=>{let t=s=>{throw new Error(`Refused pattern /${e}/: ${s} has no Postgres form`)},r="",o=0,n=()=>{/^([*+?]|\{\d)/.test(e.slice(o))&&t("a quantified anchor");},i=s=>{let a=e[o+1];if(o+=2,Object.hasOwn(oo,a))return s?oo[a]:`[${oo[a]}]`;let p=a.toLowerCase();if(a!==p&&Object.hasOwn(oo,p))return s&&t(`a negated class \\${a} inside brackets`),`[^${oo[p]}]`;if(a==="p"||a==="P")return t("a Unicode class");if(a==="C")return t("\\C");if(a==="x"){let l=e[o]==="{",f=l?e.indexOf("}",o):o+2,d=e.slice(l?o+1:o,f);return o=l?f+1:f,Yp(Number.parseInt(d,16))}if(a>="0"&&a<="7"){let l=a;for(;l.length<3&&e[o]>="0"&&e[o]<="7";)l+=e[o++];return Yp(Number.parseInt(l,8))}if(!s&&(a==="b"||a==="B")){let l=`[${oo.w}]`;return a==="b"?`(?:(?<=${l})(?!${l})|(?<!${l})(?=${l}))`:`(?:(?<=${l})(?=${l})|(?<!${l})(?!${l}))`}if(!s&&(a==="z"||a==="A"))return n(),a==="z"?"\\Z":"\\A";if(a==="Q"){let l=e.indexOf("\\E",o),f=e.slice(o,l===-1?void 0:l);return o=l===-1?e.length:l+2,[...f].map(s?d=>/[\\\]^-]/.test(d)?`\\${d}`:d:dS).join("")}return `\\${a}`};for(;o<e.length;){let s=e[o];if(s==="\\")r+=i(false);else if(s===".")r+="[^\\n]",o++;else if(s==="("&&e[o+1]==="?"){let a=/^\(\?P?<[^>]+>/.exec(e.slice(o));a?(r+="(",o+=a[0].length):e[o+2]===":"?(r+="(?:",o+=3):t("a flag group");}else if(s==="{"){let a=/^\{(0|[1-9]\d*)(?:,(0|[1-9]\d*)?)?\}/.exec(e.slice(o));if(!a){r+="\\{",o++;continue}(Number(a[1])>ss||Number(a[2]??0)>ss)&&t(`a repeat count past ${ss}`),r+=a[0],o+=a[0].length;}else if(s==="["){r+="[",o++,e[o]==="^"&&(r+="^",o++),e[o]==="]"&&(r+="\\]",o++);let a=false,p=false,l=0;for(;o<e.length&&e[o]!=="]";){let f=p?null:/^\[:(\^?)([a-z]+):\]/.exec(e.slice(o)),d=!!f||/^\\[dswDSW]/.test(e.slice(o)),u=e[o]==="-"&&l>0&&e[o+1]!=="]"&&!p;f?(f[1]&&t(`a negated class [:^${f[2]}:]`),Object.hasOwn(Zp,f[2])||t(`the class [:${f[2]}:]`),r+=Zp[f[2]],o+=f[0].length):e[o]==="\\"?r+=i(true):u&&a?(r+="\\-",o++):(r+=e[o]==="["?"\\[":e[o],o++);let g=p;p=u&&!a,a=d||g,l++;}r+="]",o++;}else r+=s,o++,(s==="^"||s==="$")&&n();}return r},Xp=(e,t)=>{try{let{source:r}=kt(e);return t==="toSql"&&_o(r),null}catch(r){return r.message}};var ef=e=>e==null||e===""||Array.isArray(e)&&e.length===0,ae=(e,t)=>{let r=t==null;return r&&(e.offset!==void 0||xp.includes(e.operator))?true:he.includes(e.operator)?r||Array.isArray(t)&&t.some(o=>o==null):false},sr=e=>$t.includes(e.operator)||Pt.includes(e.operator)&&e.value===null&&e.path===void 0&&e.bind===void 0,Xn=(e,t)=>{let r=t.filter(n=>Array.isArray(n)||n===null),o=n=>r.map(i=>({...e,operator:n,value:i}));return e.operator===h.in?lt(o(h.equals)):D(o(h.notEquals))},ar=e=>typeof e=="string"?e.toLowerCase():Array.isArray(e)?e.map(ar):e,tf=e=>typeof e=="bigint"?Mo(e):Array.isArray(e)&&e.some(t=>typeof t=="bigint")?e.map(t=>typeof t=="bigint"?Mo(t):t):e,rf=(e,t,r)=>{if(e==null)return e;if(Re.includes(t)){if(typeof e!="string"||e.trim()==="")return e;if(t==="BigInt"&&/^-?\d+$/.test(e.trim()))return Mo(BigInt(e.trim()));let o=Number(e);return Number.isFinite(o)?o:e}switch(t){case "DateTime":{if(e instanceof Date)return e.getTime();if(typeof e=="number"||typeof e!="string")return e;let o=_t(e,r);return o.isValid()?o.valueOf():e}case "Boolean":return e==="true"?true:e==="false"?false:e;case "String":return typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"?String(e):e;default:return e}},ir=(e,t,r=it)=>t===void 0?e:Array.isArray(e)?e.map(o=>rf(o,t,r)):rf(e,t,r),ko=(e,t,r,o,n={},i)=>{let s=i?i.value:Et(e.field,t)??null,a=e.coerceType??(s instanceof Date?"DateTime":void 0),p=a==="DateTime"?nr(n,c=>st(c,t,r,o)).timeZone:it,l=ir(tf(s),a,p),f=!$t.includes(e.operator),d=f?uS(ir(tf(st(e,t,r,o)??null),a,p),e,t,r,o):void 0;if(f&&ae(e,d))return L.includes(e.operator)&&l==null?true:e.error||`${e.field} has no comparison value`;let u=c=>e.error||`${e.field} ${c}${f?` ${d instanceof RegExp?String(d):JSON.stringify(d)}`:""}`,g=de(e.caseInsensitive),y=c=>g?ar(c):c,m=y(l),S=y(d),b=An(e.fuzzy),w=()=>b&&typeof l=="string"&&typeof d=="string"?Jp(l,d,b):Array.isArray(l)?m.some(c=>Jt(c,S)):cS(m,S);switch(e.operator){case h.equals:return Jt(m,S)||u("must equal");case h.notEquals:return !Jt(m,S)||u("must not equal");case h.lessThan:return Yn(l,d,"lt")||u("must be less than");case h.lessThanEquals:return Yn(l,d,"lte")||u("must be less than or equal to");case h.greaterThan:return Yn(l,d,"gt")||u("must be greater than");case h.greaterThanEquals:return Yn(l,d,"gte")||u("must be greater than or equal to");case h.in:return Qn(S).some(c=>Jt(c,m))||u("must be one of");case h.notIn:return !Qn(S).some(c=>Jt(c,m))||u("must not be one of");case h.contains:return w()||u("must contain");case h.notContains:return !w()||u("must not contain");case h.matches:return of(l)&&nf(d)&&kt(d).re.test(l)||u("must match pattern");case h.notMatches:return !of(l)||!nf(d)||!kt(d).re.test(l)||u("must not match pattern");case h.between:{let c=sf(d,e.operator);if(!lf(l,c))return u("must be between");let R=no(l),[O,A]=c;return R>=O&&R<=A||u("must be between")}case h.notBetween:{let c=sf(d,e.operator);if(!lf(l,c))return true;let R=no(l),[O,A]=c;return R<O||R>A||u("must not be between")}case h.isEmpty:return ef(l)||u("must be empty");case h.notEmpty:return !ef(l)||u("must not be empty");case h.exists:return l!=null||u("must exist");case h.notExists:return l==null||u("must not exist");case h.startsWith:return typeof m=="string"&&typeof S=="string"&&m.startsWith(S)||u("must start with");case h.endsWith:return typeof m=="string"&&typeof S=="string"&&m.endsWith(S)||u("must end with");case h.notStartsWith:return !(typeof m=="string"&&typeof S=="string"&&m.startsWith(S))||u("must not start with");case h.notEndsWith:return !(typeof m=="string"&&typeof S=="string"&&m.endsWith(S))||u("must not end with");default:throw new Error("Unknown operator")}},uS=(e,t,r,o,n)=>{if(t.offset===void 0)return e;let i=or(st(t.offset,r,o,n));return i===null?null:rr(e,i)},no=e=>e instanceof Date?e.getTime():e,Yn=(e,t,r)=>{if(!mS(e,t)||!Y(t))return false;let o=no(e),n=no(t);switch(r){case "lt":return o<n;case "lte":return o<=n;case "gt":return o>n;case "gte":return o>=n}},of=e=>typeof e=="string",nf=e=>typeof e=="string"||e instanceof RegExp,sf=(e,t)=>we(to(e,t).map(r=>no(r))),cS=(e,t)=>typeof e=="string"&&typeof t=="string"&&e.includes(t),mS=(e,t)=>Y(e)&&Y(t)&&af(e)===af(t),af=e=>e instanceof Date?"date":typeof e,lf=(e,t)=>Y(e)&&typeof no(e)==typeof t[0];var ce=e=>e.filter!==void 0||!!e.orderBy?.length||e.take!==void 0||e.skip!==void 0,gS=e=>{if(typeof e!="object"||e===null)return null;let t=e,r=Z(t);return r!=="field"&&r!=="date"||typeof t.field!="string"?null:{op:String(r==="date"?t.dateOperator:t.operator),field:t.field}},yS=e=>{if(e.filter!==void 0||e.skip!==void 0&&e.skip!==0||e.take!==1||e.orderBy?.length!==1)return null;let{field:t,dir:r}=e.orderBy[0];if(r!=="asc"&&r!=="desc")return null;let o=null;if(e.arrayOperator===E.all?o="all":(e.arrayOperator===E.any||e.arrayOperator===E.atLeast&&e.count===1)&&(o="any"),!o)return null;let n=gS(e.condition);if(!n||n.field!==t)return null;let i=Ln.includes(n.op),s=Mp.includes(n.op);if(!i&&!s)return null;let a=r==="desc";if(!(o==="all"?a&&i||!a&&s:a&&s||!a&&i))return null;let{orderBy:l,take:f,skip:d,count:u,...g}=e;if(o==="any")return {...g,arrayOperator:E.any};let y={field:t,operator:h.exists};return {any:[{field:e.field,arrayOperator:E.empty},{all:[{field:e.field,arrayOperator:E.any,condition:y},{...g,arrayOperator:E.all,condition:{if:y,then:e.condition}}]}]}},as=(e,t,r)=>{let o=e;if(t.filter!==void 0&&r&&(o=o.filter(r)),t.orderBy?.length){let n=t.orderBy;o=[...o].sort((i,s)=>{for(let{field:a,dir:p}of n){let l=hS(J(i,a),J(s,a),p);if(l!==0)return l}return 0});}return t.skip!==void 0&&(o=o.slice(t.skip)),t.take!==void 0&&(o=o.slice(0,t.take)),o},hS=(e,t,r)=>{let o=e==null,n=t==null;if(o||n)return o===n?0:o?1:-1;let i=e instanceof Date?e.getTime():e,s=t instanceof Date?t.getTime():t,a=i<s?-1:i>s?1:0;return r==="asc"?a:-a},io=e=>{if(!ce(e))return e;let t=!!e.orderBy?.length||e.take!==void 0||e.skip!==void 0;if(e.filter!==void 0&&!t){let{filter:r,...o}=e;if("aggregate"in e)return {...o,condition:e.condition===void 0?r:D([r,e.condition])};switch(e.arrayOperator){case "all":return {...o,condition:{if:r,then:e.condition??true}};case "empty":return {...o,arrayOperator:"none",condition:r};case "notEmpty":return {...o,arrayOperator:"any",condition:r};default:return {...o,condition:e.condition===void 0?r:D([r,e.condition])}}}return "aggregate"in e||e.filter!==void 0?null:yS(e)};var wS=e=>Q(e,t=>{let r=Z(t);if(!(r==="all"||r==="any")){if(r==="array"&&!("field"in t))return false;throw new Error("check: when data is an array, every leaf must be a fieldless arrayOperator (composable with all/any)")}}),le=(e,t,r)=>(Array.isArray(t)&&wS(e),Ve(e,t,{...r,context:r?.context??t,scopes:[t]})),Ve=(e,t,r)=>{if(typeof e=="boolean")return e;let o=e;switch(Z(e)){case "all":return SS(o.all,t,r,o.error);case "any":return bS(o.any,t,r,o.error);case "if":return RS(o,t,r);case "array":return OS(o,r);case "aggregate":return xS(o,r);case "date":return zp(o,r.scopes,r.context,r,r.bindings);case "field":return ko(o,r.scopes,r.context,r.bindings,r);default:throw Fe()}},ei=(e,t)=>({...e,scopes:[...e.scopes,t]}),SS=(e,t,r,o)=>{let n=[];for(let i of e){let s=Ve(i,t,r);s!==true&&(typeof s=="string"?n.push(s):n.push("false"));}return n.length?o||(n.length===1?n[0]:`All conditions must pass: ${n.join(" AND ")}`):true},bS=(e,t,r,o)=>{let n=[];for(let i of e){let s=Ve(i,t,r);if(s===true)return true;typeof s=="string"&&n.push(s);}return o||(n.length===1?n[0]:`At least one condition must pass: ${n.join(" OR ")}`)},RS=(e,t,r)=>Ve(e.if,t,r)===true?Ve(e.then,t,r):e.else!==void 0?Ve(e.else,t,r):true,pf=(e,t)=>{if(e==null)return [];if(!Array.isArray(e))throw new Error(`${t} must be an array`);return e},xS=(e,t)=>{let r=pf(Et(e.field,t.scopes),e.field),o=e.filter,n=as(r,e,o?g=>Ve(o,g,ei(t,g))===true:void 0),{mode:i,field:s}=e.aggregate;if(!De.includes(i))throw Nt(i);let a=e.condition,l=(a?n.filter(g=>Ve(a,g,ei(t,g))===true):n).flatMap((g,y)=>{let m=s?J(g,s):g;if(m==null)return [];if(typeof m!="number"||!Number.isFinite(m)){let S=`${e.field}[${y}]${s?`.${s}`:""}`;throw new Error(`${S} must be a finite number`)}return [m]}),f=l.reduce((g,y)=>g+y,0),d=i==="sum"||l.length===0?f:f/l.length,u={...e,field:`${e.field} ${i}`};return ko(u,t.scopes,t.context,t.bindings,t,{value:d})},OS=(e,t)=>{let r=pf(e.field?Et(e.field,t.scopes):t.scopes[t.scopes.length-1],e.field||"(root)"),o=e.filter,n=as(r,e,o?d=>Ve(o,d,ei(t,d))===true:void 0),i=d=>e.error||`${e.field} ${d}`,s=e.condition,a=Pp.includes(e.arrayOperator);if(a&&s===void 0)throw Oe(e.arrayOperator);let p=e.count??0;if(kn.includes(e.arrayOperator)&&e.count===void 0)throw Jr(e.arrayOperator);let l=0,f=0;if(a&&s!==void 0){if(n.length>0&&!Wi(n,j))return i("contains only primitive values; use 'in' or 'contains' instead of array operators on primitive arrays");let d=n.map(u=>Ve(s,u,ei(t,u)));l=d.filter(u=>u===true).length,f=d.filter(u=>typeof u=="string").length;}switch(e.arrayOperator){case E.empty:return !n.length||i("must be empty");case E.notEmpty:return !!n.length||i("must not be empty");case E.all:return l===n.length||i(`all elements must match (${f} failed)`);case E.any:return !!l||i("at least one element must match");case E.none:return !l||i(`no elements should match (${l} matched)`);case E.atLeast:return l>=p||i(`at least ${p} elements must match (${l} matched)`);case E.atMost:return l<=p||i(`at most ${p} elements must match (${l} matched)`);case E.exactly:return l===p||i(`exactly ${p} elements must match (${l} matched)`);default:throw H(e.arrayOperator,"array")}};var x=(e,t)=>e!==void 0&&Object.hasOwn(e,t)?e[t]:void 0,lr=(e,t,r)=>(Object.hasOwn(e,t)||(e[t]=r()),e[t]),M=(e,t)=>x(e?.models,t),Ae=(e,t,r)=>x(M(e,t)?.fields,r);var $e=({fieldMap:e,model:t})=>`${e}:${t}`,ff=(e,t)=>{let r=e.indexOf(":");return r===-1?{mapName:t,modelName:e}:{mapName:e.slice(0,r),modelName:e.slice(r+1)}};var df=(e,t,r,o)=>{let n={};for(let i of e){let s=x(i,t);if(s==null)continue;let a=String(s);if(Object.hasOwn(n,a)){let p=o==="one"?`endpoint[0] must be the "one" side of a oneToMany bridge \u2014 swap endpoints if '${r}' is the "many" side`:`oneToOne bridges require unique '${t}' on both endpoints`;throw new Error(`indexBridges: duplicate '${t}' value '${a}' on '${r}' \u2014 ${p}.`)}n[a]=i;}return n},ES=(e,t)=>{let r={};for(let o of e){let n=x(o,t);n!=null&&lr(r,String(n),()=>[]).push(o);}return r},uf=(e,t)=>{let r={};for(let o of e.bridges??[]){let[n,i]=o.endpoints,s=$e(n),a=$e(i),p=o.cardinality==="oneToMany"?"one":"oneToOne",l=(u,g)=>lr(lr(r,u,()=>({})),g,()=>({})),f=x(t,s);f&&(l(n.fieldMap,n.model)[n.on]=df(f,n.on,s,p));let d=x(t,a);d&&(o.cardinality==="oneToMany"?l(i.fieldMap,i.model)[i.on]=ES(d,i.on):l(i.fieldMap,i.model)[i.on]=df(d,i.on,a,"oneToOne"));}return r};var ti=e=>{let t={maps:structuredClone(e.maps),bridges:e.bridges?structuredClone(e.bridges):void 0};for(let r of e.bridges??[]){let[o,n]=r.endpoints,i=$e(o),s=$e(n),a=M(x(t.maps,o.fieldMap),o.model),p=M(x(t.maps,n.fieldMap),n.model);if(!a)throw new Error(`stitchFieldMaps: endpoint '${i}' not found`);if(!p)throw new Error(`stitchFieldMaps: endpoint '${s}' not found`);if(o.fieldMap===n.fieldMap&&o.model===n.model)throw new Error(`stitchFieldMaps: self-bridge '${i}' to itself is not supported`);if(!x(a.fields,o.on))throw new Error(`stitchFieldMaps: endpoint '${i}' has no field '${o.on}' for join`);if(!x(p.fields,n.on))throw new Error(`stitchFieldMaps: endpoint '${s}' has no field '${n.on}' for join`);if(x(a.fields,s))throw new Error(`stitchFieldMaps: bridge '${s}' already injected on '${i}'`);if(x(p.fields,i))throw new Error(`stitchFieldMaps: bridge '${i}' already injected on '${s}'`);let l=r.cardinality==="oneToMany";a.fields[s]={kind:"bridge",type:s,isList:l},p.fields[i]={kind:"bridge",type:i,isList:false};}return t};var Dt=e=>({ok:e.length===0,errors:e}),Lo=(e,t)=>{if(!e.ok)throw new Error(`${t}:
|
|
2
2
|
${e.errors.map(r=>`${r.path}: ${r.message}`).join(`
|
|
3
|
-
`)}`)},ri=(e,t={})=>{let r={target:t.target??"check",errors:[]};return ft(e,"$",r,1),Dt(r.errors)},vS=(e,t={})=>{ko(ri(e,t),"validateRule");},ft=(e,t,r,o)=>{if(typeof e=="boolean")return;if(!kt(e)){v(r,t,"invalid_condition","Condition must be a boolean or object");return}let n=Z(e);if(!n){v(r,t,"ambiguous_condition",Fe().message);return}switch(n){case "all":cf(e.all,`${t}.all`,r,o);break;case "any":cf(e.any,`${t}.any`,r,o);break;case "if":ft(e.if,`${t}.if`,r,o),ft(e.then,`${t}.then`,r,o),"else"in e&&e.else!==void 0&&ft(e.else,`${t}.else`,r,o);break;case "field":AS(e,t,r,o);break;case "aggregate":PS(e,t,r,o);break;case "array":TS(e,t,r,o);break;case "date":NS(e,t,r,o);break}},cf=(e,t,r,o)=>{if(!Array.isArray(e)){v(r,t,"logical_array_required","Logical operator requires an array of conditions");return}e.forEach((n,i)=>{ft(n,`${t}[${i}]`,r,o);});},oi=(e,t,r,o)=>{typeof e.field=="string"&&yf(e.field,"field",`${t}.field`,r,o);},yf=(e,t,r,o,n)=>{let i=q(e);if(!i)return;let s=t==="field"?"Field":"Path";i.depth>n&&v(o,r,"scope_out_of_bounds",Ui(e,i.depth,n)),o.target==="toPrisma"?v(o,r,`unsupported_prisma_${t}`,`${s} '${e}' is not supported by toPrisma()`):o.target==="toSql"&&(t==="field"||i.depth>1)&&v(o,r,`unsupported_sql_${t}`,`${s} '${e}' is not supported by toSql()`);},so=(e,t,r,o)=>{let n=qp.filter(s=>e[s]!==void 0);if(n.length>1)return v(r,t,"ambiguous_value_source","Takes one of value, path or bind"),null;if(n.length===0)return v(r,t,"missing_value_source","Requires value, path or bind"),null;let[i]=n;return i!=="value"&&(typeof e[i]!="string"||e[i]==="")?(v(r,`${t}.${i}`,"invalid_value_source",`${i} is a non-empty string`),null):(e.bindOptional!==void 0&&(i!=="bind"||typeof e.bindOptional!="boolean")&&v(r,`${t}.bindOptional`,"invalid_value_source","bindOptional is a boolean beside bind"),i==="path"&&yf(e.path,"path",`${t}.path`,r,o),i)},hf=(e,t,r,o,n,i)=>{let{offset:s}=e;if(s===void 0)return;let a=`${o}.offset`;if(!Ap.includes(r)){v(n,a,"unsupported_offset_operator",`Operator '${r}' has no comparison point to offset`);return}if(!kt(s)){v(n,a,"invalid_offset","An offset is one of { value }, { path } or { bind }");return}let p=so(s,a,n,i);if(p==="path"){let d=s.path,u=er(s);t==="date"&&u&&u.depth<=1&&n.target==="toSql"&&v(n,`${a}.path`,"unsupported_sql_path",`A row path on a date offset ('${d}') is not supported by toSql()`);return}if(p!=="value")return;let l=s.value;if(t==="field"){(typeof l!="number"||!Number.isFinite(l))&&v(n,`${a}.value`,"invalid_offset","A field offset value is a number");return}let f=kt(l)&&Object.keys(l).length===1&&U(l)?se(l):null;if(!f){v(n,`${a}.value`,"invalid_offset","A date offset value is { ago } or { ahead }");return}Sf(f[0],`${a}.value.${Object.keys(l)[0]}`,n,i);},wf=(e,t,r,o)=>{o.target!=="toSql"||!he.includes(t)||er(e)&&v(o,`${r}.path`,"unsupported_sql_path",`A range read from the row ('${e.path}') is not supported by toSql()`);},AS=(e,t,r,o)=>{if(typeof e.field!="string"&&v(r,`${t}.field`,"field_required","Field rule requires a string field"),oi(e,t,r,o),typeof e.operator!="string"||!rt(e.operator,"field")){v(r,`${t}.operator`,"invalid_operator",H(e.operator,"field").message);return}let n=e.operator;hf(e,"field",n,t,r,o),Mn(n,"field",r.target)||v(r,`${t}.operator`,`unsupported_${ni(r.target)}_operator`,`Operator '${n}' is not supported by ${r.target}()`),e.coerceType!==void 0&&!Cn(e.coerceType)&&v(r,`${t}.coerceType`,"invalid_coerce_type",`coerceType must be one of: ${Object.keys(I).join(", ")}`);let i=nt(n,"field");if(i==="none"){CS(e,t,r);return}so(e,t,r,o)!==null&&(wf(e,n,t,r),!(typeof e.path=="string"||typeof e.bind=="string")&&$S(i,e.value,n,`${t}.value`,r));},$S=(e,t,r,o,n)=>{switch(e){case "scalar":case "string":e==="string"&&typeof t!="string"&&v(n,o,"invalid_string_value",`Operator '${r}' requires a string value`);return;case "ordered":Y(t)||v(n,o,"invalid_ordered_value",`Operator '${r}' requires a string, number, or Date value`);return;case "array":Array.isArray(t)||v(n,o,"invalid_membership_value",`Operator '${r}' requires an array value`);return;case "pattern":{if(!(typeof t=="string"||t instanceof RegExp)){v(n,o,"invalid_pattern_value",`Operator '${r}' requires a string or RegExp value`);return}let i=Xp(t,n.target);i&&v(n,o,"unsupported_pattern",i);return}case "range":try{to(t,r);}catch(i){v(n,o,"invalid_range_value",i.message);}return}},PS=(e,t,r,o)=>{if(e.offset!==void 0&&v(r,`${t}.offset`,"unexpected_offset","Aggregate rules take no offset"),bf(e,t,r,o),typeof e.field!="string"&&v(r,`${t}.field`,"field_required","Aggregate rule requires a string field"),oi(e,t,r,o),!kt(e.aggregate)){v(r,`${t}.aggregate`,"invalid_aggregate","aggregate must be an object");return}let n=e.aggregate;if(De.includes(n.mode)||v(r,`${t}.aggregate.mode`,"invalid_aggregate_mode",Nt(n.mode).message),"field"in n&&n.field!==void 0&&typeof n.field!="string"&&v(r,`${t}.aggregate.field`,"invalid_aggregate_field","aggregate.field must be a string"),!_n.includes(e.operator)){v(r,`${t}.operator`,"invalid_aggregate_operator",`Aggregate rules only support: ${_n.join(", ")}`);return}if(r.target==="toPrisma"&&typeof e.path=="string"&&v(r,`${t}.path`,"unsupported_prisma_aggregate_path","path is not supported by toPrisma() for aggregate rules; use value instead"),"condition"in e&&e.condition!==void 0&&(r.target==="toSql"&&v(r,`${t}.condition`,"unsupported_sql_aggregate_condition","Aggregate condition filtering is not supported by toSql(); use check() or toPrisma()"),ft(e.condition,`${t}.condition`,r,o+1)),so(e,t,r,o)===null||typeof e.path=="string"||typeof e.bind=="string")return;let i=e.value;he.includes(e.operator)?MS(i)||v(r,`${t}.value`,"invalid_range_value",`Operator '${e.operator}' requires a two-item numeric range`):typeof i!="number"&&v(r,`${t}.value`,"invalid_aggregate_value","Aggregate rule value must be a number");},TS=(e,t,r,o)=>{if(typeof e.field!="string"&&r.target!=="check"&&v(r,`${t}.field`,"field_required","Array rule requires a string field for this target"),oi(e,t,r,o),bf(e,t,r,o),typeof e.arrayOperator!="string"||!rt(e.arrayOperator,"array")){v(r,`${t}.arrayOperator`,"invalid_array_operator",H(e.arrayOperator,"array").message);return}let n=e.arrayOperator;Mn(n,"array",r.target)||v(r,`${t}.arrayOperator`,`unsupported_${ni(r.target)}_array_operator`,`Array operator '${n}' is not supported by ${r.target}()`);let i=nt(n,"array"),s=e.condition!==void 0,a=()=>{e.count!==void 0&&v(r,`${t}.count`,"unexpected_count",`Array operator '${n}' does not accept count`);};i==="none"?(s&&v(r,`${t}.condition`,"unexpected_condition",`Array operator '${n}' does not accept condition`),a()):i==="predicate"?(s?ft(e.condition,`${t}.condition`,r,o+1):v(r,`${t}.condition`,"missing_condition",Oe(n).message),a()):i==="count"&&(r.target!=="toPrisma"&&typeof e.count!="number"?v(r,`${t}.count`,"missing_count",Jr(n).message):e.count!==void 0&&!(typeof e.count=="number"&&Number.isInteger(e.count)&&e.count>=0)&&v(r,`${t}.count`,"invalid_count","count must be a non-negative whole number"),s?ft(e.condition,`${t}.condition`,r,o+1):r.target==="check"&&v(r,`${t}.condition`,"missing_condition",Oe(n).message));},NS=(e,t,r,o)=>{if(typeof e.field!="string"&&v(r,`${t}.field`,"field_required","Date rule requires a string field"),oi(e,t,r,o),typeof e.dateOperator!="string"||!rt(e.dateOperator,"date")){v(r,`${t}.dateOperator`,"invalid_date_operator",H(e.dateOperator,"date").message);return}let n=e.dateOperator;hf(e,"date",n,t,r,o),Mn(n,"date",r.target)||v(r,`${t}.dateOperator`,`unsupported_${ni(r.target)}_date_operator`,`Date operator '${n}' is not supported by ${r.target}()`);let i=nt(n,"date");if(i==="dayList"){if(so(e,t,r,o)!=="value")return;let s=e.value;(!Array.isArray(s)||!s.every(a=>typeof a=="string"&&jp(a)))&&v(r,`${t}.value`,"invalid_day_list",`Date operator '${n}' requires an array of day names (${Hr.join(", ")})`);return}if(so(e,t,r,o)!==null&&(wf(e,n,t,r),!(typeof e.path=="string"||typeof e.bind=="string"))){if(U(e.value)){gf(e.value,n,`${t}.value`,r,o);return}if(vo.includes(n)){v(r,`${t}.value`,"invalid_date_range",Re(n).message);return}if(i==="dateRange"){if(!_S(e.value)){v(r,`${t}.value`,"invalid_date_range",`Date operator '${n}' requires a two-item date range`);return}e.value.forEach((s,a)=>{U(s)?gf(s,n,`${t}.value[${a}]`,r,o):Y(s)&&!_t(s,it).isValid()&&v(r,`${t}.value[${a}]`,"invalid_date_value",`Date operator '${n}' value '${String(s)}' does not parse as a date`);});return}if(!Y(e.value)){v(r,`${t}.value`,"invalid_date_value",`Date operator '${n}' requires a date-like value`);return}_t(e.value,it).isValid()||v(r,`${t}.value`,"invalid_date_value",`Date operator '${n}' value '${String(e.value)}' does not parse as a date`);}},Sf=(e,t,r,o)=>{if(!kt(e)||Object.keys(e).length===0){v(r,t,"invalid_relative_units","Relative offset requires at least one unit");return}for(let[n,i]of Object.entries(e)){if(!Ki(n)){v(r,`${t}.${n}`,"invalid_relative_unit",`Unknown relative unit '${n}'`);continue}let s=kt(i)?so(i,`${t}.${n}`,r,o):"literal";if(s===null||s==="path"||s==="bind")continue;let a=s==="value"?i.value:i,p=os(a,n);p&&v(r,`${t}.${n}`,"invalid_relative_magnitude",p);}},mf=(e,t,r)=>{(typeof e!="string"||!Dn.includes(e))&&v(r,t,"invalid_period_unit",`Unknown period unit '${String(e)}'`);},gf=(e,t,r,o,n)=>{let i=vo.includes(t),s=se(e);if(s){Sf(s[0],r,o,n);return}if(Po(e)){mf(Gn(e),r,o);return}if(Hi(e)){if(i){v(o,r,"invalid_date_range",Re(t).message);return}let a="start"in e?e.start:e.end;if(!kt(a)||!Po(a)){v(o,r,"invalid_period_unit","start/end requires a this/last/next period");return}mf(Gn(a),r,o);return}v(o,r,"invalid_date_expression","Unrecognized date expression");},CS=(e,t,r)=>{"value"in e&&e.value!==void 0&&v(r,`${t}.value`,"unexpected_value","Rule does not accept value"),"path"in e&&e.path!==void 0&&v(r,`${t}.path`,"unexpected_path","Rule does not accept path"),"bind"in e&&e.bind!==void 0&&v(r,`${t}.bind`,"unexpected_bind","Rule does not accept bind");},ni=e=>e==="toPrisma"?"prisma":e==="toSql"?"sql":"check",kt=e=>fe(e),MS=e=>Array.isArray(e)&&e.length===2&&typeof e[0]=="number"&&typeof e[1]=="number",_S=e=>Array.isArray(e)&&e.length===2&&(Y(e[0])||U(e[0]))&&(Y(e[1])||U(e[1])),bf=(e,t,r,o)=>{if(ce(e)&&r.target!=="check"&&(r.target==="toPrisma"&&io(e)!==null||v(r,t,`unsupported_${ni(r.target)}_window`,je(r.target).message)),"filter"in e&&e.filter!==void 0&&ft(e.filter,`${t}.filter`,r,o+1),"orderBy"in e&&e.orderBy!==void 0){let i=e.orderBy;Array.isArray(i)?i.forEach((s,a)=>{(!kt(s)||typeof s.field!="string"||s.dir!=="asc"&&s.dir!=="desc")&&v(r,`${t}.orderBy[${a}]`,"invalid_order_by",'orderBy entries must be { field: string, dir: "asc" | "desc" }');}):v(r,`${t}.orderBy`,"invalid_order_by","orderBy must be an array of { field, dir }");}for(let i of ["take","skip"])if(i in e&&e[i]!==void 0){let s=e[i];(typeof s!="number"||!Number.isInteger(s)||s<0)&&v(r,`${t}.${i}`,`invalid_window_${i}`,`${i} must be a non-negative integer`);}},v=(e,t,r,o)=>{e.errors.push({path:t,code:r,message:o});};var LS=/[.:]/,ls=e=>{let t=[];for(let[r,o]of Object.entries(e.maps))for(let[n,i]of Object.entries(o.models))for(let[s,a]of Object.entries(i.fields))a.kind!=="bridge"&&LS.test(s)&&t.push({path:`${$e({fieldMap:r,model:n})}.${s}`,message:"contains forbidden character . or :",code:"invalid_field_name"});return Dt(t)},xf=e=>ko(ls(e),"validateFieldMaps");var Ft=e=>!Object.hasOwn(e,"parent"),qe=e=>{let t=[],r=new Set,o=e;for(;!Ft(o);){if(r.has(o))throw new Error("cycle detected in narrowing parent chain");if(Object.hasOwn(o,"model")||Object.hasOwn(o,"maps"))throw new Error("a narrowing carries a base lens key (model / maps); it has a parent instead");r.add(o),t.unshift(o),o=o.parent;}return t},We=e=>Ft(e)?e:qe(e)[0].parent;var dt=e=>e.kind==="scalar"&&e.type==="Json",X=e=>e.kind==="object"||e.kind==="bridge",pr=(e,t)=>e.values??R(t,e.type);var Se=(e,t)=>e.kind==="object"?{mapName:t,modelName:e.type}:e.kind==="bridge"?ff(e.type,t):null;function*ii(e,t,r){let o=r.split("."),n=t;for(let i=0;i<o.length;i++){let s=o[i],a=Ae(R(e,n.mapName),n.modelName,s),p=a?Se(a,n.mapName):null;if(yield {index:i,field:s,at:n,entry:a,next:p},!p)return;n={...p,relPath:[...n.relPath,s]};}}var Ue=(e,t,r)=>{let o=e.split("."),n=[],i={mapName:"",modelName:r,relPath:[]};for(let{index:s,field:a,at:p,entry:l}of ii({"":t},i,e)){let f=p.modelName;if(!l)return {kind:"fallback",hops:n};if(l.kind==="bridge")return {kind:"bridge",hops:n};let d=s===o.length-1;if(l.kind==="object"){if(!M(t,l.type))return {kind:"fallback",hops:n};if(d)return {kind:"direct",hops:n,entry:l,model:f,column:a};n.push({field:a,prefix:o.slice(0,s+1).join("."),entry:l,from:f});continue}return d?{kind:"direct",hops:n,entry:l,model:f,column:a}:dt(l)?{kind:"json-path",hops:n,entry:l,model:f,column:a,stopIndex:s+1,jsonPath:o.slice(s+1)}:{kind:"past-scalar",hops:n,column:a}}return {kind:"fallback",hops:n}},jt=(e,t,r)=>t&&r?Ue(e,t,r):void 0,oe=(e,t,r)=>{let o=jt(e,t,r);return o?.kind==="direct"?o.entry:void 0},Rf=(e,t,r)=>Ue(e,t,r).hops.filter(o=>!o.entry.isList&&o.entry.isRequired===false).map(o=>o.prefix),ps=(e,t,r)=>{let o=Ue(e,t,r);return o.kind==="direct"&&o.entry.kind==="object"?o.entry.type:null},fs=(e,t,r)=>Ue(e,t,r).kind==="bridge",It=(e,t,r)=>!!t&&!!r&&Gp(e,(o,n)=>typeof o.field=="string"&&o.field!==""&&fs(o.field,t,n),(o,n)=>(typeof o.field=="string"?ps(o.field,t,n):n)??false,r);var ds=(e,t)=>t.length?D([...t,e]):e,kS=e=>{if(Xr(e).length)return false;let t=e.field,r=typeof t=="string"?q(t):null;try{return le(r?{...e,field:r.path}:e,{})===!0}catch{return false}},us=(e,t)=>{if(!t.length)return e;if(!kS(e))return D([...t.flatMap(n=>n.grants),e]);let[r,...o]=t;return lt([D([...r.grants,us(e,o)]),D([{field:r.prefix,operator:"notExists"},e])])},si=(e,t)=>Mt(e,{rewrite:r=>{if(Ee(r))return r;if(typeof r.field!="string"||r.field==="")throw new Error(`narrowRule: cannot re-root a relation grant of unknown shape under '${t}'`);let o=Xr(r);if(o.length)throw new Error(`narrowRule: cannot re-root a relation grant with a path reference ('${o[0]}') under '${t}'. Author the grant without 'path', or anchor it at the relation itself.`);if(q(r.field))throw new Error(`narrowRule: cannot re-root a relation grant with a scope ref field ('${r.field}') under '${t}'. Author the grant against the model's own columns.`);if(r.condition!==void 0)throw new Error(`narrowRule: cannot re-root a relation grant with a nested array/aggregate condition on '${r.field}' under '${t}'. Anchor such grants at the relation's own model.`);return {...r,field:`${t}.${r.field}`}},below:()=>false}),cs=(e,t)=>t.flatMap(r=>{let o=B(e,r.map,r.model,r.relPath);if(o.whereClauses.length===0)return [];if(r.isList)throw new Error(`narrowRule: cannot enforce a to-many relation grant on '${r.prefix}' without an arrayOperator condition to anchor it (row-scoped). Traverse '${r.prefix}' via an array operator (any/all/none/...) so the grant can be injected safely.`);return [{prefix:r.prefix,grants:o.whereClauses.map(n=>si(n,r.prefix))}]}),Of=(e,t)=>cs(e,t).flatMap(r=>r.grants),vf=(e,t,r)=>{let o=ye(e,r);if("outOfBounds"in o)throw new Error(`narrowRule: ${o.outOfBounds}`);if(!o.scope)return {hops:[],end:null};let n=e.slice(0,e.length-o.path.length);return ut(t.lens.maps,o.scope,o.path,n==="$."?"":n)},DS=(e,t,r,o)=>{if(q(e))return vf(e,t,r).hops;if(o)return [];let n=r.length===1?"":`${"$".repeat(r.length)}.`;return r[0]?ut(t.lens.maps,r[0],e,n).hops:[]},Ef=(e,t,r)=>{if(Ee(e)||typeof e.field!="string"||e.field==="")return null;let{hops:o,end:n}=vf(e.field,t,r);return {hops:o,below:n}},ms=(e,t,r,o=false)=>Mt(e,{below:(n,i)=>{let s=Ef(n,t,i);return s?s.below?[...i,s.below]:at(n)?[...i,null]:false:false},after:(n,i)=>{let s=Ef(n,t,i);if(!s)return n;let a=Of(t,Xr(n).flatMap(u=>DS(u,t,i,o))),p=s.below;if(!p||!at(n))return ds(us(n,cs(t,s.hops)),a);let l=[...B(t,p.mapName,p.modelName,p.relPath).whereClauses,...Of(t,eo(n).flatMap(u=>ut(t.lens.maps,p,u).hops))],f=n.condition===void 0||n.arrayOperator===E.all||ce(n),d={...n};return l.length&&f?d.filter=D([...n.filter!==void 0?[n.filter]:[],...l]):l.length&&(d.condition=D([...l,n.condition])),ds(us(d,cs(t,s.hops.slice(0,-1))),a)}},[r]),Af=(e,t)=>Pf(e,t,false),$f=(e,t)=>Pf(e,t,true),Pf=(e,t,r)=>{let o=N(t),n=B(o,o.lens.mapName,o.lens.model,[]),i=ms(e,o,{mapName:o.lens.mapName,modelName:o.lens.model,relPath:[]},r);return ds(i,n.whereClauses)};var Do=e=>e===void 0?void 0:Array.isArray(e)?e:[e],Fo=e=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&("where"in e||"label"in e||"groupBy"in e||"from"in e),jo=e=>{if(Fo(e))return e;if(typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===0)throw new Error("sources: {} is not a Condition \u2014 use `true` for an unconstrained source");return {where:e}},fr=["__offpath__"],N=e=>{let t=We(e),r=Ft(e)?[]:qe(e);return {lens:t,chain:r}},ai=(e,t)=>e===null?new Set(t):new Set(t.filter(r=>e.has(r))),ys=e=>{if(!e.picks)return;if(!("relations"in e)||!e.relations)return e.picks;let t=[...e.picks];for(let r of Object.keys(e.relations))t.includes(r)||t.push(r);return t},FS=(e,t)=>{let r=ys(t);if(r&&(e.picks=ai(e.picks,r)),t.omits)for(let o of t.omits)e.omits.add(o);},Tf=(e,t,r)=>{e.set(t,ai(e.get(t)??null,r));},Nf=(e,t,r)=>{let o=e.get(t)??new Set;for(let n of r)o.add(n);e.set(t,o);},jS=(e,t,r)=>{if(r.enumPicks)for(let[o,n]of Object.entries(r.enumPicks))Tf(e,o,n);if(r.enumOmits)for(let[o,n]of Object.entries(r.enumOmits))Nf(t,o,n);},gs=(e,t,r)=>JSON.stringify([e,t,r]),IS=(e,t,r,o)=>{if(FS(e,t),t.where!==void 0&&e.whereClauses.push(r(t.where)),t.sources)for(let[n,i]of Object.entries(t.sources)){let s=jo(i),a=e.sources.get(n)??[];s.where!==void 0&&a.push(r(s.where)),e.sources.set(n,a);let p=Do(s.groupBy);for(let[l,f,d]of [["label",s.label,e.sourceLabels.get(n)],["groupBy",p,e.sourceGroupBys.get(n)]]){if(f===void 0)continue;let u=gs(n,l,f);d!==void 0&&gs(n,l,d)===u||e.sourceDeclaredAt.set(u,o);}s.label!==void 0&&e.sourceLabels.set(n,s.label),p!==void 0&&e.sourceGroupBys.set(n,p),s.from==="mapDefaults"&&!e.sourcesFromMapDefaults.has(n)&&e.sourcesFromMapDefaults.set(n,o);}},B=(e,t,r,o)=>{let n={picks:null,omits:new Set,enumValuesByField:new Map,whereClauses:[],sources:new Map,sourceLabels:new Map,sourceGroupBys:new Map,sourceDeclaredAt:new Map,sourcesFromMapDefaults:new Map,relations:new Map},i=R(e.lens.maps,t),s=M(i,r);if(!s)return n;let a=new Map,p=new Map,l=new Map,f=new Map,d=y=>y,u=0,g=y=>{IS(n,y,d,u),jS(a,p,y);};for(let[y,m]of e.chain.entries()){u=y;let S={lens:e.lens,chain:e.chain.slice(0,y)};d=c=>y===0?c:ms(c,S,{mapName:t,modelName:r,relPath:o});let b=R(m.mapDefaults,t);if(b){let c=R(b.models,r);c&&g(c);for(let[x,O]of Object.entries(b.enums??{}))O.picks&&Tf(l,x,O.picks),O.omits&&Nf(f,x,O.omits);}let w=m.root;if(o.length===0){if(t===e.lens.mapName&&r===e.lens.model&&w){g(w);for(let[c,x]of Object.entries(w.relations??{}))n.relations.set(c,x);}}else {for(let c of o)if(w=R(w?.relations,c),!w)break;if(w){g(w);for(let[c,x]of Object.entries(w.relations??{}))n.relations.set(c,x);}}}for(let[y,m]of Object.entries(s.fields)){let S=m.kind==="enum",w=m.options?.map(A=>A.value)??(S?pr(m,i?.enums):m.values);if(!w)continue;let c=w;if(S){let A=l.get(m.type),te=f.get(m.type);A&&(c=c.filter(Ut=>A.has(Ut))),te&&(c=c.filter(Ut=>!te.has(Ut)));}let x=a.get(y),O=p.get(y);x&&(c=c.filter(A=>x.has(A))),O&&(c=c.filter(A=>!O.has(A))),n.enumValuesByField.set(y,c);}return n},li=(e,t,r,o)=>B(e,t,r,fr).sources.has(o),pi=(e,t,r,o)=>new Error(`source '${o}' at '${e}' offers mapDefaults.${t}.models.${r}.sources.${o}, which no layer declares`),Ge=(e,t)=>!(e.omits.has(t)||e.picks!==null&&!e.picks.has(t)),fi=(e,t)=>e.enumValuesByField.get(t)??null,ao=(e,t,r)=>{let o=r.split("."),n=[],i=[];for(let{index:s,field:a,at:p,entry:l,next:f}of ii(e.lens.maps,t,r)){if(!l)return {resolution:{outcome:"missing",index:s,hops:n},effects:i};let d=B(e,p.mapName,p.modelName,p.relPath);if(!Ge(d,a))return {resolution:{outcome:"hidden",index:s,hops:n},effects:i};let u={field:a,entry:l,mapName:p.mapName,model:p.modelName,relPath:[...p.relPath]};n.push(u),i.push(d);let g=s===o.length-1;if(g||dt(l))return {resolution:{outcome:"resolved",hops:n,terminal:u,jsonSubPath:g?[]:o.slice(s+1)},effects:i};if(!f)return {resolution:{outcome:"pastScalar",index:s,hops:n},effects:i}}return {resolution:{outcome:"missing",index:o.length,hops:n},effects:i}},lo=(e,t,r,o,n)=>{let i=n==="label"?t.sourceLabels.get(o):t.sourceGroupBys.get(o);if(i===void 0)return true;let s=t.sourceDeclaredAt.get(gs(o,n,i))??-1,a={lens:e.lens,chain:e.chain.filter((p,l)=>l!==s)};return (typeof i=="string"?[i]:i).every(p=>ao(a,r,p).resolution.outcome!=="hidden")},po=(e,t,r)=>{let{resolution:o,effects:n}=ao(e,t,r);if(o.outcome!=="resolved")return null;let{terminal:i,jsonSubPath:s}=o;return {mapName:i.mapName,modelName:i.model,relPath:i.relPath,entry:i.entry,terminalEffect:n[n.length-1],terminalFieldName:i.field,jsonSubPath:s}},Ke=e=>({mapName:e.lens.mapName,modelName:e.lens.model,relPath:[],open:false}),fo=(e,t,r)=>{let o=ye(r,t);if("outOfBounds"in o)return {issue:{code:"scope_out_of_bounds",message:o.outOfBounds}};if(o.scope.open)return {from:o.scope,next:o.scope,walked:null};let n=po(e,o.scope,o.path);if(!n)return {issue:{code:"not_in_lens",message:"path does not resolve through the narrowed lens"}};let i=dt(n.entry),s=Se(n.entry,n.mapName),a=s?{...s,relPath:[...n.relPath,n.terminalFieldName],open:i}:{...o.scope,open:i};return {from:o.scope,next:a,walked:n}},ut=(e,t,r,o="")=>{let n=r.split("."),i=[],s=null;for(let{index:a,field:p,at:l,entry:f,next:d}of ii(e,t,r)){if(!f||!d)break;let u=[...l.relPath,p];i.push({map:d.mapName,model:d.modelName,relPath:u,prefix:`${o}${n.slice(0,a+1).join(".")}`,isList:f.isList===true}),a===n.length-1&&(s={...d,relPath:[...u]});}return {hops:i,end:s}};var ws="parent:",Ss=e=>e.startsWith(ws),Mf=e=>Ss(e)?e.slice(ws.length):e,hs=(e,t)=>{let r={...e};if(e.where!==void 0&&(r.where=t(e.where)),e.sources){let o={};for(let[n,i]of Object.entries(e.sources))o[n]=Fo(i)?i.where!==void 0?{...i,where:t(i.where)}:i:t(i);r.sources=o;}if("relations"in e&&e.relations){let o={};for(let[n,i]of Object.entries(e.relations))o[n]=hs(i,t);r.relations=o;}return r},_f=(e,t)=>{let r={};for(let[o,n]of Object.entries(e.mapDefaults??{})){let i={};for(let[s,a]of Object.entries(n.models??{}))i[s]=hs(a,t);r[o]=n.models?{...n,models:i}:n;}return {...e,root:e.root?hs(e.root,t):void 0,mapDefaults:e.mapDefaults?r:void 0}},bs=e=>{let t=[];return _f(e,r=>(t.push(r),r)),t},Cf=e=>{let t=new Set;for(let r of bs(e))for(let o of Co(r))Ss(o)||t.add(o);return t},Lf=e=>{let t=new Set;for(let r of qe(e))for(let o of bs(r))for(let n of Co(o,{required:true}))t.add(Mf(n));return [...t].sort()},kf=(e,t)=>{if(Ft(e))return e;let r={...t};for(let[o,n]of Object.entries(t))r[`${ws}${o}`]=n;return {..._f(e,o=>ts(o,r)),parent:kf(e.parent,t)}},Df=(e,t)=>kf(e,t),Ff=e=>{let t=[],r=new Set;for(let n of qe(e.parent))for(let i of Cf(n))r.add(i);for(let n of Cf(e))r.has(n)&&t.push(`bind name '${n}' already declared by an ancestor narrowing \u2014 rename it, or reference the inherited one as 'parent:${n}'`);let o=new Set;for(let n of bs(e))for(let i of Co(n))Ss(i)&&o.add(Mf(i));for(let n of o)r.has(n)||t.push(`bind 'parent:${n}' references an inherited binding no ancestor declares`);return t};var jf=(e,t)=>{let r=N(t),o=(n,i)=>typeof n=="string"&&n!==""?fo(r,i,n):null;return Mt(e,{rewrite:(n,i)=>{if(Z(n)!=="field"||n.coerceType)return n;let s=o(n.field,i);if(!s||"issue"in s||!s.walked||s.walked.jsonSubPath.length)return n;let{entry:a}=s.walked;return a.kind==="scalar"&&Lp.includes(a.type)?{...n,coerceType:a.type}:n},below:(n,i)=>{if(!at(n))return false;let s=o(n.field,i),a=s&&!("issue"in s)?s.walked?.entry:void 0;return s&&!("issue"in s)&&a&&X(a)?[...i,s.next]:false}},[Ke(r)])};var If=({maps:e,bridges:t,mapName:r,model:o})=>({...ti({maps:e,bridges:t}),mapName:r,model:o});var di=e=>e?.kind==="json-path"?"json-path":e?.kind!=="direct"?"unknown":e.entry.kind==="object"?e.entry.isList?"relations":"relation":e.entry.isList?"list":e.entry.kind==="enum"?"enum":Bf(e.entry.type),Bf=e=>e===I.Json?"json":e===I.Enum?"enum":e===I.DateTime?"instant":e===I.String?"text":"scalar",ui=(e,t,r)=>{let o=oe(e.field,t,r);return o?o.kind==="scalar"&&(o.type==="String"||o.type==="Json"):e.coerceType===void 0||e.coerceType==="String"||e.coerceType==="Json"},ci=(e,t,r)=>{if(di(jt(e,t,r))==="relations")throw In(e)},dr=e=>e!=="scalar"&&e!=="instant"&&e!=="list"&&e!=="enum"&&e!=="relation"&&e!=="relations",uo=(e,t)=>dr(e)&&Vf(t),Vf=e=>typeof e=="string"||Array.isArray(e)&&e.some(Vf),me=(e,t,r)=>{let o=di(jt(e.field,t,r));return o==="unknown"&&e.coerceType!==void 0?Bf(e.coerceType):o},ct=e=>{if(!e.isList){if(e.kind==="enum")return I.Enum;if(!(e.kind!=="scalar"||e.type===I.Json))return Cn(e.type)?e.type:void 0}};var xs=(e,t)=>{let r=ir(e,I.DateTime,t);return typeof r=="number"&&!Number.isNaN(new Date(r).getTime())?r:void 0},BS=(e,t,r)=>o=>{if(o==null)return o;let n=xs(o,r);if(n===void 0)throw new Error(`Invalid date value for DateTime field '${e}': ${String(o)}`);return t==="toPrisma"?new Date(n):new Date(n).toISOString()},mi=(e,t,r,o,n)=>{if(t==null||r?.kind==="json-path")return t;let i=r?.kind==="direct"?r.entry:void 0;if(i?.isList)return t;let s=i?ct(i):void 0;if(e.coerceType!==void 0&&s!==void 0&&e.coerceType!==s)throw new Error(`coerceType '${e.coerceType}' overrides ${s} field '${e.field}', but ${o} compares the column as stored \u2014 evaluate it in memory with check(), or drop the override.`);if((s??e.coerceType)===I.DateTime){let p=BS(e.field,o,n());return Array.isArray(t)?t.map(p):p(t)}if(e.coerceType===void 0&&s===I.String&&(Array.isArray(t)?t:[t]).some(p=>typeof p=="number"||typeof p=="boolean"))throw new Error(`'${e.field}' is String but the literal is not a string; pass a string, or stamp coerceType: 'String'.`);if(e.coerceType===void 0&&s!==void 0&&(xe.includes(s)||s===I.Boolean)&&(Array.isArray(t)?t:[t]).some(p=>typeof p=="string"))throw new Error(`'${e.field}' is ${s} but the literal is a string; pass a ${s===I.Boolean?"boolean":"number"}, or stamp coerceType: '${s}'.`);return e.coerceType!==void 0&&kp.includes(e.coerceType)?ir(t,e.coerceType,e.coerceType===I.DateTime?n():void 0):t};var qf=e=>Array.isArray(e)?e.flatMap(qf):[e],Io=e=>e.value===void 0?null:qf(e.value),VS=e=>xs(e)!==void 0,qS=/^-?\d+(\.\d+)?$/,WS={String:{expected:"a string",fits:e=>typeof e=="string"},Enum:{expected:"a string",fits:e=>typeof e=="string"},Int:{expected:"an integer",fits:Number.isSafeInteger},BigInt:{expected:"an integer",fits:Number.isSafeInteger},Float:{expected:"a number",fits:Number.isFinite},Decimal:{expected:"a number or a numeric string",fits:e=>Number.isFinite(e)||typeof e=="string"&&qS.test(e)},Boolean:{expected:"a boolean",fits:e=>typeof e=="boolean"},DateTime:{expected:"a date",fits:VS},Json:{expected:"a value",fits:()=>true},Bytes:{expected:"a value",fits:()=>true}},US=e=>typeof e=="string"?`'${e}'`:typeof e=="object"&&e!==null?JSON.stringify(e):String(e),Wf=(e,t)=>{let r="coerceType"in e?e.coerceType:void 0,o=r??t;if(o===void 0||o===I.Json)return [];let n="operator"in e?e.operator:e.dateOperator,i=Wr(e);if(!i)return [];let a=r!==void 0&&r!==t?`field '${e.field}' coerced to ${o}`:`${o} field '${e.field}'`;if(!i.kinds.includes(o))return [{path:e.field,code:"operator_kind_mismatch",message:`operator '${n}' does not apply to ${a} (applies to: ${i.kinds.join(", ")})`}];if(e.offset!==void 0&&!("dateOperator"in e?o===I.DateTime:xe.includes(o)))return [{path:e.field,code:"invalid_offset",message:`an offset does not apply to ${a}`}];if("dateOperator"in e||i.valueShape==="none"||i.valueShape==="pattern")return [];if(Dp.includes(i.valueShape)&&Array.isArray(e.value))return [{path:e.field,code:"invalid_value_shape",message:`operator '${n}' compares one value, but ${a} was given a list`}];let{expected:p,fits:l}=WS[o],f=u=>{try{return l(ir(u,o))}catch{return false}},d=u=>l(u)||r!==void 0&&f(u);return (Io(e)??[]).filter(u=>u!==null&&!d(u)).map(u=>({path:e.field,code:"invalid_value",message:`value ${US(u)} does not fit ${a} (expected ${p})`}))},Uf=(e,t,r)=>{if(r.isList===true||dt(r))return null;let o=X(r)?`arrayOperator '${t}' needs a list, but '${e}' is a to-one relation \u2014 a single related record; address its fields directly (e.g. '${e}.<field>')`:`arrayOperator '${t}' needs a list, but '${e}' is a single ${ct(r)??r.type} value`;return {path:e,code:"invalid_array_operator",message:o}};var Gf=(e,t,r,o,n=false)=>Q(e,(i,s)=>{let a=Z(i);if(a===null)return o.push({path:typeof i.field=="string"?i.field:"",code:"ambiguous_condition",message:Fe().message}),false;if(Ee(i))return;let p=i,l=w=>{let c=ye(w,s);return "outOfBounds"in c?(o.push({path:w,code:"scope_out_of_bounds",message:c.outOfBounds}),null):{scope:c.scope,field:c.path}},f=s[s.length-1],d=true,u=null;if("field"in p&&typeof p.field=="string"&&p.field!==""){let w=fo(t,s,p.field);"issue"in w?(o.push({path:p.field,...w.issue}),d=false):{next:f,walked:u}=w;}let g=u?.entry??null,y=u?.terminalFieldName??null,m=u?.entry.kind==="enum",S=u?.entry.type??null,b=u&&u.jsonSubPath.length===0?fi(u.terminalEffect,u.terminalFieldName):null;for(let{ref:w,role:c}of es(p)){if(!q(w)&&n)continue;let x=q(w)?l(w):{scope:Ke(t),field:w};if(!x||x.scope.open)continue;let O=po(t,x.scope,x.field);if(!O){o.push({path:w,code:"not_in_lens",message:c==="value"?"path (comparison ref) does not resolve through the narrowed lens":"offset or magnitude ref does not resolve through the narrowed lens"});continue}if(X(O.entry)){o.push({path:w,code:"not_in_lens",message:"a value ref reads a column, not a relation"});continue}let A=ct(O.entry);if(c==="value"||c==="shift"||A===void 0)continue;(c==="whole"?_p.includes(A):xe.includes(A))||o.push({path:w,code:"not_in_lens",message:`${c==="whole"?"a calendar unit reads a whole number":"an offset or magnitude reads a number"}, not ${A}`});}if(!d)return false;if("arrayOperator"in p&&typeof p.field=="string"&&g){let w=Uf(p.field,p.arrayOperator,g);if(w)return o.push(w),false}if(g&&X(g)&&(a==="field"||a==="date")&&(g.isList||!sr(p))){let w=p.field;return o.push({path:w,code:"operator_kind_mismatch",message:(g.isList?In(w):Qr(w)).message}),false}if(!g?.isList&&(a==="field"||a==="date")&&o.push(...Wf(p,g?ct(g):void 0)),!f.open)for(let w of eo(p))w!==""&&!po(t,f,w)&&o.push({path:w,code:"not_in_lens",message:"an orderBy or aggregate field does not resolve through the narrowed lens"});if(b&&"operator"in p&&y){let w=Io(p);if(w){let c=new Set(b),x=m?`enum '${S}'`:`field '${y}'`;for(let O of w)typeof O=="string"&&!c.has(O)&&o.push({path:y,code:"value_not_allowed",message:`value '${O}' is not in the allowed set for ${x} (allowed: ${[...c].join(", ")})`});}}return [...s,f]},[r]),Rs=(e,t,r,o,n)=>{let i=[];return Gf(e,t,{mapName:r,modelName:o,relPath:n,open:false},i),i},Kf=(e,t)=>{let r=N(t),o=[];return Gf(e,r,{mapName:r.lens.mapName,modelName:r.lens.model,relPath:[],open:false},o,true),Dt(o)},gi=(e,t)=>{let r=N(t);return Dt(Rs(e,r,r.lens.mapName,r.lens.model,[]))};var GS=(e,t)=>Q(e,(r,o)=>{if(t.sources.add(o[o.length-1].mapName),Ee(r)||typeof r.field!="string"||r.field==="")return;let n=fo(t.policy,o,r.field);return "issue"in n?false:(n.walked&&(t.sources.add(n.walked.mapName),(n.walked.entry.kind==="bridge"||n.walked.mapName!==n.from.mapName)&&(t.bridgesCrossed=true)),[...o,n.next])},[Ke(t.policy)]),zf=(e,t)=>{let o={policy:N(t),sources:new Set,bridgesCrossed:false};return GS(e,o),{sources:[...o.sources].sort(),bridgesCrossed:o.bridgesCrossed,supportedTargets:P.filter(n=>(n==="check"||!o.bridgesCrossed)&&ri(e,{target:n}).ok),errors:gi(e,t).errors}};var KS=new Set([ot.scalar,ot.ordered,ot.array,ot.dayList,ot.dateValue]),zS=new Set([ot.none,ot.count]),HS=e=>{if(e.offset!==void 0||No(e).some(({source:r})=>r.value===void 0))return {values:[],dynamic:true};let t=Wr(e);return t?zS.has(t.valueShape)?{values:[],dynamic:false}:KS.has(t.valueShape)?"value"in e?{values:Io(e)??[],dynamic:false}:{values:[],dynamic:false}:{values:[],dynamic:true}:{values:[],dynamic:true}},JS=e=>e instanceof Date?`d:${+e}`:e instanceof RegExp?`r:${e}`:typeof e=="object"&&e!==null?`j:${JSON.stringify(e)}`:`p:${typeof e}:${String(e)}`,Hf=(e,t)=>{let r=N(t),o=r.lens.model,n=new Map,i=new Map,s=(p,l)=>{if(p.length===0)return;let f=po(r,{mapName:r.lens.mapName,modelName:o,relPath:[]},p.join("."));if(!f||f.jsonSubPath.length>0)return;let{mapName:d,modelName:u,relPath:g,terminalEffect:y,terminalFieldName:m}=f;if(!y.sources.has(m))return;let S=[o,...g].join("."),b=`${S}|${m}`,w=n.get(b);w||(w={path:S,mapName:d,model:u,field:m,values:[],dynamic:false},n.set(b,w));let c=HS(l);c.dynamic&&(w.dynamic=true);let x=i.get(b)??new Set;i.set(b,x);for(let O of c.values){let A=JS(O);x.has(A)||(x.add(A),w.values.push(O));}},a=(p,l)=>{let f=ye(p,l);if(!("outOfBounds"in f))return [...f.scope,...f.path.split(".")]};return Q(e,(p,l)=>{if(Ee(p))return;let f=typeof p.field=="string"?a(p.field,l):l.at(-1);return f?(!at(p)&&typeof p.field=="string"&&s(f,p),[...l,f]):false},[[]]),[...n.values()]};var yi=(e,t,r)=>{if(!e||!("maps"in e))return e;if(!t)throw new Error(`${r}: 'map' is a FieldMapSet \u2014 'mapName' is required to resolve which map to use.`);let o=R(e.maps,t);if(!o)throw new Error(`${r}: fieldMap set has no entry for '${t}'`);return o};var hi=(e,t,r)=>{if(t?.lens===void 0)return {condition:e,options:t};let{lens:o}=t;if(t.map!==void 0||t.mapName!==void 0||t.model!==void 0)throw new Error(`${r}: pass \`lens\` or \`map\` / \`mapName\` / \`model\`, not both \u2014 the lens names its own`);let n=Kf(e,o);if(!n.ok)throw new Error(`${r}: the rule leaves the lens \u2014 ${n.errors.map(s=>`${s.path}: ${s.message}`).join("; ")}`);let i=We(o);return {condition:$f(e,o),options:{...t,lens:void 0,map:i,mapName:i.mapName,model:i.model}}};var Jf=e=>({field:e,operator:"notExists"}),QS=(e,t)=>{let r=t(e);if(r===null){let n=e.operator??e.dateOperator;return k.includes(n)?{field:e.field,operator:"exists"}:true}if("aggregate"in r){let n=R(Ao,r.operator);return n?{...r,operator:n}:{...r,operator:R(Fn,r.operator)}}if(typeof r.dateOperator=="string"){let n=R(Bp,r.dateOperator);return n?{...r,dateOperator:n}:lt([{...r,dateOperator:R(Fn,r.dateOperator)},Jf(r.field)])}if(typeof r.arrayOperator=="string"){let n=r.count;switch(r.arrayOperator){case E.any:return {...r,arrayOperator:E.none};case E.none:return {...r,arrayOperator:E.any};case E.all:return {...r,arrayOperator:E.any,condition:be(r.condition,t)};case E.empty:return {...r,arrayOperator:E.notEmpty};case E.notEmpty:return {...r,arrayOperator:E.empty};case E.atLeast:return n<=0?false:{...r,arrayOperator:E.atMost,count:n-1};case E.atMost:return {...r,arrayOperator:E.atLeast,count:n+1};case E.exactly:return lt([...n>0?[{...r,arrayOperator:E.atMost,count:n-1}]:[],{...r,arrayOperator:E.atLeast,count:n+1}])}}let o=R(Ao,r.operator);return o?{...r,operator:o}:lt([{...r,operator:R(Fn,r.operator)},Jf(r.field)])},be=(e,t=r=>r)=>{if(typeof e=="boolean")return !e;let r=e;if(Array.isArray(r.all))return lt(r.all.map(o=>be(o,t)));if(Array.isArray(r.any))return D(r.any.map(o=>be(o,t)));if("if"in r){let o=D([r.if,be(r.then,t)]);return r.else===void 0?o:{any:[o,D([be(r.if,t),be(r.else,t)])]}}return QS(r,t)},Qf=e=>Z(e)==="field"&&e.value!==void 0&&ae(e,e.value)?null:e;var wi=(e,t,r,o)=>{if(!Op.includes(e.operator))throw new Error(`'${e.operator}' does not apply to the enum '${e.field}'; compare its values with equals / in.`);let n=de(e.caseInsensitive),i=pr(r,o?.enums),{values:s,hasNull:a}=pt(Pt.includes(e.operator)?[t]:t);if(!n&&(!i||s.every(d=>typeof d=="string"&&i.includes(d))))return null;if(!i)throw new Error(`'${e.field}' is an enum: a case-insensitive comparison reads its declared values, which the map doesn't list.`);let p=d=>n?d.toLowerCase():d,l=new Set(s.filter(d=>typeof d=="string").map(d=>p(d))),f=i.filter(d=>l.has(p(d)));return k.includes(e.operator)?{values:i.filter(d=>!f.includes(d)),matchesNull:!a}:{values:f,matchesNull:a}};var G=e=>`"${e.replace(/"/g,'""')}"`;var ee=e=>e.replace(/\\/g,"\\\\").replace(/%/g,"\\%").replace(/_/g,"\\_"),Os=(e,t,r=false)=>{let[o,...n]=e.split("."),i=t?`${G(t)}.${G(o)}`:G(o);if(n.length===0)return i;let s=n.map(Es),a=s.pop();return [i,...s].join("->")+(r?"->":"->>")+a},Es=e=>`'${e.replace(/'/g,"''")}'`;var YS=["@prisma/client/runtime/client","@prisma/client/runtime/library"],Si,XS=()=>{if(Si!==void 0)return Si;for(let e of eb())for(let t of YS)try{let r=e(t);if(r.AnyNull!==void 0)return Si=r.AnyNull,Si}catch{}},eb=()=>{let e=[];try{e.push(createRequire(import.meta.url));}catch{}return typeof Li=="function"&&e.push(Li),e},Zf=()=>{let e=Qt.get("prismaOptions.anyNull")??XS();if(e===void 0)throw new Error("A null check on a Json field needs Prisma's AnyNull, and @prisma/client isn't installed: engineGlobals.set('prismaOptions.anyNull', Prisma.AnyNull).");return e};var Yf,Xf=e=>{Yf=e;},z=(e,t,r)=>Yf(e,t,r);var tb=(e,t)=>{let r=q(e);if(r)throw r.depth>1?new Error(Eo(e,"toPrisma")):new Error(`Path '${e}' is not supported by toPrisma(): Prisma WHERE has no column-to-column comparison or arithmetic. Use toSql() or prisma.$queryRaw.`);return vn(e,t?.context,"toPrisma")},ze=(e,t)=>To(e,{value:r=>r,path:r=>tb(r,t),bind:(r,o)=>zn(r,o,"toPrisma")}),Bo=e=>t=>ze(t,e),co=e=>nr({now:e?.now,timeZone:e?.timeZone,weekStart:e?.weekStart},Bo(e)),mo=e=>t=>{let r=typeof t.operator=="string"||typeof t.dateOperator=="string",o=t.value!==void 0||typeof t.path=="string"&&t.path!==""||typeof t.bind=="string";if(!r||"aggregate"in t||!o)return t;let n=me({field:String(t.field)},e?.map,e?.model);if((n==="json"||n==="json-path")&&typeof t.operator=="string"&&Ur.includes(t.operator))throw C("toPrisma",`The complement of '${t.operator}' on the Json value '${t.field}'`,"it keeps values of other types");let i=ze(t,e),s=t.offset===void 0?void 0:ze(t.offset,e);if(t.offset!==void 0&&s==null)return null;let{path:a,bind:p,bindOptional:l,...f}=t,d={...f,value:i,...t.offset!==void 0&&{offset:{value:s}}};return typeof t.dateOperator=="string"?i==null||ae({operator:t.dateOperator},i)?null:d:Qf(d)};var mt=()=>({}),ur=mt,Bt=()=>({OR:[]}),vs=e=>Object.keys(e).length===0,ed=e=>{let t=Object.keys(e);return t.length===1&&t[0]==="OR"&&Array.isArray(e.OR)&&e.OR.length===0},cr=e=>{if(e.some(ed))return Bt();let t=e.filter(r=>!vs(r));return t.length===0?mt():t.length===1?t[0]:{AND:t}},V=e=>{if(e.some(vs))return mt();let t=e.filter(r=>!ed(r));return t.length===0?Bt():t.length===1?t[0]:{OR:t}},ge=e=>vs(e)?e:{NOT:e},td=(e,t,r)=>cr(e.all.map(o=>z(o,t,r))),rd=(e,t,r)=>V(e.any.map(o=>z(o,t,r))),od=(e,t,r)=>{if(It(e,t?.map,t?.model))return ur();let o=z(be(e.if,mo(t)),t,r),n=z(e.then,t,r),i=V([o,n]);if(e.else!==void 0){let s=z(e.if,t,r),a=z(e.else,t,r);return cr([i,V([s,a])])}return i};var nd=(e,t,r)=>{let o=or(ze(t,r));return o===null?null:rr(e,o)},id=(e,t,r)=>{if(e===null)return null;let o=ro(ze(t,r)),n=o&&tr(o[0],Bo(r));return !o||!n?null:Ct(Be(e),n,o[1],co(r).timeZone).toDate()};var mr=(e,t)=>{let r=e.split("."),o=t;for(let n=r.length-1;n>=0;n--)o={[r[n]]:o};return o};var As=(e,t)=>me(e,t?.map,t?.model),He=e=>e==="json"||e==="json-path",Vt=e=>He(e)?Zf():null,gr=(e,t)=>t?.map&&t?.model?Rf(e,t.map,t.model).map(r=>mr(r,{is:null})):[],$s=(e,t)=>{let r=As(e,t);return [...He(r)||r==="list"||oe(e.field,t?.map,t?.model)?.isRequired===false?[gt(e.field,{equals:Vt(r)},t)]:[],...gr(e.field,t)]},bi=(e,t,r,o)=>{if(r.mode&&He(o)&&Array.isArray(t))throw C("toPrisma",`A case-insensitive comparison of a Json value with the list ${JSON.stringify(t)}`);if(!r.mode||typeof t!="string")return {[e]:t,...r};if(!He(o))return {[e]:ee(t),...r};if(/[%_\\"\u0000-\u001f]/.test(t))throw C("toPrisma",`A case-insensitive equality on Json against '${t}'`,"Prisma matches the JSON text, where %, _, a backslash, a quote or a control character doesn't read as itself");return {[e]:t,...r}},Ps=(e,t,r,o)=>{let n=t?.datasource?.provider??Qt.get("prismaOptions.datasource.provider");return de(e.caseInsensitive)&&wp(n)&&uo(r,o)?{mode:"insensitive"}:{}},sd=(e,t)=>{if(e==="list")return [{isEmpty:true}];let r=t?[{equals:""}]:[];return He(e)?[...r,{equals:[]}]:r},ad=e=>"isEmpty"in e?{isEmpty:false}:{not:e.equals},Ts=(e,t,r,o,n)=>{let i=a=>gt(e,a,n),s=sd(t,o);return r?V([i({equals:Vt(t)}),...gr(e,n),...s.map(a=>i(a))]):cr([...t==="list"?[]:[i({not:Vt(t)})],...s.map(a=>i(ad(a)))])},ob=(e,t)=>{if(!sr(e))throw Qr(e.field);let o=(n=>gt(e.field,n,t))({is:{}});return le({...e,field:"relation"},{relation:null})===true?ge(o):o},nb=(e,t)=>oe(e.field,t?.map,t?.model),ld=mt(),ib=(e,t,r)=>{if(t==="list"||He(t)||nb(e,r)?.isRequired!==true)return null;let o=e.field.split(".").slice(0,-1).join(".");return o?gt(o,{is:{}},r):ld},pd=(e,t)=>{let r=m=>gt(e.field,m,t),o=As(e,t),n=()=>$s(e,t),i=ui(e,t?.map,t?.model);if(o==="relation")return ob(e,t);let s=ib(e,o,t),a=s&&(s===ld?Bt():ge(s)),p=m=>s&&a?le({field:"f",operator:m,value:null},{f:null})===true?a:s:null;if(s&&a&&sr(e)){let m=sd(o,i);return e.operator===h.isEmpty?V([a,...m.map(r)]):e.operator===h.notEmpty?cr([s,...m.map(S=>r(ad(S)))]):p(e.operator)}switch(e.operator){case h.exists:case h.notExists:{if(e.operator===h.exists)return o==="list"?ge(r({equals:null})):r({not:Vt(o)});let m=n();return m.length?V(m):r({equals:Vt(o)})}case h.isEmpty:case h.notEmpty:return Ts(e.field,o,e.operator===h.isEmpty,i,t)}let l=fd(e,t);if(ae(e,l))return V(k.includes(e.operator)?n():[]);if(l===null&&Pt.includes(e.operator)){let m=p(e.operator);if(m)return m}if(o==="list"&&Kr.includes(e.operator)&&Array.isArray(l))return z(Xn(e,l),t);if(o==="list"&&Array.isArray(l)&&l.includes(null))throw C("toPrisma",`A list holding null in '${e.field}'`);if(o==="list"&&de(e.caseInsensitive)&&uo("text",l))throw C("toPrisma",`A case-insensitive comparison on the list '${e.field}'`);let f=o==="enum"?oe(e.field,t?.map,t?.model):void 0,d=f?wi(e,l,f,t?.map):null;if(d){let m=r({in:d.values});return d.matchesNull?V([m,...n()]):m}if(Kr.includes(e.operator)){let{values:m,hasNull:S}=pt(l),b=Ps(e,t,o,m),w=He(o)?e.operator===h.in?V(m.map(c=>r(bi("equals",c,b,o)))):cr(m.map(c=>r(bi("not",c,b,o)))):r({[e.operator]:m,...b});return e.operator===h.in?S?V([w,...n()]):w:S?cr([w,s??r({not:Vt(o)})]):V([w,...n()])}let u=m=>{if(!He(o)||m!==h.contains)return r(Vo({...e,operator:m},t));let S=r({array_contains:[sb(e,l,t,o)]});return typeof l=="string"?V([r(Vo({...e,operator:m},t)),S]):S};if(e.operator===h.contains)return u(h.contains);let g=Np.includes(e.operator)?Ao[e.operator]:zr.includes(e.operator)?h.between:void 0;if(g){if(He(o))throw C("toPrisma",`'${e.operator}' on the Json value '${e.field}'`,"it keeps values of other types");return V([ge(u(g)),...n()])}let y=r(Vo(e,t));return e.operator===h.equals&&l===null?V([y,...gr(e.field,t)]):e.operator===h.notEquals&&o==="list"?l===null?ge(r({equals:null})):V([ge(r({equals:l})),...n()]):e.operator===h.notEquals&&l!==null?V([y,...n()]):y},fd=(e,t)=>{let r=mi(e,ze(e,t),jt(e.field,t?.map,t?.model),"toPrisma",()=>co(t).timeZone);return e.offset===void 0?r:nd(r,e.offset,t)},Vo=(e,t)=>{let r=Bn(e);if(r)throw r;let o=As(e,t),n=()=>fd(e,t),i=l=>Ps(e,t,o,l),s=l=>{let f=n();if(o==="list"){if(l!=="contains")throw new Error(`Operator '${l}' does not apply to the list '${e.field}'.`);return {has:f}}let d=He(o)?ab[l]:l,u=typeof f=="string"?ee(f):f;return {[d]:u,...i(f)}},a=Vn(e.operator,n());if(a)throw a;let p=At(e.operator,"field");if(p&&Ur.includes(e.operator))return {[p]:n()};switch(e.operator){case h.equals:{let l=n()??Vt(o);return bi("equals",l,i(l),o)}case h.notEquals:{let l=n()??Vt(o);return bi("not",l,i(l),o)}case h.in:case h.notIn:return {[e.operator]:n()};case h.contains:return s("contains");case h.startsWith:return s("startsWith");case h.endsWith:return s("endsWith");case h.matches:case h.notMatches:throw C("toPrisma",`'${e.operator}'`,"Prisma has no pattern filter");case h.between:case h.notBetween:{let[l,f]=we(ve(n(),e.operator));return {gte:l,lte:f}}default:throw new Error(`Operator '${e.operator}' is built by buildFieldRule`)}},sb=(e,t,r,o)=>{if(typeof t=="object"&&t!==null)throw new Error(`Membership of an object or a list in the Json array '${e.field}' has no exact Prisma form; use toSql() or check().`);if(Ps(e,r,o,t).mode)throw C("toPrisma",`A case-insensitive member of the Json array '${e.field}'`);return t},ab={contains:"string_contains",startsWith:"string_starts_with",endsWith:"string_ends_with"},gt=(e,t,r)=>{if(!r?.map||!r?.model)return mr(e,t);let o=Ue(e,r.map,r.model),n=o.hops.find(s=>s.entry.isList);if(n)throw qn(e,n);let i=e.split(".");switch(o.kind){case "fallback":case "direct":return mr(e,t);case "bridge":return ur();case "past-scalar":throw Wn(e,o.column);case "json-path":{let s={path:o.jsonPath,...t},a=i.slice(0,o.stopIndex).join(".");return mr(a,s)}}};var lb=(e,t,r,o)=>{let n=M(e,t);if(!n)return null;for(let i of Object.values(n.fields))if(i.kind==="object"&&i.type===r&&(i.fromFields?.length??0)>0&&(i.toFields?.length??0)>0&&(o===void 0||i.relationName===o))return i;return null},qo=(e,t,r)=>{if(r.fromFields?.length)return r.fromFields.map((n,i)=>({here:n,there:r.toFields?.[i]??"id"}));let o=lb(e,r.type,t,r.relationName);return o?.fromFields?.length?o.fromFields.map((n,i)=>({here:o.toFields?.[i]??"id",there:n})):null},dd=(e,t,r,o)=>{if(o.relationName===void 0)return null;let n=Object.entries(M(e,o.type)?.fields??{}).filter(([i,s])=>s.kind==="object"&&s.type===t&&s.relationName===o.relationName&&!(o.type===t&&i===r));return n.length===1?{field:n[0][0],entry:n[0][1]}:null};var xi=(e,t,r,o)=>{let n=e.split("."),i=Ue(e,t,r);if(i.kind!=="direct"||i.entry.kind!=="object"){let p=i.hops.at(-1)?.entry.type??r;throw new Error(`Field '${n[i.hops.length]}' is not a relation in model '${p}'. ${o} require a relation field.`)}let s=i.hops.find(p=>p.entry.isList);if(s)throw new Error(`Intermediate field '${s.field}' in path '${e}' is a list relation. Only the final segment can be a list relation for ${o.toLowerCase()}.`);if(!i.entry.isList)throw new Error(`Field '${i.column}' is not a list relation in model '${i.model}'. ${o} only apply to one-to-many or many-to-many relations.`);let a=qo(t,i.model,i.entry);if(!a){let p=Object.values(M(t,i.entry.type)?.fields??{}).some(l=>l.kind==="object"&&l.type===i.model&&l.isList&&!l.fromFields?.length);throw new Error(p?`'${i.model}.${i.column}' is an implicit many-to-many relation. ${o} require an explicit join model with a FK \u2014 convert to an explicit @relation or use prisma.$queryRaw.`:`Cannot determine FK relationship between '${i.model}' and '${i.entry.type}'. Ensure the FieldMap contains both sides of the relation.`)}if(a.length>1)throw new Error(`${o} do not support composite FK relations ('${i.model}.${i.column}'). Use prisma.$queryRaw.`);return {through:i.hops.map(p=>p.field).join("."),target:i.entry.type,parentKey:a[0].here,targetKey:a[0].there}},Ri=(e,t,r,o,n)=>{let i={operation:"groupBy",model:t.target,args:{by:[t.targetKey],where:r,having:o},extract:t.targetKey},s={__step:e.steps.length};e.steps.push(i);let a={[t.parentKey]:{in:s}},p=n?ge(a):a;return t.through?mr(t.through,p):p};var ud=(e,t,r)=>{if(ce(e)){let o=io(e);if(!o)throw je("toPrisma");return z(o,t,r)}if(!t?.map||!t?.model||!r)throw new Error("Aggregate rules require a FieldMap and model to generate a Prisma plan. Pass { map, model } options to toPrisma().");if(!De.includes(e.aggregate.mode))throw Nt(e.aggregate.mode);if(!e.aggregate.field)throw new Error("Prisma aggregate rules require aggregate.field to specify the numeric field on the related model.");return pb(e,t,r)},pb=(e,t,r)=>{let o=xi(e.field,t.map,t.model,"Aggregate rules");if(e.condition&&It(e.condition,t.map,o.target))return ur();let n=e.aggregate.field??"",i=Ae(t.map,o.target,n);if(!i)throw new Error(`aggregate.field '${n}' does not exist on model '${o.target}'.`);if(i.kind!=="scalar"||dt(i))throw new Error(`aggregate.field '${n}' on model '${o.target}' must be a numeric scalar, got ${i.kind==="scalar"?"Json":`'${i.kind}'`}.`);let s=mo(t)(e);if(s===null||ae(s,s.value))return Bt();let a=Lo(s,[{}],void 0,void 0,{},{value:0})===true,p=a?be(s):s,l=Vo(p,t),f={[e.aggregate.mode==="sum"?"_sum":"_avg"]:l},d=zr.includes(p.operator)?ge({[n]:f}):{[n]:f},u=e.condition?z(e.condition,{...t,model:o.target},r):mt(),g=Ri(r,o,u,d,a);return a?V([g,...gr(e.field,t)]):g};var md=(e,t,r)=>{if(!e.field)throw new Error("toPrisma: count-based ArrayRule requires a field path");let o=xi(e.field,t.map,t.model,"Count operators");if(e.condition===void 0)throw Oe(e.arrayOperator);if(e.count===void 0)throw Jr(e.arrayOperator);let n=e.count;if(e.arrayOperator===E.atLeast&&n===0)return mt();let i=z(e.condition,{...t,model:o.target},r),s=Ns(e),a=s?cd(E.atLeast,e.arrayOperator===E.atMost?n+1:1,o.targetKey):cd(e.arrayOperator,n,o.targetKey);return Ri(r,o,i,a,s)},cd=(e,t,r)=>{let o=At(e,"array");if(!o)throw new Error(`'${e}' does not count`);return {[r]:{_count:{[o]:t}}}};var gd=(e,t,r)=>{let o=fb(e,t,r);return e.field&&Ns(e)&&!yd(e.field,t)?V([o,...gr(e.field,t)]):o},Ns=e=>le({...e,field:"items"},{items:[]})===true,fb=(e,t,r)=>{if(ce(e)){let i=io(e);if(!i)throw je("toPrisma");return z(i,t,r)}if(e.condition!==void 0&&!Tp.includes(e.arrayOperator)&&It(e.condition,t?.map,hd(e,t)?.model))return ur();if(Ln.includes(e.arrayOperator)){if(t?.map&&t?.model&&r)return md(e,t,r);throw new Error(`ArrayOperator '${e.arrayOperator}' requires a FieldMap and model to generate a multi-step plan. Pass { map, model } options to toPrisma(). Without them, use prisma.$queryRaw for count-based relation filtering.`)}if(!e.field)throw jn("toPrisma");let{field:o}=e;if(yd(o,t))return db(e,o,me({field:o},t?.map,t?.model),t);let n=ub(e,t,r);return gt(e.field,n,t)},yd=(e,t)=>{let r=me({field:e},t?.map,t?.model);return r==="list"||r==="json"||r==="json-path"},db=(e,t,r,o)=>{switch(e.arrayOperator){case E.empty:case E.notEmpty:return Ts(t,r,e.arrayOperator===E.empty,false,o);default:throw C("toPrisma",`'${e.arrayOperator}' over the ${r==="list"?"list":"Json array"} '${t}'`,r==="list"?"test a list's membership with 'contains'":void 0)}},hd=(e,t)=>{if(!t?.map||!t?.model||!e.field)return t;let r=ps(e.field,t.map,t.model);return r?{...t,model:r}:t},ub=(e,t,r)=>{let o=hd(e,t);switch(e.arrayOperator){case E.all:if(!e.condition)throw Oe(e.arrayOperator);return {none:z(be(e.condition,mo(o)),o,r)};case E.any:if(!e.condition)throw Oe(e.arrayOperator);return {some:z(e.condition,o,r)};case E.none:if(!e.condition)throw Oe(e.arrayOperator);return {none:z(e.condition,o,r)};case E.empty:return {none:{}};case E.notEmpty:return {some:{}};default:throw H(e.arrayOperator,"array")}};var wd=(e,t)=>{let r=t?.map,o=me({field:e.field},r,t?.model);if(o==="json"||o==="json-path")throw C("toPrisma",`A date rule on the Json value '${e.field}'`,"Prisma compares Json text");let n=oe(e.field,r,t?.model);if(n&&!X(n)&&ct(n)!==I.DateTime)throw C("toPrisma",`A date rule on the ${n.type} field '${e.field}'`,`Prisma compares it as ${n.type}, not as an instant`);let i=k.includes(e.dateOperator)?$s(e,t):[],s=cb(e,t);if(s===null)return V(i);let a=gt(e.field,s,t),p=zr.includes(e.dateOperator)?ge(a):a;return V([p,...i])},cb=(e,t)=>{let r=co(t),o=Bo(t),n=g=>e.offset===void 0?g:id(g,e.offset,t),i=g=>{if(g==null)return null;if(!U(g))return Zn(g,r.timeZone);let y=Ie(g,o);return y&&Zr(y,e.dateOperator,r).toDate()},s=()=>ze(e,t),a=()=>n(i(s())),p=()=>{let g=s();if(g==null)return null;let y=ve(g,e.dateOperator).map(i);if(y[0]===null||y[1]===null)return null;let[m,S]=we(y).map(n);return m&&S?[m,S]:null},l=()=>{let g=s();if(g==null)return null;if(!U(g))throw Re(e.dateOperator);let y=Ie(g,o);if(!y)return null;let[m,S]=Yr(y,r);return [m.toDate(),S.toDate()]},f=g=>{let y=a();return y===null?null:{[g]:y}},d=g=>g?{gte:g[0],lte:g[1]}:null,u=At(e.dateOperator,"date");if(u)return f(u);switch(e.dateOperator){case $.within:case $.notWithin:return d(l());case $.between:case $.notBetween:return d(p());case $.dayIn:case $.dayNotIn:throw C("toPrisma",`'${e.dateOperator}'`);default:throw H(e.dateOperator,"date")}};var Cs=(e,t,r)=>{if(typeof e=="boolean")return e?{}:Bt();En(e,"toPrisma");let o=Z(e);(o==="field"||o==="date")&&ci(e.field,t?.map,t?.model);let n=e;switch(o){case "all":return td(n,t,r);case "any":return rd(n,t,r);case "if":return od(n,t,r);case "array":return gd(n,t,r);case "aggregate":return ud(n,t,r);case "date":return wd(n,t);case "field":return pd(n,t);default:throw Fe()}};Xf(Cs);var Sd=async(e,t)=>{let r=e.steps.filter(i=>i.operation==="groupBy"),o=e.steps.find(i=>i.operation==="where");if(!o)throw new Error("executePrismaPlan: result has no where step");let n=[];for(let i of r){let s=i.model.charAt(0).toLowerCase()+i.model.slice(1),a=t[s];if(!a)throw new Error(`executePrismaPlan: no delegate for model '${i.model}'. Ensure prismaDelegate has a key '${s}'.`);let p=await a[i.operation](i.args);n.push(p.map(l=>l[i.extract]).filter(l=>l!=null));}return Ms(o.where,n)},Ms=(e,t)=>{if(e==null)return e;if(Array.isArray(e))return e.map(r=>Ms(r,t));if(typeof e=="object"){let r=Object.getPrototypeOf(e);if(r!==Object.prototype&&r!==null)return e;let o=e;if("__step"in o&&typeof o.__step=="number"){let i=o.__step;if(i>=t.length)throw new Error(`Step ref __step: ${i} out of range (${t.length} steps executed)`);return t[i]}let n={};for(let[i,s]of Object.entries(o))n[i]=Ms(s,t);return n}return e};var mb=e=>e?.map?{...e,map:yi(e.map,e.mapName,"toPrisma")}:e,Wo=(e,t)=>{let{condition:r,options:o}=hi(e,t,"toPrisma"),n={steps:[]},i=Cs(r,mb(o),n);return {steps:[...n.steps,{operation:"where",where:i}]}};var bd=(e,t)=>e===""?t:t===""?e:`${e}.${t}`,_s=e=>{let t=new Set,r=n=>{n&&t.add(n);},o=(n,i)=>{let s=ye(n,i);return "outOfBounds"in s?null:bd(s.scope,s.path)};return Q(e,(n,i)=>{if(Ee(n))return;for(let p of Xr(n))r(q(p)?o(p,i):p);let s=typeof n.field=="string"&&n.field!==""?o(n.field,i):null;if(r(s),!at(n))return;let a=s??i[i.length-1];for(let p of eo(n))r(bd(a,p));return [...i,a]},[""]),[...t]};var Oi=(e,t)=>{for(let r of t){let o=e;for(let n of r.split("."))o=lr(o,n,()=>({}));}return e},Ei=(e,t)=>{for(let[r,o]of Object.entries(t))Ei(lr(e,r,()=>({})),o);return e},Ds=e=>e.whereClauses.flatMap(_s),gb=(e,t,r)=>Oi(Ei({},r??{}),Ds(B(e,t.mapName,t.modelName,t.relPath))),xd=e=>Oi({},(e??[]).flatMap(_s)),Rd=e=>({mapName:e.lens.mapName,modelName:e.lens.model,relPath:[]}),Fs=(e,t,r)=>({...r,relPath:[...e.relPath,t]}),Od=(e,t,r,o)=>o!==void 0||e==="declared"&&t.relations.has(r)?"declared":e==="declared"?"shallow":"paths",yb=(e,t,r,o)=>{if(!r.whereClauses.length)return;let n=Wo(D(r.whereClauses),{...o,map:e.lens,mapName:t.mapName,model:t.modelName});if(n.steps.length>1)throw new Error(`toLensSelect: the grant on '${t.relPath.join(".")}' needs a counting step (executePrismaPlan), which a relation's where in a select can't run`);let{where:i}=n.steps[0];return Object.keys(i).length?i:void 0},Ed=(e,t,r,o,n,i)=>{let s=M(R(e.lens.maps,t.mapName),t.modelName)?.fields??{},a=B(e,t.mapName,t.modelName,t.relPath),p=r==="paths"?o:Oi(Ei({},o),Ds(a)),l={};for(let[f,d]of Object.entries(s)){let u=r!=="paths"&&Ge(a,f),g=R(p,f),y=r==="paths"?void 0:R(n,f);if(!u&&g===void 0||d.kind==="bridge")continue;if(d.kind!=="object"){l[f]=true;continue}if(r==="shallow"&&g===void 0&&y===void 0)continue;let m=u?Od(r,a,f,y):"paths",S=Fs(t,f,{mapName:t.mapName,modelName:d.type}),b=Ed(e,S,m,g??{},y??{},i),w=d.isList&&m!=="paths"&&g===void 0?yb(e,S,B(e,S.mapName,S.modelName,S.relPath),i):void 0;l[f]=Object.keys(b).length?{select:b,...w&&{where:w}}:w?{where:w}:true;}return l},vd=(e,{rules:t,...r}={})=>{let o=N(e);return {select:Ed(o,Rd(o),"declared",{},xd(t),r)}},Ls=(e,t)=>e==null?e:Array.isArray(e)?e.flatMap(r=>{let o=typeof r=="object"&&r!==null?t(r):null;return o===null?[]:[o]}):typeof e=="object"?t(e):null,ks=(e,t,r,o)=>{let n={},i=M(R(e.lens.maps,t.mapName),t.modelName);for(let[s,a]of Object.entries(o)){if(!Object.hasOwn(r,s))continue;let p=R(i?.fields,s),l=p?Se(p,t.mapName):null;n[s]=l?Ls(r[s],f=>ks(e,Fs(t,s,l),f,a)):r[s];}return n},Ad=(e,t,r,o,n,i,s,a)=>{let p=B(e,t.mapName,t.modelName,t.relPath);if(!p.whereClauses.every(u=>le(u,o,a)===true))return null;let l=M(R(e.lens.maps,t.mapName),t.modelName)?.fields??{},f=s?Oi(Ei({},n),Ds(p)):{},d={};for(let[u,g]of Object.entries(l)){if(!Object.hasOwn(o,u))continue;let y=Ge(p,u),m=R(f,u),S=R(i,u),b=Se(g,t.mapName);if(!b){(y||m!==void 0)&&(d[u]=o[u]);continue}let w=Fs(t,u,b);if(y&&(r==="declared"||S!==void 0)){let c=Od(r,p,u,S),x=!Array.isArray(o[u])||m!==void 0;d[u]=Ls(o[u],O=>Ad(e,w,c,O,m??{},S??{},s,a)??(s&&x?ks(e,w,O,gb(e,w,m)):null));}else m!==void 0&&(d[u]=Ls(o[u],c=>ks(e,w,c,m)));}return d},$d=(e,t,{keepGrantColumns:r=false,rules:o,...n}={})=>{let i=N(e),s=Rd(i),a=xd(o);return t.flatMap(p=>{let l=Ad(i,s,"declared",p,{},a,r,n);return l===null?[]:[l]})};var js=(e,t,r,o,n)=>{let i={};for(let[s,a]of Object.entries(o.fields)){if(!Ge(t,s))continue;let p=t.enumValuesByField.get(s),l=n(s)?.filter(d=>p===void 0||p.includes(d.value)),f=lo(e,t,r,s,"groupBy")?t.sourceGroupBys.get(s):void 0;i[s]={...a,...p!==void 0&&{values:p},...l!==void 0&&{options:l},...f!==void 0&&{groupBy:f}};}return i},go=(e,t={})=>{let r=N(e),o={},n=new Map;for(let s of t.sourceValues??[])n.set(`${s.path}|${s.field}`,s.options);let i=(s,a,p,l)=>{if(Object.hasOwn(o,l))return;let f=R(R(r.lens.maps,s)?.models??{},a);if(!f)return;let d=B(r,s,a,p),u={mapName:s,modelName:a,relPath:p},g=js(r,d,u,f,w=>{let c=n.get(`${l}|${w}`),x=d.enumValuesByField.get(w);return c??x?.map(O=>({value:O,label:O}))}),y={};for(let[w,c]of d.sources)Ge(d,w)&&(y[w]=c);let m={};for(let[w,c]of d.sourceLabels)Ge(d,w)&&lo(r,d,u,w,"label")&&(m[w]=c);let S={};for(let[w,c]of d.sourceGroupBys)Ge(d,w)&&lo(r,d,u,w,"groupBy")&&(S[w]=c);let b={};for(let w of d.sourcesFromMapDefaults.keys()){if(!li(r,s,a,w))throw pi(l,s,a,w);Object.hasOwn(y,w)&&(b[w]="mapDefaults");}o[l]={mapName:s,model:a,fields:g,whereClauses:d.whereClauses,sources:y,sourceLabels:m,sourceGroupBys:S,sourceFrom:b};for(let w of d.relations.keys()){if(!Ge(d,w))continue;let c=R(f.fields,w);if(!c)continue;let x=Se(c,s);x&&i(x.mapName,x.modelName,[...p,w],`${l}.${w}`);}};return i(r.lens.mapName,r.lens.model,[],r.lens.model),o};var Is=(e,t,r,o,n,i,s,a)=>{let p=n.split("."),{hops:l}=ut(e.lens.maps,{mapName:t,modelName:r,relPath:o},n),f=l.filter((d,u)=>u<p.length-1);if(i&&f.length<p.length-1){let d=p[f.length],u=f.at(-1)?.model??r;throw new Error(`${i} '${n}': hop '${d}' is not a resolvable relation on '${u}' \u2014 cannot guard its join`)}for(let d of f){let u=d.relPath.join(".");if(s.has(u))continue;s.add(u);let g=B(e,d.map,d.model,d.relPath);if(d.isList&&g.whereClauses.length)throw new Error(`source path '${n}': cannot enforce the grant on to-many relation '${d.prefix}' in a dotted path`);for(let y of g.whereClauses)a.push(si(y,d.prefix));}},hb=e=>{let t=[];return Q(e,r=>(typeof r.field=="string"&&t.push(r.field),false)),t},wb=(e,t,r,o,n,i,s)=>{let a=[],p=new Set;for(let l of n)Is(e,t,r,o,l,"groupBy",p,a);s?.includes(".")&&Is(e,t,r,o,s,"label",p,a);for(let l of i)for(let f of hb(l))f.includes(".")&&Is(e,t,r,o,f,null,p,a);return a},Uo=(e,t)=>{let r=J(e,t);return r==null||typeof r=="object"?void 0:String(r)},vi=(e,t)=>{let r=[];for(let o of t){let n=Uo(e,o);if(n===void 0)return;r.push(n);}return r},Bs=(e,t)=>JSON.stringify([e??null,t]),Sb=(e,t,r,o)=>{let n=Bs(o,t),i=e.get(n);i===void 0?e.set(n,{value:t,...r!==void 0?{label:r}:{},...o!==void 0?{groups:o}:{}}):i.label===void 0&&r!==void 0&&e.set(n,{...i,label:r});},Ai=(e,t,r,o,n)=>{let i=J(t,r),s=o==null?void 0:String(o);for(let a of Array.isArray(i)?i:[i])a==null||typeof a=="object"||Sb(e,String(a),s,n);},$i=e=>[...e.values()].sort((t,r)=>{let o=(t.groups===void 0?0:1)-(r.groups===void 0?0:1);if(o!==0)return o;let n=t.groups??[],i=r.groups??[];for(let s=0;s<Math.max(n.length,i.length);s++){let a=(n[s]??"").localeCompare(i[s]??"","en",{numeric:true});if(a!==0)return a}return (t.label??t.value).localeCompare(r.label??r.value,"en",{numeric:true})}),bb=(e,t)=>{if(t.length===0)return [];let r={mapName:e.lens.mapName,modelName:e.lens.model,relPath:[]},{hops:o,end:n}=ut(e.lens.maps,r,t.join("."));if(!n)return [false];let i=[r,...o.map(a=>({mapName:a.map,modelName:a.model}))],s=null;for(let a=0;a<t.length;a++){let p=i[a],l=B(e,p.mapName,p.modelName,t.slice(0,a)).whereClauses,f=s===null?l:[...l,s];if(f.length===0){s=null;continue}let d=R(e.lens.maps,p.mapName),u=d&&Ae(d,p.modelName,t[a]),g=d&&u&&u.kind==="object"&&i[a+1].mapName===p.mapName?dd(d,p.modelName,t[a],u):null;if(!g)return [false];let y=D(f);try{s=g.entry.isList?{field:g.field,arrayOperator:"any",condition:y}:D([{field:g.field,operator:"exists"},si(y,g.field)]);}catch{return [false]}}return s===null?[]:[s]},Pi=e=>{let t=N(e);return Object.entries(go(e)).flatMap(([r,o])=>Object.entries(o.sources).map(([n,i])=>{let s=R(o.sourceLabels,n),a=R(o.sourceGroupBys,n),p=Object.hasOwn(o.sourceFrom,n),l=r.split(".").slice(1),f=wb(t,o.mapName,o.model,l,a??[],i,s),d=R(o.fields,n)?.values,u=p?B(t,o.mapName,o.model,l).sourcesFromMapDefaults.get(n):void 0,g=bb(u===void 0?t:{lens:t.lens,chain:t.chain.filter((y,m)=>m!==u)},l);return {path:r,visit:o,field:n,...p&&{from:"mapDefaults"},...s!==void 0&&{label:s},...a!==void 0&&{groupBy:a},eligibility:[...g,...i,...f,...d?[{field:n,operator:"in",value:[...d]}]:[]]}}))};var Pd=(e,t,r={})=>{let o=r.rowShape??"prisma",n=new Map;for(let i of t){let s=o==="sql";Ai(n,i,e.field,e.label===void 0?void 0:s&&e.label.includes(".")?i.__label:Uo(i,e.label),e.groupBy===void 0?void 0:vi(i,s?e.groupBy.map((a,p)=>`__group_${p}`):e.groupBy));}return {path:e.path,mapName:e.mapName,model:e.model,field:e.field,options:$i(n)}};var xb=(e,t)=>{let r=[...e];for(let o of t.split(".").slice(1)){let n=[];for(let i of r){let s=J(i,o);Array.isArray(s)?n.push(...s):s!=null&&n.push(s);}r=n;}return r},Td=(e,t,r)=>Pi(e).map(({path:o,visit:n,field:i,from:s,label:a,groupBy:p,eligibility:l})=>{if(s)throw new Error(`materializeSources: '${o}.${i}' offers its model's own source, which a fetched collection can't hold \u2014 query it with toSourceQueries and materializeSourceQuery.`);let f=D(l),d=new Map;for(let u of xb(t,o))le(f,u,r)===true&&Ai(d,u,i,a===void 0?void 0:Uo(u,a),p===void 0?void 0:vi(u,p));return {path:o,mapName:n.mapName,model:n.model,field:i,options:$i(d)}});var Nd=(e,t,r,o,n)=>{if(e===void 0)return;let i=new Set;for(let{mapName:s,modelName:a,relPath:p}of r)for(let l of Rs(e,t,s,a,p)){let f=`'${l.path}' ${l.message}`;i.has(f)||(i.add(f),n.push({path:o,code:l.code,message:f}));}},Md=(e,t,r,o,n,i)=>{let s={lens:r.lens,chain:[...r.chain,t]},a=new Set;for(let p of o){let l=B(s,p.mapName,p.modelName,p.relPath);for(let[f,d]of Object.entries(e.sources??{})){let u=jo(d);for(let g of ["label","groupBy"]){if(u[g]===void 0||a.has(`${f}|${g}`))continue;let y=g==="label"?u.label:Do(u.groupBy),m=g==="label"?l.sourceLabels.get(f):l.sourceGroupBys.get(f);JSON.stringify(y)===JSON.stringify(m)&&(lo(s,l,p,f,g)||(a.add(`${f}|${g}`),i.push({path:`${n}.sources.${f}`,code:"invalid_source",message:`${g} '${String(u[g])}' reads a column hidden by another layer`})));}}}},Cd=(e,t,r,o,n)=>{let i=e.split("."),{hops:s}=ut(t,{mapName:r,modelName:o,relPath:[]},e),a=s.find((d,u)=>d.isList&&u<i.length-1);if(a)return `${n} cannot traverse to-many relation '${i[s.indexOf(a)]}'`;if(s.length===i.length)return `${n} must end on a scalar column, '${i.at(-1)}' is a relation`;let p=s.at(-1)??{map:r,model:o},l=i[s.length],f=Ae(R(t,p.map),p.model,l);return f?X(f)?`${n} relation '${l}' has no resolvable target`:s.length===i.length-1?null:`${n} segment '${l}' is not a relation`:`${n} segment '${l}' not on model '${p.model}'`},Rb=(e,t,r)=>{for(let o of t){let n=ys(o);if(n&&!n.includes(e))return "not in ancestor's picks";if(o.omits?.includes(e))return "was omitted by ancestor"}return r?.picks&&!r.picks.includes(e)?"not visible from defaults.picks":r?.omits?.includes(e)?"already excluded by defaults":null},_d=(e,t,r,o,n,i,s,a,p,l,f,d,u=false)=>{e.picks&&e.omits&&l.push({path:`${p}`,code:"conflicting_selection",message:"cannot specify both picks and omits"}),u&&"relations"in e&&e.relations&&l.push({path:`${p}`,code:"invalid_source",message:"defaults cannot declare 'relations' \u2014 relations are path-specific only"});for(let y of ["picks","omits"])for(let m of e[y]??[]){if(!R(i,m)){l.push({path:`${p}.${y}`,code:"not_in_lens",message:`field '${m}' not on model`});continue}let S=Rb(m,t,u?void 0:r);S&&l.push({path:`${p}.${y}`,code:"not_visible",message:`'${m}' ${S}`});}let g=(y,m,S)=>{let b=R(i,m);if(!b){l.push({path:`${p}.${y}`,code:"not_in_lens",message:`field '${m}' not on model`});return}if(b.kind!=="enum"){l.push({path:`${p}.${y}`,code:"wrong_kind",message:`field '${m}' is not an enum field`});return}let w=pr(b,a);for(let c of S)w&&!w.includes(c)&&l.push({path:`${p}.${y}.${m}`,code:"value_not_allowed",message:`'${c}' is not a known value of enum '${b.type}'`});};for(let[y,m]of Object.entries(e.enumPicks??{}))g("enumPicks",y,m);for(let[y,m]of Object.entries(e.enumOmits??{}))g("enumOmits",y,m);Nd(e.where,f,d,`${p}.where`,l);for(let[y,m]of Object.entries(e.sources??{})){if(!R(i,y)){l.push({path:`${p}.sources`,code:"not_in_lens",message:`field '${y}' not on model`});continue}let S=jo(m),b=S.from;if(b!==void 0){let x=b!=="mapDefaults"?`from takes 'mapDefaults', not '${String(b)}'`:u?"a mapDefaults source is what a path source's from: 'mapDefaults' points at; it can't point itself":S.label!==void 0||S.groupBy!==void 0?"a from: 'mapDefaults' source takes the model source's label and groupBy":null;x&&l.push({path:`${p}.sources.${y}`,code:"invalid_source",message:x});}let w=S.label?.includes(".")?S.label:void 0;if(S.label!==void 0)if(w){let x=Cd(w,o,n,s,"label");x&&l.push({path:`${p}.sources.${y}`,code:"invalid_source",message:`${x}`});}else R(i,S.label)||l.push({path:`${p}.sources.${y}`,code:"not_in_lens",message:`label column '${S.label}' not on model`});let c=Do(S.groupBy);if(c!==void 0||w!==void 0){let x=/^__(group(_\d+)?|label)$/;(x.test(y)||S.label!==void 0&&x.test(S.label))&&l.push({path:`${p}.sources.${y}`,code:"invalid_source",message:"'__group*' / '__label' names are reserved on grouped or path-labeled sources (sql column aliases)"});}if(c!==void 0){for(let O of c){let A=Cd(O,o,n,s,"groupBy");A&&l.push({path:`${p}.sources.${y}`,code:"invalid_source",message:`${A}`});}let x=JSON.stringify(c);for(let O of t){let A=R(O.sources,y);if(A===void 0)continue;let te=Do(jo(A).groupBy);te!==void 0&&JSON.stringify(te)!==x&&l.push({path:`${p}.sources.${y}`,code:"not_visible",message:`groupBy [${c}] conflicts with an ancestor layer's groupBy [${te}]`});}}Nd(S.where,f,d,`${p}.sources.${y}`,l);}},Ob=(e,t,r,o,n)=>{for(let[i,s]of Object.entries(t)){let a=R(r,i);if(!a){n.push({path:`mapDefaults.${e}.enums.${i}`,code:"not_in_lens",message:"enum not in registry"});continue}let p=null,l=new Set;for(let d of o){let u=d[i];if(u&&(u.picks&&(p=ai(p,u.picks)),u.omits))for(let g of u.omits)l.add(g);}let f=d=>!(l.has(d)||p&&!p.has(d));for(let d of s.picks??[])a.includes(d)?f(d)||n.push({path:`mapDefaults.${e}.enums.${i}.picks`,code:"not_visible",message:`'${d}' not visible from ancestors`}):n.push({path:`mapDefaults.${e}.enums.${i}.picks`,code:"value_not_allowed",message:`'${d}' not a known value`});for(let d of s.omits??[])a.includes(d)?f(d)||n.push({path:`mapDefaults.${e}.enums.${i}.omits`,code:"not_visible",message:`'${d}' already excluded by ancestors`}):n.push({path:`mapDefaults.${e}.enums.${i}.omits`,code:"value_not_allowed",message:`'${d}' not a known value`});}},Ld=(e,t,r,o,n,i,s)=>{let a=B(t,r.mapName,r.modelName,r.relPath);for(let p of ["enumPicks","enumOmits"])for(let[l,f]of Object.entries(e[p]??{})){let d=R(o,l);if(d?.kind!=="enum")continue;let u=pr(d,n)??[],g=fi(a,l)??u;for(let y of f)u.includes(y)&&!g.includes(y)&&s.push({path:`${i}.${p}.${l}`,code:"not_visible",message:`'${y}' is not visible (not allowed by the inherited enum narrowing)`});}},kd=(e,t,r,o,n,i,s,a,p,l,f)=>{let d=R(n,i),u=M(d,s);if(!u)return;let g=R(R(r.mapDefaults,i)?.models,s),m=[...o.map(b=>R(R(b.mapDefaults,i)?.models,s)).filter(b=>b!==void 0).map(b=>b),...t];_d(e,m,g,n,i,u.fields,s,d?.enums,a,p,l,[{mapName:i,modelName:s,relPath:f}],false),Ld(e,{lens:l.lens,chain:[...l.chain,{parent:r.parent,mapDefaults:r.mapDefaults}]},{mapName:i,modelName:s,relPath:f},u.fields,d?.enums,a,p),Md(e,r,l,[{mapName:i,modelName:s,relPath:f}],a,p);let S={lens:l.lens,chain:[...l.chain,r]};for(let[b,w]of Object.entries(e.sources??{}))!Fo(w)||w.from!=="mapDefaults"||li(S,i,s,b)||p.push({path:`${a}.sources.${b}`,code:"invalid_source",message:pi(a,i,s,b).message});for(let[b,w]of Object.entries(e.relations??{})){let c=R(u.fields,b);if(!c){p.push({path:`${a}.relations`,code:"not_in_lens",message:`'${b}' not on model`});continue}if(!X(c)){p.push({path:`${a}.relations`,code:"wrong_kind",message:`'${b}' is not a relation (kind=${c.kind})`});continue}let x=Se(c,i);if(!x)continue;if(!M(R(n,x.mapName),x.modelName)){p.push({path:`${a}.relations.${b}`,code:"not_in_lens",message:"target model not found in lens"});continue}let O=t.map(A=>R(A.relations,b)).filter(A=>A!==void 0);kd(w,O,r,o,n,x.mapName,x.modelName,`${a}.relations.${b}`,p,l,[...f,b]);}},Vs=e=>{let t=[],r=We(e),o=qe(e.parent),n=N(e.parent),i=go(e.parent);for(let[s,a]of Object.entries(e.mapDefaults??{})){let p=R(r.maps,s);if(!p){t.push({path:`mapDefaults.${s}`,code:"not_in_lens",message:"not in lens"});continue}let l=o.map(f=>R(f.mapDefaults,s)?.enums).filter(f=>f!==void 0);for(let[f,d]of Object.entries(a.models??{})){let u=M(p,f);if(!u){t.push({path:`mapDefaults.${s}.models.${f}`,code:"not_in_lens",message:"not in fieldMap"});continue}let g=o.map(m=>R(R(m.mapDefaults,s)?.models,f)).filter(m=>m!==void 0),y=[{mapName:s,modelName:f,relPath:fr}];for(let[m,S]of Object.entries(i))S.mapName===s&&S.model===f&&y.push({mapName:s,modelName:f,relPath:m.split(".").slice(1)});_d(d,g,void 0,r.maps,s,u.fields,f,p.enums,`mapDefaults.${s}.models.${f}`,t,n,y,true),Ld(d,n,{mapName:s,modelName:f,relPath:fr},u.fields,p.enums,`mapDefaults.${s}.models.${f}`,t),Md(d,e,n,y,`mapDefaults.${s}.models.${f}`,t);}a.enums&&Ob(s,a.enums,p.enums,l,t);}if(e.root){let s=r.mapName,a=r.model,p=R(r.maps,s);if(!p)t.push({path:"root",code:"not_in_lens",message:`lens map '${s}' not in lens`});else if(!M(p,a))t.push({path:"root",code:"not_in_lens",message:`lens model '${a}' not in fieldMap`});else {let l=o.map(f=>f.root).filter(f=>f!==void 0);kd(e.root,l,e,o,r.maps,s,a,"root",t,n,[]);}}for(let s of Ff(e))t.push({path:"bindings",code:"invalid_binding",message:s});return Dt(t)},Ti=e=>ko(Vs(e),"validateNarrowing");var Eb=(e,t)=>`${e}::${t}`,vb=(e,t,r)=>{let o=e.get(t);if(!o){e.set(t,r.values?{...r,values:[...r.values]}:r);return}let n=o;if(r.values&&o.values){let i=new Set([...o.values,...r.values]);n={...n,values:[...i]};}else !r.values&&o.values&&(n={...n,values:void 0});r.groupBy!==void 0&&n.groupBy===void 0&&(n={...n,groupBy:r.groupBy}),n!==o&&e.set(t,n);},Dd=(e,t={})=>{let r=N(e),{lens:o}=r,n=new Map;for(let u of t.sourceValues??[]){let g=`${u.mapName}::${u.model}::${u.field}`,y=n.get(g)??new Map;for(let m of u.options)y.set(Bs(m.groups,m.value),m);n.set(g,y);}let i=new Map,s=new Set,a=new Set,p=[{mapName:o.mapName,modelName:o.model,relPath:[],declared:true}];for(;p.length>0;){let{mapName:u,modelName:g,relPath:y,declared:m}=p.shift(),S=M(R(o.maps,u),g);if(!S)continue;let b=Eb(u,g);if(m){let A=`${b}::${y.join(".")}`;if(s.has(A))continue;s.add(A);}else {if(a.has(b))continue;a.add(b);}let w=B(r,u,g,m?y:fr),c=i.get(b);c||(c={mapName:u,modelName:g,fields:new Map},i.set(b,c));let O=js(r,w,{mapName:u,modelName:g,relPath:m?y:fr},S,A=>{let te=n.get(`${u}::${g}::${A}`);return te&&[...te.values()]});for(let[A,te]of Object.entries(O)){let Ut=te,Gt=te.groupBy,ho=c.fields.get(A)?.groupBy;if(Gt!==void 0&&ho!==void 0&&JSON.stringify(ho)!==JSON.stringify(Gt))throw new Error(`projectLens: '${g}.${A}' is grouped by different axes on different paths ([${ho}] vs [${Gt}]) \u2014 one surface field cannot carry two partition namespaces`);if(vb(c.fields,A,te),X(Ut)){let wo=Se(Ut,u);if(!wo)continue;m&&w.relations.has(A)?p.push({mapName:wo.mapName,modelName:wo.modelName,relPath:[...y,A],declared:true}):p.push({mapName:wo.mapName,modelName:wo.modelName,relPath:[],declared:false});}}}let l={};for(let{mapName:u,modelName:g,fields:y}of i.values()){let m=R(l,u);m||(m={models:{}},l[u]=m);let S={},b=new Map;for(let[w,c]of y)if(S[w]=c.options===void 0&&c.values?{...c,options:c.values.map(x=>({value:x,label:x}))}:c,c.kind==="enum"&&c.values){let x=b.get(c.type)??new Set;for(let O of c.values)x.add(O);b.set(c.type,x);}m.models[g]={...M(R(o.maps,u),g),fields:S};for(let[w,c]of b)m.enums??={},m.enums[w]=[...c];}let f=o.bridges?.filter(u=>{let[g,y]=u.endpoints,m=Ae(R(l,g.fieldMap),g.model,$e(y)),S=Ae(R(l,y.fieldMap),y.model,$e(g));return m!==void 0||S!==void 0}),d={maps:l};return f&&f.length>0&&(d.bridges=f),{...d,mapName:o.mapName,model:o.model}};function Fd(e,{by:t="path",...r}={}){return t==="model"?Dd(e,r):go(e,r)}var jd=(e,t,r,o={})=>{let n=N(e),{resolution:i}=ao(n,Ke(n),r);if(i.outcome!=="resolved")return {ok:false,reason:i.outcome};let{hops:s,terminal:a,jsonSubPath:p}=i;if(X(a.entry))return {ok:false,reason:"relation"};if(s.some(d=>d!==a&&d.entry.isList))return {ok:false,reason:"list"};let l=(d,u)=>u!==null&&typeof u=="object"&&B(n,d.mapName,d.model,d.relPath).whereClauses.every(g=>le(g,u,o)===true),f=l(s[0],t)?t:null;for(let[d,u]of s.entries()){if(f===null||typeof f!="object")return {ok:true,value:null};let g=R(f,u.field);if(u===a)return {ok:true,value:p.length?J(g,p.join(".")):g};f=l(s[d+1],g)?g:null;}return {ok:true,value:null}};var Ab=e=>"maps"in e,Id=(e,t)=>{let r=i=>{let s=R(t,i);if(!s)throw new Error(`composeLens: no stored lens '${i}'`);return s},o=[...r(e).parents,e];if(new Set(o).size!==o.length)throw new Error(`composeLens: '${e}' lists a layer twice in its parents`);let n=null;for(let[i,s]of o.entries()){let a=r(s);if(Object.hasOwn(a,"parent"))throw new Error(`composeLens: '${s}' carries a parent; a layer composes only through \`parents\``);let{id:p,parents:l,...f}=a;if(l.join("\0")!==o.slice(0,i).join("\0"))throw new Error(`composeLens: '${s}' composes with [${l.join(", ")}], not [${o.slice(0,i).join(", ")}] as '${e}' lists`);if(Ab(a)!==(i===0))throw new Error(i===0?`composeLens: '${s}' is not a base lens, so it can't head '${e}''s parents`:`composeLens: '${s}' is a base lens, so it can only head a chain`);if(n===null){n=f;continue}let u={parent:n,...f};Ti(u),n=u;}return n},Bd=(e,t)=>{let r=Ft(e)?[]:qe(e);if(t.length!==r.length+1)throw new Error(`storeLens: the lens has ${r.length+1} layers, base included, but ${t.length} ids`);return [{...We(e),id:t[0],parents:[]},...r.map(({parent:o,...n},i)=>({...n,id:t[i+1],parents:t.slice(0,i+1)}))]};var Vd=e=>e instanceof Date?e.toISOString():Array.isArray(e)&&e.some(t=>t instanceof Date)?e.map(Vd):e,T=(e,t)=>(e.params.push(Vd(t)),`$${++e.paramIndex}`);var yt=(e,t,{jsonb:r=false}={})=>{let o=()=>({sql:Os(e,void 0,r),shape:e.includes(".")?"json-path":"unknown"});if(!t.map||!t.currentModel||!t.currentAlias)return o();let n=Ue(e,t.map,t.currentModel);if(n.kind==="past-scalar")throw Wn(e,n.column);if(n.kind==="bridge")throw new Error(`'${e}' crosses a bridge to another source; toSql() has no column for it`);if(n.kind==="fallback"||n.entry.kind==="object"&&n.entry.isList)return o();let i=n.hops.find(f=>f.entry.isList);if(i)throw qn(e,i);let s=t.currentAlias;for(let f of n.hops){let d=qd(t,s,f);if(!d)return o();s=d;}let a=di(n);if(n.kind==="direct"&&n.entry.kind==="object"){let f={field:n.column,entry:n.entry,from:n.model},d=qo(t.map,n.model,n.entry),u=qd(t,s,f);return !d||!u?o():{sql:`${G(u)}.${G(d[0].there)}`,shape:a}}let p=n.kind==="json-path"?[n.column,...n.jsonPath]:[n.column],l=Os(p.join("."),s,r);return {sql:a==="json"&&!r?`NULLIF(${l}, 'null'::jsonb)`:l,shape:a}},Je=(e,t,r)=>yt(e,t,r).sql,qd=(e,t,r)=>{let o=`${t}.${r.field}`,n=e.joinRegistry?.get(o);if(n)return n;if(!e.joinCounter||!e.map)return null;let i=`t${e.joinCounter.n+1}`,s=$b(e.map,r.from,t,r.entry,i);return s?(e.joinCounter.n+=1,e.joins?.push(s),e.joinRegistry?.set(o,i),i):null},$b=(e,t,r,o,n)=>{let i=o.type,s=M(e,i)?.dbName??i,a=qo(e,t,o);if(!a)return null;let p=a.map(({here:l,there:f})=>`${G(n)}.${G(f)} = ${G(r)}.${G(l)}`).join(" AND ");return `LEFT JOIN ${G(s)} AS ${G(n)} ON ${p}`};var ht={type:"value",value:null},wt=e=>e.type==="value"&&(e.value===null||e.value===void 0),Pb=(e,t)=>{let r=q(e);if(r){if(r.depth>1)throw new Error(Eo(e,"toSql"));let o=yt(r.path,t);if(o.shape==="relation")throw new Error(`'${e}' is a relation; a value ref reads a column`);return {type:"column",...o}}return {type:"value",value:vn(e,t.context,"toSql")}},ne=(e,t)=>To(e,{value:r=>({type:"value",value:r}),path:r=>Pb(r,t),bind:(r,o)=>({type:"value",value:zn(r,o,"toSql")})}),yr=e=>t=>{let r=ne(t,e);if(r.type==="column")throw new Error(`'${t.path}' is a row ref`);return r.value},Pe=e=>nr(e.dateConfig??{},yr(e));var Tb={lt:"<",lte:"<=",gt:">",gte:">=",equals:"="},yo=(e,t)=>{let r=At(e,t);return r?{symbol:Tb[r],negated:k.includes(e)}:void 0},Wd=(e,t)=>e.type==="column"?e.sql:T(t,e.value),Qe=(e,t)=>`(${t} OR ${e} IS NULL)`,qt=(e,t,r=true)=>t&&r?`${e} IS NULL`:"FALSE",Ni=(e,t,r,o,n)=>{if(wt(r))return qt(e,o);let i=`${e} ${t} ${Wd(r,n)}`;return o?Qe(e,i):i},Go=(e,t,r,o,n=true)=>{if(!t||t.some(wt))return qt(e,r,n);let[i,s]=t.map(d=>Wd(d,o)),a=t.some(d=>d.type==="column"),p=a?"SYMMETRIC ":"";if(!r)return `${e} BETWEEN ${p}${i} AND ${s}`;let l=`${e} NOT BETWEEN ${p}${i} AND ${s}`,f=a?`(${l} AND ${i} IS NOT NULL AND ${s} IS NOT NULL)`:l;return n?Qe(e,f):f};var Ud=e=>Array.isArray(e)?e.some(Ud):typeof e=="object"&&e!==null,Gd=(e,t,r,o)=>{let n=`NULLIF(${t}, 'null'::jsonb)`,i=`jsonb_typeof(${n})`,s=`(${n} #>> '{}')`,a=c=>`${T(o,JSON.stringify(c))}::jsonb`,p=de(e.caseInsensitive),l=c=>p?`LOWER(${c})`:c,f=k.includes(e.operator),d=c=>Qe(n,`NOT (${c})`);if(ae(e,r))return qt(n,f);let u=Vn(e.operator,r);if(u)throw u;let g=c=>{if(Ud(c))throw C("toSql",`A case-insensitive comparison of '${e.field}' with a list holding objects`);return a(ar(c))},y=c=>p&&typeof c=="string"?`(${i} = 'string' AND LOWER(${s}) = LOWER(${T(o,c)}))`:p&&Array.isArray(c)?`(${i} = 'array' AND LOWER(${n}::text)::jsonb = ${g(c)})`:`${n} = ${a(c)}`,m=c=>`(${i} = 'string' AND ${l(s)} LIKE ${l(T(o,c))})`,S=c=>{let x=O=>`(CASE WHEN ${i} = 'array' THEN EXISTS (SELECT 1 FROM jsonb_array_elements(${n}) AS e WHERE ${O}) ELSE FALSE END)`;return p&&typeof c=="string"?x(`jsonb_typeof(e) = 'string' AND LOWER(e #>> '{}') = LOWER(${T(o,c)})`):p&&Array.isArray(c)?x(`LOWER(e::text)::jsonb = ${g(c)}`):typeof c=="object"&&c!==null?x(`e = ${a(c)}`):`(${i} = 'array' AND ${n} @> ${a([c])})`},b=c=>typeof c=="string"?`(${m(`%${ee(c)}%`)} OR ${S(c)})`:S(c);switch(e.operator){case h.equals:return r===null?`${n} IS NULL`:y(r);case h.notEquals:return r===null?`${n} IS NOT NULL`:d(y(r));case h.in:case h.notIn:{let{values:c,hasNull:x}=pt(r),O=c.length?`(${c.map(y).join(" OR ")})`:"FALSE";return e.operator===h.in?x?`(${O} OR ${n} IS NULL)`:O:x?`(NOT ${O} AND ${n} IS NOT NULL)`:d(O)}case h.between:case h.notBetween:{let[c,x]=r,O=`(${i} = jsonb_typeof(${a(c)}) AND ${n} BETWEEN ${a(c)} AND ${a(x)})`;return e.operator===h.between?O:d(O)}case h.contains:return b(r);case h.notContains:return d(b(r));case h.startsWith:return m(`${ee(String(r))}%`);case h.endsWith:return m(`%${ee(String(r))}`);case h.notStartsWith:return d(m(`${ee(String(r))}%`));case h.notEndsWith:return d(m(`%${ee(String(r))}`));case h.matches:case h.notMatches:{let{source:c,caseInsensitive:x}=Lt(r),O=`(${i} = 'string' AND ${s} ~${x?"*":""} ${T(o,_o(c))})`;return e.operator===h.matches?O:d(O)}}let w=yo(e.operator,"field")?.symbol;if(w)return `(${i} = jsonb_typeof(${a(r)}) AND ${n} ${w} ${a(r)})`;throw new Error(`Operator '${e.operator}' is not supported on a Json value in SQL`)};var Kd=e=>typeof e=="object"&&er(e)!==null,Ko=({sql:e,shape:t},r)=>{if(t!=="json-path"&&t!=="text")return `to_timestamp(EXTRACT(EPOCH FROM ${e}))`;let o=T(r,Pe(r).timeZone);return `(CASE WHEN btrim(${e}) ~ '^-?[0-9]+(\\.[0-9]+)?$' THEN to_timestamp(btrim(${e})::numeric / 1000) WHEN ${e} ~* '[0-9]{2}:[0-9]{2}(:[0-9]{2}(\\.[0-9]+)?)?\\s*(z|[+-][0-9]{2}(:?[0-9]{2})?)\\s*$' OR ${e} ~* '\\m(gmt|utc)\\M' THEN (${e})::timestamptz ELSE (${e})::timestamp AT TIME ZONE ${o} END)`},Ci=e=>Object.values(e).some(Kd),Cb=(e,t,r)=>{let o=Zt(r),n=o?"int":"double precision";if(typeof e=="number"||!Kd(e)){let a=ns(e,yr(t),r);return `${T(t,a)}::${n}`}let i=ne(e,t).sql;return `(CASE WHEN ${o?`${i} >= 0 AND ${i} = trunc(${i})`:`${i} >= 0`} THEN ${i} END)::${n}`},Mb=(e,t)=>`make_interval(${Fp.flatMap(o=>{let n=Object.keys(e).filter(i=>e[i]!==void 0&&Tt[i].interval===o).map(i=>{let s=Cb(e[i],t,i),{factor:a}=Tt[i];return a===1?s:`${a} * ${s}`});return n.length?[`${o} => ${n.join(" + ")}`]:[]}).join(", ")})`,zo=(e,t,r,o)=>{let n=Pe(o).timeZone;if(e.type==="value"&&!Ci(t)){let p=tr(t,yr(o));return e.value===null||e.value===void 0||p===null?ht:{type:"value",value:Ct(Be(e.value),p,r,n).toDate()}}let i=e.type==="column"?e.computed?e.sql:Ko(e,o):`${T(o,e.value??null)}::timestamptz`,s=T(o,n);return {type:"column",computed:true,sql:`(((${i} AT TIME ZONE ${s}) ${r===1?"+":"-"} ${Mb(t,o)}) AT TIME ZONE ${s})`}};var qs=(e,t,r)=>{let o=ne(t,r);if(e.type==="value"&&o.type==="value"){let i=or(o.value);return i===null?ht:{type:"value",value:rr(e.value,i)}}let n=(i,s)=>i.type==="column"?`(${i.sql})::double precision`:`${T(r,s(i.value)??null)}::double precision`;return {type:"column",computed:true,sql:`(${n(e,i=>i)} + ${n(o,or)})`}},zd=(e,t,r)=>{if(wt(e))return ht;let o=ne(t,r);if(o.type==="column")throw new Error(`A row path on a date offset ('${t.path}') is check-only; evaluate with check()`);let n=ro(o.value);return n===null?ht:zo(e,...n,r)};var Hd,Jd=e=>{Hd=e;},Wt=(e,t)=>Hd(e,t);var _i=(e,t,r)=>{let o=Bn(e);if(o)throw o;let n=r===void 0?yt(e.field,t):{sql:r,shape:"scalar"};if(n.shape==="relation"&&!sr(e))throw Qr(e.field);let i=r===void 0;if(n.shape==="enum"&&!$t.includes(e.operator)){let c=Zd(e,t),x=oe(e.field,t.map,t.currentModel),O=c!==Mi&&x&&!ae(e,c)?wi(e,c,x,t.map):null;if(O){let A=`${n.sql}::text = ANY(${T(t,O.values)})`;return O.matchesNull?Qe(n.sql,A):A}}let s=n.shape==="enum"&&!$t.includes(e.operator)?{...n,sql:`${n.sql}::text`}:n;if((n.shape==="json"||n.shape==="json-path")&&!$t.includes(e.operator)){let c=Zd(e,t);if(c===Mi)throw new Error(`The Json value '${e.field}' compares against an operand known when compiling, not one read per row.`);return Gd(e,Je(e.field,t,{jsonb:true}),c,t)}let p=c=>{if(c.type==="column"&&!c.computed&&(c.shape==="json"||c.shape==="json-path"))throw C("toSql",`'${e.field}' compared with a Json value read per row`,"SQL would compare its text")};if(he.includes(e.operator)){let c=eu(e,t);return c?.forEach(p),Go(s.sql,c,k.includes(e.operator),t,i)}let l=Yd(e,t);if(p(l),l.type==="column"&&nt(e.operator,"field")==="string"&&!dr(n.shape)&&n.shape!=="list")throw C("toSql",`'${e.operator}' on '${e.field}'`,"it is not text");if(l.type==="column"&&l.computed&&n.shape==="text"&&r===void 0)throw C("toSql",`'${e.field}' against a value moved by an offset`,"an offset moves a number or a date");let f=s.sql,d=yo(e.operator,"field");if(d)return Ni(f,d.symbol,l,false,t);if(l.type==="value"&&ae(e,l.value))return qt(f,k.includes(e.operator),i);let u=l.type==="column"&&l.computed===true,g=de(e.caseInsensitive)&&(l.type==="column"?!u&&dr(n.shape)&&dr(l.shape):uo(n.shape,l.value)),y=c=>g?`LOWER(${c})`:c,m=c=>g?ar(c):c;if(n.shape==="list"&&l.type==="column"&&Gr.includes(e.operator)){if(oe(e.field,t.map,t.currentModel)?.type!=="String"||!dr(l.shape))throw C("toSql",`'${e.operator}' on the list '${e.field}' with a member read per row ('${e.path}')`,"Postgres matches a member of the list's own type only");let c=de(e.caseInsensitive)&&dr(l.shape)?`EXISTS (SELECT 1 FROM unnest(${f}) AS e WHERE LOWER(e) = LOWER(${l.sql}))`:`array_position(${f}, ${l.sql}) IS NOT NULL`;return e.operator===h.contains?`(${l.sql} IS NOT NULL AND ${c})`:`(${f} IS NULL OR (${l.sql} IS NOT NULL AND NOT ${c}))`}if(n.shape==="list"&&l.type==="value"){let c=de(e.caseInsensitive)&&uo("text",l.value);if(Gr.includes(e.operator)){let x=T(t,l.value),O=c?`EXISTS (SELECT 1 FROM unnest(${f}) AS e WHERE LOWER(e) = LOWER(${x}))`:`array_position(${f}, ${x}) IS NOT NULL`;return e.operator===h.contains?O:`NOT ${O}`}if(Kr.includes(e.operator)&&Array.isArray(l.value))return Wt(Xn(e,l.value),t);if(_b(e.operator))throw new Error(`'${e.operator}' does not apply to the list '${e.field}'; test its members with contains.`);if(c&&Pt.includes(e.operator)&&Array.isArray(l.value)){let x=T(t,ar(l.value)),O=`(${f} IS NOT NULL AND ARRAY(SELECT LOWER(e) FROM unnest(${f}) AS e) = ${x})`;return e.operator===h.equals?O:Qe(f,`NOT ${O}`)}}let S=l.type==="value"?l.value:void 0,b=l.type==="column"?l.sql:void 0;if(b!==void 0&&(Kr.includes(e.operator)||nt(e.operator,"field")==="pattern"))throw C("toSql",`'${e.operator}' against an operand read per row ('${e.path}')`);let w=c=>i?Qe(f,c):c;switch(e.operator){case h.equals:return u?`${f} = ${b}`:b!==void 0?`${y(f)} IS NOT DISTINCT FROM ${y(b)}`:S===null?`${f} IS NULL`:`${y(f)} = ${y(T(t,S))}`;case h.notEquals:return u?w(`${f} <> ${b}`):b!==void 0?`${y(f)} IS DISTINCT FROM ${y(b)}`:S===null?`${f} IS NOT NULL`:w(`${y(f)} <> ${y(T(t,S))}`);case h.in:{let{values:c,hasNull:x}=pt(S);if(!c.length)return x?`${f} IS NULL`:"FALSE";let O=`${y(f)} = ANY(${T(t,m(c))})`;return x?w(O):O}case h.notIn:{let{values:c,hasNull:x}=pt(S);if(!c.length)return x?`${f} IS NOT NULL`:"TRUE";let O=`${y(f)} <> ALL(${T(t,m(c))})`;return x?`(${O} AND ${f} IS NOT NULL)`:w(O)}case h.contains:return `${y(f)} LIKE ${y(T(t,`%${ee(String(S))}%`))}`;case h.notContains:return w(`${y(f)} NOT LIKE ${y(T(t,`%${ee(String(S))}%`))}`);case h.startsWith:return `${y(f)} LIKE ${y(T(t,`${ee(String(S))}%`))}`;case h.endsWith:return `${y(f)} LIKE ${y(T(t,`%${ee(String(S))}`))}`;case h.notStartsWith:return w(`${y(f)} NOT LIKE ${y(T(t,`${ee(String(S))}%`))}`);case h.notEndsWith:return w(`${y(f)} NOT LIKE ${y(T(t,`%${ee(String(S))}`))}`);case h.matches:return Qd(f,S,false,t);case h.notMatches:return w(Qd(f,S,true,t));case h.isEmpty:case h.notEmpty:return Ws(e.field,n,e.operator===h.isEmpty,t,ui(e,t.map,t.currentModel));case h.exists:return `${f} IS NOT NULL`;case h.notExists:return `${f} IS NULL`;default:throw new Error(`Unknown operator: ${e.operator}`)}},Yd=(e,t)=>{if($t.includes(e.operator))return {type:"value",value:void 0};let r=Xd(e,ne(e,t),t);return e.offset===void 0?r:qs(r,e.offset,t)},Xd=(e,t,r)=>t.type==="column"?t:{type:"value",value:mi(e,t.value,jt(e.field,r.map,r.currentModel),"toSql",()=>Pe(r).timeZone)},eu=(e,t)=>{let r=Xd(e,ne(e,t),t),o=r.type==="value"?r.value:void 0;if(o==null)return null;let n=ve(o,e.operator);return n.some(i=>i!=null&&!Y(i))&&to(o,e.operator),we(n).map(i=>{let s={type:"value",value:i};return e.offset===void 0?s:qs(s,e.offset,t)})},Qd=(e,t,r,o)=>{if(typeof t!="string"&&!(t instanceof RegExp))throw new Error("matches requires a string or RegExp pattern");let{source:n,caseInsensitive:i}=Lt(t);return `${e} ${r?"!":""}~${i?"*":""} ${T(o,_o(n))}`},Mi=Symbol("not known"),Zd=(e,t)=>{if(he.includes(e.operator)){let o=eu(e,t);return o?o.every(n=>n.type==="value")?o.map(n=>n.value):Mi:null}let r=Yd(e,t);return r.type==="value"?r.value:Mi},Ws=(e,t,r,o,n)=>{let{sql:i,shape:s}=t;if(s==="list")return r?`(${i} IS NULL OR cardinality(${i}) = 0)`:`cardinality(${i}) > 0`;if(s==="json"||s==="json-path"){let a=Je(e,o,{jsonb:true}),p=["'null'::jsonb",...n?[`'""'::jsonb`]:[],"'[]'::jsonb"].join(", ");return r?`(${a} IS NULL OR ${a} IN (${p}))`:`${a} NOT IN (${p})`}return n?r?`(${i} IS NULL OR ${i} = '')`:`(${i} IS NOT NULL AND ${i} <> '')`:r?`${i} IS NULL`:`${i} IS NOT NULL`},_b=e=>nt(e,"field")==="string"&&!Gr.includes(e);var tu=(e,t)=>{if(ce(e))throw je("toSql");if(e.condition)throw new Error("Aggregate condition filtering is not yet supported by toSql(). Use check() for in-memory evaluation or toPrisma() for database queries.");let r=Lb(e,t);return _i(e,t,r)},Lb=(e,t)=>{let{mode:r,field:o}=e.aggregate;if(!De.includes(r))throw Nt(r);let n=r==="sum"?"SUM":"AVG",i=me({field:e.field},t.map,t.currentModel);if(i==="relation"||oe(e.field,t.map,t.currentModel)?.kind==="object")throw new Error(`Field '${e.field}' is a relation \u2014 toSql() cannot aggregate relation lists. Use toPrisma() instead.`);if(o?.includes("."))throw new Error(`aggregate.field '${o}' contains a nested path \u2014 toSql() only supports flat field names. Use check() for nested paths.`);let s=i==="list",a=Je(e.field,t,{jsonb:!s}),p=s?a:`(CASE WHEN jsonb_typeof(${a}) = 'array' THEN ${a} END)`;if(s){if(o)throw new Error("aggregate.field is not supported for native array types. Use a JSONB column for object arrays.");return `(SELECT ${`COALESCE(${n}(elem), 0)`} FROM unnest(${p}) AS elem)`}if(o){let d=`(elem->>${Es(o)})::numeric`;return `(SELECT ${`COALESCE(${n}(${d}), 0)`} FROM jsonb_array_elements(${p}) AS elem)`}return `(SELECT ${`COALESCE(${n}(elem::numeric), 0)`} FROM jsonb_array_elements_text(${p}) AS elem)`};var ru=(e,t)=>{if(ce(e))throw je("toSql");if(!e.field)throw jn("toSql");if(me({field:e.field},t.map,t.currentModel)==="relation"||oe(e.field,t.map,t.currentModel)?.kind==="object")throw new Error(`Field '${e.field}' is a relation \u2014 relation arrays are not supported in SQL; use toPrisma().`);switch(e.arrayOperator){case E.empty:case E.notEmpty:{let o=yt(e.field,t),n=e.arrayOperator===E.empty;if(o.shape==="list")return Ws(e.field,o,n,t,false);let i=Je(e.field,t,{jsonb:true});return `(CASE WHEN jsonb_typeof(${i}) = 'array' THEN jsonb_array_length(${i}) ${n?"=":">"} 0 ELSE ${n?"TRUE":"FALSE"} END)`}case E.all:case E.any:case E.none:case E.atLeast:case E.atMost:case E.exactly:throw new Error(`Array operator '${e.arrayOperator}' with conditions is not supported in SQL. Use application-level filtering for complex array operations.`);default:throw H(e.arrayOperator,"array")}};var kb=(e,t)=>e.type==="column"&&!e.computed?{type:"column",sql:Ko(e,t),computed:true}:e,ou=e=>e===void 0||e==="instant"||e==="text"||e==="json-path"||e==="unknown",nu=e=>C("toSql",`A date rule on '${e}'`,"it is not a date column"),iu=(e,t,r)=>{let o=t.some(i=>i.type==="column"),n=e.shape==="json-path"||e.shape==="text";return o||n?{lhs:Ko(e,r),ends:t.map(i=>kb(i,r))}:{lhs:e.sql,ends:t}},su=(e,t)=>{let r=yt(e.field,t);if(!ou(r.shape))throw nu(e.field);let o=ne(e,t);if(o.type==="column"&&!ou(o.shape))throw nu(String(e.path??e.field));let n=yo(e.dateOperator,"date");if(n){let{lhs:s,ends:a}=iu(r,[Fb(e,t)],t);return Ni(s,n.symbol,a[0],n.negated,t)}let i=(s,a)=>{if(!s)return Go(r.sql,null,a,t);let{lhs:p,ends:l}=iu(r,s,t);return Go(p,l,a,t)};switch(e.dateOperator){case $.within:case $.notWithin:return i(jb(e,t),k.includes(e.dateOperator));case $.between:case $.notBetween:return i(Ib(e,t),k.includes(e.dateOperator));case $.dayIn:case $.dayNotIn:{let s=e.dateOperator===$.dayNotIn,a=ne(e,t);if(a.type==="column")throw C("toSql",`A weekday list read from the row ('${e.path}')`);let p=is(a.value);if(p===null)return qt(r.sql,s);let l=T(t,Pe(t).timeZone),f=T(t,p),d=`EXTRACT(DOW FROM (${Ko(r,t)} AT TIME ZONE ${l}))`;return e.dateOperator===$.dayIn?`${d} = ANY(${f})`:Qe(r.sql,`${d} <> ALL(${f})`)}default:throw H(e.dateOperator,"date")}},au=e=>({type:"value",value:$o(Pe(e)).toDate()}),Db=(e,t,r)=>{let o=se(e);if(o&&Ci(o[0]))return zo(au(r),...o,r);let n=Ie(e,yr(r));return n===null?ht:{type:"value",value:Zr(n,t,Pe(r)).toDate()}},lu=(e,t,r)=>e==null?ht:U(e)?Db(e,t,r):{type:"value",value:Zn(e,Pe(r).timeZone)},pu=(e,t,r)=>t.offset===void 0?e:zd(e,t.offset,r),Fb=(e,t)=>{let r=ne(e,t),o=r.type==="column"?r:lu(r.value,e.dateOperator,t);return pu(o,e,t)},jb=(e,t)=>{let r=ne(e,t);if(wt(r))return null;if(r.type==="column"||!U(r.value))throw Re(e.dateOperator);let o=se(r.value);if(o&&Ci(o[0])){let s=au(t),a=zo(s,...o,t);return o[1]===-1?[a,s]:[s,a]}let n=Ie(r.value,yr(t));if(n===null)return null;let i=Yr(n,Pe(t));return [{type:"value",value:i[0].toDate()},{type:"value",value:i[1].toDate()}]},Ib=(e,t)=>{let r=ne(e,t);if(wt(r))return null;let o=r.type==="value"?r.value:void 0,n=ve(o,e.dateOperator).map(p=>lu(p,e.dateOperator,t));if(n.some(wt))return null;let[i,s]=n;return (i.type==="value"&&s.type==="value"?we([i.value,s.value]).map(p=>({type:"value",value:p})):n).map(p=>pu(p,e,t))};var fu=(e,t)=>e.all.length===0?"TRUE":`(${e.all.map(o=>Wt(o,t)).join(" AND ")})`,du=(e,t)=>e.any.length===0?"FALSE":`(${e.any.map(o=>Wt(o,t)).join(" OR ")})`,uu=(e,t)=>{if(It(e,t.map,t.currentModel))return "TRUE";let r=Wt(e.if,t),o=Wt(e.then,t);if(e.else!==void 0){let n=Wt(e.else,t);return `(((${r}) IS NOT TRUE OR ${o}) AND ((${r}) IS TRUE OR ${n}))`}return `((${r}) IS NOT TRUE OR ${o})`};var Ho=(e,t)=>{if(typeof e=="boolean")return e?"TRUE":"FALSE";if(En(e,"toSql"),"field"in e&&typeof e.field=="string"&&t.map&&t.currentModel&&fs(e.field,t.map,t.currentModel))return "TRUE";let r=Z(e);(r==="field"||r==="date")&&ci(e.field,t.map,t.currentModel);let o=e;switch(r){case "all":return fu(o,t);case "any":return du(o,t);case "if":return uu(o,t);case "array":return ru(o,t);case "aggregate":return tu(o,t);case "date":return su(o,t);case "field":return _i(o,t);default:throw Fe()}};Jd(Ho);var Us=e=>{let t=yi(e?.map,e?.mapName,"toSql"),r=!!(t&&e?.model),o=e?.alias??(r?"t0":void 0);return {params:[],paramIndex:0,context:e?.context,dateConfig:{now:e?.now,timeZone:e?.timeZone,weekStart:e?.weekStart},map:t,currentModel:e?.model,currentAlias:o,joinCounter:r?{n:0}:void 0,joins:r?[]:void 0,joinRegistry:r?new Map:void 0}},Bb=(e,t)=>{let{condition:r,options:o}=hi(e,t,"toSql"),n=Us(o);return {sql:Ho(r,n),params:n.params,joins:n.joins??[]}};var cu=(e,t)=>{let[r,...o]=t;if(o.length===0){e[r]=true;return}let n=e[r],i=n!==void 0&&n!==true?n.select:{};cu(i,o),e[r]={select:i};},Vb=e=>{let t={};for(let r of e)cu(t,r.split("."));return t},qb=(e,t,r,o,n,i,s)=>{let a=Wo(s,{map:e,mapName:t,model:r}),p=a.steps.at(-1).where,l=a.steps.filter(m=>m.operation!=="where"),f=n?.includes(".")?n:void 0,d=[...i??[],...f?[f]:[]],u={[o]:true,...n&&!f?{[n]:true}:{},...d.length?Vb(d):{}},g={model:r,...i?{}:{distinct:[o]},select:u,where:p,...l.length?{steps:a.steps}:{}},y;try{let m=Us({map:e,mapName:t,model:r,alias:"t0"}),S=Ho(s,m),b=f?Je(f,m):void 0,w=i?.map(Gt=>Je(Gt,m)),c=m.joins??[],x=c.length?` ${c.join(" ")}`:"",O=S?.trim()?` WHERE ${S}`:"",A=G("t0");y={sql:`SELECT DISTINCT ${[`${A}.${G(o)}`,...b?[`${b} AS ${G("__label")}`]:n?[`${A}.${G(n)}`]:[],...w?w.map((Gt,ho)=>`${Gt} AS ${G(`__group_${ho}`)}`):[]].join(", ")} FROM ${G(r)} AS ${A}${x}${O}`,params:m.params};}catch(m){y={sql:null,params:[],error:m instanceof Error?m.message:String(m)};}return {prisma:g,sql:y}},mu=e=>{let{lens:t}=N(e);return Pi(e).map(({path:r,visit:o,field:n,label:i,groupBy:s,eligibility:a})=>{let p=D([...o.whereClauses,...a]),{prisma:l,sql:f}=qb(t,o.mapName,o.model,n,i,s,p);return {path:r,mapName:o.mapName,model:o.model,field:n,...i!==void 0?{label:i}:{},...s!==void 0?{groupBy:s}:{},composedWhere:p,prisma:l,sql:f}})};var gu=(e,t)=>{let r=N(e);return ao(r,Ke(r),t).resolution};/*! Bundled license information:
|
|
3
|
+
`)}`)},ri=(e,t={})=>{let r={target:t.target??"check",errors:[]};return ft(e,"$",r,1),Dt(r.errors)},vS=(e,t={})=>{Lo(ri(e,t),"validateRule");},ft=(e,t,r,o)=>{if(typeof e=="boolean")return;if(!Lt(e)){v(r,t,"invalid_condition","Condition must be a boolean or object");return}let n=Z(e);if(!n){v(r,t,"ambiguous_condition",Fe().message);return}switch(n){case "all":cf(e.all,`${t}.all`,r,o);break;case "any":cf(e.any,`${t}.any`,r,o);break;case "if":ft(e.if,`${t}.if`,r,o),ft(e.then,`${t}.then`,r,o),"else"in e&&e.else!==void 0&&ft(e.else,`${t}.else`,r,o);break;case "field":AS(e,t,r,o);break;case "aggregate":PS(e,t,r,o);break;case "array":TS(e,t,r,o);break;case "date":NS(e,t,r,o);break}},cf=(e,t,r,o)=>{if(!Array.isArray(e)){v(r,t,"logical_array_required","Logical operator requires an array of conditions");return}e.forEach((n,i)=>{ft(n,`${t}[${i}]`,r,o);});},oi=(e,t,r,o)=>{typeof e.field=="string"&&yf(e.field,"field",`${t}.field`,r,o);},yf=(e,t,r,o,n)=>{let i=q(e);if(!i)return;let s=t==="field"?"Field":"Path";i.depth>n&&v(o,r,"scope_out_of_bounds",Ui(e,i.depth,n)),o.target==="toPrisma"?v(o,r,`unsupported_prisma_${t}`,`${s} '${e}' is not supported by toPrisma()`):o.target==="toSql"&&(t==="field"||i.depth>1)&&v(o,r,`unsupported_sql_${t}`,`${s} '${e}' is not supported by toSql()`);},so=(e,t,r,o)=>{let n=qp.filter(s=>e[s]!==void 0);if(n.length>1)return v(r,t,"ambiguous_value_source","Takes one of value, path or bind"),null;if(n.length===0)return v(r,t,"missing_value_source","Requires value, path or bind"),null;let[i]=n;return i!=="value"&&(typeof e[i]!="string"||e[i]==="")?(v(r,`${t}.${i}`,"invalid_value_source",`${i} is a non-empty string`),null):(e.bindOptional!==void 0&&(i!=="bind"||typeof e.bindOptional!="boolean")&&v(r,`${t}.bindOptional`,"invalid_value_source","bindOptional is a boolean beside bind"),i==="path"&&yf(e.path,"path",`${t}.path`,r,o),i)},hf=(e,t,r,o,n,i)=>{let{offset:s}=e;if(s===void 0)return;let a=`${o}.offset`;if(!Ap.includes(r)){v(n,a,"unsupported_offset_operator",`Operator '${r}' has no comparison point to offset`);return}if(!Lt(s)){v(n,a,"invalid_offset","An offset is one of { value }, { path } or { bind }");return}let p=so(s,a,n,i);if(p==="path"){let d=s.path,u=er(s);t==="date"&&u&&u.depth<=1&&n.target==="toSql"&&v(n,`${a}.path`,"unsupported_sql_path",`A row path on a date offset ('${d}') is not supported by toSql()`);return}if(p!=="value")return;let l=s.value;if(t==="field"){(typeof l!="number"||!Number.isFinite(l))&&v(n,`${a}.value`,"invalid_offset","A field offset value is a number");return}let f=Lt(l)&&Object.keys(l).length===1&&U(l)?se(l):null;if(!f){v(n,`${a}.value`,"invalid_offset","A date offset value is { ago } or { ahead }");return}Sf(f[0],`${a}.value.${Object.keys(l)[0]}`,n,i);},wf=(e,t,r,o)=>{o.target!=="toSql"||!he.includes(t)||er(e)&&v(o,`${r}.path`,"unsupported_sql_path",`A range read from the row ('${e.path}') is not supported by toSql()`);},AS=(e,t,r,o)=>{if(typeof e.field!="string"&&v(r,`${t}.field`,"field_required","Field rule requires a string field"),oi(e,t,r,o),typeof e.operator!="string"||!rt(e.operator,"field")){v(r,`${t}.operator`,"invalid_operator",H(e.operator,"field").message);return}let n=e.operator;hf(e,"field",n,t,r,o),Mn(n,"field",r.target)||v(r,`${t}.operator`,`unsupported_${ni(r.target)}_operator`,`Operator '${n}' is not supported by ${r.target}()`),e.coerceType!==void 0&&!Cn(e.coerceType)&&v(r,`${t}.coerceType`,"invalid_coerce_type",`coerceType must be one of: ${Object.keys(I).join(", ")}`);let i=nt(n,"field");if(i==="none"){CS(e,t,r);return}so(e,t,r,o)!==null&&(wf(e,n,t,r),!(typeof e.path=="string"||typeof e.bind=="string")&&$S(i,e.value,n,`${t}.value`,r));},$S=(e,t,r,o,n)=>{switch(e){case "scalar":case "string":e==="string"&&typeof t!="string"&&v(n,o,"invalid_string_value",`Operator '${r}' requires a string value`);return;case "ordered":Y(t)||v(n,o,"invalid_ordered_value",`Operator '${r}' requires a string, number, or Date value`);return;case "array":Array.isArray(t)||v(n,o,"invalid_membership_value",`Operator '${r}' requires an array value`);return;case "pattern":{if(!(typeof t=="string"||t instanceof RegExp)){v(n,o,"invalid_pattern_value",`Operator '${r}' requires a string or RegExp value`);return}let i=Xp(t,n.target);i&&v(n,o,"unsupported_pattern",i);return}case "range":try{to(t,r);}catch(i){v(n,o,"invalid_range_value",i.message);}return}},PS=(e,t,r,o)=>{if(e.offset!==void 0&&v(r,`${t}.offset`,"unexpected_offset","Aggregate rules take no offset"),bf(e,t,r,o),typeof e.field!="string"&&v(r,`${t}.field`,"field_required","Aggregate rule requires a string field"),oi(e,t,r,o),!Lt(e.aggregate)){v(r,`${t}.aggregate`,"invalid_aggregate","aggregate must be an object");return}let n=e.aggregate;if(De.includes(n.mode)||v(r,`${t}.aggregate.mode`,"invalid_aggregate_mode",Nt(n.mode).message),"field"in n&&n.field!==void 0&&typeof n.field!="string"&&v(r,`${t}.aggregate.field`,"invalid_aggregate_field","aggregate.field must be a string"),!_n.includes(e.operator)){v(r,`${t}.operator`,"invalid_aggregate_operator",`Aggregate rules only support: ${_n.join(", ")}`);return}if(r.target==="toPrisma"&&typeof e.path=="string"&&v(r,`${t}.path`,"unsupported_prisma_aggregate_path","path is not supported by toPrisma() for aggregate rules; use value instead"),"condition"in e&&e.condition!==void 0&&(r.target==="toSql"&&v(r,`${t}.condition`,"unsupported_sql_aggregate_condition","Aggregate condition filtering is not supported by toSql(); use check() or toPrisma()"),ft(e.condition,`${t}.condition`,r,o+1)),so(e,t,r,o)===null||typeof e.path=="string"||typeof e.bind=="string")return;let i=e.value;he.includes(e.operator)?MS(i)||v(r,`${t}.value`,"invalid_range_value",`Operator '${e.operator}' requires a two-item numeric range`):typeof i!="number"&&v(r,`${t}.value`,"invalid_aggregate_value","Aggregate rule value must be a number");},TS=(e,t,r,o)=>{if(typeof e.field!="string"&&r.target!=="check"&&v(r,`${t}.field`,"field_required","Array rule requires a string field for this target"),oi(e,t,r,o),bf(e,t,r,o),typeof e.arrayOperator!="string"||!rt(e.arrayOperator,"array")){v(r,`${t}.arrayOperator`,"invalid_array_operator",H(e.arrayOperator,"array").message);return}let n=e.arrayOperator;Mn(n,"array",r.target)||v(r,`${t}.arrayOperator`,`unsupported_${ni(r.target)}_array_operator`,`Array operator '${n}' is not supported by ${r.target}()`);let i=nt(n,"array"),s=e.condition!==void 0,a=()=>{e.count!==void 0&&v(r,`${t}.count`,"unexpected_count",`Array operator '${n}' does not accept count`);};i==="none"?(s&&v(r,`${t}.condition`,"unexpected_condition",`Array operator '${n}' does not accept condition`),a()):i==="predicate"?(s?ft(e.condition,`${t}.condition`,r,o+1):v(r,`${t}.condition`,"missing_condition",Oe(n).message),a()):i==="count"&&(r.target!=="toPrisma"&&typeof e.count!="number"?v(r,`${t}.count`,"missing_count",Jr(n).message):e.count!==void 0&&!(typeof e.count=="number"&&Number.isInteger(e.count)&&e.count>=0)&&v(r,`${t}.count`,"invalid_count","count must be a non-negative whole number"),s?ft(e.condition,`${t}.condition`,r,o+1):r.target==="check"&&v(r,`${t}.condition`,"missing_condition",Oe(n).message));},NS=(e,t,r,o)=>{if(typeof e.field!="string"&&v(r,`${t}.field`,"field_required","Date rule requires a string field"),oi(e,t,r,o),typeof e.dateOperator!="string"||!rt(e.dateOperator,"date")){v(r,`${t}.dateOperator`,"invalid_date_operator",H(e.dateOperator,"date").message);return}let n=e.dateOperator;hf(e,"date",n,t,r,o),Mn(n,"date",r.target)||v(r,`${t}.dateOperator`,`unsupported_${ni(r.target)}_date_operator`,`Date operator '${n}' is not supported by ${r.target}()`);let i=nt(n,"date");if(i==="dayList"){if(so(e,t,r,o)!=="value")return;let s=e.value;(!Array.isArray(s)||!s.every(a=>typeof a=="string"&&jp(a)))&&v(r,`${t}.value`,"invalid_day_list",`Date operator '${n}' requires an array of day names (${Hr.join(", ")})`);return}if(so(e,t,r,o)!==null&&(wf(e,n,t,r),!(typeof e.path=="string"||typeof e.bind=="string"))){if(U(e.value)){gf(e.value,n,`${t}.value`,r,o);return}if(vo.includes(n)){v(r,`${t}.value`,"invalid_date_range",xe(n).message);return}if(i==="dateRange"){if(!_S(e.value)){v(r,`${t}.value`,"invalid_date_range",`Date operator '${n}' requires a two-item date range`);return}e.value.forEach((s,a)=>{U(s)?gf(s,n,`${t}.value[${a}]`,r,o):Y(s)&&!_t(s,it).isValid()&&v(r,`${t}.value[${a}]`,"invalid_date_value",`Date operator '${n}' value '${String(s)}' does not parse as a date`);});return}if(!Y(e.value)){v(r,`${t}.value`,"invalid_date_value",`Date operator '${n}' requires a date-like value`);return}_t(e.value,it).isValid()||v(r,`${t}.value`,"invalid_date_value",`Date operator '${n}' value '${String(e.value)}' does not parse as a date`);}},Sf=(e,t,r,o)=>{if(!Lt(e)||Object.keys(e).length===0){v(r,t,"invalid_relative_units","Relative offset requires at least one unit");return}for(let[n,i]of Object.entries(e)){if(!Ki(n)){v(r,`${t}.${n}`,"invalid_relative_unit",`Unknown relative unit '${n}'`);continue}let s=Lt(i)?so(i,`${t}.${n}`,r,o):"literal";if(s===null||s==="path"||s==="bind")continue;let a=s==="value"?i.value:i,p=os(a,n);p&&v(r,`${t}.${n}`,"invalid_relative_magnitude",p);}},mf=(e,t,r)=>{(typeof e!="string"||!Dn.includes(e))&&v(r,t,"invalid_period_unit",`Unknown period unit '${String(e)}'`);},gf=(e,t,r,o,n)=>{let i=vo.includes(t),s=se(e);if(s){Sf(s[0],r,o,n);return}if(Po(e)){mf(Gn(e),r,o);return}if(Hi(e)){if(i){v(o,r,"invalid_date_range",xe(t).message);return}let a="start"in e?e.start:e.end;if(!Lt(a)||!Po(a)){v(o,r,"invalid_period_unit","start/end requires a this/last/next period");return}mf(Gn(a),r,o);return}v(o,r,"invalid_date_expression","Unrecognized date expression");},CS=(e,t,r)=>{"value"in e&&e.value!==void 0&&v(r,`${t}.value`,"unexpected_value","Rule does not accept value"),"path"in e&&e.path!==void 0&&v(r,`${t}.path`,"unexpected_path","Rule does not accept path"),"bind"in e&&e.bind!==void 0&&v(r,`${t}.bind`,"unexpected_bind","Rule does not accept bind");},ni=e=>e==="toPrisma"?"prisma":e==="toSql"?"sql":"check",Lt=e=>fe(e),MS=e=>Array.isArray(e)&&e.length===2&&typeof e[0]=="number"&&typeof e[1]=="number",_S=e=>Array.isArray(e)&&e.length===2&&(Y(e[0])||U(e[0]))&&(Y(e[1])||U(e[1])),bf=(e,t,r,o)=>{if(ce(e)&&r.target!=="check"&&(r.target==="toPrisma"&&io(e)!==null||v(r,t,`unsupported_${ni(r.target)}_window`,je(r.target).message)),"filter"in e&&e.filter!==void 0&&ft(e.filter,`${t}.filter`,r,o+1),"orderBy"in e&&e.orderBy!==void 0){let i=e.orderBy;Array.isArray(i)?i.forEach((s,a)=>{(!Lt(s)||typeof s.field!="string"||s.dir!=="asc"&&s.dir!=="desc")&&v(r,`${t}.orderBy[${a}]`,"invalid_order_by",'orderBy entries must be { field: string, dir: "asc" | "desc" }');}):v(r,`${t}.orderBy`,"invalid_order_by","orderBy must be an array of { field, dir }");}for(let i of ["take","skip"])if(i in e&&e[i]!==void 0){let s=e[i];(typeof s!="number"||!Number.isInteger(s)||s<0)&&v(r,`${t}.${i}`,`invalid_window_${i}`,`${i} must be a non-negative integer`);}},v=(e,t,r,o)=>{e.errors.push({path:t,code:r,message:o});};var kS=/[.:]/,ls=e=>{let t=[];for(let[r,o]of Object.entries(e.maps))for(let[n,i]of Object.entries(o.models))for(let[s,a]of Object.entries(i.fields))a.kind!=="bridge"&&kS.test(s)&&t.push({path:`${$e({fieldMap:r,model:n})}.${s}`,message:"contains forbidden character . or :",code:"invalid_field_name"});return Dt(t)},Rf=e=>Lo(ls(e),"validateFieldMaps");var Ft=e=>!Object.hasOwn(e,"parent"),qe=e=>{let t=[],r=new Set,o=e;for(;!Ft(o);){if(r.has(o))throw new Error("cycle detected in narrowing parent chain");if(Object.hasOwn(o,"model")||Object.hasOwn(o,"maps"))throw new Error("a narrowing carries a base lens key (model / maps); it has a parent instead");r.add(o),t.unshift(o),o=o.parent;}return t},We=e=>Ft(e)?e:qe(e)[0].parent;var dt=e=>e.kind==="scalar"&&e.type==="Json",X=e=>e.kind==="object"||e.kind==="bridge",pr=(e,t)=>e.values??x(t,e.type);var Se=(e,t)=>e.kind==="object"?{mapName:t,modelName:e.type}:e.kind==="bridge"?ff(e.type,t):null;function*ii(e,t,r){let o=r.split("."),n=t;for(let i=0;i<o.length;i++){let s=o[i],a=Ae(x(e,n.mapName),n.modelName,s),p=a?Se(a,n.mapName):null;if(yield {index:i,field:s,at:n,entry:a,next:p},!p)return;n={...p,relPath:[...n.relPath,s]};}}var Ue=(e,t,r)=>{let o=e.split("."),n=[],i={mapName:"",modelName:r,relPath:[]};for(let{index:s,field:a,at:p,entry:l}of ii({"":t},i,e)){let f=p.modelName;if(!l)return {kind:"fallback",hops:n};if(l.kind==="bridge")return {kind:"bridge",hops:n};let d=s===o.length-1;if(l.kind==="object"){if(!M(t,l.type))return {kind:"fallback",hops:n};if(d)return {kind:"direct",hops:n,entry:l,model:f,column:a};n.push({field:a,prefix:o.slice(0,s+1).join("."),entry:l,from:f});continue}return d?{kind:"direct",hops:n,entry:l,model:f,column:a}:dt(l)?{kind:"json-path",hops:n,entry:l,model:f,column:a,stopIndex:s+1,jsonPath:o.slice(s+1)}:{kind:"past-scalar",hops:n,column:a}}return {kind:"fallback",hops:n}},jt=(e,t,r)=>t&&r?Ue(e,t,r):void 0,oe=(e,t,r)=>{let o=jt(e,t,r);return o?.kind==="direct"?o.entry:void 0},xf=(e,t,r)=>Ue(e,t,r).hops.filter(o=>!o.entry.isList&&o.entry.isRequired===false).map(o=>o.prefix),ps=(e,t,r)=>{let o=Ue(e,t,r);return o.kind==="direct"&&o.entry.kind==="object"?o.entry.type:null},fs=(e,t,r)=>Ue(e,t,r).kind==="bridge",It=(e,t,r)=>!!t&&!!r&&Gp(e,(o,n)=>typeof o.field=="string"&&o.field!==""&&fs(o.field,t,n),(o,n)=>(typeof o.field=="string"?ps(o.field,t,n):n)??false,r);var ds=(e,t)=>t.length?D([...t,e]):e,LS=e=>{if(Xr(e).length)return false;let t=e.field,r=typeof t=="string"?q(t):null;try{return le(r?{...e,field:r.path}:e,{})===!0}catch{return false}},us=(e,t)=>{if(!t.length)return e;if(!LS(e))return D([...t.flatMap(n=>n.grants),e]);let[r,...o]=t;return lt([D([...r.grants,us(e,o)]),D([{field:r.prefix,operator:"notExists"},e])])},si=(e,t)=>Mt(e,{rewrite:r=>{if(Ee(r))return r;if(typeof r.field!="string"||r.field==="")throw new Error(`narrowRule: cannot re-root a relation grant of unknown shape under '${t}'`);let o=Xr(r);if(o.length)throw new Error(`narrowRule: cannot re-root a relation grant with a path reference ('${o[0]}') under '${t}'. Author the grant without 'path', or anchor it at the relation itself.`);if(q(r.field))throw new Error(`narrowRule: cannot re-root a relation grant with a scope ref field ('${r.field}') under '${t}'. Author the grant against the model's own columns.`);if(r.condition!==void 0)throw new Error(`narrowRule: cannot re-root a relation grant with a nested array/aggregate condition on '${r.field}' under '${t}'. Anchor such grants at the relation's own model.`);return {...r,field:`${t}.${r.field}`}},below:()=>false}),cs=(e,t)=>t.flatMap(r=>{let o=B(e,r.map,r.model,r.relPath);if(o.whereClauses.length===0)return [];if(r.isList)throw new Error(`narrowRule: cannot enforce a to-many relation grant on '${r.prefix}' without an arrayOperator condition to anchor it (row-scoped). Traverse '${r.prefix}' via an array operator (any/all/none/...) so the grant can be injected safely.`);return [{prefix:r.prefix,grants:o.whereClauses.map(n=>si(n,r.prefix))}]}),Of=(e,t)=>cs(e,t).flatMap(r=>r.grants),vf=(e,t,r)=>{let o=ye(e,r);if("outOfBounds"in o)throw new Error(`narrowRule: ${o.outOfBounds}`);if(!o.scope)return {hops:[],end:null};let n=e.slice(0,e.length-o.path.length);return ut(t.lens.maps,o.scope,o.path,n==="$."?"":n)},DS=(e,t,r,o)=>{if(q(e))return vf(e,t,r).hops;if(o)return [];let n=r.length===1?"":`${"$".repeat(r.length)}.`;return r[0]?ut(t.lens.maps,r[0],e,n).hops:[]},Ef=(e,t,r)=>{if(Ee(e)||typeof e.field!="string"||e.field==="")return null;let{hops:o,end:n}=vf(e.field,t,r);return {hops:o,below:n}},ms=(e,t,r,o=false)=>Mt(e,{below:(n,i)=>{let s=Ef(n,t,i);return s?s.below?[...i,s.below]:at(n)?[...i,null]:false:false},after:(n,i)=>{let s=Ef(n,t,i);if(!s)return n;let a=Of(t,Xr(n).flatMap(u=>DS(u,t,i,o))),p=s.below;if(!p||!at(n))return ds(us(n,cs(t,s.hops)),a);let l=[...B(t,p.mapName,p.modelName,p.relPath).whereClauses,...Of(t,eo(n).flatMap(u=>ut(t.lens.maps,p,u).hops))],f=n.condition===void 0||n.arrayOperator===E.all||ce(n),d={...n};return l.length&&f?d.filter=D([...n.filter!==void 0?[n.filter]:[],...l]):l.length&&(d.condition=D([...l,n.condition])),ds(us(d,cs(t,s.hops.slice(0,-1))),a)}},[r]),Af=(e,t)=>Pf(e,t,false),$f=(e,t)=>Pf(e,t,true),Pf=(e,t,r)=>{let o=N(t),n=B(o,o.lens.mapName,o.lens.model,[]),i=ms(e,o,{mapName:o.lens.mapName,modelName:o.lens.model,relPath:[]},r);return ds(i,n.whereClauses)};var Do=e=>e===void 0?void 0:Array.isArray(e)?e:[e],Fo=e=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&("where"in e||"label"in e||"groupBy"in e||"from"in e),jo=e=>{if(Fo(e))return e;if(typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===0)throw new Error("sources: {} is not a Condition \u2014 use `true` for an unconstrained source");return {where:e}},fr=["__offpath__"],N=e=>{let t=We(e),r=Ft(e)?[]:qe(e);return {lens:t,chain:r}},ai=(e,t)=>e===null?new Set(t):new Set(t.filter(r=>e.has(r))),ys=e=>{if(!e.picks)return;if(!("relations"in e)||!e.relations)return e.picks;let t=[...e.picks];for(let r of Object.keys(e.relations))t.includes(r)||t.push(r);return t},FS=(e,t)=>{let r=ys(t);if(r&&(e.picks=ai(e.picks,r)),t.omits)for(let o of t.omits)e.omits.add(o);},Tf=(e,t,r)=>{e.set(t,ai(e.get(t)??null,r));},Nf=(e,t,r)=>{let o=e.get(t)??new Set;for(let n of r)o.add(n);e.set(t,o);},jS=(e,t,r)=>{if(r.enumPicks)for(let[o,n]of Object.entries(r.enumPicks))Tf(e,o,n);if(r.enumOmits)for(let[o,n]of Object.entries(r.enumOmits))Nf(t,o,n);},gs=(e,t,r)=>JSON.stringify([e,t,r]),IS=(e,t,r,o)=>{if(FS(e,t),t.where!==void 0&&e.whereClauses.push(r(t.where)),t.sources)for(let[n,i]of Object.entries(t.sources)){let s=jo(i),a=e.sources.get(n)??[];s.where!==void 0&&a.push(r(s.where)),e.sources.set(n,a);let p=Do(s.groupBy);for(let[l,f,d]of [["label",s.label,e.sourceLabels.get(n)],["groupBy",p,e.sourceGroupBys.get(n)]]){if(f===void 0)continue;let u=gs(n,l,f);d!==void 0&&gs(n,l,d)===u||e.sourceDeclaredAt.set(u,o);}s.label!==void 0&&e.sourceLabels.set(n,s.label),p!==void 0&&e.sourceGroupBys.set(n,p),s.from==="mapDefaults"&&!e.sourcesFromMapDefaults.has(n)&&e.sourcesFromMapDefaults.set(n,o);}},B=(e,t,r,o)=>{let n={picks:null,omits:new Set,enumValuesByField:new Map,whereClauses:[],sources:new Map,sourceLabels:new Map,sourceGroupBys:new Map,sourceDeclaredAt:new Map,sourcesFromMapDefaults:new Map,relations:new Map},i=x(e.lens.maps,t),s=M(i,r);if(!s)return n;let a=new Map,p=new Map,l=new Map,f=new Map,d=y=>y,u=0,g=y=>{IS(n,y,d,u),jS(a,p,y);};for(let[y,m]of e.chain.entries()){u=y;let S={lens:e.lens,chain:e.chain.slice(0,y)};d=c=>y===0?c:ms(c,S,{mapName:t,modelName:r,relPath:o});let b=x(m.mapDefaults,t);if(b){let c=x(b.models,r);c&&g(c);for(let[R,O]of Object.entries(b.enums??{}))O.picks&&Tf(l,R,O.picks),O.omits&&Nf(f,R,O.omits);}let w=m.root;if(o.length===0){if(t===e.lens.mapName&&r===e.lens.model&&w){g(w);for(let[c,R]of Object.entries(w.relations??{}))n.relations.set(c,R);}}else {for(let c of o)if(w=x(w?.relations,c),!w)break;if(w){g(w);for(let[c,R]of Object.entries(w.relations??{}))n.relations.set(c,R);}}}for(let[y,m]of Object.entries(s.fields)){let S=m.kind==="enum",w=m.options?.map(A=>A.value)??(S?pr(m,i?.enums):m.values);if(!w)continue;let c=w;if(S){let A=l.get(m.type),te=f.get(m.type);A&&(c=c.filter(Ut=>A.has(Ut))),te&&(c=c.filter(Ut=>!te.has(Ut)));}let R=a.get(y),O=p.get(y);R&&(c=c.filter(A=>R.has(A))),O&&(c=c.filter(A=>!O.has(A))),n.enumValuesByField.set(y,c);}return n},li=(e,t,r,o)=>B(e,t,r,fr).sources.has(o),pi=(e,t,r,o)=>new Error(`source '${o}' at '${e}' offers mapDefaults.${t}.models.${r}.sources.${o}, which no layer declares`),Ge=(e,t)=>!(e.omits.has(t)||e.picks!==null&&!e.picks.has(t)),fi=(e,t)=>e.enumValuesByField.get(t)??null,ao=(e,t,r)=>{let o=r.split("."),n=[],i=[];for(let{index:s,field:a,at:p,entry:l,next:f}of ii(e.lens.maps,t,r)){if(!l)return {resolution:{outcome:"missing",index:s,hops:n},effects:i};let d=B(e,p.mapName,p.modelName,p.relPath);if(!Ge(d,a))return {resolution:{outcome:"hidden",index:s,hops:n},effects:i};let u={field:a,entry:l,mapName:p.mapName,model:p.modelName,relPath:[...p.relPath]};n.push(u),i.push(d);let g=s===o.length-1;if(g||dt(l))return {resolution:{outcome:"resolved",hops:n,terminal:u,jsonSubPath:g?[]:o.slice(s+1)},effects:i};if(!f)return {resolution:{outcome:"pastScalar",index:s,hops:n},effects:i}}return {resolution:{outcome:"missing",index:o.length,hops:n},effects:i}},lo=(e,t,r,o,n)=>{let i=n==="label"?t.sourceLabels.get(o):t.sourceGroupBys.get(o);if(i===void 0)return true;let s=t.sourceDeclaredAt.get(gs(o,n,i))??-1,a={lens:e.lens,chain:e.chain.filter((p,l)=>l!==s)};return (typeof i=="string"?[i]:i).every(p=>ao(a,r,p).resolution.outcome!=="hidden")},po=(e,t,r)=>{let{resolution:o,effects:n}=ao(e,t,r);if(o.outcome!=="resolved")return null;let{terminal:i,jsonSubPath:s}=o;return {mapName:i.mapName,modelName:i.model,relPath:i.relPath,entry:i.entry,terminalEffect:n[n.length-1],terminalFieldName:i.field,jsonSubPath:s}},Ke=e=>({mapName:e.lens.mapName,modelName:e.lens.model,relPath:[],open:false}),fo=(e,t,r)=>{let o=ye(r,t);if("outOfBounds"in o)return {issue:{code:"scope_out_of_bounds",message:o.outOfBounds}};if(o.scope.open)return {from:o.scope,next:o.scope,walked:null};let n=po(e,o.scope,o.path);if(!n)return {issue:{code:"not_in_lens",message:"path does not resolve through the narrowed lens"}};let i=dt(n.entry),s=Se(n.entry,n.mapName),a=s?{...s,relPath:[...n.relPath,n.terminalFieldName],open:i}:{...o.scope,open:i};return {from:o.scope,next:a,walked:n}},ut=(e,t,r,o="")=>{let n=r.split("."),i=[],s=null;for(let{index:a,field:p,at:l,entry:f,next:d}of ii(e,t,r)){if(!f||!d)break;let u=[...l.relPath,p];i.push({map:d.mapName,model:d.modelName,relPath:u,prefix:`${o}${n.slice(0,a+1).join(".")}`,isList:f.isList===true}),a===n.length-1&&(s={...d,relPath:[...u]});}return {hops:i,end:s}};var ws="parent:",Ss=e=>e.startsWith(ws),Mf=e=>Ss(e)?e.slice(ws.length):e,hs=(e,t)=>{let r={...e};if(e.where!==void 0&&(r.where=t(e.where)),e.sources){let o={};for(let[n,i]of Object.entries(e.sources))o[n]=Fo(i)?i.where!==void 0?{...i,where:t(i.where)}:i:t(i);r.sources=o;}if("relations"in e&&e.relations){let o={};for(let[n,i]of Object.entries(e.relations))o[n]=hs(i,t);r.relations=o;}return r},_f=(e,t)=>{let r={};for(let[o,n]of Object.entries(e.mapDefaults??{})){let i={};for(let[s,a]of Object.entries(n.models??{}))i[s]=hs(a,t);r[o]=n.models?{...n,models:i}:n;}return {...e,root:e.root?hs(e.root,t):void 0,mapDefaults:e.mapDefaults?r:void 0}},bs=e=>{let t=[];return _f(e,r=>(t.push(r),r)),t},Cf=e=>{let t=new Set;for(let r of bs(e))for(let o of Co(r))Ss(o)||t.add(o);return t},kf=e=>{let t=new Set;for(let r of qe(e))for(let o of bs(r))for(let n of Co(o,{required:true}))t.add(Mf(n));return [...t].sort()},Lf=(e,t)=>{if(Ft(e))return e;let r={...t};for(let[o,n]of Object.entries(t))r[`${ws}${o}`]=n;return {..._f(e,o=>ts(o,r)),parent:Lf(e.parent,t)}},Df=(e,t)=>Lf(e,t),Ff=e=>{let t=[],r=new Set;for(let n of qe(e.parent))for(let i of Cf(n))r.add(i);for(let n of Cf(e))r.has(n)&&t.push(`bind name '${n}' already declared by an ancestor narrowing \u2014 rename it, or reference the inherited one as 'parent:${n}'`);let o=new Set;for(let n of bs(e))for(let i of Co(n))Ss(i)&&o.add(Mf(i));for(let n of o)r.has(n)||t.push(`bind 'parent:${n}' references an inherited binding no ancestor declares`);return t};var jf=(e,t)=>{let r=N(t),o=(n,i)=>typeof n=="string"&&n!==""?fo(r,i,n):null;return Mt(e,{rewrite:(n,i)=>{if(Z(n)!=="field"||n.coerceType)return n;let s=o(n.field,i);if(!s||"issue"in s||!s.walked||s.walked.jsonSubPath.length)return n;let{entry:a}=s.walked;return a.kind==="scalar"&&kp.includes(a.type)?{...n,coerceType:a.type}:n},below:(n,i)=>{if(!at(n))return false;let s=o(n.field,i),a=s&&!("issue"in s)?s.walked?.entry:void 0;return s&&!("issue"in s)&&a&&X(a)?[...i,s.next]:false}},[Ke(r)])};var If=({maps:e,bridges:t,mapName:r,model:o})=>({...ti({maps:e,bridges:t}),mapName:r,model:o});var di=e=>e?.kind==="json-path"?"json-path":e?.kind!=="direct"?"unknown":e.entry.kind==="object"?e.entry.isList?"relations":"relation":e.entry.isList?"list":e.entry.kind==="enum"?"enum":Bf(e.entry.type),Bf=e=>e===I.Json?"json":e===I.Enum?"enum":e===I.DateTime?"instant":e===I.String?"text":"scalar",ui=(e,t,r)=>{let o=oe(e.field,t,r);return o?o.kind==="scalar"&&(o.type==="String"||o.type==="Json"):e.coerceType===void 0||e.coerceType==="String"||e.coerceType==="Json"},ci=(e,t,r)=>{if(di(jt(e,t,r))==="relations")throw In(e)},dr=e=>e!=="scalar"&&e!=="instant"&&e!=="list"&&e!=="enum"&&e!=="relation"&&e!=="relations",uo=(e,t)=>dr(e)&&Vf(t),Vf=e=>typeof e=="string"||Array.isArray(e)&&e.some(Vf),me=(e,t,r)=>{let o=di(jt(e.field,t,r));return o==="unknown"&&e.coerceType!==void 0?Bf(e.coerceType):o},ct=e=>{if(!e.isList){if(e.kind==="enum")return I.Enum;if(!(e.kind!=="scalar"||e.type===I.Json))return Cn(e.type)?e.type:void 0}};var Rs=(e,t)=>{let r=ir(e,I.DateTime,t);return typeof r=="number"&&!Number.isNaN(new Date(r).getTime())?r:void 0},BS=(e,t,r)=>o=>{if(o==null)return o;let n=Rs(o,r);if(n===void 0)throw new Error(`Invalid date value for DateTime field '${e}': ${String(o)}`);return t==="toPrisma"?new Date(n):new Date(n).toISOString()},mi=(e,t,r,o,n)=>{if(t==null||r?.kind==="json-path")return t;let i=r?.kind==="direct"?r.entry:void 0;if(i?.isList)return t;let s=i?ct(i):void 0;if(e.coerceType!==void 0&&s!==void 0&&e.coerceType!==s)throw new Error(`coerceType '${e.coerceType}' overrides ${s} field '${e.field}', but ${o} compares the column as stored \u2014 evaluate it in memory with check(), or drop the override.`);if((s??e.coerceType)===I.DateTime){let p=BS(e.field,o,n());return Array.isArray(t)?t.map(p):p(t)}if(e.coerceType===void 0&&s===I.String&&(Array.isArray(t)?t:[t]).some(p=>typeof p=="number"||typeof p=="boolean"))throw new Error(`'${e.field}' is String but the literal is not a string; pass a string, or stamp coerceType: 'String'.`);if(e.coerceType===void 0&&s!==void 0&&(Re.includes(s)||s===I.Boolean)&&(Array.isArray(t)?t:[t]).some(p=>typeof p=="string"))throw new Error(`'${e.field}' is ${s} but the literal is a string; pass a ${s===I.Boolean?"boolean":"number"}, or stamp coerceType: '${s}'.`);return e.coerceType!==void 0&&Lp.includes(e.coerceType)?ir(t,e.coerceType,e.coerceType===I.DateTime?n():void 0):t};var qf=e=>Array.isArray(e)?e.flatMap(qf):[e],Io=e=>e.value===void 0?null:qf(e.value),VS=e=>Rs(e)!==void 0,qS=/^-?\d+(\.\d+)?$/,WS={String:{expected:"a string",fits:e=>typeof e=="string"},Enum:{expected:"a string",fits:e=>typeof e=="string"},Int:{expected:"an integer",fits:Number.isSafeInteger},BigInt:{expected:"an integer",fits:Number.isSafeInteger},Float:{expected:"a number",fits:Number.isFinite},Decimal:{expected:"a number or a numeric string",fits:e=>Number.isFinite(e)||typeof e=="string"&&qS.test(e)},Boolean:{expected:"a boolean",fits:e=>typeof e=="boolean"},DateTime:{expected:"a date",fits:VS},Json:{expected:"a value",fits:()=>true},Bytes:{expected:"a value",fits:()=>true}},US=e=>typeof e=="string"?`'${e}'`:typeof e=="object"&&e!==null?JSON.stringify(e):String(e),Wf=(e,t)=>{let r="coerceType"in e?e.coerceType:void 0,o=r??t;if(o===void 0||o===I.Json)return [];let n="operator"in e?e.operator:e.dateOperator,i=Wr(e);if(!i)return [];let a=r!==void 0&&r!==t?`field '${e.field}' coerced to ${o}`:`${o} field '${e.field}'`;if(!i.kinds.includes(o))return [{path:e.field,code:"operator_kind_mismatch",message:`operator '${n}' does not apply to ${a} (applies to: ${i.kinds.join(", ")})`}];if(e.offset!==void 0&&!("dateOperator"in e?o===I.DateTime:Re.includes(o)))return [{path:e.field,code:"invalid_offset",message:`an offset does not apply to ${a}`}];if("dateOperator"in e||i.valueShape==="none"||i.valueShape==="pattern")return [];if(Dp.includes(i.valueShape)&&Array.isArray(e.value))return [{path:e.field,code:"invalid_value_shape",message:`operator '${n}' compares one value, but ${a} was given a list`}];let{expected:p,fits:l}=WS[o],f=u=>{try{return l(ir(u,o))}catch{return false}},d=u=>l(u)||r!==void 0&&f(u);return (Io(e)??[]).filter(u=>u!==null&&!d(u)).map(u=>({path:e.field,code:"invalid_value",message:`value ${US(u)} does not fit ${a} (expected ${p})`}))},Uf=(e,t,r)=>{if(r.isList===true||dt(r))return null;let o=X(r)?`arrayOperator '${t}' needs a list, but '${e}' is a to-one relation \u2014 a single related record; address its fields directly (e.g. '${e}.<field>')`:`arrayOperator '${t}' needs a list, but '${e}' is a single ${ct(r)??r.type} value`;return {path:e,code:"invalid_array_operator",message:o}};var Gf=(e,t,r,o,n=false)=>Q(e,(i,s)=>{let a=Z(i);if(a===null)return o.push({path:typeof i.field=="string"?i.field:"",code:"ambiguous_condition",message:Fe().message}),false;if(Ee(i))return;let p=i,l=w=>{let c=ye(w,s);return "outOfBounds"in c?(o.push({path:w,code:"scope_out_of_bounds",message:c.outOfBounds}),null):{scope:c.scope,field:c.path}},f=s[s.length-1],d=true,u=null;if("field"in p&&typeof p.field=="string"&&p.field!==""){let w=fo(t,s,p.field);"issue"in w?(o.push({path:p.field,...w.issue}),d=false):{next:f,walked:u}=w;}let g=u?.entry??null,y=u?.terminalFieldName??null,m=u?.entry.kind==="enum",S=u?.entry.type??null,b=u&&u.jsonSubPath.length===0?fi(u.terminalEffect,u.terminalFieldName):null;for(let{ref:w,role:c}of es(p)){if(!q(w)&&n)continue;let R=q(w)?l(w):{scope:Ke(t),field:w};if(!R||R.scope.open)continue;let O=po(t,R.scope,R.field);if(!O){o.push({path:w,code:"not_in_lens",message:c==="value"?"path (comparison ref) does not resolve through the narrowed lens":"offset or magnitude ref does not resolve through the narrowed lens"});continue}if(X(O.entry)){o.push({path:w,code:"not_in_lens",message:"a value ref reads a column, not a relation"});continue}let A=ct(O.entry);if(c==="value"||c==="shift"||A===void 0)continue;(c==="whole"?_p.includes(A):Re.includes(A))||o.push({path:w,code:"not_in_lens",message:`${c==="whole"?"a calendar unit reads a whole number":"an offset or magnitude reads a number"}, not ${A}`});}if(!d)return false;if("arrayOperator"in p&&typeof p.field=="string"&&g){let w=Uf(p.field,p.arrayOperator,g);if(w)return o.push(w),false}if(g&&X(g)&&(a==="field"||a==="date")&&(g.isList||!sr(p))){let w=p.field;return o.push({path:w,code:"operator_kind_mismatch",message:(g.isList?In(w):Qr(w)).message}),false}if(!g?.isList&&(a==="field"||a==="date")&&o.push(...Wf(p,g?ct(g):void 0)),!f.open)for(let w of eo(p))w!==""&&!po(t,f,w)&&o.push({path:w,code:"not_in_lens",message:"an orderBy or aggregate field does not resolve through the narrowed lens"});if(b&&"operator"in p&&y){let w=Io(p);if(w){let c=new Set(b),R=m?`enum '${S}'`:`field '${y}'`;for(let O of w)typeof O=="string"&&!c.has(O)&&o.push({path:y,code:"value_not_allowed",message:`value '${O}' is not in the allowed set for ${R} (allowed: ${[...c].join(", ")})`});}}return [...s,f]},[r]),xs=(e,t,r,o,n)=>{let i=[];return Gf(e,t,{mapName:r,modelName:o,relPath:n,open:false},i),i},Kf=(e,t)=>{let r=N(t),o=[];return Gf(e,r,{mapName:r.lens.mapName,modelName:r.lens.model,relPath:[],open:false},o,true),Dt(o)},gi=(e,t)=>{let r=N(t);return Dt(xs(e,r,r.lens.mapName,r.lens.model,[]))};var GS=(e,t)=>Q(e,(r,o)=>{if(t.sources.add(o[o.length-1].mapName),Ee(r)||typeof r.field!="string"||r.field==="")return;let n=fo(t.policy,o,r.field);return "issue"in n?false:(n.walked&&(t.sources.add(n.walked.mapName),(n.walked.entry.kind==="bridge"||n.walked.mapName!==n.from.mapName)&&(t.bridgesCrossed=true)),[...o,n.next])},[Ke(t.policy)]),zf=(e,t)=>{let o={policy:N(t),sources:new Set,bridgesCrossed:false};return GS(e,o),{sources:[...o.sources].sort(),bridgesCrossed:o.bridgesCrossed,supportedTargets:P.filter(n=>(n==="check"||!o.bridgesCrossed)&&ri(e,{target:n}).ok),errors:gi(e,t).errors}};var KS=new Set([ot.scalar,ot.ordered,ot.array,ot.dayList,ot.dateValue]),zS=new Set([ot.none,ot.count]),HS=e=>{if(e.offset!==void 0||No(e).some(({source:r})=>r.value===void 0))return {values:[],dynamic:true};let t=Wr(e);return t?zS.has(t.valueShape)?{values:[],dynamic:false}:KS.has(t.valueShape)?"value"in e?{values:Io(e)??[],dynamic:false}:{values:[],dynamic:false}:{values:[],dynamic:true}:{values:[],dynamic:true}},JS=e=>e instanceof Date?`d:${+e}`:e instanceof RegExp?`r:${e}`:typeof e=="object"&&e!==null?`j:${JSON.stringify(e)}`:`p:${typeof e}:${String(e)}`,Hf=(e,t)=>{let r=N(t),o=r.lens.model,n=new Map,i=new Map,s=(p,l)=>{if(p.length===0)return;let f=po(r,{mapName:r.lens.mapName,modelName:o,relPath:[]},p.join("."));if(!f||f.jsonSubPath.length>0)return;let{mapName:d,modelName:u,relPath:g,terminalEffect:y,terminalFieldName:m}=f;if(!y.sources.has(m))return;let S=[o,...g].join("."),b=`${S}|${m}`,w=n.get(b);w||(w={path:S,mapName:d,model:u,field:m,values:[],dynamic:false},n.set(b,w));let c=HS(l);c.dynamic&&(w.dynamic=true);let R=i.get(b)??new Set;i.set(b,R);for(let O of c.values){let A=JS(O);R.has(A)||(R.add(A),w.values.push(O));}},a=(p,l)=>{let f=ye(p,l);if(!("outOfBounds"in f))return [...f.scope,...f.path.split(".")]};return Q(e,(p,l)=>{if(Ee(p))return;let f=typeof p.field=="string"?a(p.field,l):l.at(-1);return f?(!at(p)&&typeof p.field=="string"&&s(f,p),[...l,f]):false},[[]]),[...n.values()]};var yi=(e,t,r)=>{if(!e||!("maps"in e))return e;if(!t)throw new Error(`${r}: 'map' is a FieldMapSet \u2014 'mapName' is required to resolve which map to use.`);let o=x(e.maps,t);if(!o)throw new Error(`${r}: fieldMap set has no entry for '${t}'`);return o};var hi=(e,t,r)=>{if(t?.lens===void 0)return {condition:e,options:t};let{lens:o}=t;if(t.map!==void 0||t.mapName!==void 0||t.model!==void 0)throw new Error(`${r}: pass \`lens\` or \`map\` / \`mapName\` / \`model\`, not both \u2014 the lens names its own`);let n=Kf(e,o);if(!n.ok)throw new Error(`${r}: the rule leaves the lens \u2014 ${n.errors.map(s=>`${s.path}: ${s.message}`).join("; ")}`);let i=We(o);return {condition:$f(e,o),options:{...t,lens:void 0,map:i,mapName:i.mapName,model:i.model}}};var Jf=e=>({field:e,operator:"notExists"}),QS=(e,t)=>{let r=t(e);if(r===null){let n=e.operator??e.dateOperator;return L.includes(n)?{field:e.field,operator:"exists"}:true}if("aggregate"in r){let n=x(Ao,r.operator);return n?{...r,operator:n}:{...r,operator:x(Fn,r.operator)}}if(typeof r.dateOperator=="string"){let n=x(Bp,r.dateOperator);return n?{...r,dateOperator:n}:lt([{...r,dateOperator:x(Fn,r.dateOperator)},Jf(r.field)])}if(typeof r.arrayOperator=="string"){let n=r.count;switch(r.arrayOperator){case E.any:return {...r,arrayOperator:E.none};case E.none:return {...r,arrayOperator:E.any};case E.all:return {...r,arrayOperator:E.any,condition:be(r.condition,t)};case E.empty:return {...r,arrayOperator:E.notEmpty};case E.notEmpty:return {...r,arrayOperator:E.empty};case E.atLeast:return n<=0?false:{...r,arrayOperator:E.atMost,count:n-1};case E.atMost:return {...r,arrayOperator:E.atLeast,count:n+1};case E.exactly:return lt([...n>0?[{...r,arrayOperator:E.atMost,count:n-1}]:[],{...r,arrayOperator:E.atLeast,count:n+1}])}}let o=x(Ao,r.operator);return o?{...r,operator:o}:lt([{...r,operator:x(Fn,r.operator)},Jf(r.field)])},be=(e,t=r=>r)=>{if(typeof e=="boolean")return !e;let r=e;if(Array.isArray(r.all))return lt(r.all.map(o=>be(o,t)));if(Array.isArray(r.any))return D(r.any.map(o=>be(o,t)));if("if"in r){let o=D([r.if,be(r.then,t)]);return r.else===void 0?o:{any:[o,D([be(r.if,t),be(r.else,t)])]}}return QS(r,t)},Qf=e=>Z(e)==="field"&&e.value!==void 0&&ae(e,e.value)?null:e;var wi=(e,t,r,o)=>{if(!Op.includes(e.operator))throw new Error(`'${e.operator}' does not apply to the enum '${e.field}'; compare its values with equals / in.`);let n=de(e.caseInsensitive),i=pr(r,o?.enums),{values:s,hasNull:a}=pt(Pt.includes(e.operator)?[t]:t);if(!n&&(!i||s.every(d=>typeof d=="string"&&i.includes(d))))return null;if(!i)throw new Error(`'${e.field}' is an enum: a case-insensitive comparison reads its declared values, which the map doesn't list.`);let p=d=>n?d.toLowerCase():d,l=new Set(s.filter(d=>typeof d=="string").map(d=>p(d))),f=i.filter(d=>l.has(p(d)));return L.includes(e.operator)?{values:i.filter(d=>!f.includes(d)),matchesNull:!a}:{values:f,matchesNull:a}};var G=e=>`"${e.replace(/"/g,'""')}"`;var ee=e=>e.replace(/\\/g,"\\\\").replace(/%/g,"\\%").replace(/_/g,"\\_"),Os=(e,t,r=false)=>{let[o,...n]=e.split("."),i=t?`${G(t)}.${G(o)}`:G(o);if(n.length===0)return i;let s=n.map(Es),a=s.pop();return [i,...s].join("->")+(r?"->":"->>")+a},Es=e=>`'${e.replace(/'/g,"''")}'`;var ZS=["@prisma/client/runtime/client","@prisma/client/runtime/library"],Si,YS=()=>{if(Si!==void 0)return Si;for(let e of XS())for(let t of ZS)try{let r=e(t);if(r.AnyNull!==void 0)return Si=r.AnyNull,Si}catch{}},XS=()=>{let e=[];try{let t=globalThis.process?.getBuiltinModule?.("module")?.createRequire;t&&e.push(t(import.meta.url));}catch{}return typeof ki=="function"&&e.push(ki),e},Zf=()=>{let e=Qt.get("prismaOptions.anyNull")??YS();if(e===void 0)throw new Error("A null check on a Json field needs Prisma's AnyNull, and @prisma/client isn't installed: engineGlobals.set('prismaOptions.anyNull', Prisma.AnyNull).");return e};var Yf,Xf=e=>{Yf=e;},z=(e,t,r)=>Yf(e,t,r);var eb=(e,t)=>{let r=q(e);if(r)throw r.depth>1?new Error(Eo(e,"toPrisma")):new Error(`Path '${e}' is not supported by toPrisma(): Prisma WHERE has no column-to-column comparison or arithmetic. Use toSql() or prisma.$queryRaw.`);return vn(e,t?.context,"toPrisma")},ze=(e,t)=>To(e,{value:r=>r,path:r=>eb(r,t),bind:(r,o)=>zn(r,o,"toPrisma")}),Bo=e=>t=>ze(t,e),co=e=>nr({now:e?.now,timeZone:e?.timeZone,weekStart:e?.weekStart},Bo(e)),mo=e=>t=>{let r=typeof t.operator=="string"||typeof t.dateOperator=="string",o=t.value!==void 0||typeof t.path=="string"&&t.path!==""||typeof t.bind=="string";if(!r||"aggregate"in t||!o)return t;let n=me({field:String(t.field)},e?.map,e?.model);if((n==="json"||n==="json-path")&&typeof t.operator=="string"&&Ur.includes(t.operator))throw C("toPrisma",`The complement of '${t.operator}' on the Json value '${t.field}'`,"it keeps values of other types");let i=ze(t,e),s=t.offset===void 0?void 0:ze(t.offset,e);if(t.offset!==void 0&&s==null)return null;let{path:a,bind:p,bindOptional:l,...f}=t,d={...f,value:i,...t.offset!==void 0&&{offset:{value:s}}};return typeof t.dateOperator=="string"?i==null||ae({operator:t.dateOperator},i)?null:d:Qf(d)};var mt=()=>({}),ur=mt,Bt=()=>({OR:[]}),vs=e=>Object.keys(e).length===0,ed=e=>{let t=Object.keys(e);return t.length===1&&t[0]==="OR"&&Array.isArray(e.OR)&&e.OR.length===0},cr=e=>{if(e.some(ed))return Bt();let t=e.filter(r=>!vs(r));return t.length===0?mt():t.length===1?t[0]:{AND:t}},V=e=>{if(e.some(vs))return mt();let t=e.filter(r=>!ed(r));return t.length===0?Bt():t.length===1?t[0]:{OR:t}},ge=e=>vs(e)?e:{NOT:e},td=(e,t,r)=>cr(e.all.map(o=>z(o,t,r))),rd=(e,t,r)=>V(e.any.map(o=>z(o,t,r))),od=(e,t,r)=>{if(It(e,t?.map,t?.model))return ur();let o=z(be(e.if,mo(t)),t,r),n=z(e.then,t,r),i=V([o,n]);if(e.else!==void 0){let s=z(e.if,t,r),a=z(e.else,t,r);return cr([i,V([s,a])])}return i};var nd=(e,t,r)=>{let o=or(ze(t,r));return o===null?null:rr(e,o)},id=(e,t,r)=>{if(e===null)return null;let o=ro(ze(t,r)),n=o&&tr(o[0],Bo(r));return !o||!n?null:Ct(Be(e),n,o[1],co(r).timeZone).toDate()};var mr=(e,t)=>{let r=e.split("."),o=t;for(let n=r.length-1;n>=0;n--)o={[r[n]]:o};return o};var As=(e,t)=>me(e,t?.map,t?.model),He=e=>e==="json"||e==="json-path",Vt=e=>He(e)?Zf():null,gr=(e,t)=>t?.map&&t?.model?xf(e,t.map,t.model).map(r=>mr(r,{is:null})):[],$s=(e,t)=>{let r=As(e,t);return [...He(r)||r==="list"||oe(e.field,t?.map,t?.model)?.isRequired===false?[gt(e.field,{equals:Vt(r)},t)]:[],...gr(e.field,t)]},bi=(e,t,r,o)=>{if(r.mode&&He(o)&&Array.isArray(t))throw C("toPrisma",`A case-insensitive comparison of a Json value with the list ${JSON.stringify(t)}`);if(!r.mode||typeof t!="string")return {[e]:t,...r};if(!He(o))return {[e]:ee(t),...r};if(/[%_\\"\u0000-\u001f]/.test(t))throw C("toPrisma",`A case-insensitive equality on Json against '${t}'`,"Prisma matches the JSON text, where %, _, a backslash, a quote or a control character doesn't read as itself");return {[e]:t,...r}},Ps=(e,t,r,o)=>{let n=t?.datasource?.provider??Qt.get("prismaOptions.datasource.provider");return de(e.caseInsensitive)&&wp(n)&&uo(r,o)?{mode:"insensitive"}:{}},sd=(e,t)=>{if(e==="list")return [{isEmpty:true}];let r=t?[{equals:""}]:[];return He(e)?[...r,{equals:[]}]:r},ad=e=>"isEmpty"in e?{isEmpty:false}:{not:e.equals},Ts=(e,t,r,o,n)=>{let i=a=>gt(e,a,n),s=sd(t,o);return r?V([i({equals:Vt(t)}),...gr(e,n),...s.map(a=>i(a))]):cr([...t==="list"?[]:[i({not:Vt(t)})],...s.map(a=>i(ad(a)))])},rb=(e,t)=>{if(!sr(e))throw Qr(e.field);let o=(n=>gt(e.field,n,t))({is:{}});return le({...e,field:"relation"},{relation:null})===true?ge(o):o},ob=(e,t)=>oe(e.field,t?.map,t?.model),ld=mt(),nb=(e,t,r)=>{if(t==="list"||He(t)||ob(e,r)?.isRequired!==true)return null;let o=e.field.split(".").slice(0,-1).join(".");return o?gt(o,{is:{}},r):ld},pd=(e,t)=>{let r=m=>gt(e.field,m,t),o=As(e,t),n=()=>$s(e,t),i=ui(e,t?.map,t?.model);if(o==="relation")return rb(e,t);let s=nb(e,o,t),a=s&&(s===ld?Bt():ge(s)),p=m=>s&&a?le({field:"f",operator:m,value:null},{f:null})===true?a:s:null;if(s&&a&&sr(e)){let m=sd(o,i);return e.operator===h.isEmpty?V([a,...m.map(r)]):e.operator===h.notEmpty?cr([s,...m.map(S=>r(ad(S)))]):p(e.operator)}switch(e.operator){case h.exists:case h.notExists:{if(e.operator===h.exists)return o==="list"?ge(r({equals:null})):r({not:Vt(o)});let m=n();return m.length?V(m):r({equals:Vt(o)})}case h.isEmpty:case h.notEmpty:return Ts(e.field,o,e.operator===h.isEmpty,i,t)}let l=fd(e,t);if(ae(e,l))return V(L.includes(e.operator)?n():[]);if(l===null&&Pt.includes(e.operator)){let m=p(e.operator);if(m)return m}if(o==="list"&&Kr.includes(e.operator)&&Array.isArray(l))return z(Xn(e,l),t);if(o==="list"&&Array.isArray(l)&&l.includes(null))throw C("toPrisma",`A list holding null in '${e.field}'`);if(o==="list"&&de(e.caseInsensitive)&&uo("text",l))throw C("toPrisma",`A case-insensitive comparison on the list '${e.field}'`);let f=o==="enum"?oe(e.field,t?.map,t?.model):void 0,d=f?wi(e,l,f,t?.map):null;if(d){let m=r({in:d.values});return d.matchesNull?V([m,...n()]):m}if(Kr.includes(e.operator)){let{values:m,hasNull:S}=pt(l),b=Ps(e,t,o,m),w=He(o)?e.operator===h.in?V(m.map(c=>r(bi("equals",c,b,o)))):cr(m.map(c=>r(bi("not",c,b,o)))):r({[e.operator]:m,...b});return e.operator===h.in?S?V([w,...n()]):w:S?cr([w,s??r({not:Vt(o)})]):V([w,...n()])}let u=m=>{if(!He(o)||m!==h.contains)return r(Vo({...e,operator:m},t));let S=r({array_contains:[ib(e,l,t,o)]});return typeof l=="string"?V([r(Vo({...e,operator:m},t)),S]):S};if(e.operator===h.contains)return u(h.contains);let g=Np.includes(e.operator)?Ao[e.operator]:zr.includes(e.operator)?h.between:void 0;if(g){if(He(o))throw C("toPrisma",`'${e.operator}' on the Json value '${e.field}'`,"it keeps values of other types");return V([ge(u(g)),...n()])}let y=r(Vo(e,t));return e.operator===h.equals&&l===null?V([y,...gr(e.field,t)]):e.operator===h.notEquals&&o==="list"?l===null?ge(r({equals:null})):V([ge(r({equals:l})),...n()]):e.operator===h.notEquals&&l!==null?V([y,...n()]):y},fd=(e,t)=>{let r=mi(e,ze(e,t),jt(e.field,t?.map,t?.model),"toPrisma",()=>co(t).timeZone);return e.offset===void 0?r:nd(r,e.offset,t)},Vo=(e,t)=>{let r=Bn(e);if(r)throw r;let o=As(e,t),n=()=>fd(e,t),i=l=>Ps(e,t,o,l),s=l=>{let f=n();if(o==="list"){if(l!=="contains")throw new Error(`Operator '${l}' does not apply to the list '${e.field}'.`);return {has:f}}let d=He(o)?sb[l]:l,u=typeof f=="string"?ee(f):f;return {[d]:u,...i(f)}},a=Vn(e.operator,n());if(a)throw a;let p=At(e.operator,"field");if(p&&Ur.includes(e.operator))return {[p]:n()};switch(e.operator){case h.equals:{let l=n()??Vt(o);return bi("equals",l,i(l),o)}case h.notEquals:{let l=n()??Vt(o);return bi("not",l,i(l),o)}case h.in:case h.notIn:return {[e.operator]:n()};case h.contains:return s("contains");case h.startsWith:return s("startsWith");case h.endsWith:return s("endsWith");case h.matches:case h.notMatches:throw C("toPrisma",`'${e.operator}'`,"Prisma has no pattern filter");case h.between:case h.notBetween:{let[l,f]=we(ve(n(),e.operator));return {gte:l,lte:f}}default:throw new Error(`Operator '${e.operator}' is built by buildFieldRule`)}},ib=(e,t,r,o)=>{if(typeof t=="object"&&t!==null)throw new Error(`Membership of an object or a list in the Json array '${e.field}' has no exact Prisma form; use toSql() or check().`);if(Ps(e,r,o,t).mode)throw C("toPrisma",`A case-insensitive member of the Json array '${e.field}'`);return t},sb={contains:"string_contains",startsWith:"string_starts_with",endsWith:"string_ends_with"},gt=(e,t,r)=>{if(!r?.map||!r?.model)return mr(e,t);let o=Ue(e,r.map,r.model),n=o.hops.find(s=>s.entry.isList);if(n)throw qn(e,n);let i=e.split(".");switch(o.kind){case "fallback":case "direct":return mr(e,t);case "bridge":return ur();case "past-scalar":throw Wn(e,o.column);case "json-path":{let s={path:o.jsonPath,...t},a=i.slice(0,o.stopIndex).join(".");return mr(a,s)}}};var ab=(e,t,r,o)=>{let n=M(e,t);if(!n)return null;for(let i of Object.values(n.fields))if(i.kind==="object"&&i.type===r&&(i.fromFields?.length??0)>0&&(i.toFields?.length??0)>0&&(o===void 0||i.relationName===o))return i;return null},qo=(e,t,r)=>{if(r.fromFields?.length)return r.fromFields.map((n,i)=>({here:n,there:r.toFields?.[i]??"id"}));let o=ab(e,r.type,t,r.relationName);return o?.fromFields?.length?o.fromFields.map((n,i)=>({here:o.toFields?.[i]??"id",there:n})):null},dd=(e,t,r,o)=>{if(o.relationName===void 0)return null;let n=Object.entries(M(e,o.type)?.fields??{}).filter(([i,s])=>s.kind==="object"&&s.type===t&&s.relationName===o.relationName&&!(o.type===t&&i===r));return n.length===1?{field:n[0][0],entry:n[0][1]}:null};var Ri=(e,t,r,o)=>{let n=e.split("."),i=Ue(e,t,r);if(i.kind!=="direct"||i.entry.kind!=="object"){let p=i.hops.at(-1)?.entry.type??r;throw new Error(`Field '${n[i.hops.length]}' is not a relation in model '${p}'. ${o} require a relation field.`)}let s=i.hops.find(p=>p.entry.isList);if(s)throw new Error(`Intermediate field '${s.field}' in path '${e}' is a list relation. Only the final segment can be a list relation for ${o.toLowerCase()}.`);if(!i.entry.isList)throw new Error(`Field '${i.column}' is not a list relation in model '${i.model}'. ${o} only apply to one-to-many or many-to-many relations.`);let a=qo(t,i.model,i.entry);if(!a){let p=Object.values(M(t,i.entry.type)?.fields??{}).some(l=>l.kind==="object"&&l.type===i.model&&l.isList&&!l.fromFields?.length);throw new Error(p?`'${i.model}.${i.column}' is an implicit many-to-many relation. ${o} require an explicit join model with a FK \u2014 convert to an explicit @relation or use prisma.$queryRaw.`:`Cannot determine FK relationship between '${i.model}' and '${i.entry.type}'. Ensure the FieldMap contains both sides of the relation.`)}if(a.length>1)throw new Error(`${o} do not support composite FK relations ('${i.model}.${i.column}'). Use prisma.$queryRaw.`);return {through:i.hops.map(p=>p.field).join("."),target:i.entry.type,parentKey:a[0].here,targetKey:a[0].there}},xi=(e,t,r,o,n)=>{let i={operation:"groupBy",model:t.target,args:{by:[t.targetKey],where:r,having:o},extract:t.targetKey},s={__step:e.steps.length};e.steps.push(i);let a={[t.parentKey]:{in:s}},p=n?ge(a):a;return t.through?mr(t.through,p):p};var ud=(e,t,r)=>{if(ce(e)){let o=io(e);if(!o)throw je("toPrisma");return z(o,t,r)}if(!t?.map||!t?.model||!r)throw new Error("Aggregate rules require a FieldMap and model to generate a Prisma plan. Pass { map, model } options to toPrisma().");if(!De.includes(e.aggregate.mode))throw Nt(e.aggregate.mode);if(!e.aggregate.field)throw new Error("Prisma aggregate rules require aggregate.field to specify the numeric field on the related model.");return lb(e,t,r)},lb=(e,t,r)=>{let o=Ri(e.field,t.map,t.model,"Aggregate rules");if(e.condition&&It(e.condition,t.map,o.target))return ur();let n=e.aggregate.field??"",i=Ae(t.map,o.target,n);if(!i)throw new Error(`aggregate.field '${n}' does not exist on model '${o.target}'.`);if(i.kind!=="scalar"||dt(i))throw new Error(`aggregate.field '${n}' on model '${o.target}' must be a numeric scalar, got ${i.kind==="scalar"?"Json":`'${i.kind}'`}.`);let s=mo(t)(e);if(s===null||ae(s,s.value))return Bt();let a=ko(s,[{}],void 0,void 0,{},{value:0})===true,p=a?be(s):s,l=Vo(p,t),f={[e.aggregate.mode==="sum"?"_sum":"_avg"]:l},d=zr.includes(p.operator)?ge({[n]:f}):{[n]:f},u=e.condition?z(e.condition,{...t,model:o.target},r):mt(),g=xi(r,o,u,d,a);return a?V([g,...gr(e.field,t)]):g};var md=(e,t,r)=>{if(!e.field)throw new Error("toPrisma: count-based ArrayRule requires a field path");let o=Ri(e.field,t.map,t.model,"Count operators");if(e.condition===void 0)throw Oe(e.arrayOperator);if(e.count===void 0)throw Jr(e.arrayOperator);let n=e.count;if(e.arrayOperator===E.atLeast&&n===0)return mt();let i=z(e.condition,{...t,model:o.target},r),s=Ns(e),a=s?cd(E.atLeast,e.arrayOperator===E.atMost?n+1:1,o.targetKey):cd(e.arrayOperator,n,o.targetKey);return xi(r,o,i,a,s)},cd=(e,t,r)=>{let o=At(e,"array");if(!o)throw new Error(`'${e}' does not count`);return {[r]:{_count:{[o]:t}}}};var gd=(e,t,r)=>{let o=pb(e,t,r);return e.field&&Ns(e)&&!yd(e.field,t)?V([o,...gr(e.field,t)]):o},Ns=e=>le({...e,field:"items"},{items:[]})===true,pb=(e,t,r)=>{if(ce(e)){let i=io(e);if(!i)throw je("toPrisma");return z(i,t,r)}if(e.condition!==void 0&&!Tp.includes(e.arrayOperator)&&It(e.condition,t?.map,hd(e,t)?.model))return ur();if(kn.includes(e.arrayOperator)){if(t?.map&&t?.model&&r)return md(e,t,r);throw new Error(`ArrayOperator '${e.arrayOperator}' requires a FieldMap and model to generate a multi-step plan. Pass { map, model } options to toPrisma(). Without them, use prisma.$queryRaw for count-based relation filtering.`)}if(!e.field)throw jn("toPrisma");let{field:o}=e;if(yd(o,t))return fb(e,o,me({field:o},t?.map,t?.model),t);let n=db(e,t,r);return gt(e.field,n,t)},yd=(e,t)=>{let r=me({field:e},t?.map,t?.model);return r==="list"||r==="json"||r==="json-path"},fb=(e,t,r,o)=>{switch(e.arrayOperator){case E.empty:case E.notEmpty:return Ts(t,r,e.arrayOperator===E.empty,false,o);default:throw C("toPrisma",`'${e.arrayOperator}' over the ${r==="list"?"list":"Json array"} '${t}'`,r==="list"?"test a list's membership with 'contains'":void 0)}},hd=(e,t)=>{if(!t?.map||!t?.model||!e.field)return t;let r=ps(e.field,t.map,t.model);return r?{...t,model:r}:t},db=(e,t,r)=>{let o=hd(e,t);switch(e.arrayOperator){case E.all:if(!e.condition)throw Oe(e.arrayOperator);return {none:z(be(e.condition,mo(o)),o,r)};case E.any:if(!e.condition)throw Oe(e.arrayOperator);return {some:z(e.condition,o,r)};case E.none:if(!e.condition)throw Oe(e.arrayOperator);return {none:z(e.condition,o,r)};case E.empty:return {none:{}};case E.notEmpty:return {some:{}};default:throw H(e.arrayOperator,"array")}};var wd=(e,t)=>{let r=t?.map,o=me({field:e.field},r,t?.model);if(o==="json"||o==="json-path")throw C("toPrisma",`A date rule on the Json value '${e.field}'`,"Prisma compares Json text");let n=oe(e.field,r,t?.model);if(n&&!X(n)&&ct(n)!==I.DateTime)throw C("toPrisma",`A date rule on the ${n.type} field '${e.field}'`,`Prisma compares it as ${n.type}, not as an instant`);let i=L.includes(e.dateOperator)?$s(e,t):[],s=ub(e,t);if(s===null)return V(i);let a=gt(e.field,s,t),p=zr.includes(e.dateOperator)?ge(a):a;return V([p,...i])},ub=(e,t)=>{let r=co(t),o=Bo(t),n=g=>e.offset===void 0?g:id(g,e.offset,t),i=g=>{if(g==null)return null;if(!U(g))return Zn(g,r.timeZone);let y=Ie(g,o);return y&&Zr(y,e.dateOperator,r).toDate()},s=()=>ze(e,t),a=()=>n(i(s())),p=()=>{let g=s();if(g==null)return null;let y=ve(g,e.dateOperator).map(i);if(y[0]===null||y[1]===null)return null;let[m,S]=we(y).map(n);return m&&S?[m,S]:null},l=()=>{let g=s();if(g==null)return null;if(!U(g))throw xe(e.dateOperator);let y=Ie(g,o);if(!y)return null;let[m,S]=Yr(y,r);return [m.toDate(),S.toDate()]},f=g=>{let y=a();return y===null?null:{[g]:y}},d=g=>g?{gte:g[0],lte:g[1]}:null,u=At(e.dateOperator,"date");if(u)return f(u);switch(e.dateOperator){case $.within:case $.notWithin:return d(l());case $.between:case $.notBetween:return d(p());case $.dayIn:case $.dayNotIn:throw C("toPrisma",`'${e.dateOperator}'`);default:throw H(e.dateOperator,"date")}};var Cs=(e,t,r)=>{if(typeof e=="boolean")return e?{}:Bt();En(e,"toPrisma");let o=Z(e);(o==="field"||o==="date")&&ci(e.field,t?.map,t?.model);let n=e;switch(o){case "all":return td(n,t,r);case "any":return rd(n,t,r);case "if":return od(n,t,r);case "array":return gd(n,t,r);case "aggregate":return ud(n,t,r);case "date":return wd(n,t);case "field":return pd(n,t);default:throw Fe()}};Xf(Cs);var Sd=async(e,t)=>{let r=e.steps.filter(i=>i.operation==="groupBy"),o=e.steps.find(i=>i.operation==="where");if(!o)throw new Error("executePrismaPlan: result has no where step");let n=[];for(let i of r){let s=i.model.charAt(0).toLowerCase()+i.model.slice(1),a=t[s];if(!a)throw new Error(`executePrismaPlan: no delegate for model '${i.model}'. Ensure prismaDelegate has a key '${s}'.`);let p=await a[i.operation](i.args);n.push(p.map(l=>l[i.extract]).filter(l=>l!=null));}return Ms(o.where,n)},Ms=(e,t)=>{if(e==null)return e;if(Array.isArray(e))return e.map(r=>Ms(r,t));if(typeof e=="object"){let r=Object.getPrototypeOf(e);if(r!==Object.prototype&&r!==null)return e;let o=e;if("__step"in o&&typeof o.__step=="number"){let i=o.__step;if(i>=t.length)throw new Error(`Step ref __step: ${i} out of range (${t.length} steps executed)`);return t[i]}let n={};for(let[i,s]of Object.entries(o))n[i]=Ms(s,t);return n}return e};var cb=e=>e?.map?{...e,map:yi(e.map,e.mapName,"toPrisma")}:e,Wo=(e,t)=>{let{condition:r,options:o}=hi(e,t,"toPrisma"),n={steps:[]},i=Cs(r,cb(o),n);return {steps:[...n.steps,{operation:"where",where:i}]}};var bd=(e,t)=>e===""?t:t===""?e:`${e}.${t}`,_s=e=>{let t=new Set,r=n=>{n&&t.add(n);},o=(n,i)=>{let s=ye(n,i);return "outOfBounds"in s?null:bd(s.scope,s.path)};return Q(e,(n,i)=>{if(Ee(n))return;for(let p of Xr(n))r(q(p)?o(p,i):p);let s=typeof n.field=="string"&&n.field!==""?o(n.field,i):null;if(r(s),!at(n))return;let a=s??i[i.length-1];for(let p of eo(n))r(bd(a,p));return [...i,a]},[""]),[...t]};var Oi=(e,t)=>{for(let r of t){let o=e;for(let n of r.split("."))o=lr(o,n,()=>({}));}return e},Ei=(e,t)=>{for(let[r,o]of Object.entries(t))Ei(lr(e,r,()=>({})),o);return e},Ds=e=>e.whereClauses.flatMap(_s),mb=(e,t,r)=>Oi(Ei({},r??{}),Ds(B(e,t.mapName,t.modelName,t.relPath))),Rd=e=>Oi({},(e??[]).flatMap(_s)),xd=e=>({mapName:e.lens.mapName,modelName:e.lens.model,relPath:[]}),Fs=(e,t,r)=>({...r,relPath:[...e.relPath,t]}),Od=(e,t,r,o)=>o!==void 0||e==="declared"&&t.relations.has(r)?"declared":e==="declared"?"shallow":"paths",gb=(e,t,r,o)=>{if(!r.whereClauses.length)return;let n=Wo(D(r.whereClauses),{...o,map:e.lens,mapName:t.mapName,model:t.modelName});if(n.steps.length>1)throw new Error(`toLensSelect: the grant on '${t.relPath.join(".")}' needs a counting step (executePrismaPlan), which a relation's where in a select can't run`);let{where:i}=n.steps[0];return Object.keys(i).length?i:void 0},Ed=(e,t,r,o,n,i)=>{let s=M(x(e.lens.maps,t.mapName),t.modelName)?.fields??{},a=B(e,t.mapName,t.modelName,t.relPath),p=r==="paths"?o:Oi(Ei({},o),Ds(a)),l={};for(let[f,d]of Object.entries(s)){let u=r!=="paths"&&Ge(a,f),g=x(p,f),y=r==="paths"?void 0:x(n,f);if(!u&&g===void 0||d.kind==="bridge")continue;if(d.kind!=="object"){l[f]=true;continue}if(r==="shallow"&&g===void 0&&y===void 0)continue;let m=u?Od(r,a,f,y):"paths",S=Fs(t,f,{mapName:t.mapName,modelName:d.type}),b=Ed(e,S,m,g??{},y??{},i),w=d.isList&&m!=="paths"&&g===void 0?gb(e,S,B(e,S.mapName,S.modelName,S.relPath),i):void 0;l[f]=Object.keys(b).length?{select:b,...w&&{where:w}}:w?{where:w}:true;}return l},vd=(e,{rules:t,...r}={})=>{let o=N(e);return {select:Ed(o,xd(o),"declared",{},Rd(t),r)}},ks=(e,t)=>e==null?e:Array.isArray(e)?e.flatMap(r=>{let o=typeof r=="object"&&r!==null?t(r):null;return o===null?[]:[o]}):typeof e=="object"?t(e):null,Ls=(e,t,r,o)=>{let n={},i=M(x(e.lens.maps,t.mapName),t.modelName);for(let[s,a]of Object.entries(o)){if(!Object.hasOwn(r,s))continue;let p=x(i?.fields,s),l=p?Se(p,t.mapName):null;n[s]=l?ks(r[s],f=>Ls(e,Fs(t,s,l),f,a)):r[s];}return n},Ad=(e,t,r,o,n,i,s,a)=>{let p=B(e,t.mapName,t.modelName,t.relPath);if(!p.whereClauses.every(u=>le(u,o,a)===true))return null;let l=M(x(e.lens.maps,t.mapName),t.modelName)?.fields??{},f=s?Oi(Ei({},n),Ds(p)):{},d={};for(let[u,g]of Object.entries(l)){if(!Object.hasOwn(o,u))continue;let y=Ge(p,u),m=x(f,u),S=x(i,u),b=Se(g,t.mapName);if(!b){(y||m!==void 0)&&(d[u]=o[u]);continue}let w=Fs(t,u,b);if(y&&(r==="declared"||S!==void 0)){let c=Od(r,p,u,S),R=!Array.isArray(o[u])||m!==void 0;d[u]=ks(o[u],O=>Ad(e,w,c,O,m??{},S??{},s,a)??(s&&R?Ls(e,w,O,mb(e,w,m)):null));}else m!==void 0&&(d[u]=ks(o[u],c=>Ls(e,w,c,m)));}return d},$d=(e,t,{keepGrantColumns:r=false,rules:o,...n}={})=>{let i=N(e),s=xd(i),a=Rd(o);return t.flatMap(p=>{let l=Ad(i,s,"declared",p,{},a,r,n);return l===null?[]:[l]})};var js=(e,t,r,o,n)=>{let i={};for(let[s,a]of Object.entries(o.fields)){if(!Ge(t,s))continue;let p=t.enumValuesByField.get(s),l=n(s)?.filter(d=>p===void 0||p.includes(d.value)),f=lo(e,t,r,s,"groupBy")?t.sourceGroupBys.get(s):void 0;i[s]={...a,...p!==void 0&&{values:p},...l!==void 0&&{options:l},...f!==void 0&&{groupBy:f}};}return i},go=(e,t={})=>{let r=N(e),o={},n=new Map;for(let s of t.sourceValues??[])n.set(`${s.path}|${s.field}`,s.options);let i=(s,a,p,l)=>{if(Object.hasOwn(o,l))return;let f=x(x(r.lens.maps,s)?.models??{},a);if(!f)return;let d=B(r,s,a,p),u={mapName:s,modelName:a,relPath:p},g=js(r,d,u,f,w=>{let c=n.get(`${l}|${w}`),R=d.enumValuesByField.get(w);return c??R?.map(O=>({value:O,label:O}))}),y={};for(let[w,c]of d.sources)Ge(d,w)&&(y[w]=c);let m={};for(let[w,c]of d.sourceLabels)Ge(d,w)&&lo(r,d,u,w,"label")&&(m[w]=c);let S={};for(let[w,c]of d.sourceGroupBys)Ge(d,w)&&lo(r,d,u,w,"groupBy")&&(S[w]=c);let b={};for(let w of d.sourcesFromMapDefaults.keys()){if(!li(r,s,a,w))throw pi(l,s,a,w);Object.hasOwn(y,w)&&(b[w]="mapDefaults");}o[l]={mapName:s,model:a,fields:g,whereClauses:d.whereClauses,sources:y,sourceLabels:m,sourceGroupBys:S,sourceFrom:b};for(let w of d.relations.keys()){if(!Ge(d,w))continue;let c=x(f.fields,w);if(!c)continue;let R=Se(c,s);R&&i(R.mapName,R.modelName,[...p,w],`${l}.${w}`);}};return i(r.lens.mapName,r.lens.model,[],r.lens.model),o};var Is=(e,t,r,o,n,i,s,a)=>{let p=n.split("."),{hops:l}=ut(e.lens.maps,{mapName:t,modelName:r,relPath:o},n),f=l.filter((d,u)=>u<p.length-1);if(i&&f.length<p.length-1){let d=p[f.length],u=f.at(-1)?.model??r;throw new Error(`${i} '${n}': hop '${d}' is not a resolvable relation on '${u}' \u2014 cannot guard its join`)}for(let d of f){let u=d.relPath.join(".");if(s.has(u))continue;s.add(u);let g=B(e,d.map,d.model,d.relPath);if(d.isList&&g.whereClauses.length)throw new Error(`source path '${n}': cannot enforce the grant on to-many relation '${d.prefix}' in a dotted path`);for(let y of g.whereClauses)a.push(si(y,d.prefix));}},yb=e=>{let t=[];return Q(e,r=>(typeof r.field=="string"&&t.push(r.field),false)),t},hb=(e,t,r,o,n,i,s)=>{let a=[],p=new Set;for(let l of n)Is(e,t,r,o,l,"groupBy",p,a);s?.includes(".")&&Is(e,t,r,o,s,"label",p,a);for(let l of i)for(let f of yb(l))f.includes(".")&&Is(e,t,r,o,f,null,p,a);return a},Uo=(e,t)=>{let r=J(e,t);return r==null||typeof r=="object"?void 0:String(r)},vi=(e,t)=>{let r=[];for(let o of t){let n=Uo(e,o);if(n===void 0)return;r.push(n);}return r},Bs=(e,t)=>JSON.stringify([e??null,t]),wb=(e,t,r,o)=>{let n=Bs(o,t),i=e.get(n);i===void 0?e.set(n,{value:t,...r!==void 0?{label:r}:{},...o!==void 0?{groups:o}:{}}):i.label===void 0&&r!==void 0&&e.set(n,{...i,label:r});},Ai=(e,t,r,o,n)=>{let i=J(t,r),s=o==null?void 0:String(o);for(let a of Array.isArray(i)?i:[i])a==null||typeof a=="object"||wb(e,String(a),s,n);},$i=e=>[...e.values()].sort((t,r)=>{let o=(t.groups===void 0?0:1)-(r.groups===void 0?0:1);if(o!==0)return o;let n=t.groups??[],i=r.groups??[];for(let s=0;s<Math.max(n.length,i.length);s++){let a=(n[s]??"").localeCompare(i[s]??"","en",{numeric:true});if(a!==0)return a}return (t.label??t.value).localeCompare(r.label??r.value,"en",{numeric:true})}),Sb=(e,t)=>{if(t.length===0)return [];let r={mapName:e.lens.mapName,modelName:e.lens.model,relPath:[]},{hops:o,end:n}=ut(e.lens.maps,r,t.join("."));if(!n)return [false];let i=[r,...o.map(a=>({mapName:a.map,modelName:a.model}))],s=null;for(let a=0;a<t.length;a++){let p=i[a],l=B(e,p.mapName,p.modelName,t.slice(0,a)).whereClauses,f=s===null?l:[...l,s];if(f.length===0){s=null;continue}let d=x(e.lens.maps,p.mapName),u=d&&Ae(d,p.modelName,t[a]),g=d&&u&&u.kind==="object"&&i[a+1].mapName===p.mapName?dd(d,p.modelName,t[a],u):null;if(!g)return [false];let y=D(f);try{s=g.entry.isList?{field:g.field,arrayOperator:"any",condition:y}:D([{field:g.field,operator:"exists"},si(y,g.field)]);}catch{return [false]}}return s===null?[]:[s]},Pi=e=>{let t=N(e);return Object.entries(go(e)).flatMap(([r,o])=>Object.entries(o.sources).map(([n,i])=>{let s=x(o.sourceLabels,n),a=x(o.sourceGroupBys,n),p=Object.hasOwn(o.sourceFrom,n),l=r.split(".").slice(1),f=hb(t,o.mapName,o.model,l,a??[],i,s),d=x(o.fields,n)?.values,u=p?B(t,o.mapName,o.model,l).sourcesFromMapDefaults.get(n):void 0,g=Sb(u===void 0?t:{lens:t.lens,chain:t.chain.filter((y,m)=>m!==u)},l);return {path:r,visit:o,field:n,...p&&{from:"mapDefaults"},...s!==void 0&&{label:s},...a!==void 0&&{groupBy:a},eligibility:[...g,...i,...f,...d?[{field:n,operator:"in",value:[...d]}]:[]]}}))};var Pd=(e,t,r={})=>{let o=r.rowShape??"prisma",n=new Map;for(let i of t){let s=o==="sql";Ai(n,i,e.field,e.label===void 0?void 0:s&&e.label.includes(".")?i.__label:Uo(i,e.label),e.groupBy===void 0?void 0:vi(i,s?e.groupBy.map((a,p)=>`__group_${p}`):e.groupBy));}return {path:e.path,mapName:e.mapName,model:e.model,field:e.field,options:$i(n)}};var bb=(e,t)=>{let r=[...e];for(let o of t.split(".").slice(1)){let n=[];for(let i of r){let s=J(i,o);Array.isArray(s)?n.push(...s):s!=null&&n.push(s);}r=n;}return r},Td=(e,t,r)=>Pi(e).map(({path:o,visit:n,field:i,from:s,label:a,groupBy:p,eligibility:l})=>{if(s)throw new Error(`materializeSources: '${o}.${i}' offers its model's own source, which a fetched collection can't hold \u2014 query it with toSourceQueries and materializeSourceQuery.`);let f=D(l),d=new Map;for(let u of bb(t,o))le(f,u,r)===true&&Ai(d,u,i,a===void 0?void 0:Uo(u,a),p===void 0?void 0:vi(u,p));return {path:o,mapName:n.mapName,model:n.model,field:i,options:$i(d)}});var Nd=(e,t,r,o,n)=>{if(e===void 0)return;let i=new Set;for(let{mapName:s,modelName:a,relPath:p}of r)for(let l of xs(e,t,s,a,p)){let f=`'${l.path}' ${l.message}`;i.has(f)||(i.add(f),n.push({path:o,code:l.code,message:f}));}},Md=(e,t,r,o,n,i)=>{let s={lens:r.lens,chain:[...r.chain,t]},a=new Set;for(let p of o){let l=B(s,p.mapName,p.modelName,p.relPath);for(let[f,d]of Object.entries(e.sources??{})){let u=jo(d);for(let g of ["label","groupBy"]){if(u[g]===void 0||a.has(`${f}|${g}`))continue;let y=g==="label"?u.label:Do(u.groupBy),m=g==="label"?l.sourceLabels.get(f):l.sourceGroupBys.get(f);JSON.stringify(y)===JSON.stringify(m)&&(lo(s,l,p,f,g)||(a.add(`${f}|${g}`),i.push({path:`${n}.sources.${f}`,code:"invalid_source",message:`${g} '${String(u[g])}' reads a column hidden by another layer`})));}}}},Cd=(e,t,r,o,n)=>{let i=e.split("."),{hops:s}=ut(t,{mapName:r,modelName:o,relPath:[]},e),a=s.find((d,u)=>d.isList&&u<i.length-1);if(a)return `${n} cannot traverse to-many relation '${i[s.indexOf(a)]}'`;if(s.length===i.length)return `${n} must end on a scalar column, '${i.at(-1)}' is a relation`;let p=s.at(-1)??{map:r,model:o},l=i[s.length],f=Ae(x(t,p.map),p.model,l);return f?X(f)?`${n} relation '${l}' has no resolvable target`:s.length===i.length-1?null:`${n} segment '${l}' is not a relation`:`${n} segment '${l}' not on model '${p.model}'`},Rb=(e,t,r)=>{for(let o of t){let n=ys(o);if(n&&!n.includes(e))return "not in ancestor's picks";if(o.omits?.includes(e))return "was omitted by ancestor"}return r?.picks&&!r.picks.includes(e)?"not visible from defaults.picks":r?.omits?.includes(e)?"already excluded by defaults":null},_d=(e,t,r,o,n,i,s,a,p,l,f,d,u=false)=>{e.picks&&e.omits&&l.push({path:`${p}`,code:"conflicting_selection",message:"cannot specify both picks and omits"}),u&&"relations"in e&&e.relations&&l.push({path:`${p}`,code:"invalid_source",message:"defaults cannot declare 'relations' \u2014 relations are path-specific only"});for(let y of ["picks","omits"])for(let m of e[y]??[]){if(!x(i,m)){l.push({path:`${p}.${y}`,code:"not_in_lens",message:`field '${m}' not on model`});continue}let S=Rb(m,t,u?void 0:r);S&&l.push({path:`${p}.${y}`,code:"not_visible",message:`'${m}' ${S}`});}let g=(y,m,S)=>{let b=x(i,m);if(!b){l.push({path:`${p}.${y}`,code:"not_in_lens",message:`field '${m}' not on model`});return}if(b.kind!=="enum"){l.push({path:`${p}.${y}`,code:"wrong_kind",message:`field '${m}' is not an enum field`});return}let w=pr(b,a);for(let c of S)w&&!w.includes(c)&&l.push({path:`${p}.${y}.${m}`,code:"value_not_allowed",message:`'${c}' is not a known value of enum '${b.type}'`});};for(let[y,m]of Object.entries(e.enumPicks??{}))g("enumPicks",y,m);for(let[y,m]of Object.entries(e.enumOmits??{}))g("enumOmits",y,m);Nd(e.where,f,d,`${p}.where`,l);for(let[y,m]of Object.entries(e.sources??{})){if(!x(i,y)){l.push({path:`${p}.sources`,code:"not_in_lens",message:`field '${y}' not on model`});continue}let S=jo(m),b=S.from;if(b!==void 0){let R=b!=="mapDefaults"?`from takes 'mapDefaults', not '${String(b)}'`:u?"a mapDefaults source is what a path source's from: 'mapDefaults' points at; it can't point itself":S.label!==void 0||S.groupBy!==void 0?"a from: 'mapDefaults' source takes the model source's label and groupBy":null;R&&l.push({path:`${p}.sources.${y}`,code:"invalid_source",message:R});}let w=S.label?.includes(".")?S.label:void 0;if(S.label!==void 0)if(w){let R=Cd(w,o,n,s,"label");R&&l.push({path:`${p}.sources.${y}`,code:"invalid_source",message:`${R}`});}else x(i,S.label)||l.push({path:`${p}.sources.${y}`,code:"not_in_lens",message:`label column '${S.label}' not on model`});let c=Do(S.groupBy);if(c!==void 0||w!==void 0){let R=/^__(group(_\d+)?|label)$/;(R.test(y)||S.label!==void 0&&R.test(S.label))&&l.push({path:`${p}.sources.${y}`,code:"invalid_source",message:"'__group*' / '__label' names are reserved on grouped or path-labeled sources (sql column aliases)"});}if(c!==void 0){for(let O of c){let A=Cd(O,o,n,s,"groupBy");A&&l.push({path:`${p}.sources.${y}`,code:"invalid_source",message:`${A}`});}let R=JSON.stringify(c);for(let O of t){let A=x(O.sources,y);if(A===void 0)continue;let te=Do(jo(A).groupBy);te!==void 0&&JSON.stringify(te)!==R&&l.push({path:`${p}.sources.${y}`,code:"not_visible",message:`groupBy [${c}] conflicts with an ancestor layer's groupBy [${te}]`});}}Nd(S.where,f,d,`${p}.sources.${y}`,l);}},xb=(e,t,r,o,n)=>{for(let[i,s]of Object.entries(t)){let a=x(r,i);if(!a){n.push({path:`mapDefaults.${e}.enums.${i}`,code:"not_in_lens",message:"enum not in registry"});continue}let p=null,l=new Set;for(let d of o){let u=d[i];if(u&&(u.picks&&(p=ai(p,u.picks)),u.omits))for(let g of u.omits)l.add(g);}let f=d=>!(l.has(d)||p&&!p.has(d));for(let d of s.picks??[])a.includes(d)?f(d)||n.push({path:`mapDefaults.${e}.enums.${i}.picks`,code:"not_visible",message:`'${d}' not visible from ancestors`}):n.push({path:`mapDefaults.${e}.enums.${i}.picks`,code:"value_not_allowed",message:`'${d}' not a known value`});for(let d of s.omits??[])a.includes(d)?f(d)||n.push({path:`mapDefaults.${e}.enums.${i}.omits`,code:"not_visible",message:`'${d}' already excluded by ancestors`}):n.push({path:`mapDefaults.${e}.enums.${i}.omits`,code:"value_not_allowed",message:`'${d}' not a known value`});}},kd=(e,t,r,o,n,i,s)=>{let a=B(t,r.mapName,r.modelName,r.relPath);for(let p of ["enumPicks","enumOmits"])for(let[l,f]of Object.entries(e[p]??{})){let d=x(o,l);if(d?.kind!=="enum")continue;let u=pr(d,n)??[],g=fi(a,l)??u;for(let y of f)u.includes(y)&&!g.includes(y)&&s.push({path:`${i}.${p}.${l}`,code:"not_visible",message:`'${y}' is not visible (not allowed by the inherited enum narrowing)`});}},Ld=(e,t,r,o,n,i,s,a,p,l,f)=>{let d=x(n,i),u=M(d,s);if(!u)return;let g=x(x(r.mapDefaults,i)?.models,s),m=[...o.map(b=>x(x(b.mapDefaults,i)?.models,s)).filter(b=>b!==void 0).map(b=>b),...t];_d(e,m,g,n,i,u.fields,s,d?.enums,a,p,l,[{mapName:i,modelName:s,relPath:f}],false),kd(e,{lens:l.lens,chain:[...l.chain,{parent:r.parent,mapDefaults:r.mapDefaults}]},{mapName:i,modelName:s,relPath:f},u.fields,d?.enums,a,p),Md(e,r,l,[{mapName:i,modelName:s,relPath:f}],a,p);let S={lens:l.lens,chain:[...l.chain,r]};for(let[b,w]of Object.entries(e.sources??{}))!Fo(w)||w.from!=="mapDefaults"||li(S,i,s,b)||p.push({path:`${a}.sources.${b}`,code:"invalid_source",message:pi(a,i,s,b).message});for(let[b,w]of Object.entries(e.relations??{})){let c=x(u.fields,b);if(!c){p.push({path:`${a}.relations`,code:"not_in_lens",message:`'${b}' not on model`});continue}if(!X(c)){p.push({path:`${a}.relations`,code:"wrong_kind",message:`'${b}' is not a relation (kind=${c.kind})`});continue}let R=Se(c,i);if(!R)continue;if(!M(x(n,R.mapName),R.modelName)){p.push({path:`${a}.relations.${b}`,code:"not_in_lens",message:"target model not found in lens"});continue}let O=t.map(A=>x(A.relations,b)).filter(A=>A!==void 0);Ld(w,O,r,o,n,R.mapName,R.modelName,`${a}.relations.${b}`,p,l,[...f,b]);}},Vs=e=>{let t=[],r=We(e),o=qe(e.parent),n=N(e.parent),i=go(e.parent);for(let[s,a]of Object.entries(e.mapDefaults??{})){let p=x(r.maps,s);if(!p){t.push({path:`mapDefaults.${s}`,code:"not_in_lens",message:"not in lens"});continue}let l=o.map(f=>x(f.mapDefaults,s)?.enums).filter(f=>f!==void 0);for(let[f,d]of Object.entries(a.models??{})){let u=M(p,f);if(!u){t.push({path:`mapDefaults.${s}.models.${f}`,code:"not_in_lens",message:"not in fieldMap"});continue}let g=o.map(m=>x(x(m.mapDefaults,s)?.models,f)).filter(m=>m!==void 0),y=[{mapName:s,modelName:f,relPath:fr}];for(let[m,S]of Object.entries(i))S.mapName===s&&S.model===f&&y.push({mapName:s,modelName:f,relPath:m.split(".").slice(1)});_d(d,g,void 0,r.maps,s,u.fields,f,p.enums,`mapDefaults.${s}.models.${f}`,t,n,y,true),kd(d,n,{mapName:s,modelName:f,relPath:fr},u.fields,p.enums,`mapDefaults.${s}.models.${f}`,t),Md(d,e,n,y,`mapDefaults.${s}.models.${f}`,t);}a.enums&&xb(s,a.enums,p.enums,l,t);}if(e.root){let s=r.mapName,a=r.model,p=x(r.maps,s);if(!p)t.push({path:"root",code:"not_in_lens",message:`lens map '${s}' not in lens`});else if(!M(p,a))t.push({path:"root",code:"not_in_lens",message:`lens model '${a}' not in fieldMap`});else {let l=o.map(f=>f.root).filter(f=>f!==void 0);Ld(e.root,l,e,o,r.maps,s,a,"root",t,n,[]);}}for(let s of Ff(e))t.push({path:"bindings",code:"invalid_binding",message:s});return Dt(t)},Ti=e=>Lo(Vs(e),"validateNarrowing");var Ob=(e,t)=>`${e}::${t}`,Eb=(e,t,r)=>{let o=e.get(t);if(!o){e.set(t,r.values?{...r,values:[...r.values]}:r);return}let n=o;if(r.values&&o.values){let i=new Set([...o.values,...r.values]);n={...n,values:[...i]};}else !r.values&&o.values&&(n={...n,values:void 0});r.groupBy!==void 0&&n.groupBy===void 0&&(n={...n,groupBy:r.groupBy}),n!==o&&e.set(t,n);},Dd=(e,t={})=>{let r=N(e),{lens:o}=r,n=new Map;for(let u of t.sourceValues??[]){let g=`${u.mapName}::${u.model}::${u.field}`,y=n.get(g)??new Map;for(let m of u.options)y.set(Bs(m.groups,m.value),m);n.set(g,y);}let i=new Map,s=new Set,a=new Set,p=[{mapName:o.mapName,modelName:o.model,relPath:[],declared:true}];for(;p.length>0;){let{mapName:u,modelName:g,relPath:y,declared:m}=p.shift(),S=M(x(o.maps,u),g);if(!S)continue;let b=Ob(u,g);if(m){let A=`${b}::${y.join(".")}`;if(s.has(A))continue;s.add(A);}else {if(a.has(b))continue;a.add(b);}let w=B(r,u,g,m?y:fr),c=i.get(b);c||(c={mapName:u,modelName:g,fields:new Map},i.set(b,c));let O=js(r,w,{mapName:u,modelName:g,relPath:m?y:fr},S,A=>{let te=n.get(`${u}::${g}::${A}`);return te&&[...te.values()]});for(let[A,te]of Object.entries(O)){let Ut=te,Gt=te.groupBy,ho=c.fields.get(A)?.groupBy;if(Gt!==void 0&&ho!==void 0&&JSON.stringify(ho)!==JSON.stringify(Gt))throw new Error(`projectLens: '${g}.${A}' is grouped by different axes on different paths ([${ho}] vs [${Gt}]) \u2014 one surface field cannot carry two partition namespaces`);if(Eb(c.fields,A,te),X(Ut)){let wo=Se(Ut,u);if(!wo)continue;m&&w.relations.has(A)?p.push({mapName:wo.mapName,modelName:wo.modelName,relPath:[...y,A],declared:true}):p.push({mapName:wo.mapName,modelName:wo.modelName,relPath:[],declared:false});}}}let l={};for(let{mapName:u,modelName:g,fields:y}of i.values()){let m=x(l,u);m||(m={models:{}},l[u]=m);let S={},b=new Map;for(let[w,c]of y)if(S[w]=c.options===void 0&&c.values?{...c,options:c.values.map(R=>({value:R,label:R}))}:c,c.kind==="enum"&&c.values){let R=b.get(c.type)??new Set;for(let O of c.values)R.add(O);b.set(c.type,R);}m.models[g]={...M(x(o.maps,u),g),fields:S};for(let[w,c]of b)m.enums??={},m.enums[w]=[...c];}let f=o.bridges?.filter(u=>{let[g,y]=u.endpoints,m=Ae(x(l,g.fieldMap),g.model,$e(y)),S=Ae(x(l,y.fieldMap),y.model,$e(g));return m!==void 0||S!==void 0}),d={maps:l};return f&&f.length>0&&(d.bridges=f),{...d,mapName:o.mapName,model:o.model}};function Fd(e,{by:t="path",...r}={}){return t==="model"?Dd(e,r):go(e,r)}var jd=(e,t,r,o={})=>{let n=N(e),{resolution:i}=ao(n,Ke(n),r);if(i.outcome!=="resolved")return {ok:false,reason:i.outcome};let{hops:s,terminal:a,jsonSubPath:p}=i;if(X(a.entry))return {ok:false,reason:"relation"};if(s.some(d=>d!==a&&d.entry.isList))return {ok:false,reason:"list"};let l=(d,u)=>u!==null&&typeof u=="object"&&B(n,d.mapName,d.model,d.relPath).whereClauses.every(g=>le(g,u,o)===true),f=l(s[0],t)?t:null;for(let[d,u]of s.entries()){if(f===null||typeof f!="object")return {ok:true,value:null};let g=x(f,u.field);if(u===a)return {ok:true,value:p.length?J(g,p.join(".")):g};f=l(s[d+1],g)?g:null;}return {ok:true,value:null}};var vb=e=>"maps"in e,Id=(e,t)=>{let r=i=>{let s=x(t,i);if(!s)throw new Error(`composeLens: no stored lens '${i}'`);return s},o=[...r(e).parents,e];if(new Set(o).size!==o.length)throw new Error(`composeLens: '${e}' lists a layer twice in its parents`);let n=null;for(let[i,s]of o.entries()){let a=r(s);if(Object.hasOwn(a,"parent"))throw new Error(`composeLens: '${s}' carries a parent; a layer composes only through \`parents\``);let{id:p,parents:l,...f}=a;if(l.join("\0")!==o.slice(0,i).join("\0"))throw new Error(`composeLens: '${s}' composes with [${l.join(", ")}], not [${o.slice(0,i).join(", ")}] as '${e}' lists`);if(vb(a)!==(i===0))throw new Error(i===0?`composeLens: '${s}' is not a base lens, so it can't head '${e}''s parents`:`composeLens: '${s}' is a base lens, so it can only head a chain`);if(n===null){n=f;continue}let u={parent:n,...f};Ti(u),n=u;}return n},Bd=(e,t)=>{let r=Ft(e)?[]:qe(e);if(t.length!==r.length+1)throw new Error(`storeLens: the lens has ${r.length+1} layers, base included, but ${t.length} ids`);return [{...We(e),id:t[0],parents:[]},...r.map(({parent:o,...n},i)=>({...n,id:t[i+1],parents:t.slice(0,i+1)}))]};var Vd=e=>e instanceof Date?e.toISOString():Array.isArray(e)&&e.some(t=>t instanceof Date)?e.map(Vd):e,T=(e,t)=>(e.params.push(Vd(t)),`$${++e.paramIndex}`);var yt=(e,t,{jsonb:r=false}={})=>{let o=()=>({sql:Os(e,void 0,r),shape:e.includes(".")?"json-path":"unknown"});if(!t.map||!t.currentModel||!t.currentAlias)return o();let n=Ue(e,t.map,t.currentModel);if(n.kind==="past-scalar")throw Wn(e,n.column);if(n.kind==="bridge")throw new Error(`'${e}' crosses a bridge to another source; toSql() has no column for it`);if(n.kind==="fallback"||n.entry.kind==="object"&&n.entry.isList)return o();let i=n.hops.find(f=>f.entry.isList);if(i)throw qn(e,i);let s=t.currentAlias;for(let f of n.hops){let d=qd(t,s,f);if(!d)return o();s=d;}let a=di(n);if(n.kind==="direct"&&n.entry.kind==="object"){let f={field:n.column,entry:n.entry,from:n.model},d=qo(t.map,n.model,n.entry),u=qd(t,s,f);return !d||!u?o():{sql:`${G(u)}.${G(d[0].there)}`,shape:a}}let p=n.kind==="json-path"?[n.column,...n.jsonPath]:[n.column],l=Os(p.join("."),s,r);return {sql:a==="json"&&!r?`NULLIF(${l}, 'null'::jsonb)`:l,shape:a}},Je=(e,t,r)=>yt(e,t,r).sql,qd=(e,t,r)=>{let o=`${t}.${r.field}`,n=e.joinRegistry?.get(o);if(n)return n;if(!e.joinCounter||!e.map)return null;let i=`t${e.joinCounter.n+1}`,s=Ab(e.map,r.from,t,r.entry,i);return s?(e.joinCounter.n+=1,e.joins?.push(s),e.joinRegistry?.set(o,i),i):null},Ab=(e,t,r,o,n)=>{let i=o.type,s=M(e,i)?.dbName??i,a=qo(e,t,o);if(!a)return null;let p=a.map(({here:l,there:f})=>`${G(n)}.${G(f)} = ${G(r)}.${G(l)}`).join(" AND ");return `LEFT JOIN ${G(s)} AS ${G(n)} ON ${p}`};var ht={type:"value",value:null},wt=e=>e.type==="value"&&(e.value===null||e.value===void 0),$b=(e,t)=>{let r=q(e);if(r){if(r.depth>1)throw new Error(Eo(e,"toSql"));let o=yt(r.path,t);if(o.shape==="relation")throw new Error(`'${e}' is a relation; a value ref reads a column`);return {type:"column",...o}}return {type:"value",value:vn(e,t.context,"toSql")}},ne=(e,t)=>To(e,{value:r=>({type:"value",value:r}),path:r=>$b(r,t),bind:(r,o)=>({type:"value",value:zn(r,o,"toSql")})}),yr=e=>t=>{let r=ne(t,e);if(r.type==="column")throw new Error(`'${t.path}' is a row ref`);return r.value},Pe=e=>nr(e.dateConfig??{},yr(e));var Pb={lt:"<",lte:"<=",gt:">",gte:">=",equals:"="},yo=(e,t)=>{let r=At(e,t);return r?{symbol:Pb[r],negated:L.includes(e)}:void 0},Wd=(e,t)=>e.type==="column"?e.sql:T(t,e.value),Qe=(e,t)=>`(${t} OR ${e} IS NULL)`,qt=(e,t,r=true)=>t&&r?`${e} IS NULL`:"FALSE",Ni=(e,t,r,o,n)=>{if(wt(r))return qt(e,o);let i=`${e} ${t} ${Wd(r,n)}`;return o?Qe(e,i):i},Go=(e,t,r,o,n=true)=>{if(!t||t.some(wt))return qt(e,r,n);let[i,s]=t.map(d=>Wd(d,o)),a=t.some(d=>d.type==="column"),p=a?"SYMMETRIC ":"";if(!r)return `${e} BETWEEN ${p}${i} AND ${s}`;let l=`${e} NOT BETWEEN ${p}${i} AND ${s}`,f=a?`(${l} AND ${i} IS NOT NULL AND ${s} IS NOT NULL)`:l;return n?Qe(e,f):f};var Ud=e=>Array.isArray(e)?e.some(Ud):typeof e=="object"&&e!==null,Gd=(e,t,r,o)=>{let n=`NULLIF(${t}, 'null'::jsonb)`,i=`jsonb_typeof(${n})`,s=`(${n} #>> '{}')`,a=c=>`${T(o,JSON.stringify(c))}::jsonb`,p=de(e.caseInsensitive),l=c=>p?`LOWER(${c})`:c,f=L.includes(e.operator),d=c=>Qe(n,`NOT (${c})`);if(ae(e,r))return qt(n,f);let u=Vn(e.operator,r);if(u)throw u;let g=c=>{if(Ud(c))throw C("toSql",`A case-insensitive comparison of '${e.field}' with a list holding objects`);return a(ar(c))},y=c=>p&&typeof c=="string"?`(${i} = 'string' AND LOWER(${s}) = LOWER(${T(o,c)}))`:p&&Array.isArray(c)?`(${i} = 'array' AND LOWER(${n}::text)::jsonb = ${g(c)})`:`${n} = ${a(c)}`,m=c=>`(${i} = 'string' AND ${l(s)} LIKE ${l(T(o,c))})`,S=c=>{let R=O=>`(CASE WHEN ${i} = 'array' THEN EXISTS (SELECT 1 FROM jsonb_array_elements(${n}) AS e WHERE ${O}) ELSE FALSE END)`;return p&&typeof c=="string"?R(`jsonb_typeof(e) = 'string' AND LOWER(e #>> '{}') = LOWER(${T(o,c)})`):p&&Array.isArray(c)?R(`LOWER(e::text)::jsonb = ${g(c)}`):typeof c=="object"&&c!==null?R(`e = ${a(c)}`):`(${i} = 'array' AND ${n} @> ${a([c])})`},b=c=>typeof c=="string"?`(${m(`%${ee(c)}%`)} OR ${S(c)})`:S(c);switch(e.operator){case h.equals:return r===null?`${n} IS NULL`:y(r);case h.notEquals:return r===null?`${n} IS NOT NULL`:d(y(r));case h.in:case h.notIn:{let{values:c,hasNull:R}=pt(r),O=c.length?`(${c.map(y).join(" OR ")})`:"FALSE";return e.operator===h.in?R?`(${O} OR ${n} IS NULL)`:O:R?`(NOT ${O} AND ${n} IS NOT NULL)`:d(O)}case h.between:case h.notBetween:{let[c,R]=r,O=`(${i} = jsonb_typeof(${a(c)}) AND ${n} BETWEEN ${a(c)} AND ${a(R)})`;return e.operator===h.between?O:d(O)}case h.contains:return b(r);case h.notContains:return d(b(r));case h.startsWith:return m(`${ee(String(r))}%`);case h.endsWith:return m(`%${ee(String(r))}`);case h.notStartsWith:return d(m(`${ee(String(r))}%`));case h.notEndsWith:return d(m(`%${ee(String(r))}`));case h.matches:case h.notMatches:{let{source:c,caseInsensitive:R}=kt(r),O=`(${i} = 'string' AND ${s} ~${R?"*":""} ${T(o,_o(c))})`;return e.operator===h.matches?O:d(O)}}let w=yo(e.operator,"field")?.symbol;if(w)return `(${i} = jsonb_typeof(${a(r)}) AND ${n} ${w} ${a(r)})`;throw new Error(`Operator '${e.operator}' is not supported on a Json value in SQL`)};var Kd=e=>typeof e=="object"&&er(e)!==null,Ko=({sql:e,shape:t},r)=>{if(t!=="json-path"&&t!=="text")return `to_timestamp(EXTRACT(EPOCH FROM ${e}))`;let o=T(r,Pe(r).timeZone);return `(CASE WHEN btrim(${e}) ~ '^-?[0-9]+(\\.[0-9]+)?$' THEN to_timestamp(btrim(${e})::numeric / 1000) WHEN ${e} ~* '[0-9]{2}:[0-9]{2}(:[0-9]{2}(\\.[0-9]+)?)?\\s*(z|[+-][0-9]{2}(:?[0-9]{2})?)\\s*$' OR ${e} ~* '\\m(gmt|utc)\\M' THEN (${e})::timestamptz ELSE (${e})::timestamp AT TIME ZONE ${o} END)`},Ci=e=>Object.values(e).some(Kd),Nb=(e,t,r)=>{let o=Zt(r),n=o?"int":"double precision";if(typeof e=="number"||!Kd(e)){let a=ns(e,yr(t),r);return `${T(t,a)}::${n}`}let i=ne(e,t).sql;return `(CASE WHEN ${o?`${i} >= 0 AND ${i} = trunc(${i})`:`${i} >= 0`} THEN ${i} END)::${n}`},Cb=(e,t)=>`make_interval(${Fp.flatMap(o=>{let n=Object.keys(e).filter(i=>e[i]!==void 0&&Tt[i].interval===o).map(i=>{let s=Nb(e[i],t,i),{factor:a}=Tt[i];return a===1?s:`${a} * ${s}`});return n.length?[`${o} => ${n.join(" + ")}`]:[]}).join(", ")})`,zo=(e,t,r,o)=>{let n=Pe(o).timeZone;if(e.type==="value"&&!Ci(t)){let p=tr(t,yr(o));return e.value===null||e.value===void 0||p===null?ht:{type:"value",value:Ct(Be(e.value),p,r,n).toDate()}}let i=e.type==="column"?e.computed?e.sql:Ko(e,o):`${T(o,e.value??null)}::timestamptz`,s=T(o,n);return {type:"column",computed:true,sql:`(((${i} AT TIME ZONE ${s}) ${r===1?"+":"-"} ${Cb(t,o)}) AT TIME ZONE ${s})`}};var qs=(e,t,r)=>{let o=ne(t,r);if(e.type==="value"&&o.type==="value"){let i=or(o.value);return i===null?ht:{type:"value",value:rr(e.value,i)}}let n=(i,s)=>i.type==="column"?`(${i.sql})::double precision`:`${T(r,s(i.value)??null)}::double precision`;return {type:"column",computed:true,sql:`(${n(e,i=>i)} + ${n(o,or)})`}},zd=(e,t,r)=>{if(wt(e))return ht;let o=ne(t,r);if(o.type==="column")throw new Error(`A row path on a date offset ('${t.path}') is check-only; evaluate with check()`);let n=ro(o.value);return n===null?ht:zo(e,...n,r)};var Hd,Jd=e=>{Hd=e;},Wt=(e,t)=>Hd(e,t);var _i=(e,t,r)=>{let o=Bn(e);if(o)throw o;let n=r===void 0?yt(e.field,t):{sql:r,shape:"scalar"};if(n.shape==="relation"&&!sr(e))throw Qr(e.field);let i=r===void 0;if(n.shape==="enum"&&!$t.includes(e.operator)){let c=Zd(e,t),R=oe(e.field,t.map,t.currentModel),O=c!==Mi&&R&&!ae(e,c)?wi(e,c,R,t.map):null;if(O){let A=`${n.sql}::text = ANY(${T(t,O.values)})`;return O.matchesNull?Qe(n.sql,A):A}}let s=n.shape==="enum"&&!$t.includes(e.operator)?{...n,sql:`${n.sql}::text`}:n;if((n.shape==="json"||n.shape==="json-path")&&!$t.includes(e.operator)){let c=Zd(e,t);if(c===Mi)throw new Error(`The Json value '${e.field}' compares against an operand known when compiling, not one read per row.`);return Gd(e,Je(e.field,t,{jsonb:true}),c,t)}let p=c=>{if(c.type==="column"&&!c.computed&&(c.shape==="json"||c.shape==="json-path"))throw C("toSql",`'${e.field}' compared with a Json value read per row`,"SQL would compare its text")};if(he.includes(e.operator)){let c=eu(e,t);return c?.forEach(p),Go(s.sql,c,L.includes(e.operator),t,i)}let l=Yd(e,t);if(p(l),l.type==="column"&&nt(e.operator,"field")==="string"&&!dr(n.shape)&&n.shape!=="list")throw C("toSql",`'${e.operator}' on '${e.field}'`,"it is not text");if(l.type==="column"&&l.computed&&n.shape==="text"&&r===void 0)throw C("toSql",`'${e.field}' against a value moved by an offset`,"an offset moves a number or a date");let f=s.sql,d=yo(e.operator,"field");if(d)return Ni(f,d.symbol,l,false,t);if(l.type==="value"&&ae(e,l.value))return qt(f,L.includes(e.operator),i);let u=l.type==="column"&&l.computed===true,g=de(e.caseInsensitive)&&(l.type==="column"?!u&&dr(n.shape)&&dr(l.shape):uo(n.shape,l.value)),y=c=>g?`LOWER(${c})`:c,m=c=>g?ar(c):c;if(n.shape==="list"&&l.type==="column"&&Gr.includes(e.operator)){if(oe(e.field,t.map,t.currentModel)?.type!=="String"||!dr(l.shape))throw C("toSql",`'${e.operator}' on the list '${e.field}' with a member read per row ('${e.path}')`,"Postgres matches a member of the list's own type only");let c=de(e.caseInsensitive)&&dr(l.shape)?`EXISTS (SELECT 1 FROM unnest(${f}) AS e WHERE LOWER(e) = LOWER(${l.sql}))`:`array_position(${f}, ${l.sql}) IS NOT NULL`;return e.operator===h.contains?`(${l.sql} IS NOT NULL AND ${c})`:`(${f} IS NULL OR (${l.sql} IS NOT NULL AND NOT ${c}))`}if(n.shape==="list"&&l.type==="value"){let c=de(e.caseInsensitive)&&uo("text",l.value);if(Gr.includes(e.operator)){let R=T(t,l.value),O=c?`EXISTS (SELECT 1 FROM unnest(${f}) AS e WHERE LOWER(e) = LOWER(${R}))`:`array_position(${f}, ${R}) IS NOT NULL`;return e.operator===h.contains?O:`NOT ${O}`}if(Kr.includes(e.operator)&&Array.isArray(l.value))return Wt(Xn(e,l.value),t);if(Mb(e.operator))throw new Error(`'${e.operator}' does not apply to the list '${e.field}'; test its members with contains.`);if(c&&Pt.includes(e.operator)&&Array.isArray(l.value)){let R=T(t,ar(l.value)),O=`(${f} IS NOT NULL AND ARRAY(SELECT LOWER(e) FROM unnest(${f}) AS e) = ${R})`;return e.operator===h.equals?O:Qe(f,`NOT ${O}`)}}let S=l.type==="value"?l.value:void 0,b=l.type==="column"?l.sql:void 0;if(b!==void 0&&(Kr.includes(e.operator)||nt(e.operator,"field")==="pattern"))throw C("toSql",`'${e.operator}' against an operand read per row ('${e.path}')`);let w=c=>i?Qe(f,c):c;switch(e.operator){case h.equals:return u?`${f} = ${b}`:b!==void 0?`${y(f)} IS NOT DISTINCT FROM ${y(b)}`:S===null?`${f} IS NULL`:`${y(f)} = ${y(T(t,S))}`;case h.notEquals:return u?w(`${f} <> ${b}`):b!==void 0?`${y(f)} IS DISTINCT FROM ${y(b)}`:S===null?`${f} IS NOT NULL`:w(`${y(f)} <> ${y(T(t,S))}`);case h.in:{let{values:c,hasNull:R}=pt(S);if(!c.length)return R?`${f} IS NULL`:"FALSE";let O=`${y(f)} = ANY(${T(t,m(c))})`;return R?w(O):O}case h.notIn:{let{values:c,hasNull:R}=pt(S);if(!c.length)return R?`${f} IS NOT NULL`:"TRUE";let O=`${y(f)} <> ALL(${T(t,m(c))})`;return R?`(${O} AND ${f} IS NOT NULL)`:w(O)}case h.contains:return `${y(f)} LIKE ${y(T(t,`%${ee(String(S))}%`))}`;case h.notContains:return w(`${y(f)} NOT LIKE ${y(T(t,`%${ee(String(S))}%`))}`);case h.startsWith:return `${y(f)} LIKE ${y(T(t,`${ee(String(S))}%`))}`;case h.endsWith:return `${y(f)} LIKE ${y(T(t,`%${ee(String(S))}`))}`;case h.notStartsWith:return w(`${y(f)} NOT LIKE ${y(T(t,`${ee(String(S))}%`))}`);case h.notEndsWith:return w(`${y(f)} NOT LIKE ${y(T(t,`%${ee(String(S))}`))}`);case h.matches:return Qd(f,S,false,t);case h.notMatches:return w(Qd(f,S,true,t));case h.isEmpty:case h.notEmpty:return Ws(e.field,n,e.operator===h.isEmpty,t,ui(e,t.map,t.currentModel));case h.exists:return `${f} IS NOT NULL`;case h.notExists:return `${f} IS NULL`;default:throw new Error(`Unknown operator: ${e.operator}`)}},Yd=(e,t)=>{if($t.includes(e.operator))return {type:"value",value:void 0};let r=Xd(e,ne(e,t),t);return e.offset===void 0?r:qs(r,e.offset,t)},Xd=(e,t,r)=>t.type==="column"?t:{type:"value",value:mi(e,t.value,jt(e.field,r.map,r.currentModel),"toSql",()=>Pe(r).timeZone)},eu=(e,t)=>{let r=Xd(e,ne(e,t),t),o=r.type==="value"?r.value:void 0;if(o==null)return null;let n=ve(o,e.operator);return n.some(i=>i!=null&&!Y(i))&&to(o,e.operator),we(n).map(i=>{let s={type:"value",value:i};return e.offset===void 0?s:qs(s,e.offset,t)})},Qd=(e,t,r,o)=>{if(typeof t!="string"&&!(t instanceof RegExp))throw new Error("matches requires a string or RegExp pattern");let{source:n,caseInsensitive:i}=kt(t);return `${e} ${r?"!":""}~${i?"*":""} ${T(o,_o(n))}`},Mi=Symbol("not known"),Zd=(e,t)=>{if(he.includes(e.operator)){let o=eu(e,t);return o?o.every(n=>n.type==="value")?o.map(n=>n.value):Mi:null}let r=Yd(e,t);return r.type==="value"?r.value:Mi},Ws=(e,t,r,o,n)=>{let{sql:i,shape:s}=t;if(s==="list")return r?`(${i} IS NULL OR cardinality(${i}) = 0)`:`cardinality(${i}) > 0`;if(s==="json"||s==="json-path"){let a=Je(e,o,{jsonb:true}),p=["'null'::jsonb",...n?[`'""'::jsonb`]:[],"'[]'::jsonb"].join(", ");return r?`(${a} IS NULL OR ${a} IN (${p}))`:`${a} NOT IN (${p})`}return n?r?`(${i} IS NULL OR ${i} = '')`:`(${i} IS NOT NULL AND ${i} <> '')`:r?`${i} IS NULL`:`${i} IS NOT NULL`},Mb=e=>nt(e,"field")==="string"&&!Gr.includes(e);var tu=(e,t)=>{if(ce(e))throw je("toSql");if(e.condition)throw new Error("Aggregate condition filtering is not yet supported by toSql(). Use check() for in-memory evaluation or toPrisma() for database queries.");let r=_b(e,t);return _i(e,t,r)},_b=(e,t)=>{let{mode:r,field:o}=e.aggregate;if(!De.includes(r))throw Nt(r);let n=r==="sum"?"SUM":"AVG",i=me({field:e.field},t.map,t.currentModel);if(i==="relation"||oe(e.field,t.map,t.currentModel)?.kind==="object")throw new Error(`Field '${e.field}' is a relation \u2014 toSql() cannot aggregate relation lists. Use toPrisma() instead.`);if(o?.includes("."))throw new Error(`aggregate.field '${o}' contains a nested path \u2014 toSql() only supports flat field names. Use check() for nested paths.`);let s=i==="list",a=Je(e.field,t,{jsonb:!s}),p=s?a:`(CASE WHEN jsonb_typeof(${a}) = 'array' THEN ${a} END)`;if(s){if(o)throw new Error("aggregate.field is not supported for native array types. Use a JSONB column for object arrays.");return `(SELECT ${`COALESCE(${n}(elem), 0)`} FROM unnest(${p}) AS elem)`}if(o){let d=`(elem->>${Es(o)})::numeric`;return `(SELECT ${`COALESCE(${n}(${d}), 0)`} FROM jsonb_array_elements(${p}) AS elem)`}return `(SELECT ${`COALESCE(${n}(elem::numeric), 0)`} FROM jsonb_array_elements_text(${p}) AS elem)`};var ru=(e,t)=>{if(ce(e))throw je("toSql");if(!e.field)throw jn("toSql");if(me({field:e.field},t.map,t.currentModel)==="relation"||oe(e.field,t.map,t.currentModel)?.kind==="object")throw new Error(`Field '${e.field}' is a relation \u2014 relation arrays are not supported in SQL; use toPrisma().`);switch(e.arrayOperator){case E.empty:case E.notEmpty:{let o=yt(e.field,t),n=e.arrayOperator===E.empty;if(o.shape==="list")return Ws(e.field,o,n,t,false);let i=Je(e.field,t,{jsonb:true});return `(CASE WHEN jsonb_typeof(${i}) = 'array' THEN jsonb_array_length(${i}) ${n?"=":">"} 0 ELSE ${n?"TRUE":"FALSE"} END)`}case E.all:case E.any:case E.none:case E.atLeast:case E.atMost:case E.exactly:throw new Error(`Array operator '${e.arrayOperator}' with conditions is not supported in SQL. Use application-level filtering for complex array operations.`);default:throw H(e.arrayOperator,"array")}};var kb=(e,t)=>e.type==="column"&&!e.computed?{type:"column",sql:Ko(e,t),computed:true}:e,ou=e=>e===void 0||e==="instant"||e==="text"||e==="json-path"||e==="unknown",nu=e=>C("toSql",`A date rule on '${e}'`,"it is not a date column"),iu=(e,t,r)=>{let o=t.some(i=>i.type==="column"),n=e.shape==="json-path"||e.shape==="text";return o||n?{lhs:Ko(e,r),ends:t.map(i=>kb(i,r))}:{lhs:e.sql,ends:t}},su=(e,t)=>{let r=yt(e.field,t);if(!ou(r.shape))throw nu(e.field);let o=ne(e,t);if(o.type==="column"&&!ou(o.shape))throw nu(String(e.path??e.field));let n=yo(e.dateOperator,"date");if(n){let{lhs:s,ends:a}=iu(r,[Db(e,t)],t);return Ni(s,n.symbol,a[0],n.negated,t)}let i=(s,a)=>{if(!s)return Go(r.sql,null,a,t);let{lhs:p,ends:l}=iu(r,s,t);return Go(p,l,a,t)};switch(e.dateOperator){case $.within:case $.notWithin:return i(Fb(e,t),L.includes(e.dateOperator));case $.between:case $.notBetween:return i(jb(e,t),L.includes(e.dateOperator));case $.dayIn:case $.dayNotIn:{let s=e.dateOperator===$.dayNotIn,a=ne(e,t);if(a.type==="column")throw C("toSql",`A weekday list read from the row ('${e.path}')`);let p=is(a.value);if(p===null)return qt(r.sql,s);let l=T(t,Pe(t).timeZone),f=T(t,p),d=`EXTRACT(DOW FROM (${Ko(r,t)} AT TIME ZONE ${l}))`;return e.dateOperator===$.dayIn?`${d} = ANY(${f})`:Qe(r.sql,`${d} <> ALL(${f})`)}default:throw H(e.dateOperator,"date")}},au=e=>({type:"value",value:$o(Pe(e)).toDate()}),Lb=(e,t,r)=>{let o=se(e);if(o&&Ci(o[0]))return zo(au(r),...o,r);let n=Ie(e,yr(r));return n===null?ht:{type:"value",value:Zr(n,t,Pe(r)).toDate()}},lu=(e,t,r)=>e==null?ht:U(e)?Lb(e,t,r):{type:"value",value:Zn(e,Pe(r).timeZone)},pu=(e,t,r)=>t.offset===void 0?e:zd(e,t.offset,r),Db=(e,t)=>{let r=ne(e,t),o=r.type==="column"?r:lu(r.value,e.dateOperator,t);return pu(o,e,t)},Fb=(e,t)=>{let r=ne(e,t);if(wt(r))return null;if(r.type==="column"||!U(r.value))throw xe(e.dateOperator);let o=se(r.value);if(o&&Ci(o[0])){let s=au(t),a=zo(s,...o,t);return o[1]===-1?[a,s]:[s,a]}let n=Ie(r.value,yr(t));if(n===null)return null;let i=Yr(n,Pe(t));return [{type:"value",value:i[0].toDate()},{type:"value",value:i[1].toDate()}]},jb=(e,t)=>{let r=ne(e,t);if(wt(r))return null;let o=r.type==="value"?r.value:void 0,n=ve(o,e.dateOperator).map(p=>lu(p,e.dateOperator,t));if(n.some(wt))return null;let[i,s]=n;return (i.type==="value"&&s.type==="value"?we([i.value,s.value]).map(p=>({type:"value",value:p})):n).map(p=>pu(p,e,t))};var fu=(e,t)=>e.all.length===0?"TRUE":`(${e.all.map(o=>Wt(o,t)).join(" AND ")})`,du=(e,t)=>e.any.length===0?"FALSE":`(${e.any.map(o=>Wt(o,t)).join(" OR ")})`,uu=(e,t)=>{if(It(e,t.map,t.currentModel))return "TRUE";let r=Wt(e.if,t),o=Wt(e.then,t);if(e.else!==void 0){let n=Wt(e.else,t);return `(((${r}) IS NOT TRUE OR ${o}) AND ((${r}) IS TRUE OR ${n}))`}return `((${r}) IS NOT TRUE OR ${o})`};var Ho=(e,t)=>{if(typeof e=="boolean")return e?"TRUE":"FALSE";if(En(e,"toSql"),"field"in e&&typeof e.field=="string"&&t.map&&t.currentModel&&fs(e.field,t.map,t.currentModel))return "TRUE";let r=Z(e);(r==="field"||r==="date")&&ci(e.field,t.map,t.currentModel);let o=e;switch(r){case "all":return fu(o,t);case "any":return du(o,t);case "if":return uu(o,t);case "array":return ru(o,t);case "aggregate":return tu(o,t);case "date":return su(o,t);case "field":return _i(o,t);default:throw Fe()}};Jd(Ho);var Us=e=>{let t=yi(e?.map,e?.mapName,"toSql"),r=!!(t&&e?.model),o=e?.alias??(r?"t0":void 0);return {params:[],paramIndex:0,context:e?.context,dateConfig:{now:e?.now,timeZone:e?.timeZone,weekStart:e?.weekStart},map:t,currentModel:e?.model,currentAlias:o,joinCounter:r?{n:0}:void 0,joins:r?[]:void 0,joinRegistry:r?new Map:void 0}},Ib=(e,t)=>{let{condition:r,options:o}=hi(e,t,"toSql"),n=Us(o);return {sql:Ho(r,n),params:n.params,joins:n.joins??[]}};var cu=(e,t)=>{let[r,...o]=t;if(o.length===0){e[r]=true;return}let n=e[r],i=n!==void 0&&n!==true?n.select:{};cu(i,o),e[r]={select:i};},Bb=e=>{let t={};for(let r of e)cu(t,r.split("."));return t},Vb=(e,t,r,o,n,i,s)=>{let a=Wo(s,{map:e,mapName:t,model:r}),p=a.steps.at(-1).where,l=a.steps.filter(m=>m.operation!=="where"),f=n?.includes(".")?n:void 0,d=[...i??[],...f?[f]:[]],u={[o]:true,...n&&!f?{[n]:true}:{},...d.length?Bb(d):{}},g={model:r,...i?{}:{distinct:[o]},select:u,where:p,...l.length?{steps:a.steps}:{}},y;try{let m=Us({map:e,mapName:t,model:r,alias:"t0"}),S=Ho(s,m),b=f?Je(f,m):void 0,w=i?.map(Gt=>Je(Gt,m)),c=m.joins??[],R=c.length?` ${c.join(" ")}`:"",O=S?.trim()?` WHERE ${S}`:"",A=G("t0");y={sql:`SELECT DISTINCT ${[`${A}.${G(o)}`,...b?[`${b} AS ${G("__label")}`]:n?[`${A}.${G(n)}`]:[],...w?w.map((Gt,ho)=>`${Gt} AS ${G(`__group_${ho}`)}`):[]].join(", ")} FROM ${G(r)} AS ${A}${R}${O}`,params:m.params};}catch(m){y={sql:null,params:[],error:m instanceof Error?m.message:String(m)};}return {prisma:g,sql:y}},mu=e=>{let{lens:t}=N(e);return Pi(e).map(({path:r,visit:o,field:n,label:i,groupBy:s,eligibility:a})=>{let p=D([...o.whereClauses,...a]),{prisma:l,sql:f}=Vb(t,o.mapName,o.model,n,i,s,p);return {path:r,mapName:o.mapName,model:o.model,field:n,...i!==void 0?{label:i}:{},...s!==void 0?{groupBy:s}:{},composedWhere:p,prisma:l,sql:f}})};var gu=(e,t)=>{let r=N(e);return ao(r,Ke(r),t).resolution};/*! Bundled license information:
|
|
4
4
|
|
|
5
5
|
lodash-es/lodash.js:
|
|
6
6
|
(**
|
|
@@ -12,5 +12,5 @@ lodash-es/lodash.js:
|
|
|
12
12
|
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
|
13
13
|
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
|
14
14
|
*)
|
|
15
|
-
*/export{Pn as ALL_KINDS,E as ArrayOperator,$ as DateOperator,I as FieldKind,
|
|
15
|
+
*/export{Pn as ALL_KINDS,E as ArrayOperator,$ as DateOperator,I as FieldKind,Re as NUMERIC_KINDS,h as Operator,jw as RuleTarget,ot as ValueShape,Rf as assertValidFieldMaps,Ti as assertValidNarrowing,vS as assertValidRule,Df as bindLens,ts as bindRule,le as check,jf as coerceRule,Id as composeLens,If as createLens,zf as describeRule,Hf as describeRuleSources,Qt as engineGlobals,Sd as executePrismaPlan,Vw as getAggregateOperators,Bw as getArrayOperators,We as getLensRoot,Iw as getOperatorsForKind,nt as getValueShape,uf as indexBridges,Co as listBindings,kf as listLensBindings,Pd as materializeSourceQuery,Td as materializeSources,Af as narrowRule,q as parseScopeRef,Fd as projectLens,$d as projectRows,jd as readLensValue,ye as readScopeRef,ti as stitchFieldMaps,Bd as storeLens,vd as toLensSelect,Wo as toPrisma,mu as toSourceQueries,Ib as toSql,ls as validateFieldMaps,Vs as validateNarrowing,ri as validateRule,gi as validateRuleInLens,gu as walkLensPath};//# sourceMappingURL=index.js.map
|
|
16
16
|
//# sourceMappingURL=index.js.map
|