@coorpacademy/progression-engine
Version:
56 lines (44 loc) • 1.21 kB
JavaScript
import gt from 'lodash/fp/gt';
import isEqual from 'lodash/fp/isEqual';
import lt from 'lodash/fp/lt';
import negate from 'lodash/fp/negate';
import sortBy from 'lodash/fp/sortBy';
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