botium-core 1.15.10 → 1.15.12
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/dist/botium-cjs.js +78 -51
- package/dist/botium-cjs.js.map +1 -1
- package/dist/botium-es.js +78 -50
- package/dist/botium-es.js.map +1 -1
- package/package.json +35 -40
- package/src/BotDriver.js +1 -1
- package/src/Events.js +1 -3
- package/src/containers/GridContainer.js +0 -4
- package/src/utils/boolean.js +39 -0
- package/test/compiler/compilercsv.spec.js +34 -0
- package/test/compiler/compilermarkdown.spec.js +11 -0
- package/test/compiler/compilertxt.spec.js +21 -0
- package/test/compiler/compilerxlsx.spec.js +27 -0
- package/test/compiler/precompilerjson.spec.js +1 -0
- package/test/compiler/precompilermarkdownrasa.spec.js +1 -0
- package/test/connectors/pluginconnectorcontainer.spec.js +1 -0
- package/test/connectors/simplerest.spec.js +3 -1
- package/test/convo/failure.spec.js +1 -0
- package/test/convo/fillAndApplyScriptingMemory.spec.js +56 -0
- package/test/convo/partialconvo.spec.js +3 -0
- package/test/convo/retry.spec.js +9 -0
- package/test/convo/retryasserter.spec.js +9 -0
- package/test/convo/transcript.spec.js +33 -0
- package/test/convo/tree.spec.js +5 -0
- package/test/driver/capabilities.spec.js +16 -0
- package/test/helpers/capabilitiesutils.spec.js +8 -0
- package/test/helpers/transcriptutils.spec.js +1 -0
- package/test/hooks/customhooks.spec.js +3 -0
- package/test/logichooks/hookfromsrc.spec.js +3 -0
- package/test/logichooks/textfromhook.spec.js +1 -0
- package/test/plugins/plugins.spec.js +3 -0
- package/test/scripting/asserters/buttonsAsserter.spec.js +15 -0
- package/test/scripting/asserters/cardsAsserter.spec.js +12 -0
- package/test/scripting/asserters/convoStepParameters.spec.js +11 -0
- package/test/scripting/asserters/entitiesAsserter.spec.js +1 -0
- package/test/scripting/asserters/entityValuesAsserter.spec.js +7 -0
- package/test/scripting/asserters/formsAsserter.spec.js +10 -0
- package/test/scripting/asserters/intentAsserter.spec.js +4 -0
- package/test/scripting/asserters/intentUniqueAsserter.spec.js +2 -0
- package/test/scripting/asserters/jsonpathAsserter.spec.js +25 -0
- package/test/scripting/asserters/mediaAsserter.spec.js +20 -0
- package/test/scripting/asserters/responseLengthAsserter.spec.js +4 -0
- package/test/scripting/asserters/textAsserter.spec.js +1 -0
- package/test/scripting/asserters/textContainsAllAsserter.spec.js +1 -0
- package/test/scripting/asserters/textContainsAnyAsserter.spec.js +1 -0
- package/test/scripting/asserters/textEqualsAsserter.spec.js +1 -0
- package/test/scripting/asserters/textRegexpAllAsserter.spec.js +1 -0
- package/test/scripting/asserters/textRegexpAnyAsserter.spec.js +1 -0
- package/test/scripting/asserters/textWildcardAllAsserter.spec.js +1 -0
- package/test/scripting/asserters/textWildcardAnyAsserter.spec.js +1 -0
- package/test/scripting/asserters/textWildcardExactAllAsserter.spec.js +1 -0
- package/test/scripting/asserters/textWildcardExactAnyAsserter.spec.js +1 -0
- package/test/scripting/asserters/werAsserter.spec.js +6 -0
- package/test/scripting/logichooks/customConditionalStepLogicHook.spec.js +2 -0
- package/test/scripting/logichooks/localvsglobal.spec.js +1 -0
- package/test/scripting/logichooks/pauseLogic.spec.js +4 -0
- package/test/scripting/logichooks/setClearScriptingMemory.spec.js +3 -0
- package/test/scripting/logichooks/updateCustom.spec.js +2 -0
- package/test/scripting/matching/matchingmode.spec.js +48 -0
- package/test/scripting/scriptingModificator.spec.js +1 -0
- package/test/scripting/scriptingmemory/fillScriptingMemoryFromFile.spec.js +4 -0
- package/test/scripting/scriptingmemory/regexp.spec.js +1 -0
- package/test/scripting/scriptingmemory/useScriptingMemoryForAssertion.spec.js +3 -0
- package/test/scripting/txt/decompile.spec.js +20 -0
- package/test/scripting/userinputs/buttonInputConvos.spec.js +1 -0
- package/test/scripting/userinputs/defaultUserInputs.spec.js +13 -0
- package/test/scripting/userinputs/mediaInputConvos.spec.js +10 -0
- package/test/scripting/utteranceexpansion/associateByIndex.spec.js +2 -0
- package/test/security/allowUnsafe.spec.js +5 -0
- package/test/utils.spec.js +2 -0
- package/samples/postman/Botium Agent Sample.postman_collection.json +0 -834
- package/samples/postman/README.md +0 -5
- package/samples/postman/botiumFluent.js +0 -37
- package/src/grid/agent/AgentWorker.js +0 -204
- package/src/grid/agent/agent.js +0 -96
- package/src/grid/agent/agentworkerpool.js +0 -58
- package/src/grid/agent/routes.js +0 -353
- package/src/grid/agent/swagger.json +0 -327
- package/src/grid/agent/swaggerDef.json +0 -8
- package/src/grid/agent/views/index.html +0 -39
- package/test/grid/agent/client.js +0 -65
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/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/BotiumError.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","../src/helpers/TranscriptUtils.js","../index.js"],"sourcesContent":["module.exports = {\n PROJECTNAME: 'PROJECTNAME',\n TESTSESSIONNAME: 'TESTSESSIONNAME',\n TESTCASENAME: 'TESTCASENAME',\n TEMPDIR: 'TEMPDIR',\n SAFEDIR: 'SAFEDIR',\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 Rest 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_BODY_FROM_JSON: 'SIMPLEREST_BODY_FROM_JSON',\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_CONTEXT_IGNORE_JSONPATH: 'SIMPLEREST_CONTEXT_IGNORE_JSONPATH',\n SIMPLEREST_CONTEXT_IGNORE_MATCH: 'SIMPLEREST_CONTEXT_IGNORE_MATCH',\n SIMPLEREST_CONTEXT_SKIP_JSONPATH: 'SIMPLEREST_CONTEXT_SKIP_JSONPATH',\n SIMPLEREST_CONTEXT_SKIP_MATCH: 'SIMPLEREST_CONTEXT_SKIP_MATCH',\n SIMPLEREST_CONTEXT_CONTINUE_JSONPATH: 'SIMPLEREST_CONTEXT_CONTINUE_JSONPATH',\n SIMPLEREST_CONTEXT_CONTINUE_MATCH: 'SIMPLEREST_CONTEXT_CONTINUE_MATCH',\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_BUTTONS_TEXT_SUBJSONPATH: 'SIMPLEREST_BUTTONS_TEXT_SUBJSONPATH',\n SIMPLEREST_BUTTONS_PAYLOAD_SUBJSONPATH: 'SIMPLEREST_BUTTONS_PAYLOAD_SUBJSONPATH',\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_BUTTONS_TEXT_SUBJSONPATH: 'SIMPLEREST_CARD_BUTTONS_TEXT_SUBJSONPATH',\n SIMPLEREST_CARD_BUTTONS_PAYLOAD_SUBJSONPATH: 'SIMPLEREST_CARD_BUTTONS_PAYLOAD_SUBJSONPATH',\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 SIMPLEREST_COOKIE_REPLICATION: 'SIMPLEREST_COOKIE_REPLICATION',\n SIMPLEREST_NLP_INTENT_JSONPATH: 'SIMPLEREST_NLP_INTENT_JSONPATH',\n SIMPLEREST_NLP_CONFIDENCE_JSONPATH: 'SIMPLEREST_NLP_CONFIDENCE_JSONPATH',\n SIMPLEREST_NLP_CONFIDENCE_DIVIDEBY100: 'SIMPLEREST_NLP_CONFIDENCE_DIVIDEBY100',\n SIMPLEREST_NLP_FALLBACK_INTENTS: 'SIMPLEREST_NLP_FALLBACK_INTENTS',\n SIMPLEREST_NLP_LIST_JSONPATH: 'SIMPLEREST_NLP_LIST_JSONPATH',\n SIMPLEREST_NLP_LIST_INTENT_JSONPATH: 'SIMPLEREST_NLP_LIST_INTENT_JSONPATH',\n SIMPLEREST_NLP_LIST_CONFIDENCE_JSONPATH: 'SIMPLEREST_NLP_LIST_CONFIDENCE_JSONPATH',\n /**\n * Single response can contain a list of messages. This capability defines how to merge the list into a single message.\n * It can be 'OFF' (default), 'MERGE_TEXT'\n * @type {string}\n * @default 'OFF'\n * @description Merge message list into single message\n */\n SIMPLEREST_MESSAGE_LIST_MERGE: 'SIMPLEREST_MESSAGE_LIST_MERGE',\n\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 // hidden capability. All newly in Box created testsets will have this as true. CsvCompiler\n // - throws less error (Box reads csv files as utterances, and convo. Compiler cant throw exception if a file is correct, but box tries to load it with incorrect script type)\n // 4 or more colums are compiled just as utterances.\n SCRIPTING_CSV_LEGACY_MODE_OFF: 'SCRIPTING_CSV_LEGACY_MODE_OFF',\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_CSV_UTTERANCE_STARTROW: 'SCRIPTING_CSV_UTTERANCE_STARTROW',\n SCRIPTING_CSV_UTTERANCE_STARTROW_HEADER: 'SCRIPTING_CSV_UTTERANCE_STARTROW_HEADER',\n SCRIPTING_CSV_UTTERANCE_STOP_ON_EMPTY: 'SCRIPTING_CSV_UTTERANCE_STOP_ON_EMPTY',\n SCRIPTING_NORMALIZE_TEXT: 'SCRIPTING_NORMALIZE_TEXT',\n SCRIPTING_NORMALIZE_TEXT_REMOVE_CHARACTERES: 'SCRIPTING_NORMALIZE_TEXT_REMOVE_CHARACTERES',\n SCRIPTING_NORMALIZE_TEXT_REMOVE_REGEXP: 'SCRIPTING_NORMALIZE_TEXT_REMOVE_REGEXP',\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, wer\n SCRIPTING_MATCHING_MODE: 'SCRIPTING_MATCHING_MODE',\n SCRIPTING_MATCHING_MODE_ARGS: 'SCRIPTING_MATCHING_MODE_ARGS',\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_INCOMPREHENSIONINTENTS: 'SCRIPTING_UTTEXPANSION_INCOMPREHENSIONINTENTS',\n SCRIPTING_UTTEXPANSION_INCOMPREHENSIONUTTS: 'SCRIPTING_UTTEXPANSION_INCOMPREHENSIONUTTS',\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 SCRIPTING_CONVO_STEP_PARAMETERS: 'SCRIPTING_CONVO_STEP_PARAMETERS',\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.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.SIMPLEREST_COOKIE_REPLICATION]: true,\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_UTTEXPANSION_INCOMPREHENSION]: null,\n [Capabilities.SCRIPTING_UTTEXPANSION_INCOMPREHENSIONINTENTS]: [],\n [Capabilities.SCRIPTING_UTTEXPANSION_INCOMPREHENSIONUTTS]: [],\n [Capabilities.SCRIPTING_UTTEXPANSION_USENAMEASINTENT]: false,\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 CONVO_STEP_NEXT: 'CONVO_STEP_NEXT',\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 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 { name: 'TEXT_WER', className: 'WerAsserter' },\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 { name: 'CONDITIONAL_STEP_TIME_BASED', className: 'ConditionalTimeBasedLogicHook' },\n { name: 'CONDITIONAL_STEP_BUSINESS_HOURS', className: 'ConditionalBusinessHoursLogicHook' },\n { name: 'CONDITIONAL_STEP_CAPABILITY_VALUE_BASED', className: 'ConditionalCapabilityValueBasedLogicHook' },\n { name: 'CONDITIONAL_STEP_JSON_PATH_BASED', className: 'ConditionalJsonPathBasedLogicHook.js' },\n { name: 'CONVO_STEP_PARAMETERS', className: 'ConvoStepParametersLogicHook.js' },\n { name: 'ORDERED_LIST_TO_BUTTON', className: 'OrderedListToButtonLogicHook' }\n ],\n DEFAULT_USER_INPUTS: [\n { name: 'BUTTON', className: 'ButtonInput' },\n { name: 'MEDIA', className: 'MediaInput' },\n { name: 'FORM', className: 'FormInput' }\n ],\n LOGIC_HOOK_EVENTS: ['onConvoBegin', 'onMeStart', 'onMePrepare', 'onMeEnd', 'onBotStart', 'onBotEnd', 'onBotPrepare', 'onConvoEnd']\n}\n","const util = require('util')\nconst path = require('path')\nconst fs = require('fs')\nconst isClass = require('is-class')\nconst debug = require('debug')('botium-core-asserterUtils')\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.globalAsserterNames = []\n this.logicHooks = {}\n this.globalLogicHookNames = []\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.globalAsserterNames.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.globalLogicHookNames.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 getGlobalAsserters () {\n return this.globalAsserterNames.reduce((agg, name) => ({ ...agg, [name]: this.asserters[name] }), {})\n }\n\n getGlobalLogicHooks () {\n return this.globalLogicHookNames.reduce((agg, name) => ({ ...agg, [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 || src === asserter.name)\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 || src === lh.name)\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 || src === ui.name)\n if (ui) {\n return new (ui.Class)({ ref, ...this.buildScriptContext }, this.caps, args)\n }\n }\n\n const allowUnsafe = !!this.caps[Capabilities.SECURITY_ALLOW_UNSAFE]\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('Either class or function or PluginClass field expected')\n }\n } catch (err) {\n throw new Error(`Logic Hook specification ${ref} ${hookType} (${packageName}) invalid: ${err.message}`)\n }\n }\n\n const typeAsText = hookType === 'asserter' ? 'Asserter' : hookType === 'logichook' ? 'Logic Hook' : hookType === 'userinput' ? 'User Input' : 'Unknown'\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(`${typeAsText} specification ${ref} from class invalid: ${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(`${typeAsText} specification ${ref} from function invalid: ${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 {\n throw new Error(`Script ${key} is not valid - only functions accepted`)\n }\n }\n return result\n }, {})\n return hookObject\n } catch (err) {\n throw new Error(`${typeAsText} specification ${ref} ${hookType} from provided src (${util.inspect(src)}) invalid: ${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.substring(0, src.lastIndexOf('/')),\n tryLoadAsserterByName: src.substring(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('Expected class or function')\n }\n }\n\n for (const tryLoad of tryLoads) {\n if (this.caps.SAFEDIR) {\n const tryLoadFile = path.resolve(this.caps.SAFEDIR, tryLoad.tryLoadPackageName)\n if (tryLoadFile.startsWith(path.resolve(this.caps.SAFEDIR))) {\n if (fs.existsSync(tryLoadFile)) {\n try {\n return tryLoadFromSource(tryLoadFile, tryLoad.tryLoadAsserterByName)\n } catch (err) {\n loadErr.push(`${typeAsText} specification ${ref} ${hookType} from \"${src}\" invalid: ${err.message} `)\n }\n }\n }\n }\n if (allowUnsafe || tryLoad.tryLoadPackageName.startsWith('botium-')) {\n try {\n return tryLoadFromSource(tryLoad.tryLoadPackageName, tryLoad.tryLoadAsserterByName)\n } catch (err) {\n loadErr.push(`${typeAsText} specification ${ref} ${hookType} from \"${src}\" invalid: ${err.message} `)\n }\n }\n }\n\n loadErr.forEach(debug)\n }\n throw new Error(`${typeAsText} specification ${ref} ${hookType} from \"${util.inspect(src)}\" invalid : no loader available`)\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 this.not = fromJson.not\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')\nconst speechScorer = require('word-error-rate')\nconst debug = require('debug')('botium-core-scripting-helper')\n\nconst { E_SCRIPTING_MEMORY_COLUMN_MODE } = require('../Enums')\nconst Capabilities = require('../Capabilities')\nconst WHITE_SPACES_EXCEPT_SPACE_CHAR_AT_THE_END = /[\\n\\t\\r]+$/\n\nconst normalizeText = (str, doCleanupOrCaps) => {\n // TODO testlog\n debug('yxc1', doCleanupOrCaps)\n let basic\n let charactersRemove = false\n let regexpRemove = false\n if (_.isBoolean(doCleanupOrCaps) || _.isNil(doCleanupOrCaps)) {\n debug('Normalize text: backward compatibility mode. Use caps instead of boolean flag')\n basic = !!doCleanupOrCaps\n } else {\n const caps = doCleanupOrCaps\n basic = !!caps[Capabilities.SCRIPTING_NORMALIZE_TEXT]\n if (caps[Capabilities.SCRIPTING_NORMALIZE_TEXT_REMOVE_CHARACTERES]) {\n charactersRemove = caps[Capabilities.SCRIPTING_NORMALIZE_TEXT_REMOVE_CHARACTERES]\n if (_.isString(charactersRemove)) {\n const splitted = charactersRemove.split(/(?<!\\/),/).map(e => e.trim()).map(e => e.split('/,').join(',').split('//').join('/')).filter(c => c.length > 0)\n charactersRemove = splitted.length ? splitted : [charactersRemove]\n } else if (!_.isArray(charactersRemove)) {\n charactersRemove = false\n }\n }\n if (caps[Capabilities.SCRIPTING_NORMALIZE_TEXT_REMOVE_REGEXP]) {\n regexpRemove = new RegExp(caps[Capabilities.SCRIPTING_NORMALIZE_TEXT_REMOVE_REGEXP], 'ug')\n }\n }\n\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\n if (str) {\n if (basic) {\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 if (charactersRemove) {\n for (const character of charactersRemove) {\n str = str.split(character).join('')\n }\n }\n if (regexpRemove) {\n str = str.replace(regexpRemove, '')\n }\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) || _.isNil(value)) return ''\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 toString(str).split('\\n').map(s => s.trim()).join(' ') || ''\n}\n\nconst _formatAppendArgs = (args) => {\n return (args && args.length > 0 && _.isArray(args) && ` ${args.map(a => _.isString(a) ? a.replace(/\\|/g, '\\\\|') : `${a}`).join('|')}`) || ''\n}\nconst _parseArgs = (str) => {\n return (str && str.length > 0 && str.replace(/\\\\\\|/g, '###ESCAPESPLIT###').split('|').map(s => s.replace(/###ESCAPESPLIT###/g, '|').trim())) || []\n}\n\nconst linesToConvoStep = (lines, sender, context, eol = '\\n', 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 ? _parseArgs(logicLine.substr(name.length + 1)) : [])\n convoStep.asserters.push({ name, args, not, optional })\n } else if (sender === 'me' && context.IsUserInputValid(name)) {\n const args = (logicLine.length > name.length ? _parseArgs(logicLine.substr(name.length + 1)) : [])\n convoStep.userInputs.push({ name, args })\n textLinesAccepted = false\n } else if (context.IsLogicHookValid(name)) {\n const args = (logicLine.length > name.length ? _parseArgs(logicLine.substr(name.length + 1)) : [])\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 = trimExceptSpaceEnd(textLines.join(eol))\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 trimExceptSpaceEnd = (string) => {\n return string?.replace(WHITE_SPACES_EXCEPT_SPACE_CHAR_AT_THE_END, '')\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 (!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${_formatAppendArgs([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 } else if (step.sourceData) {\n lines.push(JSON.stringify(step.sourceData, null, 2))\n }\n step.userInputs && step.userInputs.forEach((userInput) => {\n lines.push(userInput.name + _formatAppendArgs(userInput.args))\n })\n step.logicHooks && step.logicHooks.forEach((logicHook) => {\n lines.push(logicHook.name + _formatAppendArgs(logicHook.args))\n })\n } else {\n if (step.messageText) {\n lines.push((step.optional ? '?' : '') + (step.not ? '!' : '') + step.messageText)\n } else {\n if (step.optional) {\n lines.push('?')\n }\n }\n if (step.buttons && step.buttons.length > 0) lines.push('BUTTONS' + _formatAppendArgs(step.buttons.filter(b => b.text).map(b => flatString(b.text))))\n if (step.media && step.media.length > 0) lines.push('MEDIA' + _formatAppendArgs(step.media.filter(m => !m.buffer && m.mediaUri).map(m => m.mediaUri)))\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' + _formatAppendArgs(cardTexts.map(c => flatString(c))))\n\n if (c.buttons && c.buttons.length > 0) lines.push('BUTTONS' + _formatAppendArgs(c.buttons.filter(b => b.text).map(b => flatString(b.text))))\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 + _formatAppendArgs(asserter.args))\n })\n step.logicHooks && step.logicHooks.forEach((logicHook) => {\n lines.push(logicHook.name + _formatAppendArgs(logicHook.args))\n })\n }\n return lines\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 }\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\nconst calculateWer = (str, pattern) => {\n const _prepareString = (str, remWildcard = false) => {\n if (remWildcard) return str.replace(/[.,/#!$%^&;:*{}=\\-_`~()]/g, '').toLowerCase()\n return str.replace(/[.,/#!$%^&;:{}=\\-_`~()]/g, '').toLowerCase()\n }\n\n const _getSubsets = (array, size) => {\n const subsets = []\n for (const index in array) {\n const end = parseInt(index) + size\n if (end <= array.length) { subsets.push(array.slice(index, end)) }\n }\n return subsets\n }\n\n const _getWords = str => str.split(' ').map(w => w.trim())\n\n const _getErrors = (words1, words2) => words1.map((w, i) => {\n return w !== words2[i]\n })\n\n const utterance = pattern\n\n const botMessage = _prepareString(str)\n const botMessageWords = botMessage.split(' ').map(bm => bm.trim())\n const utt = _prepareString(utterance)\n\n // if no wildcards, just calculate WER\n if (utt.indexOf('*') === -1) return speechScorer.wordErrorRate(botMessage, utt).toFixed(2)\n\n // if there are wildcards, calculate WER for each wildcard part\n const errors = []\n for (let wildcardPart of utt.split('*')) {\n let wer = 1\n wildcardPart = wildcardPart.trim()\n if (wildcardPart.length === 0) {\n errors.push([false])\n continue\n }\n const wordCount = wildcardPart.split(' ').length\n const subsetPhrases = _getSubsets(botMessageWords, Math.min(wordCount, botMessageWords.length)).map(subset => subset.join(' '))\n let subsetPhraseFound = null\n for (const subsetPhrase of subsetPhrases) {\n const localWer = speechScorer.wordErrorRate(subsetPhrase, wildcardPart).toFixed(2)\n if (localWer <= wer) {\n subsetPhraseFound = subsetPhrase\n wer = localWer\n }\n }\n if (_.isNil(subsetPhraseFound)) {\n throw new Error('Word Error Asserter: When using wild cards, please make sure that the length of the asserter text is smaller than the bot message!')\n }\n errors.push(_getErrors(_getWords(wildcardPart), _getWords(subsetPhraseFound)))\n }\n let errCount = 0\n let allCount = 0\n for (const err of errors) {\n errCount += err.filter(err => err === true).length\n allCount += err.length\n }\n debug(`Word Error Rate Asserter - Compared Bot Message '${botMessage}' / '${utt}': ${(errCount / allCount).toFixed(2)}`)\n return (errCount / allCount).toFixed(2)\n}\n\nconst toPercent = (s) => `${(s * 100).toFixed(0)}%`\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 calculateWer,\n toPercent,\n trimExceptSpaceEnd\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 hasError ({ type, source }) {\n if (this.context) {\n const errArr = _.isArray(this.context) ? this.context : [this.context]\n for (const err of errArr) {\n if (err.type === 'list') {\n for (const internal of err.errors) {\n if ((!type || internal.type === type) && (!source || internal.source === source)) {\n return true\n }\n }\n }\n if ((!type || err.type === type) && (!source || err.source === source)) {\n return true\n }\n }\n } else {\n return false\n }\n }\n\n toArray () {\n if (this.context) {\n let result = []\n const errArr = _.isArray(this.context) ? this.context : [this.context]\n for (const err of errArr) {\n if (err.type === 'list') {\n result = result.concat(err.errors)\n } else {\n result.push(err)\n }\n }\n return result\n } else {\n return []\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, context = {}) => {\n if (err instanceof BotiumError) {\n return new BotiumError(message, { ...err.context, ...context }, true)\n } else {\n return new BotiumError(message, { err, ...context }, 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 util = require('util')\nconst debug = require('debug')('botium-core-ScriptingMemory')\nconst randomize = require('randomatic')\nconst { v1: uuidv1 } = require('uuid')\nconst moment = require('moment')\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 $tomorrow: (pattern) => {\n if (pattern) {\n return moment().add(1, 'day').format(pattern)\n }\n return moment().add(1, 'day').toDate().toLocaleDateString()\n },\n $yesterday: (pattern) => {\n if (pattern) {\n return moment().subtract(1, 'day').format(pattern)\n }\n return moment().subtract(1, 'day').toDate().toLocaleDateString()\n },\n\n $date_add: (amount, unit, pattern) => {\n if (pattern) {\n return moment().add(amount, unit).format(pattern)\n }\n return moment().add(amount, unit).toDate().toLocaleDateString()\n },\n $date_subtract: (amount, unit, pattern) => {\n if (pattern) {\n return moment().subtract(amount, unit).format(pattern)\n }\n return moment().subtract(amount, unit).toDate().toLocaleDateString()\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\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 let args = [arg]\n if (SCRIPTING_FUNCTIONS[key].numberOfArguments > 1) {\n args = arg.split(',')\n }\n args = args.map(arg => {\n arg = arg.trim()\n if (arg.startsWith('\"') && arg.endsWith('\"')) {\n return arg.substring(1, arg.length - 1)\n } else {\n return arg\n }\n })\n args = args.map(arg => {\n const argStr = `${arg}`\n if (argStr.startsWith('$')) {\n return scriptingMemory[argStr.substring(1)] || arg\n }\n return arg\n })\n str = str.replace(match, SCRIPTING_FUNCTIONS[key].handler(caps, ...args, 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(' ') : '') +\n (this.logicHooks && this.logicHooks.length > 0 ? ' ' + this.logicHooks.map(l => l.toString()).join(' ') : '') +\n (this.userInputs && this.userInputs.length > 0 ? ' ' + this.userInputs.map(u => u.toString()).join(' ') : '')\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 {\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 })\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 })\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 })\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 transcript.steps = transcriptSteps\n try {\n let lastMeConvoStep = null\n let botMsg = null\n let waitForBotSays = true\n let skipTranscriptStep = false\n let conditionalGroupId = null\n let conditionMetInGroup = false\n let skipOptionalStep = false\n // If there are optional step(s) in the conversation, and the message from the bot fails on each optional bot step(s) and/or mandatory bot step, then we have an unexpected message.\n // So in this case an unexpected error should be shown instead of the latest assertion error.\n let optionalStepAssertionError = false\n let globalConvoStepParameters = container.caps[Capabilities.SCRIPTING_CONVO_STEP_PARAMETERS] || {}\n let retryBotMessageTimeoutEnd = null\n let retryBotMessageConvoId = null\n let retryBotMessageDropBotResponse = false\n for (let i = 0; i < this.conversation.length; i = (retryBotMessageDropBotResponse ? i : i + 1)) {\n retryBotMessageDropBotResponse = false\n const convoStep = this.conversation[i]\n if (!convoStep.optional) {\n skipOptionalStep = false\n }\n if (convoStep.optional && skipOptionalStep) {\n // If there are multiple optional steps, and the previous optional step was timeout, then the next optional step should be skipped to prevent too long convo run with multiple timeout.\n continue\n }\n const rawConvoStepParameters = convoStep.logicHooks.find(lh => lh.name === 'CONVO_STEP_PARAMETERS')?.args\n let convoStepParameters = {}\n if (rawConvoStepParameters && rawConvoStepParameters.length) {\n let params\n if (rawConvoStepParameters[0].trim().startsWith('{')) {\n try {\n params = JSON.parse(rawConvoStepParameters[0])\n } catch (e) {\n debug(`${this.header.name}/${convoStep.stepTag}: Failed to parse convo step parameters from JSON ${rawConvoStepParameters[0]}`)\n }\n }\n if (!params || !Object.keys(params).length) {\n params = {}\n for (const param of rawConvoStepParameters) {\n const semicolon = param.indexOf(':')\n if (semicolon) {\n try {\n const name = param.substring(0, semicolon)\n const value = param.substring(semicolon + 1)\n params[name] = value\n } catch (e) {\n debug(`${this.header.name}/${convoStep.stepTag}: Failed to parse convo step parameter from arg ${param}`)\n }\n }\n }\n }\n\n if (convoStep.sender === 'begin') {\n globalConvoStepParameters = Object.assign({}, globalConvoStepParameters || {}, params)\n } else {\n convoStepParameters = Object.assign({}, globalConvoStepParameters || {}, params)\n }\n } else {\n if (convoStep.sender !== 'begin') {\n convoStepParameters = globalConvoStepParameters\n }\n }\n\n if (Object.keys(convoStepParameters).length) {\n debug(`${this.header.name}: using convo step parameters ${JSON.stringify(convoStepParameters)}`)\n }\n\n const currentStepIndex = i\n container.eventEmitter.emit(Events.CONVO_STEP_NEXT, container, convoStep, 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[Capabilities.SIMULATE_WRITING_SPEED] && meMsg.messageText && meMsg.messageText.length) {\n setTimeout(() => resolve(), container.caps[Capabilities.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 (this.scriptingEvents.executeBotStep) {\n const executeBotStepResult = await this.scriptingEvents.executeBotStep({ convo: this, convoStep, container, scriptingMemory, transcript, transcriptStep, transcriptSteps })\n if (executeBotStepResult) {\n skipTranscriptStep = true\n continue\n }\n }\n\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, convoStepParameters?.stepTimeout)\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 if (!(err.message.indexOf('Bot did not respond within') < 0) && convoStep.optional) {\n skipOptionalStep = true\n continue\n }\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 (convoStep.conditional) {\n waitForBotSays = false\n let endOfConditionalGroup = false\n conditionalGroupId = convoStep.logicHooks.find(lh => lh.name.startsWith('CONDITIONAL_STEP')).args[1]\n const nextConvoStep = this.conversation[i + 1]\n\n if (!nextConvoStep || nextConvoStep.sender !== 'bot' || !nextConvoStep.logicHooks || !nextConvoStep.logicHooks.some(lh => lh.name.toUpperCase().startsWith('CONDITIONAL_STEP'))) {\n endOfConditionalGroup = true\n } else {\n const nextConditionalLogicHook = nextConvoStep.logicHooks.find(lh => lh.name.startsWith('CONDITIONAL_STEP'))\n endOfConditionalGroup = conditionalGroupId !== nextConditionalLogicHook.args[1]\n }\n\n if (convoStep.conditional.skip || conditionMetInGroup) {\n skipTranscriptStep = true\n if (endOfConditionalGroup && !conditionMetInGroup && !convoStep.optional) {\n const failErr = new BotiumError(`${this.header.name}/${convoStep.stepTag}: Non of the conditions are met in ${conditionalGroupId ? `'${conditionalGroupId}' ` : ''}condition group`)\n debug(failErr)\n throw failErr\n }\n if (endOfConditionalGroup) {\n waitForBotSays = !convoStep.optional\n conditionalGroupId = undefined\n conditionMetInGroup = false\n }\n continue\n } else {\n conditionMetInGroup = true\n if (endOfConditionalGroup) {\n waitForBotSays = !convoStep.optional\n conditionalGroupId = undefined\n conditionMetInGroup = false\n }\n }\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 const retryConfig = convoStepParameters?.ignoreNotMatchedBotResponses\n const retryOn = convoStep.sender === 'bot' && retryConfig && retryConfig.timeout && retryConfig.mainAsserter\n if (convoStep.optional && nextConvoStep && nextConvoStep.sender === 'bot') {\n if (retryOn) {\n debug(`${this.header.name}/${convoStep.stepTag}: Retry failed asserter is ignored on optional convo`)\n }\n waitForBotSays = false\n skipTranscriptStep = true\n optionalStepAssertionError = true\n return true\n } else if (retryOn) {\n if (!retryBotMessageTimeoutEnd || retryBotMessageConvoId !== convoStep.stepTag) {\n retryBotMessageTimeoutEnd = transcriptStep.stepBegin.getTime() + +retryConfig.timeout\n retryBotMessageConvoId = convoStep.stepTag\n }\n\n const now = new Date().getTime()\n const timeoutRemaining = retryBotMessageTimeoutEnd - now\n if (timeoutRemaining > 0) {\n debug(`${this.header.name}/${convoStep.stepTag}: Convo step retry on, timeout remaining: ${timeoutRemaining}, error: \"${err.message}\"`)\n retryBotMessageDropBotResponse = true\n return false\n } else {\n debug(`${this.header.name}/${convoStep.stepTag}: Convo step retry on, but timeout is over. error: \"${err.message}\"`)\n }\n }\n\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n if (optionalStepAssertionError) {\n optionalStepAssertionError = false\n assertErrors.push(new BotiumError(`${this.header.name}: Unexpected message.`))\n } else {\n assertErrors.push(err)\n }\n return false\n } else {\n if (optionalStepAssertionError) {\n optionalStepAssertionError = false\n throw new BotiumError(`${this.header.name}: Unexpected message.`)\n }\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, convoStepParameters)\n optionalStepAssertionError = false\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, convoStepParameters)\n optionalStepAssertionError = false\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, convoStepParameters)\n optionalStepAssertionError = false\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, transcriptSteps })\n await this.scriptingEvents.onBotEnd({ convo: this, convoStep, container, scriptingMemory, botMsg, transcript, transcriptStep })\n optionalStepAssertionError = false\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 optionalStepAssertionError = true\n continue\n }\n\n const errors = err.toArray ? err.toArray() : []\n const retryConfig = convoStepParameters?.ignoreNotMatchedBotResponses\n const retryOn =\n convoStep.sender === 'bot' &&\n retryConfig &&\n retryConfig.timeout &&\n errors.length &&\n errors.filter(({ type, source, asserter }) => type === 'asserter' && (retryConfig.allAsserters || (retryConfig.asserters && retryConfig.asserters.includes(asserter)))).length\n if (retryOn && (!retryBotMessageTimeoutEnd || retryBotMessageConvoId !== convoStep.stepTag)) {\n retryBotMessageTimeoutEnd = transcriptStep.stepBegin.getTime() + +retryConfig.timeout\n retryBotMessageConvoId = convoStep.stepTag\n }\n\n const now = new Date().getTime()\n const timeoutRemaining = retryOn && (retryBotMessageTimeoutEnd - now)\n if (retryOn && timeoutRemaining > 0) {\n debug(`${this.header.name}/${convoStep.stepTag}: Convo step retry on, timeout remaining: ${timeoutRemaining}, error: \"${err.message}\"`)\n retryBotMessageDropBotResponse = true\n } else {\n if (retryOn && timeoutRemaining <= 0) {\n debug(`${this.header.name}/${convoStep.stepTag}: Convo step retry on, but timeout is over. error: \"${err.message}\"`)\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 if (optionalStepAssertionError) {\n optionalStepAssertionError = false\n assertErrors.push(new BotiumError(`${this.header.name}: Unexpected message.`))\n } else {\n assertErrors.push(err)\n }\n } else {\n if (optionalStepAssertionError) {\n optionalStepAssertionError = false\n throw new BotiumError(`${this.header.name}: Unexpected message.`)\n }\n throw failErr\n }\n }\n }\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n if (assertErrors.length > 0) {\n // this has no effect, but logically it has to be false\n retryBotMessageDropBotResponse = false\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.filter(err => err !== transcript.err), transcript.err].filter(e => e), {})\n }\n }\n }\n }\n\n _compareObject (container, scriptingMemory, convoStep, result, expected, botMsg, convoStepParameters) {\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], null, convoStepParameters)\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], null, convoStepParameters)\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}`, null, convoStepParameters)\n }\n }\n\n GetScriptingMemoryAllVariables (container) {\n const partialConvos = this.context.GetPartialConvos()\n\n const variableNames = this.conversation.reduce((acc, convoStep) => {\n if (convoStep.sender === 'include') {\n if (convoStep.channel) {\n const partialConvo = partialConvos[convoStep.channel]\n if (partialConvo) {\n acc = [...acc, ...partialConvo.GetScriptingMemoryAllVariables(container)]\n }\n }\n if (convoStep.messageText) {\n for (const partialConvoName of splitStringInNonEmptyLines(convoStep.messageText)) {\n const partialConvo = partialConvos[partialConvoName]\n if (partialConvo) {\n acc = [...acc, ...partialConvo.GetScriptingMemoryAllVariables(container)]\n }\n }\n }\n } else {\n acc = [...acc, ...this.GetScriptingMemoryVariables(container, convoStep.messageText)]\n\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 acc = [...acc, ...__extractFromArgs(convoStep.asserters)]\n acc = [...acc, ...__extractFromArgs(convoStep.logicHooks)]\n acc = [...acc, ...__extractFromArgs(convoStep.userInputs)]\n\n convoStep.logicHooks.forEach((logicHook) => {\n if (logicHook.name === LOGIC_HOOK_INCLUDE) {\n const partialConvo = partialConvos[logicHook.args[0]]\n if (partialConvo) {\n acc = [...acc, ...partialConvo.GetScriptingMemoryAllVariables(container)]\n }\n }\n })\n }\n return acc\n }, [])\n\n return _.uniq(variableNames)\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[Capabilities.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)\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.exports = {\n Convo,\n ConvoHeader,\n ConvoStep,\n ConvoStepAssert,\n ConvoStepLogicHook,\n ConvoStepUserInput,\n Transcript,\n TranscriptAttachment,\n TranscriptStep,\n TranscriptError\n}\n","const util = require('util')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-core-RetryHelper')\n\nmodule.exports = class RetryHelper {\n constructor (caps, section, options = {}) {\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 // to turn on retries, NUMRETRIES or ONERROR_REGEXP has to be set\n this.retrySettings = {\n retries: caps[`RETRY_${section.toUpperCase()}_NUMRETRIES`] || (!_.isNil(options.numRetries) ? options.numRetries : (this.retryErrorPatterns.length === 0) ? 0 : 1),\n factor: caps[`RETRY_${section.toUpperCase()}_FACTOR`] || (_.isNil(options.factor) ? 1 : options.factor),\n minTimeout: caps[`RETRY_${section.toUpperCase()}_MINTIMEOUT`] || (_.isNil(options.minTimeout) ? 1000 : options.minTimeout)\n }\n if (this.retrySettings.retries > 0) {\n debug(`Retry for ${section} is enabled. Settings: ${JSON.stringify(this.retrySettings)} Patterns: ${JSON.stringify(this.retryErrorPatterns.map(r => r.toString()))}`)\n }\n }\n\n shouldRetry (err, currentRetryCount) {\n if (!err) return false\n if (!this.retrySettings.retries) return false\n if (this.retrySettings.retries < currentRetryCount) return false\n if (this.retryErrorPatterns.length === 0) return true\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')\nconst debug = require('debug')('botium-core-MatchFunctions')\n\nconst { toString, quoteRegexpString, calculateWer } = require('./helper')\n\nconst _normalize = (botresponse, args, convoStepParameters) => {\n if (!convoStepParameters) {\n debug('Convo step parameters might be missing!')\n }\n if (_.isUndefined(botresponse) || _.isNil(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, args, convoStepParameters) => {\n if (!convoStepParameters) {\n debug('Convo step parameters might be missing!')\n }\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, args, convoStepParameters) => {\n if (!convoStepParameters) {\n debug('Convo step parameters might be missing!')\n }\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, args, convoStepParameters) => {\n if (!convoStepParameters) {\n debug('Convo step parameters might be missing!')\n }\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, args, convoStepParameters) => {\n if (!convoStepParameters) {\n debug('Convo step parameters might be missing!')\n }\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, args, convoStepParameters) => {\n if (!convoStepParameters) {\n debug('Convo step parameters might be missing!')\n }\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 wer = () => (botresponse, utterance, args, convoStepParameters) => {\n if (!convoStepParameters) {\n debug('Convo step parameters might be missing!')\n }\n botresponse = _normalize(botresponse || '')\n utterance = toString(utterance || '')\n\n const threshold = !_.isNil(convoStepParameters?.matchingModeWer) ? (convoStepParameters?.matchingModeWer / 100) : ([',', '.'].find(p => `${args[0]}`.includes(p)) ? parseFloat(args[0]) : parseInt(args[0]) / 100)\n return calculateWer(botresponse, utterance) <= threshold\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 if (matchingMode === 'wer') {\n return wer()\n } else {\n return equals(false)\n }\n}\n\nmodule.exports = {\n regexp,\n wildcard,\n wildcardExact,\n include,\n equals,\n wer,\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 } : { '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 _ = require('lodash')\nconst debug = require('debug')('botium-core-HookUtils')\n\nconst Capabilities = require('../Capabilities')\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 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 if (caps.SAFEDIR) {\n const tryLoadFile = path.resolve(caps.SAFEDIR, data)\n if (tryLoadFile.startsWith(path.resolve(caps.SAFEDIR))) {\n if (fs.existsSync(tryLoadFile)) {\n try {\n const resultWithRequire = require(tryLoadFile)\n if (_.isFunction(resultWithRequire)) {\n debug(`found hook, type: safedir, in ${tryLoadFile}`)\n return resultWithRequire\n } else {\n throw new Error(`Expected function from hook specification \"${util.inspect(data)}\", got: \"${util.inspect(resultWithRequire)}\"`)\n }\n } catch (err) {\n debug(`Failed loading hook, type: safedir, from ${tryLoadFile} failed: ${err.message || err}`)\n }\n }\n }\n }\n if (allowUnsafe || data.startsWith('botium-')) {\n const tryLoadFile = data\n try {\n const resultWithRequire = require(tryLoadFile)\n if (_.isFunction(resultWithRequire)) {\n debug(`found hook, type: require, in ${tryLoadFile}`)\n return resultWithRequire\n } else {\n throw new Error(`Expected function from hook specification \"${util.inspect(data)}\", got: \"${util.inspect(resultWithRequire)}\"`)\n }\n } catch (err) {\n debug(`Failed loading hook, type: require, from ${tryLoadFile} failed: ${err.message || err}`)\n }\n }\n }\n throw new Error(`Hook specification \"${util.inspect(data)}\" invalid: no loader available`)\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 // it is not used anymore?\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 })\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 })\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, trimExceptSpaceEnd } = require('./helper')\n\nmodule.exports = class CompilerTxt extends CompilerBase {\n constructor (context, caps = {}) {\n super(context, caps)\n\n this.eolRead = caps[Capabilities.SCRIPTING_TXT_EOL] || /\\r\\n|\\r|\\n/\n this.eolWrite = (caps[Capabilities.SCRIPTING_TXT_EOL] && !_.isRegExp(caps[Capabilities.SCRIPTING_TXT_EOL])) ? caps[Capabilities.SCRIPTING_TXT_EOL] : '\\n'\n }\n\n Validate () {\n super.Validate()\n }\n\n GetHeaders (scriptBuffer) {\n let scriptData = scriptBuffer\n if (Buffer.isBuffer(scriptBuffer)) scriptData = scriptData.toString()\n\n const lines = scriptData.split(this.eolRead)\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 = scriptData.split(this.eolRead)\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)\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.eolWrite)\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 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].trim(), utterances: lines.length > 1 ? lines.slice(1).map(line => trimExceptSpaceEnd(line)) : [] })]\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.eolWrite\n }\n if (convo.header.description) {\n script += convo.header.description + this.eolWrite\n }\n\n convo.conversation.forEach((step) => {\n script += this.eolWrite\n\n script += '#' + step.sender\n if (step.channel && step.channel !== 'default') {\n script += ' ' + step.channel\n }\n script += this.eolWrite\n\n const stepLines = convoStepToLines(step)\n if (stepLines && stepLines.length > 0) script += stepLines.join(this.eolWrite) + this.eolWrite\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 const legacyModeOn = !this._GetOptionalCapability(Capabilities.SCRIPTING_CSV_LEGACY_MODE_OFF, false)\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 relax_column_count: true\n })\n } catch (err) {\n throw new Error(`Invalid CSV: ${err.message || err}`)\n }\n if (rows.length === 0) {\n return []\n }\n const columnCount = rows[0].length\n debug(`Legacy mode ${legacyModeOn ? 'on' : 'off'} rows ${rows.length} columns ${columnCount}`)\n\n if ((scriptType === Constants.SCRIPTING_TYPE_CONVO || scriptType === Constants.SCRIPTING_TYPE_PCONVO)) {\n if (columnCount === 1 || (!legacyModeOn && columnCount > 3)) {\n debug(`Invalid column count '${columnCount}' in convo mode`)\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 debug('Datarows not found in convo mode')\n return []\n }\n\n const lineNumberBase = this.caps[Capabilities.SCRIPTING_CSV_SKIP_HEADER] ? 2 : 1\n if (columnCount === 2) {\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 debug(`Found 2-column CSV file, treating it as question/answer file, extracted ${convos.length} convos`)\n return convos\n }\n\n if (columnCount >= 3) {\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 debug(`Found 3-column CSV file, treating it as multi-row conversation file, extracted ${convos.length} convos`)\n return convos\n }\n } else if (scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n if (columnCount === 2 || columnCount === 3 || (legacyModeOn && columnCount > 4)) {\n debug(`Invalid column count '${columnCount}' in utterances mode`)\n return []\n }\n const result = []\n const startRow = this._GetOptionalCapability(Capabilities.SCRIPTING_CSV_UTTERANCE_STARTROW, 2) - 1\n const startRowHeader = this._GetOptionalCapability(Capabilities.SCRIPTING_CSV_UTTERANCE_STARTROW_HEADER)\n const stopOnEmpty = this._GetOptionalCapability(Capabilities.SCRIPTING_CSV_UTTERANCE_STOP_ON_EMPTY)\n\n for (let col = 0; col < columnCount; col++) {\n const name = rows[0][col]\n if (!name || name.trim().length === 0) {\n debug(`Column ${col + 1} has no header, skipping`)\n continue\n }\n\n const uttStruct = {\n name,\n utterances: []\n }\n let skip = !!startRowHeader\n const getData = (row) => {\n return rows[row][col] ? rows[row][col].trim() : false\n }\n //\n for (let row = startRow; row < rows.length && (skip || !stopOnEmpty || !!getData(row)); row++) { // eslint-disable-line no-unmodified-loop-condition\n const data = getData(row)\n if (!data) {\n continue\n }\n if (!skip) {\n uttStruct.utterances.push(data)\n } else {\n if (startRowHeader === rows[row][col]) {\n skip = false\n }\n }\n }\n if (uttStruct.utterances.length === 0) {\n // liveperson, skipping meta intents\n debug(`Column ${col + 1} has no utterances, skipping`)\n continue\n }\n result.push(uttStruct)\n }\n\n debug(`Multi-column utterance file, extracted ${result.length} utterances`)\n this.context.AddUtterances(result)\n return result\n } else {\n return []\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\n Validate () {\n super.Validate()\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)\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 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\n Validate () {\n super.Validate()\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.length > 0 ? ' ' + child.children.map(child => child.content).join('|') : '')\n ), sender, this.context)\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')\nconst { calculateWer, toPercent } = require('./helper')\n\nconst globPattern = '**/+(*.convo.txt|*.utterances.txt|*.pconvo.txt|*.scriptingmemory.txt|*.xlsx|*.xlsm|*.convo.csv|*.pconvo.csv|*.utterances.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, number)) {\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, number)) {\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.globalAsserters = {}\n this.logicHooks = {}\n this.globalLogicHooks = {}\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 executeBotStep: ({ convo, convoStep, container, scriptingMemory, ...rest }) => {\n const logicHooks = (convoStep?.logicHooks || [])\n const executeBotStepHooks = logicHooks.filter(l => this.logicHooks[l.name] && typeof this.logicHooks[l.name].executeBotStep === 'function')\n if (executeBotStepHooks.length > 1) {\n throw new Error(`${convo?.header?.name}/${convoStep?.stepTag}: Multiple logic hooks implement executeBotStep: ${executeBotStepHooks.map(l => l.name).join(', ')}. Only one is allowed per step.`)\n }\n if (executeBotStepHooks.length === 1) {\n const lh = executeBotStepHooks[0]\n return this.logicHooks[lh.name].executeBotStep({\n convo,\n convoStep,\n scriptingMemory,\n container,\n args: ScriptingMemory.applyToArgs(lh.args, scriptingMemory, container.caps),\n ...rest\n })\n }\n return null\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, convoStepParameters = {}) => {\n if (!_.isArray(tomatch)) {\n tomatch = [tomatch]\n }\n debug(`assertBotResponse ${stepTag} ${meMsg ? `(${meMsg}) ` : ''}BOT: ${botresponse} = ${tomatch} ...`)\n const matchFn = convoStepParameters.matchingMode ? (getMatchFunction(convoStepParameters.matchingMode) || this.matchFn) : this.matchFn\n const found = _.find(tomatch, (utt) => matchFn(botresponse, utt, this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS], convoStepParameters))\n const asserterType = this.caps[Capabilities.SCRIPTING_MATCHING_MODE] === 'wer' ? 'Word Error Rate Asserter' : 'Text Match Asserter'\n if (_.isNil(found)) {\n const matchingMode = convoStepParameters.matchingMode || this.caps[Capabilities.SCRIPTING_MATCHING_MODE]\n if (matchingMode === 'wer') {\n const wer = calculateWer(botresponse, tomatch[0])\n const werArgs = this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS]\n const threshold = !_.isNil(convoStepParameters.matchingModeWer) ? (convoStepParameters.matchingModeWer / 100) : ([',', '.'].find(p => `${werArgs[0]}`.includes(p)) ? parseFloat(werArgs[0]) : parseInt(werArgs[0]) / 100)\n const message = `${stepTag}: Word Error Rate (${toPercent(wer)}) higher than accepted (${toPercent(threshold)})`\n throw new BotiumError(\n message,\n {\n type: 'asserter',\n source: asserterType,\n params: {\n matchingMode,\n args: this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS] || null\n },\n context: {\n stepTag\n },\n cause: {\n expected: `<=${toPercent(threshold)} (${tomatch})`,\n actual: `${toPercent(wer)} (${botresponse})`\n }\n }\n )\n } else {\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: asserterType,\n params: {\n matchingMode: this.caps[Capabilities.SCRIPTING_MATCHING_MODE],\n args: this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS] || null\n },\n context: {\n stepTag\n },\n cause: {\n expected: tomatch,\n actual: botresponse,\n matchingMode: this.caps[Capabilities.SCRIPTING_MATCHING_MODE],\n args: this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS] || null\n }\n }\n )\n }\n }\n },\n assertBotNotResponse: (botresponse, nottomatch, stepTag, meMsg, convoStepParameters = {}) => {\n if (!_.isArray(nottomatch)) {\n nottomatch = [nottomatch]\n }\n debug(`assertBotNotResponse ${stepTag} ${meMsg ? `(${meMsg}) ` : ''}BOT: ${botresponse} != ${nottomatch} ...`)\n const matchFn = convoStepParameters.matchingMode ? (getMatchFunction(convoStepParameters.matchingMode) || this.matchFn) : this.matchFn\n const found = _.find(nottomatch, (utt) => matchFn(botresponse, utt, this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS], convoStepParameters))\n const asserterType = this.caps[Capabilities.SCRIPTING_MATCHING_MODE] === 'wer' ? 'Word Error Rate Asserter' : 'Text Match Asserter'\n if (!_.isNil(found)) {\n const matchingMode = convoStepParameters.matchingMode || this.caps[Capabilities.SCRIPTING_MATCHING_MODE]\n if (matchingMode === 'wer') {\n const wer = calculateWer(botresponse, nottomatch[0])\n const werArgs = this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS]\n const threshold = !_.isNil(convoStepParameters.matchingModeWer) ? (convoStepParameters.matchingModeWer / 100) : ([',', '.'].find(p => `${werArgs[0]}`.includes(p)) ? parseFloat(werArgs[0]) : parseInt(werArgs[0]) / 100)\n const message = `${stepTag}: Word Error Rate (${toPercent(wer)}) lower than accepted (${toPercent(threshold)})`\n throw new BotiumError(\n message,\n {\n type: 'asserter',\n source: asserterType,\n params: {\n matchingMode,\n args: this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS] || null\n },\n context: {\n stepTag\n },\n cause: {\n expected: `>=${toPercent(threshold)} (${nottomatch})`,\n actual: `${toPercent(wer)} (${botresponse})`\n }\n }\n )\n } else {\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: asserterType,\n params: {\n matchingMode: this.caps[Capabilities.SCRIPTING_MATCHING_MODE],\n args: this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS] || null\n },\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 args: this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS] || null\n }\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, container, ...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 updateExceptionContext = (promise, asserter) => {\n const updateError = (err) => {\n if (err instanceof BotiumError) {\n if (!err.context) {\n err.context = {}\n }\n\n err.context.asserter = asserter.name\n\n throw err\n } else {\n throw botiumErrorFromErr(_.isString(err) ? err : err.message, err, { asserter: asserter.name })\n }\n }\n return promise.catch(err => updateError(err))\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 localAsserters = (asserters || []).filter(a => this.asserters[a.name][asserterType])\n\n const convoStepPromises = localAsserters\n .map(a => ({\n asserter: a,\n promise: callAsserter(a, this.asserters[a.name], {\n convo,\n convoStep,\n scriptingMemory,\n container,\n args: ScriptingMemory.applyToArgs(a.args, scriptingMemory, container.caps, rest.botMsg),\n isGlobal: false,\n ...rest\n })\n }))\n .map(({ promise, asserter }) => updateExceptionContext(promise, asserter))\n\n const globalAsserters = Object.keys(this.globalAsserters)\n .filter(name => localAsserters.map(a => a.name).indexOf(name) < 0)\n .reduce((agg, name) => [...agg, this.globalAsserters[name]], [])\n .filter(a => a[asserterType])\n\n const globalPromises = globalAsserters\n .map(a => ({\n asserter: a,\n promise: p(this.retryHelperAsserter, () => a[asserterType]({\n convo,\n convoStep,\n scriptingMemory,\n container,\n args: [],\n isGlobal: true,\n ...rest\n }))\n }))\n .map(({ promise, asserter }) => updateExceptionContext(promise, asserter))\n\n const allPromises = [...convoStepPromises, ...globalPromises]\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, container, ...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 let localHooks = (logicHooks || []).filter(l => this.logicHooks[l.name][hookType])\n // Scripting memory file are injected via SET_SCRIPTING_MEMORY in the BEGIN step\n // But there might be other logic hooks that need the scripting memory variables\n // Order is important (SET_SCRIPTING_MEMORY in begin can be because the user added it,\n // or because the scripting memory file added it. User one has to be the last one.\n localHooks = [\n ...localHooks.filter(l => l.name === 'SET_SCRIPTING_MEMORY'),\n ...localHooks.filter(l => l.name !== 'SET_SCRIPTING_MEMORY')\n ]\n\n const convoStepPromises = localHooks\n .map(l => p(this.retryHelperLogicHook, () => this.logicHooks[l.name][hookType]({\n convo,\n convoStep,\n scriptingMemory,\n container,\n // Do this more sensitve for SET_SCRIPTING_MEMORY? It can have scripting variables in the args\n args: ScriptingMemory.applyToArgs(l.args, scriptingMemory, container.caps, rest.botMsg),\n isGlobal: false,\n ...rest\n })))\n\n const globalHooks = Object.keys(this.globalLogicHooks)\n .filter(name => localHooks.map(l => l.name).indexOf(name) < 0)\n .reduce((agg, name) => [...agg, this.globalLogicHooks[name]], [])\n .filter(l => l[hookType])\n const globalPromises = globalHooks.map(l => p(this.retryHelperLogicHook, () => l[hookType]({ convo, convoStep, scriptingMemory, container, args: [], isGlobal: true, ...rest })))\n\n const allPromises = [...convoStepPromises, ...globalPromises]\n\n if (allPromises.length > 0) {\n return Promise.all(allPromises).then(() => {\n return {\n // just returning some humanreadable\n hooks: [...localHooks, ...globalHooks].map(h => h.name || h.context?.ref || JSON.stringify(h))\n }\n })\n }\n return Promise.resolve(false)\n }\n\n _createUserInputPromises ({ convo, convoStep, scriptingMemory, container, ...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 container,\n args: ScriptingMemory.applyToArgs(ui.args, scriptingMemory, container.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 executeBotStep: this.scriptingEvents.executeBotStep.bind(this),\n setUserInput: this.scriptingEvents.setUserInput.bind(this),\n fail: this.scriptingEvents.fail && this.scriptingEvents.fail.bind(this)\n }\n }\n }\n\n // Livechat, and crawler using logichooks too. So they need script context\n BuildScriptContext () {\n return this._buildScriptContext()\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.globalAsserters = logicHookUtils.getGlobalAsserters()\n this.logicHooks = logicHookUtils.logicHooks\n this.globalLogicHooks = logicHookUtils.getGlobalLogicHooks()\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, this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS])\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('.pconvo.csv')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_CSV, Constants.SCRIPTING_TYPE_PCONVO)\n } else if (filename.endsWith('.utterance.csv')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_CSV, Constants.SCRIPTING_TYPE_UTTERANCES)\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, incomprehensionIntents, incomprehensionUtts, incomprehensionUtt } = {}) {\n const expandedConvos = []\n\n if (_.isUndefined(useNameAsIntent)) {\n useNameAsIntent = !!this.caps[Capabilities.SCRIPTING_UTTEXPANSION_USENAMEASINTENT]\n }\n if (_.isUndefined(incomprehensionIntents)) {\n incomprehensionIntents = this.caps[Capabilities.SCRIPTING_UTTEXPANSION_INCOMPREHENSIONINTENTS]\n }\n if (_.isUndefined(incomprehensionUtts)) {\n incomprehensionUtts = this.caps[Capabilities.SCRIPTING_UTTEXPANSION_INCOMPREHENSIONUTTS]\n }\n if (_.isUndefined(incomprehensionUtt)) {\n incomprehensionUtt = this.caps[Capabilities.SCRIPTING_UTTEXPANSION_INCOMPREHENSION]\n }\n\n if (incomprehensionUtt && (!incomprehensionUtts || incomprehensionUtts.length === 0) && !this.utterances[incomprehensionUtt]) {\n throw new Error(`ExpandUtterancesToConvos - incomprehension utterance '${incomprehensionUtt}' undefined (and no user examples given)`)\n }\n if (incomprehensionUtts && incomprehensionUtts.length > 0) {\n if (!incomprehensionUtt) {\n incomprehensionUtt = 'UTT_INCOMPREHENSION'\n }\n if (this.utterances[incomprehensionUtt]) {\n this.utterances[incomprehensionUtt].utterances.push(...incomprehensionUtts)\n } else {\n this.utterances[incomprehensionUtt] = {\n name: incomprehensionUtt,\n utterances: [...incomprehensionUtts]\n }\n }\n }\n\n if (useNameAsIntent) {\n debug('ExpandUtterancesToConvos - Using utterance name as NLU intent')\n }\n if (incomprehensionIntents && incomprehensionIntents.length > 0) {\n debug(`ExpandUtterancesToConvos - Using ${incomprehensionIntents.length} incomprehension NLU intent(s)`)\n }\n if (incomprehensionUtt) {\n debug(`ExpandUtterancesToConvos - Using incomprehension utterance expansion mode: ${incomprehensionUtt}, ${this.utterances[incomprehensionUtt].utterances.length} user example(s)`)\n }\n\n _.keys(this.utterances).filter(u => u !== incomprehensionUtt).forEach(uttName => {\n const utt = this.utterances[uttName]\n\n const responseStep = {\n sender: 'bot',\n messageText: '',\n asserters: [],\n stepTag: 'Step 2 - check bot response',\n not: false\n }\n if (useNameAsIntent) {\n responseStep.asserters.push({\n name: 'INTENT',\n args: [utt.name]\n })\n }\n if (incomprehensionIntents && incomprehensionIntents.length > 0) {\n incomprehensionIntents.forEach(ii => {\n responseStep.asserters.push({\n name: 'INTENT',\n args: [ii],\n not: true\n })\n })\n }\n if (incomprehensionUtt) {\n responseStep.messageText = incomprehensionUtt\n responseStep.not = true\n }\n\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 responseStep\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 (options = {}) {\n options = Object.assign({\n // use skip and keep, or justHeader\n justHeader: false,\n // drop unwanted convos\n convoFilter: null,\n mediaInput: {\n // MESSAGE_TEXT_FROM_FILENAME or MESSAGE_TEXT_FROM_TRANSCRIPTION or falsy\n messageTextMode: null\n }\n }, options)\n const expandedConvos = []\n // The globalContext is going to keep the data even if the Object.assign which happening to create the myContext in _expandConvo function\n const context = {\n globalContext: {\n totalConvoCount: 0\n }\n }\n debug(`ExpandConvos - Using utterances expansion mode: ${this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE]}`)\n this.convos.forEach((convo) => {\n convo.expandPartialConvos()\n for (const expanded of this._expandConvo(convo, options, context)) {\n expanded.header.assertionCount = this.GetAssertionCount(expanded)\n if (options.justHeader) {\n const ConvoWithOnlyHeader = {\n header: {\n name: expanded.header.name,\n assertionCount: expanded.header.assertionCount\n }\n }\n expandedConvos.push(ConvoWithOnlyHeader)\n } else {\n expandedConvos.push(expanded)\n }\n }\n })\n this.convos = expandedConvos\n this.totalConvoCount = context.globalContext.totalConvoCount\n if (!options.justHeader) {\n this._sortConvos()\n } else {\n this._updateConvos()\n }\n }\n\n ExpandConvosIterable (options = {}) {\n options = Object.assign({\n // drop unwanted convos\n convoFilter: null,\n mediaInput: {\n // MESSAGE_TEXT_FROM_FILENAME or MESSAGE_TEXT_FROM_TRANSCRIPTION or falsy\n messageTextMode: null\n }\n }, options)\n // The globalContext is going to keep the data even if the Object.assign which happening to create the myContext in _expandConvo function\n const context = {\n globalContext: {\n totalConvoCount: 0\n }\n }\n debug(`ExpandConvos - Using utterances expansion mode: ${this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE]}`)\n // creating a nested generator, calling the other.\n // We hope this.convos does not changes while this iterator is used\n const _convosIterable = function * (options) {\n for (const convo of this.convos) {\n convo.expandPartialConvos()\n yield * this._expandConvo(convo, options, context)\n }\n }.bind(this)\n\n this.convosIterable = _convosIterable(options)\n this.totalConvoCount = context.globalContext.totalConvoCount\n }\n\n /**\n * This is a generator function with yield\n * @param currentConvo\n * @param convoStepIndex\n * @param convoStepsStack list of ConvoSteps\n * @private\n */\n * _expandConvo (currentConvo, options, context, 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 yield * this._expandConvo(currentConvo, options, context, 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 const processSampleUtterances = function * (sampleutterances, myContext) {\n for (let index = 0; index < sampleutterances.length; index++) {\n yield * processSampleUtterance(sampleutterances[index], sampleutterances.length, index, Object.assign({ indexExpansionModeIndex: index }, myContext || context))\n }\n }\n const processSampleUtterance = function * (sampleutterance, length, index, myContext) {\n const currentStepsStack = convoStepsStack.slice()\n if (uttArgs) {\n sampleutterance = util.format(sampleutterance, ...uttArgs)\n }\n currentStepsStack.push(Object.assign(_.cloneDeep(currentStep), { messageText: sampleutterance }))\n const currentConvoLabeled = _.cloneDeep(currentConvo)\n if (length > 1) {\n const lineTag = `${index + 1}`.padStart(`${length}`.length, '0')\n Object.assign(currentConvoLabeled.header, { name: `${currentConvo.header.name}/${uttName}-${utterancePostfix(lineTag, sampleutterance)}` })\n }\n if (!currentConvoLabeled.sourceTag) currentConvoLabeled.sourceTag = {}\n if (!currentConvoLabeled.sourceTag.origConvoName) currentConvoLabeled.sourceTag.origConvoName = currentConvo.header.name\n yield * this._expandConvo(currentConvoLabeled, options, myContext || context, convoStepIndex + 1, currentStepsStack)\n }.bind(this)\n if (allutterances.length === 1) {\n yield * processSampleUtterances([allutterances[0]], context)\n } else if (this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE] === 'index') {\n if (_.isNil(context.indexExpansionModeWidth)) {\n // executed for the first found utterance\n yield * processSampleUtterances(allutterances, Object.assign({}, context, { indexExpansionModeWidth: allutterances.length }))\n } else {\n if (_.isNil(context.indexExpansionModeIndex)) {\n throw new Error('indexExpansionModeIndex must be set!')\n }\n // executing the current 'thread', if current utterance has no example to current index, fallback to the last one\n const localIndex = Math.min(context.indexExpansionModeIndex, allutterances.length - 1)\n if (localIndex < context.indexExpansionModeIndex && context.indexExpansionModeIndex === context.indexExpansionModeWidth - 1) {\n debug(`While expanding convos by index found in utterance \"${uttName}\" less examples (${allutterances.length}) as expected (${context.indexExpansionModeWidth})`)\n }\n const myContext = Object.assign({}, context, { indexExpansionModeWidth: Math.max(allutterances.length, context.indexExpansionModeWidth) })\n yield * processSampleUtterance(allutterances[localIndex], allutterances.length, localIndex, myContext)\n if (allutterances.length > context.indexExpansionModeWidth && context.indexExpansionModeIndex + 1 === context.indexExpansionModeWidth) {\n debug(`While expanding convos by index found in utterance \"${uttName}\" more examples (${allutterances.length}) as expected (${context.indexExpansionModeWidth})`)\n for (let i = context.indexExpansionModeWidth; i < allutterances.length; i++) {\n // if we found a utterance with more examples as any utterances before, we have to start new 'thread'\n const myContext = Object.assign({}, context, { indexExpansionModeWidth: allutterances.length, indexExpansionModeIndex: i })\n yield * processSampleUtterance(allutterances[i], allutterances.length, i, myContext)\n }\n }\n }\n } else {\n if (this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE] === 'first') {\n yield * processSampleUtterances([allutterances[0]], context)\n } else if (this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE] === 'random') {\n yield * processSampleUtterances(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]), context)\n } else {\n yield * processSampleUtterances(allutterances, context)\n }\n }\n useUnexpanded = false\n }\n }\n if (currentStep.userInputs && currentStep.userInputs.length > 0) {\n for (let uiIndex = 0; uiIndex < currentStep.userInputs.length; uiIndex++) {\n const ui = currentStep.userInputs[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, options })\n if (expandedUserInputs && expandedUserInputs.length > 0) {\n // let sampleinputs = expandedUserInputs\n const processSampleInputs = function * (sampleinputs, myContext, uiIndex) {\n for (let index = 0; index < sampleinputs.length; index++) {\n yield * processSampleInput(sampleinputs[index], sampleinputs.length, index, Object.assign({ indexExpansionModeIndex: index }, myContext || context), uiIndex)\n }\n }\n const processSampleInput = function * (sampleinput, length, index, myContext, uiIndex) {\n const { messageText, ...userInput } = sampleinput\n const currentStepsStack = convoStepsStack.slice()\n const currentStepMod = _.cloneDeep(currentStep)\n currentStepMod.userInputs[uiIndex] = userInput\n if (messageText) {\n currentStepMod.messageText = messageText\n }\n currentStepsStack.push(currentStepMod)\n const currentConvoLabeled = _.cloneDeep(currentConvo)\n if (length > 1) {\n if (sampleinput.convoPostfix) {\n Object.assign(currentConvoLabeled.header, { name: `${currentConvo.header.name}/${ui.name}-${sampleinput.convoPostfix}` })\n } else {\n const lineTag = `${index + 1}`.padStart(`${length}`.length, '0')\n Object.assign(currentConvoLabeled.header, { name: `${currentConvo.header.name}/${ui.name}-${utterancePostfix(lineTag, (sampleinput.args && sampleinput.args.length) ? sampleinput.args.join(', ') : 'no-args')}` })\n }\n }\n yield * this._expandConvo(currentConvoLabeled, options, myContext || context, convoStepIndex + 1, currentStepsStack)\n }.bind(this)\n if (expandedUserInputs.length === 1) {\n yield * processSampleInputs([expandedUserInputs[0]], context, uiIndex)\n } else if (this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE] === 'index') {\n if (_.isNil(context.indexExpansionModeWidth)) {\n yield * processSampleInputs(expandedUserInputs, Object.assign({}, context, { indexExpansionModeWidth: expandedUserInputs.length }), uiIndex)\n } else {\n if (_.isNil(context.indexExpansionModeIndex)) {\n throw new Error('indexExpansionModeIndex must be set!')\n }\n // executing the current 'thread', if current utterance has no example to current index, fallback to the last one\n const localIndex = Math.min(context.indexExpansionModeIndex, expandedUserInputs.length - 1)\n if (localIndex < context.indexExpansionModeIndex && context.indexExpansionModeIndex === context.indexExpansionModeWidth - 1) {\n debug(`While expanding convos by index found user input \"${ui.name}, ${ui.args}\" less examples (${expandedUserInputs.length}) as expected (${context.indexExpansionModeWidth})`)\n }\n const myContext = Object.assign({}, context, { indexExpansionModeWidth: Math.max(expandedUserInputs.length, context.indexExpansionModeWidth) })\n yield * processSampleInput(expandedUserInputs[localIndex], expandedUserInputs.length, localIndex, myContext, uiIndex)\n if (expandedUserInputs.length > context.indexExpansionModeWidth && context.indexExpansionModeIndex + 1 === context.indexExpansionModeWidth) {\n debug(`While expanding convos by index found user input \"${ui.name}, ${ui.args}\" more examples (${expandedUserInputs.length}) as expected (${context.indexExpansionModeWidth})`)\n for (let i = context.indexExpansionModeWidth; i < expandedUserInputs.length; i++) {\n const myContext = Object.assign({}, context, { indexExpansionModeWidth: expandedUserInputs.length, indexExpansionModeIndex: i })\n yield * processSampleInput(expandedUserInputs[i], expandedUserInputs.length, i, myContext, uiIndex)\n }\n }\n }\n } else {\n if (this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE] === 'first') {\n yield * processSampleInputs([expandedUserInputs[0]], context, uiIndex)\n } else if (this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE] === 'random') {\n yield * processSampleInputs(expandedUserInputs\n .map(x => ({\n x,\n r: Math.random()\n }))\n .sort((a, b) => a.r - b.r)\n .map(a => a.x)\n .slice(0, this.caps[Capabilities.SCRIPTING_UTTEXPANSION_RANDOM_COUNT]), context, uiIndex)\n } else {\n yield * processSampleInputs(expandedUserInputs, context, uiIndex)\n }\n }\n useUnexpanded = false\n }\n }\n }\n }\n if (useUnexpanded) {\n const currentStepsStack = convoStepsStack.slice()\n currentStepsStack.push(_.cloneDeep(currentStep))\n yield * this._expandConvo(currentConvo, options, context, convoStepIndex + 1, currentStepsStack)\n }\n }\n } else {\n const expanded = Object.assign(_.cloneDeep(currentConvo), { conversation: _.cloneDeep(convoStepsStack) })\n if (!_.isNil(_.get(context, 'globalContext.totalConvoCount'))) {\n context.globalContext.totalConvoCount++\n }\n if (!options.convoFilter || options.convoFilter(expanded)) {\n yield expanded\n }\n }\n }\n\n _sortConvos () {\n this.convos = _.sortBy(this.convos, [(convo) => convo.header.sort || convo.header.name])\n this._updateConvos()\n }\n\n _updateConvos () {\n let i = 0\n this.convos.forEach((convo) => {\n if (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\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 if (this.convos.filter(c => _.isNil(c))) {\n this._updateConvos()\n } else {\n this._sortConvos()\n }\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 uttName = utt.name?.trim()\n const eu = this.utterances[uttName]\n if (eu) {\n eu.utterances = _.uniq(_.concat(eu.utterances, utt.utterances))\n } else {\n this.utterances[uttName] = utt\n }\n\n const { ambiguous, expected } = findAmbiguous(this.utterances[uttName].utterances)\n\n if (ambiguous && ambiguous.length > 0) {\n debug(`Ambigous utterance \"${uttName}\", 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,\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 GetAssertionCount (convo) {\n if (!convo) {\n return 0\n }\n let counter = 0\n for (const step of convo.conversation) {\n if (step.sender === 'bot') {\n let stepCounter = step.asserters ? step.asserters.length : 0\n if (step.messageText) {\n stepCounter++\n }\n stepCounter = stepCounter === 0 ? 1 : stepCounter\n counter += stepCounter\n }\n }\n\n if (convo.convoBegin && convo.convoBegin.asserters) {\n counter += convo.convoBegin.asserters.length\n }\n\n if (convo.convoEnd && convo.convoEnd.asserters) {\n counter += convo.convoEnd.asserters.length\n }\n return counter === 0 ? 1 : counter\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 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 try {\n rimraf.sync(this.tempDirectory)\n rimraffed()\n } catch (err) {\n rimraffed(new Error(`Cleanup temp directory ${this.tempDirectory} failed: ${util.inspect(err)}`))\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, fetch }, 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 headers: req.headers\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 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')\nconst { ProxyAgent, Agent } = require('undici')\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 this.cookies = {}\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, event.headers, 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 const agentOptions = {\n connect: {\n rejectUnauthorized: !!this.caps[Capabilities.SIMPLEREST_STRICT_SSL] // Equivalent to strictSSL of request module\n }\n }\n if (this.caps[Capabilities.SIMPLEREST_PROXY_URL]) {\n this.dispatcher = new ProxyAgent(this.caps[Capabilities.SIMPLEREST_PROXY_URL], agentOptions)\n } else {\n this.dispatcher = new Agent(agentOptions)\n }\n\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, headers }) => {\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, headers, !!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, headers }) => {\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, headers, !!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 this.cookies = {}\n }\n\n Clean () {\n return this._cleanInbound()\n }\n\n _fetchify (requestOptions) {\n requestOptions.signal = AbortSignal.timeout(requestOptions.timeout)\n delete requestOptions.timeout\n\n if (requestOptions.body && !_.isString(requestOptions.body)) {\n requestOptions.body = JSON.stringify(requestOptions.body)\n if (!requestOptions.headers) requestOptions.headers = {}\n if (!requestOptions.headers['Content-Type'] && !requestOptions.headers['content-type']) {\n requestOptions.headers['Content-Type'] = 'application/json'\n }\n }\n\n if (requestOptions.form) {\n if (requestOptions.body) {\n debug('Request.form and request.body are mutually exclusive')\n }\n requestOptions.headers['Content-Type'] = 'application/x-www-form-urlencoded'\n requestOptions.body = new URLSearchParams(requestOptions.form).toString()\n delete requestOptions.form\n }\n\n return requestOptions\n }\n\n // Separated just for better module testing\n async _processBodyAsync (body, headers, isFromUser, updateContext) {\n const p = async () => {\n try {\n const results = await this._processBodyAsyncImpl(body, headers, 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, headers, isFromUser, updateContext) {\n this.view.response = { body, headers }\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 _isAnyContextJsonPathMatch = (capName, capNameMatch) => {\n const jsonPaths = getAllCapValues(capName, this.caps)\n if (jsonPaths.length > 0) {\n const jsonPathsMatch = getAllCapValues(capNameMatch, this.caps)\n for (const [index, jsonPath] of jsonPaths.entries()) {\n const contextNodes = jp.query(this.view.context, jsonPath)\n if (_.isArray(contextNodes) && contextNodes.length > 0) {\n if (jsonPathsMatch[index]) {\n if (contextNodes[0] === jsonPathsMatch[index]) {\n return {\n jsonPath,\n match: contextNodes[0]\n }\n }\n } else {\n return {\n jsonPath\n }\n }\n }\n }\n }\n return null\n }\n\n const ignoreMatch = _isAnyContextJsonPathMatch(Capabilities.SIMPLEREST_CONTEXT_IGNORE_JSONPATH, Capabilities.SIMPLEREST_CONTEXT_IGNORE_MATCH)\n if (ignoreMatch) {\n if (ignoreMatch.match) debug(`ignoring response for context match: ${ignoreMatch.jsonPath} = ${ignoreMatch.match}`)\n else debug(`ignoring response for context: ${ignoreMatch.jsonPath}`)\n return\n }\n\n const skipMatch = _isAnyContextJsonPathMatch(Capabilities.SIMPLEREST_CONTEXT_SKIP_JSONPATH, Capabilities.SIMPLEREST_CONTEXT_SKIP_MATCH)\n if (skipMatch) {\n if (skipMatch.match) debug(`skipping response for context match: ${skipMatch.jsonPath} = ${skipMatch.match}`)\n else debug(`skipping response for context: ${skipMatch.jsonPath}`)\n\n setTimeout(() => this._doRequest({ messageText: '' }, true, true), 0)\n return\n }\n\n let result = []\n if (isFromUser) {\n const _extractFrom = (root, jsonPaths, acceptFn = null) => {\n const result = []\n for (const jsonPath of jsonPaths) {\n const jsonPathRes = []\n const rb = jp.query(root, jsonPath)\n if (_.isArray(rb)) {\n _.flattenDeep(rb).forEach(r => jsonPathRes.push(r))\n } else {\n jsonPathRes.push(rb)\n }\n if (acceptFn) {\n result.push(...jsonPathRes.filter(r => acceptFn(root, jsonPath, r)))\n } else {\n result.push(...jsonPathRes)\n }\n }\n return result\n }\n\n const jsonPathRoots = []\n const jsonPathsBody = getAllCapValues(Capabilities.SIMPLEREST_BODY_JSONPATH, this.caps)\n if (jsonPathsBody.length > 0) {\n jsonPathRoots.push(..._extractFrom(body, jsonPathsBody, (root, jsonPath, r) => {\n if (r && _.isObject(r)) return true\n debug(`Ignoring result body from ${jsonPath} - not a querieable object (${util.inspect(r)})`)\n return false\n }))\n } else {\n jsonPathRoots.push(body)\n }\n\n if (jsonPathRoots.length === 0 && !this.caps[Capabilities.SIMPLEREST_IGNORE_EMPTY]) {\n debug(`found empty body, and processed because of SIMPLEREST_IGNORE_EMPTY capability: ${util.inspect(body)}`)\n result.push({ messageText: '', sourceData: 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, capPrefix) => {\n const jsonPathsButtons = getAllCapValues(`${capPrefix}_JSONPATH`, this.caps)\n const jsonPathsButtonsText = getAllCapValues(`${capPrefix}_TEXT_SUBJSONPATH`, this.caps)\n const jsonPathsButtonsPayload = getAllCapValues(`${capPrefix}_PAYLOAD_SUBJSONPATH`, this.caps)\n\n const retrievedButtons = []\n const responseButtons = _extractFrom(jsonPathButtonRoot, jsonPathsButtons)\n for (const responseButton of responseButtons) {\n const retrievedButton = {}\n if (_.isString(responseButton)) {\n retrievedButton.text = responseButton\n } else {\n if (jsonPathsButtonsText.length > 0) {\n const possibleTexts = _extractFrom(responseButton, jsonPathsButtonsText)\n if (possibleTexts.length > 0) retrievedButton.text = possibleTexts[0]\n }\n if (jsonPathsButtonsPayload.length > 0) {\n const possiblePayloads = _extractFrom(responseButton, jsonPathsButtonsPayload)\n if (possiblePayloads.length > 0) retrievedButton.payload = possiblePayloads[0]\n }\n }\n if (Object.keys(retrievedButton).length === 0 && responseButton) {\n retrievedButton.text = JSON.stringify(responseButton)\n }\n if (Object.keys(retrievedButton).length > 0) {\n retrievedButtons.push(retrievedButton)\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, 'SIMPLEREST_BUTTONS')\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, 'SIMPLEREST_CARD_BUTTONS')\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 nlp = { intent: {} }\n const _normalizeIntent = (intent) => {\n if ('name' in intent) {\n if (!intent.name) {\n intent.name = 'None'\n }\n const fallbackIntents = this.caps[Capabilities.SIMPLEREST_NLP_FALLBACK_INTENTS]\n if (fallbackIntents) {\n intent.incomprehension = this.caps[Capabilities.SIMPLEREST_NLP_FALLBACK_INTENTS].includes(intent.name) ? true : undefined\n } else {\n intent.incomprehension = intent.name.toLowerCase() === 'none' ? true : undefined\n }\n }\n\n if (!_.isNil(intent.confidence)) {\n if (typeof intent.confidence === 'string') {\n intent.confidence = Number(intent.confidence)\n }\n if (_.isNil(this.caps[Capabilities.SIMPLEREST_NLP_CONFIDENCE_DIVIDEBY100]) ? intent.confidence > 1 : this.caps[Capabilities.SIMPLEREST_NLP_CONFIDENCE_DIVIDEBY100]) {\n intent.confidence /= 100\n }\n }\n\n return intent\n }\n const jsonPathIntent = this.caps[Capabilities.SIMPLEREST_NLP_INTENT_JSONPATH]\n if (jsonPathIntent) {\n const name = jp.query(jsonPathRoot, jsonPathIntent)\n nlp.intent.name = name?.length ? name[0] : null\n }\n const jsonPathConfidence = this.caps[Capabilities.SIMPLEREST_NLP_CONFIDENCE_JSONPATH]\n if (jsonPathConfidence) {\n const confidence = jp.query(jsonPathRoot, jsonPathConfidence)\n nlp.intent.confidence = confidence?.length ? confidence[0] : null\n }\n _normalizeIntent(nlp.intent)\n const jsonPathList = this.caps[Capabilities.SIMPLEREST_NLP_LIST_JSONPATH]\n const jsonPathListIntent = this.caps[Capabilities.SIMPLEREST_NLP_LIST_INTENT_JSONPATH]\n const jsonPathListConfidence = this.caps[Capabilities.SIMPLEREST_NLP_LIST_CONFIDENCE_JSONPATH]\n if (jsonPathList) {\n const list = jp.query(jsonPathRoot, jsonPathList)\n if (list?.length) {\n const intentList = list[0].map(e => {\n const name = jp.query(e, jsonPathListIntent)\n const res = { name: name?.length ? name[0] : null }\n if (jsonPathListConfidence) {\n const confidence = jp.query(e, jsonPathListConfidence)\n res.confidence = confidence?.length ? confidence[0] : null\n }\n _normalizeIntent(res)\n return res\n })\n if (intentList.length > 0 && !nlp.intent.name) {\n nlp.intent.name = intentList[0].name\n nlp.intent.confidence = intentList[0].confidence\n }\n\n if (nlp.intent.name === intentList[0].name) {\n intentList.shift()\n }\n\n nlp.intent.intents = intentList\n }\n }\n if (Object.keys(nlp.intent).length > 0) {\n debug(`found response nlp: ${util.inspect(nlp)}`)\n } else {\n nlp = null\n }\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, nlp }\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, nlp }\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 || botMsg.nlp) {\n result.push(botMsg)\n } else if (!this.caps[Capabilities.SIMPLEREST_IGNORE_EMPTY]) {\n debug(`found empty message, and processed because of SIMPLEREST_IGNORE_EMPTY capability: ${util.inspect(botMsg)}`)\n result.push(botMsg)\n } else {\n debug(`found empty message, and ignored because of SIMPLEREST_IGNORE_EMPTY capability: ${util.inspect(botMsg)}`)\n }\n }\n }\n }\n\n const continueMatch = _isAnyContextJsonPathMatch(Capabilities.SIMPLEREST_CONTEXT_CONTINUE_JSONPATH, Capabilities.SIMPLEREST_CONTEXT_CONTINUE_MATCH)\n if (continueMatch) {\n if (continueMatch.match) debug(`continue with next response for context match: ${continueMatch.jsonPath} = ${continueMatch.match}`)\n else debug(`continue with next response for context: ${continueMatch.jsonPath}`)\n\n setTimeout(() => this._doRequest({ messageText: '' }, true, true), 0)\n }\n\n if (this.caps[Capabilities.SIMPLEREST_MESSAGE_LIST_MERGE] === 'MERGE_TEXT') {\n const isTextMsg = (msg) => msg.messageText && (!msg.media || msg.media.length === 0) && (!msg.buttons || msg.buttons.length === 0) && (!msg.cards || msg.cards.length === 0)\n\n result = result.reduce((acc, currentMsg) => {\n if (acc.length > 0) {\n const last = acc[acc.length - 1]\n if (isTextMsg(last)) {\n currentMsg.messageText = [last.messageText, currentMsg.messageText].filter(t => t).join('\\n')\n acc[acc.length - 1] = currentMsg\n return acc\n }\n }\n acc.push(currentMsg)\n return acc\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 try {\n fetch(requestOptions.uri, requestOptions).then(async (bodyRaw) => {\n let body\n try {\n if (bodyRaw?.headers?.get('content-type') && bodyRaw.headers.get('content-type').includes('application/json')) {\n try {\n body = await bodyRaw.json()\n } catch (err) {\n body = await bodyRaw.text()\n debug(`failed to parse body as text, using text instead: ${body}`)\n }\n } else {\n body = await bodyRaw.text()\n }\n } catch (err) {\n return reject(new Error(`cant parse body: ${err.message}`))\n }\n if (!bodyRaw.ok) {\n debug(`got error response: ${bodyRaw.status}/${bodyRaw.statusText}`)\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: ${bodyRaw.status}/${bodyRaw.statusText} - ${jsonBody[errKey]}`, {\n message: botiumUtils.shortenJsonString(body)\n }))\n }\n }\n return reject(new Error(`got error response: ${bodyRaw.status}/${bodyRaw.statusText}`))\n }\n if (body) {\n debug(`got response code: ${bodyRaw.status}/${bodyRaw.statusText}, body: ${botiumUtils.shortenJsonString(body)}, headers: ${botiumUtils.shortenJsonString(bodyRaw.headers)}`)\n this._storeCookiesFromResponse(bodyRaw)\n\n this._parseResponseBody(body)\n .then((parsedBody) => {\n body = parsedBody\n if (body) {\n this._processBodyAsync(body, bodyRaw.headers, 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 })\n .catch((err) => {\n debug(`ignoring not JSON formatted response body: ${err.message}`)\n resolve(this)\n this._emptyWaitProcessQueue()\n })\n } else {\n debug(`got response code: ${bodyRaw.status}/${bodyRaw.statusText}, empty body`)\n resolve(this)\n this._emptyWaitProcessQueue()\n }\n }).catch((err) => {\n // rest request failed: fetch failed - Cause code: ECONNREFUSED - Cause message: connect ECONNREFUSED 127.0.0.1:3006\n return reject(new Error(`rest request failed: ${err.message}${err.cause && err.cause.code ? ' - Cause code: ' + err.cause.code : ''}${err.cause && err.cause.message ? ' - Cause message: ' + err.cause.message : ''}`))\n })\n } catch (err) {\n return reject(new Error(`rest request failed: ${err.message}`))\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 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 // It is possible to mix json, and non-json request messages. So it can happen that both\n // SIMPLEREST_BODY_FROM_JSON and SIMPLEREST_BODY_TEMPLATE are set\n if (this.caps[Capabilities.SIMPLEREST_BODY_FROM_JSON] && msg.sourceData && Object.keys(msg.sourceData).length > 0) {\n requestOptions.body = msg.sourceData\n requestOptions.json = true\n if (!requestOptions.headers) requestOptions.headers = {}\n requestOptions.headers['Content-Type'] = 'application/json'\n } else 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 if (requestOptions.json && (!requestOptions.body || Object.keys(requestOptions.body).length === 0)) {\n debug(`warning: requestOptions.body content seems to be empty - ${requestOptions.body} - capability: \"${this.caps[Capabilities.SIMPLEREST_BODY_TEMPLATE]}\"`)\n }\n if (!bodyRaw) {\n if (!requestOptions.headers) requestOptions.headers = {}\n requestOptions.headers['Content-Type'] = 'application/json'\n }\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 await executeHook(this.caps, this.requestHook, Object.assign({ requestOptions }, this.view))\n this._addRequestCookies(requestOptions)\n this._fetchify(requestOptions)\n\n return requestOptions\n }\n\n async _waitForUrlResponse (httpConfig, 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 ${httpConfig.uri} before proceed`)\n if (tries > retries) {\n throw new Error(`Failed to ping bot after ${retries} retries`)\n }\n tries++\n let bodyRaw\n let body\n let err\n try {\n bodyRaw = await this.bottleneck(() => fetch(httpConfig.uri, httpConfig))\n body = await ((httpConfig.json) ? bodyRaw.json() : bodyRaw.text())\n } catch (e) {\n err = e\n }\n if (err) {\n debug(`_waitForUrlResponse error on url check ${httpConfig.uri}: ${err}`)\n if (tries <= retries) {\n await timeout(httpConfig.timeout)\n }\n } else if (!bodyRaw.ok) {\n debug(`_waitForUrlResponse on url check ${httpConfig.uri} got error response: ${bodyRaw.status}/${bodyRaw.statusText}`)\n if (debug.enabled && body) {\n debug(botiumUtils.shortenJsonString(body))\n }\n if (tries <= retries) {\n await timeout(httpConfig.timeout)\n }\n } else {\n debug(`_waitForUrlResponse success on url check ${httpConfig.uri}: ${bodyRaw.status}/${bodyRaw.statusText}`)\n this._storeCookiesFromResponse(bodyRaw)\n if (debug.enabled && body) {\n debug(`body: ${botiumUtils.shortenJsonString(body)}, headers: ${botiumUtils.shortenJsonString(bodyRaw.headers)}`)\n }\n return { body, headers: bodyRaw.headers }\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 if (debug.enabled) {\n debug(`JSON parsing failed (${err.message}) for: ${botiumUtils.shortenJsonString(raw)}`)\n }\n throw 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, event.headers, 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,\n 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 if (!bodyRaw) {\n if (!pollConfig.headers) pollConfig.headers = {}\n pollConfig.headers['Content-Type'] = 'application/json'\n }\n } catch (err) {\n debug(`_runPolling: composing body from SIMPLEREST_POLL_BODY failed (${err.message})`)\n return\n }\n }\n this._addRequestOptions(pollConfig)\n this._fetchify(pollConfig)\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 this._addRequestCookies(pollConfig)\n\n try {\n const bodyRaw = await fetch(pollConfig.uri, pollConfig)\n let body = await ((pollConfig.json) ? bodyRaw.json() : bodyRaw.text())\n if (!bodyRaw.ok) {\n debug(`_runPolling: got error response: ${bodyRaw.status}/${bodyRaw.statusText}, 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: ${bodyRaw.status}/${bodyRaw.statusText}, body: ${botiumUtils.shortenJsonString(body)}, headers: ${botiumUtils.shortenJsonString(bodyRaw.headers)}`)\n this._storeCookiesFromResponse(bodyRaw)\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, bodyRaw.headers, 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: ${bodyRaw.status}/${bodyRaw.statusText}, empty body`)\n }\n } catch (err) {\n debug(`_runPolling: rest request failed: ${err.message}, request: ${JSON.stringify(pollConfig)}`)\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,\n 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 this._fetchify(httpConfig)\n await executeHook(this.caps, this.requestHooks[capPrefix], Object.assign({ requestOptions: httpConfig }, this.view))\n this._addRequestCookies(httpConfig)\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 if (this.dispatcher) {\n httpConfig.dispatcher = this.dispatcher\n }\n if (this.caps[Capabilities.SIMPLEREST_EXTRA_OPTIONS]) {\n _.merge(httpConfig, this.caps[Capabilities.SIMPLEREST_EXTRA_OPTIONS])\n }\n }\n\n _addRequestCookies (requestOptions) {\n if (!this.caps[Capabilities.SIMPLEREST_COOKIE_REPLICATION] || !requestOptions) {\n return\n }\n const url = new URL(requestOptions.uri)\n if (!requestOptions.headers) {\n requestOptions.headers = {}\n }\n if (this.cookies[url.host]) {\n requestOptions.headers.Cookie = requestOptions.headers.Cookie ? `${requestOptions.headers.Cookie}; ${this.cookies[url.host]}` : this.cookies[url.host]\n }\n }\n\n _storeCookiesFromResponse (response) {\n if (!this.caps[Capabilities.SIMPLEREST_COOKIE_REPLICATION] || !response) {\n return\n }\n const responseCookies = response.headers.get('set-cookie')\n if (!responseCookies) {\n return\n }\n const host = response?.url ? new URL(response.url).host : null\n\n if (host) {\n this.cookies[host] = responseCookies\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')\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\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 const allowUnsafe = !!args.caps[Capabilities.SECURITY_ALLOW_UNSAFE]\n\n if (_.isString(pluginLoaderSpec)) {\n if (args.caps.SAFEDIR) {\n const tryLoadFile = path.resolve(args.caps.SAFEDIR, pluginLoaderSpec)\n if (tryLoadFile.startsWith(path.resolve(args.caps.SAFEDIR))) {\n if (fs.existsSync(tryLoadFile)) {\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 }\n\n if (allowUnsafe) {\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\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, number)) {\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, number)) {\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, number)) {\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, number)) {\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, number)) {\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 GetMetaData () {\n try {\n return (this.pluginInstance.GetMetaData ? (this.pluginInstance.GetMetaData() || Promise.resolve()) : Promise.resolve())\n } catch (err) {\n return Promise.reject(new Error(`GetMetaData - 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 tempDirectory = null\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 (tempDirectoryCreated) => {\n 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(tempDirectory)\n tempDirectoryCreated()\n } catch (err) {\n tempDirectoryCreated(new Error(`Unable to create temp directory ${tempDirectory}: ${err.message}`))\n }\n },\n\n (repoValidated) => {\n try {\n repo = this._getRepo(tempDirectory)\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(tempDirectory, 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 (tempDirectory) {\n rimraf(tempDirectory).catch((err) => debug(`Cleanup temp dir ${tempDirectory} failed: ${util.inspect(err)}`))\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(Number(newCaps[capKey]))) {\n caps[capKey] = newCaps[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 resolve(this)\n } catch (err) {\n reject(err)\n }\n })\n }\n\n _getRepo (tempDirectory) {\n if (this.caps[Capabilities.BOTIUMGRIDURL]) {\n const NoRepo = require('./repos/NoRepo')\n return new NoRepo(tempDirectory, this.sources)\n }\n if (this.sources[Source.GITURL]) {\n const GitRepo = require('./repos/GitRepo')\n return new GitRepo(tempDirectory, this.sources)\n }\n if (this.sources[Source.LOCALPATH]) {\n const LocalRepo = require('./repos/LocalRepo')\n return new LocalRepo(tempDirectory, this.sources)\n }\n throw new Error(`No Repo provider found for Sources ${util.inspect(this.sources)}`)\n }\n\n _getContainer (tempDirectory, repo) {\n if (this.caps[Capabilities.BOTIUMGRIDURL]) {\n const GridContainer = require('./containers/GridContainer')\n return new GridContainer(this.eventEmitter, 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, tempDirectory, repo, this.caps, this.envs)\n }\n const PluginConnectorContainer = require('./containers/PluginConnectorContainer')\n return new PluginConnectorContainer(this.eventEmitter, 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","const path = require('path')\nconst fs = require('fs')\nconst _ = require('lodash')\nconst { parse: csvParseSync } = require('csv-parse/sync')\n\n/**\n * Find transcription for an audio file: .txt same base name, or transcript.csv in parent dirs.\n * @param {string} baseDir - Base directory for resolving paths\n * @param {string} audioFile - Relative path to audio file\n * @param {object} [options] - Optional: { csvCache: {}, onError: (msg) => {} }\n * @returns {string|null} Transcription text or null\n */\nmodule.exports.findTranscription = (baseDir, audioFile, options = {}) => {\n const { csvCache = {}, onError } = options\n const transcriptionFilename = `${audioFile.substring(0, audioFile.lastIndexOf('.'))}.txt`\n const transcriptionFilenameAbs = path.resolve(baseDir, transcriptionFilename)\n try {\n if (fs.existsSync(transcriptionFilenameAbs)) {\n return fs.readFileSync(transcriptionFilenameAbs, { encoding: 'utf-8' }).trim()\n }\n } catch (err) {\n if (onError) onError(`Transcription File ${transcriptionFilenameAbs} not readable: ${err.message}`)\n throw new Error(`Reading transcription file ${transcriptionFilename} for ${audioFile} failed`)\n }\n if (csvCache[audioFile]) {\n return csvCache[audioFile]\n }\n const audioFileComponents = audioFile.split('/')\n for (let parentIndex = audioFileComponents.length - 1; parentIndex >= 0; parentIndex--) {\n const csvDirectory = audioFileComponents.slice(0, parentIndex)\n const csvFilename = path.join(...csvDirectory, 'transcript.csv')\n const csvFilenameAbs = path.resolve(baseDir, csvFilename)\n try {\n if (fs.existsSync(csvFilenameAbs)) {\n const records = csvParseSync(fs.readFileSync(csvFilenameAbs, { encoding: 'utf-8' }).trim(), {\n columns: ['filename', 'transcription'],\n delimiter: [',', ';', ':', '\\t'],\n trim: true,\n skip_empty_lines: true\n })\n if (records && records.length > 0) {\n for (const record of records) {\n const fnKey = path.join(...csvDirectory, record.filename)\n csvCache[fnKey] = record.transcription\n }\n }\n }\n } catch (err) {\n if (onError) onError(`Transcription CSV File ${csvFilenameAbs} not readable: ${err.message}`)\n throw new Error(`Reading transcription CSV file for ${csvFilename} failed`)\n }\n if (csvCache[audioFile]) {\n return csvCache[audioFile]\n }\n }\n return null\n}\n\n/**\n * Derive transcription text from audio filename (basename without extension, underscores/hyphens → spaces).\n * @param {string} audioFile - Path or filename of audio file\n * @returns {string}\n */\nmodule.exports.transcriptionFromFilename = (audioFile) => {\n const filename = path.basename(audioFile, path.extname(audioFile))\n return filename.split(/[_-]+/).join(' ')\n}\n\nmodule.exports.hasWaitForBotTimeout = (transciptError) => {\n if (!transciptError) {\n return false\n }\n const str = transciptError.message || (_.isString(transciptError) ? transciptError : null)\n if (!str) {\n return false\n }\n return str.indexOf(': error waiting for bot - Bot did not respond within') > 0\n}\n","module.exports = {\n BotDriver: require('./src/BotDriver'),\n Capabilities: require('./src/Capabilities'),\n Defaults: require('./src/Defaults'),\n Enums: require('./src/Enums'),\n Events: require('./src/Events'),\n Plugins: require('./src/Plugins'),\n Source: require('./src/Source'),\n\n InboundProxy: require('./src/grid/inbound/proxy'),\n\n HookUtils: require('./src/helpers/HookUtils'),\n TranscriptUtils: require('./src/helpers/TranscriptUtils'),\n\n RetryHelper: require('./src/helpers/RetryHelper'),\n\n BotiumMockRichMessageTypes: require('./src/mocks/BotiumMockRichMessageTypes'),\n\n BotiumError: require('./src/scripting/BotiumError').BotiumError,\n ScriptingConstants: require('./src/scripting/Constants'),\n ScriptingMemory: require('./src/scripting/ScriptingMemory'),\n ScriptingProvider: require('./src/scripting/ScriptingProvider'),\n LogicHookConstants: require('./src/scripting/logichook/LogicHookConsts'),\n\n Lib: {\n SimpleRestContainer: require('./src/containers/plugins/SimpleRestContainer'),\n tryLoadPlugin: require('./src/containers/plugins/index').tryLoadPlugin\n }\n}\n"],"names":["Capabilities","PROJECTNAME","TESTSESSIONNAME","TESTCASENAME","TEMPDIR","SAFEDIR","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_BODY_FROM_JSON","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_CONTEXT_IGNORE_JSONPATH","SIMPLEREST_CONTEXT_IGNORE_MATCH","SIMPLEREST_CONTEXT_SKIP_JSONPATH","SIMPLEREST_CONTEXT_SKIP_MATCH","SIMPLEREST_CONTEXT_CONTINUE_JSONPATH","SIMPLEREST_CONTEXT_CONTINUE_MATCH","SIMPLEREST_BODY_JSONPATH","SIMPLEREST_RESPONSE_JSONPATH","SIMPLEREST_RESPONSE_HOOK","SIMPLEREST_MEDIA_JSONPATH","SIMPLEREST_BUTTONS_JSONPATH","SIMPLEREST_BUTTONS_TEXT_SUBJSONPATH","SIMPLEREST_BUTTONS_PAYLOAD_SUBJSONPATH","SIMPLEREST_CARDS_JSONPATH","SIMPLEREST_CARD_TEXT_JSONPATH","SIMPLEREST_CARD_SUBTEXT_JSONPATH","SIMPLEREST_CARD_BUTTONS_JSONPATH","SIMPLEREST_CARD_BUTTONS_TEXT_SUBJSONPATH","SIMPLEREST_CARD_BUTTONS_PAYLOAD_SUBJSONPATH","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","SIMPLEREST_COOKIE_REPLICATION","SIMPLEREST_NLP_INTENT_JSONPATH","SIMPLEREST_NLP_CONFIDENCE_JSONPATH","SIMPLEREST_NLP_CONFIDENCE_DIVIDEBY100","SIMPLEREST_NLP_FALLBACK_INTENTS","SIMPLEREST_NLP_LIST_JSONPATH","SIMPLEREST_NLP_LIST_INTENT_JSONPATH","SIMPLEREST_NLP_LIST_CONFIDENCE_JSONPATH","SIMPLEREST_MESSAGE_LIST_MERGE","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_LEGACY_MODE_OFF","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_CSV_UTTERANCE_STARTROW","SCRIPTING_CSV_UTTERANCE_STARTROW_HEADER","SCRIPTING_CSV_UTTERANCE_STOP_ON_EMPTY","SCRIPTING_NORMALIZE_TEXT","SCRIPTING_NORMALIZE_TEXT_REMOVE_CHARACTERES","SCRIPTING_NORMALIZE_TEXT_REMOVE_REGEXP","SCRIPTING_ENABLE_MEMORY","SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS","SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS","SCRIPTING_FORCE_BOT_CONSUMED","SCRIPTING_MATCHING_MODE","SCRIPTING_MATCHING_MODE_ARGS","SCRIPTING_UTTEXPANSION_MODE","SCRIPTING_UTTEXPANSION_RANDOM_COUNT","SCRIPTING_UTTEXPANSION_INCOMPREHENSION","SCRIPTING_UTTEXPANSION_INCOMPREHENSIONINTENTS","SCRIPTING_UTTEXPANSION_INCOMPREHENSIONUTTS","SCRIPTING_UTTEXPANSION_USENAMEASINTENT","SCRIPTING_UTTEXPANSION_NAMING_MODE","SCRIPTING_UTTEXPANSION_NAMING_UTTERANCE_MAX","SCRIPTING_MEMORYEXPANSION_KEEP_ORIG","SCRIPTING_MEMORY_MATCHING_MODE","SCRIPTING_MEMORY_COLUMN_MODE","SCRIPTING_CONVO_STEP_PARAMETERS","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","CONVO_STEP_NEXT","MESSAGE_SENTTOBOT","MESSAGE_SENDTOBOT_ERROR","MESSAGE_RECEIVEDFROMBOT","MESSAGE_RECEIVEFROMBOT_ERROR","MESSAGE_ATTACHMENT","MESSAGE_TRANSCRIPT","TOOMUCHWORKERS_ERROR","LOGIC_HOOK_INCLUDE","LogicHookConsts","DEFAULT_ASSERTERS","name","className","DEFAULT_LOGIC_HOOKS","DEFAULT_USER_INPUTS","LOGIC_HOOK_EVENTS","debug","require$$0","require$$1","forEach","asserter","Class","require","logicHook","userInput","LogicHookUtils_1","LogicHookUtils","buildScriptContext","caps","asserters","globalAsserterNames","logicHooks","globalLogicHookNames","userInputs","_setDefaultAsserters","_setDefaultLogicHooks","_setDefaultUserInputs","_fetchAsserters","_fetchLogicHooks","_fetchUserInputs","lh","ui","ref","_loadClass","global","getGlobalAsserters","reduce","agg","getGlobalLogicHooks","src","args","hookType","Error","find","allowUnsafe","packageName","CheckClass","isClass","PluginClass","message","typeAsText","isObject","isString","hookObject","keys","result","key","script","util","inspect","loadErr","tryLoads","tryLoadPackageName","tryLoadAsserterByName","indexOf","substring","lastIndexOf","tryLoadFromSource","tryRequire","tryAsserterName","default","PluginAsserters","PluginLogicHooks","tryLoad","tryLoadFile","path","startsWith","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","prettify","indent","sections","truncate","length","repeat","join","BotiumMockButton","payload","imageUri","JSON","stringify","BotiumMockCard","subtext","content","sourceData","image","buttons","map","a","media","forms","BotiumMockForm","cards","_prettifyLines","card","prettifySafe","entry","lines","m","b","f","c","value","label","type","options","BotiumMockChoice","title","BotiumMockRichMessageTypes","BotiumMockAsserter","cloneDeep","not","BotiumMockUserInput","BotiumMockLogicHook","BotiumMockScripting","BotiumMockMessage_1","BotiumMockMessage","sender","optional","nlp","sourceAction","attachments","slice","Enums","E_SCRIPTING_MEMORY_COLUMN_MODE","VARNAMES","TESTCASENAMES","WHITE_SPACES_EXCEPT_SPACE_CHAR_AT_THE_END","normalizeText","str","doCleanupOrCaps","basic","charactersRemove","regexpRemove","isBoolean","isNil","splitted","split","e","trim","filter","isArray","RegExp","toString","replace","s","character","splitStringInNonEmptyLines","quoteRegexpString","removeBuffers","obj","jsonString","isBuffer","toLowerCase","parse","isUndefined","isNumber","v","flatString","_formatAppendArgs","_parseArgs","linesToConvoStep","context","eol","singleLineMode","validateSender","convoStep","textLinesRaw","textLines","textLinesAccepted","rawLine","logicLine","substr","IsAsserterValid","IsUserInputValid","IsLogicHookValid","logichook","logicHookName","userinput","userInputName","pop","isJSON","trimExceptSpaceEnd","optionalSet","Set","add","size","string","convoStepToObject","step","form","messageTextPrefix","cardTexts","concat","mediaUr","validSenders","validateConvo","validationResult","errors","i","conversation","_decompileButton","buttonScript","convoStepToLines","linesToScriptingMemories","columnMode","guessScriptingMemoryColumnMode","scriptingMemories","caseNames","varNames","varValues","row","rawRow","caseIndex","caseName","values","varName","varIndex","scriptingMemory","header","calculateWer","pattern","_prepareString","remWildcard","_getSubsets","array","subsets","index","end","parseInt","_getWords","w","_getErrors","words1","words2","utterance","botMessage","botMessageWords","bm","utt","speechScorer","wordErrorRate","toFixed","wildcardPart","wer","wordCount","subsetPhrases","Math","min","subset","subsetPhraseFound","subsetPhrase","localWer","errCount","allCount","toPercent","helper","BotiumError","supressChildCheck","_getChildErrorsFromContext","captureStackTrace","isAsserterError","errArr","hasNotAsserterError","findIndex","errDetail","includeJson","segments","source","subtype","cause","expected","actual","input","transcript","transcriptStep","jsonOutput","jsonErr","hasError","internal","toArray","botiumErrorFromErr","botiumErrorFromList","flat","children","error","childErrors","BotiumError_1","v1","uuidv1","require$$2","require$$3","SCRIPTING_FUNCTIONS_RAW","$now","Date","toLocaleString","$now_EN","$now_DE","moment","format","$now_ISO","toISOString","$date","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","$tomorrow","toDate","$yesterday","subtract","$date_add","amount","unit","$date_subtract","$year","getFullYear","$month","$month_MM","$day_of_month","getDate","$day_of_week","$random","randomize","$random10","$uniqid","$projectname","handler","$testsessionname","$testcasename","$env","process","env","numberOfArguments","unsafe","$cap","$msg","jsonPath","mockMsg","root","jp","query","SCRIPTING_FUNCTIONS","mapValues","funcOrStruct","func","rest","basename","__filename","functionName","RESERVED_WORDS","apply","_apply","applyToArgs","arg","_longestFirst","allKeys","sort","has","keyRegexp","regex","matches","match","endsWith","argStr","extractVarNames","fill","varRegex","utterances","resolveUtterance","reExpected","varMatches","varMatchesRegexp","resultMatches","ScriptingMemory","ConvoHeader","projectname","testsessionname","order","description","ConvoStepAssert","ConvoStepLogicHook","ConvoStepUserInput","ConvoStep","stepTag","hasInteraction","l","u","Transcript","steps","convoBegin","convoEnd","prettifyActual","prettifiedSteps","TranscriptAttachment","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","conditionalGroupId","conditionMetInGroup","skipOptionalStep","optionalStepAssertionError","globalConvoStepParameters","retryBotMessageTimeoutEnd","retryBotMessageConvoId","retryBotMessageDropBotResponse","rawConvoStepParameters","convoStepParameters","params","param","semicolon","currentStepIndex","meMsg","WORKAROUND_OVERWRITE_JSON_MESSAGE_TEXT","setUserInput","onMeStart","onMePrepare","coreMsg","omit","setTimeout","isNull","onMeEnd","failErr","executeBotStep","executeBotStepResult","onBotStart","stepTimeout","prepared","onBotPrepare","conditional","endOfConditionalGroup","nextConvoStep","some","toUpperCase","nextConditionalLogicHook","skip","undefined","isErrorHandledWithOptionConvoStep","retryConfig","ignoreNotMatchedBotResponses","retryOn","timeout","mainAsserter","getTime","timeoutRemaining","assertErrors","scriptingMemoryUpdate","response","_checkNormalizeText","tomatch","_resolveUtterancesToMatch","assertBotNotResponse","_compareObject","assertConvoStep","onBotEnd","allAsserters","includes","transcriptStepErrs","forOwn","prototype","hasOwnProperty","call","GetScriptingMemoryAllVariables","partialConvos","GetPartialConvos","variableNames","partialConvo","partialConvoName","GetScriptingMemoryVariables","__extractFromArgs","convoStepItems","resultInner","item","uniq","queueLength","_QueueLength","normalizedUtterances","expandPartialConvos","_getIncludeLogicHookNames","hook","_getEffectiveConversationRecursive","parentPConvos","ignoreBeginEnd","includeLogicHooks","steptagPath","includeLogicHook","alreadyThereAt","Convo_1","RetryHelper_1","RetryHelper","section","retryErrorPatterns","onErrorRegexp","r","retrySettings","retries","numRetries","factor","minTimeout","shouldRetry","currentRetryCount","errString","re","_normalize","botresponse","regexp","ignoreCase","test","wildcard","numWildcards","utteranceRe","wildcardExact","include","equals","threshold","matchingModeWer","p","parseFloat","getMatchFunction","matchingMode","MatchFunctions","isStringJson","isJsonObject","json","stringIsJson","isJson","toJsonWeak","stringOrNot","optionalJson","body","shortenJsonString","escapeJSONString","formatTimeout","ms","floor","Utils","_ensureList","queryResult","precompile","filename","checkerJsonpath","CHECKER_JSONPATH","rootJsonpath","ROOT_JSONPATH","utteranceRefsJsonpath","UTTERANCE_REF_JSONPATH","utterancesJsonpath","UTTERANCES_JSONPATH","scriptData","scouldExist","rootObjects","intent","executeHook","executeHookSync","getHook","data","resultWithRequire","HookUtils","SCRIPT","htmlCommentRegexp","md","MarkdownIt","parsed","_extractFromRasaIntent","_extractFromRasaSentence","rasaSentence","matched","meText","meTexts","state","processLeafs","getAllCapValues","capNamePrefix","allCapValues","jsonPathCaps","pickBy","k","each","flatCababilities","prefix","capNames","regexpPrefixAndGroup","currentGroup","currentObject","capName","charAt","capPrefixAndGroup","PROVIDERS","JSON_TO_JSON_JSONPATH","MARKDOWN_RASA","require$$4","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","foundQARows","foundConvoRows","convoResults","currentConvo","currentConvoName","startrowindex","formatLength","max","formatBase","formatRowIndex","currentUtterance","emptylines","uttCell","line1Cell","colindexTemp","caseNameCell","varNameCell","variableValueCell","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","eolRead","eolWrite","isRegExp","_compileConvo","_compileUtterances","_compileScriptingMemory","isPartial","currentLineIndex","currentLines","convoStepSender","convoStepChannel","convoStepLineIndex","parseMsg","pushPrev","isValidTagLine","line","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","legacyModeOn","delimiter","firstline","d","rows","escape","quote","columns","relax_column_count","columnCount","lineNumberBase","colQuestion","colAnswer","colConversationId","colSender","colText","conversationIds","conversationId","convoRows","startRow","startRowHeader","stopOnEmpty","col","uttStruct","getData","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","globalAsserters","globalLogicHooks","_createLogicHookPromises","executeBotStepHooks","_createAsserterPromises","asserterType","_createUserInputPromises","resolveEmptyIfUnknown","_resolveUtterance","found","werArgs","nottomatch","retryHelperAsserter","retryHelperLogicHook","retryHelperUserInput","_isValidAsserterType","mapNot","updateExceptionContext","updateError","callAsserter","asserterSpec","notAsserterType","localAsserters","convoStepPromises","isGlobal","globalPromises","allPromises","allSettled","results","rejected","status","reason","all","localHooks","globalHooks","hooks","t","parts","uttArgs","_buildScriptContext","Match","BuildScriptContext","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","logicHookUtils","GetCompiler","ReadBotiumFilesFromDirectory","filelist","globby","sync","cwd","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","incomprehensionIntents","incomprehensionUtts","incomprehensionUtt","expandedConvos","uttName","responseStep","ii","origUttName","justHeader","convoFilter","mediaInput","messageTextMode","globalContext","totalConvoCount","expanded","_expandConvo","assertionCount","GetAssertionCount","ConvoWithOnlyHeader","_updateConvos","ExpandConvosIterable","_convosIterable","convosIterable","convoStepIndex","convoStepsStack","utterancePostfix","uttOrUserInput","naming","capabilities","utteranceMax","postfix","currentStep","currentStepsStack","useUnexpanded","allutterances","processSampleUtterances","sampleutterances","myContext","processSampleUtterance","indexExpansionModeIndex","sampleutterance","currentConvoLabeled","origConvoName","indexExpansionModeWidth","localIndex","x","random","uiIndex","expandConvo","expandedUserInputs","processSampleInputs","sampleinputs","processSampleInput","sampleinput","currentStepMod","convoPostfix","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","counter","stepCounter","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","code","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","timeoutCallback","registerPushListener","BaseContainer_1","BaseContainer","repo","envs","cleanupTasks","queues","bottleneck","onBuildHook","onStartHook","onUserSaysHook","onBotResponseHook","onStopHook","onCleanHook","limiter","Bottleneck","schedule","opts","maxConcurrent","minTime","_RunCustomHook","run","UserSaysImpl","isError","userSaysLimiter","hookExecuted","cleanupTasksDone","rimraffed","rimraf","_AssertOneCapabilityExists","checkCaps","arguments","_EmptyQueue","_QueueBotSays","fetch","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","headers","sendResponse","startProxy","port","express","bodyParser","urlencoded","extended","proxy","listen","console","log","v4","uuidv4","ProxyAgent","Agent","botiumUtils","Mustache","SimpleRestContainer_1","SimpleRestContainer","queueBotSays","processInbound","redisTopic","cookies","debounceTimeout","inboundEvents","_processOrderedInboundEventsArrayAsync","debounce","events","_getMustachedVal","sortedEvents","qr","_processBodyAsync","startHook","stopHook","requestHook","parserHook","responseHook","pollRequestHook","requestHooks","SIMPLEREST_PING","SIMPLEREST_START","SIMPLEREST_STOP","agentOptions","connect","rejectUnauthorized","dispatcher","_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","_fetchify","requestOptions","signal","AbortSignal","URLSearchParams","isFromUser","updateContext","_processBodyAsyncImpl","waitProcessQueue","_emptyWaitProcessQueue","mergeMode","jsonPathsContext","jsonPathContext","contextNodes","_isAnyContextJsonPathMatch","capNameMatch","jsonPaths","jsonPathsMatch","ignoreMatch","skipMatch","_extractFrom","acceptFn","jsonPathRes","rb","flattenDeep","jsonPathRoots","jsonPathsBody","jsonPathRoot","_retrieveMedia","jsonPathMediaRoot","jsonPathsMedia","retrievedMedia","responseMedia","mime","lookup","_retrieveButtons","jsonPathButtonRoot","capPrefix","jsonPathsButtons","jsonPathsButtonsText","jsonPathsButtonsPayload","retrievedButtons","responseButtons","responseButton","retrievedButton","possibleTexts","possiblePayloads","_getCardText","responseCardText","texts","jsonPathsCards","responseCards","jsonPathsCardText","jsonPathsCardSubText","_normalizeIntent","fallbackIntents","incomprehension","confidence","Number","jsonPathIntent","jsonPathConfidence","jsonPathList","jsonPathListIntent","jsonPathListConfidence","list","intentList","intents","hasMessageText","jsonPathsTexts","responseTexts","messageTexts","messageTextIndex","botMsgRoot","beforeHookKeys","afterHookKeys","continueMatch","isTextMsg","currentMsg","last","_buildRequest","uri","bodyRaw","ok","statusText","enabled","jsonBody","errKey","_storeCookiesFromResponse","parsedBody","nonEncodedMessage","encodeURIComponent","_getCapValue","ADD_QUERY_PARAM","appendToUri","ADD_FORM_PARAM","formKey","formValue","ADD_HEADER","headerKey","headerValue","_addRequestOptions","_addRequestCookies","_waitForUrlResponse","httpConfig","tries","changeBody","capValue","template","raw","_processInboundEvent","jsonPathValue","jsonPathsSelector","isSelected","jsonPathTemplate","hasResult","check","processingEvents","count","subscribe","unsubscribe","close","_runPolling","verb","pollConfig","pollInterval","setInterval","clearInterval","merge","url","URL","host","Cookie","responseCookies","pluginResolver","containermode","getModuleVersionSafe","required","pckg","version","loadConnectorModule","tryLoadPlugin","modulepath","pluginLoaderSpec","pluginInstance","plugin","PluginVersion","tryLoadPackage","plugins","PluginConnectorContainer_1","PluginConnectorContainer","retryHelperBuild","retryHelperStart","retryHelperUserSays","retryHelperStop","retryHelperClean","GetMetaData","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","tempDirectoryCreated","sanitize","repoValidated","_getRepo","repoPrepared","containerValidated","_getContainer","containerBuilt","_loadConfigFile","configJson","files","fetchedFiles","absFilePath","_findKeyProperty","checkPropIdx","newCaps","isFinite","newCapArray","capElement","mergeKey","oldElement","newCapObject","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","csvParseSync","findTranscription","baseDir","audioFile","csvCache","onError","transcriptionFilename","transcriptionFilenameAbs","encoding","audioFileComponents","parentIndex","csvDirectory","csvFilename","csvFilenameAbs","records","skip_empty_lines","record","fnKey","transcription","transcriptionFromFilename","hasWaitForBotTimeout","transciptError","botiumCore","InboundProxy","TranscriptUtils","require$$12","ScriptingConstants","require$$13","require$$14","require$$15","LogicHookConstants","require$$16","Lib","require$$17","require$$18"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"botium-cjs.js","sources":["../src/utils/boolean.js","../src/Capabilities.js","../src/Source.js","../src/Defaults.js","../src/Fluent.js","../src/Events.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/BotiumError.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","../src/helpers/TranscriptUtils.js","../index.js"],"sourcesContent":["/**\n * Converts a value to a boolean.\n * Similar to the 'boolean' npm package implementation.\n *\n * @param {*} value - The value to convert to boolean\n * @returns {boolean} The boolean representation of the value\n */\nfunction boolean (value) {\n // Handle null and undefined\n if (value == null) {\n return false\n }\n\n // Handle boolean values\n if (typeof value === 'boolean') {\n return value\n }\n\n // Handle numbers\n if (typeof value === 'number') {\n return value !== 0 && !isNaN(value)\n }\n\n // Handle strings\n if (typeof value === 'string') {\n const normalized = value.trim().toLowerCase()\n if (normalized === 'true' || normalized === 'yes' || normalized === 'on' || normalized === '1') {\n return true\n }\n if (normalized === 'false' || normalized === 'no' || normalized === 'off' || normalized === '0' || normalized === '') {\n return false\n }\n }\n\n // For all other values, use JavaScript's truthiness\n return Boolean(value)\n}\n\nmodule.exports = { boolean }\n","module.exports = {\n PROJECTNAME: 'PROJECTNAME',\n TESTSESSIONNAME: 'TESTSESSIONNAME',\n TESTCASENAME: 'TESTCASENAME',\n TEMPDIR: 'TEMPDIR',\n SAFEDIR: 'SAFEDIR',\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 Rest 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_BODY_FROM_JSON: 'SIMPLEREST_BODY_FROM_JSON',\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_CONTEXT_IGNORE_JSONPATH: 'SIMPLEREST_CONTEXT_IGNORE_JSONPATH',\n SIMPLEREST_CONTEXT_IGNORE_MATCH: 'SIMPLEREST_CONTEXT_IGNORE_MATCH',\n SIMPLEREST_CONTEXT_SKIP_JSONPATH: 'SIMPLEREST_CONTEXT_SKIP_JSONPATH',\n SIMPLEREST_CONTEXT_SKIP_MATCH: 'SIMPLEREST_CONTEXT_SKIP_MATCH',\n SIMPLEREST_CONTEXT_CONTINUE_JSONPATH: 'SIMPLEREST_CONTEXT_CONTINUE_JSONPATH',\n SIMPLEREST_CONTEXT_CONTINUE_MATCH: 'SIMPLEREST_CONTEXT_CONTINUE_MATCH',\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_BUTTONS_TEXT_SUBJSONPATH: 'SIMPLEREST_BUTTONS_TEXT_SUBJSONPATH',\n SIMPLEREST_BUTTONS_PAYLOAD_SUBJSONPATH: 'SIMPLEREST_BUTTONS_PAYLOAD_SUBJSONPATH',\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_BUTTONS_TEXT_SUBJSONPATH: 'SIMPLEREST_CARD_BUTTONS_TEXT_SUBJSONPATH',\n SIMPLEREST_CARD_BUTTONS_PAYLOAD_SUBJSONPATH: 'SIMPLEREST_CARD_BUTTONS_PAYLOAD_SUBJSONPATH',\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 SIMPLEREST_COOKIE_REPLICATION: 'SIMPLEREST_COOKIE_REPLICATION',\n SIMPLEREST_NLP_INTENT_JSONPATH: 'SIMPLEREST_NLP_INTENT_JSONPATH',\n SIMPLEREST_NLP_CONFIDENCE_JSONPATH: 'SIMPLEREST_NLP_CONFIDENCE_JSONPATH',\n SIMPLEREST_NLP_CONFIDENCE_DIVIDEBY100: 'SIMPLEREST_NLP_CONFIDENCE_DIVIDEBY100',\n SIMPLEREST_NLP_FALLBACK_INTENTS: 'SIMPLEREST_NLP_FALLBACK_INTENTS',\n SIMPLEREST_NLP_LIST_JSONPATH: 'SIMPLEREST_NLP_LIST_JSONPATH',\n SIMPLEREST_NLP_LIST_INTENT_JSONPATH: 'SIMPLEREST_NLP_LIST_INTENT_JSONPATH',\n SIMPLEREST_NLP_LIST_CONFIDENCE_JSONPATH: 'SIMPLEREST_NLP_LIST_CONFIDENCE_JSONPATH',\n /**\n * Single response can contain a list of messages. This capability defines how to merge the list into a single message.\n * It can be 'OFF' (default), 'MERGE_TEXT'\n * @type {string}\n * @default 'OFF'\n * @description Merge message list into single message\n */\n SIMPLEREST_MESSAGE_LIST_MERGE: 'SIMPLEREST_MESSAGE_LIST_MERGE',\n\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 // hidden capability. All newly in Box created testsets will have this as true. CsvCompiler\n // - throws less error (Box reads csv files as utterances, and convo. Compiler cant throw exception if a file is correct, but box tries to load it with incorrect script type)\n // 4 or more colums are compiled just as utterances.\n SCRIPTING_CSV_LEGACY_MODE_OFF: 'SCRIPTING_CSV_LEGACY_MODE_OFF',\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_CSV_UTTERANCE_STARTROW: 'SCRIPTING_CSV_UTTERANCE_STARTROW',\n SCRIPTING_CSV_UTTERANCE_STARTROW_HEADER: 'SCRIPTING_CSV_UTTERANCE_STARTROW_HEADER',\n SCRIPTING_CSV_UTTERANCE_STOP_ON_EMPTY: 'SCRIPTING_CSV_UTTERANCE_STOP_ON_EMPTY',\n SCRIPTING_NORMALIZE_TEXT: 'SCRIPTING_NORMALIZE_TEXT',\n SCRIPTING_NORMALIZE_TEXT_REMOVE_CHARACTERES: 'SCRIPTING_NORMALIZE_TEXT_REMOVE_CHARACTERES',\n SCRIPTING_NORMALIZE_TEXT_REMOVE_REGEXP: 'SCRIPTING_NORMALIZE_TEXT_REMOVE_REGEXP',\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, wer\n SCRIPTING_MATCHING_MODE: 'SCRIPTING_MATCHING_MODE',\n SCRIPTING_MATCHING_MODE_ARGS: 'SCRIPTING_MATCHING_MODE_ARGS',\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_INCOMPREHENSIONINTENTS: 'SCRIPTING_UTTEXPANSION_INCOMPREHENSIONINTENTS',\n SCRIPTING_UTTEXPANSION_INCOMPREHENSIONUTTS: 'SCRIPTING_UTTEXPANSION_INCOMPREHENSIONUTTS',\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 SCRIPTING_CONVO_STEP_PARAMETERS: 'SCRIPTING_CONVO_STEP_PARAMETERS',\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.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.SIMPLEREST_COOKIE_REPLICATION]: true,\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_UTTEXPANSION_INCOMPREHENSION]: null,\n [Capabilities.SCRIPTING_UTTEXPANSION_INCOMPREHENSIONINTENTS]: [],\n [Capabilities.SCRIPTING_UTTEXPANSION_INCOMPREHENSIONUTTS]: [],\n [Capabilities.SCRIPTING_UTTEXPANSION_USENAMEASINTENT]: false,\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 CONVO_STEP_NEXT: 'CONVO_STEP_NEXT',\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}\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 { name: 'TEXT_WER', className: 'WerAsserter' },\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 { name: 'CONDITIONAL_STEP_TIME_BASED', className: 'ConditionalTimeBasedLogicHook' },\n { name: 'CONDITIONAL_STEP_BUSINESS_HOURS', className: 'ConditionalBusinessHoursLogicHook' },\n { name: 'CONDITIONAL_STEP_CAPABILITY_VALUE_BASED', className: 'ConditionalCapabilityValueBasedLogicHook' },\n { name: 'CONDITIONAL_STEP_JSON_PATH_BASED', className: 'ConditionalJsonPathBasedLogicHook.js' },\n { name: 'CONVO_STEP_PARAMETERS', className: 'ConvoStepParametersLogicHook.js' },\n { name: 'ORDERED_LIST_TO_BUTTON', className: 'OrderedListToButtonLogicHook' }\n ],\n DEFAULT_USER_INPUTS: [\n { name: 'BUTTON', className: 'ButtonInput' },\n { name: 'MEDIA', className: 'MediaInput' },\n { name: 'FORM', className: 'FormInput' }\n ],\n LOGIC_HOOK_EVENTS: ['onConvoBegin', 'onMeStart', 'onMePrepare', 'onMeEnd', 'onBotStart', 'onBotEnd', 'onBotPrepare', 'onConvoEnd']\n}\n","const util = require('util')\nconst path = require('path')\nconst fs = require('fs')\nconst isClass = require('is-class')\nconst debug = require('debug')('botium-core-asserterUtils')\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.globalAsserterNames = []\n this.logicHooks = {}\n this.globalLogicHookNames = []\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.globalAsserterNames.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.globalLogicHookNames.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 getGlobalAsserters () {\n return this.globalAsserterNames.reduce((agg, name) => ({ ...agg, [name]: this.asserters[name] }), {})\n }\n\n getGlobalLogicHooks () {\n return this.globalLogicHookNames.reduce((agg, name) => ({ ...agg, [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 || src === asserter.name)\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 || src === lh.name)\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 || src === ui.name)\n if (ui) {\n return new (ui.Class)({ ref, ...this.buildScriptContext }, this.caps, args)\n }\n }\n\n const allowUnsafe = !!this.caps[Capabilities.SECURITY_ALLOW_UNSAFE]\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('Either class or function or PluginClass field expected')\n }\n } catch (err) {\n throw new Error(`Logic Hook specification ${ref} ${hookType} (${packageName}) invalid: ${err.message}`)\n }\n }\n\n const typeAsText = hookType === 'asserter' ? 'Asserter' : hookType === 'logichook' ? 'Logic Hook' : hookType === 'userinput' ? 'User Input' : 'Unknown'\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(`${typeAsText} specification ${ref} from class invalid: ${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(`${typeAsText} specification ${ref} from function invalid: ${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 {\n throw new Error(`Script ${key} is not valid - only functions accepted`)\n }\n }\n return result\n }, {})\n return hookObject\n } catch (err) {\n throw new Error(`${typeAsText} specification ${ref} ${hookType} from provided src (${util.inspect(src)}) invalid: ${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.substring(0, src.lastIndexOf('/')),\n tryLoadAsserterByName: src.substring(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('Expected class or function')\n }\n }\n\n for (const tryLoad of tryLoads) {\n if (this.caps.SAFEDIR) {\n const tryLoadFile = path.resolve(this.caps.SAFEDIR, tryLoad.tryLoadPackageName)\n if (tryLoadFile.startsWith(path.resolve(this.caps.SAFEDIR))) {\n if (fs.existsSync(tryLoadFile)) {\n try {\n return tryLoadFromSource(tryLoadFile, tryLoad.tryLoadAsserterByName)\n } catch (err) {\n loadErr.push(`${typeAsText} specification ${ref} ${hookType} from \"${src}\" invalid: ${err.message} `)\n }\n }\n }\n }\n if (allowUnsafe || tryLoad.tryLoadPackageName.startsWith('botium-')) {\n try {\n return tryLoadFromSource(tryLoad.tryLoadPackageName, tryLoad.tryLoadAsserterByName)\n } catch (err) {\n loadErr.push(`${typeAsText} specification ${ref} ${hookType} from \"${src}\" invalid: ${err.message} `)\n }\n }\n }\n\n loadErr.forEach(debug)\n }\n throw new Error(`${typeAsText} specification ${ref} ${hookType} from \"${util.inspect(src)}\" invalid : no loader available`)\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 this.not = fromJson.not\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')\nconst speechScorer = require('word-error-rate')\nconst debug = require('debug')('botium-core-scripting-helper')\n\nconst { E_SCRIPTING_MEMORY_COLUMN_MODE } = require('../Enums')\nconst Capabilities = require('../Capabilities')\nconst WHITE_SPACES_EXCEPT_SPACE_CHAR_AT_THE_END = /[\\n\\t\\r]+$/\n\nconst normalizeText = (str, doCleanupOrCaps) => {\n // TODO testlog\n debug('yxc1', doCleanupOrCaps)\n let basic\n let charactersRemove = false\n let regexpRemove = false\n if (_.isBoolean(doCleanupOrCaps) || _.isNil(doCleanupOrCaps)) {\n debug('Normalize text: backward compatibility mode. Use caps instead of boolean flag')\n basic = !!doCleanupOrCaps\n } else {\n const caps = doCleanupOrCaps\n basic = !!caps[Capabilities.SCRIPTING_NORMALIZE_TEXT]\n if (caps[Capabilities.SCRIPTING_NORMALIZE_TEXT_REMOVE_CHARACTERES]) {\n charactersRemove = caps[Capabilities.SCRIPTING_NORMALIZE_TEXT_REMOVE_CHARACTERES]\n if (_.isString(charactersRemove)) {\n const splitted = charactersRemove.split(/(?<!\\/),/).map(e => e.trim()).map(e => e.split('/,').join(',').split('//').join('/')).filter(c => c.length > 0)\n charactersRemove = splitted.length ? splitted : [charactersRemove]\n } else if (!_.isArray(charactersRemove)) {\n charactersRemove = false\n }\n }\n if (caps[Capabilities.SCRIPTING_NORMALIZE_TEXT_REMOVE_REGEXP]) {\n regexpRemove = new RegExp(caps[Capabilities.SCRIPTING_NORMALIZE_TEXT_REMOVE_REGEXP], 'ug')\n }\n }\n\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\n if (str) {\n if (basic) {\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 if (charactersRemove) {\n for (const character of charactersRemove) {\n str = str.split(character).join('')\n }\n }\n if (regexpRemove) {\n str = str.replace(regexpRemove, '')\n }\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) || _.isNil(value)) return ''\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 toString(str).split('\\n').map(s => s.trim()).join(' ') || ''\n}\n\nconst _formatAppendArgs = (args) => {\n return (args && args.length > 0 && _.isArray(args) && ` ${args.map(a => _.isString(a) ? a.replace(/\\|/g, '\\\\|') : `${a}`).join('|')}`) || ''\n}\nconst _parseArgs = (str) => {\n return (str && str.length > 0 && str.replace(/\\\\\\|/g, '###ESCAPESPLIT###').split('|').map(s => s.replace(/###ESCAPESPLIT###/g, '|').trim())) || []\n}\n\nconst linesToConvoStep = (lines, sender, context, eol = '\\n', 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 ? _parseArgs(logicLine.substr(name.length + 1)) : [])\n convoStep.asserters.push({ name, args, not, optional })\n } else if (sender === 'me' && context.IsUserInputValid(name)) {\n const args = (logicLine.length > name.length ? _parseArgs(logicLine.substr(name.length + 1)) : [])\n convoStep.userInputs.push({ name, args })\n textLinesAccepted = false\n } else if (context.IsLogicHookValid(name)) {\n const args = (logicLine.length > name.length ? _parseArgs(logicLine.substr(name.length + 1)) : [])\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 = trimExceptSpaceEnd(textLines.join(eol))\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 trimExceptSpaceEnd = (string) => {\n return string?.replace(WHITE_SPACES_EXCEPT_SPACE_CHAR_AT_THE_END, '')\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 (!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${_formatAppendArgs([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 } else if (step.sourceData) {\n lines.push(JSON.stringify(step.sourceData, null, 2))\n }\n step.userInputs && step.userInputs.forEach((userInput) => {\n lines.push(userInput.name + _formatAppendArgs(userInput.args))\n })\n step.logicHooks && step.logicHooks.forEach((logicHook) => {\n lines.push(logicHook.name + _formatAppendArgs(logicHook.args))\n })\n } else {\n if (step.messageText) {\n lines.push((step.optional ? '?' : '') + (step.not ? '!' : '') + step.messageText)\n } else {\n if (step.optional) {\n lines.push('?')\n }\n }\n if (step.buttons && step.buttons.length > 0) lines.push('BUTTONS' + _formatAppendArgs(step.buttons.filter(b => b.text).map(b => flatString(b.text))))\n if (step.media && step.media.length > 0) lines.push('MEDIA' + _formatAppendArgs(step.media.filter(m => !m.buffer && m.mediaUri).map(m => m.mediaUri)))\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' + _formatAppendArgs(cardTexts.map(c => flatString(c))))\n\n if (c.buttons && c.buttons.length > 0) lines.push('BUTTONS' + _formatAppendArgs(c.buttons.filter(b => b.text).map(b => flatString(b.text))))\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 + _formatAppendArgs(asserter.args))\n })\n step.logicHooks && step.logicHooks.forEach((logicHook) => {\n lines.push(logicHook.name + _formatAppendArgs(logicHook.args))\n })\n }\n return lines\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 }\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\nconst calculateWer = (str, pattern) => {\n const _prepareString = (str, remWildcard = false) => {\n if (remWildcard) return str.replace(/[.,/#!$%^&;:*{}=\\-_`~()]/g, '').toLowerCase()\n return str.replace(/[.,/#!$%^&;:{}=\\-_`~()]/g, '').toLowerCase()\n }\n\n const _getSubsets = (array, size) => {\n const subsets = []\n for (const index in array) {\n const end = parseInt(index) + size\n if (end <= array.length) { subsets.push(array.slice(index, end)) }\n }\n return subsets\n }\n\n const _getWords = str => str.split(' ').map(w => w.trim())\n\n const _getErrors = (words1, words2) => words1.map((w, i) => {\n return w !== words2[i]\n })\n\n const utterance = pattern\n\n const botMessage = _prepareString(str)\n const botMessageWords = botMessage.split(' ').map(bm => bm.trim())\n const utt = _prepareString(utterance)\n\n // if no wildcards, just calculate WER\n if (utt.indexOf('*') === -1) return speechScorer.wordErrorRate(botMessage, utt).toFixed(2)\n\n // if there are wildcards, calculate WER for each wildcard part\n const errors = []\n for (let wildcardPart of utt.split('*')) {\n let wer = 1\n wildcardPart = wildcardPart.trim()\n if (wildcardPart.length === 0) {\n errors.push([false])\n continue\n }\n const wordCount = wildcardPart.split(' ').length\n const subsetPhrases = _getSubsets(botMessageWords, Math.min(wordCount, botMessageWords.length)).map(subset => subset.join(' '))\n let subsetPhraseFound = null\n for (const subsetPhrase of subsetPhrases) {\n const localWer = speechScorer.wordErrorRate(subsetPhrase, wildcardPart).toFixed(2)\n if (localWer <= wer) {\n subsetPhraseFound = subsetPhrase\n wer = localWer\n }\n }\n if (_.isNil(subsetPhraseFound)) {\n throw new Error('Word Error Asserter: When using wild cards, please make sure that the length of the asserter text is smaller than the bot message!')\n }\n errors.push(_getErrors(_getWords(wildcardPart), _getWords(subsetPhraseFound)))\n }\n let errCount = 0\n let allCount = 0\n for (const err of errors) {\n errCount += err.filter(err => err === true).length\n allCount += err.length\n }\n debug(`Word Error Rate Asserter - Compared Bot Message '${botMessage}' / '${utt}': ${(errCount / allCount).toFixed(2)}`)\n return (errCount / allCount).toFixed(2)\n}\n\nconst toPercent = (s) => `${(s * 100).toFixed(0)}%`\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 calculateWer,\n toPercent,\n trimExceptSpaceEnd\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 hasError ({ type, source }) {\n if (this.context) {\n const errArr = _.isArray(this.context) ? this.context : [this.context]\n for (const err of errArr) {\n if (err.type === 'list') {\n for (const internal of err.errors) {\n if ((!type || internal.type === type) && (!source || internal.source === source)) {\n return true\n }\n }\n }\n if ((!type || err.type === type) && (!source || err.source === source)) {\n return true\n }\n }\n } else {\n return false\n }\n }\n\n toArray () {\n if (this.context) {\n let result = []\n const errArr = _.isArray(this.context) ? this.context : [this.context]\n for (const err of errArr) {\n if (err.type === 'list') {\n result = result.concat(err.errors)\n } else {\n result.push(err)\n }\n }\n return result\n } else {\n return []\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, context = {}) => {\n if (err instanceof BotiumError) {\n return new BotiumError(message, { ...err.context, ...context }, true)\n } else {\n return new BotiumError(message, { err, ...context }, 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 util = require('util')\nconst debug = require('debug')('botium-core-ScriptingMemory')\nconst randomize = require('randomatic')\nconst { v1: uuidv1 } = require('uuid')\nconst moment = require('moment')\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 $tomorrow: (pattern) => {\n if (pattern) {\n return moment().add(1, 'day').format(pattern)\n }\n return moment().add(1, 'day').toDate().toLocaleDateString()\n },\n $yesterday: (pattern) => {\n if (pattern) {\n return moment().subtract(1, 'day').format(pattern)\n }\n return moment().subtract(1, 'day').toDate().toLocaleDateString()\n },\n\n $date_add: (amount, unit, pattern) => {\n if (pattern) {\n return moment().add(amount, unit).format(pattern)\n }\n return moment().add(amount, unit).toDate().toLocaleDateString()\n },\n $date_subtract: (amount, unit, pattern) => {\n if (pattern) {\n return moment().subtract(amount, unit).format(pattern)\n }\n return moment().subtract(amount, unit).toDate().toLocaleDateString()\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\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 let args = [arg]\n if (SCRIPTING_FUNCTIONS[key].numberOfArguments > 1) {\n args = arg.split(',')\n }\n args = args.map(arg => {\n arg = arg.trim()\n if (arg.startsWith('\"') && arg.endsWith('\"')) {\n return arg.substring(1, arg.length - 1)\n } else {\n return arg\n }\n })\n args = args.map(arg => {\n const argStr = `${arg}`\n if (argStr.startsWith('$')) {\n return scriptingMemory[argStr.substring(1)] || arg\n }\n return arg\n })\n str = str.replace(match, SCRIPTING_FUNCTIONS[key].handler(caps, ...args, 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(' ') : '') +\n (this.logicHooks && this.logicHooks.length > 0 ? ' ' + this.logicHooks.map(l => l.toString()).join(' ') : '') +\n (this.userInputs && this.userInputs.length > 0 ? ' ' + this.userInputs.map(u => u.toString()).join(' ') : '')\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 {\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 })\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 })\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 })\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 transcript.steps = transcriptSteps\n try {\n let lastMeConvoStep = null\n let botMsg = null\n let waitForBotSays = true\n let skipTranscriptStep = false\n let conditionalGroupId = null\n let conditionMetInGroup = false\n let skipOptionalStep = false\n // If there are optional step(s) in the conversation, and the message from the bot fails on each optional bot step(s) and/or mandatory bot step, then we have an unexpected message.\n // So in this case an unexpected error should be shown instead of the latest assertion error.\n let optionalStepAssertionError = false\n let globalConvoStepParameters = container.caps[Capabilities.SCRIPTING_CONVO_STEP_PARAMETERS] || {}\n let retryBotMessageTimeoutEnd = null\n let retryBotMessageConvoId = null\n let retryBotMessageDropBotResponse = false\n for (let i = 0; i < this.conversation.length; i = (retryBotMessageDropBotResponse ? i : i + 1)) {\n retryBotMessageDropBotResponse = false\n const convoStep = this.conversation[i]\n if (!convoStep.optional) {\n skipOptionalStep = false\n }\n if (convoStep.optional && skipOptionalStep) {\n // If there are multiple optional steps, and the previous optional step was timeout, then the next optional step should be skipped to prevent too long convo run with multiple timeout.\n continue\n }\n const rawConvoStepParameters = convoStep.logicHooks.find(lh => lh.name === 'CONVO_STEP_PARAMETERS')?.args\n let convoStepParameters = {}\n if (rawConvoStepParameters && rawConvoStepParameters.length) {\n let params\n if (rawConvoStepParameters[0].trim().startsWith('{')) {\n try {\n params = JSON.parse(rawConvoStepParameters[0])\n } catch (e) {\n debug(`${this.header.name}/${convoStep.stepTag}: Failed to parse convo step parameters from JSON ${rawConvoStepParameters[0]}`)\n }\n }\n if (!params || !Object.keys(params).length) {\n params = {}\n for (const param of rawConvoStepParameters) {\n const semicolon = param.indexOf(':')\n if (semicolon) {\n try {\n const name = param.substring(0, semicolon)\n const value = param.substring(semicolon + 1)\n params[name] = value\n } catch (e) {\n debug(`${this.header.name}/${convoStep.stepTag}: Failed to parse convo step parameter from arg ${param}`)\n }\n }\n }\n }\n\n if (convoStep.sender === 'begin') {\n globalConvoStepParameters = Object.assign({}, globalConvoStepParameters || {}, params)\n } else {\n convoStepParameters = Object.assign({}, globalConvoStepParameters || {}, params)\n }\n } else {\n if (convoStep.sender !== 'begin') {\n convoStepParameters = globalConvoStepParameters\n }\n }\n\n if (Object.keys(convoStepParameters).length) {\n debug(`${this.header.name}: using convo step parameters ${JSON.stringify(convoStepParameters)}`)\n }\n\n const currentStepIndex = i\n container.eventEmitter.emit(Events.CONVO_STEP_NEXT, container, convoStep, 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[Capabilities.SIMULATE_WRITING_SPEED] && meMsg.messageText && meMsg.messageText.length) {\n setTimeout(() => resolve(), container.caps[Capabilities.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 (this.scriptingEvents.executeBotStep) {\n const executeBotStepResult = await this.scriptingEvents.executeBotStep({ convo: this, convoStep, container, scriptingMemory, transcript, transcriptStep, transcriptSteps })\n if (executeBotStepResult) {\n skipTranscriptStep = true\n continue\n }\n }\n\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, convoStepParameters?.stepTimeout)\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 if (!(err.message.indexOf('Bot did not respond within') < 0) && convoStep.optional) {\n skipOptionalStep = true\n continue\n }\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 (convoStep.conditional) {\n waitForBotSays = false\n let endOfConditionalGroup = false\n conditionalGroupId = convoStep.logicHooks.find(lh => lh.name.startsWith('CONDITIONAL_STEP')).args[1]\n const nextConvoStep = this.conversation[i + 1]\n\n if (!nextConvoStep || nextConvoStep.sender !== 'bot' || !nextConvoStep.logicHooks || !nextConvoStep.logicHooks.some(lh => lh.name.toUpperCase().startsWith('CONDITIONAL_STEP'))) {\n endOfConditionalGroup = true\n } else {\n const nextConditionalLogicHook = nextConvoStep.logicHooks.find(lh => lh.name.startsWith('CONDITIONAL_STEP'))\n endOfConditionalGroup = conditionalGroupId !== nextConditionalLogicHook.args[1]\n }\n\n if (convoStep.conditional.skip || conditionMetInGroup) {\n skipTranscriptStep = true\n if (endOfConditionalGroup && !conditionMetInGroup && !convoStep.optional) {\n const failErr = new BotiumError(`${this.header.name}/${convoStep.stepTag}: Non of the conditions are met in ${conditionalGroupId ? `'${conditionalGroupId}' ` : ''}condition group`)\n debug(failErr)\n throw failErr\n }\n if (endOfConditionalGroup) {\n waitForBotSays = !convoStep.optional\n conditionalGroupId = undefined\n conditionMetInGroup = false\n }\n continue\n } else {\n conditionMetInGroup = true\n if (endOfConditionalGroup) {\n waitForBotSays = !convoStep.optional\n conditionalGroupId = undefined\n conditionMetInGroup = false\n }\n }\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 const retryConfig = convoStepParameters?.ignoreNotMatchedBotResponses\n const retryOn = convoStep.sender === 'bot' && retryConfig && retryConfig.timeout && retryConfig.mainAsserter\n if (convoStep.optional && nextConvoStep && nextConvoStep.sender === 'bot') {\n if (retryOn) {\n debug(`${this.header.name}/${convoStep.stepTag}: Retry failed asserter is ignored on optional convo`)\n }\n waitForBotSays = false\n skipTranscriptStep = true\n optionalStepAssertionError = true\n return true\n } else if (retryOn) {\n if (!retryBotMessageTimeoutEnd || retryBotMessageConvoId !== convoStep.stepTag) {\n retryBotMessageTimeoutEnd = transcriptStep.stepBegin.getTime() + +retryConfig.timeout\n retryBotMessageConvoId = convoStep.stepTag\n }\n\n const now = new Date().getTime()\n const timeoutRemaining = retryBotMessageTimeoutEnd - now\n if (timeoutRemaining > 0) {\n debug(`${this.header.name}/${convoStep.stepTag}: Convo step retry on, timeout remaining: ${timeoutRemaining}, error: \"${err.message}\"`)\n retryBotMessageDropBotResponse = true\n return false\n } else {\n debug(`${this.header.name}/${convoStep.stepTag}: Convo step retry on, but timeout is over. error: \"${err.message}\"`)\n }\n }\n\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n if (optionalStepAssertionError) {\n optionalStepAssertionError = false\n assertErrors.push(new BotiumError(`${this.header.name}: Unexpected message.`))\n } else {\n assertErrors.push(err)\n }\n return false\n } else {\n if (optionalStepAssertionError) {\n optionalStepAssertionError = false\n throw new BotiumError(`${this.header.name}: Unexpected message.`)\n }\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, convoStepParameters)\n optionalStepAssertionError = false\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, convoStepParameters)\n optionalStepAssertionError = false\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, convoStepParameters)\n optionalStepAssertionError = false\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, transcriptSteps })\n await this.scriptingEvents.onBotEnd({ convo: this, convoStep, container, scriptingMemory, botMsg, transcript, transcriptStep })\n optionalStepAssertionError = false\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 optionalStepAssertionError = true\n continue\n }\n\n const errors = err.toArray ? err.toArray() : []\n const retryConfig = convoStepParameters?.ignoreNotMatchedBotResponses\n const retryOn =\n convoStep.sender === 'bot' &&\n retryConfig &&\n retryConfig.timeout &&\n errors.length &&\n errors.filter(({ type, source, asserter }) => type === 'asserter' && (retryConfig.allAsserters || (retryConfig.asserters && retryConfig.asserters.includes(asserter)))).length\n if (retryOn && (!retryBotMessageTimeoutEnd || retryBotMessageConvoId !== convoStep.stepTag)) {\n retryBotMessageTimeoutEnd = transcriptStep.stepBegin.getTime() + +retryConfig.timeout\n retryBotMessageConvoId = convoStep.stepTag\n }\n\n const now = new Date().getTime()\n const timeoutRemaining = retryOn && (retryBotMessageTimeoutEnd - now)\n if (retryOn && timeoutRemaining > 0) {\n debug(`${this.header.name}/${convoStep.stepTag}: Convo step retry on, timeout remaining: ${timeoutRemaining}, error: \"${err.message}\"`)\n retryBotMessageDropBotResponse = true\n } else {\n if (retryOn && timeoutRemaining <= 0) {\n debug(`${this.header.name}/${convoStep.stepTag}: Convo step retry on, but timeout is over. error: \"${err.message}\"`)\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 if (optionalStepAssertionError) {\n optionalStepAssertionError = false\n assertErrors.push(new BotiumError(`${this.header.name}: Unexpected message.`))\n } else {\n assertErrors.push(err)\n }\n } else {\n if (optionalStepAssertionError) {\n optionalStepAssertionError = false\n throw new BotiumError(`${this.header.name}: Unexpected message.`)\n }\n throw failErr\n }\n }\n }\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n if (assertErrors.length > 0) {\n // this has no effect, but logically it has to be false\n retryBotMessageDropBotResponse = false\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.filter(err => err !== transcript.err), transcript.err].filter(e => e), {})\n }\n }\n }\n }\n\n _compareObject (container, scriptingMemory, convoStep, result, expected, botMsg, convoStepParameters) {\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], null, convoStepParameters)\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], null, convoStepParameters)\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}`, null, convoStepParameters)\n }\n }\n\n GetScriptingMemoryAllVariables (container) {\n const partialConvos = this.context.GetPartialConvos()\n\n const variableNames = this.conversation.reduce((acc, convoStep) => {\n if (convoStep.sender === 'include') {\n if (convoStep.channel) {\n const partialConvo = partialConvos[convoStep.channel]\n if (partialConvo) {\n acc = [...acc, ...partialConvo.GetScriptingMemoryAllVariables(container)]\n }\n }\n if (convoStep.messageText) {\n for (const partialConvoName of splitStringInNonEmptyLines(convoStep.messageText)) {\n const partialConvo = partialConvos[partialConvoName]\n if (partialConvo) {\n acc = [...acc, ...partialConvo.GetScriptingMemoryAllVariables(container)]\n }\n }\n }\n } else {\n acc = [...acc, ...this.GetScriptingMemoryVariables(container, convoStep.messageText)]\n\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 acc = [...acc, ...__extractFromArgs(convoStep.asserters)]\n acc = [...acc, ...__extractFromArgs(convoStep.logicHooks)]\n acc = [...acc, ...__extractFromArgs(convoStep.userInputs)]\n\n convoStep.logicHooks.forEach((logicHook) => {\n if (logicHook.name === LOGIC_HOOK_INCLUDE) {\n const partialConvo = partialConvos[logicHook.args[0]]\n if (partialConvo) {\n acc = [...acc, ...partialConvo.GetScriptingMemoryAllVariables(container)]\n }\n }\n })\n }\n return acc\n }, [])\n\n return _.uniq(variableNames)\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[Capabilities.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)\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.exports = {\n Convo,\n ConvoHeader,\n ConvoStep,\n ConvoStepAssert,\n ConvoStepLogicHook,\n ConvoStepUserInput,\n Transcript,\n TranscriptAttachment,\n TranscriptStep,\n TranscriptError\n}\n","const util = require('util')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-core-RetryHelper')\n\nmodule.exports = class RetryHelper {\n constructor (caps, section, options = {}) {\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 // to turn on retries, NUMRETRIES or ONERROR_REGEXP has to be set\n this.retrySettings = {\n retries: caps[`RETRY_${section.toUpperCase()}_NUMRETRIES`] || (!_.isNil(options.numRetries) ? options.numRetries : (this.retryErrorPatterns.length === 0) ? 0 : 1),\n factor: caps[`RETRY_${section.toUpperCase()}_FACTOR`] || (_.isNil(options.factor) ? 1 : options.factor),\n minTimeout: caps[`RETRY_${section.toUpperCase()}_MINTIMEOUT`] || (_.isNil(options.minTimeout) ? 1000 : options.minTimeout)\n }\n if (this.retrySettings.retries > 0) {\n debug(`Retry for ${section} is enabled. Settings: ${JSON.stringify(this.retrySettings)} Patterns: ${JSON.stringify(this.retryErrorPatterns.map(r => r.toString()))}`)\n }\n }\n\n shouldRetry (err, currentRetryCount) {\n if (!err) return false\n if (!this.retrySettings.retries) return false\n if (this.retrySettings.retries < currentRetryCount) return false\n if (this.retryErrorPatterns.length === 0) return true\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')\nconst debug = require('debug')('botium-core-MatchFunctions')\n\nconst { toString, quoteRegexpString, calculateWer } = require('./helper')\n\nconst _normalize = (botresponse, args, convoStepParameters) => {\n if (!convoStepParameters) {\n debug('Convo step parameters might be missing!')\n }\n if (_.isUndefined(botresponse) || _.isNil(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, args, convoStepParameters) => {\n if (!convoStepParameters) {\n debug('Convo step parameters might be missing!')\n }\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, args, convoStepParameters) => {\n if (!convoStepParameters) {\n debug('Convo step parameters might be missing!')\n }\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, args, convoStepParameters) => {\n if (!convoStepParameters) {\n debug('Convo step parameters might be missing!')\n }\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, args, convoStepParameters) => {\n if (!convoStepParameters) {\n debug('Convo step parameters might be missing!')\n }\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, args, convoStepParameters) => {\n if (!convoStepParameters) {\n debug('Convo step parameters might be missing!')\n }\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 wer = () => (botresponse, utterance, args, convoStepParameters) => {\n if (!convoStepParameters) {\n debug('Convo step parameters might be missing!')\n }\n botresponse = _normalize(botresponse || '')\n utterance = toString(utterance || '')\n\n const threshold = !_.isNil(convoStepParameters?.matchingModeWer) ? (convoStepParameters?.matchingModeWer / 100) : ([',', '.'].find(p => `${args[0]}`.includes(p)) ? parseFloat(args[0]) : parseInt(args[0]) / 100)\n return calculateWer(botresponse, utterance) <= threshold\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 if (matchingMode === 'wer') {\n return wer()\n } else {\n return equals(false)\n }\n}\n\nmodule.exports = {\n regexp,\n wildcard,\n wildcardExact,\n include,\n equals,\n wer,\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 } : { '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 _ = require('lodash')\nconst debug = require('debug')('botium-core-HookUtils')\n\nconst Capabilities = require('../Capabilities')\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 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 if (caps.SAFEDIR) {\n const tryLoadFile = path.resolve(caps.SAFEDIR, data)\n if (tryLoadFile.startsWith(path.resolve(caps.SAFEDIR))) {\n if (fs.existsSync(tryLoadFile)) {\n try {\n const resultWithRequire = require(tryLoadFile)\n if (_.isFunction(resultWithRequire)) {\n debug(`found hook, type: safedir, in ${tryLoadFile}`)\n return resultWithRequire\n } else {\n throw new Error(`Expected function from hook specification \"${util.inspect(data)}\", got: \"${util.inspect(resultWithRequire)}\"`)\n }\n } catch (err) {\n debug(`Failed loading hook, type: safedir, from ${tryLoadFile} failed: ${err.message || err}`)\n }\n }\n }\n }\n if (allowUnsafe || data.startsWith('botium-')) {\n const tryLoadFile = data\n try {\n const resultWithRequire = require(tryLoadFile)\n if (_.isFunction(resultWithRequire)) {\n debug(`found hook, type: require, in ${tryLoadFile}`)\n return resultWithRequire\n } else {\n throw new Error(`Expected function from hook specification \"${util.inspect(data)}\", got: \"${util.inspect(resultWithRequire)}\"`)\n }\n } catch (err) {\n debug(`Failed loading hook, type: require, from ${tryLoadFile} failed: ${err.message || err}`)\n }\n }\n }\n throw new Error(`Hook specification \"${util.inspect(data)}\" invalid: no loader available`)\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 // it is not used anymore?\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 })\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 })\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, trimExceptSpaceEnd } = require('./helper')\n\nmodule.exports = class CompilerTxt extends CompilerBase {\n constructor (context, caps = {}) {\n super(context, caps)\n\n this.eolRead = caps[Capabilities.SCRIPTING_TXT_EOL] || /\\r\\n|\\r|\\n/\n this.eolWrite = (caps[Capabilities.SCRIPTING_TXT_EOL] && !_.isRegExp(caps[Capabilities.SCRIPTING_TXT_EOL])) ? caps[Capabilities.SCRIPTING_TXT_EOL] : '\\n'\n }\n\n Validate () {\n super.Validate()\n }\n\n GetHeaders (scriptBuffer) {\n let scriptData = scriptBuffer\n if (Buffer.isBuffer(scriptBuffer)) scriptData = scriptData.toString()\n\n const lines = scriptData.split(this.eolRead)\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 = scriptData.split(this.eolRead)\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)\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.eolWrite)\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 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].trim(), utterances: lines.length > 1 ? lines.slice(1).map(line => trimExceptSpaceEnd(line)) : [] })]\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.eolWrite\n }\n if (convo.header.description) {\n script += convo.header.description + this.eolWrite\n }\n\n convo.conversation.forEach((step) => {\n script += this.eolWrite\n\n script += '#' + step.sender\n if (step.channel && step.channel !== 'default') {\n script += ' ' + step.channel\n }\n script += this.eolWrite\n\n const stepLines = convoStepToLines(step)\n if (stepLines && stepLines.length > 0) script += stepLines.join(this.eolWrite) + this.eolWrite\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 const legacyModeOn = !this._GetOptionalCapability(Capabilities.SCRIPTING_CSV_LEGACY_MODE_OFF, false)\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 relax_column_count: true\n })\n } catch (err) {\n throw new Error(`Invalid CSV: ${err.message || err}`)\n }\n if (rows.length === 0) {\n return []\n }\n const columnCount = rows[0].length\n debug(`Legacy mode ${legacyModeOn ? 'on' : 'off'} rows ${rows.length} columns ${columnCount}`)\n\n if ((scriptType === Constants.SCRIPTING_TYPE_CONVO || scriptType === Constants.SCRIPTING_TYPE_PCONVO)) {\n if (columnCount === 1 || (!legacyModeOn && columnCount > 3)) {\n debug(`Invalid column count '${columnCount}' in convo mode`)\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 debug('Datarows not found in convo mode')\n return []\n }\n\n const lineNumberBase = this.caps[Capabilities.SCRIPTING_CSV_SKIP_HEADER] ? 2 : 1\n if (columnCount === 2) {\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 debug(`Found 2-column CSV file, treating it as question/answer file, extracted ${convos.length} convos`)\n return convos\n }\n\n if (columnCount >= 3) {\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 debug(`Found 3-column CSV file, treating it as multi-row conversation file, extracted ${convos.length} convos`)\n return convos\n }\n } else if (scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n if (columnCount === 2 || columnCount === 3 || (legacyModeOn && columnCount > 4)) {\n debug(`Invalid column count '${columnCount}' in utterances mode`)\n return []\n }\n const result = []\n const startRow = this._GetOptionalCapability(Capabilities.SCRIPTING_CSV_UTTERANCE_STARTROW, 2) - 1\n const startRowHeader = this._GetOptionalCapability(Capabilities.SCRIPTING_CSV_UTTERANCE_STARTROW_HEADER)\n const stopOnEmpty = this._GetOptionalCapability(Capabilities.SCRIPTING_CSV_UTTERANCE_STOP_ON_EMPTY)\n\n for (let col = 0; col < columnCount; col++) {\n const name = rows[0][col]\n if (!name || name.trim().length === 0) {\n debug(`Column ${col + 1} has no header, skipping`)\n continue\n }\n\n const uttStruct = {\n name,\n utterances: []\n }\n let skip = !!startRowHeader\n const getData = (row) => {\n return rows[row][col] ? rows[row][col].trim() : false\n }\n //\n for (let row = startRow; row < rows.length && (skip || !stopOnEmpty || !!getData(row)); row++) { // eslint-disable-line no-unmodified-loop-condition\n const data = getData(row)\n if (!data) {\n continue\n }\n if (!skip) {\n uttStruct.utterances.push(data)\n } else {\n if (startRowHeader === rows[row][col]) {\n skip = false\n }\n }\n }\n if (uttStruct.utterances.length === 0) {\n // liveperson, skipping meta intents\n debug(`Column ${col + 1} has no utterances, skipping`)\n continue\n }\n result.push(uttStruct)\n }\n\n debug(`Multi-column utterance file, extracted ${result.length} utterances`)\n this.context.AddUtterances(result)\n return result\n } else {\n return []\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\n Validate () {\n super.Validate()\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)\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 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\n Validate () {\n super.Validate()\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.length > 0 ? ' ' + child.children.map(child => child.content).join('|') : '')\n ), sender, this.context)\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')\nconst { calculateWer, toPercent } = require('./helper')\n\nconst globPattern = '**/+(*.convo.txt|*.utterances.txt|*.pconvo.txt|*.scriptingmemory.txt|*.xlsx|*.xlsm|*.convo.csv|*.pconvo.csv|*.utterances.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, number)) {\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, number)) {\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.globalAsserters = {}\n this.logicHooks = {}\n this.globalLogicHooks = {}\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 executeBotStep: ({ convo, convoStep, container, scriptingMemory, ...rest }) => {\n const logicHooks = (convoStep?.logicHooks || [])\n const executeBotStepHooks = logicHooks.filter(l => this.logicHooks[l.name] && typeof this.logicHooks[l.name].executeBotStep === 'function')\n if (executeBotStepHooks.length > 1) {\n throw new Error(`${convo?.header?.name}/${convoStep?.stepTag}: Multiple logic hooks implement executeBotStep: ${executeBotStepHooks.map(l => l.name).join(', ')}. Only one is allowed per step.`)\n }\n if (executeBotStepHooks.length === 1) {\n const lh = executeBotStepHooks[0]\n return this.logicHooks[lh.name].executeBotStep({\n convo,\n convoStep,\n scriptingMemory,\n container,\n args: ScriptingMemory.applyToArgs(lh.args, scriptingMemory, container.caps),\n ...rest\n })\n }\n return null\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, convoStepParameters = {}) => {\n if (!_.isArray(tomatch)) {\n tomatch = [tomatch]\n }\n debug(`assertBotResponse ${stepTag} ${meMsg ? `(${meMsg}) ` : ''}BOT: ${botresponse} = ${tomatch} ...`)\n const matchFn = convoStepParameters.matchingMode ? (getMatchFunction(convoStepParameters.matchingMode) || this.matchFn) : this.matchFn\n const found = _.find(tomatch, (utt) => matchFn(botresponse, utt, this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS], convoStepParameters))\n const asserterType = this.caps[Capabilities.SCRIPTING_MATCHING_MODE] === 'wer' ? 'Word Error Rate Asserter' : 'Text Match Asserter'\n if (_.isNil(found)) {\n const matchingMode = convoStepParameters.matchingMode || this.caps[Capabilities.SCRIPTING_MATCHING_MODE]\n if (matchingMode === 'wer') {\n const wer = calculateWer(botresponse, tomatch[0])\n const werArgs = this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS]\n const threshold = !_.isNil(convoStepParameters.matchingModeWer) ? (convoStepParameters.matchingModeWer / 100) : ([',', '.'].find(p => `${werArgs[0]}`.includes(p)) ? parseFloat(werArgs[0]) : parseInt(werArgs[0]) / 100)\n const message = `${stepTag}: Word Error Rate (${toPercent(wer)}) higher than accepted (${toPercent(threshold)})`\n throw new BotiumError(\n message,\n {\n type: 'asserter',\n source: asserterType,\n params: {\n matchingMode,\n args: this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS] || null\n },\n context: {\n stepTag\n },\n cause: {\n expected: `<=${toPercent(threshold)} (${tomatch})`,\n actual: `${toPercent(wer)} (${botresponse})`\n }\n }\n )\n } else {\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: asserterType,\n params: {\n matchingMode: this.caps[Capabilities.SCRIPTING_MATCHING_MODE],\n args: this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS] || null\n },\n context: {\n stepTag\n },\n cause: {\n expected: tomatch,\n actual: botresponse,\n matchingMode: this.caps[Capabilities.SCRIPTING_MATCHING_MODE],\n args: this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS] || null\n }\n }\n )\n }\n }\n },\n assertBotNotResponse: (botresponse, nottomatch, stepTag, meMsg, convoStepParameters = {}) => {\n if (!_.isArray(nottomatch)) {\n nottomatch = [nottomatch]\n }\n debug(`assertBotNotResponse ${stepTag} ${meMsg ? `(${meMsg}) ` : ''}BOT: ${botresponse} != ${nottomatch} ...`)\n const matchFn = convoStepParameters.matchingMode ? (getMatchFunction(convoStepParameters.matchingMode) || this.matchFn) : this.matchFn\n const found = _.find(nottomatch, (utt) => matchFn(botresponse, utt, this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS], convoStepParameters))\n const asserterType = this.caps[Capabilities.SCRIPTING_MATCHING_MODE] === 'wer' ? 'Word Error Rate Asserter' : 'Text Match Asserter'\n if (!_.isNil(found)) {\n const matchingMode = convoStepParameters.matchingMode || this.caps[Capabilities.SCRIPTING_MATCHING_MODE]\n if (matchingMode === 'wer') {\n const wer = calculateWer(botresponse, nottomatch[0])\n const werArgs = this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS]\n const threshold = !_.isNil(convoStepParameters.matchingModeWer) ? (convoStepParameters.matchingModeWer / 100) : ([',', '.'].find(p => `${werArgs[0]}`.includes(p)) ? parseFloat(werArgs[0]) : parseInt(werArgs[0]) / 100)\n const message = `${stepTag}: Word Error Rate (${toPercent(wer)}) lower than accepted (${toPercent(threshold)})`\n throw new BotiumError(\n message,\n {\n type: 'asserter',\n source: asserterType,\n params: {\n matchingMode,\n args: this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS] || null\n },\n context: {\n stepTag\n },\n cause: {\n expected: `>=${toPercent(threshold)} (${nottomatch})`,\n actual: `${toPercent(wer)} (${botresponse})`\n }\n }\n )\n } else {\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: asserterType,\n params: {\n matchingMode: this.caps[Capabilities.SCRIPTING_MATCHING_MODE],\n args: this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS] || null\n },\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 args: this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS] || null\n }\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, container, ...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 updateExceptionContext = (promise, asserter) => {\n const updateError = (err) => {\n if (err instanceof BotiumError) {\n if (!err.context) {\n err.context = {}\n }\n\n err.context.asserter = asserter.name\n\n throw err\n } else {\n throw botiumErrorFromErr(_.isString(err) ? err : err.message, err, { asserter: asserter.name })\n }\n }\n return promise.catch(err => updateError(err))\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 localAsserters = (asserters || []).filter(a => this.asserters[a.name][asserterType])\n\n const convoStepPromises = localAsserters\n .map(a => ({\n asserter: a,\n promise: callAsserter(a, this.asserters[a.name], {\n convo,\n convoStep,\n scriptingMemory,\n container,\n args: ScriptingMemory.applyToArgs(a.args, scriptingMemory, container.caps, rest.botMsg),\n isGlobal: false,\n ...rest\n })\n }))\n .map(({ promise, asserter }) => updateExceptionContext(promise, asserter))\n\n const globalAsserters = Object.keys(this.globalAsserters)\n .filter(name => localAsserters.map(a => a.name).indexOf(name) < 0)\n .reduce((agg, name) => [...agg, this.globalAsserters[name]], [])\n .filter(a => a[asserterType])\n\n const globalPromises = globalAsserters\n .map(a => ({\n asserter: a,\n promise: p(this.retryHelperAsserter, () => a[asserterType]({\n convo,\n convoStep,\n scriptingMemory,\n container,\n args: [],\n isGlobal: true,\n ...rest\n }))\n }))\n .map(({ promise, asserter }) => updateExceptionContext(promise, asserter))\n\n const allPromises = [...convoStepPromises, ...globalPromises]\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, container, ...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 let localHooks = (logicHooks || []).filter(l => this.logicHooks[l.name][hookType])\n // Scripting memory file are injected via SET_SCRIPTING_MEMORY in the BEGIN step\n // But there might be other logic hooks that need the scripting memory variables\n // Order is important (SET_SCRIPTING_MEMORY in begin can be because the user added it,\n // or because the scripting memory file added it. User one has to be the last one.\n localHooks = [\n ...localHooks.filter(l => l.name === 'SET_SCRIPTING_MEMORY'),\n ...localHooks.filter(l => l.name !== 'SET_SCRIPTING_MEMORY')\n ]\n\n const convoStepPromises = localHooks\n .map(l => p(this.retryHelperLogicHook, () => this.logicHooks[l.name][hookType]({\n convo,\n convoStep,\n scriptingMemory,\n container,\n // Do this more sensitve for SET_SCRIPTING_MEMORY? It can have scripting variables in the args\n args: ScriptingMemory.applyToArgs(l.args, scriptingMemory, container.caps, rest.botMsg),\n isGlobal: false,\n ...rest\n })))\n\n const globalHooks = Object.keys(this.globalLogicHooks)\n .filter(name => localHooks.map(l => l.name).indexOf(name) < 0)\n .reduce((agg, name) => [...agg, this.globalLogicHooks[name]], [])\n .filter(l => l[hookType])\n const globalPromises = globalHooks.map(l => p(this.retryHelperLogicHook, () => l[hookType]({ convo, convoStep, scriptingMemory, container, args: [], isGlobal: true, ...rest })))\n\n const allPromises = [...convoStepPromises, ...globalPromises]\n\n if (allPromises.length > 0) {\n return Promise.all(allPromises).then(() => {\n return {\n // just returning some humanreadable\n hooks: [...localHooks, ...globalHooks].map(h => h.name || h.context?.ref || JSON.stringify(h))\n }\n })\n }\n return Promise.resolve(false)\n }\n\n _createUserInputPromises ({ convo, convoStep, scriptingMemory, container, ...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 container,\n args: ScriptingMemory.applyToArgs(ui.args, scriptingMemory, container.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 executeBotStep: this.scriptingEvents.executeBotStep.bind(this),\n setUserInput: this.scriptingEvents.setUserInput.bind(this),\n fail: this.scriptingEvents.fail && this.scriptingEvents.fail.bind(this)\n }\n }\n }\n\n // Livechat, and crawler using logichooks too. So they need script context\n BuildScriptContext () {\n return this._buildScriptContext()\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.globalAsserters = logicHookUtils.getGlobalAsserters()\n this.logicHooks = logicHookUtils.logicHooks\n this.globalLogicHooks = logicHookUtils.getGlobalLogicHooks()\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, this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS])\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('.pconvo.csv')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_CSV, Constants.SCRIPTING_TYPE_PCONVO)\n } else if (filename.endsWith('.utterance.csv')) {\n result = this.ReadScriptFromBuffer(scriptBuffer, Constants.SCRIPTING_FORMAT_CSV, Constants.SCRIPTING_TYPE_UTTERANCES)\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, incomprehensionIntents, incomprehensionUtts, incomprehensionUtt } = {}) {\n const expandedConvos = []\n\n if (_.isUndefined(useNameAsIntent)) {\n useNameAsIntent = !!this.caps[Capabilities.SCRIPTING_UTTEXPANSION_USENAMEASINTENT]\n }\n if (_.isUndefined(incomprehensionIntents)) {\n incomprehensionIntents = this.caps[Capabilities.SCRIPTING_UTTEXPANSION_INCOMPREHENSIONINTENTS]\n }\n if (_.isUndefined(incomprehensionUtts)) {\n incomprehensionUtts = this.caps[Capabilities.SCRIPTING_UTTEXPANSION_INCOMPREHENSIONUTTS]\n }\n if (_.isUndefined(incomprehensionUtt)) {\n incomprehensionUtt = this.caps[Capabilities.SCRIPTING_UTTEXPANSION_INCOMPREHENSION]\n }\n\n if (incomprehensionUtt && (!incomprehensionUtts || incomprehensionUtts.length === 0) && !this.utterances[incomprehensionUtt]) {\n throw new Error(`ExpandUtterancesToConvos - incomprehension utterance '${incomprehensionUtt}' undefined (and no user examples given)`)\n }\n if (incomprehensionUtts && incomprehensionUtts.length > 0) {\n if (!incomprehensionUtt) {\n incomprehensionUtt = 'UTT_INCOMPREHENSION'\n }\n if (this.utterances[incomprehensionUtt]) {\n this.utterances[incomprehensionUtt].utterances.push(...incomprehensionUtts)\n } else {\n this.utterances[incomprehensionUtt] = {\n name: incomprehensionUtt,\n utterances: [...incomprehensionUtts]\n }\n }\n }\n\n if (useNameAsIntent) {\n debug('ExpandUtterancesToConvos - Using utterance name as NLU intent')\n }\n if (incomprehensionIntents && incomprehensionIntents.length > 0) {\n debug(`ExpandUtterancesToConvos - Using ${incomprehensionIntents.length} incomprehension NLU intent(s)`)\n }\n if (incomprehensionUtt) {\n debug(`ExpandUtterancesToConvos - Using incomprehension utterance expansion mode: ${incomprehensionUtt}, ${this.utterances[incomprehensionUtt].utterances.length} user example(s)`)\n }\n\n _.keys(this.utterances).filter(u => u !== incomprehensionUtt).forEach(uttName => {\n const utt = this.utterances[uttName]\n\n const responseStep = {\n sender: 'bot',\n messageText: '',\n asserters: [],\n stepTag: 'Step 2 - check bot response',\n not: false\n }\n if (useNameAsIntent) {\n responseStep.asserters.push({\n name: 'INTENT',\n args: [utt.name]\n })\n }\n if (incomprehensionIntents && incomprehensionIntents.length > 0) {\n incomprehensionIntents.forEach(ii => {\n responseStep.asserters.push({\n name: 'INTENT',\n args: [ii],\n not: true\n })\n })\n }\n if (incomprehensionUtt) {\n responseStep.messageText = incomprehensionUtt\n responseStep.not = true\n }\n\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 responseStep\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 (options = {}) {\n options = Object.assign({\n // use skip and keep, or justHeader\n justHeader: false,\n // drop unwanted convos\n convoFilter: null,\n mediaInput: {\n // MESSAGE_TEXT_FROM_FILENAME or MESSAGE_TEXT_FROM_TRANSCRIPTION or falsy\n messageTextMode: null\n }\n }, options)\n const expandedConvos = []\n // The globalContext is going to keep the data even if the Object.assign which happening to create the myContext in _expandConvo function\n const context = {\n globalContext: {\n totalConvoCount: 0\n }\n }\n debug(`ExpandConvos - Using utterances expansion mode: ${this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE]}`)\n this.convos.forEach((convo) => {\n convo.expandPartialConvos()\n for (const expanded of this._expandConvo(convo, options, context)) {\n expanded.header.assertionCount = this.GetAssertionCount(expanded)\n if (options.justHeader) {\n const ConvoWithOnlyHeader = {\n header: {\n name: expanded.header.name,\n assertionCount: expanded.header.assertionCount\n }\n }\n expandedConvos.push(ConvoWithOnlyHeader)\n } else {\n expandedConvos.push(expanded)\n }\n }\n })\n this.convos = expandedConvos\n this.totalConvoCount = context.globalContext.totalConvoCount\n if (!options.justHeader) {\n this._sortConvos()\n } else {\n this._updateConvos()\n }\n }\n\n ExpandConvosIterable (options = {}) {\n options = Object.assign({\n // drop unwanted convos\n convoFilter: null,\n mediaInput: {\n // MESSAGE_TEXT_FROM_FILENAME or MESSAGE_TEXT_FROM_TRANSCRIPTION or falsy\n messageTextMode: null\n }\n }, options)\n // The globalContext is going to keep the data even if the Object.assign which happening to create the myContext in _expandConvo function\n const context = {\n globalContext: {\n totalConvoCount: 0\n }\n }\n debug(`ExpandConvos - Using utterances expansion mode: ${this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE]}`)\n // creating a nested generator, calling the other.\n // We hope this.convos does not changes while this iterator is used\n const _convosIterable = function * (options) {\n for (const convo of this.convos) {\n convo.expandPartialConvos()\n yield * this._expandConvo(convo, options, context)\n }\n }.bind(this)\n\n this.convosIterable = _convosIterable(options)\n this.totalConvoCount = context.globalContext.totalConvoCount\n }\n\n /**\n * This is a generator function with yield\n * @param currentConvo\n * @param convoStepIndex\n * @param convoStepsStack list of ConvoSteps\n * @private\n */\n * _expandConvo (currentConvo, options, context, 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 yield * this._expandConvo(currentConvo, options, context, 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 const processSampleUtterances = function * (sampleutterances, myContext) {\n for (let index = 0; index < sampleutterances.length; index++) {\n yield * processSampleUtterance(sampleutterances[index], sampleutterances.length, index, Object.assign({ indexExpansionModeIndex: index }, myContext || context))\n }\n }\n const processSampleUtterance = function * (sampleutterance, length, index, myContext) {\n const currentStepsStack = convoStepsStack.slice()\n if (uttArgs) {\n sampleutterance = util.format(sampleutterance, ...uttArgs)\n }\n currentStepsStack.push(Object.assign(_.cloneDeep(currentStep), { messageText: sampleutterance }))\n const currentConvoLabeled = _.cloneDeep(currentConvo)\n if (length > 1) {\n const lineTag = `${index + 1}`.padStart(`${length}`.length, '0')\n Object.assign(currentConvoLabeled.header, { name: `${currentConvo.header.name}/${uttName}-${utterancePostfix(lineTag, sampleutterance)}` })\n }\n if (!currentConvoLabeled.sourceTag) currentConvoLabeled.sourceTag = {}\n if (!currentConvoLabeled.sourceTag.origConvoName) currentConvoLabeled.sourceTag.origConvoName = currentConvo.header.name\n yield * this._expandConvo(currentConvoLabeled, options, myContext || context, convoStepIndex + 1, currentStepsStack)\n }.bind(this)\n if (allutterances.length === 1) {\n yield * processSampleUtterances([allutterances[0]], context)\n } else if (this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE] === 'index') {\n if (_.isNil(context.indexExpansionModeWidth)) {\n // executed for the first found utterance\n yield * processSampleUtterances(allutterances, Object.assign({}, context, { indexExpansionModeWidth: allutterances.length }))\n } else {\n if (_.isNil(context.indexExpansionModeIndex)) {\n throw new Error('indexExpansionModeIndex must be set!')\n }\n // executing the current 'thread', if current utterance has no example to current index, fallback to the last one\n const localIndex = Math.min(context.indexExpansionModeIndex, allutterances.length - 1)\n if (localIndex < context.indexExpansionModeIndex && context.indexExpansionModeIndex === context.indexExpansionModeWidth - 1) {\n debug(`While expanding convos by index found in utterance \"${uttName}\" less examples (${allutterances.length}) as expected (${context.indexExpansionModeWidth})`)\n }\n const myContext = Object.assign({}, context, { indexExpansionModeWidth: Math.max(allutterances.length, context.indexExpansionModeWidth) })\n yield * processSampleUtterance(allutterances[localIndex], allutterances.length, localIndex, myContext)\n if (allutterances.length > context.indexExpansionModeWidth && context.indexExpansionModeIndex + 1 === context.indexExpansionModeWidth) {\n debug(`While expanding convos by index found in utterance \"${uttName}\" more examples (${allutterances.length}) as expected (${context.indexExpansionModeWidth})`)\n for (let i = context.indexExpansionModeWidth; i < allutterances.length; i++) {\n // if we found a utterance with more examples as any utterances before, we have to start new 'thread'\n const myContext = Object.assign({}, context, { indexExpansionModeWidth: allutterances.length, indexExpansionModeIndex: i })\n yield * processSampleUtterance(allutterances[i], allutterances.length, i, myContext)\n }\n }\n }\n } else {\n if (this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE] === 'first') {\n yield * processSampleUtterances([allutterances[0]], context)\n } else if (this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE] === 'random') {\n yield * processSampleUtterances(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]), context)\n } else {\n yield * processSampleUtterances(allutterances, context)\n }\n }\n useUnexpanded = false\n }\n }\n if (currentStep.userInputs && currentStep.userInputs.length > 0) {\n for (let uiIndex = 0; uiIndex < currentStep.userInputs.length; uiIndex++) {\n const ui = currentStep.userInputs[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, options })\n if (expandedUserInputs && expandedUserInputs.length > 0) {\n // let sampleinputs = expandedUserInputs\n const processSampleInputs = function * (sampleinputs, myContext, uiIndex) {\n for (let index = 0; index < sampleinputs.length; index++) {\n yield * processSampleInput(sampleinputs[index], sampleinputs.length, index, Object.assign({ indexExpansionModeIndex: index }, myContext || context), uiIndex)\n }\n }\n const processSampleInput = function * (sampleinput, length, index, myContext, uiIndex) {\n const { messageText, ...userInput } = sampleinput\n const currentStepsStack = convoStepsStack.slice()\n const currentStepMod = _.cloneDeep(currentStep)\n currentStepMod.userInputs[uiIndex] = userInput\n if (messageText) {\n currentStepMod.messageText = messageText\n }\n currentStepsStack.push(currentStepMod)\n const currentConvoLabeled = _.cloneDeep(currentConvo)\n if (length > 1) {\n if (sampleinput.convoPostfix) {\n Object.assign(currentConvoLabeled.header, { name: `${currentConvo.header.name}/${ui.name}-${sampleinput.convoPostfix}` })\n } else {\n const lineTag = `${index + 1}`.padStart(`${length}`.length, '0')\n Object.assign(currentConvoLabeled.header, { name: `${currentConvo.header.name}/${ui.name}-${utterancePostfix(lineTag, (sampleinput.args && sampleinput.args.length) ? sampleinput.args.join(', ') : 'no-args')}` })\n }\n }\n yield * this._expandConvo(currentConvoLabeled, options, myContext || context, convoStepIndex + 1, currentStepsStack)\n }.bind(this)\n if (expandedUserInputs.length === 1) {\n yield * processSampleInputs([expandedUserInputs[0]], context, uiIndex)\n } else if (this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE] === 'index') {\n if (_.isNil(context.indexExpansionModeWidth)) {\n yield * processSampleInputs(expandedUserInputs, Object.assign({}, context, { indexExpansionModeWidth: expandedUserInputs.length }), uiIndex)\n } else {\n if (_.isNil(context.indexExpansionModeIndex)) {\n throw new Error('indexExpansionModeIndex must be set!')\n }\n // executing the current 'thread', if current utterance has no example to current index, fallback to the last one\n const localIndex = Math.min(context.indexExpansionModeIndex, expandedUserInputs.length - 1)\n if (localIndex < context.indexExpansionModeIndex && context.indexExpansionModeIndex === context.indexExpansionModeWidth - 1) {\n debug(`While expanding convos by index found user input \"${ui.name}, ${ui.args}\" less examples (${expandedUserInputs.length}) as expected (${context.indexExpansionModeWidth})`)\n }\n const myContext = Object.assign({}, context, { indexExpansionModeWidth: Math.max(expandedUserInputs.length, context.indexExpansionModeWidth) })\n yield * processSampleInput(expandedUserInputs[localIndex], expandedUserInputs.length, localIndex, myContext, uiIndex)\n if (expandedUserInputs.length > context.indexExpansionModeWidth && context.indexExpansionModeIndex + 1 === context.indexExpansionModeWidth) {\n debug(`While expanding convos by index found user input \"${ui.name}, ${ui.args}\" more examples (${expandedUserInputs.length}) as expected (${context.indexExpansionModeWidth})`)\n for (let i = context.indexExpansionModeWidth; i < expandedUserInputs.length; i++) {\n const myContext = Object.assign({}, context, { indexExpansionModeWidth: expandedUserInputs.length, indexExpansionModeIndex: i })\n yield * processSampleInput(expandedUserInputs[i], expandedUserInputs.length, i, myContext, uiIndex)\n }\n }\n }\n } else {\n if (this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE] === 'first') {\n yield * processSampleInputs([expandedUserInputs[0]], context, uiIndex)\n } else if (this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE] === 'random') {\n yield * processSampleInputs(expandedUserInputs\n .map(x => ({\n x,\n r: Math.random()\n }))\n .sort((a, b) => a.r - b.r)\n .map(a => a.x)\n .slice(0, this.caps[Capabilities.SCRIPTING_UTTEXPANSION_RANDOM_COUNT]), context, uiIndex)\n } else {\n yield * processSampleInputs(expandedUserInputs, context, uiIndex)\n }\n }\n useUnexpanded = false\n }\n }\n }\n }\n if (useUnexpanded) {\n const currentStepsStack = convoStepsStack.slice()\n currentStepsStack.push(_.cloneDeep(currentStep))\n yield * this._expandConvo(currentConvo, options, context, convoStepIndex + 1, currentStepsStack)\n }\n }\n } else {\n const expanded = Object.assign(_.cloneDeep(currentConvo), { conversation: _.cloneDeep(convoStepsStack) })\n if (!_.isNil(_.get(context, 'globalContext.totalConvoCount'))) {\n context.globalContext.totalConvoCount++\n }\n if (!options.convoFilter || options.convoFilter(expanded)) {\n yield expanded\n }\n }\n }\n\n _sortConvos () {\n this.convos = _.sortBy(this.convos, [(convo) => convo.header.sort || convo.header.name])\n this._updateConvos()\n }\n\n _updateConvos () {\n let i = 0\n this.convos.forEach((convo) => {\n if (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\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 if (this.convos.filter(c => _.isNil(c))) {\n this._updateConvos()\n } else {\n this._sortConvos()\n }\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 uttName = utt.name?.trim()\n const eu = this.utterances[uttName]\n if (eu) {\n eu.utterances = _.uniq(_.concat(eu.utterances, utt.utterances))\n } else {\n this.utterances[uttName] = utt\n }\n\n const { ambiguous, expected } = findAmbiguous(this.utterances[uttName].utterances)\n\n if (ambiguous && ambiguous.length > 0) {\n debug(`Ambigous utterance \"${uttName}\", 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,\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 GetAssertionCount (convo) {\n if (!convo) {\n return 0\n }\n let counter = 0\n for (const step of convo.conversation) {\n if (step.sender === 'bot') {\n let stepCounter = step.asserters ? step.asserters.length : 0\n if (step.messageText) {\n stepCounter++\n }\n stepCounter = stepCounter === 0 ? 1 : stepCounter\n counter += stepCounter\n }\n }\n\n if (convo.convoBegin && convo.convoBegin.asserters) {\n counter += convo.convoBegin.asserters.length\n }\n\n if (convo.convoEnd && convo.convoEnd.asserters) {\n counter += convo.convoEnd.asserters.length\n }\n return counter === 0 ? 1 : counter\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 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 try {\n rimraf.sync(this.tempDirectory)\n rimraffed()\n } catch (err) {\n rimraffed(new Error(`Cleanup temp directory ${this.tempDirectory} failed: ${util.inspect(err)}`))\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, fetch }, 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.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 headers: req.headers\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 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')\nconst { ProxyAgent, Agent } = require('undici')\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 this.cookies = {}\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, event.headers, 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 const agentOptions = {\n connect: {\n rejectUnauthorized: !!this.caps[Capabilities.SIMPLEREST_STRICT_SSL] // Equivalent to strictSSL of request module\n }\n }\n if (this.caps[Capabilities.SIMPLEREST_PROXY_URL]) {\n this.dispatcher = new ProxyAgent(this.caps[Capabilities.SIMPLEREST_PROXY_URL], agentOptions)\n } else {\n this.dispatcher = new Agent(agentOptions)\n }\n\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, headers }) => {\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, headers, !!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, headers }) => {\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, headers, !!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 this.cookies = {}\n }\n\n Clean () {\n return this._cleanInbound()\n }\n\n _fetchify (requestOptions) {\n requestOptions.signal = AbortSignal.timeout(requestOptions.timeout)\n delete requestOptions.timeout\n\n if (requestOptions.body && !_.isString(requestOptions.body)) {\n requestOptions.body = JSON.stringify(requestOptions.body)\n if (!requestOptions.headers) requestOptions.headers = {}\n if (!requestOptions.headers['Content-Type'] && !requestOptions.headers['content-type']) {\n requestOptions.headers['Content-Type'] = 'application/json'\n }\n }\n\n if (requestOptions.form) {\n if (requestOptions.body) {\n debug('Request.form and request.body are mutually exclusive')\n }\n requestOptions.headers['Content-Type'] = 'application/x-www-form-urlencoded'\n requestOptions.body = new URLSearchParams(requestOptions.form).toString()\n delete requestOptions.form\n }\n\n return requestOptions\n }\n\n // Separated just for better module testing\n async _processBodyAsync (body, headers, isFromUser, updateContext) {\n const p = async () => {\n try {\n const results = await this._processBodyAsyncImpl(body, headers, 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, headers, isFromUser, updateContext) {\n this.view.response = { body, headers }\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 _isAnyContextJsonPathMatch = (capName, capNameMatch) => {\n const jsonPaths = getAllCapValues(capName, this.caps)\n if (jsonPaths.length > 0) {\n const jsonPathsMatch = getAllCapValues(capNameMatch, this.caps)\n for (const [index, jsonPath] of jsonPaths.entries()) {\n const contextNodes = jp.query(this.view.context, jsonPath)\n if (_.isArray(contextNodes) && contextNodes.length > 0) {\n if (jsonPathsMatch[index]) {\n if (contextNodes[0] === jsonPathsMatch[index]) {\n return {\n jsonPath,\n match: contextNodes[0]\n }\n }\n } else {\n return {\n jsonPath\n }\n }\n }\n }\n }\n return null\n }\n\n const ignoreMatch = _isAnyContextJsonPathMatch(Capabilities.SIMPLEREST_CONTEXT_IGNORE_JSONPATH, Capabilities.SIMPLEREST_CONTEXT_IGNORE_MATCH)\n if (ignoreMatch) {\n if (ignoreMatch.match) debug(`ignoring response for context match: ${ignoreMatch.jsonPath} = ${ignoreMatch.match}`)\n else debug(`ignoring response for context: ${ignoreMatch.jsonPath}`)\n return\n }\n\n const skipMatch = _isAnyContextJsonPathMatch(Capabilities.SIMPLEREST_CONTEXT_SKIP_JSONPATH, Capabilities.SIMPLEREST_CONTEXT_SKIP_MATCH)\n if (skipMatch) {\n if (skipMatch.match) debug(`skipping response for context match: ${skipMatch.jsonPath} = ${skipMatch.match}`)\n else debug(`skipping response for context: ${skipMatch.jsonPath}`)\n\n setTimeout(() => this._doRequest({ messageText: '' }, true, true), 0)\n return\n }\n\n let result = []\n if (isFromUser) {\n const _extractFrom = (root, jsonPaths, acceptFn = null) => {\n const result = []\n for (const jsonPath of jsonPaths) {\n const jsonPathRes = []\n const rb = jp.query(root, jsonPath)\n if (_.isArray(rb)) {\n _.flattenDeep(rb).forEach(r => jsonPathRes.push(r))\n } else {\n jsonPathRes.push(rb)\n }\n if (acceptFn) {\n result.push(...jsonPathRes.filter(r => acceptFn(root, jsonPath, r)))\n } else {\n result.push(...jsonPathRes)\n }\n }\n return result\n }\n\n const jsonPathRoots = []\n const jsonPathsBody = getAllCapValues(Capabilities.SIMPLEREST_BODY_JSONPATH, this.caps)\n if (jsonPathsBody.length > 0) {\n jsonPathRoots.push(..._extractFrom(body, jsonPathsBody, (root, jsonPath, r) => {\n if (r && _.isObject(r)) return true\n debug(`Ignoring result body from ${jsonPath} - not a querieable object (${util.inspect(r)})`)\n return false\n }))\n } else {\n jsonPathRoots.push(body)\n }\n\n if (jsonPathRoots.length === 0 && !this.caps[Capabilities.SIMPLEREST_IGNORE_EMPTY]) {\n debug(`found empty body, and processed because of SIMPLEREST_IGNORE_EMPTY capability: ${util.inspect(body)}`)\n result.push({ messageText: '', sourceData: 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, capPrefix) => {\n const jsonPathsButtons = getAllCapValues(`${capPrefix}_JSONPATH`, this.caps)\n const jsonPathsButtonsText = getAllCapValues(`${capPrefix}_TEXT_SUBJSONPATH`, this.caps)\n const jsonPathsButtonsPayload = getAllCapValues(`${capPrefix}_PAYLOAD_SUBJSONPATH`, this.caps)\n\n const retrievedButtons = []\n const responseButtons = _extractFrom(jsonPathButtonRoot, jsonPathsButtons)\n for (const responseButton of responseButtons) {\n const retrievedButton = {}\n if (_.isString(responseButton)) {\n retrievedButton.text = responseButton\n } else {\n if (jsonPathsButtonsText.length > 0) {\n const possibleTexts = _extractFrom(responseButton, jsonPathsButtonsText)\n if (possibleTexts.length > 0) retrievedButton.text = possibleTexts[0]\n }\n if (jsonPathsButtonsPayload.length > 0) {\n const possiblePayloads = _extractFrom(responseButton, jsonPathsButtonsPayload)\n if (possiblePayloads.length > 0) retrievedButton.payload = possiblePayloads[0]\n }\n }\n if (Object.keys(retrievedButton).length === 0 && responseButton) {\n retrievedButton.text = JSON.stringify(responseButton)\n }\n if (Object.keys(retrievedButton).length > 0) {\n retrievedButtons.push(retrievedButton)\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, 'SIMPLEREST_BUTTONS')\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, 'SIMPLEREST_CARD_BUTTONS')\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 nlp = { intent: {} }\n const _normalizeIntent = (intent) => {\n if ('name' in intent) {\n if (!intent.name) {\n intent.name = 'None'\n }\n const fallbackIntents = this.caps[Capabilities.SIMPLEREST_NLP_FALLBACK_INTENTS]\n if (fallbackIntents) {\n intent.incomprehension = this.caps[Capabilities.SIMPLEREST_NLP_FALLBACK_INTENTS].includes(intent.name) ? true : undefined\n } else {\n intent.incomprehension = intent.name.toLowerCase() === 'none' ? true : undefined\n }\n }\n\n if (!_.isNil(intent.confidence)) {\n if (typeof intent.confidence === 'string') {\n intent.confidence = Number(intent.confidence)\n }\n if (_.isNil(this.caps[Capabilities.SIMPLEREST_NLP_CONFIDENCE_DIVIDEBY100]) ? intent.confidence > 1 : this.caps[Capabilities.SIMPLEREST_NLP_CONFIDENCE_DIVIDEBY100]) {\n intent.confidence /= 100\n }\n }\n\n return intent\n }\n const jsonPathIntent = this.caps[Capabilities.SIMPLEREST_NLP_INTENT_JSONPATH]\n if (jsonPathIntent) {\n const name = jp.query(jsonPathRoot, jsonPathIntent)\n nlp.intent.name = name?.length ? name[0] : null\n }\n const jsonPathConfidence = this.caps[Capabilities.SIMPLEREST_NLP_CONFIDENCE_JSONPATH]\n if (jsonPathConfidence) {\n const confidence = jp.query(jsonPathRoot, jsonPathConfidence)\n nlp.intent.confidence = confidence?.length ? confidence[0] : null\n }\n _normalizeIntent(nlp.intent)\n const jsonPathList = this.caps[Capabilities.SIMPLEREST_NLP_LIST_JSONPATH]\n const jsonPathListIntent = this.caps[Capabilities.SIMPLEREST_NLP_LIST_INTENT_JSONPATH]\n const jsonPathListConfidence = this.caps[Capabilities.SIMPLEREST_NLP_LIST_CONFIDENCE_JSONPATH]\n if (jsonPathList) {\n const list = jp.query(jsonPathRoot, jsonPathList)\n if (list?.length) {\n const intentList = list[0].map(e => {\n const name = jp.query(e, jsonPathListIntent)\n const res = { name: name?.length ? name[0] : null }\n if (jsonPathListConfidence) {\n const confidence = jp.query(e, jsonPathListConfidence)\n res.confidence = confidence?.length ? confidence[0] : null\n }\n _normalizeIntent(res)\n return res\n })\n if (intentList.length > 0 && !nlp.intent.name) {\n nlp.intent.name = intentList[0].name\n nlp.intent.confidence = intentList[0].confidence\n }\n\n if (nlp.intent.name === intentList[0].name) {\n intentList.shift()\n }\n\n nlp.intent.intents = intentList\n }\n }\n if (Object.keys(nlp.intent).length > 0) {\n debug(`found response nlp: ${util.inspect(nlp)}`)\n } else {\n nlp = null\n }\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, nlp }\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, nlp }\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 || botMsg.nlp) {\n result.push(botMsg)\n } else if (!this.caps[Capabilities.SIMPLEREST_IGNORE_EMPTY]) {\n debug(`found empty message, and processed because of SIMPLEREST_IGNORE_EMPTY capability: ${util.inspect(botMsg)}`)\n result.push(botMsg)\n } else {\n debug(`found empty message, and ignored because of SIMPLEREST_IGNORE_EMPTY capability: ${util.inspect(botMsg)}`)\n }\n }\n }\n }\n\n const continueMatch = _isAnyContextJsonPathMatch(Capabilities.SIMPLEREST_CONTEXT_CONTINUE_JSONPATH, Capabilities.SIMPLEREST_CONTEXT_CONTINUE_MATCH)\n if (continueMatch) {\n if (continueMatch.match) debug(`continue with next response for context match: ${continueMatch.jsonPath} = ${continueMatch.match}`)\n else debug(`continue with next response for context: ${continueMatch.jsonPath}`)\n\n setTimeout(() => this._doRequest({ messageText: '' }, true, true), 0)\n }\n\n if (this.caps[Capabilities.SIMPLEREST_MESSAGE_LIST_MERGE] === 'MERGE_TEXT') {\n const isTextMsg = (msg) => msg.messageText && (!msg.media || msg.media.length === 0) && (!msg.buttons || msg.buttons.length === 0) && (!msg.cards || msg.cards.length === 0)\n\n result = result.reduce((acc, currentMsg) => {\n if (acc.length > 0) {\n const last = acc[acc.length - 1]\n if (isTextMsg(last)) {\n currentMsg.messageText = [last.messageText, currentMsg.messageText].filter(t => t).join('\\n')\n acc[acc.length - 1] = currentMsg\n return acc\n }\n }\n acc.push(currentMsg)\n return acc\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 try {\n fetch(requestOptions.uri, requestOptions).then(async (bodyRaw) => {\n let body\n try {\n if (bodyRaw?.headers?.get('content-type') && bodyRaw.headers.get('content-type').includes('application/json')) {\n try {\n body = await bodyRaw.json()\n } catch (err) {\n body = await bodyRaw.text()\n debug(`failed to parse body as text, using text instead: ${body}`)\n }\n } else {\n body = await bodyRaw.text()\n }\n } catch (err) {\n return reject(new Error(`cant parse body: ${err.message}`))\n }\n if (!bodyRaw.ok) {\n debug(`got error response: ${bodyRaw.status}/${bodyRaw.statusText}`)\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: ${bodyRaw.status}/${bodyRaw.statusText} - ${jsonBody[errKey]}`, {\n message: botiumUtils.shortenJsonString(body)\n }))\n }\n }\n return reject(new Error(`got error response: ${bodyRaw.status}/${bodyRaw.statusText}`))\n }\n if (body) {\n debug(`got response code: ${bodyRaw.status}/${bodyRaw.statusText}, body: ${botiumUtils.shortenJsonString(body)}, headers: ${botiumUtils.shortenJsonString(bodyRaw.headers)}`)\n this._storeCookiesFromResponse(bodyRaw)\n\n this._parseResponseBody(body)\n .then((parsedBody) => {\n body = parsedBody\n if (body) {\n this._processBodyAsync(body, bodyRaw.headers, 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 })\n .catch((err) => {\n debug(`ignoring not JSON formatted response body: ${err.message}`)\n resolve(this)\n this._emptyWaitProcessQueue()\n })\n } else {\n debug(`got response code: ${bodyRaw.status}/${bodyRaw.statusText}, empty body`)\n resolve(this)\n this._emptyWaitProcessQueue()\n }\n }).catch((err) => {\n // rest request failed: fetch failed - Cause code: ECONNREFUSED - Cause message: connect ECONNREFUSED 127.0.0.1:3006\n return reject(new Error(`rest request failed: ${err.message}${err.cause && err.cause.code ? ' - Cause code: ' + err.cause.code : ''}${err.cause && err.cause.message ? ' - Cause message: ' + err.cause.message : ''}`))\n })\n } catch (err) {\n return reject(new Error(`rest request failed: ${err.message}`))\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 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 // It is possible to mix json, and non-json request messages. So it can happen that both\n // SIMPLEREST_BODY_FROM_JSON and SIMPLEREST_BODY_TEMPLATE are set\n if (this.caps[Capabilities.SIMPLEREST_BODY_FROM_JSON] && msg.sourceData && Object.keys(msg.sourceData).length > 0) {\n requestOptions.body = msg.sourceData\n requestOptions.json = true\n if (!requestOptions.headers) requestOptions.headers = {}\n requestOptions.headers['Content-Type'] = 'application/json'\n } else 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 if (requestOptions.json && (!requestOptions.body || Object.keys(requestOptions.body).length === 0)) {\n debug(`warning: requestOptions.body content seems to be empty - ${requestOptions.body} - capability: \"${this.caps[Capabilities.SIMPLEREST_BODY_TEMPLATE]}\"`)\n }\n if (!bodyRaw) {\n if (!requestOptions.headers) requestOptions.headers = {}\n requestOptions.headers['Content-Type'] = 'application/json'\n }\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 await executeHook(this.caps, this.requestHook, Object.assign({ requestOptions }, this.view))\n this._addRequestCookies(requestOptions)\n this._fetchify(requestOptions)\n\n return requestOptions\n }\n\n async _waitForUrlResponse (httpConfig, 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 ${httpConfig.uri} before proceed`)\n if (tries > retries) {\n throw new Error(`Failed to ping bot after ${retries} retries`)\n }\n tries++\n let bodyRaw\n let body\n let err\n try {\n bodyRaw = await this.bottleneck(() => fetch(httpConfig.uri, httpConfig))\n body = await ((httpConfig.json) ? bodyRaw.json() : bodyRaw.text())\n } catch (e) {\n err = e\n }\n if (err) {\n debug(`_waitForUrlResponse error on url check ${httpConfig.uri}: ${err}`)\n if (tries <= retries) {\n await timeout(httpConfig.timeout)\n }\n } else if (!bodyRaw.ok) {\n debug(`_waitForUrlResponse on url check ${httpConfig.uri} got error response: ${bodyRaw.status}/${bodyRaw.statusText}`)\n if (debug.enabled && body) {\n debug(botiumUtils.shortenJsonString(body))\n }\n if (tries <= retries) {\n await timeout(httpConfig.timeout)\n }\n } else {\n debug(`_waitForUrlResponse success on url check ${httpConfig.uri}: ${bodyRaw.status}/${bodyRaw.statusText}`)\n this._storeCookiesFromResponse(bodyRaw)\n if (debug.enabled && body) {\n debug(`body: ${botiumUtils.shortenJsonString(body)}, headers: ${botiumUtils.shortenJsonString(bodyRaw.headers)}`)\n }\n return { body, headers: bodyRaw.headers }\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 if (debug.enabled) {\n debug(`JSON parsing failed (${err.message}) for: ${botiumUtils.shortenJsonString(raw)}`)\n }\n throw 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, event.headers, 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,\n 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 if (!bodyRaw) {\n if (!pollConfig.headers) pollConfig.headers = {}\n pollConfig.headers['Content-Type'] = 'application/json'\n }\n } catch (err) {\n debug(`_runPolling: composing body from SIMPLEREST_POLL_BODY failed (${err.message})`)\n return\n }\n }\n this._addRequestOptions(pollConfig)\n this._fetchify(pollConfig)\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 this._addRequestCookies(pollConfig)\n\n try {\n const bodyRaw = await fetch(pollConfig.uri, pollConfig)\n let body = await ((pollConfig.json) ? bodyRaw.json() : bodyRaw.text())\n if (!bodyRaw.ok) {\n debug(`_runPolling: got error response: ${bodyRaw.status}/${bodyRaw.statusText}, 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: ${bodyRaw.status}/${bodyRaw.statusText}, body: ${botiumUtils.shortenJsonString(body)}, headers: ${botiumUtils.shortenJsonString(bodyRaw.headers)}`)\n this._storeCookiesFromResponse(bodyRaw)\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, bodyRaw.headers, 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: ${bodyRaw.status}/${bodyRaw.statusText}, empty body`)\n }\n } catch (err) {\n debug(`_runPolling: rest request failed: ${err.message}, request: ${JSON.stringify(pollConfig)}`)\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,\n 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 this._fetchify(httpConfig)\n await executeHook(this.caps, this.requestHooks[capPrefix], Object.assign({ requestOptions: httpConfig }, this.view))\n this._addRequestCookies(httpConfig)\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 if (this.dispatcher) {\n httpConfig.dispatcher = this.dispatcher\n }\n if (this.caps[Capabilities.SIMPLEREST_EXTRA_OPTIONS]) {\n _.merge(httpConfig, this.caps[Capabilities.SIMPLEREST_EXTRA_OPTIONS])\n }\n }\n\n _addRequestCookies (requestOptions) {\n if (!this.caps[Capabilities.SIMPLEREST_COOKIE_REPLICATION] || !requestOptions) {\n return\n }\n const url = new URL(requestOptions.uri)\n if (!requestOptions.headers) {\n requestOptions.headers = {}\n }\n if (this.cookies[url.host]) {\n requestOptions.headers.Cookie = requestOptions.headers.Cookie ? `${requestOptions.headers.Cookie}; ${this.cookies[url.host]}` : this.cookies[url.host]\n }\n }\n\n _storeCookiesFromResponse (response) {\n if (!this.caps[Capabilities.SIMPLEREST_COOKIE_REPLICATION] || !response) {\n return\n }\n const responseCookies = response.headers.get('set-cookie')\n if (!responseCookies) {\n return\n }\n const host = response?.url ? new URL(response.url).host : null\n\n if (host) {\n this.cookies[host] = responseCookies\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')\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\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 const allowUnsafe = !!args.caps[Capabilities.SECURITY_ALLOW_UNSAFE]\n\n if (_.isString(pluginLoaderSpec)) {\n if (args.caps.SAFEDIR) {\n const tryLoadFile = path.resolve(args.caps.SAFEDIR, pluginLoaderSpec)\n if (tryLoadFile.startsWith(path.resolve(args.caps.SAFEDIR))) {\n if (fs.existsSync(tryLoadFile)) {\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 }\n\n if (allowUnsafe) {\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\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, number)) {\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, number)) {\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, number)) {\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, number)) {\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, number)) {\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 GetMetaData () {\n try {\n return (this.pluginInstance.GetMetaData ? (this.pluginInstance.GetMetaData() || Promise.resolve()) : Promise.resolve())\n } catch (err) {\n return Promise.reject(new Error(`GetMetaData - 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('./utils/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 tempDirectory = null\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 (tempDirectoryCreated) => {\n 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(tempDirectory)\n tempDirectoryCreated()\n } catch (err) {\n tempDirectoryCreated(new Error(`Unable to create temp directory ${tempDirectory}: ${err.message}`))\n }\n },\n\n (repoValidated) => {\n try {\n repo = this._getRepo(tempDirectory)\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(tempDirectory, 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 (tempDirectory) {\n rimraf(tempDirectory).catch((err) => debug(`Cleanup temp dir ${tempDirectory} failed: ${util.inspect(err)}`))\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(Number(newCaps[capKey]))) {\n caps[capKey] = newCaps[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 resolve(this)\n } catch (err) {\n reject(err)\n }\n })\n }\n\n _getRepo (tempDirectory) {\n if (this.caps[Capabilities.BOTIUMGRIDURL]) {\n const NoRepo = require('./repos/NoRepo')\n return new NoRepo(tempDirectory, this.sources)\n }\n if (this.sources[Source.GITURL]) {\n const GitRepo = require('./repos/GitRepo')\n return new GitRepo(tempDirectory, this.sources)\n }\n if (this.sources[Source.LOCALPATH]) {\n const LocalRepo = require('./repos/LocalRepo')\n return new LocalRepo(tempDirectory, this.sources)\n }\n throw new Error(`No Repo provider found for Sources ${util.inspect(this.sources)}`)\n }\n\n _getContainer (tempDirectory, repo) {\n if (this.caps[Capabilities.BOTIUMGRIDURL]) {\n const GridContainer = require('./containers/GridContainer')\n return new GridContainer(this.eventEmitter, 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, tempDirectory, repo, this.caps, this.envs)\n }\n const PluginConnectorContainer = require('./containers/PluginConnectorContainer')\n return new PluginConnectorContainer(this.eventEmitter, 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","const path = require('path')\nconst fs = require('fs')\nconst _ = require('lodash')\nconst { parse: csvParseSync } = require('csv-parse/sync')\n\n/**\n * Find transcription for an audio file: .txt same base name, or transcript.csv in parent dirs.\n * @param {string} baseDir - Base directory for resolving paths\n * @param {string} audioFile - Relative path to audio file\n * @param {object} [options] - Optional: { csvCache: {}, onError: (msg) => {} }\n * @returns {string|null} Transcription text or null\n */\nmodule.exports.findTranscription = (baseDir, audioFile, options = {}) => {\n const { csvCache = {}, onError } = options\n const transcriptionFilename = `${audioFile.substring(0, audioFile.lastIndexOf('.'))}.txt`\n const transcriptionFilenameAbs = path.resolve(baseDir, transcriptionFilename)\n try {\n if (fs.existsSync(transcriptionFilenameAbs)) {\n return fs.readFileSync(transcriptionFilenameAbs, { encoding: 'utf-8' }).trim()\n }\n } catch (err) {\n if (onError) onError(`Transcription File ${transcriptionFilenameAbs} not readable: ${err.message}`)\n throw new Error(`Reading transcription file ${transcriptionFilename} for ${audioFile} failed`)\n }\n if (csvCache[audioFile]) {\n return csvCache[audioFile]\n }\n const audioFileComponents = audioFile.split('/')\n for (let parentIndex = audioFileComponents.length - 1; parentIndex >= 0; parentIndex--) {\n const csvDirectory = audioFileComponents.slice(0, parentIndex)\n const csvFilename = path.join(...csvDirectory, 'transcript.csv')\n const csvFilenameAbs = path.resolve(baseDir, csvFilename)\n try {\n if (fs.existsSync(csvFilenameAbs)) {\n const records = csvParseSync(fs.readFileSync(csvFilenameAbs, { encoding: 'utf-8' }).trim(), {\n columns: ['filename', 'transcription'],\n delimiter: [',', ';', ':', '\\t'],\n trim: true,\n skip_empty_lines: true\n })\n if (records && records.length > 0) {\n for (const record of records) {\n const fnKey = path.join(...csvDirectory, record.filename)\n csvCache[fnKey] = record.transcription\n }\n }\n }\n } catch (err) {\n if (onError) onError(`Transcription CSV File ${csvFilenameAbs} not readable: ${err.message}`)\n throw new Error(`Reading transcription CSV file for ${csvFilename} failed`)\n }\n if (csvCache[audioFile]) {\n return csvCache[audioFile]\n }\n }\n return null\n}\n\n/**\n * Derive transcription text from audio filename (basename without extension, underscores/hyphens → spaces).\n * @param {string} audioFile - Path or filename of audio file\n * @returns {string}\n */\nmodule.exports.transcriptionFromFilename = (audioFile) => {\n const filename = path.basename(audioFile, path.extname(audioFile))\n return filename.split(/[_-]+/).join(' ')\n}\n\nmodule.exports.hasWaitForBotTimeout = (transciptError) => {\n if (!transciptError) {\n return false\n }\n const str = transciptError.message || (_.isString(transciptError) ? transciptError : null)\n if (!str) {\n return false\n }\n return str.indexOf(': error waiting for bot - Bot did not respond within') > 0\n}\n","module.exports = {\n BotDriver: require('./src/BotDriver'),\n Capabilities: require('./src/Capabilities'),\n Defaults: require('./src/Defaults'),\n Enums: require('./src/Enums'),\n Events: require('./src/Events'),\n Plugins: require('./src/Plugins'),\n Source: require('./src/Source'),\n\n InboundProxy: require('./src/grid/inbound/proxy'),\n\n HookUtils: require('./src/helpers/HookUtils'),\n TranscriptUtils: require('./src/helpers/TranscriptUtils'),\n\n RetryHelper: require('./src/helpers/RetryHelper'),\n\n BotiumMockRichMessageTypes: require('./src/mocks/BotiumMockRichMessageTypes'),\n\n BotiumError: require('./src/scripting/BotiumError').BotiumError,\n ScriptingConstants: require('./src/scripting/Constants'),\n ScriptingMemory: require('./src/scripting/ScriptingMemory'),\n ScriptingProvider: require('./src/scripting/ScriptingProvider'),\n LogicHookConstants: require('./src/scripting/logichook/LogicHookConsts'),\n\n Lib: {\n SimpleRestContainer: require('./src/containers/plugins/SimpleRestContainer'),\n tryLoadPlugin: require('./src/containers/plugins/index').tryLoadPlugin\n }\n}\n"],"names":["boolean","value","isNaN","normalized","trim","toLowerCase","Boolean","boolean_1","Capabilities","PROJECTNAME","TESTSESSIONNAME","TESTCASENAME","TEMPDIR","SAFEDIR","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_BODY_FROM_JSON","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_CONTEXT_IGNORE_JSONPATH","SIMPLEREST_CONTEXT_IGNORE_MATCH","SIMPLEREST_CONTEXT_SKIP_JSONPATH","SIMPLEREST_CONTEXT_SKIP_MATCH","SIMPLEREST_CONTEXT_CONTINUE_JSONPATH","SIMPLEREST_CONTEXT_CONTINUE_MATCH","SIMPLEREST_BODY_JSONPATH","SIMPLEREST_RESPONSE_JSONPATH","SIMPLEREST_RESPONSE_HOOK","SIMPLEREST_MEDIA_JSONPATH","SIMPLEREST_BUTTONS_JSONPATH","SIMPLEREST_BUTTONS_TEXT_SUBJSONPATH","SIMPLEREST_BUTTONS_PAYLOAD_SUBJSONPATH","SIMPLEREST_CARDS_JSONPATH","SIMPLEREST_CARD_TEXT_JSONPATH","SIMPLEREST_CARD_SUBTEXT_JSONPATH","SIMPLEREST_CARD_BUTTONS_JSONPATH","SIMPLEREST_CARD_BUTTONS_TEXT_SUBJSONPATH","SIMPLEREST_CARD_BUTTONS_PAYLOAD_SUBJSONPATH","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","SIMPLEREST_COOKIE_REPLICATION","SIMPLEREST_NLP_INTENT_JSONPATH","SIMPLEREST_NLP_CONFIDENCE_JSONPATH","SIMPLEREST_NLP_CONFIDENCE_DIVIDEBY100","SIMPLEREST_NLP_FALLBACK_INTENTS","SIMPLEREST_NLP_LIST_JSONPATH","SIMPLEREST_NLP_LIST_INTENT_JSONPATH","SIMPLEREST_NLP_LIST_CONFIDENCE_JSONPATH","SIMPLEREST_MESSAGE_LIST_MERGE","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_LEGACY_MODE_OFF","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_CSV_UTTERANCE_STARTROW","SCRIPTING_CSV_UTTERANCE_STARTROW_HEADER","SCRIPTING_CSV_UTTERANCE_STOP_ON_EMPTY","SCRIPTING_NORMALIZE_TEXT","SCRIPTING_NORMALIZE_TEXT_REMOVE_CHARACTERES","SCRIPTING_NORMALIZE_TEXT_REMOVE_REGEXP","SCRIPTING_ENABLE_MEMORY","SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS","SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS","SCRIPTING_FORCE_BOT_CONSUMED","SCRIPTING_MATCHING_MODE","SCRIPTING_MATCHING_MODE_ARGS","SCRIPTING_UTTEXPANSION_MODE","SCRIPTING_UTTEXPANSION_RANDOM_COUNT","SCRIPTING_UTTEXPANSION_INCOMPREHENSION","SCRIPTING_UTTEXPANSION_INCOMPREHENSIONINTENTS","SCRIPTING_UTTEXPANSION_INCOMPREHENSIONUTTS","SCRIPTING_UTTEXPANSION_USENAMEASINTENT","SCRIPTING_UTTEXPANSION_NAMING_MODE","SCRIPTING_UTTEXPANSION_NAMING_UTTERANCE_MAX","SCRIPTING_MEMORYEXPANSION_KEEP_ORIG","SCRIPTING_MEMORY_MATCHING_MODE","SCRIPTING_MEMORY_COLUMN_MODE","SCRIPTING_CONVO_STEP_PARAMETERS","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","CONVO_STEP_NEXT","MESSAGE_SENTTOBOT","MESSAGE_SENDTOBOT_ERROR","MESSAGE_RECEIVEDFROMBOT","MESSAGE_RECEIVEFROMBOT_ERROR","MESSAGE_ATTACHMENT","MESSAGE_TRANSCRIPT","LOGIC_HOOK_INCLUDE","LogicHookConsts","DEFAULT_ASSERTERS","name","className","DEFAULT_LOGIC_HOOKS","DEFAULT_USER_INPUTS","LOGIC_HOOK_EVENTS","debug","require$$0","require$$1","forEach","asserter","Class","require","logicHook","userInput","LogicHookUtils_1","LogicHookUtils","buildScriptContext","caps","asserters","globalAsserterNames","logicHooks","globalLogicHookNames","userInputs","_setDefaultAsserters","_setDefaultLogicHooks","_setDefaultUserInputs","_fetchAsserters","_fetchLogicHooks","_fetchUserInputs","lh","ui","ref","_loadClass","global","getGlobalAsserters","reduce","agg","getGlobalLogicHooks","src","args","hookType","Error","find","allowUnsafe","packageName","CheckClass","isClass","PluginClass","message","typeAsText","isObject","isString","hookObject","keys","result","key","script","util","inspect","loadErr","tryLoads","tryLoadPackageName","tryLoadAsserterByName","indexOf","substring","lastIndexOf","tryLoadFromSource","tryRequire","tryAsserterName","default","PluginAsserters","PluginLogicHooks","tryLoad","tryLoadFile","path","startsWith","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","prettify","indent","sections","truncate","length","repeat","join","BotiumMockButton","payload","imageUri","JSON","stringify","BotiumMockCard","subtext","content","sourceData","image","buttons","map","a","media","forms","BotiumMockForm","cards","_prettifyLines","card","prettifySafe","entry","lines","m","b","f","c","label","type","options","BotiumMockChoice","title","BotiumMockRichMessageTypes","BotiumMockAsserter","cloneDeep","not","BotiumMockUserInput","BotiumMockLogicHook","BotiumMockScripting","BotiumMockMessage_1","BotiumMockMessage","sender","optional","nlp","sourceAction","attachments","slice","Enums","E_SCRIPTING_MEMORY_COLUMN_MODE","VARNAMES","TESTCASENAMES","WHITE_SPACES_EXCEPT_SPACE_CHAR_AT_THE_END","normalizeText","str","doCleanupOrCaps","basic","charactersRemove","regexpRemove","isBoolean","isNil","splitted","split","e","filter","isArray","RegExp","toString","replace","s","character","splitStringInNonEmptyLines","quoteRegexpString","removeBuffers","obj","jsonString","isBuffer","parse","isUndefined","isNumber","v","flatString","_formatAppendArgs","_parseArgs","linesToConvoStep","context","eol","singleLineMode","validateSender","convoStep","textLinesRaw","textLines","textLinesAccepted","rawLine","logicLine","substr","IsAsserterValid","IsUserInputValid","IsLogicHookValid","logichook","logicHookName","userinput","userInputName","pop","isJSON","trimExceptSpaceEnd","optionalSet","Set","add","size","string","convoStepToObject","step","form","messageTextPrefix","cardTexts","concat","mediaUr","validSenders","validateConvo","validationResult","errors","i","conversation","_decompileButton","buttonScript","convoStepToLines","linesToScriptingMemories","columnMode","guessScriptingMemoryColumnMode","scriptingMemories","caseNames","varNames","varValues","row","rawRow","caseIndex","caseName","values","varName","varIndex","scriptingMemory","header","calculateWer","pattern","_prepareString","remWildcard","_getSubsets","array","subsets","index","end","parseInt","_getWords","w","_getErrors","words1","words2","utterance","botMessage","botMessageWords","bm","utt","speechScorer","wordErrorRate","toFixed","wildcardPart","wer","wordCount","subsetPhrases","Math","min","subset","subsetPhraseFound","subsetPhrase","localWer","errCount","allCount","toPercent","helper","BotiumError","supressChildCheck","_getChildErrorsFromContext","captureStackTrace","isAsserterError","errArr","hasNotAsserterError","findIndex","errDetail","includeJson","segments","source","subtype","cause","expected","actual","input","transcript","transcriptStep","jsonOutput","jsonErr","hasError","internal","toArray","botiumErrorFromErr","botiumErrorFromList","flat","children","error","childErrors","BotiumError_1","v1","uuidv1","require$$2","require$$3","SCRIPTING_FUNCTIONS_RAW","$now","Date","toLocaleString","$now_EN","$now_DE","moment","format","$now_ISO","toISOString","$date","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","$tomorrow","toDate","$yesterday","subtract","$date_add","amount","unit","$date_subtract","$year","getFullYear","$month","$month_MM","$day_of_month","getDate","$day_of_week","$random","randomize","$random10","$uniqid","$projectname","handler","$testsessionname","$testcasename","$env","process","env","numberOfArguments","unsafe","$cap","$msg","jsonPath","mockMsg","root","jp","query","SCRIPTING_FUNCTIONS","mapValues","funcOrStruct","func","rest","basename","__filename","functionName","RESERVED_WORDS","apply","_apply","applyToArgs","arg","_longestFirst","allKeys","sort","has","keyRegexp","regex","matches","match","endsWith","argStr","extractVarNames","fill","varRegex","utterances","resolveUtterance","reExpected","varMatches","varMatchesRegexp","resultMatches","ScriptingMemory","ConvoHeader","projectname","testsessionname","order","description","ConvoStepAssert","ConvoStepLogicHook","ConvoStepUserInput","ConvoStep","stepTag","hasInteraction","l","u","Transcript","steps","convoBegin","convoEnd","prettifyActual","prettifiedSteps","TranscriptAttachment","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","conditionalGroupId","conditionMetInGroup","skipOptionalStep","optionalStepAssertionError","globalConvoStepParameters","retryBotMessageTimeoutEnd","retryBotMessageConvoId","retryBotMessageDropBotResponse","rawConvoStepParameters","convoStepParameters","params","param","semicolon","currentStepIndex","meMsg","WORKAROUND_OVERWRITE_JSON_MESSAGE_TEXT","setUserInput","onMeStart","onMePrepare","coreMsg","omit","setTimeout","isNull","onMeEnd","failErr","executeBotStep","executeBotStepResult","onBotStart","stepTimeout","prepared","onBotPrepare","conditional","endOfConditionalGroup","nextConvoStep","some","toUpperCase","nextConditionalLogicHook","skip","undefined","isErrorHandledWithOptionConvoStep","retryConfig","ignoreNotMatchedBotResponses","retryOn","timeout","mainAsserter","getTime","timeoutRemaining","assertErrors","scriptingMemoryUpdate","response","_checkNormalizeText","tomatch","_resolveUtterancesToMatch","assertBotNotResponse","_compareObject","assertConvoStep","onBotEnd","allAsserters","includes","transcriptStepErrs","forOwn","prototype","hasOwnProperty","call","GetScriptingMemoryAllVariables","partialConvos","GetPartialConvos","variableNames","partialConvo","partialConvoName","GetScriptingMemoryVariables","__extractFromArgs","convoStepItems","resultInner","item","uniq","queueLength","_QueueLength","normalizedUtterances","expandPartialConvos","_getIncludeLogicHookNames","hook","_getEffectiveConversationRecursive","parentPConvos","ignoreBeginEnd","includeLogicHooks","steptagPath","includeLogicHook","alreadyThereAt","Convo_1","RetryHelper_1","RetryHelper","section","retryErrorPatterns","onErrorRegexp","r","retrySettings","retries","numRetries","factor","minTimeout","shouldRetry","currentRetryCount","errString","re","_normalize","botresponse","regexp","ignoreCase","test","wildcard","numWildcards","utteranceRe","wildcardExact","include","equals","threshold","matchingModeWer","p","parseFloat","getMatchFunction","matchingMode","MatchFunctions","isStringJson","isJsonObject","json","stringIsJson","isJson","toJsonWeak","stringOrNot","optionalJson","body","shortenJsonString","escapeJSONString","formatTimeout","ms","floor","Utils","_ensureList","queryResult","precompile","filename","checkerJsonpath","CHECKER_JSONPATH","rootJsonpath","ROOT_JSONPATH","utteranceRefsJsonpath","UTTERANCE_REF_JSONPATH","utterancesJsonpath","UTTERANCES_JSONPATH","scriptData","scouldExist","rootObjects","intent","executeHook","executeHookSync","getHook","data","resultWithRequire","HookUtils","SCRIPT","htmlCommentRegexp","md","MarkdownIt","parsed","_extractFromRasaIntent","_extractFromRasaSentence","rasaSentence","matched","meText","meTexts","state","processLeafs","getAllCapValues","capNamePrefix","allCapValues","jsonPathCaps","pickBy","k","each","flatCababilities","prefix","capNames","regexpPrefixAndGroup","currentGroup","currentObject","capName","charAt","capPrefixAndGroup","PROVIDERS","JSON_TO_JSON_JSONPATH","MARKDOWN_RASA","require$$4","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","foundQARows","foundConvoRows","convoResults","currentConvo","currentConvoName","startrowindex","formatLength","max","formatBase","formatRowIndex","currentUtterance","emptylines","uttCell","line1Cell","colindexTemp","caseNameCell","varNameCell","variableValueCell","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","eolRead","eolWrite","isRegExp","_compileConvo","_compileUtterances","_compileScriptingMemory","isPartial","currentLineIndex","currentLines","convoStepSender","convoStepChannel","convoStepLineIndex","parseMsg","pushPrev","isValidTagLine","line","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","legacyModeOn","delimiter","firstline","d","rows","escape","quote","columns","relax_column_count","columnCount","lineNumberBase","colQuestion","colAnswer","colConversationId","colSender","colText","conversationIds","conversationId","convoRows","startRow","startRowHeader","stopOnEmpty","col","uttStruct","getData","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","globalAsserters","globalLogicHooks","_createLogicHookPromises","executeBotStepHooks","_createAsserterPromises","asserterType","_createUserInputPromises","resolveEmptyIfUnknown","_resolveUtterance","found","werArgs","nottomatch","retryHelperAsserter","retryHelperLogicHook","retryHelperUserInput","_isValidAsserterType","mapNot","updateExceptionContext","updateError","callAsserter","asserterSpec","notAsserterType","localAsserters","convoStepPromises","isGlobal","globalPromises","allPromises","allSettled","results","rejected","status","reason","all","localHooks","globalHooks","hooks","t","parts","uttArgs","_buildScriptContext","Match","BuildScriptContext","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","logicHookUtils","GetCompiler","ReadBotiumFilesFromDirectory","filelist","globby","sync","cwd","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","incomprehensionIntents","incomprehensionUtts","incomprehensionUtt","expandedConvos","uttName","responseStep","ii","origUttName","justHeader","convoFilter","mediaInput","messageTextMode","globalContext","totalConvoCount","expanded","_expandConvo","assertionCount","GetAssertionCount","ConvoWithOnlyHeader","_updateConvos","ExpandConvosIterable","_convosIterable","convosIterable","convoStepIndex","convoStepsStack","utterancePostfix","uttOrUserInput","naming","capabilities","utteranceMax","postfix","currentStep","currentStepsStack","useUnexpanded","allutterances","processSampleUtterances","sampleutterances","myContext","processSampleUtterance","indexExpansionModeIndex","sampleutterance","currentConvoLabeled","origConvoName","indexExpansionModeWidth","localIndex","x","random","uiIndex","expandConvo","expandedUserInputs","processSampleInputs","sampleinputs","processSampleInput","sampleinput","currentStepMod","convoPostfix","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","counter","stepCounter","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","code","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","timeoutCallback","registerPushListener","BaseContainer_1","BaseContainer","repo","envs","cleanupTasks","queues","bottleneck","onBuildHook","onStartHook","onUserSaysHook","onBotResponseHook","onStopHook","onCleanHook","limiter","Bottleneck","schedule","opts","maxConcurrent","minTime","_RunCustomHook","run","UserSaysImpl","isError","userSaysLimiter","hookExecuted","cleanupTasksDone","rimraffed","rimraf","_AssertOneCapabilityExists","checkCaps","arguments","_EmptyQueue","_QueueBotSays","fetch","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","headers","sendResponse","startProxy","port","express","bodyParser","urlencoded","extended","proxy","listen","console","log","v4","uuidv4","ProxyAgent","Agent","botiumUtils","Mustache","SimpleRestContainer_1","SimpleRestContainer","queueBotSays","processInbound","redisTopic","cookies","debounceTimeout","inboundEvents","_processOrderedInboundEventsArrayAsync","debounce","events","_getMustachedVal","sortedEvents","qr","_processBodyAsync","startHook","stopHook","requestHook","parserHook","responseHook","pollRequestHook","requestHooks","SIMPLEREST_PING","SIMPLEREST_START","SIMPLEREST_STOP","agentOptions","connect","rejectUnauthorized","dispatcher","_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","_fetchify","requestOptions","signal","AbortSignal","URLSearchParams","isFromUser","updateContext","_processBodyAsyncImpl","waitProcessQueue","_emptyWaitProcessQueue","mergeMode","jsonPathsContext","jsonPathContext","contextNodes","_isAnyContextJsonPathMatch","capNameMatch","jsonPaths","jsonPathsMatch","ignoreMatch","skipMatch","_extractFrom","acceptFn","jsonPathRes","rb","flattenDeep","jsonPathRoots","jsonPathsBody","jsonPathRoot","_retrieveMedia","jsonPathMediaRoot","jsonPathsMedia","retrievedMedia","responseMedia","mime","lookup","_retrieveButtons","jsonPathButtonRoot","capPrefix","jsonPathsButtons","jsonPathsButtonsText","jsonPathsButtonsPayload","retrievedButtons","responseButtons","responseButton","retrievedButton","possibleTexts","possiblePayloads","_getCardText","responseCardText","texts","jsonPathsCards","responseCards","jsonPathsCardText","jsonPathsCardSubText","_normalizeIntent","fallbackIntents","incomprehension","confidence","Number","jsonPathIntent","jsonPathConfidence","jsonPathList","jsonPathListIntent","jsonPathListConfidence","list","intentList","intents","hasMessageText","jsonPathsTexts","responseTexts","messageTexts","messageTextIndex","botMsgRoot","beforeHookKeys","afterHookKeys","continueMatch","isTextMsg","currentMsg","last","_buildRequest","uri","bodyRaw","ok","statusText","enabled","jsonBody","errKey","_storeCookiesFromResponse","parsedBody","nonEncodedMessage","encodeURIComponent","_getCapValue","ADD_QUERY_PARAM","appendToUri","ADD_FORM_PARAM","formKey","formValue","ADD_HEADER","headerKey","headerValue","_addRequestOptions","_addRequestCookies","_waitForUrlResponse","httpConfig","tries","changeBody","capValue","template","raw","_processInboundEvent","jsonPathValue","jsonPathsSelector","isSelected","jsonPathTemplate","hasResult","check","processingEvents","count","subscribe","unsubscribe","close","_runPolling","verb","pollConfig","pollInterval","setInterval","clearInterval","merge","url","URL","host","Cookie","responseCookies","pluginResolver","containermode","getModuleVersionSafe","required","pckg","version","loadConnectorModule","tryLoadPlugin","modulepath","pluginLoaderSpec","pluginInstance","plugin","PluginVersion","tryLoadPackage","plugins","PluginConnectorContainer_1","PluginConnectorContainer","retryHelperBuild","retryHelperStart","retryHelperUserSays","retryHelperStop","retryHelperClean","GetMetaData","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","tempDirectoryCreated","sanitize","repoValidated","_getRepo","repoPrepared","containerValidated","_getContainer","containerBuilt","_loadConfigFile","configJson","files","fetchedFiles","absFilePath","_findKeyProperty","checkPropIdx","newCaps","isFinite","newCapArray","capElement","mergeKey","oldElement","newCapObject","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","csvParseSync","findTranscription","baseDir","audioFile","csvCache","onError","transcriptionFilename","transcriptionFilenameAbs","encoding","audioFileComponents","parentIndex","csvDirectory","csvFilename","csvFilenameAbs","records","skip_empty_lines","record","fnKey","transcription","transcriptionFromFilename","hasWaitForBotTimeout","transciptError","botiumCore","InboundProxy","TranscriptUtils","require$$12","ScriptingConstants","require$$13","require$$14","require$$15","LogicHookConstants","require$$16","Lib","require$$17","require$$18"],"mappings":"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"}
|