New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

mingo

Package Overview
Dependencies
Maintainers
1
Versions
143
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mingo - npm Package Compare versions

Comparing version 1.3.0 to 1.3.1

lib/polyfill.js

3

CHANGELOG.md
Changelog
=========
## 1.3.1 / 2017-07-24
- Replaced core-js because it bloats compiled library by 10K i.e. ~24%
- Fix #55

@@ -4,0 +7,0 @@ ## 1.3.0 / 2017-07-23

6

dist/mingo.min.js

@@ -1,7 +0,7 @@

// mingo.js 1.3.0
// mingo.js 1.3.1
// Copyright (c) 2017 Francis Asante
// https://github.com/kofrasa/mingo
// 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)&&O(t)}function t(n){switch(r(n)){case"array":return n.map(t);case"object":return q(n,t);default:return n}}function e(n){return null===n?"Null":void 0===n?"Undefined":n.constructor.name}function r(n){return e(n).toLowerCase()}function u(n){return"boolean"===r(n)}function i(n){return"string"===r(n)}function o(n){return"number"===r(n)}function a(n){return"array"===r(n)}function l(n){return"object"===r(n)}function s(n){return n===Object(n)}function c(n){return"date"===r(n)}function f(n){return"regexp"===r(n)}function v(n){return"function"===r(n)}function h(n){return d(n)||p(n)}function d(n){return"null"===r(n)}function p(n){return"undefined"===r(n)}function g(n,t){return n.includes(t)}function $(n,t){return!n.includes(t)}function m(n){return!!n}function y(n){return!n}function b(n){return h(n)||a(n)&&0===n.length||l(n)&&0===k(n).length||!n}function _(n){return a(n)?n:[n]}function x(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function O(n){throw new Error(n)}function k(n){return Object.keys(n)}function j(n,t){n.__mingo__=Object.assign(n.__mingo__||{},t)}function N(n,t){return x(n,"__mingo__")&&l(t)&&I(Object.assign({},n.__mingo__,t),n.__mingo__)}function w(n){x(n,"__mingo__")&&delete n.__mingo__}function M(t,e){var u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;n(t===Object(t),"Cannot iterate over object of type '"+r(t)+"'");var i=!1,o=function(){i=!0,O("halt")};if(a(t))for(var l=0,s=t.length;l<s;l++)try{e.call(u,t[l],l,t,o)}catch(t){return void n(i,t.message)}else for(var c in t)if(x(t,c))try{e.call(u,t[c],c,t,o)}catch(t){return void n(i,t.message)}}function q(n,t){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(a(n))return n.map(t,e);if(l(n)){for(var r,u={},i=k(n),o=0,s=i.length;o<s;o++)r=i[o],u[r]=t.call(e,n[r],r);return u}O("Input must be an Array or Object type")}function S(n,t){return n.filter(g.bind(null,t))}function A(n,t){var e=[];return U(e,n),U(e,t.filter($.bind(null,n))),e}function I(n,t){if(n===t)return!0;var e=r(n);if(e!==r(t)||"function"===e)return!1;if("number"===e&&isNaN(n)&&isNaN(t))return!0;if(g(["date","regexp"],e))return n.toString()===t.toString();if("array"===e){if(n.length===t.length&&0===n.length)return!0;if(n.length!==t.length)return!1;for(var u=0,i=n.length;u<i;u++)if(!I(n[u],t[u]))return!1}else{if(![n,t].every(l))return P(n)===P(t);var o=k(n),a=k(t);if(o.length!==a.length)return!1;if(o.sort(),a.sort(),!I(o,a))return!1;for(var s=0,c=o.length;s<c;s++){var f=o[s];if(!I(n[f],t[f]))return!1}}return!0}function E(n){var t={},e=[];return M(n,function(n){var r=P(n);x(t,r)||(e.push(n),t[r]=0)}),e}function C(n){return(Math.E+Math.random()).toString(36).slice(2,n+2)}function D(n){var t=r(n);switch(t){case"function":return C(7);case"boolean":case"number":case"regex":return n.toString();case"string":return JSON.stringify(n);case"date":return n.toISOString();case"null":case"undefined":return t;case"array":return"["+q(n,function(n){return""+D(n)})+"]";default:var u=l(n)?"":e(n)+"|",i=k(n);return i.sort(),u+"{"+q(i,function(t){return D(t)+":"+D(n[t])})+"}"}}function P(n){var t=0,e=void 0,r=void 0,u=void 0,i=D(n);if(0===i.length)return t;for(e=0,u=i.length;e<u;e++)r=i.charCodeAt(e),t=(t<<5)-t+r,t|=0;return t.toString()}function R(t,e){for(var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,u={},i=[],o=t.length,a=[],l=0;l<o;l++){var s=t[l],c=e.call(r,s,l);if(h(c))a.push(s);else{var f=P(s);x(u,f)||(u[f]=[c,l]),i.push(s)}}return i.sort(function(n,t){var e=u[P(n)],r=u[P(t)];return e[0]<r[0]?-1:e[0]>r[0]?1:e[1]<r[1]?-1:e[1]>r[1]?1:0}),U(a,i),n(a.length===t.length,"sortBy must retain collection length"),a}function T(t,e,r){var u={keys:[],groups:[]},i={};return M(t,function(n){var t=e.call(r,n),o=P(t),a=-1;p(i[o])&&(a=u.keys.length,i[o]=a,u.keys.push(t),u.groups.push([])),a=i[o],u.groups[a].push(n)}),n(u.keys.length===u.groups.length,"Cardinality must be equal for groups and keys"),u}function U(n,t){Array.prototype.push.apply(n,t)}function F(n,t){for(var e=0,r=n.length-1;e<=r;){var u=Math.round(e+(r-e)/2);if(t<n[u])r=u-1;else{if(!(t>n[u]))return u;e=u+1}}return e}function L(n){var t=this;return function(e){return function(){for(var r=arguments.length,u=Array(r),i=0;i<r;i++)u[i]=arguments[i];var o=P(u);return x(e,o)||(e[o]=n.apply(t,u)),e[o]}}({})}function B(t,e,r){if(g(H(Dn),e))return cn[e](t,r);if(l(r)){var u={};return M(r,function(e,i,o,a){u[i]=B(t,i,r[i]),g(H(Dn),i)&&(u=u[i],n(1===k(r).length,"Invalid $group expression '"+JSON.stringify(r)+"'"),a())}),u}}function Y(t,e){return n(a(e),"Aggregation pipeline must be an array"),new gn(e).run(t)}function J(n,t,e){return new bn(t).find(n,e)}function z(n,t){return new bn(t).remove(n)}function G(n,t){return new Array(Math.max(t-String(n).length+1,0)).join("0")+n}function H(n){return k(En[n])}function Q(t,e){var r=e(ln());n(x(En,t),"Could not identify operator class '"+t+"'");var i=En[t];M(r,function(e,r){n(/^\$\w+$/.test(r),"Invalid operator name '"+r+"'"),n(!x(i,r),"Operator "+r+" is already defined for "+t+" operators")});var o={};switch(t){case Tn:M(r,function(n,t){o[t]=function(n,e){return function(r,i){return{test:function(o){var a=W(o,r),l=n.call(e,r,a,i);return u(l)?l:l instanceof bn?l.test(o):void O("Invalid return type for '"+t+"'. Must return a Boolean or Query")}}}}(n,r)});break;case Rn:M(r,function(n,t){o[t]=function(n,t){return function(e,r,u){var i=W(e,u);return n.call(t,u,i,r)}}(n,r)});break;default:M(r,function(n,t){o[t]=function(n,t){return function(){for(var e=arguments.length,r=Array(e),u=0;u<e;u++)r[u]=arguments[u];return n.apply(t,r)}}(n,r)})}Object.assign(En[t],o)}function V(){return Un.key}function K(n,t){return n[t]}function W(n,t){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=t.split("."),u=n;n:for(var i=0;i<r.length;i++){var o=function(n){if(null===r[n].match(/^\d+$/)&&a(u)){if(!0===e&&0===n)return{v:u};u=u.map(function(t){return W(t,r[n],!0)}),j(u,{isMulti:!0}),1===u.length&&(u=u[0])}else u=K(u,r[n]),e=!1;if(h(u))return"break"}(i);switch(o){case"break":break n;default:if("object"===(void 0===o?"undefined":hn(o)))return o.v}}return u}function X(t,e){if(!h(t)){var r=e.split("."),u=r[0],i=1===r.length||r.slice(1).join("."),o=null!==u.match(/^\d+$/),l=r.length>1,s=void 0,c=void 0;try{a(t)?o?(s=K(t,u),l&&(s=X(s,i)),n(!p(s)),s=[s]):(s=[],M(t,function(n){c=X(n,e),h(c)||s.push(c)}),n(s.length>0)):(c=K(t,u),l&&(c=X(c,i)),n(!p(c)),s={},s[u]=c)}catch(n){s=void 0}return s}}function Z(n,t,e){var r=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)e(n,i);else if(a(n)&&!/^\d+$/.test(i))M(n,function(n){Z(n,t,e,r)});else{if(!0===r){var l=x(n,i);l&&!h(n[i])||(n[i]={})}Z(n[i],o,e,r)}}function nn(n,t,e){Z(n,t,function(n,t){n[t]=e},!0)}function tn(n,t){Z(n,t,function(n,t){a(n)&&/^\d+$/.test(t)?n.splice(parseInt(t),1):l(n)&&delete n[t]})}function en(n){if(g(sn,r(n)))return f(n)?{$regex:n}:{$eq:n};if(s(n)){var t=k(n);if(0===S(H(Tn),t).length)return{$eq:n};if(g(t,"$regex")){var e=n.$regex,u=n.$options||"",o="";i(e)&&(o+=e.ignoreCase||u.indexOf("i")>=0?"i":"",o+=e.multiline||u.indexOf("m")>=0?"m":"",o+=e.global||u.indexOf("g")>=0?"g":"",e=new RegExp(e,o)),n.$regex=e,delete n.$options}}return n}function rn(t,e,u){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(o=o||{},o.root=o.root||t,g(H(Cn),u))return In[u](t,e,o);if(g(H(Dn),u))return t=rn(t,e,null,o),n(a(t),u+" expression must resolve to an array"),cn[u](t,null,o);if(i(e)&&e.length>0&&"$"===e[0]){if(g(Bn,e))return Fn[e](t,null,o);if(g(Yn,e))return e;var l=Bn.filter(function(n){return 0===e.indexOf(n+".")});return 1===l.length&&(l=l[0],"$$ROOT"===l&&(t=o.root),e=e.substr(l.length)),W(t,e.slice(1))}switch(r(e)){case"array":return e.map(function(n){return rn(t,n,null)});case"object":var s={};return M(e,function(r,u,i,a){s[u]=rn(t,r,u,o),g(H(Cn),u)&&(n(1===k(e).length,"Invalid aggregation expression '"+JSON.stringify(e)+"'"),s=s[u],a())}),s;default:return e}}function un(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return h(r)?e<0?(e=Math.max(0,t.length+e),r=t.length-e+1):(r=e,e=0):(e<0&&(e=Math.max(0,t.length+e)),n(r>0,"Invalid argument value for $slice operator. Limit must be a positive number"),r+=e),Array.prototype.slice.apply(t,[e,r])}function on(n){var t=n.data.reduce(function(n,t){return n+t},0),e=n.data.length||1,r=!0===n.sampled?1:0,u=t/(e-r);return Math.sqrt(n.data.reduce(function(n,t){return n+Math.pow(t-u,2)},0)/e)}function an(n,t){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};e=e||{},e.root=e.root||n;var r=rn(n,t,null,e);return g(Yn,r)?Ln[r](n,t,e):r}function ln(){return{computeValue:rn,idKey:V,ops:H,resolve:W,assert:n,clone:t,each:M,err:O,getType:e,has:x,isArray:a,isBoolean:u,isDate:c,isEmpty:b,isEqual:I,isFunction:v,isNil:h,isNull:d,isNumber:o,isObject:l,isRegExp:f,isString:i,isUndefined:p,keys:k}}var sn=["null","undefined","boolean","number","string","date","regexp"],cn={$addToSet:function(n,t){return E(this.$push(n,t))},$sum:function(n,t){return a(n)?o(t)?n.length*t:this.$push(n,t).filter(o).reduce(function(n,t){return n+t},0):0},$max:function(n,t){return this.$push(n,t).reduce(function(n,t){return h(n)||t>n?t:n},void 0)},$min:function(n,t){return this.$push(n,t).reduce(function(n,t){return h(n)||t<n?t:n},void 0)},$avg:function(n,t){var e=this.$push(n,t).filter(o);return e.reduce(function(n,t){return n+t},0)/(e.length||1)},$push:function(n,t){return h(t)?n:n.map(function(n){return rn(n,t,null)})},$first:function(n,t){return n.length>0?rn(n[0],t):void 0},$last:function(n,t){return n.length>0?rn(n[n.length-1],t):void 0},$stdDevPop:function(n,t){return on({data:this.$push(n,t).filter(o),sampled:!1})},$stdDevSamp:function(n,t){return on({data:this.$push(n,t).filter(o),sampled:!0})}},fn={$:function(n,t,e){O("$ not implemented")},$elemMatch:function(n,t,e){var r=W(n,e),u=new bn(t);if(!h(r)&&a(r))for(var i=0;i<r.length;i++)if(u.test(r[i]))return[r[i]]},$slice:function(n,t,e){var r=W(n,e);return a(r)?a(t)?un(r,t[0],t[1]):o(t)?un(r,t):void O("Invalid argument type for $slice projection operator"):r},$stdDevPop:function(n,t,e){return on({data:rn(n,t,e),sampled:!1})},$stdDevSamp:function(n,t,e){return on({data:rn(n,t,e),sampled:!0})}},vn={$addFields:function(e,r){var u=k(r);return e.map(function(e){return e=t(e),M(u,function(t){var u=r[t],i=void 0;if(l(u)){var o=k(u),a=o.filter(function(n){return 0===n.indexOf("$")});b(a)||(n(1===o.length,"Can have only one root operator in $addFields"),a=a[0],u=u[a],i=rn(e,u,a))}else i=rn(e,u,null);Z(e,t,function(n,t){n[t]=i},!0)}),e})},$group:function(n,t){var e=t[V()],r=T(n,function(n){return rn(n,e,e)}),u=[];return delete t[V()],M(r.keys,function(n,e){var i={};p(n)||(i[V()]=n),M(t,function(n,t){i[t]=B(r.groups[e],t,n)}),u.push(i)}),u},$lookup:function(e,r){function u(n){return P(h(n)?null:n)}var o=r.from,l=r.localField,s=r.foreignField,c=r.as,f="Invalid $lookup expression. ";n(a(o),f+"'from' must be an array"),n(i(s),f+"'foreignField' must be a string"),n(i(l),f+"'localField' must be a string"),n(i(c),f+"'as' must be a string");var v=[],d={};if(o.length<=e.length)M(o,function(n,t){var e=u(n[s]);d[e]=d[e]||[],d[e].push(t)}),M(e,function(n){var e=u(n[l]),r=d[e]||[],i=t(n);i[c]=r.map(function(n){return t(o[n])}),v.push(i)});else{M(e,function(n,t){var e=u(n[l]);d[e]=d[e]||[],d[e].push(t)});var p={};M(o,function(n){var r=u(n[s]);M(d[r]||[],function(r){var u=p[r]||t(e[r]);u[c]=u[c]||[],u[c].push(t(n)),p[r]=u})});for(var g=0,$=k(p).length;g<$;g++)v.push(p[g])}return v},$match:function(n,t){return new bn(t).find(n).all()},$project:function(e,r){if(b(r))return e;var u=[],a=k(r),s=!1,c=V(),f=[!1,!1];if(M(r,function(t,e){e!==c&&(0===t||!1===t?f[0]=!0:f[1]=!0,n(f[0]!==f[1],"Projection cannot have a mix of inclusion and exclusion."))}),g(a,c)){var v=r[c];0!==v&&!1!==v||(a=a.filter($.bind(null,[c])),n($(a,c),"Must not contain collections id key"),s=b(a))}else a.push(c);return M(e,function(n){var e={},f=!1,v=!1,h=[];s&&h.push(c),M(a,function(u){var a=r[u],s=void 0;if(u!==c&&0===a&&(v=!0),u===c&&b(a))s=n[u];else if(i(a))s=rn(n,a,u);else if(1===a||!0===a);else{if(!l(a))return void h.push(u);var d=k(a);d=!(d.length>1)&&d[0],g(H(Rn),d)?"$slice"===d?_(a[d]).every(o)?(s=fn[d](n,a[d],u),f=!0):s=rn(n,a,u):s=fn[d](n,a[d],u):s=rn(n,a,u)}var $=t(X(n,u));p($)||Object.assign(e,$),p(s)||nn(e,u,t(s))}),(f||v||s)&&(e=Object.assign(t(n),e),M(h,function(n){return tn(e,n)})),u.push(e)}),u},$limit:function(n,t){return n.slice(0,t)},$skip:function(n,t){return n.slice(t)},$unwind:function(e,r){var u=[],i=r.substr(1);return M(e,function(e){var r=K(e,i);n(a(r),"Target field '"+i+"' is not of type Array."),M(r,function(n){var r=t(e);r[i]=n,u.push(r)})}),u},$sort:function(n,t){if(!b(t)&&l(t)){M(k(t).reverse(),function(e){var r=T(n,function(n){return W(n,e)}),u={},i=function(n){return u[P(n)]},o=R(r.keys,function(n,t){return u[P(n)]=t,n});-1===t[e]&&o.reverse(),n=[],M(o,function(t){return U(n,r.groups[i(t)])})})}return n},$sortByCount:function(n,t){var e={count:{$sum:1}};return e[V()]=t,this.$sort(this.$group(n,e),{count:-1})},$sample:function(t,e){var r=e.size;n(o(r),"$sample size must be a positive integer");for(var u=[],i=t.length,a=0;a<r;a++){var l=Math.floor(Math.random()*i);u.push(t[l])}return u},$count:function(t,e){n(i(e)&&""!==e.trim()&&-1===e.indexOf(".")&&"$"!==e.trim()[0],"Invalid expression value for $count");var r={};return r[e]=t.length,r},$replaceRoot:function(t,e){var r=e.newRoot,u=[];return M(t,function(t){t=rn(t,r,null),n(l(t),"$replaceRoot expression must return a valid JS object"),u.push(t)}),u},$redact:function(n,e){return n.map(function(n){return an(t(n),e)})},$bucket:function(t,r){var u=r.boundaries,i=r.default,o=u[0],a=u[u.length-1],l=r.output||{count:{$sum:1}};n(u.length>2,"$bucket 'boundaries' expression must have at least 3 elements");for(var s=e(o),c=0,f=u.length-1;c<f;c++)n(s===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={};return M(u,function(n){return v[n]=[]}),h(i)||(v[i]=[]),M(t,function(t){var e=rn(t,r.groupBy,null);if(h(e)||e<o||e>=a)n(!h(i),"$bucket require a default for out of range values"),v[i].push(t);else if(e>=o&&e<a){var l=F(u,e),s=u[Math.max(0,l-1)];v[s].push(t)}else O("$bucket 'groupBy' expression must resolve to a value in range of boundaries")}),u.pop(),h(i)||u.push(i),q(u,function(n){var t=B(v[n],null,l);return Object.assign(t,{_id:n})})},$bucketAuto:function(t,e){var r=e.output||{count:{$sum:1}},u=e.groupBy,i=(e.granularity,e.buckets);n(i>0,"The $bucketAuto 'buckets' field must be greater than 0, but found: "+i);var o=Math.round(t.length/i);o<1&&(o=1);for(var a=L(rn),l={},s=[],c=R(t,function(n){var t=a(n,u,null);return h(t)?s.push(n):(l[t]||(l[t]=[]),l[t].push(n)),t}),f=[],v=0,d=0,p=c.length;d<i&&v<p;d++){for(var g={},$=[],m=0;m<o&&v<p;m++){var y=a(c[v],u,null);if(h(y)&&(y=null),U($,h(y)?s:l[y]),v+=h(y)?s.length:l[y].length,x(g,"min")||(g.min=y),f.length>0){f[f.length-1]._id.max=g.min}}d==i-1&&U($,c.slice(v)),f.push(Object.assign(B($,null,r),{_id:g}))}return f.length>0&&(f[f.length-1]._id.max=a(c[c.length-1],u,null)),f},$facet:function(n,t){return q(t,function(t){return Y(n,t)})}},hn="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},dn=function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")},pn=function(){function n(n,t){for(var e=0;e<t.length;e++){var r=t[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}return function(t,e,r){return e&&n(t.prototype,e),r&&n(t,r),t}}(),gn=function(){function n(t){dn(this,n),this.__operators=t}return pn(n,[{key:"run",value:function(n,t){return b(this.__operators)||M(this.__operators,function(e){var r=k(e);1===r.length&&g(H(Pn),r[0])?(r=r[0],n=t instanceof bn?vn[r].call(t,n,e[r]):vn[r](n,e[r])):O("Invalid aggregation operator '"+r+"'")}),n}}]),n}(),$n=function(){function t(n,e,r){dn(this,t),this.__query=e,this.__collection=n,this.__projection=r||e.__projection,this.__operators={},this.__result=!1,this.__position=0}return pn(t,[{key:"_fetch",value:function(){var t=this;if(!1!==this.__result)return this.__result;l(this.__projection)&&Object.assign(this.__operators,{$project:this.__projection}),n(a(this.__collection),"Input collection is not of valid type. Must be an Array."),this.__result=this.__collection.filter(this.__query.test,this.__query);var e=[];if(M(["$sort","$skip","$limit","$project"],function(n){if(x(t.__operators,n)){var r={};r[n]=t.__operators[n],e.push(r)}}),e.length>0){var r=new gn(e);this.__result=r.run(this.__result,this.__query)}return this.__result}},{key:"all",value:function(){return this._fetch()}},{key:"first",value:function(){return this.count()>0?this._fetch()[0]:null}},{key:"last",value:function(){return this.count()>0?this._fetch()[this.count()-1]:null}},{key:"count",value:function(){return this._fetch().length}},{key:"skip",value:function(n){return Object.assign(this.__operators,{$skip:n}),this}},{key:"limit",value:function(n){return Object.assign(this.__operators,{$limit:n}),this}},{key:"sort",value:function(n){return Object.assign(this.__operators,{$sort:n}),this}},{key:"next",value:function(){return this.hasNext()?this._fetch()[this.__position++]:null}},{key:"hasNext",value:function(){return this.count()>this.__position}},{key:"max",value:function(n){return cn.$max(this._fetch(),n)}},{key:"min",value:function(n){return cn.$min(this._fetch(),n)}},{key:"map",value:function(n){return this._fetch().map(n)}},{key:"forEach",value:function(n){M(this._fetch(),n)}},{key:Symbol.iterator,value:function(){var n=this;return{next:function(){return n.hasNext()?{done:!1,value:n.next()}:{done:!0}}}}}]),t}(),mn={$eq:function(n,t){if(I(n,t))return!0;if(h(n)&&h(t))return!0;if(a(n)){if(!N(n,{isMulti:!0}))return-1!==n.findIndex(I.bind(null,t));try{for(var e=0;e<n.length;e++)if(this.$eq(n[e],t))return!0}finally{w(n)}}return!1},$ne:function(n,t){return!this.$eq(n,t)},$in:function(n,t){return n=_(n),S(n,t).length>0},$nin:function(n,t){return h(n)||!this.$in(n,t)},$lt:function(n,t){return void 0!==(n=_(n).find(function(n){return n<t}))},$lte:function(n,t){return void 0!==(n=_(n).find(function(n){return n<=t}))},$gt:function(n,t){return void 0!==(n=_(n).find(function(n){return n>t}))},$gte:function(n,t){return void 0!==(n=_(n).find(function(n){return n>=t}))},$mod:function(n,t){return void 0!==(n=_(n).find(function(n){return o(n)&&a(t)&&2===t.length&&n%t[0]===t[1]}))},$regex:function(n,t){return void 0!==(n=_(n).find(function(n){return i(n)&&f(t)&&!!n.match(t)}))},$exists:function(n,t){return(!1===t||0===t)&&h(n)||(!0===t||1===t)&&!h(n)},$all:function(n,t){var e=!1;if(a(n)&&a(t))for(var r=0,u=t.length;r<u;r++){if(!l(t[r])||!g(k(t[r]),"$elemMatch"))return S(t,n).length===u;e=e||this.$elemMatch(n,t[r].$elemMatch)}return e},$size:function(n,t){return a(n)&&o(t)&&n.length===t},$elemMatch:function(n,t){if(a(n)&&!b(n))for(var e=new bn(t),r=0,u=n.length;r<u;r++)if(e.test(n[r]))return!0;return!1},$type:function(n,t){switch(t){case 1:case"double":return o(n)&&-1!==(n+"").indexOf(".");case 2:case"string":case 5:case"bindata":return i(n);case 3:case"object":return l(n);case 4:case"array":return a(n);case 6:case"undefined":return h(n);case 8:case"bool":return u(n);case 9:case"date":return c(n);case 10:case"null":return d(n);case 11:case"regex":return f(n);case 16:case"int":return o(n)&&n<=2147483647&&-1===(n+"").indexOf(".");case 18:case"long":return o(n)&&n>2147483647&&n<=0x8000000000000000&&-1===(n+"").indexOf(".");case 19:case"decimal":return o(n);default:return!1}}},yn={$and:function(t,e){n(a(e),"Invalid expression: $and expects value to be an Array");var r=[];return M(e,function(n){return r.push(new bn(n))}),{test:function(n){for(var t=0;t<r.length;t++)if(!r[t].test(n))return!1;return!0}}},$or:function(t,e){n(a(e),"Invalid expression. $or expects value to be an Array");var r=[];return M(e,function(n){return r.push(new bn(n))}),{test:function(n){for(var t=0;t<r.length;t++)if(r[t].test(n))return!0;return!1}}},$nor:function(t,e){n(a(e),"Invalid expression. $nor expects value to be an Array");var r=this.$or("$or",e);return{test:function(n){return!r.test(n)}}},$not:function(n,t){var e={};e[n]=en(t);var r=new bn(e);return{test:function(n){return!r.test(n)}}},$where:function(n,t){return v(t)||(t=new Function("return "+t+";")),{test:function(n){return!0===t.call(n)}}}};M(mn,function(n,t){yn[t]=function(n,t){return function(e,r){return{test:function(u){var i=W(u,e);return n.call(t,i,r)}}}}(n,mn)});var bn=function(){function t(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};dn(this,t),this.__criteria=n,this.__projection=e,this.__compiled=[],this._compile()}return pn(t,[{key:"_compile",value:function(){var t=this;if(!b(this.__criteria)){n(l(this.__criteria),"Criteria must be of type Object");var e=void 0;M(this.__criteria,function(n,r){"$where"===r?e={field:r,expr:n}:g(["$and","$or","$nor"],r)?t._processOperator(r,r,n):(n=en(n),M(n,function(n,e){t._processOperator(r,e,n)})),l(e)&&t._processOperator(e.field,e.field,e.expr)})}}},{key:"_processOperator",value:function(n,t,e){g(H(Tn),t)?this.__compiled.push(yn[t](n,e)):O("Invalid query operator '"+t+"' detected")}},{key:"test",value:function(n){for(var t=0,e=this.__compiled.length;t<e;t++)if(!this.__compiled[t].test(n))return!1;return!0}},{key:"find",value:function(n,t){return new $n(n,this,t)}},{key:"remove",value:function(n){var t=this;return n.reduce(function(n,e){return t.test(e)||n.push(e),n},[])}}]),t}(),_n={$abs:function(n,t){var e=rn(n,t,null);return null===e||void 0===e?null:Math.abs(e)},$add:function(n,t){return rn(n,t,null).reduce(function(n,t){return n+t},0)},$ceil:function(t,e){var r=rn(t,e,null);return isNaN(r)?NaN:h(r)?null:(n(o(r),"$ceil must be a valid expression that resolves to a number."),Math.ceil(r))},$divide:function(n,t){var e=rn(n,t,null);return e[0]/e[1]},$exp:function(t,e){var r=rn(t,e,null);return isNaN(r)?NaN:h(r)?null:(n(o(r),"$exp must be a valid expression that resolves to a number."),Math.exp(r))},$floor:function(t,e){var r=rn(t,e,null);return isNaN(r)?NaN:h(r)?null:(n(o(r),"$floor must be a valid expression that resolves to a number."),Math.floor(r))},$ln:function(t,e){var r=rn(t,e,null);return isNaN(r)?NaN:h(r)?null:(n(o(r),"$ln must be a valid expression that resolves to a number."),Math.log(r))},$log:function(t,e){var r=rn(t,e,null);return n(a(r)&&2===r.length,"$log must be a valid expression that resolves to an array of 2 items"),r.some(isNaN)?NaN:r.some(h)?null:(n(r.every(o),"$log expression must resolve to array of 2 numbers"),Math.log10(r[0])/Math.log10(r[1]))},$log10:function(t,e){var r=rn(t,e,null);return isNaN(r)?NaN:h(r)?null:(n(o(r),"$log10 must be a valid expression that resolves to a number."),Math.log10(r))},$mod:function(n,t){var e=rn(n,t,null);return e[0]%e[1]},$multiply:function(n,t){return rn(n,t,null).reduce(function(n,t){return n*t},1)},$pow:function(t,e){var r=rn(t,e,null);return n(a(r)&&2===r.length&&r.every(o),"$pow must be a valid expression that resolves to an array of 2 numbers"),n(!(0===r[0]&&r[1]<0),"$pow cannot raise 0 to a negative exponent"),Math.pow(r[0],r[1])},$sqrt:function(t,e){var r=rn(t,e,null);return isNaN(r)?NaN:h(r)?null:(n(o(r)&&r>0,"$sqrt must be a valid expression that resolves to a non-negative number."),Math.sqrt(r))},$subtract:function(n,t){var e=rn(n,t,null);return e[0]-e[1]},$trunc:function(t,e){var r=rn(t,e,null);return isNaN(r)?NaN:h(r)?null:(n(o(r)&&r>0,"$trunc must be a valid expression that resolves to a non-negative number."),Math.trunc(r))}},xn={$arrayElemAt:function(t,e){var r=rn(t,e,null);n(a(r)&&2===r.length,"$arrayElemAt expression must resolve to an array of 2 elements"),n(a(r[0]),"First operand to $arrayElemAt must resolve to an array"),n(o(r[1]),"Second operand to $arrayElemAt must resolve to an integer");var u=r[1];return r=r[0],u<0&&Math.abs(u)<=r.length?r[u+r.length]:u>=0&&u<r.length?r[u]:void 0},$concatArrays:function(t,e){var r=rn(t,e,null);return n(a(r)&&2===r.length,"$concatArrays expression must resolve to an array of 2 elements"),r.some(h)?null:r[0].concat(r[1])},$filter:function(t,e){var r=rn(t,e.input,null),u=e.as,i=e.cond;return n(a(r),"'input' expression for $filter must resolve to an array"),r.filter(function(n){var t={};return t["$"+u]=n,!0===rn(t,i,null)})},$indexOfArray:function(t,e){var r=rn(t,e,null);if(h(r))return null;var u=r[0];if(h(u))return null;n(a(u),"First operand for $indexOfArray must resolve to an array.");var i=r[1];if(h(i))return null;var o=r[2]||0,l=r[3]||u.length;return l<u.length&&(u=u.slice(o,l)),u.indexOf(i,o)},$isArray:function(n,t){return a(rn(n,t,null))},$range:function(n,t){for(var e=rn(n,t,null),r=e[0],u=e[1],i=e[2]||1,o=[];r<u&&i>0||r>u&&i<0;)o.push(r),r+=i;return o},$reverseArray:function(t,e){var r=rn(t,e,null);if(h(r))return null;n(a(r),"$reverseArray expression must resolve to an array");for(var u=[],i=r.length-1;i>-1;i--)u.push(r[i]);return u},$reduce:function(t,e){var r=rn(t,e.input,null),u=rn(t,e.initialValue,null),i=e.in;return h(r)?null:(n(a(r),"'input' expression for $reduce must resolve to an array"),r.reduce(function(n,t){return rn({$value:n,$this:t},i,null)},u))},$size:function(n,t){var e=rn(n,t,null);return a(e)?e.length:void 0},$slice:function(n,t){var e=rn(n,t,null);return un(e[0],e[1],e[2])},$zip:function(t,e){var r=rn(t,e.inputs,null),i=e.useLongestLength||!1;n(a(r),"'inputs' expression must resolve to an array"),n(u(i),"'useLongestLength' must be a boolean"),a(e.defaults)&&n(m(i),"'useLongestLength' must be set to true to use 'defaults'");for(var o=0,l=0,s=r.length;l<s;l++){var c=r[l];if(h(c))return null;n(a(c),"'inputs' expression values must resolve to an array or null"),o=i?Math.max(o,c.length):Math.min(o||c.length,c.length)}for(var f=[],v=e.defaults||[],d=0;d<o;d++)!function(n){var t=r.map(function(t,e){return h(t[n])?v[e]||null:t[n]});f.push(t)}(d);return f}},On={$and:function(n,t){var e=rn(n,t,null);return m(e)&&e.every(m)},$or:function(n,t){var e=rn(n,t,null);return m(e)&&e.some(m)},$not:function(n,t){return!rn(n,t[0],null)}},kn={$cmp:function(n,t){var e=rn(n,t,null);return e[0]>e[1]?1:e[0]<e[1]?-1:0}};M(["$eq","$ne","$gt","$gte","$lt","$lte","$in","$nin"],function(n){kn[n]=function(t,e){var r=rn(t,e,null);return mn[n](r[0],r[1])}});var jn={$cond:function(t,e){var r=void 0,u=void 0,i=void 0;return a(e)?(n(3===e.length,"Invalid arguments for $cond operator"),r=e[0],u=e[1],i=e[2]):l(e)&&(r=e.if,u=e.then,i=e.else),rn(t,r,null)?rn(t,u,null):rn(t,i,null)},$switch:function(t,e){n(e.branches,"Invalid arguments for $switch operator");var r=e.branches.find(function(e){return n(e.case&&e.then,"Invalid arguments for $switch operator"),rn(t,e.case,null)});return r?rn(t,r.then,null):e.default?rn(t,e.default,null):void O("Invalid arguments for $switch operator")},$ifNull:function(t,e){n(a(e)&&2===e.length,"Invalid arguments for $ifNull operator");var r=rn(t,e,null);return null===r[0]||void 0===r[0]?r[1]:r[0]}},Nn={"%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],"%%":"%"},wn={$dayOfYear:function(n,t){var e=rn(n,t,null);if(c(e)){var r=new Date(e.getFullYear(),0,0),u=e-r;return Math.round(u/864e5)}},$dayOfMonth:function(n,t){var e=rn(n,t,null);return c(e)?e.getDate():void 0},$dayOfWeek:function(n,t){var e=rn(n,t,null);return c(e)?e.getDay()+1:void 0},$year:function(n,t){var e=rn(n,t,null);return c(e)?e.getFullYear():void 0},$month:function(n,t){var e=rn(n,t,null);return c(e)?e.getMonth()+1:void 0},$week:function(n,t){var e=rn(n,t,null);e=new Date(+e),e.setHours(0,0,0),e.setDate(e.getDate()+4-(e.getDay()||7));var r=new Date(e.getFullYear(),0,1);return Math.floor(((e-r)/864e5+1)/7)},$hour:function(n,t){var e=rn(n,t,null);return c(e)?e.getUTCHours():void 0},$minute:function(n,t){var e=rn(n,t,null);return c(e)?e.getMinutes():void 0},$second:function(n,t){var e=rn(n,t,null);return c(e)?e.getSeconds():void 0},$millisecond:function(n,t){var e=rn(n,t,null);return c(e)?e.getMilliseconds():void 0},$dateToString:function(n,t){for(var e=t.format,r=rn(n,t.date,null),u=e.match(/(%%|%Y|%m|%d|%H|%M|%S|%L|%j|%w|%U)/g),i=0,o=u.length;i<o;i++){var l=Nn[u[i]],s=l;if(a(l)){var c=this[l[0]],f=l[1];s=G(c.call(this,n,r),f)}e=e.replace(u[i],s)}return e}},Mn={$literal:function(n,t){return t}},qn={$setEquals:function(n,t){var e=rn(n,t,null),r=E(e[0]),u=E(e[1]);return r.length===u.length&&r.length===S(r,u).length},$setIntersection:function(n,t){var e=rn(n,t,null);return S(e[0],e[1])},$setDifference:function(n,t){var e=rn(n,t,null);return e[0].filter($.bind(null,e[1]))},$setUnion:function(n,t){var e=rn(n,t,null);return A(e[0],e[1])},$setIsSubset:function(n,t){var e=rn(n,t,null);return S(e[0],e[1]).length===e[0].length},$anyElementTrue:function(n,t){return rn(n,t,null)[0].some(m)},$allElementsTrue:function(n,t){return rn(n,t,null)[0].every(m)}},Sn={$concat:function(n,t){var e=rn(n,t,null);return[null,void 0].some(g.bind(null,e))?null:e.join("")},$indexOfBytes:function(t,e){var r=rn(t,e,null);if(h(r[0]))return null;n(i(r[0]),"$indexOfBytes first operand must resolve to a string"),n(i(r[1]),"$indexOfBytes second operand must resolve to a string");var u=r[0],a=r[1],l=r[2],s=r[3];if(n(h(l)||o(l)&&l>=0&&Math.round(l)===l,"$indexOfBytes third operand must resolve to a non-negative integer"),l=l||0,n(h(s)||o(s)&&s>=0&&Math.round(s)===s,"$indexOfBytes fourth operand must resolve to a non-negative integer"),s=s||u.length,l>s)return-1;var c=u.substring(l,s).indexOf(a);return c>-1?c+l:c},$split:function(t,r){var u=rn(t,r,null);return n(i(u[0]),"$split requires an expression that evaluates to a string as a first argument, found: "+e(u[0])),n(i(u[1]),"$split requires an expression that evaluates to a string as a second argument, found: "+e(u[1])),u[0].split(u[1])},$strcasecmp:function(n,t){var e=rn(n,t,null);return e[0]=b(e[0])?"":e[0].toUpperCase(),e[1]=b(e[1])?"":e[1].toUpperCase(),e[0]>e[1]?1:e[0]<e[1]?-1:0},$substr:function(n,t){var e=rn(n,t,null);return i(e[0])?e[1]<0?"":e[2]<0?e[0].substr(e[1]):e[0].substr(e[1],e[2]):""},$toLower:function(n,t){var e=rn(n,t,null);return b(e)?"":e.toLowerCase()},$toUpper:function(n,t){var e=rn(n,t,null);return b(e)?"":e.toUpperCase()}},An={$map:function(t,e){var r=rn(t,e.input,null);n(a(r),"Input expression for $map must resolve to an array");var u=e.as,i=e.in,o="$"+u,l=t[o];return r.map(function(n){t[o]=n;var e=rn(t,i,null);return p(l)?delete t[o]:t[o]=l,e})},$let:function(n,t){var e=t.vars,r=t.in,u={},i=k(e);M(i,function(t){var r=rn(n,e[t],null),i="$"+t;u[i]=n[i],n[i]=r});var o=rn(n,r,null);return M(i,function(t){var e="$"+t;p(u[e])?delete n[e]:n[e]=u[e]}),o}},In=Object.assign({},_n,xn,On,kn,jn,wn,Mn,qn,Sn,An),En={aggregate:In,group:cn,pipeline:vn,projection:fn,query:yn},Cn="aggregate",Dn="group",Pn="pipeline",Rn="projection",Tn="query",Un={key:"_id"},Fn={$$ROOT:function(n,t,e){return e.root},$$CURRENT:function(n,t,e){return n}},Ln={$$KEEP:function(n){return n},$$PRUNE:function(){},$$DESCEND:function(n,t,e){if(!x(t,"$cond"))return n;var r=void 0;return M(n,function(u,i){s(u)&&(a(u)?(r=[],M(u,function(n){l(n)&&(n=an(n,t,e)),h(n)||r.push(n)})):r=an(u,t,e),h(r)?delete n[i]:n[i]=r)}),n}},Bn=k(Fn),Yn=k(Ln),Jn={query:function(n,t){return new bn(n).find(this.toJSON(),t)},aggregate:function(n){return new gn(n).run(this.toJSON())}};require("core-js/fn/array/find"),require("core-js/fn/array/find-index"),
require("core-js/fn/array/includes"),require("core-js/fn/object/assign"),require("core-js/fn/object/keys"),require("core-js/fn/object/values"),require("core-js/fn/function/bind"),require("core-js/fn/symbol/iterator");return{_internal:ln,Aggregator:gn,CollectionMixin:Jn,Cursor:$n,OP_AGGREGATE:Cn,OP_GROUP:Dn,OP_PIPELINE:Pn,OP_PROJECTION:Rn,OP_QUERY:Tn,Query:bn,VERSION:"1.3.0",addOperators:Q,aggregate:Y,find:J,remove:z}});
!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){m(n)&&O(t)}function t(n){switch(r(n)){case"array":return n.map(t);case"object":return A(n,t);default:return n}}function e(n){return null===n?"Null":void 0===n?"Undefined":n.constructor.name}function r(n){return e(n).toLowerCase()}function u(n){return"boolean"===r(n)}function o(n){return"string"===r(n)}function i(n){return"number"===r(n)}function a(n){return"array"===r(n)}function l(n){return"object"===r(n)}function s(n){return n===Object(n)}function c(n){return"date"===r(n)}function f(n){return"regexp"===r(n)}function v(n){return"function"===r(n)}function h(n){return p(n)||d(n)}function p(n){return"null"===r(n)}function d(n){return"undefined"===r(n)}function g(n,t){return n.includes(t)}function $(n,t){return!n.includes(t)}function y(n){return!!n}function m(n){return!n}function b(n){return h(n)||a(n)&&0===n.length||l(n)&&0===w(n).length||!n}function _(n){return a(n)?n:[n]}function x(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function O(n){throw new Error(n)}function w(n){return Object.keys(n)}function j(n,t){n.__mingo__=Object.assign(n.__mingo__||{},t)}function k(n,t){return x(n,"__mingo__")&&l(t)&&S(Object.assign({},n.__mingo__,t),n.__mingo__)}function N(n){x(n,"__mingo__")&&delete n.__mingo__}function M(t,e){var u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;n(t===Object(t),"Cannot iterate over object of type '"+r(t)+"'");var o=!1,i=function(){o=!0,O("halt")};if(a(t))for(var l=0,s=t.length;l<s;l++)try{e.call(u,t[l],l,t,i)}catch(t){return void n(o,t.message)}else for(var c in t)if(x(t,c))try{e.call(u,t[c],c,t,i)}catch(t){return void n(o,t.message)}}function A(n,t){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(a(n))return n.map(t,e);if(l(n)){for(var r,u={},o=w(n),i=0,s=o.length;i<s;i++)r=o[i],u[r]=t.call(e,n[r],r);return u}O("Input must be an Array or Object type")}function E(n,t){return n.filter(g.bind(null,t))}function I(n,t){var e=[];return R(e,n),R(e,t.filter($.bind(null,n))),e}function S(n,t){if(n===t)return!0;var e=r(n);if(e!==r(t)||"function"===e)return!1;if("number"===e&&isNaN(n)&&isNaN(t))return!0;if(g(["date","regexp"],e))return n.toString()===t.toString();if("array"===e){if(n.length===t.length&&0===n.length)return!0;if(n.length!==t.length)return!1;for(var u=0,o=n.length;u<o;u++)if(!S(n[u],t[u]))return!1}else{if(![n,t].every(l))return C(n)===C(t);var i=w(n),a=w(t);if(i.length!==a.length)return!1;if(i.sort(),a.sort(),!S(i,a))return!1;for(var s=0,c=i.length;s<c;s++){var f=i[s];if(!S(n[f],t[f]))return!1}}return!0}function q(n){var t={},e=[];return M(n,function(n){var r=C(n);x(t,r)||(e.push(n),t[r]=0)}),e}function P(n){return(Math.E+Math.random()).toString(36).slice(2,n+2)}function T(n){var t=r(n);switch(t){case"function":return P(7);case"boolean":case"number":case"regex":return n.toString();case"string":return JSON.stringify(n);case"date":return n.toISOString();case"null":case"undefined":return t;case"array":return"["+A(n,function(n){return""+T(n)})+"]";default:var u=l(n)?"":e(n)+"|",o=w(n);return o.sort(),u+"{"+A(o,function(t){return T(t)+":"+T(n[t])})+"}"}}function C(n){var t=0,e=void 0,r=void 0,u=void 0,o=T(n);if(0===o.length)return t;for(e=0,u=o.length;e<u;e++)r=o.charCodeAt(e),t=(t<<5)-t+r,t|=0;return t.toString()}function D(t,e){for(var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,u={},o=[],i=t.length,a=[],l=0;l<i;l++){var s=t[l],c=e.call(r,s,l);if(h(c))a.push(s);else{var f=C(s);x(u,f)||(u[f]=[c,l]),o.push(s)}}return o.sort(function(n,t){var e=u[C(n)],r=u[C(t)];return e[0]<r[0]?-1:e[0]>r[0]?1:e[1]<r[1]?-1:e[1]>r[1]?1:0}),R(a,o),n(a.length===t.length,"sortBy must retain collection length"),a}function F(t,e,r){var u={keys:[],groups:[]},o={};return M(t,function(n){var t=e.call(r,n),i=C(t),a=-1;d(o[i])&&(a=u.keys.length,o[i]=a,u.keys.push(t),u.groups.push([])),a=o[i],u.groups[a].push(n)}),n(u.keys.length===u.groups.length,"Cardinality must be equal for groups and keys"),u}function R(n,t){Array.prototype.push.apply(n,t)}function U(n,t){for(var e=0,r=n.length-1;e<=r;){var u=Math.round(e+(r-e)/2);if(t<n[u])r=u-1;else{if(!(t>n[u]))return u;e=u+1}}return e}function L(n){var t=this;return function(e){return function(){for(var r=arguments.length,u=Array(r),o=0;o<r;o++)u[o]=arguments[o];var i=C(u);return x(e,i)||(e[i]=n.apply(t,u)),e[i]}}({})}function B(t,e,r){if(g(H(Tn),e))return cn[e](t,r);if(l(r)){var u={};return M(r,function(e,o,i,a){u[o]=B(t,o,r[o]),g(H(Tn),o)&&(u=u[o],n(1===w(r).length,"Invalid $group expression '"+JSON.stringify(r)+"'"),a())}),u}}function Y(t,e){return n(a(e),"Aggregation pipeline must be an array"),new gn(e).run(t)}function J(n,t,e){return new bn(t).find(n,e)}function z(n,t){return new bn(t).remove(n)}function G(n,t){return new Array(Math.max(t-String(n).length+1,0)).join("0")+n}function H(n){return w(qn[n])}function Q(t,e){var r=e(ln());n(x(qn,t),"Could not identify operator class '"+t+"'");var o=qn[t];M(r,function(e,r){n(/^\$\w+$/.test(r),"Invalid operator name '"+r+"'"),n(!x(o,r),"Operator "+r+" is already defined for "+t+" operators")});var i={};switch(t){case Fn:M(r,function(n,t){i[t]=function(n,e){return function(r,o){return{test:function(i){var a=W(i,r),l=n.call(e,r,a,o);return u(l)?l:l instanceof bn?l.test(i):void O("Invalid return type for '"+t+"'. Must return a Boolean or Query")}}}}(n,r)});break;case Dn:M(r,function(n,t){i[t]=function(n,t){return function(e,r,u){var o=W(e,u);return n.call(t,u,o,r)}}(n,r)});break;default:M(r,function(n,t){i[t]=function(n,t){return function(){for(var e=arguments.length,r=Array(e),u=0;u<e;u++)r[u]=arguments[u];return n.apply(t,r)}}(n,r)})}Object.assign(qn[t],i)}function V(){return Rn.key}function K(n,t){return n[t]}function W(n,t){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=t.split("."),u=n;n:for(var o=0;o<r.length;o++){var i=function(n){if(null===r[n].match(/^\d+$/)&&a(u)){if(!0===e&&0===n)return{v:u};u=u.map(function(t){return W(t,r[n],!0)}),j(u,{isMulti:!0}),1===u.length&&(u=u[0])}else u=K(u,r[n]),e=!1;if(h(u))return"break"}(o);switch(i){case"break":break n;default:if("object"===(void 0===i?"undefined":hn(i)))return i.v}}return u}function X(t,e){if(!h(t)){var r=e.split("."),u=r[0],o=1===r.length||r.slice(1).join("."),i=null!==u.match(/^\d+$/),l=r.length>1,s=void 0,c=void 0;try{a(t)?i?(s=K(t,u),l&&(s=X(s,o)),n(!d(s)),s=[s]):(s=[],M(t,function(n){c=X(n,e),h(c)||s.push(c)}),n(s.length>0)):(c=K(t,u),l&&(c=X(c,o)),n(!d(c)),s={},s[u]=c)}catch(n){s=void 0}return s}}function Z(n,t,e){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],u=t.split("."),o=u[0],i=1===u.length||u.slice(1).join(".");if(1===u.length)e(n,o);else if(a(n)&&!/^\d+$/.test(o))M(n,function(n){Z(n,t,e,r)});else{if(!0===r){var l=x(n,o);l&&!h(n[o])||(n[o]={})}Z(n[o],i,e,r)}}function nn(n,t,e){Z(n,t,function(n,t){n[t]=e},!0)}function tn(n,t){Z(n,t,function(n,t){a(n)&&/^\d+$/.test(t)?n.splice(parseInt(t),1):l(n)&&delete n[t]})}function en(n){if(g(sn,r(n)))return f(n)?{$regex:n}:{$eq:n};if(s(n)){var t=w(n);if(0===E(H(Fn),t).length)return{$eq:n};if(g(t,"$regex")){var e=n.$regex,u=n.$options||"",i="";o(e)&&(i+=e.ignoreCase||u.indexOf("i")>=0?"i":"",i+=e.multiline||u.indexOf("m")>=0?"m":"",i+=e.global||u.indexOf("g")>=0?"g":"",e=new RegExp(e,i)),n.$regex=e,delete n.$options}}return n}function rn(t,e,u){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(i=i||{},i.root=i.root||t,g(H(Pn),u))return Sn[u](t,e,i);if(g(H(Tn),u))return t=rn(t,e,null,i),n(a(t),u+" expression must resolve to an array"),cn[u](t,null,i);if(o(e)&&e.length>0&&"$"===e[0]){if(g(Bn,e))return Un[e](t,null,i);if(g(Yn,e))return e;var l=Bn.filter(function(n){return 0===e.indexOf(n+".")});return 1===l.length&&(l=l[0],"$$ROOT"===l&&(t=i.root),e=e.substr(l.length)),W(t,e.slice(1))}switch(r(e)){case"array":return e.map(function(n){return rn(t,n,null)});case"object":var s={};return M(e,function(r,u,o,a){s[u]=rn(t,r,u,i),g(H(Pn),u)&&(n(1===w(e).length,"Invalid aggregation expression '"+JSON.stringify(e)+"'"),s=s[u],a())}),s;default:return e}}function un(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return h(r)?e<0?(e=Math.max(0,t.length+e),r=t.length-e+1):(r=e,e=0):(e<0&&(e=Math.max(0,t.length+e)),n(r>0,"Invalid argument value for $slice operator. Limit must be a positive number"),r+=e),Array.prototype.slice.apply(t,[e,r])}function on(n){var t=n.data.reduce(function(n,t){return n+t},0),e=n.data.length||1,r=!0===n.sampled?1:0,u=t/(e-r);return Math.sqrt(n.data.reduce(function(n,t){return n+Math.pow(t-u,2)},0)/e)}function an(n,t){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};e=e||{},e.root=e.root||n;var r=rn(n,t,null,e);return g(Yn,r)?Ln[r](n,t,e):r}function ln(){return{computeValue:rn,idKey:V,ops:H,resolve:W,assert:n,clone:t,each:M,err:O,getType:e,has:x,isArray:a,isBoolean:u,isDate:c,isEmpty:b,isEqual:S,isFunction:v,isNil:h,isNull:p,isNumber:i,isObject:l,isRegExp:f,isString:o,isUndefined:d,keys:w}}Function.prototype.bind||(Function.prototype.bind=function(n){if("function"!=typeof this)throw new Error("Function.prototype.bind - what is trying to be bound is not callable");var t=Array.prototype.slice.call(arguments,1),e=this,r=function(){},u=function(){return e.apply(this instanceof r?this:n,t.concat(Array.prototype.slice.call(arguments)))};return this.prototype&&(r.prototype=this.prototype),u.prototype=new r,u}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(n){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),e=t.length>>>0;if("function"!=typeof n)throw new TypeError("predicate must be a function");for(var r=arguments[1],u=0;u<e;){var o=t[u];if(n.call(r,o,u,t))return o;u++}}}),Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(n){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),e=t.length>>>0;if("function"!=typeof n)throw new TypeError("predicate must be a function");for(var r=arguments[1],u=0;u<e;){var o=t[u];if(n.call(r,o,u,t))return u;u++}return-1}}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(n,t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),r=e.length>>>0;if(0===r)return!1;for(var u=0|t,o=Math.max(u>=0?u:r-Math.abs(u),0);o<r;){if(function(n,t){return n===t||"number"==typeof n&&"number"==typeof t&&isNaN(n)&&isNaN(t)}(e[o],n))return!0;o++}return!1}}),"function"!=typeof Object.assign&&(Object.assign=function(n,t){if(null==n)throw new TypeError("Cannot convert undefined or null to object");for(var e=Object(n),r=Array.prototype.slice.call(arguments),u=1;u<r.length;u++){var o=r[u];if(null!=o)for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(e[i]=o[i])}return e}),Object.keys||(Object.keys=function(n){if(n!==Object(n))throw new TypeError("Object.keys called on a non-object");var t=[];for(var e in n)Object.prototype.hasOwnProperty.call(n,e)&&t.push(e);return t}),Object.values||(Object.values=function(n){if(n!==Object(n))throw new TypeError("Object.values called on a non-object");var t=[];for(var e in n)Object.prototype.hasOwnProperty.call(n,e)&&t.push(n[e]);return t});var sn=["null","undefined","boolean","number","string","date","regexp"],cn={$addToSet:function(n,t){return q(this.$push(n,t))},$sum:function(n,t){return a(n)?i(t)?n.length*t:this.$push(n,t).filter(i).reduce(function(n,t){return n+t},0):0},$max:function(n,t){return this.$push(n,t).reduce(function(n,t){return h(n)||t>n?t:n},void 0)},$min:function(n,t){return this.$push(n,t).reduce(function(n,t){return h(n)||t<n?t:n},void 0)},$avg:function(n,t){var e=this.$push(n,t).filter(i);return e.reduce(function(n,t){return n+t},0)/(e.length||1)},$push:function(n,t){return h(t)?n:n.map(function(n){return rn(n,t,null)})},$first:function(n,t){return n.length>0?rn(n[0],t):void 0},$last:function(n,t){return n.length>0?rn(n[n.length-1],t):void 0},$stdDevPop:function(n,t){return on({data:this.$push(n,t).filter(i),sampled:!1})},$stdDevSamp:function(n,t){return on({data:this.$push(n,t).filter(i),sampled:!0})}},fn={$:function(n,t,e){O("$ not implemented")},$elemMatch:function(n,t,e){var r=W(n,e),u=new bn(t);if(!h(r)&&a(r))for(var o=0;o<r.length;o++)if(u.test(r[o]))return[r[o]]},$slice:function(n,t,e){var r=W(n,e);return a(r)?a(t)?un(r,t[0],t[1]):i(t)?un(r,t):void O("Invalid argument type for $slice projection operator"):r},$stdDevPop:function(n,t,e){return on({data:rn(n,t,e),sampled:!1})},$stdDevSamp:function(n,t,e){return on({data:rn(n,t,e),sampled:!0})}},vn={$addFields:function(e,r){var u=w(r);return e.map(function(e){return e=t(e),M(u,function(t){var u=r[t],o=void 0;if(l(u)){var i=w(u),a=i.filter(function(n){return 0===n.indexOf("$")});b(a)||(n(1===i.length,"Can have only one root operator in $addFields"),a=a[0],u=u[a],o=rn(e,u,a))}else o=rn(e,u,null);Z(e,t,function(n,t){n[t]=o},!0)}),e})},$group:function(n,t){var e=t[V()],r=F(n,function(n){return rn(n,e,e)}),u=[];return delete t[V()],M(r.keys,function(n,e){var o={};d(n)||(o[V()]=n),M(t,function(n,t){o[t]=B(r.groups[e],t,n)}),u.push(o)}),u},$lookup:function(e,r){function u(n){return C(h(n)?null:n)}var i=r.from,l=r.localField,s=r.foreignField,c=r.as,f="Invalid $lookup expression. ";n(a(i),f+"'from' must be an array"),n(o(s),f+"'foreignField' must be a string"),n(o(l),f+"'localField' must be a string"),n(o(c),f+"'as' must be a string");var v=[],p={};if(i.length<=e.length)M(i,function(n,t){var e=u(n[s]);p[e]=p[e]||[],p[e].push(t)}),M(e,function(n){var e=u(n[l]),r=p[e]||[],o=t(n);o[c]=r.map(function(n){return t(i[n])}),v.push(o)});else{M(e,function(n,t){var e=u(n[l]);p[e]=p[e]||[],p[e].push(t)});var d={};M(i,function(n){var r=u(n[s]);M(p[r]||[],function(r){var u=d[r]||t(e[r]);u[c]=u[c]||[],u[c].push(t(n)),d[r]=u})});for(var g=0,$=w(d).length;g<$;g++)v.push(d[g])}return v},$match:function(n,t){return new bn(t).find(n).all()},$project:function(e,r){if(b(r))return e;var u=[],a=w(r),s=!1,c=V(),f=[!1,!1];if(M(r,function(t,e){e!==c&&(0===t||!1===t?f[0]=!0:f[1]=!0,n(f[0]!==f[1],"Projection cannot have a mix of inclusion and exclusion."))}),g(a,c)){var v=r[c];0!==v&&!1!==v||(a=a.filter($.bind(null,[c])),n($(a,c),"Must not contain collections id key"),s=b(a))}else a.push(c);return M(e,function(n){var e={},f=!1,v=!1,h=[];s&&h.push(c),M(a,function(u){var a=r[u],s=void 0;if(u!==c&&0===a&&(v=!0),u===c&&b(a))s=n[u];else if(o(a))s=rn(n,a,u);else if(1===a||!0===a);else{if(!l(a))return void h.push(u);var p=w(a);p=!(p.length>1)&&p[0],g(H(Dn),p)?"$slice"===p?_(a[p]).every(i)?(s=fn[p](n,a[p],u),f=!0):s=rn(n,a,u):s=fn[p](n,a[p],u):s=rn(n,a,u)}var $=t(X(n,u));d($)||Object.assign(e,$),d(s)||nn(e,u,t(s))}),(f||v||s)&&(e=Object.assign(t(n),e),M(h,function(n){return tn(e,n)})),u.push(e)}),u},$limit:function(n,t){return n.slice(0,t)},$skip:function(n,t){return n.slice(t)},$unwind:function(e,r){var u=[],o=r.substr(1);return M(e,function(e){var r=K(e,o);n(a(r),"Target field '"+o+"' is not of type Array."),M(r,function(n){var r=t(e);r[o]=n,u.push(r)})}),u},$sort:function(n,t){if(!b(t)&&l(t)){M(w(t).reverse(),function(e){var r=F(n,function(n){return W(n,e)}),u={},o=function(n){return u[C(n)]},i=D(r.keys,function(n,t){return u[C(n)]=t,n});-1===t[e]&&i.reverse(),n=[],M(i,function(t){return R(n,r.groups[o(t)])})})}return n},$sortByCount:function(n,t){var e={count:{$sum:1}};return e[V()]=t,this.$sort(this.$group(n,e),{count:-1})},$sample:function(t,e){var r=e.size;n(i(r),"$sample size must be a positive integer");for(var u=[],o=t.length,a=0;a<r;a++){var l=Math.floor(Math.random()*o);u.push(t[l])}return u},$count:function(t,e){n(o(e)&&""!==e.trim()&&-1===e.indexOf(".")&&"$"!==e.trim()[0],"Invalid expression value for $count");var r={};return r[e]=t.length,r},$replaceRoot:function(t,e){var r=e.newRoot,u=[];return M(t,function(t){t=rn(t,r,null),n(l(t),"$replaceRoot expression must return a valid JS object"),u.push(t)}),u},$redact:function(n,e){return n.map(function(n){return an(t(n),e)})},$bucket:function(t,r){var u=r.boundaries,o=r.default,i=u[0],a=u[u.length-1],l=r.output||{count:{$sum:1}};n(u.length>2,"$bucket 'boundaries' expression must have at least 3 elements");for(var s=e(i),c=0,f=u.length-1;c<f;c++)n(s===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(o)||e(r.default)!==e(i)||n(i>r.default||a<r.default,"$bucket 'default' expression must be out of boundaries range");var v={};return M(u,function(n){return v[n]=[]}),h(o)||(v[o]=[]),M(t,function(t){var e=rn(t,r.groupBy,null);if(h(e)||e<i||e>=a)n(!h(o),"$bucket require a default for out of range values"),v[o].push(t);else if(e>=i&&e<a){var l=U(u,e),s=u[Math.max(0,l-1)];v[s].push(t)}else O("$bucket 'groupBy' expression must resolve to a value in range of boundaries")}),u.pop(),h(o)||u.push(o),A(u,function(n){var t=B(v[n],null,l);return Object.assign(t,{_id:n})})},$bucketAuto:function(t,e){var r=e.output||{count:{$sum:1}},u=e.groupBy,o=(e.granularity,e.buckets);n(o>0,"The $bucketAuto 'buckets' field must be greater than 0, but found: "+o);var i=Math.round(t.length/o);i<1&&(i=1);for(var a=L(rn),l={},s=[],c=D(t,function(n){var t=a(n,u,null);return h(t)?s.push(n):(l[t]||(l[t]=[]),l[t].push(n)),t}),f=[],v=0,p=0,d=c.length;p<o&&v<d;p++){for(var g={},$=[],y=0;y<i&&v<d;y++){var m=a(c[v],u,null);if(h(m)&&(m=null),R($,h(m)?s:l[m]),v+=h(m)?s.length:l[m].length,x(g,"min")||(g.min=m),f.length>0){f[f.length-1]._id.max=g.min}}p==o-1&&R($,c.slice(v)),f.push(Object.assign(B($,null,r),{_id:g}))}return f.length>0&&(f[f.length-1]._id.max=a(c[c.length-1],u,null)),f},$facet:function(n,t){return A(t,function(t){return Y(n,t)})}},hn="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},pn=function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")},dn=function(){function n(n,t){for(var e=0;e<t.length;e++){var r=t[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}return function(t,e,r){return e&&n(t.prototype,e),r&&n(t,r),t}}(),gn=function(){function n(t){pn(this,n),this.__operators=t}return dn(n,[{key:"run",value:function(n,t){return b(this.__operators)||M(this.__operators,function(e){var r=w(e);1===r.length&&g(H(Cn),r[0])?(r=r[0],n=t instanceof bn?vn[r].call(t,n,e[r]):vn[r](n,e[r])):O("Invalid aggregation operator '"+r+"'")}),n}}]),n}(),$n=function(){function t(n,e,r){pn(this,t),this.__query=e,this.__collection=n,this.__projection=r||e.__projection,this.__operators={},this.__result=!1,this.__position=0}return dn(t,[{key:"_fetch",value:function(){var t=this;if(!1!==this.__result)return this.__result;l(this.__projection)&&Object.assign(this.__operators,{$project:this.__projection}),n(a(this.__collection),"Input collection is not of valid type. Must be an Array."),this.__result=this.__collection.filter(this.__query.test,this.__query);var e=[];if(M(["$sort","$skip","$limit","$project"],function(n){if(x(t.__operators,n)){var r={};r[n]=t.__operators[n],e.push(r)}}),e.length>0){var r=new gn(e);this.__result=r.run(this.__result,this.__query)}return this.__result}},{key:"all",value:function(){return this._fetch()}},{key:"first",value:function(){return this.count()>0?this._fetch()[0]:null}},{key:"last",value:function(){return this.count()>0?this._fetch()[this.count()-1]:null}},{key:"count",value:function(){return this._fetch().length}},{key:"skip",value:function(n){return Object.assign(this.__operators,{$skip:n}),this}},{key:"limit",value:function(n){return Object.assign(this.__operators,{$limit:n}),this}},{key:"sort",value:function(n){return Object.assign(this.__operators,{$sort:n}),this}},{key:"next",value:function(){return this.hasNext()?this._fetch()[this.__position++]:null}},{key:"hasNext",value:function(){return this.count()>this.__position}},{key:"max",value:function(n){return cn.$max(this._fetch(),n)}},{key:"min",value:function(n){return cn.$min(this._fetch(),n)}},{key:"map",value:function(n){return this._fetch().map(n)}},{key:"forEach",value:function(n){M(this._fetch(),n)}},{key:Symbol.iterator,value:function(){var n=this;return{next:function(){return n.hasNext()?{done:!1,value:n.next()}:{done:!0}}}}}]),t}(),yn={$eq:function(n,t){if(S(n,t))return!0;if(h(n)&&h(t))return!0;if(a(n)){if(!k(n,{isMulti:!0}))return-1!==n.findIndex(S.bind(null,t));try{for(var e=0;e<n.length;e++)if(this.$eq(n[e],t))return!0}finally{N(n)}}return!1},$ne:function(n,t){return!this.$eq(n,t)},$in:function(n,t){return n=_(n),E(n,t).length>0},$nin:function(n,t){return h(n)||!this.$in(n,t)},$lt:function(n,t){return void 0!==(n=_(n).find(function(n){return n<t}))},$lte:function(n,t){return void 0!==(n=_(n).find(function(n){return n<=t}))},$gt:function(n,t){return void 0!==(n=_(n).find(function(n){return n>t}))},$gte:function(n,t){return void 0!==(n=_(n).find(function(n){return n>=t}))},$mod:function(n,t){return void 0!==(n=_(n).find(function(n){return i(n)&&a(t)&&2===t.length&&n%t[0]===t[1]}))},$regex:function(n,t){return void 0!==(n=_(n).find(function(n){return o(n)&&f(t)&&!!n.match(t)}))},$exists:function(n,t){return(!1===t||0===t)&&h(n)||(!0===t||1===t)&&!h(n)},$all:function(n,t){var e=!1;if(a(n)&&a(t))for(var r=0,u=t.length;r<u;r++){if(!l(t[r])||!g(w(t[r]),"$elemMatch"))return E(t,n).length===u;e=e||this.$elemMatch(n,t[r].$elemMatch)}return e},$size:function(n,t){return a(n)&&i(t)&&n.length===t},$elemMatch:function(n,t){if(a(n)&&!b(n))for(var e=new bn(t),r=0,u=n.length;r<u;r++)if(e.test(n[r]))return!0;return!1},$type:function(n,t){switch(t){case 1:case"double":return i(n)&&-1!==(n+"").indexOf(".");case 2:case"string":case 5:case"bindata":return o(n);case 3:case"object":return l(n);case 4:case"array":return a(n);case 6:case"undefined":return h(n);case 8:case"bool":return u(n);case 9:case"date":return c(n);case 10:case"null":return p(n);case 11:case"regex":return f(n);case 16:case"int":return i(n)&&n<=2147483647&&-1===(n+"").indexOf(".");case 18:case"long":return i(n)&&n>2147483647&&n<=0x8000000000000000&&-1===(n+"").indexOf(".");case 19:case"decimal":return i(n);default:return!1}}},mn={$and:function(t,e){n(a(e),"Invalid expression: $and expects value to be an Array");var r=[];return M(e,function(n){return r.push(new bn(n))}),{test:function(n){for(var t=0;t<r.length;t++)if(!r[t].test(n))return!1;return!0}}},$or:function(t,e){n(a(e),"Invalid expression. $or expects value to be an Array");var r=[];return M(e,function(n){return r.push(new bn(n))}),{test:function(n){for(var t=0;t<r.length;t++)if(r[t].test(n))return!0;return!1}}},$nor:function(t,e){n(a(e),"Invalid expression. $nor expects value to be an Array");var r=this.$or("$or",e);return{test:function(n){return!r.test(n)}}},$not:function(n,t){var e={};e[n]=en(t);var r=new bn(e);return{test:function(n){return!r.test(n)}}},$where:function(n,t){return v(t)||(t=new Function("return "+t+";")),{test:function(n){return!0===t.call(n)}}}};M(yn,function(n,t){mn[t]=function(n,t){return function(e,r){return{test:function(u){var o=W(u,e);return n.call(t,o,r)}}}}(n,yn)});var bn=function(){function t(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};pn(this,t),this.__criteria=n,this.__projection=e,this.__compiled=[],this._compile()}return dn(t,[{key:"_compile",value:function(){var t=this;if(!b(this.__criteria)){n(l(this.__criteria),"Criteria must be of type Object");var e=void 0;M(this.__criteria,function(n,r){"$where"===r?e={field:r,expr:n}:g(["$and","$or","$nor"],r)?t._processOperator(r,r,n):(n=en(n),M(n,function(n,e){t._processOperator(r,e,n)})),l(e)&&t._processOperator(e.field,e.field,e.expr)})}}},{key:"_processOperator",value:function(n,t,e){g(H(Fn),t)?this.__compiled.push(mn[t](n,e)):O("Invalid query operator '"+t+"' detected")}},{key:"test",value:function(n){for(var t=0,e=this.__compiled.length;t<e;t++)if(!this.__compiled[t].test(n))return!1;return!0}},{key:"find",value:function(n,t){return new $n(n,this,t)}},{key:"remove",value:function(n){var t=this;return n.reduce(function(n,e){return t.test(e)||n.push(e),n},[])}}]),t}(),_n={$abs:function(n,t){var e=rn(n,t,null);return null===e||void 0===e?null:Math.abs(e)},$add:function(n,t){return rn(n,t,null).reduce(function(n,t){return n+t},0)},$ceil:function(t,e){var r=rn(t,e,null);return isNaN(r)?NaN:h(r)?null:(n(i(r),"$ceil must be a valid expression that resolves to a number."),Math.ceil(r))},$divide:function(n,t){var e=rn(n,t,null);return e[0]/e[1]},$exp:function(t,e){var r=rn(t,e,null);return isNaN(r)?NaN:h(r)?null:(n(i(r),"$exp must be a valid expression that resolves to a number."),Math.exp(r))},$floor:function(t,e){var r=rn(t,e,null);return isNaN(r)?NaN:h(r)?null:(n(i(r),"$floor must be a valid expression that resolves to a number."),Math.floor(r))},$ln:function(t,e){var r=rn(t,e,null);return isNaN(r)?NaN:h(r)?null:(n(i(r),"$ln must be a valid expression that resolves to a number."),Math.log(r))},$log:function(t,e){var r=rn(t,e,null);return n(a(r)&&2===r.length,"$log must be a valid expression that resolves to an array of 2 items"),r.some(isNaN)?NaN:r.some(h)?null:(n(r.every(i),"$log expression must resolve to array of 2 numbers"),Math.log10(r[0])/Math.log10(r[1]))},$log10:function(t,e){var r=rn(t,e,null);return isNaN(r)?NaN:h(r)?null:(n(i(r),"$log10 must be a valid expression that resolves to a number."),Math.log10(r))},$mod:function(n,t){var e=rn(n,t,null);return e[0]%e[1]},$multiply:function(n,t){return rn(n,t,null).reduce(function(n,t){return n*t},1)},$pow:function(t,e){var r=rn(t,e,null);return n(a(r)&&2===r.length&&r.every(i),"$pow must be a valid expression that resolves to an array of 2 numbers"),n(!(0===r[0]&&r[1]<0),"$pow cannot raise 0 to a negative exponent"),Math.pow(r[0],r[1])},$sqrt:function(t,e){var r=rn(t,e,null);return isNaN(r)?NaN:h(r)?null:(n(i(r)&&r>0,"$sqrt must be a valid expression that resolves to a non-negative number."),Math.sqrt(r))},$subtract:function(n,t){var e=rn(n,t,null);return e[0]-e[1]},$trunc:function(t,e){var r=rn(t,e,null);return isNaN(r)?NaN:h(r)?null:(n(i(r)&&r>0,"$trunc must be a valid expression that resolves to a non-negative number."),Math.trunc(r))}},xn={$arrayElemAt:function(t,e){var r=rn(t,e,null);n(a(r)&&2===r.length,"$arrayElemAt expression must resolve to an array of 2 elements"),n(a(r[0]),"First operand to $arrayElemAt must resolve to an array"),n(i(r[1]),"Second operand to $arrayElemAt must resolve to an integer");var u=r[1];return r=r[0],u<0&&Math.abs(u)<=r.length?r[u+r.length]:u>=0&&u<r.length?r[u]:void 0},$concatArrays:function(t,e){var r=rn(t,e,null);return n(a(r)&&2===r.length,"$concatArrays expression must resolve to an array of 2 elements"),r.some(h)?null:r[0].concat(r[1])},$filter:function(t,e){var r=rn(t,e.input,null),u=e.as,o=e.cond;return n(a(r),"'input' expression for $filter must resolve to an array"),r.filter(function(n){var t={};return t["$"+u]=n,!0===rn(t,o,null)})},$indexOfArray:function(t,e){var r=rn(t,e,null);if(h(r))return null;var u=r[0];if(h(u))return null;n(a(u),"First operand for $indexOfArray must resolve to an array.");var o=r[1];if(h(o))return null;var i=r[2]||0,l=r[3]||u.length;return l<u.length&&(u=u.slice(i,l)),u.indexOf(o,i)},$isArray:function(n,t){return a(rn(n,t,null))},$range:function(n,t){for(var e=rn(n,t,null),r=e[0],u=e[1],o=e[2]||1,i=[];r<u&&o>0||r>u&&o<0;)i.push(r),r+=o;return i},$reverseArray:function(t,e){var r=rn(t,e,null);if(h(r))return null;n(a(r),"$reverseArray expression must resolve to an array");for(var u=[],o=r.length-1;o>-1;o--)u.push(r[o]);return u},$reduce:function(t,e){var r=rn(t,e.input,null),u=rn(t,e.initialValue,null),o=e.in;return h(r)?null:(n(a(r),"'input' expression for $reduce must resolve to an array"),r.reduce(function(n,t){return rn({$value:n,$this:t},o,null)},u))},$size:function(n,t){var e=rn(n,t,null);return a(e)?e.length:void 0},$slice:function(n,t){var e=rn(n,t,null);return un(e[0],e[1],e[2])},$zip:function(t,e){var r=rn(t,e.inputs,null),o=e.useLongestLength||!1;n(a(r),"'inputs' expression must resolve to an array"),n(u(o),"'useLongestLength' must be a boolean"),a(e.defaults)&&n(y(o),"'useLongestLength' must be set to true to use 'defaults'");for(var i=0,l=0,s=r.length;l<s;l++){var c=r[l];if(h(c))return null;n(a(c),"'inputs' expression values must resolve to an array or null"),i=o?Math.max(i,c.length):Math.min(i||c.length,c.length)}for(var f=[],v=e.defaults||[],p=0;p<i;p++)!function(n){var t=r.map(function(t,e){return h(t[n])?v[e]||null:t[n]});f.push(t)}(p);return f}},On={$and:function(n,t){var e=rn(n,t,null);return y(e)&&e.every(y)},$or:function(n,t){var e=rn(n,t,null);return y(e)&&e.some(y)},$not:function(n,t){return!rn(n,t[0],null)}},wn={$cmp:function(n,t){var e=rn(n,t,null);return e[0]>e[1]?1:e[0]<e[1]?-1:0}};M(["$eq","$ne","$gt","$gte","$lt","$lte","$in","$nin"],function(n){wn[n]=function(t,e){var r=rn(t,e,null);return yn[n](r[0],r[1])}});var jn={$cond:function(t,e){var r=void 0,u=void 0,o=void 0;return a(e)?(n(3===e.length,"Invalid arguments for $cond operator"),r=e[0],u=e[1],o=e[2]):l(e)&&(r=e.if,u=e.then,o=e.else),rn(t,r,null)?rn(t,u,null):rn(t,o,null)},$switch:function(t,e){n(e.branches,"Invalid arguments for $switch operator");var r=e.branches.find(function(e){return n(e.case&&e.then,"Invalid arguments for $switch operator"),rn(t,e.case,null)});return r?rn(t,r.then,null):e.default?rn(t,e.default,null):void O("Invalid arguments for $switch operator")},$ifNull:function(t,e){n(a(e)&&2===e.length,"Invalid arguments for $ifNull operator");var r=rn(t,e,null);return null===r[0]||void 0===r[0]?r[1]:r[0]}},kn={"%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],"%%":"%"},Nn={$dayOfYear:function(n,t){var e=rn(n,t,null);if(c(e)){var r=new Date(e.getFullYear(),0,0),u=e-r;return Math.round(u/864e5)}},$dayOfMonth:function(n,t){var e=rn(n,t,null);return c(e)?e.getDate():void 0},$dayOfWeek:function(n,t){var e=rn(n,t,null);return c(e)?e.getDay()+1:void 0},$year:function(n,t){var e=rn(n,t,null);return c(e)?e.getFullYear():void 0},$month:function(n,t){var e=rn(n,t,null);return c(e)?e.getMonth()+1:void 0},$week:function(n,t){var e=rn(n,t,null);e=new Date(+e),e.setHours(0,0,0),e.setDate(e.getDate()+4-(e.getDay()||7));var r=new Date(e.getFullYear(),0,1);return Math.floor(((e-r)/864e5+1)/7)},$hour:function(n,t){var e=rn(n,t,null);return c(e)?e.getUTCHours():void 0},$minute:function(n,t){var e=rn(n,t,null);return c(e)?e.getMinutes():void 0},$second:function(n,t){var e=rn(n,t,null);return c(e)?e.getSeconds():void 0},$millisecond:function(n,t){var e=rn(n,t,null);return c(e)?e.getMilliseconds():void 0},$dateToString:function(n,t){for(var e=t.format,r=rn(n,t.date,null),u=e.match(/(%%|%Y|%m|%d|%H|%M|%S|%L|%j|%w|%U)/g),o=0,i=u.length;o<i;o++){var l=kn[u[o]],s=l;if(a(l)){var c=this[l[0]],f=l[1];s=G(c.call(this,n,r),f)}e=e.replace(u[o],s)}return e}},Mn={$literal:function(n,t){return t}},An={$setEquals:function(n,t){var e=rn(n,t,null),r=q(e[0]),u=q(e[1]);return r.length===u.length&&r.length===E(r,u).length},$setIntersection:function(n,t){var e=rn(n,t,null);return E(e[0],e[1])},$setDifference:function(n,t){var e=rn(n,t,null);return e[0].filter($.bind(null,e[1]))},$setUnion:function(n,t){var e=rn(n,t,null);return I(e[0],e[1])},$setIsSubset:function(n,t){var e=rn(n,t,null);return E(e[0],e[1]).length===e[0].length},$anyElementTrue:function(n,t){return rn(n,t,null)[0].some(y)},$allElementsTrue:function(n,t){return rn(n,t,null)[0].every(y)}},En={$concat:function(n,t){var e=rn(n,t,null);return[null,void 0].some(g.bind(null,e))?null:e.join("")},$indexOfBytes:function(t,e){var r=rn(t,e,null);if(h(r[0]))return null;n(o(r[0]),"$indexOfBytes first operand must resolve to a string"),
n(o(r[1]),"$indexOfBytes second operand must resolve to a string");var u=r[0],a=r[1],l=r[2],s=r[3];if(n(h(l)||i(l)&&l>=0&&Math.round(l)===l,"$indexOfBytes third operand must resolve to a non-negative integer"),l=l||0,n(h(s)||i(s)&&s>=0&&Math.round(s)===s,"$indexOfBytes fourth operand must resolve to a non-negative integer"),s=s||u.length,l>s)return-1;var c=u.substring(l,s).indexOf(a);return c>-1?c+l:c},$split:function(t,r){var u=rn(t,r,null);return n(o(u[0]),"$split requires an expression that evaluates to a string as a first argument, found: "+e(u[0])),n(o(u[1]),"$split requires an expression that evaluates to a string as a second argument, found: "+e(u[1])),u[0].split(u[1])},$strcasecmp:function(n,t){var e=rn(n,t,null);return e[0]=b(e[0])?"":e[0].toUpperCase(),e[1]=b(e[1])?"":e[1].toUpperCase(),e[0]>e[1]?1:e[0]<e[1]?-1:0},$substr:function(n,t){var e=rn(n,t,null);return o(e[0])?e[1]<0?"":e[2]<0?e[0].substr(e[1]):e[0].substr(e[1],e[2]):""},$toLower:function(n,t){var e=rn(n,t,null);return b(e)?"":e.toLowerCase()},$toUpper:function(n,t){var e=rn(n,t,null);return b(e)?"":e.toUpperCase()}},In={$map:function(t,e){var r=rn(t,e.input,null);n(a(r),"Input expression for $map must resolve to an array");var u=e.as,o=e.in,i="$"+u,l=t[i];return r.map(function(n){t[i]=n;var e=rn(t,o,null);return d(l)?delete t[i]:t[i]=l,e})},$let:function(n,t){var e=t.vars,r=t.in,u={},o=w(e);M(o,function(t){var r=rn(n,e[t],null),o="$"+t;u[o]=n[o],n[o]=r});var i=rn(n,r,null);return M(o,function(t){var e="$"+t;d(u[e])?delete n[e]:n[e]=u[e]}),i}},Sn=Object.assign({},_n,xn,On,wn,jn,Nn,Mn,An,En,In),qn={aggregate:Sn,group:cn,pipeline:vn,projection:fn,query:mn},Pn="aggregate",Tn="group",Cn="pipeline",Dn="projection",Fn="query",Rn={key:"_id"},Un={$$ROOT:function(n,t,e){return e.root},$$CURRENT:function(n,t,e){return n}},Ln={$$KEEP:function(n){return n},$$PRUNE:function(){},$$DESCEND:function(n,t,e){if(!x(t,"$cond"))return n;var r=void 0;return M(n,function(u,o){s(u)&&(a(u)?(r=[],M(u,function(n){l(n)&&(n=an(n,t,e)),h(n)||r.push(n)})):r=an(u,t,e),h(r)?delete n[o]:n[o]=r)}),n}},Bn=w(Un),Yn=w(Ln);return{_internal:ln,Aggregator:gn,CollectionMixin:{query:function(n,t){return new bn(n).find(this.toJSON(),t)},aggregate:function(n){return new gn(n).run(this.toJSON())}},Cursor:$n,OP_AGGREGATE:Pn,OP_GROUP:Tn,OP_PIPELINE:Cn,OP_PROJECTION:Dn,OP_QUERY:Fn,Query:bn,VERSION:"1.3.1",addOperators:Q,aggregate:Y,find:J,remove:z}});
//# sourceMappingURL=dist/mingo.map

@@ -1,10 +0,2 @@

require('core-js/fn/array/find')
require('core-js/fn/array/find-index')
require('core-js/fn/array/includes')
require('core-js/fn/object/assign')
require('core-js/fn/object/keys')
require('core-js/fn/object/values')
require('core-js/fn/function/bind')
require('core-js/fn/symbol/iterator')
import './polyfill'
import { _internal } from './internal'

@@ -17,3 +9,3 @@ import { Query, find, remove } from './query'

const VERSION = '1.3.0'
const VERSION = '1.3.1'

@@ -20,0 +12,0 @@ // mingo!

{
"name": "mingo",
"version": "1.3.0",
"version": "1.3.1",
"description": "JavaScript implementation of MongoDB query language",

@@ -30,6 +30,7 @@ "main": "dist/mingo.js",

"bson": "1.x.x",
"core-js": "2.x.x",
"gulp": ">=3.9.x",
"rollup": "^0.45.2",
"rollup-plugin-babel": "^2.7.1",
"rollup-plugin-commonjs": "^8.0.2",
"rollup-plugin-node-resolve": "^3.0.0",
"tape": ">=4.x.x",

@@ -36,0 +37,0 @@ "uglify-js": "2.x.x"

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

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc