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,85 +1,85 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const lazyRequire = require('import-lazy')(require);
4
- const hammerhead = lazyRequire('testcafe-hammerhead');
5
- const ReporterPluginHost = lazyRequire('./reporter/plugin-host');
6
- const getTestListModule = lazyRequire('./compiler/test-file/formats/es-next/get-test-list');
7
- const getTypeScriptTestListModule = lazyRequire('./compiler/test-file/formats/typescript/get-test-list');
8
- const getCoffeeScriptTestListModule = lazyRequire('./compiler/test-file/formats/coffeescript/get-test-list');
9
- const COMMAND_TYPE = lazyRequire('./test-run/commands/type');
10
- const ASSERTION_TYPE = lazyRequire('./assertions/type');
11
- const TEST_RUN_PHASE = lazyRequire('./test-run/phase');
12
- const createCommandFromObject = lazyRequire('./test-run/commands/from-object');
13
- const initializers = lazyRequire('./test-run/commands/validations/initializers');
14
- const errorTypes = lazyRequire('./errors/types');
15
- const TestRunErrorFormattableAdapter = lazyRequire('./errors/test-run/formattable-adapter');
16
- const testRunErrors = lazyRequire('./errors/test-run');
17
- const processTestFnError = lazyRequire('./errors/process-test-fn-error');
18
- const testRunErrorUtils = lazyRequire('./errors/test-run/utils');
19
- const browserProviderPool = lazyRequire('./browser/provider/pool');
20
- const BrowserConnection = lazyRequire('./browser/connection');
21
- // NOTE: we can't use lazy require for TestRun and Assignable, because it breaks prototype chain for inherited classes
22
- let TestRun = null;
23
- let Assignable = null;
24
- exports.default = {
25
- TestRunErrorFormattableAdapter,
26
- testRunErrors,
27
- COMMAND_TYPE,
28
- ASSERTION_TYPE,
29
- TEST_RUN_PHASE,
30
- errorTypes,
31
- testRunErrorUtils,
32
- BrowserConnection,
33
- get Assignable() {
34
- if (!Assignable)
35
- Assignable = require('./utils/assignable');
36
- return Assignable;
37
- },
38
- get TestRun() {
39
- if (!TestRun)
40
- TestRun = require('./test-run');
41
- return TestRun;
42
- },
43
- get getTestList() {
44
- return getTestListModule.getTestList;
45
- },
46
- get getTypeScriptTestList() {
47
- return getTypeScriptTestListModule.getTypeScriptTestList;
48
- },
49
- get getCoffeeScriptTestList() {
50
- return getCoffeeScriptTestListModule.getCoffeeScriptTestList;
51
- },
52
- get getTestListFromCode() {
53
- return getTestListModule.getTestListFromCode;
54
- },
55
- get getTypeScriptTestListFromCode() {
56
- return getTypeScriptTestListModule.getTypeScriptTestListFromCode;
57
- },
58
- get getCoffeeScriptTestListFromCode() {
59
- return getCoffeeScriptTestListModule.getCoffeeScriptTestListFromCode;
60
- },
61
- get initSelector() {
62
- return initializers.initSelector;
63
- },
64
- get createCommandFromObject() {
65
- return createCommandFromObject;
66
- },
67
- get processTestFnError() {
68
- return processTestFnError;
69
- },
70
- get browserProviderPool() {
71
- return browserProviderPool;
72
- },
73
- ensureUploadDirectory(...args) {
74
- return hammerhead.UploadStorage.ensureUploadsRoot(...args);
75
- },
76
- copyFilesToUploadFolder(...args) {
77
- return hammerhead.UploadStorage.copy(...args);
78
- },
79
- buildReporterPlugin(pluginFactory, outStream) {
80
- const plugin = pluginFactory();
81
- return new ReporterPluginHost(plugin, outStream);
82
- }
83
- };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lazyRequire = require('import-lazy')(require);
4
+ const hammerhead = lazyRequire('testcafe-hammerhead');
5
+ const ReporterPluginHost = lazyRequire('./reporter/plugin-host');
6
+ const getTestListModule = lazyRequire('./compiler/test-file/formats/es-next/get-test-list');
7
+ const getTypeScriptTestListModule = lazyRequire('./compiler/test-file/formats/typescript/get-test-list');
8
+ const getCoffeeScriptTestListModule = lazyRequire('./compiler/test-file/formats/coffeescript/get-test-list');
9
+ const COMMAND_TYPE = lazyRequire('./test-run/commands/type');
10
+ const ASSERTION_TYPE = lazyRequire('./assertions/type');
11
+ const TEST_RUN_PHASE = lazyRequire('./test-run/phase');
12
+ const createCommandFromObject = lazyRequire('./test-run/commands/from-object');
13
+ const initializers = lazyRequire('./test-run/commands/validations/initializers');
14
+ const errorTypes = lazyRequire('./errors/types');
15
+ const TestRunErrorFormattableAdapter = lazyRequire('./errors/test-run/formattable-adapter');
16
+ const testRunErrors = lazyRequire('./errors/test-run');
17
+ const processTestFnError = lazyRequire('./errors/process-test-fn-error');
18
+ const testRunErrorUtils = lazyRequire('./errors/test-run/utils');
19
+ const browserProviderPool = lazyRequire('./browser/provider/pool');
20
+ const BrowserConnection = lazyRequire('./browser/connection');
21
+ // NOTE: we can't use lazy require for TestRun and Assignable, because it breaks prototype chain for inherited classes
22
+ let TestRun = null;
23
+ let Assignable = null;
24
+ exports.default = {
25
+ TestRunErrorFormattableAdapter,
26
+ testRunErrors,
27
+ COMMAND_TYPE,
28
+ ASSERTION_TYPE,
29
+ TEST_RUN_PHASE,
30
+ errorTypes,
31
+ testRunErrorUtils,
32
+ BrowserConnection,
33
+ get Assignable() {
34
+ if (!Assignable)
35
+ Assignable = require('./utils/assignable');
36
+ return Assignable;
37
+ },
38
+ get TestRun() {
39
+ if (!TestRun)
40
+ TestRun = require('./test-run');
41
+ return TestRun;
42
+ },
43
+ get getTestList() {
44
+ return getTestListModule.getTestList;
45
+ },
46
+ get getTypeScriptTestList() {
47
+ return getTypeScriptTestListModule.getTypeScriptTestList;
48
+ },
49
+ get getCoffeeScriptTestList() {
50
+ return getCoffeeScriptTestListModule.getCoffeeScriptTestList;
51
+ },
52
+ get getTestListFromCode() {
53
+ return getTestListModule.getTestListFromCode;
54
+ },
55
+ get getTypeScriptTestListFromCode() {
56
+ return getTypeScriptTestListModule.getTypeScriptTestListFromCode;
57
+ },
58
+ get getCoffeeScriptTestListFromCode() {
59
+ return getCoffeeScriptTestListModule.getCoffeeScriptTestListFromCode;
60
+ },
61
+ get initSelector() {
62
+ return initializers.initSelector;
63
+ },
64
+ get createCommandFromObject() {
65
+ return createCommandFromObject;
66
+ },
67
+ get processTestFnError() {
68
+ return processTestFnError;
69
+ },
70
+ get browserProviderPool() {
71
+ return browserProviderPool;
72
+ },
73
+ ensureUploadDirectory(...args) {
74
+ return hammerhead.UploadStorage.ensureUploadsRoot(...args);
75
+ },
76
+ copyFilesToUploadFolder(...args) {
77
+ return hammerhead.UploadStorage.copy(...args);
78
+ },
79
+ buildReporterPlugin(pluginFactory, outStream) {
80
+ const plugin = pluginFactory();
81
+ return new ReporterPluginHost(plugin, outStream);
82
+ }
83
+ };
84
84
  module.exports = exports.default;
85
85
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1iZWRkaW5nLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2VtYmVkZGluZy11dGlscy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUVwRCxNQUFNLFVBQVUsR0FBdUIsV0FBVyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDMUUsTUFBTSxrQkFBa0IsR0FBZSxXQUFXLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUM3RSxNQUFNLGlCQUFpQixHQUFnQixXQUFXLENBQUMsb0RBQW9ELENBQUMsQ0FBQztBQUN6RyxNQUFNLDJCQUEyQixHQUFNLFdBQVcsQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO0FBQzVHLE1BQU0sNkJBQTZCLEdBQUksV0FBVyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7QUFDOUcsTUFBTSxZQUFZLEdBQXFCLFdBQVcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0FBQy9FLE1BQU0sY0FBYyxHQUFtQixXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUN4RSxNQUFNLGNBQWMsR0FBbUIsV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDdkUsTUFBTSx1QkFBdUIsR0FBVSxXQUFXLENBQUMsaUNBQWlDLENBQUMsQ0FBQztBQUN0RixNQUFNLFlBQVksR0FBcUIsV0FBVyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7QUFDbkcsTUFBTSxVQUFVLEdBQXVCLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3JFLE1BQU0sOEJBQThCLEdBQUcsV0FBVyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7QUFDNUYsTUFBTSxhQUFhLEdBQW9CLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ3hFLE1BQU0sa0JBQWtCLEdBQWUsV0FBVyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7QUFDckYsTUFBTSxpQkFBaUIsR0FBZ0IsV0FBVyxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFDOUUsTUFBTSxtQkFBbUIsR0FBYyxXQUFXLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUM5RSxNQUFNLGlCQUFpQixHQUFnQixXQUFXLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUczRSxzSEFBc0g7QUFDdEgsSUFBSSxPQUFPLEdBQU0sSUFBSSxDQUFDO0FBQ3RCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztBQUV0QixrQkFBZTtJQUNYLDhCQUE4QjtJQUM5QixhQUFhO0lBQ2IsWUFBWTtJQUNaLGNBQWM7SUFDZCxjQUFjO0lBQ2QsVUFBVTtJQUNWLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFFakIsSUFBSSxVQUFVO1FBQ1YsSUFBSSxDQUFDLFVBQVU7WUFDWCxVQUFVLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFL0MsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLElBQUksQ0FBQyxPQUFPO1lBQ1IsT0FBTyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVwQyxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxpQkFBaUIsQ0FBQyxXQUFXLENBQUM7SUFDekMsQ0FBQztJQUVELElBQUkscUJBQXFCO1FBQ3JCLE9BQU8sMkJBQTJCLENBQUMscUJBQXFCLENBQUM7SUFDN0QsQ0FBQztJQUVELElBQUksdUJBQXVCO1FBQ3ZCLE9BQU8sNkJBQTZCLENBQUMsdUJBQXVCLENBQUM7SUFDakUsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ25CLE9BQU8saUJBQWlCLENBQUMsbUJBQW1CLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksNkJBQTZCO1FBQzdCLE9BQU8sMkJBQTJCLENBQUMsNkJBQTZCLENBQUM7SUFDckUsQ0FBQztJQUVELElBQUksK0JBQStCO1FBQy9CLE9BQU8sNkJBQTZCLENBQUMsK0JBQStCLENBQUM7SUFDekUsQ0FBQztJQUVELElBQUksWUFBWTtRQUNaLE9BQU8sWUFBWSxDQUFDLFlBQVksQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSx1QkFBdUI7UUFDdkIsT0FBTyx1QkFBdUIsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDbEIsT0FBTyxrQkFBa0IsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDbkIsT0FBTyxtQkFBbUIsQ0FBQztJQUMvQixDQUFDO0lBRUQscUJBQXFCLENBQUUsR0FBRyxJQUFJO1FBQzFCLE9BQU8sVUFBVSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCx1QkFBdUIsQ0FBRSxHQUFHLElBQUk7UUFDNUIsT0FBTyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxtQkFBbUIsQ0FBRSxhQUFhLEVBQUUsU0FBUztRQUN6QyxNQUFNLE1BQU0sR0FBRyxhQUFhLEVBQUUsQ0FBQztRQUUvQixPQUFPLElBQUksa0JBQWtCLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbGF6eVJlcXVpcmUgPSByZXF1aXJlKCdpbXBvcnQtbGF6eScpKHJlcXVpcmUpO1xuXG5jb25zdCBoYW1tZXJoZWFkICAgICAgICAgICAgICAgICAgICAgPSBsYXp5UmVxdWlyZSgndGVzdGNhZmUtaGFtbWVyaGVhZCcpO1xuY29uc3QgUmVwb3J0ZXJQbHVnaW5Ib3N0ICAgICAgICAgICAgID0gbGF6eVJlcXVpcmUoJy4vcmVwb3J0ZXIvcGx1Z2luLWhvc3QnKTtcbmNvbnN0IGdldFRlc3RMaXN0TW9kdWxlICAgICAgICAgICAgICA9IGxhenlSZXF1aXJlKCcuL2NvbXBpbGVyL3Rlc3QtZmlsZS9mb3JtYXRzL2VzLW5leHQvZ2V0LXRlc3QtbGlzdCcpO1xuY29uc3QgZ2V0VHlwZVNjcmlwdFRlc3RMaXN0TW9kdWxlICAgID0gbGF6eVJlcXVpcmUoJy4vY29tcGlsZXIvdGVzdC1maWxlL2Zvcm1hdHMvdHlwZXNjcmlwdC9nZXQtdGVzdC1saXN0Jyk7XG5jb25zdCBnZXRDb2ZmZWVTY3JpcHRUZXN0TGlzdE1vZHVsZSAgPSBsYXp5UmVxdWlyZSgnLi9jb21waWxlci90ZXN0LWZpbGUvZm9ybWF0cy9jb2ZmZWVzY3JpcHQvZ2V0LXRlc3QtbGlzdCcpO1xuY29uc3QgQ09NTUFORF9UWVBFICAgICAgICAgICAgICAgICAgID0gbGF6eVJlcXVpcmUoJy4vdGVzdC1ydW4vY29tbWFuZHMvdHlwZScpO1xuY29uc3QgQVNTRVJUSU9OX1RZUEUgICAgICAgICAgICAgICAgID0gbGF6eVJlcXVpcmUoJy4vYXNzZXJ0aW9ucy90eXBlJyk7XG5jb25zdCBURVNUX1JVTl9QSEFTRSAgICAgICAgICAgICAgICAgPSBsYXp5UmVxdWlyZSgnLi90ZXN0LXJ1bi9waGFzZScpO1xuY29uc3QgY3JlYXRlQ29tbWFuZEZyb21PYmplY3QgICAgICAgID0gbGF6eVJlcXVpcmUoJy4vdGVzdC1ydW4vY29tbWFuZHMvZnJvbS1vYmplY3QnKTtcbmNvbnN0IGluaXRpYWxpemVycyAgICAgICAgICAgICAgICAgICA9IGxhenlSZXF1aXJlKCcuL3Rlc3QtcnVuL2NvbW1hbmRzL3ZhbGlkYXRpb25zL2luaXRpYWxpemVycycpO1xuY29uc3QgZXJyb3JUeXBlcyAgICAgICAgICAgICAgICAgICAgID0gbGF6eVJlcXVpcmUoJy4vZXJyb3JzL3R5cGVzJyk7XG5jb25zdCBUZXN0UnVuRXJyb3JGb3JtYXR0YWJsZUFkYXB0ZXIgPSBsYXp5UmVxdWlyZSgnLi9lcnJvcnMvdGVzdC1ydW4vZm9ybWF0dGFibGUtYWRhcHRlcicpO1xuY29uc3QgdGVzdFJ1bkVycm9ycyAgICAgICAgICAgICAgICAgID0gbGF6eVJlcXVpcmUoJy4vZXJyb3JzL3Rlc3QtcnVuJyk7XG5jb25zdCBwcm9jZXNzVGVzdEZuRXJyb3IgICAgICAgICAgICAgPSBsYXp5UmVxdWlyZSgnLi9lcnJvcnMvcHJvY2Vzcy10ZXN0LWZuLWVycm9yJyk7XG5jb25zdCB0ZXN0UnVuRXJyb3JVdGlscyAgICAgICAgICAgICAgPSBsYXp5UmVxdWlyZSgnLi9lcnJvcnMvdGVzdC1ydW4vdXRpbHMnKTtcbmNvbnN0IGJyb3dzZXJQcm92aWRlclBvb2wgICAgICAgICAgICA9IGxhenlSZXF1aXJlKCcuL2Jyb3dzZXIvcHJvdmlkZXIvcG9vbCcpO1xuY29uc3QgQnJvd3NlckNvbm5lY3Rpb24gICAgICAgICAgICAgID0gbGF6eVJlcXVpcmUoJy4vYnJvd3Nlci9jb25uZWN0aW9uJyk7XG5cblxuLy8gTk9URTogd2UgY2FuJ3QgdXNlIGxhenkgcmVxdWlyZSBmb3IgVGVzdFJ1biBhbmQgQXNzaWduYWJsZSwgYmVjYXVzZSBpdCBicmVha3MgcHJvdG90eXBlIGNoYWluIGZvciBpbmhlcml0ZWQgY2xhc3Nlc1xubGV0IFRlc3RSdW4gICAgPSBudWxsO1xubGV0IEFzc2lnbmFibGUgPSBudWxsO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgVGVzdFJ1bkVycm9yRm9ybWF0dGFibGVBZGFwdGVyLFxuICAgIHRlc3RSdW5FcnJvcnMsXG4gICAgQ09NTUFORF9UWVBFLFxuICAgIEFTU0VSVElPTl9UWVBFLFxuICAgIFRFU1RfUlVOX1BIQVNFLFxuICAgIGVycm9yVHlwZXMsXG4gICAgdGVzdFJ1bkVycm9yVXRpbHMsXG4gICAgQnJvd3NlckNvbm5lY3Rpb24sXG5cbiAgICBnZXQgQXNzaWduYWJsZSAoKSB7XG4gICAgICAgIGlmICghQXNzaWduYWJsZSlcbiAgICAgICAgICAgIEFzc2lnbmFibGUgPSByZXF1aXJlKCcuL3V0aWxzL2Fzc2lnbmFibGUnKTtcblxuICAgICAgICByZXR1cm4gQXNzaWduYWJsZTtcbiAgICB9LFxuXG4gICAgZ2V0IFRlc3RSdW4gKCkge1xuICAgICAgICBpZiAoIVRlc3RSdW4pXG4gICAgICAgICAgICBUZXN0UnVuID0gcmVxdWlyZSgnLi90ZXN0LXJ1bicpO1xuXG4gICAgICAgIHJldHVybiBUZXN0UnVuO1xuICAgIH0sXG5cbiAgICBnZXQgZ2V0VGVzdExpc3QgKCkge1xuICAgICAgICByZXR1cm4gZ2V0VGVzdExpc3RNb2R1bGUuZ2V0VGVzdExpc3Q7XG4gICAgfSxcblxuICAgIGdldCBnZXRUeXBlU2NyaXB0VGVzdExpc3QgKCkge1xuICAgICAgICByZXR1cm4gZ2V0VHlwZVNjcmlwdFRlc3RMaXN0TW9kdWxlLmdldFR5cGVTY3JpcHRUZXN0TGlzdDtcbiAgICB9LFxuXG4gICAgZ2V0IGdldENvZmZlZVNjcmlwdFRlc3RMaXN0ICgpIHtcbiAgICAgICAgcmV0dXJuIGdldENvZmZlZVNjcmlwdFRlc3RMaXN0TW9kdWxlLmdldENvZmZlZVNjcmlwdFRlc3RMaXN0O1xuICAgIH0sXG5cbiAgICBnZXQgZ2V0VGVzdExpc3RGcm9tQ29kZSAoKSB7XG4gICAgICAgIHJldHVybiBnZXRUZXN0TGlzdE1vZHVsZS5nZXRUZXN0TGlzdEZyb21Db2RlO1xuICAgIH0sXG5cbiAgICBnZXQgZ2V0VHlwZVNjcmlwdFRlc3RMaXN0RnJvbUNvZGUgKCkge1xuICAgICAgICByZXR1cm4gZ2V0VHlwZVNjcmlwdFRlc3RMaXN0TW9kdWxlLmdldFR5cGVTY3JpcHRUZXN0TGlzdEZyb21Db2RlO1xuICAgIH0sXG5cbiAgICBnZXQgZ2V0Q29mZmVlU2NyaXB0VGVzdExpc3RGcm9tQ29kZSAoKSB7XG4gICAgICAgIHJldHVybiBnZXRDb2ZmZWVTY3JpcHRUZXN0TGlzdE1vZHVsZS5nZXRDb2ZmZWVTY3JpcHRUZXN0TGlzdEZyb21Db2RlO1xuICAgIH0sXG5cbiAgICBnZXQgaW5pdFNlbGVjdG9yICgpIHtcbiAgICAgICAgcmV0dXJuIGluaXRpYWxpemVycy5pbml0U2VsZWN0b3I7XG4gICAgfSxcblxuICAgIGdldCBjcmVhdGVDb21tYW5kRnJvbU9iamVjdCAoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVDb21tYW5kRnJvbU9iamVjdDtcbiAgICB9LFxuXG4gICAgZ2V0IHByb2Nlc3NUZXN0Rm5FcnJvciAoKSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzVGVzdEZuRXJyb3I7XG4gICAgfSxcblxuICAgIGdldCBicm93c2VyUHJvdmlkZXJQb29sICgpIHtcbiAgICAgICAgcmV0dXJuIGJyb3dzZXJQcm92aWRlclBvb2w7XG4gICAgfSxcblxuICAgIGVuc3VyZVVwbG9hZERpcmVjdG9yeSAoLi4uYXJncykge1xuICAgICAgICByZXR1cm4gaGFtbWVyaGVhZC5VcGxvYWRTdG9yYWdlLmVuc3VyZVVwbG9hZHNSb290KC4uLmFyZ3MpO1xuICAgIH0sXG5cbiAgICBjb3B5RmlsZXNUb1VwbG9hZEZvbGRlciAoLi4uYXJncykge1xuICAgICAgICByZXR1cm4gaGFtbWVyaGVhZC5VcGxvYWRTdG9yYWdlLmNvcHkoLi4uYXJncyk7XG4gICAgfSxcblxuICAgIGJ1aWxkUmVwb3J0ZXJQbHVnaW4gKHBsdWdpbkZhY3RvcnksIG91dFN0cmVhbSkge1xuICAgICAgICBjb25zdCBwbHVnaW4gPSBwbHVnaW5GYWN0b3J5KCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBSZXBvcnRlclBsdWdpbkhvc3QocGx1Z2luLCBvdXRTdHJlYW0pO1xuICAgIH1cbn07XG4iXX0=
@@ -1,20 +1,20 @@
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 is_internal_stack_frame_1 = __importDefault(require("./is-internal-stack-frame"));
7
- function createStackFilter(limit) {
8
- let passedFramesCount = 0;
9
- return function stackFilter(frame) {
10
- if (passedFramesCount >= limit)
11
- return false;
12
- const pass = !is_internal_stack_frame_1.default(frame);
13
- if (pass)
14
- passedFramesCount++;
15
- return pass;
16
- };
17
- }
18
- exports.default = createStackFilter;
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 is_internal_stack_frame_1 = __importDefault(require("./is-internal-stack-frame"));
7
+ function createStackFilter(limit) {
8
+ let passedFramesCount = 0;
9
+ return function stackFilter(frame) {
10
+ if (passedFramesCount >= limit)
11
+ return false;
12
+ const pass = !is_internal_stack_frame_1.default(frame);
13
+ if (pass)
14
+ passedFramesCount++;
15
+ return pass;
16
+ };
17
+ }
18
+ exports.default = createStackFilter;
19
19
  module.exports = exports.default;
20
20
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXN0YWNrLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvY3JlYXRlLXN0YWNrLWZpbHRlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHdGQUE2RDtBQUU3RCxTQUF3QixpQkFBaUIsQ0FBRSxLQUFLO0lBQzVDLElBQUksaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0lBRTFCLE9BQU8sU0FBUyxXQUFXLENBQUUsS0FBSztRQUM5QixJQUFJLGlCQUFpQixJQUFJLEtBQUs7WUFDMUIsT0FBTyxLQUFLLENBQUM7UUFFakIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxpQ0FBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxQyxJQUFJLElBQUk7WUFDSixpQkFBaUIsRUFBRSxDQUFDO1FBRXhCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztBQUNOLENBQUM7QUFkRCxvQ0FjQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0ludGVybmFsU3RhY2tGcmFtZSBmcm9tICcuL2lzLWludGVybmFsLXN0YWNrLWZyYW1lJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlU3RhY2tGaWx0ZXIgKGxpbWl0KSB7XG4gICAgbGV0IHBhc3NlZEZyYW1lc0NvdW50ID0gMDtcblxuICAgIHJldHVybiBmdW5jdGlvbiBzdGFja0ZpbHRlciAoZnJhbWUpIHtcbiAgICAgICAgaWYgKHBhc3NlZEZyYW1lc0NvdW50ID49IGxpbWl0KVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHBhc3MgPSAhaXNJbnRlcm5hbFN0YWNrRnJhbWUoZnJhbWUpO1xuXG4gICAgICAgIGlmIChwYXNzKVxuICAgICAgICAgICAgcGFzc2VkRnJhbWVzQ291bnQrKztcblxuICAgICAgICByZXR1cm4gcGFzcztcbiAgICB9O1xufVxuIl19
@@ -1,28 +1,28 @@
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 process_test_fn_error_1 = __importDefault(require("./process-test-fn-error"));
7
- const test_run_1 = require("./test-run");
8
- class TestCafeErrorList {
9
- constructor() {
10
- this.items = [];
11
- this.name = TestCafeErrorList.name;
12
- }
13
- get hasErrors() {
14
- return !!this.items.length;
15
- }
16
- get hasUncaughtErrorsInTestCode() {
17
- return this.items.some(item => item instanceof test_run_1.UncaughtErrorInTestCode);
18
- }
19
- addError(err) {
20
- if (err instanceof TestCafeErrorList)
21
- this.items = this.items.concat(err.items);
22
- else
23
- this.items.push(process_test_fn_error_1.default(err));
24
- }
25
- }
26
- exports.default = TestCafeErrorList;
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 process_test_fn_error_1 = __importDefault(require("./process-test-fn-error"));
7
+ const test_run_1 = require("./test-run");
8
+ class TestCafeErrorList {
9
+ constructor() {
10
+ this.items = [];
11
+ this.name = TestCafeErrorList.name;
12
+ }
13
+ get hasErrors() {
14
+ return !!this.items.length;
15
+ }
16
+ get hasUncaughtErrorsInTestCode() {
17
+ return this.items.some(item => item instanceof test_run_1.UncaughtErrorInTestCode);
18
+ }
19
+ addError(err) {
20
+ if (err instanceof TestCafeErrorList)
21
+ this.items = this.items.concat(err.items);
22
+ else
23
+ this.items.push(process_test_fn_error_1.default(err));
24
+ }
25
+ }
26
+ exports.default = TestCafeErrorList;
27
27
  module.exports = exports.default;
28
28
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvZXJyb3ItbGlzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9GQUF5RDtBQUN6RCx5Q0FBcUQ7QUFFckQsTUFBcUIsaUJBQWlCO0lBQ2xDO1FBQ0ksSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLElBQUksR0FBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLDJCQUEyQjtRQUMzQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxZQUFZLGtDQUF1QixDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELFFBQVEsQ0FBRSxHQUFHO1FBQ1QsSUFBSSxHQUFHLFlBQVksaUJBQWlCO1lBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDOztZQUUxQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQywrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7Q0FDSjtBQXBCRCxvQ0FvQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcHJvY2Vzc1Rlc3RGbkVycm9yIGZyb20gJy4vcHJvY2Vzcy10ZXN0LWZuLWVycm9yJztcbmltcG9ydCB7IFVuY2F1Z2h0RXJyb3JJblRlc3RDb2RlIH0gZnJvbSAnLi90ZXN0LXJ1bic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlc3RDYWZlRXJyb3JMaXN0IHtcbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5uYW1lICA9IFRlc3RDYWZlRXJyb3JMaXN0Lm5hbWU7XG4gICAgfVxuXG4gICAgZ2V0IGhhc0Vycm9ycyAoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuaXRlbXMubGVuZ3RoO1xuICAgIH1cblxuICAgIGdldCBoYXNVbmNhdWdodEVycm9yc0luVGVzdENvZGUgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5zb21lKGl0ZW0gPT4gaXRlbSBpbnN0YW5jZW9mIFVuY2F1Z2h0RXJyb3JJblRlc3RDb2RlKTtcbiAgICB9XG5cbiAgICBhZGRFcnJvciAoZXJyKSB7XG4gICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBUZXN0Q2FmZUVycm9yTGlzdClcbiAgICAgICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLml0ZW1zLmNvbmNhdChlcnIuaXRlbXMpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2gocHJvY2Vzc1Rlc3RGbkVycm9yKGVycikpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,32 +1,32 @@
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.getCallsiteForError = exports.getCallsiteForMethod = void 0;
7
- const callsite_record_1 = __importDefault(require("callsite-record"));
8
- const stack_cleaning_hook_1 = __importDefault(require("./stack-cleaning-hook"));
9
- const source_map_support_1 = require("source-map-support");
10
- const STACK_TRACE_LIMIT = 2000;
11
- function getCallsite(options) {
12
- const originalStackCleaningEnabled = stack_cleaning_hook_1.default.enabled;
13
- const originalStackTraceLimit = Error.stackTraceLimit;
14
- stack_cleaning_hook_1.default.enabled = false;
15
- Error.stackTraceLimit = STACK_TRACE_LIMIT;
16
- const callsiteRecord = callsite_record_1.default(options);
17
- Error.stackTraceLimit = originalStackTraceLimit;
18
- stack_cleaning_hook_1.default.enabled = originalStackCleaningEnabled;
19
- return callsiteRecord;
20
- }
21
- function getCallsiteForMethod(methodName, typeName) {
22
- return getCallsite({ byFunctionName: methodName, typeName, processFrameFn: source_map_support_1.wrapCallSite });
23
- }
24
- exports.getCallsiteForMethod = getCallsiteForMethod;
25
- function getCallsiteForError(error, isCallsiteFrame) {
26
- // NOTE: "source-map-support" process this kind of error automatically, cause
27
- // in this case there is an appeal to "err.stack" inside "callsite-record" which
28
- // provokes wrapping of frames, so there is no need to specify "processFrameFn".
29
- return getCallsite({ forError: error, isCallsiteFrame });
30
- }
31
- exports.getCallsiteForError = getCallsiteForError;
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.getCallsiteForError = exports.getCallsiteForMethod = void 0;
7
+ const callsite_record_1 = __importDefault(require("callsite-record"));
8
+ const stack_cleaning_hook_1 = __importDefault(require("./stack-cleaning-hook"));
9
+ const source_map_support_1 = require("source-map-support");
10
+ const STACK_TRACE_LIMIT = 2000;
11
+ function getCallsite(options) {
12
+ const originalStackCleaningEnabled = stack_cleaning_hook_1.default.enabled;
13
+ const originalStackTraceLimit = Error.stackTraceLimit;
14
+ stack_cleaning_hook_1.default.enabled = false;
15
+ Error.stackTraceLimit = STACK_TRACE_LIMIT;
16
+ const callsiteRecord = callsite_record_1.default(options);
17
+ Error.stackTraceLimit = originalStackTraceLimit;
18
+ stack_cleaning_hook_1.default.enabled = originalStackCleaningEnabled;
19
+ return callsiteRecord;
20
+ }
21
+ function getCallsiteForMethod(methodName, typeName) {
22
+ return getCallsite({ byFunctionName: methodName, typeName, processFrameFn: source_map_support_1.wrapCallSite });
23
+ }
24
+ exports.getCallsiteForMethod = getCallsiteForMethod;
25
+ function getCallsiteForError(error, isCallsiteFrame) {
26
+ // NOTE: "source-map-support" process this kind of error automatically, cause
27
+ // in this case there is an appeal to "err.stack" inside "callsite-record" which
28
+ // provokes wrapping of frames, so there is no need to specify "processFrameFn".
29
+ return getCallsite({ forError: error, isCallsiteFrame });
30
+ }
31
+ exports.getCallsiteForError = getCallsiteForError;
32
32
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWNhbGxzaXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vycm9ycy9nZXQtY2FsbHNpdGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsc0VBQW1EO0FBQ25ELGdGQUFzRDtBQUN0RCwyREFBa0Q7QUFFbEQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFFL0IsU0FBUyxXQUFXLENBQUUsT0FBTztJQUN6QixNQUFNLDRCQUE0QixHQUFHLDZCQUFpQixDQUFDLE9BQU8sQ0FBQztJQUMvRCxNQUFNLHVCQUF1QixHQUFRLEtBQUssQ0FBQyxlQUFlLENBQUM7SUFFM0QsNkJBQWlCLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNsQyxLQUFLLENBQUMsZUFBZSxHQUFPLGlCQUFpQixDQUFDO0lBRTlDLE1BQU0sY0FBYyxHQUFHLHlCQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXJELEtBQUssQ0FBQyxlQUFlLEdBQU8sdUJBQXVCLENBQUM7SUFDcEQsNkJBQWlCLENBQUMsT0FBTyxHQUFHLDRCQUE0QixDQUFDO0lBRXpELE9BQU8sY0FBYyxDQUFDO0FBQzFCLENBQUM7QUFFRCxTQUFnQixvQkFBb0IsQ0FBRSxVQUFVLEVBQUUsUUFBUTtJQUN0RCxPQUFPLFdBQVcsQ0FBQyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxpQ0FBWSxFQUFFLENBQUMsQ0FBQztBQUMvRixDQUFDO0FBRkQsb0RBRUM7QUFFRCxTQUFnQixtQkFBbUIsQ0FBRSxLQUFLLEVBQUUsZUFBZTtJQUN2RCw2RUFBNkU7SUFDN0UsZ0ZBQWdGO0lBQ2hGLGdGQUFnRjtJQUNoRixPQUFPLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBTEQsa0RBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3JlYXRlQ2FsbHNpdGVSZWNvcmQgZnJvbSAnY2FsbHNpdGUtcmVjb3JkJztcbmltcG9ydCBzdGFja0NsZWFuaW5nSG9vayBmcm9tICcuL3N0YWNrLWNsZWFuaW5nLWhvb2snO1xuaW1wb3J0IHsgd3JhcENhbGxTaXRlIH0gZnJvbSAnc291cmNlLW1hcC1zdXBwb3J0JztcblxuY29uc3QgU1RBQ0tfVFJBQ0VfTElNSVQgPSAyMDAwO1xuXG5mdW5jdGlvbiBnZXRDYWxsc2l0ZSAob3B0aW9ucykge1xuICAgIGNvbnN0IG9yaWdpbmFsU3RhY2tDbGVhbmluZ0VuYWJsZWQgPSBzdGFja0NsZWFuaW5nSG9vay5lbmFibGVkO1xuICAgIGNvbnN0IG9yaWdpbmFsU3RhY2tUcmFjZUxpbWl0ICAgICAgPSBFcnJvci5zdGFja1RyYWNlTGltaXQ7XG5cbiAgICBzdGFja0NsZWFuaW5nSG9vay5lbmFibGVkID0gZmFsc2U7XG4gICAgRXJyb3Iuc3RhY2tUcmFjZUxpbWl0ICAgICA9IFNUQUNLX1RSQUNFX0xJTUlUO1xuXG4gICAgY29uc3QgY2FsbHNpdGVSZWNvcmQgPSBjcmVhdGVDYWxsc2l0ZVJlY29yZChvcHRpb25zKTtcblxuICAgIEVycm9yLnN0YWNrVHJhY2VMaW1pdCAgICAgPSBvcmlnaW5hbFN0YWNrVHJhY2VMaW1pdDtcbiAgICBzdGFja0NsZWFuaW5nSG9vay5lbmFibGVkID0gb3JpZ2luYWxTdGFja0NsZWFuaW5nRW5hYmxlZDtcblxuICAgIHJldHVybiBjYWxsc2l0ZVJlY29yZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENhbGxzaXRlRm9yTWV0aG9kIChtZXRob2ROYW1lLCB0eXBlTmFtZSkge1xuICAgIHJldHVybiBnZXRDYWxsc2l0ZSh7IGJ5RnVuY3Rpb25OYW1lOiBtZXRob2ROYW1lLCB0eXBlTmFtZSwgcHJvY2Vzc0ZyYW1lRm46IHdyYXBDYWxsU2l0ZSB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENhbGxzaXRlRm9yRXJyb3IgKGVycm9yLCBpc0NhbGxzaXRlRnJhbWUpIHtcbiAgICAvLyBOT1RFOiBcInNvdXJjZS1tYXAtc3VwcG9ydFwiIHByb2Nlc3MgdGhpcyBraW5kIG9mIGVycm9yIGF1dG9tYXRpY2FsbHksIGNhdXNlXG4gICAgLy8gaW4gdGhpcyBjYXNlIHRoZXJlIGlzIGFuIGFwcGVhbCB0byBcImVyci5zdGFja1wiIGluc2lkZSBcImNhbGxzaXRlLXJlY29yZFwiIHdoaWNoXG4gICAgLy8gcHJvdm9rZXMgd3JhcHBpbmcgb2YgZnJhbWVzLCBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHNwZWNpZnkgXCJwcm9jZXNzRnJhbWVGblwiLlxuICAgIHJldHVybiBnZXRDYWxsc2l0ZSh7IGZvckVycm9yOiBlcnJvciwgaXNDYWxsc2l0ZUZyYW1lIH0pO1xufVxuIl19
@@ -1,10 +1,10 @@
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 semver_1 = __importDefault(require("semver"));
7
- const INTERNAL_MODULES_PREFIX = semver_1.default.gte(process.version, '15.0.0') ? 'node:' : 'internal/';
8
- exports.default = INTERNAL_MODULES_PREFIX;
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 semver_1 = __importDefault(require("semver"));
7
+ const INTERNAL_MODULES_PREFIX = semver_1.default.gte(process.version, '15.0.0') ? 'node:' : 'internal/';
8
+ exports.default = INTERNAL_MODULES_PREFIX;
9
9
  module.exports = exports.default;
10
10
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtbW9kdWxlcy1wcmVmaXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXJyb3JzL2ludGVybmFsLW1vZHVsZXMtcHJlZml4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBRTVCLE1BQU0sdUJBQXVCLEdBQUcsZ0JBQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7QUFFOUYsa0JBQWUsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5cbmNvbnN0IElOVEVSTkFMX01PRFVMRVNfUFJFRklYID0gc2VtdmVyLmd0ZShwcm9jZXNzLnZlcnNpb24sICcxNS4wLjAnKSA/ICdub2RlOicgOiAnaW50ZXJuYWwvJztcblxuZXhwb3J0IGRlZmF1bHQgSU5URVJOQUxfTU9EVUxFU19QUkVGSVg7XG4iXX0=
@@ -1,47 +1,47 @@
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 path_1 = require("path");
7
- const lodash_1 = require("lodash");
8
- const internal_modules_prefix_1 = __importDefault(require("./internal-modules-prefix"));
9
- const BABEL = require.resolve('@babel/core');
10
- const BABEL_MODULES_DIR = BABEL.replace(new RegExp(`^(.*${lodash_1.escapeRegExp(path_1.sep)}node_modules${lodash_1.escapeRegExp(path_1.sep)})(.*)`), '$1');
11
- const BABEL_7 = BABEL_MODULES_DIR + '@babel';
12
- const BABEL_RELATED = BABEL_MODULES_DIR + 'babel-';
13
- const REGENERATOR_RUNTIME = BABEL_MODULES_DIR + 'regenerator-runtime' + path_1.sep;
14
- const GENSYNC = BABEL_MODULES_DIR + 'gensync'; // NOTE: @babel/parser uses this module internally.
15
- const TESTCAFE_LIB = path_1.join(__dirname, '../');
16
- const TESTCAFE_BIN = path_1.join(__dirname, '../../bin');
17
- const TESTCAFE_SRC = path_1.join(__dirname, '../../src');
18
- const TESTCAFE_HAMMERHEAD = require.resolve('testcafe-hammerhead');
19
- const SOURCE_MAP_SUPPORT = require.resolve('source-map-support');
20
- const INTERNAL_STARTS_WITH_PATH_SEGMENTS = [
21
- TESTCAFE_LIB,
22
- TESTCAFE_BIN,
23
- TESTCAFE_SRC,
24
- BABEL_RELATED,
25
- REGENERATOR_RUNTIME,
26
- GENSYNC,
27
- BABEL_7,
28
- internal_modules_prefix_1.default
29
- ];
30
- const INTERNAL_INCLUDES_PATH_SEGMENTS = [
31
- SOURCE_MAP_SUPPORT,
32
- TESTCAFE_HAMMERHEAD
33
- ];
34
- function isInternalFile(filename = '') {
35
- return !filename ||
36
- !filename.includes(path_1.sep) ||
37
- INTERNAL_INCLUDES_PATH_SEGMENTS.some(pathSegment => filename.includes(pathSegment)) ||
38
- INTERNAL_STARTS_WITH_PATH_SEGMENTS.some(pathSegment => filename.startsWith(pathSegment));
39
- }
40
- function default_1(frame) {
41
- // NOTE: filter out the internals of node.js and assertion libraries
42
- const filename = frame.getFileName();
43
- return isInternalFile(filename);
44
- }
45
- exports.default = default_1;
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 path_1 = require("path");
7
+ const lodash_1 = require("lodash");
8
+ const internal_modules_prefix_1 = __importDefault(require("./internal-modules-prefix"));
9
+ const BABEL = require.resolve('@babel/core');
10
+ const BABEL_MODULES_DIR = BABEL.replace(new RegExp(`^(.*${lodash_1.escapeRegExp(path_1.sep)}node_modules${lodash_1.escapeRegExp(path_1.sep)})(.*)`), '$1');
11
+ const BABEL_7 = BABEL_MODULES_DIR + '@babel';
12
+ const BABEL_RELATED = BABEL_MODULES_DIR + 'babel-';
13
+ const REGENERATOR_RUNTIME = BABEL_MODULES_DIR + 'regenerator-runtime' + path_1.sep;
14
+ const GENSYNC = BABEL_MODULES_DIR + 'gensync'; // NOTE: @babel/parser uses this module internally.
15
+ const TESTCAFE_LIB = path_1.join(__dirname, '../');
16
+ const TESTCAFE_BIN = path_1.join(__dirname, '../../bin');
17
+ const TESTCAFE_SRC = path_1.join(__dirname, '../../src');
18
+ const TESTCAFE_HAMMERHEAD = require.resolve('testcafe-hammerhead');
19
+ const SOURCE_MAP_SUPPORT = require.resolve('source-map-support');
20
+ const INTERNAL_STARTS_WITH_PATH_SEGMENTS = [
21
+ TESTCAFE_LIB,
22
+ TESTCAFE_BIN,
23
+ TESTCAFE_SRC,
24
+ BABEL_RELATED,
25
+ REGENERATOR_RUNTIME,
26
+ GENSYNC,
27
+ BABEL_7,
28
+ internal_modules_prefix_1.default
29
+ ];
30
+ const INTERNAL_INCLUDES_PATH_SEGMENTS = [
31
+ SOURCE_MAP_SUPPORT,
32
+ TESTCAFE_HAMMERHEAD
33
+ ];
34
+ function isInternalFile(filename = '') {
35
+ return !filename ||
36
+ !filename.includes(path_1.sep) ||
37
+ INTERNAL_INCLUDES_PATH_SEGMENTS.some(pathSegment => filename.includes(pathSegment)) ||
38
+ INTERNAL_STARTS_WITH_PATH_SEGMENTS.some(pathSegment => filename.startsWith(pathSegment));
39
+ }
40
+ function default_1(frame) {
41
+ // NOTE: filter out the internals of node.js and assertion libraries
42
+ const filename = frame.getFileName();
43
+ return isInternalFile(filename);
44
+ }
45
+ exports.default = default_1;
46
46
  module.exports = exports.default;
47
47
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtaW50ZXJuYWwtc3RhY2stZnJhbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXJyb3JzL2lzLWludGVybmFsLXN0YWNrLWZyYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQWlDO0FBQ2pDLG1DQUFrRDtBQUNsRCx3RkFBZ0U7QUFHaEUsTUFBTSxLQUFLLEdBQWlCLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDM0QsTUFBTSxpQkFBaUIsR0FBSyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8scUJBQVEsQ0FBQyxVQUFHLENBQUMsZUFBZSxxQkFBUSxDQUFDLFVBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNySCxNQUFNLE9BQU8sR0FBZSxpQkFBaUIsR0FBRyxRQUFRLENBQUM7QUFDekQsTUFBTSxhQUFhLEdBQVMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDO0FBQ3pELE1BQU0sbUJBQW1CLEdBQUcsaUJBQWlCLEdBQUcscUJBQXFCLEdBQUcsVUFBRyxDQUFDO0FBQzVFLE1BQU0sT0FBTyxHQUFlLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxDQUFDLG1EQUFtRDtBQUM5RyxNQUFNLFlBQVksR0FBVSxXQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25ELE1BQU0sWUFBWSxHQUFVLFdBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDekQsTUFBTSxZQUFZLEdBQVUsV0FBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUN6RCxNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUNuRSxNQUFNLGtCQUFrQixHQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUVsRSxNQUFNLGtDQUFrQyxHQUFHO0lBQ3ZDLFlBQVk7SUFDWixZQUFZO0lBQ1osWUFBWTtJQUNaLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsT0FBTztJQUNQLE9BQU87SUFDUCxpQ0FBdUI7Q0FDMUIsQ0FBQztBQUVGLE1BQU0sK0JBQStCLEdBQUc7SUFDcEMsa0JBQWtCO0lBQ2xCLG1CQUFtQjtDQUN0QixDQUFDO0FBRUYsU0FBUyxjQUFjLENBQUUsV0FBbUIsRUFBRTtJQUMxQyxPQUFPLENBQUMsUUFBUTtRQUNaLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFHLENBQUM7UUFDdkIsK0JBQStCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRixrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDakcsQ0FBQztBQUVELG1CQUF5QixLQUFpQjtJQUN0QyxvRUFBb0U7SUFDcEUsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRXJDLE9BQU8sY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFMRCw0QkFLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNlcCwgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgZXNjYXBlUmVnRXhwIGFzIGVzY2FwZVJlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBJTlRFUk5BTF9NT0RVTEVTX1BSRUZJWCBmcm9tICcuL2ludGVybmFsLW1vZHVsZXMtcHJlZml4JztcbmltcG9ydCB7IFN0YWNrRnJhbWUgfSBmcm9tICdlcnJvci1zdGFjay1wYXJzZXInO1xuXG5jb25zdCBCQUJFTCAgICAgICAgICAgICAgID0gcmVxdWlyZS5yZXNvbHZlKCdAYmFiZWwvY29yZScpO1xuY29uc3QgQkFCRUxfTU9EVUxFU19ESVIgICA9IEJBQkVMLnJlcGxhY2UobmV3IFJlZ0V4cChgXiguKiR7ZXNjYXBlUmUoc2VwKX1ub2RlX21vZHVsZXMke2VzY2FwZVJlKHNlcCl9KSguKilgKSwgJyQxJyk7XG5jb25zdCBCQUJFTF83ICAgICAgICAgICAgID0gQkFCRUxfTU9EVUxFU19ESVIgKyAnQGJhYmVsJztcbmNvbnN0IEJBQkVMX1JFTEFURUQgICAgICAgPSBCQUJFTF9NT0RVTEVTX0RJUiArICdiYWJlbC0nO1xuY29uc3QgUkVHRU5FUkFUT1JfUlVOVElNRSA9IEJBQkVMX01PRFVMRVNfRElSICsgJ3JlZ2VuZXJhdG9yLXJ1bnRpbWUnICsgc2VwO1xuY29uc3QgR0VOU1lOQyAgICAgICAgICAgICA9IEJBQkVMX01PRFVMRVNfRElSICsgJ2dlbnN5bmMnOyAvLyBOT1RFOiBAYmFiZWwvcGFyc2VyIHVzZXMgdGhpcyBtb2R1bGUgaW50ZXJuYWxseS5cbmNvbnN0IFRFU1RDQUZFX0xJQiAgICAgICAgPSBqb2luKF9fZGlybmFtZSwgJy4uLycpO1xuY29uc3QgVEVTVENBRkVfQklOICAgICAgICA9IGpvaW4oX19kaXJuYW1lLCAnLi4vLi4vYmluJyk7XG5jb25zdCBURVNUQ0FGRV9TUkMgICAgICAgID0gam9pbihfX2Rpcm5hbWUsICcuLi8uLi9zcmMnKTtcbmNvbnN0IFRFU1RDQUZFX0hBTU1FUkhFQUQgPSByZXF1aXJlLnJlc29sdmUoJ3Rlc3RjYWZlLWhhbW1lcmhlYWQnKTtcbmNvbnN0IFNPVVJDRV9NQVBfU1VQUE9SVCAgPSByZXF1aXJlLnJlc29sdmUoJ3NvdXJjZS1tYXAtc3VwcG9ydCcpO1xuXG5jb25zdCBJTlRFUk5BTF9TVEFSVFNfV0lUSF9QQVRIX1NFR01FTlRTID0gW1xuICAgIFRFU1RDQUZFX0xJQixcbiAgICBURVNUQ0FGRV9CSU4sXG4gICAgVEVTVENBRkVfU1JDLFxuICAgIEJBQkVMX1JFTEFURUQsXG4gICAgUkVHRU5FUkFUT1JfUlVOVElNRSxcbiAgICBHRU5TWU5DLFxuICAgIEJBQkVMXzcsXG4gICAgSU5URVJOQUxfTU9EVUxFU19QUkVGSVhcbl07XG5cbmNvbnN0IElOVEVSTkFMX0lOQ0xVREVTX1BBVEhfU0VHTUVOVFMgPSBbXG4gICAgU09VUkNFX01BUF9TVVBQT1JULFxuICAgIFRFU1RDQUZFX0hBTU1FUkhFQURcbl07XG5cbmZ1bmN0aW9uIGlzSW50ZXJuYWxGaWxlIChmaWxlbmFtZTogc3RyaW5nID0gJycpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIWZpbGVuYW1lIHx8XG4gICAgICAgICFmaWxlbmFtZS5pbmNsdWRlcyhzZXApIHx8XG4gICAgICAgIElOVEVSTkFMX0lOQ0xVREVTX1BBVEhfU0VHTUVOVFMuc29tZShwYXRoU2VnbWVudCA9PiBmaWxlbmFtZS5pbmNsdWRlcyhwYXRoU2VnbWVudCkpIHx8XG4gICAgICAgIElOVEVSTkFMX1NUQVJUU19XSVRIX1BBVEhfU0VHTUVOVFMuc29tZShwYXRoU2VnbWVudCA9PiBmaWxlbmFtZS5zdGFydHNXaXRoKHBhdGhTZWdtZW50KSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChmcmFtZTogU3RhY2tGcmFtZSk6IGJvb2xlYW4ge1xuICAgIC8vIE5PVEU6IGZpbHRlciBvdXQgdGhlIGludGVybmFscyBvZiBub2RlLmpzIGFuZCBhc3NlcnRpb24gbGlicmFyaWVzXG4gICAgY29uc3QgZmlsZW5hbWUgPSBmcmFtZS5nZXRGaWxlTmFtZSgpO1xuXG4gICAgcmV0dXJuIGlzSW50ZXJuYWxGaWxlKGZpbGVuYW1lKTtcbn1cbiJdfQ==
@@ -1,39 +1,39 @@
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 path_1 = require("path");
7
- const get_callsite_1 = require("./get-callsite");
8
- const runtime_1 = require("./runtime");
9
- const error_list_1 = __importDefault(require("./error-list"));
10
- const internal_modules_prefix_1 = __importDefault(require("./internal-modules-prefix"));
11
- const node_modules_folder_name_1 = __importDefault(require("../shared/node-modules-folder-name"));
12
- const test_run_1 = require("./test-run");
13
- function isAssertionErrorCallsiteFrame(frame) {
14
- const filename = frame.getFileName();
15
- // NOTE: filter out the internals of node.js and assertion libraries
16
- return filename &&
17
- filename.includes(path_1.sep) &&
18
- !filename.startsWith(internal_modules_prefix_1.default) &&
19
- !filename.includes(`${path_1.sep}${node_modules_folder_name_1.default}${path_1.sep}`);
20
- }
21
- function processTestFnError(err) {
22
- if (err && (err.isTestCafeError || err instanceof error_list_1.default))
23
- return err;
24
- if (err && err instanceof runtime_1.APIError)
25
- return new test_run_1.UncaughtErrorInTestCode(err);
26
- if (err instanceof Error) {
27
- const isAssertionError = err.name === 'AssertionError' || err.constructor.name === 'AssertionError';
28
- // NOTE: assertion libraries can add their source files to the error stack frames.
29
- // We should skip them to create a correct callsite for the assertion error.
30
- const callsite = isAssertionError ? get_callsite_1.getCallsiteForError(err, isAssertionErrorCallsiteFrame) : get_callsite_1.getCallsiteForError(err);
31
- return isAssertionError ?
32
- new test_run_1.ExternalAssertionLibraryError(err, callsite) :
33
- new test_run_1.UncaughtErrorInTestCode(err, callsite);
34
- }
35
- return new test_run_1.UncaughtNonErrorObjectInTestCode(err);
36
- }
37
- exports.default = processTestFnError;
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 path_1 = require("path");
7
+ const get_callsite_1 = require("./get-callsite");
8
+ const runtime_1 = require("./runtime");
9
+ const error_list_1 = __importDefault(require("./error-list"));
10
+ const internal_modules_prefix_1 = __importDefault(require("./internal-modules-prefix"));
11
+ const node_modules_folder_name_1 = __importDefault(require("../shared/node-modules-folder-name"));
12
+ const test_run_1 = require("./test-run");
13
+ function isAssertionErrorCallsiteFrame(frame) {
14
+ const filename = frame.getFileName();
15
+ // NOTE: filter out the internals of node.js and assertion libraries
16
+ return filename &&
17
+ filename.includes(path_1.sep) &&
18
+ !filename.startsWith(internal_modules_prefix_1.default) &&
19
+ !filename.includes(`${path_1.sep}${node_modules_folder_name_1.default}${path_1.sep}`);
20
+ }
21
+ function processTestFnError(err) {
22
+ if (err && (err.isTestCafeError || err instanceof error_list_1.default))
23
+ return err;
24
+ if (err && err instanceof runtime_1.APIError)
25
+ return new test_run_1.UncaughtErrorInTestCode(err);
26
+ if (err instanceof Error) {
27
+ const isAssertionError = err.name === 'AssertionError' || err.constructor.name === 'AssertionError';
28
+ // NOTE: assertion libraries can add their source files to the error stack frames.
29
+ // We should skip them to create a correct callsite for the assertion error.
30
+ const callsite = isAssertionError ? get_callsite_1.getCallsiteForError(err, isAssertionErrorCallsiteFrame) : get_callsite_1.getCallsiteForError(err);
31
+ return isAssertionError ?
32
+ new test_run_1.ExternalAssertionLibraryError(err, callsite) :
33
+ new test_run_1.UncaughtErrorInTestCode(err, callsite);
34
+ }
35
+ return new test_run_1.UncaughtNonErrorObjectInTestCode(err);
36
+ }
37
+ exports.default = processTestFnError;
38
38
  module.exports = exports.default;
39
39
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy10ZXN0LWZuLWVycm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vycm9ycy9wcm9jZXNzLXRlc3QtZm4tZXJyb3IuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQkFBMkI7QUFDM0IsaURBQXFEO0FBQ3JELHVDQUFxQztBQUNyQyw4REFBNkM7QUFDN0Msd0ZBQWdFO0FBQ2hFLGtHQUE4RDtBQUU5RCx5Q0FJb0I7QUFFcEIsU0FBUyw2QkFBNkIsQ0FBRSxLQUFLO0lBQ3pDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUVyQyxvRUFBb0U7SUFDcEUsT0FBTyxRQUFRO1FBQ1gsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFHLENBQUM7UUFDdEIsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGlDQUF1QixDQUFDO1FBQzdDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFVBQUcsR0FBRyxrQ0FBWSxHQUFHLFVBQUcsRUFBRSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVELFNBQXdCLGtCQUFrQixDQUFFLEdBQUc7SUFDM0MsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxJQUFJLEdBQUcsWUFBWSxvQkFBaUIsQ0FBQztRQUNoRSxPQUFPLEdBQUcsQ0FBQztJQUVmLElBQUksR0FBRyxJQUFJLEdBQUcsWUFBWSxrQkFBUTtRQUM5QixPQUFPLElBQUksa0NBQXVCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFNUMsSUFBSSxHQUFHLFlBQVksS0FBSyxFQUFFO1FBQ3RCLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQztRQUVwRyxrRkFBa0Y7UUFDbEYsNEVBQTRFO1FBQzVFLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxrQ0FBbUIsQ0FBQyxHQUFHLEVBQUUsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLENBQUMsa0NBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFdkgsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3JCLElBQUksd0NBQTZCLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDbEQsSUFBSSxrQ0FBdUIsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FDbEQ7SUFFRCxPQUFPLElBQUksMkNBQWdDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckQsQ0FBQztBQXBCRCxxQ0FvQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzZXAgfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IGdldENhbGxzaXRlRm9yRXJyb3IgfSBmcm9tICcuL2dldC1jYWxsc2l0ZSc7XG5pbXBvcnQgeyBBUElFcnJvciB9IGZyb20gJy4vcnVudGltZSc7XG5pbXBvcnQgVGVzdENhZmVFcnJvckxpc3QgZnJvbSAnLi9lcnJvci1saXN0JztcbmltcG9ydCBJTlRFUk5BTF9NT0RVTEVTX1BSRUZJWCBmcm9tICcuL2ludGVybmFsLW1vZHVsZXMtcHJlZml4JztcbmltcG9ydCBOT0RFX01PRFVMRVMgZnJvbSAnLi4vc2hhcmVkL25vZGUtbW9kdWxlcy1mb2xkZXItbmFtZSc7XG5cbmltcG9ydCB7XG4gICAgVW5jYXVnaHRFcnJvckluVGVzdENvZGUsXG4gICAgVW5jYXVnaHROb25FcnJvck9iamVjdEluVGVzdENvZGUsXG4gICAgRXh0ZXJuYWxBc3NlcnRpb25MaWJyYXJ5RXJyb3Jcbn0gZnJvbSAnLi90ZXN0LXJ1bic7XG5cbmZ1bmN0aW9uIGlzQXNzZXJ0aW9uRXJyb3JDYWxsc2l0ZUZyYW1lIChmcmFtZSkge1xuICAgIGNvbnN0IGZpbGVuYW1lID0gZnJhbWUuZ2V0RmlsZU5hbWUoKTtcblxuICAgIC8vIE5PVEU6IGZpbHRlciBvdXQgdGhlIGludGVybmFscyBvZiBub2RlLmpzIGFuZCBhc3NlcnRpb24gbGlicmFyaWVzXG4gICAgcmV0dXJuIGZpbGVuYW1lICYmXG4gICAgICAgIGZpbGVuYW1lLmluY2x1ZGVzKHNlcCkgJiZcbiAgICAgICAgIWZpbGVuYW1lLnN0YXJ0c1dpdGgoSU5URVJOQUxfTU9EVUxFU19QUkVGSVgpICYmXG4gICAgICAgICFmaWxlbmFtZS5pbmNsdWRlcyhgJHtzZXB9JHtOT0RFX01PRFVMRVN9JHtzZXB9YCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHByb2Nlc3NUZXN0Rm5FcnJvciAoZXJyKSB7XG4gICAgaWYgKGVyciAmJiAoZXJyLmlzVGVzdENhZmVFcnJvciB8fCBlcnIgaW5zdGFuY2VvZiBUZXN0Q2FmZUVycm9yTGlzdCkpXG4gICAgICAgIHJldHVybiBlcnI7XG5cbiAgICBpZiAoZXJyICYmIGVyciBpbnN0YW5jZW9mIEFQSUVycm9yKVxuICAgICAgICByZXR1cm4gbmV3IFVuY2F1Z2h0RXJyb3JJblRlc3RDb2RlKGVycik7XG5cbiAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgY29uc3QgaXNBc3NlcnRpb25FcnJvciA9IGVyci5uYW1lID09PSAnQXNzZXJ0aW9uRXJyb3InIHx8IGVyci5jb25zdHJ1Y3Rvci5uYW1lID09PSAnQXNzZXJ0aW9uRXJyb3InO1xuXG4gICAgICAgIC8vIE5PVEU6IGFzc2VydGlvbiBsaWJyYXJpZXMgY2FuIGFkZCB0aGVpciBzb3VyY2UgZmlsZXMgdG8gdGhlIGVycm9yIHN0YWNrIGZyYW1lcy5cbiAgICAgICAgLy8gV2Ugc2hvdWxkIHNraXAgdGhlbSB0byBjcmVhdGUgYSBjb3JyZWN0IGNhbGxzaXRlIGZvciB0aGUgYXNzZXJ0aW9uIGVycm9yLlxuICAgICAgICBjb25zdCBjYWxsc2l0ZSA9IGlzQXNzZXJ0aW9uRXJyb3IgPyBnZXRDYWxsc2l0ZUZvckVycm9yKGVyciwgaXNBc3NlcnRpb25FcnJvckNhbGxzaXRlRnJhbWUpIDogZ2V0Q2FsbHNpdGVGb3JFcnJvcihlcnIpO1xuXG4gICAgICAgIHJldHVybiBpc0Fzc2VydGlvbkVycm9yID9cbiAgICAgICAgICAgIG5ldyBFeHRlcm5hbEFzc2VydGlvbkxpYnJhcnlFcnJvcihlcnIsIGNhbGxzaXRlKSA6XG4gICAgICAgICAgICBuZXcgVW5jYXVnaHRFcnJvckluVGVzdENvZGUoZXJyLCBjYWxsc2l0ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBVbmNhdWdodE5vbkVycm9yT2JqZWN0SW5UZXN0Q29kZShlcnIpO1xufVxuIl19