@mcabreradev/filter
Version:
A powerful, SQL-like array filtering library for TypeScript and JavaScript with advanced pattern matching, MongoDB-style operators, deep object comparison, and zero dependencies
30 lines • 1.19 kB
JavaScript
import { createPredicateFn } from '../predicate';
export const applyLogicalOperators = (item, operator, expressions, config) => {
switch (operator) {
case '$and':
if (!Array.isArray(expressions)) {
throw new Error('$and operator requires an array of expressions');
}
return expressions.every((expr) => {
const predicate = createPredicateFn(expr, config);
return predicate(item);
});
case '$or':
if (!Array.isArray(expressions)) {
throw new Error('$or operator requires an array of expressions');
}
return expressions.some((expr) => {
const predicate = createPredicateFn(expr, config);
return predicate(item);
});
case '$not':
if (Array.isArray(expressions)) {
throw new Error('$not operator requires a single expression');
}
const predicate = createPredicateFn(expressions, config);
return !predicate(item);
default:
return true;
}
};
//# sourceMappingURL=logical.operators.js.map