@coorpacademy/progression-engine
Version:
44 lines • 1.21 kB
JavaScript
import _sortBy from "lodash/fp/sortBy";
import _negate from "lodash/fp/negate";
import _lt from "lodash/fp/lt";
import _isEqual from "lodash/fp/isEqual";
import _gt from "lodash/fp/gt";
const IN = (expectedValues, value) => {
return expectedValues.some(_isEqual(value));
};
const NOT_IN = _negate(IN);
const EQUALS = (expectedValues, value) => {
return _isEqual(expectedValues[0])(value);
};
const NOT_EQUALS = _negate(EQUALS);
const LT = (expectedValues, value) => {
return _lt(value)(expectedValues[0]);
};
const GT = (expectedValues, value) => {
return _gt(value)(expectedValues[0]);
};
const LTE = _negate(GT);
const GTE = _negate(LT);
const BETWEEN = (expectedValues, value) => {
const [min, max] = _sortBy(v => v)(expectedValues);
return GTE([min], value) && LTE([max], value);
};
const NOT_BETWEEN = _negate(BETWEEN);
const operators = {
BETWEEN,
EQUALS,
GT,
GTE,
IN,
LT,
LTE,
NOT_BETWEEN,
NOT_EQUALS,
NOT_IN
};
const checkCondition = (operatorKey, expectedValues, value) => {
if (value === null || value === undefined) return false;
return operators[operatorKey](expectedValues, value);
};
export default checkCondition;
//# sourceMappingURL=condition-operators.js.map