@botonic/plugin-flow-builder
Version:
Botonic plugin for **Hubtype Flow Builder**: run and bridge flow-driven logic from bots on the **current** line.
64 lines • 3.39 kB
JavaScript
import { BooleanConditionOperator, NumberConditionOperator, StringConditionOperator, } from '../hubtype-fields';
export function getMinAndMax(condition) {
if (condition.min !== undefined && condition.max !== undefined) {
return { min: condition.min, max: condition.max };
}
throw new Error(`Min or max not found for number condition ${condition.operator}`);
}
export const STRING_CONDITION_EVALUATORS = {
[StringConditionOperator.Contains]: (variable, value) => variable.includes(value),
[StringConditionOperator.NotContains]: (variable, value) => !variable.includes(value),
[StringConditionOperator.EqualsTo]: (variable, value) => variable === value,
[StringConditionOperator.NotEqualsTo]: (variable, value) => variable !== value,
[StringConditionOperator.StartsWith]: (variable, value) => variable.startsWith(value),
[StringConditionOperator.NotStartsWith]: (variable, value) => !variable.startsWith(value),
[StringConditionOperator.EndsWith]: (variable, value) => variable.endsWith(value),
[StringConditionOperator.NotEndsWith]: (variable, value) => !variable.endsWith(value),
};
export const NUMBER_CONDITION_EVALUATORS = {
[NumberConditionOperator.EqualsTo]: (variable, value) => variable === value,
[NumberConditionOperator.NotEqualsTo]: (variable, value) => variable !== value,
[NumberConditionOperator.GreaterThan]: (variable, value) => variable > value,
[NumberConditionOperator.LessThan]: (variable, value) => variable < value,
[NumberConditionOperator.GreaterThanOrEqualTo]: (variable, value) => variable >= value,
[NumberConditionOperator.LessThanOrEqualTo]: (variable, value) => variable <= value,
[NumberConditionOperator.Between]: (variable, _value, condition) => {
const { min, max } = getMinAndMax(condition);
return variable >= min && variable <= max;
},
[NumberConditionOperator.NotBetween]: (variable, _value, condition) => {
const { min, max } = getMinAndMax(condition);
return variable < min || variable > max;
},
};
export const BOOLEAN_CONDITION_EVALUATORS = {
[BooleanConditionOperator.IsTruthy]: variable => !!variable,
};
export function evaluateStringCondition(variable, condition) {
if (condition.value === undefined) {
throw new Error(`Value not found for string condition ${condition.operator}`);
}
const evaluator = STRING_CONDITION_EVALUATORS[condition.operator];
if (!evaluator) {
throw new Error(`Invalid string condition operator ${condition.operator}`);
}
return evaluator(variable, condition.value);
}
export function evaluateNumberCondition(variable, condition) {
if (condition.value === undefined) {
throw new Error(`Value not found for number condition ${condition.operator}`);
}
const evaluator = NUMBER_CONDITION_EVALUATORS[condition.operator];
if (!evaluator) {
throw new Error(`Invalid number condition operator ${condition.operator}`);
}
return evaluator(variable, condition.value, condition);
}
export function evaluateBooleanCondition(variable, condition) {
const evaluator = BOOLEAN_CONDITION_EVALUATORS[condition.operator];
if (!evaluator) {
throw new Error(`Invalid boolean condition operator ${condition.operator}`);
}
return evaluator(variable);
}
//# sourceMappingURL=custom-conditional-v2-evaluators.js.map