/* faltu.js v0.1.0 file generated on Tue Oct 11 2016 18:35:47 (c) 2016 Moin Uddin (https://moin.im) Available under MIT license - https://github.com/moinism/faltu */ !function(a){"use strict";function b(a){return a.length||Object.keys(a).length||0}function c(a,b){var c=[],d=[];return a.forEach(function(a){void 0!==a[b]&&void 0===c[a[b]]&&(c[a[b]]=1,d.push(a))}),d}function d(a,b){return a==b?!0:"string"==typeof a?"string"==typeof b&&a.toLowerCase()==b.toLowerCase()||Array.isArray(b)&&b.indexOf(a)>-1:Array.isArray(a)?!Array.isArray(b)&&a.indexOf(b)>-1||Array.isArray(b)&&b.containsArray(a):null!==a&&"object"==typeof a?void 0!==a.exec&&null!==a.exec(b)||a.$ne&&b!==a.$ne||ba.$gt||b>=a.$gte:!1}function e(a,b){if(!b)return a;if("string"==typeof b)b={key:b,type:1};else if("object"==typeof b){var c=Object.keys(b)[0];b={key:c,type:b[c]}}return a.sort(function(a,c){return a[b.key]c[b.key]?1*b.type:0})}function f(a,b){return b&&"object"==typeof b&&null!==b?(b.unique&&(a=c(a,b.unique)),(b.sort||b.orderBy)&&(a=e(a,b.sort||b.orderBy)),b.skip&&b.skip>0&&b.limit&&b.limit>0&&(b.limit+=b.skip),a.slice(b.skip,b.limit)):a}Array.prototype.containsArray=function(a){var b=null,c=null;return arguments[1]?(b=arguments[1],c=arguments[2]):(b=0,c=0,this.sort(),a.sort()),b===a.length||(c=this.indexOf(a[b],c))>-1&&this.containsArray(a,++b,++c)};var g=function(a){var g=a,h={find:function(c,e){if(e=e||{},!c||null===c||null!==c&&0===b(c))return g=f(a,e),this;var h=g;g=[];var i=b(c),j=0;return h.forEach(function(a){j=0;for(var b in c)(void 0!==a[b]&&(c[b]===1/0||d(c[b],a[b]))||c[b]===-(1/0)&&!a[b])&&j++,j==i&&g.push(a)}),g=f(g,e),this},findOne:function(a){return this.find(a,{limit:1})},each:function(a){if("function"!=typeof a)throw Error('.each accepts a function, "'+typeof a+'" passed instead.');return g.forEach(function(b,c){a.call(this,b,c)}),this},filter:function(a){if("function"!=typeof a)throw Error('.filter accepts a function, "'+typeof a+'" passed instead.');var b=g;return g=[],b.forEach(function(b,c){a.call(this,b,c)===!0&&g.push(b)}),this},sort:function(a){return g=e(g,a),this},unique:function(a){return g=c(g,a),this},skip:function(a){return g=g.slice(a),this},limit:function(a){return g=g.slice(0,a),this},then:function(a){if("function"!=typeof a)throw Error('.then accepts a function, "'+typeof a+'" passed instead.');return a.call(null,g),this},count:function(){return g.length},get:function(){return g}};return h};return g.ANY=1/0,g.NONE=-(1/0),g.SORT={ASC:1,DSC:-1},g.match=RegExp,g.gt=function(a){return{$gt:a}},g.gte=function(a){return{$gte:a}},g.lt=function(a){return{$lt:a}},g.lte=function(a){return{$lte:a}},g.ne=function(a){return{$ne:a}},"object"==typeof module&&"object"==typeof module.exports?module.exports=g:"function"==typeof define&&define.amd?define("Faltu",[],function(){return g}):a.Faltu=g}(this);