testcafe 1.14.1 → 1.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/LICENSE +21 -21
  3. package/bin/testcafe-with-v8-flag-filter.js +0 -0
  4. package/lib/api/exportable-lib/index.js +49 -49
  5. package/lib/api/request-hooks/assert-type.js +7 -7
  6. package/lib/api/request-hooks/hook-method-names.js +9 -9
  7. package/lib/api/request-hooks/hook.js +32 -32
  8. package/lib/api/request-hooks/interfaces.js +2 -2
  9. package/lib/api/request-hooks/request-logger.js +112 -112
  10. package/lib/api/request-hooks/request-mock/create-request-mock.js +10 -10
  11. package/lib/api/request-hooks/request-mock/index.js +44 -44
  12. package/lib/api/request-hooks/request-mock.js +46 -46
  13. package/lib/api/structure/base-unit.js +11 -11
  14. package/lib/api/structure/fixture.js +75 -75
  15. package/lib/api/structure/interfaces.js +2 -2
  16. package/lib/api/structure/test-file.js +31 -31
  17. package/lib/api/structure/test-timeout.js +9 -9
  18. package/lib/api/structure/test.js +85 -85
  19. package/lib/api/structure/testing-unit.js +89 -89
  20. package/lib/api/structure/unit-type.js +9 -9
  21. package/lib/api/test-controller/assertion.js +88 -88
  22. package/lib/api/test-controller/execution-context.js +82 -82
  23. package/lib/api/test-controller/index.js +358 -358
  24. package/lib/api/test-controller/proxy.js +28 -28
  25. package/lib/api/test-page-url.js +60 -60
  26. package/lib/api/test-run-tracker.js +68 -68
  27. package/lib/api/wrap-test-function.js +49 -49
  28. package/lib/assertions/executor.js +74 -74
  29. package/lib/assertions/get-fn.js +46 -46
  30. package/lib/assertions/type.js +20 -20
  31. package/lib/assets/content-types.js +9 -9
  32. package/lib/assets/injectables.js +18 -18
  33. package/lib/browser/connection/command.js +10 -10
  34. package/lib/browser/connection/error-hints.js +9 -9
  35. package/lib/browser/connection/gateway.js +159 -159
  36. package/lib/browser/connection/get-hints.js +33 -33
  37. package/lib/browser/connection/heartbeat-status.js +8 -8
  38. package/lib/browser/connection/index.js +328 -328
  39. package/lib/browser/connection/remotes-queue.js +46 -46
  40. package/lib/browser/connection/service-routes.js +12 -12
  41. package/lib/browser/connection/status.js +12 -12
  42. package/lib/browser/interfaces.js +2 -2
  43. package/lib/browser/provider/built-in/dedicated/base.js +80 -80
  44. package/lib/browser/provider/built-in/dedicated/chrome/browser-client.js +204 -204
  45. package/lib/browser/provider/built-in/dedicated/chrome/build-chrome-args.js +17 -17
  46. package/lib/browser/provider/built-in/dedicated/chrome/config.js +110 -110
  47. package/lib/browser/provider/built-in/dedicated/chrome/create-temp-profile.js +45 -45
  48. package/lib/browser/provider/built-in/dedicated/chrome/elapsed-upperbounds.js +15 -15
  49. package/lib/browser/provider/built-in/dedicated/chrome/index.js +102 -102
  50. package/lib/browser/provider/built-in/dedicated/chrome/interfaces.js +2 -2
  51. package/lib/browser/provider/built-in/dedicated/chrome/local-chrome.js +24 -24
  52. package/lib/browser/provider/built-in/dedicated/chrome/runtime-info.js +29 -29
  53. package/lib/browser/provider/built-in/dedicated/edge/index.js +10 -10
  54. package/lib/browser/provider/built-in/dedicated/edge/runtime-info.js +29 -29
  55. package/lib/browser/provider/built-in/dedicated/firefox/config.js +33 -33
  56. package/lib/browser/provider/built-in/dedicated/firefox/create-temp-profile.js +78 -78
  57. package/lib/browser/provider/built-in/dedicated/firefox/index.js +73 -73
  58. package/lib/browser/provider/built-in/dedicated/firefox/local-firefox.js +36 -36
  59. package/lib/browser/provider/built-in/dedicated/firefox/marionette-client/commands.js +13 -13
  60. package/lib/browser/provider/built-in/dedicated/firefox/marionette-client/index.js +200 -200
  61. package/lib/browser/provider/built-in/dedicated/firefox/runtime-info.js +17 -17
  62. package/lib/browser/provider/built-in/index.js +21 -21
  63. package/lib/browser/provider/built-in/locally-installed.js +30 -30
  64. package/lib/browser/provider/built-in/path.js +47 -47
  65. package/lib/browser/provider/built-in/remote.js +58 -58
  66. package/lib/browser/provider/index.js +303 -303
  67. package/lib/browser/provider/parse-provider-name.js +16 -16
  68. package/lib/browser/provider/plugin-host.js +121 -121
  69. package/lib/browser/provider/pool.js +115 -115
  70. package/lib/browser/provider/utils/argument-parsing.js +74 -74
  71. package/lib/browser/provider/utils/browser-starter.js +34 -34
  72. package/lib/browser/provider/utils/client-functions.js +24 -24
  73. package/lib/browser/provider/utils/get-maximized-headless-window-size.js +9 -9
  74. package/lib/cli/argument-parser.js +284 -284
  75. package/lib/cli/authentication-helper.js +35 -35
  76. package/lib/cli/cli.js +134 -134
  77. package/lib/cli/correct-browsers-and-sources.js +40 -40
  78. package/lib/cli/index.js +19 -19
  79. package/lib/cli/log.js +43 -43
  80. package/lib/cli/remotes-wizard.js +36 -36
  81. package/lib/cli/termination-handler.js +38 -38
  82. package/lib/client/automation/index.js +34 -16
  83. package/lib/client/automation/index.min.js +1 -1
  84. package/lib/client/browser/idle-page/index.html.mustache +35 -35
  85. package/lib/client/browser/idle-page/logo.svg +86 -86
  86. package/lib/client/core/index.js +14 -14
  87. package/lib/client/driver/index.js +46 -16
  88. package/lib/client/driver/index.min.js +1 -1
  89. package/lib/client/driver/internal-properties.js +9 -9
  90. package/lib/client/test-run/iframe.js.mustache +17 -17
  91. package/lib/client/test-run/index.js.mustache +51 -51
  92. package/lib/client/ui/index.js +14 -14
  93. package/lib/client/ui/sprite.svg +42 -42
  94. package/lib/client-functions/builder-symbol.js +4 -4
  95. package/lib/client-functions/client-function-builder.js +155 -155
  96. package/lib/client-functions/replicator.js +61 -61
  97. package/lib/client-functions/return-single-prop-mode.js +8 -8
  98. package/lib/client-functions/selector-api-execution-mode.js +20 -20
  99. package/lib/client-functions/selectors/add-api.js +645 -645
  100. package/lib/client-functions/selectors/create-snapshot-methods.js +13 -13
  101. package/lib/client-functions/selectors/prepare-api-args.js +20 -20
  102. package/lib/client-functions/selectors/selector-attribute-filter.js +22 -22
  103. package/lib/client-functions/selectors/selector-builder.js +153 -153
  104. package/lib/client-functions/selectors/selector-text-filter.js +43 -43
  105. package/lib/client-functions/selectors/snapshot-properties.js +48 -48
  106. package/lib/client-functions/types.js +18 -18
  107. package/lib/compiler/babel/format-babel-produced-code.js +10 -10
  108. package/lib/compiler/babel/get-base-babel-options.js +11 -11
  109. package/lib/compiler/babel/load-libs.js +63 -63
  110. package/lib/compiler/babel/preset-stage-2.js +19 -19
  111. package/lib/compiler/compile-client-function.js +73 -73
  112. package/lib/compiler/compilers.js +33 -33
  113. package/lib/compiler/index.js +92 -92
  114. package/lib/compiler/interfaces.js +2 -2
  115. package/lib/compiler/test-file/api-based.js +146 -146
  116. package/lib/compiler/test-file/base.js +36 -36
  117. package/lib/compiler/test-file/exportble-lib-path.js +5 -5
  118. package/lib/compiler/test-file/formats/coffeescript/compiler.js +38 -38
  119. package/lib/compiler/test-file/formats/coffeescript/get-test-list.js +29 -29
  120. package/lib/compiler/test-file/formats/es-next/compiler.js +42 -42
  121. package/lib/compiler/test-file/formats/es-next/get-test-list.js +166 -166
  122. package/lib/compiler/test-file/formats/es-next/is-flow-code.js +7 -7
  123. package/lib/compiler/test-file/formats/raw.js +85 -85
  124. package/lib/compiler/test-file/formats/typescript/compiler.js +135 -135
  125. package/lib/compiler/test-file/formats/typescript/get-test-list.js +185 -185
  126. package/lib/compiler/test-file/test-file-parser-base.js +214 -214
  127. package/lib/configuration/configuration-base.js +165 -165
  128. package/lib/configuration/constants.js +9 -9
  129. package/lib/configuration/customizable-compilers.js +7 -7
  130. package/lib/configuration/default-values.js +51 -51
  131. package/lib/configuration/interfaces.js +2 -2
  132. package/lib/configuration/option-names.js +53 -53
  133. package/lib/configuration/option-source.js +9 -9
  134. package/lib/configuration/option.js +14 -14
  135. package/lib/configuration/quarantine-option-names.js +8 -8
  136. package/lib/configuration/run-option-names.js +26 -26
  137. package/lib/configuration/screenshot-option-names.js +10 -10
  138. package/lib/configuration/testcafe-configuration.js +163 -163
  139. package/lib/configuration/types.js +2 -2
  140. package/lib/configuration/typescript-configuration.js +62 -62
  141. package/lib/custom-client-scripts/assert-type.js +7 -7
  142. package/lib/custom-client-scripts/client-script-init.js +2 -2
  143. package/lib/custom-client-scripts/client-script.js +106 -106
  144. package/lib/custom-client-scripts/get-code.js +11 -11
  145. package/lib/custom-client-scripts/get-url.js +6 -6
  146. package/lib/custom-client-scripts/load.js +15 -15
  147. package/lib/custom-client-scripts/problematic-scripts.js +2 -2
  148. package/lib/custom-client-scripts/routing.js +36 -36
  149. package/lib/custom-client-scripts/utils.js +60 -60
  150. package/lib/embedding-utils.js +83 -83
  151. package/lib/errors/create-stack-filter.js +18 -18
  152. package/lib/errors/error-list.js +26 -26
  153. package/lib/errors/get-callsite.js +31 -31
  154. package/lib/errors/internal-modules-prefix.js +8 -8
  155. package/lib/errors/is-internal-stack-frame.js +45 -45
  156. package/lib/errors/process-test-fn-error.js +37 -37
  157. package/lib/errors/runtime/index.js +123 -123
  158. package/lib/errors/runtime/templates.js +115 -115
  159. package/lib/errors/runtime/type-assertions.js +112 -112
  160. package/lib/errors/stack-cleaning-hook.js +64 -64
  161. package/lib/errors/test-run/formattable-adapter.js +59 -59
  162. package/lib/errors/test-run/index.js +301 -301
  163. package/lib/errors/test-run/render-error-template.js +31 -31
  164. package/lib/errors/test-run/templates.js +91 -91
  165. package/lib/errors/test-run/utils.js +89 -89
  166. package/lib/errors/types.js +156 -156
  167. package/lib/index.js +81 -81
  168. package/lib/live/bootstrapper.js +43 -43
  169. package/lib/live/controller.js +107 -107
  170. package/lib/live/file-watcher/index.js +67 -67
  171. package/lib/live/file-watcher/modules-graph.js +58 -58
  172. package/lib/live/keyboard-observer.js +76 -76
  173. package/lib/live/logger/index.js +64 -64
  174. package/lib/live/test-run-controller.js +96 -96
  175. package/lib/live/test-run-state.js +6 -6
  176. package/lib/live/test-run.js +56 -56
  177. package/lib/live/test-runner.js +167 -167
  178. package/lib/load-assets.js +29 -29
  179. package/lib/notifications/add-rendered-warning.js +16 -16
  180. package/lib/notifications/debug-logger.js +78 -78
  181. package/lib/notifications/deprecated.js +24 -24
  182. package/lib/notifications/information-message.js +9 -9
  183. package/lib/notifications/warning-log.js +31 -31
  184. package/lib/notifications/warning-message.js +47 -47
  185. package/lib/reporter/command/command-formatter.js +120 -109
  186. package/lib/reporter/command/format-command.js +8 -8
  187. package/lib/reporter/command/interfaces.js +2 -2
  188. package/lib/reporter/index.js +319 -314
  189. package/lib/reporter/interfaces.js +2 -2
  190. package/lib/reporter/plugin-host.js +135 -135
  191. package/lib/reporter/plugin-methods.js +12 -12
  192. package/lib/role/index.js +74 -74
  193. package/lib/role/marker-symbol.js +7 -7
  194. package/lib/role/phase.js +9 -9
  195. package/lib/runner/bootstrapper.js +271 -271
  196. package/lib/runner/browser-job-result.js +9 -9
  197. package/lib/runner/browser-job.js +152 -152
  198. package/lib/runner/browser-set.js +114 -114
  199. package/lib/runner/fixture-hook-controller.js +85 -85
  200. package/lib/runner/index.js +449 -449
  201. package/lib/runner/interfaces.js +2 -2
  202. package/lib/runner/reporter-stream-controller.js +27 -27
  203. package/lib/runner/task/index.js +151 -151
  204. package/lib/runner/task/phase.js +9 -9
  205. package/lib/runner/test-run-controller.js +165 -165
  206. package/lib/runner/tested-app.js +72 -72
  207. package/lib/screenshots/capturer.js +141 -141
  208. package/lib/screenshots/constants.js +11 -11
  209. package/lib/screenshots/crop.js +111 -111
  210. package/lib/screenshots/default-extension.js +4 -4
  211. package/lib/screenshots/index.js +67 -67
  212. package/lib/screenshots/utils.js +39 -39
  213. package/lib/services/compiler/host.js +190 -190
  214. package/lib/services/compiler/io.js +9 -9
  215. package/lib/services/compiler/protocol.js +17 -16
  216. package/lib/services/compiler/service.js +225 -212
  217. package/lib/services/compiler/test-run-proxy.js +111 -111
  218. package/lib/services/interfaces.js +2 -2
  219. package/lib/services/process-title.js +8 -8
  220. package/lib/services/serialization/prepare-options.js +17 -17
  221. package/lib/services/serialization/replicator/create-replicator.js +25 -25
  222. package/lib/services/serialization/replicator/custom-error-transform.js +26 -26
  223. package/lib/services/serialization/test-structure.js +92 -92
  224. package/lib/services/utils/ipc/interfaces.js +30 -30
  225. package/lib/services/utils/ipc/io.js +108 -108
  226. package/lib/services/utils/ipc/message.js +75 -75
  227. package/lib/services/utils/ipc/packet.js +55 -55
  228. package/lib/services/utils/ipc/proxy.js +109 -109
  229. package/lib/services/utils/ipc/transport.js +64 -64
  230. package/lib/shared/errors/index.js +382 -382
  231. package/lib/shared/node-modules-folder-name.js +4 -4
  232. package/lib/test-run/bookmark.js +90 -90
  233. package/lib/test-run/browser-console-messages.js +73 -73
  234. package/lib/test-run/browser-manipulation-queue.js +92 -92
  235. package/lib/test-run/client-messages.js +9 -9
  236. package/lib/test-run/commands/actions.js +486 -483
  237. package/lib/test-run/commands/assertion.js +45 -45
  238. package/lib/test-run/commands/base.js +14 -14
  239. package/lib/test-run/commands/browser-manipulation.js +95 -95
  240. package/lib/test-run/commands/from-object.js +82 -82
  241. package/lib/test-run/commands/observation.js +61 -61
  242. package/lib/test-run/commands/options.js +231 -215
  243. package/lib/test-run/commands/service.js +54 -48
  244. package/lib/test-run/commands/type.js +65 -64
  245. package/lib/test-run/commands/utils.js +87 -87
  246. package/lib/test-run/commands/validations/argument.js +90 -90
  247. package/lib/test-run/commands/validations/factories.js +47 -47
  248. package/lib/test-run/commands/validations/initializers.js +44 -44
  249. package/lib/test-run/debug-log.js +32 -32
  250. package/lib/test-run/execute-js-expression.js +74 -74
  251. package/lib/test-run/index.js +823 -799
  252. package/lib/test-run/marker-symbol.js +7 -7
  253. package/lib/test-run/observed-callsites-storage.js +17 -17
  254. package/lib/test-run/phase.js +16 -16
  255. package/lib/test-run/session-controller.js +104 -104
  256. package/lib/testcafe.js +118 -118
  257. package/lib/utils/assignable.js +39 -39
  258. package/lib/utils/async-event-emitter.js +28 -28
  259. package/lib/utils/async-queue.js +14 -14
  260. package/lib/utils/browser-connection-timeouts.js +19 -19
  261. package/lib/utils/callsite.js +17 -17
  262. package/lib/utils/check-file-path.js +31 -31
  263. package/lib/utils/check-url.js +51 -51
  264. package/lib/utils/convert-to-best-fit-type.js +16 -16
  265. package/lib/utils/correct-file-path.js +21 -21
  266. package/lib/utils/define-lazy-property.js +13 -13
  267. package/lib/utils/delay.js +6 -6
  268. package/lib/utils/delegated-api.js +44 -44
  269. package/lib/utils/detect-display.js +6 -6
  270. package/lib/utils/detect-ffmpeg.js +44 -44
  271. package/lib/utils/diff/colors.js +29 -29
  272. package/lib/utils/diff/index.js +52 -52
  273. package/lib/utils/diff/util.js +23 -23
  274. package/lib/utils/diff.js +29 -29
  275. package/lib/utils/escape-user-agent.js +10 -10
  276. package/lib/utils/flag-list.js +17 -17
  277. package/lib/utils/get-any-key.js +8 -8
  278. package/lib/utils/get-browser.js +8 -8
  279. package/lib/utils/get-common-path.js +34 -34
  280. package/lib/utils/get-filter-fn.js +40 -40
  281. package/lib/utils/get-options/base.js +36 -36
  282. package/lib/utils/get-options/compiler.js +33 -33
  283. package/lib/utils/get-options/grep.js +15 -15
  284. package/lib/utils/get-options/index.js +20 -20
  285. package/lib/utils/get-options/meta.js +22 -22
  286. package/lib/utils/get-options/quarantine.js +91 -91
  287. package/lib/utils/get-options/screenshot.js +17 -17
  288. package/lib/utils/get-options/ssl.js +45 -45
  289. package/lib/utils/get-options/video.js +10 -10
  290. package/lib/utils/get-viewport-width.js +17 -17
  291. package/lib/utils/guard-time-execution.js +10 -10
  292. package/lib/utils/handle-errors.js +74 -74
  293. package/lib/utils/handle-tag-args.js +8 -8
  294. package/lib/utils/http.js +30 -30
  295. package/lib/utils/is-localhost.js +11 -11
  296. package/lib/utils/is-password-input.js +11 -0
  297. package/lib/utils/is-repl.js +10 -10
  298. package/lib/utils/is-window-in-iframe.js +6 -6
  299. package/lib/utils/limit-number.js +10 -10
  300. package/lib/utils/make-reg-exp.js +7 -7
  301. package/lib/utils/moment-loader.js +20 -20
  302. package/lib/utils/parse-file-list.js +71 -71
  303. package/lib/utils/parse-user-agent.js +55 -55
  304. package/lib/utils/path-pattern.js +114 -114
  305. package/lib/utils/prepare-reporters.js +30 -30
  306. package/lib/utils/prerender-callsite.js +18 -18
  307. package/lib/utils/process.js +119 -119
  308. package/lib/utils/promisified-functions.js +46 -46
  309. package/lib/utils/re-executable-promise.js +39 -39
  310. package/lib/utils/render-callsite-sync.js +29 -29
  311. package/lib/utils/render-template.js +9 -9
  312. package/lib/utils/reporter.js +30 -30
  313. package/lib/utils/resolve-path-relatively-cwd.js +7 -7
  314. package/lib/utils/string.js +105 -105
  315. package/lib/utils/temp-directory/cleanup-process/commands.js +7 -7
  316. package/lib/utils/temp-directory/cleanup-process/index.js +143 -143
  317. package/lib/utils/temp-directory/cleanup-process/worker.js +58 -58
  318. package/lib/utils/temp-directory/index.js +87 -87
  319. package/lib/utils/temp-directory/lockfile.js +56 -56
  320. package/lib/utils/thennable.js +7 -7
  321. package/lib/utils/timer.js +15 -15
  322. package/lib/utils/to-posix-path.js +8 -8
  323. package/lib/utils/types.js +2 -2
  324. package/lib/video-recorder/interfaces.js +2 -2
  325. package/lib/video-recorder/process.js +126 -126
  326. package/lib/video-recorder/recorder.js +136 -136
  327. package/lib/video-recorder/test-run-video-recorder.js +69 -69
  328. package/lib/video-recorder/videos.js +37 -37
  329. package/package.json +2 -2
  330. package/ts-defs/index.d.ts +25 -14
  331. package/ts-defs/selectors.d.ts +16 -5
  332. package/ts-defs/testcafe-scripts.d.ts +17 -6
@@ -1,165 +1,165 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const configuration_base_1 = __importDefault(require("./configuration-base"));
7
- const lodash_1 = require("lodash");
8
- const get_options_1 = require("../utils/get-options");
9
- const option_names_1 = __importDefault(require("./option-names"));
10
- const get_filter_fn_1 = __importDefault(require("../utils/get-filter-fn"));
11
- const prepare_reporters_1 = __importDefault(require("../utils/prepare-reporters"));
12
- const string_1 = require("../utils/string");
13
- const render_template_1 = __importDefault(require("../utils/render-template"));
14
- const warning_message_1 = __importDefault(require("../notifications/warning-message"));
15
- const resolve_path_relatively_cwd_1 = __importDefault(require("../utils/resolve-path-relatively-cwd"));
16
- const default_values_1 = require("./default-values");
17
- const option_source_1 = __importDefault(require("./option-source"));
18
- const customizable_compilers_1 = __importDefault(require("./customizable-compilers"));
19
- const deprecated_1 = require("../notifications/deprecated");
20
- const CONFIGURATION_FILENAME = '.testcaferc.json';
21
- const DEFAULT_SCREENSHOTS_DIRECTORY = 'screenshots';
22
- const OPTION_FLAG_NAMES = [
23
- option_names_1.default.skipJsErrors,
24
- option_names_1.default.debugMode,
25
- option_names_1.default.debugOnFail,
26
- option_names_1.default.skipUncaughtErrors,
27
- option_names_1.default.stopOnFirstFail,
28
- option_names_1.default.takeScreenshotsOnFails,
29
- option_names_1.default.disablePageCaching,
30
- option_names_1.default.disablePageReloads,
31
- option_names_1.default.disableScreenshots,
32
- option_names_1.default.disableMultipleWindows
33
- ];
34
- const OPTION_INIT_FLAG_NAMES = [
35
- option_names_1.default.developmentMode,
36
- option_names_1.default.retryTestPages,
37
- option_names_1.default.cache
38
- ];
39
- class TestCafeConfiguration extends configuration_base_1.default {
40
- constructor(configFile = CONFIGURATION_FILENAME) {
41
- super(configFile);
42
- }
43
- async init(options) {
44
- options = options || {};
45
- await super.init();
46
- const opts = await this._load();
47
- if (opts) {
48
- this._options = configuration_base_1.default._fromObj(opts);
49
- await this._normalizeOptionsAfterLoad();
50
- }
51
- this.mergeOptions(options);
52
- }
53
- prepare() {
54
- this._prepareFlags();
55
- this._setDefaultValues();
56
- this._prepareCompilerOptions();
57
- }
58
- notifyAboutOverriddenOptions() {
59
- if (!this._overriddenOptions.length)
60
- return;
61
- const optionsStr = string_1.getConcatenatedValuesString(this._overriddenOptions);
62
- const optionsSuffix = string_1.getPluralSuffix(this._overriddenOptions);
63
- configuration_base_1.default._showConsoleWarning(render_template_1.default(warning_message_1.default.configOptionsWereOverridden, optionsStr, optionsSuffix));
64
- this._overriddenOptions = [];
65
- }
66
- notifyAboutDeprecatedOptions(warningLog) {
67
- const deprecatedOptions = this.getOptions((name, option) => name in deprecated_1.DEPRECATED && option.value !== void 0);
68
- for (const optionName in deprecatedOptions)
69
- warningLog.addWarning(deprecated_1.getDeprecationMessage(deprecated_1.DEPRECATED[optionName]));
70
- }
71
- get startOptions() {
72
- const result = {
73
- hostname: this.getOption(option_names_1.default.hostname),
74
- port1: this.getOption(option_names_1.default.port1),
75
- port2: this.getOption(option_names_1.default.port2),
76
- options: {
77
- ssl: this.getOption(option_names_1.default.ssl),
78
- developmentMode: this.getOption(option_names_1.default.developmentMode),
79
- retryTestPages: this.getOption(option_names_1.default.retryTestPages),
80
- cache: this.getOption(option_names_1.default.cache)
81
- }
82
- };
83
- return result;
84
- }
85
- _prepareFlag(name) {
86
- const option = this._ensureOption(name, void 0, option_source_1.default.Configuration);
87
- option.value = !!option.value;
88
- }
89
- _prepareFlags() {
90
- OPTION_FLAG_NAMES.forEach(name => this._prepareFlag(name));
91
- }
92
- _prepareInitFlags() {
93
- OPTION_INIT_FLAG_NAMES.forEach(name => this._prepareFlag(name));
94
- }
95
- async _normalizeOptionsAfterLoad() {
96
- await this._prepareSslOptions();
97
- this._prepareInitFlags();
98
- this._prepareFilterFn();
99
- this._ensureArrayOption(option_names_1.default.src);
100
- this._ensureArrayOption(option_names_1.default.browsers);
101
- this._ensureArrayOption(option_names_1.default.clientScripts);
102
- this._prepareReporters();
103
- }
104
- _prepareFilterFn() {
105
- const filterOption = this._ensureOption(option_names_1.default.filter, null, option_source_1.default.Configuration);
106
- if (!filterOption.value)
107
- return;
108
- const filterOptionValue = filterOption.value;
109
- if (filterOptionValue.testGrep)
110
- filterOptionValue.testGrep = get_options_1.getGrepOptions(option_names_1.default.filterTestGrep, filterOptionValue.testGrep);
111
- if (filterOptionValue.fixtureGrep)
112
- filterOptionValue.fixtureGrep = get_options_1.getGrepOptions(option_names_1.default.filterFixtureGrep, filterOptionValue.fixtureGrep);
113
- filterOption.value = get_filter_fn_1.default(filterOption.value);
114
- }
115
- _ensureScreenshotPath() {
116
- const path = resolve_path_relatively_cwd_1.default(DEFAULT_SCREENSHOTS_DIRECTORY);
117
- const screenshots = this._ensureOption(option_names_1.default.screenshots, {}, option_source_1.default.Configuration).value;
118
- if (!screenshots.path)
119
- screenshots.path = path;
120
- }
121
- _prepareReporters() {
122
- const reporterOption = this._options[option_names_1.default.reporter];
123
- if (!reporterOption)
124
- return;
125
- const optionValue = lodash_1.castArray(reporterOption.value);
126
- reporterOption.value = prepare_reporters_1.default(optionValue);
127
- }
128
- async _prepareSslOptions() {
129
- const sslOptions = this._options[option_names_1.default.ssl];
130
- if (!sslOptions)
131
- return;
132
- sslOptions.value = await get_options_1.getSSLOptions(sslOptions.value);
133
- }
134
- _setDefaultValues() {
135
- this._ensureOptionWithValue(option_names_1.default.selectorTimeout, default_values_1.DEFAULT_TIMEOUT.selector, option_source_1.default.Configuration);
136
- this._ensureOptionWithValue(option_names_1.default.assertionTimeout, default_values_1.DEFAULT_TIMEOUT.assertion, option_source_1.default.Configuration);
137
- this._ensureOptionWithValue(option_names_1.default.pageLoadTimeout, default_values_1.DEFAULT_TIMEOUT.pageLoad, option_source_1.default.Configuration);
138
- this._ensureOptionWithValue(option_names_1.default.speed, default_values_1.DEFAULT_SPEED_VALUE, option_source_1.default.Configuration);
139
- this._ensureOptionWithValue(option_names_1.default.appInitDelay, default_values_1.DEFAULT_APP_INIT_DELAY, option_source_1.default.Configuration);
140
- this._ensureOptionWithValue(option_names_1.default.concurrency, default_values_1.DEFAULT_CONCURRENCY_VALUE, option_source_1.default.Configuration);
141
- this._ensureOptionWithValue(option_names_1.default.src, default_values_1.DEFAULT_SOURCE_DIRECTORIES, option_source_1.default.Configuration);
142
- this._ensureOptionWithValue(option_names_1.default.developmentMode, default_values_1.DEFAULT_DEVELOPMENT_MODE, option_source_1.default.Configuration);
143
- this._ensureOptionWithValue(option_names_1.default.retryTestPages, default_values_1.DEFAULT_RETRY_TEST_PAGES, option_source_1.default.Configuration);
144
- this._ensureScreenshotPath();
145
- }
146
- _prepareCompilerOptions() {
147
- const compilerOptions = this._ensureOption(option_names_1.default.compilerOptions, default_values_1.getDefaultCompilerOptions(), option_source_1.default.Configuration);
148
- compilerOptions.value = compilerOptions.value || default_values_1.getDefaultCompilerOptions();
149
- const tsConfigPath = this.getOption(option_names_1.default.tsConfigPath);
150
- if (tsConfigPath) {
151
- const compilerOptionValue = compilerOptions.value;
152
- let typeScriptCompilerOptions = compilerOptionValue[customizable_compilers_1.default.typescript];
153
- typeScriptCompilerOptions = Object.assign({
154
- configPath: tsConfigPath
155
- }, typeScriptCompilerOptions);
156
- compilerOptions.value[customizable_compilers_1.default.typescript] = typeScriptCompilerOptions;
157
- }
158
- }
159
- static get FILENAME() {
160
- return CONFIGURATION_FILENAME;
161
- }
162
- }
163
- exports.default = TestCafeConfiguration;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const configuration_base_1 = __importDefault(require("./configuration-base"));
7
+ const lodash_1 = require("lodash");
8
+ const get_options_1 = require("../utils/get-options");
9
+ const option_names_1 = __importDefault(require("./option-names"));
10
+ const get_filter_fn_1 = __importDefault(require("../utils/get-filter-fn"));
11
+ const prepare_reporters_1 = __importDefault(require("../utils/prepare-reporters"));
12
+ const string_1 = require("../utils/string");
13
+ const render_template_1 = __importDefault(require("../utils/render-template"));
14
+ const warning_message_1 = __importDefault(require("../notifications/warning-message"));
15
+ const resolve_path_relatively_cwd_1 = __importDefault(require("../utils/resolve-path-relatively-cwd"));
16
+ const default_values_1 = require("./default-values");
17
+ const option_source_1 = __importDefault(require("./option-source"));
18
+ const customizable_compilers_1 = __importDefault(require("./customizable-compilers"));
19
+ const deprecated_1 = require("../notifications/deprecated");
20
+ const CONFIGURATION_FILENAME = '.testcaferc.json';
21
+ const DEFAULT_SCREENSHOTS_DIRECTORY = 'screenshots';
22
+ const OPTION_FLAG_NAMES = [
23
+ option_names_1.default.skipJsErrors,
24
+ option_names_1.default.debugMode,
25
+ option_names_1.default.debugOnFail,
26
+ option_names_1.default.skipUncaughtErrors,
27
+ option_names_1.default.stopOnFirstFail,
28
+ option_names_1.default.takeScreenshotsOnFails,
29
+ option_names_1.default.disablePageCaching,
30
+ option_names_1.default.disablePageReloads,
31
+ option_names_1.default.disableScreenshots,
32
+ option_names_1.default.disableMultipleWindows
33
+ ];
34
+ const OPTION_INIT_FLAG_NAMES = [
35
+ option_names_1.default.developmentMode,
36
+ option_names_1.default.retryTestPages,
37
+ option_names_1.default.cache
38
+ ];
39
+ class TestCafeConfiguration extends configuration_base_1.default {
40
+ constructor(configFile = CONFIGURATION_FILENAME) {
41
+ super(configFile);
42
+ }
43
+ async init(options) {
44
+ options = options || {};
45
+ await super.init();
46
+ const opts = await this._load();
47
+ if (opts) {
48
+ this._options = configuration_base_1.default._fromObj(opts);
49
+ await this._normalizeOptionsAfterLoad();
50
+ }
51
+ this.mergeOptions(options);
52
+ }
53
+ prepare() {
54
+ this._prepareFlags();
55
+ this._setDefaultValues();
56
+ this._prepareCompilerOptions();
57
+ }
58
+ notifyAboutOverriddenOptions() {
59
+ if (!this._overriddenOptions.length)
60
+ return;
61
+ const optionsStr = string_1.getConcatenatedValuesString(this._overriddenOptions);
62
+ const optionsSuffix = string_1.getPluralSuffix(this._overriddenOptions);
63
+ configuration_base_1.default._showConsoleWarning(render_template_1.default(warning_message_1.default.configOptionsWereOverridden, optionsStr, optionsSuffix));
64
+ this._overriddenOptions = [];
65
+ }
66
+ notifyAboutDeprecatedOptions(warningLog) {
67
+ const deprecatedOptions = this.getOptions((name, option) => name in deprecated_1.DEPRECATED && option.value !== void 0);
68
+ for (const optionName in deprecatedOptions)
69
+ warningLog.addWarning(deprecated_1.getDeprecationMessage(deprecated_1.DEPRECATED[optionName]));
70
+ }
71
+ get startOptions() {
72
+ const result = {
73
+ hostname: this.getOption(option_names_1.default.hostname),
74
+ port1: this.getOption(option_names_1.default.port1),
75
+ port2: this.getOption(option_names_1.default.port2),
76
+ options: {
77
+ ssl: this.getOption(option_names_1.default.ssl),
78
+ developmentMode: this.getOption(option_names_1.default.developmentMode),
79
+ retryTestPages: this.getOption(option_names_1.default.retryTestPages),
80
+ cache: this.getOption(option_names_1.default.cache)
81
+ }
82
+ };
83
+ return result;
84
+ }
85
+ _prepareFlag(name) {
86
+ const option = this._ensureOption(name, void 0, option_source_1.default.Configuration);
87
+ option.value = !!option.value;
88
+ }
89
+ _prepareFlags() {
90
+ OPTION_FLAG_NAMES.forEach(name => this._prepareFlag(name));
91
+ }
92
+ _prepareInitFlags() {
93
+ OPTION_INIT_FLAG_NAMES.forEach(name => this._prepareFlag(name));
94
+ }
95
+ async _normalizeOptionsAfterLoad() {
96
+ await this._prepareSslOptions();
97
+ this._prepareInitFlags();
98
+ this._prepareFilterFn();
99
+ this._ensureArrayOption(option_names_1.default.src);
100
+ this._ensureArrayOption(option_names_1.default.browsers);
101
+ this._ensureArrayOption(option_names_1.default.clientScripts);
102
+ this._prepareReporters();
103
+ }
104
+ _prepareFilterFn() {
105
+ const filterOption = this._ensureOption(option_names_1.default.filter, null, option_source_1.default.Configuration);
106
+ if (!filterOption.value)
107
+ return;
108
+ const filterOptionValue = filterOption.value;
109
+ if (filterOptionValue.testGrep)
110
+ filterOptionValue.testGrep = get_options_1.getGrepOptions(option_names_1.default.filterTestGrep, filterOptionValue.testGrep);
111
+ if (filterOptionValue.fixtureGrep)
112
+ filterOptionValue.fixtureGrep = get_options_1.getGrepOptions(option_names_1.default.filterFixtureGrep, filterOptionValue.fixtureGrep);
113
+ filterOption.value = get_filter_fn_1.default(filterOption.value);
114
+ }
115
+ _ensureScreenshotPath() {
116
+ const path = resolve_path_relatively_cwd_1.default(DEFAULT_SCREENSHOTS_DIRECTORY);
117
+ const screenshots = this._ensureOption(option_names_1.default.screenshots, {}, option_source_1.default.Configuration).value;
118
+ if (!screenshots.path)
119
+ screenshots.path = path;
120
+ }
121
+ _prepareReporters() {
122
+ const reporterOption = this._options[option_names_1.default.reporter];
123
+ if (!reporterOption)
124
+ return;
125
+ const optionValue = lodash_1.castArray(reporterOption.value);
126
+ reporterOption.value = prepare_reporters_1.default(optionValue);
127
+ }
128
+ async _prepareSslOptions() {
129
+ const sslOptions = this._options[option_names_1.default.ssl];
130
+ if (!sslOptions)
131
+ return;
132
+ sslOptions.value = await get_options_1.getSSLOptions(sslOptions.value);
133
+ }
134
+ _setDefaultValues() {
135
+ this._ensureOptionWithValue(option_names_1.default.selectorTimeout, default_values_1.DEFAULT_TIMEOUT.selector, option_source_1.default.Configuration);
136
+ this._ensureOptionWithValue(option_names_1.default.assertionTimeout, default_values_1.DEFAULT_TIMEOUT.assertion, option_source_1.default.Configuration);
137
+ this._ensureOptionWithValue(option_names_1.default.pageLoadTimeout, default_values_1.DEFAULT_TIMEOUT.pageLoad, option_source_1.default.Configuration);
138
+ this._ensureOptionWithValue(option_names_1.default.speed, default_values_1.DEFAULT_SPEED_VALUE, option_source_1.default.Configuration);
139
+ this._ensureOptionWithValue(option_names_1.default.appInitDelay, default_values_1.DEFAULT_APP_INIT_DELAY, option_source_1.default.Configuration);
140
+ this._ensureOptionWithValue(option_names_1.default.concurrency, default_values_1.DEFAULT_CONCURRENCY_VALUE, option_source_1.default.Configuration);
141
+ this._ensureOptionWithValue(option_names_1.default.src, default_values_1.DEFAULT_SOURCE_DIRECTORIES, option_source_1.default.Configuration);
142
+ this._ensureOptionWithValue(option_names_1.default.developmentMode, default_values_1.DEFAULT_DEVELOPMENT_MODE, option_source_1.default.Configuration);
143
+ this._ensureOptionWithValue(option_names_1.default.retryTestPages, default_values_1.DEFAULT_RETRY_TEST_PAGES, option_source_1.default.Configuration);
144
+ this._ensureScreenshotPath();
145
+ }
146
+ _prepareCompilerOptions() {
147
+ const compilerOptions = this._ensureOption(option_names_1.default.compilerOptions, default_values_1.getDefaultCompilerOptions(), option_source_1.default.Configuration);
148
+ compilerOptions.value = compilerOptions.value || default_values_1.getDefaultCompilerOptions();
149
+ const tsConfigPath = this.getOption(option_names_1.default.tsConfigPath);
150
+ if (tsConfigPath) {
151
+ const compilerOptionValue = compilerOptions.value;
152
+ let typeScriptCompilerOptions = compilerOptionValue[customizable_compilers_1.default.typescript];
153
+ typeScriptCompilerOptions = Object.assign({
154
+ configPath: tsConfigPath
155
+ }, typeScriptCompilerOptions);
156
+ compilerOptions.value[customizable_compilers_1.default.typescript] = typeScriptCompilerOptions;
157
+ }
158
+ }
159
+ static get FILENAME() {
160
+ return CONFIGURATION_FILENAME;
161
+ }
162
+ }
163
+ exports.default = TestCafeConfiguration;
164
164
  module.exports = exports.default;
165
165
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGNhZmUtY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWd1cmF0aW9uL3Rlc3RjYWZlLWNvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4RUFBaUQ7QUFDakQsbUNBQW1DO0FBQ25DLHNEQUFxRTtBQUNyRSxrRUFBMEM7QUFDMUMsMkVBQWlEO0FBQ2pELG1GQUEwRDtBQUMxRCw0Q0FBK0U7QUFDL0UsK0VBQXNEO0FBQ3RELHVGQUFnRTtBQUNoRSx1R0FBNEU7QUFFNUUscURBUzBCO0FBRTFCLG9FQUEyQztBQVEzQyxzRkFBNkQ7QUFDN0QsNERBQWdGO0FBR2hGLE1BQU0sc0JBQXNCLEdBQUcsa0JBQWtCLENBQUM7QUFFbEQsTUFBTSw2QkFBNkIsR0FBRyxhQUFhLENBQUM7QUFFcEQsTUFBTSxpQkFBaUIsR0FBRztJQUN0QixzQkFBWSxDQUFDLFlBQVk7SUFDekIsc0JBQVksQ0FBQyxTQUFTO0lBQ3RCLHNCQUFZLENBQUMsV0FBVztJQUN4QixzQkFBWSxDQUFDLGtCQUFrQjtJQUMvQixzQkFBWSxDQUFDLGVBQWU7SUFDNUIsc0JBQVksQ0FBQyxzQkFBc0I7SUFDbkMsc0JBQVksQ0FBQyxrQkFBa0I7SUFDL0Isc0JBQVksQ0FBQyxrQkFBa0I7SUFDL0Isc0JBQVksQ0FBQyxrQkFBa0I7SUFDL0Isc0JBQVksQ0FBQyxzQkFBc0I7Q0FDdEMsQ0FBQztBQUVGLE1BQU0sc0JBQXNCLEdBQUc7SUFDM0Isc0JBQVksQ0FBQyxlQUFlO0lBQzVCLHNCQUFZLENBQUMsY0FBYztJQUMzQixzQkFBWSxDQUFDLEtBQUs7Q0FDckIsQ0FBQztBQWdCRixNQUFxQixxQkFBc0IsU0FBUSw0QkFBYTtJQUM1RCxZQUFvQixVQUFVLEdBQUcsc0JBQXNCO1FBQ25ELEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBRSxPQUFn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QVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFL0QsSUFBSSxZQUFZLEVBQUU7WUFDZCxNQUFNLG1CQUFtQixHQUFPLGVBQWUsQ0FBQyxLQUF3QixDQUFDO1lBQ3pFLElBQUkseUJBQXlCLEdBQUcsbUJBQW1CLENBQUMsZ0NBQXFCLENBQUMsVUFBVSxDQUE4QixDQUFDO1lBRW5ILHlCQUF5QixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQ3RDLFVBQVUsRUFBRSxZQUFZO2FBQzNCLEVBQUUseUJBQXlCLENBQUMsQ0FBQztZQUU3QixlQUFlLENBQUMsS0FBeUIsQ0FBQyxnQ0FBcUIsQ0FBQyxVQUFVLENBQUMsR0FBRyx5QkFBeUIsQ0FBQztTQUM1RztJQUNMLENBQUM7SUFFTSxNQUFNLEtBQUssUUFBUTtRQUN0QixPQUFPLHNCQUFzQixDQUFDO0lBQ2xDLENBQUM7Q0FDSjtBQXhLRCx3Q0F3S0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29uZmlndXJhdGlvbiBmcm9tICcuL2NvbmZpZ3VyYXRpb24tYmFzZSc7XG5pbXBvcnQgeyBjYXN0QXJyYXkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZ2V0R3JlcE9wdGlvbnMsIGdldFNTTE9wdGlvbnMgfSBmcm9tICcuLi91dGlscy9nZXQtb3B0aW9ucyc7XG5pbXBvcnQgT1BUSU9OX05BTUVTIGZyb20gJy4vb3B0aW9uLW5hbWVzJztcbmltcG9ydCBnZXRGaWx0ZXJGbiBmcm9tICcuLi91dGlscy9nZXQtZmlsdGVyLWZuJztcbmltcG9ydCBwcmVwYXJlUmVwb3J0ZXJzIGZyb20gJy4uL3V0aWxzL3ByZXBhcmUtcmVwb3J0ZXJzJztcbmltcG9ydCB7IGdldENvbmNhdGVuYXRlZFZhbHVlc1N0cmluZywgZ2V0UGx1cmFsU3VmZml4IH0gZnJvbSAnLi4vdXRpbHMvc3RyaW5nJztcbmltcG9ydCByZW5kZXJUZW1wbGF0ZSBmcm9tICcuLi91dGlscy9yZW5kZXItdGVtcGxhdGUnO1xuaW1wb3J0IFdBUk5JTkdfTUVTU0FHRVMgZnJvbSAnLi4vbm90aWZpY2F0aW9ucy93YXJuaW5nLW1lc3NhZ2UnO1xuaW1wb3J0IHJlc29sdmVQYXRoUmVsYXRpdmVseUN3ZCBmcm9tICcuLi91dGlscy9yZXNvbHZlLXBhdGgtcmVsYXRpdmVseS1jd2QnO1xuXG5pbXBvcnQge1xuICAgIERFRkFVTFRfQVBQX0lOSVRfREVMQVksXG4gICAgREVGQVVMVF9DT05DVVJSRU5DWV9WQUxVRSxcbiAgICBERUZBVUxUX1NQRUVEX1ZBTFVFLFxuICAgIERFRkFVTFRfVElNRU9VVCxcbiAgICBERUZBVUxUX1NPVVJDRV9ESVJFQ1RPUklFUyxcbiAgICBERUZBVUxUX0RFVkVMT1BNRU5UX01PREUsXG4gICAgREVGQVVMVF9SRVRSWV9URVNUX1BBR0VTLFxuICAgIGdldERlZmF1bHRDb21waWxlck9wdGlvbnNcbn0gZnJvbSAnLi9kZWZhdWx0LXZhbHVlcyc7XG5cbmltcG9ydCBPcHRpb25Tb3VyY2UgZnJvbSAnLi9vcHRpb24tc291cmNlJztcbmltcG9ydCB7XG4gICAgRGljdGlvbmFyeSxcbiAgICBGaWx0ZXJPcHRpb24sXG4gICAgUmVwb3J0ZXJPcHRpb24sXG4gICAgVHlwZVNjcmlwdENvbXBpbGVyT3B0aW9uc1xufSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgQ3VzdG9taXphYmxlQ29tcGlsZXJzIGZyb20gJy4vY3VzdG9taXphYmxlLWNvbXBpbGVycyc7XG5pbXBvcnQgeyBERVBSRUNBVEVELCBnZXREZXByZWNhdGlvbk1lc3NhZ2UgfSBmcm9tICcuLi9ub3RpZmljYXRpb25zL2RlcHJlY2F0ZWQnO1xuaW1wb3J0IFdhcm5pbmdMb2cgZnJvbSAnLi4vbm90aWZpY2F0aW9ucy93YXJuaW5nLWxvZyc7XG5cbmNvbnN0IENPTkZJR1VSQVRJT05fRklMRU5BTUUgPSAnLnRlc3RjYWZlcmMuanNvbic7XG5cbmNvbnN0IERFRkFVTFRfU0NSRUVOU0hPVFNfRElSRUNUT1JZID0gJ3NjcmVlbnNob3RzJztcblxuY29uc3QgT1BUSU9OX0ZMQUdfTkFNRVMgPSBbXG4gICAgT1BUSU9OX05BTUVTLnNraXBKc0Vycm9ycyxcbiAgICBPUFRJT05fTkFNRVMuZGVidWdNb2RlLFxuICAgIE9QVElPTl9OQU1FUy5kZWJ1Z09uRmFpbCxcbiAgICBPUFRJT05fTkFNRVMuc2tpcFVuY2F1Z2h0RXJyb3JzLFxuICAgIE9QVElPTl9OQU1FUy5zdG9wT25GaXJzdEZhaWwsXG4gICAgT1BUSU9OX05BTUVTLnRha2VTY3JlZW5zaG90c09uRmFpbHMsXG4gICAgT1BUSU9OX05BTUVTLmRpc2FibGVQYWdlQ2FjaGluZyxcbiAgICBPUFRJT05fTkFNRVMuZGlzYWJsZVBhZ2VSZWxvYWRzLFxuICAgIE9QVElPTl9OQU1FUy5kaXNhYmxlU2NyZWVuc2hvdHMsXG4gICAgT1BUSU9OX05BTUVTLmRpc2FibGVNdWx0aXBsZVdpbmRvd3Ncbl07XG5cbmNvbnN0IE9QVElPTl9JTklUX0ZMQUdfTkFNRVMgPSBbXG4gICAgT1BUSU9OX05BTUVTLmRldmVsb3BtZW50TW9kZSxcbiAgICBPUFRJT05fTkFNRVMucmV0cnlUZXN0UGFnZXMsXG4gICAgT1BUSU9OX05BTUVTLmNhY2hlXG5dO1xuXG5pbnRlcmZhY2UgVGVzdENhZmVBZGRpdGlvbmFsU3RhcnRPcHRpb25zIHtcbiAgICByZXRyeVRlc3RQYWdlczogYm9vbGVhbjtcbiAgICBzc2w6IHN0cmluZztcbiAgICBkZXZlbG9wbWVudE1vZGU6IGJvb2xlYW47XG4gICAgY2FjaGU6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBUZXN0Q2FmZVN0YXJ0T3B0aW9ucyB7XG4gICAgaG9zdG5hbWU/OiBzdHJpbmc7XG4gICAgcG9ydDE/OiBudW1iZXI7XG4gICAgcG9ydDI/OiBudW1iZXI7XG4gICAgb3B0aW9uczogVGVzdENhZmVBZGRpdGlvbmFsU3RhcnRPcHRpb25zO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZXN0Q2FmZUNvbmZpZ3VyYXRpb24gZXh0ZW5kcyBDb25maWd1cmF0aW9uIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGNvbmZpZ0ZpbGUgPSBDT05GSUdVUkFUSU9OX0ZJTEVOQU1FKSB7XG4gICAgICAgIHN1cGVyKGNvbmZpZ0ZpbGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0IChvcHRpb25zPzogb2JqZWN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgICAgIGF3YWl0IHN1cGVyLmluaXQoKTtcblxuICAgICAgICBjb25zdCBvcHRzID0gYXdhaXQgdGhpcy5fbG9hZCgpO1xuXG4gICAgICAgIGlmIChvcHRzKSB7XG4gICAgICAgICAgICB0aGlzLl9vcHRpb25zID0gQ29uZmlndXJhdGlvbi5fZnJvbU9iaihvcHRzKTtcblxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fbm9ybWFsaXplT3B0aW9uc0FmdGVyTG9hZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tZXJnZU9wdGlvbnMob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIHByZXBhcmUgKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wcmVwYXJlRmxhZ3MoKTtcbiAgICAgICAgdGhpcy5fc2V0RGVmYXVsdFZhbHVlcygpO1xuICAgICAgICB0aGlzLl9wcmVwYXJlQ29tcGlsZXJPcHRpb25zKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5vdGlmeUFib3V0T3ZlcnJpZGRlbk9wdGlvbnMgKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX292ZXJyaWRkZW5PcHRpb25zLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCBvcHRpb25zU3RyICAgID0gZ2V0Q29uY2F0ZW5hdGVkVmFsdWVzU3RyaW5nKHRoaXMuX292ZXJyaWRkZW5PcHRpb25zKTtcbiAgICAgICAgY29uc3Qgb3B0aW9uc1N1ZmZpeCA9IGdldFBsdXJhbFN1ZmZpeCh0aGlzLl9vdmVycmlkZGVuT3B0aW9ucyk7XG5cbiAgICAgICAgQ29uZmlndXJhdGlvbi5fc2hvd0NvbnNvbGVXYXJuaW5nKHJlbmRlclRlbXBsYXRlKFdBUk5JTkdfTUVTU0FHRVMuY29uZmlnT3B0aW9uc1dlcmVPdmVycmlkZGVuLCBvcHRpb25zU3RyLCBvcHRpb25zU3VmZml4KSk7XG5cbiAgICAgICAgdGhpcy5fb3ZlcnJpZGRlbk9wdGlvbnMgPSBbXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbm90aWZ5QWJvdXREZXByZWNhdGVkT3B0aW9ucyAod2FybmluZ0xvZzogV2FybmluZ0xvZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBkZXByZWNhdGVkT3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucygobmFtZSwgb3B0aW9uKSA9PiBuYW1lIGluIERFUFJFQ0FURUQgJiYgb3B0aW9uLnZhbHVlICE9PSB2b2lkIDApO1xuXG4gICAgICAgIGZvciAoY29uc3Qgb3B0aW9uTmFtZSBpbiBkZXByZWNhdGVkT3B0aW9ucylcbiAgICAgICAgICAgIHdhcm5pbmdMb2cuYWRkV2FybmluZyhnZXREZXByZWNhdGlvbk1lc3NhZ2UoREVQUkVDQVRFRFtvcHRpb25OYW1lXSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc3RhcnRPcHRpb25zICgpOiBUZXN0Q2FmZVN0YXJ0T3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogVGVzdENhZmVTdGFydE9wdGlvbnMgPSB7XG4gICAgICAgICAgICBob3N0bmFtZTogdGhpcy5nZXRPcHRpb24oT1BUSU9OX05BTUVTLmhvc3RuYW1lKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICBwb3J0MTogICAgdGhpcy5nZXRPcHRpb24oT1BUSU9OX05BTUVTLnBvcnQxKSBhcyBudW1iZXIsXG4gICAgICAgICAgICBwb3J0MjogICAgdGhpcy5nZXRPcHRpb24oT1BUSU9OX05BTUVTLnBvcnQyKSBhcyBudW1iZXIsXG5cbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBzc2w6ICAgICAgICAgICAgIHRoaXMuZ2V0T3B0aW9uKE9QVElPTl9OQU1FUy5zc2wpIGFzIHN0cmluZyxcbiAgICAgICAgICAgICAgICBkZXZlbG9wbWVudE1vZGU6IHRoaXMuZ2V0T3B0aW9uKE9QVElPTl9OQU1FUy5kZXZlbG9wbWVudE1vZGUpIGFzIGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgcmV0cnlUZXN0UGFnZXM6ICB0aGlzLmdldE9wdGlvbihPUFRJT05fTkFNRVMucmV0cnlUZXN0UGFnZXMpIGFzIGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgY2FjaGU6ICAgICAgICAgICB0aGlzLmdldE9wdGlvbihPUFRJT05fTkFNRVMuY2FjaGUpIGFzIGJvb2xlYW5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ByZXBhcmVGbGFnIChuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5fZW5zdXJlT3B0aW9uKG5hbWUsIHZvaWQgMCwgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pO1xuXG4gICAgICAgIG9wdGlvbi52YWx1ZSA9ICEhb3B0aW9uLnZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ByZXBhcmVGbGFncyAoKTogdm9pZCB7XG4gICAgICAgIE9QVElPTl9GTEFHX05BTUVTLmZvckVhY2gobmFtZSA9PiB0aGlzLl9wcmVwYXJlRmxhZyhuYW1lKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcHJlcGFyZUluaXRGbGFncyAoKTogdm9pZCB7XG4gICAgICAgIE9QVElPTl9JTklUX0ZMQUdfTkFNRVMuZm9yRWFjaChuYW1lID0+IHRoaXMuX3ByZXBhcmVGbGFnKG5hbWUpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9ub3JtYWxpemVPcHRpb25zQWZ0ZXJMb2FkICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5fcHJlcGFyZVNzbE9wdGlvbnMoKTtcbiAgICAgICAgdGhpcy5fcHJlcGFyZUluaXRGbGFncygpO1xuICAgICAgICB0aGlzLl9wcmVwYXJlRmlsdGVyRm4oKTtcbiAgICAgICAgdGhpcy5fZW5zdXJlQXJyYXlPcHRpb24oT1BUSU9OX05BTUVTLnNyYyk7XG4gICAgICAgIHRoaXMuX2Vuc3VyZUFycmF5T3B0aW9uKE9QVElPTl9OQU1FUy5icm93c2Vycyk7XG4gICAgICAgIHRoaXMuX2Vuc3VyZUFycmF5T3B0aW9uKE9QVElPTl9OQU1FUy5jbGllbnRTY3JpcHRzKTtcbiAgICAgICAgdGhpcy5fcHJlcGFyZVJlcG9ydGVycygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ByZXBhcmVGaWx0ZXJGbiAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpbHRlck9wdGlvbiA9IHRoaXMuX2Vuc3VyZU9wdGlvbihPUFRJT05fTkFNRVMuZmlsdGVyLCBudWxsLCBPcHRpb25Tb3VyY2UuQ29uZmlndXJhdGlvbik7XG5cbiAgICAgICAgaWYgKCFmaWx0ZXJPcHRpb24udmFsdWUpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgZmlsdGVyT3B0aW9uVmFsdWUgPSBmaWx0ZXJPcHRpb24udmFsdWUgYXMgRmlsdGVyT3B0aW9uO1xuXG4gICAgICAgIGlmIChmaWx0ZXJPcHRpb25WYWx1ZS50ZXN0R3JlcClcbiAgICAgICAgICAgIGZpbHRlck9wdGlvblZhbHVlLnRlc3RHcmVwID0gZ2V0R3JlcE9wdGlvbnMoT1BUSU9OX05BTUVTLmZpbHRlclRlc3RHcmVwLCBmaWx0ZXJPcHRpb25WYWx1ZS50ZXN0R3JlcCBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGlmIChmaWx0ZXJPcHRpb25WYWx1ZS5maXh0dXJlR3JlcClcbiAgICAgICAgICAgIGZpbHRlck9wdGlvblZhbHVlLmZpeHR1cmVHcmVwID0gZ2V0R3JlcE9wdGlvbnMoT1BUSU9OX05BTUVTLmZpbHRlckZpeHR1cmVHcmVwLCBmaWx0ZXJPcHRpb25WYWx1ZS5maXh0dXJlR3JlcCBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGZpbHRlck9wdGlvbi52YWx1ZSA9IGdldEZpbHRlckZuKGZpbHRlck9wdGlvbi52YWx1ZSkgYXMgRnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZW5zdXJlU2NyZWVuc2hvdFBhdGggKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXRoICAgICAgICA9IHJlc29sdmVQYXRoUmVsYXRpdmVseUN3ZChERUZBVUxUX1NDUkVFTlNIT1RTX0RJUkVDVE9SWSk7XG4gICAgICAgIGNvbnN0IHNjcmVlbnNob3RzID0gdGhpcy5fZW5zdXJlT3B0aW9uKE9QVElPTl9OQU1FUy5zY3JlZW5zaG90cywge30sIE9wdGlvblNvdXJjZS5Db25maWd1cmF0aW9uKS52YWx1ZSBhcyBEaWN0aW9uYXJ5PHN0cmluZz47XG5cbiAgICAgICAgaWYgKCFzY3JlZW5zaG90cy5wYXRoKVxuICAgICAgICAgICAgc2NyZWVuc2hvdHMucGF0aCA9IHBhdGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcHJlcGFyZVJlcG9ydGVycyAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlcG9ydGVyT3B0aW9uID0gdGhpcy5fb3B0aW9uc1tPUFRJT05fTkFNRVMucmVwb3J0ZXJdO1xuXG4gICAgICAgIGlmICghcmVwb3J0ZXJPcHRpb24pXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgb3B0aW9uVmFsdWUgPSBjYXN0QXJyYXkocmVwb3J0ZXJPcHRpb24udmFsdWUgYXMgUmVwb3J0ZXJPcHRpb24pO1xuXG4gICAgICAgIHJlcG9ydGVyT3B0aW9uLnZhbHVlID0gcHJlcGFyZVJlcG9ydGVycyhvcHRpb25WYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcHJlcGFyZVNzbE9wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBzc2xPcHRpb25zID0gdGhpcy5fb3B0aW9uc1tPUFRJT05fTkFNRVMuc3NsXTtcblxuICAgICAgICBpZiAoIXNzbE9wdGlvbnMpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgc3NsT3B0aW9ucy52YWx1ZSA9IGF3YWl0IGdldFNTTE9wdGlvbnMoc3NsT3B0aW9ucy52YWx1ZSBhcyBzdHJpbmcpIGFzIERpY3Rpb25hcnk8c3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlcj47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0RGVmYXVsdFZhbHVlcyAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Vuc3VyZU9wdGlvbldpdGhWYWx1ZShPUFRJT05fTkFNRVMuc2VsZWN0b3JUaW1lb3V0LCBERUZBVUxUX1RJTUVPVVQuc2VsZWN0b3IsIE9wdGlvblNvdXJjZS5Db25maWd1cmF0aW9uKTtcbiAgICAgICAgdGhpcy5fZW5zdXJlT3B0aW9uV2l0aFZhbHVlKE9QVElPTl9OQU1FUy5hc3NlcnRpb25UaW1lb3V0LCBERUZBVUxUX1RJTUVPVVQuYXNzZXJ0aW9uLCBPcHRpb25Tb3VyY2UuQ29uZmlndXJhdGlvbik7XG4gICAgICAgIHRoaXMuX2Vuc3VyZU9wdGlvbldpdGhWYWx1ZShPUFRJT05fTkFNRVMucGFnZUxvYWRUaW1lb3V0LCBERUZBVUxUX1RJTUVPVVQucGFnZUxvYWQsIE9wdGlvblNvdXJjZS5Db25maWd1cmF0aW9uKTtcbiAgICAgICAgdGhpcy5fZW5zdXJlT3B0aW9uV2l0aFZhbHVlKE9QVElPTl9OQU1FUy5zcGVlZCwgREVGQVVMVF9TUEVFRF9WQUxVRSwgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pO1xuICAgICAgICB0aGlzLl9lbnN1cmVPcHRpb25XaXRoVmFsdWUoT1BUSU9OX05BTUVTLmFwcEluaXREZWxheSwgREVGQVVMVF9BUFBfSU5JVF9ERUxBWSwgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pO1xuICAgICAgICB0aGlzLl9lbnN1cmVPcHRpb25XaXRoVmFsdWUoT1BUSU9OX05BTUVTLmNvbmN1cnJlbmN5LCBERUZBVUxUX0NPTkNVUlJFTkNZX1ZBTFVFLCBPcHRpb25Tb3VyY2UuQ29uZmlndXJhdGlvbik7XG4gICAgICAgIHRoaXMuX2Vuc3VyZU9wdGlvbldpdGhWYWx1ZShPUFRJT05fTkFNRVMuc3JjLCBERUZBVUxUX1NPVVJDRV9ESVJFQ1RPUklFUywgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pO1xuICAgICAgICB0aGlzLl9lbnN1cmVPcHRpb25XaXRoVmFsdWUoT1BUSU9OX05BTUVTLmRldmVsb3BtZW50TW9kZSwgREVGQVVMVF9ERVZFTE9QTUVOVF9NT0RFLCBPcHRpb25Tb3VyY2UuQ29uZmlndXJhdGlvbik7XG4gICAgICAgIHRoaXMuX2Vuc3VyZU9wdGlvbldpdGhWYWx1ZShPUFRJT05fTkFNRVMucmV0cnlUZXN0UGFnZXMsIERFRkFVTFRfUkVUUllfVEVTVF9QQUdFUywgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pO1xuXG4gICAgICAgIHRoaXMuX2Vuc3VyZVNjcmVlbnNob3RQYXRoKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcHJlcGFyZUNvbXBpbGVyT3B0aW9ucyAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbXBpbGVyT3B0aW9ucyA9IHRoaXMuX2Vuc3VyZU9wdGlvbihPUFRJT05fTkFNRVMuY29tcGlsZXJPcHRpb25zLCBnZXREZWZhdWx0Q29tcGlsZXJPcHRpb25zKCksIE9wdGlvblNvdXJjZS5Db25maWd1cmF0aW9uKTtcblxuICAgICAgICBjb21waWxlck9wdGlvbnMudmFsdWUgPSBjb21waWxlck9wdGlvbnMudmFsdWUgfHwgZ2V0RGVmYXVsdENvbXBpbGVyT3B0aW9ucygpO1xuXG4gICAgICAgIGNvbnN0IHRzQ29uZmlnUGF0aCA9IHRoaXMuZ2V0T3B0aW9uKE9QVElPTl9OQU1FUy50c0NvbmZpZ1BhdGgpO1xuXG4gICAgICAgIGlmICh0c0NvbmZpZ1BhdGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBpbGVyT3B0aW9uVmFsdWUgICAgID0gY29tcGlsZXJPcHRpb25zLnZhbHVlIGFzIENvbXBpbGVyT3B0aW9ucztcbiAgICAgICAgICAgIGxldCB0eXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zID0gY29tcGlsZXJPcHRpb25WYWx1ZVtDdXN0b21pemFibGVDb21waWxlcnMudHlwZXNjcmlwdF0gYXMgVHlwZVNjcmlwdENvbXBpbGVyT3B0aW9ucztcblxuICAgICAgICAgICAgdHlwZVNjcmlwdENvbXBpbGVyT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgICAgICAgIGNvbmZpZ1BhdGg6IHRzQ29uZmlnUGF0aFxuICAgICAgICAgICAgfSwgdHlwZVNjcmlwdENvbXBpbGVyT3B0aW9ucyk7XG5cbiAgICAgICAgICAgIChjb21waWxlck9wdGlvbnMudmFsdWUgYXMgQ29tcGlsZXJPcHRpb25zKVtDdXN0b21pemFibGVDb21waWxlcnMudHlwZXNjcmlwdF0gPSB0eXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXQgRklMRU5BTUUgKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBDT05GSUdVUkFUSU9OX0ZJTEVOQU1FO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
- "use strict";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlndXJhdGlvbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsidHlwZSBUZW1wbGF0ZUFyZ3VtZW50cyA9IGFueVtdO1xuXG5pbnRlcmZhY2UgU2NyZWVuc2hvdE9wdGlvblZhbHVlIHtcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgdGFrZU9uRmFpbHM/OiBib29sZWFuO1xuICAgIHBhdGhQYXR0ZXJuPzogc3RyaW5nO1xuICAgIGZ1bGxQYWdlPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFF1YXJhbnRpbmVPcHRpb25WYWx1ZSB7XG4gICAgcmV0cnlDb3VudD86IG51bWJlcjtcbiAgICBwYXNzQ291bnQ/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBDb21waWxlck9wdGlvbnMge1xuICAgIFtrZXk6IHN0cmluZ106IG9iamVjdDtcbn1cblxudHlwZSBPcHRpb25WYWx1ZSA9IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmcgfCBib29sZWFuIHwgbnVtYmVyIHwgc3RyaW5nW10gfCBGdW5jdGlvbiB8IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBTY3JlZW5zaG90T3B0aW9uVmFsdWUgfCBRdWFyYW50aW5lT3B0aW9uVmFsdWUgfCBDb21waWxlck9wdGlvbnM7XG4iXX0=
1
+ "use strict";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlndXJhdGlvbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsidHlwZSBUZW1wbGF0ZUFyZ3VtZW50cyA9IGFueVtdO1xuXG5pbnRlcmZhY2UgU2NyZWVuc2hvdE9wdGlvblZhbHVlIHtcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgdGFrZU9uRmFpbHM/OiBib29sZWFuO1xuICAgIHBhdGhQYXR0ZXJuPzogc3RyaW5nO1xuICAgIGZ1bGxQYWdlPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFF1YXJhbnRpbmVPcHRpb25WYWx1ZSB7XG4gICAgcmV0cnlDb3VudD86IG51bWJlcjtcbiAgICBwYXNzQ291bnQ/OiBudW1iZXI7XG59XG5cbnR5cGUgT3B0aW9uVmFsdWUgPSB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlciB8IHN0cmluZ1tdIHwgRnVuY3Rpb24gfCB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgU2NyZWVuc2hvdE9wdGlvblZhbHVlIHwgUXVhcmFudGluZU9wdGlvblZhbHVlIHwgQ29tcGlsZXJPcHRpb25zO1xuIl19
@@ -1,64 +1,64 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const configuration_base_1 = __importDefault(require("./configuration-base"));
7
- const default_values_1 = require("./default-values");
8
- const lodash_1 = require("lodash");
9
- const warning_message_1 = __importDefault(require("../notifications/warning-message"));
10
- const render_template_1 = __importDefault(require("../utils/render-template"));
11
- const runtime_1 = require("../errors/runtime");
12
- const types_1 = require("../errors/types");
13
- const option_source_1 = __importDefault(require("./option-source"));
14
- const lazyRequire = require('import-lazy')(require);
15
- const typescript = lazyRequire('typescript');
16
- class TypescriptConfiguration extends configuration_base_1.default {
17
- constructor(tsConfigPath) {
18
- super(tsConfigPath);
19
- this.basePath = process.cwd();
20
- this._ensureDefaultOptions();
21
- }
22
- _ensureDefaultOptions() {
23
- for (const option in default_values_1.DEFAULT_TYPESCRIPT_COMPILER_OPTIONS)
24
- this._ensureOptionWithValue(option, default_values_1.DEFAULT_TYPESCRIPT_COMPILER_OPTIONS[option], option_source_1.default.Configuration);
25
- }
26
- async init(customCompilerOptions) {
27
- const opts = await this._load();
28
- if (opts && opts.compilerOptions) {
29
- const parsedOpts = this._parseOptions(opts);
30
- this.mergeOptions(parsedOpts);
31
- }
32
- if (customCompilerOptions)
33
- this.mergeOptions(customCompilerOptions);
34
- this._notifyThatOptionsCannotBeOverridden();
35
- }
36
- async _isConfigurationFileExists() {
37
- const fileExists = await super._isConfigurationFileExists();
38
- if (!fileExists)
39
- throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.cannotFindTypescriptConfigurationFile, this.filePath);
40
- return true;
41
- }
42
- _parseOptions(opts) {
43
- const parsed = typescript.parseJsonConfigFileContent(opts, typescript.sys, this.basePath, void 0, this._filePath);
44
- return lodash_1.omit(parsed.options, default_values_1.TYPESCRIPT_BLACKLISTED_OPTIONS);
45
- }
46
- _notifyThatOptionsCannotBeOverridden() {
47
- const warnedOptions = lodash_1.intersection(this._overriddenOptions, default_values_1.TYPESCRIPT_COMPILER_NON_OVERRIDABLE_OPTIONS);
48
- if (!warnedOptions.length)
49
- return;
50
- const warningMessage = warnedOptions
51
- .map(option => render_template_1.default(warning_message_1.default.cannotOverrideTypeScriptConfigOptions, option))
52
- .join('\n');
53
- configuration_base_1.default._showConsoleWarning(warningMessage);
54
- }
55
- _setOptionValue(option, value) {
56
- if (!default_values_1.TYPESCRIPT_COMPILER_NON_OVERRIDABLE_OPTIONS.includes(option.name))
57
- super._setOptionValue(option, value);
58
- else
59
- this._addOverriddenOptionIfNecessary(option.value, value, option.source, option.name);
60
- }
61
- }
62
- exports.default = TypescriptConfiguration;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const configuration_base_1 = __importDefault(require("./configuration-base"));
7
+ const default_values_1 = require("./default-values");
8
+ const lodash_1 = require("lodash");
9
+ const warning_message_1 = __importDefault(require("../notifications/warning-message"));
10
+ const render_template_1 = __importDefault(require("../utils/render-template"));
11
+ const runtime_1 = require("../errors/runtime");
12
+ const types_1 = require("../errors/types");
13
+ const option_source_1 = __importDefault(require("./option-source"));
14
+ const lazyRequire = require('import-lazy')(require);
15
+ const typescript = lazyRequire('typescript');
16
+ class TypescriptConfiguration extends configuration_base_1.default {
17
+ constructor(tsConfigPath) {
18
+ super(tsConfigPath);
19
+ this.basePath = process.cwd();
20
+ this._ensureDefaultOptions();
21
+ }
22
+ _ensureDefaultOptions() {
23
+ for (const option in default_values_1.DEFAULT_TYPESCRIPT_COMPILER_OPTIONS)
24
+ this._ensureOptionWithValue(option, default_values_1.DEFAULT_TYPESCRIPT_COMPILER_OPTIONS[option], option_source_1.default.Configuration);
25
+ }
26
+ async init(customCompilerOptions) {
27
+ const opts = await this._load();
28
+ if (opts && opts.compilerOptions) {
29
+ const parsedOpts = this._parseOptions(opts);
30
+ this.mergeOptions(parsedOpts);
31
+ }
32
+ if (customCompilerOptions)
33
+ this.mergeOptions(customCompilerOptions);
34
+ this._notifyThatOptionsCannotBeOverridden();
35
+ }
36
+ async _isConfigurationFileExists() {
37
+ const fileExists = await super._isConfigurationFileExists();
38
+ if (!fileExists)
39
+ throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.cannotFindTypescriptConfigurationFile, this.filePath);
40
+ return true;
41
+ }
42
+ _parseOptions(opts) {
43
+ const parsed = typescript.parseJsonConfigFileContent(opts, typescript.sys, this.basePath, void 0, this._filePath);
44
+ return lodash_1.omit(parsed.options, default_values_1.TYPESCRIPT_BLACKLISTED_OPTIONS);
45
+ }
46
+ _notifyThatOptionsCannotBeOverridden() {
47
+ const warnedOptions = lodash_1.intersection(this._overriddenOptions, default_values_1.TYPESCRIPT_COMPILER_NON_OVERRIDABLE_OPTIONS);
48
+ if (!warnedOptions.length)
49
+ return;
50
+ const warningMessage = warnedOptions
51
+ .map(option => render_template_1.default(warning_message_1.default.cannotOverrideTypeScriptConfigOptions, option))
52
+ .join('\n');
53
+ configuration_base_1.default._showConsoleWarning(warningMessage);
54
+ }
55
+ _setOptionValue(option, value) {
56
+ if (!default_values_1.TYPESCRIPT_COMPILER_NON_OVERRIDABLE_OPTIONS.includes(option.name))
57
+ super._setOptionValue(option, value);
58
+ else
59
+ this._addOverriddenOptionIfNecessary(option.value, value, option.source, option.name);
60
+ }
61
+ }
62
+ exports.default = TypescriptConfiguration;
63
63
  module.exports = exports.default;
64
64
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC1jb25maWd1cmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZ3VyYXRpb24vdHlwZXNjcmlwdC1jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOEVBQWlEO0FBQ2pELHFEQUkwQjtBQUUxQixtQ0FBNEM7QUFDNUMsdUZBQWdFO0FBQ2hFLCtFQUFzRDtBQUN0RCwrQ0FBaUQ7QUFDakQsMkNBQWlEO0FBRWpELG9FQUEyQztBQUUzQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDcEQsTUFBTSxVQUFVLEdBQUksV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBTTlDLE1BQXFCLHVCQUF3QixTQUFRLDRCQUFhO0lBRzlELFlBQW9CLFlBQTJCO1FBQzNDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVwQixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUU5QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU8scUJBQXFCO1FBQ3pCLEtBQUssTUFBTSxNQUFNLElBQUksb0RBQW1DO1lBQ3BELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsb0RBQW1DLENBQUMsTUFBTSxDQUFDLEVBQUUsdUJBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNySCxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBRSxxQkFBOEI7UUFDN0MsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFvQyxDQUFDO1FBRWxFLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDOUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUU1QyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxxQkFBcUI7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRTdDLElBQUksQ0FBQyxvQ0FBb0MsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFUyxLQUFLLENBQUMsMEJBQTBCO1FBQ3RDLE1BQU0sVUFBVSxHQUFHLE1BQU0sS0FBSyxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFFNUQsSUFBSSxDQUFDLFVBQVU7WUFDWCxNQUFNLElBQUksc0JBQVksQ0FBQyxzQkFBYyxDQUFDLHFDQUFxQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVoRyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sYUFBYSxDQUFFLElBQVk7UUFDOUIsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLDBCQUEwQixDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWxILE9BQU8sYUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsK0NBQThCLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU8sb0NBQW9DO1FBQ3hDLE1BQU0sYUFBYSxHQUFHLHFCQUFZLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLDREQUEyQyxDQUFDLENBQUM7UUFFekcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNO1lBQ3JCLE9BQU87UUFFWCxNQUFNLGNBQWMsR0FBRyxhQUFhO2FBQy9CLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLHlCQUFjLENBQUMseUJBQWdCLENBQUMscUNBQXFDLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDN0YsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhCLDRCQUFhLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVTLGVBQWUsQ0FBRSxNQUFjLEVBQUUsS0FBa0I7UUFDekQsSUFBSSxDQUFDLDREQUEyQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2xFLEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDOztZQUVyQyxJQUFJLENBQUMsK0JBQStCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUYsQ0FBQztDQUNKO0FBakVELDBDQWlFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb25maWd1cmF0aW9uIGZyb20gJy4vY29uZmlndXJhdGlvbi1iYXNlJztcbmltcG9ydCB7XG4gICAgREVGQVVMVF9UWVBFU0NSSVBUX0NPTVBJTEVSX09QVElPTlMsXG4gICAgVFlQRVNDUklQVF9DT01QSUxFUl9OT05fT1ZFUlJJREFCTEVfT1BUSU9OUyxcbiAgICBUWVBFU0NSSVBUX0JMQUNLTElTVEVEX09QVElPTlNcbn0gZnJvbSAnLi9kZWZhdWx0LXZhbHVlcyc7XG5cbmltcG9ydCB7IGludGVyc2VjdGlvbiwgb21pdCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgV0FSTklOR19NRVNTQUdFUyBmcm9tICcuLi9ub3RpZmljYXRpb25zL3dhcm5pbmctbWVzc2FnZSc7XG5pbXBvcnQgcmVuZGVyVGVtcGxhdGUgZnJvbSAnLi4vdXRpbHMvcmVuZGVyLXRlbXBsYXRlJztcbmltcG9ydCB7IEdlbmVyYWxFcnJvciB9IGZyb20gJy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCBPcHRpb24gZnJvbSAnLi9vcHRpb24nO1xuaW1wb3J0IE9wdGlvblNvdXJjZSBmcm9tICcuL29wdGlvbi1zb3VyY2UnO1xuXG5jb25zdCBsYXp5UmVxdWlyZSA9IHJlcXVpcmUoJ2ltcG9ydC1sYXp5JykocmVxdWlyZSk7XG5jb25zdCB0eXBlc2NyaXB0ICA9IGxhenlSZXF1aXJlKCd0eXBlc2NyaXB0Jyk7XG5cbmludGVyZmFjZSBUeXBlc2NyaXB0Q29uZmlndXJhdGlvbk9wdGlvbnMge1xuICAgIGNvbXBpbGVyT3B0aW9ucz86IG9iamVjdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVHlwZXNjcmlwdENvbmZpZ3VyYXRpb24gZXh0ZW5kcyBDb25maWd1cmF0aW9uIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJhc2VQYXRoOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKHRzQ29uZmlnUGF0aDogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICBzdXBlcih0c0NvbmZpZ1BhdGgpO1xuXG4gICAgICAgIHRoaXMuYmFzZVBhdGggPSBwcm9jZXNzLmN3ZCgpO1xuXG4gICAgICAgIHRoaXMuX2Vuc3VyZURlZmF1bHRPcHRpb25zKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZW5zdXJlRGVmYXVsdE9wdGlvbnMgKCk6IHZvaWQge1xuICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbiBpbiBERUZBVUxUX1RZUEVTQ1JJUFRfQ09NUElMRVJfT1BUSU9OUylcbiAgICAgICAgICAgIHRoaXMuX2Vuc3VyZU9wdGlvbldpdGhWYWx1ZShvcHRpb24sIERFRkFVTFRfVFlQRVNDUklQVF9DT01QSUxFUl9PUFRJT05TW29wdGlvbl0sIE9wdGlvblNvdXJjZS5Db25maWd1cmF0aW9uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW5pdCAoY3VzdG9tQ29tcGlsZXJPcHRpb25zPzogb2JqZWN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IG9wdHMgPSBhd2FpdCB0aGlzLl9sb2FkKCkgYXMgVHlwZXNjcmlwdENvbmZpZ3VyYXRpb25PcHRpb25zO1xuXG4gICAgICAgIGlmIChvcHRzICYmIG9wdHMuY29tcGlsZXJPcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRPcHRzID0gdGhpcy5fcGFyc2VPcHRpb25zKG9wdHMpO1xuXG4gICAgICAgICAgICB0aGlzLm1lcmdlT3B0aW9ucyhwYXJzZWRPcHRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjdXN0b21Db21waWxlck9wdGlvbnMpXG4gICAgICAgICAgICB0aGlzLm1lcmdlT3B0aW9ucyhjdXN0b21Db21waWxlck9wdGlvbnMpO1xuXG4gICAgICAgIHRoaXMuX25vdGlmeVRoYXRPcHRpb25zQ2Fubm90QmVPdmVycmlkZGVuKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIF9pc0NvbmZpZ3VyYXRpb25GaWxlRXhpc3RzICgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgZmlsZUV4aXN0cyA9IGF3YWl0IHN1cGVyLl9pc0NvbmZpZ3VyYXRpb25GaWxlRXhpc3RzKCk7XG5cbiAgICAgICAgaWYgKCFmaWxlRXhpc3RzKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEdlbmVyYWxFcnJvcihSVU5USU1FX0VSUk9SUy5jYW5ub3RGaW5kVHlwZXNjcmlwdENvbmZpZ3VyYXRpb25GaWxlLCB0aGlzLmZpbGVQYXRoKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgX3BhcnNlT3B0aW9ucyAob3B0czogb2JqZWN0KTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gdHlwZXNjcmlwdC5wYXJzZUpzb25Db25maWdGaWxlQ29udGVudChvcHRzLCB0eXBlc2NyaXB0LnN5cywgdGhpcy5iYXNlUGF0aCwgdm9pZCAwLCB0aGlzLl9maWxlUGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIG9taXQocGFyc2VkLm9wdGlvbnMsIFRZUEVTQ1JJUFRfQkxBQ0tMSVNURURfT1BUSU9OUyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbm90aWZ5VGhhdE9wdGlvbnNDYW5ub3RCZU92ZXJyaWRkZW4gKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB3YXJuZWRPcHRpb25zID0gaW50ZXJzZWN0aW9uKHRoaXMuX292ZXJyaWRkZW5PcHRpb25zLCBUWVBFU0NSSVBUX0NPTVBJTEVSX05PTl9PVkVSUklEQUJMRV9PUFRJT05TKTtcblxuICAgICAgICBpZiAoIXdhcm5lZE9wdGlvbnMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHdhcm5pbmdNZXNzYWdlID0gd2FybmVkT3B0aW9uc1xuICAgICAgICAgICAgLm1hcChvcHRpb24gPT4gcmVuZGVyVGVtcGxhdGUoV0FSTklOR19NRVNTQUdFUy5jYW5ub3RPdmVycmlkZVR5cGVTY3JpcHRDb25maWdPcHRpb25zLCBvcHRpb24pKVxuICAgICAgICAgICAgLmpvaW4oJ1xcbicpO1xuXG4gICAgICAgIENvbmZpZ3VyYXRpb24uX3Nob3dDb25zb2xlV2FybmluZyh3YXJuaW5nTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9zZXRPcHRpb25WYWx1ZSAob3B0aW9uOiBPcHRpb24sIHZhbHVlOiBPcHRpb25WYWx1ZSk6IHZvaWQge1xuICAgICAgICBpZiAoIVRZUEVTQ1JJUFRfQ09NUElMRVJfTk9OX09WRVJSSURBQkxFX09QVElPTlMuaW5jbHVkZXMob3B0aW9uLm5hbWUpKVxuICAgICAgICAgICAgc3VwZXIuX3NldE9wdGlvblZhbHVlKG9wdGlvbiwgdmFsdWUpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLl9hZGRPdmVycmlkZGVuT3B0aW9uSWZOZWNlc3Nhcnkob3B0aW9uLnZhbHVlLCB2YWx1ZSwgb3B0aW9uLnNvdXJjZSwgb3B0aW9uLm5hbWUpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,9 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const type_assertions_1 = require("../errors/runtime/type-assertions");
4
- function default_1(scripts) {
5
- scripts.forEach((script) => type_assertions_1.assertType([type_assertions_1.is.string, type_assertions_1.is.clientScriptInitializer], 'clientScripts', `Client script`, script));
6
- }
7
- exports.default = default_1;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const type_assertions_1 = require("../errors/runtime/type-assertions");
4
+ function default_1(scripts) {
5
+ scripts.forEach((script) => type_assertions_1.assertType([type_assertions_1.is.string, type_assertions_1.is.clientScriptInitializer], 'clientScripts', `Client script`, script));
6
+ }
7
+ exports.default = default_1;
8
8
  module.exports = exports.default;
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0LXR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3VzdG9tLWNsaWVudC1zY3JpcHRzL2Fzc2VydC10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsdUVBQW1FO0FBR25FLG1CQUF5QixPQUEyQjtJQUNoRCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBd0IsRUFBRSxFQUFFLENBQUMsNEJBQVUsQ0FBQyxDQUFDLG9CQUFFLENBQUMsTUFBTSxFQUFFLG9CQUFFLENBQUMsdUJBQXVCLENBQUMsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDakosQ0FBQztBQUZELDRCQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0VHlwZSwgaXMgfSBmcm9tICcuLi9lcnJvcnMvcnVudGltZS90eXBlLWFzc2VydGlvbnMnO1xuaW1wb3J0IENsaWVudFNjcmlwdEluaXQgZnJvbSAnLi9jbGllbnQtc2NyaXB0LWluaXQnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoc2NyaXB0czogQ2xpZW50U2NyaXB0SW5pdFtdKTogdm9pZCB7XG4gICAgc2NyaXB0cy5mb3JFYWNoKChzY3JpcHQ6IENsaWVudFNjcmlwdEluaXQpID0+IGFzc2VydFR5cGUoW2lzLnN0cmluZywgaXMuY2xpZW50U2NyaXB0SW5pdGlhbGl6ZXJdLCAnY2xpZW50U2NyaXB0cycsIGBDbGllbnQgc2NyaXB0YCwgc2NyaXB0KSk7XG59XG4iXX0=
@@ -1,3 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LXNjcmlwdC1pbml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2N1c3RvbS1jbGllbnQtc2NyaXB0cy9jbGllbnQtc2NyaXB0LWluaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcXVlc3RGaWx0ZXJSdWxlSW5pdCB9IGZyb20gJ3Rlc3RjYWZlLWhhbW1lcmhlYWQnO1xuXG5pbnRlcmZhY2UgQ2xpZW50U2NyaXB0SW5pdCB7XG4gICAgcGF0aDogc3RyaW5nO1xuICAgIGNvbnRlbnQ6IHN0cmluZztcbiAgICBtb2R1bGU6IHN0cmluZztcbiAgICBwYWdlOiBSZXF1ZXN0RmlsdGVyUnVsZUluaXQ7XG59XG5cbi8vTk9URTogaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8zMTk0XG5leHBvcnQgZGVmYXVsdCBDbGllbnRTY3JpcHRJbml0OyAvKmVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWYqL1xuIl19