UNPKG

fast-json-query

Version:

A lightweight and efficient JSON querying utility for filtering and searching data

3 lines (2 loc) 1.5 kB
function r(e,t,n={}){if(null==t)return e===t;if("object"==typeof t)for(const[u,o]of Object.entries(t))switch(u){case"$eq":return e===o;case"$ne":return e!==o;case"$gt":return"number"==typeof e&&"number"==typeof o&&e>o;case"$gte":return"number"==typeof e&&"number"==typeof o&&e>=o;case"$lt":return"number"==typeof e&&"number"==typeof o&&o>e;case"$lte":return"number"==typeof e&&"number"==typeof o&&o>=e;case"$in":return Array.isArray(o)&&o.includes(e);case"$nin":return Array.isArray(o)&&!o.includes(e);case"$regex":if(!(o instanceof RegExp))return!1;const t=e+"";return o.test(!1===n.caseSensitive?t.toLowerCase():t);case"$exists":return"boolean"==typeof o&&o===(void 0!==e);case"$type":return"string"==typeof o&&typeof e===o;case"$size":return Array.isArray(e)&&"number"==typeof o&&e.length===o;case"$contains":return Array.isArray(e)&&e.includes(o);case"$not":return!r(e,o,n);default:return!1}return e===t}function e(t,n,u={}){if(!n||"object"!=typeof n)return!0;for(const[s,a]of Object.entries(n)){if("$or"===s&&Array.isArray(a))return a.some((r=>e(t,r,u)));if("$and"===s&&Array.isArray(a))return a.every((r=>e(t,r,u)));if("$not"===s)return!e(t,a,u);if(!r((o=t,s.split(".").reduce(((r,e)=>r?r[e]:void 0),o)),a,u))return!1}var o;return!0}function t(r,t,n={}){if(!Array.isArray(r))throw Error("Input data must be an array");if(!t||"object"!=typeof t)throw Error("Query must be an object");return r.filter((r=>e(r,t,n)))}export{t as default,t as queryJSON}; //# sourceMappingURL=index.esm.js.map