botium-core 1.13.5 → 1.13.7

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 (61) hide show
  1. package/dist/botium-cjs.js +24 -10
  2. package/dist/botium-cjs.js.map +1 -1
  3. package/dist/botium-es.js +24 -10
  4. package/dist/botium-es.js.map +1 -1
  5. package/package.json +1 -1
  6. package/src/helpers/RetryHelper.js +3 -2
  7. package/src/scripting/MatchFunctions.js +3 -1
  8. package/src/scripting/ScriptingProvider.js +14 -4
  9. package/src/scripting/logichook/LogicHookUtils.js +3 -3
  10. package/src/scripting/logichook/asserter/BotRepliesConsumedAsserter.js +1 -1
  11. package/src/scripting/logichook/asserter/BotRepliesUnconsumedCountAsserter.js +1 -1
  12. package/src/scripting/logichook/asserter/ButtonsAsserter.js +1 -1
  13. package/src/scripting/logichook/asserter/ButtonsCountAsserter.js +1 -1
  14. package/src/scripting/logichook/asserter/ButtonsCountRecAsserter.js +1 -1
  15. package/src/scripting/logichook/asserter/CardsAsserter.js +1 -1
  16. package/src/scripting/logichook/asserter/CardsCountAsserter.js +1 -1
  17. package/src/scripting/logichook/asserter/CardsCountRecAsserter.js +1 -1
  18. package/src/scripting/logichook/asserter/EntitiesAsserter.js +1 -1
  19. package/src/scripting/logichook/asserter/EntityContentAsserter.js +2 -2
  20. package/src/scripting/logichook/asserter/EntityValuesAsserter.js +1 -1
  21. package/src/scripting/logichook/asserter/FormsAsserter.js +1 -1
  22. package/src/scripting/logichook/asserter/IntentAsserter.js +3 -3
  23. package/src/scripting/logichook/asserter/IntentConfidenceAsserter.js +4 -4
  24. package/src/scripting/logichook/asserter/IntentUniqueAsserter.js +2 -2
  25. package/src/scripting/logichook/asserter/JsonPathAsserter.js +9 -8
  26. package/src/scripting/logichook/asserter/JsonPathCountAsserter.js +2 -2
  27. package/src/scripting/logichook/asserter/MediaAsserter.js +1 -1
  28. package/src/scripting/logichook/asserter/MediaCountAsserter.js +1 -1
  29. package/src/scripting/logichook/asserter/MediaCountRecAsserter.js +1 -1
  30. package/src/scripting/logichook/asserter/PauseAsserter.js +1 -1
  31. package/src/scripting/logichook/asserter/ResponseLengthAsserter.js +3 -2
  32. package/src/scripting/logichook/asserter/TextContainsAllAsserter.js +2 -1
  33. package/src/scripting/logichook/asserter/TextContainsAllICAsserter.js +2 -1
  34. package/src/scripting/logichook/asserter/TextContainsAnyAsserter.js +1 -0
  35. package/src/scripting/logichook/asserter/TextContainsAnyICAsserter.js +2 -1
  36. package/src/scripting/logichook/asserter/TextEqualsAnyAsserter.js +2 -1
  37. package/src/scripting/logichook/asserter/TextEqualsAnyICAsserter.js +2 -1
  38. package/src/scripting/logichook/asserter/TextRegexpAllAsserter.js +2 -1
  39. package/src/scripting/logichook/asserter/TextRegexpAllICAsserter.js +2 -1
  40. package/src/scripting/logichook/asserter/TextRegexpAnyAsserter.js +1 -0
  41. package/src/scripting/logichook/asserter/TextRegexpAnyICAsserter.js +2 -1
  42. package/src/scripting/logichook/asserter/TextWildcardAllAsserter.js +2 -1
  43. package/src/scripting/logichook/asserter/TextWildcardAllICAsserter.js +2 -1
  44. package/src/scripting/logichook/asserter/TextWildcardAnyAsserter.js +1 -0
  45. package/src/scripting/logichook/asserter/TextWildcardAnyICAsserter.js +2 -1
  46. package/src/scripting/logichook/asserter/TextWildcardExactAllAsserter.js +2 -1
  47. package/src/scripting/logichook/asserter/TextWildcardExactAllICAsserter.js +2 -1
  48. package/src/scripting/logichook/asserter/TextWildcardExactAnyAsserter.js +1 -0
  49. package/src/scripting/logichook/asserter/TextWildcardExactAnyICAsserter.js +2 -1
  50. package/src/scripting/logichook/asserter/WerAsserter.js +10 -8
  51. package/test/convo/transcript.spec.js +6 -6
  52. package/test/scripting/asserters/convos/{wer_threshold_nok.yml → wer_threshold_nok_float.yml} +0 -0
  53. package/test/scripting/asserters/convos/wer_threshold_nok_percentage.yml +7 -0
  54. package/test/scripting/asserters/convos/{wer_threshold_ok.yml → wer_threshold_ok_float.yml} +0 -0
  55. package/test/scripting/asserters/convos/wer_threshold_ok_percentage.yml +7 -0
  56. package/test/scripting/asserters/entityContentAsserter.spec.js +2 -7
  57. package/test/scripting/asserters/intentAsserter.spec.js +1 -1
  58. package/test/scripting/asserters/jsonpathAsserter.spec.js +8 -8
  59. package/test/scripting/asserters/werAsserter.spec.js +25 -5
  60. package/test/scripting/matching/matchingmode.spec.js +42 -2
  61. package/test/scripting/scriptingModificator.spec.js +1 -2
@@ -1 +1 @@
1
- {"version":3,"file":"botium-es.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/helpers/RetryHelper.js","../src/scripting/Convo.js","../src/scripting/MatchFunctions.js","../src/helpers/Utils.js","../src/scripting/precompilers/JsonToJson.js","../src/helpers/HookUtils.js","../src/scripting/precompilers/Script.js","../src/scripting/precompilers/MarkdownRasa.js","../src/helpers/CapabilitiesUtils.js","../src/scripting/precompilers/index.js","../src/scripting/CompilerBase.js","../src/scripting/Utterance.js","../src/scripting/CompilerXlsx.js","../src/scripting/CompilerTxt.js","../src/scripting/CompilerCsv.js","../src/scripting/CompilerObjectBase.js","../src/scripting/CompilerYaml.js","../src/scripting/CompilerJson.js","../src/scripting/CompilerMarkdown.js","../src/scripting/ScriptingProvider.js","../src/repos/BaseRepo.js","../src/repos/NoRepo.js","../src/helpers/ProcessUtils.js","../src/repos/GitRepo.js","../src/repos/LocalRepo.js","../src/Commands.js","../src/helpers/QueueTimeoutError.js","../src/helpers/Queue.js","../src/containers/BaseContainer.js","../src/containers/GridContainer.js","../src/containers/InProcessContainer.js","../src/grid/inbound/proxy.js","../src/containers/plugins/SimpleRestContainer.js","../src/containers/plugins/index.js","../src/containers/PluginConnectorContainer.js","../src/BotDriver.js","../src/Plugins.js","../index.js"],"sourcesContent":["module.exports = {\n PROJECTNAME: 'PROJECTNAME',\n TESTSESSIONNAME: 'TESTSESSIONNAME',\n TESTCASENAME: 'TESTCASENAME',\n TEMPDIR: 'TEMPDIR',\n CLEANUPTEMPDIR: 'CLEANUPTEMPDIR',\n WAITFORBOTTIMEOUT: 'WAITFORBOTTIMEOUT',\n CONTAINERMODE: 'CONTAINERMODE',\n PLUGINMODULEPATH: 'PLUGINMODULEPATH',\n // falsy or ms/keystroke\n SIMULATE_WRITING_SPEED: 'SIMULATE_WRITING_SPEED',\n BOTIUMGRIDURL: 'BOTIUMGRIDURL',\n BOTIUMAPITOKEN: 'BOTIUMAPITOKEN',\n BOTIUMGRIDSLOT: 'BOTIUMGRIDSLOT',\n // Simple Reset Bot Settings\n SIMPLEREST_PING_URL: 'SIMPLEREST_PING_URL',\n SIMPLEREST_PING_VERB: 'SIMPLEREST_PING_VERB',\n SIMPLEREST_PING_BODY: 'SIMPLEREST_PING_BODY',\n SIMPLEREST_PING_BODY_RAW: 'SIMPLEREST_PING_BODY_RAW',\n SIMPLEREST_PING_HEADERS: 'SIMPLEREST_PING_HEADERS',\n SIMPLEREST_PING_REQUEST_HOOK: 'SIMPLEREST_PING_REQUEST_HOOK',\n SIMPLEREST_PING_RETRIES: 'SIMPLEREST_PING_RETRIES',\n SIMPLEREST_PING_TIMEOUT: 'SIMPLEREST_PING_TIMEOUT',\n SIMPLEREST_PING_UPDATE_CONTEXT: 'SIMPLEREST_PING_UPDATE_CONTEXT',\n SIMPLEREST_PING_PROCESS_RESPONSE: 'SIMPLEREST_PING_PROCESS_RESPONSE',\n SIMPLEREST_START_URL: 'SIMPLEREST_START_URL',\n SIMPLEREST_START_VERB: 'SIMPLEREST_START_VERB',\n SIMPLEREST_START_BODY: 'SIMPLEREST_START_BODY',\n SIMPLEREST_START_BODY_RAW: 'SIMPLEREST_START_BODY_RAW',\n SIMPLEREST_START_HEADERS: 'SIMPLEREST_START_HEADERS',\n SIMPLEREST_START_REQUEST_HOOK: 'SIMPLEREST_START_REQUEST_HOOK',\n SIMPLEREST_START_RETRIES: 'SIMPLEREST_START_RETRIES',\n SIMPLEREST_START_TIMEOUT: 'SIMPLEREST_START_TIMEOUT',\n SIMPLEREST_START_UPDATE_CONTEXT: 'SIMPLEREST_START_UPDATE_CONTEXT',\n SIMPLEREST_START_PROCESS_RESPONSE: 'SIMPLEREST_START_PROCESS_RESPONSE',\n SIMPLEREST_STOP_URL: 'SIMPLEREST_STOP_URL',\n SIMPLEREST_STOP_VERB: 'SIMPLEREST_STOP_VERB',\n SIMPLEREST_STOP_BODY: 'SIMPLEREST_STOP_BODY',\n SIMPLEREST_STOP_BODY_RAW: 'SIMPLEREST_STOP_BODY_RAW',\n SIMPLEREST_STOP_HEADERS: 'SIMPLEREST_STOP_HEADERS',\n SIMPLEREST_STOP_REQUEST_HOOK: 'SIMPLEREST_STOP_REQUEST_HOOK',\n SIMPLEREST_STOP_RETRIES: 'SIMPLEREST_STOP_RETRIES',\n SIMPLEREST_STOP_TIMEOUT: 'SIMPLEREST_STOP_TIMEOUT',\n SIMPLEREST_INIT_CONTEXT: 'SIMPLEREST_INIT_CONTEXT',\n SIMPLEREST_INIT_TEXT: 'SIMPLEREST_INIT_TEXT',\n SIMPLEREST_INIT_PROCESS_RESPONSE: 'SIMPLEREST_INIT_PROCESS_RESPONSE',\n SIMPLEREST_PROXY_URL: 'SIMPLEREST_PROXY_URL',\n SIMPLEREST_STRICT_SSL: 'SIMPLEREST_STRICT_SSL',\n SIMPLEREST_URL: 'SIMPLEREST_URL',\n SIMPLEREST_EXTRA_OPTIONS: 'SIMPLEREST_EXTRA_OPTIONS',\n SIMPLEREST_IGNORE_EMPTY: 'SIMPLEREST_IGNORE_EMPTY',\n SIMPLEREST_TIMEOUT: 'SIMPLEREST_TIMEOUT',\n SIMPLEREST_METHOD: 'SIMPLEREST_METHOD',\n SIMPLEREST_VERB: 'SIMPLEREST_VERB',\n SIMPLEREST_HEADERS_TEMPLATE: 'SIMPLEREST_HEADERS_TEMPLATE',\n SIMPLEREST_BODY_TEMPLATE: 'SIMPLEREST_BODY_TEMPLATE',\n SIMPLEREST_BODY_RAW: 'SIMPLEREST_BODY_RAW',\n SIMPLEREST_START_HOOK: 'SIMPLEREST_START_HOOK',\n SIMPLEREST_STOP_HOOK: 'SIMPLEREST_STOP_HOOK',\n SIMPLEREST_REQUEST_HOOK: 'SIMPLEREST_REQUEST_HOOK',\n SIMPLEREST_PARSER_HOOK: 'SIMPLEREST_PARSER_HOOK',\n SIMPLEREST_POLL_URL: 'SIMPLEREST_POLL_URL',\n SIMPLEREST_POLL_VERB: 'SIMPLEREST_POLL_VERB',\n SIMPLEREST_POLL_BODY: 'SIMPLEREST_POLL_BODY',\n SIMPLEREST_POLL_BODY_RAW: 'SIMPLEREST_POLL_BODY_RAW',\n SIMPLEREST_POLL_HEADERS: 'SIMPLEREST_POLL_HEADERS',\n SIMPLEREST_POLL_REQUEST_HOOK: 'SIMPLEREST_POLL_REQUEST_HOOK',\n SIMPLEREST_POLL_INTERVAL: 'SIMPLEREST_POLL_INTERVAL',\n SIMPLEREST_POLL_TIMEOUT: 'SIMPLEREST_PING_TIMEOUT',\n SIMPLEREST_POLL_UPDATE_CONTEXT: 'SIMPLEREST_POLL_UPDATE_CONTEXT',\n SIMPLEREST_BODY_JSONPATH: 'SIMPLEREST_BODY_JSONPATH',\n SIMPLEREST_RESPONSE_JSONPATH: 'SIMPLEREST_RESPONSE_JSONPATH',\n SIMPLEREST_RESPONSE_HOOK: 'SIMPLEREST_RESPONSE_HOOK',\n SIMPLEREST_MEDIA_JSONPATH: 'SIMPLEREST_MEDIA_JSONPATH',\n SIMPLEREST_BUTTONS_JSONPATH: 'SIMPLEREST_BUTTONS_JSONPATH',\n SIMPLEREST_CARDS_JSONPATH: 'SIMPLEREST_CARDS_JSONPATH',\n SIMPLEREST_CARD_TEXT_JSONPATH: 'SIMPLEREST_CARD_TEXT_JSONPATH',\n SIMPLEREST_CARD_SUBTEXT_JSONPATH: 'SIMPLEREST_CARD_SUBTEXT_JSONPATH',\n SIMPLEREST_CARD_BUTTONS_JSONPATH: 'SIMPLEREST_CARD_BUTTONS_JSONPATH',\n SIMPLEREST_CARD_ATTACHMENTS_JSONPATH: 'SIMPLEREST_CARD_ATTACHMENTS_JSONPATH',\n SIMPLEREST_CONTEXT_JSONPATH: 'SIMPLEREST_CONTEXT_JSONPATH',\n SIMPLEREST_CONTEXT_MERGE_OR_REPLACE: 'SIMPLEREST_CONTEXT_MERGE_OR_REPLACE',\n SIMPLEREST_CONVERSATION_ID_TEMPLATE: 'SIMPLEREST_CONVERSATION_ID_TEMPLATE',\n SIMPLEREST_STEP_ID_TEMPLATE: 'SIMPLEREST_STEP_ID_TEMPLATE',\n SIMPLEREST_INBOUND_REDISURL: 'SIMPLEREST_INBOUND_REDISURL',\n SIMPLEREST_INBOUND_ENDPOINT: 'SIMPLEREST_INBOUND_ENDPOINT',\n SIMPLEREST_INBOUND_PORT: 'SIMPLEREST_INBOUND_PORT',\n SIMPLEREST_INBOUND_SELECTOR_JSONPATH: 'SIMPLEREST_INBOUND_SELECTOR_JSONPATH',\n SIMPLEREST_INBOUND_SELECTOR_VALUE: 'SIMPLEREST_INBOUND_SELECTOR_VALUE',\n SIMPLEREST_INBOUND_UPDATE_CONTEXT: 'SIMPLEREST_INBOUND_UPDATE_CONTEXT',\n SIMPLEREST_REDIS_TOPIC: 'SIMPLEREST_REDIS_TOPIC',\n SIMPLEREST_INBOUND_ORDER_UNSETTLED_EVENTS_JSONPATH: 'SIMPLEREST_INBOUND_ORDER_UNSETTLED_EVENTS_JSONPATH',\n SIMPLEREST_INBOUND_DEBOUNCE_TIMEOUT: 'SIMPLEREST_INBOUND_DEBOUNCE_TIMEOUT',\n 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.SIMULATE_WRITING_SPEED]: false,\n [Capabilities.SIMPLEREST_PING_RETRIES]: 6,\n [Capabilities.SIMPLEREST_PING_TIMEOUT]: 10000,\n [Capabilities.SIMPLEREST_PING_VERB]: 'GET',\n [Capabilities.SIMPLEREST_PING_UPDATE_CONTEXT]: true,\n [Capabilities.SIMPLEREST_PING_PROCESS_RESPONSE]: false,\n [Capabilities.SIMPLEREST_INIT_PROCESS_RESPONSE]: false,\n [Capabilities.SIMPLEREST_STOP_RETRIES]: 6,\n [Capabilities.SIMPLEREST_STOP_TIMEOUT]: 10000,\n [Capabilities.SIMPLEREST_STOP_VERB]: 'GET',\n [Capabilities.SIMPLEREST_START_RETRIES]: 6,\n [Capabilities.SIMPLEREST_START_TIMEOUT]: 10000,\n [Capabilities.SIMPLEREST_START_UPDATE_CONTEXT]: true,\n [Capabilities.SIMPLEREST_START_PROCESS_RESPONSE]: true,\n [Capabilities.SIMPLEREST_START_VERB]: 'GET',\n [Capabilities.SIMPLEREST_POLL_VERB]: 'GET',\n [Capabilities.SIMPLEREST_POLL_INTERVAL]: 1000,\n [Capabilities.SIMPLEREST_POLL_TIMEOUT]: 10000,\n [Capabilities.SIMPLEREST_POLL_UPDATE_CONTEXT]: true,\n [Capabilities.SIMPLEREST_METHOD]: 'GET',\n [Capabilities.SIMPLEREST_IGNORE_EMPTY]: true,\n [Capabilities.SIMPLEREST_TIMEOUT]: 10000,\n [Capabilities.SIMPLEREST_STRICT_SSL]: true,\n [Capabilities.SIMPLEREST_INBOUND_UPDATE_CONTEXT]: true,\n [Capabilities.SIMPLEREST_CONTEXT_MERGE_OR_REPLACE]: 'MERGE',\n [Capabilities.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 // 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 ],\n DEFAULT_USER_INPUTS: [\n { name: 'BUTTON', className: 'ButtonInput' },\n { name: 'MEDIA', className: 'MediaInput' },\n { name: 'FORM', className: 'FormInput' }\n ]\n}\n","const { NodeVM } = require('vm2')\nconst path = require('path')\nconst fs = require('fs')\nconst isClass = require('is-class')\nconst debug = require('debug')('botium-core-asserterUtils')\n\nconst { BotiumError } = require('../BotiumError')\n\nconst { DEFAULT_ASSERTERS, DEFAULT_LOGIC_HOOKS, DEFAULT_USER_INPUTS } = require('./LogicHookConsts')\n\nDEFAULT_ASSERTERS.forEach((asserter) => {\n asserter.Class = require(`./asserter/${asserter.className}`)\n})\n\nDEFAULT_LOGIC_HOOKS.forEach((logicHook) => {\n logicHook.Class = require(`./logichooks/${logicHook.className}`)\n})\n\nDEFAULT_USER_INPUTS.forEach((userInput) => {\n userInput.Class = require(`./userinput/${userInput.className}`)\n})\n\nconst Capabilities = require('../../Capabilities')\nconst _ = require('lodash')\n\nmodule.exports = class LogicHookUtils {\n constructor ({ buildScriptContext, caps }) {\n this.asserters = {}\n this.globalAsserters = []\n this.logicHooks = {}\n this.globalLogicHooks = []\n this.userInputs = {}\n this.buildScriptContext = buildScriptContext\n this.caps = caps\n this._setDefaultAsserters()\n this._setDefaultLogicHooks()\n this._setDefaultUserInputs()\n this._fetchAsserters()\n this._fetchLogicHooks()\n this._fetchUserInputs()\n }\n\n _setDefaultAsserters () {\n DEFAULT_ASSERTERS.forEach((asserter) => {\n this.asserters[asserter.name] = new (asserter.Class)(this.buildScriptContext, this.caps)\n })\n }\n\n _setDefaultLogicHooks () {\n DEFAULT_LOGIC_HOOKS.forEach((lh) => {\n this.logicHooks[lh.name] = new (lh.Class)(this.buildScriptContext, this.caps)\n })\n }\n\n _setDefaultUserInputs () {\n DEFAULT_USER_INPUTS.forEach((ui) => {\n this.userInputs[ui.name] = new (ui.Class)(this.buildScriptContext, this.caps)\n })\n }\n\n _fetchAsserters () {\n this.caps[Capabilities.ASSERTERS]\n .forEach(asserter => {\n if (this.asserters[asserter.ref]) {\n debug(`${asserter.ref} asserter already exists, overwriting.`)\n }\n this.asserters[asserter.ref] = this._loadClass(asserter, 'asserter')\n if (asserter.global) {\n this.globalAsserters.push(asserter.ref)\n }\n })\n }\n\n _fetchLogicHooks () {\n this.caps[Capabilities.LOGIC_HOOKS]\n .forEach(logicHook => {\n if (this.logicHooks[logicHook.ref]) {\n debug(`${logicHook.ref} logic hook already exists, overwriting.`)\n }\n this.logicHooks[logicHook.ref] = this._loadClass(logicHook, 'logichook')\n if (logicHook.global) {\n this.globalLogicHooks.push(logicHook.ref)\n }\n })\n }\n\n _fetchUserInputs () {\n this.caps[Capabilities.USER_INPUTS]\n .forEach(userInput => {\n if (this.userInputs[userInput.ref]) {\n debug(`${userInput.ref} userinput already exists, overwriting.`)\n }\n this.userInputs[userInput.ref] = this._loadClass(userInput, 'userinput')\n })\n }\n\n getGlobalAsserter () {\n return this.globalAsserters\n .map(name => this.asserters[name])\n }\n\n getGlobalLogicHook () {\n return this.globalLogicHooks\n .map(name => this.logicHooks[name])\n }\n\n _loadClass ({ src, ref, args }, hookType) {\n if (hookType !== 'asserter' && hookType !== 'logichook' && hookType !== 'userinput') {\n throw Error(`Unknown hookType ${hookType}`)\n }\n\n // 1 gives possibility to use default asserter as global asserter\n if (hookType === 'asserter') {\n const asserter = DEFAULT_ASSERTERS.find(asserter => src === asserter.className)\n if (asserter) {\n return new (asserter.Class)({ ref, ...this.buildScriptContext }, this.caps, args)\n }\n }\n if (hookType === 'logichook') {\n const lh = DEFAULT_LOGIC_HOOKS.find(lh => src === lh.className)\n if (lh) {\n return new (lh.Class)({ ref, ...this.buildScriptContext }, this.caps, args)\n }\n }\n if (hookType === 'userinput') {\n const ui = DEFAULT_USER_INPUTS.find(ui => src === ui.className)\n if (ui) {\n return new (ui.Class)({ ref, ...this.buildScriptContext }, this.caps, args)\n }\n }\n\n const _checkUnsafe = () => {\n if (!this.caps[Capabilities.SECURITY_ALLOW_UNSAFE]) {\n throw new BotiumError(\n 'Security Error. Using unsafe component is not allowed',\n {\n type: 'security',\n subtype: 'allow unsafe',\n source: path.basename(__filename),\n cause: { src: !!src, ref, args, hookType }\n }\n )\n }\n }\n\n if (!src) {\n const packageName = `botium-${hookType}-${ref}`\n try {\n const CheckClass = require(packageName)\n if (isClass(CheckClass)) {\n return new CheckClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else if (_.isFunction(CheckClass)) {\n return CheckClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else if (isClass(CheckClass.PluginClass)) {\n return new CheckClass.PluginClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } else {\n throw new Error(`${packageName} class or function or PluginClass field expected`)\n }\n } catch (err) {\n throw new Error(`Failed to fetch hook ${ref} ${hookType} from guessed package ${packageName} - ${err.message}`)\n }\n }\n\n if (isClass(src)) {\n try {\n const CheckClass = src\n return new CheckClass({ ref, ...this.buildScriptContext }, this.caps, args)\n } catch (err) {\n throw new Error(`Failed to load package ${ref} from provided class - ${err.message}`)\n }\n }\n if (_.isFunction(src)) {\n try {\n return src({ ref, ...this.buildScriptContext }, this.caps, args)\n } catch (err) {\n throw new Error(`Failed to load package ${ref} from provided function - ${err.message}`)\n }\n }\n if (_.isObject(src) && !_.isString(src)) {\n try {\n const hookObject = Object.keys(src).reduce((result, key) => {\n result[key] = (args) => {\n const script = src[key]\n if (_.isFunction(script)) {\n return script(args)\n } else if (_.isString(script)) {\n try {\n const vm = new NodeVM({\n eval: false,\n require: false,\n sandbox: args\n })\n return vm.run(script)\n } catch (err) {\n throw new Error(`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')\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)) return undefined\n if (_.isString(value)) return value\n if (_.isNumber(value)) return value.toString()\n if (_.isArray(value)) return value.map(v => toString(v)).join(',')\n try {\n return JSON.stringify(value)\n } catch (err) {\n }\n if (value && value.toString) return value.toString()\n return '' + value\n}\n\nconst flatString = (str) => {\n return str ? str.split('\\n').map(s => s.trim()).join(' ') : ''\n}\n\nconst _formatAppendArgs = (args) => {\n return 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\nmodule.exports = {\n normalizeText,\n splitStringInNonEmptyLines,\n quoteRegexpString,\n toString,\n flatString,\n removeBuffers,\n linesToConvoStep,\n convoStepToLines,\n convoStepToObject,\n validSenders,\n validateSender,\n validateConvo,\n linesToScriptingMemories\n}\n","const util = require('util')\nconst debug = require('debug')('botium-core-ScriptingMemory')\nconst randomize = require('randomatic')\nconst { v1: uuidv1 } = require('uuid')\nconst moment = require('moment')\nconst { NodeVM } = require('vm2')\nconst _ = require('lodash')\nconst path = require('path')\nconst jp = require('jsonpath')\n\nconst Capabilities = require('../Capabilities')\nconst { quoteRegexpString, toString } = require('./helper')\nconst { BotiumError } = require('./BotiumError')\n\n// If they got parameter, then it will be a string always.\n// the receiver can decide what to do with it,\n// convert to int,\n// split by ',' for multiple params,\n// or something else\nconst SCRIPTING_FUNCTIONS_RAW = {\n $now: () => {\n return new Date().toLocaleString()\n },\n $now_EN: () => {\n return new Date().toLocaleString('en-EN')\n },\n $now_DE: () => {\n return moment().format('DD.MM.YYYY, HH:mm:ss')\n },\n $now_ISO: () => {\n return new Date().toISOString()\n },\n\n $date: (pattern) => {\n if (pattern) {\n return moment().format(pattern)\n }\n return new Date().toLocaleDateString()\n },\n $date_EN: () => {\n return new Date().toLocaleDateString('en-EN')\n },\n $date_DE: () => {\n return moment().format('YYYY.MM.DD')\n },\n $date_ISO: () => {\n return moment().format('YYYY-MM-DD')\n },\n\n $time: () => {\n return new Date().toLocaleTimeString()\n },\n $time_EN: () => {\n return new Date().toLocaleTimeString('en-EN')\n },\n $time_DE: () => {\n return moment().format('HH:mm:ss')\n },\n $time_ISO: () => {\n return moment().format('HH:mm:ss')\n },\n $time_HH_MM: () => {\n return moment().format('HH:mm')\n },\n $time_HH: () => {\n return moment().format('HH')\n },\n $time_H_A: () => {\n return moment().format('h A')\n },\n\n $timestamp: () => {\n return Date.now()\n },\n\n $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-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\n debug(`Retry for ${section} is ${this.retrySettings.retries > 0 ? 'enabled' : 'disabled'}. Settings: ${JSON.stringify(this.retrySettings)} Patterns: ${JSON.stringify(this.retryErrorPatterns.map(r => r.toString()))}`)\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 util = require('util')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-core-Convo')\nconst promiseRetry = require('promise-retry')\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')\nconst RetryHelper = require('../helpers/RetryHelper')\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 retryHelper = new RetryHelper(container.caps, 'CONVO')\n return promiseRetry(async (retry, number) => {\n return this.RunImpl(container).catch(err => {\n const retryRemaining = retryHelper.retrySettings.retries - number + 1\n if (retryHelper.shouldRetry(err)) {\n debug(`Convo failed with error \"${err.message || JSON.stringify(err)}\". Retry ${retryRemaining > 0 ? 'enabled' : 'disabled'} (remaining #${retryRemaining}/${retryHelper.retrySettings.retries}, criterion matches)`)\n retry(err)\n } else {\n if (retryHelper.retryErrorPatterns.length > 0) {\n debug(`Convo failed with error \"${err.message || JSON.stringify(err)}\". Retry 'disabled' (remaining (#${retryRemaining}/${retryHelper.retrySettings.retries}), criterion does not match)`)\n }\n throw err\n }\n })\n }, retryHelper.retrySettings)\n }\n\n async RunImpl (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 skipTranscriptStep = false\n const transcriptStep = new TranscriptStep({\n expected: new BotiumMockMessage(convoStep),\n not: convoStep.not,\n optional: convoStep.optional,\n actual: null,\n stepBegin: new Date(),\n stepEnd: null,\n botBegin: null,\n botEnd: null,\n err: null\n })\n\n try {\n if (convoStep.sender === 'begin' || convoStep.sender === 'end') {\n continue\n } else if (convoStep.sender === 'me') {\n const meMsg = new BotiumMockMessage(convoStep)\n meMsg.messageText = ScriptingMemory.apply(container, scriptingMemory, meMsg.messageText, meMsg)\n // buggy command is removed, but because sideeffects are possible, it can be reactivated.\n // If there are no sideeffects coming up, then row can be deleted permanently.\n if (process.env.WORKAROUND_OVERWRITE_JSON_MESSAGE_TEXT) {\n // if this line is active, then Random() in me section does not work in performance test\n // (first run overwrites the function with the value, and the next run has the value, not the function)\n convoStep.messageText = meMsg.messageText\n }\n transcriptStep.actual = meMsg\n\n try {\n await this.scriptingEvents.setUserInput({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep, transcriptSteps })\n await this.scriptingEvents.onMeStart({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep, transcriptSteps })\n await this.scriptingEvents.onMePrepare({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep, transcriptSteps })\n\n await this._checkBotRepliesConsumed(container)\n\n const coreMsg = _.omit(removeBuffers(meMsg), ['sourceData'])\n debug(`${this.header.name}/${convoStep.stepTag}: user says (cleaned by binary and base64 data and sourceData) ${JSON.stringify(coreMsg, null, 2)}`)\n await new Promise(resolve => {\n if (container.caps.SIMULATE_WRITING_SPEED && meMsg.messageText && meMsg.messageText.length) {\n setTimeout(() => resolve(), container.caps.SIMULATE_WRITING_SPEED * meMsg.messageText.length)\n } else {\n resolve()\n }\n })\n lastMeConvoStep = convoStep\n transcriptStep.botBegin = new Date()\n if (!_.isNull(meMsg.messageText) || meMsg.sourceData || (meMsg.userInputs && meMsg.userInputs.length) || (meMsg.logicHooks && meMsg.logicHooks.length)) {\n try {\n Object.assign(meMsg, { header: this.header, conversation: this.conversation, currentStepIndex, scriptingMemory })\n await container.UserSays(meMsg)\n } finally {\n delete meMsg.header\n delete meMsg.conversation\n delete meMsg.scriptingMemory\n }\n\n transcriptStep.botEnd = new Date()\n await this.scriptingEvents.onMeEnd({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep })\n continue\n } else {\n debug(`${this.header.name}/${convoStep.stepTag}: message not found in #me section, message not sent to container ${util.inspect(convoStep)}`)\n transcriptStep.botEnd = new Date()\n await this.scriptingEvents.onMeEnd({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep })\n continue\n }\n } catch (err) {\n transcriptStep.botEnd = new Date()\n\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: error sending to bot - ${err.message || err}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr)\n } catch (failErr) {\n }\n throw failErr\n }\n } else if (convoStep.sender === 'bot') {\n if (waitForBotSays) {\n botMsg = null\n } else {\n waitForBotSays = true\n }\n\n try {\n debug(`${this.header.name} wait for bot ${convoStep.channel || ''}`)\n await this.scriptingEvents.onBotStart({ convo: this, convoStep, container, scriptingMemory, transcript, transcriptStep })\n transcriptStep.botBegin = new Date()\n if (!botMsg) {\n botMsg = await container.WaitBotSays(convoStep.channel)\n }\n transcriptStep.botEnd = new Date()\n transcriptStep.actual = new BotiumMockMessage(botMsg)\n\n const coreMsg = _.omit(removeBuffers(botMsg), ['sourceData'])\n debug(`${this.header.name}: bot says (cleaned by binary and base64 data and sourceData) ${JSON.stringify(coreMsg, null, 2)}`)\n } catch (err) {\n transcriptStep.botEnd = new Date()\n\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: error waiting for bot - ${err.message}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n throw failErr\n }\n\n try {\n const prepared = await this.scriptingEvents.onBotPrepare({ convo: this, convoStep, container, scriptingMemory, botMsg, transcript, transcriptStep })\n if (prepared) {\n transcriptStep.actual = new BotiumMockMessage(botMsg)\n\n const coreMsg = _.omit(removeBuffers(botMsg), ['sourceData'])\n debug(`${this.header.name}: onBotPrepare (cleaned by binary and base64 data and sourceData) ${JSON.stringify(coreMsg, null, 2)}`)\n }\n } catch (err) {\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: onBotPrepare error - ${err.message || err}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n throw failErr\n }\n\n if (!botMsg || (!botMsg.messageText && !botMsg.media && !botMsg.buttons && !botMsg.cards && !botMsg.sourceData && !botMsg.nlp)) {\n const failErr = new BotiumError(`${this.header.name}/${convoStep.stepTag}: bot says nothing`)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n throw failErr\n }\n const isErrorHandledWithOptionConvoStep = (err) => {\n const nextConvoStep = this.conversation[i + 1]\n if (convoStep.optional && nextConvoStep && nextConvoStep.sender === 'bot') {\n waitForBotSays = false\n skipTranscriptStep = true\n return true\n }\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n assertErrors.push(err)\n return false\n } else {\n throw err\n }\n }\n const assertErrors = []\n const scriptingMemoryUpdate = {}\n if (convoStep.messageText) {\n const response = this._checkNormalizeText(container, botMsg.messageText)\n const messageText = this._checkNormalizeText(container, convoStep.messageText)\n ScriptingMemory.fill(container, scriptingMemoryUpdate, response, messageText, this.scriptingEvents)\n const tomatch = this._resolveUtterancesToMatch(container, Object.assign({}, scriptingMemoryUpdate, scriptingMemory), messageText, botMsg)\n if (convoStep.not) {\n try {\n this.scriptingEvents.assertBotNotResponse(response, tomatch, `${this.header.name}/${convoStep.stepTag}`, lastMeConvoStep)\n } catch (err) {\n if (isErrorHandledWithOptionConvoStep(err)) {\n continue\n }\n }\n } else {\n try {\n this.scriptingEvents.assertBotResponse(response, tomatch, `${this.header.name}/${convoStep.stepTag}`, lastMeConvoStep)\n } catch (err) {\n if (isErrorHandledWithOptionConvoStep(err)) {\n continue\n }\n }\n }\n } else if (convoStep.sourceData) {\n try {\n this._compareObject(container, scriptingMemory, convoStep, botMsg.sourceData, convoStep.sourceData, botMsg)\n } catch (err) {\n if (isErrorHandledWithOptionConvoStep(err)) {\n continue\n }\n }\n }\n Object.assign(scriptingMemory, scriptingMemoryUpdate)\n try {\n await this.scriptingEvents.assertConvoStep({ convo: this, convoStep, container, scriptingMemory, botMsg, transcript, transcriptStep })\n await this.scriptingEvents.onBotEnd({ convo: this, convoStep, container, scriptingMemory, botMsg, transcript, transcriptStep })\n } catch (err) {\n const nextConvoStep = this.conversation[i + 1]\n if (convoStep.optional && nextConvoStep && nextConvoStep.sender === 'bot') {\n waitForBotSays = false\n skipTranscriptStep = true\n continue\n }\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: assertion error - ${err.message || err}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS] && err instanceof BotiumError) {\n assertErrors.push(err)\n } else {\n throw failErr\n }\n }\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n if (assertErrors.length > 0) {\n throw botiumErrorFromList(assertErrors, {})\n }\n } else {\n if (!transcriptStep.stepEnd) {\n continue\n }\n }\n } else {\n const failErr = new BotiumError(`${this.header.name}/${convoStep.stepTag}: invalid sender - ${util.inspect(convoStep.sender)}`)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr)\n } catch (failErr) {\n }\n throw failErr\n }\n } catch (err) {\n if (lastMeConvoStep) {\n if (err instanceof BotiumError && err.context) {\n err.context.input = new ConvoStep(lastMeConvoStep)\n err.context.transcript = [...transcriptSteps, { ...transcriptStep }]\n } else {\n err.input = new ConvoStep(lastMeConvoStep)\n err.transcript = [...transcriptSteps, { ...transcriptStep }]\n }\n }\n transcriptStep.err = err\n if (err instanceof BotiumError && container.caps[Capabilities.SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS]) {\n if (!err.isAsserterError()) {\n throw err\n }\n } else {\n throw err\n }\n } finally {\n if (convoStep.sender !== 'begin' && convoStep.sender !== 'end' && !skipTranscriptStep) {\n transcriptStep.scriptingMemory = Object.assign({}, scriptingMemory)\n transcriptStep.stepEnd = new Date()\n transcriptSteps.push(transcriptStep)\n }\n }\n }\n } catch (err) {\n transcript.err = err\n } finally {\n transcript.steps = transcriptSteps.filter(s => s)\n transcript.scriptingMemory = scriptingMemory\n transcript.convoEnd = new Date()\n if (container.caps[Capabilities.SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS]) {\n const transcriptStepErrs = transcript.steps.filter(s => s.err).map(s => s.err)\n if (transcriptStepErrs && transcriptStepErrs.length > 0) {\n transcript.err = botiumErrorFromList([...transcriptStepErrs.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 resultOuter = this.conversation.reduce((acc, convoStep) => {\n let result = acc\n result = result.concat(this.GetScriptingMemoryVariables(container, convoStep.messageText))\n const extractFromArgs = (convoStepItems) => {\n let resultInner = []\n for (const item of (convoStepItems || [])) {\n for (const arg of (item.args || [])) {\n resultInner = resultInner.concat(this.GetScriptingMemoryVariables(container, arg))\n }\n }\n return resultInner\n }\n result = result.concat(extractFromArgs(convoStep.asserters))\n result = result.concat(extractFromArgs(convoStep.logicHooks))\n result = result.concat(extractFromArgs(convoStep.userInputs))\n\n return result\n }, [])\n\n return [...new Set(resultOuter)]\n }\n\n GetScriptingMemoryVariables (container, utterance) {\n if (!utterance || !container.caps[Capabilities.SCRIPTING_ENABLE_MEMORY]) {\n return []\n }\n\n const utterances = this.scriptingEvents.resolveUtterance({ utterance })\n\n return utterances.reduce((acc, expected) => {\n if (_.isUndefined(expected)) return acc\n else return acc.concat(ScriptingMemory.extractVarNames(toString(expected)) || [])\n }, [])\n }\n\n _checkBotRepliesConsumed (container) {\n if (container.caps.SCRIPTING_FORCE_BOT_CONSUMED) {\n const queueLength = container._QueueLength()\n if (queueLength === 1) {\n throw new Error('There is an unread bot reply in queue')\n } else if (queueLength > 1) {\n throw new Error(`There are still ${queueLength} unread bot replies in queue`)\n }\n }\n }\n\n _resolveUtterancesToMatch (container, scriptingMemory, utterance, botMsg) {\n const utterances = this.scriptingEvents.resolveUtterance({ utterance })\n const normalizedUtterances = utterances.map(str => this._checkNormalizeText(container, str))\n const tomatch = normalizedUtterances.map(str => ScriptingMemory.apply(container, scriptingMemory, str, botMsg))\n return tomatch\n }\n\n _checkNormalizeText (container, str) {\n return normalizeText(str, !!container.caps[Capabilities.SCRIPTING_NORMALIZE_TEXT])\n }\n\n expandPartialConvos () {\n const _getIncludeLogicHookNames = (convoStep) => {\n if (!convoStep.logicHooks) {\n return []\n }\n\n const result = []\n convoStep.logicHooks.forEach((logicHook) => {\n if (logicHook.name === LOGIC_HOOK_INCLUDE) {\n if (logicHook.args.length !== 1) {\n throw Error('Wrong argument for include logic hook!')\n }\n result.push(logicHook)\n }\n })\n\n return result.map((hook) => hook.args[0])\n }\n\n const partialConvos = this.context.GetPartialConvos()\n\n const _getEffectiveConversationRecursive = (conversation, parentPConvos = [], result = [], ignoreBeginEnd = true) => {\n conversation.forEach((convoStep) => {\n let includeLogicHooks = []\n if (convoStep.sender === 'include') {\n if (convoStep.channel) {\n includeLogicHooks.push(convoStep.channel)\n }\n if (convoStep.messageText) {\n includeLogicHooks = includeLogicHooks.concat(splitStringInNonEmptyLines(convoStep.messageText))\n }\n } else {\n includeLogicHooks = _getIncludeLogicHookNames(convoStep)\n if (includeLogicHooks.length === 0 || convoStep.hasInteraction()) {\n if (!ignoreBeginEnd || (convoStep.sender !== 'begin' && convoStep.sender !== 'end')) {\n // dont put convo name for ConvoSteps on the root.\n const steptagPath = parentPConvos.length === 0 ? '' : parentPConvos.join('/') + '/'\n result.push(Object.assign(new ConvoStep(), convoStep, { stepTag: `${steptagPath}${convoStep.stepTag}` }))\n }\n }\n }\n\n includeLogicHooks.forEach((includeLogicHook) => {\n const alreadyThereAt = parentPConvos.indexOf(includeLogicHook)\n if (alreadyThereAt >= 0) {\n throw new BotiumError(`Partial convos are included circular. \"${includeLogicHook}\" is referenced by \"/${parentPConvos.slice(0, alreadyThereAt).join('/')}\" and by \"/${parentPConvos.join('/')}\" `)\n }\n if (!partialConvos || Object.keys(partialConvos).length === 0) {\n throw new BotiumError(`Cant find partial convo with name ${includeLogicHook} (There are no partial convos)`)\n }\n const partialConvo = partialConvos[includeLogicHook]\n if (!partialConvo) {\n throw new BotiumError(`Cant find partial convo with name ${includeLogicHook} (available partial convos: ${Object.keys(partialConvos).join(',')})`)\n }\n _getEffectiveConversationRecursive(partialConvo.conversation, [...parentPConvos, includeLogicHook], result, true)\n debug(`Partial convo ${includeLogicHook} included`)\n })\n })\n\n return result\n }\n\n this.conversation = _getEffectiveConversationRecursive(this.conversation, [], [], false)\n }\n}\n\nmodule.exports = {\n Convo,\n ConvoHeader,\n ConvoStep,\n ConvoStepAssert,\n ConvoStepLogicHook,\n ConvoStepUserInput,\n Transcript,\n TranscriptAttachment,\n TranscriptStep,\n TranscriptError\n}\n","const _ = require('lodash')\nconst speechScorer = require('word-error-rate')\n\nconst { toString, quoteRegexpString } = require('./helper')\n\nconst _normalize = (botresponse) => {\n if (_.isUndefined(botresponse)) return ''\n if (_.isObject(botresponse) && _.has(botresponse, 'messageText')) {\n return toString(botresponse.messageText) || ''\n }\n return toString(botresponse)\n}\n\nconst regexp = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) return false\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n const regexp = ignoreCase ? (new RegExp(utterance, 'i')) : (new RegExp(utterance, ''))\n return regexp.test(botresponse)\n}\n\nconst wildcard = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) {\n if (utterance.trim() === '*') return true\n else return false\n }\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n const numWildcards = utterance.split('*').length - 1\n if (numWildcards > 10) {\n throw new Error('Maximum number of 10 wildcards supported.')\n }\n const utteranceRe = quoteRegexpString(utterance).replace(/\\\\\\*/g, '(.*)')\n\n const regexp = ignoreCase ? (new RegExp(utteranceRe, 'i')) : (new RegExp(utteranceRe, ''))\n return regexp.test(botresponse)\n}\n\nconst wildcardExact = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) {\n if (utterance.trim() === '*') return true\n else return false\n }\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n const numWildcards = utterance.split('*').length - 1\n if (numWildcards > 10) {\n throw new Error('Maximum number of 10 wildcards supported.')\n }\n const utteranceRe = '^' + quoteRegexpString(utterance).replace(/\\\\\\*/g, '(.*)') + '$'\n\n const regexp = ignoreCase ? (new RegExp(utteranceRe, 'i')) : (new RegExp(utteranceRe, ''))\n return regexp.test(botresponse)\n}\n\nconst include = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) return false\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n if (ignoreCase) {\n utterance = utterance.toLowerCase()\n botresponse = botresponse.toLowerCase()\n }\n return botresponse.indexOf(utterance) >= 0\n}\n\nconst equals = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) return false\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n if (ignoreCase) {\n utterance = utterance.toLowerCase()\n botresponse = botresponse.toLowerCase()\n }\n return botresponse === utterance\n}\n\nconst wer = () => (botresponse, utterance, args) => {\n botresponse = _normalize(botresponse || '')\n utterance = toString(utterance || '')\n return speechScorer.wordErrorRate(botresponse, utterance) <= args[0]\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')\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' ? 'WerAsserter' : 'TextMatchAsserter'\n if (_.isNil(found)) {\n let message = `${stepTag}: Bot response `\n message += meMsg ? `(on ${meMsg}) ` : ''\n message += botresponse ? ('\"' + botresponse + '\"') : '<no response>'\n message += ' expected to match '\n message += tomatch && tomatch.length > 1 ? 'one of ' : ''\n message += `${tomatch.map(e => e ? '\"' + e + '\"' : '<any response>').join(', ')}`\n throw new BotiumError(\n message,\n {\n type: 'asserter',\n source: asserterType,\n context: {\n stepTag\n },\n cause: {\n expected: tomatch,\n actual: botresponse,\n matchingMode: this.caps[Capabilities.SCRIPTING_MATCHING_MODE]\n }\n }\n )\n }\n },\n assertBotNotResponse: (botresponse, nottomatch, stepTag, meMsg) => {\n if (!_.isArray(nottomatch)) {\n nottomatch = [nottomatch]\n }\n debug(`assertBotNotResponse ${stepTag} ${meMsg ? `(${meMsg}) ` : ''}BOT: ${botresponse} != ${nottomatch} ...`)\n const found = _.find(nottomatch, (utt) => this.matchFn(botresponse, utt, this.caps[Capabilities.SCRIPTING_MATCHING_MODE_ARGS]))\n const asserterType = this.caps[Capabilities.SCRIPTING_MATCHING_MODE] === 'wer' ? 'WerAsserter' : 'TextMatchAsserter'\n if (!_.isNil(found)) {\n let message = `${stepTag}: Bot response `\n message += meMsg ? `(on ${meMsg}) ` : ''\n message += botresponse ? ('\"' + botresponse + '\"') : '<no response>'\n message += ' expected NOT to match '\n message += nottomatch && nottomatch.length > 1 ? 'one of ' : ''\n message += `${nottomatch.map(e => e ? '\"' + e + '\"' : '<any response>').join(', ')}`\n throw new BotiumError(\n message,\n {\n type: 'asserter',\n source: asserterType,\n context: {\n stepTag\n },\n cause: {\n not: true,\n expected: nottomatch,\n actual: botresponse,\n matchingMode: this.caps[Capabilities.SCRIPTING_MATCHING_MODE]\n }\n }\n )\n }\n },\n fail: null\n }\n this.retryHelperAsserter = new RetryHelper(this.caps, 'ASSERTER')\n this.retryHelperLogicHook = new RetryHelper(this.caps, 'LOGICHOOK')\n this.retryHelperUserInput = new RetryHelper(this.caps, 'USERINPUT')\n }\n\n _createAsserterPromises ({ asserterType, asserters, convo, convoStep, scriptingMemory, ...rest }) {\n if (!this._isValidAsserterType(asserterType)) {\n throw Error(`Unknown asserterType ${asserterType}`)\n }\n\n const mapNot = {\n assertConvoBegin: 'assertNotConvoBegin',\n assertConvoStep: 'assertNotConvoStep',\n assertConvoEnd: 'assertNotConvoEnd'\n }\n const callAsserter = (asserterSpec, asserter, params) => {\n if (asserterSpec.not) {\n const notAsserterType = mapNot[asserterType]\n if (asserter[notAsserterType]) {\n return p(this.retryHelperAsserter, () => asserter[notAsserterType](params))\n } else {\n return pnot(this.retryHelperAsserter, () => asserter[asserterType](params),\n new BotiumError(\n `${convoStep.stepTag}: Expected asserter ${asserter.name || asserterSpec.name} with args \"${params.args}\" to fail`,\n {\n type: 'asserter',\n source: asserter.name || asserterSpec.name,\n params: {\n args: params.args\n },\n cause: {\n not: true,\n expected: 'failed',\n actual: 'not failed'\n }\n }\n )\n )\n }\n } else {\n return p(this.retryHelperAsserter, () => asserter[asserterType](params))\n }\n }\n\n const convoAsserter = asserters\n .filter(a => this.asserters[a.name][asserterType])\n .map(a => callAsserter(a, this.asserters[a.name], {\n convo,\n convoStep,\n scriptingMemory,\n args: ScriptingMemory.applyToArgs(a.args, scriptingMemory, this.caps, rest.botMsg),\n isGlobal: false,\n ...rest\n }))\n const globalAsserter = Object.values(this.globalAsserter)\n .filter(a => a[asserterType])\n .map(a => p(this.retryHelperAsserter, () => a[asserterType]({ convo, convoStep, scriptingMemory, args: [], isGlobal: true, ...rest })))\n\n const allPromises = [...convoAsserter, ...globalAsserter]\n if (this.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n return Promise.allSettled(allPromises).then((results) => {\n const rejected = results.filter(result => result.status === 'rejected').map(result => result.reason)\n if (rejected.length) {\n throw botiumErrorFromList(rejected, {})\n }\n return results.filter(result => result.status === 'fulfilled').map(result => result.value)\n })\n }\n if (allPromises.length > 0) return Promise.all(allPromises).then(() => true)\n return Promise.resolve(false)\n }\n\n _createLogicHookPromises ({ hookType, logicHooks, convo, convoStep, scriptingMemory, ...rest }) {\n if (hookType !== 'onMeStart' && hookType !== 'onMePrepare' && hookType !== 'onMeEnd' && hookType !== 'onBotStart' && hookType !== 'onBotPrepare' && hookType !== 'onBotEnd' &&\n hookType !== 'onConvoBegin' && hookType !== 'onConvoEnd'\n ) {\n throw Error(`Unknown hookType ${hookType}`)\n }\n\n const convoStepPromises = (logicHooks || [])\n .filter(l => this.logicHooks[l.name][hookType])\n .map(l => p(this.retryHelperLogicHook, () => this.logicHooks[l.name][hookType]({\n convo,\n convoStep,\n scriptingMemory,\n args: ScriptingMemory.applyToArgs(l.args, scriptingMemory, this.caps, rest.botMsg),\n isGlobal: false,\n ...rest\n })))\n\n const globalPromises = Object.values(this.globalLogicHook)\n .filter(l => l[hookType])\n .map(l => p(this.retryHelperLogicHook, () => l[hookType]({ convo, convoStep, scriptingMemory, args: [], isGlobal: true, ...rest })))\n\n const allPromises = [...convoStepPromises, ...globalPromises]\n if (allPromises.length > 0) return Promise.all(allPromises).then(() => true)\n return Promise.resolve(false)\n }\n\n _createUserInputPromises ({ convo, convoStep, scriptingMemory, ...rest }) {\n const convoStepPromises = (convoStep.userInputs || [])\n .filter(ui => this.userInputs[ui.name])\n .map(ui => p(this.retryHelperUserInput, () => this.userInputs[ui.name].setUserInput({\n convo,\n convoStep,\n scriptingMemory,\n args: ScriptingMemory.applyToArgs(ui.args, scriptingMemory, this.caps, rest.meMsg),\n ...rest\n })))\n\n if (convoStepPromises.length > 0) return Promise.all(convoStepPromises).then(() => true)\n return Promise.resolve(false)\n }\n\n _isValidAsserterType (asserterType) {\n return ['assertConvoBegin', 'assertConvoStep', 'assertConvoEnd'].some(t => asserterType === t)\n }\n\n _resolveUtterance ({ utterance, resolveEmptyIfUnknown = false }) {\n if (_.isString(utterance)) {\n if (this.utterances[utterance]) {\n return this.utterances[utterance].utterances\n } else {\n const parts = utterance.split(' ')\n if (this.utterances[parts[0]]) {\n const uttArgs = parts.slice(1)\n return this.utterances[parts[0]].utterances.map(utt => util.format(utt, ...uttArgs))\n }\n }\n }\n if (resolveEmptyIfUnknown) return null\n else return [utterance]\n }\n\n _buildScriptContext () {\n return {\n AddConvos: this.AddConvos.bind(this),\n AddUtterances: this.AddUtterances.bind(this),\n AddPartialConvos: this.AddPartialConvos.bind(this),\n AddScriptingMemories: this.AddScriptingMemories.bind(this),\n Match: this.Match.bind(this),\n IsAsserterValid: this.IsAsserterValid.bind(this),\n IsLogicHookValid: this.IsLogicHookValid.bind(this),\n IsUserInputValid: this.IsUserInputValid.bind(this),\n GetPartialConvos: this.GetPartialConvos.bind(this),\n scriptingEvents: {\n assertConvoBegin: this.scriptingEvents.assertConvoBegin.bind(this),\n assertConvoStep: this.scriptingEvents.assertConvoStep.bind(this),\n assertConvoEnd: this.scriptingEvents.assertConvoEnd.bind(this),\n resolveUtterance: this.scriptingEvents.resolveUtterance.bind(this),\n assertBotResponse: this.scriptingEvents.assertBotResponse.bind(this),\n assertBotNotResponse: this.scriptingEvents.assertBotNotResponse.bind(this),\n onConvoBegin: this.scriptingEvents.onConvoBegin.bind(this),\n onConvoEnd: this.scriptingEvents.onConvoEnd.bind(this),\n onMeStart: this.scriptingEvents.onMeStart.bind(this),\n onMePrepare: this.scriptingEvents.onMePrepare.bind(this),\n onMeEnd: this.scriptingEvents.onMeEnd.bind(this),\n onBotStart: this.scriptingEvents.onBotStart.bind(this),\n onBotPrepare: this.scriptingEvents.onBotPrepare.bind(this),\n onBotEnd: this.scriptingEvents.onBotEnd.bind(this),\n setUserInput: this.scriptingEvents.setUserInput.bind(this),\n fail: this.scriptingEvents.fail && this.scriptingEvents.fail.bind(this)\n }\n }\n }\n\n Build () {\n const CompilerXlsx = require('./CompilerXlsx')\n this.compilers[Constants.SCRIPTING_FORMAT_XSLX] = new CompilerXlsx(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_XSLX].Validate()\n const CompilerTxt = require('./CompilerTxt')\n this.compilers[Constants.SCRIPTING_FORMAT_TXT] = new CompilerTxt(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_TXT].Validate()\n const CompilerCsv = require('./CompilerCsv')\n this.compilers[Constants.SCRIPTING_FORMAT_CSV] = new CompilerCsv(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_CSV].Validate()\n const CompilerYaml = require('./CompilerYaml')\n this.compilers[Constants.SCRIPTING_FORMAT_YAML] = new CompilerYaml(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_YAML].Validate()\n const CompilerJson = require('./CompilerJson')\n this.compilers[Constants.SCRIPTING_FORMAT_JSON] = new CompilerJson(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_JSON].Validate()\n const CompilerMarkdown = require('./CompilerMarkdown')\n this.compilers[Constants.SCRIPTING_FORMAT_MARKDOWN] = new CompilerMarkdown(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_MARKDOWN].Validate()\n\n this.matchFn = getMatchFunction(this.caps[Capabilities.SCRIPTING_MATCHING_MODE])\n\n const logicHookUtils = new LogicHookUtils({ buildScriptContext: this._buildScriptContext(), caps: this.caps })\n this.asserters = logicHookUtils.asserters\n this.globalAsserter = logicHookUtils.getGlobalAsserter()\n this.logicHooks = logicHookUtils.logicHooks\n this.globalLogicHook = logicHookUtils.getGlobalLogicHook()\n this.userInputs = logicHookUtils.userInputs\n }\n\n IsAsserterValid (name) {\n return this.asserters[name] || false\n }\n\n IsLogicHookValid (name) {\n return this.logicHooks[name] || false\n }\n\n IsUserInputValid (name) {\n return this.userInputs[name] || false\n }\n\n Match (botresponse, utterance) {\n return this.matchFn(botresponse, utterance, 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 context = { count: 0 }\n const expandedConvos = []\n debug(`ExpandConvos - Using utterances expansion mode: ${this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE]}`)\n this.convos.forEach((convo) => {\n convo.expandPartialConvos()\n 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 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 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 const context = { count: 0 }\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 }\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 (!options.convoFilter || options.convoFilter(expanded)) {\n context.count++\n const logPerEntry = context.count < 10 ? 1 : context.count < 100 ? 10 : context.count < 1000 ? 100 : context.count < 10000 ? 1000 : 10000\n if (context.count % logPerEntry === 0) {\n debug(`Convo #${context.count} expanded (${expanded.header.name})`)\n }\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 rimraf(this.tempDirectory, (err) => {\n if (err) debug(`Cleanup temp dir ${this.tempDirectory} failed: ${util.inspect(err)}`)\n rimraffed()\n })\n } else {\n rimraffed()\n }\n }\n ], (err) => {\n if (err) {\n return reject(new Error(`Cleanup failed ${util.inspect(err)}`))\n }\n resolve()\n })\n })\n }\n\n _AssertCapabilityExists (cap) {\n if (!Object.prototype.hasOwnProperty.call(this.caps, cap)) {\n throw new Error(`Capability property ${cap} not set`)\n }\n }\n\n _AssertOneCapabilityExists () {\n const checkCaps = [...arguments]\n const found = checkCaps.find((cap) => this.caps[cap])\n if (!found) {\n throw new Error(`Capability property of ${checkCaps.join()} not set`)\n }\n }\n\n _QueueLength (channel = 'default') {\n return (this.queues[channel] && this.queues[channel].length()) || 0\n }\n\n _EmptyQueue (channel = 'default') {\n if (this.queues[channel]) {\n this.queues[channel].empty()\n }\n }\n\n async _QueueBotSays (botMsg) {\n if (_.isError(botMsg)) {\n if (!this.queues.default) {\n this.queues.default = new Queue()\n }\n this.queues.default.push(botMsg)\n this.eventEmitter.emit(Events.MESSAGE_RECEIVEFROMBOT_ERROR, this, botMsg)\n } else {\n if (!botMsg.channel) botMsg.channel = 'default'\n if (!botMsg.sender) botMsg.sender = 'bot'\n\n if (!this.queues[botMsg.channel]) {\n this.queues[botMsg.channel] = new Queue()\n }\n\n await this._RunCustomHook('onBotResponse', this.onBotResponseHook, { botMsg })\n this.queues[botMsg.channel].push(botMsg)\n this.eventEmitter.emit(Events.MESSAGE_RECEIVEDFROMBOT, this, botMsg)\n }\n }\n\n async _RunCustomHook (name, hook, args) {\n try {\n await executeHook(this.caps, hook, Object.assign({ container: this, request }, args))\n } catch (err) {\n debug(`_RunCustomHook ${name} finished with error: ${err.message || util.inspect(err)}`)\n }\n }\n}\n","const util = require('util')\nconst async = require('async')\nconst _ = require('lodash')\nconst io = require('socket.io-client')\nconst debug = require('debug')('botium-connector-GridContainer')\n\nconst Commands = require('../Commands')\nconst Events = require('../Events')\nconst Capabilities = require('../Capabilities')\nconst BaseContainer = require('./BaseContainer')\nconst BotiumMockMessage = require('../mocks/BotiumMockMessage')\n\nmodule.exports = class GridContainer extends BaseContainer {\n Validate () {\n return super.Validate().then(() => {\n this._AssertCapabilityExists(Capabilities.BOTIUMGRIDURL)\n })\n }\n\n Build () {\n this.buildPromise = this._defer()\n\n async.series([\n (baseComplete) => {\n super.Build().then(() => baseComplete()).catch(baseComplete)\n },\n\n (socketComplete) => {\n this.socket = io(this.caps[Capabilities.BOTIUMGRIDURL])\n\n this.socket.on('connect', () => {\n debug('connected')\n this.socket.emit('authentication', { apiToken: this.caps[Capabilities.BOTIUMAPITOKEN] })\n })\n this.socket.on('connect_error', (err) => {\n debug(`connect_error ${err.message}`)\n })\n this.socket.on('connect_timeout', (timeout) => {\n debug(`connect_timeout ${util.inspect(timeout)}`)\n })\n this.socket.on('error', (err) => {\n debug(`error ${err.message}`)\n })\n this.socket.on('authenticated', () => {\n debug('authenticated')\n this.socket.emit(Commands.BUILD_CONTAINER, this.caps, this.repo.sources, this.envs)\n })\n this.socket.on('unauthorized', (err) => {\n debug(`unauthorized ${err.message}`)\n socketComplete(`Grid Access not authorized: ${err.message}`)\n })\n this.socket.on(Events.TOOMUCHWORKERS_ERROR, (err) => {\n debug(`TOOMUCHWORKERS_ERROR ${err.message}`)\n socketComplete(`Grid Access not possible: ${err.message}`)\n })\n this.socket.on(Events.CONTAINER_BUILT, () => {\n debug(Events.CONTAINER_BUILT)\n socketComplete()\n })\n this.socket.on(Events.CONTAINER_BUILD_ERROR, (err) => {\n debug(`CONTAINER_BUILD_ERROR ${err.message}`)\n socketComplete(`Grid Build failed: ${err.message}`)\n })\n\n this.socket.on(Events.CONTAINER_STARTED, () => {\n debug(Events.CONTAINER_STARTED)\n this.eventEmitter.emit(Events.CONTAINER_STARTED, this)\n if (this.startPromise) {\n this.startPromise.resolve(this)\n this.startPromise = null\n }\n })\n this.socket.on(Events.CONTAINER_START_ERROR, (err) => {\n debug(`CONTAINER_START_ERROR ${err.message}`)\n this.eventEmitter.emit(Events.CONTAINER_START_ERROR, this, err)\n if (this.startPromise) {\n this.startPromise.reject(`Grid Start failed: ${err.message}`)\n this.startPromise = null\n }\n })\n\n this.socket.on(Events.MESSAGE_RECEIVEDFROMBOT, (botMsg) => {\n debug(`MESSAGE_RECEIVEDFROMBOT ${util.inspect(botMsg)}`)\n this._QueueBotSays(new BotiumMockMessage(botMsg))\n })\n\n this.socket.on(Events.CONTAINER_STOPPED, () => {\n debug(Events.CONTAINER_STOPPED)\n this.eventEmitter.emit(Events.CONTAINER_STOPPED, this)\n if (this.stopPromise) {\n this.stopPromise.resolve(this)\n this.stopPromise = null\n }\n })\n this.socket.on(Events.CONTAINER_STOP_ERROR, (err) => {\n debug(`CONTAINER_STOP_ERROR ${err.message}`)\n this.eventEmitter.emit(Events.CONTAINER_STOP_ERROR, this, err)\n if (this.stopPromise) {\n this.stopPromise.reject(`Grid Stop failed: ${err.message}`)\n this.stopPromise = null\n }\n })\n\n this.socket.on(Events.CONTAINER_CLEANED, () => {\n debug(Events.CONTAINER_CLEANED)\n this.eventEmitter.emit(Events.CONTAINER_CLEANED, this)\n if (this.cleanPromise) {\n this.cleanPromise.resolve(this)\n this.cleanPromise = null\n }\n this.socket.disconnect()\n this.socket = null\n })\n this.socket.on(Events.CONTAINER_CLEAN_ERROR, (err) => {\n debug(`CONTAINER_CLEAN_ERROR ${err.message}`)\n this.eventEmitter.emit(Events.CONTAINER_CLEAN_ERROR, this, err)\n if (this.cleanPromise) {\n this.cleanPromise.reject(`Grid Clean failed: ${err.message}`)\n this.cleanPromise = null\n }\n this.socket.disconnect()\n this.socket = null\n })\n }\n ], (err) => {\n if (err) {\n this.buildPromise.reject(new Error(`Cannot build grid containers: ${err.message}`))\n } else {\n this.buildPromise.resolve(this)\n }\n this.buildPromise = null\n })\n return this.buildPromise.promise\n }\n\n Start () {\n this.eventEmitter.emit(Events.CONTAINER_STARTING, this)\n\n return super.Start().then(() => {\n if (this.startPromise) return Promise.reject(new Error('already starting'))\n if (this.socket) {\n this.startPromise = this._defer()\n this.socket.emit(Commands.START_CONTAINER)\n\n return this.startPromise.promise\n } else {\n this.eventEmitter.emit(Events.CONTAINER_START_ERROR, this, 'Remote Agent not online')\n return Promise.reject(new Error('Remote Agent not online'))\n }\n })\n }\n\n UserSaysImpl (mockMsg) {\n return new Promise((resolve, reject) => {\n if (this.socket) {\n this.socket.emit(Commands.SENDTOBOT, mockMsg)\n this.eventEmitter.emit(Events.MESSAGE_SENTTOBOT, this, mockMsg)\n resolve(this)\n } else {\n this.eventEmitter.emit(Events.MESSAGE_SENDTOBOT_ERROR, this, 'Remote Agent not online')\n reject(new Error('Remote Agent not online'))\n }\n })\n }\n\n Stop () {\n this.eventEmitter.emit(Events.CONTAINER_STOPPING, this)\n\n return super.Stop().then(() => {\n if (this.stopPromise) return Promise.reject(new Error('already stopping'))\n if (this.socket) {\n this.stopPromise = this._defer()\n this.socket.emit(Commands.STOP_CONTAINER)\n\n return this.stopPromise.promise\n } else {\n return Promise.resolve(this)\n }\n })\n }\n\n Clean () {\n this.eventEmitter.emit(Events.CONTAINER_CLEANING, this)\n\n return super.Clean().then(() => {\n if (this.cleanPromise) return Promise.reject(new Error('already cleaning'))\n if (this.socket) {\n this.cleanPromise = this._defer()\n this.socket.emit(Commands.CLEAN_CONTAINER)\n\n return this.cleanPromise.promise\n } else {\n return Promise.resolve(this)\n }\n })\n }\n\n _ValidateCustomHook (capKey) {\n if (this.caps[capKey]) {\n if (!_.isString(this.caps[capKey])) {\n throw new Error(`Custom Hook ${capKey} has to be a command line string`)\n }\n }\n }\n\n _RunCustomHook (capKey) {\n return Promise.resolve()\n }\n\n _defer () {\n const deferred = {\n promise: null,\n resolve: null,\n reject: null\n }\n deferred.promise = new Promise((resolve, reject) => {\n deferred.resolve = resolve\n deferred.reject = reject\n })\n return deferred\n }\n}\n","const Events = require('../Events')\nconst BaseContainer = require('./BaseContainer')\nconst BotiumMockMessage = require('../mocks/BotiumMockMessage')\n\nmodule.exports = class InProcessContainer extends BaseContainer {\n UserSaysImpl (mockMsg) {\n this.eventEmitter.emit(Events.MESSAGE_SENTTOBOT, this, mockMsg)\n return Promise.resolve(this)\n }\n\n InjectBotSays (botMsg) {\n this._QueueBotSays(new BotiumMockMessage(botMsg))\n }\n}\n","const express = require('express')\nconst Redis = require('ioredis')\nconst bodyParser = require('body-parser')\nconst debug = require('debug')('botium-core-inbound-proxy')\n\nconst buildRedisHandler = (redisurl, topic) => {\n const redis = new Redis(redisurl)\n redis.on('connect', () => {\n debug(`Redis connected to ${JSON.stringify(redisurl || 'default')}`)\n })\n return (event) => {\n try {\n debug('Got Message Event:')\n debug(JSON.stringify(event, null, 2))\n\n redis.publish(topic, JSON.stringify(event))\n } catch (err) {\n debug('Error while publishing to redis')\n debug(err)\n }\n }\n}\n\nconst setupEndpoints = ({ app, endpoint, middleware, processEvent }) => {\n if (endpoint && !endpoint.endsWith('/')) endpoint = endpoint + '/'\n\n const handler = (req, res) => {\n if (req.body) {\n processEvent({\n originalUrl: req.originalUrl,\n originalMethod: req.method,\n body: req.body,\n 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 }\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 result = []\n if (isFromUser) {\n const jsonPathRoots = []\n\n const jsonPathsBody = getAllCapValues(Capabilities.SIMPLEREST_BODY_JSONPATH, this.caps)\n if (jsonPathsBody.length > 0) {\n for (const jsonPathBody of jsonPathsBody) {\n const rb = jp.query(body, jsonPathBody)\n if (_.isArray(rb)) {\n rb.forEach(r => jsonPathRoots.push(r))\n } else if (rb) {\n jsonPathRoots.push(rb)\n }\n }\n } else {\n jsonPathRoots.push(body)\n }\n\n for (const jsonPathRoot of jsonPathRoots) {\n const _retrieveMedia = (jsonPathMediaRoot, jsonPathsMedia) => {\n const retrievedMedia = []\n jsonPathsMedia.forEach(jsonPath => {\n const responseMedia = jp.query(jsonPathMediaRoot, jsonPath)\n if (responseMedia) {\n (_.isArray(responseMedia) ? _.flattenDeep(responseMedia) : [responseMedia]).forEach(m =>\n retrievedMedia.push({\n mediaUri: m,\n mimeType: mime.lookup(m) || 'application/unknown'\n })\n )\n }\n })\n return retrievedMedia\n }\n\n const _retrieveButtons = (jsonPathButtonRoot, jsonPathsButtons) => {\n const retrievedButtons = []\n jsonPathsButtons.forEach(jsonPath => {\n const responseButtons = jp.query(jsonPathButtonRoot, jsonPath)\n if (responseButtons) {\n (_.isArray(responseButtons) ? _.flattenDeep(responseButtons) : [responseButtons]).forEach(b =>\n retrievedButtons.push({\n text: b\n })\n )\n }\n })\n return retrievedButtons\n }\n\n const _getCardText = (responseCardText) => {\n if (responseCardText) {\n const texts = _.isArray(responseCardText) ? _.flattenDeep(responseCardText) : [responseCardText]\n if (texts.length > 1) {\n debug(`more than one text found for card: ${util.inspect(texts)}`)\n }\n if (texts.length > 0) {\n return texts[0]\n }\n }\n }\n\n const media = _retrieveMedia(jsonPathRoot, getAllCapValues(Capabilities.SIMPLEREST_MEDIA_JSONPATH, this.caps))\n debug(`found response media: ${util.inspect(media)}`)\n const buttons = _retrieveButtons(jsonPathRoot, getAllCapValues(Capabilities.SIMPLEREST_BUTTONS_JSONPATH, this.caps))\n debug(`found response buttons: ${util.inspect(buttons)}`)\n const cards = []\n\n const jsonPathsCards = getAllCapValues(Capabilities.SIMPLEREST_CARDS_JSONPATH, this.caps)\n jsonPathsCards.forEach(jsonPath => {\n const responseCards = jp.query(jsonPathRoot, jsonPath)\n if (responseCards) {\n (_.isArray(responseCards) ? _.flattenDeep(responseCards) : [responseCards]).forEach(c => {\n const card = {}\n\n const jsonPathsCardText = getAllCapValues(Capabilities.SIMPLEREST_CARD_TEXT_JSONPATH, this.caps)\n jsonPathsCardText.forEach(jsonPath => {\n card.text = _getCardText(jp.query(c, jsonPath))\n })\n\n const jsonPathsCardSubText = getAllCapValues(Capabilities.SIMPLEREST_CARD_SUBTEXT_JSONPATH, this.caps)\n jsonPathsCardSubText.forEach(jsonPath => {\n card.subtext = _getCardText(jp.query(c, jsonPath))\n })\n\n card.buttons = _retrieveButtons(c, getAllCapValues(Capabilities.SIMPLEREST_CARD_BUTTONS_JSONPATH, this.caps))\n card.media = _retrieveMedia(c, getAllCapValues(Capabilities.SIMPLEREST_CARD_ATTACHMENTS_JSONPATH, this.caps))\n\n if (_.keys(card).length > 0) {\n cards.push(card)\n }\n })\n }\n })\n debug(`found response cards: ${util.inspect(cards)}`)\n\n let hasMessageText = false\n const jsonPathsTexts = getAllCapValues(Capabilities.SIMPLEREST_RESPONSE_JSONPATH, this.caps)\n for (const jsonPath of jsonPathsTexts) {\n debug(`eval json path ${jsonPath}`)\n\n const responseTexts = jp.query(jsonPathRoot, jsonPath)\n debug(`found response texts: ${util.inspect(responseTexts)}`)\n\n const messageTexts = (_.isArray(responseTexts) ? _.flattenDeep(responseTexts) : [responseTexts])\n for (const [messageTextIndex, messageText] of messageTexts.entries()) {\n if (!messageText) continue\n\n hasMessageText = true\n const botMsg = { sourceData: body, messageText, media, buttons, cards }\n await executeHook(this.caps, this.responseHook, Object.assign({ botMsg, botMsgRoot: jsonPathRoot, messageTextIndex }, this.view))\n result.push(botMsg)\n }\n }\n\n if (!hasMessageText) {\n const botMsg = { messageText: '', sourceData: body, media, buttons, cards }\n const beforeHookKeys = Object.keys(botMsg)\n await executeHook(this.caps, this.responseHook, Object.assign({ botMsg, botMsgRoot: jsonPathRoot }, this.view))\n const afterHookKeys = Object.keys(botMsg)\n if (beforeHookKeys.length !== afterHookKeys.length || !!(botMsg.messageText && botMsg.messageText.length > 0) || botMsg.media.length > 0 || botMsg.buttons.length > 0 || botMsg.cards.length > 0 || !this.caps[Capabilities.SIMPLEREST_IGNORE_EMPTY]) {\n result.push(botMsg)\n }\n }\n }\n }\n return result\n }\n\n _doRequest (msg, isFromUser, updateContext) {\n return this._buildRequest(msg)\n .then((requestOptions) => new Promise((resolve, reject) => {\n debug(`constructed requestOptions ${JSON.stringify(requestOptions, null, 2)}`)\n msg.sourceData = msg.sourceData || {}\n msg.sourceData.requestOptions = requestOptions\n\n this.waitProcessQueue = []\n\n request(requestOptions, async (err, response, body) => {\n if (err) {\n return reject(new Error(`rest request failed: ${err.message}`))\n } else {\n if (response.statusCode >= 400) {\n debug(`got error response: ${response.statusCode}/${response.statusMessage}`)\n if (debug.enabled && body) {\n debug(botiumUtils.shortenJsonString(body))\n }\n if (body) {\n const jsonBody = botiumUtils.toJsonWeak(body)\n const errKey = Object.keys(jsonBody).find(k => k.startsWith('err') || k.startsWith('fail'))\n if (errKey) {\n return reject(new BotiumError(`got error response: ${response.statusCode}/${response.statusMessage} - ${jsonBody[errKey]}`, {\n message: botiumUtils.shortenJsonString(body)\n }))\n }\n }\n return reject(new Error(`got error response: ${response.statusCode}/${response.statusMessage}`))\n }\n\n if (body) {\n debug(`got response code: ${response.statusCode}, body: ${botiumUtils.shortenJsonString(body)}, 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 await timeout(pingConfig.timeout)\n } else if (response.statusCode >= 400) {\n debug(`_waitForUrlResponse on url check ${pingConfig.uri} got error response: ${response.statusCode}/${response.statusMessage}`)\n if (debug.enabled && body) {\n debug(botiumUtils.shortenJsonString(body))\n }\n await timeout(pingConfig.timeout)\n } else {\n debug(`_waitForUrlResponse success on url check ${pingConfig.uri}: ${response.statusCode}/${response.statusMessage}`)\n 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, (err) => {\n if (err) debug(`Cleanup temp dir ${tempDirectory} failed: ${util.inspect(err)}`)\n })\n }\n return reject(err)\n }\n this.eventEmitter.emit(Events.CONTAINER_BUILT, container)\n resolve(container)\n })\n })\n }\n\n BuildCompiler () {\n try {\n const compiler = new ScriptingProvider(this.caps)\n compiler.Build()\n return compiler\n } catch (err) {\n debug(`BotDriver BuildCompiler error: ${err}`)\n throw err\n }\n }\n\n /* Private Functions */\n\n // loadConfig from files\n _loadConfigFile (filename) {\n try {\n const configJson = JSON.parse(fs.readFileSync(filename))\n if (configJson.botium) {\n if (configJson.botium.Capabilities) this._mergeCaps(this.caps, configJson.botium.Capabilities)\n if (configJson.botium.Sources) this._mergeCaps(this.sources, configJson.botium.Sources)\n if (configJson.botium.Envs) this._mergeCaps(this.envs, configJson.botium.Envs)\n return true\n } else {\n debug(`Botium configuration file ${filename} contains no botium configuration. Ignored.`)\n return false\n }\n } catch (err) {\n throw new Error(`FAILED: loading Botium configuration file ${filename}: ${util.inspect(err)}`)\n }\n }\n\n // fetches config from files ordered by priority later files overwrite previous\n _fetchConfigFromFiles (files) {\n const fetchedFiles = []\n for (const file of files) {\n if (file && fs.existsSync(file)) {\n const absFilePath = path.resolve(file)\n if (this._fetchedConfigFiles.indexOf(absFilePath) < 0) {\n this._loadConfigFile(file)\n fetchedFiles.push(file)\n this._fetchedConfigFiles.push(absFilePath)\n } else {\n fetchedFiles.push(file)\n }\n }\n }\n return fetchedFiles\n }\n\n _findKeyProperty (obj) {\n const lookup = ['id', 'ID', 'Id', 'ref', 'REF', 'Ref', 'name', 'NAME', 'Name']\n for (const checkPropIdx in lookup) {\n if (Object.prototype.hasOwnProperty.call(obj, lookup[checkPropIdx])) return lookup[checkPropIdx]\n }\n }\n\n _mergeCaps (caps, newCaps) {\n if (!caps) return\n Object.keys(newCaps).forEach(capKey => {\n if (!Object.prototype.hasOwnProperty.call(caps, capKey)) {\n if (_.isString(newCaps[capKey])) {\n try {\n caps[capKey] = JSON.parse(newCaps[capKey])\n if (_.isFinite(caps[capKey])) {\n caps[capKey] = caps[capKey].toString()\n }\n } catch (err) {\n caps[capKey] = newCaps[capKey]\n }\n } else {\n caps[capKey] = newCaps[capKey]\n }\n return\n }\n\n if (_.isArray(caps[capKey])) {\n let newCapArray = newCaps[capKey]\n if (!_.isArray(newCapArray)) {\n try {\n newCapArray = JSON.parse(newCapArray)\n } catch (err) {\n debug(`Expected JSON Array in capability ${capKey}, JSON parse failed (${err}). Capability will be overwritten with maybe unexpected side effects.`)\n }\n }\n if (_.isArray(newCapArray)) {\n newCapArray.forEach(capElement => {\n const mergeKey = this._findKeyProperty(capElement)\n if (mergeKey) {\n const oldElement = caps[capKey].find(oldElement => oldElement[mergeKey] && oldElement[mergeKey] === capElement[mergeKey])\n if (oldElement) {\n _.merge(oldElement, capElement)\n return\n }\n caps[capKey].push(capElement)\n } else {\n if (caps[capKey].indexOf(capElement) < 0) {\n caps[capKey].push(capElement)\n }\n }\n })\n return\n }\n }\n if (!_.isArray(caps[capKey]) && _.isObject(caps[capKey])) {\n let newCapObject = newCaps[capKey]\n if (!_.isObject(newCapObject)) {\n try {\n newCapObject = JSON.parse(newCapObject)\n } catch (err) {\n debug(`Expected JSON Object in capability ${capKey}, JSON parse failed (${err}). Capability will be overwritten with maybe unexpected side effects.`)\n }\n }\n if (_.isObject(newCapObject)) {\n _.merge(caps[capKey], newCapObject)\n return\n }\n }\n\n if (_.isBoolean(caps[capKey])) {\n if (!_.isBoolean(newCaps[capKey])) {\n caps[capKey] = boolean(newCaps[capKey])\n return\n }\n }\n\n caps[capKey] = newCaps[capKey]\n })\n }\n\n _validate () {\n return new Promise((resolve, reject) => {\n try {\n if (!this.caps[Capabilities.PROJECTNAME]) {\n throw new Error(`Capability property ${Capabilities.PROJECTNAME} not set`)\n }\n if (!this.caps[Capabilities.TEMPDIR]) {\n throw new Error(`Capability property ${Capabilities.TEMPDIR} not set`)\n }\n if (!this.caps[Capabilities.CONTAINERMODE] && !this.caps[Capabilities.BOTIUMGRIDURL]) {\n throw new Error(`Capability '${Capabilities.CONTAINERMODE}' or '${Capabilities.BOTIUMGRIDURL}' missing`)\n }\n\n 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","module.exports = {\n BotDriver: require('./src/BotDriver'),\n ScriptingProvider: require('./src/scripting/ScriptingProvider'),\n ScriptingConstants: require('./src/scripting/Constants'),\n Capabilities: require('./src/Capabilities'),\n Defaults: require('./src/Defaults'),\n Enums: require('./src/Enums'),\n Source: require('./src/Source'),\n Events: require('./src/Events'),\n Plugins: require('./src/Plugins'),\n BotiumError: require('./src/scripting/BotiumError').BotiumError,\n ScriptingMemory: require('./src/scripting/ScriptingMemory'),\n HookUtils: require('./src/helpers/HookUtils'),\n LogicHookConstants: require('./src/scripting/logichook/LogicHookConsts'),\n Lib: {\n tryLoadPlugin: require('./src/containers/plugins/index').tryLoadPlugin,\n SimpleRestContainer: require('./src/containers/plugins/SimpleRestContainer')\n },\n InboundProxy: require('./src/grid/inbound/proxy'),\n BotiumMockRichMessageTypes: require('./src/mocks/BotiumMockRichMessageTypes')\n}\n"],"names":["Capabilities","PROJECTNAME","TESTSESSIONNAME","TESTCASENAME","TEMPDIR","CLEANUPTEMPDIR","WAITFORBOTTIMEOUT","CONTAINERMODE","PLUGINMODULEPATH","SIMULATE_WRITING_SPEED","BOTIUMGRIDURL","BOTIUMAPITOKEN","BOTIUMGRIDSLOT","SIMPLEREST_PING_URL","SIMPLEREST_PING_VERB","SIMPLEREST_PING_BODY","SIMPLEREST_PING_BODY_RAW","SIMPLEREST_PING_HEADERS","SIMPLEREST_PING_REQUEST_HOOK","SIMPLEREST_PING_RETRIES","SIMPLEREST_PING_TIMEOUT","SIMPLEREST_PING_UPDATE_CONTEXT","SIMPLEREST_PING_PROCESS_RESPONSE","SIMPLEREST_START_URL","SIMPLEREST_START_VERB","SIMPLEREST_START_BODY","SIMPLEREST_START_BODY_RAW","SIMPLEREST_START_HEADERS","SIMPLEREST_START_REQUEST_HOOK","SIMPLEREST_START_RETRIES","SIMPLEREST_START_TIMEOUT","SIMPLEREST_START_UPDATE_CONTEXT","SIMPLEREST_START_PROCESS_RESPONSE","SIMPLEREST_STOP_URL","SIMPLEREST_STOP_VERB","SIMPLEREST_STOP_BODY","SIMPLEREST_STOP_BODY_RAW","SIMPLEREST_STOP_HEADERS","SIMPLEREST_STOP_REQUEST_HOOK","SIMPLEREST_STOP_RETRIES","SIMPLEREST_STOP_TIMEOUT","SIMPLEREST_INIT_CONTEXT","SIMPLEREST_INIT_TEXT","SIMPLEREST_INIT_PROCESS_RESPONSE","SIMPLEREST_PROXY_URL","SIMPLEREST_STRICT_SSL","SIMPLEREST_URL","SIMPLEREST_EXTRA_OPTIONS","SIMPLEREST_IGNORE_EMPTY","SIMPLEREST_TIMEOUT","SIMPLEREST_METHOD","SIMPLEREST_VERB","SIMPLEREST_HEADERS_TEMPLATE","SIMPLEREST_BODY_TEMPLATE","SIMPLEREST_BODY_RAW","SIMPLEREST_START_HOOK","SIMPLEREST_STOP_HOOK","SIMPLEREST_REQUEST_HOOK","SIMPLEREST_PARSER_HOOK","SIMPLEREST_POLL_URL","SIMPLEREST_POLL_VERB","SIMPLEREST_POLL_BODY","SIMPLEREST_POLL_BODY_RAW","SIMPLEREST_POLL_HEADERS","SIMPLEREST_POLL_REQUEST_HOOK","SIMPLEREST_POLL_INTERVAL","SIMPLEREST_POLL_TIMEOUT","SIMPLEREST_POLL_UPDATE_CONTEXT","SIMPLEREST_BODY_JSONPATH","SIMPLEREST_RESPONSE_JSONPATH","SIMPLEREST_RESPONSE_HOOK","SIMPLEREST_MEDIA_JSONPATH","SIMPLEREST_BUTTONS_JSONPATH","SIMPLEREST_CARDS_JSONPATH","SIMPLEREST_CARD_TEXT_JSONPATH","SIMPLEREST_CARD_SUBTEXT_JSONPATH","SIMPLEREST_CARD_BUTTONS_JSONPATH","SIMPLEREST_CARD_ATTACHMENTS_JSONPATH","SIMPLEREST_CONTEXT_JSONPATH","SIMPLEREST_CONTEXT_MERGE_OR_REPLACE","SIMPLEREST_CONVERSATION_ID_TEMPLATE","SIMPLEREST_STEP_ID_TEMPLATE","SIMPLEREST_INBOUND_REDISURL","SIMPLEREST_INBOUND_ENDPOINT","SIMPLEREST_INBOUND_PORT","SIMPLEREST_INBOUND_SELECTOR_JSONPATH","SIMPLEREST_INBOUND_SELECTOR_VALUE","SIMPLEREST_INBOUND_UPDATE_CONTEXT","SIMPLEREST_REDIS_TOPIC","SIMPLEREST_INBOUND_ORDER_UNSETTLED_EVENTS_JSONPATH","SIMPLEREST_INBOUND_DEBOUNCE_TIMEOUT","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","MESSAGE_SENTTOBOT","MESSAGE_SENDTOBOT_ERROR","MESSAGE_RECEIVEDFROMBOT","MESSAGE_RECEIVEFROMBOT_ERROR","MESSAGE_ATTACHMENT","MESSAGE_TRANSCRIPT","TOOMUCHWORKERS_ERROR","BotiumError","Error","message","context","supressChildCheck","_getChildErrorsFromContext","name","captureStackTrace","isAsserterError","errArr","isArray","hasNotAsserterError","findIndex","errDetail","type","errors","e","prettify","includeJson","lines","forEach","segments","source","subtype","cause","expected","not","JSON","stringify","actual","join","input","transcript","length","transcriptStep","jsonOutput","jsonErr","botiumErrorFromErr","botiumErrorFromList","flat","map","toString","children","error","childErrors","concat","result","BotiumError_1","LOGIC_HOOK_INCLUDE","LogicHookConsts","DEFAULT_ASSERTERS","className","DEFAULT_LOGIC_HOOKS","DEFAULT_USER_INPUTS","NodeVM","require$$0","debug","require$$1","require$$2","require$$3","asserter","Class","require","logicHook","userInput","LogicHookUtils_1","LogicHookUtils","buildScriptContext","caps","asserters","globalAsserters","logicHooks","globalLogicHooks","userInputs","_setDefaultAsserters","_setDefaultLogicHooks","_setDefaultUserInputs","_fetchAsserters","_fetchLogicHooks","_fetchUserInputs","lh","ui","ref","_loadClass","global","getGlobalAsserter","getGlobalLogicHook","src","args","hookType","find","_checkUnsafe","path","basename","__filename","packageName","CheckClass","isClass","PluginClass","isObject","isString","hookObject","keys","reduce","key","script","vm","eval","sandbox","run","loadErr","tryLoads","tryLoadPackageName","tryLoadAsserterByName","indexOf","substr","lastIndexOf","tryLoadFromSource","tryRequire","tryAsserterName","default","PluginAsserters","PluginLogicHooks","tryLoad","tryLoadFile","process","cwd","fs","existsSync","Constants","SCRIPTING_FORMAT_XSLX","SCRIPTING_FORMAT_TXT","SCRIPTING_FORMAT_YAML","SCRIPTING_FORMAT_JSON","SCRIPTING_FORMAT_CSV","SCRIPTING_FORMAT_MARKDOWN","SCRIPTING_TYPE_CONVO","SCRIPTING_TYPE_PCONVO","SCRIPTING_TYPE_UTTERANCES","SCRIPTING_TYPE_SCRIPTING_MEMORY","BotiumMockAttachment_1","BotiumMockAttachment","fromJson","mimeType","base64","href","BotiumMockMedia","mediaUri","altText","downloadUri","buffer","indent","sections","truncate","repeat","BotiumMockButton","payload","imageUri","BotiumMockCard","subtext","content","sourceData","image","buttons","a","media","forms","BotiumMockForm","cards","_prettifyLines","card","prettifySafe","entry","m","b","f","c","value","label","options","BotiumMockChoice","title","BotiumMockRichMessageTypes","BotiumMockAsserter","cloneDeep","BotiumMockUserInput","BotiumMockLogicHook","BotiumMockScripting","BotiumMockMessage_1","BotiumMockMessage","sender","optional","nlp","sourceAction","attachments","slice","Enums","E_SCRIPTING_MEMORY_COLUMN_MODE","VARNAMES","TESTCASENAMES","normalizeText","str","doCleanup","replace","split","s","trim","splitStringInNonEmptyLines","filter","quoteRegexpString","removeBuffers","obj","jsonString","isBuffer","toLowerCase","startsWith","parse","isUndefined","undefined","isNumber","v","flatString","_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","helper","v1","uuidv1","require$$4","SCRIPTING_FUNCTIONS_RAW","$now","Date","toLocaleString","$now_EN","$now_DE","moment","format","$now_ISO","toISOString","$date","pattern","toLocaleDateString","$date_EN","$date_DE","$date_ISO","$time","toLocaleTimeString","$time_EN","$time_DE","$time_ISO","$time_HH_MM","$time_HH","$time_H_A","$timestamp","now","$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","utterance","util","inspect","varRegex","utterances","resolveUtterance","reExpected","varMatches","varMatchesRegexp","resultMatches","ScriptingMemory","RetryHelper_1","RetryHelper","section","retryErrorPatterns","onErrorRegexp","toUpperCase","r","retrySettings","retries","isNil","numRetries","factor","minTimeout","shouldRetry","errString","re","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","retryHelper","promiseRetry","retry","number","RunImpl","retryRemaining","onConvoBegin","assertConvoBegin","runConversation","_checkBotRepliesConsumed","onConvoEnd","assertConvoEndErr","assertConvoEnd","eventEmitter","emit","transcriptSteps","lastMeConvoStep","waitForBotSays","skipTranscriptStep","currentStepIndex","meMsg","WORKAROUND_OVERWRITE_JSON_MESSAGE_TEXT","setUserInput","onMeStart","onMePrepare","coreMsg","omit","setTimeout","isNull","onMeEnd","failErr","onBotStart","prepared","onBotPrepare","isErrorHandledWithOptionConvoStep","nextConvoStep","assertErrors","scriptingMemoryUpdate","response","_checkNormalizeText","tomatch","_resolveUtterancesToMatch","assertBotNotResponse","_compareObject","assertConvoStep","onBotEnd","transcriptStepErrs","forOwn","prototype","hasOwnProperty","call","GetScriptingMemoryAllVariables","resultOuter","GetScriptingMemoryVariables","extractFromArgs","convoStepItems","resultInner","item","queueLength","_QueueLength","normalizedUtterances","expandPartialConvos","_getIncludeLogicHookNames","hook","partialConvos","GetPartialConvos","_getEffectiveConversationRecursive","parentPConvos","ignoreBeginEnd","includeLogicHooks","steptagPath","includeLogicHook","alreadyThereAt","partialConvo","Convo_1","_normalize","botresponse","regexp","ignoreCase","test","wildcard","numWildcards","utteranceRe","wildcardExact","include","equals","wer","speechScorer","wordErrorRate","getMatchFunction","matchingMode","MatchFunctions","isStringJson","string","isJsonObject","json","stringIsJson","isJson","toJsonWeak","stringOrNot","optionalJson","body","shortenJsonString","escapeJSONString","character","formatTimeout","ms","Math","floor","Utils","_ensureList","queryResult","precompile","filename","checkerJsonpath","CHECKER_JSONPATH","rootJsonpath","ROOT_JSONPATH","utteranceRefsJsonpath","UTTERANCE_REF_JSONPATH","utterancesJsonpath","UTTERANCES_JSONPATH","scriptData","scouldExist","rootObjects","intent","executeHook","executeHookSync","getHook","data","allowUnsafe","resultWithRequire","hookData","esprima","parseScript","HookUtils","SCRIPT","htmlCommentRegexp","md","MarkdownIt","parsed","_extractFromRasaIntent","_extractFromRasaSentence","rasaSentence","matched","splitted","meText","meTexts","state","processLeafs","uniq","getAllCapValues","capNamePrefix","allCapValues","jsonPathCaps","pickBy","k","each","p","flatCababilities","prefix","capNames","regexpPrefixAndGroup","currentGroup","currentObject","capName","charAt","capPrefixAndGroup","PROVIDERS","JSON_TO_JSON_JSONPATH","MARKDOWN_RASA","CAPABILITY_PREFIX","require$$5","execute","ownCaps","Buffer","capSuffixAndVal","NAME","provider","precompiler","CompilerBase_1","CompilerBase","AddConvos","AddPartialConvos","AddUtterances","AddScriptingMemories","Validate","GetHeaders","Decompile","_AssertCapabilityExists","cap","_GetOptionalCapability","def","_GetCapabilitiesByPrefix","Utterance_1","Utterance","CompilerXlsx_1","CompilerXlsx","colnames","_splitSheetnames","sheetnames","_filterSheetnames","selectors","filteredSheetnames","sheetname","selector","workbook","XLSX","read","Props","maxEmptyRowCount","SheetNames","scriptResults","sheet","Sheets","rowindex","colindex","hasNameCol","_findOrigin","parseCell","eolSplit","_extractRow","cell1","cell1Value","cell2","cell2Value","cell3","cell3Value","nameCell","nameCellValue","meCell","meCellValue","botCell","botCellValue","questionAnswerMode","emptyRowCount","index","foundQARows","foundConvoRows","convoResults","currentConvo","currentConvoName","startrowindex","formatLength","max","formatBase","formatRowIndex","currentUtterance","emptylines","uttCell","line1Cell","colindexTemp","caseNameCell","varNameCell","variableValueCell","variableNames","variableNameCell","cellContent","stepLines","wb","utils","book_new","ws","json_to_sheet","book_append_sheet","xlsxOutput","write","_get","cell","cellValue","NestedLoop","cr","cc","CompilerTxt_1","CompilerTxt","line","_compileConvo","_compileUtterances","_compileScriptingMemory","isPartial","currentLineIndex","currentLines","convoStepSender","convoStepChannel","convoStepLineIndex","parseMsg","pushPrev","isValidTagLine","includes","DELIMITERS_CHECK","DEFAULT_DELIMITER","DEFAULT_QA_COLUMN_QUESTION","DEFAULT_QA_COLUMN_ANSWER","DEFAULT_MULTIROW_COLUMN_CONVERSATION","DEFAULT_MULTIROW_COLUMN_SENDER","DEFAULT_MULTIROW_COLUMN_TEXT","_findColIndex","colName","h","CompilerCsv_1","CompilerCsv","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","skip","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","fn","promise","pnot","errTemplate","ScriptingProvider_1","ScriptingProvider","compilers","matchFn","globalAsserter","globalLogicHook","_createLogicHookPromises","_createAsserterPromises","asserterType","_createUserInputPromises","resolveEmptyIfUnknown","_resolveUtterance","found","utt","nottomatch","retryHelperAsserter","retryHelperLogicHook","retryHelperUserInput","_isValidAsserterType","mapNot","callAsserter","asserterSpec","params","notAsserterType","convoAsserter","isGlobal","allPromises","allSettled","results","rejected","status","reason","all","convoStepPromises","globalPromises","some","t","parts","uttArgs","_buildScriptContext","Match","require$$6","require$$7","require$$8","require$$9","require$$10","logicHookUtils","GetCompiler","ReadBotiumFilesFromDirectory","filelist","globby","sync","gitignore","filelistGlobbed","remove","file","isSkip","convoDirStats","statSync","isFile","dirname","dirConvos","dirUtterances","dirPartialConvos","dirScriptingMemories","pconvos","ReadScript","dirScriptingMemory","ReadScriptFromBuffer","scriptingFormat","scriptingTypes","readFileSync","precompResponse","precompilers","fileConvo","filePartialConvo","_tagAndCleanupUtterances","utteranceFiles","fileUtt","ExpandScriptingMemoryToConvos","aggregatedNoNames","aggregatedNoVariables","aggregatedNoVariableNames","aggregatedDuplicates","duplicate","j","aggregatedIntersections","intersection","k1","k2","kInt","variablesToScriptingMemory","Map","get","convosExpandedAll","convosOriginalAll","convoVariables","convosToExpand","convosExpandedConvo","multipliers","convosExpandedVariable","convoToExpand","convoExpanded","_sortConvos","ExpandUtterancesToConvos","useNameAsIntent","incomprehensionIntents","incomprehensionUtts","incomprehensionUtt","expandedConvos","uttName","responseStep","ii","origUttName","justHeader","convoFilter","count","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","min","x","random","uiIndex","expandConvo","expandedUserInputs","processSampleInputs","sampleinputs","processSampleInput","sampleinput","currentStepMod","convoPostfix","logPerEntry","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","end","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","jsonPathRoots","jsonPathsBody","jsonPathBody","rb","jsonPathRoot","_retrieveMedia","jsonPathMediaRoot","jsonPathsMedia","retrievedMedia","responseMedia","flattenDeep","mime","lookup","_retrieveButtons","jsonPathButtonRoot","jsonPathsButtons","retrievedButtons","responseButtons","_getCardText","responseCardText","texts","jsonPathsCards","responseCards","jsonPathsCardText","jsonPathsCardSubText","hasMessageText","jsonPathsTexts","responseTexts","messageTexts","messageTextIndex","botMsgRoot","beforeHookKeys","afterHookKeys","_buildRequest","requestOptions","statusCode","statusMessage","enabled","jsonBody","errKey","_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","subscribe","unsubscribe","close","_runPolling","verb","pollConfig","pollInterval","setInterval","clearInterval","capPrefix","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","botiumCore","ScriptingConstants","require$$11","LogicHookConstants","require$$12","Lib","require$$13","require$$14","InboundProxy","require$$15","require$$16"],"mappings":"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"}
1
+ {"version":3,"file":"botium-es.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/helpers/RetryHelper.js","../src/scripting/Convo.js","../src/scripting/MatchFunctions.js","../src/helpers/Utils.js","../src/scripting/precompilers/JsonToJson.js","../src/helpers/HookUtils.js","../src/scripting/precompilers/Script.js","../src/scripting/precompilers/MarkdownRasa.js","../src/helpers/CapabilitiesUtils.js","../src/scripting/precompilers/index.js","../src/scripting/CompilerBase.js","../src/scripting/Utterance.js","../src/scripting/CompilerXlsx.js","../src/scripting/CompilerTxt.js","../src/scripting/CompilerCsv.js","../src/scripting/CompilerObjectBase.js","../src/scripting/CompilerYaml.js","../src/scripting/CompilerJson.js","../src/scripting/CompilerMarkdown.js","../src/scripting/ScriptingProvider.js","../src/repos/BaseRepo.js","../src/repos/NoRepo.js","../src/helpers/ProcessUtils.js","../src/repos/GitRepo.js","../src/repos/LocalRepo.js","../src/Commands.js","../src/helpers/QueueTimeoutError.js","../src/helpers/Queue.js","../src/containers/BaseContainer.js","../src/containers/GridContainer.js","../src/containers/InProcessContainer.js","../src/grid/inbound/proxy.js","../src/containers/plugins/SimpleRestContainer.js","../src/containers/plugins/index.js","../src/containers/PluginConnectorContainer.js","../src/BotDriver.js","../src/Plugins.js","../index.js"],"sourcesContent":["module.exports = {\n PROJECTNAME: 'PROJECTNAME',\n TESTSESSIONNAME: 'TESTSESSIONNAME',\n TESTCASENAME: 'TESTCASENAME',\n TEMPDIR: 'TEMPDIR',\n CLEANUPTEMPDIR: 'CLEANUPTEMPDIR',\n WAITFORBOTTIMEOUT: 'WAITFORBOTTIMEOUT',\n CONTAINERMODE: 'CONTAINERMODE',\n PLUGINMODULEPATH: 'PLUGINMODULEPATH',\n // falsy or ms/keystroke\n SIMULATE_WRITING_SPEED: 'SIMULATE_WRITING_SPEED',\n BOTIUMGRIDURL: 'BOTIUMGRIDURL',\n BOTIUMAPITOKEN: 'BOTIUMAPITOKEN',\n BOTIUMGRIDSLOT: 'BOTIUMGRIDSLOT',\n // Simple Reset Bot Settings\n SIMPLEREST_PING_URL: 'SIMPLEREST_PING_URL',\n SIMPLEREST_PING_VERB: 'SIMPLEREST_PING_VERB',\n SIMPLEREST_PING_BODY: 'SIMPLEREST_PING_BODY',\n SIMPLEREST_PING_BODY_RAW: 'SIMPLEREST_PING_BODY_RAW',\n SIMPLEREST_PING_HEADERS: 'SIMPLEREST_PING_HEADERS',\n SIMPLEREST_PING_REQUEST_HOOK: 'SIMPLEREST_PING_REQUEST_HOOK',\n SIMPLEREST_PING_RETRIES: 'SIMPLEREST_PING_RETRIES',\n SIMPLEREST_PING_TIMEOUT: 'SIMPLEREST_PING_TIMEOUT',\n SIMPLEREST_PING_UPDATE_CONTEXT: 'SIMPLEREST_PING_UPDATE_CONTEXT',\n SIMPLEREST_PING_PROCESS_RESPONSE: 'SIMPLEREST_PING_PROCESS_RESPONSE',\n SIMPLEREST_START_URL: 'SIMPLEREST_START_URL',\n SIMPLEREST_START_VERB: 'SIMPLEREST_START_VERB',\n SIMPLEREST_START_BODY: 'SIMPLEREST_START_BODY',\n SIMPLEREST_START_BODY_RAW: 'SIMPLEREST_START_BODY_RAW',\n SIMPLEREST_START_HEADERS: 'SIMPLEREST_START_HEADERS',\n SIMPLEREST_START_REQUEST_HOOK: 'SIMPLEREST_START_REQUEST_HOOK',\n SIMPLEREST_START_RETRIES: 'SIMPLEREST_START_RETRIES',\n SIMPLEREST_START_TIMEOUT: 'SIMPLEREST_START_TIMEOUT',\n SIMPLEREST_START_UPDATE_CONTEXT: 'SIMPLEREST_START_UPDATE_CONTEXT',\n SIMPLEREST_START_PROCESS_RESPONSE: 'SIMPLEREST_START_PROCESS_RESPONSE',\n SIMPLEREST_STOP_URL: 'SIMPLEREST_STOP_URL',\n SIMPLEREST_STOP_VERB: 'SIMPLEREST_STOP_VERB',\n SIMPLEREST_STOP_BODY: 'SIMPLEREST_STOP_BODY',\n SIMPLEREST_STOP_BODY_RAW: 'SIMPLEREST_STOP_BODY_RAW',\n SIMPLEREST_STOP_HEADERS: 'SIMPLEREST_STOP_HEADERS',\n SIMPLEREST_STOP_REQUEST_HOOK: 'SIMPLEREST_STOP_REQUEST_HOOK',\n SIMPLEREST_STOP_RETRIES: 'SIMPLEREST_STOP_RETRIES',\n SIMPLEREST_STOP_TIMEOUT: 'SIMPLEREST_STOP_TIMEOUT',\n SIMPLEREST_INIT_CONTEXT: 'SIMPLEREST_INIT_CONTEXT',\n SIMPLEREST_INIT_TEXT: 'SIMPLEREST_INIT_TEXT',\n SIMPLEREST_INIT_PROCESS_RESPONSE: 'SIMPLEREST_INIT_PROCESS_RESPONSE',\n SIMPLEREST_PROXY_URL: 'SIMPLEREST_PROXY_URL',\n SIMPLEREST_STRICT_SSL: 'SIMPLEREST_STRICT_SSL',\n SIMPLEREST_URL: 'SIMPLEREST_URL',\n SIMPLEREST_EXTRA_OPTIONS: 'SIMPLEREST_EXTRA_OPTIONS',\n SIMPLEREST_IGNORE_EMPTY: 'SIMPLEREST_IGNORE_EMPTY',\n SIMPLEREST_TIMEOUT: 'SIMPLEREST_TIMEOUT',\n SIMPLEREST_METHOD: 'SIMPLEREST_METHOD',\n SIMPLEREST_VERB: 'SIMPLEREST_VERB',\n SIMPLEREST_HEADERS_TEMPLATE: 'SIMPLEREST_HEADERS_TEMPLATE',\n SIMPLEREST_BODY_TEMPLATE: 'SIMPLEREST_BODY_TEMPLATE',\n SIMPLEREST_BODY_RAW: 'SIMPLEREST_BODY_RAW',\n SIMPLEREST_START_HOOK: 'SIMPLEREST_START_HOOK',\n SIMPLEREST_STOP_HOOK: 'SIMPLEREST_STOP_HOOK',\n SIMPLEREST_REQUEST_HOOK: 'SIMPLEREST_REQUEST_HOOK',\n SIMPLEREST_PARSER_HOOK: 'SIMPLEREST_PARSER_HOOK',\n SIMPLEREST_POLL_URL: 'SIMPLEREST_POLL_URL',\n SIMPLEREST_POLL_VERB: 'SIMPLEREST_POLL_VERB',\n SIMPLEREST_POLL_BODY: 'SIMPLEREST_POLL_BODY',\n SIMPLEREST_POLL_BODY_RAW: 'SIMPLEREST_POLL_BODY_RAW',\n SIMPLEREST_POLL_HEADERS: 'SIMPLEREST_POLL_HEADERS',\n SIMPLEREST_POLL_REQUEST_HOOK: 'SIMPLEREST_POLL_REQUEST_HOOK',\n SIMPLEREST_POLL_INTERVAL: 'SIMPLEREST_POLL_INTERVAL',\n SIMPLEREST_POLL_TIMEOUT: 'SIMPLEREST_PING_TIMEOUT',\n SIMPLEREST_POLL_UPDATE_CONTEXT: 'SIMPLEREST_POLL_UPDATE_CONTEXT',\n SIMPLEREST_BODY_JSONPATH: 'SIMPLEREST_BODY_JSONPATH',\n SIMPLEREST_RESPONSE_JSONPATH: 'SIMPLEREST_RESPONSE_JSONPATH',\n SIMPLEREST_RESPONSE_HOOK: 'SIMPLEREST_RESPONSE_HOOK',\n SIMPLEREST_MEDIA_JSONPATH: 'SIMPLEREST_MEDIA_JSONPATH',\n SIMPLEREST_BUTTONS_JSONPATH: 'SIMPLEREST_BUTTONS_JSONPATH',\n SIMPLEREST_CARDS_JSONPATH: 'SIMPLEREST_CARDS_JSONPATH',\n SIMPLEREST_CARD_TEXT_JSONPATH: 'SIMPLEREST_CARD_TEXT_JSONPATH',\n SIMPLEREST_CARD_SUBTEXT_JSONPATH: 'SIMPLEREST_CARD_SUBTEXT_JSONPATH',\n SIMPLEREST_CARD_BUTTONS_JSONPATH: 'SIMPLEREST_CARD_BUTTONS_JSONPATH',\n SIMPLEREST_CARD_ATTACHMENTS_JSONPATH: 'SIMPLEREST_CARD_ATTACHMENTS_JSONPATH',\n SIMPLEREST_CONTEXT_JSONPATH: 'SIMPLEREST_CONTEXT_JSONPATH',\n SIMPLEREST_CONTEXT_MERGE_OR_REPLACE: 'SIMPLEREST_CONTEXT_MERGE_OR_REPLACE',\n SIMPLEREST_CONVERSATION_ID_TEMPLATE: 'SIMPLEREST_CONVERSATION_ID_TEMPLATE',\n SIMPLEREST_STEP_ID_TEMPLATE: 'SIMPLEREST_STEP_ID_TEMPLATE',\n SIMPLEREST_INBOUND_REDISURL: 'SIMPLEREST_INBOUND_REDISURL',\n SIMPLEREST_INBOUND_ENDPOINT: 'SIMPLEREST_INBOUND_ENDPOINT',\n SIMPLEREST_INBOUND_PORT: 'SIMPLEREST_INBOUND_PORT',\n SIMPLEREST_INBOUND_SELECTOR_JSONPATH: 'SIMPLEREST_INBOUND_SELECTOR_JSONPATH',\n SIMPLEREST_INBOUND_SELECTOR_VALUE: 'SIMPLEREST_INBOUND_SELECTOR_VALUE',\n SIMPLEREST_INBOUND_UPDATE_CONTEXT: 'SIMPLEREST_INBOUND_UPDATE_CONTEXT',\n SIMPLEREST_REDIS_TOPIC: 'SIMPLEREST_REDIS_TOPIC',\n SIMPLEREST_INBOUND_ORDER_UNSETTLED_EVENTS_JSONPATH: 'SIMPLEREST_INBOUND_ORDER_UNSETTLED_EVENTS_JSONPATH',\n SIMPLEREST_INBOUND_DEBOUNCE_TIMEOUT: 'SIMPLEREST_INBOUND_DEBOUNCE_TIMEOUT',\n 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.SIMULATE_WRITING_SPEED]: false,\n [Capabilities.SIMPLEREST_PING_RETRIES]: 6,\n [Capabilities.SIMPLEREST_PING_TIMEOUT]: 10000,\n [Capabilities.SIMPLEREST_PING_VERB]: 'GET',\n [Capabilities.SIMPLEREST_PING_UPDATE_CONTEXT]: true,\n [Capabilities.SIMPLEREST_PING_PROCESS_RESPONSE]: false,\n [Capabilities.SIMPLEREST_INIT_PROCESS_RESPONSE]: false,\n [Capabilities.SIMPLEREST_STOP_RETRIES]: 6,\n [Capabilities.SIMPLEREST_STOP_TIMEOUT]: 10000,\n [Capabilities.SIMPLEREST_STOP_VERB]: 'GET',\n [Capabilities.SIMPLEREST_START_RETRIES]: 6,\n [Capabilities.SIMPLEREST_START_TIMEOUT]: 10000,\n [Capabilities.SIMPLEREST_START_UPDATE_CONTEXT]: true,\n [Capabilities.SIMPLEREST_START_PROCESS_RESPONSE]: true,\n [Capabilities.SIMPLEREST_START_VERB]: 'GET',\n [Capabilities.SIMPLEREST_POLL_VERB]: 'GET',\n [Capabilities.SIMPLEREST_POLL_INTERVAL]: 1000,\n [Capabilities.SIMPLEREST_POLL_TIMEOUT]: 10000,\n [Capabilities.SIMPLEREST_POLL_UPDATE_CONTEXT]: true,\n [Capabilities.SIMPLEREST_METHOD]: 'GET',\n [Capabilities.SIMPLEREST_IGNORE_EMPTY]: true,\n [Capabilities.SIMPLEREST_TIMEOUT]: 10000,\n [Capabilities.SIMPLEREST_STRICT_SSL]: true,\n [Capabilities.SIMPLEREST_INBOUND_UPDATE_CONTEXT]: true,\n [Capabilities.SIMPLEREST_CONTEXT_MERGE_OR_REPLACE]: 'MERGE',\n [Capabilities.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 // 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 ],\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')\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)) return undefined\n if (_.isString(value)) return value\n if (_.isNumber(value)) return value.toString()\n if (_.isArray(value)) return value.map(v => toString(v)).join(',')\n try {\n return JSON.stringify(value)\n } catch (err) {\n }\n if (value && value.toString) return value.toString()\n return '' + value\n}\n\nconst flatString = (str) => {\n return str ? str.split('\\n').map(s => s.trim()).join(' ') : ''\n}\n\nconst _formatAppendArgs = (args) => {\n return 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\nmodule.exports = {\n normalizeText,\n splitStringInNonEmptyLines,\n quoteRegexpString,\n toString,\n flatString,\n removeBuffers,\n linesToConvoStep,\n convoStepToLines,\n convoStepToObject,\n validSenders,\n validateSender,\n validateConvo,\n linesToScriptingMemories\n}\n","const util = require('util')\nconst debug = require('debug')('botium-core-ScriptingMemory')\nconst randomize = require('randomatic')\nconst { v1: uuidv1 } = require('uuid')\nconst moment = require('moment')\nconst { NodeVM } = require('vm2')\nconst _ = require('lodash')\nconst path = require('path')\nconst jp = require('jsonpath')\n\nconst Capabilities = require('../Capabilities')\nconst { quoteRegexpString, toString } = require('./helper')\nconst { BotiumError } = require('./BotiumError')\n\n// If they got parameter, then it will be a string always.\n// the receiver can decide what to do with it,\n// convert to int,\n// split by ',' for multiple params,\n// or something else\nconst SCRIPTING_FUNCTIONS_RAW = {\n $now: () => {\n return new Date().toLocaleString()\n },\n $now_EN: () => {\n return new Date().toLocaleString('en-EN')\n },\n $now_DE: () => {\n return moment().format('DD.MM.YYYY, HH:mm:ss')\n },\n $now_ISO: () => {\n return new Date().toISOString()\n },\n\n $date: (pattern) => {\n if (pattern) {\n return moment().format(pattern)\n }\n return new Date().toLocaleDateString()\n },\n $date_EN: () => {\n return new Date().toLocaleDateString('en-EN')\n },\n $date_DE: () => {\n return moment().format('YYYY.MM.DD')\n },\n $date_ISO: () => {\n return moment().format('YYYY-MM-DD')\n },\n\n $time: () => {\n return new Date().toLocaleTimeString()\n },\n $time_EN: () => {\n return new Date().toLocaleTimeString('en-EN')\n },\n $time_DE: () => {\n return moment().format('HH:mm:ss')\n },\n $time_ISO: () => {\n return moment().format('HH:mm:ss')\n },\n $time_HH_MM: () => {\n return moment().format('HH:mm')\n },\n $time_HH: () => {\n return moment().format('HH')\n },\n $time_H_A: () => {\n return moment().format('h A')\n },\n\n $timestamp: () => {\n return Date.now()\n },\n\n $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-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 util = require('util')\nconst _ = require('lodash')\nconst debug = require('debug')('botium-core-Convo')\nconst promiseRetry = require('promise-retry')\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')\nconst RetryHelper = require('../helpers/RetryHelper')\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 retryHelper = new RetryHelper(container.caps, 'CONVO')\n return promiseRetry(async (retry, number) => {\n return this.RunImpl(container).catch(err => {\n const retryRemaining = retryHelper.retrySettings.retries - number + 1\n if (retryHelper.shouldRetry(err)) {\n debug(`Convo failed with error \"${err.message || JSON.stringify(err)}\". Retry ${retryRemaining > 0 ? 'enabled' : 'disabled'} (remaining #${retryRemaining}/${retryHelper.retrySettings.retries}, criterion matches)`)\n retry(err)\n } else {\n if (retryHelper.retryErrorPatterns.length > 0) {\n debug(`Convo failed with error \"${err.message || JSON.stringify(err)}\". Retry 'disabled' (remaining (#${retryRemaining}/${retryHelper.retrySettings.retries}), criterion does not match)`)\n }\n throw err\n }\n })\n }, retryHelper.retrySettings)\n }\n\n async RunImpl (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 skipTranscriptStep = false\n const transcriptStep = new TranscriptStep({\n expected: new BotiumMockMessage(convoStep),\n not: convoStep.not,\n optional: convoStep.optional,\n actual: null,\n stepBegin: new Date(),\n stepEnd: null,\n botBegin: null,\n botEnd: null,\n err: null\n })\n\n try {\n if (convoStep.sender === 'begin' || convoStep.sender === 'end') {\n continue\n } else if (convoStep.sender === 'me') {\n const meMsg = new BotiumMockMessage(convoStep)\n meMsg.messageText = ScriptingMemory.apply(container, scriptingMemory, meMsg.messageText, meMsg)\n // buggy command is removed, but because sideeffects are possible, it can be reactivated.\n // If there are no sideeffects coming up, then row can be deleted permanently.\n if (process.env.WORKAROUND_OVERWRITE_JSON_MESSAGE_TEXT) {\n // if this line is active, then Random() in me section does not work in performance test\n // (first run overwrites the function with the value, and the next run has the value, not the function)\n convoStep.messageText = meMsg.messageText\n }\n transcriptStep.actual = meMsg\n\n try {\n await this.scriptingEvents.setUserInput({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep, transcriptSteps })\n await this.scriptingEvents.onMeStart({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep, transcriptSteps })\n await this.scriptingEvents.onMePrepare({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep, transcriptSteps })\n\n await this._checkBotRepliesConsumed(container)\n\n const coreMsg = _.omit(removeBuffers(meMsg), ['sourceData'])\n debug(`${this.header.name}/${convoStep.stepTag}: user says (cleaned by binary and base64 data and sourceData) ${JSON.stringify(coreMsg, null, 2)}`)\n await new Promise(resolve => {\n if (container.caps.SIMULATE_WRITING_SPEED && meMsg.messageText && meMsg.messageText.length) {\n setTimeout(() => resolve(), container.caps.SIMULATE_WRITING_SPEED * meMsg.messageText.length)\n } else {\n resolve()\n }\n })\n lastMeConvoStep = convoStep\n transcriptStep.botBegin = new Date()\n if (!_.isNull(meMsg.messageText) || meMsg.sourceData || (meMsg.userInputs && meMsg.userInputs.length) || (meMsg.logicHooks && meMsg.logicHooks.length)) {\n try {\n Object.assign(meMsg, { header: this.header, conversation: this.conversation, currentStepIndex, scriptingMemory })\n await container.UserSays(meMsg)\n } finally {\n delete meMsg.header\n delete meMsg.conversation\n delete meMsg.scriptingMemory\n }\n\n transcriptStep.botEnd = new Date()\n await this.scriptingEvents.onMeEnd({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep })\n continue\n } else {\n debug(`${this.header.name}/${convoStep.stepTag}: message not found in #me section, message not sent to container ${util.inspect(convoStep)}`)\n transcriptStep.botEnd = new Date()\n await this.scriptingEvents.onMeEnd({ convo: this, convoStep, container, scriptingMemory, meMsg, transcript, transcriptStep })\n continue\n }\n } catch (err) {\n transcriptStep.botEnd = new Date()\n\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: error sending to bot - ${err.message || err}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr)\n } catch (failErr) {\n }\n throw failErr\n }\n } else if (convoStep.sender === 'bot') {\n if (waitForBotSays) {\n botMsg = null\n } else {\n waitForBotSays = true\n }\n\n try {\n debug(`${this.header.name} wait for bot ${convoStep.channel || ''}`)\n await this.scriptingEvents.onBotStart({ convo: this, convoStep, container, scriptingMemory, transcript, transcriptStep })\n transcriptStep.botBegin = new Date()\n if (!botMsg) {\n botMsg = await container.WaitBotSays(convoStep.channel)\n }\n transcriptStep.botEnd = new Date()\n transcriptStep.actual = new BotiumMockMessage(botMsg)\n\n const coreMsg = _.omit(removeBuffers(botMsg), ['sourceData'])\n debug(`${this.header.name}: bot says (cleaned by binary and base64 data and sourceData) ${JSON.stringify(coreMsg, null, 2)}`)\n } catch (err) {\n transcriptStep.botEnd = new Date()\n\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: error waiting for bot - ${err.message}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n throw failErr\n }\n\n try {\n const prepared = await this.scriptingEvents.onBotPrepare({ convo: this, convoStep, container, scriptingMemory, botMsg, transcript, transcriptStep })\n if (prepared) {\n transcriptStep.actual = new BotiumMockMessage(botMsg)\n\n const coreMsg = _.omit(removeBuffers(botMsg), ['sourceData'])\n debug(`${this.header.name}: onBotPrepare (cleaned by binary and base64 data and sourceData) ${JSON.stringify(coreMsg, null, 2)}`)\n }\n } catch (err) {\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: onBotPrepare error - ${err.message || err}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n throw failErr\n }\n\n if (!botMsg || (!botMsg.messageText && !botMsg.media && !botMsg.buttons && !botMsg.cards && !botMsg.sourceData && !botMsg.nlp)) {\n const failErr = new BotiumError(`${this.header.name}/${convoStep.stepTag}: bot says nothing`)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n throw failErr\n }\n const isErrorHandledWithOptionConvoStep = (err) => {\n const nextConvoStep = this.conversation[i + 1]\n if (convoStep.optional && nextConvoStep && nextConvoStep.sender === 'bot') {\n waitForBotSays = false\n skipTranscriptStep = true\n return true\n }\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n assertErrors.push(err)\n return false\n } else {\n throw err\n }\n }\n const assertErrors = []\n const scriptingMemoryUpdate = {}\n if (convoStep.messageText) {\n const response = this._checkNormalizeText(container, botMsg.messageText)\n const messageText = this._checkNormalizeText(container, convoStep.messageText)\n ScriptingMemory.fill(container, scriptingMemoryUpdate, response, messageText, this.scriptingEvents)\n const tomatch = this._resolveUtterancesToMatch(container, Object.assign({}, scriptingMemoryUpdate, scriptingMemory), messageText, botMsg)\n if (convoStep.not) {\n try {\n this.scriptingEvents.assertBotNotResponse(response, tomatch, `${this.header.name}/${convoStep.stepTag}`, lastMeConvoStep)\n } catch (err) {\n if (isErrorHandledWithOptionConvoStep(err)) {\n continue\n }\n }\n } else {\n try {\n this.scriptingEvents.assertBotResponse(response, tomatch, `${this.header.name}/${convoStep.stepTag}`, lastMeConvoStep)\n } catch (err) {\n if (isErrorHandledWithOptionConvoStep(err)) {\n continue\n }\n }\n }\n } else if (convoStep.sourceData) {\n try {\n this._compareObject(container, scriptingMemory, convoStep, botMsg.sourceData, convoStep.sourceData, botMsg)\n } catch (err) {\n if (isErrorHandledWithOptionConvoStep(err)) {\n continue\n }\n }\n }\n Object.assign(scriptingMemory, scriptingMemoryUpdate)\n try {\n await this.scriptingEvents.assertConvoStep({ convo: this, convoStep, container, scriptingMemory, botMsg, transcript, transcriptStep })\n await this.scriptingEvents.onBotEnd({ convo: this, convoStep, container, scriptingMemory, botMsg, transcript, transcriptStep })\n } catch (err) {\n const nextConvoStep = this.conversation[i + 1]\n if (convoStep.optional && nextConvoStep && nextConvoStep.sender === 'bot') {\n waitForBotSays = false\n skipTranscriptStep = true\n continue\n }\n const failErr = botiumErrorFromErr(`${this.header.name}/${convoStep.stepTag}: assertion error - ${err.message || err}`, err)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr, lastMeConvoStep)\n } catch (failErr) {\n }\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS] && err instanceof BotiumError) {\n assertErrors.push(err)\n } else {\n throw failErr\n }\n }\n if (container.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n if (assertErrors.length > 0) {\n throw botiumErrorFromList(assertErrors, {})\n }\n } else {\n if (!transcriptStep.stepEnd) {\n continue\n }\n }\n } else {\n const failErr = new BotiumError(`${this.header.name}/${convoStep.stepTag}: invalid sender - ${util.inspect(convoStep.sender)}`)\n debug(failErr)\n try {\n this.scriptingEvents.fail && this.scriptingEvents.fail(failErr)\n } catch (failErr) {\n }\n throw failErr\n }\n } catch (err) {\n if (lastMeConvoStep) {\n if (err instanceof BotiumError && err.context) {\n err.context.input = new ConvoStep(lastMeConvoStep)\n err.context.transcript = [...transcriptSteps, { ...transcriptStep }]\n } else {\n err.input = new ConvoStep(lastMeConvoStep)\n err.transcript = [...transcriptSteps, { ...transcriptStep }]\n }\n }\n transcriptStep.err = err\n if (err instanceof BotiumError && container.caps[Capabilities.SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS]) {\n if (!err.isAsserterError()) {\n throw err\n }\n } else {\n throw err\n }\n } finally {\n if (convoStep.sender !== 'begin' && convoStep.sender !== 'end' && !skipTranscriptStep) {\n transcriptStep.scriptingMemory = Object.assign({}, scriptingMemory)\n transcriptStep.stepEnd = new Date()\n transcriptSteps.push(transcriptStep)\n }\n }\n }\n } catch (err) {\n transcript.err = err\n } finally {\n transcript.steps = transcriptSteps.filter(s => s)\n transcript.scriptingMemory = scriptingMemory\n transcript.convoEnd = new Date()\n if (container.caps[Capabilities.SCRIPTING_ENABLE_SKIP_ASSERT_ERRORS]) {\n const transcriptStepErrs = transcript.steps.filter(s => s.err).map(s => s.err)\n if (transcriptStepErrs && transcriptStepErrs.length > 0) {\n transcript.err = botiumErrorFromList([...transcriptStepErrs.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 resultOuter = this.conversation.reduce((acc, convoStep) => {\n let result = acc\n result = result.concat(this.GetScriptingMemoryVariables(container, convoStep.messageText))\n const extractFromArgs = (convoStepItems) => {\n let resultInner = []\n for (const item of (convoStepItems || [])) {\n for (const arg of (item.args || [])) {\n resultInner = resultInner.concat(this.GetScriptingMemoryVariables(container, arg))\n }\n }\n return resultInner\n }\n result = result.concat(extractFromArgs(convoStep.asserters))\n result = result.concat(extractFromArgs(convoStep.logicHooks))\n result = result.concat(extractFromArgs(convoStep.userInputs))\n\n return result\n }, [])\n\n return [...new Set(resultOuter)]\n }\n\n GetScriptingMemoryVariables (container, utterance) {\n if (!utterance || !container.caps[Capabilities.SCRIPTING_ENABLE_MEMORY]) {\n return []\n }\n\n const utterances = this.scriptingEvents.resolveUtterance({ utterance })\n\n return utterances.reduce((acc, expected) => {\n if (_.isUndefined(expected)) return acc\n else return acc.concat(ScriptingMemory.extractVarNames(toString(expected)) || [])\n }, [])\n }\n\n _checkBotRepliesConsumed (container) {\n if (container.caps.SCRIPTING_FORCE_BOT_CONSUMED) {\n const queueLength = container._QueueLength()\n if (queueLength === 1) {\n throw new Error('There is an unread bot reply in queue')\n } else if (queueLength > 1) {\n throw new Error(`There are still ${queueLength} unread bot replies in queue`)\n }\n }\n }\n\n _resolveUtterancesToMatch (container, scriptingMemory, utterance, botMsg) {\n const utterances = this.scriptingEvents.resolveUtterance({ utterance })\n const normalizedUtterances = utterances.map(str => this._checkNormalizeText(container, str))\n const tomatch = normalizedUtterances.map(str => ScriptingMemory.apply(container, scriptingMemory, str, botMsg))\n return tomatch\n }\n\n _checkNormalizeText (container, str) {\n return normalizeText(str, !!container.caps[Capabilities.SCRIPTING_NORMALIZE_TEXT])\n }\n\n expandPartialConvos () {\n const _getIncludeLogicHookNames = (convoStep) => {\n if (!convoStep.logicHooks) {\n return []\n }\n\n const result = []\n convoStep.logicHooks.forEach((logicHook) => {\n if (logicHook.name === LOGIC_HOOK_INCLUDE) {\n if (logicHook.args.length !== 1) {\n throw Error('Wrong argument for include logic hook!')\n }\n result.push(logicHook)\n }\n })\n\n return result.map((hook) => hook.args[0])\n }\n\n const partialConvos = this.context.GetPartialConvos()\n\n const _getEffectiveConversationRecursive = (conversation, parentPConvos = [], result = [], ignoreBeginEnd = true) => {\n conversation.forEach((convoStep) => {\n let includeLogicHooks = []\n if (convoStep.sender === 'include') {\n if (convoStep.channel) {\n includeLogicHooks.push(convoStep.channel)\n }\n if (convoStep.messageText) {\n includeLogicHooks = includeLogicHooks.concat(splitStringInNonEmptyLines(convoStep.messageText))\n }\n } else {\n includeLogicHooks = _getIncludeLogicHookNames(convoStep)\n if (includeLogicHooks.length === 0 || convoStep.hasInteraction()) {\n if (!ignoreBeginEnd || (convoStep.sender !== 'begin' && convoStep.sender !== 'end')) {\n // dont put convo name for ConvoSteps on the root.\n const steptagPath = parentPConvos.length === 0 ? '' : parentPConvos.join('/') + '/'\n result.push(Object.assign(new ConvoStep(), convoStep, { stepTag: `${steptagPath}${convoStep.stepTag}` }))\n }\n }\n }\n\n includeLogicHooks.forEach((includeLogicHook) => {\n const alreadyThereAt = parentPConvos.indexOf(includeLogicHook)\n if (alreadyThereAt >= 0) {\n throw new BotiumError(`Partial convos are included circular. \"${includeLogicHook}\" is referenced by \"/${parentPConvos.slice(0, alreadyThereAt).join('/')}\" and by \"/${parentPConvos.join('/')}\" `)\n }\n if (!partialConvos || Object.keys(partialConvos).length === 0) {\n throw new BotiumError(`Cant find partial convo with name ${includeLogicHook} (There are no partial convos)`)\n }\n const partialConvo = partialConvos[includeLogicHook]\n if (!partialConvo) {\n throw new BotiumError(`Cant find partial convo with name ${includeLogicHook} (available partial convos: ${Object.keys(partialConvos).join(',')})`)\n }\n _getEffectiveConversationRecursive(partialConvo.conversation, [...parentPConvos, includeLogicHook], result, true)\n debug(`Partial convo ${includeLogicHook} included`)\n })\n })\n\n return result\n }\n\n this.conversation = _getEffectiveConversationRecursive(this.conversation, [], [], false)\n }\n}\n\nmodule.exports = {\n Convo,\n ConvoHeader,\n ConvoStep,\n ConvoStepAssert,\n ConvoStepLogicHook,\n ConvoStepUserInput,\n Transcript,\n TranscriptAttachment,\n TranscriptStep,\n TranscriptError\n}\n","const _ = require('lodash')\nconst speechScorer = require('word-error-rate')\n\nconst { toString, quoteRegexpString } = require('./helper')\n\nconst _normalize = (botresponse) => {\n if (_.isUndefined(botresponse)) return ''\n if (_.isObject(botresponse) && _.has(botresponse, 'messageText')) {\n return toString(botresponse.messageText) || ''\n }\n return toString(botresponse)\n}\n\nconst regexp = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) return false\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n const regexp = ignoreCase ? (new RegExp(utterance, 'i')) : (new RegExp(utterance, ''))\n return regexp.test(botresponse)\n}\n\nconst wildcard = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) {\n if (utterance.trim() === '*') return true\n else return false\n }\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n const numWildcards = utterance.split('*').length - 1\n if (numWildcards > 10) {\n throw new Error('Maximum number of 10 wildcards supported.')\n }\n const utteranceRe = quoteRegexpString(utterance).replace(/\\\\\\*/g, '(.*)')\n\n const regexp = ignoreCase ? (new RegExp(utteranceRe, 'i')) : (new RegExp(utteranceRe, ''))\n return regexp.test(botresponse)\n}\n\nconst wildcardExact = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) {\n if (utterance.trim() === '*') return true\n else return false\n }\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n const numWildcards = utterance.split('*').length - 1\n if (numWildcards > 10) {\n throw new Error('Maximum number of 10 wildcards supported.')\n }\n const utteranceRe = '^' + quoteRegexpString(utterance).replace(/\\\\\\*/g, '(.*)') + '$'\n\n const regexp = ignoreCase ? (new RegExp(utteranceRe, 'i')) : (new RegExp(utteranceRe, ''))\n return regexp.test(botresponse)\n}\n\nconst include = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) return false\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n if (ignoreCase) {\n utterance = utterance.toLowerCase()\n botresponse = botresponse.toLowerCase()\n }\n return botresponse.indexOf(utterance) >= 0\n}\n\nconst equals = (ignoreCase) => (botresponse, utterance) => {\n if (_.isUndefined(botresponse)) return false\n utterance = toString(utterance)\n botresponse = _normalize(botresponse)\n\n if (ignoreCase) {\n utterance = utterance.toLowerCase()\n botresponse = botresponse.toLowerCase()\n }\n return botresponse === utterance\n}\n\nconst 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 speechScorer.wordErrorRate(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')\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 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 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 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 fail: null\n }\n this.retryHelperAsserter = new RetryHelper(this.caps, 'ASSERTER')\n this.retryHelperLogicHook = new RetryHelper(this.caps, 'LOGICHOOK')\n this.retryHelperUserInput = new RetryHelper(this.caps, 'USERINPUT')\n }\n\n _createAsserterPromises ({ asserterType, asserters, convo, convoStep, scriptingMemory, ...rest }) {\n if (!this._isValidAsserterType(asserterType)) {\n throw Error(`Unknown asserterType ${asserterType}`)\n }\n\n const mapNot = {\n assertConvoBegin: 'assertNotConvoBegin',\n assertConvoStep: 'assertNotConvoStep',\n assertConvoEnd: 'assertNotConvoEnd'\n }\n const callAsserter = (asserterSpec, asserter, params) => {\n if (asserterSpec.not) {\n const notAsserterType = mapNot[asserterType]\n if (asserter[notAsserterType]) {\n return p(this.retryHelperAsserter, () => asserter[notAsserterType](params))\n } else {\n return pnot(this.retryHelperAsserter, () => asserter[asserterType](params),\n new BotiumError(\n `${convoStep.stepTag}: Expected asserter ${asserter.name || asserterSpec.name} with args \"${params.args}\" to fail`,\n {\n type: 'asserter',\n source: asserter.name || asserterSpec.name,\n params: {\n args: params.args\n },\n cause: {\n not: true,\n expected: 'failed',\n actual: 'not failed'\n }\n }\n )\n )\n }\n } else {\n return p(this.retryHelperAsserter, () => asserter[asserterType](params))\n }\n }\n\n const convoAsserter = asserters\n .filter(a => this.asserters[a.name][asserterType])\n .map(a => callAsserter(a, this.asserters[a.name], {\n convo,\n convoStep,\n scriptingMemory,\n args: ScriptingMemory.applyToArgs(a.args, scriptingMemory, this.caps, rest.botMsg),\n isGlobal: false,\n ...rest\n }))\n const globalAsserter = Object.values(this.globalAsserter)\n .filter(a => a[asserterType])\n .map(a => p(this.retryHelperAsserter, () => a[asserterType]({ convo, convoStep, scriptingMemory, args: [], isGlobal: true, ...rest })))\n\n const allPromises = [...convoAsserter, ...globalAsserter]\n if (this.caps[Capabilities.SCRIPTING_ENABLE_MULTIPLE_ASSERT_ERRORS]) {\n return Promise.allSettled(allPromises).then((results) => {\n const rejected = results.filter(result => result.status === 'rejected').map(result => result.reason)\n if (rejected.length) {\n throw botiumErrorFromList(rejected, {})\n }\n return results.filter(result => result.status === 'fulfilled').map(result => result.value)\n })\n }\n if (allPromises.length > 0) return Promise.all(allPromises).then(() => true)\n return Promise.resolve(false)\n }\n\n _createLogicHookPromises ({ hookType, logicHooks, convo, convoStep, scriptingMemory, ...rest }) {\n if (hookType !== 'onMeStart' && hookType !== 'onMePrepare' && hookType !== 'onMeEnd' && hookType !== 'onBotStart' && hookType !== 'onBotPrepare' && hookType !== 'onBotEnd' &&\n hookType !== 'onConvoBegin' && hookType !== 'onConvoEnd'\n ) {\n throw Error(`Unknown hookType ${hookType}`)\n }\n\n const convoStepPromises = (logicHooks || [])\n .filter(l => this.logicHooks[l.name][hookType])\n .map(l => p(this.retryHelperLogicHook, () => this.logicHooks[l.name][hookType]({\n convo,\n convoStep,\n scriptingMemory,\n args: ScriptingMemory.applyToArgs(l.args, scriptingMemory, this.caps, rest.botMsg),\n isGlobal: false,\n ...rest\n })))\n\n const globalPromises = Object.values(this.globalLogicHook)\n .filter(l => l[hookType])\n .map(l => p(this.retryHelperLogicHook, () => l[hookType]({ convo, convoStep, scriptingMemory, args: [], isGlobal: true, ...rest })))\n\n const allPromises = [...convoStepPromises, ...globalPromises]\n if (allPromises.length > 0) return Promise.all(allPromises).then(() => true)\n return Promise.resolve(false)\n }\n\n _createUserInputPromises ({ convo, convoStep, scriptingMemory, ...rest }) {\n const convoStepPromises = (convoStep.userInputs || [])\n .filter(ui => this.userInputs[ui.name])\n .map(ui => p(this.retryHelperUserInput, () => this.userInputs[ui.name].setUserInput({\n convo,\n convoStep,\n scriptingMemory,\n args: ScriptingMemory.applyToArgs(ui.args, scriptingMemory, this.caps, rest.meMsg),\n ...rest\n })))\n\n if (convoStepPromises.length > 0) return Promise.all(convoStepPromises).then(() => true)\n return Promise.resolve(false)\n }\n\n _isValidAsserterType (asserterType) {\n return ['assertConvoBegin', 'assertConvoStep', 'assertConvoEnd'].some(t => asserterType === t)\n }\n\n _resolveUtterance ({ utterance, resolveEmptyIfUnknown = false }) {\n if (_.isString(utterance)) {\n if (this.utterances[utterance]) {\n return this.utterances[utterance].utterances\n } else {\n const parts = utterance.split(' ')\n if (this.utterances[parts[0]]) {\n const uttArgs = parts.slice(1)\n return this.utterances[parts[0]].utterances.map(utt => util.format(utt, ...uttArgs))\n }\n }\n }\n if (resolveEmptyIfUnknown) return null\n else return [utterance]\n }\n\n _buildScriptContext () {\n return {\n AddConvos: this.AddConvos.bind(this),\n AddUtterances: this.AddUtterances.bind(this),\n AddPartialConvos: this.AddPartialConvos.bind(this),\n AddScriptingMemories: this.AddScriptingMemories.bind(this),\n Match: this.Match.bind(this),\n IsAsserterValid: this.IsAsserterValid.bind(this),\n IsLogicHookValid: this.IsLogicHookValid.bind(this),\n IsUserInputValid: this.IsUserInputValid.bind(this),\n GetPartialConvos: this.GetPartialConvos.bind(this),\n scriptingEvents: {\n assertConvoBegin: this.scriptingEvents.assertConvoBegin.bind(this),\n assertConvoStep: this.scriptingEvents.assertConvoStep.bind(this),\n assertConvoEnd: this.scriptingEvents.assertConvoEnd.bind(this),\n resolveUtterance: this.scriptingEvents.resolveUtterance.bind(this),\n assertBotResponse: this.scriptingEvents.assertBotResponse.bind(this),\n assertBotNotResponse: this.scriptingEvents.assertBotNotResponse.bind(this),\n onConvoBegin: this.scriptingEvents.onConvoBegin.bind(this),\n onConvoEnd: this.scriptingEvents.onConvoEnd.bind(this),\n onMeStart: this.scriptingEvents.onMeStart.bind(this),\n onMePrepare: this.scriptingEvents.onMePrepare.bind(this),\n onMeEnd: this.scriptingEvents.onMeEnd.bind(this),\n onBotStart: this.scriptingEvents.onBotStart.bind(this),\n onBotPrepare: this.scriptingEvents.onBotPrepare.bind(this),\n onBotEnd: this.scriptingEvents.onBotEnd.bind(this),\n setUserInput: this.scriptingEvents.setUserInput.bind(this),\n fail: this.scriptingEvents.fail && this.scriptingEvents.fail.bind(this)\n }\n }\n }\n\n Build () {\n const CompilerXlsx = require('./CompilerXlsx')\n this.compilers[Constants.SCRIPTING_FORMAT_XSLX] = new CompilerXlsx(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_XSLX].Validate()\n const CompilerTxt = require('./CompilerTxt')\n this.compilers[Constants.SCRIPTING_FORMAT_TXT] = new CompilerTxt(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_TXT].Validate()\n const CompilerCsv = require('./CompilerCsv')\n this.compilers[Constants.SCRIPTING_FORMAT_CSV] = new CompilerCsv(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_CSV].Validate()\n const CompilerYaml = require('./CompilerYaml')\n this.compilers[Constants.SCRIPTING_FORMAT_YAML] = new CompilerYaml(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_YAML].Validate()\n const CompilerJson = require('./CompilerJson')\n this.compilers[Constants.SCRIPTING_FORMAT_JSON] = new CompilerJson(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_JSON].Validate()\n const CompilerMarkdown = require('./CompilerMarkdown')\n this.compilers[Constants.SCRIPTING_FORMAT_MARKDOWN] = new CompilerMarkdown(this._buildScriptContext(), this.caps)\n this.compilers[Constants.SCRIPTING_FORMAT_MARKDOWN].Validate()\n\n this.matchFn = getMatchFunction(this.caps[Capabilities.SCRIPTING_MATCHING_MODE])\n\n const logicHookUtils = new LogicHookUtils({ buildScriptContext: this._buildScriptContext(), caps: this.caps })\n this.asserters = logicHookUtils.asserters\n this.globalAsserter = logicHookUtils.getGlobalAsserter()\n this.logicHooks = logicHookUtils.logicHooks\n this.globalLogicHook = logicHookUtils.getGlobalLogicHook()\n this.userInputs = logicHookUtils.userInputs\n }\n\n IsAsserterValid (name) {\n return this.asserters[name] || false\n }\n\n IsLogicHookValid (name) {\n return this.logicHooks[name] || false\n }\n\n IsUserInputValid (name) {\n return this.userInputs[name] || false\n }\n\n Match (botresponse, utterance) {\n return this.matchFn(botresponse, utterance, 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 context = { count: 0 }\n const expandedConvos = []\n debug(`ExpandConvos - Using utterances expansion mode: ${this.caps[Capabilities.SCRIPTING_UTTEXPANSION_MODE]}`)\n this.convos.forEach((convo) => {\n convo.expandPartialConvos()\n 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 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 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 const context = { count: 0 }\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 }\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 (!options.convoFilter || options.convoFilter(expanded)) {\n context.count++\n const logPerEntry = context.count < 10 ? 1 : context.count < 100 ? 10 : context.count < 1000 ? 100 : context.count < 10000 ? 1000 : 10000\n if (context.count % logPerEntry === 0) {\n debug(`Convo #${context.count} expanded (${expanded.header.name})`)\n }\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 rimraf(this.tempDirectory, (err) => {\n if (err) debug(`Cleanup temp dir ${this.tempDirectory} failed: ${util.inspect(err)}`)\n rimraffed()\n })\n } else {\n rimraffed()\n }\n }\n ], (err) => {\n if (err) {\n return reject(new Error(`Cleanup failed ${util.inspect(err)}`))\n }\n resolve()\n })\n })\n }\n\n _AssertCapabilityExists (cap) {\n if (!Object.prototype.hasOwnProperty.call(this.caps, cap)) {\n throw new Error(`Capability property ${cap} not set`)\n }\n }\n\n _AssertOneCapabilityExists () {\n const checkCaps = [...arguments]\n const found = checkCaps.find((cap) => this.caps[cap])\n if (!found) {\n throw new Error(`Capability property of ${checkCaps.join()} not set`)\n }\n }\n\n _QueueLength (channel = 'default') {\n return (this.queues[channel] && this.queues[channel].length()) || 0\n }\n\n _EmptyQueue (channel = 'default') {\n if (this.queues[channel]) {\n this.queues[channel].empty()\n }\n }\n\n async _QueueBotSays (botMsg) {\n if (_.isError(botMsg)) {\n if (!this.queues.default) {\n this.queues.default = new Queue()\n }\n this.queues.default.push(botMsg)\n this.eventEmitter.emit(Events.MESSAGE_RECEIVEFROMBOT_ERROR, this, botMsg)\n } else {\n if (!botMsg.channel) botMsg.channel = 'default'\n if (!botMsg.sender) botMsg.sender = 'bot'\n\n if (!this.queues[botMsg.channel]) {\n this.queues[botMsg.channel] = new Queue()\n }\n\n await this._RunCustomHook('onBotResponse', this.onBotResponseHook, { botMsg })\n this.queues[botMsg.channel].push(botMsg)\n this.eventEmitter.emit(Events.MESSAGE_RECEIVEDFROMBOT, this, botMsg)\n }\n }\n\n async _RunCustomHook (name, hook, args) {\n try {\n await executeHook(this.caps, hook, Object.assign({ container: this, request }, args))\n } catch (err) {\n debug(`_RunCustomHook ${name} finished with error: ${err.message || util.inspect(err)}`)\n }\n }\n}\n","const util = require('util')\nconst async = require('async')\nconst _ = require('lodash')\nconst io = require('socket.io-client')\nconst debug = require('debug')('botium-connector-GridContainer')\n\nconst Commands = require('../Commands')\nconst Events = require('../Events')\nconst Capabilities = require('../Capabilities')\nconst BaseContainer = require('./BaseContainer')\nconst BotiumMockMessage = require('../mocks/BotiumMockMessage')\n\nmodule.exports = class GridContainer extends BaseContainer {\n Validate () {\n return super.Validate().then(() => {\n this._AssertCapabilityExists(Capabilities.BOTIUMGRIDURL)\n })\n }\n\n Build () {\n this.buildPromise = this._defer()\n\n async.series([\n (baseComplete) => {\n super.Build().then(() => baseComplete()).catch(baseComplete)\n },\n\n (socketComplete) => {\n this.socket = io(this.caps[Capabilities.BOTIUMGRIDURL])\n\n this.socket.on('connect', () => {\n debug('connected')\n this.socket.emit('authentication', { apiToken: this.caps[Capabilities.BOTIUMAPITOKEN] })\n })\n this.socket.on('connect_error', (err) => {\n debug(`connect_error ${err.message}`)\n })\n this.socket.on('connect_timeout', (timeout) => {\n debug(`connect_timeout ${util.inspect(timeout)}`)\n })\n this.socket.on('error', (err) => {\n debug(`error ${err.message}`)\n })\n this.socket.on('authenticated', () => {\n debug('authenticated')\n this.socket.emit(Commands.BUILD_CONTAINER, this.caps, this.repo.sources, this.envs)\n })\n this.socket.on('unauthorized', (err) => {\n debug(`unauthorized ${err.message}`)\n socketComplete(`Grid Access not authorized: ${err.message}`)\n })\n this.socket.on(Events.TOOMUCHWORKERS_ERROR, (err) => {\n debug(`TOOMUCHWORKERS_ERROR ${err.message}`)\n socketComplete(`Grid Access not possible: ${err.message}`)\n })\n this.socket.on(Events.CONTAINER_BUILT, () => {\n debug(Events.CONTAINER_BUILT)\n socketComplete()\n })\n this.socket.on(Events.CONTAINER_BUILD_ERROR, (err) => {\n debug(`CONTAINER_BUILD_ERROR ${err.message}`)\n socketComplete(`Grid Build failed: ${err.message}`)\n })\n\n this.socket.on(Events.CONTAINER_STARTED, () => {\n debug(Events.CONTAINER_STARTED)\n this.eventEmitter.emit(Events.CONTAINER_STARTED, this)\n if (this.startPromise) {\n this.startPromise.resolve(this)\n this.startPromise = null\n }\n })\n this.socket.on(Events.CONTAINER_START_ERROR, (err) => {\n debug(`CONTAINER_START_ERROR ${err.message}`)\n this.eventEmitter.emit(Events.CONTAINER_START_ERROR, this, err)\n if (this.startPromise) {\n this.startPromise.reject(`Grid Start failed: ${err.message}`)\n this.startPromise = null\n }\n })\n\n this.socket.on(Events.MESSAGE_RECEIVEDFROMBOT, (botMsg) => {\n debug(`MESSAGE_RECEIVEDFROMBOT ${util.inspect(botMsg)}`)\n this._QueueBotSays(new BotiumMockMessage(botMsg))\n })\n\n this.socket.on(Events.CONTAINER_STOPPED, () => {\n debug(Events.CONTAINER_STOPPED)\n this.eventEmitter.emit(Events.CONTAINER_STOPPED, this)\n if (this.stopPromise) {\n this.stopPromise.resolve(this)\n this.stopPromise = null\n }\n })\n this.socket.on(Events.CONTAINER_STOP_ERROR, (err) => {\n debug(`CONTAINER_STOP_ERROR ${err.message}`)\n this.eventEmitter.emit(Events.CONTAINER_STOP_ERROR, this, err)\n if (this.stopPromise) {\n this.stopPromise.reject(`Grid Stop failed: ${err.message}`)\n this.stopPromise = null\n }\n })\n\n this.socket.on(Events.CONTAINER_CLEANED, () => {\n debug(Events.CONTAINER_CLEANED)\n this.eventEmitter.emit(Events.CONTAINER_CLEANED, this)\n if (this.cleanPromise) {\n this.cleanPromise.resolve(this)\n this.cleanPromise = null\n }\n this.socket.disconnect()\n this.socket = null\n })\n this.socket.on(Events.CONTAINER_CLEAN_ERROR, (err) => {\n debug(`CONTAINER_CLEAN_ERROR ${err.message}`)\n this.eventEmitter.emit(Events.CONTAINER_CLEAN_ERROR, this, err)\n if (this.cleanPromise) {\n this.cleanPromise.reject(`Grid Clean failed: ${err.message}`)\n this.cleanPromise = null\n }\n this.socket.disconnect()\n this.socket = null\n })\n }\n ], (err) => {\n if (err) {\n this.buildPromise.reject(new Error(`Cannot build grid containers: ${err.message}`))\n } else {\n this.buildPromise.resolve(this)\n }\n this.buildPromise = null\n })\n return this.buildPromise.promise\n }\n\n Start () {\n this.eventEmitter.emit(Events.CONTAINER_STARTING, this)\n\n return super.Start().then(() => {\n if (this.startPromise) return Promise.reject(new Error('already starting'))\n if (this.socket) {\n this.startPromise = this._defer()\n this.socket.emit(Commands.START_CONTAINER)\n\n return this.startPromise.promise\n } else {\n this.eventEmitter.emit(Events.CONTAINER_START_ERROR, this, 'Remote Agent not online')\n return Promise.reject(new Error('Remote Agent not online'))\n }\n })\n }\n\n UserSaysImpl (mockMsg) {\n return new Promise((resolve, reject) => {\n if (this.socket) {\n this.socket.emit(Commands.SENDTOBOT, mockMsg)\n this.eventEmitter.emit(Events.MESSAGE_SENTTOBOT, this, mockMsg)\n resolve(this)\n } else {\n this.eventEmitter.emit(Events.MESSAGE_SENDTOBOT_ERROR, this, 'Remote Agent not online')\n reject(new Error('Remote Agent not online'))\n }\n })\n }\n\n Stop () {\n this.eventEmitter.emit(Events.CONTAINER_STOPPING, this)\n\n return super.Stop().then(() => {\n if (this.stopPromise) return Promise.reject(new Error('already stopping'))\n if (this.socket) {\n this.stopPromise = this._defer()\n this.socket.emit(Commands.STOP_CONTAINER)\n\n return this.stopPromise.promise\n } else {\n return Promise.resolve(this)\n }\n })\n }\n\n Clean () {\n this.eventEmitter.emit(Events.CONTAINER_CLEANING, this)\n\n return super.Clean().then(() => {\n if (this.cleanPromise) return Promise.reject(new Error('already cleaning'))\n if (this.socket) {\n this.cleanPromise = this._defer()\n this.socket.emit(Commands.CLEAN_CONTAINER)\n\n return this.cleanPromise.promise\n } else {\n return Promise.resolve(this)\n }\n })\n }\n\n _ValidateCustomHook (capKey) {\n if (this.caps[capKey]) {\n if (!_.isString(this.caps[capKey])) {\n throw new Error(`Custom Hook ${capKey} has to be a command line string`)\n }\n }\n }\n\n _RunCustomHook (capKey) {\n return Promise.resolve()\n }\n\n _defer () {\n const deferred = {\n promise: null,\n resolve: null,\n reject: null\n }\n deferred.promise = new Promise((resolve, reject) => {\n deferred.resolve = resolve\n deferred.reject = reject\n })\n return deferred\n }\n}\n","const Events = require('../Events')\nconst BaseContainer = require('./BaseContainer')\nconst BotiumMockMessage = require('../mocks/BotiumMockMessage')\n\nmodule.exports = class InProcessContainer extends BaseContainer {\n UserSaysImpl (mockMsg) {\n this.eventEmitter.emit(Events.MESSAGE_SENTTOBOT, this, mockMsg)\n return Promise.resolve(this)\n }\n\n InjectBotSays (botMsg) {\n this._QueueBotSays(new BotiumMockMessage(botMsg))\n }\n}\n","const express = require('express')\nconst Redis = require('ioredis')\nconst bodyParser = require('body-parser')\nconst debug = require('debug')('botium-core-inbound-proxy')\n\nconst buildRedisHandler = (redisurl, topic) => {\n const redis = new Redis(redisurl)\n redis.on('connect', () => {\n debug(`Redis connected to ${JSON.stringify(redisurl || 'default')}`)\n })\n return (event) => {\n try {\n debug('Got Message Event:')\n debug(JSON.stringify(event, null, 2))\n\n redis.publish(topic, JSON.stringify(event))\n } catch (err) {\n debug('Error while publishing to redis')\n debug(err)\n }\n }\n}\n\nconst setupEndpoints = ({ app, endpoint, middleware, processEvent }) => {\n if (endpoint && !endpoint.endsWith('/')) endpoint = endpoint + '/'\n\n const handler = (req, res) => {\n if (req.body) {\n processEvent({\n originalUrl: req.originalUrl,\n originalMethod: req.method,\n body: req.body,\n 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 }\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 result = []\n if (isFromUser) {\n const jsonPathRoots = []\n\n const jsonPathsBody = getAllCapValues(Capabilities.SIMPLEREST_BODY_JSONPATH, this.caps)\n if (jsonPathsBody.length > 0) {\n for (const jsonPathBody of jsonPathsBody) {\n const rb = jp.query(body, jsonPathBody)\n if (_.isArray(rb)) {\n rb.forEach(r => jsonPathRoots.push(r))\n } else if (rb) {\n jsonPathRoots.push(rb)\n }\n }\n } else {\n jsonPathRoots.push(body)\n }\n\n for (const jsonPathRoot of jsonPathRoots) {\n const _retrieveMedia = (jsonPathMediaRoot, jsonPathsMedia) => {\n const retrievedMedia = []\n jsonPathsMedia.forEach(jsonPath => {\n const responseMedia = jp.query(jsonPathMediaRoot, jsonPath)\n if (responseMedia) {\n (_.isArray(responseMedia) ? _.flattenDeep(responseMedia) : [responseMedia]).forEach(m =>\n retrievedMedia.push({\n mediaUri: m,\n mimeType: mime.lookup(m) || 'application/unknown'\n })\n )\n }\n })\n return retrievedMedia\n }\n\n const _retrieveButtons = (jsonPathButtonRoot, jsonPathsButtons) => {\n const retrievedButtons = []\n jsonPathsButtons.forEach(jsonPath => {\n const responseButtons = jp.query(jsonPathButtonRoot, jsonPath)\n if (responseButtons) {\n (_.isArray(responseButtons) ? _.flattenDeep(responseButtons) : [responseButtons]).forEach(b =>\n retrievedButtons.push({\n text: b\n })\n )\n }\n })\n return retrievedButtons\n }\n\n const _getCardText = (responseCardText) => {\n if (responseCardText) {\n const texts = _.isArray(responseCardText) ? _.flattenDeep(responseCardText) : [responseCardText]\n if (texts.length > 1) {\n debug(`more than one text found for card: ${util.inspect(texts)}`)\n }\n if (texts.length > 0) {\n return texts[0]\n }\n }\n }\n\n const media = _retrieveMedia(jsonPathRoot, getAllCapValues(Capabilities.SIMPLEREST_MEDIA_JSONPATH, this.caps))\n debug(`found response media: ${util.inspect(media)}`)\n const buttons = _retrieveButtons(jsonPathRoot, getAllCapValues(Capabilities.SIMPLEREST_BUTTONS_JSONPATH, this.caps))\n debug(`found response buttons: ${util.inspect(buttons)}`)\n const cards = []\n\n const jsonPathsCards = getAllCapValues(Capabilities.SIMPLEREST_CARDS_JSONPATH, this.caps)\n jsonPathsCards.forEach(jsonPath => {\n const responseCards = jp.query(jsonPathRoot, jsonPath)\n if (responseCards) {\n (_.isArray(responseCards) ? _.flattenDeep(responseCards) : [responseCards]).forEach(c => {\n const card = {}\n\n const jsonPathsCardText = getAllCapValues(Capabilities.SIMPLEREST_CARD_TEXT_JSONPATH, this.caps)\n jsonPathsCardText.forEach(jsonPath => {\n card.text = _getCardText(jp.query(c, jsonPath))\n })\n\n const jsonPathsCardSubText = getAllCapValues(Capabilities.SIMPLEREST_CARD_SUBTEXT_JSONPATH, this.caps)\n jsonPathsCardSubText.forEach(jsonPath => {\n card.subtext = _getCardText(jp.query(c, jsonPath))\n })\n\n card.buttons = _retrieveButtons(c, getAllCapValues(Capabilities.SIMPLEREST_CARD_BUTTONS_JSONPATH, this.caps))\n card.media = _retrieveMedia(c, getAllCapValues(Capabilities.SIMPLEREST_CARD_ATTACHMENTS_JSONPATH, this.caps))\n\n if (_.keys(card).length > 0) {\n cards.push(card)\n }\n })\n }\n })\n debug(`found response cards: ${util.inspect(cards)}`)\n\n let hasMessageText = false\n const jsonPathsTexts = getAllCapValues(Capabilities.SIMPLEREST_RESPONSE_JSONPATH, this.caps)\n for (const jsonPath of jsonPathsTexts) {\n debug(`eval json path ${jsonPath}`)\n\n const responseTexts = jp.query(jsonPathRoot, jsonPath)\n debug(`found response texts: ${util.inspect(responseTexts)}`)\n\n const messageTexts = (_.isArray(responseTexts) ? _.flattenDeep(responseTexts) : [responseTexts])\n for (const [messageTextIndex, messageText] of messageTexts.entries()) {\n if (!messageText) continue\n\n hasMessageText = true\n const botMsg = { sourceData: body, messageText, media, buttons, cards }\n await executeHook(this.caps, this.responseHook, Object.assign({ botMsg, botMsgRoot: jsonPathRoot, messageTextIndex }, this.view))\n result.push(botMsg)\n }\n }\n\n if (!hasMessageText) {\n const botMsg = { messageText: '', sourceData: body, media, buttons, cards }\n const beforeHookKeys = Object.keys(botMsg)\n await executeHook(this.caps, this.responseHook, Object.assign({ botMsg, botMsgRoot: jsonPathRoot }, this.view))\n const afterHookKeys = Object.keys(botMsg)\n if (beforeHookKeys.length !== afterHookKeys.length || !!(botMsg.messageText && botMsg.messageText.length > 0) || botMsg.media.length > 0 || botMsg.buttons.length > 0 || botMsg.cards.length > 0 || !this.caps[Capabilities.SIMPLEREST_IGNORE_EMPTY]) {\n result.push(botMsg)\n }\n }\n }\n }\n return result\n }\n\n _doRequest (msg, isFromUser, updateContext) {\n return this._buildRequest(msg)\n .then((requestOptions) => new Promise((resolve, reject) => {\n debug(`constructed requestOptions ${JSON.stringify(requestOptions, null, 2)}`)\n msg.sourceData = msg.sourceData || {}\n msg.sourceData.requestOptions = requestOptions\n\n this.waitProcessQueue = []\n\n request(requestOptions, async (err, response, body) => {\n if (err) {\n return reject(new Error(`rest request failed: ${err.message}`))\n } else {\n if (response.statusCode >= 400) {\n debug(`got error response: ${response.statusCode}/${response.statusMessage}`)\n if (debug.enabled && body) {\n debug(botiumUtils.shortenJsonString(body))\n }\n if (body) {\n const jsonBody = botiumUtils.toJsonWeak(body)\n const errKey = Object.keys(jsonBody).find(k => k.startsWith('err') || k.startsWith('fail'))\n if (errKey) {\n return reject(new BotiumError(`got error response: ${response.statusCode}/${response.statusMessage} - ${jsonBody[errKey]}`, {\n message: botiumUtils.shortenJsonString(body)\n }))\n }\n }\n return reject(new Error(`got error response: ${response.statusCode}/${response.statusMessage}`))\n }\n\n if (body) {\n debug(`got response code: ${response.statusCode}, body: ${botiumUtils.shortenJsonString(body)}, 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 await timeout(pingConfig.timeout)\n } else if (response.statusCode >= 400) {\n debug(`_waitForUrlResponse on url check ${pingConfig.uri} got error response: ${response.statusCode}/${response.statusMessage}`)\n if (debug.enabled && body) {\n debug(botiumUtils.shortenJsonString(body))\n }\n await timeout(pingConfig.timeout)\n } else {\n debug(`_waitForUrlResponse success on url check ${pingConfig.uri}: ${response.statusCode}/${response.statusMessage}`)\n 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, (err) => {\n if (err) debug(`Cleanup temp dir ${tempDirectory} failed: ${util.inspect(err)}`)\n })\n }\n return reject(err)\n }\n this.eventEmitter.emit(Events.CONTAINER_BUILT, container)\n resolve(container)\n })\n })\n }\n\n BuildCompiler () {\n try {\n const compiler = new ScriptingProvider(this.caps)\n compiler.Build()\n return compiler\n } catch (err) {\n debug(`BotDriver BuildCompiler error: ${err}`)\n throw err\n }\n }\n\n /* Private Functions */\n\n // loadConfig from files\n _loadConfigFile (filename) {\n try {\n const configJson = JSON.parse(fs.readFileSync(filename))\n if (configJson.botium) {\n if (configJson.botium.Capabilities) this._mergeCaps(this.caps, configJson.botium.Capabilities)\n if (configJson.botium.Sources) this._mergeCaps(this.sources, configJson.botium.Sources)\n if (configJson.botium.Envs) this._mergeCaps(this.envs, configJson.botium.Envs)\n return true\n } else {\n debug(`Botium configuration file ${filename} contains no botium configuration. Ignored.`)\n return false\n }\n } catch (err) {\n throw new Error(`FAILED: loading Botium configuration file ${filename}: ${util.inspect(err)}`)\n }\n }\n\n // fetches config from files ordered by priority later files overwrite previous\n _fetchConfigFromFiles (files) {\n const fetchedFiles = []\n for (const file of files) {\n if (file && fs.existsSync(file)) {\n const absFilePath = path.resolve(file)\n if (this._fetchedConfigFiles.indexOf(absFilePath) < 0) {\n this._loadConfigFile(file)\n fetchedFiles.push(file)\n this._fetchedConfigFiles.push(absFilePath)\n } else {\n fetchedFiles.push(file)\n }\n }\n }\n return fetchedFiles\n }\n\n _findKeyProperty (obj) {\n const lookup = ['id', 'ID', 'Id', 'ref', 'REF', 'Ref', 'name', 'NAME', 'Name']\n for (const checkPropIdx in lookup) {\n if (Object.prototype.hasOwnProperty.call(obj, lookup[checkPropIdx])) return lookup[checkPropIdx]\n }\n }\n\n _mergeCaps (caps, newCaps) {\n if (!caps) return\n Object.keys(newCaps).forEach(capKey => {\n if (!Object.prototype.hasOwnProperty.call(caps, capKey)) {\n if (_.isString(newCaps[capKey])) {\n try {\n caps[capKey] = JSON.parse(newCaps[capKey])\n if (_.isFinite(caps[capKey])) {\n caps[capKey] = caps[capKey].toString()\n }\n } catch (err) {\n caps[capKey] = newCaps[capKey]\n }\n } else {\n caps[capKey] = newCaps[capKey]\n }\n return\n }\n\n if (_.isArray(caps[capKey])) {\n let newCapArray = newCaps[capKey]\n if (!_.isArray(newCapArray)) {\n try {\n newCapArray = JSON.parse(newCapArray)\n } catch (err) {\n debug(`Expected JSON Array in capability ${capKey}, JSON parse failed (${err}). Capability will be overwritten with maybe unexpected side effects.`)\n }\n }\n if (_.isArray(newCapArray)) {\n newCapArray.forEach(capElement => {\n const mergeKey = this._findKeyProperty(capElement)\n if (mergeKey) {\n const oldElement = caps[capKey].find(oldElement => oldElement[mergeKey] && oldElement[mergeKey] === capElement[mergeKey])\n if (oldElement) {\n _.merge(oldElement, capElement)\n return\n }\n caps[capKey].push(capElement)\n } else {\n if (caps[capKey].indexOf(capElement) < 0) {\n caps[capKey].push(capElement)\n }\n }\n })\n return\n }\n }\n if (!_.isArray(caps[capKey]) && _.isObject(caps[capKey])) {\n let newCapObject = newCaps[capKey]\n if (!_.isObject(newCapObject)) {\n try {\n newCapObject = JSON.parse(newCapObject)\n } catch (err) {\n debug(`Expected JSON Object in capability ${capKey}, JSON parse failed (${err}). Capability will be overwritten with maybe unexpected side effects.`)\n }\n }\n if (_.isObject(newCapObject)) {\n _.merge(caps[capKey], newCapObject)\n return\n }\n }\n\n if (_.isBoolean(caps[capKey])) {\n if (!_.isBoolean(newCaps[capKey])) {\n caps[capKey] = boolean(newCaps[capKey])\n return\n }\n }\n\n caps[capKey] = newCaps[capKey]\n })\n }\n\n _validate () {\n return new Promise((resolve, reject) => {\n try {\n if (!this.caps[Capabilities.PROJECTNAME]) {\n throw new Error(`Capability property ${Capabilities.PROJECTNAME} not set`)\n }\n if (!this.caps[Capabilities.TEMPDIR]) {\n throw new Error(`Capability property ${Capabilities.TEMPDIR} not set`)\n }\n if (!this.caps[Capabilities.CONTAINERMODE] && !this.caps[Capabilities.BOTIUMGRIDURL]) {\n throw new Error(`Capability '${Capabilities.CONTAINERMODE}' or '${Capabilities.BOTIUMGRIDURL}' missing`)\n }\n\n 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","module.exports = {\n BotDriver: require('./src/BotDriver'),\n ScriptingProvider: require('./src/scripting/ScriptingProvider'),\n ScriptingConstants: require('./src/scripting/Constants'),\n Capabilities: require('./src/Capabilities'),\n Defaults: require('./src/Defaults'),\n Enums: require('./src/Enums'),\n Source: require('./src/Source'),\n Events: require('./src/Events'),\n Plugins: require('./src/Plugins'),\n BotiumError: require('./src/scripting/BotiumError').BotiumError,\n ScriptingMemory: require('./src/scripting/ScriptingMemory'),\n HookUtils: require('./src/helpers/HookUtils'),\n LogicHookConstants: require('./src/scripting/logichook/LogicHookConsts'),\n Lib: {\n tryLoadPlugin: require('./src/containers/plugins/index').tryLoadPlugin,\n SimpleRestContainer: require('./src/containers/plugins/SimpleRestContainer')\n },\n InboundProxy: require('./src/grid/inbound/proxy'),\n BotiumMockRichMessageTypes: require('./src/mocks/BotiumMockRichMessageTypes')\n}\n"],"names":["Capabilities","PROJECTNAME","TESTSESSIONNAME","TESTCASENAME","TEMPDIR","CLEANUPTEMPDIR","WAITFORBOTTIMEOUT","CONTAINERMODE","PLUGINMODULEPATH","SIMULATE_WRITING_SPEED","BOTIUMGRIDURL","BOTIUMAPITOKEN","BOTIUMGRIDSLOT","SIMPLEREST_PING_URL","SIMPLEREST_PING_VERB","SIMPLEREST_PING_BODY","SIMPLEREST_PING_BODY_RAW","SIMPLEREST_PING_HEADERS","SIMPLEREST_PING_REQUEST_HOOK","SIMPLEREST_PING_RETRIES","SIMPLEREST_PING_TIMEOUT","SIMPLEREST_PING_UPDATE_CONTEXT","SIMPLEREST_PING_PROCESS_RESPONSE","SIMPLEREST_START_URL","SIMPLEREST_START_VERB","SIMPLEREST_START_BODY","SIMPLEREST_START_BODY_RAW","SIMPLEREST_START_HEADERS","SIMPLEREST_START_REQUEST_HOOK","SIMPLEREST_START_RETRIES","SIMPLEREST_START_TIMEOUT","SIMPLEREST_START_UPDATE_CONTEXT","SIMPLEREST_START_PROCESS_RESPONSE","SIMPLEREST_STOP_URL","SIMPLEREST_STOP_VERB","SIMPLEREST_STOP_BODY","SIMPLEREST_STOP_BODY_RAW","SIMPLEREST_STOP_HEADERS","SIMPLEREST_STOP_REQUEST_HOOK","SIMPLEREST_STOP_RETRIES","SIMPLEREST_STOP_TIMEOUT","SIMPLEREST_INIT_CONTEXT","SIMPLEREST_INIT_TEXT","SIMPLEREST_INIT_PROCESS_RESPONSE","SIMPLEREST_PROXY_URL","SIMPLEREST_STRICT_SSL","SIMPLEREST_URL","SIMPLEREST_EXTRA_OPTIONS","SIMPLEREST_IGNORE_EMPTY","SIMPLEREST_TIMEOUT","SIMPLEREST_METHOD","SIMPLEREST_VERB","SIMPLEREST_HEADERS_TEMPLATE","SIMPLEREST_BODY_TEMPLATE","SIMPLEREST_BODY_RAW","SIMPLEREST_START_HOOK","SIMPLEREST_STOP_HOOK","SIMPLEREST_REQUEST_HOOK","SIMPLEREST_PARSER_HOOK","SIMPLEREST_POLL_URL","SIMPLEREST_POLL_VERB","SIMPLEREST_POLL_BODY","SIMPLEREST_POLL_BODY_RAW","SIMPLEREST_POLL_HEADERS","SIMPLEREST_POLL_REQUEST_HOOK","SIMPLEREST_POLL_INTERVAL","SIMPLEREST_POLL_TIMEOUT","SIMPLEREST_POLL_UPDATE_CONTEXT","SIMPLEREST_BODY_JSONPATH","SIMPLEREST_RESPONSE_JSONPATH","SIMPLEREST_RESPONSE_HOOK","SIMPLEREST_MEDIA_JSONPATH","SIMPLEREST_BUTTONS_JSONPATH","SIMPLEREST_CARDS_JSONPATH","SIMPLEREST_CARD_TEXT_JSONPATH","SIMPLEREST_CARD_SUBTEXT_JSONPATH","SIMPLEREST_CARD_BUTTONS_JSONPATH","SIMPLEREST_CARD_ATTACHMENTS_JSONPATH","SIMPLEREST_CONTEXT_JSONPATH","SIMPLEREST_CONTEXT_MERGE_OR_REPLACE","SIMPLEREST_CONVERSATION_ID_TEMPLATE","SIMPLEREST_STEP_ID_TEMPLATE","SIMPLEREST_INBOUND_REDISURL","SIMPLEREST_INBOUND_ENDPOINT","SIMPLEREST_INBOUND_PORT","SIMPLEREST_INBOUND_SELECTOR_JSONPATH","SIMPLEREST_INBOUND_SELECTOR_VALUE","SIMPLEREST_INBOUND_UPDATE_CONTEXT","SIMPLEREST_REDIS_TOPIC","SIMPLEREST_INBOUND_ORDER_UNSETTLED_EVENTS_JSONPATH","SIMPLEREST_INBOUND_DEBOUNCE_TIMEOUT","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","MESSAGE_SENTTOBOT","MESSAGE_SENDTOBOT_ERROR","MESSAGE_RECEIVEDFROMBOT","MESSAGE_RECEIVEFROMBOT_ERROR","MESSAGE_ATTACHMENT","MESSAGE_TRANSCRIPT","TOOMUCHWORKERS_ERROR","BotiumError","Error","message","context","supressChildCheck","_getChildErrorsFromContext","name","captureStackTrace","isAsserterError","errArr","isArray","hasNotAsserterError","findIndex","errDetail","type","errors","e","prettify","includeJson","lines","forEach","segments","source","subtype","cause","expected","not","JSON","stringify","actual","join","input","transcript","length","transcriptStep","jsonOutput","jsonErr","botiumErrorFromErr","botiumErrorFromList","flat","map","toString","children","error","childErrors","concat","result","BotiumError_1","LOGIC_HOOK_INCLUDE","LogicHookConsts","DEFAULT_ASSERTERS","className","DEFAULT_LOGIC_HOOKS","DEFAULT_USER_INPUTS","NodeVM","require$$0","debug","require$$1","require$$2","require$$3","asserter","Class","require","logicHook","userInput","LogicHookUtils_1","LogicHookUtils","buildScriptContext","caps","asserters","globalAsserters","logicHooks","globalLogicHooks","userInputs","_setDefaultAsserters","_setDefaultLogicHooks","_setDefaultUserInputs","_fetchAsserters","_fetchLogicHooks","_fetchUserInputs","lh","ui","ref","_loadClass","global","getGlobalAsserter","getGlobalLogicHook","src","args","hookType","find","_checkUnsafe","path","basename","__filename","packageName","CheckClass","isClass","PluginClass","isObject","isString","hookObject","keys","reduce","key","script","vm","eval","sandbox","run","loadErr","tryLoads","tryLoadPackageName","tryLoadAsserterByName","indexOf","substr","lastIndexOf","tryLoadFromSource","tryRequire","tryAsserterName","default","PluginAsserters","PluginLogicHooks","tryLoad","tryLoadFile","process","cwd","fs","existsSync","Constants","SCRIPTING_FORMAT_XSLX","SCRIPTING_FORMAT_TXT","SCRIPTING_FORMAT_YAML","SCRIPTING_FORMAT_JSON","SCRIPTING_FORMAT_CSV","SCRIPTING_FORMAT_MARKDOWN","SCRIPTING_TYPE_CONVO","SCRIPTING_TYPE_PCONVO","SCRIPTING_TYPE_UTTERANCES","SCRIPTING_TYPE_SCRIPTING_MEMORY","BotiumMockAttachment_1","BotiumMockAttachment","fromJson","mimeType","base64","href","BotiumMockMedia","mediaUri","altText","downloadUri","buffer","indent","sections","truncate","repeat","BotiumMockButton","payload","imageUri","BotiumMockCard","subtext","content","sourceData","image","buttons","a","media","forms","BotiumMockForm","cards","_prettifyLines","card","prettifySafe","entry","m","b","f","c","value","label","options","BotiumMockChoice","title","BotiumMockRichMessageTypes","BotiumMockAsserter","cloneDeep","BotiumMockUserInput","BotiumMockLogicHook","BotiumMockScripting","BotiumMockMessage_1","BotiumMockMessage","sender","optional","nlp","sourceAction","attachments","slice","Enums","E_SCRIPTING_MEMORY_COLUMN_MODE","VARNAMES","TESTCASENAMES","normalizeText","str","doCleanup","replace","split","s","trim","splitStringInNonEmptyLines","filter","quoteRegexpString","removeBuffers","obj","jsonString","isBuffer","toLowerCase","startsWith","parse","isUndefined","undefined","isNumber","v","flatString","_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","helper","v1","uuidv1","require$$4","SCRIPTING_FUNCTIONS_RAW","$now","Date","toLocaleString","$now_EN","$now_DE","moment","format","$now_ISO","toISOString","$date","pattern","toLocaleDateString","$date_EN","$date_DE","$date_ISO","$time","toLocaleTimeString","$time_EN","$time_DE","$time_ISO","$time_HH_MM","$time_HH","$time_H_A","$timestamp","now","$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","utterance","util","inspect","varRegex","utterances","resolveUtterance","reExpected","varMatches","varMatchesRegexp","resultMatches","ScriptingMemory","RetryHelper_1","RetryHelper","section","retryErrorPatterns","onErrorRegexp","toUpperCase","r","retrySettings","retries","isNil","numRetries","factor","minTimeout","shouldRetry","errString","re","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","retryHelper","promiseRetry","retry","number","RunImpl","retryRemaining","onConvoBegin","assertConvoBegin","runConversation","_checkBotRepliesConsumed","onConvoEnd","assertConvoEndErr","assertConvoEnd","eventEmitter","emit","transcriptSteps","lastMeConvoStep","waitForBotSays","skipTranscriptStep","currentStepIndex","meMsg","WORKAROUND_OVERWRITE_JSON_MESSAGE_TEXT","setUserInput","onMeStart","onMePrepare","coreMsg","omit","setTimeout","isNull","onMeEnd","failErr","onBotStart","prepared","onBotPrepare","isErrorHandledWithOptionConvoStep","nextConvoStep","assertErrors","scriptingMemoryUpdate","response","_checkNormalizeText","tomatch","_resolveUtterancesToMatch","assertBotNotResponse","_compareObject","assertConvoStep","onBotEnd","transcriptStepErrs","forOwn","prototype","hasOwnProperty","call","GetScriptingMemoryAllVariables","resultOuter","GetScriptingMemoryVariables","extractFromArgs","convoStepItems","resultInner","item","queueLength","_QueueLength","normalizedUtterances","expandPartialConvos","_getIncludeLogicHookNames","hook","partialConvos","GetPartialConvos","_getEffectiveConversationRecursive","parentPConvos","ignoreBeginEnd","includeLogicHooks","steptagPath","includeLogicHook","alreadyThereAt","partialConvo","Convo_1","_normalize","botresponse","regexp","ignoreCase","test","wildcard","numWildcards","utteranceRe","wildcardExact","include","equals","wer","threshold","p","includes","parseFloat","parseInt","speechScorer","wordErrorRate","getMatchFunction","matchingMode","MatchFunctions","isStringJson","string","isJsonObject","json","stringIsJson","isJson","toJsonWeak","stringOrNot","optionalJson","body","shortenJsonString","escapeJSONString","character","formatTimeout","ms","Math","floor","Utils","_ensureList","queryResult","precompile","filename","checkerJsonpath","CHECKER_JSONPATH","rootJsonpath","ROOT_JSONPATH","utteranceRefsJsonpath","UTTERANCE_REF_JSONPATH","utterancesJsonpath","UTTERANCES_JSONPATH","scriptData","scouldExist","rootObjects","intent","executeHook","executeHookSync","getHook","data","allowUnsafe","resultWithRequire","hookData","esprima","parseScript","HookUtils","SCRIPT","htmlCommentRegexp","md","MarkdownIt","parsed","_extractFromRasaIntent","_extractFromRasaSentence","rasaSentence","matched","splitted","meText","meTexts","state","processLeafs","uniq","getAllCapValues","capNamePrefix","allCapValues","jsonPathCaps","pickBy","k","each","flatCababilities","prefix","capNames","regexpPrefixAndGroup","currentGroup","currentObject","capName","charAt","capPrefixAndGroup","PROVIDERS","JSON_TO_JSON_JSONPATH","MARKDOWN_RASA","CAPABILITY_PREFIX","require$$5","execute","ownCaps","Buffer","capSuffixAndVal","NAME","provider","precompiler","CompilerBase_1","CompilerBase","AddConvos","AddPartialConvos","AddUtterances","AddScriptingMemories","Validate","GetHeaders","Decompile","_AssertCapabilityExists","cap","_GetOptionalCapability","def","_GetCapabilitiesByPrefix","Utterance_1","Utterance","CompilerXlsx_1","CompilerXlsx","colnames","_splitSheetnames","sheetnames","_filterSheetnames","selectors","filteredSheetnames","sheetname","selector","workbook","XLSX","read","Props","maxEmptyRowCount","SheetNames","scriptResults","sheet","Sheets","rowindex","colindex","hasNameCol","_findOrigin","parseCell","eolSplit","_extractRow","cell1","cell1Value","cell2","cell2Value","cell3","cell3Value","nameCell","nameCellValue","meCell","meCellValue","botCell","botCellValue","questionAnswerMode","emptyRowCount","index","foundQARows","foundConvoRows","convoResults","currentConvo","currentConvoName","startrowindex","formatLength","max","formatBase","formatRowIndex","currentUtterance","emptylines","uttCell","line1Cell","colindexTemp","caseNameCell","varNameCell","variableValueCell","variableNames","variableNameCell","cellContent","stepLines","wb","utils","book_new","ws","json_to_sheet","book_append_sheet","xlsxOutput","write","_get","cell","cellValue","NestedLoop","cr","cc","CompilerTxt_1","CompilerTxt","line","_compileConvo","_compileUtterances","_compileScriptingMemory","isPartial","currentLineIndex","currentLines","convoStepSender","convoStepChannel","convoStepLineIndex","parseMsg","pushPrev","isValidTagLine","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","skip","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","fn","promise","pnot","errTemplate","ScriptingProvider_1","ScriptingProvider","compilers","matchFn","globalAsserter","globalLogicHook","_createLogicHookPromises","_createAsserterPromises","asserterType","_createUserInputPromises","resolveEmptyIfUnknown","_resolveUtterance","found","utt","params","nottomatch","retryHelperAsserter","retryHelperLogicHook","retryHelperUserInput","_isValidAsserterType","mapNot","callAsserter","asserterSpec","notAsserterType","convoAsserter","isGlobal","allPromises","allSettled","results","rejected","status","reason","all","convoStepPromises","globalPromises","some","t","parts","uttArgs","_buildScriptContext","Match","require$$6","require$$7","require$$8","require$$9","require$$10","logicHookUtils","GetCompiler","ReadBotiumFilesFromDirectory","filelist","globby","sync","gitignore","filelistGlobbed","remove","file","isSkip","convoDirStats","statSync","isFile","dirname","dirConvos","dirUtterances","dirPartialConvos","dirScriptingMemories","pconvos","ReadScript","dirScriptingMemory","ReadScriptFromBuffer","scriptingFormat","scriptingTypes","readFileSync","precompResponse","precompilers","fileConvo","filePartialConvo","_tagAndCleanupUtterances","utteranceFiles","fileUtt","ExpandScriptingMemoryToConvos","aggregatedNoNames","aggregatedNoVariables","aggregatedNoVariableNames","aggregatedDuplicates","duplicate","j","aggregatedIntersections","intersection","k1","k2","kInt","variablesToScriptingMemory","Map","get","convosExpandedAll","convosOriginalAll","convoVariables","convosToExpand","convosExpandedConvo","multipliers","convosExpandedVariable","convoToExpand","convoExpanded","_sortConvos","ExpandUtterancesToConvos","useNameAsIntent","incomprehensionIntents","incomprehensionUtts","incomprehensionUtt","expandedConvos","uttName","responseStep","ii","origUttName","justHeader","convoFilter","count","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","min","x","random","uiIndex","expandConvo","expandedUserInputs","processSampleInputs","sampleinputs","processSampleInput","sampleinput","currentStepMod","convoPostfix","logPerEntry","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","end","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","jsonPathRoots","jsonPathsBody","jsonPathBody","rb","jsonPathRoot","_retrieveMedia","jsonPathMediaRoot","jsonPathsMedia","retrievedMedia","responseMedia","flattenDeep","mime","lookup","_retrieveButtons","jsonPathButtonRoot","jsonPathsButtons","retrievedButtons","responseButtons","_getCardText","responseCardText","texts","jsonPathsCards","responseCards","jsonPathsCardText","jsonPathsCardSubText","hasMessageText","jsonPathsTexts","responseTexts","messageTexts","messageTextIndex","botMsgRoot","beforeHookKeys","afterHookKeys","_buildRequest","requestOptions","statusCode","statusMessage","enabled","jsonBody","errKey","_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","subscribe","unsubscribe","close","_runPolling","verb","pollConfig","pollInterval","setInterval","clearInterval","capPrefix","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","botiumCore","ScriptingConstants","require$$11","LogicHookConstants","require$$12","Lib","require$$13","require$$14","InboundProxy","require$$15","require$$16"],"mappings":"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"}