Comparing version 2.2.3 to 2.2.4
Changelog | ||
========= | ||
## 2.2.4 / 2018-09-09 | ||
- Add `$$REMOVE` support to conditionally exclude fields | ||
## 2.2.3 / 2018-08-21 | ||
@@ -4,0 +7,0 @@ - Match undefined fields with `$in: [null]` queries (#85) |
@@ -1,6 +0,6 @@ | ||
// mingo.js 2.2.3 | ||
// mingo.js 2.2.4 | ||
// Copyright (c) 2018 Francis Asante | ||
// MIT | ||
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):n.mingo=t()}(this,function(){"use strict";function n(n,t){y(n)&&k(t)}function t(n){switch(u(n)){case tt:return n.map(t);case rt:return j(n,t);default:return n}}function r(n){switch(u(n)){case tt:return L([],n);case rt:return Object.assign({},n);default:return n}}function e(n){return null===n?"Null":void 0===n?"Undefined":n.constructor.name}function u(n){return e(n).toLowerCase()}function i(n){return u(n)===Qn}function o(n){return u(n)===Gn}function a(n){return u(n)===Wn}function s(n){return u(n)===rt}function f(n){return n===Object(n)}function c(n){return u(n)===Xn}function l(n){return u(n)===nt}function v(n){return u(n)===et}function h(n){return p(n)||d(n)}function p(n){return u(n)===Hn}function d(n){return u(n)===Vn}function $(n,t){return n.some(I.bind(null,t))}function g(n,t){return!$(n,t)}function m(n){return!!n}function y(n){return!n}function b(n){return h(n)||ct(n)&&0===n.length||s(n)&&0===O(n).length||!n}function _(n){return ct(n)?n:[n]}function x(n,t){return n.hasOwnProperty(t)}function k(n){throw new Error(n)}function O(n){return Object.keys(n)}function w(n,t,r){if(t=t.bind(r),ct(n))for(var e=0,u=n.length;e<u&&t(n[e],e,n)!==!1;e++);else for(var i in n)if(x(n,i)&&t(n[i],i,n)===!1)break}function j(n,t,r){t=t.bind(r);var e={};return w(n,function(n,r){e[r]=t(n,r)},n),e}function M(n,t,r){return ct(n)?n.reduce(t,r):(w(n,function(e,u){return r=t(r,e,u,n)}),r)}function A(n,t){return n.filter($.bind(null,t))}function N(n,t){return L(L([],n),t.filter(g.bind(null,n)))}function E(t){function r(n,t){for(var e=0,i=n.length;e<i;e++)ct(n[e])&&(t>0||t<0)?r(n[e],Math.max(-1,t-1)):u.push(n[e])}var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;n(ct(t),"Input must be an Array");var u=[];return r(t,e),u}function S(n,t){if(t<1)return n;for(;t--&&ct(n)&&1===n.length;)n=n[0];return n}function I(n,t){for(var r=[n],e=[t];r.length>0;)if(n=r.pop(),t=e.pop(),n!==t){var i=u(n);if(i!==u(t)||i===et)return!1;switch(i){case tt:if(n.length!==t.length)return!1;L(r,n),L(e,t);break;case rt:var o=O(n),a=O(t);if(o.length!==a.length)return!1;o.sort(),a.sort();for(var s=0,f=o.length;s<f;s++){var c=o[s];if(c!==a[s])return!1;r.push(n[c]),e.push(t[c])}break;default:if(P(n)!==P(t))return!1}}return 0===r.length}function C(n){var t={},r=[];return w(n,function(n){var e=T(n);x(t,e)||(r.push(n),t[e]=0)}),r}function P(n){var t=u(n);switch(t){case Qn:case Wn:case nt:return n.toString();case Gn:return JSON.stringify(n);case Xn:return n.toISOString();case Hn:case Vn:return t;case tt:return"["+n.map(P)+"]";default:var r=t===rt?"":""+e(n),i=O(n);return i.sort(),r+"{"+i.map(function(t){return P(t)+":"+P(n[t])})+"}"}}function T(n){for(var t=0,r=P(n),e=r.length;e;)t=(t<<5)-t^r.charCodeAt(--e);return t>>>0}function q(n,t,r){var e={},u=[],i=n.length,o=[];t=t.bind(r);for(var a=0;a<i;a++){var s=n[a],f=t(s,a);if(h(f))o.push(s);else{var c=T(s);x(e,c)||(e[c]=[f,a]),u.push(s)}}return u.sort(function(n,t){var r=e[T(n)],u=e[T(t)];return r[0]<u[0]?-1:r[0]>u[0]?1:r[1]<u[1]?-1:r[1]>u[1]?1:0}),L(o,u)}function D(n,t,r){var e={keys:[],groups:[]},u={};return t=t.bind(r),w(n,function(n){var r=t(n),i=T(r),o=-1;d(u[i])&&(o=e.keys.length,u[i]=o,e.keys.push(r),e.groups.push([])),o=u[i],e.groups[o].push(n)}),e}function L(n,t){return Array.prototype.push.apply(n,t),n}function R(n,t){for(var r=0,e=n.length-1;r<=e;){var u=Math.round(r+(e-r)/2);if(t<n[u])e=u-1;else{if(!(t>n[u]))return u;r=u+1}}return r}function U(n){var t=this;return function(r){return function(){for(var e=arguments.length,u=Array(e),i=0;i<e;i++)u[i]=arguments[i];var o=T(u);return x(r,o)||(r[o]=n.apply(t,u)),r[o]}}({})}function F(n,r){var e=O(r);return 0===e.length?n:n.map(function(n){var u=t(n);return w(e,function(t){var e=Fn(n,r[t]);Ln(u,t,e)}),u})}function B(n){return n instanceof yt?n:new yt(n)}function z(n){return!!n&&"object"===("undefined"==typeof n?"undefined":lt(n))&&Y(n.next)}function Y(n){return!!n&&"function"==typeof n}function J(n,t){var r=n.slice(t+1);n.splice(t),Array.prototype.push.apply(n,r)}function H(n,t,r){var e=!1,u=-1,i={},o=0;return function(a){a=a===r;try{n:for(;!e;){var s=n();u++;for(var f=-1,c=t.length,l=!1;++f<c;){var v=t[f],h=v.func,p=v.type;switch(p){case dt:s=h(s,u);break;case $t:if(!h(s,u))continue n;break;case gt:--v.func,v.func||(l=!0);break;case mt:--v.func,v.func||J(t,f);continue n;default:break n}}if(e=l,!a)return{value:s,done:!1};r[o++]=s}}catch(d){if(d!==pt)throw d}return i=null,e=!0,{done:!0}}}function V(t,r){var u=r.boundaries,i=r["default"],o=u[0],a=u[u.length-1],s=r.output||{count:{$sum:1}};n(u.length>2,"$bucket 'boundaries' expression must have at least 3 elements");for(var f=e(o),c=0,l=u.length-1;c<l;c++)n(f===e(u[c+1]),"$bucket 'boundaries' must all be of the same type"),n(u[c]<u[c+1],"$bucket 'boundaries' must be sorted in ascending order");!h(i)&&e(r["default"])===e(o)&&n(o>r["default"]||a<r["default"],"$bucket 'default' expression must be out of boundaries range");var v={};w(u,function(n){return v[n]=[]}),h(i)||(v[i]=[]);var p=!1;return B(function(){return p||(t.each(function(t){var e=Fn(t,r.groupBy);if(h(e)||e<o||e>=a)n(!h(i),"$bucket require a default for out of range values"),v[i].push(t);else{n(e>=o&&e<a,"$bucket 'groupBy' expression must resolve to a value in range of boundaries");var s=R(u,e),f=u[Math.max(0,s-1)];v[f].push(t)}}),u.pop(),h(i)||u.push(i),p=B(u).map(function(n){var t=Pn(v[n],null,s);return Object.assign(t,{_id:n})})),p.next()})}function K(t,r){var e=r.output||{count:{$sum:1}},u=r.groupBy,i=r.buckets;return n(i>0,"The $bucketAuto 'buckets' field must be greater than 0, but found: "+i),t.transform(function(n){for(var t=Math.max(1,Math.round(n.length/i)),r=U(Fn),o={},a=[],s=q(n,function(n){var t=r(n,u);return h(t)?a.push(n):(o[t]||(o[t]=[]),o[t].push(n)),t}),f=In(),c=[],l=0,v=0,p=s.length;v<i&&l<p;v++){for(var d={},$=[],g=0;g<t&&l<p;g++){var m=r(s[l],u);if(h(m)&&(m=null),L($,h(m)?a:o[m]),l+=h(m)?a.length:o[m].length,x(d,"min")||(d.min=m),c.length>0){var y=c[c.length-1];y[f].max=d.min}}v==i-1&&L($,s.slice(l)),c.push(Object.assign(Pn($,null,e),{_id:d}))}return c.length>0&&(c[c.length-1][f].max=r(s[s.length-1],u)),c})}function Q(t,r){return n(o(r)&&""!==r.trim()&&r.indexOf(".")===-1&&"$"!==r.trim()[0],"Invalid expression value for $count"),B(function(){var n={};return n[r]=t.size(),{value:n,done:!1}}).first()}function W(n,t){return n.transform(function(n){return[j(t,function(t){return ln(n,t)})]}).first()}function G(n,t){var r=In(),e=t[r];return n.transform(function(n){var u=D(n,function(n){return Fn(n,e,e)});delete t[r];var i=-1,o=u.keys.length;return function(){if(++i===o)return{done:!0};var n=u.keys[i],e={};return d(n)||(e[r]=n),w(t,function(n,t){e[t]=Pn(u.groups[i],t,n)}),{value:e,done:!1}}})}function X(n,t){return n.take(t)}function Z(t,e){function u(n){return T(h(n)?null:n)}var i=e.from,a=e.localField,s=e.foreignField,f=e.as;n(ct(i)&&o(s)&&o(a)&&o(f),"$lookup: invalid argument");var c={};return w(i,function(n){var t=u(n[s]);c[t]=c[t]||[],c[t].push(n)}),t.map(function(n){var t=u(n[a]),e=r(n);return e[f]=c[t]||[],e})}function nn(n,t){var r=new Mt(t);return n.filter(function(n){return r.test(n)})}function tn(t,r){return n(ct(r),"$out: argument must be an array"),t.map(function(n){return r.push(n),n})}function rn(r,e){if(b(e))return r;var u=O(e),i=!1,f=In(),c=[!1,!1];if(w(e,function(t,r){r!==f&&(0===t||t===!1?c[0]=!0:c[1]=!0,n(c[0]!==c[1],"Projection cannot have a mix of inclusion and exclusion."))}),$(u,f)){var l=e[f];0!==l&&l!==!1||(u=u.filter(g.bind(null,[f])),n(g(u,f),"Must not contain collections id key"),i=b(u))}else u.push(f);return r.map(function(n){var r={},c=!1,l=!1,v=[];return i&&v.push(f),w(u,function(t){var u=e[t],i=void 0;if(t!==f&&$([0,!1],u)&&(l=!0),t===f&&b(u))i=n[t];else if(o(u))i=Fn(n,u,t);else if($([1,!0],u));else{if(!s(u))return void v.push(t);var h=O(u);h=!(h.length>1)&&h[0],$(Nn(st),h)?"$slice"===h?_(u[h]).every(a)?(i=bt[h](n,u[h],t),c=!0):i=Fn(n,u,t):i=bt[h](n,u[h],t):i=Fn(n,u,t)}var p=qn(n,t);d(p)||Object.assign(r,p),g([0,1,!1,!0],u)&&(d(i)?Rn(r,t):Ln(r,t,i))}),(c||l||i)&&(r=Object.assign({},n,r),v.length>0&&(r=t(r),w(v,function(n){return Rn(r,n)}))),r})}function en(n,r){return n.map(function(n){return Yn(t(n),r)})}function un(t,r){return t.map(function(t){return t=Fn(t,r.newRoot),n(s(t),"$replaceRoot expression must return an object"),t})}function on(t,r){var e=r.size;return n(a(e),"$sample size must be a positive integer"),t.transform(function(n){var t=n.length,r=-1;return function(){if(++r===e)return{done:!0};var u=Math.floor(Math.random()*t);return{value:n[u],done:!1}}})}function an(n,t){return n.drop(t)}function sn(n,t){return!b(t)&&s(t)&&(n=n.transform(function(n){var r=O(t);return w(r.reverse(),function(r){var e=D(n,function(n){return Tn(n,r)}),u={},i=q(e.keys,function(n,t){return u[n]=t,n});t[r]===-1&&i.reverse(),n=[],w(i,function(t){return L(n,e.groups[u[t]])})}),n})),n}function fn(n,t){var r={count:{$sum:1}};return r[In()]=t,this.$sort(this.$group(n,r),{count:-1})}function cn(n,r){o(r)&&(r={path:r});var e=r.path.substr(1),u=r.includeArrayIndex||!1,i=r.preserveNullAndEmptyArrays||!1,a=function(n,t){return u!==!1&&(n[u]=t),n},s=void 0;return B(function(){for(var r=function(){if(B.isIterator(s)){var r=s.next();if(!r.done)return{v:r}}var u=n.next();if(u.done)return{v:u};if(u=u.value,s=Tn(u,e),ct(s)){if(0===s.length&&i===!0){s=null;var o=t(u);return Rn(o,e),{v:{value:a(o,null),done:!1}}}s=B(s).map(function(n,r){var i=t(u);return Ln(i,e,n),a(i,r)})}else if(!b(s)||i===!0){var f=a(t(u),null);return{v:{value:f,done:!1}}}};;){var u=r();if("object"===("undefined"==typeof u?"undefined":lt(u)))return u.v}})}function ln(t,r){return n(ct(r),"Aggregation pipeline must be an array"),new xt(r).run(t)}function vn(n,t){return C(this.$push(n,t))}function hn(n,t){var r=this.$push(n,t).filter(a),e=M(r,function(n,t){return n+t},0);return e/(r.length||1)}function pn(n,t){return n.length>0?Fn(n[0],t):void 0}function dn(n,t){return n.length>0?Fn(n[n.length-1],t):void 0}function $n(n,t){return M(this.$push(n,t),function(n,t){return h(n)||t>n?t:n},void 0)}function gn(n,t){return M(n,function(n,r){return Object.assign(n,Fn(r,t))},{})}function mn(n,t){return M(this.$push(n,t),function(n,t){return h(n)||t<n?t:n},void 0)}function yn(n,t){return h(t)?n:n.map(function(n){return Fn(n,t)})}function bn(n,t){return zn({data:this.$push(n,t).filter(a),sampled:!1})}function _n(n,t){return zn({data:this.$push(n,t).filter(a),sampled:!0})}function xn(n,t){return ct(n)?a(t)?n.length*t:M(this.$push(n,t).filter(a),function(n,t){return n+t},0):0}function kn(n,t){return e(n)===e(t)}function On(n,t,r){return new Mt(t).find(n,r)}function wn(n,t){return new Mt(t).remove(n)}function jn(n,t){return new Array(Math.max(t-String(n).length+1,0)).join("0")+n}function Mn(n){if(n<128)return[n];for(var t=n<2048&&1||n<65536&&2||3,r=Lt[t-1],e=[(n>>6*t)+r];t>0;)e.push(128|n>>6*--t&63);return e}function An(n){for(var t=[],r=0,e=n.length;r<e;r++)t.push(Mn(n.codePointAt(r)));return t}function Nn(){return M(arguments,function(n,t){return L(n,O(Ft[t]))},[])}function En(t,r){var e=r(Jn());n(x(Ft,t),"Invalid operator class "+t);var u=Ft[t];w(e,function(r,e){n(/^\$\w+$/.test(e),"Invalid operator name "+e),n(!x(u,e),e+" already exists for '"+t+"' operators")});var o={};switch(t){case ft:w(e,function(t,r){o[r]=function(t,e){return function(u,o){return t=t.bind(e),{test:function(e){var a=Tn(e,u),s=t(u,a,o);return n(i(s),r+" must return a boolean"),s}}}}(t,e)});break;case st:w(e,function(n,t){o[t]=function(n,t){return n=n.bind(t),function(t,r,e){var u=Tn(t,e);return n(e,u,r)}}(n,e)});break;default:w(e,function(n,t){o[t]=function(n,t){return function(){for(var r=arguments.length,e=Array(r),u=0;u<r;u++)e[u]=arguments[u];return n.apply(t,e)}}(n,e)})}Object.assign(Ft[t],o)}function Sn(n){Object.assign(Bt,n||{})}function In(){return Bt.key}function Cn(n,t){return f(n)?n[t]:void 0}function Pn(t,r,e){if($(Nn(ot),r))return kt[r](t,e);if(s(e)){var u={};return w(e,function(r,i){if(u[i]=Pn(t,i,e[i]),$(Nn(ot),i))return u=u[i],n(1===O(e).length,"Invalid $group expression '"+JSON.stringify(e)+"'"),!1}),u}}function Tn(n,t,r){function e(n,t){for(var r=n,i=0;i<t.length;i++){var o=t[i],a=null===o.match(/^\d+$/);if(a&&ct(r)){if(0===i&&u>0)break;u+=1,t=t.slice(i),r=M(r,function(n,r){var u=e(r,t);return void 0!==u&&n.push(u),n},[]);break}if(r=Cn(r,o),void 0===r)break}return r}var u=0;return r=r||{meta:!1},n=e(n,t.split(".")),r.meta?{result:n,depth:u}:n}function qn(t,r){var e=r.split("."),u=e[0],i=1===e.length||e.slice(1).join("."),o=null!==u.match(/^\d+$/),a=e.length>1,s=void 0,f=void 0;try{ct(t)?o?(s=Cn(t,u),a&&(s=qn(s,i)),n(!d(s)),s=[s]):(s=[],w(t,function(n){f=qn(n,r),void 0!==f&&s.push(f)}),n(s.length>0)):(f=Cn(t,u),a&&(f=qn(f,i)),n(void 0!==f),s={},s[u]=f)}catch(c){s=void 0}return s}function Dn(n,t,r){var e=arguments.length>3&&void 0!==arguments[3]&&arguments[3],u=t.split("."),i=u[0],o=1===u.length||u.slice(1).join(".");if(1===u.length)r(n,i);else if(ct(n)&&!/^\d+$/.test(i))w(n,function(n){Dn(n,t,r,e)});else{if(e===!0){var a=x(n,i);a&&!h(n[i])||(n[i]={})}Dn(n[i],o,r,e)}}function Ln(n,t,r){Dn(n,t,function(n,t){n[t]=r},!0)}function Rn(n,t){Dn(n,t,function(n,t){ct(n)&&/^\d+$/.test(t)?n.splice(parseInt(t),1):s(n)&&delete n[t]})}function Un(n){if($(ut,u(n)))return l(n)?{$regex:n}:{$eq:n};if(f(n)){var t=O(n),r=0===A(Nn(ft),t).length;if(r)return{$eq:n};if($(t,"$regex")){var e=n.$regex,i=n.$options||"",a="";o(e)&&(a+=e.ignoreCase||i.indexOf("i")>=0?"i":"",a+=e.multiline||i.indexOf("m")>=0?"m":"",a+=e.global||i.indexOf("g")>=0?"g":"",e=new RegExp(e,a)),n.$regex=e,delete n.$options}}return n}function Fn(t,r){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(i.root=i.root||t,$(Nn(it),e))return Ut[e](t,r,i);if($(Nn(ot),e))return t=Fn(t,r,null,i),n(ct(t),e+" expression must resolve to an array"),kt[e](t,null,i);if(o(r)&&r.length>0&&"$"===r[0]){if($(Jt,r))return zt[r](t,null,i);if($(Ht,r))return r;var a=Jt.filter(function(n){return 0===r.indexOf(n+".")});return 1===a.length&&(a=a[0],"$$ROOT"===a&&(t=i.root),r=r.substr(a.length)),Tn(t,r.slice(1))}switch(u(r)){case tt:return r.map(function(n){return Fn(t,n)});case rt:var s={};return w(r,function(e,u){if(s[u]=Fn(t,e,u,i),$(Nn(it,ot),u))return n(1===O(r).length,"Invalid aggregation expression '"+JSON.stringify(r)+"'"),s=s[u],!1}),s;default:return r}}function Bn(t,r){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return h(e)?r<0?(r=Math.max(0,t.length+r),e=t.length-r+1):(e=r,r=0):(r<0&&(r=Math.max(0,t.length+r)),n(e>0,"Invalid argument value for $slice operator. Limit must be a positive number"),e+=r),t.slice(r,e)}function zn(n){var t=M(n.data,function(n,t){return n+t},0),r=n.data.length||1,e=n.sampled&&1||0,u=t/r;return Math.sqrt(M(n.data,function(n,t){return n+Math.pow(t-u,2)},0)/(r-e))}function Yn(n,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.root=r.root||n;var e=Fn(n,t,null,r);return $(Ht,e)?Yt[e](n,t,r):e}function Jn(){return{assert:n,computeValue:Fn,clone:r,cloneDeep:t,each:w,err:k,getHash:T,getType:e,has:x,idKey:In,includes:$.bind(null),isArray:ct,isBoolean:i,isDate:c,isEmpty:b,isEqual:I,isFunction:v,isNil:h,isNull:p,isNumber:a,isObject:s,isRegExp:l,isString:o,isUndefined:d,keys:O,ops:Nn,resolve:Tn,resolveObj:qn,reduce:M}}var Hn="null",Vn="undefined",Kn="bool",Qn="boolean",Wn="number",Gn="string",Xn="date",Zn="regex",nt="regexp",tt="array",rt="object",et="function",ut=[Hn,Vn,Qn,Wn,Gn,Xn,nt],it="expression",ot="group",at="pipeline",st="projection",ft="query",ct=Array.isArray||function(n){return u(n)===tt},lt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},vt=function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")},ht=function(){function n(n,t){for(var r=0;r<t.length;r++){var e=t[r];e.enumerable=e.enumerable||!1,e.configurable=!0,"value"in e&&(e.writable=!0),Object.defineProperty(n,e.key,e)}}return function(t,r,e){return r&&n(t.prototype,r),e&&n(t,e),t}}();B.isIterator=z;var pt=new Error,dt=1,$t=2,gt=3,mt=4,yt=function(){function n(t){if(vt(this,n),this.__iteratees=[],this.__first=!1,this.__done=!1,this.__buf=[],Y(t)&&(t={next:t}),z(t))t=function(n){return function(){var t=n.next();if(t.done)throw pt;return t.value}}(t);else if(Array.isArray(t))t=function(n){var t=n.length,r=0;return function(){if(r<t)return n[r++];throw pt}}(t);else if(!Y(t))throw new Error("Source is not iterable. Must be Array, Function or Object{next:Function}");this.next=H(t,this.__iteratees,this.__buf)}return ht(n,[{key:Symbol.iterator,value:function(){return this}},{key:"_validate",value:function(){if(this.__first)throw new Error("Cannot add iteratee/transform after `first()`")}},{key:"_push",value:function(n){return this._validate(),this.__iteratees.push(n),this}},{key:"map",value:function(n){return this._push({type:dt,func:n})}},{key:"filter",value:function(n){return this._push({type:$t,func:n})}},{key:"take",value:function(n){return n>0?this._push({type:gt,func:n}):this}},{key:"drop",value:function(n){return n>0?this._push({type:mt,func:n}):this}},{key:"transform",value:function(n){this._validate();var t=this,r=void 0;return B(function(){return r||(r=B(n(t.value()))),r.next()})}},{key:"first",value:function(){return this.take(1),this.__first=!0,this}},{key:"value",value:function(){return this.__done||(this.__done=this.next(this.__buf).done),this.__first?this.__buf[0]:this.__buf}},{key:"each",value:function(n){for(;;){var t=this.next();if(t.done)break;if(n(t.value)===!1)return!1}return!0}},{key:"reduce",value:function(n,t){var r=this.next(),e=0;for(void 0!==t||r.done||(t=r.value,r=this.next(),e++);!r.done;)t=n(t,r.value,e++),r=this.next();return t}},{key:"size",value:function(){return this.reduce(function(n,t){return++n},0)}}]),n}(),bt={$:function(n,t,r){k("$ not implemented")},$elemMatch:function(t,r,e){var u=Tn(t,e),i=new Mt(r);n(ct(u),"$elemMatch: invalid argument");for(var o=0;o<u.length;o++)if(i.test(u[o]))return[u[o]]},$slice:function(t,r,e){var u=Tn(t,e);return ct(u)?ct(r)?Bn(u,r[0],r[1]):(n(a(r),"$slice: invalid arguments for projection"),Bn(u,r)):u}},_t={$addFields:F,$bucket:V,$bucketAuto:K,$count:Q,$facet:W,$group:G,$limit:X,$lookup:Z,$match:nn,$out:tn,$project:rn,$redact:en,$replaceRoot:un,$sample:on,$skip:an,$sort:sn,$sortByCount:fn,$unwind:cn},xt=function(){function t(n){vt(this,t),this.__operators=n}return ht(t,[{key:"stream",value:function(t,r){return t=B(t),b(this.__operators)||w(this.__operators,function(e){var u=O(e);n(1===u.length&&$(Nn(at),u[0]),"Invalid aggregation operator "+u),u=u[0],t=r&&r instanceof Mt?_t[u].call(r,t,e[u]):_t[u](t,e[u])}),t}},{key:"run",value:function(n,t){return this.stream(n,t).value()}}]),t}(),kt={$addToSet:vn,$avg:hn,$first:pn,$last:dn,$mergeObjects:gn,$max:$n,$min:mn,$push:yn,$stdDevPop:bn,$stdDevSamp:_n,$sum:xn},Ot=function(){function n(t,r,e){vt(this,n),this.__filterFn=r.test.bind(r),this.__query=r,this.__source=t,this.__projection=e||r.__projection,this.__operators=[],this.__result=null,this.__stack=[]}return ht(n,[{key:"_fetch",value:function(){return this.__result?this.__result:(s(this.__projection)&&this.__operators.push({$project:this.__projection}),this.__result=B(this.__source).filter(this.__filterFn),this.__operators.length>0&&(this.__result=new xt(this.__operators).stream(this.__result,this.__query)),this.__result)}},{key:"all",value:function(){return this._fetch().value()}},{key:"count",value:function(){return this.all().length}},{key:"skip",value:function(n){return this.__operators.push({$skip:n}),this}},{key:"limit",value:function(n){return this.__operators.push({$limit:n}),this}},{key:"sort",value:function(n){return this.__operators.push({$sort:n}),this}},{key:"next",value:function(){if(this.__stack){if(this.__stack.length>0)return this.__stack.pop();var n=this._fetch().next();return n.done?void(this.__stack=null):n.value}}},{key:"hasNext",value:function(){if(!this.__stack)return!1;if(this.__stack.length>0)return!0;var n=this._fetch().next();return n.done?this.__stack=null:this.__stack.push(n.value),!!this.__stack}},{key:"map",value:function(n){return this._fetch().map(n).value()}},{key:"forEach",value:function(n){this._fetch().each(n)}},{key:Symbol.iterator,value:function(){return this._fetch()}}]),n}(),wt={$eq:function(n,t){if(I(n,t))return!0;if(h(n)&&h(t))return!0;if(ct(n)){var r=I.bind(null,t);return n.some(r)||E(n,1).some(r)}return!1},$ne:function(n,t){return!this.$eq(n,t)},$in:function(n,t){return h(n)?t.some(p):A(_(n),t).length>0},$nin:function(n,t){return!this.$in(n,t)},$lt:function(n,t){return!d(_(n).find(function(n){return kn(n,t)&&n<t}))},$lte:function(n,t){return!d(_(n).find(function(n){return kn(n,t)&&n<=t}))},$gt:function(n,t){return!d(_(n).find(function(n){return kn(n,t)&&n>t}))},$gte:function(n,t){return!d(_(n).find(function(n){return kn(n,t)&&n>=t}))},$mod:function(n,t){return!d(_(n).find(function(n){return a(n)&&ct(t)&&2===t.length&&n%t[0]===t[1]}))},$regex:function(n,t){n=_(n);var r=function(n){return o(n)&&!!n.match(t)};return n.some(r)||E(n,1).some(r)},$exists:function(n,t){return(t===!1||0===t)&&h(n)||(t===!0||1===t)&&!h(n)},$all:function(n,t){var r=!1;if(ct(n)&&ct(t))for(var e=0,u=t.length;e<u;e++){if(!s(t[e])||!$(O(t[e]),"$elemMatch"))return A(t,n).length===u;r=r||this.$elemMatch(n,t[e].$elemMatch)}return r},$size:function(n,t){return ct(n)&&a(t)&&n.length===t},$elemMatch:function(n,t){if(ct(n)&&!b(n))for(var r=new Mt(t),e=0,u=n.length;e<u;e++)if(r.test(n[e]))return!0;return!1},$type:function(n,t){switch(t){case 1:case"double":return a(n)&&(n+"").indexOf(".")!==-1;case 2:case Gn:return o(n);case 3:case rt:return s(n);case 4:case tt:return ct(n);case 6:case Vn:return h(n);case 8:case Kn:return i(n);case 9:case Xn:return c(n);case 10:case Hn:return p(n);case 11:case Zn:return l(n);case 16:case"int":return a(n)&&n<=2147483647&&(n+"").indexOf(".")===-1;case 18:case"long":return a(n)&&n>2147483647&&n<=0x8000000000000000&&(n+"").indexOf(".")===-1;case 19:case"decimal":return a(n);default:return!1}}},jt={$and:function(t,r){n(ct(r),"Invalid expression: $and expects value to be an Array");var e=[];return w(r,function(n){return e.push(new Mt(n))}),{test:function(n){for(var t=0;t<e.length;t++)if(!e[t].test(n))return!1;return!0}}},$or:function(t,r){n(ct(r),"Invalid expression. $or expects value to be an Array");var e=[];return w(r,function(n){return e.push(new Mt(n))}),{test:function(n){for(var t=0;t<e.length;t++)if(e[t].test(n))return!0;return!1}}},$nor:function(t,r){n(ct(r),"Invalid expression. $nor expects value to be an Array");var e=this.$or("$or",r);return{test:function(n){return!e.test(n)}}},$not:function(n,t){var r={};r[n]=Un(t);var e=new Mt(r);return{test:function(n){return!e.test(n)}}},$where:function(n,t){return v(t)||(t=new Function("return "+t+";")),{test:function(n){return t.call(n)===!0}}},$expr:function(n,t){return{test:function(n){return Fn(n,t)}}}};w(wt,function(n,t){jt[t]=function(n,t){return n=n.bind(t),function(t,r){return{test:function(e){var u=Tn(e,t,{meta:!0});return u=S(u.result,u.depth),n(u,r)}}}}(n,wt)});var Mt=function(){function t(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};vt(this,t),this.__criteria=n,this.__projection=r,this.__compiled=[],this._compile()}return ht(t,[{key:"_compile",value:function(){var t=this;if(!b(this.__criteria)){n(s(this.__criteria),"Criteria must be of type Object");var r=void 0;w(this.__criteria,function(n,e){"$where"===e?r={field:e,expr:n}:"$expr"===e?t._processOperator(e,e,n):$(["$and","$or","$nor"],e)?t._processOperator(e,e,n):(n=Un(n),w(n,function(n,r){t._processOperator(e,r,n)})),s(r)&&t._processOperator(r.field,r.field,r.expr)})}}},{key:"_processOperator",value:function(t,r,e){n($(Nn(ft),r),"Invalid query operator '"+r+"' detected"),this.__compiled.push(jt[r](t,e))}},{key:"test",value:function(n){for(var t=0,r=this.__compiled.length;t<r;t++)if(!this.__compiled[t].test(n))return!1;return!0}},{key:"find",value:function(n,t){return new Ot(n,this,t)}},{key:"remove",value:function(n){var t=this;return M(n,function(n,r){return t.test(r)||n.push(r),n},[])}}]),t}(),At={$abs:function(n,t){var r=Fn(n,t);return null===r||void 0===r?null:Math.abs(r)},$add:function(t,r){var e=Fn(t,r),u=!1,i=M(e,function(t,r){return c(r)&&(n(!u,"'$add' can only have one date value"),u=!0,r=r.getTime()),t+=r},0);return u?new Date(i):i},$ceil:function(t,r){var e=Fn(t,r);return h(e)?null:(n(a(e)||isNaN(e),"$ceil must be a valid expression that resolves to a number."),Math.ceil(e))},$divide:function(n,t){var r=Fn(n,t);return r[0]/r[1]},$exp:function(t,r){var e=Fn(t,r);return h(e)?null:(n(a(e)||isNaN(e),"$exp must be a valid expression that resolves to a number."),Math.exp(e))},$floor:function(t,r){var e=Fn(t,r);return h(e)?null:(n(a(e)||isNaN(e),"$floor must be a valid expression that resolves to a number."),Math.floor(e))},$ln:function(t,r){var e=Fn(t,r);return h(e)?null:(n(a(e)||isNaN(e),"$ln must be a valid expression that resolves to a number."),Math.log(e))},$log:function(t,r){var e=Fn(t,r);return n(ct(e)&&2===e.length,"$log must be a valid expression that resolves to an array of 2 items"),e.some(h)?null:(n(e.some(isNaN)||e.every(a),"$log expression must resolve to array of 2 numbers"),Math.log10(e[0])/Math.log10(e[1]))},$log10:function(t,r){var e=Fn(t,r);return h(e)?null:(n(a(e)||isNaN(e),"$log10 must be a valid expression that resolves to a number."),Math.log10(e))},$mod:function(n,t){var r=Fn(n,t);return r[0]%r[1]},$multiply:function(n,t){var r=Fn(n,t);return M(r,function(n,t){return n*t},1)},$pow:function(t,r){var e=Fn(t,r);return n(ct(e)&&2===e.length&&e.every(a),"$pow expression must resolve to an array of 2 numbers"),n(!(0===e[0]&&e[1]<0),"$pow cannot raise 0 to a negative exponent"),Math.pow(e[0],e[1])},$sqrt:function(t,r){var e=Fn(t,r);return h(e)?null:(n(a(e)&&e>0||isNaN(e),"$sqrt expression must resolve to non-negative number."),Math.sqrt(e))},$subtract:function(n,t){var r=Fn(n,t);return r[0]-r[1]},$trunc:function(t,r){var e=Fn(t,r);return h(e)?null:(n(a(e)||isNaN(e),"$trunc expression must resolve to a number."),Math.trunc(e))}},Nt={$arrayElemAt:function(t,r){var e=Fn(t,r);n(ct(e)&&2===e.length,"$arrayElemAt expression must resolve to an array of 2 elements"),n(ct(e[0]),"First operand to $arrayElemAt must resolve to an array"),n(a(e[1]),"Second operand to $arrayElemAt must resolve to an integer");var u=e[1];return e=e[0],u<0&&Math.abs(u)<=e.length?e[u+e.length]:u>=0&&u<e.length?e[u]:void 0},$arrayToObject:function(t,r){var e=Fn(t,r);return n(ct(e),"$arrayToObject expression must resolve to an array"),M(e,function(t,r){return ct(r)&&2==r.length?t[r[0]]=r[1]:(n(s(r)&&x(r,"k")&&x(r,"v"),"$arrayToObject expression is invalid."),t[r.k]=r.v),t},{})},$concatArrays:function(t,r){var e=Fn(t,r,null);return n(ct(e),"$concatArrays must resolve to an array"),e.some(h)?null:e.reduce(function(n,t){return L(n,t)},[])},$filter:function(t,r){var e=Fn(t,r.input),u=r.as,i=r.cond;return n(ct(e),"$filter 'input' expression must resolve to an array"),e.filter(function(n){var t={};return t["$"+u]=n,Fn(t,i)===!0})},$in:function(t,r){var e=Fn(t,r[0]),u=Fn(t,r[1]);return n(ct(u),"$in second argument must be an array"),$(u,e)},$indexOfArray:function(t,r){var e=Fn(t,r);if(h(e))return null;var u=e[0],i=e[1];if(h(u))return null;n(ct(u),"$indexOfArray expression must resolve to an array.");var o=e[2]||0,a=e[3];return h(a)&&(a=u.length),o>a?-1:(n(o>=0&&a>=0,"$indexOfArray expression is invalid"),(o>0||a<u.length)&&(u=u.slice(o,a)),u.findIndex(I.bind(null,i))+o)},$isArray:function(n,t){return ct(Fn(n,t[0]))},$map:function(t,r){var e=Fn(t,r.input);n(ct(e),"$map 'input' expression must resolve to an array");var u=r.as,i=r["in"],o="$"+u;return e.map(function(n){return t[o]=n,Fn(t,i)})},$objectToArray:function(t,r){var e=Fn(t,r);n(s(e),"$objectToArray expression must resolve to an object");var u=[];return w(e,function(n,t){return u.push({k:t,v:n})}),u},$range:function(n,t){for(var r=Fn(n,t),e=r[0],u=r[1],i=r[2]||1,o=[];e<u&&i>0||e>u&&i<0;)o.push(e),e+=i;return o},$reduce:function(t,r){var e=Fn(t,r.input),u=Fn(t,r.initialValue),i=r["in"];return h(e)?null:(n(ct(e),"$reduce 'input' expression must resolve to an array"),M(e,function(n,t){return Fn({$value:n,$this:t},i)},u))},$reverseArray:function(t,r){var e=Fn(t,r);if(h(e))return null;n(ct(e),"$reverseArray expression must resolve to an array");var u=[];return L(u,e),u.reverse(),u},$size:function(n,t){var r=Fn(n,t);return ct(r)?r.length:void 0},$slice:function(n,t){var r=Fn(n,t);return Bn(r[0],r[1],r[2])},$zip:function(t,r){var e=Fn(t,r.inputs),u=r.useLongestLength||!1;n(ct(e),"'inputs' expression must resolve to an array"),n(i(u),"'useLongestLength' must be a boolean"),ct(r.defaults)&&n(m(u),"'useLongestLength' must be set to true to use 'defaults'");for(var o=0,a=0,s=e.length;a<s;a++){var f=e[a];if(h(f))return null;n(ct(f),"'inputs' expression values must resolve to an array or null"),o=u?Math.max(o,f.length):Math.min(o||f.length,f.length)}for(var c=[],l=r.defaults||[],v=function(n){var t=e.map(function(t,r){return h(t[n])?l[r]||null:t[n]});c.push(t)},p=0;p<o;p++)v(p);return c},$mergeObjects:function(n,t){var r=Fn(n,t);return ct(r)?M(r,function(n,t){return Object.assign(n,t)},{}):{}}},Et={$and:function(n,t){var r=Fn(n,t);return m(r)&&r.every(m)},$or:function(n,t){var r=Fn(n,t);return m(r)&&r.some(m)},$not:function(n,t){return!Fn(n,t[0])}},St={$cmp:function(n,t){var r=Fn(n,t);return r[0]>r[1]?1:r[0]<r[1]?-1:0}};w(["$eq","$ne","$gt","$gte","$lt","$lte","$nin"],function(n){St[n]=function(t,r){var e=Fn(t,r);return wt[n](e[0],e[1])}});var It={$cond:function(t,r){var e=void 0,u=void 0,i=void 0,o="$cond: invalid arguments";ct(r)?(n(3===r.length,o),e=r[0],u=r[1],i=r[2]):(n(s(r),o),e=r["if"],u=r.then,i=r["else"]);var a=Fn(t,e);return a?Fn(t,u):Fn(t,i)},$switch:function(t,r){var e="Invalid arguments for $switch operator";n(r.branches,e);var u=r.branches.find(function(r){return n(r["case"]&&r.then,e),Fn(t,r["case"])});return u?Fn(t,u.then):(n(r["default"],e),Fn(t,r["default"]))},$ifNull:function(t,r){n(ct(r)&&2===r.length,"Invalid arguments for $ifNull operator");var e=Fn(t,r);return h(e[0])?e[1]:e[0]}},Ct={"%Y":["$year",4],"%m":["$month",2],"%d":["$dayOfMonth",2],"%H":["$hour",2],"%M":["$minute",2],"%S":["$second",2],"%L":["$millisecond",3],"%j":["$dayOfYear",3],"%w":["$dayOfWeek",1],"%U":["$week",2],"%%":"%"},Pt={$dayOfYear:function(n,t){var r=Fn(n,t),e=new Date(r.getFullYear(),0,0),u=r-e,i=864e5;return Math.round(u/i)},$dayOfMonth:function(n,t){var r=Fn(n,t);return r.getDate()},$dayOfWeek:function(n,t){var r=Fn(n,t);return r.getDay()+1},$year:function(n,t){var r=Fn(n,t);return r.getFullYear()},$month:function(n,t){var r=Fn(n,t);return r.getMonth()+1},$week:function(n,t){var r=Fn(n,t);r=new Date((+r)),r.setHours(0,0,0),r.setDate(r.getDate()+4-(r.getDay()||7));var e=new Date(r.getFullYear(),0,1);return Math.floor(((r-e)/864e5+1)/7)},$hour:function(n,t){var r=Fn(n,t);return r.getUTCHours()},$minute:function(n,t){var r=Fn(n,t);return r.getMinutes()},$second:function(n,t){var r=Fn(n,t);return r.getSeconds()},$millisecond:function(n,t){var r=Fn(n,t);return r.getMilliseconds()},$dateToString:function(n,t){for(var r=t.format,e=Fn(n,t.date),u=r.match(/(%%|%Y|%m|%d|%H|%M|%S|%L|%j|%w|%U)/g),i=0,o=u.length;i<o;i++){var a=Ct[u[i]],s=a;if(ct(a)){var f=this[a[0]].bind(this),c=a[1];s=jn(f(n,e),c)}r=r.replace(u[i],s)}return r}},Tt={$literal:function(n,t){return t}},qt={$setEquals:function(n,t){var r=Fn(n,t),e=C(r[0]),u=C(r[1]);return e.length===u.length&&e.length===A(e,u).length},$setIntersection:function(n,t){var r=Fn(n,t);return A(r[0],r[1])},$setDifference:function(n,t){var r=Fn(n,t);return r[0].filter(g.bind(null,r[1]))},$setUnion:function(n,t){var r=Fn(n,t);return N(r[0],r[1])},$setIsSubset:function(n,t){ | ||
var r=Fn(n,t);return A(r[0],r[1]).length===r[0].length},$anyElementTrue:function(n,t){var r=Fn(n,t)[0];return r.some(m)},$allElementsTrue:function(n,t){var r=Fn(n,t)[0];return r.every(m)}},Dt={$concat:function(n,t){var r=Fn(n,t);return[null,void 0].some($.bind(null,r))?null:r.join("")},$indexOfBytes:function(t,r){var e=Fn(t,r),u="$indexOfBytes: expression resolves to invalid arguments";if(h(e[0]))return null;n(o(e[0])&&o(e[1]),u);var i=e[0],s=e[1],f=e[2],c=e[3],l=h(f)||a(f)&&f>=0&&Math.round(f)===f;if(l=l&&(h(c)||a(c)&&c>=0&&Math.round(c)===c),n(l,u),f=f||0,c=c||i.length,f>c)return-1;var v=i.substring(f,c).indexOf(s);return v>-1?v+f:v},$split:function(t,r){var e=Fn(t,r);return h(e[0])?null:(n(e.every(o),"$split: invalid argument"),e[0].split(e[1]))},$strLenBytes:function(n,t){return~-encodeURI(Fn(n,t)).split(/%..|./).length},$strLenCP:function(n,t){return Fn(n,t).length},$strcasecmp:function(t,r){var e=Fn(t,r),u=e[0],i=e[1];return I(u,i)||e.every(h)?0:(n(e.every(o),"$strcasecmp: invalid argument"),u=u.toUpperCase(),i=i.toUpperCase(),u>i&&1||u<i&&-1||0)},$substrBytes:function(t,r){var e=Fn(t,r),u=e[0],i=e[1],s=e[2];n(o(u)&&a(i)&&i>=0&&a(s)&&s>=0,"$substrBytes: invalid arguments");for(var f=An(u),c=[],l=0,v=0;v<f.length;v++)c.push(l),l+=f[v].length;var h=c.indexOf(i),p=c.indexOf(i+s);return n(h>-1&&p>-1,"$substrBytes: Invalid range, start or end index is a UTF-8 continuation byte."),u.substring(h,p)},$substr:function(n,t){var r=Fn(n,t),e=r[0],u=r[1],i=r[2];return o(e)?u<0?"":i<0?e.substr(u):e.substr(u,i):""},$substrCP:function(n,t){return this.$substr(n,t)},$toLower:function(n,t){var r=Fn(n,t);return b(r)?"":r.toLowerCase()},$toUpper:function(n,t){var r=Fn(n,t);return b(r)?"":r.toUpperCase()}},Lt=[192,224,240],Rt={$let:function(n,t){var r=t.vars,e=t["in"],u=O(r);return w(u,function(t){var e=Fn(n,r[t]),u="$"+t;n[u]=e}),Fn(n,e)}},Ut=Object.assign({},At,Nt,Et,St,It,Pt,Tt,qt,Dt,Rt),Ft={expression:Ut,group:kt,pipeline:_t,projection:bt,query:jt},Bt={key:"_id"},zt={$$ROOT:function(n,t,r){return r.root},$$CURRENT:function(n,t,r){return n}},Yt={$$KEEP:function(n){return n},$$PRUNE:function(){},$$DESCEND:function(n,t,r){if(!x(t,"$cond"))return n;var e=void 0;return w(n,function(u,i){f(u)&&(ct(u)?(e=[],w(u,function(n){s(n)&&(n=Yn(n,t,r)),h(n)||e.push(n)})):e=Yn(u,t,r),h(e)?delete n[i]:n[i]=e)}),n}},Jt=O(zt),Ht=O(Yt),Vt={query:function(n,t){return new Mt(n).find(this.toJSON(),t)},aggregate:function(n){return new xt(n).run(this.toJSON())}},Kt="2.2.3",Qt={_internal:Jn,Aggregator:xt,CollectionMixin:Vt,Cursor:Ot,Lazy:B,OP_EXPRESSION:it,OP_GROUP:ot,OP_PIPELINE:at,OP_PROJECTION:st,OP_QUERY:ft,Query:Mt,VERSION:Kt,addOperators:En,aggregate:ln,find:On,remove:wn,setup:Sn};return Qt}); | ||
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):n.mingo=t()}(this,function(){"use strict";function n(n,t){y(n)&&k(t)}function t(n){switch(u(n)){case rt:return n.map(t);case et:return j(n,t);default:return n}}function r(n){switch(u(n)){case rt:return L([],n);case et:return Object.assign({},n);default:return n}}function e(n){return null===n?"Null":void 0===n?"Undefined":n.constructor.name}function u(n){return e(n).toLowerCase()}function i(n){return u(n)===Wn}function o(n){return u(n)===Xn}function a(n){return u(n)===Gn}function s(n){return u(n)===et}function f(n){return n===Object(n)}function c(n){return u(n)===Zn}function l(n){return u(n)===tt}function v(n){return u(n)===ut}function h(n){return p(n)||d(n)}function p(n){return u(n)===Vn}function d(n){return u(n)===Kn}function $(n,t){return n.some(P.bind(null,t))}function g(n,t){return!$(n,t)}function m(n){return!!n}function y(n){return!n}function b(n){return h(n)||lt(n)&&0===n.length||s(n)&&0===O(n).length||!n}function _(n){return lt(n)?n:[n]}function x(n,t){return n.hasOwnProperty(t)}function k(n){throw new Error(n)}function O(n){return Object.keys(n)}function w(n,t,r){if(t=t.bind(r),lt(n))for(var e=0,u=n.length;e<u&&t(n[e],e,n)!==!1;e++);else for(var i in n)if(n.hasOwnProperty(i)&&t(n[i],i,n)===!1)break}function j(n,t,r){t=t.bind(r);for(var e={},u=O(n),i=0;i<u.length;i++){var o=u[i];e[o]=t(n[o],o)}return e}function M(){for(var n=arguments.length,t=Array(n),r=0;r<n;r++)t[r]=arguments[r];for(var e=t[0],u=1;u<t.length;u++)for(var i=t[u],o=O(i),a=0;a<o.length;a++){var s=o[a];Ln(e,s,i[s])}return e}function A(n,t,r){return lt(n)?n.reduce(t,r):(w(n,function(e,u){return r=t(r,e,u,n)}),r)}function N(n,t){return n.filter($.bind(null,t))}function E(n,t){return L(L([],n),t.filter(g.bind(null,n)))}function S(t){function r(n,t){for(var e=0,i=n.length;e<i;e++)lt(n[e])&&(t>0||t<0)?r(n[e],Math.max(-1,t-1)):u.push(n[e])}var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;n(lt(t),"Input must be an Array");var u=[];return r(t,e),u}function I(n,t){if(t<1)return n;for(;t--&<(n)&&1===n.length;)n=n[0];return n}function P(n,t){for(var r=[n],e=[t];r.length>0;)if(n=r.pop(),t=e.pop(),n!==t){var i=u(n);if(i!==u(t)||i===ut)return!1;switch(i){case rt:if(n.length!==t.length)return!1;L(r,n),L(e,t);break;case et:var o=O(n),a=O(t);if(o.length!==a.length)return!1;o.sort(),a.sort();for(var s=0,f=o.length;s<f;s++){var c=o[s];if(c!==a[s])return!1;r.push(n[c]),e.push(t[c])}break;default:if(T(n)!==T(t))return!1}}return 0===r.length}function C(n){var t={},r=[];return w(n,function(n){var e=q(n);x(t,e)||(r.push(n),t[e]=0)}),r}function T(n){var t=u(n);switch(t){case Wn:case Gn:case tt:return n.toString();case Xn:return JSON.stringify(n);case Zn:return n.toISOString();case Vn:case Kn:return t;case rt:return"["+n.map(T)+"]";default:var r=t===et?"":""+e(n),i=O(n);return i.sort(),r+"{"+i.map(function(t){return T(t)+":"+T(n[t])})+"}"}}function q(n){for(var t=0,r=T(n),e=r.length;e;)t=(t<<5)-t^r.charCodeAt(--e);return t>>>0}function R(n,t,r){var e={},u=[],i=n.length,o=[];t=t.bind(r);for(var a=0;a<i;a++){var s=n[a],f=t(s,a);if(h(f))o.push(s);else{var c=q(s);x(e,c)||(e[c]=[f,a]),u.push(s)}}return u.sort(function(n,t){var r=e[q(n)],u=e[q(t)];return r[0]<u[0]?-1:r[0]>u[0]?1:r[1]<u[1]?-1:r[1]>u[1]?1:0}),L(o,u)}function D(n,t,r){var e={keys:[],groups:[]},u={};return t=t.bind(r),w(n,function(n){var r=t(n),i=q(r),o=-1;d(u[i])&&(o=e.keys.length,u[i]=o,e.keys.push(r),e.groups.push([])),o=u[i],e.groups[o].push(n)}),e}function L(n,t){return Array.prototype.push.apply(n,t),n}function U(n,t){for(var r=0,e=n.length-1;r<=e;){var u=Math.round(r+(e-r)/2);if(t<n[u])e=u-1;else{if(!(t>n[u]))return u;r=u+1}}return r}function F(n){var t=this;return function(r){return function(){for(var e=arguments.length,u=Array(e),i=0;i<e;i++)u[i]=arguments[i];var o=q(u);return x(r,o)||(r[o]=n.apply(t,u)),r[o]}}({})}function B(n,r){var e=O(r);return 0===e.length?n:n.map(function(n){var u=t(n);return w(e,function(t){var e=Bn(n,r[t]);Ln(u,t,e)}),u})}function z(n){return n instanceof kt?n:new kt(n)}function Y(n){return!!n&&"object"===("undefined"==typeof n?"undefined":dt(n))&&J(n.next)}function J(n){return!!n&&"function"==typeof n}function H(n,t){var r=n.slice(t+1);n.splice(t),Array.prototype.push.apply(n,r)}function V(n,t,r){var e=!1,u=-1,i={},o=0;return function(a){a=a===r;try{n:for(;!e;){var s=n();u++;for(var f=-1,c=t.length,l=!1;++f<c;){var v=t[f],h=v.func,p=v.type;switch(p){case yt:s=h(s,u);break;case bt:if(!h(s,u))continue n;break;case _t:--v.func,v.func||(l=!0);break;case xt:--v.func,v.func||H(t,f);continue n;default:break n}}if(e=l,!a)return{value:s,done:!1};r[o++]=s}}catch(d){if(d!==mt)throw d}return i=null,e=!0,{done:!0}}}function K(t,r){var u=r.boundaries,i=r["default"],o=u[0],a=u[u.length-1],s=r.output||{count:{$sum:1}};n(u.length>2,"$bucket 'boundaries' expression must have at least 3 elements");for(var f=e(o),c=0,l=u.length-1;c<l;c++)n(f===e(u[c+1]),"$bucket 'boundaries' must all be of the same type"),n(u[c]<u[c+1],"$bucket 'boundaries' must be sorted in ascending order");!h(i)&&e(r["default"])===e(o)&&n(o>r["default"]||a<r["default"],"$bucket 'default' expression must be out of boundaries range");var v={};w(u,function(n){return v[n]=[]}),h(i)||(v[i]=[]);var p=!1;return z(function(){return p||(t.each(function(t){var e=Bn(t,r.groupBy);if(h(e)||e<o||e>=a)n(!h(i),"$bucket require a default for out of range values"),v[i].push(t);else{n(e>=o&&e<a,"$bucket 'groupBy' expression must resolve to a value in range of boundaries");var s=U(u,e),f=u[Math.max(0,s-1)];v[f].push(t)}}),u.pop(),h(i)||u.push(i),p=z(u).map(function(n){var t=Tn(v[n],null,s);return Object.assign(t,{_id:n})})),p.next()})}function Q(t,r){var e=r.output||{count:{$sum:1}},u=r.groupBy,i=r.buckets;return n(i>0,"The $bucketAuto 'buckets' field must be greater than 0, but found: "+i),t.transform(function(n){for(var t=Math.max(1,Math.round(n.length/i)),r=F(Bn),o={},a=[],s=R(n,function(n){var t=r(n,u);return h(t)?a.push(n):(o[t]||(o[t]=[]),o[t].push(n)),t}),f=Pn(),c=[],l=0,v=0,p=s.length;v<i&&l<p;v++){for(var d={},$=[],g=0;g<t&&l<p;g++){var m=r(s[l],u);if(h(m)&&(m=null),L($,h(m)?a:o[m]),l+=h(m)?a.length:o[m].length,x(d,"min")||(d.min=m),c.length>0){var y=c[c.length-1];y[f].max=d.min}}v==i-1&&L($,s.slice(l)),c.push(Object.assign(Tn($,null,e),{_id:d}))}return c.length>0&&(c[c.length-1][f].max=r(s[s.length-1],u)),c})}function W(t,r){return n(o(r)&&""!==r.trim()&&r.indexOf(".")===-1&&"$"!==r.trim()[0],"Invalid expression value for $count"),z(function(){var n={};return n[r]=t.size(),{value:n,done:!1}}).first()}function G(n,t){return n.transform(function(n){return[j(t,function(t){return vn(n,t)})]}).first()}function X(n,t){var r=Pn(),e=t[r];return n.transform(function(n){var u=D(n,function(n){return Bn(n,e,e)});delete t[r];var i=-1,o=u.keys.length;return function(){if(++i===o)return{done:!0};var n=u.keys[i],e={};return d(n)||(e[r]=n),w(t,function(n,t){e[t]=Tn(u.groups[i],t,n)}),{value:e,done:!1}}})}function Z(n,t){return n.take(t)}function nn(t,e){function u(n){return q(h(n)?null:n)}var i=e.from,a=e.localField,s=e.foreignField,f=e.as;n(lt(i)&&o(s)&&o(a)&&o(f),"$lookup: invalid argument");var c={};return w(i,function(n){var t=u(n[s]);c[t]=c[t]||[],c[t].push(n)}),t.map(function(n){var t=u(n[a]),e=r(n);return e[f]=c[t]||[],e})}function tn(n,t){var r=new At(t);return n.filter(function(n){return r.test(n)})}function rn(t,r){return n(lt(r),"$out: argument must be an array"),t.map(function(n){return r.push(n),n})}function en(r,e){if(b(e))return r;var u=O(e),i=!1,f=Pn(),c=[!1,!1];if(w(e,function(t,r){r!==f&&(0===t||t===!1?c[0]=!0:c[1]=!0,n(c[0]!==c[1],"Projection cannot have a mix of inclusion and exclusion."))}),$(u,f)){var l=e[f];0!==l&&l!==!1||(u=u.filter(g.bind(null,[f])),n(g(u,f),"Must not contain collections id key"),i=b(u))}else u.push(f);return r.map(function(n){var r={},c=!1,l=!1,v=[];return i&&v.push(f),w(u,function(t){var u=e[t],i=void 0;if(t!==f&&$([0,!1],u)&&(l=!0),t===f&&b(u))i=n[t];else if(o(u))i=Bn(n,u,t);else if($([1,!0],u));else{if(!s(u))return void v.push(t);var h=O(u);h=!(h.length>1)&&h[0],$(En(ft),h)?"$slice"===h?_(u[h]).every(a)?(i=Ot[h](n,u[h],t),c=!0):i=Bn(n,u,t):i=Ot[h](n,u[h],t):i=Bn(n,u,t)}var p=Rn(n,t);d(p)||M(r,p),g([0,1,!1,!0],u)&&(d(i)?Un(r,t):Ln(r,t,i))}),(c||l||i)&&(r=Object.assign({},n,r),v.length>0&&(r=t(r),w(v,function(n){return Un(r,n)}))),r})}function un(n,r){return n.map(function(n){return Jn(t(n),r)})}function on(t,r){return t.map(function(t){return t=Bn(t,r.newRoot),n(s(t),"$replaceRoot expression must return an object"),t})}function an(t,r){var e=r.size;return n(a(e),"$sample size must be a positive integer"),t.transform(function(n){var t=n.length,r=-1;return function(){if(++r===e)return{done:!0};var u=Math.floor(Math.random()*t);return{value:n[u],done:!1}}})}function sn(n,t){return n.drop(t)}function fn(n,t){return!b(t)&&s(t)&&(n=n.transform(function(n){var r=O(t);return w(r.reverse(),function(r){var e=D(n,function(n){return qn(n,r)}),u={},i=R(e.keys,function(n,t){return u[n]=t,n});t[r]===-1&&i.reverse(),n=[],w(i,function(t){return L(n,e.groups[u[t]])})}),n})),n}function cn(n,t){var r={count:{$sum:1}};return r[Pn()]=t,this.$sort(this.$group(n,r),{count:-1})}function ln(n,r){o(r)&&(r={path:r});var e=r.path.substr(1),u=r.includeArrayIndex||!1,i=r.preserveNullAndEmptyArrays||!1,a=function(n,t){return u!==!1&&(n[u]=t),n},s=void 0;return z(function(){for(var r=function(){if(z.isIterator(s)){var r=s.next();if(!r.done)return{v:r}}var u=n.next();if(u.done)return{v:u};if(u=u.value,s=qn(u,e),lt(s)){if(0===s.length&&i===!0){s=null;var o=t(u);return Un(o,e),{v:{value:a(o,null),done:!1}}}s=z(s).map(function(n,r){var i=t(u);return Ln(i,e,n),a(i,r)})}else if(!b(s)||i===!0){var f=a(t(u),null);return{v:{value:f,done:!1}}}};;){var u=r();if("object"===("undefined"==typeof u?"undefined":dt(u)))return u.v}})}function vn(t,r){return n(lt(r),"Aggregation pipeline must be an array"),new jt(r).run(t)}function hn(n,t,r){return new At(t).find(n,r)}function pn(n,t){return new At(t).remove(n)}function dn(n,t){return e(n)===e(t)}function $n(n,t){return new Array(Math.max(t-String(n).length+1,0)).join("0")+n}function gn(n){if(n<128)return[n];for(var t=n<2048&&1||n<65536&&2||3,r=Dt[t-1],e=[(n>>6*t)+r];t>0;)e.push(128|n>>6*--t&63);return e}function mn(n){for(var t=[],r=0,e=n.length;r<e;r++)t.push(gn(n.codePointAt(r)));return t}function yn(n,t){return C(this.$push(n,t))}function bn(n,t){var r=this.$push(n,t).filter(a),e=A(r,function(n,t){return n+t},0);return e/(r.length||1)}function _n(n,t){return n.length>0?Bn(n[0],t):void 0}function xn(n,t){return n.length>0?Bn(n[n.length-1],t):void 0}function kn(n,t){return A(this.$push(n,t),function(n,t){return h(n)||t>n?t:n},void 0)}function On(n,t){return A(n,function(n,r){return Object.assign(n,Bn(r,t))},{})}function wn(n,t){return A(this.$push(n,t),function(n,t){return h(n)||t<n?t:n},void 0)}function jn(n,t){return h(t)?n:n.map(function(n){return Bn(n,t)})}function Mn(n,t){return Yn({data:this.$push(n,t).filter(a),sampled:!1})}function An(n,t){return Yn({data:this.$push(n,t).filter(a),sampled:!0})}function Nn(n,t){return lt(n)?a(t)?n.length*t:A(this.$push(n,t).filter(a),function(n,t){return n+t},0):0}function En(){return A(arguments,function(n,t){return L(n,O(Bt[t]))},[])}function Sn(t,r){var e=r(Hn());n(x(Bt,t),"Invalid operator class "+t);var u=Bt[t];w(e,function(r,e){n(/^\$\w+$/.test(e),"Invalid operator name "+e),n(!x(u,e),e+" already exists for '"+t+"' operators")});var o={};switch(t){case ct:w(e,function(t,r){o[r]=function(t,e){return function(u,o){return t=t.bind(e),{test:function(e){var a=qn(e,u),s=t(u,a,o);return n(i(s),r+" must return a boolean"),s}}}}(t,e)});break;case ft:w(e,function(n,t){o[t]=function(n,t){return n=n.bind(t),function(t,r,e){var u=qn(t,e);return n(e,u,r)}}(n,e)});break;default:w(e,function(n,t){o[t]=function(n,t){return function(){for(var r=arguments.length,e=Array(r),u=0;u<r;u++)e[u]=arguments[u];return n.apply(t,e)}}(n,e)})}Object.assign(Bt[t],o)}function In(n){Object.assign(zt,n||{})}function Pn(){return zt.key}function Cn(n,t){return f(n)?n[t]:void 0}function Tn(t,r,e){if($(En(at),r))return Ft[r](t,e);if(s(e)){var u={};return w(e,function(r,i){if(u[i]=Tn(t,i,e[i]),$(En(at),i))return u=u[i],n(1===O(e).length,"Invalid $group expression '"+JSON.stringify(e)+"'"),!1}),u}}function qn(n,t,r){function e(n,t){for(var r=n,i=0;i<t.length;i++){var o=t[i],a=null===o.match(/^\d+$/);if(a&<(r)){if(0===i&&u>0)break;u+=1,t=t.slice(i),r=A(r,function(n,r){var u=e(r,t);return void 0!==u&&n.push(u),n},[]);break}if(r=Cn(r,o),void 0===r)break}return r}var u=0;return r=r||{meta:!1},n=e(n,t.split(".")),r.meta?{result:n,depth:u}:n}function Rn(t,r){var e=r.split("."),u=e[0],i=1===e.length||e.slice(1).join("."),o=null!==u.match(/^\d+$/),a=e.length>1,s=void 0,f=void 0;try{lt(t)?o?(s=Cn(t,u),a&&(s=Rn(s,i)),n(!d(s)),s=[s]):(s=[],w(t,function(n){f=Rn(n,r),void 0!==f&&s.push(f)}),n(s.length>0)):(f=Cn(t,u),a&&(f=Rn(f,i)),n(void 0!==f),s={},s[u]=f)}catch(c){s=void 0}return s}function Dn(n,t,r){var e=arguments.length>3&&void 0!==arguments[3]&&arguments[3],u=t.split("."),i=u[0],o=1===u.length||u.slice(1).join(".");if(1===u.length)r(n,i);else if(lt(n)&&!/^\d+$/.test(i))w(n,function(n){Dn(n,t,r,e)});else{if(e===!0){var a=x(n,i);a&&!h(n[i])||(n[i]={})}Dn(n[i],o,r,e)}}function Ln(n,t,r){Dn(n,t,function(n,t){s(n[t])&&s(r)?n[t]=Object.assign(n[t],r):n[t]=r},!0)}function Un(n,t){Dn(n,t,function(n,t){lt(n)&&/^\d+$/.test(t)?n.splice(parseInt(t),1):s(n)&&delete n[t]})}function Fn(n){if($(it,u(n)))return l(n)?{$regex:n}:{$eq:n};if(f(n)){var t=O(n),r=0===N(En(ct),t).length;if(r)return{$eq:n};if($(t,"$regex")){var e=n.$regex,i=n.$options||"",a="";o(e)&&(a+=e.ignoreCase||i.indexOf("i")>=0?"i":"",a+=e.multiline||i.indexOf("m")>=0?"m":"",a+=e.global||i.indexOf("g")>=0?"g":"",e=new RegExp(e,a)),n.$regex=e,delete n.$options}}return n}function Bn(t,r){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(i.root=i.root||t,$(En(ot),e))return Ut[e](t,r,i);if($(En(at),e))return t=Bn(t,r,null,i),n(lt(t),e+" expression must resolve to an array"),Ft[e](t,null,i);if(o(r)&&r.length>0&&"$"===r[0]){if($(Ht,r))return Yt[r](t,null,i);if($(Vt,r))return r;var a=Ht.filter(function(n){return 0===r.indexOf(n+".")});return 1===a.length&&(a=a[0],"$$ROOT"===a&&(t=i.root),r=r.substr(a.length)),qn(t,r.slice(1))}switch(u(r)){case rt:return r.map(function(n){return Bn(t,n)});case et:var s={};return w(r,function(e,u){if(s[u]=Bn(t,e,u,i),$(En(ot,at),u))return n(1===O(r).length,"Invalid aggregation expression '"+JSON.stringify(r)+"'"),s=s[u],!1}),s;default:return r}}function zn(t,r){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return h(e)?r<0?(r=Math.max(0,t.length+r),e=t.length-r+1):(e=r,r=0):(r<0&&(r=Math.max(0,t.length+r)),n(e>0,"Invalid argument value for $slice operator. Limit must be a positive number"),e+=r),t.slice(r,e)}function Yn(n){var t=A(n.data,function(n,t){return n+t},0),r=n.data.length||1,e=n.sampled&&1||0,u=t/r;return Math.sqrt(A(n.data,function(n,t){return n+Math.pow(t-u,2)},0)/(r-e))}function Jn(n,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.root=r.root||n;var e=Bn(n,t,null,r);return $(Vt,e)?Jt[e](n,t,r):e}function Hn(){return{assert:n,computeValue:Bn,clone:r,cloneDeep:t,each:w,err:k,getHash:q,getType:e,has:x,idKey:Pn,includes:$.bind(null),isArray:lt,isBoolean:i,isDate:c,isEmpty:b,isEqual:P,isFunction:v,isNil:h,isNull:p,isNumber:a,isObject:s,isRegExp:l,isString:o,isUndefined:d,keys:O,ops:En,resolve:qn,resolveObj:Rn,reduce:A}}var Vn="null",Kn="undefined",Qn="bool",Wn="boolean",Gn="number",Xn="string",Zn="date",nt="regex",tt="regexp",rt="array",et="object",ut="function",it=[Vn,Kn,Wn,Gn,Xn,Zn,tt],ot="expression",at="group",st="pipeline",ft="projection",ct="query",lt=Array.isArray||function(n){return u(n)===rt},vt={$abs:function(n,t){var r=Bn(n,t);return null===r||void 0===r?null:Math.abs(r)},$add:function(t,r){var e=Bn(t,r),u=!1,i=A(e,function(t,r){return c(r)&&(n(!u,"'$add' can only have one date value"),u=!0,r=r.getTime()),t+=r},0);return u?new Date(i):i},$ceil:function(t,r){var e=Bn(t,r);return h(e)?null:(n(a(e)||isNaN(e),"$ceil must be a valid expression that resolves to a number."),Math.ceil(e))},$divide:function(n,t){var r=Bn(n,t);return r[0]/r[1]},$exp:function(t,r){var e=Bn(t,r);return h(e)?null:(n(a(e)||isNaN(e),"$exp must be a valid expression that resolves to a number."),Math.exp(e))},$floor:function(t,r){var e=Bn(t,r);return h(e)?null:(n(a(e)||isNaN(e),"$floor must be a valid expression that resolves to a number."),Math.floor(e))},$ln:function(t,r){var e=Bn(t,r);return h(e)?null:(n(a(e)||isNaN(e),"$ln must be a valid expression that resolves to a number."),Math.log(e))},$log:function(t,r){var e=Bn(t,r);return n(lt(e)&&2===e.length,"$log must be a valid expression that resolves to an array of 2 items"),e.some(h)?null:(n(e.some(isNaN)||e.every(a),"$log expression must resolve to array of 2 numbers"),Math.log10(e[0])/Math.log10(e[1]))},$log10:function(t,r){var e=Bn(t,r);return h(e)?null:(n(a(e)||isNaN(e),"$log10 must be a valid expression that resolves to a number."),Math.log10(e))},$mod:function(n,t){var r=Bn(n,t);return r[0]%r[1]},$multiply:function(n,t){var r=Bn(n,t);return A(r,function(n,t){return n*t},1)},$pow:function(t,r){var e=Bn(t,r);return n(lt(e)&&2===e.length&&e.every(a),"$pow expression must resolve to an array of 2 numbers"),n(!(0===e[0]&&e[1]<0),"$pow cannot raise 0 to a negative exponent"),Math.pow(e[0],e[1])},$sqrt:function(t,r){var e=Bn(t,r);return h(e)?null:(n(a(e)&&e>0||isNaN(e),"$sqrt expression must resolve to non-negative number."),Math.sqrt(e))},$subtract:function(n,t){var r=Bn(n,t);return r[0]-r[1]},$trunc:function(t,r){var e=Bn(t,r);return h(e)?null:(n(a(e)||isNaN(e),"$trunc expression must resolve to a number."),Math.trunc(e))}},ht={$arrayElemAt:function(t,r){var e=Bn(t,r);n(lt(e)&&2===e.length,"$arrayElemAt expression must resolve to an array of 2 elements"),n(lt(e[0]),"First operand to $arrayElemAt must resolve to an array"),n(a(e[1]),"Second operand to $arrayElemAt must resolve to an integer");var u=e[1];return e=e[0],u<0&&Math.abs(u)<=e.length?e[u+e.length]:u>=0&&u<e.length?e[u]:void 0},$arrayToObject:function(t,r){var e=Bn(t,r);return n(lt(e),"$arrayToObject expression must resolve to an array"),A(e,function(t,r){return lt(r)&&2==r.length?t[r[0]]=r[1]:(n(s(r)&&x(r,"k")&&x(r,"v"),"$arrayToObject expression is invalid."),t[r.k]=r.v),t},{})},$concatArrays:function(t,r){var e=Bn(t,r,null);return n(lt(e),"$concatArrays must resolve to an array"),e.some(h)?null:e.reduce(function(n,t){return L(n,t)},[])},$filter:function(t,r){var e=Bn(t,r.input),u=r.as,i=r.cond;return n(lt(e),"$filter 'input' expression must resolve to an array"),e.filter(function(n){var t={};return t["$"+u]=n,Bn(t,i)===!0})},$in:function(t,r){var e=Bn(t,r[0]),u=Bn(t,r[1]);return n(lt(u),"$in second argument must be an array"),$(u,e)},$indexOfArray:function(t,r){var e=Bn(t,r);if(h(e))return null;var u=e[0],i=e[1];if(h(u))return null;n(lt(u),"$indexOfArray expression must resolve to an array.");var o=e[2]||0,a=e[3];return h(a)&&(a=u.length),o>a?-1:(n(o>=0&&a>=0,"$indexOfArray expression is invalid"),(o>0||a<u.length)&&(u=u.slice(o,a)),u.findIndex(P.bind(null,i))+o)},$isArray:function(n,t){return lt(Bn(n,t[0]))},$map:function(t,r){var e=Bn(t,r.input);n(lt(e),"$map 'input' expression must resolve to an array");var u=r.as,i=r["in"],o="$"+u;return e.map(function(n){return t[o]=n,Bn(t,i)})},$objectToArray:function(t,r){var e=Bn(t,r);n(s(e),"$objectToArray expression must resolve to an object");var u=[];return w(e,function(n,t){return u.push({k:t,v:n})}),u},$range:function(n,t){for(var r=Bn(n,t),e=r[0],u=r[1],i=r[2]||1,o=[];e<u&&i>0||e>u&&i<0;)o.push(e),e+=i;return o},$reduce:function(t,r){var e=Bn(t,r.input),u=Bn(t,r.initialValue),i=r["in"];return h(e)?null:(n(lt(e),"$reduce 'input' expression must resolve to an array"),A(e,function(n,t){return Bn({$value:n,$this:t},i)},u))},$reverseArray:function(t,r){var e=Bn(t,r);if(h(e))return null;n(lt(e),"$reverseArray expression must resolve to an array");var u=[];return L(u,e),u.reverse(),u},$size:function(n,t){var r=Bn(n,t);return lt(r)?r.length:void 0},$slice:function(n,t){var r=Bn(n,t);return zn(r[0],r[1],r[2])},$zip:function(t,r){var e=Bn(t,r.inputs),u=r.useLongestLength||!1;n(lt(e),"'inputs' expression must resolve to an array"),n(i(u),"'useLongestLength' must be a boolean"),lt(r.defaults)&&n(m(u),"'useLongestLength' must be set to true to use 'defaults'");for(var o=0,a=0,s=e.length;a<s;a++){var f=e[a];if(h(f))return null;n(lt(f),"'inputs' expression values must resolve to an array or null"),o=u?Math.max(o,f.length):Math.min(o||f.length,f.length)}for(var c=[],l=r.defaults||[],v=function(n){var t=e.map(function(t,r){return h(t[n])?l[r]||null:t[n]});c.push(t)},p=0;p<o;p++)v(p);return c},$mergeObjects:function(n,t){var r=Bn(n,t);return lt(r)?A(r,function(n,t){return Object.assign(n,t)},{}):{}}},pt={$and:function(n,t){var r=Bn(n,t);return m(r)&&r.every(m)},$or:function(n,t){var r=Bn(n,t);return m(r)&&r.some(m)},$not:function(n,t){return!Bn(n,t[0])}},dt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},$t=function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")},gt=function(){function n(n,t){for(var r=0;r<t.length;r++){var e=t[r];e.enumerable=e.enumerable||!1,e.configurable=!0,"value"in e&&(e.writable=!0),Object.defineProperty(n,e.key,e)}}return function(t,r,e){return r&&n(t.prototype,r),e&&n(t,e),t}}();z.isIterator=Y;var mt=new Error,yt=1,bt=2,_t=3,xt=4,kt=function(){function n(t){if($t(this,n),this.__iteratees=[],this.__first=!1,this.__done=!1,this.__buf=[],J(t)&&(t={next:t}),Y(t))t=function(n){return function(){var t=n.next();if(t.done)throw mt;return t.value}}(t);else if(Array.isArray(t))t=function(n){var t=n.length,r=0;return function(){if(r<t)return n[r++];throw mt}}(t);else if(!J(t))throw new Error("Source is not iterable. Must be Array, Function or Object{next:Function}");this.next=V(t,this.__iteratees,this.__buf)}return gt(n,[{key:Symbol.iterator,value:function(){return this}},{key:"_validate",value:function(){if(this.__first)throw new Error("Cannot add iteratee/transform after `first()`")}},{key:"_push",value:function(n){return this._validate(),this.__iteratees.push(n),this}},{key:"map",value:function(n){return this._push({type:yt,func:n})}},{key:"filter",value:function(n){return this._push({type:bt,func:n})}},{key:"take",value:function(n){return n>0?this._push({type:_t,func:n}):this}},{key:"drop",value:function(n){return n>0?this._push({type:xt,func:n}):this}},{key:"transform",value:function(n){this._validate();var t=this,r=void 0;return z(function(){return r||(r=z(n(t.value()))),r.next()})}},{key:"first",value:function(){return this.take(1),this.__first=!0,this}},{key:"value",value:function(){return this.__done||(this.__done=this.next(this.__buf).done),this.__first?this.__buf[0]:this.__buf}},{key:"each",value:function(n){for(;;){var t=this.next();if(t.done)break;if(n(t.value)===!1)return!1}return!0}},{key:"reduce",value:function(n,t){var r=this.next(),e=0;for(void 0!==t||r.done||(t=r.value,r=this.next(),e++);!r.done;)t=n(t,r.value,e++),r=this.next();return t}},{key:"size",value:function(){return this.reduce(function(n,t){return++n},0)}}]),n}(),Ot={$:function(n,t,r){k("$ not implemented")},$elemMatch:function(t,r,e){var u=qn(t,e),i=new At(r);n(lt(u),"$elemMatch: invalid argument");for(var o=0;o<u.length;o++)if(i.test(u[o]))return[u[o]]},$slice:function(t,r,e){var u=qn(t,e);return lt(u)?lt(r)?zn(u,r[0],r[1]):(n(a(r),"$slice: invalid arguments for projection"),zn(u,r)):u}},wt={$addFields:B,$bucket:K,$bucketAuto:Q,$count:W,$facet:G,$group:X,$limit:Z,$lookup:nn,$match:tn,$out:rn,$project:en,$redact:un,$replaceRoot:on,$sample:an,$skip:sn,$sort:fn,$sortByCount:cn,$unwind:ln},jt=function(){function t(n){$t(this,t),this.__operators=n}return gt(t,[{key:"stream",value:function(t,r){return t=z(t),b(this.__operators)||w(this.__operators,function(e){var u=O(e);n(1===u.length&&$(En(st),u[0]),"Invalid aggregation operator "+u),u=u[0],t=r&&r instanceof At?wt[u].call(r,t,e[u]):wt[u](t,e[u])}),t}},{key:"run",value:function(n,t){return this.stream(n,t).value()}}]),t}(),Mt=function(){function n(t,r,e){$t(this,n),this.__filterFn=r.test.bind(r),this.__query=r,this.__source=t,this.__projection=e||r.__projection,this.__operators=[],this.__result=null,this.__stack=[]}return gt(n,[{key:"_fetch",value:function(){return this.__result?this.__result:(s(this.__projection)&&this.__operators.push({$project:this.__projection}),this.__result=z(this.__source).filter(this.__filterFn),this.__operators.length>0&&(this.__result=new jt(this.__operators).stream(this.__result,this.__query)),this.__result)}},{key:"all",value:function(){return this._fetch().value()}},{key:"count",value:function(){return this.all().length}},{key:"skip",value:function(n){return this.__operators.push({$skip:n}),this}},{key:"limit",value:function(n){return this.__operators.push({$limit:n}),this}},{key:"sort",value:function(n){return this.__operators.push({$sort:n}),this}},{key:"next",value:function(){if(this.__stack){if(this.__stack.length>0)return this.__stack.pop();var n=this._fetch().next();return n.done?void(this.__stack=null):n.value}}},{key:"hasNext",value:function(){if(!this.__stack)return!1;if(this.__stack.length>0)return!0;var n=this._fetch().next();return n.done?this.__stack=null:this.__stack.push(n.value),!!this.__stack}},{key:"map",value:function(n){return this._fetch().map(n).value()}},{key:"forEach",value:function(n){this._fetch().each(n)}},{key:Symbol.iterator,value:function(){return this._fetch()}}]),n}(),At=function(){function t(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};$t(this,t),this.__criteria=n,this.__projection=r,this.__compiled=[],this._compile()}return gt(t,[{key:"_compile",value:function(){var t=this;if(!b(this.__criteria)){n(s(this.__criteria),"Criteria must be of type Object");var r=void 0;w(this.__criteria,function(n,e){"$where"===e?r={field:e,expr:n}:"$expr"===e?t._processOperator(e,e,n):$(["$and","$or","$nor"],e)?t._processOperator(e,e,n):(n=Fn(n),w(n,function(n,r){t._processOperator(e,r,n)})),s(r)&&t._processOperator(r.field,r.field,r.expr)})}}},{key:"_processOperator",value:function(t,r,e){n($(En(ct),r),"Invalid query operator '"+r+"' detected"),this.__compiled.push(Et[r](t,e))}},{key:"test",value:function(n){for(var t=0,r=this.__compiled.length;t<r;t++)if(!this.__compiled[t].test(n))return!1;return!0}},{key:"find",value:function(n,t){return new Mt(n,this,t)}},{key:"remove",value:function(n){var t=this;return A(n,function(n,r){return t.test(r)||n.push(r),n},[])}}]),t}(),Nt={$eq:function(n,t){if(P(n,t))return!0;if(h(n)&&h(t))return!0;if(lt(n)){var r=P.bind(null,t);return n.some(r)||S(n,1).some(r)}return!1},$ne:function(n,t){return!this.$eq(n,t)},$in:function(n,t){return h(n)?t.some(p):N(_(n),t).length>0},$nin:function(n,t){return!this.$in(n,t)},$lt:function(n,t){return!d(_(n).find(function(n){return dn(n,t)&&n<t}))},$lte:function(n,t){return!d(_(n).find(function(n){return dn(n,t)&&n<=t}))},$gt:function(n,t){return!d(_(n).find(function(n){return dn(n,t)&&n>t}))},$gte:function(n,t){return!d(_(n).find(function(n){return dn(n,t)&&n>=t}))},$mod:function(n,t){return!d(_(n).find(function(n){return a(n)&<(t)&&2===t.length&&n%t[0]===t[1]}))},$regex:function(n,t){n=_(n);var r=function(n){return o(n)&&!!n.match(t)};return n.some(r)||S(n,1).some(r)},$exists:function(n,t){return(t===!1||0===t)&&h(n)||(t===!0||1===t)&&!h(n)},$all:function(n,t){var r=!1;if(lt(n)&<(t))for(var e=0,u=t.length;e<u;e++){if(!s(t[e])||!$(O(t[e]),"$elemMatch"))return N(t,n).length===u;r=r||this.$elemMatch(n,t[e].$elemMatch)}return r},$size:function(n,t){return lt(n)&&a(t)&&n.length===t},$elemMatch:function(n,t){if(lt(n)&&!b(n))for(var r=new At(t),e=0,u=n.length;e<u;e++)if(r.test(n[e]))return!0;return!1},$type:function(n,t){switch(t){case 1:case"double":return a(n)&&(n+"").indexOf(".")!==-1;case 2:case Xn:return o(n);case 3:case et:return s(n);case 4:case rt:return lt(n);case 6:case Kn:return h(n);case 8:case Qn:return i(n);case 9:case Zn:return c(n);case 10:case Vn:return p(n);case 11:case nt:return l(n);case 16:case"int":return a(n)&&n<=2147483647&&(n+"").indexOf(".")===-1;case 18:case"long":return a(n)&&n>2147483647&&n<=0x8000000000000000&&(n+"").indexOf(".")===-1;case 19:case"decimal":return a(n);default:return!1}}},Et={$and:function(t,r){n(lt(r),"Invalid expression: $and expects value to be an Array");var e=[];return w(r,function(n){return e.push(new At(n))}),{test:function(n){for(var t=0;t<e.length;t++)if(!e[t].test(n))return!1;return!0}}},$or:function(t,r){n(lt(r),"Invalid expression. $or expects value to be an Array");var e=[];return w(r,function(n){return e.push(new At(n))}),{test:function(n){for(var t=0;t<e.length;t++)if(e[t].test(n))return!0;return!1}}},$nor:function(t,r){n(lt(r),"Invalid expression. $nor expects value to be an Array");var e=this.$or("$or",r);return{test:function(n){return!e.test(n)}}},$not:function(n,t){var r={};r[n]=Fn(t);var e=new At(r);return{test:function(n){return!e.test(n)}}},$where:function(n,t){return v(t)||(t=new Function("return "+t+";")),{test:function(n){return t.call(n)===!0}}},$expr:function(n,t){return{test:function(n){return Bn(n,t)}}}};w(Nt,function(n,t){Et[t]=function(n,t){return n=n.bind(t),function(t,r){return{test:function(e){var u=qn(e,t,{meta:!0});return u=I(u.result,u.depth),n(u,r)}}}}(n,Nt)});var St={$cmp:function(n,t){var r=Bn(n,t);return r[0]>r[1]?1:r[0]<r[1]?-1:0}};w(["$eq","$ne","$gt","$gte","$lt","$lte","$nin"],function(n){St[n]=function(t,r){var e=Bn(t,r);return Nt[n](e[0],e[1])}});var It={$cond:function(t,r){var e=void 0,u=void 0,i=void 0,o="$cond: invalid arguments";lt(r)?(n(3===r.length,o),e=r[0],u=r[1],i=r[2]):(n(s(r),o),e=r["if"],u=r.then,i=r["else"]);var a=Bn(t,e);return a?Bn(t,u):Bn(t,i)},$switch:function(t,r){var e="Invalid arguments for $switch operator";n(r.branches,e);var u=r.branches.find(function(r){return n(r["case"]&&r.then,e),Bn(t,r["case"])});return u?Bn(t,u.then):(n(r["default"],e),Bn(t,r["default"]))},$ifNull:function(t,r){n(lt(r)&&2===r.length,"Invalid arguments for $ifNull operator");var e=Bn(t,r);return h(e[0])?e[1]:e[0]}},Pt={"%Y":["$year",4],"%m":["$month",2],"%d":["$dayOfMonth",2],"%H":["$hour",2],"%M":["$minute",2],"%S":["$second",2],"%L":["$millisecond",3],"%j":["$dayOfYear",3],"%w":["$dayOfWeek",1],"%U":["$week",2],"%%":"%"},Ct={$dayOfYear:function(n,t){var r=Bn(n,t),e=new Date(r.getFullYear(),0,0),u=r-e,i=864e5;return Math.round(u/i)},$dayOfMonth:function(n,t){var r=Bn(n,t);return r.getDate()},$dayOfWeek:function(n,t){var r=Bn(n,t);return r.getDay()+1},$year:function(n,t){var r=Bn(n,t);return r.getFullYear()},$month:function(n,t){var r=Bn(n,t);return r.getMonth()+1},$week:function(n,t){var r=Bn(n,t);r=new Date((+r)),r.setHours(0,0,0),r.setDate(r.getDate()+4-(r.getDay()||7));var e=new Date(r.getFullYear(),0,1);return Math.floor(((r-e)/864e5+1)/7)},$hour:function(n,t){var r=Bn(n,t);return r.getUTCHours()},$minute:function(n,t){var r=Bn(n,t);return r.getMinutes()},$second:function(n,t){var r=Bn(n,t);return r.getSeconds()},$millisecond:function(n,t){var r=Bn(n,t);return r.getMilliseconds()},$dateToString:function(n,t){for(var r=t.format,e=Bn(n,t.date),u=r.match(/(%%|%Y|%m|%d|%H|%M|%S|%L|%j|%w|%U)/g),i=0,o=u.length;i<o;i++){var a=Pt[u[i]],s=a;if(lt(a)){var f=this[a[0]].bind(this),c=a[1];s=$n(f(n,e),c)}r=r.replace(u[i],s)}return r}},Tt={$literal:function(n,t){return t}},qt={$setEquals:function(n,t){var r=Bn(n,t),e=C(r[0]),u=C(r[1]);return e.length===u.length&&e.length===N(e,u).length},$setIntersection:function(n,t){var r=Bn(n,t);return N(r[0],r[1])},$setDifference:function(n,t){ | ||
var r=Bn(n,t);return r[0].filter(g.bind(null,r[1]))},$setUnion:function(n,t){var r=Bn(n,t);return E(r[0],r[1])},$setIsSubset:function(n,t){var r=Bn(n,t);return N(r[0],r[1]).length===r[0].length},$anyElementTrue:function(n,t){var r=Bn(n,t)[0];return r.some(m)},$allElementsTrue:function(n,t){var r=Bn(n,t)[0];return r.every(m)}},Rt={$concat:function(n,t){var r=Bn(n,t);return[null,void 0].some($.bind(null,r))?null:r.join("")},$indexOfBytes:function(t,r){var e=Bn(t,r),u="$indexOfBytes: expression resolves to invalid arguments";if(h(e[0]))return null;n(o(e[0])&&o(e[1]),u);var i=e[0],s=e[1],f=e[2],c=e[3],l=h(f)||a(f)&&f>=0&&Math.round(f)===f;if(l=l&&(h(c)||a(c)&&c>=0&&Math.round(c)===c),n(l,u),f=f||0,c=c||i.length,f>c)return-1;var v=i.substring(f,c).indexOf(s);return v>-1?v+f:v},$split:function(t,r){var e=Bn(t,r);return h(e[0])?null:(n(e.every(o),"$split: invalid argument"),e[0].split(e[1]))},$strLenBytes:function(n,t){return~-encodeURI(Bn(n,t)).split(/%..|./).length},$strLenCP:function(n,t){return Bn(n,t).length},$strcasecmp:function(t,r){var e=Bn(t,r),u=e[0],i=e[1];return P(u,i)||e.every(h)?0:(n(e.every(o),"$strcasecmp: invalid argument"),u=u.toUpperCase(),i=i.toUpperCase(),u>i&&1||u<i&&-1||0)},$substrBytes:function(t,r){var e=Bn(t,r),u=e[0],i=e[1],s=e[2];n(o(u)&&a(i)&&i>=0&&a(s)&&s>=0,"$substrBytes: invalid arguments");for(var f=mn(u),c=[],l=0,v=0;v<f.length;v++)c.push(l),l+=f[v].length;var h=c.indexOf(i),p=c.indexOf(i+s);return n(h>-1&&p>-1,"$substrBytes: Invalid range, start or end index is a UTF-8 continuation byte."),u.substring(h,p)},$substr:function(n,t){var r=Bn(n,t),e=r[0],u=r[1],i=r[2];return o(e)?u<0?"":i<0?e.substr(u):e.substr(u,i):""},$substrCP:function(n,t){return this.$substr(n,t)},$toLower:function(n,t){var r=Bn(n,t);return b(r)?"":r.toLowerCase()},$toUpper:function(n,t){var r=Bn(n,t);return b(r)?"":r.toUpperCase()}},Dt=[192,224,240],Lt={$let:function(n,t){var r=t.vars,e=t["in"],u=O(r);return w(u,function(t){var e=Bn(n,r[t]),u="$"+t;n[u]=e}),Bn(n,e)}},Ut=Object.assign({},vt,ht,pt,St,It,Ct,Tt,qt,Rt,Lt),Ft={$addToSet:yn,$avg:bn,$first:_n,$last:xn,$mergeObjects:On,$max:kn,$min:wn,$push:jn,$stdDevPop:Mn,$stdDevSamp:An,$sum:Nn},Bt={expression:Ut,group:Ft,pipeline:wt,projection:Ot,query:Et},zt={key:"_id"},Yt={$$ROOT:function(n,t,r){return r.root},$$CURRENT:function(n,t,r){return n},$$REMOVE:function(n,t,r){}},Jt={$$KEEP:function(n){return n},$$PRUNE:function(){},$$DESCEND:function(n,t,r){if(!x(t,"$cond"))return n;var e=void 0;return w(n,function(u,i){f(u)&&(lt(u)?(e=[],w(u,function(n){s(n)&&(n=Jn(n,t,r)),h(n)||e.push(n)})):e=Jn(u,t,r),h(e)?delete n[i]:n[i]=e)}),n}},Ht=O(Yt),Vt=O(Jt),Kt={query:function(n,t){return new At(n).find(this.toJSON(),t)},aggregate:function(n){return new jt(n).run(this.toJSON())}},Qt="2.2.4",Wt={_internal:Hn,Aggregator:jt,CollectionMixin:Kt,Cursor:Mt,Lazy:z,OP_EXPRESSION:ot,OP_GROUP:at,OP_PIPELINE:st,OP_PROJECTION:ft,OP_QUERY:ct,Query:At,VERSION:Qt,addOperators:Sn,aggregate:vn,find:hn,remove:pn,setup:In};return Wt}); | ||
//# sourceMappingURL=dist/mingo.min.map |
@@ -10,3 +10,3 @@ import { OP_EXPRESSION, OP_GROUP, OP_PIPELINE, OP_PROJECTION, OP_QUERY } from './lib/constants' | ||
const VERSION = '2.2.3' | ||
const VERSION = '2.2.4' | ||
@@ -13,0 +13,0 @@ // mingo! |
import { OP_PIPELINE } from './constants' | ||
import { assert, each, err, inArray, isArray, isEmpty, keys } from './util' | ||
import { assert, each, inArray, isArray, isEmpty, keys } from './util' | ||
import { Query } from './query' | ||
@@ -4,0 +4,0 @@ import { ops } from './operators/index.js' |
@@ -1,4 +0,3 @@ | ||
import { assert, each, has, isArray, isObject } from './util' | ||
import { isObject } from './util' | ||
import { Aggregator } from './aggregator' | ||
import { groupOperators } from './operators/group/index.js' | ||
import { Lazy } from './lazy' | ||
@@ -5,0 +4,0 @@ |
import { | ||
T_ARRAY, | ||
T_OBJECT, | ||
JS_SIMPLE_TYPES, | ||
OP_EXPRESSION, OP_GROUP, OP_QUERY | ||
} from './constants' | ||
import { | ||
assert, | ||
@@ -13,3 +7,2 @@ clone, | ||
err, | ||
flatten, | ||
getHash, | ||
@@ -36,6 +29,3 @@ getType, | ||
keys, | ||
notInArray, | ||
reduce, | ||
truthy, | ||
unwrap | ||
reduce | ||
} from './util' | ||
@@ -45,2 +35,3 @@ import { ops } from './operators/index' | ||
import { expressionOperators } from './operators/expression/index' | ||
import { T_ARRAY, T_OBJECT, JS_SIMPLE_TYPES, OP_EXPRESSION, OP_GROUP, OP_QUERY } from './constants' | ||
@@ -75,2 +66,5 @@ | ||
return obj | ||
}, | ||
'$$REMOVE' (obj, expr, opt) { | ||
return undefined | ||
} | ||
@@ -311,3 +305,7 @@ } | ||
traverse(obj, selector, (item, key) => { | ||
item[key] = value | ||
if (isObject(item[key]) && isObject(value)) { | ||
item[key] = Object.assign(item[key], value) | ||
} else { | ||
item[key] = value | ||
} | ||
}, true) | ||
@@ -314,0 +312,0 @@ } |
@@ -1,2 +0,2 @@ | ||
import { assert, err, isDate, isNil, isNumber, isArray, reduce } from '../../util.js' | ||
import { assert, isDate, isNil, isNumber, isArray, reduce } from '../../util.js' | ||
import { computeValue } from '../../internal.js' | ||
@@ -3,0 +3,0 @@ |
import { | ||
assert, | ||
each, | ||
err, | ||
has, | ||
@@ -14,4 +13,2 @@ into, | ||
isNil, | ||
isUndefined, | ||
keys, | ||
reduce, | ||
@@ -18,0 +15,0 @@ truthy |
@@ -5,4 +5,4 @@ /** | ||
import { assert, err, isArray, isNil, isObject } from '../../util.js' | ||
import { computeValue, resolve } from '../../internal.js' | ||
import { assert, isArray, isNil, isObject } from '../../util.js' | ||
import { computeValue } from '../../internal.js' | ||
@@ -9,0 +9,0 @@ export const conditionalOperators = { |
import { isDate, isArray } from '../../util.js' | ||
import { isArray } from '../../util.js' | ||
import { computeValue } from '../../internal.js' | ||
@@ -4,0 +4,0 @@ |
@@ -1,3 +0,3 @@ | ||
import { union, unique, intersection, notInArray, inArray, truthy } from '../../util.js' | ||
import { computeValue, resolve } from '../../internal.js' | ||
import { union, unique, intersection, notInArray, truthy } from '../../util.js' | ||
import { computeValue } from '../../internal.js' | ||
@@ -4,0 +4,0 @@ export const setOperators = { |
@@ -1,3 +0,3 @@ | ||
import { assert, each, err, getType, isEqual, isString, isNil, isNumber, isEmpty, inArray } from '../../util.js' | ||
import { computeValue, resolve } from '../../internal.js' | ||
import { assert, isEqual, isString, isNil, isNumber, isEmpty, inArray } from '../../util.js' | ||
import { computeValue } from '../../internal.js' | ||
@@ -4,0 +4,0 @@ export const stringOperators = { |
@@ -5,3 +5,3 @@ /** | ||
import { assert, each, err, isString, isNil, isUndefined, isEmpty, isArray, keys } from '../../util.js' | ||
import { each, keys } from '../../util.js' | ||
import { computeValue } from '../../internal.js' | ||
@@ -8,0 +8,0 @@ |
@@ -1,2 +0,2 @@ | ||
import { isNil, reduce } from '../../util' | ||
import { reduce } from '../../util' | ||
import { computeValue } from '../../internal' | ||
@@ -3,0 +3,0 @@ |
@@ -1,5 +0,4 @@ | ||
import { OP_EXPRESSION, OP_GROUP, OP_PIPELINE, OP_PROJECTION, OP_QUERY } from './../constants' | ||
import { assert, each, err, has, into, isBoolean, keys, reduce } from './../util' | ||
import { _internal, computeValue, idKey, resolve } from './../internal' | ||
import { Query } from './../query.js' | ||
import { OP_PROJECTION, OP_QUERY } from './../constants' | ||
import { assert, each, has, into, isBoolean, keys, reduce } from './../util' | ||
import { _internal, resolve } from './../internal' | ||
import { expressionOperators } from './expression/index.js' | ||
@@ -6,0 +5,0 @@ import { groupOperators } from './group/index.js' |
import { cloneDeep, each, keys } from '../../util' | ||
import { computeValue, resolveObj, setValue } from '../../internal' | ||
import { computeValue, setValue } from '../../internal' | ||
@@ -4,0 +4,0 @@ /** |
@@ -6,6 +6,5 @@ import { | ||
getType, | ||
isNil, | ||
keys | ||
isNil | ||
} from '../../util' | ||
import { accumulate, computeValue, traverse } from '../../internal' | ||
import { accumulate, computeValue } from '../../internal' | ||
import { Lazy } from '../../lazy' | ||
@@ -12,0 +11,0 @@ |
import { | ||
assert, | ||
each, | ||
findInsertIndex, | ||
getType, | ||
has, | ||
into, | ||
isNil, | ||
keys, | ||
memoize, | ||
sortBy | ||
} from '../../util' | ||
import { accumulate, computeValue, idKey, traverse } from '../../internal' | ||
import { Lazy } from '../../lazy' | ||
import { accumulate, computeValue, idKey } from '../../internal' | ||
@@ -16,0 +11,0 @@ |
@@ -1,2 +0,2 @@ | ||
import { assert, isString, memoize } from '../../util' | ||
import { assert, isString } from '../../util' | ||
import { Lazy } from '../../lazy' | ||
@@ -3,0 +3,0 @@ |
@@ -1,4 +0,3 @@ | ||
import { objectMap, clone } from '../../util' | ||
import { objectMap } from '../../util' | ||
import { aggregate } from '../../aggregator' | ||
import { Lazy } from '../../lazy' | ||
@@ -5,0 +4,0 @@ /** |
@@ -7,3 +7,2 @@ import { | ||
import { accumulate, computeValue, idKey } from '../../internal' | ||
import { Lazy } from '../../lazy' | ||
@@ -10,0 +9,0 @@ /** |
@@ -6,3 +6,2 @@ import { | ||
getHash, | ||
into, | ||
isArray, | ||
@@ -9,0 +8,0 @@ isString, |
@@ -1,2 +0,2 @@ | ||
import { assert, into, isArray } from '../../util' | ||
import { assert, isArray } from '../../util' | ||
@@ -3,0 +3,0 @@ /** |
@@ -8,3 +8,2 @@ import { | ||
isEmpty, | ||
isNil, | ||
isNumber, | ||
@@ -16,10 +15,5 @@ isObject, | ||
notInArray, | ||
mergeObjects, | ||
} from '../../util' | ||
import { | ||
computeValue, | ||
idKey, | ||
removeValue, | ||
resolveObj, | ||
setValue | ||
} from '../../internal' | ||
import { computeValue, idKey, removeValue, resolveObj, setValue } from '../../internal' | ||
import { projectionOperators } from '../projection.js' | ||
@@ -127,3 +121,3 @@ import { OP_PROJECTION } from '../../constants.js' | ||
if (!isUndefined(objPathValue)) { | ||
Object.assign(newObj, objPathValue) | ||
mergeObjects(newObj, objPathValue) | ||
} | ||
@@ -130,0 +124,0 @@ |
import { assert, isNumber } from '../../util' | ||
import { Lazy } from '../../lazy' | ||
@@ -4,0 +3,0 @@ /** |
import { each, groupBy, into, isEmpty, isObject, keys, sortBy } from '../../util' | ||
import { resolve } from '../../internal' | ||
import { Lazy } from '../../lazy' | ||
@@ -5,0 +4,0 @@ /** |
@@ -1,2 +0,2 @@ | ||
import { assert, clone, each, isArray, isEmpty, isString, cloneDeep } from '../../util' | ||
import { isArray, isEmpty, isString, cloneDeep } from '../../util' | ||
import { resolve, setValue, removeValue } from '../../internal' | ||
@@ -3,0 +3,0 @@ import { Lazy } from '../../lazy' |
import { | ||
assert, | ||
each, | ||
err, | ||
getHash, | ||
getType, | ||
has, | ||
inArray, | ||
intersection, | ||
isArray, | ||
isBoolean, | ||
isDate, | ||
isEmpty, | ||
isEqual, | ||
isFunction, | ||
isNil, | ||
isNull, | ||
isNumber, | ||
isObject, | ||
isObjectLike, | ||
isRegExp, | ||
isString, | ||
isUndefined, | ||
keys | ||
isNumber | ||
} from '../util' | ||
import { computeValue, resolve, resolveObj, traverse, idKey, slice } from '../internal.js' | ||
import { resolve, slice } from '../internal.js' | ||
import { Query } from '../query.js' | ||
@@ -28,0 +9,0 @@ |
@@ -7,10 +7,6 @@ /** | ||
T_BOOL, | ||
T_BOOLEAN, | ||
T_DATE, | ||
T_FUNCTION, | ||
T_NULL, | ||
T_NUMBER, | ||
T_OBJECT, | ||
T_REGEX, | ||
T_REGEXP, | ||
T_STRING, | ||
@@ -22,3 +18,2 @@ T_UNDEFINED | ||
assert, | ||
clone, | ||
each, | ||
@@ -25,0 +20,0 @@ flatten, |
@@ -5,22 +5,5 @@ import { OP_QUERY } from './constants' | ||
each, | ||
err, | ||
getType, | ||
has, | ||
inArray, | ||
intersection, | ||
isArray, | ||
isBoolean, | ||
isDate, | ||
isEmpty, | ||
isEqual, | ||
isFunction, | ||
isNil, | ||
isNull, | ||
isNumber, | ||
isObject, | ||
isObjectLike, | ||
isRegExp, | ||
isString, | ||
isUndefined, | ||
notInArray, | ||
reduce | ||
@@ -27,0 +10,0 @@ } from './util' |
@@ -7,3 +7,2 @@ /** | ||
T_ARRAY, | ||
T_BOOL, | ||
T_BOOLEAN, | ||
@@ -15,3 +14,2 @@ T_DATE, | ||
T_OBJECT, | ||
T_REGEX, | ||
T_REGEXP, | ||
@@ -21,2 +19,3 @@ T_STRING, | ||
} from './constants' | ||
import { setValue } from './internal'; | ||
@@ -103,3 +102,3 @@ export function assert (condition, message) { | ||
for (let k in obj) { | ||
if (has(obj, k)) { | ||
if (obj.hasOwnProperty(k)) { | ||
if (fn(obj[k], k, obj) === false) break | ||
@@ -122,5 +121,7 @@ } | ||
let o = {} | ||
each(obj, (v, k) => { | ||
o[k] = fn(v, k) | ||
}, obj) | ||
let objKeys = keys(obj) | ||
for (let i = 0; i < objKeys.length; i++) { | ||
let k = objKeys[i] | ||
o[k] = fn(obj[k], k) | ||
} | ||
return o | ||
@@ -130,2 +131,19 @@ } | ||
/** | ||
* Deep merge objects | ||
* @param {...any} args Objects to merges | ||
*/ | ||
export function mergeObjects(...args) { | ||
let o = args[0] | ||
for(var i = 1; i < args.length; i++) { | ||
let obj = args[i] | ||
let objKeys = keys(obj) | ||
for (let j = 0; j < objKeys.length; j++) { | ||
let k = objKeys[j] | ||
setValue(o, k, obj[k]) | ||
} | ||
} | ||
return o | ||
} | ||
/** | ||
* Reduce any array-like object | ||
@@ -132,0 +150,0 @@ * @param collection |
{ | ||
"name": "mingo", | ||
"version": "2.2.3", | ||
"version": "2.2.4", | ||
"description": "JavaScript implementation of MongoDB query language", | ||
@@ -5,0 +5,0 @@ "main": "dist/mingo.js", |
@@ -8,2 +8,4 @@ # mingo | ||
[![Codecov](https://img.shields.io/codecov/c/github/kofrasa/mingo.svg)](https://codecov.io/gh/kofrasa/mingo) | ||
[![Code Quality: Javascript](https://img.shields.io/lgtm/grade/javascript/g/kofrasa/mingo.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/kofrasa/mingo/context:javascript) | ||
[![Total Alerts](https://img.shields.io/lgtm/alerts/g/kofrasa/mingo.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/kofrasa/mingo/alerts) | ||
@@ -38,3 +40,3 @@ ## Install | ||
- Support for aggregaion variables | ||
- [`$$ROOT`,`$$CURRENT`,`$$DESCEND`,`$$PRUNE`,`$$KEEP`](https://docs.mongodb.com/manual/reference/aggregation-variables/) | ||
- [`$$ROOT`,`$$CURRENT`,`$$DESCEND`,`$$PRUNE`,`$$KEEP`,`$$REMOVE`](https://docs.mongodb.com/manual/reference/aggregation-variables/) | ||
- ES6 module compatible | ||
@@ -41,0 +43,0 @@ - Support integrating with custom collections via mixin |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
444279
11860
169