@botonic/plugin-flow-builder
Version:
Botonic plugin for **Hubtype Flow Builder**: run and bridge flow-driven logic from bots on the **current** line.
53 lines • 1.96 kB
JavaScript
import { NumberConditionOperator, VariableFormat, } from '../hubtype-fields';
export function getConditionCustomResult(condition, variableFormat) {
switch (variableFormat) {
case VariableFormat.String:
return String(condition.value);
case VariableFormat.Number:
return getNumberConditionCustomResult(condition);
case VariableFormat.Boolean:
// Only reached after evaluateBooleanCondition succeeds; today that is isTruthy → 'true'
return 'true';
default:
throw new Error(`Invalid variable format ${variableFormat}`);
}
}
function getNumberConditionCustomResult(condition) {
const numberCondition = condition;
if (numberCondition.operator === NumberConditionOperator.Between ||
numberCondition.operator === NumberConditionOperator.NotBetween) {
return `min: ${numberCondition.min} - max: ${numberCondition.max}`;
}
return String(numberCondition.value);
}
export function findLastMatchingCondition(conditions, variable, variableFormat, evaluate) {
let lastMatch;
for (const condition of conditions) {
if (!evaluate(variable, condition)) {
continue;
}
if (!condition.target) {
continue;
}
lastMatch = {
customResult: getConditionCustomResult(condition, variableFormat),
target: condition.target,
operator: condition.operator,
};
}
return lastMatch;
}
export function resolveWithDefaultTarget(match, defaultTarget, nodeCode, defaultCustomResult = 'default') {
if (match) {
return match;
}
if (!defaultTarget) {
throw new Error(`Default target not found for custom condition node ${nodeCode}`);
}
return {
customResult: defaultCustomResult,
target: defaultTarget,
operator: '',
};
}
//# sourceMappingURL=custom-conditional-v2-resolver.js.map