oxygen-cli 1.25.0 → 1.26.0

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 (264) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/core/OxygenCore.js +266 -37
  3. package/build/core/OxygenEvents.js +11 -1
  4. package/build/core/OxygenModule.js +14 -1
  5. package/build/core/OxygenService.js +12 -1
  6. package/build/core/OxygenSubModule.js +10 -1
  7. package/build/core/WebDriverModule.js +30 -1
  8. package/build/core/utils.js +17 -1
  9. package/build/errors/HookError.js +7 -1
  10. package/build/errors/ModuleError.js +7 -1
  11. package/build/errors/ModuleUnavailableError.js +3 -1
  12. package/build/errors/OxygenError.js +33 -1
  13. package/build/errors/ScriptNotFound.js +7 -1
  14. package/build/errors/helper.js +77 -45
  15. package/build/index.js +18 -6
  16. package/build/lib/cli-util.js +90 -28
  17. package/build/lib/cli.js +23 -1
  18. package/build/lib/debugger.js +144 -1
  19. package/build/lib/img-merge.js +15 -1
  20. package/build/lib/launcher.js +28 -1
  21. package/build/lib/moduleRequire.js +4 -1
  22. package/build/lib/param-manager.js +28 -1
  23. package/build/lib/param-reader-csv.js +15 -1
  24. package/build/lib/param-reader-excel.js +14 -1
  25. package/build/lib/param-reader-json.js +10 -1
  26. package/build/lib/util.js +58 -3
  27. package/build/model/case-result.js +4 -2
  28. package/build/model/failure.js +2 -1
  29. package/build/model/status.js +2 -1
  30. package/build/model/step-result.js +2 -1
  31. package/build/model/suite-result.js +2 -1
  32. package/build/model/test-result.js +2 -1
  33. package/build/model/testcase.js +2 -1
  34. package/build/model/testsuite.js +2 -1
  35. package/build/ox_modules/index.js +33 -13
  36. package/build/ox_modules/module-assert.js +24 -8
  37. package/build/ox_modules/module-date.js +8 -3
  38. package/build/ox_modules/module-db.js +28 -7
  39. package/build/ox_modules/module-email.js +36 -10
  40. package/build/ox_modules/module-eyes.js +46 -5
  41. package/build/ox_modules/module-http.js +102 -41
  42. package/build/ox_modules/module-log.js +22 -5
  43. package/build/ox_modules/module-mailinator.js +32 -10
  44. package/build/ox_modules/module-mob/commands/alertAccept.js +2 -1
  45. package/build/ox_modules/module-mob/commands/alertDismiss.js +2 -1
  46. package/build/ox_modules/module-mob/commands/assertAlert.js +6 -1
  47. package/build/ox_modules/module-mob/commands/assertText.js +3 -1
  48. package/build/ox_modules/module-mob/commands/assertTitle.js +4 -1
  49. package/build/ox_modules/module-mob/commands/assertValue.js +15 -9
  50. package/build/ox_modules/module-mob/commands/back.js +2 -1
  51. package/build/ox_modules/module-mob/commands/clear.js +4 -1
  52. package/build/ox_modules/module-mob/commands/click.js +4 -3
  53. package/build/ox_modules/module-mob/commands/clickHidden.js +9 -3
  54. package/build/ox_modules/module-mob/commands/clickLong.js +2 -1
  55. package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +4 -1
  56. package/build/ox_modules/module-mob/commands/closeApp.js +2 -1
  57. package/build/ox_modules/module-mob/commands/debug.js +2 -2
  58. package/build/ox_modules/module-mob/commands/dragAndDrop.js +2 -1
  59. package/build/ox_modules/module-mob/commands/enableNetwork.js +12 -4
  60. package/build/ox_modules/module-mob/commands/execute.js +2 -1
  61. package/build/ox_modules/module-mob/commands/findElement.js +3 -1
  62. package/build/ox_modules/module-mob/commands/findElements.js +4 -1
  63. package/build/ox_modules/module-mob/commands/getAlertText.js +2 -1
  64. package/build/ox_modules/module-mob/commands/getAppiumLogs.js +2 -1
  65. package/build/ox_modules/module-mob/commands/getBrowserLogs.js +10 -1
  66. package/build/ox_modules/module-mob/commands/getCurrentActivity.js +2 -1
  67. package/build/ox_modules/module-mob/commands/getCurrentPackage.js +2 -1
  68. package/build/ox_modules/module-mob/commands/getDeviceLogs.js +9 -1
  69. package/build/ox_modules/module-mob/commands/getDeviceTime.js +2 -1
  70. package/build/ox_modules/module-mob/commands/getLocation.js +2 -1
  71. package/build/ox_modules/module-mob/commands/getSource.js +2 -1
  72. package/build/ox_modules/module-mob/commands/getText.js +4 -1
  73. package/build/ox_modules/module-mob/commands/getTitle.js +2 -1
  74. package/build/ox_modules/module-mob/commands/getUrl.js +2 -1
  75. package/build/ox_modules/module-mob/commands/getValue.js +9 -5
  76. package/build/ox_modules/module-mob/commands/getWindowHandles.js +2 -1
  77. package/build/ox_modules/module-mob/commands/hideKeyboard.js +2 -1
  78. package/build/ox_modules/module-mob/commands/index.js +94 -19
  79. package/build/ox_modules/module-mob/commands/installApp.js +2 -1
  80. package/build/ox_modules/module-mob/commands/isAppInstalled.js +2 -1
  81. package/build/ox_modules/module-mob/commands/isCheckable.js +2 -1
  82. package/build/ox_modules/module-mob/commands/isChecked.js +2 -1
  83. package/build/ox_modules/module-mob/commands/isClickable.js +2 -1
  84. package/build/ox_modules/module-mob/commands/isExist.js +3 -1
  85. package/build/ox_modules/module-mob/commands/isSelected.js +2 -1
  86. package/build/ox_modules/module-mob/commands/isVisible.js +3 -1
  87. package/build/ox_modules/module-mob/commands/isWebViewContext.js +2 -1
  88. package/build/ox_modules/module-mob/commands/launchApp.js +2 -1
  89. package/build/ox_modules/module-mob/commands/longPressKeyCode.js +2 -1
  90. package/build/ox_modules/module-mob/commands/open.js +3 -1
  91. package/build/ox_modules/module-mob/commands/pause.js +2 -1
  92. package/build/ox_modules/module-mob/commands/removeApp.js +2 -1
  93. package/build/ox_modules/module-mob/commands/resetApp.js +2 -1
  94. package/build/ox_modules/module-mob/commands/scrollIntoElement.js +6 -1
  95. package/build/ox_modules/module-mob/commands/scrollIntoView.js +2 -1
  96. package/build/ox_modules/module-mob/commands/select.js +4 -1
  97. package/build/ox_modules/module-mob/commands/selectFrame.js +4 -1
  98. package/build/ox_modules/module-mob/commands/selectWindow.js +26 -5
  99. package/build/ox_modules/module-mob/commands/sendKeys.js +9 -6
  100. package/build/ox_modules/module-mob/commands/setContext.js +2 -1
  101. package/build/ox_modules/module-mob/commands/setNativeContext.js +2 -1
  102. package/build/ox_modules/module-mob/commands/setTimeout.js +2 -1
  103. package/build/ox_modules/module-mob/commands/setWebViewContext.js +6 -3
  104. package/build/ox_modules/module-mob/commands/shake.js +2 -1
  105. package/build/ox_modules/module-mob/commands/smsClickLink.js +2 -1
  106. package/build/ox_modules/module-mob/commands/smsGetText.js +6 -3
  107. package/build/ox_modules/module-mob/commands/swipe.js +2 -1
  108. package/build/ox_modules/module-mob/commands/swipeElement.js +2 -1
  109. package/build/ox_modules/module-mob/commands/swipeScreen.js +2 -1
  110. package/build/ox_modules/module-mob/commands/takeScreenshot.js +2 -1
  111. package/build/ox_modules/module-mob/commands/tap.js +2 -1
  112. package/build/ox_modules/module-mob/commands/type.js +7 -3
  113. package/build/ox_modules/module-mob/commands/unlockPattern.js +10 -9
  114. package/build/ox_modules/module-mob/commands/waitForExist.js +2 -1
  115. package/build/ox_modules/module-mob/commands/waitForInteractable.js +3 -1
  116. package/build/ox_modules/module-mob/commands/waitForVisible.js +2 -1
  117. package/build/ox_modules/module-mob.js +139 -67
  118. package/build/ox_modules/module-pdf.js +62 -23
  119. package/build/ox_modules/module-proxy.js +68 -8
  120. package/build/ox_modules/module-serial.js +32 -7
  121. package/build/ox_modules/module-shell.js +27 -8
  122. package/build/ox_modules/module-soap.js +47 -14
  123. package/build/ox_modules/module-twilio.js +53 -10
  124. package/build/ox_modules/module-utils.js +51 -16
  125. package/build/ox_modules/module-web/commands/alertAccept.js +2 -1
  126. package/build/ox_modules/module-web/commands/alertDismiss.js +2 -1
  127. package/build/ox_modules/module-web/commands/assertAlert.js +6 -1
  128. package/build/ox_modules/module-web/commands/assertExist.js +2 -1
  129. package/build/ox_modules/module-web/commands/assertSelectedLabel.js +4 -1
  130. package/build/ox_modules/module-web/commands/assertSelectedValue.js +3 -1
  131. package/build/ox_modules/module-web/commands/assertText.js +3 -1
  132. package/build/ox_modules/module-web/commands/assertTextNotPresent.js +6 -1
  133. package/build/ox_modules/module-web/commands/assertTextPresent.js +6 -1
  134. package/build/ox_modules/module-web/commands/assertTitle.js +3 -1
  135. package/build/ox_modules/module-web/commands/assertValue.js +3 -1
  136. package/build/ox_modules/module-web/commands/back.js +2 -1
  137. package/build/ox_modules/module-web/commands/clear.js +5 -1
  138. package/build/ox_modules/module-web/commands/click.js +13 -4
  139. package/build/ox_modules/module-web/commands/clickHidden.js +7 -2
  140. package/build/ox_modules/module-web/commands/closeWindow.js +2 -1
  141. package/build/ox_modules/module-web/commands/debug.js +2 -2
  142. package/build/ox_modules/module-web/commands/deleteCookies.js +2 -1
  143. package/build/ox_modules/module-web/commands/deselect.js +2 -1
  144. package/build/ox_modules/module-web/commands/doubleClick.js +9 -3
  145. package/build/ox_modules/module-web/commands/dragAndDrop.js +2 -1
  146. package/build/ox_modules/module-web/commands/execute.js +2 -1
  147. package/build/ox_modules/module-web/commands/fileBrowse.js +10 -4
  148. package/build/ox_modules/module-web/commands/findElement.js +3 -1
  149. package/build/ox_modules/module-web/commands/findElements.js +4 -1
  150. package/build/ox_modules/module-web/commands/fullscreenWindow.js +2 -1
  151. package/build/ox_modules/module-web/commands/getAlertText.js +2 -1
  152. package/build/ox_modules/module-web/commands/getAttribute.js +4 -1
  153. package/build/ox_modules/module-web/commands/getBrowserLogs.js +3 -1
  154. package/build/ox_modules/module-web/commands/getCookies.js +2 -1
  155. package/build/ox_modules/module-web/commands/getCssValue.js +4 -1
  156. package/build/ox_modules/module-web/commands/getElementCount.js +2 -1
  157. package/build/ox_modules/module-web/commands/getHTML.js +2 -1
  158. package/build/ox_modules/module-web/commands/getSource.js +2 -1
  159. package/build/ox_modules/module-web/commands/getText.js +4 -1
  160. package/build/ox_modules/module-web/commands/getTitle.js +2 -1
  161. package/build/ox_modules/module-web/commands/getUrl.js +2 -1
  162. package/build/ox_modules/module-web/commands/getValue.js +5 -1
  163. package/build/ox_modules/module-web/commands/getWindowHandles.js +2 -1
  164. package/build/ox_modules/module-web/commands/getWindowSize.js +2 -1
  165. package/build/ox_modules/module-web/commands/getXMLPageSource.js +5 -1
  166. package/build/ox_modules/module-web/commands/index.js +100 -19
  167. package/build/ox_modules/module-web/commands/isAlertPresent.js +2 -1
  168. package/build/ox_modules/module-web/commands/isChecked.js +2 -1
  169. package/build/ox_modules/module-web/commands/isExist.js +3 -1
  170. package/build/ox_modules/module-web/commands/isInteractable.js +2 -1
  171. package/build/ox_modules/module-web/commands/isSelected.js +2 -1
  172. package/build/ox_modules/module-web/commands/isVisible.js +3 -1
  173. package/build/ox_modules/module-web/commands/makeVisible.js +10 -2
  174. package/build/ox_modules/module-web/commands/maximizeWindow.js +2 -1
  175. package/build/ox_modules/module-web/commands/minimizeWindow.js +2 -1
  176. package/build/ox_modules/module-web/commands/newWindow.js +2 -1
  177. package/build/ox_modules/module-web/commands/open.js +4 -1
  178. package/build/ox_modules/module-web/commands/pause.js +2 -1
  179. package/build/ox_modules/module-web/commands/point.js +2 -1
  180. package/build/ox_modules/module-web/commands/pointJS.js +8 -2
  181. package/build/ox_modules/module-web/commands/refresh.js +2 -1
  182. package/build/ox_modules/module-web/commands/rightClick.js +8 -3
  183. package/build/ox_modules/module-web/commands/rightClickActions.js +2 -1
  184. package/build/ox_modules/module-web/commands/scrollToElement.js +2 -1
  185. package/build/ox_modules/module-web/commands/select.js +5 -1
  186. package/build/ox_modules/module-web/commands/selectFrame.js +3 -1
  187. package/build/ox_modules/module-web/commands/selectWindow.js +26 -5
  188. package/build/ox_modules/module-web/commands/sendKeys.js +6 -3
  189. package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +2 -2
  190. package/build/ox_modules/module-web/commands/setTimeout.js +2 -1
  191. package/build/ox_modules/module-web/commands/setWindowSize.js +2 -1
  192. package/build/ox_modules/module-web/commands/takeScreenshot.js +5 -3
  193. package/build/ox_modules/module-web/commands/type.js +5 -1
  194. package/build/ox_modules/module-web/commands/waitForAngular.js +11 -6
  195. package/build/ox_modules/module-web/commands/waitForExist.js +2 -1
  196. package/build/ox_modules/module-web/commands/waitForInteractable.js +2 -1
  197. package/build/ox_modules/module-web/commands/waitForNotExist.js +8 -1
  198. package/build/ox_modules/module-web/commands/waitForNotText.js +3 -1
  199. package/build/ox_modules/module-web/commands/waitForNotValue.js +3 -1
  200. package/build/ox_modules/module-web/commands/waitForText.js +3 -1
  201. package/build/ox_modules/module-web/commands/waitForValue.js +3 -1
  202. package/build/ox_modules/module-web/commands/waitForVisible.js +2 -1
  203. package/build/ox_modules/module-web/commands/waitForWindow.js +21 -4
  204. package/build/ox_modules/module-web.js +179 -77
  205. package/build/ox_modules/module-win/commands/assertText.js +3 -1
  206. package/build/ox_modules/module-win/commands/assertTitle.js +4 -1
  207. package/build/ox_modules/module-win/commands/assertValue.js +15 -9
  208. package/build/ox_modules/module-win/commands/back.js +2 -1
  209. package/build/ox_modules/module-win/commands/clear.js +4 -1
  210. package/build/ox_modules/module-win/commands/click.js +2 -1
  211. package/build/ox_modules/module-win/commands/clickLong.js +2 -1
  212. package/build/ox_modules/module-win/commands/clickMultipleTimes.js +4 -1
  213. package/build/ox_modules/module-win/commands/findElement.js +3 -1
  214. package/build/ox_modules/module-win/commands/findElements.js +4 -1
  215. package/build/ox_modules/module-win/commands/getAppiumLogs.js +2 -1
  216. package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +2 -1
  217. package/build/ox_modules/module-win/commands/getLocation.js +2 -1
  218. package/build/ox_modules/module-win/commands/getSource.js +2 -1
  219. package/build/ox_modules/module-win/commands/getText.js +4 -1
  220. package/build/ox_modules/module-win/commands/getValue.js +9 -5
  221. package/build/ox_modules/module-win/commands/getWindowHandles.js +2 -1
  222. package/build/ox_modules/module-win/commands/index.js +43 -5
  223. package/build/ox_modules/module-win/commands/isCheckable.js +2 -1
  224. package/build/ox_modules/module-win/commands/isChecked.js +2 -1
  225. package/build/ox_modules/module-win/commands/isClickable.js +2 -1
  226. package/build/ox_modules/module-win/commands/isExist.js +3 -1
  227. package/build/ox_modules/module-win/commands/isSelected.js +2 -1
  228. package/build/ox_modules/module-win/commands/isVisible.js +3 -1
  229. package/build/ox_modules/module-win/commands/open.js +2 -1
  230. package/build/ox_modules/module-win/commands/pause.js +2 -1
  231. package/build/ox_modules/module-win/commands/rightClick.js +2 -1
  232. package/build/ox_modules/module-win/commands/selectWindow.js +15 -1
  233. package/build/ox_modules/module-win/commands/sendKeys.js +4 -1
  234. package/build/ox_modules/module-win/commands/setTimeout.js +2 -1
  235. package/build/ox_modules/module-win/commands/takeScreenshot.js +2 -1
  236. package/build/ox_modules/module-win/commands/tap.js +2 -1
  237. package/build/ox_modules/module-win/commands/type.js +4 -1
  238. package/build/ox_modules/module-win/commands/waitForExist.js +2 -1
  239. package/build/ox_modules/module-win/commands/waitForInteractable.js +4 -1
  240. package/build/ox_modules/module-win/commands/waitForVisible.js +2 -1
  241. package/build/ox_modules/module-win.js +87 -48
  242. package/build/ox_modules/utils.js +76 -22
  243. package/build/ox_reporters/reporter-excel.js +58 -1
  244. package/build/ox_reporters/reporter-html.js +28 -1
  245. package/build/ox_reporters/reporter-json.js +14 -1
  246. package/build/ox_reporters/reporter-junit.js +24 -1
  247. package/build/ox_reporters/reporter-pdf.js +19 -1
  248. package/build/ox_reporters/reporter-xml.js +17 -1
  249. package/build/ox_services/service-devtools/submodule-network.js +91 -4
  250. package/build/ox_services/service-devtools.js +23 -1
  251. package/build/reporter/FileReporterBase.js +44 -5
  252. package/build/reporter/ReportAggregator.js +65 -1
  253. package/build/reporter/ReporterBase.js +6 -1
  254. package/build/runners/WorkerProcess.js +99 -1
  255. package/build/runners/cucumber/CucumberEventListener.js +29 -4
  256. package/build/runners/cucumber/CucumberReporter.js +56 -1
  257. package/build/runners/cucumber/CucumberWorker.js +66 -1
  258. package/build/runners/cucumber/index.js +30 -1
  259. package/build/runners/cucumber/worker.js +18 -1
  260. package/build/runners/index.js +6 -1
  261. package/build/runners/oxygen/OxygenWorker.js +60 -3
  262. package/build/runners/oxygen/index.js +178 -17
  263. package/build/runners/oxygen/worker.js +25 -2
  264. package/package.json +1 -1
@@ -1,11 +1,17 @@
1
1
  "use strict";
2
2
 
3
3
  require("source-map-support/register");
4
+
4
5
  var _logger = require("../../lib/logger");
6
+
5
7
  var _OxygenWorker = _interopRequireDefault(require("./OxygenWorker"));
8
+
6
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+
7
11
  const oxutil = require('../../lib/util');
12
+
8
13
  const errorHelper = require('../../errors/helper');
14
+
9
15
  const reporter = {
10
16
  onSuiteStart: function (...args) {
11
17
  emitReporterEvent('onSuiteStart', args);
@@ -55,6 +61,7 @@ const logger = {
55
61
  if (!src) {
56
62
  src = _logger.DEFAULT_LOGGER_ISSUER;
57
63
  }
64
+
58
65
  const ts = oxutil.getTimeStamp();
59
66
  processSend({
60
67
  time: ts,
@@ -76,10 +83,13 @@ const logger = {
76
83
  });
77
84
  }
78
85
  };
86
+
79
87
  let _worker = new _OxygenWorker.default(reporter, logger);
88
+
80
89
  function stringify(obj) {
81
90
  return typeof obj === 'string' || obj instanceof String ? obj : JSON.stringify(obj, null, 2);
82
91
  }
92
+
83
93
  oxutil.hookLogs(logger);
84
94
  process.on('unhandledRejection', async (err, origin) => {
85
95
  logger.error(err.message, _logger.ISSUERS.USER);
@@ -104,6 +114,7 @@ process.on('message', async function (msg) {
104
114
  if (!msg.type) {
105
115
  return;
106
116
  }
117
+
107
118
  if ((msg.type === 'invoke' || msg.type === 'invoke:hook') && msg.method) {
108
119
  const {
109
120
  callId,
@@ -126,6 +137,7 @@ process.on('message', async function (msg) {
126
137
  subscribe(msg.event);
127
138
  }
128
139
  });
140
+
129
141
  async function dispose(status = null) {
130
142
  if (_worker) {
131
143
  try {
@@ -133,6 +145,7 @@ async function dispose(status = null) {
133
145
  } catch (e) {}
134
146
  }
135
147
  }
148
+
136
149
  function processSend(msg) {
137
150
  try {
138
151
  process.connected && process.send({
@@ -141,8 +154,10 @@ function processSend(msg) {
141
154
  });
142
155
  } catch (e) {}
143
156
  }
157
+
144
158
  async function invoke(method, args) {
145
159
  let retval, error;
160
+
146
161
  if (_worker && _worker[method] && typeof _worker[method] === 'function') {
147
162
  try {
148
163
  retval = await _worker[method].apply(_worker, args || []);
@@ -153,32 +168,39 @@ async function invoke(method, args) {
153
168
  } else {
154
169
  error = new Error(`Method "${method}" does not exist`);
155
170
  }
171
+
156
172
  if (error) {
157
173
  error = errorHelper.getFailureFromError(error);
158
174
  }
175
+
159
176
  return {
160
177
  retval,
161
178
  error
162
179
  };
163
180
  }
181
+
164
182
  async function invokeTestHook(method, args) {
165
183
  let retval = undefined,
166
- error = null;
184
+ error = null;
185
+
167
186
  try {
168
187
  retval = await _worker.callTestHook(method, args);
169
188
  } catch (e) {
170
189
  error = e.message;
171
190
  }
191
+
172
192
  return {
173
193
  retval,
174
194
  error
175
195
  };
176
196
  }
197
+
177
198
  async function subscribe(eventName) {
178
199
  if (_worker && _worker.on) {
179
200
  _worker.on(eventName, (...args) => emitWorkerEvent(eventName, args));
180
201
  }
181
202
  }
203
+
182
204
  function emitWorkerEvent(eventName, eventArgs) {
183
205
  processSend({
184
206
  event: 'event',
@@ -186,6 +208,7 @@ function emitWorkerEvent(eventName, eventArgs) {
186
208
  args: eventArgs
187
209
  });
188
210
  }
211
+
189
212
  function emitReporterEvent(eventName, eventArgs) {
190
213
  processSend({
191
214
  event: 'reporter',
@@ -193,4 +216,4 @@ function emitReporterEvent(eventName, eventArgs) {
193
216
  args: eventArgs
194
217
  });
195
218
  }
196
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJveHV0aWwiLCJyZXF1aXJlIiwiZXJyb3JIZWxwZXIiLCJyZXBvcnRlciIsIm9uU3VpdGVTdGFydCIsImFyZ3MiLCJlbWl0UmVwb3J0ZXJFdmVudCIsIm9uU3VpdGVFbmQiLCJvbkNhc2VTdGFydCIsIm9uQ2FzZUVuZCIsIm9uU3RlcFN0YXJ0Iiwib25TdGVwRW5kIiwib25SdW5uZXJFbmQiLCJnbG9iYWwiLCJicm93c2VyIiwibG9nZ2VyIiwiaW5mbyIsIm1lc3NhZ2UiLCJzcmMiLCJERUZBVUxUX0xPR0dFUl9JU1NVRVIiLCJ0cyIsImdldFRpbWVTdGFtcCIsInByb2Nlc3NTZW5kIiwidGltZSIsImV2ZW50IiwibGV2ZWwiLCJMRVZFTFMiLCJJTkZPIiwibXNnIiwic3RyaW5naWZ5IiwiZGVidWciLCJERUJVRyIsImVycm9yIiwiZXJyIiwiRVJST1IiLCJ3YXJuIiwiV0FSTiIsIl93b3JrZXIiLCJPeHlnZW5Xb3JrZXIiLCJvYmoiLCJTdHJpbmciLCJKU09OIiwiaG9va0xvZ3MiLCJwcm9jZXNzIiwib24iLCJvcmlnaW4iLCJJU1NVRVJTIiwiVVNFUiIsImNvbnNvbGUiLCJsb2ciLCJlcnJNZXNzYWdlIiwiZGlzcG9zZSIsInR5cGUiLCJtZXRob2QiLCJjYWxsSWQiLCJpbnZva2VGdW5jIiwiaW52b2tlVGVzdEhvb2siLCJpbnZva2UiLCJyZXR2YWwiLCJzdWJzY3JpYmUiLCJzdGF0dXMiLCJlIiwiY29ubmVjdGVkIiwic2VuZCIsImFwcGx5IiwiRXJyb3IiLCJnZXRGYWlsdXJlRnJvbUVycm9yIiwidW5kZWZpbmVkIiwiY2FsbFRlc3RIb29rIiwiZXZlbnROYW1lIiwiZW1pdFdvcmtlckV2ZW50IiwiZXZlbnRBcmdzIiwibmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ydW5uZXJzL294eWdlbi93b3JrZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKlxyXG4gKiBCb2lsZXJwbGF0ZSBjb2RlIGZvciB1c2VyIHNjcmlwdHMuXHJcbiAqIFByb3ZpZGVzIGV2ZXJ5dGhpbmcgbmVjZXNzYXJ5IGZvciBleGVjdXRpbmcgSlMgdGVzdCBzY3JpcHRzLlxyXG4gKi9cclxuaW1wb3J0IHsgTEVWRUxTLCBERUZBVUxUX0xPR0dFUl9JU1NVRVIsIElTU1VFUlMgfSBmcm9tICcuLi8uLi9saWIvbG9nZ2VyJztcclxuaW1wb3J0IE94eWdlbldvcmtlciBmcm9tICcuL094eWdlbldvcmtlcic7XHJcbmNvbnN0IG94dXRpbCA9IHJlcXVpcmUoJy4uLy4uL2xpYi91dGlsJyk7XHJcbmNvbnN0IGVycm9ySGVscGVyID0gcmVxdWlyZSgnLi4vLi4vZXJyb3JzL2hlbHBlcicpO1xyXG5cclxuY29uc3QgcmVwb3J0ZXIgPSB7XHJcbiAgICBvblN1aXRlU3RhcnQ6IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcclxuICAgICAgICBlbWl0UmVwb3J0ZXJFdmVudCgnb25TdWl0ZVN0YXJ0JywgYXJncyk7XHJcbiAgICB9LFxyXG4gICAgb25TdWl0ZUVuZDogZnVuY3Rpb24oLi4uYXJncykge1xyXG4gICAgICAgIGVtaXRSZXBvcnRlckV2ZW50KCdvblN1aXRlRW5kJywgYXJncyk7XHJcbiAgICB9LFxyXG4gICAgb25DYXNlU3RhcnQ6IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcclxuICAgICAgICBlbWl0UmVwb3J0ZXJFdmVudCgnb25DYXNlU3RhcnQnLCBhcmdzKTtcclxuICAgIH0sXHJcbiAgICBvbkNhc2VFbmQ6IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcclxuICAgICAgICBlbWl0UmVwb3J0ZXJFdmVudCgnb25DYXNlRW5kJywgYXJncyk7XHJcbiAgICB9LFxyXG4gICAgb25TdGVwU3RhcnQ6IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcclxuICAgICAgICBlbWl0UmVwb3J0ZXJFdmVudCgnb25TdGVwU3RhcnQnLCBhcmdzKTtcclxuICAgIH0sXHJcbiAgICBvblN0ZXBFbmQ6IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcclxuICAgICAgICBlbWl0UmVwb3J0ZXJFdmVudCgnb25TdGVwRW5kJywgYXJncyk7XHJcbiAgICB9LFxyXG4gICAgb25SdW5uZXJFbmQ6IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcclxuICAgICAgICBlbWl0UmVwb3J0ZXJFdmVudCgnb25SdW5uZXJFbmQnLCBhcmdzKTtcclxuICAgIH1cclxufTtcclxuXHJcbi8vIG1vY2t1cCBnbG9iYmFsLmJyb3dzZXIgb2JqZWN0IGZvciBpbnRlcm5hbCBXRElPIGZ1bmN0aW9ucyB0byB3b3JrIHByb3Blcmx5XHJcbmdsb2JhbC5icm93c2VyID0ge307XHJcblxyXG5jb25zdCBsb2dnZXIgPSB7XHJcbiAgICBpbmZvOiBmdW5jdGlvbihtZXNzYWdlLCBzcmMgPSBERUZBVUxUX0xPR0dFUl9JU1NVRVIpIHtcclxuICAgICAgICBjb25zdCB0cyA9IG94dXRpbC5nZXRUaW1lU3RhbXAoKTtcclxuICAgICAgICBwcm9jZXNzU2VuZCh7IHRpbWU6IHRzLCBldmVudDogJ2xvZycsIGxldmVsOiBMRVZFTFMuSU5GTywgbXNnOiBzdHJpbmdpZnkobWVzc2FnZSksIHNyYyB9KTtcclxuICAgIH0sXHJcbiAgICBkZWJ1ZzogZnVuY3Rpb24obWVzc2FnZSwgc3JjID0gREVGQVVMVF9MT0dHRVJfSVNTVUVSKSB7XHJcbiAgICAgICAgY29uc3QgdHMgPSBveHV0aWwuZ2V0VGltZVN0YW1wKCk7XHJcbiAgICAgICAgcHJvY2Vzc1NlbmQoeyB0aW1lOiB0cywgZXZlbnQ6ICdsb2cnLCBsZXZlbDogTEVWRUxTLkRFQlVHLCBtc2c6IHN0cmluZ2lmeShtZXNzYWdlKSwgc3JjIH0pO1xyXG4gICAgfSxcclxuICAgIGVycm9yOiBmdW5jdGlvbihtZXNzYWdlLCBzcmMgPSBERUZBVUxUX0xPR0dFUl9JU1NVRVIsIGVyciA9IG51bGwpIHtcclxuICAgICAgICBpZiAoIXNyYykge1xyXG4gICAgICAgICAgICBzcmMgPSBERUZBVUxUX0xPR0dFUl9JU1NVRVI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRzID0gb3h1dGlsLmdldFRpbWVTdGFtcCgpO1xyXG4gICAgICAgIHByb2Nlc3NTZW5kKHsgdGltZTogdHMsIGV2ZW50OiAnbG9nJywgbGV2ZWw6IExFVkVMUy5FUlJPUiwgbXNnOiBzdHJpbmdpZnkobWVzc2FnZSksIHNyYywgZXJyOiBlcnIgfSk7XHJcbiAgICB9LFxyXG4gICAgd2FybjogZnVuY3Rpb24obWVzc2FnZSwgc3JjID0gREVGQVVMVF9MT0dHRVJfSVNTVUVSKSB7XHJcbiAgICAgICAgY29uc3QgdHMgPSBveHV0aWwuZ2V0VGltZVN0YW1wKCk7XHJcbiAgICAgICAgcHJvY2Vzc1NlbmQoeyB0aW1lOiB0cywgZXZlbnQ6ICdsb2cnLCBsZXZlbDogTEVWRUxTLldBUk4sIG1zZzogc3RyaW5naWZ5KG1lc3NhZ2UpLCBzcmMgfSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5sZXQgX3dvcmtlciA9IG5ldyBPeHlnZW5Xb3JrZXIocmVwb3J0ZXIsIGxvZ2dlcik7XHJcblxyXG5mdW5jdGlvbiBzdHJpbmdpZnkob2JqKSB7XHJcbiAgICByZXR1cm4gKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnIHx8IG9iaiBpbnN0YW5jZW9mIFN0cmluZyA/IG9iaiA6IEpTT04uc3RyaW5naWZ5KG9iaiwgbnVsbCwgMikpO1xyXG59XHJcblxyXG5veHV0aWwuaG9va0xvZ3MobG9nZ2VyKTtcclxuLy8gcmVkaXJlY3Qgc3Rkb3V0IGFuZCBzdGRlcnIgdG8gdGhlIGxvZ2dlclxyXG4vL3Byb2Nlc3Muc3Rkb3V0LndyaXRlID0gbG9nZ2VyLmRlYnVnO1xyXG4vL3Byb2Nlc3Muc3RkZXJyLndyaXRlID0gbG9nZ2VyLmVycm9yO1xyXG5cclxucHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgYXN5bmMoZXJyLCBvcmlnaW4pID0+IHtcclxuICAgIGxvZ2dlci5lcnJvcihlcnIubWVzc2FnZSwgSVNTVUVSUy5VU0VSKTtcclxuICAgIGNvbnNvbGUubG9nKCd1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpO1xyXG4gICAgcHJvY2Vzc1NlbmQoe1xyXG4gICAgICAgIGV2ZW50OiAnd29ya2VyRXJyb3InLFxyXG4gICAgICAgIGVyck1lc3NhZ2U6IGVyci5tZXNzYWdlLFxyXG4gICAgfSk7XHJcbn0pO1xyXG5cclxucHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBhc3luYyhlcnIsIG9yaWdpbikgPT4ge1xyXG4gICAgbG9nZ2VyLmVycm9yKGVyci5tZXNzYWdlLCBJU1NVRVJTLlVTRVIpO1xyXG4gICAgY29uc29sZS5sb2coJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKTtcclxuICAgIHByb2Nlc3NTZW5kKHtcclxuICAgICAgICBldmVudDogJ3dvcmtlckVycm9yJyxcclxuICAgICAgICBlcnJNZXNzYWdlOiBlcnIubWVzc2FnZSxcclxuICAgIH0pO1xyXG59KTtcclxuXHJcbnByb2Nlc3Mub24oJ1NJR0lOVCcsIGFzeW5jIGZ1bmN0aW9uKCkge1xyXG4gICAgYXdhaXQgZGlzcG9zZSgnQ0FOQ0VMRUQnKTtcclxufSk7XHJcblxyXG5wcm9jZXNzLm9uKCdtZXNzYWdlJywgYXN5bmMgZnVuY3Rpb24gKG1zZykge1xyXG4gICAgaWYgKCFtc2cudHlwZSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICgobXNnLnR5cGUgPT09ICdpbnZva2UnIHx8IG1zZy50eXBlID09PSAnaW52b2tlOmhvb2snKSAmJiBtc2cubWV0aG9kKSB7XHJcbiAgICAgICAgY29uc3QgeyBjYWxsSWQsIG1ldGhvZCwgYXJncyB9ID0gbXNnO1xyXG4gICAgICAgIGNvbnN0IGludm9rZUZ1bmMgPSBtc2cudHlwZSA9PT0gJ2ludm9rZTpob29rJyA/IGludm9rZVRlc3RIb29rIDogaW52b2tlO1xyXG4gICAgICAgIGNvbnN0IHsgcmV0dmFsLCBlcnJvciB9ID0gYXdhaXQgaW52b2tlRnVuYyhtZXRob2QsIGFyZ3MpO1xyXG4gICAgICAgIHByb2Nlc3NTZW5kKHtcclxuICAgICAgICAgICAgZXZlbnQ6ICdpbnZva2U6cmVzdWx0JyxcclxuICAgICAgICAgICAgbWV0aG9kOiBtZXRob2QsXHJcbiAgICAgICAgICAgIGNhbGxJZDogY2FsbElkLFxyXG4gICAgICAgICAgICBlcnJvcjogZXJyb3IsXHJcbiAgICAgICAgICAgIHJldHZhbDogcmV0dmFsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChtc2cudHlwZSA9PT0gJ3N1YnNjcmliZScpIHtcclxuICAgICAgICBzdWJzY3JpYmUobXNnLmV2ZW50KTtcclxuICAgIH1cclxufSk7XHJcblxyXG5hc3luYyBmdW5jdGlvbiBkaXNwb3NlKHN0YXR1cz0gbnVsbCkge1xyXG4gICAgaWYgKF93b3JrZXIpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCBfd29ya2VyLmRpc3Bvc2Uoc3RhdHVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgLy8gaWdub3JlXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBwcm9jZXNzU2VuZChtc2cpIHtcclxuICAgIC8vIHdyYXAgcHJvY2Vzcy5zZW5kIHdpdGggdHJ5L2NhdGNoIGFzIHNvbWV0aW1lcyB3ZSBtaWdodCBjYWxsIHByb2Nlc3Muc2VuZCBcclxuICAgIC8vIHdoZW4gcGFyZW50IHByb2Nlc3MgaXMgYWxyZWFkeSBkaXNjb25uZWN0ZWQgKHdoZW4gdXNlIGtpbGxzIHRoZSBtYWluIHByb2Nlc3MpXHJcbiAgICB0cnkge1xyXG4gICAgICAgIC8vIGFkZCB1dGMgdGltZXN0YW1wXHJcbiAgICAgICAgcHJvY2Vzcy5jb25uZWN0ZWQgJiYgcHJvY2Vzcy5zZW5kKHsgdGltZTogb3h1dGlsLmdldFRpbWVTdGFtcCgpLCAuLi5tc2cgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgIC8vIGlnbm9yZVxyXG4gICAgfVxyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmdzKSB7XHJcbiAgICBsZXQgcmV0dmFsLCBlcnJvcjtcclxuICAgIGlmIChfd29ya2VyICYmIF93b3JrZXJbbWV0aG9kXSAmJiB0eXBlb2YgX3dvcmtlclttZXRob2RdID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dmFsID0gYXdhaXQgX3dvcmtlclttZXRob2RdLmFwcGx5KF93b3JrZXIsIGFyZ3MgfHwgW10pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIGludm9rZTogJHttZXRob2R9OmAsIGUpO1xyXG4gICAgICAgICAgICBlcnJvciA9IGU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoYE1ldGhvZCBcIiR7bWV0aG9kfVwiIGRvZXMgbm90IGV4aXN0YCk7XHJcbiAgICB9XHJcbiAgICAvLyBjb252ZXJ0IEpTIGVycm9yIHRvIE94eWdlbiBGYWlsdXJlIG9iamVjdFxyXG4gICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgZXJyb3IgPSBlcnJvckhlbHBlci5nZXRGYWlsdXJlRnJvbUVycm9yKGVycm9yKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IHJldHZhbCwgZXJyb3IgfTtcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gaW52b2tlVGVzdEhvb2sobWV0aG9kLCBhcmdzKSB7XHJcbiAgICBsZXQgcmV0dmFsID0gdW5kZWZpbmVkLCBlcnJvciA9IG51bGw7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHJldHZhbCA9IGF3YWl0IF93b3JrZXIuY2FsbFRlc3RIb29rKG1ldGhvZCwgYXJncyk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgIGVycm9yID0gZS5tZXNzYWdlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgcmV0dmFsLCBlcnJvciB9O1xyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBzdWJzY3JpYmUoZXZlbnROYW1lKSB7XHJcbiAgICBpZiAoX3dvcmtlciAmJiBfd29ya2VyLm9uKSB7XHJcbiAgICAgICAgX3dvcmtlci5vbihldmVudE5hbWUsICguLi5hcmdzKSA9PiBlbWl0V29ya2VyRXZlbnQoZXZlbnROYW1lLCBhcmdzKSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGVtaXRXb3JrZXJFdmVudChldmVudE5hbWUsIGV2ZW50QXJncykge1xyXG4gICAgcHJvY2Vzc1NlbmQoe1xyXG4gICAgICAgIGV2ZW50OiAnZXZlbnQnLFxyXG4gICAgICAgIG5hbWU6IGV2ZW50TmFtZSxcclxuICAgICAgICBhcmdzOiBldmVudEFyZ3NcclxuICAgIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBlbWl0UmVwb3J0ZXJFdmVudChldmVudE5hbWUsIGV2ZW50QXJncykge1xyXG4gICAgcHJvY2Vzc1NlbmQoe1xyXG4gICAgICAgIGV2ZW50OiAncmVwb3J0ZXInLFxyXG4gICAgICAgIG1ldGhvZDogZXZlbnROYW1lLFxyXG4gICAgICAgIGFyZ3M6IGV2ZW50QXJnc1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBYUE7QUFDQTtBQUEwQztBQUMxQyxNQUFNQSxNQUFNLEdB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
219
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ydW5uZXJzL294eWdlbi93b3JrZXIuanMiXSwibmFtZXMiOlsib3h1dGlsIiwicmVxdWlyZSIsImVycm9ySGVscGVyIiwicmVwb3J0ZXIiLCJvblN1aXRlU3RhcnQiLCJhcmdzIiwiZW1pdFJlcG9ydGVyRXZlbnQiLCJvblN1aXRlRW5kIiwib25DYXNlU3RhcnQiLCJvbkNhc2VFbmQiLCJvblN0ZXBTdGFydCIsIm9uU3RlcEVuZCIsIm9uUnVubmVyRW5kIiwiZ2xvYmFsIiwiYnJvd3NlciIsImxvZ2dlciIsImluZm8iLCJtZXNzYWdlIiwic3JjIiwiREVGQVVMVF9MT0dHRVJfSVNTVUVSIiwidHMiLCJnZXRUaW1lU3RhbXAiLCJwcm9jZXNzU2VuZCIsInRpbWUiLCJldmVudCIsImxldmVsIiwiTEVWRUxTIiwiSU5GTyIsIm1zZyIsInN0cmluZ2lmeSIsImRlYnVnIiwiREVCVUciLCJlcnJvciIsImVyciIsIkVSUk9SIiwid2FybiIsIldBUk4iLCJfd29ya2VyIiwiT3h5Z2VuV29ya2VyIiwib2JqIiwiU3RyaW5nIiwiSlNPTiIsImhvb2tMb2dzIiwicHJvY2VzcyIsIm9uIiwib3JpZ2luIiwiSVNTVUVSUyIsIlVTRVIiLCJjb25zb2xlIiwibG9nIiwiZXJyTWVzc2FnZSIsImRpc3Bvc2UiLCJ0eXBlIiwibWV0aG9kIiwiY2FsbElkIiwiaW52b2tlRnVuYyIsImludm9rZVRlc3RIb29rIiwiaW52b2tlIiwicmV0dmFsIiwic3Vic2NyaWJlIiwic3RhdHVzIiwiZSIsImNvbm5lY3RlZCIsInNlbmQiLCJhcHBseSIsIkVycm9yIiwiZ2V0RmFpbHVyZUZyb21FcnJvciIsInVuZGVmaW5lZCIsImNhbGxUZXN0SG9vayIsImV2ZW50TmFtZSIsImVtaXRXb3JrZXJFdmVudCIsImV2ZW50QXJncyIsIm5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7QUFhQTs7QUFDQTs7OztBQUNBLE1BQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDLGdCQUFELENBQXRC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QUFJQSxPQUFPLENBQUNPLEVBQXZCLEVBQTJCO0FBQ3ZCUCxJQUFBQSxPQUFPLENBQUNPLEVBQVIsQ0FBV3lCLFNBQVgsRUFBc0IsQ0FBQyxHQUFHaEUsSUFBSixLQUFhaUUsZUFBZSxDQUFDRCxTQUFELEVBQVloRSxJQUFaLENBQWxEO0FBQ0g7QUFDSjs7QUFFRCxTQUFTaUUsZUFBVCxDQUF5QkQsU0FBekIsRUFBb0NFLFNBQXBDLEVBQStDO0FBQzNDakQsRUFBQUEsV0FBVyxDQUFDO0FBQ1JFLElBQUFBLEtBQUssRUFBRSxPQURDO0FBRVJnRCxJQUFBQSxJQUFJLEVBQUVILFNBRkU7QUFHUmhFLElBQUFBLElBQUksRUFBRWtFO0FBSEUsR0FBRCxDQUFYO0FBS0g7O0FBRUQsU0FBU2pFLGlCQUFULENBQTJCK0QsU0FBM0IsRUFBc0NFLFNBQXRDLEVBQWlEO0FBQzdDakQsRUFBQUEsV0FBVyxDQUFDO0FBQ1JFLElBQUFBLEtBQUssRUFBRSxVQURDO0FBRVI2QixJQUFBQSxNQUFNLEVBQUVnQixTQUZBO0FBR1JoRSxJQUFBQSxJQUFJLEVBQUVrRTtBQUhFLEdBQUQsQ0FBWDtBQUtIIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKlxyXG4gKiBCb2lsZXJwbGF0ZSBjb2RlIGZvciB1c2VyIHNjcmlwdHMuXHJcbiAqIFByb3ZpZGVzIGV2ZXJ5dGhpbmcgbmVjZXNzYXJ5IGZvciBleGVjdXRpbmcgSlMgdGVzdCBzY3JpcHRzLlxyXG4gKi9cclxuaW1wb3J0IHsgTEVWRUxTLCBERUZBVUxUX0xPR0dFUl9JU1NVRVIsIElTU1VFUlMgfSBmcm9tICcuLi8uLi9saWIvbG9nZ2VyJztcclxuaW1wb3J0IE94eWdlbldvcmtlciBmcm9tICcuL094eWdlbldvcmtlcic7XHJcbmNvbnN0IG94dXRpbCA9IHJlcXVpcmUoJy4uLy4uL2xpYi91dGlsJyk7XHJcbmNvbnN0IGVycm9ySGVscGVyID0gcmVxdWlyZSgnLi4vLi4vZXJyb3JzL2hlbHBlcicpO1xyXG5cclxuY29uc3QgcmVwb3J0ZXIgPSB7XHJcbiAgICBvblN1aXRlU3RhcnQ6IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcclxuICAgICAgICBlbWl0UmVwb3J0ZXJFdmVudCgnb25TdWl0ZVN0YXJ0JywgYXJncyk7XHJcbiAgICB9LFxyXG4gICAgb25TdWl0ZUVuZDogZnVuY3Rpb24oLi4uYXJncykge1xyXG4gICAgICAgIGVtaXRSZXBvcnRlckV2ZW50KCdvblN1aXRlRW5kJywgYXJncyk7XHJcbiAgICB9LFxyXG4gICAgb25DYXNlU3RhcnQ6IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcclxuICAgICAgICBlbWl0UmVwb3J0ZXJFdmVudCgnb25DYXNlU3RhcnQnLCBhcmdzKTtcclxuICAgIH0sXHJcbiAgICBvbkNhc2VFbmQ6IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcclxuICAgICAgICBlbWl0UmVwb3J0ZXJFdmVudCgnb25DYXNlRW5kJywgYXJncyk7XHJcbiAgICB9LFxyXG4gICAgb25TdGVwU3RhcnQ6IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcclxuICAgICAgICBlbWl0UmVwb3J0ZXJFdmVudCgnb25TdGVwU3RhcnQnLCBhcmdzKTtcclxuICAgIH0sXHJcbiAgICBvblN0ZXBFbmQ6IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcclxuICAgICAgICBlbWl0UmVwb3J0ZXJFdmVudCgnb25TdGVwRW5kJywgYXJncyk7XHJcbiAgICB9LFxyXG4gICAgb25SdW5uZXJFbmQ6IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcclxuICAgICAgICBlbWl0UmVwb3J0ZXJFdmVudCgnb25SdW5uZXJFbmQnLCBhcmdzKTtcclxuICAgIH1cclxufTtcclxuXHJcbi8vIG1vY2t1cCBnbG9iYmFsLmJyb3dzZXIgb2JqZWN0IGZvciBpbnRlcm5hbCBXRElPIGZ1bmN0aW9ucyB0byB3b3JrIHByb3Blcmx5XHJcbmdsb2JhbC5icm93c2VyID0ge307XHJcblxyXG5jb25zdCBsb2dnZXIgPSB7XHJcbiAgICBpbmZvOiBmdW5jdGlvbihtZXNzYWdlLCBzcmMgPSBERUZBVUxUX0xPR0dFUl9JU1NVRVIpIHtcclxuICAgICAgICBjb25zdCB0cyA9IG94dXRpbC5nZXRUaW1lU3RhbXAoKTtcclxuICAgICAgICBwcm9jZXNzU2VuZCh7IHRpbWU6IHRzLCBldmVudDogJ2xvZycsIGxldmVsOiBMRVZFTFMuSU5GTywgbXNnOiBzdHJpbmdpZnkobWVzc2FnZSksIHNyYyB9KTtcclxuICAgIH0sXHJcbiAgICBkZWJ1ZzogZnVuY3Rpb24obWVzc2FnZSwgc3JjID0gREVGQVVMVF9MT0dHRVJfSVNTVUVSKSB7XHJcbiAgICAgICAgY29uc3QgdHMgPSBveHV0aWwuZ2V0VGltZVN0YW1wKCk7XHJcbiAgICAgICAgcHJvY2Vzc1NlbmQoeyB0aW1lOiB0cywgZXZlbnQ6ICdsb2cnLCBsZXZlbDogTEVWRUxTLkRFQlVHLCBtc2c6IHN0cmluZ2lmeShtZXNzYWdlKSwgc3JjIH0pO1xyXG4gICAgfSxcclxuICAgIGVycm9yOiBmdW5jdGlvbihtZXNzYWdlLCBzcmMgPSBERUZBVUxUX0xPR0dFUl9JU1NVRVIsIGVyciA9IG51bGwpIHtcclxuICAgICAgICBpZiAoIXNyYykge1xyXG4gICAgICAgICAgICBzcmMgPSBERUZBVUxUX0xPR0dFUl9JU1NVRVI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRzID0gb3h1dGlsLmdldFRpbWVTdGFtcCgpO1xyXG4gICAgICAgIHByb2Nlc3NTZW5kKHsgdGltZTogdHMsIGV2ZW50OiAnbG9nJywgbGV2ZWw6IExFVkVMUy5FUlJPUiwgbXNnOiBzdHJpbmdpZnkobWVzc2FnZSksIHNyYywgZXJyOiBlcnIgfSk7XHJcbiAgICB9LFxyXG4gICAgd2FybjogZnVuY3Rpb24obWVzc2FnZSwgc3JjID0gREVGQVVMVF9MT0dHRVJfSVNTVUVSKSB7XHJcbiAgICAgICAgY29uc3QgdHMgPSBveHV0aWwuZ2V0VGltZVN0YW1wKCk7XHJcbiAgICAgICAgcHJvY2Vzc1NlbmQoeyB0aW1lOiB0cywgZXZlbnQ6ICdsb2cnLCBsZXZlbDogTEVWRUxTLldBUk4sIG1zZzogc3RyaW5naWZ5KG1lc3NhZ2UpLCBzcmMgfSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5sZXQgX3dvcmtlciA9IG5ldyBPeHlnZW5Xb3JrZXIocmVwb3J0ZXIsIGxvZ2dlcik7XHJcblxyXG5mdW5jdGlvbiBzdHJpbmdpZnkob2JqKSB7XHJcbiAgICByZXR1cm4gKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnIHx8IG9iaiBpbnN0YW5jZW9mIFN0cmluZyA/IG9iaiA6IEpTT04uc3RyaW5naWZ5KG9iaiwgbnVsbCwgMikpO1xyXG59XHJcblxyXG5veHV0aWwuaG9va0xvZ3MobG9nZ2VyKTtcclxuLy8gcmVkaXJlY3Qgc3Rkb3V0IGFuZCBzdGRlcnIgdG8gdGhlIGxvZ2dlclxyXG4vL3Byb2Nlc3Muc3Rkb3V0LndyaXRlID0gbG9nZ2VyLmRlYnVnO1xyXG4vL3Byb2Nlc3Muc3RkZXJyLndyaXRlID0gbG9nZ2VyLmVycm9yO1xyXG5cclxucHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgYXN5bmMoZXJyLCBvcmlnaW4pID0+IHtcclxuICAgIGxvZ2dlci5lcnJvcihlcnIubWVzc2FnZSwgSVNTVUVSUy5VU0VSKTtcclxuICAgIGNvbnNvbGUubG9nKCd1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpO1xyXG4gICAgcHJvY2Vzc1NlbmQoe1xyXG4gICAgICAgIGV2ZW50OiAnd29ya2VyRXJyb3InLFxyXG4gICAgICAgIGVyck1lc3NhZ2U6IGVyci5tZXNzYWdlLFxyXG4gICAgfSk7XHJcbn0pO1xyXG5cclxucHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBhc3luYyhlcnIsIG9yaWdpbikgPT4ge1xyXG4gICAgbG9nZ2VyLmVycm9yKGVyci5tZXNzYWdlLCBJU1NVRVJTLlVTRVIpO1xyXG4gICAgY29uc29sZS5sb2coJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKTtcclxuICAgIHByb2Nlc3NTZW5kKHtcclxuICAgICAgICBldmVudDogJ3dvcmtlckVycm9yJyxcclxuICAgICAgICBlcnJNZXNzYWdlOiBlcnIubWVzc2FnZSxcclxuICAgIH0pO1xyXG59KTtcclxuXHJcbnByb2Nlc3Mub24oJ1NJR0lOVCcsIGFzeW5jIGZ1bmN0aW9uKCkge1xyXG4gICAgYXdhaXQgZGlzcG9zZSgnQ0FOQ0VMRUQnKTtcclxufSk7XHJcblxyXG5wcm9jZXNzLm9uKCdtZXNzYWdlJywgYXN5bmMgZnVuY3Rpb24gKG1zZykge1xyXG4gICAgaWYgKCFtc2cudHlwZSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICgobXNnLnR5cGUgPT09ICdpbnZva2UnIHx8IG1zZy50eXBlID09PSAnaW52b2tlOmhvb2snKSAmJiBtc2cubWV0aG9kKSB7XHJcbiAgICAgICAgY29uc3QgeyBjYWxsSWQsIG1ldGhvZCwgYXJncyB9ID0gbXNnO1xyXG4gICAgICAgIGNvbnN0IGludm9rZUZ1bmMgPSBtc2cudHlwZSA9PT0gJ2ludm9rZTpob29rJyA/IGludm9rZVRlc3RIb29rIDogaW52b2tlO1xyXG4gICAgICAgIGNvbnN0IHsgcmV0dmFsLCBlcnJvciB9ID0gYXdhaXQgaW52b2tlRnVuYyhtZXRob2QsIGFyZ3MpO1xyXG4gICAgICAgIHByb2Nlc3NTZW5kKHtcclxuICAgICAgICAgICAgZXZlbnQ6ICdpbnZva2U6cmVzdWx0JyxcclxuICAgICAgICAgICAgbWV0aG9kOiBtZXRob2QsXHJcbiAgICAgICAgICAgIGNhbGxJZDogY2FsbElkLFxyXG4gICAgICAgICAgICBlcnJvcjogZXJyb3IsXHJcbiAgICAgICAgICAgIHJldHZhbDogcmV0dmFsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChtc2cudHlwZSA9PT0gJ3N1YnNjcmliZScpIHtcclxuICAgICAgICBzdWJzY3JpYmUobXNnLmV2ZW50KTtcclxuICAgIH1cclxufSk7XHJcblxyXG5hc3luYyBmdW5jdGlvbiBkaXNwb3NlKHN0YXR1cz0gbnVsbCkge1xyXG4gICAgaWYgKF93b3JrZXIpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCBfd29ya2VyLmRpc3Bvc2Uoc3RhdHVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgLy8gaWdub3JlXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBwcm9jZXNzU2VuZChtc2cpIHtcclxuICAgIC8vIHdyYXAgcHJvY2Vzcy5zZW5kIHdpdGggdHJ5L2NhdGNoIGFzIHNvbWV0aW1lcyB3ZSBtaWdodCBjYWxsIHByb2Nlc3Muc2VuZCBcclxuICAgIC8vIHdoZW4gcGFyZW50IHByb2Nlc3MgaXMgYWxyZWFkeSBkaXNjb25uZWN0ZWQgKHdoZW4gdXNlIGtpbGxzIHRoZSBtYWluIHByb2Nlc3MpXHJcbiAgICB0cnkge1xyXG4gICAgICAgIC8vIGFkZCB1dGMgdGltZXN0YW1wXHJcbiAgICAgICAgcHJvY2Vzcy5jb25uZWN0ZWQgJiYgcHJvY2Vzcy5zZW5kKHsgdGltZTogb3h1dGlsLmdldFRpbWVTdGFtcCgpLCAuLi5tc2cgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgIC8vIGlnbm9yZVxyXG4gICAgfVxyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmdzKSB7XHJcbiAgICBsZXQgcmV0dmFsLCBlcnJvcjtcclxuICAgIGlmIChfd29ya2VyICYmIF93b3JrZXJbbWV0aG9kXSAmJiB0eXBlb2YgX3dvcmtlclttZXRob2RdID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dmFsID0gYXdhaXQgX3dvcmtlclttZXRob2RdLmFwcGx5KF93b3JrZXIsIGFyZ3MgfHwgW10pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIGludm9rZTogJHttZXRob2R9OmAsIGUpO1xyXG4gICAgICAgICAgICBlcnJvciA9IGU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoYE1ldGhvZCBcIiR7bWV0aG9kfVwiIGRvZXMgbm90IGV4aXN0YCk7XHJcbiAgICB9XHJcbiAgICAvLyBjb252ZXJ0IEpTIGVycm9yIHRvIE94eWdlbiBGYWlsdXJlIG9iamVjdFxyXG4gICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgZXJyb3IgPSBlcnJvckhlbHBlci5nZXRGYWlsdXJlRnJvbUVycm9yKGVycm9yKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IHJldHZhbCwgZXJyb3IgfTtcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gaW52b2tlVGVzdEhvb2sobWV0aG9kLCBhcmdzKSB7XHJcbiAgICBsZXQgcmV0dmFsID0gdW5kZWZpbmVkLCBlcnJvciA9IG51bGw7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHJldHZhbCA9IGF3YWl0IF93b3JrZXIuY2FsbFRlc3RIb29rKG1ldGhvZCwgYXJncyk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgIGVycm9yID0gZS5tZXNzYWdlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgcmV0dmFsLCBlcnJvciB9O1xyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBzdWJzY3JpYmUoZXZlbnROYW1lKSB7XHJcbiAgICBpZiAoX3dvcmtlciAmJiBfd29ya2VyLm9uKSB7XHJcbiAgICAgICAgX3dvcmtlci5vbihldmVudE5hbWUsICguLi5hcmdzKSA9PiBlbWl0V29ya2VyRXZlbnQoZXZlbnROYW1lLCBhcmdzKSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGVtaXRXb3JrZXJFdmVudChldmVudE5hbWUsIGV2ZW50QXJncykge1xyXG4gICAgcHJvY2Vzc1NlbmQoe1xyXG4gICAgICAgIGV2ZW50OiAnZXZlbnQnLFxyXG4gICAgICAgIG5hbWU6IGV2ZW50TmFtZSxcclxuICAgICAgICBhcmdzOiBldmVudEFyZ3NcclxuICAgIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBlbWl0UmVwb3J0ZXJFdmVudChldmVudE5hbWUsIGV2ZW50QXJncykge1xyXG4gICAgcHJvY2Vzc1NlbmQoe1xyXG4gICAgICAgIGV2ZW50OiAncmVwb3J0ZXInLFxyXG4gICAgICAgIG1ldGhvZDogZXZlbnROYW1lLFxyXG4gICAgICAgIGFyZ3M6IGV2ZW50QXJnc1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oxygen-cli",
3
- "version": "1.25.0",
3
+ "version": "1.26.0",
4
4
  "description": "Automation framework for testing modern applications",
5
5
  "main": "./build/index.js",
6
6
  "bin": {