wingbot
Version:
Enterprise Messaging Bot Conversation Engine
55 lines (47 loc) • 1.49 kB
JavaScript
/**
* @author Vojtech Jedlicka
*/
;
const customCondition = require('./customCondition');
const customFn = require('./customFn');
/** @typedef {import('../BuildRouter').BotContext} BotContext */
/** @typedef {import('./customCondition').EditableCondition} EditableCondition */
// eslint-disable-next-line max-len
/** @typedef {Pick<BotContext,'configuration'|'allowForbiddenSnippetWords'|'linksMap'|'ai'>} ConditionContext */
/**
* @typedef {object} ConditionDefinition
* @prop {boolean} [hasCondition]
* @prop {string} [conditionFn]
* @prop {boolean} [hasEditableCondition]
* @prop {EditableCondition} [editableCondition]
*/
/**
*
* @param {ConditionDefinition} params
* @param {ConditionContext} context
* @param {string} description
* @returns {Function}
*/
module.exports = function getCondition (params, context, description = '') {
const {
allowForbiddenSnippetWords = false,
configuration
} = context;
const {
hasCondition = false,
conditionFn = '() => true',
hasEditableCondition = false,
editableCondition = []
} = params;
let condition;
if (hasCondition) {
if (hasEditableCondition) {
condition = customCondition(editableCondition, configuration, description);
} else {
condition = customFn(conditionFn, description, allowForbiddenSnippetWords);
}
} else {
condition = () => true;
}
return condition;
};