mongoose-smart-query 0.1.2 → 0.1.3

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,"."),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;
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:[]},c={next:e(0),throw:e(1),return:e(2)};return"function"==typeof Symbol&&(c[Symbol.iterator]=function(){return this}),c;function e(r){return function(e){var t=[r,e];if(a)throw new TypeError("Generator is already executing.");for(;u=c&&t[c=0]?0: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":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,d=void 0===t?"-_id":t,t=e.defaultLimit,y=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,b=void 0===t?"$sort":t,t=e.queryName,m=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])||y;function u(){var e,d={},y={};for(e in h)!function(e){var t,r=g.path(e),n=r?d:y;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:d,$foreignMatch:y}}function o(){return h[w]?[{$unwind:{path:"$".concat(h[w]),preserveNullAndEmptyArrays:!0}}]:[]}var a,i,s=function(){var e,t={};if(h[m]&&x)for(var r=x.split(" "),n=h[m].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[b]){if(!d)return{};h[b]=d}for(var e=/(-)?([\w.]+)/g,t={},r={};null!==(o=e.exec(h[b]));){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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mongoose-smart-query",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Optimize rest requests",
5
5
  "main": "./dist/mongoose-smart-query.js",
6
6
  "types": "./dist/mongoose-smart-query.d.ts",
@@ -31,20 +31,20 @@
31
31
  },
32
32
  "homepage": "https://github.com/mgyugcha/mongoose-smart-query#readme",
33
33
  "devDependencies": {
34
- "@types/jest": "^29.0.3",
35
- "@typescript-eslint/eslint-plugin": "^5.38.1",
36
- "@typescript-eslint/parser": "^5.38.1",
37
- "eslint": "^8.24.0",
38
- "eslint-config-prettier": "^8.5.0",
34
+ "@types/jest": "^29.5.0",
35
+ "@typescript-eslint/eslint-plugin": "^5.55.0",
36
+ "@typescript-eslint/parser": "^5.55.0",
37
+ "eslint": "^8.36.0",
38
+ "eslint-config-prettier": "^8.7.0",
39
39
  "eslint-config-standard": "^17.0.0",
40
- "eslint-plugin-import": "^2.26.0",
41
- "eslint-plugin-jest": "^27.0.4",
40
+ "eslint-plugin-import": "^2.27.5",
41
+ "eslint-plugin-jest": "^27.2.1",
42
42
  "eslint-plugin-node": "^11.1.0",
43
- "eslint-plugin-promise": "^6.0.1",
44
- "jest": "^29.0.3",
45
- "mongoose": "^6.6.2",
46
- "ts-jest": "^29.0.2",
47
- "typescript": "^4.8.3",
48
- "uglify-js": "^3.17.2"
43
+ "eslint-plugin-promise": "^6.1.1",
44
+ "jest": "^29.5.0",
45
+ "mongoose": "^7.0.2",
46
+ "ts-jest": "^29.0.5",
47
+ "typescript": "^5.0.2",
48
+ "uglify-js": "^3.17.4"
49
49
  }
50
50
  }
package/.eslintignore DELETED
@@ -1 +0,0 @@
1
- dist
package/.eslintrc.json DELETED
@@ -1,23 +0,0 @@
1
- {
2
- "env": {
3
- "es2021": true,
4
- "node": true,
5
- "jest/globals": true
6
- },
7
- "extends": ["standard", "prettier"],
8
- "parser": "@typescript-eslint/parser",
9
- "parserOptions": {
10
- "ecmaVersion": 12,
11
- "sourceType": "module"
12
- },
13
- "plugins": [
14
- "@typescript-eslint",
15
- "jest"
16
- ],
17
- "rules": {
18
- "comma-dangle": [
19
- "warn",
20
- "always-multiline"
21
- ]
22
- }
23
- }
package/.prettierignore DELETED
@@ -1,3 +0,0 @@
1
- dist
2
- node_modules
3
- *.json
package/.prettierrc.json DELETED
@@ -1,19 +0,0 @@
1
- {
2
- "arrowParens": "always",
3
- "bracketSameLine": false,
4
- "bracketSpacing": true,
5
- "embeddedLanguageFormatting": "auto",
6
- "htmlWhitespaceSensitivity": "css",
7
- "insertPragma": false,
8
- "jsxSingleQuote": false,
9
- "printWidth": 80,
10
- "proseWrap": "preserve",
11
- "quoteProps": "as-needed",
12
- "requirePragma": false,
13
- "semi": false,
14
- "singleQuote": true,
15
- "tabWidth": 2,
16
- "trailingComma": "all",
17
- "useTabs": false,
18
- "vueIndentScriptAndStyle": false
19
- }