testcafe 1.13.0 → 1.14.2

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 (336) hide show
  1. package/CHANGELOG.md +88 -10
  2. package/LICENSE +21 -21
  3. package/README.md +52 -48
  4. package/bin/testcafe-with-v8-flag-filter.js +0 -0
  5. package/lib/api/exportable-lib/index.js +50 -50
  6. package/lib/api/request-hooks/assert-type.js +7 -7
  7. package/lib/api/request-hooks/hook-method-names.js +11 -0
  8. package/lib/api/request-hooks/hook.js +33 -39
  9. package/lib/api/request-hooks/interfaces.js +3 -3
  10. package/lib/api/request-hooks/request-logger.js +113 -111
  11. package/lib/api/request-hooks/request-mock/create-request-mock.js +12 -0
  12. package/lib/api/request-hooks/request-mock/index.js +46 -0
  13. package/lib/api/request-hooks/request-mock.js +47 -48
  14. package/lib/api/structure/base-unit.js +11 -11
  15. package/lib/api/structure/fixture.js +75 -75
  16. package/lib/api/structure/interfaces.js +2 -2
  17. package/lib/api/structure/test-file.js +31 -31
  18. package/lib/api/structure/test-timeout.js +9 -9
  19. package/lib/api/structure/test.js +85 -85
  20. package/lib/api/structure/testing-unit.js +89 -89
  21. package/lib/api/structure/unit-type.js +9 -9
  22. package/lib/api/test-controller/assertion.js +88 -88
  23. package/lib/api/test-controller/execution-context.js +82 -82
  24. package/lib/api/test-controller/index.js +359 -319
  25. package/lib/api/test-controller/proxy.js +28 -28
  26. package/lib/api/test-page-url.js +60 -60
  27. package/lib/api/test-run-tracker.js +68 -68
  28. package/lib/api/wrap-test-function.js +49 -49
  29. package/lib/assertions/executor.js +74 -74
  30. package/lib/assertions/get-fn.js +46 -46
  31. package/lib/assertions/type.js +20 -20
  32. package/lib/assets/content-types.js +9 -9
  33. package/lib/assets/injectables.js +18 -18
  34. package/lib/browser/connection/command.js +10 -10
  35. package/lib/browser/connection/error-hints.js +9 -9
  36. package/lib/browser/connection/gateway.js +159 -159
  37. package/lib/browser/connection/get-hints.js +33 -33
  38. package/lib/browser/connection/heartbeat-status.js +8 -8
  39. package/lib/browser/connection/index.js +328 -328
  40. package/lib/browser/connection/remotes-queue.js +46 -46
  41. package/lib/browser/connection/service-routes.js +12 -12
  42. package/lib/browser/connection/status.js +12 -12
  43. package/lib/browser/interfaces.js +2 -2
  44. package/lib/browser/provider/built-in/dedicated/base.js +80 -80
  45. package/lib/browser/provider/built-in/dedicated/chrome/browser-client.js +204 -204
  46. package/lib/browser/provider/built-in/dedicated/chrome/build-chrome-args.js +17 -17
  47. package/lib/browser/provider/built-in/dedicated/chrome/config.js +110 -110
  48. package/lib/browser/provider/built-in/dedicated/chrome/create-temp-profile.js +45 -45
  49. package/lib/browser/provider/built-in/dedicated/chrome/elapsed-upperbounds.js +15 -15
  50. package/lib/browser/provider/built-in/dedicated/chrome/index.js +102 -102
  51. package/lib/browser/provider/built-in/dedicated/chrome/interfaces.js +2 -2
  52. package/lib/browser/provider/built-in/dedicated/chrome/local-chrome.js +24 -24
  53. package/lib/browser/provider/built-in/dedicated/chrome/runtime-info.js +29 -29
  54. package/lib/browser/provider/built-in/dedicated/edge/index.js +10 -10
  55. package/lib/browser/provider/built-in/dedicated/edge/runtime-info.js +29 -29
  56. package/lib/browser/provider/built-in/dedicated/firefox/config.js +33 -33
  57. package/lib/browser/provider/built-in/dedicated/firefox/create-temp-profile.js +78 -78
  58. package/lib/browser/provider/built-in/dedicated/firefox/index.js +73 -73
  59. package/lib/browser/provider/built-in/dedicated/firefox/local-firefox.js +36 -36
  60. package/lib/browser/provider/built-in/dedicated/firefox/marionette-client/commands.js +13 -13
  61. package/lib/browser/provider/built-in/dedicated/firefox/marionette-client/index.js +200 -200
  62. package/lib/browser/provider/built-in/dedicated/firefox/runtime-info.js +17 -17
  63. package/lib/browser/provider/built-in/index.js +21 -21
  64. package/lib/browser/provider/built-in/locally-installed.js +30 -30
  65. package/lib/browser/provider/built-in/path.js +47 -47
  66. package/lib/browser/provider/built-in/remote.js +58 -58
  67. package/lib/browser/provider/index.js +303 -303
  68. package/lib/browser/provider/parse-provider-name.js +16 -16
  69. package/lib/browser/provider/plugin-host.js +121 -121
  70. package/lib/browser/provider/pool.js +115 -115
  71. package/lib/browser/provider/utils/argument-parsing.js +74 -74
  72. package/lib/browser/provider/utils/browser-starter.js +34 -34
  73. package/lib/browser/provider/utils/client-functions.js +24 -24
  74. package/lib/browser/provider/utils/get-maximized-headless-window-size.js +9 -9
  75. package/lib/cli/argument-parser.js +284 -279
  76. package/lib/cli/authentication-helper.js +35 -35
  77. package/lib/cli/cli.js +134 -134
  78. package/lib/cli/correct-browsers-and-sources.js +40 -40
  79. package/lib/cli/index.js +19 -19
  80. package/lib/cli/log.js +43 -43
  81. package/lib/cli/remotes-wizard.js +36 -36
  82. package/lib/cli/termination-handler.js +38 -38
  83. package/lib/client/automation/index.js +144 -46
  84. package/lib/client/automation/index.min.js +1 -1
  85. package/lib/client/browser/idle-page/index.html.mustache +35 -35
  86. package/lib/client/browser/idle-page/logo.svg +86 -86
  87. package/lib/client/browser/service-worker.js +4 -6
  88. package/lib/client/core/index.js +19 -13
  89. package/lib/client/core/index.min.js +1 -1
  90. package/lib/client/driver/index.js +1807 -451
  91. package/lib/client/driver/index.min.js +1 -1
  92. package/lib/client/driver/internal-properties.js +9 -9
  93. package/lib/client/test-run/iframe.js.mustache +17 -17
  94. package/lib/client/test-run/index.js.mustache +51 -51
  95. package/lib/client/ui/index.js +14 -12
  96. package/lib/client/ui/index.min.js +1 -1
  97. package/lib/client/ui/sprite.svg +42 -42
  98. package/lib/client-functions/builder-symbol.js +4 -4
  99. package/lib/client-functions/client-function-builder.js +156 -135
  100. package/lib/client-functions/replicator.js +61 -61
  101. package/lib/client-functions/return-single-prop-mode.js +8 -8
  102. package/lib/client-functions/selector-api-execution-mode.js +22 -0
  103. package/lib/client-functions/selectors/add-api.js +646 -588
  104. package/lib/client-functions/selectors/create-snapshot-methods.js +13 -13
  105. package/lib/client-functions/selectors/prepare-api-args.js +20 -20
  106. package/lib/client-functions/selectors/selector-attribute-filter.js +22 -22
  107. package/lib/client-functions/selectors/selector-builder.js +154 -150
  108. package/lib/client-functions/selectors/selector-text-filter.js +43 -43
  109. package/lib/client-functions/selectors/snapshot-properties.js +48 -48
  110. package/lib/client-functions/types.js +18 -18
  111. package/lib/compiler/babel/format-babel-produced-code.js +10 -10
  112. package/lib/compiler/babel/get-base-babel-options.js +11 -11
  113. package/lib/compiler/babel/load-libs.js +64 -62
  114. package/lib/compiler/babel/preset-stage-2.js +19 -19
  115. package/lib/compiler/compile-client-function.js +73 -73
  116. package/lib/compiler/compilers.js +33 -33
  117. package/lib/compiler/index.js +92 -92
  118. package/lib/compiler/interfaces.js +2 -2
  119. package/lib/compiler/test-file/api-based.js +146 -146
  120. package/lib/compiler/test-file/base.js +36 -36
  121. package/lib/compiler/test-file/exportble-lib-path.js +5 -5
  122. package/lib/compiler/test-file/formats/coffeescript/compiler.js +38 -38
  123. package/lib/compiler/test-file/formats/coffeescript/get-test-list.js +29 -29
  124. package/lib/compiler/test-file/formats/es-next/compiler.js +43 -43
  125. package/lib/compiler/test-file/formats/es-next/get-test-list.js +166 -166
  126. package/lib/compiler/test-file/formats/es-next/is-flow-code.js +7 -7
  127. package/lib/compiler/test-file/formats/raw.js +85 -85
  128. package/lib/compiler/test-file/formats/typescript/compiler.js +135 -135
  129. package/lib/compiler/test-file/formats/typescript/get-test-list.js +185 -185
  130. package/lib/compiler/test-file/test-file-parser-base.js +214 -214
  131. package/lib/configuration/configuration-base.js +165 -165
  132. package/lib/configuration/constants.js +9 -9
  133. package/lib/configuration/customizable-compilers.js +7 -7
  134. package/lib/configuration/default-values.js +51 -51
  135. package/lib/configuration/interfaces.js +3 -3
  136. package/lib/configuration/option-names.js +53 -53
  137. package/lib/configuration/option-source.js +9 -9
  138. package/lib/configuration/option.js +14 -14
  139. package/lib/configuration/quarantine-option-names.js +10 -0
  140. package/lib/configuration/run-option-names.js +26 -26
  141. package/lib/configuration/screenshot-option-names.js +10 -10
  142. package/lib/configuration/testcafe-configuration.js +164 -165
  143. package/lib/configuration/types.js +2 -2
  144. package/lib/configuration/typescript-configuration.js +62 -62
  145. package/lib/custom-client-scripts/assert-type.js +7 -7
  146. package/lib/custom-client-scripts/client-script-init.js +3 -3
  147. package/lib/custom-client-scripts/client-script.js +107 -108
  148. package/lib/custom-client-scripts/get-code.js +11 -11
  149. package/lib/custom-client-scripts/get-url.js +6 -6
  150. package/lib/custom-client-scripts/load.js +15 -15
  151. package/lib/custom-client-scripts/problematic-scripts.js +2 -2
  152. package/lib/custom-client-scripts/routing.js +36 -36
  153. package/lib/custom-client-scripts/utils.js +60 -60
  154. package/lib/embedding-utils.js +83 -83
  155. package/lib/errors/create-stack-filter.js +18 -18
  156. package/lib/errors/error-list.js +26 -26
  157. package/lib/errors/get-callsite.js +31 -31
  158. package/lib/errors/internal-modules-prefix.js +8 -8
  159. package/lib/errors/is-internal-stack-frame.js +46 -46
  160. package/lib/errors/process-test-fn-error.js +37 -37
  161. package/lib/errors/runtime/index.js +123 -123
  162. package/lib/errors/runtime/templates.js +116 -114
  163. package/lib/errors/runtime/type-assertions.js +112 -112
  164. package/lib/errors/stack-cleaning-hook.js +64 -64
  165. package/lib/errors/test-run/formattable-adapter.js +59 -59
  166. package/lib/errors/test-run/index.js +302 -302
  167. package/lib/errors/test-run/render-error-template.js +31 -31
  168. package/lib/errors/test-run/templates.js +93 -95
  169. package/lib/errors/test-run/utils.js +90 -85
  170. package/lib/errors/types.js +157 -155
  171. package/lib/index.js +81 -81
  172. package/lib/live/bootstrapper.js +44 -44
  173. package/lib/live/controller.js +107 -107
  174. package/lib/live/file-watcher/index.js +67 -67
  175. package/lib/live/file-watcher/modules-graph.js +58 -58
  176. package/lib/live/keyboard-observer.js +76 -76
  177. package/lib/live/logger/index.js +64 -64
  178. package/lib/live/test-run-controller.js +96 -96
  179. package/lib/live/test-run-state.js +6 -6
  180. package/lib/live/test-run.js +56 -56
  181. package/lib/live/test-runner.js +168 -168
  182. package/lib/load-assets.js +29 -29
  183. package/lib/notifications/add-rendered-warning.js +16 -16
  184. package/lib/notifications/debug-logger.js +78 -78
  185. package/lib/notifications/deprecated.js +24 -24
  186. package/lib/notifications/information-message.js +12 -12
  187. package/lib/notifications/warning-log.js +32 -31
  188. package/lib/notifications/warning-message.js +48 -48
  189. package/lib/reporter/command/command-formatter.js +120 -109
  190. package/lib/reporter/command/format-command.js +8 -8
  191. package/lib/reporter/command/interfaces.js +2 -2
  192. package/lib/reporter/index.js +319 -314
  193. package/lib/reporter/interfaces.js +2 -2
  194. package/lib/reporter/plugin-host.js +136 -137
  195. package/lib/reporter/plugin-methods.js +12 -12
  196. package/lib/role/index.js +74 -74
  197. package/lib/role/marker-symbol.js +7 -7
  198. package/lib/role/phase.js +9 -9
  199. package/lib/runner/bootstrapper.js +272 -272
  200. package/lib/runner/browser-job-result.js +9 -9
  201. package/lib/runner/browser-job.js +153 -123
  202. package/lib/runner/browser-set.js +114 -114
  203. package/lib/runner/fixture-hook-controller.js +85 -85
  204. package/lib/runner/index.js +450 -442
  205. package/lib/runner/interfaces.js +3 -3
  206. package/lib/runner/reporter-stream-controller.js +28 -28
  207. package/lib/runner/task/index.js +152 -133
  208. package/lib/runner/task/phase.js +9 -9
  209. package/lib/runner/test-run-controller.js +166 -185
  210. package/lib/runner/tested-app.js +73 -72
  211. package/lib/screenshots/capturer.js +141 -141
  212. package/lib/screenshots/constants.js +11 -11
  213. package/lib/screenshots/crop.js +111 -111
  214. package/lib/screenshots/default-extension.js +4 -4
  215. package/lib/screenshots/index.js +67 -67
  216. package/lib/screenshots/utils.js +39 -39
  217. package/lib/services/compiler/host.js +190 -106
  218. package/lib/services/compiler/io.js +9 -9
  219. package/lib/services/compiler/protocol.js +17 -16
  220. package/lib/services/compiler/service.js +225 -106
  221. package/lib/services/compiler/test-run-proxy.js +111 -73
  222. package/lib/services/interfaces.js +3 -0
  223. package/lib/services/process-title.js +8 -8
  224. package/lib/services/serialization/prepare-options.js +17 -17
  225. package/lib/services/serialization/replicator/create-replicator.js +27 -0
  226. package/lib/services/serialization/replicator/custom-error-transform.js +28 -0
  227. package/lib/services/serialization/test-structure.js +93 -77
  228. package/lib/services/utils/ipc/interfaces.js +30 -30
  229. package/lib/services/utils/ipc/io.js +108 -108
  230. package/lib/services/utils/ipc/message.js +76 -73
  231. package/lib/services/utils/ipc/packet.js +55 -55
  232. package/lib/services/utils/ipc/proxy.js +110 -118
  233. package/lib/services/utils/ipc/transport.js +64 -64
  234. package/lib/shared/errors/index.js +382 -382
  235. package/lib/shared/node-modules-folder-name.js +4 -4
  236. package/lib/test-run/bookmark.js +90 -90
  237. package/lib/test-run/browser-console-messages.js +73 -73
  238. package/lib/test-run/browser-manipulation-queue.js +92 -92
  239. package/lib/test-run/client-messages.js +9 -9
  240. package/lib/test-run/commands/actions.js +486 -425
  241. package/lib/test-run/commands/assertion.js +45 -45
  242. package/lib/test-run/commands/base.js +14 -14
  243. package/lib/test-run/commands/browser-manipulation.js +95 -95
  244. package/lib/test-run/commands/from-object.js +82 -82
  245. package/lib/test-run/commands/observation.js +61 -61
  246. package/lib/test-run/commands/options.js +231 -215
  247. package/lib/test-run/commands/service.js +54 -48
  248. package/lib/test-run/commands/type.js +65 -60
  249. package/lib/test-run/commands/utils.js +87 -87
  250. package/lib/test-run/commands/validations/argument.js +90 -90
  251. package/lib/test-run/commands/validations/factories.js +47 -47
  252. package/lib/test-run/commands/validations/initializers.js +44 -44
  253. package/lib/test-run/debug-log.js +32 -32
  254. package/lib/test-run/execute-js-expression.js +74 -74
  255. package/lib/test-run/index.js +823 -752
  256. package/lib/test-run/marker-symbol.js +7 -7
  257. package/lib/test-run/observed-callsites-storage.js +17 -17
  258. package/lib/test-run/phase.js +16 -16
  259. package/lib/test-run/session-controller.js +104 -104
  260. package/lib/testcafe.js +119 -114
  261. package/lib/utils/assignable.js +39 -39
  262. package/lib/utils/async-event-emitter.js +28 -28
  263. package/lib/utils/async-queue.js +14 -14
  264. package/lib/utils/browser-connection-timeouts.js +19 -19
  265. package/lib/utils/callsite.js +17 -17
  266. package/lib/utils/check-file-path.js +31 -31
  267. package/lib/utils/check-url.js +51 -51
  268. package/lib/utils/convert-to-best-fit-type.js +16 -16
  269. package/lib/utils/correct-file-path.js +21 -21
  270. package/lib/utils/define-lazy-property.js +13 -13
  271. package/lib/utils/delay.js +6 -6
  272. package/lib/utils/delegated-api.js +44 -44
  273. package/lib/utils/detect-display.js +6 -6
  274. package/lib/utils/detect-ffmpeg.js +44 -44
  275. package/lib/utils/diff/colors.js +29 -29
  276. package/lib/utils/diff/index.js +53 -53
  277. package/lib/utils/diff/util.js +24 -22
  278. package/lib/utils/diff.js +29 -29
  279. package/lib/utils/escape-user-agent.js +10 -10
  280. package/lib/utils/flag-list.js +17 -17
  281. package/lib/utils/get-any-key.js +8 -8
  282. package/lib/utils/get-browser.js +8 -8
  283. package/lib/utils/get-common-path.js +34 -34
  284. package/lib/utils/get-filter-fn.js +40 -40
  285. package/lib/utils/get-options/base.js +36 -36
  286. package/lib/utils/get-options/compiler.js +33 -33
  287. package/lib/utils/get-options/grep.js +15 -15
  288. package/lib/utils/get-options/index.js +21 -19
  289. package/lib/utils/get-options/meta.js +22 -22
  290. package/lib/utils/get-options/quarantine.js +92 -0
  291. package/lib/utils/get-options/screenshot.js +17 -17
  292. package/lib/utils/get-options/ssl.js +45 -45
  293. package/lib/utils/get-options/video.js +10 -10
  294. package/lib/utils/get-viewport-width.js +18 -18
  295. package/lib/utils/guard-time-execution.js +10 -10
  296. package/lib/utils/handle-errors.js +74 -74
  297. package/lib/utils/handle-tag-args.js +8 -8
  298. package/lib/utils/http.js +30 -30
  299. package/lib/utils/is-localhost.js +11 -11
  300. package/lib/utils/is-password-input.js +11 -0
  301. package/lib/utils/is-repl.js +12 -0
  302. package/lib/utils/is-window-in-iframe.js +6 -6
  303. package/lib/utils/limit-number.js +10 -10
  304. package/lib/utils/make-reg-exp.js +7 -7
  305. package/lib/utils/moment-loader.js +20 -20
  306. package/lib/utils/parse-file-list.js +71 -71
  307. package/lib/utils/parse-user-agent.js +55 -55
  308. package/lib/utils/path-pattern.js +114 -114
  309. package/lib/utils/prepare-reporters.js +30 -30
  310. package/lib/utils/prerender-callsite.js +18 -18
  311. package/lib/utils/process.js +119 -119
  312. package/lib/utils/promisified-functions.js +46 -46
  313. package/lib/utils/re-executable-promise.js +39 -39
  314. package/lib/utils/render-callsite-sync.js +29 -29
  315. package/lib/utils/render-template.js +10 -10
  316. package/lib/utils/reporter.js +30 -30
  317. package/lib/utils/resolve-path-relatively-cwd.js +7 -7
  318. package/lib/utils/string.js +105 -105
  319. package/lib/utils/temp-directory/cleanup-process/commands.js +7 -7
  320. package/lib/utils/temp-directory/cleanup-process/index.js +143 -143
  321. package/lib/utils/temp-directory/cleanup-process/worker.js +58 -58
  322. package/lib/utils/temp-directory/index.js +87 -87
  323. package/lib/utils/temp-directory/lockfile.js +56 -56
  324. package/lib/utils/thennable.js +7 -7
  325. package/lib/utils/timer.js +15 -15
  326. package/lib/utils/to-posix-path.js +8 -8
  327. package/lib/utils/types.js +2 -2
  328. package/lib/video-recorder/interfaces.js +2 -2
  329. package/lib/video-recorder/process.js +126 -126
  330. package/lib/video-recorder/recorder.js +136 -136
  331. package/lib/video-recorder/test-run-video-recorder.js +69 -69
  332. package/lib/video-recorder/videos.js +37 -37
  333. package/package.json +7 -7
  334. package/ts-defs/index.d.ts +109 -17
  335. package/ts-defs/selectors.d.ts +95 -7
  336. package/ts-defs/testcafe-scripts.d.ts +96 -8
@@ -1,61 +1,66 @@
1
- "use strict";
2
- // -------------------------------------------------------------
3
- // WARNING: this file is used by both the client and the server.
4
- // Do not use any browser or node-specific API!
5
- // -------------------------------------------------------------
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.default = {
8
- click: 'click',
9
- rightClick: 'right-click',
10
- doubleClick: 'double-click',
11
- drag: 'drag',
12
- dragToElement: 'drag-to-element',
13
- hover: 'hover',
14
- typeText: 'type-text',
15
- selectText: 'select-text',
16
- selectTextAreaContent: 'select-text-area-content',
17
- selectEditableContent: 'select-editable-content',
18
- pressKey: 'press-key',
19
- wait: 'wait',
20
- navigateTo: 'navigate-to',
21
- setFilesToUpload: 'set-files-to-upload',
22
- clearUpload: 'clear-upload',
23
- executeClientFunction: 'execute-client-function',
24
- executeSelector: 'execute-selector',
25
- takeScreenshot: 'take-screenshot',
26
- takeElementScreenshot: 'take-element-screenshot',
27
- takeScreenshotOnFail: 'take-screenshot-on-fail',
28
- prepareBrowserManipulation: 'prepare-browser-manipulation',
29
- showAssertionRetriesStatus: 'show-assertion-retries-status',
30
- hideAssertionRetriesStatus: 'hide-assertion-retries-status',
31
- setBreakpoint: 'set-breakpoint',
32
- resizeWindow: 'resize-window',
33
- resizeWindowToFitDevice: 'resize-window-to-fit-device',
34
- maximizeWindow: 'maximize-window',
35
- switchToIframe: 'switch-to-iframe',
36
- switchToMainWindow: 'switch-to-main-window',
37
- openWindow: 'open-window',
38
- closeWindow: 'close-window',
39
- getCurrentWindow: 'get-current-window',
40
- getCurrentWindows: 'get-current-windows',
41
- switchToWindow: 'switch-to-window',
42
- switchToWindowByPredicate: 'switch-to-window-by-predicate',
43
- switchToParentWindow: 'switch-to-parent-window',
44
- switchToPreviousWindow: 'switch-to-previous-window',
45
- setNativeDialogHandler: 'set-native-dialog-handler',
46
- getNativeDialogHistory: 'get-native-dialog-history',
47
- getBrowserConsoleMessages: 'get-browser-console-messages',
48
- setTestSpeed: 'set-test-speed',
49
- setPageLoadTimeout: 'set-page-load-timeout',
50
- debug: 'debug',
51
- assertion: 'assertion',
52
- useRole: 'useRole',
53
- testDone: 'test-done',
54
- backupStorages: 'backup-storages',
55
- executeExpression: 'execute-expression',
56
- executeAsyncExpression: 'execute-async-expression',
57
- unlockPage: 'unlock-page',
58
- recorder: 'recorder'
59
- };
1
+ "use strict";
2
+ // -------------------------------------------------------------
3
+ // WARNING: this file is used by both the client and the server.
4
+ // Do not use any browser or node-specific API!
5
+ // -------------------------------------------------------------
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.default = {
8
+ dispatchEvent: 'dispatch-event',
9
+ click: 'click',
10
+ rightClick: 'right-click',
11
+ doubleClick: 'double-click',
12
+ drag: 'drag',
13
+ dragToElement: 'drag-to-element',
14
+ hover: 'hover',
15
+ scroll: 'scroll',
16
+ scrollBy: 'scroll-by',
17
+ scrollIntoView: 'scroll-into-view',
18
+ typeText: 'type-text',
19
+ selectText: 'select-text',
20
+ selectTextAreaContent: 'select-text-area-content',
21
+ selectEditableContent: 'select-editable-content',
22
+ pressKey: 'press-key',
23
+ wait: 'wait',
24
+ navigateTo: 'navigate-to',
25
+ setFilesToUpload: 'set-files-to-upload',
26
+ clearUpload: 'clear-upload',
27
+ executeClientFunction: 'execute-client-function',
28
+ executeSelector: 'execute-selector',
29
+ takeScreenshot: 'take-screenshot',
30
+ takeElementScreenshot: 'take-element-screenshot',
31
+ takeScreenshotOnFail: 'take-screenshot-on-fail',
32
+ prepareBrowserManipulation: 'prepare-browser-manipulation',
33
+ showAssertionRetriesStatus: 'show-assertion-retries-status',
34
+ hideAssertionRetriesStatus: 'hide-assertion-retries-status',
35
+ setBreakpoint: 'set-breakpoint',
36
+ resizeWindow: 'resize-window',
37
+ resizeWindowToFitDevice: 'resize-window-to-fit-device',
38
+ maximizeWindow: 'maximize-window',
39
+ switchToIframe: 'switch-to-iframe',
40
+ switchToMainWindow: 'switch-to-main-window',
41
+ openWindow: 'open-window',
42
+ closeWindow: 'close-window',
43
+ getCurrentWindow: 'get-current-window',
44
+ getCurrentWindows: 'get-current-windows',
45
+ switchToWindow: 'switch-to-window',
46
+ switchToWindowByPredicate: 'switch-to-window-by-predicate',
47
+ switchToParentWindow: 'switch-to-parent-window',
48
+ switchToPreviousWindow: 'switch-to-previous-window',
49
+ setNativeDialogHandler: 'set-native-dialog-handler',
50
+ getNativeDialogHistory: 'get-native-dialog-history',
51
+ getBrowserConsoleMessages: 'get-browser-console-messages',
52
+ getActiveElement: 'get-active-element',
53
+ setTestSpeed: 'set-test-speed',
54
+ setPageLoadTimeout: 'set-page-load-timeout',
55
+ debug: 'debug',
56
+ assertion: 'assertion',
57
+ useRole: 'useRole',
58
+ testDone: 'test-done',
59
+ backupStorages: 'backup-storages',
60
+ executeExpression: 'execute-expression',
61
+ executeAsyncExpression: 'execute-async-expression',
62
+ unlockPage: 'unlock-page',
63
+ recorder: 'recorder'
64
+ };
60
65
  module.exports = exports.default;
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0LXJ1bi9jb21tYW5kcy90eXBlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxnRUFBZ0U7QUFDaEUsZ0VBQWdFO0FBQ2hFLCtDQUErQztBQUMvQyxnRUFBZ0U7O0FBRWhFLGtCQUFlO0lBQ1gsS0FBSyxFQUF1QixPQUFPO0lBQ25DLFVBQVUsRUFBa0IsYUFBYTtJQUN6QyxXQUFXLEVBQWlCLGNBQWM7SUFDMUMsSUFBSSxFQUF3QixNQUFNO0lBQ2xDLGFBQWEsRUFBZSxpQkFBaUI7SUFDN0MsS0FBSyxFQUF1QixPQUFPO0lBQ25DLFFBQVEsRUFBb0IsV0FBVztJQUN2QyxVQUFVLEVBQWtCLGFBQWE7SUFDekMscUJBQXFCLEVBQU8sMEJBQTBCO0lBQ3RELHFCQUFxQixFQUFPLHlCQUF5QjtJQUNyRCxRQUFRLEVBQW9CLFdBQVc7SUFDdkMsSUFBSSxFQUF3QixNQUFNO0lBQ2xDLFVBQVUsRUFBa0IsYUFBYTtJQUN6QyxnQkFBZ0IsRUFBWSxxQkFBcUI7SUFDakQsV0FBVyxFQUFpQixjQUFjO0lBQzFDLHFCQUFxQixFQUFPLHlCQUF5QjtJQUNyRCxlQUFlLEVBQWEsa0JBQWtCO0lBQzlDLGNBQWMsRUFBYyxpQkFBaUI7SUFDN0MscUJBQXFCLEVBQU8seUJBQXlCO0lBQ3JELG9CQUFvQixFQUFRLHlCQUF5QjtJQUNyRCwwQkFBMEIsRUFBRSw4QkFBOEI7SUFDMUQsMEJBQTBCLEVBQUUsK0JBQStCO0lBQzNELDBCQUEwQixFQUFFLCtCQUErQjtJQUMzRCxhQUFhLEVBQWUsZ0JBQWdCO0lBQzVDLFlBQVksRUFBZ0IsZUFBZTtJQUMzQyx1QkFBdUIsRUFBSyw2QkFBNkI7SUFDekQsY0FBYyxFQUFjLGlCQUFpQjtJQUM3QyxjQUFjLEVBQWMsa0JBQWtCO0lBQzlDLGtCQUFrQixFQUFVLHVCQUF1QjtJQUNuRCxVQUFVLEVBQWtCLGFBQWE7SUFDekMsV0FBVyxFQUFpQixjQUFjO0lBQzFDLGdCQUFnQixFQUFZLG9CQUFvQjtJQUNoRCxpQkFBaUIsRUFBVyxxQkFBcUI7SUFDakQsY0FBYyxFQUFjLGtCQUFrQjtJQUM5Qyx5QkFBeUIsRUFBRywrQkFBK0I7SUFDM0Qsb0JBQW9CLEVBQVEseUJBQXlCO0lBQ3JELHNCQUFzQixFQUFNLDJCQUEyQjtJQUN2RCxzQkFBc0IsRUFBTSwyQkFBMkI7SUFDdkQsc0JBQXNCLEVBQU0sMkJBQTJCO0lBQ3ZELHlCQUF5QixFQUFHLDhCQUE4QjtJQUMxRCxZQUFZLEVBQWdCLGdCQUFnQjtJQUM1QyxrQkFBa0IsRUFBVSx1QkFBdUI7SUFDbkQsS0FBSyxFQUF1QixPQUFPO0lBQ25DLFNBQVMsRUFBbUIsV0FBVztJQUN2QyxPQUFPLEVBQXFCLFNBQVM7SUFDckMsUUFBUSxFQUFvQixXQUFXO0lBQ3ZDLGNBQWMsRUFBYyxpQkFBaUI7SUFDN0MsaUJBQWlCLEVBQVcsb0JBQW9CO0lBQ2hELHNCQUFzQixFQUFNLDBCQUEwQjtJQUN0RCxVQUFVLEVBQWtCLGFBQWE7SUFDekMsUUFBUSxFQUFvQixVQUFVO0NBQ3pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBXQVJOSU5HOiB0aGlzIGZpbGUgaXMgdXNlZCBieSBib3RoIHRoZSBjbGllbnQgYW5kIHRoZSBzZXJ2ZXIuXG4vLyBEbyBub3QgdXNlIGFueSBicm93c2VyIG9yIG5vZGUtc3BlY2lmaWMgQVBJIVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgY2xpY2s6ICAgICAgICAgICAgICAgICAgICAgICdjbGljaycsXG4gICAgcmlnaHRDbGljazogICAgICAgICAgICAgICAgICdyaWdodC1jbGljaycsXG4gICAgZG91YmxlQ2xpY2s6ICAgICAgICAgICAgICAgICdkb3VibGUtY2xpY2snLFxuICAgIGRyYWc6ICAgICAgICAgICAgICAgICAgICAgICAnZHJhZycsXG4gICAgZHJhZ1RvRWxlbWVudDogICAgICAgICAgICAgICdkcmFnLXRvLWVsZW1lbnQnLFxuICAgIGhvdmVyOiAgICAgICAgICAgICAgICAgICAgICAnaG92ZXInLFxuICAgIHR5cGVUZXh0OiAgICAgICAgICAgICAgICAgICAndHlwZS10ZXh0JyxcbiAgICBzZWxlY3RUZXh0OiAgICAgICAgICAgICAgICAgJ3NlbGVjdC10ZXh0JyxcbiAgICBzZWxlY3RUZXh0QXJlYUNvbnRlbnQ6ICAgICAgJ3NlbGVjdC10ZXh0LWFyZWEtY29udGVudCcsXG4gICAgc2VsZWN0RWRpdGFibGVDb250ZW50OiAgICAgICdzZWxlY3QtZWRpdGFibGUtY29udGVudCcsXG4gICAgcHJlc3NLZXk6ICAgICAgICAgICAgICAgICAgICdwcmVzcy1rZXknLFxuICAgIHdhaXQ6ICAgICAgICAgICAgICAgICAgICAgICAnd2FpdCcsXG4gICAgbmF2aWdhdGVUbzogICAgICAgICAgICAgICAgICduYXZpZ2F0ZS10bycsXG4gICAgc2V0RmlsZXNUb1VwbG9hZDogICAgICAgICAgICdzZXQtZmlsZXMtdG8tdXBsb2FkJyxcbiAgICBjbGVhclVwbG9hZDogICAgICAgICAgICAgICAgJ2NsZWFyLXVwbG9hZCcsXG4gICAgZXhlY3V0ZUNsaWVudEZ1bmN0aW9uOiAgICAgICdleGVjdXRlLWNsaWVudC1mdW5jdGlvbicsXG4gICAgZXhlY3V0ZVNlbGVjdG9yOiAgICAgICAgICAgICdleGVjdXRlLXNlbGVjdG9yJyxcbiAgICB0YWtlU2NyZWVuc2hvdDogICAgICAgICAgICAgJ3Rha2Utc2NyZWVuc2hvdCcsXG4gICAgdGFrZUVsZW1lbnRTY3JlZW5zaG90OiAgICAgICd0YWtlLWVsZW1lbnQtc2NyZWVuc2hvdCcsXG4gICAgdGFrZVNjcmVlbnNob3RPbkZhaWw6ICAgICAgICd0YWtlLXNjcmVlbnNob3Qtb24tZmFpbCcsXG4gICAgcHJlcGFyZUJyb3dzZXJNYW5pcHVsYXRpb246ICdwcmVwYXJlLWJyb3dzZXItbWFuaXB1bGF0aW9uJyxcbiAgICBzaG93QXNzZXJ0aW9uUmV0cmllc1N0YXR1czogJ3Nob3ctYXNzZXJ0aW9uLXJldHJpZXMtc3RhdHVzJyxcbiAgICBoaWRlQXNzZXJ0aW9uUmV0cmllc1N0YXR1czogJ2hpZGUtYXNzZXJ0aW9uLXJldHJpZXMtc3RhdHVzJyxcbiAgICBzZXRCcmVha3BvaW50OiAgICAgICAgICAgICAgJ3NldC1icmVha3BvaW50JyxcbiAgICByZXNpemVXaW5kb3c6ICAgICAgICAgICAgICAgJ3Jlc2l6ZS13aW5kb3cnLFxuICAgIHJlc2l6ZVdpbmRvd1RvRml0RGV2aWNlOiAgICAncmVzaXplLXdpbmRvdy10by1maXQtZGV2aWNlJyxcbiAgICBtYXhpbWl6ZVdpbmRvdzogICAgICAgICAgICAgJ21heGltaXplLXdpbmRvdycsXG4gICAgc3dpdGNoVG9JZnJhbWU6ICAgICAgICAgICAgICdzd2l0Y2gtdG8taWZyYW1lJyxcbiAgICBzd2l0Y2hUb01haW5XaW5kb3c6ICAgICAgICAgJ3N3aXRjaC10by1tYWluLXdpbmRvdycsXG4gICAgb3BlbldpbmRvdzogICAgICAgICAgICAgICAgICdvcGVuLXdpbmRvdycsXG4gICAgY2xvc2VXaW5kb3c6ICAgICAgICAgICAgICAgICdjbG9zZS13aW5kb3cnLFxuICAgIGdldEN1cnJlbnRXaW5kb3c6ICAgICAgICAgICAnZ2V0LWN1cnJlbnQtd2luZG93JyxcbiAgICBnZXRDdXJyZW50V2luZG93czogICAgICAgICAgJ2dldC1jdXJyZW50LXdpbmRvd3MnLFxuICAgIHN3aXRjaFRvV2luZG93OiAgICAgICAgICAgICAnc3dpdGNoLXRvLXdpbmRvdycsXG4gICAgc3dpdGNoVG9XaW5kb3dCeVByZWRpY2F0ZTogICdzd2l0Y2gtdG8td2luZG93LWJ5LXByZWRpY2F0ZScsXG4gICAgc3dpdGNoVG9QYXJlbnRXaW5kb3c6ICAgICAgICdzd2l0Y2gtdG8tcGFyZW50LXdpbmRvdycsXG4gICAgc3dpdGNoVG9QcmV2aW91c1dpbmRvdzogICAgICdzd2l0Y2gtdG8tcHJldmlvdXMtd2luZG93JyxcbiAgICBzZXROYXRpdmVEaWFsb2dIYW5kbGVyOiAgICAgJ3NldC1uYXRpdmUtZGlhbG9nLWhhbmRsZXInLFxuICAgIGdldE5hdGl2ZURpYWxvZ0hpc3Rvcnk6ICAgICAnZ2V0LW5hdGl2ZS1kaWFsb2ctaGlzdG9yeScsXG4gICAgZ2V0QnJvd3NlckNvbnNvbGVNZXNzYWdlczogICdnZXQtYnJvd3Nlci1jb25zb2xlLW1lc3NhZ2VzJyxcbiAgICBzZXRUZXN0U3BlZWQ6ICAgICAgICAgICAgICAgJ3NldC10ZXN0LXNwZWVkJyxcbiAgICBzZXRQYWdlTG9hZFRpbWVvdXQ6ICAgICAgICAgJ3NldC1wYWdlLWxvYWQtdGltZW91dCcsXG4gICAgZGVidWc6ICAgICAgICAgICAgICAgICAgICAgICdkZWJ1ZycsXG4gICAgYXNzZXJ0aW9uOiAgICAgICAgICAgICAgICAgICdhc3NlcnRpb24nLFxuICAgIHVzZVJvbGU6ICAgICAgICAgICAgICAgICAgICAndXNlUm9sZScsXG4gICAgdGVzdERvbmU6ICAgICAgICAgICAgICAgICAgICd0ZXN0LWRvbmUnLFxuICAgIGJhY2t1cFN0b3JhZ2VzOiAgICAgICAgICAgICAnYmFja3VwLXN0b3JhZ2VzJyxcbiAgICBleGVjdXRlRXhwcmVzc2lvbjogICAgICAgICAgJ2V4ZWN1dGUtZXhwcmVzc2lvbicsXG4gICAgZXhlY3V0ZUFzeW5jRXhwcmVzc2lvbjogICAgICdleGVjdXRlLWFzeW5jLWV4cHJlc3Npb24nLFxuICAgIHVubG9ja1BhZ2U6ICAgICAgICAgICAgICAgICAndW5sb2NrLXBhZ2UnLFxuICAgIHJlY29yZGVyOiAgICAgICAgICAgICAgICAgICAncmVjb3JkZXInXG59O1xuIl19
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0LXJ1bi9jb21tYW5kcy90eXBlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxnRUFBZ0U7QUFDaEUsZ0VBQWdFO0FBQ2hFLCtDQUErQztBQUMvQyxnRUFBZ0U7O0FBRWhFLGtCQUFlO0lBQ1gsYUFBYSxFQUFlLGdCQUFnQjtJQUM1QyxLQUFLLEVBQXVCLE9BQU87SUFDbkMsVUFBVSxFQUFrQixhQUFhO0lBQ3pDLFdBQVcsRUFBaUIsY0FBYztJQUMxQyxJQUFJLEVBQXdCLE1BQU07SUFDbEMsYUFBYSxFQUFlLGlCQUFpQjtJQUM3QyxLQUFLLEVBQXVCLE9BQU87SUFDbkMsTUFBTSxFQUFzQixRQUFRO0lBQ3BDLFFBQVEsRUFBb0IsV0FBVztJQUN2QyxjQUFjLEVBQWMsa0JBQWtCO0lBQzlDLFFBQVEsRUFBb0IsV0FBVztJQUN2QyxVQUFVLEVBQWtCLGFBQWE7SUFDekMscUJBQXFCLEVBQU8sMEJBQTBCO0lBQ3RELHFCQUFxQixFQUFPLHlCQUF5QjtJQUNyRCxRQUFRLEVBQW9CLFdBQVc7SUFDdkMsSUFBSSxFQUF3QixNQUFNO0lBQ2xDLFVBQVUsRUFBa0IsYUFBYTtJQUN6QyxnQkFBZ0IsRUFBWSxxQkFBcUI7SUFDakQsV0FBVyxFQUFpQixjQUFjO0lBQzFDLHFCQUFxQixFQUFPLHlCQUF5QjtJQUNyRCxlQUFlLEVBQWEsa0JBQWtCO0lBQzlDLGNBQWMsRUFBYyxpQkFBaUI7SUFDN0MscUJBQXFCLEVBQU8seUJBQXlCO0lBQ3JELG9CQUFvQixFQUFRLHlCQUF5QjtJQUNyRCwwQkFBMEIsRUFBRSw4QkFBOEI7SUFDMUQsMEJBQTBCLEVBQUUsK0JBQStCO0lBQzNELDBCQUEwQixFQUFFLCtCQUErQjtJQUMzRCxhQUFhLEVBQWUsZ0JBQWdCO0lBQzVDLFlBQVksRUFBZ0IsZUFBZTtJQUMzQyx1QkFBdUIsRUFBSyw2QkFBNkI7SUFDekQsY0FBYyxFQUFjLGlCQUFpQjtJQUM3QyxjQUFjLEVBQWMsa0JBQWtCO0lBQzlDLGtCQUFrQixFQUFVLHVCQUF1QjtJQUNuRCxVQUFVLEVBQWtCLGFBQWE7SUFDekMsV0FBVyxFQUFpQixjQUFjO0lBQzFDLGdCQUFnQixFQUFZLG9CQUFvQjtJQUNoRCxpQkFBaUIsRUFBVyxxQkFBcUI7SUFDakQsY0FBYyxFQUFjLGtCQUFrQjtJQUM5Qyx5QkFBeUIsRUFBRywrQkFBK0I7SUFDM0Qsb0JBQW9CLEVBQVEseUJBQXlCO0lBQ3JELHNCQUFzQixFQUFNLDJCQUEyQjtJQUN2RCxzQkFBc0IsRUFBTSwyQkFBMkI7SUFDdkQsc0JBQXNCLEVBQU0sMkJBQTJCO0lBQ3ZELHlCQUF5QixFQUFHLDhCQUE4QjtJQUMxRCxnQkFBZ0IsRUFBWSxvQkFBb0I7SUFDaEQsWUFBWSxFQUFnQixnQkFBZ0I7SUFDNUMsa0JBQWtCLEVBQVUsdUJBQXVCO0lBQ25ELEtBQUssRUFBdUIsT0FBTztJQUNuQyxTQUFTLEVBQW1CLFdBQVc7SUFDdkMsT0FBTyxFQUFxQixTQUFTO0lBQ3JDLFFBQVEsRUFBb0IsV0FBVztJQUN2QyxjQUFjLEVBQWMsaUJBQWlCO0lBQzdDLGlCQUFpQixFQUFXLG9CQUFvQjtJQUNoRCxzQkFBc0IsRUFBTSwwQkFBMEI7SUFDdEQsVUFBVSxFQUFrQixhQUFhO0lBQ3pDLFFBQVEsRUFBb0IsVUFBVTtDQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gV0FSTklORzogdGhpcyBmaWxlIGlzIHVzZWQgYnkgYm90aCB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyLlxuLy8gRG8gbm90IHVzZSBhbnkgYnJvd3NlciBvciBub2RlLXNwZWNpZmljIEFQSSFcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGRpc3BhdGNoRXZlbnQ6ICAgICAgICAgICAgICAnZGlzcGF0Y2gtZXZlbnQnLFxuICAgIGNsaWNrOiAgICAgICAgICAgICAgICAgICAgICAnY2xpY2snLFxuICAgIHJpZ2h0Q2xpY2s6ICAgICAgICAgICAgICAgICAncmlnaHQtY2xpY2snLFxuICAgIGRvdWJsZUNsaWNrOiAgICAgICAgICAgICAgICAnZG91YmxlLWNsaWNrJyxcbiAgICBkcmFnOiAgICAgICAgICAgICAgICAgICAgICAgJ2RyYWcnLFxuICAgIGRyYWdUb0VsZW1lbnQ6ICAgICAgICAgICAgICAnZHJhZy10by1lbGVtZW50JyxcbiAgICBob3ZlcjogICAgICAgICAgICAgICAgICAgICAgJ2hvdmVyJyxcbiAgICBzY3JvbGw6ICAgICAgICAgICAgICAgICAgICAgJ3Njcm9sbCcsXG4gICAgc2Nyb2xsQnk6ICAgICAgICAgICAgICAgICAgICdzY3JvbGwtYnknLFxuICAgIHNjcm9sbEludG9WaWV3OiAgICAgICAgICAgICAnc2Nyb2xsLWludG8tdmlldycsXG4gICAgdHlwZVRleHQ6ICAgICAgICAgICAgICAgICAgICd0eXBlLXRleHQnLFxuICAgIHNlbGVjdFRleHQ6ICAgICAgICAgICAgICAgICAnc2VsZWN0LXRleHQnLFxuICAgIHNlbGVjdFRleHRBcmVhQ29udGVudDogICAgICAnc2VsZWN0LXRleHQtYXJlYS1jb250ZW50JyxcbiAgICBzZWxlY3RFZGl0YWJsZUNvbnRlbnQ6ICAgICAgJ3NlbGVjdC1lZGl0YWJsZS1jb250ZW50JyxcbiAgICBwcmVzc0tleTogICAgICAgICAgICAgICAgICAgJ3ByZXNzLWtleScsXG4gICAgd2FpdDogICAgICAgICAgICAgICAgICAgICAgICd3YWl0JyxcbiAgICBuYXZpZ2F0ZVRvOiAgICAgICAgICAgICAgICAgJ25hdmlnYXRlLXRvJyxcbiAgICBzZXRGaWxlc1RvVXBsb2FkOiAgICAgICAgICAgJ3NldC1maWxlcy10by11cGxvYWQnLFxuICAgIGNsZWFyVXBsb2FkOiAgICAgICAgICAgICAgICAnY2xlYXItdXBsb2FkJyxcbiAgICBleGVjdXRlQ2xpZW50RnVuY3Rpb246ICAgICAgJ2V4ZWN1dGUtY2xpZW50LWZ1bmN0aW9uJyxcbiAgICBleGVjdXRlU2VsZWN0b3I6ICAgICAgICAgICAgJ2V4ZWN1dGUtc2VsZWN0b3InLFxuICAgIHRha2VTY3JlZW5zaG90OiAgICAgICAgICAgICAndGFrZS1zY3JlZW5zaG90JyxcbiAgICB0YWtlRWxlbWVudFNjcmVlbnNob3Q6ICAgICAgJ3Rha2UtZWxlbWVudC1zY3JlZW5zaG90JyxcbiAgICB0YWtlU2NyZWVuc2hvdE9uRmFpbDogICAgICAgJ3Rha2Utc2NyZWVuc2hvdC1vbi1mYWlsJyxcbiAgICBwcmVwYXJlQnJvd3Nlck1hbmlwdWxhdGlvbjogJ3ByZXBhcmUtYnJvd3Nlci1tYW5pcHVsYXRpb24nLFxuICAgIHNob3dBc3NlcnRpb25SZXRyaWVzU3RhdHVzOiAnc2hvdy1hc3NlcnRpb24tcmV0cmllcy1zdGF0dXMnLFxuICAgIGhpZGVBc3NlcnRpb25SZXRyaWVzU3RhdHVzOiAnaGlkZS1hc3NlcnRpb24tcmV0cmllcy1zdGF0dXMnLFxuICAgIHNldEJyZWFrcG9pbnQ6ICAgICAgICAgICAgICAnc2V0LWJyZWFrcG9pbnQnLFxuICAgIHJlc2l6ZVdpbmRvdzogICAgICAgICAgICAgICAncmVzaXplLXdpbmRvdycsXG4gICAgcmVzaXplV2luZG93VG9GaXREZXZpY2U6ICAgICdyZXNpemUtd2luZG93LXRvLWZpdC1kZXZpY2UnLFxuICAgIG1heGltaXplV2luZG93OiAgICAgICAgICAgICAnbWF4aW1pemUtd2luZG93JyxcbiAgICBzd2l0Y2hUb0lmcmFtZTogICAgICAgICAgICAgJ3N3aXRjaC10by1pZnJhbWUnLFxuICAgIHN3aXRjaFRvTWFpbldpbmRvdzogICAgICAgICAnc3dpdGNoLXRvLW1haW4td2luZG93JyxcbiAgICBvcGVuV2luZG93OiAgICAgICAgICAgICAgICAgJ29wZW4td2luZG93JyxcbiAgICBjbG9zZVdpbmRvdzogICAgICAgICAgICAgICAgJ2Nsb3NlLXdpbmRvdycsXG4gICAgZ2V0Q3VycmVudFdpbmRvdzogICAgICAgICAgICdnZXQtY3VycmVudC13aW5kb3cnLFxuICAgIGdldEN1cnJlbnRXaW5kb3dzOiAgICAgICAgICAnZ2V0LWN1cnJlbnQtd2luZG93cycsXG4gICAgc3dpdGNoVG9XaW5kb3c6ICAgICAgICAgICAgICdzd2l0Y2gtdG8td2luZG93JyxcbiAgICBzd2l0Y2hUb1dpbmRvd0J5UHJlZGljYXRlOiAgJ3N3aXRjaC10by13aW5kb3ctYnktcHJlZGljYXRlJyxcbiAgICBzd2l0Y2hUb1BhcmVudFdpbmRvdzogICAgICAgJ3N3aXRjaC10by1wYXJlbnQtd2luZG93JyxcbiAgICBzd2l0Y2hUb1ByZXZpb3VzV2luZG93OiAgICAgJ3N3aXRjaC10by1wcmV2aW91cy13aW5kb3cnLFxuICAgIHNldE5hdGl2ZURpYWxvZ0hhbmRsZXI6ICAgICAnc2V0LW5hdGl2ZS1kaWFsb2ctaGFuZGxlcicsXG4gICAgZ2V0TmF0aXZlRGlhbG9nSGlzdG9yeTogICAgICdnZXQtbmF0aXZlLWRpYWxvZy1oaXN0b3J5JyxcbiAgICBnZXRCcm93c2VyQ29uc29sZU1lc3NhZ2VzOiAgJ2dldC1icm93c2VyLWNvbnNvbGUtbWVzc2FnZXMnLFxuICAgIGdldEFjdGl2ZUVsZW1lbnQ6ICAgICAgICAgICAnZ2V0LWFjdGl2ZS1lbGVtZW50JyxcbiAgICBzZXRUZXN0U3BlZWQ6ICAgICAgICAgICAgICAgJ3NldC10ZXN0LXNwZWVkJyxcbiAgICBzZXRQYWdlTG9hZFRpbWVvdXQ6ICAgICAgICAgJ3NldC1wYWdlLWxvYWQtdGltZW91dCcsXG4gICAgZGVidWc6ICAgICAgICAgICAgICAgICAgICAgICdkZWJ1ZycsXG4gICAgYXNzZXJ0aW9uOiAgICAgICAgICAgICAgICAgICdhc3NlcnRpb24nLFxuICAgIHVzZVJvbGU6ICAgICAgICAgICAgICAgICAgICAndXNlUm9sZScsXG4gICAgdGVzdERvbmU6ICAgICAgICAgICAgICAgICAgICd0ZXN0LWRvbmUnLFxuICAgIGJhY2t1cFN0b3JhZ2VzOiAgICAgICAgICAgICAnYmFja3VwLXN0b3JhZ2VzJyxcbiAgICBleGVjdXRlRXhwcmVzc2lvbjogICAgICAgICAgJ2V4ZWN1dGUtZXhwcmVzc2lvbicsXG4gICAgZXhlY3V0ZUFzeW5jRXhwcmVzc2lvbjogICAgICdleGVjdXRlLWFzeW5jLWV4cHJlc3Npb24nLFxuICAgIHVubG9ja1BhZ2U6ICAgICAgICAgICAgICAgICAndW5sb2NrLXBhZ2UnLFxuICAgIHJlY29yZGVyOiAgICAgICAgICAgICAgICAgICAncmVjb3JkZXInXG59O1xuIl19
@@ -1,88 +1,88 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isExecutableOnClientCommand = exports.isJSExpression = exports.isExecutableInTopWindowOnly = exports.isServiceCommand = exports.isBrowserManipulationCommand = exports.isResizeWindowCommand = exports.isScreenshotCommand = exports.canSetDebuggerBreakpointBeforeCommand = exports.isCommandRejectableByPageError = void 0;
7
- // -------------------------------------------------------------
8
- // WARNING: this file is used by both the client and the server.
9
- // Do not use any browser or node-specific API!
10
- // -------------------------------------------------------------
11
- const type_1 = __importDefault(require("./type"));
12
- const RAW_API_JS_EXPRESSION_TYPE = 'js-expr';
13
- function isCommandRejectableByPageError(command) {
14
- return !isObservationCommand(command) && !isBrowserManipulationCommand(command) && !isServiceCommand(command) ||
15
- isResizeWindowCommand(command)
16
- && !isWindowSwitchingCommand(command);
17
- }
18
- exports.isCommandRejectableByPageError = isCommandRejectableByPageError;
19
- function isClientFunctionCommand(command) {
20
- return command.type === type_1.default.executeClientFunction ||
21
- command.type === type_1.default.executeSelector;
22
- }
23
- function isObservationCommand(command) {
24
- return isClientFunctionCommand(command) ||
25
- command.type === type_1.default.wait ||
26
- command.type === type_1.default.assertion ||
27
- command.type === type_1.default.executeExpression;
28
- }
29
- function isWindowSwitchingCommand(command) {
30
- return command.type === type_1.default.switchToIframe || command.type === type_1.default.switchToMainWindow;
31
- }
32
- function canSetDebuggerBreakpointBeforeCommand(command) {
33
- return command.type !== type_1.default.debug && !isClientFunctionCommand(command) && !isServiceCommand(command);
34
- }
35
- exports.canSetDebuggerBreakpointBeforeCommand = canSetDebuggerBreakpointBeforeCommand;
36
- function isScreenshotCommand(command) {
37
- return command.type === type_1.default.takeScreenshot ||
38
- command.type === type_1.default.takeElementScreenshot ||
39
- command.type === type_1.default.takeScreenshotOnFail;
40
- }
41
- exports.isScreenshotCommand = isScreenshotCommand;
42
- function isResizeWindowCommand(command) {
43
- return command.type === type_1.default.resizeWindow ||
44
- command.type === type_1.default.resizeWindowToFitDevice ||
45
- command.type === type_1.default.maximizeWindow;
46
- }
47
- exports.isResizeWindowCommand = isResizeWindowCommand;
48
- function isBrowserManipulationCommand(command) {
49
- return isScreenshotCommand(command) || isResizeWindowCommand(command);
50
- }
51
- exports.isBrowserManipulationCommand = isBrowserManipulationCommand;
52
- function isServiceCommand(command) {
53
- return command.type === type_1.default.testDone ||
54
- command.type === type_1.default.showAssertionRetriesStatus ||
55
- command.type === type_1.default.hideAssertionRetriesStatus ||
56
- command.type === type_1.default.setBreakpoint ||
57
- command.type === type_1.default.takeScreenshotOnFail ||
58
- command.type === type_1.default.recorder;
59
- }
60
- exports.isServiceCommand = isServiceCommand;
61
- function isExecutableInTopWindowOnly(command) {
62
- return command.type === type_1.default.testDone ||
63
- command.type === type_1.default.switchToMainWindow ||
64
- command.type === type_1.default.setNativeDialogHandler ||
65
- command.type === type_1.default.getNativeDialogHistory ||
66
- command.type === type_1.default.setTestSpeed ||
67
- command.type === type_1.default.showAssertionRetriesStatus ||
68
- command.type === type_1.default.hideAssertionRetriesStatus ||
69
- command.type === type_1.default.setBreakpoint ||
70
- isBrowserManipulationCommand(command) && command.type !== type_1.default.takeElementScreenshot;
71
- }
72
- exports.isExecutableInTopWindowOnly = isExecutableInTopWindowOnly;
73
- function isJSExpression(val) {
74
- return val !== null && typeof val === 'object' && val.type === RAW_API_JS_EXPRESSION_TYPE &&
75
- typeof val.value === 'string';
76
- }
77
- exports.isJSExpression = isJSExpression;
78
- function isExecutableOnClientCommand(command) {
79
- return command.type !== type_1.default.wait &&
80
- command.type !== type_1.default.setPageLoadTimeout &&
81
- command.type !== type_1.default.debug &&
82
- command.type !== type_1.default.useRole &&
83
- command.type !== type_1.default.assertion &&
84
- command.type !== type_1.default.executeExpression &&
85
- command.type !== type_1.default.executeAsyncExpression;
86
- }
87
- exports.isExecutableOnClientCommand = isExecutableOnClientCommand;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isExecutableOnClientCommand = exports.isJSExpression = exports.isExecutableInTopWindowOnly = exports.isServiceCommand = exports.isBrowserManipulationCommand = exports.isResizeWindowCommand = exports.isScreenshotCommand = exports.canSetDebuggerBreakpointBeforeCommand = exports.isCommandRejectableByPageError = void 0;
7
+ // -------------------------------------------------------------
8
+ // WARNING: this file is used by both the client and the server.
9
+ // Do not use any browser or node-specific API!
10
+ // -------------------------------------------------------------
11
+ const type_1 = __importDefault(require("./type"));
12
+ const RAW_API_JS_EXPRESSION_TYPE = 'js-expr';
13
+ function isCommandRejectableByPageError(command) {
14
+ return !isObservationCommand(command) && !isBrowserManipulationCommand(command) && !isServiceCommand(command) ||
15
+ isResizeWindowCommand(command)
16
+ && !isWindowSwitchingCommand(command);
17
+ }
18
+ exports.isCommandRejectableByPageError = isCommandRejectableByPageError;
19
+ function isClientFunctionCommand(command) {
20
+ return command.type === type_1.default.executeClientFunction ||
21
+ command.type === type_1.default.executeSelector;
22
+ }
23
+ function isObservationCommand(command) {
24
+ return isClientFunctionCommand(command) ||
25
+ command.type === type_1.default.wait ||
26
+ command.type === type_1.default.assertion ||
27
+ command.type === type_1.default.executeExpression;
28
+ }
29
+ function isWindowSwitchingCommand(command) {
30
+ return command.type === type_1.default.switchToIframe || command.type === type_1.default.switchToMainWindow;
31
+ }
32
+ function canSetDebuggerBreakpointBeforeCommand(command) {
33
+ return command.type !== type_1.default.debug && !isClientFunctionCommand(command) && !isServiceCommand(command);
34
+ }
35
+ exports.canSetDebuggerBreakpointBeforeCommand = canSetDebuggerBreakpointBeforeCommand;
36
+ function isScreenshotCommand(command) {
37
+ return command.type === type_1.default.takeScreenshot ||
38
+ command.type === type_1.default.takeElementScreenshot ||
39
+ command.type === type_1.default.takeScreenshotOnFail;
40
+ }
41
+ exports.isScreenshotCommand = isScreenshotCommand;
42
+ function isResizeWindowCommand(command) {
43
+ return command.type === type_1.default.resizeWindow ||
44
+ command.type === type_1.default.resizeWindowToFitDevice ||
45
+ command.type === type_1.default.maximizeWindow;
46
+ }
47
+ exports.isResizeWindowCommand = isResizeWindowCommand;
48
+ function isBrowserManipulationCommand(command) {
49
+ return isScreenshotCommand(command) || isResizeWindowCommand(command);
50
+ }
51
+ exports.isBrowserManipulationCommand = isBrowserManipulationCommand;
52
+ function isServiceCommand(command) {
53
+ return command.type === type_1.default.testDone ||
54
+ command.type === type_1.default.showAssertionRetriesStatus ||
55
+ command.type === type_1.default.hideAssertionRetriesStatus ||
56
+ command.type === type_1.default.setBreakpoint ||
57
+ command.type === type_1.default.takeScreenshotOnFail ||
58
+ command.type === type_1.default.recorder;
59
+ }
60
+ exports.isServiceCommand = isServiceCommand;
61
+ function isExecutableInTopWindowOnly(command) {
62
+ return command.type === type_1.default.testDone ||
63
+ command.type === type_1.default.switchToMainWindow ||
64
+ command.type === type_1.default.setNativeDialogHandler ||
65
+ command.type === type_1.default.getNativeDialogHistory ||
66
+ command.type === type_1.default.setTestSpeed ||
67
+ command.type === type_1.default.showAssertionRetriesStatus ||
68
+ command.type === type_1.default.hideAssertionRetriesStatus ||
69
+ command.type === type_1.default.setBreakpoint ||
70
+ isBrowserManipulationCommand(command) && command.type !== type_1.default.takeElementScreenshot;
71
+ }
72
+ exports.isExecutableInTopWindowOnly = isExecutableInTopWindowOnly;
73
+ function isJSExpression(val) {
74
+ return val !== null && typeof val === 'object' && val.type === RAW_API_JS_EXPRESSION_TYPE &&
75
+ typeof val.value === 'string';
76
+ }
77
+ exports.isJSExpression = isJSExpression;
78
+ function isExecutableOnClientCommand(command) {
79
+ return command.type !== type_1.default.wait &&
80
+ command.type !== type_1.default.setPageLoadTimeout &&
81
+ command.type !== type_1.default.debug &&
82
+ command.type !== type_1.default.useRole &&
83
+ command.type !== type_1.default.assertion &&
84
+ command.type !== type_1.default.executeExpression &&
85
+ command.type !== type_1.default.executeAsyncExpression;
86
+ }
87
+ exports.isExecutableOnClientCommand = isExecutableOnClientCommand;
88
88
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC1ydW4vY29tbWFuZHMvdXRpbHMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0VBQWdFO0FBQ2hFLGdFQUFnRTtBQUNoRSwrQ0FBK0M7QUFDL0MsZ0VBQWdFO0FBQ2hFLGtEQUEwQjtBQUUxQixNQUFNLDBCQUEwQixHQUFHLFNBQVMsQ0FBQztBQUU3QyxTQUFnQiw4QkFBOEIsQ0FBRSxPQUFPO0lBQ25ELE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1FBQ3RHLHFCQUFxQixDQUFDLE9BQU8sQ0FBQztlQUMzQixDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFKRCx3RUFJQztBQUVELFNBQVMsdUJBQXVCLENBQUUsT0FBTztJQUNyQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLEtBQUssY0FBSSxDQUFDLHFCQUFxQjtRQUMzQyxPQUFPLENBQUMsSUFBSSxLQUFLLGNBQUksQ0FBQyxlQUFlLENBQUM7QUFDakQsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUUsT0FBTztJQUNsQyxPQUFPLHVCQUF1QixDQUFDLE9BQU8sQ0FBQztRQUNoQyxPQUFPLENBQUMsSUFBSSxLQUFLLGNBQUksQ0FBQyxJQUFJO1FBQzFCLE9BQU8sQ0FBQyxJQUFJLEtBQUssY0FBSSxDQUFDLFNBQVM7UUFDL0IsT0FBTyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMsaUJBQWlCLENBQUM7QUFDbkQsQ0FBQztBQUVELFNBQVMsd0JBQXdCLENBQUUsT0FBTztJQUN0QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLEtBQUssY0FBSSxDQUFDLGNBQWMsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLGNBQUksQ0FBQyxrQkFBa0IsQ0FBQztB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QUksQ0FBQyxPQUFPO1FBQzdCLE9BQU8sQ0FBQyxJQUFJLEtBQUssY0FBSSxDQUFDLFNBQVM7UUFDL0IsT0FBTyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMsaUJBQWlCO1FBQ3ZDLE9BQU8sQ0FBQyxJQUFJLEtBQUssY0FBSSxDQUFDLHNCQUFzQixDQUFDO0FBQ3hELENBQUM7QUFSRCxrRUFRQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFdBUk5JTkc6IHRoaXMgZmlsZSBpcyB1c2VkIGJ5IGJvdGggdGhlIGNsaWVudCBhbmQgdGhlIHNlcnZlci5cbi8vIERvIG5vdCB1c2UgYW55IGJyb3dzZXIgb3Igbm9kZS1zcGVjaWZpYyBBUEkhXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5pbXBvcnQgVFlQRSBmcm9tICcuL3R5cGUnO1xuXG5jb25zdCBSQVdfQVBJX0pTX0VYUFJFU1NJT05fVFlQRSA9ICdqcy1leHByJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29tbWFuZFJlamVjdGFibGVCeVBhZ2VFcnJvciAoY29tbWFuZCkge1xuICAgIHJldHVybiAhaXNPYnNlcnZhdGlvbkNvbW1hbmQoY29tbWFuZCkgJiYgIWlzQnJvd3Nlck1hbmlwdWxhdGlvbkNvbW1hbmQoY29tbWFuZCkgJiYgIWlzU2VydmljZUNvbW1hbmQoY29tbWFuZCkgfHxcbiAgICAgICAgICAgaXNSZXNpemVXaW5kb3dDb21tYW5kKGNvbW1hbmQpXG4gICAgICAgICAgICYmICFpc1dpbmRvd1N3aXRjaGluZ0NvbW1hbmQoY29tbWFuZCk7XG59XG5cbmZ1bmN0aW9uIGlzQ2xpZW50RnVuY3Rpb25Db21tYW5kIChjb21tYW5kKSB7XG4gICAgcmV0dXJuIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5leGVjdXRlQ2xpZW50RnVuY3Rpb24gfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLmV4ZWN1dGVTZWxlY3Rvcjtcbn1cblxuZnVuY3Rpb24gaXNPYnNlcnZhdGlvbkNvbW1hbmQgKGNvbW1hbmQpIHtcbiAgICByZXR1cm4gaXNDbGllbnRGdW5jdGlvbkNvbW1hbmQoY29tbWFuZCkgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLndhaXQgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLmFzc2VydGlvbiB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUuZXhlY3V0ZUV4cHJlc3Npb247XG59XG5cbmZ1bmN0aW9uIGlzV2luZG93U3dpdGNoaW5nQ29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBjb21tYW5kLnR5cGUgPT09IFRZUEUuc3dpdGNoVG9JZnJhbWUgfHwgY29tbWFuZC50eXBlID09PSBUWVBFLnN3aXRjaFRvTWFpbldpbmRvdztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhblNldERlYnVnZ2VyQnJlYWtwb2ludEJlZm9yZUNvbW1hbmQgKGNvbW1hbmQpIHtcbiAgICByZXR1cm4gY29tbWFuZC50eXBlICE9PSBUWVBFLmRlYnVnICYmICFpc0NsaWVudEZ1bmN0aW9uQ29tbWFuZChjb21tYW5kKSAmJiAhaXNTZXJ2aWNlQ29tbWFuZChjb21tYW5kKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2NyZWVuc2hvdENvbW1hbmQgKGNvbW1hbmQpIHtcbiAgICByZXR1cm4gY29tbWFuZC50eXBlID09PSBUWVBFLnRha2VTY3JlZW5zaG90IHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS50YWtlRWxlbWVudFNjcmVlbnNob3QgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnRha2VTY3JlZW5zaG90T25GYWlsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZXNpemVXaW5kb3dDb21tYW5kIChjb21tYW5kKSB7XG4gICAgcmV0dXJuIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5yZXNpemVXaW5kb3cgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnJlc2l6ZVdpbmRvd1RvRml0RGV2aWNlIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5tYXhpbWl6ZVdpbmRvdztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQnJvd3Nlck1hbmlwdWxhdGlvbkNvbW1hbmQgKGNvbW1hbmQpIHtcbiAgICByZXR1cm4gaXNTY3JlZW5zaG90Q29tbWFuZChjb21tYW5kKSB8fCBpc1Jlc2l6ZVdpbmRvd0NvbW1hbmQoY29tbWFuZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NlcnZpY2VDb21tYW5kIChjb21tYW5kKSB7XG4gICAgcmV0dXJuIGNvbW1hbmQudHlwZSA9PT0gVFlQRS50ZXN0RG9uZSB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUuc2hvd0Fzc2VydGlvblJldHJpZXNTdGF0dXMgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLmhpZGVBc3NlcnRpb25SZXRyaWVzU3RhdHVzIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5zZXRCcmVha3BvaW50IHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS50YWtlU2NyZWVuc2hvdE9uRmFpbCB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUucmVjb3JkZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0V4ZWN1dGFibGVJblRvcFdpbmRvd09ubHkgKGNvbW1hbmQpIHtcbiAgICByZXR1cm4gY29tbWFuZC50eXBlID09PSBUWVBFLnRlc3REb25lIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5zd2l0Y2hUb01haW5XaW5kb3cgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnNldE5hdGl2ZURpYWxvZ0hhbmRsZXIgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLmdldE5hdGl2ZURpYWxvZ0hpc3RvcnkgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnNldFRlc3RTcGVlZCB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUuc2hvd0Fzc2VydGlvblJldHJpZXNTdGF0dXMgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLmhpZGVBc3NlcnRpb25SZXRyaWVzU3RhdHVzIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5zZXRCcmVha3BvaW50IHx8XG4gICAgICAgICAgIGlzQnJvd3Nlck1hbmlwdWxhdGlvbkNvbW1hbmQoY29tbWFuZCkgJiYgY29tbWFuZC50eXBlICE9PSBUWVBFLnRha2VFbGVtZW50U2NyZWVuc2hvdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSlNFeHByZXNzaW9uICh2YWwpIHtcbiAgICByZXR1cm4gdmFsICE9PSBudWxsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbC50eXBlID09PSBSQVdfQVBJX0pTX0VYUFJFU1NJT05fVFlQRSAmJlxuICAgICAgICAgICB0eXBlb2YgdmFsLnZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRXhlY3V0YWJsZU9uQ2xpZW50Q29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBjb21tYW5kLnR5cGUgIT09IFRZUEUud2FpdCAmJlxuICAgICAgICAgICBjb21tYW5kLnR5cGUgIT09IFRZUEUuc2V0UGFnZUxvYWRUaW1lb3V0ICYmXG4gICAgICAgICAgIGNvbW1hbmQudHlwZSAhPT0gVFlQRS5kZWJ1ZyAmJlxuICAgICAgICAgICBjb21tYW5kLnR5cGUgIT09IFRZUEUudXNlUm9sZSAmJlxuICAgICAgICAgICBjb21tYW5kLnR5cGUgIT09IFRZUEUuYXNzZXJ0aW9uICYmXG4gICAgICAgICAgIGNvbW1hbmQudHlwZSAhPT0gVFlQRS5leGVjdXRlRXhwcmVzc2lvbiAmJlxuICAgICAgICAgICBjb21tYW5kLnR5cGUgIT09IFRZUEUuZXhlY3V0ZUFzeW5jRXhwcmVzc2lvbjtcbn1cbiJdfQ==
@@ -1,91 +1,91 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.functionArgument = exports.screenshotPathArgument = exports.resizeWindowDeviceArgument = exports.stringOrStringArrayArgument = exports.urlArgument = exports.nullableStringArgument = exports.nonEmptyStringArgument = exports.stringArgument = exports.actionOptions = exports.actionRoleArgument = exports.setSpeedArgument = exports.booleanArgument = exports.positiveIntegerArgument = exports.integerArgument = void 0;
7
- const device_specs_1 = require("device-specs");
8
- const marker_symbol_1 = __importDefault(require("../../../role/marker-symbol"));
9
- const factories_1 = require("./factories");
10
- const test_run_1 = require("../../../errors/test-run");
11
- const test_page_url_1 = require("../../../api/test-page-url");
12
- const check_file_path_1 = __importDefault(require("../../../utils/check-file-path"));
13
- // Validators
14
- exports.integerArgument = factories_1.createIntegerValidator(test_run_1.ActionIntegerArgumentError);
15
- exports.positiveIntegerArgument = factories_1.createPositiveIntegerValidator(test_run_1.ActionPositiveIntegerArgumentError);
16
- exports.booleanArgument = factories_1.createBooleanValidator(test_run_1.ActionBooleanArgumentError);
17
- exports.setSpeedArgument = factories_1.createSpeedValidator(test_run_1.SetTestSpeedArgumentError);
18
- function actionRoleArgument(name, val) {
19
- if (!val || !val[marker_symbol_1.default])
20
- throw new test_run_1.ActionRoleArgumentError(name, typeof val);
21
- }
22
- exports.actionRoleArgument = actionRoleArgument;
23
- function actionOptions(name, val) {
24
- const type = typeof val;
25
- if (type !== 'object' && val !== null && val !== void 0)
26
- throw new test_run_1.ActionOptionsTypeError(type);
27
- }
28
- exports.actionOptions = actionOptions;
29
- function stringArgument(argument, val, createError) {
30
- if (!createError)
31
- createError = actualValue => new test_run_1.ActionStringArgumentError(argument, actualValue);
32
- const type = typeof val;
33
- if (type !== 'string')
34
- throw createError(type);
35
- }
36
- exports.stringArgument = stringArgument;
37
- function nonEmptyStringArgument(argument, val, createError) {
38
- if (!createError)
39
- createError = actualValue => new test_run_1.ActionStringArgumentError(argument, actualValue);
40
- stringArgument(argument, val, createError);
41
- if (!val.length)
42
- throw createError('""');
43
- }
44
- exports.nonEmptyStringArgument = nonEmptyStringArgument;
45
- function nullableStringArgument(argument, val) {
46
- const type = typeof val;
47
- if (type !== 'string' && val !== null)
48
- throw new test_run_1.ActionNullableStringArgumentError(argument, type);
49
- }
50
- exports.nullableStringArgument = nullableStringArgument;
51
- function urlArgument(name, val) {
52
- nonEmptyStringArgument(name, val);
53
- test_page_url_1.assertPageUrl(val.trim(), 'navigateTo');
54
- }
55
- exports.urlArgument = urlArgument;
56
- function stringOrStringArrayArgument(argument, val) {
57
- const type = typeof val;
58
- if (type === 'string') {
59
- if (!val.length)
60
- throw new test_run_1.ActionStringOrStringArrayArgumentError(argument, '""');
61
- }
62
- else if (Array.isArray(val)) {
63
- if (!val.length)
64
- throw new test_run_1.ActionStringOrStringArrayArgumentError(argument, '[]');
65
- const validateElement = elementIndex => nonEmptyStringArgument(argument, val[elementIndex], actualValue => new test_run_1.ActionStringArrayElementError(argument, actualValue, elementIndex));
66
- for (let i = 0; i < val.length; i++)
67
- validateElement(i);
68
- }
69
- else
70
- throw new test_run_1.ActionStringOrStringArrayArgumentError(argument, type);
71
- }
72
- exports.stringOrStringArrayArgument = stringOrStringArrayArgument;
73
- function resizeWindowDeviceArgument(name, val) {
74
- nonEmptyStringArgument(name, val);
75
- if (!device_specs_1.isValidDeviceName(val))
76
- throw new test_run_1.ActionUnsupportedDeviceTypeError(name, val);
77
- }
78
- exports.resizeWindowDeviceArgument = resizeWindowDeviceArgument;
79
- function screenshotPathArgument(name, val) {
80
- nonEmptyStringArgument(name, val);
81
- const forbiddenCharsList = check_file_path_1.default(val);
82
- if (forbiddenCharsList.length)
83
- throw new test_run_1.ForbiddenCharactersInScreenshotPathError(val, forbiddenCharsList);
84
- }
85
- exports.screenshotPathArgument = screenshotPathArgument;
86
- function functionArgument(name, val) {
87
- if (typeof val !== 'function')
88
- throw new test_run_1.ActionFunctionArgumentError(name, val);
89
- }
90
- exports.functionArgument = functionArgument;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.functionArgument = exports.screenshotPathArgument = exports.resizeWindowDeviceArgument = exports.stringOrStringArrayArgument = exports.urlArgument = exports.nullableStringArgument = exports.nonEmptyStringArgument = exports.stringArgument = exports.actionOptions = exports.actionRoleArgument = exports.setSpeedArgument = exports.booleanArgument = exports.positiveIntegerArgument = exports.integerArgument = void 0;
7
+ const device_specs_1 = require("device-specs");
8
+ const marker_symbol_1 = __importDefault(require("../../../role/marker-symbol"));
9
+ const factories_1 = require("./factories");
10
+ const test_run_1 = require("../../../errors/test-run");
11
+ const test_page_url_1 = require("../../../api/test-page-url");
12
+ const check_file_path_1 = __importDefault(require("../../../utils/check-file-path"));
13
+ // Validators
14
+ exports.integerArgument = factories_1.createIntegerValidator(test_run_1.ActionIntegerArgumentError);
15
+ exports.positiveIntegerArgument = factories_1.createPositiveIntegerValidator(test_run_1.ActionPositiveIntegerArgumentError);
16
+ exports.booleanArgument = factories_1.createBooleanValidator(test_run_1.ActionBooleanArgumentError);
17
+ exports.setSpeedArgument = factories_1.createSpeedValidator(test_run_1.SetTestSpeedArgumentError);
18
+ function actionRoleArgument(name, val) {
19
+ if (!val || !val[marker_symbol_1.default])
20
+ throw new test_run_1.ActionRoleArgumentError(name, typeof val);
21
+ }
22
+ exports.actionRoleArgument = actionRoleArgument;
23
+ function actionOptions(name, val) {
24
+ const type = typeof val;
25
+ if (type !== 'object' && val !== null && val !== void 0)
26
+ throw new test_run_1.ActionOptionsTypeError(type);
27
+ }
28
+ exports.actionOptions = actionOptions;
29
+ function stringArgument(argument, val, createError) {
30
+ if (!createError)
31
+ createError = actualValue => new test_run_1.ActionStringArgumentError(argument, actualValue);
32
+ const type = typeof val;
33
+ if (type !== 'string')
34
+ throw createError(type);
35
+ }
36
+ exports.stringArgument = stringArgument;
37
+ function nonEmptyStringArgument(argument, val, createError) {
38
+ if (!createError)
39
+ createError = actualValue => new test_run_1.ActionStringArgumentError(argument, actualValue);
40
+ stringArgument(argument, val, createError);
41
+ if (!val.length)
42
+ throw createError('""');
43
+ }
44
+ exports.nonEmptyStringArgument = nonEmptyStringArgument;
45
+ function nullableStringArgument(argument, val) {
46
+ const type = typeof val;
47
+ if (type !== 'string' && val !== null)
48
+ throw new test_run_1.ActionNullableStringArgumentError(argument, type);
49
+ }
50
+ exports.nullableStringArgument = nullableStringArgument;
51
+ function urlArgument(name, val) {
52
+ nonEmptyStringArgument(name, val);
53
+ test_page_url_1.assertPageUrl(val.trim(), 'navigateTo');
54
+ }
55
+ exports.urlArgument = urlArgument;
56
+ function stringOrStringArrayArgument(argument, val) {
57
+ const type = typeof val;
58
+ if (type === 'string') {
59
+ if (!val.length)
60
+ throw new test_run_1.ActionStringOrStringArrayArgumentError(argument, '""');
61
+ }
62
+ else if (Array.isArray(val)) {
63
+ if (!val.length)
64
+ throw new test_run_1.ActionStringOrStringArrayArgumentError(argument, '[]');
65
+ const validateElement = elementIndex => nonEmptyStringArgument(argument, val[elementIndex], actualValue => new test_run_1.ActionStringArrayElementError(argument, actualValue, elementIndex));
66
+ for (let i = 0; i < val.length; i++)
67
+ validateElement(i);
68
+ }
69
+ else
70
+ throw new test_run_1.ActionStringOrStringArrayArgumentError(argument, type);
71
+ }
72
+ exports.stringOrStringArrayArgument = stringOrStringArrayArgument;
73
+ function resizeWindowDeviceArgument(name, val) {
74
+ nonEmptyStringArgument(name, val);
75
+ if (!device_specs_1.isValidDeviceName(val))
76
+ throw new test_run_1.ActionUnsupportedDeviceTypeError(name, val);
77
+ }
78
+ exports.resizeWindowDeviceArgument = resizeWindowDeviceArgument;
79
+ function screenshotPathArgument(name, val) {
80
+ nonEmptyStringArgument(name, val);
81
+ const forbiddenCharsList = check_file_path_1.default(val);
82
+ if (forbiddenCharsList.length)
83
+ throw new test_run_1.ForbiddenCharactersInScreenshotPathError(val, forbiddenCharsList);
84
+ }
85
+ exports.screenshotPathArgument = screenshotPathArgument;
86
+ function functionArgument(name, val) {
87
+ if (typeof val !== 'function')
88
+ throw new test_run_1.ActionFunctionArgumentError(name, val);
89
+ }
90
+ exports.functionArgument = functionArgument;
91
91
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJndW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGVzdC1ydW4vY29tbWFuZHMvdmFsaWRhdGlvbnMvYXJndW1lbnQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsK0NBQWlEO0FBQ2pELGdGQUEyRDtBQUUzRCwyQ0FLcUI7QUFFckIsdURBY2tDO0FBRWxDLDhEQUEyRDtBQUMzRCxxRkFBMkQ7QUFHM0QsYUFBYTtBQUNBLFFBQUEsZUFBZSxHQUFXLGtDQUFzQixDQUFDLHFDQUEwQixDQUFDLENBQUM7QUFDN0UsUUFBQSx1QkFBdUIsR0FBRywwQ0FBOEIsQ0FBQyw2Q0FBa0MsQ0FBQyxDQUFDO0FBQzdGLFFBQUEsZUFBZSxHQUFXLGtDQUFzQixDQUFDLHFDQUEwQixDQUFDLENBQUM7QUFDN0UsUUFBQSxnQkFBZ0IsR0FBVSxnQ0FBb0IsQ0FBQyxvQ0FBeUIsQ0FBQyxDQUFDO0FBR3ZGLFNBQWdCLGtCQUFrQixDQUFFLElBQUksRUFBRSxHQUFHO0lBQ3pDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsdUJBQWdCLENBQUM7UUFDOUIsTUFBTSxJQUFJLGtDQUF1QixDQUFDLElBQUksRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFIRCxnREFHQztBQUVELFNBQWdCLGFBQWEsQ0FBRSxJQUFJLEVBQUUsR0FBRztJQUNwQyxNQUFNLElBQUksR0FBRyxPQUFPLEdBQUcsQ0FBQztJQUV4QixJQUFJLElBQUksS0FBSyxRQUFRLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssS0FBSyxDQUFDO1FBQ25ELE1BQU0sSUFBSSxpQ0FBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBTEQsc0NBS0M7QUFHRCxTQUFnQixjQUFjLENBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxXQUFXO0lBQ3RELElBQUksQ0FBQyxXQUFXO1FBQ1osV0FBVyxH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LHlCQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFOUMsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNO1FBQ3pCLE1BQU0sSUFBSSxtREFBd0MsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztBQUNwRixDQUFDO0FBUEQsd0RBT0M7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBRSxJQUFJLEVBQUUsR0FBRztJQUN2QyxJQUFJLE9BQU8sR0FBRyxLQUFLLFVBQVU7UUFDekIsTUFBTSxJQUFJLHNDQUEyQixDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN6RCxDQUFDO0FBSEQsNENBR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1ZhbGlkRGV2aWNlTmFtZSB9IGZyb20gJ2RldmljZS1zcGVjcyc7XG5pbXBvcnQgcm9sZU1hcmtlclN5bWJvbCBmcm9tICcuLi8uLi8uLi9yb2xlL21hcmtlci1zeW1ib2wnO1xuXG5pbXBvcnQge1xuICAgIGNyZWF0ZUJvb2xlYW5WYWxpZGF0b3IsXG4gICAgY3JlYXRlSW50ZWdlclZhbGlkYXRvcixcbiAgICBjcmVhdGVQb3NpdGl2ZUludGVnZXJWYWxpZGF0b3IsXG4gICAgY3JlYXRlU3BlZWRWYWxpZGF0b3Jcbn0gZnJvbSAnLi9mYWN0b3JpZXMnO1xuXG5pbXBvcnQge1xuICAgIEFjdGlvbk9wdGlvbnNUeXBlRXJyb3IsXG4gICAgQWN0aW9uQm9vbGVhbkFyZ3VtZW50RXJyb3IsXG4gICAgQWN0aW9uU3RyaW5nQXJndW1lbnRFcnJvcixcbiAgICBBY3Rpb25OdWxsYWJsZVN0cmluZ0FyZ3VtZW50RXJyb3IsXG4gICAgQWN0aW9uSW50ZWdlckFyZ3VtZW50RXJyb3IsXG4gICAgQWN0aW9uUm9sZUFyZ3VtZW50RXJyb3IsXG4gICAgQWN0aW9uUG9zaXRpdmVJbnRlZ2VyQXJndW1lbnRFcnJvcixcbiAgICBBY3Rpb25TdHJpbmdPclN0cmluZ0FycmF5QXJndW1lbnRFcnJvcixcbiAgICBBY3Rpb25TdHJpbmdBcnJheUVsZW1lbnRFcnJvcixcbiAgICBBY3Rpb25VbnN1cHBvcnRlZERldmljZVR5cGVFcnJvcixcbiAgICBBY3Rpb25GdW5jdGlvbkFyZ3VtZW50RXJyb3IsXG4gICAgU2V0VGVzdFNwZWVkQXJndW1lbnRFcnJvcixcbiAgICBGb3JiaWRkZW5DaGFyYWN0ZXJzSW5TY3JlZW5zaG90UGF0aEVycm9yXG59IGZyb20gJy4uLy4uLy4uL2Vycm9ycy90ZXN0LXJ1bic7XG5cbmltcG9ydCB7IGFzc2VydFBhZ2VVcmwgfSBmcm9tICcuLi8uLi8uLi9hcGkvdGVzdC1wYWdlLXVybCc7XG5pbXBvcnQgY2hlY2tGaWxlUGF0aCBmcm9tICcuLi8uLi8uLi91dGlscy9jaGVjay1maWxlLXBhdGgnO1xuXG5cbi8vIFZhbGlkYXRvcnNcbmV4cG9ydCBjb25zdCBpbnRlZ2VyQXJndW1lbnQgICAgICAgICA9IGNyZWF0ZUludGVnZXJWYWxpZGF0b3IoQWN0aW9uSW50ZWdlckFyZ3VtZW50RXJyb3IpO1xuZXhwb3J0IGNvbnN0IHBvc2l0aXZlSW50ZWdlckFyZ3VtZW50ID0gY3JlYXRlUG9zaXRpdmVJbnRlZ2VyVmFsaWRhdG9yKEFjdGlvblBvc2l0aXZlSW50ZWdlckFyZ3VtZW50RXJyb3IpO1xuZXhwb3J0IGNvbnN0IGJvb2xlYW5Bcmd1bWVudCAgICAgICAgID0gY3JlYXRlQm9vbGVhblZhbGlkYXRvcihBY3Rpb25Cb29sZWFuQXJndW1lbnRFcnJvcik7XG5leHBvcnQgY29uc3Qgc2V0U3BlZWRBcmd1bWVudCAgICAgICAgPSBjcmVhdGVTcGVlZFZhbGlkYXRvcihTZXRUZXN0U3BlZWRBcmd1bWVudEVycm9yKTtcblxuXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uUm9sZUFyZ3VtZW50IChuYW1lLCB2YWwpIHtcbiAgICBpZiAoIXZhbCB8fCAhdmFsW3JvbGVNYXJrZXJTeW1ib2xdKVxuICAgICAgICB0aHJvdyBuZXcgQWN0aW9uUm9sZUFyZ3VtZW50RXJyb3IobmFtZSwgdHlwZW9mIHZhbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhY3Rpb25PcHRpb25zIChuYW1lLCB2YWwpIHtcbiAgICBjb25zdCB0eXBlID0gdHlwZW9mIHZhbDtcblxuICAgIGlmICh0eXBlICE9PSAnb2JqZWN0JyAmJiB2YWwgIT09IG51bGwgJiYgdmFsICE9PSB2b2lkIDApXG4gICAgICAgIHRocm93IG5ldyBBY3Rpb25PcHRpb25zVHlwZUVycm9yKHR5cGUpO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdBcmd1bWVudCAoYXJndW1lbnQsIHZhbCwgY3JlYXRlRXJyb3IpIHtcbiAgICBpZiAoIWNyZWF0ZUVycm9yKVxuICAgICAgICBjcmVhdGVFcnJvciA9IGFjdHVhbFZhbHVlID0+IG5ldyBBY3Rpb25TdHJpbmdBcmd1bWVudEVycm9yKGFyZ3VtZW50LCBhY3R1YWxWYWx1ZSk7XG5cbiAgICBjb25zdCB0eXBlID0gdHlwZW9mIHZhbDtcblxuICAgIGlmICh0eXBlICE9PSAnc3RyaW5nJylcbiAgICAgICAgdGhyb3cgY3JlYXRlRXJyb3IodHlwZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub25FbXB0eVN0cmluZ0FyZ3VtZW50IChhcmd1bWVudCwgdmFsLCBjcmVhdGVFcnJvcikge1xuICAgIGlmICghY3JlYXRlRXJyb3IpXG4gICAgICAgIGNyZWF0ZUVycm9yID0gYWN0dWFsVmFsdWUgPT4gbmV3IEFjdGlvblN0cmluZ0FyZ3VtZW50RXJyb3IoYXJndW1lbnQsIGFjdHVhbFZhbHVlKTtcblxuICAgIHN0cmluZ0FyZ3VtZW50KGFyZ3VtZW50LCB2YWwsIGNyZWF0ZUVycm9yKTtcblxuICAgIGlmICghdmFsLmxlbmd0aClcbiAgICAgICAgdGhyb3cgY3JlYXRlRXJyb3IoJ1wiXCInKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG51bGxhYmxlU3RyaW5nQXJndW1lbnQgKGFyZ3VtZW50LCB2YWwpIHtcbiAgICBjb25zdCB0eXBlID0gdHlwZW9mIHZhbDtcblxuICAgIGlmICh0eXBlICE9PSAnc3RyaW5nJyAmJiB2YWwgIT09IG51bGwpXG4gICAgICAgIHRocm93IG5ldyBBY3Rpb25OdWxsYWJsZVN0cmluZ0FyZ3VtZW50RXJyb3IoYXJndW1lbnQsIHR5cGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXJsQXJndW1lbnQgKG5hbWUsIHZhbCkge1xuICAgIG5vbkVtcHR5U3RyaW5nQXJndW1lbnQobmFtZSwgdmFsKTtcblxuICAgIGFzc2VydFBhZ2VVcmwodmFsLnRyaW0oKSwgJ25hdmlnYXRlVG8nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ09yU3RyaW5nQXJyYXlBcmd1bWVudCAoYXJndW1lbnQsIHZhbCkge1xuICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsO1xuXG4gICAgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmICghdmFsLmxlbmd0aClcbiAgICAgICAgICAgIHRocm93IG5ldyBBY3Rpb25TdHJpbmdPclN0cmluZ0FycmF5QXJndW1lbnRFcnJvcihhcmd1bWVudCwgJ1wiXCInKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgICAgaWYgKCF2YWwubGVuZ3RoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEFjdGlvblN0cmluZ09yU3RyaW5nQXJyYXlBcmd1bWVudEVycm9yKGFyZ3VtZW50LCAnW10nKTtcblxuICAgICAgICBjb25zdCB2YWxpZGF0ZUVsZW1lbnQgPSBlbGVtZW50SW5kZXggPT4gbm9uRW1wdHlTdHJpbmdBcmd1bWVudChcbiAgICAgICAgICAgIGFyZ3VtZW50LFxuICAgICAgICAgICAgdmFsW2VsZW1lbnRJbmRleF0sXG4gICAgICAgICAgICBhY3R1YWxWYWx1ZSA9PiBuZXcgQWN0aW9uU3RyaW5nQXJyYXlFbGVtZW50RXJyb3IoYXJndW1lbnQsIGFjdHVhbFZhbHVlLCBlbGVtZW50SW5kZXgpXG4gICAgICAgICk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWwubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB2YWxpZGF0ZUVsZW1lbnQoaSk7XG4gICAgfVxuXG4gICAgZWxzZVxuICAgICAgICB0aHJvdyBuZXcgQWN0aW9uU3RyaW5nT3JTdHJpbmdBcnJheUFyZ3VtZW50RXJyb3IoYXJndW1lbnQsIHR5cGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzaXplV2luZG93RGV2aWNlQXJndW1lbnQgKG5hbWUsIHZhbCkge1xuICAgIG5vbkVtcHR5U3RyaW5nQXJndW1lbnQobmFtZSwgdmFsKTtcblxuICAgIGlmICghaXNWYWxpZERldmljZU5hbWUodmFsKSlcbiAgICAgICAgdGhyb3cgbmV3IEFjdGlvblVuc3VwcG9ydGVkRGV2aWNlVHlwZUVycm9yKG5hbWUsIHZhbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY3JlZW5zaG90UGF0aEFyZ3VtZW50IChuYW1lLCB2YWwpIHtcbiAgICBub25FbXB0eVN0cmluZ0FyZ3VtZW50KG5hbWUsIHZhbCk7XG5cbiAgICBjb25zdCBmb3JiaWRkZW5DaGFyc0xpc3QgPSBjaGVja0ZpbGVQYXRoKHZhbCk7XG5cbiAgICBpZiAoZm9yYmlkZGVuQ2hhcnNMaXN0Lmxlbmd0aClcbiAgICAgICAgdGhyb3cgbmV3IEZvcmJpZGRlbkNoYXJhY3RlcnNJblNjcmVlbnNob3RQYXRoRXJyb3IodmFsLCBmb3JiaWRkZW5DaGFyc0xpc3QpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnVuY3Rpb25Bcmd1bWVudCAobmFtZSwgdmFsKSB7XG4gICAgaWYgKHR5cGVvZiB2YWwgIT09ICdmdW5jdGlvbicpXG4gICAgICAgIHRocm93IG5ldyBBY3Rpb25GdW5jdGlvbkFyZ3VtZW50RXJyb3IobmFtZSwgdmFsKTtcbn1cbiJdfQ==