@nextgis/properties-filter
Version:
Filtering objects by its properties using expressions
3 lines (2 loc) • 1.21 kB
JavaScript
function e(e,r,t){if((r=String(r))===(e=String(e)))return!0;if(t&&r.toUpperCase()===e.toUpperCase())return!0;const n=`^${i=r,i.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}$`.replace(/%/g,".*").replace("_",".");var i;return null!==new RegExp(n,t?"i":"").exec(e)}Object.defineProperty(exports,"__esModule",{value:!0});const r={gt:(e,r)=>e>r,lt:(e,r)=>e<r,ge:(e,r)=>e>=r,le:(e,r)=>e<=r,eq:(e,r)=>e===r,ne:(e,r)=>e!==r,in:(e,r)=>-1!==r.indexOf(e),notin:(e,r)=>-1===r.indexOf(e),like:(r,t)=>e(r,t),ilike:(r,t)=>e(r,t,!0)};function t(e){return 3===e.length&&"string"==typeof e[0]&&"string"==typeof e[1]}function n(e,i){const o="string"==typeof i[0]?i[0]:"all",p=i=>{if(t(i)){const[t,n,o]=i,p=r[n];if(p){if(("like"===n||"ilike"===n)&&"string"==typeof t){let r="";const n=t.replace(/^%?(\w+)%?$/,(n,i)=>(r=e[i],t.replace(i,o)));return p(r,n)}return p(e[t],o)}return!1}return n(e,i)},s=i.filter(e=>Array.isArray(e));return"any"===o?s.some(p):s.every(p)}exports.checkIfPropertyFilter=function(e){return t(e)},exports.featureFilter=function(e,r){const t={...e.properties};return!!t&&(t.$id=e.id,n(t,r))},exports.isPropertyFilter=t,exports.propertiesFilter=n;
//# sourceMappingURL=properties-filter.cjs.prod.js.map
;