testcafe 2.2.0 → 2.3.0-rc.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/bin/testcafe-with-v8-flag-filter.js +16 -3
- package/lib/api/exportable-lib/index.mjs +27 -0
- package/lib/api/skip-js-errors/index.js +36 -12
- package/lib/api/structure/fixture.js +6 -1
- package/lib/api/structure/test.js +7 -1
- package/lib/browser/connection/gateway.js +13 -1
- package/lib/browser/connection/index.js +6 -1
- package/lib/browser/connection/service-routes.js +2 -1
- package/lib/browser/provider/built-in/dedicated/chrome/index.js +6 -1
- package/lib/browser/provider/index.js +4 -1
- package/lib/cli/argument-parser/index.js +58 -59
- package/lib/cli/cli.js +3 -2
- package/lib/client/automation/index.js +88 -4
- package/lib/client/automation/index.min.js +1 -1
- package/lib/client/browser/idle-page/index.js +7 -5
- package/lib/client/core/deps/hammerhead.js +24 -0
- package/lib/client/core/index.js +21 -6
- package/lib/client/core/index.min.js +1 -1
- package/lib/client/driver/index.js +140 -52
- package/lib/client/driver/index.min.js +1 -1
- package/lib/client/test-run/iframe.js.mustache +2 -1
- package/lib/client/test-run/index.js.mustache +30 -28
- package/lib/client/ui/index.js +30 -23
- package/lib/client/ui/index.min.js +1 -1
- package/lib/compiler/babel/load-libs.js +10 -9
- package/lib/compiler/compilers.js +7 -7
- package/lib/compiler/esm-loader.js +38 -0
- package/lib/compiler/index.js +8 -7
- package/lib/compiler/interfaces.js +1 -1
- package/lib/compiler/prevent-module-caching-suffix.js +6 -0
- package/lib/compiler/test-file/add-export-api.js +3 -9
- package/lib/compiler/test-file/api-based.js +30 -14
- package/lib/compiler/test-file/base.js +4 -1
- package/lib/compiler/test-file/formats/coffeescript/compiler.js +5 -4
- package/lib/compiler/test-file/formats/es-next/compiler.js +23 -11
- package/lib/compiler/test-file/formats/extensions.js +15 -0
- package/lib/compiler/test-file/formats/typescript/compiler.js +27 -17
- package/lib/compiler/test-file/get-exportable-lib-path.js +17 -0
- package/lib/configuration/option-names.js +2 -1
- package/lib/errors/is-internal-stack-frame.js +3 -2
- package/lib/errors/process-test-fn-error.js +3 -2
- package/lib/errors/runtime/index.js +18 -4
- package/lib/errors/runtime/templates.js +2 -1
- package/lib/errors/test-run/utils.js +8 -3
- package/lib/errors/types.js +2 -1
- package/lib/proxyless/api-base.js +25 -0
- package/lib/proxyless/client/event-simulator.js +35 -0
- package/lib/proxyless/client/types.js +11 -0
- package/lib/proxyless/client/utils.js +24 -0
- package/lib/proxyless/console-messages/formatter.js +23 -0
- package/lib/proxyless/console-messages/index.js +56 -0
- package/lib/proxyless/console-messages/types.js +5 -0
- package/lib/proxyless/index.js +29 -2
- package/lib/proxyless/js-error-handling/index.js +70 -0
- package/lib/proxyless/native-dialogs/index.js +40 -0
- package/lib/proxyless/request-pipeline/index.js +6 -3
- package/lib/proxyless/resource-injector.js +7 -3
- package/lib/proxyless/session-storage/index.js +30 -0
- package/lib/proxyless/types.js +8 -1
- package/lib/proxyless/utils/cdp.js +19 -2
- package/lib/runner/bootstrapper.js +3 -2
- package/lib/runner/browser-job.js +1 -1
- package/lib/services/compiler/service.js +4 -4
- package/lib/services/utils/ipc/interfaces.js +1 -1
- package/lib/services/utils/ipc/proxy.js +1 -4
- package/lib/shared/utils/is-file-protocol.js +9 -0
- package/lib/test-run/commands/actions.js +2 -2
- package/lib/test-run/index.js +36 -9
- package/lib/testcafe.js +3 -3
- package/lib/utils/async-event-emitter.js +1 -1
- package/lib/utils/convert-to-best-fit-type.js +1 -1
- package/lib/utils/get-options/base.js +1 -1
- package/lib/utils/setup-sourcemap-support.js +10 -4
- package/package.json +11 -7
- package/ts-defs/index.d.ts +4 -4
- package/ts-defs/selectors.d.ts +2 -2
- package/ts-defs/testcafe-scripts.d.ts +2 -2
- package/lib/compiler/test-file/exportble-lib-path.js +0 -7
|
@@ -0,0 +1,25 @@
|
|
|
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 connection_1 = __importDefault(require("../browser/connection"));
|
|
7
|
+
class ProxylessApiBase {
|
|
8
|
+
constructor(browserId, client) {
|
|
9
|
+
this._client = client;
|
|
10
|
+
this._browserConnection = connection_1.default.getById(browserId);
|
|
11
|
+
}
|
|
12
|
+
async init() {
|
|
13
|
+
throw new Error('Not implemented');
|
|
14
|
+
}
|
|
15
|
+
get _testRun() {
|
|
16
|
+
return this._browserConnection.getCurrentTestRun();
|
|
17
|
+
}
|
|
18
|
+
async _getCurrentUrl() {
|
|
19
|
+
const { frameTree } = await this._client.Page.getFrameTree();
|
|
20
|
+
return new URL(frameTree.frame.url);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.default = ProxylessApiBase;
|
|
24
|
+
module.exports = exports.default;
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJveHlsZXNzL2FwaS1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsdUVBQXNEO0FBR3RELE1BQXFCLGdCQUFnQjtJQUlqQyxZQUFhLFNBQWlCLEVBQUUsTUFBbUI7UUFDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLG9CQUFpQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQXNCLENBQUM7SUFDeEYsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJO1FBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFjLFFBQVE7UUFDbEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLEVBQWEsQ0FBQztJQUNsRSxDQUFDO0lBRVMsS0FBSyxDQUFDLGNBQWM7UUFDMUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFN0QsT0FBTyxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDSjtBQXRCRCxtQ0FzQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm90b2NvbEFwaSB9IGZyb20gJ2Nocm9tZS1yZW1vdGUtaW50ZXJmYWNlJztcbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvbiBmcm9tICcuLi9icm93c2VyL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IFRlc3RSdW4gZnJvbSAnLi4vdGVzdC1ydW4nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcm94eWxlc3NBcGlCYXNlIHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NsaWVudDogUHJvdG9jb2xBcGk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9icm93c2VyQ29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb247XG5cbiAgICBjb25zdHJ1Y3RvciAoYnJvd3NlcklkOiBzdHJpbmcsIGNsaWVudDogUHJvdG9jb2xBcGkpIHtcbiAgICAgICAgdGhpcy5fY2xpZW50ID0gY2xpZW50O1xuICAgICAgICB0aGlzLl9icm93c2VyQ29ubmVjdGlvbiA9IEJyb3dzZXJDb25uZWN0aW9uLmdldEJ5SWQoYnJvd3NlcklkKSBhcyBCcm93c2VyQ29ubmVjdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW5pdCAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBfdGVzdFJ1biAoKTogVGVzdFJ1biB7XG4gICAgICAgIHJldHVybiB0aGlzLl9icm93c2VyQ29ubmVjdGlvbi5nZXRDdXJyZW50VGVzdFJ1bigpIGFzIFRlc3RSdW47XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIF9nZXRDdXJyZW50VXJsICgpOiBQcm9taXNlPFVSTD4ge1xuICAgICAgICBjb25zdCB7IGZyYW1lVHJlZSB9ID0gYXdhaXQgdGhpcy5fY2xpZW50LlBhZ2UuZ2V0RnJhbWVUcmVlKCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBVUkwoZnJhbWVUcmVlLmZyYW1lLnVybCk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const types_1 = require("../types");
|
|
4
|
+
// @ts-ignore
|
|
5
|
+
const hammerhead_1 = require("../../client/core/deps/hammerhead");
|
|
6
|
+
const utils_1 = require("./utils");
|
|
7
|
+
const MOUSE_EVENT_OPTIONS = {
|
|
8
|
+
clickCount: 1,
|
|
9
|
+
button: 'left',
|
|
10
|
+
};
|
|
11
|
+
class ProxylessEventSimulator {
|
|
12
|
+
constructor(dispatchEventFn) {
|
|
13
|
+
this._dispatchEventFn = dispatchEventFn;
|
|
14
|
+
}
|
|
15
|
+
_createMouseEventOptions(type, options) {
|
|
16
|
+
return hammerhead_1.utils.extend({
|
|
17
|
+
x: options.options.clientX,
|
|
18
|
+
y: options.options.clientY,
|
|
19
|
+
modifiers: (0, utils_1.calculateKeyModifiersValue)(options.options),
|
|
20
|
+
button: (0, utils_1.calculateMouseButtonValue)(options.options),
|
|
21
|
+
type,
|
|
22
|
+
}, MOUSE_EVENT_OPTIONS);
|
|
23
|
+
}
|
|
24
|
+
mouseDown(options) {
|
|
25
|
+
const eventOptions = this._createMouseEventOptions('mousePressed', options);
|
|
26
|
+
return this._dispatchEventFn(types_1.EventType.Mouse, eventOptions);
|
|
27
|
+
}
|
|
28
|
+
mouseUp(options) {
|
|
29
|
+
const eventOptions = this._createMouseEventOptions('mouseReleased', options);
|
|
30
|
+
return this._dispatchEventFn(types_1.EventType.Mouse, eventOptions);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.default = ProxylessEventSimulator;
|
|
34
|
+
module.exports = exports.default;
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtc2ltdWxhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Byb3h5bGVzcy9jbGllbnQvZXZlbnQtc2ltdWxhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsb0NBQXFDO0FBQ3JDLGFBQWE7QUFDYixrRUFBMEQ7QUFDMUQsbUNBQWdGO0FBRWhGLE1BQU0sbUJBQW1CLEdBQUc7SUFDeEIsVUFBVSxFQUFFLENBQUM7SUFDYixNQUFNLEVBQU0sTUFBTTtDQUNyQixDQUFDO0FBRUYsTUFBcUIsdUJBQXVCO0lBR3hDLFlBQWEsZUFBeUI7UUFDbEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztJQUM1QyxDQUFDO0lBRU8sd0JBQXdCLENBQUUsSUFBWSxFQUFFLE9BQVk7UUFDeEQsT0FBTyxrQkFBSyxDQUFDLE1BQU0sQ0FBQztZQUNoQixDQUFDLEVBQVUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPO1lBQ2xDLENBQUMsRUFBVSxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU87WUFDbEMsU0FBUyxFQUFFLElBQUEsa0NBQTBCLEVBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUN0RCxNQUFNLEVBQUssSUFBQSxpQ0FBeUIsRUFBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ3JELElBQUk7U0FDUCxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVNLFNBQVMsQ0FBRSxPQUFZO1FBQzFCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFNUUsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQVMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVNLE9BQU8sQ0FBRSxPQUFZO1FBQ3hCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFN0UsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQVMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNKO0FBNUJELDBDQTRCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50VHlwZSB9IGZyb20gJy4uL3R5cGVzJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSAnLi4vLi4vY2xpZW50L2NvcmUvZGVwcy9oYW1tZXJoZWFkJztcbmltcG9ydCB7IGNhbGN1bGF0ZUtleU1vZGlmaWVyc1ZhbHVlLCBjYWxjdWxhdGVNb3VzZUJ1dHRvblZhbHVlIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IE1PVVNFX0VWRU5UX09QVElPTlMgPSB7XG4gICAgY2xpY2tDb3VudDogMSxcbiAgICBidXR0b246ICAgICAnbGVmdCcsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcm94eWxlc3NFdmVudFNpbXVsYXRvciB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwYXRjaEV2ZW50Rm46IEZ1bmN0aW9uO1xuICAgIGNvbnN0cnVjdG9yIChkaXNwYXRjaEV2ZW50Rm46IEZ1bmN0aW9uKSB7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoRXZlbnRGbiA9IGRpc3BhdGNoRXZlbnRGbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jcmVhdGVNb3VzZUV2ZW50T3B0aW9ucyAodHlwZTogc3RyaW5nLCBvcHRpb25zOiBhbnkpOiBhbnkge1xuICAgICAgICByZXR1cm4gdXRpbHMuZXh0ZW5kKHtcbiAgICAgICAgICAgIHg6ICAgICAgICAgb3B0aW9ucy5vcHRpb25zLmNsaWVudFgsXG4gICAgICAgICAgICB5OiAgICAgICAgIG9wdGlvbnMub3B0aW9ucy5jbGllbnRZLFxuICAgICAgICAgICAgbW9kaWZpZXJzOiBjYWxjdWxhdGVLZXlNb2RpZmllcnNWYWx1ZShvcHRpb25zLm9wdGlvbnMpLFxuICAgICAgICAgICAgYnV0dG9uOiAgICBjYWxjdWxhdGVNb3VzZUJ1dHRvblZhbHVlKG9wdGlvbnMub3B0aW9ucyksXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICB9LCBNT1VTRV9FVkVOVF9PUFRJT05TKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbW91c2VEb3duIChvcHRpb25zOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZXZlbnRPcHRpb25zID0gdGhpcy5fY3JlYXRlTW91c2VFdmVudE9wdGlvbnMoJ21vdXNlUHJlc3NlZCcsIG9wdGlvbnMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaEV2ZW50Rm4oRXZlbnRUeXBlLk1vdXNlLCBldmVudE9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBtb3VzZVVwIChvcHRpb25zOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZXZlbnRPcHRpb25zID0gdGhpcy5fY3JlYXRlTW91c2VFdmVudE9wdGlvbnMoJ21vdXNlUmVsZWFzZWQnLCBvcHRpb25zKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hFdmVudEZuKEV2ZW50VHlwZS5Nb3VzZSwgZXZlbnRPcHRpb25zKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KeyModifierValues = void 0;
|
|
4
|
+
var KeyModifierValues;
|
|
5
|
+
(function (KeyModifierValues) {
|
|
6
|
+
KeyModifierValues[KeyModifierValues["alt"] = 1] = "alt";
|
|
7
|
+
KeyModifierValues[KeyModifierValues["ctrl"] = 2] = "ctrl";
|
|
8
|
+
KeyModifierValues[KeyModifierValues["meta"] = 4] = "meta";
|
|
9
|
+
KeyModifierValues[KeyModifierValues["shift"] = 8] = "shift";
|
|
10
|
+
})(KeyModifierValues = exports.KeyModifierValues || (exports.KeyModifierValues = {}));
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJveHlsZXNzL2NsaWVudC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFPQSxJQUFZLGlCQUtYO0FBTEQsV0FBWSxpQkFBaUI7SUFDekIsdURBQUssQ0FBQTtJQUNMLHlEQUFNLENBQUE7SUFDTix5REFBTSxDQUFBO0lBQ04sMkRBQU8sQ0FBQTtBQUNYLENBQUMsRUFMVyxpQkFBaUIsR0FBakIseUJBQWlCLEtBQWpCLHlCQUFpQixRQUs1QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgS2V5TW9kaWZpZXJzIHtcbiAgICBjdHJsPzogYm9vbGVhbjtcbiAgICBhbHQ/OiBib29sZWFuO1xuICAgIHNoaWZ0PzogYm9vbGVhbjtcbiAgICBtZXRhPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGVudW0gS2V5TW9kaWZpZXJWYWx1ZXMge1xuICAgIGFsdD0xLFxuICAgIGN0cmw9MixcbiAgICBtZXRhPTQsXG4gICAgc2hpZnQ9OFxufVxuIl19
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.calculateMouseButtonValue = exports.calculateKeyModifiersValue = void 0;
|
|
4
|
+
const types_1 = require("./types");
|
|
5
|
+
function calculateKeyModifiersValue(modifiers) {
|
|
6
|
+
let result = 0;
|
|
7
|
+
if (modifiers.ctrl)
|
|
8
|
+
result |= types_1.KeyModifierValues.ctrl;
|
|
9
|
+
if (modifiers.alt)
|
|
10
|
+
result |= types_1.KeyModifierValues.alt;
|
|
11
|
+
if (modifiers.shift)
|
|
12
|
+
result |= types_1.KeyModifierValues.shift;
|
|
13
|
+
if (modifiers.meta)
|
|
14
|
+
result |= types_1.KeyModifierValues.meta;
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
exports.calculateKeyModifiersValue = calculateKeyModifiersValue;
|
|
18
|
+
function calculateMouseButtonValue(options) {
|
|
19
|
+
if (!options.button)
|
|
20
|
+
return 'left';
|
|
21
|
+
return 'right';
|
|
22
|
+
}
|
|
23
|
+
exports.calculateMouseButtonValue = calculateMouseButtonValue;
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJveHlsZXNzL2NsaWVudC91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBMEQ7QUFJMUQsU0FBZ0IsMEJBQTBCLENBQUUsU0FBdUI7SUFDL0QsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRWYsSUFBSSxTQUFTLENBQUMsSUFBSTtRQUNkLE1BQU0sSUFBSSx5QkFBaUIsQ0FBQyxJQUFJLENBQUM7SUFDckMsSUFBSSxTQUFTLENBQUMsR0FBRztRQUNiLE1BQU0sSUFBSSx5QkFBaUIsQ0FBQyxHQUFHLENBQUM7SUFDcEMsSUFBSSxTQUFTLENBQUMsS0FBSztRQUNmLE1BQU0sSUFBSSx5QkFBaUIsQ0FBQyxLQUFLLENBQUM7SUFDdEMsSUFBSSxTQUFTLENBQUMsSUFBSTtRQUNkLE1BQU0sSUFBSSx5QkFBaUIsQ0FBQyxJQUFJLENBQUM7SUFFckMsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQWJELGdFQWFDO0FBRUQsU0FBZ0IseUJBQXlCLENBQUUsT0FBWTtJQUNuRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07UUFDZixPQUFPLE1BQU0sQ0FBQztJQUVsQixPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDO0FBTEQsOERBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLZXlNb2RpZmllcnMsIEtleU1vZGlmaWVyVmFsdWVzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgUHJvdG9jb2wgZnJvbSAnZGV2dG9vbHMtcHJvdG9jb2wnO1xuaW1wb3J0IE1vdXNlQnV0dG9uID0gUHJvdG9jb2wuSW5wdXQuTW91c2VCdXR0b247XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVLZXlNb2RpZmllcnNWYWx1ZSAobW9kaWZpZXJzOiBLZXlNb2RpZmllcnMpOiBudW1iZXIge1xuICAgIGxldCByZXN1bHQgPSAwO1xuXG4gICAgaWYgKG1vZGlmaWVycy5jdHJsKVxuICAgICAgICByZXN1bHQgfD0gS2V5TW9kaWZpZXJWYWx1ZXMuY3RybDtcbiAgICBpZiAobW9kaWZpZXJzLmFsdClcbiAgICAgICAgcmVzdWx0IHw9IEtleU1vZGlmaWVyVmFsdWVzLmFsdDtcbiAgICBpZiAobW9kaWZpZXJzLnNoaWZ0KVxuICAgICAgICByZXN1bHQgfD0gS2V5TW9kaWZpZXJWYWx1ZXMuc2hpZnQ7XG4gICAgaWYgKG1vZGlmaWVycy5tZXRhKVxuICAgICAgICByZXN1bHQgfD0gS2V5TW9kaWZpZXJWYWx1ZXMubWV0YTtcblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVNb3VzZUJ1dHRvblZhbHVlIChvcHRpb25zOiBhbnkpOiBNb3VzZUJ1dHRvbiB7XG4gICAgaWYgKCFvcHRpb25zLmJ1dHRvbilcbiAgICAgICAgcmV0dXJuICdsZWZ0JztcblxuICAgIHJldHVybiAncmlnaHQnO1xufVxuIl19
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class ConsoleMessageFormatter {
|
|
4
|
+
static formatObject(arg) {
|
|
5
|
+
var _a;
|
|
6
|
+
if (arg.hasOwnProperty('value')) {
|
|
7
|
+
if (arg.value === null)
|
|
8
|
+
return 'null';
|
|
9
|
+
return arg.value;
|
|
10
|
+
}
|
|
11
|
+
if (arg.subtype === 'array' && ((_a = arg.preview) === null || _a === void 0 ? void 0 : _a.properties))
|
|
12
|
+
return arg.preview.properties.map((prop) => prop.value).join(',');
|
|
13
|
+
if (arg.type === 'object')
|
|
14
|
+
return {}.toString();
|
|
15
|
+
return 'undefined';
|
|
16
|
+
}
|
|
17
|
+
static format(args) {
|
|
18
|
+
return args.map(ConsoleMessageFormatter.formatObject).join(' ');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.default = ConsoleMessageFormatter;
|
|
22
|
+
module.exports = exports.default;
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Byb3h5bGVzcy9jb25zb2xlLW1lc3NhZ2VzL2Zvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLE1BQXFCLHVCQUF1QjtJQUNoQyxNQUFNLENBQUMsWUFBWSxDQUFFLEdBQWtDOztRQUMzRCxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLElBQUk7Z0JBQ2xCLE9BQU8sTUFBTSxDQUFDO1lBRWxCLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQztTQUNwQjtRQUVELElBQUksR0FBRyxDQUFDLE9BQU8sS0FBSyxPQUFPLEtBQUksTUFBQSxHQUFHLENBQUMsT0FBTywwQ0FBRSxVQUFVLENBQUE7WUFDbEQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFzQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXhHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRO1lBQ3JCLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXpCLE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxNQUFNLENBQUMsTUFBTSxDQUFFLElBQXFDO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEUsQ0FBQztDQUNKO0FBckJELDBDQXFCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm90b2NvbCBmcm9tICdkZXZ0b29scy1wcm90b2NvbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnNvbGVNZXNzYWdlRm9ybWF0dGVyIHtcbiAgICBwcml2YXRlIHN0YXRpYyBmb3JtYXRPYmplY3QgKGFyZzogUHJvdG9jb2wuUnVudGltZS5SZW1vdGVPYmplY3QpOiBzdHJpbmcge1xuICAgICAgICBpZiAoYXJnLmhhc093blByb3BlcnR5KCd2YWx1ZScpKSB7XG4gICAgICAgICAgICBpZiAoYXJnLnZhbHVlID09PSBudWxsKVxuICAgICAgICAgICAgICAgIHJldHVybiAnbnVsbCc7XG5cbiAgICAgICAgICAgIHJldHVybiBhcmcudmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXJnLnN1YnR5cGUgPT09ICdhcnJheScgJiYgYXJnLnByZXZpZXc/LnByb3BlcnRpZXMpXG4gICAgICAgICAgICByZXR1cm4gYXJnLnByZXZpZXcucHJvcGVydGllcy5tYXAoKHByb3A6IFByb3RvY29sLlJ1bnRpbWUuUHJvcGVydHlQcmV2aWV3KSA9PiBwcm9wLnZhbHVlKS5qb2luKCcsJyk7XG5cbiAgICAgICAgaWYgKGFyZy50eXBlID09PSAnb2JqZWN0JylcbiAgICAgICAgICAgIHJldHVybiB7fS50b1N0cmluZygpO1xuXG4gICAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZvcm1hdCAoYXJnczogUHJvdG9jb2wuUnVudGltZS5SZW1vdGVPYmplY3RbXSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBhcmdzLm1hcChDb25zb2xlTWVzc2FnZUZvcm1hdHRlci5mb3JtYXRPYmplY3QpLmpvaW4oJyAnKTtcbiAgICB9XG59XG5cbiJdfQ==
|
|
@@ -0,0 +1,56 @@
|
|
|
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 formatter_1 = __importDefault(require("./formatter"));
|
|
7
|
+
const api_base_1 = __importDefault(require("../api-base"));
|
|
8
|
+
const types_1 = require("./types");
|
|
9
|
+
class ConsoleMessagesAPI extends api_base_1.default {
|
|
10
|
+
constructor(browserId, client) {
|
|
11
|
+
super(browserId, client);
|
|
12
|
+
this._consoleMessages = {};
|
|
13
|
+
}
|
|
14
|
+
_getBrowserConsoleMessages(url, type) {
|
|
15
|
+
if (!this._consoleMessages[this._testRun.id])
|
|
16
|
+
this._consoleMessages[this._testRun.id] = {};
|
|
17
|
+
const testRunMessages = this._consoleMessages[this._testRun.id];
|
|
18
|
+
if (!testRunMessages[url]) {
|
|
19
|
+
testRunMessages[url] = {
|
|
20
|
+
error: [],
|
|
21
|
+
warning: [],
|
|
22
|
+
log: [],
|
|
23
|
+
info: [],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return testRunMessages[url][type];
|
|
27
|
+
}
|
|
28
|
+
async init() {
|
|
29
|
+
this._client.Runtime.on('consoleAPICalled', async ({ type, args }) => {
|
|
30
|
+
if (!types_1.CONSOLE_MESSAGES_ENTRY_KEYS.includes(type))
|
|
31
|
+
return;
|
|
32
|
+
const { host } = await this._getCurrentUrl();
|
|
33
|
+
const messages = this._getBrowserConsoleMessages(host, type);
|
|
34
|
+
messages.push(formatter_1.default.format(args));
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
static _createBrowserConsoleMessages(info, log, error, warn) {
|
|
38
|
+
return {
|
|
39
|
+
info,
|
|
40
|
+
log,
|
|
41
|
+
error,
|
|
42
|
+
warn,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
async getBrowserConsoleMessages() {
|
|
46
|
+
const { host } = await this._getCurrentUrl();
|
|
47
|
+
const testRunMessages = this._consoleMessages[this._testRun.id];
|
|
48
|
+
if (!testRunMessages || !testRunMessages[host])
|
|
49
|
+
return ConsoleMessagesAPI._createBrowserConsoleMessages([], [], [], []);
|
|
50
|
+
const messages = JSON.parse(JSON.stringify(testRunMessages[host]));
|
|
51
|
+
return ConsoleMessagesAPI._createBrowserConsoleMessages(messages.info, messages.log, messages.error, messages.warning);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.default = ConsoleMessagesAPI;
|
|
55
|
+
module.exports = exports.default;
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJveHlsZXNzL2NvbnNvbGUtbWVzc2FnZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSw0REFBa0Q7QUFFbEQsMkRBQTJDO0FBRTNDLG1DQUlpQjtBQUdqQixNQUFxQixrQkFBbUIsU0FBUSxrQkFBZ0I7SUFHNUQsWUFBYSxTQUFpQixFQUFFLE1BQW1CO1FBQy9DLEtBQUssQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFekIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU8sMEJBQTBCLENBQUUsR0FBVyxFQUFFLElBQThCO1FBQzNFLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRWpELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRWhFLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdkIsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHO2dCQUNuQixLQUFLLEVBQUksRUFBRTtnQkFDWCxPQUFPLEVBQUUsRUFBRTtnQkFDWCxHQUFHLEVBQU0sRUFBRTtnQkFDWCxJQUFJLEVBQUssRUFBRTthQUNkLENBQUM7U0FDTDtRQUVELE9BQU8sZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSTtRQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUEwQyxFQUFFLEVBQUU7WUFDekcsSUFBSSxDQUFDLG1DQUEyQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQzNDLE9BQU87WUFFWCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDN0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksRUFBRSxJQUFnQyxDQUFDLENBQUM7WUFFekYsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBdUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxNQUFNLENBQUMsNkJBQTZCLENBQ3hDLElBQWMsRUFDZCxHQUFhLEVBQ2IsS0FBZSxFQUNmLElBQWM7UUFFZCxPQUFPO1lBQ0gsSUFBSTtZQUNKLEdBQUc7WUFDSCxLQUFLO1lBQ0wsSUFBSTtTQUNQLENBQUM7SUFDTixDQUFDO0lBRU0sS0FBSyxDQUFDLHlCQUF5QjtRQUNsQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQVUsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFaEUsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7WUFDMUMsT0FBTyxrQkFBa0IsQ0FBQyw2QkFBNkIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUU1RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVuRSxPQUFPLGtCQUFrQixDQUFDLDZCQUE2QixDQUNuRCxRQUFRLENBQUMsSUFBSSxFQUNiLFFBQVEsQ0FBQyxHQUFHLEVBQ1osUUFBUSxDQUFDLEtBQUssRUFDZCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQUNKO0FBcEVELHFDQW9FQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3RvY29sQXBpIH0gZnJvbSAnY2hyb21lLXJlbW90ZS1pbnRlcmZhY2UnO1xuaW1wb3J0IFByb3RvY29sIGZyb20gJ2RldnRvb2xzLXByb3RvY29sJztcbmltcG9ydCBDb25zb2xlTWVzc2FnZUZvcm1hdHRlciBmcm9tICcuL2Zvcm1hdHRlcic7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9pbnRlcmZhY2VzJztcbmltcG9ydCBQcm94eWxlc3NBcGlCYXNlIGZyb20gJy4uL2FwaS1iYXNlJztcblxuaW1wb3J0IHtcbiAgICBDT05TT0xFX01FU1NBR0VTX0VOVFJZX0tFWVMsXG4gICAgQ29uc29sZU1lc3NhZ2VFbnRyaWVzLFxuICAgIENvbnNvbGVNZXNzYWdlc0VudHJ5S2V5cyxcbn0gZnJvbSAnLi90eXBlcyc7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29uc29sZU1lc3NhZ2VzQVBJIGV4dGVuZHMgUHJveHlsZXNzQXBpQmFzZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29uc29sZU1lc3NhZ2VzOiBEaWN0aW9uYXJ5PENvbnNvbGVNZXNzYWdlRW50cmllcz47XG5cbiAgICBjb25zdHJ1Y3RvciAoYnJvd3NlcklkOiBzdHJpbmcsIGNsaWVudDogUHJvdG9jb2xBcGkpIHtcbiAgICAgICAgc3VwZXIoYnJvd3NlcklkLCBjbGllbnQpO1xuXG4gICAgICAgIHRoaXMuX2NvbnNvbGVNZXNzYWdlcyA9IHt9O1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldEJyb3dzZXJDb25zb2xlTWVzc2FnZXMgKHVybDogc3RyaW5nLCB0eXBlOiBDb25zb2xlTWVzc2FnZXNFbnRyeUtleXMpOiBzdHJpbmdbXSB7XG4gICAgICAgIGlmICghdGhpcy5fY29uc29sZU1lc3NhZ2VzW3RoaXMuX3Rlc3RSdW4uaWRdKVxuICAgICAgICAgICAgdGhpcy5fY29uc29sZU1lc3NhZ2VzW3RoaXMuX3Rlc3RSdW4uaWRdID0ge307XG5cbiAgICAgICAgY29uc3QgdGVzdFJ1bk1lc3NhZ2VzID0gdGhpcy5fY29uc29sZU1lc3NhZ2VzW3RoaXMuX3Rlc3RSdW4uaWRdO1xuXG4gICAgICAgIGlmICghdGVzdFJ1bk1lc3NhZ2VzW3VybF0pIHtcbiAgICAgICAgICAgIHRlc3RSdW5NZXNzYWdlc1t1cmxdID0ge1xuICAgICAgICAgICAgICAgIGVycm9yOiAgIFtdLFxuICAgICAgICAgICAgICAgIHdhcm5pbmc6IFtdLFxuICAgICAgICAgICAgICAgIGxvZzogICAgIFtdLFxuICAgICAgICAgICAgICAgIGluZm86ICAgIFtdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0ZXN0UnVuTWVzc2FnZXNbdXJsXVt0eXBlXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW5pdCAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuX2NsaWVudC5SdW50aW1lLm9uKCdjb25zb2xlQVBJQ2FsbGVkJywgYXN5bmMgKHsgdHlwZSwgYXJncyB9OiBQcm90b2NvbC5SdW50aW1lLkNvbnNvbGVBUElDYWxsZWRFdmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFDT05TT0xFX01FU1NBR0VTX0VOVFJZX0tFWVMuaW5jbHVkZXModHlwZSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCB7IGhvc3QgfSA9IGF3YWl0IHRoaXMuX2dldEN1cnJlbnRVcmwoKTtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gdGhpcy5fZ2V0QnJvd3NlckNvbnNvbGVNZXNzYWdlcyhob3N0LCB0eXBlIGFzIENvbnNvbGVNZXNzYWdlc0VudHJ5S2V5cyk7XG5cbiAgICAgICAgICAgIG1lc3NhZ2VzLnB1c2goQ29uc29sZU1lc3NhZ2VGb3JtYXR0ZXIuZm9ybWF0KGFyZ3MpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX2NyZWF0ZUJyb3dzZXJDb25zb2xlTWVzc2FnZXMgKFxuICAgICAgICBpbmZvOiBzdHJpbmdbXSxcbiAgICAgICAgbG9nOiBzdHJpbmdbXSxcbiAgICAgICAgZXJyb3I6IHN0cmluZ1tdLFxuICAgICAgICB3YXJuOiBzdHJpbmdbXVxuICAgICk6IEJyb3dzZXJDb25zb2xlTWVzc2FnZXMge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5mbyxcbiAgICAgICAgICAgIGxvZyxcbiAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgd2FybixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QnJvd3NlckNvbnNvbGVNZXNzYWdlcyAoKTogUHJvbWlzZTxCcm93c2VyQ29uc29sZU1lc3NhZ2VzPiB7XG4gICAgICAgIGNvbnN0IHsgaG9zdCB9ICAgICAgICA9IGF3YWl0IHRoaXMuX2dldEN1cnJlbnRVcmwoKTtcbiAgICAgICAgY29uc3QgdGVzdFJ1bk1lc3NhZ2VzID0gdGhpcy5fY29uc29sZU1lc3NhZ2VzW3RoaXMuX3Rlc3RSdW4uaWRdO1xuXG4gICAgICAgIGlmICghdGVzdFJ1bk1lc3NhZ2VzIHx8ICF0ZXN0UnVuTWVzc2FnZXNbaG9zdF0pXG4gICAgICAgICAgICByZXR1cm4gQ29uc29sZU1lc3NhZ2VzQVBJLl9jcmVhdGVCcm93c2VyQ29uc29sZU1lc3NhZ2VzKFtdLCBbXSwgW10sIFtdKTtcblxuICAgICAgICBjb25zdCBtZXNzYWdlcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGVzdFJ1bk1lc3NhZ2VzW2hvc3RdKSk7XG5cbiAgICAgICAgcmV0dXJuIENvbnNvbGVNZXNzYWdlc0FQSS5fY3JlYXRlQnJvd3NlckNvbnNvbGVNZXNzYWdlcyhcbiAgICAgICAgICAgIG1lc3NhZ2VzLmluZm8sXG4gICAgICAgICAgICBtZXNzYWdlcy5sb2csXG4gICAgICAgICAgICBtZXNzYWdlcy5lcnJvcixcbiAgICAgICAgICAgIG1lc3NhZ2VzLndhcm5pbmcpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CONSOLE_MESSAGES_ENTRY_KEYS = void 0;
|
|
4
|
+
exports.CONSOLE_MESSAGES_ENTRY_KEYS = ['error', 'warning', 'log', 'info'];
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJveHlsZXNzL2NvbnNvbGUtbWVzc2FnZXMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRWEsUUFBQSwyQkFBMkIsR0FBRyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBjb25zdCBDT05TT0xFX01FU1NBR0VTX0VOVFJZX0tFWVMgPSBbJ2Vycm9yJywgJ3dhcm5pbmcnLCAnbG9nJywgJ2luZm8nXTtcblxuZXhwb3J0IHR5cGUgQ29uc29sZU1lc3NhZ2VzRW50cnlLZXlzID0gdHlwZW9mIENPTlNPTEVfTUVTU0FHRVNfRU5UUllfS0VZU1tudW1iZXJdO1xuZXhwb3J0IHR5cGUgQ29uc29sZU1lc3NhZ2VzRW50cnkgPSB7IFtrZXkgaW4gQ29uc29sZU1lc3NhZ2VzRW50cnlLZXlzXTogc3RyaW5nW10gfTtcbmV4cG9ydCB0eXBlIENvbnNvbGVNZXNzYWdlRW50cmllcyA9IERpY3Rpb25hcnk8Q29uc29sZU1lc3NhZ2VzRW50cnk+O1xuIl19
|
package/lib/proxyless/index.js
CHANGED
|
@@ -6,6 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const request_pipeline_1 = __importDefault(require("./request-pipeline"));
|
|
7
7
|
const add_custom_debug_formatters_1 = __importDefault(require("./add-custom-debug-formatters"));
|
|
8
8
|
const debug_loggers_1 = require("../utils/debug-loggers");
|
|
9
|
+
const console_messages_1 = __importDefault(require("./console-messages"));
|
|
10
|
+
const native_dialogs_1 = __importDefault(require("./native-dialogs"));
|
|
11
|
+
const js_error_handling_1 = __importDefault(require("./js-error-handling"));
|
|
12
|
+
const session_storage_1 = __importDefault(require("./session-storage"));
|
|
9
13
|
const ALL_REQUEST_RESPONSES = { requestStage: 'Request' };
|
|
10
14
|
const ALL_REQUEST_REQUESTS = { requestStage: 'Response' };
|
|
11
15
|
const ALL_REQUESTS_DATA = [ALL_REQUEST_REQUESTS, ALL_REQUEST_RESPONSES];
|
|
@@ -13,6 +17,21 @@ class Proxyless {
|
|
|
13
17
|
constructor(browserId, client) {
|
|
14
18
|
this._client = client;
|
|
15
19
|
this.requestPipeline = new request_pipeline_1.default(browserId, client);
|
|
20
|
+
this.consoleMessagesApi = new console_messages_1.default(browserId, client);
|
|
21
|
+
this.nativeDialogsApi = new native_dialogs_1.default(browserId, client);
|
|
22
|
+
this.sessionStorage = new session_storage_1.default(browserId, client);
|
|
23
|
+
this.jsErrorHandlingApi = new js_error_handling_1.default(browserId, client);
|
|
24
|
+
this.sessionStorage.on('contextStorageModified', sessionStorage => {
|
|
25
|
+
const COMMAND_EXECUTING_FLAG = 'testcafe|driver|command-executing-flag';
|
|
26
|
+
if (sessionStorage) {
|
|
27
|
+
const parsed = JSON.parse(sessionStorage);
|
|
28
|
+
if (parsed.hasOwnProperty(COMMAND_EXECUTING_FLAG)) {
|
|
29
|
+
const storage = {};
|
|
30
|
+
storage[COMMAND_EXECUTING_FLAG] = parsed[COMMAND_EXECUTING_FLAG];
|
|
31
|
+
this.requestPipeline.contextStorage = JSON.stringify(storage);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
});
|
|
16
35
|
(0, add_custom_debug_formatters_1.default)();
|
|
17
36
|
}
|
|
18
37
|
async init(options) {
|
|
@@ -21,7 +40,15 @@ class Proxyless {
|
|
|
21
40
|
await this._client.Fetch.enable({
|
|
22
41
|
patterns: ALL_REQUESTS_DATA,
|
|
23
42
|
});
|
|
24
|
-
|
|
43
|
+
const proxylessSystems = [
|
|
44
|
+
this.requestPipeline,
|
|
45
|
+
this.consoleMessagesApi,
|
|
46
|
+
this.nativeDialogsApi,
|
|
47
|
+
this.sessionStorage,
|
|
48
|
+
this.jsErrorHandlingApi,
|
|
49
|
+
];
|
|
50
|
+
for (const api of proxylessSystems)
|
|
51
|
+
await api.init(options);
|
|
25
52
|
(0, debug_loggers_1.proxylessLogger)('proxyless initialized');
|
|
26
53
|
}
|
|
27
54
|
async dispose() {
|
|
@@ -32,4 +59,4 @@ class Proxyless {
|
|
|
32
59
|
}
|
|
33
60
|
exports.default = Proxyless;
|
|
34
61
|
module.exports = exports.default;
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJveHlsZXNzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsMEVBQTBEO0FBQzFELGdHQUFxRTtBQUVyRSwwREFBeUQ7QUFDekQsMEVBQW9EO0FBQ3BELHNFQUFnRDtBQUNoRCw0RUFBcUQ7QUFDckQsd0VBQStDO0FBRy9DLE1BQU0scUJBQXFCLEdBQUcsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFvQixDQUFDO0FBQzVFLE1BQU0sb0JBQW9CLEdBQUksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFvQixDQUFDO0FBRTdFLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0FBRXhFLE1BQXFCLFNBQVM7SUFRMUIsWUFBb0IsU0FBaUIsRUFBRSxNQUFtQjtRQUN0RCxJQUFJLENBQUMsT0FBTyxHQUFXLE1BQU0sQ0FBQztRQUM5QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksMEJBQXdCLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLDBCQUFrQixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSx3QkFBZ0IsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLHlCQUFjLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLDJCQUFrQixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVwRSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsRUFBRSxjQUFjLENBQUMsRUFBRTtZQUM5RCxNQUFNLHNCQUFzQixHQUFHLHdDQUF3QyxDQUFDO1lBRXhFLElBQUksY0FBYyxFQUFFO2dCQUNoQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUUxQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsRUFBRTtvQkFDL0MsTUFBTSxPQUFPLEdBQXdCLEVBQUUsQ0FBQztvQkFFeEMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7b0JBRWpFLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQ2pFO2FBQ0o7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUEscUNBQXdCLEdBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBRSxPQUE4QjtRQUM3QyxtRUFBbUU7UUFDbkUsK0ZBQStGO1FBQy9GLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzVCLFFBQVEsRUFBRSxpQkFBaUI7U0FDOUIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxnQkFBZ0IsR0FBRztZQUNyQixJQUFJLENBQUMsZUFBZTtZQUNwQixJQUFJLENBQUMsa0JBQWtCO1lBQ3ZCLElBQUksQ0FBQyxnQkFBZ0I7WUFDckIsSUFBSSxDQUFDLGNBQWM7WUFDbkIsSUFBSSxDQUFDLGtCQUFrQjtTQUMxQixDQUFDO1FBRUYsS0FBSyxNQUFNLEdBQUcsSUFBSSxnQkFBZ0I7WUFDOUIsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTVCLElBQUEsK0JBQWUsRUFBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBTztRQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTVCLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFbkMsSUFBQSwrQkFBZSxFQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDMUMsQ0FBQztDQUNKO0FBL0RELDRCQStEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3RvY29sQXBpIH0gZnJvbSAnY2hyb21lLXJlbW90ZS1pbnRlcmZhY2UnO1xuaW1wb3J0IFByb3RvY29sIGZyb20gJ2RldnRvb2xzLXByb3RvY29sJztcbmltcG9ydCBSZXF1ZXN0UGF0dGVybiA9IFByb3RvY29sLk5ldHdvcmsuUmVxdWVzdFBhdHRlcm47XG5pbXBvcnQgUHJveHlsZXNzUmVxdWVzdFBpcGVsaW5lIGZyb20gJy4vcmVxdWVzdC1waXBlbGluZSc7XG5pbXBvcnQgYWRkQ3VzdG9tRGVidWdGb3JtYXR0ZXJzIGZyb20gJy4vYWRkLWN1c3RvbS1kZWJ1Zy1mb3JtYXR0ZXJzJztcbmltcG9ydCB7IFByb3h5bGVzc1NldHVwT3B0aW9ucyB9IGZyb20gJy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQgeyBwcm94eWxlc3NMb2dnZXIgfSBmcm9tICcuLi91dGlscy9kZWJ1Zy1sb2dnZXJzJztcbmltcG9ydCBDb25zb2xlTWVzc2FnZXNBUEkgZnJvbSAnLi9jb25zb2xlLW1lc3NhZ2VzJztcbmltcG9ydCBOYXRpdmVEaWFsb2dzQVBJIGZyb20gJy4vbmF0aXZlLWRpYWxvZ3MnO1xuaW1wb3J0IEpTRXJyb3JIYW5kbGluZ0FQSSBmcm9tICcuL2pzLWVycm9yLWhhbmRsaW5nJztcbmltcG9ydCBTZXNzaW9uU3RvcmFnZSBmcm9tICcuL3Nlc3Npb24tc3RvcmFnZSc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnLi4vY29uZmlndXJhdGlvbi9pbnRlcmZhY2VzJztcblxuY29uc3QgQUxMX1JFUVVFU1RfUkVTUE9OU0VTID0geyByZXF1ZXN0U3RhZ2U6ICdSZXF1ZXN0JyB9IGFzIFJlcXVlc3RQYXR0ZXJuO1xuY29uc3QgQUxMX1JFUVVFU1RfUkVRVUVTVFMgID0geyByZXF1ZXN0U3RhZ2U6ICdSZXNwb25zZScgfSBhcyBSZXF1ZXN0UGF0dGVybjtcblxuY29uc3QgQUxMX1JFUVVFU1RTX0RBVEEgPSBbQUxMX1JFUVVFU1RfUkVRVUVTVFMsIEFMTF9SRVFVRVNUX1JFU1BPTlNFU107XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByb3h5bGVzcyB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfY2xpZW50OiBQcm90b2NvbEFwaTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVxdWVzdFBpcGVsaW5lO1xuICAgIHB1YmxpYyByZWFkb25seSBjb25zb2xlTWVzc2FnZXNBcGk6IENvbnNvbGVNZXNzYWdlc0FQSTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbmF0aXZlRGlhbG9nc0FwaTogTmF0aXZlRGlhbG9nc0FQSTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2U6IFNlc3Npb25TdG9yYWdlO1xuICAgIHB1YmxpYyByZWFkb25seSBqc0Vycm9ySGFuZGxpbmdBcGk6IEpTRXJyb3JIYW5kbGluZ0FQSTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoYnJvd3NlcklkOiBzdHJpbmcsIGNsaWVudDogUHJvdG9jb2xBcGkpIHtcbiAgICAgICAgdGhpcy5fY2xpZW50ICAgICAgICAgPSBjbGllbnQ7XG4gICAgICAgIHRoaXMucmVxdWVzdFBpcGVsaW5lID0gbmV3IFByb3h5bGVzc1JlcXVlc3RQaXBlbGluZShicm93c2VySWQsIGNsaWVudCk7XG4gICAgICAgIHRoaXMuY29uc29sZU1lc3NhZ2VzQXBpID0gbmV3IENvbnNvbGVNZXNzYWdlc0FQSShicm93c2VySWQsIGNsaWVudCk7XG4gICAgICAgIHRoaXMubmF0aXZlRGlhbG9nc0FwaSA9IG5ldyBOYXRpdmVEaWFsb2dzQVBJKGJyb3dzZXJJZCwgY2xpZW50KTtcbiAgICAgICAgdGhpcy5zZXNzaW9uU3RvcmFnZSA9IG5ldyBTZXNzaW9uU3RvcmFnZShicm93c2VySWQsIGNsaWVudCk7XG4gICAgICAgIHRoaXMuanNFcnJvckhhbmRsaW5nQXBpID0gbmV3IEpTRXJyb3JIYW5kbGluZ0FQSShicm93c2VySWQsIGNsaWVudCk7XG5cbiAgICAgICAgdGhpcy5zZXNzaW9uU3RvcmFnZS5vbignY29udGV4dFN0b3JhZ2VNb2RpZmllZCcsIHNlc3Npb25TdG9yYWdlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IENPTU1BTkRfRVhFQ1VUSU5HX0ZMQUcgPSAndGVzdGNhZmV8ZHJpdmVyfGNvbW1hbmQtZXhlY3V0aW5nLWZsYWcnO1xuXG4gICAgICAgICAgICBpZiAoc2Vzc2lvblN0b3JhZ2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlKTtcblxuICAgICAgICAgICAgICAgIGlmIChwYXJzZWQuaGFzT3duUHJvcGVydHkoQ09NTUFORF9FWEVDVVRJTkdfRkxBRykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RvcmFnZTogRGljdGlvbmFyeTxib29sZWFuPiA9IHt9O1xuXG4gICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VbQ09NTUFORF9FWEVDVVRJTkdfRkxBR10gPSBwYXJzZWRbQ09NTUFORF9FWEVDVVRJTkdfRkxBR107XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXF1ZXN0UGlwZWxpbmUuY29udGV4dFN0b3JhZ2UgPSBKU09OLnN0cmluZ2lmeShzdG9yYWdlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGFkZEN1c3RvbURlYnVnRm9ybWF0dGVycygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0IChvcHRpb25zOiBQcm94eWxlc3NTZXR1cE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gTk9URTogV2UgYXJlIGZvcmNlZCB0byBoYW5kbGUgYWxsIHJlcXVlc3RzIGFuZCByZXNwb25zZXMgYXQgb25jZVxuICAgICAgICAvLyBiZWNhdXNlIENEUCBBUEkgZG9lcyBub3QgYWxsb3cgc3BlY2lmeWluZyByZXF1ZXN0IGZpbHRlcmluZyBiZWhhdmlvciBmb3IgZGlmZmVyZW50IGhhbmRsZXJzLlxuICAgICAgICBhd2FpdCB0aGlzLl9jbGllbnQuRmV0Y2guZW5hYmxlKHtcbiAgICAgICAgICAgIHBhdHRlcm5zOiBBTExfUkVRVUVTVFNfREFUQSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgcHJveHlsZXNzU3lzdGVtcyA9IFtcbiAgICAgICAgICAgIHRoaXMucmVxdWVzdFBpcGVsaW5lLFxuICAgICAgICAgICAgdGhpcy5jb25zb2xlTWVzc2FnZXNBcGksXG4gICAgICAgICAgICB0aGlzLm5hdGl2ZURpYWxvZ3NBcGksXG4gICAgICAgICAgICB0aGlzLnNlc3Npb25TdG9yYWdlLFxuICAgICAgICAgICAgdGhpcy5qc0Vycm9ySGFuZGxpbmdBcGksXG4gICAgICAgIF07XG5cbiAgICAgICAgZm9yIChjb25zdCBhcGkgb2YgcHJveHlsZXNzU3lzdGVtcylcbiAgICAgICAgICAgIGF3YWl0IGFwaS5pbml0KG9wdGlvbnMpO1xuXG4gICAgICAgIHByb3h5bGVzc0xvZ2dlcigncHJveHlsZXNzIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGRpc3Bvc2UgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnJlcXVlc3RQaXBlbGluZS5zdG9wKCk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5fY2xpZW50LkZldGNoLmRpc2FibGUoKTtcblxuICAgICAgICBwcm94eWxlc3NMb2dnZXIoJ3Byb3h5bGVzcyBkaXNwb3NlZCcpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,70 @@
|
|
|
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 errors_1 = require("../../shared/errors");
|
|
7
|
+
const api_base_1 = __importDefault(require("../api-base"));
|
|
8
|
+
const test_run_1 = require("../../errors/test-run");
|
|
9
|
+
const UNCAUGHT_PROMISE_REJECTION = 'Uncaught (in promise)';
|
|
10
|
+
const UNCAUGHT_JS_ERROR = 'Uncaught';
|
|
11
|
+
const NO_STACK_TRACE_AVAILABLE_MESSAGE = 'No stack trace available';
|
|
12
|
+
class JSErrorHandlingAPI extends api_base_1.default {
|
|
13
|
+
constructor(browserId, client) {
|
|
14
|
+
super(browserId, client);
|
|
15
|
+
this.command = null;
|
|
16
|
+
}
|
|
17
|
+
async init() {
|
|
18
|
+
this._client.Runtime.on('exceptionThrown', async ({ exceptionDetails }) => {
|
|
19
|
+
this._addTestRunEvents();
|
|
20
|
+
const errorMessage = this._getErrorMessage(exceptionDetails);
|
|
21
|
+
const errFilter = this._getErrFilter(exceptionDetails, errorMessage);
|
|
22
|
+
try {
|
|
23
|
+
if (!this._getShouldSkipJsErrors(errFilter))
|
|
24
|
+
this._testRun.addProxylessJSError(new errors_1.UncaughtErrorOnPage(errorMessage, exceptionDetails.url));
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
this._testRun.addProxylessJSError(new test_run_1.UncaughtErrorInTestCode(err));
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
setErrorHandler(command) {
|
|
32
|
+
this.command = command;
|
|
33
|
+
}
|
|
34
|
+
_getErrorMessage(exceptionDetails) {
|
|
35
|
+
var _a, _b;
|
|
36
|
+
if (exceptionDetails.text === UNCAUGHT_JS_ERROR)
|
|
37
|
+
return (_a = exceptionDetails.exception) === null || _a === void 0 ? void 0 : _a.description;
|
|
38
|
+
if (exceptionDetails.text === UNCAUGHT_PROMISE_REJECTION)
|
|
39
|
+
return ((_b = exceptionDetails.exception) === null || _b === void 0 ? void 0 : _b.value) + `\n ${NO_STACK_TRACE_AVAILABLE_MESSAGE}`;
|
|
40
|
+
return void 0;
|
|
41
|
+
}
|
|
42
|
+
_getErrFilter(exceptionDetails, errorMessage) {
|
|
43
|
+
var _a, _b, _c, _d, _e, _f;
|
|
44
|
+
const stack = (_c = (_b = (_a = exceptionDetails.exception) === null || _a === void 0 ? void 0 : _a.preview) === null || _b === void 0 ? void 0 : _b.properties[0]) === null || _c === void 0 ? void 0 : _c.value;
|
|
45
|
+
const message = (_f = (_e = (_d = exceptionDetails.exception) === null || _d === void 0 ? void 0 : _d.preview) === null || _e === void 0 ? void 0 : _e.properties[1]) === null || _f === void 0 ? void 0 : _f.value;
|
|
46
|
+
return {
|
|
47
|
+
stack: stack || errorMessage,
|
|
48
|
+
pageUrl: exceptionDetails.url,
|
|
49
|
+
message: message || errorMessage,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
_getShouldSkipJsErrors(errFilter) {
|
|
53
|
+
const options = this.command ? this.command.options : this._testRun.prepareSkipJsErrorsOption();
|
|
54
|
+
if (options === true)
|
|
55
|
+
return true;
|
|
56
|
+
if (typeof options === 'function')
|
|
57
|
+
// @ts-ignore
|
|
58
|
+
return options(errFilter);
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
_addTestRunEvents() {
|
|
62
|
+
this._testRun.once('done', this._dispose.bind(this));
|
|
63
|
+
}
|
|
64
|
+
_dispose() {
|
|
65
|
+
this.command = null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.default = JSErrorHandlingAPI;
|
|
69
|
+
module.exports = exports.default;
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJveHlsZXNzL2pzLWVycm9yLWhhbmRsaW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsZ0RBQTBEO0FBQzFELDJEQUEyQztBQUkzQyxvREFBZ0U7QUFHaEUsTUFBTSwwQkFBMEIsR0FBRyx1QkFBdUIsQ0FBQztBQUMzRCxNQUFNLGlCQUFpQixHQUFHLFVBQVUsQ0FBQztBQUNyQyxNQUFNLGdDQUFnQyxHQUFHLDBCQUEwQixDQUFDO0FBR3BFLE1BQXFCLGtCQUFtQixTQUFRLGtCQUFnQjtJQUc1RCxZQUFhLFNBQWlCLEVBQUUsTUFBbUI7UUFDL0MsS0FBSyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV6QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUk7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLEVBQUUsZ0JBQWdCLEVBQXdCLEVBQUUsRUFBRTtZQUM1RixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUV6QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM3RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxDQUFDO1lBRXJFLElBQUk7Z0JBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsSUFBSSw0QkFBbUIsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUN0RztZQUNELE9BQU8sR0FBRyxFQUFFO2dCQUNSLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsSUFBSSxrQ0FBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3ZFO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sZUFBZSxDQUFFLE9BQTRCO1FBQ2hELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFFTyxnQkFBZ0IsQ0FBRSxnQkFBbUQ7O1FBQ3pFLElBQUksZ0JBQWdCLENBQUMsSUFBSSxLQUFLLGlCQUFpQjtZQUMzQyxPQUFPLE1BQUEsZ0JBQWdCLENBQUMsU0FBUywwQ0FBRSxXQUFXLENBQUM7UUFFbkQsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLEtBQUssMEJBQTBCO1lBQ3BELE9BQU8sQ0FBQSxNQUFBLGdCQUFnQixDQUFDLFNBQVMsMENBQUUsS0FBSyxJQUFHLFNBQVMsZ0NBQWdDLEVBQUUsQ0FBQztRQUUzRixPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFTyxhQUFhLENBQUUsZ0JBQW1ELEVBQUUsWUFBZ0M7O1FBQ3hHLE1BQU0sS0FBSyxHQUFHLE1BQUEsTUFBQSxNQUFBLGdCQUFnQixDQUFDLFNBQVMsMENBQUUsT0FBTywwQ0FBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLDBDQUFFLEtBQUssQ0FBQztRQUN4RSxNQUFNLE9BQU8sR0FBRyxNQUFBLE1BQUEsTUFBQSxnQkFBZ0IsQ0FBQyxTQUFTLDBDQUFFLE9BQU8sMENBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQywwQ0FBRSxLQUFLLENBQUM7UUFFMUUsT0FBTztZQUNILEtBQUssRUFBSSxLQUFLLElBQUksWUFBWTtZQUM5QixPQUFPLEVBQUUsZ0JBQWdCLENBQUMsR0FBRztZQUM3QixPQUFPLEVBQUUsT0FBTyxJQUFJLFlBQVk7U0FDbkMsQ0FBQztJQUNOLENBQUM7SUFFTyxzQkFBc0IsQ0FBRSxTQUFvQztRQUNoRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBRWhHLElBQUksT0FBTyxLQUFLLElBQUk7WUFDaEIsT0FBTyxJQUFJLENBQUM7UUFFaEIsSUFBSSxPQUFPLE9BQU8sS0FBSyxVQUFVO1lBQzdCLGFBQWE7WUFDYixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU5QixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFTyxRQUFRO1FBQ1osSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztDQUNKO0FBdkVELHFDQXVFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3RvY29sQXBpIH0gZnJvbSAnY2hyb21lLXJlbW90ZS1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVW5jYXVnaHRFcnJvck9uUGFnZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9lcnJvcnMnO1xuaW1wb3J0IFByb3h5bGVzc0FwaUJhc2UgZnJvbSAnLi4vYXBpLWJhc2UnO1xuaW1wb3J0IFByb3RvY29sIGZyb20gJ2RldnRvb2xzLXByb3RvY29sJztcbmltcG9ydCBFeGNlcHRpb25UaHJvd25FdmVudCA9IFByb3RvY29sLlJ1bnRpbWUuRXhjZXB0aW9uVGhyb3duRXZlbnQ7XG5pbXBvcnQgeyBTa2lwSnNFcnJvcnNDb21tYW5kIH0gZnJvbSAnLi4vLi4vdGVzdC1ydW4vY29tbWFuZHMvYWN0aW9ucyc7XG5pbXBvcnQgeyBVbmNhdWdodEVycm9ySW5UZXN0Q29kZSB9IGZyb20gJy4uLy4uL2Vycm9ycy90ZXN0LXJ1bic7XG5pbXBvcnQgeyBTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0IH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9pbnRlcmZhY2VzJztcblxuY29uc3QgVU5DQVVHSFRfUFJPTUlTRV9SRUpFQ1RJT04gPSAnVW5jYXVnaHQgKGluIHByb21pc2UpJztcbmNvbnN0IFVOQ0FVR0hUX0pTX0VSUk9SID0gJ1VuY2F1Z2h0JztcbmNvbnN0IE5PX1NUQUNLX1RSQUNFX0FWQUlMQUJMRV9NRVNTQUdFID0gJ05vIHN0YWNrIHRyYWNlIGF2YWlsYWJsZSc7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSlNFcnJvckhhbmRsaW5nQVBJIGV4dGVuZHMgUHJveHlsZXNzQXBpQmFzZSB7XG4gICAgcHJpdmF0ZSBjb21tYW5kOiBTa2lwSnNFcnJvcnNDb21tYW5kIHwgbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yIChicm93c2VySWQ6IHN0cmluZywgY2xpZW50OiBQcm90b2NvbEFwaSkge1xuICAgICAgICBzdXBlcihicm93c2VySWQsIGNsaWVudCk7XG5cbiAgICAgICAgdGhpcy5jb21tYW5kID0gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW5pdCAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuX2NsaWVudC5SdW50aW1lLm9uKCdleGNlcHRpb25UaHJvd24nLCBhc3luYyAoeyBleGNlcHRpb25EZXRhaWxzIH06IEV4Y2VwdGlvblRocm93bkV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9hZGRUZXN0UnVuRXZlbnRzKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHRoaXMuX2dldEVycm9yTWVzc2FnZShleGNlcHRpb25EZXRhaWxzKTtcbiAgICAgICAgICAgIGNvbnN0IGVyckZpbHRlciA9IHRoaXMuX2dldEVyckZpbHRlcihleGNlcHRpb25EZXRhaWxzLCBlcnJvck1lc3NhZ2UpO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fZ2V0U2hvdWxkU2tpcEpzRXJyb3JzKGVyckZpbHRlcikpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Rlc3RSdW4uYWRkUHJveHlsZXNzSlNFcnJvcihuZXcgVW5jYXVnaHRFcnJvck9uUGFnZShlcnJvck1lc3NhZ2UsIGV4Y2VwdGlvbkRldGFpbHMudXJsKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGVzdFJ1bi5hZGRQcm94eWxlc3NKU0Vycm9yKG5ldyBVbmNhdWdodEVycm9ySW5UZXN0Q29kZShlcnIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEVycm9ySGFuZGxlciAoY29tbWFuZDogU2tpcEpzRXJyb3JzQ29tbWFuZCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbW1hbmQgPSBjb21tYW5kO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldEVycm9yTWVzc2FnZSAoZXhjZXB0aW9uRGV0YWlsczogUHJvdG9jb2wuUnVudGltZS5FeGNlcHRpb25EZXRhaWxzKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGV4Y2VwdGlvbkRldGFpbHMudGV4dCA9PT0gVU5DQVVHSFRfSlNfRVJST1IpXG4gICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uRGV0YWlscy5leGNlcHRpb24/LmRlc2NyaXB0aW9uO1xuXG4gICAgICAgIGlmIChleGNlcHRpb25EZXRhaWxzLnRleHQgPT09IFVOQ0FVR0hUX1BST01JU0VfUkVKRUNUSU9OKVxuICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbkRldGFpbHMuZXhjZXB0aW9uPy52YWx1ZSArIGBcXG4gICAgJHtOT19TVEFDS19UUkFDRV9BVkFJTEFCTEVfTUVTU0FHRX1gO1xuXG4gICAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0RXJyRmlsdGVyIChleGNlcHRpb25EZXRhaWxzOiBQcm90b2NvbC5SdW50aW1lLkV4Y2VwdGlvbkRldGFpbHMsIGVycm9yTWVzc2FnZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogU2tpcEpzRXJyb3JzT3B0aW9uc09iamVjdCB7XG4gICAgICAgIGNvbnN0IHN0YWNrID0gZXhjZXB0aW9uRGV0YWlscy5leGNlcHRpb24/LnByZXZpZXc/LnByb3BlcnRpZXNbMF0/LnZhbHVlO1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gZXhjZXB0aW9uRGV0YWlscy5leGNlcHRpb24/LnByZXZpZXc/LnByb3BlcnRpZXNbMV0/LnZhbHVlO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGFjazogICBzdGFjayB8fCBlcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICBwYWdlVXJsOiBleGNlcHRpb25EZXRhaWxzLnVybCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgfHwgZXJyb3JNZXNzYWdlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldFNob3VsZFNraXBKc0Vycm9ycyAoZXJyRmlsdGVyOiBTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmNvbW1hbmQgPyB0aGlzLmNvbW1hbmQub3B0aW9ucyA6IHRoaXMuX3Rlc3RSdW4ucHJlcGFyZVNraXBKc0Vycm9yc09wdGlvbigpO1xuXG4gICAgICAgIGlmIChvcHRpb25zID09PSB0cnVlKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMoZXJyRmlsdGVyKTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYWRkVGVzdFJ1bkV2ZW50cyAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Rlc3RSdW4ub25jZSgnZG9uZScsIHRoaXMuX2Rpc3Bvc2UuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzcG9zZSAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29tbWFuZCA9IG51bGw7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,40 @@
|
|
|
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 api_base_1 = __importDefault(require("../api-base"));
|
|
7
|
+
class NativeDialogsAPI extends api_base_1.default {
|
|
8
|
+
constructor(browserId, client) {
|
|
9
|
+
super(browserId, client);
|
|
10
|
+
this._nativeDialogs = {};
|
|
11
|
+
}
|
|
12
|
+
async init() {
|
|
13
|
+
this._client.Page.on('javascriptDialogOpening', async ({ type, message, url }) => {
|
|
14
|
+
await this._client.Page.handleJavaScriptDialog({ accept: true });
|
|
15
|
+
this._nativeDialogs[this._testRun.id] = this._nativeDialogs[this._testRun.id] || [];
|
|
16
|
+
this._nativeDialogs[this._testRun.id].unshift({
|
|
17
|
+
text: message,
|
|
18
|
+
type,
|
|
19
|
+
url,
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
async getNativeDialogHistory() {
|
|
24
|
+
const nativeDialogs = this._nativeDialogs[this._testRun.id] || [];
|
|
25
|
+
return nativeDialogs;
|
|
26
|
+
}
|
|
27
|
+
async fixMissingBeforeUnloadHandling() {
|
|
28
|
+
// NOTE: do fake mouse event to make cdp handle the `beforeunload` event.
|
|
29
|
+
// the `beforeunload` event is not handled without this click.
|
|
30
|
+
await this._client.Input.dispatchMouseEvent({
|
|
31
|
+
type: 'mousePressed',
|
|
32
|
+
button: 'left',
|
|
33
|
+
x: -1,
|
|
34
|
+
y: -1,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.default = NativeDialogsAPI;
|
|
39
|
+
module.exports = exports.default;
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJveHlsZXNzL25hdGl2ZS1kaWFsb2dzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsMkRBQTJDO0FBRTNDLE1BQXFCLGdCQUFpQixTQUFRLGtCQUFnQjtJQUcxRCxZQUFhLFNBQWlCLEVBQUUsTUFBbUI7UUFDL0MsS0FBSyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV6QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUk7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMseUJBQXlCLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQThDLEVBQUUsRUFBRTtZQUN6SCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFFakUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFcEYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDMUMsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsSUFBSTtnQkFDSixHQUFHO2FBQ04sQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sS0FBSyxDQUFDLHNCQUFzQjtRQUMvQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRWxFLE9BQU8sYUFBYSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxLQUFLLENBQUMsOEJBQThCO1FBQ3ZDLHlFQUF5RTtRQUN6RSw4REFBOEQ7UUFDOUQsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztZQUN4QyxJQUFJLEVBQUksY0FBYztZQUN0QixNQUFNLEVBQUUsTUFBTTtZQUNkLENBQUMsRUFBTyxDQUFDLENBQUM7WUFDVixDQUFDLEVBQU8sQ0FBQyxDQUFDO1NBQ2IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKO0FBdkNELG1DQXVDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3RvY29sQXBpIH0gZnJvbSAnY2hyb21lLXJlbW90ZS1pbnRlcmZhY2UnO1xuaW1wb3J0IFByb3RvY29sIGZyb20gJ2RldnRvb2xzLXByb3RvY29sJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IFByb3h5bGVzc0FwaUJhc2UgZnJvbSAnLi4vYXBpLWJhc2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOYXRpdmVEaWFsb2dzQVBJIGV4dGVuZHMgUHJveHlsZXNzQXBpQmFzZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbmF0aXZlRGlhbG9nczogRGljdGlvbmFyeTxOYXRpdmVEaWFsb2dIaXN0b3J5SXRlbVtdPjtcblxuICAgIGNvbnN0cnVjdG9yIChicm93c2VySWQ6IHN0cmluZywgY2xpZW50OiBQcm90b2NvbEFwaSkge1xuICAgICAgICBzdXBlcihicm93c2VySWQsIGNsaWVudCk7XG5cbiAgICAgICAgdGhpcy5fbmF0aXZlRGlhbG9ncyA9IHt9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0ICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5fY2xpZW50LlBhZ2Uub24oJ2phdmFzY3JpcHREaWFsb2dPcGVuaW5nJywgYXN5bmMgKHsgdHlwZSwgbWVzc2FnZSwgdXJsIH06IFByb3RvY29sLlBhZ2UuSmF2YXNjcmlwdERpYWxvZ09wZW5pbmdFdmVudCkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fY2xpZW50LlBhZ2UuaGFuZGxlSmF2YVNjcmlwdERpYWxvZyh7IGFjY2VwdDogdHJ1ZSB9KTtcblxuICAgICAgICAgICAgdGhpcy5fbmF0aXZlRGlhbG9nc1t0aGlzLl90ZXN0UnVuLmlkXSA9IHRoaXMuX25hdGl2ZURpYWxvZ3NbdGhpcy5fdGVzdFJ1bi5pZF0gfHwgW107XG5cbiAgICAgICAgICAgIHRoaXMuX25hdGl2ZURpYWxvZ3NbdGhpcy5fdGVzdFJ1bi5pZF0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgdGV4dDogbWVzc2FnZSxcbiAgICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0TmF0aXZlRGlhbG9nSGlzdG9yeSAoKTogUHJvbWlzZTxOYXRpdmVEaWFsb2dIaXN0b3J5SXRlbVtdPiB7XG4gICAgICAgIGNvbnN0IG5hdGl2ZURpYWxvZ3MgPSB0aGlzLl9uYXRpdmVEaWFsb2dzW3RoaXMuX3Rlc3RSdW4uaWRdIHx8IFtdO1xuXG4gICAgICAgIHJldHVybiBuYXRpdmVEaWFsb2dzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBmaXhNaXNzaW5nQmVmb3JlVW5sb2FkSGFuZGxpbmcgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAvLyBOT1RFOiBkbyBmYWtlIG1vdXNlIGV2ZW50IHRvIG1ha2UgY2RwIGhhbmRsZSB0aGUgYGJlZm9yZXVubG9hZGAgZXZlbnQuXG4gICAgICAgIC8vIHRoZSBgYmVmb3JldW5sb2FkYCBldmVudCBpcyBub3QgaGFuZGxlZCB3aXRob3V0IHRoaXMgY2xpY2suXG4gICAgICAgIGF3YWl0IHRoaXMuX2NsaWVudC5JbnB1dC5kaXNwYXRjaE1vdXNlRXZlbnQoe1xuICAgICAgICAgICAgdHlwZTogICAnbW91c2VQcmVzc2VkJyxcbiAgICAgICAgICAgIGJ1dHRvbjogJ2xlZnQnLFxuICAgICAgICAgICAgeDogICAgICAtMSxcbiAgICAgICAgICAgIHk6ICAgICAgLTEsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -15,9 +15,10 @@ const testcafe_hammerhead_1 = require("testcafe-hammerhead");
|
|
|
15
15
|
const default_setup_options_1 = __importDefault(require("../default-setup-options"));
|
|
16
16
|
const special_handlers_1 = __importDefault(require("./special-handlers"));
|
|
17
17
|
const safe_api_1 = require("./safe-api");
|
|
18
|
-
|
|
18
|
+
const api_base_1 = __importDefault(require("../api-base"));
|
|
19
|
+
class ProxylessRequestPipeline extends api_base_1.default {
|
|
19
20
|
constructor(browserId, client) {
|
|
20
|
-
|
|
21
|
+
super(browserId, client);
|
|
21
22
|
this._specialServiceRoutes = this._getSpecialServiceRoutes(browserId);
|
|
22
23
|
this.requestHookEventProvider = new event_provider_1.default(browserId);
|
|
23
24
|
this._resourceInjector = new resource_injector_1.default(browserId, this._specialServiceRoutes);
|
|
@@ -26,6 +27,7 @@ class ProxylessRequestPipeline {
|
|
|
26
27
|
this._currentFrameTree = null;
|
|
27
28
|
this._failedRequestIds = [];
|
|
28
29
|
this.restoringStorages = null;
|
|
30
|
+
this.contextStorage = '';
|
|
29
31
|
}
|
|
30
32
|
_getSpecialServiceRoutes(browserId) {
|
|
31
33
|
const browserConnection = connection_1.default.getById(browserId);
|
|
@@ -102,6 +104,7 @@ class ProxylessRequestPipeline {
|
|
|
102
104
|
isIframe: this._isIframe(event.frameId),
|
|
103
105
|
url: event.request.url,
|
|
104
106
|
restoringStorages: this.restoringStorages,
|
|
107
|
+
contextStorage: this.contextStorage,
|
|
105
108
|
}, this._client);
|
|
106
109
|
this.restoringStorages = null;
|
|
107
110
|
}
|
|
@@ -185,4 +188,4 @@ class ProxylessRequestPipeline {
|
|
|
185
188
|
}
|
|
186
189
|
exports.default = ProxylessRequestPipeline;
|
|
187
190
|
module.exports = exports.default;
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJveHlsZXNzL3JlcXVlc3QtcGlwZWxpbmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBZ0M7QUFTaEMscUZBQWdGO0FBQ2hGLDZFQUFvRDtBQUNwRCw4Q0FBMEQ7QUFDMUQsc0NBQThFO0FBQzlFLDBFQUF5RDtBQUN6RCxpRUFBeUM7QUFFekMsNkRBSW1DO0FBRW5DLDZEQUs2QjtBQUk3QixxRkFBdUU7QUFDdkUsMEVBQTBEO0FBQzFELHlDQUF1RTtBQUd2RSxNQUFxQix3QkFBd0I7SUFXekMsWUFBb0IsU0FBaUIsRUFBRSxNQUFtQjtRQUN0RCxJQUFJLENBQUMsT0FBTyxHQUFvQixNQUFNLENBQUM7UUFDdkMsSUFBSSxDQUFDLHFCQUFxQixHQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSx3QkFBaUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsaUJBQWlCLEdBQVUsSUFBSSwyQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDNUYsSUFBSSxDQUFDLFFBQVEsR0FBbUIsK0JBQStCLENBQUM7UUFDaEUsSUFBSSxDQUFDLFFBQVEsR0FBbUIsS0FBSyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxpQkFBaUIsR0FBVSxJQUFJLENBQUM7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixHQUFVLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsaUJBQWlCLEdBQVUsSUFBSSxDQUFDO0lBQ3pDLENBQUM7SUFFTyx3QkFBd0IsQ0FBRSxTQUFpQjtRQUMvQyxNQUFNLGlCQUFpQixHQUFHLG9CQUFpQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQXNCLENBQUM7UUFDcEYsTUFBTSxLQUFLLEdBQWUsaUJBQWlCLENB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QUFFLEVBQUU7WUFDekUsSUFBQSxxQ0FBcUIsRUFBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFbkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFN0MsSUFBSSxLQUFLLENBQUMsU0FBUztnQkFDZixJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVNLElBQUk7UUFDUCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDO0NBQ0o7QUF4T0QsMkNBd09DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVtb3ZlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFByb3RvY29sQXBpIH0gZnJvbSAnY2hyb21lLXJlbW90ZS1pbnRlcmZhY2UnO1xuaW1wb3J0IFByb3RvY29sIGZyb20gJ2RldnRvb2xzLXByb3RvY29sJztcbmltcG9ydCBSZXF1ZXN0UGF1c2VkRXZlbnQgPSBQcm90b2NvbC5GZXRjaC5SZXF1ZXN0UGF1c2VkRXZlbnQ7XG5pbXBvcnQgRnJhbWVOYXZpZ2F0ZWRFdmVudCA9IFByb3RvY29sLlBhZ2UuRnJhbWVOYXZpZ2F0ZWRFdmVudDtcbmltcG9ydCBMb2FkaW5nRmFpbGVkRXZlbnQgPSBQcm90b2NvbC5OZXR3b3JrLkxvYWRpbmdGYWlsZWRFdmVudDtcbmltcG9ydCBDb250aW51ZVJlc3BvbnNlUmVxdWVzdCA9IFByb3RvY29sLkZldGNoLkNvbnRpbnVlUmVzcG9uc2VSZXF1ZXN0O1xuaW1wb3J0IEZyYW1lVHJlZSA9IFByb3RvY29sLlBhZ2UuRnJhbWVUcmVlO1xuaW1wb3J0IEZ1bGZpbGxSZXF1ZXN0UmVxdWVzdCA9IFByb3RvY29sLkZldGNoLkZ1bGZpbGxSZXF1ZXN0UmVxdWVzdDtcbmltcG9ydCBQcm94eWxlc3NSZXF1ZXN0SG9va0V2ZW50UHJvdmlkZXIgZnJvbSAnLi4vcmVxdWVzdC1ob29rcy9ldmVudC1wcm92aWRlcic7XG5pbXBvcnQgUmVzb3VyY2VJbmplY3RvciBmcm9tICcuLi9yZXNvdXJjZS1pbmplY3Rvcic7XG5pbXBvcnQgeyBjb252ZXJ0VG9IZWFkZXJFbnRyaWVzIH0gZnJvbSAnLi4vdXRpbHMvaGVhZGVycyc7XG5pbXBvcnQgeyBjcmVhdGVSZXF1ZXN0UGF1c2VkRXZlbnRGb3JSZXNwb25zZSwgaXNSZXF1ZXN0IH0gZnJvbSAnLi4vdXRpbHMvY2RwJztcbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9icm93c2VyL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IEVSUk9SX1JPVVRFIGZyb20gJy4uL2Vycm9yLXJvdXRlJztcbmltcG9ydCB7IFNwZWNpYWxTZXJ2aWNlUm91dGVzIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgICByZXF1ZXN0UGlwZWxpbmVMb2dnZXIsXG4gICAgcmVxdWVzdFBpcGVsaW5lTW9ja0xvZ2dlcixcbiAgICByZXF1ZXN0UGlwZWxpbmVPdGhlclJlcXVlc3RMb2dnZXIsXG59IGZyb20gJy4uLy4uL3V0aWxzL2RlYnVnLWxvZ2dlcnMnO1xuXG5pbXBvcnQge1xuICAgIEluY29taW5nTWVzc2FnZUxpa2UsXG4gICAgaXNSZWRpcmVjdFN0YXR1c0NvZGUsXG4gICAgU1BFQ0lBTF9CTEFOS19QQUdFLFxuICAgIFN0b3JhZ2VzU25hcHNob3QsXG59IGZyb20gJ3Rlc3RjYWZlLWhhbW1lcmhlYWQnO1xuXG5pbXBvcnQgUHJveHlsZXNzUGlwZWxpbmVDb250ZXh0IGZyb20gJy4uL3JlcXVlc3QtaG9va3MvcGlwZWxpbmUtY29udGV4dCc7XG5pbXBvcnQgeyBQcm94eWxlc3NTZXR1cE9wdGlvbnMgfSBmcm9tICcuLi8uLi9zaGFyZWQvdHlwZXMnO1xuaW1wb3J0IERFRkFVTFRfUFJPWFlMRVNTX1NFVFVQX09QVElPTlMgZnJvbSAnLi4vZGVmYXVsdC1zZXR1cC1vcHRpb25zJztcbmltcG9ydCBnZXRTcGVjaWFsUmVxdWVzdEhhbmRsZXIgZnJvbSAnLi9zcGVjaWFsLWhhbmRsZXJzJztcbmltcG9ydCB7IHNhZmVDb250aW51ZVJlcXVlc3QsIHNhZmVDb250aW51ZVJlc3BvbnNlIH0gZnJvbSAnLi9zYWZlLWFwaSc7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHJveHlsZXNzUmVxdWVzdFBpcGVsaW5lIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jbGllbnQ6IFByb3RvY29sQXBpO1xuICAgIHB1YmxpYyByZWFkb25seSByZXF1ZXN0SG9va0V2ZW50UHJvdmlkZXI6IFByb3h5bGVzc1JlcXVlc3RIb29rRXZlbnRQcm92aWRlcjtcbiAgICBwdWJsaWMgcmVzdG9yaW5nU3RvcmFnZXM6IFN0b3JhZ2VzU25hcHNob3QgfCBudWxsO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Jlc291cmNlSW5qZWN0b3I6IFJlc291cmNlSW5qZWN0b3I7XG4gICAgcHJpdmF0ZSBfb3B0aW9uczogUHJveHlsZXNzU2V0dXBPcHRpb25zO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3NwZWNpYWxTZXJ2aWNlUm91dGVzOiBTcGVjaWFsU2VydmljZVJvdXRlcztcbiAgICBwcml2YXRlIF9zdG9wcGVkOiBib29sZWFuO1xuICAgIHByaXZhdGUgX2N1cnJlbnRGcmFtZVRyZWU6IEZyYW1lVHJlZSB8IG51bGw7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfZmFpbGVkUmVxdWVzdElkczogc3RyaW5nW107XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGJyb3dzZXJJZDogc3RyaW5nLCBjbGllbnQ6IFByb3RvY29sQXBpKSB7XG4gICAgICAgIHRoaXMuX2NsaWVudCAgICAgICAgICAgICAgICAgID0gY2xpZW50O1xuICAgICAgICB0aGlzLl9zcGVjaWFsU2VydmljZVJvdXRlcyAgICA9IHRoaXMuX2dldFNwZWNpYWxTZXJ2aWNlUm91dGVzKGJyb3dzZXJJZCk7XG4gICAgICAgIHRoaXMucmVxdWVzdEhvb2tFdmVudFByb3ZpZGVyID0gbmV3IFByb3h5bGVzc1JlcXVlc3RIb29rRXZlbnRQcm92aWRlcihicm93c2VySWQpO1xuICAgICAgICB0aGlzLl9yZXNvdXJjZUluamVjdG9yICAgICAgICA9IG5ldyBSZXNvdXJjZUluamVjdG9yKGJyb3dzZXJJZCwgdGhpcy5fc3BlY2lhbFNlcnZpY2VSb3V0ZXMpO1xuICAgICAgICB0aGlzLl9vcHRpb25zICAgICAgICAgICAgICAgICA9IERFRkFVTFRfUFJPWFlMRVNTX1NFVFVQX09QVElPTlM7XG4gICAgICAgIHRoaXMuX3N0b3BwZWQgICAgICAgICAgICAgICAgID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRGcmFtZVRyZWUgICAgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZmFpbGVkUmVxdWVzdElkcyAgICAgICAgPSBbXTtcbiAgICAgICAgdGhpcy5yZXN0b3JpbmdTdG9yYWdlcyAgICAgICAgPSBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldFNwZWNpYWxTZXJ2aWNlUm91dGVzIChicm93c2VySWQ6IHN0cmluZyk6IFNwZWNpYWxTZXJ2aWNlUm91dGVzIHtcbiAgICAgICAgY29uc3QgYnJvd3NlckNvbm5lY3Rpb24gPSBCcm93c2VyQ29ubmVjdGlvbi5nZXRCeUlkKGJyb3dzZXJJZCkgYXMgQnJvd3NlckNvbm5lY3Rpb247XG4gICAgICAgIGNvbnN0IHByb3h5ICAgICAgICAgICAgID0gYnJvd3NlckNvbm5lY3Rpb24uYnJvd3NlckNvbm5lY3Rpb25HYXRld2F5LnByb3h5O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlcnJvclBhZ2UxOiAgICAgICAgICBwcm94eS5yZXNvbHZlUmVsYXRpdmVTZXJ2aWNlVXJsKEVSUk9SX1JPVVRFLCBwcm94eS5zZXJ2ZXIxSW5mby5kb21haW4pLFxuICAgICAgICAgICAgZXJyb3JQYWdlMjogICAgICAgICAgcHJveHkucmVzb2x2ZVJlbGF0aXZlU2VydmljZVVybChFUlJPUl9ST1VURSwgcHJveHkuc2VydmVyMkluZm8uZG9tYWluKSxcbiAgICAgICAgICAgIGlkbGVQYWdlOiAgICAgICAgICAgIGJyb3dzZXJDb25uZWN0aW9uLmlkbGVVcmwsXG4gICAgICAgICAgICBvcGVuRmlsZVByb3RvY29sVXJsOiBicm93c2VyQ29ubmVjdGlvbi5vcGVuRmlsZVByb3RvY29sVXJsLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2hhbmRsZU1vY2tFcnJvcklmTmVjZXNzYXJ5IChwaXBlbGluZUNvbnRleHQ6IFByb3h5bGVzc1BpcGVsaW5lQ29udGV4dCwgZXZlbnQ6IFJlcXVlc3RQYXVzZWRFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXBpcGVsaW5lQ29udGV4dC5tb2NrLmhhc0Vycm9yKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGF3YWl0IHBpcGVsaW5lQ29udGV4dC5oYW5kbGVNb2NrRXJyb3IodGhpcy5yZXF1ZXN0SG9va0V2ZW50UHJvdmlkZXIpO1xuXG4gICAgICAgIHJlcXVlc3RQaXBlbGluZU1vY2tMb2dnZXIoJyVzXFxuJXMnLCBldmVudC5uZXR3b3JrSWQsIHBpcGVsaW5lQ29udGV4dC5tb2NrLmVycm9yKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9oYW5kbGVNb2NrUmVzcG9uc2UgKG1vY2tlZFJlc3BvbnNlOiBJbmNvbWluZ01lc3NhZ2VMaWtlLCBwaXBlbGluZUNvbnRleHQ6IFByb3h5bGVzc1BpcGVsaW5lQ29udGV4dCwgZXZlbnQ6IFJlcXVlc3RQYXVzZWRFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBtb2NrZWRSZXNwb25zZUJvZHlTdHIgPSAobW9ja2VkUmVzcG9uc2UuZ2V0Qm9keSgpIGFzIEJ1ZmZlcikudG9TdHJpbmcoKTtcblxuICAgICAgICBjb25zdCBmdWxmaWxsSW5mbyA9IHtcbiAgICAgICAgICAgIHJlcXVlc3RJZDogICAgICAgZXZlbnQucmVxdWVzdElkLFxuICAgICAgICAgICAgcmVzcG9uc2VDb2RlOiAgICBtb2NrZWRSZXNwb25zZS5zdGF0dXNDb2RlLFxuICAgICAgICAgICAgcmVzcG9uc2VIZWFkZXJzOiBjb252ZXJ0VG9IZWFkZXJFbnRyaWVzKG1vY2tlZFJlc3BvbnNlLmhlYWRlcnMpLFxuICAgICAgICAgICAgYm9keTogICAgICAgICAgICBtb2NrZWRSZXNwb25zZUJvZHlTdHIsXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHBpcGVsaW5lQ29udGV4dC5yZXFPcHRzLmlzQWpheClcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3Jlc291cmNlSW5qZWN0b3IucHJvY2Vzc05vblByb3hpZWRDb250ZW50KGZ1bGZpbGxJbmZvLCB0aGlzLl9jbGllbnQpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9yZXNvdXJjZUluamVjdG9yLnByb2Nlc3NIVE1MUGFnZUNvbnRlbnQoZnVsZmlsbEluZm8sIHsgaXNJZnJhbWU6IGZhbHNlIH0sIHRoaXMuX2NsaWVudCk7XG5cbiAgICAgICAgcmVxdWVzdFBpcGVsaW5lTW9ja0xvZ2dlcihgTW9jayByZXF1ZXN0ICR7ZXZlbnQucmVxdWVzdElkfWApO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NyZWF0ZUNvbnRpbnVlUmVzcG9uc2VSZXF1ZXN0IChldmVudDogUmVxdWVzdFBhdXNlZEV2ZW50LCBtb2RpZmllZDogYm9vbGVhbik6IENvbnRpbnVlUmVzcG9uc2VSZXF1ZXN0IHtcbiAgICAgICAgY29uc3QgY29udGludWVSZXNwb25zZVJlcXVlc3QgPSB7XG4gICAgICAgICAgICByZXF1ZXN0SWQ6IGV2ZW50LnJlcXVlc3RJZCxcbiAgICAgICAgfSBhcyBDb250aW51ZVJlc3BvbnNlUmVxdWVzdDtcblxuICAgICAgICBpZiAobW9kaWZpZWQpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlUmVzcG9uc2VSZXF1ZXN0LnJlc3BvbnNlSGVhZGVycyA9IGV2ZW50LnJlc3BvbnNlSGVhZGVycztcbiAgICAgICAgICAgIGNvbnRpbnVlUmVzcG9uc2VSZXF1ZXN0LnJlc3BvbnNlQ29kZSAgICA9IGV2ZW50LnJlc3BvbnNlU3RhdHVzQ29kZSBhcyBudW1iZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWVSZXNwb25zZVJlcXVlc3Q7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2hvdWxkUmVkaXJlY3RUb0Vycm9yUGFnZSAoZXZlbnQ6IFJlcXVlc3RQYXVzZWRFdmVudCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZXZlbnQucmVzb3VyY2VUeXBlID09PSAnRG9jdW1lbnQnXG4gICAgICAgICAgICAmJiAhdGhpcy5faXNJZnJhbWUoZXZlbnQuZnJhbWVJZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcmVzcG9uZFRvT3RoZXJSZXF1ZXN0IChldmVudDogUmVxdWVzdFBhdXNlZEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChpc1JlZGlyZWN0U3RhdHVzQ29kZShldmVudC5yZXNwb25zZVN0YXR1c0NvZGUpKSB7XG4gICAgICAgICAgICBhd2FpdCBzYWZlQ29udGludWVSZXNwb25zZSh0aGlzLl9jbGllbnQsIHsgcmVxdWVzdElkOiBldmVudC5yZXF1ZXN0SWQgfSk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc291cmNlSW5mbyA9IGF3YWl0IHRoaXMuX3Jlc291cmNlSW5qZWN0b3IuZ2V0RG9jdW1lbnRSZXNvdXJjZUluZm8oZXZlbnQsIHRoaXMuX2NsaWVudCk7XG5cbiAgICAgICAgaWYgKHJlc291cmNlSW5mby5lcnJvcikge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3Nob3VsZFJlZGlyZWN0VG9FcnJvclBhZ2UoZXZlbnQpKVxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX3Jlc291cmNlSW5qZWN0b3IucmVkaXJlY3RUb0Vycm9yUGFnZSh0aGlzLl9jbGllbnQsIHJlc291cmNlSW5mby5lcnJvciwgZXZlbnQucmVxdWVzdC51cmwpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtb2RpZmllZCA9IGF3YWl0IHRoaXMucmVxdWVzdEhvb2tFdmVudFByb3ZpZGVyLm9uUmVzcG9uc2UoZXZlbnQsIHJlc291cmNlSW5mby5ib2R5LCB0aGlzLl9jbGllbnQpO1xuXG4gICAgICAgIGlmIChldmVudC5yZXNvdXJjZVR5cGUgIT09ICdEb2N1bWVudCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRpbnVlUmVzcG9uc2VSZXF1ZXN0ID0gdGhpcy5fY3JlYXRlQ29udGludWVSZXNwb25zZVJlcXVlc3QoZXZlbnQsIG1vZGlmaWVkKTtcblxuICAgICAgICAgICAgYXdhaXQgc2FmZUNvbnRpbnVlUmVzcG9uc2UodGhpcy5fY2xpZW50LCBjb250aW51ZVJlc3BvbnNlUmVxdWVzdCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBmdWxmaWxsSW5mbyA9IHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6ICAgICAgIGV2ZW50LnJlcXVlc3RJZCxcbiAgICAgICAgICAgICAgICByZXNwb25zZUhlYWRlcnM6IGV2ZW50LnJlc3BvbnNlSGVhZGVycyxcbiAgICAgICAgICAgICAgICByZXNwb25zZUNvZGU6ICAgIGV2ZW50LnJlc3BvbnNlU3RhdHVzQ29kZSBhcyBudW1iZXIsXG4gICAgICAgICAgICAgICAgYm9keTogICAgICAgICAgICAocmVzb3VyY2VJbmZvLmJvZHkgYXMgQnVmZmVyKS50b1N0cmluZygpLFxuICAgICAgICAgICAgfSBhcyBGdWxmaWxsUmVxdWVzdFJlcXVlc3Q7XG5cbiAgICAgICAgICAgIC8vIE5PVEU6IFN0cmFuZ2UgYmVoYXZpb3Igb2YgdGhlIENEUCBBUEk6XG4gICAgICAgICAgICAvLyBpZiB3ZSBwYXNzIHRoZSBlbXB0eSBcInJlc3BvbnNlU3RhdHVzVGV4dFwiIHZhbHVlLCB3ZSBnZXQgYW4gZXJyb3IgJ0ludmFsaWQgc3RhdHVzIGNvZGUgb3IgcGhyYXNlJy5cbiAgICAgICAgICAgIGlmIChldmVudC5yZXNwb25zZVN0YXR1c1RleHQgIT09ICcnKVxuICAgICAgICAgICAgICAgIGZ1bGZpbGxJbmZvLnJlc3BvbnNlUGhyYXNlID0gZXZlbnQucmVzcG9uc2VTdGF0dXNUZXh0O1xuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9yZXNvdXJjZUluamVjdG9yLnByb2Nlc3NIVE1MUGFnZUNvbnRlbnQoXG4gICAgICAgICAgICAgICAgZnVsZmlsbEluZm8sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpc0lmcmFtZTogICAgICAgICAgdGhpcy5faXNJZnJhbWUoZXZlbnQuZnJhbWVJZCksXG4gICAgICAgICAgICAgICAgICAgIHVybDogICAgICAgICAgICAgICBldmVudC5yZXF1ZXN0LnVybCxcbiAgICAgICAgICAgICAgICAgICAgcmVzdG9yaW5nU3RvcmFnZXM6IHRoaXMucmVzdG9yaW5nU3RvcmFnZXMsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0aGlzLl9jbGllbnQpO1xuXG4gICAgICAgICAgICB0aGlzLnJlc3RvcmluZ1N0b3JhZ2VzID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2hhbmRsZU90aGVyUmVxdWVzdHMgKGV2ZW50OiBSZXF1ZXN0UGF1c2VkRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmVxdWVzdFBpcGVsaW5lT3RoZXJSZXF1ZXN0TG9nZ2VyKCclcicsIGV2ZW50KTtcblxuICAgICAgICBpZiAoaXNSZXF1ZXN0KGV2ZW50KSB8fCBpc1JlZGlyZWN0U3RhdHVzQ29kZShldmVudC5yZXNwb25zZVN0YXR1c0NvZGUpKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlcXVlc3RIb29rRXZlbnRQcm92aWRlci5vblJlcXVlc3QoZXZlbnQpO1xuXG4gICAgICAgICAgICBjb25zdCBwaXBlbGluZUNvbnRleHQgPSB0aGlzLnJlcXVlc3RIb29rRXZlbnRQcm92aWRlci5nZXRQaXBlbGluZUNvbnRleHQoZXZlbnQubmV0d29ya0lkIGFzIHN0cmluZyk7XG5cbiAgICAgICAgICAgIGlmICghcGlwZWxpbmVDb250ZXh0IHx8ICFwaXBlbGluZUNvbnRleHQubW9jaylcbiAgICAgICAgICAgICAgICBhd2FpdCBzYWZlQ29udGludWVSZXF1ZXN0KHRoaXMuX2NsaWVudCwgZXZlbnQpO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbW9ja2VkUmVzcG9uc2UgPSBhd2FpdCBwaXBlbGluZUNvbnRleHQuZ2V0TW9ja1Jlc3BvbnNlKCk7XG5cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9oYW5kbGVNb2NrRXJyb3JJZk5lY2Vzc2FyeShwaXBlbGluZUNvbnRleHQsIGV2ZW50KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG1vY2tlZFJlc3BvbnNlRXZlbnQgPSBjcmVhdGVSZXF1ZXN0UGF1c2VkRXZlbnRGb3JSZXNwb25zZShtb2NrZWRSZXNwb25zZSwgZXZlbnQpO1xuXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZXF1ZXN0SG9va0V2ZW50UHJvdmlkZXIub25SZXNwb25zZShtb2NrZWRSZXNwb25zZUV2ZW50LCBtb2NrZWRSZXNwb25zZS5nZXRCb2R5KCksIHRoaXMuX2NsaWVudCk7XG5cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9oYW5kbGVNb2NrUmVzcG9uc2UobW9ja2VkUmVzcG9uc2UsIHBpcGVsaW5lQ29udGV4dCwgZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9yZXNwb25kVG9PdGhlclJlcXVlc3QoZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5uZXR3b3JrSWQgJiYgdGhpcy5fZmFpbGVkUmVxdWVzdElkcy5pbmNsdWRlcyhldmVudC5uZXR3b3JrSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZSh0aGlzLl9mYWlsZWRSZXF1ZXN0SWRzLCBldmVudC5uZXR3b3JrSWQpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF90b3BGcmFtZU5hdmlnYXRpb24gKGV2ZW50OiBGcmFtZU5hdmlnYXRlZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBldmVudC50eXBlID09PSAnTmF2aWdhdGlvbidcbiAgICAgICAgICAgICYmICFldmVudC5mcmFtZS5wYXJlbnRJZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF91cGRhdGVDdXJyZW50RnJhbWVUcmVlICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gTk9URTogRHVlIHRvIENEUCByZXN0cmljdGlvbnMgKGl0IGhhbmdzKSwgd2UgY2FuJ3QgZ2V0IHRoZSBmcmFtZSB0cmVlXG4gICAgICAgIC8vIHJpZ2h0IGJlZm9yZSBpbmplY3Rpbmcgc2VydmljZSBzY3JpcHRzLlxuICAgICAgICAvLyBTbywgd2UgYXJlIGZvcmNlZCB0cmFja2luZyBmcmFtZXMgdHJlZS5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5fY2xpZW50LlBhZ2UuZ2V0RnJhbWVUcmVlKCk7XG5cbiAgICAgICAgdGhpcy5fY3VycmVudEZyYW1lVHJlZSA9IHJlc3VsdC5mcmFtZVRyZWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaXNJZnJhbWUgKGZyYW1lSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuX2N1cnJlbnRGcmFtZVRyZWUpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRGcmFtZVRyZWUuZnJhbWUuaWQgIT09IGZyYW1lSWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGluaXQgKG9wdGlvbnM6IFByb3h5bGVzc1NldHVwT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcblxuICAgICAgICB0aGlzLl9jbGllbnQuRmV0Y2gub24oJ3JlcXVlc3RQYXVzZWQnLCBhc3luYyAoZXZlbnQ6IFJlcXVlc3RQYXVzZWRFdmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3N0b3BwZWQpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCBzcGVjaWFsUmVxdWVzdEhhbmRsZXIgPSBnZXRTcGVjaWFsUmVxdWVzdEhhbmRsZXIoZXZlbnQsIHRoaXMuX29wdGlvbnMsIHRoaXMuX3NwZWNpYWxTZXJ2aWNlUm91dGVzKTtcblxuICAgICAgICAgICAgaWYgKHNwZWNpYWxSZXF1ZXN0SGFuZGxlcilcbiAgICAgICAgICAgICAgICBhd2FpdCBzcGVjaWFsUmVxdWVzdEhhbmRsZXIoZXZlbnQsIHRoaXMuX2NsaWVudCwgdGhpcy5fb3B0aW9ucyk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5faGFuZGxlT3RoZXJSZXF1ZXN0cyhldmVudCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2NsaWVudC5QYWdlLm9uKCdmcmFtZU5hdmlnYXRlZCcsIGFzeW5jIChldmVudDogRnJhbWVOYXZpZ2F0ZWRFdmVudCkgPT4ge1xuICAgICAgICAgICAgcmVxdWVzdFBpcGVsaW5lTG9nZ2VyKCclZicsIGV2ZW50KTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl90b3BGcmFtZU5hdmlnYXRpb24oZXZlbnQpXG4gICAgICAgICAgICAgICAgfHwgZXZlbnQuZnJhbWUudXJsICE9PSBTUEVDSUFMX0JMQU5LX1BBR0UpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9yZXNvdXJjZUluamVjdG9yLnByb2Nlc3NBYm91dEJsYW5rUGFnZShldmVudCwgdGhpcy5fY2xpZW50KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fY2xpZW50LlBhZ2Uub24oJ2ZyYW1lU3RhcnRlZExvYWRpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl91cGRhdGVDdXJyZW50RnJhbWVUcmVlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2NsaWVudC5OZXR3b3JrLm9uKCdsb2FkaW5nRmFpbGVkJywgYXN5bmMgKGV2ZW50OiBMb2FkaW5nRmFpbGVkRXZlbnQpID0+IHtcbiAgICAgICAgICAgIHJlcXVlc3RQaXBlbGluZUxvZ2dlcignJWwnLCBldmVudCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2ZhaWxlZFJlcXVlc3RJZHMucHVzaChldmVudC5yZXF1ZXN0SWQpO1xuXG4gICAgICAgICAgICBpZiAoZXZlbnQucmVxdWVzdElkKVxuICAgICAgICAgICAgICAgIHRoaXMucmVxdWVzdEhvb2tFdmVudFByb3ZpZGVyLmNsZWFuVXAoZXZlbnQucmVxdWVzdElkKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5fY2xpZW50LlBhZ2Uuc2V0QnlwYXNzQ1NQKHsgZW5hYmxlZDogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RvcCAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N0b3BwZWQgPSB0cnVlO1xuICAgIH1cbn1cbiJdfQ==
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJveHlsZXNzL3JlcXVlc3QtcGlwZWxpbmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBZ0M7QUFTaEMscUZBQWdGO0FBQ2hGLDZFQUFvRDtBQUNwRCw4Q0FBMEQ7QUFDMUQsc0NBQThFO0FBQzlFLDBFQUF5RDtBQUN6RCxpRUFBeUM7QUFFekMsNkRBSW1DO0FBRW5DLDZEQUs2QjtBQUk3QixxRkFBdUU7QUFDdkUsMEVBQTBEO0FBQzFELHlDQUF1RTtBQUN2RSwyREFBMkM7QUFHM0MsTUFBcUIsd0JBQXlCLFNBQVEsa0JBQWdCO0lBV2xFLFlBQW9CLFNBQWlCLEVBQUUsTUFBbUI7UUFDdEQsS0FBSyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV6QixJQUFJLENBQUMscUJBQXFCLEdBQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLHdCQUFpQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxpQkFBaUIsR0FBVSxJQUFJLDJCQUFnQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM1RixJQUFJLENBQUMsUUFBUSxHQUFtQiwrQkFBK0IsQ0FBQztRQUNoRSxJQUFJLENBQUMsUUFBUSxHQUFtQixLQUFLLENBQUM7UUFDdEMsSUFBSSxDQUFDLGlCQUFpQixHQUFVLElBQUksQ0FBQztRQUNyQyxJQUFJLENBQUMsaUJBQWlCLEdBQVUsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxpQkFBaUIsR0FBVSxJQUFJLENBQUM7UUFDckMsSUFBSSxDQUFDLGNBQWMsR0FBYSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVPLHdCQUF3QixDQUFFLFNBQWlCO1FBQy9DLE1BQU0saUJBQWlCLEdBQUcsb0JB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Q0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxlQUFlLEVBQUUsS0FBSyxFQUFFLEtBQXlCLEVBQUUsRUFBRTtZQUN6RSxJQUFBLHFDQUFxQixFQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUVuQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUU3QyxJQUFJLEtBQUssQ0FBQyxTQUFTO2dCQUNmLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU0sSUFBSTtRQUNQLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLENBQUM7Q0FDSjtBQTNPRCwyQ0EyT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW1vdmUgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUHJvdG9jb2xBcGkgfSBmcm9tICdjaHJvbWUtcmVtb3RlLWludGVyZmFjZSc7XG5pbXBvcnQgUHJvdG9jb2wgZnJvbSAnZGV2dG9vbHMtcHJvdG9jb2wnO1xuaW1wb3J0IFJlcXVlc3RQYXVzZWRFdmVudCA9IFByb3RvY29sLkZldGNoLlJlcXVlc3RQYXVzZWRFdmVudDtcbmltcG9ydCBGcmFtZU5hdmlnYXRlZEV2ZW50ID0gUHJvdG9jb2wuUGFnZS5GcmFtZU5hdmlnYXRlZEV2ZW50O1xuaW1wb3J0IExvYWRpbmdGYWlsZWRFdmVudCA9IFByb3RvY29sLk5ldHdvcmsuTG9hZGluZ0ZhaWxlZEV2ZW50O1xuaW1wb3J0IENvbnRpbnVlUmVzcG9uc2VSZXF1ZXN0ID0gUHJvdG9jb2wuRmV0Y2guQ29udGludWVSZXNwb25zZVJlcXVlc3Q7XG5pbXBvcnQgRnJhbWVUcmVlID0gUHJvdG9jb2wuUGFnZS5GcmFtZVRyZWU7XG5pbXBvcnQgRnVsZmlsbFJlcXVlc3RSZXF1ZXN0ID0gUHJvdG9jb2wuRmV0Y2guRnVsZmlsbFJlcXVlc3RSZXF1ZXN0O1xuaW1wb3J0IFByb3h5bGVzc1JlcXVlc3RIb29rRXZlbnRQcm92aWRlciBmcm9tICcuLi9yZXF1ZXN0LWhvb2tzL2V2ZW50LXByb3ZpZGVyJztcbmltcG9ydCBSZXNvdXJjZUluamVjdG9yIGZyb20gJy4uL3Jlc291cmNlLWluamVjdG9yJztcbmltcG9ydCB7IGNvbnZlcnRUb0hlYWRlckVudHJpZXMgfSBmcm9tICcuLi91dGlscy9oZWFkZXJzJztcbmltcG9ydCB7IGNyZWF0ZVJlcXVlc3RQYXVzZWRFdmVudEZvclJlc3BvbnNlLCBpc1JlcXVlc3QgfSBmcm9tICcuLi91dGlscy9jZHAnO1xuaW1wb3J0IEJyb3dzZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL2Jyb3dzZXIvY29ubmVjdGlvbic7XG5pbXBvcnQgRVJST1JfUk9VVEUgZnJvbSAnLi4vZXJyb3Itcm91dGUnO1xuaW1wb3J0IHsgU3BlY2lhbFNlcnZpY2VSb3V0ZXMgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge1xuICAgIHJlcXVlc3RQaXBlbGluZUxvZ2dlcixcbiAgICByZXF1ZXN0UGlwZWxpbmVNb2NrTG9nZ2VyLFxuICAgIHJlcXVlc3RQaXBlbGluZU90aGVyUmVxdWVzdExvZ2dlcixcbn0gZnJvbSAnLi4vLi4vdXRpbHMvZGVidWctbG9nZ2Vycyc7XG5cbmltcG9ydCB7XG4gICAgSW5jb21pbmdNZXNzYWdlTGlrZSxcbiAgICBpc1JlZGlyZWN0U3RhdHVzQ29kZSxcbiAgICBTUEVDSUFMX0JMQU5LX1BBR0UsXG4gICAgU3RvcmFnZXNTbmFwc2hvdCxcbn0gZnJvbSAndGVzdGNhZmUtaGFtbWVyaGVhZCc7XG5cbmltcG9ydCBQcm94eWxlc3NQaXBlbGluZUNvbnRleHQgZnJvbSAnLi4vcmVxdWVzdC1ob29rcy9waXBlbGluZS1jb250ZXh0JztcbmltcG9ydCB7IFByb3h5bGVzc1NldHVwT3B0aW9ucyB9IGZyb20gJy4uLy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQgREVGQVVMVF9QUk9YWUxFU1NfU0VUVVBfT1BUSU9OUyBmcm9tICcuLi9kZWZhdWx0LXNldHVwLW9wdGlvbnMnO1xuaW1wb3J0IGdldFNwZWNpYWxSZXF1ZXN0SGFuZGxlciBmcm9tICcuL3NwZWNpYWwtaGFuZGxlcnMnO1xuaW1wb3J0IHsgc2FmZUNvbnRpbnVlUmVxdWVzdCwgc2FmZUNvbnRpbnVlUmVzcG9uc2UgfSBmcm9tICcuL3NhZmUtYXBpJztcbmltcG9ydCBQcm94eWxlc3NBcGlCYXNlIGZyb20gJy4uL2FwaS1iYXNlJztcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcm94eWxlc3NSZXF1ZXN0UGlwZWxpbmUgZXh0ZW5kcyBQcm94eWxlc3NBcGlCYXNlIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVxdWVzdEhvb2tFdmVudFByb3ZpZGVyOiBQcm94eWxlc3NSZXF1ZXN0SG9va0V2ZW50UHJvdmlkZXI7XG4gICAgcHVibGljIHJlc3RvcmluZ1N0b3JhZ2VzOiBTdG9yYWdlc1NuYXBzaG90IHwgbnVsbDtcbiAgICBwdWJsaWMgY29udGV4dFN0b3JhZ2U6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9yZXNvdXJjZUluamVjdG9yOiBSZXNvdXJjZUluamVjdG9yO1xuICAgIHByaXZhdGUgX29wdGlvbnM6IFByb3h5bGVzc1NldHVwT3B0aW9ucztcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9zcGVjaWFsU2VydmljZVJvdXRlczogU3BlY2lhbFNlcnZpY2VSb3V0ZXM7XG4gICAgcHJpdmF0ZSBfc3RvcHBlZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9jdXJyZW50RnJhbWVUcmVlOiBGcmFtZVRyZWUgfCBudWxsO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2ZhaWxlZFJlcXVlc3RJZHM6IHN0cmluZ1tdO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChicm93c2VySWQ6IHN0cmluZywgY2xpZW50OiBQcm90b2NvbEFwaSkge1xuICAgICAgICBzdXBlcihicm93c2VySWQsIGNsaWVudCk7XG5cbiAgICAgICAgdGhpcy5fc3BlY2lhbFNlcnZpY2VSb3V0ZXMgICAgPSB0aGlzLl9nZXRTcGVjaWFsU2VydmljZVJvdXRlcyhicm93c2VySWQpO1xuICAgICAgICB0aGlzLnJlcXVlc3RIb29rRXZlbnRQcm92aWRlciA9IG5ldyBQcm94eWxlc3NSZXF1ZXN0SG9va0V2ZW50UHJvdmlkZXIoYnJvd3NlcklkKTtcbiAgICAgICAgdGhpcy5fcmVzb3VyY2VJbmplY3RvciAgICAgICAgPSBuZXcgUmVzb3VyY2VJbmplY3Rvcihicm93c2VySWQsIHRoaXMuX3NwZWNpYWxTZXJ2aWNlUm91dGVzKTtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyAgICAgICAgICAgICAgICAgPSBERUZBVUxUX1BST1hZTEVTU19TRVRVUF9PUFRJT05TO1xuICAgICAgICB0aGlzLl9zdG9wcGVkICAgICAgICAgICAgICAgICA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jdXJyZW50RnJhbWVUcmVlICAgICAgICA9IG51bGw7XG4gICAgICAgIHRoaXMuX2ZhaWxlZFJlcXVlc3RJZHMgICAgICAgID0gW107XG4gICAgICAgIHRoaXMucmVzdG9yaW5nU3RvcmFnZXMgICAgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5jb250ZXh0U3RvcmFnZSAgICAgICAgICAgPSAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRTcGVjaWFsU2VydmljZVJvdXRlcyAoYnJvd3NlcklkOiBzdHJpbmcpOiBTcGVjaWFsU2VydmljZVJvdXRlcyB7XG4gICAgICAgIGNvbnN0IGJyb3dzZXJDb25uZWN0aW9uID0gQnJvd3NlckNvbm5lY3Rpb24uZ2V0QnlJZChicm93c2VySWQpIGFzIEJyb3dzZXJDb25uZWN0aW9uO1xuICAgICAgICBjb25zdCBwcm94eSAgICAgICAgICAgICA9IGJyb3dzZXJDb25uZWN0aW9uLmJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5wcm94eTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZXJyb3JQYWdlMTogICAgICAgICAgcHJveHkucmVzb2x2ZVJlbGF0aXZlU2VydmljZVVybChFUlJPUl9ST1VURSwgcHJveHkuc2VydmVyMUluZm8uZG9tYWluKSxcbiAgICAgICAgICAgIGVycm9yUGFnZTI6ICAgICAgICAgIHByb3h5LnJlc29sdmVSZWxhdGl2ZVNlcnZpY2VVcmwoRVJST1JfUk9VVEUsIHByb3h5LnNlcnZlcjJJbmZvLmRvbWFpbiksXG4gICAgICAgICAgICBpZGxlUGFnZTogICAgICAgICAgICBicm93c2VyQ29ubmVjdGlvbi5pZGxlVXJsLFxuICAgICAgICAgICAgb3BlbkZpbGVQcm90b2NvbFVybDogYnJvd3NlckNvbm5lY3Rpb24ub3BlbkZpbGVQcm90b2NvbFVybCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9oYW5kbGVNb2NrRXJyb3JJZk5lY2Vzc2FyeSAocGlwZWxpbmVDb250ZXh0OiBQcm94eWxlc3NQaXBlbGluZUNvbnRleHQsIGV2ZW50OiBSZXF1ZXN0UGF1c2VkRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCFwaXBlbGluZUNvbnRleHQubW9jay5oYXNFcnJvcilcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBhd2FpdCBwaXBlbGluZUNvbnRleHQuaGFuZGxlTW9ja0Vycm9yKHRoaXMucmVxdWVzdEhvb2tFdmVudFByb3ZpZGVyKTtcblxuICAgICAgICByZXF1ZXN0UGlwZWxpbmVNb2NrTG9nZ2VyKCclc1xcbiVzJywgZXZlbnQubmV0d29ya0lkLCBwaXBlbGluZUNvbnRleHQubW9jay5lcnJvcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfaGFuZGxlTW9ja1Jlc3BvbnNlIChtb2NrZWRSZXNwb25zZTogSW5jb21pbmdNZXNzYWdlTGlrZSwgcGlwZWxpbmVDb250ZXh0OiBQcm94eWxlc3NQaXBlbGluZUNvbnRleHQsIGV2ZW50OiBSZXF1ZXN0UGF1c2VkRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgbW9ja2VkUmVzcG9uc2VCb2R5U3RyID0gKG1vY2tlZFJlc3BvbnNlLmdldEJvZHkoKSBhcyBCdWZmZXIpLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgY29uc3QgZnVsZmlsbEluZm8gPSB7XG4gICAgICAgICAgICByZXF1ZXN0SWQ6ICAgICAgIGV2ZW50LnJlcXVlc3RJZCxcbiAgICAgICAgICAgIHJlc3BvbnNlQ29kZTogICAgbW9ja2VkUmVzcG9uc2Uuc3RhdHVzQ29kZSxcbiAgICAgICAgICAgIHJlc3BvbnNlSGVhZGVyczogY29udmVydFRvSGVhZGVyRW50cmllcyhtb2NrZWRSZXNwb25zZS5oZWFkZXJzKSxcbiAgICAgICAgICAgIGJvZHk6ICAgICAgICAgICAgbW9ja2VkUmVzcG9uc2VCb2R5U3RyLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChwaXBlbGluZUNvbnRleHQucmVxT3B0cy5pc0FqYXgpXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9yZXNvdXJjZUluamVjdG9yLnByb2Nlc3NOb25Qcm94aWVkQ29udGVudChmdWxmaWxsSW5mbywgdGhpcy5fY2xpZW50KTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fcmVzb3VyY2VJbmplY3Rvci5wcm9jZXNzSFRNTFBhZ2VDb250ZW50KGZ1bGZpbGxJbmZvLCB7IGlzSWZyYW1lOiBmYWxzZSB9LCB0aGlzLl9jbGllbnQpO1xuXG4gICAgICAgIHJlcXVlc3RQaXBlbGluZU1vY2tMb2dnZXIoYE1vY2sgcmVxdWVzdCAke2V2ZW50LnJlcXVlc3RJZH1gKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jcmVhdGVDb250aW51ZVJlc3BvbnNlUmVxdWVzdCAoZXZlbnQ6IFJlcXVlc3RQYXVzZWRFdmVudCwgbW9kaWZpZWQ6IGJvb2xlYW4pOiBDb250aW51ZVJlc3BvbnNlUmVxdWVzdCB7XG4gICAgICAgIGNvbnN0IGNvbnRpbnVlUmVzcG9uc2VSZXF1ZXN0ID0ge1xuICAgICAgICAgICAgcmVxdWVzdElkOiBldmVudC5yZXF1ZXN0SWQsXG4gICAgICAgIH0gYXMgQ29udGludWVSZXNwb25zZVJlcXVlc3Q7XG5cbiAgICAgICAgaWYgKG1vZGlmaWVkKSB7XG4gICAgICAgICAgICBjb250aW51ZVJlc3BvbnNlUmVxdWVzdC5yZXNwb25zZUhlYWRlcnMgPSBldmVudC5yZXNwb25zZUhlYWRlcnM7XG4gICAgICAgICAgICBjb250aW51ZVJlc3BvbnNlUmVxdWVzdC5yZXNwb25zZUNvZGUgICAgPSBldmVudC5yZXNwb25zZVN0YXR1c0NvZGUgYXMgbnVtYmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVlUmVzcG9uc2VSZXF1ZXN0O1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Nob3VsZFJlZGlyZWN0VG9FcnJvclBhZ2UgKGV2ZW50OiBSZXF1ZXN0UGF1c2VkRXZlbnQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGV2ZW50LnJlc291cmNlVHlwZSA9PT0gJ0RvY3VtZW50J1xuICAgICAgICAgICAgJiYgIXRoaXMuX2lzSWZyYW1lKGV2ZW50LmZyYW1lSWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3Jlc3BvbmRUb090aGVyUmVxdWVzdCAoZXZlbnQ6IFJlcXVlc3RQYXVzZWRFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoaXNSZWRpcmVjdFN0YXR1c0NvZGUoZXZlbnQucmVzcG9uc2VTdGF0dXNDb2RlKSkge1xuICAgICAgICAgICAgYXdhaXQgc2FmZUNvbnRpbnVlUmVzcG9uc2UodGhpcy5fY2xpZW50LCB7IHJlcXVlc3RJZDogZXZlbnQucmVxdWVzdElkIH0pO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXNvdXJjZUluZm8gPSBhd2FpdCB0aGlzLl9yZXNvdXJjZUluamVjdG9yLmdldERvY3VtZW50UmVzb3VyY2VJbmZvKGV2ZW50LCB0aGlzLl9jbGllbnQpO1xuXG4gICAgICAgIGlmIChyZXNvdXJjZUluZm8uZXJyb3IpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zaG91bGRSZWRpcmVjdFRvRXJyb3JQYWdlKGV2ZW50KSlcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9yZXNvdXJjZUluamVjdG9yLnJlZGlyZWN0VG9FcnJvclBhZ2UodGhpcy5fY2xpZW50LCByZXNvdXJjZUluZm8uZXJyb3IsIGV2ZW50LnJlcXVlc3QudXJsKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbW9kaWZpZWQgPSBhd2FpdCB0aGlzLnJlcXVlc3RIb29rRXZlbnRQcm92aWRlci5vblJlc3BvbnNlKGV2ZW50LCByZXNvdXJjZUluZm8uYm9keSwgdGhpcy5fY2xpZW50KTtcblxuICAgICAgICBpZiAoZXZlbnQucmVzb3VyY2VUeXBlICE9PSAnRG9jdW1lbnQnKSB7XG4gICAgICAgICAgICBjb25zdCBjb250aW51ZVJlc3BvbnNlUmVxdWVzdCA9IHRoaXMuX2NyZWF0ZUNvbnRpbnVlUmVzcG9uc2VSZXF1ZXN0KGV2ZW50LCBtb2RpZmllZCk7XG5cbiAgICAgICAgICAgIGF3YWl0IHNhZmVDb250aW51ZVJlc3BvbnNlKHRoaXMuX2NsaWVudCwgY29udGludWVSZXNwb25zZVJlcXVlc3QpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZnVsZmlsbEluZm8gPSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdElkOiAgICAgICBldmVudC5yZXF1ZXN0SWQsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VIZWFkZXJzOiBldmVudC5yZXNwb25zZUhlYWRlcnMsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VDb2RlOiAgICBldmVudC5yZXNwb25zZVN0YXR1c0NvZGUgYXMgbnVtYmVyLFxuICAgICAgICAgICAgICAgIGJvZHk6ICAgICAgICAgICAgKHJlc291cmNlSW5mby5ib2R5IGFzIEJ1ZmZlcikudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIH0gYXMgRnVsZmlsbFJlcXVlc3RSZXF1ZXN0O1xuXG4gICAgICAgICAgICAvLyBOT1RFOiBTdHJhbmdlIGJlaGF2aW9yIG9mIHRoZSBDRFAgQVBJOlxuICAgICAgICAgICAgLy8gaWYgd2UgcGFzcyB0aGUgZW1wdHkgXCJyZXNwb25zZVN0YXR1c1RleHRcIiB2YWx1ZSwgd2UgZ2V0IGFuIGVycm9yICdJbnZhbGlkIHN0YXR1cyBjb2RlIG9yIHBocmFzZScuXG4gICAgICAgICAgICBpZiAoZXZlbnQucmVzcG9uc2VTdGF0dXNUZXh0ICE9PSAnJylcbiAgICAgICAgICAgICAgICBmdWxmaWxsSW5mby5yZXNwb25zZVBocmFzZSA9IGV2ZW50LnJlc3BvbnNlU3RhdHVzVGV4dDtcblxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fcmVzb3VyY2VJbmplY3Rvci5wcm9jZXNzSFRNTFBhZ2VDb250ZW50KFxuICAgICAgICAgICAgICAgIGZ1bGZpbGxJbmZvLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaXNJZnJhbWU6ICAgICAgICAgIHRoaXMuX2lzSWZyYW1lKGV2ZW50LmZyYW1lSWQpLFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICAgICAgICAgICAgICAgZXZlbnQucmVxdWVzdC51cmwsXG4gICAgICAgICAgICAgICAgICAgIHJlc3RvcmluZ1N0b3JhZ2VzOiB0aGlzLnJlc3RvcmluZ1N0b3JhZ2VzLFxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0U3RvcmFnZTogICAgdGhpcy5jb250ZXh0U3RvcmFnZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHRoaXMuX2NsaWVudCk7XG5cbiAgICAgICAgICAgIHRoaXMucmVzdG9yaW5nU3RvcmFnZXMgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfaGFuZGxlT3RoZXJSZXF1ZXN0cyAoZXZlbnQ6IFJlcXVlc3RQYXVzZWRFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXF1ZXN0UGlwZWxpbmVPdGhlclJlcXVlc3RMb2dnZXIoJyVyJywgZXZlbnQpO1xuXG4gICAgICAgIGlmIChpc1JlcXVlc3QoZXZlbnQpIHx8IGlzUmVkaXJlY3RTdGF0dXNDb2RlKGV2ZW50LnJlc3BvbnNlU3RhdHVzQ29kZSkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVxdWVzdEhvb2tFdmVudFByb3ZpZGVyLm9uUmVxdWVzdChldmVudCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHBpcGVsaW5lQ29udGV4dCA9IHRoaXMucmVxdWVzdEhvb2tFdmVudFByb3ZpZGVyLmdldFBpcGVsaW5lQ29udGV4dChldmVudC5uZXR3b3JrSWQgYXMgc3RyaW5nKTtcblxuICAgICAgICAgICAgaWYgKCFwaXBlbGluZUNvbnRleHQgfHwgIXBpcGVsaW5lQ29udGV4dC5tb2NrKVxuICAgICAgICAgICAgICAgIGF3YWl0IHNhZmVDb250aW51ZVJlcXVlc3QodGhpcy5fY2xpZW50LCBldmVudCk7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtb2NrZWRSZXNwb25zZSA9IGF3YWl0IHBpcGVsaW5lQ29udGV4dC5nZXRNb2NrUmVzcG9uc2UoKTtcblxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX2hhbmRsZU1vY2tFcnJvcklmTmVjZXNzYXJ5KHBpcGVsaW5lQ29udGV4dCwgZXZlbnQpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgbW9ja2VkUmVzcG9uc2VFdmVudCA9IGNyZWF0ZVJlcXVlc3RQYXVzZWRFdmVudEZvclJlc3BvbnNlKG1vY2tlZFJlc3BvbnNlLCBldmVudCk7XG5cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlcXVlc3RIb29rRXZlbnRQcm92aWRlci5vblJlc3BvbnNlKG1vY2tlZFJlc3BvbnNlRXZlbnQsIG1vY2tlZFJlc3BvbnNlLmdldEJvZHkoKSwgdGhpcy5fY2xpZW50KTtcblxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX2hhbmRsZU1vY2tSZXNwb25zZShtb2NrZWRSZXNwb25zZSwgcGlwZWxpbmVDb250ZXh0LCBldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX3Jlc3BvbmRUb090aGVyUmVxdWVzdChldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50Lm5ldHdvcmtJZCAmJiB0aGlzLl9mYWlsZWRSZXF1ZXN0SWRzLmluY2x1ZGVzKGV2ZW50Lm5ldHdvcmtJZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKHRoaXMuX2ZhaWxlZFJlcXVlc3RJZHMsIGV2ZW50Lm5ldHdvcmtJZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3RvcEZyYW1lTmF2aWdhdGlvbiAoZXZlbnQ6IEZyYW1lTmF2aWdhdGVkRXZlbnQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGV2ZW50LnR5cGUgPT09ICdOYXZpZ2F0aW9uJ1xuICAgICAgICAgICAgJiYgIWV2ZW50LmZyYW1lLnBhcmVudElkO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3VwZGF0ZUN1cnJlbnRGcmFtZVRyZWUgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAvLyBOT1RFOiBEdWUgdG8gQ0RQIHJlc3RyaWN0aW9ucyAoaXQgaGFuZ3MpLCB3ZSBjYW4ndCBnZXQgdGhlIGZyYW1lIHRyZWVcbiAgICAgICAgLy8gcmlnaHQgYmVmb3JlIGluamVjdGluZyBzZXJ2aWNlIHNjcmlwdHMuXG4gICAgICAgIC8vIFNvLCB3ZSBhcmUgZm9yY2VkIHRyYWNraW5nIGZyYW1lcyB0cmVlLlxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLl9jbGllbnQuUGFnZS5nZXRGcmFtZVRyZWUoKTtcblxuICAgICAgICB0aGlzLl9jdXJyZW50RnJhbWVUcmVlID0gcmVzdWx0LmZyYW1lVHJlZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pc0lmcmFtZSAoZnJhbWVJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5fY3VycmVudEZyYW1lVHJlZSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudEZyYW1lVHJlZS5mcmFtZS5pZCAhPT0gZnJhbWVJZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW5pdCAob3B0aW9ucz86IFByb3h5bGVzc1NldHVwT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucyBhcyBQcm94eWxlc3NTZXR1cE9wdGlvbnM7XG5cbiAgICAgICAgdGhpcy5fY2xpZW50LkZldGNoLm9uKCdyZXF1ZXN0UGF1c2VkJywgYXN5bmMgKGV2ZW50OiBSZXF1ZXN0UGF1c2VkRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zdG9wcGVkKVxuICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3Qgc3BlY2lhbFJlcXVlc3RIYW5kbGVyID0gZ2V0U3BlY2lhbFJlcXVlc3RIYW5kbGVyKGV2ZW50LCB0aGlzLl9vcHRpb25zLCB0aGlzLl9zcGVjaWFsU2VydmljZVJvdXRlcyk7XG5cbiAgICAgICAgICAgIGlmIChzcGVjaWFsUmVxdWVzdEhhbmRsZXIpXG4gICAgICAgICAgICAgICAgYXdhaXQgc3BlY2lhbFJlcXVlc3RIYW5kbGVyKGV2ZW50LCB0aGlzLl9jbGllbnQsIHRoaXMuX29wdGlvbnMpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX2hhbmRsZU90aGVyUmVxdWVzdHMoZXZlbnQpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jbGllbnQuUGFnZS5vbignZnJhbWVOYXZpZ2F0ZWQnLCBhc3luYyAoZXZlbnQ6IEZyYW1lTmF2aWdhdGVkRXZlbnQpID0+IHtcbiAgICAgICAgICAgIHJlcXVlc3RQaXBlbGluZUxvZ2dlcignJWYnLCBldmVudCk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fdG9wRnJhbWVOYXZpZ2F0aW9uKGV2ZW50KVxuICAgICAgICAgICAgICAgIHx8IGV2ZW50LmZyYW1lLnVybCAhPT0gU1BFQ0lBTF9CTEFOS19QQUdFKVxuICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fcmVzb3VyY2VJbmplY3Rvci5wcm9jZXNzQWJvdXRCbGFua1BhZ2UoZXZlbnQsIHRoaXMuX2NsaWVudCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2NsaWVudC5QYWdlLm9uKCdmcmFtZVN0YXJ0ZWRMb2FkaW5nJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fdXBkYXRlQ3VycmVudEZyYW1lVHJlZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jbGllbnQuTmV0d29yay5vbignbG9hZGluZ0ZhaWxlZCcsIGFzeW5jIChldmVudDogTG9hZGluZ0ZhaWxlZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICByZXF1ZXN0UGlwZWxpbmVMb2dnZXIoJyVsJywgZXZlbnQpO1xuXG4gICAgICAgICAgICB0aGlzLl9mYWlsZWRSZXF1ZXN0SWRzLnB1c2goZXZlbnQucmVxdWVzdElkKTtcblxuICAgICAgICAgICAgaWYgKGV2ZW50LnJlcXVlc3RJZClcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVlc3RIb29rRXZlbnRQcm92aWRlci5jbGVhblVwKGV2ZW50LnJlcXVlc3RJZCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX2NsaWVudC5QYWdlLnNldEJ5cGFzc0NTUCh7IGVuYWJsZWQ6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0b3AgKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdG9wcGVkID0gdHJ1ZTtcbiAgICB9XG59XG4iXX0=
|