UNPKG

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