testcafe 1.14.1 → 1.14.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/LICENSE +21 -21
- package/bin/testcafe-with-v8-flag-filter.js +0 -0
- package/lib/api/exportable-lib/index.js +49 -49
- package/lib/api/request-hooks/assert-type.js +7 -7
- package/lib/api/request-hooks/hook-method-names.js +9 -9
- package/lib/api/request-hooks/hook.js +32 -32
- package/lib/api/request-hooks/interfaces.js +2 -2
- package/lib/api/request-hooks/request-logger.js +112 -112
- package/lib/api/request-hooks/request-mock/create-request-mock.js +10 -10
- package/lib/api/request-hooks/request-mock/index.js +44 -44
- package/lib/api/request-hooks/request-mock.js +46 -46
- 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 +358 -358
- 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 -284
- 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 +34 -16
- 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/core/index.js +14 -14
- package/lib/client/driver/index.js +46 -16
- 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 -14
- 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 +155 -155
- 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 +20 -20
- package/lib/client-functions/selectors/add-api.js +645 -645
- 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 +153 -153
- 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 +63 -63
- 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 +42 -42
- 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 +2 -2
- 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 +8 -8
- package/lib/configuration/run-option-names.js +26 -26
- package/lib/configuration/screenshot-option-names.js +10 -10
- package/lib/configuration/testcafe-configuration.js +163 -163
- 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 +2 -2
- package/lib/custom-client-scripts/client-script.js +106 -106
- 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 +45 -45
- package/lib/errors/process-test-fn-error.js +37 -37
- package/lib/errors/runtime/index.js +123 -123
- package/lib/errors/runtime/templates.js +115 -115
- 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 +301 -301
- package/lib/errors/test-run/render-error-template.js +31 -31
- package/lib/errors/test-run/templates.js +91 -91
- package/lib/errors/test-run/utils.js +89 -89
- package/lib/errors/types.js +156 -156
- package/lib/index.js +81 -81
- package/lib/live/bootstrapper.js +43 -43
- 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 +167 -167
- 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 +9 -9
- package/lib/notifications/warning-log.js +31 -31
- package/lib/notifications/warning-message.js +47 -47
- 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 +135 -135
- 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 +271 -271
- package/lib/runner/browser-job-result.js +9 -9
- package/lib/runner/browser-job.js +152 -152
- package/lib/runner/browser-set.js +114 -114
- package/lib/runner/fixture-hook-controller.js +85 -85
- package/lib/runner/index.js +449 -449
- package/lib/runner/interfaces.js +2 -2
- package/lib/runner/reporter-stream-controller.js +27 -27
- package/lib/runner/task/index.js +151 -151
- package/lib/runner/task/phase.js +9 -9
- package/lib/runner/test-run-controller.js +165 -165
- package/lib/runner/tested-app.js +72 -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 -190
- package/lib/services/compiler/io.js +9 -9
- package/lib/services/compiler/protocol.js +17 -16
- package/lib/services/compiler/service.js +225 -212
- package/lib/services/compiler/test-run-proxy.js +111 -111
- package/lib/services/interfaces.js +2 -2
- 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 +25 -25
- package/lib/services/serialization/replicator/custom-error-transform.js +26 -26
- package/lib/services/serialization/test-structure.js +92 -92
- 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 +75 -75
- package/lib/services/utils/ipc/packet.js +55 -55
- package/lib/services/utils/ipc/proxy.js +109 -109
- 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 -483
- 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 -64
- 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 -799
- 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 +118 -118
- 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 +52 -52
- package/lib/utils/diff/util.js +23 -23
- 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 +20 -20
- package/lib/utils/get-options/meta.js +22 -22
- package/lib/utils/get-options/quarantine.js +91 -91
- 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 +17 -17
- 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 +10 -10
- 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 +9 -9
- 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 +2 -2
- package/ts-defs/index.d.ts +25 -14
- package/ts-defs/selectors.d.ts +16 -5
- package/ts-defs/testcafe-scripts.d.ts +17 -6
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZXBvcnRlci9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXcml0YWJsZSBhcyBXcml0YWJsZVN0cmVhbSB9IGZyb20gJ3N0cmVhbSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0ZXJQbHVnaW4ge1xuICAgIHJlcG9ydFRhc2tTdGFydCgpOiB2b2lkO1xuICAgIHJlcG9ydEZpeHR1cmVTdGFydCgpOiB2b2lkO1xuICAgIHJlcG9ydFRlc3RTdGFydD8oKTogdm9pZDtcbiAgICByZXBvcnRUZXN0QWN0aW9uU3RhcnQ/KCk6IHZvaWQ7XG4gICAgcmVwb3J0VGVzdEFjdGlvbkRvbmU/KCk6IHZvaWQ7XG4gICAgcmVwb3J0VGVzdERvbmUoKTogdm9pZDtcbiAgICByZXBvcnRUYXNrRG9uZSgpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydGVyU291cmNlIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgb3V0cHV0Pzogc3RyaW5nIHwgV3JpdGFibGVTdHJlYW07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0ZXJQbHVnaW5Tb3VyY2Uge1xuICAgIHBsdWdpbjogUmVwb3J0ZXJQbHVnaW47XG4gICAgb3V0U3RyZWFtPzogV3JpdGFibGVTdHJlYW07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0ZXJQbHVnaW5GYWN0b3J5IHtcbiAgICAoKTogUmVwb3J0ZXJQbHVnaW47XG59XG4iXX0=
|
|
@@ -1,137 +1,137 @@
|
|
|
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 chalk_1 = __importDefault(require("chalk"));
|
|
7
|
-
const indent_string_1 = __importDefault(require("indent-string"));
|
|
8
|
-
const lodash_1 = require("lodash");
|
|
9
|
-
const moment_loader_1 = __importDefault(require("../utils/moment-loader"));
|
|
10
|
-
const os_family_1 = __importDefault(require("os-family"));
|
|
11
|
-
const string_1 = require("../utils/string");
|
|
12
|
-
const get_viewport_width_1 = __importDefault(require("../utils/get-viewport-width"));
|
|
13
|
-
const colors_1 = require("../utils/diff/colors");
|
|
14
|
-
// NOTE: we should not expose internal state to
|
|
15
|
-
// the plugin, to avoid accidental rewrites.
|
|
16
|
-
// Therefore we use symbols to store them.
|
|
17
|
-
const stream = Symbol();
|
|
18
|
-
const wordWrapEnabled = Symbol();
|
|
19
|
-
const indent = Symbol();
|
|
20
|
-
const errorDecorator = Symbol();
|
|
21
|
-
class ReporterPluginHost {
|
|
22
|
-
constructor(plugin, outStream, name) {
|
|
23
|
-
this.name = name;
|
|
24
|
-
this.streamController = null;
|
|
25
|
-
this[stream] = outStream || process.stdout;
|
|
26
|
-
this[wordWrapEnabled] = false;
|
|
27
|
-
this[indent] = 0;
|
|
28
|
-
const useColors = this[stream] === process.stdout && chalk_1.default.enabled && !plugin.noColors;
|
|
29
|
-
this.chalk = new chalk_1.default.constructor({ enabled: useColors });
|
|
30
|
-
this.moment = moment_loader_1.default;
|
|
31
|
-
this.viewportWidth = get_viewport_width_1.default(this[stream]);
|
|
32
|
-
this.symbols = os_family_1.default.win ?
|
|
33
|
-
{ ok: '√', err: '×' } :
|
|
34
|
-
{ ok: '✓', err: '✖' };
|
|
35
|
-
lodash_1.assignIn(this, plugin);
|
|
36
|
-
this[errorDecorator] = this.createErrorDecorator();
|
|
37
|
-
}
|
|
38
|
-
// Error decorator
|
|
39
|
-
createErrorDecorator() {
|
|
40
|
-
return {
|
|
41
|
-
'span user-agent': (str) => this.chalk.grey(str),
|
|
42
|
-
'span subtitle': (str) => `- ${this.chalk.bold.red(str)} -`,
|
|
43
|
-
'div message': (str) => this.chalk.bold.red(str),
|
|
44
|
-
'div screenshot-info': lodash_1.identity,
|
|
45
|
-
'a screenshot-path': (str) => this.chalk.grey.underline(str),
|
|
46
|
-
'code': lodash_1.identity,
|
|
47
|
-
'span syntax-string': (str) => this.chalk.green(str),
|
|
48
|
-
'span syntax-punctuator': (str) => this.chalk.grey(str),
|
|
49
|
-
'span syntax-keyword': (str) => this.chalk.cyan(str),
|
|
50
|
-
'span syntax-number': (str) => this.chalk.magenta(str),
|
|
51
|
-
'span syntax-regex': (str) => this.chalk.magenta(str),
|
|
52
|
-
'span syntax-comment': (str) => this.chalk.grey.bold(str),
|
|
53
|
-
'span syntax-invalid': (str) => this.chalk.inverse(str),
|
|
54
|
-
[`span ${colors_1.DIFF_COLORS.DIFF_NOT_MODIFIED}`]: (str) => this.chalk.gray(str),
|
|
55
|
-
[`span ${colors_1.DIFF_COLORS.DIFF_ADDED}`]: (str) => this.chalk.green(str),
|
|
56
|
-
[`span ${colors_1.DIFF_COLORS.DIFF_REMOVED}`]: (str) => this.chalk.red(str),
|
|
57
|
-
'div code-frame': lodash_1.identity,
|
|
58
|
-
'div code-line': (str) => str + '\n',
|
|
59
|
-
'div code-line-last': lodash_1.identity,
|
|
60
|
-
'div code-line-num': (str) => ` ${str} |`,
|
|
61
|
-
'div code-line-num-base': (str) => this.chalk.bgRed(` > ${str} `) + '|',
|
|
62
|
-
'div code-line-src': lodash_1.identity,
|
|
63
|
-
'div stack': (str) => '\n\n' + str,
|
|
64
|
-
'div stack-line': (str) => str + '\n',
|
|
65
|
-
'div stack-line-last': lodash_1.identity,
|
|
66
|
-
'div stack-line-name': (str) => ` at ${this.chalk.bold(str)}`,
|
|
67
|
-
'div stack-line-location': (str) => ` (${this.chalk.grey.underline(str)})`,
|
|
68
|
-
'strong': (str) => this.chalk.bold(str),
|
|
69
|
-
'a': (str) => `"${this.chalk.underline(str)}"`
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
// String helpers
|
|
73
|
-
indentString(str, indentVal) {
|
|
74
|
-
return indent_string_1.default(str, ' ', indentVal);
|
|
75
|
-
}
|
|
76
|
-
wordWrap(str, indentVal, width) {
|
|
77
|
-
return string_1.wordWrap(str, indentVal, width);
|
|
78
|
-
}
|
|
79
|
-
escapeHtml(str) {
|
|
80
|
-
return lodash_1.escape(str);
|
|
81
|
-
}
|
|
82
|
-
formatError(err, prefix = '') {
|
|
83
|
-
const prefixLengthWithoutColors = string_1.removeTTYColors(prefix).length;
|
|
84
|
-
const maxMsgLength = this.viewportWidth - this[indent] - prefixLengthWithoutColors;
|
|
85
|
-
let msg = err.formatMessage(this[errorDecorator], maxMsgLength);
|
|
86
|
-
if (this[wordWrapEnabled])
|
|
87
|
-
msg = this.wordWrap(msg, prefixLengthWithoutColors, maxMsgLength);
|
|
88
|
-
else
|
|
89
|
-
msg = this.indentString(msg, prefixLengthWithoutColors);
|
|
90
|
-
return prefix + msg.substr(prefixLengthWithoutColors);
|
|
91
|
-
}
|
|
92
|
-
// Writing helpers
|
|
93
|
-
newline() {
|
|
94
|
-
this._writeToUniqueStream('\n');
|
|
95
|
-
return this;
|
|
96
|
-
}
|
|
97
|
-
write(text) {
|
|
98
|
-
if (this[wordWrapEnabled])
|
|
99
|
-
text = this.wordWrap(text, this[indent], this.viewportWidth);
|
|
100
|
-
else
|
|
101
|
-
text = this.indentString(text, this[indent]);
|
|
102
|
-
this._writeToUniqueStream(text);
|
|
103
|
-
return this;
|
|
104
|
-
}
|
|
105
|
-
useWordWrap(use) {
|
|
106
|
-
this[wordWrapEnabled] = use;
|
|
107
|
-
return this;
|
|
108
|
-
}
|
|
109
|
-
setIndent(val) {
|
|
110
|
-
this[indent] = val;
|
|
111
|
-
return this;
|
|
112
|
-
}
|
|
113
|
-
_writeToUniqueStream(text) {
|
|
114
|
-
if (!this.streamController || this.streamController.ensureUniqueStream(this[stream], this))
|
|
115
|
-
this[stream].write(text);
|
|
116
|
-
}
|
|
117
|
-
// Abstract methods implemented in plugin
|
|
118
|
-
async reportTaskStart( /* startTime, userAgents, testCount, testStructure, taskProperties */) {
|
|
119
|
-
throw new Error('Not implemented');
|
|
120
|
-
}
|
|
121
|
-
async reportFixtureStart( /* name, path */) {
|
|
122
|
-
throw new Error('Not implemented');
|
|
123
|
-
}
|
|
124
|
-
// NOTE: It's an optional method
|
|
125
|
-
// async reportTestStart (/* name, testMeta */) {
|
|
126
|
-
// throw new Error('Not implemented');
|
|
127
|
-
// }
|
|
128
|
-
async reportTestDone( /* name, testRunInfo */) {
|
|
129
|
-
throw new Error('Not implemented');
|
|
130
|
-
}
|
|
131
|
-
async reportTaskDone( /* endTime, passed, warnings */) {
|
|
132
|
-
throw new Error('Not implemented');
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
exports.default = ReporterPluginHost;
|
|
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 chalk_1 = __importDefault(require("chalk"));
|
|
7
|
+
const indent_string_1 = __importDefault(require("indent-string"));
|
|
8
|
+
const lodash_1 = require("lodash");
|
|
9
|
+
const moment_loader_1 = __importDefault(require("../utils/moment-loader"));
|
|
10
|
+
const os_family_1 = __importDefault(require("os-family"));
|
|
11
|
+
const string_1 = require("../utils/string");
|
|
12
|
+
const get_viewport_width_1 = __importDefault(require("../utils/get-viewport-width"));
|
|
13
|
+
const colors_1 = require("../utils/diff/colors");
|
|
14
|
+
// NOTE: we should not expose internal state to
|
|
15
|
+
// the plugin, to avoid accidental rewrites.
|
|
16
|
+
// Therefore we use symbols to store them.
|
|
17
|
+
const stream = Symbol();
|
|
18
|
+
const wordWrapEnabled = Symbol();
|
|
19
|
+
const indent = Symbol();
|
|
20
|
+
const errorDecorator = Symbol();
|
|
21
|
+
class ReporterPluginHost {
|
|
22
|
+
constructor(plugin, outStream, name) {
|
|
23
|
+
this.name = name;
|
|
24
|
+
this.streamController = null;
|
|
25
|
+
this[stream] = outStream || process.stdout;
|
|
26
|
+
this[wordWrapEnabled] = false;
|
|
27
|
+
this[indent] = 0;
|
|
28
|
+
const useColors = this[stream] === process.stdout && chalk_1.default.enabled && !plugin.noColors;
|
|
29
|
+
this.chalk = new chalk_1.default.constructor({ enabled: useColors });
|
|
30
|
+
this.moment = moment_loader_1.default;
|
|
31
|
+
this.viewportWidth = get_viewport_width_1.default(this[stream]);
|
|
32
|
+
this.symbols = os_family_1.default.win ?
|
|
33
|
+
{ ok: '√', err: '×' } :
|
|
34
|
+
{ ok: '✓', err: '✖' };
|
|
35
|
+
lodash_1.assignIn(this, plugin);
|
|
36
|
+
this[errorDecorator] = this.createErrorDecorator();
|
|
37
|
+
}
|
|
38
|
+
// Error decorator
|
|
39
|
+
createErrorDecorator() {
|
|
40
|
+
return {
|
|
41
|
+
'span user-agent': (str) => this.chalk.grey(str),
|
|
42
|
+
'span subtitle': (str) => `- ${this.chalk.bold.red(str)} -`,
|
|
43
|
+
'div message': (str) => this.chalk.bold.red(str),
|
|
44
|
+
'div screenshot-info': lodash_1.identity,
|
|
45
|
+
'a screenshot-path': (str) => this.chalk.grey.underline(str),
|
|
46
|
+
'code': lodash_1.identity,
|
|
47
|
+
'span syntax-string': (str) => this.chalk.green(str),
|
|
48
|
+
'span syntax-punctuator': (str) => this.chalk.grey(str),
|
|
49
|
+
'span syntax-keyword': (str) => this.chalk.cyan(str),
|
|
50
|
+
'span syntax-number': (str) => this.chalk.magenta(str),
|
|
51
|
+
'span syntax-regex': (str) => this.chalk.magenta(str),
|
|
52
|
+
'span syntax-comment': (str) => this.chalk.grey.bold(str),
|
|
53
|
+
'span syntax-invalid': (str) => this.chalk.inverse(str),
|
|
54
|
+
[`span ${colors_1.DIFF_COLORS.DIFF_NOT_MODIFIED}`]: (str) => this.chalk.gray(str),
|
|
55
|
+
[`span ${colors_1.DIFF_COLORS.DIFF_ADDED}`]: (str) => this.chalk.green(str),
|
|
56
|
+
[`span ${colors_1.DIFF_COLORS.DIFF_REMOVED}`]: (str) => this.chalk.red(str),
|
|
57
|
+
'div code-frame': lodash_1.identity,
|
|
58
|
+
'div code-line': (str) => str + '\n',
|
|
59
|
+
'div code-line-last': lodash_1.identity,
|
|
60
|
+
'div code-line-num': (str) => ` ${str} |`,
|
|
61
|
+
'div code-line-num-base': (str) => this.chalk.bgRed(` > ${str} `) + '|',
|
|
62
|
+
'div code-line-src': lodash_1.identity,
|
|
63
|
+
'div stack': (str) => '\n\n' + str,
|
|
64
|
+
'div stack-line': (str) => str + '\n',
|
|
65
|
+
'div stack-line-last': lodash_1.identity,
|
|
66
|
+
'div stack-line-name': (str) => ` at ${this.chalk.bold(str)}`,
|
|
67
|
+
'div stack-line-location': (str) => ` (${this.chalk.grey.underline(str)})`,
|
|
68
|
+
'strong': (str) => this.chalk.bold(str),
|
|
69
|
+
'a': (str) => `"${this.chalk.underline(str)}"`
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
// String helpers
|
|
73
|
+
indentString(str, indentVal) {
|
|
74
|
+
return indent_string_1.default(str, ' ', indentVal);
|
|
75
|
+
}
|
|
76
|
+
wordWrap(str, indentVal, width) {
|
|
77
|
+
return string_1.wordWrap(str, indentVal, width);
|
|
78
|
+
}
|
|
79
|
+
escapeHtml(str) {
|
|
80
|
+
return lodash_1.escape(str);
|
|
81
|
+
}
|
|
82
|
+
formatError(err, prefix = '') {
|
|
83
|
+
const prefixLengthWithoutColors = string_1.removeTTYColors(prefix).length;
|
|
84
|
+
const maxMsgLength = this.viewportWidth - this[indent] - prefixLengthWithoutColors;
|
|
85
|
+
let msg = err.formatMessage(this[errorDecorator], maxMsgLength);
|
|
86
|
+
if (this[wordWrapEnabled])
|
|
87
|
+
msg = this.wordWrap(msg, prefixLengthWithoutColors, maxMsgLength);
|
|
88
|
+
else
|
|
89
|
+
msg = this.indentString(msg, prefixLengthWithoutColors);
|
|
90
|
+
return prefix + msg.substr(prefixLengthWithoutColors);
|
|
91
|
+
}
|
|
92
|
+
// Writing helpers
|
|
93
|
+
newline() {
|
|
94
|
+
this._writeToUniqueStream('\n');
|
|
95
|
+
return this;
|
|
96
|
+
}
|
|
97
|
+
write(text) {
|
|
98
|
+
if (this[wordWrapEnabled])
|
|
99
|
+
text = this.wordWrap(text, this[indent], this.viewportWidth);
|
|
100
|
+
else
|
|
101
|
+
text = this.indentString(text, this[indent]);
|
|
102
|
+
this._writeToUniqueStream(text);
|
|
103
|
+
return this;
|
|
104
|
+
}
|
|
105
|
+
useWordWrap(use) {
|
|
106
|
+
this[wordWrapEnabled] = use;
|
|
107
|
+
return this;
|
|
108
|
+
}
|
|
109
|
+
setIndent(val) {
|
|
110
|
+
this[indent] = val;
|
|
111
|
+
return this;
|
|
112
|
+
}
|
|
113
|
+
_writeToUniqueStream(text) {
|
|
114
|
+
if (!this.streamController || this.streamController.ensureUniqueStream(this[stream], this))
|
|
115
|
+
this[stream].write(text);
|
|
116
|
+
}
|
|
117
|
+
// Abstract methods implemented in plugin
|
|
118
|
+
async reportTaskStart( /* startTime, userAgents, testCount, testStructure, taskProperties */) {
|
|
119
|
+
throw new Error('Not implemented');
|
|
120
|
+
}
|
|
121
|
+
async reportFixtureStart( /* name, path */) {
|
|
122
|
+
throw new Error('Not implemented');
|
|
123
|
+
}
|
|
124
|
+
// NOTE: It's an optional method
|
|
125
|
+
// async reportTestStart (/* name, testMeta */) {
|
|
126
|
+
// throw new Error('Not implemented');
|
|
127
|
+
// }
|
|
128
|
+
async reportTestDone( /* name, testRunInfo */) {
|
|
129
|
+
throw new Error('Not implemented');
|
|
130
|
+
}
|
|
131
|
+
async reportTaskDone( /* endTime, passed, warnings */) {
|
|
132
|
+
throw new Error('Not implemented');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
exports.default = ReporterPluginHost;
|
|
136
136
|
module.exports = exports.default;
|
|
137
137
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWhvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVwb3J0ZXIvcGx1Z2luLWhvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBcUM7QUFDckMsa0VBQXlDO0FBRXpDLG1DQUlnQjtBQUVoQiwyRUFBNEM7QUFDNUMsMERBQTJCO0FBQzNCLDRDQUE0RDtBQUM1RCxxRkFBMkQ7QUFDM0QsaURBQW1EO0FBTW5ELCtDQUErQztBQUMvQyw0Q0FBNEM7QUFDNUMsMENBQTBDO0FBQzFDLE1BQU0sTUFBTSxHQUFZLE1BQU0sRUFBRSxDQUFDO0FBQ2pDLE1BQU0sZUFBZSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ2pDLE1BQU0sTUFBTSxHQUFZLE1BQU0sRUFBRSxDQUFDO0FBQ2pDLE1BQU0sY0FBYyxHQUFJLE1BQU0sRUFBRSxDQUFDO0FBT2pDLE1BQXFCLGtCQUFrQjtJQVluQyxZQUFvQixNQUFXLEVBQUUsU0FBbUIsRUFBRSxJQUFZO1FBQzlELElBQUksQ0FBQyxJQUFJLEdBQWUsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFZLFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ3BELElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFZLENBQUMsQ0FBQztRQUUxQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssT0FBTyxDQUFDLE1BQU0sSUFBSSxlQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUV2RixJQUFJLENBQUMsS0FBSyxHQUFXLElBQUksZUFBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FB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LENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0o7QUFsS0QscUNBa0tDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoYWxrLCB7IENoYWxrIH0gZnJvbSAnY2hhbGsnO1xuaW1wb3J0IGluZGVudFN0cmluZyBmcm9tICdpbmRlbnQtc3RyaW5nJztcblxuaW1wb3J0IHtcbiAgICBpZGVudGl0eSxcbiAgICBlc2NhcGUgYXMgZXNjYXBlSHRtbCxcbiAgICBhc3NpZ25JblxufSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgbW9tZW50IGZyb20gJy4uL3V0aWxzL21vbWVudC1sb2FkZXInO1xuaW1wb3J0IE9TIGZyb20gJ29zLWZhbWlseSc7XG5pbXBvcnQgeyB3b3JkV3JhcCwgcmVtb3ZlVFRZQ29sb3JzIH0gZnJvbSAnLi4vdXRpbHMvc3RyaW5nJztcbmltcG9ydCBnZXRWaWV3cG9ydFdpZHRoIGZyb20gJy4uL3V0aWxzL2dldC12aWV3cG9ydC13aWR0aCc7XG5pbXBvcnQgeyBESUZGX0NPTE9SUyB9IGZyb20gJy4uL3V0aWxzL2RpZmYvY29sb3JzJztcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgUmVwb3J0ZXJTdHJlYW1Db250cm9sbGVyIGZyb20gJy4uL3J1bm5lci9yZXBvcnRlci1zdHJlYW0tY29udHJvbGxlcic7XG5pbXBvcnQgeyBXcml0YWJsZSB9IGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgVGVzdFJ1bkVycm9yRm9ybWF0dGFibGVBZGFwdGVyIGZyb20gJy4uL2Vycm9ycy90ZXN0LXJ1bi9mb3JtYXR0YWJsZS1hZGFwdGVyJztcblxuLy8gTk9URTogd2Ugc2hvdWxkIG5vdCBleHBvc2UgaW50ZXJuYWwgc3RhdGUgdG9cbi8vIHRoZSBwbHVnaW4sIHRvIGF2b2lkIGFjY2lkZW50YWwgcmV3cml0ZXMuXG4vLyBUaGVyZWZvcmUgd2UgdXNlIHN5bWJvbHMgdG8gc3RvcmUgdGhlbS5cbmNvbnN0IHN0cmVhbSAgICAgICAgICA9IFN5bWJvbCgpO1xuY29uc3Qgd29yZFdyYXBFbmFibGVkID0gU3ltYm9sKCk7XG5jb25zdCBpbmRlbnQgICAgICAgICAgPSBTeW1ib2woKTtcbmNvbnN0IGVycm9yRGVjb3JhdG9yICA9IFN5bWJvbCgpO1xuXG5pbnRlcmZhY2UgUmVwb3J0ZXJTeW1ib2xzIHtcbiAgICBvazogc3RyaW5nO1xuICAgIGVycjogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZXBvcnRlclBsdWdpbkhvc3Qge1xuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gICAgcHVibGljIHN0cmVhbUNvbnRyb2xsZXI6IFJlcG9ydGVyU3RyZWFtQ29udHJvbGxlciB8IG51bGw7XG4gICAgcHVibGljIGNoYWxrOiBDaGFsaztcbiAgICBwdWJsaWMgbW9tZW50OiBNb21lbnQ7XG4gICAgcHVibGljIHZpZXdwb3J0V2lkdGg6IG51bWJlcjtcbiAgICBwdWJsaWMgc3ltYm9sczogUmVwb3J0ZXJTeW1ib2xzO1xuICAgIHByaXZhdGUgW3N0cmVhbV06IFdyaXRhYmxlO1xuICAgIHByaXZhdGUgW3dvcmRXcmFwRW5hYmxlZF06IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBbaW5kZW50XTogbnVtYmVyO1xuICAgIHByaXZhdGUgW2Vycm9yRGVjb3JhdG9yXTogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChwbHVnaW46IGFueSwgb3V0U3RyZWFtOiBXcml0YWJsZSwgbmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMubmFtZSAgICAgICAgICAgICA9IG5hbWU7XG4gICAgICAgIHRoaXMuc3RyZWFtQ29udHJvbGxlciA9IG51bGw7XG4gICAgICAgIHRoaXNbc3RyZWFtXSAgICAgICAgICA9IG91dFN0cmVhbSB8fCBwcm9jZXNzLnN0ZG91dDtcbiAgICAgICAgdGhpc1t3b3JkV3JhcEVuYWJsZWRdID0gZmFsc2U7XG4gICAgICAgIHRoaXNbaW5kZW50XSAgICAgICAgICA9IDA7XG5cbiAgICAgICAgY29uc3QgdXNlQ29sb3JzID0gdGhpc1tzdHJlYW1dID09PSBwcm9jZXNzLnN0ZG91dCAmJiBjaGFsay5lbmFibGVkICYmICFwbHVnaW4ubm9Db2xvcnM7XG5cbiAgICAgICAgdGhpcy5jaGFsayAgICAgICAgID0gbmV3IGNoYWxrLmNvbnN0cnVjdG9yKHsgZW5hYmxlZDogdXNlQ29sb3JzIH0pO1xuICAgICAgICB0aGlzLm1vbWVudCAgICAgICAgPSBtb21lbnQ7XG4gICAgICAgIHRoaXMudmlld3BvcnRXaWR0aCA9IGdldFZpZXdwb3J0V2lkdGgodGhpc1tzdHJlYW1dKTtcblxuICAgICAgICB0aGlzLnN5bWJvbHMgPSBPUy53aW4gP1xuICAgICAgICAgICAgeyBvazogJ+KImicsIGVycjogJ8OXJyB9IDpcbiAgICAgICAgICAgIHsgb2s6ICfinJMnLCBlcnI6ICfinJYnIH07XG5cbiAgICAgICAgYXNzaWduSW4odGhpcywgcGx1Z2luKTtcblxuICAgICAgICB0aGlzW2Vycm9yRGVjb3JhdG9yXSA9IHRoaXMuY3JlYXRlRXJyb3JEZWNvcmF0b3IoKTtcbiAgICB9XG5cbiAgICAvLyBFcnJvciBkZWNvcmF0b3JcbiAgICBwdWJsaWMgY3JlYXRlRXJyb3JEZWNvcmF0b3IgKCk6IFJlY29yZDxzdHJpbmcsIEZ1bmN0aW9uPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnc3BhbiB1c2VyLWFnZW50JzogKHN0cjogc3RyaW5nKSA9PiB0aGlzLmNoYWxrLmdyZXkoc3RyKSxcblxuICAgICAgICAgICAgJ3NwYW4gc3VidGl0bGUnOiAoc3RyOiBzdHJpbmcpID0+IGAtICR7dGhpcy5jaGFsay5ib2xkLnJlZChzdHIpfSAtYCxcbiAgICAgICAgICAgICdkaXYgbWVzc2FnZSc6ICAgKHN0cjogc3RyaW5nKSA9PiB0aGlzLmNoYWxrLmJvbGQucmVkKHN0ciksXG5cbiAgICAgICAgICAgICdkaXYgc2NyZWVuc2hvdC1pbmZvJzogaWRlbnRpdHksXG4gICAgICAgICAgICAnYSBzY3JlZW5zaG90LXBhdGgnOiAgIChzdHI6IHN0cmluZykgPT4gdGhpcy5jaGFsay5ncmV5LnVuZGVybGluZShzdHIpLFxuXG4gICAgICAgICAgICAnY29kZSc6IGlkZW50aXR5LFxuXG4gICAgICAgICAgICAnc3BhbiBzeW50YXgtc3RyaW5nJzogICAgIChzdHI6IHN0cmluZykgPT4gdGhpcy5jaGFsay5ncmVlbihzdHIpLFxuICAgICAgICAgICAgJ3NwYW4gc3ludGF4LXB1bmN0dWF0b3InOiAoc3RyOiBzdHJpbmcpID0+IHRoaXMuY2hhbGsuZ3JleShzdHIpLFxuICAgICAgICAgICAgJ3NwYW4gc3ludGF4LWtleXdvcmQnOiAgICAoc3RyOiBzdHJpbmcpID0+IHRoaXMuY2hhbGsuY3lhbihzdHIpLFxuICAgICAgICAgICAgJ3NwYW4gc3ludGF4LW51bWJlcic6ICAgICAoc3RyOiBzdHJpbmcpID0+IHRoaXMuY2hhbGsubWFnZW50YShzdHIpLFxuICAgICAgICAgICAgJ3NwYW4gc3ludGF4LXJlZ2V4JzogICAgICAoc3RyOiBzdHJpbmcpID0+IHRoaXMuY2hhbGsubWFnZW50YShzdHIpLFxuICAgICAgICAgICAgJ3NwYW4gc3ludGF4LWNvbW1lbnQnOiAgICAoc3RyOiBzdHJpbmcpID0+IHRoaXMuY2hhbGsuZ3JleS5ib2xkKHN0ciksXG4gICAgICAgICAgICAnc3BhbiBzeW50YXgtaW52YWxpZCc6ICAgIChzdHI6IHN0cmluZykgPT4gdGhpcy5jaGFsay5pbnZlcnNlKHN0ciksXG5cbiAgICAgICAgICAgIFtgc3BhbiAke0RJRkZfQ09MT1JTLkRJRkZfTk9UX01PRElGSUVEfWBdOiAoc3RyOiBzdHJpbmcpID0+IHRoaXMuY2hhbGsuZ3JheShzdHIpLFxuICAgICAgICAgICAgW2BzcGFuICR7RElGRl9DT0xPUlMuRElGRl9BRERFRH1gXTogICAgICAgIChzdHI6IHN0cmluZykgPT4gdGhpcy5jaGFsay5ncmVlbihzdHIpLFxuICAgICAgICAgICAgW2BzcGFuICR7RElGRl9DT0xPUlMuRElGRl9SRU1PVkVEfWBdOiAgICAgIChzdHI6IHN0cmluZykgPT4gdGhpcy5jaGFsay5yZWQoc3RyKSxcblxuICAgICAgICAgICAgJ2RpdiBjb2RlLWZyYW1lJzogICAgICAgICBpZGVudGl0eSxcbiAgICAgICAgICAgICdkaXYgY29kZS1saW5lJzogICAgICAgICAgKHN0cjogc3RyaW5nKSA9PiBzdHIgKyAnXFxuJyxcbiAgICAgICAgICAgICdkaXYgY29kZS1saW5lLWxhc3QnOiAgICAgaWRlbnRpdHksXG4gICAgICAgICAgICAnZGl2IGNvZGUtbGluZS1udW0nOiAgICAgIChzdHI6IHN0cmluZykgPT4gYCAgICR7c3RyfSB8YCxcbiAgICAgICAgICAgICdkaXYgY29kZS1saW5lLW51bS1iYXNlJzogKHN0cjogc3RyaW5nKSA9PiB0aGlzLmNoYWxrLmJnUmVkKGAgPiAke3N0cn0gYCkgKyAnfCcsXG4gICAgICAgICAgICAnZGl2IGNvZGUtbGluZS1zcmMnOiAgICAgIGlkZW50aXR5LFxuXG4gICAgICAgICAgICAnZGl2IHN0YWNrJzogICAgICAgICAgICAgICAoc3RyOiBzdHJpbmcpID0+ICdcXG5cXG4nICsgc3RyLFxuICAgICAgICAgICAgJ2RpdiBzdGFjay1saW5lJzogICAgICAgICAgKHN0cjogc3RyaW5nKSA9PiBzdHIgKyAnXFxuJyxcbiAgICAgICAgICAgICdkaXYgc3RhY2stbGluZS1sYXN0JzogICAgIGlkZW50aXR5LFxuICAgICAgICAgICAgJ2RpdiBzdGFjay1saW5lLW5hbWUnOiAgICAgKHN0cjogc3RyaW5nKSA9PiBgICAgYXQgJHt0aGlzLmNoYWxrLmJvbGQoc3RyKX1gLFxuICAgICAgICAgICAgJ2RpdiBzdGFjay1saW5lLWxvY2F0aW9uJzogKHN0cjogc3RyaW5nKSA9PiBgICgke3RoaXMuY2hhbGsuZ3JleS51bmRlcmxpbmUoc3RyKX0pYCxcblxuICAgICAgICAgICAgJ3N0cm9uZyc6IChzdHI6IHN0cmluZykgPT4gdGhpcy5jaGFsay5ib2xkKHN0ciksXG4gICAgICAgICAgICAnYSc6ICAgICAgKHN0cjogc3RyaW5nKSA9PiBgXCIke3RoaXMuY2hhbGsudW5kZXJsaW5lKHN0cil9XCJgXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gU3RyaW5nIGhlbHBlcnNcbiAgICBwdWJsaWMgaW5kZW50U3RyaW5nIChzdHI6IHN0cmluZywgaW5kZW50VmFsOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaW5kZW50U3RyaW5nKHN0ciwgJyAnLCBpbmRlbnRWYWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3b3JkV3JhcCAoc3RyOiBzdHJpbmcsIGluZGVudFZhbDogbnVtYmVyLCB3aWR0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHdvcmRXcmFwKHN0ciwgaW5kZW50VmFsLCB3aWR0aCk7XG4gICAgfVxuXG4gICAgcHVibGljIGVzY2FwZUh0bWwgKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGVzY2FwZUh0bWwoc3RyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9ybWF0RXJyb3IgKGVycjogVGVzdFJ1bkVycm9yRm9ybWF0dGFibGVBZGFwdGVyLCBwcmVmaXggPSAnJyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHByZWZpeExlbmd0aFdpdGhvdXRDb2xvcnMgPSByZW1vdmVUVFlDb2xvcnMocHJlZml4KS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IG1heE1zZ0xlbmd0aCAgICAgICAgICAgICAgPSB0aGlzLnZpZXdwb3J0V2lkdGggLSB0aGlzW2luZGVudF0gLSBwcmVmaXhMZW5ndGhXaXRob3V0Q29sb3JzO1xuXG4gICAgICAgIGxldCBtc2cgPSBlcnIuZm9ybWF0TWVzc2FnZSh0aGlzW2Vycm9yRGVjb3JhdG9yXSwgbWF4TXNnTGVuZ3RoKTtcblxuICAgICAgICBpZiAodGhpc1t3b3JkV3JhcEVuYWJsZWRdKVxuICAgICAgICAgICAgbXNnID0gdGhpcy53b3JkV3JhcChtc2csIHByZWZpeExlbmd0aFdpdGhvdXRDb2xvcnMsIG1heE1zZ0xlbmd0aCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1zZyA9IHRoaXMuaW5kZW50U3RyaW5nKG1zZywgcHJlZml4TGVuZ3RoV2l0aG91dENvbG9ycyk7XG5cbiAgICAgICAgcmV0dXJuIHByZWZpeCArIG1zZy5zdWJzdHIocHJlZml4TGVuZ3RoV2l0aG91dENvbG9ycyk7XG4gICAgfVxuXG5cbiAgICAvLyBXcml0aW5nIGhlbHBlcnNcbiAgICBwdWJsaWMgbmV3bGluZSAoKTogUmVwb3J0ZXJQbHVnaW5Ib3N0IHtcbiAgICAgICAgdGhpcy5fd3JpdGVUb1VuaXF1ZVN0cmVhbSgnXFxuJyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlICh0ZXh0OiBzdHJpbmcpOiBSZXBvcnRlclBsdWdpbkhvc3Qge1xuICAgICAgICBpZiAodGhpc1t3b3JkV3JhcEVuYWJsZWRdKVxuICAgICAgICAgICAgdGV4dCA9IHRoaXMud29yZFdyYXAodGV4dCwgdGhpc1tpbmRlbnRdLCB0aGlzLnZpZXdwb3J0V2lkdGgpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0ZXh0ID0gdGhpcy5pbmRlbnRTdHJpbmcodGV4dCwgdGhpc1tpbmRlbnRdKTtcblxuICAgICAgICB0aGlzLl93cml0ZVRvVW5pcXVlU3RyZWFtKHRleHQpO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB1c2VXb3JkV3JhcCAodXNlOiBib29sZWFuKTogUmVwb3J0ZXJQbHVnaW5Ib3N0IHtcbiAgICAgICAgdGhpc1t3b3JkV3JhcEVuYWJsZWRdID0gdXNlO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRJbmRlbnQgKHZhbDogbnVtYmVyKTogUmVwb3J0ZXJQbHVnaW5Ib3N0IHtcbiAgICAgICAgdGhpc1tpbmRlbnRdID0gdmFsO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3dyaXRlVG9VbmlxdWVTdHJlYW0gKHRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc3RyZWFtQ29udHJvbGxlciB8fCB0aGlzLnN0cmVhbUNvbnRyb2xsZXIuZW5zdXJlVW5pcXVlU3RyZWFtKHRoaXNbc3RyZWFtXSwgdGhpcykpXG4gICAgICAgICAgICB0aGlzW3N0cmVhbV0ud3JpdGUodGV4dCk7XG4gICAgfVxuXG5cbiAgICAvLyBBYnN0cmFjdCBtZXRob2RzIGltcGxlbWVudGVkIGluIHBsdWdpblxuICAgIHB1YmxpYyBhc3luYyByZXBvcnRUYXNrU3RhcnQgKC8qIHN0YXJ0VGltZSwgdXNlckFnZW50cywgdGVzdENvdW50LCB0ZXN0U3RydWN0dXJlLCB0YXNrUHJvcGVydGllcyAqLyk6IFByb21pc2U8bmV2ZXI+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVwb3J0Rml4dHVyZVN0YXJ0ICgvKiBuYW1lLCBwYXRoICovKTogUHJvbWlzZTxuZXZlcj4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cblxuICAgIC8vIE5PVEU6IEl0J3MgYW4gb3B0aW9uYWwgbWV0aG9kXG4gICAgLy8gYXN5bmMgcmVwb3J0VGVzdFN0YXJ0ICgvKiBuYW1lLCB0ZXN0TWV0YSAqLykge1xuICAgIC8vICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIC8vIH1cblxuICAgIHB1YmxpYyBhc3luYyByZXBvcnRUZXN0RG9uZSAoLyogbmFtZSwgdGVzdFJ1bkluZm8gKi8pOiBQcm9taXNlPG5ldmVyPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlcG9ydFRhc2tEb25lICgvKiBlbmRUaW1lLCBwYXNzZWQsIHdhcm5pbmdzICovKTogUHJvbWlzZTxuZXZlcj4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const ReporterPluginMethod = {
|
|
4
|
-
reportTaskStart: 'reportTaskStart',
|
|
5
|
-
reportFixtureStart: 'reportFixtureStart',
|
|
6
|
-
reportTestStart: 'reportTestStart',
|
|
7
|
-
reportTestActionStart: 'reportTestActionStart',
|
|
8
|
-
reportTestActionDone: 'reportTestActionDone',
|
|
9
|
-
reportTestDone: 'reportTestDone',
|
|
10
|
-
reportTaskDone: 'reportTaskDone'
|
|
11
|
-
};
|
|
12
|
-
exports.default = ReporterPluginMethod;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const ReporterPluginMethod = {
|
|
4
|
+
reportTaskStart: 'reportTaskStart',
|
|
5
|
+
reportFixtureStart: 'reportFixtureStart',
|
|
6
|
+
reportTestStart: 'reportTestStart',
|
|
7
|
+
reportTestActionStart: 'reportTestActionStart',
|
|
8
|
+
reportTestActionDone: 'reportTestActionDone',
|
|
9
|
+
reportTestDone: 'reportTestDone',
|
|
10
|
+
reportTaskDone: 'reportTaskDone'
|
|
11
|
+
};
|
|
12
|
+
exports.default = ReporterPluginMethod;
|
|
13
13
|
module.exports = exports.default;
|
|
14
14
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLW1ldGhvZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVwb3J0ZXIvcGx1Z2luLW1ldGhvZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSxNQUFNLG9CQUFvQixHQUF5QztJQUMvRCxlQUFlLEVBQVEsaUJBQWlCO0lBQ3hDLGtCQUFrQixFQUFLLG9CQUFvQjtJQUMzQyxlQUFlLEVBQVEsaUJBQWlCO0lBQ3hDLHFCQUFxQixFQUFFLHVCQUF1QjtJQUM5QyxvQkFBb0IsRUFBRyxzQkFBc0I7SUFDN0MsY0FBYyxFQUFTLGdCQUFnQjtJQUN2QyxjQUFjLEVBQVMsZ0JBQWdCO0NBQzFDLENBQUM7QUFFRixrQkFBZSxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcG9ydGVyUGx1Z2luIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEVudW1Gcm9tUHJvcGVydGllc09mIH0gZnJvbSAnLi4vdXRpbHMvdHlwZXMnO1xuXG5jb25zdCBSZXBvcnRlclBsdWdpbk1ldGhvZDogRW51bUZyb21Qcm9wZXJ0aWVzT2Y8UmVwb3J0ZXJQbHVnaW4+ID0ge1xuICAgIHJlcG9ydFRhc2tTdGFydDogICAgICAgJ3JlcG9ydFRhc2tTdGFydCcsXG4gICAgcmVwb3J0Rml4dHVyZVN0YXJ0OiAgICAncmVwb3J0Rml4dHVyZVN0YXJ0JyxcbiAgICByZXBvcnRUZXN0U3RhcnQ6ICAgICAgICdyZXBvcnRUZXN0U3RhcnQnLFxuICAgIHJlcG9ydFRlc3RBY3Rpb25TdGFydDogJ3JlcG9ydFRlc3RBY3Rpb25TdGFydCcsXG4gICAgcmVwb3J0VGVzdEFjdGlvbkRvbmU6ICAncmVwb3J0VGVzdEFjdGlvbkRvbmUnLFxuICAgIHJlcG9ydFRlc3REb25lOiAgICAgICAgJ3JlcG9ydFRlc3REb25lJyxcbiAgICByZXBvcnRUYXNrRG9uZTogICAgICAgICdyZXBvcnRUYXNrRG9uZSdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlcG9ydGVyUGx1Z2luTWV0aG9kO1xuIl19
|
package/lib/role/index.js
CHANGED
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.createAnonymousRole = exports.createRole = void 0;
|
|
7
|
-
const events_1 = require("events");
|
|
8
|
-
const nanoid_1 = __importDefault(require("nanoid"));
|
|
9
|
-
const phase_1 = __importDefault(require("./phase"));
|
|
10
|
-
const type_assertions_1 = require("../errors/runtime/type-assertions");
|
|
11
|
-
const wrap_test_function_1 = __importDefault(require("../api/wrap-test-function"));
|
|
12
|
-
const test_page_url_1 = require("../api/test-page-url");
|
|
13
|
-
const marker_symbol_1 = __importDefault(require("./marker-symbol"));
|
|
14
|
-
const testcafe_hammerhead_1 = require("testcafe-hammerhead");
|
|
15
|
-
class Role extends events_1.EventEmitter {
|
|
16
|
-
constructor(loginUrl, initFn, options = {}) {
|
|
17
|
-
super();
|
|
18
|
-
// @ts-ignore
|
|
19
|
-
this[marker_symbol_1.default] = true;
|
|
20
|
-
this.id = nanoid_1.default(7);
|
|
21
|
-
this.phase = loginUrl ? phase_1.default.uninitialized : phase_1.default.initialized;
|
|
22
|
-
this.loginUrl = loginUrl;
|
|
23
|
-
this._initFn = initFn;
|
|
24
|
-
this.opts = options;
|
|
25
|
-
this.redirectUrl = null;
|
|
26
|
-
this.stateSnapshot = testcafe_hammerhead_1.StateSnapshot.empty();
|
|
27
|
-
this.initErr = null;
|
|
28
|
-
}
|
|
29
|
-
async _storeStateSnapshot(testRun) {
|
|
30
|
-
if (this.initErr)
|
|
31
|
-
return;
|
|
32
|
-
this.stateSnapshot = await testRun.getStateSnapshot();
|
|
33
|
-
}
|
|
34
|
-
async _executeInitFn(testRun) {
|
|
35
|
-
try {
|
|
36
|
-
let fn = () => this._initFn(testRun);
|
|
37
|
-
fn = testRun.decoratePreventEmitActionEvents(fn, { prevent: false });
|
|
38
|
-
fn = testRun.decorateDisableDebugBreakpoints(fn, { disable: false });
|
|
39
|
-
await fn();
|
|
40
|
-
}
|
|
41
|
-
catch (err) {
|
|
42
|
-
this.initErr = err;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
async initialize(testRun) {
|
|
46
|
-
this.phase = phase_1.default.pendingInitialization;
|
|
47
|
-
await testRun.switchToCleanRun(this.loginUrl);
|
|
48
|
-
await this._executeInitFn(testRun);
|
|
49
|
-
await this._storeStateSnapshot(testRun);
|
|
50
|
-
if (this.opts.preserveUrl)
|
|
51
|
-
await this.setCurrentUrlAsRedirectUrl(testRun);
|
|
52
|
-
this.phase = phase_1.default.initialized;
|
|
53
|
-
this.emit('initialized');
|
|
54
|
-
}
|
|
55
|
-
async setCurrentUrlAsRedirectUrl(testRun) {
|
|
56
|
-
this.redirectUrl = await testRun.getCurrentUrl();
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
function createRole(loginUrl, initFn, options = { preserveUrl: false }) {
|
|
60
|
-
type_assertions_1.assertType(type_assertions_1.is.string, 'Role', '"loginUrl" argument', loginUrl);
|
|
61
|
-
type_assertions_1.assertType(type_assertions_1.is.function, 'Role', '"initFn" argument', initFn);
|
|
62
|
-
type_assertions_1.assertType(type_assertions_1.is.nonNullObject, 'Role', '"options" argument', options);
|
|
63
|
-
if (options.preserveUrl !== void 0)
|
|
64
|
-
type_assertions_1.assertType(type_assertions_1.is.boolean, 'Role', '"preserveUrl" option', options.preserveUrl);
|
|
65
|
-
test_page_url_1.assertRoleUrl(loginUrl, 'Role');
|
|
66
|
-
loginUrl = test_page_url_1.getUrl(loginUrl);
|
|
67
|
-
initFn = wrap_test_function_1.default(initFn);
|
|
68
|
-
return new Role(loginUrl, initFn, options);
|
|
69
|
-
}
|
|
70
|
-
exports.createRole = createRole;
|
|
71
|
-
function createAnonymousRole() {
|
|
72
|
-
return new Role(null, null);
|
|
73
|
-
}
|
|
74
|
-
exports.createAnonymousRole = createAnonymousRole;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createAnonymousRole = exports.createRole = void 0;
|
|
7
|
+
const events_1 = require("events");
|
|
8
|
+
const nanoid_1 = __importDefault(require("nanoid"));
|
|
9
|
+
const phase_1 = __importDefault(require("./phase"));
|
|
10
|
+
const type_assertions_1 = require("../errors/runtime/type-assertions");
|
|
11
|
+
const wrap_test_function_1 = __importDefault(require("../api/wrap-test-function"));
|
|
12
|
+
const test_page_url_1 = require("../api/test-page-url");
|
|
13
|
+
const marker_symbol_1 = __importDefault(require("./marker-symbol"));
|
|
14
|
+
const testcafe_hammerhead_1 = require("testcafe-hammerhead");
|
|
15
|
+
class Role extends events_1.EventEmitter {
|
|
16
|
+
constructor(loginUrl, initFn, options = {}) {
|
|
17
|
+
super();
|
|
18
|
+
// @ts-ignore
|
|
19
|
+
this[marker_symbol_1.default] = true;
|
|
20
|
+
this.id = nanoid_1.default(7);
|
|
21
|
+
this.phase = loginUrl ? phase_1.default.uninitialized : phase_1.default.initialized;
|
|
22
|
+
this.loginUrl = loginUrl;
|
|
23
|
+
this._initFn = initFn;
|
|
24
|
+
this.opts = options;
|
|
25
|
+
this.redirectUrl = null;
|
|
26
|
+
this.stateSnapshot = testcafe_hammerhead_1.StateSnapshot.empty();
|
|
27
|
+
this.initErr = null;
|
|
28
|
+
}
|
|
29
|
+
async _storeStateSnapshot(testRun) {
|
|
30
|
+
if (this.initErr)
|
|
31
|
+
return;
|
|
32
|
+
this.stateSnapshot = await testRun.getStateSnapshot();
|
|
33
|
+
}
|
|
34
|
+
async _executeInitFn(testRun) {
|
|
35
|
+
try {
|
|
36
|
+
let fn = () => this._initFn(testRun);
|
|
37
|
+
fn = testRun.decoratePreventEmitActionEvents(fn, { prevent: false });
|
|
38
|
+
fn = testRun.decorateDisableDebugBreakpoints(fn, { disable: false });
|
|
39
|
+
await fn();
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
this.initErr = err;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async initialize(testRun) {
|
|
46
|
+
this.phase = phase_1.default.pendingInitialization;
|
|
47
|
+
await testRun.switchToCleanRun(this.loginUrl);
|
|
48
|
+
await this._executeInitFn(testRun);
|
|
49
|
+
await this._storeStateSnapshot(testRun);
|
|
50
|
+
if (this.opts.preserveUrl)
|
|
51
|
+
await this.setCurrentUrlAsRedirectUrl(testRun);
|
|
52
|
+
this.phase = phase_1.default.initialized;
|
|
53
|
+
this.emit('initialized');
|
|
54
|
+
}
|
|
55
|
+
async setCurrentUrlAsRedirectUrl(testRun) {
|
|
56
|
+
this.redirectUrl = await testRun.getCurrentUrl();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function createRole(loginUrl, initFn, options = { preserveUrl: false }) {
|
|
60
|
+
type_assertions_1.assertType(type_assertions_1.is.string, 'Role', '"loginUrl" argument', loginUrl);
|
|
61
|
+
type_assertions_1.assertType(type_assertions_1.is.function, 'Role', '"initFn" argument', initFn);
|
|
62
|
+
type_assertions_1.assertType(type_assertions_1.is.nonNullObject, 'Role', '"options" argument', options);
|
|
63
|
+
if (options.preserveUrl !== void 0)
|
|
64
|
+
type_assertions_1.assertType(type_assertions_1.is.boolean, 'Role', '"preserveUrl" option', options.preserveUrl);
|
|
65
|
+
test_page_url_1.assertRoleUrl(loginUrl, 'Role');
|
|
66
|
+
loginUrl = test_page_url_1.getUrl(loginUrl);
|
|
67
|
+
initFn = wrap_test_function_1.default(initFn);
|
|
68
|
+
return new Role(loginUrl, initFn, options);
|
|
69
|
+
}
|
|
70
|
+
exports.createRole = createRole;
|
|
71
|
+
function createAnonymousRole() {
|
|
72
|
+
return new Role(null, null);
|
|
73
|
+
}
|
|
74
|
+
exports.createAnonymousRole = createAnonymousRole;
|
|
75
75
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm9sZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtQ0FBc0M7QUFDdEMsb0RBQTRCO0FBQzVCLG9EQUFnQztBQUNoQyx1RUFBbUU7QUFDbkUsbUZBQXlEO0FBQ3pELHdEQUE2RDtBQUM3RCxvRUFBeUM7QUFDekMsNkRBQW9EO0FBT3BELE1BQU0sSUFBSyxTQUFRLHFCQUFZO0lBVTNCLFlBQW9CLFFBQXVCLEVBQUUsTUFBdUIsRUFBRSxPQUFPLEdBQUcsRUFBRTtRQUM5RSxLQUFLLEVBQUUsQ0FBQztRQUVSLGFBQWE7UUFDYixJQUFJLENBQUMsdUJBQVUsQ0FBQyxHQUFLLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsRUFBRSxHQUFjLGdCQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBVyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGVBQVMsQ0FBQyxXQUFXLENBQUM7UUFDaEYsSUFBSSxDQUFDLFFBQVEsR0FBUSxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBUyxNQUFNLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBWSxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBSyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxtQ0FBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxPQUFPLEdBQVMsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFTyxLQUFLLENBQUMsbUJBQW1CLENBQUUsT0FBZ0I7UUFDL0MsSUFBSSxJQUFJLENBQUMsT0FBTztZQUNaLE9BQU87UUFFWCxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUQsQ0FBQztJQUVPLEtBQUssQ0FBQyxjQUFjLENBQUUsT0FBZ0I7UUFDMUMsSUFBSTtZQUNBLElBQUksRUFBRSxHQUFHLEdBQWtCLEVBQUUsQ0FBRSxJQUFJLENBQUMsT0FBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVsRSxFQUFFLEdBQUcsT0FBTyxDQUFDLCtCQUErQixDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLEVBQUUsR0FBRyxPQUFPLENBQUMsK0JBQStCLENBQUMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFFckUsTUFBTSxFQUFFLEVBQUUsQ0FBQztTQUNkO1FBQ0QsT0FBTyxHQUFHLEVBQUU7WUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztTQUN0QjtJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVSxDQUFFLE9BQWdCO1FBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsZUFBUyxDQUFDLHFCQUFxQixDQUFDO1FBRTdDLE1BQU0sT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU5QyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFeEMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFDckIsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFTLENBQUMsV0FBVyxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLEtBQUssQ0FBQywwQkFBMEIsQ0FBRSxPQUFnQjtRQUNyRCxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3JELENBQUM7Q0FDSjtBQUVELFNBQWdCLFVBQVUsQ0FBRSxRQUFnQixFQUFFLE1BQWdCLEVBQUUsVUFBdUIsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFO0lBQ3pHLDRCQUFVLENBQUMsb0JBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9ELDRCQUFVLENBQUMsb0JBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdELDRCQUFVLENBQUMsb0JBQUUsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXBFLElBQUksT0FBTyxDQUFDLFdBQVcsS0FBSyxLQUFLLENBQUM7UUFDOUIsNEJBQVUsQ0FBQyxvQkFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRWhGLDZCQUFhLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRWhDLFFBQVEsR0FBRyxzQkFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLE1BQU0sR0FBSyw0QkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVwQyxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQWRELGdDQWNDO0FBRUQsU0FBZ0IsbUJBQW1CO0lBQy9CLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFGRCxrREFFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgbmFub2lkIGZyb20gJ25hbm9pZCc7XG5pbXBvcnQgUm9sZVBoYXNlIGZyb20gJy4vcGhhc2UnO1xuaW1wb3J0IHsgYXNzZXJ0VHlwZSwgaXMgfSBmcm9tICcuLi9lcnJvcnMvcnVudGltZS90eXBlLWFzc2VydGlvbnMnO1xuaW1wb3J0IHdyYXBUZXN0RnVuY3Rpb24gZnJvbSAnLi4vYXBpL3dyYXAtdGVzdC1mdW5jdGlvbic7XG5pbXBvcnQgeyBnZXRVcmwsIGFzc2VydFJvbGVVcmwgfSBmcm9tICcuLi9hcGkvdGVzdC1wYWdlLXVybCc7XG5pbXBvcnQgcm9sZU1hcmtlciBmcm9tICcuL21hcmtlci1zeW1ib2wnO1xuaW1wb3J0IHsgU3RhdGVTbmFwc2hvdCB9IGZyb20gJ3Rlc3RjYWZlLWhhbW1lcmhlYWQnO1xuaW1wb3J0IFRlc3RSdW4gZnJvbSAnLi4vdGVzdC1ydW4nO1xuXG5pbnRlcmZhY2UgUm9sZU9wdGlvbnMge1xuICAgIHByZXNlcnZlVXJsPzogYm9vbGVhbjtcbn1cblxuY2xhc3MgUm9sZSBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gICAgcHVibGljIGlkOiBzdHJpbmc7XG4gICAgcHVibGljIHBoYXNlOiBSb2xlUGhhc2U7XG4gICAgcHVibGljIGxvZ2luVXJsOiBzdHJpbmcgfCBudWxsO1xuICAgIHB1YmxpYyByZWRpcmVjdFVybDogc3RyaW5nIHwgbnVsbDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9pbml0Rm46IEZ1bmN0aW9uIHwgbnVsbDtcbiAgICBwdWJsaWMgb3B0czogUm9sZU9wdGlvbnM7XG4gICAgcHVibGljIGluaXRFcnI6IG51bGwgfCBFcnJvcjtcbiAgICBwdWJsaWMgc3RhdGVTbmFwc2hvdDogU3RhdGVTbmFwc2hvdDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAobG9naW5Vcmw6IHN0cmluZyB8IG51bGwsIGluaXRGbjogRnVuY3Rpb24gfCBudWxsLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXNbcm9sZU1hcmtlcl0gICA9IHRydWU7XG4gICAgICAgIHRoaXMuaWQgICAgICAgICAgICA9IG5hbm9pZCg3KTtcbiAgICAgICAgdGhpcy5waGFzZSAgICAgICAgID0gbG9naW5VcmwgPyBSb2xlUGhhc2UudW5pbml0aWFsaXplZCA6IFJvbGVQaGFzZS5pbml0aWFsaXplZDtcbiAgICAgICAgdGhpcy5sb2dpblVybCAgICAgID0gbG9naW5Vcmw7XG4gICAgICAgIHRoaXMuX2luaXRGbiAgICAgICA9IGluaXRGbjtcbiAgICAgICAgdGhpcy5vcHRzICAgICAgICAgID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy5yZWRpcmVjdFVybCAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdGF0ZVNuYXBzaG90ID0gU3RhdGVTbmFwc2hvdC5lbXB0eSgpO1xuICAgICAgICB0aGlzLmluaXRFcnIgICAgICAgPSBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3N0b3JlU3RhdGVTbmFwc2hvdCAodGVzdFJ1bjogVGVzdFJ1bik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5pbml0RXJyKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTbmFwc2hvdCA9IGF3YWl0IHRlc3RSdW4uZ2V0U3RhdGVTbmFwc2hvdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2V4ZWN1dGVJbml0Rm4gKHRlc3RSdW46IFRlc3RSdW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBmbiA9ICgpOiBQcm9taXNlPHZvaWQ+ID0+ICh0aGlzLl9pbml0Rm4gYXMgRnVuY3Rpb24pKHRlc3RSdW4pO1xuXG4gICAgICAgICAgICBmbiA9IHRlc3RSdW4uZGVjb3JhdGVQcmV2ZW50RW1pdEFjdGlvbkV2ZW50cyhmbiwgeyBwcmV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIGZuID0gdGVzdFJ1bi5kZWNvcmF0ZURpc2FibGVEZWJ1Z0JyZWFrcG9pbnRzKGZuLCB7IGRpc2FibGU6IGZhbHNlIH0pO1xuXG4gICAgICAgICAgICBhd2FpdCBmbigpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdEVyciA9IGVycjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0aWFsaXplICh0ZXN0UnVuOiBUZXN0UnVuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMucGhhc2UgPSBSb2xlUGhhc2UucGVuZGluZ0luaXRpYWxpemF0aW9uO1xuXG4gICAgICAgIGF3YWl0IHRlc3RSdW4uc3dpdGNoVG9DbGVhblJ1bih0aGlzLmxvZ2luVXJsKTtcblxuICAgICAgICBhd2FpdCB0aGlzLl9leGVjdXRlSW5pdEZuKHRlc3RSdW4pO1xuICAgICAgICBhd2FpdCB0aGlzLl9zdG9yZVN0YXRlU25hcHNob3QodGVzdFJ1bik7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0cy5wcmVzZXJ2ZVVybClcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0Q3VycmVudFVybEFzUmVkaXJlY3RVcmwodGVzdFJ1bik7XG5cbiAgICAgICAgdGhpcy5waGFzZSA9IFJvbGVQaGFzZS5pbml0aWFsaXplZDtcbiAgICAgICAgdGhpcy5lbWl0KCdpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRDdXJyZW50VXJsQXNSZWRpcmVjdFVybCAodGVzdFJ1bjogVGVzdFJ1bik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnJlZGlyZWN0VXJsID0gYXdhaXQgdGVzdFJ1bi5nZXRDdXJyZW50VXJsKCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUm9sZSAobG9naW5Vcmw6IHN0cmluZywgaW5pdEZuOiBGdW5jdGlvbiwgb3B0aW9uczogUm9sZU9wdGlvbnMgPSB7IHByZXNlcnZlVXJsOiBmYWxzZSB9KTogUm9sZSB7XG4gICAgYXNzZXJ0VHlwZShpcy5zdHJpbmcsICdSb2xlJywgJ1wibG9naW5VcmxcIiBhcmd1bWVudCcsIGxvZ2luVXJsKTtcbiAgICBhc3NlcnRUeXBlKGlzLmZ1bmN0aW9uLCAnUm9sZScsICdcImluaXRGblwiIGFyZ3VtZW50JywgaW5pdEZuKTtcbiAgICBhc3NlcnRUeXBlKGlzLm5vbk51bGxPYmplY3QsICdSb2xlJywgJ1wib3B0aW9uc1wiIGFyZ3VtZW50Jywgb3B0aW9ucyk7XG5cbiAgICBpZiAob3B0aW9ucy5wcmVzZXJ2ZVVybCAhPT0gdm9pZCAwKVxuICAgICAgICBhc3NlcnRUeXBlKGlzLmJvb2xlYW4sICdSb2xlJywgJ1wicHJlc2VydmVVcmxcIiBvcHRpb24nLCBvcHRpb25zLnByZXNlcnZlVXJsKTtcblxuICAgIGFzc2VydFJvbGVVcmwobG9naW5VcmwsICdSb2xlJyk7XG5cbiAgICBsb2dpblVybCA9IGdldFVybChsb2dpblVybCk7XG4gICAgaW5pdEZuICAgPSB3cmFwVGVzdEZ1bmN0aW9uKGluaXRGbik7XG5cbiAgICByZXR1cm4gbmV3IFJvbGUobG9naW5VcmwsIGluaXRGbiwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBbm9ueW1vdXNSb2xlICgpOiBSb2xlIHtcbiAgICByZXR1cm4gbmV3IFJvbGUobnVsbCwgbnVsbCk7XG59XG4iXX0=
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*global Symbol*/
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
// HACK: used to validate that UseRoleCommand argument value
|
|
5
|
-
// is a Role. With the marker symbol approach we can safely use
|
|
6
|
-
// commands in Role without circular reference.
|
|
7
|
-
exports.default = Symbol('testRun');
|
|
1
|
+
"use strict";
|
|
2
|
+
/*global Symbol*/
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
// HACK: used to validate that UseRoleCommand argument value
|
|
5
|
+
// is a Role. With the marker symbol approach we can safely use
|
|
6
|
+
// commands in Role without circular reference.
|
|
7
|
+
exports.default = Symbol('testRun');
|
|
8
8
|
module.exports = exports.default;
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2VyLXN5bWJvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yb2xlL21hcmtlci1zeW1ib2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGlCQUFpQjs7QUFFakIsNERBQTREO0FBQzVELCtEQUErRDtBQUMvRCwrQ0FBK0M7QUFDL0Msa0JBQWUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypnbG9iYWwgU3ltYm9sKi9cblxuLy8gSEFDSzogdXNlZCB0byB2YWxpZGF0ZSB0aGF0IFVzZVJvbGVDb21tYW5kIGFyZ3VtZW50IHZhbHVlXG4vLyBpcyBhIFJvbGUuIFdpdGggdGhlIG1hcmtlciBzeW1ib2wgYXBwcm9hY2ggd2UgY2FuIHNhZmVseSB1c2Vcbi8vIGNvbW1hbmRzIGluIFJvbGUgd2l0aG91dCBjaXJjdWxhciByZWZlcmVuY2UuXG5leHBvcnQgZGVmYXVsdCBTeW1ib2woJ3Rlc3RSdW4nKTtcbiJdfQ==
|
package/lib/role/phase.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var RolePhase;
|
|
4
|
-
(function (RolePhase) {
|
|
5
|
-
RolePhase["uninitialized"] = "uninitialized";
|
|
6
|
-
RolePhase["pendingInitialization"] = "pendingInitialization";
|
|
7
|
-
RolePhase["initialized"] = "initialized";
|
|
8
|
-
})(RolePhase || (RolePhase = {}));
|
|
9
|
-
exports.default = RolePhase;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var RolePhase;
|
|
4
|
+
(function (RolePhase) {
|
|
5
|
+
RolePhase["uninitialized"] = "uninitialized";
|
|
6
|
+
RolePhase["pendingInitialization"] = "pendingInitialization";
|
|
7
|
+
RolePhase["initialized"] = "initialized";
|
|
8
|
+
})(RolePhase || (RolePhase = {}));
|
|
9
|
+
exports.default = RolePhase;
|
|
10
10
|
module.exports = exports.default;
|
|
11
11
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm9sZS9waGFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLElBQUssU0FJSjtBQUpELFdBQUssU0FBUztJQUNWLDRDQUErQixDQUFBO0lBQy9CLDREQUErQyxDQUFBO0lBQy9DLHdDQUEyQixDQUFBO0FBQy9CLENBQUMsRUFKSSxTQUFTLEtBQVQsU0FBUyxRQUliO0FBRUQsa0JBQWUsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZW51bSBSb2xlUGhhc2Uge1xuICAgIHVuaW5pdGlhbGl6ZWQgPSAndW5pbml0aWFsaXplZCcsXG4gICAgcGVuZGluZ0luaXRpYWxpemF0aW9uID0gJ3BlbmRpbmdJbml0aWFsaXphdGlvbicsXG4gICAgaW5pdGlhbGl6ZWQgPSAnaW5pdGlhbGl6ZWQnXG59XG5cbmV4cG9ydCBkZWZhdWx0IFJvbGVQaGFzZTtcbiJdfQ==
|