testcafe 2.3.1 → 2.6.1

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 (235) hide show
  1. package/CHANGELOG.md +150 -0
  2. package/LICENSE +1 -1
  3. package/README.md +40 -46
  4. package/bin/testcafe-with-v8-flag-filter.js +10 -16
  5. package/lib/api/exportable-lib/index.js +1 -11
  6. package/lib/api/structure/test.js +4 -11
  7. package/lib/api/test-controller/execution-context.js +4 -2
  8. package/lib/api/test-controller/index.js +8 -10
  9. package/lib/api/test-run-tracker.js +1 -1
  10. package/lib/assertions/executor.js +2 -11
  11. package/lib/browser/connection/gateway/index.js +272 -0
  12. package/lib/browser/connection/gateway/status.js +10 -0
  13. package/lib/browser/connection/index.js +60 -47
  14. package/lib/browser/connection/service-routes.js +4 -2
  15. package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/index.js +3 -2
  16. package/lib/browser/provider/built-in/dedicated/chrome/index.js +48 -23
  17. package/lib/browser/provider/built-in/dedicated/edge/index.js +4 -1
  18. package/lib/browser/provider/index.js +13 -4
  19. package/lib/browser/provider/plugin-host.js +7 -1
  20. package/lib/cli/argument-parser/index.js +10 -16
  21. package/lib/cli/cli.js +4 -13
  22. package/lib/cli/remotes-wizard.js +2 -1
  23. package/lib/cli/utils/should-move-option-to-end.js +17 -0
  24. package/lib/client/automation/deps/hammerhead.js +24 -0
  25. package/lib/client/automation/deps/testcafe-core.js +24 -0
  26. package/lib/client/automation/index.js +567 -187
  27. package/lib/client/automation/index.min.js +1 -1
  28. package/lib/client/automation/playback/press/get-key-info.js +44 -0
  29. package/lib/client/automation/playback/press/utils.js +142 -0
  30. package/lib/client/automation/utils/get-key-code.js +15 -0
  31. package/lib/client/automation/utils/get-key-identifier.js +14 -0
  32. package/lib/client/automation/utils/is-letter.js +7 -0
  33. package/lib/client/automation/utils/key-identifier-maps.js +93 -0
  34. package/lib/client/browser/idle-page/index.html.mustache +2 -2
  35. package/lib/client/browser/idle-page/index.js +24 -11
  36. package/lib/client/core/index.js +67 -13
  37. package/lib/client/core/index.min.js +1 -1
  38. package/lib/client/core/utils/array.js +77 -0
  39. package/lib/client/core/utils/dom.js +459 -0
  40. package/lib/client/core/utils/send-request-to-frame.js +22 -0
  41. package/lib/client/core/utils/style.js +102 -0
  42. package/lib/client/core/utils/values/boundary-values.js +41 -0
  43. package/lib/client/driver/index.js +270 -242
  44. package/lib/client/driver/index.min.js +1 -1
  45. package/lib/client/test-run/iframe.js.mustache +6 -6
  46. package/lib/client/test-run/index.js.mustache +37 -33
  47. package/lib/client/ui/index.js +3238 -54
  48. package/lib/client/ui/index.min.js +1 -1
  49. package/lib/client/ui/sprite.svg +15 -0
  50. package/lib/client/ui/styles.css +184 -41
  51. package/lib/compiler/babel/load-libs.js +6 -6
  52. package/lib/compiler/compilers.js +7 -7
  53. package/lib/compiler/index.js +6 -6
  54. package/lib/compiler/interfaces.js +1 -1
  55. package/lib/compiler/test-file/add-export-api.js +3 -3
  56. package/lib/compiler/test-file/api-based.js +8 -37
  57. package/lib/compiler/test-file/formats/es-next/compiler.js +5 -5
  58. package/lib/compiler/test-file/formats/typescript/compiler.js +9 -9
  59. package/lib/compiler/test-file/get-exportable-lib-path.js +3 -3
  60. package/lib/configuration/configuration-base.js +9 -6
  61. package/lib/configuration/default-values.js +3 -3
  62. package/lib/configuration/formats.js +9 -5
  63. package/lib/configuration/interfaces.js +1 -1
  64. package/lib/configuration/option-names.js +3 -4
  65. package/lib/configuration/run-option-names.js +2 -2
  66. package/lib/configuration/testcafe-configuration.js +41 -24
  67. package/lib/configuration/types.js +1 -1
  68. package/lib/configuration/utils.js +32 -0
  69. package/lib/custom-client-scripts/client-script.js +2 -2
  70. package/lib/custom-client-scripts/get-code.js +3 -3
  71. package/lib/custom-client-scripts/routing.js +10 -12
  72. package/lib/errors/runtime/templates.js +3 -2
  73. package/lib/errors/test-run/templates.js +4 -1
  74. package/lib/errors/types.js +3 -1
  75. package/lib/index.js +6 -31
  76. package/lib/live/bootstrapper.js +3 -3
  77. package/lib/live/test-runner.js +9 -7
  78. package/lib/native-automation/add-custom-debug-formatters.js +23 -0
  79. package/lib/native-automation/api-base.js +27 -0
  80. package/lib/native-automation/client/event-descriptor.js +118 -0
  81. package/lib/native-automation/client/input.js +46 -0
  82. package/lib/native-automation/client/key-press/utils.js +31 -0
  83. package/lib/native-automation/client/types.js +11 -0
  84. package/lib/native-automation/client/utils.js +54 -0
  85. package/lib/native-automation/cookie-provider.js +115 -0
  86. package/lib/native-automation/empty-page-markup.js +11 -0
  87. package/lib/native-automation/error-route.js +7 -0
  88. package/lib/native-automation/errors.js +20 -0
  89. package/lib/native-automation/index.js +53 -0
  90. package/lib/native-automation/request-hooks/event-factory/frame-navigated-event-based.js +40 -0
  91. package/lib/native-automation/request-hooks/event-factory/request-paused-event-based.js +94 -0
  92. package/lib/native-automation/request-hooks/event-provider.js +55 -0
  93. package/lib/native-automation/request-hooks/pipeline-context.js +11 -0
  94. package/lib/{proxyless → native-automation}/request-pipeline/constants.js +1 -1
  95. package/lib/native-automation/request-pipeline/context-info.js +58 -0
  96. package/lib/native-automation/request-pipeline/index.js +329 -0
  97. package/lib/native-automation/request-pipeline/resendAuthRequest.js +23 -0
  98. package/lib/native-automation/request-pipeline/safe-api.js +66 -0
  99. package/lib/native-automation/request-pipeline/special-handlers.js +76 -0
  100. package/lib/native-automation/request-pipeline/test-run-bridge.js +45 -0
  101. package/lib/native-automation/resource-injector.js +175 -0
  102. package/lib/native-automation/session-storage/index.js +43 -0
  103. package/lib/native-automation/storages-provider.js +17 -0
  104. package/lib/native-automation/types.js +12 -0
  105. package/lib/native-automation/utils/cdp.js +71 -0
  106. package/lib/native-automation/utils/convert.js +11 -0
  107. package/lib/native-automation/utils/get-active-client.js +8 -0
  108. package/lib/native-automation/utils/headers.js +30 -0
  109. package/lib/native-automation/utils/string.js +32 -0
  110. package/lib/reporter/index.js +52 -4
  111. package/lib/reporter/interfaces.js +1 -1
  112. package/lib/reporter/plugin-host.js +44 -4
  113. package/lib/reporter/plugin-methods.js +2 -1
  114. package/lib/reporter/report-data-log.js +25 -0
  115. package/lib/role/role.js +4 -39
  116. package/lib/runner/bootstrapper.js +40 -15
  117. package/lib/runner/browser-job.js +4 -5
  118. package/lib/runner/fixture-hook-controller.js +1 -7
  119. package/lib/runner/index.js +87 -94
  120. package/lib/runner/interfaces.js +1 -1
  121. package/lib/runner/task/index.js +2 -32
  122. package/lib/runner/test-run-controller.js +46 -4
  123. package/lib/shared/errors/index.js +8 -2
  124. package/lib/shared/utils/is-file-protocol.js +2 -2
  125. package/lib/test-run/bookmark.js +5 -23
  126. package/lib/test-run/commands/actions.js +16 -4
  127. package/lib/test-run/commands/service.js +2 -3
  128. package/lib/test-run/commands/type.js +2 -1
  129. package/lib/test-run/commands/utils.js +4 -2
  130. package/lib/test-run/cookies/base.js +4 -1
  131. package/lib/test-run/cookies/factory.js +4 -4
  132. package/lib/test-run/cookies/provider.js +9 -2
  133. package/lib/test-run/execute-js-expression/index.js +4 -2
  134. package/lib/test-run/index.js +35 -151
  135. package/lib/test-run/request/create-request-options.js +37 -24
  136. package/lib/test-run/request/send.js +2 -3
  137. package/lib/test-run/role-provider.js +5 -5
  138. package/lib/test-run/session-controller.js +5 -5
  139. package/lib/test-run/storages/factory.js +4 -4
  140. package/lib/testcafe.js +17 -18
  141. package/lib/utils/check-is-vm.js +58 -0
  142. package/lib/utils/debug-loggers.js +9 -7
  143. package/lib/utils/get-browser.js +5 -2
  144. package/lib/utils/get-options/boolean-or-object-option.js +18 -0
  145. package/lib/utils/get-options/quarantine.js +10 -13
  146. package/lib/utils/get-options/skip-js-errors.js +12 -16
  147. package/lib/utils/parse-user-agent.js +20 -13
  148. package/lib/utils/string.js +1 -1
  149. package/package.json +14 -11
  150. package/ts-defs/index.d.ts +12 -2
  151. package/ts-defs/selectors.d.ts +8 -1
  152. package/ts-defs/testcafe-scripts.d.ts +8 -1
  153. package/lib/browser/connection/gateway.js +0 -205
  154. package/lib/compiler/test-file/test-file-temp-variable-name.js +0 -6
  155. package/lib/dashboard/config-storage.js +0 -26
  156. package/lib/dashboard/connector.js +0 -84
  157. package/lib/dashboard/documentation-url.js +0 -6
  158. package/lib/dashboard/formatting.js +0 -26
  159. package/lib/dashboard/get-dashboard-url.js +0 -10
  160. package/lib/dashboard/get-default-project-link.js +0 -23
  161. package/lib/dashboard/get-env-options.js +0 -26
  162. package/lib/dashboard/index.js +0 -145
  163. package/lib/dashboard/interfaces.js +0 -3
  164. package/lib/dashboard/messages.js +0 -21
  165. package/lib/proxyless/add-custom-debug-formatters.js +0 -22
  166. package/lib/proxyless/api-base.js +0 -25
  167. package/lib/proxyless/client/event-simulator.js +0 -40
  168. package/lib/proxyless/client/types.js +0 -11
  169. package/lib/proxyless/client/utils.js +0 -24
  170. package/lib/proxyless/cookie-provider.js +0 -87
  171. package/lib/proxyless/default-setup-options.js +0 -9
  172. package/lib/proxyless/empty-page-markup.js +0 -11
  173. package/lib/proxyless/error-route.js +0 -7
  174. package/lib/proxyless/index.js +0 -53
  175. package/lib/proxyless/request-hooks/event-factory/frame-navigated-event-based.js +0 -40
  176. package/lib/proxyless/request-hooks/event-factory/request-paused-event-based.js +0 -95
  177. package/lib/proxyless/request-hooks/event-provider.js +0 -52
  178. package/lib/proxyless/request-hooks/pipeline-context.js +0 -11
  179. package/lib/proxyless/request-pipeline/context-info.js +0 -55
  180. package/lib/proxyless/request-pipeline/index.js +0 -230
  181. package/lib/proxyless/request-pipeline/resendAuthRequest.js +0 -23
  182. package/lib/proxyless/request-pipeline/safe-api.js +0 -62
  183. package/lib/proxyless/request-pipeline/special-handlers.js +0 -73
  184. package/lib/proxyless/request-pipeline/test-run-bridge.js +0 -45
  185. package/lib/proxyless/resource-injector.js +0 -162
  186. package/lib/proxyless/session-storage/index.js +0 -39
  187. package/lib/proxyless/storages-provider.js +0 -17
  188. package/lib/proxyless/types.js +0 -10
  189. package/lib/proxyless/utils/cdp.js +0 -66
  190. package/lib/proxyless/utils/get-active-client.js +0 -8
  191. package/lib/proxyless/utils/headers.js +0 -30
  192. package/lib/proxyless/utils/string.js +0 -32
  193. package/lib/services/compiler/esm-runtime-holder-name.js +0 -6
  194. package/lib/services/compiler/host.js +0 -370
  195. package/lib/services/compiler/interfaces.js +0 -3
  196. package/lib/services/compiler/io.js +0 -10
  197. package/lib/services/compiler/protocol.js +0 -17
  198. package/lib/services/compiler/service-loader.js +0 -18
  199. package/lib/services/compiler/service.js +0 -361
  200. package/lib/services/compiler/test-run-proxy.js +0 -156
  201. package/lib/services/interfaces.js +0 -3
  202. package/lib/services/process-title.js +0 -10
  203. package/lib/services/serialization/prepare-options.js +0 -23
  204. package/lib/services/serialization/replicator/create-replicator.js +0 -58
  205. package/lib/services/serialization/replicator/interfaces.js +0 -3
  206. package/lib/services/serialization/replicator/transforms/base-transform.js +0 -16
  207. package/lib/services/serialization/replicator/transforms/browser-console-messages-transform.js +0 -23
  208. package/lib/services/serialization/replicator/transforms/callsite-record-transform.js +0 -24
  209. package/lib/services/serialization/replicator/transforms/command-base-trasform/assertion-command-constructors.js +0 -28
  210. package/lib/services/serialization/replicator/transforms/command-base-trasform/command-constructors.js +0 -66
  211. package/lib/services/serialization/replicator/transforms/command-base-trasform/index.js +0 -49
  212. package/lib/services/serialization/replicator/transforms/command-base-trasform/types.js +0 -3
  213. package/lib/services/serialization/replicator/transforms/configure-response-event-option-transform.js +0 -21
  214. package/lib/services/serialization/replicator/transforms/custom-error-transform.js +0 -29
  215. package/lib/services/serialization/replicator/transforms/function-marker-transform/index.js +0 -21
  216. package/lib/services/serialization/replicator/transforms/function-marker-transform/marker.js +0 -9
  217. package/lib/services/serialization/replicator/transforms/promise-marker-transform/index.js +0 -21
  218. package/lib/services/serialization/replicator/transforms/promise-marker-transform/marker.js +0 -9
  219. package/lib/services/serialization/replicator/transforms/raw-command-callsite-record-transform.js +0 -22
  220. package/lib/services/serialization/replicator/transforms/re-executable-promise-transform/index.js +0 -22
  221. package/lib/services/serialization/replicator/transforms/re-executable-promise-transform/marker.js +0 -6
  222. package/lib/services/serialization/replicator/transforms/request-filter-rule-transform.js +0 -23
  223. package/lib/services/serialization/replicator/transforms/request-hook-event-data-transform.js +0 -41
  224. package/lib/services/serialization/replicator/transforms/response-mock-transform.js +0 -23
  225. package/lib/services/serialization/replicator/transforms/role-transform.js +0 -21
  226. package/lib/services/serialization/replicator/transforms/testcafe-error-list-transform.js +0 -23
  227. package/lib/services/serialization/replicator/transforms/url-transform.js +0 -23
  228. package/lib/services/serialization/test-structure.js +0 -91
  229. package/lib/services/utils/ipc/interfaces.js +0 -29
  230. package/lib/services/utils/ipc/io.js +0 -109
  231. package/lib/services/utils/ipc/message.js +0 -84
  232. package/lib/services/utils/ipc/packet.js +0 -57
  233. package/lib/services/utils/ipc/proxy.js +0 -94
  234. package/lib/services/utils/ipc/transport.js +0 -65
  235. package/lib/services/utils/method-should-not-be-called-error.js +0 -10
@@ -3,13 +3,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.requestPipelineOtherRequestLogger = exports.requestPipelineServiceRequestLogger = exports.requestPipelineInternalRequestLogger = exports.requestPipelineMockLogger = exports.requestHooksEventProviderLogger = exports.chromeBrowserProviderLogger = exports.resourceInjectorLogger = exports.requestPipelineLogger = exports.proxylessLogger = void 0;
6
+ exports.requestPipelineContextLogger = exports.requestPipelineOtherRequestLogger = exports.requestPipelineServiceRequestLogger = exports.requestPipelineInternalRequestLogger = exports.requestPipelineMockLogger = exports.requestHooksEventProviderLogger = exports.chromeBrowserProviderLogger = exports.resourceInjectorLogger = exports.requestPipelineLogger = exports.nativeAutomationLogger = void 0;
7
7
  const debug_1 = __importDefault(require("debug"));
8
8
  const testcafeLogger = (0, debug_1.default)('testcafe');
9
- const proxylessLogger = testcafeLogger.extend('proxyless');
10
- exports.proxylessLogger = proxylessLogger;
11
- const requestPipelineLogger = proxylessLogger.extend('request-pipeline');
9
+ const nativeAutomationLogger = testcafeLogger.extend('native-automation');
10
+ exports.nativeAutomationLogger = nativeAutomationLogger;
11
+ const requestPipelineLogger = nativeAutomationLogger.extend('request-pipeline');
12
12
  exports.requestPipelineLogger = requestPipelineLogger;
13
+ const requestPipelineContextLogger = requestPipelineLogger.extend('context');
14
+ exports.requestPipelineContextLogger = requestPipelineContextLogger;
13
15
  const requestPipelineMockLogger = requestPipelineLogger.extend('mock');
14
16
  exports.requestPipelineMockLogger = requestPipelineMockLogger;
15
17
  const requestPipelineInternalRequestLogger = requestPipelineLogger.extend('internal-request');
@@ -18,13 +20,13 @@ const requestPipelineServiceRequestLogger = requestPipelineLogger.extend('servic
18
20
  exports.requestPipelineServiceRequestLogger = requestPipelineServiceRequestLogger;
19
21
  const requestPipelineOtherRequestLogger = requestPipelineLogger.extend('other-request');
20
22
  exports.requestPipelineOtherRequestLogger = requestPipelineOtherRequestLogger;
21
- const resourceInjectorLogger = proxylessLogger.extend('resource-injector');
23
+ const resourceInjectorLogger = nativeAutomationLogger.extend('resource-injector');
22
24
  exports.resourceInjectorLogger = resourceInjectorLogger;
23
- const requestHooksLogger = proxylessLogger.extend('request-hooks');
25
+ const requestHooksLogger = nativeAutomationLogger.extend('request-hooks');
24
26
  const requestHooksEventProviderLogger = requestHooksLogger.extend('event-provider');
25
27
  exports.requestHooksEventProviderLogger = requestHooksEventProviderLogger;
26
28
  const browserLogger = testcafeLogger.extend('browser');
27
29
  const browserProviderLogger = browserLogger.extend('provider');
28
30
  const chromeBrowserProviderLogger = browserProviderLogger.extend('chrome');
29
31
  exports.chromeBrowserProviderLogger = chromeBrowserProviderLogger;
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWctbG9nZ2Vycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kZWJ1Zy1sb2dnZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUUxQixNQUFNLGNBQWMsR0FBRyxJQUFBLGVBQUssRUFBQyxVQUFVLENBQUMsQ0FBQztBQUV6QyxNQUFNLGVBQWUsR0FBd0IsY0FBYyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQWU1RSwwQ0FBZTtBQWRuQixNQUFNLHFCQUFxQixHQUFrQixlQUFlLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFlcEYsc0RBQXFCO0FBZHpCLE1BQU0seUJBQXlCLEdBQWMscUJBQXFCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBa0I5RSw4REFBeUI7QUFqQjdCLE1BQU0sb0NBQW9DLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFrQjFGLG9GQUFvQztBQWpCeEMsTUFBTSxtQ0FBbUMsR0FBSSxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQWtCekYsa0ZBQW1DO0FBakJ2QyxNQUFNLGlDQUFpQyxHQUFNLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQWtCdkYsOEVBQWlDO0FBakJyQyxNQUFNLHNCQUFzQixHQUFpQixlQUFlLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFXckYsd0RBQXNCO0FBVjFCLE1BQU0sa0JBQWtCLEdBQXFCLGVBQWUsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDckYsTUFBTSwrQkFBK0IsR0FBUSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQVdyRiwwRUFBK0I7QUFUbkMsTUFBTSxhQUFhLEdBQWlCLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDckUsTUFBTSxxQkFBcUIsR0FBUyxhQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3JFLE1BQU0sMkJBQTJCLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBTXZFLGtFQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5cbmNvbnN0IHRlc3RjYWZlTG9nZ2VyID0gZGVidWcoJ3Rlc3RjYWZlJyk7XG5cbmNvbnN0IHByb3h5bGVzc0xvZ2dlciAgICAgICAgICAgICAgICAgICAgICA9IHRlc3RjYWZlTG9nZ2VyLmV4dGVuZCgncHJveHlsZXNzJyk7XG5jb25zdCByZXF1ZXN0UGlwZWxpbmVMb2dnZXIgICAgICAgICAgICAgICAgPSBwcm94eWxlc3NMb2dnZXIuZXh0ZW5kKCdyZXF1ZXN0LXBpcGVsaW5lJyk7XG5jb25zdCByZXF1ZXN0UGlwZWxpbmVNb2NrTG9nZ2VyICAgICAgICAgICAgPSByZXF1ZXN0UGlwZWxpbmVMb2dnZXIuZXh0ZW5kKCdtb2NrJyk7XG5jb25zdCByZXF1ZXN0UGlwZWxpbmVJbnRlcm5hbFJlcXVlc3RMb2dnZXIgPSByZXF1ZXN0UGlwZWxpbmVMb2dnZXIuZXh0ZW5kKCdpbnRlcm5hbC1yZXF1ZXN0Jyk7XG5jb25zdCByZXF1ZXN0UGlwZWxpbmVTZXJ2aWNlUmVxdWVzdExvZ2dlciAgPSByZXF1ZXN0UGlwZWxpbmVMb2dnZXIuZXh0ZW5kKCdzZXJ2aWNlLXJlcXVlc3QnKTtcbmNvbnN0IHJlcXVlc3RQaXBlbGluZU90aGVyUmVxdWVzdExvZ2dlciAgICA9IHJlcXVlc3RQaXBlbGluZUxvZ2dlci5leHRlbmQoJ290aGVyLXJlcXVlc3QnKTtcbmNvbnN0IHJlc291cmNlSW5qZWN0b3JMb2dnZXIgICAgICAgICAgICAgICA9IHByb3h5bGVzc0xvZ2dlci5leHRlbmQoJ3Jlc291cmNlLWluamVjdG9yJyk7XG5jb25zdCByZXF1ZXN0SG9va3NMb2dnZXIgICAgICAgICAgICAgICAgICAgPSBwcm94eWxlc3NMb2dnZXIuZXh0ZW5kKCdyZXF1ZXN0LWhvb2tzJyk7XG5jb25zdCByZXF1ZXN0SG9va3NFdmVudFByb3ZpZGVyTG9nZ2VyICAgICAgPSByZXF1ZXN0SG9va3NMb2dnZXIuZXh0ZW5kKCdldmVudC1wcm92aWRlcicpO1xuXG5jb25zdCBicm93c2VyTG9nZ2VyICAgICAgICAgICAgICAgPSB0ZXN0Y2FmZUxvZ2dlci5leHRlbmQoJ2Jyb3dzZXInKTtcbmNvbnN0IGJyb3dzZXJQcm92aWRlckxvZ2dlciAgICAgICA9IGJyb3dzZXJMb2dnZXIuZXh0ZW5kKCdwcm92aWRlcicpO1xuY29uc3QgY2hyb21lQnJvd3NlclByb3ZpZGVyTG9nZ2VyID0gYnJvd3NlclByb3ZpZGVyTG9nZ2VyLmV4dGVuZCgnY2hyb21lJyk7XG5cbmV4cG9ydCB7XG4gICAgcHJveHlsZXNzTG9nZ2VyLFxuICAgIHJlcXVlc3RQaXBlbGluZUxvZ2dlcixcbiAgICByZXNvdXJjZUluamVjdG9yTG9nZ2VyLFxuICAgIGNocm9tZUJyb3dzZXJQcm92aWRlckxvZ2dlcixcbiAgICByZXF1ZXN0SG9va3NFdmVudFByb3ZpZGVyTG9nZ2VyLFxuICAgIHJlcXVlc3RQaXBlbGluZU1vY2tMb2dnZXIsXG4gICAgcmVxdWVzdFBpcGVsaW5lSW50ZXJuYWxSZXF1ZXN0TG9nZ2VyLFxuICAgIHJlcXVlc3RQaXBlbGluZVNlcnZpY2VSZXF1ZXN0TG9nZ2VyLFxuICAgIHJlcXVlc3RQaXBlbGluZU90aGVyUmVxdWVzdExvZ2dlcixcbn07XG4iXX0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWctbG9nZ2Vycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kZWJ1Zy1sb2dnZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUUxQixNQUFNLGNBQWMsR0FBRyxJQUFBLGVBQUssRUFBQyxVQUFVLENBQUMsQ0FBQztBQUV6QyxNQUFNLHNCQUFzQixHQUFpQixjQUFjLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFnQnBGLHdEQUFzQjtBQWYxQixNQUFNLHFCQUFxQixHQUFrQixzQkFBc0IsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQWdCM0Ysc0RBQXFCO0FBZnpCLE1BQU0sNEJBQTRCLEdBQVcscUJBQXFCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBdUJqRixvRUFBNEI7QUF0QmhDLE1BQU0seUJBQXlCLEdBQWMscUJBQXFCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBa0I5RSw4REFBeUI7QUFqQjdCLE1BQU0sb0NBQW9DLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFrQjFGLG9GQUFvQztBQWpCeEMsTUFBTSxtQ0FBbUMsR0FBSSxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQWtCekYsa0ZBQW1DO0FBakJ2QyxNQUFNLGlDQUFpQyxHQUFNLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQWtCdkYsOEVBQWlDO0FBakJyQyxNQUFNLHNCQUFzQixHQUFpQixzQkFBc0IsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQVc1Rix3REFBc0I7QUFWMUIsTUFBTSxrQkFBa0IsR0FBcUIsc0JBQXNCLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQzVGLE1BQU0sK0JBQStCLEdBQVEsa0JBQWtCLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFXckYsMEVBQStCO0FBVG5DLE1BQU0sYUFBYSxHQUFpQixjQUFjLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3JFLE1BQU0scUJBQXFCLEdBQVMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNyRSxNQUFNLDJCQUEyQixHQUFHLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQU12RSxrRUFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuXG5jb25zdCB0ZXN0Y2FmZUxvZ2dlciA9IGRlYnVnKCd0ZXN0Y2FmZScpO1xuXG5jb25zdCBuYXRpdmVBdXRvbWF0aW9uTG9nZ2VyICAgICAgICAgICAgICAgPSB0ZXN0Y2FmZUxvZ2dlci5leHRlbmQoJ25hdGl2ZS1hdXRvbWF0aW9uJyk7XG5jb25zdCByZXF1ZXN0UGlwZWxpbmVMb2dnZXIgICAgICAgICAgICAgICAgPSBuYXRpdmVBdXRvbWF0aW9uTG9nZ2VyLmV4dGVuZCgncmVxdWVzdC1waXBlbGluZScpO1xuY29uc3QgcmVxdWVzdFBpcGVsaW5lQ29udGV4dExvZ2dlciAgICAgICAgID0gcmVxdWVzdFBpcGVsaW5lTG9nZ2VyLmV4dGVuZCgnY29udGV4dCcpO1xuY29uc3QgcmVxdWVzdFBpcGVsaW5lTW9ja0xvZ2dlciAgICAgICAgICAgID0gcmVxdWVzdFBpcGVsaW5lTG9nZ2VyLmV4dGVuZCgnbW9jaycpO1xuY29uc3QgcmVxdWVzdFBpcGVsaW5lSW50ZXJuYWxSZXF1ZXN0TG9nZ2VyID0gcmVxdWVzdFBpcGVsaW5lTG9nZ2VyLmV4dGVuZCgnaW50ZXJuYWwtcmVxdWVzdCcpO1xuY29uc3QgcmVxdWVzdFBpcGVsaW5lU2VydmljZVJlcXVlc3RMb2dnZXIgID0gcmVxdWVzdFBpcGVsaW5lTG9nZ2VyLmV4dGVuZCgnc2VydmljZS1yZXF1ZXN0Jyk7XG5jb25zdCByZXF1ZXN0UGlwZWxpbmVPdGhlclJlcXVlc3RMb2dnZXIgICAgPSByZXF1ZXN0UGlwZWxpbmVMb2dnZXIuZXh0ZW5kKCdvdGhlci1yZXF1ZXN0Jyk7XG5jb25zdCByZXNvdXJjZUluamVjdG9yTG9nZ2VyICAgICAgICAgICAgICAgPSBuYXRpdmVBdXRvbWF0aW9uTG9nZ2VyLmV4dGVuZCgncmVzb3VyY2UtaW5qZWN0b3InKTtcbmNvbnN0IHJlcXVlc3RIb29rc0xvZ2dlciAgICAgICAgICAgICAgICAgICA9IG5hdGl2ZUF1dG9tYXRpb25Mb2dnZXIuZXh0ZW5kKCdyZXF1ZXN0LWhvb2tzJyk7XG5jb25zdCByZXF1ZXN0SG9va3NFdmVudFByb3ZpZGVyTG9nZ2VyICAgICAgPSByZXF1ZXN0SG9va3NMb2dnZXIuZXh0ZW5kKCdldmVudC1wcm92aWRlcicpO1xuXG5jb25zdCBicm93c2VyTG9nZ2VyICAgICAgICAgICAgICAgPSB0ZXN0Y2FmZUxvZ2dlci5leHRlbmQoJ2Jyb3dzZXInKTtcbmNvbnN0IGJyb3dzZXJQcm92aWRlckxvZ2dlciAgICAgICA9IGJyb3dzZXJMb2dnZXIuZXh0ZW5kKCdwcm92aWRlcicpO1xuY29uc3QgY2hyb21lQnJvd3NlclByb3ZpZGVyTG9nZ2VyID0gYnJvd3NlclByb3ZpZGVyTG9nZ2VyLmV4dGVuZCgnY2hyb21lJyk7XG5cbmV4cG9ydCB7XG4gICAgbmF0aXZlQXV0b21hdGlvbkxvZ2dlcixcbiAgICByZXF1ZXN0UGlwZWxpbmVMb2dnZXIsXG4gICAgcmVzb3VyY2VJbmplY3RvckxvZ2dlcixcbiAgICBjaHJvbWVCcm93c2VyUHJvdmlkZXJMb2dnZXIsXG4gICAgcmVxdWVzdEhvb2tzRXZlbnRQcm92aWRlckxvZ2dlcixcbiAgICByZXF1ZXN0UGlwZWxpbmVNb2NrTG9nZ2VyLFxuICAgIHJlcXVlc3RQaXBlbGluZUludGVybmFsUmVxdWVzdExvZ2dlcixcbiAgICByZXF1ZXN0UGlwZWxpbmVTZXJ2aWNlUmVxdWVzdExvZ2dlcixcbiAgICByZXF1ZXN0UGlwZWxpbmVPdGhlclJlcXVlc3RMb2dnZXIsXG4gICAgcmVxdWVzdFBpcGVsaW5lQ29udGV4dExvZ2dlcixcbn07XG4iXX0=
@@ -3,8 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const lodash_1 = require("lodash");
4
4
  function getBrowser(browserConnection) {
5
5
  const { browserInfo: { parsedUserAgent, alias } } = browserConnection;
6
- return (0, lodash_1.assign)({}, parsedUserAgent, { alias, headless: browserConnection.isHeadlessBrowser() });
6
+ return (0, lodash_1.assign)({}, parsedUserAgent, {
7
+ alias,
8
+ headless: browserConnection.isHeadlessBrowser(),
9
+ });
7
10
  }
8
11
  exports.default = getBrowser;
9
12
  module.exports = exports.default;
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWJyb3dzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvZ2V0LWJyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtQ0FBZ0M7QUFTaEMsU0FBd0IsVUFBVSxDQUFFLGlCQUFvQztJQUNwRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsaUJBQWlCLENBQUM7SUFFdEUsT0FBTyxJQUFBLGVBQU0sRUFBQyxFQUFFLEVBQUUsZUFBZSxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNuRyxDQUFDO0FBSkQsNkJBSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NpZ24gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUGFyc2VkVXNlckFnZW50IH0gZnJvbSAnLi9wYXJzZS11c2VyLWFnZW50JztcbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvbiBmcm9tICcuLi9icm93c2VyL2Nvbm5lY3Rpb24nO1xuXG5pbnRlcmZhY2UgQnJvd3NlciBleHRlbmRzIFBhcnNlZFVzZXJBZ2VudCB7XG4gICAgYWxpYXM6IHN0cmluZztcbiAgICBoZWFkbGVzczogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QnJvd3NlciAoYnJvd3NlckNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uKTogQnJvd3NlciB7XG4gICAgY29uc3QgeyBicm93c2VySW5mbzogeyBwYXJzZWRVc2VyQWdlbnQsIGFsaWFzIH0gfSA9IGJyb3dzZXJDb25uZWN0aW9uO1xuXG4gICAgcmV0dXJuIGFzc2lnbih7fSwgcGFyc2VkVXNlckFnZW50LCB7IGFsaWFzLCBoZWFkbGVzczogYnJvd3NlckNvbm5lY3Rpb24uaXNIZWFkbGVzc0Jyb3dzZXIoKSB9KTtcbn1cbiJdfQ==
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWJyb3dzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvZ2V0LWJyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtQ0FBZ0M7QUFTaEMsU0FBd0IsVUFBVSxDQUFFLGlCQUFvQztJQUNwRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsaUJBQWlCLENBQUM7SUFFdEUsT0FBTyxJQUFBLGVBQU0sRUFBQyxFQUFFLEVBQUUsZUFBZSxFQUFFO1FBQy9CLEtBQUs7UUFDTCxRQUFRLEVBQUUsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUU7S0FDbEQsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQVBELDZCQU9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzaWduIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFBhcnNlZFVzZXJBZ2VudCB9IGZyb20gJy4vcGFyc2UtdXNlci1hZ2VudCc7XG5pbXBvcnQgQnJvd3NlckNvbm5lY3Rpb24gZnJvbSAnLi4vYnJvd3Nlci9jb25uZWN0aW9uJztcblxuaW50ZXJmYWNlIEJyb3dzZXIgZXh0ZW5kcyBQYXJzZWRVc2VyQWdlbnQge1xuICAgIGFsaWFzOiBzdHJpbmc7XG4gICAgaGVhZGxlc3M6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJyb3dzZXIgKGJyb3dzZXJDb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IEJyb3dzZXIge1xuICAgIGNvbnN0IHsgYnJvd3NlckluZm86IHsgcGFyc2VkVXNlckFnZW50LCBhbGlhcyB9IH0gPSBicm93c2VyQ29ubmVjdGlvbjtcblxuICAgIHJldHVybiBhc3NpZ24oe30sIHBhcnNlZFVzZXJBZ2VudCwge1xuICAgICAgICBhbGlhcyxcbiAgICAgICAgaGVhZGxlc3M6IGJyb3dzZXJDb25uZWN0aW9uLmlzSGVhZGxlc3NCcm93c2VyKCksXG4gICAgfSk7XG59XG4iXX0=
@@ -0,0 +1,18 @@
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.getBooleanOrObjectOption = void 0;
7
+ const base_1 = __importDefault(require("./base"));
8
+ const convert_to_best_fit_type_1 = __importDefault(require("../convert-to-best-fit-type"));
9
+ async function getBooleanOrObjectOption(optionName, options, optionsConfig, validator) {
10
+ options = (0, convert_to_best_fit_type_1.default)(options);
11
+ if (typeof options === 'boolean')
12
+ return options;
13
+ const parsedOptions = await (0, base_1.default)(options, optionsConfig);
14
+ await validator(parsedOptions);
15
+ return parsedOptions;
16
+ }
17
+ exports.getBooleanOrObjectOption = getBooleanOrObjectOption;
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi1vci1vYmplY3Qtb3B0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2dldC1vcHRpb25zL2Jvb2xlYW4tb3Itb2JqZWN0LW9wdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBb0M7QUFDcEMsMkZBQStEO0FBTXhELEtBQUssVUFBVSx3QkFBd0IsQ0FBSyxVQUFrQixFQUFFLE9BQTJDLEVBQUUsYUFBcUMsRUFBRSxTQUFnQztJQUN2TCxPQUFPLEdBQUcsSUFBQSxrQ0FBb0IsRUFBQyxPQUFPLENBQUMsQ0FBQztJQUV4QyxJQUFJLE9BQU8sT0FBTyxLQUFLLFNBQVM7UUFDNUIsT0FBTyxPQUFPLENBQUM7SUFFbkIsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFBLGNBQWMsRUFBQyxPQUFpQixFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRTdFLE1BQU0sU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRS9CLE9BQU8sYUFBYSxDQUFDO0FBQ3pCLENBQUM7QUFYRCw0REFXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlR2V0T3B0aW9ucyBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IGNvbnZlcnRUb0Jlc3RGaXRUeXBlIGZyb20gJy4uL2NvbnZlcnQtdG8tYmVzdC1maXQtdHlwZSc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5LCBHZXRPcHRpb25Db25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9pbnRlcmZhY2VzJztcblxudHlwZSBCb29sZWFuT3JPYmplY3RPcHRpb248VD4gPSBib29sZWFuIHwgRGljdGlvbmFyeTxUPlxudHlwZSBWYWxpZGF0aW9uRnVuY3Rpb248VD4gPSAob3B0czogRGljdGlvbmFyeTxUPikgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRCb29sZWFuT3JPYmplY3RPcHRpb248VD4gKG9wdGlvbk5hbWU6IHN0cmluZywgb3B0aW9uczogYm9vbGVhbiB8IHN0cmluZyB8IERpY3Rpb25hcnk8YW55Piwgb3B0aW9uc0NvbmZpZzogR2V0T3B0aW9uQ29uZmlndXJhdGlvbiwgdmFsaWRhdG9yOiBWYWxpZGF0aW9uRnVuY3Rpb248VD4pOiBQcm9taXNlPEJvb2xlYW5Pck9iamVjdE9wdGlvbjxUPj4ge1xuICAgIG9wdGlvbnMgPSBjb252ZXJ0VG9CZXN0Rml0VHlwZShvcHRpb25zKTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Jvb2xlYW4nKVxuICAgICAgICByZXR1cm4gb3B0aW9ucztcblxuICAgIGNvbnN0IHBhcnNlZE9wdGlvbnMgPSBhd2FpdCBiYXNlR2V0T3B0aW9ucyhvcHRpb25zIGFzIHN0cmluZywgb3B0aW9uc0NvbmZpZyk7XG5cbiAgICBhd2FpdCB2YWxpZGF0b3IocGFyc2VkT3B0aW9ucyk7XG5cbiAgICByZXR1cm4gcGFyc2VkT3B0aW9ucztcbn1cbiJdfQ==
@@ -4,10 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Quarantine = exports.getQuarantineOptions = exports.validateQuarantineOptions = void 0;
7
- const base_1 = __importDefault(require("./base"));
8
7
  const quarantine_option_names_1 = __importDefault(require("../../configuration/quarantine-option-names"));
9
8
  const types_1 = require("../../errors/types");
10
9
  const runtime_1 = require("../../errors/runtime");
10
+ const boolean_or_object_option_1 = require("./boolean-or-object-option");
11
11
  const DEFAULT_ATTEMPT_LIMIT = 5;
12
12
  const DEFAULT_THRESHOLD = 3;
13
13
  const MIN_ATTEMPT_LIMIT = 2;
@@ -31,18 +31,15 @@ function validateQuarantineOptions(options) {
31
31
  }
32
32
  exports.validateQuarantineOptions = validateQuarantineOptions;
33
33
  async function getQuarantineOptions(optionName, options) {
34
- if (typeof options === 'boolean')
35
- return true;
36
- const parsedOptions = await (0, base_1.default)(options, {
34
+ const onOptionParsed = async (key, value) => {
35
+ if (!key || !value)
36
+ throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.optionValueIsNotValidKeyValue, optionName);
37
+ return Number(value);
38
+ };
39
+ return await (0, boolean_or_object_option_1.getBooleanOrObjectOption)(optionName, options, {
40
+ onOptionParsed,
37
41
  skipOptionValueTypeConversion: true,
38
- async onOptionParsed(key, value) {
39
- if (!key || !value)
40
- throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.optionValueIsNotValidKeyValue, optionName);
41
- return Number(value);
42
- },
43
- });
44
- validateQuarantineOptions(parsedOptions);
45
- return parsedOptions;
42
+ }, validateQuarantineOptions);
46
43
  }
47
44
  exports.getQuarantineOptions = getQuarantineOptions;
48
45
  class Quarantine {
@@ -98,4 +95,4 @@ class Quarantine {
98
95
  }
99
96
  }
100
97
  exports.Quarantine = Quarantine;
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhcmFudGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9nZXQtb3B0aW9ucy9xdWFyYW50aW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUFvQztBQUNwQywwR0FBa0Y7QUFDbEYsOENBQW9EO0FBQ3BELGtEQUFvRDtBQUlwRCxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQztBQUNoQyxNQUFNLGlCQUFpQixHQUFPLENBQUMsQ0FBQztBQUNoQyxNQUFNLGlCQUFpQixHQUFPLENBQUMsQ0FBQztBQUNoQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQztBQUVoQyxTQUFTLG1CQUFtQixDQUFFLE1BQWM7SUFDeEMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLGlDQUF1QixDQUFDLENBQUMsUUFBUSxDQUFDLE1BQWlDLENBQUMsQ0FBQztBQUM5RixDQUFDO0FBRUQsU0FBZ0IseUJBQXlCLENBQUUsT0FBb0M7SUFDM0UsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUU7UUFDdkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQztZQUN6QixNQUFNLElBQUksc0JBQVksQ0FBQyxzQkFBYyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQzNFO0lBRUQsTUFBTSxZQUFZLEdBQU8sT0FBTyxPQUFPLENBQUMsWUFBWSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUM7SUFDakgsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLE9BQU8sQ0FBQyxnQkFBZ0IsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUM7SUFFckgsSUFBSSxZQUFZLEdBQUcsaUJBQWlCO1FBQ2hDLE1BQU0sSUFBSSxzQkFBWSxDQUFDLHNCQUFjLENBQUMsd0JB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QixHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFFckUsT0FBTyx1QkFBdUIsSUFBSSx1QkFBdUIsQ0FBQztJQUM5RCxDQUFDO0lBRU0sd0JBQXdCLENBQUUsV0FBNkM7UUFDMUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFMUUsT0FBTyxXQUFXLEtBQUssQ0FBQyxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVPLGtCQUFrQixDQUFFLFdBQThDO1FBQ3RFLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNsRCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFFbEQsSUFBSSxXQUFXLEVBQUU7WUFDYixJQUFJLFdBQVcsQ0FBQyxNQUFNO2dCQUNsQixXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQzs7Z0JBRWxDLFdBQVcsSUFBSSxDQUFDLENBQUM7U0FDeEI7UUFFRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztJQUMxRSxDQUFDO0NBQ0o7QUFuRUQsZ0NBbUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJhc2VHZXRPcHRpb25zIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgUVVBUkFOVElORV9PUFRJT05fTkFNRVMgZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9xdWFyYW50aW5lLW9wdGlvbi1uYW1lcyc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uLy4uL2Vycm9ycy90eXBlcyc7XG5pbXBvcnQgeyBHZW5lcmFsRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9pbnRlcmZhY2VzJztcbmltcG9ydCBUZXN0UnVuRXJyb3JGb3JtYXR0YWJsZUFkYXB0ZXIgZnJvbSAnLi4vLi4vZXJyb3JzL3Rlc3QtcnVuL2Zvcm1hdHRhYmxlLWFkYXB0ZXInO1xuXG5jb25zdCBERUZBVUxUX0FUVEVNUFRfTElNSVQgPSA1O1xuY29uc3QgREVGQVVMVF9USFJFU0hPTEQgICAgID0gMztcbmNvbnN0IE1JTl9BVFRFTVBUX0xJTUlUICAgICA9IDI7XG5jb25zdCBNSU5fU1VDQ0VTU19USFJFU0hPTEQgPSAxO1xuXG5mdW5jdGlvbiBfaXNRdWFyYW50aW5lT3B0aW9uIChvcHRpb246IHN0cmluZyk6IG9wdGlvbiBpcyBRVUFSQU5USU5FX09QVElPTl9OQU1FUyB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoUVVBUkFOVElORV9PUFRJT05fTkFNRVMpLmluY2x1ZGVzKG9wdGlvbiBhcyBRVUFSQU5USU5FX09QVElPTl9OQU1FUyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVF1YXJhbnRpbmVPcHRpb25zIChvcHRpb25zOiBEaWN0aW9uYXJ5PHN0cmluZyB8IG51bWJlcj4pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvcHRpb25zKSB7XG4gICAgICAgIGlmICghX2lzUXVhcmFudGluZU9wdGlvbihrZXkpKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEdlbmVyYWxFcnJvcihSVU5USU1FX0VSUk9SUy5pbnZhbGlkUXVhcmFudGluZU9wdGlvbiwga2V5KTtcbiAgICB9XG5cbiAgICBjb25zdCBhdHRlbXB0TGltaXQgICAgID0gdHlwZW9mIG9wdGlvbnMuYXR0ZW1wdExpbWl0ID09PSAnbnVtYmVyJyA/IG9wdGlvbnMuYXR0ZW1wdExpbWl0IDogREVGQVVMVF9BVFRFTVBUX0xJTUlUO1xuICAgIGNvbnN0IHN1Y2Nlc3NUaHJlc2hvbGQgPSB0eXBlb2Ygb3B0aW9ucy5zdWNjZXNzVGhyZXNob2xkID09PSAnbnVtYmVyJyA/IG9wdGlvbnMuc3VjY2Vzc1RocmVzaG9sZCA6IERFRkFVTFRfVEhSRVNIT0xEO1xuXG4gICAgaWYgKGF0dGVtcHRMaW1pdCA8IE1JTl9BVFRFTVBUX0xJTUlUKVxuICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLmludmFsaWRBdHRlbXB0TGltaXRWYWx1ZSwgUVVBUkFOVElORV9PUFRJT05fTkFNRVMuYXR0ZW1wdExpbWl0LCBNSU5fQVRURU1QVF9MSU1JVCk7XG5cbiAgICBpZiAoc3VjY2Vzc1RocmVzaG9sZCA8IE1JTl9TVUNDRVNTX1RIUkVTSE9MRClcbiAgICAgICAgdGhyb3cgbmV3IEdlbmVyYWxFcnJvcihSVU5USU1FX0VSUk9SUy5pbnZhbGlkU3VjY2Vzc1RocmVzaG9sZFZhbHVlLCBRVUFSQU5USU5FX09QVElPTl9OQU1FUy5zdWNjZXNzVGhyZXNob2xkLCBNSU5fU1VDQ0VTU19USFJFU0hPTEQpO1xuXG4gICAgaWYgKHN1Y2Nlc3NUaHJlc2hvbGQgPj0gYXR0ZW1wdExpbWl0KVxuICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLmludmFsaWRRdWFyYW50aW5lUGFyYW1ldGVyc1JhdGlvLCBhdHRlbXB0TGltaXQsIHN1Y2Nlc3NUaHJlc2hvbGQpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UXVhcmFudGluZU9wdGlvbnMgKG9wdGlvbk5hbWU6IHN0cmluZywgb3B0aW9uczogc3RyaW5nIHwgYm9vbGVhbiB8IERpY3Rpb25hcnk8c3RyaW5nIHwgbnVtYmVyPik6IFByb21pc2U8RGljdGlvbmFyeTxudW1iZXI+IHwgYm9vbGVhbj4ge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Jvb2xlYW4nKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgIGNvbnN0IHBhcnNlZE9wdGlvbnMgPSBhd2FpdCBiYXNlR2V0T3B0aW9ucyhvcHRpb25zLCB7XG4gICAgICAgIHNraXBPcHRpb25WYWx1ZVR5cGVDb252ZXJzaW9uOiB0cnVlLFxuXG4gICAgICAgIGFzeW5jIG9uT3B0aW9uUGFyc2VkIChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgICAgICAgICAgaWYgKCFrZXkgfHwgIXZhbHVlKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMub3B0aW9uVmFsdWVJc05vdFZhbGlkS2V5VmFsdWUsIG9wdGlvbk5hbWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHZhbGlkYXRlUXVhcmFudGluZU9wdGlvbnMocGFyc2VkT3B0aW9ucyk7XG5cbiAgICByZXR1cm4gcGFyc2VkT3B0aW9ucztcbn1cblxuXG5pbnRlcmZhY2UgQXR0ZW1wdFJlc3VsdCB7XG4gICAgZmFpbGVkVGltZXM6IG51bWJlcjtcbiAgICBwYXNzZWRUaW1lczogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgUXVhcmFudGluZUF0dGVtcHQge1xuICAgIHRlc3RSdW5JZDogc3RyaW5nO1xuICAgIGVycm9yczogVGVzdFJ1bkVycm9yRm9ybWF0dGFibGVBZGFwdGVyW107XG59XG5cbmV4cG9ydCBjbGFzcyBRdWFyYW50aW5lIHtcbiAgICBwdWJsaWMgYXR0ZW1wdHM6IFF1YXJhbnRpbmVBdHRlbXB0W107XG4gICAgcHVibGljIGF0dGVtcHRMaW1pdDogbnVtYmVyO1xuICAgIHB1YmxpYyBzdWNjZXNzVGhyZXNob2xkOiBudW1iZXI7XG4gICAgcHVibGljIGZhaWx1cmVUaHJlc2hvbGQ6IG51bWJlcjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICAgIHRoaXMuYXR0ZW1wdHMgICAgICAgICA9IFtdO1xuICAgICAgICB0aGlzLmF0dGVtcHRMaW1pdCAgICAgPSBERUZBVUxUX0FUVEVNUFRfTElNSVQ7XG4gICAgICAgIHRoaXMuc3VjY2Vzc1RocmVzaG9sZCA9IERFRkFVTFRfVEhSRVNIT0xEO1xuICAgICAgICB0aGlzLmZhaWx1cmVUaHJlc2hvbGQgPSBERUZBVUxUX1RIUkVTSE9MRDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmFpbGVkQXR0ZW1wdHMgKCk6IFF1YXJhbnRpbmVBdHRlbXB0W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5hdHRlbXB0cy5maWx0ZXIoKHsgZXJyb3JzIH0pID0+ICEhZXJyb3JzLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhc3NlZEF0dGVtcHRzICgpOiBRdWFyYW50aW5lQXR0ZW1wdFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXR0ZW1wdHMuZmlsdGVyKCh7IGVycm9ycyB9KSA9PiBlcnJvcnMubGVuZ3RoID09PSAwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0Q3VzdG9tUGFyYW1ldGVycyAoYXR0ZW1wdExpbWl0OiBudW1iZXIgfCB1bmRlZmluZWQsIHN1Y2Nlc3NUaHJlc2hvbGQ6IG51bWJlciB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZWVkVG9VcGRhdGVUZXN0UnVuVGhyZXNob2xkICAgICAgICAgID0gdHlwZW9mIGF0dGVtcHRMaW1pdCA9PT0gJ251bWJlcic7XG4gICAgICAgIGNvbnN0IG5lZWRUb1VwZGF0ZVBhc3NlZFF1YXJhbnRpbmVUaHJlc2hvbGQgPSB0eXBlb2Ygc3VjY2Vzc1RocmVzaG9sZCA9PT0gJ251bWJlcic7XG4gICAgICAgIGNvbnN0IG5lZWRUb1JlY2FsY3VsYXRlRmFpbGVkVGhyZXNob2xkICAgICAgPSBuZWVkVG9VcGRhdGVUZXN0UnVuVGhyZXNob2xkIHx8IG5lZWRUb1VwZGF0ZVBhc3NlZFF1YXJhbnRpbmVUaHJlc2hvbGQ7XG5cbiAgICAgICAgaWYgKG5lZWRUb1VwZGF0ZVRlc3RSdW5UaHJlc2hvbGQpIHRoaXMuYXR0ZW1wdExpbWl0ID0gYXR0ZW1wdExpbWl0IGFzIG51bWJlcjtcbiAgICAgICAgaWYgKG5lZWRUb1VwZGF0ZVBhc3NlZFF1YXJhbnRpbmVUaHJlc2hvbGQpIHRoaXMuc3VjY2Vzc1RocmVzaG9sZCA9IHN1Y2Nlc3NUaHJlc2hvbGQgYXMgbnVtYmVyO1xuICAgICAgICBpZiAobmVlZFRvUmVjYWxjdWxhdGVGYWlsZWRUaHJlc2hvbGQpIHRoaXMuX3NldEZhaWxlZFRocmVzaG9sZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXROZXh0QXR0ZW1wdE51bWJlciAoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXR0ZW1wdHMubGVuZ3RoICsgMTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNUaHJlc2hvbGRSZWFjaGVkIChleHRyYUVycm9ycz86IFRlc3RSdW5FcnJvckZvcm1hdHRhYmxlQWRhcHRlcltdKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHsgcGFzc2VkVGltZXMsIGZhaWxlZFRpbWVzIH0gPSB0aGlzLl9nZXRBdHRlbXB0c1Jlc3VsdChleHRyYUVycm9ycyk7XG5cbiAgICAgICAgY29uc3Qgc3VjY2Vzc1RocmVzaG9sZFJlYWNoZWQgPSBwYXNzZWRUaW1lcyA+PSB0aGlzLnN1Y2Nlc3NUaHJlc2hvbGQ7XG4gICAgICAgIGNvbnN0IGZhaWx1cmVUaHJlc2hvbGRSZWFjaGVkID0gZmFpbGVkVGltZXMgPj0gdGhpcy5mYWlsdXJlVGhyZXNob2xkO1xuXG4gICAgICAgIHJldHVybiBzdWNjZXNzVGhyZXNob2xkUmVhY2hlZCB8fCBmYWlsdXJlVGhyZXNob2xkUmVhY2hlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNGaXJzdEF0dGVtcHRTdWNjZXNzZnVsIChleHRyYUVycm9yczogVGVzdFJ1bkVycm9yRm9ybWF0dGFibGVBZGFwdGVyW10pOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgeyBmYWlsZWRUaW1lcywgcGFzc2VkVGltZXMgfSA9IHRoaXMuX2dldEF0dGVtcHRzUmVzdWx0KGV4dHJhRXJyb3JzKTtcblxuICAgICAgICByZXR1cm4gZmFpbGVkVGltZXMgPT09IDAgJiYgcGFzc2VkVGltZXMgPiAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldEF0dGVtcHRzUmVzdWx0IChleHRyYUVycm9ycz86IFRlc3RSdW5FcnJvckZvcm1hdHRhYmxlQWRhcHRlcltdKTogQXR0ZW1wdFJlc3VsdCB7XG4gICAgICAgIGxldCBmYWlsZWRUaW1lcyA9IHRoaXMuZ2V0RmFpbGVkQXR0ZW1wdHMoKS5sZW5ndGg7XG4gICAgICAgIGxldCBwYXNzZWRUaW1lcyA9IHRoaXMuZ2V0UGFzc2VkQXR0ZW1wdHMoKS5sZW5ndGg7XG5cbiAgICAgICAgaWYgKGV4dHJhRXJyb3JzKSB7XG4gICAgICAgICAgICBpZiAoZXh0cmFFcnJvcnMubGVuZ3RoKVxuICAgICAgICAgICAgICAgIGZhaWxlZFRpbWVzICs9IGV4dHJhRXJyb3JzLmxlbmd0aDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBwYXNzZWRUaW1lcyArPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgZmFpbGVkVGltZXMsIHBhc3NlZFRpbWVzIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0RmFpbGVkVGhyZXNob2xkICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mYWlsdXJlVGhyZXNob2xkID0gdGhpcy5hdHRlbXB0TGltaXQgLSB0aGlzLnN1Y2Nlc3NUaHJlc2hvbGQgKyAxO1xuICAgIH1cbn1cbiJdfQ==
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhcmFudGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9nZXQtb3B0aW9ucy9xdWFyYW50aW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDBHQUFrRjtBQUNsRiw4Q0FBb0Q7QUFDcEQsa0RBQW9EO0FBR3BELHlFQUFzRTtBQUV0RSxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQztBQUNoQyxNQUFNLGlCQUFpQixHQUFPLENBQUMsQ0FBQztBQUNoQyxNQUFNLGlCQUFpQixHQUFPLENBQUMsQ0FBQztBQUNoQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQztBQUVoQyxTQUFTLG1CQUFtQixDQUFFLE1BQWM7SUFDeEMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLGlDQUF1QixDQUFDLENBQUMsUUFBUSxDQUFDLE1BQWlDLENBQUMsQ0FBQztBQUM5RixDQUFDO0FBRUQsU0FBZ0IseUJBQXlCLENBQUUsT0FBb0M7SUFDM0UsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUU7UUFDdkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQztZQUN6QixNQUFNLElBQUksc0JBQVksQ0FBQyxzQkFBYyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQzNFO0lBRUQsTUFBTSxZQUFZLEdBQU8sT0FBTyxPQUFPLENBQUMsWUFBWSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUM7SUFDakgsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLE9BQU8sQ0FBQyxnQkFBZ0IsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUM7SUFFckgsSUFBSSxZQUFZLEdBQUcsaUJBQWlCO1FBQ2hDLE1BQU0sSUFBSSxzQkFBWSxDQUFDLHNCQUFjLENBQUMsd0JB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QkFBdUIsQ0FBQztJQUM5RCxDQUFDO0lBRU0sd0JBQXdCLENBQUUsV0FBNkM7UUFDMUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFMUUsT0FBTyxXQUFXLEtBQUssQ0FBQyxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVPLGtCQUFrQixDQUFFLFdBQThDO1FBQ3RFLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNsRCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFFbEQsSUFBSSxXQUFXLEVBQUU7WUFDYixJQUFJLFdBQVcsQ0FBQyxNQUFNO2dCQUNsQixXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQzs7Z0JBRWxDLFdBQVcsSUFBSSxDQUFDLENBQUM7U0FDeEI7UUFFRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztJQUMxRSxDQUFDO0NBQ0o7QUFuRUQsZ0NBbUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFFVQVJBTlRJTkVfT1BUSU9OX05BTUVTIGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vcXVhcmFudGluZS1vcHRpb24tbmFtZXMnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuLi8uLi9lcnJvcnMvdHlwZXMnO1xuaW1wb3J0IHsgR2VuZXJhbEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vaW50ZXJmYWNlcyc7XG5pbXBvcnQgVGVzdFJ1bkVycm9yRm9ybWF0dGFibGVBZGFwdGVyIGZyb20gJy4uLy4uL2Vycm9ycy90ZXN0LXJ1bi9mb3JtYXR0YWJsZS1hZGFwdGVyJztcbmltcG9ydCB7IGdldEJvb2xlYW5Pck9iamVjdE9wdGlvbiB9IGZyb20gJy4vYm9vbGVhbi1vci1vYmplY3Qtb3B0aW9uJztcblxuY29uc3QgREVGQVVMVF9BVFRFTVBUX0xJTUlUID0gNTtcbmNvbnN0IERFRkFVTFRfVEhSRVNIT0xEICAgICA9IDM7XG5jb25zdCBNSU5fQVRURU1QVF9MSU1JVCAgICAgPSAyO1xuY29uc3QgTUlOX1NVQ0NFU1NfVEhSRVNIT0xEID0gMTtcblxuZnVuY3Rpb24gX2lzUXVhcmFudGluZU9wdGlvbiAob3B0aW9uOiBzdHJpbmcpOiBvcHRpb24gaXMgUVVBUkFOVElORV9PUFRJT05fTkFNRVMge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKFFVQVJBTlRJTkVfT1BUSU9OX05BTUVTKS5pbmNsdWRlcyhvcHRpb24gYXMgUVVBUkFOVElORV9PUFRJT05fTkFNRVMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVRdWFyYW50aW5lT3B0aW9ucyAob3B0aW9uczogRGljdGlvbmFyeTxzdHJpbmcgfCBudW1iZXI+KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb3B0aW9ucykge1xuICAgICAgICBpZiAoIV9pc1F1YXJhbnRpbmVPcHRpb24oa2V5KSlcbiAgICAgICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMuaW52YWxpZFF1YXJhbnRpbmVPcHRpb24sIGtleSk7XG4gICAgfVxuXG4gICAgY29uc3QgYXR0ZW1wdExpbWl0ICAgICA9IHR5cGVvZiBvcHRpb25zLmF0dGVtcHRMaW1pdCA9PT0gJ251bWJlcicgPyBvcHRpb25zLmF0dGVtcHRMaW1pdCA6IERFRkFVTFRfQVRURU1QVF9MSU1JVDtcbiAgICBjb25zdCBzdWNjZXNzVGhyZXNob2xkID0gdHlwZW9mIG9wdGlvbnMuc3VjY2Vzc1RocmVzaG9sZCA9PT0gJ251bWJlcicgPyBvcHRpb25zLnN1Y2Nlc3NUaHJlc2hvbGQgOiBERUZBVUxUX1RIUkVTSE9MRDtcblxuICAgIGlmIChhdHRlbXB0TGltaXQgPCBNSU5fQVRURU1QVF9MSU1JVClcbiAgICAgICAgdGhyb3cgbmV3IEdlbmVyYWxFcnJvcihSVU5USU1FX0VSUk9SUy5pbnZhbGlkQXR0ZW1wdExpbWl0VmFsdWUsIFFVQVJBTlRJTkVfT1BUSU9OX05BTUVTLmF0dGVtcHRMaW1pdCwgTUlOX0FUVEVNUFRfTElNSVQpO1xuXG4gICAgaWYgKHN1Y2Nlc3NUaHJlc2hvbGQgPCBNSU5fU1VDQ0VTU19USFJFU0hPTEQpXG4gICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMuaW52YWxpZFN1Y2Nlc3NUaHJlc2hvbGRWYWx1ZSwgUVVBUkFOVElORV9PUFRJT05fTkFNRVMuc3VjY2Vzc1RocmVzaG9sZCwgTUlOX1NVQ0NFU1NfVEhSRVNIT0xEKTtcblxuICAgIGlmIChzdWNjZXNzVGhyZXNob2xkID49IGF0dGVtcHRMaW1pdClcbiAgICAgICAgdGhyb3cgbmV3IEdlbmVyYWxFcnJvcihSVU5USU1FX0VSUk9SUy5pbnZhbGlkUXVhcmFudGluZVBhcmFtZXRlcnNSYXRpbywgYXR0ZW1wdExpbWl0LCBzdWNjZXNzVGhyZXNob2xkKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFF1YXJhbnRpbmVPcHRpb25zIChvcHRpb25OYW1lOiBzdHJpbmcsIG9wdGlvbnM6IHN0cmluZyB8IGJvb2xlYW4gfCBEaWN0aW9uYXJ5PHN0cmluZyB8IG51bWJlcj4pOiBQcm9taXNlPERpY3Rpb25hcnk8bnVtYmVyPiB8IGJvb2xlYW4+IHtcbiAgICBjb25zdCBvbk9wdGlvblBhcnNlZCA9IGFzeW5jIChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gICAgICAgIGlmICgha2V5IHx8ICF2YWx1ZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMub3B0aW9uVmFsdWVJc05vdFZhbGlkS2V5VmFsdWUsIG9wdGlvbk5hbWUpO1xuXG4gICAgICAgIHJldHVybiBOdW1iZXIodmFsdWUpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYXdhaXQgZ2V0Qm9vbGVhbk9yT2JqZWN0T3B0aW9uPG51bWJlcj4ob3B0aW9uTmFtZSwgb3B0aW9ucywge1xuICAgICAgICBvbk9wdGlvblBhcnNlZCxcbiAgICAgICAgc2tpcE9wdGlvblZhbHVlVHlwZUNvbnZlcnNpb246IHRydWUsXG4gICAgfSwgdmFsaWRhdGVRdWFyYW50aW5lT3B0aW9ucyk7XG59XG5cblxuaW50ZXJmYWNlIEF0dGVtcHRSZXN1bHQge1xuICAgIGZhaWxlZFRpbWVzOiBudW1iZXI7XG4gICAgcGFzc2VkVGltZXM6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFF1YXJhbnRpbmVBdHRlbXB0IHtcbiAgICB0ZXN0UnVuSWQ6IHN0cmluZztcbiAgICBlcnJvcnM6IFRlc3RSdW5FcnJvckZvcm1hdHRhYmxlQWRhcHRlcltdO1xufVxuXG5leHBvcnQgY2xhc3MgUXVhcmFudGluZSB7XG4gICAgcHVibGljIGF0dGVtcHRzOiBRdWFyYW50aW5lQXR0ZW1wdFtdO1xuICAgIHB1YmxpYyBhdHRlbXB0TGltaXQ6IG51bWJlcjtcbiAgICBwdWJsaWMgc3VjY2Vzc1RocmVzaG9sZDogbnVtYmVyO1xuICAgIHB1YmxpYyBmYWlsdXJlVGhyZXNob2xkOiBudW1iZXI7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKCkge1xuICAgICAgICB0aGlzLmF0dGVtcHRzICAgICAgICAgPSBbXTtcbiAgICAgICAgdGhpcy5hdHRlbXB0TGltaXQgICAgID0gREVGQVVMVF9BVFRFTVBUX0xJTUlUO1xuICAgICAgICB0aGlzLnN1Y2Nlc3NUaHJlc2hvbGQgPSBERUZBVUxUX1RIUkVTSE9MRDtcbiAgICAgICAgdGhpcy5mYWlsdXJlVGhyZXNob2xkID0gREVGQVVMVF9USFJFU0hPTEQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZhaWxlZEF0dGVtcHRzICgpOiBRdWFyYW50aW5lQXR0ZW1wdFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXR0ZW1wdHMuZmlsdGVyKCh7IGVycm9ycyB9KSA9PiAhIWVycm9ycy5sZW5ndGgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQYXNzZWRBdHRlbXB0cyAoKTogUXVhcmFudGluZUF0dGVtcHRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmF0dGVtcHRzLmZpbHRlcigoeyBlcnJvcnMgfSkgPT4gZXJyb3JzLmxlbmd0aCA9PT0gMCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEN1c3RvbVBhcmFtZXRlcnMgKGF0dGVtcHRMaW1pdDogbnVtYmVyIHwgdW5kZWZpbmVkLCBzdWNjZXNzVGhyZXNob2xkOiBudW1iZXIgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmVlZFRvVXBkYXRlVGVzdFJ1blRocmVzaG9sZCAgICAgICAgICA9IHR5cGVvZiBhdHRlbXB0TGltaXQgPT09ICdudW1iZXInO1xuICAgICAgICBjb25zdCBuZWVkVG9VcGRhdGVQYXNzZWRRdWFyYW50aW5lVGhyZXNob2xkID0gdHlwZW9mIHN1Y2Nlc3NUaHJlc2hvbGQgPT09ICdudW1iZXInO1xuICAgICAgICBjb25zdCBuZWVkVG9SZWNhbGN1bGF0ZUZhaWxlZFRocmVzaG9sZCAgICAgID0gbmVlZFRvVXBkYXRlVGVzdFJ1blRocmVzaG9sZCB8fCBuZWVkVG9VcGRhdGVQYXNzZWRRdWFyYW50aW5lVGhyZXNob2xkO1xuXG4gICAgICAgIGlmIChuZWVkVG9VcGRhdGVUZXN0UnVuVGhyZXNob2xkKSB0aGlzLmF0dGVtcHRMaW1pdCA9IGF0dGVtcHRMaW1pdCBhcyBudW1iZXI7XG4gICAgICAgIGlmIChuZWVkVG9VcGRhdGVQYXNzZWRRdWFyYW50aW5lVGhyZXNob2xkKSB0aGlzLnN1Y2Nlc3NUaHJlc2hvbGQgPSBzdWNjZXNzVGhyZXNob2xkIGFzIG51bWJlcjtcbiAgICAgICAgaWYgKG5lZWRUb1JlY2FsY3VsYXRlRmFpbGVkVGhyZXNob2xkKSB0aGlzLl9zZXRGYWlsZWRUaHJlc2hvbGQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TmV4dEF0dGVtcHROdW1iZXIgKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmF0dGVtcHRzLmxlbmd0aCArIDE7XG4gICAgfVxuXG4gICAgcHVibGljIGlzVGhyZXNob2xkUmVhY2hlZCAoZXh0cmFFcnJvcnM/OiBUZXN0UnVuRXJyb3JGb3JtYXR0YWJsZUFkYXB0ZXJbXSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB7IHBhc3NlZFRpbWVzLCBmYWlsZWRUaW1lcyB9ID0gdGhpcy5fZ2V0QXR0ZW1wdHNSZXN1bHQoZXh0cmFFcnJvcnMpO1xuXG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NUaHJlc2hvbGRSZWFjaGVkID0gcGFzc2VkVGltZXMgPj0gdGhpcy5zdWNjZXNzVGhyZXNob2xkO1xuICAgICAgICBjb25zdCBmYWlsdXJlVGhyZXNob2xkUmVhY2hlZCA9IGZhaWxlZFRpbWVzID49IHRoaXMuZmFpbHVyZVRocmVzaG9sZDtcblxuICAgICAgICByZXR1cm4gc3VjY2Vzc1RocmVzaG9sZFJlYWNoZWQgfHwgZmFpbHVyZVRocmVzaG9sZFJlYWNoZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRmlyc3RBdHRlbXB0U3VjY2Vzc2Z1bCAoZXh0cmFFcnJvcnM6IFRlc3RSdW5FcnJvckZvcm1hdHRhYmxlQWRhcHRlcltdKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHsgZmFpbGVkVGltZXMsIHBhc3NlZFRpbWVzIH0gPSB0aGlzLl9nZXRBdHRlbXB0c1Jlc3VsdChleHRyYUVycm9ycyk7XG5cbiAgICAgICAgcmV0dXJuIGZhaWxlZFRpbWVzID09PSAwICYmIHBhc3NlZFRpbWVzID4gMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRBdHRlbXB0c1Jlc3VsdCAoZXh0cmFFcnJvcnM/OiBUZXN0UnVuRXJyb3JGb3JtYXR0YWJsZUFkYXB0ZXJbXSk6IEF0dGVtcHRSZXN1bHQge1xuICAgICAgICBsZXQgZmFpbGVkVGltZXMgPSB0aGlzLmdldEZhaWxlZEF0dGVtcHRzKCkubGVuZ3RoO1xuICAgICAgICBsZXQgcGFzc2VkVGltZXMgPSB0aGlzLmdldFBhc3NlZEF0dGVtcHRzKCkubGVuZ3RoO1xuXG4gICAgICAgIGlmIChleHRyYUVycm9ycykge1xuICAgICAgICAgICAgaWYgKGV4dHJhRXJyb3JzLmxlbmd0aClcbiAgICAgICAgICAgICAgICBmYWlsZWRUaW1lcyArPSBleHRyYUVycm9ycy5sZW5ndGg7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcGFzc2VkVGltZXMgKz0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IGZhaWxlZFRpbWVzLCBwYXNzZWRUaW1lcyB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldEZhaWxlZFRocmVzaG9sZCAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmFpbHVyZVRocmVzaG9sZCA9IHRoaXMuYXR0ZW1wdExpbWl0IC0gdGhpcy5zdWNjZXNzVGhyZXNob2xkICsgMTtcbiAgICB9XG59XG4iXX0=
@@ -1,14 +1,11 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.getSkipJsErrorsOptions = exports.validateSkipJsErrorsOptionValue = void 0;
7
- const base_1 = __importDefault(require("./base"));
8
4
  const skip_js_errors_option_names_1 = require("../../configuration/skip-js-errors-option-names");
9
5
  const types_1 = require("../../errors/types");
10
6
  const runtime_1 = require("../../errors/runtime");
11
7
  const skip_js_errors_1 = require("../../api/skip-js-errors");
8
+ const boolean_or_object_option_1 = require("./boolean-or-object-option");
12
9
  function validateSkipJsErrorsOptionValue(options, ErrorCtor) {
13
10
  if ((0, skip_js_errors_1.isSkipJsErrorsCallbackWithOptionsObject)(options))
14
11
  validateSkipJsErrorsCallbackWithOptionsObject(options, ErrorCtor);
@@ -18,17 +15,16 @@ function validateSkipJsErrorsOptionValue(options, ErrorCtor) {
18
15
  }
19
16
  exports.validateSkipJsErrorsOptionValue = validateSkipJsErrorsOptionValue;
20
17
  async function getSkipJsErrorsOptions(optionName, options) {
21
- if (typeof options === 'boolean')
22
- return options;
23
- const parsedOptions = await (0, base_1.default)(options, {
24
- async onOptionParsed(key, value) {
25
- if (!key || !value)
26
- throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.optionValueIsNotValidKeyValue, optionName);
27
- return value;
28
- },
29
- });
30
- validateSkipJsErrorsOptionsObject(parsedOptions, runtime_1.GeneralError);
31
- return parsedOptions;
18
+ const onOptionParsed = async (key, value) => {
19
+ if (!key || !value)
20
+ throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.optionValueIsNotValidKeyValue, optionName);
21
+ return value;
22
+ };
23
+ const validator = (opts) => validateSkipJsErrorsOptionsObject(opts, runtime_1.GeneralError);
24
+ return await (0, boolean_or_object_option_1.getBooleanOrObjectOption)(optionName, options, {
25
+ onOptionParsed,
26
+ skipOptionValueTypeConversion: true,
27
+ }, validator);
32
28
  }
33
29
  exports.getSkipJsErrorsOptions = getSkipJsErrorsOptions;
34
30
  function _isSkipJsErrorsOptionsObjectOption(option) {
@@ -49,4 +45,4 @@ function validateSkipJsErrorsCallbackWithOptionsObject(options, ErrorCtor) {
49
45
  throw new ErrorCtor(types_1.RUNTIME_ERRORS.invalidSkipJsErrorsCallbackWithOptionsProperty, key);
50
46
  }
51
47
  }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tpcC1qcy1lcnJvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvZ2V0LW9wdGlvbnMvc2tpcC1qcy1lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0RBQW9DO0FBQ3BDLGlHQUFnSztBQUNoSyw4Q0FBb0Q7QUFDcEQsa0RBQW9EO0FBRXBELDZEQUFnSDtBQUVoSCxTQUFnQiwrQkFBK0IsQ0FBRSxPQUFpSSxFQUFFLFNBQWM7SUFDOUwsSUFBSSxJQUFBLHdEQUF1QyxFQUFDLE9BQU8sQ0FBQztRQUNoRCw2Q0FBNkMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FFakUsSUFBSSxJQUFBLDRDQUEyQixFQUFDLE9BQU8sQ0FBQztRQUN6QyxpQ0FBaUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFMUQsT0FBTyxLQUFLLENBQUMsQ0FBQztBQUNsQixDQUFDO0FBUkQsMEVBUUM7QUFFTSxLQUFLLFVBQVUsc0JBQXNCLENBQUUsVUFBa0IsRUFBRSxPQUF1RDtJQUNySCxJQUFJLE9BQU8sT0FBTyxLQUFLLFNBQVM7UUFDNUIsT0FBTyxPQUFPLENBQUM7SUFFbkIsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFBLGNBQWMsRUFBQyxPQUE2QixFQUFFO1FBQ3RFLEtBQUssQ0FBQyxjQUFjLENBQUUsR0FBVyxFQUFFLEtBQXNCO1lBQ3JELElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLO2dCQUNkLE1BQU0sSUFBSSxzQkFBWSxDQUFDLHNCQUFjLENBQUMsNkJBQTZCLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFckYsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztLQUNKLENBQUMsQ0FBQztJQUVILGlDQUFpQyxDQUFDLGFBQWEsRUFBRSxzQkFBWSxDQUFDLENBQUM7SUFFL0QsT0FBTyxhQUFhLENBQUM7QUFDekIsQ0FBQztBQWhCRCx3REFnQkM7QUFFRCxTQUFTLGtDQUFrQyxDQUFFLE1BQWM7SUFDdkQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLHdFQUEwQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQW9ELENBQUMsQ0FBQztBQUNwSSxDQUFDO0FBRUQsU0FBUyx3Q0FBd0MsQ0FBRSxNQUFjO0lBQzdELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQywrRUFBaUQsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUEyRCxDQUFDLENBQUM7QUFDbEosQ0FBQztBQUVELFNBQVMsaUNBQWlDLENBQUUsT0FBd0QsRUFBRSxTQUFjO0lBQ2hILEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFO1FBQ3ZCLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxHQUFHLENBQUM7WUFDeEMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxzQkFBYyxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3pGO0FBQ0wsQ0FBQztBQUVELFNBQVMsNkNBQTZDLENBQUUsT0FBb0UsRUFBRSxTQUFjO0lBQ3hJLEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFO1FBQ3ZCLElBQUksQ0FBQyx3Q0FBd0MsQ0FBQyxHQUFHLENBQUM7WUFDOUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxzQkFBYyxDQUFDLDhDQUE4QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQy9GO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlR2V0T3B0aW9ucyBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgU0tJUF9KU19FUlJPUlNfQ0FMTEJBQ0tfV0lUSF9PUFRJT05TX09QVElPTl9OQU1FUywgU0tJUF9KU19FUlJPUlNfT1BUSU9OU19PQkpFQ1RfT1BUSU9OX05BTUVTIH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9za2lwLWpzLWVycm9ycy1vcHRpb24tbmFtZXMnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuLi8uLi9lcnJvcnMvdHlwZXMnO1xuaW1wb3J0IHsgR2VuZXJhbEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBpc1NraXBKc0Vycm9yc0NhbGxiYWNrV2l0aE9wdGlvbnNPYmplY3QsIGlzU2tpcEpzRXJyb3JzT3B0aW9uc09iamVjdCB9IGZyb20gJy4uLy4uL2FwaS9za2lwLWpzLWVycm9ycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNraXBKc0Vycm9yc09wdGlvblZhbHVlIChvcHRpb25zOiBib29sZWFuIHwgRGljdGlvbmFyeTx1bmtub3duPiB8IFNraXBKc0Vycm9yc09wdGlvbnNPYmplY3QgfCBTa2lwSnNFcnJvcnNDYWxsYmFjayB8IFNraXBKc0Vycm9yc0NhbGxiYWNrV2l0aE9wdGlvbnNPYmplY3QsIEVycm9yQ3RvcjogYW55KTogdm9pZCB7XG4gICAgaWYgKGlzU2tpcEpzRXJyb3JzQ2FsbGJhY2tXaXRoT3B0aW9uc09iamVjdChvcHRpb25zKSlcbiAgICAgICAgdmFsaWRhdGVTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zT2JqZWN0KG9wdGlvbnMsIEVycm9yQ3Rvcik7XG5cbiAgICBlbHNlIGlmIChpc1NraXBKc0Vycm9yc09wdGlvbnNPYmplY3Qob3B0aW9ucykpXG4gICAgICAgIHZhbGlkYXRlU2tpcEpzRXJyb3JzT3B0aW9uc09iamVjdChvcHRpb25zLCBFcnJvckN0b3IpO1xuXG4gICAgcmV0dXJuIHZvaWQgMDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNraXBKc0Vycm9yc09wdGlvbnMgKG9wdGlvbk5hbWU6IHN0cmluZywgb3B0aW9uczogc3RyaW5nIHwgYm9vbGVhbiB8IERpY3Rpb25hcnk8c3RyaW5nIHwgUmVnRXhwPik6IFByb21pc2U8RGljdGlvbmFyeTxSZWdFeHB8c3RyaW5nPiB8IGJvb2xlYW4+IHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdib29sZWFuJylcbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG5cbiAgICBjb25zdCBwYXJzZWRPcHRpb25zID0gYXdhaXQgYmFzZUdldE9wdGlvbnMob3B0aW9ucyBhcyBEaWN0aW9uYXJ5PHN0cmluZz4sIHtcbiAgICAgICAgYXN5bmMgb25PcHRpb25QYXJzZWQgKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgUmVnRXhwKSB7XG4gICAgICAgICAgICBpZiAoIWtleSB8fCAhdmFsdWUpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEdlbmVyYWxFcnJvcihSVU5USU1FX0VSUk9SUy5vcHRpb25WYWx1ZUlzTm90VmFsaWRLZXlWYWx1ZSwgb3B0aW9uTmFtZSk7XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHZhbGlkYXRlU2tpcEpzRXJyb3JzT3B0aW9uc09iamVjdChwYXJzZWRPcHRpb25zLCBHZW5lcmFsRXJyb3IpO1xuXG4gICAgcmV0dXJuIHBhcnNlZE9wdGlvbnM7XG59XG5cbmZ1bmN0aW9uIF9pc1NraXBKc0Vycm9yc09wdGlvbnNPYmplY3RPcHRpb24gKG9wdGlvbjogc3RyaW5nKTogb3B0aW9uIGlzIFNLSVBfSlNfRVJST1JTX09QVElPTlNfT0JKRUNUX09QVElPTl9OQU1FUyB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoU0tJUF9KU19FUlJPUlNfT1BUSU9OU19PQkpFQ1RfT1BUSU9OX05BTUVTKS5pbmNsdWRlcyhvcHRpb24gYXMgU0tJUF9KU19FUlJPUlNfT1BUSU9OU19PQkpFQ1RfT1BUSU9OX05BTUVTKTtcbn1cblxuZnVuY3Rpb24gX2lzU2tpcEpzRXJyb3JzQ2FsbGJhY2tXaXRoT3B0aW9uc09wdGlvbiAob3B0aW9uOiBzdHJpbmcpOiBvcHRpb24gaXMgU0tJUF9KU19FUlJPUlNfQ0FMTEJBQ0tfV0lUSF9PUFRJT05TX09QVElPTl9OQU1FUyB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoU0tJUF9KU19FUlJPUlNfQ0FMTEJBQ0tfV0lUSF9PUFRJT05TX09QVElPTl9OQU1FUykuaW5jbHVkZXMob3B0aW9uIGFzIFNLSVBfSlNfRVJST1JTX0NBTExCQUNLX1dJVEhfT1BUSU9OU19PUFRJT05fTkFNRVMpO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVNraXBKc0Vycm9yc09wdGlvbnNPYmplY3QgKG9wdGlvbnM6IERpY3Rpb25hcnk8dW5rbm93bj4gfCBTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0LCBFcnJvckN0b3I6IGFueSk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFfaXNTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0T3B0aW9uKGtleSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3JDdG9yKFJVTlRJTUVfRVJST1JTLmludmFsaWRTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0UHJvcGVydHksIGtleSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVNraXBKc0Vycm9yc0NhbGxiYWNrV2l0aE9wdGlvbnNPYmplY3QgKG9wdGlvbnM6IERpY3Rpb25hcnk8dW5rbm93bj4gfCBTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zT2JqZWN0LCBFcnJvckN0b3I6IGFueSk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFfaXNTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zT3B0aW9uKGtleSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3JDdG9yKFJVTlRJTUVfRVJST1JTLmludmFsaWRTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zUHJvcGVydHksIGtleSk7XG4gICAgfVxufVxuIl19
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tpcC1qcy1lcnJvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvZ2V0LW9wdGlvbnMvc2tpcC1qcy1lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUdBR3lEO0FBQ3pELDhDQUFvRDtBQUNwRCxrREFBb0Q7QUFFcEQsNkRBQWdIO0FBQ2hILHlFQUFzRTtBQUV0RSxTQUFnQiwrQkFBK0IsQ0FBRSxPQUFpSSxFQUFFLFNBQWM7SUFDOUwsSUFBSSxJQUFBLHdEQUF1QyxFQUFDLE9BQU8sQ0FBQztRQUNoRCw2Q0FBNkMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FFakUsSUFBSSxJQUFBLDRDQUEyQixFQUFDLE9BQU8sQ0FBQztRQUN6QyxpQ0FBaUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFMUQsT0FBTyxLQUFLLENBQUMsQ0FBQztBQUNsQixDQUFDO0FBUkQsMEVBUUM7QUFFTSxLQUFLLFVBQVUsc0JBQXNCLENBQUUsVUFBa0IsRUFBRSxPQUF1RDtJQUNySCxNQUFNLGNBQWMsR0FBRyxLQUFLLEVBQUUsR0FBVyxFQUFFLEtBQWEsRUFBbUIsRUFBRTtRQUN6RSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSztZQUNkLE1BQU0sSUFBSSxzQkFBWSxDQUFDLHNCQUFjLENBQUMsNkJBQTZCLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFckYsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQyxDQUFDO0lBQ0YsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUF3QixFQUFRLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQyxJQUFJLEVBQUUsc0JBQVksQ0FBQyxDQUFDO0lBRTVHLE9BQU8sTUFBTSxJQUFBLG1EQUF3QixFQUFTLFVBQVUsRUFBRSxPQUFPLEVBQUU7UUFDL0QsY0FBYztRQUNkLDZCQUE2QixFQUFFLElBQUk7S0FDdEMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNsQixDQUFDO0FBYkQsd0RBYUM7QUFFRCxTQUFTLGtDQUFrQyxDQUFFLE1BQWM7SUFDdkQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLHdFQUEwQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQW9ELENBQUMsQ0FBQztBQUNwSSxDQUFDO0FBRUQsU0FBUyx3Q0FBd0MsQ0FBRSxNQUFjO0lBQzdELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQywrRUFBaUQsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUEyRCxDQUFDLENBQUM7QUFDbEosQ0FBQztBQUVELFNBQVMsaUNBQWlDLENBQUUsT0FBd0QsRUFBRSxTQUFjO0lBQ2hILEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFO1FBQ3ZCLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxHQUFHLENBQUM7WUFDeEMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxzQkFBYyxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3pGO0FBQ0wsQ0FBQztBQUVELFNBQVMsNkNBQTZDLENBQUUsT0FBb0UsRUFBRSxTQUFjO0lBQ3hJLEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFO1FBQ3ZCLElBQUksQ0FBQyx3Q0FBd0MsQ0FBQyxHQUFHLENBQUM7WUFDOUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxzQkFBYyxDQUFDLDhDQUE4QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQy9GO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgU0tJUF9KU19FUlJPUlNfQ0FMTEJBQ0tfV0lUSF9PUFRJT05TX09QVElPTl9OQU1FUyxcbiAgICBTS0lQX0pTX0VSUk9SU19PUFRJT05TX09CSkVDVF9PUFRJT05fTkFNRVMsXG59IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vc2tpcC1qcy1lcnJvcnMtb3B0aW9uLW5hbWVzJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCB7IEdlbmVyYWxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgaXNTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zT2JqZWN0LCBpc1NraXBKc0Vycm9yc09wdGlvbnNPYmplY3QgfSBmcm9tICcuLi8uLi9hcGkvc2tpcC1qcy1lcnJvcnMnO1xuaW1wb3J0IHsgZ2V0Qm9vbGVhbk9yT2JqZWN0T3B0aW9uIH0gZnJvbSAnLi9ib29sZWFuLW9yLW9iamVjdC1vcHRpb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTa2lwSnNFcnJvcnNPcHRpb25WYWx1ZSAob3B0aW9uczogYm9vbGVhbiB8IERpY3Rpb25hcnk8dW5rbm93bj4gfCBTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0IHwgU2tpcEpzRXJyb3JzQ2FsbGJhY2sgfCBTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zT2JqZWN0LCBFcnJvckN0b3I6IGFueSk6IHZvaWQge1xuICAgIGlmIChpc1NraXBKc0Vycm9yc0NhbGxiYWNrV2l0aE9wdGlvbnNPYmplY3Qob3B0aW9ucykpXG4gICAgICAgIHZhbGlkYXRlU2tpcEpzRXJyb3JzQ2FsbGJhY2tXaXRoT3B0aW9uc09iamVjdChvcHRpb25zLCBFcnJvckN0b3IpO1xuXG4gICAgZWxzZSBpZiAoaXNTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0KG9wdGlvbnMpKVxuICAgICAgICB2YWxpZGF0ZVNraXBKc0Vycm9yc09wdGlvbnNPYmplY3Qob3B0aW9ucywgRXJyb3JDdG9yKTtcblxuICAgIHJldHVybiB2b2lkIDA7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRTa2lwSnNFcnJvcnNPcHRpb25zIChvcHRpb25OYW1lOiBzdHJpbmcsIG9wdGlvbnM6IHN0cmluZyB8IGJvb2xlYW4gfCBEaWN0aW9uYXJ5PHN0cmluZyB8IFJlZ0V4cD4pOiBQcm9taXNlPERpY3Rpb25hcnk8c3RyaW5nPiB8IGJvb2xlYW4+IHtcbiAgICBjb25zdCBvbk9wdGlvblBhcnNlZCA9IGFzeW5jIChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gICAgICAgIGlmICgha2V5IHx8ICF2YWx1ZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMub3B0aW9uVmFsdWVJc05vdFZhbGlkS2V5VmFsdWUsIG9wdGlvbk5hbWUpO1xuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICAgIGNvbnN0IHZhbGlkYXRvciA9IChvcHRzOiBEaWN0aW9uYXJ5PHN0cmluZz4pOiB2b2lkID0+IHZhbGlkYXRlU2tpcEpzRXJyb3JzT3B0aW9uc09iamVjdChvcHRzLCBHZW5lcmFsRXJyb3IpO1xuXG4gICAgcmV0dXJuIGF3YWl0IGdldEJvb2xlYW5Pck9iamVjdE9wdGlvbjxzdHJpbmc+KG9wdGlvbk5hbWUsIG9wdGlvbnMsIHtcbiAgICAgICAgb25PcHRpb25QYXJzZWQsXG4gICAgICAgIHNraXBPcHRpb25WYWx1ZVR5cGVDb252ZXJzaW9uOiB0cnVlLFxuICAgIH0sIHZhbGlkYXRvcik7XG59XG5cbmZ1bmN0aW9uIF9pc1NraXBKc0Vycm9yc09wdGlvbnNPYmplY3RPcHRpb24gKG9wdGlvbjogc3RyaW5nKTogb3B0aW9uIGlzIFNLSVBfSlNfRVJST1JTX09QVElPTlNfT0JKRUNUX09QVElPTl9OQU1FUyB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoU0tJUF9KU19FUlJPUlNfT1BUSU9OU19PQkpFQ1RfT1BUSU9OX05BTUVTKS5pbmNsdWRlcyhvcHRpb24gYXMgU0tJUF9KU19FUlJPUlNfT1BUSU9OU19PQkpFQ1RfT1BUSU9OX05BTUVTKTtcbn1cblxuZnVuY3Rpb24gX2lzU2tpcEpzRXJyb3JzQ2FsbGJhY2tXaXRoT3B0aW9uc09wdGlvbiAob3B0aW9uOiBzdHJpbmcpOiBvcHRpb24gaXMgU0tJUF9KU19FUlJPUlNfQ0FMTEJBQ0tfV0lUSF9PUFRJT05TX09QVElPTl9OQU1FUyB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoU0tJUF9KU19FUlJPUlNfQ0FMTEJBQ0tfV0lUSF9PUFRJT05TX09QVElPTl9OQU1FUykuaW5jbHVkZXMob3B0aW9uIGFzIFNLSVBfSlNfRVJST1JTX0NBTExCQUNLX1dJVEhfT1BUSU9OU19PUFRJT05fTkFNRVMpO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVNraXBKc0Vycm9yc09wdGlvbnNPYmplY3QgKG9wdGlvbnM6IERpY3Rpb25hcnk8dW5rbm93bj4gfCBTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0LCBFcnJvckN0b3I6IGFueSk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFfaXNTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0T3B0aW9uKGtleSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3JDdG9yKFJVTlRJTUVfRVJST1JTLmludmFsaWRTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0UHJvcGVydHksIGtleSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVNraXBKc0Vycm9yc0NhbGxiYWNrV2l0aE9wdGlvbnNPYmplY3QgKG9wdGlvbnM6IERpY3Rpb25hcnk8dW5rbm93bj4gfCBTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zT2JqZWN0LCBFcnJvckN0b3I6IGFueSk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFfaXNTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zT3B0aW9uKGtleSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3JDdG9yKFJVTlRJTUVfRVJST1JTLmludmFsaWRTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zUHJvcGVydHksIGtleSk7XG4gICAgfVxufVxuIl19
@@ -3,13 +3,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.parseUserAgent = exports.extractMetaInfo = exports.calculatePrettyUserAgent = void 0;
6
+ exports.parseUserAgent = exports.calculatePrettyUserAgent = void 0;
7
7
  const bowser_1 = __importDefault(require("bowser"));
8
8
  const DEFAULT_NAME = 'Other';
9
9
  const DEFAULT_VERSION = '0.0';
10
10
  const DEFAULT_PLATFORM_TYPE = DEFAULT_NAME.toLowerCase();
11
11
  const EMPTY_PARSED_USER_AGENT = bowser_1.default.parse(' ');
12
- const META_INFO_REGEX = /\([^(|^)]*\)/;
12
+ const HEADLESS_EDGE = {
13
+ regExp: /HeadlessEdg/i,
14
+ browserName: 'Microsoft Edge',
15
+ };
13
16
  function calculateBrowser(browserDetails) {
14
17
  return {
15
18
  name: browserDetails.name || DEFAULT_NAME,
@@ -35,21 +38,25 @@ function calculateEngine(engineDetails) {
35
38
  version: engineDetails.version || DEFAULT_VERSION,
36
39
  };
37
40
  }
41
+ function calculateParsedUserAgent(userAgent) {
42
+ if (!userAgent)
43
+ return EMPTY_PARSED_USER_AGENT;
44
+ // The 'bowser' module incorrectly determine the headless edge browser.
45
+ // Since this module is abandoned, we are forced to fix it on our side.
46
+ const isHeadlessEdge = HEADLESS_EDGE.regExp.test(userAgent);
47
+ const parsedUserAgent = bowser_1.default.parse(userAgent);
48
+ if (isHeadlessEdge)
49
+ parsedUserAgent.browser.name = HEADLESS_EDGE.browserName;
50
+ return parsedUserAgent;
51
+ }
38
52
  function calculatePrettyUserAgent(browser, os) {
39
53
  return `${browser.name} ${browser.version} / ${os.name} ${os.version}`;
40
54
  }
41
55
  exports.calculatePrettyUserAgent = calculatePrettyUserAgent;
42
- function extractMetaInfo(prettyUserAgent) {
43
- const parenthesisExpressions = prettyUserAgent.match(META_INFO_REGEX);
44
- if (!parenthesisExpressions || !parenthesisExpressions.length)
45
- return '';
46
- return parenthesisExpressions[parenthesisExpressions.length - 1].replace(/[()]/g, '');
47
- }
48
- exports.extractMetaInfo = extractMetaInfo;
49
- function parseUserAgent(userAgent = '') {
50
- const parsedUserAgent = userAgent ? bowser_1.default.parse(userAgent) : EMPTY_PARSED_USER_AGENT;
56
+ function parseUserAgent(userAgent = '', osInfo) {
57
+ const parsedUserAgent = calculateParsedUserAgent(userAgent);
51
58
  const browser = calculateBrowser(parsedUserAgent.browser);
52
- const os = calculateOs(parsedUserAgent.os);
59
+ const os = osInfo || calculateOs(parsedUserAgent.os);
53
60
  const engine = calculateEngine(parsedUserAgent.engine);
54
61
  const prettyUserAgent = calculatePrettyUserAgent(browser, os);
55
62
  return {
@@ -63,4 +70,4 @@ function parseUserAgent(userAgent = '') {
63
70
  };
64
71
  }
65
72
  exports.parseUserAgent = parseUserAgent;
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtdXNlci1hZ2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9wYXJzZS11c2VyLWFnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUU1QixNQUFNLFlBQVksR0FBYyxPQUFPLENBQUM7QUFDeEMsTUFBTSxlQUFlLEdBQVcsS0FBSyxDQUFDO0FBQ3RDLE1BQU0scUJBQXFCLEdBQUssWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzNELE1BQU0sdUJBQXVCLEdBQUcsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEQsTUFBTSxlQUFlLEdBQUcsY0FBYyxDQUFDO0FBaUJ2QyxTQUFTLGdCQUFnQixDQUFFLGNBQTRDO0lBQ25FLE9BQU87UUFDSCxJQUFJLEVBQUssY0FBYyxDQUFDLElBQUksSUFBSSxZQUFZO1FBQzVDLE9BQU8sRUFBRSxjQUFjLENBQUMsT0FBTyxJQUFJLGVBQWU7S0FDckQsQ0FBQztBQUNOLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBRSxlQUF3QztJQUMxRCxNQUFNLElBQUksR0FBRyxlQUFlLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FBQztJQUVsRCxJQUFJLE9BQU8sR0FBRyxlQUFlLENBQUM7SUFFOUIseUZBQXlGO0lBQ3pGLDREQUE0RDtJQUM1RCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxTQUFTLEVBQUU7UUFDbEMsSUFBSSxlQUFlLENBQUMsV0FBVztZQUMzQixPQUFPLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQztLQUM3QztTQUNJLElBQUksZUFBZSxDQUFDLE9BQU87UUFDNUIsT0FBTyxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUM7SUFFdEMsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUM3QixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUUsYUFBMEM7SUFDaEUsT0FBTztRQUNILElBQUksRUFBSyxhQUFhLENBQUMsSUFBSSxJQUFJLFlBQVk7UUFDM0MsT0FBTyxFQUFFLGFBQWEsQ0FBQyxPQUFPLElBQUksZUFBZTtLQUNwRCxDQUFDO0FBQ04sQ0FBQztBQUVELFNBQWdCLHdCQUF3QixDQUFFLE9BQXdCLEVBQUUsRUFBbUI7SUFDbkYsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLE9BQU8sTUFBTSxFQUFFLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUMzRSxDQUFDO0FBRkQsNERBRUM7QUFFRCxTQUFnQixlQUFlLENBQUUsZUFBdUI7SUFDcEQsTUFBTSxzQkFBc0IsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRXRFLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU07UUFDekQsT0FBTyxFQUFFLENBQUM7SUFFZCxPQUFPLHNCQUFzQixDQUFDLHNCQUFzQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFGLENBQUM7QUFQRCwwQ0FPQztBQUVELFNBQWdCLGNBQWMsQ0FBRSxTQUFTLEdBQUcsRUFBRTtJQUMxQyxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQztJQUN0RixNQUFNLE9BQU8sR0FBVyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEUsTUFBTSxFQUFFLEdBQWdCLFdBQVcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEQsTUFBTSxNQUFNLEdBQVksZUFBZSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRSxNQUFNLGVBQWUsR0FBRyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFOUQsT0FBTztRQUNILElBQUksRUFBYSxPQUFPLENBQUMsSUFBSTtRQUM3QixPQUFPLEVBQVUsT0FBTyxDQUFDLE9BQU87UUFDaEMsUUFBUSxFQUFTLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLHFCQUFxQjtRQUN2RSxFQUFFO1FBQ0YsTUFBTTtRQUNOLGVBQWUsRUFBRSxlQUFlO1FBQ2hDLFNBQVM7S0FDWixDQUFDO0FBQ04sQ0FBQztBQWhCRCx3Q0FnQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQm93c2VyIGZyb20gJ2Jvd3Nlcic7XG5cbmNvbnN0IERFRkFVTFRfTkFNRSAgICAgICAgICAgID0gJ090aGVyJztcbmNvbnN0IERFRkFVTFRfVkVSU0lPTiAgICAgICAgID0gJzAuMCc7XG5jb25zdCBERUZBVUxUX1BMQVRGT1JNX1RZUEUgICA9IERFRkFVTFRfTkFNRS50b0xvd2VyQ2FzZSgpO1xuY29uc3QgRU1QVFlfUEFSU0VEX1VTRVJfQUdFTlQgPSBCb3dzZXIucGFyc2UoJyAnKTtcbmNvbnN0IE1FVEFfSU5GT19SRUdFWCA9IC9cXChbXih8XildKlxcKS87XG5cbmludGVyZmFjZSBQYXJzZWRDb21wb25lbnQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkVXNlckFnZW50IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIHBsYXRmb3JtOiBzdHJpbmc7XG4gICAgb3M6IFBhcnNlZENvbXBvbmVudDtcbiAgICBlbmdpbmU6IFBhcnNlZENvbXBvbmVudDtcbiAgICBwcmV0dHlVc2VyQWdlbnQ6IHN0cmluZztcbiAgICB1c2VyQWdlbnQ6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlQnJvd3NlciAoYnJvd3NlckRldGFpbHM6IEJvd3Nlci5QYXJzZXIuQnJvd3NlckRldGFpbHMpOiBQYXJzZWRDb21wb25lbnQge1xuICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICAgIGJyb3dzZXJEZXRhaWxzLm5hbWUgfHwgREVGQVVMVF9OQU1FLFxuICAgICAgICB2ZXJzaW9uOiBicm93c2VyRGV0YWlscy52ZXJzaW9uIHx8IERFRkFVTFRfVkVSU0lPTixcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVPcyAocGFyc2VkT3NEZXRhaWxzOiBCb3dzZXIuUGFyc2VyLk9TRGV0YWlscyk6IFBhcnNlZENvbXBvbmVudCB7XG4gICAgY29uc3QgbmFtZSA9IHBhcnNlZE9zRGV0YWlscy5uYW1lIHx8IERFRkFVTFRfTkFNRTtcblxuICAgIGxldCB2ZXJzaW9uID0gREVGQVVMVF9WRVJTSU9OO1xuXG4gICAgLy8gTk9URTogYSAndmVyc2lvbk5hbWUnIHByb3BlcnR5IHZhbHVlIGlzIG1vcmUgcmVhZGFibGUgaW4gdGhlIGNhc2Ugb2YgV2luZG93cyAoR0gtNDgxKTpcbiAgICAvLyBXaW5kb3dzIDguMTogb3MudmVyc2lvbjogXCJOVCA2LjNcIiwgb3MudmVyc2lvbk5hbWU6IFwiOC4xXCIuXG4gICAgaWYgKG5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3dpbmRvd3MnKSB7XG4gICAgICAgIGlmIChwYXJzZWRPc0RldGFpbHMudmVyc2lvbk5hbWUpXG4gICAgICAgICAgICB2ZXJzaW9uID0gcGFyc2VkT3NEZXRhaWxzLnZlcnNpb25OYW1lO1xuICAgIH1cbiAgICBlbHNlIGlmIChwYXJzZWRPc0RldGFpbHMudmVyc2lvbilcbiAgICAgICAgdmVyc2lvbiA9IHBhcnNlZE9zRGV0YWlscy52ZXJzaW9uO1xuXG4gICAgcmV0dXJuIHsgbmFtZSwgdmVyc2lvbiB9O1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVFbmdpbmUgKGVuZ2luZURldGFpbHM6IEJvd3Nlci5QYXJzZXIuRW5naW5lRGV0YWlscyk6IFBhcnNlZENvbXBvbmVudCB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogICAgZW5naW5lRGV0YWlscy5uYW1lIHx8IERFRkFVTFRfTkFNRSxcbiAgICAgICAgdmVyc2lvbjogZW5naW5lRGV0YWlscy52ZXJzaW9uIHx8IERFRkFVTFRfVkVSU0lPTixcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlUHJldHR5VXNlckFnZW50IChicm93c2VyOiBQYXJzZWRDb21wb25lbnQsIG9zOiBQYXJzZWRDb21wb25lbnQpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHticm93c2VyLm5hbWV9ICR7YnJvd3Nlci52ZXJzaW9ufSAvICR7b3MubmFtZX0gJHtvcy52ZXJzaW9ufWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0TWV0YUluZm8gKHByZXR0eVVzZXJBZ2VudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJlbnRoZXNpc0V4cHJlc3Npb25zID0gcHJldHR5VXNlckFnZW50Lm1hdGNoKE1FVEFfSU5GT19SRUdFWCk7XG5cbiAgICBpZiAoIXBhcmVudGhlc2lzRXhwcmVzc2lvbnMgfHwgIXBhcmVudGhlc2lzRXhwcmVzc2lvbnMubGVuZ3RoKVxuICAgICAgICByZXR1cm4gJyc7XG5cbiAgICByZXR1cm4gcGFyZW50aGVzaXNFeHByZXNzaW9uc1twYXJlbnRoZXNpc0V4cHJlc3Npb25zLmxlbmd0aCAtIDFdLnJlcGxhY2UoL1soKV0vZywgJycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VVc2VyQWdlbnQgKHVzZXJBZ2VudCA9ICcnKTogUGFyc2VkVXNlckFnZW50IHtcbiAgICBjb25zdCBwYXJzZWRVc2VyQWdlbnQgPSB1c2VyQWdlbnQgPyBCb3dzZXIucGFyc2UodXNlckFnZW50KSA6IEVNUFRZX1BBUlNFRF9VU0VSX0FHRU5UO1xuICAgIGNvbnN0IGJyb3dzZXIgICAgICAgICA9IGNhbGN1bGF0ZUJyb3dzZXIocGFyc2VkVXNlckFnZW50LmJyb3dzZXIpO1xuICAgIGNvbnN0IG9zICAgICAgICAgICAgICA9IGNhbGN1bGF0ZU9zKHBhcnNlZFVzZXJBZ2VudC5vcyk7XG4gICAgY29uc3QgZW5naW5lICAgICAgICAgID0gY2FsY3VsYXRlRW5naW5lKHBhcnNlZFVzZXJBZ2VudC5lbmdpbmUpO1xuICAgIGNvbnN0IHByZXR0eVVzZXJBZ2VudCA9IGNhbGN1bGF0ZVByZXR0eVVzZXJBZ2VudChicm93c2VyLCBvcyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiAgICAgICAgICAgIGJyb3dzZXIubmFtZSxcbiAgICAgICAgdmVyc2lvbjogICAgICAgICBicm93c2VyLnZlcnNpb24sXG4gICAgICAgIHBsYXRmb3JtOiAgICAgICAgcGFyc2VkVXNlckFnZW50LnBsYXRmb3JtLnR5cGUgfHwgREVGQVVMVF9QTEFURk9STV9UWVBFLFxuICAgICAgICBvcyxcbiAgICAgICAgZW5naW5lLFxuICAgICAgICBwcmV0dHlVc2VyQWdlbnQ6IHByZXR0eVVzZXJBZ2VudCxcbiAgICAgICAgdXNlckFnZW50LFxuICAgIH07XG59XG4iXX0=
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtdXNlci1hZ2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9wYXJzZS11c2VyLWFnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUc1QixNQUFNLFlBQVksR0FBYyxPQUFPLENBQUM7QUFDeEMsTUFBTSxlQUFlLEdBQVcsS0FBSyxDQUFDO0FBQ3RDLE1BQU0scUJBQXFCLEdBQUssWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzNELE1BQU0sdUJBQXVCLEdBQUcsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFbEQsTUFBTSxhQUFhLEdBQUc7SUFDbEIsTUFBTSxFQUFPLGNBQWM7SUFDM0IsV0FBVyxFQUFFLGdCQUFnQjtDQUNoQyxDQUFDO0FBaUJGLFNBQVMsZ0JBQWdCLENBQUUsY0FBNEM7SUFDbkUsT0FBTztRQUNILElBQUksRUFBSyxjQUFjLENBQUMsSUFBSSxJQUFJLFlBQVk7UUFDNUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxPQUFPLElBQUksZUFBZTtLQUNyRCxDQUFDO0FBQ04sQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFFLGVBQXdDO0lBQzFELE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FBQyxJQUFJLElBQUksWUFBWSxDQUFDO0lBRWxELElBQUksT0FBTyxHQUFHLGVBQWUsQ0FBQztJQUU5Qix5RkFBeUY7SUFDekYsNERBQTREO0lBQzVELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLFNBQVMsRUFBRTtRQUNsQyxJQUFJLGVBQWUsQ0FBQyxXQUFXO1lBQzNCLE9BQU8sR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDO0tBQzdDO1NBQ0ksSUFBSSxlQUFlLENBQUMsT0FBTztRQUM1QixPQUFPLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQztJQUV0QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQzdCLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBRSxhQUEwQztJQUNoRSxPQUFPO1FBQ0gsSUFBSSxFQUFLLGFBQWEsQ0FBQyxJQUFJLElBQUksWUFBWTtRQUMzQyxPQUFPLEVBQUUsYUFBYSxDQUFDLE9BQU8sSUFBSSxlQUFlO0tBQ3BELENBQUM7QUFDTixDQUFDO0FBRUQsU0FBUyx3QkFBd0IsQ0FBRSxTQUFpQjtJQUNoRCxJQUFJLENBQUMsU0FBUztRQUNWLE9BQU8sdUJBQXVCLENBQUM7SUFFbkMsdUVBQXVFO0lBQ3ZFLHVFQUF1RTtJQUN2RSxNQUFNLGNBQWMsR0FBSSxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3RCxNQUFNLGVBQWUsR0FBRyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUVoRCxJQUFJLGNBQWM7UUFDZCxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDO0lBRTdELE9BQU8sZUFBZSxDQUFDO0FBQzNCLENBQUM7QUFFRCxTQUFnQix3QkFBd0IsQ0FBRSxPQUF3QixFQUFFLEVBQW1CO0lBQ25GLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxPQUFPLE1BQU0sRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDM0UsQ0FBQztBQUZELDREQUVDO0FBRUQsU0FBZ0IsY0FBYyxDQUFFLFNBQVMsR0FBRyxFQUFFLEVBQUUsTUFBZTtJQUMzRCxNQUFNLGVBQWUsR0FBRyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1RCxNQUFNLE9BQU8sR0FBVyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEUsTUFBTSxFQUFFLEdBQWdCLE1BQU0sSUFBSSxXQUFXLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sTUFBTSxHQUFZLGVBQWUsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEUsTUFBTSxlQUFlLEdBQUcsd0JBQXdCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRTlELE9BQU87UUFDSCxJQUFJLEVBQWEsT0FBTyxDQUFDLElBQUk7UUFDN0IsT0FBTyxFQUFVLE9BQU8sQ0FBQyxPQUFPO1FBQ2hDLFFBQVEsRUFBUyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxxQkFBcUI7UUFDdkUsRUFBRTtRQUNGLE1BQU07UUFDTixlQUFlLEVBQUUsZUFBZTtRQUNoQyxTQUFTO0tBQ1osQ0FBQztBQUNOLENBQUM7QUFoQkQsd0NBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJvd3NlciBmcm9tICdib3dzZXInO1xuaW1wb3J0IHsgT1NJbmZvIH0gZnJvbSAnZ2V0LW9zLWluZm8nO1xuXG5jb25zdCBERUZBVUxUX05BTUUgICAgICAgICAgICA9ICdPdGhlcic7XG5jb25zdCBERUZBVUxUX1ZFUlNJT04gICAgICAgICA9ICcwLjAnO1xuY29uc3QgREVGQVVMVF9QTEFURk9STV9UWVBFICAgPSBERUZBVUxUX05BTUUudG9Mb3dlckNhc2UoKTtcbmNvbnN0IEVNUFRZX1BBUlNFRF9VU0VSX0FHRU5UID0gQm93c2VyLnBhcnNlKCcgJyk7XG5cbmNvbnN0IEhFQURMRVNTX0VER0UgPSB7XG4gICAgcmVnRXhwOiAgICAgIC9IZWFkbGVzc0VkZy9pLFxuICAgIGJyb3dzZXJOYW1lOiAnTWljcm9zb2Z0IEVkZ2UnLFxufTtcblxuaW50ZXJmYWNlIFBhcnNlZENvbXBvbmVudCB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZlcnNpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRVc2VyQWdlbnQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG4gICAgcGxhdGZvcm06IHN0cmluZztcbiAgICBvczogUGFyc2VkQ29tcG9uZW50O1xuICAgIGVuZ2luZTogUGFyc2VkQ29tcG9uZW50O1xuICAgIHByZXR0eVVzZXJBZ2VudDogc3RyaW5nO1xuICAgIHVzZXJBZ2VudDogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVCcm93c2VyIChicm93c2VyRGV0YWlsczogQm93c2VyLlBhcnNlci5Ccm93c2VyRGV0YWlscyk6IFBhcnNlZENvbXBvbmVudCB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogICAgYnJvd3NlckRldGFpbHMubmFtZSB8fCBERUZBVUxUX05BTUUsXG4gICAgICAgIHZlcnNpb246IGJyb3dzZXJEZXRhaWxzLnZlcnNpb24gfHwgREVGQVVMVF9WRVJTSU9OLFxuICAgIH07XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZU9zIChwYXJzZWRPc0RldGFpbHM6IEJvd3Nlci5QYXJzZXIuT1NEZXRhaWxzKTogUGFyc2VkQ29tcG9uZW50IHtcbiAgICBjb25zdCBuYW1lID0gcGFyc2VkT3NEZXRhaWxzLm5hbWUgfHwgREVGQVVMVF9OQU1FO1xuXG4gICAgbGV0IHZlcnNpb24gPSBERUZBVUxUX1ZFUlNJT047XG5cbiAgICAvLyBOT1RFOiBhICd2ZXJzaW9uTmFtZScgcHJvcGVydHkgdmFsdWUgaXMgbW9yZSByZWFkYWJsZSBpbiB0aGUgY2FzZSBvZiBXaW5kb3dzIChHSC00ODEpOlxuICAgIC8vIFdpbmRvd3MgOC4xOiBvcy52ZXJzaW9uOiBcIk5UIDYuM1wiLCBvcy52ZXJzaW9uTmFtZTogXCI4LjFcIi5cbiAgICBpZiAobmFtZS50b0xvd2VyQ2FzZSgpID09PSAnd2luZG93cycpIHtcbiAgICAgICAgaWYgKHBhcnNlZE9zRGV0YWlscy52ZXJzaW9uTmFtZSlcbiAgICAgICAgICAgIHZlcnNpb24gPSBwYXJzZWRPc0RldGFpbHMudmVyc2lvbk5hbWU7XG4gICAgfVxuICAgIGVsc2UgaWYgKHBhcnNlZE9zRGV0YWlscy52ZXJzaW9uKVxuICAgICAgICB2ZXJzaW9uID0gcGFyc2VkT3NEZXRhaWxzLnZlcnNpb247XG5cbiAgICByZXR1cm4geyBuYW1lLCB2ZXJzaW9uIH07XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZUVuZ2luZSAoZW5naW5lRGV0YWlsczogQm93c2VyLlBhcnNlci5FbmdpbmVEZXRhaWxzKTogUGFyc2VkQ29tcG9uZW50IHtcbiAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiAgICBlbmdpbmVEZXRhaWxzLm5hbWUgfHwgREVGQVVMVF9OQU1FLFxuICAgICAgICB2ZXJzaW9uOiBlbmdpbmVEZXRhaWxzLnZlcnNpb24gfHwgREVGQVVMVF9WRVJTSU9OLFxuICAgIH07XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZVBhcnNlZFVzZXJBZ2VudCAodXNlckFnZW50OiBzdHJpbmcpOiBCb3dzZXIuUGFyc2VyLlBhcnNlZFJlc3VsdCB7XG4gICAgaWYgKCF1c2VyQWdlbnQpXG4gICAgICAgIHJldHVybiBFTVBUWV9QQVJTRURfVVNFUl9BR0VOVDtcblxuICAgIC8vIFRoZSAnYm93c2VyJyBtb2R1bGUgaW5jb3JyZWN0bHkgZGV0ZXJtaW5lIHRoZSBoZWFkbGVzcyBlZGdlIGJyb3dzZXIuXG4gICAgLy8gU2luY2UgdGhpcyBtb2R1bGUgaXMgYWJhbmRvbmVkLCB3ZSBhcmUgZm9yY2VkIHRvIGZpeCBpdCBvbiBvdXIgc2lkZS5cbiAgICBjb25zdCBpc0hlYWRsZXNzRWRnZSAgPSBIRUFETEVTU19FREdFLnJlZ0V4cC50ZXN0KHVzZXJBZ2VudCk7XG4gICAgY29uc3QgcGFyc2VkVXNlckFnZW50ID0gQm93c2VyLnBhcnNlKHVzZXJBZ2VudCk7XG5cbiAgICBpZiAoaXNIZWFkbGVzc0VkZ2UpXG4gICAgICAgIHBhcnNlZFVzZXJBZ2VudC5icm93c2VyLm5hbWUgPSBIRUFETEVTU19FREdFLmJyb3dzZXJOYW1lO1xuXG4gICAgcmV0dXJuIHBhcnNlZFVzZXJBZ2VudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZVByZXR0eVVzZXJBZ2VudCAoYnJvd3NlcjogUGFyc2VkQ29tcG9uZW50LCBvczogUGFyc2VkQ29tcG9uZW50KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7YnJvd3Nlci5uYW1lfSAke2Jyb3dzZXIudmVyc2lvbn0gLyAke29zLm5hbWV9ICR7b3MudmVyc2lvbn1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VVc2VyQWdlbnQgKHVzZXJBZ2VudCA9ICcnLCBvc0luZm8/OiBPU0luZm8pOiBQYXJzZWRVc2VyQWdlbnQge1xuICAgIGNvbnN0IHBhcnNlZFVzZXJBZ2VudCA9IGNhbGN1bGF0ZVBhcnNlZFVzZXJBZ2VudCh1c2VyQWdlbnQpO1xuICAgIGNvbnN0IGJyb3dzZXIgICAgICAgICA9IGNhbGN1bGF0ZUJyb3dzZXIocGFyc2VkVXNlckFnZW50LmJyb3dzZXIpO1xuICAgIGNvbnN0IG9zICAgICAgICAgICAgICA9IG9zSW5mbyB8fCBjYWxjdWxhdGVPcyhwYXJzZWRVc2VyQWdlbnQub3MpO1xuICAgIGNvbnN0IGVuZ2luZSAgICAgICAgICA9IGNhbGN1bGF0ZUVuZ2luZShwYXJzZWRVc2VyQWdlbnQuZW5naW5lKTtcbiAgICBjb25zdCBwcmV0dHlVc2VyQWdlbnQgPSBjYWxjdWxhdGVQcmV0dHlVc2VyQWdlbnQoYnJvd3Nlciwgb3MpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogICAgICAgICAgICBicm93c2VyLm5hbWUsXG4gICAgICAgIHZlcnNpb246ICAgICAgICAgYnJvd3Nlci52ZXJzaW9uLFxuICAgICAgICBwbGF0Zm9ybTogICAgICAgIHBhcnNlZFVzZXJBZ2VudC5wbGF0Zm9ybS50eXBlIHx8IERFRkFVTFRfUExBVEZPUk1fVFlQRSxcbiAgICAgICAgb3MsXG4gICAgICAgIGVuZ2luZSxcbiAgICAgICAgcHJldHR5VXNlckFnZW50OiBwcmV0dHlVc2VyQWdlbnQsXG4gICAgICAgIHVzZXJBZ2VudCxcbiAgICB9O1xufVxuIl19
@@ -103,4 +103,4 @@ function createList(array, PREFIX = '- ', SEPARATOR = '\n') {
103
103
  return array.map(option => PREFIX + option).join(SEPARATOR);
104
104
  }
105
105
  exports.createList = createList;
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3N0cmluZy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrRUFBeUM7QUFFekMsTUFBTSwyQkFBMkIsR0FBRztJQUNoQyxTQUFTLEVBQUcsSUFBSTtJQUNoQixVQUFVLEVBQUUsR0FBRztDQUNsQixDQUFDO0FBRUYsU0FBUyxLQUFLLENBQUUsR0FBRztJQUNmLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUVELFNBQWdCLGVBQWUsQ0FBRSxHQUFHO0lBQ2hDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRkQsMENBRUM7QUFFRCxTQUFnQixRQUFRLENBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLO0lBQ3hDLElBQUksTUFBTSxHQUFPLEVBQUUsQ0FBQztJQUNwQixJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFFcEIsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssR0FBRyxNQUFNO1FBQzdDLE9BQU8sSUFBQSx1QkFBWSxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFMUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQztTQUM5QixLQUFLLENBQUMsK0JBQStCLENBQUM7UUFDdkMsMEJBQTBCO1NBQ3pCLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUxQixHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2YsTUFBTSxNQUFNLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQztRQUU3QixJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxHQUFHLE1BQU0sRUFBRTtZQUNqRCxVQUFVLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNuQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ2pCO2FBQ0k7WUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDcEMsVUFBVSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ25DLE1BQU0sR0FBRyxFQUFFLENBQUM7YUFDZjtZQUVELE1BQU0sSUFBSSxJQUFJLENBQUM7U0FDbEI7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sSUFBQSx1QkFBWSxFQUFDLFVBQVUsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzFELENBQUM7QUE5QkQsNEJBOEJDO0FBRUQsU0FBZ0IsZUFBZSxDQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxHQUFHLEtBQUs7SUFDM0QsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLE1BQU0sS0FBSyxHQUFTLEVBQUUsQ0FBQztJQUN2QixJQUFJLFNBQVMsR0FBSyxJQUFJLENBQUM7SUFFdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDakMsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTNCLElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRTtZQUMzQixJQUFJLFNBQVM7Z0JBQ1QsV0FBVyxJQUFJLFdBQVcsQ0FBQztpQkFDMUI7Z0JBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDeEIsV0FBVyxHQUFHLEVBQUUsQ0FBQzthQUNwQjtTQUNKO2FBQ0ksSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ3ZDLElBQUksU0FBUyxLQUFLLFdBQVc7Z0JBQ3pCLFNBQVMsR0FBRyxJQUFJLENBQUM7aUJBQ2hCLElBQUksQ0FBQyxTQUFTO2dCQUNmLFNBQVMsR0FBRyxXQUFXLENBQUM7O2dCQUV4QixXQUFXLElBQUksV0FBVyxDQUFDO1NBQ2xDOztZQUVHLFdBQVcsSUFBSSxXQUFXLENBQUM7S0FDbEM7SUFFRCxJQUFJLFdBQVc7UUFDWCxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTVCLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFoQ0QsMENBZ0NDO0FBRUQsU0FBZ0IsZUFBZSxDQUFFLEtBQUs7SUFDbEMsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdkMsQ0FBQztBQUZELDBDQUVDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBRSxJQUFJLEVBQUUsS0FBSztJQUN0QyxPQUFPLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxLQUFLLEVBQUUsQ0FBQztBQUNyQyxDQUFDO0FBRUQsU0FBZ0IsMkJBQTJCLENBQUUsS0FBSyxFQUFFLFNBQVMsR0FBRywyQkFBMkIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxHQUFHLDJCQUEyQixDQUFDLFVBQVU7SUFDckosTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBRS9CLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBRXJGLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQzdCLE9BQU8sb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBRXRELElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDL0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2QixPQUFPLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxRQUFRLG9CQUFvQixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO0tBQ3BHO0lBRUQsTUFBTSxRQUFRLEdBQVUsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzFDLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFdkcsT0FBTyxHQUFHLGVBQWUsU0FBUyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztBQUNsRixDQUFDO0FBcEJELGtFQW9CQztBQUVELFNBQWdCLGtCQUFrQixDQUFFLEtBQUs7SUFDckMsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDN0MsQ0FBQztBQUZELGdEQUVDO0FBRUQsU0FBZ0IsVUFBVSxDQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxFQUFFLFNBQVMsR0FBRyxJQUFJO0lBQzlELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDaEUsQ0FBQztBQUZELGdDQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGluZGVudFN0cmluZyBmcm9tICdpbmRlbnQtc3RyaW5nJztcblxuY29uc3QgREVGQVVMVF9DT05DQVRFTkFURURfVkFMVUVTID0ge1xuICAgIFNFUEFSQVRPUjogICcsICcsXG4gICAgUVVPVEVfQ0hBUjogJ1wiJyxcbn07XG5cbmZ1bmN0aW9uIHJ0cmltIChzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1xccyskLywgJycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVFRZQ29sb3JzIChzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1xcMDMzXFxbWzAtOTtdKm0vZywgJycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd29yZFdyYXAgKHN0ciwgaW5kZW50LCB3aWR0aCkge1xuICAgIGxldCBjdXJTdHIgICAgID0gJyc7XG4gICAgbGV0IHdyYXBwZWRNc2cgPSAnJztcblxuICAgIGlmIChyZW1vdmVUVFlDb2xvcnMoc3RyKS5sZW5ndGggPD0gd2lkdGggLSBpbmRlbnQpXG4gICAgICAgIHJldHVybiBpbmRlbnRTdHJpbmcoc3RyLCAnICcsIGluZGVudCk7XG5cbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvKFxcclxcbikvZ20sICdcXG4nKVxuICAgICAgICAuc3BsaXQoLyhcXFMrWyBcXHRdKyl8KFxcUysoPzpcXG4pKXwoXFxuKS9tKVxuICAgICAgICAvL05PVEU6IGN1dCBlbXB0eSBlbGVtZW50c1xuICAgICAgICAuZmlsdGVyKGVsbSA9PiAhIWVsbSk7XG5cbiAgICBzdHIuZm9yRWFjaCh3b3JkID0+IHtcbiAgICAgICAgY29uc3QgbmV3U3RyID0gY3VyU3RyICsgd29yZDtcblxuICAgICAgICBpZiAocmVtb3ZlVFRZQ29sb3JzKG5ld1N0cikubGVuZ3RoID4gd2lkdGggLSBpbmRlbnQpIHtcbiAgICAgICAgICAgIHdyYXBwZWRNc2cgKz0gYCR7cnRyaW0oY3VyU3RyKX1cXG5gO1xuICAgICAgICAgICAgY3VyU3RyID0gd29yZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjdXJTdHJbY3VyU3RyLmxlbmd0aCAtIDFdID09PSAnXFxuJykge1xuICAgICAgICAgICAgICAgIHdyYXBwZWRNc2cgKz0gYCR7cnRyaW0oY3VyU3RyKX1cXG5gO1xuICAgICAgICAgICAgICAgIGN1clN0ciA9ICcnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjdXJTdHIgKz0gd29yZDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGluZGVudFN0cmluZyh3cmFwcGVkTXNnICsgY3VyU3RyLCAnICcsIGluZGVudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdFF1b3RlZFRleHQgKHN0ciwgc3BsaXRDaGFyLCBxdW90ZXMgPSAnXCJcXCcnKSB7XG4gICAgbGV0IGN1cnJlbnRQYXJ0ID0gJyc7XG4gICAgY29uc3QgcGFydHMgICAgICAgPSBbXTtcbiAgICBsZXQgcXVvdGVDaGFyICAgPSBudWxsO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgY3VycmVudENoYXIgPSBzdHJbaV07XG5cbiAgICAgICAgaWYgKGN1cnJlbnRDaGFyID09PSBzcGxpdENoYXIpIHtcbiAgICAgICAgICAgIGlmIChxdW90ZUNoYXIpXG4gICAgICAgICAgICAgICAgY3VycmVudFBhcnQgKz0gY3VycmVudENoYXI7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJ0cy5wdXNoKGN1cnJlbnRQYXJ0KTtcbiAgICAgICAgICAgICAgICBjdXJyZW50UGFydCA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHF1b3Rlcy5pbmRleE9mKGN1cnJlbnRDaGFyKSA+IC0xKSB7XG4gICAgICAgICAgICBpZiAocXVvdGVDaGFyID09PSBjdXJyZW50Q2hhcilcbiAgICAgICAgICAgICAgICBxdW90ZUNoYXIgPSBudWxsO1xuICAgICAgICAgICAgZWxzZSBpZiAoIXF1b3RlQ2hhcilcbiAgICAgICAgICAgICAgICBxdW90ZUNoYXIgPSBjdXJyZW50Q2hhcjtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBjdXJyZW50UGFydCArPSBjdXJyZW50Q2hhcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBjdXJyZW50UGFydCArPSBjdXJyZW50Q2hhcjtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFBhcnQpXG4gICAgICAgIHBhcnRzLnB1c2goY3VycmVudFBhcnQpO1xuXG4gICAgcmV0dXJuIHBhcnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGx1cmFsU3VmZml4IChhcnJheSkge1xuICAgIHJldHVybiBhcnJheS5sZW5ndGggPiAxID8gJ3MnIDogJyc7XG59XG5cbmZ1bmN0aW9uIGdldERpc3BsYXllZEl0ZW1UZXh0IChpdGVtLCBxdW90ZSkge1xuICAgIHJldHVybiBgJHtxdW90ZX0ke2l0ZW19JHtxdW90ZX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uY2F0ZW5hdGVkVmFsdWVzU3RyaW5nIChhcnJheSwgc2VwYXJhdG9yID0gREVGQVVMVF9DT05DQVRFTkFURURfVkFMVUVTLlNFUEFSQVRPUiwgcXVvdGVDaGFyID0gREVGQVVMVF9DT05DQVRFTkFURURfVkFMVUVTLlFVT1RFX0NIQVIpIHtcbiAgICBjb25zdCBjbG9uZWRBcnJheSA9IFsuLi5hcnJheV07XG5cbiAgICBpZiAoc2VwYXJhdG9yLmluZGV4T2YoJ1xcbicpID4gLTEpXG4gICAgICAgIHJldHVybiBjbG9uZWRBcnJheS5tYXAoaXRlbSA9PiBnZXREaXNwbGF5ZWRJdGVtVGV4dChpdGVtLCBxdW90ZUNoYXIpKS5qb2luKHNlcGFyYXRvcik7XG5cbiAgICBlbHNlIGlmIChjbG9uZWRBcnJheS5sZW5ndGggPT09IDEpXG4gICAgICAgIHJldHVybiBnZXREaXNwbGF5ZWRJdGVtVGV4dChjbG9uZWRBcnJheVswXSwgcXVvdGVDaGFyKTtcblxuICAgIGVsc2UgaWYgKGNsb25lZEFycmF5Lmxlbmd0aCA9PT0gMikge1xuICAgICAgICBjb25zdCBpdGVtMSA9IGFycmF5WzBdO1xuICAgICAgICBjb25zdCBpdGVtMiA9IGFycmF5WzFdO1xuXG4gICAgICAgIHJldHVybiBgJHtnZXREaXNwbGF5ZWRJdGVtVGV4dChpdGVtMSwgcXVvdGVDaGFyKX0gYW5kICR7Z2V0RGlzcGxheWVkSXRlbVRleHQoaXRlbTIsIHF1b3RlQ2hhcil9YDtcbiAgICB9XG5cbiAgICBjb25zdCBsYXN0SXRlbSAgICAgICAgPSBjbG9uZWRBcnJheS5wb3AoKTtcbiAgICBjb25zdCBvdGhlckl0ZW1TdHJpbmcgPSBjbG9uZWRBcnJheS5tYXAoaXRlbSA9PiBnZXREaXNwbGF5ZWRJdGVtVGV4dChpdGVtLCBxdW90ZUNoYXIpKS5qb2luKHNlcGFyYXRvcik7XG5cbiAgICByZXR1cm4gYCR7b3RoZXJJdGVtU3RyaW5nfSwgYW5kICR7Z2V0RGlzcGxheWVkSXRlbVRleHQobGFzdEl0ZW0sIHF1b3RlQ2hhcil9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRvQmVJblBhc3RUZW5zZSAoYXJyYXkpIHtcbiAgICByZXR1cm4gYXJyYXkubGVuZ3RoID4gMSA/ICd3ZXJlJyA6ICd3YXMnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGlzdCAoYXJyYXksIFBSRUZJWCA9ICctICcsIFNFUEFSQVRPUiA9ICdcXG4nKSB7XG4gICAgcmV0dXJuIGFycmF5Lm1hcChvcHRpb24gPT4gUFJFRklYICsgb3B0aW9uKS5qb2luKFNFUEFSQVRPUik7XG59XG4iXX0=
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3N0cmluZy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrRUFBeUM7QUFFekMsTUFBTSwyQkFBMkIsR0FBRztJQUNoQyxTQUFTLEVBQUcsSUFBSTtJQUNoQixVQUFVLEVBQUUsR0FBRztDQUNsQixDQUFDO0FBRUYsU0FBUyxLQUFLLENBQUUsR0FBRztJQUNmLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUVELFNBQWdCLGVBQWUsQ0FBRSxHQUFHO0lBQ2hDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRkQsMENBRUM7QUFFRCxTQUFnQixRQUFRLENBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLO0lBQ3hDLElBQUksTUFBTSxHQUFPLEVBQUUsQ0FBQztJQUNwQixJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFFcEIsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssR0FBRyxNQUFNO1FBQzdDLE9BQU8sSUFBQSx1QkFBWSxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFMUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQztTQUM5QixLQUFLLENBQUMsK0JBQStCLENBQUM7UUFDdkMsMEJBQTBCO1NBQ3pCLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUxQixHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2YsTUFBTSxNQUFNLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQztRQUU3QixJQUFJLGVBQWUsQ0FBQyxNQUFNLENB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JztcblxuY29uc3QgREVGQVVMVF9DT05DQVRFTkFURURfVkFMVUVTID0ge1xuICAgIFNFUEFSQVRPUjogICcsICcsXG4gICAgUVVPVEVfQ0hBUjogJ1wiJyxcbn07XG5cbmZ1bmN0aW9uIHJ0cmltIChzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1xccyskLywgJycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVFRZQ29sb3JzIChzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1xcMDMzXFxbWzAtOTtdKm0vZywgJycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd29yZFdyYXAgKHN0ciwgaW5kZW50LCB3aWR0aCkge1xuICAgIGxldCBjdXJTdHIgICAgID0gJyc7XG4gICAgbGV0IHdyYXBwZWRNc2cgPSAnJztcblxuICAgIGlmIChyZW1vdmVUVFlDb2xvcnMoc3RyKS5sZW5ndGggPD0gd2lkdGggLSBpbmRlbnQpXG4gICAgICAgIHJldHVybiBpbmRlbnRTdHJpbmcoc3RyLCAnICcsIGluZGVudCk7XG5cbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvKFxcclxcbikvZ20sICdcXG4nKVxuICAgICAgICAuc3BsaXQoLyhcXFMrWyBcXHRdKyl8KFxcUysoPzpcXG4pKXwoXFxuKS9tKVxuICAgICAgICAvL05PVEU6IGN1dCBlbXB0eSBlbGVtZW50c1xuICAgICAgICAuZmlsdGVyKGVsbSA9PiAhIWVsbSk7XG5cbiAgICBzdHIuZm9yRWFjaCh3b3JkID0+IHtcbiAgICAgICAgY29uc3QgbmV3U3RyID0gY3VyU3RyICsgd29yZDtcblxuICAgICAgICBpZiAocmVtb3ZlVFRZQ29sb3JzKG5ld1N0cikubGVuZ3RoID4gd2lkdGggLSBpbmRlbnQpIHtcbiAgICAgICAgICAgIHdyYXBwZWRNc2cgKz0gYCR7cnRyaW0oY3VyU3RyKX1cXG5gO1xuICAgICAgICAgICAgY3VyU3RyID0gd29yZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjdXJTdHJbY3VyU3RyLmxlbmd0aCAtIDFdID09PSAnXFxuJykge1xuICAgICAgICAgICAgICAgIHdyYXBwZWRNc2cgKz0gYCR7cnRyaW0oY3VyU3RyKX1cXG5gO1xuICAgICAgICAgICAgICAgIGN1clN0ciA9ICcnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjdXJTdHIgKz0gd29yZDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGluZGVudFN0cmluZyh3cmFwcGVkTXNnICsgY3VyU3RyLCAnICcsIGluZGVudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdFF1b3RlZFRleHQgKHN0ciwgc3BsaXRDaGFyLCBxdW90ZXMgPSAnXCJcXCcnKSB7XG4gICAgbGV0IGN1cnJlbnRQYXJ0ID0gJyc7XG4gICAgY29uc3QgcGFydHMgICAgID0gW107XG4gICAgbGV0IHF1b3RlQ2hhciAgID0gbnVsbDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRDaGFyID0gc3RyW2ldO1xuXG4gICAgICAgIGlmIChjdXJyZW50Q2hhciA9PT0gc3BsaXRDaGFyKSB7XG4gICAgICAgICAgICBpZiAocXVvdGVDaGFyKVxuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJ0ICs9IGN1cnJlbnRDaGFyO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFydHMucHVzaChjdXJyZW50UGFydCk7XG4gICAgICAgICAgICAgICAgY3VycmVudFBhcnQgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChxdW90ZXMuaW5kZXhPZihjdXJyZW50Q2hhcikgPiAtMSkge1xuICAgICAgICAgICAgaWYgKHF1b3RlQ2hhciA9PT0gY3VycmVudENoYXIpXG4gICAgICAgICAgICAgICAgcXVvdGVDaGFyID0gbnVsbDtcbiAgICAgICAgICAgIGVsc2UgaWYgKCFxdW90ZUNoYXIpXG4gICAgICAgICAgICAgICAgcXVvdGVDaGFyID0gY3VycmVudENoYXI7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgY3VycmVudFBhcnQgKz0gY3VycmVudENoYXI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgY3VycmVudFBhcnQgKz0gY3VycmVudENoYXI7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRQYXJ0KVxuICAgICAgICBwYXJ0cy5wdXNoKGN1cnJlbnRQYXJ0KTtcblxuICAgIHJldHVybiBwYXJ0cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBsdXJhbFN1ZmZpeCAoYXJyYXkpIHtcbiAgICByZXR1cm4gYXJyYXkubGVuZ3RoID4gMSA/ICdzJyA6ICcnO1xufVxuXG5mdW5jdGlvbiBnZXREaXNwbGF5ZWRJdGVtVGV4dCAoaXRlbSwgcXVvdGUpIHtcbiAgICByZXR1cm4gYCR7cXVvdGV9JHtpdGVtfSR7cXVvdGV9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmNhdGVuYXRlZFZhbHVlc1N0cmluZyAoYXJyYXksIHNlcGFyYXRvciA9IERFRkFVTFRfQ09OQ0FURU5BVEVEX1ZBTFVFUy5TRVBBUkFUT1IsIHF1b3RlQ2hhciA9IERFRkFVTFRfQ09OQ0FURU5BVEVEX1ZBTFVFUy5RVU9URV9DSEFSKSB7XG4gICAgY29uc3QgY2xvbmVkQXJyYXkgPSBbLi4uYXJyYXldO1xuXG4gICAgaWYgKHNlcGFyYXRvci5pbmRleE9mKCdcXG4nKSA+IC0xKVxuICAgICAgICByZXR1cm4gY2xvbmVkQXJyYXkubWFwKGl0ZW0gPT4gZ2V0RGlzcGxheWVkSXRlbVRleHQoaXRlbSwgcXVvdGVDaGFyKSkuam9pbihzZXBhcmF0b3IpO1xuXG4gICAgZWxzZSBpZiAoY2xvbmVkQXJyYXkubGVuZ3RoID09PSAxKVxuICAgICAgICByZXR1cm4gZ2V0RGlzcGxheWVkSXRlbVRleHQoY2xvbmVkQXJyYXlbMF0sIHF1b3RlQ2hhcik7XG5cbiAgICBlbHNlIGlmIChjbG9uZWRBcnJheS5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgY29uc3QgaXRlbTEgPSBhcnJheVswXTtcbiAgICAgICAgY29uc3QgaXRlbTIgPSBhcnJheVsxXTtcblxuICAgICAgICByZXR1cm4gYCR7Z2V0RGlzcGxheWVkSXRlbVRleHQoaXRlbTEsIHF1b3RlQ2hhcil9IGFuZCAke2dldERpc3BsYXllZEl0ZW1UZXh0KGl0ZW0yLCBxdW90ZUNoYXIpfWA7XG4gICAgfVxuXG4gICAgY29uc3QgbGFzdEl0ZW0gICAgICAgID0gY2xvbmVkQXJyYXkucG9wKCk7XG4gICAgY29uc3Qgb3RoZXJJdGVtU3RyaW5nID0gY2xvbmVkQXJyYXkubWFwKGl0ZW0gPT4gZ2V0RGlzcGxheWVkSXRlbVRleHQoaXRlbSwgcXVvdGVDaGFyKSkuam9pbihzZXBhcmF0b3IpO1xuXG4gICAgcmV0dXJuIGAke290aGVySXRlbVN0cmluZ30sIGFuZCAke2dldERpc3BsYXllZEl0ZW1UZXh0KGxhc3RJdGVtLCBxdW90ZUNoYXIpfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb0JlSW5QYXN0VGVuc2UgKGFycmF5KSB7XG4gICAgcmV0dXJuIGFycmF5Lmxlbmd0aCA+IDEgPyAnd2VyZScgOiAnd2FzJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3QgKGFycmF5LCBQUkVGSVggPSAnLSAnLCBTRVBBUkFUT1IgPSAnXFxuJykge1xuICAgIHJldHVybiBhcnJheS5tYXAob3B0aW9uID0+IFBSRUZJWCArIG9wdGlvbikuam9pbihTRVBBUkFUT1IpO1xufVxuIl19
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "testcafe",
3
3
  "description": "Automated browser testing for the modern web development stack.",
4
4
  "license": "MIT",
5
- "version": "2.3.1",
5
+ "version": "2.6.1",
6
6
  "author": {
7
7
  "name": "Developer Express Inc.",
8
8
  "url": "https://www.devexpress.com/"
@@ -19,7 +19,7 @@
19
19
  "url": "git+https://github.com/DevExpress/testcafe.git"
20
20
  },
21
21
  "engines": {
22
- "node": ">=14.0.0"
22
+ "node": ">=16.0.0"
23
23
  },
24
24
  "main": "lib/index",
25
25
  "types": "ts-defs/index.d.ts",
@@ -77,18 +77,18 @@
77
77
  "@babel/preset-flow": "^7.12.1",
78
78
  "@babel/preset-react": "^7.12.1",
79
79
  "@babel/runtime": "^7.12.5",
80
+ "@devexpress/bin-v8-flags-filter": "^1.3.0",
80
81
  "@miherlosev/esm": "3.2.26",
81
82
  "@types/node": "^12.20.10",
82
83
  "async-exit-hook": "^1.1.2",
83
84
  "babel-plugin-module-resolver": "^5.0.0",
84
85
  "babel-plugin-syntax-trailing-function-commas": "^6.22.0",
85
- "@devexpress/bin-v8-flags-filter": "^1.3.0",
86
86
  "bowser": "^2.8.1",
87
87
  "callsite": "^1.0.0",
88
88
  "callsite-record": "^4.0.0",
89
89
  "chai": "4.3.4",
90
90
  "chalk": "^2.3.0",
91
- "chrome-remote-interface": "^0.31.3",
91
+ "chrome-remote-interface": "^0.32.1",
92
92
  "coffeescript": "^2.3.1",
93
93
  "commander": "^8.3.0",
94
94
  "debug": "^4.3.1",
@@ -139,18 +139,19 @@
139
139
  "resolve-from": "^4.0.0",
140
140
  "sanitize-filename": "^1.6.0",
141
141
  "semver": "^5.6.0",
142
+ "set-cookie-parser": "^2.5.1",
142
143
  "source-map-support": "^0.5.16",
143
144
  "strip-bom": "^2.0.0",
144
- "testcafe-browser-tools": "2.0.23",
145
- "testcafe-hammerhead": "28.4.2",
145
+ "testcafe-browser-tools": "2.0.25",
146
+ "testcafe-hammerhead": "^31.4.2",
146
147
  "testcafe-legacy-api": "5.1.6",
147
- "testcafe-reporter-dashboard": "^0.2.10",
148
148
  "testcafe-reporter-json": "^2.1.0",
149
- "testcafe-reporter-list": "^2.1.0",
150
- "testcafe-reporter-minimal": "^2.1.0",
151
- "testcafe-reporter-spec": "^2.1.1",
149
+ "testcafe-reporter-list": "^2.2.0",
150
+ "testcafe-reporter-minimal": "^2.2.0",
151
+ "testcafe-reporter-spec": "^2.2.0",
152
152
  "testcafe-reporter-xunit": "^2.2.1",
153
153
  "testcafe-safe-storage": "^1.1.1",
154
+ "testcafe-selector-generator": "^0.1.0",
154
155
  "time-limit-promise": "^1.0.2",
155
156
  "tmp": "0.0.28",
156
157
  "tree-kill": "^1.2.2",
@@ -175,6 +176,7 @@
175
176
  "@types/mustache": "^0.8.32",
176
177
  "@types/prompts": "^2.0.14",
177
178
  "@types/semver": "^7.3.4",
179
+ "@types/set-cookie-parser": "^2.4.2",
178
180
  "@types/source-map-support": "^0.5.0",
179
181
  "@types/useragent": "^2.1.1",
180
182
  "@typescript-eslint/eslint-plugin": "^5.29.0",
@@ -188,8 +190,9 @@
188
190
  "chai-string": "^1.5.0",
189
191
  "chrome-launcher": "^0.15.0",
190
192
  "connect": "^3.4.0",
193
+ "cors": "^2.8.5",
191
194
  "cross-env": "^7.0.3",
192
- "devtools-protocol": "0.0.1078443",
195
+ "devtools-protocol": "0.0.1109433",
193
196
  "dom-walk": "^0.1.1",
194
197
  "escape-string-regexp": "^4.0.0",
195
198
  "eslint": "^7.13.0",
@@ -2220,6 +2220,13 @@ declare module 'testcafe' {
2220
2220
  * @param options - Error skipping conditions: a Boolean flag, an Object with options, or a callback function that defines custom error skipping logic.
2221
2221
  */
2222
2222
  skipJsErrors (options?: boolean | SkipJsErrorsOptionsObject | SkipJsErrorsCallback | SkipJsErrorsCallbackWithOptionsObject): TestControllerPromise;
2223
+
2224
+ /**
2225
+ * Pass custom data to the reporter.
2226
+ *
2227
+ * @param args - The data you want to report.
2228
+ */
2229
+ report (...args: any[]): TestControllerPromise;
2223
2230
  }
2224
2231
 
2225
2232
  interface TestControllerPromise<T=any> extends TestController, Promise<T> {
@@ -2393,7 +2400,7 @@ declare module 'testcafe' {
2393
2400
  // // SkipJsErrors API
2394
2401
  //----------------------------------------------------------------------------------------------------------------------
2395
2402
 
2396
- type SkipJsErrorsCallback = (opts?: {message: string; stack: string; pageUrl: string }) => boolean;
2403
+ type SkipJsErrorsCallback = (opts?: {message?: string; stack: string; pageUrl: string }) => boolean;
2397
2404
 
2398
2405
  interface SkipJsErrorsCallbackWithOptionsObject {
2399
2406
  fn: SkipJsErrorsCallback;
@@ -2665,6 +2672,10 @@ declare module 'testcafe' {
2665
2672
  * Disables support for multi-window testing in Chrome and Firefox. Use this option if you encounter compatibility issues with your existing tests.
2666
2673
  */
2667
2674
  disableMultipleWindows: boolean;
2675
+ /**
2676
+ * Enables native automation of Chromium-based browsers. Use this option to speed up browser automation and increase test stability.
2677
+ */
2678
+ nativeAutomation: boolean;
2668
2679
  }
2669
2680
 
2670
2681
  interface StartOptions {
@@ -2677,7 +2688,6 @@ declare module 'testcafe' {
2677
2688
  cache: boolean;
2678
2689
  configFile: string;
2679
2690
  disableHttp2: boolean;
2680
- proxyless: boolean;
2681
2691
  }
2682
2692
 
2683
2693
  interface ColorOutputOptions {
@@ -2218,6 +2218,13 @@ declare module 'testcafe' {
2218
2218
  * @param options - Error skipping conditions: a Boolean flag, an Object with options, or a callback function that defines custom error skipping logic.
2219
2219
  */
2220
2220
  skipJsErrors (options?: boolean | SkipJsErrorsOptionsObject | SkipJsErrorsCallback | SkipJsErrorsCallbackWithOptionsObject): TestControllerPromise;
2221
+
2222
+ /**
2223
+ * Pass custom data to the reporter.
2224
+ *
2225
+ * @param args - The data you want to report.
2226
+ */
2227
+ report (...args: any[]): TestControllerPromise;
2221
2228
  }
2222
2229
 
2223
2230
  interface TestControllerPromise<T=any> extends TestController, Promise<T> {
@@ -2391,7 +2398,7 @@ declare module 'testcafe' {
2391
2398
  // // SkipJsErrors API
2392
2399
  //----------------------------------------------------------------------------------------------------------------------
2393
2400
 
2394
- type SkipJsErrorsCallback = (opts?: {message: string; stack: string; pageUrl: string }) => boolean;
2401
+ type SkipJsErrorsCallback = (opts?: {message?: string; stack: string; pageUrl: string }) => boolean;
2395
2402
 
2396
2403
  interface SkipJsErrorsCallbackWithOptionsObject {
2397
2404
  fn: SkipJsErrorsCallback;
@@ -2218,6 +2218,13 @@ declare module 'testcafe' {
2218
2218
  * @param options - Error skipping conditions: a Boolean flag, an Object with options, or a callback function that defines custom error skipping logic.
2219
2219
  */
2220
2220
  skipJsErrors (options?: boolean | SkipJsErrorsOptionsObject | SkipJsErrorsCallback | SkipJsErrorsCallbackWithOptionsObject): TestControllerPromise;
2221
+
2222
+ /**
2223
+ * Pass custom data to the reporter.
2224
+ *
2225
+ * @param args - The data you want to report.
2226
+ */
2227
+ report (...args: any[]): TestControllerPromise;
2221
2228
  }
2222
2229
 
2223
2230
  interface TestControllerPromise<T=any> extends TestController, Promise<T> {
@@ -2391,7 +2398,7 @@ declare module 'testcafe' {
2391
2398
  // // SkipJsErrors API
2392
2399
  //----------------------------------------------------------------------------------------------------------------------
2393
2400
 
2394
- type SkipJsErrorsCallback = (opts?: {message: string; stack: string; pageUrl: string }) => boolean;
2401
+ type SkipJsErrorsCallback = (opts?: {message?: string; stack: string; pageUrl: string }) => boolean;
2395
2402
 
2396
2403
  interface SkipJsErrorsCallbackWithOptionsObject {
2397
2404
  fn: SkipJsErrorsCallback;