testcafe 1.14.1 → 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 (332) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/LICENSE +21 -21
  3. package/bin/testcafe-with-v8-flag-filter.js +0 -0
  4. package/lib/api/exportable-lib/index.js +49 -49
  5. package/lib/api/request-hooks/assert-type.js +7 -7
  6. package/lib/api/request-hooks/hook-method-names.js +9 -9
  7. package/lib/api/request-hooks/hook.js +32 -32
  8. package/lib/api/request-hooks/interfaces.js +2 -2
  9. package/lib/api/request-hooks/request-logger.js +112 -112
  10. package/lib/api/request-hooks/request-mock/create-request-mock.js +10 -10
  11. package/lib/api/request-hooks/request-mock/index.js +44 -44
  12. package/lib/api/request-hooks/request-mock.js +46 -46
  13. package/lib/api/structure/base-unit.js +11 -11
  14. package/lib/api/structure/fixture.js +75 -75
  15. package/lib/api/structure/interfaces.js +2 -2
  16. package/lib/api/structure/test-file.js +31 -31
  17. package/lib/api/structure/test-timeout.js +9 -9
  18. package/lib/api/structure/test.js +85 -85
  19. package/lib/api/structure/testing-unit.js +89 -89
  20. package/lib/api/structure/unit-type.js +9 -9
  21. package/lib/api/test-controller/assertion.js +88 -88
  22. package/lib/api/test-controller/execution-context.js +82 -82
  23. package/lib/api/test-controller/index.js +358 -358
  24. package/lib/api/test-controller/proxy.js +28 -28
  25. package/lib/api/test-page-url.js +60 -60
  26. package/lib/api/test-run-tracker.js +68 -68
  27. package/lib/api/wrap-test-function.js +49 -49
  28. package/lib/assertions/executor.js +74 -74
  29. package/lib/assertions/get-fn.js +46 -46
  30. package/lib/assertions/type.js +20 -20
  31. package/lib/assets/content-types.js +9 -9
  32. package/lib/assets/injectables.js +18 -18
  33. package/lib/browser/connection/command.js +10 -10
  34. package/lib/browser/connection/error-hints.js +9 -9
  35. package/lib/browser/connection/gateway.js +159 -159
  36. package/lib/browser/connection/get-hints.js +33 -33
  37. package/lib/browser/connection/heartbeat-status.js +8 -8
  38. package/lib/browser/connection/index.js +328 -328
  39. package/lib/browser/connection/remotes-queue.js +46 -46
  40. package/lib/browser/connection/service-routes.js +12 -12
  41. package/lib/browser/connection/status.js +12 -12
  42. package/lib/browser/interfaces.js +2 -2
  43. package/lib/browser/provider/built-in/dedicated/base.js +80 -80
  44. package/lib/browser/provider/built-in/dedicated/chrome/browser-client.js +204 -204
  45. package/lib/browser/provider/built-in/dedicated/chrome/build-chrome-args.js +17 -17
  46. package/lib/browser/provider/built-in/dedicated/chrome/config.js +110 -110
  47. package/lib/browser/provider/built-in/dedicated/chrome/create-temp-profile.js +45 -45
  48. package/lib/browser/provider/built-in/dedicated/chrome/elapsed-upperbounds.js +15 -15
  49. package/lib/browser/provider/built-in/dedicated/chrome/index.js +102 -102
  50. package/lib/browser/provider/built-in/dedicated/chrome/interfaces.js +2 -2
  51. package/lib/browser/provider/built-in/dedicated/chrome/local-chrome.js +24 -24
  52. package/lib/browser/provider/built-in/dedicated/chrome/runtime-info.js +29 -29
  53. package/lib/browser/provider/built-in/dedicated/edge/index.js +10 -10
  54. package/lib/browser/provider/built-in/dedicated/edge/runtime-info.js +29 -29
  55. package/lib/browser/provider/built-in/dedicated/firefox/config.js +33 -33
  56. package/lib/browser/provider/built-in/dedicated/firefox/create-temp-profile.js +78 -78
  57. package/lib/browser/provider/built-in/dedicated/firefox/index.js +73 -73
  58. package/lib/browser/provider/built-in/dedicated/firefox/local-firefox.js +36 -36
  59. package/lib/browser/provider/built-in/dedicated/firefox/marionette-client/commands.js +13 -13
  60. package/lib/browser/provider/built-in/dedicated/firefox/marionette-client/index.js +200 -200
  61. package/lib/browser/provider/built-in/dedicated/firefox/runtime-info.js +17 -17
  62. package/lib/browser/provider/built-in/index.js +21 -21
  63. package/lib/browser/provider/built-in/locally-installed.js +30 -30
  64. package/lib/browser/provider/built-in/path.js +47 -47
  65. package/lib/browser/provider/built-in/remote.js +58 -58
  66. package/lib/browser/provider/index.js +303 -303
  67. package/lib/browser/provider/parse-provider-name.js +16 -16
  68. package/lib/browser/provider/plugin-host.js +121 -121
  69. package/lib/browser/provider/pool.js +115 -115
  70. package/lib/browser/provider/utils/argument-parsing.js +74 -74
  71. package/lib/browser/provider/utils/browser-starter.js +34 -34
  72. package/lib/browser/provider/utils/client-functions.js +24 -24
  73. package/lib/browser/provider/utils/get-maximized-headless-window-size.js +9 -9
  74. package/lib/cli/argument-parser.js +284 -284
  75. package/lib/cli/authentication-helper.js +35 -35
  76. package/lib/cli/cli.js +134 -134
  77. package/lib/cli/correct-browsers-and-sources.js +40 -40
  78. package/lib/cli/index.js +19 -19
  79. package/lib/cli/log.js +43 -43
  80. package/lib/cli/remotes-wizard.js +36 -36
  81. package/lib/cli/termination-handler.js +38 -38
  82. package/lib/client/automation/index.js +34 -16
  83. package/lib/client/automation/index.min.js +1 -1
  84. package/lib/client/browser/idle-page/index.html.mustache +35 -35
  85. package/lib/client/browser/idle-page/logo.svg +86 -86
  86. package/lib/client/core/index.js +14 -14
  87. package/lib/client/driver/index.js +46 -16
  88. package/lib/client/driver/index.min.js +1 -1
  89. package/lib/client/driver/internal-properties.js +9 -9
  90. package/lib/client/test-run/iframe.js.mustache +17 -17
  91. package/lib/client/test-run/index.js.mustache +51 -51
  92. package/lib/client/ui/index.js +14 -14
  93. package/lib/client/ui/sprite.svg +42 -42
  94. package/lib/client-functions/builder-symbol.js +4 -4
  95. package/lib/client-functions/client-function-builder.js +155 -155
  96. package/lib/client-functions/replicator.js +61 -61
  97. package/lib/client-functions/return-single-prop-mode.js +8 -8
  98. package/lib/client-functions/selector-api-execution-mode.js +20 -20
  99. package/lib/client-functions/selectors/add-api.js +645 -645
  100. package/lib/client-functions/selectors/create-snapshot-methods.js +13 -13
  101. package/lib/client-functions/selectors/prepare-api-args.js +20 -20
  102. package/lib/client-functions/selectors/selector-attribute-filter.js +22 -22
  103. package/lib/client-functions/selectors/selector-builder.js +153 -153
  104. package/lib/client-functions/selectors/selector-text-filter.js +43 -43
  105. package/lib/client-functions/selectors/snapshot-properties.js +48 -48
  106. package/lib/client-functions/types.js +18 -18
  107. package/lib/compiler/babel/format-babel-produced-code.js +10 -10
  108. package/lib/compiler/babel/get-base-babel-options.js +11 -11
  109. package/lib/compiler/babel/load-libs.js +63 -63
  110. package/lib/compiler/babel/preset-stage-2.js +19 -19
  111. package/lib/compiler/compile-client-function.js +73 -73
  112. package/lib/compiler/compilers.js +33 -33
  113. package/lib/compiler/index.js +92 -92
  114. package/lib/compiler/interfaces.js +2 -2
  115. package/lib/compiler/test-file/api-based.js +146 -146
  116. package/lib/compiler/test-file/base.js +36 -36
  117. package/lib/compiler/test-file/exportble-lib-path.js +5 -5
  118. package/lib/compiler/test-file/formats/coffeescript/compiler.js +38 -38
  119. package/lib/compiler/test-file/formats/coffeescript/get-test-list.js +29 -29
  120. package/lib/compiler/test-file/formats/es-next/compiler.js +42 -42
  121. package/lib/compiler/test-file/formats/es-next/get-test-list.js +166 -166
  122. package/lib/compiler/test-file/formats/es-next/is-flow-code.js +7 -7
  123. package/lib/compiler/test-file/formats/raw.js +85 -85
  124. package/lib/compiler/test-file/formats/typescript/compiler.js +135 -135
  125. package/lib/compiler/test-file/formats/typescript/get-test-list.js +185 -185
  126. package/lib/compiler/test-file/test-file-parser-base.js +214 -214
  127. package/lib/configuration/configuration-base.js +165 -165
  128. package/lib/configuration/constants.js +9 -9
  129. package/lib/configuration/customizable-compilers.js +7 -7
  130. package/lib/configuration/default-values.js +51 -51
  131. package/lib/configuration/interfaces.js +2 -2
  132. package/lib/configuration/option-names.js +53 -53
  133. package/lib/configuration/option-source.js +9 -9
  134. package/lib/configuration/option.js +14 -14
  135. package/lib/configuration/quarantine-option-names.js +8 -8
  136. package/lib/configuration/run-option-names.js +26 -26
  137. package/lib/configuration/screenshot-option-names.js +10 -10
  138. package/lib/configuration/testcafe-configuration.js +163 -163
  139. package/lib/configuration/types.js +2 -2
  140. package/lib/configuration/typescript-configuration.js +62 -62
  141. package/lib/custom-client-scripts/assert-type.js +7 -7
  142. package/lib/custom-client-scripts/client-script-init.js +2 -2
  143. package/lib/custom-client-scripts/client-script.js +106 -106
  144. package/lib/custom-client-scripts/get-code.js +11 -11
  145. package/lib/custom-client-scripts/get-url.js +6 -6
  146. package/lib/custom-client-scripts/load.js +15 -15
  147. package/lib/custom-client-scripts/problematic-scripts.js +2 -2
  148. package/lib/custom-client-scripts/routing.js +36 -36
  149. package/lib/custom-client-scripts/utils.js +60 -60
  150. package/lib/embedding-utils.js +83 -83
  151. package/lib/errors/create-stack-filter.js +18 -18
  152. package/lib/errors/error-list.js +26 -26
  153. package/lib/errors/get-callsite.js +31 -31
  154. package/lib/errors/internal-modules-prefix.js +8 -8
  155. package/lib/errors/is-internal-stack-frame.js +45 -45
  156. package/lib/errors/process-test-fn-error.js +37 -37
  157. package/lib/errors/runtime/index.js +123 -123
  158. package/lib/errors/runtime/templates.js +115 -115
  159. package/lib/errors/runtime/type-assertions.js +112 -112
  160. package/lib/errors/stack-cleaning-hook.js +64 -64
  161. package/lib/errors/test-run/formattable-adapter.js +59 -59
  162. package/lib/errors/test-run/index.js +301 -301
  163. package/lib/errors/test-run/render-error-template.js +31 -31
  164. package/lib/errors/test-run/templates.js +91 -91
  165. package/lib/errors/test-run/utils.js +89 -89
  166. package/lib/errors/types.js +156 -156
  167. package/lib/index.js +81 -81
  168. package/lib/live/bootstrapper.js +43 -43
  169. package/lib/live/controller.js +107 -107
  170. package/lib/live/file-watcher/index.js +67 -67
  171. package/lib/live/file-watcher/modules-graph.js +58 -58
  172. package/lib/live/keyboard-observer.js +76 -76
  173. package/lib/live/logger/index.js +64 -64
  174. package/lib/live/test-run-controller.js +96 -96
  175. package/lib/live/test-run-state.js +6 -6
  176. package/lib/live/test-run.js +56 -56
  177. package/lib/live/test-runner.js +167 -167
  178. package/lib/load-assets.js +29 -29
  179. package/lib/notifications/add-rendered-warning.js +16 -16
  180. package/lib/notifications/debug-logger.js +78 -78
  181. package/lib/notifications/deprecated.js +24 -24
  182. package/lib/notifications/information-message.js +9 -9
  183. package/lib/notifications/warning-log.js +31 -31
  184. package/lib/notifications/warning-message.js +47 -47
  185. package/lib/reporter/command/command-formatter.js +120 -109
  186. package/lib/reporter/command/format-command.js +8 -8
  187. package/lib/reporter/command/interfaces.js +2 -2
  188. package/lib/reporter/index.js +319 -314
  189. package/lib/reporter/interfaces.js +2 -2
  190. package/lib/reporter/plugin-host.js +135 -135
  191. package/lib/reporter/plugin-methods.js +12 -12
  192. package/lib/role/index.js +74 -74
  193. package/lib/role/marker-symbol.js +7 -7
  194. package/lib/role/phase.js +9 -9
  195. package/lib/runner/bootstrapper.js +271 -271
  196. package/lib/runner/browser-job-result.js +9 -9
  197. package/lib/runner/browser-job.js +152 -152
  198. package/lib/runner/browser-set.js +114 -114
  199. package/lib/runner/fixture-hook-controller.js +85 -85
  200. package/lib/runner/index.js +449 -449
  201. package/lib/runner/interfaces.js +2 -2
  202. package/lib/runner/reporter-stream-controller.js +27 -27
  203. package/lib/runner/task/index.js +151 -151
  204. package/lib/runner/task/phase.js +9 -9
  205. package/lib/runner/test-run-controller.js +165 -165
  206. package/lib/runner/tested-app.js +72 -72
  207. package/lib/screenshots/capturer.js +141 -141
  208. package/lib/screenshots/constants.js +11 -11
  209. package/lib/screenshots/crop.js +111 -111
  210. package/lib/screenshots/default-extension.js +4 -4
  211. package/lib/screenshots/index.js +67 -67
  212. package/lib/screenshots/utils.js +39 -39
  213. package/lib/services/compiler/host.js +190 -190
  214. package/lib/services/compiler/io.js +9 -9
  215. package/lib/services/compiler/protocol.js +17 -16
  216. package/lib/services/compiler/service.js +225 -212
  217. package/lib/services/compiler/test-run-proxy.js +111 -111
  218. package/lib/services/interfaces.js +2 -2
  219. package/lib/services/process-title.js +8 -8
  220. package/lib/services/serialization/prepare-options.js +17 -17
  221. package/lib/services/serialization/replicator/create-replicator.js +25 -25
  222. package/lib/services/serialization/replicator/custom-error-transform.js +26 -26
  223. package/lib/services/serialization/test-structure.js +92 -92
  224. package/lib/services/utils/ipc/interfaces.js +30 -30
  225. package/lib/services/utils/ipc/io.js +108 -108
  226. package/lib/services/utils/ipc/message.js +75 -75
  227. package/lib/services/utils/ipc/packet.js +55 -55
  228. package/lib/services/utils/ipc/proxy.js +109 -109
  229. package/lib/services/utils/ipc/transport.js +64 -64
  230. package/lib/shared/errors/index.js +382 -382
  231. package/lib/shared/node-modules-folder-name.js +4 -4
  232. package/lib/test-run/bookmark.js +90 -90
  233. package/lib/test-run/browser-console-messages.js +73 -73
  234. package/lib/test-run/browser-manipulation-queue.js +92 -92
  235. package/lib/test-run/client-messages.js +9 -9
  236. package/lib/test-run/commands/actions.js +486 -483
  237. package/lib/test-run/commands/assertion.js +45 -45
  238. package/lib/test-run/commands/base.js +14 -14
  239. package/lib/test-run/commands/browser-manipulation.js +95 -95
  240. package/lib/test-run/commands/from-object.js +82 -82
  241. package/lib/test-run/commands/observation.js +61 -61
  242. package/lib/test-run/commands/options.js +231 -215
  243. package/lib/test-run/commands/service.js +54 -48
  244. package/lib/test-run/commands/type.js +65 -64
  245. package/lib/test-run/commands/utils.js +87 -87
  246. package/lib/test-run/commands/validations/argument.js +90 -90
  247. package/lib/test-run/commands/validations/factories.js +47 -47
  248. package/lib/test-run/commands/validations/initializers.js +44 -44
  249. package/lib/test-run/debug-log.js +32 -32
  250. package/lib/test-run/execute-js-expression.js +74 -74
  251. package/lib/test-run/index.js +823 -799
  252. package/lib/test-run/marker-symbol.js +7 -7
  253. package/lib/test-run/observed-callsites-storage.js +17 -17
  254. package/lib/test-run/phase.js +16 -16
  255. package/lib/test-run/session-controller.js +104 -104
  256. package/lib/testcafe.js +118 -118
  257. package/lib/utils/assignable.js +39 -39
  258. package/lib/utils/async-event-emitter.js +28 -28
  259. package/lib/utils/async-queue.js +14 -14
  260. package/lib/utils/browser-connection-timeouts.js +19 -19
  261. package/lib/utils/callsite.js +17 -17
  262. package/lib/utils/check-file-path.js +31 -31
  263. package/lib/utils/check-url.js +51 -51
  264. package/lib/utils/convert-to-best-fit-type.js +16 -16
  265. package/lib/utils/correct-file-path.js +21 -21
  266. package/lib/utils/define-lazy-property.js +13 -13
  267. package/lib/utils/delay.js +6 -6
  268. package/lib/utils/delegated-api.js +44 -44
  269. package/lib/utils/detect-display.js +6 -6
  270. package/lib/utils/detect-ffmpeg.js +44 -44
  271. package/lib/utils/diff/colors.js +29 -29
  272. package/lib/utils/diff/index.js +52 -52
  273. package/lib/utils/diff/util.js +23 -23
  274. package/lib/utils/diff.js +29 -29
  275. package/lib/utils/escape-user-agent.js +10 -10
  276. package/lib/utils/flag-list.js +17 -17
  277. package/lib/utils/get-any-key.js +8 -8
  278. package/lib/utils/get-browser.js +8 -8
  279. package/lib/utils/get-common-path.js +34 -34
  280. package/lib/utils/get-filter-fn.js +40 -40
  281. package/lib/utils/get-options/base.js +36 -36
  282. package/lib/utils/get-options/compiler.js +33 -33
  283. package/lib/utils/get-options/grep.js +15 -15
  284. package/lib/utils/get-options/index.js +20 -20
  285. package/lib/utils/get-options/meta.js +22 -22
  286. package/lib/utils/get-options/quarantine.js +91 -91
  287. package/lib/utils/get-options/screenshot.js +17 -17
  288. package/lib/utils/get-options/ssl.js +45 -45
  289. package/lib/utils/get-options/video.js +10 -10
  290. package/lib/utils/get-viewport-width.js +17 -17
  291. package/lib/utils/guard-time-execution.js +10 -10
  292. package/lib/utils/handle-errors.js +74 -74
  293. package/lib/utils/handle-tag-args.js +8 -8
  294. package/lib/utils/http.js +30 -30
  295. package/lib/utils/is-localhost.js +11 -11
  296. package/lib/utils/is-password-input.js +11 -0
  297. package/lib/utils/is-repl.js +10 -10
  298. package/lib/utils/is-window-in-iframe.js +6 -6
  299. package/lib/utils/limit-number.js +10 -10
  300. package/lib/utils/make-reg-exp.js +7 -7
  301. package/lib/utils/moment-loader.js +20 -20
  302. package/lib/utils/parse-file-list.js +71 -71
  303. package/lib/utils/parse-user-agent.js +55 -55
  304. package/lib/utils/path-pattern.js +114 -114
  305. package/lib/utils/prepare-reporters.js +30 -30
  306. package/lib/utils/prerender-callsite.js +18 -18
  307. package/lib/utils/process.js +119 -119
  308. package/lib/utils/promisified-functions.js +46 -46
  309. package/lib/utils/re-executable-promise.js +39 -39
  310. package/lib/utils/render-callsite-sync.js +29 -29
  311. package/lib/utils/render-template.js +9 -9
  312. package/lib/utils/reporter.js +30 -30
  313. package/lib/utils/resolve-path-relatively-cwd.js +7 -7
  314. package/lib/utils/string.js +105 -105
  315. package/lib/utils/temp-directory/cleanup-process/commands.js +7 -7
  316. package/lib/utils/temp-directory/cleanup-process/index.js +143 -143
  317. package/lib/utils/temp-directory/cleanup-process/worker.js +58 -58
  318. package/lib/utils/temp-directory/index.js +87 -87
  319. package/lib/utils/temp-directory/lockfile.js +56 -56
  320. package/lib/utils/thennable.js +7 -7
  321. package/lib/utils/timer.js +15 -15
  322. package/lib/utils/to-posix-path.js +8 -8
  323. package/lib/utils/types.js +2 -2
  324. package/lib/video-recorder/interfaces.js +2 -2
  325. package/lib/video-recorder/process.js +126 -126
  326. package/lib/video-recorder/recorder.js +136 -136
  327. package/lib/video-recorder/test-run-video-recorder.js +69 -69
  328. package/lib/video-recorder/videos.js +37 -37
  329. package/package.json +2 -2
  330. package/ts-defs/index.d.ts +25 -14
  331. package/ts-defs/selectors.d.ts +16 -5
  332. package/ts-defs/testcafe-scripts.d.ts +17 -6
@@ -1,3 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZXBvcnRlci9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXcml0YWJsZSBhcyBXcml0YWJsZVN0cmVhbSB9IGZyb20gJ3N0cmVhbSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0ZXJQbHVnaW4ge1xuICAgIHJlcG9ydFRhc2tTdGFydCgpOiB2b2lkO1xuICAgIHJlcG9ydEZpeHR1cmVTdGFydCgpOiB2b2lkO1xuICAgIHJlcG9ydFRlc3RTdGFydD8oKTogdm9pZDtcbiAgICByZXBvcnRUZXN0QWN0aW9uU3RhcnQ/KCk6IHZvaWQ7XG4gICAgcmVwb3J0VGVzdEFjdGlvbkRvbmU/KCk6IHZvaWQ7XG4gICAgcmVwb3J0VGVzdERvbmUoKTogdm9pZDtcbiAgICByZXBvcnRUYXNrRG9uZSgpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydGVyU291cmNlIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgb3V0cHV0Pzogc3RyaW5nIHwgV3JpdGFibGVTdHJlYW07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0ZXJQbHVnaW5Tb3VyY2Uge1xuICAgIHBsdWdpbjogUmVwb3J0ZXJQbHVnaW47XG4gICAgb3V0U3RyZWFtPzogV3JpdGFibGVTdHJlYW07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0ZXJQbHVnaW5GYWN0b3J5IHtcbiAgICAoKTogUmVwb3J0ZXJQbHVnaW47XG59XG4iXX0=
@@ -1,137 +1,137 @@
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
- const chalk_1 = __importDefault(require("chalk"));
7
- const indent_string_1 = __importDefault(require("indent-string"));
8
- const lodash_1 = require("lodash");
9
- const moment_loader_1 = __importDefault(require("../utils/moment-loader"));
10
- const os_family_1 = __importDefault(require("os-family"));
11
- const string_1 = require("../utils/string");
12
- const get_viewport_width_1 = __importDefault(require("../utils/get-viewport-width"));
13
- const colors_1 = require("../utils/diff/colors");
14
- // NOTE: we should not expose internal state to
15
- // the plugin, to avoid accidental rewrites.
16
- // Therefore we use symbols to store them.
17
- const stream = Symbol();
18
- const wordWrapEnabled = Symbol();
19
- const indent = Symbol();
20
- const errorDecorator = Symbol();
21
- class ReporterPluginHost {
22
- constructor(plugin, outStream, name) {
23
- this.name = name;
24
- this.streamController = null;
25
- this[stream] = outStream || process.stdout;
26
- this[wordWrapEnabled] = false;
27
- this[indent] = 0;
28
- const useColors = this[stream] === process.stdout && chalk_1.default.enabled && !plugin.noColors;
29
- this.chalk = new chalk_1.default.constructor({ enabled: useColors });
30
- this.moment = moment_loader_1.default;
31
- this.viewportWidth = get_viewport_width_1.default(this[stream]);
32
- this.symbols = os_family_1.default.win ?
33
- { ok: '√', err: '×' } :
34
- { ok: '✓', err: '✖' };
35
- lodash_1.assignIn(this, plugin);
36
- this[errorDecorator] = this.createErrorDecorator();
37
- }
38
- // Error decorator
39
- createErrorDecorator() {
40
- return {
41
- 'span user-agent': (str) => this.chalk.grey(str),
42
- 'span subtitle': (str) => `- ${this.chalk.bold.red(str)} -`,
43
- 'div message': (str) => this.chalk.bold.red(str),
44
- 'div screenshot-info': lodash_1.identity,
45
- 'a screenshot-path': (str) => this.chalk.grey.underline(str),
46
- 'code': lodash_1.identity,
47
- 'span syntax-string': (str) => this.chalk.green(str),
48
- 'span syntax-punctuator': (str) => this.chalk.grey(str),
49
- 'span syntax-keyword': (str) => this.chalk.cyan(str),
50
- 'span syntax-number': (str) => this.chalk.magenta(str),
51
- 'span syntax-regex': (str) => this.chalk.magenta(str),
52
- 'span syntax-comment': (str) => this.chalk.grey.bold(str),
53
- 'span syntax-invalid': (str) => this.chalk.inverse(str),
54
- [`span ${colors_1.DIFF_COLORS.DIFF_NOT_MODIFIED}`]: (str) => this.chalk.gray(str),
55
- [`span ${colors_1.DIFF_COLORS.DIFF_ADDED}`]: (str) => this.chalk.green(str),
56
- [`span ${colors_1.DIFF_COLORS.DIFF_REMOVED}`]: (str) => this.chalk.red(str),
57
- 'div code-frame': lodash_1.identity,
58
- 'div code-line': (str) => str + '\n',
59
- 'div code-line-last': lodash_1.identity,
60
- 'div code-line-num': (str) => ` ${str} |`,
61
- 'div code-line-num-base': (str) => this.chalk.bgRed(` > ${str} `) + '|',
62
- 'div code-line-src': lodash_1.identity,
63
- 'div stack': (str) => '\n\n' + str,
64
- 'div stack-line': (str) => str + '\n',
65
- 'div stack-line-last': lodash_1.identity,
66
- 'div stack-line-name': (str) => ` at ${this.chalk.bold(str)}`,
67
- 'div stack-line-location': (str) => ` (${this.chalk.grey.underline(str)})`,
68
- 'strong': (str) => this.chalk.bold(str),
69
- 'a': (str) => `"${this.chalk.underline(str)}"`
70
- };
71
- }
72
- // String helpers
73
- indentString(str, indentVal) {
74
- return indent_string_1.default(str, ' ', indentVal);
75
- }
76
- wordWrap(str, indentVal, width) {
77
- return string_1.wordWrap(str, indentVal, width);
78
- }
79
- escapeHtml(str) {
80
- return lodash_1.escape(str);
81
- }
82
- formatError(err, prefix = '') {
83
- const prefixLengthWithoutColors = string_1.removeTTYColors(prefix).length;
84
- const maxMsgLength = this.viewportWidth - this[indent] - prefixLengthWithoutColors;
85
- let msg = err.formatMessage(this[errorDecorator], maxMsgLength);
86
- if (this[wordWrapEnabled])
87
- msg = this.wordWrap(msg, prefixLengthWithoutColors, maxMsgLength);
88
- else
89
- msg = this.indentString(msg, prefixLengthWithoutColors);
90
- return prefix + msg.substr(prefixLengthWithoutColors);
91
- }
92
- // Writing helpers
93
- newline() {
94
- this._writeToUniqueStream('\n');
95
- return this;
96
- }
97
- write(text) {
98
- if (this[wordWrapEnabled])
99
- text = this.wordWrap(text, this[indent], this.viewportWidth);
100
- else
101
- text = this.indentString(text, this[indent]);
102
- this._writeToUniqueStream(text);
103
- return this;
104
- }
105
- useWordWrap(use) {
106
- this[wordWrapEnabled] = use;
107
- return this;
108
- }
109
- setIndent(val) {
110
- this[indent] = val;
111
- return this;
112
- }
113
- _writeToUniqueStream(text) {
114
- if (!this.streamController || this.streamController.ensureUniqueStream(this[stream], this))
115
- this[stream].write(text);
116
- }
117
- // Abstract methods implemented in plugin
118
- async reportTaskStart( /* startTime, userAgents, testCount, testStructure, taskProperties */) {
119
- throw new Error('Not implemented');
120
- }
121
- async reportFixtureStart( /* name, path */) {
122
- throw new Error('Not implemented');
123
- }
124
- // NOTE: It's an optional method
125
- // async reportTestStart (/* name, testMeta */) {
126
- // throw new Error('Not implemented');
127
- // }
128
- async reportTestDone( /* name, testRunInfo */) {
129
- throw new Error('Not implemented');
130
- }
131
- async reportTaskDone( /* endTime, passed, warnings */) {
132
- throw new Error('Not implemented');
133
- }
134
- }
135
- exports.default = ReporterPluginHost;
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
+ const chalk_1 = __importDefault(require("chalk"));
7
+ const indent_string_1 = __importDefault(require("indent-string"));
8
+ const lodash_1 = require("lodash");
9
+ const moment_loader_1 = __importDefault(require("../utils/moment-loader"));
10
+ const os_family_1 = __importDefault(require("os-family"));
11
+ const string_1 = require("../utils/string");
12
+ const get_viewport_width_1 = __importDefault(require("../utils/get-viewport-width"));
13
+ const colors_1 = require("../utils/diff/colors");
14
+ // NOTE: we should not expose internal state to
15
+ // the plugin, to avoid accidental rewrites.
16
+ // Therefore we use symbols to store them.
17
+ const stream = Symbol();
18
+ const wordWrapEnabled = Symbol();
19
+ const indent = Symbol();
20
+ const errorDecorator = Symbol();
21
+ class ReporterPluginHost {
22
+ constructor(plugin, outStream, name) {
23
+ this.name = name;
24
+ this.streamController = null;
25
+ this[stream] = outStream || process.stdout;
26
+ this[wordWrapEnabled] = false;
27
+ this[indent] = 0;
28
+ const useColors = this[stream] === process.stdout && chalk_1.default.enabled && !plugin.noColors;
29
+ this.chalk = new chalk_1.default.constructor({ enabled: useColors });
30
+ this.moment = moment_loader_1.default;
31
+ this.viewportWidth = get_viewport_width_1.default(this[stream]);
32
+ this.symbols = os_family_1.default.win ?
33
+ { ok: '√', err: '×' } :
34
+ { ok: '✓', err: '✖' };
35
+ lodash_1.assignIn(this, plugin);
36
+ this[errorDecorator] = this.createErrorDecorator();
37
+ }
38
+ // Error decorator
39
+ createErrorDecorator() {
40
+ return {
41
+ 'span user-agent': (str) => this.chalk.grey(str),
42
+ 'span subtitle': (str) => `- ${this.chalk.bold.red(str)} -`,
43
+ 'div message': (str) => this.chalk.bold.red(str),
44
+ 'div screenshot-info': lodash_1.identity,
45
+ 'a screenshot-path': (str) => this.chalk.grey.underline(str),
46
+ 'code': lodash_1.identity,
47
+ 'span syntax-string': (str) => this.chalk.green(str),
48
+ 'span syntax-punctuator': (str) => this.chalk.grey(str),
49
+ 'span syntax-keyword': (str) => this.chalk.cyan(str),
50
+ 'span syntax-number': (str) => this.chalk.magenta(str),
51
+ 'span syntax-regex': (str) => this.chalk.magenta(str),
52
+ 'span syntax-comment': (str) => this.chalk.grey.bold(str),
53
+ 'span syntax-invalid': (str) => this.chalk.inverse(str),
54
+ [`span ${colors_1.DIFF_COLORS.DIFF_NOT_MODIFIED}`]: (str) => this.chalk.gray(str),
55
+ [`span ${colors_1.DIFF_COLORS.DIFF_ADDED}`]: (str) => this.chalk.green(str),
56
+ [`span ${colors_1.DIFF_COLORS.DIFF_REMOVED}`]: (str) => this.chalk.red(str),
57
+ 'div code-frame': lodash_1.identity,
58
+ 'div code-line': (str) => str + '\n',
59
+ 'div code-line-last': lodash_1.identity,
60
+ 'div code-line-num': (str) => ` ${str} |`,
61
+ 'div code-line-num-base': (str) => this.chalk.bgRed(` > ${str} `) + '|',
62
+ 'div code-line-src': lodash_1.identity,
63
+ 'div stack': (str) => '\n\n' + str,
64
+ 'div stack-line': (str) => str + '\n',
65
+ 'div stack-line-last': lodash_1.identity,
66
+ 'div stack-line-name': (str) => ` at ${this.chalk.bold(str)}`,
67
+ 'div stack-line-location': (str) => ` (${this.chalk.grey.underline(str)})`,
68
+ 'strong': (str) => this.chalk.bold(str),
69
+ 'a': (str) => `"${this.chalk.underline(str)}"`
70
+ };
71
+ }
72
+ // String helpers
73
+ indentString(str, indentVal) {
74
+ return indent_string_1.default(str, ' ', indentVal);
75
+ }
76
+ wordWrap(str, indentVal, width) {
77
+ return string_1.wordWrap(str, indentVal, width);
78
+ }
79
+ escapeHtml(str) {
80
+ return lodash_1.escape(str);
81
+ }
82
+ formatError(err, prefix = '') {
83
+ const prefixLengthWithoutColors = string_1.removeTTYColors(prefix).length;
84
+ const maxMsgLength = this.viewportWidth - this[indent] - prefixLengthWithoutColors;
85
+ let msg = err.formatMessage(this[errorDecorator], maxMsgLength);
86
+ if (this[wordWrapEnabled])
87
+ msg = this.wordWrap(msg, prefixLengthWithoutColors, maxMsgLength);
88
+ else
89
+ msg = this.indentString(msg, prefixLengthWithoutColors);
90
+ return prefix + msg.substr(prefixLengthWithoutColors);
91
+ }
92
+ // Writing helpers
93
+ newline() {
94
+ this._writeToUniqueStream('\n');
95
+ return this;
96
+ }
97
+ write(text) {
98
+ if (this[wordWrapEnabled])
99
+ text = this.wordWrap(text, this[indent], this.viewportWidth);
100
+ else
101
+ text = this.indentString(text, this[indent]);
102
+ this._writeToUniqueStream(text);
103
+ return this;
104
+ }
105
+ useWordWrap(use) {
106
+ this[wordWrapEnabled] = use;
107
+ return this;
108
+ }
109
+ setIndent(val) {
110
+ this[indent] = val;
111
+ return this;
112
+ }
113
+ _writeToUniqueStream(text) {
114
+ if (!this.streamController || this.streamController.ensureUniqueStream(this[stream], this))
115
+ this[stream].write(text);
116
+ }
117
+ // Abstract methods implemented in plugin
118
+ async reportTaskStart( /* startTime, userAgents, testCount, testStructure, taskProperties */) {
119
+ throw new Error('Not implemented');
120
+ }
121
+ async reportFixtureStart( /* name, path */) {
122
+ throw new Error('Not implemented');
123
+ }
124
+ // NOTE: It's an optional method
125
+ // async reportTestStart (/* name, testMeta */) {
126
+ // throw new Error('Not implemented');
127
+ // }
128
+ async reportTestDone( /* name, testRunInfo */) {
129
+ throw new Error('Not implemented');
130
+ }
131
+ async reportTaskDone( /* endTime, passed, warnings */) {
132
+ throw new Error('Not implemented');
133
+ }
134
+ }
135
+ exports.default = ReporterPluginHost;
136
136
  module.exports = exports.default;
137
137
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWhvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVwb3J0ZXIvcGx1Z2luLWhvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBcUM7QUFDckMsa0VBQXlDO0FBRXpDLG1DQUlnQjtBQUVoQiwyRUFBNEM7QUFDNUMsMERBQTJCO0FBQzNCLDRDQUE0RDtBQUM1RCxxRkFBMkQ7QUFDM0QsaURBQW1EO0FBTW5ELCtDQUErQztBQUMvQyw0Q0FBNEM7QUFDNUMsMENBQTBDO0FBQzFDLE1BQU0sTUFBTSxHQUFZLE1BQU0sRUFBRSxDQUFDO0FBQ2pDLE1BQU0sZUFBZSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ2pDLE1BQU0sTUFBTSxHQUFZLE1BQU0sRUFBRSxDQUFDO0FBQ2pDLE1BQU0sY0FBYyxHQUFJLE1BQU0sRUFBRSxDQUFDO0FBT2pDLE1BQXFCLGtCQUFrQjtJQVluQyxZQUFvQixNQUFXLEVBQUUsU0FBbUIsRUFBRSxJQUFZO1FBQzlELElBQUksQ0FBQyxJQUFJLEdBQWUsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFZLFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ3BELElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFZLENBQUMsQ0FBQztRQUUxQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssT0FBTyxDQUFDLE1BQU0sSUFBSSxlQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUV2RixJQUFJLENBQUMsS0FBSyxHQUFXLElBQUksZUFBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FB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LENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0o7QUFsS0QscUNBa0tDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoYWxrLCB7IENoYWxrIH0gZnJvbSAnY2hhbGsnO1xuaW1wb3J0IGluZGVudFN0cmluZyBmcm9tICdpbmRlbnQtc3RyaW5nJztcblxuaW1wb3J0IHtcbiAgICBpZGVudGl0eSxcbiAgICBlc2NhcGUgYXMgZXNjYXBlSHRtbCxcbiAgICBhc3NpZ25JblxufSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgbW9tZW50IGZyb20gJy4uL3V0aWxzL21vbWVudC1sb2FkZXInO1xuaW1wb3J0IE9TIGZyb20gJ29zLWZhbWlseSc7XG5pbXBvcnQgeyB3b3JkV3JhcCwgcmVtb3ZlVFRZQ29sb3JzIH0gZnJvbSAnLi4vdXRpbHMvc3RyaW5nJztcbmltcG9ydCBnZXRWaWV3cG9ydFdpZHRoIGZyb20gJy4uL3V0aWxzL2dldC12aWV3cG9ydC13aWR0aCc7XG5pbXBvcnQgeyBESUZGX0NPTE9SUyB9IGZyb20gJy4uL3V0aWxzL2RpZmYvY29sb3JzJztcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgUmVwb3J0ZXJTdHJlYW1Db250cm9sbGVyIGZyb20gJy4uL3J1bm5lci9yZXBvcnRlci1zdHJlYW0tY29udHJvbGxlcic7XG5pbXBvcnQgeyBXcml0YWJsZSB9IGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgVGVzdFJ1bkVycm9yRm9ybWF0dGFibGVBZGFwdGVyIGZyb20gJy4uL2Vycm9ycy90ZXN0LXJ1bi9mb3JtYXR0YWJsZS1hZGFwdGVyJztcblxuLy8gTk9URTogd2Ugc2hvdWxkIG5vdCBleHBvc2UgaW50ZXJuYWwgc3RhdGUgdG9cbi8vIHRoZSBwbHVnaW4sIHRvIGF2b2lkIGFjY2lkZW50YWwgcmV3cml0ZXMuXG4vLyBUaGVyZWZvcmUgd2UgdXNlIHN5bWJvbHMgdG8gc3RvcmUgdGhlbS5cbmNvbnN0IHN0cmVhbSAgICAgICAgICA9IFN5bWJvbCgpO1xuY29uc3Qgd29yZFdyYXBFbmFibGVkID0gU3ltYm9sKCk7XG5jb25zdCBpbmRlbnQgICAgICAgICAgPSBTeW1ib2woKTtcbmNvbnN0IGVycm9yRGVjb3JhdG9yICA9IFN5bWJvbCgpO1xuXG5pbnRlcmZhY2UgUmVwb3J0ZXJTeW1ib2xzIHtcbiAgICBvazogc3RyaW5nO1xuICAgIGVycjogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZXBvcnRlclBsdWdpbkhvc3Qge1xuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gICAgcHVibGljIHN0cmVhbUNvbnRyb2xsZXI6IFJlcG9ydGVyU3RyZWFtQ29udHJvbGxlciB8IG51bGw7XG4gICAgcHVibGljIGNoYWxrOiBDaGFsaztcbiAgICBwdWJsaWMgbW9tZW50OiBNb21lbnQ7XG4gICAgcHVibGljIHZpZXdwb3J0V2lkdGg6IG51bWJlcjtcbiAgICBwdWJsaWMgc3ltYm9sczogUmVwb3J0ZXJTeW1ib2xzO1xuICAgIHByaXZhdGUgW3N0cmVhbV06IFdyaXRhYmxlO1xuICAgIHByaXZhdGUgW3dvcmRXcmFwRW5hYmxlZF06IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBbaW5kZW50XTogbnVtYmVyO1xuICAgIHByaXZhdGUgW2Vycm9yRGVjb3JhdG9yXTogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChwbHVnaW46IGFueSwgb3V0U3RyZWFtOiBXcml0YWJsZSwgbmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMubmFtZSAgICAgICAgICAgICA9IG5hbWU7XG4gICAgICAgIHRoaXMuc3RyZWFtQ29udHJvbGxlciA9IG51bGw7XG4gICAgICAgIHRoaXNbc3RyZWFtXSAgICAgICAgICA9IG91dFN0cmVhbSB8fCBwcm9jZXNzLnN0ZG91dDtcbiAgICAgICAgdGhpc1t3b3JkV3JhcEVuYWJsZWRdID0gZmFsc2U7XG4gICAgICAgIHRoaXNbaW5kZW50XSAgICAgICAgICA9IDA7XG5cbiAgICAgICAgY29uc3QgdXNlQ29sb3JzID0gdGhpc1tzdHJlYW1dID09PSBwcm9jZXNzLnN0ZG91dCAmJiBjaGFsay5lbmFibGVkICYmICFwbHVnaW4ubm9Db2xvcnM7XG5cbiAgICAgICAgdGhpcy5jaGFsayAgICAgICAgID0gbmV3IGNoYWxrLmNvbnN0cnVjdG9yKHsgZW5hYmxlZDogdXNlQ29sb3JzIH0pO1xuICAgICAgICB0aGlzLm1vbWVudCAgICAgICAgPSBtb21lbnQ7XG4gICAgICAgIHRoaXMudmlld3BvcnRXaWR0aCA9IGdldFZpZXdwb3J0V2lkdGgodGhpc1tzdHJlYW1dKTtcblxuICAgICAgICB0aGlzLnN5bWJvbHMgPSBPUy53aW4gP1xuICAgICAgICAgICAgeyBvazogJ+KImicsIGVycjogJ8OXJyB9IDpcbiAgICAgICAgICAgIHsgb2s6ICfinJMnLCBlcnI6ICfinJYnIH07XG5cbiAgICAgICAgYXNzaWduSW4odGhpcywgcGx1Z2luKTtcblxuICAgICAgICB0aGlzW2Vycm9yRGVjb3JhdG9yXSA9IHRoaXMuY3JlYXRlRXJyb3JEZWNvcmF0b3IoKTtcbiAgICB9XG5cbiAgICAvLyBFcnJvciBkZWNvcmF0b3JcbiAgICBwdWJsaWMgY3JlYXRlRXJyb3JEZWNvcmF0b3IgKCk6IFJlY29yZDxzdHJpbmcsIEZ1bmN0aW9uPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnc3BhbiB1c2VyLWFnZW50JzogKHN0cjogc3RyaW5nKSA9PiB0aGlzLmNoYWxrLmdyZXkoc3RyKSxcblxuICAgICAgICAgICAgJ3NwYW4gc3VidGl0bGUnOiAoc3RyOiBzdHJpbmcpID0+IGAtICR7dGhpcy5jaGFsay5ib2xkLnJlZChzdHIpfSAtYCxcbiAgICAgICAgICAgICdkaXYgbWVzc2FnZSc6ICAgKHN0cjogc3RyaW5nKSA9PiB0aGlzLmNoYWxrLmJvbGQucmVkKHN0ciksXG5cbiAgICAgICAgICAgICdkaXYgc2NyZWVuc2hvdC1pbmZvJzogaWRlbnRpdHksXG4gICAgICAgICAgICAnYSBzY3JlZW5zaG90LXBhdGgnOiAgIChzdHI6IHN0cmluZykgPT4gdGhpcy5jaGFsay5ncmV5LnVuZGVybGluZShzdHIpLFxuXG4gICAgICAgICAgICAnY29kZSc6IGlkZW50aXR5LFxuXG4gICAgICAgICAgICAnc3BhbiBzeW50YXgtc3RyaW5nJzogICAgIChzdHI6IHN0cmluZykgPT4gdGhpcy5jaGFsay5ncmVlbihzdHIpLFxuICAgICAgICAgICAgJ3NwYW4gc3ludGF4LXB1bmN0dWF0b3InOiAoc3RyOiBzdHJpbmcpID0+IHRoaXMuY2hhbGsuZ3JleShzdHIpLFxuICAgICAgICAgICAgJ3NwYW4gc3ludGF4LWtleXdvcmQnOiAgICAoc3RyOiBzdHJpbmcpID0+IHRoaXMuY2hhbGsuY3lhbihzdHIpLFxuICAgICAgICAgICAgJ3NwYW4gc3ludGF4LW51bWJlcic6ICAgICAoc3RyOiBzdHJpbmcpID0+IHRoaXMuY2hhbGsubWFnZW50YShzdHIpLFxuICAgICAgICAgICAgJ3NwYW4gc3ludGF4LXJlZ2V4JzogICAgICAoc3RyOiBzdHJpbmcpID0+IHRoaXMuY2hhbGsubWFnZW50YShzdHIpLFxuICAgICAgICAgICAgJ3NwYW4gc3ludGF4LWNvbW1lbnQnOiAgICAoc3RyOiBzdHJpbmcpID0+IHRoaXMuY2hhbGsuZ3JleS5ib2xkKHN0ciksXG4gICAgICAgICAgICAnc3BhbiBzeW50YXgtaW52YWxpZCc6ICAgIChzdHI6IHN0cmluZykgPT4gdGhpcy5jaGFsay5pbnZlcnNlKHN0ciksXG5cbiAgICAgICAgICAgIFtgc3BhbiAke0RJRkZfQ09MT1JTLkRJRkZfTk9UX01PRElGSUVEfWBdOiAoc3RyOiBzdHJpbmcpID0+IHRoaXMuY2hhbGsuZ3JheShzdHIpLFxuICAgICAgICAgICAgW2BzcGFuICR7RElGRl9DT0xPUlMuRElGRl9BRERFRH1gXTogICAgICAgIChzdHI6IHN0cmluZykgPT4gdGhpcy5jaGFsay5ncmVlbihzdHIpLFxuICAgICAgICAgICAgW2BzcGFuICR7RElGRl9DT0xPUlMuRElGRl9SRU1PVkVEfWBdOiAgICAgIChzdHI6IHN0cmluZykgPT4gdGhpcy5jaGFsay5yZWQoc3RyKSxcblxuICAgICAgICAgICAgJ2RpdiBjb2RlLWZyYW1lJzogICAgICAgICBpZGVudGl0eSxcbiAgICAgICAgICAgICdkaXYgY29kZS1saW5lJzogICAgICAgICAgKHN0cjogc3RyaW5nKSA9PiBzdHIgKyAnXFxuJyxcbiAgICAgICAgICAgICdkaXYgY29kZS1saW5lLWxhc3QnOiAgICAgaWRlbnRpdHksXG4gICAgICAgICAgICAnZGl2IGNvZGUtbGluZS1udW0nOiAgICAgIChzdHI6IHN0cmluZykgPT4gYCAgICR7c3RyfSB8YCxcbiAgICAgICAgICAgICdkaXYgY29kZS1saW5lLW51bS1iYXNlJzogKHN0cjogc3RyaW5nKSA9PiB0aGlzLmNoYWxrLmJnUmVkKGAgPiAke3N0cn0gYCkgKyAnfCcsXG4gICAgICAgICAgICAnZGl2IGNvZGUtbGluZS1zcmMnOiAgICAgIGlkZW50aXR5LFxuXG4gICAgICAgICAgICAnZGl2IHN0YWNrJzogICAgICAgICAgICAgICAoc3RyOiBzdHJpbmcpID0+ICdcXG5cXG4nICsgc3RyLFxuICAgICAgICAgICAgJ2RpdiBzdGFjay1saW5lJzogICAgICAgICAgKHN0cjogc3RyaW5nKSA9PiBzdHIgKyAnXFxuJyxcbiAgICAgICAgICAgICdkaXYgc3RhY2stbGluZS1sYXN0JzogICAgIGlkZW50aXR5LFxuICAgICAgICAgICAgJ2RpdiBzdGFjay1saW5lLW5hbWUnOiAgICAgKHN0cjogc3RyaW5nKSA9PiBgICAgYXQgJHt0aGlzLmNoYWxrLmJvbGQoc3RyKX1gLFxuICAgICAgICAgICAgJ2RpdiBzdGFjay1saW5lLWxvY2F0aW9uJzogKHN0cjogc3RyaW5nKSA9PiBgICgke3RoaXMuY2hhbGsuZ3JleS51bmRlcmxpbmUoc3RyKX0pYCxcblxuICAgICAgICAgICAgJ3N0cm9uZyc6IChzdHI6IHN0cmluZykgPT4gdGhpcy5jaGFsay5ib2xkKHN0ciksXG4gICAgICAgICAgICAnYSc6ICAgICAgKHN0cjogc3RyaW5nKSA9PiBgXCIke3RoaXMuY2hhbGsudW5kZXJsaW5lKHN0cil9XCJgXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gU3RyaW5nIGhlbHBlcnNcbiAgICBwdWJsaWMgaW5kZW50U3RyaW5nIChzdHI6IHN0cmluZywgaW5kZW50VmFsOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaW5kZW50U3RyaW5nKHN0ciwgJyAnLCBpbmRlbnRWYWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3b3JkV3JhcCAoc3RyOiBzdHJpbmcsIGluZGVudFZhbDogbnVtYmVyLCB3aWR0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHdvcmRXcmFwKHN0ciwgaW5kZW50VmFsLCB3aWR0aCk7XG4gICAgfVxuXG4gICAgcHVibGljIGVzY2FwZUh0bWwgKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGVzY2FwZUh0bWwoc3RyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9ybWF0RXJyb3IgKGVycjogVGVzdFJ1bkVycm9yRm9ybWF0dGFibGVBZGFwdGVyLCBwcmVmaXggPSAnJyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHByZWZpeExlbmd0aFdpdGhvdXRDb2xvcnMgPSByZW1vdmVUVFlDb2xvcnMocHJlZml4KS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IG1heE1zZ0xlbmd0aCAgICAgICAgICAgICAgPSB0aGlzLnZpZXdwb3J0V2lkdGggLSB0aGlzW2luZGVudF0gLSBwcmVmaXhMZW5ndGhXaXRob3V0Q29sb3JzO1xuXG4gICAgICAgIGxldCBtc2cgPSBlcnIuZm9ybWF0TWVzc2FnZSh0aGlzW2Vycm9yRGVjb3JhdG9yXSwgbWF4TXNnTGVuZ3RoKTtcblxuICAgICAgICBpZiAodGhpc1t3b3JkV3JhcEVuYWJsZWRdKVxuICAgICAgICAgICAgbXNnID0gdGhpcy53b3JkV3JhcChtc2csIHByZWZpeExlbmd0aFdpdGhvdXRDb2xvcnMsIG1heE1zZ0xlbmd0aCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1zZyA9IHRoaXMuaW5kZW50U3RyaW5nKG1zZywgcHJlZml4TGVuZ3RoV2l0aG91dENvbG9ycyk7XG5cbiAgICAgICAgcmV0dXJuIHByZWZpeCArIG1zZy5zdWJzdHIocHJlZml4TGVuZ3RoV2l0aG91dENvbG9ycyk7XG4gICAgfVxuXG5cbiAgICAvLyBXcml0aW5nIGhlbHBlcnNcbiAgICBwdWJsaWMgbmV3bGluZSAoKTogUmVwb3J0ZXJQbHVnaW5Ib3N0IHtcbiAgICAgICAgdGhpcy5fd3JpdGVUb1VuaXF1ZVN0cmVhbSgnXFxuJyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlICh0ZXh0OiBzdHJpbmcpOiBSZXBvcnRlclBsdWdpbkhvc3Qge1xuICAgICAgICBpZiAodGhpc1t3b3JkV3JhcEVuYWJsZWRdKVxuICAgICAgICAgICAgdGV4dCA9IHRoaXMud29yZFdyYXAodGV4dCwgdGhpc1tpbmRlbnRdLCB0aGlzLnZpZXdwb3J0V2lkdGgpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0ZXh0ID0gdGhpcy5pbmRlbnRTdHJpbmcodGV4dCwgdGhpc1tpbmRlbnRdKTtcblxuICAgICAgICB0aGlzLl93cml0ZVRvVW5pcXVlU3RyZWFtKHRleHQpO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB1c2VXb3JkV3JhcCAodXNlOiBib29sZWFuKTogUmVwb3J0ZXJQbHVnaW5Ib3N0IHtcbiAgICAgICAgdGhpc1t3b3JkV3JhcEVuYWJsZWRdID0gdXNlO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRJbmRlbnQgKHZhbDogbnVtYmVyKTogUmVwb3J0ZXJQbHVnaW5Ib3N0IHtcbiAgICAgICAgdGhpc1tpbmRlbnRdID0gdmFsO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3dyaXRlVG9VbmlxdWVTdHJlYW0gKHRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc3RyZWFtQ29udHJvbGxlciB8fCB0aGlzLnN0cmVhbUNvbnRyb2xsZXIuZW5zdXJlVW5pcXVlU3RyZWFtKHRoaXNbc3RyZWFtXSwgdGhpcykpXG4gICAgICAgICAgICB0aGlzW3N0cmVhbV0ud3JpdGUodGV4dCk7XG4gICAgfVxuXG5cbiAgICAvLyBBYnN0cmFjdCBtZXRob2RzIGltcGxlbWVudGVkIGluIHBsdWdpblxuICAgIHB1YmxpYyBhc3luYyByZXBvcnRUYXNrU3RhcnQgKC8qIHN0YXJ0VGltZSwgdXNlckFnZW50cywgdGVzdENvdW50LCB0ZXN0U3RydWN0dXJlLCB0YXNrUHJvcGVydGllcyAqLyk6IFByb21pc2U8bmV2ZXI+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVwb3J0Rml4dHVyZVN0YXJ0ICgvKiBuYW1lLCBwYXRoICovKTogUHJvbWlzZTxuZXZlcj4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cblxuICAgIC8vIE5PVEU6IEl0J3MgYW4gb3B0aW9uYWwgbWV0aG9kXG4gICAgLy8gYXN5bmMgcmVwb3J0VGVzdFN0YXJ0ICgvKiBuYW1lLCB0ZXN0TWV0YSAqLykge1xuICAgIC8vICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIC8vIH1cblxuICAgIHB1YmxpYyBhc3luYyByZXBvcnRUZXN0RG9uZSAoLyogbmFtZSwgdGVzdFJ1bkluZm8gKi8pOiBQcm9taXNlPG5ldmVyPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlcG9ydFRhc2tEb25lICgvKiBlbmRUaW1lLCBwYXNzZWQsIHdhcm5pbmdzICovKTogUHJvbWlzZTxuZXZlcj4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,14 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const ReporterPluginMethod = {
4
- reportTaskStart: 'reportTaskStart',
5
- reportFixtureStart: 'reportFixtureStart',
6
- reportTestStart: 'reportTestStart',
7
- reportTestActionStart: 'reportTestActionStart',
8
- reportTestActionDone: 'reportTestActionDone',
9
- reportTestDone: 'reportTestDone',
10
- reportTaskDone: 'reportTaskDone'
11
- };
12
- exports.default = ReporterPluginMethod;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ReporterPluginMethod = {
4
+ reportTaskStart: 'reportTaskStart',
5
+ reportFixtureStart: 'reportFixtureStart',
6
+ reportTestStart: 'reportTestStart',
7
+ reportTestActionStart: 'reportTestActionStart',
8
+ reportTestActionDone: 'reportTestActionDone',
9
+ reportTestDone: 'reportTestDone',
10
+ reportTaskDone: 'reportTaskDone'
11
+ };
12
+ exports.default = ReporterPluginMethod;
13
13
  module.exports = exports.default;
14
14
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLW1ldGhvZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVwb3J0ZXIvcGx1Z2luLW1ldGhvZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSxNQUFNLG9CQUFvQixHQUF5QztJQUMvRCxlQUFlLEVBQVEsaUJBQWlCO0lBQ3hDLGtCQUFrQixFQUFLLG9CQUFvQjtJQUMzQyxlQUFlLEVBQVEsaUJBQWlCO0lBQ3hDLHFCQUFxQixFQUFFLHVCQUF1QjtJQUM5QyxvQkFBb0IsRUFBRyxzQkFBc0I7SUFDN0MsY0FBYyxFQUFTLGdCQUFnQjtJQUN2QyxjQUFjLEVBQVMsZ0JBQWdCO0NBQzFDLENBQUM7QUFFRixrQkFBZSxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcG9ydGVyUGx1Z2luIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEVudW1Gcm9tUHJvcGVydGllc09mIH0gZnJvbSAnLi4vdXRpbHMvdHlwZXMnO1xuXG5jb25zdCBSZXBvcnRlclBsdWdpbk1ldGhvZDogRW51bUZyb21Qcm9wZXJ0aWVzT2Y8UmVwb3J0ZXJQbHVnaW4+ID0ge1xuICAgIHJlcG9ydFRhc2tTdGFydDogICAgICAgJ3JlcG9ydFRhc2tTdGFydCcsXG4gICAgcmVwb3J0Rml4dHVyZVN0YXJ0OiAgICAncmVwb3J0Rml4dHVyZVN0YXJ0JyxcbiAgICByZXBvcnRUZXN0U3RhcnQ6ICAgICAgICdyZXBvcnRUZXN0U3RhcnQnLFxuICAgIHJlcG9ydFRlc3RBY3Rpb25TdGFydDogJ3JlcG9ydFRlc3RBY3Rpb25TdGFydCcsXG4gICAgcmVwb3J0VGVzdEFjdGlvbkRvbmU6ICAncmVwb3J0VGVzdEFjdGlvbkRvbmUnLFxuICAgIHJlcG9ydFRlc3REb25lOiAgICAgICAgJ3JlcG9ydFRlc3REb25lJyxcbiAgICByZXBvcnRUYXNrRG9uZTogICAgICAgICdyZXBvcnRUYXNrRG9uZSdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlcG9ydGVyUGx1Z2luTWV0aG9kO1xuIl19
package/lib/role/index.js CHANGED
@@ -1,75 +1,75 @@
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.createAnonymousRole = exports.createRole = void 0;
7
- const events_1 = require("events");
8
- const nanoid_1 = __importDefault(require("nanoid"));
9
- const phase_1 = __importDefault(require("./phase"));
10
- const type_assertions_1 = require("../errors/runtime/type-assertions");
11
- const wrap_test_function_1 = __importDefault(require("../api/wrap-test-function"));
12
- const test_page_url_1 = require("../api/test-page-url");
13
- const marker_symbol_1 = __importDefault(require("./marker-symbol"));
14
- const testcafe_hammerhead_1 = require("testcafe-hammerhead");
15
- class Role extends events_1.EventEmitter {
16
- constructor(loginUrl, initFn, options = {}) {
17
- super();
18
- // @ts-ignore
19
- this[marker_symbol_1.default] = true;
20
- this.id = nanoid_1.default(7);
21
- this.phase = loginUrl ? phase_1.default.uninitialized : phase_1.default.initialized;
22
- this.loginUrl = loginUrl;
23
- this._initFn = initFn;
24
- this.opts = options;
25
- this.redirectUrl = null;
26
- this.stateSnapshot = testcafe_hammerhead_1.StateSnapshot.empty();
27
- this.initErr = null;
28
- }
29
- async _storeStateSnapshot(testRun) {
30
- if (this.initErr)
31
- return;
32
- this.stateSnapshot = await testRun.getStateSnapshot();
33
- }
34
- async _executeInitFn(testRun) {
35
- try {
36
- let fn = () => this._initFn(testRun);
37
- fn = testRun.decoratePreventEmitActionEvents(fn, { prevent: false });
38
- fn = testRun.decorateDisableDebugBreakpoints(fn, { disable: false });
39
- await fn();
40
- }
41
- catch (err) {
42
- this.initErr = err;
43
- }
44
- }
45
- async initialize(testRun) {
46
- this.phase = phase_1.default.pendingInitialization;
47
- await testRun.switchToCleanRun(this.loginUrl);
48
- await this._executeInitFn(testRun);
49
- await this._storeStateSnapshot(testRun);
50
- if (this.opts.preserveUrl)
51
- await this.setCurrentUrlAsRedirectUrl(testRun);
52
- this.phase = phase_1.default.initialized;
53
- this.emit('initialized');
54
- }
55
- async setCurrentUrlAsRedirectUrl(testRun) {
56
- this.redirectUrl = await testRun.getCurrentUrl();
57
- }
58
- }
59
- function createRole(loginUrl, initFn, options = { preserveUrl: false }) {
60
- type_assertions_1.assertType(type_assertions_1.is.string, 'Role', '"loginUrl" argument', loginUrl);
61
- type_assertions_1.assertType(type_assertions_1.is.function, 'Role', '"initFn" argument', initFn);
62
- type_assertions_1.assertType(type_assertions_1.is.nonNullObject, 'Role', '"options" argument', options);
63
- if (options.preserveUrl !== void 0)
64
- type_assertions_1.assertType(type_assertions_1.is.boolean, 'Role', '"preserveUrl" option', options.preserveUrl);
65
- test_page_url_1.assertRoleUrl(loginUrl, 'Role');
66
- loginUrl = test_page_url_1.getUrl(loginUrl);
67
- initFn = wrap_test_function_1.default(initFn);
68
- return new Role(loginUrl, initFn, options);
69
- }
70
- exports.createRole = createRole;
71
- function createAnonymousRole() {
72
- return new Role(null, null);
73
- }
74
- exports.createAnonymousRole = createAnonymousRole;
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.createAnonymousRole = exports.createRole = void 0;
7
+ const events_1 = require("events");
8
+ const nanoid_1 = __importDefault(require("nanoid"));
9
+ const phase_1 = __importDefault(require("./phase"));
10
+ const type_assertions_1 = require("../errors/runtime/type-assertions");
11
+ const wrap_test_function_1 = __importDefault(require("../api/wrap-test-function"));
12
+ const test_page_url_1 = require("../api/test-page-url");
13
+ const marker_symbol_1 = __importDefault(require("./marker-symbol"));
14
+ const testcafe_hammerhead_1 = require("testcafe-hammerhead");
15
+ class Role extends events_1.EventEmitter {
16
+ constructor(loginUrl, initFn, options = {}) {
17
+ super();
18
+ // @ts-ignore
19
+ this[marker_symbol_1.default] = true;
20
+ this.id = nanoid_1.default(7);
21
+ this.phase = loginUrl ? phase_1.default.uninitialized : phase_1.default.initialized;
22
+ this.loginUrl = loginUrl;
23
+ this._initFn = initFn;
24
+ this.opts = options;
25
+ this.redirectUrl = null;
26
+ this.stateSnapshot = testcafe_hammerhead_1.StateSnapshot.empty();
27
+ this.initErr = null;
28
+ }
29
+ async _storeStateSnapshot(testRun) {
30
+ if (this.initErr)
31
+ return;
32
+ this.stateSnapshot = await testRun.getStateSnapshot();
33
+ }
34
+ async _executeInitFn(testRun) {
35
+ try {
36
+ let fn = () => this._initFn(testRun);
37
+ fn = testRun.decoratePreventEmitActionEvents(fn, { prevent: false });
38
+ fn = testRun.decorateDisableDebugBreakpoints(fn, { disable: false });
39
+ await fn();
40
+ }
41
+ catch (err) {
42
+ this.initErr = err;
43
+ }
44
+ }
45
+ async initialize(testRun) {
46
+ this.phase = phase_1.default.pendingInitialization;
47
+ await testRun.switchToCleanRun(this.loginUrl);
48
+ await this._executeInitFn(testRun);
49
+ await this._storeStateSnapshot(testRun);
50
+ if (this.opts.preserveUrl)
51
+ await this.setCurrentUrlAsRedirectUrl(testRun);
52
+ this.phase = phase_1.default.initialized;
53
+ this.emit('initialized');
54
+ }
55
+ async setCurrentUrlAsRedirectUrl(testRun) {
56
+ this.redirectUrl = await testRun.getCurrentUrl();
57
+ }
58
+ }
59
+ function createRole(loginUrl, initFn, options = { preserveUrl: false }) {
60
+ type_assertions_1.assertType(type_assertions_1.is.string, 'Role', '"loginUrl" argument', loginUrl);
61
+ type_assertions_1.assertType(type_assertions_1.is.function, 'Role', '"initFn" argument', initFn);
62
+ type_assertions_1.assertType(type_assertions_1.is.nonNullObject, 'Role', '"options" argument', options);
63
+ if (options.preserveUrl !== void 0)
64
+ type_assertions_1.assertType(type_assertions_1.is.boolean, 'Role', '"preserveUrl" option', options.preserveUrl);
65
+ test_page_url_1.assertRoleUrl(loginUrl, 'Role');
66
+ loginUrl = test_page_url_1.getUrl(loginUrl);
67
+ initFn = wrap_test_function_1.default(initFn);
68
+ return new Role(loginUrl, initFn, options);
69
+ }
70
+ exports.createRole = createRole;
71
+ function createAnonymousRole() {
72
+ return new Role(null, null);
73
+ }
74
+ exports.createAnonymousRole = createAnonymousRole;
75
75
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm9sZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtQ0FBc0M7QUFDdEMsb0RBQTRCO0FBQzVCLG9EQUFnQztBQUNoQyx1RUFBbUU7QUFDbkUsbUZBQXlEO0FBQ3pELHdEQUE2RDtBQUM3RCxvRUFBeUM7QUFDekMsNkRBQW9EO0FBT3BELE1BQU0sSUFBSyxTQUFRLHFCQUFZO0lBVTNCLFlBQW9CLFFBQXVCLEVBQUUsTUFBdUIsRUFBRSxPQUFPLEdBQUcsRUFBRTtRQUM5RSxLQUFLLEVBQUUsQ0FBQztRQUVSLGFBQWE7UUFDYixJQUFJLENBQUMsdUJBQVUsQ0FBQyxHQUFLLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsRUFBRSxHQUFjLGdCQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBVyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGVBQVMsQ0FBQyxXQUFXLENBQUM7UUFDaEYsSUFBSSxDQUFDLFFBQVEsR0FBUSxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBUyxNQUFNLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBWSxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBSyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxtQ0FBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxPQUFPLEdBQVMsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFTyxLQUFLLENBQUMsbUJBQW1CLENBQUUsT0FBZ0I7UUFDL0MsSUFBSSxJQUFJLENBQUMsT0FBTztZQUNaLE9BQU87UUFFWCxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUQsQ0FBQztJQUVPLEtBQUssQ0FBQyxjQUFjLENBQUUsT0FBZ0I7UUFDMUMsSUFBSTtZQUNBLElBQUksRUFBRSxHQUFHLEdBQWtCLEVBQUUsQ0FBRSxJQUFJLENBQUMsT0FBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVsRSxFQUFFLEdBQUcsT0FBTyxDQUFDLCtCQUErQixDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLEVBQUUsR0FBRyxPQUFPLENBQUMsK0JBQStCLENBQUMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFFckUsTUFBTSxFQUFFLEVBQUUsQ0FBQztTQUNkO1FBQ0QsT0FBTyxHQUFHLEVBQUU7WUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztTQUN0QjtJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVSxDQUFFLE9BQWdCO1FBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsZUFBUyxDQUFDLHFCQUFxQixDQUFDO1FBRTdDLE1BQU0sT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU5QyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFeEMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFDckIsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFTLENBQUMsV0FBVyxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLEtBQUssQ0FBQywwQkFBMEIsQ0FBRSxPQUFnQjtRQUNyRCxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3JELENBQUM7Q0FDSjtBQUVELFNBQWdCLFVBQVUsQ0FBRSxRQUFnQixFQUFFLE1BQWdCLEVBQUUsVUFBdUIsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFO0lBQ3pHLDRCQUFVLENBQUMsb0JBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9ELDRCQUFVLENBQUMsb0JBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdELDRCQUFVLENBQUMsb0JBQUUsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXBFLElBQUksT0FBTyxDQUFDLFdBQVcsS0FBSyxLQUFLLENBQUM7UUFDOUIsNEJBQVUsQ0FBQyxvQkFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRWhGLDZCQUFhLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRWhDLFFBQVEsR0FBRyxzQkFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLE1BQU0sR0FBSyw0QkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVwQyxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQWRELGdDQWNDO0FBRUQsU0FBZ0IsbUJBQW1CO0lBQy9CLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFGRCxrREFFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgbmFub2lkIGZyb20gJ25hbm9pZCc7XG5pbXBvcnQgUm9sZVBoYXNlIGZyb20gJy4vcGhhc2UnO1xuaW1wb3J0IHsgYXNzZXJ0VHlwZSwgaXMgfSBmcm9tICcuLi9lcnJvcnMvcnVudGltZS90eXBlLWFzc2VydGlvbnMnO1xuaW1wb3J0IHdyYXBUZXN0RnVuY3Rpb24gZnJvbSAnLi4vYXBpL3dyYXAtdGVzdC1mdW5jdGlvbic7XG5pbXBvcnQgeyBnZXRVcmwsIGFzc2VydFJvbGVVcmwgfSBmcm9tICcuLi9hcGkvdGVzdC1wYWdlLXVybCc7XG5pbXBvcnQgcm9sZU1hcmtlciBmcm9tICcuL21hcmtlci1zeW1ib2wnO1xuaW1wb3J0IHsgU3RhdGVTbmFwc2hvdCB9IGZyb20gJ3Rlc3RjYWZlLWhhbW1lcmhlYWQnO1xuaW1wb3J0IFRlc3RSdW4gZnJvbSAnLi4vdGVzdC1ydW4nO1xuXG5pbnRlcmZhY2UgUm9sZU9wdGlvbnMge1xuICAgIHByZXNlcnZlVXJsPzogYm9vbGVhbjtcbn1cblxuY2xhc3MgUm9sZSBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gICAgcHVibGljIGlkOiBzdHJpbmc7XG4gICAgcHVibGljIHBoYXNlOiBSb2xlUGhhc2U7XG4gICAgcHVibGljIGxvZ2luVXJsOiBzdHJpbmcgfCBudWxsO1xuICAgIHB1YmxpYyByZWRpcmVjdFVybDogc3RyaW5nIHwgbnVsbDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9pbml0Rm46IEZ1bmN0aW9uIHwgbnVsbDtcbiAgICBwdWJsaWMgb3B0czogUm9sZU9wdGlvbnM7XG4gICAgcHVibGljIGluaXRFcnI6IG51bGwgfCBFcnJvcjtcbiAgICBwdWJsaWMgc3RhdGVTbmFwc2hvdDogU3RhdGVTbmFwc2hvdDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAobG9naW5Vcmw6IHN0cmluZyB8IG51bGwsIGluaXRGbjogRnVuY3Rpb24gfCBudWxsLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXNbcm9sZU1hcmtlcl0gICA9IHRydWU7XG4gICAgICAgIHRoaXMuaWQgICAgICAgICAgICA9IG5hbm9pZCg3KTtcbiAgICAgICAgdGhpcy5waGFzZSAgICAgICAgID0gbG9naW5VcmwgPyBSb2xlUGhhc2UudW5pbml0aWFsaXplZCA6IFJvbGVQaGFzZS5pbml0aWFsaXplZDtcbiAgICAgICAgdGhpcy5sb2dpblVybCAgICAgID0gbG9naW5Vcmw7XG4gICAgICAgIHRoaXMuX2luaXRGbiAgICAgICA9IGluaXRGbjtcbiAgICAgICAgdGhpcy5vcHRzICAgICAgICAgID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy5yZWRpcmVjdFVybCAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdGF0ZVNuYXBzaG90ID0gU3RhdGVTbmFwc2hvdC5lbXB0eSgpO1xuICAgICAgICB0aGlzLmluaXRFcnIgICAgICAgPSBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3N0b3JlU3RhdGVTbmFwc2hvdCAodGVzdFJ1bjogVGVzdFJ1bik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5pbml0RXJyKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTbmFwc2hvdCA9IGF3YWl0IHRlc3RSdW4uZ2V0U3RhdGVTbmFwc2hvdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2V4ZWN1dGVJbml0Rm4gKHRlc3RSdW46IFRlc3RSdW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBmbiA9ICgpOiBQcm9taXNlPHZvaWQ+ID0+ICh0aGlzLl9pbml0Rm4gYXMgRnVuY3Rpb24pKHRlc3RSdW4pO1xuXG4gICAgICAgICAgICBmbiA9IHRlc3RSdW4uZGVjb3JhdGVQcmV2ZW50RW1pdEFjdGlvbkV2ZW50cyhmbiwgeyBwcmV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIGZuID0gdGVzdFJ1bi5kZWNvcmF0ZURpc2FibGVEZWJ1Z0JyZWFrcG9pbnRzKGZuLCB7IGRpc2FibGU6IGZhbHNlIH0pO1xuXG4gICAgICAgICAgICBhd2FpdCBmbigpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdEVyciA9IGVycjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0aWFsaXplICh0ZXN0UnVuOiBUZXN0UnVuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMucGhhc2UgPSBSb2xlUGhhc2UucGVuZGluZ0luaXRpYWxpemF0aW9uO1xuXG4gICAgICAgIGF3YWl0IHRlc3RSdW4uc3dpdGNoVG9DbGVhblJ1bih0aGlzLmxvZ2luVXJsKTtcblxuICAgICAgICBhd2FpdCB0aGlzLl9leGVjdXRlSW5pdEZuKHRlc3RSdW4pO1xuICAgICAgICBhd2FpdCB0aGlzLl9zdG9yZVN0YXRlU25hcHNob3QodGVzdFJ1bik7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0cy5wcmVzZXJ2ZVVybClcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0Q3VycmVudFVybEFzUmVkaXJlY3RVcmwodGVzdFJ1bik7XG5cbiAgICAgICAgdGhpcy5waGFzZSA9IFJvbGVQaGFzZS5pbml0aWFsaXplZDtcbiAgICAgICAgdGhpcy5lbWl0KCdpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRDdXJyZW50VXJsQXNSZWRpcmVjdFVybCAodGVzdFJ1bjogVGVzdFJ1bik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnJlZGlyZWN0VXJsID0gYXdhaXQgdGVzdFJ1bi5nZXRDdXJyZW50VXJsKCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUm9sZSAobG9naW5Vcmw6IHN0cmluZywgaW5pdEZuOiBGdW5jdGlvbiwgb3B0aW9uczogUm9sZU9wdGlvbnMgPSB7IHByZXNlcnZlVXJsOiBmYWxzZSB9KTogUm9sZSB7XG4gICAgYXNzZXJ0VHlwZShpcy5zdHJpbmcsICdSb2xlJywgJ1wibG9naW5VcmxcIiBhcmd1bWVudCcsIGxvZ2luVXJsKTtcbiAgICBhc3NlcnRUeXBlKGlzLmZ1bmN0aW9uLCAnUm9sZScsICdcImluaXRGblwiIGFyZ3VtZW50JywgaW5pdEZuKTtcbiAgICBhc3NlcnRUeXBlKGlzLm5vbk51bGxPYmplY3QsICdSb2xlJywgJ1wib3B0aW9uc1wiIGFyZ3VtZW50Jywgb3B0aW9ucyk7XG5cbiAgICBpZiAob3B0aW9ucy5wcmVzZXJ2ZVVybCAhPT0gdm9pZCAwKVxuICAgICAgICBhc3NlcnRUeXBlKGlzLmJvb2xlYW4sICdSb2xlJywgJ1wicHJlc2VydmVVcmxcIiBvcHRpb24nLCBvcHRpb25zLnByZXNlcnZlVXJsKTtcblxuICAgIGFzc2VydFJvbGVVcmwobG9naW5VcmwsICdSb2xlJyk7XG5cbiAgICBsb2dpblVybCA9IGdldFVybChsb2dpblVybCk7XG4gICAgaW5pdEZuICAgPSB3cmFwVGVzdEZ1bmN0aW9uKGluaXRGbik7XG5cbiAgICByZXR1cm4gbmV3IFJvbGUobG9naW5VcmwsIGluaXRGbiwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBbm9ueW1vdXNSb2xlICgpOiBSb2xlIHtcbiAgICByZXR1cm4gbmV3IFJvbGUobnVsbCwgbnVsbCk7XG59XG4iXX0=
@@ -1,9 +1,9 @@
1
- "use strict";
2
- /*global Symbol*/
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- // HACK: used to validate that UseRoleCommand argument value
5
- // is a Role. With the marker symbol approach we can safely use
6
- // commands in Role without circular reference.
7
- exports.default = Symbol('testRun');
1
+ "use strict";
2
+ /*global Symbol*/
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ // HACK: used to validate that UseRoleCommand argument value
5
+ // is a Role. With the marker symbol approach we can safely use
6
+ // commands in Role without circular reference.
7
+ exports.default = Symbol('testRun');
8
8
  module.exports = exports.default;
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2VyLXN5bWJvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yb2xlL21hcmtlci1zeW1ib2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGlCQUFpQjs7QUFFakIsNERBQTREO0FBQzVELCtEQUErRDtBQUMvRCwrQ0FBK0M7QUFDL0Msa0JBQWUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypnbG9iYWwgU3ltYm9sKi9cblxuLy8gSEFDSzogdXNlZCB0byB2YWxpZGF0ZSB0aGF0IFVzZVJvbGVDb21tYW5kIGFyZ3VtZW50IHZhbHVlXG4vLyBpcyBhIFJvbGUuIFdpdGggdGhlIG1hcmtlciBzeW1ib2wgYXBwcm9hY2ggd2UgY2FuIHNhZmVseSB1c2Vcbi8vIGNvbW1hbmRzIGluIFJvbGUgd2l0aG91dCBjaXJjdWxhciByZWZlcmVuY2UuXG5leHBvcnQgZGVmYXVsdCBTeW1ib2woJ3Rlc3RSdW4nKTtcbiJdfQ==
package/lib/role/phase.js CHANGED
@@ -1,11 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var RolePhase;
4
- (function (RolePhase) {
5
- RolePhase["uninitialized"] = "uninitialized";
6
- RolePhase["pendingInitialization"] = "pendingInitialization";
7
- RolePhase["initialized"] = "initialized";
8
- })(RolePhase || (RolePhase = {}));
9
- exports.default = RolePhase;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var RolePhase;
4
+ (function (RolePhase) {
5
+ RolePhase["uninitialized"] = "uninitialized";
6
+ RolePhase["pendingInitialization"] = "pendingInitialization";
7
+ RolePhase["initialized"] = "initialized";
8
+ })(RolePhase || (RolePhase = {}));
9
+ exports.default = RolePhase;
10
10
  module.exports = exports.default;
11
11
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm9sZS9waGFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLElBQUssU0FJSjtBQUpELFdBQUssU0FBUztJQUNWLDRDQUErQixDQUFBO0lBQy9CLDREQUErQyxDQUFBO0lBQy9DLHdDQUEyQixDQUFBO0FBQy9CLENBQUMsRUFKSSxTQUFTLEtBQVQsU0FBUyxRQUliO0FBRUQsa0JBQWUsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZW51bSBSb2xlUGhhc2Uge1xuICAgIHVuaW5pdGlhbGl6ZWQgPSAndW5pbml0aWFsaXplZCcsXG4gICAgcGVuZGluZ0luaXRpYWxpemF0aW9uID0gJ3BlbmRpbmdJbml0aWFsaXphdGlvbicsXG4gICAgaW5pdGlhbGl6ZWQgPSAnaW5pdGlhbGl6ZWQnXG59XG5cbmV4cG9ydCBkZWZhdWx0IFJvbGVQaGFzZTtcbiJdfQ==