UNPKG

2.28 kBJavaScriptView Raw
1import{pickBy as e,startsWith as r,isNil as t,isEmpty as o}from"lodash";import{camelizeKeys as n}from"humps";function i(i){var a=e(i,function(e,t){return!r(t,"_")}),u=e(i,function(e,t){return r(t,"_")}),s={},f=u._limit,c=u._offset,l=u._sort,p=u._populate,_=u._select,$=u._group,g=function(e,r){var t={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&-1===r.indexOf(o)&&(t[o]=e[o]);return t}(u,["_limit","_offset","_sort","_populate","_select","_group"]);t(f)||(s.limit=Number(f)),t(c)||(s.offset=Number(c)),t(l)||(s.sort=l),t(p)||(s.populate=p),t(_)||(s.select=_),t($)||(s.group=$);var y=Object.keys(a).reduce(function(e,r){var t=a[r];if(!t)return e;if(Array.isArray(t))return e[r]={$in:t},e;var o=/(.+)_(gt|lt|gte|lte|ne)$/.exec(r);if(o){var n=o[1],i=o[2];return e[n]=e[n]||{},e[n]["$"+i]=t,e}return"string"!=typeof t?(e[r]=t,e):(t=t.trim(),(o=/(.+)_like/.exec(r))?(e[o[1]]={$regex:new RegExp(t,"i")},e):("q"===r?e.$text={$search:t}:e[r]="true"===t||"false"!==t&&("*"===t?{$ne:[]}:"none"===t?{$eq:[]}:t),e))},{});return o(y)||(s.filter=n(y,function(e,r){return"id"===e?"_id":r(e)})),Object.assign({},s,g)}function a(e,r){return e+"_"+r.replace("$","")}function u(e){void 0===e&&(e={});var r=e.limit,o=e.offset,n=e.sort,i=e.populate,u=e.select,s=e.group,f=e.filter;void 0===f&&(f={});var c=function(e,r){var t={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&-1===r.indexOf(o)&&(t[o]=e[o]);return t}(e,["limit","offset","sort","populate","select","group","filter"]),l={};for(var p in t(r)||(l._limit=Number(r)),t(o)||(l._offset=Number(o)),t(n)||(l._sort=n),t(i)||(l._populate=i),t(u)||(l._select=u),t(s)||(l._group=s),f){var _=f[p];if("$text"!==p)if("object"!=typeof _)l[p]=_;else for(var $ in _)switch($){case"$lt":case"$gt":case"$lte":case"$gte":l[a(p,$)]=_[$];break;case"$in":l[p]=_[$];break;case"$ne":Array.isArray(_[$])&&0===_[$].length?l[p]="*":l[a(p,$)]=_[$];break;case"$eq":Array.isArray(_[$])&&0===_[$].length?l[p]="none":l[a(p,$)]=_[$];break;case"$regex":l[a(p,"$like")]=_[$].source}else l.q=_.$search}return Object.assign({},l,c)}export default function(e){return void 0===e&&(e={}),function(e,r){return e.querystring&&(e.rawQuery=e.query,e.query=i(e.rawQuery)),r()}};export{i as normalize,u as denormalize};
2//# sourceMappingURL=index.mjs.map