UNPKG

fast-json-query

Version:

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

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