@nextgis/properties-filter
Version:
Filtering objects by its properties using expressions
3 lines (2 loc) • 1.48 kB
JavaScript
var e=Object.defineProperty,r=Object.getOwnPropertySymbols,t=Object.prototype.hasOwnProperty,n=Object.prototype.propertyIsEnumerable,i=(r,t,n)=>t in r?e(r,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[t]=n;function o(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)}const l={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:(e,r)=>o(e,r),ilike:(e,r)=>o(e,r,!0)};function p(e){return 3===e.length&&"string"==typeof e[0]&&"string"==typeof e[1]}function c(e){return p(e)}function a(e,o){const l=((e,o)=>{for(var l in o||(o={}))t.call(o,l)&&i(e,l,o[l]);if(r)for(var l of r(o))n.call(o,l)&&i(e,l,o[l]);return e})({},e.properties);return!!l&&(l.$id=e.id,f(l,o))}function f(e,r){const t="string"==typeof r[0]?r[0]:"all",n=r=>{if(p(r)){const[t,n,i]=r,o=l[n];if(o){if(("like"===n||"ilike"===n)&&"string"==typeof t){let r="";const n=t.replace(/^%?(\w+)%?$/,(n,o)=>(r=e[o],t.replace(o,i)));return o(r,n)}return o(e[t],i)}return!1}return f(e,r)},i=r.filter(e=>Array.isArray(e));return"any"===t?i.some(n):i.every(n)}export{c as checkIfPropertyFilter,a as featureFilter,p as isPropertyFilter,f as propertiesFilter};
//# sourceMappingURL=properties-filter.esm-browser.prod.js.map