botium-core 1.12.3 → 1.12.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSES-3RDPARTY.txt +635 -650
- package/dist/botium-cjs.js +20 -17
- package/dist/botium-cjs.js.map +1 -1
- package/dist/botium-es.js +20 -17
- package/dist/botium-es.js.map +1 -1
- package/package.json +14 -14
- package/src/scripting/Convo.js +3 -3
- package/test/logichooks/hookfromsrc.spec.js +1 -1
package/dist/botium-cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"botium-cjs.js","sources":["../src/Capabilities.js","../src/Source.js","../src/Defaults.js","../src/Fluent.js","../src/Events.js","../src/scripting/BotiumError.js","../src/scripting/logichook/LogicHookConsts.js","../src/scripting/logichook/LogicHookUtils.js","../src/scripting/Constants.js","../src/mocks/BotiumMockAttachment.js","../src/mocks/BotiumMockRichMessageTypes.js","../src/mocks/BotiumMockScripting.js","../src/mocks/BotiumMockMessage.js","../src/Enums.js","../src/scripting/helper.js","../src/scripting/ScriptingMemory.js","../src/scripting/Convo.js","../src/helpers/RetryHelper.js","../src/scripting/MatchFunctions.js","../src/helpers/Utils.js","../src/scripting/precompilers/JsonToJson.js","../src/helpers/HookUtils.js","../src/scripting/precompilers/Script.js","../src/scripting/precompilers/MarkdownRasa.js","../src/helpers/CapabilitiesUtils.js","../src/scripting/precompilers/index.js","../src/scripting/CompilerBase.js","../src/scripting/Utterance.js","../src/scripting/CompilerXlsx.js","../src/scripting/CompilerTxt.js","../src/scripting/CompilerCsv.js","../src/scripting/CompilerObjectBase.js","../src/scripting/CompilerYaml.js","../src/scripting/CompilerJson.js","../src/scripting/CompilerMarkdown.js","../src/scripting/ScriptingProvider.js","../src/repos/BaseRepo.js","../src/repos/NoRepo.js","../src/helpers/ProcessUtils.js","../src/repos/GitRepo.js","../src/repos/LocalRepo.js","../src/Commands.js","../src/helpers/QueueTimeoutError.js","../src/helpers/Queue.js","../src/containers/BaseContainer.js","../src/containers/GridContainer.js","../src/containers/InProcessContainer.js","../src/grid/inbound/proxy.js","../src/containers/plugins/SimpleRestContainer.js","../src/containers/plugins/index.js","../src/containers/PluginConnectorContainer.js","../src/BotDriver.js","../src/Plugins.js","../index.js"],"sourcesContent":["module.exports = {\n PROJECTNAME: 'PROJECTNAME',\n TESTSESSIONNAME: 'TESTSESSIONNAME',\n TESTCASENAME: 'TESTCASENAME',\n TEMPDIR: 'TEMPDIR',\n CLEANUPTEMPDIR: 'CLEANUPTEMPDIR',\n WAITFORBOTTIMEOUT: 'WAITFORBOTTIMEOUT',\n CONTAINERMODE: 'CONTAINERMODE',\n PLUGINMODULEPATH: 'PLUGINMODULEPATH',\n // falsy or ms/keystroke\n SIMULATE_WRITING_SPEED: 'SIMULATE_WRITING_SPEED',\n BOTIUMGRIDURL: 'BOTIUMGRIDURL',\n BOTIUMAPITOKEN: 'BOTIUMAPITOKEN',\n BOTIUMGRIDSLOT: 'BOTIUMGRIDSLOT',\n // Simple Reset Bot Settings\n SIMPLEREST_PING_URL: 'SIMPLEREST_PING_URL',\n SIMPLEREST_PING_VERB: 'SIMPLEREST_PING_VERB',\n SIMPLEREST_PING_BODY: 'SIMPLEREST_PING_BODY',\n SIMPLEREST_PING_BODY_RAW: 'SIMPLEREST_PING_BODY_RAW',\n SIMPLEREST_PING_HEADERS: 'SIMPLEREST_PING_HEADERS',\n SIMPLEREST_PING_REQUEST_HOOK: 'SIMPLEREST_PING_REQUEST_HOOK',\n SIMPLEREST_PING_RETRIES: 'SIMPLEREST_PING_RETRIES',\n SIMPLEREST_PING_TIMEOUT: 'SIMPLEREST_PING_TIMEOUT',\n SIMPLEREST_PING_UPDATE_CONTEXT: 'SIMPLEREST_PING_UPDATE_CONTEXT',\n SIMPLEREST_PING_PROCESS_RESPONSE: 'SIMPLEREST_PING_PROCESS_RESPONSE',\n SIMPLEREST_START_URL: 'SIMPLEREST_START_URL',\n SIMPLEREST_START_VERB: 'SIMPLEREST_START_VERB',\n SIMPLEREST_START_BODY: 'SIMPLEREST_START_BODY',\n SIMPLEREST_START_BODY_RAW: 'SIMPLEREST_START_BODY_RAW',\n SIMPLEREST_START_HEADERS: 'SIMPLEREST_START_HEADERS',\n SIMPLEREST_START_REQUEST_HOOK: 'SIMPLEREST_START_REQUEST_HOOK',\n SIMPLEREST_START_RETRIES: 'SIMPLEREST_START_RETRIES',\n SIMPLEREST_START_TIMEOUT: 'SIMPLEREST_START_TIMEOUT',\n SIMPLEREST_START_UPDATE_CONTEXT: 'SIMPLEREST_START_UPDATE_CONTEXT',\n SIMPLEREST_START_PROCESS_RESPONSE: 'SIMPLEREST_START_PROCESS_RESPONSE',\n SIMPLEREST_STOP_URL: 'SIMPLEREST_STOP_URL',\n SIMPLEREST_STOP_VERB: 'SIMPLEREST_STOP_VERB',\n SIMPLEREST_STOP_BODY: 'SIMPLEREST_STOP_BODY',\n SIMPLEREST_STOP_BODY_RAW: 'SIMPLEREST_STOP_BODY_RAW',\n SIMPLEREST_STOP_HEADERS: 'SIMPLEREST_STOP_HEADERS',\n SIMPLEREST_STOP_REQUEST_HOOK: 'SIMPLEREST_STOP_REQUEST_HOOK',\n SIMPLEREST_STOP_RETRIES: 'SIMPLEREST_STOP_RETRIES',\n SIMPLEREST_STOP_TIMEOUT: 'SIMPLEREST_STOP_TIMEOUT',\n SIMPLEREST_INIT_CONTEXT: 'SIMPLEREST_INIT_CONTEXT',\n SIMPLEREST_INIT_TEXT: 'SIMPLEREST_INIT_TEXT',\n SIMPLEREST_INIT_PROCESS_RESPONSE: 'SIMPLEREST_INIT_PROCESS_RESPONSE',\n SIMPLEREST_PROXY_URL: 'SIMPLEREST_PROXY_URL',\n SIMPLEREST_STRICT_SSL: 'SIMPLEREST_STRICT_SSL',\n SIMPLEREST_URL: 'SIMPLEREST_URL',\n SIMPLEREST_EXTRA_OPTIONS: 'SIMPLEREST_EXTRA_OPTIONS',\n SIMPLEREST_IGNORE_EMPTY: 'SIMPLEREST_IGNORE_EMPTY',\n SIMPLEREST_TIMEOUT: 'SIMPLEREST_TIMEOUT',\n SIMPLEREST_METHOD: 'SIMPLEREST_METHOD',\n SIMPLEREST_VERB: 'SIMPLEREST_VERB',\n SIMPLEREST_HEADERS_TEMPLATE: 'SIMPLEREST_HEADERS_TEMPLATE',\n SIMPLEREST_BODY_TEMPLATE: 'SIMPLEREST_BODY_TEMPLATE',\n SIMPLEREST_BODY_RAW: 'SIMPLEREST_BODY_RAW',\n SIMPLEREST_START_HOOK: 'SIMPLEREST_START_HOOK',\n SIMPLEREST_STOP_HOOK: 'SIMPLEREST_STOP_HOOK',\n SIMPLEREST_REQUEST_HOOK: 'SIMPLEREST_REQUEST_HOOK',\n SIMPLEREST_PARSER_HOOK: 'SIMPLEREST_PARSER_HOOK',\n SIMPLEREST_POLL_URL: 'SIMPLEREST_POLL_URL',\n SIMPLEREST_POLL_VERB: 'SIMPLEREST_POLL_VERB',\n SIMPLEREST_POLL_BODY: 'SIMPLEREST_POLL_BODY',\n SIMPLEREST_POLL_BODY_RAW: 'SIMPLEREST_POLL_BODY_RAW',\n SIMPLEREST_POLL_HEADERS: 'SIMPLEREST_POLL_HEADERS',\n SIMPLEREST_POLL_REQUEST_HOOK: 'SIMPLEREST_POLL_REQUEST_HOOK',\n SIMPLEREST_POLL_INTERVAL: 'SIMPLEREST_POLL_INTERVAL',\n SIMPLEREST_POLL_TIMEOUT: 'SIMPLEREST_PING_TIMEOUT',\n SIMPLEREST_POLL_UPDATE_CONTEXT: 'SIMPLEREST_POLL_UPDATE_CONTEXT',\n SIMPLEREST_BODY_JSONPATH: 'SIMPLEREST_BODY_JSONPATH',\n SIMPLEREST_RESPONSE_JSONPATH: 'SIMPLEREST_RESPONSE_JSONPATH',\n SIMPLEREST_RESPONSE_HOOK: 'SIMPLEREST_RESPONSE_HOOK',\n SIMPLEREST_MEDIA_JSONPATH: 'SIMPLEREST_MEDIA_JSONPATH',\n SIMPLEREST_BUTTONS_JSONPATH: 'SIMPLEREST_BUTTONS_JSONPATH',\n SIMPLEREST_CARDS_JSONPATH: 'SIMPLEREST_CARDS_JSONPATH',\n SIMPLEREST_CARD_TEXT_JSONPATH: 'SIMPLEREST_CARD_TEXT_JSONPATH',\n SIMPLEREST_CARD_SUBTEXT_JSONPATH: 'SIMPLEREST_CARD_SUBTEXT_JSONPATH',\n SIMPLEREST_CARD_BUTTONS_JSONPATH: 'SIMPLEREST_CARD_BUTTONS_JSONPATH',\n SIMPLEREST_CARD_ATTACHMENTS_JSONPATH: 'SIMPLEREST_CARD_ATTACHMENTS_JSONPATH',\n SIMPLEREST_CONTEXT_JSONPATH: 'SIMPLEREST_CONTEXT_JSONPATH',\n SIMPLEREST_CONTEXT_MERGE_OR_REPLACE: 'SIMPLEREST_CONTEXT_MERGE_OR_REPLACE',\n SIMPLEREST_CONVERSATION_ID_TEMPLATE: 'SIMPLEREST_CONVERSATION_ID_TEMPLATE',\n SIMPLEREST_STEP_ID_TEMPLATE: 'SIMPLEREST_STEP_ID_TEMPLATE',\n SIMPLEREST_INBOUND_REDISURL: 'SIMPLEREST_INBOUND_REDISURL',\n SIMPLEREST_INBOUND_ENDPOINT: 'SIMPLEREST_INBOUND_ENDPOINT',\n SIMPLEREST_INBOUND_PORT: 'SIMPLEREST_INBOUND_PORT',\n SIMPLEREST_INBOUND_SELECTOR_JSONPATH: 'SIMPLEREST_INBOUND_SELECTOR_JSONPATH',\n SIMPLEREST_INBOUND_SELECTOR_VALUE: 'SIMPLEREST_INBOUND_SELECTOR_VALUE',\n SIMPLEREST_INBOUND_UPDATE_CONTEXT: 'SIMPLEREST_INBOUND_UPDATE_CONTEXT',\n SIMPLEREST_REDIS_TOPIC: 'SIMPLEREST_REDIS_TOPIC',\n SIMPLEREST_INBOUND_ORDER_UNSETTLED_EVENTS_JSONPATH: 'SIMPLEREST_INBOUND_ORDER_UNSETTLED_EVENTS_JSONPATH',\n SIMPLEREST_INBOUND_DEBOUNCE_TIMEOUT: 'SIMPLEREST_INBOUND_DEBOUNCE_TIMEOUT',\n // Script Compiler\n SCRIPTING_TXT_EOL: 'SCRIPTING_TXT_EOL',\n // ROW_PER_MESSAGE or QUESTION_ANSWER\n SCRIPTING_XLSX_MODE: 'SCRIPTING_XLSX_MODE',\n SCRIPTING_XLSX_EOL_WRITE: 'SCRIPTING_XLSX_EOL_WRITE',\n SCRIPTING_XLSX_STARTROW: 'SCRIPTING_XLSX_STARTROW',\n SCRIPTING_XLSX_STARTCOL: 'SCRIPTING_XLSX_STARTCOL',\n SCRIPTING_XLSX_HASNAMECOL: 'SCRIPTING_XLSX_HASNAMECOL',\n SCRIPTING_XLSX_HASHEADERS: 'SCRIPTING_XLSX_HASHEADERS',\n SCRIPTING_XLSX_SHEETNAMES: 'SCRIPTING_XLSX_SHEETNAMES',\n SCRIPTING_XLSX_SHEETNAMES_PCONVOS: 'SCRIPTING_XLSX_SHEETNAMES_PCONVOS',\n SCRIPTING_XLSX_SHEETNAMES_UTTERANCES: 'SCRIPTING_XLSX_SHEETNAMES_UTTERANCES',\n SCRIPTING_XLSX_SHEETNAMES_SCRIPTING_MEMORY: 'SCRIPTING_XLSX_SHEETNAMES_SCRIPTING_MEMORY',\n SCRIPTING_CSV_DELIMITER: 'SCRIPTING_CSV_DELIMITER',\n SCRIPTING_CSV_SKIP_HEADER: 'SCRIPTING_CSV_SKIP_HEADER',\n SCRIPTING_CSV_QUOTE: 'SCRIPTING_CSV_QUOTE',\n SCRIPTING_CSV_ESCAPE: 'SCRIPTING_CSV_ESCAPE',\n SCRIPTING_CSV_MULTIROW_COLUMN_CONVERSATION_ID: 'SCRIPTING_CSV_MULTIROW_COLUMN_CONVERSATION_ID',\n SCRIPTING_CSV_MULTIROW_COLUMN_SENDER: 'SCRIPTING_CSV_MULTIROW_COLUMN_SENDER',\n SCRIPTING_CSV_MULTIROW_COLUMN_TEXT: 'SCRIPTING_CSV_MULTIROW_COLUMN_TEXT',\n SCRIPTING_CSV_QA_COLUMN_QUESTION: 'SCRIPTING_CSV_QA_COLUMN_QUESTION',\n SCRIPTING_CSV_QA_COLUMN_ANSWER: 'SCRIPTING_CSV_QA_COLUMN_ANSWER',\n SCRIPTING_NORMALIZE_TEXT: 'SCRIPTING_NORMALIZE_TEXT',\n SCRIPTING_ENABLE_MEMORY: 'SCRIPTING_ENABLE_MEMORY',\n SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS: 'SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS',\n SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS: 'SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS',\n SCRIPTING_FORCE_BOT_CONSUMED: 'SCRIPTING_FORCE_BOT_CONSUMED',\n // regexp, regexpIgnoreCase, wildcard, wildcardIgnoreCase, wildcardExact, wildcardExactIgnoreCase, include, includeIgnoreCase, equals, equalsIgnoreCase\n SCRIPTING_MATCHING_MODE: 'SCRIPTING_MATCHING_MODE',\n // all, first, random\n SCRIPTING_UTTEXPANSION_MODE: 'SCRIPTING_UTTEXPANSION_MODE',\n SCRIPTING_UTTEXPANSION_RANDOM_COUNT: 'SCRIPTING_UTTEXPANSION_RANDOM_COUNT',\n SCRIPTING_UTTEXPANSION_INCOMPREHENSION: 'SCRIPTING_UTTEXPANSION_INCOMPREHENSION',\n SCRIPTING_UTTEXPANSION_USENAMEASINTENT: 'SCRIPTING_UTTEXPANSION_USENAMEASINTENT',\n // justLineTag, utterance\n SCRIPTING_UTTEXPANSION_NAMING_MODE: 'SCRIPTING_UTTEXPANSION_NAMING_MODE',\n SCRIPTING_UTTEXPANSION_NAMING_UTTERANCE_MAX: 'SCRIPTING_UTTEXPANSION_NAMING_UTTERANCE_MAX',\n // Del original convo or not\n SCRIPTING_MEMORYEXPANSION_KEEP_ORIG: 'SCRIPTING_MEMORYEXPANSION_KEEP_ORIG',\n // word, non_whitespace, joker\n SCRIPTING_MEMORY_MATCHING_MODE: 'SCRIPTING_MEMORY_MATCHING_MODE',\n // varnames, testcasenames\n SCRIPTING_MEMORY_COLUMN_MODE: 'SCRIPTING_MEMORY_COLUMN_MODE',\n // Botium Lifecycle Hooks\n CUSTOMHOOK_ONBUILD: 'CUSTOMHOOK_ONBUILD',\n CUSTOMHOOK_ONSTART: 'CUSTOMHOOK_ONSTART',\n CUSTOMHOOK_ONUSERSAYS: 'CUSTOMHOOK_ONUSERSAYS',\n CUSTOMHOOK_ONBOTRESPONSE: 'CUSTOMHOOK_ONBOTRESPONSE',\n CUSTOMHOOK_ONSTOP: 'CUSTOMHOOK_ONSTOP',\n CUSTOMHOOK_ONCLEAN: 'CUSTOMHOOK_ONCLEAN',\n // Extension components\n ASSERTERS: 'ASSERTERS',\n LOGIC_HOOKS: 'LOGIC_HOOKS',\n USER_INPUTS: 'USER_INPUTS',\n // API Calls Rate Limiting\n RATELIMIT_USERSAYS_MAXCONCURRENT: 'RATELIMIT_USERSAYS_MAXCONCURRENT',\n RATELIMIT_USERSAYS_MINTIME: 'RATELIMIT_USERSAYS_MINTIME',\n RATELIMIT_BOTTLENECK_FN: 'RATELIMIT_BOTTLENECK_FN',\n SECURITY_ALLOW_UNSAFE: 'SECURITY_ALLOW_UNSAFE',\n PRECOMPILERS: 'PRECOMPILERS'\n}\n","module.exports = {\n LOCALPATH: 'LOCALPATH',\n GITPATH: 'GITPATH',\n GITURL: 'GITURL',\n GITBRANCH: 'GITBRANCH',\n GITDIR: 'GITDIR',\n GITPREPARECMD: 'GITPREPARECMD'\n}\n","const Capabilities = require('./Capabilities')\nconst Source = require('./Source')\n\nmodule.exports = {\n Capabilities: {\n [Capabilities.PROJECTNAME]: 'Botium Project',\n [Capabilities.TESTSESSIONNAME]: 'Botium Test Session',\n [Capabilities.TESTCASENAME]: 'Botium Test Case',\n [Capabilities.TEMPDIR]: 'botiumwork',\n [Capabilities.CLEANUPTEMPDIR]: true,\n [Capabilities.WAITFORBOTTIMEOUT]: 10000,\n [Capabilities.SIMULATE_WRITING_SPEED]: false,\n [Capabilities.SIMPLEREST_PING_RETRIES]: 6,\n [Capabilities.SIMPLEREST_PING_TIMEOUT]: 10000,\n [Capabilities.SIMPLEREST_PING_VERB]: 'GET',\n [Capabilities.SIMPLEREST_PING_UPDATE_CONTEXT]: true,\n [Capabilities.SIMPLEREST_PING_PROCESS_RESPONSE]: false,\n [Capabilities.SIMPLEREST_INIT_PROCESS_RESPONSE]: false,\n [Capabilities.SIMPLEREST_STOP_RETRIES]: 6,\n [Capabilities.SIMPLEREST_STOP_TIMEOUT]: 10000,\n [Capabilities.SIMPLEREST_STOP_VERB]: 'GET',\n [Capabilities.SIMPLEREST_START_RETRIES]: 6,\n [Capabilities.SIMPLEREST_START_TIMEOUT]: 10000,\n [Capabilities.SIMPLEREST_START_UPDATE_CONTEXT]: true,\n [Capabilities.SIMPLEREST_START_PROCESS_RESPONSE]: true,\n [Capabilities.SIMPLEREST_START_VERB]: 'GET',\n [Capabilities.SIMPLEREST_POLL_VERB]: 'GET',\n [Capabilities.SIMPLEREST_POLL_INTERVAL]: 1000,\n [Capabilities.SIMPLEREST_POLL_TIMEOUT]: 10000,\n [Capabilities.SIMPLEREST_POLL_UPDATE_CONTEXT]: true,\n [Capabilities.SIMPLEREST_METHOD]: 'GET',\n [Capabilities.SIMPLEREST_IGNORE_EMPTY]: true,\n [Capabilities.SIMPLEREST_TIMEOUT]: 10000,\n [Capabilities.SIMPLEREST_STRICT_SSL]: true,\n [Capabilities.SIMPLEREST_INBOUND_UPDATE_CONTEXT]: true,\n [Capabilities.SIMPLEREST_CONTEXT_MERGE_OR_REPLACE]: 'MERGE',\n [Capabilities.SCRIPTING_TXT_EOL]: '\\n',\n [Capabilities.SCRIPTING_XLSX_EOL_WRITE]: '\\r\\n',\n [Capabilities.SCRIPTING_XLSX_HASHEADERS]: true,\n [Capabilities.SCRIPTING_CSV_SKIP_HEADER]: true,\n [Capabilities.SCRIPTING_CSV_QUOTE]: '\"',\n [Capabilities.SCRIPTING_CSV_ESCAPE]: '\"',\n [Capabilities.SCRIPTING_NORMALIZE_TEXT]: true,\n [Capabilities.SCRIPTING_ENABLE_MEMORY]: false,\n [Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]: false,\n [Capabilities.SCRIPTING_MATCHING_MODE]: 'wildcardIgnoreCase',\n [Capabilities.SCRIPTING_UTTEXPANSION_MODE]: 'all',\n [Capabilities.SCRIPTING_UTTEXPANSION_RANDOM_COUNT]: 1,\n [Capabilities.SCRIPTING_UTTEXPANSION_NAMING_MODE]: 'justLineTag',\n [Capabilities.SCRIPTING_UTTEXPANSION_NAMING_UTTERANCE_MAX]: '16',\n [Capabilities.SCRIPTING_MEMORYEXPANSION_KEEP_ORIG]: false,\n [Capabilities.SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS]: false,\n [Capabilities.SCRIPTING_FORCE_BOT_CONSUMED]: false,\n [Capabilities.ASSERTERS]: [],\n [Capabilities.LOGIC_HOOKS]: [],\n [Capabilities.USER_INPUTS]: [],\n [Capabilities.SECURITY_ALLOW_UNSAFE]: true\n },\n Sources: {\n [Source.LOCALPATH]: '.',\n [Source.GITPATH]: 'git',\n [Source.GITBRANCH]: 'master',\n [Source.GITDIR]: '.'\n },\n Envs: {\n IS_BOTIUM_CONTAINER: true\n }\n}\n","const async = require('async')\nconst _ = require('lodash')\n\nmodule.exports = class Fluent {\n constructor (driver) {\n this.driver = driver\n this.compiler = null\n this.container = null\n this.currentChannel = null\n this.tasks = []\n\n this.tasks.push(() => {\n return new Promise((resolve, reject) => {\n this.driver.Build()\n .then((container) => {\n this.container = container\n resolve()\n })\n .catch((err) => {\n reject(err)\n })\n })\n })\n }\n\n Exec () {\n return new Promise((resolve, reject) => {\n async.eachSeries(this.tasks, (task, cb) => {\n try {\n const taskResult = task()\n if (taskResult && taskResult.then) {\n taskResult.then(() => cb()).catch(cb)\n } else {\n cb()\n }\n } catch (err) {\n cb(err)\n }\n }, (err) => {\n if (err) return reject(err)\n resolve()\n })\n })\n }\n\n Start () {\n this.tasks.push(() => {\n return this.container.Start()\n })\n return this\n }\n\n SwitchChannel (channel) {\n this.tasks.push(() => {\n this.currentChannel = channel\n return Promise.resolve()\n })\n return this\n }\n\n ReadScripts (convoDir, globFilter) {\n this.tasks.push(() => {\n return new Promise((resolve, reject) => {\n if (this.compiler == null) {\n try {\n this.compiler = this.driver.BuildCompiler()\n } catch (err) {\n return reject(err)\n }\n }\n try {\n this.compiler.ReadScriptsFromDirectory(convoDir, globFilter)\n resolve()\n } catch (err) {\n reject(err)\n }\n })\n })\n return this\n }\n\n Compile (scriptBuffer, scriptFormat, scriptType) {\n this.tasks.push(() => {\n return new Promise((resolve, reject) => {\n if (this.compiler == null) {\n try {\n this.compiler = this.driver.BuildCompiler()\n } catch (err) {\n return reject(err)\n }\n }\n try {\n this.compiler.Compile(scriptBuffer, scriptFormat, scriptType)\n resolve()\n } catch (err) {\n reject(err)\n }\n })\n })\n return this\n }\n\n RunScripts (assertCb, failCb) {\n this.tasks.push(() => {\n return new Promise((resolve, reject) => {\n if (assertCb) {\n this.compiler.scriptingEvents.assertBotResponse = assertCb.bind(this.compiler)\n }\n if (failCb) {\n this.compiler.scriptingEvents.fail = failCb.bind(this.compiler)\n }\n\n this.compiler.ExpandConvos()\n\n async.eachSeries(this.compiler.convos, (convo, convoDone) => {\n this.container.Start()\n .then(() => convo.Run(this.container))\n .then(() => this.container.Stop())\n .then(() => convoDone())\n .catch(convoDone)\n },\n (err) => {\n if (err) return reject(err)\n else resolve()\n })\n })\n })\n return this\n }\n\n UserSaysText (msg) {\n this.tasks.push(() => {\n if (_.isFunction(msg)) {\n msg = msg()\n }\n\n if (this.currentChannel) {\n return this.container.UserSays({ messageText: msg, channel: this.currentChannel })\n } else {\n return this.container.UserSaysText(msg)\n }\n })\n return this\n }\n\n UserSays (msg) {\n this.tasks.push(() => {\n if (_.isFunction(msg)) {\n msg = msg()\n }\n\n if (this.currentChannel && !msg.channel) {\n msg = Object.assign({}, msg)\n msg.channel = this.currentChannel\n }\n return this.container.UserSays(msg)\n })\n return this\n }\n\n WaitBotSays (channel = null, timeoutMillis = null, callback = null) {\n if (!callback) {\n if (timeoutMillis && _.isFunction(timeoutMillis)) {\n callback = timeoutMillis\n timeoutMillis = null\n } else if (!timeoutMillis && channel && _.isFunction(channel)) {\n callback = channel\n timeoutMillis = null\n channel = null\n }\n }\n\n this.tasks.push(() => {\n return new Promise((resolve, reject) => {\n if (this.currentChannel && !channel) {\n channel = this.currentChannel\n }\n this.container.WaitBotSays(channel, timeoutMillis)\n .then((botMsg) => {\n if (callback) callback(botMsg)\n resolve()\n })\n .catch((err) => {\n reject(err)\n })\n })\n })\n return this\n }\n\n WaitBotSaysText (channel = null, timeoutMillis = null, callback = null) {\n if (!callback) {\n if (timeoutMillis && _.isFunction(timeoutMillis)) {\n callback = timeoutMillis\n timeoutMillis = null\n } else if (!timeoutMillis && channel && _.isFunction(channel)) {\n callback = channel\n timeoutMillis = null\n channel = null\n }\n }\n\n this.tasks.push(() => {\n return new Promise((resolve, reject) => {\n if (this.currentChannel && !channel) {\n channel = this.currentChannel\n }\n this.container.WaitBotSaysText(channel, timeoutMillis)\n .then((text) => {\n if (callback) callback(text)\n resolve()\n })\n .catch((err) => {\n reject(err)\n })\n })\n })\n return this\n }\n\n Restart () {\n this.tasks.push(() => {\n return this.container.Restart()\n })\n return this\n }\n\n Stop () {\n this.tasks.push(() => {\n return this.container.Stop()\n })\n return this\n }\n\n Clean () {\n this.tasks.push(() => {\n return this.container.Clean()\n })\n return this\n }\n\n Call (customFunction) {\n this.tasks.push(() => {\n return (customFunction(this) || Promise.resolve())\n })\n return this\n }\n}\n","module.exports = {\n // Botium Events\n CONTAINER_BUILDING: 'CONTAINER_BUILDING',\n CONTAINER_BUILT: 'CONTAINER_BUILT',\n CONTAINER_BUILD_ERROR: 'CONTAINER_BUILD_ERROR',\n CONTAINER_STARTING: 'CONTAINER_STARTING',\n CONTAINER_STARTED: 'CONTAINER_STARTED',\n CONTAINER_START_ERROR: 'CONTAINER_START_ERROR',\n CONTAINER_STOPPING: 'CONTAINER_STOPPING',\n CONTAINER_STOPPED: 'CONTAINER_STOPPED',\n CONTAINER_STOP_ERROR: 'CONTAINER_STOP_ERROR',\n CONTAINER_CLEANING: 'CONTAINER_CLEANING',\n CONTAINER_CLEANED: 'CONTAINER_CLEANED',\n CONTAINER_CLEAN_ERROR: 'CONTAINER_CLEAN_ERROR',\n BOT_CONNECTED: 'BOT_CONNECTED',\n // Chatbot Events\n MESSAGE_SENTTOBOT: 'MESSAGE_SENTTOBOT',\n MESSAGE_SENDTOBOT_ERROR: 'MESSAGE_SENDTOBOT_ERROR',\n MESSAGE_RECEIVEDFROMBOT: 'MESSAGE_RECEIVEDFROMBOT',\n MESSAGE_RECEIVEFROMBOT_ERROR: 'MESSAGE_RECEIVEFROMBOT_ERROR',\n MESSAGE_ATTACHMENT: 'MESSAGE_ATTACHMENT',\n MESSAGE_TRANSCRIPT: 'MESSAGE_TRANSCRIPT',\n // Botium Agent Events\n TOOMUCHWORKERS_ERROR: 'TOOMUCHWORKERS_ERROR'\n}\n","const _ = require('lodash')\n\nconst BotiumError = class BotiumError extends Error {\n /**\n *\n * @param message\n * @param context A JSON with struct\n * {\n * type: 'some free text to identity the exception type',\n * source: 'source of the event',\n * ...\n */\n constructor (message, context, supressChildCheck) {\n super(message.message || message)\n\n if (!supressChildCheck && _getChildErrorsFromContext(context)) {\n throw Error('Create BotiumError with child errors using the fromList() method!')\n }\n // Saving class name in the property of our custom error as a shortcut.\n this.name = this.constructor.name\n\n // Capturing stack trace, excluding constructor call from it.\n Error.captureStackTrace(this, this.constructor)\n\n this.context = context || {}\n this.context.message = message.message || message\n }\n\n isAsserterError () {\n if (this.context) {\n const errArr = _.isArray(this.context) ? this.context : [this.context]\n const hasNotAsserterError = errArr.findIndex(errDetail => {\n if (errDetail.type === 'list') {\n if (errDetail.errors) {\n return errDetail.errors.findIndex(e => e.type !== 'asserter') >= 0\n } else {\n return true\n }\n } else {\n return errDetail.type !== 'asserter'\n }\n }) >= 0\n if (hasNotAsserterError) return false\n return true\n } else {\n return false\n }\n }\n\n prettify (includeJson) {\n const lines = []\n if (this.context) {\n const errArr = _.isArray(this.context) ? this.context : [this.context]\n errArr.forEach(errDetail => {\n lines.push('########################################')\n if (errDetail.type === 'asserter') {\n const segments = []\n segments.push(`ASSERTION FAILED in ${errDetail.source}${errDetail.subtype ? ` (${errDetail.subtype})` : ''}`)\n errDetail.cause && errDetail.cause.expected && !errDetail.cause.not && segments.push(` - Expected: ${JSON.stringify(errDetail.cause.expected)} `)\n errDetail.cause && errDetail.cause.expected && errDetail.cause.not && segments.push(` - NOT Expected: ${JSON.stringify(errDetail.cause.expected)} `)\n errDetail.cause && errDetail.cause.actual && segments.push(` - Actual: ${JSON.stringify(errDetail.cause.actual)}`)\n errDetail.cause && !errDetail.cause.actual && segments.push(' - Actual: empty')\n lines.push(segments.join(''))\n errDetail.input && errDetail.input.messageText && lines.push(`INPUT: ${errDetail.input.messageText}`)\n } else if (errDetail.message) {\n lines.push(`${errDetail.message}`)\n }\n if (errDetail.transcript && errDetail.transcript.length > 0) {\n lines.push('------------ TRANSCRIPT ----------------------------')\n errDetail.transcript.forEach(transcriptStep => {\n if (transcriptStep.actual) {\n lines.push(transcriptStep.actual.prettify())\n }\n })\n }\n if (includeJson) {\n lines.push('------------ JSON CONTENT ----------------------------')\n try {\n const jsonOutput = JSON.stringify(errDetail)\n lines.push(jsonOutput)\n } catch (jsonErr) {\n lines.push(`JSON Output not possible: ${jsonErr.message}`)\n }\n }\n })\n }\n if (lines.length > 0) {\n return lines.join('\\r\\n')\n } else {\n return null\n }\n }\n}\n\nconst _getChildErrorsFromContext = (context) => {\n if (context && context.errors && _.isArray(context.errors)) {\n return context.errors\n }\n return false\n}\n\nconst botiumErrorFromErr = (message, err) => {\n if (err instanceof BotiumError) {\n return new BotiumError(message, err.context, true)\n } else {\n return new BotiumError(message, { err }, true)\n }\n}\n\nconst botiumErrorFromList = (errors, { type = 'list', source = 'BotiumError', flat = true }) => {\n const message = errors.map(err => err.message || err.toString()).join(',\\n')\n let children = []\n\n for (const error of errors) {\n if (error instanceof BotiumError) {\n const childErrors = flat && _getChildErrorsFromContext(error.context)\n if (childErrors && childErrors.length) {\n children = children.concat(childErrors)\n } else if (error.context) {\n children.push(error.context)\n }\n } else {\n children.push(error)\n }\n }\n const result = new BotiumError(message, { errors: children, type, source }, true)\n return result\n}\n\nmodule.exports = {\n BotiumError,\n botiumErrorFromErr,\n botiumErrorFromList\n}\n","const LOGIC_HOOK_INCLUDE = 'INCLUDE'\nmodule.exports = {\n LOGIC_HOOK_INCLUDE,\n DEFAULT_ASSERTERS: [\n { name: 'BUTTONS', className: 'ButtonsAsserter' },\n { name: 'BUTTONS_COUNT', className: 'ButtonsCountAsserter' },\n { name: 'BUTTONS_COUNT_REC', className: 'ButtonsCountRecAsserter' },\n { name: 'MEDIA', className: 'MediaAsserter' },\n { name: 'MEDIA_COUNT', className: 'MediaCountAsserter' },\n { name: 'MEDIA_COUNT_REC', className: 'MediaCountRecAsserter' },\n { name: 'CARDS', className: 'CardsAsserter' },\n { name: 'CARDS_COUNT', className: 'CardsCountAsserter' },\n { name: 'CARDS_COUNT_REC', className: 'CardsCountRecAsserter' },\n { name: 'PAUSE_ASSERTER', className: 'PauseAsserter' },\n { name: 'JSON_PATH', className: 'JsonPathAsserter' },\n { name: 'JSON_PATH_COUNT', className: 'JsonPathCountAsserter' },\n { name: 'RESPONSE_LENGTH', className: 'ResponseLengthAsserter' },\n { name: 'FORMS', className: 'FormsAsserter' },\n\n { name: 'ENTITIES', className: 'EntitiesAsserter' },\n { name: 'ENTITY_VALUES', className: 'EntityValuesAsserter' },\n { name: 'ENTITY_CONTENT', className: 'EntityContentAsserter' },\n\n { name: 'INTENT', className: 'IntentAsserter' },\n { name: 'INTENT_UNIQUE', className: 'IntentUniqueAsserter' },\n { name: 'INTENT_CONFIDENCE', className: 'IntentConfidenceAsserter' },\n\n { name: 'TEXT_CONTAINS_ANY', className: 'TextContainsAnyAsserter' },\n { name: 'TEXT_CONTAINS_ANY_IC', className: 'TextContainsAnyICAsserter' },\n { name: 'TEXT_CONTAINS_ALL', className: 'TextContainsAllAsserter' },\n { name: 'TEXT_CONTAINS_ALL_IC', className: 'TextContainsAllICAsserter' },\n { name: 'TEXT_WILDCARD_ANY', className: 'TextWildcardAnyAsserter' },\n { name: 'TEXT_WILDCARD_ANY_IC', className: 'TextWildcardAnyICAsserter' },\n { name: 'TEXT_WILDCARD_ALL', className: 'TextWildcardAllAsserter' },\n { name: 'TEXT_WILDCARD_ALL_IC', className: 'TextWildcardAllICAsserter' },\n { name: 'TEXT_WILDCARDEXACT_ANY', className: 'TextWildcardExactAnyAsserter' },\n { name: 'TEXT_WILDCARDEXACT_ANY_IC', className: 'TextWildcardExactAnyICAsserter' },\n { name: 'TEXT_WILDCARDEXACT_ALL', className: 'TextWildcardExactAllAsserter' },\n { name: 'TEXT_WILDCARDEXACT_ALL_IC', className: 'TextWildcardExactAllICAsserter' },\n { name: 'TEXT_REGEXP_ANY', className: 'TextRegexpAnyAsserter' },\n { name: 'TEXT_REGEXP_ANY_IC', className: 'TextRegexpAnyICAsserter' },\n { name: 'TEXT_REGEXP_ALL', className: 'TextRegexpAllAsserter' },\n { name: 'TEXT_REGEXP_ALL_IC', className: 'TextRegexpAllICAsserter' },\n { name: 'TEXT_EQUALS', className: 'TextEqualsAnyAsserter' },\n { name: 'TEXT_EQUALS_IC', className: 'TextEqualsAnyICAsserter' },\n { name: 'TEXT', className: 'TextEqualsAnyAsserter' },\n { name: 'TEXT_IC', className: 'TextEqualsAnyICAsserter' },\n\n { name: 'BOT_CONSUMED', className: 'BotRepliesConsumedAsserter' },\n { name: 'BOT_UNCONSUMED_COUNT', className: 'BotRepliesUnconsumedCountAsserter' }\n ],\n DEFAULT_LOGIC_HOOKS: [\n { name: 'PAUSE', className: 'PauseLogicHook' },\n { name: 'WAITFORBOT', className: 'WaitForBotLogicHook' },\n { name: 'SET_SCRIPTING_MEMORY', className: 'SetScriptingMemoryLogicHook' },\n { name: 'CLEAR_SCRIPTING_MEMORY', className: 'ClearScriptingMemoryLogicHook' },\n { name: 'ASSIGN_SCRIPTING_MEMORY', className: 'AssignScriptingMemoryLogicHook' },\n { name: 'UPDATE_CUSTOM', className: 'UpdateCustomLogicHook' },\n { name: 'SKIP_BOT_UNCONSUMED', className: 'ClearQueueLogicHook' },\n { name: LOGIC_HOOK_INCLUDE, className: 'IncludeLogicHook' }\n ],\n DEFAULT_USER_INPUTS: [\n { name: 'BUTTON', className: 'ButtonInput' },\n { name: 'MEDIA', className: 'MediaInput' },\n { name: 'FORM', className: 'FormInput' }\n ]\n}\n","const { NodeVM } = require('vm2')\nconst path = require('path')\nconst fs = require('fs')\nconst isClass = require('is-class')\nconst debug = require('debug')('botium-core-asserterUtils')\n\nconst { BotiumError } = require('../BotiumError')\n\nconst { DEFAULT_ASSERTERS, DEFAULT_LOGIC_HOOKS, DEFAULT_USER_INPUTS } = require('./LogicHookConsts')\n\nDEFAULT_ASSERTERS.forEach((asserter) => {\n asserter.Class = require(`./asserter/${asserter.className}`)\n})\n\nDEFAULT_LOGIC_HOOKS.forEach((logicHook) => {\n logicHook.Class = require(`./logichooks/${logicHook.className}`)\n})\n\nDEFAULT_USER_INPUTS.forEach((userInput) => {\n userInput.Class = require(`./userinput/${userInput.className}`)\n})\n\nconst Capabilities = require('../../Capabilities')\nconst _ = require('lodash')\n\nmodule.exports = class LogicHookUtils {\n constructor ({ buildScriptContext, caps }) {\n this.asserters = {}\n this.globalAsserters = []\n this.logicHooks = {}\n this.globalLogicHooks = []\n this.userInputs = {}\n this.buildScriptContext = buildScriptContext\n this.caps = caps\n this._setDefaultAsserters()\n this._setDefaultLogicHooks()\n this._setDefaultUserInputs()\n this._fetchAsserters()\n this._fetchLogicHooks()\n this._fetchUserInputs()\n }\n\n _setDefaultAsserters () {\n DEFAULT_ASSERTERS.forEach((asserter) => {\n this.asserters[asserter.name] = new (asserter.Class)(this.buildScriptContext, this.caps)\n })\n }\n\n _setDefaultLogicHooks () {\n DEFAULT_LOGIC_HOOKS.forEach((lh) => {\n this.logicHooks[lh.name] = new (lh.Class)(this.buildScriptContext, this.caps)\n })\n }\n\n _setDefaultUserInputs () {\n DEFAULT_USER_INPUTS.forEach((ui) => {\n this.userInputs[ui.name] = new (ui.Class)(this.buildScriptContext, this.caps)\n })\n }\n\n _fetchAsserters () {\n this.caps[Capabilities.ASSERTERS]\n .forEach(asserter => {\n if (this.asserters[asserter.ref]) {\n debug(`${asserter.ref} asserter already exists, overwriting.`)\n }\n this.asserters[asserter.ref] = this._loadClass(asserter, 'asserter')\n if (asserter.global) {\n this.globalAsserters.push(asserter.ref)\n }\n })\n }\n\n _fetchLogicHooks () {\n this.caps[Capabilities.LOGIC_HOOKS]\n .forEach(logicHook => {\n if (this.logicHooks[logicHook.ref]) {\n debug(`${logicHook.ref} logic hook already exists, overwriting.`)\n }\n this.logicHooks[logicHook.ref] = this._loadClass(logicHook, 'logichook')\n if (logicHook.global) {\n this.globalLogicHooks.push(logicHook.ref)\n }\n })\n }\n\n _fetchUserInputs () {\n this.caps[Capabilities.USER_INPUTS]\n .forEach(userInput => {\n if (this.userInputs[userInput.ref]) {\n debug(`${userInput.ref} userinput already exists, overwriting.`)\n }\n this.userInputs[userInput.ref] = this._loadClass(userInput, 'userinput')\n })\n }\n\n getGlobalAsserter () {\n return this.globalAsserters\n .map(name => this.asserters[name])\n }\n\n getGlobalLogicHook () {\n return this.globalLogicHooks\n .map(name => this.logicHooks[name])\n }\n\n _loadClass ({ src, ref, args }, hookType) {\n if (hookType !== 'asserter' && hookType !== 'logichook' && hookType !== 'userinput') {\n throw Error(`Unknown hookType ${hookType}`)\n }\n\n // 1 gives possibility to use default asserter as global asserter\n if (hookType === 'asserter') {\n const asserter = DEFAULT_ASSERTERS.find(asserter => src === asserter.className)\n if (asserter) {\n return new (asserter.Class)({ ref, ...this.buildScriptContext }, this.caps, args)\n }\n }\n if (hookType === 'logichook') {\n const lh = DEFAULT_LOGIC_HOOKS.find(lh => src === lh.className)\n if (lh) {\n return new (lh.Class)({ ref, ...this.buildScriptContext }, this.caps, args)\n }\n }\n if (hookType === 'userinput') {\n const ui = DEFAULT_USER_INPUTS.find(ui => src === ui.className)\n if (ui) {\n return new (ui.Class)({ ref, ...this.buildScriptContext }, this.caps, args)\n }\n }\n\n const _checkUnsafe = () => {\n if (!this.caps[Capabilities.SECURITY_ALLOW_UNSAFE]) {\n throw new BotiumError(\n 'Security Error. Using unsafe component is not allowed',\n {\n type: 'security',\n subtype: 'allow unsafe',\n source: path.basename(__filename),\n cause: { src: !!src, ref, args, hookType }\n }\n )\n }\n }\n\n if (!src) {\n const packageName = `botium-${hookType}-${ref}`\n try {\n const CheckClass = require(packageName)\n if (isClass(CheckClass)) {\n return new CheckClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else if (_.isFunction(CheckClass)) {\n return CheckClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else if (isClass(CheckClass.PluginClass)) {\n return new CheckClass.PluginClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else {\n throw new Error(`${packageName} class or function or PluginClass field expected`)\n }\n } catch (err) {\n throw new Error(`Failed to fetch hook ${ref} ${hookType} from guessed package ${packageName} - ${err.message}`)\n }\n }\n\n if (isClass(src)) {\n try {\n const CheckClass = src\n return new CheckClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } catch (err) {\n throw new Error(`Failed to load package ${ref} from provided class - ${err.message}`)\n }\n }\n if (_.isFunction(src)) {\n try {\n return src({ ref, ...this.buildScriptContext }, this.caps, args)\n } catch (err) {\n throw new Error(`Failed to load package ${ref} from provided function - ${err.message}`)\n }\n }\n if (_.isObject(src) && !_.isString(src)) {\n try {\n const hookObject = Object.keys(src).reduce((result, key) => {\n result[key] = (args) => {\n const script = src[key]\n if (_.isFunction(script)) {\n return script(args)\n } else if (_.isString(script)) {\n try {\n const vm = new NodeVM({\n eval: false,\n require: false,\n sandbox: args\n })\n return vm.run(script)\n } catch (err) {\n throw new Error(`${err.message || err}`)\n }\n } else {\n throw new Error(`Script \"${key}\" is not valid - only functions and javascript code accepted`)\n }\n }\n return result\n }, {})\n return hookObject\n } catch (err) {\n throw new Error(`Failed to load package ${ref} ${hookType} from provided src function - ${err.message}`)\n }\n }\n\n if (_.isString(src)) {\n const loadErr = []\n\n const tryLoads = [{\n tryLoadPackageName: src,\n tryLoadAsserterByName: null\n }]\n if (src.indexOf('/') >= 0) {\n tryLoads.push({\n tryLoadPackageName: src.substr(0, src.lastIndexOf('/')),\n tryLoadAsserterByName: src.substr(src.lastIndexOf('/') + 1)\n })\n }\n\n const tryLoadFromSource = (tryRequire, tryAsserterName) => {\n let CheckClass = require(tryRequire)\n if (CheckClass.default) {\n CheckClass = CheckClass.default\n }\n if (tryAsserterName) {\n if (hookType === 'asserter' && CheckClass.PluginAsserters && CheckClass.PluginAsserters[tryAsserterName]) {\n CheckClass = CheckClass.PluginAsserters[tryAsserterName]\n } else if (hookType === 'logichook' && CheckClass.PluginLogicHooks && CheckClass.PluginLogicHooks[tryAsserterName]) {\n CheckClass = CheckClass.PluginLogicHooks[tryAsserterName]\n } else {\n throw new Error(`Loaded ${tryRequire}, but ${tryAsserterName} ${hookType} not found.`)\n }\n }\n if (isClass(CheckClass)) {\n return new CheckClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else if (_.isFunction(CheckClass)) {\n return CheckClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else if (isClass(CheckClass.PluginClass)) {\n return new CheckClass.PluginClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else if (_.isFunction(CheckClass.PluginClass)) {\n return CheckClass.PluginClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else {\n throw new Error(`${src} class or function expected`)\n }\n }\n\n for (const tryLoad of tryLoads) {\n const tryLoadFile = path.resolve(process.cwd(), tryLoad.tryLoadPackageName)\n if (fs.existsSync(tryLoadFile)) {\n _checkUnsafe()\n try {\n return tryLoadFromSource(tryLoadFile, tryLoad.tryLoadAsserterByName)\n } catch (err) {\n loadErr.push(`Failed to fetch ${ref} ${hookType} from ${src} - ${err.message} `)\n }\n }\n try {\n return tryLoadFromSource(tryLoad.tryLoadPackageName, tryLoad.tryLoadAsserterByName)\n } catch (err) {\n loadErr.push(`Failed to fetch ${ref} ${hookType} from ${src} - ${err.message} `)\n }\n }\n\n loadErr.forEach(debug)\n }\n throw new Error(`Failed to fetch ${ref} ${hookType}, no idea how to load ...`)\n }\n}\n","module.exports = {\n SCRIPTING_FORMAT_XSLX: 'SCRIPTING_FORMAT_XSLX',\n SCRIPTING_FORMAT_TXT: 'SCRIPTING_FORMAT_TXT',\n SCRIPTING_FORMAT_YAML: 'SCRIPTING_FORMAT_YAML',\n SCRIPTING_FORMAT_JSON: 'SCRIPTING_FORMAT_JSON',\n SCRIPTING_FORMAT_CSV: 'SCRIPTING_FORMAT_CSV',\n SCRIPTING_FORMAT_MARKDOWN: 'SCRIPTING_FORMAT_MARKDOWN',\n SCRIPTING_TYPE_CONVO: 'SCRIPTING_TYPE_CONVO',\n SCRIPTING_TYPE_PCONVO: 'SCRIPTING_TYPE_PCONVO',\n SCRIPTING_TYPE_UTTERANCES: 'SCRIPTING_TYPE_UTTERANCES',\n SCRIPTING_TYPE_SCRIPTING_MEMORY: 'SCRIPTING_TYPE_SCRIPTING_MEMORY'\n}\n","module.exports = class BotiumMockAttachment {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.mimeType = fromJson.mimeType\n this.base64 = fromJson.base64\n this.href = fromJson.href\n }\n}\n","const _ = require('lodash')\n\nclass BotiumMockMedia {\n constructor (fromJson = {}) {\n this.mediaUri = fromJson.mediaUri\n this.mimeType = fromJson.mimeType\n this.altText = fromJson.altText\n this.downloadUri = fromJson.downloadUri\n this.buffer = fromJson.buffer\n }\n\n prettify (indent = 0) {\n const sections = []\n if (this.mediaUri) sections.push(_.truncate(this.mediaUri, { length: 200 }))\n if (this.mimeType) sections.push(this.mimeType)\n if (this.altText) sections.push(this.altText)\n return `${' '.repeat(indent)}MEDIA(${sections.join(' | ')})`\n }\n}\n\nclass BotiumMockButton {\n constructor (fromJson = {}) {\n this.text = fromJson.text\n this.payload = fromJson.payload\n this.imageUri = fromJson.imageUri\n }\n\n prettify (indent = 0) {\n const sections = []\n if (this.text) sections.push(this.text)\n if (this.payload) sections.push(_.isObject(this.payload) ? JSON.stringify(this.payload) : this.payload)\n if (this.imageUri) sections.push(_.truncate(this.imageUri, { length: 200 }))\n return `${' '.repeat(indent)}BUTTON(${sections.join(' | ')})`\n }\n}\n\nclass BotiumMockCard {\n constructor (fromJson = {}) {\n this.text = fromJson.text\n this.subtext = fromJson.subtext\n this.content = fromJson.content\n this.sourceData = fromJson.sourceData\n this.image = (fromJson.image ? new BotiumMockMedia(fromJson.image) : null)\n this.buttons = (fromJson.buttons ? fromJson.buttons.map((a) => new BotiumMockButton(a)) : null)\n this.media = (fromJson.media ? fromJson.media.map((a) => new BotiumMockMedia(a)) : null)\n this.forms = (fromJson.forms ? fromJson.forms.map((a) => new BotiumMockForm(a)) : null)\n this.cards = (fromJson.cards ? fromJson.cards.map((a) => new BotiumMockCard(a)) : null)\n this.sourceData = fromJson.sourceData\n }\n\n prettify (indent = 0) {\n return this._prettifyLines(this, indent).join('\\n')\n }\n\n _prettifyLines (card, indent) {\n const prettifySafe = (entry, indent) => entry.prettify ? entry.prettify(2) : `${' '.repeat(indent)}<No botium object!>${JSON.stringify(entry)}`\n\n const sections = []\n if (card.text) sections.push(card.text)\n if (card.subtext) sections.push(card.subtext)\n\n const lines = []\n if (card.image) lines.push(card.image.prettify(indent + 2))\n if (card.media) lines.push(...card.media.map(m => prettifySafe(m, indent + 2)))\n if (card.buttons) lines.push(...card.buttons.map(b => prettifySafe(b, indent + 2)))\n if (card.forms) lines.push(...card.forms.map(f => prettifySafe(f, indent + 2)))\n if (card.cards) lines.push(...card.cards.map(c => this._prettifyLines(c, indent + 2)))\n\n return [\n `${' '.repeat(indent)}CARD(${sections.join(' | ')})`,\n ...lines\n ]\n }\n}\n\nclass BotiumMockForm {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.value = fromJson.value\n\n this.label = fromJson.label\n this.type = fromJson.type\n this.options = (fromJson.options ? fromJson.options.map((c) => new BotiumMockChoice(c)) : null)\n }\n\n prettify (indent = 0) {\n const sections = []\n if (this.name) sections.push(this.name)\n if (this.label) sections.push(this.label)\n if (this.value) sections.push(this.value)\n return `${' '.repeat(indent)}FORM(${sections.join(' | ')})`\n }\n}\n\nclass BotiumMockChoice {\n constructor (fromJson = {}) {\n this.title = fromJson.title\n this.value = fromJson.value\n }\n}\n\nmodule.exports = {\n BotiumMockMedia,\n BotiumMockButton,\n BotiumMockCard,\n BotiumMockForm\n}\n","const _ = require('lodash')\n\nclass BotiumMockAsserter {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.args = _.cloneDeep(fromJson.args)\n }\n}\nclass BotiumMockUserInput {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.args = _.cloneDeep(fromJson.args)\n }\n}\nclass BotiumMockLogicHook {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.args = _.cloneDeep(fromJson.args)\n }\n}\n\nmodule.exports = {\n BotiumMockAsserter,\n BotiumMockUserInput,\n BotiumMockLogicHook\n}\n","const BotiumMockAttachment = require('./BotiumMockAttachment')\nconst { BotiumMockMedia, BotiumMockButton, BotiumMockCard, BotiumMockForm } = require('./BotiumMockRichMessageTypes')\nconst { BotiumMockAsserter, BotiumMockUserInput, BotiumMockLogicHook } = require('./BotiumMockScripting')\n\nmodule.exports = class BotiumMockMessage {\n constructor (fromJson = {}) {\n this.sender = fromJson.sender\n this.channel = fromJson.channel\n this.not = fromJson.not\n this.optional = fromJson.optional\n this.messageText = fromJson.messageText\n this.media = (fromJson.media ? fromJson.media.map((a) => new BotiumMockMedia(a)) : null)\n this.buttons = (fromJson.buttons ? fromJson.buttons.map((a) => new BotiumMockButton(a)) : null)\n this.cards = (fromJson.cards ? fromJson.cards.map((a) => new BotiumMockCard(a)) : null)\n this.forms = (fromJson.forms ? fromJson.forms.map((a) => new BotiumMockForm(a)) : null)\n this.nlp = fromJson.nlp\n this.sourceData = fromJson.sourceData\n this.sourceAction = fromJson.sourceAction\n this.attachments = (fromJson.attachments ? fromJson.attachments.map((a) => new BotiumMockAttachment(a)) : null)\n this.asserters = (fromJson.asserters ? fromJson.asserters.map((a) => new BotiumMockAsserter(a)) : null)\n this.userInputs = (fromJson.userInputs ? fromJson.userInputs.map((a) => new BotiumMockUserInput(a)) : null)\n this.logicHooks = (fromJson.logicHooks ? fromJson.logicHooks.map((a) => new BotiumMockLogicHook(a)) : null)\n }\n\n prettify () {\n const prettifySafe = (entry) => entry.prettify ? entry.prettify(2) : `${' '.repeat(2)}<No botium object!>${JSON.stringify(entry)}`\n const lines = []\n if (this.messageText) lines.push(this.messageText)\n if (this.media && this.media.length > 0) lines.push(...this.media.map(m => prettifySafe(m)))\n if (this.buttons && this.buttons.length > 0) lines.push(...this.buttons.map(b => prettifySafe(b)))\n if (this.cards && this.cards.length > 0) lines.push(...this.cards.map(c => prettifySafe(c)))\n if (this.forms && this.forms.length > 0) lines.push(...this.forms.map(f => prettifySafe(f)))\n\n if (lines.length === 0) return `#${this.sender}:`\n\n return [\n `#${this.sender}: ${lines[0]}`,\n ...lines.slice(1)\n ].join('\\n')\n }\n}\n","module.exports = {\n E_SCRIPTING_MEMORY_COLUMN_MODE: {\n VARNAMES: 'varnames',\n TESTCASENAMES: 'testcasenames'\n }\n}\n","const _ = require('lodash')\nconst isJSON = require('is-json')\n\nconst { E_SCRIPTING_MEMORY_COLUMN_MODE } = require('../Enums')\n\nconst normalizeText = (str, doCleanup) => {\n if (str && _.isArray(str)) {\n str = str.join(' ')\n } else if (str && !_.isString(str)) {\n if (str.toString) {\n str = str.toString()\n } else {\n str = `${str}`\n }\n }\n if (str && doCleanup) {\n // remove html tags\n str = str.replace(/<p[^>]*>/g, ' ')\n str = str.replace(/<\\/p>/g, ' ')\n str = str.replace(/<br[^>]*>/g, ' ')\n str = str.replace(/<[^>]*>/g, '')\n /* eslint-disable no-control-regex */\n // remove not printable characters\n str = str.replace(/[\\x00-\\x1F\\x7F]/g, ' ')\n /* eslint-enable no-control-regex */\n // replace html entities\n str = str\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/'/g, '\\'')\n .replace(/"/g, '\"')\n // replace two spaces with one\n str = str.replace(/\\s+/g, ' ')\n\n str = str.split('\\n').map(s => s.trim()).join('\\n').trim()\n }\n return str\n}\n\nconst splitStringInNonEmptyLines = (str) => str ? str.split('\\n').map(s => s.trim()).filter(s => s.length > 0) : []\n\nconst quoteRegexpString = (str) => {\n return str.replace(/[-\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n}\n\nconst removeBuffers = obj => {\n const jsonString = JSON.stringify(obj, (key, value) => {\n if (_.isBuffer(value)) {\n return '(binary data)'\n } else if (value && value.type && value.type === 'Buffer') {\n return '(binary data)'\n } else if (key.toLowerCase() === 'base64') {\n return '(base64 data)'\n } else if (_.isString(value) && value.startsWith('data:')) {\n return '(base64 data url)'\n }\n return value\n })\n return JSON.parse(jsonString)\n}\n\nconst toString = (value) => {\n if (_.isUndefined(value)) return undefined\n if (_.isString(value)) return value\n if (_.isNumber(value)) return value.toString()\n if (_.isArray(value)) return value.map(v => toString(v)).join(',')\n try {\n return JSON.stringify(value)\n } catch (err) {\n }\n if (value && value.toString) return value.toString()\n return '' + value\n}\n\nconst flatString = (str) => {\n return str ? str.split('\\n').map(s => s.trim()).join(' ') : ''\n}\n\nconst linesToConvoStep = (lines, sender, context, eol, singleLineMode = false) => {\n if (!validateSender(sender)) throw new Error(`Failed to parse conversation. Section \"${sender}\" unknown.`)\n\n const convoStep = { asserters: [], logicHooks: [], userInputs: [], not: false, optional: false, sender }\n\n let textLinesRaw = []\n const textLines = []\n // local eslint accepts it without disable, but build on github does not\n // eslint-disable-next-line no-unused-vars\n let textLinesAccepted = true\n for (const rawLine of lines) {\n if (_.isString(rawLine)) {\n let optional = false\n let not = false\n let logicLine = rawLine\n if (logicLine.startsWith('?')) {\n if (!logicLine.startsWith('??')) {\n optional = true\n }\n logicLine = logicLine.substr(1)\n }\n if (logicLine.startsWith('!')) {\n if (!logicLine.startsWith('!!')) {\n not = true\n }\n logicLine = logicLine.substr(1)\n }\n const name = logicLine.split(' ')[0]\n if (sender !== 'me' && context.IsAsserterValid(name)) {\n const args = (logicLine.length > name.length ? logicLine.substr(name.length + 1).split('|').map(a => a.trim()) : [])\n convoStep.asserters.push({ name, args, not, optional })\n } else if (sender === 'me' && context.IsUserInputValid(name)) {\n const args = (logicLine.length > name.length ? logicLine.substr(name.length + 1).split('|').map(a => a.trim()) : [])\n convoStep.userInputs.push({ name, args })\n textLinesAccepted = false\n } else if (context.IsLogicHookValid(name)) {\n const args = (logicLine.length > name.length ? logicLine.substr(name.length + 1).split('|').map(a => a.trim()) : [])\n convoStep.logicHooks.push({ name, args })\n textLinesAccepted = false\n } else {\n if (sender === 'me') {\n if (!textLinesAccepted) {\n if (rawLine.trim().length) {\n throw new Error(`Failed to parse conversation. No text expected here: '${rawLine.trim()}' in convo:\\n ${lines.join('\\n')}`)\n } else {\n // skip empty lines\n }\n } else {\n textLinesRaw.push(rawLine)\n }\n } else {\n textLinesRaw.push(rawLine)\n }\n }\n // line is not textline if it is empty, and there is no line with data after it.\n if (textLinesRaw.length > 0) {\n if (rawLine.trim().length) {\n textLines.push(...textLinesRaw)\n textLinesRaw = []\n }\n }\n } else if (_.isObject(rawLine)) {\n if (rawLine.asserter) {\n if (sender !== 'bot') throw new Error(`Failed to parse conversation. No asserter \"${rawLine.asserter}\" expected in section \"${sender}\"`)\n if (!context.IsAsserterValid(rawLine.asserter)) throw new Error(`Failed to parse conversation. No asserter \"${rawLine.asserter}\" registered for section \"${sender}\"`)\n convoStep.asserters.push({\n name: rawLine.asserter,\n args: (rawLine.args && _.isString(rawLine.args) ? [rawLine.args] : rawLine.args) || [],\n not: !!rawLine.not,\n optional: !!rawLine.optional\n })\n } else if (rawLine.logichook || rawLine.logicHook) {\n const logicHookName = rawLine.logichook || rawLine.logicHook\n if (!context.IsLogicHookValid(logicHookName)) throw new Error(`Failed to parse conversation. No logichook \"${logicHookName}\" registered for section \"${sender}\"`)\n convoStep.logicHooks.push({\n name: logicHookName,\n args: (rawLine.args && _.isString(rawLine.args) ? [rawLine.args] : rawLine.args) || []\n })\n } else if (rawLine.userinput || rawLine.userInput) {\n const userInputName = rawLine.userinput || rawLine.userInput\n if (sender !== 'me') throw new Error(`Failed to parse conversation. No userinput \"${userInputName}\" expected in section \"${sender}\"`)\n if (!context.IsUserInputValid(userInputName)) throw new Error(`Failed to parse conversation. No userinput \"${userInputName}\" registered for section \"${sender}\"`)\n convoStep.userInputs.push({\n name: userInputName,\n args: (rawLine.args && _.isString(rawLine.args) ? [rawLine.args] : rawLine.args) || []\n })\n } else {\n let name = Object.keys(rawLine)[0]\n const content = rawLine[name]\n let optional = false\n let not = false\n if (name.startsWith('?')) {\n optional = true\n name = name.substr(1)\n } else if (name.startsWith('OPTIONAL_')) {\n optional = true\n name = name.substr(9)\n }\n if (name.startsWith('!')) {\n not = true\n name = name.substr(1)\n } else if (name.startsWith('NOT_')) {\n not = true\n name = name.substr(4)\n }\n if (sender !== 'me' && context.IsAsserterValid(name)) {\n convoStep.asserters.push({\n name,\n args: (content && _.isString(content) ? [content] : content) || [],\n not,\n optional\n })\n } else if (sender === 'me' && context.IsUserInputValid(name)) {\n convoStep.userInputs.push({\n name,\n args: (content && _.isString(content) ? [content] : content) || []\n })\n } else if (context.IsLogicHookValid(name)) {\n convoStep.logicHooks.push({\n name,\n args: (content && _.isString(content) ? [content] : content) || []\n })\n } else {\n throw new Error(`Failed to parse conversation. Line not recognized '${JSON.stringify(rawLine)}'`)\n }\n }\n } else {\n throw new Error(`Failed to parse conversation. Line not recognized '${JSON.stringify(rawLine)}'`)\n }\n }\n\n // deal with just message convosteps\n if (textLinesRaw.length >= 1 && textLines.length === 0) {\n textLines.push(...textLinesRaw)\n textLinesRaw.pop()\n }\n\n if (textLines.length > 0) {\n if (textLines[0].startsWith('?')) {\n if (!textLines[0].startsWith('??')) {\n convoStep.optional = true\n }\n textLines[0] = textLines[0].substr(1)\n }\n if (textLines[0].startsWith('!')) {\n if (!textLines[0].startsWith('!!')) {\n convoStep.not = true\n }\n textLines[0] = textLines[0].substr(1)\n }\n const content = textLines.join(' ')\n if (isJSON(content)) {\n convoStep.sourceData = JSON.parse(content)\n } else {\n /// csv has always just 1 line, and has no eol setting\n if (singleLineMode) {\n convoStep.messageText = textLines[0]\n } else {\n if (eol === null) {\n throw new Error('eol cant be null')\n }\n convoStep.messageText = textLines.join(eol).trim()\n }\n }\n } else {\n // no message is different from empty message\n convoStep.messageText = null\n }\n\n // Check if all element in convo step is optional or not optional\n const optionalSet = new Set()\n if (convoStep.messageText) {\n optionalSet.add(convoStep.optional)\n }\n for (const asserter of convoStep.asserters) {\n optionalSet.add(asserter.optional)\n }\n if (optionalSet.size > 1) {\n throw new Error(`Failed to parse conversation. All element in convo step has to be optional or not optional: ${JSON.stringify(lines)}`)\n }\n\n return convoStep\n}\n\nconst convoStepToObject = (step) => {\n const result = []\n if (step.sender === 'me') {\n for (const form of (step.forms || []).filter(form => form.value)) {\n result.push({\n userinput: 'FORM',\n args: [form.name, form.value]\n })\n }\n if (step.buttons && step.buttons.length > 0) {\n const userinput = {\n userinput: 'BUTTON',\n args: []\n }\n if (step.buttons[0].payload) {\n userinput.args.push(step.buttons[0].payload)\n if (step.buttons[0].text) {\n userinput.args.push(step.buttons[0].text)\n }\n } else {\n userinput.args.push(step.buttons[0].text)\n }\n result.push(userinput)\n } else if (step.media && step.media.length > 0) {\n result.push({\n userinput: 'MEDIA',\n args: [step.media[0].mediaUri]\n })\n } else if (step.messageText) {\n result.push(step.messageText)\n }\n for (const logicHook of step.logicHooks || []) {\n result.push({\n logichook: logicHook.name,\n args: logicHook.args || []\n })\n }\n } else {\n if (step.messageText) {\n let messageTextPrefix = ''\n if (step.optional) messageTextPrefix += '?'\n if (step.not) messageTextPrefix += '!'\n result.push(messageTextPrefix + step.messageText)\n }\n if (step.buttons && step.buttons.length > 0) {\n result.push({\n asserter: 'BUTTONS',\n args: step.buttons.map(b => flatString(b.text))\n })\n }\n if (step.media && step.media.length > 0) {\n result.push({\n asserter: 'MEDIA',\n args: step.media.map(m => { return m.buffer && m.buffer.startsWith('data:') ? 'data:' : m.mediaUri })\n })\n }\n if (step.cards && step.cards.length > 0) {\n step.cards.forEach(c => {\n let cardTexts = []\n if (c.text) cardTexts = cardTexts.concat(_.isArray(c.text) ? c.text : [c.text])\n if (c.subtext) cardTexts = cardTexts.concat(_.isArray(c.subtext) ? c.subtext : [c.subtext])\n if (c.content) cardTexts = cardTexts.concat(_.isArray(c.content) ? c.content : [c.content])\n if (cardTexts.length > 0) {\n result.push({\n asserter: 'CARDS',\n args: cardTexts.map(c => flatString(c))\n })\n }\n\n if (c.buttons && c.buttons.length > 0) {\n result.push({\n asserter: 'BUTTONS',\n args: c.buttons.map(b => b.text)\n })\n }\n if (c.image) {\n result.push({\n asserter: 'MEDIA',\n args: c.image.mediaUr,\n not: !!step.not\n })\n }\n })\n }\n for (const asserter of step.asserters || []) {\n result.push({\n asserter: asserter.name,\n args: asserter.args || [],\n optional: !!asserter.optional,\n not: !!asserter.not\n })\n }\n for (const logicHook of step.logicHooks || []) {\n result.push({\n logichook: logicHook.name,\n args: logicHook.args || []\n })\n }\n }\n return result\n}\n\nconst validSenders = ['begin', 'include', 'me', 'bot', 'end']\n\nconst validateSender = (sender) => {\n if (validSenders.indexOf(sender) >= 0) return true\n else return false\n}\n\nconst validateConvo = (convo) => {\n const validationResult = {\n errors: []\n }\n for (let i = 0; i < convo.conversation.length; i++) {\n const step = convo.conversation[i]\n if (step.sender === 'bot') {\n // Check if all element in convo step is optional or not optional\n const optionalSet = new Set()\n if (step.messageText) {\n optionalSet.add(step.optional)\n }\n if (step.asserters) {\n for (const asserter of step.asserters) {\n optionalSet.add(asserter.optional)\n }\n }\n if (optionalSet.size > 1) {\n validationResult.errors.push(new Error(`Step ${i + 1}: Failed to decompile conversation. Mixed optional flag is not allowed inside one step.`))\n }\n\n if (optionalSet.size === 1 && optionalSet.has(true)) {\n const nextStep = convo.conversation[i + 1]\n if (!nextStep || nextStep.sender !== 'bot') {\n validationResult.errors.push(new Error(`Step ${i + 1}: Optional bot convo step has to be followed by a bot convo step.`))\n }\n }\n }\n if (!validateSender(step.sender)) {\n validationResult.errors.push(new Error(`Step ${i + 1}: Sender #${step.sender} is invalid.`))\n }\n }\n return validationResult\n}\n\nconst _decompileButton = (b) => {\n let buttonScript = ''\n if (b.payload) {\n buttonScript += _.isObject(b.payload) ? JSON.stringify(b.payload) : flatString(b.payload)\n if (b.text) {\n buttonScript += `|${flatString(b.text)}`\n }\n } else {\n buttonScript += flatString(b.text)\n }\n return buttonScript\n}\n\nconst convoStepToLines = (step) => {\n const lines = []\n if (step.sender === 'me') {\n step.forms && step.forms.filter(form => form.value).forEach((form) => {\n lines.push(`FORM ${form.name}|${form.value}`)\n })\n if (step.buttons && step.buttons.length > 0) {\n lines.push('BUTTON ' + _decompileButton(step.buttons[0]))\n } else if (step.media && step.media.length > 0) {\n lines.push('MEDIA ' + step.media[0].mediaUri)\n } else if (step.messageText) {\n lines.push(step.messageText)\n }\n step.userInputs && step.userInputs.forEach((userInput) => {\n lines.push(userInput.name + (userInput.args ? ' ' + userInput.args.join('|') : ''))\n })\n step.logicHooks && step.logicHooks.forEach((logicHook) => {\n lines.push(logicHook.name + (logicHook.args ? ' ' + logicHook.args.join('|') : ''))\n })\n } else {\n if (step.messageText) {\n lines.push((step.optional ? '?' : '') + (step.not ? '!' : '') + step.messageText)\n }\n if (step.buttons && step.buttons.length > 0) lines.push('BUTTONS ' + step.buttons.filter(b => b.text).map(b => flatString(b.text)).join('|'))\n if (step.media && step.media.length > 0) lines.push('MEDIA ' + step.media.filter(m => !m.buffer && m.mediaUri).map(m => m.mediaUri).join('|'))\n if (step.cards && step.cards.length > 0) {\n step.cards.forEach(c => {\n let cardTexts = []\n if (c.text) cardTexts = cardTexts.concat(_.isArray(c.text) ? c.text : [c.text])\n if (c.subtext) cardTexts = cardTexts.concat(_.isArray(c.subtext) ? c.subtext : [c.subtext])\n if (c.content) cardTexts = cardTexts.concat(_.isArray(c.content) ? c.content : [c.content])\n if (cardTexts.length > 0) lines.push('CARDS ' + cardTexts.map(c => flatString(c)).join('|'))\n\n if (c.buttons && c.buttons.length > 0) lines.push('BUTTONS ' + c.buttons.filter(b => b.text).map(b => flatString(b.text)).join('|'))\n if (c.image && !c.image.buffer && c.image.mediaUri) lines.push('MEDIA ' + c.image.mediaUri)\n })\n }\n step.asserters && step.asserters.forEach((asserter) => {\n lines.push((asserter.optional ? '?' : '') + (asserter.not ? '!' : '') + asserter.name + (asserter.args ? ' ' + asserter.args.join('|') : ''))\n })\n step.logicHooks && step.logicHooks.forEach((logicHook) => {\n lines.push(logicHook.name + (logicHook.args ? ' ' + logicHook.args.join('|') : ''))\n })\n }\n return lines.map(l => l.trim())\n}\n\nconst linesToScriptingMemories = (lines, columnMode = null) => {\n const guessScriptingMemoryColumnMode = (lines) => {\n if (lines && lines.length > 1) {\n if (lines[1].trim().startsWith('$')) return E_SCRIPTING_MEMORY_COLUMN_MODE.TESTCASENAMES\n }\n return E_SCRIPTING_MEMORY_COLUMN_MODE.VARNAMES\n }\n columnMode = columnMode || guessScriptingMemoryColumnMode(lines)\n\n const scriptingMemories = []\n\n if (columnMode === E_SCRIPTING_MEMORY_COLUMN_MODE.TESTCASENAMES) {\n const caseNames = lines[0].split('|').map((name) => name.trim()).slice(1)\n\n const varNames = []\n const varValues = []\n for (let row = 1; row < lines.length; row++) {\n if (!lines[row] || lines[row].length === 0) continue\n const rawRow = lines[row].split('|').map((name) => name.trim())\n varNames.push(rawRow[0])\n varValues.push(rawRow.slice(1))\n }\n for (let caseIndex = 0; caseIndex < caseNames.length; caseIndex++) {\n const caseName = caseNames[caseIndex]\n\n const values = varNames.reduce((agg, varName, varIndex) => {\n agg[varName] = varValues[varIndex][caseIndex] || null\n return agg\n }, {})\n const scriptingMemory = { header: { name: caseName }, values: values }\n scriptingMemories.push(scriptingMemory)\n }\n } else {\n const varNames = lines[0].split('|').map((name) => name.trim()).slice(1)\n for (let row = 1; row < lines.length; row++) {\n if (!lines[row] || lines[row].length === 0) continue\n const rawRow = lines[row].split('|').map((name) => name.trim())\n const caseName = rawRow[0]\n const values = rawRow.slice(1)\n const varValues = {}\n for (let varIndex = 0; varIndex < varNames.length; varIndex++) {\n varValues[varNames[varIndex]] = values[varIndex]\n }\n const scriptingMemory = { header: { name: caseName }, values: varValues }\n scriptingMemories.push(scriptingMemory)\n }\n }\n return scriptingMemories\n}\n\nmodule.exports = {\n normalizeText,\n splitStringInNonEmptyLines,\n quoteRegexpString,\n toString,\n flatString,\n removeBuffers,\n linesToConvoStep,\n convoStepToLines,\n convoStepToObject,\n validSenders,\n validateSender,\n validateConvo,\n linesToScriptingMemories\n}\n","const util = require('util')\nconst debug = require('debug')('botium-core-ScriptingMemory')\nconst randomize = require('randomatic')\nconst { v1: uuidv1 } = require('uuid')\nconst moment = require('moment')\nconst { NodeVM } = require('vm2')\nconst _ = require('lodash')\nconst path = require('path')\nconst jp = require('jsonpath')\n\nconst Capabilities = require('../Capabilities')\nconst { quoteRegexpString, toString } = require('./helper')\nconst { BotiumError } = require('./BotiumError')\n\n// If they got parameter, then it will be a string always.\n// the receiver can decide what to do with it,\n// convert to int,\n// split by ',' for multiple params,\n// or something else\nconst SCRIPTING_FUNCTIONS_RAW = {\n $now: () => {\n return new Date().toLocaleString()\n },\n $now_EN: () => {\n return new Date().toLocaleString('en-EN')\n },\n $now_DE: () => {\n return moment().format('DD.MM.YYYY, HH:mm:ss')\n },\n $now_ISO: () => {\n return new Date().toISOString()\n },\n\n $date: (pattern) => {\n if (pattern) {\n return moment().format(pattern)\n }\n return new Date().toLocaleDateString()\n },\n $date_EN: () => {\n return new Date().toLocaleDateString('en-EN')\n },\n $date_DE: () => {\n return moment().format('YYYY.MM.DD')\n },\n $date_ISO: () => {\n return moment().format('YYYY-MM-DD')\n },\n\n $time: () => {\n return new Date().toLocaleTimeString()\n },\n $time_EN: () => {\n return new Date().toLocaleTimeString('en-EN')\n },\n $time_DE: () => {\n return moment().format('HH:mm:ss')\n },\n $time_ISO: () => {\n return moment().format('HH:mm:ss')\n },\n $time_HH_MM: () => {\n return moment().format('HH:mm')\n },\n $time_HH: () => {\n return moment().format('HH')\n },\n $time_H_A: () => {\n return moment().format('h A')\n },\n\n $timestamp: () => {\n return Date.now()\n },\n\n $year: () => {\n return new Date().getFullYear()\n },\n $month: () => {\n return moment().format('MMMM')\n },\n $month_MM: () => {\n return moment().format('MM')\n },\n $day_of_month: () => {\n return new Date().getDate()\n },\n $day_of_week: () => {\n return moment().format('dddd')\n },\n\n $random: (length) => {\n if (length == null) {\n throw Error('random function used without args!')\n }\n return randomize('0', length)\n },\n $random10: () => {\n return randomize('0', 10)\n },\n\n $uniqid: () => {\n return uuidv1()\n },\n\n $projectname: {\n handler: (caps) => {\n return caps[Capabilities.PROJECTNAME]\n }\n },\n\n $testsessionname: {\n handler: (caps) => {\n return caps[Capabilities.TESTSESSIONNAME]\n }\n },\n\n $testcasename: {\n handler: (caps) => {\n return caps[Capabilities.TESTCASENAME]\n }\n },\n\n $env: {\n handler: (caps, name) => {\n if (!name) {\n throw Error('env function used without args!')\n }\n return process.env[name]\n },\n numberOfArguments: 1,\n unsafe: true\n },\n\n $cap: {\n handler: (caps, name) => {\n if (!name) {\n throw Error('cap function used without args!')\n }\n return caps[name]\n },\n numberOfArguments: 1\n },\n\n $msg: {\n handler: (caps, jsonPath, mockMsg) => {\n if (!jsonPath) {\n throw Error('msg function used without jsonpath!')\n }\n if (!mockMsg) {\n throw Error('msg function used at invalid position!')\n }\n const root = jp.query(mockMsg, jsonPath)\n if (root && root.length > 0) return root[0]\n else return ''\n },\n numberOfArguments: 1\n },\n\n $func: {\n handler: (caps, code) => {\n if (code == null) {\n throw Error('func function used without args!')\n }\n try {\n const vm = new NodeVM({\n eval: false,\n require: false,\n env: caps[Capabilities.SECURITY_ALLOW_UNSAFE] ? process.env : {},\n sandbox: {\n caps\n }\n })\n return vm.run(`module.exports = (${code})`)\n } catch (err) {\n throw Error(`func function execution failed - ${err}`)\n }\n },\n numberOfArguments: 1\n }\n}\n\nconst SCRIPTING_FUNCTIONS = _.mapValues(SCRIPTING_FUNCTIONS_RAW, (funcOrStruct, name) => {\n const func = funcOrStruct.handler || funcOrStruct\n const numberOfArguments = funcOrStruct.handler ? funcOrStruct.numberOfArguments || 0 : funcOrStruct.length\n\n return {\n handler: (caps, ...rest) => {\n if (!caps[Capabilities.SECURITY_ALLOW_UNSAFE] && funcOrStruct.unsafe) {\n throw new BotiumError(\n `Security Error. Using unsafe scripting memory function ${name} is not allowed`,\n {\n type: 'security',\n subtype: 'allow unsafe',\n source: path.basename(__filename),\n cause: {\n SECURITY_ALLOW_UNSAFE: caps[Capabilities.SECURITY_ALLOW_UNSAFE],\n functionName: name\n }\n }\n )\n }\n if (funcOrStruct.handler) {\n return func(caps, ...rest)\n } else {\n return func(...rest)\n }\n },\n numberOfArguments\n }\n})\nconst RESERVED_WORDS = Object.keys(SCRIPTING_FUNCTIONS)\n\nconst apply = (container, scriptingMemory, str, mockMsg) => {\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MEMORY]) {\n str = _apply(scriptingMemory, str, container.caps, mockMsg)\n }\n return str\n}\n\nconst applyToArgs = (args, scriptingMemory, caps, mockMsg) => {\n return (args || []).map(arg => {\n return _apply(scriptingMemory, arg, caps, mockMsg)\n })\n}\n\n// we have two replace longer variable first. if there is $year, and $years, $years should not be found by $year\nconst _longestFirst = (a, b) => b.length - a.length\n\nconst _apply = (scriptingMemory, str, caps, mockMsg) => {\n if (str) {\n scriptingMemory = scriptingMemory || {}\n str = toString(str)\n\n // merge all keys: longer is stronger, type does not matter\n // Not clean: what if a variable references other variable/function?\n const allKeys = Object.keys(SCRIPTING_FUNCTIONS).concat(Object.keys(scriptingMemory)).sort(_longestFirst)\n for (const key of allKeys) {\n // scripting memory is stronger\n if (_.has(scriptingMemory, key)) {\n const keyRegexp = new RegExp(`\\\\${key}`, 'g')\n str = str.replace(keyRegexp, scriptingMemory[key])\n } else {\n const regex = `\\\\${key}(\\\\(.+?(?<!\\\\\\\\)\\\\))?`\n const matches = str.match(new RegExp(regex, 'g')) || []\n for (const match of matches) {\n if (match.indexOf('(') > 0) {\n const arg = match.substring(match.indexOf('(') + 1, match.lastIndexOf(')')).replace(/\\\\\\)/g, ')')\n str = str.replace(match, SCRIPTING_FUNCTIONS[key].handler(caps, arg, mockMsg))\n } else {\n str = str.replace(match, SCRIPTING_FUNCTIONS[key].handler(caps))\n }\n }\n }\n }\n }\n return str\n}\n\nconst extractVarNames = (text) => {\n return ((_.isString(text) ? text.match(/\\$[A-Za-z]\\w+/g) : false) || [])\n}\n\nconst fill = (container, scriptingMemory, result, utterance, scriptingEvents) => {\n debug(`fill start: ${util.inspect(scriptingMemory)}`)\n let varRegex\n switch (container.caps[Capabilities.SCRIPTING_MEMORY_MATCHING_MODE]) {\n case 'word':\n varRegex = '(\\\\w+)'\n break\n case 'joker':\n varRegex = '([\\\\w\\\\W]+)'\n break\n default:\n varRegex = '(\\\\S+)'\n break\n }\n\n if (result && _.isString(result) && utterance && container.caps[Capabilities.SCRIPTING_ENABLE_MEMORY]) {\n const utterances = scriptingEvents.resolveUtterance({ utterance })\n utterances.forEach(expected => {\n if (_.isUndefined(expected)) return\n expected = toString(expected)\n\n let reExpected = expected\n if (container.caps[Capabilities.SCRIPTING_MATCHING_MODE] !== 'regexp' && container.caps[Capabilities.SCRIPTING_MATCHING_MODE] !== 'regexpIgnoreCase') {\n reExpected = _.isString(expected) ? quoteRegexpString(expected).replace(/\\\\\\$/g, '$') : expected\n }\n const varMatches = extractVarNames(expected)\n for (let i = 0; i < varMatches.length; i++) {\n const varMatchesRegexp = new RegExp(`\\\\${varMatches[i]}`, 'g')\n reExpected = reExpected.replace(varMatchesRegexp, varRegex)\n }\n const resultMatches = result.match(reExpected) || []\n for (let i = 1; i < resultMatches.length; i++) {\n if (i <= varMatches.length) {\n const varName = varMatches[i - 1]\n if (RESERVED_WORDS.indexOf(varName) >= 0) {\n debug(`fill Variable \"${varName}\" is not overwritten, because it is reserved word. `)\n } else {\n scriptingMemory[varName] = resultMatches[i]\n }\n }\n }\n })\n debug(`fill end: ${util.inspect(scriptingMemory)}`)\n }\n}\n\nmodule.exports = {\n apply,\n applyToArgs,\n fill,\n extractVarNames,\n RESERVED_WORDS,\n SCRIPTING_FUNCTIONS\n}\n","const util = require('util')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-core-Convo')\n\nconst BotiumMockMessage = require('../mocks/BotiumMockMessage')\nconst Capabilities = require('../Capabilities')\nconst Events = require('../Events')\nconst ScriptingMemory = require('./ScriptingMemory')\nconst { BotiumError, botiumErrorFromErr, botiumErrorFromList } = require('./BotiumError')\nconst { normalizeText, toString, removeBuffers, splitStringInNonEmptyLines } = require('./helper')\n\nconst { LOGIC_HOOK_INCLUDE } = require('./logichook/LogicHookConsts')\n\nclass ConvoHeader {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.projectname = fromJson.projectname\n this.testsessionname = fromJson.testsessionname\n this.sort = fromJson.sort\n this.order = fromJson.order\n this.description = fromJson.description\n Object.assign(this, fromJson)\n }\n\n toString () {\n return this.order + ' ' + this.name + (this.description ? ` (${this.description})` : '')\n }\n}\n\nclass ConvoStepAssert {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.args = fromJson.args\n this.not = fromJson.not\n this.optional = fromJson.optional\n }\n\n toString () {\n return (this.optional ? '?' : '') + (this.not ? '!' : '') + this.name + '(' + (this.args ? this.args.map(a => _.truncate(a, { length: 200 })).join(',') : 'no args') + ')'\n }\n}\n\nclass ConvoStepLogicHook {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.args = fromJson.args\n }\n\n toString () {\n return this.name + '(' + (this.args ? this.args.map(a => _.truncate(a, { length: 200 })).join(',') : 'no args') + ')'\n }\n}\n\nclass ConvoStepUserInput {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.args = fromJson.args\n }\n\n toString () {\n return this.name + '(' + (this.args ? this.args.map(a => _.truncate(a, { length: 200 })).join(',') : 'no args') + ')'\n }\n}\n\nclass ConvoStep {\n constructor (fromJson = {}) {\n this.sender = fromJson.sender\n this.channel = fromJson.channel\n this.messageText = fromJson.messageText\n this.sourceData = fromJson.sourceData\n this.stepTag = fromJson.stepTag\n this.not = fromJson.not\n this.optional = fromJson.optional\n this.asserters = _.map(fromJson.asserters, (asserter) => new ConvoStepAssert(asserter))\n this.logicHooks = _.map(fromJson.logicHooks, (logicHook) => new ConvoStepLogicHook(logicHook))\n this.userInputs = _.map(fromJson.userInputs, (userInput) => new ConvoStepUserInput(userInput))\n }\n\n hasInteraction () {\n return (this.messageText && this.messageText.length > 0) ||\n this.sourceData ||\n (this.asserters && this.asserters.length > 0) ||\n (this.logicHooks && this.logicHooks.findIndex(l => l.name !== LOGIC_HOOK_INCLUDE) >= 0) ||\n (this.userInputs && this.userInputs.length > 0)\n }\n\n toString () {\n return (this.stepTag ? this.stepTag + ': ' : '') +\n '#' + this.sender +\n ' - ' + (this.optional ? '?' : '') + (this.not ? '!' : '') +\n (this.messageText || '') +\n (this.asserters && this.asserters.length > 0 ? ' ' + this.asserters.map(a => a.toString()).join(' ASS: ') : '') +\n (this.logicHooks && this.logicHooks.length > 0 ? ' ' + this.logicHooks.map(l => l.toString()).join(' LH: ') : '') +\n (this.userInputs && this.userInputs.length > 0 ? ' ' + this.userInputs.map(u => u.toString()).join(' UI: ') : '')\n }\n}\n\nclass Transcript {\n constructor ({ steps, attachments, scriptingMemory, convoBegin, convoEnd, err }) {\n this.steps = steps\n this.attachments = attachments\n this.scriptingMemory = scriptingMemory\n this.convoBegin = convoBegin\n this.convoEnd = convoEnd\n this.err = err\n }\n\n prettifyActual () {\n const prettifiedSteps = this.steps.map(step => {\n if (step.actual && step.actual.prettify) {\n return step.actual.prettify()\n } else {\n return '<empty conversation step>'\n }\n })\n return prettifiedSteps.join('\\n')\n }\n}\n\nclass TranscriptAttachment { // eslint-disable-line no-unused-vars\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.mimeType = fromJson.mimeType\n this.base64 = fromJson.base64\n this.href = fromJson.href\n }\n}\n\nclass TranscriptStep {\n constructor ({ expected, not, optional, actual, stepBegin, stepEnd, botBegin, botEnd, err }) {\n this.expected = expected\n this.not = not\n this.optional = optional\n this.actual = actual\n this.stepBegin = stepBegin\n this.stepEnd = stepEnd\n this.botBegin = botBegin\n this.botEnd = botEnd\n this.err = err\n }\n}\n\nclass TranscriptError extends Error {\n constructor (err, transcript) {\n super(err.message)\n this.name = this.constructor.name\n this.transcript = transcript\n this.cause = err\n Error.captureStackTrace(this, this.constructor)\n }\n}\n\nclass Convo {\n constructor (context, fromJson = {}) {\n if (fromJson instanceof Convo) {\n debug('Illegal state!!! Parameter should be a JSON, but it is a Convo')\n } else if (fromJson.beginAsserter) {\n // beginAsserter is one of the fields which are lost\n debug('Illegal state!!! Parameter should be a native JSON, but looks as a Convo converted to JSON')\n }\n\n this.scriptingEvents = context.scriptingEvents\n this.context = context\n this.header = new ConvoHeader(fromJson.header)\n if (fromJson.conversation && _.isArray(fromJson.conversation)) {\n this.conversation = _.map(fromJson.conversation, (step) => new ConvoStep(step))\n } else {\n this.conversation = []\n }\n this.sourceTag = fromJson.sourceTag\n const { beginAsserter, endAsserter } = this.setConvoBeginAndEndAsserter(fromJson)\n this.beginAsserter = beginAsserter\n this.endAsserter = endAsserter\n const { beginLogicHook, endLogicHook } = this.setConvoBeginAndEndLogicHook(fromJson)\n this.beginLogicHook = beginLogicHook\n this.endLogicHook = endLogicHook\n this.effectiveConversation = null\n }\n\n setConvoBeginAndEndAsserter (fromJson) {\n const beginAsserter = fromJson.conversation\n .filter(s => s.sender === 'begin' && s.asserters && s.asserters.length > 0)\n .map(s => s.asserters)\n .reduce((acc, val) => acc.concat(val), [])\n\n const endAsserter = fromJson.conversation\n .filter(s => s.sender === 'end' && s.asserters && s.asserters.length > 0)\n .map(s => s.asserters)\n .reduce((acc, val) => acc.concat(val), [])\n\n return { beginAsserter, endAsserter }\n }\n\n setConvoBeginAndEndLogicHook (fromJson) {\n const beginLogicHook = fromJson.conversation\n .filter(s => s.sender === 'begin' && s.logicHooks && s.logicHooks.length > 0)\n .map(s => s.logicHooks)\n .reduce((acc, val) => acc.concat(val), [])\n\n const endLogicHook = fromJson.conversation\n .filter(s => s.sender === 'end' && s.logicHooks && s.logicHooks.length > 0)\n .map(s => s.logicHooks)\n .reduce((acc, val) => acc.concat(val), [])\n\n return { beginLogicHook, endLogicHook }\n }\n\n toString () {\n return this.header.toString() + (this.sourceTag ? ` (${util.inspect(this.sourceTag)})` : '') + ': ' + this.conversation.map((c) => c.toString()).join(' | ')\n }\n\n async Run (container) {\n const transcript = new Transcript({\n steps: [],\n attachments: [],\n convoBegin: new Date(),\n convoEnd: null,\n err: null\n })\n const scriptingMemory = {\n }\n container.caps[Capabilities.TESTCASENAME] = this.header.name\n try {\n try {\n // onConvoBegin first or assertConvoBegin? If onConvoBegin, then it is possible to assert it too\n await this.scriptingEvents.onConvoBegin({ convo: this, convoStep: { stepTag: '#begin' }, container, transcript, scriptingMemory })\n } catch (err) {\n throw new TranscriptError(botiumErrorFromErr(`${this.header.name}: ${err.message}`, err), transcript)\n }\n try {\n await this.scriptingEvents.assertConvoBegin({ convo: this, convoStep: { stepTag: '#begin' }, container, scriptingMemory })\n } catch (err) {\n throw new TranscriptError(botiumErrorFromErr(`${this.header.name}: ${err.message}`, err), transcript)\n }\n await this.runConversation(container, scriptingMemory, transcript)\n await this._checkBotRepliesConsumed(container)\n try {\n await this.scriptingEvents.onConvoEnd({ convo: this, convoStep: { stepTag: '#end' }, container, transcript, scriptingMemory: scriptingMemory })\n } catch (err) {\n throw new TranscriptError(botiumErrorFromErr(`${this.header.name}: ${err.message}`, err), transcript)\n }\n if (transcript.err && container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n let assertConvoEndErr = null\n try {\n await this.scriptingEvents.assertConvoEnd({ convo: this, convoStep: { stepTag: '#end' }, container, transcript, scriptingMemory: scriptingMemory })\n } catch (err) {\n assertConvoEndErr = botiumErrorFromErr(`${this.header.name}: ${err.message}`, err)\n }\n if (assertConvoEndErr) {\n const err = transcript.err\n transcript.err = botiumErrorFromList([transcript.err, assertConvoEndErr], {})\n transcript.err.context.input = err.context.input\n transcript.err.context.transcript = err.context.transcript\n }\n throw new TranscriptError(transcript.err, transcript)\n } else if (transcript.err) {\n throw new TranscriptError(transcript.err, transcript)\n }\n try {\n await this.scriptingEvents.assertConvoEnd({ convo: this, convoStep: { stepTag: '#end' }, container, transcript, scriptingMemory: scriptingMemory })\n } catch (err) {\n transcript.err = botiumErrorFromErr(`${this.header.name}: ${err.message}`, err)\n throw new TranscriptError(transcript.err, transcript)\n }\n return transcript\n } finally {\n container.eventEmitter.emit(Events.MESSAGE_TRANSCRIPT, container, transcript)\n }\n }\n\n async runConversation (container, scriptingMemory, transcript) {\n const transcriptSteps = []\n try {\n let lastMeConvoStep = null\n let botMsg = null\n let waitForBotSays = true\n let skipTranscriptStep = false\n for (let i = 0; i < this.conversation.length; i++) {\n const convoStep = this.conversation[i]\n const currentStepIndex = i\n skipTranscriptStep = false\n const transcriptStep = new TranscriptStep({\n expected: new BotiumMockMessage(convoStep),\n not: convoStep.not,\n optional: convoStep.optional,\n actual: null,\n stepBegin: new Date(),\n stepEnd: null,\n botBegin: null,\n botEnd: null,\n err: null\n })\n\n try {\n if (convoStep.sender === 'begin' || convoStep.sender === 'end') {\n continue\n } else if (convoStep.sender === 'me') {\n const meMsg = new BotiumMockMessage(convoStep)\n meMsg.messageText = ScriptingMemory.apply(container, scriptingMemory, meMsg.messageText, meMsg)\n // buggy command is removed, but because sideeffects are possible, it can be reactivated.\n // If there are no sideeffects coming up, then row can be deleted permanently.\n if (process.env.WORKAROUND_OVERWRITE_JSON_MESSAGE_TEXT) {\n // if this line is active, then Random() in me section does not work in performance test\n // (first run overwrites the function with the value, and the next run has the value, not the function)\n convoStep.messageText = meMsg.messageText\n }\n transcriptStep.actual = meMsg\n\n try {\n await this.scriptingEvents.setUserInput({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep })\n await this.scriptingEvents.onMeStart({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep })\n await this.scriptingEvents.onMePrepare({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep })\n\n await this._checkBotRepliesConsumed(container)\n\n const coreMsg = _.omit(removeBuffers(meMsg), ['sourceData'])\n debug(`${this.header.name}/${convoStep.stepTag}: user says (cleaned by binary and base64 data and sourceData) ${JSON.stringify(coreMsg, null, 2)}`)\n await new Promise(resolve => {\n if (container.caps.SIMULATE_WRITING_SPEED && meMsg.messageText && meMsg.messageText.length) {\n setTimeout(() => resolve(), container.caps.SIMULATE_WRITING_SPEED * meMsg.messageText.length)\n } else {\n resolve()\n }\n })\n lastMeConvoStep = convoStep\n transcriptStep.botBegin = new Date()\n if (!_.isNull(meMsg.messageText) || meMsg.sourceData || (meMsg.userInputs && meMsg.userInputs.length) || (meMsg.logicHooks && meMsg.logicHooks.length)) {\n try {\n Object.assign(meMsg, { header: this.header, conversation: this.conversation, currentStepIndex, scriptingMemory })\n await container.UserSays(meMsg)\n } finally {\n delete meMsg.header\n delete meMsg.conversation\n delete meMsg.scriptingMemory\n }\n\n transcriptStep.botEnd = new Date()\n await this.scriptingEvents.onMeEnd({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep })\n continue\n } else {\n debug(`${this.header.name}/${convoStep.stepTag}: message not found in #me section, message not sent to container ${util.inspect(convoStep)}`)\n transcriptStep.botEnd = new Date()\n await this.scriptingEvents.onMeEnd({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep })\n continue\n }\n } catch (err) {\n transcriptStep.botEnd = new Date()\n\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: error sending to bot - ${err.message || err}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr)\n } catch (failErr) {\n }\n throw failErr\n }\n } else if (convoStep.sender === 'bot') {\n if (waitForBotSays) {\n botMsg = null\n } else {\n waitForBotSays = true\n }\n\n try {\n debug(`${this.header.name} wait for bot ${convoStep.channel || ''}`)\n await this.scriptingEvents.onBotStart({ convo: this, convoStep, container, scriptingMemory, transcript, transcriptStep })\n transcriptStep.botBegin = new Date()\n if (!botMsg) {\n botMsg = await container.WaitBotSays(convoStep.channel)\n }\n transcriptStep.botEnd = new Date()\n transcriptStep.actual = new BotiumMockMessage(botMsg)\n\n const coreMsg = _.omit(removeBuffers(botMsg), ['sourceData'])\n debug(`${this.header.name}: bot says (cleaned by binary and base64 data and sourceData) ${JSON.stringify(coreMsg, null, 2)}`)\n } catch (err) {\n transcriptStep.botEnd = new Date()\n\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: error waiting for bot - ${err.message}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n throw failErr\n }\n\n try {\n const prepared = await this.scriptingEvents.onBotPrepare({ convo: this, convoStep, container, scriptingMemory, botMsg, transcript, transcriptStep })\n if (prepared) {\n transcriptStep.actual = new BotiumMockMessage(botMsg)\n\n const coreMsg = _.omit(removeBuffers(botMsg), ['sourceData'])\n debug(`${this.header.name}: onBotPrepare (cleaned by binary and base64 data and sourceData) ${JSON.stringify(coreMsg, null, 2)}`)\n }\n } catch (err) {\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: onBotPrepare error - ${err.message || err}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n throw failErr\n }\n\n if (!botMsg || (!botMsg.messageText && !botMsg.media && !botMsg.buttons && !botMsg.cards && !botMsg.sourceData && !botMsg.nlp)) {\n const failErr = new BotiumError(`${this.header.name}/${convoStep.stepTag}: bot says nothing`)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n throw failErr\n }\n const isErrorHandledWithOptionConvoStep = (err) => {\n const nextConvoStep = this.conversation[i + 1]\n if (convoStep.optional && nextConvoStep && nextConvoStep.sender === 'bot') {\n waitForBotSays = false\n skipTranscriptStep = true\n return true\n }\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n assertErrors.push(err)\n return false\n } else {\n throw err\n }\n }\n const assertErrors = []\n const scriptingMemoryUpdate = {}\n if (convoStep.messageText) {\n const response = this._checkNormalizeText(container, botMsg.messageText)\n const messageText = this._checkNormalizeText(container, convoStep.messageText)\n ScriptingMemory.fill(container, scriptingMemoryUpdate, response, messageText, this.scriptingEvents)\n const tomatch = this._resolveUtterancesToMatch(container, Object.assign({}, scriptingMemoryUpdate, scriptingMemory), messageText, botMsg)\n if (convoStep.not) {\n try {\n this.scriptingEvents.assertBotNotResponse(response, tomatch, `${this.header.name}/${convoStep.stepTag}`, lastMeConvoStep)\n } catch (err) {\n if (isErrorHandledWithOptionConvoStep(err)) {\n continue\n }\n }\n } else {\n try {\n this.scriptingEvents.assertBotResponse(response, tomatch, `${this.header.name}/${convoStep.stepTag}`, lastMeConvoStep)\n } catch (err) {\n if (isErrorHandledWithOptionConvoStep(err)) {\n continue\n }\n }\n }\n } else if (convoStep.sourceData) {\n try {\n this._compareObject(container, scriptingMemory, convoStep, botMsg.sourceData, convoStep.sourceData, botMsg)\n } catch (err) {\n if (isErrorHandledWithOptionConvoStep(err)) {\n continue\n }\n }\n }\n Object.assign(scriptingMemory, scriptingMemoryUpdate)\n try {\n await this.scriptingEvents.assertConvoStep({ convo: this, convoStep, container, scriptingMemory, botMsg, transcript, transcriptStep })\n await this.scriptingEvents.onBotEnd({ convo: this, convoStep, container, scriptingMemory, botMsg, transcript, transcriptStep })\n } catch (err) {\n const nextConvoStep = this.conversation[i + 1]\n if (convoStep.optional && nextConvoStep && nextConvoStep.sender === 'bot') {\n waitForBotSays = false\n skipTranscriptStep = true\n continue\n }\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: assertion error - ${err.message || err}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS] && err instanceof BotiumError) {\n assertErrors.push(err)\n } else {\n throw failErr\n }\n }\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n if (assertErrors.length > 0) {\n throw botiumErrorFromList(assertErrors, {})\n }\n } else {\n if (!transcriptStep.stepEnd) {\n continue\n }\n }\n } else {\n const failErr = new BotiumError(`${this.header.name}/${convoStep.stepTag}: invalid sender - ${util.inspect(convoStep.sender)}`)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr)\n } catch (failErr) {\n }\n throw failErr\n }\n } catch (err) {\n if (lastMeConvoStep) {\n if (err instanceof BotiumError && err.context) {\n err.context.input = new ConvoStep(lastMeConvoStep)\n err.context.transcript = [...transcriptSteps, { ...transcriptStep }]\n } else {\n err.input = new ConvoStep(lastMeConvoStep)\n err.transcript = [...transcriptSteps, { ...transcriptStep }]\n }\n }\n transcriptStep.err = err\n if (err instanceof BotiumError && container.caps[Capabilities.SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS]) {\n if (!err.isAsserterError()) {\n throw err\n }\n } else {\n throw err\n }\n } finally {\n if (convoStep.sender !== 'begin' && convoStep.sender !== 'end' && !skipTranscriptStep) {\n transcriptStep.scriptingMemory = Object.assign({}, scriptingMemory)\n transcriptStep.stepEnd = new Date()\n transcriptSteps.push(transcriptStep)\n }\n }\n }\n } catch (err) {\n transcript.err = err\n } finally {\n transcript.steps = transcriptSteps.filter(s => s)\n transcript.scriptingMemory = scriptingMemory\n transcript.convoEnd = new Date()\n if (container.caps[Capabilities.SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS]) {\n const transcriptStepErrs = transcript.steps.filter(s => s.err).map(s => s.err)\n if (transcriptStepErrs && transcriptStepErrs.length > 0) {\n transcript.err = botiumErrorFromList([transcriptStepErrs, transcript.err].filter(e => e), {})\n }\n }\n }\n }\n\n _compareObject (container, scriptingMemory, convoStep, result, expected, botMsg) {\n if (expected === null || expected === undefined) return\n\n if (_.isArray(expected)) {\n if (!_.isArray(result)) {\n throw new BotiumError(`${this.header.name}/${convoStep.stepTag}: bot response expected array, got \"${result}\"`)\n }\n if (expected.length !== result.length) {\n throw new BotiumError(`${this.header.name}/${convoStep.stepTag}: bot response expected array length ${expected.length}, got ${result.length}`)\n }\n for (let i = 0; i < expected.length; i++) {\n this._compareObject(container, scriptingMemory, convoStep, result[i], expected[i])\n }\n } else if (_.isObject(expected)) {\n _.forOwn(expected, (value, key) => {\n if (Object.prototype.hasOwnProperty.call(result, key)) {\n this._compareObject(container, scriptingMemory, convoStep, result[key], expected[key])\n } else {\n throw new BotiumError(`${this.header.name}/${convoStep.stepTag}: bot response \"${result}\" missing expected property: ${key}`)\n }\n })\n } else {\n ScriptingMemory.fill(container, scriptingMemory, result, expected, this.scriptingEvents)\n const response = this._checkNormalizeText(container, result)\n const tomatch = this._resolveUtterancesToMatch(container, scriptingMemory, expected, botMsg)\n this.scriptingEvents.assertBotResponse(response, tomatch, `${this.header.name}/${convoStep.stepTag}`)\n }\n }\n\n GetScriptingMemoryAllVariables (container) {\n const resultOuter = this.conversation.reduce((acc, convoStep) => {\n let result = acc\n result = result.concat(this.GetScriptingMemoryVariables(container, convoStep.messageText))\n const extractFromArgs = (convoStepItems) => {\n let resultInner = []\n for (const item of (convoStepItems || [])) {\n for (const arg of (item.args || [])) {\n resultInner = resultInner.concat(this.GetScriptingMemoryVariables(container, arg))\n }\n }\n return resultInner\n }\n result = result.concat(extractFromArgs(convoStep.asserters))\n result = result.concat(extractFromArgs(convoStep.logicHooks))\n result = result.concat(extractFromArgs(convoStep.userInputs))\n\n return result\n }, [])\n\n return [...new Set(resultOuter)]\n }\n\n GetScriptingMemoryVariables (container, utterance) {\n if (!utterance || !container.caps[Capabilities.SCRIPTING_ENABLE_MEMORY]) {\n return []\n }\n\n const utterances = this.scriptingEvents.resolveUtterance({ utterance })\n\n return utterances.reduce((acc, expected) => {\n if (_.isUndefined(expected)) return acc\n else return acc.concat(ScriptingMemory.extractVarNames(toString(expected)) || [])\n }, [])\n }\n\n _checkBotRepliesConsumed (container) {\n if (container.caps.SCRIPTING_FORCE_BOT_CONSUMED) {\n const queueLength = container._QueueLength()\n if (queueLength === 1) {\n throw new Error('There is an unread bot reply in queue')\n } else if (queueLength > 1) {\n throw new Error(`There are still ${queueLength} unread bot replies in queue`)\n }\n }\n }\n\n _resolveUtterancesToMatch (container, scriptingMemory, utterance, botMsg) {\n const utterances = this.scriptingEvents.resolveUtterance({ utterance })\n const normalizedUtterances = utterances.map(str => this._checkNormalizeText(container, str))\n const tomatch = normalizedUtterances.map(str => ScriptingMemory.apply(container, scriptingMemory, str, botMsg))\n return tomatch\n }\n\n _checkNormalizeText (container, str) {\n return normalizeText(str, !!container.caps[Capabilities.SCRIPTING_NORMALIZE_TEXT])\n }\n\n expandPartialConvos () {\n const _getIncludeLogicHookNames = (convoStep) => {\n if (!convoStep.logicHooks) {\n return []\n }\n\n const result = []\n convoStep.logicHooks.forEach((logicHook) => {\n if (logicHook.name === LOGIC_HOOK_INCLUDE) {\n if (logicHook.args.length !== 1) {\n throw Error('Wrong argument for include logic hook!')\n }\n result.push(logicHook)\n }\n })\n\n return result.map((hook) => hook.args[0])\n }\n\n const partialConvos = this.context.GetPartialConvos()\n\n const _getEffectiveConversationRecursive = (conversation, parentPConvos = [], result = [], ignoreBeginEnd = true) => {\n conversation.forEach((convoStep) => {\n let includeLogicHooks = []\n if (convoStep.sender === 'include') {\n if (convoStep.channel) {\n includeLogicHooks.push(convoStep.channel)\n }\n if (convoStep.messageText) {\n includeLogicHooks = includeLogicHooks.concat(splitStringInNonEmptyLines(convoStep.messageText))\n }\n } else {\n includeLogicHooks = _getIncludeLogicHookNames(convoStep)\n if (includeLogicHooks.length === 0 || convoStep.hasInteraction()) {\n if (!ignoreBeginEnd || (convoStep.sender !== 'begin' && convoStep.sender !== 'end')) {\n // dont put convo name for ConvoSteps on the root.\n const steptagPath = parentPConvos.length === 0 ? '' : parentPConvos.join('/') + '/'\n result.push(Object.assign(new ConvoStep(), convoStep, { stepTag: `${steptagPath}${convoStep.stepTag}` }))\n }\n }\n }\n\n includeLogicHooks.forEach((includeLogicHook) => {\n const alreadyThereAt = parentPConvos.indexOf(includeLogicHook)\n if (alreadyThereAt >= 0) {\n throw new BotiumError(`Partial convos are included circular. \"${includeLogicHook}\" is referenced by \"/${parentPConvos.slice(0, alreadyThereAt).join('/')}\" and by \"/${parentPConvos.join('/')}\" `)\n }\n if (!partialConvos || Object.keys(partialConvos).length === 0) {\n throw new BotiumError(`Cant find partial convo with name ${includeLogicHook} (There are no partial convos)`)\n }\n const partialConvo = partialConvos[includeLogicHook]\n if (!partialConvo) {\n throw new BotiumError(`Cant find partial convo with name ${includeLogicHook} (available partial convos: ${Object.keys(partialConvos).join(',')})`)\n }\n _getEffectiveConversationRecursive(partialConvo.conversation, [...parentPConvos, includeLogicHook], result, true)\n debug(`Partial convo ${includeLogicHook} included`)\n })\n })\n\n return result\n }\n\n this.conversation = _getEffectiveConversationRecursive(this.conversation, [], [], false)\n }\n}\n\nmodule\n .exports = {\n ConvoHeader,\n Convo,\n ConvoStep\n }\n","const util = require('util')\nconst _ = require('lodash')\n\nmodule.exports = class RetryHelper {\n constructor (caps, section) {\n this.retrySettings = {\n retries: caps[`RETRY_${section.toUpperCase()}_NUMRETRIES`] || 1,\n factor: caps[`RETRY_${section.toUpperCase()}_FACTOR`] || 1,\n minTimeout: caps[`RETRY_${section.toUpperCase()}_MINTIMEOUT`] || 1000\n }\n this.retryErrorPatterns = []\n const onErrorRegexp = caps[`RETRY_${section.toUpperCase()}_ONERROR_REGEXP`] || []\n if (onErrorRegexp) {\n if (_.isArray(onErrorRegexp)) {\n onErrorRegexp.forEach(r => {\n if (_.isString(r)) this.retryErrorPatterns.push(new RegExp(r, 'i'))\n else this.retryErrorPatterns.push(r)\n })\n } else if (_.isString(onErrorRegexp)) {\n this.retryErrorPatterns.push(new RegExp(onErrorRegexp, 'i'))\n } else {\n this.retryErrorPatterns.push(onErrorRegexp)\n }\n }\n }\n\n shouldRetry (err) {\n if (!err || this.retryErrorPatterns.length === 0) return false\n const errString = util.inspect(err)\n for (const re of this.retryErrorPatterns) {\n if (errString.match(re)) return true\n }\n return false\n }\n}\n","const _ = require('lodash')\n\nconst { toString, quoteRegexpString } = require('./helper')\n\nconst _normalize = (botresponse) => {\n if (_.isUndefined(botresponse)) return ''\n if (_.isObject(botresponse) && _.has(botresponse, 'messageText')) {\n return toString(botresponse.messageText) || ''\n }\n return toString(botresponse)\n}\n\nconst regexp = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) return false\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n const regexp = ignoreCase ? (new RegExp(utterance, 'i')) : (new RegExp(utterance, ''))\n return regexp.test(botresponse)\n}\n\nconst wildcard = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) {\n if (utterance.trim() === '*') return true\n else return false\n }\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n const numWildcards = utterance.split('*').length - 1\n if (numWildcards > 10) {\n throw new Error('Maximum number of 10 wildcards supported.')\n }\n const utteranceRe = quoteRegexpString(utterance).replace(/\\\\\\*/g, '(.*)')\n\n const regexp = ignoreCase ? (new RegExp(utteranceRe, 'i')) : (new RegExp(utteranceRe, ''))\n return regexp.test(botresponse)\n}\n\nconst wildcardExact = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) {\n if (utterance.trim() === '*') return true\n else return false\n }\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n const numWildcards = utterance.split('*').length - 1\n if (numWildcards > 10) {\n throw new Error('Maximum number of 10 wildcards supported.')\n }\n const utteranceRe = '^' + quoteRegexpString(utterance).replace(/\\\\\\*/g, '(.*)') + '$'\n\n const regexp = ignoreCase ? (new RegExp(utteranceRe, 'i')) : (new RegExp(utteranceRe, ''))\n return regexp.test(botresponse)\n}\n\nconst include = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) return false\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n if (ignoreCase) {\n utterance = utterance.toLowerCase()\n botresponse = botresponse.toLowerCase()\n }\n return botresponse.indexOf(utterance) >= 0\n}\n\nconst equals = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) return false\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n if (ignoreCase) {\n utterance = utterance.toLowerCase()\n botresponse = botresponse.toLowerCase()\n }\n return botresponse === utterance\n}\n\nconst getMatchFunction = (matchingMode) => {\n if (matchingMode === 'regexp' || matchingMode === 'regexpIgnoreCase') {\n return regexp(matchingMode === 'regexpIgnoreCase')\n } else if (matchingMode === 'wildcard' || matchingMode === 'wildcardIgnoreCase' || matchingMode === 'wildcardLowerCase') {\n return wildcard(matchingMode === 'wildcardIgnoreCase' || matchingMode === 'wildcardLowerCase')\n } else if (matchingMode === 'wildcardExact' || matchingMode === 'wildcardExactIgnoreCase') {\n return wildcardExact(matchingMode === 'wildcardExactIgnoreCase')\n } else if (matchingMode === 'include' || matchingMode === 'includeIgnoreCase' || matchingMode === 'includeLowerCase') {\n return include(matchingMode === 'includeIgnoreCase' || matchingMode === 'includeLowerCase')\n } else if (matchingMode === 'equals' || matchingMode === 'equalsIgnoreCase') {\n return equals(matchingMode === 'equalsIgnoreCase')\n } else {\n return equals(false)\n }\n}\n\nmodule.exports = {\n regexp,\n wildcard,\n wildcardExact,\n include,\n equals,\n getMatchFunction\n}\n","const _ = require('lodash')\n\nconst isStringJson = (string) => {\n try {\n JSON.parse(string)\n } catch (e) {\n return false\n }\n return true\n}\n/**\n *\n * @param json\n * @param stringIsJson It is possible to stringify a string, so we can say its a json object,\n * but usually thats not what we expect. Default is true because backward compatibility\n * @returns {boolean}\n */\nconst isJsonObject = (json, stringIsJson = true) => {\n if (!stringIsJson && _.isString(json)) {\n return false\n }\n try {\n JSON.stringify(json)\n } catch (e) {\n return false\n }\n return true\n}\n\nconst isJson = (json) => {\n if (isStringJson(json)) {\n return json\n } else if (isJsonObject(json)) {\n return JSON.stringify(json)\n }\n return null\n}\n\nconst toJsonWeak = (stringOrNot) => {\n try {\n return JSON.parse(stringOrNot)\n } catch (e) {\n return stringOrNot\n }\n}\n\nconst optionalJson = (json) => {\n const body = isJson(json)\n return body ? { 'content-type': 'application/json', body: body } : { 'content-type': 'text/plain', body: json }\n}\n\nconst shortenJsonString = (obj) => {\n let str = _.isString(obj) ? obj : JSON.stringify(obj, null, 2)\n const length = str.length\n if (length > 1000) {\n str = `${str.substr(0, 1000)} ... (${length - 1000} chars more)`\n }\n return str\n}\n\nconst escapeJSONString = (string) => {\n if (string) {\n return ('' + string).replace(/[\"\\\\\\n\\r\\u2028\\u2029]/g, function (character) {\n // Escape all characters not included in SingleStringCharacters and\n // DoubleStringCharacters on\n // http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4\n switch (character) {\n case '\"':\n case '\\\\':\n return '\\\\' + character\n // Four possible LineTerminator characters need to be escaped:\n case '\\n':\n return '\\\\n'\n case '\\r':\n return '\\\\r'\n case '\\u2028':\n return '\\\\u2028'\n case '\\u2029':\n return '\\\\u2029'\n }\n })\n }\n}\n\nconst formatTimeout = (ms) => {\n if (ms >= 1000) {\n if (ms % 1000 !== 0) {\n return `${Math.floor(ms / 1000)}s ${ms % 1000}ms`\n } else {\n return `${Math.floor(ms / 1000)}s`\n }\n } else {\n return `${ms}ms`\n }\n}\n\nmodule.exports = { optionalJson, isJson, isJsonObject, isStringJson, shortenJsonString, escapeJSONString, toJsonWeak, formatTimeout }\n","const _ = require('lodash')\nconst jp = require('jsonpath')\n\nconst _ensureList = (queryResult) => {\n if (_.isArray(queryResult)) {\n return queryResult\n }\n return [queryResult]\n}\n\nmodule.exports.precompile = (caps, scriptBuffer, options, filename) => {\n if (!filename.endsWith('.json')) {\n return\n }\n\n const checkerJsonpath = options.CHECKER_JSONPATH\n const rootJsonpath = options.ROOT_JSONPATH\n const utteranceRefsJsonpath = options.UTTERANCE_REF_JSONPATH\n const utterancesJsonpath = options.UTTERANCES_JSONPATH\n let scriptData = scriptBuffer\n if (_.isString(scriptData)) {\n try {\n scriptData = JSON.parse(scriptData)\n } catch (err) {\n throw new Error(`Cant convert to JSON ${filename}`)\n }\n }\n if (checkerJsonpath) {\n const scouldExist = jp.query(scriptData, checkerJsonpath)\n if (!scouldExist || scouldExist.length === 0) {\n return\n }\n }\n\n if (!rootJsonpath) {\n scriptData = [scriptData]\n } else {\n let rootObjects\n try {\n rootObjects = _ensureList(jp.query(scriptData, rootJsonpath))\n } catch (err) {\n throw new Error(`Root jsonpath ${rootJsonpath} invalid: ${err.message}`)\n }\n\n scriptData = rootObjects\n }\n\n const result = {}\n for (const json of scriptData) {\n let intent\n try {\n intent = _ensureList(jp.query(json, utteranceRefsJsonpath))\n } catch (err) {\n throw new Error(`Intents jsonpath ${utteranceRefsJsonpath} invalid: ${err.message}`)\n }\n\n if (intent.length !== 1) {\n throw new Error(`There should be exact one intent but found \"${JSON.stringify(intent)}\" on path \"${utteranceRefsJsonpath}\" in JSON \"${JSON.stringify(json)}\"`)\n }\n\n if (!result[intent]) {\n result[intent] = []\n }\n\n try {\n result[intent] = result[intent].concat(jp.query(json, utterancesJsonpath))\n } catch (err) {\n throw new Error(`Utterances jsonpath ${utteranceRefsJsonpath} invalid: ${err.message}`)\n }\n }\n\n return { scriptBuffer: JSON.stringify({ utterances: result }) }\n}\n","const util = require('util')\nconst path = require('path')\nconst fs = require('fs')\nconst { NodeVM } = require('vm2')\nconst esprima = require('esprima')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-core-HookUtils')\n\nconst Capabilities = require('../Capabilities')\nconst { BotiumError } = require('../scripting/BotiumError')\n\nconst executeHook = async (caps, hook, args) => {\n return executeHookSync(caps, hook, args)\n}\n\nconst executeHookSync = (caps, hook, args) => {\n if (!hook) {\n return\n }\n\n if (_.isFunction(hook)) {\n try {\n return hook(args)\n } catch (err) {\n throw new Error(`Calling Hook function failed: ${err.message}`)\n }\n }\n\n if (_.isString(hook)) {\n try {\n const vm = new NodeVM({\n eval: false,\n require: false,\n sandbox: args\n })\n const r = vm.run(hook)\n if (_.isFunction(r)) {\n return r(args)\n } else {\n return r\n }\n } catch (err) {\n throw new Error(`Calling Hook Javascript code failed: ${err.message}`)\n }\n }\n throw new Error(`Unknown hook ${typeof hook}`)\n}\n\nconst getHook = (caps, data) => {\n if (!data) {\n return null\n }\n const allowUnsafe = !!caps[Capabilities.SECURITY_ALLOW_UNSAFE]\n\n if (_.isFunction(data)) {\n debug('found hook, type: function definition')\n return data\n }\n\n if (_.isString(data)) {\n let resultWithRequire\n let tryLoadFile = path.resolve(process.cwd(), data)\n if (fs.existsSync(tryLoadFile)) {\n try {\n resultWithRequire = require(tryLoadFile)\n } catch (err) {\n }\n } else {\n tryLoadFile = data\n try {\n resultWithRequire = require(data)\n } catch (err) {\n }\n }\n\n if (resultWithRequire) {\n if (!allowUnsafe) {\n throw new BotiumError(\n 'Security Error. Using unsafe custom hook with require is not allowed',\n {\n type: 'security',\n subtype: 'allow unsafe',\n source: path.basename(__filename),\n cause: {\n SECURITY_ALLOW_UNSAFE: caps[Capabilities.SECURITY_ALLOW_UNSAFE],\n hookData: data\n }\n }\n )\n }\n\n if (_.isFunction(resultWithRequire)) {\n debug(`found hook, type: require, in ${tryLoadFile}`)\n return resultWithRequire\n } else {\n throw new Error(`Cant load hook ${tryLoadFile} because it is not a function`)\n }\n }\n\n try {\n esprima.parseScript(data)\n } catch (err) {\n throw new Error(`Cant load hook, syntax is not valid - ${util.inspect(err)}`)\n }\n\n debug('Found hook, type: JavaScript as String')\n return data\n }\n\n throw new Error(`Not valid hook ${util.inspect(data)}`)\n}\n\nmodule.exports = {\n getHook,\n executeHook,\n executeHookSync\n}\n","const _ = require('lodash')\nconst { executeHookSync, getHook } = require('../../helpers/HookUtils')\n\nmodule.exports.precompile = (caps, scriptBuffer, options, filename) => {\n if (!(options.script || options.SCRIPT)) {\n throw new Error('Script is not defined')\n }\n\n if (_.isString(scriptBuffer)) {\n try {\n scriptBuffer = JSON.parse(scriptBuffer)\n } catch (err) {\n }\n }\n\n const hook = getHook(caps, options.SCRIPT)\n const response = executeHookSync(caps, hook, { scriptData: scriptBuffer, filename })\n\n if (!response) {\n return\n }\n\n return response.scriptBuffer ? response : { scriptBuffer: response }\n}\n","const MarkdownIt = require('markdown-it')\nconst debug = require('debug')('botium-core-PrecompilerMarkdownRasa')\nconst util = require('util')\nconst _ = require('lodash')\n\nconst htmlCommentRegexp = /(<!--.*?-->)/g\n\nmodule.exports.precompile = (caps, scriptBuffer, options, filename) => {\n if (!filename.endsWith('.md')) {\n return\n }\n\n const md = new MarkdownIt()\n const parsed = md.parse(scriptBuffer, {})\n\n const _extractFromRasaIntent = (content) => {\n return content.replace(htmlCommentRegexp, '').substring('intent:'.length).trim()\n }\n\n const _extractFromRasaSentence = (rasaSentence) => {\n rasaSentence = rasaSentence.replace(htmlCommentRegexp, '')\n\n const regex = /\\[([^\\]]+)\\]\\(([a-zA-Z][_:\\-a-zA-Z0-9]+)\\)/\n let matched = rasaSentence.match(regex)\n while (matched) {\n const value = matched[1]\n const splitted = matched[2].split(':')\n // const [name] = splitted\n if (splitted.length > 1) {\n debug(`Entity synonim ${splitted[1]} ignored in sentence ${rasaSentence} `)\n }\n rasaSentence = rasaSentence.replace(matched[0], value)\n matched = rasaSentence.match(regex)\n }\n return { meText: rasaSentence.trim() }\n }\n\n const utterances = {}\n\n let meTexts = []\n let intent = null\n // state got every possible value, but just few are used. Could be simplified.\n let state = 'START'\n let processLeafs = null\n for (const entry of parsed) {\n if (entry.type === 'heading_open') {\n state = 'heading_open'\n } else if (entry.type === 'inline' && entry.content.startsWith('intent:')) {\n intent = _extractFromRasaIntent(entry.content)\n processLeafs = true\n state = 'inline_intent'\n } else if (entry.type === 'inline' && entry.content.startsWith('synonym:')) {\n processLeafs = false\n debug(`Synonym \"${entry.content}\" ignored`)\n state = 'inline_synonym'\n } else if (entry.type === 'inline' && entry.content.startsWith('regex:')) {\n processLeafs = false\n debug(`Regex \"${entry.content}\" ignored`)\n state = 'inline_regex'\n } else if (entry.type === 'inline' && entry.content.startsWith('lookup:')) {\n processLeafs = false\n debug(`Lookup \"${entry.content}\" ignored`)\n state = 'inline_lookup'\n } else if (entry.type === 'heading_close') {\n state = 'heading_close'\n } else if (entry.type === 'bullet_list_open') {\n state = 'bullet_list_open'\n } else if (entry.type === 'list_item_open') {\n state = 'list_item_open'\n } else if (entry.type === 'paragraph_open') {\n state = 'paragraph_open'\n } else if (entry.type === 'inline' && state === 'paragraph_open') {\n if (processLeafs) {\n const { meText } = _extractFromRasaSentence(entry.content)\n meTexts.push(meText)\n }\n state = 'inline_leaf'\n } else if (entry.type === 'paragraph_close') {\n state = 'paragraph_close'\n } else if (entry.type === 'list_item_close') {\n state = 'list_item_close'\n } else if (entry.type === 'bullet_list_close') {\n state = 'bullet_list_close'\n if (meTexts.length) {\n if (!intent) {\n debug(`Intent not found, dropping me texts ${JSON.stringify(meTexts)}`)\n } else {\n meTexts = _.uniq(meTexts)\n utterances[intent] = meTexts\n }\n }\n intent = null\n meTexts = []\n } else {\n debug(`Markdown entry ignored ${util.inspect(entry)}`)\n }\n }\n\n return {\n scriptBuffer: { utterances },\n filename: `${filename}.json`\n }\n}\n","const _ = require('lodash')\nconst debug = require('debug')('botium-core-CapabilitiesUtils')\nconst { toJsonWeak } = require('./Utils')\n\nmodule.exports.getAllCapValues = (capNamePrefix, caps) => {\n const allCapValues = []\n const jsonPathCaps = _.pickBy(caps, (v, k) => k.startsWith(capNamePrefix))\n _(jsonPathCaps).keys().sort().each((key) => {\n const val = _.isFunction(caps[key]) ? (caps[key])() : caps[key]\n\n if (_.isArray(val)) {\n val.forEach(p => {\n allCapValues.push(`${p}`.trim())\n })\n } else if (_.isString(val)) {\n val.split(',').forEach(p => {\n allCapValues.push(p.trim())\n })\n }\n })\n return allCapValues\n}\n\n/**\n * Extract repetitive capabilities into list.\n * Key is checked, but the value is free\n * @param caps\n * @param prefix\n * @returns {Array}\n */\nmodule.exports.flatCababilities = (caps, prefix) => {\n const result = []\n let capNames = []\n for (const name of Object.keys(caps)) {\n if (name.startsWith(prefix)) {\n capNames.push(name)\n }\n }\n capNames = capNames.sort()\n\n if (capNames.length === 1 && capNames[0] === prefix) {\n const val = toJsonWeak(caps[capNames[0]])\n if (_.isArray(val)) {\n val.forEach(entry => result.push(entry))\n } else {\n result.push(val)\n }\n } else {\n const regexpPrefixAndGroup = new RegExp(`^${prefix}\\\\.\\\\d+`)\n let currentGroup\n let currentObject = {}\n for (const capName of capNames) {\n if (capName === prefix) {\n throw new Error(`Incorrect structure. Global definition must be unique. See Capability ${capName}`)\n }\n if (capName.charAt(prefix.length) !== '.') {\n debug(`From flatten result skipped capability ${capName} using prefix ${prefix}`)\n continue\n }\n let capPrefixAndGroup = capName.match(regexpPrefixAndGroup)\n capPrefixAndGroup = (capPrefixAndGroup && capPrefixAndGroup.length) ? capPrefixAndGroup[0] : prefix\n\n if (capPrefixAndGroup === capName) {\n const val = toJsonWeak(caps[capName])\n result.push(val)\n } else {\n if (capPrefixAndGroup && capName.charAt(capPrefixAndGroup.length) !== '.') {\n throw new Error(`Capability name invalid. No valid grouping found in capability ${capName} using prefix ${prefix}`)\n }\n\n const key = capName.substr(capPrefixAndGroup.length + 1)\n\n if (!key.length) {\n throw new Error(`Capability name invalid. No key after grouping in capability ${capName} using prefix ${prefix}`)\n }\n\n if (currentGroup && currentGroup !== capPrefixAndGroup) {\n result.push(currentObject)\n currentObject = {}\n }\n\n currentObject[key] = toJsonWeak(caps[capName])\n currentGroup = capPrefixAndGroup\n }\n }\n if (currentObject && currentGroup) {\n result.push(currentObject)\n currentObject = null\n currentGroup = null\n }\n }\n\n return result\n}\n","const util = require('util')\nconst debug = require('debug')('botium-core-Precompilers')\n\nconst { isJsonObject } = require('../../helpers/Utils')\n\nconst PROVIDERS = {\n JSON_TO_JSON_JSONPATH: require('./JsonToJson'),\n SCRIPT: require('./Script'),\n MARKDOWN_RASA: require('./MarkdownRasa')\n}\nconst CAPABILITY_PREFIX = 'PRECOMPILERS'\nconst { flatCababilities } = require('../../helpers/CapabilitiesUtils')\n\nmodule.exports.execute = (scriptBuffer, options) => {\n const { caps, filename } = options\n const ownCaps = flatCababilities(caps, CAPABILITY_PREFIX)\n if (Buffer.isBuffer(scriptBuffer)) {\n scriptBuffer = scriptBuffer.toString()\n }\n\n for (const capSuffixAndVal of ownCaps) {\n if (!(capSuffixAndVal.NAME)) {\n debug(`Precompiler name not defined in ${util.inspect(capSuffixAndVal)}`)\n return null\n }\n const provider = PROVIDERS[capSuffixAndVal.NAME]\n\n if (!provider) {\n throw new Error(`Precompiler ${util.inspect(capSuffixAndVal.NAME)} not found using caps ${util.inspect(capSuffixAndVal)}`)\n }\n\n const result = provider.precompile(caps, scriptBuffer, capSuffixAndVal, filename)\n if (result) {\n if (!result.scriptBuffer) {\n return null\n }\n if (isJsonObject(result.scriptBuffer, false)) {\n result.scriptBuffer = JSON.stringify(result.scriptBuffer)\n }\n\n result.precompiler = capSuffixAndVal.NAME\n // dont let chain the precompilers. It looks more robust\n return result\n }\n }\n}\n","const _ = require('lodash')\n\nmodule.exports = class CompilerBase {\n constructor ({ AddConvos, AddPartialConvos, AddUtterances, AddScriptingMemories, GetPartialConvos, IsAsserterValid, IsLogicHookValid, IsUserInputValid, scriptingEvents }, caps = {}) {\n this.context = {\n AddConvos,\n AddPartialConvos,\n AddUtterances,\n AddScriptingMemories,\n GetPartialConvos,\n IsAsserterValid,\n IsLogicHookValid,\n IsUserInputValid,\n scriptingEvents\n }\n this.caps = caps\n }\n\n Validate () {\n }\n\n GetHeaders (scriptBuffer) {\n const convos = this.Compile(scriptBuffer)\n if (convos) {\n return convos.map((convo) => convo.header)\n } else {\n return []\n }\n }\n\n Compile (scriptBuffer, scriptType) {\n throw new Error('not implemented')\n }\n\n Decompile (convos) {\n throw new Error('not implemented')\n }\n\n _AssertCapabilityExists (cap) {\n if (!this.caps[cap]) {\n throw new Error(`Capability property ${cap} not set`)\n }\n }\n\n _GetOptionalCapability (cap, def = null) {\n if (_.isUndefined(this.caps[cap])) {\n return def\n }\n\n return this.caps[cap]\n }\n\n _GetCapabilitiesByPrefix (prefix) {\n const result = {}\n Object.keys(this.caps).forEach((key) => {\n if (key.startsWith(prefix)) {\n result[key] = this.caps[key]\n }\n })\n return result\n }\n}\n","const util = require('util')\nconst _ = require('lodash')\n\nmodule.exports = class Utterance {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.sourceTag = fromJson.sourceTag\n this.utterances = []\n if (fromJson.utterances && _.isArray(fromJson.utterances)) {\n this.utterances = fromJson.utterances\n } else if (fromJson.utterances) {\n this.utterances.push(fromJson.utterances)\n }\n }\n\n toString () { return this.name + (this.sourceTag ? ` (${util.inspect(this.sourceTag)})` : '') + ': ' + this.utterances.join('|') }\n}\n","const util = require('util')\nconst XLSX = require('xlsx')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-core-CompilerXlsx')\n\nconst Capabilities = require('../Capabilities')\nconst { E_SCRIPTING_MEMORY_COLUMN_MODE } = require('../Enums')\nconst CompilerBase = require('./CompilerBase')\nconst Constants = require('./Constants')\nconst Utterance = require('./Utterance')\nconst { Convo } = require('./Convo')\nconst { linesToConvoStep, convoStepToLines, validateConvo } = require('./helper')\n\nmodule.exports = class CompilerXlsx extends CompilerBase {\n constructor (context, caps = {}) {\n super(context, caps)\n\n this.colnames = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']\n }\n\n _splitSheetnames (sheetnames) {\n if (sheetnames) return sheetnames.split(/\\s*[;,|]\\s*/)\n }\n\n _filterSheetnames (sheetnames, selectors) {\n const filteredSheetnames = sheetnames.filter(sheetname => !!selectors.find(selector => selector === '*' || sheetname === selector))\n debug(`_filterSheetnames(sheetnames: ${JSON.stringify(sheetnames)}, selectors: ${JSON.stringify(selectors)}, filteredSheetnames: ${JSON.stringify(filteredSheetnames)})`)\n return filteredSheetnames\n }\n\n Validate () {\n super.Validate()\n\n if (this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL] !== undefined) {\n if (_.isString(this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL]) && this.colnames.findIndex((c) => c === this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL]) < 0) {\n throw new Error(`SCRIPTING_XLSX_STARTCOL ${this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL]} invalid (A-Z)`)\n } else if (this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL] < 1 || this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL] > this.colnames.length) {\n throw new Error(`SCRIPTING_XLSX_STARTCOL ${this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL]} invalid (1-${this.colnames.length})`)\n }\n }\n }\n\n Compile (scriptBuffer, scriptType = Constants.SCRIPTING_TYPE_CONVO) {\n const workbook = XLSX.read(scriptBuffer, { type: 'buffer' })\n if (!workbook) throw new Error('Workbook not readable')\n\n debug(`Loaded XLSX with Props: ${workbook.Props ? JSON.stringify(workbook.Props) : '<none>'}`)\n const eol = this.caps[Capabilities.SCRIPTING_XLSX_EOL_WRITE]\n const maxEmptyRowCount = 10\n\n let sheetnames = []\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO) {\n if (this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES]) {\n sheetnames = this._filterSheetnames(workbook.SheetNames, this._splitSheetnames(this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES]))\n } else {\n sheetnames = workbook.SheetNames.filter(s => (s.toLowerCase().indexOf('convo') >= 0 || s.toLowerCase().indexOf('dialog') >= 0) && s.toLowerCase().indexOf('partial') < 0) || []\n }\n } else if (scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n if (this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES_PCONVOS]) {\n sheetnames = this._filterSheetnames(workbook.SheetNames, this._splitSheetnames(this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES_PCONVOS]))\n } else {\n sheetnames = workbook.SheetNames.filter(s => s.toLowerCase().indexOf('partial') >= 0) || []\n }\n } else if (scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n if (this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES_UTTERANCES]) {\n sheetnames = this._filterSheetnames(workbook.SheetNames, this._splitSheetnames(this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES_UTTERANCES]))\n } else {\n sheetnames = workbook.SheetNames.filter(s => s.toLowerCase().indexOf('utter') >= 0) || []\n }\n } else if (scriptType === Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY) {\n if (this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES_SCRIPTING_MEMORY]) {\n sheetnames = this._filterSheetnames(workbook.SheetNames, this._splitSheetnames(this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES_SCRIPTING_MEMORY]))\n } else {\n sheetnames = workbook.SheetNames.filter(s => s.toLowerCase().indexOf('memory') >= 0 || s.toLowerCase().indexOf('scripting') >= 0) || []\n }\n } else {\n throw Error(`Invalid script type ${scriptType}`)\n }\n\n debug(`sheet names for ${scriptType}: ${util.inspect(sheetnames)}`)\n\n const scriptResults = []\n\n sheetnames.forEach((sheetname) => {\n const sheet = workbook.Sheets[sheetname]\n if (!sheet) return\n\n let { rowindex, colindex, hasNameCol } = this._findOrigin(sheet, scriptType)\n debug(`evaluating sheet name for ${scriptType}: ${util.inspect(sheetname)}, rowindex ${rowindex}, colindex ${colindex}`)\n\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO || scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n const parseCell = (sender, content) => {\n if (!content) return { messageText: '' }\n\n if (!_.isString(content)) content = '' + content\n\n let eolSplit = null\n let lines = []\n if (content.indexOf('\\n') >= 0) {\n eolSplit = '\\n'\n } else if (content.indexOf('\\r') >= 0) {\n eolSplit = '\\r'\n }\n\n if (eolSplit) {\n lines = content.split(eolSplit).map(l => l.trim()).filter(l => l)\n } else {\n lines = [content.trim()]\n }\n\n return linesToConvoStep(lines, sender, this.context, eol)\n }\n\n const _extractRow = (rowindex) => {\n const cell1 = this.colnames[colindex] + rowindex\n const cell1Value = (sheet[cell1] && sheet[cell1].v) || null\n const cell2 = this.colnames[colindex + 1] + rowindex\n const cell2Value = (sheet[cell2] && sheet[cell2].v) || null\n const cell3 = this.colnames[colindex + 2] + rowindex\n const cell3Value = (sheet[cell3] && sheet[cell3].v) || null\n\n if (hasNameCol) {\n return {\n nameCell: cell1,\n nameCellValue: cell1Value,\n meCell: cell2,\n meCellValue: cell2Value,\n botCell: cell3,\n botCellValue: cell3Value\n }\n } else {\n return {\n nameCell: null,\n nameCellValue: null,\n meCell: cell1,\n meCellValue: cell1Value,\n botCell: cell2,\n botCellValue: cell2Value\n }\n }\n }\n\n let questionAnswerMode = this._GetOptionalCapability(Capabilities.SCRIPTING_XLSX_MODE)\n if (questionAnswerMode !== null) {\n questionAnswerMode = questionAnswerMode === 'QUESTION_ANSWER'\n debug(`questionAnswerMode to ${questionAnswerMode} (capability)`)\n } else {\n let emptyRowCount = 0\n let index = 0\n const foundQARows = []\n const foundConvoRows = []\n\n while (emptyRowCount <= maxEmptyRowCount) {\n const { meCell, meCellValue, botCell, botCellValue } = _extractRow(rowindex + index)\n if (!meCellValue && !botCellValue) {\n emptyRowCount++\n } else if (meCellValue && botCellValue) {\n foundQARows.push(meCell)\n } else if (meCellValue && !botCellValue) {\n foundConvoRows.push(meCell)\n } else if (!meCellValue && botCellValue) {\n foundConvoRows.push(botCell)\n }\n index++\n }\n if (foundQARows.length > 0 && foundConvoRows.length > 0) {\n throw new Error(`Excel sheet \"${sheetname}\" invalid. Detected intermixed Q&A sections (for instance ${foundQARows.slice(0, 3).join(',')}) and convo sections (for instance ${foundConvoRows.slice(0, 3).join(',')})`)\n } else if (foundQARows.length > 0 && foundConvoRows.length === 0) {\n questionAnswerMode = true\n debug('questionAnswerMode to true (question-answer row found)')\n } else {\n questionAnswerMode = false\n debug('questionAnswerMode to false (no question-answer row found)')\n }\n }\n\n const convoResults = []\n let currentConvo = []\n let currentConvoName = null\n let emptyRowCount = 0\n let startrowindex = -1\n\n while (true) {\n const { nameCellValue, meCell, meCellValue, botCell, botCellValue } = _extractRow(rowindex)\n\n if (questionAnswerMode) {\n if (meCellValue || botCellValue) {\n currentConvo = []\n currentConvo.push(Object.assign(\n { sender: 'me', stepTag: 'Cell ' + meCell },\n parseCell('me', meCellValue)\n ))\n startrowindex = rowindex\n currentConvo.push(Object.assign(\n { sender: 'bot', stepTag: 'Cell ' + botCell },\n parseCell('bot', botCellValue)\n ))\n convoResults.push(new Convo(this.context, {\n header: {\n name: nameCellValue || null,\n sheetname,\n colindex,\n rowindex: startrowindex\n },\n conversation: currentConvo\n }))\n } else {\n emptyRowCount++\n }\n } else {\n if (currentConvo.length === 0) {\n currentConvoName = nameCellValue || null\n }\n if (meCellValue) {\n currentConvo.push(Object.assign(\n { sender: 'me', stepTag: 'Cell ' + meCell },\n parseCell('me', meCellValue)\n ))\n if (startrowindex < 0) startrowindex = rowindex\n emptyRowCount = 0\n } else if (botCellValue) {\n currentConvo.push(Object.assign(\n { sender: 'bot', stepTag: 'Cell ' + botCell },\n parseCell('bot', botCellValue)\n ))\n if (startrowindex < 0) startrowindex = rowindex\n emptyRowCount = 0\n } else {\n if (currentConvo.length > 0) {\n convoResults.push(new Convo(this.context, {\n header: {\n name: currentConvoName,\n sheetname,\n colindex,\n rowindex: startrowindex\n },\n conversation: currentConvo\n }))\n }\n currentConvo = []\n currentConvoName = null\n startrowindex = -1\n emptyRowCount++\n }\n }\n rowindex++\n\n if (emptyRowCount > maxEmptyRowCount) break\n }\n\n if (convoResults.length > 0) {\n const formatLength = Math.max(3, `${convoResults[convoResults.length - 1].header.rowindex}`.length)\n const formatBase = '0'.repeat(formatLength)\n const formatRowIndex = (rowindex) => (formatBase + `${rowindex}`).slice(-1 * formatLength)\n convoResults.forEach(convo => {\n if (!convo.header.name) {\n convo.header.name = `${convo.header.sheetname}-${this.colnames[convo.header.colindex]}${formatRowIndex(convo.header.rowindex)}`\n }\n convo.header.sort = convo.header.name\n scriptResults.push(convo)\n })\n }\n }\n\n if (scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n let currentUtterance = null\n let emptylines = 0\n while (true) {\n const nameCell = this.colnames[colindex] + rowindex\n const uttCell = this.colnames[colindex + 1] + rowindex\n\n if (sheet[nameCell] && sheet[nameCell].v && sheet[uttCell] && sheet[uttCell].v) {\n currentUtterance = new Utterance({ name: sheet[nameCell].v, utterances: [`${sheet[uttCell].v}`] })\n scriptResults.push(currentUtterance)\n emptylines = 0\n } else if (sheet[uttCell] && sheet[uttCell].v) {\n if (currentUtterance) currentUtterance.utterances.push(`${sheet[uttCell].v}`)\n emptylines = 0\n } else {\n currentUtterance = null\n emptylines++\n }\n rowindex++\n\n if (emptylines > maxEmptyRowCount) break\n }\n }\n\n if (scriptType === Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY) {\n const guessScriptingMemoryColumnMode = () => {\n const line1Cell = this.colnames[colindex] + (rowindex + 1)\n if (sheet[line1Cell] && sheet[line1Cell].v) {\n if (sheet[line1Cell].v.startsWith('$')) return E_SCRIPTING_MEMORY_COLUMN_MODE.TESTCASENAMES\n }\n return E_SCRIPTING_MEMORY_COLUMN_MODE.VARNAMES\n }\n const columnMode = this.caps[Capabilities.SCRIPTING_MEMORY_COLUMN_MODE] || guessScriptingMemoryColumnMode()\n\n if (columnMode === E_SCRIPTING_MEMORY_COLUMN_MODE.TESTCASENAMES) {\n const caseNames = []\n let colindexTemp = colindex + 1\n while (true) {\n const caseNameCell = this.colnames[colindexTemp] + rowindex\n if (sheet[caseNameCell] && sheet[caseNameCell].v) {\n caseNames.push(sheet[caseNameCell].v)\n } else {\n break\n }\n colindexTemp++\n }\n\n const varNames = []\n const varValues = []\n\n rowindex += 1\n while (true) {\n const varNameCell = this.colnames[colindex] + rowindex\n if (sheet[varNameCell] && sheet[varNameCell].v) {\n varNames.push(sheet[varNameCell].v)\n const values = []\n for (let i = 0; i < caseNames.length; i++) {\n const variableValueCell = this.colnames[colindex + 1 + i] + rowindex\n if (sheet[variableValueCell] && sheet[variableValueCell].v) {\n values.push(sheet[variableValueCell].v.toString())\n } else {\n values.push(null)\n }\n }\n varValues.push(values)\n rowindex += 1\n } else {\n break\n }\n }\n for (let caseIndex = 0; caseIndex < caseNames.length; caseIndex++) {\n const caseName = caseNames[caseIndex]\n\n const values = varNames.reduce((agg, varName, varIndex) => {\n agg[varName] = varValues[varIndex][caseIndex] || null\n return agg\n }, {})\n scriptResults.push({ header: { name: caseName }, values: values })\n }\n } else {\n const variableNames = []\n let colindexTemp = colindex + 1\n while (true) {\n const variableNameCell = this.colnames[colindexTemp] + rowindex\n if (sheet[variableNameCell] && sheet[variableNameCell].v) {\n variableNames.push(sheet[variableNameCell].v)\n } else {\n break\n }\n colindexTemp++\n }\n\n rowindex += 1\n while (true) {\n const caseNameCell = this.colnames[colindex] + rowindex\n if (sheet[caseNameCell] && sheet[caseNameCell].v) {\n const caseName = sheet[caseNameCell].v\n const values = {}\n for (let i = 0; i < variableNames.length; i++) {\n const variableValueCell = this.colnames[colindex + 1 + i] + rowindex\n if (sheet[variableValueCell] && sheet[variableValueCell].v) {\n values[variableNames[i]] = sheet[variableValueCell].v.toString()\n } else {\n values[variableNames[i]] = null\n }\n }\n rowindex += 1\n\n scriptResults.push({ header: { name: caseName }, values: values })\n } else {\n break\n }\n }\n }\n }\n })\n\n if (scriptResults && scriptResults.length > 0) {\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO) {\n this.context.AddConvos(scriptResults)\n } else if (scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n this.context.AddPartialConvos(scriptResults)\n } else if (scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n this.context.AddUtterances(scriptResults)\n } else if (scriptType === Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY) {\n this.context.AddScriptingMemories(scriptResults)\n }\n return scriptResults\n }\n }\n\n Decompile (convos) {\n const eol = this.caps[Capabilities.SCRIPTING_XLSX_EOL_WRITE]\n\n let sheetname = 'Botium'\n if (this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES]) {\n sheetname = this._splitSheetnames(this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES])[0]\n }\n const data = []\n const errors = []\n if (convos) {\n for (let i = 0; i < convos.length; i++) {\n const convo = convos[i]\n if (!convo.conversation) return\n\n const validationResult = validateConvo(convo)\n if (validationResult.errors.length > 0) {\n errors.push(...validationResult.errors.map(e => new Error(`Convo ${i + 1} ${e.message}`)))\n }\n\n convo.conversation.forEach((step) => {\n let cellContent = ''\n\n const stepLines = convoStepToLines(step)\n if (stepLines && stepLines.length > 0) cellContent = stepLines.join(eol)\n\n data.push({ [step.sender]: cellContent })\n })\n data.push({})\n }\n }\n if (errors.length > 0) {\n throw new Error(errors.map(e => e.message).join(' - '))\n }\n\n const wb = XLSX.utils.book_new()\n const ws = XLSX.utils.json_to_sheet(data, { header: ['me', 'bot'] })\n XLSX.utils.book_append_sheet(wb, ws, sheetname)\n const xlsxOutput = XLSX.write(wb, { type: 'buffer' })\n return xlsxOutput\n }\n\n _get (sheet, rowindex, colindex) {\n const cell = this.colnames[colindex] + rowindex\n const cellValue = sheet[cell] && sheet[cell].v\n return cellValue\n }\n\n _findOrigin (sheet, scriptType) {\n let rowindex = this.caps[Capabilities.SCRIPTING_XLSX_STARTROW]\n let colindex = this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL]\n let hasNameCol = _.has(this.caps, Capabilities.SCRIPTING_XLSX_HASNAMECOL) ? !!this.caps[Capabilities.SCRIPTING_XLSX_HASNAMECOL] : null\n\n if (_.isString(this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL])) {\n colindex = this.colnames.findIndex((c) => c === this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL])\n } else if (colindex !== undefined) {\n colindex = colindex - 1\n }\n\n if (rowindex === undefined && colindex === undefined) {\n // eslint-disable-next-line no-labels\n NestedLoop:\n for (let cr = 1; cr < 1000; cr++) {\n for (let cc = 0; cc < this.colnames.length; cc++) {\n if (this._get(sheet, cr, cc)) {\n if (scriptType === Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY) {\n if (cc > 0 && this._get(sheet, cr + 1, cc - 1)) {\n rowindex = cr\n colindex = cc - 1\n // eslint-disable-next-line no-labels\n break NestedLoop\n }\n } else {\n rowindex = cr\n colindex = cc\n // eslint-disable-next-line no-labels\n break NestedLoop\n }\n }\n }\n }\n if (scriptType !== Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY) {\n if (rowindex !== undefined && this.caps[Capabilities.SCRIPTING_XLSX_HASHEADERS]) {\n rowindex++\n }\n }\n } else if (rowindex === undefined && colindex !== undefined) {\n for (let i = 1; i < 1000; i++) {\n if (this._get(sheet, i, colindex)) {\n rowindex = i\n break\n }\n }\n if (this.caps[Capabilities.SCRIPTING_XLSX_HASHEADERS]) {\n rowindex++\n }\n } else if (rowindex !== undefined && colindex === undefined) {\n for (let i = 0; i < this.colnames.length; i++) {\n if (this._get(sheet, rowindex, i)) {\n colindex = i\n break\n }\n }\n }\n\n if (_.isNull(hasNameCol)) {\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO || scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n if (this.caps[Capabilities.SCRIPTING_XLSX_HASHEADERS]) {\n if (this._get(sheet, rowindex - 1, colindex) && this._get(sheet, rowindex - 1, colindex + 1) && this._get(sheet, rowindex - 1, colindex + 2)) {\n hasNameCol = true\n }\n }\n }\n }\n return { rowindex, colindex, hasNameCol }\n }\n}\n","const _ = require('lodash')\n\nconst Capabilities = require('../Capabilities')\nconst Constants = require('./Constants')\nconst CompilerBase = require('./CompilerBase')\nconst Utterance = require('./Utterance')\nconst { ConvoHeader, Convo } = require('./Convo')\nconst { linesToConvoStep, convoStepToLines, validateConvo, validSenders, linesToScriptingMemories } = require('./helper')\n\nmodule.exports = class CompilerTxt extends CompilerBase {\n constructor (context, caps = {}) {\n super(context, caps)\n\n this.eol = caps[Capabilities.SCRIPTING_TXT_EOL]\n }\n\n Validate () {\n super.Validate()\n this._AssertCapabilityExists(Capabilities.SCRIPTING_TXT_EOL)\n }\n\n GetHeaders (scriptBuffer) {\n let scriptData = scriptBuffer\n if (Buffer.isBuffer(scriptBuffer)) scriptData = scriptData.toString()\n\n const lines = scriptData.split(this.eol)\n\n const header = { }\n\n if (lines && !lines[0].startsWith('#')) {\n header.name = lines[0]\n }\n return new ConvoHeader(header)\n }\n\n Compile (scriptBuffer, scriptType = Constants.SCRIPTING_TYPE_CONVO) {\n let scriptData = scriptBuffer\n if (Buffer.isBuffer(scriptBuffer)) scriptData = scriptData.toString()\n\n const lines = _.map(scriptData.split(this.eol), (line) => line.trim())\n\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO) {\n return this._compileConvo(lines, false)\n } else if (scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n return this._compileConvo(lines, true)\n } else if (scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n return this._compileUtterances(lines)\n } else if (scriptType === Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY) {\n return this._compileScriptingMemory(lines)\n } else {\n throw Error(`Invalid script type ${scriptType}`)\n }\n }\n\n _compileConvo (lines, isPartial = false) {\n const convo = {\n header: {},\n conversation: []\n }\n\n let currentLineIndex = 0\n let currentLines = []\n let convoStepSender = null\n let convoStepChannel = null\n let convoStepLineIndex = null\n\n const parseMsg = (lines) => {\n lines = lines || []\n return linesToConvoStep(lines, convoStepSender, this.context, this.eol)\n }\n\n const pushPrev = () => {\n if (convoStepSender && currentLines) {\n const convoStep = {\n sender: convoStepSender,\n channel: convoStepChannel,\n stepTag: 'Line ' + convoStepLineIndex\n }\n Object.assign(convoStep, parseMsg(currentLines))\n convo.conversation.push(convoStep)\n } else if (!convoStepSender && currentLines) {\n convo.header.name = currentLines[0]\n if (currentLines.length > 1) {\n convo.header.description = currentLines.slice(1).join(this.eol)\n }\n }\n }\n\n const isValidTagLine = (line) => {\n if (!line || !line.startsWith('#')) return false\n const sender = line.substr(1).split(' ')[0]\n return validSenders.includes(sender)\n }\n\n lines.forEach((line) => {\n currentLineIndex++\n line = line.trim()\n if (isValidTagLine(line)) {\n pushPrev()\n\n convoStepSender = line.substr(1).trim()\n convoStepChannel = null\n convoStepLineIndex = currentLineIndex\n if (convoStepSender.indexOf(' ') > 0) {\n convoStepChannel = convoStepSender.substr(convoStepSender.indexOf(' ') + 1).trim()\n convoStepSender = convoStepSender.substr(0, convoStepSender.indexOf(' ')).trim()\n }\n currentLines = []\n } else {\n currentLines.push(line)\n }\n })\n pushPrev()\n\n const result = [new Convo(this.context, convo)]\n if (isPartial) {\n this.context.AddPartialConvos(result)\n } else {\n this.context.AddConvos(result)\n }\n return result\n }\n\n _compileUtterances (lines) {\n if (lines && lines.length > 0) {\n const result = [new Utterance({ name: lines[0], utterances: lines.length > 1 ? lines.slice(1) : [] })]\n this.context.AddUtterances(result)\n return result\n }\n }\n\n _compileScriptingMemory (lines) {\n if (lines && lines.length > 1) {\n const scriptingMemories = linesToScriptingMemories(lines, this.caps[Capabilities.SCRIPTING_MEMORY_COLUMN_MODE])\n if (scriptingMemories && scriptingMemories.length > 0) {\n this.context.AddScriptingMemories(scriptingMemories)\n }\n return scriptingMemories\n }\n }\n\n Decompile (convos) {\n if (convos.length > 1) {\n throw new Error('only one convo per script')\n }\n\n const convo = convos[0]\n\n const validationResult = validateConvo(convo)\n if (validationResult.errors.length > 0) {\n throw new Error(validationResult.errors.map(e => e.message).join(' - '))\n }\n\n let script = ''\n\n if (convo.header.name) {\n script += convo.header.name + this.eol\n }\n if (convo.header.description) {\n script += convo.header.description + this.eol\n }\n\n convo.conversation.forEach((step) => {\n script += this.eol\n\n script += '#' + step.sender\n if (step.channel && step.channel !== 'default') {\n script += ' ' + step.channel\n }\n script += this.eol\n\n const stepLines = convoStepToLines(step)\n if (stepLines && stepLines.length > 0) script += stepLines.join(this.eol) + this.eol\n })\n return script\n }\n}\n","const { parse } = require('csv-parse/sync')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-core-CompilerCsv')\n\nconst Capabilities = require('../Capabilities')\nconst CompilerBase = require('./CompilerBase')\nconst Constants = require('./Constants')\nconst { Convo } = require('./Convo')\nconst { linesToConvoStep } = require('./helper')\n\nconst DELIMITERS_CHECK = [',', ';', '|', '\\t']\nconst DEFAULT_DELIMITER = ','\n\nconst DEFAULT_QA_COLUMN_QUESTION = 0\nconst DEFAULT_QA_COLUMN_ANSWER = 1\n\nconst DEFAULT_MULTIROW_COLUMN_CONVERSATION = 0\nconst DEFAULT_MULTIROW_COLUMN_SENDER = 1\nconst DEFAULT_MULTIROW_COLUMN_TEXT = 2\n\nconst _findColIndex = (header, colName) => {\n if (_.isString(colName)) {\n const result = header.findIndex(h => h === colName)\n if (result >= 0) return result\n throw new Error(`Column name ${colName} not found.`)\n }\n if (_.isNumber(colName)) {\n return colName\n }\n throw new Error(`Column ${colName} not found.`)\n}\n\nmodule.exports = class CompilerCsv extends CompilerBase {\n constructor (context, caps = {}) {\n super(context, caps)\n }\n\n Validate () {\n this._AssertCapabilityExists(Capabilities.SCRIPTING_CSV_QUOTE)\n this._AssertCapabilityExists(Capabilities.SCRIPTING_CSV_ESCAPE)\n\n return super.Validate()\n }\n\n Compile (scriptBuffer, scriptType = Constants.SCRIPTING_TYPE_CONVO) {\n const scriptData = Buffer.isBuffer(scriptBuffer) ? scriptBuffer.toString() : scriptBuffer\n if (scriptData.length === 0) {\n return []\n }\n\n let delimiter = this._GetOptionalCapability(Capabilities.SCRIPTING_CSV_DELIMITER)\n if (!delimiter) {\n const firstline = scriptData.split('\\n')[0].trim()\n for (const d of DELIMITERS_CHECK) {\n if (firstline.indexOf(d) >= 0) {\n delimiter = d\n break\n }\n }\n if (!delimiter) {\n delimiter = DEFAULT_DELIMITER\n debug(`Couldn't detect column delimiter automatically, using \"${delimiter}\" by default. Please set the SCRIPTING_CSV_DELIMITER capability.`)\n } else {\n debug(`Detected column delimiter automatically, using \"${delimiter}\".`)\n }\n }\n\n let rows\n try {\n rows = parse(scriptData, {\n delimiter,\n escape: this.caps[Capabilities.SCRIPTING_CSV_ESCAPE],\n quote: this.caps[Capabilities.SCRIPTING_CSV_QUOTE],\n columns: false\n })\n } catch (err) {\n throw new Error(`Invalid CSV: ${err.message || err}`)\n }\n if (rows.length === 0) {\n return []\n }\n if (rows[0].length === 1) {\n debug('Found 1-column CSV file, treating it as utterance file')\n if (scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n const result = [{ name: rows[0][0], utterances: rows.slice(1).map(r => r[0]) }]\n this.context.AddUtterances(result)\n return result\n } else {\n return []\n }\n }\n\n if (scriptType !== Constants.SCRIPTING_TYPE_CONVO && scriptType !== Constants.SCRIPTING_TYPE_PCONVO) {\n return []\n }\n let header = null\n if (rows.length > 0 && this.caps[Capabilities.SCRIPTING_CSV_SKIP_HEADER]) {\n header = rows[0]\n rows = rows.slice(1)\n }\n if (rows.length === 0) {\n return []\n }\n\n const lineNumberBase = this.caps[Capabilities.SCRIPTING_CSV_SKIP_HEADER] ? 2 : 1\n if (rows[0].length === 2) {\n debug('Found 2-column CSV file, treating it as question/answer file')\n\n let colQuestion = DEFAULT_QA_COLUMN_QUESTION\n let colAnswer = DEFAULT_QA_COLUMN_ANSWER\n\n if (header) {\n if (this.caps[Capabilities.SCRIPTING_CSV_QA_COLUMN_QUESTION] !== undefined) {\n colQuestion = _findColIndex(header, this.caps[Capabilities.SCRIPTING_CSV_QA_COLUMN_QUESTION])\n }\n if (this.caps[Capabilities.SCRIPTING_CSV_QA_COLUMN_ANSWER] !== undefined) {\n colAnswer = _findColIndex(header, this.caps[Capabilities.SCRIPTING_CSV_QA_COLUMN_ANSWER])\n }\n }\n\n const convos = rows.map((row, i) => new Convo(this.context, {\n header: {\n name: `L${i + lineNumberBase}`\n },\n conversation: [\n Object.assign({},\n linesToConvoStep(\n [row[colQuestion]],\n 'me',\n this.context,\n undefined,\n true\n ), { stepTag: `L${i + lineNumberBase}-Question` }),\n Object.assign({},\n linesToConvoStep(\n [row[colAnswer]],\n 'bot',\n this.context,\n undefined,\n true\n ), { stepTag: `L${i + lineNumberBase}-Answer` })\n ]\n }))\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO) {\n this.context.AddConvos(convos)\n } else if (scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n this.context.AddPartialConvos(convos)\n }\n return convos\n }\n\n if (rows[0].length >= 3) {\n debug('Found 3-column CSV file, treating it as multi-row conversation file')\n\n let colConversationId = DEFAULT_MULTIROW_COLUMN_CONVERSATION\n let colSender = DEFAULT_MULTIROW_COLUMN_SENDER\n let colText = DEFAULT_MULTIROW_COLUMN_TEXT\n\n if (header) {\n if (this.caps[Capabilities.SCRIPTING_CSV_MULTIROW_COLUMN_CONVERSATION_ID] !== undefined) {\n colConversationId = _findColIndex(header, this.caps[Capabilities.SCRIPTING_CSV_MULTIROW_COLUMN_CONVERSATION_ID])\n }\n if (this.caps[Capabilities.SCRIPTING_CSV_MULTIROW_COLUMN_SENDER] !== undefined) {\n colSender = _findColIndex(header, this.caps[Capabilities.SCRIPTING_CSV_MULTIROW_COLUMN_SENDER])\n }\n if (this.caps[Capabilities.SCRIPTING_CSV_MULTIROW_COLUMN_TEXT] !== undefined) {\n colText = _findColIndex(header, this.caps[Capabilities.SCRIPTING_CSV_MULTIROW_COLUMN_TEXT])\n }\n }\n\n const conversationIds = _.uniq(rows.map(r => r[colConversationId]))\n const convos = conversationIds.map(conversationId => {\n const convoRows = rows.map((row, i) => {\n if (row[colConversationId] === conversationId) {\n return Object.assign({},\n linesToConvoStep(\n [row[colText]],\n row[colSender],\n this.context,\n undefined,\n true\n ), { stepTag: `L${i + lineNumberBase}` })\n }\n return null\n }).filter(c => c)\n return new Convo(this.context, {\n header: {\n name: conversationId\n },\n conversation: convoRows\n })\n })\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO) {\n this.context.AddConvos(convos)\n } else if (scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n this.context.AddPartialConvos(convos)\n }\n return convos\n }\n }\n}\n","const _ = require('lodash')\nconst debug = require('debug')('botium-core-CompilerObject')\n\nconst Capabilities = require('../Capabilities')\nconst CompilerBase = require('./CompilerBase')\nconst Constants = require('./Constants')\nconst Utterance = require('./Utterance')\nconst { Convo } = require('./Convo')\nconst { linesToConvoStep, validSenders, linesToScriptingMemories } = require('./helper')\n\nmodule.exports = class CompilerObjectBase extends CompilerBase {\n constructor (context, caps = {}) {\n super(context, caps)\n\n this.eol = caps[Capabilities.SCRIPTING_TXT_EOL]\n }\n\n Validate () {\n super.Validate()\n this._AssertCapabilityExists(Capabilities.SCRIPTING_TXT_EOL)\n }\n\n GetHeaders (scriptBuffer) {\n debug('GetHeaders is not implemented!')\n }\n\n Deserialize (scriptData) {\n throw new Error('not implemented')\n }\n\n Compile (scriptBuffer, scriptType = Constants.SCRIPTING_TYPE_CONVO) {\n let scriptData = scriptBuffer\n if (Buffer.isBuffer(scriptBuffer)) scriptData = scriptData.toString()\n scriptData = this.Deserialize(scriptData)\n\n const result = []\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO) {\n result.push(...this._compileConvo(scriptData.convos, false))\n } else if (scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n result.push(...this._compileConvo(scriptData.partialConvos, true))\n } else if (scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n result.push(...this._compileUtterances(scriptData.utterances))\n } else if (scriptType === Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY) {\n result.push(...this._compileScriptingMemory(scriptData.scriptingMemory))\n }\n\n return result\n }\n\n _compileConvo (convos, isPartial = false) {\n const result = []\n for (const convoRaw of (convos || [])) {\n const conversation = []\n for (const [convoStepLineIndex, convoStepRaw] of convoRaw.steps.entries()) {\n const lineTag = `${convoStepLineIndex + 1}`.padStart(`${convoRaw.steps.length}`.length, '0')\n\n if (Object.keys(convoStepRaw).length > 1) {\n throw new Error(`Use just one from ${validSenders.join(',')} fields in step ${JSON.stringify(convoStepRaw)}`)\n }\n if (validSenders.findIndex(sender => convoStepRaw[sender]) < 0) {\n throw new Error(`Use ${validSenders.map(s => `'${s}'`).join(' or ')} field in step ${JSON.stringify(convoStepRaw)}`)\n }\n\n const convoStepSender = Object.keys(convoStepRaw)[0]\n const convoStepObject = convoStepRaw[convoStepSender]\n\n conversation.push(Object.assign(\n {\n sender: convoStepSender,\n stepTag: 'Line ' + lineTag\n },\n linesToConvoStep(convoStepObject, convoStepSender, this.context, this.eol)\n ))\n }\n\n const convo = {\n header: {\n name: convoRaw.name,\n description: convoRaw.description\n },\n conversation\n }\n\n const toAdd = new Convo(this.context, convo)\n result.push(toAdd)\n if (isPartial) {\n this.context.AddPartialConvos([toAdd])\n } else {\n this.context.AddConvos([toAdd])\n }\n }\n return result\n }\n\n _compileUtterances (utterancesRaw) {\n const result = []\n const names = Object.keys(utterancesRaw || {})\n for (const name of names) {\n if (!_.isArray(utterancesRaw[name])) {\n throw new Error(`The '${name}' utterance has to be an array.`)\n }\n result.push(new Utterance({ name, utterances: (utterancesRaw[name]).map(u => `${u}`) }))\n }\n this.context.AddUtterances(result)\n return result\n }\n\n _compileScriptingMemory (lines) {\n if (lines && lines.length > 0) {\n if (_.isString(lines[0])) {\n if (lines.length > 1) {\n const scriptingMemories = linesToScriptingMemories(lines, this.caps[Capabilities.SCRIPTING_MEMORY_COLUMN_MODE])\n if (scriptingMemories && scriptingMemories.length > 0) {\n this.context.AddScriptingMemories(scriptingMemories)\n }\n return scriptingMemories\n }\n } else {\n this.context.AddScriptingMemories(lines)\n return lines\n }\n }\n return []\n }\n\n Decompile (convos) {\n throw new Error('not implemented')\n }\n}\n","const YAML = require('yaml')\n\nconst CompilerObjectBase = require('./CompilerObjectBase')\nmodule.exports = class CompilerYaml extends CompilerObjectBase {\n constructor (context, caps = {}) {\n super(context, caps)\n }\n\n Deserialize (scriptData) {\n return YAML.parse(scriptData)\n }\n}\n","const CompilerObjectBase = require('./CompilerObjectBase')\nconst { convoStepToObject } = require('./helper')\n\nmodule.exports = class CompilerJson extends CompilerObjectBase {\n constructor (context, caps = {}) {\n super(context, caps)\n }\n\n Deserialize (scriptData) {\n return JSON.parse(scriptData)\n }\n\n Decompile (convos) {\n const result = convos.map(convo => ({\n name: convo.header.name,\n description: convo.header.description,\n steps: convo.conversation.map(set => ({\n [set.sender]: convoStepToObject(set)\n }))\n }))\n return JSON.stringify({ convos: result }, null, 2)\n }\n}\n","const debug = require('debug')('botium-core-CompilerMarkdown')\nconst MarkdownIt = require('markdown-it')\nconst util = require('util')\nconst md = new MarkdownIt()\n\nconst Capabilities = require('../Capabilities')\nconst CompilerBase = require('./CompilerBase')\nconst Constants = require('./Constants')\nconst { Convo } = require('./Convo')\nconst Utterance = require('./Utterance')\nconst { linesToConvoStep, validSenders, validateSender } = require('./helper')\n\nmodule.exports = class CompilerMarkdown extends CompilerBase {\n constructor (context, caps = {}) {\n super(context, caps)\n\n this.eol = caps[Capabilities.SCRIPTING_TXT_EOL]\n }\n\n Validate () {\n super.Validate()\n this._AssertCapabilityExists(Capabilities.SCRIPTING_TXT_EOL)\n }\n\n Compile (scriptBuffer, scriptType = Constants.SCRIPTING_TYPE_CONVO) {\n if (Buffer.isBuffer(scriptBuffer)) scriptBuffer = scriptBuffer.toString()\n\n const parsed = md.parse(scriptBuffer, {})\n\n const _toStructuredMarkdown = (parsed) => {\n let depth = -1\n const struct = [{ children: [] }, null, null, null, null, null]\n\n const _add = (entry) => {\n if (!struct[depth] || !struct[depth].children) throw new Error(`\"${entry.markup}\" not expected here (Line ${entry.map[0] + 1}): format invalid`)\n struct[depth].children.push(entry)\n entry.children = []\n struct[depth + 1] = entry\n }\n\n for (const entry of parsed) {\n if (entry.type === 'heading_open') {\n if (entry.tag === 'h1') {\n depth = 0\n } else if (entry.tag === 'h2') {\n if (depth < 0 || depth > 1) {\n throw new Error(`\"${entry.markup}\" not expected here (Line ${entry.map[0] + 1}): expecting parent \"#\" for \"${entry.markup}\"`)\n }\n depth = 1\n } else {\n debug(`Markdown entry \"${util.inspect(entry)}\" ignored. Unknown heading`)\n }\n } else if (entry.type === 'bullet_list_open') {\n if (depth < 1) {\n throw new Error(`\"${entry.markup}\" not expected here (Line ${entry.map[0] + 1}): expecting parent \"##\" for \"${entry.markup}\"`)\n }\n if (depth > 3) {\n throw new Error(`\"${entry.markup}\" not expected here (Line ${entry.map[0] + 1}): Bullet list depth 3 not supported`)\n }\n depth++\n } else if (entry.type === 'bullet_list_close') {\n depth--\n } else if (entry.type === 'inline') {\n _add(entry)\n }\n }\n return struct[0]\n }\n\n const structured = _toStructuredMarkdown(parsed)\n for (const convosOrUtterances of structured.children) {\n if ((convosOrUtterances.content === 'Convos' && scriptType === Constants.SCRIPTING_TYPE_CONVO) ||\n (convosOrUtterances.content === 'PartialConvos' && scriptType === Constants.SCRIPTING_TYPE_PCONVO)) {\n const convosBotium = []\n for (const convo of convosOrUtterances.children) {\n const conversation = []\n for (const step of convo.children) {\n const sender = step.content.toLowerCase()\n if (validateSender(sender)) {\n // handle both:\n // - BUTTONS checkbutton|checkbutton2\n // and\n // - BUTTONS\n // - checkbutton\n // - checkbutton2\n conversation.push(Object.assign(\n {\n sender,\n stepTag: 'Line ' + (step.map[0] + 1)\n },\n linesToConvoStep(step.children.map(child => child.content +\n (child.children ? ' ' + child.children.map(child => child.content).join('|') : '')), sender, this.context, this.eol)\n ))\n } else {\n debug(`Expected sender ${validSenders.map(s => `'${s}'`).join(' or ')} but found ${sender}`)\n }\n }\n convosBotium.push(new Convo(this.context, {\n header: {\n name: convo.content\n },\n conversation\n }))\n }\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO) {\n this.context.AddConvos(convosBotium)\n } else if (scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n this.context.AddPartialConvos(convosBotium)\n }\n } else if (convosOrUtterances.content === 'Utterances' && scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n const utterancesBotium = []\n for (const utteranceStruct of convosOrUtterances.children) {\n utterancesBotium.push(new Utterance({ name: utteranceStruct.content, utterances: utteranceStruct.children.map(child => `${child.content}`) }))\n }\n this.context.AddUtterances(utterancesBotium)\n }\n }\n }\n}\n","const LogicHookUtils = require('./logichook/LogicHookUtils')\nconst util = require('util')\nconst crypto = require('crypto')\nconst fs = require('fs')\nconst path = require('path')\nconst globby = require('globby')\nconst _ = require('lodash')\nconst randomize = require('randomatic')\nconst promiseRetry = require('promise-retry')\nrequire('promise.allsettled').shim()\nconst debug = require('debug')('botium-core-ScriptingProvider')\n\nconst Constants = require('./Constants')\nconst Capabilities = require('../Capabilities')\nconst Defaults = require('../Defaults')\nconst { Convo, ConvoStep } = require('./Convo')\nconst ScriptingMemory = require('./ScriptingMemory')\nconst { BotiumError, botiumErrorFromList, botiumErrorFromErr } = require('./BotiumError')\nconst RetryHelper = require('../helpers/RetryHelper')\nconst { getMatchFunction } = require('./MatchFunctions')\nconst precompilers = require('./precompilers')\n\nconst globPattern = '**/+(*.convo.txt|*.utterances.txt|*.pconvo.txt|*.scriptingmemory.txt|*.xlsx|*.xlsm|*.convo.csv|*.pconvo.csv|*.yaml|*.yml|*.json|*.md|*.markdown)'\nconst skipPattern = /^skip[.\\-_]/i\n\nconst p = (retryHelper, fn) => {\n const promise = () => new Promise((resolve, reject) => {\n try {\n resolve(fn())\n } catch (err) {\n reject(err)\n }\n })\n\n if (retryHelper) {\n return promiseRetry((retry, number) => {\n return promise().catch(err => {\n if (retryHelper.shouldRetry(err)) {\n debug(`Asserter trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, retryHelper.retrySettings)\n } else {\n return promise()\n }\n}\n\nconst pnot = (retryHelper, fn, errTemplate) => {\n const promise = () => new Promise(async (resolve, reject) => { // eslint-disable-line no-async-promise-executor\n try {\n await fn()\n reject(errTemplate)\n } catch (err) {\n resolve()\n }\n })\n\n if (retryHelper) {\n return promiseRetry((retry, number) => {\n return promise().catch(() => {\n if (retryHelper.shouldRetry(errTemplate)) {\n debug(`Asserter trial #${number} failed, !retry activated`)\n retry(errTemplate)\n } else {\n throw errTemplate\n }\n })\n }, retryHelper.retrySettings)\n } else {\n return promise()\n }\n}\n\nmodule.exports = class ScriptingProvider {\n constructor (caps) {\n this.caps = caps || _.cloneDeep(Defaults.Capabilities)\n this.compilers = {}\n this.convos = []\n this.utterances = {}\n this.matchFn = null\n this.asserters = {}\n this.globalAsserter = {}\n this.logicHooks = {}\n this.globalLogicHook = {}\n this.userInputs = {}\n this.partialConvos = {}\n this.scriptingMemories = []\n\n this.scriptingEvents = {\n onConvoBegin: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onConvoBegin', logicHooks: (convo.beginLogicHook || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onConvoEnd: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onConvoEnd', logicHooks: (convo.endLogicHook || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onMeStart: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onMeStart', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onMePrepare: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onMePrepare', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onMeEnd: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onMeEnd', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onBotStart: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onBotStart', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onBotPrepare: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onBotPrepare', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onBotEnd: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onBotEnd', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n assertConvoBegin: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createAsserterPromises({ asserterType: 'assertConvoBegin', asserters: (convo.beginAsserter || []), convo, convoStep, scriptingMemory, ...rest })\n },\n assertConvoStep: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createAsserterPromises({ asserterType: 'assertConvoStep', asserters: (convoStep.asserters || []), convo, convoStep, scriptingMemory, ...rest })\n },\n assertConvoEnd: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createAsserterPromises({ asserterType: 'assertConvoEnd', asserters: (convo.endAsserter || []), convo, convoStep, scriptingMemory, ...rest })\n },\n setUserInput: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createUserInputPromises({ convo, convoStep, scriptingMemory, ...rest })\n },\n resolveUtterance: ({ utterance, resolveEmptyIfUnknown }) => {\n return this._resolveUtterance({ utterance, resolveEmptyIfUnknown })\n },\n assertBotResponse: (botresponse, tomatch, stepTag, meMsg) => {\n if (!_.isArray(tomatch)) {\n tomatch = [tomatch]\n }\n debug(`assertBotResponse ${stepTag} ${meMsg ? `(${meMsg}) ` : ''}BOT: ${botresponse} = ${tomatch} ...`)\n const found = _.find(tomatch, (utt) => this.matchFn(botresponse, utt))\n if (_.isNil(found)) {\n let message = `${stepTag}: Bot response `\n message += meMsg ? `(on ${meMsg}) ` : ''\n message += botresponse ? ('\"' + botresponse + '\"') : '<no response>'\n message += ' expected to match '\n message += tomatch && tomatch.length > 1 ? 'one of ' : ''\n message += `${tomatch.map(e => e ? '\"' + e + '\"' : '<any response>').join(', ')}`\n throw new BotiumError(\n message,\n {\n type: 'asserter',\n source: 'TextMatchAsserter',\n context: {\n stepTag\n },\n cause: {\n expected: tomatch,\n actual: botresponse,\n matchingMode: this.caps[Capabilities.SCRIPTING_MATCHING_MODE]\n }\n }\n )\n }\n },\n assertBotNotResponse: (botresponse, nottomatch, stepTag, meMsg) => {\n if (!_.isArray(nottomatch)) {\n nottomatch = [nottomatch]\n }\n debug(`assertBotNotResponse ${stepTag} ${meMsg ? `(${meMsg}) ` : ''}BOT: ${botresponse} != ${nottomatch} ...`)\n const found = _.find(nottomatch, (utt) => this.matchFn(botresponse, utt))\n if (!_.isNil(found)) {\n let message = `${stepTag}: Bot response `\n message += meMsg ? `(on ${meMsg}) ` : ''\n message += botresponse ? ('\"' + botresponse + '\"') : '<no response>'\n message += ' expected NOT to match '\n message += nottomatch && nottomatch.length > 1 ? 'one of ' : ''\n message += `${nottomatch.map(e => e ? '\"' + e + '\"' : '<any response>').join(', ')}`\n throw new BotiumError(\n message,\n {\n type: 'asserter',\n source: 'TextMatchAsserter',\n context: {\n stepTag\n },\n cause: {\n not: true,\n expected: nottomatch,\n actual: botresponse,\n matchingMode: this.caps[Capabilities.SCRIPTING_MATCHING_MODE]\n }\n }\n )\n }\n },\n fail: null\n }\n this.retryHelperAsserter = new RetryHelper(this.caps, 'ASSERTER')\n this.retryHelperLogicHook = new RetryHelper(this.caps, 'LOGICHOOK')\n this.retryHelperUserInput = new RetryHelper(this.caps, 'USERINPUT')\n }\n\n _createAsserterPromises ({ asserterType, asserters, convo, convoStep, scriptingMemory, ...rest }) {\n if (!this._isValidAsserterType(asserterType)) {\n throw Error(`Unknown asserterType ${asserterType}`)\n }\n\n const mapNot = {\n assertConvoBegin: 'assertNotConvoBegin',\n assertConvoStep: 'assertNotConvoStep',\n assertConvoEnd: 'assertNotConvoEnd'\n }\n const callAsserter = (asserterSpec, asserter, params) => {\n if (asserterSpec.not) {\n const notAsserterType = mapNot[asserterType]\n if (asserter[notAsserterType]) {\n return p(this.retryHelperAsserter, () => asserter[notAsserterType](params))\n } else {\n return pnot(this.retryHelperAsserter, () => asserter[asserterType](params),\n new BotiumError(\n `${convoStep.stepTag}: Expected asserter ${asserter.name || asserterSpec.name} with args \"${params.args}\" to fail`,\n {\n type: 'asserter',\n source: asserter.name || asserterSpec.name,\n params: {\n args: params.args\n },\n cause: {\n not: true,\n expected: 'failed',\n actual: 'not failed'\n }\n }\n )\n )\n }\n } else {\n return p(this.retryHelperAsserter, () => asserter[asserterType](params))\n }\n }\n\n const convoAsserter = asserters\n .filter(a => this.asserters[a.name][asserterType])\n .map(a => callAsserter(a, this.asserters[a.name], {\n convo,\n convoStep,\n scriptingMemory,\n args: ScriptingMemory.applyToArgs(a.args, scriptingMemory, this.caps, rest.botMsg),\n isGlobal: false,\n ...rest\n }))\n const globalAsserter = Object.values(this.globalAsserter)\n .filter(a => a[asserterType])\n .map(a => p(this.retryHelperAsserter, () => a[asserterType]({ convo, convoStep, scriptingMemory, args: [], isGlobal: true, ...rest })))\n\n const allPromises = [...convoAsserter, ...globalAsserter]\n if (this.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n return Promise.allSettled(allPromises).then((results) => {\n const rejected = results.filter(result => result.status === 'rejected').map(result => result.reason)\n if (rejected.length) {\n throw botiumErrorFromList(rejected, {})\n }\n return results.filter(result => result.status === 'fulfilled').map(result => result.value)\n })\n }\n if (allPromises.length > 0) return Promise.all(allPromises).then(() => true)\n return Promise.resolve(false)\n }\n\n _createLogicHookPromises ({ hookType, logicHooks, convo, convoStep, scriptingMemory, ...rest }) {\n if (hookType !== 'onMeStart' && hookType !== 'onMePrepare' && hookType !== 'onMeEnd' && hookType !== 'onBotStart' && hookType !== 'onBotPrepare' && hookType !== 'onBotEnd' &&\n hookType !== 'onConvoBegin' && hookType !== 'onConvoEnd'\n ) {\n throw Error(`Unknown hookType ${hookType}`)\n }\n\n const convoStepPromises = (logicHooks || [])\n .filter(l => this.logicHooks[l.name][hookType])\n .map(l => p(this.retryHelperLogicHook, () => this.logicHooks[l.name][hookType]({\n convo,\n convoStep,\n scriptingMemory,\n args: ScriptingMemory.applyToArgs(l.args, scriptingMemory, this.caps, rest.botMsg),\n isGlobal: false,\n ...rest\n })))\n\n const globalPromises = Object.values(this.globalLogicHook)\n .filter(l => l[hookType])\n .map(l => p(this.retryHelperLogicHook, () => l[hookType]({ convo, convoStep, scriptingMemory, args: [], isGlobal: true, ...rest })))\n\n const allPromises = [...convoStepPromises, ...globalPromises]\n if (allPromises.length > 0) return Promise.all(allPromises).then(() => true)\n return Promise.resolve(false)\n }\n\n _createUserInputPromises ({ convo, convoStep, scriptingMemory, ...rest }) {\n const convoStepPromises = (convoStep.userInputs || [])\n .filter(ui => this.userInputs[ui.name])\n .map(ui => p(this.retryHelperUserInput, () => this.userInputs[ui.name].setUserInput({\n convo,\n convoStep,\n scriptingMemory,\n args: ScriptingMemory.applyToArgs(ui.args, scriptingMemory, this.caps, rest.meMsg),\n ...rest\n })))\n\n if (convoStepPromises.length > 0) return Promise.all(convoStepPromises).then(() => true)\n return Promise.resolve(false)\n }\n\n _isValidAsserterType (asserterType) {\n return ['assertConvoBegin', 'assertConvoStep', 'assertConvoEnd'].some(t => asserterType === t)\n }\n\n _resolveUtterance ({ utterance, resolveEmptyIfUnknown = false }) {\n if (_.isString(utterance)) {\n if (this.utterances[utterance]) {\n return this.utterances[utterance].utterances\n } else {\n const parts = utterance.split(' ')\n if (this.utterances[parts[0]]) {\n const uttArgs = parts.slice(1)\n return this.utterances[parts[0]].utterances.map(utt => util.format(utt, ...uttArgs))\n }\n }\n }\n if (resolveEmptyIfUnknown) return null\n else return [utterance]\n }\n\n _buildScriptContext () {\n return {\n AddConvos: this.AddConvos.bind(this),\n AddUtterances: this.AddUtterances.bind(this),\n AddPartialConvos: this.AddPartialConvos.bind(this),\n AddScriptingMemories: this.AddScriptingMemories.bind(this),\n Match: this.Match.bind(this),\n IsAsserterValid: this.IsAsserterValid.bind(this),\n IsLogicHookValid: this.IsLogicHookValid.bind(this),\n IsUserInputValid: this.IsUserInputValid.bind(this),\n GetPartialConvos: this.GetPartialConvos.bind(this),\n scriptingEvents: {\n assertConvoBegin: this.scriptingEvents.assertConvoBegin.bind(this),\n assertConvoStep: this.scriptingEvents.assertConvoStep.bind(this),\n assertConvoEnd: this.scriptingEvents.assertConvoEnd.bind(this),\n resolveUtterance: this.scriptingEvents.resolveUtterance.bind(this),\n assertBotResponse: this.scriptingEvents.assertBotResponse.bind(this),\n assertBotNotResponse: this.scriptingEvents.assertBotNotResponse.bind(this),\n onConvoBegin: this.scriptingEvents.onConvoBegin.bind(this),\n onConvoEnd: this.scriptingEvents.onConvoEnd.bind(this),\n onMeStart: this.scriptingEvents.onMeStart.bind(this),\n onMePrepare: this.scriptingEvents.onMePrepare.bind(this),\n onMeEnd: this.scriptingEvents.onMeEnd.bind(this),\n onBotStart: this.scriptingEvents.onBotStart.bind(this),\n onBotPrepare: this.scriptingEvents.onBotPrepare.bind(this),\n onBotEnd: this.scriptingEvents.onBotEnd.bind(this),\n setUserInput: this.scriptingEvents.setUserInput.bind(this),\n fail: this.scriptingEvents.fail && this.scriptingEvents.fail.bind(this)\n }\n }\n }\n\n Build () {\n const CompilerXlsx = require('./CompilerXlsx')\n this.compilers[Constants.SCRIPTING_FORMAT_XSLX] = new CompilerXlsx(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_XSLX].Validate()\n const CompilerTxt = require('./CompilerTxt')\n this.compilers[Constants.SCRIPTING_FORMAT_TXT] = new CompilerTxt(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_TXT].Validate()\n const CompilerCsv = require('./CompilerCsv')\n this.compilers[Constants.SCRIPTING_FORMAT_CSV] = new CompilerCsv(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_CSV].Validate()\n const CompilerYaml = require('./CompilerYaml')\n this.compilers[Constants.SCRIPTING_FORMAT_YAML] = new CompilerYaml(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_YAML].Validate()\n const CompilerJson = require('./CompilerJson')\n this.compilers[Constants.SCRIPTING_FORMAT_JSON] = new CompilerJson(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_JSON].Validate()\n const CompilerMarkdown = require('./CompilerMarkdown')\n this.compilers[Constants.SCRIPTING_FORMAT_MARKDOWN] = new CompilerMarkdown(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_MARKDOWN].Validate()\n\n this.matchFn = getMatchFunction(this.caps[Capabilities.SCRIPTING_MATCHING_MODE])\n\n const logicHookUtils = new LogicHookUtils({ buildScriptContext: this._buildScriptContext(), caps: this.caps })\n this.asserters = logicHookUtils.asserters\n this.globalAsserter = logicHookUtils.getGlobalAsserter()\n this.logicHooks = logicHookUtils.logicHooks\n this.globalLogicHook = logicHookUtils.getGlobalLogicHook()\n this.userInputs = logicHookUtils.userInputs\n }\n\n IsAsserterValid (name) {\n return this.asserters[name] || false\n }\n\n IsLogicHookValid (name) {\n return this.logicHooks[name] || false\n }\n\n IsUserInputValid (name) {\n return this.userInputs[name] || false\n }\n\n Match (botresponse, utterance) {\n return this.matchFn(botresponse, utterance)\n }\n\n Compile (scriptBuffer, scriptFormat, scriptType) {\n const compiler = this.GetCompiler(scriptFormat)\n return compiler.Compile(scriptBuffer, scriptType)\n }\n\n Decompile (convos, scriptFormat) {\n const compiler = this.GetCompiler(scriptFormat)\n return compiler.Decompile(convos)\n }\n\n GetCompiler (scriptFormat) {\n const result = this.compilers[scriptFormat]\n if (result) return result\n throw new Error(`No compiler found for scriptFormat ${scriptFormat}`)\n }\n\n ReadBotiumFilesFromDirectory (convoDir, globFilter) {\n const filelist = globby.sync(globPattern, { cwd: convoDir, gitignore: true })\n if (globFilter) {\n const filelistGlobbed = globby.sync(globFilter, { cwd: convoDir, gitignore: true })\n _.remove(filelist, (file) => filelistGlobbed.indexOf(file) < 0)\n }\n _.remove(filelist, (file) => {\n const isSkip = skipPattern.test(path.basename(file))\n if (isSkip) debug(`ReadBotiumFilesFromDirectory - skipping file '${file}'`)\n return isSkip\n })\n return filelist\n }\n\n ReadScriptsFromDirectory (convoDir, globFilter) {\n let filelist = []\n\n const convoDirStats = fs.statSync(convoDir)\n if (convoDirStats.isFile()) {\n filelist = [path.basename(convoDir)]\n convoDir = path.dirname(convoDir)\n } else {\n filelist = this.ReadBotiumFilesFromDirectory(convoDir, globFilter)\n }\n debug(`ReadConvosFromDirectory(${convoDir}) found filenames: ${filelist}`)\n\n const dirConvos = []\n const dirUtterances = []\n const dirPartialConvos = []\n const dirScriptingMemories = []\n filelist.forEach((filename) => {\n const { convos, utterances, pconvos, scriptingMemories } = this.ReadScript(convoDir, filename)\n if (convos) dirConvos.push(...convos)\n if (utterances) dirUtterances.push(...utterances)\n if (pconvos) dirPartialConvos.push(...pconvos)\n if (scriptingMemories) dirScriptingMemories.push(...scriptingMemories)\n })\n debug(`ReadConvosFromDirectory(${convoDir}) found convos:\\n ${dirConvos.length ? dirConvos.join('\\n') : 'none'}`)\n debug(`ReadConvosFromDirectory(${convoDir}) found utterances:\\n ${dirUtterances.length ? _.map(dirUtterances, (u) => u).join('\\n') : 'none'}`)\n debug(`ReadConvosFromDirectory(${convoDir}) found partial convos:\\n ${dirPartialConvos.length ? dirPartialConvos.join('\\n') : 'none'}`)\n debug(`ReadConvosFromDirectory(${convoDir}) scripting memories:\\n ${dirScriptingMemories.length ? dirScriptingMemories.map((dirScriptingMemory) => util.inspect(dirScriptingMemory)).join('\\n') : 'none'}`)\n return { convos: dirConvos, utterances: dirUtterances, pconvos: dirPartialConvos, scriptingMemories: dirScriptingMemories }\n }\n\n ReadScriptFromBuffer (scriptBuffer, scriptingFormat, scriptingTypes = null) {\n if (_.isString(scriptingTypes)) scriptingTypes = [scriptingTypes]\n if (_.isArray(scriptingTypes) && scriptingTypes.length === 0) scriptingTypes = null\n\n const result = {\n convos: [],\n utterances: [],\n pconvos: [],\n scriptingMemories: []\n }\n if (!scriptingTypes || scriptingTypes.includes(Constants.SCRIPTING_TYPE_UTTERANCES)) {\n result.utterances = this.Compile(scriptBuffer, scriptingFormat, Constants.SCRIPTING_TYPE_UTTERANCES)\n }\n if (!scriptingTypes || scriptingTypes.includes(Constants.SCRIPTING_TYPE_PCONVO)) {\n result.pconvos = this.Compile(scriptBuffer, scriptingFormat, Constants.SCRIPTING_TYPE_PCONVO)\n }\n if (!scriptingTypes || scriptingTypes.includes(Constants.SCRIPTING_TYPE_CONVO)) {\n result.convos = this.Compile(scriptBuffer, scriptingFormat, Constants.SCRIPTING_TYPE_CONVO)\n }\n if (!scriptingTypes || scriptingTypes.includes(Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY)) {\n result.scriptingMemories = this.Compile(scriptBuffer, scriptingFormat, Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY)\n }\n return result\n }\n\n ReadScript (convoDir, filename) {\n let result = {}\n\n try {\n let scriptBuffer = fs.readFileSync(path.resolve(convoDir, filename))\n\n const precompResponse = precompilers.execute(scriptBuffer, {\n convoDir,\n filename,\n caps: this.caps\n })\n if (precompResponse) {\n scriptBuffer = precompResponse.scriptBuffer\n debug(`File ${filename} precompiled by ${precompResponse.precompiler}` +\n (precompResponse.filename ? ` and filename changed to ${precompResponse.filename}` : '')\n )\n filename = precompResponse.filename || filename\n }\n\n if (filename.endsWith('.xlsx') || filename.endsWith('.xlsm')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_XSLX, [Constants.SCRIPTING_TYPE_UTTERANCES, Constants.SCRIPTING_TYPE_PCONVO, Constants.SCRIPTING_TYPE_CONVO, Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY])\n } else if (filename.endsWith('.convo.txt')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_TXT, Constants.SCRIPTING_TYPE_CONVO)\n } else if (filename.endsWith('.pconvo.txt')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_TXT, Constants.SCRIPTING_TYPE_PCONVO)\n } else if (filename.endsWith('.utterances.txt')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_TXT, Constants.SCRIPTING_TYPE_UTTERANCES)\n } else if (filename.endsWith('.scriptingmemory.txt')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_TXT, Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY)\n } else if (filename.endsWith('.convo.csv')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_CSV, Constants.SCRIPTING_TYPE_CONVO)\n } else if (filename.endsWith('.pconvo.csv')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_CSV, Constants.SCRIPTING_TYPE_PCONVO)\n } else if (filename.endsWith('.yaml') || filename.endsWith('.yml')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_YAML, [Constants.SCRIPTING_TYPE_UTTERANCES, Constants.SCRIPTING_TYPE_PCONVO, Constants.SCRIPTING_TYPE_CONVO, Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY])\n } else if (filename.endsWith('.json')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_JSON, [Constants.SCRIPTING_TYPE_UTTERANCES, Constants.SCRIPTING_TYPE_PCONVO, Constants.SCRIPTING_TYPE_CONVO, Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY])\n } else if (filename.endsWith('.markdown') || filename.endsWith('.md')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_MARKDOWN, [Constants.SCRIPTING_TYPE_UTTERANCES, Constants.SCRIPTING_TYPE_PCONVO, Constants.SCRIPTING_TYPE_CONVO])\n } else {\n debug(`ReadScript - dropped file: ${filename}, filename not supported`)\n }\n } catch (err) {\n debug(`ReadScript - an error occurred at '${filename}' file: ${err}`)\n throw botiumErrorFromErr(`ReadScript - an error occurred at '${filename}' file: ${err.message}`, err)\n }\n\n // Compilers saved the convos, and we alter here the saved version too\n if (result.convos && result.convos.length > 0) {\n result.convos.forEach((fileConvo) => {\n fileConvo.sourceTag = { convoDir, filename }\n if (!fileConvo.header.name) {\n fileConvo.header.name = filename\n }\n })\n const isSkip = (c) => c.header.name && skipPattern.test(c.header.name.toLowerCase())\n result.convos.filter(c => isSkip(c)).forEach(c => debug(`ReadScript - skipping convo '${c.header.name}'`))\n result.convos = result.convos.filter(c => !isSkip(c))\n }\n if (result.pconvos && result.pconvos.length > 0) {\n result.pconvos.forEach((filePartialConvo) => {\n filePartialConvo.sourceTag = { convoDir, filename }\n if (!filePartialConvo.header.name) {\n filePartialConvo.header.name = filename\n }\n })\n }\n if (result.scriptingMemories && result.scriptingMemories.length > 0) {\n result.scriptingMemories.forEach((scriptingMemory) => {\n scriptingMemory.sourceTag = { filename }\n })\n }\n if (result.utterances) {\n result.utterances = this._tagAndCleanupUtterances(result.utterances, convoDir, filename)\n }\n return { convos: result.convos || [], utterances: result.utterances || [], pconvos: result.pconvos || [], scriptingMemories: result.scriptingMemories || [] }\n }\n\n _tagAndCleanupUtterances (utteranceFiles, convoDir, filename) {\n return utteranceFiles.map((fileUtt) => {\n fileUtt.sourceTag = { convoDir, filename }\n fileUtt.utterances = fileUtt.utterances.filter(u => u)\n return fileUtt\n })\n }\n\n ExpandScriptingMemoryToConvos () {\n if (!this.caps[Capabilities.SCRIPTING_ENABLE_MEMORY]) {\n debug('ExpandScriptingMemoryToConvos - Scripting memory turned off, no convos expanded')\n return\n }\n\n // validating scripting memory without name\n const aggregatedNoNames = this.scriptingMemories.filter((entry) => {\n return !entry.header.name\n })\n if (aggregatedNoNames.length) {\n throw new BotiumError(\n 'Scripting Memory Definition(s) without name',\n {\n type: 'Scripting Memory',\n subtype: 'Scripting Memory without name',\n source: 'ScriptingProvider',\n cause: {\n aggregatedNoNames\n }\n }\n )\n }\n\n // validating scripting memory without variable\n const aggregatedNoVariables = this.scriptingMemories.filter((entry) => {\n return !entry.values || !Object.keys(entry.values).length\n })\n if (aggregatedNoVariables.length) {\n throw new BotiumError(\n `Scripting Memory Definition(s) ${aggregatedNoVariables.map(e => e.header.name).join(', ')} without variable`,\n {\n type: 'Scripting Memory',\n subtype: 'Scripting Memory without variable',\n source: 'ScriptingProvider',\n cause: {\n aggregatedNoVariables\n }\n }\n )\n }\n\n // validating scripting memory without variable name\n const aggregatedNoVariableNames = this.scriptingMemories.filter((entry) => {\n return !_.isUndefined(entry.values[''])\n })\n if (aggregatedNoVariableNames.length) {\n throw new BotiumError(\n `Scripting Memory Definition(s) ${aggregatedNoVariableNames.map(e => e.header.name).join(', ')} without variable name`,\n {\n type: 'Scripting Memory',\n subtype: 'Scripting Memory without variable name',\n source: 'ScriptingProvider',\n cause: {\n aggregatedNoVariableNames\n }\n }\n )\n }\n\n // validating scripting memory name collision\n const aggregatedDuplicates = []\n for (let i = 0; i < (this.scriptingMemories || []).length; i++) {\n const scriptingMemory = this.scriptingMemories[i]\n const duplicate = this.scriptingMemories.filter((entry, j) => {\n if (j === i || !(entry.values && scriptingMemory.values && entry.header && scriptingMemory.header)) {\n return false\n }\n return (entry.header.name === scriptingMemory.header.name) && (JSON.stringify(Object.keys(entry.values)) === JSON.stringify(Object.keys(scriptingMemory.values)))\n })\n if (duplicate.length) {\n aggregatedDuplicates.push({ scriptingMemory, duplicate })\n }\n }\n if (aggregatedDuplicates.length) {\n throw new BotiumError(\n `Scripting Memory Definition name(s) \"${_.uniq(aggregatedDuplicates.map(d => d.scriptingMemory.header.name)).join(', ')}\" are not unique`,\n {\n type: 'Scripting Memory',\n subtype: 'Scripting Memory name collision',\n source: 'ScriptingProvider',\n cause: {\n aggregatedDuplicates\n }\n }\n )\n }\n\n // validating scripting memory variable name collision\n const aggregatedIntersections = []\n for (let i = 0; i < (this.scriptingMemories || []).length; i++) {\n const scriptingMemory = this.scriptingMemories[i]\n const intersection = this.scriptingMemories.filter((entry, j) => {\n if (j === i || !(entry.values && scriptingMemory.values && entry.header && scriptingMemory.header)) {\n return false\n }\n const k1 = Object.keys(entry.values)\n const k2 = Object.keys(scriptingMemory.values)\n const kInt = _.intersection(k1, k2)\n return kInt.length && (kInt.length !== k1.length || kInt.length !== k2.length)\n })\n if (intersection.length) {\n aggregatedIntersections.push({ scriptingMemory, intersection })\n }\n }\n if (aggregatedIntersections.length) {\n throw new BotiumError(\n `Scripting Memory Definitions \"${aggregatedIntersections.map(i => i.scriptingMemory.header.name).join(', ')}\" are invalid because variable name collision\"`,\n {\n type: 'Scripting Memory',\n subtype: 'Scripting Memory variable name collision',\n source: 'ScriptingProvider',\n cause: {\n aggregatedIntersections\n }\n }\n )\n }\n\n const variablesToScriptingMemory = new Map()\n this.scriptingMemories.forEach((scriptingMemory) => {\n const key = JSON.stringify(Object.keys(scriptingMemory.values).sort())\n if (variablesToScriptingMemory.has(key)) {\n variablesToScriptingMemory.get(key).push(scriptingMemory)\n } else {\n variablesToScriptingMemory.set(key, [scriptingMemory])\n }\n })\n\n let convosExpandedAll = []\n const convosOriginalAll = []\n this.convos.forEach((convo) => {\n const convoVariables = convo.GetScriptingMemoryAllVariables(this)\n debug(`ExpandScriptingMemoryToConvos - Convo \"${convo.header.name}\" - Variables to replace, all: \"${util.inspect(convoVariables)}\"`)\n if (!convoVariables.length) {\n debug(`ExpandScriptingMemoryToConvos - Convo \"${convo.header.name}\" - skipped, no variable found to replace`)\n }\n\n let convosToExpand = [convo]\n let convosExpandedConvo = []\n // just for debug output. If we got 6 expanded convo, then this array can be for example [2, 3]\n const multipliers = []\n for (const [key, scriptingMemories] of variablesToScriptingMemory.entries()) {\n const variableNames = JSON.parse(key)\n if (_.intersection(variableNames, convoVariables).length) {\n const convosExpandedVariable = []\n multipliers.push(scriptingMemories.length)\n scriptingMemories.forEach((scriptingMemory) => {\n // Appending the case name to name\n for (const convoToExpand of convosToExpand) {\n const convoExpanded = _.cloneDeep(convoToExpand)\n convoExpanded.header.name = convoToExpand.header.name + '.' + scriptingMemory.header.name\n variableNames.forEach((name) => {\n const value = scriptingMemory.values[name]\n if (value) {\n convoExpanded.beginLogicHook.push({ name: 'SET_SCRIPTING_MEMORY', args: [name.substring(1), scriptingMemory.values[name]] })\n } else {\n convoExpanded.beginLogicHook.push({ name: 'CLEAR_SCRIPTING_MEMORY', args: [name.substring(1)] })\n }\n })\n convosExpandedVariable.push(convoExpanded)\n }\n })\n // This is a bit tricky. If the loop is done, then convosExpandedConvo will be used,\n // otherwise convosToExpand. They could be one variable\n convosToExpand = convosExpandedVariable\n convosExpandedConvo = convosExpandedVariable\n } else {\n debug(`ExpandScriptingMemoryToConvos - Convo \"${convo.header.name}\" - Scripting memory ${key} ignored because there is no common variable with convo ${util.inspect(convoVariables)}`)\n }\n }\n debug(`ExpandScriptingMemoryToConvos - Convo \"${convo.header.name}\" - Expanding convo \"${convo.header.name}\" Expanded ${convosExpandedConvo.length} convo. (Details: ${convosExpandedConvo.length} = ${multipliers ? multipliers.join('*') : 0})`)\n\n if (convosExpandedConvo.length) {\n convosExpandedAll = convosExpandedAll.concat(convosExpandedConvo)\n convosOriginalAll.push(convo)\n }\n })\n\n if (this.caps[Capabilities.SCRIPTING_MEMORYEXPANSION_KEEP_ORIG] !== true) {\n debug(`ExpandScriptingMemoryToConvos - Deleting ${convosOriginalAll.length} original convo`)\n this.convos = this.convos.filter((convo) => convosOriginalAll.indexOf(convo) === -1)\n }\n\n debug(`ExpandScriptingMemoryToConvos - ${convosExpandedAll.length} convo expanded, added to convos (${this.convos.length}). Result ${convosExpandedAll.length + this.convos.length} convo`)\n this.convos = this.convos.concat(convosExpandedAll)\n this._sortConvos()\n }\n\n ExpandUtterancesToConvos ({ useNameAsIntent, incomprehensionUtt } = {}) {\n const expandedConvos = []\n\n if (_.isUndefined(useNameAsIntent)) {\n useNameAsIntent = !!this.caps[Capabilities.SCRIPTING_UTTEXPANSION_USENAMEASINTENT]\n }\n if (_.isUndefined(incomprehensionUtt)) {\n incomprehensionUtt = this.caps[Capabilities.SCRIPTING_UTTEXPANSION_INCOMPREHENSION]\n }\n\n if (useNameAsIntent && incomprehensionUtt) {\n throw new Error('ExpandUtterancesToConvos - SCRIPTING_UTTEXPANSION_USENAMEASINTENT and SCRIPTING_UTTEXPANSION_INCOMPREHENSION are incompatible')\n }\n if (incomprehensionUtt && !this.utterances[incomprehensionUtt]) {\n throw new Error(`ExpandUtterancesToConvos - incomprehension utterance '${incomprehensionUtt}' undefined`)\n }\n\n if (useNameAsIntent) {\n debug('ExpandUtterancesToConvos - Using utterance name as NLU intent')\n } else if (incomprehensionUtt) {\n debug(`ExpandUtterancesToConvos - Using incomprehension utterance expansion mode: ${incomprehensionUtt}`)\n }\n\n _.keys(this.utterances).filter(u => u !== incomprehensionUtt).forEach(uttName => {\n const utt = this.utterances[uttName]\n expandedConvos.push(new Convo(this._buildScriptContext(), {\n header: {\n name: utt.name,\n description: `Expanded Utterances - ${utt.name}`\n },\n conversation: [\n {\n sender: 'me',\n logicHooks: [\n {\n name: 'SKIP_BOT_UNCONSUMED'\n }\n ],\n messageText: utt.name,\n stepTag: 'Step 1 - tell utterance'\n },\n useNameAsIntent\n ? {\n sender: 'bot',\n asserters: [\n {\n name: 'INTENT',\n args: [utt.name]\n }\n ],\n stepTag: 'Step 2 - check intent',\n not: false\n }\n : incomprehensionUtt\n ? {\n sender: 'bot',\n messageText: incomprehensionUtt,\n stepTag: 'Step 2 - check incomprehension',\n not: true\n }\n : {\n sender: 'bot',\n messageText: '',\n stepTag: 'Step 2 - check bot response',\n not: false\n }\n ],\n sourceTag: Object.assign({}, utt.sourceTag, { origUttName: utt.name })\n }))\n })\n this.convos = this.convos.concat(expandedConvos)\n this._sortConvos()\n }\n\n ExpandConvos () {\n const expandedConvos = []\n debug(`ExpandConvos - Using utterances expansion mode: ${this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE]}`)\n this.convos.forEach((convo) => {\n convo.expandPartialConvos()\n this._expandConvo(expandedConvos, convo)\n })\n this.convos = expandedConvos\n this._sortConvos()\n }\n\n /**\n *\n * @param expandedConvos\n * @param currentConvo\n * @param convoStepIndex\n * @param convoStepsStack list of ConvoSteps\n * @private\n */\n _expandConvo (expandedConvos, currentConvo, convoStepIndex = 0, convoStepsStack = []) {\n const utterancePostfix = (lineTag, uttOrUserInput) => {\n const naming = this.caps[Capabilities.SCRIPTING_UTTEXPANSION_NAMING_MODE] || Defaults.capabilities[Capabilities.SCRIPTING_UTTEXPANSION_NAMING_MODE]\n if (naming === 'justLineTag') {\n return `L${lineTag}`\n }\n const utteranceMax = this.caps[Capabilities.SCRIPTING_UTTEXPANSION_NAMING_UTTERANCE_MAX] || 0\n let postfix\n if (utteranceMax > 3 && uttOrUserInput.length > utteranceMax) {\n postfix = uttOrUserInput.substring(0, utteranceMax - 3) + '...'\n } else {\n postfix = uttOrUserInput\n }\n return `L${lineTag}-${postfix}`\n }\n if (convoStepIndex < currentConvo.conversation.length) {\n const currentStep = currentConvo.conversation[convoStepIndex]\n if (currentStep.sender === 'bot' || currentStep.sender === 'begin' || currentStep.sender === 'end') {\n const currentStepsStack = convoStepsStack.slice()\n currentStepsStack.push(_.cloneDeep(currentStep))\n this._expandConvo(expandedConvos, currentConvo, convoStepIndex + 1, currentStepsStack)\n } else if (currentStep.sender === 'me') {\n let useUnexpanded = true\n if (currentStep.messageText) {\n let uttName = null\n let uttArgs = null\n if (this.utterances[currentStep.messageText]) {\n uttName = currentStep.messageText\n } else {\n const parts = currentStep.messageText.split(' ')\n if (this.utterances[parts[0]]) {\n uttName = parts[0]\n uttArgs = parts.slice(1)\n }\n }\n if (this.utterances[uttName]) {\n const allutterances = this.utterances[uttName].utterances\n let sampleutterances = allutterances\n if (this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE] === 'first') {\n sampleutterances = [allutterances[0]]\n } else if (this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE] === 'random') {\n sampleutterances = allutterances\n .map(x => ({ x, r: Math.random() }))\n .sort((a, b) => a.r - b.r)\n .map(a => a.x)\n .slice(0, this.caps[Capabilities.SCRIPTING_UTTEXPANSION_RANDOM_COUNT])\n }\n sampleutterances.forEach((utt, index) => {\n const lineTag = `${index + 1}`.padStart(`${sampleutterances.length}`.length, '0')\n const currentStepsStack = convoStepsStack.slice()\n if (uttArgs) {\n utt = util.format(utt, ...uttArgs)\n }\n currentStepsStack.push(Object.assign(_.cloneDeep(currentStep), { messageText: utt }))\n const currentConvoLabeled = _.cloneDeep(currentConvo)\n Object.assign(currentConvoLabeled.header, { name: `${currentConvo.header.name}/${uttName}-${utterancePostfix(lineTag, utt)}` })\n if (!currentConvoLabeled.sourceTag) currentConvoLabeled.sourceTag = {}\n if (!currentConvoLabeled.sourceTag.origConvoName) currentConvoLabeled.sourceTag.origConvoName = currentConvo.header.name\n this._expandConvo(expandedConvos, currentConvoLabeled, convoStepIndex + 1, currentStepsStack)\n })\n useUnexpanded = false\n }\n }\n if (currentStep.userInputs && currentStep.userInputs.length > 0) {\n currentStep.userInputs.forEach((ui, uiIndex) => {\n const userInput = this.userInputs[ui.name]\n if (userInput && userInput.expandConvo) {\n const expandedUserInputs = userInput.expandConvo({ convo: currentConvo, convoStep: currentStep, args: ui.args })\n if (expandedUserInputs && expandedUserInputs.length > 0) {\n let sampleinputs = expandedUserInputs\n if (this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE] === 'first') {\n sampleinputs = [expandedUserInputs[0]]\n } else if (this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE] === 'random') {\n sampleinputs = expandedUserInputs\n .map(x => ({ x, r: Math.random() }))\n .sort((a, b) => a.r - b.r)\n .map(a => a.x)\n .slice(0, this.caps[Capabilities.SCRIPTING_UTTEXPANSION_RANDOM_COUNT])\n }\n sampleinputs.forEach((sampleinput, index) => {\n const lineTag = `${index + 1}`.padStart(`${sampleinputs.length}`.length, '0')\n const currentStepsStack = convoStepsStack.slice()\n const currentStepMod = _.cloneDeep(currentStep)\n currentStepMod.userInputs[uiIndex] = sampleinput\n\n currentStepsStack.push(currentStepMod)\n const currentConvoLabeled = _.cloneDeep(currentConvo)\n Object.assign(currentConvoLabeled.header, { name: `${currentConvo.header.name}/${ui.name}-${utterancePostfix(lineTag, (sampleinput.args && sampleinput.args.length) ? sampleinput.args.join(', ') : 'no-args')}` })\n this._expandConvo(expandedConvos, currentConvoLabeled, convoStepIndex + 1, currentStepsStack)\n })\n useUnexpanded = false\n }\n }\n })\n }\n if (useUnexpanded) {\n const currentStepsStack = convoStepsStack.slice()\n currentStepsStack.push(_.cloneDeep(currentStep))\n this._expandConvo(expandedConvos, currentConvo, convoStepIndex + 1, currentStepsStack)\n }\n }\n } else {\n expandedConvos.push(Object.assign(_.cloneDeep(currentConvo), { conversation: _.cloneDeep(convoStepsStack) }))\n }\n }\n\n _sortConvos () {\n this.convos = _.sortBy(this.convos, [(convo) => convo.header.sort || convo.header.name])\n let i = 0\n this.convos.forEach((convo) => {\n convo.header.order = ++i\n if (!convo.header.projectname) {\n convo.header.projectname = this.caps[Capabilities.PROJECTNAME]\n }\n if (!convo.header.testsessionname) {\n convo.header.testsessionname = this.caps[Capabilities.TESTSESSIONNAME]\n }\n })\n }\n\n AddConvos (convos) {\n if (convos && _.isArray(convos)) {\n this.convos = _.concat(this.convos, convos)\n } else if (convos) {\n this.convos.push(convos)\n }\n this._sortConvos()\n }\n\n AddUtterances (utterances) {\n const findAmbiguous = (utterances) => {\n const ambiguous = []\n let expected = null\n let base = null\n if (utterances && utterances.length > 1) {\n base = utterances[0]\n expected = ScriptingMemory.extractVarNames(utterances[0]).sort()\n const expectedString = JSON.stringify(expected)\n\n for (let i = 1; i < utterances.length; i++) {\n const actualString = JSON.stringify(ScriptingMemory.extractVarNames(utterances[i]).sort())\n\n if (actualString !== expectedString) {\n ambiguous.push(utterances[i])\n }\n }\n }\n\n return { expected, ambiguous, base }\n }\n\n if (utterances && !_.isArray(utterances)) {\n utterances = [utterances]\n }\n if (utterances) {\n _.forEach(utterances, (utt) => {\n const eu = this.utterances[utt.name]\n if (eu) {\n eu.utterances = _.uniq(_.concat(eu.utterances, utt.utterances))\n } else {\n this.utterances[utt.name] = utt\n }\n\n const { ambiguous, expected } = findAmbiguous(this.utterances[utt.name].utterances)\n\n if (ambiguous && ambiguous.length > 0) {\n debug(`Ambigous utterance \"${utt.name}\", expecting exact ${expected.length ? ('\"' + expected.join(', ') + '\"') : '<none>'} scripting memory variables in following user examples: ${ambiguous.map(d => `\"${d}\"`).join(', ')}`)\n }\n })\n }\n }\n\n AddPartialConvos (convos) {\n if (convos && _.isArray(convos)) {\n for (let i = 0; i < convos.length; i++) {\n const convo = convos[i]\n this.AddPartialConvos(convo)\n }\n } else if (convos) {\n if (!convos.header || !convos.header.name) {\n throw Error(`Header name is mandatory: ${JSON.stringify(convos.header)}`)\n }\n if (convos.header.name.indexOf('|') >= 0) {\n throw Error(`Invalid partial convo name: ${convos.header.name}`)\n }\n const name = convos.header.name\n if (this.partialConvos[name]) {\n throw Error(`Duplicate partial convo: ${name}`)\n }\n\n this.partialConvos[name] = convos\n }\n }\n\n GetPartialConvos () {\n return this.partialConvos\n }\n\n AddScriptingMemories (scriptingMemories) {\n if (scriptingMemories && _.isArray(scriptingMemories)) {\n for (let i = 0; i < scriptingMemories.length; i++) {\n const scriptingMemory = scriptingMemories[i]\n this.AddScriptingMemories(scriptingMemory)\n }\n } else if (scriptingMemories) {\n if (!scriptingMemories.header || !scriptingMemories.header.name) {\n throw new BotiumError(\n 'Scripting Memory Definition has no name',\n {\n type: 'Compiler',\n subtype: 'Scripting memory without name',\n source: 'ScriptingProvider',\n cause: {\n scriptingMemory: scriptingMemories\n }\n }\n )\n }\n\n if (!scriptingMemories.values || !Object.keys(scriptingMemories.values).length) {\n throw new BotiumError(\n 'Scripting Memory Definition has no variables',\n {\n type: 'Compiler',\n subtype: 'Scripting memory without variable',\n source: 'ScriptingProvider',\n cause: {\n scriptingMemory: scriptingMemories\n }\n }\n )\n }\n\n if (scriptingMemories.values && !_.isUndefined(scriptingMemories.values[''])) {\n throw new BotiumError(\n 'Scripting Memory Definition variable has no name',\n {\n type: 'Compiler',\n subtype: 'Scripting memory without variable name',\n source: 'ScriptingProvider',\n cause: {\n scriptingMemory: scriptingMemories\n }\n }\n )\n }\n\n this.scriptingMemories.push(scriptingMemories)\n }\n }\n\n GetConversationFlowView ({\n getConvoNodeHash = null, detectLoops = false, summarizeMultiSteps = true,\n extPickMeNodeProps = [], extPickBotNodeProps = [], extPickMeHashProps = [], extPickBotHashProps = []\n } = {}) {\n const root = []\n const botNodesByHash = {}\n const pickMeNodeProps = ['index', 'sender', 'messageText', 'utteranceSamples', 'utteranceCount', 'logicHooks', 'userInputs', ...extPickMeNodeProps]\n const pickBotNodeProps = ['index', 'sender', 'messageText', 'optional', 'not', 'utteranceSamples', 'utteranceCount', 'logicHooks', 'asserters', ...extPickBotNodeProps]\n const pickMeHashProps = ['sender', 'messageText', 'logicHooks', 'userInputs', ...extPickMeHashProps]\n const pickBotHashProps = ['sender', 'messageText', 'optional', 'not', 'logicHooks', 'asserters', ...extPickBotHashProps]\n\n this.convos.forEach((convo) => {\n const convoNodes = []\n for (const [convoStepIndex, convoStep] of convo.conversation.entries()) {\n if (convoStep.sender === 'begin' || convoStep.sender === 'end') continue\n convoStep.index = convoStepIndex\n if (convoStep.messageText) {\n const utterances = this._resolveUtterance({ utterance: convoStep.messageText, resolveEmptyIfUnknown: true })\n if (utterances) {\n convoStep.utteranceSamples = utterances.slice(0, 3)\n convoStep.utteranceCount = utterances.length\n }\n }\n\n const lastConvoNode = convoNodes.length === 0 ? null : convoNodes[convoNodes.length - 1]\n if (!lastConvoNode || !summarizeMultiSteps || convoNodes[convoNodes.length - 1].sender !== convoStep.sender) {\n convoNodes.push({\n sender: convoStep.sender,\n convoSteps: [convoStep],\n convoStepIndices: [convoStepIndex],\n hash: null\n })\n } else {\n lastConvoNode.convoSteps.push(convoStep)\n lastConvoNode.convoStepIndices.push(convoStepIndex)\n }\n }\n\n let currentChildren = root\n for (const convoNode of convoNodes) {\n const convoNodeValues = convoNode.sender === 'me'\n ? convoNode.convoSteps.map(convoStep => _.pick(convoStep, pickMeNodeProps))\n : convoNode.convoSteps.map(convoStep => _.pick(convoStep, pickBotNodeProps))\n const convoNodeHeader = {\n header: _.pick(convo.header, ['name', 'description']),\n sourceTag: convo.sourceTag,\n convoStepIndices: convoNode.convoStepIndices\n }\n\n let hash = getConvoNodeHash && getConvoNodeHash({ convo, convoNode })\n if (!hash) {\n if (convoNode.sender === 'bot') {\n hash = crypto.createHash('md5').update(JSON.stringify(convoNode.convoSteps.map(convoStep => _.pick(convoStep, pickBotHashProps)))).digest('hex')\n } else {\n hash = crypto.createHash('md5').update(JSON.stringify(convoNode.convoSteps.map(convoStep => _.pick(convoStep, pickMeHashProps)))).digest('hex')\n }\n }\n\n const existingChildNode = currentChildren.find(c => c.hash === hash)\n if (existingChildNode) {\n existingChildNode.convos.push(_.cloneDeep(convoNodeHeader))\n currentChildren = existingChildNode.childNodes\n continue\n }\n\n const existingBotNode = (detectLoops && convoNode.sender === 'bot' && botNodesByHash[hash])\n if (existingBotNode) {\n if (currentChildren.findIndex(c => c.ref === existingBotNode.key) < 0) {\n currentChildren.push({\n ref: existingBotNode.key\n })\n }\n const existingConvo = existingBotNode.convos.find(c => c.header.name === convoNodeHeader.header.name)\n if (existingConvo) {\n existingConvo.convoStepIndices = [...existingConvo.convoStepIndices, ...convoNodeHeader.convoStepIndices]\n } else {\n existingBotNode.convos.push(_.cloneDeep(convoNodeHeader))\n }\n currentChildren = existingBotNode.childNodes\n continue\n }\n const node = {\n sender: convoNode.sender,\n key: randomize('0', 20),\n hash: hash,\n convoNodes: convoNodeValues,\n convos: [_.cloneDeep(convoNodeHeader)],\n childNodes: []\n }\n if (node.sender === 'bot') {\n botNodesByHash[hash] = node\n }\n currentChildren.push(node)\n currentChildren = node.childNodes\n }\n })\n\n return root\n }\n\n GetConversationFlowDot (args) {\n const root = this.GetConversationFlowView(args)\n\n const nodes = []\n const lines = []\n\n const walkTreeForNodes = (node) => {\n nodes.push(`N_${node.hash} [label=\"${node.convoNodes.map(convoNode => (new ConvoStep(convoNode)).toString()).join('\\r\\n')}\"];`)\n if (node.childNodes && node.childNodes.length > 0) {\n node.childNodes.filter(c => !c.ref).forEach(c => walkTreeForNodes(c))\n }\n }\n const walkTreeForLines = (node, path = []) => {\n if (node.childNodes && node.childNodes.length > 0) {\n node.childNodes.filter(c => !c.ref).forEach(c => walkTreeForLines(c, [...path, `N_${node.hash}`]))\n node.childNodes.filter(c => c.ref).forEach(c => lines.push(`${[...path, `N_${node.hash}`, `N_${c.ref}`].join(' -> ')};`))\n } else {\n lines.push(`${[...path, `N_${node.hash}`].join(' -> ')};`)\n }\n }\n root.forEach(r => walkTreeForNodes(r))\n root.forEach(r => walkTreeForLines(r))\n\n return [\n 'digraph {',\n ...nodes,\n ...lines,\n '}'].join('\\r\\n')\n }\n}\n","module.exports = class BaseRepo {\n constructor (tempDirectory, sources) {\n this.tempDirectory = tempDirectory\n this.sources = Object.assign({}, sources)\n this.workingDirectory = null\n }\n\n Validate () {\n return Promise.resolve()\n }\n\n Prepare () {\n return Promise.resolve()\n }\n\n _AssertSourceExists (source) {\n if (!this.sources[source]) {\n throw new Error(`Source property ${source} not set`)\n }\n }\n}\n","const BaseRepo = require('./BaseRepo')\n\nmodule.exports = class NoRepo extends BaseRepo {\n Validate () {\n return super.Validate()\n }\n\n Prepare () {\n return super.Prepare()\n }\n}\n","const util = require('util')\nconst childProcess = require('child_process')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-core-ProcessUtils')\n\nmodule.exports = {\n childCommandLineRun: (cmd, ignoreErrors = false, processOptions = {}) => {\n const cmdOptions = cmd.split(' ')\n const cmdPart = cmdOptions[0]\n cmdOptions.splice(0, 1)\n return module.exports.childProcessRun(cmdPart, cmdOptions, ignoreErrors, processOptions)\n },\n\n childProcessRun: (cmd, cmdOptions, ignoreErrors = false, processOptions = {}) => {\n return new Promise((resolve, reject) => {\n debug('Running Command: ' + cmd + ' ' + _.join(cmdOptions, ' '))\n\n const runningProcess = childProcess.spawn(cmd, cmdOptions, processOptions)\n\n const stdout = []\n const stderr = []\n\n runningProcess.stdout.on('data', (data) => {\n if (data) {\n debug(`${cmd} STDOUT: ${data}`)\n stdout.push(data)\n }\n })\n runningProcess.stderr.on('data', (data) => {\n if (data) {\n debug(`${cmd} STDERR: ${data}`)\n stderr.push(data)\n }\n })\n runningProcess.on('close', (code) => {\n debug(cmd + ' exited with code ' + code)\n if (code === 0 || ignoreErrors) {\n resolve({ stdout, stderr })\n } else {\n reject(new Error(`${cmd} returned error code ${code}`))\n }\n })\n runningProcess.on('error', (err) => {\n if (ignoreErrors) {\n resolve()\n } else {\n reject(new Error(`${cmd} failed: ${util.inspect(err)}`))\n }\n })\n })\n }\n}\n","const path = require('path')\nconst async = require('async')\nconst mkdirp = require('mkdirp')\nconst debug = require('debug')('botium-core-GitRepo')\n\nconst Source = require('../Source')\nconst BaseRepo = require('./BaseRepo')\nconst ProcessUtils = require('../helpers/ProcessUtils')\n\nmodule.exports = class GitRepo extends BaseRepo {\n Validate () {\n return super.Validate().then(() => {\n this._AssertSourceExists(Source.GITPATH)\n this._AssertSourceExists(Source.GITURL)\n this._AssertSourceExists(Source.GITBRANCH)\n this._AssertSourceExists(Source.GITDIR)\n })\n }\n\n Prepare () {\n return new Promise((resolve, reject) => {\n async.series([\n\n (cloneDirectoryCreated) => {\n this.workingDirectory = path.resolve(this.tempDirectory, 'git')\n\n mkdirp(this.workingDirectory, (err) => {\n if (err) {\n return cloneDirectoryCreated(new Error(`Unable to create clone directory ${this.workingDirectory}: ${err}`))\n }\n cloneDirectoryCreated()\n })\n },\n\n (cloneReady) => {\n const gitCmdOptions = [\n 'clone',\n '-b',\n this.sources[Source.GITBRANCH],\n '--single-branch',\n '--depth',\n '1',\n this.sources[Source.GITURL],\n this.workingDirectory\n ]\n ProcessUtils.childProcessRun(this.sources[Source.GITPATH], gitCmdOptions, false, { cwd: this.workingDirectory })\n .then(() => cloneReady())\n .catch(cloneReady)\n },\n\n (workingDirectoryChanged) => {\n this.workingDirectory = path.resolve(this.workingDirectory, this.sources[Source.GITDIR])\n workingDirectoryChanged()\n },\n\n (prepareReady) => {\n if (this.sources[Source.GITPREPARECMD]) {\n ProcessUtils.childCommandLineRun(this.sources[Source.GITPREPARECMD], false, { cwd: this.workingDirectory })\n .then(() => prepareReady())\n .catch(prepareReady)\n } else {\n prepareReady()\n }\n }\n\n ], (err) => {\n if (err) {\n return reject(err)\n }\n debug(`git checkout out to ${this.workingDirectory}`)\n resolve()\n })\n })\n }\n}\n","const fs = require('fs')\nconst path = require('path')\nconst Source = require('../Source')\nconst BaseRepo = require('./BaseRepo')\n\nmodule.exports = class LocalRepo extends BaseRepo {\n Validate () {\n return super.Validate().then(() => {\n this._AssertSourceExists(Source.LOCALPATH)\n\n const checkPath = this.sources[Source.LOCALPATH]\n fs.stat(checkPath, (err, stats) => {\n if (err) {\n throw new Error(`${checkPath} not available: ${err}`)\n }\n if (stats.isDirectory() && !stats.isSymbolicLink()) {\n fs.access(checkPath, fs.constants.W_OK, (err1) => {\n if (err) {\n throw new Error(`${checkPath} not writeable: ${err}`)\n }\n })\n } else {\n throw new Error(`${checkPath} not a regular directory`)\n }\n })\n })\n }\n\n Prepare () {\n // No need to prepare anything\n this.workingDirectory = path.resolve(this.sources[Source.LOCALPATH])\n return Promise.resolve()\n }\n}\n","module.exports = {\n BUILD_CONTAINER: 'BUILD_CONTAINER',\n START_CONTAINER: 'START_CONTAINER',\n SENDTOBOT: 'SENDTOBOT',\n STOP_CONTAINER: 'STOP_CONTAINER',\n CLEAN_CONTAINER: 'CLEAN_CONTAINER'\n}\n","const { formatTimeout } = require('./Utils')\r\n\r\nmodule.exports = class QueueTimeoutError extends Error {\r\n constructor (timeoutMillis) {\r\n super(`Bot did not respond within ${formatTimeout(timeoutMillis)}`)\r\n this.timeoutMillis = timeoutMillis\r\n }\r\n}\r\n","const async = require('async')\r\nconst util = require('util')\r\n\r\nconst QueueTimeoutError = require('./QueueTimeoutError')\r\n\r\nmodule.exports = class Queue {\r\n constructor () {\r\n this.queue = []\r\n this.listeners = []\r\n this.pushListener = null\r\n }\r\n\r\n length () {\r\n return this.queue.length\r\n }\r\n\r\n empty () {\r\n this.queue = []\r\n }\r\n\r\n clear () {\r\n this.queue = []\r\n this.listeners = []\r\n }\r\n\r\n push (msg) {\r\n if (this.pushListener) {\r\n this.pushListener(msg)\r\n }\r\n\r\n if (this.listeners.length > 0) {\r\n this.listeners.shift()(msg)\r\n } else {\r\n this.queue.push(msg)\r\n }\r\n }\r\n\r\n pop (timeoutMillis) {\r\n if (this.queue.length > 0) {\r\n return Promise.resolve(this.queue.shift())\r\n }\r\n return new Promise((resolve, reject) => {\r\n let listener = null\r\n const timeoutRequest = async.timeout((timeoutCallback) => {\r\n listener = (msg) => {\r\n timeoutCallback(null, msg)\r\n }\r\n this.listeners.push(listener)\r\n }, timeoutMillis)\r\n\r\n timeoutRequest((err, msg) => {\r\n if (err && err.code === 'ETIMEDOUT') {\r\n this.listeners.splice(this.listeners.indexOf(listener), 1)\r\n reject(new QueueTimeoutError(timeoutMillis))\r\n } else if (err) {\r\n this.listeners.splice(this.listeners.indexOf(listener), 1)\r\n reject(new Error(`Queue pop error ${util.inspect(err)}`))\r\n } else {\r\n resolve(msg)\r\n }\r\n })\r\n })\r\n }\r\n\r\n registerPushListener (callback) {\r\n this.pushListener = callback\r\n }\r\n}\r\n","const util = require('util')\nconst async = require('async')\nconst rimraf = require('rimraf')\nconst Bottleneck = require('bottleneck')\nconst _ = require('lodash')\nconst request = require('request')\nconst debug = require('debug')('botium-connector-BaseContainer')\n\nconst Events = require('../Events')\nconst Capabilities = require('../Capabilities')\nconst Queue = require('../helpers/Queue')\nconst { executeHook, getHook } = require('../helpers/HookUtils')\nconst BotiumMockMessage = require('../mocks/BotiumMockMessage')\n\nmodule.exports = class BaseContainer {\n constructor (eventEmitter, tempDirectory, repo, caps, envs) {\n this.eventEmitter = eventEmitter\n this.repo = repo\n this.caps = Object.assign({}, caps)\n this.envs = Object.assign({}, envs)\n this.tempDirectory = tempDirectory\n this.cleanupTasks = []\n this.queues = {}\n this.bottleneck = null\n }\n\n Validate () {\n this.onBuildHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONBUILD])\n this.onStartHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONSTART])\n this.onUserSaysHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONUSERSAYS])\n this.onBotResponseHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONBOTRESPONSE])\n this.onStopHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONSTOP])\n this.onCleanHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONCLEAN])\n\n if (this.caps[Capabilities.RATELIMIT_BOTTLENECK_FN]) {\n if (_.isFunction(this.caps[Capabilities.RATELIMIT_BOTTLENECK_FN])) {\n this.bottleneck = this.caps[Capabilities.RATELIMIT_BOTTLENECK_FN]\n debug('Validate: Applying userSays rate limits from capability')\n } else {\n const limiter = new Bottleneck(this.caps[Capabilities.RATELIMIT_BOTTLENECK_FN])\n this.bottleneck = (fn) => limiter.schedule(fn)\n debug(`Validate: Applying userSays rate limits ${util.inspect(this.caps[Capabilities.RATELIMIT_BOTTLENECK_FN])}`)\n }\n } else if (this.caps[Capabilities.RATELIMIT_USERSAYS_MAXCONCURRENT] || this.caps[Capabilities.RATELIMIT_USERSAYS_MINTIME]) {\n const opts = {}\n if (this.caps[Capabilities.RATELIMIT_USERSAYS_MAXCONCURRENT]) opts.maxConcurrent = this.caps[Capabilities.RATELIMIT_USERSAYS_MAXCONCURRENT]\n if (this.caps[Capabilities.RATELIMIT_USERSAYS_MINTIME]) opts.minTime = this.caps[Capabilities.RATELIMIT_USERSAYS_MINTIME]\n const limiter = new Bottleneck(opts)\n this.bottleneck = (fn) => limiter.schedule(fn)\n debug(`Validate: Applying userSays rate limits ${util.inspect(opts)}`)\n }\n\n return Promise.resolve()\n }\n\n Build () {\n return new Promise((resolve, reject) => {\n this._RunCustomHook('onBuild', this.onBuildHook)\n .then(() => resolve(this))\n .catch((err) => reject(err))\n })\n }\n\n Start () {\n this.queues = {}\n return new Promise((resolve, reject) => {\n this._RunCustomHook('onStart', this.onStartHook)\n .then(() => resolve(this))\n .catch((err) => reject(err))\n })\n }\n\n UserSaysText (text) {\n const meMsg = new BotiumMockMessage({ sender: 'me', messageText: text })\n return this.UserSays(meMsg)\n }\n\n UserSays (meMsg) {\n const run = () => this._RunCustomHook('onUserSays', this.onUserSaysHook, { meMsg })\n .then(() => this.UserSaysImpl(meMsg))\n\n if (this.bottleneck) {\n return this.bottleneck(run)\n } else {\n return run()\n }\n }\n\n UserSaysImpl (meMsg) {\n return Promise.resolve(this)\n }\n\n WaitBotSays (channel = null, timeoutMillis = null) {\n if (!channel) channel = 'default'\n if (!timeoutMillis) timeoutMillis = this.caps[Capabilities.WAITFORBOTTIMEOUT]\n\n if (!this.queues[channel]) {\n this.queues[channel] = new Queue()\n }\n\n return new Promise((resolve, reject) => {\n this.queues[channel].pop(timeoutMillis)\n .then((botMsg) => {\n if (_.isError(botMsg)) {\n reject(botMsg)\n } else {\n resolve(botMsg)\n }\n })\n .catch((err) => {\n debug(`WaitBotSays error ${err.message || err}`)\n reject(err)\n })\n })\n }\n\n WaitBotSaysText (channel = null, timeoutMillis = null) {\n return this.WaitBotSays(channel, timeoutMillis)\n .then((botMsg) => {\n if (botMsg) {\n return botMsg.messageText\n }\n })\n }\n\n Restart () {\n return new Promise((resolve, reject) => {\n this.Stop()\n .then(() => this.Start())\n .then(() => resolve())\n .catch((err) => reject(err))\n })\n }\n\n Stop () {\n return new Promise((resolve, reject) => {\n this._RunCustomHook('onStop', this.onStopHook)\n .then(() => resolve(this))\n .catch((err) => reject(err))\n })\n }\n\n Clean () {\n this.userSaysLimiter = null\n return new Promise((resolve, reject) => {\n async.series([\n (hookExecuted) => {\n this._RunCustomHook('onClean', this.onCleanHook)\n .then(() => hookExecuted())\n .catch(() => hookExecuted())\n },\n\n (cleanupTasksDone) => {\n if (this.cleanupTasks) {\n async.series(\n this.cleanupTasks.map((task) => {\n return (cb) => {\n task((err) => {\n if (err) debug(`Cleanup failed: ${util.inspect(err)}`)\n cb()\n })\n }\n }),\n () => {\n cleanupTasksDone()\n }\n )\n } else {\n cleanupTasksDone()\n }\n },\n\n (rimraffed) => {\n if (this.caps[Capabilities.CLEANUPTEMPDIR]) {\n debug(`Cleanup rimrafing temp dir ${this.tempDirectory}`)\n rimraf(this.tempDirectory, (err) => {\n if (err) debug(`Cleanup temp dir ${this.tempDirectory} failed: ${util.inspect(err)}`)\n rimraffed()\n })\n } else {\n rimraffed()\n }\n }\n ], (err) => {\n if (err) {\n return reject(new Error(`Cleanup failed ${util.inspect(err)}`))\n }\n resolve()\n })\n })\n }\n\n _AssertCapabilityExists (cap) {\n if (!Object.prototype.hasOwnProperty.call(this.caps, cap)) {\n throw new Error(`Capability property ${cap} not set`)\n }\n }\n\n _AssertOneCapabilityExists () {\n const checkCaps = [...arguments]\n const found = checkCaps.find((cap) => this.caps[cap])\n if (!found) {\n throw new Error(`Capability property of ${checkCaps.join()} not set`)\n }\n }\n\n _QueueLength (channel = 'default') {\n return (this.queues[channel] && this.queues[channel].length()) || 0\n }\n\n _EmptyQueue (channel = 'default') {\n if (this.queues[channel]) {\n this.queues[channel].empty()\n }\n }\n\n async _QueueBotSays (botMsg) {\n if (_.isError(botMsg)) {\n if (!this.queues.default) {\n this.queues.default = new Queue()\n }\n this.queues.default.push(botMsg)\n this.eventEmitter.emit(Events.MESSAGE_RECEIVEFROMBOT_ERROR, this, botMsg)\n } else {\n if (!botMsg.channel) botMsg.channel = 'default'\n if (!botMsg.sender) botMsg.sender = 'bot'\n\n if (!this.queues[botMsg.channel]) {\n this.queues[botMsg.channel] = new Queue()\n }\n\n await this._RunCustomHook('onBotResponse', this.onBotResponseHook, { botMsg })\n this.queues[botMsg.channel].push(botMsg)\n this.eventEmitter.emit(Events.MESSAGE_RECEIVEDFROMBOT, this, botMsg)\n }\n }\n\n async _RunCustomHook (name, hook, args) {\n try {\n await executeHook(this.caps, hook, Object.assign({ container: this, request }, args))\n } catch (err) {\n debug(`_RunCustomHook ${name} finished with error: ${err.message || util.inspect(err)}`)\n }\n }\n}\n","const util = require('util')\nconst async = require('async')\nconst _ = require('lodash')\nconst io = require('socket.io-client')\nconst debug = require('debug')('botium-connector-GridContainer')\n\nconst Commands = require('../Commands')\nconst Events = require('../Events')\nconst Capabilities = require('../Capabilities')\nconst BaseContainer = require('./BaseContainer')\nconst BotiumMockMessage = require('../mocks/BotiumMockMessage')\n\nmodule.exports = class GridContainer extends BaseContainer {\n Validate () {\n return super.Validate().then(() => {\n this._AssertCapabilityExists(Capabilities.BOTIUMGRIDURL)\n })\n }\n\n Build () {\n this.buildPromise = this._defer()\n\n async.series([\n (baseComplete) => {\n super.Build().then(() => baseComplete()).catch(baseComplete)\n },\n\n (socketComplete) => {\n this.socket = io(this.caps[Capabilities.BOTIUMGRIDURL])\n\n this.socket.on('connect', () => {\n debug('connected')\n this.socket.emit('authentication', { apiToken: this.caps[Capabilities.BOTIUMAPITOKEN] })\n })\n this.socket.on('connect_error', (err) => {\n debug(`connect_error ${err.message}`)\n })\n this.socket.on('connect_timeout', (timeout) => {\n debug(`connect_timeout ${util.inspect(timeout)}`)\n })\n this.socket.on('error', (err) => {\n debug(`error ${err.message}`)\n })\n this.socket.on('authenticated', () => {\n debug('authenticated')\n this.socket.emit(Commands.BUILD_CONTAINER, this.caps, this.repo.sources, this.envs)\n })\n this.socket.on('unauthorized', (err) => {\n debug(`unauthorized ${err.message}`)\n socketComplete(`Grid Access not authorized: ${err.message}`)\n })\n this.socket.on(Events.TOOMUCHWORKERS_ERROR, (err) => {\n debug(`TOOMUCHWORKERS_ERROR ${err.message}`)\n socketComplete(`Grid Access not possible: ${err.message}`)\n })\n this.socket.on(Events.CONTAINER_BUILT, () => {\n debug(Events.CONTAINER_BUILT)\n socketComplete()\n })\n this.socket.on(Events.CONTAINER_BUILD_ERROR, (err) => {\n debug(`CONTAINER_BUILD_ERROR ${err.message}`)\n socketComplete(`Grid Build failed: ${err.message}`)\n })\n\n this.socket.on(Events.CONTAINER_STARTED, () => {\n debug(Events.CONTAINER_STARTED)\n this.eventEmitter.emit(Events.CONTAINER_STARTED, this)\n if (this.startPromise) {\n this.startPromise.resolve(this)\n this.startPromise = null\n }\n })\n this.socket.on(Events.CONTAINER_START_ERROR, (err) => {\n debug(`CONTAINER_START_ERROR ${err.message}`)\n this.eventEmitter.emit(Events.CONTAINER_START_ERROR, this, err)\n if (this.startPromise) {\n this.startPromise.reject(`Grid Start failed: ${err.message}`)\n this.startPromise = null\n }\n })\n\n this.socket.on(Events.MESSAGE_RECEIVEDFROMBOT, (botMsg) => {\n debug(`MESSAGE_RECEIVEDFROMBOT ${util.inspect(botMsg)}`)\n this._QueueBotSays(new BotiumMockMessage(botMsg))\n })\n\n this.socket.on(Events.CONTAINER_STOPPED, () => {\n debug(Events.CONTAINER_STOPPED)\n this.eventEmitter.emit(Events.CONTAINER_STOPPED, this)\n if (this.stopPromise) {\n this.stopPromise.resolve(this)\n this.stopPromise = null\n }\n })\n this.socket.on(Events.CONTAINER_STOP_ERROR, (err) => {\n debug(`CONTAINER_STOP_ERROR ${err.message}`)\n this.eventEmitter.emit(Events.CONTAINER_STOP_ERROR, this, err)\n if (this.stopPromise) {\n this.stopPromise.reject(`Grid Stop failed: ${err.message}`)\n this.stopPromise = null\n }\n })\n\n this.socket.on(Events.CONTAINER_CLEANED, () => {\n debug(Events.CONTAINER_CLEANED)\n this.eventEmitter.emit(Events.CONTAINER_CLEANED, this)\n if (this.cleanPromise) {\n this.cleanPromise.resolve(this)\n this.cleanPromise = null\n }\n this.socket.disconnect()\n this.socket = null\n })\n this.socket.on(Events.CONTAINER_CLEAN_ERROR, (err) => {\n debug(`CONTAINER_CLEAN_ERROR ${err.message}`)\n this.eventEmitter.emit(Events.CONTAINER_CLEAN_ERROR, this, err)\n if (this.cleanPromise) {\n this.cleanPromise.reject(`Grid Clean failed: ${err.message}`)\n this.cleanPromise = null\n }\n this.socket.disconnect()\n this.socket = null\n })\n }\n ], (err) => {\n if (err) {\n this.buildPromise.reject(new Error(`Cannot build grid containers: ${err.message}`))\n } else {\n this.buildPromise.resolve(this)\n }\n this.buildPromise = null\n })\n return this.buildPromise.promise\n }\n\n Start () {\n this.eventEmitter.emit(Events.CONTAINER_STARTING, this)\n\n return super.Start().then(() => {\n if (this.startPromise) return Promise.reject(new Error('already starting'))\n if (this.socket) {\n this.startPromise = this._defer()\n this.socket.emit(Commands.START_CONTAINER)\n\n return this.startPromise.promise\n } else {\n this.eventEmitter.emit(Events.CONTAINER_START_ERROR, this, 'Remote Agent not online')\n return Promise.reject(new Error('Remote Agent not online'))\n }\n })\n }\n\n UserSaysImpl (mockMsg) {\n return new Promise((resolve, reject) => {\n if (this.socket) {\n this.socket.emit(Commands.SENDTOBOT, mockMsg)\n this.eventEmitter.emit(Events.MESSAGE_SENTTOBOT, this, mockMsg)\n resolve(this)\n } else {\n this.eventEmitter.emit(Events.MESSAGE_SENDTOBOT_ERROR, this, 'Remote Agent not online')\n reject(new Error('Remote Agent not online'))\n }\n })\n }\n\n Stop () {\n this.eventEmitter.emit(Events.CONTAINER_STOPPING, this)\n\n return super.Stop().then(() => {\n if (this.stopPromise) return Promise.reject(new Error('already stopping'))\n if (this.socket) {\n this.stopPromise = this._defer()\n this.socket.emit(Commands.STOP_CONTAINER)\n\n return this.stopPromise.promise\n } else {\n return Promise.resolve(this)\n }\n })\n }\n\n Clean () {\n this.eventEmitter.emit(Events.CONTAINER_CLEANING, this)\n\n return super.Clean().then(() => {\n if (this.cleanPromise) return Promise.reject(new Error('already cleaning'))\n if (this.socket) {\n this.cleanPromise = this._defer()\n this.socket.emit(Commands.CLEAN_CONTAINER)\n\n return this.cleanPromise.promise\n } else {\n return Promise.resolve(this)\n }\n })\n }\n\n _ValidateCustomHook (capKey) {\n if (this.caps[capKey]) {\n if (!_.isString(this.caps[capKey])) {\n throw new Error(`Custom Hook ${capKey} has to be a command line string`)\n }\n }\n }\n\n _RunCustomHook (capKey) {\n return Promise.resolve()\n }\n\n _defer () {\n const deferred = {\n promise: null,\n resolve: null,\n reject: null\n }\n deferred.promise = new Promise((resolve, reject) => {\n deferred.resolve = resolve\n deferred.reject = reject\n })\n return deferred\n }\n}\n","const Events = require('../Events')\nconst BaseContainer = require('./BaseContainer')\nconst BotiumMockMessage = require('../mocks/BotiumMockMessage')\n\nmodule.exports = class InProcessContainer extends BaseContainer {\n UserSaysImpl (mockMsg) {\n this.eventEmitter.emit(Events.MESSAGE_SENTTOBOT, this, mockMsg)\n return Promise.resolve(this)\n }\n\n InjectBotSays (botMsg) {\n this._QueueBotSays(new BotiumMockMessage(botMsg))\n }\n}\n","const express = require('express')\nconst Redis = require('ioredis')\nconst bodyParser = require('body-parser')\nconst debug = require('debug')('botium-core-inbound-proxy')\n\nconst buildRedisHandler = (redisurl, topic) => {\n const redis = new Redis(redisurl)\n redis.on('connect', () => {\n debug(`Redis connected to ${JSON.stringify(redisurl || 'default')}`)\n })\n return (event) => {\n try {\n debug('Got Message Event:')\n debug(JSON.stringify(event, null, 2))\n\n redis.publish(topic, JSON.stringify(event))\n } catch (err) {\n debug('Error while publishing to redis')\n debug(err)\n }\n }\n}\n\nconst setupEndpoints = ({ app, endpoint, middleware, processEvent }) => {\n if (endpoint && !endpoint.endsWith('/')) endpoint = endpoint + '/'\n\n const handler = (req, res) => {\n if (req.body) {\n processEvent({\n originalUrl: req.originalUrl,\n originalMethod: req.method,\n body: req.body\n })\n res.status(200).json({}).end()\n } else {\n res.status(500).sendResponse('No body detected')\n }\n }\n if (endpoint) {\n app.all(endpoint, ...(middleware || []), handler)\n app.all(endpoint.endsWith('/') ? endpoint + '*' : endpoint + '/*', ...(middleware || []), handler)\n } else {\n app.all(...(middleware || []), handler)\n }\n}\n\nconst startProxy = async ({ port, endpoint, processEvent }) => {\n return new Promise((resolve, reject) => {\n const app = express()\n\n setupEndpoints({\n app,\n middleware: [\n bodyParser.json(),\n bodyParser.urlencoded({ extended: true })\n ],\n endpoint: endpoint || '/',\n processEvent\n })\n\n const proxy = app.listen(port, () => {\n console.log(`Botium Inbound Messages proxy is listening on port ${port}`)\n console.log(`Botium Inbound Messages endpoint available at http://127.0.0.1:${port}${endpoint}`)\n resolve(proxy)\n })\n })\n}\n\nmodule.exports = {\n buildRedisHandler,\n setupEndpoints,\n startProxy\n}\n","const util = require('util')\nconst async = require('async')\nconst request = require('request')\nconst Mustache = require('mustache')\nconst jp = require('jsonpath')\nconst mime = require('mime-types')\nconst { v4: uuidv4 } = require('uuid')\nconst Redis = require('ioredis')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-connector-simplerest')\n\nconst { startProxy } = require('../../grid/inbound/proxy')\nconst botiumUtils = require('../../helpers/Utils')\nconst { getAllCapValues } = require('../../helpers/CapabilitiesUtils')\nconst Capabilities = require('../../Capabilities')\nconst Defaults = require('../../Defaults').Capabilities\nconst { SCRIPTING_FUNCTIONS } = require('../../scripting/ScriptingMemory')\nconst { getHook, executeHook } = require('../../helpers/HookUtils')\nconst { escapeJSONString } = require('../../helpers/Utils')\nconst { BotiumError } = require('../../scripting/BotiumError')\n\nMustache.escape = s => s\n\nmodule.exports = class SimpleRestContainer {\n constructor ({ queueBotSays, caps, bottleneck }) {\n this.queueBotSays = queueBotSays\n this.caps = Object.assign({}, Defaults, caps)\n this.bottleneck = bottleneck || ((fn) => fn())\n this.processInbound = false\n this.redisTopic = this.caps[Capabilities.SIMPLEREST_REDIS_TOPIC] || 'SIMPLEREST_INBOUND_SUBSCRIPTION'\n\n if (this.caps[Capabilities.SIMPLEREST_INBOUND_ORDER_UNSETTLED_EVENTS_JSONPATH]) {\n const debounceTimeout = this.caps[Capabilities.SIMPLEREST_INBOUND_DEBOUNCE_TIMEOUT] || 500\n this.inboundEvents = []\n this._processOrderedInboundEventsArrayAsync = _.debounce(() => {\n const events = [...this.inboundEvents]\n this.inboundEvents = []\n const jsonPath = this._getMustachedVal(this.caps[Capabilities.SIMPLEREST_INBOUND_ORDER_UNSETTLED_EVENTS_JSONPATH], false)\n const sortedEvents = _.sortBy(events, (event) => {\n const qr = jp.query(event, jsonPath)\n return qr[0]\n })\n for (const event of sortedEvents) {\n setTimeout(() => this._processBodyAsync(event.body, true, !!this.caps[Capabilities.SIMPLEREST_INBOUND_UPDATE_CONTEXT]), 0)\n }\n }, debounceTimeout)\n }\n }\n\n Validate () {\n if (!this.caps[Capabilities.SIMPLEREST_URL]) throw new Error('SIMPLEREST_URL capability required')\n if (!this.caps[Capabilities.SIMPLEREST_METHOD] && !this.caps[Capabilities.SIMPLEREST_VERB]) throw new Error('SIMPLEREST_METHOD/SIMPLEREST_VERB capability required')\n if (_.keys(this.caps).findIndex(k => k.startsWith(Capabilities.SIMPLEREST_RESPONSE_JSONPATH)) < 0 && !this.caps[Capabilities.SIMPLEREST_RESPONSE_HOOK]) throw new Error('SIMPLEREST_RESPONSE_JSONPATH or SIMPLEREST_RESPONSE_HOOK capability required')\n if (this.caps[Capabilities.SIMPLEREST_INIT_CONTEXT]) {\n _.isObject(this.caps[Capabilities.SIMPLEREST_INIT_CONTEXT]) || JSON.parse(this.caps[Capabilities.SIMPLEREST_INIT_CONTEXT])\n }\n if (this.caps[Capabilities.SIMPLEREST_CONTEXT_MERGE_OR_REPLACE] !== 'MERGE' && this.caps[Capabilities.SIMPLEREST_CONTEXT_MERGE_OR_REPLACE] !== 'REPLACE') throw new Error('SIMPLEREST_CONTEXT_MERGE_OR_REPLACE capability only MERGE or REPLACE allowed')\n\n this.startHook = getHook(this.caps, this.caps[Capabilities.SIMPLEREST_START_HOOK])\n this.stopHook = getHook(this.caps, this.caps[Capabilities.SIMPLEREST_STOP_HOOK])\n this.requestHook = getHook(this.caps, this.caps[Capabilities.SIMPLEREST_REQUEST_HOOK])\n this.parserHook = getHook(this.caps, this.caps[Capabilities.SIMPLEREST_PARSER_HOOK])\n this.responseHook = getHook(this.caps, this.caps[Capabilities.SIMPLEREST_RESPONSE_HOOK])\n this.pollRequestHook = getHook(this.caps, this.caps[Capabilities.SIMPLEREST_POLL_REQUEST_HOOK])\n\n this.requestHooks = {}\n if (this.caps[Capabilities.SIMPLEREST_PING_REQUEST_HOOK]) {\n this.requestHooks.SIMPLEREST_PING = getHook(this.caps, this.caps[Capabilities.SIMPLEREST_PING_REQUEST_HOOK])\n }\n if (this.caps[Capabilities.SIMPLEREST_START_REQUEST_HOOK]) {\n this.requestHooks.SIMPLEREST_START = getHook(this.caps, this.caps[Capabilities.SIMPLEREST_START_REQUEST_HOOK])\n }\n if (this.caps[Capabilities.SIMPLEREST_STOP_REQUEST_HOOK]) {\n this.requestHooks.SIMPLEREST_STOP = getHook(this.caps, this.caps[Capabilities.SIMPLEREST_STOP_REQUEST_HOOK])\n }\n }\n\n Build () {\n return this._buildInbound()\n }\n\n Start () {\n return new Promise((resolve, reject) => {\n async.series([\n (contextInitComplete) => {\n this.view = {\n container: this,\n context: {},\n msg: {},\n botium: {\n conversationId: null,\n stepId: null\n },\n // Mustache deals with fuctions with, or without parameters differently.\n // -> we have to add our functions differently, if they have param or not.\n // -> optional parameters are not working here!\n // (render(text) is required for forcing mustache to replace valiables in the text first,\n // then send it to the function.)\n // (mapKeys: remove starting $)\n fnc: _.mapValues(_.mapKeys(SCRIPTING_FUNCTIONS, (value, key) => key.substring(1)), (descriptor) => {\n const safeCaps = Object.assign({}, this.caps, { [Capabilities.SECURITY_ALLOW_UNSAFE]: true })\n return descriptor.numberOfArguments ? () => { return (text, render) => descriptor.handler(safeCaps, render(text)) } : () => descriptor.handler(safeCaps)\n })\n }\n this.view.fnc.jsonify = () => (val, render) => {\n return escapeJSONString(render(val))\n }\n\n if (this.caps[Capabilities.SIMPLEREST_CONVERSATION_ID_TEMPLATE]) {\n this.view.botium.conversationId = this._getMustachedCap(Capabilities.SIMPLEREST_CONVERSATION_ID_TEMPLATE, false)\n } else {\n this.view.botium.conversationId = uuidv4()\n }\n\n if (this.caps[Capabilities.SIMPLEREST_INIT_CONTEXT]) {\n try {\n this.view.context = _.isObject(this.caps[Capabilities.SIMPLEREST_INIT_CONTEXT]) ? _.cloneDeep(this.caps[Capabilities.SIMPLEREST_INIT_CONTEXT]) : JSON.parse(this.caps[Capabilities.SIMPLEREST_INIT_CONTEXT])\n } catch (err) {\n contextInitComplete(`parsing SIMPLEREST_INIT_CONTEXT failed, no JSON detected (${err.message})`)\n }\n }\n contextInitComplete()\n },\n\n (startHookComplete) => {\n executeHook(this.caps, this.startHook, this.view).then(() => startHookComplete()).catch(startHookComplete)\n },\n\n (inboundListenerComplete) => {\n this._subscribeInbound()\n .then(() => inboundListenerComplete())\n .catch(inboundListenerComplete)\n },\n\n (startPollingComplete) => {\n this._startPolling()\n .then(() => startPollingComplete())\n .catch(startPollingComplete)\n },\n\n (pingComplete) => {\n if (this.caps[Capabilities.SIMPLEREST_PING_URL]) {\n this._makeCall('SIMPLEREST_PING')\n .then(body => {\n if (this.caps[Capabilities.SIMPLEREST_PING_UPDATE_CONTEXT] || this.caps[Capabilities.SIMPLEREST_PING_PROCESS_RESPONSE]) {\n return this._parseResponseBody(body)\n .then(body => {\n if (body) {\n debug(`Ping Uri ${this.caps[Capabilities.SIMPLEREST_PING_URL]} returned JSON response: ${botiumUtils.shortenJsonString(body)}`)\n return this._processBodyAsync(body, !!this.caps[Capabilities.SIMPLEREST_PING_PROCESS_RESPONSE], !!this.caps[Capabilities.SIMPLEREST_PING_UPDATE_CONTEXT])\n } else {\n debug(`Ping Uri ${this.caps[Capabilities.SIMPLEREST_PING_URL]} didn't return JSON response, ignoring it.`)\n }\n }).catch(err => {\n debug(`Ping Uri ${this.caps[Capabilities.SIMPLEREST_PING_URL]} didn't return JSON response, ignoring it (${err.message})`)\n })\n }\n }).then(() => {\n pingComplete()\n }).catch(err => {\n pingComplete(err.message)\n })\n } else {\n pingComplete()\n }\n },\n\n (initComplete) => {\n if (_.isString(this.caps[Capabilities.SIMPLEREST_INIT_TEXT])) {\n this._doRequest({ messageText: this.caps[Capabilities.SIMPLEREST_INIT_TEXT] }, !!this.caps[Capabilities.SIMPLEREST_INIT_PROCESS_RESPONSE], true).then(() => initComplete()).catch(initComplete)\n } else {\n initComplete()\n }\n },\n\n (startCallComplete) => {\n this.processInbound = true\n if (this.caps[Capabilities.SIMPLEREST_START_URL]) {\n this._makeCall('SIMPLEREST_START')\n .then(body => {\n if (this.caps[Capabilities.SIMPLEREST_START_UPDATE_CONTEXT] || this.caps[Capabilities.SIMPLEREST_START_PROCESS_RESPONSE]) {\n return this._parseResponseBody(body)\n .then(body => {\n if (body) {\n debug(`Start Uri ${this.caps[Capabilities.SIMPLEREST_START_URL]} returned JSON response: ${botiumUtils.shortenJsonString(body)}`)\n return this._processBodyAsync(body, !!this.caps[Capabilities.SIMPLEREST_START_PROCESS_RESPONSE], !!this.caps[Capabilities.SIMPLEREST_START_UPDATE_CONTEXT])\n } else {\n debug(`Start Uri ${this.caps[Capabilities.SIMPLEREST_START_URL]} didn't return JSON response, ignoring it.`)\n }\n }).catch(err => {\n debug(`Start Uri ${this.caps[Capabilities.SIMPLEREST_START_URL]} didn't return JSON response, ignoring it (${err.message})`)\n })\n }\n }).then(() => {\n startCallComplete()\n }).catch(err => {\n startCallComplete(new Error(`Failed to call url ${this.caps[Capabilities.SIMPLEREST_START_URL]} to start session: ${err.message}`))\n })\n } else {\n startCallComplete()\n }\n }\n\n ], (err) => {\n if (err) {\n return reject(new Error(`Start failed: ${err.message}`))\n }\n resolve()\n })\n })\n }\n\n UserSays (mockMsg) {\n return this._doRequest(mockMsg, true, true)\n }\n\n async Stop () {\n this.processInbound = false\n if (this.caps[Capabilities.SIMPLEREST_STOP_URL]) {\n try {\n await this._makeCall('SIMPLEREST_STOP')\n } catch (err) {\n throw new Error(`Failed to call url ${this.caps[Capabilities.SIMPLEREST_STOP_URL]} to stop session: ${err.message}`)\n }\n }\n await executeHook(this.caps, this.stopHook, this.view)\n await this._unsubscribeInbound()\n await this._stopPolling()\n this.view = {}\n }\n\n Clean () {\n return this._cleanInbound()\n }\n\n // Separated just for better module testing\n async _processBodyAsync (body, isFromUser, updateContext) {\n const p = async () => {\n try {\n const results = await this._processBodyAsyncImpl(body, isFromUser, updateContext)\n if (results) {\n for (const result of results) {\n setTimeout(() => this.queueBotSays(result), 0)\n }\n }\n } catch (err) {\n setTimeout(() => this.queueBotSays(err), 0)\n }\n }\n if (this.waitProcessQueue) {\n this.waitProcessQueue.push(p)\n debug('Async body is queued for processing.')\n } else {\n await p()\n }\n }\n\n async _emptyWaitProcessQueue () {\n if (this.waitProcessQueue && this.waitProcessQueue.length > 0) {\n for (const p of this.waitProcessQueue) {\n await p()\n }\n }\n this.waitProcessQueue = null\n }\n\n // Separated just for better module testing\n async _processBodyAsyncImpl (body, isFromUser, updateContext) {\n if (updateContext) {\n const mergeMode = this.caps[Capabilities.SIMPLEREST_CONTEXT_MERGE_OR_REPLACE]\n const jsonPathsContext = getAllCapValues(Capabilities.SIMPLEREST_CONTEXT_JSONPATH, this.caps)\n if (jsonPathsContext.length > 0) {\n for (const jsonPathContext of jsonPathsContext) {\n const contextNodes = jp.query(body, jsonPathContext)\n if (_.isArray(contextNodes) && contextNodes.length > 0) {\n if (mergeMode === 'MERGE') {\n Object.assign(this.view.context, contextNodes[0])\n } else if (mergeMode === 'REPLACE') {\n this.view.context = contextNodes[0]\n }\n }\n }\n } else {\n if (mergeMode === 'MERGE') {\n Object.assign(this.view.context, body)\n } else if (mergeMode === 'REPLACE') {\n this.view.context = body\n }\n }\n debug(`current session context: ${util.inspect(this.view.context)}`)\n }\n\n const result = []\n if (isFromUser) {\n const jsonPathRoots = []\n\n const jsonPathsBody = getAllCapValues(Capabilities.SIMPLEREST_BODY_JSONPATH, this.caps)\n if (jsonPathsBody.length > 0) {\n for (const jsonPathBody of jsonPathsBody) {\n const rb = jp.query(body, jsonPathBody)\n if (_.isArray(rb)) {\n rb.forEach(r => jsonPathRoots.push(r))\n } else if (rb) {\n jsonPathRoots.push(rb)\n }\n }\n } else {\n jsonPathRoots.push(body)\n }\n\n for (const jsonPathRoot of jsonPathRoots) {\n const _retrieveMedia = (jsonPathMediaRoot, jsonPathsMedia) => {\n const retrievedMedia = []\n jsonPathsMedia.forEach(jsonPath => {\n const responseMedia = jp.query(jsonPathMediaRoot, jsonPath)\n if (responseMedia) {\n (_.isArray(responseMedia) ? _.flattenDeep(responseMedia) : [responseMedia]).forEach(m =>\n retrievedMedia.push({\n mediaUri: m,\n mimeType: mime.lookup(m) || 'application/unknown'\n })\n )\n }\n })\n return retrievedMedia\n }\n\n const _retrieveButtons = (jsonPathButtonRoot, jsonPathsButtons) => {\n const retrievedButtons = []\n jsonPathsButtons.forEach(jsonPath => {\n const responseButtons = jp.query(jsonPathButtonRoot, jsonPath)\n if (responseButtons) {\n (_.isArray(responseButtons) ? _.flattenDeep(responseButtons) : [responseButtons]).forEach(b =>\n retrievedButtons.push({\n text: b\n })\n )\n }\n })\n return retrievedButtons\n }\n\n const _getCardText = (responseCardText) => {\n if (responseCardText) {\n const texts = _.isArray(responseCardText) ? _.flattenDeep(responseCardText) : [responseCardText]\n if (texts.length > 1) {\n debug(`more than one text found for card: ${util.inspect(texts)}`)\n }\n if (texts.length > 0) {\n return texts[0]\n }\n }\n }\n\n const media = _retrieveMedia(jsonPathRoot, getAllCapValues(Capabilities.SIMPLEREST_MEDIA_JSONPATH, this.caps))\n debug(`found response media: ${util.inspect(media)}`)\n const buttons = _retrieveButtons(jsonPathRoot, getAllCapValues(Capabilities.SIMPLEREST_BUTTONS_JSONPATH, this.caps))\n debug(`found response buttons: ${util.inspect(buttons)}`)\n const cards = []\n\n const jsonPathsCards = getAllCapValues(Capabilities.SIMPLEREST_CARDS_JSONPATH, this.caps)\n jsonPathsCards.forEach(jsonPath => {\n const responseCards = jp.query(jsonPathRoot, jsonPath)\n if (responseCards) {\n (_.isArray(responseCards) ? _.flattenDeep(responseCards) : [responseCards]).forEach(c => {\n const card = {}\n\n const jsonPathsCardText = getAllCapValues(Capabilities.SIMPLEREST_CARD_TEXT_JSONPATH, this.caps)\n jsonPathsCardText.forEach(jsonPath => {\n card.text = _getCardText(jp.query(c, jsonPath))\n })\n\n const jsonPathsCardSubText = getAllCapValues(Capabilities.SIMPLEREST_CARD_SUBTEXT_JSONPATH, this.caps)\n jsonPathsCardSubText.forEach(jsonPath => {\n card.subtext = _getCardText(jp.query(c, jsonPath))\n })\n\n card.buttons = _retrieveButtons(c, getAllCapValues(Capabilities.SIMPLEREST_CARD_BUTTONS_JSONPATH, this.caps))\n card.media = _retrieveMedia(c, getAllCapValues(Capabilities.SIMPLEREST_CARD_ATTACHMENTS_JSONPATH, this.caps))\n\n if (_.keys(card).length > 0) {\n cards.push(card)\n }\n })\n }\n })\n debug(`found response cards: ${util.inspect(cards)}`)\n\n let hasMessageText = false\n const jsonPathsTexts = getAllCapValues(Capabilities.SIMPLEREST_RESPONSE_JSONPATH, this.caps)\n for (const jsonPath of jsonPathsTexts) {\n debug(`eval json path ${jsonPath}`)\n\n const responseTexts = jp.query(jsonPathRoot, jsonPath)\n debug(`found response texts: ${util.inspect(responseTexts)}`)\n\n const messageTexts = (_.isArray(responseTexts) ? _.flattenDeep(responseTexts) : [responseTexts])\n for (const [messageTextIndex, messageText] of messageTexts.entries()) {\n if (!messageText) continue\n\n hasMessageText = true\n const botMsg = { sourceData: body, messageText, media, buttons, cards }\n await executeHook(this.caps, this.responseHook, Object.assign({ botMsg, botMsgRoot: jsonPathRoot, messageTextIndex }, this.view))\n result.push(botMsg)\n }\n }\n\n if (!hasMessageText) {\n const botMsg = { messageText: '', sourceData: body, media, buttons, cards }\n const beforeHookKeys = Object.keys(botMsg)\n await executeHook(this.caps, this.responseHook, Object.assign({ botMsg, botMsgRoot: jsonPathRoot }, this.view))\n const afterHookKeys = Object.keys(botMsg)\n if (beforeHookKeys.length !== afterHookKeys.length || !!(botMsg.messageText && botMsg.messageText.length > 0) || botMsg.media.length > 0 || botMsg.buttons.length > 0 || botMsg.cards.length > 0 || !this.caps[Capabilities.SIMPLEREST_IGNORE_EMPTY]) {\n result.push(botMsg)\n }\n }\n }\n }\n return result\n }\n\n _doRequest (msg, isFromUser, updateContext) {\n return this._buildRequest(msg)\n .then((requestOptions) => new Promise((resolve, reject) => {\n debug(`constructed requestOptions ${JSON.stringify(requestOptions, null, 2)}`)\n msg.sourceData = msg.sourceData || {}\n msg.sourceData.requestOptions = requestOptions\n\n this.waitProcessQueue = []\n\n request(requestOptions, async (err, response, body) => {\n if (err) {\n return reject(new Error(`rest request failed: ${err.message}`))\n } else {\n if (response.statusCode >= 400) {\n debug(`got error response: ${response.statusCode}/${response.statusMessage}`)\n if (debug.enabled && body) {\n debug(botiumUtils.shortenJsonString(body))\n }\n if (body) {\n const jsonBody = botiumUtils.toJsonWeak(body)\n const errKey = Object.keys(jsonBody).find(k => k.startsWith('err') || k.startsWith('fail'))\n if (errKey) {\n return reject(new BotiumError(`got error response: ${response.statusCode}/${response.statusMessage} - ${jsonBody[errKey]}`, {\n message: botiumUtils.shortenJsonString(body)\n }))\n }\n }\n return reject(new Error(`got error response: ${response.statusCode}/${response.statusMessage}`))\n }\n\n if (body) {\n debug(`got response code: ${response.statusCode}, body: ${botiumUtils.shortenJsonString(body)}`)\n\n try {\n body = await this._parseResponseBody(body)\n } catch (err) {\n debug(`ignoring not JSON formatted response body: ${err.message}`)\n resolve(this)\n this._emptyWaitProcessQueue()\n return\n }\n\n if (body) {\n this._processBodyAsync(body, isFromUser, updateContext).then(() => resolve(this)).then(() => this._emptyWaitProcessQueue())\n } else {\n debug('ignoring response body (no string and no JSON object)')\n resolve(this)\n this._emptyWaitProcessQueue()\n }\n } else {\n debug(`got response code: ${response.statusCode}, empty body`)\n resolve(this)\n this._emptyWaitProcessQueue()\n }\n }\n })\n }))\n }\n\n async _buildRequest (msg) {\n this.view.msg = Object.assign({}, msg)\n\n const nonEncodedMessage = this.view.msg.messageText\n\n this.view.msg.messageText = nonEncodedMessage && encodeURIComponent(nonEncodedMessage)\n\n if (this.caps[Capabilities.SIMPLEREST_STEP_ID_TEMPLATE]) {\n this.view.botium.stepId = this._getMustachedCap(Capabilities.SIMPLEREST_STEP_ID_TEMPLATE, false)\n } else {\n this.view.botium.stepId = uuidv4()\n }\n\n const uri = this._getMustachedCap(Capabilities.SIMPLEREST_URL, false)\n const timeout = this._getCapValue(Capabilities.SIMPLEREST_TIMEOUT)\n\n const requestOptions = {\n uri,\n method: this._getCapValue(Capabilities.SIMPLEREST_VERB) || this._getCapValue(Capabilities.SIMPLEREST_METHOD),\n followAllRedirects: true,\n timeout\n }\n\n if (this.caps[Capabilities.SIMPLEREST_HEADERS_TEMPLATE]) {\n this.view.msg.messageText = nonEncodedMessage\n try {\n requestOptions.headers = this._getMustachedCap(Capabilities.SIMPLEREST_HEADERS_TEMPLATE, true)\n } catch (err) {\n throw new Error(`composing headers from SIMPLEREST_HEADERS_TEMPLATE failed (${err.message})`)\n }\n }\n if (this.caps[Capabilities.SIMPLEREST_BODY_TEMPLATE]) {\n const bodyRaw = this._getCapValue(Capabilities.SIMPLEREST_BODY_RAW)\n if (bodyRaw) {\n this.view.msg.messageText = nonEncodedMessage\n } else {\n this.view.msg.messageText = nonEncodedMessage && escapeJSONString(nonEncodedMessage)\n }\n try {\n requestOptions.body = this._getMustachedCap(Capabilities.SIMPLEREST_BODY_TEMPLATE, !bodyRaw)\n requestOptions.json = !bodyRaw\n } catch (err) {\n throw new Error(`composing body from SIMPLEREST_BODY_TEMPLATE failed (${err.message})`)\n }\n }\n this.view.msg.messageText = nonEncodedMessage\n\n if (msg.ADD_QUERY_PARAM && Object.keys(msg.ADD_QUERY_PARAM).length > 0) {\n const appendToUri = Object.keys(msg.ADD_QUERY_PARAM).map(key =>\n `${encodeURIComponent(key)}=${encodeURIComponent(this._getMustachedVal(\n _.isString(msg.ADD_QUERY_PARAM[key]) ? msg.ADD_QUERY_PARAM[key] : JSON.stringify(msg.ADD_QUERY_PARAM[key]),\n false))}`)\n .join('&')\n if (requestOptions.uri.indexOf('?') > 0) {\n requestOptions.uri = `${requestOptions.uri}&${appendToUri}`\n } else {\n requestOptions.uri = `${requestOptions.uri}?${appendToUri}`\n }\n }\n if (msg.ADD_FORM_PARAM && Object.keys(msg.ADD_FORM_PARAM).length > 0) {\n requestOptions.form = {}\n for (const formKey of Object.keys(msg.ADD_FORM_PARAM)) {\n const formValue = this._getMustachedVal(\n _.isString(msg.ADD_FORM_PARAM[formKey]) ? msg.ADD_FORM_PARAM[formKey] : JSON.stringify(msg.ADD_FORM_PARAM[formKey]),\n false)\n requestOptions.form[formKey] = formValue\n }\n }\n if (msg.ADD_HEADER && Object.keys(msg.ADD_HEADER).length > 0) {\n requestOptions.headers = requestOptions.headers || {}\n\n for (const headerKey of Object.keys(msg.ADD_HEADER)) {\n let headerValue\n if (_.isString(msg.ADD_HEADER[headerKey])) {\n headerValue = this._getMustachedVal(msg.ADD_HEADER[headerKey], false)\n } else {\n headerValue = this._getMustachedVal(JSON.stringify(msg.ADD_HEADER[headerKey]), true)\n }\n requestOptions.headers[headerKey] = headerValue\n }\n }\n this._addRequestOptions(requestOptions)\n\n await executeHook(this.caps, this.requestHook, Object.assign({ requestOptions }, this.view))\n\n return requestOptions\n }\n\n async _waitForUrlResponse (pingConfig, retries) {\n const timeout = ms => new Promise(resolve => setTimeout(resolve, ms))\n\n let tries = 0\n\n while (true) {\n debug(`_waitForUrlResponse checking url ${pingConfig.uri} before proceed`)\n if (tries > retries) {\n throw new Error(`Failed to ping bot after ${retries} retries`)\n }\n tries++\n const { err, response, body } = await this.bottleneck(() => new Promise((resolve) => {\n request(pingConfig, (err, response, body) => {\n resolve({ err, response, body })\n })\n }))\n if (err) {\n debug(`_waitForUrlResponse error on url check ${pingConfig.uri}: ${err}`)\n await timeout(pingConfig.timeout)\n } else if (response.statusCode >= 400) {\n debug(`_waitForUrlResponse on url check ${pingConfig.uri} got error response: ${response.statusCode}/${response.statusMessage}`)\n if (debug.enabled && body) {\n debug(botiumUtils.shortenJsonString(body))\n }\n await timeout(pingConfig.timeout)\n } else {\n debug(`_waitForUrlResponse success on url check ${pingConfig.uri}: ${response.statusCode}/${response.statusMessage}`)\n if (debug.enabled && body) {\n debug(botiumUtils.shortenJsonString(body))\n }\n return body\n }\n }\n }\n\n async _parseResponseBody (body) {\n if (!_.isObject(body) && _.isString(body)) {\n try {\n body = JSON.parse(body)\n } catch (err) {\n if (!this.parserHook) throw err\n }\n }\n if (this.parserHook) {\n await executeHook(this.caps, this.parserHook, Object.assign({ body, changeBody: (b) => { body = b } }, this.view))\n }\n if (_.isObject(body)) return body\n else if (_.isString(body)) return JSON.parse(body)\n else return null\n }\n\n _getCapValue (capName) {\n return _.isFunction(this.caps[capName]) ? (this.caps[capName])() : this.caps[capName]\n }\n\n _getMustachedCap (capName, json) {\n const capValue = this._getCapValue(capName)\n const template = _.isString(capValue) ? capValue : JSON.stringify(capValue)\n return this._getMustachedVal(template, json)\n }\n\n _getMustachedVal (template, json) {\n const raw = Mustache.render(template, this.view)\n if (json) {\n try {\n return JSON.parse(raw)\n } catch (err) {\n return new Error(`JSON parsing failed - try to use {{#fnc.jsonify}}{{xxx}}{{/fnc.jsonify}} to escape JSON special characters (ERR: ${err.message})`)\n }\n } else {\n return raw\n }\n }\n\n _processInboundEvent (event) {\n if (!this.processInbound) return\n\n const jsonPathValue = this.caps[Capabilities.SIMPLEREST_INBOUND_SELECTOR_VALUE]\n const jsonPathsSelector = getAllCapValues(Capabilities.SIMPLEREST_INBOUND_SELECTOR_JSONPATH, this.caps)\n if (jsonPathsSelector && jsonPathsSelector.length > 0) {\n let isSelected = false\n for (const jsonPathTemplate of jsonPathsSelector) {\n const jsonPath = this._getMustachedVal(jsonPathTemplate, false)\n const hasResult = jp.query(event, jsonPath)\n if (hasResult && hasResult.length > 0) {\n const check = jsonPathValue && this._getMustachedVal(jsonPathValue, false)\n if (check) {\n if (`${hasResult[0]}` === `${check}`) {\n isSelected = true\n break\n }\n } else {\n isSelected = true\n break\n }\n }\n }\n if (!isSelected) return\n }\n\n debug(`Received an inbound message: ${JSON.stringify(event)}`)\n if (this.caps[Capabilities.SIMPLEREST_INBOUND_ORDER_UNSETTLED_EVENTS_JSONPATH]) {\n this.inboundEvents.push(event)\n this._processOrderedInboundEventsArrayAsync()\n } else {\n setTimeout(() => this._processBodyAsync(event.body, true, !!this.caps[Capabilities.SIMPLEREST_INBOUND_UPDATE_CONTEXT]), 0)\n }\n }\n\n async _buildInbound () {\n if (this.caps[Capabilities.SIMPLEREST_INBOUND_REDISURL] && this.caps[Capabilities.SIMPLEREST_INBOUND_SELECTOR_JSONPATH] && this.caps[Capabilities.SIMPLEREST_INBOUND_SELECTOR_VALUE]) {\n this.redis = new Redis(this.caps[Capabilities.SIMPLEREST_INBOUND_REDISURL])\n this.redis.on('connect', () => {\n debug(`Redis connected to ${JSON.stringify(this.caps[Capabilities.SIMPLEREST_INBOUND_REDISURL] || 'default')}`)\n })\n this.redis.on('message', (channel, event) => {\n if (!_.isString(event)) {\n return debug(`WARNING: received non-string message from ${channel}, ignoring: ${event}`)\n }\n try {\n event = JSON.parse(event)\n } catch (err) {\n return debug(`WARNING: received non-json message from ${channel}, ignoring: ${event}`)\n }\n this._processInboundEvent(event)\n })\n } else if (this.caps[Capabilities.SIMPLEREST_INBOUND_PORT]) {\n this.proxy = await startProxy({\n port: this.caps[Capabilities.SIMPLEREST_INBOUND_PORT],\n endpoint: this.caps[Capabilities.SIMPLEREST_INBOUND_ENDPOINT],\n processEvent: (event) => {\n if (this.processingEvents) {\n debug('Got Inbound Event:')\n debug(JSON.stringify(event, null, 2))\n this._processInboundEvent(event)\n }\n }\n })\n }\n }\n\n async _subscribeInbound () {\n this.processingEvents = true\n if (this.redis) {\n try {\n const count = await this.redis.subscribe(this.redisTopic)\n debug(`Redis subscribed to ${count} channels. Listening for inbound messages on the ${this.redisTopic} channel.`)\n } catch (err) {\n debug(err)\n throw new Error(`Redis failed to subscribe channel ${this.redisTopic}: ${err.message || err}`)\n }\n }\n }\n\n async _unsubscribeInbound () {\n this.processingEvents = false\n if (this.redis) {\n try {\n await this.redis.unsubscribe(this.redisTopic)\n debug(`Redis unsubscribed from ${this.redisTopic} channel.`)\n } catch (err) {\n debug(err)\n throw new Error(`Redis failed to unsubscribe channel ${this.redisTopic}: ${err.message || err}`)\n }\n }\n }\n\n async _cleanInbound () {\n if (this.redis) {\n this.redis.disconnect()\n this.redis = null\n }\n if (this.proxy) {\n this.proxy.close()\n this.proxy = null\n }\n }\n\n async _runPolling () {\n if (!this.processInbound) return\n\n if (this.caps[Capabilities.SIMPLEREST_POLL_URL]) {\n const uri = this._getMustachedCap(Capabilities.SIMPLEREST_POLL_URL, false)\n const verb = this._getCapValue(Capabilities.SIMPLEREST_POLL_VERB)\n const timeout = this._getCapValue(Capabilities.SIMPLEREST_POLL_TIMEOUT)\n const pollConfig = {\n method: verb,\n uri: uri,\n followAllRedirects: true,\n timeout: timeout\n }\n if (this.caps[Capabilities.SIMPLEREST_POLL_HEADERS]) {\n try {\n pollConfig.headers = this._getMustachedCap(Capabilities.SIMPLEREST_POLL_HEADERS, true)\n } catch (err) {\n debug(`_runPolling: composing headers from SIMPLEREST_POLL_HEADERS failed (${err.message})`)\n return\n }\n }\n if (this.caps[Capabilities.SIMPLEREST_POLL_BODY]) {\n const bodyRaw = this._getCapValue(Capabilities.SIMPLEREST_POLL_BODY_RAW)\n try {\n pollConfig.body = this._getMustachedCap(Capabilities.SIMPLEREST_POLL_BODY, !bodyRaw)\n pollConfig.json = !bodyRaw\n } catch (err) {\n debug(`_runPolling: composing body from SIMPLEREST_POLL_BODY failed (${err.message})`)\n return\n }\n }\n this._addRequestOptions(pollConfig)\n\n try {\n await executeHook(this.caps, this.pollRequestHook, Object.assign({ requestOptions: pollConfig }, this.view))\n } catch (err) {\n debug(`_runPolling: exeucting request hook failed - (${err.message})`)\n return\n }\n request(pollConfig, async (err, response, body) => {\n if (err) {\n debug(`_runPolling: rest request failed: ${err.message}, request: ${JSON.stringify(pollConfig)}`)\n } else {\n if (response.statusCode >= 400) {\n debug(`_runPolling: got error response: ${response.statusCode}/${response.statusMessage}, request: ${JSON.stringify(pollConfig)}`)\n if (debug.enabled && body) {\n debug(botiumUtils.shortenJsonString(body))\n }\n } else if (body) {\n debug(`_runPolling: got response code: ${response.statusCode}, body: ${botiumUtils.shortenJsonString(body)}`)\n\n try {\n body = await this._parseResponseBody(body)\n } catch (err) {\n debug(`_runPolling: ignoring not JSON formatted response body: ${err.message}`)\n return\n }\n if (body) {\n setTimeout(() => this._processBodyAsync(body, true, !!this.caps[Capabilities.SIMPLEREST_POLL_UPDATE_CONTEXT]), 0)\n } else {\n debug('_runPolling: ignoring response body (no string and no JSON object)')\n }\n } else {\n debug(`_runPolling: got response code: ${response.statusCode}, empty body`)\n }\n }\n })\n }\n }\n\n async _startPolling () {\n if (this.caps[Capabilities.SIMPLEREST_POLL_URL]) {\n this.pollInterval = setInterval(this._runPolling.bind(this), this.caps[Capabilities.SIMPLEREST_POLL_INTERVAL])\n debug(`Started HTTP polling for inbound messages on ${this.caps[Capabilities.SIMPLEREST_POLL_URL]}, interval: ${this.caps[Capabilities.SIMPLEREST_POLL_INTERVAL]}.`)\n }\n }\n\n async _stopPolling () {\n if (this.pollInterval) {\n clearInterval(this.pollInterval)\n this.pollInterval = null\n debug(`Stopped HTTP polling for inbound messages on ${this.caps[Capabilities.SIMPLEREST_POLL_URL]}.`)\n }\n }\n\n async _makeCall (capPrefix) {\n const uri = this._getMustachedCap(`${capPrefix}_URL`, false)\n const verb = this._getCapValue(`${capPrefix}_VERB`)\n const timeout = this._getCapValue(`${capPrefix}_TIMEOUT`) || this._getCapValue(Capabilities.SIMPLEREST_TIMEOUT)\n const httpConfig = {\n method: verb,\n uri: uri,\n followAllRedirects: true,\n timeout: timeout\n }\n if (this.caps[`${capPrefix}_HEADERS`]) {\n try {\n httpConfig.headers = this._getMustachedCap(`${capPrefix}_HEADERS`, true)\n } catch (err) {\n throw new Error(`composing headers from ${capPrefix}_HEADERS failed (${err.message})`)\n }\n }\n if (this.caps[`${capPrefix}_BODY`]) {\n const bodyRaw = this._getCapValue(`${capPrefix}_BODY_RAW`)\n try {\n httpConfig.body = this._getMustachedCap(`${capPrefix}_BODY`, !bodyRaw)\n httpConfig.json = !bodyRaw\n } catch (err) {\n throw new Error(`composing body from ${capPrefix}_BODY failed (${err.message})`)\n }\n }\n this._addRequestOptions(httpConfig)\n\n await executeHook(this.caps, this.requestHooks[capPrefix], Object.assign({ requestOptions: httpConfig }, this.view))\n\n const retries = this._getCapValue(`${capPrefix}_RETRIES`)\n debug(`_makeCall(${capPrefix}): rest request: ${JSON.stringify(httpConfig)}`)\n const response = await this._waitForUrlResponse(httpConfig, retries)\n return response\n }\n\n _addRequestOptions (httpConfig) {\n httpConfig.strictSSL = !!this.caps[Capabilities.SIMPLEREST_STRICT_SSL]\n if (this.caps[Capabilities.SIMPLEREST_PROXY_URL]) {\n httpConfig.proxy = this.caps[Capabilities.SIMPLEREST_PROXY_URL]\n }\n if (this.caps[Capabilities.SIMPLEREST_EXTRA_OPTIONS]) {\n _.merge(httpConfig, this.caps[Capabilities.SIMPLEREST_EXTRA_OPTIONS])\n }\n }\n}\n","const path = require('path')\nconst fs = require('fs')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-connector-PluginConnectorContainer-helper')\n\nconst SimpleRestContainer = require('./SimpleRestContainer')\nconst Capabilities = require('../../Capabilities')\nconst { BotiumError } = require('../../scripting/BotiumError')\n\nconst pluginResolver = (containermode) => {\n if (containermode === 'simplerest') {\n return SimpleRestContainer\n }\n}\n\nconst getModuleVersionSafe = (required) => {\n try {\n const pckg = require(required + '/package.json')\n if (pckg.version === undefined) {\n return 'Not set'\n } else {\n return pckg.version\n }\n } catch (e) {\n if (e.code !== 'MODULE_NOT_FOUND') {\n return 'Unknown error while determining version'\n }\n return 'Unknown version'\n }\n}\n\nconst loadConnectorModule = (PluginClass, args) => {\n try {\n return new PluginClass(args)\n } catch (err) {\n }\n if (_.isFunction(PluginClass)) {\n const result = PluginClass(args)\n if (result && result.UserSays) {\n return result\n } else {\n return {\n UserSays: (msg) => {\n const response = PluginClass(msg, args)\n if (response && args.queueBotSays) {\n if (_.isString(response)) {\n setTimeout(() => args.queueBotSays({ messageText: response }), 0)\n } else {\n setTimeout(() => args.queueBotSays(response), 0)\n }\n }\n }\n }\n }\n } else {\n throw new Error('Botium Plugin is neither a class nor a function')\n }\n}\n\nconst tryLoadPlugin = (containermode, modulepath, args) => {\n const pluginLoaderSpec = modulepath || containermode\n const _checkUnsafe = (caps, mode, cause) => {\n if (!caps[Capabilities.SECURITY_ALLOW_UNSAFE]) {\n throw new BotiumError(\n `Security Error. Using unsafe connector mode \"${mode}\" is not allowed`,\n {\n type: 'security',\n subtype: 'allow unsafe',\n source: 'src/containers/plugins/index.js',\n cause: {\n SECURITY_ALLOW_UNSAFE: caps[Capabilities.SECURITY_ALLOW_UNSAFE],\n mode: mode,\n ...cause\n }\n }\n )\n }\n }\n\n if (pluginResolver(pluginLoaderSpec)) {\n const pluginInstance = new (pluginResolver(pluginLoaderSpec))(args)\n debug('Botium plugin loaded from internal plugin resolver')\n return pluginInstance\n }\n if (_.isFunction(pluginLoaderSpec)) {\n const pluginInstance = pluginLoaderSpec(args)\n debug('Botium plugin loaded from function call')\n return pluginInstance\n }\n const loadErr = []\n\n if (_.isString(pluginLoaderSpec)) {\n const tryLoadFile = path.resolve(process.cwd(), pluginLoaderSpec)\n if (fs.existsSync(tryLoadFile)) {\n _checkUnsafe(args.caps, 'Using work dir', { modulepath, containermode })\n try {\n let plugin = require(tryLoadFile)\n if (plugin.default) {\n plugin = plugin.default\n }\n if (!plugin.PluginVersion || !plugin.PluginClass) {\n loadErr.push(`Invalid Botium plugin loaded from ${tryLoadFile}, expected PluginVersion, PluginClass fields`)\n } else {\n const pluginInstance = loadConnectorModule(plugin.PluginClass, args)\n debug(`Botium plugin loaded from ${tryLoadFile}`)\n return pluginInstance\n }\n } catch (err) {\n loadErr.push(`Loading Botium plugin from ${tryLoadFile} failed - ${err.message}`)\n }\n }\n\n try {\n let plugin = require(pluginLoaderSpec)\n if (plugin.default) {\n plugin = plugin.default\n }\n if (!plugin.PluginVersion || !plugin.PluginClass) {\n loadErr.push(`Invalid Botium plugin loaded from ${pluginLoaderSpec}, expected PluginVersion, PluginClass fields`)\n } else {\n const pluginInstance = loadConnectorModule(plugin.PluginClass, args)\n debug(`Botium plugin loaded from ${pluginLoaderSpec}. Plugin version is ${getModuleVersionSafe(pluginLoaderSpec)}`)\n return pluginInstance\n }\n } catch (err) {\n loadErr.push(`Loading Botium plugin from ${pluginLoaderSpec} failed - ${err.message}`)\n }\n\n const tryLoadPackage = `botium-connector-${pluginLoaderSpec}`\n try {\n let plugin = require(tryLoadPackage)\n if (plugin.default) {\n plugin = plugin.default\n }\n if (!plugin.PluginVersion || !plugin.PluginClass) {\n loadErr.push(`Invalid Botium plugin ${tryLoadPackage}, expected PluginVersion, PluginClass fields`)\n } else {\n const pluginInstance = loadConnectorModule(plugin.PluginClass, args)\n debug(`Botium plugin ${tryLoadPackage} loaded. Plugin version is ${getModuleVersionSafe(tryLoadPackage)}`)\n return pluginInstance\n }\n } catch (err) {\n loadErr.push(`Loading Botium plugin ${tryLoadPackage} failed, try \"npm install ${tryLoadPackage}\" - ${err.message}`)\n }\n }\n throw new Error(`Loading Botium Plugin failed.\\r\\n${loadErr.join('\\r\\n')}`)\n}\n\nmodule.exports = {\n pluginResolver,\n getModuleVersionSafe,\n tryLoadPlugin\n}\n","const util = require('util')\nconst promiseRetry = require('promise-retry')\nconst debug = require('debug')('botium-connector-PluginConnectorContainer')\n\nconst Events = require('../Events')\nconst Capabilities = require('../Capabilities')\nconst BaseContainer = require('./BaseContainer')\nconst { tryLoadPlugin } = require('./plugins/index')\nconst RetryHelper = require('../helpers/RetryHelper')\n\nmodule.exports = class PluginConnectorContainer extends BaseContainer {\n async Validate () {\n await super.Validate()\n this.pluginInstance = tryLoadPlugin(\n this.caps[Capabilities.CONTAINERMODE],\n this.caps[Capabilities.PLUGINMODULEPATH],\n {\n container: this,\n queueBotSays: (msg) => this._QueueBotSays(msg),\n bottleneck: this.bottleneck,\n eventEmitter: this.eventEmitter,\n caps: this.caps,\n sources: this.sources,\n envs: this.envs\n })\n if (!this.pluginInstance) {\n throw new Error('Loading Botium plugin failed')\n }\n if (!this.pluginInstance.UserSays) {\n throw new Error('Invalid Botium plugin, expected UserSays function')\n }\n if (this.pluginInstance.Validate) {\n await this.pluginInstance.Validate()\n }\n this.retryHelperBuild = new RetryHelper(this.caps, 'BUILD')\n this.retryHelperStart = new RetryHelper(this.caps, 'START')\n this.retryHelperUserSays = new RetryHelper(this.caps, 'USERSAYS')\n this.retryHelperStop = new RetryHelper(this.caps, 'STOP')\n this.retryHelperClean = new RetryHelper(this.caps, 'CLEAN')\n }\n\n Build () {\n try {\n return super.Build().then(() => promiseRetry((retry, number) => {\n return (this.pluginInstance.Build ? (this.pluginInstance.Build() || Promise.resolve()) : Promise.resolve())\n .catch((err) => {\n if (this.retryHelperBuild.shouldRetry(err)) {\n debug(`Build trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, this.retryHelperBuild.retrySettings))\n .then(() => this)\n } catch (err) {\n return Promise.reject(new Error(`Build - Botium plugin failed: ${util.inspect(err)}`))\n }\n }\n\n Start () {\n this.eventEmitter.emit(Events.CONTAINER_STARTING, this)\n\n try {\n return super.Start().then(() => promiseRetry((retry, number) => {\n return (this.pluginInstance.Start ? (this.pluginInstance.Start() || Promise.resolve()) : Promise.resolve())\n .catch((err) => {\n if (this.retryHelperStart.shouldRetry(err)) {\n debug(`Start trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, this.retryHelperStart.retrySettings))\n .then((context) => {\n this.eventEmitter.emit(Events.CONTAINER_STARTED, this, context)\n return this\n }).catch((err) => {\n this.eventEmitter.emit(Events.CONTAINER_START_ERROR, this, err)\n throw err\n })\n } catch (err) {\n this.eventEmitter.emit(Events.CONTAINER_START_ERROR, this, err)\n return Promise.reject(new Error(`Start - Botium plugin failed: ${util.inspect(err)}`))\n }\n }\n\n UserSaysImpl (mockMsg) {\n try {\n return promiseRetry((retry, number) => {\n return (this.pluginInstance.UserSays(mockMsg) || Promise.resolve())\n .catch((err) => {\n if (this.retryHelperUserSays.shouldRetry(err)) {\n debug(`UserSays trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, this.retryHelperUserSays.retrySettings)\n .then(() => {\n this.eventEmitter.emit(Events.MESSAGE_SENTTOBOT, this, mockMsg)\n return this\n })\n } catch (err) {\n return Promise.reject(new Error(`UserSays - Botium plugin failed: ${util.inspect(err)}`))\n }\n }\n\n Stop () {\n this.eventEmitter.emit(Events.CONTAINER_STOPPING, this)\n\n try {\n return super.Stop().then(() => promiseRetry((retry, number) => {\n return (this.pluginInstance.Stop ? (this.pluginInstance.Stop() || Promise.resolve()) : Promise.resolve())\n .catch((err) => {\n if (this.retryHelperStop.shouldRetry(err)) {\n debug(`Stop trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, this.retryHelperStop.retrySettings))\n .then((context) => {\n this.eventEmitter.emit(Events.CONTAINER_STOPPED, this, context)\n return this\n }).catch((err) => {\n this.eventEmitter.emit(Events.CONTAINER_STOP_ERROR, this, err)\n throw err\n })\n } catch (err) {\n this.eventEmitter.emit(Events.CONTAINER_STOP_ERROR, this, err)\n return Promise.reject(new Error(`Stop - Botium plugin failed: ${util.inspect(err)}`))\n }\n }\n\n Clean () {\n this.eventEmitter.emit(Events.CONTAINER_CLEANING, this)\n try {\n return promiseRetry((retry, number) => {\n return (this.pluginInstance.Clean ? (this.pluginInstance.Clean() || Promise.resolve()) : Promise.resolve())\n .catch((err) => {\n if (this.retryHelperClean.shouldRetry(err)) {\n debug(`Clean trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, this.retryHelperClean.retrySettings)\n .then(() => super.Clean()).then(() => {\n this.eventEmitter.emit(Events.CONTAINER_CLEANED, this)\n return this\n }).catch((err) => {\n this.eventEmitter.emit(Events.CONTAINER_CLEAN_ERROR, this, err)\n throw err\n })\n } catch (err) {\n this.eventEmitter.emit(Events.CONTAINER_CLEAN_ERROR, this, err)\n return Promise.reject(new Error(`Clean - Botium plugin failed: ${util.inspect(err)}`))\n }\n }\n}\n","const util = require('util')\nconst fs = require('fs')\nconst path = require('path')\nconst async = require('async')\nconst rimraf = require('rimraf')\nconst mkdirp = require('mkdirp')\nconst sanitize = require('sanitize-filename')\nconst moment = require('moment')\nconst randomize = require('randomatic')\nconst _ = require('lodash')\nconst { boolean } = require('boolean')\nconst EventEmitter = require('events')\nconst debug = require('debug')('botium-core-BotDriver')\n\nconst { version } = require('../package.json')\n\nconst Defaults = require('./Defaults')\nconst Capabilities = require('./Capabilities')\nconst Source = require('./Source')\nconst Fluent = require('./Fluent')\nconst Events = require('./Events')\nconst ScriptingProvider = require('./scripting/ScriptingProvider')\n\nmodule.exports = class BotDriver {\n constructor (caps = {}, sources = {}, envs = {}) {\n this.eventEmitter = new EventEmitter()\n\n this.caps = _.cloneDeep(Defaults.Capabilities)\n this.sources = _.cloneDeep(Defaults.Sources)\n this.envs = _.cloneDeep(Defaults.Envs)\n\n this._fetchedConfigFiles = []\n this._fetchConfigFromFiles([\n './botium.json', process.env.NODE_ENV && `./botium.${process.env.NODE_ENV}.json`,\n './botium.local.json', process.env.NODE_ENV && `./botium.${process.env.NODE_ENV}.local.json`])\n\n const botiumConfigEnv = process.env.BOTIUM_CONFIG\n if (botiumConfigEnv) {\n const checkDir = path.dirname(botiumConfigEnv)\n const checkFileBase = path.basename(botiumConfigEnv, '.json')\n if (!this._fetchConfigFromFiles([\n botiumConfigEnv, process.env.NODE_ENV && path.join(checkDir, `${checkFileBase}.${process.env.NODE_ENV}.json`),\n path.join(checkDir, `${checkFileBase}.local.json`), process.env.NODE_ENV && path.join(checkDir, `${checkFileBase}.${process.env.NODE_ENV}.local.json`)\n ])) {\n throw new Error(`FAILED: Botium configuration file ${botiumConfigEnv} not available`)\n }\n }\n debug(`Loaded Botium configuration files ${this._fetchedConfigFiles.join(',')}`)\n\n const sourcesToTest = Object.keys(Source)\n\n Object.keys(process.env).filter(e => e.startsWith('BOTIUM_')).forEach((element) => {\n const elementToTest = element.replace(/^BOTIUM_/, '')\n if (sourcesToTest.includes(elementToTest)) {\n this._mergeCaps(this.sources, { [elementToTest]: process.env[element] })\n } else {\n this._mergeCaps(this.caps, { [elementToTest]: process.env[element] })\n }\n if (element.startsWith('BOTIUM_ENV_')) {\n const envName = element.replace(/^BOTIUM_ENV_/, '')\n this.envs[envName] = process.env[element]\n }\n })\n\n if (caps) this._mergeCaps(this.caps, caps)\n if (sources) this._mergeCaps(this.sources, sources)\n if (envs) this.envs = _.merge(this.envs, envs)\n }\n\n on (event, listener) {\n this.eventEmitter.on(event, listener)\n return this\n }\n\n setCapabilities (caps) {\n this._mergeCaps(this.caps, caps)\n return this\n }\n\n setCapability (cap, value) {\n this._mergeCaps(this.caps, { [cap]: value })\n return this\n }\n\n setSources (sources) {\n this._mergeCaps(this.sources, sources)\n return this\n }\n\n setSource (source, value) {\n this._mergeCaps(this.sources, { [source]: value })\n return this\n }\n\n setEnvs (envs) {\n this.envs = _.merge(this.envs, envs)\n return this\n }\n\n setEnv (name, value) {\n this.envs[name] = value\n return this\n }\n\n BuildFluent () {\n this.Fluent = new Fluent(this)\n return this.Fluent\n }\n\n Build () {\n debug(`Build - Botium Core Version: ${version}`)\n debug(`Build - Capabilites: ${JSON.stringify(_.pickBy(this.caps, (value, key) => Defaults.Capabilities[key] !== value), null, 2)}`)\n debug(`Build - Sources: ${JSON.stringify(_.pickBy(this.sources, (value, key) => Defaults.Sources[key] !== value), null, 2)}`)\n debug(`Build - Envs: ${JSON.stringify(_.pickBy(this.envs, (value, key) => Defaults.Envs[key] !== value), null, 2)}`)\n this.eventEmitter.emit(Events.CONTAINER_BUILDING)\n\n return new Promise((resolve, reject) => {\n let repo = null\n let container = null\n\n async.series([\n\n (driverValidated) => {\n this._validate()\n .then(() => driverValidated())\n .catch(driverValidated)\n },\n\n (repoValidated) => {\n try {\n repo = this._getRepo()\n } catch (err) {\n return repoValidated(err)\n }\n repo.Validate().then(() => repoValidated()).catch(repoValidated)\n },\n\n (repoPrepared) => {\n repo.Prepare().then(() => repoPrepared()).catch(repoPrepared)\n },\n\n (containerValidated) => {\n try {\n container = this._getContainer(repo)\n } catch (err) {\n return containerValidated(err)\n }\n container.Validate().then(() => containerValidated()).catch(containerValidated)\n },\n\n (containerBuilt) => {\n container.Build().then(() => containerBuilt()).catch(containerBuilt)\n }\n\n ], (err) => {\n if (err) {\n debug(`BotDriver Build error: ${err}`)\n this.eventEmitter.emit(Events.CONTAINER_BUILD_ERROR, err)\n if (this.tempDirectory) {\n rimraf(this.tempDirectory, (err) => {\n if (err) debug(`Cleanup temp dir ${this.tempDirectory} failed: ${util.inspect(err)}`)\n })\n }\n return reject(err)\n }\n this.eventEmitter.emit(Events.CONTAINER_BUILT, container)\n resolve(container)\n })\n })\n }\n\n BuildCompiler () {\n try {\n const compiler = new ScriptingProvider(this.caps)\n compiler.Build()\n return compiler\n } catch (err) {\n debug(`BotDriver BuildCompiler error: ${err}`)\n throw err\n }\n }\n\n /* Private Functions */\n\n // loadConfig from files\n _loadConfigFile (filename) {\n try {\n const configJson = JSON.parse(fs.readFileSync(filename))\n if (configJson.botium) {\n if (configJson.botium.Capabilities) this._mergeCaps(this.caps, configJson.botium.Capabilities)\n if (configJson.botium.Sources) this._mergeCaps(this.sources, configJson.botium.Sources)\n if (configJson.botium.Envs) this._mergeCaps(this.envs, configJson.botium.Envs)\n return true\n } else {\n debug(`Botium configuration file ${filename} contains no botium configuration. Ignored.`)\n return false\n }\n } catch (err) {\n throw new Error(`FAILED: loading Botium configuration file ${filename}: ${util.inspect(err)}`)\n }\n }\n\n // fetches config from files ordered by priority later files overwrite previous\n _fetchConfigFromFiles (files) {\n const fetchedFiles = []\n for (const file of files) {\n if (file && fs.existsSync(file)) {\n const absFilePath = path.resolve(file)\n if (this._fetchedConfigFiles.indexOf(absFilePath) < 0) {\n this._loadConfigFile(file)\n fetchedFiles.push(file)\n this._fetchedConfigFiles.push(absFilePath)\n } else {\n fetchedFiles.push(file)\n }\n }\n }\n return fetchedFiles\n }\n\n _findKeyProperty (obj) {\n const lookup = ['id', 'ID', 'Id', 'ref', 'REF', 'Ref', 'name', 'NAME', 'Name']\n for (const checkPropIdx in lookup) {\n if (Object.prototype.hasOwnProperty.call(obj, lookup[checkPropIdx])) return lookup[checkPropIdx]\n }\n }\n\n _mergeCaps (caps, newCaps) {\n if (!caps) return\n Object.keys(newCaps).forEach(capKey => {\n if (!Object.prototype.hasOwnProperty.call(caps, capKey)) {\n if (_.isString(newCaps[capKey])) {\n try {\n caps[capKey] = JSON.parse(newCaps[capKey])\n if (_.isFinite(caps[capKey])) {\n caps[capKey] = caps[capKey].toString()\n }\n } catch (err) {\n caps[capKey] = newCaps[capKey]\n }\n } else {\n caps[capKey] = newCaps[capKey]\n }\n return\n }\n\n if (_.isArray(caps[capKey])) {\n let newCapArray = newCaps[capKey]\n if (!_.isArray(newCapArray)) {\n try {\n newCapArray = JSON.parse(newCapArray)\n } catch (err) {\n debug(`Expected JSON Array in capability ${capKey}, JSON parse failed (${err}). Capability will be overwritten with maybe unexpected side effects.`)\n }\n }\n if (_.isArray(newCapArray)) {\n newCapArray.forEach(capElement => {\n const mergeKey = this._findKeyProperty(capElement)\n if (mergeKey) {\n const oldElement = caps[capKey].find(oldElement => oldElement[mergeKey] && oldElement[mergeKey] === capElement[mergeKey])\n if (oldElement) {\n _.merge(oldElement, capElement)\n return\n }\n caps[capKey].push(capElement)\n } else {\n if (caps[capKey].indexOf(capElement) < 0) {\n caps[capKey].push(capElement)\n }\n }\n })\n return\n }\n }\n if (!_.isArray(caps[capKey]) && _.isObject(caps[capKey])) {\n let newCapObject = newCaps[capKey]\n if (!_.isObject(newCapObject)) {\n try {\n newCapObject = JSON.parse(newCapObject)\n } catch (err) {\n debug(`Expected JSON Object in capability ${capKey}, JSON parse failed (${err}). Capability will be overwritten with maybe unexpected side effects.`)\n }\n }\n if (_.isObject(newCapObject)) {\n _.merge(caps[capKey], newCapObject)\n return\n }\n }\n\n if (_.isBoolean(caps[capKey])) {\n if (!_.isBoolean(newCaps[capKey])) {\n caps[capKey] = boolean(newCaps[capKey])\n return\n }\n }\n\n caps[capKey] = newCaps[capKey]\n })\n }\n\n _validate () {\n return new Promise((resolve, reject) => {\n try {\n if (!this.caps[Capabilities.PROJECTNAME]) {\n throw new Error(`Capability property ${Capabilities.PROJECTNAME} not set`)\n }\n if (!this.caps[Capabilities.TEMPDIR]) {\n throw new Error(`Capability property ${Capabilities.TEMPDIR} not set`)\n }\n if (!this.caps[Capabilities.CONTAINERMODE] && !this.caps[Capabilities.BOTIUMGRIDURL]) {\n throw new Error(`Capability '${Capabilities.CONTAINERMODE}' or '${Capabilities.BOTIUMGRIDURL}' missing`)\n }\n\n this.tempDirectory = path.resolve(process.cwd(), this.caps[Capabilities.TEMPDIR], sanitize(`${this.caps[Capabilities.PROJECTNAME]} ${moment().format('YYYYMMDD HHmmss')} ${randomize('Aa0', 5)}`))\n try {\n mkdirp.sync(this.tempDirectory)\n } catch (err) {\n throw new Error(`Unable to create temp directory ${this.tempDirectory}: ${err}`)\n }\n resolve(this)\n } catch (err) {\n reject(err)\n }\n })\n }\n\n _getRepo () {\n if (this.caps[Capabilities.BOTIUMGRIDURL]) {\n const NoRepo = require('./repos/NoRepo')\n return new NoRepo(this.tempDirectory, this.sources)\n }\n if (this.sources[Source.GITURL]) {\n const GitRepo = require('./repos/GitRepo')\n return new GitRepo(this.tempDirectory, this.sources)\n }\n if (this.sources[Source.LOCALPATH]) {\n const LocalRepo = require('./repos/LocalRepo')\n return new LocalRepo(this.tempDirectory, this.sources)\n }\n throw new Error(`No Repo provider found for Sources ${util.inspect(this.sources)}`)\n }\n\n _getContainer (repo) {\n if (this.caps[Capabilities.BOTIUMGRIDURL]) {\n const GridContainer = require('./containers/GridContainer')\n return new GridContainer(this.eventEmitter, this.tempDirectory, repo, this.caps, this.envs)\n }\n if (!this.caps[Capabilities.CONTAINERMODE]) {\n throw new Error(`Capability '${Capabilities.CONTAINERMODE}' missing`)\n }\n if (this.caps[Capabilities.CONTAINERMODE] === 'inprocess') {\n const InProcessContainer = require('./containers/InProcessContainer')\n return new InProcessContainer(this.eventEmitter, this.tempDirectory, repo, this.caps, this.envs)\n }\n const PluginConnectorContainer = require('./containers/PluginConnectorContainer')\n return new PluginConnectorContainer(this.eventEmitter, this.tempDirectory, repo, this.caps, this.envs)\n }\n}\n","const path = require('path')\nconst fs = require('fs')\nconst debug = require('debug')('botium-core-Plugins')\n\nconst PLUGIN_TYPE_CONNECTOR = 'PLUGIN_TYPE_CONNECTOR'\nconst PLUGIN_TYPE_ASSERTER = 'PLUGIN_TYPE_ASSERTER'\nconst PLUGIN_TYPE_LOGICHOOK = 'PLUGIN_TYPE_LOGICHOOK'\nconst PLUGIN_TYPE_USERINPUT = 'PLUGIN_TYPE_USERINPUT'\n\nconst TYPE_TO_PREFIX = {\n PLUGIN_TYPE_CONNECTOR: 'botium-connector-',\n PLUGIN_TYPE_ASSERTER: 'botium-asserter-',\n PLUGIN_TYPE_LOGICHOOK: 'botium-logichook-',\n PLUGIN_TYPE_USERINPUT: 'botium-userinput-'\n}\n\nconst TYPE_TO_COMPONENT_TYPE = {\n PLUGIN_TYPE_ASSERTER: 'ASSERTER',\n PLUGIN_TYPE_LOGICHOOK: 'LOGICHOOK',\n PLUGIN_TYPE_USERINPUT: 'USERINPUT'\n}\n\nconst getConnectorPlugin = (filename, pathToRes) => {\n let PluginType = null\n if (filename.toLowerCase().startsWith(TYPE_TO_PREFIX[PLUGIN_TYPE_CONNECTOR])) {\n PluginType = PLUGIN_TYPE_CONNECTOR\n try {\n const plugin = require(filename)\n const pluginPath = require.resolve(filename)\n if (!pluginPath.startsWith(pathToRes)) {\n debug(`Plugin mismatch error. Plugin ${path.resolve(pathToRes, filename)} loaded from ${pluginPath}! `)\n return null\n }\n if (!plugin.PluginVersion || !plugin.PluginClass) {\n debug(`Invalid Botium plugin loaded from ${filename}, expected PluginVersion, PluginClass fields`)\n return null\n }\n if (plugin.PluginType && plugin.PluginType !== PluginType) {\n debug(`Botium plugin loaded from ${filename}, but its type ${plugin.PluginType} is invalid, will be overwritten with ${PluginType}`)\n }\n\n let pluginNameFromFile = filename.substring(TYPE_TO_PREFIX[PLUGIN_TYPE_CONNECTOR].length)\n if (pluginNameFromFile.toLowerCase().endsWith('.js')) {\n pluginNameFromFile = pluginNameFromFile.substring(0, pluginNameFromFile.length - '.js'.length)\n }\n\n const PluginDesc = plugin.PluginDesc || {}\n return {\n PluginVersion: plugin.PluginVersion || '1',\n PluginType,\n PluginDesc: {\n ...PluginDesc,\n src: pluginNameFromFile\n }\n }\n } catch (err) {\n debug(`Loading Botium plugin from ${filename} failed - ${err.message}`)\n return null\n }\n }\n return null\n}\n\nconst getOtherPlugin = (filename, pathToRes, type) => {\n let PluginType = null\n if (type !== PLUGIN_TYPE_CONNECTOR && filename.toLowerCase().startsWith(TYPE_TO_PREFIX[type])) {\n PluginType = type\n }\n if (!PluginType) {\n return null\n }\n try {\n const plugin = require(filename)\n const pluginPath = require.resolve(filename)\n if (!pluginPath.startsWith(pathToRes)) {\n debug(`Plugin mismatch error. Plugin ${path.resolve(pathToRes, filename)} loaded from ${pluginPath}! `)\n return null\n }\n if (plugin.PluginType && plugin.PluginType !== PluginType) {\n debug(`Botium plugin loaded from ${filename}, but its type ${plugin.PluginType} is invalid, will be overwritten with ${PluginType}`)\n }\n\n let pluginName = filename.substring(TYPE_TO_PREFIX[type].length)\n if (pluginName.toLowerCase().endsWith('.js')) {\n pluginName = pluginName.substring(0, pluginName.length - '.js'.length)\n }\n\n const PluginDesc = plugin.PluginDesc || {}\n\n return {\n PluginVersion: plugin.PluginVersion || '1',\n PluginType,\n PluginDesc: {\n name: pluginName,\n description: PluginDesc.description,\n type: TYPE_TO_COMPONENT_TYPE[type],\n src: filename,\n ref: PluginDesc.ref || pluginName.toUpperCase(),\n global: PluginDesc.global || false,\n args: PluginDesc.args || '{}'\n }\n }\n } catch (err) {\n debug(`Loading Botium plugin from ${filename} failed - ${err.message}`)\n return null\n }\n}\n\nconst TYPE_TO_FN = {\n PLUGIN_TYPE_CONNECTOR: getConnectorPlugin,\n PLUGIN_TYPE_ASSERTER: getOtherPlugin,\n PLUGIN_TYPE_LOGICHOOK: getOtherPlugin,\n PLUGIN_TYPE_USERINPUT: getOtherPlugin\n}\n\nconst getPlugins = async (type, resourcesDir) => {\n if (!TYPE_TO_FN[type]) {\n debug(`Invalid plugin type \"${type}\"`)\n return Promise.resolve([])\n }\n\n const pathToRes = path.resolve(resourcesDir)\n if (!fs.existsSync(pathToRes)) {\n debug(`Cant load plugins, directory ${pathToRes} does not exists`)\n return []\n }\n let items\n try {\n items = fs.readdirSync(pathToRes)\n .filter(item => path.extname(item) === '.js' || item.indexOf('.') === -1)\n } catch (err) {\n debug(`Cant load plugins, failed to read directory ${pathToRes} - ${err.message}`)\n return []\n }\n\n const result = []\n const pluginNameToPlugin = {}\n for (let i = 0; i < items.length; i++) {\n const plugin = TYPE_TO_FN[type](items[i], pathToRes, type)\n if (plugin) {\n if (pluginNameToPlugin[plugin.PluginDesc.name]) {\n debug(`Dropping plugin ${JSON.stringify(plugin)} because name is reserved by ${JSON.stringify(pluginNameToPlugin[plugin.PluginDesc.name])}`)\n } else {\n result.push(plugin)\n pluginNameToPlugin[plugin.PluginDesc.name] = plugin\n }\n }\n }\n return result\n}\n\nmodule.exports = {\n getPlugins,\n PLUGIN_TYPE_CONNECTOR,\n PLUGIN_TYPE_ASSERTER,\n PLUGIN_TYPE_LOGICHOOK,\n PLUGIN_TYPE_USERINPUT,\n TYPE_TO_PREFIX\n}\n","module.exports = {\n BotDriver: require('./src/BotDriver'),\n ScriptingProvider: require('./src/scripting/ScriptingProvider'),\n ScriptingConstants: require('./src/scripting/Constants'),\n Capabilities: require('./src/Capabilities'),\n Defaults: require('./src/Defaults'),\n Enums: require('./src/Enums'),\n Source: require('./src/Source'),\n Events: require('./src/Events'),\n Plugins: require('./src/Plugins'),\n BotiumError: require('./src/scripting/BotiumError').BotiumError,\n ScriptingMemory: require('./src/scripting/ScriptingMemory'),\n HookUtils: require('./src/helpers/HookUtils'),\n LogicHookConstants: require('./src/scripting/logichook/LogicHookConsts'),\n Lib: {\n tryLoadPlugin: require('./src/containers/plugins/index').tryLoadPlugin,\n SimpleRestContainer: require('./src/containers/plugins/SimpleRestContainer')\n },\n InboundProxy: require('./src/grid/inbound/proxy'),\n BotiumMockRichMessageTypes: require('./src/mocks/BotiumMockRichMessageTypes')\n}\n"],"names":["PROJECTNAME","TESTSESSIONNAME","TESTCASENAME","TEMPDIR","CLEANUPTEMPDIR","WAITFORBOTTIMEOUT","CONTAINERMODE","PLUGINMODULEPATH","SIMULATE_WRITING_SPEED","BOTIUMGRIDURL","BOTIUMAPITOKEN","BOTIUMGRIDSLOT","SIMPLEREST_PING_URL","SIMPLEREST_PING_VERB","SIMPLEREST_PING_BODY","SIMPLEREST_PING_BODY_RAW","SIMPLEREST_PING_HEADERS","SIMPLEREST_PING_REQUEST_HOOK","SIMPLEREST_PING_RETRIES","SIMPLEREST_PING_TIMEOUT","SIMPLEREST_PING_UPDATE_CONTEXT","SIMPLEREST_PING_PROCESS_RESPONSE","SIMPLEREST_START_URL","SIMPLEREST_START_VERB","SIMPLEREST_START_BODY","SIMPLEREST_START_BODY_RAW","SIMPLEREST_START_HEADERS","SIMPLEREST_START_REQUEST_HOOK","SIMPLEREST_START_RETRIES","SIMPLEREST_START_TIMEOUT","SIMPLEREST_START_UPDATE_CONTEXT","SIMPLEREST_START_PROCESS_RESPONSE","SIMPLEREST_STOP_URL","SIMPLEREST_STOP_VERB","SIMPLEREST_STOP_BODY","SIMPLEREST_STOP_BODY_RAW","SIMPLEREST_STOP_HEADERS","SIMPLEREST_STOP_REQUEST_HOOK","SIMPLEREST_STOP_RETRIES","SIMPLEREST_STOP_TIMEOUT","SIMPLEREST_INIT_CONTEXT","SIMPLEREST_INIT_TEXT","SIMPLEREST_INIT_PROCESS_RESPONSE","SIMPLEREST_PROXY_URL","SIMPLEREST_STRICT_SSL","SIMPLEREST_URL","SIMPLEREST_EXTRA_OPTIONS","SIMPLEREST_IGNORE_EMPTY","SIMPLEREST_TIMEOUT","SIMPLEREST_METHOD","SIMPLEREST_VERB","SIMPLEREST_HEADERS_TEMPLATE","SIMPLEREST_BODY_TEMPLATE","SIMPLEREST_BODY_RAW","SIMPLEREST_START_HOOK","SIMPLEREST_STOP_HOOK","SIMPLEREST_REQUEST_HOOK","SIMPLEREST_PARSER_HOOK","SIMPLEREST_POLL_URL","SIMPLEREST_POLL_VERB","SIMPLEREST_POLL_BODY","SIMPLEREST_POLL_BODY_RAW","SIMPLEREST_POLL_HEADERS","SIMPLEREST_POLL_REQUEST_HOOK","SIMPLEREST_POLL_INTERVAL","SIMPLEREST_POLL_TIMEOUT","SIMPLEREST_POLL_UPDATE_CONTEXT","SIMPLEREST_BODY_JSONPATH","SIMPLEREST_RESPONSE_JSONPATH","SIMPLEREST_RESPONSE_HOOK","SIMPLEREST_MEDIA_JSONPATH","SIMPLEREST_BUTTONS_JSONPATH","SIMPLEREST_CARDS_JSONPATH","SIMPLEREST_CARD_TEXT_JSONPATH","SIMPLEREST_CARD_SUBTEXT_JSONPATH","SIMPLEREST_CARD_BUTTONS_JSONPATH","SIMPLEREST_CARD_ATTACHMENTS_JSONPATH","SIMPLEREST_CONTEXT_JSONPATH","SIMPLEREST_CONTEXT_MERGE_OR_REPLACE","SIMPLEREST_CONVERSATION_ID_TEMPLATE","SIMPLEREST_STEP_ID_TEMPLATE","SIMPLEREST_INBOUND_REDISURL","SIMPLEREST_INBOUND_ENDPOINT","SIMPLEREST_INBOUND_PORT","SIMPLEREST_INBOUND_SELECTOR_JSONPATH","SIMPLEREST_INBOUND_SELECTOR_VALUE","SIMPLEREST_INBOUND_UPDATE_CONTEXT","SIMPLEREST_REDIS_TOPIC","SIMPLEREST_INBOUND_ORDER_UNSETTLED_EVENTS_JSONPATH","SIMPLEREST_INBOUND_DEBOUNCE_TIMEOUT","SCRIPTING_TXT_EOL","SCRIPTING_XLSX_MODE","SCRIPTING_XLSX_EOL_WRITE","SCRIPTING_XLSX_STARTROW","SCRIPTING_XLSX_STARTCOL","SCRIPTING_XLSX_HASNAMECOL","SCRIPTING_XLSX_HASHEADERS","SCRIPTING_XLSX_SHEETNAMES","SCRIPTING_XLSX_SHEETNAMES_PCONVOS","SCRIPTING_XLSX_SHEETNAMES_UTTERANCES","SCRIPTING_XLSX_SHEETNAMES_SCRIPTING_MEMORY","SCRIPTING_CSV_DELIMITER","SCRIPTING_CSV_SKIP_HEADER","SCRIPTING_CSV_QUOTE","SCRIPTING_CSV_ESCAPE","SCRIPTING_CSV_MULTIROW_COLUMN_CONVERSATION_ID","SCRIPTING_CSV_MULTIROW_COLUMN_SENDER","SCRIPTING_CSV_MULTIROW_COLUMN_TEXT","SCRIPTING_CSV_QA_COLUMN_QUESTION","SCRIPTING_CSV_QA_COLUMN_ANSWER","SCRIPTING_NORMALIZE_TEXT","SCRIPTING_ENABLE_MEMORY","SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS","SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS","SCRIPTING_FORCE_BOT_CONSUMED","SCRIPTING_MATCHING_MODE","SCRIPTING_UTTEXPANSION_MODE","SCRIPTING_UTTEXPANSION_RANDOM_COUNT","SCRIPTING_UTTEXPANSION_INCOMPREHENSION","SCRIPTING_UTTEXPANSION_USENAMEASINTENT","SCRIPTING_UTTEXPANSION_NAMING_MODE","SCRIPTING_UTTEXPANSION_NAMING_UTTERANCE_MAX","SCRIPTING_MEMORYEXPANSION_KEEP_ORIG","SCRIPTING_MEMORY_MATCHING_MODE","SCRIPTING_MEMORY_COLUMN_MODE","CUSTOMHOOK_ONBUILD","CUSTOMHOOK_ONSTART","CUSTOMHOOK_ONUSERSAYS","CUSTOMHOOK_ONBOTRESPONSE","CUSTOMHOOK_ONSTOP","CUSTOMHOOK_ONCLEAN","ASSERTERS","LOGIC_HOOKS","USER_INPUTS","RATELIMIT_USERSAYS_MAXCONCURRENT","RATELIMIT_USERSAYS_MINTIME","RATELIMIT_BOTTLENECK_FN","SECURITY_ALLOW_UNSAFE","PRECOMPILERS","LOCALPATH","GITPATH","GITURL","GITBRANCH","GITDIR","GITPREPARECMD","Capabilities","Sources","Source","Envs","IS_BOTIUM_CONTAINER","Fluent","constructor","driver","compiler","container","currentChannel","tasks","push","Promise","resolve","reject","Build","then","catch","err","Exec","async","eachSeries","task","cb","taskResult","Start","SwitchChannel","channel","ReadScripts","convoDir","globFilter","BuildCompiler","ReadScriptsFromDirectory","Compile","scriptBuffer","scriptFormat","scriptType","RunScripts","assertCb","failCb","scriptingEvents","assertBotResponse","bind","fail","ExpandConvos","convos","convo","convoDone","Run","Stop","UserSaysText","msg","_","isFunction","UserSays","messageText","Object","assign","WaitBotSays","timeoutMillis","callback","botMsg","WaitBotSaysText","text","Restart","Clean","Call","customFunction","CONTAINER_BUILDING","CONTAINER_BUILT","CONTAINER_BUILD_ERROR","CONTAINER_STARTING","CONTAINER_STARTED","CONTAINER_START_ERROR","CONTAINER_STOPPING","CONTAINER_STOPPED","CONTAINER_STOP_ERROR","CONTAINER_CLEANING","CONTAINER_CLEANED","CONTAINER_CLEAN_ERROR","BOT_CONNECTED","MESSAGE_SENTTOBOT","MESSAGE_SENDTOBOT_ERROR","MESSAGE_RECEIVEDFROMBOT","MESSAGE_RECEIVEFROMBOT_ERROR","MESSAGE_ATTACHMENT","MESSAGE_TRANSCRIPT","TOOMUCHWORKERS_ERROR","BotiumError","Error","message","context","supressChildCheck","_getChildErrorsFromContext","name","captureStackTrace","isAsserterError","errArr","isArray","hasNotAsserterError","findIndex","errDetail","type","errors","e","prettify","includeJson","lines","forEach","segments","source","subtype","cause","expected","not","JSON","stringify","actual","join","input","transcript","length","transcriptStep","jsonOutput","jsonErr","botiumErrorFromErr","botiumErrorFromList","flat","map","toString","children","error","childErrors","concat","result","LOGIC_HOOK_INCLUDE","DEFAULT_ASSERTERS","className","DEFAULT_LOGIC_HOOKS","DEFAULT_USER_INPUTS","NodeVM","require$$0","debug","require$$1","require$$2","require$$3","asserter","Class","require","logicHook","userInput","LogicHookUtils","buildScriptContext","caps","asserters","globalAsserters","logicHooks","globalLogicHooks","userInputs","_setDefaultAsserters","_setDefaultLogicHooks","_setDefaultUserInputs","_fetchAsserters","_fetchLogicHooks","_fetchUserInputs","lh","ui","ref","_loadClass","global","getGlobalAsserter","getGlobalLogicHook","src","args","hookType","find","_checkUnsafe","path","basename","__filename","packageName","CheckClass","isClass","PluginClass","isObject","isString","hookObject","keys","reduce","key","script","vm","eval","sandbox","run","loadErr","tryLoads","tryLoadPackageName","tryLoadAsserterByName","indexOf","substr","lastIndexOf","tryLoadFromSource","tryRequire","tryAsserterName","default","PluginAsserters","PluginLogicHooks","tryLoad","tryLoadFile","process","cwd","fs","existsSync","SCRIPTING_FORMAT_XSLX","SCRIPTING_FORMAT_TXT","SCRIPTING_FORMAT_YAML","SCRIPTING_FORMAT_JSON","SCRIPTING_FORMAT_CSV","SCRIPTING_FORMAT_MARKDOWN","SCRIPTING_TYPE_CONVO","SCRIPTING_TYPE_PCONVO","SCRIPTING_TYPE_UTTERANCES","SCRIPTING_TYPE_SCRIPTING_MEMORY","BotiumMockAttachment","fromJson","mimeType","base64","href","BotiumMockMedia","mediaUri","altText","downloadUri","buffer","indent","sections","truncate","repeat","BotiumMockButton","payload","imageUri","BotiumMockCard","subtext","content","sourceData","image","buttons","a","media","forms","BotiumMockForm","cards","_prettifyLines","card","prettifySafe","entry","m","b","f","c","value","label","options","BotiumMockChoice","title","BotiumMockAsserter","cloneDeep","BotiumMockUserInput","BotiumMockLogicHook","BotiumMockMessage","sender","optional","nlp","sourceAction","attachments","slice","E_SCRIPTING_MEMORY_COLUMN_MODE","VARNAMES","TESTCASENAMES","normalizeText","str","doCleanup","replace","split","s","trim","splitStringInNonEmptyLines","filter","quoteRegexpString","removeBuffers","obj","jsonString","isBuffer","toLowerCase","startsWith","parse","isUndefined","undefined","isNumber","v","flatString","linesToConvoStep","eol","singleLineMode","validateSender","convoStep","textLinesRaw","textLines","textLinesAccepted","rawLine","logicLine","IsAsserterValid","IsUserInputValid","IsLogicHookValid","logichook","logicHookName","userinput","userInputName","pop","isJSON","optionalSet","Set","add","size","convoStepToObject","step","form","messageTextPrefix","cardTexts","mediaUr","validSenders","validateConvo","validationResult","i","conversation","has","nextStep","_decompileButton","buttonScript","convoStepToLines","l","linesToScriptingMemories","columnMode","guessScriptingMemoryColumnMode","scriptingMemories","caseNames","varNames","varValues","row","rawRow","caseIndex","caseName","values","agg","varName","varIndex","scriptingMemory","header","v1","uuidv1","require$$4","SCRIPTING_FUNCTIONS_RAW","$now","Date","toLocaleString","$now_EN","$now_DE","moment","format","$now_ISO","toISOString","$date","pattern","toLocaleDateString","$date_EN","$date_DE","$date_ISO","$time","toLocaleTimeString","$time_EN","$time_DE","$time_ISO","$time_HH_MM","$time_HH","$time_H_A","$timestamp","now","$year","getFullYear","$month","$month_MM","$day_of_month","getDate","$day_of_week","$random","randomize","$random10","$uniqid","$projectname","handler","$testsessionname","$testcasename","$env","env","numberOfArguments","unsafe","$cap","$msg","jsonPath","mockMsg","root","jp","query","$func","code","SCRIPTING_FUNCTIONS","mapValues","funcOrStruct","func","rest","functionName","RESERVED_WORDS","apply","_apply","applyToArgs","arg","_longestFirst","allKeys","sort","keyRegexp","RegExp","regex","matches","match","substring","extractVarNames","fill","utterance","util","inspect","varRegex","utterances","resolveUtterance","reExpected","varMatches","varMatchesRegexp","resultMatches","ConvoHeader","projectname","testsessionname","order","description","ConvoStepAssert","ConvoStepLogicHook","ConvoStepUserInput","ConvoStep","stepTag","hasInteraction","u","Transcript","steps","convoBegin","convoEnd","prettifyActual","prettifiedSteps","TranscriptStep","stepBegin","stepEnd","botBegin","botEnd","TranscriptError","Convo","beginAsserter","sourceTag","endAsserter","setConvoBeginAndEndAsserter","beginLogicHook","endLogicHook","setConvoBeginAndEndLogicHook","effectiveConversation","acc","val","onConvoBegin","assertConvoBegin","runConversation","_checkBotRepliesConsumed","onConvoEnd","assertConvoEndErr","assertConvoEnd","eventEmitter","emit","Events","transcriptSteps","lastMeConvoStep","waitForBotSays","skipTranscriptStep","currentStepIndex","meMsg","ScriptingMemory","WORKAROUND_OVERWRITE_JSON_MESSAGE_TEXT","setUserInput","onMeStart","onMePrepare","coreMsg","omit","setTimeout","isNull","onMeEnd","failErr","onBotStart","prepared","onBotPrepare","isErrorHandledWithOptionConvoStep","nextConvoStep","assertErrors","scriptingMemoryUpdate","response","_checkNormalizeText","tomatch","_resolveUtterancesToMatch","assertBotNotResponse","_compareObject","assertConvoStep","onBotEnd","transcriptStepErrs","forOwn","prototype","hasOwnProperty","call","GetScriptingMemoryAllVariables","resultOuter","GetScriptingMemoryVariables","extractFromArgs","convoStepItems","resultInner","item","queueLength","_QueueLength","normalizedUtterances","expandPartialConvos","_getIncludeLogicHookNames","hook","partialConvos","GetPartialConvos","_getEffectiveConversationRecursive","parentPConvos","ignoreBeginEnd","includeLogicHooks","steptagPath","includeLogicHook","alreadyThereAt","partialConvo","RetryHelper","section","retrySettings","retries","toUpperCase","factor","minTimeout","retryErrorPatterns","onErrorRegexp","r","shouldRetry","errString","re","_normalize","botresponse","regexp","ignoreCase","test","wildcard","numWildcards","utteranceRe","wildcardExact","include","equals","getMatchFunction","matchingMode","isStringJson","string","isJsonObject","json","stringIsJson","isJson","toJsonWeak","stringOrNot","optionalJson","body","shortenJsonString","escapeJSONString","character","formatTimeout","ms","Math","floor","_ensureList","queryResult","filename","endsWith","checkerJsonpath","CHECKER_JSONPATH","rootJsonpath","ROOT_JSONPATH","utteranceRefsJsonpath","UTTERANCE_REF_JSONPATH","utterancesJsonpath","UTTERANCES_JSONPATH","scriptData","scouldExist","rootObjects","intent","executeHook","executeHookSync","getHook","data","allowUnsafe","resultWithRequire","hookData","esprima","parseScript","SCRIPT","htmlCommentRegexp","md","MarkdownIt","parsed","_extractFromRasaIntent","_extractFromRasaSentence","rasaSentence","matched","splitted","meText","meTexts","state","processLeafs","uniq","capNamePrefix","allCapValues","jsonPathCaps","pickBy","k","each","p","prefix","capNames","regexpPrefixAndGroup","currentGroup","currentObject","capName","charAt","capPrefixAndGroup","PROVIDERS","JSON_TO_JSON_JSONPATH","MARKDOWN_RASA","CAPABILITY_PREFIX","flatCababilities","require$$5","ownCaps","Buffer","capSuffixAndVal","NAME","provider","precompile","precompiler","CompilerBase","AddConvos","AddPartialConvos","AddUtterances","AddScriptingMemories","Validate","GetHeaders","Decompile","_AssertCapabilityExists","cap","_GetOptionalCapability","def","_GetCapabilitiesByPrefix","Utterance","CompilerXlsx","colnames","_splitSheetnames","sheetnames","_filterSheetnames","selectors","filteredSheetnames","sheetname","selector","Constants","workbook","XLSX","read","Props","maxEmptyRowCount","SheetNames","scriptResults","sheet","Sheets","rowindex","colindex","hasNameCol","_findOrigin","parseCell","eolSplit","_extractRow","cell1","cell1Value","cell2","cell2Value","cell3","cell3Value","nameCell","nameCellValue","meCell","meCellValue","botCell","botCellValue","questionAnswerMode","emptyRowCount","index","foundQARows","foundConvoRows","convoResults","currentConvo","currentConvoName","startrowindex","formatLength","max","formatBase","formatRowIndex","currentUtterance","emptylines","uttCell","line1Cell","colindexTemp","caseNameCell","varNameCell","variableValueCell","variableNames","variableNameCell","cellContent","stepLines","wb","utils","book_new","ws","json_to_sheet","book_append_sheet","xlsxOutput","write","_get","cell","cellValue","NestedLoop","cr","cc","CompilerTxt","line","_compileConvo","_compileUtterances","_compileScriptingMemory","isPartial","currentLineIndex","currentLines","convoStepSender","convoStepChannel","convoStepLineIndex","parseMsg","pushPrev","isValidTagLine","includes","DELIMITERS_CHECK","DEFAULT_DELIMITER","DEFAULT_QA_COLUMN_QUESTION","DEFAULT_QA_COLUMN_ANSWER","DEFAULT_MULTIROW_COLUMN_CONVERSATION","DEFAULT_MULTIROW_COLUMN_SENDER","DEFAULT_MULTIROW_COLUMN_TEXT","_findColIndex","colName","h","CompilerCsv","delimiter","firstline","d","rows","escape","quote","columns","lineNumberBase","colQuestion","colAnswer","colConversationId","colSender","colText","conversationIds","conversationId","convoRows","CompilerObjectBase","Deserialize","convoRaw","convoStepRaw","entries","lineTag","padStart","convoStepObject","toAdd","utterancesRaw","names","CompilerYaml","YAML","CompilerJson","set","CompilerMarkdown","_toStructuredMarkdown","depth","struct","_add","markup","tag","structured","convosOrUtterances","convosBotium","child","utterancesBotium","utteranceStruct","shim","globPattern","skipPattern","retryHelper","fn","promise","promiseRetry","retry","number","pnot","errTemplate","ScriptingProvider","Defaults","compilers","matchFn","globalAsserter","globalLogicHook","_createLogicHookPromises","_createAsserterPromises","asserterType","_createUserInputPromises","resolveEmptyIfUnknown","_resolveUtterance","found","utt","isNil","nottomatch","retryHelperAsserter","retryHelperLogicHook","retryHelperUserInput","_isValidAsserterType","mapNot","callAsserter","asserterSpec","params","notAsserterType","convoAsserter","isGlobal","allPromises","allSettled","results","rejected","status","reason","all","convoStepPromises","globalPromises","some","t","parts","uttArgs","_buildScriptContext","Match","require$$6","require$$7","require$$8","require$$9","require$$10","logicHookUtils","GetCompiler","ReadBotiumFilesFromDirectory","filelist","globby","sync","gitignore","filelistGlobbed","remove","file","isSkip","convoDirStats","statSync","isFile","dirname","dirConvos","dirUtterances","dirPartialConvos","dirScriptingMemories","pconvos","ReadScript","dirScriptingMemory","ReadScriptFromBuffer","scriptingFormat","scriptingTypes","readFileSync","precompResponse","precompilers","execute","fileConvo","filePartialConvo","_tagAndCleanupUtterances","utteranceFiles","fileUtt","ExpandScriptingMemoryToConvos","aggregatedNoNames","aggregatedNoVariables","aggregatedNoVariableNames","aggregatedDuplicates","duplicate","j","aggregatedIntersections","intersection","k1","k2","kInt","variablesToScriptingMemory","Map","get","convosExpandedAll","convosOriginalAll","convoVariables","convosToExpand","convosExpandedConvo","multipliers","convosExpandedVariable","convoToExpand","convoExpanded","_sortConvos","ExpandUtterancesToConvos","useNameAsIntent","incomprehensionUtt","expandedConvos","uttName","origUttName","_expandConvo","convoStepIndex","convoStepsStack","utterancePostfix","uttOrUserInput","naming","capabilities","utteranceMax","postfix","currentStep","currentStepsStack","useUnexpanded","allutterances","sampleutterances","x","random","currentConvoLabeled","origConvoName","uiIndex","expandConvo","expandedUserInputs","sampleinputs","sampleinput","currentStepMod","sortBy","findAmbiguous","ambiguous","base","expectedString","actualString","eu","GetConversationFlowView","getConvoNodeHash","detectLoops","summarizeMultiSteps","extPickMeNodeProps","extPickBotNodeProps","extPickMeHashProps","extPickBotHashProps","botNodesByHash","pickMeNodeProps","pickBotNodeProps","pickMeHashProps","pickBotHashProps","convoNodes","utteranceSamples","utteranceCount","lastConvoNode","convoSteps","convoStepIndices","hash","currentChildren","convoNode","convoNodeValues","pick","convoNodeHeader","crypto","createHash","update","digest","existingChildNode","childNodes","existingBotNode","existingConvo","node","GetConversationFlowDot","nodes","walkTreeForNodes","walkTreeForLines","BaseRepo","tempDirectory","sources","workingDirectory","Prepare","_AssertSourceExists","NoRepo","module","childCommandLineRun","cmd","ignoreErrors","processOptions","cmdOptions","cmdPart","splice","exports","childProcessRun","runningProcess","childProcess","spawn","stdout","stderr","on","GitRepo","series","cloneDirectoryCreated","mkdirp","cloneReady","gitCmdOptions","ProcessUtils","workingDirectoryChanged","prepareReady","LocalRepo","checkPath","stat","stats","isDirectory","isSymbolicLink","access","constants","W_OK","err1","BUILD_CONTAINER","START_CONTAINER","SENDTOBOT","STOP_CONTAINER","CLEAN_CONTAINER","QueueTimeoutError","Queue","queue","listeners","pushListener","empty","clear","shift","listener","timeoutRequest","timeout","timeoutCallback","registerPushListener","BaseContainer","repo","envs","cleanupTasks","queues","bottleneck","onBuildHook","onStartHook","onUserSaysHook","onBotResponseHook","onStopHook","onCleanHook","limiter","Bottleneck","schedule","opts","maxConcurrent","minTime","_RunCustomHook","UserSaysImpl","isError","userSaysLimiter","hookExecuted","cleanupTasksDone","rimraffed","rimraf","_AssertOneCapabilityExists","checkCaps","arguments","_EmptyQueue","_QueueBotSays","request","GridContainer","buildPromise","_defer","baseComplete","socketComplete","socket","io","apiToken","Commands","startPromise","stopPromise","cleanPromise","disconnect","_ValidateCustomHook","capKey","deferred","InProcessContainer","InjectBotSays","buildRedisHandler","redisurl","topic","redis","Redis","event","publish","setupEndpoints","app","endpoint","middleware","processEvent","req","res","originalUrl","originalMethod","method","end","sendResponse","startProxy","port","express","bodyParser","urlencoded","extended","proxy","listen","console","log","v4","uuidv4","getAllCapValues","botiumUtils","Mustache","SimpleRestContainer","queueBotSays","processInbound","redisTopic","debounceTimeout","inboundEvents","_processOrderedInboundEventsArrayAsync","debounce","events","_getMustachedVal","sortedEvents","qr","_processBodyAsync","startHook","stopHook","requestHook","parserHook","responseHook","pollRequestHook","requestHooks","SIMPLEREST_PING","SIMPLEREST_START","SIMPLEREST_STOP","_buildInbound","contextInitComplete","view","botium","stepId","fnc","mapKeys","descriptor","safeCaps","render","jsonify","_getMustachedCap","startHookComplete","inboundListenerComplete","_subscribeInbound","startPollingComplete","_startPolling","pingComplete","_makeCall","_parseResponseBody","initComplete","_doRequest","startCallComplete","_unsubscribeInbound","_stopPolling","_cleanInbound","isFromUser","updateContext","_processBodyAsyncImpl","waitProcessQueue","_emptyWaitProcessQueue","mergeMode","jsonPathsContext","jsonPathContext","contextNodes","jsonPathRoots","jsonPathsBody","jsonPathBody","rb","jsonPathRoot","_retrieveMedia","jsonPathMediaRoot","jsonPathsMedia","retrievedMedia","responseMedia","flattenDeep","mime","lookup","_retrieveButtons","jsonPathButtonRoot","jsonPathsButtons","retrievedButtons","responseButtons","_getCardText","responseCardText","texts","jsonPathsCards","responseCards","jsonPathsCardText","jsonPathsCardSubText","hasMessageText","jsonPathsTexts","responseTexts","messageTexts","messageTextIndex","botMsgRoot","beforeHookKeys","afterHookKeys","_buildRequest","requestOptions","statusCode","statusMessage","enabled","jsonBody","errKey","nonEncodedMessage","encodeURIComponent","uri","_getCapValue","followAllRedirects","headers","bodyRaw","ADD_QUERY_PARAM","appendToUri","ADD_FORM_PARAM","formKey","formValue","ADD_HEADER","headerKey","headerValue","_addRequestOptions","_waitForUrlResponse","pingConfig","tries","changeBody","capValue","template","raw","_processInboundEvent","jsonPathValue","jsonPathsSelector","isSelected","jsonPathTemplate","hasResult","check","processingEvents","count","subscribe","unsubscribe","close","_runPolling","verb","pollConfig","pollInterval","setInterval","clearInterval","capPrefix","httpConfig","strictSSL","merge","pluginResolver","containermode","getModuleVersionSafe","required","pckg","version","loadConnectorModule","tryLoadPlugin","modulepath","pluginLoaderSpec","mode","pluginInstance","plugin","PluginVersion","tryLoadPackage","PluginConnectorContainer","retryHelperBuild","retryHelperStart","retryHelperUserSays","retryHelperStop","retryHelperClean","boolean","BotDriver","EventEmitter","_fetchedConfigFiles","_fetchConfigFromFiles","NODE_ENV","botiumConfigEnv","BOTIUM_CONFIG","checkDir","checkFileBase","sourcesToTest","element","elementToTest","_mergeCaps","envName","setCapabilities","setCapability","setSources","setSource","setEnvs","setEnv","BuildFluent","driverValidated","_validate","repoValidated","_getRepo","repoPrepared","containerValidated","_getContainer","containerBuilt","_loadConfigFile","configJson","files","fetchedFiles","absFilePath","_findKeyProperty","checkPropIdx","newCaps","isFinite","newCapArray","capElement","mergeKey","oldElement","newCapObject","isBoolean","sanitize","PLUGIN_TYPE_CONNECTOR","PLUGIN_TYPE_ASSERTER","PLUGIN_TYPE_LOGICHOOK","PLUGIN_TYPE_USERINPUT","TYPE_TO_PREFIX","TYPE_TO_COMPONENT_TYPE","getConnectorPlugin","pathToRes","PluginType","pluginPath","pluginNameFromFile","PluginDesc","getOtherPlugin","pluginName","TYPE_TO_FN","getPlugins","resourcesDir","items","readdirSync","extname","pluginNameToPlugin","ScriptingConstants","Enums","Plugins","HookUtils","require$$11","LogicHookConstants","require$$12","Lib","require$$13","require$$14","InboundProxy","require$$15","BotiumMockRichMessageTypes","require$$16"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"botium-cjs.js","sources":["../src/Capabilities.js","../src/Source.js","../src/Defaults.js","../src/Fluent.js","../src/Events.js","../src/scripting/BotiumError.js","../src/scripting/logichook/LogicHookConsts.js","../src/scripting/logichook/LogicHookUtils.js","../src/scripting/Constants.js","../src/mocks/BotiumMockAttachment.js","../src/mocks/BotiumMockRichMessageTypes.js","../src/mocks/BotiumMockScripting.js","../src/mocks/BotiumMockMessage.js","../src/Enums.js","../src/scripting/helper.js","../src/scripting/ScriptingMemory.js","../src/scripting/Convo.js","../src/helpers/RetryHelper.js","../src/scripting/MatchFunctions.js","../src/helpers/Utils.js","../src/scripting/precompilers/JsonToJson.js","../src/helpers/HookUtils.js","../src/scripting/precompilers/Script.js","../src/scripting/precompilers/MarkdownRasa.js","../src/helpers/CapabilitiesUtils.js","../src/scripting/precompilers/index.js","../src/scripting/CompilerBase.js","../src/scripting/Utterance.js","../src/scripting/CompilerXlsx.js","../src/scripting/CompilerTxt.js","../src/scripting/CompilerCsv.js","../src/scripting/CompilerObjectBase.js","../src/scripting/CompilerYaml.js","../src/scripting/CompilerJson.js","../src/scripting/CompilerMarkdown.js","../src/scripting/ScriptingProvider.js","../src/repos/BaseRepo.js","../src/repos/NoRepo.js","../src/helpers/ProcessUtils.js","../src/repos/GitRepo.js","../src/repos/LocalRepo.js","../src/Commands.js","../src/helpers/QueueTimeoutError.js","../src/helpers/Queue.js","../src/containers/BaseContainer.js","../src/containers/GridContainer.js","../src/containers/InProcessContainer.js","../src/grid/inbound/proxy.js","../src/containers/plugins/SimpleRestContainer.js","../src/containers/plugins/index.js","../src/containers/PluginConnectorContainer.js","../src/BotDriver.js","../src/Plugins.js","../index.js"],"sourcesContent":["module.exports = {\n PROJECTNAME: 'PROJECTNAME',\n TESTSESSIONNAME: 'TESTSESSIONNAME',\n TESTCASENAME: 'TESTCASENAME',\n TEMPDIR: 'TEMPDIR',\n CLEANUPTEMPDIR: 'CLEANUPTEMPDIR',\n WAITFORBOTTIMEOUT: 'WAITFORBOTTIMEOUT',\n CONTAINERMODE: 'CONTAINERMODE',\n PLUGINMODULEPATH: 'PLUGINMODULEPATH',\n // falsy or ms/keystroke\n SIMULATE_WRITING_SPEED: 'SIMULATE_WRITING_SPEED',\n BOTIUMGRIDURL: 'BOTIUMGRIDURL',\n BOTIUMAPITOKEN: 'BOTIUMAPITOKEN',\n BOTIUMGRIDSLOT: 'BOTIUMGRIDSLOT',\n // Simple Reset Bot Settings\n SIMPLEREST_PING_URL: 'SIMPLEREST_PING_URL',\n SIMPLEREST_PING_VERB: 'SIMPLEREST_PING_VERB',\n SIMPLEREST_PING_BODY: 'SIMPLEREST_PING_BODY',\n SIMPLEREST_PING_BODY_RAW: 'SIMPLEREST_PING_BODY_RAW',\n SIMPLEREST_PING_HEADERS: 'SIMPLEREST_PING_HEADERS',\n SIMPLEREST_PING_REQUEST_HOOK: 'SIMPLEREST_PING_REQUEST_HOOK',\n SIMPLEREST_PING_RETRIES: 'SIMPLEREST_PING_RETRIES',\n SIMPLEREST_PING_TIMEOUT: 'SIMPLEREST_PING_TIMEOUT',\n SIMPLEREST_PING_UPDATE_CONTEXT: 'SIMPLEREST_PING_UPDATE_CONTEXT',\n SIMPLEREST_PING_PROCESS_RESPONSE: 'SIMPLEREST_PING_PROCESS_RESPONSE',\n SIMPLEREST_START_URL: 'SIMPLEREST_START_URL',\n SIMPLEREST_START_VERB: 'SIMPLEREST_START_VERB',\n SIMPLEREST_START_BODY: 'SIMPLEREST_START_BODY',\n SIMPLEREST_START_BODY_RAW: 'SIMPLEREST_START_BODY_RAW',\n SIMPLEREST_START_HEADERS: 'SIMPLEREST_START_HEADERS',\n SIMPLEREST_START_REQUEST_HOOK: 'SIMPLEREST_START_REQUEST_HOOK',\n SIMPLEREST_START_RETRIES: 'SIMPLEREST_START_RETRIES',\n SIMPLEREST_START_TIMEOUT: 'SIMPLEREST_START_TIMEOUT',\n SIMPLEREST_START_UPDATE_CONTEXT: 'SIMPLEREST_START_UPDATE_CONTEXT',\n SIMPLEREST_START_PROCESS_RESPONSE: 'SIMPLEREST_START_PROCESS_RESPONSE',\n SIMPLEREST_STOP_URL: 'SIMPLEREST_STOP_URL',\n SIMPLEREST_STOP_VERB: 'SIMPLEREST_STOP_VERB',\n SIMPLEREST_STOP_BODY: 'SIMPLEREST_STOP_BODY',\n SIMPLEREST_STOP_BODY_RAW: 'SIMPLEREST_STOP_BODY_RAW',\n SIMPLEREST_STOP_HEADERS: 'SIMPLEREST_STOP_HEADERS',\n SIMPLEREST_STOP_REQUEST_HOOK: 'SIMPLEREST_STOP_REQUEST_HOOK',\n SIMPLEREST_STOP_RETRIES: 'SIMPLEREST_STOP_RETRIES',\n SIMPLEREST_STOP_TIMEOUT: 'SIMPLEREST_STOP_TIMEOUT',\n SIMPLEREST_INIT_CONTEXT: 'SIMPLEREST_INIT_CONTEXT',\n SIMPLEREST_INIT_TEXT: 'SIMPLEREST_INIT_TEXT',\n SIMPLEREST_INIT_PROCESS_RESPONSE: 'SIMPLEREST_INIT_PROCESS_RESPONSE',\n SIMPLEREST_PROXY_URL: 'SIMPLEREST_PROXY_URL',\n SIMPLEREST_STRICT_SSL: 'SIMPLEREST_STRICT_SSL',\n SIMPLEREST_URL: 'SIMPLEREST_URL',\n SIMPLEREST_EXTRA_OPTIONS: 'SIMPLEREST_EXTRA_OPTIONS',\n SIMPLEREST_IGNORE_EMPTY: 'SIMPLEREST_IGNORE_EMPTY',\n SIMPLEREST_TIMEOUT: 'SIMPLEREST_TIMEOUT',\n SIMPLEREST_METHOD: 'SIMPLEREST_METHOD',\n SIMPLEREST_VERB: 'SIMPLEREST_VERB',\n SIMPLEREST_HEADERS_TEMPLATE: 'SIMPLEREST_HEADERS_TEMPLATE',\n SIMPLEREST_BODY_TEMPLATE: 'SIMPLEREST_BODY_TEMPLATE',\n SIMPLEREST_BODY_RAW: 'SIMPLEREST_BODY_RAW',\n SIMPLEREST_START_HOOK: 'SIMPLEREST_START_HOOK',\n SIMPLEREST_STOP_HOOK: 'SIMPLEREST_STOP_HOOK',\n SIMPLEREST_REQUEST_HOOK: 'SIMPLEREST_REQUEST_HOOK',\n SIMPLEREST_PARSER_HOOK: 'SIMPLEREST_PARSER_HOOK',\n SIMPLEREST_POLL_URL: 'SIMPLEREST_POLL_URL',\n SIMPLEREST_POLL_VERB: 'SIMPLEREST_POLL_VERB',\n SIMPLEREST_POLL_BODY: 'SIMPLEREST_POLL_BODY',\n SIMPLEREST_POLL_BODY_RAW: 'SIMPLEREST_POLL_BODY_RAW',\n SIMPLEREST_POLL_HEADERS: 'SIMPLEREST_POLL_HEADERS',\n SIMPLEREST_POLL_REQUEST_HOOK: 'SIMPLEREST_POLL_REQUEST_HOOK',\n SIMPLEREST_POLL_INTERVAL: 'SIMPLEREST_POLL_INTERVAL',\n SIMPLEREST_POLL_TIMEOUT: 'SIMPLEREST_PING_TIMEOUT',\n SIMPLEREST_POLL_UPDATE_CONTEXT: 'SIMPLEREST_POLL_UPDATE_CONTEXT',\n SIMPLEREST_BODY_JSONPATH: 'SIMPLEREST_BODY_JSONPATH',\n SIMPLEREST_RESPONSE_JSONPATH: 'SIMPLEREST_RESPONSE_JSONPATH',\n SIMPLEREST_RESPONSE_HOOK: 'SIMPLEREST_RESPONSE_HOOK',\n SIMPLEREST_MEDIA_JSONPATH: 'SIMPLEREST_MEDIA_JSONPATH',\n SIMPLEREST_BUTTONS_JSONPATH: 'SIMPLEREST_BUTTONS_JSONPATH',\n SIMPLEREST_CARDS_JSONPATH: 'SIMPLEREST_CARDS_JSONPATH',\n SIMPLEREST_CARD_TEXT_JSONPATH: 'SIMPLEREST_CARD_TEXT_JSONPATH',\n SIMPLEREST_CARD_SUBTEXT_JSONPATH: 'SIMPLEREST_CARD_SUBTEXT_JSONPATH',\n SIMPLEREST_CARD_BUTTONS_JSONPATH: 'SIMPLEREST_CARD_BUTTONS_JSONPATH',\n SIMPLEREST_CARD_ATTACHMENTS_JSONPATH: 'SIMPLEREST_CARD_ATTACHMENTS_JSONPATH',\n SIMPLEREST_CONTEXT_JSONPATH: 'SIMPLEREST_CONTEXT_JSONPATH',\n SIMPLEREST_CONTEXT_MERGE_OR_REPLACE: 'SIMPLEREST_CONTEXT_MERGE_OR_REPLACE',\n SIMPLEREST_CONVERSATION_ID_TEMPLATE: 'SIMPLEREST_CONVERSATION_ID_TEMPLATE',\n SIMPLEREST_STEP_ID_TEMPLATE: 'SIMPLEREST_STEP_ID_TEMPLATE',\n SIMPLEREST_INBOUND_REDISURL: 'SIMPLEREST_INBOUND_REDISURL',\n SIMPLEREST_INBOUND_ENDPOINT: 'SIMPLEREST_INBOUND_ENDPOINT',\n SIMPLEREST_INBOUND_PORT: 'SIMPLEREST_INBOUND_PORT',\n SIMPLEREST_INBOUND_SELECTOR_JSONPATH: 'SIMPLEREST_INBOUND_SELECTOR_JSONPATH',\n SIMPLEREST_INBOUND_SELECTOR_VALUE: 'SIMPLEREST_INBOUND_SELECTOR_VALUE',\n SIMPLEREST_INBOUND_UPDATE_CONTEXT: 'SIMPLEREST_INBOUND_UPDATE_CONTEXT',\n SIMPLEREST_REDIS_TOPIC: 'SIMPLEREST_REDIS_TOPIC',\n SIMPLEREST_INBOUND_ORDER_UNSETTLED_EVENTS_JSONPATH: 'SIMPLEREST_INBOUND_ORDER_UNSETTLED_EVENTS_JSONPATH',\n SIMPLEREST_INBOUND_DEBOUNCE_TIMEOUT: 'SIMPLEREST_INBOUND_DEBOUNCE_TIMEOUT',\n // Script Compiler\n SCRIPTING_TXT_EOL: 'SCRIPTING_TXT_EOL',\n // ROW_PER_MESSAGE or QUESTION_ANSWER\n SCRIPTING_XLSX_MODE: 'SCRIPTING_XLSX_MODE',\n SCRIPTING_XLSX_EOL_WRITE: 'SCRIPTING_XLSX_EOL_WRITE',\n SCRIPTING_XLSX_STARTROW: 'SCRIPTING_XLSX_STARTROW',\n SCRIPTING_XLSX_STARTCOL: 'SCRIPTING_XLSX_STARTCOL',\n SCRIPTING_XLSX_HASNAMECOL: 'SCRIPTING_XLSX_HASNAMECOL',\n SCRIPTING_XLSX_HASHEADERS: 'SCRIPTING_XLSX_HASHEADERS',\n SCRIPTING_XLSX_SHEETNAMES: 'SCRIPTING_XLSX_SHEETNAMES',\n SCRIPTING_XLSX_SHEETNAMES_PCONVOS: 'SCRIPTING_XLSX_SHEETNAMES_PCONVOS',\n SCRIPTING_XLSX_SHEETNAMES_UTTERANCES: 'SCRIPTING_XLSX_SHEETNAMES_UTTERANCES',\n SCRIPTING_XLSX_SHEETNAMES_SCRIPTING_MEMORY: 'SCRIPTING_XLSX_SHEETNAMES_SCRIPTING_MEMORY',\n SCRIPTING_CSV_DELIMITER: 'SCRIPTING_CSV_DELIMITER',\n SCRIPTING_CSV_SKIP_HEADER: 'SCRIPTING_CSV_SKIP_HEADER',\n SCRIPTING_CSV_QUOTE: 'SCRIPTING_CSV_QUOTE',\n SCRIPTING_CSV_ESCAPE: 'SCRIPTING_CSV_ESCAPE',\n SCRIPTING_CSV_MULTIROW_COLUMN_CONVERSATION_ID: 'SCRIPTING_CSV_MULTIROW_COLUMN_CONVERSATION_ID',\n SCRIPTING_CSV_MULTIROW_COLUMN_SENDER: 'SCRIPTING_CSV_MULTIROW_COLUMN_SENDER',\n SCRIPTING_CSV_MULTIROW_COLUMN_TEXT: 'SCRIPTING_CSV_MULTIROW_COLUMN_TEXT',\n SCRIPTING_CSV_QA_COLUMN_QUESTION: 'SCRIPTING_CSV_QA_COLUMN_QUESTION',\n SCRIPTING_CSV_QA_COLUMN_ANSWER: 'SCRIPTING_CSV_QA_COLUMN_ANSWER',\n SCRIPTING_NORMALIZE_TEXT: 'SCRIPTING_NORMALIZE_TEXT',\n SCRIPTING_ENABLE_MEMORY: 'SCRIPTING_ENABLE_MEMORY',\n SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS: 'SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS',\n SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS: 'SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS',\n SCRIPTING_FORCE_BOT_CONSUMED: 'SCRIPTING_FORCE_BOT_CONSUMED',\n // regexp, regexpIgnoreCase, wildcard, wildcardIgnoreCase, wildcardExact, wildcardExactIgnoreCase, include, includeIgnoreCase, equals, equalsIgnoreCase\n SCRIPTING_MATCHING_MODE: 'SCRIPTING_MATCHING_MODE',\n // all, first, random\n SCRIPTING_UTTEXPANSION_MODE: 'SCRIPTING_UTTEXPANSION_MODE',\n SCRIPTING_UTTEXPANSION_RANDOM_COUNT: 'SCRIPTING_UTTEXPANSION_RANDOM_COUNT',\n SCRIPTING_UTTEXPANSION_INCOMPREHENSION: 'SCRIPTING_UTTEXPANSION_INCOMPREHENSION',\n SCRIPTING_UTTEXPANSION_USENAMEASINTENT: 'SCRIPTING_UTTEXPANSION_USENAMEASINTENT',\n // justLineTag, utterance\n SCRIPTING_UTTEXPANSION_NAMING_MODE: 'SCRIPTING_UTTEXPANSION_NAMING_MODE',\n SCRIPTING_UTTEXPANSION_NAMING_UTTERANCE_MAX: 'SCRIPTING_UTTEXPANSION_NAMING_UTTERANCE_MAX',\n // Del original convo or not\n SCRIPTING_MEMORYEXPANSION_KEEP_ORIG: 'SCRIPTING_MEMORYEXPANSION_KEEP_ORIG',\n // word, non_whitespace, joker\n SCRIPTING_MEMORY_MATCHING_MODE: 'SCRIPTING_MEMORY_MATCHING_MODE',\n // varnames, testcasenames\n SCRIPTING_MEMORY_COLUMN_MODE: 'SCRIPTING_MEMORY_COLUMN_MODE',\n // Botium Lifecycle Hooks\n CUSTOMHOOK_ONBUILD: 'CUSTOMHOOK_ONBUILD',\n CUSTOMHOOK_ONSTART: 'CUSTOMHOOK_ONSTART',\n CUSTOMHOOK_ONUSERSAYS: 'CUSTOMHOOK_ONUSERSAYS',\n CUSTOMHOOK_ONBOTRESPONSE: 'CUSTOMHOOK_ONBOTRESPONSE',\n CUSTOMHOOK_ONSTOP: 'CUSTOMHOOK_ONSTOP',\n CUSTOMHOOK_ONCLEAN: 'CUSTOMHOOK_ONCLEAN',\n // Extension components\n ASSERTERS: 'ASSERTERS',\n LOGIC_HOOKS: 'LOGIC_HOOKS',\n USER_INPUTS: 'USER_INPUTS',\n // API Calls Rate Limiting\n RATELIMIT_USERSAYS_MAXCONCURRENT: 'RATELIMIT_USERSAYS_MAXCONCURRENT',\n RATELIMIT_USERSAYS_MINTIME: 'RATELIMIT_USERSAYS_MINTIME',\n RATELIMIT_BOTTLENECK_FN: 'RATELIMIT_BOTTLENECK_FN',\n SECURITY_ALLOW_UNSAFE: 'SECURITY_ALLOW_UNSAFE',\n PRECOMPILERS: 'PRECOMPILERS'\n}\n","module.exports = {\n LOCALPATH: 'LOCALPATH',\n GITPATH: 'GITPATH',\n GITURL: 'GITURL',\n GITBRANCH: 'GITBRANCH',\n GITDIR: 'GITDIR',\n GITPREPARECMD: 'GITPREPARECMD'\n}\n","const Capabilities = require('./Capabilities')\nconst Source = require('./Source')\n\nmodule.exports = {\n Capabilities: {\n [Capabilities.PROJECTNAME]: 'Botium Project',\n [Capabilities.TESTSESSIONNAME]: 'Botium Test Session',\n [Capabilities.TESTCASENAME]: 'Botium Test Case',\n [Capabilities.TEMPDIR]: 'botiumwork',\n [Capabilities.CLEANUPTEMPDIR]: true,\n [Capabilities.WAITFORBOTTIMEOUT]: 10000,\n [Capabilities.SIMULATE_WRITING_SPEED]: false,\n [Capabilities.SIMPLEREST_PING_RETRIES]: 6,\n [Capabilities.SIMPLEREST_PING_TIMEOUT]: 10000,\n [Capabilities.SIMPLEREST_PING_VERB]: 'GET',\n [Capabilities.SIMPLEREST_PING_UPDATE_CONTEXT]: true,\n [Capabilities.SIMPLEREST_PING_PROCESS_RESPONSE]: false,\n [Capabilities.SIMPLEREST_INIT_PROCESS_RESPONSE]: false,\n [Capabilities.SIMPLEREST_STOP_RETRIES]: 6,\n [Capabilities.SIMPLEREST_STOP_TIMEOUT]: 10000,\n [Capabilities.SIMPLEREST_STOP_VERB]: 'GET',\n [Capabilities.SIMPLEREST_START_RETRIES]: 6,\n [Capabilities.SIMPLEREST_START_TIMEOUT]: 10000,\n [Capabilities.SIMPLEREST_START_UPDATE_CONTEXT]: true,\n [Capabilities.SIMPLEREST_START_PROCESS_RESPONSE]: true,\n [Capabilities.SIMPLEREST_START_VERB]: 'GET',\n [Capabilities.SIMPLEREST_POLL_VERB]: 'GET',\n [Capabilities.SIMPLEREST_POLL_INTERVAL]: 1000,\n [Capabilities.SIMPLEREST_POLL_TIMEOUT]: 10000,\n [Capabilities.SIMPLEREST_POLL_UPDATE_CONTEXT]: true,\n [Capabilities.SIMPLEREST_METHOD]: 'GET',\n [Capabilities.SIMPLEREST_IGNORE_EMPTY]: true,\n [Capabilities.SIMPLEREST_TIMEOUT]: 10000,\n [Capabilities.SIMPLEREST_STRICT_SSL]: true,\n [Capabilities.SIMPLEREST_INBOUND_UPDATE_CONTEXT]: true,\n [Capabilities.SIMPLEREST_CONTEXT_MERGE_OR_REPLACE]: 'MERGE',\n [Capabilities.SCRIPTING_TXT_EOL]: '\\n',\n [Capabilities.SCRIPTING_XLSX_EOL_WRITE]: '\\r\\n',\n [Capabilities.SCRIPTING_XLSX_HASHEADERS]: true,\n [Capabilities.SCRIPTING_CSV_SKIP_HEADER]: true,\n [Capabilities.SCRIPTING_CSV_QUOTE]: '\"',\n [Capabilities.SCRIPTING_CSV_ESCAPE]: '\"',\n [Capabilities.SCRIPTING_NORMALIZE_TEXT]: true,\n [Capabilities.SCRIPTING_ENABLE_MEMORY]: false,\n [Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]: false,\n [Capabilities.SCRIPTING_MATCHING_MODE]: 'wildcardIgnoreCase',\n [Capabilities.SCRIPTING_UTTEXPANSION_MODE]: 'all',\n [Capabilities.SCRIPTING_UTTEXPANSION_RANDOM_COUNT]: 1,\n [Capabilities.SCRIPTING_UTTEXPANSION_NAMING_MODE]: 'justLineTag',\n [Capabilities.SCRIPTING_UTTEXPANSION_NAMING_UTTERANCE_MAX]: '16',\n [Capabilities.SCRIPTING_MEMORYEXPANSION_KEEP_ORIG]: false,\n [Capabilities.SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS]: false,\n [Capabilities.SCRIPTING_FORCE_BOT_CONSUMED]: false,\n [Capabilities.ASSERTERS]: [],\n [Capabilities.LOGIC_HOOKS]: [],\n [Capabilities.USER_INPUTS]: [],\n [Capabilities.SECURITY_ALLOW_UNSAFE]: true\n },\n Sources: {\n [Source.LOCALPATH]: '.',\n [Source.GITPATH]: 'git',\n [Source.GITBRANCH]: 'master',\n [Source.GITDIR]: '.'\n },\n Envs: {\n IS_BOTIUM_CONTAINER: true\n }\n}\n","const async = require('async')\nconst _ = require('lodash')\n\nmodule.exports = class Fluent {\n constructor (driver) {\n this.driver = driver\n this.compiler = null\n this.container = null\n this.currentChannel = null\n this.tasks = []\n\n this.tasks.push(() => {\n return new Promise((resolve, reject) => {\n this.driver.Build()\n .then((container) => {\n this.container = container\n resolve()\n })\n .catch((err) => {\n reject(err)\n })\n })\n })\n }\n\n Exec () {\n return new Promise((resolve, reject) => {\n async.eachSeries(this.tasks, (task, cb) => {\n try {\n const taskResult = task()\n if (taskResult && taskResult.then) {\n taskResult.then(() => cb()).catch(cb)\n } else {\n cb()\n }\n } catch (err) {\n cb(err)\n }\n }, (err) => {\n if (err) return reject(err)\n resolve()\n })\n })\n }\n\n Start () {\n this.tasks.push(() => {\n return this.container.Start()\n })\n return this\n }\n\n SwitchChannel (channel) {\n this.tasks.push(() => {\n this.currentChannel = channel\n return Promise.resolve()\n })\n return this\n }\n\n ReadScripts (convoDir, globFilter) {\n this.tasks.push(() => {\n return new Promise((resolve, reject) => {\n if (this.compiler == null) {\n try {\n this.compiler = this.driver.BuildCompiler()\n } catch (err) {\n return reject(err)\n }\n }\n try {\n this.compiler.ReadScriptsFromDirectory(convoDir, globFilter)\n resolve()\n } catch (err) {\n reject(err)\n }\n })\n })\n return this\n }\n\n Compile (scriptBuffer, scriptFormat, scriptType) {\n this.tasks.push(() => {\n return new Promise((resolve, reject) => {\n if (this.compiler == null) {\n try {\n this.compiler = this.driver.BuildCompiler()\n } catch (err) {\n return reject(err)\n }\n }\n try {\n this.compiler.Compile(scriptBuffer, scriptFormat, scriptType)\n resolve()\n } catch (err) {\n reject(err)\n }\n })\n })\n return this\n }\n\n RunScripts (assertCb, failCb) {\n this.tasks.push(() => {\n return new Promise((resolve, reject) => {\n if (assertCb) {\n this.compiler.scriptingEvents.assertBotResponse = assertCb.bind(this.compiler)\n }\n if (failCb) {\n this.compiler.scriptingEvents.fail = failCb.bind(this.compiler)\n }\n\n this.compiler.ExpandConvos()\n\n async.eachSeries(this.compiler.convos, (convo, convoDone) => {\n this.container.Start()\n .then(() => convo.Run(this.container))\n .then(() => this.container.Stop())\n .then(() => convoDone())\n .catch(convoDone)\n },\n (err) => {\n if (err) return reject(err)\n else resolve()\n })\n })\n })\n return this\n }\n\n UserSaysText (msg) {\n this.tasks.push(() => {\n if (_.isFunction(msg)) {\n msg = msg()\n }\n\n if (this.currentChannel) {\n return this.container.UserSays({ messageText: msg, channel: this.currentChannel })\n } else {\n return this.container.UserSaysText(msg)\n }\n })\n return this\n }\n\n UserSays (msg) {\n this.tasks.push(() => {\n if (_.isFunction(msg)) {\n msg = msg()\n }\n\n if (this.currentChannel && !msg.channel) {\n msg = Object.assign({}, msg)\n msg.channel = this.currentChannel\n }\n return this.container.UserSays(msg)\n })\n return this\n }\n\n WaitBotSays (channel = null, timeoutMillis = null, callback = null) {\n if (!callback) {\n if (timeoutMillis && _.isFunction(timeoutMillis)) {\n callback = timeoutMillis\n timeoutMillis = null\n } else if (!timeoutMillis && channel && _.isFunction(channel)) {\n callback = channel\n timeoutMillis = null\n channel = null\n }\n }\n\n this.tasks.push(() => {\n return new Promise((resolve, reject) => {\n if (this.currentChannel && !channel) {\n channel = this.currentChannel\n }\n this.container.WaitBotSays(channel, timeoutMillis)\n .then((botMsg) => {\n if (callback) callback(botMsg)\n resolve()\n })\n .catch((err) => {\n reject(err)\n })\n })\n })\n return this\n }\n\n WaitBotSaysText (channel = null, timeoutMillis = null, callback = null) {\n if (!callback) {\n if (timeoutMillis && _.isFunction(timeoutMillis)) {\n callback = timeoutMillis\n timeoutMillis = null\n } else if (!timeoutMillis && channel && _.isFunction(channel)) {\n callback = channel\n timeoutMillis = null\n channel = null\n }\n }\n\n this.tasks.push(() => {\n return new Promise((resolve, reject) => {\n if (this.currentChannel && !channel) {\n channel = this.currentChannel\n }\n this.container.WaitBotSaysText(channel, timeoutMillis)\n .then((text) => {\n if (callback) callback(text)\n resolve()\n })\n .catch((err) => {\n reject(err)\n })\n })\n })\n return this\n }\n\n Restart () {\n this.tasks.push(() => {\n return this.container.Restart()\n })\n return this\n }\n\n Stop () {\n this.tasks.push(() => {\n return this.container.Stop()\n })\n return this\n }\n\n Clean () {\n this.tasks.push(() => {\n return this.container.Clean()\n })\n return this\n }\n\n Call (customFunction) {\n this.tasks.push(() => {\n return (customFunction(this) || Promise.resolve())\n })\n return this\n }\n}\n","module.exports = {\n // Botium Events\n CONTAINER_BUILDING: 'CONTAINER_BUILDING',\n CONTAINER_BUILT: 'CONTAINER_BUILT',\n CONTAINER_BUILD_ERROR: 'CONTAINER_BUILD_ERROR',\n CONTAINER_STARTING: 'CONTAINER_STARTING',\n CONTAINER_STARTED: 'CONTAINER_STARTED',\n CONTAINER_START_ERROR: 'CONTAINER_START_ERROR',\n CONTAINER_STOPPING: 'CONTAINER_STOPPING',\n CONTAINER_STOPPED: 'CONTAINER_STOPPED',\n CONTAINER_STOP_ERROR: 'CONTAINER_STOP_ERROR',\n CONTAINER_CLEANING: 'CONTAINER_CLEANING',\n CONTAINER_CLEANED: 'CONTAINER_CLEANED',\n CONTAINER_CLEAN_ERROR: 'CONTAINER_CLEAN_ERROR',\n BOT_CONNECTED: 'BOT_CONNECTED',\n // Chatbot Events\n MESSAGE_SENTTOBOT: 'MESSAGE_SENTTOBOT',\n MESSAGE_SENDTOBOT_ERROR: 'MESSAGE_SENDTOBOT_ERROR',\n MESSAGE_RECEIVEDFROMBOT: 'MESSAGE_RECEIVEDFROMBOT',\n MESSAGE_RECEIVEFROMBOT_ERROR: 'MESSAGE_RECEIVEFROMBOT_ERROR',\n MESSAGE_ATTACHMENT: 'MESSAGE_ATTACHMENT',\n MESSAGE_TRANSCRIPT: 'MESSAGE_TRANSCRIPT',\n // Botium Agent Events\n TOOMUCHWORKERS_ERROR: 'TOOMUCHWORKERS_ERROR'\n}\n","const _ = require('lodash')\n\nconst BotiumError = class BotiumError extends Error {\n /**\n *\n * @param message\n * @param context A JSON with struct\n * {\n * type: 'some free text to identity the exception type',\n * source: 'source of the event',\n * ...\n */\n constructor (message, context, supressChildCheck) {\n super(message.message || message)\n\n if (!supressChildCheck && _getChildErrorsFromContext(context)) {\n throw Error('Create BotiumError with child errors using the fromList() method!')\n }\n // Saving class name in the property of our custom error as a shortcut.\n this.name = this.constructor.name\n\n // Capturing stack trace, excluding constructor call from it.\n Error.captureStackTrace(this, this.constructor)\n\n this.context = context || {}\n this.context.message = message.message || message\n }\n\n isAsserterError () {\n if (this.context) {\n const errArr = _.isArray(this.context) ? this.context : [this.context]\n const hasNotAsserterError = errArr.findIndex(errDetail => {\n if (errDetail.type === 'list') {\n if (errDetail.errors) {\n return errDetail.errors.findIndex(e => e.type !== 'asserter') >= 0\n } else {\n return true\n }\n } else {\n return errDetail.type !== 'asserter'\n }\n }) >= 0\n if (hasNotAsserterError) return false\n return true\n } else {\n return false\n }\n }\n\n prettify (includeJson) {\n const lines = []\n if (this.context) {\n const errArr = _.isArray(this.context) ? this.context : [this.context]\n errArr.forEach(errDetail => {\n lines.push('########################################')\n if (errDetail.type === 'asserter') {\n const segments = []\n segments.push(`ASSERTION FAILED in ${errDetail.source}${errDetail.subtype ? ` (${errDetail.subtype})` : ''}`)\n errDetail.cause && errDetail.cause.expected && !errDetail.cause.not && segments.push(` - Expected: ${JSON.stringify(errDetail.cause.expected)} `)\n errDetail.cause && errDetail.cause.expected && errDetail.cause.not && segments.push(` - NOT Expected: ${JSON.stringify(errDetail.cause.expected)} `)\n errDetail.cause && errDetail.cause.actual && segments.push(` - Actual: ${JSON.stringify(errDetail.cause.actual)}`)\n errDetail.cause && !errDetail.cause.actual && segments.push(' - Actual: empty')\n lines.push(segments.join(''))\n errDetail.input && errDetail.input.messageText && lines.push(`INPUT: ${errDetail.input.messageText}`)\n } else if (errDetail.message) {\n lines.push(`${errDetail.message}`)\n }\n if (errDetail.transcript && errDetail.transcript.length > 0) {\n lines.push('------------ TRANSCRIPT ----------------------------')\n errDetail.transcript.forEach(transcriptStep => {\n if (transcriptStep.actual) {\n lines.push(transcriptStep.actual.prettify())\n }\n })\n }\n if (includeJson) {\n lines.push('------------ JSON CONTENT ----------------------------')\n try {\n const jsonOutput = JSON.stringify(errDetail)\n lines.push(jsonOutput)\n } catch (jsonErr) {\n lines.push(`JSON Output not possible: ${jsonErr.message}`)\n }\n }\n })\n }\n if (lines.length > 0) {\n return lines.join('\\r\\n')\n } else {\n return null\n }\n }\n}\n\nconst _getChildErrorsFromContext = (context) => {\n if (context && context.errors && _.isArray(context.errors)) {\n return context.errors\n }\n return false\n}\n\nconst botiumErrorFromErr = (message, err) => {\n if (err instanceof BotiumError) {\n return new BotiumError(message, err.context, true)\n } else {\n return new BotiumError(message, { err }, true)\n }\n}\n\nconst botiumErrorFromList = (errors, { type = 'list', source = 'BotiumError', flat = true }) => {\n const message = errors.map(err => err.message || err.toString()).join(',\\n')\n let children = []\n\n for (const error of errors) {\n if (error instanceof BotiumError) {\n const childErrors = flat && _getChildErrorsFromContext(error.context)\n if (childErrors && childErrors.length) {\n children = children.concat(childErrors)\n } else if (error.context) {\n children.push(error.context)\n }\n } else {\n children.push(error)\n }\n }\n const result = new BotiumError(message, { errors: children, type, source }, true)\n return result\n}\n\nmodule.exports = {\n BotiumError,\n botiumErrorFromErr,\n botiumErrorFromList\n}\n","const LOGIC_HOOK_INCLUDE = 'INCLUDE'\nmodule.exports = {\n LOGIC_HOOK_INCLUDE,\n DEFAULT_ASSERTERS: [\n { name: 'BUTTONS', className: 'ButtonsAsserter' },\n { name: 'BUTTONS_COUNT', className: 'ButtonsCountAsserter' },\n { name: 'BUTTONS_COUNT_REC', className: 'ButtonsCountRecAsserter' },\n { name: 'MEDIA', className: 'MediaAsserter' },\n { name: 'MEDIA_COUNT', className: 'MediaCountAsserter' },\n { name: 'MEDIA_COUNT_REC', className: 'MediaCountRecAsserter' },\n { name: 'CARDS', className: 'CardsAsserter' },\n { name: 'CARDS_COUNT', className: 'CardsCountAsserter' },\n { name: 'CARDS_COUNT_REC', className: 'CardsCountRecAsserter' },\n { name: 'PAUSE_ASSERTER', className: 'PauseAsserter' },\n { name: 'JSON_PATH', className: 'JsonPathAsserter' },\n { name: 'JSON_PATH_COUNT', className: 'JsonPathCountAsserter' },\n { name: 'RESPONSE_LENGTH', className: 'ResponseLengthAsserter' },\n { name: 'FORMS', className: 'FormsAsserter' },\n\n { name: 'ENTITIES', className: 'EntitiesAsserter' },\n { name: 'ENTITY_VALUES', className: 'EntityValuesAsserter' },\n { name: 'ENTITY_CONTENT', className: 'EntityContentAsserter' },\n\n { name: 'INTENT', className: 'IntentAsserter' },\n { name: 'INTENT_UNIQUE', className: 'IntentUniqueAsserter' },\n { name: 'INTENT_CONFIDENCE', className: 'IntentConfidenceAsserter' },\n\n { name: 'TEXT_CONTAINS_ANY', className: 'TextContainsAnyAsserter' },\n { name: 'TEXT_CONTAINS_ANY_IC', className: 'TextContainsAnyICAsserter' },\n { name: 'TEXT_CONTAINS_ALL', className: 'TextContainsAllAsserter' },\n { name: 'TEXT_CONTAINS_ALL_IC', className: 'TextContainsAllICAsserter' },\n { name: 'TEXT_WILDCARD_ANY', className: 'TextWildcardAnyAsserter' },\n { name: 'TEXT_WILDCARD_ANY_IC', className: 'TextWildcardAnyICAsserter' },\n { name: 'TEXT_WILDCARD_ALL', className: 'TextWildcardAllAsserter' },\n { name: 'TEXT_WILDCARD_ALL_IC', className: 'TextWildcardAllICAsserter' },\n { name: 'TEXT_WILDCARDEXACT_ANY', className: 'TextWildcardExactAnyAsserter' },\n { name: 'TEXT_WILDCARDEXACT_ANY_IC', className: 'TextWildcardExactAnyICAsserter' },\n { name: 'TEXT_WILDCARDEXACT_ALL', className: 'TextWildcardExactAllAsserter' },\n { name: 'TEXT_WILDCARDEXACT_ALL_IC', className: 'TextWildcardExactAllICAsserter' },\n { name: 'TEXT_REGEXP_ANY', className: 'TextRegexpAnyAsserter' },\n { name: 'TEXT_REGEXP_ANY_IC', className: 'TextRegexpAnyICAsserter' },\n { name: 'TEXT_REGEXP_ALL', className: 'TextRegexpAllAsserter' },\n { name: 'TEXT_REGEXP_ALL_IC', className: 'TextRegexpAllICAsserter' },\n { name: 'TEXT_EQUALS', className: 'TextEqualsAnyAsserter' },\n { name: 'TEXT_EQUALS_IC', className: 'TextEqualsAnyICAsserter' },\n { name: 'TEXT', className: 'TextEqualsAnyAsserter' },\n { name: 'TEXT_IC', className: 'TextEqualsAnyICAsserter' },\n\n { name: 'BOT_CONSUMED', className: 'BotRepliesConsumedAsserter' },\n { name: 'BOT_UNCONSUMED_COUNT', className: 'BotRepliesUnconsumedCountAsserter' }\n ],\n DEFAULT_LOGIC_HOOKS: [\n { name: 'PAUSE', className: 'PauseLogicHook' },\n { name: 'WAITFORBOT', className: 'WaitForBotLogicHook' },\n { name: 'SET_SCRIPTING_MEMORY', className: 'SetScriptingMemoryLogicHook' },\n { name: 'CLEAR_SCRIPTING_MEMORY', className: 'ClearScriptingMemoryLogicHook' },\n { name: 'ASSIGN_SCRIPTING_MEMORY', className: 'AssignScriptingMemoryLogicHook' },\n { name: 'UPDATE_CUSTOM', className: 'UpdateCustomLogicHook' },\n { name: 'SKIP_BOT_UNCONSUMED', className: 'ClearQueueLogicHook' },\n { name: LOGIC_HOOK_INCLUDE, className: 'IncludeLogicHook' }\n ],\n DEFAULT_USER_INPUTS: [\n { name: 'BUTTON', className: 'ButtonInput' },\n { name: 'MEDIA', className: 'MediaInput' },\n { name: 'FORM', className: 'FormInput' }\n ]\n}\n","const { NodeVM } = require('vm2')\nconst path = require('path')\nconst fs = require('fs')\nconst isClass = require('is-class')\nconst debug = require('debug')('botium-core-asserterUtils')\n\nconst { BotiumError } = require('../BotiumError')\n\nconst { DEFAULT_ASSERTERS, DEFAULT_LOGIC_HOOKS, DEFAULT_USER_INPUTS } = require('./LogicHookConsts')\n\nDEFAULT_ASSERTERS.forEach((asserter) => {\n asserter.Class = require(`./asserter/${asserter.className}`)\n})\n\nDEFAULT_LOGIC_HOOKS.forEach((logicHook) => {\n logicHook.Class = require(`./logichooks/${logicHook.className}`)\n})\n\nDEFAULT_USER_INPUTS.forEach((userInput) => {\n userInput.Class = require(`./userinput/${userInput.className}`)\n})\n\nconst Capabilities = require('../../Capabilities')\nconst _ = require('lodash')\n\nmodule.exports = class LogicHookUtils {\n constructor ({ buildScriptContext, caps }) {\n this.asserters = {}\n this.globalAsserters = []\n this.logicHooks = {}\n this.globalLogicHooks = []\n this.userInputs = {}\n this.buildScriptContext = buildScriptContext\n this.caps = caps\n this._setDefaultAsserters()\n this._setDefaultLogicHooks()\n this._setDefaultUserInputs()\n this._fetchAsserters()\n this._fetchLogicHooks()\n this._fetchUserInputs()\n }\n\n _setDefaultAsserters () {\n DEFAULT_ASSERTERS.forEach((asserter) => {\n this.asserters[asserter.name] = new (asserter.Class)(this.buildScriptContext, this.caps)\n })\n }\n\n _setDefaultLogicHooks () {\n DEFAULT_LOGIC_HOOKS.forEach((lh) => {\n this.logicHooks[lh.name] = new (lh.Class)(this.buildScriptContext, this.caps)\n })\n }\n\n _setDefaultUserInputs () {\n DEFAULT_USER_INPUTS.forEach((ui) => {\n this.userInputs[ui.name] = new (ui.Class)(this.buildScriptContext, this.caps)\n })\n }\n\n _fetchAsserters () {\n this.caps[Capabilities.ASSERTERS]\n .forEach(asserter => {\n if (this.asserters[asserter.ref]) {\n debug(`${asserter.ref} asserter already exists, overwriting.`)\n }\n this.asserters[asserter.ref] = this._loadClass(asserter, 'asserter')\n if (asserter.global) {\n this.globalAsserters.push(asserter.ref)\n }\n })\n }\n\n _fetchLogicHooks () {\n this.caps[Capabilities.LOGIC_HOOKS]\n .forEach(logicHook => {\n if (this.logicHooks[logicHook.ref]) {\n debug(`${logicHook.ref} logic hook already exists, overwriting.`)\n }\n this.logicHooks[logicHook.ref] = this._loadClass(logicHook, 'logichook')\n if (logicHook.global) {\n this.globalLogicHooks.push(logicHook.ref)\n }\n })\n }\n\n _fetchUserInputs () {\n this.caps[Capabilities.USER_INPUTS]\n .forEach(userInput => {\n if (this.userInputs[userInput.ref]) {\n debug(`${userInput.ref} userinput already exists, overwriting.`)\n }\n this.userInputs[userInput.ref] = this._loadClass(userInput, 'userinput')\n })\n }\n\n getGlobalAsserter () {\n return this.globalAsserters\n .map(name => this.asserters[name])\n }\n\n getGlobalLogicHook () {\n return this.globalLogicHooks\n .map(name => this.logicHooks[name])\n }\n\n _loadClass ({ src, ref, args }, hookType) {\n if (hookType !== 'asserter' && hookType !== 'logichook' && hookType !== 'userinput') {\n throw Error(`Unknown hookType ${hookType}`)\n }\n\n // 1 gives possibility to use default asserter as global asserter\n if (hookType === 'asserter') {\n const asserter = DEFAULT_ASSERTERS.find(asserter => src === asserter.className)\n if (asserter) {\n return new (asserter.Class)({ ref, ...this.buildScriptContext }, this.caps, args)\n }\n }\n if (hookType === 'logichook') {\n const lh = DEFAULT_LOGIC_HOOKS.find(lh => src === lh.className)\n if (lh) {\n return new (lh.Class)({ ref, ...this.buildScriptContext }, this.caps, args)\n }\n }\n if (hookType === 'userinput') {\n const ui = DEFAULT_USER_INPUTS.find(ui => src === ui.className)\n if (ui) {\n return new (ui.Class)({ ref, ...this.buildScriptContext }, this.caps, args)\n }\n }\n\n const _checkUnsafe = () => {\n if (!this.caps[Capabilities.SECURITY_ALLOW_UNSAFE]) {\n throw new BotiumError(\n 'Security Error. Using unsafe component is not allowed',\n {\n type: 'security',\n subtype: 'allow unsafe',\n source: path.basename(__filename),\n cause: { src: !!src, ref, args, hookType }\n }\n )\n }\n }\n\n if (!src) {\n const packageName = `botium-${hookType}-${ref}`\n try {\n const CheckClass = require(packageName)\n if (isClass(CheckClass)) {\n return new CheckClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else if (_.isFunction(CheckClass)) {\n return CheckClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else if (isClass(CheckClass.PluginClass)) {\n return new CheckClass.PluginClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else {\n throw new Error(`${packageName} class or function or PluginClass field expected`)\n }\n } catch (err) {\n throw new Error(`Failed to fetch hook ${ref} ${hookType} from guessed package ${packageName} - ${err.message}`)\n }\n }\n\n if (isClass(src)) {\n try {\n const CheckClass = src\n return new CheckClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } catch (err) {\n throw new Error(`Failed to load package ${ref} from provided class - ${err.message}`)\n }\n }\n if (_.isFunction(src)) {\n try {\n return src({ ref, ...this.buildScriptContext }, this.caps, args)\n } catch (err) {\n throw new Error(`Failed to load package ${ref} from provided function - ${err.message}`)\n }\n }\n if (_.isObject(src) && !_.isString(src)) {\n try {\n const hookObject = Object.keys(src).reduce((result, key) => {\n result[key] = (args) => {\n const script = src[key]\n if (_.isFunction(script)) {\n return script(args)\n } else if (_.isString(script)) {\n try {\n const vm = new NodeVM({\n eval: false,\n require: false,\n sandbox: args\n })\n return vm.run(script)\n } catch (err) {\n throw new Error(`${err.message || err}`)\n }\n } else {\n throw new Error(`Script \"${key}\" is not valid - only functions and javascript code accepted`)\n }\n }\n return result\n }, {})\n return hookObject\n } catch (err) {\n throw new Error(`Failed to load package ${ref} ${hookType} from provided src function - ${err.message}`)\n }\n }\n\n if (_.isString(src)) {\n const loadErr = []\n\n const tryLoads = [{\n tryLoadPackageName: src,\n tryLoadAsserterByName: null\n }]\n if (src.indexOf('/') >= 0) {\n tryLoads.push({\n tryLoadPackageName: src.substr(0, src.lastIndexOf('/')),\n tryLoadAsserterByName: src.substr(src.lastIndexOf('/') + 1)\n })\n }\n\n const tryLoadFromSource = (tryRequire, tryAsserterName) => {\n let CheckClass = require(tryRequire)\n if (CheckClass.default) {\n CheckClass = CheckClass.default\n }\n if (tryAsserterName) {\n if (hookType === 'asserter' && CheckClass.PluginAsserters && CheckClass.PluginAsserters[tryAsserterName]) {\n CheckClass = CheckClass.PluginAsserters[tryAsserterName]\n } else if (hookType === 'logichook' && CheckClass.PluginLogicHooks && CheckClass.PluginLogicHooks[tryAsserterName]) {\n CheckClass = CheckClass.PluginLogicHooks[tryAsserterName]\n } else {\n throw new Error(`Loaded ${tryRequire}, but ${tryAsserterName} ${hookType} not found.`)\n }\n }\n if (isClass(CheckClass)) {\n return new CheckClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else if (_.isFunction(CheckClass)) {\n return CheckClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else if (isClass(CheckClass.PluginClass)) {\n return new CheckClass.PluginClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else if (_.isFunction(CheckClass.PluginClass)) {\n return CheckClass.PluginClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else {\n throw new Error(`${src} class or function expected`)\n }\n }\n\n for (const tryLoad of tryLoads) {\n const tryLoadFile = path.resolve(process.cwd(), tryLoad.tryLoadPackageName)\n if (fs.existsSync(tryLoadFile)) {\n _checkUnsafe()\n try {\n return tryLoadFromSource(tryLoadFile, tryLoad.tryLoadAsserterByName)\n } catch (err) {\n loadErr.push(`Failed to fetch ${ref} ${hookType} from ${src} - ${err.message} `)\n }\n }\n try {\n return tryLoadFromSource(tryLoad.tryLoadPackageName, tryLoad.tryLoadAsserterByName)\n } catch (err) {\n loadErr.push(`Failed to fetch ${ref} ${hookType} from ${src} - ${err.message} `)\n }\n }\n\n loadErr.forEach(debug)\n }\n throw new Error(`Failed to fetch ${ref} ${hookType}, no idea how to load ...`)\n }\n}\n","module.exports = {\n SCRIPTING_FORMAT_XSLX: 'SCRIPTING_FORMAT_XSLX',\n SCRIPTING_FORMAT_TXT: 'SCRIPTING_FORMAT_TXT',\n SCRIPTING_FORMAT_YAML: 'SCRIPTING_FORMAT_YAML',\n SCRIPTING_FORMAT_JSON: 'SCRIPTING_FORMAT_JSON',\n SCRIPTING_FORMAT_CSV: 'SCRIPTING_FORMAT_CSV',\n SCRIPTING_FORMAT_MARKDOWN: 'SCRIPTING_FORMAT_MARKDOWN',\n SCRIPTING_TYPE_CONVO: 'SCRIPTING_TYPE_CONVO',\n SCRIPTING_TYPE_PCONVO: 'SCRIPTING_TYPE_PCONVO',\n SCRIPTING_TYPE_UTTERANCES: 'SCRIPTING_TYPE_UTTERANCES',\n SCRIPTING_TYPE_SCRIPTING_MEMORY: 'SCRIPTING_TYPE_SCRIPTING_MEMORY'\n}\n","module.exports = class BotiumMockAttachment {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.mimeType = fromJson.mimeType\n this.base64 = fromJson.base64\n this.href = fromJson.href\n }\n}\n","const _ = require('lodash')\n\nclass BotiumMockMedia {\n constructor (fromJson = {}) {\n this.mediaUri = fromJson.mediaUri\n this.mimeType = fromJson.mimeType\n this.altText = fromJson.altText\n this.downloadUri = fromJson.downloadUri\n this.buffer = fromJson.buffer\n }\n\n prettify (indent = 0) {\n const sections = []\n if (this.mediaUri) sections.push(_.truncate(this.mediaUri, { length: 200 }))\n if (this.mimeType) sections.push(this.mimeType)\n if (this.altText) sections.push(this.altText)\n return `${' '.repeat(indent)}MEDIA(${sections.join(' | ')})`\n }\n}\n\nclass BotiumMockButton {\n constructor (fromJson = {}) {\n this.text = fromJson.text\n this.payload = fromJson.payload\n this.imageUri = fromJson.imageUri\n }\n\n prettify (indent = 0) {\n const sections = []\n if (this.text) sections.push(this.text)\n if (this.payload) sections.push(_.isObject(this.payload) ? JSON.stringify(this.payload) : this.payload)\n if (this.imageUri) sections.push(_.truncate(this.imageUri, { length: 200 }))\n return `${' '.repeat(indent)}BUTTON(${sections.join(' | ')})`\n }\n}\n\nclass BotiumMockCard {\n constructor (fromJson = {}) {\n this.text = fromJson.text\n this.subtext = fromJson.subtext\n this.content = fromJson.content\n this.sourceData = fromJson.sourceData\n this.image = (fromJson.image ? new BotiumMockMedia(fromJson.image) : null)\n this.buttons = (fromJson.buttons ? fromJson.buttons.map((a) => new BotiumMockButton(a)) : null)\n this.media = (fromJson.media ? fromJson.media.map((a) => new BotiumMockMedia(a)) : null)\n this.forms = (fromJson.forms ? fromJson.forms.map((a) => new BotiumMockForm(a)) : null)\n this.cards = (fromJson.cards ? fromJson.cards.map((a) => new BotiumMockCard(a)) : null)\n this.sourceData = fromJson.sourceData\n }\n\n prettify (indent = 0) {\n return this._prettifyLines(this, indent).join('\\n')\n }\n\n _prettifyLines (card, indent) {\n const prettifySafe = (entry, indent) => entry.prettify ? entry.prettify(2) : `${' '.repeat(indent)}<No botium object!>${JSON.stringify(entry)}`\n\n const sections = []\n if (card.text) sections.push(card.text)\n if (card.subtext) sections.push(card.subtext)\n\n const lines = []\n if (card.image) lines.push(card.image.prettify(indent + 2))\n if (card.media) lines.push(...card.media.map(m => prettifySafe(m, indent + 2)))\n if (card.buttons) lines.push(...card.buttons.map(b => prettifySafe(b, indent + 2)))\n if (card.forms) lines.push(...card.forms.map(f => prettifySafe(f, indent + 2)))\n if (card.cards) lines.push(...card.cards.map(c => this._prettifyLines(c, indent + 2)))\n\n return [\n `${' '.repeat(indent)}CARD(${sections.join(' | ')})`,\n ...lines\n ]\n }\n}\n\nclass BotiumMockForm {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.value = fromJson.value\n\n this.label = fromJson.label\n this.type = fromJson.type\n this.options = (fromJson.options ? fromJson.options.map((c) => new BotiumMockChoice(c)) : null)\n }\n\n prettify (indent = 0) {\n const sections = []\n if (this.name) sections.push(this.name)\n if (this.label) sections.push(this.label)\n if (this.value) sections.push(this.value)\n return `${' '.repeat(indent)}FORM(${sections.join(' | ')})`\n }\n}\n\nclass BotiumMockChoice {\n constructor (fromJson = {}) {\n this.title = fromJson.title\n this.value = fromJson.value\n }\n}\n\nmodule.exports = {\n BotiumMockMedia,\n BotiumMockButton,\n BotiumMockCard,\n BotiumMockForm\n}\n","const _ = require('lodash')\n\nclass BotiumMockAsserter {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.args = _.cloneDeep(fromJson.args)\n }\n}\nclass BotiumMockUserInput {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.args = _.cloneDeep(fromJson.args)\n }\n}\nclass BotiumMockLogicHook {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.args = _.cloneDeep(fromJson.args)\n }\n}\n\nmodule.exports = {\n BotiumMockAsserter,\n BotiumMockUserInput,\n BotiumMockLogicHook\n}\n","const BotiumMockAttachment = require('./BotiumMockAttachment')\nconst { BotiumMockMedia, BotiumMockButton, BotiumMockCard, BotiumMockForm } = require('./BotiumMockRichMessageTypes')\nconst { BotiumMockAsserter, BotiumMockUserInput, BotiumMockLogicHook } = require('./BotiumMockScripting')\n\nmodule.exports = class BotiumMockMessage {\n constructor (fromJson = {}) {\n this.sender = fromJson.sender\n this.channel = fromJson.channel\n this.not = fromJson.not\n this.optional = fromJson.optional\n this.messageText = fromJson.messageText\n this.media = (fromJson.media ? fromJson.media.map((a) => new BotiumMockMedia(a)) : null)\n this.buttons = (fromJson.buttons ? fromJson.buttons.map((a) => new BotiumMockButton(a)) : null)\n this.cards = (fromJson.cards ? fromJson.cards.map((a) => new BotiumMockCard(a)) : null)\n this.forms = (fromJson.forms ? fromJson.forms.map((a) => new BotiumMockForm(a)) : null)\n this.nlp = fromJson.nlp\n this.sourceData = fromJson.sourceData\n this.sourceAction = fromJson.sourceAction\n this.attachments = (fromJson.attachments ? fromJson.attachments.map((a) => new BotiumMockAttachment(a)) : null)\n this.asserters = (fromJson.asserters ? fromJson.asserters.map((a) => new BotiumMockAsserter(a)) : null)\n this.userInputs = (fromJson.userInputs ? fromJson.userInputs.map((a) => new BotiumMockUserInput(a)) : null)\n this.logicHooks = (fromJson.logicHooks ? fromJson.logicHooks.map((a) => new BotiumMockLogicHook(a)) : null)\n }\n\n prettify () {\n const prettifySafe = (entry) => entry.prettify ? entry.prettify(2) : `${' '.repeat(2)}<No botium object!>${JSON.stringify(entry)}`\n const lines = []\n if (this.messageText) lines.push(this.messageText)\n if (this.media && this.media.length > 0) lines.push(...this.media.map(m => prettifySafe(m)))\n if (this.buttons && this.buttons.length > 0) lines.push(...this.buttons.map(b => prettifySafe(b)))\n if (this.cards && this.cards.length > 0) lines.push(...this.cards.map(c => prettifySafe(c)))\n if (this.forms && this.forms.length > 0) lines.push(...this.forms.map(f => prettifySafe(f)))\n\n if (lines.length === 0) return `#${this.sender}:`\n\n return [\n `#${this.sender}: ${lines[0]}`,\n ...lines.slice(1)\n ].join('\\n')\n }\n}\n","module.exports = {\n E_SCRIPTING_MEMORY_COLUMN_MODE: {\n VARNAMES: 'varnames',\n TESTCASENAMES: 'testcasenames'\n }\n}\n","const _ = require('lodash')\nconst isJSON = require('is-json')\n\nconst { E_SCRIPTING_MEMORY_COLUMN_MODE } = require('../Enums')\n\nconst normalizeText = (str, doCleanup) => {\n if (str && _.isArray(str)) {\n str = str.join(' ')\n } else if (str && !_.isString(str)) {\n if (str.toString) {\n str = str.toString()\n } else {\n str = `${str}`\n }\n }\n if (str && doCleanup) {\n // remove html tags\n str = str.replace(/<p[^>]*>/g, ' ')\n str = str.replace(/<\\/p>/g, ' ')\n str = str.replace(/<br[^>]*>/g, ' ')\n str = str.replace(/<[^>]*>/g, '')\n /* eslint-disable no-control-regex */\n // remove not printable characters\n str = str.replace(/[\\x00-\\x1F\\x7F]/g, ' ')\n /* eslint-enable no-control-regex */\n // replace html entities\n str = str\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/'/g, '\\'')\n .replace(/"/g, '\"')\n // replace two spaces with one\n str = str.replace(/\\s+/g, ' ')\n\n str = str.split('\\n').map(s => s.trim()).join('\\n').trim()\n }\n return str\n}\n\nconst splitStringInNonEmptyLines = (str) => str ? str.split('\\n').map(s => s.trim()).filter(s => s.length > 0) : []\n\nconst quoteRegexpString = (str) => {\n return str.replace(/[-\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n}\n\nconst removeBuffers = obj => {\n const jsonString = JSON.stringify(obj, (key, value) => {\n if (_.isBuffer(value)) {\n return '(binary data)'\n } else if (value && value.type && value.type === 'Buffer') {\n return '(binary data)'\n } else if (key.toLowerCase() === 'base64') {\n return '(base64 data)'\n } else if (_.isString(value) && value.startsWith('data:')) {\n return '(base64 data url)'\n }\n return value\n })\n return JSON.parse(jsonString)\n}\n\nconst toString = (value) => {\n if (_.isUndefined(value)) return undefined\n if (_.isString(value)) return value\n if (_.isNumber(value)) return value.toString()\n if (_.isArray(value)) return value.map(v => toString(v)).join(',')\n try {\n return JSON.stringify(value)\n } catch (err) {\n }\n if (value && value.toString) return value.toString()\n return '' + value\n}\n\nconst flatString = (str) => {\n return str ? str.split('\\n').map(s => s.trim()).join(' ') : ''\n}\n\nconst linesToConvoStep = (lines, sender, context, eol, singleLineMode = false) => {\n if (!validateSender(sender)) throw new Error(`Failed to parse conversation. Section \"${sender}\" unknown.`)\n\n const convoStep = { asserters: [], logicHooks: [], userInputs: [], not: false, optional: false, sender }\n\n let textLinesRaw = []\n const textLines = []\n // local eslint accepts it without disable, but build on github does not\n // eslint-disable-next-line no-unused-vars\n let textLinesAccepted = true\n for (const rawLine of lines) {\n if (_.isString(rawLine)) {\n let optional = false\n let not = false\n let logicLine = rawLine\n if (logicLine.startsWith('?')) {\n if (!logicLine.startsWith('??')) {\n optional = true\n }\n logicLine = logicLine.substr(1)\n }\n if (logicLine.startsWith('!')) {\n if (!logicLine.startsWith('!!')) {\n not = true\n }\n logicLine = logicLine.substr(1)\n }\n const name = logicLine.split(' ')[0]\n if (sender !== 'me' && context.IsAsserterValid(name)) {\n const args = (logicLine.length > name.length ? logicLine.substr(name.length + 1).split('|').map(a => a.trim()) : [])\n convoStep.asserters.push({ name, args, not, optional })\n } else if (sender === 'me' && context.IsUserInputValid(name)) {\n const args = (logicLine.length > name.length ? logicLine.substr(name.length + 1).split('|').map(a => a.trim()) : [])\n convoStep.userInputs.push({ name, args })\n textLinesAccepted = false\n } else if (context.IsLogicHookValid(name)) {\n const args = (logicLine.length > name.length ? logicLine.substr(name.length + 1).split('|').map(a => a.trim()) : [])\n convoStep.logicHooks.push({ name, args })\n textLinesAccepted = false\n } else {\n if (sender === 'me') {\n if (!textLinesAccepted) {\n if (rawLine.trim().length) {\n throw new Error(`Failed to parse conversation. No text expected here: '${rawLine.trim()}' in convo:\\n ${lines.join('\\n')}`)\n } else {\n // skip empty lines\n }\n } else {\n textLinesRaw.push(rawLine)\n }\n } else {\n textLinesRaw.push(rawLine)\n }\n }\n // line is not textline if it is empty, and there is no line with data after it.\n if (textLinesRaw.length > 0) {\n if (rawLine.trim().length) {\n textLines.push(...textLinesRaw)\n textLinesRaw = []\n }\n }\n } else if (_.isObject(rawLine)) {\n if (rawLine.asserter) {\n if (sender !== 'bot') throw new Error(`Failed to parse conversation. No asserter \"${rawLine.asserter}\" expected in section \"${sender}\"`)\n if (!context.IsAsserterValid(rawLine.asserter)) throw new Error(`Failed to parse conversation. No asserter \"${rawLine.asserter}\" registered for section \"${sender}\"`)\n convoStep.asserters.push({\n name: rawLine.asserter,\n args: (rawLine.args && _.isString(rawLine.args) ? [rawLine.args] : rawLine.args) || [],\n not: !!rawLine.not,\n optional: !!rawLine.optional\n })\n } else if (rawLine.logichook || rawLine.logicHook) {\n const logicHookName = rawLine.logichook || rawLine.logicHook\n if (!context.IsLogicHookValid(logicHookName)) throw new Error(`Failed to parse conversation. No logichook \"${logicHookName}\" registered for section \"${sender}\"`)\n convoStep.logicHooks.push({\n name: logicHookName,\n args: (rawLine.args && _.isString(rawLine.args) ? [rawLine.args] : rawLine.args) || []\n })\n } else if (rawLine.userinput || rawLine.userInput) {\n const userInputName = rawLine.userinput || rawLine.userInput\n if (sender !== 'me') throw new Error(`Failed to parse conversation. No userinput \"${userInputName}\" expected in section \"${sender}\"`)\n if (!context.IsUserInputValid(userInputName)) throw new Error(`Failed to parse conversation. No userinput \"${userInputName}\" registered for section \"${sender}\"`)\n convoStep.userInputs.push({\n name: userInputName,\n args: (rawLine.args && _.isString(rawLine.args) ? [rawLine.args] : rawLine.args) || []\n })\n } else {\n let name = Object.keys(rawLine)[0]\n const content = rawLine[name]\n let optional = false\n let not = false\n if (name.startsWith('?')) {\n optional = true\n name = name.substr(1)\n } else if (name.startsWith('OPTIONAL_')) {\n optional = true\n name = name.substr(9)\n }\n if (name.startsWith('!')) {\n not = true\n name = name.substr(1)\n } else if (name.startsWith('NOT_')) {\n not = true\n name = name.substr(4)\n }\n if (sender !== 'me' && context.IsAsserterValid(name)) {\n convoStep.asserters.push({\n name,\n args: (content && _.isString(content) ? [content] : content) || [],\n not,\n optional\n })\n } else if (sender === 'me' && context.IsUserInputValid(name)) {\n convoStep.userInputs.push({\n name,\n args: (content && _.isString(content) ? [content] : content) || []\n })\n } else if (context.IsLogicHookValid(name)) {\n convoStep.logicHooks.push({\n name,\n args: (content && _.isString(content) ? [content] : content) || []\n })\n } else {\n throw new Error(`Failed to parse conversation. Line not recognized '${JSON.stringify(rawLine)}'`)\n }\n }\n } else {\n throw new Error(`Failed to parse conversation. Line not recognized '${JSON.stringify(rawLine)}'`)\n }\n }\n\n // deal with just message convosteps\n if (textLinesRaw.length >= 1 && textLines.length === 0) {\n textLines.push(...textLinesRaw)\n textLinesRaw.pop()\n }\n\n if (textLines.length > 0) {\n if (textLines[0].startsWith('?')) {\n if (!textLines[0].startsWith('??')) {\n convoStep.optional = true\n }\n textLines[0] = textLines[0].substr(1)\n }\n if (textLines[0].startsWith('!')) {\n if (!textLines[0].startsWith('!!')) {\n convoStep.not = true\n }\n textLines[0] = textLines[0].substr(1)\n }\n const content = textLines.join(' ')\n if (isJSON(content)) {\n convoStep.sourceData = JSON.parse(content)\n } else {\n /// csv has always just 1 line, and has no eol setting\n if (singleLineMode) {\n convoStep.messageText = textLines[0]\n } else {\n if (eol === null) {\n throw new Error('eol cant be null')\n }\n convoStep.messageText = textLines.join(eol).trim()\n }\n }\n } else {\n // no message is different from empty message\n convoStep.messageText = null\n }\n\n // Check if all element in convo step is optional or not optional\n const optionalSet = new Set()\n if (convoStep.messageText) {\n optionalSet.add(convoStep.optional)\n }\n for (const asserter of convoStep.asserters) {\n optionalSet.add(asserter.optional)\n }\n if (optionalSet.size > 1) {\n throw new Error(`Failed to parse conversation. All element in convo step has to be optional or not optional: ${JSON.stringify(lines)}`)\n }\n\n return convoStep\n}\n\nconst convoStepToObject = (step) => {\n const result = []\n if (step.sender === 'me') {\n for (const form of (step.forms || []).filter(form => form.value)) {\n result.push({\n userinput: 'FORM',\n args: [form.name, form.value]\n })\n }\n if (step.buttons && step.buttons.length > 0) {\n const userinput = {\n userinput: 'BUTTON',\n args: []\n }\n if (step.buttons[0].payload) {\n userinput.args.push(step.buttons[0].payload)\n if (step.buttons[0].text) {\n userinput.args.push(step.buttons[0].text)\n }\n } else {\n userinput.args.push(step.buttons[0].text)\n }\n result.push(userinput)\n } else if (step.media && step.media.length > 0) {\n result.push({\n userinput: 'MEDIA',\n args: [step.media[0].mediaUri]\n })\n } else if (step.messageText) {\n result.push(step.messageText)\n }\n for (const logicHook of step.logicHooks || []) {\n result.push({\n logichook: logicHook.name,\n args: logicHook.args || []\n })\n }\n } else {\n if (step.messageText) {\n let messageTextPrefix = ''\n if (step.optional) messageTextPrefix += '?'\n if (step.not) messageTextPrefix += '!'\n result.push(messageTextPrefix + step.messageText)\n }\n if (step.buttons && step.buttons.length > 0) {\n result.push({\n asserter: 'BUTTONS',\n args: step.buttons.map(b => flatString(b.text))\n })\n }\n if (step.media && step.media.length > 0) {\n result.push({\n asserter: 'MEDIA',\n args: step.media.map(m => { return m.buffer && m.buffer.startsWith('data:') ? 'data:' : m.mediaUri })\n })\n }\n if (step.cards && step.cards.length > 0) {\n step.cards.forEach(c => {\n let cardTexts = []\n if (c.text) cardTexts = cardTexts.concat(_.isArray(c.text) ? c.text : [c.text])\n if (c.subtext) cardTexts = cardTexts.concat(_.isArray(c.subtext) ? c.subtext : [c.subtext])\n if (c.content) cardTexts = cardTexts.concat(_.isArray(c.content) ? c.content : [c.content])\n if (cardTexts.length > 0) {\n result.push({\n asserter: 'CARDS',\n args: cardTexts.map(c => flatString(c))\n })\n }\n\n if (c.buttons && c.buttons.length > 0) {\n result.push({\n asserter: 'BUTTONS',\n args: c.buttons.map(b => b.text)\n })\n }\n if (c.image) {\n result.push({\n asserter: 'MEDIA',\n args: c.image.mediaUr,\n not: !!step.not\n })\n }\n })\n }\n for (const asserter of step.asserters || []) {\n result.push({\n asserter: asserter.name,\n args: asserter.args || [],\n optional: !!asserter.optional,\n not: !!asserter.not\n })\n }\n for (const logicHook of step.logicHooks || []) {\n result.push({\n logichook: logicHook.name,\n args: logicHook.args || []\n })\n }\n }\n return result\n}\n\nconst validSenders = ['begin', 'include', 'me', 'bot', 'end']\n\nconst validateSender = (sender) => {\n if (validSenders.indexOf(sender) >= 0) return true\n else return false\n}\n\nconst validateConvo = (convo) => {\n const validationResult = {\n errors: []\n }\n for (let i = 0; i < convo.conversation.length; i++) {\n const step = convo.conversation[i]\n if (step.sender === 'bot') {\n // Check if all element in convo step is optional or not optional\n const optionalSet = new Set()\n if (step.messageText) {\n optionalSet.add(step.optional)\n }\n if (step.asserters) {\n for (const asserter of step.asserters) {\n optionalSet.add(asserter.optional)\n }\n }\n if (optionalSet.size > 1) {\n validationResult.errors.push(new Error(`Step ${i + 1}: Failed to decompile conversation. Mixed optional flag is not allowed inside one step.`))\n }\n\n if (optionalSet.size === 1 && optionalSet.has(true)) {\n const nextStep = convo.conversation[i + 1]\n if (!nextStep || nextStep.sender !== 'bot') {\n validationResult.errors.push(new Error(`Step ${i + 1}: Optional bot convo step has to be followed by a bot convo step.`))\n }\n }\n }\n if (!validateSender(step.sender)) {\n validationResult.errors.push(new Error(`Step ${i + 1}: Sender #${step.sender} is invalid.`))\n }\n }\n return validationResult\n}\n\nconst _decompileButton = (b) => {\n let buttonScript = ''\n if (b.payload) {\n buttonScript += _.isObject(b.payload) ? JSON.stringify(b.payload) : flatString(b.payload)\n if (b.text) {\n buttonScript += `|${flatString(b.text)}`\n }\n } else {\n buttonScript += flatString(b.text)\n }\n return buttonScript\n}\n\nconst convoStepToLines = (step) => {\n const lines = []\n if (step.sender === 'me') {\n step.forms && step.forms.filter(form => form.value).forEach((form) => {\n lines.push(`FORM ${form.name}|${form.value}`)\n })\n if (step.buttons && step.buttons.length > 0) {\n lines.push('BUTTON ' + _decompileButton(step.buttons[0]))\n } else if (step.media && step.media.length > 0) {\n lines.push('MEDIA ' + step.media[0].mediaUri)\n } else if (step.messageText) {\n lines.push(step.messageText)\n }\n step.userInputs && step.userInputs.forEach((userInput) => {\n lines.push(userInput.name + (userInput.args ? ' ' + userInput.args.join('|') : ''))\n })\n step.logicHooks && step.logicHooks.forEach((logicHook) => {\n lines.push(logicHook.name + (logicHook.args ? ' ' + logicHook.args.join('|') : ''))\n })\n } else {\n if (step.messageText) {\n lines.push((step.optional ? '?' : '') + (step.not ? '!' : '') + step.messageText)\n }\n if (step.buttons && step.buttons.length > 0) lines.push('BUTTONS ' + step.buttons.filter(b => b.text).map(b => flatString(b.text)).join('|'))\n if (step.media && step.media.length > 0) lines.push('MEDIA ' + step.media.filter(m => !m.buffer && m.mediaUri).map(m => m.mediaUri).join('|'))\n if (step.cards && step.cards.length > 0) {\n step.cards.forEach(c => {\n let cardTexts = []\n if (c.text) cardTexts = cardTexts.concat(_.isArray(c.text) ? c.text : [c.text])\n if (c.subtext) cardTexts = cardTexts.concat(_.isArray(c.subtext) ? c.subtext : [c.subtext])\n if (c.content) cardTexts = cardTexts.concat(_.isArray(c.content) ? c.content : [c.content])\n if (cardTexts.length > 0) lines.push('CARDS ' + cardTexts.map(c => flatString(c)).join('|'))\n\n if (c.buttons && c.buttons.length > 0) lines.push('BUTTONS ' + c.buttons.filter(b => b.text).map(b => flatString(b.text)).join('|'))\n if (c.image && !c.image.buffer && c.image.mediaUri) lines.push('MEDIA ' + c.image.mediaUri)\n })\n }\n step.asserters && step.asserters.forEach((asserter) => {\n lines.push((asserter.optional ? '?' : '') + (asserter.not ? '!' : '') + asserter.name + (asserter.args ? ' ' + asserter.args.join('|') : ''))\n })\n step.logicHooks && step.logicHooks.forEach((logicHook) => {\n lines.push(logicHook.name + (logicHook.args ? ' ' + logicHook.args.join('|') : ''))\n })\n }\n return lines.map(l => l.trim())\n}\n\nconst linesToScriptingMemories = (lines, columnMode = null) => {\n const guessScriptingMemoryColumnMode = (lines) => {\n if (lines && lines.length > 1) {\n if (lines[1].trim().startsWith('$')) return E_SCRIPTING_MEMORY_COLUMN_MODE.TESTCASENAMES\n }\n return E_SCRIPTING_MEMORY_COLUMN_MODE.VARNAMES\n }\n columnMode = columnMode || guessScriptingMemoryColumnMode(lines)\n\n const scriptingMemories = []\n\n if (columnMode === E_SCRIPTING_MEMORY_COLUMN_MODE.TESTCASENAMES) {\n const caseNames = lines[0].split('|').map((name) => name.trim()).slice(1)\n\n const varNames = []\n const varValues = []\n for (let row = 1; row < lines.length; row++) {\n if (!lines[row] || lines[row].length === 0) continue\n const rawRow = lines[row].split('|').map((name) => name.trim())\n varNames.push(rawRow[0])\n varValues.push(rawRow.slice(1))\n }\n for (let caseIndex = 0; caseIndex < caseNames.length; caseIndex++) {\n const caseName = caseNames[caseIndex]\n\n const values = varNames.reduce((agg, varName, varIndex) => {\n agg[varName] = varValues[varIndex][caseIndex] || null\n return agg\n }, {})\n const scriptingMemory = { header: { name: caseName }, values: values }\n scriptingMemories.push(scriptingMemory)\n }\n } else {\n const varNames = lines[0].split('|').map((name) => name.trim()).slice(1)\n for (let row = 1; row < lines.length; row++) {\n if (!lines[row] || lines[row].length === 0) continue\n const rawRow = lines[row].split('|').map((name) => name.trim())\n const caseName = rawRow[0]\n const values = rawRow.slice(1)\n const varValues = {}\n for (let varIndex = 0; varIndex < varNames.length; varIndex++) {\n varValues[varNames[varIndex]] = values[varIndex]\n }\n const scriptingMemory = { header: { name: caseName }, values: varValues }\n scriptingMemories.push(scriptingMemory)\n }\n }\n return scriptingMemories\n}\n\nmodule.exports = {\n normalizeText,\n splitStringInNonEmptyLines,\n quoteRegexpString,\n toString,\n flatString,\n removeBuffers,\n linesToConvoStep,\n convoStepToLines,\n convoStepToObject,\n validSenders,\n validateSender,\n validateConvo,\n linesToScriptingMemories\n}\n","const util = require('util')\nconst debug = require('debug')('botium-core-ScriptingMemory')\nconst randomize = require('randomatic')\nconst { v1: uuidv1 } = require('uuid')\nconst moment = require('moment')\nconst { NodeVM } = require('vm2')\nconst _ = require('lodash')\nconst path = require('path')\nconst jp = require('jsonpath')\n\nconst Capabilities = require('../Capabilities')\nconst { quoteRegexpString, toString } = require('./helper')\nconst { BotiumError } = require('./BotiumError')\n\n// If they got parameter, then it will be a string always.\n// the receiver can decide what to do with it,\n// convert to int,\n// split by ',' for multiple params,\n// or something else\nconst SCRIPTING_FUNCTIONS_RAW = {\n $now: () => {\n return new Date().toLocaleString()\n },\n $now_EN: () => {\n return new Date().toLocaleString('en-EN')\n },\n $now_DE: () => {\n return moment().format('DD.MM.YYYY, HH:mm:ss')\n },\n $now_ISO: () => {\n return new Date().toISOString()\n },\n\n $date: (pattern) => {\n if (pattern) {\n return moment().format(pattern)\n }\n return new Date().toLocaleDateString()\n },\n $date_EN: () => {\n return new Date().toLocaleDateString('en-EN')\n },\n $date_DE: () => {\n return moment().format('YYYY.MM.DD')\n },\n $date_ISO: () => {\n return moment().format('YYYY-MM-DD')\n },\n\n $time: () => {\n return new Date().toLocaleTimeString()\n },\n $time_EN: () => {\n return new Date().toLocaleTimeString('en-EN')\n },\n $time_DE: () => {\n return moment().format('HH:mm:ss')\n },\n $time_ISO: () => {\n return moment().format('HH:mm:ss')\n },\n $time_HH_MM: () => {\n return moment().format('HH:mm')\n },\n $time_HH: () => {\n return moment().format('HH')\n },\n $time_H_A: () => {\n return moment().format('h A')\n },\n\n $timestamp: () => {\n return Date.now()\n },\n\n $year: () => {\n return new Date().getFullYear()\n },\n $month: () => {\n return moment().format('MMMM')\n },\n $month_MM: () => {\n return moment().format('MM')\n },\n $day_of_month: () => {\n return new Date().getDate()\n },\n $day_of_week: () => {\n return moment().format('dddd')\n },\n\n $random: (length) => {\n if (length == null) {\n throw Error('random function used without args!')\n }\n return randomize('0', length)\n },\n $random10: () => {\n return randomize('0', 10)\n },\n\n $uniqid: () => {\n return uuidv1()\n },\n\n $projectname: {\n handler: (caps) => {\n return caps[Capabilities.PROJECTNAME]\n }\n },\n\n $testsessionname: {\n handler: (caps) => {\n return caps[Capabilities.TESTSESSIONNAME]\n }\n },\n\n $testcasename: {\n handler: (caps) => {\n return caps[Capabilities.TESTCASENAME]\n }\n },\n\n $env: {\n handler: (caps, name) => {\n if (!name) {\n throw Error('env function used without args!')\n }\n return process.env[name]\n },\n numberOfArguments: 1,\n unsafe: true\n },\n\n $cap: {\n handler: (caps, name) => {\n if (!name) {\n throw Error('cap function used without args!')\n }\n return caps[name]\n },\n numberOfArguments: 1\n },\n\n $msg: {\n handler: (caps, jsonPath, mockMsg) => {\n if (!jsonPath) {\n throw Error('msg function used without jsonpath!')\n }\n if (!mockMsg) {\n throw Error('msg function used at invalid position!')\n }\n const root = jp.query(mockMsg, jsonPath)\n if (root && root.length > 0) return root[0]\n else return ''\n },\n numberOfArguments: 1\n },\n\n $func: {\n handler: (caps, code) => {\n if (code == null) {\n throw Error('func function used without args!')\n }\n try {\n const vm = new NodeVM({\n eval: false,\n require: false,\n env: caps[Capabilities.SECURITY_ALLOW_UNSAFE] ? process.env : {},\n sandbox: {\n caps\n }\n })\n return vm.run(`module.exports = (${code})`)\n } catch (err) {\n throw Error(`func function execution failed - ${err}`)\n }\n },\n numberOfArguments: 1\n }\n}\n\nconst SCRIPTING_FUNCTIONS = _.mapValues(SCRIPTING_FUNCTIONS_RAW, (funcOrStruct, name) => {\n const func = funcOrStruct.handler || funcOrStruct\n const numberOfArguments = funcOrStruct.handler ? funcOrStruct.numberOfArguments || 0 : funcOrStruct.length\n\n return {\n handler: (caps, ...rest) => {\n if (!caps[Capabilities.SECURITY_ALLOW_UNSAFE] && funcOrStruct.unsafe) {\n throw new BotiumError(\n `Security Error. Using unsafe scripting memory function ${name} is not allowed`,\n {\n type: 'security',\n subtype: 'allow unsafe',\n source: path.basename(__filename),\n cause: {\n SECURITY_ALLOW_UNSAFE: caps[Capabilities.SECURITY_ALLOW_UNSAFE],\n functionName: name\n }\n }\n )\n }\n if (funcOrStruct.handler) {\n return func(caps, ...rest)\n } else {\n return func(...rest)\n }\n },\n numberOfArguments\n }\n})\nconst RESERVED_WORDS = Object.keys(SCRIPTING_FUNCTIONS)\n\nconst apply = (container, scriptingMemory, str, mockMsg) => {\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MEMORY]) {\n str = _apply(scriptingMemory, str, container.caps, mockMsg)\n }\n return str\n}\n\nconst applyToArgs = (args, scriptingMemory, caps, mockMsg) => {\n return (args || []).map(arg => {\n return _apply(scriptingMemory, arg, caps, mockMsg)\n })\n}\n\n// we have two replace longer variable first. if there is $year, and $years, $years should not be found by $year\nconst _longestFirst = (a, b) => b.length - a.length\n\nconst _apply = (scriptingMemory, str, caps, mockMsg) => {\n if (str) {\n scriptingMemory = scriptingMemory || {}\n str = toString(str)\n\n // merge all keys: longer is stronger, type does not matter\n // Not clean: what if a variable references other variable/function?\n const allKeys = Object.keys(SCRIPTING_FUNCTIONS).concat(Object.keys(scriptingMemory)).sort(_longestFirst)\n for (const key of allKeys) {\n // scripting memory is stronger\n if (_.has(scriptingMemory, key)) {\n const keyRegexp = new RegExp(`\\\\${key}`, 'g')\n str = str.replace(keyRegexp, scriptingMemory[key])\n } else {\n const regex = `\\\\${key}(\\\\(.+?(?<!\\\\\\\\)\\\\))?`\n const matches = str.match(new RegExp(regex, 'g')) || []\n for (const match of matches) {\n if (match.indexOf('(') > 0) {\n const arg = match.substring(match.indexOf('(') + 1, match.lastIndexOf(')')).replace(/\\\\\\)/g, ')')\n str = str.replace(match, SCRIPTING_FUNCTIONS[key].handler(caps, arg, mockMsg))\n } else {\n str = str.replace(match, SCRIPTING_FUNCTIONS[key].handler(caps))\n }\n }\n }\n }\n }\n return str\n}\n\nconst extractVarNames = (text) => {\n return ((_.isString(text) ? text.match(/\\$[A-Za-z]\\w+/g) : false) || [])\n}\n\nconst fill = (container, scriptingMemory, result, utterance, scriptingEvents) => {\n debug(`fill start: ${util.inspect(scriptingMemory)}`)\n let varRegex\n switch (container.caps[Capabilities.SCRIPTING_MEMORY_MATCHING_MODE]) {\n case 'word':\n varRegex = '(\\\\w+)'\n break\n case 'joker':\n varRegex = '([\\\\w\\\\W]+)'\n break\n default:\n varRegex = '(\\\\S+)'\n break\n }\n\n if (result && _.isString(result) && utterance && container.caps[Capabilities.SCRIPTING_ENABLE_MEMORY]) {\n const utterances = scriptingEvents.resolveUtterance({ utterance })\n utterances.forEach(expected => {\n if (_.isUndefined(expected)) return\n expected = toString(expected)\n\n let reExpected = expected\n if (container.caps[Capabilities.SCRIPTING_MATCHING_MODE] !== 'regexp' && container.caps[Capabilities.SCRIPTING_MATCHING_MODE] !== 'regexpIgnoreCase') {\n reExpected = _.isString(expected) ? quoteRegexpString(expected).replace(/\\\\\\$/g, '$') : expected\n }\n const varMatches = extractVarNames(expected)\n for (let i = 0; i < varMatches.length; i++) {\n const varMatchesRegexp = new RegExp(`\\\\${varMatches[i]}`, 'g')\n reExpected = reExpected.replace(varMatchesRegexp, varRegex)\n }\n const resultMatches = result.match(reExpected) || []\n for (let i = 1; i < resultMatches.length; i++) {\n if (i <= varMatches.length) {\n const varName = varMatches[i - 1]\n if (RESERVED_WORDS.indexOf(varName) >= 0) {\n debug(`fill Variable \"${varName}\" is not overwritten, because it is reserved word. `)\n } else {\n scriptingMemory[varName] = resultMatches[i]\n }\n }\n }\n })\n debug(`fill end: ${util.inspect(scriptingMemory)}`)\n }\n}\n\nmodule.exports = {\n apply,\n applyToArgs,\n fill,\n extractVarNames,\n RESERVED_WORDS,\n SCRIPTING_FUNCTIONS\n}\n","const util = require('util')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-core-Convo')\n\nconst BotiumMockMessage = require('../mocks/BotiumMockMessage')\nconst Capabilities = require('../Capabilities')\nconst Events = require('../Events')\nconst ScriptingMemory = require('./ScriptingMemory')\nconst { BotiumError, botiumErrorFromErr, botiumErrorFromList } = require('./BotiumError')\nconst { normalizeText, toString, removeBuffers, splitStringInNonEmptyLines } = require('./helper')\n\nconst { LOGIC_HOOK_INCLUDE } = require('./logichook/LogicHookConsts')\n\nclass ConvoHeader {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.projectname = fromJson.projectname\n this.testsessionname = fromJson.testsessionname\n this.sort = fromJson.sort\n this.order = fromJson.order\n this.description = fromJson.description\n Object.assign(this, fromJson)\n }\n\n toString () {\n return this.order + ' ' + this.name + (this.description ? ` (${this.description})` : '')\n }\n}\n\nclass ConvoStepAssert {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.args = fromJson.args\n this.not = fromJson.not\n this.optional = fromJson.optional\n }\n\n toString () {\n return (this.optional ? '?' : '') + (this.not ? '!' : '') + this.name + '(' + (this.args ? this.args.map(a => _.truncate(a, { length: 200 })).join(',') : 'no args') + ')'\n }\n}\n\nclass ConvoStepLogicHook {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.args = fromJson.args\n }\n\n toString () {\n return this.name + '(' + (this.args ? this.args.map(a => _.truncate(a, { length: 200 })).join(',') : 'no args') + ')'\n }\n}\n\nclass ConvoStepUserInput {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.args = fromJson.args\n }\n\n toString () {\n return this.name + '(' + (this.args ? this.args.map(a => _.truncate(a, { length: 200 })).join(',') : 'no args') + ')'\n }\n}\n\nclass ConvoStep {\n constructor (fromJson = {}) {\n this.sender = fromJson.sender\n this.channel = fromJson.channel\n this.messageText = fromJson.messageText\n this.sourceData = fromJson.sourceData\n this.stepTag = fromJson.stepTag\n this.not = fromJson.not\n this.optional = fromJson.optional\n this.asserters = _.map(fromJson.asserters, (asserter) => new ConvoStepAssert(asserter))\n this.logicHooks = _.map(fromJson.logicHooks, (logicHook) => new ConvoStepLogicHook(logicHook))\n this.userInputs = _.map(fromJson.userInputs, (userInput) => new ConvoStepUserInput(userInput))\n }\n\n hasInteraction () {\n return (this.messageText && this.messageText.length > 0) ||\n this.sourceData ||\n (this.asserters && this.asserters.length > 0) ||\n (this.logicHooks && this.logicHooks.findIndex(l => l.name !== LOGIC_HOOK_INCLUDE) >= 0) ||\n (this.userInputs && this.userInputs.length > 0)\n }\n\n toString () {\n return (this.stepTag ? this.stepTag + ': ' : '') +\n '#' + this.sender +\n ' - ' + (this.optional ? '?' : '') + (this.not ? '!' : '') +\n (this.messageText || '') +\n (this.asserters && this.asserters.length > 0 ? ' ' + this.asserters.map(a => a.toString()).join(' ASS: ') : '') +\n (this.logicHooks && this.logicHooks.length > 0 ? ' ' + this.logicHooks.map(l => l.toString()).join(' LH: ') : '') +\n (this.userInputs && this.userInputs.length > 0 ? ' ' + this.userInputs.map(u => u.toString()).join(' UI: ') : '')\n }\n}\n\nclass Transcript {\n constructor ({ steps, attachments, scriptingMemory, convoBegin, convoEnd, err }) {\n this.steps = steps\n this.attachments = attachments\n this.scriptingMemory = scriptingMemory\n this.convoBegin = convoBegin\n this.convoEnd = convoEnd\n this.err = err\n }\n\n prettifyActual () {\n const prettifiedSteps = this.steps.map(step => {\n if (step.actual && step.actual.prettify) {\n return step.actual.prettify()\n } else {\n return '<empty conversation step>'\n }\n })\n return prettifiedSteps.join('\\n')\n }\n}\n\nclass TranscriptAttachment { // eslint-disable-line no-unused-vars\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.mimeType = fromJson.mimeType\n this.base64 = fromJson.base64\n this.href = fromJson.href\n }\n}\n\nclass TranscriptStep {\n constructor ({ expected, not, optional, actual, stepBegin, stepEnd, botBegin, botEnd, err }) {\n this.expected = expected\n this.not = not\n this.optional = optional\n this.actual = actual\n this.stepBegin = stepBegin\n this.stepEnd = stepEnd\n this.botBegin = botBegin\n this.botEnd = botEnd\n this.err = err\n }\n}\n\nclass TranscriptError extends Error {\n constructor (err, transcript) {\n super(err.message)\n this.name = this.constructor.name\n this.transcript = transcript\n this.cause = err\n Error.captureStackTrace(this, this.constructor)\n }\n}\n\nclass Convo {\n constructor (context, fromJson = {}) {\n if (fromJson instanceof Convo) {\n debug('Illegal state!!! Parameter should be a JSON, but it is a Convo')\n } else if (fromJson.beginAsserter) {\n // beginAsserter is one of the fields which are lost\n debug('Illegal state!!! Parameter should be a native JSON, but looks as a Convo converted to JSON')\n }\n\n this.scriptingEvents = context.scriptingEvents\n this.context = context\n this.header = new ConvoHeader(fromJson.header)\n if (fromJson.conversation && _.isArray(fromJson.conversation)) {\n this.conversation = _.map(fromJson.conversation, (step) => new ConvoStep(step))\n } else {\n this.conversation = []\n }\n this.sourceTag = fromJson.sourceTag\n const { beginAsserter, endAsserter } = this.setConvoBeginAndEndAsserter(fromJson)\n this.beginAsserter = beginAsserter\n this.endAsserter = endAsserter\n const { beginLogicHook, endLogicHook } = this.setConvoBeginAndEndLogicHook(fromJson)\n this.beginLogicHook = beginLogicHook\n this.endLogicHook = endLogicHook\n this.effectiveConversation = null\n }\n\n setConvoBeginAndEndAsserter (fromJson) {\n const beginAsserter = fromJson.conversation\n .filter(s => s.sender === 'begin' && s.asserters && s.asserters.length > 0)\n .map(s => s.asserters)\n .reduce((acc, val) => acc.concat(val), [])\n\n const endAsserter = fromJson.conversation\n .filter(s => s.sender === 'end' && s.asserters && s.asserters.length > 0)\n .map(s => s.asserters)\n .reduce((acc, val) => acc.concat(val), [])\n\n return { beginAsserter, endAsserter }\n }\n\n setConvoBeginAndEndLogicHook (fromJson) {\n const beginLogicHook = fromJson.conversation\n .filter(s => s.sender === 'begin' && s.logicHooks && s.logicHooks.length > 0)\n .map(s => s.logicHooks)\n .reduce((acc, val) => acc.concat(val), [])\n\n const endLogicHook = fromJson.conversation\n .filter(s => s.sender === 'end' && s.logicHooks && s.logicHooks.length > 0)\n .map(s => s.logicHooks)\n .reduce((acc, val) => acc.concat(val), [])\n\n return { beginLogicHook, endLogicHook }\n }\n\n toString () {\n return this.header.toString() + (this.sourceTag ? ` (${util.inspect(this.sourceTag)})` : '') + ': ' + this.conversation.map((c) => c.toString()).join(' | ')\n }\n\n async Run (container) {\n const transcript = new Transcript({\n steps: [],\n attachments: [],\n convoBegin: new Date(),\n convoEnd: null,\n err: null\n })\n const scriptingMemory = {\n }\n container.caps[Capabilities.TESTCASENAME] = this.header.name\n try {\n try {\n // onConvoBegin first or assertConvoBegin? If onConvoBegin, then it is possible to assert it too\n await this.scriptingEvents.onConvoBegin({ convo: this, convoStep: { stepTag: '#begin' }, container, transcript, scriptingMemory })\n } catch (err) {\n throw new TranscriptError(botiumErrorFromErr(`${this.header.name}: ${err.message}`, err), transcript)\n }\n try {\n await this.scriptingEvents.assertConvoBegin({ convo: this, convoStep: { stepTag: '#begin' }, container, scriptingMemory })\n } catch (err) {\n throw new TranscriptError(botiumErrorFromErr(`${this.header.name}: ${err.message}`, err), transcript)\n }\n await this.runConversation(container, scriptingMemory, transcript)\n await this._checkBotRepliesConsumed(container)\n try {\n await this.scriptingEvents.onConvoEnd({ convo: this, convoStep: { stepTag: '#end' }, container, transcript, scriptingMemory: scriptingMemory })\n } catch (err) {\n throw new TranscriptError(botiumErrorFromErr(`${this.header.name}: ${err.message}`, err), transcript)\n }\n if (transcript.err && container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n let assertConvoEndErr = null\n try {\n await this.scriptingEvents.assertConvoEnd({ convo: this, convoStep: { stepTag: '#end' }, container, transcript, scriptingMemory: scriptingMemory })\n } catch (err) {\n assertConvoEndErr = botiumErrorFromErr(`${this.header.name}: ${err.message}`, err)\n }\n if (assertConvoEndErr) {\n const err = transcript.err\n transcript.err = botiumErrorFromList([transcript.err, assertConvoEndErr], {})\n transcript.err.context.input = err.context.input\n transcript.err.context.transcript = err.context.transcript\n }\n throw new TranscriptError(transcript.err, transcript)\n } else if (transcript.err) {\n throw new TranscriptError(transcript.err, transcript)\n }\n try {\n await this.scriptingEvents.assertConvoEnd({ convo: this, convoStep: { stepTag: '#end' }, container, transcript, scriptingMemory: scriptingMemory })\n } catch (err) {\n transcript.err = botiumErrorFromErr(`${this.header.name}: ${err.message}`, err)\n throw new TranscriptError(transcript.err, transcript)\n }\n return transcript\n } finally {\n container.eventEmitter.emit(Events.MESSAGE_TRANSCRIPT, container, transcript)\n }\n }\n\n async runConversation (container, scriptingMemory, transcript) {\n const transcriptSteps = []\n try {\n let lastMeConvoStep = null\n let botMsg = null\n let waitForBotSays = true\n let skipTranscriptStep = false\n for (let i = 0; i < this.conversation.length; i++) {\n const convoStep = this.conversation[i]\n const currentStepIndex = i\n skipTranscriptStep = false\n const transcriptStep = new TranscriptStep({\n expected: new BotiumMockMessage(convoStep),\n not: convoStep.not,\n optional: convoStep.optional,\n actual: null,\n stepBegin: new Date(),\n stepEnd: null,\n botBegin: null,\n botEnd: null,\n err: null\n })\n\n try {\n if (convoStep.sender === 'begin' || convoStep.sender === 'end') {\n continue\n } else if (convoStep.sender === 'me') {\n const meMsg = new BotiumMockMessage(convoStep)\n meMsg.messageText = ScriptingMemory.apply(container, scriptingMemory, meMsg.messageText, meMsg)\n // buggy command is removed, but because sideeffects are possible, it can be reactivated.\n // If there are no sideeffects coming up, then row can be deleted permanently.\n if (process.env.WORKAROUND_OVERWRITE_JSON_MESSAGE_TEXT) {\n // if this line is active, then Random() in me section does not work in performance test\n // (first run overwrites the function with the value, and the next run has the value, not the function)\n convoStep.messageText = meMsg.messageText\n }\n transcriptStep.actual = meMsg\n\n try {\n await this.scriptingEvents.setUserInput({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep, transcriptSteps })\n await this.scriptingEvents.onMeStart({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep, transcriptSteps })\n await this.scriptingEvents.onMePrepare({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep, transcriptSteps })\n\n await this._checkBotRepliesConsumed(container)\n\n const coreMsg = _.omit(removeBuffers(meMsg), ['sourceData'])\n debug(`${this.header.name}/${convoStep.stepTag}: user says (cleaned by binary and base64 data and sourceData) ${JSON.stringify(coreMsg, null, 2)}`)\n await new Promise(resolve => {\n if (container.caps.SIMULATE_WRITING_SPEED && meMsg.messageText && meMsg.messageText.length) {\n setTimeout(() => resolve(), container.caps.SIMULATE_WRITING_SPEED * meMsg.messageText.length)\n } else {\n resolve()\n }\n })\n lastMeConvoStep = convoStep\n transcriptStep.botBegin = new Date()\n if (!_.isNull(meMsg.messageText) || meMsg.sourceData || (meMsg.userInputs && meMsg.userInputs.length) || (meMsg.logicHooks && meMsg.logicHooks.length)) {\n try {\n Object.assign(meMsg, { header: this.header, conversation: this.conversation, currentStepIndex, scriptingMemory })\n await container.UserSays(meMsg)\n } finally {\n delete meMsg.header\n delete meMsg.conversation\n delete meMsg.scriptingMemory\n }\n\n transcriptStep.botEnd = new Date()\n await this.scriptingEvents.onMeEnd({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep })\n continue\n } else {\n debug(`${this.header.name}/${convoStep.stepTag}: message not found in #me section, message not sent to container ${util.inspect(convoStep)}`)\n transcriptStep.botEnd = new Date()\n await this.scriptingEvents.onMeEnd({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep })\n continue\n }\n } catch (err) {\n transcriptStep.botEnd = new Date()\n\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: error sending to bot - ${err.message || err}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr)\n } catch (failErr) {\n }\n throw failErr\n }\n } else if (convoStep.sender === 'bot') {\n if (waitForBotSays) {\n botMsg = null\n } else {\n waitForBotSays = true\n }\n\n try {\n debug(`${this.header.name} wait for bot ${convoStep.channel || ''}`)\n await this.scriptingEvents.onBotStart({ convo: this, convoStep, container, scriptingMemory, transcript, transcriptStep })\n transcriptStep.botBegin = new Date()\n if (!botMsg) {\n botMsg = await container.WaitBotSays(convoStep.channel)\n }\n transcriptStep.botEnd = new Date()\n transcriptStep.actual = new BotiumMockMessage(botMsg)\n\n const coreMsg = _.omit(removeBuffers(botMsg), ['sourceData'])\n debug(`${this.header.name}: bot says (cleaned by binary and base64 data and sourceData) ${JSON.stringify(coreMsg, null, 2)}`)\n } catch (err) {\n transcriptStep.botEnd = new Date()\n\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: error waiting for bot - ${err.message}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n throw failErr\n }\n\n try {\n const prepared = await this.scriptingEvents.onBotPrepare({ convo: this, convoStep, container, scriptingMemory, botMsg, transcript, transcriptStep })\n if (prepared) {\n transcriptStep.actual = new BotiumMockMessage(botMsg)\n\n const coreMsg = _.omit(removeBuffers(botMsg), ['sourceData'])\n debug(`${this.header.name}: onBotPrepare (cleaned by binary and base64 data and sourceData) ${JSON.stringify(coreMsg, null, 2)}`)\n }\n } catch (err) {\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: onBotPrepare error - ${err.message || err}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n throw failErr\n }\n\n if (!botMsg || (!botMsg.messageText && !botMsg.media && !botMsg.buttons && !botMsg.cards && !botMsg.sourceData && !botMsg.nlp)) {\n const failErr = new BotiumError(`${this.header.name}/${convoStep.stepTag}: bot says nothing`)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n throw failErr\n }\n const isErrorHandledWithOptionConvoStep = (err) => {\n const nextConvoStep = this.conversation[i + 1]\n if (convoStep.optional && nextConvoStep && nextConvoStep.sender === 'bot') {\n waitForBotSays = false\n skipTranscriptStep = true\n return true\n }\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n assertErrors.push(err)\n return false\n } else {\n throw err\n }\n }\n const assertErrors = []\n const scriptingMemoryUpdate = {}\n if (convoStep.messageText) {\n const response = this._checkNormalizeText(container, botMsg.messageText)\n const messageText = this._checkNormalizeText(container, convoStep.messageText)\n ScriptingMemory.fill(container, scriptingMemoryUpdate, response, messageText, this.scriptingEvents)\n const tomatch = this._resolveUtterancesToMatch(container, Object.assign({}, scriptingMemoryUpdate, scriptingMemory), messageText, botMsg)\n if (convoStep.not) {\n try {\n this.scriptingEvents.assertBotNotResponse(response, tomatch, `${this.header.name}/${convoStep.stepTag}`, lastMeConvoStep)\n } catch (err) {\n if (isErrorHandledWithOptionConvoStep(err)) {\n continue\n }\n }\n } else {\n try {\n this.scriptingEvents.assertBotResponse(response, tomatch, `${this.header.name}/${convoStep.stepTag}`, lastMeConvoStep)\n } catch (err) {\n if (isErrorHandledWithOptionConvoStep(err)) {\n continue\n }\n }\n }\n } else if (convoStep.sourceData) {\n try {\n this._compareObject(container, scriptingMemory, convoStep, botMsg.sourceData, convoStep.sourceData, botMsg)\n } catch (err) {\n if (isErrorHandledWithOptionConvoStep(err)) {\n continue\n }\n }\n }\n Object.assign(scriptingMemory, scriptingMemoryUpdate)\n try {\n await this.scriptingEvents.assertConvoStep({ convo: this, convoStep, container, scriptingMemory, botMsg, transcript, transcriptStep })\n await this.scriptingEvents.onBotEnd({ convo: this, convoStep, container, scriptingMemory, botMsg, transcript, transcriptStep })\n } catch (err) {\n const nextConvoStep = this.conversation[i + 1]\n if (convoStep.optional && nextConvoStep && nextConvoStep.sender === 'bot') {\n waitForBotSays = false\n skipTranscriptStep = true\n continue\n }\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: assertion error - ${err.message || err}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS] && err instanceof BotiumError) {\n assertErrors.push(err)\n } else {\n throw failErr\n }\n }\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n if (assertErrors.length > 0) {\n throw botiumErrorFromList(assertErrors, {})\n }\n } else {\n if (!transcriptStep.stepEnd) {\n continue\n }\n }\n } else {\n const failErr = new BotiumError(`${this.header.name}/${convoStep.stepTag}: invalid sender - ${util.inspect(convoStep.sender)}`)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr)\n } catch (failErr) {\n }\n throw failErr\n }\n } catch (err) {\n if (lastMeConvoStep) {\n if (err instanceof BotiumError && err.context) {\n err.context.input = new ConvoStep(lastMeConvoStep)\n err.context.transcript = [...transcriptSteps, { ...transcriptStep }]\n } else {\n err.input = new ConvoStep(lastMeConvoStep)\n err.transcript = [...transcriptSteps, { ...transcriptStep }]\n }\n }\n transcriptStep.err = err\n if (err instanceof BotiumError && container.caps[Capabilities.SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS]) {\n if (!err.isAsserterError()) {\n throw err\n }\n } else {\n throw err\n }\n } finally {\n if (convoStep.sender !== 'begin' && convoStep.sender !== 'end' && !skipTranscriptStep) {\n transcriptStep.scriptingMemory = Object.assign({}, scriptingMemory)\n transcriptStep.stepEnd = new Date()\n transcriptSteps.push(transcriptStep)\n }\n }\n }\n } catch (err) {\n transcript.err = err\n } finally {\n transcript.steps = transcriptSteps.filter(s => s)\n transcript.scriptingMemory = scriptingMemory\n transcript.convoEnd = new Date()\n if (container.caps[Capabilities.SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS]) {\n const transcriptStepErrs = transcript.steps.filter(s => s.err).map(s => s.err)\n if (transcriptStepErrs && transcriptStepErrs.length > 0) {\n transcript.err = botiumErrorFromList([transcriptStepErrs, transcript.err].filter(e => e), {})\n }\n }\n }\n }\n\n _compareObject (container, scriptingMemory, convoStep, result, expected, botMsg) {\n if (expected === null || expected === undefined) return\n\n if (_.isArray(expected)) {\n if (!_.isArray(result)) {\n throw new BotiumError(`${this.header.name}/${convoStep.stepTag}: bot response expected array, got \"${result}\"`)\n }\n if (expected.length !== result.length) {\n throw new BotiumError(`${this.header.name}/${convoStep.stepTag}: bot response expected array length ${expected.length}, got ${result.length}`)\n }\n for (let i = 0; i < expected.length; i++) {\n this._compareObject(container, scriptingMemory, convoStep, result[i], expected[i])\n }\n } else if (_.isObject(expected)) {\n _.forOwn(expected, (value, key) => {\n if (Object.prototype.hasOwnProperty.call(result, key)) {\n this._compareObject(container, scriptingMemory, convoStep, result[key], expected[key])\n } else {\n throw new BotiumError(`${this.header.name}/${convoStep.stepTag}: bot response \"${result}\" missing expected property: ${key}`)\n }\n })\n } else {\n ScriptingMemory.fill(container, scriptingMemory, result, expected, this.scriptingEvents)\n const response = this._checkNormalizeText(container, result)\n const tomatch = this._resolveUtterancesToMatch(container, scriptingMemory, expected, botMsg)\n this.scriptingEvents.assertBotResponse(response, tomatch, `${this.header.name}/${convoStep.stepTag}`)\n }\n }\n\n GetScriptingMemoryAllVariables (container) {\n const resultOuter = this.conversation.reduce((acc, convoStep) => {\n let result = acc\n result = result.concat(this.GetScriptingMemoryVariables(container, convoStep.messageText))\n const extractFromArgs = (convoStepItems) => {\n let resultInner = []\n for (const item of (convoStepItems || [])) {\n for (const arg of (item.args || [])) {\n resultInner = resultInner.concat(this.GetScriptingMemoryVariables(container, arg))\n }\n }\n return resultInner\n }\n result = result.concat(extractFromArgs(convoStep.asserters))\n result = result.concat(extractFromArgs(convoStep.logicHooks))\n result = result.concat(extractFromArgs(convoStep.userInputs))\n\n return result\n }, [])\n\n return [...new Set(resultOuter)]\n }\n\n GetScriptingMemoryVariables (container, utterance) {\n if (!utterance || !container.caps[Capabilities.SCRIPTING_ENABLE_MEMORY]) {\n return []\n }\n\n const utterances = this.scriptingEvents.resolveUtterance({ utterance })\n\n return utterances.reduce((acc, expected) => {\n if (_.isUndefined(expected)) return acc\n else return acc.concat(ScriptingMemory.extractVarNames(toString(expected)) || [])\n }, [])\n }\n\n _checkBotRepliesConsumed (container) {\n if (container.caps.SCRIPTING_FORCE_BOT_CONSUMED) {\n const queueLength = container._QueueLength()\n if (queueLength === 1) {\n throw new Error('There is an unread bot reply in queue')\n } else if (queueLength > 1) {\n throw new Error(`There are still ${queueLength} unread bot replies in queue`)\n }\n }\n }\n\n _resolveUtterancesToMatch (container, scriptingMemory, utterance, botMsg) {\n const utterances = this.scriptingEvents.resolveUtterance({ utterance })\n const normalizedUtterances = utterances.map(str => this._checkNormalizeText(container, str))\n const tomatch = normalizedUtterances.map(str => ScriptingMemory.apply(container, scriptingMemory, str, botMsg))\n return tomatch\n }\n\n _checkNormalizeText (container, str) {\n return normalizeText(str, !!container.caps[Capabilities.SCRIPTING_NORMALIZE_TEXT])\n }\n\n expandPartialConvos () {\n const _getIncludeLogicHookNames = (convoStep) => {\n if (!convoStep.logicHooks) {\n return []\n }\n\n const result = []\n convoStep.logicHooks.forEach((logicHook) => {\n if (logicHook.name === LOGIC_HOOK_INCLUDE) {\n if (logicHook.args.length !== 1) {\n throw Error('Wrong argument for include logic hook!')\n }\n result.push(logicHook)\n }\n })\n\n return result.map((hook) => hook.args[0])\n }\n\n const partialConvos = this.context.GetPartialConvos()\n\n const _getEffectiveConversationRecursive = (conversation, parentPConvos = [], result = [], ignoreBeginEnd = true) => {\n conversation.forEach((convoStep) => {\n let includeLogicHooks = []\n if (convoStep.sender === 'include') {\n if (convoStep.channel) {\n includeLogicHooks.push(convoStep.channel)\n }\n if (convoStep.messageText) {\n includeLogicHooks = includeLogicHooks.concat(splitStringInNonEmptyLines(convoStep.messageText))\n }\n } else {\n includeLogicHooks = _getIncludeLogicHookNames(convoStep)\n if (includeLogicHooks.length === 0 || convoStep.hasInteraction()) {\n if (!ignoreBeginEnd || (convoStep.sender !== 'begin' && convoStep.sender !== 'end')) {\n // dont put convo name for ConvoSteps on the root.\n const steptagPath = parentPConvos.length === 0 ? '' : parentPConvos.join('/') + '/'\n result.push(Object.assign(new ConvoStep(), convoStep, { stepTag: `${steptagPath}${convoStep.stepTag}` }))\n }\n }\n }\n\n includeLogicHooks.forEach((includeLogicHook) => {\n const alreadyThereAt = parentPConvos.indexOf(includeLogicHook)\n if (alreadyThereAt >= 0) {\n throw new BotiumError(`Partial convos are included circular. \"${includeLogicHook}\" is referenced by \"/${parentPConvos.slice(0, alreadyThereAt).join('/')}\" and by \"/${parentPConvos.join('/')}\" `)\n }\n if (!partialConvos || Object.keys(partialConvos).length === 0) {\n throw new BotiumError(`Cant find partial convo with name ${includeLogicHook} (There are no partial convos)`)\n }\n const partialConvo = partialConvos[includeLogicHook]\n if (!partialConvo) {\n throw new BotiumError(`Cant find partial convo with name ${includeLogicHook} (available partial convos: ${Object.keys(partialConvos).join(',')})`)\n }\n _getEffectiveConversationRecursive(partialConvo.conversation, [...parentPConvos, includeLogicHook], result, true)\n debug(`Partial convo ${includeLogicHook} included`)\n })\n })\n\n return result\n }\n\n this.conversation = _getEffectiveConversationRecursive(this.conversation, [], [], false)\n }\n}\n\nmodule\n .exports = {\n ConvoHeader,\n Convo,\n ConvoStep\n }\n","const util = require('util')\nconst _ = require('lodash')\n\nmodule.exports = class RetryHelper {\n constructor (caps, section) {\n this.retrySettings = {\n retries: caps[`RETRY_${section.toUpperCase()}_NUMRETRIES`] || 1,\n factor: caps[`RETRY_${section.toUpperCase()}_FACTOR`] || 1,\n minTimeout: caps[`RETRY_${section.toUpperCase()}_MINTIMEOUT`] || 1000\n }\n this.retryErrorPatterns = []\n const onErrorRegexp = caps[`RETRY_${section.toUpperCase()}_ONERROR_REGEXP`] || []\n if (onErrorRegexp) {\n if (_.isArray(onErrorRegexp)) {\n onErrorRegexp.forEach(r => {\n if (_.isString(r)) this.retryErrorPatterns.push(new RegExp(r, 'i'))\n else this.retryErrorPatterns.push(r)\n })\n } else if (_.isString(onErrorRegexp)) {\n this.retryErrorPatterns.push(new RegExp(onErrorRegexp, 'i'))\n } else {\n this.retryErrorPatterns.push(onErrorRegexp)\n }\n }\n }\n\n shouldRetry (err) {\n if (!err || this.retryErrorPatterns.length === 0) return false\n const errString = util.inspect(err)\n for (const re of this.retryErrorPatterns) {\n if (errString.match(re)) return true\n }\n return false\n }\n}\n","const _ = require('lodash')\n\nconst { toString, quoteRegexpString } = require('./helper')\n\nconst _normalize = (botresponse) => {\n if (_.isUndefined(botresponse)) return ''\n if (_.isObject(botresponse) && _.has(botresponse, 'messageText')) {\n return toString(botresponse.messageText) || ''\n }\n return toString(botresponse)\n}\n\nconst regexp = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) return false\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n const regexp = ignoreCase ? (new RegExp(utterance, 'i')) : (new RegExp(utterance, ''))\n return regexp.test(botresponse)\n}\n\nconst wildcard = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) {\n if (utterance.trim() === '*') return true\n else return false\n }\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n const numWildcards = utterance.split('*').length - 1\n if (numWildcards > 10) {\n throw new Error('Maximum number of 10 wildcards supported.')\n }\n const utteranceRe = quoteRegexpString(utterance).replace(/\\\\\\*/g, '(.*)')\n\n const regexp = ignoreCase ? (new RegExp(utteranceRe, 'i')) : (new RegExp(utteranceRe, ''))\n return regexp.test(botresponse)\n}\n\nconst wildcardExact = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) {\n if (utterance.trim() === '*') return true\n else return false\n }\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n const numWildcards = utterance.split('*').length - 1\n if (numWildcards > 10) {\n throw new Error('Maximum number of 10 wildcards supported.')\n }\n const utteranceRe = '^' + quoteRegexpString(utterance).replace(/\\\\\\*/g, '(.*)') + '$'\n\n const regexp = ignoreCase ? (new RegExp(utteranceRe, 'i')) : (new RegExp(utteranceRe, ''))\n return regexp.test(botresponse)\n}\n\nconst include = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) return false\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n if (ignoreCase) {\n utterance = utterance.toLowerCase()\n botresponse = botresponse.toLowerCase()\n }\n return botresponse.indexOf(utterance) >= 0\n}\n\nconst equals = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) return false\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n if (ignoreCase) {\n utterance = utterance.toLowerCase()\n botresponse = botresponse.toLowerCase()\n }\n return botresponse === utterance\n}\n\nconst getMatchFunction = (matchingMode) => {\n if (matchingMode === 'regexp' || matchingMode === 'regexpIgnoreCase') {\n return regexp(matchingMode === 'regexpIgnoreCase')\n } else if (matchingMode === 'wildcard' || matchingMode === 'wildcardIgnoreCase' || matchingMode === 'wildcardLowerCase') {\n return wildcard(matchingMode === 'wildcardIgnoreCase' || matchingMode === 'wildcardLowerCase')\n } else if (matchingMode === 'wildcardExact' || matchingMode === 'wildcardExactIgnoreCase') {\n return wildcardExact(matchingMode === 'wildcardExactIgnoreCase')\n } else if (matchingMode === 'include' || matchingMode === 'includeIgnoreCase' || matchingMode === 'includeLowerCase') {\n return include(matchingMode === 'includeIgnoreCase' || matchingMode === 'includeLowerCase')\n } else if (matchingMode === 'equals' || matchingMode === 'equalsIgnoreCase') {\n return equals(matchingMode === 'equalsIgnoreCase')\n } else {\n return equals(false)\n }\n}\n\nmodule.exports = {\n regexp,\n wildcard,\n wildcardExact,\n include,\n equals,\n getMatchFunction\n}\n","const _ = require('lodash')\n\nconst isStringJson = (string) => {\n try {\n JSON.parse(string)\n } catch (e) {\n return false\n }\n return true\n}\n/**\n *\n * @param json\n * @param stringIsJson It is possible to stringify a string, so we can say its a json object,\n * but usually thats not what we expect. Default is true because backward compatibility\n * @returns {boolean}\n */\nconst isJsonObject = (json, stringIsJson = true) => {\n if (!stringIsJson && _.isString(json)) {\n return false\n }\n try {\n JSON.stringify(json)\n } catch (e) {\n return false\n }\n return true\n}\n\nconst isJson = (json) => {\n if (isStringJson(json)) {\n return json\n } else if (isJsonObject(json)) {\n return JSON.stringify(json)\n }\n return null\n}\n\nconst toJsonWeak = (stringOrNot) => {\n try {\n return JSON.parse(stringOrNot)\n } catch (e) {\n return stringOrNot\n }\n}\n\nconst optionalJson = (json) => {\n const body = isJson(json)\n return body ? { 'content-type': 'application/json', body: body } : { 'content-type': 'text/plain', body: json }\n}\n\nconst shortenJsonString = (obj) => {\n let str = _.isString(obj) ? obj : JSON.stringify(obj, null, 2)\n const length = str.length\n if (length > 1000) {\n str = `${str.substr(0, 1000)} ... (${length - 1000} chars more)`\n }\n return str\n}\n\nconst escapeJSONString = (string) => {\n if (string) {\n return ('' + string).replace(/[\"\\\\\\n\\r\\u2028\\u2029]/g, function (character) {\n // Escape all characters not included in SingleStringCharacters and\n // DoubleStringCharacters on\n // http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4\n switch (character) {\n case '\"':\n case '\\\\':\n return '\\\\' + character\n // Four possible LineTerminator characters need to be escaped:\n case '\\n':\n return '\\\\n'\n case '\\r':\n return '\\\\r'\n case '\\u2028':\n return '\\\\u2028'\n case '\\u2029':\n return '\\\\u2029'\n }\n })\n }\n}\n\nconst formatTimeout = (ms) => {\n if (ms >= 1000) {\n if (ms % 1000 !== 0) {\n return `${Math.floor(ms / 1000)}s ${ms % 1000}ms`\n } else {\n return `${Math.floor(ms / 1000)}s`\n }\n } else {\n return `${ms}ms`\n }\n}\n\nmodule.exports = { optionalJson, isJson, isJsonObject, isStringJson, shortenJsonString, escapeJSONString, toJsonWeak, formatTimeout }\n","const _ = require('lodash')\nconst jp = require('jsonpath')\n\nconst _ensureList = (queryResult) => {\n if (_.isArray(queryResult)) {\n return queryResult\n }\n return [queryResult]\n}\n\nmodule.exports.precompile = (caps, scriptBuffer, options, filename) => {\n if (!filename.endsWith('.json')) {\n return\n }\n\n const checkerJsonpath = options.CHECKER_JSONPATH\n const rootJsonpath = options.ROOT_JSONPATH\n const utteranceRefsJsonpath = options.UTTERANCE_REF_JSONPATH\n const utterancesJsonpath = options.UTTERANCES_JSONPATH\n let scriptData = scriptBuffer\n if (_.isString(scriptData)) {\n try {\n scriptData = JSON.parse(scriptData)\n } catch (err) {\n throw new Error(`Cant convert to JSON ${filename}`)\n }\n }\n if (checkerJsonpath) {\n const scouldExist = jp.query(scriptData, checkerJsonpath)\n if (!scouldExist || scouldExist.length === 0) {\n return\n }\n }\n\n if (!rootJsonpath) {\n scriptData = [scriptData]\n } else {\n let rootObjects\n try {\n rootObjects = _ensureList(jp.query(scriptData, rootJsonpath))\n } catch (err) {\n throw new Error(`Root jsonpath ${rootJsonpath} invalid: ${err.message}`)\n }\n\n scriptData = rootObjects\n }\n\n const result = {}\n for (const json of scriptData) {\n let intent\n try {\n intent = _ensureList(jp.query(json, utteranceRefsJsonpath))\n } catch (err) {\n throw new Error(`Intents jsonpath ${utteranceRefsJsonpath} invalid: ${err.message}`)\n }\n\n if (intent.length !== 1) {\n throw new Error(`There should be exact one intent but found \"${JSON.stringify(intent)}\" on path \"${utteranceRefsJsonpath}\" in JSON \"${JSON.stringify(json)}\"`)\n }\n\n if (!result[intent]) {\n result[intent] = []\n }\n\n try {\n result[intent] = result[intent].concat(jp.query(json, utterancesJsonpath))\n } catch (err) {\n throw new Error(`Utterances jsonpath ${utteranceRefsJsonpath} invalid: ${err.message}`)\n }\n }\n\n return { scriptBuffer: JSON.stringify({ utterances: result }) }\n}\n","const util = require('util')\nconst path = require('path')\nconst fs = require('fs')\nconst { NodeVM } = require('vm2')\nconst esprima = require('esprima')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-core-HookUtils')\n\nconst Capabilities = require('../Capabilities')\nconst { BotiumError } = require('../scripting/BotiumError')\n\nconst executeHook = async (caps, hook, args) => {\n return executeHookSync(caps, hook, args)\n}\n\nconst executeHookSync = (caps, hook, args) => {\n if (!hook) {\n return\n }\n\n if (_.isFunction(hook)) {\n try {\n return hook(args)\n } catch (err) {\n throw new Error(`Calling Hook function failed: ${err.message}`)\n }\n }\n\n if (_.isString(hook)) {\n try {\n const vm = new NodeVM({\n eval: false,\n require: false,\n sandbox: args\n })\n const r = vm.run(hook)\n if (_.isFunction(r)) {\n return r(args)\n } else {\n return r\n }\n } catch (err) {\n throw new Error(`Calling Hook Javascript code failed: ${err.message}`)\n }\n }\n throw new Error(`Unknown hook ${typeof hook}`)\n}\n\nconst getHook = (caps, data) => {\n if (!data) {\n return null\n }\n const allowUnsafe = !!caps[Capabilities.SECURITY_ALLOW_UNSAFE]\n\n if (_.isFunction(data)) {\n debug('found hook, type: function definition')\n return data\n }\n\n if (_.isString(data)) {\n let resultWithRequire\n let tryLoadFile = path.resolve(process.cwd(), data)\n if (fs.existsSync(tryLoadFile)) {\n try {\n resultWithRequire = require(tryLoadFile)\n } catch (err) {\n }\n } else {\n tryLoadFile = data\n try {\n resultWithRequire = require(data)\n } catch (err) {\n }\n }\n\n if (resultWithRequire) {\n if (!allowUnsafe) {\n throw new BotiumError(\n 'Security Error. Using unsafe custom hook with require is not allowed',\n {\n type: 'security',\n subtype: 'allow unsafe',\n source: path.basename(__filename),\n cause: {\n SECURITY_ALLOW_UNSAFE: caps[Capabilities.SECURITY_ALLOW_UNSAFE],\n hookData: data\n }\n }\n )\n }\n\n if (_.isFunction(resultWithRequire)) {\n debug(`found hook, type: require, in ${tryLoadFile}`)\n return resultWithRequire\n } else {\n throw new Error(`Cant load hook ${tryLoadFile} because it is not a function`)\n }\n }\n\n try {\n esprima.parseScript(data)\n } catch (err) {\n throw new Error(`Cant load hook, syntax is not valid - ${util.inspect(err)}`)\n }\n\n debug('Found hook, type: JavaScript as String')\n return data\n }\n\n throw new Error(`Not valid hook ${util.inspect(data)}`)\n}\n\nmodule.exports = {\n getHook,\n executeHook,\n executeHookSync\n}\n","const _ = require('lodash')\nconst { executeHookSync, getHook } = require('../../helpers/HookUtils')\n\nmodule.exports.precompile = (caps, scriptBuffer, options, filename) => {\n if (!(options.script || options.SCRIPT)) {\n throw new Error('Script is not defined')\n }\n\n if (_.isString(scriptBuffer)) {\n try {\n scriptBuffer = JSON.parse(scriptBuffer)\n } catch (err) {\n }\n }\n\n const hook = getHook(caps, options.SCRIPT)\n const response = executeHookSync(caps, hook, { scriptData: scriptBuffer, filename })\n\n if (!response) {\n return\n }\n\n return response.scriptBuffer ? response : { scriptBuffer: response }\n}\n","const MarkdownIt = require('markdown-it')\nconst debug = require('debug')('botium-core-PrecompilerMarkdownRasa')\nconst util = require('util')\nconst _ = require('lodash')\n\nconst htmlCommentRegexp = /(<!--.*?-->)/g\n\nmodule.exports.precompile = (caps, scriptBuffer, options, filename) => {\n if (!filename.endsWith('.md')) {\n return\n }\n\n const md = new MarkdownIt()\n const parsed = md.parse(scriptBuffer, {})\n\n const _extractFromRasaIntent = (content) => {\n return content.replace(htmlCommentRegexp, '').substring('intent:'.length).trim()\n }\n\n const _extractFromRasaSentence = (rasaSentence) => {\n rasaSentence = rasaSentence.replace(htmlCommentRegexp, '')\n\n const regex = /\\[([^\\]]+)\\]\\(([a-zA-Z][_:\\-a-zA-Z0-9]+)\\)/\n let matched = rasaSentence.match(regex)\n while (matched) {\n const value = matched[1]\n const splitted = matched[2].split(':')\n // const [name] = splitted\n if (splitted.length > 1) {\n debug(`Entity synonim ${splitted[1]} ignored in sentence ${rasaSentence} `)\n }\n rasaSentence = rasaSentence.replace(matched[0], value)\n matched = rasaSentence.match(regex)\n }\n return { meText: rasaSentence.trim() }\n }\n\n const utterances = {}\n\n let meTexts = []\n let intent = null\n // state got every possible value, but just few are used. Could be simplified.\n let state = 'START'\n let processLeafs = null\n for (const entry of parsed) {\n if (entry.type === 'heading_open') {\n state = 'heading_open'\n } else if (entry.type === 'inline' && entry.content.startsWith('intent:')) {\n intent = _extractFromRasaIntent(entry.content)\n processLeafs = true\n state = 'inline_intent'\n } else if (entry.type === 'inline' && entry.content.startsWith('synonym:')) {\n processLeafs = false\n debug(`Synonym \"${entry.content}\" ignored`)\n state = 'inline_synonym'\n } else if (entry.type === 'inline' && entry.content.startsWith('regex:')) {\n processLeafs = false\n debug(`Regex \"${entry.content}\" ignored`)\n state = 'inline_regex'\n } else if (entry.type === 'inline' && entry.content.startsWith('lookup:')) {\n processLeafs = false\n debug(`Lookup \"${entry.content}\" ignored`)\n state = 'inline_lookup'\n } else if (entry.type === 'heading_close') {\n state = 'heading_close'\n } else if (entry.type === 'bullet_list_open') {\n state = 'bullet_list_open'\n } else if (entry.type === 'list_item_open') {\n state = 'list_item_open'\n } else if (entry.type === 'paragraph_open') {\n state = 'paragraph_open'\n } else if (entry.type === 'inline' && state === 'paragraph_open') {\n if (processLeafs) {\n const { meText } = _extractFromRasaSentence(entry.content)\n meTexts.push(meText)\n }\n state = 'inline_leaf'\n } else if (entry.type === 'paragraph_close') {\n state = 'paragraph_close'\n } else if (entry.type === 'list_item_close') {\n state = 'list_item_close'\n } else if (entry.type === 'bullet_list_close') {\n state = 'bullet_list_close'\n if (meTexts.length) {\n if (!intent) {\n debug(`Intent not found, dropping me texts ${JSON.stringify(meTexts)}`)\n } else {\n meTexts = _.uniq(meTexts)\n utterances[intent] = meTexts\n }\n }\n intent = null\n meTexts = []\n } else {\n debug(`Markdown entry ignored ${util.inspect(entry)}`)\n }\n }\n\n return {\n scriptBuffer: { utterances },\n filename: `${filename}.json`\n }\n}\n","const _ = require('lodash')\nconst debug = require('debug')('botium-core-CapabilitiesUtils')\nconst { toJsonWeak } = require('./Utils')\n\nmodule.exports.getAllCapValues = (capNamePrefix, caps) => {\n const allCapValues = []\n const jsonPathCaps = _.pickBy(caps, (v, k) => k.startsWith(capNamePrefix))\n _(jsonPathCaps).keys().sort().each((key) => {\n const val = _.isFunction(caps[key]) ? (caps[key])() : caps[key]\n\n if (_.isArray(val)) {\n val.forEach(p => {\n allCapValues.push(`${p}`.trim())\n })\n } else if (_.isString(val)) {\n val.split(',').forEach(p => {\n allCapValues.push(p.trim())\n })\n }\n })\n return allCapValues\n}\n\n/**\n * Extract repetitive capabilities into list.\n * Key is checked, but the value is free\n * @param caps\n * @param prefix\n * @returns {Array}\n */\nmodule.exports.flatCababilities = (caps, prefix) => {\n const result = []\n let capNames = []\n for (const name of Object.keys(caps)) {\n if (name.startsWith(prefix)) {\n capNames.push(name)\n }\n }\n capNames = capNames.sort()\n\n if (capNames.length === 1 && capNames[0] === prefix) {\n const val = toJsonWeak(caps[capNames[0]])\n if (_.isArray(val)) {\n val.forEach(entry => result.push(entry))\n } else {\n result.push(val)\n }\n } else {\n const regexpPrefixAndGroup = new RegExp(`^${prefix}\\\\.\\\\d+`)\n let currentGroup\n let currentObject = {}\n for (const capName of capNames) {\n if (capName === prefix) {\n throw new Error(`Incorrect structure. Global definition must be unique. See Capability ${capName}`)\n }\n if (capName.charAt(prefix.length) !== '.') {\n debug(`From flatten result skipped capability ${capName} using prefix ${prefix}`)\n continue\n }\n let capPrefixAndGroup = capName.match(regexpPrefixAndGroup)\n capPrefixAndGroup = (capPrefixAndGroup && capPrefixAndGroup.length) ? capPrefixAndGroup[0] : prefix\n\n if (capPrefixAndGroup === capName) {\n const val = toJsonWeak(caps[capName])\n result.push(val)\n } else {\n if (capPrefixAndGroup && capName.charAt(capPrefixAndGroup.length) !== '.') {\n throw new Error(`Capability name invalid. No valid grouping found in capability ${capName} using prefix ${prefix}`)\n }\n\n const key = capName.substr(capPrefixAndGroup.length + 1)\n\n if (!key.length) {\n throw new Error(`Capability name invalid. No key after grouping in capability ${capName} using prefix ${prefix}`)\n }\n\n if (currentGroup && currentGroup !== capPrefixAndGroup) {\n result.push(currentObject)\n currentObject = {}\n }\n\n currentObject[key] = toJsonWeak(caps[capName])\n currentGroup = capPrefixAndGroup\n }\n }\n if (currentObject && currentGroup) {\n result.push(currentObject)\n currentObject = null\n currentGroup = null\n }\n }\n\n return result\n}\n","const util = require('util')\nconst debug = require('debug')('botium-core-Precompilers')\n\nconst { isJsonObject } = require('../../helpers/Utils')\n\nconst PROVIDERS = {\n JSON_TO_JSON_JSONPATH: require('./JsonToJson'),\n SCRIPT: require('./Script'),\n MARKDOWN_RASA: require('./MarkdownRasa')\n}\nconst CAPABILITY_PREFIX = 'PRECOMPILERS'\nconst { flatCababilities } = require('../../helpers/CapabilitiesUtils')\n\nmodule.exports.execute = (scriptBuffer, options) => {\n const { caps, filename } = options\n const ownCaps = flatCababilities(caps, CAPABILITY_PREFIX)\n if (Buffer.isBuffer(scriptBuffer)) {\n scriptBuffer = scriptBuffer.toString()\n }\n\n for (const capSuffixAndVal of ownCaps) {\n if (!(capSuffixAndVal.NAME)) {\n debug(`Precompiler name not defined in ${util.inspect(capSuffixAndVal)}`)\n return null\n }\n const provider = PROVIDERS[capSuffixAndVal.NAME]\n\n if (!provider) {\n throw new Error(`Precompiler ${util.inspect(capSuffixAndVal.NAME)} not found using caps ${util.inspect(capSuffixAndVal)}`)\n }\n\n const result = provider.precompile(caps, scriptBuffer, capSuffixAndVal, filename)\n if (result) {\n if (!result.scriptBuffer) {\n return null\n }\n if (isJsonObject(result.scriptBuffer, false)) {\n result.scriptBuffer = JSON.stringify(result.scriptBuffer)\n }\n\n result.precompiler = capSuffixAndVal.NAME\n // dont let chain the precompilers. It looks more robust\n return result\n }\n }\n}\n","const _ = require('lodash')\n\nmodule.exports = class CompilerBase {\n constructor ({ AddConvos, AddPartialConvos, AddUtterances, AddScriptingMemories, GetPartialConvos, IsAsserterValid, IsLogicHookValid, IsUserInputValid, scriptingEvents }, caps = {}) {\n this.context = {\n AddConvos,\n AddPartialConvos,\n AddUtterances,\n AddScriptingMemories,\n GetPartialConvos,\n IsAsserterValid,\n IsLogicHookValid,\n IsUserInputValid,\n scriptingEvents\n }\n this.caps = caps\n }\n\n Validate () {\n }\n\n GetHeaders (scriptBuffer) {\n const convos = this.Compile(scriptBuffer)\n if (convos) {\n return convos.map((convo) => convo.header)\n } else {\n return []\n }\n }\n\n Compile (scriptBuffer, scriptType) {\n throw new Error('not implemented')\n }\n\n Decompile (convos) {\n throw new Error('not implemented')\n }\n\n _AssertCapabilityExists (cap) {\n if (!this.caps[cap]) {\n throw new Error(`Capability property ${cap} not set`)\n }\n }\n\n _GetOptionalCapability (cap, def = null) {\n if (_.isUndefined(this.caps[cap])) {\n return def\n }\n\n return this.caps[cap]\n }\n\n _GetCapabilitiesByPrefix (prefix) {\n const result = {}\n Object.keys(this.caps).forEach((key) => {\n if (key.startsWith(prefix)) {\n result[key] = this.caps[key]\n }\n })\n return result\n }\n}\n","const util = require('util')\nconst _ = require('lodash')\n\nmodule.exports = class Utterance {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.sourceTag = fromJson.sourceTag\n this.utterances = []\n if (fromJson.utterances && _.isArray(fromJson.utterances)) {\n this.utterances = fromJson.utterances\n } else if (fromJson.utterances) {\n this.utterances.push(fromJson.utterances)\n }\n }\n\n toString () { return this.name + (this.sourceTag ? ` (${util.inspect(this.sourceTag)})` : '') + ': ' + this.utterances.join('|') }\n}\n","const util = require('util')\nconst XLSX = require('xlsx')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-core-CompilerXlsx')\n\nconst Capabilities = require('../Capabilities')\nconst { E_SCRIPTING_MEMORY_COLUMN_MODE } = require('../Enums')\nconst CompilerBase = require('./CompilerBase')\nconst Constants = require('./Constants')\nconst Utterance = require('./Utterance')\nconst { Convo } = require('./Convo')\nconst { linesToConvoStep, convoStepToLines, validateConvo } = require('./helper')\n\nmodule.exports = class CompilerXlsx extends CompilerBase {\n constructor (context, caps = {}) {\n super(context, caps)\n\n this.colnames = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']\n }\n\n _splitSheetnames (sheetnames) {\n if (sheetnames) return sheetnames.split(/\\s*[;,|]\\s*/)\n }\n\n _filterSheetnames (sheetnames, selectors) {\n const filteredSheetnames = sheetnames.filter(sheetname => !!selectors.find(selector => selector === '*' || sheetname === selector))\n debug(`_filterSheetnames(sheetnames: ${JSON.stringify(sheetnames)}, selectors: ${JSON.stringify(selectors)}, filteredSheetnames: ${JSON.stringify(filteredSheetnames)})`)\n return filteredSheetnames\n }\n\n Validate () {\n super.Validate()\n\n if (this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL] !== undefined) {\n if (_.isString(this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL]) && this.colnames.findIndex((c) => c === this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL]) < 0) {\n throw new Error(`SCRIPTING_XLSX_STARTCOL ${this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL]} invalid (A-Z)`)\n } else if (this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL] < 1 || this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL] > this.colnames.length) {\n throw new Error(`SCRIPTING_XLSX_STARTCOL ${this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL]} invalid (1-${this.colnames.length})`)\n }\n }\n }\n\n Compile (scriptBuffer, scriptType = Constants.SCRIPTING_TYPE_CONVO) {\n const workbook = XLSX.read(scriptBuffer, { type: 'buffer' })\n if (!workbook) throw new Error('Workbook not readable')\n\n debug(`Loaded XLSX with Props: ${workbook.Props ? JSON.stringify(workbook.Props) : '<none>'}`)\n const eol = this.caps[Capabilities.SCRIPTING_XLSX_EOL_WRITE]\n const maxEmptyRowCount = 10\n\n let sheetnames = []\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO) {\n if (this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES]) {\n sheetnames = this._filterSheetnames(workbook.SheetNames, this._splitSheetnames(this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES]))\n } else {\n sheetnames = workbook.SheetNames.filter(s => (s.toLowerCase().indexOf('convo') >= 0 || s.toLowerCase().indexOf('dialog') >= 0) && s.toLowerCase().indexOf('partial') < 0) || []\n }\n } else if (scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n if (this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES_PCONVOS]) {\n sheetnames = this._filterSheetnames(workbook.SheetNames, this._splitSheetnames(this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES_PCONVOS]))\n } else {\n sheetnames = workbook.SheetNames.filter(s => s.toLowerCase().indexOf('partial') >= 0) || []\n }\n } else if (scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n if (this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES_UTTERANCES]) {\n sheetnames = this._filterSheetnames(workbook.SheetNames, this._splitSheetnames(this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES_UTTERANCES]))\n } else {\n sheetnames = workbook.SheetNames.filter(s => s.toLowerCase().indexOf('utter') >= 0) || []\n }\n } else if (scriptType === Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY) {\n if (this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES_SCRIPTING_MEMORY]) {\n sheetnames = this._filterSheetnames(workbook.SheetNames, this._splitSheetnames(this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES_SCRIPTING_MEMORY]))\n } else {\n sheetnames = workbook.SheetNames.filter(s => s.toLowerCase().indexOf('memory') >= 0 || s.toLowerCase().indexOf('scripting') >= 0) || []\n }\n } else {\n throw Error(`Invalid script type ${scriptType}`)\n }\n\n debug(`sheet names for ${scriptType}: ${util.inspect(sheetnames)}`)\n\n const scriptResults = []\n\n sheetnames.forEach((sheetname) => {\n const sheet = workbook.Sheets[sheetname]\n if (!sheet) return\n\n let { rowindex, colindex, hasNameCol } = this._findOrigin(sheet, scriptType)\n debug(`evaluating sheet name for ${scriptType}: ${util.inspect(sheetname)}, rowindex ${rowindex}, colindex ${colindex}`)\n\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO || scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n const parseCell = (sender, content) => {\n if (!content) return { messageText: '' }\n\n if (!_.isString(content)) content = '' + content\n\n let eolSplit = null\n let lines = []\n if (content.indexOf('\\n') >= 0) {\n eolSplit = '\\n'\n } else if (content.indexOf('\\r') >= 0) {\n eolSplit = '\\r'\n }\n\n if (eolSplit) {\n lines = content.split(eolSplit).map(l => l.trim()).filter(l => l)\n } else {\n lines = [content.trim()]\n }\n\n return linesToConvoStep(lines, sender, this.context, eol)\n }\n\n const _extractRow = (rowindex) => {\n const cell1 = this.colnames[colindex] + rowindex\n const cell1Value = (sheet[cell1] && sheet[cell1].v) || null\n const cell2 = this.colnames[colindex + 1] + rowindex\n const cell2Value = (sheet[cell2] && sheet[cell2].v) || null\n const cell3 = this.colnames[colindex + 2] + rowindex\n const cell3Value = (sheet[cell3] && sheet[cell3].v) || null\n\n if (hasNameCol) {\n return {\n nameCell: cell1,\n nameCellValue: cell1Value,\n meCell: cell2,\n meCellValue: cell2Value,\n botCell: cell3,\n botCellValue: cell3Value\n }\n } else {\n return {\n nameCell: null,\n nameCellValue: null,\n meCell: cell1,\n meCellValue: cell1Value,\n botCell: cell2,\n botCellValue: cell2Value\n }\n }\n }\n\n let questionAnswerMode = this._GetOptionalCapability(Capabilities.SCRIPTING_XLSX_MODE)\n if (questionAnswerMode !== null) {\n questionAnswerMode = questionAnswerMode === 'QUESTION_ANSWER'\n debug(`questionAnswerMode to ${questionAnswerMode} (capability)`)\n } else {\n let emptyRowCount = 0\n let index = 0\n const foundQARows = []\n const foundConvoRows = []\n\n while (emptyRowCount <= maxEmptyRowCount) {\n const { meCell, meCellValue, botCell, botCellValue } = _extractRow(rowindex + index)\n if (!meCellValue && !botCellValue) {\n emptyRowCount++\n } else if (meCellValue && botCellValue) {\n foundQARows.push(meCell)\n } else if (meCellValue && !botCellValue) {\n foundConvoRows.push(meCell)\n } else if (!meCellValue && botCellValue) {\n foundConvoRows.push(botCell)\n }\n index++\n }\n if (foundQARows.length > 0 && foundConvoRows.length > 0) {\n throw new Error(`Excel sheet \"${sheetname}\" invalid. Detected intermixed Q&A sections (for instance ${foundQARows.slice(0, 3).join(',')}) and convo sections (for instance ${foundConvoRows.slice(0, 3).join(',')})`)\n } else if (foundQARows.length > 0 && foundConvoRows.length === 0) {\n questionAnswerMode = true\n debug('questionAnswerMode to true (question-answer row found)')\n } else {\n questionAnswerMode = false\n debug('questionAnswerMode to false (no question-answer row found)')\n }\n }\n\n const convoResults = []\n let currentConvo = []\n let currentConvoName = null\n let emptyRowCount = 0\n let startrowindex = -1\n\n while (true) {\n const { nameCellValue, meCell, meCellValue, botCell, botCellValue } = _extractRow(rowindex)\n\n if (questionAnswerMode) {\n if (meCellValue || botCellValue) {\n currentConvo = []\n currentConvo.push(Object.assign(\n { sender: 'me', stepTag: 'Cell ' + meCell },\n parseCell('me', meCellValue)\n ))\n startrowindex = rowindex\n currentConvo.push(Object.assign(\n { sender: 'bot', stepTag: 'Cell ' + botCell },\n parseCell('bot', botCellValue)\n ))\n convoResults.push(new Convo(this.context, {\n header: {\n name: nameCellValue || null,\n sheetname,\n colindex,\n rowindex: startrowindex\n },\n conversation: currentConvo\n }))\n } else {\n emptyRowCount++\n }\n } else {\n if (currentConvo.length === 0) {\n currentConvoName = nameCellValue || null\n }\n if (meCellValue) {\n currentConvo.push(Object.assign(\n { sender: 'me', stepTag: 'Cell ' + meCell },\n parseCell('me', meCellValue)\n ))\n if (startrowindex < 0) startrowindex = rowindex\n emptyRowCount = 0\n } else if (botCellValue) {\n currentConvo.push(Object.assign(\n { sender: 'bot', stepTag: 'Cell ' + botCell },\n parseCell('bot', botCellValue)\n ))\n if (startrowindex < 0) startrowindex = rowindex\n emptyRowCount = 0\n } else {\n if (currentConvo.length > 0) {\n convoResults.push(new Convo(this.context, {\n header: {\n name: currentConvoName,\n sheetname,\n colindex,\n rowindex: startrowindex\n },\n conversation: currentConvo\n }))\n }\n currentConvo = []\n currentConvoName = null\n startrowindex = -1\n emptyRowCount++\n }\n }\n rowindex++\n\n if (emptyRowCount > maxEmptyRowCount) break\n }\n\n if (convoResults.length > 0) {\n const formatLength = Math.max(3, `${convoResults[convoResults.length - 1].header.rowindex}`.length)\n const formatBase = '0'.repeat(formatLength)\n const formatRowIndex = (rowindex) => (formatBase + `${rowindex}`).slice(-1 * formatLength)\n convoResults.forEach(convo => {\n if (!convo.header.name) {\n convo.header.name = `${convo.header.sheetname}-${this.colnames[convo.header.colindex]}${formatRowIndex(convo.header.rowindex)}`\n }\n convo.header.sort = convo.header.name\n scriptResults.push(convo)\n })\n }\n }\n\n if (scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n let currentUtterance = null\n let emptylines = 0\n while (true) {\n const nameCell = this.colnames[colindex] + rowindex\n const uttCell = this.colnames[colindex + 1] + rowindex\n\n if (sheet[nameCell] && sheet[nameCell].v && sheet[uttCell] && sheet[uttCell].v) {\n currentUtterance = new Utterance({ name: sheet[nameCell].v, utterances: [`${sheet[uttCell].v}`] })\n scriptResults.push(currentUtterance)\n emptylines = 0\n } else if (sheet[uttCell] && sheet[uttCell].v) {\n if (currentUtterance) currentUtterance.utterances.push(`${sheet[uttCell].v}`)\n emptylines = 0\n } else {\n currentUtterance = null\n emptylines++\n }\n rowindex++\n\n if (emptylines > maxEmptyRowCount) break\n }\n }\n\n if (scriptType === Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY) {\n const guessScriptingMemoryColumnMode = () => {\n const line1Cell = this.colnames[colindex] + (rowindex + 1)\n if (sheet[line1Cell] && sheet[line1Cell].v) {\n if (sheet[line1Cell].v.startsWith('$')) return E_SCRIPTING_MEMORY_COLUMN_MODE.TESTCASENAMES\n }\n return E_SCRIPTING_MEMORY_COLUMN_MODE.VARNAMES\n }\n const columnMode = this.caps[Capabilities.SCRIPTING_MEMORY_COLUMN_MODE] || guessScriptingMemoryColumnMode()\n\n if (columnMode === E_SCRIPTING_MEMORY_COLUMN_MODE.TESTCASENAMES) {\n const caseNames = []\n let colindexTemp = colindex + 1\n while (true) {\n const caseNameCell = this.colnames[colindexTemp] + rowindex\n if (sheet[caseNameCell] && sheet[caseNameCell].v) {\n caseNames.push(sheet[caseNameCell].v)\n } else {\n break\n }\n colindexTemp++\n }\n\n const varNames = []\n const varValues = []\n\n rowindex += 1\n while (true) {\n const varNameCell = this.colnames[colindex] + rowindex\n if (sheet[varNameCell] && sheet[varNameCell].v) {\n varNames.push(sheet[varNameCell].v)\n const values = []\n for (let i = 0; i < caseNames.length; i++) {\n const variableValueCell = this.colnames[colindex + 1 + i] + rowindex\n if (sheet[variableValueCell] && sheet[variableValueCell].v) {\n values.push(sheet[variableValueCell].v.toString())\n } else {\n values.push(null)\n }\n }\n varValues.push(values)\n rowindex += 1\n } else {\n break\n }\n }\n for (let caseIndex = 0; caseIndex < caseNames.length; caseIndex++) {\n const caseName = caseNames[caseIndex]\n\n const values = varNames.reduce((agg, varName, varIndex) => {\n agg[varName] = varValues[varIndex][caseIndex] || null\n return agg\n }, {})\n scriptResults.push({ header: { name: caseName }, values: values })\n }\n } else {\n const variableNames = []\n let colindexTemp = colindex + 1\n while (true) {\n const variableNameCell = this.colnames[colindexTemp] + rowindex\n if (sheet[variableNameCell] && sheet[variableNameCell].v) {\n variableNames.push(sheet[variableNameCell].v)\n } else {\n break\n }\n colindexTemp++\n }\n\n rowindex += 1\n while (true) {\n const caseNameCell = this.colnames[colindex] + rowindex\n if (sheet[caseNameCell] && sheet[caseNameCell].v) {\n const caseName = sheet[caseNameCell].v\n const values = {}\n for (let i = 0; i < variableNames.length; i++) {\n const variableValueCell = this.colnames[colindex + 1 + i] + rowindex\n if (sheet[variableValueCell] && sheet[variableValueCell].v) {\n values[variableNames[i]] = sheet[variableValueCell].v.toString()\n } else {\n values[variableNames[i]] = null\n }\n }\n rowindex += 1\n\n scriptResults.push({ header: { name: caseName }, values: values })\n } else {\n break\n }\n }\n }\n }\n })\n\n if (scriptResults && scriptResults.length > 0) {\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO) {\n this.context.AddConvos(scriptResults)\n } else if (scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n this.context.AddPartialConvos(scriptResults)\n } else if (scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n this.context.AddUtterances(scriptResults)\n } else if (scriptType === Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY) {\n this.context.AddScriptingMemories(scriptResults)\n }\n return scriptResults\n }\n }\n\n Decompile (convos) {\n const eol = this.caps[Capabilities.SCRIPTING_XLSX_EOL_WRITE]\n\n let sheetname = 'Botium'\n if (this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES]) {\n sheetname = this._splitSheetnames(this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES])[0]\n }\n const data = []\n const errors = []\n if (convos) {\n for (let i = 0; i < convos.length; i++) {\n const convo = convos[i]\n if (!convo.conversation) return\n\n const validationResult = validateConvo(convo)\n if (validationResult.errors.length > 0) {\n errors.push(...validationResult.errors.map(e => new Error(`Convo ${i + 1} ${e.message}`)))\n }\n\n convo.conversation.forEach((step) => {\n let cellContent = ''\n\n const stepLines = convoStepToLines(step)\n if (stepLines && stepLines.length > 0) cellContent = stepLines.join(eol)\n\n data.push({ [step.sender]: cellContent })\n })\n data.push({})\n }\n }\n if (errors.length > 0) {\n throw new Error(errors.map(e => e.message).join(' - '))\n }\n\n const wb = XLSX.utils.book_new()\n const ws = XLSX.utils.json_to_sheet(data, { header: ['me', 'bot'] })\n XLSX.utils.book_append_sheet(wb, ws, sheetname)\n const xlsxOutput = XLSX.write(wb, { type: 'buffer' })\n return xlsxOutput\n }\n\n _get (sheet, rowindex, colindex) {\n const cell = this.colnames[colindex] + rowindex\n const cellValue = sheet[cell] && sheet[cell].v\n return cellValue\n }\n\n _findOrigin (sheet, scriptType) {\n let rowindex = this.caps[Capabilities.SCRIPTING_XLSX_STARTROW]\n let colindex = this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL]\n let hasNameCol = _.has(this.caps, Capabilities.SCRIPTING_XLSX_HASNAMECOL) ? !!this.caps[Capabilities.SCRIPTING_XLSX_HASNAMECOL] : null\n\n if (_.isString(this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL])) {\n colindex = this.colnames.findIndex((c) => c === this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL])\n } else if (colindex !== undefined) {\n colindex = colindex - 1\n }\n\n if (rowindex === undefined && colindex === undefined) {\n // eslint-disable-next-line no-labels\n NestedLoop:\n for (let cr = 1; cr < 1000; cr++) {\n for (let cc = 0; cc < this.colnames.length; cc++) {\n if (this._get(sheet, cr, cc)) {\n if (scriptType === Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY) {\n if (cc > 0 && this._get(sheet, cr + 1, cc - 1)) {\n rowindex = cr\n colindex = cc - 1\n // eslint-disable-next-line no-labels\n break NestedLoop\n }\n } else {\n rowindex = cr\n colindex = cc\n // eslint-disable-next-line no-labels\n break NestedLoop\n }\n }\n }\n }\n if (scriptType !== Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY) {\n if (rowindex !== undefined && this.caps[Capabilities.SCRIPTING_XLSX_HASHEADERS]) {\n rowindex++\n }\n }\n } else if (rowindex === undefined && colindex !== undefined) {\n for (let i = 1; i < 1000; i++) {\n if (this._get(sheet, i, colindex)) {\n rowindex = i\n break\n }\n }\n if (this.caps[Capabilities.SCRIPTING_XLSX_HASHEADERS]) {\n rowindex++\n }\n } else if (rowindex !== undefined && colindex === undefined) {\n for (let i = 0; i < this.colnames.length; i++) {\n if (this._get(sheet, rowindex, i)) {\n colindex = i\n break\n }\n }\n }\n\n if (_.isNull(hasNameCol)) {\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO || scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n if (this.caps[Capabilities.SCRIPTING_XLSX_HASHEADERS]) {\n if (this._get(sheet, rowindex - 1, colindex) && this._get(sheet, rowindex - 1, colindex + 1) && this._get(sheet, rowindex - 1, colindex + 2)) {\n hasNameCol = true\n }\n }\n }\n }\n return { rowindex, colindex, hasNameCol }\n }\n}\n","const _ = require('lodash')\n\nconst Capabilities = require('../Capabilities')\nconst Constants = require('./Constants')\nconst CompilerBase = require('./CompilerBase')\nconst Utterance = require('./Utterance')\nconst { ConvoHeader, Convo } = require('./Convo')\nconst { linesToConvoStep, convoStepToLines, validateConvo, validSenders, linesToScriptingMemories } = require('./helper')\n\nmodule.exports = class CompilerTxt extends CompilerBase {\n constructor (context, caps = {}) {\n super(context, caps)\n\n this.eol = caps[Capabilities.SCRIPTING_TXT_EOL]\n }\n\n Validate () {\n super.Validate()\n this._AssertCapabilityExists(Capabilities.SCRIPTING_TXT_EOL)\n }\n\n GetHeaders (scriptBuffer) {\n let scriptData = scriptBuffer\n if (Buffer.isBuffer(scriptBuffer)) scriptData = scriptData.toString()\n\n const lines = scriptData.split(this.eol)\n\n const header = { }\n\n if (lines && !lines[0].startsWith('#')) {\n header.name = lines[0]\n }\n return new ConvoHeader(header)\n }\n\n Compile (scriptBuffer, scriptType = Constants.SCRIPTING_TYPE_CONVO) {\n let scriptData = scriptBuffer\n if (Buffer.isBuffer(scriptBuffer)) scriptData = scriptData.toString()\n\n const lines = _.map(scriptData.split(this.eol), (line) => line.trim())\n\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO) {\n return this._compileConvo(lines, false)\n } else if (scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n return this._compileConvo(lines, true)\n } else if (scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n return this._compileUtterances(lines)\n } else if (scriptType === Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY) {\n return this._compileScriptingMemory(lines)\n } else {\n throw Error(`Invalid script type ${scriptType}`)\n }\n }\n\n _compileConvo (lines, isPartial = false) {\n const convo = {\n header: {},\n conversation: []\n }\n\n let currentLineIndex = 0\n let currentLines = []\n let convoStepSender = null\n let convoStepChannel = null\n let convoStepLineIndex = null\n\n const parseMsg = (lines) => {\n lines = lines || []\n return linesToConvoStep(lines, convoStepSender, this.context, this.eol)\n }\n\n const pushPrev = () => {\n if (convoStepSender && currentLines) {\n const convoStep = {\n sender: convoStepSender,\n channel: convoStepChannel,\n stepTag: 'Line ' + convoStepLineIndex\n }\n Object.assign(convoStep, parseMsg(currentLines))\n convo.conversation.push(convoStep)\n } else if (!convoStepSender && currentLines) {\n convo.header.name = currentLines[0]\n if (currentLines.length > 1) {\n convo.header.description = currentLines.slice(1).join(this.eol)\n }\n }\n }\n\n const isValidTagLine = (line) => {\n if (!line || !line.startsWith('#')) return false\n const sender = line.substr(1).split(' ')[0]\n return validSenders.includes(sender)\n }\n\n lines.forEach((line) => {\n currentLineIndex++\n line = line.trim()\n if (isValidTagLine(line)) {\n pushPrev()\n\n convoStepSender = line.substr(1).trim()\n convoStepChannel = null\n convoStepLineIndex = currentLineIndex\n if (convoStepSender.indexOf(' ') > 0) {\n convoStepChannel = convoStepSender.substr(convoStepSender.indexOf(' ') + 1).trim()\n convoStepSender = convoStepSender.substr(0, convoStepSender.indexOf(' ')).trim()\n }\n currentLines = []\n } else {\n currentLines.push(line)\n }\n })\n pushPrev()\n\n const result = [new Convo(this.context, convo)]\n if (isPartial) {\n this.context.AddPartialConvos(result)\n } else {\n this.context.AddConvos(result)\n }\n return result\n }\n\n _compileUtterances (lines) {\n if (lines && lines.length > 0) {\n const result = [new Utterance({ name: lines[0], utterances: lines.length > 1 ? lines.slice(1) : [] })]\n this.context.AddUtterances(result)\n return result\n }\n }\n\n _compileScriptingMemory (lines) {\n if (lines && lines.length > 1) {\n const scriptingMemories = linesToScriptingMemories(lines, this.caps[Capabilities.SCRIPTING_MEMORY_COLUMN_MODE])\n if (scriptingMemories && scriptingMemories.length > 0) {\n this.context.AddScriptingMemories(scriptingMemories)\n }\n return scriptingMemories\n }\n }\n\n Decompile (convos) {\n if (convos.length > 1) {\n throw new Error('only one convo per script')\n }\n\n const convo = convos[0]\n\n const validationResult = validateConvo(convo)\n if (validationResult.errors.length > 0) {\n throw new Error(validationResult.errors.map(e => e.message).join(' - '))\n }\n\n let script = ''\n\n if (convo.header.name) {\n script += convo.header.name + this.eol\n }\n if (convo.header.description) {\n script += convo.header.description + this.eol\n }\n\n convo.conversation.forEach((step) => {\n script += this.eol\n\n script += '#' + step.sender\n if (step.channel && step.channel !== 'default') {\n script += ' ' + step.channel\n }\n script += this.eol\n\n const stepLines = convoStepToLines(step)\n if (stepLines && stepLines.length > 0) script += stepLines.join(this.eol) + this.eol\n })\n return script\n }\n}\n","const { parse } = require('csv-parse/sync')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-core-CompilerCsv')\n\nconst Capabilities = require('../Capabilities')\nconst CompilerBase = require('./CompilerBase')\nconst Constants = require('./Constants')\nconst { Convo } = require('./Convo')\nconst { linesToConvoStep } = require('./helper')\n\nconst DELIMITERS_CHECK = [',', ';', '|', '\\t']\nconst DEFAULT_DELIMITER = ','\n\nconst DEFAULT_QA_COLUMN_QUESTION = 0\nconst DEFAULT_QA_COLUMN_ANSWER = 1\n\nconst DEFAULT_MULTIROW_COLUMN_CONVERSATION = 0\nconst DEFAULT_MULTIROW_COLUMN_SENDER = 1\nconst DEFAULT_MULTIROW_COLUMN_TEXT = 2\n\nconst _findColIndex = (header, colName) => {\n if (_.isString(colName)) {\n const result = header.findIndex(h => h === colName)\n if (result >= 0) return result\n throw new Error(`Column name ${colName} not found.`)\n }\n if (_.isNumber(colName)) {\n return colName\n }\n throw new Error(`Column ${colName} not found.`)\n}\n\nmodule.exports = class CompilerCsv extends CompilerBase {\n constructor (context, caps = {}) {\n super(context, caps)\n }\n\n Validate () {\n this._AssertCapabilityExists(Capabilities.SCRIPTING_CSV_QUOTE)\n this._AssertCapabilityExists(Capabilities.SCRIPTING_CSV_ESCAPE)\n\n return super.Validate()\n }\n\n Compile (scriptBuffer, scriptType = Constants.SCRIPTING_TYPE_CONVO) {\n const scriptData = Buffer.isBuffer(scriptBuffer) ? scriptBuffer.toString() : scriptBuffer\n if (scriptData.length === 0) {\n return []\n }\n\n let delimiter = this._GetOptionalCapability(Capabilities.SCRIPTING_CSV_DELIMITER)\n if (!delimiter) {\n const firstline = scriptData.split('\\n')[0].trim()\n for (const d of DELIMITERS_CHECK) {\n if (firstline.indexOf(d) >= 0) {\n delimiter = d\n break\n }\n }\n if (!delimiter) {\n delimiter = DEFAULT_DELIMITER\n debug(`Couldn't detect column delimiter automatically, using \"${delimiter}\" by default. Please set the SCRIPTING_CSV_DELIMITER capability.`)\n } else {\n debug(`Detected column delimiter automatically, using \"${delimiter}\".`)\n }\n }\n\n let rows\n try {\n rows = parse(scriptData, {\n delimiter,\n escape: this.caps[Capabilities.SCRIPTING_CSV_ESCAPE],\n quote: this.caps[Capabilities.SCRIPTING_CSV_QUOTE],\n columns: false\n })\n } catch (err) {\n throw new Error(`Invalid CSV: ${err.message || err}`)\n }\n if (rows.length === 0) {\n return []\n }\n if (rows[0].length === 1) {\n debug('Found 1-column CSV file, treating it as utterance file')\n if (scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n const result = [{ name: rows[0][0], utterances: rows.slice(1).map(r => r[0]) }]\n this.context.AddUtterances(result)\n return result\n } else {\n return []\n }\n }\n\n if (scriptType !== Constants.SCRIPTING_TYPE_CONVO && scriptType !== Constants.SCRIPTING_TYPE_PCONVO) {\n return []\n }\n let header = null\n if (rows.length > 0 && this.caps[Capabilities.SCRIPTING_CSV_SKIP_HEADER]) {\n header = rows[0]\n rows = rows.slice(1)\n }\n if (rows.length === 0) {\n return []\n }\n\n const lineNumberBase = this.caps[Capabilities.SCRIPTING_CSV_SKIP_HEADER] ? 2 : 1\n if (rows[0].length === 2) {\n debug('Found 2-column CSV file, treating it as question/answer file')\n\n let colQuestion = DEFAULT_QA_COLUMN_QUESTION\n let colAnswer = DEFAULT_QA_COLUMN_ANSWER\n\n if (header) {\n if (this.caps[Capabilities.SCRIPTING_CSV_QA_COLUMN_QUESTION] !== undefined) {\n colQuestion = _findColIndex(header, this.caps[Capabilities.SCRIPTING_CSV_QA_COLUMN_QUESTION])\n }\n if (this.caps[Capabilities.SCRIPTING_CSV_QA_COLUMN_ANSWER] !== undefined) {\n colAnswer = _findColIndex(header, this.caps[Capabilities.SCRIPTING_CSV_QA_COLUMN_ANSWER])\n }\n }\n\n const convos = rows.map((row, i) => new Convo(this.context, {\n header: {\n name: `L${i + lineNumberBase}`\n },\n conversation: [\n Object.assign({},\n linesToConvoStep(\n [row[colQuestion]],\n 'me',\n this.context,\n undefined,\n true\n ), { stepTag: `L${i + lineNumberBase}-Question` }),\n Object.assign({},\n linesToConvoStep(\n [row[colAnswer]],\n 'bot',\n this.context,\n undefined,\n true\n ), { stepTag: `L${i + lineNumberBase}-Answer` })\n ]\n }))\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO) {\n this.context.AddConvos(convos)\n } else if (scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n this.context.AddPartialConvos(convos)\n }\n return convos\n }\n\n if (rows[0].length >= 3) {\n debug('Found 3-column CSV file, treating it as multi-row conversation file')\n\n let colConversationId = DEFAULT_MULTIROW_COLUMN_CONVERSATION\n let colSender = DEFAULT_MULTIROW_COLUMN_SENDER\n let colText = DEFAULT_MULTIROW_COLUMN_TEXT\n\n if (header) {\n if (this.caps[Capabilities.SCRIPTING_CSV_MULTIROW_COLUMN_CONVERSATION_ID] !== undefined) {\n colConversationId = _findColIndex(header, this.caps[Capabilities.SCRIPTING_CSV_MULTIROW_COLUMN_CONVERSATION_ID])\n }\n if (this.caps[Capabilities.SCRIPTING_CSV_MULTIROW_COLUMN_SENDER] !== undefined) {\n colSender = _findColIndex(header, this.caps[Capabilities.SCRIPTING_CSV_MULTIROW_COLUMN_SENDER])\n }\n if (this.caps[Capabilities.SCRIPTING_CSV_MULTIROW_COLUMN_TEXT] !== undefined) {\n colText = _findColIndex(header, this.caps[Capabilities.SCRIPTING_CSV_MULTIROW_COLUMN_TEXT])\n }\n }\n\n const conversationIds = _.uniq(rows.map(r => r[colConversationId]))\n const convos = conversationIds.map(conversationId => {\n const convoRows = rows.map((row, i) => {\n if (row[colConversationId] === conversationId) {\n return Object.assign({},\n linesToConvoStep(\n [row[colText]],\n row[colSender],\n this.context,\n undefined,\n true\n ), { stepTag: `L${i + lineNumberBase}` })\n }\n return null\n }).filter(c => c)\n return new Convo(this.context, {\n header: {\n name: conversationId\n },\n conversation: convoRows\n })\n })\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO) {\n this.context.AddConvos(convos)\n } else if (scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n this.context.AddPartialConvos(convos)\n }\n return convos\n }\n }\n}\n","const _ = require('lodash')\nconst debug = require('debug')('botium-core-CompilerObject')\n\nconst Capabilities = require('../Capabilities')\nconst CompilerBase = require('./CompilerBase')\nconst Constants = require('./Constants')\nconst Utterance = require('./Utterance')\nconst { Convo } = require('./Convo')\nconst { linesToConvoStep, validSenders, linesToScriptingMemories } = require('./helper')\n\nmodule.exports = class CompilerObjectBase extends CompilerBase {\n constructor (context, caps = {}) {\n super(context, caps)\n\n this.eol = caps[Capabilities.SCRIPTING_TXT_EOL]\n }\n\n Validate () {\n super.Validate()\n this._AssertCapabilityExists(Capabilities.SCRIPTING_TXT_EOL)\n }\n\n GetHeaders (scriptBuffer) {\n debug('GetHeaders is not implemented!')\n }\n\n Deserialize (scriptData) {\n throw new Error('not implemented')\n }\n\n Compile (scriptBuffer, scriptType = Constants.SCRIPTING_TYPE_CONVO) {\n let scriptData = scriptBuffer\n if (Buffer.isBuffer(scriptBuffer)) scriptData = scriptData.toString()\n scriptData = this.Deserialize(scriptData)\n\n const result = []\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO) {\n result.push(...this._compileConvo(scriptData.convos, false))\n } else if (scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n result.push(...this._compileConvo(scriptData.partialConvos, true))\n } else if (scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n result.push(...this._compileUtterances(scriptData.utterances))\n } else if (scriptType === Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY) {\n result.push(...this._compileScriptingMemory(scriptData.scriptingMemory))\n }\n\n return result\n }\n\n _compileConvo (convos, isPartial = false) {\n const result = []\n for (const convoRaw of (convos || [])) {\n const conversation = []\n for (const [convoStepLineIndex, convoStepRaw] of convoRaw.steps.entries()) {\n const lineTag = `${convoStepLineIndex + 1}`.padStart(`${convoRaw.steps.length}`.length, '0')\n\n if (Object.keys(convoStepRaw).length > 1) {\n throw new Error(`Use just one from ${validSenders.join(',')} fields in step ${JSON.stringify(convoStepRaw)}`)\n }\n if (validSenders.findIndex(sender => convoStepRaw[sender]) < 0) {\n throw new Error(`Use ${validSenders.map(s => `'${s}'`).join(' or ')} field in step ${JSON.stringify(convoStepRaw)}`)\n }\n\n const convoStepSender = Object.keys(convoStepRaw)[0]\n const convoStepObject = convoStepRaw[convoStepSender]\n\n conversation.push(Object.assign(\n {\n sender: convoStepSender,\n stepTag: 'Line ' + lineTag\n },\n linesToConvoStep(convoStepObject, convoStepSender, this.context, this.eol)\n ))\n }\n\n const convo = {\n header: {\n name: convoRaw.name,\n description: convoRaw.description\n },\n conversation\n }\n\n const toAdd = new Convo(this.context, convo)\n result.push(toAdd)\n if (isPartial) {\n this.context.AddPartialConvos([toAdd])\n } else {\n this.context.AddConvos([toAdd])\n }\n }\n return result\n }\n\n _compileUtterances (utterancesRaw) {\n const result = []\n const names = Object.keys(utterancesRaw || {})\n for (const name of names) {\n if (!_.isArray(utterancesRaw[name])) {\n throw new Error(`The '${name}' utterance has to be an array.`)\n }\n result.push(new Utterance({ name, utterances: (utterancesRaw[name]).map(u => `${u}`) }))\n }\n this.context.AddUtterances(result)\n return result\n }\n\n _compileScriptingMemory (lines) {\n if (lines && lines.length > 0) {\n if (_.isString(lines[0])) {\n if (lines.length > 1) {\n const scriptingMemories = linesToScriptingMemories(lines, this.caps[Capabilities.SCRIPTING_MEMORY_COLUMN_MODE])\n if (scriptingMemories && scriptingMemories.length > 0) {\n this.context.AddScriptingMemories(scriptingMemories)\n }\n return scriptingMemories\n }\n } else {\n this.context.AddScriptingMemories(lines)\n return lines\n }\n }\n return []\n }\n\n Decompile (convos) {\n throw new Error('not implemented')\n }\n}\n","const YAML = require('yaml')\n\nconst CompilerObjectBase = require('./CompilerObjectBase')\nmodule.exports = class CompilerYaml extends CompilerObjectBase {\n constructor (context, caps = {}) {\n super(context, caps)\n }\n\n Deserialize (scriptData) {\n return YAML.parse(scriptData)\n }\n}\n","const CompilerObjectBase = require('./CompilerObjectBase')\nconst { convoStepToObject } = require('./helper')\n\nmodule.exports = class CompilerJson extends CompilerObjectBase {\n constructor (context, caps = {}) {\n super(context, caps)\n }\n\n Deserialize (scriptData) {\n return JSON.parse(scriptData)\n }\n\n Decompile (convos) {\n const result = convos.map(convo => ({\n name: convo.header.name,\n description: convo.header.description,\n steps: convo.conversation.map(set => ({\n [set.sender]: convoStepToObject(set)\n }))\n }))\n return JSON.stringify({ convos: result }, null, 2)\n }\n}\n","const debug = require('debug')('botium-core-CompilerMarkdown')\nconst MarkdownIt = require('markdown-it')\nconst util = require('util')\nconst md = new MarkdownIt()\n\nconst Capabilities = require('../Capabilities')\nconst CompilerBase = require('./CompilerBase')\nconst Constants = require('./Constants')\nconst { Convo } = require('./Convo')\nconst Utterance = require('./Utterance')\nconst { linesToConvoStep, validSenders, validateSender } = require('./helper')\n\nmodule.exports = class CompilerMarkdown extends CompilerBase {\n constructor (context, caps = {}) {\n super(context, caps)\n\n this.eol = caps[Capabilities.SCRIPTING_TXT_EOL]\n }\n\n Validate () {\n super.Validate()\n this._AssertCapabilityExists(Capabilities.SCRIPTING_TXT_EOL)\n }\n\n Compile (scriptBuffer, scriptType = Constants.SCRIPTING_TYPE_CONVO) {\n if (Buffer.isBuffer(scriptBuffer)) scriptBuffer = scriptBuffer.toString()\n\n const parsed = md.parse(scriptBuffer, {})\n\n const _toStructuredMarkdown = (parsed) => {\n let depth = -1\n const struct = [{ children: [] }, null, null, null, null, null]\n\n const _add = (entry) => {\n if (!struct[depth] || !struct[depth].children) throw new Error(`\"${entry.markup}\" not expected here (Line ${entry.map[0] + 1}): format invalid`)\n struct[depth].children.push(entry)\n entry.children = []\n struct[depth + 1] = entry\n }\n\n for (const entry of parsed) {\n if (entry.type === 'heading_open') {\n if (entry.tag === 'h1') {\n depth = 0\n } else if (entry.tag === 'h2') {\n if (depth < 0 || depth > 1) {\n throw new Error(`\"${entry.markup}\" not expected here (Line ${entry.map[0] + 1}): expecting parent \"#\" for \"${entry.markup}\"`)\n }\n depth = 1\n } else {\n debug(`Markdown entry \"${util.inspect(entry)}\" ignored. Unknown heading`)\n }\n } else if (entry.type === 'bullet_list_open') {\n if (depth < 1) {\n throw new Error(`\"${entry.markup}\" not expected here (Line ${entry.map[0] + 1}): expecting parent \"##\" for \"${entry.markup}\"`)\n }\n if (depth > 3) {\n throw new Error(`\"${entry.markup}\" not expected here (Line ${entry.map[0] + 1}): Bullet list depth 3 not supported`)\n }\n depth++\n } else if (entry.type === 'bullet_list_close') {\n depth--\n } else if (entry.type === 'inline') {\n _add(entry)\n }\n }\n return struct[0]\n }\n\n const structured = _toStructuredMarkdown(parsed)\n for (const convosOrUtterances of structured.children) {\n if ((convosOrUtterances.content === 'Convos' && scriptType === Constants.SCRIPTING_TYPE_CONVO) ||\n (convosOrUtterances.content === 'PartialConvos' && scriptType === Constants.SCRIPTING_TYPE_PCONVO)) {\n const convosBotium = []\n for (const convo of convosOrUtterances.children) {\n const conversation = []\n for (const step of convo.children) {\n const sender = step.content.toLowerCase()\n if (validateSender(sender)) {\n // handle both:\n // - BUTTONS checkbutton|checkbutton2\n // and\n // - BUTTONS\n // - checkbutton\n // - checkbutton2\n conversation.push(Object.assign(\n {\n sender,\n stepTag: 'Line ' + (step.map[0] + 1)\n },\n linesToConvoStep(step.children.map(child => child.content +\n (child.children ? ' ' + child.children.map(child => child.content).join('|') : '')), sender, this.context, this.eol)\n ))\n } else {\n debug(`Expected sender ${validSenders.map(s => `'${s}'`).join(' or ')} but found ${sender}`)\n }\n }\n convosBotium.push(new Convo(this.context, {\n header: {\n name: convo.content\n },\n conversation\n }))\n }\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO) {\n this.context.AddConvos(convosBotium)\n } else if (scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n this.context.AddPartialConvos(convosBotium)\n }\n } else if (convosOrUtterances.content === 'Utterances' && scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n const utterancesBotium = []\n for (const utteranceStruct of convosOrUtterances.children) {\n utterancesBotium.push(new Utterance({ name: utteranceStruct.content, utterances: utteranceStruct.children.map(child => `${child.content}`) }))\n }\n this.context.AddUtterances(utterancesBotium)\n }\n }\n }\n}\n","const LogicHookUtils = require('./logichook/LogicHookUtils')\nconst util = require('util')\nconst crypto = require('crypto')\nconst fs = require('fs')\nconst path = require('path')\nconst globby = require('globby')\nconst _ = require('lodash')\nconst randomize = require('randomatic')\nconst promiseRetry = require('promise-retry')\nrequire('promise.allsettled').shim()\nconst debug = require('debug')('botium-core-ScriptingProvider')\n\nconst Constants = require('./Constants')\nconst Capabilities = require('../Capabilities')\nconst Defaults = require('../Defaults')\nconst { Convo, ConvoStep } = require('./Convo')\nconst ScriptingMemory = require('./ScriptingMemory')\nconst { BotiumError, botiumErrorFromList, botiumErrorFromErr } = require('./BotiumError')\nconst RetryHelper = require('../helpers/RetryHelper')\nconst { getMatchFunction } = require('./MatchFunctions')\nconst precompilers = require('./precompilers')\n\nconst globPattern = '**/+(*.convo.txt|*.utterances.txt|*.pconvo.txt|*.scriptingmemory.txt|*.xlsx|*.xlsm|*.convo.csv|*.pconvo.csv|*.yaml|*.yml|*.json|*.md|*.markdown)'\nconst skipPattern = /^skip[.\\-_]/i\n\nconst p = (retryHelper, fn) => {\n const promise = () => new Promise((resolve, reject) => {\n try {\n resolve(fn())\n } catch (err) {\n reject(err)\n }\n })\n\n if (retryHelper) {\n return promiseRetry((retry, number) => {\n return promise().catch(err => {\n if (retryHelper.shouldRetry(err)) {\n debug(`Asserter trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, retryHelper.retrySettings)\n } else {\n return promise()\n }\n}\n\nconst pnot = (retryHelper, fn, errTemplate) => {\n const promise = () => new Promise(async (resolve, reject) => { // eslint-disable-line no-async-promise-executor\n try {\n await fn()\n reject(errTemplate)\n } catch (err) {\n resolve()\n }\n })\n\n if (retryHelper) {\n return promiseRetry((retry, number) => {\n return promise().catch(() => {\n if (retryHelper.shouldRetry(errTemplate)) {\n debug(`Asserter trial #${number} failed, !retry activated`)\n retry(errTemplate)\n } else {\n throw errTemplate\n }\n })\n }, retryHelper.retrySettings)\n } else {\n return promise()\n }\n}\n\nmodule.exports = class ScriptingProvider {\n constructor (caps) {\n this.caps = caps || _.cloneDeep(Defaults.Capabilities)\n this.compilers = {}\n this.convos = []\n this.utterances = {}\n this.matchFn = null\n this.asserters = {}\n this.globalAsserter = {}\n this.logicHooks = {}\n this.globalLogicHook = {}\n this.userInputs = {}\n this.partialConvos = {}\n this.scriptingMemories = []\n\n this.scriptingEvents = {\n onConvoBegin: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onConvoBegin', logicHooks: (convo.beginLogicHook || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onConvoEnd: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onConvoEnd', logicHooks: (convo.endLogicHook || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onMeStart: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onMeStart', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onMePrepare: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onMePrepare', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onMeEnd: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onMeEnd', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onBotStart: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onBotStart', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onBotPrepare: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onBotPrepare', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onBotEnd: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onBotEnd', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n assertConvoBegin: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createAsserterPromises({ asserterType: 'assertConvoBegin', asserters: (convo.beginAsserter || []), convo, convoStep, scriptingMemory, ...rest })\n },\n assertConvoStep: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createAsserterPromises({ asserterType: 'assertConvoStep', asserters: (convoStep.asserters || []), convo, convoStep, scriptingMemory, ...rest })\n },\n assertConvoEnd: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createAsserterPromises({ asserterType: 'assertConvoEnd', asserters: (convo.endAsserter || []), convo, convoStep, scriptingMemory, ...rest })\n },\n setUserInput: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createUserInputPromises({ convo, convoStep, scriptingMemory, ...rest })\n },\n resolveUtterance: ({ utterance, resolveEmptyIfUnknown }) => {\n return this._resolveUtterance({ utterance, resolveEmptyIfUnknown })\n },\n assertBotResponse: (botresponse, tomatch, stepTag, meMsg) => {\n if (!_.isArray(tomatch)) {\n tomatch = [tomatch]\n }\n debug(`assertBotResponse ${stepTag} ${meMsg ? `(${meMsg}) ` : ''}BOT: ${botresponse} = ${tomatch} ...`)\n const found = _.find(tomatch, (utt) => this.matchFn(botresponse, utt))\n if (_.isNil(found)) {\n let message = `${stepTag}: Bot response `\n message += meMsg ? `(on ${meMsg}) ` : ''\n message += botresponse ? ('\"' + botresponse + '\"') : '<no response>'\n message += ' expected to match '\n message += tomatch && tomatch.length > 1 ? 'one of ' : ''\n message += `${tomatch.map(e => e ? '\"' + e + '\"' : '<any response>').join(', ')}`\n throw new BotiumError(\n message,\n {\n type: 'asserter',\n source: 'TextMatchAsserter',\n context: {\n stepTag\n },\n cause: {\n expected: tomatch,\n actual: botresponse,\n matchingMode: this.caps[Capabilities.SCRIPTING_MATCHING_MODE]\n }\n }\n )\n }\n },\n assertBotNotResponse: (botresponse, nottomatch, stepTag, meMsg) => {\n if (!_.isArray(nottomatch)) {\n nottomatch = [nottomatch]\n }\n debug(`assertBotNotResponse ${stepTag} ${meMsg ? `(${meMsg}) ` : ''}BOT: ${botresponse} != ${nottomatch} ...`)\n const found = _.find(nottomatch, (utt) => this.matchFn(botresponse, utt))\n if (!_.isNil(found)) {\n let message = `${stepTag}: Bot response `\n message += meMsg ? `(on ${meMsg}) ` : ''\n message += botresponse ? ('\"' + botresponse + '\"') : '<no response>'\n message += ' expected NOT to match '\n message += nottomatch && nottomatch.length > 1 ? 'one of ' : ''\n message += `${nottomatch.map(e => e ? '\"' + e + '\"' : '<any response>').join(', ')}`\n throw new BotiumError(\n message,\n {\n type: 'asserter',\n source: 'TextMatchAsserter',\n context: {\n stepTag\n },\n cause: {\n not: true,\n expected: nottomatch,\n actual: botresponse,\n matchingMode: this.caps[Capabilities.SCRIPTING_MATCHING_MODE]\n }\n }\n )\n }\n },\n fail: null\n }\n this.retryHelperAsserter = new RetryHelper(this.caps, 'ASSERTER')\n this.retryHelperLogicHook = new RetryHelper(this.caps, 'LOGICHOOK')\n this.retryHelperUserInput = new RetryHelper(this.caps, 'USERINPUT')\n }\n\n _createAsserterPromises ({ asserterType, asserters, convo, convoStep, scriptingMemory, ...rest }) {\n if (!this._isValidAsserterType(asserterType)) {\n throw Error(`Unknown asserterType ${asserterType}`)\n }\n\n const mapNot = {\n assertConvoBegin: 'assertNotConvoBegin',\n assertConvoStep: 'assertNotConvoStep',\n assertConvoEnd: 'assertNotConvoEnd'\n }\n const callAsserter = (asserterSpec, asserter, params) => {\n if (asserterSpec.not) {\n const notAsserterType = mapNot[asserterType]\n if (asserter[notAsserterType]) {\n return p(this.retryHelperAsserter, () => asserter[notAsserterType](params))\n } else {\n return pnot(this.retryHelperAsserter, () => asserter[asserterType](params),\n new BotiumError(\n `${convoStep.stepTag}: Expected asserter ${asserter.name || asserterSpec.name} with args \"${params.args}\" to fail`,\n {\n type: 'asserter',\n source: asserter.name || asserterSpec.name,\n params: {\n args: params.args\n },\n cause: {\n not: true,\n expected: 'failed',\n actual: 'not failed'\n }\n }\n )\n )\n }\n } else {\n return p(this.retryHelperAsserter, () => asserter[asserterType](params))\n }\n }\n\n const convoAsserter = asserters\n .filter(a => this.asserters[a.name][asserterType])\n .map(a => callAsserter(a, this.asserters[a.name], {\n convo,\n convoStep,\n scriptingMemory,\n args: ScriptingMemory.applyToArgs(a.args, scriptingMemory, this.caps, rest.botMsg),\n isGlobal: false,\n ...rest\n }))\n const globalAsserter = Object.values(this.globalAsserter)\n .filter(a => a[asserterType])\n .map(a => p(this.retryHelperAsserter, () => a[asserterType]({ convo, convoStep, scriptingMemory, args: [], isGlobal: true, ...rest })))\n\n const allPromises = [...convoAsserter, ...globalAsserter]\n if (this.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n return Promise.allSettled(allPromises).then((results) => {\n const rejected = results.filter(result => result.status === 'rejected').map(result => result.reason)\n if (rejected.length) {\n throw botiumErrorFromList(rejected, {})\n }\n return results.filter(result => result.status === 'fulfilled').map(result => result.value)\n })\n }\n if (allPromises.length > 0) return Promise.all(allPromises).then(() => true)\n return Promise.resolve(false)\n }\n\n _createLogicHookPromises ({ hookType, logicHooks, convo, convoStep, scriptingMemory, ...rest }) {\n if (hookType !== 'onMeStart' && hookType !== 'onMePrepare' && hookType !== 'onMeEnd' && hookType !== 'onBotStart' && hookType !== 'onBotPrepare' && hookType !== 'onBotEnd' &&\n hookType !== 'onConvoBegin' && hookType !== 'onConvoEnd'\n ) {\n throw Error(`Unknown hookType ${hookType}`)\n }\n\n const convoStepPromises = (logicHooks || [])\n .filter(l => this.logicHooks[l.name][hookType])\n .map(l => p(this.retryHelperLogicHook, () => this.logicHooks[l.name][hookType]({\n convo,\n convoStep,\n scriptingMemory,\n args: ScriptingMemory.applyToArgs(l.args, scriptingMemory, this.caps, rest.botMsg),\n isGlobal: false,\n ...rest\n })))\n\n const globalPromises = Object.values(this.globalLogicHook)\n .filter(l => l[hookType])\n .map(l => p(this.retryHelperLogicHook, () => l[hookType]({ convo, convoStep, scriptingMemory, args: [], isGlobal: true, ...rest })))\n\n const allPromises = [...convoStepPromises, ...globalPromises]\n if (allPromises.length > 0) return Promise.all(allPromises).then(() => true)\n return Promise.resolve(false)\n }\n\n _createUserInputPromises ({ convo, convoStep, scriptingMemory, ...rest }) {\n const convoStepPromises = (convoStep.userInputs || [])\n .filter(ui => this.userInputs[ui.name])\n .map(ui => p(this.retryHelperUserInput, () => this.userInputs[ui.name].setUserInput({\n convo,\n convoStep,\n scriptingMemory,\n args: ScriptingMemory.applyToArgs(ui.args, scriptingMemory, this.caps, rest.meMsg),\n ...rest\n })))\n\n if (convoStepPromises.length > 0) return Promise.all(convoStepPromises).then(() => true)\n return Promise.resolve(false)\n }\n\n _isValidAsserterType (asserterType) {\n return ['assertConvoBegin', 'assertConvoStep', 'assertConvoEnd'].some(t => asserterType === t)\n }\n\n _resolveUtterance ({ utterance, resolveEmptyIfUnknown = false }) {\n if (_.isString(utterance)) {\n if (this.utterances[utterance]) {\n return this.utterances[utterance].utterances\n } else {\n const parts = utterance.split(' ')\n if (this.utterances[parts[0]]) {\n const uttArgs = parts.slice(1)\n return this.utterances[parts[0]].utterances.map(utt => util.format(utt, ...uttArgs))\n }\n }\n }\n if (resolveEmptyIfUnknown) return null\n else return [utterance]\n }\n\n _buildScriptContext () {\n return {\n AddConvos: this.AddConvos.bind(this),\n AddUtterances: this.AddUtterances.bind(this),\n AddPartialConvos: this.AddPartialConvos.bind(this),\n AddScriptingMemories: this.AddScriptingMemories.bind(this),\n Match: this.Match.bind(this),\n IsAsserterValid: this.IsAsserterValid.bind(this),\n IsLogicHookValid: this.IsLogicHookValid.bind(this),\n IsUserInputValid: this.IsUserInputValid.bind(this),\n GetPartialConvos: this.GetPartialConvos.bind(this),\n scriptingEvents: {\n assertConvoBegin: this.scriptingEvents.assertConvoBegin.bind(this),\n assertConvoStep: this.scriptingEvents.assertConvoStep.bind(this),\n assertConvoEnd: this.scriptingEvents.assertConvoEnd.bind(this),\n resolveUtterance: this.scriptingEvents.resolveUtterance.bind(this),\n assertBotResponse: this.scriptingEvents.assertBotResponse.bind(this),\n assertBotNotResponse: this.scriptingEvents.assertBotNotResponse.bind(this),\n onConvoBegin: this.scriptingEvents.onConvoBegin.bind(this),\n onConvoEnd: this.scriptingEvents.onConvoEnd.bind(this),\n onMeStart: this.scriptingEvents.onMeStart.bind(this),\n onMePrepare: this.scriptingEvents.onMePrepare.bind(this),\n onMeEnd: this.scriptingEvents.onMeEnd.bind(this),\n onBotStart: this.scriptingEvents.onBotStart.bind(this),\n onBotPrepare: this.scriptingEvents.onBotPrepare.bind(this),\n onBotEnd: this.scriptingEvents.onBotEnd.bind(this),\n setUserInput: this.scriptingEvents.setUserInput.bind(this),\n fail: this.scriptingEvents.fail && this.scriptingEvents.fail.bind(this)\n }\n }\n }\n\n Build () {\n const CompilerXlsx = require('./CompilerXlsx')\n this.compilers[Constants.SCRIPTING_FORMAT_XSLX] = new CompilerXlsx(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_XSLX].Validate()\n const CompilerTxt = require('./CompilerTxt')\n this.compilers[Constants.SCRIPTING_FORMAT_TXT] = new CompilerTxt(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_TXT].Validate()\n const CompilerCsv = require('./CompilerCsv')\n this.compilers[Constants.SCRIPTING_FORMAT_CSV] = new CompilerCsv(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_CSV].Validate()\n const CompilerYaml = require('./CompilerYaml')\n this.compilers[Constants.SCRIPTING_FORMAT_YAML] = new CompilerYaml(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_YAML].Validate()\n const CompilerJson = require('./CompilerJson')\n this.compilers[Constants.SCRIPTING_FORMAT_JSON] = new CompilerJson(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_JSON].Validate()\n const CompilerMarkdown = require('./CompilerMarkdown')\n this.compilers[Constants.SCRIPTING_FORMAT_MARKDOWN] = new CompilerMarkdown(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_MARKDOWN].Validate()\n\n this.matchFn = getMatchFunction(this.caps[Capabilities.SCRIPTING_MATCHING_MODE])\n\n const logicHookUtils = new LogicHookUtils({ buildScriptContext: this._buildScriptContext(), caps: this.caps })\n this.asserters = logicHookUtils.asserters\n this.globalAsserter = logicHookUtils.getGlobalAsserter()\n this.logicHooks = logicHookUtils.logicHooks\n this.globalLogicHook = logicHookUtils.getGlobalLogicHook()\n this.userInputs = logicHookUtils.userInputs\n }\n\n IsAsserterValid (name) {\n return this.asserters[name] || false\n }\n\n IsLogicHookValid (name) {\n return this.logicHooks[name] || false\n }\n\n IsUserInputValid (name) {\n return this.userInputs[name] || false\n }\n\n Match (botresponse, utterance) {\n return this.matchFn(botresponse, utterance)\n }\n\n Compile (scriptBuffer, scriptFormat, scriptType) {\n const compiler = this.GetCompiler(scriptFormat)\n return compiler.Compile(scriptBuffer, scriptType)\n }\n\n Decompile (convos, scriptFormat) {\n const compiler = this.GetCompiler(scriptFormat)\n return compiler.Decompile(convos)\n }\n\n GetCompiler (scriptFormat) {\n const result = this.compilers[scriptFormat]\n if (result) return result\n throw new Error(`No compiler found for scriptFormat ${scriptFormat}`)\n }\n\n ReadBotiumFilesFromDirectory (convoDir, globFilter) {\n const filelist = globby.sync(globPattern, { cwd: convoDir, gitignore: true })\n if (globFilter) {\n const filelistGlobbed = globby.sync(globFilter, { cwd: convoDir, gitignore: true })\n _.remove(filelist, (file) => filelistGlobbed.indexOf(file) < 0)\n }\n _.remove(filelist, (file) => {\n const isSkip = skipPattern.test(path.basename(file))\n if (isSkip) debug(`ReadBotiumFilesFromDirectory - skipping file '${file}'`)\n return isSkip\n })\n return filelist\n }\n\n ReadScriptsFromDirectory (convoDir, globFilter) {\n let filelist = []\n\n const convoDirStats = fs.statSync(convoDir)\n if (convoDirStats.isFile()) {\n filelist = [path.basename(convoDir)]\n convoDir = path.dirname(convoDir)\n } else {\n filelist = this.ReadBotiumFilesFromDirectory(convoDir, globFilter)\n }\n debug(`ReadConvosFromDirectory(${convoDir}) found filenames: ${filelist}`)\n\n const dirConvos = []\n const dirUtterances = []\n const dirPartialConvos = []\n const dirScriptingMemories = []\n filelist.forEach((filename) => {\n const { convos, utterances, pconvos, scriptingMemories } = this.ReadScript(convoDir, filename)\n if (convos) dirConvos.push(...convos)\n if (utterances) dirUtterances.push(...utterances)\n if (pconvos) dirPartialConvos.push(...pconvos)\n if (scriptingMemories) dirScriptingMemories.push(...scriptingMemories)\n })\n debug(`ReadConvosFromDirectory(${convoDir}) found convos:\\n ${dirConvos.length ? dirConvos.join('\\n') : 'none'}`)\n debug(`ReadConvosFromDirectory(${convoDir}) found utterances:\\n ${dirUtterances.length ? _.map(dirUtterances, (u) => u).join('\\n') : 'none'}`)\n debug(`ReadConvosFromDirectory(${convoDir}) found partial convos:\\n ${dirPartialConvos.length ? dirPartialConvos.join('\\n') : 'none'}`)\n debug(`ReadConvosFromDirectory(${convoDir}) scripting memories:\\n ${dirScriptingMemories.length ? dirScriptingMemories.map((dirScriptingMemory) => util.inspect(dirScriptingMemory)).join('\\n') : 'none'}`)\n return { convos: dirConvos, utterances: dirUtterances, pconvos: dirPartialConvos, scriptingMemories: dirScriptingMemories }\n }\n\n ReadScriptFromBuffer (scriptBuffer, scriptingFormat, scriptingTypes = null) {\n if (_.isString(scriptingTypes)) scriptingTypes = [scriptingTypes]\n if (_.isArray(scriptingTypes) && scriptingTypes.length === 0) scriptingTypes = null\n\n const result = {\n convos: [],\n utterances: [],\n pconvos: [],\n scriptingMemories: []\n }\n if (!scriptingTypes || scriptingTypes.includes(Constants.SCRIPTING_TYPE_UTTERANCES)) {\n result.utterances = this.Compile(scriptBuffer, scriptingFormat, Constants.SCRIPTING_TYPE_UTTERANCES)\n }\n if (!scriptingTypes || scriptingTypes.includes(Constants.SCRIPTING_TYPE_PCONVO)) {\n result.pconvos = this.Compile(scriptBuffer, scriptingFormat, Constants.SCRIPTING_TYPE_PCONVO)\n }\n if (!scriptingTypes || scriptingTypes.includes(Constants.SCRIPTING_TYPE_CONVO)) {\n result.convos = this.Compile(scriptBuffer, scriptingFormat, Constants.SCRIPTING_TYPE_CONVO)\n }\n if (!scriptingTypes || scriptingTypes.includes(Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY)) {\n result.scriptingMemories = this.Compile(scriptBuffer, scriptingFormat, Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY)\n }\n return result\n }\n\n ReadScript (convoDir, filename) {\n let result = {}\n\n try {\n let scriptBuffer = fs.readFileSync(path.resolve(convoDir, filename))\n\n const precompResponse = precompilers.execute(scriptBuffer, {\n convoDir,\n filename,\n caps: this.caps\n })\n if (precompResponse) {\n scriptBuffer = precompResponse.scriptBuffer\n debug(`File ${filename} precompiled by ${precompResponse.precompiler}` +\n (precompResponse.filename ? ` and filename changed to ${precompResponse.filename}` : '')\n )\n filename = precompResponse.filename || filename\n }\n\n if (filename.endsWith('.xlsx') || filename.endsWith('.xlsm')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_XSLX, [Constants.SCRIPTING_TYPE_UTTERANCES, Constants.SCRIPTING_TYPE_PCONVO, Constants.SCRIPTING_TYPE_CONVO, Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY])\n } else if (filename.endsWith('.convo.txt')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_TXT, Constants.SCRIPTING_TYPE_CONVO)\n } else if (filename.endsWith('.pconvo.txt')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_TXT, Constants.SCRIPTING_TYPE_PCONVO)\n } else if (filename.endsWith('.utterances.txt')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_TXT, Constants.SCRIPTING_TYPE_UTTERANCES)\n } else if (filename.endsWith('.scriptingmemory.txt')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_TXT, Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY)\n } else if (filename.endsWith('.convo.csv')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_CSV, Constants.SCRIPTING_TYPE_CONVO)\n } else if (filename.endsWith('.pconvo.csv')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_CSV, Constants.SCRIPTING_TYPE_PCONVO)\n } else if (filename.endsWith('.yaml') || filename.endsWith('.yml')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_YAML, [Constants.SCRIPTING_TYPE_UTTERANCES, Constants.SCRIPTING_TYPE_PCONVO, Constants.SCRIPTING_TYPE_CONVO, Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY])\n } else if (filename.endsWith('.json')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_JSON, [Constants.SCRIPTING_TYPE_UTTERANCES, Constants.SCRIPTING_TYPE_PCONVO, Constants.SCRIPTING_TYPE_CONVO, Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY])\n } else if (filename.endsWith('.markdown') || filename.endsWith('.md')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_MARKDOWN, [Constants.SCRIPTING_TYPE_UTTERANCES, Constants.SCRIPTING_TYPE_PCONVO, Constants.SCRIPTING_TYPE_CONVO])\n } else {\n debug(`ReadScript - dropped file: ${filename}, filename not supported`)\n }\n } catch (err) {\n debug(`ReadScript - an error occurred at '${filename}' file: ${err}`)\n throw botiumErrorFromErr(`ReadScript - an error occurred at '${filename}' file: ${err.message}`, err)\n }\n\n // Compilers saved the convos, and we alter here the saved version too\n if (result.convos && result.convos.length > 0) {\n result.convos.forEach((fileConvo) => {\n fileConvo.sourceTag = { convoDir, filename }\n if (!fileConvo.header.name) {\n fileConvo.header.name = filename\n }\n })\n const isSkip = (c) => c.header.name && skipPattern.test(c.header.name.toLowerCase())\n result.convos.filter(c => isSkip(c)).forEach(c => debug(`ReadScript - skipping convo '${c.header.name}'`))\n result.convos = result.convos.filter(c => !isSkip(c))\n }\n if (result.pconvos && result.pconvos.length > 0) {\n result.pconvos.forEach((filePartialConvo) => {\n filePartialConvo.sourceTag = { convoDir, filename }\n if (!filePartialConvo.header.name) {\n filePartialConvo.header.name = filename\n }\n })\n }\n if (result.scriptingMemories && result.scriptingMemories.length > 0) {\n result.scriptingMemories.forEach((scriptingMemory) => {\n scriptingMemory.sourceTag = { filename }\n })\n }\n if (result.utterances) {\n result.utterances = this._tagAndCleanupUtterances(result.utterances, convoDir, filename)\n }\n return { convos: result.convos || [], utterances: result.utterances || [], pconvos: result.pconvos || [], scriptingMemories: result.scriptingMemories || [] }\n }\n\n _tagAndCleanupUtterances (utteranceFiles, convoDir, filename) {\n return utteranceFiles.map((fileUtt) => {\n fileUtt.sourceTag = { convoDir, filename }\n fileUtt.utterances = fileUtt.utterances.filter(u => u)\n return fileUtt\n })\n }\n\n ExpandScriptingMemoryToConvos () {\n if (!this.caps[Capabilities.SCRIPTING_ENABLE_MEMORY]) {\n debug('ExpandScriptingMemoryToConvos - Scripting memory turned off, no convos expanded')\n return\n }\n\n // validating scripting memory without name\n const aggregatedNoNames = this.scriptingMemories.filter((entry) => {\n return !entry.header.name\n })\n if (aggregatedNoNames.length) {\n throw new BotiumError(\n 'Scripting Memory Definition(s) without name',\n {\n type: 'Scripting Memory',\n subtype: 'Scripting Memory without name',\n source: 'ScriptingProvider',\n cause: {\n aggregatedNoNames\n }\n }\n )\n }\n\n // validating scripting memory without variable\n const aggregatedNoVariables = this.scriptingMemories.filter((entry) => {\n return !entry.values || !Object.keys(entry.values).length\n })\n if (aggregatedNoVariables.length) {\n throw new BotiumError(\n `Scripting Memory Definition(s) ${aggregatedNoVariables.map(e => e.header.name).join(', ')} without variable`,\n {\n type: 'Scripting Memory',\n subtype: 'Scripting Memory without variable',\n source: 'ScriptingProvider',\n cause: {\n aggregatedNoVariables\n }\n }\n )\n }\n\n // validating scripting memory without variable name\n const aggregatedNoVariableNames = this.scriptingMemories.filter((entry) => {\n return !_.isUndefined(entry.values[''])\n })\n if (aggregatedNoVariableNames.length) {\n throw new BotiumError(\n `Scripting Memory Definition(s) ${aggregatedNoVariableNames.map(e => e.header.name).join(', ')} without variable name`,\n {\n type: 'Scripting Memory',\n subtype: 'Scripting Memory without variable name',\n source: 'ScriptingProvider',\n cause: {\n aggregatedNoVariableNames\n }\n }\n )\n }\n\n // validating scripting memory name collision\n const aggregatedDuplicates = []\n for (let i = 0; i < (this.scriptingMemories || []).length; i++) {\n const scriptingMemory = this.scriptingMemories[i]\n const duplicate = this.scriptingMemories.filter((entry, j) => {\n if (j === i || !(entry.values && scriptingMemory.values && entry.header && scriptingMemory.header)) {\n return false\n }\n return (entry.header.name === scriptingMemory.header.name) && (JSON.stringify(Object.keys(entry.values)) === JSON.stringify(Object.keys(scriptingMemory.values)))\n })\n if (duplicate.length) {\n aggregatedDuplicates.push({ scriptingMemory, duplicate })\n }\n }\n if (aggregatedDuplicates.length) {\n throw new BotiumError(\n `Scripting Memory Definition name(s) \"${_.uniq(aggregatedDuplicates.map(d => d.scriptingMemory.header.name)).join(', ')}\" are not unique`,\n {\n type: 'Scripting Memory',\n subtype: 'Scripting Memory name collision',\n source: 'ScriptingProvider',\n cause: {\n aggregatedDuplicates\n }\n }\n )\n }\n\n // validating scripting memory variable name collision\n const aggregatedIntersections = []\n for (let i = 0; i < (this.scriptingMemories || []).length; i++) {\n const scriptingMemory = this.scriptingMemories[i]\n const intersection = this.scriptingMemories.filter((entry, j) => {\n if (j === i || !(entry.values && scriptingMemory.values && entry.header && scriptingMemory.header)) {\n return false\n }\n const k1 = Object.keys(entry.values)\n const k2 = Object.keys(scriptingMemory.values)\n const kInt = _.intersection(k1, k2)\n return kInt.length && (kInt.length !== k1.length || kInt.length !== k2.length)\n })\n if (intersection.length) {\n aggregatedIntersections.push({ scriptingMemory, intersection })\n }\n }\n if (aggregatedIntersections.length) {\n throw new BotiumError(\n `Scripting Memory Definitions \"${aggregatedIntersections.map(i => i.scriptingMemory.header.name).join(', ')}\" are invalid because variable name collision\"`,\n {\n type: 'Scripting Memory',\n subtype: 'Scripting Memory variable name collision',\n source: 'ScriptingProvider',\n cause: {\n aggregatedIntersections\n }\n }\n )\n }\n\n const variablesToScriptingMemory = new Map()\n this.scriptingMemories.forEach((scriptingMemory) => {\n const key = JSON.stringify(Object.keys(scriptingMemory.values).sort())\n if (variablesToScriptingMemory.has(key)) {\n variablesToScriptingMemory.get(key).push(scriptingMemory)\n } else {\n variablesToScriptingMemory.set(key, [scriptingMemory])\n }\n })\n\n let convosExpandedAll = []\n const convosOriginalAll = []\n this.convos.forEach((convo) => {\n const convoVariables = convo.GetScriptingMemoryAllVariables(this)\n debug(`ExpandScriptingMemoryToConvos - Convo \"${convo.header.name}\" - Variables to replace, all: \"${util.inspect(convoVariables)}\"`)\n if (!convoVariables.length) {\n debug(`ExpandScriptingMemoryToConvos - Convo \"${convo.header.name}\" - skipped, no variable found to replace`)\n }\n\n let convosToExpand = [convo]\n let convosExpandedConvo = []\n // just for debug output. If we got 6 expanded convo, then this array can be for example [2, 3]\n const multipliers = []\n for (const [key, scriptingMemories] of variablesToScriptingMemory.entries()) {\n const variableNames = JSON.parse(key)\n if (_.intersection(variableNames, convoVariables).length) {\n const convosExpandedVariable = []\n multipliers.push(scriptingMemories.length)\n scriptingMemories.forEach((scriptingMemory) => {\n // Appending the case name to name\n for (const convoToExpand of convosToExpand) {\n const convoExpanded = _.cloneDeep(convoToExpand)\n convoExpanded.header.name = convoToExpand.header.name + '.' + scriptingMemory.header.name\n variableNames.forEach((name) => {\n const value = scriptingMemory.values[name]\n if (value) {\n convoExpanded.beginLogicHook.push({ name: 'SET_SCRIPTING_MEMORY', args: [name.substring(1), scriptingMemory.values[name]] })\n } else {\n convoExpanded.beginLogicHook.push({ name: 'CLEAR_SCRIPTING_MEMORY', args: [name.substring(1)] })\n }\n })\n convosExpandedVariable.push(convoExpanded)\n }\n })\n // This is a bit tricky. If the loop is done, then convosExpandedConvo will be used,\n // otherwise convosToExpand. They could be one variable\n convosToExpand = convosExpandedVariable\n convosExpandedConvo = convosExpandedVariable\n } else {\n debug(`ExpandScriptingMemoryToConvos - Convo \"${convo.header.name}\" - Scripting memory ${key} ignored because there is no common variable with convo ${util.inspect(convoVariables)}`)\n }\n }\n debug(`ExpandScriptingMemoryToConvos - Convo \"${convo.header.name}\" - Expanding convo \"${convo.header.name}\" Expanded ${convosExpandedConvo.length} convo. (Details: ${convosExpandedConvo.length} = ${multipliers ? multipliers.join('*') : 0})`)\n\n if (convosExpandedConvo.length) {\n convosExpandedAll = convosExpandedAll.concat(convosExpandedConvo)\n convosOriginalAll.push(convo)\n }\n })\n\n if (this.caps[Capabilities.SCRIPTING_MEMORYEXPANSION_KEEP_ORIG] !== true) {\n debug(`ExpandScriptingMemoryToConvos - Deleting ${convosOriginalAll.length} original convo`)\n this.convos = this.convos.filter((convo) => convosOriginalAll.indexOf(convo) === -1)\n }\n\n debug(`ExpandScriptingMemoryToConvos - ${convosExpandedAll.length} convo expanded, added to convos (${this.convos.length}). Result ${convosExpandedAll.length + this.convos.length} convo`)\n this.convos = this.convos.concat(convosExpandedAll)\n this._sortConvos()\n }\n\n ExpandUtterancesToConvos ({ useNameAsIntent, incomprehensionUtt } = {}) {\n const expandedConvos = []\n\n if (_.isUndefined(useNameAsIntent)) {\n useNameAsIntent = !!this.caps[Capabilities.SCRIPTING_UTTEXPANSION_USENAMEASINTENT]\n }\n if (_.isUndefined(incomprehensionUtt)) {\n incomprehensionUtt = this.caps[Capabilities.SCRIPTING_UTTEXPANSION_INCOMPREHENSION]\n }\n\n if (useNameAsIntent && incomprehensionUtt) {\n throw new Error('ExpandUtterancesToConvos - SCRIPTING_UTTEXPANSION_USENAMEASINTENT and SCRIPTING_UTTEXPANSION_INCOMPREHENSION are incompatible')\n }\n if (incomprehensionUtt && !this.utterances[incomprehensionUtt]) {\n throw new Error(`ExpandUtterancesToConvos - incomprehension utterance '${incomprehensionUtt}' undefined`)\n }\n\n if (useNameAsIntent) {\n debug('ExpandUtterancesToConvos - Using utterance name as NLU intent')\n } else if (incomprehensionUtt) {\n debug(`ExpandUtterancesToConvos - Using incomprehension utterance expansion mode: ${incomprehensionUtt}`)\n }\n\n _.keys(this.utterances).filter(u => u !== incomprehensionUtt).forEach(uttName => {\n const utt = this.utterances[uttName]\n expandedConvos.push(new Convo(this._buildScriptContext(), {\n header: {\n name: utt.name,\n description: `Expanded Utterances - ${utt.name}`\n },\n conversation: [\n {\n sender: 'me',\n logicHooks: [\n {\n name: 'SKIP_BOT_UNCONSUMED'\n }\n ],\n messageText: utt.name,\n stepTag: 'Step 1 - tell utterance'\n },\n useNameAsIntent\n ? {\n sender: 'bot',\n asserters: [\n {\n name: 'INTENT',\n args: [utt.name]\n }\n ],\n stepTag: 'Step 2 - check intent',\n not: false\n }\n : incomprehensionUtt\n ? {\n sender: 'bot',\n messageText: incomprehensionUtt,\n stepTag: 'Step 2 - check incomprehension',\n not: true\n }\n : {\n sender: 'bot',\n messageText: '',\n stepTag: 'Step 2 - check bot response',\n not: false\n }\n ],\n sourceTag: Object.assign({}, utt.sourceTag, { origUttName: utt.name })\n }))\n })\n this.convos = this.convos.concat(expandedConvos)\n this._sortConvos()\n }\n\n ExpandConvos () {\n const expandedConvos = []\n debug(`ExpandConvos - Using utterances expansion mode: ${this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE]}`)\n this.convos.forEach((convo) => {\n convo.expandPartialConvos()\n this._expandConvo(expandedConvos, convo)\n })\n this.convos = expandedConvos\n this._sortConvos()\n }\n\n /**\n *\n * @param expandedConvos\n * @param currentConvo\n * @param convoStepIndex\n * @param convoStepsStack list of ConvoSteps\n * @private\n */\n _expandConvo (expandedConvos, currentConvo, convoStepIndex = 0, convoStepsStack = []) {\n const utterancePostfix = (lineTag, uttOrUserInput) => {\n const naming = this.caps[Capabilities.SCRIPTING_UTTEXPANSION_NAMING_MODE] || Defaults.capabilities[Capabilities.SCRIPTING_UTTEXPANSION_NAMING_MODE]\n if (naming === 'justLineTag') {\n return `L${lineTag}`\n }\n const utteranceMax = this.caps[Capabilities.SCRIPTING_UTTEXPANSION_NAMING_UTTERANCE_MAX] || 0\n let postfix\n if (utteranceMax > 3 && uttOrUserInput.length > utteranceMax) {\n postfix = uttOrUserInput.substring(0, utteranceMax - 3) + '...'\n } else {\n postfix = uttOrUserInput\n }\n return `L${lineTag}-${postfix}`\n }\n if (convoStepIndex < currentConvo.conversation.length) {\n const currentStep = currentConvo.conversation[convoStepIndex]\n if (currentStep.sender === 'bot' || currentStep.sender === 'begin' || currentStep.sender === 'end') {\n const currentStepsStack = convoStepsStack.slice()\n currentStepsStack.push(_.cloneDeep(currentStep))\n this._expandConvo(expandedConvos, currentConvo, convoStepIndex + 1, currentStepsStack)\n } else if (currentStep.sender === 'me') {\n let useUnexpanded = true\n if (currentStep.messageText) {\n let uttName = null\n let uttArgs = null\n if (this.utterances[currentStep.messageText]) {\n uttName = currentStep.messageText\n } else {\n const parts = currentStep.messageText.split(' ')\n if (this.utterances[parts[0]]) {\n uttName = parts[0]\n uttArgs = parts.slice(1)\n }\n }\n if (this.utterances[uttName]) {\n const allutterances = this.utterances[uttName].utterances\n let sampleutterances = allutterances\n if (this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE] === 'first') {\n sampleutterances = [allutterances[0]]\n } else if (this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE] === 'random') {\n sampleutterances = allutterances\n .map(x => ({ x, r: Math.random() }))\n .sort((a, b) => a.r - b.r)\n .map(a => a.x)\n .slice(0, this.caps[Capabilities.SCRIPTING_UTTEXPANSION_RANDOM_COUNT])\n }\n sampleutterances.forEach((utt, index) => {\n const lineTag = `${index + 1}`.padStart(`${sampleutterances.length}`.length, '0')\n const currentStepsStack = convoStepsStack.slice()\n if (uttArgs) {\n utt = util.format(utt, ...uttArgs)\n }\n currentStepsStack.push(Object.assign(_.cloneDeep(currentStep), { messageText: utt }))\n const currentConvoLabeled = _.cloneDeep(currentConvo)\n Object.assign(currentConvoLabeled.header, { name: `${currentConvo.header.name}/${uttName}-${utterancePostfix(lineTag, utt)}` })\n if (!currentConvoLabeled.sourceTag) currentConvoLabeled.sourceTag = {}\n if (!currentConvoLabeled.sourceTag.origConvoName) currentConvoLabeled.sourceTag.origConvoName = currentConvo.header.name\n this._expandConvo(expandedConvos, currentConvoLabeled, convoStepIndex + 1, currentStepsStack)\n })\n useUnexpanded = false\n }\n }\n if (currentStep.userInputs && currentStep.userInputs.length > 0) {\n currentStep.userInputs.forEach((ui, uiIndex) => {\n const userInput = this.userInputs[ui.name]\n if (userInput && userInput.expandConvo) {\n const expandedUserInputs = userInput.expandConvo({ convo: currentConvo, convoStep: currentStep, args: ui.args })\n if (expandedUserInputs && expandedUserInputs.length > 0) {\n let sampleinputs = expandedUserInputs\n if (this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE] === 'first') {\n sampleinputs = [expandedUserInputs[0]]\n } else if (this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE] === 'random') {\n sampleinputs = expandedUserInputs\n .map(x => ({ x, r: Math.random() }))\n .sort((a, b) => a.r - b.r)\n .map(a => a.x)\n .slice(0, this.caps[Capabilities.SCRIPTING_UTTEXPANSION_RANDOM_COUNT])\n }\n sampleinputs.forEach((sampleinput, index) => {\n const lineTag = `${index + 1}`.padStart(`${sampleinputs.length}`.length, '0')\n const currentStepsStack = convoStepsStack.slice()\n const currentStepMod = _.cloneDeep(currentStep)\n currentStepMod.userInputs[uiIndex] = sampleinput\n\n currentStepsStack.push(currentStepMod)\n const currentConvoLabeled = _.cloneDeep(currentConvo)\n Object.assign(currentConvoLabeled.header, { name: `${currentConvo.header.name}/${ui.name}-${utterancePostfix(lineTag, (sampleinput.args && sampleinput.args.length) ? sampleinput.args.join(', ') : 'no-args')}` })\n this._expandConvo(expandedConvos, currentConvoLabeled, convoStepIndex + 1, currentStepsStack)\n })\n useUnexpanded = false\n }\n }\n })\n }\n if (useUnexpanded) {\n const currentStepsStack = convoStepsStack.slice()\n currentStepsStack.push(_.cloneDeep(currentStep))\n this._expandConvo(expandedConvos, currentConvo, convoStepIndex + 1, currentStepsStack)\n }\n }\n } else {\n expandedConvos.push(Object.assign(_.cloneDeep(currentConvo), { conversation: _.cloneDeep(convoStepsStack) }))\n }\n }\n\n _sortConvos () {\n this.convos = _.sortBy(this.convos, [(convo) => convo.header.sort || convo.header.name])\n let i = 0\n this.convos.forEach((convo) => {\n convo.header.order = ++i\n if (!convo.header.projectname) {\n convo.header.projectname = this.caps[Capabilities.PROJECTNAME]\n }\n if (!convo.header.testsessionname) {\n convo.header.testsessionname = this.caps[Capabilities.TESTSESSIONNAME]\n }\n })\n }\n\n AddConvos (convos) {\n if (convos && _.isArray(convos)) {\n this.convos = _.concat(this.convos, convos)\n } else if (convos) {\n this.convos.push(convos)\n }\n this._sortConvos()\n }\n\n AddUtterances (utterances) {\n const findAmbiguous = (utterances) => {\n const ambiguous = []\n let expected = null\n let base = null\n if (utterances && utterances.length > 1) {\n base = utterances[0]\n expected = ScriptingMemory.extractVarNames(utterances[0]).sort()\n const expectedString = JSON.stringify(expected)\n\n for (let i = 1; i < utterances.length; i++) {\n const actualString = JSON.stringify(ScriptingMemory.extractVarNames(utterances[i]).sort())\n\n if (actualString !== expectedString) {\n ambiguous.push(utterances[i])\n }\n }\n }\n\n return { expected, ambiguous, base }\n }\n\n if (utterances && !_.isArray(utterances)) {\n utterances = [utterances]\n }\n if (utterances) {\n _.forEach(utterances, (utt) => {\n const eu = this.utterances[utt.name]\n if (eu) {\n eu.utterances = _.uniq(_.concat(eu.utterances, utt.utterances))\n } else {\n this.utterances[utt.name] = utt\n }\n\n const { ambiguous, expected } = findAmbiguous(this.utterances[utt.name].utterances)\n\n if (ambiguous && ambiguous.length > 0) {\n debug(`Ambigous utterance \"${utt.name}\", expecting exact ${expected.length ? ('\"' + expected.join(', ') + '\"') : '<none>'} scripting memory variables in following user examples: ${ambiguous.map(d => `\"${d}\"`).join(', ')}`)\n }\n })\n }\n }\n\n AddPartialConvos (convos) {\n if (convos && _.isArray(convos)) {\n for (let i = 0; i < convos.length; i++) {\n const convo = convos[i]\n this.AddPartialConvos(convo)\n }\n } else if (convos) {\n if (!convos.header || !convos.header.name) {\n throw Error(`Header name is mandatory: ${JSON.stringify(convos.header)}`)\n }\n if (convos.header.name.indexOf('|') >= 0) {\n throw Error(`Invalid partial convo name: ${convos.header.name}`)\n }\n const name = convos.header.name\n if (this.partialConvos[name]) {\n throw Error(`Duplicate partial convo: ${name}`)\n }\n\n this.partialConvos[name] = convos\n }\n }\n\n GetPartialConvos () {\n return this.partialConvos\n }\n\n AddScriptingMemories (scriptingMemories) {\n if (scriptingMemories && _.isArray(scriptingMemories)) {\n for (let i = 0; i < scriptingMemories.length; i++) {\n const scriptingMemory = scriptingMemories[i]\n this.AddScriptingMemories(scriptingMemory)\n }\n } else if (scriptingMemories) {\n if (!scriptingMemories.header || !scriptingMemories.header.name) {\n throw new BotiumError(\n 'Scripting Memory Definition has no name',\n {\n type: 'Compiler',\n subtype: 'Scripting memory without name',\n source: 'ScriptingProvider',\n cause: {\n scriptingMemory: scriptingMemories\n }\n }\n )\n }\n\n if (!scriptingMemories.values || !Object.keys(scriptingMemories.values).length) {\n throw new BotiumError(\n 'Scripting Memory Definition has no variables',\n {\n type: 'Compiler',\n subtype: 'Scripting memory without variable',\n source: 'ScriptingProvider',\n cause: {\n scriptingMemory: scriptingMemories\n }\n }\n )\n }\n\n if (scriptingMemories.values && !_.isUndefined(scriptingMemories.values[''])) {\n throw new BotiumError(\n 'Scripting Memory Definition variable has no name',\n {\n type: 'Compiler',\n subtype: 'Scripting memory without variable name',\n source: 'ScriptingProvider',\n cause: {\n scriptingMemory: scriptingMemories\n }\n }\n )\n }\n\n this.scriptingMemories.push(scriptingMemories)\n }\n }\n\n GetConversationFlowView ({\n getConvoNodeHash = null, detectLoops = false, summarizeMultiSteps = true,\n extPickMeNodeProps = [], extPickBotNodeProps = [], extPickMeHashProps = [], extPickBotHashProps = []\n } = {}) {\n const root = []\n const botNodesByHash = {}\n const pickMeNodeProps = ['index', 'sender', 'messageText', 'utteranceSamples', 'utteranceCount', 'logicHooks', 'userInputs', ...extPickMeNodeProps]\n const pickBotNodeProps = ['index', 'sender', 'messageText', 'optional', 'not', 'utteranceSamples', 'utteranceCount', 'logicHooks', 'asserters', ...extPickBotNodeProps]\n const pickMeHashProps = ['sender', 'messageText', 'logicHooks', 'userInputs', ...extPickMeHashProps]\n const pickBotHashProps = ['sender', 'messageText', 'optional', 'not', 'logicHooks', 'asserters', ...extPickBotHashProps]\n\n this.convos.forEach((convo) => {\n const convoNodes = []\n for (const [convoStepIndex, convoStep] of convo.conversation.entries()) {\n if (convoStep.sender === 'begin' || convoStep.sender === 'end') continue\n convoStep.index = convoStepIndex\n if (convoStep.messageText) {\n const utterances = this._resolveUtterance({ utterance: convoStep.messageText, resolveEmptyIfUnknown: true })\n if (utterances) {\n convoStep.utteranceSamples = utterances.slice(0, 3)\n convoStep.utteranceCount = utterances.length\n }\n }\n\n const lastConvoNode = convoNodes.length === 0 ? null : convoNodes[convoNodes.length - 1]\n if (!lastConvoNode || !summarizeMultiSteps || convoNodes[convoNodes.length - 1].sender !== convoStep.sender) {\n convoNodes.push({\n sender: convoStep.sender,\n convoSteps: [convoStep],\n convoStepIndices: [convoStepIndex],\n hash: null\n })\n } else {\n lastConvoNode.convoSteps.push(convoStep)\n lastConvoNode.convoStepIndices.push(convoStepIndex)\n }\n }\n\n let currentChildren = root\n for (const convoNode of convoNodes) {\n const convoNodeValues = convoNode.sender === 'me'\n ? convoNode.convoSteps.map(convoStep => _.pick(convoStep, pickMeNodeProps))\n : convoNode.convoSteps.map(convoStep => _.pick(convoStep, pickBotNodeProps))\n const convoNodeHeader = {\n header: _.pick(convo.header, ['name', 'description']),\n sourceTag: convo.sourceTag,\n convoStepIndices: convoNode.convoStepIndices\n }\n\n let hash = getConvoNodeHash && getConvoNodeHash({ convo, convoNode })\n if (!hash) {\n if (convoNode.sender === 'bot') {\n hash = crypto.createHash('md5').update(JSON.stringify(convoNode.convoSteps.map(convoStep => _.pick(convoStep, pickBotHashProps)))).digest('hex')\n } else {\n hash = crypto.createHash('md5').update(JSON.stringify(convoNode.convoSteps.map(convoStep => _.pick(convoStep, pickMeHashProps)))).digest('hex')\n }\n }\n\n const existingChildNode = currentChildren.find(c => c.hash === hash)\n if (existingChildNode) {\n existingChildNode.convos.push(_.cloneDeep(convoNodeHeader))\n currentChildren = existingChildNode.childNodes\n continue\n }\n\n const existingBotNode = (detectLoops && convoNode.sender === 'bot' && botNodesByHash[hash])\n if (existingBotNode) {\n if (currentChildren.findIndex(c => c.ref === existingBotNode.key) < 0) {\n currentChildren.push({\n ref: existingBotNode.key\n })\n }\n const existingConvo = existingBotNode.convos.find(c => c.header.name === convoNodeHeader.header.name)\n if (existingConvo) {\n existingConvo.convoStepIndices = [...existingConvo.convoStepIndices, ...convoNodeHeader.convoStepIndices]\n } else {\n existingBotNode.convos.push(_.cloneDeep(convoNodeHeader))\n }\n currentChildren = existingBotNode.childNodes\n continue\n }\n const node = {\n sender: convoNode.sender,\n key: randomize('0', 20),\n hash: hash,\n convoNodes: convoNodeValues,\n convos: [_.cloneDeep(convoNodeHeader)],\n childNodes: []\n }\n if (node.sender === 'bot') {\n botNodesByHash[hash] = node\n }\n currentChildren.push(node)\n currentChildren = node.childNodes\n }\n })\n\n return root\n }\n\n GetConversationFlowDot (args) {\n const root = this.GetConversationFlowView(args)\n\n const nodes = []\n const lines = []\n\n const walkTreeForNodes = (node) => {\n nodes.push(`N_${node.hash} [label=\"${node.convoNodes.map(convoNode => (new ConvoStep(convoNode)).toString()).join('\\r\\n')}\"];`)\n if (node.childNodes && node.childNodes.length > 0) {\n node.childNodes.filter(c => !c.ref).forEach(c => walkTreeForNodes(c))\n }\n }\n const walkTreeForLines = (node, path = []) => {\n if (node.childNodes && node.childNodes.length > 0) {\n node.childNodes.filter(c => !c.ref).forEach(c => walkTreeForLines(c, [...path, `N_${node.hash}`]))\n node.childNodes.filter(c => c.ref).forEach(c => lines.push(`${[...path, `N_${node.hash}`, `N_${c.ref}`].join(' -> ')};`))\n } else {\n lines.push(`${[...path, `N_${node.hash}`].join(' -> ')};`)\n }\n }\n root.forEach(r => walkTreeForNodes(r))\n root.forEach(r => walkTreeForLines(r))\n\n return [\n 'digraph {',\n ...nodes,\n ...lines,\n '}'].join('\\r\\n')\n }\n}\n","module.exports = class BaseRepo {\n constructor (tempDirectory, sources) {\n this.tempDirectory = tempDirectory\n this.sources = Object.assign({}, sources)\n this.workingDirectory = null\n }\n\n Validate () {\n return Promise.resolve()\n }\n\n Prepare () {\n return Promise.resolve()\n }\n\n _AssertSourceExists (source) {\n if (!this.sources[source]) {\n throw new Error(`Source property ${source} not set`)\n }\n }\n}\n","const BaseRepo = require('./BaseRepo')\n\nmodule.exports = class NoRepo extends BaseRepo {\n Validate () {\n return super.Validate()\n }\n\n Prepare () {\n return super.Prepare()\n }\n}\n","const util = require('util')\nconst childProcess = require('child_process')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-core-ProcessUtils')\n\nmodule.exports = {\n childCommandLineRun: (cmd, ignoreErrors = false, processOptions = {}) => {\n const cmdOptions = cmd.split(' ')\n const cmdPart = cmdOptions[0]\n cmdOptions.splice(0, 1)\n return module.exports.childProcessRun(cmdPart, cmdOptions, ignoreErrors, processOptions)\n },\n\n childProcessRun: (cmd, cmdOptions, ignoreErrors = false, processOptions = {}) => {\n return new Promise((resolve, reject) => {\n debug('Running Command: ' + cmd + ' ' + _.join(cmdOptions, ' '))\n\n const runningProcess = childProcess.spawn(cmd, cmdOptions, processOptions)\n\n const stdout = []\n const stderr = []\n\n runningProcess.stdout.on('data', (data) => {\n if (data) {\n debug(`${cmd} STDOUT: ${data}`)\n stdout.push(data)\n }\n })\n runningProcess.stderr.on('data', (data) => {\n if (data) {\n debug(`${cmd} STDERR: ${data}`)\n stderr.push(data)\n }\n })\n runningProcess.on('close', (code) => {\n debug(cmd + ' exited with code ' + code)\n if (code === 0 || ignoreErrors) {\n resolve({ stdout, stderr })\n } else {\n reject(new Error(`${cmd} returned error code ${code}`))\n }\n })\n runningProcess.on('error', (err) => {\n if (ignoreErrors) {\n resolve()\n } else {\n reject(new Error(`${cmd} failed: ${util.inspect(err)}`))\n }\n })\n })\n }\n}\n","const path = require('path')\nconst async = require('async')\nconst mkdirp = require('mkdirp')\nconst debug = require('debug')('botium-core-GitRepo')\n\nconst Source = require('../Source')\nconst BaseRepo = require('./BaseRepo')\nconst ProcessUtils = require('../helpers/ProcessUtils')\n\nmodule.exports = class GitRepo extends BaseRepo {\n Validate () {\n return super.Validate().then(() => {\n this._AssertSourceExists(Source.GITPATH)\n this._AssertSourceExists(Source.GITURL)\n this._AssertSourceExists(Source.GITBRANCH)\n this._AssertSourceExists(Source.GITDIR)\n })\n }\n\n Prepare () {\n return new Promise((resolve, reject) => {\n async.series([\n\n (cloneDirectoryCreated) => {\n this.workingDirectory = path.resolve(this.tempDirectory, 'git')\n\n mkdirp(this.workingDirectory, (err) => {\n if (err) {\n return cloneDirectoryCreated(new Error(`Unable to create clone directory ${this.workingDirectory}: ${err}`))\n }\n cloneDirectoryCreated()\n })\n },\n\n (cloneReady) => {\n const gitCmdOptions = [\n 'clone',\n '-b',\n this.sources[Source.GITBRANCH],\n '--single-branch',\n '--depth',\n '1',\n this.sources[Source.GITURL],\n this.workingDirectory\n ]\n ProcessUtils.childProcessRun(this.sources[Source.GITPATH], gitCmdOptions, false, { cwd: this.workingDirectory })\n .then(() => cloneReady())\n .catch(cloneReady)\n },\n\n (workingDirectoryChanged) => {\n this.workingDirectory = path.resolve(this.workingDirectory, this.sources[Source.GITDIR])\n workingDirectoryChanged()\n },\n\n (prepareReady) => {\n if (this.sources[Source.GITPREPARECMD]) {\n ProcessUtils.childCommandLineRun(this.sources[Source.GITPREPARECMD], false, { cwd: this.workingDirectory })\n .then(() => prepareReady())\n .catch(prepareReady)\n } else {\n prepareReady()\n }\n }\n\n ], (err) => {\n if (err) {\n return reject(err)\n }\n debug(`git checkout out to ${this.workingDirectory}`)\n resolve()\n })\n })\n }\n}\n","const fs = require('fs')\nconst path = require('path')\nconst Source = require('../Source')\nconst BaseRepo = require('./BaseRepo')\n\nmodule.exports = class LocalRepo extends BaseRepo {\n Validate () {\n return super.Validate().then(() => {\n this._AssertSourceExists(Source.LOCALPATH)\n\n const checkPath = this.sources[Source.LOCALPATH]\n fs.stat(checkPath, (err, stats) => {\n if (err) {\n throw new Error(`${checkPath} not available: ${err}`)\n }\n if (stats.isDirectory() && !stats.isSymbolicLink()) {\n fs.access(checkPath, fs.constants.W_OK, (err1) => {\n if (err) {\n throw new Error(`${checkPath} not writeable: ${err}`)\n }\n })\n } else {\n throw new Error(`${checkPath} not a regular directory`)\n }\n })\n })\n }\n\n Prepare () {\n // No need to prepare anything\n this.workingDirectory = path.resolve(this.sources[Source.LOCALPATH])\n return Promise.resolve()\n }\n}\n","module.exports = {\n BUILD_CONTAINER: 'BUILD_CONTAINER',\n START_CONTAINER: 'START_CONTAINER',\n SENDTOBOT: 'SENDTOBOT',\n STOP_CONTAINER: 'STOP_CONTAINER',\n CLEAN_CONTAINER: 'CLEAN_CONTAINER'\n}\n","const { formatTimeout } = require('./Utils')\r\n\r\nmodule.exports = class QueueTimeoutError extends Error {\r\n constructor (timeoutMillis) {\r\n super(`Bot did not respond within ${formatTimeout(timeoutMillis)}`)\r\n this.timeoutMillis = timeoutMillis\r\n }\r\n}\r\n","const async = require('async')\r\nconst util = require('util')\r\n\r\nconst QueueTimeoutError = require('./QueueTimeoutError')\r\n\r\nmodule.exports = class Queue {\r\n constructor () {\r\n this.queue = []\r\n this.listeners = []\r\n this.pushListener = null\r\n }\r\n\r\n length () {\r\n return this.queue.length\r\n }\r\n\r\n empty () {\r\n this.queue = []\r\n }\r\n\r\n clear () {\r\n this.queue = []\r\n this.listeners = []\r\n }\r\n\r\n push (msg) {\r\n if (this.pushListener) {\r\n this.pushListener(msg)\r\n }\r\n\r\n if (this.listeners.length > 0) {\r\n this.listeners.shift()(msg)\r\n } else {\r\n this.queue.push(msg)\r\n }\r\n }\r\n\r\n pop (timeoutMillis) {\r\n if (this.queue.length > 0) {\r\n return Promise.resolve(this.queue.shift())\r\n }\r\n return new Promise((resolve, reject) => {\r\n let listener = null\r\n const timeoutRequest = async.timeout((timeoutCallback) => {\r\n listener = (msg) => {\r\n timeoutCallback(null, msg)\r\n }\r\n this.listeners.push(listener)\r\n }, timeoutMillis)\r\n\r\n timeoutRequest((err, msg) => {\r\n if (err && err.code === 'ETIMEDOUT') {\r\n this.listeners.splice(this.listeners.indexOf(listener), 1)\r\n reject(new QueueTimeoutError(timeoutMillis))\r\n } else if (err) {\r\n this.listeners.splice(this.listeners.indexOf(listener), 1)\r\n reject(new Error(`Queue pop error ${util.inspect(err)}`))\r\n } else {\r\n resolve(msg)\r\n }\r\n })\r\n })\r\n }\r\n\r\n registerPushListener (callback) {\r\n this.pushListener = callback\r\n }\r\n}\r\n","const util = require('util')\nconst async = require('async')\nconst rimraf = require('rimraf')\nconst Bottleneck = require('bottleneck')\nconst _ = require('lodash')\nconst request = require('request')\nconst debug = require('debug')('botium-connector-BaseContainer')\n\nconst Events = require('../Events')\nconst Capabilities = require('../Capabilities')\nconst Queue = require('../helpers/Queue')\nconst { executeHook, getHook } = require('../helpers/HookUtils')\nconst BotiumMockMessage = require('../mocks/BotiumMockMessage')\n\nmodule.exports = class BaseContainer {\n constructor (eventEmitter, tempDirectory, repo, caps, envs) {\n this.eventEmitter = eventEmitter\n this.repo = repo\n this.caps = Object.assign({}, caps)\n this.envs = Object.assign({}, envs)\n this.tempDirectory = tempDirectory\n this.cleanupTasks = []\n this.queues = {}\n this.bottleneck = null\n }\n\n Validate () {\n this.onBuildHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONBUILD])\n this.onStartHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONSTART])\n this.onUserSaysHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONUSERSAYS])\n this.onBotResponseHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONBOTRESPONSE])\n this.onStopHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONSTOP])\n this.onCleanHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONCLEAN])\n\n if (this.caps[Capabilities.RATELIMIT_BOTTLENECK_FN]) {\n if (_.isFunction(this.caps[Capabilities.RATELIMIT_BOTTLENECK_FN])) {\n this.bottleneck = this.caps[Capabilities.RATELIMIT_BOTTLENECK_FN]\n debug('Validate: Applying userSays rate limits from capability')\n } else {\n const limiter = new Bottleneck(this.caps[Capabilities.RATELIMIT_BOTTLENECK_FN])\n this.bottleneck = (fn) => limiter.schedule(fn)\n debug(`Validate: Applying userSays rate limits ${util.inspect(this.caps[Capabilities.RATELIMIT_BOTTLENECK_FN])}`)\n }\n } else if (this.caps[Capabilities.RATELIMIT_USERSAYS_MAXCONCURRENT] || this.caps[Capabilities.RATELIMIT_USERSAYS_MINTIME]) {\n const opts = {}\n if (this.caps[Capabilities.RATELIMIT_USERSAYS_MAXCONCURRENT]) opts.maxConcurrent = this.caps[Capabilities.RATELIMIT_USERSAYS_MAXCONCURRENT]\n if (this.caps[Capabilities.RATELIMIT_USERSAYS_MINTIME]) opts.minTime = this.caps[Capabilities.RATELIMIT_USERSAYS_MINTIME]\n const limiter = new Bottleneck(opts)\n this.bottleneck = (fn) => limiter.schedule(fn)\n debug(`Validate: Applying userSays rate limits ${util.inspect(opts)}`)\n }\n\n return Promise.resolve()\n }\n\n Build () {\n return new Promise((resolve, reject) => {\n this._RunCustomHook('onBuild', this.onBuildHook)\n .then(() => resolve(this))\n .catch((err) => reject(err))\n })\n }\n\n Start () {\n this.queues = {}\n return new Promise((resolve, reject) => {\n this._RunCustomHook('onStart', this.onStartHook)\n .then(() => resolve(this))\n .catch((err) => reject(err))\n })\n }\n\n UserSaysText (text) {\n const meMsg = new BotiumMockMessage({ sender: 'me', messageText: text })\n return this.UserSays(meMsg)\n }\n\n UserSays (meMsg) {\n const run = () => this._RunCustomHook('onUserSays', this.onUserSaysHook, { meMsg })\n .then(() => this.UserSaysImpl(meMsg))\n\n if (this.bottleneck) {\n return this.bottleneck(run)\n } else {\n return run()\n }\n }\n\n UserSaysImpl (meMsg) {\n return Promise.resolve(this)\n }\n\n WaitBotSays (channel = null, timeoutMillis = null) {\n if (!channel) channel = 'default'\n if (!timeoutMillis) timeoutMillis = this.caps[Capabilities.WAITFORBOTTIMEOUT]\n\n if (!this.queues[channel]) {\n this.queues[channel] = new Queue()\n }\n\n return new Promise((resolve, reject) => {\n this.queues[channel].pop(timeoutMillis)\n .then((botMsg) => {\n if (_.isError(botMsg)) {\n reject(botMsg)\n } else {\n resolve(botMsg)\n }\n })\n .catch((err) => {\n debug(`WaitBotSays error ${err.message || err}`)\n reject(err)\n })\n })\n }\n\n WaitBotSaysText (channel = null, timeoutMillis = null) {\n return this.WaitBotSays(channel, timeoutMillis)\n .then((botMsg) => {\n if (botMsg) {\n return botMsg.messageText\n }\n })\n }\n\n Restart () {\n return new Promise((resolve, reject) => {\n this.Stop()\n .then(() => this.Start())\n .then(() => resolve())\n .catch((err) => reject(err))\n })\n }\n\n Stop () {\n return new Promise((resolve, reject) => {\n this._RunCustomHook('onStop', this.onStopHook)\n .then(() => resolve(this))\n .catch((err) => reject(err))\n })\n }\n\n Clean () {\n this.userSaysLimiter = null\n return new Promise((resolve, reject) => {\n async.series([\n (hookExecuted) => {\n this._RunCustomHook('onClean', this.onCleanHook)\n .then(() => hookExecuted())\n .catch(() => hookExecuted())\n },\n\n (cleanupTasksDone) => {\n if (this.cleanupTasks) {\n async.series(\n this.cleanupTasks.map((task) => {\n return (cb) => {\n task((err) => {\n if (err) debug(`Cleanup failed: ${util.inspect(err)}`)\n cb()\n })\n }\n }),\n () => {\n cleanupTasksDone()\n }\n )\n } else {\n cleanupTasksDone()\n }\n },\n\n (rimraffed) => {\n if (this.caps[Capabilities.CLEANUPTEMPDIR]) {\n debug(`Cleanup rimrafing temp dir ${this.tempDirectory}`)\n rimraf(this.tempDirectory, (err) => {\n if (err) debug(`Cleanup temp dir ${this.tempDirectory} failed: ${util.inspect(err)}`)\n rimraffed()\n })\n } else {\n rimraffed()\n }\n }\n ], (err) => {\n if (err) {\n return reject(new Error(`Cleanup failed ${util.inspect(err)}`))\n }\n resolve()\n })\n })\n }\n\n _AssertCapabilityExists (cap) {\n if (!Object.prototype.hasOwnProperty.call(this.caps, cap)) {\n throw new Error(`Capability property ${cap} not set`)\n }\n }\n\n _AssertOneCapabilityExists () {\n const checkCaps = [...arguments]\n const found = checkCaps.find((cap) => this.caps[cap])\n if (!found) {\n throw new Error(`Capability property of ${checkCaps.join()} not set`)\n }\n }\n\n _QueueLength (channel = 'default') {\n return (this.queues[channel] && this.queues[channel].length()) || 0\n }\n\n _EmptyQueue (channel = 'default') {\n if (this.queues[channel]) {\n this.queues[channel].empty()\n }\n }\n\n async _QueueBotSays (botMsg) {\n if (_.isError(botMsg)) {\n if (!this.queues.default) {\n this.queues.default = new Queue()\n }\n this.queues.default.push(botMsg)\n this.eventEmitter.emit(Events.MESSAGE_RECEIVEFROMBOT_ERROR, this, botMsg)\n } else {\n if (!botMsg.channel) botMsg.channel = 'default'\n if (!botMsg.sender) botMsg.sender = 'bot'\n\n if (!this.queues[botMsg.channel]) {\n this.queues[botMsg.channel] = new Queue()\n }\n\n await this._RunCustomHook('onBotResponse', this.onBotResponseHook, { botMsg })\n this.queues[botMsg.channel].push(botMsg)\n this.eventEmitter.emit(Events.MESSAGE_RECEIVEDFROMBOT, this, botMsg)\n }\n }\n\n async _RunCustomHook (name, hook, args) {\n try {\n await executeHook(this.caps, hook, Object.assign({ container: this, request }, args))\n } catch (err) {\n debug(`_RunCustomHook ${name} finished with error: ${err.message || util.inspect(err)}`)\n }\n }\n}\n","const util = require('util')\nconst async = require('async')\nconst _ = require('lodash')\nconst io = require('socket.io-client')\nconst debug = require('debug')('botium-connector-GridContainer')\n\nconst Commands = require('../Commands')\nconst Events = require('../Events')\nconst Capabilities = require('../Capabilities')\nconst BaseContainer = require('./BaseContainer')\nconst BotiumMockMessage = require('../mocks/BotiumMockMessage')\n\nmodule.exports = class GridContainer extends BaseContainer {\n Validate () {\n return super.Validate().then(() => {\n this._AssertCapabilityExists(Capabilities.BOTIUMGRIDURL)\n })\n }\n\n Build () {\n this.buildPromise = this._defer()\n\n async.series([\n (baseComplete) => {\n super.Build().then(() => baseComplete()).catch(baseComplete)\n },\n\n (socketComplete) => {\n this.socket = io(this.caps[Capabilities.BOTIUMGRIDURL])\n\n this.socket.on('connect', () => {\n debug('connected')\n this.socket.emit('authentication', { apiToken: this.caps[Capabilities.BOTIUMAPITOKEN] })\n })\n this.socket.on('connect_error', (err) => {\n debug(`connect_error ${err.message}`)\n })\n this.socket.on('connect_timeout', (timeout) => {\n debug(`connect_timeout ${util.inspect(timeout)}`)\n })\n this.socket.on('error', (err) => {\n debug(`error ${err.message}`)\n })\n this.socket.on('authenticated', () => {\n debug('authenticated')\n this.socket.emit(Commands.BUILD_CONTAINER, this.caps, this.repo.sources, this.envs)\n })\n this.socket.on('unauthorized', (err) => {\n debug(`unauthorized ${err.message}`)\n socketComplete(`Grid Access not authorized: ${err.message}`)\n })\n this.socket.on(Events.TOOMUCHWORKERS_ERROR, (err) => {\n debug(`TOOMUCHWORKERS_ERROR ${err.message}`)\n socketComplete(`Grid Access not possible: ${err.message}`)\n })\n this.socket.on(Events.CONTAINER_BUILT, () => {\n debug(Events.CONTAINER_BUILT)\n socketComplete()\n })\n this.socket.on(Events.CONTAINER_BUILD_ERROR, (err) => {\n debug(`CONTAINER_BUILD_ERROR ${err.message}`)\n socketComplete(`Grid Build failed: ${err.message}`)\n })\n\n this.socket.on(Events.CONTAINER_STARTED, () => {\n debug(Events.CONTAINER_STARTED)\n this.eventEmitter.emit(Events.CONTAINER_STARTED, this)\n if (this.startPromise) {\n this.startPromise.resolve(this)\n this.startPromise = null\n }\n })\n this.socket.on(Events.CONTAINER_START_ERROR, (err) => {\n debug(`CONTAINER_START_ERROR ${err.message}`)\n this.eventEmitter.emit(Events.CONTAINER_START_ERROR, this, err)\n if (this.startPromise) {\n this.startPromise.reject(`Grid Start failed: ${err.message}`)\n this.startPromise = null\n }\n })\n\n this.socket.on(Events.MESSAGE_RECEIVEDFROMBOT, (botMsg) => {\n debug(`MESSAGE_RECEIVEDFROMBOT ${util.inspect(botMsg)}`)\n this._QueueBotSays(new BotiumMockMessage(botMsg))\n })\n\n this.socket.on(Events.CONTAINER_STOPPED, () => {\n debug(Events.CONTAINER_STOPPED)\n this.eventEmitter.emit(Events.CONTAINER_STOPPED, this)\n if (this.stopPromise) {\n this.stopPromise.resolve(this)\n this.stopPromise = null\n }\n })\n this.socket.on(Events.CONTAINER_STOP_ERROR, (err) => {\n debug(`CONTAINER_STOP_ERROR ${err.message}`)\n this.eventEmitter.emit(Events.CONTAINER_STOP_ERROR, this, err)\n if (this.stopPromise) {\n this.stopPromise.reject(`Grid Stop failed: ${err.message}`)\n this.stopPromise = null\n }\n })\n\n this.socket.on(Events.CONTAINER_CLEANED, () => {\n debug(Events.CONTAINER_CLEANED)\n this.eventEmitter.emit(Events.CONTAINER_CLEANED, this)\n if (this.cleanPromise) {\n this.cleanPromise.resolve(this)\n this.cleanPromise = null\n }\n this.socket.disconnect()\n this.socket = null\n })\n this.socket.on(Events.CONTAINER_CLEAN_ERROR, (err) => {\n debug(`CONTAINER_CLEAN_ERROR ${err.message}`)\n this.eventEmitter.emit(Events.CONTAINER_CLEAN_ERROR, this, err)\n if (this.cleanPromise) {\n this.cleanPromise.reject(`Grid Clean failed: ${err.message}`)\n this.cleanPromise = null\n }\n this.socket.disconnect()\n this.socket = null\n })\n }\n ], (err) => {\n if (err) {\n this.buildPromise.reject(new Error(`Cannot build grid containers: ${err.message}`))\n } else {\n this.buildPromise.resolve(this)\n }\n this.buildPromise = null\n })\n return this.buildPromise.promise\n }\n\n Start () {\n this.eventEmitter.emit(Events.CONTAINER_STARTING, this)\n\n return super.Start().then(() => {\n if (this.startPromise) return Promise.reject(new Error('already starting'))\n if (this.socket) {\n this.startPromise = this._defer()\n this.socket.emit(Commands.START_CONTAINER)\n\n return this.startPromise.promise\n } else {\n this.eventEmitter.emit(Events.CONTAINER_START_ERROR, this, 'Remote Agent not online')\n return Promise.reject(new Error('Remote Agent not online'))\n }\n })\n }\n\n UserSaysImpl (mockMsg) {\n return new Promise((resolve, reject) => {\n if (this.socket) {\n this.socket.emit(Commands.SENDTOBOT, mockMsg)\n this.eventEmitter.emit(Events.MESSAGE_SENTTOBOT, this, mockMsg)\n resolve(this)\n } else {\n this.eventEmitter.emit(Events.MESSAGE_SENDTOBOT_ERROR, this, 'Remote Agent not online')\n reject(new Error('Remote Agent not online'))\n }\n })\n }\n\n Stop () {\n this.eventEmitter.emit(Events.CONTAINER_STOPPING, this)\n\n return super.Stop().then(() => {\n if (this.stopPromise) return Promise.reject(new Error('already stopping'))\n if (this.socket) {\n this.stopPromise = this._defer()\n this.socket.emit(Commands.STOP_CONTAINER)\n\n return this.stopPromise.promise\n } else {\n return Promise.resolve(this)\n }\n })\n }\n\n Clean () {\n this.eventEmitter.emit(Events.CONTAINER_CLEANING, this)\n\n return super.Clean().then(() => {\n if (this.cleanPromise) return Promise.reject(new Error('already cleaning'))\n if (this.socket) {\n this.cleanPromise = this._defer()\n this.socket.emit(Commands.CLEAN_CONTAINER)\n\n return this.cleanPromise.promise\n } else {\n return Promise.resolve(this)\n }\n })\n }\n\n _ValidateCustomHook (capKey) {\n if (this.caps[capKey]) {\n if (!_.isString(this.caps[capKey])) {\n throw new Error(`Custom Hook ${capKey} has to be a command line string`)\n }\n }\n }\n\n _RunCustomHook (capKey) {\n return Promise.resolve()\n }\n\n _defer () {\n const deferred = {\n promise: null,\n resolve: null,\n reject: null\n }\n deferred.promise = new Promise((resolve, reject) => {\n deferred.resolve = resolve\n deferred.reject = reject\n })\n return deferred\n }\n}\n","const Events = require('../Events')\nconst BaseContainer = require('./BaseContainer')\nconst BotiumMockMessage = require('../mocks/BotiumMockMessage')\n\nmodule.exports = class InProcessContainer extends BaseContainer {\n UserSaysImpl (mockMsg) {\n this.eventEmitter.emit(Events.MESSAGE_SENTTOBOT, this, mockMsg)\n return Promise.resolve(this)\n }\n\n InjectBotSays (botMsg) {\n this._QueueBotSays(new BotiumMockMessage(botMsg))\n }\n}\n","const express = require('express')\nconst Redis = require('ioredis')\nconst bodyParser = require('body-parser')\nconst debug = require('debug')('botium-core-inbound-proxy')\n\nconst buildRedisHandler = (redisurl, topic) => {\n const redis = new Redis(redisurl)\n redis.on('connect', () => {\n debug(`Redis connected to ${JSON.stringify(redisurl || 'default')}`)\n })\n return (event) => {\n try {\n debug('Got Message Event:')\n debug(JSON.stringify(event, null, 2))\n\n redis.publish(topic, JSON.stringify(event))\n } catch (err) {\n debug('Error while publishing to redis')\n debug(err)\n }\n }\n}\n\nconst setupEndpoints = ({ app, endpoint, middleware, processEvent }) => {\n if (endpoint && !endpoint.endsWith('/')) endpoint = endpoint + '/'\n\n const handler = (req, res) => {\n if (req.body) {\n processEvent({\n originalUrl: req.originalUrl,\n originalMethod: req.method,\n body: req.body\n })\n res.status(200).json({}).end()\n } else {\n res.status(500).sendResponse('No body detected')\n }\n }\n if (endpoint) {\n app.all(endpoint, ...(middleware || []), handler)\n app.all(endpoint.endsWith('/') ? endpoint + '*' : endpoint + '/*', ...(middleware || []), handler)\n } else {\n app.all(...(middleware || []), handler)\n }\n}\n\nconst startProxy = async ({ port, endpoint, processEvent }) => {\n return new Promise((resolve, reject) => {\n const app = express()\n\n setupEndpoints({\n app,\n middleware: [\n bodyParser.json(),\n bodyParser.urlencoded({ extended: true })\n ],\n endpoint: endpoint || '/',\n processEvent\n })\n\n const proxy = app.listen(port, () => {\n console.log(`Botium Inbound Messages proxy is listening on port ${port}`)\n console.log(`Botium Inbound Messages endpoint available at http://127.0.0.1:${port}${endpoint}`)\n resolve(proxy)\n })\n })\n}\n\nmodule.exports = {\n buildRedisHandler,\n setupEndpoints,\n startProxy\n}\n","const util = require('util')\nconst async = require('async')\nconst request = require('request')\nconst Mustache = require('mustache')\nconst jp = require('jsonpath')\nconst mime = require('mime-types')\nconst { v4: uuidv4 } = require('uuid')\nconst Redis = require('ioredis')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-connector-simplerest')\n\nconst { startProxy } = require('../../grid/inbound/proxy')\nconst botiumUtils = require('../../helpers/Utils')\nconst { getAllCapValues } = require('../../helpers/CapabilitiesUtils')\nconst Capabilities = require('../../Capabilities')\nconst Defaults = require('../../Defaults').Capabilities\nconst { SCRIPTING_FUNCTIONS } = require('../../scripting/ScriptingMemory')\nconst { getHook, executeHook } = require('../../helpers/HookUtils')\nconst { escapeJSONString } = require('../../helpers/Utils')\nconst { BotiumError } = require('../../scripting/BotiumError')\n\nMustache.escape = s => s\n\nmodule.exports = class SimpleRestContainer {\n constructor ({ queueBotSays, caps, bottleneck }) {\n this.queueBotSays = queueBotSays\n this.caps = Object.assign({}, Defaults, caps)\n this.bottleneck = bottleneck || ((fn) => fn())\n this.processInbound = false\n this.redisTopic = this.caps[Capabilities.SIMPLEREST_REDIS_TOPIC] || 'SIMPLEREST_INBOUND_SUBSCRIPTION'\n\n if (this.caps[Capabilities.SIMPLEREST_INBOUND_ORDER_UNSETTLED_EVENTS_JSONPATH]) {\n const debounceTimeout = this.caps[Capabilities.SIMPLEREST_INBOUND_DEBOUNCE_TIMEOUT] || 500\n this.inboundEvents = []\n this._processOrderedInboundEventsArrayAsync = _.debounce(() => {\n const events = [...this.inboundEvents]\n this.inboundEvents = []\n const jsonPath = this._getMustachedVal(this.caps[Capabilities.SIMPLEREST_INBOUND_ORDER_UNSETTLED_EVENTS_JSONPATH], false)\n const sortedEvents = _.sortBy(events, (event) => {\n const qr = jp.query(event, jsonPath)\n return qr[0]\n })\n for (const event of sortedEvents) {\n setTimeout(() => this._processBodyAsync(event.body, true, !!this.caps[Capabilities.SIMPLEREST_INBOUND_UPDATE_CONTEXT]), 0)\n }\n }, debounceTimeout)\n }\n }\n\n Validate () {\n if (!this.caps[Capabilities.SIMPLEREST_URL]) throw new Error('SIMPLEREST_URL capability required')\n if (!this.caps[Capabilities.SIMPLEREST_METHOD] && !this.caps[Capabilities.SIMPLEREST_VERB]) throw new Error('SIMPLEREST_METHOD/SIMPLEREST_VERB capability required')\n if (_.keys(this.caps).findIndex(k => k.startsWith(Capabilities.SIMPLEREST_RESPONSE_JSONPATH)) < 0 && !this.caps[Capabilities.SIMPLEREST_RESPONSE_HOOK]) throw new Error('SIMPLEREST_RESPONSE_JSONPATH or SIMPLEREST_RESPONSE_HOOK capability required')\n if (this.caps[Capabilities.SIMPLEREST_INIT_CONTEXT]) {\n _.isObject(this.caps[Capabilities.SIMPLEREST_INIT_CONTEXT]) || JSON.parse(this.caps[Capabilities.SIMPLEREST_INIT_CONTEXT])\n }\n if (this.caps[Capabilities.SIMPLEREST_CONTEXT_MERGE_OR_REPLACE] !== 'MERGE' && this.caps[Capabilities.SIMPLEREST_CONTEXT_MERGE_OR_REPLACE] !== 'REPLACE') throw new Error('SIMPLEREST_CONTEXT_MERGE_OR_REPLACE capability only MERGE or REPLACE allowed')\n\n this.startHook = getHook(this.caps, this.caps[Capabilities.SIMPLEREST_START_HOOK])\n this.stopHook = getHook(this.caps, this.caps[Capabilities.SIMPLEREST_STOP_HOOK])\n this.requestHook = getHook(this.caps, this.caps[Capabilities.SIMPLEREST_REQUEST_HOOK])\n this.parserHook = getHook(this.caps, this.caps[Capabilities.SIMPLEREST_PARSER_HOOK])\n this.responseHook = getHook(this.caps, this.caps[Capabilities.SIMPLEREST_RESPONSE_HOOK])\n this.pollRequestHook = getHook(this.caps, this.caps[Capabilities.SIMPLEREST_POLL_REQUEST_HOOK])\n\n this.requestHooks = {}\n if (this.caps[Capabilities.SIMPLEREST_PING_REQUEST_HOOK]) {\n this.requestHooks.SIMPLEREST_PING = getHook(this.caps, this.caps[Capabilities.SIMPLEREST_PING_REQUEST_HOOK])\n }\n if (this.caps[Capabilities.SIMPLEREST_START_REQUEST_HOOK]) {\n this.requestHooks.SIMPLEREST_START = getHook(this.caps, this.caps[Capabilities.SIMPLEREST_START_REQUEST_HOOK])\n }\n if (this.caps[Capabilities.SIMPLEREST_STOP_REQUEST_HOOK]) {\n this.requestHooks.SIMPLEREST_STOP = getHook(this.caps, this.caps[Capabilities.SIMPLEREST_STOP_REQUEST_HOOK])\n }\n }\n\n Build () {\n return this._buildInbound()\n }\n\n Start () {\n return new Promise((resolve, reject) => {\n async.series([\n (contextInitComplete) => {\n this.view = {\n container: this,\n context: {},\n msg: {},\n botium: {\n conversationId: null,\n stepId: null\n },\n // Mustache deals with fuctions with, or without parameters differently.\n // -> we have to add our functions differently, if they have param or not.\n // -> optional parameters are not working here!\n // (render(text) is required for forcing mustache to replace valiables in the text first,\n // then send it to the function.)\n // (mapKeys: remove starting $)\n fnc: _.mapValues(_.mapKeys(SCRIPTING_FUNCTIONS, (value, key) => key.substring(1)), (descriptor) => {\n const safeCaps = Object.assign({}, this.caps, { [Capabilities.SECURITY_ALLOW_UNSAFE]: true })\n return descriptor.numberOfArguments ? () => { return (text, render) => descriptor.handler(safeCaps, render(text)) } : () => descriptor.handler(safeCaps)\n })\n }\n this.view.fnc.jsonify = () => (val, render) => {\n return escapeJSONString(render(val))\n }\n\n if (this.caps[Capabilities.SIMPLEREST_CONVERSATION_ID_TEMPLATE]) {\n this.view.botium.conversationId = this._getMustachedCap(Capabilities.SIMPLEREST_CONVERSATION_ID_TEMPLATE, false)\n } else {\n this.view.botium.conversationId = uuidv4()\n }\n\n if (this.caps[Capabilities.SIMPLEREST_INIT_CONTEXT]) {\n try {\n this.view.context = _.isObject(this.caps[Capabilities.SIMPLEREST_INIT_CONTEXT]) ? _.cloneDeep(this.caps[Capabilities.SIMPLEREST_INIT_CONTEXT]) : JSON.parse(this.caps[Capabilities.SIMPLEREST_INIT_CONTEXT])\n } catch (err) {\n contextInitComplete(`parsing SIMPLEREST_INIT_CONTEXT failed, no JSON detected (${err.message})`)\n }\n }\n contextInitComplete()\n },\n\n (startHookComplete) => {\n executeHook(this.caps, this.startHook, this.view).then(() => startHookComplete()).catch(startHookComplete)\n },\n\n (inboundListenerComplete) => {\n this._subscribeInbound()\n .then(() => inboundListenerComplete())\n .catch(inboundListenerComplete)\n },\n\n (startPollingComplete) => {\n this._startPolling()\n .then(() => startPollingComplete())\n .catch(startPollingComplete)\n },\n\n (pingComplete) => {\n if (this.caps[Capabilities.SIMPLEREST_PING_URL]) {\n this._makeCall('SIMPLEREST_PING')\n .then(body => {\n if (this.caps[Capabilities.SIMPLEREST_PING_UPDATE_CONTEXT] || this.caps[Capabilities.SIMPLEREST_PING_PROCESS_RESPONSE]) {\n return this._parseResponseBody(body)\n .then(body => {\n if (body) {\n debug(`Ping Uri ${this.caps[Capabilities.SIMPLEREST_PING_URL]} returned JSON response: ${botiumUtils.shortenJsonString(body)}`)\n return this._processBodyAsync(body, !!this.caps[Capabilities.SIMPLEREST_PING_PROCESS_RESPONSE], !!this.caps[Capabilities.SIMPLEREST_PING_UPDATE_CONTEXT])\n } else {\n debug(`Ping Uri ${this.caps[Capabilities.SIMPLEREST_PING_URL]} didn't return JSON response, ignoring it.`)\n }\n }).catch(err => {\n debug(`Ping Uri ${this.caps[Capabilities.SIMPLEREST_PING_URL]} didn't return JSON response, ignoring it (${err.message})`)\n })\n }\n }).then(() => {\n pingComplete()\n }).catch(err => {\n pingComplete(err.message)\n })\n } else {\n pingComplete()\n }\n },\n\n (initComplete) => {\n if (_.isString(this.caps[Capabilities.SIMPLEREST_INIT_TEXT])) {\n this._doRequest({ messageText: this.caps[Capabilities.SIMPLEREST_INIT_TEXT] }, !!this.caps[Capabilities.SIMPLEREST_INIT_PROCESS_RESPONSE], true).then(() => initComplete()).catch(initComplete)\n } else {\n initComplete()\n }\n },\n\n (startCallComplete) => {\n this.processInbound = true\n if (this.caps[Capabilities.SIMPLEREST_START_URL]) {\n this._makeCall('SIMPLEREST_START')\n .then(body => {\n if (this.caps[Capabilities.SIMPLEREST_START_UPDATE_CONTEXT] || this.caps[Capabilities.SIMPLEREST_START_PROCESS_RESPONSE]) {\n return this._parseResponseBody(body)\n .then(body => {\n if (body) {\n debug(`Start Uri ${this.caps[Capabilities.SIMPLEREST_START_URL]} returned JSON response: ${botiumUtils.shortenJsonString(body)}`)\n return this._processBodyAsync(body, !!this.caps[Capabilities.SIMPLEREST_START_PROCESS_RESPONSE], !!this.caps[Capabilities.SIMPLEREST_START_UPDATE_CONTEXT])\n } else {\n debug(`Start Uri ${this.caps[Capabilities.SIMPLEREST_START_URL]} didn't return JSON response, ignoring it.`)\n }\n }).catch(err => {\n debug(`Start Uri ${this.caps[Capabilities.SIMPLEREST_START_URL]} didn't return JSON response, ignoring it (${err.message})`)\n })\n }\n }).then(() => {\n startCallComplete()\n }).catch(err => {\n startCallComplete(new Error(`Failed to call url ${this.caps[Capabilities.SIMPLEREST_START_URL]} to start session: ${err.message}`))\n })\n } else {\n startCallComplete()\n }\n }\n\n ], (err) => {\n if (err) {\n return reject(new Error(`Start failed: ${err.message}`))\n }\n resolve()\n })\n })\n }\n\n UserSays (mockMsg) {\n return this._doRequest(mockMsg, true, true)\n }\n\n async Stop () {\n this.processInbound = false\n if (this.caps[Capabilities.SIMPLEREST_STOP_URL]) {\n try {\n await this._makeCall('SIMPLEREST_STOP')\n } catch (err) {\n throw new Error(`Failed to call url ${this.caps[Capabilities.SIMPLEREST_STOP_URL]} to stop session: ${err.message}`)\n }\n }\n await executeHook(this.caps, this.stopHook, this.view)\n await this._unsubscribeInbound()\n await this._stopPolling()\n this.view = {}\n }\n\n Clean () {\n return this._cleanInbound()\n }\n\n // Separated just for better module testing\n async _processBodyAsync (body, isFromUser, updateContext) {\n const p = async () => {\n try {\n const results = await this._processBodyAsyncImpl(body, isFromUser, updateContext)\n if (results) {\n for (const result of results) {\n setTimeout(() => this.queueBotSays(result), 0)\n }\n }\n } catch (err) {\n setTimeout(() => this.queueBotSays(err), 0)\n }\n }\n if (this.waitProcessQueue) {\n this.waitProcessQueue.push(p)\n debug('Async body is queued for processing.')\n } else {\n await p()\n }\n }\n\n async _emptyWaitProcessQueue () {\n if (this.waitProcessQueue && this.waitProcessQueue.length > 0) {\n for (const p of this.waitProcessQueue) {\n await p()\n }\n }\n this.waitProcessQueue = null\n }\n\n // Separated just for better module testing\n async _processBodyAsyncImpl (body, isFromUser, updateContext) {\n if (updateContext) {\n const mergeMode = this.caps[Capabilities.SIMPLEREST_CONTEXT_MERGE_OR_REPLACE]\n const jsonPathsContext = getAllCapValues(Capabilities.SIMPLEREST_CONTEXT_JSONPATH, this.caps)\n if (jsonPathsContext.length > 0) {\n for (const jsonPathContext of jsonPathsContext) {\n const contextNodes = jp.query(body, jsonPathContext)\n if (_.isArray(contextNodes) && contextNodes.length > 0) {\n if (mergeMode === 'MERGE') {\n Object.assign(this.view.context, contextNodes[0])\n } else if (mergeMode === 'REPLACE') {\n this.view.context = contextNodes[0]\n }\n }\n }\n } else {\n if (mergeMode === 'MERGE') {\n Object.assign(this.view.context, body)\n } else if (mergeMode === 'REPLACE') {\n this.view.context = body\n }\n }\n debug(`current session context: ${util.inspect(this.view.context)}`)\n }\n\n const result = []\n if (isFromUser) {\n const jsonPathRoots = []\n\n const jsonPathsBody = getAllCapValues(Capabilities.SIMPLEREST_BODY_JSONPATH, this.caps)\n if (jsonPathsBody.length > 0) {\n for (const jsonPathBody of jsonPathsBody) {\n const rb = jp.query(body, jsonPathBody)\n if (_.isArray(rb)) {\n rb.forEach(r => jsonPathRoots.push(r))\n } else if (rb) {\n jsonPathRoots.push(rb)\n }\n }\n } else {\n jsonPathRoots.push(body)\n }\n\n for (const jsonPathRoot of jsonPathRoots) {\n const _retrieveMedia = (jsonPathMediaRoot, jsonPathsMedia) => {\n const retrievedMedia = []\n jsonPathsMedia.forEach(jsonPath => {\n const responseMedia = jp.query(jsonPathMediaRoot, jsonPath)\n if (responseMedia) {\n (_.isArray(responseMedia) ? _.flattenDeep(responseMedia) : [responseMedia]).forEach(m =>\n retrievedMedia.push({\n mediaUri: m,\n mimeType: mime.lookup(m) || 'application/unknown'\n })\n )\n }\n })\n return retrievedMedia\n }\n\n const _retrieveButtons = (jsonPathButtonRoot, jsonPathsButtons) => {\n const retrievedButtons = []\n jsonPathsButtons.forEach(jsonPath => {\n const responseButtons = jp.query(jsonPathButtonRoot, jsonPath)\n if (responseButtons) {\n (_.isArray(responseButtons) ? _.flattenDeep(responseButtons) : [responseButtons]).forEach(b =>\n retrievedButtons.push({\n text: b\n })\n )\n }\n })\n return retrievedButtons\n }\n\n const _getCardText = (responseCardText) => {\n if (responseCardText) {\n const texts = _.isArray(responseCardText) ? _.flattenDeep(responseCardText) : [responseCardText]\n if (texts.length > 1) {\n debug(`more than one text found for card: ${util.inspect(texts)}`)\n }\n if (texts.length > 0) {\n return texts[0]\n }\n }\n }\n\n const media = _retrieveMedia(jsonPathRoot, getAllCapValues(Capabilities.SIMPLEREST_MEDIA_JSONPATH, this.caps))\n debug(`found response media: ${util.inspect(media)}`)\n const buttons = _retrieveButtons(jsonPathRoot, getAllCapValues(Capabilities.SIMPLEREST_BUTTONS_JSONPATH, this.caps))\n debug(`found response buttons: ${util.inspect(buttons)}`)\n const cards = []\n\n const jsonPathsCards = getAllCapValues(Capabilities.SIMPLEREST_CARDS_JSONPATH, this.caps)\n jsonPathsCards.forEach(jsonPath => {\n const responseCards = jp.query(jsonPathRoot, jsonPath)\n if (responseCards) {\n (_.isArray(responseCards) ? _.flattenDeep(responseCards) : [responseCards]).forEach(c => {\n const card = {}\n\n const jsonPathsCardText = getAllCapValues(Capabilities.SIMPLEREST_CARD_TEXT_JSONPATH, this.caps)\n jsonPathsCardText.forEach(jsonPath => {\n card.text = _getCardText(jp.query(c, jsonPath))\n })\n\n const jsonPathsCardSubText = getAllCapValues(Capabilities.SIMPLEREST_CARD_SUBTEXT_JSONPATH, this.caps)\n jsonPathsCardSubText.forEach(jsonPath => {\n card.subtext = _getCardText(jp.query(c, jsonPath))\n })\n\n card.buttons = _retrieveButtons(c, getAllCapValues(Capabilities.SIMPLEREST_CARD_BUTTONS_JSONPATH, this.caps))\n card.media = _retrieveMedia(c, getAllCapValues(Capabilities.SIMPLEREST_CARD_ATTACHMENTS_JSONPATH, this.caps))\n\n if (_.keys(card).length > 0) {\n cards.push(card)\n }\n })\n }\n })\n debug(`found response cards: ${util.inspect(cards)}`)\n\n let hasMessageText = false\n const jsonPathsTexts = getAllCapValues(Capabilities.SIMPLEREST_RESPONSE_JSONPATH, this.caps)\n for (const jsonPath of jsonPathsTexts) {\n debug(`eval json path ${jsonPath}`)\n\n const responseTexts = jp.query(jsonPathRoot, jsonPath)\n debug(`found response texts: ${util.inspect(responseTexts)}`)\n\n const messageTexts = (_.isArray(responseTexts) ? _.flattenDeep(responseTexts) : [responseTexts])\n for (const [messageTextIndex, messageText] of messageTexts.entries()) {\n if (!messageText) continue\n\n hasMessageText = true\n const botMsg = { sourceData: body, messageText, media, buttons, cards }\n await executeHook(this.caps, this.responseHook, Object.assign({ botMsg, botMsgRoot: jsonPathRoot, messageTextIndex }, this.view))\n result.push(botMsg)\n }\n }\n\n if (!hasMessageText) {\n const botMsg = { messageText: '', sourceData: body, media, buttons, cards }\n const beforeHookKeys = Object.keys(botMsg)\n await executeHook(this.caps, this.responseHook, Object.assign({ botMsg, botMsgRoot: jsonPathRoot }, this.view))\n const afterHookKeys = Object.keys(botMsg)\n if (beforeHookKeys.length !== afterHookKeys.length || !!(botMsg.messageText && botMsg.messageText.length > 0) || botMsg.media.length > 0 || botMsg.buttons.length > 0 || botMsg.cards.length > 0 || !this.caps[Capabilities.SIMPLEREST_IGNORE_EMPTY]) {\n result.push(botMsg)\n }\n }\n }\n }\n return result\n }\n\n _doRequest (msg, isFromUser, updateContext) {\n return this._buildRequest(msg)\n .then((requestOptions) => new Promise((resolve, reject) => {\n debug(`constructed requestOptions ${JSON.stringify(requestOptions, null, 2)}`)\n msg.sourceData = msg.sourceData || {}\n msg.sourceData.requestOptions = requestOptions\n\n this.waitProcessQueue = []\n\n request(requestOptions, async (err, response, body) => {\n if (err) {\n return reject(new Error(`rest request failed: ${err.message}`))\n } else {\n if (response.statusCode >= 400) {\n debug(`got error response: ${response.statusCode}/${response.statusMessage}`)\n if (debug.enabled && body) {\n debug(botiumUtils.shortenJsonString(body))\n }\n if (body) {\n const jsonBody = botiumUtils.toJsonWeak(body)\n const errKey = Object.keys(jsonBody).find(k => k.startsWith('err') || k.startsWith('fail'))\n if (errKey) {\n return reject(new BotiumError(`got error response: ${response.statusCode}/${response.statusMessage} - ${jsonBody[errKey]}`, {\n message: botiumUtils.shortenJsonString(body)\n }))\n }\n }\n return reject(new Error(`got error response: ${response.statusCode}/${response.statusMessage}`))\n }\n\n if (body) {\n debug(`got response code: ${response.statusCode}, body: ${botiumUtils.shortenJsonString(body)}`)\n\n try {\n body = await this._parseResponseBody(body)\n } catch (err) {\n debug(`ignoring not JSON formatted response body: ${err.message}`)\n resolve(this)\n this._emptyWaitProcessQueue()\n return\n }\n\n if (body) {\n this._processBodyAsync(body, isFromUser, updateContext).then(() => resolve(this)).then(() => this._emptyWaitProcessQueue())\n } else {\n debug('ignoring response body (no string and no JSON object)')\n resolve(this)\n this._emptyWaitProcessQueue()\n }\n } else {\n debug(`got response code: ${response.statusCode}, empty body`)\n resolve(this)\n this._emptyWaitProcessQueue()\n }\n }\n })\n }))\n }\n\n async _buildRequest (msg) {\n this.view.msg = Object.assign({}, msg)\n\n const nonEncodedMessage = this.view.msg.messageText\n\n this.view.msg.messageText = nonEncodedMessage && encodeURIComponent(nonEncodedMessage)\n\n if (this.caps[Capabilities.SIMPLEREST_STEP_ID_TEMPLATE]) {\n this.view.botium.stepId = this._getMustachedCap(Capabilities.SIMPLEREST_STEP_ID_TEMPLATE, false)\n } else {\n this.view.botium.stepId = uuidv4()\n }\n\n const uri = this._getMustachedCap(Capabilities.SIMPLEREST_URL, false)\n const timeout = this._getCapValue(Capabilities.SIMPLEREST_TIMEOUT)\n\n const requestOptions = {\n uri,\n method: this._getCapValue(Capabilities.SIMPLEREST_VERB) || this._getCapValue(Capabilities.SIMPLEREST_METHOD),\n followAllRedirects: true,\n timeout\n }\n\n if (this.caps[Capabilities.SIMPLEREST_HEADERS_TEMPLATE]) {\n this.view.msg.messageText = nonEncodedMessage\n try {\n requestOptions.headers = this._getMustachedCap(Capabilities.SIMPLEREST_HEADERS_TEMPLATE, true)\n } catch (err) {\n throw new Error(`composing headers from SIMPLEREST_HEADERS_TEMPLATE failed (${err.message})`)\n }\n }\n if (this.caps[Capabilities.SIMPLEREST_BODY_TEMPLATE]) {\n const bodyRaw = this._getCapValue(Capabilities.SIMPLEREST_BODY_RAW)\n if (bodyRaw) {\n this.view.msg.messageText = nonEncodedMessage\n } else {\n this.view.msg.messageText = nonEncodedMessage && escapeJSONString(nonEncodedMessage)\n }\n try {\n requestOptions.body = this._getMustachedCap(Capabilities.SIMPLEREST_BODY_TEMPLATE, !bodyRaw)\n requestOptions.json = !bodyRaw\n } catch (err) {\n throw new Error(`composing body from SIMPLEREST_BODY_TEMPLATE failed (${err.message})`)\n }\n }\n this.view.msg.messageText = nonEncodedMessage\n\n if (msg.ADD_QUERY_PARAM && Object.keys(msg.ADD_QUERY_PARAM).length > 0) {\n const appendToUri = Object.keys(msg.ADD_QUERY_PARAM).map(key =>\n `${encodeURIComponent(key)}=${encodeURIComponent(this._getMustachedVal(\n _.isString(msg.ADD_QUERY_PARAM[key]) ? msg.ADD_QUERY_PARAM[key] : JSON.stringify(msg.ADD_QUERY_PARAM[key]),\n false))}`)\n .join('&')\n if (requestOptions.uri.indexOf('?') > 0) {\n requestOptions.uri = `${requestOptions.uri}&${appendToUri}`\n } else {\n requestOptions.uri = `${requestOptions.uri}?${appendToUri}`\n }\n }\n if (msg.ADD_FORM_PARAM && Object.keys(msg.ADD_FORM_PARAM).length > 0) {\n requestOptions.form = {}\n for (const formKey of Object.keys(msg.ADD_FORM_PARAM)) {\n const formValue = this._getMustachedVal(\n _.isString(msg.ADD_FORM_PARAM[formKey]) ? msg.ADD_FORM_PARAM[formKey] : JSON.stringify(msg.ADD_FORM_PARAM[formKey]),\n false)\n requestOptions.form[formKey] = formValue\n }\n }\n if (msg.ADD_HEADER && Object.keys(msg.ADD_HEADER).length > 0) {\n requestOptions.headers = requestOptions.headers || {}\n\n for (const headerKey of Object.keys(msg.ADD_HEADER)) {\n let headerValue\n if (_.isString(msg.ADD_HEADER[headerKey])) {\n headerValue = this._getMustachedVal(msg.ADD_HEADER[headerKey], false)\n } else {\n headerValue = this._getMustachedVal(JSON.stringify(msg.ADD_HEADER[headerKey]), true)\n }\n requestOptions.headers[headerKey] = headerValue\n }\n }\n this._addRequestOptions(requestOptions)\n\n await executeHook(this.caps, this.requestHook, Object.assign({ requestOptions }, this.view))\n\n return requestOptions\n }\n\n async _waitForUrlResponse (pingConfig, retries) {\n const timeout = ms => new Promise(resolve => setTimeout(resolve, ms))\n\n let tries = 0\n\n while (true) {\n debug(`_waitForUrlResponse checking url ${pingConfig.uri} before proceed`)\n if (tries > retries) {\n throw new Error(`Failed to ping bot after ${retries} retries`)\n }\n tries++\n const { err, response, body } = await this.bottleneck(() => new Promise((resolve) => {\n request(pingConfig, (err, response, body) => {\n resolve({ err, response, body })\n })\n }))\n if (err) {\n debug(`_waitForUrlResponse error on url check ${pingConfig.uri}: ${err}`)\n await timeout(pingConfig.timeout)\n } else if (response.statusCode >= 400) {\n debug(`_waitForUrlResponse on url check ${pingConfig.uri} got error response: ${response.statusCode}/${response.statusMessage}`)\n if (debug.enabled && body) {\n debug(botiumUtils.shortenJsonString(body))\n }\n await timeout(pingConfig.timeout)\n } else {\n debug(`_waitForUrlResponse success on url check ${pingConfig.uri}: ${response.statusCode}/${response.statusMessage}`)\n if (debug.enabled && body) {\n debug(botiumUtils.shortenJsonString(body))\n }\n return body\n }\n }\n }\n\n async _parseResponseBody (body) {\n if (!_.isObject(body) && _.isString(body)) {\n try {\n body = JSON.parse(body)\n } catch (err) {\n if (!this.parserHook) throw err\n }\n }\n if (this.parserHook) {\n await executeHook(this.caps, this.parserHook, Object.assign({ body, changeBody: (b) => { body = b } }, this.view))\n }\n if (_.isObject(body)) return body\n else if (_.isString(body)) return JSON.parse(body)\n else return null\n }\n\n _getCapValue (capName) {\n return _.isFunction(this.caps[capName]) ? (this.caps[capName])() : this.caps[capName]\n }\n\n _getMustachedCap (capName, json) {\n const capValue = this._getCapValue(capName)\n const template = _.isString(capValue) ? capValue : JSON.stringify(capValue)\n return this._getMustachedVal(template, json)\n }\n\n _getMustachedVal (template, json) {\n const raw = Mustache.render(template, this.view)\n if (json) {\n try {\n return JSON.parse(raw)\n } catch (err) {\n return new Error(`JSON parsing failed - try to use {{#fnc.jsonify}}{{xxx}}{{/fnc.jsonify}} to escape JSON special characters (ERR: ${err.message})`)\n }\n } else {\n return raw\n }\n }\n\n _processInboundEvent (event) {\n if (!this.processInbound) return\n\n const jsonPathValue = this.caps[Capabilities.SIMPLEREST_INBOUND_SELECTOR_VALUE]\n const jsonPathsSelector = getAllCapValues(Capabilities.SIMPLEREST_INBOUND_SELECTOR_JSONPATH, this.caps)\n if (jsonPathsSelector && jsonPathsSelector.length > 0) {\n let isSelected = false\n for (const jsonPathTemplate of jsonPathsSelector) {\n const jsonPath = this._getMustachedVal(jsonPathTemplate, false)\n const hasResult = jp.query(event, jsonPath)\n if (hasResult && hasResult.length > 0) {\n const check = jsonPathValue && this._getMustachedVal(jsonPathValue, false)\n if (check) {\n if (`${hasResult[0]}` === `${check}`) {\n isSelected = true\n break\n }\n } else {\n isSelected = true\n break\n }\n }\n }\n if (!isSelected) return\n }\n\n debug(`Received an inbound message: ${JSON.stringify(event)}`)\n if (this.caps[Capabilities.SIMPLEREST_INBOUND_ORDER_UNSETTLED_EVENTS_JSONPATH]) {\n this.inboundEvents.push(event)\n this._processOrderedInboundEventsArrayAsync()\n } else {\n setTimeout(() => this._processBodyAsync(event.body, true, !!this.caps[Capabilities.SIMPLEREST_INBOUND_UPDATE_CONTEXT]), 0)\n }\n }\n\n async _buildInbound () {\n if (this.caps[Capabilities.SIMPLEREST_INBOUND_REDISURL] && this.caps[Capabilities.SIMPLEREST_INBOUND_SELECTOR_JSONPATH] && this.caps[Capabilities.SIMPLEREST_INBOUND_SELECTOR_VALUE]) {\n this.redis = new Redis(this.caps[Capabilities.SIMPLEREST_INBOUND_REDISURL])\n this.redis.on('connect', () => {\n debug(`Redis connected to ${JSON.stringify(this.caps[Capabilities.SIMPLEREST_INBOUND_REDISURL] || 'default')}`)\n })\n this.redis.on('message', (channel, event) => {\n if (!_.isString(event)) {\n return debug(`WARNING: received non-string message from ${channel}, ignoring: ${event}`)\n }\n try {\n event = JSON.parse(event)\n } catch (err) {\n return debug(`WARNING: received non-json message from ${channel}, ignoring: ${event}`)\n }\n this._processInboundEvent(event)\n })\n } else if (this.caps[Capabilities.SIMPLEREST_INBOUND_PORT]) {\n this.proxy = await startProxy({\n port: this.caps[Capabilities.SIMPLEREST_INBOUND_PORT],\n endpoint: this.caps[Capabilities.SIMPLEREST_INBOUND_ENDPOINT],\n processEvent: (event) => {\n if (this.processingEvents) {\n debug('Got Inbound Event:')\n debug(JSON.stringify(event, null, 2))\n this._processInboundEvent(event)\n }\n }\n })\n }\n }\n\n async _subscribeInbound () {\n this.processingEvents = true\n if (this.redis) {\n try {\n const count = await this.redis.subscribe(this.redisTopic)\n debug(`Redis subscribed to ${count} channels. Listening for inbound messages on the ${this.redisTopic} channel.`)\n } catch (err) {\n debug(err)\n throw new Error(`Redis failed to subscribe channel ${this.redisTopic}: ${err.message || err}`)\n }\n }\n }\n\n async _unsubscribeInbound () {\n this.processingEvents = false\n if (this.redis) {\n try {\n await this.redis.unsubscribe(this.redisTopic)\n debug(`Redis unsubscribed from ${this.redisTopic} channel.`)\n } catch (err) {\n debug(err)\n throw new Error(`Redis failed to unsubscribe channel ${this.redisTopic}: ${err.message || err}`)\n }\n }\n }\n\n async _cleanInbound () {\n if (this.redis) {\n this.redis.disconnect()\n this.redis = null\n }\n if (this.proxy) {\n this.proxy.close()\n this.proxy = null\n }\n }\n\n async _runPolling () {\n if (!this.processInbound) return\n\n if (this.caps[Capabilities.SIMPLEREST_POLL_URL]) {\n const uri = this._getMustachedCap(Capabilities.SIMPLEREST_POLL_URL, false)\n const verb = this._getCapValue(Capabilities.SIMPLEREST_POLL_VERB)\n const timeout = this._getCapValue(Capabilities.SIMPLEREST_POLL_TIMEOUT)\n const pollConfig = {\n method: verb,\n uri: uri,\n followAllRedirects: true,\n timeout: timeout\n }\n if (this.caps[Capabilities.SIMPLEREST_POLL_HEADERS]) {\n try {\n pollConfig.headers = this._getMustachedCap(Capabilities.SIMPLEREST_POLL_HEADERS, true)\n } catch (err) {\n debug(`_runPolling: composing headers from SIMPLEREST_POLL_HEADERS failed (${err.message})`)\n return\n }\n }\n if (this.caps[Capabilities.SIMPLEREST_POLL_BODY]) {\n const bodyRaw = this._getCapValue(Capabilities.SIMPLEREST_POLL_BODY_RAW)\n try {\n pollConfig.body = this._getMustachedCap(Capabilities.SIMPLEREST_POLL_BODY, !bodyRaw)\n pollConfig.json = !bodyRaw\n } catch (err) {\n debug(`_runPolling: composing body from SIMPLEREST_POLL_BODY failed (${err.message})`)\n return\n }\n }\n this._addRequestOptions(pollConfig)\n\n try {\n await executeHook(this.caps, this.pollRequestHook, Object.assign({ requestOptions: pollConfig }, this.view))\n } catch (err) {\n debug(`_runPolling: exeucting request hook failed - (${err.message})`)\n return\n }\n request(pollConfig, async (err, response, body) => {\n if (err) {\n debug(`_runPolling: rest request failed: ${err.message}, request: ${JSON.stringify(pollConfig)}`)\n } else {\n if (response.statusCode >= 400) {\n debug(`_runPolling: got error response: ${response.statusCode}/${response.statusMessage}, request: ${JSON.stringify(pollConfig)}`)\n if (debug.enabled && body) {\n debug(botiumUtils.shortenJsonString(body))\n }\n } else if (body) {\n debug(`_runPolling: got response code: ${response.statusCode}, body: ${botiumUtils.shortenJsonString(body)}`)\n\n try {\n body = await this._parseResponseBody(body)\n } catch (err) {\n debug(`_runPolling: ignoring not JSON formatted response body: ${err.message}`)\n return\n }\n if (body) {\n setTimeout(() => this._processBodyAsync(body, true, !!this.caps[Capabilities.SIMPLEREST_POLL_UPDATE_CONTEXT]), 0)\n } else {\n debug('_runPolling: ignoring response body (no string and no JSON object)')\n }\n } else {\n debug(`_runPolling: got response code: ${response.statusCode}, empty body`)\n }\n }\n })\n }\n }\n\n async _startPolling () {\n if (this.caps[Capabilities.SIMPLEREST_POLL_URL]) {\n this.pollInterval = setInterval(this._runPolling.bind(this), this.caps[Capabilities.SIMPLEREST_POLL_INTERVAL])\n debug(`Started HTTP polling for inbound messages on ${this.caps[Capabilities.SIMPLEREST_POLL_URL]}, interval: ${this.caps[Capabilities.SIMPLEREST_POLL_INTERVAL]}.`)\n }\n }\n\n async _stopPolling () {\n if (this.pollInterval) {\n clearInterval(this.pollInterval)\n this.pollInterval = null\n debug(`Stopped HTTP polling for inbound messages on ${this.caps[Capabilities.SIMPLEREST_POLL_URL]}.`)\n }\n }\n\n async _makeCall (capPrefix) {\n const uri = this._getMustachedCap(`${capPrefix}_URL`, false)\n const verb = this._getCapValue(`${capPrefix}_VERB`)\n const timeout = this._getCapValue(`${capPrefix}_TIMEOUT`) || this._getCapValue(Capabilities.SIMPLEREST_TIMEOUT)\n const httpConfig = {\n method: verb,\n uri: uri,\n followAllRedirects: true,\n timeout: timeout\n }\n if (this.caps[`${capPrefix}_HEADERS`]) {\n try {\n httpConfig.headers = this._getMustachedCap(`${capPrefix}_HEADERS`, true)\n } catch (err) {\n throw new Error(`composing headers from ${capPrefix}_HEADERS failed (${err.message})`)\n }\n }\n if (this.caps[`${capPrefix}_BODY`]) {\n const bodyRaw = this._getCapValue(`${capPrefix}_BODY_RAW`)\n try {\n httpConfig.body = this._getMustachedCap(`${capPrefix}_BODY`, !bodyRaw)\n httpConfig.json = !bodyRaw\n } catch (err) {\n throw new Error(`composing body from ${capPrefix}_BODY failed (${err.message})`)\n }\n }\n this._addRequestOptions(httpConfig)\n\n await executeHook(this.caps, this.requestHooks[capPrefix], Object.assign({ requestOptions: httpConfig }, this.view))\n\n const retries = this._getCapValue(`${capPrefix}_RETRIES`)\n debug(`_makeCall(${capPrefix}): rest request: ${JSON.stringify(httpConfig)}`)\n const response = await this._waitForUrlResponse(httpConfig, retries)\n return response\n }\n\n _addRequestOptions (httpConfig) {\n httpConfig.strictSSL = !!this.caps[Capabilities.SIMPLEREST_STRICT_SSL]\n if (this.caps[Capabilities.SIMPLEREST_PROXY_URL]) {\n httpConfig.proxy = this.caps[Capabilities.SIMPLEREST_PROXY_URL]\n }\n if (this.caps[Capabilities.SIMPLEREST_EXTRA_OPTIONS]) {\n _.merge(httpConfig, this.caps[Capabilities.SIMPLEREST_EXTRA_OPTIONS])\n }\n }\n}\n","const path = require('path')\nconst fs = require('fs')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-connector-PluginConnectorContainer-helper')\n\nconst SimpleRestContainer = require('./SimpleRestContainer')\nconst Capabilities = require('../../Capabilities')\nconst { BotiumError } = require('../../scripting/BotiumError')\n\nconst pluginResolver = (containermode) => {\n if (containermode === 'simplerest') {\n return SimpleRestContainer\n }\n}\n\nconst getModuleVersionSafe = (required) => {\n try {\n const pckg = require(required + '/package.json')\n if (pckg.version === undefined) {\n return 'Not set'\n } else {\n return pckg.version\n }\n } catch (e) {\n if (e.code !== 'MODULE_NOT_FOUND') {\n return 'Unknown error while determining version'\n }\n return 'Unknown version'\n }\n}\n\nconst loadConnectorModule = (PluginClass, args) => {\n try {\n return new PluginClass(args)\n } catch (err) {\n }\n if (_.isFunction(PluginClass)) {\n const result = PluginClass(args)\n if (result && result.UserSays) {\n return result\n } else {\n return {\n UserSays: (msg) => {\n const response = PluginClass(msg, args)\n if (response && args.queueBotSays) {\n if (_.isString(response)) {\n setTimeout(() => args.queueBotSays({ messageText: response }), 0)\n } else {\n setTimeout(() => args.queueBotSays(response), 0)\n }\n }\n }\n }\n }\n } else {\n throw new Error('Botium Plugin is neither a class nor a function')\n }\n}\n\nconst tryLoadPlugin = (containermode, modulepath, args) => {\n const pluginLoaderSpec = modulepath || containermode\n const _checkUnsafe = (caps, mode, cause) => {\n if (!caps[Capabilities.SECURITY_ALLOW_UNSAFE]) {\n throw new BotiumError(\n `Security Error. Using unsafe connector mode \"${mode}\" is not allowed`,\n {\n type: 'security',\n subtype: 'allow unsafe',\n source: 'src/containers/plugins/index.js',\n cause: {\n SECURITY_ALLOW_UNSAFE: caps[Capabilities.SECURITY_ALLOW_UNSAFE],\n mode: mode,\n ...cause\n }\n }\n )\n }\n }\n\n if (pluginResolver(pluginLoaderSpec)) {\n const pluginInstance = new (pluginResolver(pluginLoaderSpec))(args)\n debug('Botium plugin loaded from internal plugin resolver')\n return pluginInstance\n }\n if (_.isFunction(pluginLoaderSpec)) {\n const pluginInstance = pluginLoaderSpec(args)\n debug('Botium plugin loaded from function call')\n return pluginInstance\n }\n const loadErr = []\n\n if (_.isString(pluginLoaderSpec)) {\n const tryLoadFile = path.resolve(process.cwd(), pluginLoaderSpec)\n if (fs.existsSync(tryLoadFile)) {\n _checkUnsafe(args.caps, 'Using work dir', { modulepath, containermode })\n try {\n let plugin = require(tryLoadFile)\n if (plugin.default) {\n plugin = plugin.default\n }\n if (!plugin.PluginVersion || !plugin.PluginClass) {\n loadErr.push(`Invalid Botium plugin loaded from ${tryLoadFile}, expected PluginVersion, PluginClass fields`)\n } else {\n const pluginInstance = loadConnectorModule(plugin.PluginClass, args)\n debug(`Botium plugin loaded from ${tryLoadFile}`)\n return pluginInstance\n }\n } catch (err) {\n loadErr.push(`Loading Botium plugin from ${tryLoadFile} failed - ${err.message}`)\n }\n }\n\n try {\n let plugin = require(pluginLoaderSpec)\n if (plugin.default) {\n plugin = plugin.default\n }\n if (!plugin.PluginVersion || !plugin.PluginClass) {\n loadErr.push(`Invalid Botium plugin loaded from ${pluginLoaderSpec}, expected PluginVersion, PluginClass fields`)\n } else {\n const pluginInstance = loadConnectorModule(plugin.PluginClass, args)\n debug(`Botium plugin loaded from ${pluginLoaderSpec}. Plugin version is ${getModuleVersionSafe(pluginLoaderSpec)}`)\n return pluginInstance\n }\n } catch (err) {\n loadErr.push(`Loading Botium plugin from ${pluginLoaderSpec} failed - ${err.message}`)\n }\n\n const tryLoadPackage = `botium-connector-${pluginLoaderSpec}`\n try {\n let plugin = require(tryLoadPackage)\n if (plugin.default) {\n plugin = plugin.default\n }\n if (!plugin.PluginVersion || !plugin.PluginClass) {\n loadErr.push(`Invalid Botium plugin ${tryLoadPackage}, expected PluginVersion, PluginClass fields`)\n } else {\n const pluginInstance = loadConnectorModule(plugin.PluginClass, args)\n debug(`Botium plugin ${tryLoadPackage} loaded. Plugin version is ${getModuleVersionSafe(tryLoadPackage)}`)\n return pluginInstance\n }\n } catch (err) {\n loadErr.push(`Loading Botium plugin ${tryLoadPackage} failed, try \"npm install ${tryLoadPackage}\" - ${err.message}`)\n }\n }\n throw new Error(`Loading Botium Plugin failed.\\r\\n${loadErr.join('\\r\\n')}`)\n}\n\nmodule.exports = {\n pluginResolver,\n getModuleVersionSafe,\n tryLoadPlugin\n}\n","const util = require('util')\nconst promiseRetry = require('promise-retry')\nconst debug = require('debug')('botium-connector-PluginConnectorContainer')\n\nconst Events = require('../Events')\nconst Capabilities = require('../Capabilities')\nconst BaseContainer = require('./BaseContainer')\nconst { tryLoadPlugin } = require('./plugins/index')\nconst RetryHelper = require('../helpers/RetryHelper')\n\nmodule.exports = class PluginConnectorContainer extends BaseContainer {\n async Validate () {\n await super.Validate()\n this.pluginInstance = tryLoadPlugin(\n this.caps[Capabilities.CONTAINERMODE],\n this.caps[Capabilities.PLUGINMODULEPATH],\n {\n container: this,\n queueBotSays: (msg) => this._QueueBotSays(msg),\n bottleneck: this.bottleneck,\n eventEmitter: this.eventEmitter,\n caps: this.caps,\n sources: this.sources,\n envs: this.envs\n })\n if (!this.pluginInstance) {\n throw new Error('Loading Botium plugin failed')\n }\n if (!this.pluginInstance.UserSays) {\n throw new Error('Invalid Botium plugin, expected UserSays function')\n }\n if (this.pluginInstance.Validate) {\n await this.pluginInstance.Validate()\n }\n this.retryHelperBuild = new RetryHelper(this.caps, 'BUILD')\n this.retryHelperStart = new RetryHelper(this.caps, 'START')\n this.retryHelperUserSays = new RetryHelper(this.caps, 'USERSAYS')\n this.retryHelperStop = new RetryHelper(this.caps, 'STOP')\n this.retryHelperClean = new RetryHelper(this.caps, 'CLEAN')\n }\n\n Build () {\n try {\n return super.Build().then(() => promiseRetry((retry, number) => {\n return (this.pluginInstance.Build ? (this.pluginInstance.Build() || Promise.resolve()) : Promise.resolve())\n .catch((err) => {\n if (this.retryHelperBuild.shouldRetry(err)) {\n debug(`Build trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, this.retryHelperBuild.retrySettings))\n .then(() => this)\n } catch (err) {\n return Promise.reject(new Error(`Build - Botium plugin failed: ${util.inspect(err)}`))\n }\n }\n\n Start () {\n this.eventEmitter.emit(Events.CONTAINER_STARTING, this)\n\n try {\n return super.Start().then(() => promiseRetry((retry, number) => {\n return (this.pluginInstance.Start ? (this.pluginInstance.Start() || Promise.resolve()) : Promise.resolve())\n .catch((err) => {\n if (this.retryHelperStart.shouldRetry(err)) {\n debug(`Start trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, this.retryHelperStart.retrySettings))\n .then((context) => {\n this.eventEmitter.emit(Events.CONTAINER_STARTED, this, context)\n return this\n }).catch((err) => {\n this.eventEmitter.emit(Events.CONTAINER_START_ERROR, this, err)\n throw err\n })\n } catch (err) {\n this.eventEmitter.emit(Events.CONTAINER_START_ERROR, this, err)\n return Promise.reject(new Error(`Start - Botium plugin failed: ${util.inspect(err)}`))\n }\n }\n\n UserSaysImpl (mockMsg) {\n try {\n return promiseRetry((retry, number) => {\n return (this.pluginInstance.UserSays(mockMsg) || Promise.resolve())\n .catch((err) => {\n if (this.retryHelperUserSays.shouldRetry(err)) {\n debug(`UserSays trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, this.retryHelperUserSays.retrySettings)\n .then(() => {\n this.eventEmitter.emit(Events.MESSAGE_SENTTOBOT, this, mockMsg)\n return this\n })\n } catch (err) {\n return Promise.reject(new Error(`UserSays - Botium plugin failed: ${util.inspect(err)}`))\n }\n }\n\n Stop () {\n this.eventEmitter.emit(Events.CONTAINER_STOPPING, this)\n\n try {\n return super.Stop().then(() => promiseRetry((retry, number) => {\n return (this.pluginInstance.Stop ? (this.pluginInstance.Stop() || Promise.resolve()) : Promise.resolve())\n .catch((err) => {\n if (this.retryHelperStop.shouldRetry(err)) {\n debug(`Stop trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, this.retryHelperStop.retrySettings))\n .then((context) => {\n this.eventEmitter.emit(Events.CONTAINER_STOPPED, this, context)\n return this\n }).catch((err) => {\n this.eventEmitter.emit(Events.CONTAINER_STOP_ERROR, this, err)\n throw err\n })\n } catch (err) {\n this.eventEmitter.emit(Events.CONTAINER_STOP_ERROR, this, err)\n return Promise.reject(new Error(`Stop - Botium plugin failed: ${util.inspect(err)}`))\n }\n }\n\n Clean () {\n this.eventEmitter.emit(Events.CONTAINER_CLEANING, this)\n try {\n return promiseRetry((retry, number) => {\n return (this.pluginInstance.Clean ? (this.pluginInstance.Clean() || Promise.resolve()) : Promise.resolve())\n .catch((err) => {\n if (this.retryHelperClean.shouldRetry(err)) {\n debug(`Clean trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, this.retryHelperClean.retrySettings)\n .then(() => super.Clean()).then(() => {\n this.eventEmitter.emit(Events.CONTAINER_CLEANED, this)\n return this\n }).catch((err) => {\n this.eventEmitter.emit(Events.CONTAINER_CLEAN_ERROR, this, err)\n throw err\n })\n } catch (err) {\n this.eventEmitter.emit(Events.CONTAINER_CLEAN_ERROR, this, err)\n return Promise.reject(new Error(`Clean - Botium plugin failed: ${util.inspect(err)}`))\n }\n }\n}\n","const util = require('util')\nconst fs = require('fs')\nconst path = require('path')\nconst async = require('async')\nconst rimraf = require('rimraf')\nconst mkdirp = require('mkdirp')\nconst sanitize = require('sanitize-filename')\nconst moment = require('moment')\nconst randomize = require('randomatic')\nconst _ = require('lodash')\nconst { boolean } = require('boolean')\nconst EventEmitter = require('events')\nconst debug = require('debug')('botium-core-BotDriver')\n\nconst { version } = require('../package.json')\n\nconst Defaults = require('./Defaults')\nconst Capabilities = require('./Capabilities')\nconst Source = require('./Source')\nconst Fluent = require('./Fluent')\nconst Events = require('./Events')\nconst ScriptingProvider = require('./scripting/ScriptingProvider')\n\nmodule.exports = class BotDriver {\n constructor (caps = {}, sources = {}, envs = {}) {\n this.eventEmitter = new EventEmitter()\n\n this.caps = _.cloneDeep(Defaults.Capabilities)\n this.sources = _.cloneDeep(Defaults.Sources)\n this.envs = _.cloneDeep(Defaults.Envs)\n\n this._fetchedConfigFiles = []\n this._fetchConfigFromFiles([\n './botium.json', process.env.NODE_ENV && `./botium.${process.env.NODE_ENV}.json`,\n './botium.local.json', process.env.NODE_ENV && `./botium.${process.env.NODE_ENV}.local.json`])\n\n const botiumConfigEnv = process.env.BOTIUM_CONFIG\n if (botiumConfigEnv) {\n const checkDir = path.dirname(botiumConfigEnv)\n const checkFileBase = path.basename(botiumConfigEnv, '.json')\n if (!this._fetchConfigFromFiles([\n botiumConfigEnv, process.env.NODE_ENV && path.join(checkDir, `${checkFileBase}.${process.env.NODE_ENV}.json`),\n path.join(checkDir, `${checkFileBase}.local.json`), process.env.NODE_ENV && path.join(checkDir, `${checkFileBase}.${process.env.NODE_ENV}.local.json`)\n ])) {\n throw new Error(`FAILED: Botium configuration file ${botiumConfigEnv} not available`)\n }\n }\n debug(`Loaded Botium configuration files ${this._fetchedConfigFiles.join(',')}`)\n\n const sourcesToTest = Object.keys(Source)\n\n Object.keys(process.env).filter(e => e.startsWith('BOTIUM_')).forEach((element) => {\n const elementToTest = element.replace(/^BOTIUM_/, '')\n if (sourcesToTest.includes(elementToTest)) {\n this._mergeCaps(this.sources, { [elementToTest]: process.env[element] })\n } else {\n this._mergeCaps(this.caps, { [elementToTest]: process.env[element] })\n }\n if (element.startsWith('BOTIUM_ENV_')) {\n const envName = element.replace(/^BOTIUM_ENV_/, '')\n this.envs[envName] = process.env[element]\n }\n })\n\n if (caps) this._mergeCaps(this.caps, caps)\n if (sources) this._mergeCaps(this.sources, sources)\n if (envs) this.envs = _.merge(this.envs, envs)\n }\n\n on (event, listener) {\n this.eventEmitter.on(event, listener)\n return this\n }\n\n setCapabilities (caps) {\n this._mergeCaps(this.caps, caps)\n return this\n }\n\n setCapability (cap, value) {\n this._mergeCaps(this.caps, { [cap]: value })\n return this\n }\n\n setSources (sources) {\n this._mergeCaps(this.sources, sources)\n return this\n }\n\n setSource (source, value) {\n this._mergeCaps(this.sources, { [source]: value })\n return this\n }\n\n setEnvs (envs) {\n this.envs = _.merge(this.envs, envs)\n return this\n }\n\n setEnv (name, value) {\n this.envs[name] = value\n return this\n }\n\n BuildFluent () {\n this.Fluent = new Fluent(this)\n return this.Fluent\n }\n\n Build () {\n debug(`Build - Botium Core Version: ${version}`)\n debug(`Build - Capabilites: ${JSON.stringify(_.pickBy(this.caps, (value, key) => Defaults.Capabilities[key] !== value), null, 2)}`)\n debug(`Build - Sources: ${JSON.stringify(_.pickBy(this.sources, (value, key) => Defaults.Sources[key] !== value), null, 2)}`)\n debug(`Build - Envs: ${JSON.stringify(_.pickBy(this.envs, (value, key) => Defaults.Envs[key] !== value), null, 2)}`)\n this.eventEmitter.emit(Events.CONTAINER_BUILDING)\n\n return new Promise((resolve, reject) => {\n let repo = null\n let container = null\n\n async.series([\n\n (driverValidated) => {\n this._validate()\n .then(() => driverValidated())\n .catch(driverValidated)\n },\n\n (repoValidated) => {\n try {\n repo = this._getRepo()\n } catch (err) {\n return repoValidated(err)\n }\n repo.Validate().then(() => repoValidated()).catch(repoValidated)\n },\n\n (repoPrepared) => {\n repo.Prepare().then(() => repoPrepared()).catch(repoPrepared)\n },\n\n (containerValidated) => {\n try {\n container = this._getContainer(repo)\n } catch (err) {\n return containerValidated(err)\n }\n container.Validate().then(() => containerValidated()).catch(containerValidated)\n },\n\n (containerBuilt) => {\n container.Build().then(() => containerBuilt()).catch(containerBuilt)\n }\n\n ], (err) => {\n if (err) {\n debug(`BotDriver Build error: ${err}`)\n this.eventEmitter.emit(Events.CONTAINER_BUILD_ERROR, err)\n if (this.tempDirectory) {\n rimraf(this.tempDirectory, (err) => {\n if (err) debug(`Cleanup temp dir ${this.tempDirectory} failed: ${util.inspect(err)}`)\n })\n }\n return reject(err)\n }\n this.eventEmitter.emit(Events.CONTAINER_BUILT, container)\n resolve(container)\n })\n })\n }\n\n BuildCompiler () {\n try {\n const compiler = new ScriptingProvider(this.caps)\n compiler.Build()\n return compiler\n } catch (err) {\n debug(`BotDriver BuildCompiler error: ${err}`)\n throw err\n }\n }\n\n /* Private Functions */\n\n // loadConfig from files\n _loadConfigFile (filename) {\n try {\n const configJson = JSON.parse(fs.readFileSync(filename))\n if (configJson.botium) {\n if (configJson.botium.Capabilities) this._mergeCaps(this.caps, configJson.botium.Capabilities)\n if (configJson.botium.Sources) this._mergeCaps(this.sources, configJson.botium.Sources)\n if (configJson.botium.Envs) this._mergeCaps(this.envs, configJson.botium.Envs)\n return true\n } else {\n debug(`Botium configuration file ${filename} contains no botium configuration. Ignored.`)\n return false\n }\n } catch (err) {\n throw new Error(`FAILED: loading Botium configuration file ${filename}: ${util.inspect(err)}`)\n }\n }\n\n // fetches config from files ordered by priority later files overwrite previous\n _fetchConfigFromFiles (files) {\n const fetchedFiles = []\n for (const file of files) {\n if (file && fs.existsSync(file)) {\n const absFilePath = path.resolve(file)\n if (this._fetchedConfigFiles.indexOf(absFilePath) < 0) {\n this._loadConfigFile(file)\n fetchedFiles.push(file)\n this._fetchedConfigFiles.push(absFilePath)\n } else {\n fetchedFiles.push(file)\n }\n }\n }\n return fetchedFiles\n }\n\n _findKeyProperty (obj) {\n const lookup = ['id', 'ID', 'Id', 'ref', 'REF', 'Ref', 'name', 'NAME', 'Name']\n for (const checkPropIdx in lookup) {\n if (Object.prototype.hasOwnProperty.call(obj, lookup[checkPropIdx])) return lookup[checkPropIdx]\n }\n }\n\n _mergeCaps (caps, newCaps) {\n if (!caps) return\n Object.keys(newCaps).forEach(capKey => {\n if (!Object.prototype.hasOwnProperty.call(caps, capKey)) {\n if (_.isString(newCaps[capKey])) {\n try {\n caps[capKey] = JSON.parse(newCaps[capKey])\n if (_.isFinite(caps[capKey])) {\n caps[capKey] = caps[capKey].toString()\n }\n } catch (err) {\n caps[capKey] = newCaps[capKey]\n }\n } else {\n caps[capKey] = newCaps[capKey]\n }\n return\n }\n\n if (_.isArray(caps[capKey])) {\n let newCapArray = newCaps[capKey]\n if (!_.isArray(newCapArray)) {\n try {\n newCapArray = JSON.parse(newCapArray)\n } catch (err) {\n debug(`Expected JSON Array in capability ${capKey}, JSON parse failed (${err}). Capability will be overwritten with maybe unexpected side effects.`)\n }\n }\n if (_.isArray(newCapArray)) {\n newCapArray.forEach(capElement => {\n const mergeKey = this._findKeyProperty(capElement)\n if (mergeKey) {\n const oldElement = caps[capKey].find(oldElement => oldElement[mergeKey] && oldElement[mergeKey] === capElement[mergeKey])\n if (oldElement) {\n _.merge(oldElement, capElement)\n return\n }\n caps[capKey].push(capElement)\n } else {\n if (caps[capKey].indexOf(capElement) < 0) {\n caps[capKey].push(capElement)\n }\n }\n })\n return\n }\n }\n if (!_.isArray(caps[capKey]) && _.isObject(caps[capKey])) {\n let newCapObject = newCaps[capKey]\n if (!_.isObject(newCapObject)) {\n try {\n newCapObject = JSON.parse(newCapObject)\n } catch (err) {\n debug(`Expected JSON Object in capability ${capKey}, JSON parse failed (${err}). Capability will be overwritten with maybe unexpected side effects.`)\n }\n }\n if (_.isObject(newCapObject)) {\n _.merge(caps[capKey], newCapObject)\n return\n }\n }\n\n if (_.isBoolean(caps[capKey])) {\n if (!_.isBoolean(newCaps[capKey])) {\n caps[capKey] = boolean(newCaps[capKey])\n return\n }\n }\n\n caps[capKey] = newCaps[capKey]\n })\n }\n\n _validate () {\n return new Promise((resolve, reject) => {\n try {\n if (!this.caps[Capabilities.PROJECTNAME]) {\n throw new Error(`Capability property ${Capabilities.PROJECTNAME} not set`)\n }\n if (!this.caps[Capabilities.TEMPDIR]) {\n throw new Error(`Capability property ${Capabilities.TEMPDIR} not set`)\n }\n if (!this.caps[Capabilities.CONTAINERMODE] && !this.caps[Capabilities.BOTIUMGRIDURL]) {\n throw new Error(`Capability '${Capabilities.CONTAINERMODE}' or '${Capabilities.BOTIUMGRIDURL}' missing`)\n }\n\n this.tempDirectory = path.resolve(process.cwd(), this.caps[Capabilities.TEMPDIR], sanitize(`${this.caps[Capabilities.PROJECTNAME]} ${moment().format('YYYYMMDD HHmmss')} ${randomize('Aa0', 5)}`))\n try {\n mkdirp.sync(this.tempDirectory)\n } catch (err) {\n throw new Error(`Unable to create temp directory ${this.tempDirectory}: ${err}`)\n }\n resolve(this)\n } catch (err) {\n reject(err)\n }\n })\n }\n\n _getRepo () {\n if (this.caps[Capabilities.BOTIUMGRIDURL]) {\n const NoRepo = require('./repos/NoRepo')\n return new NoRepo(this.tempDirectory, this.sources)\n }\n if (this.sources[Source.GITURL]) {\n const GitRepo = require('./repos/GitRepo')\n return new GitRepo(this.tempDirectory, this.sources)\n }\n if (this.sources[Source.LOCALPATH]) {\n const LocalRepo = require('./repos/LocalRepo')\n return new LocalRepo(this.tempDirectory, this.sources)\n }\n throw new Error(`No Repo provider found for Sources ${util.inspect(this.sources)}`)\n }\n\n _getContainer (repo) {\n if (this.caps[Capabilities.BOTIUMGRIDURL]) {\n const GridContainer = require('./containers/GridContainer')\n return new GridContainer(this.eventEmitter, this.tempDirectory, repo, this.caps, this.envs)\n }\n if (!this.caps[Capabilities.CONTAINERMODE]) {\n throw new Error(`Capability '${Capabilities.CONTAINERMODE}' missing`)\n }\n if (this.caps[Capabilities.CONTAINERMODE] === 'inprocess') {\n const InProcessContainer = require('./containers/InProcessContainer')\n return new InProcessContainer(this.eventEmitter, this.tempDirectory, repo, this.caps, this.envs)\n }\n const PluginConnectorContainer = require('./containers/PluginConnectorContainer')\n return new PluginConnectorContainer(this.eventEmitter, this.tempDirectory, repo, this.caps, this.envs)\n }\n}\n","const path = require('path')\nconst fs = require('fs')\nconst debug = require('debug')('botium-core-Plugins')\n\nconst PLUGIN_TYPE_CONNECTOR = 'PLUGIN_TYPE_CONNECTOR'\nconst PLUGIN_TYPE_ASSERTER = 'PLUGIN_TYPE_ASSERTER'\nconst PLUGIN_TYPE_LOGICHOOK = 'PLUGIN_TYPE_LOGICHOOK'\nconst PLUGIN_TYPE_USERINPUT = 'PLUGIN_TYPE_USERINPUT'\n\nconst TYPE_TO_PREFIX = {\n PLUGIN_TYPE_CONNECTOR: 'botium-connector-',\n PLUGIN_TYPE_ASSERTER: 'botium-asserter-',\n PLUGIN_TYPE_LOGICHOOK: 'botium-logichook-',\n PLUGIN_TYPE_USERINPUT: 'botium-userinput-'\n}\n\nconst TYPE_TO_COMPONENT_TYPE = {\n PLUGIN_TYPE_ASSERTER: 'ASSERTER',\n PLUGIN_TYPE_LOGICHOOK: 'LOGICHOOK',\n PLUGIN_TYPE_USERINPUT: 'USERINPUT'\n}\n\nconst getConnectorPlugin = (filename, pathToRes) => {\n let PluginType = null\n if (filename.toLowerCase().startsWith(TYPE_TO_PREFIX[PLUGIN_TYPE_CONNECTOR])) {\n PluginType = PLUGIN_TYPE_CONNECTOR\n try {\n const plugin = require(filename)\n const pluginPath = require.resolve(filename)\n if (!pluginPath.startsWith(pathToRes)) {\n debug(`Plugin mismatch error. Plugin ${path.resolve(pathToRes, filename)} loaded from ${pluginPath}! `)\n return null\n }\n if (!plugin.PluginVersion || !plugin.PluginClass) {\n debug(`Invalid Botium plugin loaded from ${filename}, expected PluginVersion, PluginClass fields`)\n return null\n }\n if (plugin.PluginType && plugin.PluginType !== PluginType) {\n debug(`Botium plugin loaded from ${filename}, but its type ${plugin.PluginType} is invalid, will be overwritten with ${PluginType}`)\n }\n\n let pluginNameFromFile = filename.substring(TYPE_TO_PREFIX[PLUGIN_TYPE_CONNECTOR].length)\n if (pluginNameFromFile.toLowerCase().endsWith('.js')) {\n pluginNameFromFile = pluginNameFromFile.substring(0, pluginNameFromFile.length - '.js'.length)\n }\n\n const PluginDesc = plugin.PluginDesc || {}\n return {\n PluginVersion: plugin.PluginVersion || '1',\n PluginType,\n PluginDesc: {\n ...PluginDesc,\n src: pluginNameFromFile\n }\n }\n } catch (err) {\n debug(`Loading Botium plugin from ${filename} failed - ${err.message}`)\n return null\n }\n }\n return null\n}\n\nconst getOtherPlugin = (filename, pathToRes, type) => {\n let PluginType = null\n if (type !== PLUGIN_TYPE_CONNECTOR && filename.toLowerCase().startsWith(TYPE_TO_PREFIX[type])) {\n PluginType = type\n }\n if (!PluginType) {\n return null\n }\n try {\n const plugin = require(filename)\n const pluginPath = require.resolve(filename)\n if (!pluginPath.startsWith(pathToRes)) {\n debug(`Plugin mismatch error. Plugin ${path.resolve(pathToRes, filename)} loaded from ${pluginPath}! `)\n return null\n }\n if (plugin.PluginType && plugin.PluginType !== PluginType) {\n debug(`Botium plugin loaded from ${filename}, but its type ${plugin.PluginType} is invalid, will be overwritten with ${PluginType}`)\n }\n\n let pluginName = filename.substring(TYPE_TO_PREFIX[type].length)\n if (pluginName.toLowerCase().endsWith('.js')) {\n pluginName = pluginName.substring(0, pluginName.length - '.js'.length)\n }\n\n const PluginDesc = plugin.PluginDesc || {}\n\n return {\n PluginVersion: plugin.PluginVersion || '1',\n PluginType,\n PluginDesc: {\n name: pluginName,\n description: PluginDesc.description,\n type: TYPE_TO_COMPONENT_TYPE[type],\n src: filename,\n ref: PluginDesc.ref || pluginName.toUpperCase(),\n global: PluginDesc.global || false,\n args: PluginDesc.args || '{}'\n }\n }\n } catch (err) {\n debug(`Loading Botium plugin from ${filename} failed - ${err.message}`)\n return null\n }\n}\n\nconst TYPE_TO_FN = {\n PLUGIN_TYPE_CONNECTOR: getConnectorPlugin,\n PLUGIN_TYPE_ASSERTER: getOtherPlugin,\n PLUGIN_TYPE_LOGICHOOK: getOtherPlugin,\n PLUGIN_TYPE_USERINPUT: getOtherPlugin\n}\n\nconst getPlugins = async (type, resourcesDir) => {\n if (!TYPE_TO_FN[type]) {\n debug(`Invalid plugin type \"${type}\"`)\n return Promise.resolve([])\n }\n\n const pathToRes = path.resolve(resourcesDir)\n if (!fs.existsSync(pathToRes)) {\n debug(`Cant load plugins, directory ${pathToRes} does not exists`)\n return []\n }\n let items\n try {\n items = fs.readdirSync(pathToRes)\n .filter(item => path.extname(item) === '.js' || item.indexOf('.') === -1)\n } catch (err) {\n debug(`Cant load plugins, failed to read directory ${pathToRes} - ${err.message}`)\n return []\n }\n\n const result = []\n const pluginNameToPlugin = {}\n for (let i = 0; i < items.length; i++) {\n const plugin = TYPE_TO_FN[type](items[i], pathToRes, type)\n if (plugin) {\n if (pluginNameToPlugin[plugin.PluginDesc.name]) {\n debug(`Dropping plugin ${JSON.stringify(plugin)} because name is reserved by ${JSON.stringify(pluginNameToPlugin[plugin.PluginDesc.name])}`)\n } else {\n result.push(plugin)\n pluginNameToPlugin[plugin.PluginDesc.name] = plugin\n }\n }\n }\n return result\n}\n\nmodule.exports = {\n getPlugins,\n PLUGIN_TYPE_CONNECTOR,\n PLUGIN_TYPE_ASSERTER,\n PLUGIN_TYPE_LOGICHOOK,\n PLUGIN_TYPE_USERINPUT,\n TYPE_TO_PREFIX\n}\n","module.exports = {\n BotDriver: require('./src/BotDriver'),\n ScriptingProvider: require('./src/scripting/ScriptingProvider'),\n ScriptingConstants: require('./src/scripting/Constants'),\n Capabilities: require('./src/Capabilities'),\n Defaults: require('./src/Defaults'),\n Enums: require('./src/Enums'),\n Source: require('./src/Source'),\n Events: require('./src/Events'),\n Plugins: require('./src/Plugins'),\n BotiumError: require('./src/scripting/BotiumError').BotiumError,\n ScriptingMemory: require('./src/scripting/ScriptingMemory'),\n HookUtils: require('./src/helpers/HookUtils'),\n LogicHookConstants: require('./src/scripting/logichook/LogicHookConsts'),\n Lib: {\n tryLoadPlugin: require('./src/containers/plugins/index').tryLoadPlugin,\n SimpleRestContainer: require('./src/containers/plugins/SimpleRestContainer')\n },\n InboundProxy: require('./src/grid/inbound/proxy'),\n BotiumMockRichMessageTypes: require('./src/mocks/BotiumMockRichMessageTypes')\n}\n"],"names":["Capabilities","PROJECTNAME","TESTSESSIONNAME","TESTCASENAME","TEMPDIR","CLEANUPTEMPDIR","WAITFORBOTTIMEOUT","CONTAINERMODE","PLUGINMODULEPATH","SIMULATE_WRITING_SPEED","BOTIUMGRIDURL","BOTIUMAPITOKEN","BOTIUMGRIDSLOT","SIMPLEREST_PING_URL","SIMPLEREST_PING_VERB","SIMPLEREST_PING_BODY","SIMPLEREST_PING_BODY_RAW","SIMPLEREST_PING_HEADERS","SIMPLEREST_PING_REQUEST_HOOK","SIMPLEREST_PING_RETRIES","SIMPLEREST_PING_TIMEOUT","SIMPLEREST_PING_UPDATE_CONTEXT","SIMPLEREST_PING_PROCESS_RESPONSE","SIMPLEREST_START_URL","SIMPLEREST_START_VERB","SIMPLEREST_START_BODY","SIMPLEREST_START_BODY_RAW","SIMPLEREST_START_HEADERS","SIMPLEREST_START_REQUEST_HOOK","SIMPLEREST_START_RETRIES","SIMPLEREST_START_TIMEOUT","SIMPLEREST_START_UPDATE_CONTEXT","SIMPLEREST_START_PROCESS_RESPONSE","SIMPLEREST_STOP_URL","SIMPLEREST_STOP_VERB","SIMPLEREST_STOP_BODY","SIMPLEREST_STOP_BODY_RAW","SIMPLEREST_STOP_HEADERS","SIMPLEREST_STOP_REQUEST_HOOK","SIMPLEREST_STOP_RETRIES","SIMPLEREST_STOP_TIMEOUT","SIMPLEREST_INIT_CONTEXT","SIMPLEREST_INIT_TEXT","SIMPLEREST_INIT_PROCESS_RESPONSE","SIMPLEREST_PROXY_URL","SIMPLEREST_STRICT_SSL","SIMPLEREST_URL","SIMPLEREST_EXTRA_OPTIONS","SIMPLEREST_IGNORE_EMPTY","SIMPLEREST_TIMEOUT","SIMPLEREST_METHOD","SIMPLEREST_VERB","SIMPLEREST_HEADERS_TEMPLATE","SIMPLEREST_BODY_TEMPLATE","SIMPLEREST_BODY_RAW","SIMPLEREST_START_HOOK","SIMPLEREST_STOP_HOOK","SIMPLEREST_REQUEST_HOOK","SIMPLEREST_PARSER_HOOK","SIMPLEREST_POLL_URL","SIMPLEREST_POLL_VERB","SIMPLEREST_POLL_BODY","SIMPLEREST_POLL_BODY_RAW","SIMPLEREST_POLL_HEADERS","SIMPLEREST_POLL_REQUEST_HOOK","SIMPLEREST_POLL_INTERVAL","SIMPLEREST_POLL_TIMEOUT","SIMPLEREST_POLL_UPDATE_CONTEXT","SIMPLEREST_BODY_JSONPATH","SIMPLEREST_RESPONSE_JSONPATH","SIMPLEREST_RESPONSE_HOOK","SIMPLEREST_MEDIA_JSONPATH","SIMPLEREST_BUTTONS_JSONPATH","SIMPLEREST_CARDS_JSONPATH","SIMPLEREST_CARD_TEXT_JSONPATH","SIMPLEREST_CARD_SUBTEXT_JSONPATH","SIMPLEREST_CARD_BUTTONS_JSONPATH","SIMPLEREST_CARD_ATTACHMENTS_JSONPATH","SIMPLEREST_CONTEXT_JSONPATH","SIMPLEREST_CONTEXT_MERGE_OR_REPLACE","SIMPLEREST_CONVERSATION_ID_TEMPLATE","SIMPLEREST_STEP_ID_TEMPLATE","SIMPLEREST_INBOUND_REDISURL","SIMPLEREST_INBOUND_ENDPOINT","SIMPLEREST_INBOUND_PORT","SIMPLEREST_INBOUND_SELECTOR_JSONPATH","SIMPLEREST_INBOUND_SELECTOR_VALUE","SIMPLEREST_INBOUND_UPDATE_CONTEXT","SIMPLEREST_REDIS_TOPIC","SIMPLEREST_INBOUND_ORDER_UNSETTLED_EVENTS_JSONPATH","SIMPLEREST_INBOUND_DEBOUNCE_TIMEOUT","SCRIPTING_TXT_EOL","SCRIPTING_XLSX_MODE","SCRIPTING_XLSX_EOL_WRITE","SCRIPTING_XLSX_STARTROW","SCRIPTING_XLSX_STARTCOL","SCRIPTING_XLSX_HASNAMECOL","SCRIPTING_XLSX_HASHEADERS","SCRIPTING_XLSX_SHEETNAMES","SCRIPTING_XLSX_SHEETNAMES_PCONVOS","SCRIPTING_XLSX_SHEETNAMES_UTTERANCES","SCRIPTING_XLSX_SHEETNAMES_SCRIPTING_MEMORY","SCRIPTING_CSV_DELIMITER","SCRIPTING_CSV_SKIP_HEADER","SCRIPTING_CSV_QUOTE","SCRIPTING_CSV_ESCAPE","SCRIPTING_CSV_MULTIROW_COLUMN_CONVERSATION_ID","SCRIPTING_CSV_MULTIROW_COLUMN_SENDER","SCRIPTING_CSV_MULTIROW_COLUMN_TEXT","SCRIPTING_CSV_QA_COLUMN_QUESTION","SCRIPTING_CSV_QA_COLUMN_ANSWER","SCRIPTING_NORMALIZE_TEXT","SCRIPTING_ENABLE_MEMORY","SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS","SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS","SCRIPTING_FORCE_BOT_CONSUMED","SCRIPTING_MATCHING_MODE","SCRIPTING_UTTEXPANSION_MODE","SCRIPTING_UTTEXPANSION_RANDOM_COUNT","SCRIPTING_UTTEXPANSION_INCOMPREHENSION","SCRIPTING_UTTEXPANSION_USENAMEASINTENT","SCRIPTING_UTTEXPANSION_NAMING_MODE","SCRIPTING_UTTEXPANSION_NAMING_UTTERANCE_MAX","SCRIPTING_MEMORYEXPANSION_KEEP_ORIG","SCRIPTING_MEMORY_MATCHING_MODE","SCRIPTING_MEMORY_COLUMN_MODE","CUSTOMHOOK_ONBUILD","CUSTOMHOOK_ONSTART","CUSTOMHOOK_ONUSERSAYS","CUSTOMHOOK_ONBOTRESPONSE","CUSTOMHOOK_ONSTOP","CUSTOMHOOK_ONCLEAN","ASSERTERS","LOGIC_HOOKS","USER_INPUTS","RATELIMIT_USERSAYS_MAXCONCURRENT","RATELIMIT_USERSAYS_MINTIME","RATELIMIT_BOTTLENECK_FN","SECURITY_ALLOW_UNSAFE","PRECOMPILERS","Source","LOCALPATH","GITPATH","GITURL","GITBRANCH","GITDIR","GITPREPARECMD","Defaults","Sources","Envs","IS_BOTIUM_CONTAINER","Fluent_1","Fluent","constructor","driver","compiler","container","currentChannel","tasks","push","Promise","resolve","reject","Build","then","catch","err","Exec","async","eachSeries","task","cb","taskResult","Start","SwitchChannel","channel","ReadScripts","convoDir","globFilter","BuildCompiler","ReadScriptsFromDirectory","Compile","scriptBuffer","scriptFormat","scriptType","RunScripts","assertCb","failCb","scriptingEvents","assertBotResponse","bind","fail","ExpandConvos","convos","convo","convoDone","Run","Stop","UserSaysText","msg","_","isFunction","UserSays","messageText","Object","assign","WaitBotSays","timeoutMillis","callback","botMsg","WaitBotSaysText","text","Restart","Clean","Call","customFunction","Events","CONTAINER_BUILDING","CONTAINER_BUILT","CONTAINER_BUILD_ERROR","CONTAINER_STARTING","CONTAINER_STARTED","CONTAINER_START_ERROR","CONTAINER_STOPPING","CONTAINER_STOPPED","CONTAINER_STOP_ERROR","CONTAINER_CLEANING","CONTAINER_CLEANED","CONTAINER_CLEAN_ERROR","BOT_CONNECTED","MESSAGE_SENTTOBOT","MESSAGE_SENDTOBOT_ERROR","MESSAGE_RECEIVEDFROMBOT","MESSAGE_RECEIVEFROMBOT_ERROR","MESSAGE_ATTACHMENT","MESSAGE_TRANSCRIPT","TOOMUCHWORKERS_ERROR","BotiumError","Error","message","context","supressChildCheck","_getChildErrorsFromContext","name","captureStackTrace","isAsserterError","errArr","isArray","hasNotAsserterError","findIndex","errDetail","type","errors","e","prettify","includeJson","lines","forEach","segments","source","subtype","cause","expected","not","JSON","stringify","actual","join","input","transcript","length","transcriptStep","jsonOutput","jsonErr","botiumErrorFromErr","botiumErrorFromList","flat","map","toString","children","error","childErrors","concat","result","BotiumError_1","LOGIC_HOOK_INCLUDE","LogicHookConsts","DEFAULT_ASSERTERS","className","DEFAULT_LOGIC_HOOKS","DEFAULT_USER_INPUTS","NodeVM","require$$0","debug","require$$1","require$$2","require$$3","asserter","Class","require","logicHook","userInput","LogicHookUtils_1","LogicHookUtils","buildScriptContext","caps","asserters","globalAsserters","logicHooks","globalLogicHooks","userInputs","_setDefaultAsserters","_setDefaultLogicHooks","_setDefaultUserInputs","_fetchAsserters","_fetchLogicHooks","_fetchUserInputs","lh","ui","ref","_loadClass","global","getGlobalAsserter","getGlobalLogicHook","src","args","hookType","find","_checkUnsafe","path","basename","__filename","packageName","CheckClass","isClass","PluginClass","isObject","isString","hookObject","keys","reduce","key","script","vm","eval","sandbox","run","loadErr","tryLoads","tryLoadPackageName","tryLoadAsserterByName","indexOf","substr","lastIndexOf","tryLoadFromSource","tryRequire","tryAsserterName","default","PluginAsserters","PluginLogicHooks","tryLoad","tryLoadFile","process","cwd","fs","existsSync","Constants","SCRIPTING_FORMAT_XSLX","SCRIPTING_FORMAT_TXT","SCRIPTING_FORMAT_YAML","SCRIPTING_FORMAT_JSON","SCRIPTING_FORMAT_CSV","SCRIPTING_FORMAT_MARKDOWN","SCRIPTING_TYPE_CONVO","SCRIPTING_TYPE_PCONVO","SCRIPTING_TYPE_UTTERANCES","SCRIPTING_TYPE_SCRIPTING_MEMORY","BotiumMockAttachment_1","BotiumMockAttachment","fromJson","mimeType","base64","href","BotiumMockMedia","mediaUri","altText","downloadUri","buffer","indent","sections","truncate","repeat","BotiumMockButton","payload","imageUri","BotiumMockCard","subtext","content","sourceData","image","buttons","a","media","forms","BotiumMockForm","cards","_prettifyLines","card","prettifySafe","entry","m","b","f","c","value","label","options","BotiumMockChoice","title","BotiumMockRichMessageTypes","BotiumMockAsserter","cloneDeep","BotiumMockUserInput","BotiumMockLogicHook","BotiumMockScripting","BotiumMockMessage_1","BotiumMockMessage","sender","optional","nlp","sourceAction","attachments","slice","Enums","E_SCRIPTING_MEMORY_COLUMN_MODE","VARNAMES","TESTCASENAMES","normalizeText","str","doCleanup","replace","split","s","trim","splitStringInNonEmptyLines","filter","quoteRegexpString","removeBuffers","obj","jsonString","isBuffer","toLowerCase","startsWith","parse","isUndefined","undefined","isNumber","v","flatString","linesToConvoStep","eol","singleLineMode","validateSender","convoStep","textLinesRaw","textLines","textLinesAccepted","rawLine","logicLine","IsAsserterValid","IsUserInputValid","IsLogicHookValid","logichook","logicHookName","userinput","userInputName","pop","isJSON","optionalSet","Set","add","size","convoStepToObject","step","form","messageTextPrefix","cardTexts","mediaUr","validSenders","validateConvo","validationResult","i","conversation","has","nextStep","_decompileButton","buttonScript","convoStepToLines","l","linesToScriptingMemories","columnMode","guessScriptingMemoryColumnMode","scriptingMemories","caseNames","varNames","varValues","row","rawRow","caseIndex","caseName","values","agg","varName","varIndex","scriptingMemory","header","helper","v1","uuidv1","require$$4","SCRIPTING_FUNCTIONS_RAW","$now","Date","toLocaleString","$now_EN","$now_DE","moment","format","$now_ISO","toISOString","$date","pattern","toLocaleDateString","$date_EN","$date_DE","$date_ISO","$time","toLocaleTimeString","$time_EN","$time_DE","$time_ISO","$time_HH_MM","$time_HH","$time_H_A","$timestamp","now","$year","getFullYear","$month","$month_MM","$day_of_month","getDate","$day_of_week","$random","randomize","$random10","$uniqid","$projectname","handler","$testsessionname","$testcasename","$env","env","numberOfArguments","unsafe","$cap","$msg","jsonPath","mockMsg","root","jp","query","$func","code","SCRIPTING_FUNCTIONS","mapValues","funcOrStruct","func","rest","functionName","RESERVED_WORDS","apply","_apply","applyToArgs","arg","_longestFirst","allKeys","sort","keyRegexp","RegExp","regex","matches","match","substring","extractVarNames","fill","utterance","util","inspect","varRegex","utterances","resolveUtterance","reExpected","varMatches","varMatchesRegexp","resultMatches","ScriptingMemory","ConvoHeader","projectname","testsessionname","order","description","ConvoStepAssert","ConvoStepLogicHook","ConvoStepUserInput","ConvoStep","stepTag","hasInteraction","u","Transcript","steps","convoBegin","convoEnd","prettifyActual","prettifiedSteps","TranscriptStep","stepBegin","stepEnd","botBegin","botEnd","TranscriptError","Convo","beginAsserter","sourceTag","endAsserter","setConvoBeginAndEndAsserter","beginLogicHook","endLogicHook","setConvoBeginAndEndLogicHook","effectiveConversation","acc","val","onConvoBegin","assertConvoBegin","runConversation","_checkBotRepliesConsumed","onConvoEnd","assertConvoEndErr","assertConvoEnd","eventEmitter","emit","transcriptSteps","lastMeConvoStep","waitForBotSays","skipTranscriptStep","currentStepIndex","meMsg","WORKAROUND_OVERWRITE_JSON_MESSAGE_TEXT","setUserInput","onMeStart","onMePrepare","coreMsg","omit","setTimeout","isNull","onMeEnd","failErr","onBotStart","prepared","onBotPrepare","isErrorHandledWithOptionConvoStep","nextConvoStep","assertErrors","scriptingMemoryUpdate","response","_checkNormalizeText","tomatch","_resolveUtterancesToMatch","assertBotNotResponse","_compareObject","assertConvoStep","onBotEnd","transcriptStepErrs","forOwn","prototype","hasOwnProperty","call","GetScriptingMemoryAllVariables","resultOuter","GetScriptingMemoryVariables","extractFromArgs","convoStepItems","resultInner","item","queueLength","_QueueLength","normalizedUtterances","expandPartialConvos","_getIncludeLogicHookNames","hook","partialConvos","GetPartialConvos","_getEffectiveConversationRecursive","parentPConvos","ignoreBeginEnd","includeLogicHooks","steptagPath","includeLogicHook","alreadyThereAt","partialConvo","Convo_1","RetryHelper_1","RetryHelper","section","retrySettings","retries","toUpperCase","factor","minTimeout","retryErrorPatterns","onErrorRegexp","r","shouldRetry","errString","re","_normalize","botresponse","regexp","ignoreCase","test","wildcard","numWildcards","utteranceRe","wildcardExact","include","equals","getMatchFunction","matchingMode","MatchFunctions","isStringJson","string","isJsonObject","json","stringIsJson","isJson","toJsonWeak","stringOrNot","optionalJson","body","shortenJsonString","escapeJSONString","character","formatTimeout","ms","Math","floor","Utils","_ensureList","queryResult","precompile","filename","endsWith","checkerJsonpath","CHECKER_JSONPATH","rootJsonpath","ROOT_JSONPATH","utteranceRefsJsonpath","UTTERANCE_REF_JSONPATH","utterancesJsonpath","UTTERANCES_JSONPATH","scriptData","scouldExist","rootObjects","intent","executeHook","executeHookSync","getHook","data","allowUnsafe","resultWithRequire","hookData","esprima","parseScript","HookUtils","SCRIPT","htmlCommentRegexp","md","MarkdownIt","parsed","_extractFromRasaIntent","_extractFromRasaSentence","rasaSentence","matched","splitted","meText","meTexts","state","processLeafs","uniq","getAllCapValues","capNamePrefix","allCapValues","jsonPathCaps","pickBy","k","each","p","flatCababilities","prefix","capNames","regexpPrefixAndGroup","currentGroup","currentObject","capName","charAt","capPrefixAndGroup","PROVIDERS","JSON_TO_JSON_JSONPATH","MARKDOWN_RASA","CAPABILITY_PREFIX","require$$5","execute","ownCaps","Buffer","capSuffixAndVal","NAME","provider","precompiler","CompilerBase_1","CompilerBase","AddConvos","AddPartialConvos","AddUtterances","AddScriptingMemories","Validate","GetHeaders","Decompile","_AssertCapabilityExists","cap","_GetOptionalCapability","def","_GetCapabilitiesByPrefix","Utterance_1","Utterance","CompilerXlsx_1","CompilerXlsx","colnames","_splitSheetnames","sheetnames","_filterSheetnames","selectors","filteredSheetnames","sheetname","selector","workbook","XLSX","read","Props","maxEmptyRowCount","SheetNames","scriptResults","sheet","Sheets","rowindex","colindex","hasNameCol","_findOrigin","parseCell","eolSplit","_extractRow","cell1","cell1Value","cell2","cell2Value","cell3","cell3Value","nameCell","nameCellValue","meCell","meCellValue","botCell","botCellValue","questionAnswerMode","emptyRowCount","index","foundQARows","foundConvoRows","convoResults","currentConvo","currentConvoName","startrowindex","formatLength","max","formatBase","formatRowIndex","currentUtterance","emptylines","uttCell","line1Cell","colindexTemp","caseNameCell","varNameCell","variableValueCell","variableNames","variableNameCell","cellContent","stepLines","wb","utils","book_new","ws","json_to_sheet","book_append_sheet","xlsxOutput","write","_get","cell","cellValue","NestedLoop","cr","cc","CompilerTxt_1","CompilerTxt","line","_compileConvo","_compileUtterances","_compileScriptingMemory","isPartial","currentLineIndex","currentLines","convoStepSender","convoStepChannel","convoStepLineIndex","parseMsg","pushPrev","isValidTagLine","includes","DELIMITERS_CHECK","DEFAULT_DELIMITER","DEFAULT_QA_COLUMN_QUESTION","DEFAULT_QA_COLUMN_ANSWER","DEFAULT_MULTIROW_COLUMN_CONVERSATION","DEFAULT_MULTIROW_COLUMN_SENDER","DEFAULT_MULTIROW_COLUMN_TEXT","_findColIndex","colName","h","CompilerCsv_1","CompilerCsv","delimiter","firstline","d","rows","escape","quote","columns","lineNumberBase","colQuestion","colAnswer","colConversationId","colSender","colText","conversationIds","conversationId","convoRows","CompilerObjectBase_1","CompilerObjectBase","Deserialize","convoRaw","convoStepRaw","entries","lineTag","padStart","convoStepObject","toAdd","utterancesRaw","names","CompilerYaml_1","CompilerYaml","YAML","CompilerJson_1","CompilerJson","set","CompilerMarkdown_1","CompilerMarkdown","_toStructuredMarkdown","depth","struct","_add","markup","tag","structured","convosOrUtterances","convosBotium","child","utterancesBotium","utteranceStruct","shim","globPattern","skipPattern","retryHelper","fn","promise","promiseRetry","retry","number","pnot","errTemplate","ScriptingProvider_1","ScriptingProvider","compilers","matchFn","globalAsserter","globalLogicHook","_createLogicHookPromises","_createAsserterPromises","asserterType","_createUserInputPromises","resolveEmptyIfUnknown","_resolveUtterance","found","utt","isNil","nottomatch","retryHelperAsserter","retryHelperLogicHook","retryHelperUserInput","_isValidAsserterType","mapNot","callAsserter","asserterSpec","params","notAsserterType","convoAsserter","isGlobal","allPromises","allSettled","results","rejected","status","reason","all","convoStepPromises","globalPromises","some","t","parts","uttArgs","_buildScriptContext","Match","require$$6","require$$7","require$$8","require$$9","require$$10","logicHookUtils","GetCompiler","ReadBotiumFilesFromDirectory","filelist","globby","sync","gitignore","filelistGlobbed","remove","file","isSkip","convoDirStats","statSync","isFile","dirname","dirConvos","dirUtterances","dirPartialConvos","dirScriptingMemories","pconvos","ReadScript","dirScriptingMemory","ReadScriptFromBuffer","scriptingFormat","scriptingTypes","readFileSync","precompResponse","precompilers","fileConvo","filePartialConvo","_tagAndCleanupUtterances","utteranceFiles","fileUtt","ExpandScriptingMemoryToConvos","aggregatedNoNames","aggregatedNoVariables","aggregatedNoVariableNames","aggregatedDuplicates","duplicate","j","aggregatedIntersections","intersection","k1","k2","kInt","variablesToScriptingMemory","Map","get","convosExpandedAll","convosOriginalAll","convoVariables","convosToExpand","convosExpandedConvo","multipliers","convosExpandedVariable","convoToExpand","convoExpanded","_sortConvos","ExpandUtterancesToConvos","useNameAsIntent","incomprehensionUtt","expandedConvos","uttName","origUttName","_expandConvo","convoStepIndex","convoStepsStack","utterancePostfix","uttOrUserInput","naming","capabilities","utteranceMax","postfix","currentStep","currentStepsStack","useUnexpanded","allutterances","sampleutterances","x","random","currentConvoLabeled","origConvoName","uiIndex","expandConvo","expandedUserInputs","sampleinputs","sampleinput","currentStepMod","sortBy","findAmbiguous","ambiguous","base","expectedString","actualString","eu","GetConversationFlowView","getConvoNodeHash","detectLoops","summarizeMultiSteps","extPickMeNodeProps","extPickBotNodeProps","extPickMeHashProps","extPickBotHashProps","botNodesByHash","pickMeNodeProps","pickBotNodeProps","pickMeHashProps","pickBotHashProps","convoNodes","utteranceSamples","utteranceCount","lastConvoNode","convoSteps","convoStepIndices","hash","currentChildren","convoNode","convoNodeValues","pick","convoNodeHeader","crypto","createHash","update","digest","existingChildNode","childNodes","existingBotNode","existingConvo","node","GetConversationFlowDot","nodes","walkTreeForNodes","walkTreeForLines","BaseRepo_1","BaseRepo","tempDirectory","sources","workingDirectory","Prepare","_AssertSourceExists","NoRepo_1","NoRepo","module","exports","childCommandLineRun","cmd","ignoreErrors","processOptions","cmdOptions","cmdPart","splice","childProcessRun","runningProcess","childProcess","spawn","stdout","stderr","on","GitRepo_1","GitRepo","series","cloneDirectoryCreated","mkdirp","cloneReady","gitCmdOptions","ProcessUtils","workingDirectoryChanged","prepareReady","LocalRepo_1","LocalRepo","checkPath","stat","stats","isDirectory","isSymbolicLink","access","constants","W_OK","err1","Commands","BUILD_CONTAINER","START_CONTAINER","SENDTOBOT","STOP_CONTAINER","CLEAN_CONTAINER","QueueTimeoutError_1","QueueTimeoutError","Queue_1","Queue","queue","listeners","pushListener","empty","clear","shift","listener","timeoutRequest","timeout","timeoutCallback","registerPushListener","BaseContainer_1","BaseContainer","repo","envs","cleanupTasks","queues","bottleneck","onBuildHook","onStartHook","onUserSaysHook","onBotResponseHook","onStopHook","onCleanHook","limiter","Bottleneck","schedule","opts","maxConcurrent","minTime","_RunCustomHook","UserSaysImpl","isError","userSaysLimiter","hookExecuted","cleanupTasksDone","rimraffed","rimraf","_AssertOneCapabilityExists","checkCaps","arguments","_EmptyQueue","_QueueBotSays","request","GridContainer_1","GridContainer","buildPromise","_defer","baseComplete","socketComplete","socket","io","apiToken","startPromise","stopPromise","cleanPromise","disconnect","_ValidateCustomHook","capKey","deferred","InProcessContainer_1","InProcessContainer","InjectBotSays","buildRedisHandler","redisurl","topic","redis","Redis","event","publish","setupEndpoints","app","endpoint","middleware","processEvent","req","res","originalUrl","originalMethod","method","end","sendResponse","startProxy","port","express","bodyParser","urlencoded","extended","proxy","listen","console","log","v4","uuidv4","botiumUtils","Mustache","SimpleRestContainer_1","SimpleRestContainer","queueBotSays","processInbound","redisTopic","debounceTimeout","inboundEvents","_processOrderedInboundEventsArrayAsync","debounce","events","_getMustachedVal","sortedEvents","qr","_processBodyAsync","startHook","stopHook","requestHook","parserHook","responseHook","pollRequestHook","requestHooks","SIMPLEREST_PING","SIMPLEREST_START","SIMPLEREST_STOP","_buildInbound","contextInitComplete","view","botium","stepId","fnc","mapKeys","descriptor","safeCaps","render","jsonify","_getMustachedCap","startHookComplete","inboundListenerComplete","_subscribeInbound","startPollingComplete","_startPolling","pingComplete","_makeCall","_parseResponseBody","initComplete","_doRequest","startCallComplete","_unsubscribeInbound","_stopPolling","_cleanInbound","isFromUser","updateContext","_processBodyAsyncImpl","waitProcessQueue","_emptyWaitProcessQueue","mergeMode","jsonPathsContext","jsonPathContext","contextNodes","jsonPathRoots","jsonPathsBody","jsonPathBody","rb","jsonPathRoot","_retrieveMedia","jsonPathMediaRoot","jsonPathsMedia","retrievedMedia","responseMedia","flattenDeep","mime","lookup","_retrieveButtons","jsonPathButtonRoot","jsonPathsButtons","retrievedButtons","responseButtons","_getCardText","responseCardText","texts","jsonPathsCards","responseCards","jsonPathsCardText","jsonPathsCardSubText","hasMessageText","jsonPathsTexts","responseTexts","messageTexts","messageTextIndex","botMsgRoot","beforeHookKeys","afterHookKeys","_buildRequest","requestOptions","statusCode","statusMessage","enabled","jsonBody","errKey","nonEncodedMessage","encodeURIComponent","uri","_getCapValue","followAllRedirects","headers","bodyRaw","ADD_QUERY_PARAM","appendToUri","ADD_FORM_PARAM","formKey","formValue","ADD_HEADER","headerKey","headerValue","_addRequestOptions","_waitForUrlResponse","pingConfig","tries","changeBody","capValue","template","raw","_processInboundEvent","jsonPathValue","jsonPathsSelector","isSelected","jsonPathTemplate","hasResult","check","processingEvents","count","subscribe","unsubscribe","close","_runPolling","verb","pollConfig","pollInterval","setInterval","clearInterval","capPrefix","httpConfig","strictSSL","merge","pluginResolver","containermode","getModuleVersionSafe","required","pckg","version","loadConnectorModule","tryLoadPlugin","modulepath","pluginLoaderSpec","mode","pluginInstance","plugin","PluginVersion","tryLoadPackage","plugins","PluginConnectorContainer_1","PluginConnectorContainer","retryHelperBuild","retryHelperStart","retryHelperUserSays","retryHelperStop","retryHelperClean","boolean","BotDriver_1","BotDriver","EventEmitter","_fetchedConfigFiles","_fetchConfigFromFiles","NODE_ENV","botiumConfigEnv","BOTIUM_CONFIG","checkDir","checkFileBase","sourcesToTest","element","elementToTest","_mergeCaps","envName","setCapabilities","setCapability","setSources","setSource","setEnvs","setEnv","BuildFluent","driverValidated","_validate","repoValidated","_getRepo","repoPrepared","containerValidated","_getContainer","containerBuilt","_loadConfigFile","configJson","files","fetchedFiles","absFilePath","_findKeyProperty","checkPropIdx","newCaps","isFinite","newCapArray","capElement","mergeKey","oldElement","newCapObject","isBoolean","sanitize","PLUGIN_TYPE_CONNECTOR","PLUGIN_TYPE_ASSERTER","PLUGIN_TYPE_LOGICHOOK","PLUGIN_TYPE_USERINPUT","TYPE_TO_PREFIX","TYPE_TO_COMPONENT_TYPE","getConnectorPlugin","pathToRes","PluginType","pluginPath","pluginNameFromFile","PluginDesc","getOtherPlugin","pluginName","TYPE_TO_FN","getPlugins","resourcesDir","items","readdirSync","extname","pluginNameToPlugin","Plugins","botiumCore","ScriptingConstants","require$$11","LogicHookConstants","require$$12","Lib","require$$13","require$$14","InboundProxy","require$$15","require$$16"],"mappings":"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"}
|