mongoose-smart-query 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __assign=this&&this.__assign||function(){return(__assign=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},__awaiter=this&&this.__awaiter||function(e,i,s,u){return new(s=s||Promise)(function(r,t){function n(e){try{a(u.next(e))}catch(e){t(e)}}function o(e){try{a(u.throw(e))}catch(e){t(e)}}function a(e){var t;e.done?r(e.value):((t=e.value)instanceof s?t:new s(function(e){e(t)})).then(n,o)}a((u=u.apply(e,i||[])).next())})},__generator=this&&this.__generator||function(n,o){var a,i,s,u={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]},e={next:t(0),throw:t(1),return:t(2)};return"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function t(r){return function(e){var t=[r,e];if(a)throw new TypeError("Generator is already executing.");for(;u;)try{if(a=1,i&&(s=2&t[0]?i.return:t[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,t[1])).done)return s;switch(i=0,(t=s?[2&t[0],s.value]:t)[0]){case 0:case 1:s=t;break;case 4:return u.label++,{value:t[1],done:!1};case 5:u.label++,i=t[1],t=[0];continue;case 7:t=u.ops.pop(),u.trys.pop();continue;default:if(!(s=0<(s=u.trys).length&&s[s.length-1])&&(6===t[0]||2===t[0])){u=0;continue}if(3===t[0]&&(!s||t[1]>s[0]&&t[1]<s[3]))u.label=t[1];else if(6===t[0]&&u.label<s[1])u.label=s[1],s=t;else{if(!(s&&u.label<s[2])){s[2]&&u.ops.pop(),u.trys.pop();continue}u.label=s[2],u.ops.push(t)}}t=o.call(n,u)}catch(e){t=[6,e],i=0}finally{a=s=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}}},__spreadArray=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,o=0,a=t.length;o<a;o++)!n&&o in t||((n=n||Array.prototype.slice.call(t,0,o))[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))},mongoose_1=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.removeKeys=exports.stringToQuery=exports.getListOfPossibleLookups=void 0,require("mongoose"));function getListOfPossibleLookups(r){var e,n=[];for(e in r)!function(t){var e;if("object"!=typeof r[t])return t.includes(".")&&(e=t.split(/\.(.+)/),n.push(e[0]));n.push(t),e=getListOfPossibleLookups(r[t]),n=n.concat(e.map(function(e){return t+"."+e}))}(e);return n}function stringToQuery(e,a){void 0===a&&(a="1");e=(e=void 0===e?"":e).replace(/(})(?!$| *})|([\w.]+)(?= *{)|([\w.]+)(?=$| *})|([\w.]+)/g,function(e,t,r,n,o){return t?t+",":r?'"'.concat(r,'":'):n?'"'.concat(n,'": ').concat(a):o?'"'.concat(o,'": ').concat(a,","):""});return JSON.parse("{ ".concat(e," }"))}function parseValue(e,t){switch(t){case"ObjectID":return new mongoose_1.Types.ObjectId(e);case"Date":return new Date(e);case"Number":return Number(e);case"Boolean":return"boolean"==typeof e?e:"true"===e;default:return e}}function removeKeys(e,t){var r,n=__assign({},e);for(r in t)!n[r]||"object"==typeof t[r]&&(n[r]=removeKeys(n[r],t[r]),0!==Object.keys(n[r]).length)||delete n[r];return n}function default_1(g,e){var t=e.protectedFields,p=void 0===t?"":t,t=e.defaultFields,f=void 0===t?"_id":t,t=e.defaultSort,y=void 0===t?"-_id":t,t=e.defaultLimit,d=void 0===t?20:t,t=e.pageQueryName,_=void 0===t?"$page":t,t=e.limitQueryName,v=void 0===t?"$limit":t,t=e.fieldsQueryName,$=void 0===t?"$fields":t,t=e.sortQueryName,m=void 0===t?"$sort":t,t=e.queryName,b=void 0===t?"$q":t,t=e.unwindName,w=void 0===t?"$unwind":t,t=e.fieldsForDefaultQuery,x=void 0===t?"":t,t=e.allFieldsQueryName,O=void 0===t?"$getAllFields":t,t=e.getAllFieldsByDefault,A=void 0!==t&&t,k=stringToQuery(p);g.statics.smartQuery=function(e){e=this.__smartQueryGetPipeline(__assign({},e=void 0===e?{}:e));return this.aggregate(e)},g.statics.smartCount=function(r){return void 0===r&&(r={}),__awaiter(this,void 0,void 0,function(){var t;return __generator(this,function(e){switch(e.label){case 0:return t=this.__smartQueryGetPipeline(__assign({},r),!0),[4,this.aggregate(t)];case 1:return[2,0===(t=e.sent()).length?0:t[0].size]}})})},g.statics.__smartQueryGetPipeline=function(h,e){void 0===e&&(e=!1);var t=JSON.parse(JSON.stringify(h)),r=parseInt(h[_])||1,n=parseInt(h[v])||d;function u(){var e,y={},d={};for(e in h)!function(e){var t,r=g.path(e),n=r?y:d;if(!r&&!e.includes("."))return;var o,a=/(?:\{(\$?[\w ]+)\})?([^{}\n]+)/g,i=[];if("string"==typeof h[e]){for(;null!==(o=a.exec(h[e]));)i.push([o[0],o[1],o[2]]);for(var s=0,u=i;s<u.length;s++){var c=u[s],l=c[1],p=c[2];switch(l){case"$exists":n[e]={$exists:"false"!==p};break;case"$includes":n[e]={$regex:RegExp(p.replace(/[^\w]/g,"."),"i")};break;case"$in":var f=p.split(",").map(function(e){return parseValue(e.trim(),null==r?void 0:r.instance)});n[e]={$in:f};break;default:f=parseValue(p,null==r?void 0:r.instance);l?"object"==typeof n[e]?n[e][l]=f:n[e]=((t={})[l]=f,t):"string"==typeof p&&p.includes("$exists")?n[e]={$exists:!0,$ne:[]}:n[e]=f}}}else n[e]=parseValue(h[e],null==r?void 0:r.instance)}(e);return{$localMatch:y,$foreignMatch:d}}function o(){return h[w]?[{$unwind:{path:"$".concat(h[w]),preserveNullAndEmptyArrays:!0}}]:[]}var a,i,s=function(){var e,t={};if(h[b]&&x)for(var r=x.split(" "),n=h[b].replace(/[()[\\\]]/g,".")
|
|
1
|
+
"use strict";var __assign=this&&this.__assign||function(){return(__assign=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},__awaiter=this&&this.__awaiter||function(e,i,s,u){return new(s=s||Promise)(function(r,t){function n(e){try{a(u.next(e))}catch(e){t(e)}}function o(e){try{a(u.throw(e))}catch(e){t(e)}}function a(e){var t;e.done?r(e.value):((t=e.value)instanceof s?t:new s(function(e){e(t)})).then(n,o)}a((u=u.apply(e,i||[])).next())})},__generator=this&&this.__generator||function(n,o){var a,i,s,u={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]},e={next:t(0),throw:t(1),return:t(2)};return"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function t(r){return function(e){var t=[r,e];if(a)throw new TypeError("Generator is already executing.");for(;u;)try{if(a=1,i&&(s=2&t[0]?i.return:t[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,t[1])).done)return s;switch(i=0,(t=s?[2&t[0],s.value]:t)[0]){case 0:case 1:s=t;break;case 4:return u.label++,{value:t[1],done:!1};case 5:u.label++,i=t[1],t=[0];continue;case 7:t=u.ops.pop(),u.trys.pop();continue;default:if(!(s=0<(s=u.trys).length&&s[s.length-1])&&(6===t[0]||2===t[0])){u=0;continue}if(3===t[0]&&(!s||t[1]>s[0]&&t[1]<s[3]))u.label=t[1];else if(6===t[0]&&u.label<s[1])u.label=s[1],s=t;else{if(!(s&&u.label<s[2])){s[2]&&u.ops.pop(),u.trys.pop();continue}u.label=s[2],u.ops.push(t)}}t=o.call(n,u)}catch(e){t=[6,e],i=0}finally{a=s=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}}},__spreadArray=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,o=0,a=t.length;o<a;o++)!n&&o in t||((n=n||Array.prototype.slice.call(t,0,o))[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))},mongoose_1=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.removeKeys=exports.stringToQuery=exports.getListOfPossibleLookups=void 0,require("mongoose"));function getListOfPossibleLookups(r){var e,n=[];for(e in r)!function(t){var e;if("object"!=typeof r[t])return t.includes(".")&&(e=t.split(/\.(.+)/),n.push(e[0]));n.push(t),e=getListOfPossibleLookups(r[t]),n=n.concat(e.map(function(e){return t+"."+e}))}(e);return n}function stringToQuery(e,a){void 0===a&&(a="1");e=(e=void 0===e?"":e).replace(/(})(?!$| *})|([\w.]+)(?= *{)|([\w.]+)(?=$| *})|([\w.]+)/g,function(e,t,r,n,o){return t?t+",":r?'"'.concat(r,'":'):n?'"'.concat(n,'": ').concat(a):o?'"'.concat(o,'": ').concat(a,","):""});return JSON.parse("{ ".concat(e," }"))}function parseValue(e,t){switch(t){case"ObjectID":return new mongoose_1.Types.ObjectId(e);case"Date":return new Date(e);case"Number":return Number(e);case"Boolean":return"boolean"==typeof e?e:"true"===e;default:return e}}function removeKeys(e,t){var r,n=__assign({},e);for(r in t)!n[r]||"object"==typeof t[r]&&(n[r]=removeKeys(n[r],t[r]),0!==Object.keys(n[r]).length)||delete n[r];return n}function default_1(g,e){var t=e.protectedFields,p=void 0===t?"":t,t=e.defaultFields,f=void 0===t?"_id":t,t=e.defaultSort,y=void 0===t?"-_id":t,t=e.defaultLimit,d=void 0===t?20:t,t=e.pageQueryName,_=void 0===t?"$page":t,t=e.limitQueryName,v=void 0===t?"$limit":t,t=e.fieldsQueryName,$=void 0===t?"$fields":t,t=e.sortQueryName,m=void 0===t?"$sort":t,t=e.queryName,b=void 0===t?"$q":t,t=e.unwindName,w=void 0===t?"$unwind":t,t=e.fieldsForDefaultQuery,x=void 0===t?"":t,t=e.allFieldsQueryName,O=void 0===t?"$getAllFields":t,t=e.getAllFieldsByDefault,A=void 0!==t&&t,k=stringToQuery(p);g.statics.smartQuery=function(e){e=this.__smartQueryGetPipeline(__assign({},e=void 0===e?{}:e));return this.aggregate(e)},g.statics.smartCount=function(r){return void 0===r&&(r={}),__awaiter(this,void 0,void 0,function(){var t;return __generator(this,function(e){switch(e.label){case 0:return t=this.__smartQueryGetPipeline(__assign({},r),!0),[4,this.aggregate(t)];case 1:return[2,0===(t=e.sent()).length?0:t[0].size]}})})},g.statics.__smartQueryGetPipeline=function(h,e){void 0===e&&(e=!1);var t=JSON.parse(JSON.stringify(h)),r=parseInt(h[_])||1,n=parseInt(h[v])||d;function u(){var e,y={},d={};for(e in h)!function(e){var t,r=g.path(e),n=r?y:d;if(!r&&!e.includes("."))return;var o,a=/(?:\{(\$?[\w ]+)\})?([^{}\n]+)/g,i=[];if("string"==typeof h[e]){for(;null!==(o=a.exec(h[e]));)i.push([o[0],o[1],o[2]]);for(var s=0,u=i;s<u.length;s++){var c=u[s],l=c[1],p=c[2];switch(l){case"$exists":n[e]={$exists:"false"!==p};break;case"$includes":n[e]={$regex:RegExp(p.replace(/[^\w]/g,"."),"i")};break;case"$in":var f=p.split(",").map(function(e){return parseValue(e.trim(),null==r?void 0:r.instance)});n[e]={$in:f};break;default:f=parseValue(p,null==r?void 0:r.instance);l?"object"==typeof n[e]?n[e][l]=f:n[e]=((t={})[l]=f,t):"string"==typeof p&&p.includes("$exists")?n[e]={$exists:!0,$ne:[]}:n[e]=f}}}else n[e]=parseValue(h[e],null==r?void 0:r.instance)}(e);return{$localMatch:y,$foreignMatch:d}}function o(){return h[w]?[{$unwind:{path:"$".concat(h[w]),preserveNullAndEmptyArrays:!0}}]:[]}var a,i,s=function(){var e,t={};if(h[b]&&x)for(var r=x.split(" "),n=h[b].replace(/[()[\\\]*]/g,"."),o={$regex:RegExp(n,"i")},a=0,i=r;a<i.length;a++){var s=i[a];!!g.path(s)?(t.$or||(t.$or=[]),t.$or.push(((e={})["".concat(s)]=o,e))):(t.$or||(t.$or=[]),t.$or.push(((e={})["".concat(s)]=o,e)))}return n=u(),{$queryMatch:__assign(__assign({},{}),n.$localMatch),$foreignMatch:__assign(__assign({},t),n.$foreignMatch)}}(),c=(!(c=h)[$]&&f&&(c[$]=f),removeKeys(stringToQuery(c[$]),k)),l=(a=[],getListOfPossibleLookups(c).forEach(function(e){var t=g.path(e);t&&t.options.ref&&(t=t.options.ref,a.push({$lookup:{from:t,localField:e,foreignField:"_id",as:e}},{$unwind:{path:"$".concat(e),preserveNullAndEmptyArrays:!0}}))}),a);return e?i=__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([],0!==Object.keys(s.$queryMatch).length?[{$match:s.$queryMatch}]:[],!0),l,!0),o(),!0),0!==Object.keys(s.$foreignMatch).length?[{$match:s.$foreignMatch}]:[],!0),[{$count:"size"}],!1):(e=function(){if(!h[m]){if(!y)return{};h[m]=y}for(var e=/(-)?([\w.]+)/g,t={},r={};null!==(o=e.exec(h[m]));){var n=o[1],o=o[2];!!g.path(o)?t[o]=n?-1:1:r[o]=n?-1:1}return{$localSort:0!==Object.keys(t).length?t:void 0,$foreignSort:0!==Object.keys(r).length?r:void 0}}(),i=__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([],0!==Object.keys(s.$queryMatch).length?[{$match:s.$queryMatch}]:[],!0),e.$localSort?[{$sort:e.$localSort}]:[],!0),l,!0),o(),!0),0!==Object.keys(s.$foreignMatch).length?[{$match:s.$foreignMatch}]:[],!0),[{$skip:(r-1)*n},{$limit:n}],!1),!t[$]&&!0===A||"true"===(null==(e=h[O])?void 0:e.toString())?p&&i.push({$project:stringToQuery(p,"0")}):i.push({$project:c})),i}}exports.getListOfPossibleLookups=getListOfPossibleLookups,exports.stringToQuery=stringToQuery,exports.removeKeys=removeKeys,exports.default=default_1;
|