testcafe 1.13.0 → 1.14.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +88 -10
- package/LICENSE +21 -21
- package/README.md +52 -48
- package/bin/testcafe-with-v8-flag-filter.js +0 -0
- package/lib/api/exportable-lib/index.js +50 -50
- package/lib/api/request-hooks/assert-type.js +7 -7
- package/lib/api/request-hooks/hook-method-names.js +11 -0
- package/lib/api/request-hooks/hook.js +33 -39
- package/lib/api/request-hooks/interfaces.js +3 -3
- package/lib/api/request-hooks/request-logger.js +113 -111
- package/lib/api/request-hooks/request-mock/create-request-mock.js +12 -0
- package/lib/api/request-hooks/request-mock/index.js +46 -0
- package/lib/api/request-hooks/request-mock.js +47 -48
- package/lib/api/structure/base-unit.js +11 -11
- package/lib/api/structure/fixture.js +75 -75
- package/lib/api/structure/interfaces.js +2 -2
- package/lib/api/structure/test-file.js +31 -31
- package/lib/api/structure/test-timeout.js +9 -9
- package/lib/api/structure/test.js +85 -85
- package/lib/api/structure/testing-unit.js +89 -89
- package/lib/api/structure/unit-type.js +9 -9
- package/lib/api/test-controller/assertion.js +88 -88
- package/lib/api/test-controller/execution-context.js +82 -82
- package/lib/api/test-controller/index.js +359 -319
- package/lib/api/test-controller/proxy.js +28 -28
- package/lib/api/test-page-url.js +60 -60
- package/lib/api/test-run-tracker.js +68 -68
- package/lib/api/wrap-test-function.js +49 -49
- package/lib/assertions/executor.js +74 -74
- package/lib/assertions/get-fn.js +46 -46
- package/lib/assertions/type.js +20 -20
- package/lib/assets/content-types.js +9 -9
- package/lib/assets/injectables.js +18 -18
- package/lib/browser/connection/command.js +10 -10
- package/lib/browser/connection/error-hints.js +9 -9
- package/lib/browser/connection/gateway.js +159 -159
- package/lib/browser/connection/get-hints.js +33 -33
- package/lib/browser/connection/heartbeat-status.js +8 -8
- package/lib/browser/connection/index.js +328 -328
- package/lib/browser/connection/remotes-queue.js +46 -46
- package/lib/browser/connection/service-routes.js +12 -12
- package/lib/browser/connection/status.js +12 -12
- package/lib/browser/interfaces.js +2 -2
- package/lib/browser/provider/built-in/dedicated/base.js +80 -80
- package/lib/browser/provider/built-in/dedicated/chrome/browser-client.js +204 -204
- package/lib/browser/provider/built-in/dedicated/chrome/build-chrome-args.js +17 -17
- package/lib/browser/provider/built-in/dedicated/chrome/config.js +110 -110
- package/lib/browser/provider/built-in/dedicated/chrome/create-temp-profile.js +45 -45
- package/lib/browser/provider/built-in/dedicated/chrome/elapsed-upperbounds.js +15 -15
- package/lib/browser/provider/built-in/dedicated/chrome/index.js +102 -102
- package/lib/browser/provider/built-in/dedicated/chrome/interfaces.js +2 -2
- package/lib/browser/provider/built-in/dedicated/chrome/local-chrome.js +24 -24
- package/lib/browser/provider/built-in/dedicated/chrome/runtime-info.js +29 -29
- package/lib/browser/provider/built-in/dedicated/edge/index.js +10 -10
- package/lib/browser/provider/built-in/dedicated/edge/runtime-info.js +29 -29
- package/lib/browser/provider/built-in/dedicated/firefox/config.js +33 -33
- package/lib/browser/provider/built-in/dedicated/firefox/create-temp-profile.js +78 -78
- package/lib/browser/provider/built-in/dedicated/firefox/index.js +73 -73
- package/lib/browser/provider/built-in/dedicated/firefox/local-firefox.js +36 -36
- package/lib/browser/provider/built-in/dedicated/firefox/marionette-client/commands.js +13 -13
- package/lib/browser/provider/built-in/dedicated/firefox/marionette-client/index.js +200 -200
- package/lib/browser/provider/built-in/dedicated/firefox/runtime-info.js +17 -17
- package/lib/browser/provider/built-in/index.js +21 -21
- package/lib/browser/provider/built-in/locally-installed.js +30 -30
- package/lib/browser/provider/built-in/path.js +47 -47
- package/lib/browser/provider/built-in/remote.js +58 -58
- package/lib/browser/provider/index.js +303 -303
- package/lib/browser/provider/parse-provider-name.js +16 -16
- package/lib/browser/provider/plugin-host.js +121 -121
- package/lib/browser/provider/pool.js +115 -115
- package/lib/browser/provider/utils/argument-parsing.js +74 -74
- package/lib/browser/provider/utils/browser-starter.js +34 -34
- package/lib/browser/provider/utils/client-functions.js +24 -24
- package/lib/browser/provider/utils/get-maximized-headless-window-size.js +9 -9
- package/lib/cli/argument-parser.js +284 -279
- package/lib/cli/authentication-helper.js +35 -35
- package/lib/cli/cli.js +134 -134
- package/lib/cli/correct-browsers-and-sources.js +40 -40
- package/lib/cli/index.js +19 -19
- package/lib/cli/log.js +43 -43
- package/lib/cli/remotes-wizard.js +36 -36
- package/lib/cli/termination-handler.js +38 -38
- package/lib/client/automation/index.js +144 -46
- package/lib/client/automation/index.min.js +1 -1
- package/lib/client/browser/idle-page/index.html.mustache +35 -35
- package/lib/client/browser/idle-page/logo.svg +86 -86
- package/lib/client/browser/service-worker.js +4 -6
- package/lib/client/core/index.js +19 -13
- package/lib/client/core/index.min.js +1 -1
- package/lib/client/driver/index.js +1807 -451
- package/lib/client/driver/index.min.js +1 -1
- package/lib/client/driver/internal-properties.js +9 -9
- package/lib/client/test-run/iframe.js.mustache +17 -17
- package/lib/client/test-run/index.js.mustache +51 -51
- package/lib/client/ui/index.js +14 -12
- package/lib/client/ui/index.min.js +1 -1
- package/lib/client/ui/sprite.svg +42 -42
- package/lib/client-functions/builder-symbol.js +4 -4
- package/lib/client-functions/client-function-builder.js +156 -135
- package/lib/client-functions/replicator.js +61 -61
- package/lib/client-functions/return-single-prop-mode.js +8 -8
- package/lib/client-functions/selector-api-execution-mode.js +22 -0
- package/lib/client-functions/selectors/add-api.js +646 -588
- package/lib/client-functions/selectors/create-snapshot-methods.js +13 -13
- package/lib/client-functions/selectors/prepare-api-args.js +20 -20
- package/lib/client-functions/selectors/selector-attribute-filter.js +22 -22
- package/lib/client-functions/selectors/selector-builder.js +154 -150
- package/lib/client-functions/selectors/selector-text-filter.js +43 -43
- package/lib/client-functions/selectors/snapshot-properties.js +48 -48
- package/lib/client-functions/types.js +18 -18
- package/lib/compiler/babel/format-babel-produced-code.js +10 -10
- package/lib/compiler/babel/get-base-babel-options.js +11 -11
- package/lib/compiler/babel/load-libs.js +64 -62
- package/lib/compiler/babel/preset-stage-2.js +19 -19
- package/lib/compiler/compile-client-function.js +73 -73
- package/lib/compiler/compilers.js +33 -33
- package/lib/compiler/index.js +92 -92
- package/lib/compiler/interfaces.js +2 -2
- package/lib/compiler/test-file/api-based.js +146 -146
- package/lib/compiler/test-file/base.js +36 -36
- package/lib/compiler/test-file/exportble-lib-path.js +5 -5
- package/lib/compiler/test-file/formats/coffeescript/compiler.js +38 -38
- package/lib/compiler/test-file/formats/coffeescript/get-test-list.js +29 -29
- package/lib/compiler/test-file/formats/es-next/compiler.js +43 -43
- package/lib/compiler/test-file/formats/es-next/get-test-list.js +166 -166
- package/lib/compiler/test-file/formats/es-next/is-flow-code.js +7 -7
- package/lib/compiler/test-file/formats/raw.js +85 -85
- package/lib/compiler/test-file/formats/typescript/compiler.js +135 -135
- package/lib/compiler/test-file/formats/typescript/get-test-list.js +185 -185
- package/lib/compiler/test-file/test-file-parser-base.js +214 -214
- package/lib/configuration/configuration-base.js +165 -165
- package/lib/configuration/constants.js +9 -9
- package/lib/configuration/customizable-compilers.js +7 -7
- package/lib/configuration/default-values.js +51 -51
- package/lib/configuration/interfaces.js +3 -3
- package/lib/configuration/option-names.js +53 -53
- package/lib/configuration/option-source.js +9 -9
- package/lib/configuration/option.js +14 -14
- package/lib/configuration/quarantine-option-names.js +10 -0
- package/lib/configuration/run-option-names.js +26 -26
- package/lib/configuration/screenshot-option-names.js +10 -10
- package/lib/configuration/testcafe-configuration.js +164 -165
- package/lib/configuration/types.js +2 -2
- package/lib/configuration/typescript-configuration.js +62 -62
- package/lib/custom-client-scripts/assert-type.js +7 -7
- package/lib/custom-client-scripts/client-script-init.js +3 -3
- package/lib/custom-client-scripts/client-script.js +107 -108
- package/lib/custom-client-scripts/get-code.js +11 -11
- package/lib/custom-client-scripts/get-url.js +6 -6
- package/lib/custom-client-scripts/load.js +15 -15
- package/lib/custom-client-scripts/problematic-scripts.js +2 -2
- package/lib/custom-client-scripts/routing.js +36 -36
- package/lib/custom-client-scripts/utils.js +60 -60
- package/lib/embedding-utils.js +83 -83
- package/lib/errors/create-stack-filter.js +18 -18
- package/lib/errors/error-list.js +26 -26
- package/lib/errors/get-callsite.js +31 -31
- package/lib/errors/internal-modules-prefix.js +8 -8
- package/lib/errors/is-internal-stack-frame.js +46 -46
- package/lib/errors/process-test-fn-error.js +37 -37
- package/lib/errors/runtime/index.js +123 -123
- package/lib/errors/runtime/templates.js +116 -114
- package/lib/errors/runtime/type-assertions.js +112 -112
- package/lib/errors/stack-cleaning-hook.js +64 -64
- package/lib/errors/test-run/formattable-adapter.js +59 -59
- package/lib/errors/test-run/index.js +302 -302
- package/lib/errors/test-run/render-error-template.js +31 -31
- package/lib/errors/test-run/templates.js +93 -95
- package/lib/errors/test-run/utils.js +90 -85
- package/lib/errors/types.js +157 -155
- package/lib/index.js +81 -81
- package/lib/live/bootstrapper.js +44 -44
- package/lib/live/controller.js +107 -107
- package/lib/live/file-watcher/index.js +67 -67
- package/lib/live/file-watcher/modules-graph.js +58 -58
- package/lib/live/keyboard-observer.js +76 -76
- package/lib/live/logger/index.js +64 -64
- package/lib/live/test-run-controller.js +96 -96
- package/lib/live/test-run-state.js +6 -6
- package/lib/live/test-run.js +56 -56
- package/lib/live/test-runner.js +168 -168
- package/lib/load-assets.js +29 -29
- package/lib/notifications/add-rendered-warning.js +16 -16
- package/lib/notifications/debug-logger.js +78 -78
- package/lib/notifications/deprecated.js +24 -24
- package/lib/notifications/information-message.js +12 -12
- package/lib/notifications/warning-log.js +32 -31
- package/lib/notifications/warning-message.js +48 -48
- package/lib/reporter/command/command-formatter.js +120 -109
- package/lib/reporter/command/format-command.js +8 -8
- package/lib/reporter/command/interfaces.js +2 -2
- package/lib/reporter/index.js +319 -314
- package/lib/reporter/interfaces.js +2 -2
- package/lib/reporter/plugin-host.js +136 -137
- package/lib/reporter/plugin-methods.js +12 -12
- package/lib/role/index.js +74 -74
- package/lib/role/marker-symbol.js +7 -7
- package/lib/role/phase.js +9 -9
- package/lib/runner/bootstrapper.js +272 -272
- package/lib/runner/browser-job-result.js +9 -9
- package/lib/runner/browser-job.js +153 -123
- package/lib/runner/browser-set.js +114 -114
- package/lib/runner/fixture-hook-controller.js +85 -85
- package/lib/runner/index.js +450 -442
- package/lib/runner/interfaces.js +3 -3
- package/lib/runner/reporter-stream-controller.js +28 -28
- package/lib/runner/task/index.js +152 -133
- package/lib/runner/task/phase.js +9 -9
- package/lib/runner/test-run-controller.js +166 -185
- package/lib/runner/tested-app.js +73 -72
- package/lib/screenshots/capturer.js +141 -141
- package/lib/screenshots/constants.js +11 -11
- package/lib/screenshots/crop.js +111 -111
- package/lib/screenshots/default-extension.js +4 -4
- package/lib/screenshots/index.js +67 -67
- package/lib/screenshots/utils.js +39 -39
- package/lib/services/compiler/host.js +190 -106
- package/lib/services/compiler/io.js +9 -9
- package/lib/services/compiler/protocol.js +17 -16
- package/lib/services/compiler/service.js +225 -106
- package/lib/services/compiler/test-run-proxy.js +111 -73
- package/lib/services/interfaces.js +3 -0
- package/lib/services/process-title.js +8 -8
- package/lib/services/serialization/prepare-options.js +17 -17
- package/lib/services/serialization/replicator/create-replicator.js +27 -0
- package/lib/services/serialization/replicator/custom-error-transform.js +28 -0
- package/lib/services/serialization/test-structure.js +93 -77
- package/lib/services/utils/ipc/interfaces.js +30 -30
- package/lib/services/utils/ipc/io.js +108 -108
- package/lib/services/utils/ipc/message.js +76 -73
- package/lib/services/utils/ipc/packet.js +55 -55
- package/lib/services/utils/ipc/proxy.js +110 -118
- package/lib/services/utils/ipc/transport.js +64 -64
- package/lib/shared/errors/index.js +382 -382
- package/lib/shared/node-modules-folder-name.js +4 -4
- package/lib/test-run/bookmark.js +90 -90
- package/lib/test-run/browser-console-messages.js +73 -73
- package/lib/test-run/browser-manipulation-queue.js +92 -92
- package/lib/test-run/client-messages.js +9 -9
- package/lib/test-run/commands/actions.js +486 -425
- package/lib/test-run/commands/assertion.js +45 -45
- package/lib/test-run/commands/base.js +14 -14
- package/lib/test-run/commands/browser-manipulation.js +95 -95
- package/lib/test-run/commands/from-object.js +82 -82
- package/lib/test-run/commands/observation.js +61 -61
- package/lib/test-run/commands/options.js +231 -215
- package/lib/test-run/commands/service.js +54 -48
- package/lib/test-run/commands/type.js +65 -60
- package/lib/test-run/commands/utils.js +87 -87
- package/lib/test-run/commands/validations/argument.js +90 -90
- package/lib/test-run/commands/validations/factories.js +47 -47
- package/lib/test-run/commands/validations/initializers.js +44 -44
- package/lib/test-run/debug-log.js +32 -32
- package/lib/test-run/execute-js-expression.js +74 -74
- package/lib/test-run/index.js +823 -752
- package/lib/test-run/marker-symbol.js +7 -7
- package/lib/test-run/observed-callsites-storage.js +17 -17
- package/lib/test-run/phase.js +16 -16
- package/lib/test-run/session-controller.js +104 -104
- package/lib/testcafe.js +119 -114
- package/lib/utils/assignable.js +39 -39
- package/lib/utils/async-event-emitter.js +28 -28
- package/lib/utils/async-queue.js +14 -14
- package/lib/utils/browser-connection-timeouts.js +19 -19
- package/lib/utils/callsite.js +17 -17
- package/lib/utils/check-file-path.js +31 -31
- package/lib/utils/check-url.js +51 -51
- package/lib/utils/convert-to-best-fit-type.js +16 -16
- package/lib/utils/correct-file-path.js +21 -21
- package/lib/utils/define-lazy-property.js +13 -13
- package/lib/utils/delay.js +6 -6
- package/lib/utils/delegated-api.js +44 -44
- package/lib/utils/detect-display.js +6 -6
- package/lib/utils/detect-ffmpeg.js +44 -44
- package/lib/utils/diff/colors.js +29 -29
- package/lib/utils/diff/index.js +53 -53
- package/lib/utils/diff/util.js +24 -22
- package/lib/utils/diff.js +29 -29
- package/lib/utils/escape-user-agent.js +10 -10
- package/lib/utils/flag-list.js +17 -17
- package/lib/utils/get-any-key.js +8 -8
- package/lib/utils/get-browser.js +8 -8
- package/lib/utils/get-common-path.js +34 -34
- package/lib/utils/get-filter-fn.js +40 -40
- package/lib/utils/get-options/base.js +36 -36
- package/lib/utils/get-options/compiler.js +33 -33
- package/lib/utils/get-options/grep.js +15 -15
- package/lib/utils/get-options/index.js +21 -19
- package/lib/utils/get-options/meta.js +22 -22
- package/lib/utils/get-options/quarantine.js +92 -0
- package/lib/utils/get-options/screenshot.js +17 -17
- package/lib/utils/get-options/ssl.js +45 -45
- package/lib/utils/get-options/video.js +10 -10
- package/lib/utils/get-viewport-width.js +18 -18
- package/lib/utils/guard-time-execution.js +10 -10
- package/lib/utils/handle-errors.js +74 -74
- package/lib/utils/handle-tag-args.js +8 -8
- package/lib/utils/http.js +30 -30
- package/lib/utils/is-localhost.js +11 -11
- package/lib/utils/is-password-input.js +11 -0
- package/lib/utils/is-repl.js +12 -0
- package/lib/utils/is-window-in-iframe.js +6 -6
- package/lib/utils/limit-number.js +10 -10
- package/lib/utils/make-reg-exp.js +7 -7
- package/lib/utils/moment-loader.js +20 -20
- package/lib/utils/parse-file-list.js +71 -71
- package/lib/utils/parse-user-agent.js +55 -55
- package/lib/utils/path-pattern.js +114 -114
- package/lib/utils/prepare-reporters.js +30 -30
- package/lib/utils/prerender-callsite.js +18 -18
- package/lib/utils/process.js +119 -119
- package/lib/utils/promisified-functions.js +46 -46
- package/lib/utils/re-executable-promise.js +39 -39
- package/lib/utils/render-callsite-sync.js +29 -29
- package/lib/utils/render-template.js +10 -10
- package/lib/utils/reporter.js +30 -30
- package/lib/utils/resolve-path-relatively-cwd.js +7 -7
- package/lib/utils/string.js +105 -105
- package/lib/utils/temp-directory/cleanup-process/commands.js +7 -7
- package/lib/utils/temp-directory/cleanup-process/index.js +143 -143
- package/lib/utils/temp-directory/cleanup-process/worker.js +58 -58
- package/lib/utils/temp-directory/index.js +87 -87
- package/lib/utils/temp-directory/lockfile.js +56 -56
- package/lib/utils/thennable.js +7 -7
- package/lib/utils/timer.js +15 -15
- package/lib/utils/to-posix-path.js +8 -8
- package/lib/utils/types.js +2 -2
- package/lib/video-recorder/interfaces.js +2 -2
- package/lib/video-recorder/process.js +126 -126
- package/lib/video-recorder/recorder.js +136 -136
- package/lib/video-recorder/test-run-video-recorder.js +69 -69
- package/lib/video-recorder/videos.js +37 -37
- package/package.json +7 -7
- package/ts-defs/index.d.ts +109 -17
- package/ts-defs/selectors.d.ts +95 -7
- package/ts-defs/testcafe-scripts.d.ts +96 -8
|
@@ -1,166 +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.
|
|
25
|
-
option_names_1.default.
|
|
26
|
-
option_names_1.default.
|
|
27
|
-
option_names_1.default.
|
|
28
|
-
option_names_1.default.
|
|
29
|
-
option_names_1.default.
|
|
30
|
-
option_names_1.default.
|
|
31
|
-
option_names_1.default.
|
|
32
|
-
option_names_1.default.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
option_names_1.default.
|
|
37
|
-
option_names_1.default.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
await
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
this.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
this.
|
|
56
|
-
this.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
this.
|
|
99
|
-
this.
|
|
100
|
-
this._ensureArrayOption(option_names_1.default.
|
|
101
|
-
this._ensureArrayOption(option_names_1.default.
|
|
102
|
-
this.
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
this._ensureOptionWithValue(option_names_1.default.
|
|
137
|
-
this._ensureOptionWithValue(option_names_1.default.
|
|
138
|
-
this._ensureOptionWithValue(option_names_1.default.
|
|
139
|
-
this._ensureOptionWithValue(option_names_1.default.
|
|
140
|
-
this._ensureOptionWithValue(option_names_1.default.
|
|
141
|
-
this._ensureOptionWithValue(option_names_1.default.
|
|
142
|
-
this._ensureOptionWithValue(option_names_1.default.
|
|
143
|
-
this._ensureOptionWithValue(option_names_1.default.
|
|
144
|
-
this.
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
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;
|
|
165
164
|
module.exports = exports.default;
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGNhZmUtY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWd1cmF0aW9uL3Rlc3RjYWZlLWNvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4RUFBaUQ7QUFDakQsbUNBQW1DO0FBQ25DLHNEQUFxRTtBQUNyRSxrRUFBMEM7QUFDMUMsMkVBQWlEO0FBQ2pELG1GQUEwRDtBQUMxRCw0Q0FBK0U7QUFDL0UsK0VBQXNEO0FBQ3RELHVGQUFnRTtBQUNoRSx1R0FBNEU7QUFFNUUscURBUzBCO0FBRTFCLG9FQUEyQztBQVEzQyxzRkFBNkQ7QUFDN0QsNERBQWdGO0FBR2hGLE1BQU0sc0JBQXNCLEdBQUcsa0JBQWtCLENBQUM7QUFFbEQsTUFBTSw2QkFBNkIsR0FBRyxhQUFhLENBQUM7QUFFcEQsTUFBTSxpQkFBaUIsR0FBRztJQUN0QixzQkFBWSxDQUFDLFlBQVk7SUFDekIsc0JBQVksQ0FBQyxjQUFjO0lBQzNCLHNCQUFZLENBQUMsU0FBUztJQUN0QixzQkFBWSxDQUFDLFdBQVc7SUFDeEIsc0JBQVksQ0FBQyxrQkFBa0I7SUFDL0Isc0JBQVksQ0FBQyxlQUFlO0lBQzVCLHNCQUFZLENBQUMsc0JBQXNCO0lBQ25DLHNCQUFZLENBQUMsa0JBQWtCO0lBQy9CLHNCQUFZLENBQUMsa0JBQWtCO0lBQy9CLHNCQUFZLENBQUMsa0JBQWtCO0lBQy9CLHNCQUFZLENBQUMsc0JBQXNCO0NBQ3RDLENBQUM7QUFFRixNQUFNLHNCQUFzQixHQUFHO0lBQzNCLHNCQUFZLENBQUMsZUFBZTtJQUM1QixzQkFBWSxDQUFDLGNBQWM7SUFDM0Isc0JBQVksQ0FBQyxLQUFLO0NBQ3JCLENBQUM7QUFnQkYsTUFBcUIscUJBQXNCLFNBQVEsNEJBQWE7SUFDNUQsWUFBb0IsVUFBVSxHQUFHLHNCQUFzQjtRQUNuRCxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVNLEtB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QUFFLENBQUM7UUFFN0UsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxzQkFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRS9ELElBQUksWUFBWSxFQUFFO1lBQ2QsTUFBTSxtQkFBbUIsR0FBTyxlQUFlLENBQUMsS0FBd0IsQ0FBQztZQUN6RSxJQUFJLHlCQUF5QixHQUFHLG1CQUFtQixDQUFDLGdDQUFxQixDQUFDLFVBQVUsQ0FBOEIsQ0FBQztZQUVuSCx5QkFBeUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO2dCQUN0QyxVQUFVLEVBQUUsWUFBWTthQUMzQixFQUFFLHlCQUF5QixDQUFDLENBQUM7WUFFN0IsZUFBZSxDQUFDLEtBQXlCLENBQUMsZ0NBQXFCLENBQUMsVUFBVSxDQUFDLEdBQUcseUJBQXlCLENBQUM7U0FDNUc7SUFDTCxDQUFDO0lBRU0sTUFBTSxLQUFLLFFBQVE7UUFDdEIsT0FBTyxzQkFBc0IsQ0FBQztJQUNsQyxDQUFDO0NBQ0o7QUF4S0Qsd0NBd0tDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbmZpZ3VyYXRpb24gZnJvbSAnLi9jb25maWd1cmF0aW9uLWJhc2UnO1xuaW1wb3J0IHsgY2FzdEFycmF5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGdldEdyZXBPcHRpb25zLCBnZXRTU0xPcHRpb25zIH0gZnJvbSAnLi4vdXRpbHMvZ2V0LW9wdGlvbnMnO1xuaW1wb3J0IE9QVElPTl9OQU1FUyBmcm9tICcuL29wdGlvbi1uYW1lcyc7XG5pbXBvcnQgZ2V0RmlsdGVyRm4gZnJvbSAnLi4vdXRpbHMvZ2V0LWZpbHRlci1mbic7XG5pbXBvcnQgcHJlcGFyZVJlcG9ydGVycyBmcm9tICcuLi91dGlscy9wcmVwYXJlLXJlcG9ydGVycyc7XG5pbXBvcnQgeyBnZXRDb25jYXRlbmF0ZWRWYWx1ZXNTdHJpbmcsIGdldFBsdXJhbFN1ZmZpeCB9IGZyb20gJy4uL3V0aWxzL3N0cmluZyc7XG5pbXBvcnQgcmVuZGVyVGVtcGxhdGUgZnJvbSAnLi4vdXRpbHMvcmVuZGVyLXRlbXBsYXRlJztcbmltcG9ydCBXQVJOSU5HX01FU1NBR0VTIGZyb20gJy4uL25vdGlmaWNhdGlvbnMvd2FybmluZy1tZXNzYWdlJztcbmltcG9ydCByZXNvbHZlUGF0aFJlbGF0aXZlbHlDd2QgZnJvbSAnLi4vdXRpbHMvcmVzb2x2ZS1wYXRoLXJlbGF0aXZlbHktY3dkJztcblxuaW1wb3J0IHtcbiAgICBERUZBVUxUX0FQUF9JTklUX0RFTEFZLFxuICAgIERFRkFVTFRfQ09OQ1VSUkVOQ1lfVkFMVUUsXG4gICAgREVGQVVMVF9TUEVFRF9WQUxVRSxcbiAgICBERUZBVUxUX1RJTUVPVVQsXG4gICAgREVGQVVMVF9TT1VSQ0VfRElSRUNUT1JJRVMsXG4gICAgREVGQVVMVF9ERVZFTE9QTUVOVF9NT0RFLFxuICAgIERFRkFVTFRfUkVUUllfVEVTVF9QQUdFUyxcbiAgICBnZXREZWZhdWx0Q29tcGlsZXJPcHRpb25zXG59IGZyb20gJy4vZGVmYXVsdC12YWx1ZXMnO1xuXG5pbXBvcnQgT3B0aW9uU291cmNlIGZyb20gJy4vb3B0aW9uLXNvdXJjZSc7XG5pbXBvcnQge1xuICAgIERpY3Rpb25hcnksXG4gICAgRmlsdGVyT3B0aW9uLFxuICAgIFJlcG9ydGVyT3B0aW9uLFxuICAgIFR5cGVTY3JpcHRDb21waWxlck9wdGlvbnNcbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuaW1wb3J0IEN1c3RvbWl6YWJsZUNvbXBpbGVycyBmcm9tICcuL2N1c3RvbWl6YWJsZS1jb21waWxlcnMnO1xuaW1wb3J0IHsgREVQUkVDQVRFRCwgZ2V0RGVwcmVjYXRpb25NZXNzYWdlIH0gZnJvbSAnLi4vbm90aWZpY2F0aW9ucy9kZXByZWNhdGVkJztcbmltcG9ydCBXYXJuaW5nTG9nIGZyb20gJy4uL25vdGlmaWNhdGlvbnMvd2FybmluZy1sb2cnO1xuXG5jb25zdCBDT05GSUdVUkFUSU9OX0ZJTEVOQU1FID0gJy50ZXN0Y2FmZXJjLmpzb24nO1xuXG5jb25zdCBERUZBVUxUX1NDUkVFTlNIT1RTX0RJUkVDVE9SWSA9ICdzY3JlZW5zaG90cyc7XG5cbmNvbnN0IE9QVElPTl9GTEFHX05BTUVTID0gW1xuICAgIE9QVElPTl9OQU1FUy5za2lwSnNFcnJvcnMsXG4gICAgT1BUSU9OX05BTUVTLnF1YXJhbnRpbmVNb2RlLFxuICAgIE9QVElPTl9OQU1FUy5kZWJ1Z01vZGUsXG4gICAgT1BUSU9OX05BTUVTLmRlYnVnT25GYWlsLFxuICAgIE9QVElPTl9OQU1FUy5za2lwVW5jYXVnaHRFcnJvcnMsXG4gICAgT1BUSU9OX05BTUVTLnN0b3BPbkZpcnN0RmFpbCxcbiAgICBPUFRJT05fTkFNRVMudGFrZVNjcmVlbnNob3RzT25GYWlscyxcbiAgICBPUFRJT05fTkFNRVMuZGlzYWJsZVBhZ2VDYWNoaW5nLFxuICAgIE9QVElPTl9OQU1FUy5kaXNhYmxlUGFnZVJlbG9hZHMsXG4gICAgT1BUSU9OX05BTUVTLmRpc2FibGVTY3JlZW5zaG90cyxcbiAgICBPUFRJT05fTkFNRVMuZGlzYWJsZU11bHRpcGxlV2luZG93c1xuXTtcblxuY29uc3QgT1BUSU9OX0lOSVRfRkxBR19OQU1FUyA9IFtcbiAgICBPUFRJT05fTkFNRVMuZGV2ZWxvcG1lbnRNb2RlLFxuICAgIE9QVElPTl9OQU1FUy5yZXRyeVRlc3RQYWdlcyxcbiAgICBPUFRJT05fTkFNRVMuY2FjaGVcbl07XG5cbmludGVyZmFjZSBUZXN0Q2FmZUFkZGl0aW9uYWxTdGFydE9wdGlvbnMge1xuICAgIHJldHJ5VGVzdFBhZ2VzOiBib29sZWFuO1xuICAgIHNzbDogc3RyaW5nO1xuICAgIGRldmVsb3BtZW50TW9kZTogYm9vbGVhbjtcbiAgICBjYWNoZTogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFRlc3RDYWZlU3RhcnRPcHRpb25zIHtcbiAgICBob3N0bmFtZT86IHN0cmluZztcbiAgICBwb3J0MT86IG51bWJlcjtcbiAgICBwb3J0Mj86IG51bWJlcjtcbiAgICBvcHRpb25zOiBUZXN0Q2FmZUFkZGl0aW9uYWxTdGFydE9wdGlvbnM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlc3RDYWZlQ29uZmlndXJhdGlvbiBleHRlbmRzIENvbmZpZ3VyYXRpb24ge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoY29uZmlnRmlsZSA9IENPTkZJR1VSQVRJT05fRklMRU5BTUUpIHtcbiAgICAgICAgc3VwZXIoY29uZmlnRmlsZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGluaXQgKG9wdGlvbnM/OiBvYmplY3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICAgICAgYXdhaXQgc3VwZXIuaW5pdCgpO1xuXG4gICAgICAgIGNvbnN0IG9wdHMgPSBhd2FpdCB0aGlzLl9sb2FkKCk7XG5cbiAgICAgICAgaWYgKG9wdHMpIHtcbiAgICAgICAgICAgIHRoaXMuX29wdGlvbnMgPSBDb25maWd1cmF0aW9uLl9mcm9tT2JqKG9wdHMpO1xuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9ub3JtYWxpemVPcHRpb25zQWZ0ZXJMb2FkKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1lcmdlT3B0aW9ucyhvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcHJlcGFyZSAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ByZXBhcmVGbGFncygpO1xuICAgICAgICB0aGlzLl9zZXREZWZhdWx0VmFsdWVzKCk7XG4gICAgICAgIHRoaXMuX3ByZXBhcmVDb21waWxlck9wdGlvbnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbm90aWZ5QWJvdXRPdmVycmlkZGVuT3B0aW9ucyAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fb3ZlcnJpZGRlbk9wdGlvbnMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IG9wdGlvbnNTdHIgICAgPSBnZXRDb25jYXRlbmF0ZWRWYWx1ZXNTdHJpbmcodGhpcy5fb3ZlcnJpZGRlbk9wdGlvbnMpO1xuICAgICAgICBjb25zdCBvcHRpb25zU3VmZml4ID0gZ2V0UGx1cmFsU3VmZml4KHRoaXMuX292ZXJyaWRkZW5PcHRpb25zKTtcblxuICAgICAgICBDb25maWd1cmF0aW9uLl9zaG93Q29uc29sZVdhcm5pbmcocmVuZGVyVGVtcGxhdGUoV0FSTklOR19NRVNTQUdFUy5jb25maWdPcHRpb25zV2VyZU92ZXJyaWRkZW4sIG9wdGlvbnNTdHIsIG9wdGlvbnNTdWZmaXgpKTtcblxuICAgICAgICB0aGlzLl9vdmVycmlkZGVuT3B0aW9ucyA9IFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyBub3RpZnlBYm91dERlcHJlY2F0ZWRPcHRpb25zICh3YXJuaW5nTG9nOiBXYXJuaW5nTG9nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRlcHJlY2F0ZWRPcHRpb25zID0gdGhpcy5nZXRPcHRpb25zKChuYW1lLCBvcHRpb24pID0+IG5hbWUgaW4gREVQUkVDQVRFRCAmJiBvcHRpb24udmFsdWUgIT09IHZvaWQgMCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBvcHRpb25OYW1lIGluIGRlcHJlY2F0ZWRPcHRpb25zKVxuICAgICAgICAgICAgd2FybmluZ0xvZy5hZGRXYXJuaW5nKGdldERlcHJlY2F0aW9uTWVzc2FnZShERVBSRUNBVEVEW29wdGlvbk5hbWVdKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzdGFydE9wdGlvbnMgKCk6IFRlc3RDYWZlU3RhcnRPcHRpb25zIHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBUZXN0Q2FmZVN0YXJ0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGhvc3RuYW1lOiB0aGlzLmdldE9wdGlvbihPUFRJT05fTkFNRVMuaG9zdG5hbWUpIGFzIHN0cmluZyxcbiAgICAgICAgICAgIHBvcnQxOiAgICB0aGlzLmdldE9wdGlvbihPUFRJT05fTkFNRVMucG9ydDEpIGFzIG51bWJlcixcbiAgICAgICAgICAgIHBvcnQyOiAgICB0aGlzLmdldE9wdGlvbihPUFRJT05fTkFNRVMucG9ydDIpIGFzIG51bWJlcixcblxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgIHNzbDogICAgICAgICAgICAgdGhpcy5nZXRPcHRpb24oT1BUSU9OX05BTUVTLnNzbCkgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICAgIGRldmVsb3BtZW50TW9kZTogdGhpcy5nZXRPcHRpb24oT1BUSU9OX05BTUVTLmRldmVsb3BtZW50TW9kZSkgYXMgYm9vbGVhbixcbiAgICAgICAgICAgICAgICByZXRyeVRlc3RQYWdlczogIHRoaXMuZ2V0T3B0aW9uKE9QVElPTl9OQU1FUy5yZXRyeVRlc3RQYWdlcykgYXMgYm9vbGVhbixcbiAgICAgICAgICAgICAgICBjYWNoZTogICAgICAgICAgIHRoaXMuZ2V0T3B0aW9uKE9QVElPTl9OQU1FUy5jYWNoZSkgYXMgYm9vbGVhblxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcHJlcGFyZUZsYWcgKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLl9lbnN1cmVPcHRpb24obmFtZSwgdm9pZCAwLCBPcHRpb25Tb3VyY2UuQ29uZmlndXJhdGlvbik7XG5cbiAgICAgICAgb3B0aW9uLnZhbHVlID0gISFvcHRpb24udmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcHJlcGFyZUZsYWdzICgpOiB2b2lkIHtcbiAgICAgICAgT1BUSU9OX0ZMQUdfTkFNRVMuZm9yRWFjaChuYW1lID0+IHRoaXMuX3ByZXBhcmVGbGFnKG5hbWUpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wcmVwYXJlSW5pdEZsYWdzICgpOiB2b2lkIHtcbiAgICAgICAgT1BUSU9OX0lOSVRfRkxBR19OQU1FUy5mb3JFYWNoKG5hbWUgPT4gdGhpcy5fcHJlcGFyZUZsYWcobmFtZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX25vcm1hbGl6ZU9wdGlvbnNBZnRlckxvYWQgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLl9wcmVwYXJlU3NsT3B0aW9ucygpO1xuICAgICAgICB0aGlzLl9wcmVwYXJlSW5pdEZsYWdzKCk7XG4gICAgICAgIHRoaXMuX3ByZXBhcmVGaWx0ZXJGbigpO1xuICAgICAgICB0aGlzLl9lbnN1cmVBcnJheU9wdGlvbihPUFRJT05fTkFNRVMuc3JjKTtcbiAgICAgICAgdGhpcy5fZW5zdXJlQXJyYXlPcHRpb24oT1BUSU9OX05BTUVTLmJyb3dzZXJzKTtcbiAgICAgICAgdGhpcy5fZW5zdXJlQXJyYXlPcHRpb24oT1BUSU9OX05BTUVTLmNsaWVudFNjcmlwdHMpO1xuICAgICAgICB0aGlzLl9wcmVwYXJlUmVwb3J0ZXJzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcHJlcGFyZUZpbHRlckZuICgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsdGVyT3B0aW9uID0gdGhpcy5fZW5zdXJlT3B0aW9uKE9QVElPTl9OQU1FUy5maWx0ZXIsIG51bGwsIE9wdGlvblNvdXJjZS5Db25maWd1cmF0aW9uKTtcblxuICAgICAgICBpZiAoIWZpbHRlck9wdGlvbi52YWx1ZSlcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCBmaWx0ZXJPcHRpb25WYWx1ZSA9IGZpbHRlck9wdGlvbi52YWx1ZSBhcyBGaWx0ZXJPcHRpb247XG5cbiAgICAgICAgaWYgKGZpbHRlck9wdGlvblZhbHVlLnRlc3RHcmVwKVxuICAgICAgICAgICAgZmlsdGVyT3B0aW9uVmFsdWUudGVzdEdyZXAgPSBnZXRHcmVwT3B0aW9ucyhPUFRJT05fTkFNRVMuZmlsdGVyVGVzdEdyZXAsIGZpbHRlck9wdGlvblZhbHVlLnRlc3RHcmVwIGFzIHN0cmluZyk7XG5cbiAgICAgICAgaWYgKGZpbHRlck9wdGlvblZhbHVlLmZpeHR1cmVHcmVwKVxuICAgICAgICAgICAgZmlsdGVyT3B0aW9uVmFsdWUuZml4dHVyZUdyZXAgPSBnZXRHcmVwT3B0aW9ucyhPUFRJT05fTkFNRVMuZmlsdGVyRml4dHVyZUdyZXAsIGZpbHRlck9wdGlvblZhbHVlLmZpeHR1cmVHcmVwIGFzIHN0cmluZyk7XG5cbiAgICAgICAgZmlsdGVyT3B0aW9uLnZhbHVlID0gZ2V0RmlsdGVyRm4oZmlsdGVyT3B0aW9uLnZhbHVlKSBhcyBGdW5jdGlvbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9lbnN1cmVTY3JlZW5zaG90UGF0aCAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhdGggICAgICAgID0gcmVzb2x2ZVBhdGhSZWxhdGl2ZWx5Q3dkKERFRkFVTFRfU0NSRUVOU0hPVFNfRElSRUNUT1JZKTtcbiAgICAgICAgY29uc3Qgc2NyZWVuc2hvdHMgPSB0aGlzLl9lbnN1cmVPcHRpb24oT1BUSU9OX05BTUVTLnNjcmVlbnNob3RzLCB7fSwgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pLnZhbHVlIGFzIERpY3Rpb25hcnk8c3RyaW5nPjtcblxuICAgICAgICBpZiAoIXNjcmVlbnNob3RzLnBhdGgpXG4gICAgICAgICAgICBzY3JlZW5zaG90cy5wYXRoID0gcGF0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wcmVwYXJlUmVwb3J0ZXJzICgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVwb3J0ZXJPcHRpb24gPSB0aGlzLl9vcHRpb25zW09QVElPTl9OQU1FUy5yZXBvcnRlcl07XG5cbiAgICAgICAgaWYgKCFyZXBvcnRlck9wdGlvbilcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCBvcHRpb25WYWx1ZSA9IGNhc3RBcnJheShyZXBvcnRlck9wdGlvbi52YWx1ZSBhcyBSZXBvcnRlck9wdGlvbik7XG5cbiAgICAgICAgcmVwb3J0ZXJPcHRpb24udmFsdWUgPSBwcmVwYXJlUmVwb3J0ZXJzKG9wdGlvblZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wcmVwYXJlU3NsT3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHNzbE9wdGlvbnMgPSB0aGlzLl9vcHRpb25zW09QVElPTl9OQU1FUy5zc2xdO1xuXG4gICAgICAgIGlmICghc3NsT3B0aW9ucylcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBzc2xPcHRpb25zLnZhbHVlID0gYXdhaXQgZ2V0U1NMT3B0aW9ucyhzc2xPcHRpb25zLnZhbHVlIGFzIHN0cmluZykgYXMgRGljdGlvbmFyeTxzdHJpbmcgfCBib29sZWFuIHwgbnVtYmVyPjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXREZWZhdWx0VmFsdWVzICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZW5zdXJlT3B0aW9uV2l0aFZhbHVlKE9QVElPTl9OQU1FUy5zZWxlY3RvclRpbWVvdXQsIERFRkFVTFRfVElNRU9VVC5zZWxlY3RvciwgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pO1xuICAgICAgICB0aGlzLl9lbnN1cmVPcHRpb25XaXRoVmFsdWUoT1BUSU9OX05BTUVTLmFzc2VydGlvblRpbWVvdXQsIERFRkFVTFRfVElNRU9VVC5hc3NlcnRpb24sIE9wdGlvblNvdXJjZS5Db25maWd1cmF0aW9uKTtcbiAgICAgICAgdGhpcy5fZW5zdXJlT3B0aW9uV2l0aFZhbHVlKE9QVElPTl9OQU1FUy5wYWdlTG9hZFRpbWVvdXQsIERFRkFVTFRfVElNRU9VVC5wYWdlTG9hZCwgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pO1xuICAgICAgICB0aGlzLl9lbnN1cmVPcHRpb25XaXRoVmFsdWUoT1BUSU9OX05BTUVTLnNwZWVkLCBERUZBVUxUX1NQRUVEX1ZBTFVFLCBPcHRpb25Tb3VyY2UuQ29uZmlndXJhdGlvbik7XG4gICAgICAgIHRoaXMuX2Vuc3VyZU9wdGlvbldpdGhWYWx1ZShPUFRJT05fTkFNRVMuYXBwSW5pdERlbGF5LCBERUZBVUxUX0FQUF9JTklUX0RFTEFZLCBPcHRpb25Tb3VyY2UuQ29uZmlndXJhdGlvbik7XG4gICAgICAgIHRoaXMuX2Vuc3VyZU9wdGlvbldpdGhWYWx1ZShPUFRJT05fTkFNRVMuY29uY3VycmVuY3ksIERFRkFVTFRfQ09OQ1VSUkVOQ1lfVkFMVUUsIE9wdGlvblNvdXJjZS5Db25maWd1cmF0aW9uKTtcbiAgICAgICAgdGhpcy5fZW5zdXJlT3B0aW9uV2l0aFZhbHVlKE9QVElPTl9OQU1FUy5zcmMsIERFRkFVTFRfU09VUkNFX0RJUkVDVE9SSUVTLCBPcHRpb25Tb3VyY2UuQ29uZmlndXJhdGlvbik7XG4gICAgICAgIHRoaXMuX2Vuc3VyZU9wdGlvbldpdGhWYWx1ZShPUFRJT05fTkFNRVMuZGV2ZWxvcG1lbnRNb2RlLCBERUZBVUxUX0RFVkVMT1BNRU5UX01PREUsIE9wdGlvblNvdXJjZS5Db25maWd1cmF0aW9uKTtcbiAgICAgICAgdGhpcy5fZW5zdXJlT3B0aW9uV2l0aFZhbHVlKE9QVElPTl9OQU1FUy5yZXRyeVRlc3RQYWdlcywgREVGQVVMVF9SRVRSWV9URVNUX1BBR0VTLCBPcHRpb25Tb3VyY2UuQ29uZmlndXJhdGlvbik7XG5cbiAgICAgICAgdGhpcy5fZW5zdXJlU2NyZWVuc2hvdFBhdGgoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wcmVwYXJlQ29tcGlsZXJPcHRpb25zICgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29tcGlsZXJPcHRpb25zID0gdGhpcy5fZW5zdXJlT3B0aW9uKE9QVElPTl9OQU1FUy5jb21waWxlck9wdGlvbnMsIGdldERlZmF1bHRDb21waWxlck9wdGlvbnMoKSwgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pO1xuXG4gICAgICAgIGNvbXBpbGVyT3B0aW9ucy52YWx1ZSA9IGNvbXBpbGVyT3B0aW9ucy52YWx1ZSB8fCBnZXREZWZhdWx0Q29tcGlsZXJPcHRpb25zKCk7XG5cbiAgICAgICAgY29uc3QgdHNDb25maWdQYXRoID0gdGhpcy5nZXRPcHRpb24oT1BUSU9OX05BTUVTLnRzQ29uZmlnUGF0aCk7XG5cbiAgICAgICAgaWYgKHRzQ29uZmlnUGF0aCkge1xuICAgICAgICAgICAgY29uc3QgY29tcGlsZXJPcHRpb25WYWx1ZSAgICAgPSBjb21waWxlck9wdGlvbnMudmFsdWUgYXMgQ29tcGlsZXJPcHRpb25zO1xuICAgICAgICAgICAgbGV0IHR5cGVTY3JpcHRDb21waWxlck9wdGlvbnMgPSBjb21waWxlck9wdGlvblZhbHVlW0N1c3RvbWl6YWJsZUNvbXBpbGVycy50eXBlc2NyaXB0XSBhcyBUeXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zO1xuXG4gICAgICAgICAgICB0eXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgICAgICAgY29uZmlnUGF0aDogdHNDb25maWdQYXRoXG4gICAgICAgICAgICB9LCB0eXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zKTtcblxuICAgICAgICAgICAgKGNvbXBpbGVyT3B0aW9ucy52YWx1ZSBhcyBDb21waWxlck9wdGlvbnMpW0N1c3RvbWl6YWJsZUNvbXBpbGVycy50eXBlc2NyaXB0XSA9IHR5cGVTY3JpcHRDb21waWxlck9wdGlvbnM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldCBGSUxFTkFNRSAoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIENPTkZJR1VSQVRJT05fRklMRU5BTUU7XG4gICAgfVxufVxuIl19
|
|
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/
|
|
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 });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LXNjcmlwdC1pbml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2N1c3RvbS1jbGllbnQtc2NyaXB0cy9jbGllbnQtc2NyaXB0LWluaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcXVlc3RGaWx0ZXJSdWxlSW5pdCB9IGZyb20gJ3Rlc3RjYWZlLWhhbW1lcmhlYWQnO1xuXG5pbnRlcmZhY2UgQ2xpZW50U2NyaXB0SW5pdCB7XG4gICAgcGF0aDogc3RyaW5nO1xuICAgIGNvbnRlbnQ6IHN0cmluZztcbiAgICBtb2R1bGU6IHN0cmluZztcbiAgICBwYWdlOiBSZXF1ZXN0RmlsdGVyUnVsZUluaXQ7XG59XG5cbi8vTk9URTogaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8zMTk0XG5leHBvcnQgZGVmYXVsdCBDbGllbnRTY3JpcHRJbml0OyAvKmVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWYqL1xuIl19
|