UNPKG

@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
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