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,107 +1,191 @@
|
|
|
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 child_process_1 = require("child_process");
|
|
7
|
-
const io_1 = require("./io");
|
|
8
|
-
const test_structure_1 = require("../serialization/test-structure");
|
|
9
|
-
const prepare_options_1 = __importDefault(require("../serialization/prepare-options"));
|
|
10
|
-
const test_run_tracker_1 = __importDefault(require("../../api/test-run-tracker"));
|
|
11
|
-
const proxy_1 = require("../utils/ipc/proxy");
|
|
12
|
-
const transport_1 = require("../utils/ipc/transport");
|
|
13
|
-
const async_event_emitter_1 = __importDefault(require("../../utils/async-event-emitter"));
|
|
14
|
-
const error_list_1 = __importDefault(require("../../errors/error-list"));
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
this.
|
|
25
|
-
this.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
this.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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 child_process_1 = require("child_process");
|
|
7
|
+
const io_1 = require("./io");
|
|
8
|
+
const test_structure_1 = require("../serialization/test-structure");
|
|
9
|
+
const prepare_options_1 = __importDefault(require("../serialization/prepare-options"));
|
|
10
|
+
const test_run_tracker_1 = __importDefault(require("../../api/test-run-tracker"));
|
|
11
|
+
const proxy_1 = require("../utils/ipc/proxy");
|
|
12
|
+
const transport_1 = require("../utils/ipc/transport");
|
|
13
|
+
const async_event_emitter_1 = __importDefault(require("../../utils/async-event-emitter"));
|
|
14
|
+
const error_list_1 = __importDefault(require("../../errors/error-list"));
|
|
15
|
+
const testcafe_hammerhead_1 = require("testcafe-hammerhead");
|
|
16
|
+
const SERVICE_PATH = require.resolve('./service');
|
|
17
|
+
class CompilerHost extends async_event_emitter_1.default {
|
|
18
|
+
constructor() {
|
|
19
|
+
super();
|
|
20
|
+
this.runtime = Promise.resolve(void 0);
|
|
21
|
+
}
|
|
22
|
+
_setupRoutes(proxy) {
|
|
23
|
+
proxy.register([
|
|
24
|
+
this.executeAction,
|
|
25
|
+
this.executeCommand,
|
|
26
|
+
this.ready,
|
|
27
|
+
this.onRequestHookEvent,
|
|
28
|
+
this.setMock,
|
|
29
|
+
this.setConfigureResponseEventOptions,
|
|
30
|
+
this.setHeaderOnConfigureResponseEvent,
|
|
31
|
+
this.removeHeaderOnConfigureResponseEvent,
|
|
32
|
+
this.executeRequestFilterRulePredicate,
|
|
33
|
+
this.executeMockPredicate,
|
|
34
|
+
this.getWarningMessages,
|
|
35
|
+
this.addRequestEventListeners,
|
|
36
|
+
this.removeRequestEventListeners,
|
|
37
|
+
this.initializeTestRunData
|
|
38
|
+
], this);
|
|
39
|
+
}
|
|
40
|
+
async _init(runtime) {
|
|
41
|
+
const resolvedRuntime = await runtime;
|
|
42
|
+
if (resolvedRuntime)
|
|
43
|
+
return resolvedRuntime;
|
|
44
|
+
try {
|
|
45
|
+
const service = child_process_1.spawn(process.argv0, [SERVICE_PATH], { stdio: [0, 1, 2, 'pipe', 'pipe', 'pipe'] });
|
|
46
|
+
// HACK: Node.js definition are not correct when additional I/O channels are sp
|
|
47
|
+
const stdio = service.stdio;
|
|
48
|
+
const proxy = new proxy_1.IPCProxy(new transport_1.HostTransport(stdio[io_1.HOST_INPUT_FD], stdio[io_1.HOST_OUTPUT_FD], stdio[io_1.HOST_SYNC_FD]));
|
|
49
|
+
this._setupRoutes(proxy);
|
|
50
|
+
await this.once('ready');
|
|
51
|
+
return { proxy, service };
|
|
52
|
+
}
|
|
53
|
+
catch (e) {
|
|
54
|
+
return void 0;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async _getRuntime() {
|
|
58
|
+
const runtime = await this.runtime;
|
|
59
|
+
if (!runtime)
|
|
60
|
+
throw new Error('Runtime is not available.');
|
|
61
|
+
return runtime;
|
|
62
|
+
}
|
|
63
|
+
_prepareEventData(eventData) {
|
|
64
|
+
// TODO: Remove eventData._requestContext into 'testcafe-hammerhead' module
|
|
65
|
+
// after switching to the compiler service mode.
|
|
66
|
+
// NOTE: Access to the deprecated property inside of the unserializable 'eventData._requestContext' property
|
|
67
|
+
// causes the node's deprecation warning.
|
|
68
|
+
const clonedEventData = Object.assign({}, eventData);
|
|
69
|
+
// @ts-ignore
|
|
70
|
+
delete clonedEventData._requestContext;
|
|
71
|
+
return clonedEventData;
|
|
72
|
+
}
|
|
73
|
+
async init() {
|
|
74
|
+
this.runtime = this._init(this.runtime);
|
|
75
|
+
await this.runtime;
|
|
76
|
+
}
|
|
77
|
+
async stop() {
|
|
78
|
+
const { service } = await this._getRuntime();
|
|
79
|
+
service.kill();
|
|
80
|
+
}
|
|
81
|
+
_wrapTestFunction(id, functionName) {
|
|
82
|
+
return async (testRun) => {
|
|
83
|
+
try {
|
|
84
|
+
return await this.runTestFn({ id, functionName, testRunId: testRun.id });
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
const errList = new error_list_1.default();
|
|
88
|
+
errList.addError(err);
|
|
89
|
+
throw errList;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
_wrapRequestFilterRulePredicate({ testId, hookId, ruleId }) {
|
|
94
|
+
return async (requestInfo) => {
|
|
95
|
+
return await this.executeRequestFilterRulePredicate({ testId, hookId, ruleId, requestInfo });
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
_wrapMockPredicate({ mock, testId, hookId, ruleId }) {
|
|
99
|
+
mock.body = async (requestInfo, res) => {
|
|
100
|
+
return await this.executeMockPredicate({ testId, hookId, ruleId, requestInfo, res });
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
async ready() {
|
|
104
|
+
this.emit('ready');
|
|
105
|
+
}
|
|
106
|
+
async executeAction(data) {
|
|
107
|
+
const targetTestRun = test_run_tracker_1.default.activeTestRuns[data.id];
|
|
108
|
+
if (!targetTestRun)
|
|
109
|
+
return void 0;
|
|
110
|
+
return targetTestRun.executeAction(data.apiMethodName, data.command, data.callsite);
|
|
111
|
+
}
|
|
112
|
+
executeActionSync() {
|
|
113
|
+
throw new Error('The method should not be called.');
|
|
114
|
+
}
|
|
115
|
+
async executeCommand({ command, id }) {
|
|
116
|
+
const targetTestRun = test_run_tracker_1.default.activeTestRuns[id];
|
|
117
|
+
if (!targetTestRun)
|
|
118
|
+
return void 0;
|
|
119
|
+
return targetTestRun.executeCommand(command);
|
|
120
|
+
}
|
|
121
|
+
async getTests({ sourceList, compilerOptions }) {
|
|
122
|
+
const { proxy } = await this._getRuntime();
|
|
123
|
+
const units = await proxy.call(this.getTests, { sourceList, compilerOptions });
|
|
124
|
+
return test_structure_1.restore(units, (...args) => this._wrapTestFunction(...args), (ruleLocator) => this._wrapRequestFilterRulePredicate(ruleLocator));
|
|
125
|
+
}
|
|
126
|
+
async runTestFn({ id, functionName, testRunId }) {
|
|
127
|
+
const { proxy } = await this._getRuntime();
|
|
128
|
+
return await proxy.call(this.runTestFn, { id, functionName, testRunId });
|
|
129
|
+
}
|
|
130
|
+
async cleanUp() {
|
|
131
|
+
const { proxy } = await this._getRuntime();
|
|
132
|
+
await proxy.call(this.cleanUp);
|
|
133
|
+
}
|
|
134
|
+
async setOptions({ value }) {
|
|
135
|
+
const { proxy } = await this._getRuntime();
|
|
136
|
+
const preparedOptions = prepare_options_1.default(value);
|
|
137
|
+
await proxy.call(this.setOptions, { value: preparedOptions });
|
|
138
|
+
}
|
|
139
|
+
async onRequestHookEvent({ name, testId, hookId, eventData }) {
|
|
140
|
+
const { proxy } = await this._getRuntime();
|
|
141
|
+
await proxy.call(this.onRequestHookEvent, {
|
|
142
|
+
name,
|
|
143
|
+
testId,
|
|
144
|
+
hookId,
|
|
145
|
+
eventData: this._prepareEventData(eventData)
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
async setMock({ testId, hookId, ruleId, responseEventId, mock }) {
|
|
149
|
+
const mockDefinedWithPredicate = mock.isPredicate;
|
|
150
|
+
mock = testcafe_hammerhead_1.ResponseMock.from(mock);
|
|
151
|
+
if (mockDefinedWithPredicate)
|
|
152
|
+
this._wrapMockPredicate({ mock, testId, hookId, ruleId });
|
|
153
|
+
await this.emit('setMock', [responseEventId, mock]);
|
|
154
|
+
}
|
|
155
|
+
async setConfigureResponseEventOptions({ eventId, opts }) {
|
|
156
|
+
await this.emit('setConfigureResponseEventOptions', [eventId, opts]);
|
|
157
|
+
}
|
|
158
|
+
async setHeaderOnConfigureResponseEvent({ eventId, headerName, headerValue }) {
|
|
159
|
+
await this.emit('setHeaderOnConfigureResponseEvent', [eventId, headerName, headerValue]);
|
|
160
|
+
}
|
|
161
|
+
async removeHeaderOnConfigureResponseEvent({ eventId, headerName }) {
|
|
162
|
+
await this.emit('removeHeaderOnConfigureResponseEvent', [eventId, headerName]);
|
|
163
|
+
}
|
|
164
|
+
async executeRequestFilterRulePredicate({ testId, hookId, ruleId, requestInfo }) {
|
|
165
|
+
const { proxy } = await this._getRuntime();
|
|
166
|
+
return await proxy.call(this.executeRequestFilterRulePredicate, { testId, hookId, ruleId, requestInfo });
|
|
167
|
+
}
|
|
168
|
+
async executeMockPredicate({ testId, hookId, ruleId, requestInfo, res }) {
|
|
169
|
+
const { proxy } = await this._getRuntime();
|
|
170
|
+
return await proxy.call(this.executeMockPredicate, { testId, hookId, ruleId, requestInfo, res });
|
|
171
|
+
}
|
|
172
|
+
async getWarningMessages({ testRunId }) {
|
|
173
|
+
const { proxy } = await this._getRuntime();
|
|
174
|
+
return proxy.call(this.getWarningMessages, { testRunId });
|
|
175
|
+
}
|
|
176
|
+
async addRequestEventListeners({ hookId, hookClassName, rules }) {
|
|
177
|
+
rules = testcafe_hammerhead_1.RequestFilterRule.fromArray(rules);
|
|
178
|
+
await this.emit('addRequestEventListeners', { hookId, hookClassName, rules });
|
|
179
|
+
}
|
|
180
|
+
async removeRequestEventListeners({ rules }) {
|
|
181
|
+
rules = testcafe_hammerhead_1.RequestFilterRule.fromArray(rules);
|
|
182
|
+
await this.emit('removeRequestEventListeners', { rules });
|
|
183
|
+
}
|
|
184
|
+
async initializeTestRunData({ testRunId, testId }) {
|
|
185
|
+
const { proxy } = await this._getRuntime();
|
|
186
|
+
return proxy.call(this.initializeTestRunData, { testRunId, testId });
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
exports.default = CompilerHost;
|
|
106
190
|
module.exports = exports.default;
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9jb21waWxlci9ob3N0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaURBQW9EO0FBQ3BELDZCQUljO0FBRWQsb0VBQWtGO0FBQ2xGLHVGQUE4RDtBQUM5RCxrRkFBZ0Y7QUFDaEYsOENBQThDO0FBQzlDLHNEQUF1RDtBQUN2RCwwRkFBMkQ7QUFDM0QseUVBQXdEO0FBY3hELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFXbEQsTUFBcUIsWUFBYSxTQUFRLDZCQUFZO0lBR2xEO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFFUixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU8sWUFBWSxDQUFFLEtBQWU7UUFDakMsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUNYLElBQUksQ0FBQyxhQUFhO1lBQ2xCLElBQUksQ0FBQyxjQUFjO1lBQ25CLElBQUksQ0FBQyxLQUFLO1NBQ2IsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFTyxLQUFLLENBQUMsS0FBSyxDQUFFLE9BQTRDO1FBQzdELE1BQU0sZUFBZSxHQUFHLE1BQU0sT0FBTyxDQUFDO1FBRXRDLElBQUksZUFBZTtZQUNmLE9BQU8sZUFBZSxDQUFDO1FBRTNCLElBQUk7WUFDQSxNQUFNLE9BQU8sR0FBRyxxQkFBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRW5HLCtFQUErRTtZQUMvRSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBWSxD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QUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBRS9FLE9BQU8sd0JBQW9CLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUUsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBb0I7UUFDbkUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTNDLE9BQU8sTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPO1FBQ2hCLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUUzQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVSxDQUFFLEVBQUUsS0FBSyxFQUF1QjtRQUNuRCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFM0MsTUFBTSxlQUFlLEdBQUcseUJBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5QyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Q0FDSjtBQTlIRCwrQkE4SEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzcGF3biwgQ2hpbGRQcm9jZXNzIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQge1xuICAgIEhPU1RfSU5QVVRfRkQsXG4gICAgSE9TVF9PVVRQVVRfRkQsXG4gICAgSE9TVF9TWU5DX0ZEXG59IGZyb20gJy4vaW8nO1xuXG5pbXBvcnQgeyByZXN0b3JlIGFzIHJlc3RvcmVUZXN0U3RydWN0dXJlIH0gZnJvbSAnLi4vc2VyaWFsaXphdGlvbi90ZXN0LXN0cnVjdHVyZSc7XG5pbXBvcnQgcHJlcGFyZU9wdGlvbnMgZnJvbSAnLi4vc2VyaWFsaXphdGlvbi9wcmVwYXJlLW9wdGlvbnMnO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyB0ZXN0UnVuVHJhY2tlciwgVGVzdFJ1biB9IGZyb20gJy4uLy4uL2FwaS90ZXN0LXJ1bi10cmFja2VyJztcbmltcG9ydCB7IElQQ1Byb3h5IH0gZnJvbSAnLi4vdXRpbHMvaXBjL3Byb3h5JztcbmltcG9ydCB7IEhvc3RUcmFuc3BvcnQgfSBmcm9tICcuLi91dGlscy9pcGMvdHJhbnNwb3J0JztcbmltcG9ydCBFdmVudEVtaXR0ZXIgZnJvbSAnLi4vLi4vdXRpbHMvYXN5bmMtZXZlbnQtZW1pdHRlcic7XG5pbXBvcnQgVGVzdENhZmVFcnJvckxpc3QgZnJvbSAnLi4vLi4vZXJyb3JzL2Vycm9yLWxpc3QnO1xuXG5pbXBvcnQge1xuICAgIENvbXBpbGVyUHJvdG9jb2wsXG4gICAgUnVuVGVzdEFyZ3VtZW50cyxcbiAgICBFeGVjdXRlQWN0aW9uQXJndW1lbnRzLFxuICAgIEZ1bmN0aW9uUHJvcGVydGllcyxcbiAgICBTZXRPcHRpb25zQXJndW1lbnRzLFxuICAgIEV4ZWN1dGVDb21tYW5kQXJndW1lbnRzXG59IGZyb20gJy4vcHJvdG9jb2wnO1xuXG5pbXBvcnQgeyBDb21waWxlckFyZ3VtZW50cyB9IGZyb20gJy4uLy4uL2NvbXBpbGVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IFRlc3QgZnJvbSAnLi4vLi4vYXBpL3N0cnVjdHVyZS90ZXN0JztcblxuY29uc3QgU0VSVklDRV9QQVRIID0gcmVxdWlyZS5yZXNvbHZlKCcuL3NlcnZpY2UnKTtcblxuaW50ZXJmYWNlIFJ1bnRpbWVSZXNvdXJjZXMge1xuICAgIHNlcnZpY2U6IENoaWxkUHJvY2VzcztcbiAgICBwcm94eTogSVBDUHJveHk7XG59XG5cbmludGVyZmFjZSBUZXN0RnVuY3Rpb24ge1xuICAgICh0ZXN0UnVuOiBUZXN0UnVuKTogUHJvbWlzZTx1bmtub3duPjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tcGlsZXJIb3N0IGV4dGVuZHMgRXZlbnRFbWl0dGVyIGltcGxlbWVudHMgQ29tcGlsZXJQcm90b2NvbCB7XG4gICAgcHJpdmF0ZSBydW50aW1lOiBQcm9taXNlPFJ1bnRpbWVSZXNvdXJjZXN8dW5kZWZpbmVkPjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy5ydW50aW1lID0gUHJvbWlzZS5yZXNvbHZlKHZvaWQgMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0dXBSb3V0ZXMgKHByb3h5OiBJUENQcm94eSk6IHZvaWQge1xuICAgICAgICBwcm94eS5yZWdpc3RlcihbXG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGVBY3Rpb24sXG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGVDb21tYW5kLFxuICAgICAgICAgICAgdGhpcy5yZWFkeVxuICAgICAgICBdLCB0aGlzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9pbml0IChydW50aW1lOiBQcm9taXNlPFJ1bnRpbWVSZXNvdXJjZXN8dW5kZWZpbmVkPik6IFByb21pc2U8UnVudGltZVJlc291cmNlc3x1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRSdW50aW1lID0gYXdhaXQgcnVudGltZTtcblxuICAgICAgICBpZiAocmVzb2x2ZWRSdW50aW1lKVxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVkUnVudGltZTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qgc2VydmljZSA9IHNwYXduKHByb2Nlc3MuYXJndjAsIFtTRVJWSUNFX1BBVEhdLCB7IHN0ZGlvOiBbMCwgMSwgMiwgJ3BpcGUnLCAncGlwZScsICdwaXBlJ10gfSk7XG5cbiAgICAgICAgICAgIC8vIEhBQ0s6IE5vZGUuanMgZGVmaW5pdGlvbiBhcmUgbm90IGNvcnJlY3Qgd2hlbiBhZGRpdGlvbmFsIEkvTyBjaGFubmVscyBhcmUgc3BcbiAgICAgICAgICAgIGNvbnN0IHN0ZGlvID0gc2VydmljZS5zdGRpbyBhcyBhbnk7XG4gICAgICAgICAgICBjb25zdCBwcm94eSA9IG5ldyBJUENQcm94eShuZXcgSG9zdFRyYW5zcG9ydChzdGRpb1tIT1NUX0lOUFVUX0ZEXSwgc3RkaW9bSE9TVF9PVVRQVVRfRkRdLCBzdGRpb1tIT1NUX1NZTkNfRkRdKSk7XG5cbiAgICAgICAgICAgIHRoaXMuX3NldHVwUm91dGVzKHByb3h5KTtcblxuICAgICAgICAgICAgYXdhaXQgdGhpcy5vbmNlKCdyZWFkeScpO1xuXG4gICAgICAgICAgICByZXR1cm4geyBwcm94eSwgc2VydmljZSB9O1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gdm9pZCAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfZ2V0UnVudGltZSAoKTogUHJvbWlzZTxSdW50aW1lUmVzb3VyY2VzPiB7XG4gICAgICAgIGNvbnN0IHJ1bnRpbWUgPSBhd2FpdCB0aGlzLnJ1bnRpbWU7XG5cbiAgICAgICAgaWYgKCFydW50aW1lKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG5cbiAgICAgICAgcmV0dXJuIHJ1bnRpbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGluaXQgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnJ1bnRpbWUgPSB0aGlzLl9pbml0KHRoaXMucnVudGltZSk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5ydW50aW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzdG9wICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgeyBzZXJ2aWNlIH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgc2VydmljZS5raWxsKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfd3JhcFRlc3RGdW5jdGlvbiAoaWQ6IHN0cmluZywgZnVuY3Rpb25OYW1lOiBGdW5jdGlvblByb3BlcnRpZXMpOiBUZXN0RnVuY3Rpb24ge1xuICAgICAgICByZXR1cm4gYXN5bmMgdGVzdFJ1biA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJ1blRlc3QoeyBpZCwgZnVuY3Rpb25OYW1lLCB0ZXN0UnVuSWQ6IHRlc3RSdW4uaWQgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyTGlzdCA9IG5ldyBUZXN0Q2FmZUVycm9yTGlzdCgpO1xuXG4gICAgICAgICAgICAgICAgZXJyTGlzdC5hZGRFcnJvcihlcnIpO1xuXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyTGlzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVhZHkgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmVtaXQoJ3JlYWR5Jyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGV4ZWN1dGVBY3Rpb24gKGRhdGE6IEV4ZWN1dGVBY3Rpb25Bcmd1bWVudHMpOiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0VGVzdFJ1biA9IHRlc3RSdW5UcmFja2VyLmFjdGl2ZVRlc3RSdW5zW2RhdGEuaWRdO1xuXG4gICAgICAgIGlmICghdGFyZ2V0VGVzdFJ1bilcbiAgICAgICAgICAgIHJldHVybiB2b2lkIDA7XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldFRlc3RSdW4uZXhlY3V0ZUFjdGlvbihkYXRhLmFwaU1ldGhvZE5hbWUsIGRhdGEuY29tbWFuZCwgZGF0YS5jYWxsc2l0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGV4ZWN1dGVDb21tYW5kICh7IGNvbW1hbmQsIGlkIH06IEV4ZWN1dGVDb21tYW5kQXJndW1lbnRzKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIGNvbnN0IHRhcmdldFRlc3RSdW4gPSB0ZXN0UnVuVHJhY2tlci5hY3RpdmVUZXN0UnVuc1tpZF07XG5cbiAgICAgICAgaWYgKCF0YXJnZXRUZXN0UnVuKVxuICAgICAgICAgICAgcmV0dXJuIHZvaWQgMDtcblxuICAgICAgICByZXR1cm4gdGFyZ2V0VGVzdFJ1bi5leGVjdXRlQ29tbWFuZChjb21tYW5kKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0VGVzdHMgKHsgc291cmNlTGlzdCwgY29tcGlsZXJPcHRpb25zIH06IENvbXBpbGVyQXJndW1lbnRzKTogUHJvbWlzZTxUZXN0W10+IHtcbiAgICAgICAgY29uc3QgeyBwcm94eSB9ID0gYXdhaXQgdGhpcy5fZ2V0UnVudGltZSgpO1xuXG4gICAgICAgIGNvbnN0IHVuaXRzID0gYXdhaXQgcHJveHkuY2FsbCh0aGlzLmdldFRlc3RzLCB7IHNvdXJjZUxpc3QsIGNvbXBpbGVyT3B0aW9ucyB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdG9yZVRlc3RTdHJ1Y3R1cmUodW5pdHMsICguLi5hcmdzKSA9PiB0aGlzLl93cmFwVGVzdEZ1bmN0aW9uKC4uLmFyZ3MpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcnVuVGVzdCAoeyBpZCwgZnVuY3Rpb25OYW1lLCB0ZXN0UnVuSWQgfTogUnVuVGVzdEFyZ3VtZW50cyk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHByb3h5LmNhbGwodGhpcy5ydW5UZXN0LCB7IGlkLCBmdW5jdGlvbk5hbWUsIHRlc3RSdW5JZCB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2xlYW5VcCAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHsgcHJveHkgfSA9IGF3YWl0IHRoaXMuX2dldFJ1bnRpbWUoKTtcblxuICAgICAgICBhd2FpdCBwcm94eS5jYWxsKHRoaXMuY2xlYW5VcCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldE9wdGlvbnMgKHsgdmFsdWUgfTogU2V0T3B0aW9uc0FyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgY29uc3QgcHJlcGFyZWRPcHRpb25zID0gcHJlcGFyZU9wdGlvbnModmFsdWUpO1xuXG4gICAgICAgIGF3YWl0IHByb3h5LmNhbGwodGhpcy5zZXRPcHRpb25zLCB7IHZhbHVlOiBwcmVwYXJlZE9wdGlvbnMgfSk7XG4gICAgfVxufVxuIl19
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9jb21waWxlci9ob3N0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaURBQW9EO0FBQ3BELDZCQUljO0FBRWQsb0VBQWtGO0FBQ2xGLHVGQUE4RDtBQUM5RCxrRkFBZ0Y7QUFDaEYsOENBQThDO0FBQzlDLHNEQUF1RDtBQUN2RCwwRkFBZ0U7QUFDaEUseUVBQXdEO0FBeUJ4RCw2REFRNkI7QUFFN0IsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQW1CbEQsTUFBcUIsWUFBYSxTQUFRLDZCQUFpQjtJQUd2RDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBRVIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVPLFlBQVksQ0FBRSxLQUFlO1FBQ2pDLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDWCxJQUFJLENBQUMsYUFBYTtZQUNsQixJQUFJLENBQUMsY0FBYztZQUNuQixJQUFJLENBQUMsS0FBSztZQUNWLElBQUksQ0FBQyxrQkFBa0I7WUFDdkIsSUFBSSxDQUFDLE9BQU87WUFDWixJQUFJLENBQUMsZ0NBQWdDO1lBQ3JDLElBQUksQ0FBQyxpQ0FBaUM7WUFDdEMsSUFBSSxDQUFDLG9DQUFvQztZQUN6QyxJQUFJLENBQUMsaUNBQWlDO1lBQ3RDLElBQUksQ0FBQyxvQkFBb0I7WUFDekIsSUFBSSxDQUFDLGtCQUFrQjtZQUN2QixJQUFJLENBQUMsd0JBQXdCO1lBQzdCLElBQUksQ0FBQywyQkFBMkI7WUFDaEMsSUFBSSxDQUFDLHFCQUFxQjtTQUM3QixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVPLEtBQUssQ0FBQyxLQUFLLENBQUUsT0FBNEM7UUFDN0QsTUFBTSxlQUFlLEdBQUcsTUFBTSxPQUFPLENB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LEVBQUUsQ0FBQztRQUUzQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU0sS0FBSyxDQUFDLHdCQUF3QixDQUFHLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQXFDO1FBQ3ZHLEtBQUssR0FBRyx1Q0FBaUIsQ0FBQyxTQUFTLENBQUMsS0FBaUIsQ0FBQyxDQUFDO1FBRXZELE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRU0sS0FBSyxDQUFDLDJCQUEyQixDQUFFLEVBQUUsS0FBSyxFQUF3QztRQUNyRixLQUFLLEdBQUcsdUNBQWlCLENBQUMsU0FBUyxDQUFDLEtBQWlCLENBQUMsQ0FBQztRQUV2RCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTSxLQUFLLENBQUMscUJBQXFCLENBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFrQztRQUNyRixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFM0MsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Q0FDSjtBQWxQRCwrQkFrUEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzcGF3biwgQ2hpbGRQcm9jZXNzIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQge1xuICAgIEhPU1RfSU5QVVRfRkQsXG4gICAgSE9TVF9PVVRQVVRfRkQsXG4gICAgSE9TVF9TWU5DX0ZEXG59IGZyb20gJy4vaW8nO1xuXG5pbXBvcnQgeyByZXN0b3JlIGFzIHJlc3RvcmVUZXN0U3RydWN0dXJlIH0gZnJvbSAnLi4vc2VyaWFsaXphdGlvbi90ZXN0LXN0cnVjdHVyZSc7XG5pbXBvcnQgcHJlcGFyZU9wdGlvbnMgZnJvbSAnLi4vc2VyaWFsaXphdGlvbi9wcmVwYXJlLW9wdGlvbnMnO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyB0ZXN0UnVuVHJhY2tlciwgVGVzdFJ1biB9IGZyb20gJy4uLy4uL2FwaS90ZXN0LXJ1bi10cmFja2VyJztcbmltcG9ydCB7IElQQ1Byb3h5IH0gZnJvbSAnLi4vdXRpbHMvaXBjL3Byb3h5JztcbmltcG9ydCB7IEhvc3RUcmFuc3BvcnQgfSBmcm9tICcuLi91dGlscy9pcGMvdHJhbnNwb3J0JztcbmltcG9ydCBBc3luY0V2ZW50RW1pdHRlciBmcm9tICcuLi8uLi91dGlscy9hc3luYy1ldmVudC1lbWl0dGVyJztcbmltcG9ydCBUZXN0Q2FmZUVycm9yTGlzdCBmcm9tICcuLi8uLi9lcnJvcnMvZXJyb3ItbGlzdCc7XG5cbmltcG9ydCB7XG4gICAgQ29tcGlsZXJQcm90b2NvbCxcbiAgICBSdW5UZXN0QXJndW1lbnRzLFxuICAgIEV4ZWN1dGVBY3Rpb25Bcmd1bWVudHMsXG4gICAgRnVuY3Rpb25Qcm9wZXJ0aWVzLFxuICAgIFNldE9wdGlvbnNBcmd1bWVudHMsXG4gICAgRXhlY3V0ZUNvbW1hbmRBcmd1bWVudHMsXG4gICAgUmVxdWVzdEhvb2tFdmVudEFyZ3VtZW50cyxcbiAgICBTZXRNb2NrQXJndW1lbnRzLFxuICAgIFNldENvbmZpZ3VyZVJlc3BvbnNlRXZlbnRPcHRpb25zQXJndW1lbnRzLFxuICAgIFNldEhlYWRlck9uQ29uZmlndXJlUmVzcG9uc2VFdmVudEFyZ3VtZW50cyxcbiAgICBSZW1vdmVIZWFkZXJPbkNvbmZpZ3VyZVJlc3BvbnNlRXZlbnRBcmd1bWVudHMsXG4gICAgRXhlY3V0ZVJlcXVlc3RGaWx0ZXJSdWxlUHJlZGljYXRlQXJndW1lbnRzLFxuICAgIFJlcXVlc3RGaWx0ZXJSdWxlTG9jYXRvcixcbiAgICBFeGVjdXRlTW9ja1ByZWRpY2F0ZSxcbiAgICBHZXRXYXJuaW5nTWVzc2FnZXNBcmd1bWVudHMsXG4gICAgQWRkUmVxdWVzdEV2ZW50TGlzdGVuZXJzQXJndW1lbnRzLFxuICAgIFJlbW92ZVJlcXVlc3RFdmVudExpc3RlbmVyc0FyZ3VtZW50cyxcbiAgICBJbml0aWFsaXplVGVzdFJ1bkRhdGFBcmd1bWVudHNcbn0gZnJvbSAnLi9wcm90b2NvbCc7XG5cbmltcG9ydCB7IENvbXBpbGVyQXJndW1lbnRzIH0gZnJvbSAnLi4vLi4vY29tcGlsZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgVGVzdCBmcm9tICcuLi8uLi9hcGkvc3RydWN0dXJlL3Rlc3QnO1xuaW1wb3J0IHtcbiAgICBSZXF1ZXN0SW5mbyxcbiAgICBSZXNwb25zZU1vY2ssXG4gICAgSW5jb21pbmdNZXNzYWdlTGlrZUluaXRPcHRpb25zLFxuICAgIFJlcXVlc3RFdmVudCxcbiAgICBDb25maWd1cmVSZXNwb25zZUV2ZW50LFxuICAgIFJlc3BvbnNlRXZlbnQsXG4gICAgUmVxdWVzdEZpbHRlclJ1bGVcbn0gZnJvbSAndGVzdGNhZmUtaGFtbWVyaGVhZCc7XG5cbmNvbnN0IFNFUlZJQ0VfUEFUSCA9IHJlcXVpcmUucmVzb2x2ZSgnLi9zZXJ2aWNlJyk7XG5cbmludGVyZmFjZSBSdW50aW1lUmVzb3VyY2VzIHtcbiAgICBzZXJ2aWNlOiBDaGlsZFByb2Nlc3M7XG4gICAgcHJveHk6IElQQ1Byb3h5O1xufVxuXG5pbnRlcmZhY2UgVGVzdEZ1bmN0aW9uIHtcbiAgICAodGVzdFJ1bjogVGVzdFJ1bik6IFByb21pc2U8dW5rbm93bj47XG59XG5cbmludGVyZmFjZSBSZXF1ZXN0RmlsdGVyUnVsZVByZWRpY2F0ZSB7XG4gICAgKHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IFByb21pc2U8Ym9vbGVhbj47XG59XG5cbmludGVyZmFjZSBXcmFwTW9ja1ByZWRpY2F0ZUFyZ3VtZW50cyBleHRlbmRzIFJlcXVlc3RGaWx0ZXJSdWxlTG9jYXRvciB7XG4gICAgbW9jazogUmVzcG9uc2VNb2NrO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb21waWxlckhvc3QgZXh0ZW5kcyBBc3luY0V2ZW50RW1pdHRlciBpbXBsZW1lbnRzIENvbXBpbGVyUHJvdG9jb2wge1xuICAgIHByaXZhdGUgcnVudGltZTogUHJvbWlzZTxSdW50aW1lUmVzb3VyY2VzfHVuZGVmaW5lZD47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKCkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMucnVudGltZSA9IFByb21pc2UucmVzb2x2ZSh2b2lkIDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldHVwUm91dGVzIChwcm94eTogSVBDUHJveHkpOiB2b2lkIHtcbiAgICAgICAgcHJveHkucmVnaXN0ZXIoW1xuICAgICAgICAgICAgdGhpcy5leGVjdXRlQWN0aW9uLFxuICAgICAgICAgICAgdGhpcy5leGVjdXRlQ29tbWFuZCxcbiAgICAgICAgICAgIHRoaXMucmVhZHksXG4gICAgICAgICAgICB0aGlzLm9uUmVxdWVzdEhvb2tFdmVudCxcbiAgICAgICAgICAgIHRoaXMuc2V0TW9jayxcbiAgICAgICAgICAgIHRoaXMuc2V0Q29uZmlndXJlUmVzcG9uc2VFdmVudE9wdGlvbnMsXG4gICAgICAgICAgICB0aGlzLnNldEhlYWRlck9uQ29uZmlndXJlUmVzcG9uc2VFdmVudCxcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlSGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50LFxuICAgICAgICAgICAgdGhpcy5leGVjdXRlUmVxdWVzdEZpbHRlclJ1bGVQcmVkaWNhdGUsXG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGVNb2NrUHJlZGljYXRlLFxuICAgICAgICAgICAgdGhpcy5nZXRXYXJuaW5nTWVzc2FnZXMsXG4gICAgICAgICAgICB0aGlzLmFkZFJlcXVlc3RFdmVudExpc3RlbmVycyxcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWVzdEV2ZW50TGlzdGVuZXJzLFxuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplVGVzdFJ1bkRhdGFcbiAgICAgICAgXSwgdGhpcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfaW5pdCAocnVudGltZTogUHJvbWlzZTxSdW50aW1lUmVzb3VyY2VzfHVuZGVmaW5lZD4pOiBQcm9taXNlPFJ1bnRpbWVSZXNvdXJjZXN8dW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkUnVudGltZSA9IGF3YWl0IHJ1bnRpbWU7XG5cbiAgICAgICAgaWYgKHJlc29sdmVkUnVudGltZSlcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlZFJ1bnRpbWU7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHNlcnZpY2UgPSBzcGF3bihwcm9jZXNzLmFyZ3YwLCBbU0VSVklDRV9QQVRIXSwgeyBzdGRpbzogWzAsIDEsIDIsICdwaXBlJywgJ3BpcGUnLCAncGlwZSddIH0pO1xuXG4gICAgICAgICAgICAvLyBIQUNLOiBOb2RlLmpzIGRlZmluaXRpb24gYXJlIG5vdCBjb3JyZWN0IHdoZW4gYWRkaXRpb25hbCBJL08gY2hhbm5lbHMgYXJlIHNwXG4gICAgICAgICAgICBjb25zdCBzdGRpbyA9IHNlcnZpY2Uuc3RkaW8gYXMgYW55O1xuICAgICAgICAgICAgY29uc3QgcHJveHkgPSBuZXcgSVBDUHJveHkobmV3IEhvc3RUcmFuc3BvcnQoc3RkaW9bSE9TVF9JTlBVVF9GRF0sIHN0ZGlvW0hPU1RfT1VUUFVUX0ZEXSwgc3RkaW9bSE9TVF9TWU5DX0ZEXSkpO1xuXG4gICAgICAgICAgICB0aGlzLl9zZXR1cFJvdXRlcyhwcm94eSk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMub25jZSgncmVhZHknKTtcblxuICAgICAgICAgICAgcmV0dXJuIHsgcHJveHksIHNlcnZpY2UgfTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2dldFJ1bnRpbWUgKCk6IFByb21pc2U8UnVudGltZVJlc291cmNlcz4ge1xuICAgICAgICBjb25zdCBydW50aW1lID0gYXdhaXQgdGhpcy5ydW50aW1lO1xuXG4gICAgICAgIGlmICghcnVudGltZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUnVudGltZSBpcyBub3QgYXZhaWxhYmxlLicpO1xuXG4gICAgICAgIHJldHVybiBydW50aW1lO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ByZXBhcmVFdmVudERhdGEgKGV2ZW50RGF0YTogUmVxdWVzdEV2ZW50IHwgQ29uZmlndXJlUmVzcG9uc2VFdmVudCB8IFJlc3BvbnNlRXZlbnQpOiBSZXF1ZXN0RXZlbnQgfCBDb25maWd1cmVSZXNwb25zZUV2ZW50IHwgUmVzcG9uc2VFdmVudCB7XG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBldmVudERhdGEuX3JlcXVlc3RDb250ZXh0IGludG8gJ3Rlc3RjYWZlLWhhbW1lcmhlYWQnIG1vZHVsZVxuICAgICAgICAvLyBhZnRlciBzd2l0Y2hpbmcgdG8gdGhlIGNvbXBpbGVyIHNlcnZpY2UgbW9kZS5cblxuICAgICAgICAvLyBOT1RFOiBBY2Nlc3MgdG8gdGhlIGRlcHJlY2F0ZWQgcHJvcGVydHkgaW5zaWRlIG9mIHRoZSB1bnNlcmlhbGl6YWJsZSAnZXZlbnREYXRhLl9yZXF1ZXN0Q29udGV4dCcgcHJvcGVydHlcbiAgICAgICAgLy8gY2F1c2VzIHRoZSBub2RlJ3MgZGVwcmVjYXRpb24gd2FybmluZy5cblxuICAgICAgICBjb25zdCBjbG9uZWRFdmVudERhdGEgPSBPYmplY3QuYXNzaWduKHt9LCBldmVudERhdGEpO1xuXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZGVsZXRlIGNsb25lZEV2ZW50RGF0YS5fcmVxdWVzdENvbnRleHQ7XG5cbiAgICAgICAgcmV0dXJuIGNsb25lZEV2ZW50RGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW5pdCAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMucnVudGltZSA9IHRoaXMuX2luaXQodGhpcy5ydW50aW1lKTtcblxuICAgICAgICBhd2FpdCB0aGlzLnJ1bnRpbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHN0b3AgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IHNlcnZpY2UgfSA9IGF3YWl0IHRoaXMuX2dldFJ1bnRpbWUoKTtcblxuICAgICAgICBzZXJ2aWNlLmtpbGwoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF93cmFwVGVzdEZ1bmN0aW9uIChpZDogc3RyaW5nLCBmdW5jdGlvbk5hbWU6IEZ1bmN0aW9uUHJvcGVydGllcyk6IFRlc3RGdW5jdGlvbiB7XG4gICAgICAgIHJldHVybiBhc3luYyB0ZXN0UnVuID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucnVuVGVzdEZuKHsgaWQsIGZ1bmN0aW9uTmFtZSwgdGVzdFJ1bklkOiB0ZXN0UnVuLmlkIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVyckxpc3QgPSBuZXcgVGVzdENhZmVFcnJvckxpc3QoKTtcblxuICAgICAgICAgICAgICAgIGVyckxpc3QuYWRkRXJyb3IoZXJyKTtcblxuICAgICAgICAgICAgICAgIHRocm93IGVyckxpc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfd3JhcFJlcXVlc3RGaWx0ZXJSdWxlUHJlZGljYXRlICh7IHRlc3RJZCwgaG9va0lkLCBydWxlSWQgfTogUmVxdWVzdEZpbHRlclJ1bGVMb2NhdG9yKTogUmVxdWVzdEZpbHRlclJ1bGVQcmVkaWNhdGUge1xuICAgICAgICByZXR1cm4gYXN5bmMgKHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZVJlcXVlc3RGaWx0ZXJSdWxlUHJlZGljYXRlKHsgdGVzdElkLCBob29rSWQsIHJ1bGVJZCwgcmVxdWVzdEluZm8gfSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfd3JhcE1vY2tQcmVkaWNhdGUgKHsgbW9jaywgdGVzdElkLCBob29rSWQsIHJ1bGVJZCB9OiBXcmFwTW9ja1ByZWRpY2F0ZUFyZ3VtZW50cyk6IHZvaWQge1xuICAgICAgICBtb2NrLmJvZHkgPSBhc3luYyAocmVxdWVzdEluZm86IFJlcXVlc3RJbmZvLCByZXM6IEluY29taW5nTWVzc2FnZUxpa2VJbml0T3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZU1vY2tQcmVkaWNhdGUoeyB0ZXN0SWQsIGhvb2tJZCwgcnVsZUlkLCByZXF1ZXN0SW5mbywgcmVzIH0pO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZWFkeSAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuZW1pdCgncmVhZHknKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhlY3V0ZUFjdGlvbiAoZGF0YTogRXhlY3V0ZUFjdGlvbkFyZ3VtZW50cyk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBjb25zdCB0YXJnZXRUZXN0UnVuID0gdGVzdFJ1blRyYWNrZXIuYWN0aXZlVGVzdFJ1bnNbZGF0YS5pZF07XG5cbiAgICAgICAgaWYgKCF0YXJnZXRUZXN0UnVuKVxuICAgICAgICAgICAgcmV0dXJuIHZvaWQgMDtcblxuICAgICAgICByZXR1cm4gdGFyZ2V0VGVzdFJ1bi5leGVjdXRlQWN0aW9uKGRhdGEuYXBpTWV0aG9kTmFtZSwgZGF0YS5jb21tYW5kLCBkYXRhLmNhbGxzaXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXhlY3V0ZUFjdGlvblN5bmMgKCk6IG5ldmVyIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgbWV0aG9kIHNob3VsZCBub3QgYmUgY2FsbGVkLicpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlQ29tbWFuZCAoeyBjb21tYW5kLCBpZCB9OiBFeGVjdXRlQ29tbWFuZEFyZ3VtZW50cyk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBjb25zdCB0YXJnZXRUZXN0UnVuID0gdGVzdFJ1blRyYWNrZXIuYWN0aXZlVGVzdFJ1bnNbaWRdO1xuXG4gICAgICAgIGlmICghdGFyZ2V0VGVzdFJ1bilcbiAgICAgICAgICAgIHJldHVybiB2b2lkIDA7XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldFRlc3RSdW4uZXhlY3V0ZUNvbW1hbmQoY29tbWFuZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFRlc3RzICh7IHNvdXJjZUxpc3QsIGNvbXBpbGVyT3B0aW9ucyB9OiBDb21waWxlckFyZ3VtZW50cyk6IFByb21pc2U8VGVzdFtdPiB7XG4gICAgICAgIGNvbnN0IHsgcHJveHkgfSA9IGF3YWl0IHRoaXMuX2dldFJ1bnRpbWUoKTtcblxuICAgICAgICBjb25zdCB1bml0cyA9IGF3YWl0IHByb3h5LmNhbGwodGhpcy5nZXRUZXN0cywgeyBzb3VyY2VMaXN0LCBjb21waWxlck9wdGlvbnMgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3RvcmVUZXN0U3RydWN0dXJlKFxuICAgICAgICAgICAgdW5pdHMsXG4gICAgICAgICAgICAoLi4uYXJncykgPT4gdGhpcy5fd3JhcFRlc3RGdW5jdGlvbiguLi5hcmdzKSxcbiAgICAgICAgICAgIChydWxlTG9jYXRvcjogUmVxdWVzdEZpbHRlclJ1bGVMb2NhdG9yKSA9PiB0aGlzLl93cmFwUmVxdWVzdEZpbHRlclJ1bGVQcmVkaWNhdGUocnVsZUxvY2F0b3IpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJ1blRlc3RGbiAoeyBpZCwgZnVuY3Rpb25OYW1lLCB0ZXN0UnVuSWQgfTogUnVuVGVzdEFyZ3VtZW50cyk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHByb3h5LmNhbGwodGhpcy5ydW5UZXN0Rm4sIHsgaWQsIGZ1bmN0aW9uTmFtZSwgdGVzdFJ1bklkIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjbGVhblVwICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgeyBwcm94eSB9ID0gYXdhaXQgdGhpcy5fZ2V0UnVudGltZSgpO1xuXG4gICAgICAgIGF3YWl0IHByb3h5LmNhbGwodGhpcy5jbGVhblVwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0T3B0aW9ucyAoeyB2YWx1ZSB9OiBTZXRPcHRpb25zQXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHsgcHJveHkgfSA9IGF3YWl0IHRoaXMuX2dldFJ1bnRpbWUoKTtcblxuICAgICAgICBjb25zdCBwcmVwYXJlZE9wdGlvbnMgPSBwcmVwYXJlT3B0aW9ucyh2YWx1ZSk7XG5cbiAgICAgICAgYXdhaXQgcHJveHkuY2FsbCh0aGlzLnNldE9wdGlvbnMsIHsgdmFsdWU6IHByZXBhcmVkT3B0aW9ucyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgb25SZXF1ZXN0SG9va0V2ZW50ICh7IG5hbWUsIHRlc3RJZCwgaG9va0lkLCBldmVudERhdGEgfTogUmVxdWVzdEhvb2tFdmVudEFyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgYXdhaXQgcHJveHkuY2FsbCh0aGlzLm9uUmVxdWVzdEhvb2tFdmVudCwge1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIHRlc3RJZCxcbiAgICAgICAgICAgIGhvb2tJZCxcbiAgICAgICAgICAgIGV2ZW50RGF0YTogdGhpcy5fcHJlcGFyZUV2ZW50RGF0YShldmVudERhdGEpXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRNb2NrICh7IHRlc3RJZCwgaG9va0lkLCBydWxlSWQsIHJlc3BvbnNlRXZlbnRJZCwgbW9jayB9OiBTZXRNb2NrQXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IG1vY2tEZWZpbmVkV2l0aFByZWRpY2F0ZSA9IG1vY2suaXNQcmVkaWNhdGU7XG5cbiAgICAgICAgbW9jayA9IFJlc3BvbnNlTW9jay5mcm9tKG1vY2spO1xuXG4gICAgICAgIGlmIChtb2NrRGVmaW5lZFdpdGhQcmVkaWNhdGUpXG4gICAgICAgICAgICB0aGlzLl93cmFwTW9ja1ByZWRpY2F0ZSh7IG1vY2ssIHRlc3RJZCwgaG9va0lkLCBydWxlSWQgfSk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCdzZXRNb2NrJywgW3Jlc3BvbnNlRXZlbnRJZCwgbW9ja10pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRDb25maWd1cmVSZXNwb25zZUV2ZW50T3B0aW9ucyAoeyBldmVudElkLCBvcHRzIH06IFNldENvbmZpZ3VyZVJlc3BvbnNlRXZlbnRPcHRpb25zQXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuZW1pdCgnc2V0Q29uZmlndXJlUmVzcG9uc2VFdmVudE9wdGlvbnMnLCBbZXZlbnRJZCwgb3B0c10pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRIZWFkZXJPbkNvbmZpZ3VyZVJlc3BvbnNlRXZlbnQgKHsgZXZlbnRJZCwgaGVhZGVyTmFtZSwgaGVhZGVyVmFsdWUgfTogU2V0SGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50QXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuZW1pdCgnc2V0SGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50JywgW2V2ZW50SWQsIGhlYWRlck5hbWUsIGhlYWRlclZhbHVlXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlbW92ZUhlYWRlck9uQ29uZmlndXJlUmVzcG9uc2VFdmVudCAoeyBldmVudElkLCBoZWFkZXJOYW1lIH06IFJlbW92ZUhlYWRlck9uQ29uZmlndXJlUmVzcG9uc2VFdmVudEFyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmVtaXQoJ3JlbW92ZUhlYWRlck9uQ29uZmlndXJlUmVzcG9uc2VFdmVudCcsIFtldmVudElkLCBoZWFkZXJOYW1lXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGV4ZWN1dGVSZXF1ZXN0RmlsdGVyUnVsZVByZWRpY2F0ZSAoeyB0ZXN0SWQsIGhvb2tJZCwgcnVsZUlkLCByZXF1ZXN0SW5mbyB9OiBFeGVjdXRlUmVxdWVzdEZpbHRlclJ1bGVQcmVkaWNhdGVBcmd1bWVudHMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgeyBwcm94eSB9ID0gYXdhaXQgdGhpcy5fZ2V0UnVudGltZSgpO1xuXG4gICAgICAgIHJldHVybiBhd2FpdCBwcm94eS5jYWxsKHRoaXMuZXhlY3V0ZVJlcXVlc3RGaWx0ZXJSdWxlUHJlZGljYXRlLCB7IHRlc3RJZCwgaG9va0lkLCBydWxlSWQsIHJlcXVlc3RJbmZvIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlTW9ja1ByZWRpY2F0ZSAoeyB0ZXN0SWQsIGhvb2tJZCwgcnVsZUlkLCByZXF1ZXN0SW5mbywgcmVzIH06IEV4ZWN1dGVNb2NrUHJlZGljYXRlKTogUHJvbWlzZTxJbmNvbWluZ01lc3NhZ2VMaWtlSW5pdE9wdGlvbnM+IHtcbiAgICAgICAgY29uc3QgeyBwcm94eSB9ID0gYXdhaXQgdGhpcy5fZ2V0UnVudGltZSgpO1xuXG4gICAgICAgIHJldHVybiBhd2FpdCBwcm94eS5jYWxsKHRoaXMuZXhlY3V0ZU1vY2tQcmVkaWNhdGUsIHsgdGVzdElkLCBob29rSWQsIHJ1bGVJZCwgcmVxdWVzdEluZm8sIHJlcyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0V2FybmluZ01lc3NhZ2VzICh7IHRlc3RSdW5JZCB9OiBHZXRXYXJuaW5nTWVzc2FnZXNBcmd1bWVudHMpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IHsgcHJveHkgfSA9IGF3YWl0IHRoaXMuX2dldFJ1bnRpbWUoKTtcblxuICAgICAgICByZXR1cm4gcHJveHkuY2FsbCh0aGlzLmdldFdhcm5pbmdNZXNzYWdlcywgeyB0ZXN0UnVuSWQgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGFkZFJlcXVlc3RFdmVudExpc3RlbmVycyAoIHsgaG9va0lkLCBob29rQ2xhc3NOYW1lLCBydWxlcyB9OiBBZGRSZXF1ZXN0RXZlbnRMaXN0ZW5lcnNBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcnVsZXMgPSBSZXF1ZXN0RmlsdGVyUnVsZS5mcm9tQXJyYXkocnVsZXMgYXMgb2JqZWN0W10pO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuZW1pdCgnYWRkUmVxdWVzdEV2ZW50TGlzdGVuZXJzJywgeyBob29rSWQsIGhvb2tDbGFzc05hbWUsIHJ1bGVzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZW1vdmVSZXF1ZXN0RXZlbnRMaXN0ZW5lcnMgKHsgcnVsZXMgfTogUmVtb3ZlUmVxdWVzdEV2ZW50TGlzdGVuZXJzQXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJ1bGVzID0gUmVxdWVzdEZpbHRlclJ1bGUuZnJvbUFycmF5KHJ1bGVzIGFzIG9iamVjdFtdKTtcblxuICAgICAgICBhd2FpdCB0aGlzLmVtaXQoJ3JlbW92ZVJlcXVlc3RFdmVudExpc3RlbmVycycsIHsgcnVsZXMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGluaXRpYWxpemVUZXN0UnVuRGF0YSAoeyB0ZXN0UnVuSWQsIHRlc3RJZCB9OiBJbml0aWFsaXplVGVzdFJ1bkRhdGFBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgeyBwcm94eSB9ID0gYXdhaXQgdGhpcy5fZ2V0UnVudGltZSgpO1xuXG4gICAgICAgIHJldHVybiBwcm94eS5jYWxsKHRoaXMuaW5pdGlhbGl6ZVRlc3RSdW5EYXRhLCB7IHRlc3RSdW5JZCwgdGVzdElkIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HOST_SYNC_FD = exports.HOST_OUTPUT_FD = exports.HOST_INPUT_FD = exports.SERVICE_SYNC_FD = exports.SERVICE_OUTPUT_FD = exports.SERVICE_INPUT_FD = void 0;
|
|
4
|
-
exports.SERVICE_INPUT_FD = 3;
|
|
5
|
-
exports.SERVICE_OUTPUT_FD = 4;
|
|
6
|
-
exports.SERVICE_SYNC_FD = 5;
|
|
7
|
-
exports.HOST_INPUT_FD = exports.SERVICE_OUTPUT_FD;
|
|
8
|
-
exports.HOST_OUTPUT_FD = exports.SERVICE_INPUT_FD;
|
|
9
|
-
exports.HOST_SYNC_FD = exports.SERVICE_SYNC_FD;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HOST_SYNC_FD = exports.HOST_OUTPUT_FD = exports.HOST_INPUT_FD = exports.SERVICE_SYNC_FD = exports.SERVICE_OUTPUT_FD = exports.SERVICE_INPUT_FD = void 0;
|
|
4
|
+
exports.SERVICE_INPUT_FD = 3;
|
|
5
|
+
exports.SERVICE_OUTPUT_FD = 4;
|
|
6
|
+
exports.SERVICE_SYNC_FD = 5;
|
|
7
|
+
exports.HOST_INPUT_FD = exports.SERVICE_OUTPUT_FD;
|
|
8
|
+
exports.HOST_OUTPUT_FD = exports.SERVICE_INPUT_FD;
|
|
9
|
+
exports.HOST_SYNC_FD = exports.SERVICE_SYNC_FD;
|
|
10
10
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvY29tcGlsZXIvaW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxnQkFBZ0IsR0FBSSxDQUFDLENBQUM7QUFDdEIsUUFBQSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7QUFDdEIsUUFBQSxlQUFlLEdBQUssQ0FBQyxDQUFDO0FBQ3RCLFFBQUEsYUFBYSxHQUFPLHlCQUFpQixDQUFDO0FBQ3RDLFFBQUEsY0FBYyxHQUFNLHdCQUFnQixDQUFDO0FBQ3JDLFFBQUEsWUFBWSxHQUFRLHVCQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgU0VSVklDRV9JTlBVVF9GRCAgPSAzO1xuZXhwb3J0IGNvbnN0IFNFUlZJQ0VfT1VUUFVUX0ZEID0gNDtcbmV4cG9ydCBjb25zdCBTRVJWSUNFX1NZTkNfRkQgICA9IDU7XG5leHBvcnQgY29uc3QgSE9TVF9JTlBVVF9GRCAgICAgPSBTRVJWSUNFX09VVFBVVF9GRDtcbmV4cG9ydCBjb25zdCBIT1NUX09VVFBVVF9GRCAgICA9IFNFUlZJQ0VfSU5QVVRfRkQ7XG5leHBvcnQgY29uc3QgSE9TVF9TWU5DX0ZEICAgICAgPSBTRVJWSUNFX1NZTkNfRkQ7XG4iXX0=
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isFixtureFunctionProperty = exports.isTestFunctionProperty = exports.FUNCTION_PROPERTIES = exports.TEST_FUNCTION_PROPERTIES = exports.BEFORE_AFTER_EACH_PROPERTIES = exports.BEFORE_AFTER_PROPERTIES = void 0;
|
|
4
|
-
exports.BEFORE_AFTER_PROPERTIES = ['beforeFn', 'afterFn'];
|
|
5
|
-
exports.BEFORE_AFTER_EACH_PROPERTIES = ['beforeEachFn', 'afterEachFn'];
|
|
6
|
-
exports.TEST_FUNCTION_PROPERTIES = ['fn', ...exports.BEFORE_AFTER_PROPERTIES];
|
|
7
|
-
exports.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isFixtureFunctionProperty = exports.isTestFunctionProperty = exports.FUNCTION_PROPERTIES = exports.FIXTURE_FUNCTION_PROPERTIES = exports.TEST_FUNCTION_PROPERTIES = exports.BEFORE_AFTER_EACH_PROPERTIES = exports.BEFORE_AFTER_PROPERTIES = void 0;
|
|
4
|
+
exports.BEFORE_AFTER_PROPERTIES = ['beforeFn', 'afterFn'];
|
|
5
|
+
exports.BEFORE_AFTER_EACH_PROPERTIES = ['beforeEachFn', 'afterEachFn'];
|
|
6
|
+
exports.TEST_FUNCTION_PROPERTIES = ['fn', ...exports.BEFORE_AFTER_PROPERTIES];
|
|
7
|
+
exports.FIXTURE_FUNCTION_PROPERTIES = [...exports.BEFORE_AFTER_PROPERTIES, ...exports.BEFORE_AFTER_EACH_PROPERTIES];
|
|
8
|
+
exports.FUNCTION_PROPERTIES = [...exports.TEST_FUNCTION_PROPERTIES, ...exports.BEFORE_AFTER_EACH_PROPERTIES];
|
|
9
|
+
function isTestFunctionProperty(value) {
|
|
10
|
+
return exports.TEST_FUNCTION_PROPERTIES.includes(value);
|
|
11
|
+
}
|
|
12
|
+
exports.isTestFunctionProperty = isTestFunctionProperty;
|
|
13
|
+
function isFixtureFunctionProperty(value) {
|
|
14
|
+
return exports.FIXTURE_FUNCTION_PROPERTIES.includes(value);
|
|
15
|
+
}
|
|
16
|
+
exports.isFixtureFunctionProperty = isFixtureFunctionProperty;
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9jb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvY29tcGlsZXIvcHJvdG9jb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBY2EsUUFBQSx1QkFBdUIsR0FBUSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQVUsQ0FBQztBQUNoRSxRQUFBLDRCQUE0QixHQUFHLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBVSxDQUFDO0FBQ3hFLFFBQUEsd0JBQXdCLEdBQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRywrQkFBdUIsQ0FBVSxDQUFDO0FBQzNFLFFBQUEsMkJBQTJCLEdBQUksQ0FBQyxHQUFHLCtCQUF1QixFQUFFLEdBQUcsb0NBQTRCLENBQVUsQ0FBQztBQUN0RyxRQUFBLG1CQUFtQixHQUFZLENBQUMsR0FBRyxnQ0FBd0IsRUFBRSxHQUFHLG9DQUE0QixDQUFVLENBQUM7QUFPcEgsU0FBZ0Isc0JBQXNCLENBQUUsS0FBeUI7SUFDN0QsT0FBTyxnQ0FBd0IsQ0FBQyxRQUFRLENBQUMsS0FBK0IsQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFGRCx3REFFQztBQUVELFNBQWdCLHlCQUF5QixDQUFFLEtBQXlCO0lBQ2hFLE9BQU8sbUNBQTJCLENBQUMsUUFBUSxDQUFDLEtBQWtDLENBQUMsQ0FBQztBQUNwRixDQUFDO0FBRkQsOERBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21waWxlckFyZ3VtZW50cyB9IGZyb20gJy4uLy4uL2NvbXBpbGVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vaW50ZXJmYWNlcyc7XG5pbXBvcnQgUmVxdWVzdEhvb2tNZXRob2ROYW1lcyBmcm9tICcuLi8uLi9hcGkvcmVxdWVzdC1ob29rcy9ob29rLW1ldGhvZC1uYW1lcyc7XG5pbXBvcnQge1xuICAgIENvbmZpZ3VyZVJlc3BvbnNlRXZlbnQsXG4gICAgQ29uZmlndXJlUmVzcG9uc2VFdmVudE9wdGlvbnMsXG4gICAgUmVxdWVzdEV2ZW50LFxuICAgIFJlc3BvbnNlRXZlbnQsXG4gICAgUmVzcG9uc2VNb2NrLFxuICAgIFJlcXVlc3RJbmZvLFxuICAgIEluY29taW5nTWVzc2FnZUxpa2VJbml0T3B0aW9ucyxcbiAgICBSZXF1ZXN0RmlsdGVyUnVsZVxufSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcblxuZXhwb3J0IGNvbnN0IEJFRk9SRV9BRlRFUl9QUk9QRVJUSUVTICAgICAgPSBbJ2JlZm9yZUZuJywgJ2FmdGVyRm4nXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBCRUZPUkVfQUZURVJfRUFDSF9QUk9QRVJUSUVTID0gWydiZWZvcmVFYWNoRm4nLCAnYWZ0ZXJFYWNoRm4nXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBURVNUX0ZVTkNUSU9OX1BST1BFUlRJRVMgICAgID0gWydmbicsIC4uLkJFRk9SRV9BRlRFUl9QUk9QRVJUSUVTXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBGSVhUVVJFX0ZVTkNUSU9OX1BST1BFUlRJRVMgID0gWy4uLkJFRk9SRV9BRlRFUl9QUk9QRVJUSUVTLCAuLi5CRUZPUkVfQUZURVJfRUFDSF9QUk9QRVJUSUVTXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBGVU5DVElPTl9QUk9QRVJUSUVTICAgICAgICAgID0gWy4uLlRFU1RfRlVOQ1RJT05fUFJPUEVSVElFUywgLi4uQkVGT1JFX0FGVEVSX0VBQ0hfUFJPUEVSVElFU10gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEZ1bmN0aW9uUHJvcGVydGllcyA9IHR5cGVvZiBGVU5DVElPTl9QUk9QRVJUSUVTW251bWJlcl07XG5leHBvcnQgdHlwZSBUZXN0RnVuY3Rpb25Qcm9wZXJ0aWVzID0gdHlwZW9mIFRFU1RfRlVOQ1RJT05fUFJPUEVSVElFU1tudW1iZXJdO1xuZXhwb3J0IHR5cGUgRml4dHVyZUZ1bmN0aW9uUHJvcGVydGllcyA9IHR5cGVvZiBGSVhUVVJFX0ZVTkNUSU9OX1BST1BFUlRJRVNbbnVtYmVyXTtcblxuXG5leHBvcnQgZnVuY3Rpb24gaXNUZXN0RnVuY3Rpb25Qcm9wZXJ0eSAodmFsdWU6IEZ1bmN0aW9uUHJvcGVydGllcyk6IHZhbHVlIGlzIFRlc3RGdW5jdGlvblByb3BlcnRpZXMge1xuICAgIHJldHVybiBURVNUX0ZVTkNUSU9OX1BST1BFUlRJRVMuaW5jbHVkZXModmFsdWUgYXMgVGVzdEZ1bmN0aW9uUHJvcGVydGllcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ZpeHR1cmVGdW5jdGlvblByb3BlcnR5ICh2YWx1ZTogRnVuY3Rpb25Qcm9wZXJ0aWVzKTogdmFsdWUgaXMgRml4dHVyZUZ1bmN0aW9uUHJvcGVydGllcyB7XG4gICAgcmV0dXJuIEZJWFRVUkVfRlVOQ1RJT05fUFJPUEVSVElFUy5pbmNsdWRlcyh2YWx1ZSBhcyBGaXh0dXJlRnVuY3Rpb25Qcm9wZXJ0aWVzKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdW5UZXN0QXJndW1lbnRzIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGZ1bmN0aW9uTmFtZTogRnVuY3Rpb25Qcm9wZXJ0aWVzO1xuICAgIHRlc3RSdW5JZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWN1dGVBY3Rpb25Bcmd1bWVudHMge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgYXBpTWV0aG9kTmFtZTogc3RyaW5nO1xuICAgIGNvbW1hbmQ6IHVua25vd247XG4gICAgY2FsbHNpdGU6IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0ZUNvbW1hbmRBcmd1bWVudHMge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgY29tbWFuZDogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW1vdmVSZXF1ZXN0RXZlbnRMaXN0ZW5lcnNBcmd1bWVudHMge1xuICAgIHJ1bGVzOiBSZXF1ZXN0RmlsdGVyUnVsZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZFJlcXVlc3RFdmVudExpc3RlbmVyc0FyZ3VtZW50cyB7XG4gICAgaG9va0lkOiBzdHJpbmc7XG4gICAgaG9va0NsYXNzTmFtZTogc3RyaW5nO1xuICAgIHJ1bGVzOiBSZXF1ZXN0RmlsdGVyUnVsZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldE9wdGlvbnNBcmd1bWVudHMge1xuICAgIHZhbHVlOiBEaWN0aW9uYXJ5PE9wdGlvblZhbHVlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0SG9va0V2ZW50QXJndW1lbnRzIHtcbiAgICBuYW1lOiBSZXF1ZXN0SG9va01ldGhvZE5hbWVzO1xuICAgIHRlc3RJZDogc3RyaW5nO1xuICAgIGhvb2tJZDogc3RyaW5nO1xuICAgIGV2ZW50RGF0YTogUmVxdWVzdEV2ZW50IHwgQ29uZmlndXJlUmVzcG9uc2VFdmVudCB8IFJlc3BvbnNlRXZlbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0TW9ja0FyZ3VtZW50cyBleHRlbmRzIFJlcXVlc3RGaWx0ZXJSdWxlTG9jYXRvciB7XG4gICAgcmVzcG9uc2VFdmVudElkOiBzdHJpbmc7XG4gICAgbW9jazogUmVzcG9uc2VNb2NrO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldENvbmZpZ3VyZVJlc3BvbnNlRXZlbnRPcHRpb25zQXJndW1lbnRzIHtcbiAgICBldmVudElkOiBzdHJpbmc7XG4gICAgb3B0czogQ29uZmlndXJlUmVzcG9uc2VFdmVudE9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0SGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50QXJndW1lbnRzIHtcbiAgICBldmVudElkOiBzdHJpbmc7XG4gICAgaGVhZGVyTmFtZTogc3RyaW5nO1xuICAgIGhlYWRlclZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3ZlSGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50QXJndW1lbnRzIHtcbiAgICBldmVudElkOiBzdHJpbmc7XG4gICAgaGVhZGVyTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RIb29rTG9jYXRvciB7XG4gICAgdGVzdElkOiBzdHJpbmc7XG4gICAgaG9va0lkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdEZpbHRlclJ1bGVMb2NhdG9yIGV4dGVuZHMgUmVxdWVzdEhvb2tMb2NhdG9yIHtcbiAgICBydWxlSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRlUmVxdWVzdEZpbHRlclJ1bGVQcmVkaWNhdGVBcmd1bWVudHMgZXh0ZW5kcyBSZXF1ZXN0RmlsdGVyUnVsZUxvY2F0b3Ige1xuICAgIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRlTW9ja1ByZWRpY2F0ZSBleHRlbmRzIFJlcXVlc3RGaWx0ZXJSdWxlTG9jYXRvciB7XG4gICAgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvO1xuICAgIHJlczogSW5jb21pbmdNZXNzYWdlTGlrZUluaXRPcHRpb25zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldFdhcm5pbmdNZXNzYWdlc0FyZ3VtZW50cyB7XG4gICAgdGVzdFJ1bklkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5pdGlhbGl6ZVRlc3RSdW5EYXRhQXJndW1lbnRzIHtcbiAgICB0ZXN0UnVuSWQ6IHN0cmluZztcbiAgICB0ZXN0SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXN0UnVuRGlzcGF0Y2hlclByb3RvY29sIHtcbiAgICBleGVjdXRlQWN0aW9uU3luYyAoeyBpZCwgYXBpTWV0aG9kTmFtZSwgY29tbWFuZCwgY2FsbHNpdGUgfTogRXhlY3V0ZUFjdGlvbkFyZ3VtZW50cyk6IHVua25vd247XG4gICAgZXhlY3V0ZUFjdGlvbiAoeyBpZCwgYXBpTWV0aG9kTmFtZSwgY29tbWFuZCwgY2FsbHNpdGUgfTogRXhlY3V0ZUFjdGlvbkFyZ3VtZW50cyk6IFByb21pc2U8dW5rbm93bj47XG4gICAgZXhlY3V0ZUNvbW1hbmQgKHsgY29tbWFuZCB9OiBFeGVjdXRlQ29tbWFuZEFyZ3VtZW50cyk6IFByb21pc2U8dW5rbm93bj47XG4gICAgYWRkUmVxdWVzdEV2ZW50TGlzdGVuZXJzICggeyBob29rSWQsIGhvb2tDbGFzc05hbWUsIHJ1bGVzIH06IEFkZFJlcXVlc3RFdmVudExpc3RlbmVyc0FyZ3VtZW50cyk6IFByb21pc2U8dm9pZD47XG4gICAgcmVtb3ZlUmVxdWVzdEV2ZW50TGlzdGVuZXJzICh7IHJ1bGVzIH06IFJlbW92ZVJlcXVlc3RFdmVudExpc3RlbmVyc0FyZ3VtZW50cyk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGlsZXJQcm90b2NvbCBleHRlbmRzIFRlc3RSdW5EaXNwYXRjaGVyUHJvdG9jb2wge1xuICAgIHJlYWR5ICgpOiBQcm9taXNlPHZvaWQ+O1xuXG4gICAgZ2V0VGVzdHMgKHsgc291cmNlTGlzdCwgY29tcGlsZXJPcHRpb25zIH06IENvbXBpbGVyQXJndW1lbnRzKTogUHJvbWlzZTx1bmtub3duPjtcblxuICAgIHJ1blRlc3RGbiAoeyBpZCwgZnVuY3Rpb25OYW1lLCB0ZXN0UnVuSWQgfTogUnVuVGVzdEFyZ3VtZW50cyk6IFByb21pc2U8dW5rbm93bj47XG5cbiAgICBjbGVhblVwICgpOiBQcm9taXNlPHZvaWQ+O1xuXG4gICAgc2V0T3B0aW9ucyAoeyB2YWx1ZSB9OiBTZXRPcHRpb25zQXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPjtcblxuICAgIG9uUmVxdWVzdEhvb2tFdmVudCAoeyBuYW1lLCB0ZXN0SWQsIGhvb2tJZCwgZXZlbnREYXRhIH06IFJlcXVlc3RIb29rRXZlbnRBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+O1xuXG4gICAgc2V0TW9jayAoeyByZXNwb25zZUV2ZW50SWQsIG1vY2sgfTogU2V0TW9ja0FyZ3VtZW50cyk6IFByb21pc2U8dm9pZD47XG5cbiAgICBzZXRDb25maWd1cmVSZXNwb25zZUV2ZW50T3B0aW9ucyAoeyBldmVudElkLCBvcHRzIH06IFNldENvbmZpZ3VyZVJlc3BvbnNlRXZlbnRPcHRpb25zQXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPjtcblxuICAgIHNldEhlYWRlck9uQ29uZmlndXJlUmVzcG9uc2VFdmVudCAoeyBldmVudElkLCBoZWFkZXJOYW1lLCBoZWFkZXJWYWx1ZSB9OiBTZXRIZWFkZXJPbkNvbmZpZ3VyZVJlc3BvbnNlRXZlbnRBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+O1xuXG4gICAgcmVtb3ZlSGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50ICh7IGV2ZW50SWQsIGhlYWRlck5hbWUgfTogUmVtb3ZlSGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50QXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPjtcblxuICAgIGV4ZWN1dGVSZXF1ZXN0RmlsdGVyUnVsZVByZWRpY2F0ZSAoeyB0ZXN0SWQsIGhvb2tJZCwgcnVsZUlkLCByZXF1ZXN0SW5mbyB9OiBFeGVjdXRlUmVxdWVzdEZpbHRlclJ1bGVQcmVkaWNhdGVBcmd1bWVudHMpOiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gICAgZXhlY3V0ZU1vY2tQcmVkaWNhdGUgKHsgdGVzdElkLCBob29rSWQsIHJ1bGVJZCwgcmVxdWVzdEluZm8sIHJlcyB9OiBFeGVjdXRlTW9ja1ByZWRpY2F0ZSk6IFByb21pc2U8SW5jb21pbmdNZXNzYWdlTGlrZUluaXRPcHRpb25zPjtcblxuICAgIGdldFdhcm5pbmdNZXNzYWdlcyAoeyB0ZXN0UnVuSWQgfTogR2V0V2FybmluZ01lc3NhZ2VzQXJndW1lbnRzKTogUHJvbWlzZTxzdHJpbmdbXT47XG5cbiAgICBpbml0aWFsaXplVGVzdFJ1bkRhdGEgKHsgdGVzdFJ1bklkLCB0ZXN0SWQgfTogSW5pdGlhbGl6ZVRlc3RSdW5EYXRhQXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPjtcbn1cbiJdfQ==
|