UNPKG

mingo

Version:

MongoDB query language for in-memory objects

1 lines 86.8 kB
var mingo=(()=>{var Ze=Object.defineProperty;var Eo=Object.getOwnPropertyDescriptor;var To=Object.getOwnPropertyNames;var Io=Object.prototype.hasOwnProperty;var yt=(t,e)=>{for(var n in e)Ze(t,n,{get:e[n],enumerable:!0})},wo=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of To(e))!Io.call(t,o)&&o!==n&&Ze(t,o,{get:()=>e[o],enumerable:!(r=Eo(e,o))||r.enumerable});return t};var No=t=>wo(Ze({},"__esModule",{value:!0}),t);var Lp={};yt(Lp,{Aggregator:()=>le,Context:()=>pt,ProcessingMode:()=>bt,Query:()=>me,aggregate:()=>xo,default:()=>Bp,find:()=>bo,update:()=>go,updateMany:()=>ho,updateOne:()=>jo});var mn=new ArrayBuffer(8),ko=new DataView(mn),Co=new Uint8Array(mn),Mo=(t,e)=>{let n=e>>>0,r=3432918353,o=461845907,s=t.length,i=new DataView(t.buffer,t.byteOffset,t.byteLength),p=0;for(;p+4<=s;p+=4){let m=i.getUint32(p,!0);m=Math.imul(m,r),m=m<<15|m>>>17,m=Math.imul(m,o),n^=m,n=n<<13|n>>>19,n=Math.imul(n,5)+3864292196}let a=0;switch(s&3){case 3:a^=t[p+2]<<16;case 2:a^=t[p+1]<<8;case 1:a^=t[p],a=Math.imul(a,r),a=a<<15|a>>>17,a=Math.imul(a,o),n^=a}return n^=s,n^=n>>>16,n=Math.imul(n,2246822507),n^=n>>>13,n=Math.imul(n,3266489909),n^=n>>>16,n>>>0},ye=(t,e)=>Mo(e,t),cn=new Uint8Array(1),X=(t,e)=>(cn[0]=e,ye(t,cn)),un=typeof TextEncoder<"u"?new TextEncoder:null,So=un?t=>un.encode(t):t=>{let e=new Uint8Array(t.length);for(let n=0;n<t.length;n++)e[n]=t.charCodeAt(n);return e},Do=t=>(ko.setFloat64(0,t,!0),Co),st={null:48,undefined:85,boolean:66,number:78,string:83,bigint:71,symbol:89,function:70,cycle:88,array:65,object:79,date:68,regexp:82},vo=t=>X(t,st.null),_o=t=>X(t,st.undefined),Po=(t,e)=>X(X(t,st.boolean),e?1:0),Jt=(t,e)=>ye(X(t,st.number),Do(e)),kt=(t,e)=>ye(X(t,st.string),So(e)),Ro=(t,e)=>{let n=e;if(t=X(X(t,st.bigint),n>=0n?1:2),n<0n&&(n=-n),n===0n)return X(t,0);for(;n>0n;)t=X(t,Number(n&0xffn)),n>>=8n;return t},Uo=(t,e)=>kt(X(t,st.symbol),e.description||""),Vo=(t,e)=>{let n=e;return t=kt(X(t,st.function),n.name||""),kt(Jt(t,n.length),n.toString())};function rt(t){let e=new WeakMap,n=1,o={null:vo,undefined:_o,boolean:Po,number:Jt,string:kt,bigint:Ro,symbol:Uo,function:Vo,object:(i,p)=>{let a=p,m=e.get(a);if(m)return Jt(X(i,st.cycle),m);if(e.set(a,n++),Array.isArray(a)){i=X(i,st.array);for(let f=0;f<a.length;f++)i=s(Jt(i,f),a[f]);return i}if(ArrayBuffer.isView(a)&&!(a instanceof DataView)){let f=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);return ye(X(i,st.array),f)}if(a instanceof Date)return Jt(X(i,st.date),a.getTime());if(a instanceof RegExp)return i=kt(X(i,st.regexp),a.source),kt(i,a.flags);i=s(X(i,st.object),a.constructor);let l=Object.keys(a).sort();for(let f of l)i=s(kt(i,f),a[f]);return i}},s=(i,p)=>{let m=o[p===null?"null":typeof p];return m?m(i,p):i};return s(0,t)>>>0}var Mt=class extends Error{},te=Symbol("missing"),Fo="mingo: cycle detected while processing object/array",Vt=t=>typeof t!="object"&&typeof t!="function"||t===null,An=t=>Vt(t)||_(t)||nt(t),Je={undefined:1,null:2,number:3,string:4,symbol:5,object:6,array:7,arraybuffer:8,boolean:9,date:10,regexp:11,function:12},ln=100,Ct=(t,e)=>t<e?-1:t>e?1:0,Wo=(t,e)=>{let n=t instanceof Uint8Array?t:new Uint8Array(t.buffer,t.byteOffset,t.byteLength),r=e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength),o=Math.min(n.length,r.length);for(let s=0;s<o;s++){let i=n[s]-r[s];if(i!==0)return i}return Ct(n.length,r.length)};function k(t,e){t===te&&(t=void 0),e===te&&(e=void 0);let n=tr(t)?"arraybuffer":Y(t),r=tr(e)?"arraybuffer":Y(e);if(n===r){if(n==="number"||n==="string")return Ct(t,e);if(n==="date")return Ct(+t,+e);if(n==="undefined"||n==="null")return 0;if(n==="regexp")return Ct(t.toString(),e.toString());if(n=="array"&&O(t)&&O(e)){let m=Math.min(t.length,e.length);for(let l=0;l<m;l++){let f=k(t[l],e[l]);if(f!==0)return f}return Ct(t.length,e.length)}if(n=="arraybuffer")return Wo(t,e);let i=Object.keys(t).sort(),p=Object.keys(e).sort(),a=k(i,p);if(a!==0)return a;for(let m of i)if(a=k(t[m],e[m]),a!=0)return a;return 0}let o=Je[n]??ln,s=Je[r]??ln;return o!==s?o-s:yn(t)&&yn(e)?Ct(t.toString(),e.toString()):Ct(rt(t),rt(e))}var q=class t extends Map{#t=new Map;#e=e=>{let n=rt(e);return[(this.#t.get(n)||[]).find(r=>L(r,e)),n]};constructor(){super()}static init(){return new t}clear(){super.clear(),this.#t.clear()}delete(e){if(Vt(e))return super.delete(e);let[n,r]=this.#e(e);return super.delete(n)?(this.#t.set(r,this.#t.get(r).filter(o=>!L(o,n))),!0):!1}get(e){if(Vt(e))return super.get(e);let[n,r]=this.#e(e);return super.get(n)}has(e){if(Vt(e))return super.has(e);let[n,r]=this.#e(e);return super.has(n)}set(e,n){if(Vt(e))return super.set(e,n);let[r,o]=this.#e(e);if(super.has(r))super.set(r,n);else{super.set(e,n);let s=this.#t.get(o)||[];s.push(e),this.#t.set(o,s)}return this}get size(){return super.size}};function c(t,e){if(!t)throw new Mt(e)}function Y(t){if(t===null)return"null";let e=typeof t;return e!=="object"&&Je[e]?e:O(t)?"array":_(t)?"date":nt(t)?"regexp":t?.constructor?.name?.toLowerCase()??"object"}var Ot=t=>typeof t=="boolean",j=t=>typeof t=="string";var x=t=>!isNaN(t)&&typeof t=="number",O=Array.isArray,$=t=>Y(t)==="object",rr=t=>!Vt(t),_=t=>t instanceof Date,nt=t=>t instanceof RegExp,be=t=>typeof t=="function",y=t=>t==null,K=(t,e=!0)=>!!t||e&&t==="",G=t=>y(t)||j(t)&&!t||O(t)&&t.length===0||$(t)&&Object.keys(t).length===0,ot=t=>O(t)?t:[t],P=(t,e)=>!!t&&Object.prototype.hasOwnProperty.call(t,e),tr=t=>typeof ArrayBuffer<"u"&&ArrayBuffer.isView(t),H=(t,e)=>{if(y(t)||Ot(t)||x(t)||j(t))return t;if(_(t))return new Date(t);if(nt(t))return new RegExp(t);if(tr(t)){let n=t.constructor;return new n(t)}if(e instanceof Set||(e=new Set),e.has(t))throw new Error(Fo);e.add(t);try{if(O(t)){let n=new Array(t.length);for(let r=0;r<t.length;r++)n[r]=H(t[r],e);return n}if($(t)){let n={};for(let r of Object.keys(t))n[r]=H(t[r],e);return n}}finally{e.delete(t)}return t},fn=t=>t===te;function Oe(t,e){if(fn(t)||y(t))return e;if(fn(e)||y(e))return t;let n=Y(t);if(n!==Y(e))return e;if(O(t)&&O(e))for(let r=0;r<e.length;r++)r<t.length?t[r]=Oe(t[r],e[r]):t.push(e[r]);else if(n==="object")for(let r of Object.keys(e))t[r]=Oe(t[r],e[r]);return t}function xt(t){let e=[q.init(),q.init()];if(t.length===0)return[];if(t.some(n=>n.length===0))return[];if(t.length===1)return t[0].slice();t[t.length-1].forEach(n=>e[0].set(n,!0));for(let n=t.length-2;n>-1;n--){if(t[n].forEach(r=>{e[0].has(r)&&e[1].set(r,!0)}),e[1].size===0)return[];e.reverse(),e[1].clear()}return Array.from(e[0].keys())}function it(t,e=1){let n=new Array;function r(o,s){for(let i=0,p=o.length;i<p;i++)O(o[i])&&(s>0||s<0)?r(o[i],Math.max(-1,s-1)):n.push(o[i])}return r(t,e),n}var yn=t=>t!=null&&t.toString!==Object.prototype.toString;function L(t,e){if(t===e||Object.is(t,e))return!0;if(t===null||e===null||typeof t!=typeof e||typeof t!="object"||t.constructor!==e.constructor)return!1;if(_(t))return _(e)&&+t==+e;if(nt(t))return nt(e)&&t.toString()===e.toString();if(O(t)&&O(e))return t.length===e.length&&t.every((o,s)=>L(o,e[s]));let n=Object.keys(t),r=Object.keys(e);return n.length!==r.length?!1:n.every(o=>P(e,o)&&L(t[o],e[o]))}function gt(t){let e=q.init();return t.forEach(n=>e.set(n,!0)),Array.from(e.keys())}function St(t,e){if(t.length<1)return new Map;let n=q.init();for(let r=0;r<t.length;r++){let o=t[r],s=e(o,r)??null,i=n.get(s);i?i.push(o):(i=[o],n.set(s,i))}return n}function er(t,e){return rr(t)?t[e]:void 0}function Bo(t,e){if(e<1)return t;for(;e--&&t.length===1&&O(t[0]);)t=t[0];return t}function M(t,e,n){let r=0;function o(i,p){let a=i;for(let m=0;m<p.length;m++){let l=p[m];if(/^\d+$/.exec(l)===null&&O(a)){if(m===0&&r>0)break;r+=1;let A=p.slice(m);a=a.reduce((d,b)=>{let g=o(b,A);return g!==void 0&&d.push(g),d},[]);break}else a=er(a,l);if(a===void 0)break}return a}let s=An(t)?t:o(t,e.split("."));return O(s)&&n?.unwrapArray?Bo(s,r):s}function dt(t,e,n){let r=e.indexOf("."),o=r==-1?e:e.substring(0,r),s=e.substring(r+1),i=r!=-1;if(O(t)){let m=/^\d+$/.test(o),l=m&&n?.preserveIndex?t.slice():[];if(m){let f=parseInt(o),A=er(t,f);i&&(A=dt(A,s,n)),n?.preserveIndex?l[f]=A:l.push(A)}else for(let f of t){let A=dt(f,e,n);n?.preserveMissing?l.push(A??te):(A!=null||n?.preserveIndex)&&l.push(A)}return l}let p=n?.preserveKeys?{...t}:{},a=er(t,o);if(i&&(a=dt(a,s,n)),a!==void 0)return p[o]=a,p}function Ae(t){if(O(t))for(let e=t.length-1;e>=0;e--)t[e]===te?t.splice(e,1):Ae(t[e]);else if($(t))for(let e of Object.keys(t))P(t,e)&&Ae(t[e])}var On=/^\d+$/;function Ft(t,e,n,r){let o=e.split("."),s=o[0],i=o.slice(1).join(".");if(o.length===1)($(t)||O(t)&&On.test(s))&&n(t,s);else{r?.buildGraph&&y(t[s])&&(t[s]={});let p=t[s];if(!p)return;let a=!!(o.length>1&&On.test(o[1]));O(p)&&r?.descendArray&&!a?p.forEach((m=>Ft(m,i,n,r))):Ft(p,i,n,r)}}function At(t,e,n){Ft(t,e,((r,o)=>{r[o]=be(n)?n(r[o]):n}),{buildGraph:!0})}function Tt(t,e,n){Ft(t,e,((r,o)=>{O(r)?r.splice(parseInt(o),1):$(r)&&delete r[o]}),n)}var J=t=>t&&t[0]==="$"&&/^\$[a-zA-Z0-9_]+$/.test(t);function Dt(t){if(An(t))return nt(t)?{$regex:t}:{$eq:t};if(rr(t)){if(!Object.keys(t).some(J))return{$eq:t};if(P(t,"$regex")){let e={...t};return e.$regex=new RegExp(t.$regex,t.$options),delete e.$options,e}}return t}function vt(t,e,n=k){let r=0,o=t.length-1;for(;r<=o;){let s=Math.round(r+(o-r)/2);if(n(e,t[s])<0)o=s-1;else if(n(e,t[s])>0)r=s+1;else return s}return r}var bt=(o=>(o[o.CLONE_OFF=0]="CLONE_OFF",o[o.CLONE_INPUT=1]="CLONE_INPUT",o[o.CLONE_OUTPUT=2]="CLONE_OUTPUT",o[o.CLONE_ALL=3]="CLONE_ALL",o))(bt||{}),T=class t{constructor(e,n){this.options=e;this.#t=n?{...n}:{}}#t;static init(e){return e instanceof t?new t(e.options,e.#t):new t({idKey:"_id",scriptEnabled:!0,useStrictMode:!0,processingMode:0,...e,context:e?.context?pt.from(e?.context):pt.init()})}update(e){return Object.assign(this.#t,e,{timestamp:this.#t.timestamp,variables:{...this.#t?.variables,...e?.variables}}),this}get local(){return this.#t}get now(){return this.#t?.timestamp||Object.assign(this.#t,{timestamp:Date.now()}),new Date(this.#t.timestamp)}get idKey(){return this.options.idKey}get collation(){return this.options?.collation}get processingMode(){return this.options?.processingMode}get useStrictMode(){return this.options?.useStrictMode}get scriptEnabled(){return this.options?.scriptEnabled}get collectionResolver(){return this.options?.collectionResolver}get jsonSchemaValidator(){return this.options?.jsonSchemaValidator}get variables(){return this.options?.variables}get context(){return this.options?.context}},It=(i=>(i.ACCUMULATOR="accumulator",i.EXPRESSION="expression",i.PIPELINE="pipeline",i.PROJECTION="projection",i.QUERY="query",i.WINDOW="window",i))(It||{}),pt=class t{#t=new Map(Object.values(It).map(e=>[e,{}]));constructor(){}static init(e={}){let n=new t;for(let[r,o]of Object.entries(e))n.#t.has(r)&&o&&n.addOps(r,o);return n}static from(e){return t.init(e&&Object.fromEntries(e.#t)||{})}static merge(e,n){let r=t.from(e);for(let o of Object.values(It))r.addOps(o,n.#t.get(o));return r}addOps(e,n){return this.#t.set(e,Object.assign({},n,this.#t.get(e))),this}getOperator(e,n){return this.#t.get(e)[n]??null}addAccumulatorOps(e){return this.addOps("accumulator",e)}addExpressionOps(e){return this.addOps("expression",e)}addQueryOps(e){return this.addOps("query",e)}addPipelineOps(e){return this.addOps("pipeline",e)}addProjectionOps(e){return this.addOps("projection",e)}addWindowOps(e){return this.addOps("window",e)}};function u(t,e,n,r){let o=!(r instanceof T)||y(r.local.root)?T.init(r).update({root:t}):r;return J(n)?bn(t,e,n,o):de(t,e,o)}var Lo=["$$ROOT","$$CURRENT","$$REMOVE","$$NOW"];function de(t,e,n){if(j(e)&&e.length>0&&e[0]==="$"){if(e==="$$KEEP"||e==="$$PRUNE"||e==="$$DESCEND")return e;let r=n.local.root,o=e.split(".");if(Lo.includes(o[0])){switch(o[0]){case"$$ROOT":break;case"$$CURRENT":r=t;break;case"$$REMOVE":r=void 0;break;case"$$NOW":r=new Date(n.now);break}e=e.slice(o[0].length+1)}else if(o[0].slice(0,2)==="$$"){r=Object.assign({},n.variables,{this:t},n?.local?.variables);let s=o[0].slice(2);c(P(r,s),`Use of undefined variable: ${s}`),e=e.slice(2)}else e=e.slice(1);return e===""?r:M(r,e)}if(O(e))return e.map(r=>de(t,r,n));if($(e)){let r={},o=Object.entries(e);for(let[s,i]of o){if(J(s))return c(o.length===1,`Expression must contain a single operator. got [${Object.keys(e).join(",")}]`),bn(t,i,s,n);r[s]=de(t,i,n)}return r}return e}function bn(t,e,n,r){let o=r.context,s=o.getOperator("expression",n);if(s)return s(t,e,r);let i=o.getOperator("accumulator",n);return c(!!i,`accumulator '${n}' is not registered.`),O(t)||(t=de(t,e,r),e=null),c(O(t),`arguments must resolve to array for ${n}.`),i(t,e,r)}function S(t){return t instanceof Wt?t:new Wt(t)}function ht(...t){let e=0;return S(()=>{for(;e<t.length;){let n=t[e].next();if(!n.done)return n;e++}return{done:!0,value:void 0}})}function zo(t){return!!t&&typeof t=="object"&&typeof t?.next=="function"}function Qo(t){return!!t&&(typeof t=="object"||typeof t=="function")&&typeof t[Symbol.iterator]=="function"}var Wt=class{#t=[];#e=[];#r;#o=!1;constructor(e){let n=Qo(e)?e[Symbol.iterator]():zo(e)?e:typeof e=="function"?{next:e}:null;c(!!n,"Iterator must be initialized with an iterable or function.");let r=-1,o={done:!1};this.#r=()=>{for(;!o.done&&(o=n.next(),!o.done);){let s=o.value;if(r++,this.#t.every(({op:p,fn:a})=>{let m=a(s,r);return p==="map"?!!(s=m)||!0:m}))return{value:s,done:!1}}return{done:!0}}}push(e,n){return this.#t.push({op:e,fn:n}),this}next(){return this.#r()}map(e){return this.push("map",e)}filter(e){return this.push("filter",e)}take(e){return e>0?this.filter(n=>!(e===0||e--===0)):this}drop(e){return e>0?this.filter(n=>e===0||e--===0):this}transform(e){let n=this,r;return S(()=>(r||(r=S(e(n.collect()))),r.next()))}collect(){for(;!this.#o;){let{done:e,value:n}=this.#r();e||this.#e.push(n),this.#o=e}return this.#e}each(e){for(;;){let n=this.next();if(n.done)break;if(e(n.value)===!1)return!1}return!0}reduce(e,n){let r=this.next();for(n===void 0&&!r.done&&(n=r.value,r=this.next());!r.done;)n=e(n,r.value),r=this.next();return n}size(){return this.collect().length}[Symbol.iterator](){return this}};var ut=class{#t;#e;constructor(e,n){this.#t=e,this.#e=T.init(n)}stream(e,n){let r=S(e),o=n??this.#e,s=o.processingMode;return s&1&&r.map(i=>H(i)),r=this.#t.map((i,p)=>{let a=Object.keys(i);c(a.length===1,`aggregation stage must have single operator, got ${a.toString()}.`);let m=a[0];c(m!=="$documents"||p==0,"$documents must be first stage in pipeline.");let l=o.context.getOperator("pipeline",m);return c(!!l,`unregistered pipeline operator ${m}.`),[l,i[m]]}).reduce((i,[p,a])=>p(i,a,o),r),s&2&&r.map(i=>H(i)),r}run(e,n){return this.stream(e,n).collect()}};var cr={};yt(cr,{$accumulator:()=>Ko,$addToSet:()=>qo,$avg:()=>Yo,$bottom:()=>Xo,$bottomN:()=>nr,$count:()=>Zo,$covariancePop:()=>Jo,$covarianceSamp:()=>ts,$first:()=>or,$firstN:()=>he,$last:()=>sr,$lastN:()=>je,$max:()=>es,$maxN:()=>$e,$median:()=>ir,$mergeObjects:()=>ar,$min:()=>rs,$minN:()=>Ee,$percentile:()=>ee,$push:()=>I,$stdDevPop:()=>ns,$stdDevSamp:()=>os,$sum:()=>ss,$top:()=>is,$topN:()=>pr});var Ko=(t,e,n)=>{if(c(!!n&&n.scriptEnabled,"$accumulator operator requires 'scriptEnabled' option to be true"),t.length==0)return e.initArgs;let r=T.init(n),o=u(r?.local?.groupId,e.initArgs||[],null,r.update({root:r?.local?.groupId})),s=e.init.apply(null,o);for(let i of t){let p=u(i,e.accumulateArgs,null,r.update({root:i}));s=e.accumulate.apply(null,[s,...p])}return e.finalize?e.finalize.call(null,s):s};var I=(t,e,n)=>{if(y(e))return t;let r=T.init(n);return t.map(o=>u(o,e,null,r.update({root:o})))};var qo=(t,e,n)=>gt(I(t,e,n));var Yo=(t,e,n)=>{let r=I(t,e,n).filter(x);return r.reduce((s,i)=>s+i,0)/(r.length||1)};var tt=(t,e,n)=>{if(G(e)||!$(e))return t;let r=k,o=n.collation;return $(o)&&j(o.locale)&&(r=Go(o)),t.transform(s=>{let i=Object.keys(e);for(let p of i.reverse()){let a=St(s,A=>M(A,p)),m=Array.from(a.keys()),l=!1;if(r===k){let A=!0,d=!0;l=m.every(b=>+(A&&=j(b))^+(d&&=x(b))),A?m.sort():d&&new Float64Array(m).sort().forEach((b,g)=>m[g]=b)}l||m.sort(r),e[p]===-1&&m.reverse();let f=0;for(let A of m)for(let d of a.get(A))s[f++]=d;c(f==s.length,"bug: counter must match collection size.")}return s})},Ho={1:"base",2:"accent",3:"variant"};function Go(t){let e={sensitivity:Ho[t.strength||3],caseFirst:t.caseFirst==="off"?"false":t.caseFirst||"false",numeric:t.numericOrdering||!1,ignorePunctuation:t.alternate==="shifted"};t.caseLevel===!0&&(e.sensitivity==="base"&&(e.sensitivity="case"),e.sensitivity==="accent"&&(e.sensitivity="variant"));let n=new Intl.Collator(t.locale,e);return(r,o)=>{if(!j(r)||!j(o))return k(r,o);let s=n.compare(r,o);return s<0?-1:s>0?1:0}}var nr=(t,e,n)=>{let r=n,o=u(r?.local?.groupId,e.n,null,r),s=tt(S(t),e.sortBy,n).collect(),i=s.length;return I(i<=o?s:s.slice(i-o),e.output,r)};var Xo=(t,e,n)=>nr(t,{...e,n:1},n);var Zo=(t,e,n)=>t.length;function xe(t,e=!0){let n=t.reduce((s,i)=>s+i,0),r=t.length||1,o=n/r;return Math.sqrt(t.reduce((s,i)=>s+Math.pow(i-o,2),0)/(r-Number(e)))}function ge(t,e=!0){if(!t)return null;if(t.length<2)return e?null:0;let n=0,r=0;for(let[s,i]of t)n+=s,r+=i;n/=t.length,r/=t.length;let o=0;for(let[s,i]of t)o+=(s-n)*(i-r);return o/(t.length-Number(e))}var Jo=(t,e,n)=>ge(I(t,e,n),!1);var ts=(t,e,n)=>ge(I(t,e,n),!0);var or=(t,e,n)=>{if(t.length===0)return;let r=T.init(n).update({root:t[0]});return u(t[0],e,null,r)};var he=(t,e,n)=>{let r=n,o=t.length,s=u(r?.local?.groupId,e.n,null,r);return c(s>0,"$firstN: 'n' must resolve to a positive integer."),I(o<=s?t:t.slice(0,s),e.input,n)};var sr=(t,e,n)=>{if(t.length===0)return;let r=t[t.length-1],o=T.init(n).update({root:r});return u(r,e,null,o)};var je=(t,e,n)=>{let r=n,o=t.length,s=u(r?.local?.groupId,e.n,null,r);return I(o<=s?t:t.slice(o-s),e.input,n)};var es=(t,e,n)=>{let r=I(t,e,n);if(G(r))return null;c(O(r),"$max: input must resolve to array");let o=r[0];for(let s of r)y(s)||isNaN(s)||k(s,o)>=0&&(o=s);return o};var $e=(t,e,n)=>{let r=n,o=t.length,s=u(r?.local?.groupId,e.n,null,r),i=I(t,e.input,n).filter(p=>!y(p));return i.sort((p,a)=>-1*k(p,a)),o<=s?i:i.slice(0,s)};var ee=(t,e,n)=>{let r=I(t,e.input,n).filter(x).sort(),o=I(e.p,"$$CURRENT",n).filter(x),s=e.method||"approximate";return o.map(i=>{c(i>0&&i<=1,`percentile value must be between 0 (exclusive) and 1 (inclusive): invalid '${i}'.`);let p=i*(r.length-1)+1,a=Math.floor(p),m=p===a?r[p-1]:r[a-1]+p%1*(r[a]-r[a-1]||0);switch(s){case"exact":return m;case"approximate":{let l=vt(r,m);return l/r.length>=i?r[Math.max(l-1,0)]:r[l]}}})};var ir=(t,e,n)=>ee(t,{...e,p:[.5]},n).pop();var ar=(t,e,n)=>{let r={};for(let o of t)if(!y(o))for(let s of Object.keys(o))o[s]!==void 0&&(r[s]=o[s]);return r};var rs=(t,e,n)=>{let r=I(t,e,n);if(G(r))return null;c(O(r),"$min: input must resolve to array");let o=r[0];for(let s of r)y(s)||isNaN(s)||k(s,o)<=0&&(o=s);return o};var Ee=(t,e,n)=>{let r=n,o=t.length,s=u(r?.local?.groupId,e.n,null,r),i=I(t,e.input,n).filter(p=>!y(p));return i.sort(k),o<=s?i:i.slice(0,s)};var ns=(t,e,n)=>xe(I(t,e,n).filter(x),!1);var os=(t,e,n)=>xe(I(t,e,n).filter(x),!0);var ss=(t,e,n)=>O(t)?x(e)?t.length*e:I(t,e,n).filter(x).reduce((o,s)=>o+s,0):0;var pr=(t,e,n)=>{let r=n,{n:o,sortBy:s}=u(r?.local?.groupId,e,null,r),i=tt(S(t),s,n).take(o).collect();return I(i,e.output,r)};var is=(t,e,n)=>pr(t,{...e,n:1},n);var Fr={};yt(Fr,{$abs:()=>as,$acos:()=>ua,$acosh:()=>ma,$add:()=>ps,$allElementsTrue:()=>vi,$and:()=>kn,$anyElementTrue:()=>_i,$arrayElemAt:()=>Es,$arrayToObject:()=>Ts,$asin:()=>la,$asinh:()=>fa,$atan:()=>ya,$atan2:()=>Oa,$atanh:()=>Aa,$bitAnd:()=>Zs,$bitNot:()=>Js,$bitOr:()=>ti,$bitXor:()=>ei,$ceil:()=>cs,$cmp:()=>Sn,$concat:()=>Wi,$concatArrays:()=>Is,$cond:()=>ri,$convert:()=>wa,$cos:()=>ba,$cosh:()=>da,$dateAdd:()=>Pt,$dateDiff:()=>ui,$dateFromParts:()=>fi,$dateFromString:()=>di,$dateSubtract:()=>xi,$dateToParts:()=>gi,$dateToString:()=>Mr,$dateTrunc:()=>Ei,$dayOfMonth:()=>gr,$dayOfWeek:()=>hr,$dayOfYear:()=>jr,$degreesToRadians:()=>ga,$divide:()=>us,$eq:()=>Dn,$exp:()=>ms,$filter:()=>ws,$first:()=>Ns,$firstN:()=>ks,$floor:()=>ls,$function:()=>Ar,$getField:()=>Ni,$gt:()=>vn,$gte:()=>_n,$hour:()=>$r,$ifNull:()=>Or,$in:()=>Cs,$indexOfArray:()=>Ms,$indexOfBytes:()=>Bi,$isArray:()=>Ss,$isNumber:()=>Na,$isoDayOfWeek:()=>Er,$isoWeek:()=>Tr,$isoWeekYear:()=>Ti,$last:()=>Ds,$lastN:()=>vs,$let:()=>Ma,$literal:()=>Ii,$ln:()=>fs,$log:()=>ys,$log10:()=>Os,$lt:()=>Pn,$lte:()=>Rn,$ltrim:()=>zi,$map:()=>_s,$maxN:()=>Ps,$median:()=>wi,$mergeObjects:()=>Sr,$millisecond:()=>Ir,$minN:()=>Rs,$minute:()=>wr,$mod:()=>As,$month:()=>Nr,$multiply:()=>bs,$ne:()=>Un,$nin:()=>Qs,$not:()=>Cn,$objectToArray:()=>Mi,$or:()=>Mn,$percentile:()=>Di,$pow:()=>ds,$radiansToDegrees:()=>ja,$rand:()=>ki,$range:()=>Ks,$reduce:()=>qs,$regexFind:()=>Qi,$regexFindAll:()=>Ki,$regexMatch:()=>qi,$replaceAll:()=>Yi,$replaceOne:()=>Hi,$reverseArray:()=>Ys,$round:()=>xs,$rtrim:()=>Gi,$sampleRate:()=>Ci,$second:()=>kr,$setDifference:()=>Pi,$setEquals:()=>Ri,$setField:()=>Dr,$setIntersection:()=>Ui,$setIsSubset:()=>Vi,$setUnion:()=>Fi,$sigmoid:()=>gs,$sin:()=>$a,$sinh:()=>Ea,$size:()=>Hs,$slice:()=>yr,$sortArray:()=>Gs,$split:()=>Xi,$sqrt:()=>hs,$strLenBytes:()=>Ji,$strLenCP:()=>ta,$strcasecmp:()=>Zi,$substr:()=>vr,$substrBytes:()=>oa,$substrCP:()=>sa,$subtract:()=>js,$switch:()=>ni,$tan:()=>Ta,$tanh:()=>Ia,$toBool:()=>_r,$toDate:()=>Pr,$toDecimal:()=>ka,$toDouble:()=>ae,$toHashedIndexKey:()=>ca,$toInt:()=>Rr,$toLong:()=>Ur,$toLower:()=>ia,$toString:()=>Vr,$toUpper:()=>aa,$trim:()=>pa,$trunc:()=>$s,$type:()=>Ca,$unsetField:()=>Si,$week:()=>Cr,$year:()=>Le,$zip:()=>Xs});var as=(t,e,n)=>{let r=u(t,e,null,n);return y(r)?null:Math.abs(r)};var ps=(t,e,n)=>{let r=u(t,e,null,n),o=!1,s=0;for(let i of r)_(i)&&(c(!o,"'$add' can only have one date value"),o=!0),s+=+i;return o?new Date(s):s};var cs=(t,e,n)=>{let r=u(t,e,null,n);return y(r)?null:(c(x(r)||isNaN(r),"$ceil expression must resolve to a number."),Math.ceil(r))};var us=(t,e,n)=>{let r=u(t,e,null,n);return r[0]/r[1]};var ms=(t,e,n)=>{let r=u(t,e,null,n);return y(r)?null:(c(x(r)||isNaN(r),"$exp expression must resolve to a number."),Math.exp(r))};var ls=(t,e,n)=>{let r=u(t,e,null,n);return y(r)?null:(c(x(r)||isNaN(r),"$floor expression must resolve to a number."),Math.floor(r))};var fs=(t,e,n)=>{let r=u(t,e,null,n);return y(r)?null:(c(x(r)||isNaN(r),"$ln expression must resolve to a number."),Math.log(r))};var ys=(t,e,n)=>{let r=u(t,e,null,n),o="$log expression must resolve to array(2) of numbers";return c(O(r)&&r.length===2,o),r.some(y)?null:(c(r.some(isNaN)||r.every(x),o),Math.log10(r[0])/Math.log10(r[1]))};var Os=(t,e,n)=>{let r=u(t,e,null,n);return y(r)?null:(c(x(r)||isNaN(r),"$log10 expression must resolve to a number."),Math.log10(r))};var As=(t,e,n)=>{let r=u(t,e,null,n);return r[0]%r[1]};var bs=(t,e,n)=>u(t,e,null,n).reduce((o,s)=>o*s,1);var ds=(t,e,n)=>{let r=u(t,e,null,n);return c(O(r)&&r.length===2&&r.every(x),"$pow expression must resolve to array(2) of numbers"),c(!(r[0]===0&&r[1]<0),"$pow cannot raise 0 to a negative exponent"),Math.pow(r[0],r[1])};function Te(t,e=0,n=!1){let r=Math.abs(t)===t?1:-1;t=Math.abs(t);let o=Math.trunc(t),s=parseFloat((t-o).toFixed(Math.abs(e)+1));if(e===0){let i=Math.trunc(10*s);n&&((o&1)===1&&i>=5||i>5)&&o++}else if(e>0){let i=Math.pow(10,e),p=Math.trunc(s*i),a=Math.trunc(s*i*10)%10;n&&a>5&&(p+=1),o=(o*i+p)/i}else if(e<0){let i=Math.pow(10,-1*e),p=o%i;if(o=Math.max(0,o-p),n&&r===-1){for(;p>10;)p-=p/10;o>0&&p>=5&&(o+=i)}}return o*r}var xs=(t,e,n)=>{let r=u(t,e,null,n),o=r[0],s=r[1];return y(o)||isNaN(o)||Math.abs(o)===1/0?o:(c(x(o),"$round expression must resolve to a number."),Te(o,s,!0))};var dn=1e10,gs=(t,e,n)=>{if(y(e))return null;let r=u(t,e,null,n),{input:o,onNull:s}=x(r)?{input:r}:r;if(y(o))return s??null;assert(x(o),`$sigmoid: expression must resolve to number: ${o}`);let i=1/(1+Math.exp(-o));return Math.round(i*dn)/dn};var hs=(t,e,n)=>{let r=u(t,e,null,n);return y(r)?null:(c(x(r)&&r>0||isNaN(r),"$sqrt expression must resolve to non-negative number."),Math.sqrt(r))};var js=(t,e,n)=>{let r=u(t,e,null,n),o="$subtract: must resolve to array(2) of numbers/dates";c(O(r)&&r.length===2,o);let s=r.map(Y).join("|");return s==="date|number"?new Date(+r[0]-+r[1]):(c(s==="date|date"||s==="number|number",o),+r[0]-+r[1])};var $s=(t,e,n)=>{let r=u(t,e,null,n),o=r[0],s=r[1];return y(o)||isNaN(o)||Math.abs(o)===1/0?o:(c(x(o),"$trunc expression must resolve to a number."),c(y(s)||x(s)&&s>-20&&s<100,"$trunc expression has invalid place"),Te(o,s,!1))};var Es=(t,e,n)=>{let r=u(t,e,null,n);if(c(O(r)&&r.length===2,"$arrayElemAt expression must resolve to array(2)"),r.some(y))return null;let o=r[1],s=r[0];if(o<0&&Math.abs(o)<=s.length)return s[(o+s.length)%s.length];if(o>=0&&o<s.length)return s[o]};var Ts=(t,e,n)=>{let r=u(t,e,null,n);return c(O(r),"$arrayToObject: expression must resolve to an array"),r.reduce((o,s)=>{for(;O(s)&&s.length===1;)s=s[0];if(O(s)&&s.length==2)o[s[0]]=s[1];else{let i=s;c($(i)&&P(i,"k")&&P(i,"v"),"$arrayToObject expression is invalid."),o[i.k]=i.v}return o},{})};var Is=(t,e,n)=>{let r=u(t,e,null,n);c(O(r),"$concatArrays: input must resolve to an array");let o=0;for(let p of r){if(y(p))return null;o+=p.length}let s=new Array(o),i=0;for(let p of r)for(let a of p)s[i++]=a;return s};var ws=(t,e,n)=>{let r=u(t,e.input,null,n);if(y(r))return null;c(O(r),"$filter 'input' expression must resolve to an array");let o=T.init(n),s=e.as||"this",i={variables:{[s]:null}};return r.filter(p=>{i.variables[s]=p;let a=u(t,e.cond,null,o.update(i));return K(a,n.useStrictMode)})};var Ns=(t,e,n)=>{if(O(t))return or(t,e,n);let r=u(t,e,null,n);return y(r)?null:(c(O(r)&&r.length>0,"$first must resolve to a non-empty array."),it(r)[0])};var ks=(t,e,n)=>{if(O(t))return he(t,e,n);let{input:r,n:o}=u(t,e,null,n);return y(r)?null:(c(O(r),"$firstN: 'input' must resolve to an array."),he(r,{n:o,input:"$$this"},n))};var Cs=(t,e,n)=>{let[r,o]=u(t,e,null,n);return c(O(o),"$in second argument must be an array"),o.some(s=>L(s,r))};var Ms=(t,e,n)=>{let r=u(t,e,null,n);if(y(r))return null;let o=r[0],s=r[1];if(y(o))return null;c(O(o),"$indexOfArray expression must resolve to an array.");let i=r[2]||0,p=r[3];if(y(p)&&(p=o.length),i>p)return-1;c(i>=0&&p>=0,"$indexOfArray expression is invalid"),(i>0||p<o.length)&&(o=o.slice(i,p));let a=-1;return o.some((m,l)=>{let f=L(m,s);return f&&(a=l),f}),a+i};var Ss=(t,e,n)=>{let r=O(e);return c(!r||e.length===1,"$isArray takes exactly 1 argument."),O(u(t,r?e[0]:e,null,n))};var Ds=(t,e,n)=>{if(O(t))return sr(t,e,n);let r=u(t,e,null,n);return y(r)?null:(c(O(r)&&r.length>0,"$last must resolve to a non-empty array."),it(r)[r.length-1])};var vs=(t,e,n)=>{if(O(t))return je(t,e,n);let{input:r,n:o}=u(t,e,null,n);return y(r)?null:(c(O(r),"Must resolve to an array/null or missing"),je(r,{n:o,input:"$$this"},n))};var _s=(t,e,n)=>{let r=u(t,e.input,null,n);if(y(r))return null;c(O(r),"$map 'input' expression must resolve to an array");let o=T.init(n),s=e.as||"this",i={variables:{[s]:null}};return r.map(p=>(i.variables[s]=p,u(t,e.in,null,o.update(i))))};var Ps=(t,e,n)=>{if(O(t))return $e(t,e,n);let{input:r,n:o}=u(t,e,null,n);return y(r)?null:(c(O(r),"Must resolve to an array/null or missing"),$e(r,{n:o,input:"$$this"},n))};var Rs=(t,e,n)=>{if(O(t))return Ee(t,e,n);let{input:r,n:o}=u(t,e,null,n);return y(r)?null:(c(O(r),"$minN: 'input' must resolve to an array."),Ee(r,{n:o,input:"$$this"},n))};var ur=(t,e,n)=>t.take(e);var _t=(t,e,n)=>G(e)?t:(hn(e,n),t.map(gn(e,T.init(n))));function gn(t,e,n=!0){let r=e.idKey,o=Object.keys(t),s=new Array,i=new Array,p={},a={};for(let d of o){let b=t[d];if(x(b)||Ot(b))if(b)if(n&&d.endsWith(".$")){let g=e?.local?.condition;c(g,"positional operator '.$' couldn't find matching element in the array.");let h=d.slice(0,-2);a[h]=Fs(h,g,e),i.push(h)}else i.push(d);else s.push(d);else if(O(b))p[d]=g=>b.map(h=>u(g,h,null,e.update({root:g}))??null);else if($(b)){let g=Object.keys(b),h=g.length==1?g[0]:"",E=e.context.getOperator("projection",h);E?h==="$slice"&&!ot(b[h]).every(x)?p[d]=N=>u(N,b,d,e.update({root:N})):p[d]=N=>E(N,b[h],d,e.update({root:N})):J(h)?p[d]=C=>u(C,b[h],h,e):(hn(b,e),c(g.length>0,`Invalid empty sub-projection: ${d}`),p[d]=C=>{n&&e.update({root:C});let N=M(C,d),Q=gn(b,e,!1);if(O(N))return N.map(Q);if($(N))return Q(N);let w=Q(C);return P(C,d)||!$(w)||Object.keys(w).length?w:void 0})}else p[d]=j(b)&&b[0]==="$"?g=>u(g,b,d,e):g=>b}let m=Object.keys(p),l=s.includes(r),f=n&&!l&&!i.includes(r),A={preserveMissing:!0};return d=>{let b={};for(let g of i){let h=dt(d,g,A)??{};Oe(b,h),P(a,g)&&a[g](b)}i.length&&Ae(b);for(let g of m){let h=p[g](d);h===void 0?Tt(b,g,{descendArray:!0}):At(b,g,h)}s.length===1&&l?Object.keys(b).length===0&&Object.assign(b,d):s.length&&Object.assign(b,{...d,...b});for(let g of s)Tt(b,g,{descendArray:!0});return f&&P(d,r)&&(b[r]=M(d,r)),b}}function hn(t,e){let n=!1,r=!1,o=0;for(let[s,i]of Object.entries(t))c(!s.startsWith("$"),"Field names may not start with '$'."),s.endsWith(".$")&&c(++o<2,"Cannot specify more than one positional projection per query."),s!==e?.idKey&&(i===0||i===!1?n=!0:(i===1||i===!0)&&(r=!0),c(!(n&&r),"Projection cannot have a mix of inclusion and exclusion."))}var xn=(t,e,n,r)=>{let o=M(t,e);O(o)||(o=M(o,n)),c(O(o),"must resolve to array");let s=[];return o.forEach((i,p)=>r({[n]:[i]})&&s.push(p)),s},Us=t=>e=>!t(e),Vs={$and:1,$or:1,$nor:1};function Fs(t,e,n){let r=Object.entries(e).slice(),o={$and:[],$or:[]};for(let a=0;a<r.length;a++){let[m,l,f]=r[a];if(m===t||m.startsWith(t+".")){let[A,d]=Object.entries(Dt(l)).pop(),b=n.context.getOperator("query",A),g=m.substring(m.lastIndexOf(".")+1),h=b(g,d,n);!f||f==="$and"?o.$and.push([m,h,g]):f==="$nor"?o.$and.push([m,Us(h),g]):f==="$or"&&o.$or.push([m,h,g])}else if(J(m)){c(Vs[m],`${m} is not allowed in this context`);for(let A of l)Object.entries(A).forEach(([d,b])=>r.push([d,b,m]))}}let s=t.lastIndexOf("."),i=t.substring(0,s)||t,p=t.substring(s+1);return a=>{let m=[];for(let[A,d,b]of o.$and)m.push(xn(a,A,b,d));if(o.$or.length){let A=[];for(let[d,b,g]of o.$or)A.push(...xn(a,d,g,b));m.push(gt(A))}let l=xt(m).sort()[0],f=M(a,t)[l];i!=p&&!$(f)&&(f={[p]:f}),At(a,i,[f])}}var mr=(t,e,n)=>t.drop(e);var Ws={$sort:tt,$skip:mr,$limit:ur},Ie=class{#t;#e;#r;#o;#i={};#n=null;#s=[];constructor(e,n,r,o){this.#t=e,this.#e=n,this.#r=r,this.#o=o}fetch(){if(this.#n)return this.#n;this.#n=S(this.#t).filter(this.#e);let e=this.#o.processingMode;e&1&&this.#n.map(n=>H(n));for(let n of["$sort","$skip","$limit"])P(this.#i,n)&&(this.#n=Ws[n](this.#n,this.#i[n],this.#o));return Object.keys(this.#r).length&&(this.#n=_t(this.#n,this.#r,this.#o)),e&2&&this.#n.map(n=>H(n)),this.#n}fetchAll(){let e=S(Array.from(this.#s));return this.#s.length=0,ht(e,this.fetch())}all(){return this.fetchAll().collect()}skip(e){return this.#i.$skip=e,this}limit(e){return this.#i.$limit=e,this}sort(e){return this.#i.$sort=e,this}collation(e){return this.#o={...this.#o,collation:e},this}next(){if(this.#s.length>0)return this.#s.pop();let e=this.fetch().next();if(!e.done)return e.value}hasNext(){if(this.#s.length>0)return!0;let e=this.fetch().next();return e.done?!1:(this.#s.push(e.value),!0)}[Symbol.iterator](){return this.fetchAll()}};var Bs=/^\$(and|or|nor|expr|jsonSchema)$/,z=class{#t;#e;#r;constructor(e,n){this.#e=H(e),this.#r=T.init(n).update({condition:e}),this.#t=[],this.compile()}compile(){c($(this.#e),`query criteria must be an object: ${JSON.stringify(this.#e)}`);let e={},n=Object.entries(this.#e);for(let[r,o]of n){if(r==="$where")c(this.#r.scriptEnabled,"$where operator requires 'scriptEnabled' option to be true."),Object.assign(e,{field:r,expr:o});else if(Bs.test(r))this.processOperator(r,r,o);else{c(!J(r),`unknown top level operator: ${r}`);for(let[s,i]of Object.entries(Dt(o)))this.processOperator(r,s,i)}e.field&&this.processOperator(e.field,e.field,e.expr)}}processOperator(e,n,r){let o=this.#r.context.getOperator("query",n);c(!!o,`unknown query operator ${n}`),this.#t.push(o(e,r,this.#r))}test(e){return this.#t.every(n=>n(e))}find(e,n){return new Ie(e,r=>this.test(r),n||{},this.#r)}};function R(t,e,n,r){let o={unwrapArray:!0},s=Math.max(1,t.split(".").length-1),i=T.init(n).update({depth:s});return p=>{let a=M(p,t,o);return r(a,e,i)}}function at(t,e,n,r){let[o,s]=u(t,e,null,n);return r(o,s,n)}function re(t,e,n){if(L(t,e)||y(t)&&y(e))return!0;if(O(t)){let r=(n instanceof T?n?.local?.depth:1)??1;return t.some(o=>L(o,e))||it(t,r).some(o=>L(o,e))}return!1}function we(t,e,n){return!re(t,e,n)}function lr(t,e,n){return y(t)?e.some(r=>r===null):xt([ot(t),e]).length>0}function Ne(t,e,n){return!lr(t,e,n)}function ke(t,e,n){return De(t,e,(r,o)=>k(r,o)<0)}function Ce(t,e,n){return De(t,e,(r,o)=>k(r,o)<=0)}function Me(t,e,n){return De(t,e,(r,o)=>k(r,o)>0)}function Se(t,e,n){return De(t,e,(r,o)=>k(r,o)>=0)}function En(t,e,n){return ot(t).some((r=>e.length===2&&r%e[0]===e[1]))}function Tn(t,e,n){let r=ot(t),o=s=>j(s)&&K(e.exec(s),n?.useStrictMode);return r.some(o)||it(r,1).some(o)}function In(t,e,n){if(!O(t)||!O(e)||!t.length||!e.length)return!1;let r=!0;for(let o of e){if(!r)break;$(o)&&Object.keys(o).includes("$elemMatch")?r=fr(t,o.$elemMatch,n):nt(o)?r=t.some(s=>typeof s=="string"&&o.test(s)):r=t.some(s=>L(o,s))}return r}function wn(t,e,n){return Array.isArray(t)&&t.length===e}function Ls(t){return J(t)&&["$and","$or","$nor"].indexOf(t)===-1}function fr(t,e,n){if(O(t)&&!G(t)){let r=i=>i,o=e;Object.keys(e).every(Ls)&&(o={temp:e},r=i=>({temp:i}));let s=new z(o,n);for(let i=0,p=t.length;i<p;i++)if(s.test(r(t[i])))return!0}return!1}var jn=t=>t===null,zs={array:O,boolean:Ot,bool:Ot,date:_,number:x,int:x,long:x,double:x,decimal:x,null:jn,object:$,regexp:nt,regex:nt,string:j,undefined:y,1:x,2:j,3:$,4:O,6:y,8:Ot,9:_,10:jn,11:nt,16:x,18:x,19:x};function $n(t,e,n){let r=zs[e];return r?r(t):!1}function Nn(t,e,n){return O(e)?e.findIndex(r=>$n(t,r,n))>=0:$n(t,e,n)}function De(t,e,n){return ot(t).some(r=>Y(r)===Y(e)&&n(r,e))}var Qs=(t,e,n)=>at(t,e,n,Ne);var Ks=(t,e,n)=>{let r=u(t,e,null,n),o=r[0],s=r[1],i=r[2]||1,p=new Array,a=o;for(;a<s&&i>0||a>s&&i<0;)p.push(a),a+=i;return p};var qs=(t,e,n)=>{let r=u(t,e.input,null,n),o=u(t,e.initialValue,null,n),s=e.in;if(y(r))return null;c(O(r),"$reduce 'input' expression must resolve to an array");let i=T.init(n),p={variables:{value:null}};return r.reduce((a,m)=>(p.variables.value=a,u(m,s,null,i.update(p))),o)};var Ys=(t,e,n)=>{let r=u(t,e,null,n);if(y(r))return null;c(O(r),"$reverseArray expression must resolve to an array");let o=r.slice(0);return o.reverse(),o};var Hs=(t,e,n)=>{let r=u(t,e,null,n);return O(r)?r.length:void 0};var yr=(t,e,n)=>{let r=u(t,e,null,n),o=r[0],s=r[1],i=r[2];return y(i)?s<0?s=Math.max(0,o.length+s):(i=s,s=0):(s<0&&(s=Math.max(0,o.length+s)),c(i>0,"Invalid argument for $slice operator. Limit must be a positive number"),i+=s),o.slice(s,i)};var Gs=(t,e,n)=>{let{input:r,sortBy:o}=u(t,e,null,n);if(y(r))return null;if(c(O(r),"$sortArray expression must resolve to an array"),$(o))return tt(S(r),o,n).collect();let s=r.slice();return s.sort(k),o===-1&&s.reverse(),s};var Xs=(t,e,n)=>{let r=u(t,e.inputs,null,n),o=e.useLongestLength||!1;if(y(r))return null;c(O(r),"'inputs' expression must resolve to an array"),c(Ot(o),"'useLongestLength' must be a boolean"),O(e.defaults)&&c(o,"'useLongestLength' must be set to true to use 'defaults'");let s=0;for(let a of r){if(y(a))return null;c(O(a),"'inputs' expression values must resolve to an array or null"),s=o?Math.max(s,a.length):Math.min(s||a.length,a.length)}let i=[],p=e.defaults||[];for(let a=0;a<s;a++){let m=r.map((l,f)=>y(l[a])?p[f]||null:l[a]);i.push(m)}return i};function Bt(t,e,n,r){c(O(e),"expression must be an array.");let o=u(t,e,null,n);return o.some(y)?null:(c(o.every(x),"expression must evalue to array of numbers."),r(o))}var Zs=(t,e,n)=>Bt(t,e,n,r=>r.reduce((o,s)=>o&s,-1));var Js=(t,e,n)=>{let r=u(t,e,null,n);return y(r)?null:(c(x(r),"$bitNot: expression must evaluate to a number."),~r)};var ti=(t,e,n)=>Bt(t,e,n,r=>r.reduce((o,s)=>o|s,0));var ei=(t,e,n)=>Bt(t,e,n,r=>r.reduce((o,s)=>o^s,0));var ne={};yt(ne,{$and:()=>kn,$not:()=>Cn,$or:()=>Mn});var kn=(t,e,n)=>{let r=u(t,e,null,n);return K(r,n.useStrictMode)&&r.every(o=>K(o,n.useStrictMode))};var Cn=(t,e,n)=>{let r=ot(e);return r.length==0?!1:(c(r.length==1,"Expression $not takes exactly 1 argument"),!u(t,r[0],null,n))};var Mn=(t,e,n)=>{let r=u(t,e,null,n),o=n.useStrictMode;return K(r,o)&&r.some(s=>K(s,o))};var oe={};yt(oe,{$cmp:()=>Sn,$eq:()=>Dn,$gt:()=>vn,$gte:()=>_n,$lt:()=>Pn,$lte:()=>Rn,$ne:()=>Un});var Sn=(t,e,n)=>{let r=u(t,e,null,n);return c(O(r)&&r.length==2,"$cmp: expression must resolve to array of size 2."),k(r[0],r[1])};var Dn=(t,e,n)=>at(t,e,n,re);var vn=(t,e,n)=>at(t,e,n,Me);var _n=(t,e,n)=>at(t,e,n,Se);var Pn=(t,e,n)=>at(t,e,n,ke);var Rn=(t,e,n)=>at(t,e,n,Ce);var Un=(t,e,n)=>at(t,e,n,we);var ri=(t,e,n)=>{let r,o,s,i="$cond: invalid arguments";O(e)?(c(e.length===3,i),r=e[0],o=e[1],s=e[2]):(c($(e),i),r=e.if,o=e.then,s=e.else);let p=K(u(t,r,null,n),n.useStrictMode);return u(t,p?o:s,null,n)};var Or=(t,e,n)=>{let r=u(t,e,null,n);return r.find(o=>!y(o))??r[r.length-1]};var ni=(t,e,n)=>{let r=null;return e.branches.some(o=>{let s=K(u(t,o.case,null,n),n.useStrictMode);return s&&(r=o.then),s}),u(t,r!==null?r:e.default,null,n)};var Ar=(t,e,n)=>{c(n.scriptEnabled,"$function operator requires 'scriptEnabled' option to be true");let r=u(t,e,null,n);return r.body.apply(null,r.args)};var ie=["year","quarter","month","week","day","hour","minute","second","millisecond"],oi={mon:1,tue:2,wed:3,thu:4,fri:5,sat:6,sun:7},si=-1e9,Lt=7,br=t=>(t&3)==0&&(t%100!=0||t%400==0),ii=[365,366],ai=[[0,31,59,90,120,151,181,212,243,273,304,334],[0,31,60,91,121,152,182,213,244,274,305,335]],se=t=>ai[+br(t.getUTCFullYear())][t.getUTCMonth()]+t.getUTCDate(),ve=(t,e)=>{let n=t.getUTCDay()||7,r=e.toLowerCase().substring(0,3);return(n-oi[r]+Lt)%Lt},Vn=t=>(t+Math.floor(t/4)-Math.floor(t/100)+Math.floor(t/400))%7,Fn=t=>52+ +(Vn(t)==4||Vn(t-1)==3);function zt(t){let e=t.getUTCDay()||7,n=Math.floor((10+se(t)-e)/7);return n<1?Fn(t.getUTCFullYear()-1):n>Fn(t.getUTCFullYear())?1:n}function Pe(t){return t.getUTCFullYear()-+(t.getUTCMonth()===0&&t.getUTCDate()==1&&t.getUTCDay()<1)}var wt=60,ft={week:6048e5,day:864e5,hour:36e5,minute:6e4,second:1e3,millisecond:1},Re="%Y-%m-%dT%H:%M:%S.%LZ",dr=[["year",0,9999],["month",1,12],["day",1,31],["hour",0,23],["minute",0,59],["second",0,59],["millisecond",0,999]],xr={jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12},Qt={"%b":{name:"abbr_month",padding:3,re:/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/i},"%B":{name:"full_month",padding:0,re:/(January|February|March|April|May|June|July|August|September|October|November|December)/i},"%Y":{name:"year",padding:4,re:/([0-9]{4})/},"%G":{name:"year",padding:4,re:/([0-9]{4})/},"%m":{name:"month",padding:2,re:/(0[1-9]|1[012])/},"%d":{name:"day",padding:2,re:/(0[1-9]|[12][0-9]|3[01])/},"%j":{name:"day_of_year",padding:3,re:/(0[0-9][1-9]|[12][0-9]{2}|3[0-5][0-9]|36[0-6])/},"%H":{name:"hour",padding:2,re:/([01][0-9]|2[0-3])/},"%M":{name:"minute",padding:2,re:/([0-5][0-9])/},"%S":{name:"second",padding:2,re:/([0-5][0-9]|60)/},"%L":{name:"millisecond",padding:3,re:/([0-9]{3})/},"%w":{name:"day_of_week",padding:1,re:/([0-6])/},"%u":{name:"day_of_week_iso",padding:1,re:/([1-7])/},"%U":{name:"week_of_year",padding:2,re:/([1-4][0-9]?|5[0-3]?)/},"%V":{name:"week_of_year_iso",padding:2,re:/([1-4][0-9]?|5[0-3]?)/},"%z":{name:"timezone",padding:2,re:/(([+-][01][0-9]|2[0-3]):?([0-5][0-9])?)/},"%Z":{name:"minute_offset",padding:3,re:/([+-][0-9]{3})/},"%%":{name:"percent_literal",padding:1,re:/%%/}},Ue=/(%[bBYGmdjHMSLwuUVzZ%])/g,Ln=/%[bBYGmdjHMSLwuUVzZ%]/,pi=/^[a-zA-Z_]+\/[a-zA-Z_]+$/;function ct(t){if(y(t))return 0;if(pi.test(t)){let o=new Date,s=new Date(o.toLocaleString("en-US",{timeZone:"UTC"}));return(new Date(o.toLocaleString("en-US",{timeZone:t})).getTime()-s.getTime())/6e4}let e=Qt["%z"].re.exec(t);c(!!e,`timezone '${t}' is invalid or not supported.`);let n=parseInt(e[2])||0,r=parseInt(e[3])||0;return(Math.abs(n*wt)+r)*(n<0?-1:1)}function zn(t){return(t<0?"-":"+")+_e(Math.abs(Math.floor(t/wt)),2)+_e(Math.abs(t)%wt,2)}function mt(t,e){t.setUTCMinutes(t.getUTCMinutes()+e)}function U(t,e,n){if(_(t))return t;let r=u(t,e,null,n);if(_(r))return new Date(r);if(x(r))return new Date(r*1e3);c(!!r?.date,`cannot convert ${JSON.stringify(e)} to date`);let o=_(r.date)?new Date(r.date):new Date(r.date*1e3);return r.timezone&&mt(o,ct(r.timezone)),o}function _e(t,e){return new Array(Math.max(e-String(t).length+1,0)).join("0")+t.toString()}var Wn=t=>{let e=t-si;return Math.trunc(e/4)-Math.trunc(e/100)+Math.trunc(e/400)};function ci(t,e){return Math.trunc(Wn(e-1)-Wn(t-1)+(e-t)*ii[0])}var Kt=(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),Ve=(t,e)=>e.getUTCMonth()-t.getUTCMonth()+Kt(t,e)*12,Fe=(t,e)=>{let n=Math.trunc(t.getUTCMonth()/3);return Math.trunc(e.getUTCMonth()/3)-n+Kt(t,e)*4},qt=(t,e)=>se(e)-se(t)+ci(t.getUTCFullYear(),e.getUTCFullYear()),We=(t,e,n)=>{let r=(n||"sun").substring(0,3);return Math.trunc((qt(t,e)+ve(t,r)-ve(e,r))/Lt)},Qn=(t,e)=>e.getUTCHours()-t.getUTCHours()+qt(t,e)*24,Bn=(t,e)=>{let n=t.getUTCMonth()+e,r=Math.floor(n/12);if(n<0){let o=n%12+12;t.setUTCFullYear(t.getUTCFullYear()+r,o,t.getUTCDate())}else t.setUTCFullYear(t.getUTCFullYear()+r,n%12,t.getUTCDate())},Be=(t,e,n,r)=>{let o=new Date(t);switch(e){case"year":o.setUTCFullYear(o.getUTCFullYear()+n);break;case"quarter":Bn(o,3*n);break;case"month":Bn(o,n);break;default:o.setTime(o.getTime()+ft[e]*n)}return o};var Pt=(t,e,n)=>{let r=u(t,e,null,n);return Be(r.startDate,r.unit,r.amount,r.timezone)};var ui=(t,e,n)=>{let{startDate:r,endDate:o,unit:s,timezone:i,startOfWeek:p}=u(t,e,null,n),a=new Date(r),m=new Date(o),l=ct(i);switch(mt(a,l),mt(m,l),s){case"year":return Kt(a,m);case"quarter":return Fe(a,m);case"month":return Ve(a,m);case"week":return We(a,m,p);case"day":return qt(a,m);case"hour":return Qn(a,m);case"minute":return a.setUTCSeconds(0),a.setUTCMilliseconds(0),m.setUTCSeconds(0),m.setUTCMilliseconds(0),Math.round((m.getTime()-a.getTime())/ft[s]);default:return Math.round((m.getTime()-a.getTime())/ft[s])}};var mi=[31,28,31,30,31,30,31,31,30,31,30,31],li=t=>t.month==2&&br(t.year)?29:mi[t.month-1],fi=(t,e,n)=>{let r=u(t,e,null,n),o=ct(r.timezone);for(let s=dr.length-1,i=0;s>=0;s--){let p=dr[s],a=p[0],m=p[1],l=p[2],f=(r[a]||0)+i;i=0;let A=l+1;if(a=="hour"&&(f+=Math.floor(o/wt)*-1),a=="minute"&&(f+=o%wt*-1),f<m){let d=m-f;i=-1*Math.ceil(d/A),f=A-d%A}else f>l&&(f+=m,i=Math.trunc(f/A),f%=A);r[a]=f}return r.day=Math.min(r.day,li(r)),new Date(Date.UTC(r.year,r.month-1,r.day,r.hour,r.minute,r.second,r.millisecond))};function yi(t){return t==="Z"?0:t>="A"&&t<"N"?t.charCodeAt(0)-64:77-t.charCodeAt(0)}var Oi=t=>t.replace(/^\//,"").replace(/\/$/,"").replace(/\/i/,""),Ai=["^",".","-","*","?","$"];function bi(t){return Ai.forEach(e=>{t=t.replace(e,`\\${e}`)}),t}var di=(t,e,n)=>{let r=u(t,e,null,n);r.format=r.format||Re,r.onNull=r.onNull||null;let o=r.dateString;if(y(o))return r.onNull;let s=r.format.split(Ln);s.reverse();let i=r.format.match(Ue),p={},a="";for(let A=0,d=i.length;A<d;A++){let b=i[A],g=Qt[b];if($(g)){let h=g.re.exec(o),E=s.pop()||"";h!==null?(p[g.name]=/^\d+$/.exec(h[0])?parseInt(h[0]):h[0],o=o.substring(h.index+h[0].length+1),a+=bi(E)+Oi(g.re.toString())):p[g.name]=null}}if(y(p.month)){let A=(p.full_month?.slice(0,3)??p.abbr_month??"").toLowerCase();xr[A]&&(p.month=xr[A])}if(y(p.year)||y(p.month)||y(p.day)||!new RegExp("^"+a+"[A-Z]?$").test(r.dateString))return r.onError;let m=r.dateString.match(/([A-Z])$/);c(!(m&&r.timezone),`$dateFromString: you cannot pass in a date/time string with time zone information ('${m&&m[0]}') together with a timezone argument`);let l=m?yi(m[0])*wt:ct(r.timezone),f=new Date(Date.UTC(p.year,p.month-1,p.day,0,0,0));return y(p.hour)||f.setUTCHours(p.hour),y(p.minute)||f.setUTCMinutes(p.minute),y(p.second)||f.setUTCSeconds(p.second),y(p.millisecond)||f.setUTCMilliseconds(p.millisecond),mt(f,-l),f};var xi=(t,e,n)=>{let r=u(t,e?.amount,null,n);return Pt(t,{...e,amount:-1*r},n)};var gi=(t,e,n)=>{let r=u(t,e,null,n),o=new Date(r.date),s=ct(r.timezone);mt(o,s);let i={hour:o.getUTCHours(),minute:o.getUTCMinutes(),second:o.getUTCSeconds(),millisecond:o.getUTCMilliseconds()};return r.iso8601==!0?Object.assign(i,{isoWeekYear:Pe(o),isoWeek:zt(o),isoDayOfWeek:o.getUTCDay()||7}):Object.assign(i,{year:o.getUTCFullYear(),month:o.getUTCMonth()+1,day:o.getUTCDate()})};var gr=(t,e,n)=>U(t,e,n).getUTCDate();var hr=(t,e,n)=>U(t,e,n).getUTCDay()+1;var jr=(t,e,n)=>se(U(t,e,n));var $r=(t,e,n)=>U(t,e,n).getUTCHours();var Er=(t,e,n)=>U(t,e,n).getUTCDay()||7;var Tr=(t,e,n)=>zt(U(t,e,n));var Ir=(t,e,n)=>U(t,e,n).getUTCMilliseconds();var wr=(t,e,n)=>U(t,e,n).getUTCMinutes();var Nr=(t,e,n)=>U(t,e,n).getUTCMonth()+1;var kr=(t,e,n)=>U(t,e,n).getUTCSeconds();var Cr=(t,e,n)=>{let r=U(t,e,n),o=zt(r);return r.getUTCDay()>0&&r.getUTCDate()==1&&r.getUTCMonth()==0?0:r.getUTCDay()==0?o+1:o};var Le=(t,e,n)=>U(t,e,n).getUTCFullYear();var hi={"%Y":Le,"%G":Le,"%m":Nr,"%d":gr,"%H":$r,"%M":wr,"%S":kr,"%L":Ir,"%u":Er,"%U":Cr,"%V":Tr,"%j":jr,"%w":(t,e,n)=>hr(t,e,n)-1},Mr=(t,e,n)=>{let r=u(t,e,null,n);if(y(r.onNull)&&(r.onNull=null),y(r.date))return r.onNull;let o=U(t,r.date,n),s=r.format||Re,i=ct(r.timezone),p=s.match(Ue);mt(o,i);for(let a=0,m=p.length;a<m;a++){let l=p[a];c(l in Qt,`$dateToString: invalid format specifier ${l}`);let{name:f,padding:A}=Qt[l],d=hi[l],b;if(d)b=_e(d(t,o,n),A);else switch(f){case"timezone":b=zn(i);break;case"minute_offset":b=i.toString();break;case"abbr_month":case"full_month":{let g=f.startsWith("abbr")?"short":"long";b=o.toLocaleString("en-US",{month:g});break}}s=s.replace(l,b)}return s};var Kn=9466848e5,qn=(t,e)=>{let n=t%e;return n<0&&(n+=e),n},ji={day:qt,month:Ve,quarter:Fe,year:Kt},$i=/(mon(day)?|tue(sday)?|wed(nesday)?|thu(rsday)?|fri(day)?|sat(urday)?|sun(day)?)/i,Ei=(t,e,n)=>{let{date:r,unit:o,binSize:s,timezone:i,startOfWeek:p}=u(t,e,null,n);if(y(r)||y(o))return null;let a=(p??"sun").toLowerCase().substring(0,3);c(_(r),"$dateTrunc: 'date' must resolve to a valid Date object."),c(ie.includes(o),"$dateTrunc: unit is invalid."),c(o!="week"||$i.test(a),`$dateTrunc: startOfWeek '${a}' is not a valid.`),c(y(s)||s>0,"$dateTrunc requires 'binSize' to be greater than 0, but got value 0.");let m=s??1;switch(o){case"millisecond":case"second":case"minute":case"hour":{let l=m*ft[o],f=r.getTime()-Kn;return new Date(r.getTime()-qn(f,l))}default:{c(m<=1e11,"dateTrunc unsupported binSize value");let l=new Date(r),f=new Date(Kn),A=0;if(o=="week"){let h=ve(f,a),E=(Lt-h)%Lt;f.setTime(f.getTime()+E*ft.day),A=We(f,l,a)}else A=ji[o](f,l);let d=A-qn(A,m),b=Be(f,o,d,i),g=ct(i);return mt(b,-g),b}}};var Ti=(t,e,n)=>Pe(U(t,e,n));var Ii=(t,e,n)=>e;var wi=(t,e,n)=>{let r=u(t,e.input,null,n);return ir(r,{input:"$$CURRENT"},n)};var Ni=(t,e,n)=>{let r=u(t,e,null,n),[o,s]=$(r)?[r.field,r.input||t]:[r,t];return y(s)?null:(c($(s),"$getField expression 'input' must evaluate to an object"),c(j(o),"$getField expression 'field' must evaluate to a string"),s[o])};var ki=(t,e,n)=>Math.random();var Ci=(t,e,n)=>Math.random()<=u(t,e,null,n);var Sr=(t,e,n)=>{let r=u(t,e,null,n)??[];return ar(r,e,n)};var Mi=(t,e,n)=>{let r=u(t,e,null,n);if(y(r))return null;c($(r),`$objectToArray requires a document input, found: ${Y(r)}`);let o=Object.entries(r),s=new Array(o.length),i=0;for(let[p,a]of o)s[i++]={k:p,v:a};return s};var Dr=(t,e,n)=>{let{input:r,field:o,value:s}=u(t,e,null,n);if(y(r))return null;c($(r),"$setField expression 'input' must evaluate to an object"),c(j(o),"$setField expression 'field' must evaluate to a string");let i={...r};return e.value=="$$REMOVE"?delete i[o]:i[o]=s,i};var Si=(t,e,n)=>Dr(t,{...e,value:"$$REMOVE"},n);var Di=(t,e,n)=>{let r=u(t,e.input,null,n);return ee(r,{...e,input:"$$CURRENT"},n)};var vi=(t,e,n)=>u(t,e,null,n)[0].every(o=>K(o,n.useStrictMode));var _i=(t,e,n)=>u(t,e,null,n)[0].some(o=>K(o,n.useStrictMode));var Pi=(t,e,n)=>{let r=u(t,e,null,n);if(y(r)||(c(O(r),"$setDifference must be an arrays."),r.some(y)))return null;c(r.length==2,"$setDifference takes exactly 2 arguments."),c(r.every(O),"$setDifference operands must be arrays.");let o=q.init();return r[0].forEach(s=>o.set(s,!0)),r[1].forEach(s=>o.delete(s)),Array.from(o.keys())};var Ri=(t,e,n)=>{let r=u(t,e,null,n);c(O(r)&&r.every(O),"$setEquals operands must be arrays.");let o=q.init();r[0].every((s,i)=>o.set(s,i));for(let s=1;s<r.length;s++){let i=r[s],p=new Set;for(let a=0;a<i.length;a++){let m=o.get(i[a])??-1;if(m===-1)return!1;p.add(m)}if(p.size!==o.size)return!1}return!0};var Ui=(t,e,n)=>{let r=u(t,e,null,n);return y(r)?null:(c(O(r)&&r.every(O),"$setIntersection operands must be arrays."),xt(r))};var Vi=(t,e,n)=>{let r=u(t,e,null,n);c(O(r)&&r.every(O),"$setIsSubset operands must be arrays.");let o=r[0],s=r[1],i=q.init(),p=new Set;o.every((a,m)=>i.set(a,m));for(let a of s)if(p.add(i.get(a)??-1),p.size>i.size)return!0;return p.delete(-1),p.size==i.size};var Fi=(t,e,n)=>{let r=u(t,e,null,n);return y(r)||(c(O(r),"$setUnion operands must be arrays."),r.some(y))?null:gt(it(r))};var Wi=(t,e,n)=>{let r=u(t,e,null,n);return c(r.every(o=>j(o)||y(o)),"$concat only supports strings."),r.some(y)?null:r.join("")};var Bi=(t,e,n)=>{let r=u(t,e,null,n),o="$indexOfBytes expression resolves to invalid an argument";if(y(r[0]))return null;c(j(r[0])&&j(r[1]),o);let s=r[0],i=r[1],p=r[2],a=r[3],m=y(p)||x(p)&&p>=0&&Math.round(p)===p;if(m=m&&(y(a)||x(a)&&a>=0&&Math.round(a)===a),c(m,o),p=p||0,a=a||s.length,p>a)return-1;let l=s.substring(p,a).indexOf(i);return l>-1?l+p:l};var Li=[0,32,9,10,11,12,13,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202];function Yt(t,e,n,r){let o=u(t,e,null,n),s=o.input;if(y(s))return null;let i=y(o.chars)?Li:o.chars.split("").map(m=>m.codePointAt(0)),p=0,a=s.length-1;for(;r.left&&p<=a&&i.indexOf(s[p].codePointAt(0))!==-1;)p++;for(;r.right&&p<=a&&i.indexOf(s[a].codePointAt(0))!==-1;)a--;return s.substring(p,a+1)}function Ht(t,e,n,r){let o=u(t,e,null,n);if(!j(o.input))return[];let s=o.options;s&&(c(s.indexOf("x")===-1,"extended capability op