@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
40 lines • 1.61 kB
JavaScript
export const applyComparisonOperators = (value, operators) => {
if (operators.$eq !== undefined) {
if (value !== operators.$eq)
return false;
}
if (operators.$ne !== undefined) {
if (value === operators.$ne)
return false;
}
const numValue = typeof value === 'number' ? value : value instanceof Date ? value.getTime() : null;
if (operators.$gt !== undefined ||
operators.$gte !== undefined ||
operators.$lt !== undefined ||
operators.$lte !== undefined) {
if (numValue === null)
return false;
}
if (operators.$gt !== undefined) {
const compareValue = operators.$gt instanceof Date ? operators.$gt.getTime() : operators.$gt;
if (numValue === null || numValue <= compareValue)
return false;
}
if (operators.$gte !== undefined) {
const compareValue = operators.$gte instanceof Date ? operators.$gte.getTime() : operators.$gte;
if (numValue === null || numValue < compareValue)
return false;
}
if (operators.$lt !== undefined) {
const compareValue = operators.$lt instanceof Date ? operators.$lt.getTime() : operators.$lt;
if (numValue === null || numValue >= compareValue)
return false;
}
if (operators.$lte !== undefined) {
const compareValue = operators.$lte instanceof Date ? operators.$lte.getTime() : operators.$lte;
if (numValue === null || numValue > compareValue)
return false;
}
return true;
};
//# sourceMappingURL=comparison.operators.js.map