botium-core 1.13.19 → 1.14.1

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.
Files changed (41) hide show
  1. package/dist/botium-cjs.js +328 -395
  2. package/dist/botium-cjs.js.map +1 -1
  3. package/dist/botium-es.js +328 -393
  4. package/dist/botium-es.js.map +1 -1
  5. package/package.json +24 -29
  6. package/samples/extensions/asserterHooks/botium.json +1 -0
  7. package/samples/extensions/logichooks/botium.json +1 -0
  8. package/samples/extensions/logichooks/custom/MyAsserter.js +3 -3
  9. package/src/Capabilities.js +2 -1
  10. package/src/containers/PluginConnectorContainer.js +8 -0
  11. package/src/containers/plugins/SimpleRestContainer.js +17 -9
  12. package/src/containers/plugins/index.js +29 -41
  13. package/src/helpers/HookUtils.js +32 -68
  14. package/src/scripting/Convo.js +26 -9
  15. package/src/scripting/ScriptingMemory.js +0 -24
  16. package/src/scripting/logichook/LogicHookUtils.js +27 -47
  17. package/src/scripting/logichook/logichooks/ConditionalBusinessHoursLogicHook.js +1 -1
  18. package/src/scripting/logichook/logichooks/ConditionalCapabilityValueBasedLogicHook.js +1 -1
  19. package/src/scripting/logichook/logichooks/ConditionalJsonPathBasedLogicHook.js +1 -1
  20. package/src/scripting/logichook/logichooks/ConditionalTimeBasedLogicHook.js +1 -1
  21. package/test/compiler/precompilerscript.spec.js +24 -26
  22. package/test/connectors/pluginconnectorcontainer.spec.js +60 -0
  23. package/test/connectors/simplerest.spec.js +24 -27
  24. package/test/convo/fillAndApplyScriptingMemory.spec.js +1 -47
  25. package/test/hooks/customhooks.spec.js +3 -25
  26. package/test/logichooks/hookfromsrc.spec.js +13 -3
  27. package/test/plugins/plugins.spec.js +29 -2
  28. package/test/scripting/logichooks/convos/conditional_steps_multiple_condition_groups_no_assertion.convo.txt +6 -6
  29. package/test/scripting/logichooks/convos/conditional_steps_multiple_mandatory_condition_groups.convo.txt +20 -0
  30. package/test/scripting/logichooks/convos/conditional_steps_multiple_optional_condition_groups.convo.txt +20 -0
  31. package/test/scripting/logichooks/customConditionalStepLogicHook.spec.js +16 -0
  32. package/test/security/allowUnsafe.spec.js +20 -129
  33. package/LICENSES-3RDPARTY.txt +0 -6450
  34. package/test/scripting/asserters/convos/customembeddedasserterwithhugo.convo.txt +0 -7
  35. package/test/scripting/asserters/convos/customembeddedasserterwithouthugo.convo.txt +0 -7
  36. package/test/scripting/asserters/customEmbeddedAsserter.json +0 -14
  37. package/test/scripting/asserters/customEmbeddedAsserter.spec.js +0 -55
  38. package/test/scripting/logichooks/convos/custom_embedded.convo.txt +0 -8
  39. package/test/scripting/logichooks/customEmbedded.json +0 -14
  40. package/test/scripting/logichooks/customEmbedded.spec.js +0 -44
  41. package/test/security/convos/withscriptingmemoryfunction.convo.txt +0 -5
@@ -1 +1 @@
1
- {"version":3,"file":"botium-cjs.js","sources":["../src/Capabilities.js","../src/Source.js","../src/Defaults.js","../src/Fluent.js","../src/Events.js","../src/scripting/BotiumError.js","../src/scripting/logichook/LogicHookConsts.js","../src/scripting/logichook/LogicHookUtils.js","../src/scripting/Constants.js","../src/mocks/BotiumMockAttachment.js","../src/mocks/BotiumMockRichMessageTypes.js","../src/mocks/BotiumMockScripting.js","../src/mocks/BotiumMockMessage.js","../src/Enums.js","../src/scripting/helper.js","../src/scripting/ScriptingMemory.js","../src/scripting/Convo.js","../src/helpers/RetryHelper.js","../src/scripting/MatchFunctions.js","../src/helpers/Utils.js","../src/scripting/precompilers/JsonToJson.js","../src/helpers/HookUtils.js","../src/scripting/precompilers/Script.js","../src/scripting/precompilers/MarkdownRasa.js","../src/helpers/CapabilitiesUtils.js","../src/scripting/precompilers/index.js","../src/scripting/CompilerBase.js","../src/scripting/Utterance.js","../src/scripting/CompilerXlsx.js","../src/scripting/CompilerTxt.js","../src/scripting/CompilerCsv.js","../src/scripting/CompilerObjectBase.js","../src/scripting/CompilerYaml.js","../src/scripting/CompilerJson.js","../src/scripting/CompilerMarkdown.js","../src/scripting/ScriptingProvider.js","../src/repos/BaseRepo.js","../src/repos/NoRepo.js","../src/helpers/ProcessUtils.js","../src/repos/GitRepo.js","../src/repos/LocalRepo.js","../src/Commands.js","../src/helpers/QueueTimeoutError.js","../src/helpers/Queue.js","../src/containers/BaseContainer.js","../src/containers/GridContainer.js","../src/containers/InProcessContainer.js","../src/grid/inbound/proxy.js","../src/containers/plugins/SimpleRestContainer.js","../src/containers/plugins/index.js","../src/containers/PluginConnectorContainer.js","../src/BotDriver.js","../src/Plugins.js","../src/helpers/TranscriptUtils.js","../index.js"],"sourcesContent":["module.exports = {\n PROJECTNAME: 'PROJECTNAME',\n TESTSESSIONNAME: 'TESTSESSIONNAME',\n TESTCASENAME: 'TESTCASENAME',\n TEMPDIR: 'TEMPDIR',\n CLEANUPTEMPDIR: 'CLEANUPTEMPDIR',\n WAITFORBOTTIMEOUT: 'WAITFORBOTTIMEOUT',\n CONTAINERMODE: 'CONTAINERMODE',\n PLUGINMODULEPATH: 'PLUGINMODULEPATH',\n // falsy or ms/keystroke\n SIMULATE_WRITING_SPEED: 'SIMULATE_WRITING_SPEED',\n BOTIUMGRIDURL: 'BOTIUMGRIDURL',\n BOTIUMAPITOKEN: 'BOTIUMAPITOKEN',\n BOTIUMGRIDSLOT: 'BOTIUMGRIDSLOT',\n // Simple Reset Bot Settings\n SIMPLEREST_PING_URL: 'SIMPLEREST_PING_URL',\n SIMPLEREST_PING_VERB: 'SIMPLEREST_PING_VERB',\n SIMPLEREST_PING_BODY: 'SIMPLEREST_PING_BODY',\n SIMPLEREST_PING_BODY_RAW: 'SIMPLEREST_PING_BODY_RAW',\n SIMPLEREST_PING_HEADERS: 'SIMPLEREST_PING_HEADERS',\n SIMPLEREST_PING_REQUEST_HOOK: 'SIMPLEREST_PING_REQUEST_HOOK',\n SIMPLEREST_PING_RETRIES: 'SIMPLEREST_PING_RETRIES',\n SIMPLEREST_PING_TIMEOUT: 'SIMPLEREST_PING_TIMEOUT',\n SIMPLEREST_PING_UPDATE_CONTEXT: 'SIMPLEREST_PING_UPDATE_CONTEXT',\n SIMPLEREST_PING_PROCESS_RESPONSE: 'SIMPLEREST_PING_PROCESS_RESPONSE',\n SIMPLEREST_START_URL: 'SIMPLEREST_START_URL',\n SIMPLEREST_START_VERB: 'SIMPLEREST_START_VERB',\n SIMPLEREST_START_BODY: 'SIMPLEREST_START_BODY',\n SIMPLEREST_START_BODY_RAW: 'SIMPLEREST_START_BODY_RAW',\n SIMPLEREST_START_HEADERS: 'SIMPLEREST_START_HEADERS',\n SIMPLEREST_START_REQUEST_HOOK: 'SIMPLEREST_START_REQUEST_HOOK',\n SIMPLEREST_START_RETRIES: 'SIMPLEREST_START_RETRIES',\n SIMPLEREST_START_TIMEOUT: 'SIMPLEREST_START_TIMEOUT',\n SIMPLEREST_START_UPDATE_CONTEXT: 'SIMPLEREST_START_UPDATE_CONTEXT',\n SIMPLEREST_START_PROCESS_RESPONSE: 'SIMPLEREST_START_PROCESS_RESPONSE',\n SIMPLEREST_STOP_URL: 'SIMPLEREST_STOP_URL',\n SIMPLEREST_STOP_VERB: 'SIMPLEREST_STOP_VERB',\n SIMPLEREST_STOP_BODY: 'SIMPLEREST_STOP_BODY',\n SIMPLEREST_STOP_BODY_RAW: 'SIMPLEREST_STOP_BODY_RAW',\n SIMPLEREST_STOP_HEADERS: 'SIMPLEREST_STOP_HEADERS',\n SIMPLEREST_STOP_REQUEST_HOOK: 'SIMPLEREST_STOP_REQUEST_HOOK',\n SIMPLEREST_STOP_RETRIES: 'SIMPLEREST_STOP_RETRIES',\n SIMPLEREST_STOP_TIMEOUT: 'SIMPLEREST_STOP_TIMEOUT',\n SIMPLEREST_INIT_CONTEXT: 'SIMPLEREST_INIT_CONTEXT',\n SIMPLEREST_INIT_TEXT: 'SIMPLEREST_INIT_TEXT',\n SIMPLEREST_INIT_PROCESS_RESPONSE: 'SIMPLEREST_INIT_PROCESS_RESPONSE',\n SIMPLEREST_PROXY_URL: 'SIMPLEREST_PROXY_URL',\n SIMPLEREST_STRICT_SSL: 'SIMPLEREST_STRICT_SSL',\n SIMPLEREST_URL: 'SIMPLEREST_URL',\n SIMPLEREST_EXTRA_OPTIONS: 'SIMPLEREST_EXTRA_OPTIONS',\n SIMPLEREST_IGNORE_EMPTY: 'SIMPLEREST_IGNORE_EMPTY',\n SIMPLEREST_TIMEOUT: 'SIMPLEREST_TIMEOUT',\n SIMPLEREST_METHOD: 'SIMPLEREST_METHOD',\n SIMPLEREST_VERB: 'SIMPLEREST_VERB',\n SIMPLEREST_HEADERS_TEMPLATE: 'SIMPLEREST_HEADERS_TEMPLATE',\n SIMPLEREST_BODY_TEMPLATE: 'SIMPLEREST_BODY_TEMPLATE',\n SIMPLEREST_BODY_RAW: 'SIMPLEREST_BODY_RAW',\n SIMPLEREST_START_HOOK: 'SIMPLEREST_START_HOOK',\n SIMPLEREST_STOP_HOOK: 'SIMPLEREST_STOP_HOOK',\n SIMPLEREST_REQUEST_HOOK: 'SIMPLEREST_REQUEST_HOOK',\n SIMPLEREST_PARSER_HOOK: 'SIMPLEREST_PARSER_HOOK',\n SIMPLEREST_POLL_URL: 'SIMPLEREST_POLL_URL',\n SIMPLEREST_POLL_VERB: 'SIMPLEREST_POLL_VERB',\n SIMPLEREST_POLL_BODY: 'SIMPLEREST_POLL_BODY',\n SIMPLEREST_POLL_BODY_RAW: 'SIMPLEREST_POLL_BODY_RAW',\n SIMPLEREST_POLL_HEADERS: 'SIMPLEREST_POLL_HEADERS',\n SIMPLEREST_POLL_REQUEST_HOOK: 'SIMPLEREST_POLL_REQUEST_HOOK',\n SIMPLEREST_POLL_INTERVAL: 'SIMPLEREST_POLL_INTERVAL',\n SIMPLEREST_POLL_TIMEOUT: 'SIMPLEREST_PING_TIMEOUT',\n SIMPLEREST_POLL_UPDATE_CONTEXT: 'SIMPLEREST_POLL_UPDATE_CONTEXT',\n SIMPLEREST_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 // 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_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 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_TXT_EOL]: '\\n',\n [Capabilities.SCRIPTING_XLSX_EOL_WRITE]: '\\r\\n',\n [Capabilities.SCRIPTING_XLSX_HASHEADERS]: true,\n [Capabilities.SCRIPTING_CSV_SKIP_HEADER]: true,\n [Capabilities.SCRIPTING_CSV_QUOTE]: '\"',\n [Capabilities.SCRIPTING_CSV_ESCAPE]: '\"',\n [Capabilities.SCRIPTING_NORMALIZE_TEXT]: true,\n [Capabilities.SCRIPTING_ENABLE_MEMORY]: false,\n [Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]: false,\n [Capabilities.SCRIPTING_MATCHING_MODE]: 'wildcardIgnoreCase',\n [Capabilities.SCRIPTING_UTTEXPANSION_MODE]: 'all',\n [Capabilities.SCRIPTING_UTTEXPANSION_RANDOM_COUNT]: 1,\n [Capabilities.SCRIPTING_UTTEXPANSION_NAMING_MODE]: 'justLineTag',\n [Capabilities.SCRIPTING_UTTEXPANSION_NAMING_UTTERANCE_MAX]: '16',\n [Capabilities.SCRIPTING_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 _ = require('lodash')\n\nconst BotiumError = class BotiumError extends Error {\n /**\n *\n * @param message\n * @param context A JSON with struct\n * {\n * type: 'some free text to identity the exception type',\n * source: 'source of the event',\n * ...\n */\n constructor (message, context, supressChildCheck) {\n super(message.message || message)\n\n if (!supressChildCheck && _getChildErrorsFromContext(context)) {\n throw Error('Create BotiumError with child errors using the fromList() method!')\n }\n // Saving class name in the property of our custom error as a shortcut.\n this.name = this.constructor.name\n\n // Capturing stack trace, excluding constructor call from it.\n Error.captureStackTrace(this, this.constructor)\n\n this.context = context || {}\n this.context.message = message.message || message\n }\n\n isAsserterError () {\n if (this.context) {\n const errArr = _.isArray(this.context) ? this.context : [this.context]\n const hasNotAsserterError = errArr.findIndex(errDetail => {\n if (errDetail.type === 'list') {\n if (errDetail.errors) {\n return errDetail.errors.findIndex(e => e.type !== 'asserter') >= 0\n } else {\n return true\n }\n } else {\n return errDetail.type !== 'asserter'\n }\n }) >= 0\n if (hasNotAsserterError) return false\n return true\n } else {\n return false\n }\n }\n\n prettify (includeJson) {\n const lines = []\n if (this.context) {\n const errArr = _.isArray(this.context) ? this.context : [this.context]\n errArr.forEach(errDetail => {\n lines.push('########################################')\n if (errDetail.type === 'asserter') {\n const segments = []\n segments.push(`ASSERTION FAILED in ${errDetail.source}${errDetail.subtype ? ` (${errDetail.subtype})` : ''}`)\n errDetail.cause && errDetail.cause.expected && !errDetail.cause.not && segments.push(` - Expected: ${JSON.stringify(errDetail.cause.expected)} `)\n errDetail.cause && errDetail.cause.expected && errDetail.cause.not && segments.push(` - NOT Expected: ${JSON.stringify(errDetail.cause.expected)} `)\n errDetail.cause && errDetail.cause.actual && segments.push(` - Actual: ${JSON.stringify(errDetail.cause.actual)}`)\n errDetail.cause && !errDetail.cause.actual && segments.push(' - Actual: empty')\n lines.push(segments.join(''))\n errDetail.input && errDetail.input.messageText && lines.push(`INPUT: ${errDetail.input.messageText}`)\n } else if (errDetail.message) {\n lines.push(`${errDetail.message}`)\n }\n if (errDetail.transcript && errDetail.transcript.length > 0) {\n lines.push('------------ TRANSCRIPT ----------------------------')\n errDetail.transcript.forEach(transcriptStep => {\n if (transcriptStep.actual) {\n lines.push(transcriptStep.actual.prettify())\n }\n })\n }\n if (includeJson) {\n lines.push('------------ JSON CONTENT ----------------------------')\n try {\n const jsonOutput = JSON.stringify(errDetail)\n lines.push(jsonOutput)\n } catch (jsonErr) {\n lines.push(`JSON Output not possible: ${jsonErr.message}`)\n }\n }\n })\n }\n if (lines.length > 0) {\n return lines.join('\\r\\n')\n } else {\n return null\n }\n }\n}\n\nconst _getChildErrorsFromContext = (context) => {\n if (context && context.errors && _.isArray(context.errors)) {\n return context.errors\n }\n return false\n}\n\nconst botiumErrorFromErr = (message, err) => {\n if (err instanceof BotiumError) {\n return new BotiumError(message, err.context, true)\n } else {\n return new BotiumError(message, { err }, true)\n }\n}\n\nconst botiumErrorFromList = (errors, { type = 'list', source = 'BotiumError', flat = true }) => {\n const message = errors.map(err => err.message || err.toString()).join(',\\n')\n let children = []\n\n for (const error of errors) {\n if (error instanceof BotiumError) {\n const childErrors = flat && _getChildErrorsFromContext(error.context)\n if (childErrors && childErrors.length) {\n children = children.concat(childErrors)\n } else if (error.context) {\n children.push(error.context)\n }\n } else {\n children.push(error)\n }\n }\n const result = new BotiumError(message, { errors: children, type, source }, true)\n return result\n}\n\nmodule.exports = {\n BotiumError,\n botiumErrorFromErr,\n botiumErrorFromList\n}\n","const LOGIC_HOOK_INCLUDE = 'INCLUDE'\nmodule.exports = {\n LOGIC_HOOK_INCLUDE,\n DEFAULT_ASSERTERS: [\n { name: 'BUTTONS', className: 'ButtonsAsserter' },\n { name: 'BUTTONS_COUNT', className: 'ButtonsCountAsserter' },\n { name: 'BUTTONS_COUNT_REC', className: 'ButtonsCountRecAsserter' },\n { name: 'MEDIA', className: 'MediaAsserter' },\n { name: 'MEDIA_COUNT', className: 'MediaCountAsserter' },\n { name: 'MEDIA_COUNT_REC', className: 'MediaCountRecAsserter' },\n { name: 'CARDS', className: 'CardsAsserter' },\n { name: 'CARDS_COUNT', className: 'CardsCountAsserter' },\n { name: 'CARDS_COUNT_REC', className: 'CardsCountRecAsserter' },\n { name: 'PAUSE_ASSERTER', className: 'PauseAsserter' },\n { name: 'JSON_PATH', className: 'JsonPathAsserter' },\n { name: 'JSON_PATH_COUNT', className: 'JsonPathCountAsserter' },\n { name: 'RESPONSE_LENGTH', className: 'ResponseLengthAsserter' },\n { name: 'FORMS', className: 'FormsAsserter' },\n\n { name: 'ENTITIES', className: 'EntitiesAsserter' },\n { name: 'ENTITY_VALUES', className: 'EntityValuesAsserter' },\n { name: 'ENTITY_CONTENT', className: 'EntityContentAsserter' },\n\n { name: 'INTENT', className: 'IntentAsserter' },\n { name: 'INTENT_UNIQUE', className: 'IntentUniqueAsserter' },\n { name: 'INTENT_CONFIDENCE', className: 'IntentConfidenceAsserter' },\n\n { name: 'TEXT_CONTAINS_ANY', className: 'TextContainsAnyAsserter' },\n { name: 'TEXT_CONTAINS_ANY_IC', className: 'TextContainsAnyICAsserter' },\n { name: 'TEXT_CONTAINS_ALL', className: 'TextContainsAllAsserter' },\n { name: 'TEXT_CONTAINS_ALL_IC', className: 'TextContainsAllICAsserter' },\n { name: 'TEXT_WILDCARD_ANY', className: 'TextWildcardAnyAsserter' },\n { name: 'TEXT_WILDCARD_ANY_IC', className: 'TextWildcardAnyICAsserter' },\n { name: 'TEXT_WILDCARD_ALL', className: 'TextWildcardAllAsserter' },\n { name: 'TEXT_WILDCARD_ALL_IC', className: 'TextWildcardAllICAsserter' },\n { name: 'TEXT_WILDCARDEXACT_ANY', className: 'TextWildcardExactAnyAsserter' },\n { name: 'TEXT_WILDCARDEXACT_ANY_IC', className: 'TextWildcardExactAnyICAsserter' },\n { name: 'TEXT_WILDCARDEXACT_ALL', className: 'TextWildcardExactAllAsserter' },\n { name: 'TEXT_WILDCARDEXACT_ALL_IC', className: 'TextWildcardExactAllICAsserter' },\n { name: 'TEXT_REGEXP_ANY', className: 'TextRegexpAnyAsserter' },\n { name: 'TEXT_REGEXP_ANY_IC', className: 'TextRegexpAnyICAsserter' },\n { name: 'TEXT_REGEXP_ALL', className: 'TextRegexpAllAsserter' },\n { name: 'TEXT_REGEXP_ALL_IC', className: 'TextRegexpAllICAsserter' },\n { name: 'TEXT_EQUALS', className: 'TextEqualsAnyAsserter' },\n { name: 'TEXT_EQUALS_IC', className: 'TextEqualsAnyICAsserter' },\n { name: 'TEXT', className: 'TextEqualsAnyAsserter' },\n { name: 'TEXT_IC', className: 'TextEqualsAnyICAsserter' },\n { 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 ],\n DEFAULT_USER_INPUTS: [\n { name: 'BUTTON', className: 'ButtonInput' },\n { name: 'MEDIA', className: 'MediaInput' },\n { name: 'FORM', className: 'FormInput' }\n ]\n}\n","const { NodeVM } = require('vm2')\nconst path = require('path')\nconst fs = require('fs')\nconst isClass = require('is-class')\nconst debug = require('debug')('botium-core-asserterUtils')\n\nconst { BotiumError } = require('../BotiumError')\n\nconst { DEFAULT_ASSERTERS, DEFAULT_LOGIC_HOOKS, DEFAULT_USER_INPUTS } = require('./LogicHookConsts')\n\nDEFAULT_ASSERTERS.forEach((asserter) => {\n asserter.Class = require(`./asserter/${asserter.className}`)\n})\n\nDEFAULT_LOGIC_HOOKS.forEach((logicHook) => {\n logicHook.Class = require(`./logichooks/${logicHook.className}`)\n})\n\nDEFAULT_USER_INPUTS.forEach((userInput) => {\n userInput.Class = require(`./userinput/${userInput.className}`)\n})\n\nconst Capabilities = require('../../Capabilities')\nconst _ = require('lodash')\n\nmodule.exports = class LogicHookUtils {\n constructor ({ buildScriptContext, caps }) {\n this.asserters = {}\n this.globalAsserters = []\n this.logicHooks = {}\n this.globalLogicHooks = []\n this.userInputs = {}\n this.buildScriptContext = buildScriptContext\n this.caps = caps\n this._setDefaultAsserters()\n this._setDefaultLogicHooks()\n this._setDefaultUserInputs()\n this._fetchAsserters()\n this._fetchLogicHooks()\n this._fetchUserInputs()\n }\n\n _setDefaultAsserters () {\n DEFAULT_ASSERTERS.forEach((asserter) => {\n this.asserters[asserter.name] = new (asserter.Class)(this.buildScriptContext, this.caps)\n })\n }\n\n _setDefaultLogicHooks () {\n DEFAULT_LOGIC_HOOKS.forEach((lh) => {\n this.logicHooks[lh.name] = new (lh.Class)(this.buildScriptContext, this.caps)\n })\n }\n\n _setDefaultUserInputs () {\n DEFAULT_USER_INPUTS.forEach((ui) => {\n this.userInputs[ui.name] = new (ui.Class)(this.buildScriptContext, this.caps)\n })\n }\n\n _fetchAsserters () {\n this.caps[Capabilities.ASSERTERS]\n .forEach(asserter => {\n if (this.asserters[asserter.ref]) {\n debug(`${asserter.ref} asserter already exists, overwriting.`)\n }\n this.asserters[asserter.ref] = this._loadClass(asserter, 'asserter')\n if (asserter.global) {\n this.globalAsserters.push(asserter.ref)\n }\n })\n }\n\n _fetchLogicHooks () {\n this.caps[Capabilities.LOGIC_HOOKS]\n .forEach(logicHook => {\n if (this.logicHooks[logicHook.ref]) {\n debug(`${logicHook.ref} logic hook already exists, overwriting.`)\n }\n this.logicHooks[logicHook.ref] = this._loadClass(logicHook, 'logichook')\n if (logicHook.global) {\n this.globalLogicHooks.push(logicHook.ref)\n }\n })\n }\n\n _fetchUserInputs () {\n this.caps[Capabilities.USER_INPUTS]\n .forEach(userInput => {\n if (this.userInputs[userInput.ref]) {\n debug(`${userInput.ref} userinput already exists, overwriting.`)\n }\n this.userInputs[userInput.ref] = this._loadClass(userInput, 'userinput')\n })\n }\n\n getGlobalAsserter () {\n return this.globalAsserters\n .map(name => this.asserters[name])\n }\n\n getGlobalLogicHook () {\n return this.globalLogicHooks\n .map(name => this.logicHooks[name])\n }\n\n _loadClass ({ src, ref, args }, hookType) {\n if (hookType !== 'asserter' && hookType !== 'logichook' && hookType !== 'userinput') {\n throw Error(`Unknown hookType ${hookType}`)\n }\n\n // 1 gives possibility to use default asserter as global asserter\n if (hookType === 'asserter') {\n const asserter = DEFAULT_ASSERTERS.find(asserter => src === asserter.className || 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 _checkUnsafe = () => {\n if (!this.caps[Capabilities.SECURITY_ALLOW_UNSAFE]) {\n throw new BotiumError(\n 'Security Error. Using unsafe component is not allowed',\n {\n type: 'security',\n subtype: 'allow unsafe',\n source: path.basename(__filename),\n cause: { src: !!src, ref, args, hookType }\n }\n )\n }\n }\n\n if (!src) {\n const packageName = `botium-${hookType}-${ref}`\n try {\n const CheckClass = require(packageName)\n if (isClass(CheckClass)) {\n return new CheckClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else if (_.isFunction(CheckClass)) {\n return CheckClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else if (isClass(CheckClass.PluginClass)) {\n return new CheckClass.PluginClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else {\n throw new Error(`${packageName} class or function or PluginClass field expected`)\n }\n } catch (err) {\n throw new Error(`Failed to fetch hook ${ref} ${hookType} from guessed package ${packageName} - ${err.message}`)\n }\n }\n\n if (isClass(src)) {\n try {\n const CheckClass = src\n return new CheckClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } catch (err) {\n throw new Error(`Failed to load package ${ref} from provided class - ${err.message}`)\n }\n }\n if (_.isFunction(src)) {\n try {\n return src({ ref, ...this.buildScriptContext }, this.caps, args)\n } catch (err) {\n throw new Error(`Failed to load package ${ref} from provided function - ${err.message}`)\n }\n }\n if (_.isObject(src) && !_.isString(src)) {\n try {\n const hookObject = Object.keys(src).reduce((result, key) => {\n result[key] = (args) => {\n const script = src[key]\n if (_.isFunction(script)) {\n return script(args)\n } else if (_.isString(script)) {\n try {\n const vm = new NodeVM({\n eval: false,\n require: false,\n sandbox: args\n })\n return vm.run(script)\n } catch (err) {\n throw new Error(`Script ${key} is not valid - ${err.message || err}`)\n }\n } else {\n throw new Error(`Script \"${key}\" is not valid - only functions and javascript code accepted`)\n }\n }\n return result\n }, {})\n return hookObject\n } catch (err) {\n throw new Error(`Failed to load package ${ref} ${hookType} from provided src function - ${err.message}`)\n }\n }\n\n if (_.isString(src)) {\n const loadErr = []\n\n const tryLoads = [{\n tryLoadPackageName: src,\n tryLoadAsserterByName: null\n }]\n if (src.indexOf('/') >= 0) {\n tryLoads.push({\n tryLoadPackageName: src.substr(0, src.lastIndexOf('/')),\n tryLoadAsserterByName: src.substr(src.lastIndexOf('/') + 1)\n })\n }\n\n const tryLoadFromSource = (tryRequire, tryAsserterName) => {\n let CheckClass = require(tryRequire)\n if (CheckClass.default) {\n CheckClass = CheckClass.default\n }\n if (tryAsserterName) {\n if (hookType === 'asserter' && CheckClass.PluginAsserters && CheckClass.PluginAsserters[tryAsserterName]) {\n CheckClass = CheckClass.PluginAsserters[tryAsserterName]\n } else if (hookType === 'logichook' && CheckClass.PluginLogicHooks && CheckClass.PluginLogicHooks[tryAsserterName]) {\n CheckClass = CheckClass.PluginLogicHooks[tryAsserterName]\n } else {\n throw new Error(`Loaded ${tryRequire}, but ${tryAsserterName} ${hookType} not found.`)\n }\n }\n if (isClass(CheckClass)) {\n return new CheckClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else if (_.isFunction(CheckClass)) {\n return CheckClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else if (isClass(CheckClass.PluginClass)) {\n return new CheckClass.PluginClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else if (_.isFunction(CheckClass.PluginClass)) {\n return CheckClass.PluginClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else {\n throw new Error(`${src} class or function expected`)\n }\n }\n\n for (const tryLoad of tryLoads) {\n const tryLoadFile = path.resolve(process.cwd(), tryLoad.tryLoadPackageName)\n if (fs.existsSync(tryLoadFile)) {\n _checkUnsafe()\n try {\n return tryLoadFromSource(tryLoadFile, tryLoad.tryLoadAsserterByName)\n } catch (err) {\n loadErr.push(`Failed to fetch ${ref} ${hookType} from ${src} - ${err.message} `)\n }\n }\n try {\n return tryLoadFromSource(tryLoad.tryLoadPackageName, tryLoad.tryLoadAsserterByName)\n } catch (err) {\n loadErr.push(`Failed to fetch ${ref} ${hookType} from ${src} - ${err.message} `)\n }\n }\n\n loadErr.forEach(debug)\n }\n throw new Error(`Failed to fetch ${ref} ${hookType}, no idea how to load ...`)\n }\n}\n","module.exports = {\n SCRIPTING_FORMAT_XSLX: 'SCRIPTING_FORMAT_XSLX',\n SCRIPTING_FORMAT_TXT: 'SCRIPTING_FORMAT_TXT',\n SCRIPTING_FORMAT_YAML: 'SCRIPTING_FORMAT_YAML',\n SCRIPTING_FORMAT_JSON: 'SCRIPTING_FORMAT_JSON',\n SCRIPTING_FORMAT_CSV: 'SCRIPTING_FORMAT_CSV',\n SCRIPTING_FORMAT_MARKDOWN: 'SCRIPTING_FORMAT_MARKDOWN',\n SCRIPTING_TYPE_CONVO: 'SCRIPTING_TYPE_CONVO',\n SCRIPTING_TYPE_PCONVO: 'SCRIPTING_TYPE_PCONVO',\n SCRIPTING_TYPE_UTTERANCES: 'SCRIPTING_TYPE_UTTERANCES',\n SCRIPTING_TYPE_SCRIPTING_MEMORY: 'SCRIPTING_TYPE_SCRIPTING_MEMORY'\n}\n","module.exports = class BotiumMockAttachment {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.mimeType = fromJson.mimeType\n this.base64 = fromJson.base64\n this.href = fromJson.href\n }\n}\n","const _ = require('lodash')\n\nclass BotiumMockMedia {\n constructor (fromJson = {}) {\n this.mediaUri = fromJson.mediaUri\n this.mimeType = fromJson.mimeType\n this.altText = fromJson.altText\n this.downloadUri = fromJson.downloadUri\n this.buffer = fromJson.buffer\n }\n\n prettify (indent = 0) {\n const sections = []\n if (this.mediaUri) sections.push(_.truncate(this.mediaUri, { length: 200 }))\n if (this.mimeType) sections.push(this.mimeType)\n if (this.altText) sections.push(this.altText)\n return `${' '.repeat(indent)}MEDIA(${sections.join(' | ')})`\n }\n}\n\nclass BotiumMockButton {\n constructor (fromJson = {}) {\n this.text = fromJson.text\n this.payload = fromJson.payload\n this.imageUri = fromJson.imageUri\n }\n\n prettify (indent = 0) {\n const sections = []\n if (this.text) sections.push(this.text)\n if (this.payload) sections.push(_.isObject(this.payload) ? JSON.stringify(this.payload) : this.payload)\n if (this.imageUri) sections.push(_.truncate(this.imageUri, { length: 200 }))\n return `${' '.repeat(indent)}BUTTON(${sections.join(' | ')})`\n }\n}\n\nclass BotiumMockCard {\n constructor (fromJson = {}) {\n this.text = fromJson.text\n this.subtext = fromJson.subtext\n this.content = fromJson.content\n this.sourceData = fromJson.sourceData\n this.image = (fromJson.image ? new BotiumMockMedia(fromJson.image) : null)\n this.buttons = (fromJson.buttons ? fromJson.buttons.map((a) => new BotiumMockButton(a)) : null)\n this.media = (fromJson.media ? fromJson.media.map((a) => new BotiumMockMedia(a)) : null)\n this.forms = (fromJson.forms ? fromJson.forms.map((a) => new BotiumMockForm(a)) : null)\n this.cards = (fromJson.cards ? fromJson.cards.map((a) => new BotiumMockCard(a)) : null)\n this.sourceData = fromJson.sourceData\n }\n\n prettify (indent = 0) {\n return this._prettifyLines(this, indent).join('\\n')\n }\n\n _prettifyLines (card, indent) {\n const prettifySafe = (entry, indent) => entry.prettify ? entry.prettify(2) : `${' '.repeat(indent)}<No botium object!>${JSON.stringify(entry)}`\n\n const sections = []\n if (card.text) sections.push(card.text)\n if (card.subtext) sections.push(card.subtext)\n\n const lines = []\n if (card.image) lines.push(card.image.prettify(indent + 2))\n if (card.media) lines.push(...card.media.map(m => prettifySafe(m, indent + 2)))\n if (card.buttons) lines.push(...card.buttons.map(b => prettifySafe(b, indent + 2)))\n if (card.forms) lines.push(...card.forms.map(f => prettifySafe(f, indent + 2)))\n if (card.cards) lines.push(...card.cards.map(c => this._prettifyLines(c, indent + 2)))\n\n return [\n `${' '.repeat(indent)}CARD(${sections.join(' | ')})`,\n ...lines\n ]\n }\n}\n\nclass BotiumMockForm {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.value = fromJson.value\n\n this.label = fromJson.label\n this.type = fromJson.type\n this.options = (fromJson.options ? fromJson.options.map((c) => new BotiumMockChoice(c)) : null)\n }\n\n prettify (indent = 0) {\n const sections = []\n if (this.name) sections.push(this.name)\n if (this.label) sections.push(this.label)\n if (this.value) sections.push(this.value)\n return `${' '.repeat(indent)}FORM(${sections.join(' | ')})`\n }\n}\n\nclass BotiumMockChoice {\n constructor (fromJson = {}) {\n this.title = fromJson.title\n this.value = fromJson.value\n }\n}\n\nmodule.exports = {\n BotiumMockMedia,\n BotiumMockButton,\n BotiumMockCard,\n BotiumMockForm\n}\n","const _ = require('lodash')\n\nclass BotiumMockAsserter {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.args = _.cloneDeep(fromJson.args)\n 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')\n\nconst normalizeText = (str, doCleanup) => {\n if (str && _.isArray(str)) {\n str = str.join(' ')\n } else if (str && !_.isString(str)) {\n if (str.toString) {\n str = str.toString()\n } else {\n str = `${str}`\n }\n }\n if (str && doCleanup) {\n // remove html tags\n str = str.replace(/<p[^>]*>/g, ' ')\n str = str.replace(/<\\/p>/g, ' ')\n str = str.replace(/<br[^>]*>/g, ' ')\n str = str.replace(/<[^>]*>/g, '')\n /* eslint-disable no-control-regex */\n // remove not printable characters\n str = str.replace(/[\\x00-\\x1F\\x7F]/g, ' ')\n /* eslint-enable no-control-regex */\n // replace html entities\n str = str\n .replace(/&amp;/g, '&')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&#39;/g, '\\'')\n .replace(/&quot;/g, '\"')\n // replace two spaces with one\n str = str.replace(/\\s+/g, ' ')\n\n str = str.split('\\n').map(s => s.trim()).join('\\n').trim()\n }\n return str\n}\n\nconst splitStringInNonEmptyLines = (str) => str ? str.split('\\n').map(s => s.trim()).filter(s => s.length > 0) : []\n\nconst quoteRegexpString = (str) => {\n return str.replace(/[-\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n}\n\nconst removeBuffers = obj => {\n const jsonString = JSON.stringify(obj, (key, value) => {\n if (_.isBuffer(value)) {\n return '(binary data)'\n } else if (value && value.type && value.type === 'Buffer') {\n return '(binary data)'\n } else if (key.toLowerCase() === 'base64') {\n return '(base64 data)'\n } else if (_.isString(value) && value.startsWith('data:')) {\n return '(base64 data url)'\n }\n return value\n })\n return JSON.parse(jsonString)\n}\n\nconst toString = (value) => {\n if (_.isUndefined(value) || _.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, 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 = textLines.join(eol).trim()\n }\n }\n } else {\n // no message is different from empty message\n convoStep.messageText = null\n }\n\n // Check if all element in convo step is optional or not optional\n const optionalSet = new Set()\n if (convoStep.messageText) {\n optionalSet.add(convoStep.optional)\n }\n for (const asserter of convoStep.asserters) {\n optionalSet.add(asserter.optional)\n }\n if (optionalSet.size > 1) {\n throw new Error(`Failed to parse conversation. All element in convo step has to be optional or not optional: ${JSON.stringify(lines)}`)\n }\n\n return convoStep\n}\n\nconst convoStepToObject = (step) => {\n const result = []\n if (step.sender === 'me') {\n for (const form of (step.forms || []).filter(form => form.value)) {\n result.push({\n userinput: 'FORM',\n args: [form.name, form.value]\n })\n }\n if (step.buttons && step.buttons.length > 0) {\n const userinput = {\n userinput: 'BUTTON',\n args: []\n }\n if (step.buttons[0].payload) {\n userinput.args.push(step.buttons[0].payload)\n if (step.buttons[0].text) {\n userinput.args.push(step.buttons[0].text)\n }\n } else {\n userinput.args.push(step.buttons[0].text)\n }\n result.push(userinput)\n } else if (step.media && step.media.length > 0) {\n result.push({\n userinput: 'MEDIA',\n args: [step.media[0].mediaUri]\n })\n } else if (step.messageText) {\n result.push(step.messageText)\n }\n for (const logicHook of step.logicHooks || []) {\n result.push({\n logichook: logicHook.name,\n args: logicHook.args || []\n })\n }\n } else {\n if (step.messageText) {\n let messageTextPrefix = ''\n if (step.optional) messageTextPrefix += '?'\n if (step.not) messageTextPrefix += '!'\n result.push(messageTextPrefix + step.messageText)\n }\n if (step.buttons && step.buttons.length > 0) {\n result.push({\n asserter: 'BUTTONS',\n args: step.buttons.map(b => flatString(b.text))\n })\n }\n if (step.media && step.media.length > 0) {\n result.push({\n asserter: 'MEDIA',\n args: step.media.map(m => { return m.buffer && m.buffer.startsWith('data:') ? 'data:' : m.mediaUri })\n })\n }\n if (step.cards && step.cards.length > 0) {\n step.cards.forEach(c => {\n let cardTexts = []\n if (c.text) cardTexts = cardTexts.concat(_.isArray(c.text) ? c.text : [c.text])\n if (c.subtext) cardTexts = cardTexts.concat(_.isArray(c.subtext) ? c.subtext : [c.subtext])\n if (c.content) cardTexts = cardTexts.concat(_.isArray(c.content) ? c.content : [c.content])\n if (cardTexts.length > 0) {\n result.push({\n asserter: 'CARDS',\n args: cardTexts.map(c => flatString(c))\n })\n }\n\n if (c.buttons && c.buttons.length > 0) {\n result.push({\n asserter: 'BUTTONS',\n args: c.buttons.map(b => b.text)\n })\n }\n if (c.image) {\n result.push({\n asserter: 'MEDIA',\n args: c.image.mediaUr,\n not: !!step.not\n })\n }\n })\n }\n for (const asserter of step.asserters || []) {\n result.push({\n asserter: asserter.name,\n args: asserter.args || [],\n optional: !!asserter.optional,\n not: !!asserter.not\n })\n }\n for (const logicHook of step.logicHooks || []) {\n result.push({\n logichook: logicHook.name,\n args: logicHook.args || []\n })\n }\n }\n return result\n}\n\nconst validSenders = ['begin', 'include', 'me', 'bot', 'end']\n\nconst validateSender = (sender) => {\n if (validSenders.indexOf(sender) >= 0) return true\n else return false\n}\n\nconst validateConvo = (convo) => {\n const validationResult = {\n errors: []\n }\n for (let i = 0; i < convo.conversation.length; i++) {\n const step = convo.conversation[i]\n if (step.sender === 'bot') {\n // Check if all element in convo step is optional or not optional\n const optionalSet = new Set()\n if (step.messageText) {\n optionalSet.add(step.optional)\n }\n if (step.asserters) {\n for (const asserter of step.asserters) {\n optionalSet.add(asserter.optional)\n }\n }\n if (optionalSet.size > 1) {\n validationResult.errors.push(new Error(`Step ${i + 1}: Failed to decompile conversation. Mixed optional flag is not allowed inside one step.`))\n }\n\n if (optionalSet.size === 1 && optionalSet.has(true)) {\n const nextStep = convo.conversation[i + 1]\n if (!nextStep || nextStep.sender !== 'bot') {\n validationResult.errors.push(new Error(`Step ${i + 1}: Optional bot convo step has to be followed by a bot convo step.`))\n }\n }\n }\n if (!validateSender(step.sender)) {\n validationResult.errors.push(new Error(`Step ${i + 1}: Sender #${step.sender} is invalid.`))\n }\n }\n return validationResult\n}\n\nconst _decompileButton = (b) => {\n let buttonScript = ''\n if (b.payload) {\n buttonScript += _.isObject(b.payload) ? JSON.stringify(b.payload) : flatString(b.payload)\n if (b.text) {\n buttonScript += `|${flatString(b.text)}`\n }\n } else {\n buttonScript += flatString(b.text)\n }\n return buttonScript\n}\n\nconst convoStepToLines = (step) => {\n const lines = []\n if (step.sender === 'me') {\n step.forms && step.forms.filter(form => form.value).forEach((form) => {\n lines.push(`FORM${_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 }\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.map(l => l.trim())\n}\n\nconst linesToScriptingMemories = (lines, columnMode = null) => {\n const guessScriptingMemoryColumnMode = (lines) => {\n if (lines && lines.length > 1) {\n if (lines[1].trim().startsWith('$')) return E_SCRIPTING_MEMORY_COLUMN_MODE.TESTCASENAMES\n }\n return E_SCRIPTING_MEMORY_COLUMN_MODE.VARNAMES\n }\n columnMode = columnMode || guessScriptingMemoryColumnMode(lines)\n\n const scriptingMemories = []\n\n if (columnMode === E_SCRIPTING_MEMORY_COLUMN_MODE.TESTCASENAMES) {\n const caseNames = lines[0].split('|').map((name) => name.trim()).slice(1)\n\n const varNames = []\n const varValues = []\n for (let row = 1; row < lines.length; row++) {\n if (!lines[row] || lines[row].length === 0) continue\n const rawRow = lines[row].split('|').map((name) => name.trim())\n varNames.push(rawRow[0])\n varValues.push(rawRow.slice(1))\n }\n for (let caseIndex = 0; caseIndex < caseNames.length; caseIndex++) {\n const caseName = caseNames[caseIndex]\n\n const values = varNames.reduce((agg, varName, varIndex) => {\n agg[varName] = varValues[varIndex][caseIndex] || null\n return agg\n }, {})\n const scriptingMemory = { header: { name: caseName }, values }\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}\n","const util = require('util')\nconst debug = require('debug')('botium-core-ScriptingMemory')\nconst randomize = require('randomatic')\nconst { v1: uuidv1 } = require('uuid')\nconst moment = require('moment')\nconst { NodeVM } = require('vm2')\nconst _ = require('lodash')\nconst path = require('path')\nconst jp = require('jsonpath')\n\nconst Capabilities = require('../Capabilities')\nconst { quoteRegexpString, toString } = require('./helper')\nconst { BotiumError } = require('./BotiumError')\n\n// If they got parameter, then it will be a string always.\n// the receiver can decide what to do with it,\n// convert to int,\n// split by ',' for multiple params,\n// or something else\nconst SCRIPTING_FUNCTIONS_RAW = {\n $now: () => {\n return new Date().toLocaleString()\n },\n $now_EN: () => {\n return new Date().toLocaleString('en-EN')\n },\n $now_DE: () => {\n return moment().format('DD.MM.YYYY, HH:mm:ss')\n },\n $now_ISO: () => {\n return new Date().toISOString()\n },\n\n $date: (pattern) => {\n if (pattern) {\n return moment().format(pattern)\n }\n return new Date().toLocaleDateString()\n },\n $date_EN: () => {\n return new Date().toLocaleDateString('en-EN')\n },\n $date_DE: () => {\n return moment().format('YYYY.MM.DD')\n },\n $date_ISO: () => {\n return moment().format('YYYY-MM-DD')\n },\n\n $time: () => {\n return new Date().toLocaleTimeString()\n },\n $time_EN: () => {\n return new Date().toLocaleTimeString('en-EN')\n },\n $time_DE: () => {\n return moment().format('HH:mm:ss')\n },\n $time_ISO: () => {\n return moment().format('HH:mm:ss')\n },\n $time_HH_MM: () => {\n return moment().format('HH:mm')\n },\n $time_HH: () => {\n return moment().format('HH')\n },\n $time_H_A: () => {\n return moment().format('h A')\n },\n\n $timestamp: () => {\n return Date.now()\n },\n\n $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 $func: {\n handler: (caps, code) => {\n if (code == null) {\n throw Error('func function used without args!')\n }\n try {\n const vm = new NodeVM({\n eval: false,\n require: false,\n env: caps[Capabilities.SECURITY_ALLOW_UNSAFE] ? process.env : {},\n sandbox: {\n caps,\n moment\n }\n })\n return vm.run(`module.exports = (${code})`)\n } catch (err) {\n throw Error(`func function execution failed - ${err}`)\n }\n },\n numberOfArguments: 1\n }\n}\n\nconst SCRIPTING_FUNCTIONS = _.mapValues(SCRIPTING_FUNCTIONS_RAW, (funcOrStruct, name) => {\n const func = funcOrStruct.handler || funcOrStruct\n const numberOfArguments = funcOrStruct.handler ? funcOrStruct.numberOfArguments || 0 : funcOrStruct.length\n\n return {\n handler: (caps, ...rest) => {\n if (!caps[Capabilities.SECURITY_ALLOW_UNSAFE] && funcOrStruct.unsafe) {\n throw new BotiumError(\n `Security Error. Using unsafe scripting memory function ${name} is not allowed`,\n {\n type: 'security',\n subtype: 'allow unsafe',\n source: path.basename(__filename),\n cause: {\n SECURITY_ALLOW_UNSAFE: caps[Capabilities.SECURITY_ALLOW_UNSAFE],\n functionName: name\n }\n }\n )\n }\n if (funcOrStruct.handler) {\n return func(caps, ...rest)\n } else {\n return func(...rest)\n }\n },\n numberOfArguments\n }\n})\nconst RESERVED_WORDS = Object.keys(SCRIPTING_FUNCTIONS)\n\nconst apply = (container, scriptingMemory, str, mockMsg) => {\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MEMORY]) {\n str = _apply(scriptingMemory, str, container.caps, mockMsg)\n }\n return str\n}\n\nconst applyToArgs = (args, scriptingMemory, caps, mockMsg) => {\n return (args || []).map(arg => {\n return _apply(scriptingMemory, arg, caps, mockMsg)\n })\n}\n\n// we have two replace longer variable first. if there is $year, and $years, $years should not be found by $year\nconst _longestFirst = (a, b) => b.length - a.length\n\nconst _apply = (scriptingMemory, str, caps, mockMsg) => {\n if (str) {\n scriptingMemory = scriptingMemory || {}\n str = toString(str)\n\n // merge all keys: longer is stronger, type does not matter\n // Not clean: what if a variable references other variable/function?\n const allKeys = Object.keys(SCRIPTING_FUNCTIONS).concat(Object.keys(scriptingMemory)).sort(_longestFirst)\n for (const key of allKeys) {\n // scripting memory is stronger\n if (_.has(scriptingMemory, key)) {\n const keyRegexp = new RegExp(`\\\\${key}`, 'g')\n str = str.replace(keyRegexp, scriptingMemory[key])\n } else {\n const regex = `\\\\${key}(\\\\(.+?(?<!\\\\\\\\)\\\\))?`\n const matches = str.match(new RegExp(regex, 'g')) || []\n for (const match of matches) {\n if (match.indexOf('(') > 0) {\n const arg = match.substring(match.indexOf('(') + 1, match.lastIndexOf(')')).replace(/\\\\\\)/g, ')')\n 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 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 try {\n let lastMeConvoStep = null\n let botMsg = null\n let waitForBotSays = true\n let skipTranscriptStep = false\n for (let i = 0; i < this.conversation.length; i++) {\n const convoStep = this.conversation[i]\n const currentStepIndex = i\n 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.SIMULATE_WRITING_SPEED && meMsg.messageText && meMsg.messageText.length) {\n setTimeout(() => resolve(), container.caps.SIMULATE_WRITING_SPEED * meMsg.messageText.length)\n } else {\n resolve()\n }\n })\n lastMeConvoStep = convoStep\n transcriptStep.botBegin = new Date()\n if (!_.isNull(meMsg.messageText) || meMsg.sourceData || (meMsg.userInputs && meMsg.userInputs.length) || (meMsg.logicHooks && meMsg.logicHooks.length)) {\n try {\n Object.assign(meMsg, { header: this.header, conversation: this.conversation, currentStepIndex, scriptingMemory })\n await container.UserSays(meMsg)\n } finally {\n delete meMsg.header\n delete meMsg.conversation\n delete meMsg.scriptingMemory\n }\n\n transcriptStep.botEnd = new Date()\n await this.scriptingEvents.onMeEnd({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep })\n continue\n } else {\n debug(`${this.header.name}/${convoStep.stepTag}: message not found in #me section, message not sent to container ${util.inspect(convoStep)}`)\n transcriptStep.botEnd = new Date()\n await this.scriptingEvents.onMeEnd({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep })\n continue\n }\n } catch (err) {\n transcriptStep.botEnd = new Date()\n\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: error sending to bot - ${err.message || err}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr)\n } catch (failErr) {\n }\n throw failErr\n }\n } else if (convoStep.sender === 'bot') {\n const previousWaitForBotSays = waitForBotSays\n if (waitForBotSays) {\n botMsg = null\n } else {\n waitForBotSays = true\n }\n\n try {\n debug(`${this.header.name} wait for bot ${convoStep.channel || ''}`)\n await this.scriptingEvents.onBotStart({ convo: this, convoStep, container, scriptingMemory, transcript, transcriptStep })\n transcriptStep.botBegin = new Date()\n if (!botMsg) {\n botMsg = await container.WaitBotSays(convoStep.channel)\n }\n transcriptStep.botEnd = new Date()\n transcriptStep.actual = new BotiumMockMessage(botMsg)\n\n const coreMsg = _.omit(removeBuffers(botMsg), ['sourceData'])\n debug(`${this.header.name}: bot says (cleaned by binary and base64 data and sourceData) ${JSON.stringify(coreMsg, null, 2)}`)\n } catch (err) {\n transcriptStep.botEnd = new Date()\n\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: error waiting for bot - ${err.message}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n throw failErr\n }\n\n try {\n const prepared = await this.scriptingEvents.onBotPrepare({ convo: this, convoStep, container, scriptingMemory, botMsg, transcript, transcriptStep })\n if (prepared) {\n transcriptStep.actual = new BotiumMockMessage(botMsg)\n\n const coreMsg = _.omit(removeBuffers(botMsg), ['sourceData'])\n debug(`${this.header.name}: onBotPrepare (cleaned by binary and base64 data and sourceData) ${JSON.stringify(coreMsg, null, 2)}`)\n }\n } catch (err) {\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: onBotPrepare error - ${err.message || err}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n throw failErr\n }\n\n if (convoStep.conditional) {\n const nextConvoStep = this.conversation[i + 1]\n\n if (!previousWaitForBotSays) {\n skipTranscriptStep = true\n }\n waitForBotSays = false\n if (!nextConvoStep || nextConvoStep.sender !== 'bot' || !nextConvoStep.logicHooks || !nextConvoStep.logicHooks.some(lh => lh.name.toUpperCase().startsWith('CONDITIONAL_STEP'))) {\n waitForBotSays = true\n } else {\n const conditionalLogicHook = convoStep.logicHooks.find(lh => lh.name.startsWith('CONDITIONAL_STEP'))\n const nextConditionalLogicHook = nextConvoStep.logicHooks.find(lh => lh.name.startsWith('CONDITIONAL_STEP'))\n waitForBotSays = conditionalLogicHook.args[1] !== nextConditionalLogicHook.args[1]\n }\n\n if (convoStep.conditional.skip) {\n continue\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 if (convoStep.optional && nextConvoStep && nextConvoStep.sender === 'bot') {\n waitForBotSays = false\n skipTranscriptStep = true\n return true\n }\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n assertErrors.push(err)\n return false\n } else {\n throw err\n }\n }\n const assertErrors = []\n const scriptingMemoryUpdate = {}\n if (convoStep.messageText) {\n const response = this._checkNormalizeText(container, botMsg.messageText)\n const messageText = this._checkNormalizeText(container, convoStep.messageText)\n ScriptingMemory.fill(container, scriptingMemoryUpdate, response, messageText, this.scriptingEvents)\n const tomatch = this._resolveUtterancesToMatch(container, Object.assign({}, scriptingMemoryUpdate, scriptingMemory), messageText, botMsg)\n if (convoStep.not) {\n try {\n this.scriptingEvents.assertBotNotResponse(response, tomatch, `${this.header.name}/${convoStep.stepTag}`, lastMeConvoStep)\n } catch (err) {\n if (isErrorHandledWithOptionConvoStep(err)) {\n continue\n }\n }\n } else {\n try {\n this.scriptingEvents.assertBotResponse(response, tomatch, `${this.header.name}/${convoStep.stepTag}`, lastMeConvoStep)\n } catch (err) {\n if (isErrorHandledWithOptionConvoStep(err)) {\n continue\n }\n }\n }\n } else if (convoStep.sourceData) {\n try {\n this._compareObject(container, scriptingMemory, convoStep, botMsg.sourceData, convoStep.sourceData, botMsg)\n } catch (err) {\n if (isErrorHandledWithOptionConvoStep(err)) {\n continue\n }\n }\n }\n Object.assign(scriptingMemory, scriptingMemoryUpdate)\n try {\n await this.scriptingEvents.assertConvoStep({ convo: this, convoStep, container, scriptingMemory, botMsg, transcript, transcriptStep })\n await this.scriptingEvents.onBotEnd({ convo: this, convoStep, container, scriptingMemory, botMsg, transcript, transcriptStep })\n } catch (err) {\n const nextConvoStep = this.conversation[i + 1]\n if (convoStep.optional && nextConvoStep && nextConvoStep.sender === 'bot') {\n waitForBotSays = false\n skipTranscriptStep = true\n continue\n }\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: assertion error - ${err.message || err}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS] && err instanceof BotiumError) {\n assertErrors.push(err)\n } else {\n throw failErr\n }\n }\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n if (assertErrors.length > 0) {\n throw botiumErrorFromList(assertErrors, {})\n }\n } else {\n if (!transcriptStep.stepEnd) {\n continue\n }\n }\n } else {\n const failErr = new BotiumError(`${this.header.name}/${convoStep.stepTag}: invalid sender - ${util.inspect(convoStep.sender)}`)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr)\n } catch (failErr) {\n }\n throw failErr\n }\n } catch (err) {\n if (lastMeConvoStep) {\n if (err instanceof BotiumError && err.context) {\n err.context.input = new ConvoStep(lastMeConvoStep)\n err.context.transcript = [...transcriptSteps, { ...transcriptStep }]\n } else {\n err.input = new ConvoStep(lastMeConvoStep)\n err.transcript = [...transcriptSteps, { ...transcriptStep }]\n }\n }\n transcriptStep.err = err\n if (err instanceof BotiumError && container.caps[Capabilities.SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS]) {\n if (!err.isAsserterError()) {\n throw err\n }\n } else {\n throw err\n }\n } finally {\n if (convoStep.sender !== 'begin' && convoStep.sender !== 'end' && !skipTranscriptStep) {\n transcriptStep.scriptingMemory = Object.assign({}, scriptingMemory)\n transcriptStep.stepEnd = new Date()\n transcriptSteps.push(transcriptStep)\n }\n }\n }\n } catch (err) {\n transcript.err = err\n } finally {\n transcript.steps = transcriptSteps.filter(s => s)\n transcript.scriptingMemory = scriptingMemory\n transcript.convoEnd = new Date()\n if (container.caps[Capabilities.SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS]) {\n const transcriptStepErrs = transcript.steps.filter(s => s.err).map(s => s.err)\n if (transcriptStepErrs && transcriptStepErrs.length > 0) {\n transcript.err = botiumErrorFromList([...transcriptStepErrs.filter(err => err !== transcript.err), transcript.err].filter(e => e), {})\n }\n }\n }\n }\n\n _compareObject (container, scriptingMemory, convoStep, result, expected, botMsg) {\n if (expected === null || expected === undefined) return\n\n if (_.isArray(expected)) {\n if (!_.isArray(result)) {\n throw new BotiumError(`${this.header.name}/${convoStep.stepTag}: bot response expected array, got \"${result}\"`)\n }\n if (expected.length !== result.length) {\n throw new BotiumError(`${this.header.name}/${convoStep.stepTag}: bot response expected array length ${expected.length}, got ${result.length}`)\n }\n for (let i = 0; i < expected.length; i++) {\n this._compareObject(container, scriptingMemory, convoStep, result[i], expected[i])\n }\n } else if (_.isObject(expected)) {\n _.forOwn(expected, (value, key) => {\n if (Object.prototype.hasOwnProperty.call(result, key)) {\n this._compareObject(container, scriptingMemory, convoStep, result[key], expected[key])\n } else {\n throw new BotiumError(`${this.header.name}/${convoStep.stepTag}: bot response \"${result}\" missing expected property: ${key}`)\n }\n })\n } else {\n ScriptingMemory.fill(container, scriptingMemory, result, expected, this.scriptingEvents)\n const response = this._checkNormalizeText(container, result)\n const tomatch = this._resolveUtterancesToMatch(container, scriptingMemory, expected, botMsg)\n this.scriptingEvents.assertBotResponse(response, tomatch, `${this.header.name}/${convoStep.stepTag}`)\n }\n }\n\n GetScriptingMemoryAllVariables (container) {\n const 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.SCRIPTING_FORCE_BOT_CONSUMED) {\n const queueLength = container._QueueLength()\n if (queueLength === 1) {\n throw new Error('There is an unread bot reply in queue')\n } else if (queueLength > 1) {\n throw new Error(`There are still ${queueLength} unread bot replies in queue`)\n }\n }\n }\n\n _resolveUtterancesToMatch (container, scriptingMemory, utterance, botMsg) {\n const utterances = this.scriptingEvents.resolveUtterance({ utterance })\n const normalizedUtterances = utterances.map(str => this._checkNormalizeText(container, str))\n const tomatch = normalizedUtterances.map(str => ScriptingMemory.apply(container, scriptingMemory, str, botMsg))\n return tomatch\n }\n\n _checkNormalizeText (container, str) {\n return normalizeText(str, !!container.caps[Capabilities.SCRIPTING_NORMALIZE_TEXT])\n }\n\n expandPartialConvos () {\n const _getIncludeLogicHookNames = (convoStep) => {\n if (!convoStep.logicHooks) {\n return []\n }\n\n const result = []\n convoStep.logicHooks.forEach((logicHook) => {\n if (logicHook.name === LOGIC_HOOK_INCLUDE) {\n if (logicHook.args.length !== 1) {\n throw Error('Wrong argument for include logic hook!')\n }\n result.push(logicHook)\n }\n })\n\n return result.map((hook) => hook.args[0])\n }\n\n const partialConvos = this.context.GetPartialConvos()\n\n const _getEffectiveConversationRecursive = (conversation, parentPConvos = [], result = [], ignoreBeginEnd = true) => {\n conversation.forEach((convoStep) => {\n let includeLogicHooks = []\n if (convoStep.sender === 'include') {\n if (convoStep.channel) {\n includeLogicHooks.push(convoStep.channel)\n }\n if (convoStep.messageText) {\n includeLogicHooks = includeLogicHooks.concat(splitStringInNonEmptyLines(convoStep.messageText))\n }\n } else {\n includeLogicHooks = _getIncludeLogicHookNames(convoStep)\n if (includeLogicHooks.length === 0 || convoStep.hasInteraction()) {\n if (!ignoreBeginEnd || (convoStep.sender !== 'begin' && convoStep.sender !== 'end')) {\n // dont put convo name for ConvoSteps on the root.\n const steptagPath = parentPConvos.length === 0 ? '' : parentPConvos.join('/') + '/'\n result.push(Object.assign(new ConvoStep(), convoStep, { stepTag: `${steptagPath}${convoStep.stepTag}` }))\n }\n }\n }\n\n includeLogicHooks.forEach((includeLogicHook) => {\n const alreadyThereAt = parentPConvos.indexOf(includeLogicHook)\n if (alreadyThereAt >= 0) {\n throw new BotiumError(`Partial convos are included circular. \"${includeLogicHook}\" is referenced by \"/${parentPConvos.slice(0, alreadyThereAt).join('/')}\" and by \"/${parentPConvos.join('/')}\" `)\n }\n if (!partialConvos || Object.keys(partialConvos).length === 0) {\n throw new BotiumError(`Cant find partial convo with name ${includeLogicHook} (There are no partial convos)`)\n }\n const partialConvo = partialConvos[includeLogicHook]\n if (!partialConvo) {\n throw new BotiumError(`Cant find partial convo with name ${includeLogicHook} (available partial convos: ${Object.keys(partialConvos).join(',')})`)\n }\n _getEffectiveConversationRecursive(partialConvo.conversation, [...parentPConvos, includeLogicHook], result, true)\n debug(`Partial convo ${includeLogicHook} included`)\n })\n })\n\n return result\n }\n\n this.conversation = _getEffectiveConversationRecursive(this.conversation, [], [], false)\n }\n}\n\nmodule.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) {\n if (!err) 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')\n\nconst { toString, quoteRegexpString, calculateWer } = require('./helper')\n\nconst _normalize = (botresponse) => {\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) => {\n if (_.isUndefined(botresponse)) return false\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n const regexp = ignoreCase ? (new RegExp(utterance, 'i')) : (new RegExp(utterance, ''))\n return regexp.test(botresponse)\n}\n\nconst wildcard = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) {\n if (utterance.trim() === '*') return true\n else return false\n }\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n const numWildcards = utterance.split('*').length - 1\n if (numWildcards > 10) {\n throw new Error('Maximum number of 10 wildcards supported.')\n }\n const utteranceRe = quoteRegexpString(utterance).replace(/\\\\\\*/g, '(.*)')\n\n const regexp = ignoreCase ? (new RegExp(utteranceRe, 'i')) : (new RegExp(utteranceRe, ''))\n return regexp.test(botresponse)\n}\n\nconst wildcardExact = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) {\n if (utterance.trim() === '*') return true\n else return false\n }\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n const numWildcards = utterance.split('*').length - 1\n if (numWildcards > 10) {\n throw new Error('Maximum number of 10 wildcards supported.')\n }\n const utteranceRe = '^' + quoteRegexpString(utterance).replace(/\\\\\\*/g, '(.*)') + '$'\n\n const regexp = ignoreCase ? (new RegExp(utteranceRe, 'i')) : (new RegExp(utteranceRe, ''))\n return regexp.test(botresponse)\n}\n\nconst include = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) return false\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n if (ignoreCase) {\n utterance = utterance.toLowerCase()\n botresponse = botresponse.toLowerCase()\n }\n return botresponse.indexOf(utterance) >= 0\n}\n\nconst equals = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) return false\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n if (ignoreCase) {\n utterance = utterance.toLowerCase()\n botresponse = botresponse.toLowerCase()\n }\n return botresponse === utterance\n}\n\nconst wer = () => (botresponse, utterance, args) => {\n botresponse = _normalize(botresponse || '')\n utterance = toString(utterance || '')\n\n const threshold = ([',', '.'].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 { NodeVM } = require('vm2')\nconst esprima = require('esprima')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-core-HookUtils')\n\nconst Capabilities = require('../Capabilities')\nconst { BotiumError } = require('../scripting/BotiumError')\n\nconst executeHook = async (caps, hook, args) => {\n return executeHookSync(caps, hook, args)\n}\n\nconst executeHookSync = (caps, hook, args) => {\n if (!hook) {\n return\n }\n\n if (_.isFunction(hook)) {\n try {\n return hook(args)\n } catch (err) {\n throw new Error(`Calling Hook function failed: ${err.message}`)\n }\n }\n\n if (_.isString(hook)) {\n try {\n const vm = new NodeVM({\n eval: false,\n require: false,\n sandbox: args\n })\n const r = vm.run(hook)\n if (_.isFunction(r)) {\n return r(args)\n } else {\n return r\n }\n } catch (err) {\n throw new Error(`Calling Hook Javascript code failed: ${err.message}`)\n }\n }\n throw new Error(`Unknown hook ${typeof hook}`)\n}\n\nconst getHook = (caps, data) => {\n if (!data) {\n return null\n }\n const allowUnsafe = !!caps[Capabilities.SECURITY_ALLOW_UNSAFE]\n\n if (_.isFunction(data)) {\n debug('found hook, type: function definition')\n return data\n }\n\n if (_.isString(data)) {\n let resultWithRequire\n let tryLoadFile = path.resolve(process.cwd(), data)\n if (fs.existsSync(tryLoadFile)) {\n try {\n resultWithRequire = require(tryLoadFile)\n } catch (err) {\n }\n } else {\n tryLoadFile = data\n try {\n resultWithRequire = require(data)\n } catch (err) {\n }\n }\n\n if (resultWithRequire) {\n if (!allowUnsafe) {\n throw new BotiumError(\n 'Security Error. Using unsafe custom hook with require is not allowed',\n {\n type: 'security',\n subtype: 'allow unsafe',\n source: path.basename(__filename),\n cause: {\n SECURITY_ALLOW_UNSAFE: caps[Capabilities.SECURITY_ALLOW_UNSAFE],\n hookData: data\n }\n }\n )\n }\n\n if (_.isFunction(resultWithRequire)) {\n debug(`found hook, type: require, in ${tryLoadFile}`)\n return resultWithRequire\n } else {\n throw new Error(`Cant load hook ${tryLoadFile} because it is not a function`)\n }\n }\n\n try {\n esprima.parseScript(data)\n } catch (err) {\n throw new Error(`Cant load hook, syntax is not valid - ${util.inspect(err)}`)\n }\n\n debug('Found hook, type: JavaScript as String')\n return data\n }\n\n throw new Error(`Not valid hook ${util.inspect(data)}`)\n}\n\nmodule.exports = {\n getHook,\n executeHook,\n executeHookSync\n}\n","const _ = require('lodash')\nconst { executeHookSync, getHook } = require('../../helpers/HookUtils')\n\nmodule.exports.precompile = (caps, scriptBuffer, options, filename) => {\n if (!(options.script || options.SCRIPT)) {\n throw new Error('Script is not defined')\n }\n\n if (_.isString(scriptBuffer)) {\n try {\n scriptBuffer = JSON.parse(scriptBuffer)\n } catch (err) {\n }\n }\n\n const hook = getHook(caps, options.SCRIPT)\n const response = executeHookSync(caps, hook, { scriptData: scriptBuffer, filename })\n\n if (!response) {\n return\n }\n\n return response.scriptBuffer ? response : { scriptBuffer: response }\n}\n","const MarkdownIt = require('markdown-it')\nconst debug = require('debug')('botium-core-PrecompilerMarkdownRasa')\nconst util = require('util')\nconst _ = require('lodash')\n\nconst htmlCommentRegexp = /(<!--.*?-->)/g\n\nmodule.exports.precompile = (caps, scriptBuffer, options, filename) => {\n if (!filename.endsWith('.md')) {\n return\n }\n\n const md = new MarkdownIt()\n const parsed = md.parse(scriptBuffer, {})\n\n const _extractFromRasaIntent = (content) => {\n return content.replace(htmlCommentRegexp, '').substring('intent:'.length).trim()\n }\n\n const _extractFromRasaSentence = (rasaSentence) => {\n rasaSentence = rasaSentence.replace(htmlCommentRegexp, '')\n\n const regex = /\\[([^\\]]+)\\]\\(([a-zA-Z][_:\\-a-zA-Z0-9]+)\\)/\n let matched = rasaSentence.match(regex)\n while (matched) {\n const value = matched[1]\n const splitted = matched[2].split(':')\n // const [name] = splitted\n if (splitted.length > 1) {\n debug(`Entity synonim ${splitted[1]} ignored in sentence ${rasaSentence} `)\n }\n rasaSentence = rasaSentence.replace(matched[0], value)\n matched = rasaSentence.match(regex)\n }\n return { meText: rasaSentence.trim() }\n }\n\n const utterances = {}\n\n let meTexts = []\n let intent = null\n // state got every possible value, but just few are used. Could be simplified.\n let state = 'START'\n let processLeafs = null\n for (const entry of parsed) {\n if (entry.type === 'heading_open') {\n state = 'heading_open'\n } else if (entry.type === 'inline' && entry.content.startsWith('intent:')) {\n intent = _extractFromRasaIntent(entry.content)\n processLeafs = true\n state = 'inline_intent'\n } else if (entry.type === 'inline' && entry.content.startsWith('synonym:')) {\n processLeafs = false\n debug(`Synonym \"${entry.content}\" ignored`)\n state = 'inline_synonym'\n } else if (entry.type === 'inline' && entry.content.startsWith('regex:')) {\n processLeafs = false\n debug(`Regex \"${entry.content}\" ignored`)\n state = 'inline_regex'\n } else if (entry.type === 'inline' && entry.content.startsWith('lookup:')) {\n processLeafs = false\n debug(`Lookup \"${entry.content}\" ignored`)\n state = 'inline_lookup'\n } else if (entry.type === 'heading_close') {\n state = 'heading_close'\n } else if (entry.type === 'bullet_list_open') {\n state = 'bullet_list_open'\n } else if (entry.type === 'list_item_open') {\n state = 'list_item_open'\n } else if (entry.type === 'paragraph_open') {\n state = 'paragraph_open'\n } else if (entry.type === 'inline' && state === 'paragraph_open') {\n if (processLeafs) {\n const { meText } = _extractFromRasaSentence(entry.content)\n meTexts.push(meText)\n }\n state = 'inline_leaf'\n } else if (entry.type === 'paragraph_close') {\n state = 'paragraph_close'\n } else if (entry.type === 'list_item_close') {\n state = 'list_item_close'\n } else if (entry.type === 'bullet_list_close') {\n state = 'bullet_list_close'\n if (meTexts.length) {\n if (!intent) {\n debug(`Intent not found, dropping me texts ${JSON.stringify(meTexts)}`)\n } else {\n meTexts = _.uniq(meTexts)\n utterances[intent] = meTexts\n }\n }\n intent = null\n meTexts = []\n } else {\n debug(`Markdown entry ignored ${util.inspect(entry)}`)\n }\n }\n\n return {\n scriptBuffer: { utterances },\n filename: `${filename}.json`\n }\n}\n","const _ = require('lodash')\nconst debug = require('debug')('botium-core-CapabilitiesUtils')\nconst { toJsonWeak } = require('./Utils')\n\nmodule.exports.getAllCapValues = (capNamePrefix, caps) => {\n const allCapValues = []\n const jsonPathCaps = _.pickBy(caps, (v, k) => k.startsWith(capNamePrefix))\n _(jsonPathCaps).keys().sort().each((key) => {\n const val = _.isFunction(caps[key]) ? (caps[key])() : caps[key]\n\n if (_.isArray(val)) {\n val.forEach(p => {\n allCapValues.push(`${p}`.trim())\n })\n } else if (_.isString(val)) {\n val.split(',').forEach(p => {\n allCapValues.push(p.trim())\n })\n }\n })\n return allCapValues\n}\n\n/**\n * Extract repetitive capabilities into list.\n * Key is checked, but the value is free\n * @param caps\n * @param prefix\n * @returns {Array}\n */\nmodule.exports.flatCababilities = (caps, prefix) => {\n const result = []\n let capNames = []\n for (const name of Object.keys(caps)) {\n if (name.startsWith(prefix)) {\n capNames.push(name)\n }\n }\n capNames = capNames.sort()\n\n if (capNames.length === 1 && capNames[0] === prefix) {\n const val = toJsonWeak(caps[capNames[0]])\n if (_.isArray(val)) {\n val.forEach(entry => result.push(entry))\n } else {\n result.push(val)\n }\n } else {\n const regexpPrefixAndGroup = new RegExp(`^${prefix}\\\\.\\\\d+`)\n let currentGroup\n let currentObject = {}\n for (const capName of capNames) {\n if (capName === prefix) {\n throw new Error(`Incorrect structure. Global definition must be unique. See Capability ${capName}`)\n }\n if (capName.charAt(prefix.length) !== '.') {\n debug(`From flatten result skipped capability ${capName} using prefix ${prefix}`)\n continue\n }\n let capPrefixAndGroup = capName.match(regexpPrefixAndGroup)\n capPrefixAndGroup = (capPrefixAndGroup && capPrefixAndGroup.length) ? capPrefixAndGroup[0] : prefix\n\n if (capPrefixAndGroup === capName) {\n const val = toJsonWeak(caps[capName])\n result.push(val)\n } else {\n if (capPrefixAndGroup && capName.charAt(capPrefixAndGroup.length) !== '.') {\n throw new Error(`Capability name invalid. No valid grouping found in capability ${capName} using prefix ${prefix}`)\n }\n\n const key = capName.substr(capPrefixAndGroup.length + 1)\n\n if (!key.length) {\n throw new Error(`Capability name invalid. No key after grouping in capability ${capName} using prefix ${prefix}`)\n }\n\n if (currentGroup && currentGroup !== capPrefixAndGroup) {\n result.push(currentObject)\n currentObject = {}\n }\n\n currentObject[key] = toJsonWeak(caps[capName])\n currentGroup = capPrefixAndGroup\n }\n }\n if (currentObject && currentGroup) {\n result.push(currentObject)\n currentObject = null\n currentGroup = null\n }\n }\n\n return result\n}\n","const util = require('util')\nconst debug = require('debug')('botium-core-Precompilers')\n\nconst { isJsonObject } = require('../../helpers/Utils')\n\nconst PROVIDERS = {\n JSON_TO_JSON_JSONPATH: require('./JsonToJson'),\n SCRIPT: require('./Script'),\n MARKDOWN_RASA: require('./MarkdownRasa')\n}\nconst CAPABILITY_PREFIX = 'PRECOMPILERS'\nconst { flatCababilities } = require('../../helpers/CapabilitiesUtils')\n\nmodule.exports.execute = (scriptBuffer, options) => {\n const { caps, filename } = options\n const ownCaps = flatCababilities(caps, CAPABILITY_PREFIX)\n if (Buffer.isBuffer(scriptBuffer)) {\n scriptBuffer = scriptBuffer.toString()\n }\n\n for (const capSuffixAndVal of ownCaps) {\n if (!(capSuffixAndVal.NAME)) {\n debug(`Precompiler name not defined in ${util.inspect(capSuffixAndVal)}`)\n return null\n }\n const provider = PROVIDERS[capSuffixAndVal.NAME]\n\n if (!provider) {\n throw new Error(`Precompiler ${util.inspect(capSuffixAndVal.NAME)} not found using caps ${util.inspect(capSuffixAndVal)}`)\n }\n\n const result = provider.precompile(caps, scriptBuffer, capSuffixAndVal, filename)\n if (result) {\n if (!result.scriptBuffer) {\n return null\n }\n if (isJsonObject(result.scriptBuffer, false)) {\n result.scriptBuffer = JSON.stringify(result.scriptBuffer)\n }\n\n result.precompiler = capSuffixAndVal.NAME\n // dont let chain the precompilers. It looks more robust\n return result\n }\n }\n}\n","const _ = require('lodash')\n\nmodule.exports = class CompilerBase {\n constructor ({ AddConvos, AddPartialConvos, AddUtterances, AddScriptingMemories, GetPartialConvos, IsAsserterValid, IsLogicHookValid, IsUserInputValid, scriptingEvents }, caps = {}) {\n this.context = {\n AddConvos,\n AddPartialConvos,\n AddUtterances,\n AddScriptingMemories,\n GetPartialConvos,\n IsAsserterValid,\n IsLogicHookValid,\n IsUserInputValid,\n scriptingEvents\n }\n this.caps = caps\n }\n\n Validate () {\n }\n\n GetHeaders (scriptBuffer) {\n const convos = this.Compile(scriptBuffer)\n if (convos) {\n return convos.map((convo) => convo.header)\n } else {\n return []\n }\n }\n\n Compile (scriptBuffer, scriptType) {\n throw new Error('not implemented')\n }\n\n Decompile (convos) {\n throw new Error('not implemented')\n }\n\n _AssertCapabilityExists (cap) {\n if (!this.caps[cap]) {\n throw new Error(`Capability property ${cap} not set`)\n }\n }\n\n _GetOptionalCapability (cap, def = null) {\n if (_.isUndefined(this.caps[cap])) {\n return def\n }\n\n return this.caps[cap]\n }\n\n _GetCapabilitiesByPrefix (prefix) {\n const result = {}\n Object.keys(this.caps).forEach((key) => {\n if (key.startsWith(prefix)) {\n result[key] = this.caps[key]\n }\n })\n return result\n }\n}\n","const util = require('util')\nconst _ = require('lodash')\n\nmodule.exports = class Utterance {\n constructor (fromJson = {}) {\n this.name = fromJson.name\n this.sourceTag = fromJson.sourceTag\n this.utterances = []\n if (fromJson.utterances && _.isArray(fromJson.utterances)) {\n this.utterances = fromJson.utterances\n } else if (fromJson.utterances) {\n this.utterances.push(fromJson.utterances)\n }\n }\n\n toString () { return this.name + (this.sourceTag ? ` (${util.inspect(this.sourceTag)})` : '') + ': ' + this.utterances.join('|') }\n}\n","const util = require('util')\nconst XLSX = require('xlsx')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-core-CompilerXlsx')\n\nconst Capabilities = require('../Capabilities')\nconst { E_SCRIPTING_MEMORY_COLUMN_MODE } = require('../Enums')\nconst CompilerBase = require('./CompilerBase')\nconst Constants = require('./Constants')\nconst Utterance = require('./Utterance')\nconst { Convo } = require('./Convo')\nconst { linesToConvoStep, convoStepToLines, validateConvo } = require('./helper')\n\nmodule.exports = class CompilerXlsx extends CompilerBase {\n constructor (context, caps = {}) {\n super(context, caps)\n\n this.colnames = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']\n }\n\n _splitSheetnames (sheetnames) {\n if (sheetnames) return sheetnames.split(/\\s*[;,|]\\s*/)\n }\n\n _filterSheetnames (sheetnames, selectors) {\n const filteredSheetnames = sheetnames.filter(sheetname => !!selectors.find(selector => selector === '*' || sheetname === selector))\n debug(`_filterSheetnames(sheetnames: ${JSON.stringify(sheetnames)}, selectors: ${JSON.stringify(selectors)}, filteredSheetnames: ${JSON.stringify(filteredSheetnames)})`)\n return filteredSheetnames\n }\n\n Validate () {\n super.Validate()\n\n if (this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL] !== undefined) {\n if (_.isString(this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL]) && this.colnames.findIndex((c) => c === this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL]) < 0) {\n throw new Error(`SCRIPTING_XLSX_STARTCOL ${this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL]} invalid (A-Z)`)\n } else if (this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL] < 1 || this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL] > this.colnames.length) {\n throw new Error(`SCRIPTING_XLSX_STARTCOL ${this.caps[Capabilities.SCRIPTING_XLSX_STARTCOL]} invalid (1-${this.colnames.length})`)\n }\n }\n }\n\n Compile (scriptBuffer, scriptType = Constants.SCRIPTING_TYPE_CONVO) {\n const workbook = XLSX.read(scriptBuffer, { type: 'buffer' })\n if (!workbook) throw new Error('Workbook not readable')\n\n debug(`Loaded XLSX with Props: ${workbook.Props ? JSON.stringify(workbook.Props) : '<none>'}`)\n const eol = this.caps[Capabilities.SCRIPTING_XLSX_EOL_WRITE]\n const maxEmptyRowCount = 10\n\n let sheetnames = []\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO) {\n if (this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES]) {\n sheetnames = this._filterSheetnames(workbook.SheetNames, this._splitSheetnames(this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES]))\n } else {\n sheetnames = workbook.SheetNames.filter(s => (s.toLowerCase().indexOf('convo') >= 0 || s.toLowerCase().indexOf('dialog') >= 0) && s.toLowerCase().indexOf('partial') < 0) || []\n }\n } else if (scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n if (this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES_PCONVOS]) {\n sheetnames = this._filterSheetnames(workbook.SheetNames, this._splitSheetnames(this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES_PCONVOS]))\n } else {\n sheetnames = workbook.SheetNames.filter(s => s.toLowerCase().indexOf('partial') >= 0) || []\n }\n } else if (scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n if (this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES_UTTERANCES]) {\n sheetnames = this._filterSheetnames(workbook.SheetNames, this._splitSheetnames(this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES_UTTERANCES]))\n } else {\n sheetnames = workbook.SheetNames.filter(s => s.toLowerCase().indexOf('utter') >= 0) || []\n }\n } else if (scriptType === Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY) {\n if (this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES_SCRIPTING_MEMORY]) {\n sheetnames = this._filterSheetnames(workbook.SheetNames, this._splitSheetnames(this.caps[Capabilities.SCRIPTING_XLSX_SHEETNAMES_SCRIPTING_MEMORY]))\n } else {\n sheetnames = workbook.SheetNames.filter(s => s.toLowerCase().indexOf('memory') >= 0 || s.toLowerCase().indexOf('scripting') >= 0) || []\n }\n } else {\n throw Error(`Invalid script type ${scriptType}`)\n }\n\n debug(`sheet names for ${scriptType}: ${util.inspect(sheetnames)}`)\n\n const scriptResults = []\n\n sheetnames.forEach((sheetname) => {\n const sheet = workbook.Sheets[sheetname]\n if (!sheet) return\n\n let { rowindex, colindex, hasNameCol } = this._findOrigin(sheet, scriptType)\n debug(`evaluating sheet name for ${scriptType}: ${util.inspect(sheetname)}, rowindex ${rowindex}, colindex ${colindex}`)\n\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO || scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n const parseCell = (sender, content) => {\n if (!content) return { messageText: '' }\n\n if (!_.isString(content)) content = '' + content\n\n let eolSplit = null\n let lines = []\n if (content.indexOf('\\n') >= 0) {\n eolSplit = '\\n'\n } else if (content.indexOf('\\r') >= 0) {\n eolSplit = '\\r'\n }\n\n if (eolSplit) {\n lines = content.split(eolSplit).map(l => l.trim()).filter(l => l)\n } else {\n lines = [content.trim()]\n }\n\n return linesToConvoStep(lines, sender, this.context, eol)\n }\n\n const _extractRow = (rowindex) => {\n const cell1 = this.colnames[colindex] + rowindex\n const cell1Value = (sheet[cell1] && sheet[cell1].v) || null\n const cell2 = this.colnames[colindex + 1] + rowindex\n const cell2Value = (sheet[cell2] && sheet[cell2].v) || null\n const cell3 = this.colnames[colindex + 2] + rowindex\n const cell3Value = (sheet[cell3] && sheet[cell3].v) || null\n\n if (hasNameCol) {\n return {\n nameCell: cell1,\n nameCellValue: cell1Value,\n meCell: cell2,\n meCellValue: cell2Value,\n botCell: cell3,\n botCellValue: cell3Value\n }\n } else {\n return {\n nameCell: null,\n nameCellValue: null,\n meCell: cell1,\n meCellValue: cell1Value,\n botCell: cell2,\n botCellValue: cell2Value\n }\n }\n }\n\n let questionAnswerMode = this._GetOptionalCapability(Capabilities.SCRIPTING_XLSX_MODE)\n if (questionAnswerMode !== null) {\n questionAnswerMode = questionAnswerMode === 'QUESTION_ANSWER'\n debug(`questionAnswerMode to ${questionAnswerMode} (capability)`)\n } else {\n let emptyRowCount = 0\n let index = 0\n const foundQARows = []\n const foundConvoRows = []\n\n while (emptyRowCount <= maxEmptyRowCount) {\n const { meCell, meCellValue, botCell, botCellValue } = _extractRow(rowindex + index)\n if (!meCellValue && !botCellValue) {\n emptyRowCount++\n } else if (meCellValue && botCellValue) {\n foundQARows.push(meCell)\n } else if (meCellValue && !botCellValue) {\n foundConvoRows.push(meCell)\n } else if (!meCellValue && botCellValue) {\n foundConvoRows.push(botCell)\n }\n index++\n }\n if (foundQARows.length > 0 && foundConvoRows.length > 0) {\n throw new Error(`Excel sheet \"${sheetname}\" invalid. Detected intermixed Q&A sections (for instance ${foundQARows.slice(0, 3).join(',')}) and convo sections (for instance ${foundConvoRows.slice(0, 3).join(',')})`)\n } else if (foundQARows.length > 0 && foundConvoRows.length === 0) {\n questionAnswerMode = true\n debug('questionAnswerMode to true (question-answer row found)')\n } else {\n questionAnswerMode = false\n debug('questionAnswerMode to false (no question-answer row found)')\n }\n }\n\n const convoResults = []\n let currentConvo = []\n let currentConvoName = null\n let emptyRowCount = 0\n let startrowindex = -1\n\n while (true) {\n const { nameCellValue, meCell, meCellValue, botCell, botCellValue } = _extractRow(rowindex)\n\n if (questionAnswerMode) {\n if (meCellValue || botCellValue) {\n currentConvo = []\n currentConvo.push(Object.assign(\n { sender: 'me', stepTag: 'Cell ' + meCell },\n parseCell('me', meCellValue)\n ))\n startrowindex = rowindex\n currentConvo.push(Object.assign(\n { sender: 'bot', stepTag: 'Cell ' + botCell },\n parseCell('bot', botCellValue)\n ))\n convoResults.push(new Convo(this.context, {\n header: {\n name: nameCellValue || null,\n sheetname,\n colindex,\n rowindex: startrowindex\n },\n conversation: currentConvo\n }))\n } else {\n emptyRowCount++\n }\n } else {\n if (currentConvo.length === 0) {\n currentConvoName = nameCellValue || null\n }\n if (meCellValue) {\n currentConvo.push(Object.assign(\n { sender: 'me', stepTag: 'Cell ' + meCell },\n parseCell('me', meCellValue)\n ))\n if (startrowindex < 0) startrowindex = rowindex\n emptyRowCount = 0\n } else if (botCellValue) {\n currentConvo.push(Object.assign(\n { sender: 'bot', stepTag: 'Cell ' + botCell },\n parseCell('bot', botCellValue)\n ))\n if (startrowindex < 0) startrowindex = rowindex\n emptyRowCount = 0\n } else {\n if (currentConvo.length > 0) {\n convoResults.push(new Convo(this.context, {\n header: {\n name: currentConvoName,\n sheetname,\n colindex,\n rowindex: startrowindex\n },\n conversation: currentConvo\n }))\n }\n currentConvo = []\n currentConvoName = null\n startrowindex = -1\n emptyRowCount++\n }\n }\n rowindex++\n\n if (emptyRowCount > maxEmptyRowCount) break\n }\n\n if (convoResults.length > 0) {\n const formatLength = Math.max(3, `${convoResults[convoResults.length - 1].header.rowindex}`.length)\n const formatBase = '0'.repeat(formatLength)\n const formatRowIndex = (rowindex) => (formatBase + `${rowindex}`).slice(-1 * formatLength)\n convoResults.forEach(convo => {\n if (!convo.header.name) {\n convo.header.name = `${convo.header.sheetname}-${this.colnames[convo.header.colindex]}${formatRowIndex(convo.header.rowindex)}`\n }\n // 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 } = require('./helper')\n\nmodule.exports = class CompilerTxt extends CompilerBase {\n constructor (context, caps = {}) {\n super(context, caps)\n\n this.eol = caps[Capabilities.SCRIPTING_TXT_EOL]\n }\n\n Validate () {\n super.Validate()\n this._AssertCapabilityExists(Capabilities.SCRIPTING_TXT_EOL)\n }\n\n GetHeaders (scriptBuffer) {\n let scriptData = scriptBuffer\n if (Buffer.isBuffer(scriptBuffer)) scriptData = scriptData.toString()\n\n const lines = scriptData.split(this.eol)\n\n const header = { }\n\n if (lines && !lines[0].startsWith('#')) {\n header.name = lines[0]\n }\n return new ConvoHeader(header)\n }\n\n Compile (scriptBuffer, scriptType = Constants.SCRIPTING_TYPE_CONVO) {\n let scriptData = scriptBuffer\n if (Buffer.isBuffer(scriptBuffer)) scriptData = scriptData.toString()\n\n const lines = _.map(scriptData.split(this.eol), (line) => line.trim())\n\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO) {\n return this._compileConvo(lines, false)\n } else if (scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n return this._compileConvo(lines, true)\n } else if (scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n return this._compileUtterances(lines)\n } else if (scriptType === Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY) {\n return this._compileScriptingMemory(lines)\n } else {\n throw Error(`Invalid script type ${scriptType}`)\n }\n }\n\n _compileConvo (lines, isPartial = false) {\n const convo = {\n header: {},\n conversation: []\n }\n\n let currentLineIndex = 0\n let currentLines = []\n let convoStepSender = null\n let convoStepChannel = null\n let convoStepLineIndex = null\n\n const parseMsg = (lines) => {\n lines = lines || []\n return linesToConvoStep(lines, convoStepSender, this.context, this.eol)\n }\n\n const pushPrev = () => {\n if (convoStepSender && currentLines) {\n const convoStep = {\n sender: convoStepSender,\n channel: convoStepChannel,\n stepTag: 'Line ' + convoStepLineIndex\n }\n Object.assign(convoStep, parseMsg(currentLines))\n convo.conversation.push(convoStep)\n } else if (!convoStepSender && currentLines) {\n convo.header.name = currentLines[0]\n if (currentLines.length > 1) {\n convo.header.description = currentLines.slice(1).join(this.eol)\n }\n }\n }\n\n const isValidTagLine = (line) => {\n if (!line || !line.startsWith('#')) return false\n const sender = line.substr(1).split(' ')[0]\n return validSenders.includes(sender)\n }\n\n lines.forEach((line) => {\n currentLineIndex++\n line = line.trim()\n if (isValidTagLine(line)) {\n pushPrev()\n\n convoStepSender = line.substr(1).trim()\n convoStepChannel = null\n convoStepLineIndex = currentLineIndex\n if (convoStepSender.indexOf(' ') > 0) {\n convoStepChannel = convoStepSender.substr(convoStepSender.indexOf(' ') + 1).trim()\n convoStepSender = convoStepSender.substr(0, convoStepSender.indexOf(' ')).trim()\n }\n currentLines = []\n } else {\n currentLines.push(line)\n }\n })\n pushPrev()\n\n const result = [new Convo(this.context, convo)]\n if (isPartial) {\n this.context.AddPartialConvos(result)\n } else {\n this.context.AddConvos(result)\n }\n return result\n }\n\n _compileUtterances (lines) {\n if (lines && lines.length > 0) {\n const result = [new Utterance({ name: lines[0], utterances: lines.length > 1 ? lines.slice(1) : [] })]\n this.context.AddUtterances(result)\n return result\n }\n }\n\n _compileScriptingMemory (lines) {\n if (lines && lines.length > 1) {\n const scriptingMemories = linesToScriptingMemories(lines, this.caps[Capabilities.SCRIPTING_MEMORY_COLUMN_MODE])\n if (scriptingMemories && scriptingMemories.length > 0) {\n this.context.AddScriptingMemories(scriptingMemories)\n }\n return scriptingMemories\n }\n }\n\n Decompile (convos) {\n if (convos.length > 1) {\n throw new Error('only one convo per script')\n }\n\n const convo = convos[0]\n\n const validationResult = validateConvo(convo)\n if (validationResult.errors.length > 0) {\n throw new Error(validationResult.errors.map(e => e.message).join(' - '))\n }\n\n let script = ''\n\n if (convo.header.name) {\n script += convo.header.name + this.eol\n }\n if (convo.header.description) {\n script += convo.header.description + this.eol\n }\n\n convo.conversation.forEach((step) => {\n script += this.eol\n\n script += '#' + step.sender\n if (step.channel && step.channel !== 'default') {\n script += ' ' + step.channel\n }\n script += this.eol\n\n const stepLines = convoStepToLines(step)\n if (stepLines && stepLines.length > 0) script += stepLines.join(this.eol) + this.eol\n })\n return script\n }\n}\n","const { parse } = require('csv-parse/sync')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-core-CompilerCsv')\n\nconst Capabilities = require('../Capabilities')\nconst CompilerBase = require('./CompilerBase')\nconst Constants = require('./Constants')\nconst { Convo } = require('./Convo')\nconst { linesToConvoStep } = require('./helper')\n\nconst DELIMITERS_CHECK = [',', ';', '|', '\\t']\nconst DEFAULT_DELIMITER = ','\n\nconst DEFAULT_QA_COLUMN_QUESTION = 0\nconst DEFAULT_QA_COLUMN_ANSWER = 1\n\nconst DEFAULT_MULTIROW_COLUMN_CONVERSATION = 0\nconst DEFAULT_MULTIROW_COLUMN_SENDER = 1\nconst DEFAULT_MULTIROW_COLUMN_TEXT = 2\n\nconst _findColIndex = (header, colName) => {\n if (_.isString(colName)) {\n const result = header.findIndex(h => h === colName)\n if (result >= 0) return result\n throw new Error(`Column name ${colName} not found.`)\n }\n if (_.isNumber(colName)) {\n return colName\n }\n throw new Error(`Column ${colName} not found.`)\n}\n\nmodule.exports = class CompilerCsv extends CompilerBase {\n constructor (context, caps = {}) {\n super(context, caps)\n }\n\n Validate () {\n this._AssertCapabilityExists(Capabilities.SCRIPTING_CSV_QUOTE)\n this._AssertCapabilityExists(Capabilities.SCRIPTING_CSV_ESCAPE)\n\n return super.Validate()\n }\n\n Compile (scriptBuffer, scriptType = Constants.SCRIPTING_TYPE_CONVO) {\n const scriptData = Buffer.isBuffer(scriptBuffer) ? scriptBuffer.toString() : scriptBuffer\n if (scriptData.length === 0) {\n return []\n }\n 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 this.eol = caps[Capabilities.SCRIPTING_TXT_EOL]\n }\n\n Validate () {\n super.Validate()\n this._AssertCapabilityExists(Capabilities.SCRIPTING_TXT_EOL)\n }\n\n GetHeaders (scriptBuffer) {\n debug('GetHeaders is not implemented!')\n }\n\n Deserialize (scriptData) {\n throw new Error('not implemented')\n }\n\n Compile (scriptBuffer, scriptType = Constants.SCRIPTING_TYPE_CONVO) {\n let scriptData = scriptBuffer\n if (Buffer.isBuffer(scriptBuffer)) scriptData = scriptData.toString()\n scriptData = this.Deserialize(scriptData)\n\n const result = []\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO) {\n result.push(...this._compileConvo(scriptData.convos, false))\n } else if (scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n result.push(...this._compileConvo(scriptData.partialConvos, true))\n } else if (scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n result.push(...this._compileUtterances(scriptData.utterances))\n } else if (scriptType === Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY) {\n result.push(...this._compileScriptingMemory(scriptData.scriptingMemory))\n }\n\n return result\n }\n\n _compileConvo (convos, isPartial = false) {\n const result = []\n for (const convoRaw of (convos || [])) {\n const conversation = []\n for (const [convoStepLineIndex, convoStepRaw] of convoRaw.steps.entries()) {\n const lineTag = `${convoStepLineIndex + 1}`.padStart(`${convoRaw.steps.length}`.length, '0')\n\n if (Object.keys(convoStepRaw).length > 1) {\n throw new Error(`Use just one from ${validSenders.join(',')} fields in step ${JSON.stringify(convoStepRaw)}`)\n }\n if (validSenders.findIndex(sender => convoStepRaw[sender]) < 0) {\n throw new Error(`Use ${validSenders.map(s => `'${s}'`).join(' or ')} field in step ${JSON.stringify(convoStepRaw)}`)\n }\n\n const convoStepSender = Object.keys(convoStepRaw)[0]\n const convoStepObject = convoStepRaw[convoStepSender]\n\n conversation.push(Object.assign(\n {\n sender: convoStepSender,\n stepTag: 'Line ' + lineTag\n },\n linesToConvoStep(convoStepObject, convoStepSender, this.context, this.eol)\n ))\n }\n\n const convo = {\n header: {\n name: convoRaw.name,\n description: convoRaw.description\n },\n conversation\n }\n\n const toAdd = new Convo(this.context, convo)\n result.push(toAdd)\n if (isPartial) {\n this.context.AddPartialConvos([toAdd])\n } else {\n this.context.AddConvos([toAdd])\n }\n }\n return result\n }\n\n _compileUtterances (utterancesRaw) {\n const result = []\n const names = Object.keys(utterancesRaw || {})\n for (const name of names) {\n if (!_.isArray(utterancesRaw[name])) {\n throw new Error(`The '${name}' utterance has to be an array.`)\n }\n result.push(new Utterance({ name, utterances: (utterancesRaw[name]).map(u => `${u}`) }))\n }\n this.context.AddUtterances(result)\n return result\n }\n\n _compileScriptingMemory (lines) {\n if (lines && lines.length > 0) {\n if (_.isString(lines[0])) {\n if (lines.length > 1) {\n const scriptingMemories = linesToScriptingMemories(lines, this.caps[Capabilities.SCRIPTING_MEMORY_COLUMN_MODE])\n if (scriptingMemories && scriptingMemories.length > 0) {\n this.context.AddScriptingMemories(scriptingMemories)\n }\n return scriptingMemories\n }\n } else {\n this.context.AddScriptingMemories(lines)\n return lines\n }\n }\n return []\n }\n\n Decompile (convos) {\n throw new Error('not implemented')\n }\n}\n","const YAML = require('yaml')\n\nconst CompilerObjectBase = require('./CompilerObjectBase')\nmodule.exports = class CompilerYaml extends CompilerObjectBase {\n constructor (context, caps = {}) {\n super(context, caps)\n }\n\n Deserialize (scriptData) {\n return YAML.parse(scriptData)\n }\n}\n","const CompilerObjectBase = require('./CompilerObjectBase')\nconst { convoStepToObject } = require('./helper')\n\nmodule.exports = class CompilerJson extends CompilerObjectBase {\n constructor (context, caps = {}) {\n super(context, caps)\n }\n\n Deserialize (scriptData) {\n return JSON.parse(scriptData)\n }\n\n Decompile (convos) {\n const result = convos.map(convo => ({\n name: convo.header.name,\n description: convo.header.description,\n steps: convo.conversation.map(set => ({\n [set.sender]: convoStepToObject(set)\n }))\n }))\n return JSON.stringify({ convos: result }, null, 2)\n }\n}\n","const debug = require('debug')('botium-core-CompilerMarkdown')\nconst MarkdownIt = require('markdown-it')\nconst util = require('util')\nconst md = new MarkdownIt()\n\nconst Capabilities = require('../Capabilities')\nconst CompilerBase = require('./CompilerBase')\nconst Constants = require('./Constants')\nconst { Convo } = require('./Convo')\nconst Utterance = require('./Utterance')\nconst { linesToConvoStep, validSenders, validateSender } = require('./helper')\n\nmodule.exports = class CompilerMarkdown extends CompilerBase {\n constructor (context, caps = {}) {\n super(context, caps)\n\n this.eol = caps[Capabilities.SCRIPTING_TXT_EOL]\n }\n\n Validate () {\n super.Validate()\n this._AssertCapabilityExists(Capabilities.SCRIPTING_TXT_EOL)\n }\n\n Compile (scriptBuffer, scriptType = Constants.SCRIPTING_TYPE_CONVO) {\n if (Buffer.isBuffer(scriptBuffer)) scriptBuffer = scriptBuffer.toString()\n\n const parsed = md.parse(scriptBuffer, {})\n\n const _toStructuredMarkdown = (parsed) => {\n let depth = -1\n const struct = [{ children: [] }, null, null, null, null, null]\n\n const _add = (entry) => {\n if (!struct[depth] || !struct[depth].children) throw new Error(`\"${entry.markup}\" not expected here (Line ${entry.map[0] + 1}): format invalid`)\n struct[depth].children.push(entry)\n entry.children = []\n struct[depth + 1] = entry\n }\n\n for (const entry of parsed) {\n if (entry.type === 'heading_open') {\n if (entry.tag === 'h1') {\n depth = 0\n } else if (entry.tag === 'h2') {\n if (depth < 0 || depth > 1) {\n throw new Error(`\"${entry.markup}\" not expected here (Line ${entry.map[0] + 1}): expecting parent \"#\" for \"${entry.markup}\"`)\n }\n depth = 1\n } else {\n debug(`Markdown entry \"${util.inspect(entry)}\" ignored. Unknown heading`)\n }\n } else if (entry.type === 'bullet_list_open') {\n if (depth < 1) {\n throw new Error(`\"${entry.markup}\" not expected here (Line ${entry.map[0] + 1}): expecting parent \"##\" for \"${entry.markup}\"`)\n }\n if (depth > 3) {\n throw new Error(`\"${entry.markup}\" not expected here (Line ${entry.map[0] + 1}): Bullet list depth 3 not supported`)\n }\n depth++\n } else if (entry.type === 'bullet_list_close') {\n depth--\n } else if (entry.type === 'inline') {\n _add(entry)\n }\n }\n return struct[0]\n }\n\n const structured = _toStructuredMarkdown(parsed)\n for (const convosOrUtterances of structured.children) {\n if ((convosOrUtterances.content === 'Convos' && scriptType === Constants.SCRIPTING_TYPE_CONVO) ||\n (convosOrUtterances.content === 'PartialConvos' && scriptType === Constants.SCRIPTING_TYPE_PCONVO)) {\n const convosBotium = []\n for (const convo of convosOrUtterances.children) {\n const conversation = []\n for (const step of convo.children) {\n const sender = step.content.toLowerCase()\n if (validateSender(sender)) {\n // handle both:\n // - BUTTONS checkbutton|checkbutton2\n // and\n // - BUTTONS\n // - checkbutton\n // - checkbutton2\n conversation.push(Object.assign(\n {\n sender,\n stepTag: 'Line ' + (step.map[0] + 1)\n },\n linesToConvoStep(step.children.map(child => child.content +\n (child.children ? ' ' + child.children.map(child => child.content).join('|') : '')), sender, this.context, this.eol)\n ))\n } else {\n debug(`Expected sender ${validSenders.map(s => `'${s}'`).join(' or ')} but found ${sender}`)\n }\n }\n convosBotium.push(new Convo(this.context, {\n header: {\n name: convo.content\n },\n conversation\n }))\n }\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO) {\n this.context.AddConvos(convosBotium)\n } else if (scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n this.context.AddPartialConvos(convosBotium)\n }\n } else if (convosOrUtterances.content === 'Utterances' && scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n const utterancesBotium = []\n for (const utteranceStruct of convosOrUtterances.children) {\n utterancesBotium.push(new Utterance({ name: utteranceStruct.content, utterances: utteranceStruct.children.map(child => `${child.content}`) }))\n }\n this.context.AddUtterances(utterancesBotium)\n }\n }\n }\n}\n","const LogicHookUtils = require('./logichook/LogicHookUtils')\nconst util = require('util')\nconst crypto = require('crypto')\nconst fs = require('fs')\nconst path = require('path')\nconst globby = require('globby')\nconst _ = require('lodash')\nconst randomize = require('randomatic')\nconst promiseRetry = require('promise-retry')\nrequire('promise.allsettled').shim()\nconst debug = require('debug')('botium-core-ScriptingProvider')\n\nconst Constants = require('./Constants')\nconst Capabilities = require('../Capabilities')\nconst Defaults = require('../Defaults')\nconst { Convo, ConvoStep } = require('./Convo')\nconst ScriptingMemory = require('./ScriptingMemory')\nconst { BotiumError, botiumErrorFromList, botiumErrorFromErr } = require('./BotiumError')\nconst RetryHelper = require('../helpers/RetryHelper')\nconst { getMatchFunction } = require('./MatchFunctions')\nconst precompilers = require('./precompilers')\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)) {\n debug(`Asserter trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, retryHelper.retrySettings)\n } else {\n return promise()\n }\n}\n\nconst pnot = (retryHelper, fn, errTemplate) => {\n const promise = () => new Promise(async (resolve, reject) => { // eslint-disable-line no-async-promise-executor\n try {\n await fn()\n reject(errTemplate)\n } catch (err) {\n resolve()\n }\n })\n\n if (retryHelper) {\n return promiseRetry((retry, number) => {\n return promise().catch(() => {\n if (retryHelper.shouldRetry(errTemplate)) {\n debug(`Asserter trial #${number} failed, !retry activated`)\n retry(errTemplate)\n } else {\n throw errTemplate\n }\n })\n }, retryHelper.retrySettings)\n } else {\n return promise()\n }\n}\n\nmodule.exports = class ScriptingProvider {\n constructor (caps) {\n this.caps = caps || _.cloneDeep(Defaults.Capabilities)\n this.compilers = {}\n this.convos = []\n this.utterances = {}\n this.matchFn = null\n this.asserters = {}\n this.globalAsserter = {}\n this.logicHooks = {}\n this.globalLogicHook = {}\n this.userInputs = {}\n this.partialConvos = {}\n this.scriptingMemories = []\n\n this.scriptingEvents = {\n onConvoBegin: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onConvoBegin', logicHooks: (convo.beginLogicHook || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onConvoEnd: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onConvoEnd', logicHooks: (convo.endLogicHook || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onMeStart: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onMeStart', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onMePrepare: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onMePrepare', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onMeEnd: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onMeEnd', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onBotStart: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onBotStart', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onBotPrepare: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onBotPrepare', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onBotEnd: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onBotEnd', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n assertConvoBegin: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createAsserterPromises({ asserterType: 'assertConvoBegin', asserters: (convo.beginAsserter || []), convo, convoStep, scriptingMemory, ...rest })\n },\n assertConvoStep: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createAsserterPromises({ asserterType: 'assertConvoStep', asserters: (convoStep.asserters || []), convo, convoStep, scriptingMemory, ...rest })\n },\n assertConvoEnd: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createAsserterPromises({ asserterType: 'assertConvoEnd', asserters: (convo.endAsserter || []), convo, convoStep, scriptingMemory, ...rest })\n },\n setUserInput: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createUserInputPromises({ convo, convoStep, scriptingMemory, ...rest })\n },\n resolveUtterance: ({ utterance, resolveEmptyIfUnknown }) => {\n return this._resolveUtterance({ utterance, resolveEmptyIfUnknown })\n },\n assertBotResponse: (botresponse, tomatch, stepTag, meMsg) => {\n if (!_.isArray(tomatch)) {\n tomatch = [tomatch]\n }\n debug(`assertBotResponse ${stepTag} ${meMsg ? `(${meMsg}) ` : ''}BOT: ${botresponse} = ${tomatch} ...`)\n const found = _.find(tomatch, (utt) => this.matchFn(botresponse, utt, this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS]))\n const asserterType = this.caps[Capabilities.SCRIPTING_MATCHING_MODE] === 'wer' ? 'Word Error Rate Asserter' : 'Text Match Asserter'\n if (_.isNil(found)) {\n if (this.caps[Capabilities.SCRIPTING_MATCHING_MODE] === 'wer') {\n const wer = calculateWer(botresponse, tomatch[0])\n const werArgs = this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS]\n const threshold = ([',', '.'].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: 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: `<=${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) => {\n if (!_.isArray(nottomatch)) {\n nottomatch = [nottomatch]\n }\n debug(`assertBotNotResponse ${stepTag} ${meMsg ? `(${meMsg}) ` : ''}BOT: ${botresponse} != ${nottomatch} ...`)\n const found = _.find(nottomatch, (utt) => this.matchFn(botresponse, utt, this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS]))\n const asserterType = this.caps[Capabilities.SCRIPTING_MATCHING_MODE] === 'wer' ? 'Word Error Rate Asserter' : 'Text Match Asserter'\n if (!_.isNil(found)) {\n if (this.caps[Capabilities.SCRIPTING_MATCHING_MODE] === 'wer') {\n const wer = calculateWer(botresponse, nottomatch[0])\n const werArgs = this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS]\n const threshold = ([',', '.'].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: 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: `>=${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 callAsserter = (asserterSpec, asserter, params) => {\n if (asserterSpec.not) {\n const notAsserterType = mapNot[asserterType]\n if (asserter[notAsserterType]) {\n return p(this.retryHelperAsserter, () => asserter[notAsserterType](params))\n } else {\n return pnot(this.retryHelperAsserter, () => asserter[asserterType](params),\n new BotiumError(\n `${convoStep.stepTag}: Expected asserter ${asserter.name || asserterSpec.name} with args \"${params.args}\" to fail`,\n {\n type: 'asserter',\n source: asserter.name || asserterSpec.name,\n params: {\n args: params.args\n },\n cause: {\n not: true,\n expected: 'failed',\n actual: 'not failed'\n }\n }\n )\n )\n }\n } else {\n return p(this.retryHelperAsserter, () => asserter[asserterType](params))\n }\n }\n\n const convoAsserter = asserters\n .filter(a => this.asserters[a.name][asserterType])\n .map(a => callAsserter(a, this.asserters[a.name], {\n convo,\n convoStep,\n scriptingMemory,\n container,\n args: ScriptingMemory.applyToArgs(a.args, scriptingMemory, container.caps, rest.botMsg),\n isGlobal: false,\n ...rest\n }))\n const globalAsserter = Object.values(this.globalAsserter)\n .filter(a => a[asserterType])\n .map(a => p(this.retryHelperAsserter, () => a[asserterType]({ convo, convoStep, scriptingMemory, container, args: [], isGlobal: true, ...rest })))\n\n const allPromises = [...convoAsserter, ...globalAsserter]\n if (this.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n return Promise.allSettled(allPromises).then((results) => {\n const rejected = results.filter(result => result.status === 'rejected').map(result => result.reason)\n if (rejected.length) {\n throw botiumErrorFromList(rejected, {})\n }\n return results.filter(result => result.status === 'fulfilled').map(result => result.value)\n })\n }\n if (allPromises.length > 0) return Promise.all(allPromises).then(() => true)\n return Promise.resolve(false)\n }\n\n _createLogicHookPromises ({ hookType, logicHooks, convo, convoStep, scriptingMemory, 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 const convoStepPromises = (logicHooks || [])\n .filter(l => this.logicHooks[l.name][hookType])\n .map(l => p(this.retryHelperLogicHook, () => this.logicHooks[l.name][hookType]({\n convo,\n convoStep,\n scriptingMemory,\n container,\n args: ScriptingMemory.applyToArgs(l.args, scriptingMemory, container.caps, rest.botMsg),\n isGlobal: false,\n ...rest\n })))\n\n const globalPromises = Object.values(this.globalLogicHook)\n .filter(l => l[hookType])\n .map(l => p(this.retryHelperLogicHook, () => l[hookType]({ convo, convoStep, scriptingMemory, container, args: [], isGlobal: true, ...rest })))\n\n const allPromises = [...convoStepPromises, ...globalPromises]\n if (allPromises.length > 0) return Promise.all(allPromises).then(() => true)\n return Promise.resolve(false)\n }\n\n _createUserInputPromises ({ convo, convoStep, scriptingMemory, 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 setUserInput: this.scriptingEvents.setUserInput.bind(this),\n fail: this.scriptingEvents.fail && this.scriptingEvents.fail.bind(this)\n }\n }\n }\n\n Build () {\n const CompilerXlsx = require('./CompilerXlsx')\n this.compilers[Constants.SCRIPTING_FORMAT_XSLX] = new CompilerXlsx(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_XSLX].Validate()\n const CompilerTxt = require('./CompilerTxt')\n this.compilers[Constants.SCRIPTING_FORMAT_TXT] = new CompilerTxt(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_TXT].Validate()\n const CompilerCsv = require('./CompilerCsv')\n this.compilers[Constants.SCRIPTING_FORMAT_CSV] = new CompilerCsv(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_CSV].Validate()\n const CompilerYaml = require('./CompilerYaml')\n this.compilers[Constants.SCRIPTING_FORMAT_YAML] = new CompilerYaml(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_YAML].Validate()\n const CompilerJson = require('./CompilerJson')\n this.compilers[Constants.SCRIPTING_FORMAT_JSON] = new CompilerJson(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_JSON].Validate()\n const CompilerMarkdown = require('./CompilerMarkdown')\n this.compilers[Constants.SCRIPTING_FORMAT_MARKDOWN] = new CompilerMarkdown(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_MARKDOWN].Validate()\n\n this.matchFn = getMatchFunction(this.caps[Capabilities.SCRIPTING_MATCHING_MODE])\n\n const logicHookUtils = new LogicHookUtils({ buildScriptContext: this._buildScriptContext(), caps: this.caps })\n this.asserters = logicHookUtils.asserters\n this.globalAsserter = logicHookUtils.getGlobalAsserter()\n this.logicHooks = logicHookUtils.logicHooks\n this.globalLogicHook = logicHookUtils.getGlobalLogicHook()\n this.userInputs = logicHookUtils.userInputs\n }\n\n IsAsserterValid (name) {\n return this.asserters[name] || false\n }\n\n IsLogicHookValid (name) {\n return this.logicHooks[name] || false\n }\n\n IsUserInputValid (name) {\n return this.userInputs[name] || false\n }\n\n Match (botresponse, utterance) {\n return this.matchFn(botresponse, utterance, 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 }, 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 }, 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 })\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 currentStepsStack = convoStepsStack.slice()\n const currentStepMod = _.cloneDeep(currentStep)\n currentStepMod.userInputs[uiIndex] = sampleinput\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 eu = this.utterances[utt.name]\n if (eu) {\n eu.utterances = _.uniq(_.concat(eu.utterances, utt.utterances))\n } else {\n this.utterances[utt.name] = utt\n }\n\n const { ambiguous, expected } = findAmbiguous(this.utterances[utt.name].utterances)\n\n if (ambiguous && ambiguous.length > 0) {\n debug(`Ambigous utterance \"${utt.name}\", expecting exact ${expected.length ? ('\"' + expected.join(', ') + '\"') : '<none>'} scripting memory variables in following user examples: ${ambiguous.map(d => `\"${d}\"`).join(', ')}`)\n }\n })\n }\n }\n\n AddPartialConvos (convos) {\n if (convos && _.isArray(convos)) {\n for (let i = 0; i < convos.length; i++) {\n const convo = convos[i]\n this.AddPartialConvos(convo)\n }\n } else if (convos) {\n if (!convos.header || !convos.header.name) {\n throw Error(`Header name is mandatory: ${JSON.stringify(convos.header)}`)\n }\n if (convos.header.name.indexOf('|') >= 0) {\n throw Error(`Invalid partial convo name: ${convos.header.name}`)\n }\n const name = convos.header.name\n if (this.partialConvos[name]) {\n throw Error(`Duplicate partial convo: ${name}`)\n }\n\n this.partialConvos[name] = convos\n }\n }\n\n GetPartialConvos () {\n return this.partialConvos\n }\n\n AddScriptingMemories (scriptingMemories) {\n if (scriptingMemories && _.isArray(scriptingMemories)) {\n for (let i = 0; i < scriptingMemories.length; i++) {\n const scriptingMemory = scriptingMemories[i]\n this.AddScriptingMemories(scriptingMemory)\n }\n } else if (scriptingMemories) {\n if (!scriptingMemories.header || !scriptingMemories.header.name) {\n throw new BotiumError(\n 'Scripting Memory Definition has no name',\n {\n type: 'Compiler',\n subtype: 'Scripting memory without name',\n source: 'ScriptingProvider',\n cause: {\n scriptingMemory: scriptingMemories\n }\n }\n )\n }\n\n if (!scriptingMemories.values || !Object.keys(scriptingMemories.values).length) {\n throw new BotiumError(\n 'Scripting Memory Definition has no variables',\n {\n type: 'Compiler',\n subtype: 'Scripting memory without variable',\n source: 'ScriptingProvider',\n cause: {\n scriptingMemory: scriptingMemories\n }\n }\n )\n }\n\n if (scriptingMemories.values && !_.isUndefined(scriptingMemories.values[''])) {\n throw new BotiumError(\n 'Scripting Memory Definition variable has no name',\n {\n type: 'Compiler',\n subtype: 'Scripting memory without variable name',\n source: 'ScriptingProvider',\n cause: {\n scriptingMemory: scriptingMemories\n }\n }\n )\n }\n\n this.scriptingMemories.push(scriptingMemories)\n }\n }\n\n GetConversationFlowView ({\n getConvoNodeHash = null, detectLoops = false, summarizeMultiSteps = true,\n extPickMeNodeProps = [], extPickBotNodeProps = [], extPickMeHashProps = [], extPickBotHashProps = []\n } = {}) {\n const root = []\n const botNodesByHash = {}\n const pickMeNodeProps = ['index', 'sender', 'messageText', 'utteranceSamples', 'utteranceCount', 'logicHooks', 'userInputs', ...extPickMeNodeProps]\n const pickBotNodeProps = ['index', 'sender', 'messageText', 'optional', 'not', 'utteranceSamples', 'utteranceCount', 'logicHooks', 'asserters', ...extPickBotNodeProps]\n const pickMeHashProps = ['sender', 'messageText', 'logicHooks', 'userInputs', ...extPickMeHashProps]\n const pickBotHashProps = ['sender', 'messageText', 'optional', 'not', 'logicHooks', 'asserters', ...extPickBotHashProps]\n\n this.convos.forEach((convo) => {\n const convoNodes = []\n for (const [convoStepIndex, convoStep] of convo.conversation.entries()) {\n if (convoStep.sender === 'begin' || convoStep.sender === 'end') continue\n convoStep.index = convoStepIndex\n if (convoStep.messageText) {\n const utterances = this._resolveUtterance({ utterance: convoStep.messageText, resolveEmptyIfUnknown: true })\n if (utterances) {\n convoStep.utteranceSamples = utterances.slice(0, 3)\n convoStep.utteranceCount = utterances.length\n }\n }\n\n const lastConvoNode = convoNodes.length === 0 ? null : convoNodes[convoNodes.length - 1]\n if (!lastConvoNode || !summarizeMultiSteps || convoNodes[convoNodes.length - 1].sender !== convoStep.sender) {\n convoNodes.push({\n sender: convoStep.sender,\n convoSteps: [convoStep],\n convoStepIndices: [convoStepIndex],\n hash: null\n })\n } else {\n lastConvoNode.convoSteps.push(convoStep)\n lastConvoNode.convoStepIndices.push(convoStepIndex)\n }\n }\n\n let currentChildren = root\n for (const convoNode of convoNodes) {\n const convoNodeValues = convoNode.sender === 'me'\n ? convoNode.convoSteps.map(convoStep => _.pick(convoStep, pickMeNodeProps))\n : convoNode.convoSteps.map(convoStep => _.pick(convoStep, pickBotNodeProps))\n const convoNodeHeader = {\n header: _.pick(convo.header, ['name', 'description']),\n sourceTag: convo.sourceTag,\n convoStepIndices: convoNode.convoStepIndices\n }\n\n let hash = getConvoNodeHash && getConvoNodeHash({ convo, convoNode })\n if (!hash) {\n if (convoNode.sender === 'bot') {\n hash = crypto.createHash('md5').update(JSON.stringify(convoNode.convoSteps.map(convoStep => _.pick(convoStep, pickBotHashProps)))).digest('hex')\n } else {\n hash = crypto.createHash('md5').update(JSON.stringify(convoNode.convoSteps.map(convoStep => _.pick(convoStep, pickMeHashProps)))).digest('hex')\n }\n }\n\n const existingChildNode = currentChildren.find(c => c.hash === hash)\n if (existingChildNode) {\n existingChildNode.convos.push(_.cloneDeep(convoNodeHeader))\n currentChildren = existingChildNode.childNodes\n continue\n }\n\n const existingBotNode = (detectLoops && convoNode.sender === 'bot' && botNodesByHash[hash])\n if (existingBotNode) {\n if (currentChildren.findIndex(c => c.ref === existingBotNode.key) < 0) {\n currentChildren.push({\n ref: existingBotNode.key\n })\n }\n const existingConvo = existingBotNode.convos.find(c => c.header.name === convoNodeHeader.header.name)\n if (existingConvo) {\n existingConvo.convoStepIndices = [...existingConvo.convoStepIndices, ...convoNodeHeader.convoStepIndices]\n } else {\n existingBotNode.convos.push(_.cloneDeep(convoNodeHeader))\n }\n currentChildren = existingBotNode.childNodes\n continue\n }\n const node = {\n sender: convoNode.sender,\n key: randomize('0', 20),\n hash,\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 request = require('request')\nconst debug = require('debug')('botium-connector-BaseContainer')\n\nconst Events = require('../Events')\nconst Capabilities = require('../Capabilities')\nconst Queue = require('../helpers/Queue')\nconst { executeHook, getHook } = require('../helpers/HookUtils')\nconst BotiumMockMessage = require('../mocks/BotiumMockMessage')\n\nmodule.exports = class BaseContainer {\n constructor (eventEmitter, tempDirectory, repo, caps, envs) {\n this.eventEmitter = eventEmitter\n this.repo = repo\n this.caps = Object.assign({}, caps)\n this.envs = Object.assign({}, envs)\n this.tempDirectory = tempDirectory\n this.cleanupTasks = []\n this.queues = {}\n this.bottleneck = null\n }\n\n Validate () {\n this.onBuildHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONBUILD])\n this.onStartHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONSTART])\n this.onUserSaysHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONUSERSAYS])\n this.onBotResponseHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONBOTRESPONSE])\n this.onStopHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONSTOP])\n this.onCleanHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONCLEAN])\n\n if (this.caps[Capabilities.RATELIMIT_BOTTLENECK_FN]) {\n if (_.isFunction(this.caps[Capabilities.RATELIMIT_BOTTLENECK_FN])) {\n this.bottleneck = this.caps[Capabilities.RATELIMIT_BOTTLENECK_FN]\n debug('Validate: Applying userSays rate limits from capability')\n } else {\n const limiter = new Bottleneck(this.caps[Capabilities.RATELIMIT_BOTTLENECK_FN])\n this.bottleneck = (fn) => limiter.schedule(fn)\n debug(`Validate: Applying userSays rate limits ${util.inspect(this.caps[Capabilities.RATELIMIT_BOTTLENECK_FN])}`)\n }\n } else if (this.caps[Capabilities.RATELIMIT_USERSAYS_MAXCONCURRENT] || this.caps[Capabilities.RATELIMIT_USERSAYS_MINTIME]) {\n const opts = {}\n if (this.caps[Capabilities.RATELIMIT_USERSAYS_MAXCONCURRENT]) opts.maxConcurrent = this.caps[Capabilities.RATELIMIT_USERSAYS_MAXCONCURRENT]\n if (this.caps[Capabilities.RATELIMIT_USERSAYS_MINTIME]) opts.minTime = this.caps[Capabilities.RATELIMIT_USERSAYS_MINTIME]\n const limiter = new Bottleneck(opts)\n this.bottleneck = (fn) => limiter.schedule(fn)\n debug(`Validate: Applying userSays rate limits ${util.inspect(opts)}`)\n }\n\n return Promise.resolve()\n }\n\n Build () {\n return new Promise((resolve, reject) => {\n this._RunCustomHook('onBuild', this.onBuildHook)\n .then(() => resolve(this))\n .catch((err) => reject(err))\n })\n }\n\n Start () {\n this.queues = {}\n return new Promise((resolve, reject) => {\n this._RunCustomHook('onStart', this.onStartHook)\n .then(() => resolve(this))\n .catch((err) => reject(err))\n })\n }\n\n UserSaysText (text) {\n const meMsg = new BotiumMockMessage({ sender: 'me', messageText: text })\n return this.UserSays(meMsg)\n }\n\n UserSays (meMsg) {\n const run = () => this._RunCustomHook('onUserSays', this.onUserSaysHook, { meMsg })\n .then(() => this.UserSaysImpl(meMsg))\n\n if (this.bottleneck) {\n return this.bottleneck(run)\n } else {\n return run()\n }\n }\n\n UserSaysImpl (meMsg) {\n return Promise.resolve(this)\n }\n\n WaitBotSays (channel = null, timeoutMillis = null) {\n if (!channel) channel = 'default'\n if (!timeoutMillis) timeoutMillis = this.caps[Capabilities.WAITFORBOTTIMEOUT]\n\n if (!this.queues[channel]) {\n this.queues[channel] = new Queue()\n }\n\n return new Promise((resolve, reject) => {\n this.queues[channel].pop(timeoutMillis)\n .then((botMsg) => {\n if (_.isError(botMsg)) {\n reject(botMsg)\n } else {\n resolve(botMsg)\n }\n })\n .catch((err) => {\n debug(`WaitBotSays error ${err.message || err}`)\n reject(err)\n })\n })\n }\n\n WaitBotSaysText (channel = null, timeoutMillis = null) {\n return this.WaitBotSays(channel, timeoutMillis)\n .then((botMsg) => {\n if (botMsg) {\n return botMsg.messageText\n }\n })\n }\n\n Restart () {\n return new Promise((resolve, reject) => {\n this.Stop()\n .then(() => this.Start())\n .then(() => resolve())\n .catch((err) => reject(err))\n })\n }\n\n Stop () {\n return new Promise((resolve, reject) => {\n this._RunCustomHook('onStop', this.onStopHook)\n .then(() => resolve(this))\n .catch((err) => reject(err))\n })\n }\n\n Clean () {\n this.userSaysLimiter = null\n return new Promise((resolve, reject) => {\n async.series([\n (hookExecuted) => {\n this._RunCustomHook('onClean', this.onCleanHook)\n .then(() => hookExecuted())\n .catch(() => hookExecuted())\n },\n\n (cleanupTasksDone) => {\n if (this.cleanupTasks) {\n async.series(\n this.cleanupTasks.map((task) => {\n return (cb) => {\n task((err) => {\n if (err) debug(`Cleanup failed: ${util.inspect(err)}`)\n cb()\n })\n }\n }),\n () => {\n cleanupTasksDone()\n }\n )\n } else {\n cleanupTasksDone()\n }\n },\n\n (rimraffed) => {\n if (this.caps[Capabilities.CLEANUPTEMPDIR]) {\n debug(`Cleanup rimrafing temp dir ${this.tempDirectory}`)\n 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, request }, args))\n } catch (err) {\n debug(`_RunCustomHook ${name} finished with error: ${err.message || util.inspect(err)}`)\n }\n }\n}\n","const util = require('util')\nconst async = require('async')\nconst _ = require('lodash')\nconst io = require('socket.io-client')\nconst debug = require('debug')('botium-connector-GridContainer')\n\nconst Commands = require('../Commands')\nconst Events = require('../Events')\nconst Capabilities = require('../Capabilities')\nconst BaseContainer = require('./BaseContainer')\nconst BotiumMockMessage = require('../mocks/BotiumMockMessage')\n\nmodule.exports = class GridContainer extends BaseContainer {\n Validate () {\n return super.Validate().then(() => {\n this._AssertCapabilityExists(Capabilities.BOTIUMGRIDURL)\n })\n }\n\n Build () {\n this.buildPromise = this._defer()\n\n async.series([\n (baseComplete) => {\n super.Build().then(() => baseComplete()).catch(baseComplete)\n },\n\n (socketComplete) => {\n this.socket = io(this.caps[Capabilities.BOTIUMGRIDURL])\n\n this.socket.on('connect', () => {\n debug('connected')\n this.socket.emit('authentication', { apiToken: this.caps[Capabilities.BOTIUMAPITOKEN] })\n })\n this.socket.on('connect_error', (err) => {\n debug(`connect_error ${err.message}`)\n })\n this.socket.on('connect_timeout', (timeout) => {\n debug(`connect_timeout ${util.inspect(timeout)}`)\n })\n this.socket.on('error', (err) => {\n debug(`error ${err.message}`)\n })\n this.socket.on('authenticated', () => {\n debug('authenticated')\n this.socket.emit(Commands.BUILD_CONTAINER, this.caps, this.repo.sources, this.envs)\n })\n this.socket.on('unauthorized', (err) => {\n debug(`unauthorized ${err.message}`)\n socketComplete(`Grid Access not authorized: ${err.message}`)\n })\n this.socket.on(Events.TOOMUCHWORKERS_ERROR, (err) => {\n debug(`TOOMUCHWORKERS_ERROR ${err.message}`)\n socketComplete(`Grid Access not possible: ${err.message}`)\n })\n this.socket.on(Events.CONTAINER_BUILT, () => {\n debug(Events.CONTAINER_BUILT)\n socketComplete()\n })\n this.socket.on(Events.CONTAINER_BUILD_ERROR, (err) => {\n debug(`CONTAINER_BUILD_ERROR ${err.message}`)\n socketComplete(`Grid Build failed: ${err.message}`)\n })\n\n this.socket.on(Events.CONTAINER_STARTED, () => {\n debug(Events.CONTAINER_STARTED)\n this.eventEmitter.emit(Events.CONTAINER_STARTED, this)\n if (this.startPromise) {\n this.startPromise.resolve(this)\n this.startPromise = null\n }\n })\n this.socket.on(Events.CONTAINER_START_ERROR, (err) => {\n debug(`CONTAINER_START_ERROR ${err.message}`)\n this.eventEmitter.emit(Events.CONTAINER_START_ERROR, this, err)\n if (this.startPromise) {\n this.startPromise.reject(`Grid Start failed: ${err.message}`)\n this.startPromise = null\n }\n })\n\n this.socket.on(Events.MESSAGE_RECEIVEDFROMBOT, (botMsg) => {\n debug(`MESSAGE_RECEIVEDFROMBOT ${util.inspect(botMsg)}`)\n this._QueueBotSays(new BotiumMockMessage(botMsg))\n })\n\n this.socket.on(Events.CONTAINER_STOPPED, () => {\n debug(Events.CONTAINER_STOPPED)\n this.eventEmitter.emit(Events.CONTAINER_STOPPED, this)\n if (this.stopPromise) {\n this.stopPromise.resolve(this)\n this.stopPromise = null\n }\n })\n this.socket.on(Events.CONTAINER_STOP_ERROR, (err) => {\n debug(`CONTAINER_STOP_ERROR ${err.message}`)\n this.eventEmitter.emit(Events.CONTAINER_STOP_ERROR, this, err)\n if (this.stopPromise) {\n this.stopPromise.reject(`Grid Stop failed: ${err.message}`)\n this.stopPromise = null\n }\n })\n\n this.socket.on(Events.CONTAINER_CLEANED, () => {\n debug(Events.CONTAINER_CLEANED)\n this.eventEmitter.emit(Events.CONTAINER_CLEANED, this)\n if (this.cleanPromise) {\n this.cleanPromise.resolve(this)\n this.cleanPromise = null\n }\n this.socket.disconnect()\n this.socket = null\n })\n this.socket.on(Events.CONTAINER_CLEAN_ERROR, (err) => {\n debug(`CONTAINER_CLEAN_ERROR ${err.message}`)\n this.eventEmitter.emit(Events.CONTAINER_CLEAN_ERROR, this, err)\n if (this.cleanPromise) {\n this.cleanPromise.reject(`Grid Clean failed: ${err.message}`)\n this.cleanPromise = null\n }\n this.socket.disconnect()\n this.socket = null\n })\n }\n ], (err) => {\n if (err) {\n this.buildPromise.reject(new Error(`Cannot build grid containers: ${err.message}`))\n } else {\n this.buildPromise.resolve(this)\n }\n this.buildPromise = null\n })\n return this.buildPromise.promise\n }\n\n Start () {\n this.eventEmitter.emit(Events.CONTAINER_STARTING, this)\n\n return super.Start().then(() => {\n if (this.startPromise) return Promise.reject(new Error('already starting'))\n if (this.socket) {\n this.startPromise = this._defer()\n this.socket.emit(Commands.START_CONTAINER)\n\n return this.startPromise.promise\n } else {\n this.eventEmitter.emit(Events.CONTAINER_START_ERROR, this, 'Remote Agent not online')\n return Promise.reject(new Error('Remote Agent not online'))\n }\n })\n }\n\n UserSaysImpl (mockMsg) {\n return new Promise((resolve, reject) => {\n if (this.socket) {\n this.socket.emit(Commands.SENDTOBOT, mockMsg)\n this.eventEmitter.emit(Events.MESSAGE_SENTTOBOT, this, mockMsg)\n resolve(this)\n } else {\n this.eventEmitter.emit(Events.MESSAGE_SENDTOBOT_ERROR, this, 'Remote Agent not online')\n reject(new Error('Remote Agent not online'))\n }\n })\n }\n\n Stop () {\n this.eventEmitter.emit(Events.CONTAINER_STOPPING, this)\n\n return super.Stop().then(() => {\n if (this.stopPromise) return Promise.reject(new Error('already stopping'))\n if (this.socket) {\n this.stopPromise = this._defer()\n this.socket.emit(Commands.STOP_CONTAINER)\n\n return this.stopPromise.promise\n } else {\n return Promise.resolve(this)\n }\n })\n }\n\n Clean () {\n this.eventEmitter.emit(Events.CONTAINER_CLEANING, this)\n\n return super.Clean().then(() => {\n if (this.cleanPromise) return Promise.reject(new Error('already cleaning'))\n if (this.socket) {\n this.cleanPromise = this._defer()\n this.socket.emit(Commands.CLEAN_CONTAINER)\n\n return this.cleanPromise.promise\n } else {\n return Promise.resolve(this)\n }\n })\n }\n\n _ValidateCustomHook (capKey) {\n if (this.caps[capKey]) {\n if (!_.isString(this.caps[capKey])) {\n throw new Error(`Custom Hook ${capKey} has to be a command line string`)\n }\n }\n }\n\n _RunCustomHook (capKey) {\n return Promise.resolve()\n }\n\n _defer () {\n const deferred = {\n promise: null,\n resolve: null,\n reject: null\n }\n deferred.promise = new Promise((resolve, reject) => {\n deferred.resolve = resolve\n deferred.reject = reject\n })\n return deferred\n }\n}\n","const Events = require('../Events')\nconst BaseContainer = require('./BaseContainer')\nconst BotiumMockMessage = require('../mocks/BotiumMockMessage')\n\nmodule.exports = class InProcessContainer extends BaseContainer {\n UserSaysImpl (mockMsg) {\n this.eventEmitter.emit(Events.MESSAGE_SENTTOBOT, this, mockMsg)\n return Promise.resolve(this)\n }\n\n InjectBotSays (botMsg) {\n this._QueueBotSays(new BotiumMockMessage(botMsg))\n }\n}\n","const express = require('express')\nconst Redis = require('ioredis')\nconst bodyParser = require('body-parser')\nconst debug = require('debug')('botium-core-inbound-proxy')\n\nconst buildRedisHandler = (redisurl, topic) => {\n const redis = new Redis(redisurl)\n redis.on('connect', () => {\n debug(`Redis connected to ${JSON.stringify(redisurl || 'default')}`)\n })\n return (event) => {\n try {\n debug('Got Message Event:')\n debug(JSON.stringify(event, null, 2))\n\n redis.publish(topic, JSON.stringify(event))\n } catch (err) {\n debug('Error while publishing to redis')\n debug(err)\n }\n }\n}\n\nconst setupEndpoints = ({ app, endpoint, middleware, processEvent }) => {\n if (endpoint && !endpoint.endsWith('/')) endpoint = endpoint + '/'\n\n const handler = (req, res) => {\n if (req.body) {\n processEvent({\n originalUrl: req.originalUrl,\n originalMethod: req.method,\n body: req.body,\n 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 request = require('request')\nconst Mustache = require('mustache')\nconst jp = require('jsonpath')\nconst mime = require('mime-types')\nconst { v4: uuidv4 } = require('uuid')\nconst Redis = require('ioredis')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-connector-simplerest')\n\nconst { startProxy } = require('../../grid/inbound/proxy')\nconst botiumUtils = require('../../helpers/Utils')\nconst { getAllCapValues } = require('../../helpers/CapabilitiesUtils')\nconst Capabilities = require('../../Capabilities')\nconst Defaults = require('../../Defaults').Capabilities\nconst { SCRIPTING_FUNCTIONS } = require('../../scripting/ScriptingMemory')\nconst { getHook, executeHook } = require('../../helpers/HookUtils')\nconst { escapeJSONString } = require('../../helpers/Utils')\nconst { BotiumError } = require('../../scripting/BotiumError')\n\nMustache.escape = s => s\n\nmodule.exports = class SimpleRestContainer {\n constructor ({ queueBotSays, caps, bottleneck }) {\n this.queueBotSays = queueBotSays\n this.caps = Object.assign({}, Defaults, caps)\n this.bottleneck = bottleneck || ((fn) => fn())\n this.processInbound = false\n this.redisTopic = this.caps[Capabilities.SIMPLEREST_REDIS_TOPIC] || 'SIMPLEREST_INBOUND_SUBSCRIPTION'\n 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 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 // 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 const result = []\n if (isFromUser) {\n const _extractFrom = (root, jsonPaths) => {\n const flattened = []\n for (const jsonPath of jsonPaths) {\n const rb = jp.query(root, jsonPath)\n if (_.isArray(rb)) {\n _.flattenDeep(rb).forEach(r => flattened.push(r))\n } else if (rb) {\n flattened.push(rb)\n }\n }\n return flattened\n }\n\n const jsonPathRoots = []\n\n const jsonPathsBody = getAllCapValues(Capabilities.SIMPLEREST_BODY_JSONPATH, this.caps)\n if (jsonPathsBody.length > 0) {\n jsonPathRoots.push(..._extractFrom(body, jsonPathsBody))\n } else {\n jsonPathRoots.push(body)\n }\n\n for (const jsonPathRoot of jsonPathRoots) {\n const _retrieveMedia = (jsonPathMediaRoot, jsonPathsMedia) => {\n const retrievedMedia = []\n jsonPathsMedia.forEach(jsonPath => {\n const responseMedia = jp.query(jsonPathMediaRoot, jsonPath)\n if (responseMedia) {\n (_.isArray(responseMedia) ? _.flattenDeep(responseMedia) : [responseMedia]).forEach(m =>\n retrievedMedia.push({\n mediaUri: m,\n mimeType: mime.lookup(m) || 'application/unknown'\n })\n )\n }\n })\n return retrievedMedia\n }\n\n const _retrieveButtons = (jsonPathButtonRoot, 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\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 hasMessageText = false\n const jsonPathsTexts = getAllCapValues(Capabilities.SIMPLEREST_RESPONSE_JSONPATH, this.caps)\n for (const jsonPath of jsonPathsTexts) {\n debug(`eval json path ${jsonPath}`)\n\n const responseTexts = jp.query(jsonPathRoot, jsonPath)\n debug(`found response texts: ${util.inspect(responseTexts)}`)\n\n const messageTexts = (_.isArray(responseTexts) ? _.flattenDeep(responseTexts) : [responseTexts])\n for (const [messageTextIndex, messageText] of messageTexts.entries()) {\n if (!messageText) continue\n\n hasMessageText = true\n const botMsg = { sourceData: body, messageText, media, buttons, cards }\n await executeHook(this.caps, this.responseHook, Object.assign({ botMsg, botMsgRoot: jsonPathRoot, messageTextIndex }, this.view))\n result.push(botMsg)\n }\n }\n\n if (!hasMessageText) {\n const botMsg = { messageText: '', sourceData: body, media, buttons, cards }\n const beforeHookKeys = Object.keys(botMsg)\n await executeHook(this.caps, this.responseHook, Object.assign({ botMsg, botMsgRoot: jsonPathRoot }, this.view))\n const afterHookKeys = Object.keys(botMsg)\n if (beforeHookKeys.length !== afterHookKeys.length || !!(botMsg.messageText && botMsg.messageText.length > 0) || botMsg.media.length > 0 || botMsg.buttons.length > 0 || botMsg.cards.length > 0 || !this.caps[Capabilities.SIMPLEREST_IGNORE_EMPTY]) {\n result.push(botMsg)\n }\n }\n }\n }\n\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 return result\n }\n\n _doRequest (msg, isFromUser, updateContext) {\n return this._buildRequest(msg)\n .then((requestOptions) => new Promise((resolve, reject) => {\n debug(`constructed requestOptions ${JSON.stringify(requestOptions, null, 2)}`)\n msg.sourceData = msg.sourceData || {}\n msg.sourceData.requestOptions = requestOptions\n\n this.waitProcessQueue = []\n\n request(requestOptions, async (err, response, body) => {\n if (err) {\n return reject(new Error(`rest request failed: ${err.message}`))\n } else {\n if (response.statusCode >= 400) {\n debug(`got error response: ${response.statusCode}/${response.statusMessage}`)\n if (debug.enabled && body) {\n debug(botiumUtils.shortenJsonString(body))\n }\n if (body) {\n const jsonBody = botiumUtils.toJsonWeak(body)\n const errKey = Object.keys(jsonBody).find(k => k.startsWith('err') || k.startsWith('fail'))\n if (errKey) {\n return reject(new BotiumError(`got error response: ${response.statusCode}/${response.statusMessage} - ${jsonBody[errKey]}`, {\n message: botiumUtils.shortenJsonString(body)\n }))\n }\n }\n return reject(new Error(`got error response: ${response.statusCode}/${response.statusMessage}`))\n }\n\n if (body) {\n debug(`got response code: ${response.statusCode}, body: ${botiumUtils.shortenJsonString(body)}, headers: ${botiumUtils.shortenJsonString(response.headers)}`)\n this._storeCookiesFromResponse(response)\n try {\n body = await this._parseResponseBody(body)\n } catch (err) {\n debug(`ignoring not JSON formatted response body: ${err.message}`)\n resolve(this)\n this._emptyWaitProcessQueue()\n return\n }\n\n if (body) {\n this._processBodyAsync(body, response.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 } else {\n debug(`got response code: ${response.statusCode}, empty body`)\n resolve(this)\n this._emptyWaitProcessQueue()\n }\n }\n })\n }))\n }\n\n async _buildRequest (msg) {\n this.view.msg = Object.assign({}, msg)\n\n const nonEncodedMessage = this.view.msg.messageText\n\n this.view.msg.messageText = nonEncodedMessage && encodeURIComponent(nonEncodedMessage)\n\n if (this.caps[Capabilities.SIMPLEREST_STEP_ID_TEMPLATE]) {\n this.view.botium.stepId = this._getMustachedCap(Capabilities.SIMPLEREST_STEP_ID_TEMPLATE, false)\n } else {\n this.view.botium.stepId = uuidv4()\n }\n\n const uri = this._getMustachedCap(Capabilities.SIMPLEREST_URL, false)\n const timeout = this._getCapValue(Capabilities.SIMPLEREST_TIMEOUT)\n\n const requestOptions = {\n uri,\n method: this._getCapValue(Capabilities.SIMPLEREST_VERB) || this._getCapValue(Capabilities.SIMPLEREST_METHOD),\n followAllRedirects: true,\n timeout\n }\n\n if (this.caps[Capabilities.SIMPLEREST_HEADERS_TEMPLATE]) {\n this.view.msg.messageText = nonEncodedMessage\n try {\n requestOptions.headers = this._getMustachedCap(Capabilities.SIMPLEREST_HEADERS_TEMPLATE, true)\n } catch (err) {\n throw new Error(`composing headers from SIMPLEREST_HEADERS_TEMPLATE failed (${err.message})`)\n }\n }\n if (this.caps[Capabilities.SIMPLEREST_BODY_TEMPLATE]) {\n const bodyRaw = this._getCapValue(Capabilities.SIMPLEREST_BODY_RAW)\n if (bodyRaw) {\n this.view.msg.messageText = nonEncodedMessage\n } else {\n this.view.msg.messageText = nonEncodedMessage && escapeJSONString(nonEncodedMessage)\n }\n try {\n requestOptions.body = this._getMustachedCap(Capabilities.SIMPLEREST_BODY_TEMPLATE, !bodyRaw)\n requestOptions.json = !bodyRaw\n 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 } 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\n return requestOptions\n }\n\n async _waitForUrlResponse (pingConfig, retries) {\n const timeout = ms => new Promise(resolve => setTimeout(resolve, ms))\n\n let tries = 0\n\n while (true) {\n debug(`_waitForUrlResponse checking url ${pingConfig.uri} before proceed`)\n if (tries > retries) {\n throw new Error(`Failed to ping bot after ${retries} retries`)\n }\n tries++\n const { err, response, body } = await this.bottleneck(() => new Promise((resolve) => {\n request(pingConfig, (err, response, body) => {\n resolve({ err, response, body })\n })\n }))\n if (err) {\n debug(`_waitForUrlResponse error on url check ${pingConfig.uri}: ${err}`)\n if (tries <= retries) {\n await timeout(pingConfig.timeout)\n }\n } else if (response.statusCode >= 400) {\n debug(`_waitForUrlResponse on url check ${pingConfig.uri} got error response: ${response.statusCode}/${response.statusMessage}`)\n if (debug.enabled && body) {\n debug(botiumUtils.shortenJsonString(body))\n }\n if (tries <= retries) {\n await timeout(pingConfig.timeout)\n }\n } else {\n debug(`_waitForUrlResponse success on url check ${pingConfig.uri}: ${response.statusCode}/${response.statusMessage}`)\n this._storeCookiesFromResponse(response)\n if (debug.enabled && body) {\n debug(`body: ${botiumUtils.shortenJsonString(body)}, headers: ${botiumUtils.shortenJsonString(response.headers)}`)\n }\n return { body, headers: response.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 followAllRedirects: true,\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 } catch (err) {\n debug(`_runPolling: composing body from SIMPLEREST_POLL_BODY failed (${err.message})`)\n return\n }\n }\n this._addRequestOptions(pollConfig)\n\n try {\n await executeHook(this.caps, this.pollRequestHook, Object.assign({ requestOptions: pollConfig }, this.view))\n } catch (err) {\n debug(`_runPolling: exeucting request hook failed - (${err.message})`)\n return\n }\n this._addRequestCookies(pollConfig)\n\n request(pollConfig, async (err, response, body) => {\n if (err) {\n debug(`_runPolling: rest request failed: ${err.message}, request: ${JSON.stringify(pollConfig)}`)\n } else {\n if (response.statusCode >= 400) {\n debug(`_runPolling: got error response: ${response.statusCode}/${response.statusMessage}, request: ${JSON.stringify(pollConfig)}`)\n if (debug.enabled && body) {\n debug(botiumUtils.shortenJsonString(body))\n }\n } else if (body) {\n debug(`_runPolling: got response code: ${response.statusCode}, body: ${botiumUtils.shortenJsonString(body)}, headers: ${botiumUtils.shortenJsonString(response.headers)}`)\n this._storeCookiesFromResponse(response)\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, response.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: ${response.statusCode}, empty body`)\n }\n }\n })\n }\n }\n\n async _startPolling () {\n if (this.caps[Capabilities.SIMPLEREST_POLL_URL]) {\n this.pollInterval = setInterval(this._runPolling.bind(this), this.caps[Capabilities.SIMPLEREST_POLL_INTERVAL])\n debug(`Started HTTP polling for inbound messages on ${this.caps[Capabilities.SIMPLEREST_POLL_URL]}, interval: ${this.caps[Capabilities.SIMPLEREST_POLL_INTERVAL]}.`)\n }\n }\n\n async _stopPolling () {\n if (this.pollInterval) {\n clearInterval(this.pollInterval)\n this.pollInterval = null\n debug(`Stopped HTTP polling for inbound messages on ${this.caps[Capabilities.SIMPLEREST_POLL_URL]}.`)\n }\n }\n\n async _makeCall (capPrefix) {\n const uri = this._getMustachedCap(`${capPrefix}_URL`, false)\n const verb = this._getCapValue(`${capPrefix}_VERB`)\n const timeout = this._getCapValue(`${capPrefix}_TIMEOUT`) || this._getCapValue(Capabilities.SIMPLEREST_TIMEOUT)\n const httpConfig = {\n method: verb,\n uri,\n followAllRedirects: true,\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 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 httpConfig.strictSSL = !!this.caps[Capabilities.SIMPLEREST_STRICT_SSL]\n if (this.caps[Capabilities.SIMPLEREST_PROXY_URL]) {\n httpConfig.proxy = this.caps[Capabilities.SIMPLEREST_PROXY_URL]\n }\n if (this.caps[Capabilities.SIMPLEREST_EXTRA_OPTIONS]) {\n _.merge(httpConfig, this.caps[Capabilities.SIMPLEREST_EXTRA_OPTIONS])\n }\n }\n\n _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 requestOptions.headers.Cookie = requestOptions.headers.Cookie ? `${requestOptions.headers.Cookie}; ${this.cookies[url.host]}` : this.cookies[url.host]\n }\n\n _storeCookiesFromResponse (response) {\n if (!this.caps[Capabilities.SIMPLEREST_COOKIE_REPLICATION] || !response) {\n return\n }\n const responseCookies = response.headers['set-cookie']\n if (!responseCookies) {\n return\n }\n const host = _.get(response, 'request.uri.host')\n let cookie\n responseCookies.forEach(cookieString => {\n cookie = cookie ? `${cookie}; ${cookieString}` : cookieString\n })\n\n if (cookie) {\n this.cookies[host] = cookie\n }\n }\n}\n","const path = require('path')\nconst fs = require('fs')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-connector-PluginConnectorContainer-helper')\n\nconst SimpleRestContainer = require('./SimpleRestContainer')\nconst Capabilities = require('../../Capabilities')\nconst { BotiumError } = require('../../scripting/BotiumError')\n\nconst pluginResolver = (containermode) => {\n if (containermode === 'simplerest') {\n return SimpleRestContainer\n }\n}\n\nconst getModuleVersionSafe = (required) => {\n try {\n const pckg = require(required + '/package.json')\n if (pckg.version === undefined) {\n return 'Not set'\n } else {\n return pckg.version\n }\n } catch (e) {\n if (e.code !== 'MODULE_NOT_FOUND') {\n return 'Unknown error while determining version'\n }\n return 'Unknown version'\n }\n}\n\nconst loadConnectorModule = (PluginClass, args) => {\n try {\n return new PluginClass(args)\n } catch (err) {\n }\n if (_.isFunction(PluginClass)) {\n const result = PluginClass(args)\n if (result && result.UserSays) {\n return result\n } else {\n return {\n UserSays: (msg) => {\n const response = PluginClass(msg, args)\n if (response && args.queueBotSays) {\n if (_.isString(response)) {\n setTimeout(() => args.queueBotSays({ messageText: response }), 0)\n } else {\n setTimeout(() => args.queueBotSays(response), 0)\n }\n }\n }\n }\n }\n } else {\n throw new Error('Botium Plugin is neither a class nor a function')\n }\n}\n\nconst tryLoadPlugin = (containermode, modulepath, args) => {\n const pluginLoaderSpec = modulepath || containermode\n const _checkUnsafe = (caps, mode, cause) => {\n if (!caps[Capabilities.SECURITY_ALLOW_UNSAFE]) {\n throw new BotiumError(\n `Security Error. Using unsafe connector mode \"${mode}\" is not allowed`,\n {\n type: 'security',\n subtype: 'allow unsafe',\n source: 'src/containers/plugins/index.js',\n cause: {\n SECURITY_ALLOW_UNSAFE: caps[Capabilities.SECURITY_ALLOW_UNSAFE],\n mode,\n ...cause\n }\n }\n )\n }\n }\n\n if (pluginResolver(pluginLoaderSpec)) {\n const pluginInstance = new (pluginResolver(pluginLoaderSpec))(args)\n debug('Botium plugin loaded from internal plugin resolver')\n return pluginInstance\n }\n if (_.isFunction(pluginLoaderSpec)) {\n const pluginInstance = pluginLoaderSpec(args)\n debug('Botium plugin loaded from function call')\n return pluginInstance\n }\n const loadErr = []\n\n if (_.isString(pluginLoaderSpec)) {\n const tryLoadFile = path.resolve(process.cwd(), pluginLoaderSpec)\n if (fs.existsSync(tryLoadFile)) {\n _checkUnsafe(args.caps, 'Using work dir', { modulepath, containermode })\n try {\n let plugin = require(tryLoadFile)\n if (plugin.default) {\n plugin = plugin.default\n }\n if (!plugin.PluginVersion || !plugin.PluginClass) {\n loadErr.push(`Invalid Botium plugin loaded from ${tryLoadFile}, expected PluginVersion, PluginClass fields`)\n } else {\n const pluginInstance = loadConnectorModule(plugin.PluginClass, args)\n debug(`Botium plugin loaded from ${tryLoadFile}`)\n return pluginInstance\n }\n } catch (err) {\n loadErr.push(`Loading Botium plugin from ${tryLoadFile} failed - ${err.message}`)\n }\n }\n\n try {\n let plugin = require(pluginLoaderSpec)\n if (plugin.default) {\n plugin = plugin.default\n }\n if (!plugin.PluginVersion || !plugin.PluginClass) {\n loadErr.push(`Invalid Botium plugin loaded from ${pluginLoaderSpec}, expected PluginVersion, PluginClass fields`)\n } else {\n const pluginInstance = loadConnectorModule(plugin.PluginClass, args)\n debug(`Botium plugin loaded from ${pluginLoaderSpec}. Plugin version is ${getModuleVersionSafe(pluginLoaderSpec)}`)\n return pluginInstance\n }\n } catch (err) {\n loadErr.push(`Loading Botium plugin from ${pluginLoaderSpec} failed - ${err.message}`)\n }\n\n const tryLoadPackage = `botium-connector-${pluginLoaderSpec}`\n try {\n let plugin = require(tryLoadPackage)\n if (plugin.default) {\n plugin = plugin.default\n }\n if (!plugin.PluginVersion || !plugin.PluginClass) {\n loadErr.push(`Invalid Botium plugin ${tryLoadPackage}, expected PluginVersion, PluginClass fields`)\n } else {\n const pluginInstance = loadConnectorModule(plugin.PluginClass, args)\n debug(`Botium plugin ${tryLoadPackage} loaded. Plugin version is ${getModuleVersionSafe(tryLoadPackage)}`)\n return pluginInstance\n }\n } catch (err) {\n loadErr.push(`Loading Botium plugin ${tryLoadPackage} failed, try \"npm install ${tryLoadPackage}\" - ${err.message}`)\n }\n }\n throw new Error(`Loading Botium Plugin failed.\\r\\n${loadErr.join('\\r\\n')}`)\n}\n\nmodule.exports = {\n pluginResolver,\n getModuleVersionSafe,\n tryLoadPlugin\n}\n","const util = require('util')\nconst promiseRetry = require('promise-retry')\nconst debug = require('debug')('botium-connector-PluginConnectorContainer')\n\nconst Events = require('../Events')\nconst Capabilities = require('../Capabilities')\nconst BaseContainer = require('./BaseContainer')\nconst { tryLoadPlugin } = require('./plugins/index')\nconst RetryHelper = require('../helpers/RetryHelper')\n\nmodule.exports = class PluginConnectorContainer extends BaseContainer {\n async Validate () {\n await super.Validate()\n this.pluginInstance = tryLoadPlugin(\n this.caps[Capabilities.CONTAINERMODE],\n this.caps[Capabilities.PLUGINMODULEPATH],\n {\n container: this,\n queueBotSays: (msg) => this._QueueBotSays(msg),\n bottleneck: this.bottleneck,\n eventEmitter: this.eventEmitter,\n caps: this.caps,\n sources: this.sources,\n envs: this.envs\n })\n if (!this.pluginInstance) {\n throw new Error('Loading Botium plugin failed')\n }\n if (!this.pluginInstance.UserSays) {\n throw new Error('Invalid Botium plugin, expected UserSays function')\n }\n if (this.pluginInstance.Validate) {\n await this.pluginInstance.Validate()\n }\n this.retryHelperBuild = new RetryHelper(this.caps, 'BUILD')\n this.retryHelperStart = new RetryHelper(this.caps, 'START')\n this.retryHelperUserSays = new RetryHelper(this.caps, 'USERSAYS')\n this.retryHelperStop = new RetryHelper(this.caps, 'STOP')\n this.retryHelperClean = new RetryHelper(this.caps, 'CLEAN')\n }\n\n Build () {\n try {\n return super.Build().then(() => promiseRetry((retry, number) => {\n return (this.pluginInstance.Build ? (this.pluginInstance.Build() || Promise.resolve()) : Promise.resolve())\n .catch((err) => {\n if (this.retryHelperBuild.shouldRetry(err)) {\n debug(`Build trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, this.retryHelperBuild.retrySettings))\n .then(() => this)\n } catch (err) {\n return Promise.reject(new Error(`Build - Botium plugin failed: ${util.inspect(err)}`))\n }\n }\n\n Start () {\n this.eventEmitter.emit(Events.CONTAINER_STARTING, this)\n\n try {\n return super.Start().then(() => promiseRetry((retry, number) => {\n return (this.pluginInstance.Start ? (this.pluginInstance.Start() || Promise.resolve()) : Promise.resolve())\n .catch((err) => {\n if (this.retryHelperStart.shouldRetry(err)) {\n debug(`Start trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, this.retryHelperStart.retrySettings))\n .then((context) => {\n this.eventEmitter.emit(Events.CONTAINER_STARTED, this, context)\n return this\n }).catch((err) => {\n this.eventEmitter.emit(Events.CONTAINER_START_ERROR, this, err)\n throw err\n })\n } catch (err) {\n this.eventEmitter.emit(Events.CONTAINER_START_ERROR, this, err)\n return Promise.reject(new Error(`Start - Botium plugin failed: ${util.inspect(err)}`))\n }\n }\n\n UserSaysImpl (mockMsg) {\n try {\n return promiseRetry((retry, number) => {\n return (this.pluginInstance.UserSays(mockMsg) || Promise.resolve())\n .catch((err) => {\n if (this.retryHelperUserSays.shouldRetry(err)) {\n debug(`UserSays trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, this.retryHelperUserSays.retrySettings)\n .then(() => {\n this.eventEmitter.emit(Events.MESSAGE_SENTTOBOT, this, mockMsg)\n return this\n })\n } catch (err) {\n return Promise.reject(new Error(`UserSays - Botium plugin failed: ${util.inspect(err)}`))\n }\n }\n\n Stop () {\n this.eventEmitter.emit(Events.CONTAINER_STOPPING, this)\n\n try {\n return super.Stop().then(() => promiseRetry((retry, number) => {\n return (this.pluginInstance.Stop ? (this.pluginInstance.Stop() || Promise.resolve()) : Promise.resolve())\n .catch((err) => {\n if (this.retryHelperStop.shouldRetry(err)) {\n debug(`Stop trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, this.retryHelperStop.retrySettings))\n .then((context) => {\n this.eventEmitter.emit(Events.CONTAINER_STOPPED, this, context)\n return this\n }).catch((err) => {\n this.eventEmitter.emit(Events.CONTAINER_STOP_ERROR, this, err)\n throw err\n })\n } catch (err) {\n this.eventEmitter.emit(Events.CONTAINER_STOP_ERROR, this, err)\n return Promise.reject(new Error(`Stop - Botium plugin failed: ${util.inspect(err)}`))\n }\n }\n\n Clean () {\n this.eventEmitter.emit(Events.CONTAINER_CLEANING, this)\n try {\n return promiseRetry((retry, number) => {\n return (this.pluginInstance.Clean ? (this.pluginInstance.Clean() || Promise.resolve()) : Promise.resolve())\n .catch((err) => {\n if (this.retryHelperClean.shouldRetry(err)) {\n debug(`Clean trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, this.retryHelperClean.retrySettings)\n .then(() => super.Clean()).then(() => {\n this.eventEmitter.emit(Events.CONTAINER_CLEANED, this)\n return this\n }).catch((err) => {\n this.eventEmitter.emit(Events.CONTAINER_CLEAN_ERROR, this, err)\n throw err\n })\n } catch (err) {\n this.eventEmitter.emit(Events.CONTAINER_CLEAN_ERROR, this, err)\n return Promise.reject(new Error(`Clean - Botium plugin failed: ${util.inspect(err)}`))\n }\n }\n}\n","const util = require('util')\nconst fs = require('fs')\nconst path = require('path')\nconst async = require('async')\nconst { rimraf } = require('rimraf')\nconst mkdirp = require('mkdirp')\nconst sanitize = require('sanitize-filename')\nconst moment = require('moment')\nconst randomize = require('randomatic')\nconst _ = require('lodash')\nconst { boolean } = require('boolean')\nconst EventEmitter = require('events')\nconst debug = require('debug')('botium-core-BotDriver')\n\nconst { version } = require('../package.json')\n\nconst Defaults = require('./Defaults')\nconst Capabilities = require('./Capabilities')\nconst Source = require('./Source')\nconst Fluent = require('./Fluent')\nconst Events = require('./Events')\nconst ScriptingProvider = require('./scripting/ScriptingProvider')\n\nmodule.exports = class BotDriver {\n constructor (caps = {}, sources = {}, envs = {}) {\n this.eventEmitter = new EventEmitter()\n\n this.caps = _.cloneDeep(Defaults.Capabilities)\n this.sources = _.cloneDeep(Defaults.Sources)\n this.envs = _.cloneDeep(Defaults.Envs)\n\n this._fetchedConfigFiles = []\n this._fetchConfigFromFiles([\n './botium.json', process.env.NODE_ENV && `./botium.${process.env.NODE_ENV}.json`,\n './botium.local.json', process.env.NODE_ENV && `./botium.${process.env.NODE_ENV}.local.json`])\n\n const botiumConfigEnv = process.env.BOTIUM_CONFIG\n if (botiumConfigEnv) {\n const checkDir = path.dirname(botiumConfigEnv)\n const checkFileBase = path.basename(botiumConfigEnv, '.json')\n if (!this._fetchConfigFromFiles([\n botiumConfigEnv, process.env.NODE_ENV && path.join(checkDir, `${checkFileBase}.${process.env.NODE_ENV}.json`),\n path.join(checkDir, `${checkFileBase}.local.json`), process.env.NODE_ENV && path.join(checkDir, `${checkFileBase}.${process.env.NODE_ENV}.local.json`)\n ])) {\n throw new Error(`FAILED: Botium configuration file ${botiumConfigEnv} not available`)\n }\n }\n debug(`Loaded Botium configuration files ${this._fetchedConfigFiles.join(',')}`)\n\n const sourcesToTest = Object.keys(Source)\n\n Object.keys(process.env).filter(e => e.startsWith('BOTIUM_')).forEach((element) => {\n const elementToTest = element.replace(/^BOTIUM_/, '')\n if (sourcesToTest.includes(elementToTest)) {\n this._mergeCaps(this.sources, { [elementToTest]: process.env[element] })\n } else {\n this._mergeCaps(this.caps, { [elementToTest]: process.env[element] })\n }\n if (element.startsWith('BOTIUM_ENV_')) {\n const envName = element.replace(/^BOTIUM_ENV_/, '')\n this.envs[envName] = process.env[element]\n }\n })\n\n if (caps) this._mergeCaps(this.caps, caps)\n if (sources) this._mergeCaps(this.sources, sources)\n if (envs) this.envs = _.merge(this.envs, envs)\n }\n\n on (event, listener) {\n this.eventEmitter.on(event, listener)\n return this\n }\n\n setCapabilities (caps) {\n this._mergeCaps(this.caps, caps)\n return this\n }\n\n setCapability (cap, value) {\n this._mergeCaps(this.caps, { [cap]: value })\n return this\n }\n\n setSources (sources) {\n this._mergeCaps(this.sources, sources)\n return this\n }\n\n setSource (source, value) {\n this._mergeCaps(this.sources, { [source]: value })\n return this\n }\n\n setEnvs (envs) {\n this.envs = _.merge(this.envs, envs)\n return this\n }\n\n setEnv (name, value) {\n this.envs[name] = value\n return this\n }\n\n BuildFluent () {\n this.Fluent = new Fluent(this)\n return this.Fluent\n }\n\n Build () {\n debug(`Build - Botium Core Version: ${version}`)\n debug(`Build - Capabilites: ${JSON.stringify(_.pickBy(this.caps, (value, key) => Defaults.Capabilities[key] !== value), null, 2)}`)\n debug(`Build - Sources: ${JSON.stringify(_.pickBy(this.sources, (value, key) => Defaults.Sources[key] !== value), null, 2)}`)\n debug(`Build - Envs: ${JSON.stringify(_.pickBy(this.envs, (value, key) => Defaults.Envs[key] !== value), null, 2)}`)\n this.eventEmitter.emit(Events.CONTAINER_BUILDING)\n\n return new Promise((resolve, reject) => {\n let 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(caps[capKey])) {\n caps[capKey] = caps[capKey].toString()\n }\n } catch (err) {\n caps[capKey] = newCaps[capKey]\n }\n } else {\n caps[capKey] = newCaps[capKey]\n }\n return\n }\n\n if (_.isArray(caps[capKey])) {\n let newCapArray = newCaps[capKey]\n if (!_.isArray(newCapArray)) {\n try {\n newCapArray = JSON.parse(newCapArray)\n } catch (err) {\n debug(`Expected JSON Array in capability ${capKey}, JSON parse failed (${err}). Capability will be overwritten with maybe unexpected side effects.`)\n }\n }\n if (_.isArray(newCapArray)) {\n newCapArray.forEach(capElement => {\n const mergeKey = this._findKeyProperty(capElement)\n if (mergeKey) {\n const oldElement = caps[capKey].find(oldElement => oldElement[mergeKey] && oldElement[mergeKey] === capElement[mergeKey])\n if (oldElement) {\n _.merge(oldElement, capElement)\n return\n }\n caps[capKey].push(capElement)\n } else {\n if (caps[capKey].indexOf(capElement) < 0) {\n caps[capKey].push(capElement)\n }\n }\n })\n return\n }\n }\n if (!_.isArray(caps[capKey]) && _.isObject(caps[capKey])) {\n let newCapObject = newCaps[capKey]\n if (!_.isObject(newCapObject)) {\n try {\n newCapObject = JSON.parse(newCapObject)\n } catch (err) {\n debug(`Expected JSON Object in capability ${capKey}, JSON parse failed (${err}). Capability will be overwritten with maybe unexpected side effects.`)\n }\n }\n if (_.isObject(newCapObject)) {\n _.merge(caps[capKey], newCapObject)\n return\n }\n }\n\n if (_.isBoolean(caps[capKey])) {\n if (!_.isBoolean(newCaps[capKey])) {\n caps[capKey] = boolean(newCaps[capKey])\n return\n }\n }\n\n caps[capKey] = newCaps[capKey]\n })\n }\n\n _validate () {\n return new Promise((resolve, reject) => {\n try {\n if (!this.caps[Capabilities.PROJECTNAME]) {\n throw new Error(`Capability property ${Capabilities.PROJECTNAME} not set`)\n }\n if (!this.caps[Capabilities.TEMPDIR]) {\n throw new Error(`Capability property ${Capabilities.TEMPDIR} not set`)\n }\n if (!this.caps[Capabilities.CONTAINERMODE] && !this.caps[Capabilities.BOTIUMGRIDURL]) {\n throw new Error(`Capability '${Capabilities.CONTAINERMODE}' or '${Capabilities.BOTIUMGRIDURL}' missing`)\n }\n\n 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 _ = require('lodash')\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","CLEANUPTEMPDIR","WAITFORBOTTIMEOUT","CONTAINERMODE","PLUGINMODULEPATH","SIMULATE_WRITING_SPEED","BOTIUMGRIDURL","BOTIUMAPITOKEN","BOTIUMGRIDSLOT","SIMPLEREST_PING_URL","SIMPLEREST_PING_VERB","SIMPLEREST_PING_BODY","SIMPLEREST_PING_BODY_RAW","SIMPLEREST_PING_HEADERS","SIMPLEREST_PING_REQUEST_HOOK","SIMPLEREST_PING_RETRIES","SIMPLEREST_PING_TIMEOUT","SIMPLEREST_PING_UPDATE_CONTEXT","SIMPLEREST_PING_PROCESS_RESPONSE","SIMPLEREST_START_URL","SIMPLEREST_START_VERB","SIMPLEREST_START_BODY","SIMPLEREST_START_BODY_RAW","SIMPLEREST_START_HEADERS","SIMPLEREST_START_REQUEST_HOOK","SIMPLEREST_START_RETRIES","SIMPLEREST_START_TIMEOUT","SIMPLEREST_START_UPDATE_CONTEXT","SIMPLEREST_START_PROCESS_RESPONSE","SIMPLEREST_STOP_URL","SIMPLEREST_STOP_VERB","SIMPLEREST_STOP_BODY","SIMPLEREST_STOP_BODY_RAW","SIMPLEREST_STOP_HEADERS","SIMPLEREST_STOP_REQUEST_HOOK","SIMPLEREST_STOP_RETRIES","SIMPLEREST_STOP_TIMEOUT","SIMPLEREST_INIT_CONTEXT","SIMPLEREST_INIT_TEXT","SIMPLEREST_INIT_PROCESS_RESPONSE","SIMPLEREST_PROXY_URL","SIMPLEREST_STRICT_SSL","SIMPLEREST_URL","SIMPLEREST_EXTRA_OPTIONS","SIMPLEREST_IGNORE_EMPTY","SIMPLEREST_TIMEOUT","SIMPLEREST_METHOD","SIMPLEREST_VERB","SIMPLEREST_HEADERS_TEMPLATE","SIMPLEREST_BODY_TEMPLATE","SIMPLEREST_BODY_RAW","SIMPLEREST_START_HOOK","SIMPLEREST_STOP_HOOK","SIMPLEREST_REQUEST_HOOK","SIMPLEREST_PARSER_HOOK","SIMPLEREST_POLL_URL","SIMPLEREST_POLL_VERB","SIMPLEREST_POLL_BODY","SIMPLEREST_POLL_BODY_RAW","SIMPLEREST_POLL_HEADERS","SIMPLEREST_POLL_REQUEST_HOOK","SIMPLEREST_POLL_INTERVAL","SIMPLEREST_POLL_TIMEOUT","SIMPLEREST_POLL_UPDATE_CONTEXT","SIMPLEREST_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","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_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","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","BotiumError","Error","message","context","supressChildCheck","_getChildErrorsFromContext","name","captureStackTrace","isAsserterError","errArr","isArray","hasNotAsserterError","findIndex","errDetail","type","errors","e","prettify","includeJson","lines","forEach","segments","source","subtype","cause","expected","not","JSON","stringify","actual","join","input","transcript","length","transcriptStep","jsonOutput","jsonErr","botiumErrorFromErr","botiumErrorFromList","flat","map","toString","children","error","childErrors","concat","result","BotiumError_1","LOGIC_HOOK_INCLUDE","LogicHookConsts","DEFAULT_ASSERTERS","className","DEFAULT_LOGIC_HOOKS","DEFAULT_USER_INPUTS","NodeVM","require$$0","debug","require$$1","require$$2","require$$3","asserter","Class","require","logicHook","userInput","LogicHookUtils_1","LogicHookUtils","buildScriptContext","caps","asserters","globalAsserters","logicHooks","globalLogicHooks","userInputs","_setDefaultAsserters","_setDefaultLogicHooks","_setDefaultUserInputs","_fetchAsserters","_fetchLogicHooks","_fetchUserInputs","lh","ui","ref","_loadClass","global","getGlobalAsserter","getGlobalLogicHook","src","args","hookType","find","_checkUnsafe","path","basename","__filename","packageName","CheckClass","isClass","PluginClass","isObject","isString","hookObject","keys","reduce","key","script","vm","eval","sandbox","run","loadErr","tryLoads","tryLoadPackageName","tryLoadAsserterByName","indexOf","substr","lastIndexOf","tryLoadFromSource","tryRequire","tryAsserterName","default","PluginAsserters","PluginLogicHooks","tryLoad","tryLoadFile","process","cwd","fs","existsSync","Constants","SCRIPTING_FORMAT_XSLX","SCRIPTING_FORMAT_TXT","SCRIPTING_FORMAT_YAML","SCRIPTING_FORMAT_JSON","SCRIPTING_FORMAT_CSV","SCRIPTING_FORMAT_MARKDOWN","SCRIPTING_TYPE_CONVO","SCRIPTING_TYPE_PCONVO","SCRIPTING_TYPE_UTTERANCES","SCRIPTING_TYPE_SCRIPTING_MEMORY","BotiumMockAttachment_1","BotiumMockAttachment","fromJson","mimeType","base64","href","BotiumMockMedia","mediaUri","altText","downloadUri","buffer","indent","sections","truncate","repeat","BotiumMockButton","payload","imageUri","BotiumMockCard","subtext","content","sourceData","image","buttons","a","media","forms","BotiumMockForm","cards","_prettifyLines","card","prettifySafe","entry","m","b","f","c","value","label","options","BotiumMockChoice","title","BotiumMockRichMessageTypes","BotiumMockAsserter","cloneDeep","BotiumMockUserInput","BotiumMockLogicHook","BotiumMockScripting","BotiumMockMessage_1","BotiumMockMessage","sender","optional","nlp","sourceAction","attachments","slice","Enums","E_SCRIPTING_MEMORY_COLUMN_MODE","VARNAMES","TESTCASENAMES","normalizeText","str","doCleanup","replace","split","s","trim","splitStringInNonEmptyLines","filter","quoteRegexpString","removeBuffers","obj","jsonString","isBuffer","toLowerCase","startsWith","parse","isUndefined","isNil","isNumber","v","flatString","_formatAppendArgs","_parseArgs","linesToConvoStep","eol","singleLineMode","validateSender","convoStep","textLinesRaw","textLines","textLinesAccepted","rawLine","logicLine","IsAsserterValid","IsUserInputValid","IsLogicHookValid","logichook","logicHookName","userinput","userInputName","pop","isJSON","optionalSet","Set","add","size","convoStepToObject","step","form","messageTextPrefix","cardTexts","mediaUr","validSenders","validateConvo","validationResult","i","conversation","has","nextStep","_decompileButton","buttonScript","convoStepToLines","l","linesToScriptingMemories","columnMode","guessScriptingMemoryColumnMode","scriptingMemories","caseNames","varNames","varValues","row","rawRow","caseIndex","caseName","values","agg","varName","varIndex","scriptingMemory","header","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","v1","uuidv1","require$$4","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","env","numberOfArguments","unsafe","$cap","$msg","jsonPath","mockMsg","root","jp","query","$func","code","SCRIPTING_FUNCTIONS","mapValues","funcOrStruct","func","rest","functionName","RESERVED_WORDS","apply","_apply","applyToArgs","arg","_longestFirst","allKeys","sort","keyRegexp","RegExp","regex","matches","match","substring","endsWith","extractVarNames","fill","util","inspect","varRegex","utterances","resolveUtterance","reExpected","varMatches","varMatchesRegexp","resultMatches","ScriptingMemory","ConvoHeader","projectname","testsessionname","order","description","ConvoStepAssert","ConvoStepLogicHook","ConvoStepUserInput","ConvoStep","stepTag","hasInteraction","u","Transcript","steps","convoBegin","convoEnd","prettifyActual","prettifiedSteps","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","currentStepIndex","meMsg","WORKAROUND_OVERWRITE_JSON_MESSAGE_TEXT","setUserInput","onMeStart","onMePrepare","coreMsg","omit","setTimeout","isNull","onMeEnd","failErr","previousWaitForBotSays","onBotStart","prepared","onBotPrepare","conditional","nextConvoStep","some","toUpperCase","conditionalLogicHook","nextConditionalLogicHook","skip","isErrorHandledWithOptionConvoStep","assertErrors","scriptingMemoryUpdate","response","_checkNormalizeText","tomatch","_resolveUtterancesToMatch","assertBotNotResponse","_compareObject","assertConvoStep","onBotEnd","transcriptStepErrs","undefined","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","errString","re","_normalize","botresponse","regexp","ignoreCase","test","wildcard","numWildcards","utteranceRe","wildcardExact","include","equals","threshold","p","includes","parseFloat","getMatchFunction","matchingMode","MatchFunctions","isStringJson","string","isJsonObject","json","stringIsJson","isJson","toJsonWeak","stringOrNot","optionalJson","body","shortenJsonString","escapeJSONString","character","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","allowUnsafe","resultWithRequire","hookData","esprima","parseScript","HookUtils","SCRIPT","htmlCommentRegexp","md","MarkdownIt","parsed","_extractFromRasaIntent","_extractFromRasaSentence","rasaSentence","matched","splitted","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","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","line","_compileConvo","_compileUtterances","_compileScriptingMemory","isPartial","currentLineIndex","currentLines","convoStepSender","convoStepChannel","convoStepLineIndex","parseMsg","pushPrev","isValidTagLine","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","globalAsserter","globalLogicHook","_createLogicHookPromises","_createAsserterPromises","asserterType","_createUserInputPromises","resolveEmptyIfUnknown","_resolveUtterance","found","werArgs","params","nottomatch","retryHelperAsserter","retryHelperLogicHook","retryHelperUserInput","_isValidAsserterType","mapNot","callAsserter","asserterSpec","notAsserterType","convoAsserter","isGlobal","allPromises","allSettled","results","rejected","status","reason","all","convoStepPromises","globalPromises","t","parts","uttArgs","_buildScriptContext","Match","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","logicHookUtils","GetCompiler","ReadBotiumFilesFromDirectory","filelist","globby","sync","gitignore","filelistGlobbed","remove","file","isSkip","convoDirStats","statSync","isFile","dirname","dirConvos","dirUtterances","dirPartialConvos","dirScriptingMemories","pconvos","ReadScript","dirScriptingMemory","ReadScriptFromBuffer","scriptingFormat","scriptingTypes","readFileSync","precompResponse","precompilers","fileConvo","filePartialConvo","_tagAndCleanupUtterances","utteranceFiles","fileUtt","ExpandScriptingMemoryToConvos","aggregatedNoNames","aggregatedNoVariables","aggregatedNoVariableNames","aggregatedDuplicates","duplicate","j","aggregatedIntersections","intersection","k1","k2","kInt","variablesToScriptingMemory","Map","get","convosExpandedAll","convosOriginalAll","convoVariables","convosToExpand","convosExpandedConvo","multipliers","convosExpandedVariable","convoToExpand","convoExpanded","_sortConvos","ExpandUtterancesToConvos","useNameAsIntent","incomprehensionIntents","incomprehensionUtts","incomprehensionUtt","expandedConvos","uttName","responseStep","ii","origUttName","justHeader","convoFilter","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","GitRepo_1","GitRepo","series","cloneDirectoryCreated","mkdirp","cloneReady","gitCmdOptions","ProcessUtils","workingDirectoryChanged","prepareReady","LocalRepo_1","LocalRepo","checkPath","stat","stats","isDirectory","isSymbolicLink","access","constants","W_OK","err1","Commands","BUILD_CONTAINER","START_CONTAINER","SENDTOBOT","STOP_CONTAINER","CLEAN_CONTAINER","QueueTimeoutError_1","QueueTimeoutError","Queue_1","Queue","queue","listeners","pushListener","empty","clear","shift","listener","timeoutRequest","timeout","timeoutCallback","registerPushListener","BaseContainer_1","BaseContainer","repo","envs","cleanupTasks","queues","bottleneck","onBuildHook","onStartHook","onUserSaysHook","onBotResponseHook","onStopHook","onCleanHook","limiter","Bottleneck","schedule","opts","maxConcurrent","minTime","_RunCustomHook","UserSaysImpl","isError","userSaysLimiter","hookExecuted","cleanupTasksDone","rimraffed","rimraf","_AssertOneCapabilityExists","checkCaps","arguments","_EmptyQueue","_QueueBotSays","request","GridContainer_1","GridContainer","buildPromise","_defer","baseComplete","socketComplete","socket","io","apiToken","startPromise","stopPromise","cleanPromise","disconnect","_ValidateCustomHook","capKey","deferred","InProcessContainer_1","InProcessContainer","InjectBotSays","buildRedisHandler","redisurl","topic","redis","Redis","event","publish","setupEndpoints","app","endpoint","middleware","processEvent","req","res","originalUrl","originalMethod","method","headers","sendResponse","startProxy","port","express","bodyParser","urlencoded","extended","proxy","listen","console","log","v4","uuidv4","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","_buildInbound","contextInitComplete","view","botium","stepId","fnc","mapKeys","descriptor","safeCaps","render","jsonify","_getMustachedCap","startHookComplete","inboundListenerComplete","_subscribeInbound","startPollingComplete","_startPolling","pingComplete","_makeCall","_parseResponseBody","initComplete","_doRequest","startCallComplete","_unsubscribeInbound","_stopPolling","_cleanInbound","isFromUser","updateContext","_processBodyAsyncImpl","waitProcessQueue","_emptyWaitProcessQueue","mergeMode","jsonPathsContext","jsonPathContext","contextNodes","_isAnyContextJsonPathMatch","capNameMatch","jsonPaths","jsonPathsMatch","ignoreMatch","skipMatch","_extractFrom","flattened","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","hasMessageText","jsonPathsTexts","responseTexts","messageTexts","messageTextIndex","botMsgRoot","beforeHookKeys","afterHookKeys","continueMatch","_buildRequest","requestOptions","statusCode","statusMessage","enabled","jsonBody","errKey","_storeCookiesFromResponse","nonEncodedMessage","encodeURIComponent","uri","_getCapValue","followAllRedirects","bodyRaw","ADD_QUERY_PARAM","appendToUri","ADD_FORM_PARAM","formKey","formValue","ADD_HEADER","headerKey","headerValue","_addRequestOptions","_addRequestCookies","_waitForUrlResponse","pingConfig","tries","changeBody","capValue","template","raw","_processInboundEvent","jsonPathValue","jsonPathsSelector","isSelected","jsonPathTemplate","hasResult","check","processingEvents","count","subscribe","unsubscribe","close","_runPolling","verb","pollConfig","pollInterval","setInterval","clearInterval","httpConfig","strictSSL","merge","url","URL","Cookie","host","responseCookies","cookie","cookieString","pluginResolver","containermode","getModuleVersionSafe","required","pckg","version","loadConnectorModule","tryLoadPlugin","modulepath","pluginLoaderSpec","mode","pluginInstance","plugin","PluginVersion","tryLoadPackage","plugins","PluginConnectorContainer_1","PluginConnectorContainer","retryHelperBuild","retryHelperStart","retryHelperUserSays","retryHelperStop","retryHelperClean","boolean","BotDriver_1","BotDriver","EventEmitter","_fetchedConfigFiles","_fetchConfigFromFiles","NODE_ENV","botiumConfigEnv","BOTIUM_CONFIG","checkDir","checkFileBase","sourcesToTest","element","elementToTest","_mergeCaps","envName","setCapabilities","setCapability","setSources","setSource","setEnvs","setEnv","BuildFluent","driverValidated","_validate","tempDirectoryCreated","sanitize","repoValidated","_getRepo","repoPrepared","containerValidated","_getContainer","containerBuilt","_loadConfigFile","configJson","files","fetchedFiles","absFilePath","_findKeyProperty","checkPropIdx","newCaps","isFinite","newCapArray","capElement","mergeKey","oldElement","newCapObject","isBoolean","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","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/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_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 // 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_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 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_TXT_EOL]: '\\n',\n [Capabilities.SCRIPTING_XLSX_EOL_WRITE]: '\\r\\n',\n [Capabilities.SCRIPTING_XLSX_HASHEADERS]: true,\n [Capabilities.SCRIPTING_CSV_SKIP_HEADER]: true,\n [Capabilities.SCRIPTING_CSV_QUOTE]: '\"',\n [Capabilities.SCRIPTING_CSV_ESCAPE]: '\"',\n [Capabilities.SCRIPTING_NORMALIZE_TEXT]: true,\n [Capabilities.SCRIPTING_ENABLE_MEMORY]: false,\n [Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]: false,\n [Capabilities.SCRIPTING_MATCHING_MODE]: 'wildcardIgnoreCase',\n [Capabilities.SCRIPTING_UTTEXPANSION_MODE]: 'all',\n [Capabilities.SCRIPTING_UTTEXPANSION_RANDOM_COUNT]: 1,\n [Capabilities.SCRIPTING_UTTEXPANSION_NAMING_MODE]: 'justLineTag',\n [Capabilities.SCRIPTING_UTTEXPANSION_NAMING_UTTERANCE_MAX]: '16',\n [Capabilities.SCRIPTING_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 ],\n DEFAULT_USER_INPUTS: [\n { name: 'BUTTON', className: 'ButtonInput' },\n { name: 'MEDIA', className: 'MediaInput' },\n { name: 'FORM', className: 'FormInput' }\n ]\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.globalAsserters = []\n this.logicHooks = {}\n this.globalLogicHooks = []\n this.userInputs = {}\n this.buildScriptContext = buildScriptContext\n this.caps = caps\n this._setDefaultAsserters()\n this._setDefaultLogicHooks()\n this._setDefaultUserInputs()\n this._fetchAsserters()\n this._fetchLogicHooks()\n this._fetchUserInputs()\n }\n\n _setDefaultAsserters () {\n DEFAULT_ASSERTERS.forEach((asserter) => {\n this.asserters[asserter.name] = new (asserter.Class)(this.buildScriptContext, this.caps)\n })\n }\n\n _setDefaultLogicHooks () {\n DEFAULT_LOGIC_HOOKS.forEach((lh) => {\n this.logicHooks[lh.name] = new (lh.Class)(this.buildScriptContext, this.caps)\n })\n }\n\n _setDefaultUserInputs () {\n DEFAULT_USER_INPUTS.forEach((ui) => {\n this.userInputs[ui.name] = new (ui.Class)(this.buildScriptContext, this.caps)\n })\n }\n\n _fetchAsserters () {\n this.caps[Capabilities.ASSERTERS]\n .forEach(asserter => {\n if (this.asserters[asserter.ref]) {\n debug(`${asserter.ref} asserter already exists, overwriting.`)\n }\n this.asserters[asserter.ref] = this._loadClass(asserter, 'asserter')\n if (asserter.global) {\n this.globalAsserters.push(asserter.ref)\n }\n })\n }\n\n _fetchLogicHooks () {\n this.caps[Capabilities.LOGIC_HOOKS]\n .forEach(logicHook => {\n if (this.logicHooks[logicHook.ref]) {\n debug(`${logicHook.ref} logic hook already exists, overwriting.`)\n }\n this.logicHooks[logicHook.ref] = this._loadClass(logicHook, 'logichook')\n if (logicHook.global) {\n this.globalLogicHooks.push(logicHook.ref)\n }\n })\n }\n\n _fetchUserInputs () {\n this.caps[Capabilities.USER_INPUTS]\n .forEach(userInput => {\n if (this.userInputs[userInput.ref]) {\n debug(`${userInput.ref} userinput already exists, overwriting.`)\n }\n this.userInputs[userInput.ref] = this._loadClass(userInput, 'userinput')\n })\n }\n\n getGlobalAsserter () {\n return this.globalAsserters\n .map(name => this.asserters[name])\n }\n\n getGlobalLogicHook () {\n return this.globalLogicHooks\n .map(name => this.logicHooks[name])\n }\n\n _loadClass ({ src, ref, args }, hookType) {\n if (hookType !== 'asserter' && hookType !== 'logichook' && hookType !== 'userinput') {\n throw Error(`Unknown hookType ${hookType}`)\n }\n\n // 1 gives possibility to use default asserter as global asserter\n if (hookType === 'asserter') {\n const asserter = DEFAULT_ASSERTERS.find(asserter => src === asserter.className || 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 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(`Logic Hook 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(`Logic Hook 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(`Logic Hook 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(`Logic Hook 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(`Logic Hook specification ${ref} ${hookType} from \"${src}\" invalid: ${err.message} `)\n }\n }\n }\n\n loadErr.forEach(debug)\n }\n throw new Error(`Logic Hook 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')\n\nconst normalizeText = (str, doCleanup) => {\n if (str && _.isArray(str)) {\n str = str.join(' ')\n } else if (str && !_.isString(str)) {\n if (str.toString) {\n str = str.toString()\n } else {\n str = `${str}`\n }\n }\n if (str && doCleanup) {\n // remove html tags\n str = str.replace(/<p[^>]*>/g, ' ')\n str = str.replace(/<\\/p>/g, ' ')\n str = str.replace(/<br[^>]*>/g, ' ')\n str = str.replace(/<[^>]*>/g, '')\n /* eslint-disable no-control-regex */\n // remove not printable characters\n str = str.replace(/[\\x00-\\x1F\\x7F]/g, ' ')\n /* eslint-enable no-control-regex */\n // replace html entities\n str = str\n .replace(/&amp;/g, '&')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&#39;/g, '\\'')\n .replace(/&quot;/g, '\"')\n // replace two spaces with one\n str = str.replace(/\\s+/g, ' ')\n\n str = str.split('\\n').map(s => s.trim()).join('\\n').trim()\n }\n return str\n}\n\nconst splitStringInNonEmptyLines = (str) => str ? str.split('\\n').map(s => s.trim()).filter(s => s.length > 0) : []\n\nconst quoteRegexpString = (str) => {\n return str.replace(/[-\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n}\n\nconst removeBuffers = obj => {\n const jsonString = JSON.stringify(obj, (key, value) => {\n if (_.isBuffer(value)) {\n return '(binary data)'\n } else if (value && value.type && value.type === 'Buffer') {\n return '(binary data)'\n } else if (key.toLowerCase() === 'base64') {\n return '(base64 data)'\n } else if (_.isString(value) && value.startsWith('data:')) {\n return '(base64 data url)'\n }\n return value\n })\n return JSON.parse(jsonString)\n}\n\nconst toString = (value) => {\n if (_.isUndefined(value) || _.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, 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 = textLines.join(eol).trim()\n }\n }\n } else {\n // no message is different from empty message\n convoStep.messageText = null\n }\n\n // Check if all element in convo step is optional or not optional\n const optionalSet = new Set()\n if (convoStep.messageText) {\n optionalSet.add(convoStep.optional)\n }\n for (const asserter of convoStep.asserters) {\n optionalSet.add(asserter.optional)\n }\n if (optionalSet.size > 1) {\n throw new Error(`Failed to parse conversation. All element in convo step has to be optional or not optional: ${JSON.stringify(lines)}`)\n }\n\n return convoStep\n}\n\nconst convoStepToObject = (step) => {\n const result = []\n if (step.sender === 'me') {\n for (const form of (step.forms || []).filter(form => form.value)) {\n result.push({\n userinput: 'FORM',\n args: [form.name, form.value]\n })\n }\n if (step.buttons && step.buttons.length > 0) {\n const userinput = {\n userinput: 'BUTTON',\n args: []\n }\n if (step.buttons[0].payload) {\n userinput.args.push(step.buttons[0].payload)\n if (step.buttons[0].text) {\n userinput.args.push(step.buttons[0].text)\n }\n } else {\n userinput.args.push(step.buttons[0].text)\n }\n result.push(userinput)\n } else if (step.media && step.media.length > 0) {\n result.push({\n userinput: 'MEDIA',\n args: [step.media[0].mediaUri]\n })\n } else if (step.messageText) {\n result.push(step.messageText)\n }\n for (const logicHook of step.logicHooks || []) {\n result.push({\n logichook: logicHook.name,\n args: logicHook.args || []\n })\n }\n } else {\n if (step.messageText) {\n let messageTextPrefix = ''\n if (step.optional) messageTextPrefix += '?'\n if (step.not) messageTextPrefix += '!'\n result.push(messageTextPrefix + step.messageText)\n }\n if (step.buttons && step.buttons.length > 0) {\n result.push({\n asserter: 'BUTTONS',\n args: step.buttons.map(b => flatString(b.text))\n })\n }\n if (step.media && step.media.length > 0) {\n result.push({\n asserter: 'MEDIA',\n args: step.media.map(m => { return m.buffer && m.buffer.startsWith('data:') ? 'data:' : m.mediaUri })\n })\n }\n if (step.cards && step.cards.length > 0) {\n step.cards.forEach(c => {\n let cardTexts = []\n if (c.text) cardTexts = cardTexts.concat(_.isArray(c.text) ? c.text : [c.text])\n if (c.subtext) cardTexts = cardTexts.concat(_.isArray(c.subtext) ? c.subtext : [c.subtext])\n if (c.content) cardTexts = cardTexts.concat(_.isArray(c.content) ? c.content : [c.content])\n if (cardTexts.length > 0) {\n result.push({\n asserter: 'CARDS',\n args: cardTexts.map(c => flatString(c))\n })\n }\n\n if (c.buttons && c.buttons.length > 0) {\n result.push({\n asserter: 'BUTTONS',\n args: c.buttons.map(b => b.text)\n })\n }\n if (c.image) {\n result.push({\n asserter: 'MEDIA',\n args: c.image.mediaUr,\n not: !!step.not\n })\n }\n })\n }\n for (const asserter of step.asserters || []) {\n result.push({\n asserter: asserter.name,\n args: asserter.args || [],\n optional: !!asserter.optional,\n not: !!asserter.not\n })\n }\n for (const logicHook of step.logicHooks || []) {\n result.push({\n logichook: logicHook.name,\n args: logicHook.args || []\n })\n }\n }\n return result\n}\n\nconst validSenders = ['begin', 'include', 'me', 'bot', 'end']\n\nconst validateSender = (sender) => {\n if (validSenders.indexOf(sender) >= 0) return true\n else return false\n}\n\nconst validateConvo = (convo) => {\n const validationResult = {\n errors: []\n }\n for (let i = 0; i < convo.conversation.length; i++) {\n const step = convo.conversation[i]\n if (step.sender === 'bot') {\n // Check if all element in convo step is optional or not optional\n const optionalSet = new Set()\n if (step.messageText) {\n optionalSet.add(step.optional)\n }\n if (step.asserters) {\n for (const asserter of step.asserters) {\n optionalSet.add(asserter.optional)\n }\n }\n if (optionalSet.size > 1) {\n validationResult.errors.push(new Error(`Step ${i + 1}: Failed to decompile conversation. Mixed optional flag is not allowed inside one step.`))\n }\n\n if (optionalSet.size === 1 && optionalSet.has(true)) {\n const nextStep = convo.conversation[i + 1]\n if (!nextStep || nextStep.sender !== 'bot') {\n validationResult.errors.push(new Error(`Step ${i + 1}: Optional bot convo step has to be followed by a bot convo step.`))\n }\n }\n }\n if (!validateSender(step.sender)) {\n validationResult.errors.push(new Error(`Step ${i + 1}: Sender #${step.sender} is invalid.`))\n }\n }\n return validationResult\n}\n\nconst _decompileButton = (b) => {\n let buttonScript = ''\n if (b.payload) {\n buttonScript += _.isObject(b.payload) ? JSON.stringify(b.payload) : flatString(b.payload)\n if (b.text) {\n buttonScript += `|${flatString(b.text)}`\n }\n } else {\n buttonScript += flatString(b.text)\n }\n return buttonScript\n}\n\nconst convoStepToLines = (step) => {\n const lines = []\n if (step.sender === 'me') {\n step.forms && step.forms.filter(form => form.value).forEach((form) => {\n lines.push(`FORM${_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 }\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.map(l => l.trim())\n}\n\nconst linesToScriptingMemories = (lines, columnMode = null) => {\n const guessScriptingMemoryColumnMode = (lines) => {\n if (lines && lines.length > 1) {\n if (lines[1].trim().startsWith('$')) return E_SCRIPTING_MEMORY_COLUMN_MODE.TESTCASENAMES\n }\n return E_SCRIPTING_MEMORY_COLUMN_MODE.VARNAMES\n }\n columnMode = columnMode || guessScriptingMemoryColumnMode(lines)\n\n const scriptingMemories = []\n\n if (columnMode === E_SCRIPTING_MEMORY_COLUMN_MODE.TESTCASENAMES) {\n const caseNames = lines[0].split('|').map((name) => name.trim()).slice(1)\n\n const varNames = []\n const varValues = []\n for (let row = 1; row < lines.length; row++) {\n if (!lines[row] || lines[row].length === 0) continue\n const rawRow = lines[row].split('|').map((name) => name.trim())\n varNames.push(rawRow[0])\n varValues.push(rawRow.slice(1))\n }\n for (let caseIndex = 0; caseIndex < caseNames.length; caseIndex++) {\n const caseName = caseNames[caseIndex]\n\n const values = varNames.reduce((agg, varName, varIndex) => {\n agg[varName] = varValues[varIndex][caseIndex] || null\n return agg\n }, {})\n const scriptingMemory = { header: { name: caseName }, values }\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}\n","const _ = require('lodash')\n\nconst BotiumError = class BotiumError extends Error {\n /**\n *\n * @param message\n * @param context A JSON with struct\n * {\n * type: 'some free text to identity the exception type',\n * source: 'source of the event',\n * ...\n */\n constructor (message, context, supressChildCheck) {\n super(message.message || message)\n\n if (!supressChildCheck && _getChildErrorsFromContext(context)) {\n throw Error('Create BotiumError with child errors using the fromList() method!')\n }\n // Saving class name in the property of our custom error as a shortcut.\n this.name = this.constructor.name\n\n // Capturing stack trace, excluding constructor call from it.\n Error.captureStackTrace(this, this.constructor)\n\n this.context = context || {}\n this.context.message = message.message || message\n }\n\n isAsserterError () {\n if (this.context) {\n const errArr = _.isArray(this.context) ? this.context : [this.context]\n const hasNotAsserterError = errArr.findIndex(errDetail => {\n if (errDetail.type === 'list') {\n if (errDetail.errors) {\n return errDetail.errors.findIndex(e => e.type !== 'asserter') >= 0\n } else {\n return true\n }\n } else {\n return errDetail.type !== 'asserter'\n }\n }) >= 0\n if (hasNotAsserterError) return false\n return true\n } else {\n return false\n }\n }\n\n prettify (includeJson) {\n const lines = []\n if (this.context) {\n const errArr = _.isArray(this.context) ? this.context : [this.context]\n errArr.forEach(errDetail => {\n lines.push('########################################')\n if (errDetail.type === 'asserter') {\n const segments = []\n segments.push(`ASSERTION FAILED in ${errDetail.source}${errDetail.subtype ? ` (${errDetail.subtype})` : ''}`)\n errDetail.cause && errDetail.cause.expected && !errDetail.cause.not && segments.push(` - Expected: ${JSON.stringify(errDetail.cause.expected)} `)\n errDetail.cause && errDetail.cause.expected && errDetail.cause.not && segments.push(` - NOT Expected: ${JSON.stringify(errDetail.cause.expected)} `)\n errDetail.cause && errDetail.cause.actual && segments.push(` - Actual: ${JSON.stringify(errDetail.cause.actual)}`)\n errDetail.cause && !errDetail.cause.actual && segments.push(' - Actual: empty')\n lines.push(segments.join(''))\n errDetail.input && errDetail.input.messageText && lines.push(`INPUT: ${errDetail.input.messageText}`)\n } else if (errDetail.message) {\n lines.push(`${errDetail.message}`)\n }\n if (errDetail.transcript && errDetail.transcript.length > 0) {\n lines.push('------------ TRANSCRIPT ----------------------------')\n errDetail.transcript.forEach(transcriptStep => {\n if (transcriptStep.actual) {\n lines.push(transcriptStep.actual.prettify())\n }\n })\n }\n if (includeJson) {\n lines.push('------------ JSON CONTENT ----------------------------')\n try {\n const jsonOutput = JSON.stringify(errDetail)\n lines.push(jsonOutput)\n } catch (jsonErr) {\n lines.push(`JSON Output not possible: ${jsonErr.message}`)\n }\n }\n })\n }\n if (lines.length > 0) {\n return lines.join('\\r\\n')\n } else {\n return null\n }\n }\n}\n\nconst _getChildErrorsFromContext = (context) => {\n if (context && context.errors && _.isArray(context.errors)) {\n return context.errors\n }\n return false\n}\n\nconst botiumErrorFromErr = (message, err) => {\n if (err instanceof BotiumError) {\n return new BotiumError(message, err.context, true)\n } else {\n return new BotiumError(message, { err }, true)\n }\n}\n\nconst botiumErrorFromList = (errors, { type = 'list', source = 'BotiumError', flat = true }) => {\n const message = errors.map(err => err.message || err.toString()).join(',\\n')\n let children = []\n\n for (const error of errors) {\n if (error instanceof BotiumError) {\n const childErrors = flat && _getChildErrorsFromContext(error.context)\n if (childErrors && childErrors.length) {\n children = children.concat(childErrors)\n } else if (error.context) {\n children.push(error.context)\n }\n } else {\n children.push(error)\n }\n }\n const result = new BotiumError(message, { errors: children, type, source }, true)\n return result\n}\n\nmodule.exports = {\n BotiumError,\n botiumErrorFromErr,\n botiumErrorFromList\n}\n","const 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 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 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 for (let i = 0; i < this.conversation.length; i++) {\n const convoStep = this.conversation[i]\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.SIMULATE_WRITING_SPEED && meMsg.messageText && meMsg.messageText.length) {\n setTimeout(() => resolve(), container.caps.SIMULATE_WRITING_SPEED * meMsg.messageText.length)\n } else {\n resolve()\n }\n })\n lastMeConvoStep = convoStep\n transcriptStep.botBegin = new Date()\n if (!_.isNull(meMsg.messageText) || meMsg.sourceData || (meMsg.userInputs && meMsg.userInputs.length) || (meMsg.logicHooks && meMsg.logicHooks.length)) {\n try {\n Object.assign(meMsg, { header: this.header, conversation: this.conversation, currentStepIndex, scriptingMemory })\n await container.UserSays(meMsg)\n } finally {\n delete meMsg.header\n delete meMsg.conversation\n delete meMsg.scriptingMemory\n }\n\n transcriptStep.botEnd = new Date()\n await this.scriptingEvents.onMeEnd({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep })\n continue\n } else {\n debug(`${this.header.name}/${convoStep.stepTag}: message not found in #me section, message not sent to container ${util.inspect(convoStep)}`)\n transcriptStep.botEnd = new Date()\n await this.scriptingEvents.onMeEnd({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep })\n continue\n }\n } catch (err) {\n transcriptStep.botEnd = new Date()\n\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: error sending to bot - ${err.message || err}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr)\n } catch (failErr) {\n }\n throw failErr\n }\n } else if (convoStep.sender === 'bot') {\n if (waitForBotSays) {\n botMsg = null\n } else {\n waitForBotSays = true\n }\n\n try {\n debug(`${this.header.name} wait for bot ${convoStep.channel || ''}`)\n await this.scriptingEvents.onBotStart({ convo: this, convoStep, container, scriptingMemory, transcript, transcriptStep })\n transcriptStep.botBegin = new Date()\n if (!botMsg) {\n botMsg = await container.WaitBotSays(convoStep.channel)\n }\n transcriptStep.botEnd = new Date()\n transcriptStep.actual = new BotiumMockMessage(botMsg)\n\n const coreMsg = _.omit(removeBuffers(botMsg), ['sourceData'])\n debug(`${this.header.name}: bot says (cleaned by binary and base64 data and sourceData) ${JSON.stringify(coreMsg, null, 2)}`)\n } catch (err) {\n transcriptStep.botEnd = new Date()\n\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: error waiting for bot - ${err.message}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n throw failErr\n }\n\n try {\n const prepared = await this.scriptingEvents.onBotPrepare({ convo: this, convoStep, container, scriptingMemory, botMsg, transcript, transcriptStep })\n if (prepared) {\n transcriptStep.actual = new BotiumMockMessage(botMsg)\n\n const coreMsg = _.omit(removeBuffers(botMsg), ['sourceData'])\n debug(`${this.header.name}: onBotPrepare (cleaned by binary and base64 data and sourceData) ${JSON.stringify(coreMsg, null, 2)}`)\n }\n } catch (err) {\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: onBotPrepare error - ${err.message || err}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n throw failErr\n }\n\n if (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 if (convoStep.optional && nextConvoStep && nextConvoStep.sender === 'bot') {\n waitForBotSays = false\n skipTranscriptStep = true\n return true\n }\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n assertErrors.push(err)\n return false\n } else {\n throw err\n }\n }\n const assertErrors = []\n const scriptingMemoryUpdate = {}\n if (convoStep.messageText) {\n const response = this._checkNormalizeText(container, botMsg.messageText)\n const messageText = this._checkNormalizeText(container, convoStep.messageText)\n ScriptingMemory.fill(container, scriptingMemoryUpdate, response, messageText, this.scriptingEvents)\n const tomatch = this._resolveUtterancesToMatch(container, Object.assign({}, scriptingMemoryUpdate, scriptingMemory), messageText, botMsg)\n if (convoStep.not) {\n try {\n this.scriptingEvents.assertBotNotResponse(response, tomatch, `${this.header.name}/${convoStep.stepTag}`, lastMeConvoStep)\n } catch (err) {\n if (isErrorHandledWithOptionConvoStep(err)) {\n continue\n }\n }\n } else {\n try {\n this.scriptingEvents.assertBotResponse(response, tomatch, `${this.header.name}/${convoStep.stepTag}`, lastMeConvoStep)\n } catch (err) {\n if (isErrorHandledWithOptionConvoStep(err)) {\n continue\n }\n }\n }\n } else if (convoStep.sourceData) {\n try {\n this._compareObject(container, scriptingMemory, convoStep, botMsg.sourceData, convoStep.sourceData, botMsg)\n } catch (err) {\n if (isErrorHandledWithOptionConvoStep(err)) {\n continue\n }\n }\n }\n Object.assign(scriptingMemory, scriptingMemoryUpdate)\n try {\n await this.scriptingEvents.assertConvoStep({ convo: this, convoStep, container, scriptingMemory, botMsg, transcript, transcriptStep })\n await this.scriptingEvents.onBotEnd({ convo: this, convoStep, container, scriptingMemory, botMsg, transcript, transcriptStep })\n } catch (err) {\n const nextConvoStep = this.conversation[i + 1]\n if (convoStep.optional && nextConvoStep && nextConvoStep.sender === 'bot') {\n waitForBotSays = false\n skipTranscriptStep = true\n continue\n }\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: assertion error - ${err.message || err}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS] && err instanceof BotiumError) {\n assertErrors.push(err)\n } else {\n throw failErr\n }\n }\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n if (assertErrors.length > 0) {\n throw botiumErrorFromList(assertErrors, {})\n }\n } else {\n if (!transcriptStep.stepEnd) {\n continue\n }\n }\n } else {\n const failErr = new BotiumError(`${this.header.name}/${convoStep.stepTag}: invalid sender - ${util.inspect(convoStep.sender)}`)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr)\n } catch (failErr) {\n }\n throw failErr\n }\n } catch (err) {\n if (lastMeConvoStep) {\n if (err instanceof BotiumError && err.context) {\n err.context.input = new ConvoStep(lastMeConvoStep)\n err.context.transcript = [...transcriptSteps, { ...transcriptStep }]\n } else {\n err.input = new ConvoStep(lastMeConvoStep)\n err.transcript = [...transcriptSteps, { ...transcriptStep }]\n }\n }\n transcriptStep.err = err\n if (err instanceof BotiumError && container.caps[Capabilities.SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS]) {\n if (!err.isAsserterError()) {\n throw err\n }\n } else {\n throw err\n }\n } finally {\n if (convoStep.sender !== 'begin' && convoStep.sender !== 'end' && !skipTranscriptStep) {\n transcriptStep.scriptingMemory = Object.assign({}, scriptingMemory)\n transcriptStep.stepEnd = new Date()\n transcriptSteps.push(transcriptStep)\n }\n }\n }\n } catch (err) {\n transcript.err = err\n } finally {\n transcript.steps = transcriptSteps.filter(s => s)\n transcript.scriptingMemory = scriptingMemory\n transcript.convoEnd = new Date()\n if (container.caps[Capabilities.SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS]) {\n const transcriptStepErrs = transcript.steps.filter(s => s.err).map(s => s.err)\n if (transcriptStepErrs && transcriptStepErrs.length > 0) {\n transcript.err = botiumErrorFromList([...transcriptStepErrs.filter(err => err !== transcript.err), transcript.err].filter(e => e), {})\n }\n }\n }\n }\n\n _compareObject (container, scriptingMemory, convoStep, result, expected, botMsg) {\n if (expected === null || expected === undefined) return\n\n if (_.isArray(expected)) {\n if (!_.isArray(result)) {\n throw new BotiumError(`${this.header.name}/${convoStep.stepTag}: bot response expected array, got \"${result}\"`)\n }\n if (expected.length !== result.length) {\n throw new BotiumError(`${this.header.name}/${convoStep.stepTag}: bot response expected array length ${expected.length}, got ${result.length}`)\n }\n for (let i = 0; i < expected.length; i++) {\n this._compareObject(container, scriptingMemory, convoStep, result[i], expected[i])\n }\n } else if (_.isObject(expected)) {\n _.forOwn(expected, (value, key) => {\n if (Object.prototype.hasOwnProperty.call(result, key)) {\n this._compareObject(container, scriptingMemory, convoStep, result[key], expected[key])\n } else {\n throw new BotiumError(`${this.header.name}/${convoStep.stepTag}: bot response \"${result}\" missing expected property: ${key}`)\n }\n })\n } else {\n ScriptingMemory.fill(container, scriptingMemory, result, expected, this.scriptingEvents)\n const response = this._checkNormalizeText(container, result)\n const tomatch = this._resolveUtterancesToMatch(container, scriptingMemory, expected, botMsg)\n this.scriptingEvents.assertBotResponse(response, tomatch, `${this.header.name}/${convoStep.stepTag}`)\n }\n }\n\n GetScriptingMemoryAllVariables (container) {\n const 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.SCRIPTING_FORCE_BOT_CONSUMED) {\n const queueLength = container._QueueLength()\n if (queueLength === 1) {\n throw new Error('There is an unread bot reply in queue')\n } else if (queueLength > 1) {\n throw new Error(`There are still ${queueLength} unread bot replies in queue`)\n }\n }\n }\n\n _resolveUtterancesToMatch (container, scriptingMemory, utterance, botMsg) {\n const utterances = this.scriptingEvents.resolveUtterance({ utterance })\n const normalizedUtterances = utterances.map(str => this._checkNormalizeText(container, str))\n const tomatch = normalizedUtterances.map(str => ScriptingMemory.apply(container, scriptingMemory, str, botMsg))\n return tomatch\n }\n\n _checkNormalizeText (container, str) {\n return normalizeText(str, !!container.caps[Capabilities.SCRIPTING_NORMALIZE_TEXT])\n }\n\n expandPartialConvos () {\n const _getIncludeLogicHookNames = (convoStep) => {\n if (!convoStep.logicHooks) {\n return []\n }\n\n const result = []\n convoStep.logicHooks.forEach((logicHook) => {\n if (logicHook.name === LOGIC_HOOK_INCLUDE) {\n if (logicHook.args.length !== 1) {\n throw Error('Wrong argument for include logic hook!')\n }\n result.push(logicHook)\n }\n })\n\n return result.map((hook) => hook.args[0])\n }\n\n const partialConvos = this.context.GetPartialConvos()\n\n const _getEffectiveConversationRecursive = (conversation, parentPConvos = [], result = [], ignoreBeginEnd = true) => {\n conversation.forEach((convoStep) => {\n let includeLogicHooks = []\n if (convoStep.sender === 'include') {\n if (convoStep.channel) {\n includeLogicHooks.push(convoStep.channel)\n }\n if (convoStep.messageText) {\n includeLogicHooks = includeLogicHooks.concat(splitStringInNonEmptyLines(convoStep.messageText))\n }\n } else {\n includeLogicHooks = _getIncludeLogicHookNames(convoStep)\n if (includeLogicHooks.length === 0 || convoStep.hasInteraction()) {\n if (!ignoreBeginEnd || (convoStep.sender !== 'begin' && convoStep.sender !== 'end')) {\n // dont put convo name for ConvoSteps on the root.\n const steptagPath = parentPConvos.length === 0 ? '' : parentPConvos.join('/') + '/'\n result.push(Object.assign(new ConvoStep(), convoStep, { stepTag: `${steptagPath}${convoStep.stepTag}` }))\n }\n }\n }\n\n includeLogicHooks.forEach((includeLogicHook) => {\n const alreadyThereAt = parentPConvos.indexOf(includeLogicHook)\n if (alreadyThereAt >= 0) {\n throw new BotiumError(`Partial convos are included circular. \"${includeLogicHook}\" is referenced by \"/${parentPConvos.slice(0, alreadyThereAt).join('/')}\" and by \"/${parentPConvos.join('/')}\" `)\n }\n if (!partialConvos || Object.keys(partialConvos).length === 0) {\n throw new BotiumError(`Cant find partial convo with name ${includeLogicHook} (There are no partial convos)`)\n }\n const partialConvo = partialConvos[includeLogicHook]\n if (!partialConvo) {\n throw new BotiumError(`Cant find partial convo with name ${includeLogicHook} (available partial convos: ${Object.keys(partialConvos).join(',')})`)\n }\n _getEffectiveConversationRecursive(partialConvo.conversation, [...parentPConvos, includeLogicHook], result, true)\n debug(`Partial convo ${includeLogicHook} included`)\n })\n })\n\n return result\n }\n\n this.conversation = _getEffectiveConversationRecursive(this.conversation, [], [], false)\n }\n}\n\nmodule.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) {\n if (!err) 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')\n\nconst { toString, quoteRegexpString, calculateWer } = require('./helper')\n\nconst _normalize = (botresponse) => {\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) => {\n if (_.isUndefined(botresponse)) return false\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n const regexp = ignoreCase ? (new RegExp(utterance, 'i')) : (new RegExp(utterance, ''))\n return regexp.test(botresponse)\n}\n\nconst wildcard = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) {\n if (utterance.trim() === '*') return true\n else return false\n }\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n const numWildcards = utterance.split('*').length - 1\n if (numWildcards > 10) {\n throw new Error('Maximum number of 10 wildcards supported.')\n }\n const utteranceRe = quoteRegexpString(utterance).replace(/\\\\\\*/g, '(.*)')\n\n const regexp = ignoreCase ? (new RegExp(utteranceRe, 'i')) : (new RegExp(utteranceRe, ''))\n return regexp.test(botresponse)\n}\n\nconst wildcardExact = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) {\n if (utterance.trim() === '*') return true\n else return false\n }\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n const numWildcards = utterance.split('*').length - 1\n if (numWildcards > 10) {\n throw new Error('Maximum number of 10 wildcards supported.')\n }\n const utteranceRe = '^' + quoteRegexpString(utterance).replace(/\\\\\\*/g, '(.*)') + '$'\n\n const regexp = ignoreCase ? (new RegExp(utteranceRe, 'i')) : (new RegExp(utteranceRe, ''))\n return regexp.test(botresponse)\n}\n\nconst include = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) return false\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n if (ignoreCase) {\n utterance = utterance.toLowerCase()\n botresponse = botresponse.toLowerCase()\n }\n return botresponse.indexOf(utterance) >= 0\n}\n\nconst equals = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) return false\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n if (ignoreCase) {\n utterance = utterance.toLowerCase()\n botresponse = botresponse.toLowerCase()\n }\n return botresponse === utterance\n}\n\nconst wer = () => (botresponse, utterance, args) => {\n botresponse = _normalize(botresponse || '')\n utterance = toString(utterance || '')\n\n const threshold = ([',', '.'].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 } = require('./helper')\n\nmodule.exports = class CompilerTxt extends CompilerBase {\n constructor (context, caps = {}) {\n super(context, caps)\n\n this.eol = caps[Capabilities.SCRIPTING_TXT_EOL]\n }\n\n Validate () {\n super.Validate()\n this._AssertCapabilityExists(Capabilities.SCRIPTING_TXT_EOL)\n }\n\n GetHeaders (scriptBuffer) {\n let scriptData = scriptBuffer\n if (Buffer.isBuffer(scriptBuffer)) scriptData = scriptData.toString()\n\n const lines = scriptData.split(this.eol)\n\n const header = { }\n\n if (lines && !lines[0].startsWith('#')) {\n header.name = lines[0]\n }\n return new ConvoHeader(header)\n }\n\n Compile (scriptBuffer, scriptType = Constants.SCRIPTING_TYPE_CONVO) {\n let scriptData = scriptBuffer\n if (Buffer.isBuffer(scriptBuffer)) scriptData = scriptData.toString()\n\n const lines = _.map(scriptData.split(this.eol), (line) => line.trim())\n\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO) {\n return this._compileConvo(lines, false)\n } else if (scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n return this._compileConvo(lines, true)\n } else if (scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n return this._compileUtterances(lines)\n } else if (scriptType === Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY) {\n return this._compileScriptingMemory(lines)\n } else {\n throw Error(`Invalid script type ${scriptType}`)\n }\n }\n\n _compileConvo (lines, isPartial = false) {\n const convo = {\n header: {},\n conversation: []\n }\n\n let currentLineIndex = 0\n let currentLines = []\n let convoStepSender = null\n let convoStepChannel = null\n let convoStepLineIndex = null\n\n const parseMsg = (lines) => {\n lines = lines || []\n return linesToConvoStep(lines, convoStepSender, this.context, this.eol)\n }\n\n const pushPrev = () => {\n if (convoStepSender && currentLines) {\n const convoStep = {\n sender: convoStepSender,\n channel: convoStepChannel,\n stepTag: 'Line ' + convoStepLineIndex\n }\n Object.assign(convoStep, parseMsg(currentLines))\n convo.conversation.push(convoStep)\n } else if (!convoStepSender && currentLines) {\n convo.header.name = currentLines[0]\n if (currentLines.length > 1) {\n convo.header.description = currentLines.slice(1).join(this.eol)\n }\n }\n }\n\n const isValidTagLine = (line) => {\n if (!line || !line.startsWith('#')) return false\n const sender = line.substr(1).split(' ')[0]\n return validSenders.includes(sender)\n }\n\n lines.forEach((line) => {\n currentLineIndex++\n line = line.trim()\n if (isValidTagLine(line)) {\n pushPrev()\n\n convoStepSender = line.substr(1).trim()\n convoStepChannel = null\n convoStepLineIndex = currentLineIndex\n if (convoStepSender.indexOf(' ') > 0) {\n convoStepChannel = convoStepSender.substr(convoStepSender.indexOf(' ') + 1).trim()\n convoStepSender = convoStepSender.substr(0, convoStepSender.indexOf(' ')).trim()\n }\n currentLines = []\n } else {\n currentLines.push(line)\n }\n })\n pushPrev()\n\n const result = [new Convo(this.context, convo)]\n if (isPartial) {\n this.context.AddPartialConvos(result)\n } else {\n this.context.AddConvos(result)\n }\n return result\n }\n\n _compileUtterances (lines) {\n if (lines && lines.length > 0) {\n const result = [new Utterance({ name: lines[0], utterances: lines.length > 1 ? lines.slice(1) : [] })]\n this.context.AddUtterances(result)\n return result\n }\n }\n\n _compileScriptingMemory (lines) {\n if (lines && lines.length > 1) {\n const scriptingMemories = linesToScriptingMemories(lines, this.caps[Capabilities.SCRIPTING_MEMORY_COLUMN_MODE])\n if (scriptingMemories && scriptingMemories.length > 0) {\n this.context.AddScriptingMemories(scriptingMemories)\n }\n return scriptingMemories\n }\n }\n\n Decompile (convos) {\n if (convos.length > 1) {\n throw new Error('only one convo per script')\n }\n\n const convo = convos[0]\n\n const validationResult = validateConvo(convo)\n if (validationResult.errors.length > 0) {\n throw new Error(validationResult.errors.map(e => e.message).join(' - '))\n }\n\n let script = ''\n\n if (convo.header.name) {\n script += convo.header.name + this.eol\n }\n if (convo.header.description) {\n script += convo.header.description + this.eol\n }\n\n convo.conversation.forEach((step) => {\n script += this.eol\n\n script += '#' + step.sender\n if (step.channel && step.channel !== 'default') {\n script += ' ' + step.channel\n }\n script += this.eol\n\n const stepLines = convoStepToLines(step)\n if (stepLines && stepLines.length > 0) script += stepLines.join(this.eol) + this.eol\n })\n return script\n }\n}\n","const { parse } = require('csv-parse/sync')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-core-CompilerCsv')\n\nconst Capabilities = require('../Capabilities')\nconst CompilerBase = require('./CompilerBase')\nconst Constants = require('./Constants')\nconst { Convo } = require('./Convo')\nconst { linesToConvoStep } = require('./helper')\n\nconst DELIMITERS_CHECK = [',', ';', '|', '\\t']\nconst DEFAULT_DELIMITER = ','\n\nconst DEFAULT_QA_COLUMN_QUESTION = 0\nconst DEFAULT_QA_COLUMN_ANSWER = 1\n\nconst DEFAULT_MULTIROW_COLUMN_CONVERSATION = 0\nconst DEFAULT_MULTIROW_COLUMN_SENDER = 1\nconst DEFAULT_MULTIROW_COLUMN_TEXT = 2\n\nconst _findColIndex = (header, colName) => {\n if (_.isString(colName)) {\n const result = header.findIndex(h => h === colName)\n if (result >= 0) return result\n throw new Error(`Column name ${colName} not found.`)\n }\n if (_.isNumber(colName)) {\n return colName\n }\n throw new Error(`Column ${colName} not found.`)\n}\n\nmodule.exports = class CompilerCsv extends CompilerBase {\n constructor (context, caps = {}) {\n super(context, caps)\n }\n\n Validate () {\n this._AssertCapabilityExists(Capabilities.SCRIPTING_CSV_QUOTE)\n this._AssertCapabilityExists(Capabilities.SCRIPTING_CSV_ESCAPE)\n\n return super.Validate()\n }\n\n Compile (scriptBuffer, scriptType = Constants.SCRIPTING_TYPE_CONVO) {\n const scriptData = Buffer.isBuffer(scriptBuffer) ? scriptBuffer.toString() : scriptBuffer\n if (scriptData.length === 0) {\n return []\n }\n 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 this.eol = caps[Capabilities.SCRIPTING_TXT_EOL]\n }\n\n Validate () {\n super.Validate()\n this._AssertCapabilityExists(Capabilities.SCRIPTING_TXT_EOL)\n }\n\n GetHeaders (scriptBuffer) {\n debug('GetHeaders is not implemented!')\n }\n\n Deserialize (scriptData) {\n throw new Error('not implemented')\n }\n\n Compile (scriptBuffer, scriptType = Constants.SCRIPTING_TYPE_CONVO) {\n let scriptData = scriptBuffer\n if (Buffer.isBuffer(scriptBuffer)) scriptData = scriptData.toString()\n scriptData = this.Deserialize(scriptData)\n\n const result = []\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO) {\n result.push(...this._compileConvo(scriptData.convos, false))\n } else if (scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n result.push(...this._compileConvo(scriptData.partialConvos, true))\n } else if (scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n result.push(...this._compileUtterances(scriptData.utterances))\n } else if (scriptType === Constants.SCRIPTING_TYPE_SCRIPTING_MEMORY) {\n result.push(...this._compileScriptingMemory(scriptData.scriptingMemory))\n }\n\n return result\n }\n\n _compileConvo (convos, isPartial = false) {\n const result = []\n for (const convoRaw of (convos || [])) {\n const conversation = []\n for (const [convoStepLineIndex, convoStepRaw] of convoRaw.steps.entries()) {\n const lineTag = `${convoStepLineIndex + 1}`.padStart(`${convoRaw.steps.length}`.length, '0')\n\n if (Object.keys(convoStepRaw).length > 1) {\n throw new Error(`Use just one from ${validSenders.join(',')} fields in step ${JSON.stringify(convoStepRaw)}`)\n }\n if (validSenders.findIndex(sender => convoStepRaw[sender]) < 0) {\n throw new Error(`Use ${validSenders.map(s => `'${s}'`).join(' or ')} field in step ${JSON.stringify(convoStepRaw)}`)\n }\n\n const convoStepSender = Object.keys(convoStepRaw)[0]\n const convoStepObject = convoStepRaw[convoStepSender]\n\n conversation.push(Object.assign(\n {\n sender: convoStepSender,\n stepTag: 'Line ' + lineTag\n },\n linesToConvoStep(convoStepObject, convoStepSender, this.context, this.eol)\n ))\n }\n\n const convo = {\n header: {\n name: convoRaw.name,\n description: convoRaw.description\n },\n conversation\n }\n\n const toAdd = new Convo(this.context, convo)\n result.push(toAdd)\n if (isPartial) {\n this.context.AddPartialConvos([toAdd])\n } else {\n this.context.AddConvos([toAdd])\n }\n }\n return result\n }\n\n _compileUtterances (utterancesRaw) {\n const result = []\n const names = Object.keys(utterancesRaw || {})\n for (const name of names) {\n if (!_.isArray(utterancesRaw[name])) {\n throw new Error(`The '${name}' utterance has to be an array.`)\n }\n result.push(new Utterance({ name, utterances: (utterancesRaw[name]).map(u => `${u}`) }))\n }\n this.context.AddUtterances(result)\n return result\n }\n\n _compileScriptingMemory (lines) {\n if (lines && lines.length > 0) {\n if (_.isString(lines[0])) {\n if (lines.length > 1) {\n const scriptingMemories = linesToScriptingMemories(lines, this.caps[Capabilities.SCRIPTING_MEMORY_COLUMN_MODE])\n if (scriptingMemories && scriptingMemories.length > 0) {\n this.context.AddScriptingMemories(scriptingMemories)\n }\n return scriptingMemories\n }\n } else {\n this.context.AddScriptingMemories(lines)\n return lines\n }\n }\n return []\n }\n\n Decompile (convos) {\n throw new Error('not implemented')\n }\n}\n","const YAML = require('yaml')\n\nconst CompilerObjectBase = require('./CompilerObjectBase')\nmodule.exports = class CompilerYaml extends CompilerObjectBase {\n constructor (context, caps = {}) {\n super(context, caps)\n }\n\n Deserialize (scriptData) {\n return YAML.parse(scriptData)\n }\n}\n","const CompilerObjectBase = require('./CompilerObjectBase')\nconst { convoStepToObject } = require('./helper')\n\nmodule.exports = class CompilerJson extends CompilerObjectBase {\n constructor (context, caps = {}) {\n super(context, caps)\n }\n\n Deserialize (scriptData) {\n return JSON.parse(scriptData)\n }\n\n Decompile (convos) {\n const result = convos.map(convo => ({\n name: convo.header.name,\n description: convo.header.description,\n steps: convo.conversation.map(set => ({\n [set.sender]: convoStepToObject(set)\n }))\n }))\n return JSON.stringify({ convos: result }, null, 2)\n }\n}\n","const debug = require('debug')('botium-core-CompilerMarkdown')\nconst MarkdownIt = require('markdown-it')\nconst util = require('util')\nconst md = new MarkdownIt()\n\nconst Capabilities = require('../Capabilities')\nconst CompilerBase = require('./CompilerBase')\nconst Constants = require('./Constants')\nconst { Convo } = require('./Convo')\nconst Utterance = require('./Utterance')\nconst { linesToConvoStep, validSenders, validateSender } = require('./helper')\n\nmodule.exports = class CompilerMarkdown extends CompilerBase {\n constructor (context, caps = {}) {\n super(context, caps)\n\n this.eol = caps[Capabilities.SCRIPTING_TXT_EOL]\n }\n\n Validate () {\n super.Validate()\n this._AssertCapabilityExists(Capabilities.SCRIPTING_TXT_EOL)\n }\n\n Compile (scriptBuffer, scriptType = Constants.SCRIPTING_TYPE_CONVO) {\n if (Buffer.isBuffer(scriptBuffer)) scriptBuffer = scriptBuffer.toString()\n\n const parsed = md.parse(scriptBuffer, {})\n\n const _toStructuredMarkdown = (parsed) => {\n let depth = -1\n const struct = [{ children: [] }, null, null, null, null, null]\n\n const _add = (entry) => {\n if (!struct[depth] || !struct[depth].children) throw new Error(`\"${entry.markup}\" not expected here (Line ${entry.map[0] + 1}): format invalid`)\n struct[depth].children.push(entry)\n entry.children = []\n struct[depth + 1] = entry\n }\n\n for (const entry of parsed) {\n if (entry.type === 'heading_open') {\n if (entry.tag === 'h1') {\n depth = 0\n } else if (entry.tag === 'h2') {\n if (depth < 0 || depth > 1) {\n throw new Error(`\"${entry.markup}\" not expected here (Line ${entry.map[0] + 1}): expecting parent \"#\" for \"${entry.markup}\"`)\n }\n depth = 1\n } else {\n debug(`Markdown entry \"${util.inspect(entry)}\" ignored. Unknown heading`)\n }\n } else if (entry.type === 'bullet_list_open') {\n if (depth < 1) {\n throw new Error(`\"${entry.markup}\" not expected here (Line ${entry.map[0] + 1}): expecting parent \"##\" for \"${entry.markup}\"`)\n }\n if (depth > 3) {\n throw new Error(`\"${entry.markup}\" not expected here (Line ${entry.map[0] + 1}): Bullet list depth 3 not supported`)\n }\n depth++\n } else if (entry.type === 'bullet_list_close') {\n depth--\n } else if (entry.type === 'inline') {\n _add(entry)\n }\n }\n return struct[0]\n }\n\n const structured = _toStructuredMarkdown(parsed)\n for (const convosOrUtterances of structured.children) {\n if ((convosOrUtterances.content === 'Convos' && scriptType === Constants.SCRIPTING_TYPE_CONVO) ||\n (convosOrUtterances.content === 'PartialConvos' && scriptType === Constants.SCRIPTING_TYPE_PCONVO)) {\n const convosBotium = []\n for (const convo of convosOrUtterances.children) {\n const conversation = []\n for (const step of convo.children) {\n const sender = step.content.toLowerCase()\n if (validateSender(sender)) {\n // handle both:\n // - BUTTONS checkbutton|checkbutton2\n // and\n // - BUTTONS\n // - checkbutton\n // - checkbutton2\n conversation.push(Object.assign(\n {\n sender,\n stepTag: 'Line ' + (step.map[0] + 1)\n },\n linesToConvoStep(step.children.map(child => child.content +\n (child.children ? ' ' + child.children.map(child => child.content).join('|') : '')), sender, this.context, this.eol)\n ))\n } else {\n debug(`Expected sender ${validSenders.map(s => `'${s}'`).join(' or ')} but found ${sender}`)\n }\n }\n convosBotium.push(new Convo(this.context, {\n header: {\n name: convo.content\n },\n conversation\n }))\n }\n if (scriptType === Constants.SCRIPTING_TYPE_CONVO) {\n this.context.AddConvos(convosBotium)\n } else if (scriptType === Constants.SCRIPTING_TYPE_PCONVO) {\n this.context.AddPartialConvos(convosBotium)\n }\n } else if (convosOrUtterances.content === 'Utterances' && scriptType === Constants.SCRIPTING_TYPE_UTTERANCES) {\n const utterancesBotium = []\n for (const utteranceStruct of convosOrUtterances.children) {\n utterancesBotium.push(new Utterance({ name: utteranceStruct.content, utterances: utteranceStruct.children.map(child => `${child.content}`) }))\n }\n this.context.AddUtterances(utterancesBotium)\n }\n }\n }\n}\n","const LogicHookUtils = require('./logichook/LogicHookUtils')\nconst util = require('util')\nconst crypto = require('crypto')\nconst fs = require('fs')\nconst path = require('path')\nconst globby = require('globby')\nconst _ = require('lodash')\nconst randomize = require('randomatic')\nconst promiseRetry = require('promise-retry')\nrequire('promise.allsettled').shim()\nconst debug = require('debug')('botium-core-ScriptingProvider')\n\nconst Constants = require('./Constants')\nconst Capabilities = require('../Capabilities')\nconst Defaults = require('../Defaults')\nconst { Convo, ConvoStep } = require('./Convo')\nconst ScriptingMemory = require('./ScriptingMemory')\nconst { BotiumError, botiumErrorFromList, botiumErrorFromErr } = require('./BotiumError')\nconst RetryHelper = require('../helpers/RetryHelper')\nconst { getMatchFunction } = require('./MatchFunctions')\nconst precompilers = require('./precompilers')\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)) {\n debug(`Asserter trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, retryHelper.retrySettings)\n } else {\n return promise()\n }\n}\n\nconst pnot = (retryHelper, fn, errTemplate) => {\n const promise = () => new Promise(async (resolve, reject) => { // eslint-disable-line no-async-promise-executor\n try {\n await fn()\n reject(errTemplate)\n } catch (err) {\n resolve()\n }\n })\n\n if (retryHelper) {\n return promiseRetry((retry, number) => {\n return promise().catch(() => {\n if (retryHelper.shouldRetry(errTemplate)) {\n debug(`Asserter trial #${number} failed, !retry activated`)\n retry(errTemplate)\n } else {\n throw errTemplate\n }\n })\n }, retryHelper.retrySettings)\n } else {\n return promise()\n }\n}\n\nmodule.exports = class ScriptingProvider {\n constructor (caps) {\n this.caps = caps || _.cloneDeep(Defaults.Capabilities)\n this.compilers = {}\n this.convos = []\n this.utterances = {}\n this.matchFn = null\n this.asserters = {}\n this.globalAsserter = {}\n this.logicHooks = {}\n this.globalLogicHook = {}\n this.userInputs = {}\n this.partialConvos = {}\n this.scriptingMemories = []\n\n this.scriptingEvents = {\n onConvoBegin: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onConvoBegin', logicHooks: (convo.beginLogicHook || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onConvoEnd: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onConvoEnd', logicHooks: (convo.endLogicHook || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onMeStart: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onMeStart', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onMePrepare: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onMePrepare', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onMeEnd: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onMeEnd', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onBotStart: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onBotStart', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onBotPrepare: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onBotPrepare', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n onBotEnd: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createLogicHookPromises({ hookType: 'onBotEnd', logicHooks: (convoStep.logicHooks || []), convo, convoStep, scriptingMemory, ...rest })\n },\n assertConvoBegin: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createAsserterPromises({ asserterType: 'assertConvoBegin', asserters: (convo.beginAsserter || []), convo, convoStep, scriptingMemory, ...rest })\n },\n assertConvoStep: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createAsserterPromises({ asserterType: 'assertConvoStep', asserters: (convoStep.asserters || []), convo, convoStep, scriptingMemory, ...rest })\n },\n assertConvoEnd: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createAsserterPromises({ asserterType: 'assertConvoEnd', asserters: (convo.endAsserter || []), convo, convoStep, scriptingMemory, ...rest })\n },\n setUserInput: ({ convo, convoStep, scriptingMemory, ...rest }) => {\n return this._createUserInputPromises({ convo, convoStep, scriptingMemory, ...rest })\n },\n resolveUtterance: ({ utterance, resolveEmptyIfUnknown }) => {\n return this._resolveUtterance({ utterance, resolveEmptyIfUnknown })\n },\n assertBotResponse: (botresponse, tomatch, stepTag, meMsg) => {\n if (!_.isArray(tomatch)) {\n tomatch = [tomatch]\n }\n debug(`assertBotResponse ${stepTag} ${meMsg ? `(${meMsg}) ` : ''}BOT: ${botresponse} = ${tomatch} ...`)\n const found = _.find(tomatch, (utt) => this.matchFn(botresponse, utt, this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS]))\n const asserterType = this.caps[Capabilities.SCRIPTING_MATCHING_MODE] === 'wer' ? 'Word Error Rate Asserter' : 'Text Match Asserter'\n if (_.isNil(found)) {\n if (this.caps[Capabilities.SCRIPTING_MATCHING_MODE] === 'wer') {\n const wer = calculateWer(botresponse, tomatch[0])\n const werArgs = this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS]\n const threshold = ([',', '.'].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: 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: `<=${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) => {\n if (!_.isArray(nottomatch)) {\n nottomatch = [nottomatch]\n }\n debug(`assertBotNotResponse ${stepTag} ${meMsg ? `(${meMsg}) ` : ''}BOT: ${botresponse} != ${nottomatch} ...`)\n const found = _.find(nottomatch, (utt) => this.matchFn(botresponse, utt, this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS]))\n const asserterType = this.caps[Capabilities.SCRIPTING_MATCHING_MODE] === 'wer' ? 'Word Error Rate Asserter' : 'Text Match Asserter'\n if (!_.isNil(found)) {\n if (this.caps[Capabilities.SCRIPTING_MATCHING_MODE] === 'wer') {\n const wer = calculateWer(botresponse, nottomatch[0])\n const werArgs = this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS]\n const threshold = ([',', '.'].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: 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: `>=${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 callAsserter = (asserterSpec, asserter, params) => {\n if (asserterSpec.not) {\n const notAsserterType = mapNot[asserterType]\n if (asserter[notAsserterType]) {\n return p(this.retryHelperAsserter, () => asserter[notAsserterType](params))\n } else {\n return pnot(this.retryHelperAsserter, () => asserter[asserterType](params),\n new BotiumError(\n `${convoStep.stepTag}: Expected asserter ${asserter.name || asserterSpec.name} with args \"${params.args}\" to fail`,\n {\n type: 'asserter',\n source: asserter.name || asserterSpec.name,\n params: {\n args: params.args\n },\n cause: {\n not: true,\n expected: 'failed',\n actual: 'not failed'\n }\n }\n )\n )\n }\n } else {\n return p(this.retryHelperAsserter, () => asserter[asserterType](params))\n }\n }\n\n const convoAsserter = asserters\n .filter(a => this.asserters[a.name][asserterType])\n .map(a => callAsserter(a, this.asserters[a.name], {\n convo,\n convoStep,\n scriptingMemory,\n container,\n args: ScriptingMemory.applyToArgs(a.args, scriptingMemory, container.caps, rest.botMsg),\n isGlobal: false,\n ...rest\n }))\n const globalAsserter = Object.values(this.globalAsserter)\n .filter(a => a[asserterType])\n .map(a => p(this.retryHelperAsserter, () => a[asserterType]({ convo, convoStep, scriptingMemory, container, args: [], isGlobal: true, ...rest })))\n\n const allPromises = [...convoAsserter, ...globalAsserter]\n if (this.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n return Promise.allSettled(allPromises).then((results) => {\n const rejected = results.filter(result => result.status === 'rejected').map(result => result.reason)\n if (rejected.length) {\n throw botiumErrorFromList(rejected, {})\n }\n return results.filter(result => result.status === 'fulfilled').map(result => result.value)\n })\n }\n if (allPromises.length > 0) return Promise.all(allPromises).then(() => true)\n return Promise.resolve(false)\n }\n\n _createLogicHookPromises ({ hookType, logicHooks, convo, convoStep, scriptingMemory, 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 const convoStepPromises = (logicHooks || [])\n .filter(l => this.logicHooks[l.name][hookType])\n .map(l => p(this.retryHelperLogicHook, () => this.logicHooks[l.name][hookType]({\n convo,\n convoStep,\n scriptingMemory,\n container,\n args: ScriptingMemory.applyToArgs(l.args, scriptingMemory, container.caps, rest.botMsg),\n isGlobal: false,\n ...rest\n })))\n\n const globalPromises = Object.values(this.globalLogicHook)\n .filter(l => l[hookType])\n .map(l => p(this.retryHelperLogicHook, () => l[hookType]({ convo, convoStep, scriptingMemory, container, args: [], isGlobal: true, ...rest })))\n\n const allPromises = [...convoStepPromises, ...globalPromises]\n if (allPromises.length > 0) return Promise.all(allPromises).then(() => true)\n return Promise.resolve(false)\n }\n\n _createUserInputPromises ({ convo, convoStep, scriptingMemory, 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 setUserInput: this.scriptingEvents.setUserInput.bind(this),\n fail: this.scriptingEvents.fail && this.scriptingEvents.fail.bind(this)\n }\n }\n }\n\n Build () {\n const CompilerXlsx = require('./CompilerXlsx')\n this.compilers[Constants.SCRIPTING_FORMAT_XSLX] = new CompilerXlsx(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_XSLX].Validate()\n const CompilerTxt = require('./CompilerTxt')\n this.compilers[Constants.SCRIPTING_FORMAT_TXT] = new CompilerTxt(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_TXT].Validate()\n const CompilerCsv = require('./CompilerCsv')\n this.compilers[Constants.SCRIPTING_FORMAT_CSV] = new CompilerCsv(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_CSV].Validate()\n const CompilerYaml = require('./CompilerYaml')\n this.compilers[Constants.SCRIPTING_FORMAT_YAML] = new CompilerYaml(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_YAML].Validate()\n const CompilerJson = require('./CompilerJson')\n this.compilers[Constants.SCRIPTING_FORMAT_JSON] = new CompilerJson(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_JSON].Validate()\n const CompilerMarkdown = require('./CompilerMarkdown')\n this.compilers[Constants.SCRIPTING_FORMAT_MARKDOWN] = new CompilerMarkdown(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_MARKDOWN].Validate()\n\n this.matchFn = getMatchFunction(this.caps[Capabilities.SCRIPTING_MATCHING_MODE])\n\n const logicHookUtils = new LogicHookUtils({ buildScriptContext: this._buildScriptContext(), caps: this.caps })\n this.asserters = logicHookUtils.asserters\n this.globalAsserter = logicHookUtils.getGlobalAsserter()\n this.logicHooks = logicHookUtils.logicHooks\n this.globalLogicHook = logicHookUtils.getGlobalLogicHook()\n this.userInputs = logicHookUtils.userInputs\n }\n\n IsAsserterValid (name) {\n return this.asserters[name] || false\n }\n\n IsLogicHookValid (name) {\n return this.logicHooks[name] || false\n }\n\n IsUserInputValid (name) {\n return this.userInputs[name] || false\n }\n\n Match (botresponse, utterance) {\n return this.matchFn(botresponse, utterance, 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 }, 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 }, 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 })\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 currentStepsStack = convoStepsStack.slice()\n const currentStepMod = _.cloneDeep(currentStep)\n currentStepMod.userInputs[uiIndex] = sampleinput\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 eu = this.utterances[utt.name]\n if (eu) {\n eu.utterances = _.uniq(_.concat(eu.utterances, utt.utterances))\n } else {\n this.utterances[utt.name] = utt\n }\n\n const { ambiguous, expected } = findAmbiguous(this.utterances[utt.name].utterances)\n\n if (ambiguous && ambiguous.length > 0) {\n debug(`Ambigous utterance \"${utt.name}\", expecting exact ${expected.length ? ('\"' + expected.join(', ') + '\"') : '<none>'} scripting memory variables in following user examples: ${ambiguous.map(d => `\"${d}\"`).join(', ')}`)\n }\n })\n }\n }\n\n AddPartialConvos (convos) {\n if (convos && _.isArray(convos)) {\n for (let i = 0; i < convos.length; i++) {\n const convo = convos[i]\n this.AddPartialConvos(convo)\n }\n } else if (convos) {\n if (!convos.header || !convos.header.name) {\n throw Error(`Header name is mandatory: ${JSON.stringify(convos.header)}`)\n }\n if (convos.header.name.indexOf('|') >= 0) {\n throw Error(`Invalid partial convo name: ${convos.header.name}`)\n }\n const name = convos.header.name\n if (this.partialConvos[name]) {\n throw Error(`Duplicate partial convo: ${name}`)\n }\n\n this.partialConvos[name] = convos\n }\n }\n\n GetPartialConvos () {\n return this.partialConvos\n }\n\n AddScriptingMemories (scriptingMemories) {\n if (scriptingMemories && _.isArray(scriptingMemories)) {\n for (let i = 0; i < scriptingMemories.length; i++) {\n const scriptingMemory = scriptingMemories[i]\n this.AddScriptingMemories(scriptingMemory)\n }\n } else if (scriptingMemories) {\n if (!scriptingMemories.header || !scriptingMemories.header.name) {\n throw new BotiumError(\n 'Scripting Memory Definition has no name',\n {\n type: 'Compiler',\n subtype: 'Scripting memory without name',\n source: 'ScriptingProvider',\n cause: {\n scriptingMemory: scriptingMemories\n }\n }\n )\n }\n\n if (!scriptingMemories.values || !Object.keys(scriptingMemories.values).length) {\n throw new BotiumError(\n 'Scripting Memory Definition has no variables',\n {\n type: 'Compiler',\n subtype: 'Scripting memory without variable',\n source: 'ScriptingProvider',\n cause: {\n scriptingMemory: scriptingMemories\n }\n }\n )\n }\n\n if (scriptingMemories.values && !_.isUndefined(scriptingMemories.values[''])) {\n throw new BotiumError(\n 'Scripting Memory Definition variable has no name',\n {\n type: 'Compiler',\n subtype: 'Scripting memory without variable name',\n source: 'ScriptingProvider',\n cause: {\n scriptingMemory: scriptingMemories\n }\n }\n )\n }\n\n this.scriptingMemories.push(scriptingMemories)\n }\n }\n\n GetConversationFlowView ({\n getConvoNodeHash = null, detectLoops = false, summarizeMultiSteps = true,\n extPickMeNodeProps = [], extPickBotNodeProps = [], extPickMeHashProps = [], extPickBotHashProps = []\n } = {}) {\n const root = []\n const botNodesByHash = {}\n const pickMeNodeProps = ['index', 'sender', 'messageText', 'utteranceSamples', 'utteranceCount', 'logicHooks', 'userInputs', ...extPickMeNodeProps]\n const pickBotNodeProps = ['index', 'sender', 'messageText', 'optional', 'not', 'utteranceSamples', 'utteranceCount', 'logicHooks', 'asserters', ...extPickBotNodeProps]\n const pickMeHashProps = ['sender', 'messageText', 'logicHooks', 'userInputs', ...extPickMeHashProps]\n const pickBotHashProps = ['sender', 'messageText', 'optional', 'not', 'logicHooks', 'asserters', ...extPickBotHashProps]\n\n this.convos.forEach((convo) => {\n const convoNodes = []\n for (const [convoStepIndex, convoStep] of convo.conversation.entries()) {\n if (convoStep.sender === 'begin' || convoStep.sender === 'end') continue\n convoStep.index = convoStepIndex\n if (convoStep.messageText) {\n const utterances = this._resolveUtterance({ utterance: convoStep.messageText, resolveEmptyIfUnknown: true })\n if (utterances) {\n convoStep.utteranceSamples = utterances.slice(0, 3)\n convoStep.utteranceCount = utterances.length\n }\n }\n\n const lastConvoNode = convoNodes.length === 0 ? null : convoNodes[convoNodes.length - 1]\n if (!lastConvoNode || !summarizeMultiSteps || convoNodes[convoNodes.length - 1].sender !== convoStep.sender) {\n convoNodes.push({\n sender: convoStep.sender,\n convoSteps: [convoStep],\n convoStepIndices: [convoStepIndex],\n hash: null\n })\n } else {\n lastConvoNode.convoSteps.push(convoStep)\n lastConvoNode.convoStepIndices.push(convoStepIndex)\n }\n }\n\n let currentChildren = root\n for (const convoNode of convoNodes) {\n const convoNodeValues = convoNode.sender === 'me'\n ? convoNode.convoSteps.map(convoStep => _.pick(convoStep, pickMeNodeProps))\n : convoNode.convoSteps.map(convoStep => _.pick(convoStep, pickBotNodeProps))\n const convoNodeHeader = {\n header: _.pick(convo.header, ['name', 'description']),\n sourceTag: convo.sourceTag,\n convoStepIndices: convoNode.convoStepIndices\n }\n\n let hash = getConvoNodeHash && getConvoNodeHash({ convo, convoNode })\n if (!hash) {\n if (convoNode.sender === 'bot') {\n hash = crypto.createHash('md5').update(JSON.stringify(convoNode.convoSteps.map(convoStep => _.pick(convoStep, pickBotHashProps)))).digest('hex')\n } else {\n hash = crypto.createHash('md5').update(JSON.stringify(convoNode.convoSteps.map(convoStep => _.pick(convoStep, pickMeHashProps)))).digest('hex')\n }\n }\n\n const existingChildNode = currentChildren.find(c => c.hash === hash)\n if (existingChildNode) {\n existingChildNode.convos.push(_.cloneDeep(convoNodeHeader))\n currentChildren = existingChildNode.childNodes\n continue\n }\n\n const existingBotNode = (detectLoops && convoNode.sender === 'bot' && botNodesByHash[hash])\n if (existingBotNode) {\n if (currentChildren.findIndex(c => c.ref === existingBotNode.key) < 0) {\n currentChildren.push({\n ref: existingBotNode.key\n })\n }\n const existingConvo = existingBotNode.convos.find(c => c.header.name === convoNodeHeader.header.name)\n if (existingConvo) {\n existingConvo.convoStepIndices = [...existingConvo.convoStepIndices, ...convoNodeHeader.convoStepIndices]\n } else {\n existingBotNode.convos.push(_.cloneDeep(convoNodeHeader))\n }\n currentChildren = existingBotNode.childNodes\n continue\n }\n const node = {\n sender: convoNode.sender,\n key: randomize('0', 20),\n hash,\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 request = require('request')\nconst debug = require('debug')('botium-connector-BaseContainer')\n\nconst Events = require('../Events')\nconst Capabilities = require('../Capabilities')\nconst Queue = require('../helpers/Queue')\nconst { executeHook, getHook } = require('../helpers/HookUtils')\nconst BotiumMockMessage = require('../mocks/BotiumMockMessage')\n\nmodule.exports = class BaseContainer {\n constructor (eventEmitter, tempDirectory, repo, caps, envs) {\n this.eventEmitter = eventEmitter\n this.repo = repo\n this.caps = Object.assign({}, caps)\n this.envs = Object.assign({}, envs)\n this.tempDirectory = tempDirectory\n this.cleanupTasks = []\n this.queues = {}\n this.bottleneck = null\n }\n\n Validate () {\n this.onBuildHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONBUILD])\n this.onStartHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONSTART])\n this.onUserSaysHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONUSERSAYS])\n this.onBotResponseHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONBOTRESPONSE])\n this.onStopHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONSTOP])\n this.onCleanHook = getHook(this.caps, this.caps[Capabilities.CUSTOMHOOK_ONCLEAN])\n\n if (this.caps[Capabilities.RATELIMIT_BOTTLENECK_FN]) {\n if (_.isFunction(this.caps[Capabilities.RATELIMIT_BOTTLENECK_FN])) {\n this.bottleneck = this.caps[Capabilities.RATELIMIT_BOTTLENECK_FN]\n debug('Validate: Applying userSays rate limits from capability')\n } else {\n const limiter = new Bottleneck(this.caps[Capabilities.RATELIMIT_BOTTLENECK_FN])\n this.bottleneck = (fn) => limiter.schedule(fn)\n debug(`Validate: Applying userSays rate limits ${util.inspect(this.caps[Capabilities.RATELIMIT_BOTTLENECK_FN])}`)\n }\n } else if (this.caps[Capabilities.RATELIMIT_USERSAYS_MAXCONCURRENT] || this.caps[Capabilities.RATELIMIT_USERSAYS_MINTIME]) {\n const opts = {}\n if (this.caps[Capabilities.RATELIMIT_USERSAYS_MAXCONCURRENT]) opts.maxConcurrent = this.caps[Capabilities.RATELIMIT_USERSAYS_MAXCONCURRENT]\n if (this.caps[Capabilities.RATELIMIT_USERSAYS_MINTIME]) opts.minTime = this.caps[Capabilities.RATELIMIT_USERSAYS_MINTIME]\n const limiter = new Bottleneck(opts)\n this.bottleneck = (fn) => limiter.schedule(fn)\n debug(`Validate: Applying userSays rate limits ${util.inspect(opts)}`)\n }\n\n return Promise.resolve()\n }\n\n Build () {\n return new Promise((resolve, reject) => {\n this._RunCustomHook('onBuild', this.onBuildHook)\n .then(() => resolve(this))\n .catch((err) => reject(err))\n })\n }\n\n Start () {\n this.queues = {}\n return new Promise((resolve, reject) => {\n this._RunCustomHook('onStart', this.onStartHook)\n .then(() => resolve(this))\n .catch((err) => reject(err))\n })\n }\n\n UserSaysText (text) {\n const meMsg = new BotiumMockMessage({ sender: 'me', messageText: text })\n return this.UserSays(meMsg)\n }\n\n UserSays (meMsg) {\n const run = () => this._RunCustomHook('onUserSays', this.onUserSaysHook, { meMsg })\n .then(() => this.UserSaysImpl(meMsg))\n\n if (this.bottleneck) {\n return this.bottleneck(run)\n } else {\n return run()\n }\n }\n\n UserSaysImpl (meMsg) {\n return Promise.resolve(this)\n }\n\n WaitBotSays (channel = null, timeoutMillis = null) {\n if (!channel) channel = 'default'\n if (!timeoutMillis) timeoutMillis = this.caps[Capabilities.WAITFORBOTTIMEOUT]\n\n if (!this.queues[channel]) {\n this.queues[channel] = new Queue()\n }\n\n return new Promise((resolve, reject) => {\n this.queues[channel].pop(timeoutMillis)\n .then((botMsg) => {\n if (_.isError(botMsg)) {\n reject(botMsg)\n } else {\n resolve(botMsg)\n }\n })\n .catch((err) => {\n debug(`WaitBotSays error ${err.message || err}`)\n reject(err)\n })\n })\n }\n\n WaitBotSaysText (channel = null, timeoutMillis = null) {\n return this.WaitBotSays(channel, timeoutMillis)\n .then((botMsg) => {\n if (botMsg) {\n return botMsg.messageText\n }\n })\n }\n\n Restart () {\n return new Promise((resolve, reject) => {\n this.Stop()\n .then(() => this.Start())\n .then(() => resolve())\n .catch((err) => reject(err))\n })\n }\n\n Stop () {\n return new Promise((resolve, reject) => {\n this._RunCustomHook('onStop', this.onStopHook)\n .then(() => resolve(this))\n .catch((err) => reject(err))\n })\n }\n\n Clean () {\n this.userSaysLimiter = null\n return new Promise((resolve, reject) => {\n async.series([\n (hookExecuted) => {\n this._RunCustomHook('onClean', this.onCleanHook)\n .then(() => hookExecuted())\n .catch(() => hookExecuted())\n },\n\n (cleanupTasksDone) => {\n if (this.cleanupTasks) {\n async.series(\n this.cleanupTasks.map((task) => {\n return (cb) => {\n task((err) => {\n if (err) debug(`Cleanup failed: ${util.inspect(err)}`)\n cb()\n })\n }\n }),\n () => {\n cleanupTasksDone()\n }\n )\n } else {\n cleanupTasksDone()\n }\n },\n\n (rimraffed) => {\n if (this.caps[Capabilities.CLEANUPTEMPDIR]) {\n debug(`Cleanup rimrafing temp dir ${this.tempDirectory}`)\n 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, request }, args))\n } catch (err) {\n debug(`_RunCustomHook ${name} finished with error: ${err.message || util.inspect(err)}`)\n }\n }\n}\n","const util = require('util')\nconst async = require('async')\nconst _ = require('lodash')\nconst io = require('socket.io-client')\nconst debug = require('debug')('botium-connector-GridContainer')\n\nconst Commands = require('../Commands')\nconst Events = require('../Events')\nconst Capabilities = require('../Capabilities')\nconst BaseContainer = require('./BaseContainer')\nconst BotiumMockMessage = require('../mocks/BotiumMockMessage')\n\nmodule.exports = class GridContainer extends BaseContainer {\n Validate () {\n return super.Validate().then(() => {\n this._AssertCapabilityExists(Capabilities.BOTIUMGRIDURL)\n })\n }\n\n Build () {\n this.buildPromise = this._defer()\n\n async.series([\n (baseComplete) => {\n super.Build().then(() => baseComplete()).catch(baseComplete)\n },\n\n (socketComplete) => {\n this.socket = io(this.caps[Capabilities.BOTIUMGRIDURL])\n\n this.socket.on('connect', () => {\n debug('connected')\n this.socket.emit('authentication', { apiToken: this.caps[Capabilities.BOTIUMAPITOKEN] })\n })\n this.socket.on('connect_error', (err) => {\n debug(`connect_error ${err.message}`)\n })\n this.socket.on('connect_timeout', (timeout) => {\n debug(`connect_timeout ${util.inspect(timeout)}`)\n })\n this.socket.on('error', (err) => {\n debug(`error ${err.message}`)\n })\n this.socket.on('authenticated', () => {\n debug('authenticated')\n this.socket.emit(Commands.BUILD_CONTAINER, this.caps, this.repo.sources, this.envs)\n })\n this.socket.on('unauthorized', (err) => {\n debug(`unauthorized ${err.message}`)\n socketComplete(`Grid Access not authorized: ${err.message}`)\n })\n this.socket.on(Events.TOOMUCHWORKERS_ERROR, (err) => {\n debug(`TOOMUCHWORKERS_ERROR ${err.message}`)\n socketComplete(`Grid Access not possible: ${err.message}`)\n })\n this.socket.on(Events.CONTAINER_BUILT, () => {\n debug(Events.CONTAINER_BUILT)\n socketComplete()\n })\n this.socket.on(Events.CONTAINER_BUILD_ERROR, (err) => {\n debug(`CONTAINER_BUILD_ERROR ${err.message}`)\n socketComplete(`Grid Build failed: ${err.message}`)\n })\n\n this.socket.on(Events.CONTAINER_STARTED, () => {\n debug(Events.CONTAINER_STARTED)\n this.eventEmitter.emit(Events.CONTAINER_STARTED, this)\n if (this.startPromise) {\n this.startPromise.resolve(this)\n this.startPromise = null\n }\n })\n this.socket.on(Events.CONTAINER_START_ERROR, (err) => {\n debug(`CONTAINER_START_ERROR ${err.message}`)\n this.eventEmitter.emit(Events.CONTAINER_START_ERROR, this, err)\n if (this.startPromise) {\n this.startPromise.reject(`Grid Start failed: ${err.message}`)\n this.startPromise = null\n }\n })\n\n this.socket.on(Events.MESSAGE_RECEIVEDFROMBOT, (botMsg) => {\n debug(`MESSAGE_RECEIVEDFROMBOT ${util.inspect(botMsg)}`)\n this._QueueBotSays(new BotiumMockMessage(botMsg))\n })\n\n this.socket.on(Events.CONTAINER_STOPPED, () => {\n debug(Events.CONTAINER_STOPPED)\n this.eventEmitter.emit(Events.CONTAINER_STOPPED, this)\n if (this.stopPromise) {\n this.stopPromise.resolve(this)\n this.stopPromise = null\n }\n })\n this.socket.on(Events.CONTAINER_STOP_ERROR, (err) => {\n debug(`CONTAINER_STOP_ERROR ${err.message}`)\n this.eventEmitter.emit(Events.CONTAINER_STOP_ERROR, this, err)\n if (this.stopPromise) {\n this.stopPromise.reject(`Grid Stop failed: ${err.message}`)\n this.stopPromise = null\n }\n })\n\n this.socket.on(Events.CONTAINER_CLEANED, () => {\n debug(Events.CONTAINER_CLEANED)\n this.eventEmitter.emit(Events.CONTAINER_CLEANED, this)\n if (this.cleanPromise) {\n this.cleanPromise.resolve(this)\n this.cleanPromise = null\n }\n this.socket.disconnect()\n this.socket = null\n })\n this.socket.on(Events.CONTAINER_CLEAN_ERROR, (err) => {\n debug(`CONTAINER_CLEAN_ERROR ${err.message}`)\n this.eventEmitter.emit(Events.CONTAINER_CLEAN_ERROR, this, err)\n if (this.cleanPromise) {\n this.cleanPromise.reject(`Grid Clean failed: ${err.message}`)\n this.cleanPromise = null\n }\n this.socket.disconnect()\n this.socket = null\n })\n }\n ], (err) => {\n if (err) {\n this.buildPromise.reject(new Error(`Cannot build grid containers: ${err.message}`))\n } else {\n this.buildPromise.resolve(this)\n }\n this.buildPromise = null\n })\n return this.buildPromise.promise\n }\n\n Start () {\n this.eventEmitter.emit(Events.CONTAINER_STARTING, this)\n\n return super.Start().then(() => {\n if (this.startPromise) return Promise.reject(new Error('already starting'))\n if (this.socket) {\n this.startPromise = this._defer()\n this.socket.emit(Commands.START_CONTAINER)\n\n return this.startPromise.promise\n } else {\n this.eventEmitter.emit(Events.CONTAINER_START_ERROR, this, 'Remote Agent not online')\n return Promise.reject(new Error('Remote Agent not online'))\n }\n })\n }\n\n UserSaysImpl (mockMsg) {\n return new Promise((resolve, reject) => {\n if (this.socket) {\n this.socket.emit(Commands.SENDTOBOT, mockMsg)\n this.eventEmitter.emit(Events.MESSAGE_SENTTOBOT, this, mockMsg)\n resolve(this)\n } else {\n this.eventEmitter.emit(Events.MESSAGE_SENDTOBOT_ERROR, this, 'Remote Agent not online')\n reject(new Error('Remote Agent not online'))\n }\n })\n }\n\n Stop () {\n this.eventEmitter.emit(Events.CONTAINER_STOPPING, this)\n\n return super.Stop().then(() => {\n if (this.stopPromise) return Promise.reject(new Error('already stopping'))\n if (this.socket) {\n this.stopPromise = this._defer()\n this.socket.emit(Commands.STOP_CONTAINER)\n\n return this.stopPromise.promise\n } else {\n return Promise.resolve(this)\n }\n })\n }\n\n Clean () {\n this.eventEmitter.emit(Events.CONTAINER_CLEANING, this)\n\n return super.Clean().then(() => {\n if (this.cleanPromise) return Promise.reject(new Error('already cleaning'))\n if (this.socket) {\n this.cleanPromise = this._defer()\n this.socket.emit(Commands.CLEAN_CONTAINER)\n\n return this.cleanPromise.promise\n } else {\n return Promise.resolve(this)\n }\n })\n }\n\n _ValidateCustomHook (capKey) {\n if (this.caps[capKey]) {\n if (!_.isString(this.caps[capKey])) {\n throw new Error(`Custom Hook ${capKey} has to be a command line string`)\n }\n }\n }\n\n _RunCustomHook (capKey) {\n return Promise.resolve()\n }\n\n _defer () {\n const deferred = {\n promise: null,\n resolve: null,\n reject: null\n }\n deferred.promise = new Promise((resolve, reject) => {\n deferred.resolve = resolve\n deferred.reject = reject\n })\n return deferred\n }\n}\n","const Events = require('../Events')\nconst BaseContainer = require('./BaseContainer')\nconst BotiumMockMessage = require('../mocks/BotiumMockMessage')\n\nmodule.exports = class InProcessContainer extends BaseContainer {\n UserSaysImpl (mockMsg) {\n this.eventEmitter.emit(Events.MESSAGE_SENTTOBOT, this, mockMsg)\n return Promise.resolve(this)\n }\n\n InjectBotSays (botMsg) {\n this._QueueBotSays(new BotiumMockMessage(botMsg))\n }\n}\n","const express = require('express')\nconst Redis = require('ioredis')\nconst bodyParser = require('body-parser')\nconst debug = require('debug')('botium-core-inbound-proxy')\n\nconst buildRedisHandler = (redisurl, topic) => {\n const redis = new Redis(redisurl)\n redis.on('connect', () => {\n debug(`Redis connected to ${JSON.stringify(redisurl || 'default')}`)\n })\n return (event) => {\n try {\n debug('Got Message Event:')\n debug(JSON.stringify(event, null, 2))\n\n redis.publish(topic, JSON.stringify(event))\n } catch (err) {\n debug('Error while publishing to redis')\n debug(err)\n }\n }\n}\n\nconst setupEndpoints = ({ app, endpoint, middleware, processEvent }) => {\n if (endpoint && !endpoint.endsWith('/')) endpoint = endpoint + '/'\n\n const handler = (req, res) => {\n if (req.body) {\n processEvent({\n originalUrl: req.originalUrl,\n originalMethod: req.method,\n body: req.body,\n 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 request = require('request')\nconst Mustache = require('mustache')\nconst jp = require('jsonpath')\nconst mime = require('mime-types')\nconst { v4: uuidv4 } = require('uuid')\nconst Redis = require('ioredis')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-connector-simplerest')\n\nconst { startProxy } = require('../../grid/inbound/proxy')\nconst botiumUtils = require('../../helpers/Utils')\nconst { getAllCapValues } = require('../../helpers/CapabilitiesUtils')\nconst Capabilities = require('../../Capabilities')\nconst Defaults = require('../../Defaults').Capabilities\nconst { SCRIPTING_FUNCTIONS } = require('../../scripting/ScriptingMemory')\nconst { getHook, executeHook } = require('../../helpers/HookUtils')\nconst { escapeJSONString } = require('../../helpers/Utils')\nconst { BotiumError } = require('../../scripting/BotiumError')\n\nMustache.escape = s => s\n\nmodule.exports = class SimpleRestContainer {\n constructor ({ queueBotSays, caps, bottleneck }) {\n this.queueBotSays = queueBotSays\n this.caps = Object.assign({}, Defaults, caps)\n this.bottleneck = bottleneck || ((fn) => fn())\n this.processInbound = false\n this.redisTopic = this.caps[Capabilities.SIMPLEREST_REDIS_TOPIC] || 'SIMPLEREST_INBOUND_SUBSCRIPTION'\n 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 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 // 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 const 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 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 hasMessageText = false\n const jsonPathsTexts = getAllCapValues(Capabilities.SIMPLEREST_RESPONSE_JSONPATH, this.caps)\n for (const jsonPath of jsonPathsTexts) {\n debug(`eval json path ${jsonPath}`)\n\n const responseTexts = jp.query(jsonPathRoot, jsonPath)\n debug(`found response texts: ${util.inspect(responseTexts)}`)\n\n const messageTexts = (_.isArray(responseTexts) ? _.flattenDeep(responseTexts) : [responseTexts])\n for (const [messageTextIndex, messageText] of messageTexts.entries()) {\n if (!messageText) continue\n\n hasMessageText = true\n const botMsg = { sourceData: body, messageText, media, buttons, cards }\n await executeHook(this.caps, this.responseHook, Object.assign({ botMsg, botMsgRoot: jsonPathRoot, messageTextIndex }, this.view))\n result.push(botMsg)\n }\n }\n\n if (!hasMessageText) {\n const botMsg = { messageText: '', sourceData: body, media, buttons, cards }\n const beforeHookKeys = Object.keys(botMsg)\n await executeHook(this.caps, this.responseHook, Object.assign({ botMsg, botMsgRoot: jsonPathRoot }, this.view))\n const afterHookKeys = Object.keys(botMsg)\n if (beforeHookKeys.length !== afterHookKeys.length || !!(botMsg.messageText && botMsg.messageText.length > 0) || botMsg.media.length > 0 || botMsg.buttons.length > 0 || botMsg.cards.length > 0 || !this.caps[Capabilities.SIMPLEREST_IGNORE_EMPTY]) {\n result.push(botMsg)\n }\n }\n }\n }\n\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 return result\n }\n\n _doRequest (msg, isFromUser, updateContext) {\n return this._buildRequest(msg)\n .then((requestOptions) => new Promise((resolve, reject) => {\n debug(`constructed requestOptions ${JSON.stringify(requestOptions, null, 2)}`)\n msg.sourceData = msg.sourceData || {}\n msg.sourceData.requestOptions = requestOptions\n\n this.waitProcessQueue = []\n\n request(requestOptions, async (err, response, body) => {\n if (err) {\n return reject(new Error(`rest request failed: ${err.message}`))\n } else {\n if (response.statusCode >= 400) {\n debug(`got error response: ${response.statusCode}/${response.statusMessage}`)\n if (debug.enabled && body) {\n debug(botiumUtils.shortenJsonString(body))\n }\n if (body) {\n const jsonBody = botiumUtils.toJsonWeak(body)\n const errKey = Object.keys(jsonBody).find(k => k.startsWith('err') || k.startsWith('fail'))\n if (errKey) {\n return reject(new BotiumError(`got error response: ${response.statusCode}/${response.statusMessage} - ${jsonBody[errKey]}`, {\n message: botiumUtils.shortenJsonString(body)\n }))\n }\n }\n return reject(new Error(`got error response: ${response.statusCode}/${response.statusMessage}`))\n }\n\n if (body) {\n debug(`got response code: ${response.statusCode}, body: ${botiumUtils.shortenJsonString(body)}, headers: ${botiumUtils.shortenJsonString(response.headers)}`)\n this._storeCookiesFromResponse(response)\n try {\n body = await this._parseResponseBody(body)\n } catch (err) {\n debug(`ignoring not JSON formatted response body: ${err.message}`)\n resolve(this)\n this._emptyWaitProcessQueue()\n return\n }\n\n if (body) {\n this._processBodyAsync(body, response.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 } else {\n debug(`got response code: ${response.statusCode}, empty body`)\n resolve(this)\n this._emptyWaitProcessQueue()\n }\n }\n })\n }))\n }\n\n async _buildRequest (msg) {\n this.view.msg = Object.assign({}, msg)\n\n const nonEncodedMessage = this.view.msg.messageText\n\n this.view.msg.messageText = nonEncodedMessage && encodeURIComponent(nonEncodedMessage)\n\n if (this.caps[Capabilities.SIMPLEREST_STEP_ID_TEMPLATE]) {\n this.view.botium.stepId = this._getMustachedCap(Capabilities.SIMPLEREST_STEP_ID_TEMPLATE, false)\n } else {\n this.view.botium.stepId = uuidv4()\n }\n\n const uri = this._getMustachedCap(Capabilities.SIMPLEREST_URL, false)\n const timeout = this._getCapValue(Capabilities.SIMPLEREST_TIMEOUT)\n\n const requestOptions = {\n uri,\n method: this._getCapValue(Capabilities.SIMPLEREST_VERB) || this._getCapValue(Capabilities.SIMPLEREST_METHOD),\n followAllRedirects: true,\n timeout\n }\n\n if (this.caps[Capabilities.SIMPLEREST_HEADERS_TEMPLATE]) {\n this.view.msg.messageText = nonEncodedMessage\n try {\n requestOptions.headers = this._getMustachedCap(Capabilities.SIMPLEREST_HEADERS_TEMPLATE, true)\n } catch (err) {\n throw new Error(`composing headers from SIMPLEREST_HEADERS_TEMPLATE failed (${err.message})`)\n }\n }\n if (this.caps[Capabilities.SIMPLEREST_BODY_TEMPLATE]) {\n const bodyRaw = this._getCapValue(Capabilities.SIMPLEREST_BODY_RAW)\n if (bodyRaw) {\n this.view.msg.messageText = nonEncodedMessage\n } else {\n this.view.msg.messageText = nonEncodedMessage && escapeJSONString(nonEncodedMessage)\n }\n try {\n requestOptions.body = this._getMustachedCap(Capabilities.SIMPLEREST_BODY_TEMPLATE, !bodyRaw)\n requestOptions.json = !bodyRaw\n 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 } 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\n return requestOptions\n }\n\n async _waitForUrlResponse (pingConfig, retries) {\n const timeout = ms => new Promise(resolve => setTimeout(resolve, ms))\n\n let tries = 0\n\n while (true) {\n debug(`_waitForUrlResponse checking url ${pingConfig.uri} before proceed`)\n if (tries > retries) {\n throw new Error(`Failed to ping bot after ${retries} retries`)\n }\n tries++\n const { err, response, body } = await this.bottleneck(() => new Promise((resolve) => {\n request(pingConfig, (err, response, body) => {\n resolve({ err, response, body })\n })\n }))\n if (err) {\n debug(`_waitForUrlResponse error on url check ${pingConfig.uri}: ${err}`)\n if (tries <= retries) {\n await timeout(pingConfig.timeout)\n }\n } else if (response.statusCode >= 400) {\n debug(`_waitForUrlResponse on url check ${pingConfig.uri} got error response: ${response.statusCode}/${response.statusMessage}`)\n if (debug.enabled && body) {\n debug(botiumUtils.shortenJsonString(body))\n }\n if (tries <= retries) {\n await timeout(pingConfig.timeout)\n }\n } else {\n debug(`_waitForUrlResponse success on url check ${pingConfig.uri}: ${response.statusCode}/${response.statusMessage}`)\n this._storeCookiesFromResponse(response)\n if (debug.enabled && body) {\n debug(`body: ${botiumUtils.shortenJsonString(body)}, headers: ${botiumUtils.shortenJsonString(response.headers)}`)\n }\n return { body, headers: response.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 followAllRedirects: true,\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 } catch (err) {\n debug(`_runPolling: composing body from SIMPLEREST_POLL_BODY failed (${err.message})`)\n return\n }\n }\n this._addRequestOptions(pollConfig)\n\n try {\n await executeHook(this.caps, this.pollRequestHook, Object.assign({ requestOptions: pollConfig }, this.view))\n } catch (err) {\n debug(`_runPolling: exeucting request hook failed - (${err.message})`)\n return\n }\n this._addRequestCookies(pollConfig)\n\n request(pollConfig, async (err, response, body) => {\n if (err) {\n debug(`_runPolling: rest request failed: ${err.message}, request: ${JSON.stringify(pollConfig)}`)\n } else {\n if (response.statusCode >= 400) {\n debug(`_runPolling: got error response: ${response.statusCode}/${response.statusMessage}, request: ${JSON.stringify(pollConfig)}`)\n if (debug.enabled && body) {\n debug(botiumUtils.shortenJsonString(body))\n }\n } else if (body) {\n debug(`_runPolling: got response code: ${response.statusCode}, body: ${botiumUtils.shortenJsonString(body)}, headers: ${botiumUtils.shortenJsonString(response.headers)}`)\n this._storeCookiesFromResponse(response)\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, response.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: ${response.statusCode}, empty body`)\n }\n }\n })\n }\n }\n\n async _startPolling () {\n if (this.caps[Capabilities.SIMPLEREST_POLL_URL]) {\n this.pollInterval = setInterval(this._runPolling.bind(this), this.caps[Capabilities.SIMPLEREST_POLL_INTERVAL])\n debug(`Started HTTP polling for inbound messages on ${this.caps[Capabilities.SIMPLEREST_POLL_URL]}, interval: ${this.caps[Capabilities.SIMPLEREST_POLL_INTERVAL]}.`)\n }\n }\n\n async _stopPolling () {\n if (this.pollInterval) {\n clearInterval(this.pollInterval)\n this.pollInterval = null\n debug(`Stopped HTTP polling for inbound messages on ${this.caps[Capabilities.SIMPLEREST_POLL_URL]}.`)\n }\n }\n\n async _makeCall (capPrefix) {\n const uri = this._getMustachedCap(`${capPrefix}_URL`, false)\n const verb = this._getCapValue(`${capPrefix}_VERB`)\n const timeout = this._getCapValue(`${capPrefix}_TIMEOUT`) || this._getCapValue(Capabilities.SIMPLEREST_TIMEOUT)\n const httpConfig = {\n method: verb,\n uri,\n followAllRedirects: true,\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 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 httpConfig.strictSSL = !!this.caps[Capabilities.SIMPLEREST_STRICT_SSL]\n if (this.caps[Capabilities.SIMPLEREST_PROXY_URL]) {\n httpConfig.proxy = this.caps[Capabilities.SIMPLEREST_PROXY_URL]\n }\n if (this.caps[Capabilities.SIMPLEREST_EXTRA_OPTIONS]) {\n _.merge(httpConfig, this.caps[Capabilities.SIMPLEREST_EXTRA_OPTIONS])\n }\n }\n\n _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 requestOptions.headers.Cookie = requestOptions.headers.Cookie ? `${requestOptions.headers.Cookie}; ${this.cookies[url.host]}` : this.cookies[url.host]\n }\n\n _storeCookiesFromResponse (response) {\n if (!this.caps[Capabilities.SIMPLEREST_COOKIE_REPLICATION] || !response) {\n return\n }\n const responseCookies = response.headers['set-cookie']\n if (!responseCookies) {\n return\n }\n const host = _.get(response, 'request.uri.host')\n let cookie\n responseCookies.forEach(cookieString => {\n cookie = cookie ? `${cookie}; ${cookieString}` : cookieString\n })\n\n if (cookie) {\n this.cookies[host] = cookie\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)) {\n debug(`Build trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, this.retryHelperBuild.retrySettings))\n .then(() => this)\n } catch (err) {\n return Promise.reject(new Error(`Build - Botium plugin failed: ${util.inspect(err)}`))\n }\n }\n\n Start () {\n this.eventEmitter.emit(Events.CONTAINER_STARTING, this)\n\n try {\n return super.Start().then(() => promiseRetry((retry, number) => {\n return (this.pluginInstance.Start ? (this.pluginInstance.Start() || Promise.resolve()) : Promise.resolve())\n .catch((err) => {\n if (this.retryHelperStart.shouldRetry(err)) {\n debug(`Start trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, this.retryHelperStart.retrySettings))\n .then((context) => {\n this.eventEmitter.emit(Events.CONTAINER_STARTED, this, context)\n return this\n }).catch((err) => {\n this.eventEmitter.emit(Events.CONTAINER_START_ERROR, this, err)\n throw err\n })\n } catch (err) {\n this.eventEmitter.emit(Events.CONTAINER_START_ERROR, this, err)\n return Promise.reject(new Error(`Start - Botium plugin failed: ${util.inspect(err)}`))\n }\n }\n\n UserSaysImpl (mockMsg) {\n try {\n return promiseRetry((retry, number) => {\n return (this.pluginInstance.UserSays(mockMsg) || Promise.resolve())\n .catch((err) => {\n if (this.retryHelperUserSays.shouldRetry(err)) {\n debug(`UserSays trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, this.retryHelperUserSays.retrySettings)\n .then(() => {\n this.eventEmitter.emit(Events.MESSAGE_SENTTOBOT, this, mockMsg)\n return this\n })\n } catch (err) {\n return Promise.reject(new Error(`UserSays - Botium plugin failed: ${util.inspect(err)}`))\n }\n }\n\n Stop () {\n this.eventEmitter.emit(Events.CONTAINER_STOPPING, this)\n\n try {\n return super.Stop().then(() => promiseRetry((retry, number) => {\n return (this.pluginInstance.Stop ? (this.pluginInstance.Stop() || Promise.resolve()) : Promise.resolve())\n .catch((err) => {\n if (this.retryHelperStop.shouldRetry(err)) {\n debug(`Stop trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, this.retryHelperStop.retrySettings))\n .then((context) => {\n this.eventEmitter.emit(Events.CONTAINER_STOPPED, this, context)\n return this\n }).catch((err) => {\n this.eventEmitter.emit(Events.CONTAINER_STOP_ERROR, this, err)\n throw err\n })\n } catch (err) {\n this.eventEmitter.emit(Events.CONTAINER_STOP_ERROR, this, err)\n return Promise.reject(new Error(`Stop - Botium plugin failed: ${util.inspect(err)}`))\n }\n }\n\n Clean () {\n this.eventEmitter.emit(Events.CONTAINER_CLEANING, this)\n try {\n return promiseRetry((retry, number) => {\n return (this.pluginInstance.Clean ? (this.pluginInstance.Clean() || Promise.resolve()) : Promise.resolve())\n .catch((err) => {\n if (this.retryHelperClean.shouldRetry(err)) {\n debug(`Clean trial #${number} failed, retry activated`)\n retry(err)\n } else {\n throw err\n }\n })\n }, this.retryHelperClean.retrySettings)\n .then(() => super.Clean()).then(() => {\n this.eventEmitter.emit(Events.CONTAINER_CLEANED, this)\n return this\n }).catch((err) => {\n this.eventEmitter.emit(Events.CONTAINER_CLEAN_ERROR, this, err)\n throw err\n })\n } catch (err) {\n this.eventEmitter.emit(Events.CONTAINER_CLEAN_ERROR, this, err)\n return Promise.reject(new Error(`Clean - Botium plugin failed: ${util.inspect(err)}`))\n }\n }\n\n 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(caps[capKey])) {\n caps[capKey] = caps[capKey].toString()\n }\n } catch (err) {\n caps[capKey] = newCaps[capKey]\n }\n } else {\n caps[capKey] = newCaps[capKey]\n }\n return\n }\n\n if (_.isArray(caps[capKey])) {\n let newCapArray = newCaps[capKey]\n if (!_.isArray(newCapArray)) {\n try {\n newCapArray = JSON.parse(newCapArray)\n } catch (err) {\n debug(`Expected JSON Array in capability ${capKey}, JSON parse failed (${err}). Capability will be overwritten with maybe unexpected side effects.`)\n }\n }\n if (_.isArray(newCapArray)) {\n newCapArray.forEach(capElement => {\n const mergeKey = this._findKeyProperty(capElement)\n if (mergeKey) {\n const oldElement = caps[capKey].find(oldElement => oldElement[mergeKey] && oldElement[mergeKey] === capElement[mergeKey])\n if (oldElement) {\n _.merge(oldElement, capElement)\n return\n }\n caps[capKey].push(capElement)\n } else {\n if (caps[capKey].indexOf(capElement) < 0) {\n caps[capKey].push(capElement)\n }\n }\n })\n return\n }\n }\n if (!_.isArray(caps[capKey]) && _.isObject(caps[capKey])) {\n let newCapObject = newCaps[capKey]\n if (!_.isObject(newCapObject)) {\n try {\n newCapObject = JSON.parse(newCapObject)\n } catch (err) {\n debug(`Expected JSON Object in capability ${capKey}, JSON parse failed (${err}). Capability will be overwritten with maybe unexpected side effects.`)\n }\n }\n if (_.isObject(newCapObject)) {\n _.merge(caps[capKey], newCapObject)\n return\n }\n }\n\n if (_.isBoolean(caps[capKey])) {\n if (!_.isBoolean(newCaps[capKey])) {\n caps[capKey] = boolean(newCaps[capKey])\n return\n }\n }\n\n caps[capKey] = newCaps[capKey]\n })\n }\n\n _validate () {\n return new Promise((resolve, reject) => {\n try {\n if (!this.caps[Capabilities.PROJECTNAME]) {\n throw new Error(`Capability property ${Capabilities.PROJECTNAME} not set`)\n }\n if (!this.caps[Capabilities.TEMPDIR]) {\n throw new Error(`Capability property ${Capabilities.TEMPDIR} not set`)\n }\n if (!this.caps[Capabilities.CONTAINERMODE] && !this.caps[Capabilities.BOTIUMGRIDURL]) {\n throw new Error(`Capability '${Capabilities.CONTAINERMODE}' or '${Capabilities.BOTIUMGRIDURL}' missing`)\n }\n\n 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 _ = require('lodash')\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_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","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_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","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","debug","require$$0","require$$1","forEach","asserter","Class","require","logicHook","userInput","LogicHookUtils_1","LogicHookUtils","buildScriptContext","caps","asserters","globalAsserters","logicHooks","globalLogicHooks","userInputs","_setDefaultAsserters","_setDefaultLogicHooks","_setDefaultUserInputs","_fetchAsserters","_fetchLogicHooks","_fetchUserInputs","lh","ui","ref","_loadClass","global","getGlobalAsserter","map","getGlobalLogicHook","src","args","hookType","Error","find","allowUnsafe","packageName","CheckClass","isClass","PluginClass","message","isObject","isString","hookObject","keys","reduce","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","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","normalizeText","str","doCleanup","isArray","toString","replace","split","s","trim","splitStringInNonEmptyLines","filter","quoteRegexpString","removeBuffers","obj","jsonString","isBuffer","toLowerCase","parse","isUndefined","isNil","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","optionalSet","Set","add","size","convoStepToObject","step","form","messageTextPrefix","cardTexts","concat","mediaUr","validSenders","validateConvo","validationResult","errors","i","conversation","has","nextStep","_decompileButton","buttonScript","convoStepToLines","l","linesToScriptingMemories","columnMode","guessScriptingMemoryColumnMode","scriptingMemories","caseNames","varNames","varValues","row","rawRow","caseIndex","caseName","values","agg","varName","varIndex","scriptingMemory","header","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","e","includeJson","segments","source","subtype","cause","expected","actual","input","transcript","transcriptStep","jsonOutput","jsonErr","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","keyRegexp","RegExp","regex","matches","match","endsWith","extractVarNames","fill","varRegex","utterances","resolveUtterance","reExpected","varMatches","varMatchesRegexp","resultMatches","ScriptingMemory","ConvoHeader","projectname","testsessionname","order","description","ConvoStepAssert","ConvoStepLogicHook","ConvoStepUserInput","ConvoStep","stepTag","hasInteraction","u","Transcript","steps","convoBegin","convoEnd","prettifyActual","prettifiedSteps","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","currentStepIndex","meMsg","WORKAROUND_OVERWRITE_JSON_MESSAGE_TEXT","setUserInput","onMeStart","onMePrepare","coreMsg","omit","setTimeout","isNull","onMeEnd","failErr","onBotStart","prepared","onBotPrepare","conditional","endOfConditionalGroup","nextConvoStep","some","toUpperCase","nextConditionalLogicHook","skip","undefined","isErrorHandledWithOptionConvoStep","assertErrors","scriptingMemoryUpdate","response","_checkNormalizeText","tomatch","_resolveUtterancesToMatch","assertBotNotResponse","_compareObject","assertConvoStep","onBotEnd","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","errString","re","_normalize","botresponse","regexp","ignoreCase","test","wildcard","numWildcards","utteranceRe","wildcardExact","include","equals","threshold","p","includes","parseFloat","getMatchFunction","matchingMode","MatchFunctions","isStringJson","string","isJsonObject","json","stringIsJson","isJson","toJsonWeak","stringOrNot","optionalJson","body","shortenJsonString","escapeJSONString","character","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","splitted","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","line","_compileConvo","_compileUtterances","_compileScriptingMemory","isPartial","currentLineIndex","currentLines","convoStepSender","convoStepChannel","convoStepLineIndex","parseMsg","pushPrev","isValidTagLine","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","globalAsserter","globalLogicHook","_createLogicHookPromises","_createAsserterPromises","asserterType","_createUserInputPromises","resolveEmptyIfUnknown","_resolveUtterance","found","werArgs","params","nottomatch","retryHelperAsserter","retryHelperLogicHook","retryHelperUserInput","_isValidAsserterType","mapNot","callAsserter","asserterSpec","notAsserterType","convoAsserter","isGlobal","allPromises","allSettled","results","rejected","status","reason","all","convoStepPromises","globalPromises","t","parts","uttArgs","_buildScriptContext","Match","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","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","timeout","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","request","GridContainer_1","GridContainer","buildPromise","_defer","baseComplete","socketComplete","socket","io","apiToken","startPromise","stopPromise","cleanPromise","disconnect","_ValidateCustomHook","capKey","deferred","InProcessContainer_1","InProcessContainer","InjectBotSays","buildRedisHandler","redisurl","topic","redis","Redis","event","publish","setupEndpoints","app","endpoint","middleware","processEvent","req","res","originalUrl","originalMethod","method","headers","sendResponse","startProxy","port","express","bodyParser","urlencoded","extended","proxy","listen","console","log","v4","uuidv4","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","_buildInbound","contextInitComplete","view","botium","stepId","fnc","mapKeys","descriptor","safeCaps","render","jsonify","_getMustachedCap","startHookComplete","inboundListenerComplete","_subscribeInbound","startPollingComplete","_startPolling","pingComplete","_makeCall","_parseResponseBody","initComplete","_doRequest","startCallComplete","_unsubscribeInbound","_stopPolling","_cleanInbound","isFromUser","updateContext","_processBodyAsyncImpl","waitProcessQueue","_emptyWaitProcessQueue","mergeMode","jsonPathsContext","jsonPathContext","contextNodes","_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","hasMessageText","jsonPathsTexts","responseTexts","messageTexts","messageTextIndex","botMsgRoot","beforeHookKeys","afterHookKeys","continueMatch","_buildRequest","requestOptions","statusCode","statusMessage","enabled","jsonBody","errKey","_storeCookiesFromResponse","nonEncodedMessage","encodeURIComponent","uri","_getCapValue","followAllRedirects","bodyRaw","ADD_QUERY_PARAM","appendToUri","ADD_FORM_PARAM","formKey","formValue","ADD_HEADER","headerKey","headerValue","_addRequestOptions","_addRequestCookies","_waitForUrlResponse","pingConfig","tries","changeBody","capValue","template","raw","_processInboundEvent","jsonPathValue","jsonPathsSelector","isSelected","jsonPathTemplate","hasResult","check","processingEvents","count","subscribe","unsubscribe","close","_runPolling","verb","pollConfig","pollInterval","setInterval","clearInterval","httpConfig","strictSSL","merge","url","URL","Cookie","host","responseCookies","cookie","cookieString","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","isBoolean","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","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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"}