UNPKG

@sliit-foss/request-query-utils

Version:

A package to isolate filters and sorts from a given request's query parameters

3 lines (2 loc) 1.94 kB
var f=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var x=(s,t)=>{for(var n in t)f(s,n,{get:t[n],enumerable:!0})},y=(s,t,n,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of m(t))!d.call(s,o)&&o!==n&&f(s,o,{get:()=>t[o],enumerable:!(c=h(t,o))||c.enumerable});return s};var R=s=>y(f({},"__esModule",{value:!0}),s);var j={};x(j,{default:()=>E,getRequestFilters:()=>u,getRequestQueryParams:()=>a,getRequestSorts:()=>p,mapToFilterQuery:()=>g});module.exports=R(j);var u=({req:s,returnObject:t=!1,mongooseSupport:n=!1})=>{let c=a({req:s,returnObject:t}),o=e=>e.replace(/filter\[/g,"").replace(/]/g,""),r=e=>e.includes("filter");if(t){let e={};return Object.keys(c).forEach(i=>{r(i)&&(e[o(i)]=c[i])}),n&&(e=Object.keys(e).reduce((i,l)=>(e[l].includes(",")?i[l]={$in:e[l].split(",")}:i[l]=e[l],i),{})),e}return c.filter(e=>r(e.key)).map(e=>(e.key=o(e.key),e))},p=({req:s,returnObject:t=!1})=>{let n=a({req:s,returnObject:t}),c=r=>r.includes("sort"),o=r=>{let e=1;return r.startsWith("-")&&(e=-1,r=r.replace("-","")),{key:r,value:e}};if(t){let r={};return Object.keys(n).forEach(e=>{c(e)&&(r[o(n[e]).key]=o(n[e]).value)}),r}return n.filter(r=>c(r.key)).map(r=>o(r.value))},a=({req:s,returnObject:t=!1})=>{let n=t?{}:[],c=decodeURIComponent(s.originalUrl).split("?");return c.length>1&&c[1].split("&").forEach(o=>{let[r,e]=o.split("=");if($(e)&&(e=new RegExp(e.slice(1,-1))),t)if(n[r]){let i=`${r}-${Date.now()}`;n[i]=e}else n[r]=e;else n.push({key:r,value:e})}),n},g=s=>Object.keys(s).map(t=>`filter[${t}]=${s[t]}`).join("&"),$=s=>{try{let t=s.match(/^([/~@;%#'])(.*?)\1([gimsuy]*)$/);return t?!!new RegExp(t[2],t[3]):!1}catch{return!1}},E={getRequestFilters:u,getRequestSorts:p,getRequestQueryParams:a,mapToFilterQuery:g};0&&(module.exports={getRequestFilters,getRequestQueryParams,getRequestSorts,mapToFilterQuery}); //# sourceMappingURL=index.js.map